@featherk/ui 0.17.1 → 0.18.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 (45) hide show
  1. package/README.md +73 -12
  2. package/dist/address.cjs +2 -0
  3. package/dist/address.cjs.map +1 -0
  4. package/dist/address.mjs +237 -0
  5. package/dist/address.mjs.map +1 -0
  6. package/dist/chunks/picker.css +1 -0
  7. package/dist/chunks/shared-BHFhmbuH.cjs +2 -0
  8. package/dist/chunks/shared-BHFhmbuH.cjs.map +1 -0
  9. package/dist/chunks/shared-CHgC5LLL.mjs +10 -0
  10. package/dist/chunks/shared-CHgC5LLL.mjs.map +1 -0
  11. package/dist/{docs-manifest.d.ts → docs-manifest.d.mts} +3 -0
  12. package/dist/docs-manifest.mjs +25 -0
  13. package/dist/index.cjs +2 -0
  14. package/dist/index.cjs.map +1 -0
  15. package/dist/index.d.ts +1 -0
  16. package/dist/index.mjs +12 -0
  17. package/dist/index.mjs.map +1 -0
  18. package/dist/picker/DateField.vue.d.ts +28 -0
  19. package/dist/picker/DateRangeField.vue.d.ts +34 -0
  20. package/dist/picker/TimeField.vue.d.ts +28 -0
  21. package/dist/picker/errorKey.d.ts +1 -0
  22. package/dist/picker/index.d.ts +4 -0
  23. package/dist/picker/types.d.ts +18 -0
  24. package/dist/picker.cjs +2 -0
  25. package/dist/picker.cjs.map +1 -0
  26. package/dist/picker.mjs +384 -0
  27. package/dist/picker.mjs.map +1 -0
  28. package/dist/table/types.d.ts +1 -1
  29. package/dist/table/useActionCellMenu.d.ts +2 -1
  30. package/dist/table.cjs +2 -0
  31. package/dist/table.cjs.map +1 -0
  32. package/dist/table.mjs +157 -0
  33. package/dist/table.mjs.map +1 -0
  34. package/docs/README.md +4 -4
  35. package/docs/address/USAddress.md +1 -2
  36. package/docs/picker/DateField.md +89 -0
  37. package/docs/picker/DateRangeField.md +99 -0
  38. package/docs/picker/TimeField.md +88 -0
  39. package/package.json +36 -22
  40. package/dist/docs-manifest.js +0 -19
  41. package/dist/featherk-ui.es.js +0 -392
  42. package/dist/featherk-ui.es.js.map +0 -1
  43. package/dist/featherk-ui.umd.js +0 -2
  44. package/dist/featherk-ui.umd.js.map +0 -1
  45. /package/dist/{ui.css → chunks/address.css} +0 -0
package/package.json CHANGED
@@ -1,37 +1,46 @@
1
1
  {
2
2
  "name": "@featherk/ui",
3
- "version": "0.17.1",
4
- "main": "dist/featherk-ui.umd.js",
5
- "module": "dist/featherk-ui.es.js",
3
+ "version": "0.18.0",
4
+ "main": "dist/index.cjs",
5
+ "module": "dist/index.mjs",
6
6
  "types": "dist/index.d.ts",
7
7
  "exports": {
8
8
  ".": {
9
9
  "types": "./dist/index.d.ts",
10
- "import": "./dist/featherk-ui.es.js",
11
- "require": "./dist/featherk-ui.umd.js"
10
+ "import": "./dist/index.mjs",
11
+ "require": "./dist/index.cjs"
12
+ },
13
+ "./address": {
14
+ "types": "./dist/address/index.d.ts",
15
+ "import": "./dist/address.mjs",
16
+ "require": "./dist/address.cjs"
12
17
  },
13
18
  "./table": {
14
19
  "types": "./dist/table/index.d.ts",
15
- "import": "./dist/featherk-ui.es.js",
16
- "require": "./dist/featherk-ui.umd.js"
20
+ "import": "./dist/table.mjs",
21
+ "require": "./dist/table.cjs"
17
22
  },
18
- "./address": {
19
- "types": "./dist/address/index.d.ts",
20
- "import": "./dist/featherk-ui.es.js",
21
- "require": "./dist/featherk-ui.umd.js"
23
+ "./picker": {
24
+ "types": "./dist/picker/index.d.ts",
25
+ "import": "./dist/picker.mjs",
26
+ "require": "./dist/picker.cjs"
22
27
  },
23
28
  "./docs-manifest": {
24
- "types": "./dist/docs-manifest.d.ts",
25
- "import": "./dist/docs-manifest.js",
26
- "default": "./dist/docs-manifest.js"
27
- }
29
+ "types": "./dist/docs-manifest.d.mts",
30
+ "import": "./dist/docs-manifest.mjs",
31
+ "default": "./dist/docs-manifest.mjs"
32
+ },
33
+ "./package.json": "./package.json"
28
34
  },
35
+ "sideEffects": [
36
+ "**/*.css"
37
+ ],
29
38
  "files": [
30
39
  "dist",
31
40
  "docs"
32
41
  ],
33
42
  "scripts": {
34
- "build": "vite build && node ./scripts/inject-css-into-esm.mjs && npm run build:types && npm run build:docs-manifest",
43
+ "build": "vite build && npm run build:types && npm run build:docs-manifest && node ../../scripts/check-entries.mjs && node ../../scripts/check-peers.mjs",
35
44
  "build:types": "vue-tsc -p tsconfig.build.json --emitDeclarationOnly --declaration --declarationDir dist",
36
45
  "build:docs-manifest": "node ../../scripts/generate-docs-manifest.mjs",
37
46
  "test": "vitest --config vitest.config.ts",
@@ -42,15 +51,19 @@
42
51
  },
43
52
  "peerDependencies": {
44
53
  "vue": "^3.5.0",
45
- "@featherk/composables": ">=0.8.2",
54
+ "@featherk/composables": ">=0.18.0",
55
+ "@featherk/icons": ">=0.18.0",
46
56
  "@progress/kendo-svg-icons": "^4.5.0",
47
57
  "@progress/kendo-vue-buttons": "^6.4.1",
58
+ "@progress/kendo-vue-common": "^6.4.1",
59
+ "@progress/kendo-vue-dateinputs": "^6.4.1",
48
60
  "@progress/kendo-vue-dropdowns": "^6.4.1",
49
61
  "@progress/kendo-vue-grid": "^6.4.1",
50
62
  "@progress/kendo-vue-inputs": "^6.4.1",
51
63
  "@progress/kendo-vue-labels": "^6.4.1",
52
64
  "@progress/kendo-vue-layout": "^6.4.1",
53
- "@progress/kendo-vue-popup": "^6.4.1"
65
+ "@progress/kendo-vue-popup": "^6.4.1",
66
+ "@progress/kendo-vue-tooltip": "^6.4.1"
54
67
  },
55
68
  "peerDependenciesMeta": {
56
69
  "@progress/kendo-svg-icons": {
@@ -58,13 +71,11 @@
58
71
  },
59
72
  "@progress/kendo-vue-layout": {
60
73
  "optional": true
61
- },
62
- "@progress/kendo-vue-popup": {
63
- "optional": true
64
74
  }
65
75
  },
66
76
  "devDependencies": {
67
77
  "@featherk/composables": "file:../composables",
78
+ "@featherk/icons": "file:../icons",
68
79
  "@types/node": "^24.5.2",
69
80
  "@vitejs/plugin-vue": "^6.0.1",
70
81
  "@vue/test-utils": "^2.4.6",
@@ -80,7 +91,10 @@
80
91
  "kendo",
81
92
  "components",
82
93
  "ui",
83
- "address"
94
+ "address",
95
+ "datepicker",
96
+ "timepicker",
97
+ "daterangepicker"
84
98
  ],
85
99
  "license": "MIT"
86
100
  }
