@forizi-tecnologia/ui 0.0.7 → 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 (72) 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-CcADw89-.js → messages-FzCustomConfirmDialog-MMylgbvn.js} +18 -18
  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-CBZ5Ea3Z.js → modals-FzModalBase-OltWGin-.js} +2 -2
  26. package/dist/chunks/components/{modals-FzModalBase-CBZ5Ea3Z.js.map → modals-FzModalBase-OltWGin-.js.map} +1 -1
  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/components/index.d.ts +1 -0
  34. package/dist/components/index.d.ts.map +1 -1
  35. package/dist/components/index.js +15 -13
  36. package/dist/components/index.js.map +1 -1
  37. package/dist/components/inputs/FzFullAddress.vue.d.ts.map +1 -1
  38. package/dist/components/inputs/datepicker/FzDatePicker.vue.d.ts +66 -0
  39. package/dist/components/inputs/datepicker/FzDatePicker.vue.d.ts.map +1 -0
  40. package/dist/components/inputs/datepicker/FzDatePickerCalendar.vue.d.ts +33 -0
  41. package/dist/components/inputs/datepicker/FzDatePickerCalendar.vue.d.ts.map +1 -0
  42. package/dist/components/inputs/datepicker/FzDatePickerDaysView.vue.d.ts +17 -0
  43. package/dist/components/inputs/datepicker/FzDatePickerDaysView.vue.d.ts.map +1 -0
  44. package/dist/components/inputs/datepicker/FzDatePickerMonthsView.vue.d.ts +13 -0
  45. package/dist/components/inputs/datepicker/FzDatePickerMonthsView.vue.d.ts.map +1 -0
  46. package/dist/components/inputs/datepicker/FzDatePickerYearsView.vue.d.ts +13 -0
  47. package/dist/components/inputs/datepicker/FzDatePickerYearsView.vue.d.ts.map +1 -0
  48. package/dist/components/messages/FzConfirmDialog.vue.d.ts.map +1 -1
  49. package/dist/components/messages/FzFloatingNotify.vue.d.ts.map +1 -1
  50. package/dist/composables/index.d.ts +1 -0
  51. package/dist/composables/index.d.ts.map +1 -1
  52. package/dist/composables/index.js +6 -4
  53. package/dist/composables/index.js.map +1 -1
  54. package/dist/composables/useDatePicker.d.ts +30 -0
  55. package/dist/composables/useDatePicker.d.ts.map +1 -0
  56. package/dist/index.js +64 -60
  57. package/dist/index.js.map +1 -1
  58. package/dist/ui.css +1 -1
  59. package/dist/utils/date.d.ts +28 -0
  60. package/dist/utils/date.d.ts.map +1 -0
  61. package/dist/utils/index.d.ts +1 -0
  62. package/dist/utils/index.d.ts.map +1 -1
  63. package/dist/utils/index.js +19 -18
  64. package/dist/utils/index.js.map +1 -1
  65. package/package.json +1 -1
  66. package/dist/chunks/components/messages-FzConfirmDialog-BvnTIYZm.js +0 -18
  67. package/dist/chunks/components/messages-FzConfirmDialog-BvnTIYZm.js.map +0 -1
  68. package/dist/chunks/components/messages-FzCustomConfirmDialog-CcADw89-.js.map +0 -1
  69. package/dist/chunks/components/messages-FzFloatingNotify-CV5gLl9-.js +0 -96
  70. package/dist/chunks/components/messages-FzFloatingNotify-CV5gLl9-.js.map +0 -1
  71. package/dist/chunks/index-B-0CLj_d.js +0 -33
  72. package/dist/chunks/index-B-0CLj_d.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;;;"}
@@ -1,13 +1,13 @@
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 i, toDisplayString as u } from "vue";
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
2
  import { u as N } from "../utils/confirm-DiGEPjua.js";
