@auronui/vue 1.0.11 → 1.0.12

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 (56) hide show
  1. package/dist/cjs/index.cjs +514 -410
  2. package/dist/cjs/index.cjs.map +1 -1
  3. package/dist/components/autocomplete/Autocomplete.context.js.map +1 -1
  4. package/dist/components/autocomplete/Autocomplete.js.map +1 -1
  5. package/dist/components/autocomplete/Autocomplete.vue_vue_type_script_setup_true_lang.js +119 -14
  6. package/dist/components/autocomplete/Autocomplete.vue_vue_type_script_setup_true_lang.js.map +1 -1
  7. package/dist/components/autocomplete/AutocompleteCreateItem.js +7 -0
  8. package/dist/components/autocomplete/AutocompleteCreateItem.js.map +1 -0
  9. package/dist/components/autocomplete/AutocompleteCreateItem.vue_vue_type_script_setup_true_lang.js +57 -0
  10. package/dist/components/autocomplete/AutocompleteCreateItem.vue_vue_type_script_setup_true_lang.js.map +1 -0
  11. package/dist/components/autocomplete/AutocompleteInput.js.map +1 -1
  12. package/dist/components/autocomplete/AutocompleteInput.vue_vue_type_script_setup_true_lang.js +40 -9
  13. package/dist/components/autocomplete/AutocompleteInput.vue_vue_type_script_setup_true_lang.js.map +1 -1
  14. package/dist/components/autocomplete/AutocompleteItem.js.map +1 -1
  15. package/dist/components/autocomplete/AutocompleteItem.vue_vue_type_script_setup_true_lang.js +33 -5
  16. package/dist/components/autocomplete/AutocompleteItem.vue_vue_type_script_setup_true_lang.js.map +1 -1
  17. package/dist/components/autocomplete/AutocompleteOverflowChips.js +7 -0
  18. package/dist/components/autocomplete/AutocompleteOverflowChips.js.map +1 -0
  19. package/dist/components/autocomplete/AutocompleteOverflowChips.vue_vue_type_script_setup_true_lang.js +88 -0
  20. package/dist/components/autocomplete/AutocompleteOverflowChips.vue_vue_type_script_setup_true_lang.js.map +1 -0
  21. package/dist/components/select/Select.context.js.map +1 -1
  22. package/dist/components/select/Select.js.map +1 -1
  23. package/dist/components/select/Select.vue_vue_type_script_setup_true_lang.js +12 -1
  24. package/dist/components/select/Select.vue_vue_type_script_setup_true_lang.js.map +1 -1
  25. package/dist/components/select/SelectOverflowChips.js +7 -0
  26. package/dist/components/select/SelectOverflowChips.js.map +1 -0
  27. package/dist/components/select/SelectOverflowChips.vue_vue_type_script_setup_true_lang.js +85 -0
  28. package/dist/components/select/SelectOverflowChips.vue_vue_type_script_setup_true_lang.js.map +1 -0
  29. package/dist/components/select/SelectValue.js.map +1 -1
  30. package/dist/components/select/SelectValue.vue_vue_type_script_setup_true_lang.js +6 -1
  31. package/dist/components/select/SelectValue.vue_vue_type_script_setup_true_lang.js.map +1 -1
  32. package/dist/index.d.ts +320 -419
  33. package/dist/index.js +2 -7
  34. package/package.json +4 -4
  35. package/dist/components/tag/Tag.js +0 -7
  36. package/dist/components/tag/Tag.js.map +0 -1
  37. package/dist/components/tag/Tag.vue_vue_type_script_setup_true_lang.js +0 -69
  38. package/dist/components/tag/Tag.vue_vue_type_script_setup_true_lang.js.map +0 -1
  39. package/dist/components/tag/TagDelete.js +0 -7
  40. package/dist/components/tag/TagDelete.js.map +0 -1
  41. package/dist/components/tag/TagDelete.vue_vue_type_script_setup_true_lang.js +0 -49
  42. package/dist/components/tag/TagDelete.vue_vue_type_script_setup_true_lang.js.map +0 -1
  43. package/dist/components/tag/TagText.js +0 -7
  44. package/dist/components/tag/TagText.js.map +0 -1
  45. package/dist/components/tag/TagText.vue_vue_type_script_setup_true_lang.js +0 -18
  46. package/dist/components/tag/TagText.vue_vue_type_script_setup_true_lang.js.map +0 -1
  47. package/dist/components/tag-group/TagGroup.context.js +0 -7
  48. package/dist/components/tag-group/TagGroup.context.js.map +0 -1
  49. package/dist/components/tag-group/TagGroup.js +0 -7
  50. package/dist/components/tag-group/TagGroup.js.map +0 -1
  51. package/dist/components/tag-group/TagGroup.vue_vue_type_script_setup_true_lang.js +0 -142
  52. package/dist/components/tag-group/TagGroup.vue_vue_type_script_setup_true_lang.js.map +0 -1
  53. package/dist/components/tag-group/TagGroupInput.js +0 -7
  54. package/dist/components/tag-group/TagGroupInput.js.map +0 -1
  55. package/dist/components/tag-group/TagGroupInput.vue_vue_type_script_setup_true_lang.js +0 -37
  56. package/dist/components/tag-group/TagGroupInput.vue_vue_type_script_setup_true_lang.js.map +0 -1
