@appmax_npm/ds-prime 1.0.0-alpha.177 → 1.0.0-alpha.178

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.
@@ -5,11 +5,19 @@ import {
5
5
  VNode,
6
6
  } from 'vue';
7
7
 
8
+ export type DateRangeOffsets = [number, number];
9
+
10
+ export interface DateRangePeriod {
11
+ label: string;
12
+ offsets: DateRangeOffsets;
13
+ }
14
+
8
15
  export interface AmDateFilterProps extends AllowedComponentProps {
9
16
  defaultSelected?: 0 | 1 | 7 | 14 | 30;
10
17
  modelValue?: string[] | Date[];
11
18
  minDate?: Date | null;
12
19
  maxDate?: Date | null;
20
+ dateRangeConfigs?: DateRangePeriod[];
13
21
  disabled?: boolean;
14
22
  card?: boolean;
15
23
  timeZone?: string;
@@ -19,6 +27,17 @@ export interface AmDateFilterEmits {
19
27
  'update:modelValue': [value: string[]];
20
28
  }
21
29
 
30
+ export declare const AmDateFilterPeriods: {
31
+ readonly TODAY: DateRangePeriod;
32
+ readonly YESTERDAY: DateRangePeriod;
33
+ readonly LAST_7D: DateRangePeriod;
34
+ readonly LAST_14D: DateRangePeriod;
35
+ readonly LAST_30D: DateRangePeriod;
36
+ readonly LAST_60D: DateRangePeriod;
37
+ readonly LAST_90D: DateRangePeriod;
38
+ readonly LAST_365D: DateRangePeriod;
39
+ };
40
+
22
41
  declare const AmDateFilter: DefineComponent<AmDateFilterProps, AmDateFilterEmits>;
23
42
 
24
43
  export default AmDateFilter;
@@ -1,12 +1,12 @@
1
- import { defineComponent as E, useAttrs as H, openBlock as b, createElementBlock as w, normalizeClass as V, unref as d, createBlock as T, createCommentVNode as $, withCtx as I, createTextVNode as te, toDisplayString as ae, mergeModels as j, useModel as le, ref as k, Fragment as Y, createVNode as B, toRefs as oe, computed as S, watch as L, nextTick as re, renderList as se } from "vue";
1
+ import { defineComponent as M, useAttrs as P, openBlock as D, createElementBlock as T, normalizeClass as x, unref as i, createBlock as E, createCommentVNode as R, withCtx as U, createTextVNode as te, toDisplayString as ae, mergeModels as K, useModel as le, ref as _, Fragment as $, createVNode as S, toRefs as oe, computed as N, watch as B, nextTick as se, renderList as re } from "vue";
2
2
  import { _ as ne } from "../AmText.vue_vue_type_script_setup_true_lang-ZUjjXA8M.js";
3
3
  import { _ as ie } from "../AmIcon.vue_vue_type_script_setup_true_lang-DWxib5iw.js";
4
- import { cva as G } from "class-variance-authority";
5
- import { twMerge as q } from "tailwind-merge";
4
+ import { cva as I } from "class-variance-authority";
5
+ import { twMerge as j } from "tailwind-merge";
6
6
  import { _ as de } from "../_plugin-vue_export-helper-CHgC5LLL.js";
7
7
  import ue from "primevue/popover";
8
8
  import ce from "primevue/datepicker";
9
- const me = G(
9
+ const fe = I(
10
10
  "flex w-full h-[39px] bg-white divide-x divide-surface-300 [container-type:inline-size] border border-surface-300",
11
11
  {
12
12
  variants: {
@@ -20,7 +20,7 @@ const me = G(
20
20
  }
21
21
  }
22
22
  }
23
- ), fe = G(
23
+ ), me = I(
24
24
  [
25
25
  "flex-1 flex items-center justify-center gap-1.5 px-0.5",
26
26
  "cursor-pointer bg-transparent border-solid [border-width:0]",
@@ -44,7 +44,7 @@ const me = G(
44
44
  }
45
45
  }
46
46
  }
47
- ), pe = (e, a) => q(me(e), a), be = (e, a) => q(fe(e), a), ve = ["disabled", "data-test"], ge = /* @__PURE__ */ E({
47
+ ), pe = (e, a) => j(fe(e), a), be = (e, a) => j(me(e), a), De = ["disabled", "data-test"], ve = /* @__PURE__ */ M({
48
48
  inheritAttrs: !1,
49
49
  __name: "AmDateFilterButton",
50
50
  props: {
@@ -58,34 +58,34 @@ const me = G(
58
58
  },
59
59
  emits: ["click"],
60
60
  setup(e) {
61
- const a = H();
62
- return (t, n) => (b(), w("button", {
61
+ const a = P();
62
+ return (t, r) => (D(), T("button", {
63
63
  type: "button",
64
- class: V([d(be)({ selected: t.selected, disabled: t.disabled, isCustom: t.isCustom }, d(a).class), { "am-date-filter-button--custom": t.isCustom }]),
64
+ class: x([i(be)({ selected: t.selected, disabled: t.disabled, isCustom: t.isCustom }, i(a).class), { "am-date-filter-button--custom": t.isCustom }]),
65
65
  disabled: t.disabled,
66
66
  "data-test": t.dataTest,
67
- onClick: n[0] || (n[0] = (u) => t.$emit("click", u))
67
+ onClick: r[0] || (r[0] = (u) => t.$emit("click", u))
68
68
  }, [
69
- t.icon ? (b(), T(ie, {
69
+ t.icon ? (D(), E(ie, {
70
70
  key: 0,
71
71
  icon: t.icon,
72
72
  size: "sm"
73
- }, null, 8, ["icon"])) : $("", !0),
74
- t.label ? (b(), T(ne, {
73
+ }, null, 8, ["icon"])) : R("", !0),
74
+ t.label ? (D(), E(ne, {
75
75
  key: 1,
76
76
  as: "span",
77
- class: V(t.hideLabel ? "am-date-filter-label--responsive" : "")
77
+ class: x(t.hideLabel ? "am-date-filter-label--responsive" : "")
78
78
  }, {
79
- default: I(() => [
79
+ default: U(() => [
80
80
  te(ae(t.label), 1)
81
81
  ]),
82
82
  _: 1
83
- }, 8, ["class"])) : $("", !0)
84
- ], 10, ve));
83
+ }, 8, ["class"])) : R("", !0)
84
+ ], 10, De));
85
85
  }
86
- }), J = /* @__PURE__ */ de(ge, [["__scopeId", "data-v-e2a79444"]]), De = /* @__PURE__ */ E({
86
+ }), G = /* @__PURE__ */ de(ve, [["__scopeId", "data-v-e2a79444"]]), ge = /* @__PURE__ */ M({
87
87
  __name: "AmDateFilterPicker",
88
- props: /* @__PURE__ */ j({
88
+ props: /* @__PURE__ */ K({
89
89
  selected: { type: Boolean, default: !1 },
90
90
  disabled: { type: Boolean, default: !1 },
91
91
  minDate: {},
@@ -94,39 +94,39 @@ const me = G(
94
94
  date: {},
95
95
  dateModifiers: {}
96
96
  }),
97
- emits: /* @__PURE__ */ j(["click"], ["update:date"]),
97
+ emits: /* @__PURE__ */ K(["click"], ["update:date"]),
98
98
  setup(e, { expose: a, emit: t }) {
99
- const n = le(e, "date"), u = t, c = k(), p = (s) => {
100
- var i;
101
- (i = c.value) == null || i.toggle(s), u("click", s);
99
+ const r = le(e, "date"), u = t, c = _(), b = (n) => {
100
+ var d;
101
+ (d = c.value) == null || d.toggle(n), u("click", n);
102
102
  };
103
- return a({ popover: c }), (s, i) => (b(), w(Y, null, [
104
- B(J, {
105
- selected: s.selected,
106
- disabled: s.disabled,
103
+ return a({ popover: c }), (n, d) => (D(), T($, null, [
104
+ S(G, {
105
+ selected: n.selected,
106
+ disabled: n.disabled,
107
107
  "is-custom": "",
108
108
  "data-test": "amdatefilter-toolbar-custom",
109
109
  icon: "calendar_today",
110
110
  label: "Customizar",
111
111
  "hide-label": "",
112
- onClick: p
112
+ onClick: b
113
113
  }, null, 8, ["selected", "disabled"]),
114
- B(d(ue), {
114
+ S(i(ue), {
115
115
  "data-test": "amdatefilter-popover",
116
116
  ref_key: "popover",
117
117
  ref: c,
118
118
  "pt:content": "!p-0"
119
119
  }, {
120
- default: I(() => [
121
- B(d(ce), {
120
+ default: U(() => [
121
+ S(i(ce), {
122
122
  "data-test": "amdatefilter-datepicker",
123
- modelValue: n.value,
124
- "onUpdate:modelValue": i[0] || (i[0] = (m) => n.value = m),
123
+ modelValue: r.value,
124
+ "onUpdate:modelValue": d[0] || (d[0] = (v) => r.value = v),
125
125
  selectionMode: "range",
126
126
  inline: "",
127
127
  dateFormat: "yyyy-mm-dd",
128
- minDate: s.minDate,
129
- maxDate: s.maxDate,
128
+ minDate: n.minDate,
129
+ maxDate: n.maxDate,
130
130
  "pt:dayCell": "!p-0",
131
131
  "pt:tableHeaderCell": "!p-0",
132
132
  "pt:panel": "!p-0 !border-none",
@@ -137,60 +137,57 @@ const me = G(
137
137
  }, 512)
138
138
  ], 64));
139
139
  }
140
- }), v = "America/Sao_Paulo", y = (e = v) => {
140
+ }), p = "America/Sao_Paulo", ye = (e = p) => {
141
141
  const a = /* @__PURE__ */ new Date(), t = new Date(a.toLocaleString("en-US", { timeZone: e }));
142
142
  return new Date(t.getFullYear(), t.getMonth(), t.getDate());
143
- }, C = (e, a = v) => {
144
- const t = y(a);
143
+ }, O = (e, a = p) => {
144
+ const t = ye(a);
145
145
  return t.setDate(t.getDate() + e), t;
146
- }, R = (e, a = v) => e.toLocaleDateString("en-CA", { timeZone: a }), x = (e) => {
147
- const a = e.split("T")[0], [t, n, u] = a.split("-").map(Number);
148
- return new Date(t, n - 1, u);
149
- }, z = (e, a) => e.getFullYear() === a.getFullYear() && e.getMonth() === a.getMonth() && e.getDate() === a.getDate(), ye = (e, a = v) => {
146
+ }, z = (e, a = p) => e.toLocaleDateString("en-CA", { timeZone: a }), k = (e) => {
147
+ const a = e.split("T")[0], [t, r, u] = a.split("-").map(Number);
148
+ return new Date(t, r - 1, u);
149
+ }, L = (e, a) => e.getFullYear() === a.getFullYear() && e.getMonth() === a.getMonth() && e.getDate() === a.getDate(), he = (e, a = p) => {
150
150
  if (!Array.isArray(e) || e.length !== 2)
151
151
  throw new Error("Range de datas inválido");
152
- const [t, n] = e;
153
- if (!t || !n)
152
+ const [t, r] = e;
153
+ if (!t || !r)
154
154
  throw new Error("Datas não podem ser nulas");
155
- return [R(t, a), R(n, a)];
156
- }, he = (e = v) => ({
157
- Hoje: () => [y(e), y(e)],
158
- Ontem: () => [C(-1, e), C(-1, e)],
159
- "7D": () => [C(-6, e), y(e)],
160
- "14D": () => [C(-13, e), y(e)],
161
- "30D": () => [C(-29, e), y(e)],
162
- Customizar: () => null
163
- }), Ce = {
164
- 0: "Hoje",
165
- 1: "Ontem",
166
- 7: "7D",
167
- 14: "14D",
168
- 30: "30D"
169
- }, U = (e, a = v) => {
155
+ return [z(t, a), z(r, a)];
156
+ }, H = (e, a = p) => [O(e[0], a), O(e[1], a)], h = {
157
+ TODAY: { label: "Hoje", offsets: [0, 0], defaultKey: 0 },
158
+ YESTERDAY: { label: "Ontem", offsets: [-1, -1], defaultKey: 1 },
159
+ LAST_7D: { label: "7D", offsets: [-6, 0], defaultKey: 7 },
160
+ LAST_14D: { label: "14D", offsets: [-13, 0], defaultKey: 14 },
161
+ LAST_30D: { label: "30D", offsets: [-29, 0], defaultKey: 30 },
162
+ LAST_60D: { label: "60D", offsets: [-59, 0], defaultKey: 60 },
163
+ LAST_90D: { label: "90D", offsets: [-89, 0], defaultKey: 90 },
164
+ LAST_365D: { label: "365D", offsets: [-364, 0], defaultKey: 365 }
165
+ }, _e = [
166
+ h.TODAY,
167
+ h.YESTERDAY,
168
+ h.LAST_7D,
169
+ h.LAST_14D,
170
+ h.LAST_30D
171
+ ], Y = (e, a = p) => {
170
172
  if (!(!e || e.length === 0))
171
- return e.map((t) => t instanceof Date ? R(t, a) : String(t));
172
- }, ke = (e, a, t) => {
173
+ return e.map((t) => t instanceof Date ? z(t, a) : String(t));
174
+ }, Ce = (e, a, t = p) => {
173
175
  if (!e || e.length !== 2)
174
176
  return "Customizar";
175
177
  try {
176
- const [n, u] = e, c = x(n), p = x(u);
177
- if (isNaN(c.getTime()) || isNaN(p.getTime()))
178
+ const [r, u] = e, c = k(r), b = k(u);
179
+ if (isNaN(c.getTime()) || isNaN(b.getTime()))
178
180
  return "Customizar";
179
- for (const s of a) {
180
- if (s === "Customizar") continue;
181
- const i = t[s];
182
- if (!i) continue;
183
- const m = i();
184
- if (!m || !Array.isArray(m) || m.length !== 2) continue;
185
- const [g, A] = m;
186
- if (z(c, g) && z(p, A))
187
- return s;
181
+ for (const n of a) {
182
+ const [d, v] = H(n.offsets, t);
183
+ if (L(c, d) && L(b, v))
184
+ return n.label;
188
185
  }
189
186
  return "Customizar";
190
187
  } catch {
191
188
  return "Customizar";
192
189
  }
193
- }, F = "Customizar", Se = /* @__PURE__ */ E({
190
+ }, w = "Customizar", xe = /* @__PURE__ */ M({
194
191
  inheritAttrs: !1,
195
192
  __name: "AmDateFilter",
196
193
  props: {
@@ -198,107 +195,104 @@ const me = G(
198
195
  defaultSelected: {},
199
196
  minDate: {},
200
197
  maxDate: {},
201
- dateRangeConfigs: { default: () => ({}) },
198
+ dateRangeConfigs: { default: () => [] },
202
199
  disabled: { type: Boolean },
203
200
  card: { type: Boolean },
204
- timeZone: { default: v }
201
+ timeZone: { default: p }
205
202
  },
206
203
  emits: ["update:modelValue"],
207
204
  setup(e, { emit: a }) {
208
205
  const t = e, {
209
- defaultSelected: n,
206
+ defaultSelected: r,
210
207
  minDate: u,
211
208
  maxDate: c,
212
- modelValue: p,
213
- dateRangeConfigs: s,
214
- disabled: i,
215
- card: m,
209
+ modelValue: b,
210
+ dateRangeConfigs: n,
211
+ disabled: d,
212
+ card: v,
216
213
  timeZone: g
217
- } = oe(t), A = a, h = k(F), N = k(), f = k(null), _ = k(!1), K = H(), O = S(() => !s.value || Object.keys(s.value).length === 0 ? ["Hoje", "Ontem", "7D", "14D", "30D"] : Object.keys(s.value)), Q = S(
218
- () => O.value.map((l) => ({
219
- label: l,
220
- value: l,
221
- selected: h.value === l
214
+ } = oe(t), Z = a, y = _(w), V = _(), f = _(null), C = _(!1), q = P(), A = N(() => !n.value || n.value.length === 0 ? _e : n.value), J = N(
215
+ () => A.value.map((l) => ({
216
+ label: l.label,
217
+ value: l.label,
218
+ selected: y.value === l.label
222
219
  }))
223
- ), P = S(() => ({
224
- ...he(g.value),
225
- ...s.value
226
- })), M = (l) => {
227
- h.value = l;
228
- const r = P.value[l];
229
- if (r) {
230
- const o = r();
231
- o && (_.value = !0, f.value = o);
220
+ ), F = (l) => {
221
+ y.value = l;
222
+ const s = A.value.find((o) => o.label === l);
223
+ if (s) {
224
+ const o = H(s.offsets, g.value);
225
+ C.value = !0, f.value = o;
232
226
  }
233
- }, W = (l) => {
234
- if (_.value) return;
235
- const r = U(l, g.value), o = ke(
236
- r,
237
- O.value,
238
- P.value
227
+ }, Q = (l) => {
228
+ if (C.value) return;
229
+ const s = Y(l, g.value), o = Ce(
230
+ s,
231
+ A.value,
232
+ g.value
239
233
  );
240
- if (h.value !== o && (h.value = o), r && r.length === 2)
234
+ if (y.value !== o && (y.value = o), s && s.length === 2)
241
235
  try {
242
- const D = [
243
- x(r[0]),
244
- x(r[1])
236
+ const m = [
237
+ k(s[0]),
238
+ k(s[1])
245
239
  ];
246
- (!f.value || !z(f.value[0], D[0]) || !z(f.value[1], D[1])) && (f.value = D);
247
- } catch (D) {
248
- console.warn("Erro ao sincronizar datas do modelValue:", D);
240
+ (!f.value || !L(f.value[0], m[0]) || !L(f.value[1], m[1])) && (f.value = m);
241
+ } catch (m) {
242
+ console.warn("Erro ao sincronizar datas do modelValue:", m);
249
243
  }
250
- }, X = () => {
251
- M(F);
252
- }, Z = (l) => {
253
- M(l);
244
+ }, W = () => {
245
+ F(w);
246
+ }, X = (l) => {
247
+ F(l);
254
248
  }, ee = (l) => {
255
- const r = U(p.value, g.value);
256
- if (r && r.length === 2) return;
257
- const o = l !== void 0 ? Ce[l] : F;
258
- o && M(o);
249
+ const s = Y(b.value, g.value);
250
+ if (s && s.length === 2 || l === void 0) return;
251
+ const o = A.value.find((m) => m.defaultKey === l);
252
+ o && F(o.label);
259
253
  };
260
- return L(p, (l) => W(l), {
254
+ return B(b, (l) => Q(l), {
261
255
  immediate: !0,
262
256
  deep: !0
263
- }), L(
257
+ }), B(
264
258
  f,
265
259
  async (l) => {
266
- var r, o;
260
+ var s, o;
267
261
  if ((l == null ? void 0 : l.length) === 2 && l[0] && l[1])
268
262
  try {
269
- (o = (r = N.value) == null ? void 0 : r.popover) == null || o.hide(), A("update:modelValue", ye(l, g.value)), await re(), _.value = !1;
263
+ (o = (s = V.value) == null ? void 0 : s.popover) == null || o.hide(), Z("update:modelValue", he(l, g.value)), await se(), C.value = !1;
270
264
  } catch {
271
- _.value = !1;
265
+ C.value = !1;
272
266
  }
273
267
  },
274
268
  { deep: !0 }
275
- ), L(n, (l) => ee(l), { immediate: !0 }), (l, r) => (b(), w("div", {
269
+ ), B(r, (l) => ee(l), { immediate: !0 }), (l, s) => (D(), T("div", {
276
270
  role: "group",
277
271
  "aria-label": "Filtro de período",
278
- class: V(d(pe)({ card: d(m), disabled: d(i) }, d(K).class))
272
+ class: x(i(pe)({ card: i(v), disabled: i(d) }, i(q).class))
279
273
  }, [
280
- B(De, {
274
+ S(ge, {
281
275
  ref_key: "pickerRef",
282
- ref: N,
276
+ ref: V,
283
277
  date: f.value,
284
- "onUpdate:date": r[0] || (r[0] = (o) => f.value = o),
285
- selected: h.value === F,
286
- disabled: d(i),
287
- "min-date": d(u) || void 0,
288
- "max-date": d(c) || void 0,
289
- onClick: X
278
+ "onUpdate:date": s[0] || (s[0] = (o) => f.value = o),
279
+ selected: y.value === w,
280
+ disabled: i(d),
281
+ "min-date": i(u) || void 0,
282
+ "max-date": i(c) || void 0,
283
+ onClick: W
290
284
  }, null, 8, ["date", "selected", "disabled", "min-date", "max-date"]),
291
- (b(!0), w(Y, null, se(Q.value, (o) => (b(), T(J, {
285
+ (D(!0), T($, null, re(J.value, (o) => (D(), E(G, {
292
286
  key: o.value,
293
287
  selected: o.selected,
294
- disabled: d(i),
288
+ disabled: i(d),
295
289
  "data-test": `amdatefilter-toolbar-${o.value.toLowerCase()}`,
296
290
  label: o.label,
297
- onClick: (D) => Z(o.value)
291
+ onClick: (m) => X(o.value)
298
292
  }, null, 8, ["selected", "disabled", "data-test", "label", "onClick"]))), 128))
299
293
  ], 2));
300
294
  }
301
295
  });
302
296
  export {
303
- Se as default
297
+ xe as default
304
298
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@appmax_npm/ds-prime",
3
- "version": "1.0.0-alpha.177",
3
+ "version": "1.0.0-alpha.178",
4
4
  "description": "Design System da Appmax baseado no Primevue",
5
5
  "author": "Appmax",
6
6
  "exports": {