@forizi-tecnologia/ui 0.0.6 → 0.0.8

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 (81) hide show
  1. package/dist/chunks/components/{inputs-FzFullAddress-Dj68efww.js → inputs-FzFullAddress-VTqqGmqm.js} +10 -10
  2. package/dist/chunks/components/{inputs-FzFullAddress-Dj68efww.js.map → inputs-FzFullAddress-VTqqGmqm.js.map} +1 -1
  3. package/dist/chunks/components/{inputs-FzMoneyField-Co9uqB9u.js → inputs-FzMoneyField-C8nCfRgx.js} +8 -8
  4. package/dist/chunks/components/{inputs-FzMoneyField-Co9uqB9u.js.map → inputs-FzMoneyField-C8nCfRgx.js.map} +1 -1
  5. package/dist/chunks/components/{inputs-FzNumberField-DG-uYIEA.js → inputs-FzNumberField-BoJ_kxJg.js} +2 -2
  6. package/dist/chunks/components/{inputs-FzNumberField-DG-uYIEA.js.map → inputs-FzNumberField-BoJ_kxJg.js.map} +1 -1
  7. package/dist/chunks/components/inputs-datepicker-FzDatePicker-FDVslsba.js +129 -0
  8. package/dist/chunks/components/inputs-datepicker-FzDatePicker-FDVslsba.js.map +1 -0
  9. package/dist/chunks/components/inputs-datepicker-FzDatePickerCalendar-TOO_5iVD.js +170 -0
  10. package/dist/chunks/components/inputs-datepicker-FzDatePickerCalendar-TOO_5iVD.js.map +1 -0
  11. package/dist/chunks/components/inputs-datepicker-FzDatePickerDaysView-0m1isZIx.js +82 -0
  12. package/dist/chunks/components/inputs-datepicker-FzDatePickerDaysView-0m1isZIx.js.map +1 -0
  13. package/dist/chunks/components/inputs-datepicker-FzDatePickerMonthsView-DfjKo8Y0.js +52 -0
  14. package/dist/chunks/components/inputs-datepicker-FzDatePickerMonthsView-DfjKo8Y0.js.map +1 -0
  15. package/dist/chunks/components/inputs-datepicker-FzDatePickerYearsView-BLqOg5T9.js +58 -0
  16. package/dist/chunks/components/inputs-datepicker-FzDatePickerYearsView-BLqOg5T9.js.map +1 -0
  17. package/dist/chunks/components/{layout-FzLoadingOverlay-CWKZxowb.js → layout-FzLoadingOverlay-DTejZcvu.js} +2 -2
  18. package/dist/chunks/components/{layout-FzLoadingOverlay-CWKZxowb.js.map → layout-FzLoadingOverlay-DTejZcvu.js.map} +1 -1
  19. package/dist/chunks/components/messages-FzConfirmDialog-C3KyhNp5.js +18 -0
  20. package/dist/chunks/components/messages-FzConfirmDialog-C3KyhNp5.js.map +1 -0
  21. package/dist/chunks/components/messages-FzCustomConfirmDialog-MMylgbvn.js +118 -0
  22. package/dist/chunks/components/messages-FzCustomConfirmDialog-MMylgbvn.js.map +1 -0
  23. package/dist/chunks/components/messages-FzFloatingNotify-DU8K95A2.js +96 -0
  24. package/dist/chunks/components/messages-FzFloatingNotify-DU8K95A2.js.map +1 -0
  25. package/dist/chunks/components/{modals-FzModalBase-DmsJR5qM.js → modals-FzModalBase-OltWGin-.js} +27 -24
  26. package/dist/chunks/components/modals-FzModalBase-OltWGin-.js.map +1 -0
  27. package/dist/chunks/composables/useDatePicker-DlPanUqu.js +78 -0
  28. package/dist/chunks/composables/useDatePicker-DlPanUqu.js.map +1 -0
  29. package/dist/chunks/index-CykPyQ3c.js +35 -0
  30. package/dist/chunks/index-CykPyQ3c.js.map +1 -0
  31. package/dist/chunks/utils/date-BCG-p19e.js +106 -0
  32. package/dist/chunks/utils/date-BCG-p19e.js.map +1 -0
  33. package/dist/chunks/utils/types-DV6li0y5.js.map +1 -1
  34. package/dist/components/index.d.ts +1 -0
  35. package/dist/components/index.d.ts.map +1 -1
  36. package/dist/components/index.js +15 -13
  37. package/dist/components/index.js.map +1 -1
  38. package/dist/components/inputs/FzFullAddress.vue.d.ts.map +1 -1
  39. package/dist/components/inputs/datepicker/FzDatePicker.vue.d.ts +66 -0
  40. package/dist/components/inputs/datepicker/FzDatePicker.vue.d.ts.map +1 -0
  41. package/dist/components/inputs/datepicker/FzDatePickerCalendar.vue.d.ts +33 -0
  42. package/dist/components/inputs/datepicker/FzDatePickerCalendar.vue.d.ts.map +1 -0
  43. package/dist/components/inputs/datepicker/FzDatePickerDaysView.vue.d.ts +17 -0
  44. package/dist/components/inputs/datepicker/FzDatePickerDaysView.vue.d.ts.map +1 -0
  45. package/dist/components/inputs/datepicker/FzDatePickerMonthsView.vue.d.ts +13 -0
  46. package/dist/components/inputs/datepicker/FzDatePickerMonthsView.vue.d.ts.map +1 -0
  47. package/dist/components/inputs/datepicker/FzDatePickerYearsView.vue.d.ts +13 -0
  48. package/dist/components/inputs/datepicker/FzDatePickerYearsView.vue.d.ts.map +1 -0
  49. package/dist/components/messages/FzConfirmDialog.vue.d.ts.map +1 -1
  50. package/dist/components/messages/FzCustomConfirmDialog.vue.d.ts.map +1 -1
  51. package/dist/components/messages/FzFloatingNotify.vue.d.ts.map +1 -1
  52. package/dist/components/modals/FzModalBase.vue.d.ts +2 -0
  53. package/dist/components/modals/FzModalBase.vue.d.ts.map +1 -1
  54. package/dist/composables/index.d.ts +1 -0
  55. package/dist/composables/index.d.ts.map +1 -1
  56. package/dist/composables/index.js +6 -4
  57. package/dist/composables/index.js.map +1 -1
  58. package/dist/composables/useDatePicker.d.ts +30 -0
  59. package/dist/composables/useDatePicker.d.ts.map +1 -0
  60. package/dist/index.js +64 -60
  61. package/dist/index.js.map +1 -1
  62. package/dist/ui.css +1 -1
  63. package/dist/utils/date.d.ts +28 -0
  64. package/dist/utils/date.d.ts.map +1 -0
  65. package/dist/utils/index.d.ts +1 -0
  66. package/dist/utils/index.d.ts.map +1 -1
  67. package/dist/utils/index.js +19 -18
  68. package/dist/utils/index.js.map +1 -1
  69. package/dist/utils/notify.d.ts +1 -1
  70. package/dist/utils/types.d.ts +1 -0
  71. package/dist/utils/types.d.ts.map +1 -1
  72. package/package.json +1 -1
  73. package/dist/chunks/components/messages-FzConfirmDialog-vB2NQFVy.js +0 -18
  74. package/dist/chunks/components/messages-FzConfirmDialog-vB2NQFVy.js.map +0 -1
  75. package/dist/chunks/components/messages-FzCustomConfirmDialog-DF73kvKq.js +0 -107
  76. package/dist/chunks/components/messages-FzCustomConfirmDialog-DF73kvKq.js.map +0 -1
  77. package/dist/chunks/components/messages-FzFloatingNotify-CV5gLl9-.js +0 -96
  78. package/dist/chunks/components/messages-FzFloatingNotify-CV5gLl9-.js.map +0 -1
  79. package/dist/chunks/components/modals-FzModalBase-DmsJR5qM.js.map +0 -1
  80. package/dist/chunks/index-OarSr4I3.js +0 -33
  81. package/dist/chunks/index-OarSr4I3.js.map +0 -1
