@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.
- package/dist/chunks/components/{inputs-FzFullAddress-Dj68efww.js → inputs-FzFullAddress-VTqqGmqm.js} +10 -10
- package/dist/chunks/components/{inputs-FzFullAddress-Dj68efww.js.map → inputs-FzFullAddress-VTqqGmqm.js.map} +1 -1
- package/dist/chunks/components/{inputs-FzMoneyField-Co9uqB9u.js → inputs-FzMoneyField-C8nCfRgx.js} +8 -8
- package/dist/chunks/components/{inputs-FzMoneyField-Co9uqB9u.js.map → inputs-FzMoneyField-C8nCfRgx.js.map} +1 -1
- package/dist/chunks/components/{inputs-FzNumberField-DG-uYIEA.js → inputs-FzNumberField-BoJ_kxJg.js} +2 -2
- package/dist/chunks/components/{inputs-FzNumberField-DG-uYIEA.js.map → inputs-FzNumberField-BoJ_kxJg.js.map} +1 -1
- package/dist/chunks/components/inputs-datepicker-FzDatePicker-FDVslsba.js +129 -0
- package/dist/chunks/components/inputs-datepicker-FzDatePicker-FDVslsba.js.map +1 -0
- package/dist/chunks/components/inputs-datepicker-FzDatePickerCalendar-TOO_5iVD.js +170 -0
- package/dist/chunks/components/inputs-datepicker-FzDatePickerCalendar-TOO_5iVD.js.map +1 -0
- package/dist/chunks/components/inputs-datepicker-FzDatePickerDaysView-0m1isZIx.js +82 -0
- package/dist/chunks/components/inputs-datepicker-FzDatePickerDaysView-0m1isZIx.js.map +1 -0
- package/dist/chunks/components/inputs-datepicker-FzDatePickerMonthsView-DfjKo8Y0.js +52 -0
- package/dist/chunks/components/inputs-datepicker-FzDatePickerMonthsView-DfjKo8Y0.js.map +1 -0
- package/dist/chunks/components/inputs-datepicker-FzDatePickerYearsView-BLqOg5T9.js +58 -0
- package/dist/chunks/components/inputs-datepicker-FzDatePickerYearsView-BLqOg5T9.js.map +1 -0
- package/dist/chunks/components/{layout-FzLoadingOverlay-CWKZxowb.js → layout-FzLoadingOverlay-DTejZcvu.js} +2 -2
- package/dist/chunks/components/{layout-FzLoadingOverlay-CWKZxowb.js.map → layout-FzLoadingOverlay-DTejZcvu.js.map} +1 -1
- package/dist/chunks/components/messages-FzConfirmDialog-C3KyhNp5.js +18 -0
- package/dist/chunks/components/messages-FzConfirmDialog-C3KyhNp5.js.map +1 -0
- package/dist/chunks/components/messages-FzCustomConfirmDialog-MMylgbvn.js +118 -0
- package/dist/chunks/components/messages-FzCustomConfirmDialog-MMylgbvn.js.map +1 -0
- package/dist/chunks/components/messages-FzFloatingNotify-DU8K95A2.js +96 -0
- package/dist/chunks/components/messages-FzFloatingNotify-DU8K95A2.js.map +1 -0
- package/dist/chunks/components/{modals-FzModalBase-DmsJR5qM.js → modals-FzModalBase-OltWGin-.js} +27 -24
- package/dist/chunks/components/modals-FzModalBase-OltWGin-.js.map +1 -0
- package/dist/chunks/composables/useDatePicker-DlPanUqu.js +78 -0
- package/dist/chunks/composables/useDatePicker-DlPanUqu.js.map +1 -0
- package/dist/chunks/index-CykPyQ3c.js +35 -0
- package/dist/chunks/index-CykPyQ3c.js.map +1 -0
- package/dist/chunks/utils/date-BCG-p19e.js +106 -0
- package/dist/chunks/utils/date-BCG-p19e.js.map +1 -0
- package/dist/chunks/utils/types-DV6li0y5.js.map +1 -1
- package/dist/components/index.d.ts +1 -0
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +15 -13
- package/dist/components/index.js.map +1 -1
- package/dist/components/inputs/FzFullAddress.vue.d.ts.map +1 -1
- package/dist/components/inputs/datepicker/FzDatePicker.vue.d.ts +66 -0
- package/dist/components/inputs/datepicker/FzDatePicker.vue.d.ts.map +1 -0
- package/dist/components/inputs/datepicker/FzDatePickerCalendar.vue.d.ts +33 -0
- package/dist/components/inputs/datepicker/FzDatePickerCalendar.vue.d.ts.map +1 -0
- package/dist/components/inputs/datepicker/FzDatePickerDaysView.vue.d.ts +17 -0
- package/dist/components/inputs/datepicker/FzDatePickerDaysView.vue.d.ts.map +1 -0
- package/dist/components/inputs/datepicker/FzDatePickerMonthsView.vue.d.ts +13 -0
- package/dist/components/inputs/datepicker/FzDatePickerMonthsView.vue.d.ts.map +1 -0
- package/dist/components/inputs/datepicker/FzDatePickerYearsView.vue.d.ts +13 -0
- package/dist/components/inputs/datepicker/FzDatePickerYearsView.vue.d.ts.map +1 -0
- package/dist/components/messages/FzConfirmDialog.vue.d.ts.map +1 -1
- package/dist/components/messages/FzCustomConfirmDialog.vue.d.ts.map +1 -1
- package/dist/components/messages/FzFloatingNotify.vue.d.ts.map +1 -1
- package/dist/components/modals/FzModalBase.vue.d.ts +2 -0
- package/dist/components/modals/FzModalBase.vue.d.ts.map +1 -1
- package/dist/composables/index.d.ts +1 -0
- package/dist/composables/index.d.ts.map +1 -1
- package/dist/composables/index.js +6 -4
- package/dist/composables/index.js.map +1 -1
- package/dist/composables/useDatePicker.d.ts +30 -0
- package/dist/composables/useDatePicker.d.ts.map +1 -0
- package/dist/index.js +64 -60
- package/dist/index.js.map +1 -1
- package/dist/ui.css +1 -1
- package/dist/utils/date.d.ts +28 -0
- package/dist/utils/date.d.ts.map +1 -0
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +19 -18
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/notify.d.ts +1 -1
- package/dist/utils/types.d.ts +1 -0
- package/dist/utils/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/chunks/components/messages-FzConfirmDialog-vB2NQFVy.js +0 -18
- package/dist/chunks/components/messages-FzConfirmDialog-vB2NQFVy.js.map +0 -1
- package/dist/chunks/components/messages-FzCustomConfirmDialog-DF73kvKq.js +0 -107
- package/dist/chunks/components/messages-FzCustomConfirmDialog-DF73kvKq.js.map +0 -1
- package/dist/chunks/components/messages-FzFloatingNotify-CV5gLl9-.js +0 -96
- package/dist/chunks/components/messages-FzFloatingNotify-CV5gLl9-.js.map +0 -1
- package/dist/chunks/components/modals-FzModalBase-DmsJR5qM.js.map +0 -1
- package/dist/chunks/index-OarSr4I3.js +0 -33
- 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-
|
|
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-
|
|
58
|
+
//# sourceMappingURL=layout-FzLoadingOverlay-DTejZcvu.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"layout-FzLoadingOverlay-
|
|
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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"}
|