vunor 0.3.2 → 0.4.0

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.
Files changed (57) hide show
  1. package/README.md +6 -1
  2. package/dist/AppLayout.mjs +17 -68
  3. package/dist/AppToasts.d.mts +3 -0
  4. package/dist/AppToasts.mjs +59 -76
  5. package/dist/Button.d.mts +26 -10
  6. package/dist/Button.mjs +95 -60
  7. package/dist/ButtonBase.mjs +26 -40
  8. package/dist/Calendar.d.mts +14 -2
  9. package/dist/Calendar.mjs +37 -85
  10. package/dist/Card.mjs +6 -25
  11. package/dist/CardHeader.mjs +3 -12
  12. package/dist/Checkbox.d.mts +7 -2
  13. package/dist/Checkbox.mjs +37 -45
  14. package/dist/Combobox.d.mts +24 -8
  15. package/dist/Combobox.mjs +274 -350
  16. package/dist/DatePicker.d.mts +18 -4
  17. package/dist/DatePicker.mjs +93 -216
  18. package/dist/DatePickerBase.d.mts +21 -8
  19. package/dist/DatePickerBase.mjs +108 -257
  20. package/dist/DatePickerPopup.d.mts +27 -2
  21. package/dist/DatePickerPopup.mjs +62 -13
  22. package/dist/DelayedSwitch.mjs +3 -14
  23. package/dist/DevTools.mjs +377 -388
  24. package/dist/Dialog.d.mts +8 -3
  25. package/dist/Dialog.mjs +77 -107
  26. package/dist/Icon.mjs +1 -4
  27. package/dist/InnerLoading.mjs +1 -4
  28. package/dist/Input.mjs +35 -126
  29. package/dist/InputBase.mjs +28 -93
  30. package/dist/LoadingIndicator.mjs +1 -5
  31. package/dist/Menu.mjs +44 -65
  32. package/dist/MenuItem.mjs +4 -16
  33. package/dist/OverflowContainer.mjs +9 -11
  34. package/dist/Pagination.mjs +11 -29
  35. package/dist/Popover.d.mts +39 -11
  36. package/dist/Popover.mjs +80 -99
  37. package/dist/ProgressBar.d.mts +9 -2
  38. package/dist/ProgressBar.mjs +11 -27
  39. package/dist/RadioGroup.d.mts +2 -1
  40. package/dist/RadioGroup.mjs +33 -47
  41. package/dist/Select.d.mts +24 -7
  42. package/dist/Select.mjs +94 -186
  43. package/dist/SelectBase.d.mts +26 -11
  44. package/dist/SelectBase.mjs +59 -83
  45. package/dist/Slider.d.mts +6 -1
  46. package/dist/Slider.mjs +34 -103
  47. package/dist/Tabs.mjs +13 -49
  48. package/dist/forward-root-DPGTBptG.js +125 -0
  49. package/dist/nuxt.mjs +36 -1
  50. package/dist/theme.d.mts +1 -1
  51. package/dist/theme.mjs +15 -4
  52. package/dist/{utils-6bTTIoaw.js → utils-BCBGEM10.js} +30 -1
  53. package/dist/utils.mjs +1 -1
  54. package/dist/vite.d.mts +13 -4
  55. package/dist/vite.mjs +5 -0
  56. package/package.json +24 -9
  57. package/dist/utils-Z0nPSAzb.js +0 -42
package/dist/Combobox.mjs CHANGED
@@ -1,11 +1,41 @@
1
- import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createSlots, createTextVNode, createVNode, defineComponent, mergeModels, mergeProps, nextTick, normalizeClass, openBlock, ref, renderList, renderSlot, toDisplayString, unref, useModel, watch, withCtx, withKeys, withModifiers } from "vue";
1
+ import { i as useRootBinding, n as useForwardToRoot, r as useModelState, t as claimToggle } from "./forward-root-DPGTBptG.js";
2
+ import { Comment, Fragment, camelize, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createSlots, createTextVNode, createVNode, defineComponent, mergeModels, mergeProps, nextTick, openBlock, ref, renderList, renderSlot, shallowRef, toDisplayString, unref, useModel, watch, withCtx, withKeys, withModifiers } from "vue";
2
3
  import { ComboboxAnchor, ComboboxContent, ComboboxEmpty, ComboboxGroup, ComboboxInput, ComboboxItem, ComboboxLabel, ComboboxPortal, ComboboxRoot, ComboboxSeparator, ComboboxViewport, PopoverContent, PopoverPortal, PopoverRoot, PopoverTrigger } from "reka-ui";
3
4
  import { useInputBaseProps, useInputProps } from "vunor";
4
5
  import VuIcon from "vunor/Icon";
5
- import { createReusableTemplate } from "@vueuse/core";
6
6
  import VuCheckbox from "vunor/Checkbox";
7
7
  import VuInput from "vunor/Input";
8
8
  import VuInputBase from "vunor/InputBase";