@@ -0,0 +1,85 @@
1
+ import Chip_default from "../chip/Chip.js";
2
+ import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createTextVNode, defineComponent, nextTick, normalizeStyle, onMounted, openBlock, ref, renderList, toDisplayString, useTemplateRef, watch, withCtx } from "vue";
3
+ import { useResizeObserver } from "@vueuse/core";
4
+ //#region src/components/select/SelectOverflowChips.vue?vue&type=script&setup=true&lang.ts
5
+ var _hoisted_1 = {
6
+ ref: "container",
7
+ style: {
8
+ "display": "flex",
9
+ "flex-wrap": "nowrap",
10
+ "align-items": "center",
11
+ "gap": "4px",
12
+ "overflow": "hidden",
13
+ "flex": "1",
14
+ "min-width": "0"
15
+ }
16
+ };
17
+ var SelectOverflowChips_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
18
+ __name: "SelectOverflowChips",
19
+ props: {
20
+ values: {},
21
+ getLabel: { type: Function }
22
+ },
23
+ setup(__props) {
24
+ const props = __props;
25
+ const containerEl = useTemplateRef("container");
26
+ const visibleCount = ref(props.values.length);
27
+ const overflowCount = computed(() => Math.max(0, props.values.length - visibleCount.value));
28
+ let measuring = false;
29
+ async function reflow() {
30
+ if (measuring) return;
31
+ measuring = true;
32
+ try {
33
+ const el = containerEl.value;
34
+ if (!el) return;
35
+ visibleCount.value = props.values.length;
36
+ await nextTick();
37
+ const chips = [...el.querySelectorAll("[data-chip-item]")];
38
+ if (!chips.length) return;
39
+ const containerW = el.offsetWidth;
40
+ if (!containerW) return;
41
+ const BADGE_W = 76;
42
+ let usedW = 0;
43
+ let n = 0;
44
+ for (let i = 0; i < chips.length; i++) {
45
+ const gap = i > 0 ? 4 : 0;
46
+ const chipW = chips[i].offsetWidth;
47
+ const budget = i === chips.length - 1 ? containerW : containerW - BADGE_W;
48
+ if (usedW + gap + chipW > budget) break;
49
+ usedW += gap + chipW;
50
+ n++;
51
+ }
52
+ visibleCount.value = Math.max(1, n);
53
+ } finally {
54
+ measuring = false;
55
+ }
56
+ }
57
+ onMounted(reflow);
58
+ useResizeObserver(containerEl, reflow);
59
+ watch(() => props.values.join("\0"), () => reflow(), { flush: "post" });
60
+ return (_ctx, _cache) => {
61
+ return openBlock(), createElementBlock("div", _hoisted_1, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.values, (val, i) => {
62
+ return openBlock(), createBlock(Chip_default, {
63
+ key: val,
64
+ "data-chip-item": "",
65
+ size: "sm",
66
+ style: normalizeStyle(i >= visibleCount.value ? "display: none" : void 0)
67
+ }, {
68
+ default: withCtx(() => [createTextVNode(toDisplayString(__props.getLabel(val)), 1)]),
69
+ _: 2
70
+ }, 1032, ["style"]);
71
+ }), 128)), overflowCount.value > 0 ? (openBlock(), createBlock(Chip_default, {
72
+ key: 0,
73
+ size: "sm",
74
+ color: "default"
75
+ }, {
76
+ default: withCtx(() => [createTextVNode(" +" + toDisplayString(overflowCount.value) + " more ", 1)]),
77
+ _: 1
78
+ })) : createCommentVNode("", true)], 512);
79
+ };
80
+ }
81
+ });
82
+ //#endregion
83
+ export { SelectOverflowChips_vue_vue_type_script_setup_true_lang_default as default };
84
+
85
+ //# sourceMappingURL=SelectOverflowChips.vue_vue_type_script_setup_true_lang.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SelectOverflowChips.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/select/SelectOverflowChips.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { ref, computed, nextTick, useTemplateRef, onMounted, watch } from 'vue'\nimport { useResizeObserver } from '@vueuse/core'\nimport Chip from '../chip/Chip.vue'\n\nconst props = defineProps<{\n values: string[]\n getLabel: (value: string) => string\n}>()\n\nconst containerEl = useTemplateRef<HTMLElement>('container')\nconst visibleCount = ref(props.values.length)\nconst overflowCount = computed(() => Math.max(0, props.values.length - visibleCount.value))\n\n// Prevents re-entrant reflows while we are in the async measurement phase.\nlet measuring = false\n\nasync function reflow() {\n if (measuring) return\n measuring = true\n\n try {\n const el = containerEl.value\n if (!el) return\n\n // Phase 1: show all chips to measure their natural widths\n visibleCount.value = props.values.length\n await nextTick()\n\n const chips = [...el.querySelectorAll<HTMLElement>('[data-chip-item]')]\n if (!chips.length) return\n\n const containerW = el.offsetWidth\n if (!containerW) return\n\n // BADGE_W = estimated chip width (68px) + CSS gap before it (4px).\n // The sm Chip has px-2 (16px padding) so \"+N more\" fits in ~52–68px.\n const BADGE_W = 76\n\n let usedW = 0\n let n = 0\n\n for (let i = 0; i < chips.length; i++) {\n const gap = i > 0 ? 4 : 0\n const chipW = chips[i].offsetWidth\n const isLast = i === chips.length - 1\n // Last chip: use full budget (no badge needed if everything fits).\n // Earlier chips: reserve BADGE_W so the badge has room when we do overflow.\n const budget = isLast ? containerW : containerW - BADGE_W\n\n if (usedW + gap + chipW > budget) break\n usedW += gap + chipW\n n++\n }\n\n visibleCount.value = Math.max(1, n)\n } finally {\n measuring = false\n }\n}\n\nonMounted(reflow)\nuseResizeObserver(containerEl, reflow)\n\n// Watch a comma-joined string derived from the values — Vue uses Object.is for\n// primitives, so this only fires when the selection actually changes.\n//\n// WHY NOT { deep: true }: Vue's watch fires the callback whenever the effect\n// re-runs when deep=true (because `if (deep || hasChanged)` short-circuits).\n// Reka passes a new array reference for modelValue on every internal re-render\n// (optionsSet updates, dropdown open/close), so a deep or shallow ref watch\n// fires continuously, causing the reflow loop that produces the oscillation.\nwatch(\n () => props.values.join('\\x00'),\n () => reflow(),\n { flush: 'post' },\n)\n</script>\n\n<template>\n <div\n ref=\"container\"\n style=\"display: flex; flex-wrap: nowrap; align-items: center; gap: 4px; overflow: hidden; flex: 1; min-width: 0;\"\n >\n <Chip\n v-for=\"(val, i) in values\"\n :key=\"val\"\n data-chip-item\n size=\"sm\"\n :style=\"i >= visibleCount ? 'display: none' : undefined\"\n >\n {{ getLabel(val) }}\n </Chip>\n <Chip\n v-if=\"overflowCount > 0\"\n size=\"sm\"\n color=\"default\"\n >\n +{{ overflowCount }} more\n </Chip>\n </div>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;EAKA,MAAM,QAAQ;EAKd,MAAM,cAAc,eAA4B,YAAW;EAC3D,MAAM,eAAe,IAAI,MAAM,OAAO,OAAM;EAC5C,MAAM,gBAAgB,eAAe,KAAK,IAAI,GAAG,MAAM,OAAO,SAAS,aAAa,MAAM,CAAA;EAG1F,IAAI,YAAY;EAEhB,eAAe,SAAS;AACtB,OAAI,UAAW;AACf,eAAY;AAEZ,OAAI;IACF,MAAM,KAAK,YAAY;AACvB,QAAI,CAAC,GAAI;AAGT,iBAAa,QAAQ,MAAM,OAAO;AAClC,UAAM,UAAS;IAEf,MAAM,QAAQ,CAAC,GAAG,GAAG,iBAA8B,mBAAmB,CAAA;AACtE,QAAI,CAAC,MAAM,OAAQ;IAEnB,MAAM,aAAa,GAAG;AACtB,QAAI,CAAC,WAAY;IAIjB,MAAM,UAAU;IAEhB,IAAI,QAAQ;IACZ,IAAI,IAAI;AAER,SAAK,IAAI,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;KACrC,MAAM,MAAM,IAAI,IAAI,IAAI;KACxB,MAAM,QAAQ,MAAM,GAAG;KAIvB,MAAM,SAHS,MAAM,MAAM,SAAS,IAGZ,aAAa,aAAa;AAElD,SAAI,QAAQ,MAAM,QAAQ,OAAQ;AAClC,cAAS,MAAM;AACf;;AAGF,iBAAa,QAAQ,KAAK,IAAI,GAAG,EAAC;aAC1B;AACR,gBAAY;;;AAIhB,YAAU,OAAM;AAChB,oBAAkB,aAAa,OAAM;AAUrC,cACQ,MAAM,OAAO,KAAK,KAAO,QACzB,QAAQ,EACd,EAAE,OAAO,QAAQ,CACnB;;uBAIE,mBAoBM,OApBN,YAoBM,EAAA,UAAA,KAAA,EAhBJ,mBAQO,UAAA,MAAA,WAPc,QAAA,SAAX,KAAK,MAAC;wBADhB,YAQO,cAAA;KANJ,KAAK;KACN,kBAAA;KACA,MAAK;KACJ,OAAK,eAAE,KAAK,aAAA,QAAY,kBAAqB,KAAA,EAAS;;4BAEpC,CAAA,gBAAA,gBAAhB,QAAA,SAAS,IAAG,CAAA,EAAA,EAAA,CAAA,CAAA;;;cAGT,cAAA,QAAa,KAAA,WAAA,EADrB,YAMO,cAAA;;IAJL,MAAK;IACL,OAAM;;2BAEL,CAAA,gBADF,OACE,gBAAG,cAAA,MAAa,GAAG,UACtB,EAAA,CAAA,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"SelectValue.js","names":[],"sources":["../../../src/components/select/SelectValue.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { SelectValue } from 'reka-ui'\nimport { useSelectInject } from './Select.context'\n\nconst props = withDefaults(defineProps<{\n placeholder?: string\n class?: string\n}>(), {\n placeholder: undefined,\n class: undefined,\n})\n\nconst ctx = useSelectInject()\n</script>\n\n<template>\n <SelectValue\n :class=\"ctx.slots.value.value()\"\n :placeholder=\"props.placeholder\"\n data-slot=\"value\"\n >\n <template #default=\"{ selectedLabel, modelValue }\">\n <!--\n Label resolution order:\n 1. Reka's native selectedLabel — populated via optionsSet once items mount\n (works after first open, and in real browsers via DocumentFragment path)\n 2. itemRegistry label — populated at setup time for items with explicit\n textValue prop, or at onMounted for slot-text items after first open\n 3. Placeholder when no value is selected\n -->\n <template v-if=\"selectedLabel && selectedLabel.length > 0\">\n {{ selectedLabel.join(', ') }}\n </template>\n <template v-else-if=\"modelValue != null && (Array.isArray(modelValue) ? modelValue.length > 0 : modelValue !== '')\">\n {{ ctx.itemLabel(Array.isArray(modelValue) ? modelValue : modelValue.toString()) }}\n </template>\n <template v-else>\n {{ props.placeholder }}\n </template>\n </template>\n </SelectValue>\n</template>\n"],"mappings":""}
1
+ {"version":3,"file":"SelectValue.js","names":[],"sources":["../../../src/components/select/SelectValue.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { SelectValue } from 'reka-ui'\nimport { useSelectInject } from './Select.context'\nimport SelectOverflowChips from './SelectOverflowChips.vue'\n\nconst props = withDefaults(defineProps<{\n placeholder?: string\n class?: string\n}>(), {\n placeholder: undefined,\n class: undefined,\n})\n\nconst ctx = useSelectInject()\n</script>\n\n<template>\n <SelectValue\n :class=\"ctx.slots.value.value()\"\n :placeholder=\"props.placeholder\"\n data-slot=\"value\"\n >\n <template #default=\"{ selectedLabel, modelValue }\">\n <!-- Multiple mode: chips with overflow truncation -->\n <template v-if=\"ctx.multiple.value && Array.isArray(modelValue) && modelValue.length > 0\">\n <SelectOverflowChips\n :values=\"(modelValue as string[])\"\n :get-label=\"ctx.itemLabel\"\n />\n </template>\n <!-- Multiple mode: nothing selected yet -->\n <template v-else-if=\"ctx.multiple.value\">\n {{ props.placeholder }}\n </template>\n <!--\n Single mode label resolution:\n 1. Reka's native selectedLabel — populated via optionsSet once items mount\n 2. itemRegistry label — populated at setup time for items with explicit textValue\n 3. Placeholder when no value is selected\n -->\n <template v-else-if=\"selectedLabel && selectedLabel.length > 0\">\n {{ selectedLabel.join(', ') }}\n </template>\n <template v-else-if=\"modelValue != null && (Array.isArray(modelValue) ? modelValue.length > 0 : modelValue !== '')\">\n {{ ctx.itemLabel(Array.isArray(modelValue) ? modelValue : modelValue.toString()) }}\n </template>\n <template v-else>\n {{ props.placeholder }}\n </template>\n </template>\n </SelectValue>\n</template>\n"],"mappings":""}
@@ -1,4 +1,5 @@
1
1
  import { useSelectInject } from "./Select.context.js";