3
- import { _ as Y } from "./inputs-FzMoneyField-Co9uqB9u.js";
3
+ import { _ as Y } from "./inputs-FzMoneyField-C8nCfRgx.js";
4
4
  const q = { class: "text-h6 font-weight-medium" }, A = /* @__PURE__ */ L({
5
5
  __name: "FzCustomConfirmDialog",
6
6
  setup(G, { expose: P }) {
7
- const l = t(!1), x = t(""), f = t(""), d = t(!0), C = t(!1), y = t(""), g = t(""), k = t("primary"), w = t("secondary");
8
- let c = null;
9
- const h = (e, s, o) => (x.value = e, f.value = s, 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
- c = _;
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
11
  }));
12
12
  M(() => {
13
13
  N().setConfirmRef({ confirmDialog: h });
@@ -15,9 +15,9 @@ const q = { class: "text-h6 font-weight-medium" }, A = /* @__PURE__ */ L({
15
15
  N().setConfirmRef({ confirmDialog: () => Promise.resolve(!1) }), document.removeEventListener("keydown", v);
16
16
  });
17
17
  const T = () => {
18
- c && c(!0), l.value = !1;
18
+ f(!0), l.value = !1;
19
19
  }, m = () => {
20
- c && c(!1), l.value = !1;
20
+ f(!1), l.value = !1;
21
21
  }, V = () => {
22
22
  d.value || m();
23
23
  }, v = (e) => {
@@ -34,7 +34,7 @@ const q = { class: "text-h6 font-weight-medium" }, A = /* @__PURE__ */ L({
34
34
  e ? document.addEventListener("keydown", v) : document.removeEventListener("keydown", v);
35
35
  }), P({
36
36
  confirmDialog: h
37
- }), (e, s) => {
37
+ }), (e, c) => {
38
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
39
  return p(), D(O, { to: "body" }, [
40
40
  a(R, { name: "dialog-fade" }, {
@@ -56,21 +56,21 @@ const q = { class: "text-h6 font-weight-medium" }, A = /* @__PURE__ */ L({
56
56
  color: "warning",
57
57
  size: "28"
58
58
  }, {
59
- default: n(() => [...s[0] || (s[0] = [
60
- i("mdi-help-circle", -1)
59
+ default: n(() => [...c[0] || (c[0] = [
60
+ s("mdi-help-circle", -1)
61
61
  ])]),
62
62
  _: 1
63
63
  }),
64
- U("span", q, u(x.value), 1)
64
+ U("span", q, i(x.value), 1)
65
65
  ]),
66
66
  _: 1
67
67
  }),
68
- f.value ? (p(), D(z, {
68
+ u.value ? (p(), D(z, {
69
69
  key: 0,
70
70
  class: "px-6 pb-4 text-body-2"
71
71
  }, {
72
72
  default: n(() => [
73
- i(u(f.value), 1)
73
+ s(i(u.value), 1)
74
74
  ]),
75
75
  _: 1
76
76
  })) : E("", !0),
@@ -83,7 +83,7 @@ const q = { class: "text-h6 font-weight-medium" }, A = /* @__PURE__ */ L({
83
83
  onClick: T
84
84
  }, {
85
85
  default: n(() => [
86
- i(u(y.value), 1)
86
+ s(i(y.value), 1)
87
87
  ]),
88
88
  _: 1
89
89
  }, 8, ["color"]),
@@ -94,7 +94,7 @@ const q = { class: "text-h6 font-weight-medium" }, A = /* @__PURE__ */ L({
94
94
  onClick: m
95
95
  }, {
96
96
  default: n(() => [
97
- i(u(g.value), 1)
97
+ s(i(g.value), 1)
98
98
  ]),
99
99
  _: 1
100
100
  }, 8, ["color"])
@@ -111,8 +111,8 @@ const q = { class: "text-h6 font-weight-medium" }, A = /* @__PURE__ */ L({
111
111
  ]);
112
112
  };
113
113
  }
114
- }), W = /* @__PURE__ */ Y(A, [["__scopeId", "data-v-fe279f13"]]);
114
+ }), W = /* @__PURE__ */ Y(A, [["__scopeId", "data-v-e7ebc1b2"]]);
115
115
  export {
116
116
  W as F
117
117
  };
118
- //# sourceMappingURL=messages-FzCustomConfirmDialog-CcADw89-.js.map
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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"}
@@ -1,6 +1,6 @@
1
1
  import { defineComponent as F, computed as m, resolveComponent as a, createBlock as s, openBlock as c, withCtx as r, createVNode as u, createCommentVNode as _, createElementVNode as z, createTextVNode as p, toDisplayString as d, renderSlot as P, createElementBlock as M, Fragment as O, renderList as S } from "vue";
2
2
  import { useTheme as W } from "vuetify";
3
- import { _ as L } from "./inputs-FzMoneyField-Co9uqB9u.js";
3
+ import { _ as L } from "./inputs-FzMoneyField-C8nCfRgx.js";
4
4
  const R = /* @__PURE__ */ F({
5
5
  __name: "FzModalBase",
6
6
  props: {
@@ -131,4 +131,4 @@ const R = /* @__PURE__ */ F({
131
131
  export {
132
132
  G as F
133
133
  };
134
- //# sourceMappingURL=modals-FzModalBase-CBZ5Ea3Z.js.map
134
+ //# sourceMappingURL=modals-FzModalBase-OltWGin-.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"modals-FzModalBase-CBZ5Ea3Z.js","sources":["../../../src/components/modals/FzModalBase.vue"],"sourcesContent":["<template>\n <v-dialog\n v-model=\"isOpen\"\n :max-width=\"maxWidth\"\n :persistent=\"persistent\"\n :content-class=\"dialogContentClass\"\n :fullscreen=\"fullscreen\"\n scrollable\n :z-index=\"2400\"\n @keydown=\"onDialogKeydown\"\n >\n <v-card>\n <v-card-title\n v-if=\"title\"\n class=\"text-h5 d-flex align-center px-6 pt-6 modal-title\"\n >\n <v-icon v-if=\"titleIcon\" class=\"mr-2\">{{ titleIcon }}</v-icon>\n <span>{{ title }}</span>\n </v-card-title>\n\n <v-card-text class=\"px-6 pt-4\">\n <slot>\n {{ message }}\n </slot>\n </v-card-text>\n\n <v-card-actions>\n <v-spacer />\n <v-btn\n v-for=\"(action, index) in actions\"\n :key=\"index\"\n :color=\"action.color || 'primary'\"\n :prepend-icon=\"action.icon\"\n :variant=\"action.variant || getDefaultVariant(action.color)\"\n type=\"button\"\n class=\"text-none\"\n @click=\"handleAction(action)\"\n >\n {{ action.text }}\n </v-btn>\n </v-card-actions>\n </v-card>\n </v-dialog>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue';\nimport { useTheme } from 'vuetify';\n\nexport interface ModalAction {\n text: string;\n icon?: string;\n color?: string;\n variant?: 'text' | 'flat' | 'elevated' | 'tonal' | 'outlined' | 'plain';\n handler?: () => void | Promise<void>;\n}\n\ninterface Props {\n modelValue: boolean;\n title?: string;\n message?: string;\n maxWidth?: string | number;\n persistent?: boolean;\n enterToConfirm?: boolean;\n actions?: ModalAction[];\n contentClass?: string;\n fullscreen?: boolean;\n titleIcon?: string;\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n title: undefined,\n message: '',\n maxWidth: 500,\n persistent: true,\n enterToConfirm: false,\n actions: () => [],\n contentClass: undefined,\n fullscreen: false,\n titleIcon: undefined,\n});\n\nconst emit = defineEmits<{\n 'update:modelValue': [value: boolean];\n}>();\n\nconst theme = useTheme();\n\nconst isOpen = computed({\n get: () => props.modelValue,\n set: (val) => emit('update:modelValue', val),\n});\n\nconst dialogThemeClass = computed(() => `v-theme--${theme.global.name.value}`);\n\nconst dialogContentClass = computed(() => {\n if (!props.contentClass) return dialogThemeClass.value;\n\n return `${dialogThemeClass.value} ${props.contentClass}`;\n});\n\nfunction findCancelAction(): ModalAction | undefined {\n return props.actions.find((a) => a.color === 'secondary' || a.color === 'error');\n}\n\nfunction findPrimaryAction(): ModalAction | undefined {\n return props.actions.find(\n (a) => a.color === 'primary' || (!a.color && props.actions.indexOf(a) === props.actions.length - 1),\n );\n}\n\nfunction isInteractiveElement(target: HTMLElement): boolean {\n return target.tagName === 'TEXTAREA';\n}\n\nfunction getDefaultVariant(color?: string): 'elevated' | 'outlined' | 'text' {\n if (!color || color === 'primary') return 'elevated';\n\n if (color === 'secondary' || color === 'error') return 'outlined';\n\n return 'text';\n}\n\nasync function handleAction(action: ModalAction): Promise<void> {\n if (!action.handler) return;\n\n await action.handler();\n}\n\nfunction onDialogKeydown(e: KeyboardEvent): void {\n if (props.actions.length === 0) return;\n\n if (e.key === 'Escape') {\n if (props.persistent) return;\n\n const cancelAction = findCancelAction();\n\n if (!cancelAction) return;\n\n e.preventDefault();\n e.stopPropagation();\n handleAction(cancelAction);\n\n return;\n }\n\n if (e.key === 'Enter' && !e.shiftKey && !e.ctrlKey && !e.altKey) {\n if (!props.enterToConfirm) return;\n\n const target = e.target as HTMLElement;\n\n if (isInteractiveElement(target)) return;\n\n const primaryAction = findPrimaryAction();\n\n if (!primaryAction) return;\n\n e.preventDefault();\n e.stopPropagation();\n handleAction(primaryAction);\n }\n}\n\n</script>\n\n<style scoped>\n.modal-title {\n word-break: break-word;\n white-space: normal;\n}\n</style>\n\n<!-- Vuetify renders overlays as siblings at root; adjust z-index so v-select/v-menu popups inside this dialog appear above the dialog overlay -->\n<style>\n.v-overlay-container .v-menu > .v-overlay__content,\n.v-overlay-container .v-select__content,\n.v-overlay-container .v-autocomplete__content {\n z-index: 2500;\n}\n</style>\n"],"names":["props","__props","emit","__emit","theme","useTheme","isOpen","computed","val","dialogThemeClass","dialogContentClass","findCancelAction","a","findPrimaryAction","isInteractiveElement","target","getDefaultVariant","color","handleAction","action","onDialogKeydown","cancelAction","primaryAction","_createBlock","_component_v_dialog","$event","_createVNode","_component_v_card","_component_v_card_title","_component_v_icon","_createElementVNode","_component_v_card_text","_renderSlot","_ctx","_component_v_card_actions","_component_v_spacer","_openBlock","_createElementBlock","_Fragment","_renderList","index","_component_v_btn","_createTextVNode","_toDisplayString"],"mappings":"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"}
1
+ {"version":3,"file":"modals-FzModalBase-OltWGin-.js","sources":["../../../src/components/modals/FzModalBase.vue"],"sourcesContent":["<template>\n <v-dialog\n v-model=\"isOpen\"\n :max-width=\"maxWidth\"\n :persistent=\"persistent\"\n :content-class=\"dialogContentClass\"\n :fullscreen=\"fullscreen\"\n scrollable\n :z-index=\"2400\"\n @keydown=\"onDialogKeydown\"\n >\n <v-card>\n <v-card-title\n v-if=\"title\"\n class=\"text-h5 d-flex align-center px-6 pt-6 modal-title\"\n >\n <v-icon v-if=\"titleIcon\" class=\"mr-2\">{{ titleIcon }}</v-icon>\n <span>{{ title }}</span>\n </v-card-title>\n\n <v-card-text class=\"px-6 pt-4\">\n <slot>\n {{ message }}\n </slot>\n </v-card-text>\n\n <v-card-actions>\n <v-spacer />\n <v-btn\n v-for=\"(action, index) in actions\"\n :key=\"index\"\n :color=\"action.color || 'primary'\"\n :prepend-icon=\"action.icon\"\n :variant=\"action.variant || getDefaultVariant(action.color)\"\n type=\"button\"\n class=\"text-none\"\n @click=\"handleAction(action)\"\n >\n {{ action.text }}\n </v-btn>\n </v-card-actions>\n </v-card>\n </v-dialog>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue';\nimport { useTheme } from 'vuetify';\n\nexport interface ModalAction {\n text: string;\n icon?: string;\n color?: string;\n variant?: 'text' | 'flat' | 'elevated' | 'tonal' | 'outlined' | 'plain';\n handler?: () => void | Promise<void>;\n}\n\ninterface Props {\n modelValue: boolean;\n title?: string;\n message?: string;\n maxWidth?: string | number;\n persistent?: boolean;\n enterToConfirm?: boolean;\n actions?: ModalAction[];\n contentClass?: string;\n fullscreen?: boolean;\n titleIcon?: string;\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n title: undefined,\n message: '',\n maxWidth: 500,\n persistent: true,\n enterToConfirm: false,\n actions: () => [],\n contentClass: undefined,\n fullscreen: false,\n titleIcon: undefined,\n});\n\nconst emit = defineEmits<{\n 'update:modelValue': [value: boolean];\n}>();\n\nconst theme = useTheme();\n\nconst isOpen = computed({\n get: () => props.modelValue,\n set: (val) => emit('update:modelValue', val),\n});\n\nconst dialogThemeClass = computed(() => `v-theme--${theme.global.name.value}`);\n\nconst dialogContentClass = computed(() => {\n if (!props.contentClass) return dialogThemeClass.value;\n\n return `${dialogThemeClass.value} ${props.contentClass}`;\n});\n\nfunction findCancelAction(): ModalAction | undefined {\n return props.actions.find((a) => a.color === 'secondary' || a.color === 'error');\n}\n\nfunction findPrimaryAction(): ModalAction | undefined {\n return props.actions.find(\n (a) => a.color === 'primary' || (!a.color && props.actions.indexOf(a) === props.actions.length - 1),\n );\n}\n\nfunction isInteractiveElement(target: HTMLElement): boolean {\n return target.tagName === 'TEXTAREA';\n}\n\nfunction getDefaultVariant(color?: string): 'elevated' | 'outlined' | 'text' {\n if (!color || color === 'primary') return 'elevated';\n\n if (color === 'secondary' || color === 'error') return 'outlined';\n\n return 'text';\n}\n\nasync function handleAction(action: ModalAction): Promise<void> {\n if (!action.handler) return;\n\n await action.handler();\n}\n\nfunction onDialogKeydown(e: KeyboardEvent): void {\n if (props.actions.length === 0) return;\n\n if (e.key === 'Escape') {\n if (props.persistent) return;\n\n const cancelAction = findCancelAction();\n\n if (!cancelAction) return;\n\n e.preventDefault();\n e.stopPropagation();\n handleAction(cancelAction);\n\n return;\n }\n\n if (e.key === 'Enter' && !e.shiftKey && !e.ctrlKey && !e.altKey) {\n if (!props.enterToConfirm) return;\n\n const target = e.target as HTMLElement;\n\n if (isInteractiveElement(target)) return;\n\n const primaryAction = findPrimaryAction();\n\n if (!primaryAction) return;\n\n e.preventDefault();\n e.stopPropagation();\n handleAction(primaryAction);\n }\n}\n\n</script>\n\n<style scoped>\n.modal-title {\n word-break: break-word;\n white-space: normal;\n}\n</style>\n\n<!-- Vuetify renders overlays as siblings at root; adjust z-index so v-select/v-menu popups inside this dialog appear above the dialog overlay -->\n<style>\n.v-overlay-container .v-menu > .v-overlay__content,\n.v-overlay-container .v-select__content,\n.v-overlay-container .v-autocomplete__content {\n z-index: 2500;\n}\n</style>\n"],"names":["props","__props","emit","__emit","theme","useTheme","isOpen","computed","val","dialogThemeClass","dialogContentClass","findCancelAction","a","findPrimaryAction","isInteractiveElement","target","getDefaultVariant","color","handleAction","action","onDialogKeydown","cancelAction","primaryAction","_createBlock","_component_v_dialog","$event","_createVNode","_component_v_card","_component_v_card_title","_component_v_icon","_createElementVNode","_component_v_card_text","_renderSlot","_ctx","_component_v_card_actions","_component_v_spacer","_openBlock","_createElementBlock","_Fragment","_renderList","index","_component_v_btn","_createTextVNode","_toDisplayString"],"mappings":"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"}