@@ -0,0 +1,82 @@
1
+ import { defineComponent as D, resolveComponent as _, createElementBlock as o, openBlock as i, createElementVNode as s, Fragment as m, renderList as x, toDisplayString as d, createBlock as w, createCommentVNode as V, withCtx as v, createTextVNode as k, createVNode as h } from "vue";
2
+ import { _ as z } from "./inputs-FzMoneyField-C8nCfRgx.js";
3
+ const F = { class: "d-flex flex-column h-100" }, g = { class: "fz-dp-weekdays" }, N = { class: "fz-dp-days flex-grow-1" }, B = { class: "d-flex justify-center pt-2" }, L = /* @__PURE__ */ D({
4
+ __name: "FzDatePickerDaysView",
5
+ props: {
6
+ weekdayInitials: {},
7
+ dayMatrix: {},
8
+ selectedIso: {},
9
+ todayIso: {},
10
+ todayLabel: {},
11
+ isDisabled: { type: Function }
12
+ },
13
+ emits: ["select"],
14
+ setup(n, { emit: b }) {
15
+ const r = n, p = b;
16
+ function c(e) {
17
+ return e === r.selectedIso;
18
+ }
19
+ function l(e) {
20
+ return e === r.todayIso;
21
+ }
22
+ function I(e) {
23
+ return c(e) ? "flat" : l(e) ? "outlined" : "text";
24
+ }
25
+ function C(e) {
26
+ if (c(e) || l(e)) return "primary";
27
+ }
28
+ function u(e) {
29
+ p("select", e);
30
+ }
31
+ return (e, y) => {
32
+ const f = _("v-btn");
33
+ return i(), o("div", F, [
34
+ s("div", g, [
35
+ (i(!0), o(m, null, x(n.weekdayInitials, (t, a) => (i(), o("div", {
36
+ key: a,
37
+ class: "text-center text-caption text-medium-emphasis py-1"
38
+ }, d(t), 1))), 128))
39
+ ]),
40
+ s("div", N, [
41
+ (i(!0), o(m, null, x(n.dayMatrix, (t, a) => (i(), o("div", {
42
+ key: a,
43
+ class: "d-flex align-center justify-center"
44
+ }, [
45
+ t ? (i(), w(f, {
46
+ key: 0,
47
+ variant: I(t.iso),
48
+ color: C(t.iso),
49
+ disabled: n.isDisabled(t.iso),
50
+ icon: "",
51
+ size: "small",
52
+ onClick: (j) => u(t.iso)
53
+ }, {
54
+ default: v(() => [
55
+ k(d(t.day), 1)
56
+ ]),
57
+ _: 2
58
+ }, 1032, ["variant", "color", "disabled", "onClick"])) : V("", !0)
59
+ ]))), 128))
60
+ ]),
61
+ s("div", B, [
62
+ h(f, {
63
+ variant: "text",
64
+ color: "primary",
65
+ class: "text-none",
66
+ disabled: n.isDisabled(n.todayIso),
67
+ onClick: y[0] || (y[0] = (t) => u(n.todayIso))
68
+ }, {
69
+ default: v(() => [
70
+ k(d(n.todayLabel), 1)
71
+ ]),
72
+ _: 1
73
+ }, 8, ["disabled"])
74
+ ])
75
+ ]);
76
+ };
77
+ }
78
+ }), P = /* @__PURE__ */ z(L, [["__scopeId", "data-v-09e938b9"]]);
79
+ export {
80
+ P as F
81
+ };
82
+ //# sourceMappingURL=inputs-datepicker-FzDatePickerDaysView-0m1isZIx.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inputs-datepicker-FzDatePickerDaysView-0m1isZIx.js","sources":["../../../src/components/inputs/datepicker/FzDatePickerDaysView.vue"],"sourcesContent":["<template>\n <div class=\"d-flex flex-column h-100\">\n <div class=\"fz-dp-weekdays\">\n <div\n v-for=\"(initial, index) in weekdayInitials\"\n :key=\"index\"\n class=\"text-center text-caption text-medium-emphasis py-1\"\n >\n {{ initial }}\n </div>\n </div>\n\n <div class=\"fz-dp-days flex-grow-1\">\n <div v-for=\"(cell, index) in dayMatrix\" :key=\"index\" class=\"d-flex align-center justify-center\">\n <v-btn\n v-if=\"cell\"\n :variant=\"dayVariant(cell.iso)\"\n :color=\"dayColor(cell.iso)\"\n :disabled=\"isDisabled(cell.iso)\"\n icon\n size=\"small\"\n @click=\"select(cell.iso)\"\n >\n {{ cell.day }}\n </v-btn>\n </div>\n </div>\n\n <div class=\"d-flex justify-center pt-2\">\n <v-btn variant=\"text\" color=\"primary\" class=\"text-none\" :disabled=\"isDisabled(todayIso)\" @click=\"select(todayIso)\">\n {{ todayLabel }}\n </v-btn>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport type { DayCell } from '@/utils/date';\n\ninterface Props {\n weekdayInitials: string[];\n dayMatrix: (DayCell | null)[];\n selectedIso: string;\n todayIso: string;\n todayLabel: string;\n isDisabled: (iso: string) => boolean;\n}\n\nconst props = defineProps<Props>();\n\nconst emit = defineEmits<{\n select: [iso: string];\n}>();\n\nfunction isSelected(iso: string): boolean {\n return iso === props.selectedIso;\n}\n\nfunction isToday(iso: string): boolean {\n return iso === props.todayIso;\n}\n\nfunction dayVariant(iso: string): 'flat' | 'outlined' | 'text' {\n if (isSelected(iso)) return 'flat';\n\n if (isToday(iso)) return 'outlined';\n\n return 'text';\n}\n\nfunction dayColor(iso: string): string | undefined {\n if (isSelected(iso) || isToday(iso)) return 'primary';\n\n return undefined;\n}\n\nfunction select(iso: string): void {\n emit('select', iso);\n}\n</script>\n\n<style scoped>\n.fz-dp-weekdays,\n.fz-dp-days {\n display: grid;\n grid-template-columns: repeat(7, 1fr);\n}\n\n.fz-dp-days {\n grid-auto-rows: 1fr;\n}\n</style>\n"],"names":["props","__props","emit","__emit","isSelected","iso","isToday","dayVariant","dayColor","select","_openBlock","_createElementBlock","_hoisted_1","_createElementVNode","_hoisted_2","_Fragment","_renderList","initial","index","_hoisted_3","cell","_createBlock","_component_v_btn","$event","_createTextVNode","_toDisplayString","_hoisted_4","_createVNode","_cache"],"mappings":";;;;;;;;;;;;;;AAgDA,UAAMA,IAAQC,GAERC,IAAOC;AAIb,aAASC,EAAWC,GAAsB;AACxC,aAAOA,MAAQL,EAAM;AAAA,IACvB;AAEA,aAASM,EAAQD,GAAsB;AACrC,aAAOA,MAAQL,EAAM;AAAA,IACvB;AAEA,aAASO,EAAWF,GAA2C;AAC7D,aAAID,EAAWC,CAAG,IAAU,SAExBC,EAAQD,CAAG,IAAU,aAElB;AAAA,IACT;AAEA,aAASG,EAASH,GAAiC;AACjD,UAAID,EAAWC,CAAG,KAAKC,EAAQD,CAAG,EAAG,QAAO;AAAA,IAG9C;AAEA,aAASI,EAAOJ,GAAmB;AACjC,MAAAH,EAAK,UAAUG,CAAG;AAAA,IACpB;;;AA7EE,aAAAK,EAAA,GAAAC,EAgCM,OAhCNC,GAgCM;AAAA,QA/BJC,EAQM,OARNC,GAQM;AAAA,WAPJJ,EAAA,EAAA,GAAAC,EAMMI,GAAA,MAAAC,EALuBf,EAAA,iBAAe,CAAlCgB,GAASC,YADnBP,EAMM,OAAA;AAAA,YAJH,KAAKO;AAAA,YACN,OAAM;AAAA,UAAA,KAEHD,CAAO,GAAA,CAAA;;QAIdJ,EAcM,OAdNM,GAcM;AAAA,WAbJT,EAAA,EAAA,GAAAC,EAYMI,GAAA,MAAAC,EAZuBf,EAAA,WAAS,CAAzBmB,GAAMF,YAAnBP,EAYM,OAAA;AAAA,YAZmC,KAAKO;AAAA,YAAO,OAAM;AAAA,UAAA;YAEjDE,UADRC,EAUQC,GAAA;AAAA;cARL,SAASf,EAAWa,EAAK,GAAG;AAAA,cAC5B,OAAOZ,EAASY,EAAK,GAAG;AAAA,cACxB,UAAUnB,EAAA,WAAWmB,EAAK,GAAG;AAAA,cAC9B,MAAA;AAAA,cACA,MAAK;AAAA,cACJ,SAAK,CAAAG,MAAEd,EAAOW,EAAK,GAAG;AAAA,YAAA;yBAEvB,MAAc;AAAA,gBAAXI,EAAAC,EAAAL,EAAK,GAAG,GAAA,CAAA;AAAA,cAAA;;;;;QAKjBP,EAIM,OAJNa,GAIM;AAAA,UAHJC,EAEQL,GAAA;AAAA,YAFD,SAAQ;AAAA,YAAO,OAAM;AAAA,YAAU,OAAM;AAAA,YAAa,UAAUrB,EAAA,WAAWA,EAAA,QAAQ;AAAA,YAAI,SAAK2B,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAL,MAAEd,EAAOR,EAAA,QAAQ;AAAA,UAAA;uBAC9G,MAAgB;AAAA,kBAAbA,EAAA,UAAU,GAAA,CAAA;AAAA,YAAA;;;;;;;;"}
@@ -0,0 +1,52 @@
1
+ import { defineComponent as v, computed as k, resolveComponent as C, createElementBlock as a, openBlock as n, Fragment as x, renderList as y, createBlock as F, withCtx as I, createTextVNode as N, toDisplayString as V } from "vue";
2
+ import { b } from "../utils/date-BCG-p19e.js";
3
+ import { _ as w } from "./inputs-FzMoneyField-C8nCfRgx.js";
4
+ const z = { class: "fz-dp-months h-100" }, B = /* @__PURE__ */ v({
5
+ __name: "FzDatePickerMonthsView",
6
+ props: {
7
+ monthNames: {},
8
+ focusedYear: {},
9
+ selectedIso: {}
10
+ },
11
+ emits: ["select"],
12
+ setup(r, { emit: i }) {
13
+ const s = r, l = i, m = k(() => b(s.selectedIso));
14
+ function c(t) {
15
+ const e = m.value;
16
+ return e ? e.year === s.focusedYear && e.month === t : !1;
17
+ }
18
+ function u(t) {
19
+ return c(t) ? "flat" : "text";
20
+ }
21
+ function f(t) {
22
+ return c(t) ? "primary" : void 0;
23
+ }
24
+ function p(t) {
25
+ return t.slice(0, 3);
26
+ }
27
+ function _(t) {
28
+ l("select", t);
29
+ }
30
+ return (t, e) => {
31
+ const d = C("v-btn");
32
+ return n(), a("div", z, [
33
+ (n(!0), a(x, null, y(r.monthNames, (h, o) => (n(), F(d, {
34
+ key: o,
35
+ variant: u(o + 1),
36
+ color: f(o + 1),
37
+ class: "text-none",
38
+ onClick: (D) => _(o + 1)
39
+ }, {
40
+ default: I(() => [
41
+ N(V(p(h)), 1)
42
+ ]),
43
+ _: 2
44
+ }, 1032, ["variant", "color", "onClick"]))), 128))
45
+ ]);
46
+ };
47
+ }
48
+ }), S = /* @__PURE__ */ w(B, [["__scopeId", "data-v-2810a62f"]]);
49
+ export {
50
+ S as F
51
+ };
52
+ //# sourceMappingURL=inputs-datepicker-FzDatePickerMonthsView-DfjKo8Y0.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inputs-datepicker-FzDatePickerMonthsView-DfjKo8Y0.js","sources":["../../../src/components/inputs/datepicker/FzDatePickerMonthsView.vue"],"sourcesContent":["<template>\n <div class=\"fz-dp-months h-100\">\n <v-btn\n v-for=\"(name, index) in monthNames\"\n :key=\"index\"\n :variant=\"monthVariant(index + 1)\"\n :color=\"monthColor(index + 1)\"\n class=\"text-none\"\n @click=\"select(index + 1)\"\n >\n {{ shortName(name) }}\n </v-btn>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue';\nimport { parseIso } from '@/utils/date';\n\ninterface Props {\n monthNames: string[];\n focusedYear: number;\n selectedIso: string;\n}\n\nconst props = defineProps<Props>();\n\nconst emit = defineEmits<{\n select: [month: number];\n}>();\n\nconst selectedParts = computed(() => parseIso(props.selectedIso));\n\nfunction isSelectedMonth(month: number): boolean {\n const parts = selectedParts.value;\n\n if (!parts) return false;\n\n return parts.year === props.focusedYear && parts.month === month;\n}\n\nfunction monthVariant(month: number): 'flat' | 'text' {\n return isSelectedMonth(month) ? 'flat' : 'text';\n}\n\nfunction monthColor(month: number): string | undefined {\n return isSelectedMonth(month) ? 'primary' : undefined;\n}\n\nfunction shortName(name: string): string {\n return name.slice(0, 3);\n}\n\nfunction select(month: number): void {\n emit('select', month);\n}\n</script>\n\n<style scoped>\n.fz-dp-months {\n display: grid;\n grid-template-columns: repeat(3, 1fr);\n grid-template-rows: repeat(4, 1fr);\n gap: 8px;\n}\n\n.fz-dp-months :deep(.v-btn) {\n width: 100%;\n height: 100%;\n}\n</style>\n"],"names":["props","__props","emit","__emit","selectedParts","computed","parseIso","isSelectedMonth","month","parts","monthVariant","monthColor","shortName","name","select","_openBlock","_createElementBlock","_hoisted_1","_Fragment","_renderList","index","_createBlock","_component_v_btn","$event","_createTextVNode","_toDisplayString"],"mappings":";;;;;;;;;;;;AAyBA,UAAMA,IAAQC,GAERC,IAAOC,GAIPC,IAAgBC,EAAS,MAAMC,EAASN,EAAM,WAAW,CAAC;AAEhE,aAASO,EAAgBC,GAAwB;AAC/C,YAAMC,IAAQL,EAAc;AAE5B,aAAKK,IAEEA,EAAM,SAAST,EAAM,eAAeS,EAAM,UAAUD,IAFxC;AAAA,IAGrB;AAEA,aAASE,EAAaF,GAAgC;AACpD,aAAOD,EAAgBC,CAAK,IAAI,SAAS;AAAA,IAC3C;AAEA,aAASG,EAAWH,GAAmC;AACrD,aAAOD,EAAgBC,CAAK,IAAI,YAAY;AAAA,IAC9C;AAEA,aAASI,EAAUC,GAAsB;AACvC,aAAOA,EAAK,MAAM,GAAG,CAAC;AAAA,IACxB;AAEA,aAASC,EAAON,GAAqB;AACnC,MAAAN,EAAK,UAAUM,CAAK;AAAA,IACtB;;;AAtDE,aAAAO,EAAA,GAAAC,EAWM,OAXNC,GAWM;AAAA,SAVJF,EAAA,EAAA,GAAAC,EASQE,GAAA,MAAAC,EARkBlB,EAAA,YAAU,CAA1BY,GAAMO,YADhBC,EASQC,GAAA;AAAA,UAPL,KAAKF;AAAA,UACL,SAASV,EAAaU,IAAK,CAAA;AAAA,UAC3B,OAAOT,EAAWS,IAAK,CAAA;AAAA,UACxB,OAAM;AAAA,UACL,SAAK,CAAAG,MAAET,EAAOM,IAAK,CAAA;AAAA,QAAA;qBAEpB,MAAqB;AAAA,YAAlBI,EAAAC,EAAAb,EAAUC,CAAI,CAAA,GAAA,CAAA;AAAA,UAAA;;;;;;;"}
@@ -0,0 +1,58 @@
1
+ import { defineComponent as _, ref as k, onMounted as v, nextTick as g, resolveComponent as y, createElementBlock as s, openBlock as c, Fragment as x, renderList as C, createBlock as R, withCtx as Y, createTextVNode as h, toDisplayString as B } from "vue";
2
+ import { _ as F } from "./inputs-FzMoneyField-C8nCfRgx.js";
3
+ const w = /* @__PURE__ */ _({
4
+ __name: "FzDatePickerYearsView",
5
+ props: {
6
+ yearList: {},
7
+ focusedYear: {},
8
+ selectedIso: {}
9
+ },
10
+ emits: ["select"],
11
+ setup(a, { emit: l }) {
12
+ const n = a, u = l, i = k(null);
13
+ function f(e) {
14
+ return e === n.focusedYear ? "flat" : "text";
15
+ }
16
+ function d(e) {
17
+ return e === n.focusedYear ? "primary" : void 0;
18
+ }
19
+ function p(e) {
20
+ u("select", e);
21
+ }
22
+ function m() {
23
+ const e = i.value, o = e.querySelector(`[data-year="${n.focusedYear}"]`);
24
+ if (!o) return;
25
+ const r = e.getBoundingClientRect(), t = o.getBoundingClientRect();
26
+ e.scrollTop += t.top - r.top - e.clientHeight / 2 + o.clientHeight / 2;
27
+ }
28
+ return v(() => {
29
+ g(m);
30
+ }), (e, o) => {
31
+ const r = y("v-btn");
32
+ return c(), s("div", {
33
+ ref_key: "listRef",
34
+ ref: i,
35
+ class: "fz-dp-years h-100 overflow-y-auto"
36
+ }, [
37
+ (c(!0), s(x, null, C(a.yearList, (t) => (c(), R(r, {
38
+ key: t,
39
+ "data-year": t,
40
+ variant: f(t),
41
+ color: d(t),
42
+ class: "fz-dp-year-item text-none",
43
+ block: "",
44
+ onClick: (z) => p(t)
45
+ }, {
46
+ default: Y(() => [
47
+ h(B(t), 1)
48
+ ]),
49
+ _: 2
50
+ }, 1032, ["data-year", "variant", "color", "onClick"]))), 128))
51
+ ], 512);
52
+ };
53
+ }
54
+ }), b = /* @__PURE__ */ F(w, [["__scopeId", "data-v-5d0ac3af"]]);
55
+ export {
56
+ b as F
57
+ };
58
+ //# sourceMappingURL=inputs-datepicker-FzDatePickerYearsView-BLqOg5T9.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inputs-datepicker-FzDatePickerYearsView-BLqOg5T9.js","sources":["../../../src/components/inputs/datepicker/FzDatePickerYearsView.vue"],"sourcesContent":["<template>\n <div ref=\"listRef\" class=\"fz-dp-years h-100 overflow-y-auto\">\n <v-btn\n v-for=\"year in yearList\"\n :key=\"year\"\n :data-year=\"year\"\n :variant=\"yearVariant(year)\"\n :color=\"yearColor(year)\"\n class=\"fz-dp-year-item text-none\"\n block\n @click=\"select(year)\"\n >\n {{ year }}\n </v-btn>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, onMounted, nextTick } from 'vue';\n\ninterface Props {\n yearList: number[];\n focusedYear: number;\n selectedIso: string;\n}\n\nconst props = defineProps<Props>();\n\nconst emit = defineEmits<{\n select: [year: number];\n}>();\n\nconst listRef = ref<HTMLElement | null>(null);\n\nfunction yearVariant(year: number): 'flat' | 'text' {\n return year === props.focusedYear ? 'flat' : 'text';\n}\n\nfunction yearColor(year: number): string | undefined {\n return year === props.focusedYear ? 'primary' : undefined;\n}\n\nfunction select(year: number): void {\n emit('select', year);\n}\n\nfunction scrollToFocused(): void {\n const container = listRef.value as HTMLElement;\n const target = container.querySelector<HTMLElement>(`[data-year=\"${props.focusedYear}\"]`);\n\n if (!target) return;\n\n const containerRect = container.getBoundingClientRect();\n const targetRect = target.getBoundingClientRect();\n\n container.scrollTop += targetRect.top - containerRect.top - container.clientHeight / 2 + target.clientHeight / 2;\n}\n\nonMounted(() => {\n nextTick(scrollToFocused);\n});\n</script>\n\n<style scoped>\n.fz-dp-years {\n scroll-snap-type: y proximity;\n}\n\n.fz-dp-year-item {\n scroll-snap-align: center;\n}\n</style>\n"],"names":["props","__props","emit","__emit","listRef","ref","yearVariant","year","yearColor","select","scrollToFocused","container","target","containerRect","targetRect","onMounted","nextTick","_createElementBlock","_Fragment","_renderList","_createBlock","_component_v_btn","$event"],"mappings":";;;;;;;;;;;AA0BA,UAAMA,IAAQC,GAERC,IAAOC,GAIPC,IAAUC,EAAwB,IAAI;AAE5C,aAASC,EAAYC,GAA+B;AAClD,aAAOA,MAASP,EAAM,cAAc,SAAS;AAAA,IAC/C;AAEA,aAASQ,EAAUD,GAAkC;AACnD,aAAOA,MAASP,EAAM,cAAc,YAAY;AAAA,IAClD;AAEA,aAASS,EAAOF,GAAoB;AAClC,MAAAL,EAAK,UAAUK,CAAI;AAAA,IACrB;AAEA,aAASG,IAAwB;AAC/B,YAAMC,IAAYP,EAAQ,OACpBQ,IAASD,EAAU,cAA2B,eAAeX,EAAM,WAAW,IAAI;AAExF,UAAI,CAACY,EAAQ;AAEb,YAAMC,IAAgBF,EAAU,sBAAA,GAC1BG,IAAaF,EAAO,sBAAA;AAE1B,MAAAD,EAAU,aAAaG,EAAW,MAAMD,EAAc,MAAMF,EAAU,eAAe,IAAIC,EAAO,eAAe;AAAA,IACjH;AAEA,WAAAG,EAAU,MAAM;AACd,MAAAC,EAASN,CAAe;AAAA,IAC1B,CAAC;;kBA3DCO,EAaM,OAAA;AAAA,iBAbG;AAAA,QAAJ,KAAIb;AAAA,QAAU,OAAM;AAAA,MAAA;gBACvBa,EAWQC,GAAA,MAAAC,EAVSlB,EAAA,UAAQ,CAAhBM,YADTa,EAWQC,GAAA;AAAA,UATL,KAAKd;AAAA,UACL,aAAWA;AAAA,UACX,SAASD,EAAYC,CAAI;AAAA,UACzB,OAAOC,EAAUD,CAAI;AAAA,UACtB,OAAM;AAAA,UACN,OAAA;AAAA,UACC,SAAK,CAAAe,MAAEb,EAAOF,CAAI;AAAA,QAAA;qBAEnB,MAAU;AAAA,gBAAPA,CAAI,GAAA,CAAA;AAAA,UAAA;;;;;;;"}
@@ -1,5 +1,5 @@
1
1
  import { defineComponent as u, ref as f, watch as _, onBeforeUnmount as g, resolveComponent as p, createBlock as v, openBlock as a, Transition as l, withCtx as i, createElementBlock as s, createCommentVNode as c, createVNode as d, createElementVNode as y, toDisplayString as h } from "vue";