9
+ //#region src/components/Combobox/reusable-template.ts
10
+ /**
11
+ * Define a template once and render it in several places of the same component.
12
+ *
13
+ * Same contract as VueUse's `createReusableTemplate` (attrs passed to the reuse
14
+ * component become camelCased slot props, and a single-node template inherits
15
+ * them as fallthrough attrs). It is kept local so the built Combobox carries no
16
+ * runtime dependency on `@vueuse/core`. Unlike VueUse, template comments do not
17
+ * count as nodes, so a commented single-node template still inherits attrs (and
18
+ * its `$el` is the element) when compiled in dev mode.
19
+ *
20
+ * Call it inside `<script setup>`: each component instance gets its own pair.
21
+ */
22
+ function createReusableTemplate() {
23
+ const render = shallowRef();
24
+ return [defineComponent({ setup(_, { slots }) {
25
+ return () => {
26
+ render.value = slots.default;
27
+ };
28
+ } }), defineComponent({ setup(_, { attrs, slots }) {
29
+ return () => {
30
+ const bindings = { $slots: slots };
31
+ for (const [key, value] of Object.entries(attrs)) bindings[camelize(key)] = value;
32
+ const vnodes = render.value?.(bindings);
33
+ const nodes = vnodes?.filter((vnode) => vnode.type !== Comment);
34
+ return nodes?.length === 1 ? nodes[0] : vnodes;
35
+ };
36
+ } })];
37
+ }
38
+ //#endregion
9
39
  //#region src/components/Combobox/Combobox.vue?vue&type=script&setup=true&lang.ts
10
40
  const _hoisted_1 = ["onFocus", "onBlur"];
