@forizi-tecnologia/ui 0.0.4 → 0.0.5

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 (71) hide show
  1. package/README.md +46 -5
  2. package/dist/chunks/components/FzConfigProvider-X6sXT-LE.js +15 -0
  3. package/dist/chunks/components/FzConfigProvider-X6sXT-LE.js.map +1 -0
  4. package/dist/chunks/components/inputs-FzEmailField-CujT-RJo.js +87 -0
  5. package/dist/chunks/components/inputs-FzEmailField-CujT-RJo.js.map +1 -0
  6. package/dist/chunks/components/{inputs-FzFullAddress-e05j6MFg.js → inputs-FzFullAddress-Dj68efww.js} +70 -69
  7. package/dist/chunks/components/inputs-FzFullAddress-Dj68efww.js.map +1 -0
  8. package/dist/chunks/components/inputs-FzMoneyField-Co9uqB9u.js +107 -0
  9. package/dist/chunks/components/inputs-FzMoneyField-Co9uqB9u.js.map +1 -0
  10. package/dist/chunks/components/{inputs-FzNumberField-BAPRZpBo.js → inputs-FzNumberField-DG-uYIEA.js} +38 -37
  11. package/dist/chunks/components/inputs-FzNumberField-DG-uYIEA.js.map +1 -0
  12. package/dist/chunks/components/inputs-FzPhoneField-B8Mk05Hd.js +273 -0
  13. package/dist/chunks/components/inputs-FzPhoneField-B8Mk05Hd.js.map +1 -0
  14. package/dist/chunks/components/inputs-FzZipCodeField-B7fHUkXJ.js +103 -0
  15. package/dist/chunks/components/inputs-FzZipCodeField-B7fHUkXJ.js.map +1 -0
  16. package/dist/chunks/components/{layout-FzLoadingOverlay-DbVh5Ncb.js → layout-FzLoadingOverlay-CWKZxowb.js} +2 -2
  17. package/dist/chunks/components/{layout-FzLoadingOverlay-DbVh5Ncb.js.map → layout-FzLoadingOverlay-CWKZxowb.js.map} +1 -1
  18. package/dist/chunks/components/{messages-FzConfirmDialog-kcpokBc2.js → messages-FzConfirmDialog-CkESdVvg.js} +2 -2
  19. package/dist/chunks/components/{messages-FzConfirmDialog-kcpokBc2.js.map → messages-FzConfirmDialog-CkESdVvg.js.map} +1 -1
  20. package/dist/chunks/components/{messages-FzCustomConfirmDialog-CttE2KMh.js → messages-FzCustomConfirmDialog-DiuYkXxY.js} +2 -2
  21. package/dist/chunks/components/{messages-FzCustomConfirmDialog-CttE2KMh.js.map → messages-FzCustomConfirmDialog-DiuYkXxY.js.map} +1 -1
  22. package/dist/chunks/components/{messages-FzFloatingNotify-BdlkCu5i.js → messages-FzFloatingNotify-CV5gLl9-.js} +2 -2
  23. package/dist/chunks/components/{messages-FzFloatingNotify-BdlkCu5i.js.map → messages-FzFloatingNotify-CV5gLl9-.js.map} +1 -1
  24. package/dist/chunks/components/{modals-FzModalBase-C4wU9yAp.js → modals-FzModalBase-DmsJR5qM.js} +2 -2
  25. package/dist/chunks/components/{modals-FzModalBase-C4wU9yAp.js.map → modals-FzModalBase-DmsJR5qM.js.map} +1 -1
  26. package/dist/chunks/composables/useFzDefaults-BAOcJYaF.js +9 -0
  27. package/dist/chunks/composables/useFzDefaults-BAOcJYaF.js.map +1 -0
  28. package/dist/chunks/index-BEN9ppaq.js +33 -0
  29. package/dist/chunks/index-BEN9ppaq.js.map +1 -0
  30. package/dist/components/FzConfigProvider.vue.d.ts +20 -0
  31. package/dist/components/FzConfigProvider.vue.d.ts.map +1 -0
  32. package/dist/components/index.d.ts +1 -0
  33. package/dist/components/index.d.ts.map +1 -1
  34. package/dist/components/index.js +24 -22
  35. package/dist/components/index.js.map +1 -1
  36. package/dist/components/inputs/FzEmailField.vue.d.ts.map +1 -1
  37. package/dist/components/inputs/FzFullAddress.vue.d.ts.map +1 -1
  38. package/dist/components/inputs/FzMoneyField.vue.d.ts.map +1 -1
  39. package/dist/components/inputs/FzNumberField.vue.d.ts.map +1 -1
  40. package/dist/components/inputs/FzPhoneField.vue.d.ts.map +1 -1
  41. package/dist/components/inputs/FzZipCodeField.vue.d.ts.map +1 -1
  42. package/dist/composables/index.d.ts +1 -0
  43. package/dist/composables/index.d.ts.map +1 -1
  44. package/dist/composables/index.js +11 -9
  45. package/dist/composables/index.js.map +1 -1
  46. package/dist/composables/useFzDefaults.d.ts +3 -0
  47. package/dist/composables/useFzDefaults.d.ts.map +1 -0
  48. package/dist/constants/index.d.ts +4 -0
  49. package/dist/constants/index.d.ts.map +1 -0
  50. package/dist/index.d.ts +2 -0
  51. package/dist/index.d.ts.map +1 -1
  52. package/dist/index.js +80 -75
  53. package/dist/index.js.map +1 -1
  54. package/dist/types/FzDefaults.d.ts +5 -0
  55. package/dist/types/FzDefaults.d.ts.map +1 -0
  56. package/dist/ui.css +1 -1
  57. package/dist/utils/index.js +19 -18
  58. package/dist/utils/index.js.map +1 -1
  59. package/package.json +1 -1
  60. package/dist/chunks/components/inputs-FzEmailField-B07tsUyr.js +0 -86
  61. package/dist/chunks/components/inputs-FzEmailField-B07tsUyr.js.map +0 -1
  62. package/dist/chunks/components/inputs-FzFullAddress-e05j6MFg.js.map +0 -1
  63. package/dist/chunks/components/inputs-FzMoneyField-BxAg9Bd_.js +0 -106
  64. package/dist/chunks/components/inputs-FzMoneyField-BxAg9Bd_.js.map +0 -1
  65. package/dist/chunks/components/inputs-FzNumberField-BAPRZpBo.js.map +0 -1
  66. package/dist/chunks/components/inputs-FzPhoneField-DKMx53pK.js +0 -272
  67. package/dist/chunks/components/inputs-FzPhoneField-DKMx53pK.js.map +0 -1
  68. package/dist/chunks/components/inputs-FzZipCodeField-kkCMb3t9.js +0 -102
  69. package/dist/chunks/components/inputs-FzZipCodeField-kkCMb3t9.js.map +0 -1
  70. package/dist/chunks/index-Bu6SLmX_.js +0 -31
  71. package/dist/chunks/index-Bu6SLmX_.js.map +0 -1
package/dist/index.js CHANGED
@@ -1,94 +1,99 @@
1
- import { c as t } from "./chunks/index-Bu6SLmX_.js";
2
- import { globalsPlugin as s } from "./plugins/index.js";
1
+ import { c as s } from "./chunks/index-BEN9ppaq.js";
2
+ import { globalsPlugin as t } from "./plugins/index.js";
3
3
  import { e as a } from "./chunks/utils/vuetify-check-DRI6ZYnO.js";