2
- import { _ as x } from "./inputs-FzMoneyField-Co9uqB9u.js";
2
+ import { _ as x } from "./inputs-FzMoneyField-C8nCfRgx.js";
3
3
  const w = {
4
4
  key: 0,
5
5
  class: "loading-overlay d-flex align-center justify-center"
@@ -55,4 +55,4 @@ const w = {
55
55
  export {
56
56
  F
57
57
  };
58
- //# sourceMappingURL=layout-FzLoadingOverlay-CWKZxowb.js.map
58
+ //# sourceMappingURL=layout-FzLoadingOverlay-DTejZcvu.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"layout-FzLoadingOverlay-CWKZxowb.js","sources":["../../../src/components/layout/FzLoadingOverlay.vue"],"sourcesContent":["<template>\n <Transition name=\"fade\">\n <div v-if=\"isLoading\" class=\"loading-overlay d-flex align-center justify-center\">\n <Transition name=\"fade-delayed\">\n <div v-if=\"showContent\" class=\"d-flex flex-column align-center\">\n <v-progress-circular indeterminate color=\"primary\" :size=\"30\" :width=\"5\" />\n <div class=\"text-white text-body-1 font-weight-medium mt-3\">\n {{ message }}\n </div>\n </div>\n </Transition>\n </div>\n </Transition>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, watch, onBeforeUnmount } from 'vue';\n\ninterface Props {\n isLoading?: boolean\n message?: string\n delay?: number\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n isLoading: false,\n message: 'Carregando...',\n delay: 300,\n});\n\nconst showContent = ref(false);\nlet contentTimeoutId: ReturnType<typeof setTimeout> | null = null;\n\nwatch(() => props.isLoading, (val) => {\n if (val) {\n contentTimeoutId = setTimeout(() => {\n showContent.value = true;\n }, props.delay);\n\n return;\n }\n\n if (contentTimeoutId) {\n clearTimeout(contentTimeoutId);\n contentTimeoutId = null;\n }\n\n showContent.value = false;\n});\n\nonBeforeUnmount(() => {\n if (contentTimeoutId) clearTimeout(contentTimeoutId);\n});\n</script>\n\n<style scoped>\n.loading-overlay {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background-color: rgba(0, 0, 0, 0.7);\n z-index: 9998;\n}\n\n.fade-enter-active,\n.fade-leave-active {\n transition: opacity 0.2s ease;\n}\n\n.fade-enter-from,\n.fade-leave-to {\n opacity: 0;\n}\n\n.fade-delayed-enter-active {\n transition: opacity 0.3s ease 0.1s;\n}\n\n.fade-delayed-leave-active {\n transition: opacity 0.2s ease;\n}\n\n.fade-delayed-enter-from,\n.fade-delayed-leave-to {\n opacity: 0;\n}\n</style>\n"],"names":["props","__props","showContent","ref","contentTimeoutId","watch","val","onBeforeUnmount","_createBlock","_Transition","_openBlock","_createElementBlock","_hoisted_1","_createVNode","_hoisted_2","_component_v_progress_circular","_createElementVNode","_hoisted_3","_toDisplayString"],"mappings":";;;;;;;;;;;;;;;;AAwBA,UAAMA,IAAQC,GAMRC,IAAcC,EAAI,EAAK;AAC7B,QAAIC,IAAyD;AAE7D,WAAAC,EAAM,MAAML,EAAM,WAAW,CAACM,MAAQ;AACpC,UAAIA,GAAK;AACP,QAAAF,IAAmB,WAAW,MAAM;AAClC,UAAAF,EAAY,QAAQ;AAAA,QACtB,GAAGF,EAAM,KAAK;AAEd;AAAA,MACF;AAEA,MAAII,MACF,aAAaA,CAAgB,GAC7BA,IAAmB,OAGrBF,EAAY,QAAQ;AAAA,IACtB,CAAC,GAEDK,EAAgB,MAAM;AACpB,MAAIH,kBAA+BA,CAAgB;AAAA,IACrD,CAAC;;kBAnDCI,EAWaC,GAAA,EAXD,MAAK,UAAM;AAAA,mBACrB,MASM;AAAA,UATKR,EAAA,aAAXS,EAAA,GAAAC,EASM,OATNC,GASM;AAAA,YARJC,EAOaJ,GAAA,EAPD,MAAK,kBAAc;AAAA,yBAC7B,MAKM;AAAA,gBALKP,EAAA,SAAXQ,EAAA,GAAAC,EAKM,OALNG,GAKM;AAAA,kBAJJD,EAA2EE,GAAA;AAAA,oBAAtD,eAAA;AAAA,oBAAc,OAAM;AAAA,oBAAW,MAAM;AAAA,oBAAK,OAAO;AAAA,kBAAA;kBACtEC,EAEM,OAFNC,GAEMC,EADDjB,EAAA,OAAO,GAAA,CAAA;AAAA,gBAAA;;;;;;;;;;;"}
1
+ {"version":3,"file":"layout-FzLoadingOverlay-DTejZcvu.js","sources":["../../../src/components/layout/FzLoadingOverlay.vue"],"sourcesContent":["<template>\n <Transition name=\"fade\">\n <div v-if=\"isLoading\" class=\"loading-overlay d-flex align-center justify-center\">\n <Transition name=\"fade-delayed\">\n <div v-if=\"showContent\" class=\"d-flex flex-column align-center\">\n <v-progress-circular indeterminate color=\"primary\" :size=\"30\" :width=\"5\" />\n <div class=\"text-white text-body-1 font-weight-medium mt-3\">\n {{ message }}\n </div>\n </div>\n </Transition>\n </div>\n </Transition>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, watch, onBeforeUnmount } from 'vue';\n\ninterface Props {\n isLoading?: boolean\n message?: string\n delay?: number\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n isLoading: false,\n message: 'Carregando...',\n delay: 300,\n});\n\nconst showContent = ref(false);\nlet contentTimeoutId: ReturnType<typeof setTimeout> | null = null;\n\nwatch(() => props.isLoading, (val) => {\n if (val) {\n contentTimeoutId = setTimeout(() => {\n showContent.value = true;\n }, props.delay);\n\n return;\n }\n\n if (contentTimeoutId) {\n clearTimeout(contentTimeoutId);\n contentTimeoutId = null;\n }\n\n showContent.value = false;\n});\n\nonBeforeUnmount(() => {\n if (contentTimeoutId) clearTimeout(contentTimeoutId);\n});\n</script>\n\n<style scoped>\n.loading-overlay {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background-color: rgba(0, 0, 0, 0.7);\n z-index: 9998;\n}\n\n.fade-enter-active,\n.fade-leave-active {\n transition: opacity 0.2s ease;\n}\n\n.fade-enter-from,\n.fade-leave-to {\n opacity: 0;\n}\n\n.fade-delayed-enter-active {\n transition: opacity 0.3s ease 0.1s;\n}\n\n.fade-delayed-leave-active {\n transition: opacity 0.2s ease;\n}\n\n.fade-delayed-enter-from,\n.fade-delayed-leave-to {\n opacity: 0;\n}\n</style>\n"],"names":["props","__props","showContent","ref","contentTimeoutId","watch","val","onBeforeUnmount","_createBlock","_Transition","_openBlock","_createElementBlock","_hoisted_1","_createVNode","_hoisted_2","_component_v_progress_circular","_createElementVNode","_hoisted_3","_toDisplayString"],"mappings":";;;;;;;;;;;;;;;;AAwBA,UAAMA,IAAQC,GAMRC,IAAcC,EAAI,EAAK;AAC7B,QAAIC,IAAyD;AAE7D,WAAAC,EAAM,MAAML,EAAM,WAAW,CAACM,MAAQ;AACpC,UAAIA,GAAK;AACP,QAAAF,IAAmB,WAAW,MAAM;AAClC,UAAAF,EAAY,QAAQ;AAAA,QACtB,GAAGF,EAAM,KAAK;AAEd;AAAA,MACF;AAEA,MAAII,MACF,aAAaA,CAAgB,GAC7BA,IAAmB,OAGrBF,EAAY,QAAQ;AAAA,IACtB,CAAC,GAEDK,EAAgB,MAAM;AACpB,MAAIH,kBAA+BA,CAAgB;AAAA,IACrD,CAAC;;kBAnDCI,EAWaC,GAAA,EAXD,MAAK,UAAM;AAAA,mBACrB,MASM;AAAA,UATKR,EAAA,aAAXS,EAAA,GAAAC,EASM,OATNC,GASM;AAAA,YARJC,EAOaJ,GAAA,EAPD,MAAK,kBAAc;AAAA,yBAC7B,MAKM;AAAA,gBALKP,EAAA,SAAXQ,EAAA,GAAAC,EAKM,OALNG,GAKM;AAAA,kBAJJD,EAA2EE,GAAA;AAAA,oBAAtD,eAAA;AAAA,oBAAc,OAAM;AAAA,oBAAW,MAAM;AAAA,oBAAK,OAAO;AAAA,kBAAA;kBACtEC,EAEM,OAFNC,GAEMC,EADDjB,EAAA,OAAO,GAAA,CAAA;AAAA,gBAAA;;;;;;;;;;;"}
@@ -0,0 +1,18 @@
1
+ import { defineComponent as t, ref as c, createBlock as m, openBlock as a } from "vue";
2
+ import { F as f } from "./messages-FzCustomConfirmDialog-MMylgbvn.js";
3
+ const p = /* @__PURE__ */ t({
4
+ __name: "FzConfirmDialog",
5
+ setup(l, { expose: n }) {
6
+ const o = c(null);
7
+ return n({
8
+ confirmDialog: (e, r, i) => o.value.confirmDialog(e, r, i)
9
+ }), (e, r) => (a(), m(f, {
10
+ ref_key: "customDialogRef",
11
+ ref: o
12
+ }, null, 512));
13
+ }
14
+ });
15
+ export {
16
+ p as _
17
+ };
18
+ //# sourceMappingURL=messages-FzConfirmDialog-C3KyhNp5.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messages-FzConfirmDialog-C3KyhNp5.js","sources":["../../../src/components/messages/FzConfirmDialog.vue"],"sourcesContent":["<template>\n <FzCustomConfirmDialog ref=\"customDialogRef\" />\n</template>\n\n<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport FzCustomConfirmDialog from './FzCustomConfirmDialog.vue';\nimport type { ConfirmOptions } from '@/utils/types';\n\nconst customDialogRef = ref<InstanceType<typeof FzCustomConfirmDialog> | null>(null);\n\nconst confirmDialog = (title: string, message: string, options?: ConfirmOptions): Promise<boolean> => {\n return (customDialogRef.value as InstanceType<typeof FzCustomConfirmDialog>).confirmDialog(title, message, options);\n};\n\ndefineExpose({\n confirmDialog,\n});\n</script>\n"],"names":["customDialogRef","ref","__expose","title","message","options","_createBlock","FzCustomConfirmDialog"],"mappings":";;;;;AASA,UAAMA,IAAkBC,EAAuD,IAAI;AAMnF,WAAAC,EAAa;AAAA,MACX,eALoB,CAACC,GAAeC,GAAiBC,MAC7CL,EAAgB,MAAqD,cAAcG,GAAOC,GAASC,CAAO;AAAA,IAIlH,CACD,mBAhBCC,EAA+CC,GAAA;AAAA,eAApB;AAAA,MAAJ,KAAIP;AAAA,IAAA;;;"}
@@ -0,0 +1,118 @@
1
+ import { defineComponent as L, ref as t, onMounted as M, onUnmounted as S, watch as j, resolveComponent as r, createBlock as D, openBlock as p, Teleport as O, createVNode as a, Transition as R, withCtx as n, createElementBlock as I, createCommentVNode as E, withModifiers as K, createElementVNode as U, createTextVNode as s, toDisplayString as i } from "vue";
2
+ import { u as N } from "../utils/confirm-DiGEPjua.js";
3
+ import { _ as Y } from "./inputs-FzMoneyField-C8nCfRgx.js";
4
+ const q = { class: "text-h6 font-weight-medium" }, A = /* @__PURE__ */ L({
5
+ __name: "FzCustomConfirmDialog",
6
+ setup(G, { expose: P }) {
7
+ const l = t(!1), x = t(""), u = t(""), d = t(!0), C = t(!1), y = t(""), g = t(""), k = t("primary"), w = t("secondary");
8
+ let f = null;
9
+ const h = (e, c, o) => (x.value = e, u.value = c, d.value = o?.persistent ?? !0, C.value = o?.enterToConfirm ?? !1, y.value = o?.confirmText ?? "Sim", g.value = o?.cancelText ?? "Não", k.value = o?.confirmColor ?? "primary", w.value = o?.cancelColor ?? "secondary", l.value = !0, new Promise((_) => {
10
+ f = _;
11
+ }));
12
+ M(() => {
13
+ N().setConfirmRef({ confirmDialog: h });
14
+ }), S(() => {
15
+ N().setConfirmRef({ confirmDialog: () => Promise.resolve(!1) }), document.removeEventListener("keydown", v);
16
+ });
17
+ const T = () => {
18
+ f(!0), l.value = !1;
19
+ }, m = () => {
20
+ f(!1), l.value = !1;
21
+ }, V = () => {
22
+ d.value || m();
23
+ }, v = (e) => {
24
+ if (e.key === "Enter" && C.value) {
25
+ e.preventDefault(), T();
26
+ return;
27
+ }
28
+ if (e.key === "Escape") {
29
+ if (d.value) return;
30
+ e.preventDefault(), m();
31
+ }
32
+ };
33
+ return j(l, (e) => {
34
+ e ? document.addEventListener("keydown", v) : document.removeEventListener("keydown", v);
35
+ }), P({
36
+ confirmDialog: h
37
+ }), (e, c) => {
38
+ const o = r("v-icon"), _ = r("v-card-title"), z = r("v-card-text"), b = r("v-btn"), B = r("v-card-actions"), F = r("v-card");
39
+ return p(), D(O, { to: "body" }, [
40
+ a(R, { name: "dialog-fade" }, {
41
+ default: n(() => [
42
+ l.value ? (p(), I("div", {
43
+ key: 0,
44
+ class: "custom-dialog-overlay d-flex align-center justify-center pa-4",
45
+ onClick: K(V, ["self"])
46
+ }, [
47
+ a(F, {
48
+ class: "flex-grow-1",
49
+ "max-width": "500",
50
+ elevation: 12
51
+ }, {
52
+ default: n(() => [
53
+ a(_, { class: "d-flex align-center ga-3 px-6 pb-4 pt-6" }, {
54
+ default: n(() => [
55
+ a(o, {
56
+ color: "warning",
57
+ size: "28"
58
+ }, {
59
+ default: n(() => [...c[0] || (c[0] = [
60
+ s("mdi-help-circle", -1)
61
+ ])]),
62
+ _: 1
63
+ }),
64
+ U("span", q, i(x.value), 1)
65
+ ]),
66
+ _: 1
67
+ }),
68
+ u.value ? (p(), D(z, {
69
+ key: 0,
70
+ class: "px-6 pb-4 text-body-2"
71
+ }, {
72
+ default: n(() => [
73
+ s(i(u.value), 1)
74
+ ]),
75
+ _: 1
76
+ })) : E("", !0),
77
+ a(B, { class: "d-flex justify-end ga-2 px-6 pb-6 pt-2" }, {
78
+ default: n(() => [
79
+ a(b, {
80
+ color: k.value,
81
+ variant: "elevated",
82
+ class: "text-none",
83
+ onClick: T
84
+ }, {
85
+ default: n(() => [
86
+ s(i(y.value), 1)
87
+ ]),
88
+ _: 1
89
+ }, 8, ["color"]),
90
+ a(b, {
91
+ color: w.value,
92
+ variant: "outlined",
93
+ class: "text-none",
94
+ onClick: m
95
+ }, {
96
+ default: n(() => [
97
+ s(i(g.value), 1)
98
+ ]),
99
+ _: 1
100
+ }, 8, ["color"])
101
+ ]),
102
+ _: 1
103
+ })
104
+ ]),
105
+ _: 1
106
+ })
107
+ ])) : E("", !0)
108
+ ]),
109
+ _: 1
110
+ })
111
+ ]);
112
+ };
113
+ }
114
+ }), W = /* @__PURE__ */ Y(A, [["__scopeId", "data-v-e7ebc1b2"]]);
115
+ export {
116
+ W as F
117
+ };
118
+ //# sourceMappingURL=messages-FzCustomConfirmDialog-MMylgbvn.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messages-FzCustomConfirmDialog-MMylgbvn.js","sources":["../../../src/components/messages/FzCustomConfirmDialog.vue"],"sourcesContent":["<template>\n <Teleport to=\"body\">\n <Transition name=\"dialog-fade\">\n <div\n v-if=\"isOpen\"\n class=\"custom-dialog-overlay d-flex align-center justify-center pa-4\"\n @click.self=\"handleOverlayClick\"\n >\n <v-card class=\"flex-grow-1\" max-width=\"500\" :elevation=\"12\">\n <v-card-title class=\"d-flex align-center ga-3 px-6 pb-4 pt-6\">\n <v-icon color=\"warning\" size=\"28\">mdi-help-circle</v-icon>\n <span class=\"text-h6 font-weight-medium\">{{ currentTitle }}</span>\n </v-card-title>\n\n <v-card-text v-if=\"currentMessage\" class=\"px-6 pb-4 text-body-2\">\n {{ currentMessage }}\n </v-card-text>\n\n <v-card-actions class=\"d-flex justify-end ga-2 px-6 pb-6 pt-2\">\n <v-btn :color=\"confirmColor\" variant=\"elevated\" class=\"text-none\" @click=\"handleYes\">\n {{ confirmText }}\n </v-btn>\n <v-btn :color=\"cancelColor\" variant=\"outlined\" class=\"text-none\" @click=\"handleNo\">\n {{ cancelText }}\n </v-btn>\n </v-card-actions>\n </v-card>\n </div>\n </Transition>\n </Teleport>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, watch, onMounted, onUnmounted } from 'vue';\nimport type { ConfirmOptions } from '@/utils/types';\nimport { useConfirmStore } from '@/utils/confirm';\n\nconst isOpen = ref(false);\nconst currentTitle = ref('');\nconst currentMessage = ref('');\nconst isPersistent = ref(true);\nconst enterToConfirm = ref(false);\nconst confirmText = ref('');\nconst cancelText = ref('');\nconst confirmColor = ref('primary');\nconst cancelColor = ref('secondary');\nlet resolvePromise: ((value: boolean) => void) | null = null;\n\nconst confirmDialog = (title: string, message: string, options?: ConfirmOptions): Promise<boolean> => {\n currentTitle.value = title;\n currentMessage.value = message;\n isPersistent.value = options?.persistent ?? true;\n enterToConfirm.value = options?.enterToConfirm ?? false;\n confirmText.value = options?.confirmText ?? 'Sim';\n cancelText.value = options?.cancelText ?? 'Não';\n confirmColor.value = options?.confirmColor ?? 'primary';\n cancelColor.value = options?.cancelColor ?? 'secondary';\n isOpen.value = true;\n\n return new Promise((resolve) => {\n resolvePromise = resolve;\n });\n};\n\nonMounted(() => {\n useConfirmStore().setConfirmRef({ confirmDialog });\n});\n\nonUnmounted(() => {\n useConfirmStore().setConfirmRef({ confirmDialog: () => Promise.resolve(false) });\n document.removeEventListener('keydown', handleKeydown);\n});\n\nconst handleYes = () => {\n (resolvePromise as (value: boolean) => void)(true);\n\n isOpen.value = false;\n};\n\nconst handleNo = () => {\n (resolvePromise as (value: boolean) => void)(false);\n\n isOpen.value = false;\n};\n\nconst handleOverlayClick = () => {\n if (isPersistent.value) return;\n\n handleNo();\n};\n\nconst handleKeydown = (event: KeyboardEvent) => {\n if (event.key === 'Enter' && enterToConfirm.value) {\n event.preventDefault();\n handleYes();\n\n return;\n }\n\n if (event.key === 'Escape') {\n if (isPersistent.value) return;\n\n event.preventDefault();\n handleNo();\n }\n};\n\nwatch(isOpen, (open) => {\n if (open) {\n document.addEventListener('keydown', handleKeydown);\n } else {\n document.removeEventListener('keydown', handleKeydown);\n }\n});\n\ndefineExpose({\n confirmDialog,\n});\n</script>\n\n<style scoped>\n.custom-dialog-overlay {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background-color: rgba(0, 0, 0, 0.5);\n z-index: 2400;\n}\n\n.dialog-fade-enter-active,\n.dialog-fade-leave-active {\n transition: opacity 0.2s ease;\n}\n\n.dialog-fade-enter-from,\n.dialog-fade-leave-to {\n opacity: 0;\n}\n\n.dialog-fade-enter-active .v-card,\n.dialog-fade-leave-active .v-card {\n transition: transform 0.2s ease;\n}\n\n.dialog-fade-enter-from .v-card {\n transform: scale(0.9);\n}\n\n.dialog-fade-leave-to .v-card {\n transform: scale(0.9);\n}\n</style>\n"],"names":["isOpen","ref","currentTitle","currentMessage","isPersistent","enterToConfirm","confirmText","cancelText","confirmColor","cancelColor","resolvePromise","confirmDialog","title","message","options","resolve","onMounted","useConfirmStore","onUnmounted","handleKeydown","handleYes","handleNo","handleOverlayClick","event","watch","open","__expose","_createBlock","_Teleport","_createVNode","_Transition","_createElementBlock","_component_v_card","_component_v_card_title","_component_v_icon","_cache","_createElementVNode","_hoisted_1","_toDisplayString","_component_v_card_text","_component_v_card_actions","_component_v_btn"],"mappings":"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"}
@@ -0,0 +1,96 @@
1
+ import { defineComponent as A, ref as k, computed as s, watch as D, onUnmounted as x, resolveComponent as B, createBlock as I, openBlock as b, Transition as S, withCtx as R, createElementBlock as V, createCommentVNode as q, unref as l, normalizeStyle as d, createVNode as z, createElementVNode as h } from "vue";
2
+ import { useTheme as G } from "vuetify";
3
+ import { u as L } from "../utils/notify-CE_gbk11.js";
4
+ import { N as w } from "../utils/types-DV6li0y5.js";
5
+ import { _ as O } from "./inputs-FzMoneyField-C8nCfRgx.js";
6
+ const H = 350, K = "#1E1E1E", M = /* @__PURE__ */ A({
7
+ __name: "FzFloatingNotify",
8
+ setup(U) {
9
+ const v = G(), e = L(), F = k(null), a = k(100), y = s(() => v.global.name.value === "dark"), _ = {
10
+ success: "#4CAF50",
11
+ error: "#F44336",
12
+ warning: "#FF9800",
13
+ info: "#2196F3"
14
+ }, g = s(() => {
15
+ try {
16
+ const t = v.global.current.value.colors?.[e.type];
17
+ if (typeof t == "string" && t.startsWith("#")) return t;
18
+ } catch {
19
+ }
20
+ return _[e.type] || _.info;
21
+ }), i = {
22
+ success: "#E8F5E9",
23
+ error: "#FFEBEE",
24
+ warning: "#FFF3E0",
25
+ info: "#E3F2FD"
26
+ }, C = s(() => ({
27
+ backgroundColor: y.value ? K : i[e.type] || i.info,
28
+ borderInlineStart: `4px solid ${g.value}`
29
+ })), N = s(() => y.value ? "rgba(255, 255, 255, 0.05)" : i[e.type] || i.info), T = s(() => g.value);
30
+ function c() {
31
+ if (!e.isVisible) return;
32
+ const r = Date.now() >= E && F.value.matches(":hover");
33
+ if (r && !o) {
34
+ o = !0, f += Date.now() - u, e.pause(), n = requestAnimationFrame(c);
35
+ return;
36
+ }
37
+ if (!r && o && (o = !1, u = Date.now(), e.resume()), o) {
38
+ n = requestAnimationFrame(c);
39
+ return;
40
+ }
41
+ const t = Date.now() - u, m = f + t, p = w - m;
42
+ if (p <= 0) {
43
+ a.value = 0;
44
+ return;
45
+ }
46
+ a.value = p / w * 100, n = requestAnimationFrame(c);
47
+ }
48
+ let f = 0, u = 0, E = 0, o = !1, n = null;
49
+ return D(() => e.isVisible, (r) => {
50
+ if (r) {
51
+ f = 0, u = Date.now(), E = Date.now() + H, o = !1, a.value = 100, n = requestAnimationFrame(c);
52
+ return;
53
+ }
54
+ o = !1, a.value = 100;
55
+ }), x(() => {
56
+ n !== null && cancelAnimationFrame(n), e.cleanup();
57
+ }), (r, t) => {
58
+ const m = B("v-alert");
59
+ return b(), I(S, { name: "slide-fade" }, {
60
+ default: R(() => [
61
+ l(e).isVisible ? (b(), V("div", {
62
+ key: 0,
63
+ ref_key: "notificationRef",
64
+ ref: F,
65
+ class: "floating-notify elevation-6",
66
+ style: d(C.value)
67
+ }, [
68
+ z(m, {
69
+ type: l(e).type,
70
+ title: l(e).title,
71
+ text: l(e).message,
72
+ variant: "text",
73
+ closable: "",
74
+ class: "floating-notify-alert",
75
+ "onClick:close": t[0] || (t[0] = (p) => l(e).hide())
76
+ }, null, 8, ["type", "title", "text"]),
77
+ h("div", {
78
+ class: "progress-track",
79
+ style: d({ backgroundColor: N.value })
80
+ }, [
81
+ h("div", {
82
+ class: "progress-fill",
83
+ style: d({ width: a.value + "%", backgroundColor: T.value })
84
+ }, null, 4)
85
+ ], 4)
86
+ ], 4)) : q("", !0)
87
+ ]),
88
+ _: 1
89
+ });
90
+ };
91
+ }
92
+ }), J = /* @__PURE__ */ O(M, [["__scopeId", "data-v-c2162be0"]]);
93
+ export {
94
+ J as F
95
+ };
96
+ //# sourceMappingURL=messages-FzFloatingNotify-DU8K95A2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messages-FzFloatingNotify-DU8K95A2.js","sources":["../../../src/components/messages/FzFloatingNotify.vue"],"sourcesContent":["<template>\n <Transition name=\"slide-fade\">\n <div\n v-if=\"store.isVisible\"\n ref=\"notificationRef\"\n class=\"floating-notify elevation-6\"\n :style=\"wrapperStyle\"\n >\n <v-alert\n :type=\"store.type\"\n :title=\"store.title\"\n :text=\"store.message\"\n variant=\"text\"\n closable\n class=\"floating-notify-alert\"\n @click:close=\"store.hide()\"\n />\n\n <div\n class=\"progress-track\"\n :style=\"{ backgroundColor: trackBg }\"\n >\n <div\n class=\"progress-fill\"\n :style=\"{ width: progress + '%', backgroundColor: fillColor }\"\n />\n </div>\n </div>\n </Transition>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, computed, watch, onUnmounted } from 'vue';\nimport { useTheme } from 'vuetify';\nimport { useNotifyStore } from '@/utils/notify';\nimport { NOTIFY_DURATION } from '@/utils/types';\n\nconst theme = useTheme();\nconst store = useNotifyStore();\n\nconst notificationRef = ref<HTMLElement | null>(null);\nconst progress = ref(100);\nconst ENTER_TRANSITION_MS = 350;\n\nconst isDark = computed(() => theme.global.name.value === 'dark');\n\nconst FALLBACK: Record<string, string> = {\n success: '#4CAF50', error: '#F44336', warning: '#FF9800', info: '#2196F3',\n};\n\nconst themeTypeColor = computed(() => {\n try {\n const colors = theme.global.current.value.colors;\n const hex = colors?.[store.type];\n\n if (typeof hex === 'string' && hex.startsWith('#')) return hex;\n } catch {\n // theme not accessible\n }\n\n return FALLBACK[store.type] || FALLBACK.info;\n});\n\nconst LIGHT_BG: Record<string, string> = {\n success: '#E8F5E9', error: '#FFEBEE', warning: '#FFF3E0', info: '#E3F2FD',\n};\nconst DARK_BG = '#1E1E1E';\n\nconst wrapperStyle = computed(() => ({\n backgroundColor: isDark.value ? DARK_BG : LIGHT_BG[store.type] || LIGHT_BG.info,\n borderInlineStart: `4px solid ${themeTypeColor.value}`,\n}));\n\nconst trackBg = computed(() => {\n if (isDark.value) return 'rgba(255, 255, 255, 0.05)';\n\n return LIGHT_BG[store.type] || LIGHT_BG.info;\n});\n\nconst fillColor = computed(() => themeTypeColor.value);\n\nfunction updateProgress() {\n if (!store.isVisible) return;\n\n const hovered = Date.now() >= enterTransitionEndTime && (notificationRef.value as HTMLElement).matches(':hover');\n\n if (hovered && !isHovered) {\n isHovered = true;\n totalElapsedMs += Date.now() - intervalStartTime;\n\n store.pause();\n\n rafId = requestAnimationFrame(updateProgress);\n\n return;\n }\n\n if (!hovered && isHovered) {\n isHovered = false;\n intervalStartTime = Date.now();\n\n store.resume();\n }\n\n if (isHovered) {\n rafId = requestAnimationFrame(updateProgress);\n\n return;\n }\n\n const elapsed = Date.now() - intervalStartTime;\n const totalElapsed = totalElapsedMs + elapsed;\n const remaining = NOTIFY_DURATION - totalElapsed;\n\n if (remaining <= 0) {\n progress.value = 0;\n\n return;\n }\n\n progress.value = (remaining / NOTIFY_DURATION) * 100;\n\n rafId = requestAnimationFrame(updateProgress);\n}\n\nlet totalElapsedMs = 0;\nlet intervalStartTime = 0;\nlet enterTransitionEndTime = 0;\nlet isHovered = false;\nlet rafId: number | null = null;\n\nwatch(() => store.isVisible, (visible) => {\n if (visible) {\n totalElapsedMs = 0;\n intervalStartTime = Date.now();\n enterTransitionEndTime = Date.now() + ENTER_TRANSITION_MS;\n isHovered = false;\n progress.value = 100;\n\n rafId = requestAnimationFrame(updateProgress);\n\n return;\n }\n\n isHovered = false;\n progress.value = 100;\n});\n\nonUnmounted(() => {\n if (rafId !== null) cancelAnimationFrame(rafId);\n\n store.cleanup();\n});\n</script>\n\n<style scoped>\n.floating-notify {\n position: fixed;\n top: 20px;\n right: 20px;\n min-width: 300px;\n max-width: 500px;\n z-index: 9999;\n border-radius: 4px;\n overflow: hidden;\n}\n\n.floating-notify :deep(.v-alert--border) {\n border-inline-start-width: 0;\n}\n\n.progress-track {\n height: 3px;\n}\n\n.progress-fill {\n height: 100%;\n transition: width 100ms linear;\n}\n\n.slide-fade-enter-active {\n transition: all 0.3s ease-out;\n}\n\n.slide-fade-leave-active {\n transition: all 0.3s ease-in;\n}\n\n.slide-fade-enter-from {\n transform: translateX(100%);\n opacity: 0;\n}\n\n.slide-fade-leave-to {\n transform: translateX(100%);\n opacity: 0;\n}\n</style>\n"],"names":["ENTER_TRANSITION_MS","DARK_BG","theme","useTheme","store","useNotifyStore","notificationRef","ref","progress","isDark","computed","FALLBACK","themeTypeColor","hex","LIGHT_BG","wrapperStyle","trackBg","fillColor","updateProgress","hovered","enterTransitionEndTime","isHovered","totalElapsedMs","intervalStartTime","rafId","elapsed","totalElapsed","remaining","NOTIFY_DURATION","watch","visible","onUnmounted","_createBlock","_Transition","_unref","_createElementBlock","_createVNode","_component_v_alert","_cache","$event","_createElementVNode","_normalizeStyle"],"mappings":"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"}