@atscript/vue-form 0.1.63 → 0.1.65

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 (151) hide show
  1. package/dist/as-action.cjs +1 -1
  2. package/dist/as-action.d.cts +1 -1
  3. package/dist/as-action.d.mts +1 -1
  4. package/dist/as-action.mjs +1 -1
  5. package/dist/{as-action.vue-BdbAOZCL.d.cts → as-action.vue-BOLmcRHb.d.cts} +1 -1
  6. package/dist/{as-action.vue-CmY3eil1.d.mts → as-action.vue-ReXXWCRt.d.mts} +1 -1
  7. package/dist/{as-array-Bn27x9cq.cjs → as-array-BfFUOUpP.cjs} +3 -3
  8. package/dist/{as-array-DwarTaKP.mjs → as-array-w6RKsbKG.mjs} +3 -3
  9. package/dist/as-array.cjs +4 -4
  10. package/dist/as-array.d.cts +1 -1
  11. package/dist/as-array.d.mts +1 -1
  12. package/dist/as-array.mjs +4 -4
  13. package/dist/{as-array.vue-C5r_ycIa.d.mts → as-array.vue-BwIDKidj.d.cts} +1 -1
  14. package/dist/{as-array.vue-CeBZRVm7.d.cts → as-array.vue-DWk95nMh.d.mts} +1 -1
  15. package/dist/as-checkbox.cjs +1 -1
  16. package/dist/as-checkbox.d.cts +1 -1
  17. package/dist/as-checkbox.d.mts +1 -1
  18. package/dist/as-checkbox.mjs +1 -1
  19. package/dist/{as-checkbox.vue-BL53Xjmi.d.mts → as-checkbox.vue-C1J7GXSV.d.cts} +1 -1
  20. package/dist/{as-checkbox.vue-Da1KVG5J.d.cts → as-checkbox.vue-DbIbeNGB.d.mts} +1 -1
  21. package/dist/{as-date-C7tFQDkh.mjs → as-date-O-VvODYx.mjs} +1 -1
  22. package/dist/{as-date-k3MW3dmA.cjs → as-date-fd4tYYNn.cjs} +1 -1
  23. package/dist/as-date.cjs +2 -2
  24. package/dist/as-date.d.cts +1 -1
  25. package/dist/as-date.d.mts +1 -1
  26. package/dist/as-date.mjs +2 -2
  27. package/dist/{as-date.vue-C5JaS3Sd.d.mts → as-date.vue-DQQ7e1be.d.mts} +1 -1
  28. package/dist/{as-date.vue-e2ewS_V4.d.cts → as-date.vue-Dq-lJ85v.d.cts} +1 -1
  29. package/dist/{as-datetime-elcOoDT5.mjs → as-datetime-CLPLpMgJ.mjs} +1 -1
  30. package/dist/{as-datetime-C030mzI5.cjs → as-datetime-CVLwvGZ0.cjs} +1 -1
  31. package/dist/as-datetime.cjs +2 -2
  32. package/dist/as-datetime.d.cts +1 -1
  33. package/dist/as-datetime.d.mts +1 -1
  34. package/dist/as-datetime.mjs +2 -2
  35. package/dist/{as-datetime.vue-ClsSnJSV.d.mts → as-datetime.vue-B3e_uLA3.d.cts} +1 -1
  36. package/dist/{as-datetime.vue-vfHFsby6.d.cts → as-datetime.vue-B9J68KLU.d.mts} +1 -1
  37. package/dist/as-decimal.cjs +1 -1
  38. package/dist/as-decimal.d.cts +1 -1
  39. package/dist/as-decimal.d.mts +1 -1
  40. package/dist/as-decimal.mjs +1 -1
  41. package/dist/{as-decimal.vue-B1pEKdjM.d.cts → as-decimal.vue-B8-nFo4M.d.mts} +1 -1
  42. package/dist/{as-decimal.vue-CSCtYRRa.d.mts → as-decimal.vue-C_boWzTP.d.cts} +1 -1
  43. package/dist/as-field-shell.d.cts +1 -1
  44. package/dist/as-field-shell.d.mts +1 -1
  45. package/dist/{as-field-shell.vue-Ddnp8KxY.d.mts → as-field-shell.vue-BMxefEhU.d.cts} +1 -1
  46. package/dist/{as-field-shell.vue-Dmt05vGD.d.cts → as-field-shell.vue-CUvQY2ox.d.mts} +1 -1
  47. package/dist/as-form.d.cts +1 -1
  48. package/dist/as-form.d.mts +1 -1
  49. package/dist/{as-form.vue-DRrb_yoj.d.mts → as-form.vue-B6iBidP7.d.cts} +1 -1
  50. package/dist/{as-form.vue-B4Bn0pbC.d.cts → as-form.vue-BmDsOgLK.d.mts} +1 -1
  51. package/dist/as-input.d.cts +1 -1
  52. package/dist/as-input.d.mts +1 -1
  53. package/dist/{as-input.vue-11ldp9uT.d.cts → as-input.vue-BkFMg_PX.d.cts} +1 -1
  54. package/dist/{as-input.vue-fUhcvfv2.d.mts → as-input.vue-DBMNi9pA.d.mts} +1 -1
  55. package/dist/as-multi-select-46G-lO3v.cjs +358 -0
  56. package/dist/as-multi-select-C3es0-Wj.mjs +353 -0
  57. package/dist/as-multi-select.cjs +6 -0
  58. package/dist/as-multi-select.d.cts +2 -0
  59. package/dist/as-multi-select.d.mts +2 -0
  60. package/dist/as-multi-select.mjs +6 -0
  61. package/dist/as-multi-select.vue-Bbv8x2Js.d.mts +19 -0
  62. package/dist/as-multi-select.vue-Bn_Fyku5.d.cts +19 -0
  63. package/dist/as-number.cjs +1 -1
  64. package/dist/as-number.d.cts +1 -1
  65. package/dist/as-number.d.mts +1 -1
  66. package/dist/as-number.mjs +1 -1
  67. package/dist/{as-number.vue-Bk-W7Vwv.d.mts → as-number.vue-BSXOv-nz.d.cts} +1 -1
  68. package/dist/{as-number.vue-C2Aih98s.d.cts → as-number.vue-DRE18Wy-.d.mts} +1 -1
  69. package/dist/{as-object-CT6lNEqt.mjs → as-object-DMh4vis7.mjs} +2 -2
  70. package/dist/{as-object-qUL7l8V1.cjs → as-object-DittHqNK.cjs} +2 -2
  71. package/dist/as-object.cjs +3 -3
  72. package/dist/as-object.d.cts +1 -1
  73. package/dist/as-object.d.mts +1 -1
  74. package/dist/as-object.mjs +3 -3
  75. package/dist/{as-object.vue-CKwMyM_F.d.cts → as-object.vue-C9Sp3JdQ.d.cts} +1 -1
  76. package/dist/{as-object.vue-Cg52b61-.d.mts → as-object.vue-I-Blr7wy.d.mts} +1 -1
  77. package/dist/as-paragraph.cjs +1 -1
  78. package/dist/as-paragraph.d.cts +1 -1
  79. package/dist/as-paragraph.d.mts +1 -1
  80. package/dist/as-paragraph.mjs +1 -1
  81. package/dist/{as-paragraph.vue-BDt0pBG-.d.cts → as-paragraph.vue-KdN_Gtoh.d.mts} +1 -1
  82. package/dist/{as-paragraph.vue-C3FgTEt5.d.mts → as-paragraph.vue-p2kyH9gG.d.cts} +1 -1
  83. package/dist/as-radio.cjs +1 -1
  84. package/dist/as-radio.d.cts +1 -1
  85. package/dist/as-radio.d.mts +1 -1
  86. package/dist/as-radio.mjs +1 -1
  87. package/dist/{as-radio.vue-D_fweoN1.d.mts → as-radio.vue-BgWru-Q7.d.mts} +1 -1
  88. package/dist/{as-radio.vue-ZC4kLBnT.d.cts → as-radio.vue-DkN0qaB9.d.cts} +1 -1
  89. package/dist/as-ref.cjs +1 -1
  90. package/dist/as-ref.d.cts +1 -1
  91. package/dist/as-ref.d.mts +1 -1
  92. package/dist/as-ref.mjs +1 -1
  93. package/dist/{as-ref.vue-BNeQeQpO.d.cts → as-ref.vue-3K67TM80.d.cts} +1 -1
  94. package/dist/{as-ref.vue-Cr5jeNDn.d.mts → as-ref.vue-CE1vVUTN.d.mts} +1 -1
  95. package/dist/as-select.d.cts +1 -1
  96. package/dist/as-select.d.mts +1 -1
  97. package/dist/{as-select.vue-Dd7huPq2.d.cts → as-select.vue-C03bPwG_.d.mts} +1 -1
  98. package/dist/{as-select.vue-RYpbZbKt.d.mts → as-select.vue-DfZY_vxR.d.cts} +1 -1
  99. package/dist/{as-time-CQsxUs8P.mjs → as-time-D8h_kUs2.mjs} +1 -1
  100. package/dist/{as-time-C24rvslH.cjs → as-time-lal8igWF.cjs} +1 -1
  101. package/dist/as-time.cjs +2 -2
  102. package/dist/as-time.d.cts +1 -1
  103. package/dist/as-time.d.mts +1 -1
  104. package/dist/as-time.mjs +2 -2
  105. package/dist/{as-time.vue-huLx2B4l.d.mts → as-time.vue-BPzy2jHL.d.cts} +1 -1
  106. package/dist/{as-time.vue-nMEHLXke.d.cts → as-time.vue-CTahupM4.d.mts} +1 -1
  107. package/dist/{as-tuple-BU--cuuI.cjs → as-tuple-BsALfutl.cjs} +3 -3
  108. package/dist/{as-tuple-DkI9swlW.mjs → as-tuple-DkQcCtgW.mjs} +3 -3
  109. package/dist/as-tuple.cjs +4 -4
  110. package/dist/as-tuple.d.cts +1 -1
  111. package/dist/as-tuple.d.mts +1 -1
  112. package/dist/as-tuple.mjs +4 -4
  113. package/dist/{as-tuple.vue-CQhzOJsn.d.mts → as-tuple.vue-BpB4uiSs.d.cts} +1 -1
  114. package/dist/{as-tuple.vue-DyskCkf-.d.cts → as-tuple.vue-S4qpWqlA.d.mts} +1 -1
  115. package/dist/{as-union-C0btoJn3.cjs → as-union-BDqrrIn6.cjs} +1 -1
  116. package/dist/{as-union-BGvdxr3G.mjs → as-union-vz9dJ3aQ.mjs} +1 -1
  117. package/dist/as-union.cjs +2 -2
  118. package/dist/as-union.d.cts +1 -1
  119. package/dist/as-union.d.mts +1 -1
  120. package/dist/as-union.mjs +2 -2
  121. package/dist/{as-union.vue-BjlDPZn0.d.mts → as-union.vue-Cue3m7Id.d.cts} +1 -1
  122. package/dist/{as-union.vue-CqjU3O10.d.cts → as-union.vue-Czxxaht_.d.mts} +1 -1
  123. package/dist/index.cjs +20 -18
  124. package/dist/index.d.cts +20 -20
  125. package/dist/index.d.mts +20 -20
  126. package/dist/index.mjs +20 -18
  127. package/dist/{types-Czm-Gtud.d.mts → types-CzMUE5Dk.d.cts} +1 -0
  128. package/dist/{types-C4HRSxgV.d.cts → types-D0xtsrz8.d.mts} +1 -0
  129. package/package.json +11 -6
  130. /package/dist/{as-action-DU17rykn.mjs → as-action-DfQE2MA7.mjs} +0 -0
  131. /package/dist/{as-action-71f9E_bL.cjs → as-action-UtPIV4Cf.cjs} +0 -0
  132. /package/dist/{as-array-clear-btn-DIhzCKC9.mjs → as-array-clear-btn-BqDJxNWn.mjs} +0 -0
  133. /package/dist/{as-array-clear-btn-DAGervXL.cjs → as-array-clear-btn-Bx60mqmC.cjs} +0 -0
  134. /package/dist/{as-checkbox-DXGTVHPE.cjs → as-checkbox-3fTjz65c.cjs} +0 -0
  135. /package/dist/{as-checkbox-B_9mwla6.mjs → as-checkbox-BMCjv7QY.mjs} +0 -0
  136. /package/dist/{as-collapsible-DtNCofNT.mjs → as-collapsible-ChFET8n3.mjs} +0 -0
  137. /package/dist/{as-collapsible-CqxeJut7.cjs → as-collapsible-FN1ksw08.cjs} +0 -0
  138. /package/dist/{as-decimal-BJIGgPXU.cjs → as-decimal-CBgM6tVy.cjs} +0 -0
  139. /package/dist/{as-decimal-DtXjFPhe.mjs → as-decimal-DBw9Uuxo.mjs} +0 -0
  140. /package/dist/{as-number-JPEwPK8Q.mjs → as-number-2m6ZT1PN.mjs} +0 -0
  141. /package/dist/{as-number-BA55JIq1.cjs → as-number-BarcvMtz.cjs} +0 -0
  142. /package/dist/{as-paragraph-jIG_dg7_.mjs → as-paragraph-C2kFKwt1.mjs} +0 -0
  143. /package/dist/{as-paragraph-BGO-j4US.cjs → as-paragraph-DT26249u.cjs} +0 -0
  144. /package/dist/{as-radio-U3OK7bTg.cjs → as-radio-CFext5YE.cjs} +0 -0
  145. /package/dist/{as-radio-B1N-gmoI.mjs → as-radio-DeL0QScf.mjs} +0 -0
  146. /package/dist/{as-ref-SImaIrwK.cjs → as-ref-J9Sg0jao.cjs} +0 -0
  147. /package/dist/{as-ref-CIifSSCQ.mjs → as-ref-Qkb_CVfU.mjs} +0 -0
  148. /package/dist/{use-as-date-C39i9mzE.mjs → use-as-date-Bb0Pi1l_.mjs} +0 -0
  149. /package/dist/{use-as-date-B7CtcRQd.cjs → use-as-date-v-GFUtrP.cjs} +0 -0
  150. /package/dist/{use-as-optional-add-flow-STOaQWo9.cjs → use-as-optional-add-flow-Dg_2iQ4d.cjs} +0 -0
  151. /package/dist/{use-as-optional-add-flow-CuXEir_i.mjs → use-as-optional-add-flow-DzUScp6V.mjs} +0 -0