4
- import { d as D } from "./chunks/utils/vuetify-check-DRI6ZYnO.js";
5
- import { n as B, u as R } from "./chunks/utils/notify-CE_gbk11.js";
6
- import { l as w, u as G } from "./chunks/utils/loading-dXhCGa6R.js";
7
- import { c as U, u as Y } from "./chunks/utils/confirm-DiGEPjua.js";
8
- import { a as k, c as q } from "./chunks/utils/api-N1Cju-89.js";
9
- import { A as H, N as Z } from "./chunks/utils/types-DV6li0y5.js";
10
- import { u as Q } from "./chunks/composables/useGlobals-AagqYKoP.js";
11
- import { u as X } from "./chunks/composables/useBreakpoint-DnFIVluv.js";
12
- import { u as oo } from "./chunks/composables/useLoading-Cu1i2QIr.js";
13
- import { N as ro, c as to, u as so } from "./chunks/composables/useNumericInput-DGw52-Ds.js";
14
- import { VTooltip as i, VTextField as n, VSpacer as m, VSelect as f, VRow as p, VProgressCircular as u, VMenu as l, VIcon as F, VDialog as c, VCol as x, VCardTitle as d, VCardText as V, VCardActions as g, VCard as C, VBtn as z, VAlert as N } from "vuetify/components";
15
- import { _ as io } from "./chunks/components/buttons-FzIconToolTip-D_cBN1TN.js";
16
- import { _ as mo } from "./chunks/components/messages-FzConfirmDialog-kcpokBc2.js";
17
- import { _ as po } from "./chunks/components/inputs-FzEmailField-B07tsUyr.js";
18
- import { _ as lo } from "./chunks/components/inputs-FzPhoneField-DKMx53pK.js";
19
- import { _ as co } from "./chunks/components/inputs-FzZipCodeField-kkCMb3t9.js";
20
- import { _ as Vo } from "./chunks/components/inputs-FzFullAddress-e05j6MFg.js";
21
- import { F as Co } from "./chunks/components/modals-FzModalBase-C4wU9yAp.js";
22
- import { F as No } from "./chunks/components/messages-FzCustomConfirmDialog-CttE2KMh.js";
23
- import { F as Io } from "./chunks/components/messages-FzFloatingNotify-BdlkCu5i.js";
24
- import { F as Ao } from "./chunks/components/layout-FzLoadingOverlay-DbVh5Ncb.js";
25
- import { F as bo } from "./chunks/components/inputs-FzMoneyField-BxAg9Bd_.js";
26
- import { F as Oo } from "./chunks/components/inputs-FzNumberField-BAPRZpBo.js";
27
- const O = {
28
- VAlert: N,
29
- VBtn: z,
30
- VCard: C,
4
+ import { d as S } from "./chunks/utils/vuetify-check-DRI6ZYnO.js";
5
+ import { n as B, u as K } from "./chunks/utils/notify-CE_gbk11.js";
6
+ import { l as U, u as Y } from "./chunks/utils/loading-dXhCGa6R.js";
7
+ import { c as v, u as w } from "./chunks/utils/confirm-DiGEPjua.js";
8
+ import { a as Z, c as j } from "./chunks/utils/api-N1Cju-89.js";
9
+ import { A as q, N as H } from "./chunks/utils/types-DV6li0y5.js";
10
+ import { u as Q } from "./chunks/composables/useFzDefaults-BAOcJYaF.js";
11
+ import { u as X } from "./chunks/composables/useGlobals-AagqYKoP.js";
12
+ import { u as oo } from "./chunks/composables/useBreakpoint-DnFIVluv.js";
13
+ import { u as eo } from "./chunks/composables/useLoading-Cu1i2QIr.js";
14
+ import { N as to, c as ao, u as io } from "./chunks/composables/useNumericInput-DGw52-Ds.js";
15
+ import { F as fo, _ as mo } from "./chunks/components/FzConfigProvider-X6sXT-LE.js";
16
+ import { VTooltip as i, VTextField as n, VSpacer as f, VSelect as m, VRow as p, VProgressCircular as u, VMenu as l, VIcon as F, VDialog as x, VCol as c, VCardTitle as d, VCardText as V, VCardActions as g, VCard as z, VBtn as C, VAlert as T } from "vuetify/components";
17
+ import { _ as uo } from "./chunks/components/buttons-FzIconToolTip-D_cBN1TN.js";
18
+ import { _ as Fo } from "./chunks/components/messages-FzConfirmDialog-CkESdVvg.js";
19
+ import { _ as co } from "./chunks/components/inputs-FzEmailField-CujT-RJo.js";
20
+ import { _ as go } from "./chunks/components/inputs-FzPhoneField-B8Mk05Hd.js";
21
+ import { _ as Co } from "./chunks/components/inputs-FzZipCodeField-B7fHUkXJ.js";
22
+ import { _ as _o } from "./chunks/components/inputs-FzFullAddress-Dj68efww.js";
23
+ import { F as Ao } from "./chunks/components/modals-FzModalBase-DmsJR5qM.js";
24
+ import { F as yo } from "./chunks/components/messages-FzCustomConfirmDialog-DiuYkXxY.js";
25
+ import { F as Eo } from "./chunks/components/messages-FzFloatingNotify-CV5gLl9-.js";
26
+ import { F as Do } from "./chunks/components/layout-FzLoadingOverlay-CWKZxowb.js";
27
+ import { F as Po } from "./chunks/components/inputs-FzMoneyField-Co9uqB9u.js";
28
+ import { F as Mo } from "./chunks/components/inputs-FzNumberField-DG-uYIEA.js";
29
+ const L = {
30
+ VAlert: T,
31
+ VBtn: C,
32
+ VCard: z,
31
33
  VCardActions: g,
32
34
  VCardText: V,
33
35
  VCardTitle: d,
34
- VCol: x,
35
- VDialog: c,
36
+ VCol: c,
37
+ VDialog: x,
36
38
  VIcon: F,
37
39
  VMenu: l,
38
40
  VProgressCircular: u,
39
41
  VRow: p,
40
- VSelect: f,
41
- VSpacer: m,
42
+ VSelect: m,
43
+ VSpacer: f,
42
44
  VTextField: n,
43
45
  VTooltip: i
44
- }, T = t;
45
- function I(o) {
46
- Object.entries(T).forEach(([e, r]) => {
47
- o.component(e, r);
46
+ }, _ = s;
47
+ function N(o) {
48
+ Object.entries(_).forEach(([r, e]) => {
49
+ o.component(r, e);
48
50
  });
49
51
  }
50
- function y(o) {
51
- o.use(s);
52
+ function A(o) {
53
+ o.use(t);
52
54
  }
53
- function E(o) {
54
- a(o), I(o), y(o);
55
+ function D(o) {
56
+ a(o), N(o), A(o);
55
57
  }
56
58
  export {
57
- H as API_TIMEOUT,
58
- mo as FzConfirmDialog,
59
- No as FzCustomConfirmDialog,
60
- po as FzEmailField,
61
- Io as FzFloatingNotify,
62
- Vo as FzFullAddress,
63
- io as FzIconToolTip,
64
- Ao as FzLoadingOverlay,
65
- Co as FzModalBase,
66
- bo as FzMoneyField,
67
- Oo as FzNumberField,
68
- lo as FzPhoneField,
69
- co as FzZipCodeField,
70
- ro as NAVIGATION_KEYS,
71
- Z as NOTIFY_DURATION,
72
- k as api,
73
- T as components,
74
- q as configureApi,
75
- U as confirm,
76
- to as createNumericKeydownHandler,
77
- D as debugVuetifyInstances,
78
- I as default,
59
+ q as API_TIMEOUT,
60
+ fo as FZ_DEFAULTS_KEY,
61
+ mo as FzConfigProvider,
62
+ Fo as FzConfirmDialog,
63
+ yo as FzCustomConfirmDialog,
64
+ co as FzEmailField,
65
+ Eo as FzFloatingNotify,
66
+ _o as FzFullAddress,
67
+ uo as FzIconToolTip,
68
+ Do as FzLoadingOverlay,
69
+ Ao as FzModalBase,
70
+ Po as FzMoneyField,
71
+ Mo as FzNumberField,
72
+ go as FzPhoneField,
73
+ Co as FzZipCodeField,
74
+ to as NAVIGATION_KEYS,
75
+ H as NOTIFY_DURATION,
76
+ Z as api,
77
+ _ as components,
78
+ j as configureApi,
79
+ v as confirm,
80
+ ao as createNumericKeydownHandler,
81
+ S as debugVuetifyInstances,
82
+ N as default,
79
83
  a as ensureVuetify,
80
- s as globalsPlugin,
81
- w as loading,
84
+ t as globalsPlugin,
85
+ U as loading,
82
86
  B as notify,
83
- y as registerLibPlugins,
84
- O as requiredVuetifyComponents,
85
- E as setupLib,
86
- X as useBreakpoint,
87
- Y as useConfirmStore,
88
- Q as useGlobals,
89
- oo as useLoading,
90
- G as useLoadingRefs,
91
- R as useNotifyStore,
92
- so as useNumericInput
87
+ A as registerLibPlugins,
88
+ L as requiredVuetifyComponents,
89
+ D as setupLib,
90
+ oo as useBreakpoint,
91
+ w as useConfirmStore,
92
+ Q as useFzDefaults,
93
+ X as useGlobals,
94
+ eo as useLoading,
95
+ Y as useLoadingRefs,
96
+ K as useNotifyStore,
97
+ io as useNumericInput
93
98
  };
94
99
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/vuetifyComponents.ts","../src/index.ts"],"sourcesContent":["/**\n * Vuetify components required by this library.\n *\n * Use this when configuring Vuetify in the consumer project to\n * register only the components this library needs, avoiding a\n * full import of `vuetify/components`.\n *\n * @example\n * // consumer's vuetify.ts\n * import { requiredVuetifyComponents } from '@forizi/ui'\n * import { ... } from 'vuetify/components' // your own components\n *\n * export default createVuetify({\n * components: {\n * ...requiredVuetifyComponents,\n * // ...your other components\n * },\n * })\n */\nimport type { Component } from 'vue';\nimport {\n VAlert,\n VBtn,\n VCard,\n VCardActions,\n VCardText,\n VCardTitle,\n VCol,\n VDialog,\n VIcon,\n VMenu,\n VProgressCircular,\n VRow,\n VSelect,\n VSpacer,\n VTextField,\n VTooltip,\n} from 'vuetify/components';\n\nexport const requiredVuetifyComponents: Record<string, Component> = {\n VAlert,\n VBtn,\n VCard,\n VCardActions,\n VCardText,\n VCardTitle,\n VCol,\n VDialog,\n VIcon,\n VMenu,\n VProgressCircular,\n VRow,\n VSelect,\n VSpacer,\n VTextField,\n VTooltip,\n};\n","import type { App } from 'vue';\nimport * as componentExports from './components';\nimport { globalsPlugin } from './plugins';\nimport { ensureVuetify } from './utils/vuetify-check';\n\nexport const components = componentExports;\n\nexport * from './components';\n\nexport * from './utils';\n\nexport * from './composables';\n\nexport { globalsPlugin } from './plugins';\n\nexport { requiredVuetifyComponents } from './vuetifyComponents';\n\nexport default function registerLibComponents(app: App) {\n Object.entries(components).forEach(([name, component]) => {\n app.component(name, component);\n });\n}\n\nexport function registerLibPlugins(app: App) {\n app.use(globalsPlugin);\n}\n\nexport function setupLib(app: App) {\n ensureVuetify(app);\n\n registerLibComponents(app);\n registerLibPlugins(app);\n}\n"],"names":["requiredVuetifyComponents","VAlert","VBtn","VCard","VCardActions","VCardText","VCardTitle","VCol","VDialog","VIcon","VMenu","VProgressCircular","VRow","VSelect","VSpacer","VTextField","VTooltip","components","componentExports","registerLibComponents","app","name","component","registerLibPlugins","globalsPlugin","setupLib","ensureVuetify"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAuCO,MAAMA,IAAuD;AAAA,EAClE,QAAAC;AAAA,EACA,MAAAC;AAAA,EACA,OAAAC;AAAA,EACA,cAAAC;AAAA,EACA,WAAAC;AAAA,EACA,YAAAC;AAAA,EACA,MAAAC;AAAA,EACA,SAAAC;AAAA,EACA,OAAAC;AAAA,EACA,OAAAC;AAAA,EACA,mBAAAC;AAAA,EACA,MAAAC;AAAA,EACA,SAAAC;AAAA,EACA,SAAAC;AAAA,EACA,YAAAC;AAAA,EACA,UAAAC;AACF,GCnDaC,IAAaC;AAY1B,SAAwBC,EAAsBC,GAAU;AACtD,SAAO,QAAQH,CAAU,EAAE,QAAQ,CAAC,CAACI,GAAMC,CAAS,MAAM;AACxD,IAAAF,EAAI,UAAUC,GAAMC,CAAS;AAAA,EAC/B,CAAC;AACH;AAEO,SAASC,EAAmBH,GAAU;AAC3C,EAAAA,EAAI,IAAII,CAAa;AACvB;AAEO,SAASC,EAASL,GAAU;AACjC,EAAAM,EAAcN,CAAG,GAEjBD,EAAsBC,CAAG,GACzBG,EAAmBH,CAAG;AACxB;"}
1
+ {"version":3,"file":"index.js","sources":["../src/vuetifyComponents.ts","../src/index.ts"],"sourcesContent":["/**\n * Vuetify components required by this library.\n *\n * Use this when configuring Vuetify in the consumer project to\n * register only the components this library needs, avoiding a\n * full import of `vuetify/components`.\n *\n * @example\n * // consumer's vuetify.ts\n * import { requiredVuetifyComponents } from '@forizi/ui'\n * import { ... } from 'vuetify/components' // your own components\n *\n * export default createVuetify({\n * components: {\n * ...requiredVuetifyComponents,\n * // ...your other components\n * },\n * })\n */\nimport type { Component } from 'vue';\nimport {\n VAlert,\n VBtn,\n VCard,\n VCardActions,\n VCardText,\n VCardTitle,\n VCol,\n VDialog,\n VIcon,\n VMenu,\n VProgressCircular,\n VRow,\n VSelect,\n VSpacer,\n VTextField,\n VTooltip,\n} from 'vuetify/components';\n\nexport const requiredVuetifyComponents: Record<string, Component> = {\n VAlert,\n VBtn,\n VCard,\n VCardActions,\n VCardText,\n VCardTitle,\n VCol,\n VDialog,\n VIcon,\n VMenu,\n VProgressCircular,\n VRow,\n VSelect,\n VSpacer,\n VTextField,\n VTooltip,\n};\n","import type { App } from 'vue';\nimport * as componentExports from './components';\nimport { globalsPlugin } from './plugins';\nimport { ensureVuetify } from './utils/vuetify-check';\n\nexport const components = componentExports;\n\nexport * from './components';\n\nexport * from './utils';\n\nexport * from './composables';\n\nexport * from './constants';\n\nexport type { FzDefaults } from './types/FzDefaults';\n\nexport { globalsPlugin } from './plugins';\n\nexport { requiredVuetifyComponents } from './vuetifyComponents';\n\nexport default function registerLibComponents(app: App) {\n Object.entries(components).forEach(([name, component]) => {\n app.component(name, component);\n });\n}\n\nexport function registerLibPlugins(app: App) {\n app.use(globalsPlugin);\n}\n\nexport function setupLib(app: App) {\n ensureVuetify(app);\n\n registerLibComponents(app);\n registerLibPlugins(app);\n}\n"],"names":["requiredVuetifyComponents","VAlert","VBtn","VCard","VCardActions","VCardText","VCardTitle","VCol","VDialog","VIcon","VMenu","VProgressCircular","VRow","VSelect","VSpacer","VTextField","VTooltip","components","componentExports","registerLibComponents","app","name","component","registerLibPlugins","globalsPlugin","setupLib","ensureVuetify"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuCO,MAAMA,IAAuD;AAAA,EAClE,QAAAC;AAAA,EACA,MAAAC;AAAA,EACA,OAAAC;AAAA,EACA,cAAAC;AAAA,EACA,WAAAC;AAAA,EACA,YAAAC;AAAA,EACA,MAAAC;AAAA,EACA,SAAAC;AAAA,EACA,OAAAC;AAAA,EACA,OAAAC;AAAA,EACA,mBAAAC;AAAA,EACA,MAAAC;AAAA,EACA,SAAAC;AAAA,EACA,SAAAC;AAAA,EACA,YAAAC;AAAA,EACA,UAAAC;AACF,GCnDaC,IAAaC;AAgB1B,SAAwBC,EAAsBC,GAAU;AACtD,SAAO,QAAQH,CAAU,EAAE,QAAQ,CAAC,CAACI,GAAMC,CAAS,MAAM;AACxD,IAAAF,EAAI,UAAUC,GAAMC,CAAS;AAAA,EAC/B,CAAC;AACH;AAEO,SAASC,EAAmBH,GAAU;AAC3C,EAAAA,EAAI,IAAII,CAAa;AACvB;AAEO,SAASC,EAASL,GAAU;AACjC,EAAAM,EAAcN,CAAG,GAEjBD,EAAsBC,CAAG,GACzBG,EAAmBH,CAAG;AACxB;"}
@@ -0,0 +1,5 @@
1
+ import type { TextFieldVariant } from '@/utils/types';
2
+ export interface FzDefaults {
3
+ variant?: TextFieldVariant;
4
+ }
5
+ //# sourceMappingURL=FzDefaults.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FzDefaults.d.ts","sourceRoot":"","sources":["../../src/types/FzDefaults.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEtD,MAAM,WAAW,UAAU;IACzB,OAAO,CAAC,EAAE,gBAAgB,CAAC;CAC5B"}
package/dist/ui.css CHANGED
@@ -1 +1 @@
1
- [data-v-80e32b79] input{text-align:right}.modal-title[data-v-e2905dad]{word-break:break-word;white-space:normal}.v-overlay-container .v-menu>.v-overlay__content,.v-overlay-container .v-select__content,.v-overlay-container .v-autocomplete__content{z-index:2500}.custom-dialog-overlay[data-v-ecb0e1a5]{position:fixed;inset:0;background-color:#00000080;z-index:2400}.dialog-fade-enter-active[data-v-ecb0e1a5],.dialog-fade-leave-active[data-v-ecb0e1a5]{transition:opacity .2s ease}.dialog-fade-enter-from[data-v-ecb0e1a5],.dialog-fade-leave-to[data-v-ecb0e1a5]{opacity:0}.dialog-fade-enter-active .v-card[data-v-ecb0e1a5],.dialog-fade-leave-active .v-card[data-v-ecb0e1a5]{transition:transform .2s ease}.dialog-fade-enter-from .v-card[data-v-ecb0e1a5],.dialog-fade-leave-to .v-card[data-v-ecb0e1a5]{transform:scale(.9)}.floating-notify[data-v-b4d8014f]{position:fixed;top:20px;right:20px;min-width:300px;max-width:500px;z-index:9999;border-radius:4px;overflow:hidden}.floating-notify[data-v-b4d8014f] .v-alert--border{border-inline-start-width:0}.progress-track[data-v-b4d8014f]{height:3px}.progress-fill[data-v-b4d8014f]{height:100%;transition:width .1s linear}.slide-fade-enter-active[data-v-b4d8014f]{transition:all .3s ease-out}.slide-fade-leave-active[data-v-b4d8014f]{transition:all .3s ease-in}.slide-fade-enter-from[data-v-b4d8014f],.slide-fade-leave-to[data-v-b4d8014f]{transform:translate(100%);opacity:0}.loading-overlay[data-v-7110b861]{position:fixed;inset:0;background-color:#000000b3;z-index:9998}.fade-enter-active[data-v-7110b861],.fade-leave-active[data-v-7110b861]{transition:opacity .2s ease}.fade-enter-from[data-v-7110b861],.fade-leave-to[data-v-7110b861]{opacity:0}.fade-delayed-enter-active[data-v-7110b861]{transition:opacity .3s ease .1s}.fade-delayed-leave-active[data-v-7110b861]{transition:opacity .2s ease}.fade-delayed-enter-from[data-v-7110b861],.fade-delayed-leave-to[data-v-7110b861]{opacity:0}[data-v-1b1e7d4e] input{text-align:right}[data-v-1b1e7d4e] input[type=number]::-webkit-inner-spin-button,[data-v-1b1e7d4e] input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}[data-v-1b1e7d4e] input[type=number]{-moz-appearance:textfield;appearance:textfield}
1
+ [data-v-a32d1159] input{text-align:right}.modal-title[data-v-e2905dad]{word-break:break-word;white-space:normal}.v-overlay-container .v-menu>.v-overlay__content,.v-overlay-container .v-select__content,.v-overlay-container .v-autocomplete__content{z-index:2500}.custom-dialog-overlay[data-v-ecb0e1a5]{position:fixed;inset:0;background-color:#00000080;z-index:2400}.dialog-fade-enter-active[data-v-ecb0e1a5],.dialog-fade-leave-active[data-v-ecb0e1a5]{transition:opacity .2s ease}.dialog-fade-enter-from[data-v-ecb0e1a5],.dialog-fade-leave-to[data-v-ecb0e1a5]{opacity:0}.dialog-fade-enter-active .v-card[data-v-ecb0e1a5],.dialog-fade-leave-active .v-card[data-v-ecb0e1a5]{transition:transform .2s ease}.dialog-fade-enter-from .v-card[data-v-ecb0e1a5],.dialog-fade-leave-to .v-card[data-v-ecb0e1a5]{transform:scale(.9)}.floating-notify[data-v-b4d8014f]{position:fixed;top:20px;right:20px;min-width:300px;max-width:500px;z-index:9999;border-radius:4px;overflow:hidden}.floating-notify[data-v-b4d8014f] .v-alert--border{border-inline-start-width:0}.progress-track[data-v-b4d8014f]{height:3px}.progress-fill[data-v-b4d8014f]{height:100%;transition:width .1s linear}.slide-fade-enter-active[data-v-b4d8014f]{transition:all .3s ease-out}.slide-fade-leave-active[data-v-b4d8014f]{transition:all .3s ease-in}.slide-fade-enter-from[data-v-b4d8014f],.slide-fade-leave-to[data-v-b4d8014f]{transform:translate(100%);opacity:0}.loading-overlay[data-v-7110b861]{position:fixed;inset:0;background-color:#000000b3;z-index:9998}.fade-enter-active[data-v-7110b861],.fade-leave-active[data-v-7110b861]{transition:opacity .2s ease}.fade-enter-from[data-v-7110b861],.fade-leave-to[data-v-7110b861]{opacity:0}.fade-delayed-enter-active[data-v-7110b861]{transition:opacity .3s ease .1s}.fade-delayed-leave-active[data-v-7110b861]{transition:opacity .2s ease}.fade-delayed-enter-from[data-v-7110b861],.fade-delayed-leave-to[data-v-7110b861]{opacity:0}[data-v-c53749c6] input{text-align:right}[data-v-c53749c6] input[type=number]::-webkit-inner-spin-button,[data-v-c53749c6] input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}[data-v-c53749c6] input[type=number]{-moz-appearance:textfield;appearance:textfield}
@@ -1,25 +1,26 @@
1
- import { n as i, u as f } from "../chunks/utils/notify-CE_gbk11.js";
2
- import { l as p, u } from "../chunks/utils/loading-dXhCGa6R.js";
3
- import { c as x, u as c } from "../chunks/utils/confirm-DiGEPjua.js";
4
- import { a as d, c as g } from "../chunks/utils/api-N1Cju-89.js";
5
- import { A, N } from "../chunks/utils/types-DV6li0y5.js";
6
- import { d as O, e as l } from "../chunks/utils/vuetify-check-DRI6ZYnO.js";
1
+ import { n as f, u as m } from "../chunks/utils/notify-CE_gbk11.js";
2
+ import { l as u, u as n } from "../chunks/utils/loading-dXhCGa6R.js";
3
+ import { c, u as I } from "../chunks/utils/confirm-DiGEPjua.js";
4
+ import { a as g, c as y } from "../chunks/utils/api-N1Cju-89.js";
5
+ import { A as N, N as T } from "../chunks/utils/types-DV6li0y5.js";
6
+ import { d as l, e as R } from "../chunks/utils/vuetify-check-DRI6ZYnO.js";
7
+ import "../chunks/composables/useFzDefaults-BAOcJYaF.js";
7
8
  import "../chunks/composables/useGlobals-AagqYKoP.js";
8
9
  import "../chunks/composables/useBreakpoint-DnFIVluv.js";
9
10
  import "../chunks/composables/useLoading-Cu1i2QIr.js";
10
11
  import "../chunks/composables/useNumericInput-DGw52-Ds.js";
11
12
  export {
12
- A as API_TIMEOUT,
13
- N as NOTIFY_DURATION,
14
- d as api,
15
- g as configureApi,
16
- x as confirm,
17
- O as debugVuetifyInstances,
18
- l as ensureVuetify,
19
- p as loading,
20
- i as notify,
21
- c as useConfirmStore,
22
- u as useLoadingRefs,
23
- f as useNotifyStore
13
+ N as API_TIMEOUT,
14
+ T as NOTIFY_DURATION,
15
+ g as api,
16
+ y as configureApi,
17
+ c as confirm,
18
+ l as debugVuetifyInstances,
19
+ R as ensureVuetify,
20
+ u as loading,
21
+ f as notify,
22
+ I as useConfirmStore,
23
+ n as useLoadingRefs,
24
+ m as useNotifyStore
24
25
  };
25
26
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@forizi-tecnologia/ui",
3
- "version": "0.0.4",
3
+ "version": "0.0.5",
4
4
  "description": "Forizi UI — Vue 3 + TypeScript + Vuetify 3 component library",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -1,86 +0,0 @@
1
- import { defineComponent as k, ref as x, computed as t, resolveComponent as m, createBlock as $, openBlock as z, createSlots as C, withCtx as o, renderSlot as c, createVNode as E, createTextVNode as M, toDisplayString as A } from "vue";
2
- const O = /* @__PURE__ */ k({
3
- __name: "FzEmailField",
4
- props: {
5
- modelValue: { default: "" },
6
- label: { default: "Email" },
7
- rules: { default: () => [] },
8
- disabled: { type: Boolean, default: !1 },
9
- hint: { default: "" },
10
- required: { type: Boolean, default: !1 },
11
- validateOnBlur: { type: Boolean, default: !0 },
12
- requiredMessage: { default: "" },
13
- invalidMessage: { default: "" },
14
- variant: { default: "underlined" },
15
- maxlength: { default: 100 }
16
- },
17
- emits: ["update:modelValue", "isValid"],
18
- setup(a, { emit: f }) {
19
- const l = a, r = f, v = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/, n = x(!1), p = t(() => !!l.hint), h = t(() => n.value ? "mdi-email-check" : "mdi-email-outline"), V = t(() => n.value ? "success" : void 0), d = t({
20
- get: () => l.modelValue,
21
- set: (e) => {
22
- l.validateOnBlur || s(e), r("update:modelValue", e);
23
- }
24
- }), g = t(() => [u, ...l.rules]);
25
- function u(e) {
26
- return e ? v.test(e) ? !0 : l.invalidMessage || "Formato de e-mail inválido" : l.required ? l.requiredMessage || "Email é obrigatório" : !0;
27
- }
28
- function s(e) {
29
- const i = u(e);
30
- n.value = i === !0, r("isValid", n.value);
31
- }
32
- function B() {
33
- l.validateOnBlur && s(d.value);
34
- }
35
- return (e, i) => {
36
- const b = m("v-icon"), y = m("v-text-field");
37
- return z(), $(y, {
38
- modelValue: d.value,
39
- "onUpdate:modelValue": i[0] || (i[0] = (q) => d.value = q),
40
- label: a.label,
41
- rules: g.value,
42
- disabled: a.disabled,
43
- hint: a.hint,
44
- "persistent-hint": p.value,
45
- required: a.required,
46
- variant: a.variant,
47
- maxlength: a.maxlength,
48
- type: "email",
49
- inputmode: "email",
50
- autocomplete: "email",
51
- onBlur: B
52
- }, C({ _: 2 }, [
53
- e.$slots.prepend ? {
54
- name: "prepend",
55
- fn: o(() => [
56
- c(e.$slots, "prepend")
57
- ]),
58
- key: "0"
59
- } : void 0,
60
- e.$slots.append ? {
61
- name: "append",
62
- fn: o(() => [
63
- c(e.$slots, "append")
64
- ]),
65
- key: "1"
66
- } : void 0,
67
- e.$slots.prepend ? void 0 : {
68
- name: "prepend-inner",
69
- fn: o(() => [
70
- E(b, { color: V.value }, {
71
- default: o(() => [
72
- M(A(h.value), 1)
73
- ]),
74
- _: 1
75
- }, 8, ["color"])
76
- ]),
77
- key: "2"
78
- }
79
- ]), 1032, ["modelValue", "label", "rules", "disabled", "hint", "persistent-hint", "required", "variant", "maxlength"]);
80
- };
81
- }
82
- });
83
- export {
84
- O as _
85
- };
86
- //# sourceMappingURL=inputs-FzEmailField-B07tsUyr.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"inputs-FzEmailField-B07tsUyr.js","sources":["../../../src/components/inputs/FzEmailField.vue"],"sourcesContent":["<template>\n <v-text-field\n v-model=\"innerValue\"\n :label=\"label\"\n :rules=\"mergedRules\"\n :disabled=\"disabled\"\n :hint=\"hint\"\n :persistent-hint=\"hasHint\"\n :required=\"required\"\n :variant=\"variant\"\n :maxlength=\"maxlength\"\n type=\"email\"\n inputmode=\"email\"\n autocomplete=\"email\"\n @blur=\"handleBlur\"\n >\n <template v-if=\"$slots.prepend\" #prepend>\n <slot name=\"prepend\" />\n </template>\n <template v-if=\"$slots.append\" #append>\n <slot name=\"append\" />\n </template>\n <template v-if=\"!$slots.prepend\" #prepend-inner>\n <v-icon :color=\"iconColor\">\n {{ emailIcon }}\n </v-icon>\n </template>\n </v-text-field>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, computed } from 'vue';\nimport type { TextFieldVariant } from '@/utils/types';\n\ntype ValidationRule = (value: string) => boolean | string;\n\ninterface Props {\n modelValue?: string\n label?: string\n rules?: ValidationRule[]\n disabled?: boolean\n hint?: string\n required?: boolean\n validateOnBlur?: boolean\n requiredMessage?: string\n invalidMessage?: string\n variant?: TextFieldVariant\n maxlength?: number\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n modelValue: '',\n label: 'Email',\n rules: () => [],\n disabled: false,\n hint: '',\n required: false,\n validateOnBlur: true,\n requiredMessage: '',\n invalidMessage: '',\n variant: 'underlined',\n maxlength: 100,\n});\n\nconst emit = defineEmits<{\n 'update:modelValue': [value: string]\n isValid: [value: boolean]\n}>();\n\nconst emailRegex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$/;\n\nconst isValid = ref(false);\n\nconst hasHint = computed(() => !!props.hint);\n\nconst emailIcon = computed(() => isValid.value ? 'mdi-email-check' : 'mdi-email-outline');\n\nconst iconColor = computed(() => isValid.value ? 'success' : undefined);\n\nconst innerValue = computed({\n get: () => props.modelValue,\n set: (val: string) => {\n if (!props.validateOnBlur) resolveValidation(val);\n\n emit('update:modelValue', val);\n },\n});\n\nconst mergedRules = computed(() => [validateEmail, ...props.rules]);\n\nfunction validateEmail(value: string): boolean | string {\n if (!value) return props.required ? (props.requiredMessage || 'Email é obrigatório') : true;\n\n if (!emailRegex.test(value)) return props.invalidMessage || 'Formato de e-mail inválido';\n\n return true;\n}\n\nfunction resolveValidation(value: string) {\n const result = validateEmail(value);\n isValid.value = result === true;\n emit('isValid', isValid.value);\n}\n\nfunction handleBlur() {\n if (!props.validateOnBlur) return;\n\n resolveValidation(innerValue.value);\n}\n</script>\n"],"names":["props","__props","emit","__emit","emailRegex","isValid","ref","hasHint","computed","emailIcon","iconColor","innerValue","val","resolveValidation","mergedRules","validateEmail","value","result","handleBlur","_createBlock","_component_v_text_field","$event","$slots","_renderSlot","_ctx","_createVNode","_component_v_icon"],"mappings":";;;;;;;;;;;;;;;;;;AAkDA,UAAMA,IAAQC,GAcRC,IAAOC,GAKPC,IAAa,oDAEbC,IAAUC,EAAI,EAAK,GAEnBC,IAAUC,EAAS,MAAM,CAAC,CAACR,EAAM,IAAI,GAErCS,IAAYD,EAAS,MAAMH,EAAQ,QAAQ,oBAAoB,mBAAmB,GAElFK,IAAYF,EAAS,MAAMH,EAAQ,QAAQ,YAAY,MAAS,GAEhEM,IAAaH,EAAS;AAAA,MAC1B,KAAK,MAAMR,EAAM;AAAA,MACjB,KAAK,CAACY,MAAgB;AACpB,QAAKZ,EAAM,kBAAgBa,EAAkBD,CAAG,GAEhDV,EAAK,qBAAqBU,CAAG;AAAA,MAC/B;AAAA,IAAA,CACD,GAEKE,IAAcN,EAAS,MAAM,CAACO,GAAe,GAAGf,EAAM,KAAK,CAAC;AAElE,aAASe,EAAcC,GAAiC;AACtD,aAAKA,IAEAZ,EAAW,KAAKY,CAAK,IAEnB,KAF6BhB,EAAM,kBAAkB,+BAFzCA,EAAM,WAAYA,EAAM,mBAAmB,wBAAyB;AAAA,IAKzF;AAEA,aAASa,EAAkBG,GAAe;AACxC,YAAMC,IAASF,EAAcC,CAAK;AAClC,MAAAX,EAAQ,QAAQY,MAAW,IAC3Bf,EAAK,WAAWG,EAAQ,KAAK;AAAA,IAC/B;AAEA,aAASa,IAAa;AACpB,MAAKlB,EAAM,kBAEXa,EAAkBF,EAAW,KAAK;AAAA,IACpC;;;kBA3GEQ,EA0BeC,GAAA;AAAA,oBAzBJT,EAAA;AAAA,sDAAAA,EAAU,QAAAU;AAAA,QAClB,OAAOpB,EAAA;AAAA,QACP,OAAOa,EAAA;AAAA,QACP,UAAUb,EAAA;AAAA,QACV,MAAMA,EAAA;AAAA,QACN,mBAAiBM,EAAA;AAAA,QACjB,UAAUN,EAAA;AAAA,QACV,SAASA,EAAA;AAAA,QACT,WAAWA,EAAA;AAAA,QACZ,MAAK;AAAA,QACL,WAAU;AAAA,QACV,cAAa;AAAA,QACZ,QAAMiB;AAAA,MAAA;QAESI,EAAAA,OAAO;gBAAU;AAAA,gBAC/B,MAAuB;AAAA,YAAvBC,EAAuBC,EAAA,QAAA,SAAA;AAAA,UAAA;;;QAETF,EAAAA,OAAO;gBAAS;AAAA,gBAC9B,MAAsB;AAAA,YAAtBC,EAAsBC,EAAA,QAAA,QAAA;AAAA,UAAA;;;QAEPF,EAAAA,OAAO;gBAAU;AAAA,gBAChC,MAES;AAAA,YAFTG,EAESC,GAAA,EAFA,OAAOhB,EAAA,SAAS;AAAA,yBACvB,MAAe;AAAA,oBAAZD,EAAA,KAAS,GAAA,CAAA;AAAA,cAAA;;;;;;;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"inputs-FzFullAddress-e05j6MFg.js","sources":["../../../src/components/inputs/FzFullAddress.vue"],"sourcesContent":["<template>\n <v-row>\n <v-col cols=\"12\" md=\"4\">\n <FzZipCodeField\n v-model=\"internal.zipCode\"\n :disabled=\"disabled\"\n @zip-code-found=\"onZipCodeFound\"\n @zip-code-not-found=\"onZipCodeNotFound\"\n />\n </v-col>\n\n <v-col cols=\"12\" md=\"8\">\n <v-text-field\n v-model=\"internal.street\"\n :label=\"labels.street\"\n :disabled=\"isAutoDisabled\"\n :variant=\"variant\"\n />\n </v-col>\n\n <v-col cols=\"12\" md=\"3\">\n <v-text-field v-model=\"internal.number\" :label=\"labels.number\" :disabled=\"disabled\" :variant=\"variant\" />\n </v-col>\n\n <v-col cols=\"12\" md=\"5\">\n <v-text-field v-model=\"internal.complement\" :label=\"labels.complement\" :disabled=\"disabled\" :variant=\"variant\" />\n </v-col>\n\n <v-col cols=\"12\" md=\"4\">\n <v-text-field\n v-model=\"internal.neighborhood\"\n :label=\"labels.neighborhood\"\n :disabled=\"isAutoDisabled\"\n :variant=\"variant\"\n />\n </v-col>\n\n <v-col cols=\"12\" md=\"6\">\n <v-text-field\n v-model=\"internal.city\"\n :label=\"labels.city\"\n :disabled=\"isAutoDisabled\"\n :variant=\"variant\"\n />\n </v-col>\n\n <v-col cols=\"12\" md=\"6\">\n <v-select\n v-model=\"internal.state\"\n :label=\"labels.state\"\n :items=\"brazilianStates\"\n item-title=\"name\"\n item-value=\"uf\"\n :disabled=\"isAutoDisabled\"\n :variant=\"variant\"\n />\n </v-col>\n </v-row>\n</template>\n\n<script setup lang=\"ts\">\nimport { reactive, ref, watch, computed, nextTick } from 'vue';\nimport type { TextFieldVariant } from '@/utils/types';\nimport FzZipCodeField, { type ZipCodeResponse } from './FzZipCodeField.vue';\n\nexport interface Address {\n zipCode: string\n street: string\n number: string\n complement: string\n neighborhood: string\n city: string\n state: string\n}\n\nexport interface AddressLabels {\n zipCode?: string\n street?: string\n number?: string\n complement?: string\n neighborhood?: string\n city?: string\n state?: string\n}\n\ninterface Props {\n modelValue?: Partial<Address>\n disabled?: boolean\n disabledFields?: boolean\n labels?: AddressLabels\n variant?: TextFieldVariant\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n modelValue: () => ({}),\n disabled: false,\n disabledFields: false,\n labels: () => ({}),\n variant: 'underlined',\n});\n\nconst emit = defineEmits<{\n 'update:modelValue': [value: Address]\n}>();\n\nlet skipInternalEmit = false;\n\nconst brazilianStates = [\n { uf: 'AC', name: 'AC - Acre' },\n { uf: 'AL', name: 'AL - Alagoas' },\n { uf: 'AP', name: 'AP - Amapá' },\n { uf: 'AM', name: 'AM - Amazonas' },\n { uf: 'BA', name: 'BA - Bahia' },\n { uf: 'CE', name: 'CE - Ceará' },\n { uf: 'DF', name: 'DF - Distrito Federal' },\n { uf: 'ES', name: 'ES - Espírito Santo' },\n { uf: 'GO', name: 'GO - Goiás' },\n { uf: 'MA', name: 'MA - Maranhão' },\n { uf: 'MT', name: 'MT - Mato Grosso' },\n { uf: 'MS', name: 'MS - Mato Grosso do Sul' },\n { uf: 'MG', name: 'MG - Minas Gerais' },\n { uf: 'PA', name: 'PA - Pará' },\n { uf: 'PB', name: 'PB - Paraíba' },\n { uf: 'PR', name: 'PR - Paraná' },\n { uf: 'PE', name: 'PE - Pernambuco' },\n { uf: 'PI', name: 'PI - Piauí' },\n { uf: 'RJ', name: 'RJ - Rio de Janeiro' },\n { uf: 'RN', name: 'RN - Rio Grande do Norte' },\n { uf: 'RS', name: 'RS - Rio Grande do Sul' },\n { uf: 'RO', name: 'RO - Rondônia' },\n { uf: 'RR', name: 'RR - Roraima' },\n { uf: 'SC', name: 'SC - Santa Catarina' },\n { uf: 'SP', name: 'SP - São Paulo' },\n { uf: 'SE', name: 'SE - Sergipe' },\n { uf: 'TO', name: 'TO - Tocantins' },\n];\n\nconst internal = reactive<Address>({\n zipCode: '',\n street: '',\n number: '',\n complement: '',\n neighborhood: '',\n city: '',\n state: '',\n ...props.modelValue,\n});\n\nconst zipCodeFound = ref(false);\n\nconst labels = computed(() => ({\n zipCode: props.labels.zipCode ?? 'CEP',\n street: props.labels.street ?? 'Logradouro',\n number: props.labels.number ?? 'Número',\n complement: props.labels.complement ?? 'Complemento',\n neighborhood: props.labels.neighborhood ?? 'Bairro',\n city: props.labels.city ?? 'Cidade',\n state: props.labels.state ?? 'Estado',\n}));\n\nconst isAutoDisabled = computed(() => props.disabled || (props.disabledFields && zipCodeFound.value));\n\nfunction onZipCodeFound(data: ZipCodeResponse) {\n internal.street = data.street;\n internal.neighborhood = data.neighborhood;\n internal.city = data.city;\n internal.state = data.state;\n zipCodeFound.value = true;\n}\n\nfunction onZipCodeNotFound() {\n zipCodeFound.value = false;\n}\n\nwatch(() => props.modelValue, (val) => {\n if (!val) return;\n\n skipInternalEmit = true;\n\n Object.assign(internal, val);\n\n nextTick(() => {\n skipInternalEmit = false;\n });\n}, { deep: true, immediate: true });\n\nwatch(internal, (val) => {\n if (skipInternalEmit) return;\n\n emit('update:modelValue', { ...val });\n}, { deep: true });\n</script>\n"],"names":["props","__props","emit","__emit","skipInternalEmit","brazilianStates","internal","reactive","zipCodeFound","ref","labels","computed","isAutoDisabled","onZipCodeFound","data","onZipCodeNotFound","watch","val","nextTick","_createBlock","_component_v_row","_createVNode","_component_v_col","FzZipCodeField","_cache","$event","_component_v_text_field","_component_v_select"],"mappings":"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"}
@@ -1,106 +0,0 @@
1
- import { defineComponent as $, toRef as k, resolveComponent as x, createBlock as C, openBlock as B, unref as r, createSlots as I, withCtx as c, renderSlot as m } from "vue";
2
- import { u as N, c as V } from "../composables/useNumericInput-DGw52-Ds.js";
3
- const D = (o, u) => {
4
- const t = o.__vccOpts || o;
5
- for (const [i, d] of u)
6
- t[i] = d;
7
- return t;
8
- }, S = " ", K = /* @__PURE__ */ $({
9
- __name: "FzMoneyField",
10
- props: {
11
- modelValue: { default: 0 },
12
- label: { default: "" },
13
- rules: { default: () => [] },
14
- disabled: { type: Boolean, default: !1 },
15
- hint: { default: "" },
16
- persistentHint: { type: Boolean, default: !1 },
17
- currency: { default: "BRL" },
18
- locale: { default: "pt-BR" },
19
- variant: { default: "underlined" },
20
- max: { default: 999e6 },
21
- min: { default: void 0 }
22
- },
23
- emits: ["update:modelValue"],
24
- setup(o, { emit: u }) {
25
- const t = o, i = u;
26
- function d(e) {
27
- const l = Math.abs(e);
28
- try {
29
- const a = l.toLocaleString(t.locale, {
30
- style: "currency",
31
- currency: t.currency,
32
- minimumFractionDigits: 2,
33
- maximumFractionDigits: 2
34
- }).split(S).join(" ");
35
- return e < 0 ? `-${a}` : a;
36
- } catch {
37
- const n = t.currency, a = l.toLocaleString(t.locale, {
38
- minimumFractionDigits: 2,
39
- maximumFractionDigits: 2
40
- });
41
- return e < 0 ? `-${n} ${a}` : `${n} ${a}`;
42
- }
43
- }
44
- function f(e) {
45
- const l = e.includes("-"), n = e.replace(/\D/g, "");
46
- if (!n) return 0;
47
- const a = parseInt(n) / 100;
48
- return Number((l ? -a : a).toFixed(2));
49
- }
50
- const { formattedValue: s, moveCursorToEnd: p, handleInput: v, handleFocus: y, handleClick: b } = N(
51
- k(t, "modelValue"),
52
- (e) => i("update:modelValue", e),
53
- d,
54
- f
55
- );
56
- function h(e) {
57
- t.max !== void 0 && e > t.max || t.min !== void 0 && e < t.min || (i("update:modelValue", e), s.value = d(e), p());
58
- }
59
- function F(e, l) {
60
- const n = parseInt(e || "0") / 100;
61
- return l ? -n : n;
62
- }
63
- const g = V(
64
- s,
65
- h,
66
- F
67
- );
68
- return (e, l) => {
69
- const n = x("v-text-field");
70
- return B(), C(n, {
71
- "model-value": r(s),
72
- label: o.label,
73
- rules: o.rules,
74
- disabled: o.disabled,
75
- hint: o.hint,
76
- "persistent-hint": o.persistentHint,
77
- variant: o.variant,
78
- inputmode: "decimal",
79
- "onUpdate:modelValue": r(v),
80
- onFocus: r(y),
81
- onClick: r(b),
82
- onKeydown: r(g)
83
- }, I({ _: 2 }, [
84
- e.$slots.prepend ? {
85
- name: "prepend",
86
- fn: c(() => [
87
- m(e.$slots, "prepend", {}, void 0, !0)
88
- ]),
89
- key: "0"
90
- } : void 0,
91
- e.$slots.append ? {
92
- name: "append",
93
- fn: c(() => [
94
- m(e.$slots, "append", {}, void 0, !0)
95
- ]),
96
- key: "1"
97
- } : void 0
98
- ]), 1032, ["model-value", "label", "rules", "disabled", "hint", "persistent-hint", "variant", "onUpdate:modelValue", "onFocus", "onClick", "onKeydown"]);
99
- };
100
- }
101
- }), z = /* @__PURE__ */ D(K, [["__scopeId", "data-v-80e32b79"]]);
102
- export {
103
- z as F,
104
- D as _
105
- };
106
- //# sourceMappingURL=inputs-FzMoneyField-BxAg9Bd_.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"inputs-FzMoneyField-BxAg9Bd_.js","sources":["../../../src/components/inputs/FzMoneyField.vue"],"sourcesContent":["<template>\n <v-text-field\n :model-value=\"formattedValue\"\n :label=\"label\"\n :rules=\"rules\"\n :disabled=\"disabled\"\n :hint=\"hint\"\n :persistent-hint=\"persistentHint\"\n :variant=\"variant\"\n inputmode=\"decimal\"\n @update:model-value=\"handleInput\"\n @focus=\"handleFocus\"\n @click=\"handleClick\"\n @keydown=\"handleKeydown\"\n >\n <template v-if=\"$slots.prepend\" #prepend>\n <slot name=\"prepend\" />\n </template>\n <template v-if=\"$slots.append\" #append>\n <slot name=\"append\" />\n </template>\n </v-text-field>\n</template>\n\n<script setup lang=\"ts\">\nimport { toRef } from 'vue';\nimport { useNumericInput, createNumericKeydownHandler } from '@/composables/useNumericInput';\nimport type { TextFieldVariant } from '@/utils/types';\n\nconst NON_BREAKING_SPACE = '\\u00a0';\n\ntype ValidationRule = (value: string) => boolean | string;\n\ninterface Props {\n modelValue?: number | null\n label?: string\n rules?: ValidationRule[]\n disabled?: boolean\n hint?: string\n persistentHint?: boolean\n currency?: string\n locale?: string\n variant?: TextFieldVariant\n max?: number\n min?: number\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n modelValue: 0,\n label: '',\n rules: () => [],\n disabled: false,\n hint: '',\n persistentHint: false,\n currency: 'BRL',\n locale: 'pt-BR',\n variant: 'underlined',\n max: 999000000,\n min: undefined,\n});\n\nconst emit = defineEmits<{\n 'update:modelValue': [value: number]\n}>();\n\nfunction formatMoney(value: number): string {\n const absValue = Math.abs(value);\n\n try {\n const formatted = absValue.toLocaleString(props.locale, {\n style: 'currency',\n currency: props.currency,\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n });\n\n const normalized = formatted.split(NON_BREAKING_SPACE).join(' ');\n\n return value < 0 ? `-${normalized}` : normalized;\n } catch {\n const currencySymbol = props.currency;\n\n const formatted = absValue.toLocaleString(props.locale, {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n });\n\n return value < 0 ? `-${currencySymbol} ${formatted}` : `${currencySymbol} ${formatted}`;\n }\n}\n\nfunction parseMoneyInput(input: string): number {\n const isNegative = input.includes('-');\n const numbers = input.replace(/\\D/g, '');\n\n if (!numbers) return 0;\n\n const value = parseInt(numbers) / 100;\n const rounded = Number((isNegative ? -value : value).toFixed(2));\n\n return rounded;\n}\n\nconst { formattedValue, moveCursorToEnd, handleInput, handleFocus, handleClick } = useNumericInput(\n toRef(props, 'modelValue'),\n (val: number) => emit('update:modelValue', val),\n formatMoney,\n parseMoneyInput,\n);\n\nfunction updateValue(newValue: number) {\n if (props.max !== undefined && newValue > props.max) return;\n\n if (props.min !== undefined && newValue < props.min) return;\n\n emit('update:modelValue', newValue);\n formattedValue.value = formatMoney(newValue);\n moveCursorToEnd();\n}\n\nfunction computeFromDigits(digits: string, isNegative: boolean): number {\n const value = parseInt(digits || '0') / 100;\n\n return isNegative ? -value : value;\n}\n\nconst handleKeydown = createNumericKeydownHandler(\n formattedValue,\n updateValue,\n computeFromDigits,\n);\n</script>\n\n<style scoped>\n:deep(input) {\n text-align: right;\n}\n</style>\n"],"names":["NON_BREAKING_SPACE","props","__props","emit","__emit","formatMoney","value","absValue","normalized","currencySymbol","formatted","parseMoneyInput","input","isNegative","numbers","formattedValue","moveCursorToEnd","handleInput","handleFocus","handleClick","useNumericInput","toRef","val","updateValue","newValue","computeFromDigits","digits","handleKeydown","createNumericKeydownHandler","_createBlock","_component_v_text_field","_unref","$slots","_renderSlot","_ctx"],"mappings":";;;;;;;GA6BMA,IAAqB;;;;;;;;;;;;;;;;;AAkB3B,UAAMC,IAAQC,GAcRC,IAAOC;AAIb,aAASC,EAAYC,GAAuB;AAC1C,YAAMC,IAAW,KAAK,IAAID,CAAK;AAE/B,UAAI;AAQF,cAAME,IAPYD,EAAS,eAAeN,EAAM,QAAQ;AAAA,UACtD,OAAO;AAAA,UACP,UAAUA,EAAM;AAAA,UAChB,uBAAuB;AAAA,UACvB,uBAAuB;AAAA,QAAA,CACxB,EAE4B,MAAMD,CAAkB,EAAE,KAAK,GAAG;AAE/D,eAAOM,IAAQ,IAAI,IAAIE,CAAU,KAAKA;AAAA,MACxC,QAAQ;AACN,cAAMC,IAAiBR,EAAM,UAEvBS,IAAYH,EAAS,eAAeN,EAAM,QAAQ;AAAA,UACtD,uBAAuB;AAAA,UACvB,uBAAuB;AAAA,QAAA,CACxB;AAED,eAAOK,IAAQ,IAAI,IAAIG,CAAc,IAAIC,CAAS,KAAK,GAAGD,CAAc,IAAIC,CAAS;AAAA,MACvF;AAAA,IACF;AAEA,aAASC,EAAgBC,GAAuB;AAC9C,YAAMC,IAAaD,EAAM,SAAS,GAAG,GAC/BE,IAAUF,EAAM,QAAQ,OAAO,EAAE;AAEvC,UAAI,CAACE,EAAS,QAAO;AAErB,YAAMR,IAAQ,SAASQ,CAAO,IAAI;AAGlC,aAFgB,QAAQD,IAAa,CAACP,IAAQA,GAAO,QAAQ,CAAC,CAAC;AAAA,IAGjE;AAEA,UAAM,EAAE,gBAAAS,GAAgB,iBAAAC,GAAiB,aAAAC,GAAa,aAAAC,GAAa,aAAAC,MAAgBC;AAAA,MACjFC,EAAMpB,GAAO,YAAY;AAAA,MACzB,CAACqB,MAAgBnB,EAAK,qBAAqBmB,CAAG;AAAA,MAC9CjB;AAAA,MACAM;AAAA,IAAA;AAGF,aAASY,EAAYC,GAAkB;AACrC,MAAIvB,EAAM,QAAQ,UAAauB,IAAWvB,EAAM,OAE5CA,EAAM,QAAQ,UAAauB,IAAWvB,EAAM,QAEhDE,EAAK,qBAAqBqB,CAAQ,GAClCT,EAAe,QAAQV,EAAYmB,CAAQ,GAC3CR,EAAA;AAAA,IACF;AAEA,aAASS,EAAkBC,GAAgBb,GAA6B;AACtE,YAAMP,IAAQ,SAASoB,KAAU,GAAG,IAAI;AAExC,aAAOb,IAAa,CAACP,IAAQA;AAAA,IAC/B;AAEA,UAAMqB,IAAgBC;AAAA,MACpBb;AAAA,MACAQ;AAAA,MACAE;AAAA,IAAA;;;kBAhIAI,EAoBeC,GAAA;AAAA,QAnBZ,eAAaC,EAAAhB,CAAA;AAAA,QACb,OAAOb,EAAA;AAAA,QACP,OAAOA,EAAA;AAAA,QACP,UAAUA,EAAA;AAAA,QACV,MAAMA,EAAA;AAAA,QACN,mBAAiBA,EAAA;AAAA,QACjB,SAASA,EAAA;AAAA,QACV,WAAU;AAAA,QACT,uBAAoB6B,EAAAd,CAAA;AAAA,QACpB,SAAOc,EAAAb,CAAA;AAAA,QACP,SAAOa,EAAAZ,CAAA;AAAA,QACP,WAASY,EAAAJ,CAAA;AAAA,MAAA;QAEMK,EAAAA,OAAO;gBAAU;AAAA,gBAC/B,MAAuB;AAAA,YAAvBC,EAAuBC,EAAA,QAAA,WAAA,CAAA,GAAA,QAAA,EAAA;AAAA,UAAA;;;QAETF,EAAAA,OAAO;gBAAS;AAAA,gBAC9B,MAAsB;AAAA,YAAtBC,EAAsBC,EAAA,QAAA,UAAA,CAAA,GAAA,QAAA,EAAA;AAAA,UAAA;;;;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"inputs-FzNumberField-BAPRZpBo.js","sources":["../../../src/components/inputs/FzNumberField.vue"],"sourcesContent":["<template>\n <v-text-field\n :model-value=\"formattedValue\"\n :label=\"label\"\n :rules=\"rules\"\n :disabled=\"disabled\"\n :hint=\"hint\"\n :persistent-hint=\"persistentHint\"\n :variant=\"variant\"\n inputmode=\"decimal\"\n @update:model-value=\"handleInput\"\n @focus=\"handleFocus\"\n @click=\"handleClick\"\n @keydown=\"handleKeydown\"\n >\n <template v-if=\"$slots.prepend\" #prepend>\n <slot name=\"prepend\" />\n </template>\n <template v-if=\"$slots.append\" #append>\n <slot name=\"append\" />\n </template>\n </v-text-field>\n</template>\n\n<script setup lang=\"ts\">\nimport { toRef } from 'vue';\nimport { useNumericInput, createNumericKeydownHandler } from '@/composables/useNumericInput';\nimport type { TextFieldVariant } from '@/utils/types';\n\ntype ValidationRule = (value: string) => boolean | string;\n\ninterface Props {\n modelValue?: number | null\n label?: string\n rules?: ValidationRule[]\n disabled?: boolean\n hint?: string\n persistentHint?: boolean\n decimalPlaces?: number\n locale?: string\n allowNegative?: boolean\n variant?: TextFieldVariant\n max?: number\n min?: number\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n modelValue: 0,\n label: '',\n rules: () => [],\n disabled: false,\n hint: '',\n persistentHint: false,\n decimalPlaces: 0,\n locale: 'pt-BR',\n allowNegative: true,\n variant: 'underlined',\n max: 999000000,\n min: undefined,\n});\n\nconst emit = defineEmits<{\n 'update:modelValue': [value: number]\n}>();\n\nfunction formatNumber(value: number): string {\n const absValue = Math.abs(value);\n\n const formatted = absValue.toLocaleString(props.locale, {\n minimumFractionDigits: props.decimalPlaces,\n maximumFractionDigits: props.decimalPlaces,\n });\n\n return value < 0 ? '-' + formatted : formatted;\n}\n\nfunction parseNumberInput(input: string): number {\n const isNegative = input.includes('-');\n const numbers = input.replace(/\\D/g, '');\n\n if (!numbers) return 0;\n\n let value: number;\n\n if (props.decimalPlaces === 0) {\n value = parseInt(numbers);\n } else {\n const divisor = Math.pow(10, props.decimalPlaces);\n value = parseInt(numbers) / divisor;\n }\n\n const rounded = Number(value.toFixed(props.decimalPlaces));\n\n return isNegative && props.allowNegative ? -rounded : rounded;\n}\n\nconst { formattedValue, moveCursorToEnd, handleInput, handleFocus, handleClick } = useNumericInput(\n toRef(props, 'modelValue'),\n (val: number) => emit('update:modelValue', val),\n formatNumber,\n parseNumberInput,\n);\n\nfunction updateValue(newValue: number) {\n if (props.max !== undefined && newValue > props.max) return;\n\n if (props.min !== undefined && newValue < props.min) return;\n\n emit('update:modelValue', newValue);\n formattedValue.value = formatNumber(newValue);\n moveCursorToEnd();\n}\n\nfunction computeFromDigits(digits: string, isNegative: boolean): number {\n if (!digits) return 0;\n\n let value: number;\n\n if (props.decimalPlaces === 0) {\n value = parseInt(digits);\n } else {\n const divisor = Math.pow(10, props.decimalPlaces);\n value = parseInt(digits) / divisor;\n }\n\n const result = Number(value.toFixed(props.decimalPlaces));\n\n return isNegative ? -result : result;\n}\n\nconst handleKeydown = createNumericKeydownHandler(\n formattedValue,\n updateValue,\n computeFromDigits,\n () => ({ allowNegative: props.allowNegative }),\n);\n</script>\n\n<style scoped>\n:deep(input) {\n text-align: right;\n}\n\n:deep(input[type='number']::-webkit-inner-spin-button),\n:deep(input[type='number']::-webkit-outer-spin-button) {\n -webkit-appearance: none;\n margin: 0;\n}\n\n:deep(input[type='number']) {\n -moz-appearance: textfield;\n appearance: textfield;\n}\n</style>\n"],"names":["props","__props","emit","__emit","formatNumber","value","formatted","parseNumberInput","input","isNegative","numbers","divisor","rounded","formattedValue","moveCursorToEnd","handleInput","handleFocus","handleClick","useNumericInput","toRef","val","updateValue","newValue","computeFromDigits","digits","result","handleKeydown","createNumericKeydownHandler","_createBlock","_component_v_text_field","_unref","$slots","_renderSlot","_ctx"],"mappings":";;;;;;;;;;;;;;;;;;;;;AA8CA,UAAMA,IAAQC,GAeRC,IAAOC;AAIb,aAASC,EAAaC,GAAuB;AAG3C,YAAMC,IAFW,KAAK,IAAID,CAAK,EAEJ,eAAeL,EAAM,QAAQ;AAAA,QACtD,uBAAuBA,EAAM;AAAA,QAC7B,uBAAuBA,EAAM;AAAA,MAAA,CAC9B;AAED,aAAOK,IAAQ,IAAI,MAAMC,IAAYA;AAAA,IACvC;AAEA,aAASC,EAAiBC,GAAuB;AAC/C,YAAMC,IAAaD,EAAM,SAAS,GAAG,GAC/BE,IAAUF,EAAM,QAAQ,OAAO,EAAE;AAEvC,UAAI,CAACE,EAAS,QAAO;AAErB,UAAIL;AAEJ,UAAIL,EAAM,kBAAkB;AAC1B,QAAAK,IAAQ,SAASK,CAAO;AAAA,WACnB;AACL,cAAMC,IAAU,KAAK,IAAI,IAAIX,EAAM,aAAa;AAChD,QAAAK,IAAQ,SAASK,CAAO,IAAIC;AAAA,MAC9B;AAEA,YAAMC,IAAU,OAAOP,EAAM,QAAQL,EAAM,aAAa,CAAC;AAEzD,aAAOS,KAAcT,EAAM,gBAAgB,CAACY,IAAUA;AAAA,IACxD;AAEA,UAAM,EAAE,gBAAAC,GAAgB,iBAAAC,GAAiB,aAAAC,GAAa,aAAAC,GAAa,aAAAC,MAAgBC;AAAA,MACjFC,EAAMnB,GAAO,YAAY;AAAA,MACzB,CAACoB,MAAgBlB,EAAK,qBAAqBkB,CAAG;AAAA,MAC9ChB;AAAA,MACAG;AAAA,IAAA;AAGF,aAASc,EAAYC,GAAkB;AACrC,MAAItB,EAAM,QAAQ,UAAasB,IAAWtB,EAAM,OAE5CA,EAAM,QAAQ,UAAasB,IAAWtB,EAAM,QAEhDE,EAAK,qBAAqBoB,CAAQ,GAClCT,EAAe,QAAQT,EAAakB,CAAQ,GAC5CR,EAAA;AAAA,IACF;AAEA,aAASS,EAAkBC,GAAgBf,GAA6B;AACtE,UAAI,CAACe,EAAQ,QAAO;AAEpB,UAAInB;AAEJ,UAAIL,EAAM,kBAAkB;AAC1B,QAAAK,IAAQ,SAASmB,CAAM;AAAA,WAClB;AACL,cAAMb,IAAU,KAAK,IAAI,IAAIX,EAAM,aAAa;AAChD,QAAAK,IAAQ,SAASmB,CAAM,IAAIb;AAAA,MAC7B;AAEA,YAAMc,IAAS,OAAOpB,EAAM,QAAQL,EAAM,aAAa,CAAC;AAExD,aAAOS,IAAa,CAACgB,IAASA;AAAA,IAChC;AAEA,UAAMC,IAAgBC;AAAA,MACpBd;AAAA,MACAQ;AAAA,MACAE;AAAA,MACA,OAAO,EAAE,eAAevB,EAAM,cAAA;AAAA,IAAc;;;kBArI5C4B,EAoBeC,GAAA;AAAA,QAnBZ,eAAaC,EAAAjB,CAAA;AAAA,QACb,OAAOZ,EAAA;AAAA,QACP,OAAOA,EAAA;AAAA,QACP,UAAUA,EAAA;AAAA,QACV,MAAMA,EAAA;AAAA,QACN,mBAAiBA,EAAA;AAAA,QACjB,SAASA,EAAA;AAAA,QACV,WAAU;AAAA,QACT,uBAAoB6B,EAAAf,CAAA;AAAA,QACpB,SAAOe,EAAAd,CAAA;AAAA,QACP,SAAOc,EAAAb,CAAA;AAAA,QACP,WAASa,EAAAJ,CAAA;AAAA,MAAA;QAEMK,EAAAA,OAAO;gBAAU;AAAA,gBAC/B,MAAuB;AAAA,YAAvBC,EAAuBC,EAAA,QAAA,WAAA,CAAA,GAAA,QAAA,EAAA;AAAA,UAAA;;;QAETF,EAAAA,OAAO;gBAAS;AAAA,gBAC9B,MAAsB;AAAA,YAAtBC,EAAsBC,EAAA,QAAA,UAAA,CAAA,GAAA,QAAA,EAAA;AAAA,UAAA;;;;;;;"}