@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/UiFormField.vue
CHANGED
|
@@ -1,8 +1,14 @@
|
|
|
1
|
-
<!-- Generated by HTML Next 1.0.0-alpha.
|
|
1
|
+
<!-- Generated by HTML Next 1.0.0-alpha.51 for Vue 3.5. Do not edit. -->
|
|
2
2
|
<script setup lang="ts">
|
|
3
3
|
import { computed, getCurrentInstance, ref, watchSyncEffect } from 'vue'
|
|
4
4
|
import type { PropType } from 'vue'
|
|
5
|
-
import {
|
|
5
|
+
import {
|
|
6
|
+
checkHydratedRoot,
|
|
7
|
+
createDispatch,
|
|
8
|
+
nativeAttrs,
|
|
9
|
+
useComponentHost,
|
|
10
|
+
useReflectedProp,
|
|
11
|
+
} from './host'
|
|
6
12
|
import { checkedProp, propValidityState, vPropValidity } from './props'
|
|
7
13
|
|
|
8
14
|
defineOptions({ inheritAttrs: false })
|
|
@@ -68,57 +74,11 @@ void checkedProps.value
|
|
|
68
74
|
watchSyncEffect(() => {
|
|
69
75
|
void checkedProps.value
|
|
70
76
|
})
|
|
71
|
-
|
|
72
|
-
const names = Object.keys(attrs)
|
|
73
|
-
if (!names.some((name) => Object.hasOwn(Object.prototype, name))) return attrs
|
|
74
|
-
return Object.fromEntries(names.map((name) => [
|
|
75
|
-
Object.hasOwn(Object.prototype, name)
|
|
76
|
-
? name === '__proto__' ? '__Proto__' : name[0]!.toUpperCase() + name.slice(1)
|
|
77
|
-
: name,
|
|
78
|
-
attrs[name],
|
|
79
|
-
]))
|
|
80
|
-
}
|
|
81
|
-
const componentInstance = getCurrentInstance()
|
|
82
|
-
function reflectedProp(
|
|
83
|
-
name: string,
|
|
84
|
-
kebab: string,
|
|
85
|
-
value: unknown,
|
|
86
|
-
fallback: string | undefined,
|
|
87
|
-
bound: boolean,
|
|
88
|
-
separator?: string,
|
|
89
|
-
): string | undefined {
|
|
90
|
-
const incoming = componentInstance?.vnode.props
|
|
91
|
-
if (
|
|
92
|
-
!bound
|
|
93
|
-
&& (incoming === null || incoming === undefined
|
|
94
|
-
|| (!Object.hasOwn(incoming, name) && !Object.hasOwn(incoming, kebab)))
|
|
95
|
-
) return fallback
|
|
96
|
-
if (value === null || value === undefined) return undefined
|
|
97
|
-
return Array.isArray(value) && separator !== undefined
|
|
98
|
-
? value.join(separator)
|
|
99
|
-
: typeof value === 'object'
|
|
100
|
-
? JSON.stringify(value)
|
|
101
|
-
: String(value)
|
|
102
|
-
}
|
|
77
|
+
const reflectedProp = useReflectedProp()
|
|
103
78
|
const hydrationInstance = getCurrentInstance()
|
|
104
79
|
|
|
105
80
|
const root = ref<HTMLElement | null>(null)
|
|
106
|
-
|
|
107
|
-
if (
|
|
108
|
-
typeof window !== 'undefined' && hydrationNode != null
|
|
109
|
-
&& (!(hydrationNode instanceof Element) || hydrationNode.localName !== ('div'))
|
|
110
|
-
) {
|
|
111
|
-
throw Object.assign(
|
|
112
|
-
new Error('HR005: Server markup for <ui-form-field> has an incompatible root.'),
|
|
113
|
-
{
|
|
114
|
-
name: 'HtmlDiagnosticError',
|
|
115
|
-
diagnostic: Object.freeze({
|
|
116
|
-
code: 'HR005',
|
|
117
|
-
message: 'Server markup for <ui-form-field> has an incompatible root.',
|
|
118
|
-
}),
|
|
119
|
-
},
|
|
120
|
-
)
|
|
121
|
-
}
|
|
81
|
+
checkHydratedRoot('div', 'ui-form-field')
|
|
122
82
|
|
|
123
83
|
/** The values the styles' :host-state() rules test. */
|
|
124
84
|
const hostState = computed(() =>
|
|
@@ -152,7 +112,7 @@ useComponentHost(() => import('../components/ui-form-field/ui-form-field.js'), {
|
|
|
152
112
|
|
|
153
113
|
<template>
|
|
154
114
|
<div
|
|
155
|
-
|
|
115
|
+
class="ui-form-field"
|
|
156
116
|
v-bind="nativeAttrs($attrs)"
|
|
157
117
|
v-prop-validity="{ contract: propValidityContract, values: { ...props } }"
|
|
158
118
|
:data-disabled="reflectedProp('disabled', 'disabled', checkedProps.disabled, undefined, false)"
|
|
@@ -202,81 +162,80 @@ useComponentHost(() => import('../components/ui-form-field/ui-form-field.js'), {
|
|
|
202
162
|
inherits: false;
|
|
203
163
|
}
|
|
204
164
|
|
|
205
|
-
[data-component~="ui-form-field"] {
|
|
206
|
-
/* Hooks do not inherit, so the parts below read them from the root. */
|
|
207
|
-
--_ui-form-field-danger: var(--ui-form-field-danger);
|
|
208
|
-
--_ui-form-field-help-min-block-size: var(--ui-form-field-help-min-block-size);
|
|
209
|
-
--_ui-form-field-label-text: var(--ui-form-field-label-text);
|
|
210
|
-
--_ui-form-field-label-font-size: var(--ui-form-field-label-font-size);
|
|
211
|
-
--_ui-form-field-help-text: var(--ui-form-field-help-text);
|
|
212
|
-
--_ui-form-field-help-font-size: var(--ui-form-field-help-font-size);
|
|
213
|
-
|
|
214
|
-
display: grid;
|
|
215
|
-
gap: var(--ui-space-2);
|
|
216
|
-
min-inline-size: var(--ui-form-field-min-inline-size, 0);
|
|
217
|
-
align-content: start;
|
|
218
|
-
color: var(--ui-text-primary);
|
|
219
|
-
}
|
|
220
|
-
|
|
221
165
|
/* Each named region styles whatever fills it, however it was slotted (slot="…" in HTML, #label
|
|
222
166
|
in Vue), and generates no box of its own, so an empty region adds no gap. */
|
|
223
|
-
.label,
|
|
224
|
-
.help,
|
|
225
|
-
.error {
|
|
226
|
-
display: contents;
|
|
227
|
-
}
|
|
228
|
-
|
|
229
|
-
.label {
|
|
230
|
-
color: var(--_ui-form-field-label-text, var(--ui-text-secondary));
|
|
231
|
-
font-size: var(--_ui-form-field-label-font-size, var(--ui-font-size-sm));
|
|
232
|
-
}
|
|
233
167
|
|
|
234
168
|
/* A label action, such as a small help button, sits after the label text in a box one line
|
|
235
169
|
tall, centred on the first line and overflowing it. A button taller than a line of label
|
|
236
170
|
text then never makes this field's label row taller than its neighbours' in a grid row. */
|
|
237
|
-
.label:has(> .label-action > *) {
|
|
238
|
-
display: flex;
|
|
239
|
-
align-items: start;
|
|
240
|
-
gap: var(--ui-space-1);
|
|
241
|
-
}
|
|
242
|
-
|
|
243
|
-
.label-action {
|
|
244
|
-
display: flex;
|
|
245
|
-
align-items: unsafe center;
|
|
246
|
-
block-size: 1lh;
|
|
247
|
-
}
|
|
248
|
-
|
|
249
|
-
.label-action:not(:has(> *)) {
|
|
250
|
-
display: none;
|
|
251
|
-
}
|
|
252
|
-
|
|
253
|
-
.help {
|
|
254
|
-
color: var(--_ui-form-field-help-text, var(--ui-text-muted));
|
|
255
|
-
font-size: var(--_ui-form-field-help-font-size, var(--ui-font-size-sm));
|
|
256
|
-
line-height: var(--ui-line-height-md);
|
|
257
|
-
}
|
|
258
|
-
|
|
259
|
-
.help > :slotted(*) {
|
|
260
|
-
min-block-size: var(--_ui-form-field-help-min-block-size, 0);
|
|
261
|
-
}
|
|
262
|
-
|
|
263
|
-
.error {
|
|
264
|
-
display: none;
|
|
265
|
-
}
|
|
266
|
-
|
|
267
|
-
[data-component~="ui-form-field"][data-ui-form-field-state~="invalid"] .error {
|
|
268
|
-
display: contents;
|
|
269
|
-
}
|
|
270
171
|
|
|
271
172
|
/* An error reads in the danger colour, the one the invalid control's border takes. */
|
|
272
|
-
.error,
|
|
273
|
-
:slotted([role="alert"]) {
|
|
274
|
-
color: var(--_ui-form-field-danger, var(--ui-field-danger, var(--ui-danger)));
|
|
275
|
-
font-size: var(--ui-font-size-sm);
|
|
276
|
-
}
|
|
277
173
|
|
|
278
174
|
/* A component that sets its display still honours the hidden attribute on its root. */
|
|
279
|
-
|
|
280
|
-
|
|
175
|
+
|
|
176
|
+
@scope (.ui-form-field) {
|
|
177
|
+
:scope:where(:scope) {
|
|
178
|
+
/* Hooks do not inherit, so the parts below read them from the root. */
|
|
179
|
+
--_ui-form-field-danger: var(--ui-form-field-danger);
|
|
180
|
+
--_ui-form-field-help-min-block-size: var(--ui-form-field-help-min-block-size);
|
|
181
|
+
--_ui-form-field-label-text: var(--ui-form-field-label-text);
|
|
182
|
+
--_ui-form-field-label-font-size: var(--ui-form-field-label-font-size);
|
|
183
|
+
--_ui-form-field-help-text: var(--ui-form-field-help-text);
|
|
184
|
+
--_ui-form-field-help-font-size: var(--ui-form-field-help-font-size);
|
|
185
|
+
|
|
186
|
+
display: grid;
|
|
187
|
+
gap: var(--ui-space-2);
|
|
188
|
+
min-inline-size: var(--ui-form-field-min-inline-size, 0);
|
|
189
|
+
align-content: start;
|
|
190
|
+
color: var(--ui-text-primary);
|
|
191
|
+
}
|
|
192
|
+
.label, .help, .error {
|
|
193
|
+
display: contents;
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
.label {
|
|
197
|
+
color: var(--_ui-form-field-label-text, var(--ui-text-secondary));
|
|
198
|
+
font-size: var(--_ui-form-field-label-font-size, var(--ui-font-size-sm));
|
|
199
|
+
}
|
|
200
|
+
.label:has(> .label-action > *) {
|
|
201
|
+
display: flex;
|
|
202
|
+
align-items: start;
|
|
203
|
+
gap: var(--ui-space-1);
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
.label-action {
|
|
207
|
+
display: flex;
|
|
208
|
+
align-items: unsafe center;
|
|
209
|
+
block-size: 1lh;
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
.label-action:not(:has(> *)) {
|
|
213
|
+
display: none;
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
.help {
|
|
217
|
+
color: var(--_ui-form-field-help-text, var(--ui-text-muted));
|
|
218
|
+
font-size: var(--_ui-form-field-help-font-size, var(--ui-font-size-sm));
|
|
219
|
+
line-height: var(--ui-line-height-md);
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
.help > :slotted(*) {
|
|
223
|
+
min-block-size: var(--_ui-form-field-help-min-block-size, 0);
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
.error {
|
|
227
|
+
display: none;
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
:scope[data-ui-form-field-state~="invalid"] .error {
|
|
231
|
+
display: contents;
|
|
232
|
+
}
|
|
233
|
+
.error, :slotted([role="alert"]) {
|
|
234
|
+
color: var(--_ui-form-field-danger, var(--ui-field-danger, var(--ui-danger)));
|
|
235
|
+
font-size: var(--ui-font-size-sm);
|
|
236
|
+
}
|
|
237
|
+
:scope:where(:scope):is([hidden]) {
|
|
238
|
+
display: none;
|
|
239
|
+
}
|
|
281
240
|
}
|
|
282
241
|
</style>
|
package/vue/UiGrid.d.ts
CHANGED
|
@@ -30,9 +30,9 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
|
|
|
30
30
|
default: null;
|
|
31
31
|
};
|
|
32
32
|
}>> & Readonly<{}>, {
|
|
33
|
+
min: "sm" | "md" | "lg" | null;
|
|
33
34
|
columns: number | null;
|
|
34
35
|
gap: "s" | "xs" | "m" | "l" | "xl" | null;
|
|
35
|
-
min: "sm" | "md" | "lg" | null;
|
|
36
36
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
37
37
|
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
38
38
|
declare const _default: typeof __VLS_export;
|
package/vue/UiGrid.vue
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
<!-- Generated by HTML Next 1.0.0-alpha.
|
|
1
|
+
<!-- Generated by HTML Next 1.0.0-alpha.51 for Vue 3.5. Do not edit. -->
|
|
2
2
|
<script setup lang="ts">
|
|
3
|
-
import { computed,
|
|
3
|
+
import { computed, watchSyncEffect } from 'vue'
|
|
4
4
|
import type { PropType } from 'vue'
|
|
5
|
+
import { checkHydratedRoot, nativeAttrs, useReflectedProp } from './host'
|
|
5
6
|
import { checkedProp, vPropValidity } from './props'
|
|
6
7
|
|
|
7
8
|
defineOptions({ inheritAttrs: false })
|
|
@@ -66,53 +67,9 @@ void checkedProps.value
|
|
|
66
67
|
watchSyncEffect(() => {
|
|
67
68
|
void checkedProps.value
|
|
68
69
|
})
|
|
69
|
-
|
|
70
|
-
const names = Object.keys(attrs)
|
|
71
|
-
if (!names.some((name) => Object.hasOwn(Object.prototype, name))) return attrs
|
|
72
|
-
return Object.fromEntries(names.map((name) => [
|
|
73
|
-
Object.hasOwn(Object.prototype, name)
|
|
74
|
-
? name === '__proto__' ? '__Proto__' : name[0]!.toUpperCase() + name.slice(1)
|
|
75
|
-
: name,
|
|
76
|
-
attrs[name],
|
|
77
|
-
]))
|
|
78
|
-
}
|
|
79
|
-
const componentInstance = getCurrentInstance()
|
|
80
|
-
function reflectedProp(
|
|
81
|
-
name: string,
|
|
82
|
-
kebab: string,
|
|
83
|
-
value: unknown,
|
|
84
|
-
fallback: string | undefined,
|
|
85
|
-
bound: boolean,
|
|
86
|
-
separator?: string,
|
|
87
|
-
): string | undefined {
|
|
88
|
-
const incoming = componentInstance?.vnode.props
|
|
89
|
-
if (
|
|
90
|
-
!bound
|
|
91
|
-
&& (incoming === null || incoming === undefined
|
|
92
|
-
|| (!Object.hasOwn(incoming, name) && !Object.hasOwn(incoming, kebab)))
|
|
93
|
-
) return fallback
|
|
94
|
-
if (value === null || value === undefined) return undefined
|
|
95
|
-
return Array.isArray(value) && separator !== undefined
|
|
96
|
-
? value.join(separator)
|
|
97
|
-
: typeof value === 'object'
|
|
98
|
-
? JSON.stringify(value)
|
|
99
|
-
: String(value)
|
|
100
|
-
}
|
|
101
|
-
const hydrationInstance = getCurrentInstance()
|
|
70
|
+
const reflectedProp = useReflectedProp()
|
|
102
71
|
|
|
103
|
-
|
|
104
|
-
if (
|
|
105
|
-
typeof window !== 'undefined' && hydrationNode != null
|
|
106
|
-
&& (!(hydrationNode instanceof Element) || hydrationNode.localName !== ('div'))
|
|
107
|
-
) {
|
|
108
|
-
throw Object.assign(new Error('HR005: Server markup for <ui-grid> has an incompatible root.'), {
|
|
109
|
-
name: 'HtmlDiagnosticError',
|
|
110
|
-
diagnostic: Object.freeze({
|
|
111
|
-
code: 'HR005',
|
|
112
|
-
message: 'Server markup for <ui-grid> has an incompatible root.',
|
|
113
|
-
}),
|
|
114
|
-
})
|
|
115
|
-
}
|
|
72
|
+
checkHydratedRoot('div', 'ui-grid')
|
|
116
73
|
|
|
117
74
|
/** The values the styles' :host-state() rules test. */
|
|
118
75
|
const hostState = computed(() =>
|
|
@@ -127,9 +84,9 @@ const hostState = computed(() =>
|
|
|
127
84
|
|
|
128
85
|
<template>
|
|
129
86
|
<div
|
|
130
|
-
|
|
87
|
+
class="ui-grid"
|
|
131
88
|
v-bind="nativeAttrs($attrs)"
|
|
132
|
-
:style="{ '--_grid-column-cap': checkedProps.columns
|
|
89
|
+
:style="{ '--_grid-column-cap': checkedProps.columns?.toString() }"
|
|
133
90
|
v-prop-validity="{ contract: propValidityContract, values: { ...props } }"
|
|
134
91
|
:data-columns="reflectedProp('columns', 'columns', checkedProps.columns, undefined, false)"
|
|
135
92
|
:data-gap="reflectedProp('gap', 'gap', checkedProps.gap, undefined, false)"
|
|
@@ -151,60 +108,65 @@ const hostState = computed(() =>
|
|
|
151
108
|
inherits: false;
|
|
152
109
|
}
|
|
153
110
|
|
|
154
|
-
|
|
155
|
-
--_grid-gap: var(--ui-space-4);
|
|
156
|
-
--_grid-min: 12rem;
|
|
157
|
-
display: grid;
|
|
158
|
-
gap: var(--ui-grid-gap, var(--_grid-gap));
|
|
159
|
-
grid-template-columns:
|
|
160
|
-
repeat(
|
|
161
|
-
auto-fit,
|
|
162
|
-
minmax(
|
|
163
|
-
min(
|
|
164
|
-
max(
|
|
165
|
-
var(--ui-grid-min, var(--_grid-min)),
|
|
166
|
-
calc(
|
|
167
|
-
(
|
|
168
|
-
100% -
|
|
169
|
-
(max(1, var(--_grid-column-cap, 9999)) - 1) * var(--ui-grid-gap, var(--_grid-gap))
|
|
170
|
-
) /
|
|
171
|
-
max(1, var(--_grid-column-cap, 9999))
|
|
172
|
-
)
|
|
173
|
-
),
|
|
174
|
-
100%
|
|
175
|
-
),
|
|
176
|
-
1fr
|
|
177
|
-
)
|
|
178
|
-
);
|
|
179
|
-
min-inline-size: 0;
|
|
180
|
-
max-inline-size: 100%;
|
|
181
|
-
margin: 0;
|
|
182
|
-
}
|
|
111
|
+
/* A component that sets its display still honours the hidden attribute on its root. */
|
|
183
112
|
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
113
|
+
@scope (.ui-grid) {
|
|
114
|
+
:scope:where(:scope) {
|
|
115
|
+
--_grid-gap: var(--ui-space-4);
|
|
116
|
+
--_grid-min: 12rem;
|
|
117
|
+
display: grid;
|
|
118
|
+
gap: var(--ui-grid-gap, var(--_grid-gap));
|
|
119
|
+
grid-template-columns:
|
|
120
|
+
repeat(
|
|
121
|
+
auto-fit,
|
|
122
|
+
minmax(
|
|
123
|
+
min(
|
|
124
|
+
max(
|
|
125
|
+
var(--ui-grid-min, var(--_grid-min)),
|
|
126
|
+
calc(
|
|
127
|
+
(
|
|
128
|
+
100% -
|
|
129
|
+
(
|
|
130
|
+
max(1, var(--_grid-column-cap, 9999)) - 1
|
|
131
|
+
) *
|
|
132
|
+
var(--ui-grid-gap, var(--_grid-gap))
|
|
133
|
+
) /
|
|
134
|
+
max(1, var(--_grid-column-cap, 9999))
|
|
135
|
+
)
|
|
136
|
+
),
|
|
137
|
+
100%
|
|
138
|
+
),
|
|
139
|
+
1fr
|
|
140
|
+
)
|
|
141
|
+
);
|
|
142
|
+
min-inline-size: 0;
|
|
143
|
+
max-inline-size: 100%;
|
|
144
|
+
margin: 0;
|
|
145
|
+
}
|
|
205
146
|
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
147
|
+
:scope:where(:scope):is([data-ui-grid-state~="gap=xs"]) {
|
|
148
|
+
--_grid-gap: var(--ui-space-2);
|
|
149
|
+
}
|
|
150
|
+
:scope:where(:scope):is([data-ui-grid-state~="gap=s"]) {
|
|
151
|
+
--_grid-gap: var(--ui-space-3);
|
|
152
|
+
}
|
|
153
|
+
:scope:where(:scope):is([data-ui-grid-state~="gap=m"]) {
|
|
154
|
+
--_grid-gap: var(--ui-space-4);
|
|
155
|
+
}
|
|
156
|
+
:scope:where(:scope):is([data-ui-grid-state~="gap=l"]) {
|
|
157
|
+
--_grid-gap: var(--ui-space-5);
|
|
158
|
+
}
|
|
159
|
+
:scope:where(:scope):is([data-ui-grid-state~="gap=xl"]) {
|
|
160
|
+
--_grid-gap: var(--ui-space-6);
|
|
161
|
+
}
|
|
162
|
+
:scope:where(:scope):is([data-ui-grid-state~="min=md"]) {
|
|
163
|
+
--_grid-min: 16rem;
|
|
164
|
+
}
|
|
165
|
+
:scope:where(:scope):is([data-ui-grid-state~="min=lg"]) {
|
|
166
|
+
--_grid-min: 20rem;
|
|
167
|
+
}
|
|
168
|
+
:scope:where(:scope):is([hidden]) {
|
|
169
|
+
display: none;
|
|
170
|
+
}
|
|
209
171
|
}
|
|
210
172
|
</style>
|
package/vue/UiIcon.vue
CHANGED
|
@@ -1,7 +1,15 @@
|
|
|
1
|
-
<!-- Generated by HTML Next 1.0.0-alpha.
|
|
1
|
+
<!-- Generated by HTML Next 1.0.0-alpha.51 for Vue 3.5. Do not edit. -->
|
|
2
2
|
<script setup lang="ts">
|
|
3
|
-
import { computed,
|
|
3
|
+
import { computed, watchSyncEffect } from 'vue'
|
|
4
4
|
import type { PropType } from 'vue'
|
|
5
|
+
import {
|
|
6
|
+
attribute,
|
|
7
|
+
checkHydratedRoot,
|
|
8
|
+
cycleCheckedComputed,
|
|
9
|
+
list,
|
|
10
|
+
nativeAttrs,
|
|
11
|
+
useReflectedProp,
|
|
12
|
+
} from './host'
|
|
5
13
|
import { checkedProp, vPropValidity } from './props'
|
|
6
14
|
|
|
7
15
|
defineOptions({ inheritAttrs: false })
|
|
@@ -35,63 +43,8 @@ void checkedProps.value
|
|
|
35
43
|
watchSyncEffect(() => {
|
|
36
44
|
void checkedProps.value
|
|
37
45
|
})
|
|
38
|
-
|
|
39
|
-
const names = Object.keys(attrs)
|
|
40
|
-
if (!names.some((name) => Object.hasOwn(Object.prototype, name))) return attrs
|
|
41
|
-
return Object.fromEntries(names.map((name) => [
|
|
42
|
-
Object.hasOwn(Object.prototype, name)
|
|
43
|
-
? name === '__proto__' ? '__Proto__' : name[0]!.toUpperCase() + name.slice(1)
|
|
44
|
-
: name,
|
|
45
|
-
attrs[name],
|
|
46
|
-
]))
|
|
47
|
-
}
|
|
48
|
-
const componentInstance = getCurrentInstance()
|
|
49
|
-
function reflectedProp(
|
|
50
|
-
name: string,
|
|
51
|
-
kebab: string,
|
|
52
|
-
value: unknown,
|
|
53
|
-
fallback: string | undefined,
|
|
54
|
-
bound: boolean,
|
|
55
|
-
separator?: string,
|
|
56
|
-
): string | undefined {
|
|
57
|
-
const incoming = componentInstance?.vnode.props
|
|
58
|
-
if (
|
|
59
|
-
!bound
|
|
60
|
-
&& (incoming === null || incoming === undefined
|
|
61
|
-
|| (!Object.hasOwn(incoming, name) && !Object.hasOwn(incoming, kebab)))
|
|
62
|
-
) return fallback
|
|
63
|
-
if (value === null || value === undefined) return undefined
|
|
64
|
-
return Array.isArray(value) && separator !== undefined
|
|
65
|
-
? value.join(separator)
|
|
66
|
-
: typeof value === 'object'
|
|
67
|
-
? JSON.stringify(value)
|
|
68
|
-
: String(value)
|
|
69
|
-
}
|
|
70
|
-
const hydrationInstance = getCurrentInstance()
|
|
46
|
+
const reflectedProp = useReflectedProp()
|
|
71
47
|
|
|
72
|
-
// Vue may return an in-progress computed value on a cyclic read; guard the public value access instead.
|
|
73
|
-
function cycleCheckedComputed<T>(evaluate: () => T) {
|
|
74
|
-
const value = computed(evaluate)
|
|
75
|
-
let reading = false
|
|
76
|
-
return new Proxy(value, {
|
|
77
|
-
get(target, property) {
|
|
78
|
-
if (property !== 'value') return Reflect.get(target, property)
|
|
79
|
-
if (reading) {
|
|
80
|
-
const message = 'A reactive computed value depends on itself.'
|
|
81
|
-
throw Object.assign(new Error(`HR006: ${message}`), {
|
|
82
|
-
name: 'HtmlDiagnosticError',
|
|
83
|
-
diagnostic: Object.freeze({ code: 'HR006', message }),
|
|
84
|
-
})
|
|
85
|
-
}
|
|
86
|
-
reading = true
|
|
87
|
-
try {
|
|
88
|
-
return target.value
|
|
89
|
-
} finally {
|
|
90
|
-
reading = false
|
|
91
|
-
}
|
|
92
|
-
},
|
|
93
|
-
})
|
|
94
|
-
}
|
|
95
48
|
const shapes = cycleCheckedComputed(() =>
|
|
96
49
|
(({
|
|
97
50
|
'align-center': [{ tag: 'path', d: 'M21 5H3' }, { tag: 'path', d: 'M17 12H7' }, {
|
|
@@ -464,41 +417,12 @@ const shapes = cycleCheckedComputed(() =>
|
|
|
464
417
|
x: [{ tag: 'path', d: 'M18 6 6 18' }, { tag: 'path', d: 'm6 6 12 12' }],
|
|
465
418
|
}) as Record<string, any>)[checkedProps.value.name]
|
|
466
419
|
)
|
|
467
|
-
|
|
468
|
-
if (
|
|
469
|
-
typeof window !== 'undefined' && hydrationNode != null
|
|
470
|
-
&& (!(hydrationNode instanceof Element) || hydrationNode.localName !== ('span'))
|
|
471
|
-
) {
|
|
472
|
-
throw Object.assign(new Error('HR005: Server markup for <ui-icon> has an incompatible root.'), {
|
|
473
|
-
name: 'HtmlDiagnosticError',
|
|
474
|
-
diagnostic: Object.freeze({
|
|
475
|
-
code: 'HR005',
|
|
476
|
-
message: 'Server markup for <ui-icon> has an incompatible root.',
|
|
477
|
-
}),
|
|
478
|
-
})
|
|
479
|
-
}
|
|
480
|
-
|
|
481
|
-
function text(value: unknown): string {
|
|
482
|
-
if (Array.isArray(value)) return value.map(text).join(' ')
|
|
483
|
-
return value === null || value === undefined || typeof value === 'object' ? '' : String(value)
|
|
484
|
-
}
|
|
485
|
-
|
|
486
|
-
function attribute(value: unknown): any {
|
|
487
|
-
if (
|
|
488
|
-
value === null || value === undefined || value === false
|
|
489
|
-
|| (typeof value === 'object' && !Array.isArray(value))
|
|
490
|
-
) return undefined
|
|
491
|
-
return value === true ? '' : text(value)
|
|
492
|
-
}
|
|
493
|
-
|
|
494
|
-
function list(value: unknown): any[] {
|
|
495
|
-
return Array.isArray(value) ? value : []
|
|
496
|
-
}
|
|
420
|
+
checkHydratedRoot('span', 'ui-icon')
|
|
497
421
|
</script>
|
|
498
422
|
|
|
499
423
|
<template>
|
|
500
424
|
<span
|
|
501
|
-
|
|
425
|
+
class="ui-icon"
|
|
502
426
|
aria-hidden="true"
|
|
503
427
|
v-bind="nativeAttrs($attrs)"
|
|
504
428
|
v-prop-validity="{ contract: propValidityContract, values: { ...props } }"
|
|
@@ -554,25 +478,27 @@ function list(value: unknown): any[] {
|
|
|
554
478
|
inherits: false;
|
|
555
479
|
}
|
|
556
480
|
|
|
557
|
-
|
|
558
|
-
/* Hooks do not inherit, so the svg reads the stroke from the root. A Looma component that
|
|
559
|
-
sizes the icons it renders sets --_ui-default-icon-*, which the icon's own hooks override. */
|
|
560
|
-
--_ui-icon-stroke-width: var(--ui-icon-stroke-width, var(--_ui-default-icon-stroke-width));
|
|
481
|
+
/* A component that sets its display still honours the hidden attribute on its root. */
|
|
561
482
|
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
483
|
+
@scope (.ui-icon) {
|
|
484
|
+
:scope:where(:scope) {
|
|
485
|
+
/* Hooks do not inherit, so the svg reads the stroke from the root. A Looma component that
|
|
486
|
+
sizes the icons it renders sets --_ui-default-icon-*, which the icon's own hooks override. */
|
|
487
|
+
--_ui-icon-stroke-width: var(--ui-icon-stroke-width, var(--_ui-default-icon-stroke-width));
|
|
567
488
|
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
}
|
|
489
|
+
display: inline-flex;
|
|
490
|
+
flex: none;
|
|
491
|
+
inline-size: var(--ui-icon-size, var(--_ui-default-icon-size, 1em));
|
|
492
|
+
block-size: var(--ui-icon-size, var(--_ui-default-icon-size, 1em));
|
|
493
|
+
}
|
|
573
494
|
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
495
|
+
svg {
|
|
496
|
+
inline-size: 100%;
|
|
497
|
+
block-size: 100%;
|
|
498
|
+
stroke-width: var(--_ui-icon-stroke-width, 2);
|
|
499
|
+
}
|
|
500
|
+
:scope:where(:scope):is([hidden]) {
|
|
501
|
+
display: none;
|
|
502
|
+
}
|
|
577
503
|
}
|
|
578
504
|
</style>
|
package/vue/UiIconButton.d.ts
CHANGED
|
@@ -95,9 +95,9 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
|
|
|
95
95
|
};
|
|
96
96
|
}>> & Readonly<{}>, {
|
|
97
97
|
label: string | null;
|
|
98
|
-
guide: "bar" | "dot" | null;
|
|
99
|
-
round: boolean | null;
|
|
100
98
|
size: "sm" | "md" | "lg" | null;
|
|
99
|
+
round: boolean | null;
|
|
100
|
+
guide: "bar" | "dot" | null;
|
|
101
101
|
tone: "neutral" | "accent" | null;
|
|
102
102
|
variant: "solid" | "outline" | "ghost" | null;
|
|
103
103
|
disabled: boolean | null;
|