@threadlabs/looma 0.15.6 → 0.15.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/ui-tree/ui-tree.html +2 -2
- package/components/ui-tree-item/ui-tree-item.html +11 -10
- package/components/ui-tree-item/ui-tree-item.js +54 -9
- package/dist/index.js +1 -1
- package/package.json +1 -1
- package/styles/ui-tree-item.css +12 -12
- package/vue/UiTreeItem.vue +8 -8
- package/vue/chunks/UiTreeItem.js +1 -1
- package/vue/components.css +88 -88
package/package.json
CHANGED
package/styles/ui-tree-item.css
CHANGED
|
@@ -256,27 +256,27 @@
|
|
|
256
256
|
);
|
|
257
257
|
}
|
|
258
258
|
|
|
259
|
-
/* A hovered row reads its whole name: the label slides far enough to show the end,
|
|
260
|
-
there, and
|
|
259
|
+
/* A hovered row reads its whole name: the label slides far enough to show the end, rests
|
|
260
|
+
there, and starts again. Only when it actually overflows — the controller measures by how
|
|
261
261
|
much — after the controls have taken their place over its end — and hands over the distance
|
|
262
262
|
and a duration from it, so every name moves at the same speed. */
|
|
263
263
|
.row[data-ui-marquee] > .label > .label-text {
|
|
264
|
-
/* Once
|
|
265
|
-
|
|
264
|
+
/* Once per pass: the controller restarts it after a rest at the end, so the name holds still
|
|
265
|
+
long enough to read rather than sliding back and forth. */
|
|
266
266
|
animation: ui-tree-item-marquee var(--_marquee-duration) linear 0.5s 1 normal forwards;
|
|
267
267
|
will-change: transform;
|
|
268
268
|
}
|
|
269
269
|
|
|
270
270
|
/* This comes after the hover fade, which it replaces at the same specificity. While the name
|
|
271
271
|
slides, the label reaches back under the icon (the controller measures how far) with its text
|
|
272
|
-
where it was, and fades out across
|
|
273
|
-
under the icon rather than stopping at a hard edge beside it. */
|
|
272
|
+
where it was, and fades out across the gap before the icon, fully gone where the icon begins
|
|
273
|
+
to cover it: the name slips under the icon rather than stopping at a hard edge beside it. */
|
|
274
274
|
.row[data-ui-marquee] > .label {
|
|
275
275
|
margin-inline-start: calc(-1 * var(--_marquee-lead, 0px));
|
|
276
276
|
padding-inline-start: calc(var(--_marquee-lead, 0px) + var(--_ui-tree-item-label-padding-inline, var(--ui-space-2)));
|
|
277
277
|
mask-image: linear-gradient(
|
|
278
278
|
to right,
|
|
279
|
-
transparent
|
|
279
|
+
transparent var(--_marquee-icon-width, 0px),
|
|
280
280
|
#000 calc(var(--_marquee-lead, 0px) + var(--_ui-tree-item-label-padding-inline, var(--ui-space-2))),
|
|
281
281
|
#000 calc(100% - var(--_tree-actions-width, 1.75rem) - var(--ui-space-3)),
|
|
282
282
|
transparent calc(100% - var(--_tree-actions-width, 1.75rem))
|
|
@@ -286,7 +286,7 @@
|
|
|
286
286
|
.row[data-ui-marquee] > .label:dir(rtl) {
|
|
287
287
|
mask-image: linear-gradient(
|
|
288
288
|
to left,
|
|
289
|
-
transparent
|
|
289
|
+
transparent var(--_marquee-icon-width, 0px),
|
|
290
290
|
#000 calc(var(--_marquee-lead, 0px) + var(--_ui-tree-item-label-padding-inline, var(--ui-space-2))),
|
|
291
291
|
#000 calc(100% - var(--_tree-actions-width, 1.75rem) - var(--ui-space-3)),
|
|
292
292
|
transparent calc(100% - var(--_tree-actions-width, 1.75rem))
|
|
@@ -520,15 +520,15 @@
|
|
|
520
520
|
/* The controls sit over the label's end, so the text fades out where they begin. The fade is
|
|
521
521
|
the truncation mark while it shows: an ellipsis under it would read as a second one. */
|
|
522
522
|
|
|
523
|
-
/* A hovered row reads its whole name: the label slides far enough to show the end,
|
|
524
|
-
there, and
|
|
523
|
+
/* A hovered row reads its whole name: the label slides far enough to show the end, rests
|
|
524
|
+
there, and starts again. Only when it actually overflows — the controller measures by how
|
|
525
525
|
much — after the controls have taken their place over its end — and hands over the distance
|
|
526
526
|
and a duration from it, so every name moves at the same speed. */
|
|
527
527
|
|
|
528
528
|
/* This comes after the hover fade, which it replaces at the same specificity. While the name
|
|
529
529
|
slides, the label reaches back under the icon (the controller measures how far) with its text
|
|
530
|
-
where it was, and fades out across
|
|
531
|
-
under the icon rather than stopping at a hard edge beside it. */
|
|
530
|
+
where it was, and fades out across the gap before the icon, fully gone where the icon begins
|
|
531
|
+
to cover it: the name slips under the icon rather than stopping at a hard edge beside it. */
|
|
532
532
|
|
|
533
533
|
/* Reduced motion keeps the fade, which already says the name continues. */
|
|
534
534
|
@media (prefers-reduced-motion: reduce) {
|
package/vue/UiTreeItem.vue
CHANGED
|
@@ -449,21 +449,21 @@ useComponentHost(controllerModule.default, {
|
|
|
449
449
|
);
|
|
450
450
|
}
|
|
451
451
|
|
|
452
|
-
/* A hovered row reads its whole name: the label slides far enough to show the end,
|
|
453
|
-
there, and
|
|
452
|
+
/* A hovered row reads its whole name: the label slides far enough to show the end, rests
|
|
453
|
+
there, and starts again. Only when it actually overflows — the controller measures by how
|
|
454
454
|
much — after the controls have taken their place over its end — and hands over the distance
|
|
455
455
|
and a duration from it, so every name moves at the same speed. */
|
|
456
456
|
.row[data-ui-marquee] > .label > .label-text {
|
|
457
|
-
/* Once
|
|
458
|
-
|
|
457
|
+
/* Once per pass: the controller restarts it after a rest at the end, so the name holds still
|
|
458
|
+
long enough to read rather than sliding back and forth. */
|
|
459
459
|
animation: ui-tree-item-marquee var(--_marquee-duration) linear 0.5s 1 normal forwards;
|
|
460
460
|
will-change: transform;
|
|
461
461
|
}
|
|
462
462
|
|
|
463
463
|
/* This comes after the hover fade, which it replaces at the same specificity. While the name
|
|
464
464
|
slides, the label reaches back under the icon (the controller measures how far) with its text
|
|
465
|
-
where it was, and fades out across
|
|
466
|
-
under the icon rather than stopping at a hard edge beside it. */
|
|
465
|
+
where it was, and fades out across the gap before the icon, fully gone where the icon begins
|
|
466
|
+
to cover it: the name slips under the icon rather than stopping at a hard edge beside it. */
|
|
467
467
|
.row[data-ui-marquee] > .label {
|
|
468
468
|
margin-inline-start: calc(-1 * var(--_marquee-lead, 0px));
|
|
469
469
|
padding-inline-start: calc(
|
|
@@ -471,7 +471,7 @@ useComponentHost(controllerModule.default, {
|
|
|
471
471
|
);
|
|
472
472
|
mask-image: linear-gradient(
|
|
473
473
|
to right,
|
|
474
|
-
transparent
|
|
474
|
+
transparent var(--_marquee-icon-width, 0px),
|
|
475
475
|
#000 calc(
|
|
476
476
|
var(--_marquee-lead, 0px) + var(--_ui-tree-item-label-padding-inline, var(--ui-space-2))
|
|
477
477
|
),
|
|
@@ -483,7 +483,7 @@ useComponentHost(controllerModule.default, {
|
|
|
483
483
|
.row[data-ui-marquee] > .label:dir(rtl) {
|
|
484
484
|
mask-image: linear-gradient(
|
|
485
485
|
to left,
|
|
486
|
-
transparent
|
|
486
|
+
transparent var(--_marquee-icon-width, 0px),
|
|
487
487
|
#000 calc(
|
|
488
488
|
var(--_marquee-lead, 0px) + var(--_ui-tree-item-label-padding-inline, var(--ui-space-2))
|
|
489
489
|
),
|
package/vue/chunks/UiTreeItem.js
CHANGED
|
@@ -252,6 +252,6 @@ var UiTreeItem_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
|
|
|
252
252
|
], 16, _hoisted_1);
|
|
253
253
|
};
|
|
254
254
|
}
|
|
255
|
-
}), [["__scopeId", "data-v-
|
|
255
|
+
}), [["__scopeId", "data-v-12522ec8"]]);
|
|
256
256
|
//#endregion
|
|
257
257
|
export { UiTreeItem_default as t };
|
package/vue/components.css
CHANGED
|
@@ -7704,7 +7704,7 @@ to {
|
|
|
7704
7704
|
syntax: "*";
|
|
7705
7705
|
inherits: false;
|
|
7706
7706
|
}
|
|
7707
|
-
[data-component~="ui-tree-item"][data-v-
|
|
7707
|
+
[data-component~="ui-tree-item"][data-v-12522ec8] {
|
|
7708
7708
|
/* Hooks do not inherit, so the parts below read them from the root. The tree's density
|
|
7709
7709
|
sets the defaults, in --_ui-default-*. */
|
|
7710
7710
|
--_ui-tree-item-min-block-size: var(
|
|
@@ -7726,7 +7726,7 @@ to {
|
|
|
7726
7726
|
min-inline-size: 0;
|
|
7727
7727
|
margin-inline-start: calc(var(--ui-tree-item-depth, 0) * var(--_ui-tree-indent, 16px));
|
|
7728
7728
|
}
|
|
7729
|
-
.row[data-v-
|
|
7729
|
+
.row[data-v-12522ec8] {
|
|
7730
7730
|
position: relative;
|
|
7731
7731
|
display: grid;
|
|
7732
7732
|
grid-template-columns: var(--_tree-disclosure-size) auto minmax(0, 1fr);
|
|
@@ -7743,38 +7743,38 @@ to {
|
|
|
7743
7743
|
box-shadow var(--ui-motion-fast) var(--ui-motion-ease),
|
|
7744
7744
|
min-block-size var(--ui-motion-base) var(--ui-motion-ease);
|
|
7745
7745
|
}
|
|
7746
|
-
.row[data-v-
|
|
7747
|
-
[data-component~="ui-tree-item"][data-ui-tree-item-state~="selected"] .row[data-v-
|
|
7748
|
-
.row[data-v-
|
|
7746
|
+
.row[data-v-12522ec8]:hover,
|
|
7747
|
+
[data-component~="ui-tree-item"][data-ui-tree-item-state~="selected"] .row[data-v-12522ec8],
|
|
7748
|
+
.row[data-v-12522ec8]:focus-within {
|
|
7749
7749
|
color: var(--ui-text-primary);
|
|
7750
7750
|
background: var(--ui-surface-muted);
|
|
7751
7751
|
}
|
|
7752
|
-
[data-component~="ui-tree-item"][data-ui-tree-item-state~="disabled"] .row[data-v-
|
|
7752
|
+
[data-component~="ui-tree-item"][data-ui-tree-item-state~="disabled"] .row[data-v-12522ec8] {
|
|
7753
7753
|
opacity: 0.55;
|
|
7754
7754
|
}
|
|
7755
|
-
[data-component~="ui-tree-item"][data-dragging] .row[data-v-
|
|
7755
|
+
[data-component~="ui-tree-item"][data-dragging] .row[data-v-12522ec8] {
|
|
7756
7756
|
opacity: 0.42;
|
|
7757
7757
|
}
|
|
7758
|
-
[data-component~="ui-tree-item"][data-v-
|
|
7758
|
+
[data-component~="ui-tree-item"][data-v-12522ec8]:focus {
|
|
7759
7759
|
outline: none;
|
|
7760
7760
|
}
|
|
7761
|
-
[data-component~="ui-tree-item"]:focus-visible .row[data-v-
|
|
7761
|
+
[data-component~="ui-tree-item"]:focus-visible .row[data-v-12522ec8] {
|
|
7762
7762
|
box-shadow: 0 0 0 2px var(--ui-focus-ring);
|
|
7763
7763
|
}
|
|
7764
7764
|
|
|
7765
7765
|
/* Child combinators: drop feedback belongs to this item's own row, not the rows nested in it. */
|
|
7766
|
-
[data-component~="ui-tree-item"][data-drop-position="inside"] > .row[data-v-
|
|
7766
|
+
[data-component~="ui-tree-item"][data-drop-position="inside"] > .row[data-v-12522ec8] {
|
|
7767
7767
|
background: var(--ui-accent-subtle);
|
|
7768
7768
|
box-shadow: inset 0 0 0 1px var(--_ui-tree-drop-color, var(--ui-accent-solid));
|
|
7769
7769
|
}
|
|
7770
|
-
.disclosure[data-v-
|
|
7771
|
-
.disclosure-spacer[data-v-
|
|
7770
|
+
.disclosure[data-v-12522ec8],
|
|
7771
|
+
.disclosure-spacer[data-v-12522ec8] {
|
|
7772
7772
|
grid-column: 1;
|
|
7773
7773
|
grid-row: 1;
|
|
7774
7774
|
inline-size: var(--_tree-disclosure-size);
|
|
7775
7775
|
block-size: 28px;
|
|
7776
7776
|
}
|
|
7777
|
-
.disclosure[data-v-
|
|
7777
|
+
.disclosure[data-v-12522ec8] {
|
|
7778
7778
|
display: grid;
|
|
7779
7779
|
/* Start-aligned: the chevron's ink, not its hit area, aligns with the content above it. */
|
|
7780
7780
|
place-items: center start;
|
|
@@ -7785,10 +7785,10 @@ to {
|
|
|
7785
7785
|
border-radius: var(--ui-radius-sm);
|
|
7786
7786
|
cursor: pointer;
|
|
7787
7787
|
}
|
|
7788
|
-
.disclosure[hidden][data-v-
|
|
7788
|
+
.disclosure[hidden][data-v-12522ec8] {
|
|
7789
7789
|
display: none;
|
|
7790
7790
|
}
|
|
7791
|
-
.selection-hit[data-v-
|
|
7791
|
+
.selection-hit[data-v-12522ec8] {
|
|
7792
7792
|
display: none;
|
|
7793
7793
|
grid-column: 2;
|
|
7794
7794
|
grid-row: 1;
|
|
@@ -7797,29 +7797,29 @@ to {
|
|
|
7797
7797
|
block-size: var(--_ui-tree-item-min-block-size, var(--_tree-row-min-height));
|
|
7798
7798
|
cursor: pointer;
|
|
7799
7799
|
}
|
|
7800
|
-
.selection-checkbox[data-v-
|
|
7800
|
+
.selection-checkbox[data-v-12522ec8] {
|
|
7801
7801
|
inline-size: 1rem;
|
|
7802
7802
|
block-size: 1rem;
|
|
7803
7803
|
margin: 0;
|
|
7804
7804
|
accent-color: var(--ui-accent-solid);
|
|
7805
7805
|
}
|
|
7806
|
-
[data-component~="ui-tree-item"][data-selection-mode="multiple"] > .row[data-v-
|
|
7806
|
+
[data-component~="ui-tree-item"][data-selection-mode="multiple"] > .row[data-v-12522ec8] {
|
|
7807
7807
|
grid-template-columns: var(--_tree-disclosure-size) 1.25rem auto minmax(0, 1fr);
|
|
7808
7808
|
}
|
|
7809
|
-
[data-component~="ui-tree-item"][data-selection-mode="multiple"] > .row > .selection-hit[data-v-
|
|
7809
|
+
[data-component~="ui-tree-item"][data-selection-mode="multiple"] > .row > .selection-hit[data-v-12522ec8] {
|
|
7810
7810
|
display: grid;
|
|
7811
7811
|
}
|
|
7812
|
-
[data-component~="ui-tree-item"][data-selection-mode="multiple"] > .row > .leading[data-v-
|
|
7812
|
+
[data-component~="ui-tree-item"][data-selection-mode="multiple"] > .row > .leading[data-v-12522ec8] {
|
|
7813
7813
|
grid-column: 3;
|
|
7814
7814
|
}
|
|
7815
|
-
[data-component~="ui-tree-item"][data-selection-mode="multiple"] > .row > .label[data-v-
|
|
7815
|
+
[data-component~="ui-tree-item"][data-selection-mode="multiple"] > .row > .label[data-v-12522ec8] {
|
|
7816
7816
|
grid-column: 4;
|
|
7817
7817
|
}
|
|
7818
|
-
.disclosure[data-v-
|
|
7818
|
+
.disclosure[data-v-12522ec8]:hover {
|
|
7819
7819
|
color: var(--ui-text-primary);
|
|
7820
7820
|
background: var(--ui-surface-elevated);
|
|
7821
7821
|
}
|
|
7822
|
-
.disclosure-icon[data-v-
|
|
7822
|
+
.disclosure-icon[data-v-12522ec8] {
|
|
7823
7823
|
display: grid;
|
|
7824
7824
|
place-items: center;
|
|
7825
7825
|
inline-size: 12px;
|
|
@@ -7827,7 +7827,7 @@ to {
|
|
|
7827
7827
|
transform: rotate(-90deg);
|
|
7828
7828
|
transition: transform var(--ui-motion-fast) var(--ui-motion-ease);
|
|
7829
7829
|
}
|
|
7830
|
-
.disclosure-icon[data-v-
|
|
7830
|
+
.disclosure-icon[data-v-12522ec8]::before {
|
|
7831
7831
|
display: block;
|
|
7832
7832
|
inline-size: 0.375rem;
|
|
7833
7833
|
block-size: 0.375rem;
|
|
@@ -7837,19 +7837,19 @@ to {
|
|
|
7837
7837
|
/* A chevron's ink sits below its box centre; lift it so it centres optically (in either rotation). */
|
|
7838
7838
|
transform: translateY(-20%) rotate(45deg);
|
|
7839
7839
|
}
|
|
7840
|
-
[data-component~="ui-tree-item"][aria-expanded="true"] .disclosure-icon[data-v-
|
|
7840
|
+
[data-component~="ui-tree-item"][aria-expanded="true"] .disclosure-icon[data-v-12522ec8] {
|
|
7841
7841
|
transform: rotate(0deg);
|
|
7842
7842
|
}
|
|
7843
7843
|
|
|
7844
7844
|
/* Lucide grip-vertical, filling the handle as in Looma 0.2. */
|
|
7845
|
-
.drag-handle svg[data-v-
|
|
7845
|
+
.drag-handle svg[data-v-12522ec8] {
|
|
7846
7846
|
display: block;
|
|
7847
7847
|
inline-size: 100%;
|
|
7848
7848
|
block-size: 100%;
|
|
7849
7849
|
}
|
|
7850
7850
|
|
|
7851
7851
|
/* Slotted content is outside this scope, so :has() cannot see it; hide only a truly empty slot. */
|
|
7852
|
-
.leading[data-v-
|
|
7852
|
+
.leading[data-v-12522ec8] {
|
|
7853
7853
|
display: inline-grid;
|
|
7854
7854
|
place-items: center;
|
|
7855
7855
|
grid-column: 2;
|
|
@@ -7862,12 +7862,12 @@ to {
|
|
|
7862
7862
|
position: relative;
|
|
7863
7863
|
z-index: 1;
|
|
7864
7864
|
}
|
|
7865
|
-
.leading[data-v-
|
|
7865
|
+
.leading[data-v-12522ec8]:empty {
|
|
7866
7866
|
display: none;
|
|
7867
7867
|
}
|
|
7868
7868
|
|
|
7869
7869
|
/* Icons match the label's size (as in Knit's tree): an unsized SVG would otherwise render 300×150. */
|
|
7870
|
-
svg[data-v-
|
|
7870
|
+
svg[data-v-12522ec8-s],img[data-v-12522ec8-s] {
|
|
7871
7871
|
display: block;
|
|
7872
7872
|
inline-size: 1em;
|
|
7873
7873
|
block-size: 1em;
|
|
@@ -7876,7 +7876,7 @@ svg[data-v-ad0fbbba-s],img[data-v-ad0fbbba-s] {
|
|
|
7876
7876
|
|
|
7877
7877
|
/* The label spans the row's height and centres its content, so slotted content (a link) can
|
|
7878
7878
|
stretch to fill the row as its own hit area; the padding tokens remove the inset. */
|
|
7879
|
-
.label[data-v-
|
|
7879
|
+
.label[data-v-12522ec8] {
|
|
7880
7880
|
grid-column: 3;
|
|
7881
7881
|
grid-row: 1;
|
|
7882
7882
|
align-self: stretch;
|
|
@@ -7894,7 +7894,7 @@ svg[data-v-ad0fbbba-s],img[data-v-ad0fbbba-s] {
|
|
|
7894
7894
|
|
|
7895
7895
|
/* Slotted label content fills the cell, so a link is the row's hit area rather than sizing to
|
|
7896
7896
|
its own text and reading as overflow. */
|
|
7897
|
-
.label-text[data-v-
|
|
7897
|
+
.label-text[data-v-12522ec8] {
|
|
7898
7898
|
display: flex;
|
|
7899
7899
|
align-items: center;
|
|
7900
7900
|
/* Stretches, so slotted content can still be the row's full-height hit area. */
|
|
@@ -7904,15 +7904,15 @@ svg[data-v-ad0fbbba-s],img[data-v-ad0fbbba-s] {
|
|
|
7904
7904
|
inline-size: 100%;
|
|
7905
7905
|
white-space: nowrap;
|
|
7906
7906
|
}
|
|
7907
|
-
.label-text > [data-v-
|
|
7907
|
+
.label-text > [data-v-12522ec8-s] {
|
|
7908
7908
|
flex: 1 1 auto;
|
|
7909
7909
|
min-inline-size: 0;
|
|
7910
7910
|
}
|
|
7911
7911
|
|
|
7912
7912
|
/* The controls sit over the label's end, so the text fades out where they begin. The fade is
|
|
7913
7913
|
the truncation mark while it shows: an ellipsis under it would read as a second one. */
|
|
7914
|
-
.row:hover > .label[data-v-
|
|
7915
|
-
.row:focus-within > .label[data-v-
|
|
7914
|
+
.row:hover > .label[data-v-12522ec8],
|
|
7915
|
+
.row:focus-within > .label[data-v-12522ec8] {
|
|
7916
7916
|
text-overflow: clip;
|
|
7917
7917
|
mask-image: linear-gradient(
|
|
7918
7918
|
to right,
|
|
@@ -7920,8 +7920,8 @@ svg[data-v-ad0fbbba-s],img[data-v-ad0fbbba-s] {
|
|
|
7920
7920
|
transparent calc(100% - var(--_tree-actions-width, 1.75rem))
|
|
7921
7921
|
);
|
|
7922
7922
|
}
|
|
7923
|
-
.row:hover > .label[data-v-
|
|
7924
|
-
.row:focus-within > .label[data-v-
|
|
7923
|
+
.row:hover > .label[data-v-12522ec8]:dir(rtl),
|
|
7924
|
+
.row:focus-within > .label[data-v-12522ec8]:dir(rtl) {
|
|
7925
7925
|
mask-image: linear-gradient(
|
|
7926
7926
|
to left,
|
|
7927
7927
|
#000 calc(100% - var(--_tree-actions-width, 1.75rem) - var(--ui-space-3)),
|
|
@@ -7929,29 +7929,29 @@ svg[data-v-ad0fbbba-s],img[data-v-ad0fbbba-s] {
|
|
|
7929
7929
|
);
|
|
7930
7930
|
}
|
|
7931
7931
|
|
|
7932
|
-
/* A hovered row reads its whole name: the label slides far enough to show the end,
|
|
7933
|
-
there, and
|
|
7932
|
+
/* A hovered row reads its whole name: the label slides far enough to show the end, rests
|
|
7933
|
+
there, and starts again. Only when it actually overflows — the controller measures by how
|
|
7934
7934
|
much — after the controls have taken their place over its end — and hands over the distance
|
|
7935
7935
|
and a duration from it, so every name moves at the same speed. */
|
|
7936
|
-
.row[data-ui-marquee] > .label > .label-text[data-v-
|
|
7937
|
-
/* Once
|
|
7938
|
-
|
|
7939
|
-
animation: ui-tree-item-marquee-
|
|
7936
|
+
.row[data-ui-marquee] > .label > .label-text[data-v-12522ec8] {
|
|
7937
|
+
/* Once per pass: the controller restarts it after a rest at the end, so the name holds still
|
|
7938
|
+
long enough to read rather than sliding back and forth. */
|
|
7939
|
+
animation: ui-tree-item-marquee-12522ec8 var(--_marquee-duration) linear 0.5s 1 normal forwards;
|
|
7940
7940
|
will-change: transform;
|
|
7941
7941
|
}
|
|
7942
7942
|
|
|
7943
7943
|
/* This comes after the hover fade, which it replaces at the same specificity. While the name
|
|
7944
7944
|
slides, the label reaches back under the icon (the controller measures how far) with its text
|
|
7945
|
-
where it was, and fades out across
|
|
7946
|
-
under the icon rather than stopping at a hard edge beside it. */
|
|
7947
|
-
.row[data-ui-marquee] > .label[data-v-
|
|
7945
|
+
where it was, and fades out across the gap before the icon, fully gone where the icon begins
|
|
7946
|
+
to cover it: the name slips under the icon rather than stopping at a hard edge beside it. */
|
|
7947
|
+
.row[data-ui-marquee] > .label[data-v-12522ec8] {
|
|
7948
7948
|
margin-inline-start: calc(-1 * var(--_marquee-lead, 0px));
|
|
7949
7949
|
padding-inline-start: calc(
|
|
7950
7950
|
var(--_marquee-lead, 0px) + var(--_ui-tree-item-label-padding-inline, var(--ui-space-2))
|
|
7951
7951
|
);
|
|
7952
7952
|
mask-image: linear-gradient(
|
|
7953
7953
|
to right,
|
|
7954
|
-
transparent
|
|
7954
|
+
transparent var(--_marquee-icon-width, 0px),
|
|
7955
7955
|
#000 calc(
|
|
7956
7956
|
var(--_marquee-lead, 0px) + var(--_ui-tree-item-label-padding-inline, var(--ui-space-2))
|
|
7957
7957
|
),
|
|
@@ -7959,10 +7959,10 @@ svg[data-v-ad0fbbba-s],img[data-v-ad0fbbba-s] {
|
|
|
7959
7959
|
transparent calc(100% - var(--_tree-actions-width, 1.75rem))
|
|
7960
7960
|
);
|
|
7961
7961
|
}
|
|
7962
|
-
.row[data-ui-marquee] > .label[data-v-
|
|
7962
|
+
.row[data-ui-marquee] > .label[data-v-12522ec8]:dir(rtl) {
|
|
7963
7963
|
mask-image: linear-gradient(
|
|
7964
7964
|
to left,
|
|
7965
|
-
transparent
|
|
7965
|
+
transparent var(--_marquee-icon-width, 0px),
|
|
7966
7966
|
#000 calc(
|
|
7967
7967
|
var(--_marquee-lead, 0px) + var(--_ui-tree-item-label-padding-inline, var(--ui-space-2))
|
|
7968
7968
|
),
|
|
@@ -7970,7 +7970,7 @@ svg[data-v-ad0fbbba-s],img[data-v-ad0fbbba-s] {
|
|
|
7970
7970
|
transparent calc(100% - var(--_tree-actions-width, 1.75rem))
|
|
7971
7971
|
);
|
|
7972
7972
|
}
|
|
7973
|
-
@keyframes ui-tree-item-marquee-
|
|
7973
|
+
@keyframes ui-tree-item-marquee-12522ec8 {
|
|
7974
7974
|
from {
|
|
7975
7975
|
transform: translateX(0);
|
|
7976
7976
|
}
|
|
@@ -7981,15 +7981,15 @@ to {
|
|
|
7981
7981
|
|
|
7982
7982
|
/* Reduced motion keeps the fade, which already says the name continues. */
|
|
7983
7983
|
@media (prefers-reduced-motion: reduce) {
|
|
7984
|
-
.row[data-ui-marquee] > .label > .label-text[data-v-
|
|
7984
|
+
.row[data-ui-marquee] > .label > .label-text[data-v-12522ec8] {
|
|
7985
7985
|
animation: none;
|
|
7986
7986
|
}
|
|
7987
7987
|
}
|
|
7988
|
-
.row:hover > .label > [data-v-
|
|
7989
|
-
.row:focus-within > .label > [data-v-
|
|
7988
|
+
.row:hover > .label > [data-v-12522ec8-s],
|
|
7989
|
+
.row:focus-within > .label > [data-v-12522ec8-s] {
|
|
7990
7990
|
text-overflow: clip;
|
|
7991
7991
|
}
|
|
7992
|
-
.actions[data-v-
|
|
7992
|
+
.actions[data-v-12522ec8] {
|
|
7993
7993
|
position: absolute;
|
|
7994
7994
|
z-index: 1;
|
|
7995
7995
|
inset-block: 0;
|
|
@@ -8001,18 +8001,18 @@ to {
|
|
|
8001
8001
|
pointer-events: none;
|
|
8002
8002
|
transition: opacity var(--ui-motion-fast) var(--ui-motion-ease);
|
|
8003
8003
|
}
|
|
8004
|
-
.row:hover > .actions[data-v-
|
|
8005
|
-
.row:focus-within > .actions[data-v-
|
|
8004
|
+
.row:hover > .actions[data-v-12522ec8],
|
|
8005
|
+
.row:focus-within > .actions[data-v-12522ec8] {
|
|
8006
8006
|
opacity: 1;
|
|
8007
8007
|
pointer-events: auto;
|
|
8008
8008
|
}
|
|
8009
8009
|
|
|
8010
8010
|
/* Without hover there is no reveal, so the controls keep their own column. */
|
|
8011
8011
|
@media (hover: none) {
|
|
8012
|
-
.row[data-v-
|
|
8012
|
+
.row[data-v-12522ec8] {
|
|
8013
8013
|
grid-template-columns: var(--_tree-disclosure-size) auto minmax(0, 1fr) auto;
|
|
8014
8014
|
}
|
|
8015
|
-
.actions[data-v-
|
|
8015
|
+
.actions[data-v-12522ec8] {
|
|
8016
8016
|
position: static;
|
|
8017
8017
|
grid-column: 4;
|
|
8018
8018
|
grid-row: 1;
|
|
@@ -8027,7 +8027,7 @@ to {
|
|
|
8027
8027
|
empty column, right before the icon; a branch's disclosure is there, so its handle sits just
|
|
8028
8028
|
outside the row. It is bare until pointed at: a resting surface behind it read as a faint
|
|
8029
8029
|
patch rather than as a control. */
|
|
8030
|
-
.drag-handle[data-v-
|
|
8030
|
+
.drag-handle[data-v-12522ec8] {
|
|
8031
8031
|
position: absolute;
|
|
8032
8032
|
z-index: 2;
|
|
8033
8033
|
inset-block-start: 50%;
|
|
@@ -8048,24 +8048,24 @@ to {
|
|
|
8048
8048
|
transform: translateY(-50%);
|
|
8049
8049
|
transition: opacity var(--ui-motion-fast) var(--ui-motion-ease);
|
|
8050
8050
|
}
|
|
8051
|
-
.row:hover .drag-handle[data-v-
|
|
8052
|
-
.drag-handle[data-v-
|
|
8053
|
-
.drag-handle[data-v-
|
|
8054
|
-
[data-component~="ui-tree-item"][data-dragging] > .row > .drag-handle[data-v-
|
|
8051
|
+
.row:hover .drag-handle[data-v-12522ec8],
|
|
8052
|
+
.drag-handle[data-v-12522ec8]:hover,
|
|
8053
|
+
.drag-handle[data-v-12522ec8]:focus-visible,
|
|
8054
|
+
[data-component~="ui-tree-item"][data-dragging] > .row > .drag-handle[data-v-12522ec8] {
|
|
8055
8055
|
opacity: 1;
|
|
8056
8056
|
}
|
|
8057
|
-
[data-component~="ui-tree-item"][data-ui-tree-item-state~="isContainer"] > .row > .drag-handle[data-v-
|
|
8057
|
+
[data-component~="ui-tree-item"][data-ui-tree-item-state~="isContainer"] > .row > .drag-handle[data-v-12522ec8] {
|
|
8058
8058
|
inset-inline-start: calc(-1 * var(--_tree-disclosure-size) - 2px);
|
|
8059
8059
|
}
|
|
8060
|
-
.drag-handle[data-v-
|
|
8061
|
-
.drag-handle[data-v-
|
|
8060
|
+
.drag-handle[data-v-12522ec8]:hover,
|
|
8061
|
+
.drag-handle[data-v-12522ec8]:focus-visible {
|
|
8062
8062
|
color: var(--ui-text-primary);
|
|
8063
8063
|
background: var(--ui-surface-hover);
|
|
8064
8064
|
}
|
|
8065
|
-
.drag-handle[data-v-
|
|
8065
|
+
.drag-handle[data-v-12522ec8]:active {
|
|
8066
8066
|
cursor: grabbing;
|
|
8067
8067
|
}
|
|
8068
|
-
.drop-indicator[data-v-
|
|
8068
|
+
.drop-indicator[data-v-12522ec8] {
|
|
8069
8069
|
position: absolute;
|
|
8070
8070
|
z-index: 3;
|
|
8071
8071
|
inset-inline: 1px;
|
|
@@ -8075,8 +8075,8 @@ to {
|
|
|
8075
8075
|
background: var(--_ui-tree-drop-color, var(--ui-accent-solid));
|
|
8076
8076
|
pointer-events: none;
|
|
8077
8077
|
}
|
|
8078
|
-
.drop-indicator[data-v-
|
|
8079
|
-
.drop-indicator[data-v-
|
|
8078
|
+
.drop-indicator[data-v-12522ec8]::before,
|
|
8079
|
+
.drop-indicator[data-v-12522ec8]::after {
|
|
8080
8080
|
content: "";
|
|
8081
8081
|
position: absolute;
|
|
8082
8082
|
inset-block-start: 50%;
|
|
@@ -8087,34 +8087,34 @@ to {
|
|
|
8087
8087
|
background: var(--ui-surface-elevated);
|
|
8088
8088
|
transform: translateY(-50%);
|
|
8089
8089
|
}
|
|
8090
|
-
.drop-indicator[data-v-
|
|
8090
|
+
.drop-indicator[data-v-12522ec8]::before {
|
|
8091
8091
|
inset-inline-start: -1px;
|
|
8092
8092
|
}
|
|
8093
|
-
.drop-indicator[data-v-
|
|
8093
|
+
.drop-indicator[data-v-12522ec8]::after {
|
|
8094
8094
|
inset-inline-end: -1px;
|
|
8095
8095
|
}
|
|
8096
|
-
[data-component~="ui-tree-item"][data-drop-position="before"] > .row > .row-drop-indicator[data-v-
|
|
8096
|
+
[data-component~="ui-tree-item"][data-drop-position="before"] > .row > .row-drop-indicator[data-v-12522ec8] {
|
|
8097
8097
|
display: block;
|
|
8098
8098
|
inset-block-start: -1px;
|
|
8099
8099
|
}
|
|
8100
|
-
[data-component~="ui-tree-item"][data-drop-position="after"] > .subtree-drop-indicator[data-v-
|
|
8100
|
+
[data-component~="ui-tree-item"][data-drop-position="after"] > .subtree-drop-indicator[data-v-12522ec8] {
|
|
8101
8101
|
display: block;
|
|
8102
8102
|
inset-block-end: -1px;
|
|
8103
8103
|
}
|
|
8104
|
-
.children[hidden][data-v-
|
|
8104
|
+
.children[hidden][data-v-12522ec8] {
|
|
8105
8105
|
display: none;
|
|
8106
8106
|
}
|
|
8107
|
-
html[data-ui-input-modality="touch"] [data-component~="ui-tree-item"][data-v-
|
|
8107
|
+
html[data-ui-input-modality="touch"] [data-component~="ui-tree-item"][data-v-12522ec8] {
|
|
8108
8108
|
--_tree-row-min-height: 44px;
|
|
8109
8109
|
}
|
|
8110
|
-
html[data-ui-input-modality="touch"] [data-component~="ui-tree-item"] .row[data-v-
|
|
8110
|
+
html[data-ui-input-modality="touch"] [data-component~="ui-tree-item"] .row[data-v-12522ec8] {
|
|
8111
8111
|
grid-template-columns: 44px var(--_tree-disclosure-size) auto minmax(0, 1fr);
|
|
8112
8112
|
}
|
|
8113
|
-
html[data-ui-input-modality="touch"] [data-component~="ui-tree-item"] .drag-handle[data-v-
|
|
8113
|
+
html[data-ui-input-modality="touch"] [data-component~="ui-tree-item"] .drag-handle[data-v-12522ec8],
|
|
8114
8114
|
html[data-ui-input-modality="touch"]
|
|
8115
8115
|
[data-component~="ui-tree-item"][data-ui-tree-item-state~="isContainer"]
|
|
8116
8116
|
> .row
|
|
8117
|
-
> .drag-handle[data-v-
|
|
8117
|
+
> .drag-handle[data-v-12522ec8] {
|
|
8118
8118
|
position: relative;
|
|
8119
8119
|
grid-column: 1;
|
|
8120
8120
|
grid-row: 1;
|
|
@@ -8126,24 +8126,24 @@ html[data-ui-input-modality="touch"]
|
|
|
8126
8126
|
transform: none;
|
|
8127
8127
|
cursor: pointer;
|
|
8128
8128
|
}
|
|
8129
|
-
html[data-ui-input-modality="touch"] [data-component~="ui-tree-item"] .disclosure[data-v-
|
|
8129
|
+
html[data-ui-input-modality="touch"] [data-component~="ui-tree-item"] .disclosure[data-v-12522ec8] {
|
|
8130
8130
|
grid-column: 2;
|
|
8131
8131
|
}
|
|
8132
|
-
html[data-ui-input-modality="touch"] [data-component~="ui-tree-item"] .leading[data-v-
|
|
8132
|
+
html[data-ui-input-modality="touch"] [data-component~="ui-tree-item"] .leading[data-v-12522ec8] {
|
|
8133
8133
|
grid-column: 3;
|
|
8134
8134
|
}
|
|
8135
|
-
html[data-ui-input-modality="touch"] [data-component~="ui-tree-item"] .label[data-v-
|
|
8135
|
+
html[data-ui-input-modality="touch"] [data-component~="ui-tree-item"] .label[data-v-12522ec8] {
|
|
8136
8136
|
grid-column: 4;
|
|
8137
8137
|
}
|
|
8138
8138
|
html[data-ui-input-modality="touch"]
|
|
8139
8139
|
[data-component~="ui-tree-item"][data-selection-mode="multiple"]
|
|
8140
|
-
> .row[data-v-
|
|
8140
|
+
> .row[data-v-12522ec8] {
|
|
8141
8141
|
grid-template-columns: 44px var(--_tree-disclosure-size) 44px auto minmax(0, 1fr);
|
|
8142
8142
|
}
|
|
8143
8143
|
html[data-ui-input-modality="touch"]
|
|
8144
8144
|
[data-component~="ui-tree-item"][data-selection-mode="multiple"]
|
|
8145
8145
|
> .row
|
|
8146
|
-
> .selection-hit[data-v-
|
|
8146
|
+
> .selection-hit[data-v-12522ec8] {
|
|
8147
8147
|
grid-column: 3;
|
|
8148
8148
|
inline-size: 44px;
|
|
8149
8149
|
block-size: 44px;
|
|
@@ -8151,25 +8151,25 @@ html[data-ui-input-modality="touch"]
|
|
|
8151
8151
|
html[data-ui-input-modality="touch"]
|
|
8152
8152
|
[data-component~="ui-tree-item"][data-selection-mode="multiple"]
|
|
8153
8153
|
> .row
|
|
8154
|
-
> .leading[data-v-
|
|
8154
|
+
> .leading[data-v-12522ec8] {
|
|
8155
8155
|
grid-column: 4;
|
|
8156
8156
|
}
|
|
8157
8157
|
html[data-ui-input-modality="touch"]
|
|
8158
8158
|
[data-component~="ui-tree-item"][data-selection-mode="multiple"]
|
|
8159
8159
|
> .row
|
|
8160
|
-
> .label[data-v-
|
|
8160
|
+
> .label[data-v-12522ec8] {
|
|
8161
8161
|
grid-column: 5;
|
|
8162
8162
|
}
|
|
8163
8163
|
@media (prefers-reduced-motion: reduce) {
|
|
8164
|
-
.row[data-v-
|
|
8165
|
-
.disclosure-icon[data-v-
|
|
8166
|
-
.drag-handle[data-v-
|
|
8164
|
+
.row[data-v-12522ec8],
|
|
8165
|
+
.disclosure-icon[data-v-12522ec8],
|
|
8166
|
+
.drag-handle[data-v-12522ec8] {
|
|
8167
8167
|
transition: none;
|
|
8168
8168
|
}
|
|
8169
8169
|
}
|
|
8170
8170
|
|
|
8171
8171
|
/* A component that sets its display still honours the hidden attribute on its root. */
|
|
8172
|
-
[data-component~="ui-tree-item"][hidden][data-v-
|
|
8172
|
+
[data-component~="ui-tree-item"][hidden][data-v-12522ec8] {
|
|
8173
8173
|
display: none;
|
|
8174
8174
|
}
|
|
8175
8175
|
/**
|