@featherk/ui 0.17.1 → 0.18.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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 +366 -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/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # @featherk/ui
2
2
 
3
- Vue UI component package for FeatherK.
3
+ Vue 3 components built on Kendo UI for Vue and driven by `@featherk/composables`.
4
4
 
5
5
  ## Components Overview
6
6
 
@@ -9,32 +9,89 @@ Vue UI component package for FeatherK.
9
9
  - **Table**: `ActionCell` - Configurable repeatable action-button container driven by a parent-owned shared popup lifecycle.
10
10
  - Component guide: [docs/table/ActionCell.md](https://github.com/NantHealth/featherk/blob/integration/packages/ui/docs/table/ActionCell.md)
11
11
  - Composable guide: [docs/table/useActionCellMenu.md](https://github.com/NantHealth/featherk/blob/integration/packages/ui/docs/table/useActionCellMenu.md)
12
+ - **Picker**: `DateField` - Kendo DatePicker with a masked input, driven by a parent-owned `useMaskedDateInput`.
13
+ - Component guide: [docs/picker/DateField.md](https://github.com/NantHealth/featherk/blob/integration/packages/ui/docs/picker/DateField.md)
14
+ - **Picker**: `TimeField` - Kendo TimePicker with a masked input, driven by a parent-owned `useMaskedTimeInput`.
15
+ - Component guide: [docs/picker/TimeField.md](https://github.com/NantHealth/featherk/blob/integration/packages/ui/docs/picker/TimeField.md)
16
+ - **Picker**: `DateRangeField` - Masked date range input with a range calendar popup, driven by a parent-owned `useMaskedDateRangeInput`.
17
+ - Component guide: [docs/picker/DateRangeField.md](https://github.com/NantHealth/featherk/blob/integration/packages/ui/docs/picker/DateRangeField.md)
12
18
 
13
19
  ## Importing Components
14
20
 
21
+ Import from the feature subpath. Each subpath is a separate entry that imports only its own components, styles and peer dependencies at runtime, which also keeps the dev server fast. The package root re-exports every feature; see [What Gets Installed vs. What Ships](#what-gets-installed-vs-what-ships). Don't import internal `dist` paths.
22
+
15
23
  ```ts
16
- import { USAddress } from "@featherk/ui";
24
+ import { USAddress } from "@featherk/ui/address";
17
25
  import { ActionCell } from "@featherk/ui/table";
26
+ import { DateField, DateRangeField, TimeField } from "@featherk/ui/picker";
18
27
  import { useUSAddress } from "@featherk/composables/address";
19
28
  ```
20
29
 
21
30
  For complete setup, behavior, and examples, use the component guide listed in Components Overview.
22
31
 
32
+ ## What Gets Installed vs. What Ships
33
+
34
+ FeatherK packages should just work once installed: you should never have to track down a missing dependency or silence a peer warning. When that conflicts with install size, FeatherK accepts a larger `node_modules` and keeps the browser bundle small.
35
+
36
+ | You import | Installed in `node_modules` | Shipped to the browser (production build) |
37
+ | -------------------------------------------- | ------------------------------------------- | ----------------------------------------- |
38
+ | `import { X } from "@featherk/ui/<feature>"` | All required peers, installed automatically | `X`, its styles and the peers it imports |
39
+ | `import { X } from "@featherk/ui"` | Same | Same as the subpath import |
40
+ | Nothing from a feature | Its peers are still installed | Nothing from that feature |
41
+
42
+ During `vite dev`, a root import loads every feature. This affects only the dev server, not what users download.
43
+
23
44
  ## Kendo UI Compatibility
24
45
 
25
46
  Built and tested against **Kendo UI for Vue 6.4.1**. Kendo packages are declared as peer dependencies (`^6.4.1`), so your application controls the installed Kendo version.
26
47
 
27
- ## Peer Dependencies
48
+ | Subpath | Components | Kendo packages |
49
+ | --------- | ------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------- |
50
+ | `address` | `USAddress` | `kendo-vue-dropdowns`, `kendo-vue-inputs`, `kendo-vue-labels` |
51
+ | `table` | `ActionCell`, `useActionCellMenu` | `kendo-vue-buttons`, `kendo-vue-grid` |
52
+ | `picker` | `DateField`, `TimeField`, `DateRangeField` | `kendo-vue-common`, `kendo-vue-dateinputs`, `kendo-vue-inputs`, `kendo-vue-labels`, `kendo-vue-popup`, `kendo-vue-tooltip` |
28
53
 
29
- - Required: `vue` (3.5+)
30
- - Required for `USAddress`: `@progress/kendo-vue-buttons`, `@progress/kendo-vue-dropdowns`, `@progress/kendo-vue-inputs`, `@progress/kendo-vue-labels`
31
- - Required for `ActionCell`: `@progress/kendo-vue-buttons`, `@progress/kendo-vue-grid`
32
- - Optional, for `useActionCellMenu`: `@progress/kendo-vue-popup`, `@progress/kendo-vue-layout` — its `popupProps` and `menuProps` are spread onto a shared Kendo `<Popup>` and `<Menu>`
33
- - Optional (types only): `@progress/kendo-svg-icons` — used by `ActionCell` icon typings
54
+ ## Dependencies
55
+
56
+ - Required peers: `vue` (3.5+), `@featherk/composables`, `@featherk/icons`, `@progress/kendo-vue-buttons`, `@progress/kendo-vue-common`, `@progress/kendo-vue-dateinputs`, `@progress/kendo-vue-dropdowns`, `@progress/kendo-vue-grid`, `@progress/kendo-vue-inputs`, `@progress/kendo-vue-labels`, `@progress/kendo-vue-popup`, `@progress/kendo-vue-tooltip`
57
+
58
+ npm and pnpm install these automatically; with Yarn Berry, install them yourself. Each subpath loads only the ones its components use, so an app that never imports `@featherk/ui/picker` never loads `@featherk/icons` or `@progress/kendo-vue-tooltip`.
59
+
60
+ - Optional peers:
61
+ - `@progress/kendo-vue-layout`, for `useActionCellMenu` — its `menuProps` are spread onto a shared Kendo `<Menu>`
62
+ - `@progress/kendo-svg-icons` (types only) — used by `ActionCell` icon typings
63
+ - Runtime dependencies: none. Everything is a peer, so your app and FeatherK share one copy of Vue, Kendo and `@featherk/composables`.
64
+
65
+ Keep all `@featherk/*` packages on the same version. They release together, and each `@featherk/ui` release requires at least the matching `@featherk/composables` and `@featherk/icons`. With Renovate or Dependabot, group them into one update.
34
66
 
35
67
  ## Styling
36
68
 
37
- Component styles ship with `@featherk/ui` and are automatically loaded from the package ESM entry.
69
+ Component styles ship with `@featherk/ui`. Each ES entry imports the styles for its own components, so nothing needs to be imported separately. The CommonJS build (`require`) does not import CSS. Theme styles for the Kendo components come from `@featherk/styles`.
70
+
71
+ ## Testing with Vitest
72
+
73
+ Vitest leaves installed packages to Node, and Node can't load the stylesheets each entry imports. Without this setting, tests that import `@featherk/ui` fail with `Unknown file extension ".css"`:
74
+
75
+ ```ts
76
+ // vitest.config.ts
77
+ export default defineConfig({
78
+ test: {
79
+ server: { deps: { inline: ["@featherk/ui"] } },
80
+ },
81
+ });
82
+ ```
83
+
84
+ To mock a composable, mock its subpath, not the package root. Each subpath is a separate module, and a mock replaces only the module it names. FeatherK components import composables from their subpaths, so a root mock never reaches them. For example, `TimeField` imports `usePopupTrap` from `@featherk/composables/trap`:
85
+
86
+ ```ts
87
+ // Before 0.18.0 every subpath was one module, so this also reached TimeField.
88
+ vi.mock("@featherk/composables", …);
89
+
90
+ // Now: mock the subpath.
91
+ vi.mock("@featherk/composables/trap", …);
92
+ ```
93
+
94
+ Import from the same subpath in your own code too. A subpath mock doesn't reach code that imports from the root.
38
95
 
39
96
  ## Build
40
97
 
@@ -52,9 +109,13 @@ npm run build
52
109
 
53
110
  ## Maintainer Notes
54
111
 
55
- - The build runs a first-party script that ensures `dist/featherk-ui.es.js` imports `./ui.css`.
56
- - New component scoped styles are included automatically when the component is exported through the root package entry.
57
- - If runtime subpath entries are added later (for example `@featherk/ui/address` as a JS entry), each runtime entry must also import CSS to preserve zero-effort DX.
112
+ - Every feature folder has an `index.ts` barrel, is re-exported from `src/index.ts`, and has a matching `exports` subpath.
113
+ - `vite.config.ts` builds one ES and one CommonJS entry for the root and for each `package.json` `exports` subpath (`address`, `table`, `picker`). A new feature folder only needs its subpath added to `exports`.
114
+ - Scoped component styles are split per feature, and a small Vite plugin imports each chunk's CSS from its ES module. New components get their styles with no extra step.
115
+ - `package.json` lists only CSS in `sideEffects`, so a root import tree-shakes to the same code and styles as the subpath. Keep other modules free of import-time side effects, or add them to `sideEffects`.
116
+ - Keep shared state out of module scope: no module-level refs, Maps or `provide`/`inject` keys. An app can load both the ES and CommonJS builds, and the two copies don't share state. Create state in the component or composable and pass the instance, as `useActionCellMenu` does.
117
+ - The repo's `scripts/check-entries.mjs` runs at the end of the build. It fails if an export target is missing, an entry imports an undeclared peer, any entry imports an optional peer (npm doesn't install those), or a stylesheet is not imported.
118
+ - The repo's `scripts/check-peers.mjs` runs after it. It fails unless each `@featherk/*` peer range is `>=x.y.z` with a minimum of at least that sibling's current version, so npm never pairs this release with an older sibling that lacks what it imports. Packages release in lockstep, so the root `version:patch|minor|major` scripts run `scripts/sync-peers.mjs`, which raises these minimums to the new version in `package.json` and `package-lock.json`.
58
119
  - For new component documentation, follow the docs authoring template in `docs/README.md`.
59
120
 
60
121
  ## Changelog
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),s=require("@progress/kendo-vue-labels"),p=require("@progress/kendo-vue-inputs"),q=require("@progress/kendo-vue-dropdowns"),T=require("./chunks/shared-BHFhmbuH.cjs"),b={class:"address1"},F={key:0,class:"address2"},O={class:"city"},P={class:"state"},M={class:"zip"},L={key:1,class:"messages"},y="Enter a 5 or 9 digit zip code.",Z="Incomplete address.",R=e.defineComponent({__name:"USAddress",props:{id:{},address:{},required:{type:Boolean,default:!0},messageScope:{default:"fieldset"},messages:{},showAddress2:{type:Boolean,default:!0}},setup(h){const d=h,l={placeholder:{address1:"Address Line 1",address2:"Address Line 2",city:"City",zip:"00000-0000"},fieldset:{error:{required:"Required fields are missing.",zip:y},hint:{address:"Enter address information."}},field:{error:{address1:"Required",address2:"",city:"Required",state:"Required",zip:y},hint:{address1:"Enter address line 1.",address2:"Optional",city:"",state:"",zip:y}}},g=t=>({placeholder:{address1:t?.placeholder?.address1??l.placeholder.address1,address2:t?.placeholder?.address2??l.placeholder.address2,city:t?.placeholder?.city??l.placeholder.city,zip:t?.placeholder?.zip??l.placeholder.zip},fieldset:{error:{required:t?.fieldset?.error?.required??l.fieldset.error.required,zip:t?.fieldset?.error?.zip??l.fieldset.error.zip},hint:{address:t?.fieldset?.hint?.address??l.fieldset.hint.address}},field:{error:{address1:t?.field?.error?.address1??l.field.error.address1,address2:t?.field?.error?.address2??l.field.error.address2,city:t?.field?.error?.city??l.field.error.city,state:t?.field?.error?.state??l.field.error.state,zip:t?.field?.error?.zip??l.field.error.zip},hint:{address1:t?.field?.hint?.address1??l.field.hint.address1,address2:t?.field?.hint?.address2??l.field.hint.address2,city:t?.field?.hint?.city??l.field.hint.city,state:t?.field?.hint?.state??l.field.hint.state,zip:t?.field?.hint?.zip??l.field.hint.zip}}}),r=e.computed(()=>g(d.messages)),u=e.computed(()=>d.messageScope==="field"),f=e.computed(()=>d.messageScope==="fieldset"),i=e.computed(()=>d.required),c=e.computed(()=>i.value),v=e.computed(()=>({address1:`${d.id}-address1`,address2:`${d.id}-address2`,city:`${d.id}-city`,state:`${d.id}-state`,zip:`${d.id}-zip`})),a=e.computed(()=>d.address),_=e.computed(()=>a.value.address1Valid.value&&a.value.cityValid.value&&a.value.stateValid.value),V=e.computed(()=>a.value.formData.address1.trim()!==""||a.value.formData.address2.trim()!==""||a.value.formData.city.trim()!==""||(a.value.formData.state??"").trim()!==""||a.value.formData.zip.replace(/\D/g,"")!==""),k=e.computed(()=>{if(a.value.optionalZipInvalid)return a.value.optionalZipInvalid.value;const t=a.value.formData.zip.replace(/\D/g,"");return!i.value&&V.value&&t.length!==5&&t.length!==9}),B=e.computed(()=>a.value.optionalPartialInvalid?a.value.optionalPartialInvalid.value:!i.value&&V.value&&!a.value.addressValid.value),n=e.computed(()=>i.value||!B.value?!1:a.value.optionalFeedbackActive?a.value.optionalFeedbackActive.value:!1),D=e.computed(()=>c.value&&!a.value.address1Valid.value||n.value&&a.value.formData.address1.trim()===""),S=e.computed(()=>c.value&&!a.value.cityValid.value||n.value&&a.value.formData.city.trim()===""),z=e.computed(()=>c.value&&!a.value.stateValid.value||n.value&&(a.value.formData.state??"").trim()===""),m=e.computed(()=>c.value&&!a.value.zipValid.value||n.value&&k.value),o=e.computed(()=>i.value?a.value.addressValidate.value:n.value),E=e.computed(()=>i.value?a.value.address1Valid.value:!D.value),I=e.computed(()=>i.value?a.value.cityValid.value:!S.value),x=e.computed(()=>i.value?a.value.stateValid.value:!z.value),C=e.computed(()=>i.value?a.value.zipValid.value:!m.value),N=e.computed(()=>{const t=r.value.placeholder.address2;return f.value&&i.value?`${t} (Optional)`:t}),w=e.computed(()=>{const t=[];return _.value||t.push(r.value.fieldset.error.required),a.value.zipValid.value||t.push(r.value.fieldset.error.zip),t.join(" ")}),A=e.computed(()=>{const t=[Z];return k.value&&t.push(r.value.fieldset.error.zip),t.join(" ")});return(t,H)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["fkui-us-address",{"fkui-us-address--fieldset-scope":f.value}])},[e.createElementVNode("div",b,[e.createVNode(e.unref(p.TextBox),{id:v.value.address1,placeholder:r.value.placeholder.address1,value:a.value.formData.address1,valid:E.value,validate:o.value,validityStyles:o.value,onInput:a.value.onAddress1Input},null,8,["id","placeholder","value","valid","validate","validityStyles","onInput"]),u.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[D.value?(e.openBlock(),e.createBlock(e.unref(s.Error),{key:0},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(r.value.field.error.address1),1)]),_:1})):(e.openBlock(),e.createBlock(e.unref(s.Hint),{key:1},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(r.value.field.hint.address1),1)]),_:1}))],64)):e.createCommentVNode("",!0)]),h.showAddress2?(e.openBlock(),e.createElementBlock("div",F,[e.createVNode(e.unref(p.TextBox),{id:v.value.address2,placeholder:N.value,value:a.value.formData.address2,onInput:a.value.onAddress2Input},null,8,["id","placeholder","value","onInput"]),u.value?(e.openBlock(),e.createBlock(e.unref(s.Hint),{key:0},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(r.value.field.hint.address2),1)]),_:1})):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),e.createElementVNode("div",O,[e.createVNode(e.unref(p.TextBox),{id:v.value.city,placeholder:r.value.placeholder.city,value:a.value.formData.city,valid:I.value,validate:o.value,validityStyles:o.value,onInput:a.value.onCityInput},null,8,["id","placeholder","value","valid","validate","validityStyles","onInput"]),u.value&&S.value?(e.openBlock(),e.createBlock(e.unref(s.Error),{key:0},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(r.value.field.error.city),1)]),_:1})):e.createCommentVNode("",!0)]),e.createElementVNode("div",P,[e.createVNode(e.unref(q.DropDownList),{id:v.value.state,value:a.value.formData.state,onChange:a.value.onStateChange,defaultItem:a.value.stateDefaultItem,dataItems:a.value.stateOptions,textField:"label",valueField:"value",dataItemKey:"value",valuePrimitive:!0,valid:x.value,validate:o.value,validityStyles:o.value},null,8,["id","value","onChange","defaultItem","dataItems","valid","validate","validityStyles"]),u.value&&z.value?(e.openBlock(),e.createBlock(e.unref(s.Error),{key:0},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(r.value.field.error.state),1)]),_:1})):e.createCommentVNode("",!0)]),e.createElementVNode("div",M,[e.createVNode(e.unref(p.TextBox),{id:v.value.zip,placeholder:r.value.placeholder.zip,wrapperClass:a.value.zipWrapperClass,value:a.value.zipDisplay.value,onInput:a.value.onZipInput,valid:C.value,validate:o.value,validityStyles:o.value,style:{width:"100%"}},null,8,["id","placeholder","wrapperClass","value","onInput","valid","validate","validityStyles"]),u.value&&m.value?(e.openBlock(),e.createBlock(e.unref(s.Error),{key:0},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(r.value.field.error.zip),1)]),_:1})):e.createCommentVNode("",!0),u.value&&!m.value?(e.openBlock(),e.createBlock(e.unref(s.Hint),{key:1},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(r.value.field.hint.zip),1)]),_:1})):e.createCommentVNode("",!0)]),f.value?(e.openBlock(),e.createElementBlock("div",L,[c.value&&!a.value.addressValid.value?(e.openBlock(),e.createBlock(e.unref(s.Error),{key:0},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(w.value),1)]),_:1})):n.value?(e.openBlock(),e.createBlock(e.unref(s.Error),{key:1},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(A.value),1)]),_:1})):(e.openBlock(),e.createBlock(e.unref(s.Hint),{key:2},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(r.value.fieldset.hint.address),1)]),_:1}))])):e.createCommentVNode("",!0)],2))}}),$=T._export_sfc(R,[["__scopeId","data-v-8aeb035b"]]);exports.USAddress=$;
2
+ //# sourceMappingURL=address.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"address.cjs","sources":["../src/address/USAddress.vue"],"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"],"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"],"mappings":"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"}
@@ -0,0 +1,237 @@
1
+ import "./chunks/address.css";import { defineComponent as G, computed as l, openBlock as s, createElementBlock as D, normalizeClass as U, createElementVNode as S, createVNode as I, unref as r, Fragment as j, createBlock as v, withCtx as o, createTextVNode as n, toDisplayString as p, createCommentVNode as f } from "vue";
2
+ import { Error as m, Hint as g } from "@progress/kendo-vue-labels";
3
+ import { TextBox as V } from "@progress/kendo-vue-inputs";
4
+ import { DropDownList as H } from "@progress/kendo-vue-dropdowns";
5
+ import { _ as K } from "./chunks/shared-CHgC5LLL.mjs";
6
+ const W = { class: "address1" }, J = {
7
+ key: 0,
8
+ class: "address2"
9
+ }, Q = { class: "city" }, X = { class: "state" }, Y = { class: "zip" }, ee = {
10
+ key: 1,
11
+ class: "messages"
12
+ }, A = "Enter a 5 or 9 digit zip code.", ae = "Incomplete address.", le = /* @__PURE__ */ G({
13
+ __name: "USAddress",
14
+ props: {
15
+ id: {},
16
+ address: {},
17
+ required: { type: Boolean, default: !0 },
18
+ messageScope: { default: "fieldset" },
19
+ messages: {},
20
+ showAddress2: { type: Boolean, default: !0 }
21
+ },
22
+ setup(C) {
23
+ const i = C, t = {
24
+ placeholder: {
25
+ address1: "Address Line 1",
26
+ address2: "Address Line 2",
27
+ city: "City",
28
+ zip: "00000-0000"
29
+ },
30
+ fieldset: {
31
+ error: {
32
+ required: "Required fields are missing.",
33
+ zip: A
34
+ },
35
+ hint: {
36
+ address: "Enter address information."
37
+ }
38
+ },
39
+ field: {
40
+ error: {
41
+ address1: "Required",
42
+ address2: "",
43
+ city: "Required",
44
+ state: "Required",
45
+ zip: A
46
+ },
47
+ hint: {
48
+ address1: "Enter address line 1.",
49
+ address2: "Optional",
50
+ city: "",
51
+ state: "",
52
+ zip: A
53
+ }
54
+ }
55
+ }, P = (a) => ({
56
+ placeholder: {
57
+ address1: a?.placeholder?.address1 ?? t.placeholder.address1,
58
+ address2: a?.placeholder?.address2 ?? t.placeholder.address2,
59
+ city: a?.placeholder?.city ?? t.placeholder.city,
60
+ zip: a?.placeholder?.zip ?? t.placeholder.zip
61
+ },
62
+ fieldset: {
63
+ error: {
64
+ required: a?.fieldset?.error?.required ?? t.fieldset.error.required,
65
+ zip: a?.fieldset?.error?.zip ?? t.fieldset.error.zip
66
+ },
67
+ hint: {
68
+ address: a?.fieldset?.hint?.address ?? t.fieldset.hint.address
69
+ }
70
+ },
71
+ field: {
72
+ error: {
73
+ address1: a?.field?.error?.address1 ?? t.field.error.address1,
74
+ address2: a?.field?.error?.address2 ?? t.field.error.address2,
75
+ city: a?.field?.error?.city ?? t.field.error.city,
76
+ state: a?.field?.error?.state ?? t.field.error.state,
77
+ zip: a?.field?.error?.zip ?? t.field.error.zip
78
+ },
79
+ hint: {
80
+ address1: a?.field?.hint?.address1 ?? t.field.hint.address1,
81
+ address2: a?.field?.hint?.address2 ?? t.field.hint.address2,
82
+ city: a?.field?.hint?.city ?? t.field.hint.city,
83
+ state: a?.field?.hint?.state ?? t.field.hint.state,
84
+ zip: a?.field?.hint?.zip ?? t.field.hint.zip
85
+ }
86
+ }
87
+ }), d = l(() => P(i.messages)), h = l(() => i.messageScope === "field"), E = l(() => i.messageScope === "fieldset"), u = l(() => i.required), z = l(() => u.value), _ = l(() => ({
88
+ address1: `${i.id}-address1`,
89
+ address2: `${i.id}-address2`,
90
+ city: `${i.id}-city`,
91
+ state: `${i.id}-state`,
92
+ zip: `${i.id}-zip`
93
+ })), e = l(() => i.address), b = l(() => e.value.address1Valid.value && e.value.cityValid.value && e.value.stateValid.value), q = l(() => 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, "") !== ""), w = l(() => {
94
+ if (e.value.optionalZipInvalid)
95
+ return e.value.optionalZipInvalid.value;
96
+ const a = e.value.formData.zip.replace(/\D/g, "");
97
+ return !u.value && q.value && a.length !== 5 && a.length !== 9;
98
+ }), M = l(() => e.value.optionalPartialInvalid ? e.value.optionalPartialInvalid.value : !u.value && q.value && !e.value.addressValid.value), y = l(() => u.value || !M.value ? !1 : e.value.optionalFeedbackActive ? e.value.optionalFeedbackActive.value : !1), F = l(() => z.value && !e.value.address1Valid.value || y.value && e.value.formData.address1.trim() === ""), x = l(() => z.value && !e.value.cityValid.value || y.value && e.value.formData.city.trim() === ""), O = l(() => z.value && !e.value.stateValid.value || y.value && (e.value.formData.state ?? "").trim() === ""), k = l(() => z.value && !e.value.zipValid.value || y.value && w.value), c = l(() => u.value ? e.value.addressValidate.value : y.value), Z = l(() => u.value ? e.value.address1Valid.value : !F.value), B = l(() => u.value ? e.value.cityValid.value : !x.value), L = l(() => u.value ? e.value.stateValid.value : !O.value), R = l(() => u.value ? e.value.zipValid.value : !k.value), $ = l(() => {
99
+ const a = d.value.placeholder.address2;
100
+ return E.value && u.value ? `${a} (Optional)` : a;
101
+ }), N = l(() => {
102
+ const a = [];
103
+ return b.value || a.push(d.value.fieldset.error.required), e.value.zipValid.value || a.push(d.value.fieldset.error.zip), a.join(" ");
104
+ }), T = l(() => {
105
+ const a = [ae];
106
+ return w.value && a.push(d.value.fieldset.error.zip), a.join(" ");
107
+ });
108
+ return (a, te) => (s(), D("div", {
109
+ class: U(["fkui-us-address", { "fkui-us-address--fieldset-scope": E.value }])
110
+ }, [
111
+ S("div", W, [
112
+ I(r(V), {
113
+ id: _.value.address1,
114
+ placeholder: d.value.placeholder.address1,
115
+ value: e.value.formData.address1,
116
+ valid: Z.value,
117
+ validate: c.value,
118
+ validityStyles: c.value,
119
+ onInput: e.value.onAddress1Input
120
+ }, null, 8, ["id", "placeholder", "value", "valid", "validate", "validityStyles", "onInput"]),
121
+ h.value ? (s(), D(j, { key: 0 }, [
122
+ F.value ? (s(), v(r(m), { key: 0 }, {
123
+ default: o(() => [
124
+ n(p(d.value.field.error.address1), 1)
125
+ ]),
126
+ _: 1
127
+ })) : (s(), v(r(g), { key: 1 }, {
128
+ default: o(() => [
129
+ n(p(d.value.field.hint.address1), 1)
130
+ ]),
131
+ _: 1
132
+ }))
133
+ ], 64)) : f("", !0)
134
+ ]),
135
+ C.showAddress2 ? (s(), D("div", J, [
136
+ I(r(V), {
137
+ id: _.value.address2,
138
+ placeholder: $.value,
139
+ value: e.value.formData.address2,
140
+ onInput: e.value.onAddress2Input
141
+ }, null, 8, ["id", "placeholder", "value", "onInput"]),
142
+ h.value ? (s(), v(r(g), { key: 0 }, {
143
+ default: o(() => [
144
+ n(p(d.value.field.hint.address2), 1)
145
+ ]),
146
+ _: 1
147
+ })) : f("", !0)
148
+ ])) : f("", !0),
149
+ S("div", Q, [
150
+ I(r(V), {
151
+ id: _.value.city,
152
+ placeholder: d.value.placeholder.city,
153
+ value: e.value.formData.city,
154
+ valid: B.value,
155
+ validate: c.value,
156
+ validityStyles: c.value,
157
+ onInput: e.value.onCityInput
158
+ }, null, 8, ["id", "placeholder", "value", "valid", "validate", "validityStyles", "onInput"]),
159
+ h.value && x.value ? (s(), v(r(m), { key: 0 }, {
160
+ default: o(() => [
161
+ n(p(d.value.field.error.city), 1)
162
+ ]),
163
+ _: 1
164
+ })) : f("", !0)
165
+ ]),
166
+ S("div", X, [
167
+ I(r(H), {
168
+ id: _.value.state,
169
+ value: e.value.formData.state,
170
+ onChange: e.value.onStateChange,
171
+ defaultItem: e.value.stateDefaultItem,
172
+ dataItems: e.value.stateOptions,
173
+ textField: "label",
174
+ valueField: "value",
175
+ dataItemKey: "value",
176
+ valuePrimitive: !0,
177
+ valid: L.value,
178
+ validate: c.value,
179
+ validityStyles: c.value
180
+ }, null, 8, ["id", "value", "onChange", "defaultItem", "dataItems", "valid", "validate", "validityStyles"]),
181
+ h.value && O.value ? (s(), v(r(m), { key: 0 }, {
182
+ default: o(() => [
183
+ n(p(d.value.field.error.state), 1)
184
+ ]),
185
+ _: 1
186
+ })) : f("", !0)
187
+ ]),
188
+ S("div", Y, [
189
+ I(r(V), {
190
+ id: _.value.zip,
191
+ placeholder: d.value.placeholder.zip,
192
+ wrapperClass: e.value.zipWrapperClass,
193
+ value: e.value.zipDisplay.value,
194
+ onInput: e.value.onZipInput,
195
+ valid: R.value,
196
+ validate: c.value,
197
+ validityStyles: c.value,
198
+ style: { width: "100%" }
199
+ }, null, 8, ["id", "placeholder", "wrapperClass", "value", "onInput", "valid", "validate", "validityStyles"]),
200
+ h.value && k.value ? (s(), v(r(m), { key: 0 }, {
201
+ default: o(() => [
202
+ n(p(d.value.field.error.zip), 1)
203
+ ]),
204
+ _: 1
205
+ })) : f("", !0),
206
+ h.value && !k.value ? (s(), v(r(g), { key: 1 }, {
207
+ default: o(() => [
208
+ n(p(d.value.field.hint.zip), 1)
209
+ ]),
210
+ _: 1
211
+ })) : f("", !0)
212
+ ]),
213
+ E.value ? (s(), D("div", ee, [
214
+ z.value && !e.value.addressValid.value ? (s(), v(r(m), { key: 0 }, {
215
+ default: o(() => [
216
+ n(p(N.value), 1)
217
+ ]),
218
+ _: 1
219
+ })) : y.value ? (s(), v(r(m), { key: 1 }, {
220
+ default: o(() => [
221
+ n(p(T.value), 1)
222
+ ]),
223
+ _: 1
224
+ })) : (s(), v(r(g), { key: 2 }, {
225
+ default: o(() => [
226
+ n(p(d.value.fieldset.hint.address), 1)
227
+ ]),
228
+ _: 1
229
+ }))
230
+ ])) : f("", !0)
231
+ ], 2));
232
+ }
233
+ }), ve = /* @__PURE__ */ K(le, [["__scopeId", "data-v-8aeb035b"]]);
234
+ export {
235
+ ve as USAddress
236
+ };
237
+ //# sourceMappingURL=address.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"address.mjs","sources":["../src/address/USAddress.vue"],"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"],"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"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ .fkui-picker[data-v-9598aad4],.fkui-picker[data-v-8b45610e]{display:inline-flex;flex-direction:column;align-items:flex-start}.fkui-range-calendar[data-v-8b45610e]{overscroll-behavior:contain}.fkui-picker[data-v-33cb65f4]{display:inline-flex;flex-direction:column;align-items:flex-start}
@@ -0,0 +1,2 @@
1
+ "use strict";const e=(t,o)=>{const c=t.__vccOpts||t;for(const[r,s]of o)c[r]=s;return c};exports._export_sfc=e;
2
+ //# sourceMappingURL=shared-BHFhmbuH.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared-BHFhmbuH.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,10 @@
1
+ const s = (t, r) => {
2
+ const o = t.__vccOpts || t;
3
+ for (const [c, e] of r)
4
+ o[c] = e;
5
+ return o;
6
+ };
7
+ export {
8
+ s as _
9
+ };
10
+ //# sourceMappingURL=shared-CHgC5LLL.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared-CHgC5LLL.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
@@ -1,6 +1,9 @@
1
1
  // Generated by scripts/generate-docs-manifest.mjs. Do not edit.