2
+ import SelectOverflowChips_default from "./SelectOverflowChips.js";
2
3
  import { Fragment, createBlock, createElementBlock, createTextVNode, defineComponent, normalizeClass, openBlock, toDisplayString, unref, withCtx } from "vue";
3
4
  import { SelectValue } from "reka-ui";
4
5
  //#region src/components/select/SelectValue.vue?vue&type=script&setup=true&lang.ts
@@ -17,7 +18,11 @@ var SelectValue_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ de
17
18
  placeholder: props.placeholder,
18
19
  "data-slot": "value"
19
20
  }, {
20
- default: withCtx(({ selectedLabel, modelValue }) => [selectedLabel && selectedLabel.length > 0 ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [createTextVNode(toDisplayString(selectedLabel.join(", ")), 1)], 64)) : modelValue != null && (Array.isArray(modelValue) ? modelValue.length > 0 : modelValue !== "") ? (openBlock(), createElementBlock(Fragment, { key: 1 }, [createTextVNode(toDisplayString(unref(ctx).itemLabel(Array.isArray(modelValue) ? modelValue : modelValue.toString())), 1)], 64)) : (openBlock(), createElementBlock(Fragment, { key: 2 }, [createTextVNode(toDisplayString(props.placeholder), 1)], 64))]),
21
+ default: withCtx(({ selectedLabel, modelValue }) => [unref(ctx).multiple.value && Array.isArray(modelValue) && modelValue.length > 0 ? (openBlock(), createBlock(SelectOverflowChips_default, {
22
+ key: 0,
23
+ values: modelValue,
24
+ "get-label": unref(ctx).itemLabel
25
+ }, null, 8, ["values", "get-label"])) : unref(ctx).multiple.value ? (openBlock(), createElementBlock(Fragment, { key: 1 }, [createTextVNode(toDisplayString(props.placeholder), 1)], 64)) : selectedLabel && selectedLabel.length > 0 ? (openBlock(), createElementBlock(Fragment, { key: 2 }, [createTextVNode(toDisplayString(selectedLabel.join(", ")), 1)], 64)) : modelValue != null && (Array.isArray(modelValue) ? modelValue.length > 0 : modelValue !== "") ? (openBlock(), createElementBlock(Fragment, { key: 3 }, [createTextVNode(toDisplayString(unref(ctx).itemLabel(Array.isArray(modelValue) ? modelValue : modelValue.toString())), 1)], 64)) : (openBlock(), createElementBlock(Fragment, { key: 4 }, [createTextVNode(toDisplayString(props.placeholder), 1)], 64))]),
21
26
  _: 1
