@threadlabs/looma 0.5.1 → 0.6.0-rc.1
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/README.md +1 -1
- package/components/shared/overlay.js +3 -0
- package/components/ui-button/ui-button.html +27 -14
- package/components/ui-callout/ui-callout.html +1 -1
- package/components/ui-checkbox/ui-checkbox.html +1 -1
- package/components/ui-cluster/ui-cluster.html +6 -6
- package/components/ui-combobox/ui-combobox.html +35 -27
- package/components/ui-container/ui-container.html +4 -4
- package/components/ui-context-menu/ui-context-menu.html +2 -2
- package/components/ui-dialog/ui-dialog.html +21 -8
- package/components/ui-disclosure/ui-disclosure.html +19 -4
- package/components/ui-editable/ui-editable.html +6 -6
- package/components/ui-editor-insert-table-grid/ui-editor-insert-table-grid.html +21 -21
- package/components/ui-editor-mention-menu/ui-editor-mention-menu.html +26 -26
- package/components/ui-editor-slash-menu/ui-editor-slash-menu.html +39 -39
- package/components/ui-editor-table-context-menu/ui-editor-table-context-menu.html +26 -22
- package/components/ui-editor-table-overlay/ui-editor-table-overlay.html +68 -52
- package/components/ui-editor-table-toolbar/ui-editor-table-toolbar.html +42 -38
- package/components/ui-editor-toolbar/ui-editor-toolbar.html +9 -9
- package/components/ui-floating-action-button/ui-floating-action-button.html +16 -22
- package/components/ui-form-field/ui-form-field.html +18 -7
- package/components/ui-grid/ui-grid.html +6 -6
- package/components/ui-icon/ui-icon.html +5 -1
- package/components/ui-icon-button/ui-icon-button.html +68 -34
- package/components/ui-input/ui-input.html +2 -2
- package/components/ui-menu/ui-menu.html +15 -4
- package/components/ui-menu-item/ui-menu-item.html +5 -5
- package/components/ui-popover/ui-popover.html +3 -3
- package/components/ui-popover/ui-popover.js +10 -2
- package/components/ui-reel/ui-reel.html +6 -6
- package/components/ui-search-result-row/ui-search-result-row.html +9 -9
- package/components/ui-search-shell/ui-search-shell.html +10 -3
- package/components/ui-search-shell/ui-search-shell.js +9 -0
- package/components/ui-select/ui-select.html +2 -2
- package/components/ui-sidebar/ui-sidebar.html +11 -11
- package/components/ui-stack/ui-stack.html +6 -6
- package/components/ui-switcher/ui-switcher.html +6 -6
- package/components/ui-tabs/ui-tabs.html +19 -5
- package/components/ui-textarea/ui-textarea.html +2 -2
- package/components/ui-toast-region/ui-toast-region.html +3 -3
- package/components/ui-tooltip/ui-tooltip.html +1 -1
- package/components/ui-top-bar/ui-top-bar.html +5 -5
- package/components/ui-tree/ui-tree.html +7 -0
- package/components/ui-tree-item/ui-tree-item.html +20 -7
- package/dist/index.d.ts +1 -1
- package/dist/index.js +2 -2
- package/package.json +2 -2
- package/styles/ui-affordance-scope.css +1 -1
- package/styles/ui-avatar-group.css +1 -1
- package/styles/ui-avatar.css +1 -1
- package/styles/ui-badge.css +1 -1
- package/styles/ui-button.css +25 -15
- package/styles/ui-callout.css +2 -2
- package/styles/ui-checkbox.css +2 -2
- package/styles/ui-cluster.css +7 -7
- package/styles/ui-combobox.css +24 -24
- package/styles/ui-container.css +5 -5
- package/styles/ui-context-menu.css +3 -3
- package/styles/ui-dialog.css +26 -9
- package/styles/ui-disclosure.css +23 -7
- package/styles/ui-editable.css +7 -7
- package/styles/ui-editor-insert-table-grid.css +21 -21
- package/styles/ui-editor-mention-menu.css +26 -26
- package/styles/ui-editor-slash-menu.css +40 -40
- package/styles/ui-editor-table-context-menu.css +21 -21
- package/styles/ui-editor-table-overlay.css +49 -49
- package/styles/ui-editor-table-toolbar.css +35 -35
- package/styles/ui-editor-toolbar.css +10 -10
- package/styles/ui-floating-action-button.css +17 -23
- package/styles/ui-form-field.css +24 -10
- package/styles/ui-grid.css +7 -7
- package/styles/ui-icon-button.css +74 -35
- package/styles/ui-icon.css +1 -1
- package/styles/ui-input.css +3 -3
- package/styles/ui-menu-item.css +6 -6
- package/styles/ui-menu.css +19 -7
- package/styles/ui-popover.css +4 -4
- package/styles/ui-radio-group.css +1 -1
- package/styles/ui-radio.css +1 -1
- package/styles/ui-reel.css +7 -7
- package/styles/ui-search-result-row.css +10 -10
- package/styles/ui-search-shell.css +14 -5
- package/styles/ui-select.css +3 -3
- package/styles/ui-separator.css +1 -1
- package/styles/ui-sidebar.css +12 -12
- package/styles/ui-stack.css +7 -7
- package/styles/ui-switch.css +1 -1
- package/styles/ui-switcher.css +7 -7
- package/styles/ui-tabs.css +21 -7
- package/styles/ui-textarea.css +3 -3
- package/styles/ui-toast-region.css +3 -3
- package/styles/ui-tooltip.css +2 -2
- package/styles/ui-top-bar.css +6 -6
- package/styles/ui-tree-item.css +30 -9
- package/styles/ui-tree.css +8 -2
- package/theme-dark.css +42 -103
- package/theme-high-contrast.css +18 -22
- package/theme-light.css +15 -41
- package/tokens.css +149 -201
- package/vanilla/UiAffordanceScope.d.ts +1 -1
- package/vanilla/UiAffordanceScope.js +2 -2
- package/vanilla/UiAvatar.d.ts +1 -1
- package/vanilla/UiAvatar.js +2 -2
- package/vanilla/UiAvatarGroup.d.ts +1 -1
- package/vanilla/UiAvatarGroup.js +2 -2
- package/vanilla/UiBadge.d.ts +1 -1
- package/vanilla/UiBadge.js +2 -2
- package/vanilla/UiButton.d.ts +3 -1
- package/vanilla/UiButton.js +3 -3
- package/vanilla/UiCallout.d.ts +1 -1
- package/vanilla/UiCallout.js +2 -2
- package/vanilla/UiCheckbox.d.ts +1 -1
- package/vanilla/UiCheckbox.js +2 -2
- package/vanilla/UiCluster.d.ts +1 -1
- package/vanilla/UiCluster.js +2 -2
- package/vanilla/UiCombobox.d.ts +1 -1
- package/vanilla/UiCombobox.js +3 -3
- package/vanilla/UiContainer.d.ts +1 -1
- package/vanilla/UiContainer.js +2 -2
- package/vanilla/UiContextMenu.d.ts +1 -1
- package/vanilla/UiContextMenu.js +2 -2
- package/vanilla/UiDialog.d.ts +1 -1
- package/vanilla/UiDialog.js +2 -2
- package/vanilla/UiDisclosure.d.ts +2 -1
- package/vanilla/UiDisclosure.js +3 -3
- package/vanilla/UiEditable.d.ts +1 -1
- package/vanilla/UiEditable.js +2 -2
- package/vanilla/UiEditorInsertTableGrid.d.ts +1 -1
- package/vanilla/UiEditorInsertTableGrid.js +3 -3
- package/vanilla/UiEditorMentionMenu.d.ts +1 -1
- package/vanilla/UiEditorMentionMenu.js +3 -3
- package/vanilla/UiEditorSlashMenu.d.ts +1 -1
- package/vanilla/UiEditorSlashMenu.js +2 -2
- package/vanilla/UiEditorTableContextMenu.d.ts +1 -1
- package/vanilla/UiEditorTableContextMenu.js +3 -3
- package/vanilla/UiEditorTableOverlay.d.ts +1 -1
- package/vanilla/UiEditorTableOverlay.js +3 -3
- package/vanilla/UiEditorTableToolbar.d.ts +1 -1
- package/vanilla/UiEditorTableToolbar.js +3 -3
- package/vanilla/UiEditorToolbar.d.ts +1 -1
- package/vanilla/UiEditorToolbar.js +2 -2
- package/vanilla/UiFloatingActionButton.d.ts +1 -1
- package/vanilla/UiFloatingActionButton.js +2 -2
- package/vanilla/UiFormField.d.ts +1 -1
- package/vanilla/UiFormField.js +15 -6
- package/vanilla/UiGrid.d.ts +1 -1
- package/vanilla/UiGrid.js +2 -2
- package/vanilla/UiIcon.d.ts +1 -1
- package/vanilla/UiIcon.js +3 -3
- package/vanilla/UiIconButton.d.ts +1 -1
- package/vanilla/UiIconButton.js +2 -2
- package/vanilla/UiInput.d.ts +1 -1
- package/vanilla/UiInput.js +2 -2
- package/vanilla/UiMenu.d.ts +2 -1
- package/vanilla/UiMenu.js +3 -3
- package/vanilla/UiMenuItem.d.ts +1 -1
- package/vanilla/UiMenuItem.js +2 -2
- package/vanilla/UiPopover.d.ts +1 -1
- package/vanilla/UiPopover.js +2 -2
- package/vanilla/UiRadio.d.ts +1 -1
- package/vanilla/UiRadio.js +2 -2
- package/vanilla/UiRadioGroup.d.ts +1 -1
- package/vanilla/UiRadioGroup.js +2 -2
- package/vanilla/UiReel.d.ts +1 -1
- package/vanilla/UiReel.js +2 -2
- package/vanilla/UiSearchResultRow.d.ts +1 -1
- package/vanilla/UiSearchResultRow.js +2 -2
- package/vanilla/UiSearchShell.d.ts +1 -1
- package/vanilla/UiSearchShell.js +2 -2
- package/vanilla/UiSelect.d.ts +1 -1
- package/vanilla/UiSelect.js +2 -2
- package/vanilla/UiSeparator.d.ts +1 -1
- package/vanilla/UiSeparator.js +2 -2
- package/vanilla/UiSidebar.d.ts +1 -1
- package/vanilla/UiSidebar.js +2 -2
- package/vanilla/UiStack.d.ts +1 -1
- package/vanilla/UiStack.js +2 -2
- package/vanilla/UiSwitch.d.ts +1 -1
- package/vanilla/UiSwitch.js +2 -2
- package/vanilla/UiSwitcher.d.ts +1 -1
- package/vanilla/UiSwitcher.js +2 -2
- package/vanilla/UiTabs.d.ts +2 -1
- package/vanilla/UiTabs.js +3 -3
- package/vanilla/UiTextarea.d.ts +1 -1
- package/vanilla/UiTextarea.js +2 -2
- package/vanilla/UiToastRegion.d.ts +1 -1
- package/vanilla/UiToastRegion.js +3 -3
- package/vanilla/UiTooltip.d.ts +1 -1
- package/vanilla/UiTooltip.js +2 -2
- package/vanilla/UiTopBar.d.ts +1 -1
- package/vanilla/UiTopBar.js +1 -1
- package/vanilla/UiTree.d.ts +2 -1
- package/vanilla/UiTree.js +3 -3
- package/vanilla/UiTreeItem.d.ts +1 -1
- package/vanilla/UiTreeItem.js +2 -2
- package/vue/UiAffordanceScope.d.ts +2 -2
- package/vue/UiAffordanceScope.vue +92 -73
- package/vue/UiAvatar.d.ts +7 -7
- package/vue/UiAvatar.vue +145 -105
- package/vue/UiAvatarGroup.d.ts +4 -4
- package/vue/UiAvatarGroup.vue +134 -118
- package/vue/UiBadge.d.ts +4 -4
- package/vue/UiBadge.vue +113 -114
- package/vue/UiButton.d.ts +10 -6
- package/vue/UiButton.vue +295 -248
- package/vue/UiCallout.d.ts +2 -2
- package/vue/UiCallout.vue +154 -87
- package/vue/UiCheckbox.d.ts +14 -10
- package/vue/UiCheckbox.vue +228 -162
- package/vue/UiCluster.d.ts +2 -2
- package/vue/UiCluster.vue +53 -60
- package/vue/UiCombobox.d.ts +36 -32
- package/vue/UiCombobox.vue +1005 -416
- package/vue/UiContainer.d.ts +2 -2
- package/vue/UiContainer.vue +48 -51
- package/vue/UiContextMenu.d.ts +6 -4
- package/vue/UiContextMenu.vue +205 -116
- package/vue/UiDialog.d.ts +11 -9
- package/vue/UiDialog.vue +287 -212
- package/vue/UiDisclosure.d.ts +10 -6
- package/vue/UiDisclosure.vue +265 -159
- package/vue/UiEditable.d.ts +16 -12
- package/vue/UiEditable.vue +325 -205
- package/vue/UiEditorInsertTableGrid.d.ts +8 -8
- package/vue/UiEditorInsertTableGrid.vue +216 -157
- package/vue/UiEditorMentionMenu.d.ts +9 -9
- package/vue/UiEditorMentionMenu.vue +265 -222
- package/vue/UiEditorSlashMenu.d.ts +7 -7
- package/vue/UiEditorSlashMenu.vue +286 -240
- package/vue/UiEditorTableContextMenu.d.ts +5 -5
- package/vue/UiEditorTableContextMenu.vue +306 -193
- package/vue/UiEditorTableOverlay.d.ts +2 -2
- package/vue/UiEditorTableOverlay.vue +600 -369
- package/vue/UiEditorTableToolbar.d.ts +7 -7
- package/vue/UiEditorTableToolbar.vue +443 -268
- package/vue/UiEditorToolbar.d.ts +2 -2
- package/vue/UiEditorToolbar.vue +134 -121
- package/vue/UiFloatingActionButton.d.ts +6 -6
- package/vue/UiFloatingActionButton.vue +95 -99
- package/vue/UiFormField.d.ts +6 -6
- package/vue/UiFormField.vue +112 -80
- package/vue/UiGrid.d.ts +2 -2
- package/vue/UiGrid.vue +51 -57
- package/vue/UiIcon.d.ts +2 -2
- package/vue/UiIcon.vue +118 -89
- package/vue/UiIconButton.d.ts +11 -11
- package/vue/UiIconButton.vue +287 -217
- package/vue/UiInput.d.ts +9 -9
- package/vue/UiInput.vue +153 -127
- package/vue/UiMenu.d.ts +10 -6
- package/vue/UiMenu.vue +227 -143
- package/vue/UiMenuItem.d.ts +4 -4
- package/vue/UiMenuItem.vue +53 -46
- package/vue/UiPopover.d.ts +8 -6
- package/vue/UiPopover.vue +197 -137
- package/vue/UiRadio.d.ts +14 -10
- package/vue/UiRadio.vue +183 -117
- package/vue/UiRadioGroup.d.ts +14 -12
- package/vue/UiRadioGroup.vue +172 -111
- package/vue/UiReel.d.ts +3 -3
- package/vue/UiReel.vue +77 -77
- package/vue/UiSearchResultRow.d.ts +4 -4
- package/vue/UiSearchResultRow.vue +121 -115
- package/vue/UiSearchShell.d.ts +10 -8
- package/vue/UiSearchShell.vue +245 -176
- package/vue/UiSelect.d.ts +9 -9
- package/vue/UiSelect.vue +162 -134
- package/vue/UiSeparator.d.ts +2 -2
- package/vue/UiSeparator.vue +22 -27
- package/vue/UiSidebar.d.ts +20 -18
- package/vue/UiSidebar.vue +307 -224
- package/vue/UiStack.d.ts +3 -3
- package/vue/UiStack.vue +64 -70
- package/vue/UiSwitch.d.ts +12 -8
- package/vue/UiSwitch.vue +218 -150
- package/vue/UiSwitcher.d.ts +3 -3
- package/vue/UiSwitcher.vue +73 -75
- package/vue/UiTabs.d.ts +12 -8
- package/vue/UiTabs.vue +268 -210
- package/vue/UiTextarea.d.ts +11 -11
- package/vue/UiTextarea.vue +155 -128
- package/vue/UiToastRegion.d.ts +10 -8
- package/vue/UiToastRegion.vue +261 -198
- package/vue/UiTooltip.d.ts +14 -12
- package/vue/UiTooltip.vue +241 -177
- package/vue/UiTopBar.vue +51 -42
- package/vue/UiTree.d.ts +10 -6
- package/vue/UiTree.vue +180 -70
- package/vue/UiTreeItem.d.ts +24 -22
- package/vue/UiTreeItem.vue +464 -339
- package/vue/chunks/UiAffordanceScope.js +9 -16
- package/vue/chunks/UiAvatar.js +23 -29
- package/vue/chunks/UiAvatarGroup.js +16 -39
- package/vue/chunks/UiBadge.js +3 -12
- package/vue/chunks/UiButton.js +15 -18
- package/vue/chunks/UiCallout.js +8 -17
- package/vue/chunks/UiCheckbox.js +37 -40
- package/vue/chunks/UiCluster.js +3 -12
- package/vue/chunks/UiCombobox.js +224 -266
- package/vue/chunks/UiContainer.js +3 -12
- package/vue/chunks/UiContextMenu.js +39 -34
- package/vue/chunks/UiDialog.js +36 -39
- package/vue/chunks/UiDisclosure.js +44 -48
- package/vue/chunks/UiEditable.js +55 -57
- package/vue/chunks/UiEditorInsertTableGrid.js +55 -73
- package/vue/chunks/UiEditorMentionMenu.js +40 -81
- package/vue/chunks/UiEditorSlashMenu.js +28 -52
- package/vue/chunks/UiEditorTableContextMenu.js +32 -56
- package/vue/chunks/UiEditorTableOverlay.js +58 -82
- package/vue/chunks/UiEditorTableToolbar.js +61 -85
- package/vue/chunks/UiEditorToolbar.js +4 -13
- package/vue/chunks/UiFloatingActionButton.js +7 -21
- package/vue/chunks/UiFormField.js +15 -12
- package/vue/chunks/UiGrid.js +3 -12
- package/vue/chunks/UiIcon.js +20 -43
- package/vue/chunks/UiIconButton.js +16 -28
- package/vue/chunks/UiInput.js +20 -25
- package/vue/chunks/UiMenu.js +30 -33
- package/vue/chunks/UiMenuItem.js +4 -10
- package/vue/chunks/UiPopover.js +28 -29
- package/vue/chunks/UiRadio.js +36 -39
- package/vue/chunks/UiRadioGroup.js +30 -34
- package/vue/chunks/UiReel.js +6 -15
- package/vue/chunks/UiSearchResultRow.js +6 -19
- package/vue/chunks/UiSearchShell.js +25 -28
- package/vue/chunks/UiSelect.js +20 -23
- package/vue/chunks/UiSeparator.js +2 -8
- package/vue/chunks/UiSidebar.js +39 -44
- package/vue/chunks/UiStack.js +6 -15
- package/vue/chunks/UiSwitch.js +35 -38
- package/vue/chunks/UiSwitcher.js +6 -15
- package/vue/chunks/UiTabs.js +52 -85
- package/vue/chunks/UiTextarea.js +21 -26
- package/vue/chunks/UiToastRegion.js +38 -72
- package/vue/chunks/UiTooltip.js +34 -35
- package/vue/chunks/UiTopBar.js +1 -1
- package/vue/chunks/UiTree.js +27 -16
- package/vue/chunks/UiTreeItem.js +85 -102
- package/vue/components.css +4027 -3800
- package/vue/editor/LoomaEditor.d.ts +11 -0
- package/vue/editor/index.js +9 -0
package/vue/chunks/UiEditable.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { t as _plugin_vue_export_helper_default } from "./_plugin-vue_export-helper.js";
|
|
2
|
-
import { computed, createCommentVNode, createElementBlock, createElementVNode, defineComponent, mergeProps, onBeforeUnmount, onMounted, openBlock, ref, shallowRef, toDisplayString, watchEffect } from "vue";
|
|
2
|
+
import { computed, createCommentVNode, createElementBlock, createElementVNode, defineComponent, mergeProps, onBeforeUnmount, onMounted, openBlock, ref, shallowRef, toDisplayString, useTemplateRef, watchEffect } from "vue";
|
|
3
3
|
import * as controllerModule from "@threadlabs/looma/components/ui-editable/ui-editable.js";
|
|
4
4
|
//#region .build/vue/UiEditable.vue?vue&type=script&setup=true&lang.ts
|
|
5
5
|
var _hoisted_1 = ["data-ui-editable-state"];
|
|
@@ -27,15 +27,15 @@ var UiEditable_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
|
|
|
27
27
|
__name: "UiEditable",
|
|
28
28
|
props: {
|
|
29
29
|
actions: {
|
|
30
|
-
type:
|
|
30
|
+
type: Boolean,
|
|
31
31
|
default: false
|
|
32
32
|
},
|
|
33
33
|
disabled: {
|
|
34
|
-
type:
|
|
34
|
+
type: Boolean,
|
|
35
35
|
default: false
|
|
36
36
|
},
|
|
37
37
|
edit: {
|
|
38
|
-
type:
|
|
38
|
+
type: Boolean,
|
|
39
39
|
default: false
|
|
40
40
|
},
|
|
41
41
|
hint: { default: "" },
|
|
@@ -43,46 +43,45 @@ var UiEditable_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
|
|
|
43
43
|
value: { default: "" }
|
|
44
44
|
},
|
|
45
45
|
emits: [
|
|
46
|
+
"update:edit",
|
|
47
|
+
"update:value",
|
|
46
48
|
"input",
|
|
47
49
|
"change",
|
|
48
50
|
"edit-change"
|
|
49
51
|
],
|
|
50
52
|
setup(__props, { emit: __emit }) {
|
|
51
|
-
const hn = {
|
|
52
|
-
t: (v) => v === true || (typeof v === "string" ? v.length > 0 : typeof v === "number" ? v !== 0 && v === v : Array.isArray(v) ? v.length > 0 : v !== null && typeof v === "object" ? Object.keys(v).length > 0 : false),
|
|
53
|
-
text: (v) => v === void 0 || v === null ? "" : Array.isArray(v) ? v.map(hn.text).join(" ") : typeof v === "object" ? "" : String(v),
|
|
54
|
-
attr: (v) => v === void 0 || v === null || v === false ? void 0 : v === true ? "" : Array.isArray(v) ? v.map(hn.text).join(" ") : typeof v === "object" ? void 0 : String(v),
|
|
55
|
-
enumerated: (v) => typeof v === "boolean" ? String(v) : hn.attr(v)
|
|
56
|
-
};
|
|
57
53
|
const props = __props;
|
|
58
54
|
const emit = __emit;
|
|
59
55
|
const root = ref(null);
|
|
60
|
-
const
|
|
61
|
-
const
|
|
62
|
-
const
|
|
63
|
-
const
|
|
56
|
+
const previewElement = useTemplateRef("preview");
|
|
57
|
+
const inputElement = useTemplateRef("input");
|
|
58
|
+
const internalEdit = ref(false);
|
|
59
|
+
const internalValue = ref("");
|
|
60
|
+
const draft = ref("");
|
|
61
|
+
/** The values the styles' :host-state() rules test. */
|
|
62
|
+
const hostState = computed(() => [internalEdit.value && "internalEdit", props.disabled && "disabled"].filter(Boolean).join(" "));
|
|
64
63
|
/** Dispatches a component event to Vue listeners and, for controllers and page code, on the root. */
|
|
65
|
-
|
|
64
|
+
function dispatch(name, detail) {
|
|
66
65
|
const declared = {
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
66
|
+
input: {
|
|
67
|
+
bubbles: true,
|
|
68
|
+
composed: true,
|
|
69
|
+
cancelable: false
|
|
71
70
|
},
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
71
|
+
change: {
|
|
72
|
+
bubbles: true,
|
|
73
|
+
composed: true,
|
|
74
|
+
cancelable: false
|
|
76
75
|
},
|
|
77
76
|
"edit-change": {
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
77
|
+
bubbles: true,
|
|
78
|
+
composed: true,
|
|
79
|
+
cancelable: false
|
|
81
80
|
}
|
|
82
81
|
};
|
|
83
82
|
const checks = {
|
|
84
|
-
|
|
85
|
-
|
|
83
|
+
input: (detail) => detail !== null && typeof detail === "object" && !Array.isArray(detail) && typeof detail["value"] === "string" && (detail["trigger"] === "keyboard" || detail["trigger"] === "pointer" || detail["trigger"] === "programmatic") && Object.keys(detail).every((key) => ["value", "trigger"].includes(key)),
|
|
84
|
+
change: (detail) => detail !== null && typeof detail === "object" && !Array.isArray(detail) && typeof detail["value"] === "string" && typeof detail["previousValue"] === "string" && (detail["trigger"] === "keyboard" || detail["trigger"] === "pointer" || detail["trigger"] === "programmatic") && Object.keys(detail).every((key) => [
|
|
86
85
|
"value",
|
|
87
86
|
"previousValue",
|
|
88
87
|
"trigger"
|
|
@@ -94,38 +93,34 @@ var UiEditable_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
|
|
|
94
93
|
].includes(key))
|
|
95
94
|
};
|
|
96
95
|
if (detail !== void 0 && checks[name] !== void 0 && !checks[name](detail)) throw new TypeError(`HR002: Event \`${name}\` detail does not satisfy its declared type.`);
|
|
97
|
-
emit
|
|
96
|
+
const emitEvent = emit;
|
|
97
|
+
emitEvent(name, detail);
|
|
98
|
+
if (detail !== null && typeof detail === "object" && "edit" in detail) emitEvent("update:edit", detail["edit"]);
|
|
99
|
+
if (detail !== null && typeof detail === "object" && "value" in detail) emitEvent("update:value", detail["value"]);
|
|
98
100
|
return root.value?.dispatchEvent(new CustomEvent(name, {
|
|
99
101
|
bubbles: true,
|
|
100
102
|
composed: true,
|
|
101
103
|
...declared[name],
|
|
102
104
|
detail
|
|
103
105
|
})) ?? true;
|
|
104
|
-
}
|
|
105
|
-
/** The resolved values the styles' :host-state() rules test. */
|
|
106
|
-
const hostState = computed(() => ["internalEdit", "disabled"].flatMap((name) => {
|
|
107
|
-
const value = read(name);
|
|
108
|
-
const tokens = hn.t(value) ? [name] : [];
|
|
109
|
-
if (typeof value === "string" || typeof value === "number") tokens.push(`${name}=${encodeURIComponent(String(value))}`);
|
|
110
|
-
return tokens;
|
|
111
|
-
}).join(" "));
|
|
106
|
+
}
|
|
112
107
|
function read(name) {
|
|
113
|
-
if (name === "internalEdit") return
|
|
114
|
-
if (name === "internalValue") return
|
|
115
|
-
if (name === "draft") return
|
|
108
|
+
if (name === "internalEdit") return internalEdit.value;
|
|
109
|
+
if (name === "internalValue") return internalValue.value;
|
|
110
|
+
if (name === "draft") return draft.value;
|
|
116
111
|
return props[name];
|
|
117
112
|
}
|
|
118
113
|
function write(name, value) {
|
|
119
114
|
if (name === "internalEdit") {
|
|
120
|
-
|
|
115
|
+
internalEdit.value = value;
|
|
121
116
|
return true;
|
|
122
117
|
}
|
|
123
118
|
if (name === "internalValue") {
|
|
124
|
-
|
|
119
|
+
internalValue.value = value;
|
|
125
120
|
return true;
|
|
126
121
|
}
|
|
127
122
|
if (name === "draft") {
|
|
128
|
-
|
|
123
|
+
draft.value = value;
|
|
129
124
|
return true;
|
|
130
125
|
}
|
|
131
126
|
throw new TypeError(`Only declared state is writable; \`${name}\` is not.`);
|
|
@@ -139,7 +134,14 @@ var UiEditable_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
|
|
|
139
134
|
get: (_target, name) => typeof name === "string" ? read(name) : void 0,
|
|
140
135
|
set: (_target, name, value) => typeof name === "string" && write(name, value)
|
|
141
136
|
}),
|
|
142
|
-
refs
|
|
137
|
+
refs: {
|
|
138
|
+
get preview() {
|
|
139
|
+
return previewElement.value;
|
|
140
|
+
},
|
|
141
|
+
get input() {
|
|
142
|
+
return inputElement.value;
|
|
143
|
+
}
|
|
144
|
+
},
|
|
143
145
|
elements: new Proxy({}, { get: (_target, name) => {
|
|
144
146
|
if (typeof name !== "string" || root.value === null) return void 0;
|
|
145
147
|
return (root.value instanceof HTMLFormElement ? root.value : root.value.querySelector("form"))?.elements.namedItem(name) ?? root.value.querySelector(`[name="${CSS.escape(name)}"]`) ?? void 0;
|
|
@@ -196,20 +198,16 @@ var UiEditable_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
|
|
|
196
198
|
}), [createElementVNode("div", _hoisted_2, [createElementVNode("button", {
|
|
197
199
|
class: "preview",
|
|
198
200
|
type: "button",
|
|
199
|
-
disabled:
|
|
200
|
-
ref:
|
|
201
|
-
|
|
202
|
-
}
|
|
203
|
-
}, [createElementVNode("span", _hoisted_4, toDisplayString(hn.text(state_internalValue.value)), 1), hn.t(props.hint) ? (openBlock(), createElementBlock("span", _hoisted_5, toDisplayString(hn.text(props.hint)), 1)) : createCommentVNode("v-if", true)], 8, _hoisted_3), createElementVNode("input", {
|
|
201
|
+
disabled: __props.disabled,
|
|
202
|
+
ref: "preview"
|
|
203
|
+
}, [createElementVNode("span", _hoisted_4, toDisplayString(internalValue.value), 1), __props.hint ? (openBlock(), createElementBlock("span", _hoisted_5, toDisplayString(__props.hint), 1)) : createCommentVNode("v-if", true)], 8, _hoisted_3), createElementVNode("input", {
|
|
204
204
|
class: "input",
|
|
205
205
|
type: "text",
|
|
206
|
-
".value":
|
|
207
|
-
"aria-label":
|
|
208
|
-
disabled:
|
|
209
|
-
ref:
|
|
210
|
-
|
|
211
|
-
}
|
|
212
|
-
}, null, 40, _hoisted_6)]), hn.t(props.actions) ? (openBlock(), createElementBlock("div", _hoisted_7, [..._cache[0] || (_cache[0] = [createElementVNode("button", {
|
|
206
|
+
".value": draft.value,
|
|
207
|
+
"aria-label": __props.label,
|
|
208
|
+
disabled: __props.disabled || !internalEdit.value,
|
|
209
|
+
ref: "input"
|
|
210
|
+
}, null, 40, _hoisted_6)]), __props.actions ? (openBlock(), createElementBlock("div", _hoisted_7, [..._cache[0] || (_cache[0] = [createElementVNode("button", {
|
|
213
211
|
class: "save",
|
|
214
212
|
type: "button"
|
|
215
213
|
}, "Save", -1), createElementVNode("button", {
|
|
@@ -218,6 +216,6 @@ var UiEditable_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
|
|
|
218
216
|
}, "Cancel", -1)])])) : createCommentVNode("v-if", true)], 16, _hoisted_1);
|
|
219
217
|
};
|
|
220
218
|
}
|
|
221
|
-
}), [["__scopeId", "data-v-
|
|
219
|
+
}), [["__scopeId", "data-v-3707d050"]]);
|
|
222
220
|
//#endregion
|
|
223
221
|
export { UiEditable_default as t };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { t as _plugin_vue_export_helper_default } from "./_plugin-vue_export-helper.js";
|
|
2
|
-
import { Fragment, computed, createElementBlock, createElementVNode, createTextVNode, defineComponent, mergeProps, normalizeClass, normalizeStyle, onBeforeUnmount, onMounted, openBlock, ref, renderList, shallowRef, toDisplayString, watchEffect } from "vue";
|
|
2
|
+
import { Fragment, computed, createElementBlock, createElementVNode, createTextVNode, defineComponent, mergeProps, normalizeClass, normalizeStyle, onBeforeUnmount, onMounted, openBlock, ref, renderList, shallowRef, toDisplayString, useTemplateRef, watchEffect } from "vue";
|
|
3
3
|
import * as controllerModule from "@threadlabs/looma/components/ui-editor-insert-table-grid/ui-editor-insert-table-grid.js";
|
|
4
4
|
//#region .build/vue/UiEditorInsertTableGrid.vue?vue&type=script&setup=true&lang.ts
|
|
5
5
|
var _hoisted_1 = ["hidden"];
|
|
@@ -12,6 +12,11 @@ var _hoisted_3 = [
|
|
|
12
12
|
];
|
|
13
13
|
var _hoisted_4 = { class: "header" };
|
|
14
14
|
var _hoisted_5 = [".checked"];
|
|
15
|
+
var _hoisted_6 = {
|
|
16
|
+
type: "button",
|
|
17
|
+
class: "insert",
|
|
18
|
+
ref: "insert"
|
|
19
|
+
};
|
|
15
20
|
//#endregion
|
|
16
21
|
//#region .build/vue/UiEditorInsertTableGrid.vue
|
|
17
22
|
var UiEditorInsertTableGrid_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineComponent({
|
|
@@ -19,58 +24,36 @@ var UiEditorInsertTableGrid_default = /*#__PURE__*/ _plugin_vue_export_helper_de
|
|
|
19
24
|
__name: "UiEditorInsertTableGrid",
|
|
20
25
|
props: {
|
|
21
26
|
headerRow: {
|
|
22
|
-
type:
|
|
27
|
+
type: Boolean,
|
|
23
28
|
default: false
|
|
24
29
|
},
|
|
25
30
|
maxCols: { default: 8 },
|
|
26
31
|
maxRows: { default: 8 },
|
|
27
32
|
open: {
|
|
28
|
-
type:
|
|
33
|
+
type: Boolean,
|
|
29
34
|
default: false
|
|
30
35
|
}
|
|
31
36
|
},
|
|
32
37
|
emits: ["insert"],
|
|
33
38
|
setup(__props, { emit: __emit }) {
|
|
34
|
-
const hn = {
|
|
35
|
-
t: (v) => v === true || (typeof v === "string" ? v.length > 0 : typeof v === "number" ? v !== 0 && v === v : Array.isArray(v) ? v.length > 0 : v !== null && typeof v === "object" ? Object.keys(v).length > 0 : false),
|
|
36
|
-
text: (v) => v === void 0 || v === null ? "" : Array.isArray(v) ? v.map(hn.text).join(" ") : typeof v === "object" ? "" : String(v),
|
|
37
|
-
attr: (v) => v === void 0 || v === null || v === false ? void 0 : v === true ? "" : Array.isArray(v) ? v.map(hn.text).join(" ") : typeof v === "object" ? void 0 : String(v),
|
|
38
|
-
enumerated: (v) => typeof v === "boolean" ? String(v) : hn.attr(v),
|
|
39
|
-
shape: (items, where, sort, limit) => {
|
|
40
|
-
let list = Array.isArray(items) ? items.slice() : [];
|
|
41
|
-
if (where !== void 0) list = list.filter((item) => hn.t(where(item)));
|
|
42
|
-
if (sort.length > 0) {
|
|
43
|
-
const field = (item, path) => item !== null && typeof item === "object" && !Array.isArray(item) ? path.split(".").reduce((value, key) => value?.[key], item) : item;
|
|
44
|
-
const compare = (a, b) => typeof a === "number" && typeof b === "number" ? a - b : hn.text(a).localeCompare(hn.text(b));
|
|
45
|
-
list.sort((a, b) => {
|
|
46
|
-
for (const key of sort) {
|
|
47
|
-
const descending = key.startsWith("-");
|
|
48
|
-
const order = compare(field(a, descending ? key.slice(1) : key), field(b, descending ? key.slice(1) : key));
|
|
49
|
-
if (order !== 0) return descending ? -order : order;
|
|
50
|
-
}
|
|
51
|
-
return 0;
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
return typeof limit === "number" ? list.slice(0, Math.max(0, Math.trunc(limit))) : list;
|
|
55
|
-
}
|
|
56
|
-
};
|
|
57
39
|
const props = __props;
|
|
58
40
|
const emit = __emit;
|
|
59
41
|
const root = ref(null);
|
|
60
|
-
const
|
|
61
|
-
const
|
|
62
|
-
const
|
|
63
|
-
const
|
|
64
|
-
const
|
|
65
|
-
const
|
|
42
|
+
const headerElement = useTemplateRef("header");
|
|
43
|
+
const insertElement = useTemplateRef("insert");
|
|
44
|
+
const cells = ref([]);
|
|
45
|
+
const rows = ref(8);
|
|
46
|
+
const cols = ref(8);
|
|
47
|
+
const hint = ref("");
|
|
48
|
+
const withHeaderRow = ref(false);
|
|
66
49
|
/** Dispatches a component event to Vue listeners and, for controllers and page code, on the root. */
|
|
67
|
-
|
|
68
|
-
const declared = {
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
50
|
+
function dispatch(name, detail) {
|
|
51
|
+
const declared = { insert: {
|
|
52
|
+
bubbles: true,
|
|
53
|
+
composed: true,
|
|
54
|
+
cancelable: false
|
|
72
55
|
} };
|
|
73
|
-
const checks = {
|
|
56
|
+
const checks = { insert: (detail) => detail !== null && typeof detail === "object" && !Array.isArray(detail) && Number.isInteger(detail["rows"]) && Number.isInteger(detail["cols"]) && typeof detail["withHeaderRow"] === "boolean" && Object.keys(detail).every((key) => [
|
|
74
57
|
"rows",
|
|
75
58
|
"cols",
|
|
76
59
|
"withHeaderRow"
|
|
@@ -83,34 +66,34 @@ var UiEditorInsertTableGrid_default = /*#__PURE__*/ _plugin_vue_export_helper_de
|
|
|
83
66
|
...declared[name],
|
|
84
67
|
detail
|
|
85
68
|
})) ?? true;
|
|
86
|
-
}
|
|
69
|
+
}
|
|
87
70
|
function read(name) {
|
|
88
|
-
if (name === "cells") return
|
|
89
|
-
if (name === "rows") return
|
|
90
|
-
if (name === "cols") return
|
|
91
|
-
if (name === "hint") return
|
|
92
|
-
if (name === "withHeaderRow") return
|
|
71
|
+
if (name === "cells") return cells.value;
|
|
72
|
+
if (name === "rows") return rows.value;
|
|
73
|
+
if (name === "cols") return cols.value;
|
|
74
|
+
if (name === "hint") return hint.value;
|
|
75
|
+
if (name === "withHeaderRow") return withHeaderRow.value;
|
|
93
76
|
return props[name];
|
|
94
77
|
}
|
|
95
78
|
function write(name, value) {
|
|
96
79
|
if (name === "cells") {
|
|
97
|
-
|
|
80
|
+
cells.value = value;
|
|
98
81
|
return true;
|
|
99
82
|
}
|
|
100
83
|
if (name === "rows") {
|
|
101
|
-
|
|
84
|
+
rows.value = value;
|
|
102
85
|
return true;
|
|
103
86
|
}
|
|
104
87
|
if (name === "cols") {
|
|
105
|
-
|
|
88
|
+
cols.value = value;
|
|
106
89
|
return true;
|
|
107
90
|
}
|
|
108
91
|
if (name === "hint") {
|
|
109
|
-
|
|
92
|
+
hint.value = value;
|
|
110
93
|
return true;
|
|
111
94
|
}
|
|
112
95
|
if (name === "withHeaderRow") {
|
|
113
|
-
|
|
96
|
+
withHeaderRow.value = value;
|
|
114
97
|
return true;
|
|
115
98
|
}
|
|
116
99
|
throw new TypeError(`Only declared state is writable; \`${name}\` is not.`);
|
|
@@ -124,7 +107,14 @@ var UiEditorInsertTableGrid_default = /*#__PURE__*/ _plugin_vue_export_helper_de
|
|
|
124
107
|
get: (_target, name) => typeof name === "string" ? read(name) : void 0,
|
|
125
108
|
set: (_target, name, value) => typeof name === "string" && write(name, value)
|
|
126
109
|
}),
|
|
127
|
-
refs
|
|
110
|
+
refs: {
|
|
111
|
+
get header() {
|
|
112
|
+
return headerElement.value;
|
|
113
|
+
},
|
|
114
|
+
get insert() {
|
|
115
|
+
return insertElement.value;
|
|
116
|
+
}
|
|
117
|
+
},
|
|
128
118
|
elements: new Proxy({}, { get: (_target, name) => {
|
|
129
119
|
if (typeof name !== "string" || root.value === null) return void 0;
|
|
130
120
|
return (root.value instanceof HTMLFormElement ? root.value : root.value.querySelector("form"))?.elements.namedItem(name) ?? root.value.querySelector(`[name="${CSS.escape(name)}"]`) ?? void 0;
|
|
@@ -175,47 +165,39 @@ var UiEditorInsertTableGrid_default = /*#__PURE__*/ _plugin_vue_export_helper_de
|
|
|
175
165
|
});
|
|
176
166
|
return (_ctx, _cache) => {
|
|
177
167
|
return openBlock(), createElementBlock("div", mergeProps({ "data-component": "ui-editor-insert-table-grid" }, _ctx.$attrs, {
|
|
178
|
-
hidden:
|
|
168
|
+
hidden: !__props.open,
|
|
179
169
|
ref_key: "root",
|
|
180
170
|
ref: root
|
|
181
171
|
}), [
|
|
182
|
-
createElementVNode("p", _hoisted_2, toDisplayString(
|
|
172
|
+
createElementVNode("p", _hoisted_2, toDisplayString(hint.value), 1),
|
|
183
173
|
createElementVNode("div", {
|
|
184
174
|
class: "grid",
|
|
185
175
|
role: "group",
|
|
186
176
|
"aria-label": "Table dimensions",
|
|
187
177
|
style: normalizeStyle({
|
|
188
|
-
"--ui-editor-table-grid-rows":
|
|
189
|
-
"--ui-editor-table-grid-cols":
|
|
178
|
+
"--ui-editor-table-grid-rows": rows.value,
|
|
179
|
+
"--ui-editor-table-grid-cols": cols.value
|
|
190
180
|
})
|
|
191
|
-
}, [(openBlock(true), createElementBlock(Fragment, null, renderList(
|
|
181
|
+
}, [(openBlock(true), createElementBlock(Fragment, null, renderList(cells.value, (cell) => {
|
|
192
182
|
return openBlock(), createElementBlock("button", {
|
|
193
|
-
key: cell
|
|
183
|
+
key: cell.key,
|
|
194
184
|
type: "button",
|
|
195
|
-
class: normalizeClass(["cell", {
|
|
196
|
-
"data-row":
|
|
197
|
-
"data-col":
|
|
198
|
-
"aria-label":
|
|
199
|
-
"aria-pressed":
|
|
185
|
+
class: normalizeClass(["cell", { selected: cell.selected }]),
|
|
186
|
+
"data-row": cell.row,
|
|
187
|
+
"data-col": cell.col,
|
|
188
|
+
"aria-label": cell.label,
|
|
189
|
+
"aria-pressed": cell.selected
|
|
200
190
|
}, null, 10, _hoisted_3);
|
|
201
191
|
}), 128))], 4),
|
|
202
192
|
createElementVNode("label", _hoisted_4, [createElementVNode("input", {
|
|
203
193
|
type: "checkbox",
|
|
204
|
-
".checked":
|
|
205
|
-
ref:
|
|
206
|
-
refs["header"] = element;
|
|
207
|
-
}
|
|
194
|
+
".checked": withHeaderRow.value,
|
|
195
|
+
ref: "header"
|
|
208
196
|
}, null, 40, _hoisted_5), _cache[0] || (_cache[0] = createTextVNode(" Header row", -1))]),
|
|
209
|
-
createElementVNode("button",
|
|
210
|
-
type: "button",
|
|
211
|
-
class: "insert",
|
|
212
|
-
ref: (element) => {
|
|
213
|
-
refs["insert"] = element;
|
|
214
|
-
}
|
|
215
|
-
}, "Insert table", 512)
|
|
197
|
+
createElementVNode("button", _hoisted_6, "Insert table", 512)
|
|
216
198
|
], 16, _hoisted_1);
|
|
217
199
|
};
|
|
218
200
|
}
|
|
219
|
-
}), [["__scopeId", "data-v-
|
|
201
|
+
}), [["__scopeId", "data-v-c4064690"]]);
|
|
220
202
|
//#endregion
|
|
221
203
|
export { UiEditorInsertTableGrid_default as t };
|
|
@@ -37,11 +37,11 @@ var UiEditorMentionMenu_default = /*#__PURE__*/ _plugin_vue_export_helper_defaul
|
|
|
37
37
|
anchorRect: {},
|
|
38
38
|
items: {},
|
|
39
39
|
loading: {
|
|
40
|
-
type:
|
|
40
|
+
type: Boolean,
|
|
41
41
|
default: false
|
|
42
42
|
},
|
|
43
43
|
open: {
|
|
44
|
-
type:
|
|
44
|
+
type: Boolean,
|
|
45
45
|
default: false
|
|
46
46
|
},
|
|
47
47
|
query: { default: "" },
|
|
@@ -49,72 +49,31 @@ var UiEditorMentionMenu_default = /*#__PURE__*/ _plugin_vue_export_helper_defaul
|
|
|
49
49
|
},
|
|
50
50
|
emits: ["highlight", "select"],
|
|
51
51
|
setup(__props, { emit: __emit }) {
|
|
52
|
-
const hn = {
|
|
53
|
-
t: (v) => v === true || (typeof v === "string" ? v.length > 0 : typeof v === "number" ? v !== 0 && v === v : Array.isArray(v) ? v.length > 0 : v !== null && typeof v === "object" ? Object.keys(v).length > 0 : false),
|
|
54
|
-
n: (v) => typeof v === "number" && v === v ? v : void 0,
|
|
55
|
-
text: (v) => v === void 0 || v === null ? "" : Array.isArray(v) ? v.map(hn.text).join(" ") : typeof v === "object" ? "" : String(v),
|
|
56
|
-
attr: (v) => v === void 0 || v === null || v === false ? void 0 : v === true ? "" : Array.isArray(v) ? v.map(hn.text).join(" ") : typeof v === "object" ? void 0 : String(v),
|
|
57
|
-
enumerated: (v) => typeof v === "boolean" ? String(v) : hn.attr(v),
|
|
58
|
-
call: (fn, ...args) => {
|
|
59
|
-
if (fn === "format") {
|
|
60
|
-
let index = 1;
|
|
61
|
-
return typeof args[0] === "string" ? args[0].replace(/%s/g, () => index < args.length ? hn.text(args[index++]) : "%s") : void 0;
|
|
62
|
-
}
|
|
63
|
-
const n = args.map(hn.n);
|
|
64
|
-
if (n.some((value) => value === void 0)) return void 0;
|
|
65
|
-
const v = n;
|
|
66
|
-
switch (fn) {
|
|
67
|
-
case "abs": return v.length === 1 ? Math.abs(v[0]) : void 0;
|
|
68
|
-
case "round": return v.length === 1 ? Math.round(v[0]) : void 0;
|
|
69
|
-
case "min": return v.length > 0 ? Math.min(...v) : void 0;
|
|
70
|
-
case "max": return v.length > 0 ? Math.max(...v) : void 0;
|
|
71
|
-
case "clamp": return v.length === 3 ? Math.min(Math.max(v[0], v[1]), v[2]) : void 0;
|
|
72
|
-
}
|
|
73
|
-
},
|
|
74
|
-
shape: (items, where, sort, limit) => {
|
|
75
|
-
let list = Array.isArray(items) ? items.slice() : [];
|
|
76
|
-
if (where !== void 0) list = list.filter((item) => hn.t(where(item)));
|
|
77
|
-
if (sort.length > 0) {
|
|
78
|
-
const field = (item, path) => item !== null && typeof item === "object" && !Array.isArray(item) ? path.split(".").reduce((value, key) => value?.[key], item) : item;
|
|
79
|
-
const compare = (a, b) => typeof a === "number" && typeof b === "number" ? a - b : hn.text(a).localeCompare(hn.text(b));
|
|
80
|
-
list.sort((a, b) => {
|
|
81
|
-
for (const key of sort) {
|
|
82
|
-
const descending = key.startsWith("-");
|
|
83
|
-
const order = compare(field(a, descending ? key.slice(1) : key), field(b, descending ? key.slice(1) : key));
|
|
84
|
-
if (order !== 0) return descending ? -order : order;
|
|
85
|
-
}
|
|
86
|
-
return 0;
|
|
87
|
-
});
|
|
88
|
-
}
|
|
89
|
-
return typeof limit === "number" ? list.slice(0, Math.max(0, Math.trunc(limit))) : list;
|
|
90
|
-
}
|
|
91
|
-
};
|
|
92
52
|
const props = __props;
|
|
93
53
|
const emit = __emit;
|
|
94
54
|
const root = ref(null);
|
|
95
|
-
const
|
|
96
|
-
const
|
|
97
|
-
const
|
|
98
|
-
const
|
|
99
|
-
const
|
|
100
|
-
const state_prefix = ref("ui-editor-mention-menu");
|
|
55
|
+
const visible = ref(false);
|
|
56
|
+
const rows = ref([]);
|
|
57
|
+
const searching = ref(false);
|
|
58
|
+
const active = ref(0);
|
|
59
|
+
const prefix = ref("ui-editor-mention-menu");
|
|
101
60
|
/** Dispatches a component event to Vue listeners and, for controllers and page code, on the root. */
|
|
102
|
-
|
|
61
|
+
function dispatch(name, detail) {
|
|
103
62
|
const declared = {
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
63
|
+
highlight: {
|
|
64
|
+
bubbles: true,
|
|
65
|
+
composed: true,
|
|
66
|
+
cancelable: false
|
|
108
67
|
},
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
68
|
+
select: {
|
|
69
|
+
bubbles: true,
|
|
70
|
+
composed: true,
|
|
71
|
+
cancelable: false
|
|
113
72
|
}
|
|
114
73
|
};
|
|
115
74
|
const checks = {
|
|
116
|
-
|
|
117
|
-
|
|
75
|
+
highlight: (detail) => detail !== null && typeof detail === "object" && !Array.isArray(detail) && Number.isInteger(detail["index"]) && Object.keys(detail).every((key) => ["index"].includes(key)),
|
|
76
|
+
select: (detail) => detail !== null && typeof detail === "object" && !Array.isArray(detail) && Number.isInteger(detail["index"]) && Object.keys(detail).every((key) => ["index"].includes(key))
|
|
118
77
|
};
|
|
119
78
|
if (detail !== void 0 && checks[name] !== void 0 && !checks[name](detail)) throw new TypeError(`HR002: Event \`${name}\` detail does not satisfy its declared type.`);
|
|
120
79
|
emit(name, detail);
|
|
@@ -124,34 +83,34 @@ var UiEditorMentionMenu_default = /*#__PURE__*/ _plugin_vue_export_helper_defaul
|
|
|
124
83
|
...declared[name],
|
|
125
84
|
detail
|
|
126
85
|
})) ?? true;
|
|
127
|
-
}
|
|
86
|
+
}
|
|
128
87
|
function read(name) {
|
|
129
|
-
if (name === "visible") return
|
|
130
|
-
if (name === "rows") return
|
|
131
|
-
if (name === "searching") return
|
|
132
|
-
if (name === "active") return
|
|
133
|
-
if (name === "prefix") return
|
|
88
|
+
if (name === "visible") return visible.value;
|
|
89
|
+
if (name === "rows") return rows.value;
|
|
90
|
+
if (name === "searching") return searching.value;
|
|
91
|
+
if (name === "active") return active.value;
|
|
92
|
+
if (name === "prefix") return prefix.value;
|
|
134
93
|
return props[name];
|
|
135
94
|
}
|
|
136
95
|
function write(name, value) {
|
|
137
96
|
if (name === "visible") {
|
|
138
|
-
|
|
97
|
+
visible.value = value;
|
|
139
98
|
return true;
|
|
140
99
|
}
|
|
141
100
|
if (name === "rows") {
|
|
142
|
-
|
|
101
|
+
rows.value = value;
|
|
143
102
|
return true;
|
|
144
103
|
}
|
|
145
104
|
if (name === "searching") {
|
|
146
|
-
|
|
105
|
+
searching.value = value;
|
|
147
106
|
return true;
|
|
148
107
|
}
|
|
149
108
|
if (name === "active") {
|
|
150
|
-
|
|
109
|
+
active.value = value;
|
|
151
110
|
return true;
|
|
152
111
|
}
|
|
153
112
|
if (name === "prefix") {
|
|
154
|
-
|
|
113
|
+
prefix.value = value;
|
|
155
114
|
return true;
|
|
156
115
|
}
|
|
157
116
|
throw new TypeError(`Only declared state is writable; \`${name}\` is not.`);
|
|
@@ -165,7 +124,7 @@ var UiEditorMentionMenu_default = /*#__PURE__*/ _plugin_vue_export_helper_defaul
|
|
|
165
124
|
get: (_target, name) => typeof name === "string" ? read(name) : void 0,
|
|
166
125
|
set: (_target, name, value) => typeof name === "string" && write(name, value)
|
|
167
126
|
}),
|
|
168
|
-
refs,
|
|
127
|
+
refs: {},
|
|
169
128
|
elements: new Proxy({}, { get: (_target, name) => {
|
|
170
129
|
if (typeof name !== "string" || root.value === null) return void 0;
|
|
171
130
|
return (root.value instanceof HTMLFormElement ? root.value : root.value.querySelector("form"))?.elements.namedItem(name) ?? root.value.querySelector(`[name="${CSS.escape(name)}"]`) ?? void 0;
|
|
@@ -220,26 +179,26 @@ var UiEditorMentionMenu_default = /*#__PURE__*/ _plugin_vue_export_helper_defaul
|
|
|
220
179
|
role: "listbox",
|
|
221
180
|
"aria-label": "Mention a person"
|
|
222
181
|
}, _ctx.$attrs, {
|
|
223
|
-
"aria-busy":
|
|
224
|
-
hidden:
|
|
182
|
+
"aria-busy": __props.loading,
|
|
183
|
+
hidden: !visible.value,
|
|
225
184
|
ref_key: "root",
|
|
226
185
|
ref: root
|
|
227
186
|
}), [
|
|
228
187
|
_cache[0] || (_cache[0] = createElementVNode("div", { class: "header" }, [createElementVNode("span", null, "People"), createElementVNode("span", { class: "hint" }, "Type after @ to search")], -1)),
|
|
229
|
-
|
|
230
|
-
|
|
188
|
+
searching.value ? (openBlock(), createElementBlock("div", _hoisted_2, "Searching…")) : createCommentVNode("v-if", true),
|
|
189
|
+
!searching.value ? (openBlock(), createElementBlock("ul", _hoisted_3, [(openBlock(true), createElementBlock(Fragment, null, renderList(rows.value, (row, index) => {
|
|
231
190
|
return openBlock(), createElementBlock("li", {
|
|
232
191
|
key: index,
|
|
233
|
-
class: normalizeClass(["item", {
|
|
192
|
+
class: normalizeClass(["item", { active: index === active.value }]),
|
|
234
193
|
role: "option",
|
|
235
|
-
id:
|
|
236
|
-
"aria-selected":
|
|
237
|
-
"data-index":
|
|
238
|
-
}, [createElementVNode("span", _hoisted_5, toDisplayString(
|
|
194
|
+
id: `${prefix.value}-option-${index}`,
|
|
195
|
+
"aria-selected": index === active.value,
|
|
196
|
+
"data-index": index
|
|
197
|
+
}, [createElementVNode("span", _hoisted_5, toDisplayString(row.initials), 1), createElementVNode("span", _hoisted_6, [createElementVNode("span", _hoisted_7, toDisplayString(row.label), 1), row.detail ? (openBlock(), createElementBlock("span", _hoisted_8, toDisplayString(row.detail), 1)) : createCommentVNode("v-if", true)])], 10, _hoisted_4);
|
|
239
198
|
}), 128))])) : createCommentVNode("v-if", true)
|
|
240
199
|
], 16, _hoisted_1);
|
|
241
200
|
};
|
|
242
201
|
}
|
|
243
|
-
}), [["__scopeId", "data-v-
|
|
202
|
+
}), [["__scopeId", "data-v-2abe407e"]]);
|
|
244
203
|
//#endregion
|
|
245
204
|
export { UiEditorMentionMenu_default as t };
|