2
2
  export type DocName =
3
3
  | "ActionCell"
4
+ | "DateField"
5
+ | "DateRangeField"
6
+ | "TimeField"
4
7
  | "USAddress"
5
8
  | "useActionCellMenu";
6
9
 
@@ -0,0 +1,25 @@
1
+ // Generated by scripts/generate-docs-manifest.mjs. Do not edit.
2
+ export const packageName = "@featherk/ui";
3
+
4
+ export const version = "0.18.1";
5
+
6
+ export const paths = {
7
+ ActionCell: "table/ActionCell.md",
8
+ DateField: "picker/DateField.md",
9
+ DateRangeField: "picker/DateRangeField.md",
10
+ TimeField: "picker/TimeField.md",
11
+ USAddress: "address/USAddress.md",
12
+ useActionCellMenu: "table/useActionCellMenu.md",
13
+ };
14
+
15
+ export const docs = {
16
+ ActionCell: "https://cdn.jsdelivr.net/npm/@featherk/ui@0.18.1/docs/table/ActionCell.md",
17
+ DateField: "https://cdn.jsdelivr.net/npm/@featherk/ui@0.18.1/docs/picker/DateField.md",
18
+ DateRangeField: "https://cdn.jsdelivr.net/npm/@featherk/ui@0.18.1/docs/picker/DateRangeField.md",
19
+ TimeField: "https://cdn.jsdelivr.net/npm/@featherk/ui@0.18.1/docs/picker/TimeField.md",
20
+ USAddress: "https://cdn.jsdelivr.net/npm/@featherk/ui@0.18.1/docs/address/USAddress.md",
21
+ useActionCellMenu: "https://cdn.jsdelivr.net/npm/@featherk/ui@0.18.1/docs/table/useActionCellMenu.md",
22
+ };
23
+
24
+ export const docUrl = (name, host = "https://cdn.jsdelivr.net/npm") =>
25
+ `${host}/${packageName}@${version}/docs/${paths[name]}`;
package/dist/index.cjs ADDED
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const l=require("./address.cjs"),i=require("./table.cjs"),e=require("./picker.cjs");exports.USAddress=l.USAddress;exports.ActionCell=i.ActionCell;exports.useActionCellMenu=i.useActionCellMenu;exports.DateField=e.DateField;exports.DateRangeField=e.DateRangeField;exports.TimeField=e.TimeField;
2
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
package/dist/index.d.ts CHANGED
@@ -1,2 +1,3 @@
1
1
  export * from "./address";
