@featherk/ui 0.17.0 → 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.
- package/README.md +73 -12
- package/dist/address.cjs +2 -0
- package/dist/address.cjs.map +1 -0
- package/dist/address.mjs +237 -0
- package/dist/address.mjs.map +1 -0
- package/dist/chunks/picker.css +1 -0
- package/dist/chunks/shared-BHFhmbuH.cjs +2 -0
- package/dist/chunks/shared-BHFhmbuH.cjs.map +1 -0
- package/dist/chunks/shared-CHgC5LLL.mjs +10 -0
- package/dist/chunks/shared-CHgC5LLL.mjs.map +1 -0
- package/dist/{docs-manifest.d.ts → docs-manifest.d.mts} +3 -0
- package/dist/docs-manifest.mjs +25 -0
- package/dist/index.cjs +2 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.mjs +12 -0
- package/dist/index.mjs.map +1 -0
- package/dist/picker/DateField.vue.d.ts +28 -0
- package/dist/picker/DateRangeField.vue.d.ts +34 -0
- package/dist/picker/TimeField.vue.d.ts +28 -0
- package/dist/picker/errorKey.d.ts +1 -0
- package/dist/picker/index.d.ts +4 -0
- package/dist/picker/types.d.ts +18 -0
- package/dist/picker.cjs +2 -0
- package/dist/picker.cjs.map +1 -0
- package/dist/picker.mjs +384 -0
- package/dist/picker.mjs.map +1 -0
- package/dist/table/types.d.ts +1 -1
- package/dist/table/useActionCellMenu.d.ts +2 -1
- package/dist/table.cjs +2 -0
- package/dist/table.cjs.map +1 -0
- package/dist/table.mjs +157 -0
- package/dist/table.mjs.map +1 -0
- package/docs/README.md +4 -4
- package/docs/address/USAddress.md +1 -2
- package/docs/picker/DateField.md +89 -0
- package/docs/picker/DateRangeField.md +99 -0
- package/docs/picker/TimeField.md +88 -0
- package/package.json +36 -22
- package/dist/docs-manifest.js +0 -19
- package/dist/featherk-ui.es.js +0 -392
- package/dist/featherk-ui.es.js.map +0 -1
- package/dist/featherk-ui.umd.js +0 -2
- package/dist/featherk-ui.umd.js.map +0 -1
- /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
|
|
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
|
-
|
|
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
|
-
|
|
30
|
-
|
|
31
|
-
- Required
|
|
32
|
-
|
|
33
|
-
|
|
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`
|
|
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
|
-
-
|
|
56
|
-
-
|
|
57
|
-
-
|
|
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 a version bump means raising these minimums 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
|
package/dist/address.cjs
ADDED
|
@@ -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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"}
|
package/dist/address.mjs
ADDED
|
@@ -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-43893bc7]{display:inline-flex;flex-direction:column;align-items:flex-start}.fkui-picker-row[data-v-43893bc7]{display:inline-flex;align-items:center;gap:1em}.fkui-range-calendar[data-v-43893bc7]{overscroll-behavior:contain}.fkui-picker[data-v-33cb65f4]{display:inline-flex;flex-direction:column;align-items:flex-start}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shared-BHFhmbuH.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shared-CHgC5LLL.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
|
|
@@ -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.0";
|
|
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.0/docs/table/ActionCell.md",
|
|
17
|
+
DateField: "https://cdn.jsdelivr.net/npm/@featherk/ui@0.18.0/docs/picker/DateField.md",
|
|
18
|
+
DateRangeField: "https://cdn.jsdelivr.net/npm/@featherk/ui@0.18.0/docs/picker/DateRangeField.md",
|
|
19
|
+
TimeField: "https://cdn.jsdelivr.net/npm/@featherk/ui@0.18.0/docs/picker/TimeField.md",
|
|
20
|
+
USAddress: "https://cdn.jsdelivr.net/npm/@featherk/ui@0.18.0/docs/address/USAddress.md",
|
|
21
|
+
useActionCellMenu: "https://cdn.jsdelivr.net/npm/@featherk/ui@0.18.0/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
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;
|