@threadlabs/looma 0.28.5 → 0.28.6
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-editor-mention-menu-item/ui-editor-mention-menu-item.html +3 -2
- package/dist/index.js +1 -1
- package/package.json +3 -2
- package/styles/ui-action-bar.css +13 -6
- package/styles/ui-affordance-scope.css +12 -5
- package/styles/ui-avatar-group.css +17 -10
- package/styles/ui-avatar.css +23 -16
- package/styles/ui-badge.css +78 -71
- package/styles/ui-breadcrumb-item.css +12 -5
- package/styles/ui-breadcrumbs.css +10 -3
- package/styles/ui-button.css +79 -72
- package/styles/ui-callout.css +29 -22
- package/styles/ui-card.css +25 -18
- package/styles/ui-checkbox.css +45 -37
- package/styles/ui-cluster.css +34 -27
- package/styles/ui-combobox.css +46 -39
- package/styles/ui-container.css +20 -13
- package/styles/ui-context-menu.css +17 -10
- package/styles/ui-cover.css +12 -5
- package/styles/ui-description-item.css +10 -3
- package/styles/ui-description-list.css +20 -13
- package/styles/ui-dialog.css +44 -35
- package/styles/ui-disclosure.css +32 -25
- package/styles/ui-editable.css +15 -8
- package/styles/ui-editor-image-toolbar.css +1 -1
- package/styles/ui-editor-insert-table-grid.css +11 -4
- package/styles/ui-editor-mention-menu-item.css +17 -8
- package/styles/ui-editor-mention-menu.css +14 -7
- package/styles/ui-editor-slash-menu-group.css +10 -3
- package/styles/ui-editor-slash-menu-item.css +15 -8
- package/styles/ui-editor-slash-menu.css +15 -8
- package/styles/ui-editor-surface.css +10 -3
- package/styles/ui-editor-table-context-menu.css +17 -10
- package/styles/ui-editor-table-overlay.css +17 -10
- package/styles/ui-editor-table-toolbar.css +22 -15
- package/styles/ui-editor-toolbar.css +18 -11
- package/styles/ui-floating-action-button.css +21 -14
- package/styles/ui-form-field.css +20 -13
- package/styles/ui-grid.css +21 -14
- package/styles/ui-icon-button.css +80 -73
- package/styles/ui-icon.css +14 -7
- package/styles/ui-image.css +25 -18
- package/styles/ui-input-group.css +34 -27
- package/styles/ui-input.css +42 -35
- package/styles/ui-list-item.css +33 -26
- package/styles/ui-list.css +22 -15
- package/styles/ui-listbox.css +22 -14
- package/styles/ui-menu-group.css +10 -3
- package/styles/ui-menu-item.css +29 -22
- package/styles/ui-menu.css +25 -18
- package/styles/ui-meter.css +36 -29
- package/styles/ui-nav-item.css +26 -19
- package/styles/ui-page-header.css +12 -5
- package/styles/ui-popover.css +27 -20
- package/styles/ui-radio-group.css +14 -6
- package/styles/ui-radio.css +24 -17
- package/styles/ui-reel.css +28 -21
- package/styles/ui-scroll-area.css +22 -15
- package/styles/ui-search-result-row.css +28 -21
- package/styles/ui-search-shell.css +24 -17
- package/styles/ui-section.css +14 -7
- package/styles/ui-select.css +33 -26
- package/styles/ui-separator.css +17 -10
- package/styles/ui-sidebar.css +35 -28
- package/styles/ui-spinner.css +32 -23
- package/styles/ui-stack.css +29 -21
- package/styles/ui-status-message.css +14 -7
- package/styles/ui-switch.css +29 -22
- package/styles/ui-switcher.css +27 -20
- package/styles/ui-table.css +14 -7
- package/styles/ui-tabs.css +24 -17
- package/styles/ui-text.css +35 -28
- package/styles/ui-textarea.css +37 -30
- package/styles/ui-toast-region.css +74 -63
- package/styles/ui-toast.css +21 -14
- package/styles/ui-tooltip.css +38 -31
- package/styles/ui-top-bar.css +19 -12
- package/styles/ui-tree-item.css +79 -71
- package/styles/ui-tree.css +18 -11
- package/vanilla/UiActionBar.d.ts +1 -1
- package/vanilla/UiActionBar.js +1 -1
- package/vanilla/UiAffordanceScope.d.ts +1 -1
- package/vanilla/UiAffordanceScope.js +1 -1
- package/vanilla/UiAvatar.d.ts +1 -1
- package/vanilla/UiAvatar.js +1 -1
- package/vanilla/UiAvatarGroup.d.ts +1 -1
- package/vanilla/UiAvatarGroup.js +1 -1
- package/vanilla/UiBadge.d.ts +1 -1
- package/vanilla/UiBadge.js +1 -1
- package/vanilla/UiBreadcrumbItem.d.ts +1 -1
- package/vanilla/UiBreadcrumbItem.js +1 -1
- package/vanilla/UiBreadcrumbs.d.ts +1 -1
- package/vanilla/UiBreadcrumbs.js +1 -1
- package/vanilla/UiButton.d.ts +1 -1
- package/vanilla/UiButton.js +19 -57
- package/vanilla/UiCallout.d.ts +1 -1
- package/vanilla/UiCallout.js +25 -73
- package/vanilla/UiCard.d.ts +1 -1
- package/vanilla/UiCard.js +1 -1
- package/vanilla/UiCheckbox.d.ts +1 -1
- package/vanilla/UiCheckbox.js +1 -1
- package/vanilla/UiCluster.d.ts +1 -1
- package/vanilla/UiCluster.js +1 -1
- package/vanilla/UiCombobox.d.ts +1 -1
- package/vanilla/UiCombobox.js +60 -166
- package/vanilla/UiContainer.d.ts +1 -1
- package/vanilla/UiContainer.js +1 -1
- package/vanilla/UiContextMenu.d.ts +1 -1
- package/vanilla/UiContextMenu.js +1 -1
- package/vanilla/UiCover.d.ts +1 -1
- package/vanilla/UiCover.js +1 -1
- package/vanilla/UiDescriptionItem.d.ts +1 -1
- package/vanilla/UiDescriptionItem.js +1 -1
- package/vanilla/UiDescriptionList.d.ts +1 -1
- package/vanilla/UiDescriptionList.js +1 -1
- package/vanilla/UiDialog.d.ts +1 -1
- package/vanilla/UiDialog.js +4 -10
- package/vanilla/UiDisclosure.d.ts +1 -1
- package/vanilla/UiDisclosure.js +1 -1
- package/vanilla/UiEditable.d.ts +1 -1
- package/vanilla/UiEditable.js +7 -19
- package/vanilla/UiEditorImageToolbar.d.ts +1 -1
- package/vanilla/UiEditorImageToolbar.js +1 -1
- package/vanilla/UiEditorInsertTableGrid.d.ts +1 -1
- package/vanilla/UiEditorInsertTableGrid.js +1 -1
- package/vanilla/UiEditorMentionMenu.d.ts +1 -1
- package/vanilla/UiEditorMentionMenu.js +17 -37
- package/vanilla/UiEditorMentionMenuItem.d.ts +1 -1
- package/vanilla/UiEditorMentionMenuItem.js +4 -10
- package/vanilla/UiEditorSlashMenu.d.ts +1 -1
- package/vanilla/UiEditorSlashMenu.js +5 -4
- package/vanilla/UiEditorSlashMenuGroup.d.ts +1 -1
- package/vanilla/UiEditorSlashMenuGroup.js +1 -1
- package/vanilla/UiEditorSlashMenuItem.d.ts +1 -1
- package/vanilla/UiEditorSlashMenuItem.js +7 -19
- package/vanilla/UiEditorSurface.d.ts +1 -1
- package/vanilla/UiEditorSurface.js +1 -1
- package/vanilla/UiEditorTableContextMenu.d.ts +1 -1
- package/vanilla/UiEditorTableContextMenu.js +6 -14
- package/vanilla/UiEditorTableOverlay.d.ts +1 -1
- package/vanilla/UiEditorTableOverlay.js +9 -25
- package/vanilla/UiEditorTableToolbar.d.ts +1 -1
- package/vanilla/UiEditorTableToolbar.js +25 -77
- package/vanilla/UiEditorToolbar.d.ts +1 -1
- package/vanilla/UiEditorToolbar.js +1 -1
- package/vanilla/UiFloatingActionButton.d.ts +1 -1
- package/vanilla/UiFloatingActionButton.js +1 -1
- package/vanilla/UiFormField.d.ts +1 -1
- package/vanilla/UiFormField.js +1 -1
- package/vanilla/UiGrid.d.ts +1 -1
- package/vanilla/UiGrid.js +1 -1
- package/vanilla/UiIcon.d.ts +1 -1
- package/vanilla/UiIcon.js +15 -47
- package/vanilla/UiIconButton.d.ts +1 -1
- package/vanilla/UiIconButton.js +4 -10
- package/vanilla/UiImage.d.ts +1 -1
- package/vanilla/UiImage.js +1 -1
- package/vanilla/UiInput.d.ts +1 -1
- package/vanilla/UiInput.js +1 -1
- package/vanilla/UiInputGroup.d.ts +1 -1
- package/vanilla/UiInputGroup.js +1 -1
- package/vanilla/UiList.d.ts +1 -1
- package/vanilla/UiList.js +1 -1
- package/vanilla/UiListItem.d.ts +1 -1
- package/vanilla/UiListItem.js +1 -1
- package/vanilla/UiListbox.d.ts +1 -1
- package/vanilla/UiListbox.js +4 -10
- package/vanilla/UiMenu.d.ts +1 -1
- package/vanilla/UiMenu.js +1 -1
- package/vanilla/UiMenuGroup.d.ts +1 -1
- package/vanilla/UiMenuGroup.js +4 -10
- package/vanilla/UiMenuItem.d.ts +1 -1
- package/vanilla/UiMenuItem.js +4 -10
- package/vanilla/UiMeter.d.ts +1 -1
- package/vanilla/UiMeter.js +13 -33
- package/vanilla/UiNavItem.d.ts +1 -1
- package/vanilla/UiNavItem.js +1 -1
- package/vanilla/UiPageHeader.d.ts +1 -1
- package/vanilla/UiPageHeader.js +1 -1
- package/vanilla/UiPopover.d.ts +1 -1
- package/vanilla/UiPopover.js +1 -1
- package/vanilla/UiRadio.d.ts +1 -1
- package/vanilla/UiRadio.js +1 -1
- package/vanilla/UiRadioGroup.d.ts +1 -1
- package/vanilla/UiRadioGroup.js +1 -1
- package/vanilla/UiReel.d.ts +1 -1
- package/vanilla/UiReel.js +1 -1
- package/vanilla/UiScrollArea.d.ts +1 -1
- package/vanilla/UiScrollArea.js +1 -1
- package/vanilla/UiSearchResultRow.d.ts +1 -1
- package/vanilla/UiSearchResultRow.js +1 -1
- package/vanilla/UiSearchShell.d.ts +1 -1
- package/vanilla/UiSearchShell.js +1 -1
- package/vanilla/UiSection.d.ts +1 -1
- package/vanilla/UiSection.js +1 -1
- package/vanilla/UiSelect.d.ts +1 -1
- package/vanilla/UiSelect.js +1 -1
- package/vanilla/UiSeparator.d.ts +1 -1
- package/vanilla/UiSeparator.js +1 -1
- package/vanilla/UiSidebar.d.ts +1 -1
- package/vanilla/UiSidebar.js +1 -1
- package/vanilla/UiSpinner.d.ts +1 -1
- package/vanilla/UiSpinner.js +1 -1
- package/vanilla/UiStack.d.ts +1 -1
- package/vanilla/UiStack.js +1 -1
- package/vanilla/UiStatusMessage.d.ts +1 -1
- package/vanilla/UiStatusMessage.js +1 -1
- package/vanilla/UiSwitch.d.ts +1 -1
- package/vanilla/UiSwitch.js +1 -1
- package/vanilla/UiSwitcher.d.ts +1 -1
- package/vanilla/UiSwitcher.js +1 -1
- package/vanilla/UiTable.d.ts +1 -1
- package/vanilla/UiTable.js +1 -1
- package/vanilla/UiTabs.d.ts +1 -1
- package/vanilla/UiTabs.js +1 -1
- package/vanilla/UiText.d.ts +1 -1
- package/vanilla/UiText.js +1 -1
- package/vanilla/UiTextarea.d.ts +1 -1
- package/vanilla/UiTextarea.js +1 -1
- package/vanilla/UiToast.d.ts +1 -1
- package/vanilla/UiToast.js +1 -1
- package/vanilla/UiToastRegion.d.ts +1 -1
- package/vanilla/UiToastRegion.js +1 -1
- package/vanilla/UiTooltip.d.ts +1 -1
- package/vanilla/UiTooltip.js +1 -1
- package/vanilla/UiTopBar.d.ts +1 -1
- package/vanilla/UiTopBar.js +1 -1
- package/vanilla/UiTree.d.ts +1 -1
- package/vanilla/UiTree.js +1 -1
- package/vanilla/UiTreeItem.d.ts +1 -1
- package/vanilla/UiTreeItem.js +7 -19
- package/vue/UiActionBar.vue +46 -78
- package/vue/UiAffordanceScope.vue +27 -66
- package/vue/UiAvatar.d.ts +10 -7
- package/vue/UiAvatar.vue +100 -218
- package/vue/UiAvatarGroup.d.ts +10 -7
- package/vue/UiAvatarGroup.vue +78 -160
- package/vue/UiBadge.d.ts +1 -1
- package/vue/UiBadge.vue +483 -520
- package/vue/UiBreadcrumbItem.vue +52 -123
- package/vue/UiBreadcrumbs.vue +27 -70
- package/vue/UiButton.d.ts +2 -2
- package/vue/UiButton.vue +420 -471
- package/vue/UiCallout.vue +131 -175
- package/vue/UiCard.d.ts +1 -1
- package/vue/UiCard.vue +112 -151
- package/vue/UiCheckbox.d.ts +13 -10
- package/vue/UiCheckbox.vue +160 -221
- package/vue/UiCluster.d.ts +1 -1
- package/vue/UiCluster.vue +84 -128
- package/vue/UiCombobox.d.ts +71 -68
- package/vue/UiCombobox.vue +417 -743
- package/vue/UiContainer.vue +43 -87
- package/vue/UiContextMenu.d.ts +6 -6
- package/vue/UiContextMenu.vue +78 -117
- package/vue/UiCover.vue +29 -69
- package/vue/UiDescriptionItem.vue +39 -82
- package/vue/UiDescriptionList.vue +64 -107
- package/vue/UiDialog.d.ts +22 -19
- package/vue/UiDialog.vue +193 -246
- package/vue/UiDisclosure.d.ts +22 -19
- package/vue/UiDisclosure.vue +192 -283
- package/vue/UiEditable.d.ts +5 -5
- package/vue/UiEditable.vue +124 -207
- package/vue/UiEditorImageToolbar.d.ts +2 -2
- package/vue/UiEditorImageToolbar.vue +41 -251
- package/vue/UiEditorInsertTableGrid.d.ts +2 -2
- package/vue/UiEditorInsertTableGrid.vue +98 -266
- package/vue/UiEditorMentionMenu.d.ts +15 -12
- package/vue/UiEditorMentionMenu.vue +150 -239
- package/vue/UiEditorMentionMenuItem.vue +66 -110
- package/vue/UiEditorSlashMenu.d.ts +16 -13
- package/vue/UiEditorSlashMenu.vue +172 -253
- package/vue/UiEditorSlashMenuGroup.vue +25 -69
- package/vue/UiEditorSlashMenuItem.vue +67 -115
- package/vue/UiEditorSurface.vue +19 -63
- package/vue/UiEditorTableContextMenu.vue +135 -269
- package/vue/UiEditorTableOverlay.d.ts +2 -2
- package/vue/UiEditorTableOverlay.vue +310 -479
- package/vue/UiEditorTableToolbar.d.ts +2 -2
- package/vue/UiEditorTableToolbar.vue +182 -357
- package/vue/UiEditorToolbar.vue +143 -183
- package/vue/UiFloatingActionButton.vue +70 -114
- package/vue/UiFormField.d.ts +1 -1
- package/vue/UiFormField.vue +76 -117
- package/vue/UiGrid.d.ts +1 -1
- package/vue/UiGrid.vue +65 -103
- package/vue/UiIcon.vue +32 -106
- package/vue/UiIconButton.d.ts +2 -2
- package/vue/UiIconButton.vue +359 -411
- package/vue/UiImage.vue +145 -180
- package/vue/UiInput.vue +158 -190
- package/vue/UiInputGroup.vue +199 -239
- package/vue/UiList.vue +67 -109
- package/vue/UiListItem.vue +154 -201
- package/vue/UiListbox.d.ts +10 -7
- package/vue/UiListbox.vue +86 -260
- package/vue/UiMenu.d.ts +11 -11
- package/vue/UiMenu.vue +118 -152
- package/vue/UiMenuGroup.vue +21 -67
- package/vue/UiMenuItem.d.ts +19 -16
- package/vue/UiMenuItem.vue +169 -262
- package/vue/UiMeter.d.ts +4 -4
- package/vue/UiMeter.vue +166 -680
- package/vue/UiNavItem.vue +140 -213
- package/vue/UiPageHeader.vue +81 -127
- package/vue/UiPopover.d.ts +7 -7
- package/vue/UiPopover.vue +90 -129
- package/vue/UiRadio.d.ts +12 -9
- package/vue/UiRadio.vue +91 -149
- package/vue/UiRadioGroup.d.ts +2 -2
- package/vue/UiRadioGroup.vue +47 -85
- package/vue/UiReel.vue +89 -130
- package/vue/UiScrollArea.d.ts +1 -1
- package/vue/UiScrollArea.vue +78 -119
- package/vue/UiSearchResultRow.vue +96 -149
- package/vue/UiSearchShell.d.ts +2 -2
- package/vue/UiSearchShell.vue +159 -196
- package/vue/UiSection.vue +105 -149
- package/vue/UiSelect.d.ts +1 -1
- package/vue/UiSelect.vue +114 -146
- package/vue/UiSeparator.vue +42 -85
- package/vue/UiSidebar.d.ts +10 -7
- package/vue/UiSidebar.vue +193 -260
- package/vue/UiSpinner.vue +54 -130
- package/vue/UiStack.vue +66 -107
- package/vue/UiStatusMessage.d.ts +1 -1
- package/vue/UiStatusMessage.vue +61 -135
- package/vue/UiSwitch.d.ts +12 -9
- package/vue/UiSwitch.vue +136 -194
- package/vue/UiSwitcher.vue +69 -107
- package/vue/UiTable.vue +121 -156
- package/vue/UiTabs.d.ts +1 -1
- package/vue/UiTabs.vue +139 -267
- package/vue/UiText.d.ts +4 -4
- package/vue/UiText.vue +145 -184
- package/vue/UiTextarea.d.ts +2 -2
- package/vue/UiTextarea.vue +162 -194
- package/vue/UiToast.vue +70 -118
- package/vue/UiToastRegion.vue +157 -276
- package/vue/UiTooltip.d.ts +21 -18
- package/vue/UiTooltip.vue +174 -234
- package/vue/UiTopBar.vue +48 -76
- package/vue/UiTree.vue +46 -79
- package/vue/UiTreeItem.d.ts +18 -15
- package/vue/UiTreeItem.vue +526 -668
- package/vue/chunks/UiActionBar.js +5 -17
- package/vue/chunks/UiAffordanceScope.js +7 -26
- package/vue/chunks/UiAvatar.js +20 -74
- package/vue/chunks/UiAvatarGroup.js +14 -56
- package/vue/chunks/UiBadge.js +10 -28
- package/vue/chunks/UiBreadcrumbItem.js +11 -41
- package/vue/chunks/UiBreadcrumbs.js +7 -25
- package/vue/chunks/UiButton.js +80 -103
- package/vue/chunks/UiCallout.js +9 -27
- package/vue/chunks/UiCard.js +33 -53
- package/vue/chunks/UiCheckbox.js +14 -46
- package/vue/chunks/UiCluster.js +13 -31
- package/vue/chunks/UiCombobox.js +99 -237
- package/vue/chunks/UiContainer.js +9 -27
- package/vue/chunks/UiContextMenu.js +7 -26
- package/vue/chunks/UiCover.js +7 -25
- package/vue/chunks/UiDescriptionItem.js +6 -24
- package/vue/chunks/UiDescriptionList.js +9 -27
- package/vue/chunks/UiDialog.js +18 -47
- package/vue/chunks/UiDisclosure.js +19 -66
- package/vue/chunks/UiEditable.js +18 -60
- package/vue/chunks/UiEditorImageToolbar.js +34 -103
- package/vue/chunks/UiEditorInsertTableGrid.js +14 -112
- package/vue/chunks/UiEditorMentionMenu.js +16 -54
- package/vue/chunks/UiEditorMentionMenuItem.js +10 -28
- package/vue/chunks/UiEditorSlashMenu.js +17 -46
- package/vue/chunks/UiEditorSlashMenuGroup.js +7 -25
- package/vue/chunks/UiEditorSlashMenuItem.js +16 -31
- package/vue/chunks/UiEditorSurface.js +7 -25
- package/vue/chunks/UiEditorTableContextMenu.js +25 -102
- package/vue/chunks/UiEditorTableOverlay.js +41 -104
- package/vue/chunks/UiEditorTableToolbar.js +44 -122
- package/vue/chunks/UiEditorToolbar.js +7 -26
- package/vue/chunks/UiFloatingActionButton.js +10 -28
- package/vue/chunks/UiFormField.js +8 -27
- package/vue/chunks/UiGrid.js +10 -28
- package/vue/chunks/UiIcon.js +21 -74
- package/vue/chunks/UiIconButton.js +18 -50
- package/vue/chunks/UiImage.js +14 -33
- package/vue/chunks/UiInput.js +12 -31
- package/vue/chunks/UiInputGroup.js +10 -29
- package/vue/chunks/UiList.js +17 -37
- package/vue/chunks/UiListItem.js +12 -30
- package/vue/chunks/UiListbox.js +22 -124
- package/vue/chunks/UiMenu.js +13 -32
- package/vue/chunks/UiMenuGroup.js +8 -26
- package/vue/chunks/UiMenuItem.js +35 -80
- package/vue/chunks/UiMeter.js +17 -351
- package/vue/chunks/UiNavItem.js +23 -57
- package/vue/chunks/UiPageHeader.js +7 -25
- package/vue/chunks/UiPopover.js +9 -28
- package/vue/chunks/UiRadio.js +11 -43
- package/vue/chunks/UiRadioGroup.js +13 -32
- package/vue/chunks/UiReel.js +10 -28
- package/vue/chunks/UiScrollArea.js +10 -29
- package/vue/chunks/UiSearchResultRow.js +10 -28
- package/vue/chunks/UiSearchShell.js +9 -28
- package/vue/chunks/UiSection.js +9 -27
- package/vue/chunks/UiSelect.js +10 -29
- package/vue/chunks/UiSeparator.js +10 -28
- package/vue/chunks/UiSidebar.js +15 -47
- package/vue/chunks/UiSpinner.js +8 -44
- package/vue/chunks/UiStack.js +12 -30
- package/vue/chunks/UiStatusMessage.js +10 -42
- package/vue/chunks/UiSwitch.js +11 -43
- package/vue/chunks/UiSwitcher.js +9 -28
- package/vue/chunks/UiTable.js +7 -26
- package/vue/chunks/UiTabs.js +15 -91
- package/vue/chunks/UiText.js +148 -168
- package/vue/chunks/UiTextarea.js +16 -35
- package/vue/chunks/UiToast.js +13 -37
- package/vue/chunks/UiToastRegion.js +16 -88
- package/vue/chunks/UiTooltip.js +14 -46
- package/vue/chunks/UiTopBar.js +5 -17
- package/vue/chunks/UiTree.js +13 -32
- package/vue/chunks/UiTreeItem.js +34 -90
- package/vue/chunks/_plugin-vue_export-helper.js +904 -1
- package/vue/chunks/control.js +3 -0
- package/vue/chunks/props.js +1 -1
- package/vue/components.css +7606 -7534
- package/vue/editor/index.js +1 -1
- package/vue/host.ts +999 -14
- package/vue/chunks/host.js +0 -443
package/vue/UiTreeItem.vue
CHANGED
|
@@ -1,19 +1,16 @@
|
|
|
1
|
-
<!-- Generated by HTML Next 1.0.0-alpha.
|
|
2
|
-
<script lang="ts">
|
|
3
|
-
const htmlNextAuthoredCheck2Reported = new Set<string>()
|
|
4
|
-
function htmlNextAuthoredCheck2(accepted: boolean, location: string, message: string): boolean {
|
|
5
|
-
if (!accepted && !htmlNextAuthoredCheck2Reported.has(location)) {
|
|
6
|
-
htmlNextAuthoredCheck2Reported.add(location)
|
|
7
|
-
console.warn(message)
|
|
8
|
-
}
|
|
9
|
-
return accepted
|
|
10
|
-
}
|
|
11
|
-
</script>
|
|
12
|
-
|
|
1
|
+
<!-- Generated by HTML Next 1.0.0-alpha.51 for Vue 3.5. Do not edit. -->
|
|
13
2
|
<script setup lang="ts">
|
|
14
3
|
import { computed, getCurrentInstance, provide, ref, useTemplateRef, watchSyncEffect } from 'vue'
|
|
15
4
|
import type { PropType } from 'vue'
|
|
16
|
-
import {
|
|
5
|
+
import {
|
|
6
|
+
attribute,
|
|
7
|
+
checkHydratedRoot,
|
|
8
|
+
concat,
|
|
9
|
+
createDispatch,
|
|
10
|
+
nativeAttrs,
|
|
11
|
+
useComponentHost,
|
|
12
|
+
useReflectedProp,
|
|
13
|
+
} from './host'
|
|
17
14
|
import { acceptsControllerWrite } from './props'
|
|
18
15
|
import { checkedProp, propValidityState, vPropValidity } from './props'
|
|
19
16
|
import UiButton from './UiButton.vue'
|
|
@@ -287,38 +284,7 @@ void checkedProps.value
|
|
|
287
284
|
watchSyncEffect(() => {
|
|
288
285
|
void checkedProps.value
|
|
289
286
|
})
|
|
290
|
-
|
|
291
|
-
const names = Object.keys(attrs)
|
|
292
|
-
if (!names.some((name) => Object.hasOwn(Object.prototype, name))) return attrs
|
|
293
|
-
return Object.fromEntries(names.map((name) => [
|
|
294
|
-
Object.hasOwn(Object.prototype, name)
|
|
295
|
-
? name === '__proto__' ? '__Proto__' : name[0]!.toUpperCase() + name.slice(1)
|
|
296
|
-
: name,
|
|
297
|
-
attrs[name],
|
|
298
|
-
]))
|
|
299
|
-
}
|
|
300
|
-
const componentInstance = getCurrentInstance()
|
|
301
|
-
function reflectedProp(
|
|
302
|
-
name: string,
|
|
303
|
-
kebab: string,
|
|
304
|
-
value: unknown,
|
|
305
|
-
fallback: string | undefined,
|
|
306
|
-
bound: boolean,
|
|
307
|
-
separator?: string,
|
|
308
|
-
): string | undefined {
|
|
309
|
-
const incoming = componentInstance?.vnode.props
|
|
310
|
-
if (
|
|
311
|
-
!bound
|
|
312
|
-
&& (incoming === null || incoming === undefined
|
|
313
|
-
|| (!Object.hasOwn(incoming, name) && !Object.hasOwn(incoming, kebab)))
|
|
314
|
-
) return fallback
|
|
315
|
-
if (value === null || value === undefined) return undefined
|
|
316
|
-
return Array.isArray(value) && separator !== undefined
|
|
317
|
-
? value.join(separator)
|
|
318
|
-
: typeof value === 'object'
|
|
319
|
-
? JSON.stringify(value)
|
|
320
|
-
: String(value)
|
|
321
|
-
}
|
|
287
|
+
const reflectedProp = useReflectedProp()
|
|
322
288
|
const hydrationInstance = getCurrentInstance()
|
|
323
289
|
const emit = defineEmits<{
|
|
324
290
|
'update:expanded': [value: boolean]
|
|
@@ -347,26 +313,8 @@ const structuralLevel = ref(1)
|
|
|
347
313
|
const tabStop = ref(false)
|
|
348
314
|
const isContainer = ref(false)
|
|
349
315
|
const moving = ref(false)
|
|
350
|
-
let guardedPrevious: any
|
|
316
|
+
let guardedPrevious: any = null
|
|
351
317
|
const guarded = computed(() => {
|
|
352
|
-
if (
|
|
353
|
-
!(htmlNextAuthoredCheck2(
|
|
354
|
-
structuralLevel.value == null || Number.isInteger(structuralLevel.value),
|
|
355
|
-
'$structuralLevel:structuralLevel',
|
|
356
|
-
'./components/ui-tree-item/ui-tree-item.html: HR007: Reference structuralLevel does not satisfy its declared type.',
|
|
357
|
-
))
|
|
358
|
-
) return guardedPrevious
|
|
359
|
-
return guardedPrevious = structuralLevel.value
|
|
360
|
-
})
|
|
361
|
-
let guardedBindingPrevious: any = null
|
|
362
|
-
const guardedBinding = computed(() => {
|
|
363
|
-
if (
|
|
364
|
-
!(htmlNextAuthoredCheck2(
|
|
365
|
-
moving.value == null || typeof moving.value === 'boolean',
|
|
366
|
-
'{ true: concat(\'Cancel moving \', $label), false: concat(\'Drag \', $label, \' to reorder\') }[concat($moving)]:moving',
|
|
367
|
-
'./components/ui-tree-item/ui-tree-item.html: HR007: Reference moving does not satisfy its declared type.',
|
|
368
|
-
))
|
|
369
|
-
) return guardedBindingPrevious
|
|
370
318
|
const candidate: any = ((objectValue: any, indexValue: any) =>
|
|
371
319
|
objectValue === Symbol.for('html-next.invalid-result')
|
|
372
320
|
|| indexValue === Symbol.for('html-next.invalid-result')
|
|
@@ -386,9 +334,9 @@ const guardedBinding = computed(() => {
|
|
|
386
334
|
concat(moving.value),
|
|
387
335
|
)
|
|
388
336
|
if (candidate === Symbol.for('html-next.invalid-result')) {
|
|
389
|
-
return
|
|
337
|
+
return guardedPrevious
|
|
390
338
|
}
|
|
391
|
-
return
|
|
339
|
+
return guardedPrevious = typeof (((objectValue: any, indexValue: any) =>
|
|
392
340
|
objectValue === Symbol.for('html-next.invalid-result')
|
|
393
341
|
|| indexValue === Symbol.for('html-next.invalid-result')
|
|
394
342
|
? Symbol.for('html-next.invalid-result')
|
|
@@ -443,60 +391,18 @@ const guardedBinding = computed(() => {
|
|
|
443
391
|
concat(moving.value),
|
|
444
392
|
))
|
|
445
393
|
})
|
|
446
|
-
let
|
|
447
|
-
const
|
|
448
|
-
if (
|
|
449
|
-
!(htmlNextAuthoredCheck2(
|
|
450
|
-
isContainer.value == null || typeof isContainer.value === 'boolean',
|
|
451
|
-
'not $isContainer:isContainer',
|
|
452
|
-
'./components/ui-tree-item/ui-tree-item.html: HR007: Reference isContainer does not satisfy its declared type.',
|
|
453
|
-
))
|
|
454
|
-
) return guardedBinding2Previous
|
|
455
|
-
return guardedBinding2Previous = !isContainer.value
|
|
456
|
-
})
|
|
457
|
-
let guardedBinding3Previous: any = null
|
|
458
|
-
const guardedBinding3 = computed(() => {
|
|
394
|
+
let guardedBindingPrevious: any = null
|
|
395
|
+
const guardedBinding = computed(() => {
|
|
459
396
|
const candidate: any = concat('Select ', checkedProps.value.label)
|
|
460
|
-
if (candidate === Symbol.for('html-next.invalid-result')) return
|
|
461
|
-
return
|
|
462
|
-
})
|
|
463
|
-
let guardedBinding4Previous: any
|
|
464
|
-
const guardedBinding4 = computed(() => {
|
|
465
|
-
if (
|
|
466
|
-
!(htmlNextAuthoredCheck2(
|
|
467
|
-
internalExpanded.value == null || typeof internalExpanded.value === 'boolean',
|
|
468
|
-
'not ($isContainer and $internalExpanded):internalExpanded',
|
|
469
|
-
'./components/ui-tree-item/ui-tree-item.html: HR007: Reference internalExpanded does not satisfy its declared type.',
|
|
470
|
-
)
|
|
471
|
-
&& htmlNextAuthoredCheck2(
|
|
472
|
-
isContainer.value == null || typeof isContainer.value === 'boolean',
|
|
473
|
-
'not ($isContainer and $internalExpanded):isContainer',
|
|
474
|
-
'./components/ui-tree-item/ui-tree-item.html: HR007: Reference isContainer does not satisfy its declared type.',
|
|
475
|
-
))
|
|
476
|
-
) return guardedBinding4Previous
|
|
477
|
-
return guardedBinding4Previous = !(isContainer.value && internalExpanded.value)
|
|
397
|
+
if (candidate === Symbol.for('html-next.invalid-result')) return guardedBindingPrevious
|
|
398
|
+
return guardedBindingPrevious = candidate
|
|
478
399
|
})
|
|
479
400
|
provide('html-next:ui-tree-item:internalExpanded', internalExpanded)
|
|
480
401
|
provide('html-next:ui-tree-item:structuralLevel', structuralLevel)
|
|
481
402
|
provide('html-next:ui-tree-item:tabStop', tabStop)
|
|
482
403
|
provide('html-next:ui-tree-item:isContainer', isContainer)
|
|
483
404
|
provide('html-next:ui-tree-item:moving', moving)
|
|
484
|
-
|
|
485
|
-
if (
|
|
486
|
-
typeof window !== 'undefined' && hydrationNode != null
|
|
487
|
-
&& (!(hydrationNode instanceof Element) || hydrationNode.localName !== ('div'))
|
|
488
|
-
) {
|
|
489
|
-
throw Object.assign(
|
|
490
|
-
new Error('HR005: Server markup for <ui-tree-item> has an incompatible root.'),
|
|
491
|
-
{
|
|
492
|
-
name: 'HtmlDiagnosticError',
|
|
493
|
-
diagnostic: Object.freeze({
|
|
494
|
-
code: 'HR005',
|
|
495
|
-
message: 'Server markup for <ui-tree-item> has an incompatible root.',
|
|
496
|
-
}),
|
|
497
|
-
},
|
|
498
|
-
)
|
|
499
|
-
}
|
|
405
|
+
checkHydratedRoot('div', 'ui-tree-item')
|
|
500
406
|
|
|
501
407
|
/** The values the styles' :host-state() rules test. */
|
|
502
408
|
const hostState = computed(() =>
|
|
@@ -583,46 +489,15 @@ useComponentHost(() => import('../components/ui-tree-item/ui-tree-item.js'), {
|
|
|
583
489
|
},
|
|
584
490
|
state: { internalExpanded, structuralLevel, tabStop, isContainer, moving },
|
|
585
491
|
})
|
|
586
|
-
|
|
587
|
-
function text(value: unknown): string {
|
|
588
|
-
if (Array.isArray(value)) return value.map(text).join(' ')
|
|
589
|
-
return value === null || value === undefined || typeof value === 'object' ? '' : String(value)
|
|
590
|
-
}
|
|
591
|
-
|
|
592
|
-
function attribute(value: unknown): any {
|
|
593
|
-
if (
|
|
594
|
-
value === null || value === undefined || value === false
|
|
595
|
-
|| (typeof value === 'object' && !Array.isArray(value))
|
|
596
|
-
) return undefined
|
|
597
|
-
return value === true ? '' : text(value)
|
|
598
|
-
}
|
|
599
|
-
|
|
600
|
-
// A nonempty scalar call cannot produce the invalid-result sentinel.
|
|
601
|
-
type ConcatResult<T extends unknown[]> = T extends
|
|
602
|
-
[
|
|
603
|
-
string | number | boolean | null | undefined,
|
|
604
|
-
...(string | number | boolean | null | undefined)[],
|
|
605
|
-
] ? string | undefined
|
|
606
|
-
: string | symbol | undefined
|
|
607
|
-
function concat<T extends unknown[]>(...values: T): ConcatResult<T> {
|
|
608
|
-
if (values.some(value => value === Symbol.for('html-next.invalid-result'))) {
|
|
609
|
-
return Symbol.for('html-next.invalid-result') as ConcatResult<T>
|
|
610
|
-
}
|
|
611
|
-
if (values.some(value => value === undefined)) return undefined as ConcatResult<T>
|
|
612
|
-
if (values.length === 0 || values.some(value => typeof value === 'object' && value !== null)) {
|
|
613
|
-
return Symbol.for('html-next.invalid-result') as ConcatResult<T>
|
|
614
|
-
}
|
|
615
|
-
return values.map(value => value === null ? '' : String(value)).join('') as ConcatResult<T>
|
|
616
|
-
}
|
|
617
492
|
</script>
|
|
618
493
|
|
|
619
494
|
<template>
|
|
620
495
|
<div
|
|
621
|
-
|
|
496
|
+
class="ui-tree-item"
|
|
622
497
|
role="treeitem"
|
|
623
498
|
v-bind="nativeAttrs($attrs)"
|
|
624
499
|
:aria-label="checkedProps.label ?? undefined"
|
|
625
|
-
:aria-level="
|
|
500
|
+
:aria-level="structuralLevel"
|
|
626
501
|
:aria-selected="checkedProps.selected ?? undefined"
|
|
627
502
|
:aria-disabled="checkedProps.disabled ?? undefined"
|
|
628
503
|
v-prop-validity="{ contract: propValidityContract, values: { ...props } }"
|
|
@@ -650,7 +525,7 @@ function concat<T extends unknown[]>(...values: T): ConcatResult<T> {
|
|
|
650
525
|
class="drag-handle"
|
|
651
526
|
type="button"
|
|
652
527
|
draggable="true"
|
|
653
|
-
:aria-label="
|
|
528
|
+
:aria-label="guarded"
|
|
654
529
|
ref="dragHandleElement"
|
|
655
530
|
>
|
|
656
531
|
<svg
|
|
@@ -675,7 +550,7 @@ function concat<T extends unknown[]>(...values: T): ConcatResult<T> {
|
|
|
675
550
|
class="disclosure"
|
|
676
551
|
type="button"
|
|
677
552
|
:disabled="checkedProps.disabled ?? undefined"
|
|
678
|
-
:hidden="
|
|
553
|
+
:hidden="!isContainer"
|
|
679
554
|
ref="disclosureElement"
|
|
680
555
|
>
|
|
681
556
|
<span class="disclosure-icon" aria-hidden="true"></span>
|
|
@@ -686,7 +561,7 @@ function concat<T extends unknown[]>(...values: T): ConcatResult<T> {
|
|
|
686
561
|
tabindex="-1"
|
|
687
562
|
:checked.attr="checkedProps.selected ? true : undefined"
|
|
688
563
|
:disabled="checkedProps.disabled ?? undefined"
|
|
689
|
-
:aria-label="
|
|
564
|
+
:aria-label="guardedBinding"
|
|
690
565
|
></label>
|
|
691
566
|
<span class="leading" ref="leadingElement"><slot name="leading" /></span>
|
|
692
567
|
<span class="label" ref="labelElement"><span class="label-text" ref="labelTextElement"><slot
|
|
@@ -694,6 +569,7 @@ function concat<T extends unknown[]>(...values: T): ConcatResult<T> {
|
|
|
694
569
|
>{{ checkedProps.label }}</slot></span></span>
|
|
695
570
|
<span class="actions" ref="actionsElement"><UiButton
|
|
696
571
|
v-if="moving"
|
|
572
|
+
class="ui-button"
|
|
697
573
|
data-tree-cancel-move=""
|
|
698
574
|
variant="ghost"
|
|
699
575
|
tone="neutral"
|
|
@@ -703,7 +579,12 @@ function concat<T extends unknown[]>(...values: T): ConcatResult<T> {
|
|
|
703
579
|
<span><slot name="actions" /></span></span>
|
|
704
580
|
<span class="drop-indicator row-drop-indicator" aria-hidden="true"></span>
|
|
705
581
|
</div>
|
|
706
|
-
<div
|
|
582
|
+
<div
|
|
583
|
+
class="children"
|
|
584
|
+
role="group"
|
|
585
|
+
:hidden="!(isContainer && internalExpanded)"
|
|
586
|
+
ref="childrenElement"
|
|
587
|
+
>
|
|
707
588
|
<slot />
|
|
708
589
|
</div>
|
|
709
590
|
<span class="drop-indicator subtree-drop-indicator" aria-hidden="true"></span>
|
|
@@ -733,320 +614,34 @@ function concat<T extends unknown[]>(...values: T): ConcatResult<T> {
|
|
|
733
614
|
inherits: false;
|
|
734
615
|
}
|
|
735
616
|
|
|
736
|
-
[data-component~="ui-tree-item"] {
|
|
737
|
-
/* Hooks do not inherit, so the parts below read them from the root. The tree's density
|
|
738
|
-
sets the defaults, in --_ui-default-*. */
|
|
739
|
-
--_ui-tree-item-min-block-size: var(
|
|
740
|
-
--ui-tree-item-min-block-size,
|
|
741
|
-
var(--_ui-default-tree-item-min-block-size)
|
|
742
|
-
);
|
|
743
|
-
--_ui-tree-item-font-size: var(--ui-tree-item-font-size, var(--_ui-default-tree-item-font-size));
|
|
744
|
-
--_ui-tree-item-label-padding-block: var(
|
|
745
|
-
--ui-tree-item-label-padding-block,
|
|
746
|
-
var(--_ui-default-tree-item-label-padding-block)
|
|
747
|
-
);
|
|
748
|
-
--_ui-tree-item-label-padding-inline: var(--ui-tree-item-label-padding-inline);
|
|
749
|
-
|
|
750
|
-
--_tree-row-min-height: 32px;
|
|
751
|
-
--_tree-disclosure-size: 16px;
|
|
752
|
-
|
|
753
|
-
position: relative;
|
|
754
|
-
display: block;
|
|
755
|
-
min-inline-size: 0;
|
|
756
|
-
margin-inline-start: calc(var(--_ui-tree-item-indent-step, 0) * var(--_ui-tree-indent, 16px));
|
|
757
|
-
}
|
|
758
|
-
|
|
759
|
-
.row {
|
|
760
|
-
position: relative;
|
|
761
|
-
display: grid;
|
|
762
|
-
grid-template-columns: var(--_tree-disclosure-size) auto minmax(0, 1fr);
|
|
763
|
-
align-items: center;
|
|
764
|
-
min-block-size: var(--_ui-tree-item-min-block-size, var(--_tree-row-min-height));
|
|
765
|
-
min-inline-size: 0;
|
|
766
|
-
font-size: var(--_ui-tree-item-font-size, var(--ui-font-size-sm));
|
|
767
|
-
border-radius: var(--ui-selection-radius);
|
|
768
|
-
color: var(--ui-text-secondary);
|
|
769
|
-
transition:
|
|
770
|
-
background-color var(--ui-motion-fast) var(--ui-motion-ease),
|
|
771
|
-
color var(--ui-motion-fast) var(--ui-motion-ease),
|
|
772
|
-
opacity var(--ui-motion-fast) var(--ui-motion-ease),
|
|
773
|
-
box-shadow var(--ui-motion-fast) var(--ui-motion-ease),
|
|
774
|
-
min-block-size var(--ui-motion-base) var(--ui-motion-ease);
|
|
775
|
-
}
|
|
776
|
-
|
|
777
|
-
.row:hover,
|
|
778
|
-
.row:focus-within {
|
|
779
|
-
color: var(--ui-text-primary);
|
|
780
|
-
background: var(--_ui-selection-context-surface, var(--ui-surface-muted));
|
|
781
|
-
box-shadow: inset 0 0 0 var(--ui-border-width)
|
|
782
|
-
var(--_ui-selection-context-border, var(--ui-selection-border));
|
|
783
|
-
}
|
|
784
|
-
|
|
785
617
|
/* Selection is the same surface recipe as destination and choice rows. */
|
|
786
|
-
[data-component~="ui-tree-item"][data-ui-tree-item-state~="selected"] > .row {
|
|
787
|
-
color: var(--_ui-selection-context-text, var(--ui-selection-text));
|
|
788
|
-
background: var(--_ui-selection-context-surface, var(--ui-selection-surface));
|
|
789
|
-
box-shadow: inset 0 0 0 var(--ui-border-width)
|
|
790
|
-
var(--_ui-selection-context-border, var(--ui-selection-border));
|
|
791
|
-
}
|
|
792
|
-
[data-component~="ui-tree-item"][data-ui-tree-item-state~="selected"]:not([aria-disabled="true"])
|
|
793
|
-
> .row
|
|
794
|
-
> .leading {
|
|
795
|
-
color: var(--_ui-selection-context-text, var(--ui-selection-text));
|
|
796
|
-
}
|
|
797
|
-
|
|
798
|
-
[data-component~="ui-tree-item"][data-ui-tree-item-state~="disabled"] .row {
|
|
799
|
-
color: var(--ui-disabled-text);
|
|
800
|
-
background: var(--ui-disabled-surface);
|
|
801
|
-
box-shadow: none;
|
|
802
|
-
}
|
|
803
|
-
|
|
804
|
-
[data-component~="ui-tree-item"][data-dragging]:not([data-move-source]) .row {
|
|
805
|
-
opacity: 0.42;
|
|
806
|
-
}
|
|
807
|
-
|
|
808
|
-
[data-component~="ui-tree-item"][data-move-source] > .row > .label,
|
|
809
|
-
[data-component~="ui-tree-item"][data-move-source] > .row > .leading {
|
|
810
|
-
opacity: 0.42;
|
|
811
|
-
}
|
|
812
|
-
|
|
813
|
-
[data-component~="ui-tree-item"]:focus {
|
|
814
|
-
outline: none;
|
|
815
|
-
}
|
|
816
|
-
|
|
817
|
-
[data-component~="ui-tree-item"]:focus-visible .row {
|
|
818
|
-
box-shadow: 0 0 0 var(--ui-focus-width) var(--ui-focus-ring);
|
|
819
|
-
}
|
|
820
618
|
|
|
821
619
|
/* Child combinators: drop feedback belongs to this item's own row, not the rows nested in it. */
|
|
822
|
-
[data-component~="ui-tree-item"][data-drop-position="inside"] > .row {
|
|
823
|
-
background: var(--ui-accent-subtle);
|
|
824
|
-
box-shadow: inset 0 0 0 var(--ui-accent-line-width)
|
|
825
|
-
var(--_ui-tree-drop-color, var(--ui-accent-solid));
|
|
826
|
-
}
|
|
827
|
-
|
|
828
|
-
.disclosure,
|
|
829
|
-
.disclosure-spacer {
|
|
830
|
-
grid-column: 1;
|
|
831
|
-
grid-row: 1;
|
|
832
|
-
inline-size: var(--_tree-disclosure-size);
|
|
833
|
-
block-size: 28px;
|
|
834
|
-
}
|
|
835
|
-
|
|
836
|
-
.disclosure {
|
|
837
|
-
display: grid;
|
|
838
|
-
/* Start-aligned: the chevron's ink, not its hit area, aligns with the content above it. */
|
|
839
|
-
place-items: center start;
|
|
840
|
-
padding: 0;
|
|
841
|
-
color: var(--ui-text-muted);
|
|
842
|
-
background: transparent;
|
|
843
|
-
border: 0;
|
|
844
|
-
border-radius: var(--ui-radius-sm);
|
|
845
|
-
cursor: pointer;
|
|
846
|
-
}
|
|
847
|
-
|
|
848
|
-
.disclosure[hidden] {
|
|
849
|
-
display: none;
|
|
850
|
-
}
|
|
851
|
-
|
|
852
|
-
.selection-hit {
|
|
853
|
-
display: none;
|
|
854
|
-
grid-column: 2;
|
|
855
|
-
grid-row: 1;
|
|
856
|
-
place-items: center;
|
|
857
|
-
inline-size: 1.25rem;
|
|
858
|
-
block-size: var(--_ui-tree-item-min-block-size, var(--_tree-row-min-height));
|
|
859
|
-
cursor: pointer;
|
|
860
|
-
}
|
|
861
|
-
.selection-checkbox {
|
|
862
|
-
inline-size: 1rem;
|
|
863
|
-
block-size: 1rem;
|
|
864
|
-
margin: 0;
|
|
865
|
-
accent-color: var(--ui-accent-solid);
|
|
866
|
-
}
|
|
867
|
-
|
|
868
|
-
[data-component~="ui-tree-item"][data-selection-mode="multiple"] > .row {
|
|
869
|
-
grid-template-columns: var(--_tree-disclosure-size) 1.25rem auto minmax(0, 1fr);
|
|
870
|
-
}
|
|
871
|
-
[data-component~="ui-tree-item"][data-selection-mode="multiple"] > .row > .selection-hit {
|
|
872
|
-
display: grid;
|
|
873
|
-
}
|
|
874
|
-
[data-component~="ui-tree-item"][data-selection-mode="multiple"] > .row > .leading {
|
|
875
|
-
grid-column: 3;
|
|
876
|
-
}
|
|
877
|
-
[data-component~="ui-tree-item"][data-selection-mode="multiple"] > .row > .label {
|
|
878
|
-
grid-column: 4;
|
|
879
|
-
}
|
|
880
|
-
|
|
881
|
-
.disclosure:hover {
|
|
882
|
-
color: var(--ui-text-primary);
|
|
883
|
-
background: var(--ui-surface-elevated);
|
|
884
|
-
}
|
|
885
|
-
|
|
886
|
-
.disclosure-icon {
|
|
887
|
-
display: grid;
|
|
888
|
-
place-items: center;
|
|
889
|
-
inline-size: 12px;
|
|
890
|
-
block-size: 12px;
|
|
891
|
-
transform: rotate(-90deg);
|
|
892
|
-
transition: transform var(--ui-motion-fast) var(--ui-motion-ease);
|
|
893
|
-
}
|
|
894
|
-
|
|
895
|
-
.disclosure-icon::before {
|
|
896
|
-
display: block;
|
|
897
|
-
inline-size: 0.375rem;
|
|
898
|
-
block-size: 0.375rem;
|
|
899
|
-
border-inline-end: 1.5px solid currentColor;
|
|
900
|
-
border-block-end: 1.5px solid currentColor;
|
|
901
|
-
content: "";
|
|
902
|
-
/* A chevron's ink sits below its box centre; lift it so it centres optically (in either rotation). */
|
|
903
|
-
transform: translateY(-20%) rotate(45deg);
|
|
904
|
-
}
|
|
905
|
-
|
|
906
|
-
[data-component~="ui-tree-item"][aria-expanded="true"] > .row > .disclosure > .disclosure-icon {
|
|
907
|
-
transform: rotate(0deg);
|
|
908
|
-
}
|
|
909
620
|
|
|
910
621
|
/* Lucide grip-vertical, filling the handle as in Looma 0.2. */
|
|
911
|
-
.drag-handle svg {
|
|
912
|
-
display: block;
|
|
913
|
-
inline-size: 100%;
|
|
914
|
-
block-size: 100%;
|
|
915
|
-
}
|
|
916
622
|
|
|
917
623
|
/* Slotted content is outside this scope, so :has() cannot see it; hide only a truly empty slot. */
|
|
918
|
-
.leading {
|
|
919
|
-
display: inline-grid;
|
|
920
|
-
place-items: center;
|
|
921
|
-
grid-column: 2;
|
|
922
|
-
grid-row: 1;
|
|
923
|
-
inline-size: 1em;
|
|
924
|
-
block-size: 1em;
|
|
925
|
-
margin-inline-start: var(--ui-space-1);
|
|
926
|
-
color: var(--ui-text-muted);
|
|
927
|
-
/* Above the label, so a sliding name passes under the icon. */
|
|
928
|
-
position: relative;
|
|
929
|
-
z-index: 1;
|
|
930
|
-
}
|
|
931
|
-
|
|
932
|
-
.leading:empty {
|
|
933
|
-
display: none;
|
|
934
|
-
}
|
|
935
624
|
|
|
936
625
|
/* Icons match the label's size (as in Knit's tree): an unsized SVG would otherwise render 300×150. */
|
|
937
|
-
:slotted(svg),
|
|
938
|
-
:slotted(img) {
|
|
939
|
-
display: block;
|
|
940
|
-
inline-size: 1em;
|
|
941
|
-
block-size: 1em;
|
|
942
|
-
flex: none;
|
|
943
|
-
}
|
|
944
626
|
|
|
945
627
|
/* The label spans the row's height and centres its content, so slotted content (a link) can
|
|
946
628
|
stretch to fill the row as its own hit area; the padding tokens remove the inset. */
|
|
947
|
-
.label {
|
|
948
|
-
grid-column: 3;
|
|
949
|
-
grid-row: 1;
|
|
950
|
-
align-self: stretch;
|
|
951
|
-
display: flex;
|
|
952
|
-
align-items: center;
|
|
953
|
-
min-inline-size: 0;
|
|
954
|
-
/* The cell clips: a name longer than the row slides inside it rather than over its icons. */
|
|
955
|
-
overflow: hidden;
|
|
956
|
-
padding: var(--_ui-tree-item-label-padding-block, var(--ui-space-1))
|
|
957
|
-
var(--_ui-tree-item-label-padding-inline, var(--ui-space-2));
|
|
958
|
-
/* The length of the fade before the controls. The label's one flex child lays out no gap; this
|
|
959
|
-
is where the controller reads the length in pixels to stop a sliding name before the fade. */
|
|
960
|
-
column-gap: var(--ui-space-1);
|
|
961
|
-
}
|
|
962
629
|
|
|
963
630
|
/* Slotted label content fills the cell, so a link is the row's hit area rather than sizing to
|
|
964
631
|
its own text and reading as overflow. */
|
|
965
|
-
.label-text {
|
|
966
|
-
display: flex;
|
|
967
|
-
align-items: center;
|
|
968
|
-
/* Stretches, so slotted content can still be the row's full-height hit area. */
|
|
969
|
-
align-self: stretch;
|
|
970
|
-
block-size: 100%;
|
|
971
|
-
min-inline-size: 0;
|
|
972
|
-
inline-size: 100%;
|
|
973
|
-
white-space: nowrap;
|
|
974
|
-
}
|
|
975
|
-
|
|
976
|
-
.label-text > :slotted(*) {
|
|
977
|
-
flex: 1 1 auto;
|
|
978
|
-
min-inline-size: 0;
|
|
979
|
-
}
|
|
980
632
|
|
|
981
633
|
/* The controls sit over the label's end, so the text fades out where they begin. The fade is
|
|
982
634
|
the truncation mark while it shows: an ellipsis under it would read as a second one. */
|
|
983
|
-
.row:hover > .label,
|
|
984
|
-
.row:focus-within > .label,
|
|
985
|
-
[data-component~="ui-tree-item"][data-ui-tree-item-state~="actionsVisible"] > .row > .label,
|
|
986
|
-
[data-component~="ui-tree-item"][data-move-source] > .row > .label {
|
|
987
|
-
text-overflow: clip;
|
|
988
|
-
mask-image: linear-gradient(
|
|
989
|
-
to right,
|
|
990
|
-
#000 calc(100% - var(--_tree-actions-width, 1.75rem) - var(--ui-space-1)),
|
|
991
|
-
transparent calc(100% - var(--_tree-actions-width, 1.75rem))
|
|
992
|
-
);
|
|
993
|
-
}
|
|
994
|
-
|
|
995
|
-
.row:hover > .label:dir(rtl),
|
|
996
|
-
.row:focus-within > .label:dir(rtl),
|
|
997
|
-
[data-component~="ui-tree-item"][data-ui-tree-item-state~="actionsVisible"]
|
|
998
|
-
> .row
|
|
999
|
-
> .label:dir(rtl),
|
|
1000
|
-
[data-component~="ui-tree-item"][data-move-source] > .row > .label:dir(rtl) {
|
|
1001
|
-
mask-image: linear-gradient(
|
|
1002
|
-
to left,
|
|
1003
|
-
#000 calc(100% - var(--_tree-actions-width, 1.75rem) - var(--ui-space-1)),
|
|
1004
|
-
transparent calc(100% - var(--_tree-actions-width, 1.75rem))
|
|
1005
|
-
);
|
|
1006
|
-
}
|
|
1007
635
|
|
|
1008
636
|
/* A hovered row reads its whole name: the label slides far enough to show the end, rests
|
|
1009
637
|
there, and starts again. Only when it actually overflows — the controller measures by how
|
|
1010
638
|
much — after the controls have taken their place over its end — and hands over the distance
|
|
1011
639
|
and a duration from it, so every name moves at the same speed. */
|
|
1012
|
-
.row[data-ui-marquee] > .label > .label-text {
|
|
1013
|
-
/* Once per pass: the controller restarts it after a rest at the end, so the name holds still
|
|
1014
|
-
long enough to read rather than sliding back and forth. */
|
|
1015
|
-
animation: ui-tree-item-marquee var(--_marquee-duration) linear 0.5s 1 normal forwards;
|
|
1016
|
-
will-change: transform;
|
|
1017
|
-
}
|
|
1018
640
|
|
|
1019
641
|
/* This comes after the hover fade, which it replaces at the same specificity. While the name
|
|
1020
642
|
slides, the label reaches back under the icon (the controller measures how far) with its text
|
|
1021
643
|
where it was, and fades out across the gap before the icon, fully gone where the icon begins
|
|
1022
644
|
to cover it: the name slips under the icon rather than stopping at a hard edge beside it. */
|
|
1023
|
-
.row[data-ui-marquee] > .label {
|
|
1024
|
-
margin-inline-start: calc(-1 * var(--_marquee-lead, 0px));
|
|
1025
|
-
padding-inline-start: calc(
|
|
1026
|
-
var(--_marquee-lead, 0px) + var(--_ui-tree-item-label-padding-inline, var(--ui-space-2))
|
|
1027
|
-
);
|
|
1028
|
-
mask-image: linear-gradient(
|
|
1029
|
-
to right,
|
|
1030
|
-
transparent var(--_marquee-icon-width, 0px),
|
|
1031
|
-
#000 calc(
|
|
1032
|
-
var(--_marquee-lead, 0px) + var(--_ui-tree-item-label-padding-inline, var(--ui-space-2))
|
|
1033
|
-
),
|
|
1034
|
-
#000 calc(100% - var(--_tree-actions-width, 1.75rem) - var(--ui-space-1)),
|
|
1035
|
-
transparent calc(100% - var(--_tree-actions-width, 1.75rem))
|
|
1036
|
-
);
|
|
1037
|
-
}
|
|
1038
|
-
|
|
1039
|
-
.row[data-ui-marquee] > .label:dir(rtl) {
|
|
1040
|
-
mask-image: linear-gradient(
|
|
1041
|
-
to left,
|
|
1042
|
-
transparent var(--_marquee-icon-width, 0px),
|
|
1043
|
-
#000 calc(
|
|
1044
|
-
var(--_marquee-lead, 0px) + var(--_ui-tree-item-label-padding-inline, var(--ui-space-2))
|
|
1045
|
-
),
|
|
1046
|
-
#000 calc(100% - var(--_tree-actions-width, 1.75rem) - var(--ui-space-1)),
|
|
1047
|
-
transparent calc(100% - var(--_tree-actions-width, 1.75rem))
|
|
1048
|
-
);
|
|
1049
|
-
}
|
|
1050
645
|
|
|
1051
646
|
@keyframes ui-tree-item-marquee {
|
|
1052
647
|
from {
|
|
@@ -1059,298 +654,561 @@ function concat<T extends unknown[]>(...values: T): ConcatResult<T> {
|
|
|
1059
654
|
}
|
|
1060
655
|
|
|
1061
656
|
/* Reduced motion keeps the fade, which already says the name continues. */
|
|
1062
|
-
@media (prefers-reduced-motion: reduce) {
|
|
1063
|
-
.row[data-ui-marquee] > .label > .label-text {
|
|
1064
|
-
animation: none;
|
|
1065
|
-
}
|
|
1066
|
-
}
|
|
1067
657
|
|
|
1068
|
-
|
|
1069
|
-
.row:focus-within > .label > :slotted(*) {
|
|
1070
|
-
text-overflow: clip;
|
|
1071
|
-
}
|
|
658
|
+
/* Without hover there is no reveal, so the controls keep their own column. */
|
|
1072
659
|
|
|
1073
|
-
.
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
|
-
|
|
1077
|
-
inset-inline-end: 0;
|
|
1078
|
-
display: inline-flex;
|
|
1079
|
-
align-items: center;
|
|
1080
|
-
min-inline-size: 0;
|
|
1081
|
-
opacity: 0;
|
|
1082
|
-
pointer-events: none;
|
|
1083
|
-
transition: opacity var(--ui-motion-fast) var(--ui-motion-ease);
|
|
1084
|
-
}
|
|
660
|
+
/* The handle sits beside what it drags. A leaf row has no disclosure, so the handle takes that
|
|
661
|
+
empty column, right before the icon; a branch's disclosure is there, so its handle sits just
|
|
662
|
+
outside the row. It is bare until pointed at: a resting surface behind it read as a faint
|
|
663
|
+
patch rather than as a control. */
|
|
1085
664
|
|
|
1086
|
-
|
|
1087
|
-
|
|
1088
|
-
|
|
1089
|
-
|
|
1090
|
-
|
|
1091
|
-
|
|
1092
|
-
|
|
665
|
+
/* A component that sets its display still honours the hidden attribute on its root. */
|
|
666
|
+
|
|
667
|
+
@scope (.ui-tree-item) to (.ui-button) {
|
|
668
|
+
:scope:where(:scope) {
|
|
669
|
+
/* Hooks do not inherit, so the parts below read them from the root. The tree's density
|
|
670
|
+
sets the defaults, in --_ui-default-*. */
|
|
671
|
+
--_ui-tree-item-min-block-size: var(
|
|
672
|
+
--ui-tree-item-min-block-size,
|
|
673
|
+
var(--_ui-default-tree-item-min-block-size)
|
|
674
|
+
);
|
|
675
|
+
--_ui-tree-item-font-size: var(
|
|
676
|
+
--ui-tree-item-font-size,
|
|
677
|
+
var(--_ui-default-tree-item-font-size)
|
|
678
|
+
);
|
|
679
|
+
--_ui-tree-item-label-padding-block: var(
|
|
680
|
+
--ui-tree-item-label-padding-block,
|
|
681
|
+
var(--_ui-default-tree-item-label-padding-block)
|
|
682
|
+
);
|
|
683
|
+
--_ui-tree-item-label-padding-inline: var(--ui-tree-item-label-padding-inline);
|
|
684
|
+
|
|
685
|
+
--_tree-row-min-height: 32px;
|
|
686
|
+
--_tree-disclosure-size: 16px;
|
|
687
|
+
|
|
688
|
+
position: relative;
|
|
689
|
+
display: block;
|
|
690
|
+
min-inline-size: 0;
|
|
691
|
+
margin-inline-start: calc(var(--_ui-tree-item-indent-step, 0) * var(--_ui-tree-indent, 16px));
|
|
692
|
+
}
|
|
1093
693
|
|
|
1094
|
-
/* Without hover there is no reveal, so the controls keep their own column. */
|
|
1095
|
-
@media (hover: none), (pointer: coarse) {
|
|
1096
694
|
.row {
|
|
1097
|
-
|
|
695
|
+
position: relative;
|
|
696
|
+
display: grid;
|
|
697
|
+
grid-template-columns: var(--_tree-disclosure-size) auto minmax(0, 1fr);
|
|
698
|
+
align-items: center;
|
|
699
|
+
min-block-size: var(--_ui-tree-item-min-block-size, var(--_tree-row-min-height));
|
|
700
|
+
min-inline-size: 0;
|
|
701
|
+
font-size: var(--_ui-tree-item-font-size, var(--ui-font-size-sm));
|
|
702
|
+
border-radius: var(--ui-selection-radius);
|
|
703
|
+
color: var(--ui-text-secondary);
|
|
704
|
+
transition:
|
|
705
|
+
background-color var(--ui-motion-fast) var(--ui-motion-ease),
|
|
706
|
+
color var(--ui-motion-fast) var(--ui-motion-ease),
|
|
707
|
+
opacity var(--ui-motion-fast) var(--ui-motion-ease),
|
|
708
|
+
box-shadow var(--ui-motion-fast) var(--ui-motion-ease),
|
|
709
|
+
min-block-size var(--ui-motion-base) var(--ui-motion-ease);
|
|
1098
710
|
}
|
|
1099
711
|
|
|
1100
|
-
.
|
|
1101
|
-
|
|
712
|
+
.row:hover, .row:focus-within {
|
|
713
|
+
color: var(--ui-text-primary);
|
|
714
|
+
background: var(--_ui-selection-context-surface, var(--ui-surface-muted));
|
|
715
|
+
box-shadow: inset 0 0 0 var(--ui-border-width)
|
|
716
|
+
var(--_ui-selection-context-border, var(--ui-selection-border));
|
|
717
|
+
}
|
|
718
|
+
:scope[data-ui-tree-item-state~="selected"] > .row {
|
|
719
|
+
color: var(--_ui-selection-context-text, var(--ui-selection-text));
|
|
720
|
+
background: var(--_ui-selection-context-surface, var(--ui-selection-surface));
|
|
721
|
+
box-shadow: inset 0 0 0 var(--ui-border-width)
|
|
722
|
+
var(--_ui-selection-context-border, var(--ui-selection-border));
|
|
723
|
+
}
|
|
724
|
+
:scope[data-ui-tree-item-state~="selected"]:not([aria-disabled="true"]) > .row > .leading {
|
|
725
|
+
color: var(--_ui-selection-context-text, var(--ui-selection-text));
|
|
726
|
+
}
|
|
727
|
+
|
|
728
|
+
:scope[data-ui-tree-item-state~="disabled"] .row {
|
|
729
|
+
color: var(--ui-disabled-text);
|
|
730
|
+
background: var(--ui-disabled-surface);
|
|
731
|
+
box-shadow: none;
|
|
732
|
+
}
|
|
733
|
+
|
|
734
|
+
:scope[data-dragging]:not([data-move-source]) .row {
|
|
735
|
+
opacity: 0.42;
|
|
736
|
+
}
|
|
737
|
+
|
|
738
|
+
:scope[data-move-source] > .row > .label, :scope[data-move-source] > .row > .leading {
|
|
739
|
+
opacity: 0.42;
|
|
740
|
+
}
|
|
741
|
+
|
|
742
|
+
:scope:where(:scope):is(:focus) {
|
|
743
|
+
outline: none;
|
|
744
|
+
}
|
|
745
|
+
|
|
746
|
+
:scope:focus-visible .row {
|
|
747
|
+
box-shadow: 0 0 0 var(--ui-focus-width) var(--ui-focus-ring);
|
|
748
|
+
}
|
|
749
|
+
:scope[data-drop-position="inside"] > .row {
|
|
750
|
+
background: var(--ui-accent-subtle);
|
|
751
|
+
box-shadow: inset 0 0 0 var(--ui-accent-line-width)
|
|
752
|
+
var(--_ui-tree-drop-color, var(--ui-accent-solid));
|
|
753
|
+
}
|
|
754
|
+
|
|
755
|
+
.disclosure, .disclosure-spacer {
|
|
756
|
+
grid-column: 1;
|
|
757
|
+
grid-row: 1;
|
|
758
|
+
inline-size: var(--_tree-disclosure-size);
|
|
759
|
+
block-size: 28px;
|
|
760
|
+
}
|
|
761
|
+
|
|
762
|
+
.disclosure {
|
|
763
|
+
display: grid;
|
|
764
|
+
/* Start-aligned: the chevron's ink, not its hit area, aligns with the content above it. */
|
|
765
|
+
place-items: center start;
|
|
766
|
+
padding: 0;
|
|
767
|
+
color: var(--ui-text-muted);
|
|
768
|
+
background: transparent;
|
|
769
|
+
border: 0;
|
|
770
|
+
border-radius: var(--ui-radius-sm);
|
|
771
|
+
cursor: pointer;
|
|
772
|
+
}
|
|
773
|
+
|
|
774
|
+
.disclosure[hidden] {
|
|
775
|
+
display: none;
|
|
776
|
+
}
|
|
777
|
+
|
|
778
|
+
.selection-hit {
|
|
779
|
+
display: none;
|
|
780
|
+
grid-column: 2;
|
|
781
|
+
grid-row: 1;
|
|
782
|
+
place-items: center;
|
|
783
|
+
inline-size: 1.25rem;
|
|
784
|
+
block-size: var(--_ui-tree-item-min-block-size, var(--_tree-row-min-height));
|
|
785
|
+
cursor: pointer;
|
|
786
|
+
}
|
|
787
|
+
.selection-checkbox {
|
|
788
|
+
inline-size: 1rem;
|
|
789
|
+
block-size: 1rem;
|
|
790
|
+
margin: 0;
|
|
791
|
+
accent-color: var(--ui-accent-solid);
|
|
792
|
+
}
|
|
793
|
+
|
|
794
|
+
:scope[data-selection-mode="multiple"] > .row {
|
|
795
|
+
grid-template-columns: var(--_tree-disclosure-size) 1.25rem auto minmax(0, 1fr);
|
|
796
|
+
}
|
|
797
|
+
:scope[data-selection-mode="multiple"] > .row > .selection-hit {
|
|
798
|
+
display: grid;
|
|
799
|
+
}
|
|
800
|
+
:scope[data-selection-mode="multiple"] > .row > .leading {
|
|
801
|
+
grid-column: 3;
|
|
802
|
+
}
|
|
803
|
+
:scope[data-selection-mode="multiple"] > .row > .label {
|
|
1102
804
|
grid-column: 4;
|
|
805
|
+
}
|
|
806
|
+
|
|
807
|
+
.disclosure:hover {
|
|
808
|
+
color: var(--ui-text-primary);
|
|
809
|
+
background: var(--ui-surface-elevated);
|
|
810
|
+
}
|
|
811
|
+
|
|
812
|
+
.disclosure-icon {
|
|
813
|
+
display: grid;
|
|
814
|
+
place-items: center;
|
|
815
|
+
inline-size: 12px;
|
|
816
|
+
block-size: 12px;
|
|
817
|
+
transform: rotate(-90deg);
|
|
818
|
+
transition: transform var(--ui-motion-fast) var(--ui-motion-ease);
|
|
819
|
+
}
|
|
820
|
+
|
|
821
|
+
.disclosure-icon::before {
|
|
822
|
+
display: block;
|
|
823
|
+
inline-size: 0.375rem;
|
|
824
|
+
block-size: 0.375rem;
|
|
825
|
+
border-inline-end: 1.5px solid currentColor;
|
|
826
|
+
border-block-end: 1.5px solid currentColor;
|
|
827
|
+
content: "";
|
|
828
|
+
/* A chevron's ink sits below its box centre; lift it so it centres optically (in either rotation). */
|
|
829
|
+
transform: translateY(-20%) rotate(45deg);
|
|
830
|
+
}
|
|
831
|
+
|
|
832
|
+
:scope[aria-expanded="true"] > .row > .disclosure > .disclosure-icon {
|
|
833
|
+
transform: rotate(0deg);
|
|
834
|
+
}
|
|
835
|
+
.drag-handle svg {
|
|
836
|
+
display: block;
|
|
837
|
+
inline-size: 100%;
|
|
838
|
+
block-size: 100%;
|
|
839
|
+
}
|
|
840
|
+
.leading {
|
|
841
|
+
display: inline-grid;
|
|
842
|
+
place-items: center;
|
|
843
|
+
grid-column: 2;
|
|
1103
844
|
grid-row: 1;
|
|
1104
|
-
|
|
1105
|
-
|
|
1106
|
-
|
|
1107
|
-
|
|
845
|
+
inline-size: 1em;
|
|
846
|
+
block-size: 1em;
|
|
847
|
+
margin-inline-start: var(--ui-space-1);
|
|
848
|
+
color: var(--ui-text-muted);
|
|
849
|
+
/* Above the label, so a sliding name passes under the icon. */
|
|
850
|
+
position: relative;
|
|
851
|
+
z-index: 1;
|
|
1108
852
|
}
|
|
1109
853
|
|
|
1110
|
-
.
|
|
1111
|
-
|
|
1112
|
-
|
|
1113
|
-
|
|
1114
|
-
|
|
854
|
+
.leading:empty {
|
|
855
|
+
display: none;
|
|
856
|
+
}
|
|
857
|
+
:slotted(svg), :slotted(img) {
|
|
858
|
+
display: block;
|
|
859
|
+
inline-size: 1em;
|
|
860
|
+
block-size: 1em;
|
|
861
|
+
flex: none;
|
|
862
|
+
}
|
|
863
|
+
.label {
|
|
864
|
+
grid-column: 3;
|
|
865
|
+
grid-row: 1;
|
|
866
|
+
align-self: stretch;
|
|
867
|
+
display: flex;
|
|
868
|
+
align-items: center;
|
|
869
|
+
min-inline-size: 0;
|
|
870
|
+
/* The cell clips: a name longer than the row slides inside it rather than over its icons. */
|
|
871
|
+
overflow: hidden;
|
|
872
|
+
padding: var(--_ui-tree-item-label-padding-block, var(--ui-space-1))
|
|
873
|
+
var(--_ui-tree-item-label-padding-inline, var(--ui-space-2));
|
|
874
|
+
/* The length of the fade before the controls. The label's one flex child lays out no gap; this
|
|
875
|
+
is where the controller reads the length in pixels to stop a sliding name before the fade. */
|
|
876
|
+
column-gap: var(--ui-space-1);
|
|
877
|
+
}
|
|
878
|
+
.label-text {
|
|
879
|
+
display: flex;
|
|
880
|
+
align-items: center;
|
|
881
|
+
/* Stretches, so slotted content can still be the row's full-height hit area. */
|
|
882
|
+
align-self: stretch;
|
|
883
|
+
block-size: 100%;
|
|
884
|
+
min-inline-size: 0;
|
|
885
|
+
inline-size: 100%;
|
|
886
|
+
white-space: nowrap;
|
|
887
|
+
}
|
|
888
|
+
|
|
889
|
+
.label-text > :slotted(*) {
|
|
890
|
+
flex: 1 1 auto;
|
|
891
|
+
min-inline-size: 0;
|
|
892
|
+
}
|
|
893
|
+
.row:hover > .label,
|
|
894
|
+
.row:focus-within > .label,
|
|
895
|
+
:scope[data-ui-tree-item-state~="actionsVisible"] > .row > .label,
|
|
896
|
+
:scope[data-move-source] > .row > .label {
|
|
897
|
+
text-overflow: clip;
|
|
898
|
+
mask-image: linear-gradient(
|
|
899
|
+
to right,
|
|
900
|
+
#000 calc(100% - var(--_tree-actions-width, 1.75rem) - var(--ui-space-1)),
|
|
901
|
+
transparent calc(100% - var(--_tree-actions-width, 1.75rem))
|
|
902
|
+
);
|
|
1115
903
|
}
|
|
1116
904
|
|
|
905
|
+
.row:hover > .label:dir(rtl),
|
|
906
|
+
.row:focus-within > .label:dir(rtl),
|
|
907
|
+
:scope[data-ui-tree-item-state~="actionsVisible"] > .row > .label:dir(rtl),
|
|
908
|
+
:scope[data-move-source] > .row > .label:dir(rtl) {
|
|
909
|
+
mask-image: linear-gradient(
|
|
910
|
+
to left,
|
|
911
|
+
#000 calc(100% - var(--_tree-actions-width, 1.75rem) - var(--ui-space-1)),
|
|
912
|
+
transparent calc(100% - var(--_tree-actions-width, 1.75rem))
|
|
913
|
+
);
|
|
914
|
+
}
|
|
915
|
+
.row[data-ui-marquee] > .label > .label-text {
|
|
916
|
+
/* Once per pass: the controller restarts it after a rest at the end, so the name holds still
|
|
917
|
+
long enough to read rather than sliding back and forth. */
|
|
918
|
+
animation: ui-tree-item-marquee var(--_marquee-duration) linear 0.5s 1 normal forwards;
|
|
919
|
+
will-change: transform;
|
|
920
|
+
}
|
|
1117
921
|
.row[data-ui-marquee] > .label {
|
|
922
|
+
margin-inline-start: calc(-1 * var(--_marquee-lead, 0px));
|
|
923
|
+
padding-inline-start: calc(
|
|
924
|
+
var(--_marquee-lead, 0px) + var(--_ui-tree-item-label-padding-inline, var(--ui-space-2))
|
|
925
|
+
);
|
|
1118
926
|
mask-image: linear-gradient(
|
|
1119
927
|
to right,
|
|
1120
928
|
transparent var(--_marquee-icon-width, 0px),
|
|
1121
929
|
#000 calc(
|
|
1122
930
|
var(--_marquee-lead, 0px) + var(--_ui-tree-item-label-padding-inline, var(--ui-space-2))
|
|
1123
|
-
)
|
|
931
|
+
),
|
|
932
|
+
#000 calc(100% - var(--_tree-actions-width, 1.75rem) - var(--ui-space-1)),
|
|
933
|
+
transparent calc(100% - var(--_tree-actions-width, 1.75rem))
|
|
1124
934
|
);
|
|
1125
935
|
}
|
|
1126
936
|
|
|
1127
|
-
/* Persistent content has its own column on touch. Fade only the label's end. */
|
|
1128
|
-
[data-component~="ui-tree-item"][data-ui-tree-item-state~="actionsVisible"] > .row > .label {
|
|
1129
|
-
mask-image: linear-gradient(to right, #000 calc(100% - var(--ui-space-1)), transparent 100%);
|
|
1130
|
-
}
|
|
1131
|
-
[data-component~="ui-tree-item"][data-ui-tree-item-state~="actionsVisible"]
|
|
1132
|
-
> .row
|
|
1133
|
-
> .label:dir(rtl) {
|
|
1134
|
-
mask-image: linear-gradient(to left, #000 calc(100% - var(--ui-space-1)), transparent 100%);
|
|
1135
|
-
}
|
|
1136
|
-
|
|
1137
937
|
.row[data-ui-marquee] > .label:dir(rtl) {
|
|
1138
938
|
mask-image: linear-gradient(
|
|
1139
939
|
to left,
|
|
1140
940
|
transparent var(--_marquee-icon-width, 0px),
|
|
1141
941
|
#000 calc(
|
|
1142
942
|
var(--_marquee-lead, 0px) + var(--_ui-tree-item-label-padding-inline, var(--ui-space-2))
|
|
1143
|
-
)
|
|
943
|
+
),
|
|
944
|
+
#000 calc(100% - var(--_tree-actions-width, 1.75rem) - var(--ui-space-1)),
|
|
945
|
+
transparent calc(100% - var(--_tree-actions-width, 1.75rem))
|
|
1144
946
|
);
|
|
1145
947
|
}
|
|
1146
|
-
|
|
1147
|
-
|
|
1148
|
-
|
|
948
|
+
@media (prefers-reduced-motion: reduce) {
|
|
949
|
+
.row[data-ui-marquee] > .label > .label-text {
|
|
950
|
+
animation: none;
|
|
951
|
+
}
|
|
1149
952
|
}
|
|
1150
953
|
|
|
1151
|
-
|
|
1152
|
-
|
|
954
|
+
.row:hover > .label > :slotted(*), .row:focus-within > .label > :slotted(*) {
|
|
955
|
+
text-overflow: clip;
|
|
1153
956
|
}
|
|
1154
|
-
}
|
|
1155
|
-
|
|
1156
|
-
/* The handle sits beside what it drags. A leaf row has no disclosure, so the handle takes that
|
|
1157
|
-
empty column, right before the icon; a branch's disclosure is there, so its handle sits just
|
|
1158
|
-
outside the row. It is bare until pointed at: a resting surface behind it read as a faint
|
|
1159
|
-
patch rather than as a control. */
|
|
1160
|
-
.drag-handle {
|
|
1161
|
-
position: absolute;
|
|
1162
|
-
z-index: 2;
|
|
1163
|
-
inset-block-start: 50%;
|
|
1164
|
-
inset-inline-start: 0;
|
|
1165
|
-
inline-size: var(--_tree-disclosure-size);
|
|
1166
|
-
block-size: 24px;
|
|
1167
|
-
display: grid;
|
|
1168
|
-
place-items: center;
|
|
1169
|
-
padding: 5px 2px;
|
|
1170
|
-
color: var(--ui-text-muted);
|
|
1171
|
-
background: transparent;
|
|
1172
|
-
border: 0;
|
|
1173
|
-
border-radius: var(--ui-radius-sm);
|
|
1174
|
-
cursor: grab;
|
|
1175
|
-
/* Hidden until the row is hovered, but always hittable: the handle sits outside the row, and moving
|
|
1176
|
-
the pointer onto it must not hide it on the way. */
|
|
1177
|
-
opacity: 0;
|
|
1178
|
-
transform: translateY(-50%);
|
|
1179
|
-
transition: opacity var(--ui-motion-fast) var(--ui-motion-ease);
|
|
1180
|
-
}
|
|
1181
957
|
|
|
1182
|
-
.
|
|
1183
|
-
|
|
1184
|
-
|
|
1185
|
-
|
|
1186
|
-
|
|
1187
|
-
|
|
1188
|
-
|
|
1189
|
-
|
|
1190
|
-
|
|
1191
|
-
|
|
1192
|
-
|
|
1193
|
-
|
|
1194
|
-
.drag-handle:focus-visible {
|
|
1195
|
-
color: var(--ui-text-primary);
|
|
1196
|
-
background: var(--ui-surface-hover);
|
|
1197
|
-
}
|
|
1198
|
-
|
|
1199
|
-
.drag-handle:active {
|
|
1200
|
-
cursor: grabbing;
|
|
1201
|
-
}
|
|
958
|
+
.actions {
|
|
959
|
+
position: absolute;
|
|
960
|
+
z-index: 1;
|
|
961
|
+
inset-block: 0;
|
|
962
|
+
inset-inline-end: 0;
|
|
963
|
+
display: inline-flex;
|
|
964
|
+
align-items: center;
|
|
965
|
+
min-inline-size: 0;
|
|
966
|
+
opacity: 0;
|
|
967
|
+
pointer-events: none;
|
|
968
|
+
transition: opacity var(--ui-motion-fast) var(--ui-motion-ease);
|
|
969
|
+
}
|
|
1202
970
|
|
|
1203
|
-
.
|
|
1204
|
-
|
|
1205
|
-
|
|
1206
|
-
|
|
1207
|
-
|
|
1208
|
-
|
|
1209
|
-
|
|
1210
|
-
|
|
1211
|
-
|
|
1212
|
-
|
|
971
|
+
.row:hover > .actions,
|
|
972
|
+
.row:focus-within > .actions,
|
|
973
|
+
:scope[data-ui-tree-item-state~="actionsVisible"] > .row > .actions,
|
|
974
|
+
:scope[data-move-source] > .row > .actions {
|
|
975
|
+
opacity: 1;
|
|
976
|
+
pointer-events: auto;
|
|
977
|
+
}
|
|
978
|
+
@media (hover: none), (pointer: coarse) {
|
|
979
|
+
.row {
|
|
980
|
+
grid-template-columns: var(--_tree-disclosure-size) auto minmax(0, 1fr) auto;
|
|
981
|
+
}
|
|
982
|
+
|
|
983
|
+
.actions {
|
|
984
|
+
position: static;
|
|
985
|
+
grid-column: 4;
|
|
986
|
+
grid-row: 1;
|
|
987
|
+
padding-inline-start: 0;
|
|
988
|
+
background: none;
|
|
989
|
+
opacity: 1;
|
|
990
|
+
pointer-events: auto;
|
|
991
|
+
}
|
|
992
|
+
|
|
993
|
+
.row:is(:hover, :focus-within) > .label,
|
|
994
|
+
.row:is(:hover, :focus-within) > .label:dir(rtl),
|
|
995
|
+
:scope[data-move-source] > .row > .label,
|
|
996
|
+
:scope[data-move-source] > .row > .label:dir(rtl) {
|
|
997
|
+
mask-image: none;
|
|
998
|
+
}
|
|
999
|
+
|
|
1000
|
+
.row[data-ui-marquee] > .label {
|
|
1001
|
+
mask-image: linear-gradient(
|
|
1002
|
+
to right,
|
|
1003
|
+
transparent var(--_marquee-icon-width, 0px),
|
|
1004
|
+
#000 calc(
|
|
1005
|
+
var(--_marquee-lead, 0px) + var(--_ui-tree-item-label-padding-inline, var(--ui-space-2))
|
|
1006
|
+
)
|
|
1007
|
+
);
|
|
1008
|
+
}
|
|
1009
|
+
|
|
1010
|
+
/* Persistent content has its own column on touch. Fade only the label's end. */
|
|
1011
|
+
:scope[data-ui-tree-item-state~="actionsVisible"] > .row > .label {
|
|
1012
|
+
mask-image: linear-gradient(to right, #000 calc(100% - var(--ui-space-1)), transparent 100%);
|
|
1013
|
+
}
|
|
1014
|
+
:scope[data-ui-tree-item-state~="actionsVisible"] > .row > .label:dir(rtl) {
|
|
1015
|
+
mask-image: linear-gradient(to left, #000 calc(100% - var(--ui-space-1)), transparent 100%);
|
|
1016
|
+
}
|
|
1017
|
+
|
|
1018
|
+
.row[data-ui-marquee] > .label:dir(rtl) {
|
|
1019
|
+
mask-image: linear-gradient(
|
|
1020
|
+
to left,
|
|
1021
|
+
transparent var(--_marquee-icon-width, 0px),
|
|
1022
|
+
#000 calc(
|
|
1023
|
+
var(--_marquee-lead, 0px) + var(--_ui-tree-item-label-padding-inline, var(--ui-space-2))
|
|
1024
|
+
)
|
|
1025
|
+
);
|
|
1026
|
+
}
|
|
1027
|
+
|
|
1028
|
+
:scope[data-selection-mode="multiple"] > .row {
|
|
1029
|
+
grid-template-columns: var(--_tree-disclosure-size) 1.25rem auto minmax(0, 1fr) auto;
|
|
1030
|
+
}
|
|
1031
|
+
|
|
1032
|
+
:scope[data-selection-mode="multiple"] > .row > .actions {
|
|
1033
|
+
grid-column: 5;
|
|
1034
|
+
}
|
|
1035
|
+
}
|
|
1036
|
+
.drag-handle {
|
|
1037
|
+
position: absolute;
|
|
1038
|
+
z-index: 2;
|
|
1039
|
+
inset-block-start: 50%;
|
|
1040
|
+
inset-inline-start: 0;
|
|
1041
|
+
inline-size: var(--_tree-disclosure-size);
|
|
1042
|
+
block-size: 24px;
|
|
1043
|
+
display: grid;
|
|
1044
|
+
place-items: center;
|
|
1045
|
+
padding: 5px 2px;
|
|
1046
|
+
color: var(--ui-text-muted);
|
|
1047
|
+
background: transparent;
|
|
1048
|
+
border: 0;
|
|
1049
|
+
border-radius: var(--ui-radius-sm);
|
|
1050
|
+
cursor: grab;
|
|
1051
|
+
/* Hidden until the row is hovered, but always hittable: the handle sits outside the row, and moving
|
|
1052
|
+
the pointer onto it must not hide it on the way. */
|
|
1053
|
+
opacity: 0;
|
|
1054
|
+
transform: translateY(-50%);
|
|
1055
|
+
transition: opacity var(--ui-motion-fast) var(--ui-motion-ease);
|
|
1056
|
+
}
|
|
1213
1057
|
|
|
1214
|
-
.
|
|
1215
|
-
.
|
|
1216
|
-
|
|
1217
|
-
|
|
1218
|
-
|
|
1219
|
-
|
|
1220
|
-
block-size: 7px;
|
|
1221
|
-
border: var(--ui-accent-line-width) solid var(--_ui-tree-drop-color, var(--ui-accent-solid));
|
|
1222
|
-
border-radius: var(--ui-radius-round);
|
|
1223
|
-
background: var(--ui-surface-elevated);
|
|
1224
|
-
transform: translateY(-50%);
|
|
1225
|
-
}
|
|
1058
|
+
.row:hover .drag-handle,
|
|
1059
|
+
.drag-handle:hover,
|
|
1060
|
+
.drag-handle:focus-visible,
|
|
1061
|
+
:scope[data-dragging] > .row > .drag-handle {
|
|
1062
|
+
opacity: 1;
|
|
1063
|
+
}
|
|
1226
1064
|
|
|
1227
|
-
.
|
|
1228
|
-
|
|
1229
|
-
}
|
|
1230
|
-
.drop-indicator::after {
|
|
1231
|
-
inset-inline-end: -1px;
|
|
1232
|
-
}
|
|
1065
|
+
:scope[data-ui-tree-item-state~="isContainer"] > .row > .drag-handle {
|
|
1066
|
+
inset-inline-start: calc(-1 * var(--_tree-disclosure-size) - 2px);
|
|
1067
|
+
}
|
|
1233
1068
|
|
|
1234
|
-
|
|
1235
|
-
|
|
1236
|
-
|
|
1237
|
-
}
|
|
1069
|
+
.drag-handle:hover, .drag-handle:focus-visible {
|
|
1070
|
+
color: var(--ui-text-primary);
|
|
1071
|
+
background: var(--ui-surface-hover);
|
|
1072
|
+
}
|
|
1238
1073
|
|
|
1239
|
-
|
|
1240
|
-
|
|
1241
|
-
|
|
1242
|
-
}
|
|
1074
|
+
.drag-handle:active {
|
|
1075
|
+
cursor: grabbing;
|
|
1076
|
+
}
|
|
1243
1077
|
|
|
1244
|
-
.
|
|
1245
|
-
|
|
1246
|
-
|
|
1078
|
+
.drop-indicator {
|
|
1079
|
+
position: absolute;
|
|
1080
|
+
z-index: 3;
|
|
1081
|
+
inset-inline: 1px;
|
|
1082
|
+
display: none;
|
|
1083
|
+
block-size: var(--ui-accent-line-width);
|
|
1084
|
+
border-radius: var(--ui-radius-round);
|
|
1085
|
+
background: var(--_ui-tree-drop-color, var(--ui-accent-solid));
|
|
1086
|
+
pointer-events: none;
|
|
1087
|
+
}
|
|
1247
1088
|
|
|
1248
|
-
|
|
1249
|
-
|
|
1250
|
-
|
|
1089
|
+
.drop-indicator::before, .drop-indicator::after {
|
|
1090
|
+
content: "";
|
|
1091
|
+
position: absolute;
|
|
1092
|
+
inset-block-start: 50%;
|
|
1093
|
+
inline-size: 7px;
|
|
1094
|
+
block-size: 7px;
|
|
1095
|
+
border: var(--ui-accent-line-width) solid var(--_ui-tree-drop-color, var(--ui-accent-solid));
|
|
1096
|
+
border-radius: var(--ui-radius-round);
|
|
1097
|
+
background: var(--ui-surface-elevated);
|
|
1098
|
+
transform: translateY(-50%);
|
|
1099
|
+
}
|
|
1251
1100
|
|
|
1252
|
-
|
|
1253
|
-
|
|
1254
|
-
}
|
|
1101
|
+
.drop-indicator::before {
|
|
1102
|
+
inset-inline-start: -1px;
|
|
1103
|
+
}
|
|
1104
|
+
.drop-indicator::after {
|
|
1105
|
+
inset-inline-end: -1px;
|
|
1106
|
+
}
|
|
1255
1107
|
|
|
1256
|
-
|
|
1257
|
-
|
|
1258
|
-
|
|
1259
|
-
|
|
1260
|
-
> .drag-handle {
|
|
1261
|
-
position: relative;
|
|
1262
|
-
grid-column: 1;
|
|
1263
|
-
grid-row: 1;
|
|
1264
|
-
inset: auto;
|
|
1265
|
-
inline-size: 44px;
|
|
1266
|
-
block-size: 44px;
|
|
1267
|
-
padding: 14px;
|
|
1268
|
-
opacity: 1;
|
|
1269
|
-
transform: none;
|
|
1270
|
-
cursor: pointer;
|
|
1271
|
-
}
|
|
1108
|
+
:scope[data-drop-position="before"] > .row > .row-drop-indicator {
|
|
1109
|
+
display: block;
|
|
1110
|
+
inset-block-start: calc(-0.5 * var(--ui-accent-line-width));
|
|
1111
|
+
}
|
|
1272
1112
|
|
|
1273
|
-
|
|
1274
|
-
|
|
1275
|
-
|
|
1276
|
-
|
|
1277
|
-
grid-column: 3;
|
|
1278
|
-
}
|
|
1279
|
-
html[data-ui-input-modality="touch"] [data-component~="ui-tree-item"] .label {
|
|
1280
|
-
grid-column: 4;
|
|
1281
|
-
}
|
|
1113
|
+
:scope[data-drop-position="after"] > .subtree-drop-indicator {
|
|
1114
|
+
display: block;
|
|
1115
|
+
inset-block-end: calc(-0.5 * var(--ui-accent-line-width));
|
|
1116
|
+
}
|
|
1282
1117
|
|
|
1283
|
-
|
|
1284
|
-
|
|
1285
|
-
|
|
1286
|
-
grid-template-columns: 44px var(--_tree-disclosure-size) 44px auto minmax(0, 1fr);
|
|
1287
|
-
}
|
|
1288
|
-
html[data-ui-input-modality="touch"]
|
|
1289
|
-
[data-component~="ui-tree-item"][data-selection-mode="multiple"]
|
|
1290
|
-
> .row
|
|
1291
|
-
> .selection-hit {
|
|
1292
|
-
grid-column: 3;
|
|
1293
|
-
inline-size: 44px;
|
|
1294
|
-
block-size: 44px;
|
|
1295
|
-
}
|
|
1296
|
-
html[data-ui-input-modality="touch"]
|
|
1297
|
-
[data-component~="ui-tree-item"][data-selection-mode="multiple"]
|
|
1298
|
-
> .row
|
|
1299
|
-
> .leading {
|
|
1300
|
-
grid-column: 4;
|
|
1301
|
-
}
|
|
1302
|
-
html[data-ui-input-modality="touch"]
|
|
1303
|
-
[data-component~="ui-tree-item"][data-selection-mode="multiple"]
|
|
1304
|
-
> .row
|
|
1305
|
-
> .label {
|
|
1306
|
-
grid-column: 5;
|
|
1307
|
-
}
|
|
1118
|
+
.children[hidden] {
|
|
1119
|
+
display: none;
|
|
1120
|
+
}
|
|
1308
1121
|
|
|
1309
|
-
|
|
1310
|
-
|
|
1311
|
-
grid-template-columns: 44px var(--_tree-disclosure-size) auto minmax(0, 1fr) auto;
|
|
1122
|
+
:scope:where(:scope):is(html[data-ui-input-modality="touch"] *) {
|
|
1123
|
+
--_tree-row-min-height: 44px;
|
|
1312
1124
|
}
|
|
1313
1125
|
|
|
1314
|
-
html[data-ui-input-modality="touch"]
|
|
1315
|
-
grid-
|
|
1126
|
+
html[data-ui-input-modality="touch"] :scope .row {
|
|
1127
|
+
grid-template-columns: 44px var(--_tree-disclosure-size) auto minmax(0, 1fr);
|
|
1316
1128
|
}
|
|
1317
1129
|
|
|
1130
|
+
html[data-ui-input-modality="touch"] :scope .drag-handle,
|
|
1318
1131
|
html[data-ui-input-modality="touch"]
|
|
1319
|
-
[data-
|
|
1320
|
-
> .row
|
|
1321
|
-
|
|
1132
|
+
:scope[data-ui-tree-item-state~="isContainer"]
|
|
1133
|
+
> .row
|
|
1134
|
+
> .drag-handle {
|
|
1135
|
+
position: relative;
|
|
1136
|
+
grid-column: 1;
|
|
1137
|
+
grid-row: 1;
|
|
1138
|
+
inset: auto;
|
|
1139
|
+
inline-size: 44px;
|
|
1140
|
+
block-size: 44px;
|
|
1141
|
+
padding: 14px;
|
|
1142
|
+
opacity: 1;
|
|
1143
|
+
transform: none;
|
|
1144
|
+
cursor: pointer;
|
|
1322
1145
|
}
|
|
1323
1146
|
|
|
1147
|
+
html[data-ui-input-modality="touch"] :scope .disclosure {
|
|
1148
|
+
grid-column: 2;
|
|
1149
|
+
}
|
|
1150
|
+
html[data-ui-input-modality="touch"] :scope .leading {
|
|
1151
|
+
grid-column: 3;
|
|
1152
|
+
}
|
|
1153
|
+
html[data-ui-input-modality="touch"] :scope .label {
|
|
1154
|
+
grid-column: 4;
|
|
1155
|
+
}
|
|
1156
|
+
|
|
1157
|
+
html[data-ui-input-modality="touch"] :scope[data-selection-mode="multiple"] > .row {
|
|
1158
|
+
grid-template-columns: 44px var(--_tree-disclosure-size) 44px auto minmax(0, 1fr);
|
|
1159
|
+
}
|
|
1324
1160
|
html[data-ui-input-modality="touch"]
|
|
1325
|
-
[data-
|
|
1161
|
+
:scope[data-selection-mode="multiple"]
|
|
1326
1162
|
> .row
|
|
1327
|
-
> .
|
|
1328
|
-
grid-column:
|
|
1163
|
+
> .selection-hit {
|
|
1164
|
+
grid-column: 3;
|
|
1165
|
+
inline-size: 44px;
|
|
1166
|
+
block-size: 44px;
|
|
1329
1167
|
}
|
|
1330
|
-
|
|
1331
|
-
|
|
1332
|
-
@media (prefers-reduced-motion: reduce) {
|
|
1333
|
-
.row,
|
|
1334
|
-
.disclosure-icon,
|
|
1335
|
-
.drag-handle {
|
|
1336
|
-
transition: none;
|
|
1168
|
+
html[data-ui-input-modality="touch"] :scope[data-selection-mode="multiple"] > .row > .leading {
|
|
1169
|
+
grid-column: 4;
|
|
1337
1170
|
}
|
|
1338
|
-
|
|
1171
|
+
html[data-ui-input-modality="touch"] :scope[data-selection-mode="multiple"] > .row > .label {
|
|
1172
|
+
grid-column: 5;
|
|
1173
|
+
}
|
|
1174
|
+
|
|
1175
|
+
@media (hover: none), (pointer: coarse) {
|
|
1176
|
+
html[data-ui-input-modality="touch"] :scope .row {
|
|
1177
|
+
grid-template-columns: 44px var(--_tree-disclosure-size) auto minmax(0, 1fr) auto;
|
|
1178
|
+
}
|
|
1339
1179
|
|
|
1340
|
-
|
|
1341
|
-
|
|
1342
|
-
|
|
1343
|
-
|
|
1180
|
+
html[data-ui-input-modality="touch"] :scope .actions {
|
|
1181
|
+
grid-column: 5;
|
|
1182
|
+
}
|
|
1183
|
+
|
|
1184
|
+
html[data-ui-input-modality="touch"] :scope[data-selection-mode="multiple"] > .row {
|
|
1185
|
+
grid-template-columns: 44px var(--_tree-disclosure-size) 44px auto minmax(0, 1fr) auto;
|
|
1186
|
+
}
|
|
1187
|
+
|
|
1188
|
+
html[data-ui-input-modality="touch"] :scope[data-selection-mode="multiple"] > .row > .actions {
|
|
1189
|
+
grid-column: 6;
|
|
1190
|
+
}
|
|
1344
1191
|
}
|
|
1345
|
-
|
|
1346
|
-
|
|
1347
|
-
|
|
1348
|
-
|
|
1192
|
+
|
|
1193
|
+
@media (prefers-reduced-motion: reduce) {
|
|
1194
|
+
.row, .disclosure-icon, .drag-handle {
|
|
1195
|
+
transition: none;
|
|
1196
|
+
}
|
|
1349
1197
|
}
|
|
1350
|
-
}
|
|
1351
1198
|
|
|
1352
|
-
|
|
1353
|
-
|
|
1354
|
-
|
|
1199
|
+
@media (forced-colors: active) {
|
|
1200
|
+
:scope:focus-visible > .row {
|
|
1201
|
+
outline: var(--ui-focus-width) solid Highlight;
|
|
1202
|
+
outline-offset: calc(-1 * var(--ui-focus-width));
|
|
1203
|
+
}
|
|
1204
|
+
:scope[data-ui-tree-item-state~="selected"]:not(:focus-visible):not([aria-disabled="true"])
|
|
1205
|
+
> .row {
|
|
1206
|
+
outline: var(--ui-border-width) solid Highlight;
|
|
1207
|
+
outline-offset: calc(-1 * var(--ui-border-width));
|
|
1208
|
+
}
|
|
1209
|
+
}
|
|
1210
|
+
:scope:where(:scope):is([hidden]) {
|
|
1211
|
+
display: none;
|
|
1212
|
+
}
|
|
1355
1213
|
}
|
|
1356
1214
|
</style>
|