diff --git a/core/themes/claro/css/base/variables.css b/core/themes/claro/css/base/variables.css index 8abb340132efce44eaf64f36ededbc654f8fe6cf..af4f053bd3b960df8b53cf4aa353d77a5bdf3af9 100644 --- a/core/themes/claro/css/base/variables.css +++ b/core/themes/claro/css/base/variables.css @@ -236,10 +236,6 @@ --progress-bar-description-font-size: var(--font-size-xs); --progress-track-border-color: var(--color-gray-500); --progress-track-bg-color: var(--color-gray-200); - /** - * Tabledrag icon size. - */ - --tabledrag-handle-icon-size: calc(17rem / 16); /* 17px */ /** * Ajax progress. */ diff --git a/core/themes/claro/css/base/variables.pcss.css b/core/themes/claro/css/base/variables.pcss.css index 30b01363bff8d3a8405f652190b2a378d00842aa..5376e30b1d8182dab397192773ad6cec831f1f10 100644 --- a/core/themes/claro/css/base/variables.pcss.css +++ b/core/themes/claro/css/base/variables.pcss.css @@ -230,10 +230,6 @@ --progress-bar-description-font-size: var(--font-size-xs); --progress-track-border-color: var(--color-gray-500); --progress-track-bg-color: var(--color-gray-200); - /** - * Tabledrag icon size. - */ - --tabledrag-handle-icon-size: calc(17rem / 16); /* 17px */ /** * Ajax progress. */ diff --git a/core/themes/claro/css/components/tabledrag.css b/core/themes/claro/css/components/tabledrag.css index b679d1d01086a024b8b23160f943e5680570d0bf..ac7f60bd1f644a603306dbc9f53677b0f7afdc1d 100644 --- a/core/themes/claro/css/components/tabledrag.css +++ b/core/themes/claro/css/components/tabledrag.css @@ -14,11 +14,6 @@ * @see tabledrag.js */ -:root { - --table-row--dragging-bg-color: #fe7; - --table-row--last-dragged-bg-color: #ffb; -} - body.drag { cursor: move; } @@ -27,6 +22,21 @@ body.drag-y { cursor: row-resize; } +.draggable-table { + --table-row--dragging-bg-color: #fe7; + --table-row--last-dragged-bg-color: #ffb; + --tabledrag-handle-icon-size: 1.0625rem; + + /** + * Reduce the spacing of draggable table cells. + */ +} + +.draggable-table td:first-child ~ td, +.draggable-table th:first-child ~ th { + padding-inline-start: 0; +} + /* The block region's title row in table. */ .region-title { @@ -39,9 +49,8 @@ body.drag-y { color: var(--color-gray-600); } -/* If the region is populated, we shouldn't display the empty message. */ - .region-message.region-populated { + /* If the region is populated, we shouldn't display the empty message. */ display: none; } @@ -62,12 +71,7 @@ body.drag-y { .draggable .tabledrag-changed { position: relative; - left: calc(var(--space-xs) * -1); /* LTR */ -} - -[dir="rtl"] .draggable .tabledrag-changed { - right: calc(var(--space-xs) * -1); /* LTR */ - left: auto; + inset-inline-start: calc(var(--space-xs) * -1); } .tabledrag-cell--only-drag .tabledrag-changed { @@ -88,21 +92,6 @@ body.drag-y { background-color: var(--table-row--last-dragged-bg-color); } -/** - * Reduce the spacing of draggable table cells. - */ - -.draggable-table td:first-child ~ td, -.draggable-table th:first-child ~ th { - padding-left: 0 /* LTR */; -} - -[dir="rtl"] .draggable-table td:first-child ~ td, -[dir="rtl"] .draggable-table th:first-child ~ th { - padding-right: 0; - padding-left: var(--space-m); -} - /* Auto width for weight selects and number inputs. */ .draggable td .form-element--type-select[name$="][_weight]"], /* Multiple field */ @@ -128,16 +117,23 @@ body.drag-y { display: inline-block; width: var(--tabledrag-handle-icon-size); height: var(--tabledrag-handle-icon-size); - margin-left: calc(var(--space-m) * -1); /* LTR */ + margin-inline-start: calc(var(--space-m) * -1); padding: var(--space-xs) var(--space-m); content: ""; transition: transform 0.1s ease-in-out 0s; background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='17' height='17' viewBox='0 0 16 16'%3e%3cpath fill='%23000f33' d='M14.103 5.476a.5.5 0 00-.701-.053.526.526 0 00-.082.713l1.1 1.346H8.512V1.62l1.32 1.113a.501.501 0 00.732-.054.528.528 0 00-.085-.744L8.328.119a.5.5 0 00-.647 0L5.529 1.935a.527.527 0 00-.085.744.504.504 0 00.732.054l1.32-1.113v5.862H1.588L2.68 6.136a.526.526 0 00-.1-.68.5.5 0 00-.675.02L.117 7.67a.525.525 0 000 .66l1.788 2.194a.5.5 0 00.702.053.526.526 0 00.081-.713l-1.1-1.346h5.908v5.862l-1.32-1.113a.501.501 0 00-.698.082.526.526 0 00.051.716l2.152 1.817v-.001a.5.5 0 00.647 0l2.151-1.816a.526.526 0 00.052-.716.501.501 0 00-.699-.082l-1.32 1.113V8.518h5.908l-1.091 1.346a.527.527 0 00.022.776.504.504 0 00.752-.116l1.78-2.194a.527.527 0 000-.66z'/%3e%3c/svg%3e") no-repeat center; } -[dir="rtl"] .tabledrag-handle::after { - margin-right: calc(var(--space-m) * -1); - margin-left: 0; +@media (forced-colors: active) { + .tabledrag-handle::after { + background: linktext; + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='17' height='17' viewBox='0 0 16 16'%3e%3cpath fill='%23000f33' d='M14.103 5.476a.5.5 0 00-.701-.053.526.526 0 00-.082.713l1.1 1.346H8.512V1.62l1.32 1.113a.501.501 0 00.732-.054.528.528 0 00-.085-.744L8.328.119a.5.5 0 00-.647 0L5.529 1.935a.527.527 0 00-.085.744.504.504 0 00.732.054l1.32-1.113v5.862H1.588L2.68 6.136a.526.526 0 00-.1-.68.5.5 0 00-.675.02L.117 7.67a.525.525 0 000 .66l1.788 2.194a.5.5 0 00.702.053.526.526 0 00.081-.713l-1.1-1.346h5.908v5.862l-1.32-1.113a.501.501 0 00-.698.082.526.526 0 00.051.716l2.152 1.817v-.001a.5.5 0 00.647 0l2.151-1.816a.526.526 0 00.052-.716.501.501 0 00-.699-.082l-1.32 1.113V8.518h5.908l-1.091 1.346a.527.527 0 00.022.776.504.504 0 00.752-.116l1.78-2.194a.527.527 0 000-.66z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='17' height='17' viewBox='0 0 16 16'%3e%3cpath fill='%23000f33' d='M14.103 5.476a.5.5 0 00-.701-.053.526.526 0 00-.082.713l1.1 1.346H8.512V1.62l1.32 1.113a.501.501 0 00.732-.054.528.528 0 00-.085-.744L8.328.119a.5.5 0 00-.647 0L5.529 1.935a.527.527 0 00-.085.744.504.504 0 00.732.054l1.32-1.113v5.862H1.588L2.68 6.136a.526.526 0 00-.1-.68.5.5 0 00-.675.02L.117 7.67a.525.525 0 000 .66l1.788 2.194a.5.5 0 00.702.053.526.526 0 00.081-.713l-1.1-1.346h5.908v5.862l-1.32-1.113a.501.501 0 00-.698.082.526.526 0 00.051.716l2.152 1.817v-.001a.5.5 0 00.647 0l2.151-1.816a.526.526 0 00.052-.716.501.501 0 00-.699-.082l-1.32 1.113V8.518h5.908l-1.091 1.346a.527.527 0 00.022.776.504.504 0 00.752-.116l1.78-2.194a.527.527 0 000-.66z'/%3e%3c/svg%3e"); + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-position: center; + mask-position: center; + } } /* Change icon and cursor if only vertical drag is allowed. */ @@ -151,26 +147,12 @@ body.drag-y { background-size: 1rem 1rem; } -@media (forced-colors: active) { - .tabledrag-handle::after { - content: ""; - background: linktext; - -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='17' height='17' viewBox='0 0 16 16'%3e%3cpath fill='%23000f33' d='M14.103 5.476a.5.5 0 00-.701-.053.526.526 0 00-.082.713l1.1 1.346H8.512V1.62l1.32 1.113a.501.501 0 00.732-.054.528.528 0 00-.085-.744L8.328.119a.5.5 0 00-.647 0L5.529 1.935a.527.527 0 00-.085.744.504.504 0 00.732.054l1.32-1.113v5.862H1.588L2.68 6.136a.526.526 0 00-.1-.68.5.5 0 00-.675.02L.117 7.67a.525.525 0 000 .66l1.788 2.194a.5.5 0 00.702.053.526.526 0 00.081-.713l-1.1-1.346h5.908v5.862l-1.32-1.113a.501.501 0 00-.698.082.526.526 0 00.051.716l2.152 1.817v-.001a.5.5 0 00.647 0l2.151-1.816a.526.526 0 00.052-.716.501.501 0 00-.699-.082l-1.32 1.113V8.518h5.908l-1.091 1.346a.527.527 0 00.022.776.504.504 0 00.752-.116l1.78-2.194a.527.527 0 000-.66z'/%3e%3c/svg%3e"); - mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='17' height='17' viewBox='0 0 16 16'%3e%3cpath fill='%23000f33' d='M14.103 5.476a.5.5 0 00-.701-.053.526.526 0 00-.082.713l1.1 1.346H8.512V1.62l1.32 1.113a.501.501 0 00.732-.054.528.528 0 00-.085-.744L8.328.119a.5.5 0 00-.647 0L5.529 1.935a.527.527 0 00-.085.744.504.504 0 00.732.054l1.32-1.113v5.862H1.588L2.68 6.136a.526.526 0 00-.1-.68.5.5 0 00-.675.02L.117 7.67a.525.525 0 000 .66l1.788 2.194a.5.5 0 00.702.053.526.526 0 00.081-.713l-1.1-1.346h5.908v5.862l-1.32-1.113a.501.501 0 00-.698.082.526.526 0 00.051.716l2.152 1.817v-.001a.5.5 0 00.647 0l2.151-1.816a.526.526 0 00.052-.716.501.501 0 00-.699-.082l-1.32 1.113V8.518h5.908l-1.091 1.346a.527.527 0 00.022.776.504.504 0 00.752-.116l1.78-2.194a.527.527 0 000-.66z'/%3e%3c/svg%3e"); - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-position: center; - mask-position: center; - } -} - .tabledrag-handle::after, .tabledrag-disabled .tabledrag-handle.tabledrag-handle.tabledrag-handle::after { transform: scale(1); } -.tabledrag-handle:hover::after, -.tabledrag-handle:focus::after, +.tabledrag-handle:is(:hover, :focus)::after, .draggable.drag .tabledrag-handle::after { transform: scale(1.25); } @@ -199,7 +181,7 @@ body.drag-y { } .tabledrag-disabled .tabledrag-handle.tabledrag-handle::before { - content: normal; + content: none; } /** @@ -211,13 +193,11 @@ body.drag-y { */ .touchevents .tabledrag-handle::after { - padding-top: var(--space-s); - padding-bottom: var(--space-s); + padding-block: var(--space-s); } .touchevents .draggable .menu-item__link { - padding-top: var(--space-xs); - padding-bottom: var(--space-xs); + padding-block: var(--space-xs); } /** @@ -225,15 +205,11 @@ body.drag-y { */ .tabledrag-toggle-weight-wrapper { - text-align: right; /* LTR */ -} + text-align: end; -[dir="rtl"] .tabledrag-toggle-weight-wrapper { - text-align: left; + /* Hide nested weight toggles as they are redundant. */ } -/* Hide nested weight toggles as they are redundant. */ - .draggable-table .tabledrag-toggle-weight-wrapper { display: none; } @@ -243,8 +219,7 @@ body.drag-y { */ .tabledrag-cell { - padding-top: 0; - padding-bottom: 0; + padding-block: 0; } /** @@ -256,16 +231,12 @@ body.drag-y { .tabledrag-cell--only-drag { width: 1px; /* This forces this cell to use the smallest possible width. */ - padding-right: 0; /* LTR */ -} - -[dir="rtl"] .tabledrag-cell--only-drag { - padding-right: var(--space-m); - padding-left: 0; + padding-inline-end: 0; } .tabledrag-cell-content { - display: table; + display: flex; + align-items: center; height: 100%; } @@ -274,49 +245,20 @@ body.drag-y { vertical-align: middle; } -.tabledrag-cell-content__item { - padding-right: var(--space-xs); /* LTR */ -} - -[dir="rtl"] .tabledrag-cell-content__item { - padding-right: 0; - padding-left: var(--space-xs); -} - -.tabledrag-cell-content__item:empty { - display: none; -} - -.tabledrag-cell-content .indentation, -[dir="rtl"] .tabledrag-cell-content .indentation { - float: none; - overflow: hidden; - height: 100%; -} - .tabledrag-cell-content .tree { - min-height: 100%; + flex-grow: 1; } -/** - * Safari (at least version 13.0) thinks that if we define a width or height for - * and SVG, then we refer to the elements total size inside the SVG. - * We only want to inherit the height of the parent element. - */ - -/* stylelint-disable-next-line unit-allowed-list */ +.tabledrag-cell-content .tabledrag-handle::after { + vertical-align: middle; +} -@media not all and (min-resolution: 0.001dpcm) { - @supports (-webkit-appearance: none) { - .tabledrag-cell-content .tree { - overflow: visible; - min-height: 0; - } - } +.tabledrag-cell-content__item { + padding-inline-end: var(--space-xs); } -.tabledrag-cell-content .tabledrag-handle::after { - vertical-align: middle; +.tabledrag-cell-content__item:empty { + display: none; } /** @@ -325,17 +267,25 @@ body.drag-y { .indentation { position: relative; - left: calc(var(--space-xs) * -0.5); /* LTR */ + inset-inline-start: calc(var(--space-xs) * -0.5); float: left; /* LTR */ - width: calc(25rem / 16); /* 25px */ - height: calc(25rem / 16); /* 25px */ + width: 1.5625rem; + height: 1.5625rem; background: none !important; line-height: 0; } +.tabledrag-cell-content .indentation { + /* Fixes Safari bug (16.1 at least) where table rows are overly large when + using indentation (e.g. re-ordering menu items. */ + display: inline-flex; + float: none; + overflow: hidden; + flex-direction: column; + height: 100%; +} + [dir="rtl"] .indentation { - right: calc(var(--space-xs) * -0.5); - left: auto; float: right; } @@ -348,8 +298,8 @@ body.drag-y { */ .tree { - width: calc(25rem / 16); /* 25px */ - height: calc(25rem / 16); /* 25px */ + width: 1.5625rem; + height: 1.5625rem; } .tree__item { @@ -376,23 +326,23 @@ body.drag-y { display: block; } -/* Last LTR tree child. */ +/* Last RTL tree child. */ -.tree-child-last path:not(.tree__item-child-last-ltr) { +[dir="rtl"] .tree-child-last path:not(.tree__item-child-last-rtl) { display: none; } -.tree-child-last path.tree__item-child-last-ltr { +[dir="rtl"] .tree-child-last path.tree__item-child-last-rtl { display: block; } -/* Last RTL tree child. */ +/* Last LTR tree child. */ -[dir="rtl"] .tree-child-last path:not(.tree__item-child-last-rtl) { +.tree-child-last path:not(.tree__item-child-last-ltr) { display: none; } -[dir="rtl"] .tree-child-last path.tree__item-child-last-rtl { +.tree-child-last path.tree__item-child-last-ltr { display: block; } diff --git a/core/themes/claro/css/components/tabledrag.pcss.css b/core/themes/claro/css/components/tabledrag.pcss.css index 5a645363ed076ae3dee9721755cf3abaacfb5485..2484ef2a4c3d76f17caa94070a7109ac255e8824 100644 --- a/core/themes/claro/css/components/tabledrag.pcss.css +++ b/core/themes/claro/css/components/tabledrag.pcss.css @@ -7,11 +7,6 @@ * @see tabledrag.js */ -:root { - --table-row--dragging-bg-color: #fe7; - --table-row--last-dragged-bg-color: #ffb; -} - body.drag { cursor: move; } @@ -19,18 +14,35 @@ body.drag-y { cursor: row-resize; } +.draggable-table { + --table-row--dragging-bg-color: #fe7; + --table-row--last-dragged-bg-color: #ffb; + --tabledrag-handle-icon-size: 17px; + + /** + * Reduce the spacing of draggable table cells. + */ + & td:first-child ~ td, + & th:first-child ~ th { + padding-inline-start: 0; + } +} + /* The block region's title row in table. */ .region-title { font-weight: bold; } + /* Empty region message row in table. */ .region-message { color: var(--color-gray-600); + + &.region-populated { + /* If the region is populated, we shouldn't display the empty message. */ + display: none; + } } -/* If the region is populated, we shouldn't display the empty message. */ -.region-message.region-populated { - display: none; -} + /** * Remove border-bottom from abbr element. Class is duplicated in the selector * to increase weight to be able to win normalize.css selectors. @@ -38,22 +50,22 @@ body.drag-y { .tabledrag-changed.tabledrag-changed { border-bottom: none; } -/* Don't display the abbreviation of 'add-new' table rows. */ -.add-new .tabledrag-changed { - display: none; -} -.draggable .tabledrag-changed { - position: relative; - left: calc(var(--space-xs) * -1); /* LTR */ -} -[dir="rtl"] .draggable .tabledrag-changed { - right: calc(var(--space-xs) * -1); /* LTR */ - left: auto; -} -.tabledrag-cell--only-drag .tabledrag-changed { - width: var(--space-l); - min-width: var(--space-l); +.tabledrag-changed { + /* Don't display the abbreviation of 'add-new' table rows. */ + @nest .add-new & { + display: none; + } + + @nest .draggable & { + position: relative; + inset-inline-start: calc(var(--space-xs) * -1); + } + + @nest .tabledrag-cell--only-drag & { + width: var(--space-l); + min-width: var(--space-l); + } } /** @@ -63,23 +75,11 @@ body.drag-y { .draggable.drag:focus { background-color: var(--table-row--dragging-bg-color); } + .draggable.drag-previous { background-color: var(--table-row--last-dragged-bg-color); } -/** - * Reduce the spacing of draggable table cells. - */ -.draggable-table td:first-child ~ td, -.draggable-table th:first-child ~ th { - padding-left: 0 /* LTR */; -} -[dir="rtl"] .draggable-table td:first-child ~ td, -[dir="rtl"] .draggable-table th:first-child ~ th { - padding-right: 0; - padding-left: var(--space-m); -} - /* Auto width for weight selects and number inputs. */ .draggable td .form-element--type-select[name$="][_weight]"], /* Multiple field */ .draggable td .term-weight, /* Taxonomy term list */ @@ -97,21 +97,24 @@ body.drag-y { cursor: move; text-align: center; vertical-align: text-top; -} -.tabledrag-handle::after { - display: inline-block; - width: var(--tabledrag-handle-icon-size); - height: var(--tabledrag-handle-icon-size); - margin-left: calc(var(--space-m) * -1); /* LTR */ - padding: var(--space-xs) var(--space-m); - content: ""; - transition: transform 0.1s ease-in-out 0s; - background: url(../../images/icons/000f33/tabledrag-handle.svg) no-repeat center; -} -[dir="rtl"] .tabledrag-handle::after { - margin-right: calc(var(--space-m) * -1); - margin-left: 0; + &::after { + display: inline-block; + width: var(--tabledrag-handle-icon-size); + height: var(--tabledrag-handle-icon-size); + margin-inline-start: calc(var(--space-m) * -1); + padding: var(--space-xs) var(--space-m); + content: ""; + transition: transform 0.1s ease-in-out 0s; + background: url(../../images/icons/000f33/tabledrag-handle.svg) no-repeat center; + + @media (forced-colors: active) { + background: linktext; + mask-image: url(../../images/icons/000f33/tabledrag-handle.svg); + mask-repeat: no-repeat; + mask-position: center; + } + } } /* Change icon and cursor if only vertical drag is allowed. */ @@ -124,23 +127,12 @@ body.drag-y { background-size: 16px 16px; } -@media (forced-colors: active) { - .tabledrag-handle::after { - content: ""; - background: linktext; - mask-image: url(../../images/icons/000f33/tabledrag-handle.svg); - mask-repeat: no-repeat; - mask-position: center; - } -} - .tabledrag-handle::after, .tabledrag-disabled .tabledrag-handle.tabledrag-handle.tabledrag-handle::after { transform: scale(1); } -.tabledrag-handle:hover::after, -.tabledrag-handle:focus::after, +.tabledrag-handle:is(:hover, :focus)::after, .draggable.drag .tabledrag-handle::after { transform: scale(1.25); } @@ -148,27 +140,29 @@ body.drag-y { .tabledrag-handle:focus { outline: none !important; box-shadow: none !important; -} -.tabledrag-handle:focus::before { - display: block; - width: calc(var(--space-m) + (var(--space-xs) * 2)); /* Same as height. */ - height: calc(var(--space-m) + (var(--space-xs) * 2)); /* Hande svg height + its vertical padding */ - margin: 0 calc(var(--space-xs) * -1) calc((var(--space-m) + (var(--space-xs) * 2)) * -1); /* Bottom: handle height as negative value. */ - content: ""; - border-radius: var(--base-border-radius); - outline: var(--outline-size) dotted transparent; - box-shadow: 0 0 0 var(--focus-border-size) var(--color-focus); + &::before { + display: block; + width: calc(var(--space-m) + (var(--space-xs) * 2)); /* Same as height. */ + height: calc(var(--space-m) + (var(--space-xs) * 2)); /* Hande svg height + its vertical padding */ + margin: 0 calc(var(--space-xs) * -1) calc((var(--space-m) + (var(--space-xs) * 2)) * -1); /* Bottom: handle height as negative value. */ + content: ""; + border-radius: var(--base-border-radius); + outline: var(--outline-size) dotted transparent; + box-shadow: 0 0 0 var(--focus-border-size) var(--color-focus); + } } /* Disabled tabledrag handle. */ -.tabledrag-disabled .tabledrag-handle { - cursor: default; - opacity: 0.4; -} +.tabledrag-disabled { + & .tabledrag-handle { + cursor: default; + opacity: 0.4; -.tabledrag-disabled .tabledrag-handle.tabledrag-handle::before { - content: normal; + &.tabledrag-handle::before { + content: none; + } + } } /** @@ -178,37 +172,33 @@ body.drag-y { /** * Increase handle size. */ -.touchevents .tabledrag-handle::after { - padding-top: var(--space-s); - padding-bottom: var(--space-s); -} +.touchevents { + & .tabledrag-handle::after { + padding-block: var(--space-s); + } -.touchevents .draggable .menu-item__link { - padding-top: var(--space-xs); - padding-bottom: var(--space-xs); + & .draggable .menu-item__link { + padding-block: var(--space-xs); + } } /** * Wrapper of the toggle weight button (styled as a link). */ .tabledrag-toggle-weight-wrapper { - text-align: right; /* LTR */ -} -[dir="rtl"] .tabledrag-toggle-weight-wrapper { - text-align: left; -} + text-align: end; -/* Hide nested weight toggles as they are redundant. */ -.draggable-table .tabledrag-toggle-weight-wrapper { - display: none; + /* Hide nested weight toggles as they are redundant. */ + @nest .draggable-table & { + display: none; + } } /** * Keep crowded tabledrag cells vertically centered. */ .tabledrag-cell { - padding-top: 0; - padding-bottom: 0; + padding-block: 0; } /** @@ -219,80 +209,61 @@ body.drag-y { */ .tabledrag-cell--only-drag { width: 1px; /* This forces this cell to use the smallest possible width. */ - padding-right: 0; /* LTR */ -} -[dir="rtl"] .tabledrag-cell--only-drag { - padding-right: var(--space-m); - padding-left: 0; + padding-inline-end: 0; } .tabledrag-cell-content { - display: table; + display: flex; + align-items: center; height: 100%; -} -.tabledrag-cell-content > * { - display: table-cell; - vertical-align: middle; -} + & > * { + display: table-cell; + vertical-align: middle; + } -.tabledrag-cell-content__item { - padding-right: var(--space-xs); /* LTR */ -} -[dir="rtl"] .tabledrag-cell-content__item { - padding-right: 0; - padding-left: var(--space-xs); -} -.tabledrag-cell-content__item:empty { - display: none; -} + & .tree { + flex-grow: 1; + } -.tabledrag-cell-content .indentation, -[dir="rtl"] .tabledrag-cell-content .indentation { - float: none; - overflow: hidden; - height: 100%; + & .tabledrag-handle::after { + vertical-align: middle; + } } -.tabledrag-cell-content .tree { - min-height: 100%; -} +.tabledrag-cell-content__item { + padding-inline-end: var(--space-xs); -/** - * Safari (at least version 13.0) thinks that if we define a width or height for - * and SVG, then we refer to the elements total size inside the SVG. - * We only want to inherit the height of the parent element. - */ -/* stylelint-disable-next-line unit-allowed-list */ -@media not all and (min-resolution: 0.001dpcm) { - @supports (-webkit-appearance: none) { - .tabledrag-cell-content .tree { - overflow: visible; - min-height: 0; - } + &:empty { + display: none; } } -.tabledrag-cell-content .tabledrag-handle::after { - vertical-align: middle; -} - /** * Indentation. */ .indentation { position: relative; - left: calc(var(--space-xs) * -0.5); /* LTR */ + inset-inline-start: calc(var(--space-xs) * -0.5); float: left; /* LTR */ - width: calc(25rem / 16); /* 25px */ - height: calc(25rem / 16); /* 25px */ + width: 25px; + height: 25px; background: none !important; line-height: 0; -} -[dir="rtl"] .indentation { - right: calc(var(--space-xs) * -0.5); - left: auto; - float: right; + + @nest .tabledrag-cell-content & { + /* Fixes Safari bug (16.1 at least) where table rows are overly large when + using indentation (e.g. re-ordering menu items. */ + display: inline-flex; + float: none; + overflow: hidden; + flex-direction: column; + height: 100%; + } + + @nest [dir="rtl"] & { + float: right; + } } /** @@ -303,8 +274,8 @@ body.drag-y { * element. */ .tree { - width: calc(25rem / 16); /* 25px */ - height: calc(25rem / 16); /* 25px */ + width: 25px; + height: 25px; } .tree__item { @@ -312,41 +283,55 @@ body.drag-y { } /* LTR tree child. */ -.tree-child path:not(.tree__item-child-ltr) { - display: none; -} -.tree-child path.tree__item-child-ltr { - display: block; +.tree-child path { + &:not(.tree__item-child-ltr) { + display: none; + } + + &.tree__item-child-ltr { + display: block; + } } /* RTL tree child. */ -[dir="rtl"] .tree-child path:not(.tree__item-child-rtl) { - display: none; -} -[dir="rtl"] .tree-child path.tree__item-child-rtl { - display: block; -} +[dir="rtl"] { + & .tree-child path { + &:not(.tree__item-child-rtl) { + display: none; + } + &.tree__item-child-rtl { + display: block; + } + } -/* Last LTR tree child. */ -.tree-child-last path:not(.tree__item-child-last-ltr) { - display: none; -} -.tree-child-last path.tree__item-child-last-ltr { - display: block; + /* Last RTL tree child. */ + & .tree-child-last path { + &:not(.tree__item-child-last-rtl) { + display: none; + } + &.tree__item-child-last-rtl { + display: block; + } + } } -/* Last RTL tree child. */ -[dir="rtl"] .tree-child-last path:not(.tree__item-child-last-rtl) { - display: none; -} -[dir="rtl"] .tree-child-last path.tree__item-child-last-rtl { - display: block; +/* Last LTR tree child. */ +.tree-child-last path { + &:not(.tree__item-child-last-ltr) { + display: none; + } + &.tree__item-child-last-ltr { + display: block; + } } /* Horizontal line. */ -.tree-child-horizontal path:not(.tree__item-horizontal) { - display: none; -} -.tree-child-horizontal path.tree__item-horizontal { - display: block; +.tree-child-horizontal path { + &:not(.tree__item-horizontal) { + display: none; + } + + &.tree__item-horizontal { + display: block; + } }