2
2
  export * from "./table";
3
+ export * from "./picker";
package/dist/index.mjs ADDED
@@ -0,0 +1,12 @@
1
+ import { USAddress as l } from "./address.mjs";
2
+ import { ActionCell as t, useActionCellMenu as i } from "./table.mjs";
3
+ import { DateField as m, DateRangeField as n, TimeField as a } from "./picker.mjs";
4
+ export {
5
+ t as ActionCell,
6
+ m as DateField,
7
+ n as DateRangeField,
8
+ a as TimeField,
9
+ l as USAddress,
10
+ i as useActionCellMenu
11
+ };
12
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;"}
@@ -0,0 +1,28 @@
1
+ import type { UseMaskedDateInputReturn } from "@featherk/composables/date";
2
+ import type { DateFieldMessages } from "./types";
3
+ type __VLS_Props = {
4
+ /** Return value of `useMaskedDateInput`. */
5
+ input: UseMaskedDateInputReturn;
6
+ label?: string;
7
+ /** Calendar bounds; default to the composable's `min`/`max`. */
8
+ min?: Date;
9
+ max?: Date;
10
+ messages?: DateFieldMessages;
11
+ /** Also applied to the masked input, which Kendo's picker does not reach. */
12
+ disabled?: boolean;
13
+ readonly?: boolean;
14
+ };
15
+ type __VLS_PublicProps = __VLS_Props & {
16
+ /** Must be the same ref passed to `useMaskedDateInput` as `externalValue`. */
17
+ modelValue?: Date | string | null | undefined;
18
+ /** Must be the same ref the composable's `onShowCalendar` opens. */
19
+ "show"?: boolean;
20
+ };
21
+ declare const _default: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
22
+ "update:modelValue": (value: string | Date) => any;
23
+ "update:show": (value: boolean) => any;
24
+ }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
25
+ "onUpdate:modelValue"?: (value: string | Date) => any;
26
+ "onUpdate:show"?: (value: boolean) => any;
27
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
28
+ export default _default;