@@ -0,0 +1,358 @@
1
+ const require_as_field_shell = require("./as-field-shell-B2iTn-iM.cjs");
2
+ let vue = require("vue");
3
+ let _atscript_ui = require("@atscript/ui");
4
+ let reka_ui = require("reka-ui");
5
+ //#region src/components/defaults/as-multi-select.vue?vue&type=script&setup=true&lang.ts
6
+ const _hoisted_1 = ["id"];
7
+ const _hoisted_2 = { class: "as-multi-select-chip-label" };
8
+ const _hoisted_3 = [
9
+ "disabled",
10
+ "aria-label",
11
+ "onClick"
12
+ ];
13
+ const _hoisted_4 = { class: "as-multi-select-item-label" };
14
+ const _hoisted_5 = {
15
+ key: 0,
16
+ class: "as-multi-select-footer"
17
+ };
18
+ const _hoisted_6 = ["disabled"];
19
+ const _hoisted_7 = ["disabled"];
20
+ //#endregion
21
+ //#region src/components/defaults/as-multi-select.vue
22
+ var as_multi_select_default = /* @__PURE__ */ (0, vue.defineComponent)({
23
+ __name: "as-multi-select",
24
+ props: {
25
+ onBlur: {
26
+ type: Function,
27
+ required: true
28
+ },
29
+ error: {
30
+ type: String,
31
+ required: false
32
+ },
33
+ model: {
34
+ type: Object,
35
+ required: true
36
+ },
37
+ value: {
38
+ type: null,
39
+ required: false
40
+ },
41
+ label: {
42
+ type: String,
43
+ required: false
44
+ },
45
+ description: {
46
+ type: String,
47
+ required: false
48
+ },
49
+ hint: {
50
+ type: String,
51
+ required: false
52
+ },
53
+ placeholder: {
54
+ type: String,
55
+ required: false
56
+ },
57
+ prefixIcon: {
58
+ type: String,
59
+ required: false
60
+ },
61
+ suffixIcon: {
62
+ type: String,
63
+ required: false
64
+ },
65
+ class: {
66
+ type: [Object, String],
67
+ required: false
68
+ },
69
+ style: {
70
+ type: [Object, String],
71
+ required: false
72
+ },
73
+ optional: {
74
+ type: Boolean,
75
+ required: false,
76
+ skipCheck: true
77
+ },
78
+ onToggleOptional: {
79
+ type: Function,
80
+ required: false
81
+ },
82
+ required: {
83
+ type: Boolean,
84
+ required: false,
85
+ skipCheck: true
86
+ },
87
+ readonly: {
88
+ type: Boolean,
89
+ required: false,
90
+ skipCheck: true
91
+ },
92
+ type: {
93
+ type: String,
94
+ required: true
95
+ },
96
+ formAction: {
97
+ type: Object,
98
+ required: false
99
+ },
100
+ name: {
101
+ type: String,
102
+ required: false
103
+ },
104
+ field: {
105
+ type: Object,
106
+ required: false
107
+ },
108
+ options: {
109
+ type: Array,
110
+ required: false
111
+ },
112
+ maxLength: {
113
+ type: Number,
114
+ required: false
115
+ },
116
+ autocomplete: {
117
+ type: String,
118
+ required: false
119
+ },
120
+ title: {
121
+ type: String,
122
+ required: false
123
+ },
124
+ level: {
125
+ type: Number,
126
+ required: false
127
+ },
128
+ onRemove: {
129
+ type: Function,
130
+ required: false
131
+ },
132
+ canRemove: {
133
+ type: Boolean,
134
+ required: false
135
+ },
136
+ removeLabel: {
137
+ type: String,
138
+ required: false
139
+ },
140
+ arrayIndex: {
141
+ type: Number,
142
+ required: false
143
+ },
144
+ path: {
145
+ type: String,
146
+ required: true
147
+ },
148
+ valueHelp: {
149
+ type: Object,
150
+ required: false
151
+ },
152
+ singularLabel: {
153
+ type: String,
154
+ required: false
155
+ },
156
+ inputId: {
157
+ type: String,
158
+ required: true
159
+ },
160
+ errorId: {
161
+ type: String,
162
+ required: true
163
+ },
164
+ descId: {
165
+ type: String,
166
+ required: true
167
+ },
168
+ ariaDescribedBy: {
169
+ type: String,
170
+ required: false
171
+ },
172
+ currencyCode: {
173
+ type: String,
174
+ required: false
175
+ },
176
+ unitCode: {
177
+ type: String,
178
+ required: false
179
+ },
180
+ precisionScale: {
181
+ type: Number,
182
+ required: false
183
+ },
184
+ prefix: {
185
+ type: String,
186
+ required: false
187
+ },
188
+ suffix: {
189
+ type: String,
190
+ required: false
191
+ },
192
+ scale: {
193
+ type: Number,
194
+ required: false
195
+ },
196
+ hasAdornment: {
197
+ type: Boolean,
198
+ required: false
199
+ },
200
+ disabled: {
201
+ type: Boolean,
202
+ required: false
203
+ },
204
+ hidden: {
205
+ type: Boolean,
206
+ required: false
207
+ }
208
+ },
209
+ setup(__props) {
210
+ const props = __props;
211
+ const open = (0, vue.ref)(false);
212
+ const selectedOptions = (0, vue.computed)(() => {
213
+ const v = props.model.value;
214
+ if (!Array.isArray(v) || v.length === 0) return [];
215
+ const set = new Set(v.map((x) => String(x)));
216
+ return (props.options ?? []).filter((o) => set.has((0, _atscript_ui.optKey)(o)));
217
+ });
218
+ function deselect(key) {
219
+ const current = Array.isArray(props.model.value) ? props.model.value : [];
220
+ props.model.value = current.filter((v) => String(v) !== key);
221
+ }
222
+ function clearAll() {
223
+ props.model.value = [];
224
+ }
225
+ function selectAll() {
226
+ props.model.value = (props.options ?? []).map((o) => (0, _atscript_ui.optKey)(o));
227
+ }
228
+ return (_ctx, _cache) => {
229
+ return (0, vue.openBlock)(), (0, vue.createBlock)(require_as_field_shell.as_field_shell_default, (0, vue.mergeProps)(_ctx.$props, { "field-class": "as-multi-select-field" }), {
230
+ header: (0, vue.withCtx)(({ inputId }) => [(0, vue.createElementVNode)("span", {
231
+ id: inputId,
232
+ class: "as-field-label"
233
+ }, (0, vue.toDisplayString)(__props.label), 9, _hoisted_1)]),
234
+ default: (0, vue.withCtx)(({ inputId }) => [(0, vue.createVNode)((0, vue.unref)(reka_ui.ComboboxRoot), {
235
+ modelValue: __props.model.value,
236
+ "onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => __props.model.value = $event),
237
+ open: open.value,
238
+ "onUpdate:open": _cache[3] || (_cache[3] = ($event) => open.value = $event),
239
+ multiple: true,
240
+ disabled: __props.disabled || __props.readonly,
241
+ name: __props.name,
242
+ class: "as-multi-select-root"
243
+ }, {
244
+ default: (0, vue.withCtx)(() => [(0, vue.createVNode)((0, vue.unref)(reka_ui.ComboboxAnchor), {
245
+ class: "as-multi-select-anchor",
246
+ onClick: _cache[1] || (_cache[1] = ($event) => open.value = true)
247
+ }, {
248
+ default: (0, vue.withCtx)(() => [
249
+ ((0, vue.openBlock)(true), (0, vue.createElementBlock)(vue.Fragment, null, (0, vue.renderList)(selectedOptions.value, (opt) => {
250
+ return (0, vue.openBlock)(), (0, vue.createElementBlock)("span", {
251
+ key: (0, vue.unref)(_atscript_ui.optKey)(opt),
252
+ class: "as-multi-select-chip"
253
+ }, [(0, vue.createElementVNode)("span", _hoisted_2, (0, vue.toDisplayString)((0, vue.unref)(_atscript_ui.optLabel)(opt)), 1), (0, vue.createElementVNode)("button", {
254
+ type: "button",
255
+ class: "as-multi-select-chip-remove",
256
+ disabled: __props.disabled || __props.readonly,
257
+ "aria-label": `Remove ${(0, vue.unref)(_atscript_ui.optLabel)(opt)}`,
258
+ onClick: (0, vue.withModifiers)(($event) => deselect((0, vue.unref)(_atscript_ui.optKey)(opt)), ["stop"])
259
+ }, [..._cache[4] || (_cache[4] = [(0, vue.createElementVNode)("span", {
260
+ class: "i-as-close",
261
+ "aria-hidden": "true"
262
+ }, null, -1)])], 8, _hoisted_3)]);
263
+ }), 128)),
264
+ (0, vue.createVNode)((0, vue.unref)(reka_ui.ComboboxInput), {
265
+ id: inputId,
266
+ placeholder: selectedOptions.value.length ? "" : __props.placeholder ?? "Select...",
267
+ disabled: __props.disabled,
268
+ readonly: __props.readonly,
269
+ "aria-required": __props.required || void 0,
270
+ "aria-invalid": !!__props.error || void 0,
271
+ "aria-describedby": __props.ariaDescribedBy,
272
+ "aria-label": !__props.label ? __props.name : void 0,
273
+ class: "as-multi-select-input",
274
+ onFocus: _cache[0] || (_cache[0] = ($event) => open.value = true),
275
+ onBlur: __props.onBlur
276
+ }, null, 8, [
277
+ "id",
278
+ "placeholder",
279
+ "disabled",
280
+ "readonly",
281
+ "aria-required",
282
+ "aria-invalid",
283
+ "aria-describedby",
284
+ "aria-label",
285
+ "onBlur"
286
+ ]),
287
+ selectedOptions.value.length > 0 && !__props.disabled && !__props.readonly ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("button", {
288
+ key: 0,
289
+ type: "button",
290
+ class: "as-multi-select-clear",
291
+ "aria-label": "Clear selection",
292
+ onClick: (0, vue.withModifiers)(clearAll, ["stop", "prevent"])
293
+ }, [..._cache[5] || (_cache[5] = [(0, vue.createElementVNode)("span", {
294
+ class: "i-as-close",
295
+ "aria-hidden": "true"
296
+ }, null, -1)])])) : (0, vue.createCommentVNode)("v-if", true),
297
+ _cache[6] || (_cache[6] = (0, vue.createElementVNode)("span", {
298
+ class: "as-multi-select-caret i-as-chevron-down",
299
+ "aria-hidden": "true"
300
+ }, null, -1))
301
+ ]),
302
+ _: 2
303
+ }, 1024), (0, vue.createVNode)((0, vue.unref)(reka_ui.ComboboxPortal), null, {
304
+ default: (0, vue.withCtx)(() => [(0, vue.createVNode)((0, vue.unref)(reka_ui.ComboboxContent), {
305
+ position: "popper",
306
+ side: "bottom",
307
+ "side-offset": 4,
308
+ class: "as-multi-select-content"
309
+ }, {
310
+ default: (0, vue.withCtx)(() => [(0, vue.createVNode)((0, vue.unref)(reka_ui.ComboboxViewport), { class: "as-multi-select-viewport" }, {
311
+ default: (0, vue.withCtx)(() => [((0, vue.openBlock)(true), (0, vue.createElementBlock)(vue.Fragment, null, (0, vue.renderList)(__props.options, (opt) => {
312
+ return (0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(reka_ui.ComboboxItem), {
313
+ key: (0, vue.unref)(_atscript_ui.optKey)(opt),
314
+ value: (0, vue.unref)(_atscript_ui.optKey)(opt),
315
+ class: "as-multi-select-item"
316
+ }, {
317
+ default: (0, vue.withCtx)(() => [(0, vue.createElementVNode)("span", _hoisted_4, (0, vue.toDisplayString)((0, vue.unref)(_atscript_ui.optLabel)(opt)), 1)]),
318
+ _: 2
319
+ }, 1032, ["value"]);
320
+ }), 128)), (0, vue.createVNode)((0, vue.unref)(reka_ui.ComboboxEmpty), { class: "as-multi-select-empty" }, {
321
+ default: (0, vue.withCtx)(() => [..._cache[7] || (_cache[7] = [(0, vue.createTextVNode)("No matches", -1)])]),
322
+ _: 1
323
+ })]),
324
+ _: 1
325
+ }), (__props.options?.length ?? 0) > 2 ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_5, [(0, vue.createElementVNode)("button", {
326
+ type: "button",
327
+ class: "as-multi-select-footer-action",
328
+ disabled: selectedOptions.value.length === (__props.options?.length ?? 0),
329
+ onClick: (0, vue.withModifiers)(selectAll, ["stop", "prevent"])
330
+ }, " Select all ", 8, _hoisted_6), (0, vue.createElementVNode)("button", {
331
+ type: "button",
332
+ class: "as-multi-select-footer-action",
333
+ disabled: selectedOptions.value.length === 0,
334
+ onClick: (0, vue.withModifiers)(clearAll, ["stop", "prevent"])
335
+ }, " Clear ", 8, _hoisted_7)])) : (0, vue.createCommentVNode)("v-if", true)]),
336
+ _: 1
337
+ })]),
338
+ _: 1
339
+ })]),
340
+ _: 2
341
+ }, 1032, [
342
+ "modelValue",
343
+ "open",
344
+ "disabled",
345
+ "name"
346
+ ])]),
347
+ _: 1
348
+ }, 16);
349
+ };
350
+ }
351
+ });
352
+ //#endregion
353
+ Object.defineProperty(exports, "as_multi_select_default", {
354
+ enumerable: true,
355
+ get: function() {
356
+ return as_multi_select_default;
357
+ }
358
+ });
@@ -0,0 +1,353 @@
1
+ import { t as as_field_shell_default } from "./as-field-shell-Pdy3sAvr.mjs";
2
+ import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, mergeProps, openBlock, ref, renderList, toDisplayString, unref, withCtx, withModifiers } from "vue";
3
+ import { optKey, optLabel } from "@atscript/ui";
4
+ import { ComboboxAnchor, ComboboxContent, ComboboxEmpty, ComboboxInput, ComboboxItem, ComboboxPortal, ComboboxRoot, ComboboxViewport } from "reka-ui";
5
+ //#region src/components/defaults/as-multi-select.vue?vue&type=script&setup=true&lang.ts
6
+ const _hoisted_1 = ["id"];
7
+ const _hoisted_2 = { class: "as-multi-select-chip-label" };
8
+ const _hoisted_3 = [
9
+ "disabled",
10
+ "aria-label",
11
+ "onClick"
12
+ ];
13
+ const _hoisted_4 = { class: "as-multi-select-item-label" };
14
+ const _hoisted_5 = {
15
+ key: 0,
16
+ class: "as-multi-select-footer"
17
+ };
18
+ const _hoisted_6 = ["disabled"];
19
+ const _hoisted_7 = ["disabled"];
20
+ //#endregion
21
+ //#region src/components/defaults/as-multi-select.vue
22
+ var as_multi_select_default = /* @__PURE__ */ defineComponent({
23
+ __name: "as-multi-select",
24
+ props: {
25
+ onBlur: {
26
+ type: Function,
27
+ required: true
28
+ },
29
+ error: {
30
+ type: String,
31
+ required: false
32
+ },
33
+ model: {
34
+ type: Object,
35
+ required: true
36
+ },
37
+ value: {
38
+ type: null,
39
+ required: false
40
+ },
41
+ label: {
42
+ type: String,
43
+ required: false
44
+ },
45
+ description: {
46
+ type: String,
47
+ required: false
48
+ },
49
+ hint: {
50
+ type: String,
51
+ required: false
52
+ },
53
+ placeholder: {
54
+ type: String,
55
+ required: false
56
+ },
57
+ prefixIcon: {
58
+ type: String,
59
+ required: false
60
+ },
61
+ suffixIcon: {
62
+ type: String,
63
+ required: false
64
+ },
65
+ class: {
66
+ type: [Object, String],
67
+ required: false
68
+ },
69
+ style: {
70
+ type: [Object, String],
71
+ required: false
72
+ },
73
+ optional: {
74
+ type: Boolean,
75
+ required: false,
76
+ skipCheck: true
77
+ },
78
+ onToggleOptional: {
79
+ type: Function,
80
+ required: false
81
+ },
82
+ required: {
83
+ type: Boolean,
84
+ required: false,
85
+ skipCheck: true
86
+ },
87
+ readonly: {
88
+ type: Boolean,
89
+ required: false,
90
+ skipCheck: true
91
+ },
92
+ type: {
93
+ type: String,
94
+ required: true
95
+ },
96
+ formAction: {
97
+ type: Object,
98
+ required: false
99
+ },
100
+ name: {
101
+ type: String,
102
+ required: false
103
+ },
104
+ field: {
105
+ type: Object,
106
+ required: false
107
+ },
108
+ options: {
109
+ type: Array,
110
+ required: false
111
+ },
112
+ maxLength: {
113
+ type: Number,
114
+ required: false
115
+ },
116
+ autocomplete: {
117
+ type: String,
118
+ required: false
119
+ },
120
+ title: {
121
+ type: String,
122
+ required: false
123
+ },
124
+ level: {
125
+ type: Number,
126
+ required: false
127
+ },
128
+ onRemove: {
129
+ type: Function,
130
+ required: false
131
+ },
132
+ canRemove: {
133
+ type: Boolean,
134
+ required: false
135
+ },
136
+ removeLabel: {
137
+ type: String,
138
+ required: false
139
+ },
140
+ arrayIndex: {
141
+ type: Number,
142
+ required: false
143
+ },
144
+ path: {
145
+ type: String,
146
+ required: true
147
+ },
148
+ valueHelp: {
149
+ type: Object,
150
+ required: false
151
+ },
152
+ singularLabel: {
153
+ type: String,
154
+ required: false
155
+ },
156
+ inputId: {
157
+ type: String,
158
+ required: true
159
+ },
160
+ errorId: {
161
+ type: String,
162
+ required: true
163
+ },
164
+ descId: {
165
+ type: String,
166
+ required: true
167
+ },
168
+ ariaDescribedBy: {
169
+ type: String,
170
+ required: false
171
+ },
172
+ currencyCode: {
173
+ type: String,
174
+ required: false
175
+ },
176
+ unitCode: {
177
+ type: String,
178
+ required: false
179
+ },
180
+ precisionScale: {
181
+ type: Number,
182
+ required: false
183
+ },
184
+ prefix: {
185
+ type: String,
186
+ required: false
187
+ },
188
+ suffix: {
189
+ type: String,
190
+ required: false
191
+ },
192
+ scale: {
193
+ type: Number,
194
+ required: false
195
+ },
196
+ hasAdornment: {
197
+ type: Boolean,
198
+ required: false
199
+ },
200
+ disabled: {
201
+ type: Boolean,
202
+ required: false
203
+ },
204
+ hidden: {
205
+ type: Boolean,
206
+ required: false
207
+ }
208
+ },
209
+ setup(__props) {
210
+ const props = __props;
211
+ const open = ref(false);
212
+ const selectedOptions = computed(() => {
213
+ const v = props.model.value;
214
+ if (!Array.isArray(v) || v.length === 0) return [];
215
+ const set = new Set(v.map((x) => String(x)));
216
+ return (props.options ?? []).filter((o) => set.has(optKey(o)));
217
+ });
218
+ function deselect(key) {
219
+ const current = Array.isArray(props.model.value) ? props.model.value : [];
220
+ props.model.value = current.filter((v) => String(v) !== key);
221
+ }
222
+ function clearAll() {
223
+ props.model.value = [];
224
+ }
225
+ function selectAll() {
226
+ props.model.value = (props.options ?? []).map((o) => optKey(o));
227
+ }
228
+ return (_ctx, _cache) => {
229
+ return openBlock(), createBlock(as_field_shell_default, mergeProps(_ctx.$props, { "field-class": "as-multi-select-field" }), {
230
+ header: withCtx(({ inputId }) => [createElementVNode("span", {
231
+ id: inputId,
232
+ class: "as-field-label"
233
+ }, toDisplayString(__props.label), 9, _hoisted_1)]),
234
+ default: withCtx(({ inputId }) => [createVNode(unref(ComboboxRoot), {
235
+ modelValue: __props.model.value,
236
+ "onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => __props.model.value = $event),
237
+ open: open.value,
238
+ "onUpdate:open": _cache[3] || (_cache[3] = ($event) => open.value = $event),
239
+ multiple: true,
240
+ disabled: __props.disabled || __props.readonly,
241
+ name: __props.name,
242
+ class: "as-multi-select-root"
243
+ }, {
244
+ default: withCtx(() => [createVNode(unref(ComboboxAnchor), {
245
+ class: "as-multi-select-anchor",
246
+ onClick: _cache[1] || (_cache[1] = ($event) => open.value = true)
247
+ }, {
248
+ default: withCtx(() => [
249
+ (openBlock(true), createElementBlock(Fragment, null, renderList(selectedOptions.value, (opt) => {
250
+ return openBlock(), createElementBlock("span", {
251
+ key: unref(optKey)(opt),
252
+ class: "as-multi-select-chip"
253
+ }, [createElementVNode("span", _hoisted_2, toDisplayString(unref(optLabel)(opt)), 1), createElementVNode("button", {
254
+ type: "button",
255
+ class: "as-multi-select-chip-remove",
256
+ disabled: __props.disabled || __props.readonly,
257
+ "aria-label": `Remove ${unref(optLabel)(opt)}`,
258
+ onClick: withModifiers(($event) => deselect(unref(optKey)(opt)), ["stop"])
259
+ }, [..._cache[4] || (_cache[4] = [createElementVNode("span", {
260
+ class: "i-as-close",
261
+ "aria-hidden": "true"
262
+ }, null, -1)])], 8, _hoisted_3)]);
263
+ }), 128)),
264
+ createVNode(unref(ComboboxInput), {
265
+ id: inputId,
266
+ placeholder: selectedOptions.value.length ? "" : __props.placeholder ?? "Select...",
267
+ disabled: __props.disabled,
268
+ readonly: __props.readonly,
269
+ "aria-required": __props.required || void 0,
270
+ "aria-invalid": !!__props.error || void 0,
271
+ "aria-describedby": __props.ariaDescribedBy,
272
+ "aria-label": !__props.label ? __props.name : void 0,
273
+ class: "as-multi-select-input",
274
+ onFocus: _cache[0] || (_cache[0] = ($event) => open.value = true),
275
+ onBlur: __props.onBlur
276
+ }, null, 8, [
277
+ "id",
278
+ "placeholder",
279
+ "disabled",
280
+ "readonly",
281
+ "aria-required",
282
+ "aria-invalid",
283
+ "aria-describedby",
284
+ "aria-label",
285
+ "onBlur"
286
+ ]),
287
+ selectedOptions.value.length > 0 && !__props.disabled && !__props.readonly ? (openBlock(), createElementBlock("button", {
288
+ key: 0,
289
+ type: "button",
290
+ class: "as-multi-select-clear",
291
+ "aria-label": "Clear selection",
292
+ onClick: withModifiers(clearAll, ["stop", "prevent"])
293
+ }, [..._cache[5] || (_cache[5] = [createElementVNode("span", {
294
+ class: "i-as-close",
295
+ "aria-hidden": "true"
296
+ }, null, -1)])])) : createCommentVNode("v-if", true),
297
+ _cache[6] || (_cache[6] = createElementVNode("span", {
298
+ class: "as-multi-select-caret i-as-chevron-down",
299
+ "aria-hidden": "true"
300
+ }, null, -1))
301
+ ]),
302
+ _: 2
303
+ }, 1024), createVNode(unref(ComboboxPortal), null, {
304
+ default: withCtx(() => [createVNode(unref(ComboboxContent), {
305
+ position: "popper",
306
+ side: "bottom",
307
+ "side-offset": 4,
308
+ class: "as-multi-select-content"
309
+ }, {
310
+ default: withCtx(() => [createVNode(unref(ComboboxViewport), { class: "as-multi-select-viewport" }, {
311
+ default: withCtx(() => [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.options, (opt) => {
312
+ return openBlock(), createBlock(unref(ComboboxItem), {
313
+ key: unref(optKey)(opt),
314
+ value: unref(optKey)(opt),
315
+ class: "as-multi-select-item"
316
+ }, {
317
+ default: withCtx(() => [createElementVNode("span", _hoisted_4, toDisplayString(unref(optLabel)(opt)), 1)]),
318
+ _: 2
319
+ }, 1032, ["value"]);
320
+ }), 128)), createVNode(unref(ComboboxEmpty), { class: "as-multi-select-empty" }, {
321
+ default: withCtx(() => [..._cache[7] || (_cache[7] = [createTextVNode("No matches", -1)])]),
322
+ _: 1
323
+ })]),
324
+ _: 1
325
+ }), (__props.options?.length ?? 0) > 2 ? (openBlock(), createElementBlock("div", _hoisted_5, [createElementVNode("button", {
326
+ type: "button",
327
+ class: "as-multi-select-footer-action",
328
+ disabled: selectedOptions.value.length === (__props.options?.length ?? 0),
329
+ onClick: withModifiers(selectAll, ["stop", "prevent"])
330
+ }, " Select all ", 8, _hoisted_6), createElementVNode("button", {
331
+ type: "button",
332
+ class: "as-multi-select-footer-action",
333
+ disabled: selectedOptions.value.length === 0,
334
+ onClick: withModifiers(clearAll, ["stop", "prevent"])
335
+ }, " Clear ", 8, _hoisted_7)])) : createCommentVNode("v-if", true)]),
336
+ _: 1
337
+ })]),
338
+ _: 1
339
+ })]),
340
+ _: 2
341
+ }, 1032, [
342
+ "modelValue",
343
+ "open",
344
+ "disabled",
345
+ "name"
346
+ ])]),
347
+ _: 1
348
+ }, 16);
349
+ };
350
+ }
351
+ });
352
+ //#endregion
353
+ export { as_multi_select_default as t };
@@ -0,0 +1,6 @@
1
+ require("./use-form-context-Dwr8Ai1v.cjs");
2
+ require("./use-as-dropdown-C-Qy7Vt0.cjs");
3
+ require("./as-field-shell-B2iTn-iM.cjs");
4
+ require("./as-variant-picker-DObQZHmm.cjs");
5
+ const require_as_multi_select = require("./as-multi-select-46G-lO3v.cjs");
6
+ module.exports = require_as_multi_select.as_multi_select_default;