@leavepulse/ui 0.70.0 → 0.70.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 +12 -0
- package/dist/assets/LpRepeater-C1Cw27hj.css +21 -0
- package/dist/assets/{LpRollingText-BGnE6q9j.css → LpRollingText-dyOXedGO.css} +7 -0
- package/dist/chunks/{ContextMenuItems-B5uE8Znw.js → ContextMenuItems-6kxEivBI.js} +10 -4
- package/dist/chunks/{LpAddressInput-CNnLTDZg.js → LpAddressInput-Chv_Xf8q.js} +1 -1
- package/dist/chunks/{LpAppShell-CEUAB8kK.js → LpAppShell-BiWByLmt.js} +1 -1
- package/dist/chunks/{LpBadge-HOEPBYmi.js → LpBadge-BBq1Er9T.js} +1 -1
- package/dist/chunks/{LpBreadcrumbs-DYoPc3P4.js → LpBreadcrumbs-JKEi_yFF.js} +1 -1
- package/dist/chunks/{LpCodeDisplay-CIKKT2iW.js → LpCodeDisplay-CbJMs-IK.js} +2 -2
- package/dist/chunks/{LpColorPicker-DFugXNUi.js → LpColorPicker-B7HSIFmn.js} +2 -2
- package/dist/chunks/{LpContextMenu-COwOwRgI.js → LpContextMenu-Cj96ENDC.js} +5 -4
- package/dist/chunks/{LpCountdown-Dtq1ihlJ.js → LpCountdown-BQnmB4gq.js} +1 -1
- package/dist/chunks/{LpDataList-B-5nHfNw.js → LpDataList-CHNYQw7h.js} +4 -3
- package/dist/chunks/{LpDatePicker-BUe1VUC0.js → LpDatePicker-ac1_6o5P.js} +4 -3
- package/dist/chunks/{LpDateRangePicker-C_k65vGR.js → LpDateRangePicker-B15gYrZJ.js} +4 -3
- package/dist/chunks/{LpDropdownMenu-CRgrhdAH.js → LpDropdownMenu-R4aYVtVV.js} +5 -2
- package/dist/chunks/{LpEditable-DTqLt2lT.js → LpEditable-Ws3DNQHn.js} +5 -3
- package/dist/chunks/{LpFileTree-DMISXVHC.js → LpFileTree-DDNg34tJ.js} +1 -1
- package/dist/chunks/{LpFileTreeNode-CPXB_Yy3.js → LpFileTreeNode-DmPuYNZ_.js} +2 -2
- package/dist/chunks/{LpGauge-Bk8TwJj0.js → LpGauge-C14Z9503.js} +1 -1
- package/dist/chunks/{LpHintLayer-p4hqzdyA.js → LpHintLayer-HvwUA5Ec.js} +1 -1
- package/dist/chunks/{LpHints-CCrhRfy9.js → LpHints-DxbPKOzQ.js} +2 -2
- package/dist/chunks/{LpInfraNode-CUC3t4na.js → LpInfraNode-D64hywJI.js} +2 -2
- package/dist/chunks/{LpLogViewer-elZHbj85.js → LpLogViewer-DKK4ySZl.js} +2 -2
- package/dist/chunks/{LpMediaGallery-D5swlmZ_.js → LpMediaGallery-rmI1DjKN.js} +1 -1
- package/dist/chunks/{LpModalNav-D4Z0wVHR.js → LpModalNav-DiyFCHiZ.js} +1 -1
- package/dist/chunks/{LpNotificationBell-DPZmP5dM.js → LpNotificationBell-D-WhE5m2.js} +5 -5
- package/dist/chunks/{LpPasswordInput-DTV18FIh.js → LpPasswordInput-GL2KOFK8.js} +10 -6
- package/dist/chunks/{LpPie-CFuV7pZv.js → LpPie-BgXZ3xmm.js} +2 -2
- package/dist/chunks/{LpPipeline-D81yh_NX.js → LpPipeline-B31h41Mu.js} +2 -2
- package/dist/chunks/{LpPopover-BEIcqb9p.js → LpPopover-DmZ3wUtP.js} +6 -5
- package/dist/chunks/{LpQuota-2Sw_gqcJ.js → LpQuota-DaL8TgNe.js} +1 -1
- package/dist/chunks/{LpRelativeTime-CKzVqAo9.js → LpRelativeTime-yin9uQP7.js} +1 -1
- package/dist/chunks/LpRepeater-D0S7jjwr.js +180 -0
- package/dist/chunks/{LpRollingText-DB7upf-5.js → LpRollingText-DiL717LK.js} +4 -3
- package/dist/chunks/{LpSecretField-DMfdJ1cQ.js → LpSecretField-CfWyHv9m.js} +19 -10
- package/dist/chunks/{LpSelect-B4f_yRi5.js → LpSelect-C_8cJtj6.js} +10 -15
- package/dist/chunks/{LpSidebar-D-M0Y_7U.js → LpSidebar-CZRXtvem.js} +1 -1
- package/dist/chunks/{LpSidebarNav-DF-TYxOV.js → LpSidebarNav-DBg1U1oW.js} +2 -2
- package/dist/chunks/{LpStat-B2ix1Q7t.js → LpStat-DFKlPJgy.js} +1 -1
- package/dist/chunks/{LpStatus-C7kx5PKE.js → LpStatus-BsGLrpor.js} +2 -2
- package/dist/chunks/{LpStepMark-DK-5BKAt.js → LpStepMark-TrzOioa9.js} +1 -1
- package/dist/chunks/{LpStepper-DRFfdJaq.js → LpStepper-BbnS5jUr.js} +1 -1
- package/dist/chunks/{LpTagsInput-DgpBFRV2.js → LpTagsInput-DZg80W-B.js} +1 -1
- package/dist/chunks/{LpThemeStudio-DguwHdGt.js → LpThemeStudio-DxVZMtzN.js} +1 -1
- package/dist/chunks/{LpThemeSwitcher-D5uz0MhK.js → LpThemeSwitcher-CadVBTBn.js} +3 -3
- package/dist/chunks/{LpTopologyCanvas-ZhKthfgz.js → LpTopologyCanvas-C17A1XCb.js} +1 -1
- package/dist/chunks/{LpTour-NfRJNEIP.js → LpTour-CY2bFXge.js} +1 -1
- package/dist/chunks/{LpUptimeBar-DWegV2p6.js → LpUptimeBar-Tew1Ykx4.js} +1 -1
- package/dist/chunks/{PickerField-CHRS1h7K.js → PickerField-DoHv0WMH.js} +25 -16
- package/dist/chunks/{TourCard-BXuVHsfn.js → TourCard-BJ8i7dk0.js} +1 -1
- package/dist/components/ContextMenuItems.vue.js +1 -1
- package/dist/components/LpAddressInput.vue.js +1 -1
- package/dist/components/LpAppShell.vue.js +1 -1
- package/dist/components/LpBadge.vue.js +1 -1
- package/dist/components/LpBreadcrumbs.vue.js +1 -1
- package/dist/components/LpChart.vue.js +26 -24
- package/dist/components/LpCodeDisplay.vue.js +1 -1
- package/dist/components/LpColorPicker.vue.js +1 -1
- package/dist/components/LpContextMenu.vue.js +1 -1
- package/dist/components/LpCountdown.vue.js +1 -1
- package/dist/components/LpDataList.vue.js +1 -1
- package/dist/components/LpDatePicker.vue.d.ts +2 -0
- package/dist/components/LpDatePicker.vue.js +1 -1
- package/dist/components/LpDateRangePicker.vue.d.ts +2 -0
- package/dist/components/LpDateRangePicker.vue.js +1 -1
- package/dist/components/LpDropdownMenu.vue.js +1 -1
- package/dist/components/LpEditable.vue.js +1 -1
- package/dist/components/LpFileTree.vue.js +1 -1
- package/dist/components/LpFileTreeNode.vue.js +1 -1
- package/dist/components/LpGauge.vue.js +1 -1
- package/dist/components/LpHintLayer.vue.js +1 -1
- package/dist/components/LpHints.vue.js +1 -1
- package/dist/components/LpInfraNode.vue.js +1 -1
- package/dist/components/LpLogViewer.vue.js +1 -1
- package/dist/components/LpMediaGallery.vue.js +1 -1
- package/dist/components/LpModalNav.vue.js +1 -1
- package/dist/components/LpNotificationBell.vue.js +1 -1
- package/dist/components/LpPaletteFacts.vue.js +1 -1
- package/dist/components/LpPaletteStats.vue.js +1 -1
- package/dist/components/LpPasswordInput.vue.d.ts +7 -1
- package/dist/components/LpPasswordInput.vue.js +1 -1
- package/dist/components/LpPie.vue.js +1 -1
- package/dist/components/LpPipeline.vue.js +1 -1
- package/dist/components/LpPopover.vue.js +1 -1
- package/dist/components/LpQuota.vue.js +1 -1
- package/dist/components/LpRelativeTime.vue.js +1 -1
- package/dist/components/LpRepeater.vue.js +1 -1
- package/dist/components/LpRollingText.vue.d.ts +2 -0
- package/dist/components/LpRollingText.vue.js +1 -1
- package/dist/components/LpSecretField.vue.js +1 -1
- package/dist/components/LpSelect.vue.js +1 -1
- package/dist/components/LpSidebar.vue.js +1 -1
- package/dist/components/LpSidebarNav.vue.js +1 -1
- package/dist/components/LpStat.vue.js +1 -1
- package/dist/components/LpStatus.vue.js +1 -1
- package/dist/components/LpStepMark.vue.js +1 -1
- package/dist/components/LpStepper.vue.js +1 -1
- package/dist/components/LpTable.vue.js +4 -4
- package/dist/components/LpTabs.vue.js +3 -3
- package/dist/components/LpTagsInput.vue.js +1 -1
- package/dist/components/LpThemeStudio.vue.js +1 -1
- package/dist/components/LpThemeSwitcher.vue.js +1 -1
- package/dist/components/LpTopologyCanvas.vue.js +1 -1
- package/dist/components/LpTour.vue.js +1 -1
- package/dist/components/LpUptimeBar.vue.js +1 -1
- package/dist/components/PickerField.vue.d.ts +5 -3
- package/dist/components/PickerField.vue.js +1 -1
- package/dist/components/TourCard.vue.js +1 -1
- package/dist/components/menuWhen.js +1 -1
- package/dist/composables/useField.d.ts +5 -0
- package/dist/composables/useField.js +21 -1
- package/dist/composables/useForm.js +13 -4
- package/dist/composables/useView.js +4 -1
- package/dist/index.js +43 -43
- package/package.json +4 -1
- package/src/components/ContextMenuItems.vue +5 -2
- package/src/components/LpChart.vue +19 -17
- package/src/components/LpContextMenu.vue +4 -3
- package/src/components/LpDataList.vue +2 -2
- package/src/components/LpDatePicker.vue +2 -0
- package/src/components/LpDateRangePicker.vue +2 -0
- package/src/components/LpDropdownMenu.vue +1 -1
- package/src/components/LpEditable.vue +3 -1
- package/src/components/LpPasswordInput.vue +10 -5
- package/src/components/LpPopover.vue +4 -0
- package/src/components/LpRepeater.vue +64 -13
- package/src/components/LpRollingText.vue +12 -1
- package/src/components/LpSecretField.vue +15 -8
- package/src/components/LpSelect.vue +4 -9
- package/src/components/PickerField.vue +5 -4
- package/src/composables/useField.ts +26 -1
- package/src/composables/useForm.ts +14 -5
- package/src/composables/useView.ts +3 -0
- package/dist/chunks/LpRepeater-D0VjmD6y.js +0 -140
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
import { defineComponent, useModel, ref, openBlock, createElementBlock, mergeProps, unref, createElementVNode, toDisplayString, createCommentVNode, createVNode, withCtx, createTextVNode, TransitionGroup, Fragment, renderList, renderSlot, mergeModels, nextTick } from "vue";
|
|
2
|
+
import { useFieldControl } from "../composables/useField.js";
|
|
3
|
+
import { useLabels } from "../composables/useLpConfig.js";
|
|
4
|
+
import { useMergedAttrs } from "../composables/useMergedClass.js";
|
|
5
|
+
import { useRepeater } from "../composables/useRepeater.js";
|
|
6
|
+
import { usePrefersReducedMotion } from "../composables/useReducedMotion.js";
|
|
7
|
+
import { _ as _sfc_main$1 } from "./LpButton-CVxBfGjd.js";
|
|
8
|
+
import { _ as _sfc_main$2 } from "./LpIcon-HJP5xMz4.js";
|
|
9
|
+
import { _ as _sfc_main$3 } from "./LpShift-DXNsauQZ.js";
|
|
10
|
+
import '../assets/LpRepeater-C1Cw27hj.css';const _hoisted_1 = { class: "flex items-center justify-between gap-2" };
|
|
11
|
+
const _hoisted_2 = {
|
|
12
|
+
key: 0,
|
|
13
|
+
class: "text-sm font-medium text-ink"
|
|
14
|
+
};
|
|
15
|
+
const _hoisted_3 = { class: "min-w-0 flex-1" };
|
|
16
|
+
const _hoisted_4 = {
|
|
17
|
+
key: "empty",
|
|
18
|
+
class: "text-xs text-muted"
|
|
19
|
+
};
|
|
20
|
+
const focusable = 'input:not([type="hidden"]):not([disabled]), textarea:not([disabled]), select:not([disabled]), button:not([disabled]), [tabindex="0"], [contenteditable="true"]';
|
|
21
|
+
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
22
|
+
...{ inheritAttrs: false },
|
|
23
|
+
__name: "LpRepeater",
|
|
24
|
+
props: /* @__PURE__ */ mergeModels({
|
|
25
|
+
createItem: { type: Function },
|
|
26
|
+
itemKey: { type: Function },
|
|
27
|
+
label: {},
|
|
28
|
+
disabled: { type: Boolean },
|
|
29
|
+
labels: {}
|
|
30
|
+
}, {
|
|
31
|
+
"modelValue": { default: () => [] },
|
|
32
|
+
"modelModifiers": {}
|
|
33
|
+
}),
|
|
34
|
+
emits: ["update:modelValue"],
|
|
35
|
+
setup(__props, { expose: __expose }) {
|
|
36
|
+
const props = __props;
|
|
37
|
+
const model = useModel(__props, "modelValue");
|
|
38
|
+
const field = useFieldControl(() => ({ wrapped: false, disabled: props.disabled }));
|
|
39
|
+
const text = useLabels("repeater", { add: "Add item", remove: "Remove item {index}", empty: "No items" }, () => props.labels);
|
|
40
|
+
const list = useRepeater({
|
|
41
|
+
value: () => model.value,
|
|
42
|
+
set: (items) => {
|
|
43
|
+
model.value = items;
|
|
44
|
+
},
|
|
45
|
+
createItem: () => props.createItem(),
|
|
46
|
+
itemKey: () => props.itemKey,
|
|
47
|
+
disabled: () => field.value.disabled
|
|
48
|
+
});
|
|
49
|
+
const { rows } = list;
|
|
50
|
+
const rowsHost = ref(null);
|
|
51
|
+
const reducedMotion = usePrefersReducedMotion();
|
|
52
|
+
const addButton = ref(null);
|
|
53
|
+
function focusRow(index) {
|
|
54
|
+
rowAt(index)?.querySelector(focusable)?.focus({ preventScroll: true });
|
|
55
|
+
}
|
|
56
|
+
function rowAt(index) {
|
|
57
|
+
return Array.from(rowsHost.value?.children ?? []).filter(
|
|
58
|
+
(node) => node.hasAttribute("data-lp-repeater-row") && !node.hasAttribute("inert")
|
|
59
|
+
)[index];
|
|
60
|
+
}
|
|
61
|
+
function beforeLeave(el) {
|
|
62
|
+
const row = el;
|
|
63
|
+
row.style.width = `${row.offsetWidth}px`;
|
|
64
|
+
row.style.top = `${row.offsetTop}px`;
|
|
65
|
+
row.setAttribute("inert", "");
|
|
66
|
+
row.setAttribute("aria-hidden", "true");
|
|
67
|
+
}
|
|
68
|
+
function beforeEnter(el) {
|
|
69
|
+
const row = el;
|
|
70
|
+
row.removeAttribute("inert");
|
|
71
|
+
row.removeAttribute("aria-hidden");
|
|
72
|
+
row.style.removeProperty("top");
|
|
73
|
+
row.style.removeProperty("width");
|
|
74
|
+
}
|
|
75
|
+
async function add() {
|
|
76
|
+
if (field.value.disabled) return;
|
|
77
|
+
list.add();
|
|
78
|
+
await nextTick();
|
|
79
|
+
focusRow(model.value.length - 1);
|
|
80
|
+
}
|
|
81
|
+
async function remove(index) {
|
|
82
|
+
if (field.value.disabled) return;
|
|
83
|
+
const row = rowAt(index);
|
|
84
|
+
const restore = row?.contains(row.ownerDocument.activeElement);
|
|
85
|
+
list.remove(index);
|
|
86
|
+
if (!restore) return;
|
|
87
|
+
await nextTick();
|
|
88
|
+
if (model.value.length) focusRow(Math.min(index, model.value.length - 1));
|
|
89
|
+
else addButton.value?.$el?.focus({ preventScroll: true });
|
|
90
|
+
}
|
|
91
|
+
__expose({ add, remove, update: list.update });
|
|
92
|
+
const { class: rootClass, attrs: rest } = useMergedAttrs("flex min-w-0 flex-col gap-2");
|
|
93
|
+
return (_ctx, _cache) => {
|
|
94
|
+
return openBlock(), createElementBlock("div", mergeProps(unref(rest), { class: unref(rootClass) }), [
|
|
95
|
+
createElementVNode("div", _hoisted_1, [
|
|
96
|
+
__props.label ? (openBlock(), createElementBlock("span", _hoisted_2, toDisplayString(__props.label), 1)) : createCommentVNode("", true),
|
|
97
|
+
createVNode(_sfc_main$1, {
|
|
98
|
+
ref_key: "addButton",
|
|
99
|
+
ref: addButton,
|
|
100
|
+
size: "xs",
|
|
101
|
+
variant: "ghost",
|
|
102
|
+
disabled: unref(field).disabled,
|
|
103
|
+
onClick: add
|
|
104
|
+
}, {
|
|
105
|
+
default: withCtx(() => [
|
|
106
|
+
createVNode(_sfc_main$2, {
|
|
107
|
+
name: "lucide:plus",
|
|
108
|
+
size: 14
|
|
109
|
+
}),
|
|
110
|
+
createTextVNode(toDisplayString(unref(text).add), 1)
|
|
111
|
+
]),
|
|
112
|
+
_: 1
|
|
113
|
+
}, 8, ["disabled"])
|
|
114
|
+
]),
|
|
115
|
+
createVNode(_sfc_main$3, { axis: "height" }, {
|
|
116
|
+
default: withCtx(() => [
|
|
117
|
+
createElementVNode("div", {
|
|
118
|
+
ref_key: "rowsHost",
|
|
119
|
+
ref: rowsHost,
|
|
120
|
+
class: "relative flex min-w-0 flex-col gap-2"
|
|
121
|
+
}, [
|
|
122
|
+
createVNode(TransitionGroup, {
|
|
123
|
+
name: "lp-repeater",
|
|
124
|
+
css: !unref(reducedMotion),
|
|
125
|
+
onBeforeEnter: beforeEnter,
|
|
126
|
+
onBeforeLeave: beforeLeave
|
|
127
|
+
}, {
|
|
128
|
+
default: withCtx(() => [
|
|
129
|
+
(openBlock(true), createElementBlock(Fragment, null, renderList(unref(rows), ({ item, key }, index) => {
|
|
130
|
+
return openBlock(), createElementBlock("div", {
|
|
131
|
+
key,
|
|
132
|
+
"data-lp-repeater-row": "",
|
|
133
|
+
class: "flex min-w-0 items-start gap-2"
|
|
134
|
+
}, [
|
|
135
|
+
createElementVNode("div", _hoisted_3, [
|
|
136
|
+
renderSlot(_ctx.$slots, "default", {
|
|
137
|
+
item,
|
|
138
|
+
index,
|
|
139
|
+
disabled: unref(field).disabled,
|
|
140
|
+
update: (next) => unref(list).update(index, next),
|
|
141
|
+
remove: () => remove(index)
|
|
142
|
+
})
|
|
143
|
+
]),
|
|
144
|
+
createVNode(_sfc_main$1, {
|
|
145
|
+
variant: "ghost",
|
|
146
|
+
size: "sm",
|
|
147
|
+
square: "",
|
|
148
|
+
disabled: unref(field).disabled,
|
|
149
|
+
"aria-label": unref(text).remove.replace("{index}", String(index + 1)),
|
|
150
|
+
onClick: ($event) => remove(index)
|
|
151
|
+
}, {
|
|
152
|
+
default: withCtx(() => [
|
|
153
|
+
createVNode(_sfc_main$2, {
|
|
154
|
+
name: "lucide:x",
|
|
155
|
+
size: 14
|
|
156
|
+
})
|
|
157
|
+
]),
|
|
158
|
+
_: 1
|
|
159
|
+
}, 8, ["disabled", "aria-label", "onClick"])
|
|
160
|
+
]);
|
|
161
|
+
}), 128)),
|
|
162
|
+
!unref(rows).length ? (openBlock(), createElementBlock("div", _hoisted_4, [
|
|
163
|
+
renderSlot(_ctx.$slots, "empty", {}, () => [
|
|
164
|
+
createTextVNode(toDisplayString(unref(text).empty), 1)
|
|
165
|
+
])
|
|
166
|
+
])) : createCommentVNode("", true)
|
|
167
|
+
]),
|
|
168
|
+
_: 3
|
|
169
|
+
}, 8, ["css"])
|
|
170
|
+
], 512)
|
|
171
|
+
]),
|
|
172
|
+
_: 3
|
|
173
|
+
})
|
|
174
|
+
], 16);
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
});
|
|
178
|
+
export {
|
|
179
|
+
_sfc_main as _
|
|
180
|
+
};
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { defineComponent, computed, openBlock, createElementBlock, normalizeStyle, normalizeClass, createVNode, Transition, withCtx, renderSlot, createTextVNode, toDisplayString } from "vue";
|
|
2
|
-
import '../assets/LpRollingText-
|
|
2
|
+
import '../assets/LpRollingText-dyOXedGO.css';const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
3
3
|
__name: "LpRollingText",
|
|
4
4
|
props: {
|
|
5
5
|
value: {},
|
|
6
6
|
mode: { default: "slide" },
|
|
7
7
|
direction: { default: "up" },
|
|
8
8
|
duration: { default: 320 },
|
|
9
|
-
align: { default: "center" }
|
|
9
|
+
align: { default: "center" },
|
|
10
|
+
wrap: { type: Boolean }
|
|
10
11
|
},
|
|
11
12
|
setup(__props) {
|
|
12
13
|
const props = __props;
|
|
@@ -25,7 +26,7 @@ import '../assets/LpRollingText-BGnE6q9j.css';const _sfc_main = /* @__PURE__ */
|
|
|
25
26
|
}));
|
|
26
27
|
return (_ctx, _cache) => {
|
|
27
28
|
return openBlock(), createElementBlock("span", {
|
|
28
|
-
class: normalizeClass(["lp-roll relative inline-flex overflow-hidden align-bottom", justify.value]),
|
|
29
|
+
class: normalizeClass(["lp-roll relative inline-flex overflow-hidden align-bottom", [justify.value, __props.wrap && "lp-roll--wrap"]]),
|
|
29
30
|
style: normalizeStyle(style.value)
|
|
30
31
|
}, [
|
|
31
32
|
createVNode(Transition, { name: name.value }, {
|
|
@@ -2,12 +2,13 @@ import { defineComponent, useModel, computed, ref, watch, onMounted, onBeforeUnm
|
|
|
2
2
|
import { prefersReducedMotion } from "../composables/easing.js";
|
|
3
3
|
import { useScramble } from "../composables/useScramble.js";
|
|
4
4
|
import { useLabels } from "../composables/useLpConfig.js";
|
|
5
|
+
import { useFieldControl } from "../composables/useField.js";
|
|
5
6
|
import { mergeClass } from "../composables/useMergedClass.js";
|
|
6
7
|
import { _ as _sfc_main$5 } from "./FieldWrapper-BiennROB.js";
|
|
7
8
|
import { _ as _sfc_main$3 } from "./LpButton-CVxBfGjd.js";
|
|
8
9
|
import { _ as _sfc_main$2 } from "./LpCopyButton-DzHjnFs0.js";
|
|
9
10
|
import { _ as _sfc_main$4 } from "./LpIcon-HJP5xMz4.js";
|
|
10
|
-
import { _ as _sfc_main$1 } from "./LpPasswordInput-
|
|
11
|
+
import { _ as _sfc_main$1 } from "./LpPasswordInput-GL2KOFK8.js";
|
|
11
12
|
import { _ as _sfc_main$6 } from "./LpShift-DXNsauQZ.js";
|
|
12
13
|
import { _ as _sfc_main$8 } from "./LpTooltip-Cz8SQwRt.js";
|
|
13
14
|
import { _ as _sfc_main$7 } from "./RevealToggle-C-KzaQGJ.js";
|
|
@@ -57,7 +58,13 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
57
58
|
setup(__props, { emit: __emit }) {
|
|
58
59
|
const props = __props;
|
|
59
60
|
const emit = __emit;
|
|
60
|
-
const
|
|
61
|
+
const revealedModel = useModel(__props, "revealed");
|
|
62
|
+
const revealed = computed({
|
|
63
|
+
get: () => props.revealable && revealedModel.value,
|
|
64
|
+
set: (value) => {
|
|
65
|
+
revealedModel.value = value;
|
|
66
|
+
}
|
|
67
|
+
});
|
|
61
68
|
const text = useLabels(
|
|
62
69
|
"secretField",
|
|
63
70
|
{
|
|
@@ -71,6 +78,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
71
78
|
() => props.labels
|
|
72
79
|
);
|
|
73
80
|
const secret = computed(() => (props.input ? props.modelValue : props.value) ?? "");
|
|
81
|
+
const control = useFieldControl(() => ({ wrapped: false, disabled: props.disabled }));
|
|
74
82
|
const decrypt = useScramble(() => revealed.value ? secret.value : "", { onChange: true, duration: 650 });
|
|
75
83
|
const mask = computed(() => "•".repeat(props.maskLength));
|
|
76
84
|
let hideTimer;
|
|
@@ -117,7 +125,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
117
125
|
() => mergeClass(
|
|
118
126
|
"relative flex w-full items-center gap-1 overflow-hidden rounded-control border bg-surface-soft text-ink transition-colors duration-(--duration-fast)",
|
|
119
127
|
props.error ? "border-danger" : "border-line",
|
|
120
|
-
|
|
128
|
+
control.value.disabled ? "opacity-55" : "",
|
|
121
129
|
props.wrap ? "py-1.5" : "",
|
|
122
130
|
{ sm: "min-h-(--size-control-sm) pl-2.5 pr-1 text-xs", md: "min-h-(--size-control-md) pl-3 pr-1.5 text-sm", lg: "min-h-(--size-control-lg) pl-3.5 pr-1.5 text-sm" }[props.size]
|
|
123
131
|
)
|
|
@@ -133,7 +141,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
133
141
|
class: "[&_input]:font-mono",
|
|
134
142
|
"model-value": __props.modelValue,
|
|
135
143
|
placeholder: __props.placeholder,
|
|
136
|
-
disabled:
|
|
144
|
+
disabled: unref(control).disabled,
|
|
145
|
+
revealable: __props.revealable,
|
|
137
146
|
label: __props.label,
|
|
138
147
|
hint: __props.hint,
|
|
139
148
|
error: __props.error,
|
|
@@ -147,7 +156,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
147
156
|
value: secret.value,
|
|
148
157
|
size: "xs",
|
|
149
158
|
class: "size-7",
|
|
150
|
-
disabled:
|
|
159
|
+
disabled: unref(control).disabled,
|
|
151
160
|
onCopied: _cache[0] || (_cache[0] = (t) => emit("copied", t))
|
|
152
161
|
}, null, 8, ["value", "disabled"])) : createCommentVNode("", true),
|
|
153
162
|
renderSlot(_ctx.$slots, "actions"),
|
|
@@ -160,7 +169,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
160
169
|
"aria-label": unref(text).regenerate,
|
|
161
170
|
title: unref(text).regenerate,
|
|
162
171
|
action: __props.regenerate,
|
|
163
|
-
disabled:
|
|
172
|
+
disabled: unref(control).disabled
|
|
164
173
|
}, {
|
|
165
174
|
default: withCtx(() => [
|
|
166
175
|
createVNode(_sfc_main$4, {
|
|
@@ -180,7 +189,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
180
189
|
]),
|
|
181
190
|
key: "0"
|
|
182
191
|
} : void 0
|
|
183
|
-
]), 1040, ["visible", "model-value", "placeholder", "disabled", "label", "hint", "error", "size", "labels"])) : (openBlock(), createBlock(_sfc_main$5, {
|
|
192
|
+
]), 1040, ["visible", "model-value", "placeholder", "disabled", "revealable", "label", "hint", "error", "size", "labels"])) : (openBlock(), createBlock(_sfc_main$5, {
|
|
184
193
|
key: 1,
|
|
185
194
|
wrapped: !!(__props.label || __props.hint || __props.error),
|
|
186
195
|
id: unref(id),
|
|
@@ -239,7 +248,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
239
248
|
"icon-size": iconSize.value,
|
|
240
249
|
"show-label": unref(text).show,
|
|
241
250
|
"hide-label": unref(text).hide,
|
|
242
|
-
disabled:
|
|
251
|
+
disabled: unref(control).disabled,
|
|
243
252
|
controls: unref(id),
|
|
244
253
|
class: "size-7"
|
|
245
254
|
}, null, 8, ["modelValue", "icon-size", "show-label", "hide-label", "disabled", "controls"])) : createCommentVNode("", true),
|
|
@@ -248,7 +257,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
248
257
|
value: secret.value,
|
|
249
258
|
size: copySize.value,
|
|
250
259
|
class: "size-7 text-muted hover:text-ink",
|
|
251
|
-
disabled:
|
|
260
|
+
disabled: unref(control).disabled,
|
|
252
261
|
onCopied: _cache[4] || (_cache[4] = (t) => emit("copied", t))
|
|
253
262
|
}, null, 8, ["value", "size", "disabled"])) : createCommentVNode("", true),
|
|
254
263
|
renderSlot(_ctx.$slots, "actions"),
|
|
@@ -264,7 +273,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
264
273
|
square: "",
|
|
265
274
|
class: "size-7 text-muted hover:text-ink",
|
|
266
275
|
action: __props.regenerate,
|
|
267
|
-
disabled:
|
|
276
|
+
disabled: unref(control).disabled
|
|
268
277
|
}, {
|
|
269
278
|
default: withCtx(() => [
|
|
270
279
|
createVNode(_sfc_main$4, {
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { defineComponent, computed, ref,
|
|
1
|
+
import { defineComponent, computed, ref, useAttrs, useId, reactive, watch, nextTick, openBlock, createBlock, unref, mergeProps, withCtx, createVNode, normalizeClass, createElementVNode, toDisplayString, createElementBlock, TransitionGroup, Fragment, renderList, createCommentVNode, withModifiers, createTextVNode, normalizeStyle } from "vue";
|
|
2
2
|
import { ComboboxRoot, ComboboxAnchor, ComboboxTrigger, ComboboxPortal, ComboboxContent, ComboboxInput, ComboboxViewport, ComboboxEmpty, ComboboxItem, ComboboxItemIndicator } from "reka-ui";
|
|
3
|
-
import { useFieldControl } from "../composables/useField.js";
|
|
3
|
+
import { useFieldControl, useFieldBlur } from "../composables/useField.js";
|
|
4
4
|
import { useLabels } from "../composables/useLpConfig.js";
|
|
5
5
|
import { useMergedAttrs } from "../composables/useMergedClass.js";
|
|
6
6
|
import { POPOVER_PANEL, OPTION_ITEM, optionStagger } from "../components/dropdown.js";
|
|
7
7
|
import { _ as _sfc_main$1 } from "./LpIcon-HJP5xMz4.js";
|
|
8
8
|
import { _ as _sfc_main$3 } from "./OptionContent-CmYUUeWj.js";
|
|
9
|
-
import { _ as _sfc_main$2 } from "./LpRollingText-
|
|
9
|
+
import { _ as _sfc_main$2 } from "./LpRollingText-DiL717LK.js";
|
|
10
10
|
import { fitChips, toggledValues } from "../components/select.js";
|
|
11
11
|
import { usePortalTarget, useOutsideGuard } from "../composables/useView.js";
|
|
12
12
|
import { useResizeObserver } from "../composables/useResizeObserver.js";
|
|
@@ -112,12 +112,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
112
112
|
isOpen.value = open;
|
|
113
113
|
query.value = "";
|
|
114
114
|
}
|
|
115
|
-
const
|
|
116
|
-
function onFocusOut(event) {
|
|
117
|
-
const next = event.relatedTarget;
|
|
118
|
-
const inside = !!next && typeof next.closest === "function" && !!next.closest(`[data-lp-select-part="${partOf}"]`);
|
|
119
|
-
if (!inside) emit("blur", event);
|
|
120
|
-
}
|
|
115
|
+
const { partId, onFocusOut } = useFieldBlur((event) => emit("blur", event));
|
|
121
116
|
const attrs = useAttrs();
|
|
122
117
|
const valueId = `lp-select-${useId()}-value`;
|
|
123
118
|
const valueText = computed(() => chips.value.length ? chipNames.value : displayLabel.value || placeholderText.value);
|
|
@@ -254,8 +249,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
254
249
|
}), {
|
|
255
250
|
default: withCtx(() => [
|
|
256
251
|
createVNode(unref(ComboboxAnchor), {
|
|
257
|
-
"data-lp-
|
|
258
|
-
onFocusout: onFocusOut,
|
|
252
|
+
"data-lp-field-part": unref(partId),
|
|
253
|
+
onFocusout: unref(onFocusOut),
|
|
259
254
|
class: normalizeClass([
|
|
260
255
|
anchorHeight.value,
|
|
261
256
|
"group flex w-full items-center gap-2 rounded-control border bg-surface-soft px-3 text-sm text-ink transition-colors duration-[var(--duration-fast)] focus-within:ring-2",
|
|
@@ -394,12 +389,12 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
394
389
|
})
|
|
395
390
|
]),
|
|
396
391
|
_: 1
|
|
397
|
-
}, 8, ["class"]),
|
|
392
|
+
}, 8, ["data-lp-field-part", "onFocusout", "class"]),
|
|
398
393
|
createVNode(unref(ComboboxPortal), { to: unref(portalTo) }, {
|
|
399
394
|
default: withCtx(() => [
|
|
400
395
|
createVNode(unref(ComboboxContent), {
|
|
401
|
-
"data-lp-
|
|
402
|
-
onFocusout: onFocusOut,
|
|
396
|
+
"data-lp-field-part": unref(partId),
|
|
397
|
+
onFocusout: unref(onFocusOut),
|
|
403
398
|
onInteractOutside: unref(guardOutside),
|
|
404
399
|
onEscapeKeyDown: unref(guardOutside),
|
|
405
400
|
position: "popper",
|
|
@@ -455,7 +450,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
455
450
|
})
|
|
456
451
|
]),
|
|
457
452
|
_: 1
|
|
458
|
-
}, 8, ["onInteractOutside", "onEscapeKeyDown", "class"])
|
|
453
|
+
}, 8, ["data-lp-field-part", "onFocusout", "onInteractOutside", "onEscapeKeyDown", "class"])
|
|
459
454
|
]),
|
|
460
455
|
_: 1
|
|
461
456
|
}, 8, ["to"])
|
|
@@ -3,7 +3,7 @@ import { usePersisted } from "../composables/usePersisted.js";
|
|
|
3
3
|
import { useLabels } from "../composables/useLpConfig.js";
|
|
4
4
|
import { _ as _sfc_main$3 } from "./LpDrawer-DGNKRsGq.js";
|
|
5
5
|
import { _ as _sfc_main$1 } from "./LpInput-CDuwODJG.js";
|
|
6
|
-
import { _ as _sfc_main$2 } from "./LpSidebarNav-
|
|
6
|
+
import { _ as _sfc_main$2 } from "./LpSidebarNav-DBg1U1oW.js";
|
|
7
7
|
const _hoisted_1 = ["aria-label"];
|
|
8
8
|
const _hoisted_2 = {
|
|
9
9
|
key: 2,
|
|
@@ -2,8 +2,8 @@ import { defineComponent, computed, ref, openBlock, createBlock, mergeProps, unr
|
|
|
2
2
|
import { Motion } from "motion-v";
|
|
3
3
|
import { CollapsibleRoot, CollapsibleTrigger, CollapsibleContent } from "reka-ui";
|
|
4
4
|
import { usePillTransition } from "../composables/usePillTransition.js";
|
|
5
|
-
import { _ as _sfc_main$4 } from "./LpBadge-
|
|
6
|
-
import { _ as _sfc_main$5 } from "./LpContextMenu-
|
|
5
|
+
import { _ as _sfc_main$4 } from "./LpBadge-BBq1Er9T.js";
|
|
6
|
+
import { _ as _sfc_main$5 } from "./LpContextMenu-Cj96ENDC.js";
|
|
7
7
|
import { _ as _sfc_main$3 } from "./LpIcon-HJP5xMz4.js";
|
|
8
8
|
import { _ as _sfc_main$2 } from "./LpScrollArea-Hz3-JWUG.js";
|
|
9
9
|
import { _ as _sfc_main$1 } from "./LpSkeleton-BB6XIV-w.js";
|
|
@@ -2,7 +2,7 @@ import { defineComponent, computed, openBlock, createElementBlock, mergeProps, u
|
|
|
2
2
|
import { _ as _sfc_main$2 } from "./LpIcon-HJP5xMz4.js";
|
|
3
3
|
import { _ as _sfc_main$4 } from "./LpNumberFlow-Cfyh033Q.js";
|
|
4
4
|
import { _ as _sfc_main$3 } from "./LpSkeleton-BB6XIV-w.js";
|
|
5
|
-
import { _ as _sfc_main$1 } from "./LpStatus-
|
|
5
|
+
import { _ as _sfc_main$1 } from "./LpStatus-BsGLrpor.js";
|
|
6
6
|
import { useMergedAttrs } from "../composables/useMergedClass.js";
|
|
7
7
|
import { TONES } from "../components/tone.js";
|
|
8
8
|
const _hoisted_1 = { class: "flex items-center gap-2" };
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { defineComponent, computed, openBlock, createBlock, resolveDynamicComponent, mergeProps, unref, withCtx, createElementVNode, normalizeClass, normalizeStyle, createElementBlock, toDisplayString, createVNode } from "vue";
|
|
2
2
|
import { useLabels } from "../composables/useLpConfig.js";
|
|
3
3
|
import { useMergedAttrs } from "../composables/useMergedClass.js";
|
|
4
|
-
import { _ as _sfc_main$1 } from "./LpBadge-
|
|
5
|
-
import { _ as _sfc_main$2 } from "./LpRollingText-
|
|
4
|
+
import { _ as _sfc_main$1 } from "./LpBadge-BBq1Er9T.js";
|
|
5
|
+
import { _ as _sfc_main$2 } from "./LpRollingText-DiL717LK.js";
|
|
6
6
|
import { _ as _sfc_main$3 } from "./LpShift-DXNsauQZ.js";
|
|
7
7
|
import { TONE_COLOR } from "../components/meter.js";
|
|
8
8
|
import { STATUS_LABELS, STATUS_LOOK } from "../components/status.js";
|
|
@@ -2,7 +2,7 @@ import { defineComponent, computed, openBlock, createElementBlock, mergeProps, u
|
|
|
2
2
|
import { useMergedAttrs } from "../composables/useMergedClass.js";
|
|
3
3
|
import { _ as _sfc_main$3 } from "./LpIcon-HJP5xMz4.js";
|
|
4
4
|
import { _ as _sfc_main$2 } from "./LpLoader-DjJEX8hL.js";
|
|
5
|
-
import { _ as _sfc_main$1 } from "./LpRollingText-
|
|
5
|
+
import { _ as _sfc_main$1 } from "./LpRollingText-DiL717LK.js";
|
|
6
6
|
import { TONES } from "../components/tone.js";
|
|
7
7
|
import '../assets/LpStepMark-Drvx33Vg.css';const _hoisted_1 = ["role", "aria-label", "aria-hidden", "data-status"];
|
|
8
8
|
const _hoisted_2 = {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { defineComponent, computed, openBlock, createElementBlock, mergeProps, unref, Fragment, renderList, createElementVNode, createVNode, normalizeClass, createTextVNode, toDisplayString, createBlock, createCommentVNode } from "vue";
|
|
2
|
-
import { _ as _sfc_main$1 } from "./LpStepMark-
|
|
2
|
+
import { _ as _sfc_main$1 } from "./LpStepMark-TrzOioa9.js";
|
|
3
3
|
import { _ as _sfc_main$2 } from "./StepConnector-37OgEOXA.js";
|
|
4
4
|
import { useMergedAttrs } from "../composables/useMergedClass.js";
|
|
5
5
|
const _hoisted_1 = ["aria-current"];
|
|
@@ -9,7 +9,7 @@ import { mergeClass } from "../composables/useMergedClass.js";
|
|
|
9
9
|
import { _ as _sfc_main$4 } from "./LpFieldNotice-CurbNuXI.js";
|
|
10
10
|
import { _ as _sfc_main$1 } from "./FieldWrapper-BiennROB.js";
|
|
11
11
|
import { BADGE_REMOVE } from "../components/badge.js";
|
|
12
|
-
import { _ as _sfc_main$2 } from "./LpBadge-
|
|
12
|
+
import { _ as _sfc_main$2 } from "./LpBadge-BBq1Er9T.js";
|
|
13
13
|
import { _ as _sfc_main$3 } from "./LpIcon-HJP5xMz4.js";
|
|
14
14
|
import { _ as _sfc_main$5 } from "./OptionContent-CmYUUeWj.js";
|
|
15
15
|
import { POPOVER_PANEL, OPTION_ITEM, optionStagger } from "../components/dropdown.js";
|
|
@@ -5,7 +5,7 @@ import { parseColor, rgbToHex } from "../components/color.js";
|
|
|
5
5
|
import { p as presets, u as useTheme, o as themeToCssRule, s as serializeTheme } from "./useTheme-BOV_-AiY.js";
|
|
6
6
|
import { _ as _sfc_main$1 } from "./LpButton-CVxBfGjd.js";
|
|
7
7
|
import { _ as _sfc_main$6 } from "./LpCodeBlock-BGsQhxw8.js";
|
|
8
|
-
import { _ as _sfc_main$4 } from "./LpColorPicker-
|
|
8
|
+
import { _ as _sfc_main$4 } from "./LpColorPicker-B7HSIFmn.js";
|
|
9
9
|
import { _ as _sfc_main$2 } from "./LpIcon-HJP5xMz4.js";
|
|
10
10
|
import { _ as _sfc_main$5 } from "./LpSegmented-BO99Sr4m.js";
|
|
11
11
|
import { _ as _sfc_main$3 } from "./LpThemeStudioSection-BwhqYDLf.js";
|
|
@@ -3,11 +3,11 @@ import { PopoverRoot, PopoverAnchor, PopoverPortal, PopoverContent } from "reka-
|
|
|
3
3
|
import { useLabels } from "../composables/useLpConfig.js";
|
|
4
4
|
import { usePortalTarget, useOutsideGuard } from "../composables/useView.js";
|
|
5
5
|
import { u as useTheme, p as presets } from "./useTheme-BOV_-AiY.js";
|
|
6
|
-
import { u as useThemeStudio, S as STUDIO_SYSTEM, _ as _sfc_main$5 } from "./LpThemeStudio-
|
|
6
|
+
import { u as useThemeStudio, S as STUDIO_SYSTEM, _ as _sfc_main$5 } from "./LpThemeStudio-DxVZMtzN.js";
|
|
7
7
|
import { POPOVER_PANEL } from "../components/dropdown.js";
|
|
8
|
-
import { _ as _sfc_main$1 } from "./LpContextMenu-
|
|
8
|
+
import { _ as _sfc_main$1 } from "./LpContextMenu-Cj96ENDC.js";
|
|
9
9
|
import { _ as _sfc_main$2 } from "./LpIcon-HJP5xMz4.js";
|
|
10
|
-
import { _ as _sfc_main$4 } from "./LpRollingText-
|
|
10
|
+
import { _ as _sfc_main$4 } from "./LpRollingText-DiL717LK.js";
|
|
11
11
|
import { _ as _sfc_main$3 } from "./LpShift-DXNsauQZ.js";
|
|
12
12
|
const _hoisted_1 = ["aria-label", "title"];
|
|
13
13
|
const _hoisted_2 = {
|
|
@@ -3,7 +3,7 @@ import { Background } from "@vue-flow/background";
|
|
|
3
3
|
import { Controls } from "@vue-flow/controls";
|
|
4
4
|
import { MarkerType, useVueFlow, VueFlow, SelectionMode, Panel } from "@vue-flow/core";
|
|
5
5
|
import { MiniMap } from "@vue-flow/minimap";
|
|
6
|
-
import { _ as _sfc_main$3 } from "./LpInfraNode-
|
|
6
|
+
import { _ as _sfc_main$3 } from "./LpInfraNode-D64hywJI.js";
|
|
7
7
|
import { _ as _sfc_main$1 } from "./LpLaneNode-HtnQf2FF.js";
|
|
8
8
|
import { _ as _sfc_main$2 } from "./LpServiceNode-D8uJ8sGk.js";
|
|
9
9
|
import { _ as _sfc_main$4 } from "./LpWaypointEdge-D8yHlQiw.js";
|
|
@@ -8,7 +8,7 @@ import { useMediaQuery } from "../composables/useMediaQuery.js";
|
|
|
8
8
|
import { useView, usePortalTarget, viewDocument, viewWindow } from "../composables/useView.js";
|
|
9
9
|
import { scrollToElement } from "../composables/scroll.js";
|
|
10
10
|
import { PANEL_SURFACE } from "../components/dropdown.js";
|
|
11
|
-
import { _ as _sfc_main$1 } from "./TourCard-
|
|
11
|
+
import { _ as _sfc_main$1 } from "./TourCard-BJ8i7dk0.js";
|
|
12
12
|
import { holeOf, panelsAround, holeClip } from "../components/tour.js";
|
|
13
13
|
const _hoisted_1 = ["aria-label"];
|
|
14
14
|
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { defineComponent, computed, ref, openBlock, createElementBlock, mergeProps, unref, toDisplayString, createCommentVNode, createElementVNode, createVNode, withCtx, createBlock, Fragment, renderList, normalizeStyle, createTextVNode } from "vue";
|
|
2
2
|
import { _ as _sfc_main$5 } from "./LpNumberFlow-Cfyh033Q.js";
|
|
3
|
-
import { _ as _sfc_main$4 } from "./LpRollingText-
|
|
3
|
+
import { _ as _sfc_main$4 } from "./LpRollingText-DiL717LK.js";
|
|
4
4
|
import { _ as _sfc_main$2 } from "./LpSkeleton-BB6XIV-w.js";
|
|
5
5
|
import { _ as _sfc_main$1 } from "./LpSwap-DzE6M3Mg.js";
|
|
6
6
|
import { _ as _sfc_main$3 } from "./LpTooltip-Cz8SQwRt.js";
|
|
@@ -1,18 +1,20 @@
|
|
|
1
1
|
import { defineComponent, useModel, useAttrs, openBlock, createElementBlock, normalizeStyle, unref, normalizeClass, createVNode, withCtx, Fragment, renderList, toDisplayString, createCommentVNode, renderSlot, createElementVNode, mergeProps, mergeModels } from "vue";
|
|
2
|
+
import { useFieldBlur } from "../composables/useField.js";
|
|
2
3
|
import { mergeClass } from "../composables/useMergedClass.js";
|
|
3
4
|
import { PICKER_PRESETS, PICKER_PRESET, PICKER_TRIGGER, PICKER_SIZE, pickerTone, PICKER_CLEAR } from "../components/calendar.js";
|
|
4
5
|
import { _ as _sfc_main$2 } from "./LpIcon-HJP5xMz4.js";
|
|
5
|
-
import { _ as _sfc_main$1 } from "./LpPopover-
|
|
6
|
-
import { _ as _sfc_main$3 } from "./LpRollingText-
|
|
7
|
-
const _hoisted_1 = ["
|
|
8
|
-
const _hoisted_2 =
|
|
6
|
+
import { _ as _sfc_main$1 } from "./LpPopover-DmZ3wUtP.js";
|
|
7
|
+
import { _ as _sfc_main$3 } from "./LpRollingText-DiL717LK.js";
|
|
8
|
+
const _hoisted_1 = ["data-lp-field-part"];
|
|
9
|
+
const _hoisted_2 = ["id", "disabled", "aria-invalid", "aria-describedby"];
|
|
10
|
+
const _hoisted_3 = {
|
|
9
11
|
key: 0,
|
|
10
12
|
class: "w-[15px] shrink-0",
|
|
11
13
|
"aria-hidden": "true"
|
|
12
14
|
};
|
|
13
|
-
const
|
|
14
|
-
const
|
|
15
|
-
const
|
|
15
|
+
const _hoisted_4 = ["aria-label"];
|
|
16
|
+
const _hoisted_5 = ["disabled", "aria-pressed", "onClick"];
|
|
17
|
+
const _hoisted_6 = ["aria-label"];
|
|
16
18
|
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
17
19
|
...{ inheritAttrs: false },
|
|
18
20
|
__name: "PickerField",
|
|
@@ -31,18 +33,25 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
31
33
|
"open": { type: Boolean },
|
|
32
34
|
"openModifiers": {}
|
|
33
35
|
}),
|
|
34
|
-
emits: /* @__PURE__ */ mergeModels(["clear"], ["update:open"]),
|
|
35
|
-
setup(__props) {
|
|
36
|
+
emits: /* @__PURE__ */ mergeModels(["clear", "blur"], ["update:open"]),
|
|
37
|
+
setup(__props, { emit: __emit }) {
|
|
36
38
|
const open = useModel(__props, "open");
|
|
39
|
+
const emit = __emit;
|
|
40
|
+
const { partId, onFocusOut } = useFieldBlur((event) => emit("blur", event));
|
|
37
41
|
const attrs = useAttrs();
|
|
38
42
|
return (_ctx, _cache) => {
|
|
39
43
|
return openBlock(), createElementBlock("div", {
|
|
44
|
+
"data-lp-field-part": unref(partId),
|
|
45
|
+
onFocusout: _cache[2] || (_cache[2] = //@ts-ignore
|
|
46
|
+
(...args) => unref(onFocusOut) && unref(onFocusOut)(...args)),
|
|
40
47
|
class: normalizeClass(unref(mergeClass)("relative w-full", unref(attrs).class)),
|
|
41
48
|
style: normalizeStyle(unref(attrs).style)
|
|
42
49
|
}, [
|
|
43
50
|
createVNode(_sfc_main$1, {
|
|
44
51
|
open: open.value,
|
|
45
52
|
"onUpdate:open": _cache[0] || (_cache[0] = ($event) => open.value = $event),
|
|
53
|
+
"data-lp-field-part": unref(partId),
|
|
54
|
+
onFocusout: unref(onFocusOut),
|
|
46
55
|
align: "start",
|
|
47
56
|
"panel-class": "flex w-auto max-w-[calc(100vw-1rem)] flex-col rounded-card p-0 sm:flex-row"
|
|
48
57
|
}, {
|
|
@@ -65,13 +74,13 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
65
74
|
align: "start",
|
|
66
75
|
class: normalizeClass(["min-w-0 flex-1", !__props.display && "text-muted"])
|
|
67
76
|
}, null, 8, ["value", "class"]),
|
|
68
|
-
__props.clearable ? (openBlock(), createElementBlock("span",
|
|
77
|
+
__props.clearable ? (openBlock(), createElementBlock("span", _hoisted_3)) : createCommentVNode("", true),
|
|
69
78
|
createVNode(_sfc_main$2, {
|
|
70
79
|
name: "lucide:chevron-down",
|
|
71
80
|
size: 15,
|
|
72
81
|
class: "shrink-0 text-muted transition-transform duration-[var(--duration-fast)] ease-[var(--ease-emphasized)] group-data-[state=open]:rotate-180 motion-reduce:transition-none"
|
|
73
82
|
})
|
|
74
|
-
], 16,
|
|
83
|
+
], 16, _hoisted_2)
|
|
75
84
|
]),
|
|
76
85
|
default: withCtx(() => [
|
|
77
86
|
__props.presets.length ? (openBlock(), createElementBlock("div", {
|
|
@@ -88,13 +97,13 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
88
97
|
"aria-pressed": preset.selected,
|
|
89
98
|
class: normalizeClass(unref(PICKER_PRESET)),
|
|
90
99
|
onClick: preset.select
|
|
91
|
-
}, toDisplayString(preset.label), 11,
|
|
100
|
+
}, toDisplayString(preset.label), 11, _hoisted_5);
|
|
92
101
|
}), 128))
|
|
93
|
-
], 10,
|
|
102
|
+
], 10, _hoisted_4)) : createCommentVNode("", true),
|
|
94
103
|
renderSlot(_ctx.$slots, "default")
|
|
95
104
|
]),
|
|
96
105
|
_: 3
|
|
97
|
-
}, 8, ["open"]),
|
|
106
|
+
}, 8, ["open", "data-lp-field-part", "onFocusout"]),
|
|
98
107
|
__props.clearable ? (openBlock(), createElementBlock("button", {
|
|
99
108
|
key: 0,
|
|
100
109
|
type: "button",
|
|
@@ -106,8 +115,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
106
115
|
name: "lucide:x",
|
|
107
116
|
size: 15
|
|
108
117
|
})
|
|
109
|
-
], 10,
|
|
110
|
-
],
|
|
118
|
+
], 10, _hoisted_6)) : createCommentVNode("", true)
|
|
119
|
+
], 46, _hoisted_1);
|
|
111
120
|
};
|
|
112
121
|
}
|
|
113
122
|
});
|
|
@@ -2,7 +2,7 @@ import { defineComponent, openBlock, createElementBlock, Fragment, createVNode,
|
|
|
2
2
|
import { _ as _sfc_main$5 } from "./LpButton-CVxBfGjd.js";
|
|
3
3
|
import { _ as _sfc_main$2 } from "./LpIcon-HJP5xMz4.js";
|
|
4
4
|
import LpKeys from "../components/LpKeys.vue.js";
|
|
5
|
-
import { _ as _sfc_main$3 } from "./LpRollingText-
|
|
5
|
+
import { _ as _sfc_main$3 } from "./LpRollingText-DiL717LK.js";
|
|
6
6
|
import { _ as _sfc_main$4 } from "./LpShift-DXNsauQZ.js";
|
|
7
7
|
import { _ as _sfc_main$1 } from "./LpSwap-DzE6M3Mg.js";
|
|
8
8
|
const _hoisted_1 = { class: "flex items-start justify-between gap-3" };
|