11
41
  const _hoisted_2 = {
@@ -18,209 +48,97 @@ const _hoisted_5 = { class: "i8-icon-wrap" };
18
48
  //#endregion
19
49
  //#region src/components/Combobox/Combobox.vue
20
50
  var Combobox_default = /* @__PURE__ */ defineComponent({
51
+ inheritAttrs: false,
21
52
  __name: "Combobox",
22
53
  props: /* @__PURE__ */ mergeModels({
23
- iconBefore: {
24
- type: String,
25
- required: false
26
- },
27
- iconAfter: {
28
- type: String,
29
- required: false
30
- },
31
- error: {
32
- type: [String, Boolean],
33
- required: false
34
- },
35
- hint: {
36
- type: String,
37
- required: false
38
- },
39
- groupTemplate: {
40
- type: String,
41
- required: false
42
- },
43
- stackLabel: {
44
- type: Boolean,
45
- required: false
46
- },
47
- onBeforeClick: {
48
- type: Function,
49
- required: false
50
- },
51
- onAfterClick: {
52
- type: Function,
53
- required: false
54
- },
55
- onClick: {
56
- type: Function,
57
- required: false
58
- },
59
- onBlur: {
60
- type: Function,
61
- required: false
62
- },
63
- onFocus: {
64
- type: Function,
65
- required: false
66
- },
67
- label: {
68
- type: String,
69
- required: false
70
- },
71
- design: {
72
- type: String,
73
- required: false
74
- },
75
- iconPrepend: {
76
- type: String,
77
- required: false
78
- },
79
- iconAppend: {
80
- type: String,
81
- required: false
82
- },
83
- groupItem: {
84
- type: Boolean,
85
- required: false
86
- },
87
- autoGrow: {
88
- type: Boolean,
89
- required: false
90
- },
91
- loading: {
92
- type: Boolean,
93
- required: false
94
- },
95
- noUnderline: {
54
+ iconBefore: {},
55
+ iconAfter: {},
56
+ error: { type: [String, Boolean] },
57
+ hint: {},
58
+ groupTemplate: {},
59
+ stackLabel: { type: Boolean },
60
+ onBeforeClick: {},
61
+ onAfterClick: {},
62
+ onClick: {},
63
+ onBlur: {},
64
+ onFocus: {},
65
+ label: {},
66
+ design: {},
67
+ iconPrepend: {},
68
+ iconAppend: {},
69
+ groupItem: { type: Boolean },
70
+ autoGrow: { type: Boolean },
71
+ loading: { type: Boolean },
72
+ noUnderline: { type: Boolean },
73
+ onAppendClick: {},
74
+ onPrependClick: {},
75
+ placeholder: {},
76
+ type: {},
77
+ rows: {},
78
+ required: { type: Boolean },
79
+ maxlength: {},
80
+ disabled: { type: Boolean },
81
+ readonly: { type: Boolean },
82
+ autocomplete: {},
83
+ disabledValues: {},
84
+ defaultValue: {},
85
+ popupClass: {},
86
+ popupRound: { type: Boolean },
87
+ valueClass: {},
88
+ iconClass: {},
89
+ class: {},
90
+ items: {},
91
+ popupPosition: { default: "popper" },
92
+ side: {},
93
+ sideOffset: { default: 2 },
94
+ sticky: {},
95
+ updatePositionStrategy: {},
96
+ bodyLock: { type: Boolean },
97
+ multiple: { type: Boolean },
98
+ checkboxItems: { type: Boolean },
99
+ dropdownIcon: { default: "i--chevron-down" },
100
+ defaultOpen: { type: Boolean },
101
+ resetSearchTermOnBlur: {
96
102
  type: Boolean,
97
- required: false
98
- },
99
- onAppendClick: {
100
- type: Function,
101
- required: false
102
- },
103
- onPrependClick: {
104
- type: Function,
105
- required: false
106
- },
107
- placeholder: {
108
- type: String,
109
- required: false
110
- },
111
- type: {
112
- type: String,
113
- required: false
103
+ default: false
114
104
  },
115
- rows: {
116
- type: Number,
117
- required: false
118
- },
119
- required: {
105
+ resetSearchTermOnSelect: {
120
106
  type: Boolean,
121
- required: false
122
- },
123
- maxlength: {
124
- type: Number,
125
- required: false
107
+ default: void 0
126
108
  },
127
- disabled: {
109
+ openOnFocus: {
128
110
  type: Boolean,
129
- required: false
111
+ default: void 0
130
112
  },
131
- readonly: {
113
+ openOnClick: {
132
114
  type: Boolean,
133
- required: false
134
- },
135
- autocomplete: {
136
- type: String,
137
- required: false
138
- },
139
- disabledValues: {
140
- type: Array,
141
- required: false
142
- },
143
- defaultValue: {
144
- type: null,
145
- required: false
146
- },
147
- popupClass: {
148
- type: [String, Object],
149
- required: false
115
+ default: void 0
150
116
  },
151
- popupRound: {
117
+ ignoreFilter: {
152
118
  type: Boolean,
153
- required: false
119
+ default: void 0
154
120
  },
155
- valueClass: {
156
- type: [String, Object],
157
- required: false
158
- },
159
- iconClass: {
160
- type: [String, Object],
161
- required: false
162
- },
163
- class: {
164
- type: [String, Object],
165
- required: false
166
- },
167
- items: {
168
- type: [Array, Object],
169
- required: true
170
- },
171
- popupPosition: {
172
- type: String,
173
- required: false,
174
- default: "popper"
175
- },
176
- side: {
177
- type: String,
178
- required: false
179
- },
180
- sideOffset: {
181
- type: Number,
182
- required: false,
183
- default: 2
184
- },
185
- sticky: {
186
- type: String,
187
- required: false
188
- },
189
- updatePositionStrategy: {
190
- type: String,
191
- required: false
192
- },
193
- bodyLock: {
121
+ resetModelValueOnClear: {
194
122
  type: Boolean,
195
- required: false
123
+ default: void 0
196
124
  },
197
- multiple: {
125
+ highlightOnHover: {
198
126
  type: Boolean,
199
- required: false
127
+ default: void 0
200
128
  },
201
- checkboxItems: {
129
+ by: {},
130
+ dir: {},
131
+ name: {},
132
+ align: {}
133
+ }, {
134
+ "open": {
202
135
  type: Boolean,
203
- required: false
204
- },
205
- dropdownIcon: {
206
- type: String,
207
- required: false,
208
- default: "i--chevron-down"
209
- },
210
- align: {
211
- type: String,
212
- required: false
136
+ default: void 0
213
137
  },
214
- resetSearchTermOnBlur: {
215
- type: Boolean,
216
- required: false
217
- }
218
- }, {
219
- "open": { type: Boolean },
220
138
  "openModifiers": {},
221
- "modelValue": { type: [String, Array] },
139
+ "modelValue": {},
222
140
  "modelModifiers": {},
223
- "searchTerm": { type: String },
141
+ "searchTerm": {},
224
142
  "searchTermModifiers": {}
225
143
  }),
226
144
  emits: /* @__PURE__ */ mergeModels([
@@ -231,7 +149,8 @@ var Combobox_default = /* @__PURE__ */ defineComponent({
231
149
  "appendClick",
232
150
  "blur",
233
151
  "focus",
234
- "enter"
152
+ "enter",
153
+ "highlight"
235
154
  ], [
236
155
  "update:open",
237
156
  "update:modelValue",
@@ -244,16 +163,36 @@ var Combobox_default = /* @__PURE__ */ defineComponent({
244
163
  const [DefineItemsTemplate, UseItemsTemplate] = createReusableTemplate();
245
164
  const props = __props;
246
165
  const emit = __emit;
166
+ const rootProps = useForwardToRoot(ComboboxRoot, props, emit, [
167
+ "open",
168
+ "modelValue",
169
+ "defaultOpen",
170
+ "multiple",
171
+ "disabled",
172
+ "required",
173
+ "asChild",
174
+ "as",
175
+ "update:open",
176
+ "update:modelValue"
177
+ ]);
178
+ const inputProps = useInputProps();
179
+ const shellProps = useInputBaseProps();
247
180
  const forwardProps = computed(() => {
248
- if (props.groupItem) return useInputBaseProps()?.value;
249
- return useInputProps()?.value;
250
- });
251
- const shellProps = computed(() => {
252
- return useInputBaseProps()?.value;
181
+ if (props.groupItem) return {
182
+ ...shellProps?.value,
183
+ onClick: props.onClick
184
+ };
185
+ return inputProps?.value;
253
186
  });
254
187
  const modelOpen = useModel(__props, "open");
255
188
  const modelValue = useModel(__props, "modelValue");
256
189
  const searchTerm = useModel(__props, "searchTerm");
190
+ const isOpen = useModelState(modelOpen, ComboboxRoot, "defaultOpen", props);
191
+ const value = useModelState(modelValue, ComboboxRoot, "defaultValue", props);
192
+ const rootOpen = useRootBinding(modelOpen, isOpen);
193
+ function onComboboxRootOpen(next) {
194
+ if (!usePopover.value || !next) modelOpen.value = next;
195
+ }
257
196
  const groups = computed(() => {
258
197
  if (Array.isArray(props.items)) return [{
259
198
  grp: "",
@@ -285,36 +224,35 @@ var Combobox_default = /* @__PURE__ */ defineComponent({
285
224
  return r;
286
225
  });
287
226
  function isItemSelected(v) {
288
- return Array.isArray(modelValue.value) ? modelValue.value.includes(v) : modelValue.value === v;
227
+ return Array.isArray(value.value) ? value.value.includes(v) : value.value === v;
289
228
  }
290
229
  const selectedItems = computed(() => {
291
- if (modelValue.value && Array.isArray(modelValue.value)) return modelValue.value.map((v) => flatItemsMap.value.get(v)).filter((item) => item !== void 0);
230
+ if (value.value && Array.isArray(value.value)) return value.value.map((v) => flatItemsMap.value.get(v)).filter((item) => item !== void 0);
292
231
  else {
293
- const item = flatItemsMap.value.get(modelValue.value);
232
+ const item = flatItemsMap.value.get(value.value);
294
233
  if (item) return [item];
295
234
  }
296
235
  return [];
297
236
  });
298
237
  const selectedLabels = computed(() => {
299
- if (!modelValue.value && modelValue.value !== 0) return "";
238
+ if (!value.value && value.value !== 0) return "";
300
239
  return selectedItems.value.filter((item) => !!item).map((item) => item.label || item.value).join(", ");
301
240
  });
302
241
  function isItemDisabled(val) {
303
242
  return props.disabledValues?.includes(val);
304
243
  }
305
- const displayValue = computed(() => flatItemsMap.value.get(modelValue.value)?.label || "");
244
+ const displayValue = computed(() => flatItemsMap.value.get(value.value)?.label || "");
306
245
  const input = computed(() => inputTemplate.value?.$el?.querySelector?.("input"));
307
- async function openPopup() {
246
+ async function openPopup(event) {
247
+ if (!claimToggle(event)) return;
308
248
  if (!props.readonly && !props.disabled && !usePopover.value) {
309
- modelOpen.value = !modelOpen.value;
249
+ isOpen.value = (props.openOnClick || props.openOnFocus) && !!event?.target && !!input.value?.contains(event.target) ? true : !isOpen.value;
310
250
  await nextTick();
311
- if (input.value) {
312
- const el = input.value;
313
- if (el) {
314
- const valueLength = el.value.length;
315
- el.focus();
316
- el.setSelectionRange(valueLength, valueLength);
317
- }
251
+ const el = input.value;
252
+ if (el && (isOpen.value || !props.openOnFocus)) {
253
+ const valueLength = el.value.length;
254
+ el.focus();
255
+ el.setSelectionRange(valueLength, valueLength);
318
256
  }
319
257
  }
320
258
  }
@@ -328,10 +266,6 @@ var Combobox_default = /* @__PURE__ */ defineComponent({
328
266
  } else target.setSelectionRange(length, length);
329
267
  }
330
268
  const usePopover = computed(() => props.multiple);
331
- if (usePopover.value) modelOpen.value = true;
332
- watch([usePopover], () => {
333
- if (usePopover.value) modelOpen.value = true;
334
- });
335
269
  const sideOffsetHack = ref(false);
336
270
  const _sideOffset = computed(() => sideOffsetHack.value ? -1 : props.sideOffset);
337
271
  watch([modelOpen], async () => {
@@ -350,6 +284,7 @@ var Combobox_default = /* @__PURE__ */ defineComponent({
350
284
  side: props.side,
351
285
  sideOffset: _sideOffset.value,
352
286
  updatePositionStrategy: props.updatePositionStrategy,
287
+ sticky: props.sticky,
353
288
  bodyLock: props.bodyLock,
354
289
  align: props.align
355
290
  }));
@@ -361,20 +296,13 @@ var Combobox_default = /* @__PURE__ */ defineComponent({
361
296
  if (usePopover.value) return popoverProps.value;
362
297
  return {};
363
298
  });
364
- const popupOpen = ref(false);
365
- watch(popupOpen, () => {
366
- if (popupOpen.value) modelOpen.value = true;
367
- });
368
- watch(modelOpen, () => {
369
- if (usePopover.value) popupOpen.value = !!modelOpen.value;
370
- });
371
299
  const inputTemplate = ref();
372
300
  async function focusOnInput() {
373
301
  await nextTick();
374
302
  input.value?.focus({ preventScroll: true });
375
303
  }
376
304
  async function clearValue() {
377
- modelValue.value = void 0;
305
+ modelValue.value = Array.isArray(value.value) ? [] : void 0;
378
306
  await nextTick();
379
307
  input.value?.focus();
380
308
  }
@@ -387,20 +315,71 @@ var Combobox_default = /* @__PURE__ */ defineComponent({
387
315
  }
388
316
  function onKeydown(event) {
389
317
  if (props.disabled || props.readonly) return;
390
- if (["Enter", "Space"].includes(event.code)) popupOpen.value = true;
391
- else if (/Key[a-zA-Z0-9]/.test(event.code)) popupOpen.value = true;
318
+ if (["Enter", "Space"].includes(event.code) || /Key[a-zA-Z0-9]/.test(event.code)) isOpen.value = true;
392
319
  }
393
320
  function onEnter(event) {
394
321
  emit("enter", event);
395
322
  }
396
323
  return (_ctx, _cache) => {
397
324
  return openBlock(), createElementBlock(Fragment, null, [
398
- createCommentVNode(" reusabe templates start "),
325
+ createVNode(unref(DefineInputBaseTemplate), null, {
326
+ default: withCtx(() => [createVNode(VuInputBase, mergeProps(__props.groupItem && !usePopover.value ? forwardProps.value : unref(shellProps), {
327
+ onClick: openPopup,
328
+ active: unref(isOpen),
329
+ "model-value": usePopover.value ? void 0 : unref(value),
330
+ type: usePopover.value ? "text" : unref(shellProps)?.type,
331
+ label: usePopover.value ? "" : unref(shellProps)?.label,
332
+ placeholder: usePopover.value ? "Search" : unref(shellProps)?.placeholder,
333
+ design: usePopover.value ? "filled" : unref(shellProps)?.design,
334
+ "icon-append": usePopover.value ? void 0 : __props.dropdownIcon,
335
+ "icon-prepend": usePopover.value ? "i--search" : unref(shellProps)?.iconPrepend,
336
+ class: usePopover.value ? "i8-border-none i8-outline-none" : "i8-combobox",
337
+ "no-underline": usePopover.value,
338
+ "data-expanded": usePopover.value ? void 0 : unref(isOpen)
339
+ }), createSlots({
340
+ default: withCtx((slotProps) => [createVNode(unref(ComboboxInput), {
341
+ "as-child": "",
342
+ modelValue: searchTerm.value,
343
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => searchTerm.value = $event),
344
+ "display-value": () => displayValue.value,
345
+ class: "i8-input"
346
+ }, {
347
+ default: withCtx(() => [createElementVNode("input", mergeProps({ class: "i8-input" }, slotProps, {
348
+ onFocus: slotProps.onFocus,
349
+ onBlur: slotProps.onBlur,
350
+ onKeydownCapture: [withKeys(handleHomeEnd, ["home", "end"]), withKeys(onEnter, ["enter"])]
351
+ }), null, 16, _hoisted_1)]),
352
+ _: 2
353
+ }, 1032, ["modelValue", "display-value"])]),
354
+ _: 2
355
+ }, [!usePopover.value && !!_ctx.$slots.prepend ? {
356
+ name: "prepend",
357
+ fn: withCtx(() => [renderSlot(_ctx.$slots, "prepend")]),
358
+ key: "0"
359
+ } : void 0, !usePopover.value && !!_ctx.$slots.append ? {
360
+ name: "append",
361
+ fn: withCtx(() => [renderSlot(_ctx.$slots, "append")]),
362
+ key: "1"
363
+ } : void 0]), 1040, [
364
+ "active",
365
+ "model-value",
366
+ "type",
367
+ "label",
368
+ "placeholder",
369
+ "design",
370
+ "icon-append",
371
+ "icon-prepend",
372
+ "class",
373
+ "no-underline",
374
+ "data-expanded"
375
+ ])]),
376
+ _: 3
377
+ }),
399
378
  createVNode(unref(DefineContentTemplate), null, {
400
- default: withCtx(() => [createVNode(unref(ComboboxContent), mergeProps(comboboxContentProps.value, { position: usePopover.value ? "inline" : "popper" }), {
379
+ default: withCtx(() => [createVNode(unref(ComboboxContent), mergeProps(comboboxContentProps.value, { position: usePopover.value ? "inline" : __props.popupPosition }), {
401
380
  default: withCtx(() => [createVNode(unref(ComboboxViewport), { class: "" }, {
402
381
  default: withCtx(() => [createVNode(unref(ComboboxEmpty), { class: "select-grp-label" }, {
403
- default: withCtx(() => [renderSlot(_ctx.$slots, "empty", {}, () => [_cache[10] || (_cache[10] = createElementVNode("span", null, "No Options", -1))])]),
382
+ default: withCtx(() => [renderSlot(_ctx.$slots, "empty", {}, () => [_cache[3] || (_cache[3] = createElementVNode("span", null, "No Options", -1))])]),
404
383
  _: 3
405
384
  }), (openBlock(true), createElementBlock(Fragment, null, renderList(groups.value, (g, grpIndex) => {
406
385
  return openBlock(), createBlock(unref(ComboboxGroup), { key: grpIndex }, {
@@ -408,14 +387,14 @@ var Combobox_default = /* @__PURE__ */ defineComponent({
408
387
  grpIndex > 0 ? (openBlock(), createBlock(unref(ComboboxSeparator), {
409
388
  key: 0,
410
389
  class: "select-separator"
411
- })) : createCommentVNode("v-if", true),
390
+ })) : createCommentVNode("", true),
412
391
  !!g.grp ? (openBlock(), createBlock(unref(ComboboxLabel), {
413
392
  key: 1,
414
393
  class: "select-grp-label"
415
394
  }, {
416
395
  default: withCtx(() => [renderSlot(_ctx.$slots, "group-label", mergeProps({ ref_for: true }, g), () => [createElementVNode("span", null, toDisplayString(g.grp), 1)])]),
417
396
  _: 2
418
- }, 1024)) : createCommentVNode("v-if", true),
397
+ }, 1024)) : createCommentVNode("", true),
419
398
  (openBlock(true), createElementBlock(Fragment, null, renderList(g.items, (item, index) => {
420
399
  return openBlock(), createBlock(unref(ComboboxItem), {
421
400
  key: index,
@@ -450,106 +429,38 @@ var Combobox_default = /* @__PURE__ */ defineComponent({
450
429
  _: 3
451
430
  }),
452
431
  createVNode(unref(DefineRootTemplate), null, {
453
- default: withCtx((templateProps) => [createVNode(unref(ComboboxRoot), {
454
- class: normalizeClass([templateProps.class, "relative w-full h-full"]),
432
+ default: withCtx(() => [createVNode(unref(ComboboxRoot), mergeProps(unref(rootProps), {
433
+ class: usePopover.value || __props.groupItem ? void 0 : "relative w-full h-full",
455
434
  modelValue: modelValue.value,
456
- "onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => modelValue.value = $event),
457
- "reset-search-term-on-blur": __props.resetSearchTermOnBlur,
458
- "default-open": usePopover.value,
459
- open: modelOpen.value,
460
- "onUpdate:open": _cache[3] || (_cache[3] = ($event) => modelOpen.value = $event),
435
+ "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => modelValue.value = $event),
436
+ "default-open": usePopover.value || __props.defaultOpen,
437
+ open: usePopover.value ? true : unref(rootOpen),
438
+ "onUpdate:open": onComboboxRootOpen,
461
439
  disabled: __props.disabled,
462
440
  required: __props.required,
463
441
  multiple: __props.multiple,
464
442
  "as-child": usePopover.value || __props.groupItem
465
- }, {
466
- default: withCtx(() => [
467
- createVNode(unref(DefineInputBaseTemplate), null, {
468
- default: withCtx(() => [createCommentVNode(" prettier-ignore-attribute v-model "), createVNode(VuInputBase, mergeProps({
469
- onClick: openPopup,
470
- active: modelOpen.value,
471
- modelValue: modelValue.value,
472
- "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => modelValue.value = $event)
473
- }, shellProps.value, {
474
- type: usePopover.value ? "text" : shellProps.value?.type,
475
- label: usePopover.value ? "" : shellProps.value?.label,
476
- placeholder: usePopover.value ? "Search" : shellProps.value?.placeholder,
477
- design: usePopover.value ? "filled" : shellProps.value?.design,
478
- "icon-append": usePopover.value ? void 0 : __props.dropdownIcon,
479
- "icon-prepend": usePopover.value ? "i--search" : shellProps.value?.iconPrepend,
480
- class: usePopover.value ? "i8-border-none i8-outline-none" : "i8-combobox",
481
- onAppendClick: openPopup,
482
- "no-underline": usePopover.value,
483
- "data-expanded": usePopover.value ? void 0 : modelOpen.value
484
- }), createSlots({
485
- default: withCtx((slotProps) => [createVNode(unref(ComboboxInput), {
486
- "as-child": "",
487
- modelValue: searchTerm.value,
488
- "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => searchTerm.value = $event),
489
- "display-value": () => displayValue.value,
490
- class: "i8-input"
491
- }, {
492
- default: withCtx(() => [createElementVNode("input", mergeProps({
493
- class: "i8-input",
494
- ref_key: "input",
495
- ref: input
496
- }, slotProps, {
497
- onFocus: slotProps.onFocus,
498
- onBlur: slotProps.onBlur,
499
- onKeydownCapture: [withKeys(handleHomeEnd, ["home", "end"]), withKeys(onEnter, ["enter"])]
500
- }), null, 16, _hoisted_1)]),
501
- _: 2
502
- }, 1032, ["modelValue", "display-value"])]),
503
- _: 2
504
- }, [!usePopover.value && !!_ctx.$slots.prepend ? {
505
- name: "prepend",
506
- fn: withCtx(() => [renderSlot(_ctx.$slots, "prepend")]),
507
- key: "0"
508
- } : void 0, !usePopover.value && !!_ctx.$slots.append ? {
509
- name: "append",
510
- fn: withCtx(() => [renderSlot(_ctx.$slots, "append")]),
511
- key: "1"
512
- } : void 0]), 1040, [
513
- "active",
514
- "modelValue",
515
- "type",
516
- "label",
517
- "placeholder",
518
- "design",
519
- "icon-append",
520
- "icon-prepend",
521
- "class",
522
- "no-underline",
523
- "data-expanded"
524
- ])]),
525
- _: 3
526
- }),
527
- usePopover.value ? (openBlock(), createElementBlock("div", _hoisted_2, [createVNode(unref(UseInputBaseTemplate), {
443
+ }), {
444
+ default: withCtx(() => [usePopover.value ? (openBlock(), createElementBlock("div", _hoisted_2, [createVNode(unref(UseInputBaseTemplate), {
445
+ ref_key: "inputTemplate",
446
+ ref: inputTemplate
447
+ }, null, 512)])) : (openBlock(), createBlock(unref(ComboboxAnchor), {
448
+ key: 1,
449
+ "as-child": ""
450
+ }, {
451
+ default: withCtx(() => [createVNode(unref(UseInputBaseTemplate), {
528
452
  ref_key: "inputTemplate",
529
453
  ref: inputTemplate
530
- }, null, 512)])) : (openBlock(), createBlock(unref(ComboboxAnchor), {
531
- key: 1,
532
- "as-child": ""
533
- }, {
534
- default: withCtx(() => [createVNode(unref(UseInputBaseTemplate), {
535
- ref_key: "inputTemplate",
536
- ref: inputTemplate
537
- }, null, 512)]),
538
- _: 1
539
- })),
540
- usePopover.value ? (openBlock(), createBlock(unref(UseContentTemplate), { key: 2 })) : (openBlock(), createBlock(unref(ComboboxPortal), {
541
- key: 3,
542
- "as-child": ""
543
- }, {
544
- default: withCtx(() => [createVNode(unref(UseContentTemplate))]),
545
- _: 1
546
- }))
547
- ]),
548
- _: 3
549
- }, 8, [
454
+ }, null, 512)]),
455
+ _: 1
456
+ })), usePopover.value ? (openBlock(), createBlock(unref(UseContentTemplate), { key: 2 })) : (openBlock(), createBlock(unref(ComboboxPortal), { key: 3 }, {
457
+ default: withCtx(() => [createVNode(unref(UseContentTemplate))]),
458
+ _: 1
459
+ }))]),
460
+ _: 1
461
+ }, 16, [
550
462
  "class",
551
463
  "modelValue",
552
- "reset-search-term-on-blur",
553
464
  "default-open",
554
465
  "open",
555
466
  "disabled",
@@ -557,12 +468,13 @@ var Combobox_default = /* @__PURE__ */ defineComponent({
557
468
  "multiple",
558
469
  "as-child"
559
470
  ])]),
560
- _: 3
471
+ _: 1
561
472
  }),
562
- createCommentVNode(" reusabe templates end "),
563
- __props.readonly || __props.disabled ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [createCommentVNode(" prettier-ignore-attribute v-model "), __props.groupItem ? (openBlock(), createBlock(VuInputBase, mergeProps({ key: 0 }, shellProps.value, {
564
- modelValue: modelValue.value,
565
- "onUpdate:modelValue": _cache[4] || (_cache[4] = ($event) => modelValue.value = $event),
473
+ __props.readonly || __props.disabled ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [__props.groupItem ? (openBlock(), createBlock(VuInputBase, mergeProps({ key: 0 }, {
474
+ ..._ctx.$attrs,
475
+ ...forwardProps.value
476
+ }, {
477
+ "model-value": unref(value),
566
478
  class: __props.class,
567
479
  "icon-append": props.iconAppend || __props.dropdownIcon
568
480
  }), createSlots({ _: 2 }, [!!_ctx.$slots.prepend ? {
@@ -574,12 +486,14 @@ var Combobox_default = /* @__PURE__ */ defineComponent({
574
486
  fn: withCtx(() => [renderSlot(_ctx.$slots, "append")]),
575
487
  key: "1"
576
488
  } : void 0]), 1040, [
577
- "modelValue",
489
+ "model-value",
578
490
  "class",
579
491
  "icon-append"
580
- ])) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [createCommentVNode(" prettier-ignore-attribute v-model "), createVNode(VuInput, mergeProps(forwardProps.value, {
581
- modelValue: modelValue.value,
582
- "onUpdate:modelValue": _cache[5] || (_cache[5] = ($event) => modelValue.value = $event),
492
+ ])) : (openBlock(), createBlock(VuInput, mergeProps({ key: 1 }, {
493
+ ..._ctx.$attrs,
494
+ ...forwardProps.value
495
+ }, {
496
+ "model-value": unref(value),
583
497
  class: __props.class,
584
498
  "icon-append": props.iconAppend || __props.dropdownIcon
585
499
  }), createSlots({ _: 2 }, [
@@ -604,13 +518,14 @@ var Combobox_default = /* @__PURE__ */ defineComponent({
604
518
  key: "3"
605
519
  } : void 0
606
520
  ]), 1040, [
607
- "modelValue",
521
+ "model-value",
608
522
  "class",
609
523
  "icon-append"
610
- ])], 2112))], 64)) : usePopover.value ? (openBlock(), createBlock(unref(PopoverRoot), {
524
+ ]))], 64)) : usePopover.value ? (openBlock(), createBlock(unref(PopoverRoot), {
611
525
  key: 1,
612
- open: popupOpen.value,
613
- "onUpdate:open": _cache[8] || (_cache[8] = ($event) => popupOpen.value = $event),
526
+ "default-open": __props.defaultOpen,
527
+ open: unref(rootOpen),
528
+ "onUpdate:open": _cache[2] || (_cache[2] = (value) => modelOpen.value = value),
614
529
  modal: ""
615
530
  }, {
616
531
  default: withCtx(() => [
@@ -621,12 +536,14 @@ var Combobox_default = /* @__PURE__ */ defineComponent({
621
536
  }, () => [createElementVNode("div", mergeProps({ class: "i8-input combobox-multi-input" }, inputAttrs), [createElementVNode("div", _hoisted_3, toDisplayString(selectedLabels.value), 1)], 16)])]),
622
537
  _: 3
623
538
  }),
624
- __props.groupItem ? (openBlock(), createBlock(unref(PopoverTrigger), {
625
- key: 0,
539
+ __props.groupItem ? (openBlock(), createBlock(unref(PopoverTrigger), mergeProps({ key: 0 }, {
540
+ "data-expanded": unref(isOpen),
541
+ ..._ctx.$attrs
542
+ }, {
626
543
  "as-child": "",
627
- "data-expanded": popupOpen.value,
544
+ "data-vu-trigger": "",
628
545
  class: "i8-combobox"
629
- }, {
546
+ }), {
630
547
  default: withCtx(() => [createVNode(VuInputBase, mergeProps({
631
548
  class: "combobox-embedded-input",
632
549
  tabindex: "0",
@@ -637,9 +554,8 @@ var Combobox_default = /* @__PURE__ */ defineComponent({
637
554
  "model-value": selectedLabels.value,
638
555
  readonly: "",
639
556
  "icon-append": __props.dropdownIcon,
640
- onAppendClick: _cache[6] || (_cache[6] = ($event) => popupOpen.value = !popupOpen.value),
641
557
  class: __props.class,
642
- active: popupOpen.value || focused.value
558
+ active: unref(isOpen) || focused.value
643
559
  }), createSlots({
644
560
  default: withCtx((inputAttrs) => [createVNode(unref(UseItemsTemplate), { "input-attrs": inputAttrs }, null, 8, ["input-attrs"])]),
645
561
  _: 2
@@ -658,13 +574,19 @@ var Combobox_default = /* @__PURE__ */ defineComponent({
658
574
  "active"
659
575
  ])]),
660
576
  _: 3
661
- }, 8, ["data-expanded"])) : (openBlock(), createBlock(VuInput, mergeProps({ key: 1 }, forwardProps.value, {
577
+ }, 16)) : (openBlock(), createBlock(VuInput, mergeProps({ key: 1 }, {
578
+ "data-expanded": unref(isOpen),
579
+ ..._ctx.$attrs,
580
+ ...forwardProps.value
581
+ }, {
662
582
  "model-value": selectedLabels.value,
663
583
  class: [__props.class, "i8-combobox"],
664
- active: popupOpen.value,
665
- "data-expanded": popupOpen.value
584
+ active: unref(isOpen)
666
585
  }), createSlots({
667
- default: withCtx((slotProps) => [createVNode(unref(PopoverTrigger), { "as-child": "" }, {
586
+ default: withCtx((slotProps) => [createVNode(unref(PopoverTrigger), {
587
+ "as-child": "",
588
+ "data-vu-trigger": ""
589
+ }, {
668
590
  default: withCtx(() => [createVNode(VuInputBase, mergeProps({
669
591
  class: "combobox-embedded-input",
670
592
  tabindex: "0",
@@ -674,9 +596,8 @@ var Combobox_default = /* @__PURE__ */ defineComponent({
674
596
  }, slotProps, {
675
597
  readonly: "",
676
598
  "icon-append": __props.dropdownIcon,
677
- onAppendClick: _cache[7] || (_cache[7] = ($event) => popupOpen.value = !popupOpen.value),
678
599
  "model-value": selectedLabels.value,
679
- active: popupOpen.value || focused.value
600
+ active: unref(isOpen) || focused.value
680
601
  }), createSlots({
681
602
  default: withCtx((inputAttrs) => [createVNode(unref(UseItemsTemplate), { "input-attrs": inputAttrs }, null, 8, ["input-attrs"])]),
682
603
  append: withCtx(({ iconAppend }) => [createElementVNode("div", _hoisted_4, [!!selectedLabels.value && !__props.readonly && !__props.disabled ? (openBlock(), createElementBlock("div", {
@@ -686,7 +607,7 @@ var Combobox_default = /* @__PURE__ */ defineComponent({
686
607
  }, [createVNode(VuIcon, {
687
608
  name: "i--clear",
688
609
  class: "combobox-c8-icon"
689
- })])) : createCommentVNode("v-if", true), createElementVNode("div", _hoisted_5, [createVNode(VuIcon, {
610
+ })])) : createCommentVNode("", true), createElementVNode("div", _hoisted_5, [createVNode(VuIcon, {
690
611
  name: __props.dropdownIcon,
691
612
  class: "combobox-c8-icon"
692
613
  }, null, 8, ["name"])])])]),
@@ -714,8 +635,7 @@ var Combobox_default = /* @__PURE__ */ defineComponent({
714
635
  } : void 0]), 1040, [
715
636
  "model-value",
716
637
  "class",
717
- "active",
718
- "data-expanded"
638
+ "active"
719
639
  ])),
720
640
  createVNode(unref(PopoverPortal), null, {
721
641
  default: withCtx(() => [createVNode(unref(PopoverContent), mergeProps(popoverContentProps.value, {
@@ -732,17 +652,21 @@ var Combobox_default = /* @__PURE__ */ defineComponent({
732
652
  })
733
653
  ]),
734
654
  _: 3
735
- }, 8, ["open"])) : (openBlock(), createElementBlock(Fragment, { key: 2 }, [__props.groupItem ? (openBlock(), createBlock(unref(UseRootTemplate), {
736
- key: 0,
737
- class: normalizeClass(__props.class)
738
- }, null, 8, ["class"])) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [createCommentVNode(" prettier-ignore-attribute v-model "), createVNode(VuInput, mergeProps(forwardProps.value, {
739
- modelValue: modelValue.value,
740
- "onUpdate:modelValue": _cache[9] || (_cache[9] = ($event) => modelValue.value = $event),
655
+ }, 8, ["default-open", "open"])) : (openBlock(), createElementBlock(Fragment, { key: 2 }, [__props.groupItem ? (openBlock(), createBlock(unref(UseRootTemplate), mergeProps({ key: 0 }, _ctx.$attrs, { class: __props.class }), null, 16, ["class"])) : (openBlock(), createBlock(VuInput, mergeProps({ key: 1 }, {
656
+ ..._ctx.$attrs,
657
+ ...forwardProps.value
658
+ }, {
659
+ "model-value": unref(value),
660
+ active: unref(isOpen),
741
661
  class: __props.class
742
662
  }), {
743
663
  default: withCtx(() => [createVNode(unref(UseRootTemplate))]),
744
664
  _: 1
745
- }, 16, ["modelValue", "class"])], 2112))], 64))
665
+ }, 16, [
666
+ "model-value",
667
+ "active",
668
+ "class"
669
+ ]))], 64))
746
670
  ], 64);
747
671
  };
748
672
  }