22
27
  }, 8, ["class", "placeholder"]);
23
28
  };
@@ -1 +1 @@
1
- {"version":3,"file":"SelectValue.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/select/SelectValue.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { SelectValue } from 'reka-ui'\nimport { useSelectInject } from './Select.context'\n\nconst props = withDefaults(defineProps<{\n placeholder?: string\n class?: string\n}>(), {\n placeholder: undefined,\n class: undefined,\n})\n\nconst ctx = useSelectInject()\n</script>\n\n<template>\n <SelectValue\n :class=\"ctx.slots.value.value()\"\n :placeholder=\"props.placeholder\"\n data-slot=\"value\"\n >\n <template #default=\"{ selectedLabel, modelValue }\">\n <!--\n Label resolution order:\n 1. Reka's native selectedLabel — populated via optionsSet once items mount\n (works after first open, and in real browsers via DocumentFragment path)\n 2. itemRegistry label — populated at setup time for items with explicit\n textValue prop, or at onMounted for slot-text items after first open\n 3. Placeholder when no value is selected\n -->\n <template v-if=\"selectedLabel && selectedLabel.length > 0\">\n {{ selectedLabel.join(', ') }}\n </template>\n <template v-else-if=\"modelValue != null && (Array.isArray(modelValue) ? modelValue.length > 0 : modelValue !== '')\">\n {{ ctx.itemLabel(Array.isArray(modelValue) ? modelValue : modelValue.toString()) }}\n </template>\n <template v-else>\n {{ props.placeholder }}\n </template>\n </template>\n </SelectValue>\n</template>\n"],"mappings":";;;;;;;;;;;EAIA,MAAM,QAAQ;EAQd,MAAM,MAAM,iBAAgB;;uBAI1B,YAwBc,MAAA,YAAA,EAAA;IAvBX,OAAK,eAAE,MAAA,IAAG,CAAC,MAAM,MAAM,OAAK,CAAA;IAC5B,aAAa,MAAM;IACpB,aAAU;;IAEC,SAAO,SAWL,EAXS,eAAe,iBAAU,CAS7B,iBAAiB,cAAc,SAAM,KAAA,WAAA,EAArD,mBAEW,UAAA,EAAA,KAAA,GAAA,EAAA,CAAA,gBAAA,gBADN,cAAc,KAAI,KAAA,CAAA,EAAA,EAAA,CAAA,EAAA,GAAA,IAEF,cAAU,SAAa,MAAM,QAAQ,WAAU,GAAI,WAAW,SAAM,IAAO,eAAU,OAAA,WAAA,EAA1G,mBAEW,UAAA,EAAA,KAAA,GAAA,EAAA,CAAA,gBAAA,gBADN,MAAA,IAAG,CAAC,UAAU,MAAM,QAAQ,WAAU,GAAI,aAAa,WAAW,UAAQ,CAAA,CAAA,EAAA,EAAA,CAAA,EAAA,GAAA,KAAA,WAAA,EAE/E,mBAEW,UAAA,EAAA,KAAA,GAAA,EAAA,CAAA,gBAAA,gBADN,MAAM,YAAW,EAAA,EAAA,CAAA,EAAA,GAAA,EAAA,CAAA"}
1
+ {"version":3,"file":"SelectValue.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/select/SelectValue.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { SelectValue } from 'reka-ui'\nimport { useSelectInject } from './Select.context'\nimport SelectOverflowChips from './SelectOverflowChips.vue'\n\nconst props = withDefaults(defineProps<{\n placeholder?: string\n class?: string\n}>(), {\n placeholder: undefined,\n class: undefined,\n})\n\nconst ctx = useSelectInject()\n</script>\n\n<template>\n <SelectValue\n :class=\"ctx.slots.value.value()\"\n :placeholder=\"props.placeholder\"\n data-slot=\"value\"\n >\n <template #default=\"{ selectedLabel, modelValue }\">\n <!-- Multiple mode: chips with overflow truncation -->\n <template v-if=\"ctx.multiple.value && Array.isArray(modelValue) && modelValue.length > 0\">\n <SelectOverflowChips\n :values=\"(modelValue as string[])\"\n :get-label=\"ctx.itemLabel\"\n />\n </template>\n <!-- Multiple mode: nothing selected yet -->\n <template v-else-if=\"ctx.multiple.value\">\n {{ props.placeholder }}\n </template>\n <!--\n Single mode label resolution:\n 1. Reka's native selectedLabel — populated via optionsSet once items mount\n 2. itemRegistry label — populated at setup time for items with explicit textValue\n 3. Placeholder when no value is selected\n -->\n <template v-else-if=\"selectedLabel && selectedLabel.length > 0\">\n {{ selectedLabel.join(', ') }}\n </template>\n <template v-else-if=\"modelValue != null && (Array.isArray(modelValue) ? modelValue.length > 0 : modelValue !== '')\">\n {{ ctx.itemLabel(Array.isArray(modelValue) ? modelValue : modelValue.toString()) }}\n </template>\n <template v-else>\n {{ props.placeholder }}\n </template>\n </template>\n </SelectValue>\n</template>\n"],"mappings":";;;;;;;;;;;;EAKA,MAAM,QAAQ;EAQd,MAAM,MAAM,iBAAgB;;uBAI1B,YAiCc,MAAA,YAAA,EAAA;IAhCX,OAAK,eAAE,MAAA,IAAG,CAAC,MAAM,MAAM,OAAK,CAAA;IAC5B,aAAa,MAAM;IACpB,aAAU;;IAEC,SAAO,SAOL,EAPS,eAAe,iBAAU,CAE7B,MAAA,IAAG,CAAC,SAAS,SAAS,MAAM,QAAQ,WAAU,IAAK,WAAW,SAAM,KAAA,WAAA,EAClF,YAGE,6BAAA;;KAFC,QAAS;KACT,aAAW,MAAA,IAAG,CAAC;4CAIC,MAAA,IAAG,CAAC,SAAS,SAAA,WAAA,EAAlC,mBAEW,UAAA,EAAA,KAAA,GAAA,EAAA,CAAA,gBAAA,gBADN,MAAM,YAAW,EAAA,EAAA,CAAA,EAAA,GAAA,IAQD,iBAAiB,cAAc,SAAM,KAAA,WAAA,EAA1D,mBAEW,UAAA,EAAA,KAAA,GAAA,EAAA,CAAA,gBAAA,gBADN,cAAc,KAAI,KAAA,CAAA,EAAA,EAAA,CAAA,EAAA,GAAA,IAEF,cAAU,SAAa,MAAM,QAAQ,WAAU,GAAI,WAAW,SAAM,IAAO,eAAU,OAAA,WAAA,EAA1G,mBAEW,UAAA,EAAA,KAAA,GAAA,EAAA,CAAA,gBAAA,gBADN,MAAA,IAAG,CAAC,UAAU,MAAM,QAAQ,WAAU,GAAI,aAAa,WAAW,UAAQ,CAAA,CAAA,EAAA,EAAA,CAAA,EAAA,GAAA,KAAA,WAAA,EAE/E,mBAEW,UAAA,EAAA,KAAA,GAAA,EAAA,CAAA,gBAAA,gBADN,MAAM,YAAW,EAAA,EAAA,CAAA,EAAA,GAAA,EAAA,CAAA"}