@@ -1,19 +0,0 @@
1
- // Generated by scripts/generate-docs-manifest.mjs. Do not edit.
2
- export const packageName = "@featherk/ui";
3
-
4
- export const version = "0.17.1";
5
-
6
- export const paths = {
7
- ActionCell: "table/ActionCell.md",
8
- USAddress: "address/USAddress.md",
9
- useActionCellMenu: "table/useActionCellMenu.md",
10
- };
11
-
12
- export const docs = {
13
- ActionCell: "https://cdn.jsdelivr.net/npm/@featherk/ui@0.17.1/docs/table/ActionCell.md",
14
- USAddress: "https://cdn.jsdelivr.net/npm/@featherk/ui@0.17.1/docs/address/USAddress.md",
15
- useActionCellMenu: "https://cdn.jsdelivr.net/npm/@featherk/ui@0.17.1/docs/table/useActionCellMenu.md",
16
- };
17
-
18
- export const docUrl = (name, host = "https://cdn.jsdelivr.net/npm") =>
19
- `${host}/${packageName}@${version}/docs/${paths[name]}`;
@@ -1,392 +0,0 @@
1
- import "./ui.css";
2
- import { defineComponent as F, computed as i, openBlock as v, createElementBlock as E, normalizeClass as O, createElementVNode as V, createVNode as T, unref as c, Fragment as $, createBlock as h, withCtx as I, createTextVNode as S, toDisplayString as C, createCommentVNode as D, normalizeStyle as U, renderList as H, toValue as W, nextTick as J } from "vue";
3
- import { Error as w, Hint as x } from "@progress/kendo-vue-labels";
4
- import { TextBox as b } from "@progress/kendo-vue-inputs";
5
- import { DropDownList as Q } from "@progress/kendo-vue-dropdowns";
6
- import { Button as X } from "@progress/kendo-vue-buttons";
7
- import { useCompositeId as Y, useActiveIdRegistry as ee, usePopupMenu as ae } from "@featherk/composables";
8
- const te = { class: "address1" }, le = {
9
- key: 0,
10
- class: "address2"
11
- }, re = { class: "city" }, ie = { class: "state" }, de = { class: "zip" }, se = {
12
- key: 1,
13
- class: "messages"
14
- }, q = "Enter a 5 or 9 digit zip code.", ne = "Incomplete address.", oe = /* @__PURE__ */ F({
15
- __name: "USAddress",
16
- props: {
17
- id: {},
18
- address: {},
19
- required: { type: Boolean, default: !0 },
20
- messageScope: { default: "fieldset" },
21
- messages: {},
22
- showAddress2: { type: Boolean, default: !0 }
23
- },
24
- setup(t) {
25
- const a = t, s = {
26
- placeholder: {
27
- address1: "Address Line 1",
28
- address2: "Address Line 2",
29
- city: "City",
30
- zip: "00000-0000"
31
- },
32
- fieldset: {
33
- error: {
34
- required: "Required fields are missing.",
35
- zip: q
36
- },
37
- hint: {
38
- address: "Enter address information."
39
- }
40
- },
41
- field: {
42
- error: {
43
- address1: "Required",
44
- address2: "",
45
- city: "Required",
46
- state: "Required",
47
- zip: q
48
- },
49
- hint: {
50
- address1: "Enter address line 1.",
51
- address2: "Optional",
52
- city: "",
53
- state: "",
54
- zip: q
55
- }
56
- }
57
- }, y = (r) => ({
58
- placeholder: {
59
- address1: r?.placeholder?.address1 ?? s.placeholder.address1,
60
- address2: r?.placeholder?.address2 ?? s.placeholder.address2,
61
- city: r?.placeholder?.city ?? s.placeholder.city,
62
- zip: r?.placeholder?.zip ?? s.placeholder.zip
63
- },
64
- fieldset: {
65
- error: {
66
- required: r?.fieldset?.error?.required ?? s.fieldset.error.required,
67
- zip: r?.fieldset?.error?.zip ?? s.fieldset.error.zip
68
- },
69
- hint: {
70
- address: r?.fieldset?.hint?.address ?? s.fieldset.hint.address
71
- }
72
- },
73
- field: {
74
- error: {
75
- address1: r?.field?.error?.address1 ?? s.field.error.address1,
76
- address2: r?.field?.error?.address2 ?? s.field.error.address2,
77
- city: r?.field?.error?.city ?? s.field.error.city,
78
- state: r?.field?.error?.state ?? s.field.error.state,
79
- zip: r?.field?.error?.zip ?? s.field.error.zip
80
- },
81
- hint: {
82
- address1: r?.field?.hint?.address1 ?? s.field.hint.address1,
83
- address2: r?.field?.hint?.address2 ?? s.field.hint.address2,
84
- city: r?.field?.hint?.city ?? s.field.hint.city,
85
- state: r?.field?.hint?.state ?? s.field.hint.state,
86
- zip: r?.field?.hint?.zip ?? s.field.hint.zip
87
- }
88
- }
89
- }), n = i(() => y(a.messages)), f = i(() => a.messageScope === "field"), z = i(() => a.messageScope === "fieldset"), u = i(() => a.required), m = i(() => u.value), o = i(() => ({
90
- address1: `${a.id}-address1`,
91
- address2: `${a.id}-address2`,
92
- city: `${a.id}-city`,
93
- state: `${a.id}-state`,
94
- zip: `${a.id}-zip`
95
- })), e = i(() => a.address), p = i(() => e.value.address1Valid.value && e.value.cityValid.value && e.value.stateValid.value), k = i(() => e.value.formData.address1.trim() !== "" || e.value.formData.address2.trim() !== "" || e.value.formData.city.trim() !== "" || (e.value.formData.state ?? "").trim() !== "" || e.value.formData.zip.replace(/\D/g, "") !== ""), _ = i(() => {
96
- if (e.value.optionalZipInvalid)
97
- return e.value.optionalZipInvalid.value;
98
- const r = e.value.formData.zip.replace(/\D/g, "");
99
- return !u.value && k.value && r.length !== 5 && r.length !== 9;
100
- }), l = i(() => e.value.optionalPartialInvalid ? e.value.optionalPartialInvalid.value : !u.value && k.value && !e.value.addressValid.value), d = i(() => u.value || !l.value ? !1 : e.value.optionalFeedbackActive ? e.value.optionalFeedbackActive.value : !1), g = i(() => m.value && !e.value.address1Valid.value || d.value && e.value.formData.address1.trim() === ""), R = i(() => m.value && !e.value.cityValid.value || d.value && e.value.formData.city.trim() === ""), P = i(() => m.value && !e.value.stateValid.value || d.value && (e.value.formData.state ?? "").trim() === ""), M = i(() => m.value && !e.value.zipValid.value || d.value && _.value), A = i(() => u.value ? e.value.addressValidate.value : d.value), K = i(() => u.value ? e.value.address1Valid.value : !g.value), L = i(() => u.value ? e.value.cityValid.value : !R.value), B = i(() => u.value ? e.value.stateValid.value : !P.value), N = i(() => u.value ? e.value.zipValid.value : !M.value), Z = i(() => {
101
- const r = n.value.placeholder.address2;
102
- return z.value && u.value ? `${r} (Optional)` : r;
103
- }), j = i(() => {
104
- const r = [];
105
- return p.value || r.push(n.value.fieldset.error.required), e.value.zipValid.value || r.push(n.value.fieldset.error.zip), r.join(" ");
106
- }), G = i(() => {
107
- const r = [ne];
108
- return _.value && r.push(n.value.fieldset.error.zip), r.join(" ");
109
- });
110
- return (r, ve) => (v(), E("div", {
111
- class: O(["fkui-us-address", { "fkui-us-address--fieldset-scope": z.value }])
112
- }, [
113
- V("div", te, [
114
- T(c(b), {
115
- id: o.value.address1,
116
- placeholder: n.value.placeholder.address1,
117
- value: e.value.formData.address1,
118
- valid: K.value,
119
- validate: A.value,
120
- validityStyles: A.value,
121
- onInput: e.value.onAddress1Input
122
- }, null, 8, ["id", "placeholder", "value", "valid", "validate", "validityStyles", "onInput"]),
123
- f.value ? (v(), E($, { key: 0 }, [
124
- g.value ? (v(), h(c(w), { key: 0 }, {
125
- default: I(() => [
126
- S(C(n.value.field.error.address1), 1)
127
- ]),
128
- _: 1
129
- })) : (v(), h(c(x), { key: 1 }, {
130
- default: I(() => [
131
- S(C(n.value.field.hint.address1), 1)
132
- ]),
133
- _: 1
134
- }))
135
- ], 64)) : D("", !0)
136
- ]),
137
- t.showAddress2 ? (v(), E("div", le, [
138
- T(c(b), {
139
- id: o.value.address2,
140
- placeholder: Z.value,
141
- value: e.value.formData.address2,
142
- onInput: e.value.onAddress2Input
143
- }, null, 8, ["id", "placeholder", "value", "onInput"]),
144
- f.value ? (v(), h(c(x), { key: 0 }, {
145
- default: I(() => [
146
- S(C(n.value.field.hint.address2), 1)
147
- ]),
148
- _: 1
149
- })) : D("", !0)
150
- ])) : D("", !0),
151
- V("div", re, [
152
- T(c(b), {
153
- id: o.value.city,
154
- placeholder: n.value.placeholder.city,
155
- value: e.value.formData.city,
156
- valid: L.value,
157
- validate: A.value,
158
- validityStyles: A.value,
159
- onInput: e.value.onCityInput
160
- }, null, 8, ["id", "placeholder", "value", "valid", "validate", "validityStyles", "onInput"]),
161
- f.value && R.value ? (v(), h(c(w), { key: 0 }, {
162
- default: I(() => [
163
- S(C(n.value.field.error.city), 1)
164
- ]),
165
- _: 1
166
- })) : D("", !0)
167
- ]),
168
- V("div", ie, [
169
- T(c(Q), {
170
- id: o.value.state,
171
- value: e.value.formData.state,
172
- onChange: e.value.onStateChange,
173
- defaultItem: e.value.stateDefaultItem,
174
- dataItems: e.value.stateOptions,
175
- textField: "label",
176
- valueField: "value",
177
- dataItemKey: "value",
178
- valuePrimitive: !0,
179
- valid: B.value,
180
- validate: A.value,
181
- validityStyles: A.value
182
- }, null, 8, ["id", "value", "onChange", "defaultItem", "dataItems", "valid", "validate", "validityStyles"]),
183
- f.value && P.value ? (v(), h(c(w), { key: 0 }, {
184
- default: I(() => [
185
- S(C(n.value.field.error.state), 1)
186
- ]),
187
- _: 1
188
- })) : D("", !0)
189
- ]),
190
- V("div", de, [
191
- T(c(b), {
192
- id: o.value.zip,
193
- placeholder: n.value.placeholder.zip,
194
- wrapperClass: e.value.zipWrapperClass,
195
- value: e.value.zipDisplay.value,
196
- onInput: e.value.onZipInput,
197
- valid: N.value,
198
- validate: A.value,
199
- validityStyles: A.value,
200
- style: { width: "100%" }
201
- }, null, 8, ["id", "placeholder", "wrapperClass", "value", "onInput", "valid", "validate", "validityStyles"]),
202
- f.value && M.value ? (v(), h(c(w), { key: 0 }, {
203
- default: I(() => [
204
- S(C(n.value.field.error.zip), 1)
205
- ]),
206
- _: 1
207
- })) : D("", !0),
208
- f.value && !M.value ? (v(), h(c(x), { key: 1 }, {
209
- default: I(() => [
210
- S(C(n.value.field.hint.zip), 1)
211
- ]),
212
- _: 1
213
- })) : D("", !0)
214
- ]),
215
- z.value ? (v(), E("div", se, [
216
- m.value && !e.value.addressValid.value ? (v(), h(c(w), { key: 0 }, {
217
- default: I(() => [
218
- S(C(j.value), 1)
219
- ]),
220
- _: 1
221
- })) : d.value ? (v(), h(c(w), { key: 1 }, {
222
- default: I(() => [
223
- S(C(G.value), 1)
224
- ]),
225
- _: 1
226
- })) : (v(), h(c(x), { key: 2 }, {
227
- default: I(() => [
228
- S(C(n.value.fieldset.hint.address), 1)
229
- ]),
230
- _: 1
231
- }))
232
- ])) : D("", !0)
233
- ], 2));
234
- }
235
- }), ue = (t, a) => {
236
- const s = t.__vccOpts || t;
237
- for (const [y, n] of a)
238
- s[y] = n;
239
- return s;
240
- }, Ie = /* @__PURE__ */ ue(oe, [["__scopeId", "data-v-8aeb035b"]]), ce = ["id", "colspan", "aria-colindex", "aria-selected", "data-grid-col-index"], Se = /* @__PURE__ */ F({
241
- inheritAttrs: !1,
242
- __name: "ActionCell",
243
- props: {
244
- id: {},
245
- className: {},
246
- style: {},
247
- colSpan: {},
248
- ariaColumnIndex: {},
249
- isSelected: { type: Boolean },
250
- columnIndex: {},
251
- dataItem: {},
252
- config: {},
253
- menuController: {},
254
- tabIndex: { default: -1 }
255
- },
256
- setup(t) {
257
- const a = t, s = Y("action-cell"), y = (o) => a.menuController.getTriggerId(o, a.dataItem), n = (o) => a.menuController.registry.isIdActive(y(o)), f = (o) => typeof o.items == "function", z = (o, e) => {
258
- a.menuController.registry.register(
259
- y(o),
260
- e
261
- );
262
- }, u = (o) => {
263
- if (!f(o)) {
264
- a.menuController.handleDirectAction?.(o, a.dataItem);
265
- return;
266
- }
267
- a.menuController.handleTriggerClick(y(o));
268
- }, m = (o, ...e) => {
269
- f(o) && a.menuController.handleTriggerKeydown(y(o), ...e);
270
- };
271
- return (o, e) => (v(), E("td", {
272
- id: t.id ?? c(s).instanceId,
273
- class: O(["fkui-action-cell", "k-table-td", t.className]),
274
- style: U(t.style),
275
- colspan: t.colSpan,
276
- role: "gridcell",
277
- "aria-colindex": t.ariaColumnIndex,
278
- "aria-selected": t.isSelected,
279
- "data-grid-col-index": t.columnIndex
280
- }, [
281
- (v(!0), E($, null, H(t.config.triggers, (p) => (v(), h(c(X), {
282
- key: p.key,
283
- ref_for: !0,
284
- ref: f(p) ? (k) => z(p, k) : void 0,
285
- id: c(s).compose(p.key, "trigger"),
286
- "svg-icon": p.icon,
287
- type: "button",
288
- "fill-mode": "flat",
289
- "theme-color": "primary",
290
- rounded: "full",
291
- "aria-label": p.ariaLabel,
292
- "aria-haspopup": f(p) ? "menu" : void 0,
293
- "aria-expanded": f(p) ? n(p) : void 0,
294
- disabled: p.disabled?.(t.dataItem),
295
- tabindex: t.tabIndex,
296
- onClick: (k) => u(p),
297
- onKeydown: (k) => m(p, k)
298
- }, null, 8, ["id", "svg-icon", "aria-label", "aria-haspopup", "aria-expanded", "disabled", "tabindex", "onClick", "onKeydown"]))), 128))
299
- ], 14, ce));
300
- }
301
- }), Ce = (t) => {
302
- const a = ee();
303
- t.group?.register(a);
304
- const s = t.getTriggerId ?? ((l, d) => `${l.key}:${t.getRowId(d)}`), y = i(() => {
305
- const l = a.activeId.value?.split(":")[0];
306
- return t.config.triggers.find((d) => d.key === l) ?? null;
307
- }), n = i(() => {
308
- const l = a.activeId.value?.split(":").slice(1).join(":");
309
- return l === void 0 ? null : W(t.rows).find(
310
- (d) => String(t.getRowId(d)) === l
311
- ) ?? null;
312
- }), f = i(() => {
313
- const l = n.value, d = y.value;
314
- return l && d ? d.items?.(l) ?? [] : [];
315
- }), z = i(() => {
316
- const l = n.value, d = y.value;
317
- return l && d && typeof d.items == "function" && d.title ? d.title(l) : null;
318
- }), u = ae({
319
- isOpen: a.isActive,
320
- triggerRef: a.activeElement,
321
- menuRef: t.menuRef,
322
- popupContentRef: t.popupContentRef,
323
- triggerMode: t.triggerMode ?? "button",
324
- anchor: t.anchor ?? !0,
325
- resolveFocusTarget: t.resolveFocusTarget,
326
- focusTargetContainerSelector: t.focusTargetContainerSelector,
327
- requestShow: (l) => {
328
- typeof l == "string" && a.activate(l);
329
- },
330
- requestHide: () => a.deactivate(),
331
- menuLabel: z
332
- });
333
- let m = 0;
334
- const o = (l) => {
335
- const d = ++m;
336
- if (t.group?.deactivateOthers(a), a.isActive.value && !a.isIdActive(l)) {
337
- a.deactivate(), J(() => {
338
- d === m && u.handleTriggerClick(l);
339
- });
340
- return;
341
- }
342
- u.handleTriggerClick(l);
343
- }, e = (l, d) => {
344
- m++, t.group?.deactivateOthers(a), a.deactivate(), t.onActionSelected(void 0, d, l);
345
- }, p = (l, ...d) => {
346
- const g = d[0];
347
- if (g.key === "Enter" || g.code === "Space") {
348
- g.preventDefault(), o(l);
349
- return;
350
- }
351
- u.handleTriggerKeydown(g, l);
352
- }, k = (l) => {
353
- l.key === "Escape" && u.handleMenuEscape(l);
354
- }, _ = (l) => {
355
- const d = n.value, g = y.value;
356
- u.handleMenuSelect(l, () => {
357
- d && g && t.onActionSelected(l.item, d, g);
358
- });
359
- };
360
- return {
361
- actionCellProps: {
362
- config: t.config,
363
- menuController: {
364
- registry: a,
365
- getTriggerId: s,
366
- handleTriggerClick: o,
367
- handleDirectAction: e,
368
- handleTriggerKeydown: p
369
- }
370
- },
371
- popupProps: i(() => ({
372
- show: a.isActive.value,
373
- offset: u.offset.value,
374
- onClose: u.handlePopupClose
375
- })),
376
- menuProps: i(() => ({
377
- items: f.value,
378
- vertical: !0,
379
- onKeydown: k,
380
- onSelect: _
381
- })),
382
- activeRow: n,
383
- activeTrigger: y,
384
- activeTitle: z
385
- };
386
- };
387
- export {
388
- Se as ActionCell,
389
- Ie as USAddress,
390
- Ce as useActionCellMenu
391
- };
392
- //# sourceMappingURL=featherk-ui.es.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"featherk-ui.es.js","sources":["../src/address/USAddress.vue","../src/table/ActionCell.vue","../src/table/useActionCellMenu.ts"],"sourcesContent":["<template>\n <div\n class=\"fkui-us-address\"\n :class=\"{ 'fkui-us-address--fieldset-scope': fieldsetScope }\"\n >\n <div class=\"address1\">\n <TextBox\n :id=\"fieldIds.address1\"\n :placeholder=\"resolvedMessages.placeholder.address1\"\n :value=\"address.formData.address1\"\n :valid=\"address1DisplayValid\"\n :validate=\"validationStylesActive\"\n :validityStyles=\"validationStylesActive\"\n @input=\"address.onAddress1Input\"\n />\n <template v-if=\"fieldScope\">\n <Error v-if=\"showAddress1Error\">\n {{ resolvedMessages.field.error.address1 }}\n </Error>\n <Hint v-else>{{ resolvedMessages.field.hint.address1 }}</Hint>\n </template>\n </div>\n\n <div v-if=\"showAddress2\" class=\"address2\">\n <TextBox\n :id=\"fieldIds.address2\"\n :placeholder=\"address2PlaceholderDisplay\"\n :value=\"address.formData.address2\"\n @input=\"address.onAddress2Input\"\n />\n <Hint v-if=\"fieldScope\">{{ resolvedMessages.field.hint.address2 }}</Hint>\n </div>\n\n <div class=\"city\">\n <TextBox\n :id=\"fieldIds.city\"\n :placeholder=\"resolvedMessages.placeholder.city\"\n :value=\"address.formData.city\"\n :valid=\"cityDisplayValid\"\n :validate=\"validationStylesActive\"\n :validityStyles=\"validationStylesActive\"\n @input=\"address.onCityInput\"\n />\n <Error v-if=\"fieldScope && showCityError\">\n {{ resolvedMessages.field.error.city }}\n </Error>\n </div>\n\n <div class=\"state\">\n <DropDownList\n :id=\"fieldIds.state\"\n :value=\"address.formData.state\"\n @change=\"address.onStateChange\"\n :defaultItem=\"address.stateDefaultItem\"\n :dataItems=\"address.stateOptions\"\n textField=\"label\"\n valueField=\"value\"\n dataItemKey=\"value\"\n :valuePrimitive=\"true\"\n :valid=\"stateDisplayValid\"\n :validate=\"validationStylesActive\"\n :validityStyles=\"validationStylesActive\"\n />\n <Error v-if=\"fieldScope && showStateError\">\n {{ resolvedMessages.field.error.state }}\n </Error>\n </div>\n\n <div class=\"zip\">\n <TextBox\n :id=\"fieldIds.zip\"\n :placeholder=\"resolvedMessages.placeholder.zip\"\n :wrapperClass=\"address.zipWrapperClass\"\n :value=\"address.zipDisplay.value\"\n @input=\"address.onZipInput\"\n :valid=\"zipDisplayValid\"\n :validate=\"validationStylesActive\"\n :validityStyles=\"validationStylesActive\"\n :style=\"{ width: '100%' }\"\n />\n <Error v-if=\"fieldScope && showZipError\">\n {{ resolvedMessages.field.error.zip }}\n </Error>\n <Hint v-if=\"fieldScope && !showZipError\">\n {{ resolvedMessages.field.hint.zip }}\n </Hint>\n </div>\n\n <div v-if=\"fieldsetScope\" class=\"messages\">\n <Error v-if=\"showErrors && !address.addressValid.value\">\n {{ fieldsetErrorMessage }}\n </Error>\n <Error v-else-if=\"showOptionalFeedback\">\n {{ optionalFieldsetErrorMessage }}\n </Error>\n <Hint v-else>{{ resolvedMessages.fieldset.hint.address }}</Hint>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from \"vue\";\nimport { Error, Hint } from \"@progress/kendo-vue-labels\";\nimport { TextBox } from \"@progress/kendo-vue-inputs\";\nimport { DropDownList } from \"@progress/kendo-vue-dropdowns\";\nimport type {\n USAddressMessageScope,\n USAddressMessages,\n USAddressViewModel,\n} from \"./types\";\n\nconst props = withDefaults(\n defineProps<{\n id: string;\n address: USAddressViewModel;\n required?: boolean;\n messageScope?: USAddressMessageScope;\n messages?: USAddressMessages;\n showAddress2?: boolean;\n }>(),\n {\n required: true,\n messageScope: \"fieldset\",\n showAddress2: true,\n },\n);\n\nconst ZIP_CODE_MESSAGE = \"Enter a 5 or 9 digit zip code.\";\nconst OPTIONAL_FIELDS_MESSAGE = \"Incomplete address.\";\n\ntype USAddressResolvedMessages = {\n placeholder: {\n address1: string;\n address2: string;\n city: string;\n zip: string;\n };\n fieldset: {\n error: {\n required: string;\n zip: string;\n };\n hint: {\n address: string;\n };\n };\n field: {\n error: {\n address1: string;\n address2: string;\n city: string;\n state: string;\n zip: string;\n };\n hint: {\n address1: string;\n address2: string;\n city: string;\n state: string;\n zip: string;\n };\n };\n};\n\nconst DEFAULT_MESSAGES: USAddressResolvedMessages = {\n placeholder: {\n address1: \"Address Line 1\",\n address2: \"Address Line 2\",\n city: \"City\",\n zip: \"00000-0000\",\n },\n fieldset: {\n error: {\n required: \"Required fields are missing.\",\n zip: ZIP_CODE_MESSAGE,\n },\n hint: {\n address: \"Enter address information.\",\n },\n },\n field: {\n error: {\n address1: \"Required\",\n address2: \"\",\n city: \"Required\",\n state: \"Required\",\n zip: ZIP_CODE_MESSAGE,\n },\n hint: {\n address1: \"Enter address line 1.\",\n address2: \"Optional\",\n city: \"\",\n state: \"\",\n zip: ZIP_CODE_MESSAGE,\n },\n },\n};\n\nconst resolveMessages = (\n source?: USAddressMessages,\n): USAddressResolvedMessages => {\n return {\n placeholder: {\n address1:\n source?.placeholder?.address1 ?? DEFAULT_MESSAGES.placeholder.address1,\n address2:\n source?.placeholder?.address2 ?? DEFAULT_MESSAGES.placeholder.address2,\n city: source?.placeholder?.city ?? DEFAULT_MESSAGES.placeholder.city,\n zip: source?.placeholder?.zip ?? DEFAULT_MESSAGES.placeholder.zip,\n },\n fieldset: {\n error: {\n required:\n source?.fieldset?.error?.required ??\n DEFAULT_MESSAGES.fieldset.error.required,\n zip:\n source?.fieldset?.error?.zip ?? DEFAULT_MESSAGES.fieldset.error.zip,\n },\n hint: {\n address:\n source?.fieldset?.hint?.address ??\n DEFAULT_MESSAGES.fieldset.hint.address,\n },\n },\n field: {\n error: {\n address1:\n source?.field?.error?.address1 ??\n DEFAULT_MESSAGES.field.error.address1,\n address2:\n source?.field?.error?.address2 ??\n DEFAULT_MESSAGES.field.error.address2,\n city: source?.field?.error?.city ?? DEFAULT_MESSAGES.field.error.city,\n state:\n source?.field?.error?.state ?? DEFAULT_MESSAGES.field.error.state,\n zip: source?.field?.error?.zip ?? DEFAULT_MESSAGES.field.error.zip,\n },\n hint: {\n address1:\n source?.field?.hint?.address1 ?? DEFAULT_MESSAGES.field.hint.address1,\n address2:\n source?.field?.hint?.address2 ?? DEFAULT_MESSAGES.field.hint.address2,\n city: source?.field?.hint?.city ?? DEFAULT_MESSAGES.field.hint.city,\n state: source?.field?.hint?.state ?? DEFAULT_MESSAGES.field.hint.state,\n zip: source?.field?.hint?.zip ?? DEFAULT_MESSAGES.field.hint.zip,\n },\n },\n };\n};\n\nconst resolvedMessages = computed(() => resolveMessages(props.messages));\n\nconst fieldScope = computed(() => {\n return props.messageScope === \"field\";\n});\n\nconst fieldsetScope = computed(() => {\n return props.messageScope === \"fieldset\";\n});\n\nconst isRequired = computed(() => props.required);\n\nconst showErrors = computed(() => isRequired.value);\n\nconst fieldIds = computed(() => ({\n address1: `${props.id}-address1`,\n address2: `${props.id}-address2`,\n city: `${props.id}-city`,\n state: `${props.id}-state`,\n zip: `${props.id}-zip`,\n}));\n\nconst address = computed(() => props.address);\n\nconst nonZipRequiredFieldsValid = computed(() => {\n return (\n address.value.address1Valid.value &&\n address.value.cityValid.value &&\n address.value.stateValid.value\n );\n});\n\nconst hasAnyOptionalInput = computed(() => {\n return (\n address.value.formData.address1.trim() !== \"\" ||\n address.value.formData.address2.trim() !== \"\" ||\n address.value.formData.city.trim() !== \"\" ||\n (address.value.formData.state ?? \"\").trim() !== \"\" ||\n address.value.formData.zip.replace(/\\D/g, \"\") !== \"\"\n );\n});\n\nconst optionalZipInvalid = computed(() => {\n if (address.value.optionalZipInvalid) {\n return address.value.optionalZipInvalid.value;\n }\n\n const zipDigits = address.value.formData.zip.replace(/\\D/g, \"\");\n return (\n !isRequired.value &&\n hasAnyOptionalInput.value &&\n zipDigits.length !== 5 &&\n zipDigits.length !== 9\n );\n});\n\nconst optionalPartialInvalid = computed(() => {\n if (address.value.optionalPartialInvalid) {\n return address.value.optionalPartialInvalid.value;\n }\n\n return (\n !isRequired.value &&\n hasAnyOptionalInput.value &&\n !address.value.addressValid.value\n );\n});\n\nconst showOptionalFeedback = computed(() => {\n if (isRequired.value || !optionalPartialInvalid.value) {\n return false;\n }\n\n if (address.value.optionalFeedbackActive) {\n return address.value.optionalFeedbackActive.value;\n }\n\n return false;\n});\n\nconst showAddress1Error = computed(() => {\n return (\n (showErrors.value && !address.value.address1Valid.value) ||\n (showOptionalFeedback.value &&\n address.value.formData.address1.trim() === \"\")\n );\n});\n\nconst showCityError = computed(() => {\n return (\n (showErrors.value && !address.value.cityValid.value) ||\n (showOptionalFeedback.value && address.value.formData.city.trim() === \"\")\n );\n});\n\nconst showStateError = computed(() => {\n return (\n (showErrors.value && !address.value.stateValid.value) ||\n (showOptionalFeedback.value &&\n (address.value.formData.state ?? \"\").trim() === \"\")\n );\n});\n\nconst showZipError = computed(() => {\n return (\n (showErrors.value && !address.value.zipValid.value) ||\n (showOptionalFeedback.value && optionalZipInvalid.value)\n );\n});\n\nconst validationStylesActive = computed(() => {\n return isRequired.value\n ? address.value.addressValidate.value\n : showOptionalFeedback.value;\n});\n\nconst address1DisplayValid = computed(() => {\n return isRequired.value\n ? address.value.address1Valid.value\n : !showAddress1Error.value;\n});\n\nconst cityDisplayValid = computed(() => {\n return isRequired.value\n ? address.value.cityValid.value\n : !showCityError.value;\n});\n\nconst stateDisplayValid = computed(() => {\n return isRequired.value\n ? address.value.stateValid.value\n : !showStateError.value;\n});\n\nconst zipDisplayValid = computed(() => {\n return isRequired.value ? address.value.zipValid.value : !showZipError.value;\n});\n\nconst address2PlaceholderDisplay = computed(() => {\n const basePlaceholder = resolvedMessages.value.placeholder.address2;\n\n if (fieldsetScope.value && isRequired.value) {\n return `${basePlaceholder} (Optional)`;\n }\n return basePlaceholder;\n});\n\nconst fieldsetErrorMessage = computed(() => {\n const messages: string[] = [];\n\n if (!nonZipRequiredFieldsValid.value) {\n messages.push(resolvedMessages.value.fieldset.error.required);\n }\n\n if (!address.value.zipValid.value) {\n messages.push(resolvedMessages.value.fieldset.error.zip);\n }\n\n return messages.join(\" \");\n});\n\nconst optionalFieldsetErrorMessage = computed(() => {\n const messages: string[] = [OPTIONAL_FIELDS_MESSAGE];\n\n if (optionalZipInvalid.value) {\n messages.push(resolvedMessages.value.fieldset.error.zip);\n }\n\n return messages.join(\" \");\n});\n</script>\n\n<style scoped>\n.fkui-us-address {\n display: grid;\n grid-template-columns: 2fr 1fr 1fr;\n grid-template-areas:\n \"address1 address1 address1\"\n \"address2 address2 address2\"\n \"city state zip\"\n \"messages messages messages\";\n gap: 0.75rem;\n margin-bottom: 1rem;\n\n .address1 {\n grid-area: address1;\n }\n\n .address2 {\n grid-area: address2;\n }\n\n .city {\n grid-area: city;\n }\n\n .state {\n grid-area: state;\n }\n\n .zip {\n grid-area: zip;\n }\n\n .messages {\n grid-area: messages;\n }\n\n :deep(.fk-zip-textbox) {\n min-width: 100%;\n }\n}\n\n.fkui-us-address--fieldset-scope {\n row-gap: 0.5rem;\n\n .messages {\n margin-top: -0.375rem;\n }\n}\n</style>\n","<template>\n <td\n :id=\"id ?? ids.instanceId\"\n :class=\"['fkui-action-cell', 'k-table-td', className]\"\n :style=\"style\"\n :colspan=\"colSpan\"\n role=\"gridcell\"\n :aria-colindex=\"ariaColumnIndex\"\n :aria-selected=\"isSelected\"\n :data-grid-col-index=\"columnIndex\"\n >\n <Button\n v-for=\"trigger in config.triggers\"\n :key=\"trigger.key\"\n :ref=\"\n hasMenu(trigger)\n ? (element) => registerTrigger(trigger, element)\n : undefined\n \"\n :id=\"ids.compose(trigger.key, 'trigger')\"\n :svg-icon=\"trigger.icon\"\n type=\"button\"\n fill-mode=\"flat\"\n theme-color=\"primary\"\n rounded=\"full\"\n :aria-label=\"trigger.ariaLabel\"\n :aria-haspopup=\"hasMenu(trigger) ? 'menu' : undefined\"\n :aria-expanded=\"hasMenu(trigger) ? isTriggerActive(trigger) : undefined\"\n :disabled=\"trigger.disabled?.(dataItem)\"\n :tabindex=\"tabIndex\"\n @click=\"onTriggerClick(trigger)\"\n @keydown=\"onTriggerKeydown(trigger, $event)\"\n />\n </td>\n</template>\n\n<script setup lang=\"ts\">\nimport type { ComponentPublicInstance } from \"vue\";\nimport { Button } from \"@progress/kendo-vue-buttons\";\nimport type { GridCellProps } from \"@progress/kendo-vue-grid\";\nimport {\n useCompositeId,\n type RegisterableElement,\n} from \"@featherk/composables\";\nimport type {\n ActionCellConfig,\n ActionCellMenuController,\n ActionCellTrigger,\n} from \"./types\";\n\ndefineOptions({ inheritAttrs: false });\n\ntype ActionCellProps = Partial<\n Pick<\n GridCellProps,\n | \"id\"\n | \"className\"\n | \"style\"\n | \"colSpan\"\n | \"ariaColumnIndex\"\n | \"isSelected\"\n | \"columnIndex\"\n >\n> & {\n dataItem: any;\n config: ActionCellConfig<any>;\n menuController: ActionCellMenuController<any>;\n tabIndex?: number;\n};\n\nconst props = withDefaults(defineProps<ActionCellProps>(), {\n tabIndex: -1,\n});\n\nconst ids = useCompositeId(\"action-cell\");\n\nconst getTriggerId = (trigger: ActionCellTrigger<any>) =>\n props.menuController.getTriggerId(trigger, props.dataItem);\n\nconst isTriggerActive = (trigger: ActionCellTrigger<any>) =>\n props.menuController.registry.isIdActive(getTriggerId(trigger));\n\nconst hasMenu = (trigger: ActionCellTrigger<any>) =>\n typeof trigger.items === \"function\";\n\nconst registerTrigger = (\n trigger: ActionCellTrigger<any>,\n element: Element | ComponentPublicInstance | null,\n) => {\n props.menuController.registry.register(\n getTriggerId(trigger),\n element as RegisterableElement,\n );\n};\n\nconst onTriggerClick = (trigger: ActionCellTrigger<any>) => {\n if (!hasMenu(trigger)) {\n props.menuController.handleDirectAction?.(trigger, props.dataItem);\n return;\n }\n props.menuController.handleTriggerClick(getTriggerId(trigger));\n};\n\nconst onTriggerKeydown = (\n trigger: ActionCellTrigger<any>,\n ...args: unknown[]\n) => {\n if (!hasMenu(trigger)) return;\n props.menuController.handleTriggerKeydown(getTriggerId(trigger), ...args);\n};\n</script>\n","import {\n computed,\n nextTick,\n toValue,\n type ComputedRef,\n type MaybeRefOrGetter,\n} from \"vue\";\nimport {\n useActiveIdRegistry,\n usePopupMenu,\n type KendoMenuSelectEvent,\n type PopupMenuAnchorOptions,\n type PopupMenuElementRef,\n type PopupMenuOffset,\n type PopupMenuTriggerMode,\n type UseExclusiveGroupReturn,\n} from \"@featherk/composables\";\nimport type {\n ActionCellConfig,\n ActionCellDataItem,\n ActionCellMenuController,\n ActionCellMenuItem,\n} from \"./types\";\n\nexport type UseActionCellMenuOptions<\n TData extends ActionCellDataItem = ActionCellDataItem,\n TConfig extends ActionCellConfig<TData> = ActionCellConfig<TData>,\n> = {\n /** Repeatable trigger configuration, rendered by every `ActionCell` instance. */\n config: TConfig;\n /** All rows currently rendered; used to resolve the active row from its registry id. */\n rows: MaybeRefOrGetter<TData[]>;\n /** Derives a stable row id used to build the default registry id for each trigger. */\n getRowId: (row: TData) => string | number;\n /**\n * Overrides the registry ID formatting while preserving `<trigger.key>:<rowId>` semantics.\n * Active row and trigger resolution parse the first colon-separated segment as the trigger\n * key and the remaining segments as the row ID.\n */\n getTriggerId?: (trigger: TConfig[\"triggers\"][number], row: TData) => string;\n /** Ref to the single shared Kendo Menu instance. */\n menuRef: PopupMenuElementRef;\n /**\n * Optional custom popup measurement source forwarded to `usePopupMenu`.\n * Normal Kendo Popup markup is measured from the nearest `.k-popup` border\n * box automatically, including `activeTitle` and other sibling content.\n */\n popupContentRef?: PopupMenuElementRef;\n /** Forwarded to `usePopupMenu`. Defaults to `\"button\"`. */\n triggerMode?: PopupMenuTriggerMode;\n /** Forwarded to `usePopupMenu`. Defaults to `true` for shared-popup positioning. */\n anchor?: PopupMenuAnchorOptions | true;\n /** Forwarded to `usePopupMenu`. */\n resolveFocusTarget?: () => HTMLElement | null;\n /** Forwarded to `usePopupMenu`. */\n focusTargetContainerSelector?: string;\n /** Coordinates mutual exclusivity with other active-id registries in this group. */\n group?: UseExclusiveGroupReturn;\n /**\n * Runs after a menu item is selected, with its original item and resolved row/trigger.\n * Direct-action triggers have no menu item and pass `undefined`.\n */\n onActionSelected: (\n item: ActionCellMenuItem | undefined,\n row: TData,\n trigger: TConfig[\"triggers\"][number],\n ) => void;\n};\n\nexport type UseActionCellMenuReturn<\n TData extends ActionCellDataItem = ActionCellDataItem,\n TConfig extends ActionCellConfig<TData> = ActionCellConfig<TData>,\n> = {\n /** Spread onto every `<ActionCell>` instance. */\n actionCellProps: {\n config: TConfig;\n menuController: ActionCellMenuController<TData>;\n };\n /** Spread onto the single shared `<Popup>`. */\n popupProps: ComputedRef<{\n show: boolean;\n offset: PopupMenuOffset;\n onClose: () => void;\n }>;\n /** Spread onto the single shared Kendo `<Menu>`. */\n menuProps: ComputedRef<{\n items: ActionCellMenuItem[];\n vertical: true;\n onKeydown: (event: KeyboardEvent) => void;\n onSelect: (event: KendoMenuSelectEvent<ActionCellMenuItem>) => void;\n }>;\n /** Row resolved from the currently active trigger id, if any. */\n activeRow: ComputedRef<TData | null>;\n /** Trigger config resolved from the currently active trigger id, if any. */\n activeTrigger: ComputedRef<TConfig[\"triggers\"][number] | null>;\n /** Resolved `trigger.title(activeRow)`, or `null` when unset/no trigger is active. Render this yourself (e.g. `<strong>`) above the `<Menu>` — it is not part of `menuProps.items`. */\n activeTitle: ComputedRef<string | null>;\n};\n\n/**\n * Bundles the shared-popup wiring a parent needs to drive `ActionCell`: one\n * `useActiveIdRegistry`, one `usePopupMenu`, and the derived active\n * row/trigger/menu items. The parent still owns the `<Popup>`/`<Menu>`\n * template elements and any business logic for the selected action.\n */\nexport const useActionCellMenu = <\n TData extends ActionCellDataItem = ActionCellDataItem,\n TConfig extends ActionCellConfig<TData> = ActionCellConfig<TData>,\n>(\n options: UseActionCellMenuOptions<TData, TConfig>,\n): UseActionCellMenuReturn<TData, TConfig> => {\n const registry = useActiveIdRegistry<string>();\n options.group?.register(registry);\n\n const getTriggerId =\n options.getTriggerId ??\n ((trigger: TConfig[\"triggers\"][number], row: TData) =>\n `${trigger.key}:${options.getRowId(row)}`);\n\n const activeTrigger = computed(() => {\n const key = registry.activeId.value?.split(\":\")[0];\n return (\n (options.config.triggers.find((trigger) => trigger.key === key) as\n | TConfig[\"triggers\"][number]\n | undefined) ?? null\n );\n });\n\n const activeRow = computed(() => {\n const rowId = registry.activeId.value?.split(\":\").slice(1).join(\":\");\n if (rowId === undefined) return null;\n return (\n toValue(options.rows).find(\n (row) => String(options.getRowId(row)) === rowId,\n ) ?? null\n );\n });\n\n const activeMenuItems = computed<ActionCellMenuItem[]>(() => {\n const row = activeRow.value;\n const trigger = activeTrigger.value;\n return row && trigger ? (trigger.items?.(row) ?? []) : [];\n });\n\n const activeTitle = computed<string | null>(() => {\n const row = activeRow.value;\n const trigger = activeTrigger.value;\n return row &&\n trigger &&\n typeof trigger.items === \"function\" &&\n trigger.title\n ? trigger.title(row)\n : null;\n });\n\n const popupMenu = usePopupMenu({\n isOpen: registry.isActive,\n triggerRef: registry.activeElement,\n menuRef: options.menuRef,\n popupContentRef: options.popupContentRef,\n triggerMode: options.triggerMode ?? \"button\",\n anchor: options.anchor ?? true,\n resolveFocusTarget: options.resolveFocusTarget,\n focusTargetContainerSelector: options.focusTargetContainerSelector,\n requestShow: (id) => {\n if (typeof id === \"string\") registry.activate(id);\n },\n requestHide: () => registry.deactivate(),\n menuLabel: activeTitle,\n });\n\n let triggerInteractionSequence = 0;\n\n const handleTriggerClick = (id: string) => {\n const interactionSequence = ++triggerInteractionSequence;\n options.group?.deactivateOthers(registry);\n\n if (registry.isActive.value && !registry.isIdActive(id)) {\n registry.deactivate();\n void nextTick(() => {\n if (interactionSequence === triggerInteractionSequence) {\n popupMenu.handleTriggerClick(id);\n }\n });\n return;\n }\n\n popupMenu.handleTriggerClick(id);\n };\n\n const handleDirectAction = (\n trigger: TConfig[\"triggers\"][number],\n row: TData,\n ) => {\n triggerInteractionSequence++;\n options.group?.deactivateOthers(registry);\n registry.deactivate();\n options.onActionSelected(undefined, row, trigger);\n };\n\n const handleTriggerKeydown = (id: string, ...args: unknown[]) => {\n const event = args[0] as KeyboardEvent;\n if (event.key === \"Enter\" || event.code === \"Space\") {\n event.preventDefault();\n handleTriggerClick(id);\n return;\n }\n popupMenu.handleTriggerKeydown(event, id);\n };\n\n const onMenuKeydown = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") popupMenu.handleMenuEscape(event);\n };\n\n const onMenuSelect = (event: KendoMenuSelectEvent<ActionCellMenuItem>) => {\n const row = activeRow.value;\n const trigger = activeTrigger.value;\n popupMenu.handleMenuSelect(event, () => {\n if (row && trigger) {\n options.onActionSelected(event.item, row, trigger);\n }\n });\n };\n\n return {\n actionCellProps: {\n config: options.config,\n menuController: {\n registry,\n getTriggerId,\n handleTriggerClick,\n handleDirectAction,\n handleTriggerKeydown,\n },\n },\n popupProps: computed(() => ({\n show: registry.isActive.value,\n offset: popupMenu.offset.value,\n onClose: popupMenu.handlePopupClose,\n })),\n menuProps: computed(() => ({\n items: activeMenuItems.value,\n vertical: true as const,\n onKeydown: onMenuKeydown,\n onSelect: onMenuSelect,\n })),\n activeRow,\n activeTrigger,\n activeTitle,\n };\n};\n"],"names":["ZIP_CODE_MESSAGE","OPTIONAL_FIELDS_MESSAGE","props","__props","DEFAULT_MESSAGES","resolveMessages","source","resolvedMessages","computed","fieldScope","fieldsetScope","isRequired","showErrors","fieldIds","address","nonZipRequiredFieldsValid","hasAnyOptionalInput","optionalZipInvalid","zipDigits","optionalPartialInvalid","showOptionalFeedback","showAddress1Error","showCityError","showStateError","showZipError","validationStylesActive","address1DisplayValid","cityDisplayValid","stateDisplayValid","zipDisplayValid","address2PlaceholderDisplay","basePlaceholder","fieldsetErrorMessage","messages","optionalFieldsetErrorMessage","_createElementBlock","_normalizeClass","_createElementVNode","_hoisted_1","_createVNode","_unref","TextBox","_Fragment","_createBlock","Error","_createTextVNode","_toDisplayString","Hint","_openBlock","_hoisted_2","_hoisted_3","_hoisted_4","DropDownList","_hoisted_5","_hoisted_6","ids","useCompositeId","getTriggerId","trigger","isTriggerActive","hasMenu","registerTrigger","element","onTriggerClick","onTriggerKeydown","args","_renderList","Button","$event","useActionCellMenu","options","registry","useActiveIdRegistry","row","activeTrigger","key","activeRow","rowId","toValue","activeMenuItems","activeTitle","popupMenu","usePopupMenu","id","triggerInteractionSequence","handleTriggerClick","interactionSequence","nextTick","handleDirectAction","handleTriggerKeydown","event","onMenuKeydown","onMenuSelect"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- (function(p,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue"),require("@progress/kendo-vue-labels"),require("@progress/kendo-vue-inputs"),require("@progress/kendo-vue-dropdowns"),require("@progress/kendo-vue-buttons"),require("@featherk/composables")):typeof define=="function"&&define.amd?define(["exports","vue","@progress/kendo-vue-labels","@progress/kendo-vue-inputs","@progress/kendo-vue-dropdowns","@progress/kendo-vue-buttons","@featherk/composables"],e):(p=typeof globalThis<"u"?globalThis:p||self,e(p.FeatherKUi={},p.Vue,p.KendoVueLabels,p.KendoVueInputs,p.KendoVueDropdowns,p.KendoVueButtons,p.FeatherKComposables))})(this,(function(p,e,y,S,V,E,x){"use strict";const z={class:"address1"},A={key:0,class:"address2"},N={class:"city"},_={class:"state"},q={class:"zip"},M={key:1,class:"messages"},w="Enter a 5 or 9 digit zip code.",b="Incomplete address.",F=((l,a)=>{const o=l.__vccOpts||l;for(const[m,s]of a)o[m]=s;return o})(e.defineComponent({__name:"USAddress",props:{id:{},address:{},required:{type:Boolean,default:!0},messageScope:{default:"fieldset"},messages:{},showAddress2:{type:Boolean,default:!0}},setup(l){const a=l,o={placeholder:{address1:"Address Line 1",address2:"Address Line 2",city:"City",zip:"00000-0000"},fieldset:{error:{required:"Required fields are missing.",zip:w},hint:{address:"Enter address information."}},field:{error:{address1:"Required",address2:"",city:"Required",state:"Required",zip:w},hint:{address1:"Enter address line 1.",address2:"Optional",city:"",state:"",zip:w}}},m=d=>({placeholder:{address1:d?.placeholder?.address1??o.placeholder.address1,address2:d?.placeholder?.address2??o.placeholder.address2,city:d?.placeholder?.city??o.placeholder.city,zip:d?.placeholder?.zip??o.placeholder.zip},fieldset:{error:{required:d?.fieldset?.error?.required??o.fieldset.error.required,zip:d?.fieldset?.error?.zip??o.fieldset.error.zip},hint:{address:d?.fieldset?.hint?.address??o.fieldset.hint.address}},field:{error:{address1:d?.field?.error?.address1??o.field.error.address1,address2:d?.field?.error?.address2??o.field.error.address2,city:d?.field?.error?.city??o.field.error.city,state:d?.field?.error?.state??o.field.error.state,zip:d?.field?.error?.zip??o.field.error.zip},hint:{address1:d?.field?.hint?.address1??o.field.hint.address1,address2:d?.field?.hint?.address2??o.field.hint.address2,city:d?.field?.hint?.city??o.field.hint.city,state:d?.field?.hint?.state??o.field.hint.state,zip:d?.field?.hint?.zip??o.field.hint.zip}}}),s=e.computed(()=>m(a.messages)),f=e.computed(()=>a.messageScope==="field"),k=e.computed(()=>a.messageScope==="fieldset"),c=e.computed(()=>a.required),v=e.computed(()=>c.value),n=e.computed(()=>({address1:`${a.id}-address1`,address2:`${a.id}-address2`,city:`${a.id}-city`,state:`${a.id}-state`,zip:`${a.id}-zip`})),t=e.computed(()=>a.address),u=e.computed(()=>t.value.address1Valid.value&&t.value.cityValid.value&&t.value.stateValid.value),g=e.computed(()=>t.value.formData.address1.trim()!==""||t.value.formData.address2.trim()!==""||t.value.formData.city.trim()!==""||(t.value.formData.state??"").trim()!==""||t.value.formData.zip.replace(/\D/g,"")!==""),I=e.computed(()=>{if(t.value.optionalZipInvalid)return t.value.optionalZipInvalid.value;const d=t.value.formData.zip.replace(/\D/g,"");return!c.value&&g.value&&d.length!==5&&d.length!==9}),r=e.computed(()=>t.value.optionalPartialInvalid?t.value.optionalPartialInvalid.value:!c.value&&g.value&&!t.value.addressValid.value),i=e.computed(()=>c.value||!r.value?!1:t.value.optionalFeedbackActive?t.value.optionalFeedbackActive.value:!1),h=e.computed(()=>v.value&&!t.value.address1Valid.value||i.value&&t.value.formData.address1.trim()===""),D=e.computed(()=>v.value&&!t.value.cityValid.value||i.value&&t.value.formData.city.trim()===""),T=e.computed(()=>v.value&&!t.value.stateValid.value||i.value&&(t.value.formData.state??"").trim()===""),B=e.computed(()=>v.value&&!t.value.zipValid.value||i.value&&I.value),C=e.computed(()=>c.value?t.value.addressValidate.value:i.value),O=e.computed(()=>c.value?t.value.address1Valid.value:!h.value),$=e.computed(()=>c.value?t.value.cityValid.value:!D.value),Z=e.computed(()=>c.value?t.value.stateValid.value:!T.value),j=e.computed(()=>c.value?t.value.zipValid.value:!B.value),H=e.computed(()=>{const d=s.value.placeholder.address2;return k.value&&c.value?`${d} (Optional)`:d}),U=e.computed(()=>{const d=[];return u.value||d.push(s.value.fieldset.error.required),t.value.zipValid.value||d.push(s.value.fieldset.error.zip),d.join(" ")}),G=e.computed(()=>{const d=[b];return I.value&&d.push(s.value.fieldset.error.zip),d.join(" ")});return(d,J)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["fkui-us-address",{"fkui-us-address--fieldset-scope":k.value}])},[e.createElementVNode("div",z,[e.createVNode(e.unref(S.TextBox),{id:n.value.address1,placeholder:s.value.placeholder.address1,value:t.value.formData.address1,valid:O.value,validate:C.value,validityStyles:C.value,onInput:t.value.onAddress1Input},null,8,["id","placeholder","value","valid","validate","validityStyles","onInput"]),f.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[h.value?(e.openBlock(),e.createBlock(e.unref(y.Error),{key:0},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(s.value.field.error.address1),1)]),_:1})):(e.openBlock(),e.createBlock(e.unref(y.Hint),{key:1},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(s.value.field.hint.address1),1)]),_:1}))],64)):e.createCommentVNode("",!0)]),l.showAddress2?(e.openBlock(),e.createElementBlock("div",A,[e.createVNode(e.unref(S.TextBox),{id:n.value.address2,placeholder:H.value,value:t.value.formData.address2,onInput:t.value.onAddress2Input},null,8,["id","placeholder","value","onInput"]),f.value?(e.openBlock(),e.createBlock(e.unref(y.Hint),{key:0},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(s.value.field.hint.address2),1)]),_:1})):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),e.createElementVNode("div",N,[e.createVNode(e.unref(S.TextBox),{id:n.value.city,placeholder:s.value.placeholder.city,value:t.value.formData.city,valid:$.value,validate:C.value,validityStyles:C.value,onInput:t.value.onCityInput},null,8,["id","placeholder","value","valid","validate","validityStyles","onInput"]),f.value&&D.value?(e.openBlock(),e.createBlock(e.unref(y.Error),{key:0},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(s.value.field.error.city),1)]),_:1})):e.createCommentVNode("",!0)]),e.createElementVNode("div",_,[e.createVNode(e.unref(V.DropDownList),{id:n.value.state,value:t.value.formData.state,onChange:t.value.onStateChange,defaultItem:t.value.stateDefaultItem,dataItems:t.value.stateOptions,textField:"label",valueField:"value",dataItemKey:"value",valuePrimitive:!0,valid:Z.value,validate:C.value,validityStyles:C.value},null,8,["id","value","onChange","defaultItem","dataItems","valid","validate","validityStyles"]),f.value&&T.value?(e.openBlock(),e.createBlock(e.unref(y.Error),{key:0},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(s.value.field.error.state),1)]),_:1})):e.createCommentVNode("",!0)]),e.createElementVNode("div",q,[e.createVNode(e.unref(S.TextBox),{id:n.value.zip,placeholder:s.value.placeholder.zip,wrapperClass:t.value.zipWrapperClass,value:t.value.zipDisplay.value,onInput:t.value.onZipInput,valid:j.value,validate:C.value,validityStyles:C.value,style:{width:"100%"}},null,8,["id","placeholder","wrapperClass","value","onInput","valid","validate","validityStyles"]),f.value&&B.value?(e.openBlock(),e.createBlock(e.unref(y.Error),{key:0},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(s.value.field.error.zip),1)]),_:1})):e.createCommentVNode("",!0),f.value&&!B.value?(e.openBlock(),e.createBlock(e.unref(y.Hint),{key:1},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(s.value.field.hint.zip),1)]),_:1})):e.createCommentVNode("",!0)]),k.value?(e.openBlock(),e.createElementBlock("div",M,[v.value&&!t.value.addressValid.value?(e.openBlock(),e.createBlock(e.unref(y.Error),{key:0},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(U.value),1)]),_:1})):i.value?(e.openBlock(),e.createBlock(e.unref(y.Error),{key:1},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(G.value),1)]),_:1})):(e.openBlock(),e.createBlock(e.unref(y.Hint),{key:2},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(s.value.fieldset.hint.address),1)]),_:1}))])):e.createCommentVNode("",!0)],2))}}),[["__scopeId","data-v-8aeb035b"]]),K=["id","colspan","aria-colindex","aria-selected","data-grid-col-index"],R=e.defineComponent({inheritAttrs:!1,__name:"ActionCell",props:{id:{},className:{},style:{},colSpan:{},ariaColumnIndex:{},isSelected:{type:Boolean},columnIndex:{},dataItem:{},config:{},menuController:{},tabIndex:{default:-1}},setup(l){const a=l,o=x.useCompositeId("action-cell"),m=n=>a.menuController.getTriggerId(n,a.dataItem),s=n=>a.menuController.registry.isIdActive(m(n)),f=n=>typeof n.items=="function",k=(n,t)=>{a.menuController.registry.register(m(n),t)},c=n=>{if(!f(n)){a.menuController.handleDirectAction?.(n,a.dataItem);return}a.menuController.handleTriggerClick(m(n))},v=(n,...t)=>{f(n)&&a.menuController.handleTriggerKeydown(m(n),...t)};return(n,t)=>(e.openBlock(),e.createElementBlock("td",{id:l.id??e.unref(o).instanceId,class:e.normalizeClass(["fkui-action-cell","k-table-td",l.className]),style:e.normalizeStyle(l.style),colspan:l.colSpan,role:"gridcell","aria-colindex":l.ariaColumnIndex,"aria-selected":l.isSelected,"data-grid-col-index":l.columnIndex},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.config.triggers,u=>(e.openBlock(),e.createBlock(e.unref(E.Button),{key:u.key,ref_for:!0,ref:f(u)?g=>k(u,g):void 0,id:e.unref(o).compose(u.key,"trigger"),"svg-icon":u.icon,type:"button","fill-mode":"flat","theme-color":"primary",rounded:"full","aria-label":u.ariaLabel,"aria-haspopup":f(u)?"menu":void 0,"aria-expanded":f(u)?s(u):void 0,disabled:u.disabled?.(l.dataItem),tabindex:l.tabIndex,onClick:g=>c(u),onKeydown:g=>v(u,g)},null,8,["id","svg-icon","aria-label","aria-haspopup","aria-expanded","disabled","tabindex","onClick","onKeydown"]))),128))],14,K))}}),P=l=>{const a=x.useActiveIdRegistry();l.group?.register(a);const o=l.getTriggerId??((r,i)=>`${r.key}:${l.getRowId(i)}`),m=e.computed(()=>{const r=a.activeId.value?.split(":")[0];return l.config.triggers.find(i=>i.key===r)??null}),s=e.computed(()=>{const r=a.activeId.value?.split(":").slice(1).join(":");return r===void 0?null:e.toValue(l.rows).find(i=>String(l.getRowId(i))===r)??null}),f=e.computed(()=>{const r=s.value,i=m.value;return r&&i?i.items?.(r)??[]:[]}),k=e.computed(()=>{const r=s.value,i=m.value;return r&&i&&typeof i.items=="function"&&i.title?i.title(r):null}),c=x.usePopupMenu({isOpen:a.isActive,triggerRef:a.activeElement,menuRef:l.menuRef,popupContentRef:l.popupContentRef,triggerMode:l.triggerMode??"button",anchor:l.anchor??!0,resolveFocusTarget:l.resolveFocusTarget,focusTargetContainerSelector:l.focusTargetContainerSelector,requestShow:r=>{typeof r=="string"&&a.activate(r)},requestHide:()=>a.deactivate(),menuLabel:k});let v=0;const n=r=>{const i=++v;if(l.group?.deactivateOthers(a),a.isActive.value&&!a.isIdActive(r)){a.deactivate(),e.nextTick(()=>{i===v&&c.handleTriggerClick(r)});return}c.handleTriggerClick(r)},t=(r,i)=>{v++,l.group?.deactivateOthers(a),a.deactivate(),l.onActionSelected(void 0,i,r)},u=(r,...i)=>{const h=i[0];if(h.key==="Enter"||h.code==="Space"){h.preventDefault(),n(r);return}c.handleTriggerKeydown(h,r)},g=r=>{r.key==="Escape"&&c.handleMenuEscape(r)},I=r=>{const i=s.value,h=m.value;c.handleMenuSelect(r,()=>{i&&h&&l.onActionSelected(r.item,i,h)})};return{actionCellProps:{config:l.config,menuController:{registry:a,getTriggerId:o,handleTriggerClick:n,handleDirectAction:t,handleTriggerKeydown:u}},popupProps:e.computed(()=>({show:a.isActive.value,offset:c.offset.value,onClose:c.handlePopupClose})),menuProps:e.computed(()=>({items:f.value,vertical:!0,onKeydown:g,onSelect:I})),activeRow:s,activeTrigger:m,activeTitle:k}};p.ActionCell=R,p.USAddress=F,p.useActionCellMenu=P,Object.defineProperty(p,Symbol.toStringTag,{value:"Module"})}));
2
- //# sourceMappingURL=featherk-ui.umd.js.map