Skip to content

Commit 77d966b

Browse files
authored
Start to use CSS logical properties for docs pages. (#954)
This transition to logical properties and values (as opposed to physical/dimensional ones) will allow for UI elements and associated spacing to better accomodate languages with a right-to-left writing direction. Although DocC doesn't yet support right-to-left localized content, this change will better future-proof the renderer if it does, allowing it to do things like flip the orientation of the sidebar and strings of text for languages that read from right to left instead of left to right. https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_logical_properties_and_values Resolves: rdar://138952234
1 parent 772e525 commit 77d966b

40 files changed

+173
-88
lines changed

src/components/AdjustableSidebarWidth.vue

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -461,11 +461,10 @@ export default {
461461
position: fixed;
462462
top: var(--top-offset-mobile);
463463
bottom: 0;
464-
left: 0;
464+
inset-inline-start: 0;
465465
z-index: $nav-z-index + 1;
466466
transform: translateX(-100%);
467467
transition: transform var(--nav-transition-duration) ease-in;
468-
left: 0;
469468
470469
:deep(.aside-animated-child) {
471470
opacity: 0;
@@ -502,7 +501,7 @@ export default {
502501
cursor: col-resize;
503502
top: 0;
504503
bottom: 0;
505-
right: 0;
504+
inset-inline-end: 0;
506505
width: 5px;
507506
height: 100%;
508507
user-select: none;

src/components/Badge.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ export default {
5959
border-style: var(--badge-border-style, none);
6060
border-width: var(--badge-border-width, 1px);
6161
margin: auto;
62-
margin-left: 5px;
62+
margin-inline-start: 5px;
6363
color: var(--colors-badge-text, var(--color-badge-text));
6464
background-color: var(--badge-color);
6565
@include prefers-dark {

src/components/CodeBlock.vue

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,10 @@ export default {
2929
@import 'docc-render/styles/_core.scss';
3030
3131
code {
32+
/* enforce "ltr" direction for text in code blocks right now since code is
33+
likely to remain as English and not translated */
34+
direction: ltr;
35+
3236
&::before {
3337
content: attr(data-before-code);
3438
}

src/components/ContentNode/Aside.vue

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,11 +53,13 @@ aside {
5353
break-inside: avoid;
5454
border-radius: var(--aside-border-radius, $border-radius);
5555
border-style: var(--aside-border-style, solid);
56-
border-width: var(--aside-border-width,
56+
/*border-width: var(--aside-border-width,
5757
$aside-width-border
5858
$aside-width-border
5959
$aside-width-border
60-
$aside-width-left-border);
60+
$aside-width-left-border);*/
61+
border-block-width: $aside-width-border;
62+
border-inline-width: $aside-width-left-border 0;
6163
padding: rem(16px);
6264
text-align: start;
6365

src/components/ContentNode/LinkableHeading.vue

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ $icon-margin: 7px;
7878
color: inherit;
7979
text-decoration: none;
8080
position: relative;
81-
padding-right: $icon-size-default + $icon-margin;
81+
padding-inline-end: $icon-size-default + $icon-margin;
8282
display: inline-block;
8383
8484
&::after {
@@ -88,11 +88,11 @@ $icon-margin: 7px;
8888
8989
.icon {
9090
position: absolute;
91-
right: 0;
91+
inset-inline-end: 0;
9292
bottom: .2em;
9393
display: none;
9494
height: $icon-size-default;
95-
margin-left: $icon-margin;
95+
margin-inline-start: $icon-margin;
9696
}
9797
9898
&:hover, &:focus {

src/components/ContentNode/TabNavigator.vue

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -130,9 +130,9 @@ export default {
130130
.tabs-content {
131131
flex: 1 1 auto;
132132
min-width: 0;
133-
padding-right: var(--spacing-stacked-margin-xlarge);
133+
padding-inline-end: var(--spacing-stacked-margin-xlarge);
134134
@include breakpoint(small) {
135-
padding-right: 0;
135+
padding-inline-end: 0;
136136
padding-bottom: var(--spacing-stacked-margin-large);
137137
}
138138
}

src/components/DocumentationLayout.vue

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -248,7 +248,7 @@ export default {
248248
}
249249
250250
.navigator-filter .quick-navigation-open {
251-
margin-left: var(--nav-filter-horizontal-padding);
251+
margin-inline-start: var(--nav-filter-horizontal-padding);
252252
width: calc(var(--nav-filter-horizontal-padding) * 2);
253253
}
254254
}
@@ -268,14 +268,14 @@ export default {
268268
.documentation-layout-aside {
269269
height: 100%;
270270
box-sizing: border-box;
271-
border-right: $generic-border-style;
271+
border-inline-end: $generic-border-style;
272272
273273
@include breakpoint(medium, nav) {
274274
background: var(--color-fill);
275-
border-right: none;
275+
border-inline-end: none;
276276
277277
.sidebar-transitioning & {
278-
border-right: $generic-border-style;
278+
border-inline-end: $generic-border-style;
279279
}
280280
}
281281
}
@@ -293,8 +293,7 @@ export default {
293293
@include inTargetWeb {
294294
@include breakpoint-full-width-container();
295295
@include breakpoints-from(xlarge) {
296-
border-left: $generic-border-style;
297-
border-right: $generic-border-style;
296+
border-inline: $generic-border-style;
298297
box-sizing: border-box;
299298
}
300299
}

src/components/DocumentationTopic.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -816,7 +816,7 @@ $space-size: 15px;
816816
817817
small {
818818
font-size: 1rem;
819-
padding-left: 0.416rem;
819+
padding-inline-start: 0.416rem;
820820
}
821821
}
822822

src/components/DocumentationTopic/DecoratedTopicTitle.vue

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,12 @@ export default {
7575
<style scoped lang="scss">
7676
@import 'docc-render/styles/_core.scss';
7777
78+
.decorated-title {
79+
/* enforce "ltr" direction for text in code blocks right now since code is
80+
likely to remain as English and not translated */
81+
direction: ltr;
82+
}
83+
7884
.decorator, .label {
7985
color: var(--colors-secondary-label, var(--color-secondary-label));
8086
}

src/components/DocumentationTopic/DocumentationNav.vue

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -146,14 +146,14 @@ $sidenav-icon-padding-size: 5px;
146146
@include font-styles(nav-toggles);
147147
148148
@include breakpoint-only-largenav() {
149-
margin-left: $nav-space-between-elements;
149+
margin-inline-start: $nav-space-between-elements;
150150
}
151151
152152
.nav-menu-setting {
153153
display: flex;
154154
align-items: center;
155155
color: var(--color-nav-current-link);
156-
margin-left: 0;
156+
margin-inline-start: 0;
157157
min-width: 0;
158158
159159
.nav-menu-link {
@@ -187,7 +187,7 @@ $sidenav-icon-padding-size: 5px;
187187
.sidenav-toggle-wrapper {
188188
display: flex;
189189
margin-top: 1px;
190-
margin-right: $nav-padding / 2;
190+
margin-inline-end: $nav-padding / 2;
191191
192192
// This is a hack to enforce the toggle to be visible when in breakpoint,
193193
// even if already toggled off on desktop. Conditionally checking the current breakpoint,
@@ -204,7 +204,7 @@ $sidenav-icon-padding-size: 5px;
204204
}
205205
.sidenav-toggle-enter, .sidenav-toggle-leave-to {
206206
// 2x the nav padding, 1px border, and the size of the icon
207-
margin-left: (rem($sidenav-icon-size + 1px) + $nav-padding * 2) * -1;
207+
margin-inline-start: (rem($sidenav-icon-size + 1px) + $nav-padding * 2) * -1;
208208
}
209209
}
210210

0 commit comments

Comments
 (0)