@wgalleti/primevue-components 0.23.0 → 0.26.0

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 (37) hide show
  1. package/dist/components/crud/WCrudSubview.vue.d.ts +11 -9
  2. package/dist/components/crud/WEditableTable.vue.d.ts +11 -8
  3. package/dist/components/form/WFormRenderer.vue.d.ts +5 -0
  4. package/dist/components/ui/WMapSelect.vue.d.ts +11 -1
  5. package/dist/components/ui/WTabNav.vue.d.ts +6 -3
  6. package/dist/{components-CTrZPRAb.js → components-B2qPV7fZ.js} +2002 -1937
  7. package/dist/components-B2qPV7fZ.js.map +1 -0
  8. package/dist/components-C20vwrj8.cjs +25 -0
  9. package/dist/components-C20vwrj8.cjs.map +1 -0
  10. package/dist/components.cjs +1 -1
  11. package/dist/components.js +1 -1
  12. package/dist/{composables-B-LVf35N.js → composables-D5lRsZJQ.js} +104 -142
  13. package/dist/composables-D5lRsZJQ.js.map +1 -0
  14. package/dist/composables-DuOYSFox.cjs +2 -0
  15. package/dist/composables-DuOYSFox.cjs.map +1 -0
  16. package/dist/composables.cjs +1 -1
  17. package/dist/composables.js +3 -3
  18. package/dist/index.cjs +1 -1
  19. package/dist/index.js +4 -4
  20. package/dist/primevue-components.css +1 -1
  21. package/dist/routeTabs-BnVpnSeJ.cjs.map +1 -1
  22. package/dist/routeTabs-D6m8PuP6.js.map +1 -1
  23. package/dist/types/routeTabs.d.ts +7 -0
  24. package/dist/{useFormKeyboardNav-Brgrjxu-.js → useFormKeyboardNav-DGbCVk4F.js} +64 -21
  25. package/dist/useFormKeyboardNav-DGbCVk4F.js.map +1 -0
  26. package/dist/{useFormKeyboardNav-HoSmQwuv.cjs → useFormKeyboardNav-pw3m7oX4.cjs} +3 -3
  27. package/dist/useFormKeyboardNav-pw3m7oX4.cjs.map +1 -0
  28. package/dist/utils/formRecord.d.ts +6 -1
  29. package/package.json +1 -1
  30. package/dist/components-BmYmMVLq.cjs +0 -25
  31. package/dist/components-BmYmMVLq.cjs.map +0 -1
  32. package/dist/components-CTrZPRAb.js.map +0 -1
  33. package/dist/composables-B-LVf35N.js.map +0 -1
  34. package/dist/composables-BqRASiBc.cjs +0 -2
  35. package/dist/composables-BqRASiBc.cjs.map +0 -1
  36. package/dist/useFormKeyboardNav-Brgrjxu-.js.map +0 -1
  37. package/dist/useFormKeyboardNav-HoSmQwuv.cjs.map +0 -1
@@ -336,8 +336,51 @@ function M() {
336
336
  };
337
337
  }
338
338
  //#endregion
339
+ //#region src/utils/formRecord.ts
340
+ function N(e) {
341
+ let t = {};
342
+ for (let n of e) t[n.field] = n.defaultValue === void 0 ? null : typeof n.defaultValue == "function" ? n.defaultValue() : n.defaultValue;
343
+ return t;
344
+ }
345
+ function P(e, t, n) {
346
+ let r = {};
347
+ for (let i of t) {
348
+ let t = e[i.field] === void 0 ? null : e[i.field];
349
+ t && (i.type === "date" || i.type === "datetime") && typeof t == "string" && (t = g(t)), n[i.field] = t, r[i.field] = t;
350
+ }
351
+ return r;
352
+ }
353
+ function F(e, t) {
354
+ let n = { ...e };
355
+ for (let e of t) {
356
+ let t = n[e.field];
357
+ if (e.type === "date" && t instanceof Date ? n[e.field] = _(t) : e.type === "datetime" && t instanceof Date && (n[e.field] = v(t)), e.type === "fk" && typeof t == "object" && t) {
358
+ let r = e.optionValue || "id";
359
+ n[e.field] = t[r] ?? t;
360
+ }
361
+ (e.type === "mask" || e.type === "cpf_cnpj") && typeof t == "string" && (n[e.field] = x(t));
362
+ }
363
+ return n;
364
+ }
365
+ function I(e, t, n = !1) {
366
+ return e.visible === void 0 || e.visible === !0 ? !0 : typeof e.visible == "function" ? e.visible(t, n) : e.visible;
367
+ }
368
+ function L(e, t, n = !1) {
369
+ for (let r of e) if (I(r, t, n)) {
370
+ if (r.validate) {
371
+ let e = r.validate(t[r.field]);
372
+ if (e) return e;
373
+ }
374
+ if (r.required) {
375
+ let e = t[r.field];
376
+ if (e == null || e === "") return `${r.label} é obrigatório`;
377
+ }
378
+ }
379
+ return null;
380
+ }
381
+ //#endregion
339
382
  //#region src/composables/useAppToast.ts
340
- function N() {
383
+ function R() {
341
384
  let e = a();
342
385
  function t(t, n = "Sucesso") {
343
386
  e.add({
@@ -380,7 +423,7 @@ function N() {
380
423
  }
381
424
  //#endregion
382
425
  //#region src/composables/useAppConfirm.ts
383
- function P() {
426
+ function z() {
384
427
  let e = o(), n = t(), r = () => n?.hostEl.value ?? "body";
385
428
  function i(t, n = "Deseja realmente excluir este registro?") {
386
429
  e.require({
@@ -420,10 +463,10 @@ function P() {
420
463
  }
421
464
  //#endregion
422
465
  //#region src/composables/useApiError.ts
423
- function F(e) {
466
+ function B(e) {
424
467
  return e.replace(/_/g, " ").replace(/^\w/, (e) => e.toUpperCase());
425
468
  }
426
- function I(e) {
469
+ function V(e) {
427
470
  if (typeof e == "string") return e;
428
471
  if (Array.isArray(e)) {
429
472
  let t = e.filter((e) => typeof e == "string");
@@ -435,7 +478,7 @@ function I(e) {
435
478
  let n = [];
436
479
  for (let [e, r] of Object.entries(t)) {
437
480
  if (e === "non_field_errors") continue;
438
- let t = F(e);
481
+ let t = B(e);
439
482
  if (Array.isArray(r)) {
440
483
  let e = r.filter((e) => typeof e == "string");
441
484
  e.length > 0 && n.push(`${t}: ${e.join(" ")}`);
@@ -445,25 +488,25 @@ function I(e) {
445
488
  }
446
489
  return null;
447
490
  }
448
- function L(e, t = "Erro inesperado") {
491
+ function H(e, t = "Erro inesperado") {
449
492
  if (!e || typeof e != "object") return t;
450
493
  let n = e, r = n.response?.data;
451
- return !r || typeof r != "object" ? n.message || t : I(r.detail ?? r) || t;
494
+ return !r || typeof r != "object" ? n.message || t : V(r.detail ?? r) || t;
452
495
  }
453
- function R() {
454
- return { extractApiError: L };
496
+ function U() {
497
+ return { extractApiError: H };
455
498
  }
456
499
  //#endregion
457
500
  //#region src/composables/useDateInput.ts
458
501
  i.extend(h.default);
459
- var z = "DD/MM/YYYY", B = "DD/MM/YYYY HH:mm", V = "YYYY-MM-DD", H = "YYYY-MM-DDTHH:mm:ss";
460
- function U(e = {}) {
461
- let t = () => e.showTime?.() ?? !1, n = () => t() ? B : z, r = () => t() ? "##/##/#### ##:##" : "##/##/####", a = () => t() ? "dd/mm/aaaa hh:mm" : "dd/mm/aaaa";
502
+ var W = "DD/MM/YYYY", G = "DD/MM/YYYY HH:mm", K = "YYYY-MM-DD", q = "YYYY-MM-DDTHH:mm:ss";
503
+ function J(e = {}) {
504
+ let t = () => e.showTime?.() ?? !1, n = () => t() ? G : W, r = () => t() ? "##/##/#### ##:##" : "##/##/####", a = () => t() ? "dd/mm/aaaa hh:mm" : "dd/mm/aaaa";
462
505
  function o(e) {
463
506
  if (e == null || e === "") return null;
464
507
  if (e instanceof Date) return isNaN(e.getTime()) ? null : e;
465
508
  if (typeof e == "string") {
466
- let t = i(e, V, !0);
509
+ let t = i(e, K, !0);
467
510
  if (t.isValid()) return t.toDate();
468
511
  let n = i(e);
469
512
  return n.isValid() ? n.toDate() : null;
@@ -471,7 +514,7 @@ function U(e = {}) {
471
514
  return null;
472
515
  }
473
516
  function s(n) {
474
- return n ? (e.valueFormat?.() ?? "iso") === "date" ? n : i(n).format(t() ? H : V) : null;
517
+ return n ? (e.valueFormat?.() ?? "iso") === "date" ? n : i(n).format(t() ? q : K) : null;
475
518
  }
476
519
  function c(e) {
477
520
  return e ? i(e).format(n()) : "";
@@ -497,14 +540,14 @@ function U(e = {}) {
497
540
  }
498
541
  //#endregion
499
542
  //#region src/composables/useFormKeyboardNav.ts
500
- var W = [
543
+ var Y = [
501
544
  "input:not([type=\"hidden\"]):not([disabled])",
502
545
  "textarea:not([disabled])",
503
546
  "select:not([disabled])",
504
547
  "button:not([disabled])",
505
548
  "[tabindex]:not([tabindex=\"-1\"])",
506
549
  "[contenteditable=\"true\"]"
507
- ].join(", "), G = [
550
+ ].join(", "), X = [
508
551
  ".p-select-overlay",
509
552
  ".p-autocomplete-overlay",
510
553
  ".p-multiselect-overlay",
@@ -512,11 +555,11 @@ var W = [
512
555
  ".p-cascadeselect-overlay",
513
556
  ".p-treeselect-overlay"
514
557
  ].join(", ");
515
- function K(e, t = {}) {
558
+ function Z(e, t = {}) {
516
559
  let n = () => !t.enabled || t.enabled();
517
560
  function i() {
518
561
  let t = e.value;
519
- return t ? Array.from(t.querySelectorAll(W)).filter((e) => e.getClientRects().length > 0 && !e.hasAttribute("data-kbd-skip")) : [];
562
+ return t ? Array.from(t.querySelectorAll(Y)).filter((e) => e.getClientRects().length > 0 && !e.hasAttribute("data-kbd-skip")) : [];
520
563
  }
521
564
  function a() {
522
565
  n() && r(() => {
@@ -532,7 +575,7 @@ function K(e, t = {}) {
532
575
  function o(e) {
533
576
  if (!n() || e.key !== "Enter" || e.isComposing) return;
534
577
  let r = e.target;
535
- if (r.tagName === "TEXTAREA" || r.tagName === "BUTTON" || r.getAttribute("aria-expanded") === "true" || document.querySelector(G)) return;
578
+ if (r.tagName === "TEXTAREA" || r.tagName === "BUTTON" || r.getAttribute("aria-expanded") === "true" || document.querySelector(X)) return;
536
579
  e.preventDefault();
537
580
  let a = i(), o = a.indexOf(r);
538
581
  if (o === -1) return;
@@ -545,6 +588,6 @@ function K(e, t = {}) {
545
588
  };
546
589
  }
547
590
  //#endregion
548
- export { P as a, x as c, v as d, R as i, g as l, U as n, N as o, L as r, M as s, K as t, _ as u };
591
+ export { z as a, N as c, L as d, M as f, v as h, U as i, I as l, _ as m, J as n, R as o, g as p, H as r, F as s, Z as t, P as u };
549
592
 
550
- //# sourceMappingURL=useFormKeyboardNav-Brgrjxu-.js.map
593
+ //# sourceMappingURL=useFormKeyboardNav-DGbCVk4F.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useFormKeyboardNav-DGbCVk4F.js","names":[],"sources":["../node_modules/dayjs/plugin/customParseFormat.js","../src/utils/dates.ts","../src/utils/masks.ts","../src/composables/useFormatters.ts","../src/utils/formRecord.ts","../src/composables/useAppToast.ts","../src/composables/useAppConfirm.ts","../src/composables/useApiError.ts","../src/composables/useDateInput.ts","../src/composables/useFormKeyboardNav.ts"],"sourcesContent":["!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_customParseFormat=t()}(this,(function(){\"use strict\";var e={LTS:\"h:mm:ss A\",LT:\"h:mm A\",L:\"MM/DD/YYYY\",LL:\"MMMM D, YYYY\",LLL:\"MMMM D, YYYY h:mm A\",LLLL:\"dddd, MMMM D, YYYY h:mm A\"},t=/(\\[[^[]*\\])|([-_:/.,()\\s]+)|(A|a|Q|YYYY|YY?|ww?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,n=/\\d/,r=/\\d\\d/,i=/\\d\\d?/,o=/\\d*[^-_:/,()\\s\\d]+/,s={},a=function(e){return(e=+e)+(e>68?1900:2e3)};var f=function(e){return function(t){this[e]=+t}},h=[/[+-]\\d\\d:?(\\d\\d)?|Z/,function(e){(this.zone||(this.zone={})).offset=function(e){if(!e)return 0;if(\"Z\"===e)return 0;var t=e.match(/([+-]|\\d\\d)/g),n=60*t[1]+(+t[2]||0);return 0===n?0:\"+\"===t[0]?-n:n}(e)}],u=function(e){var t=s[e];return t&&(t.indexOf?t:t.s.concat(t.f))},d=function(e,t){var n,r=s.meridiem;if(r){for(var i=1;i<=24;i+=1)if(e.indexOf(r(i,0,t))>-1){n=i>12;break}}else n=e===(t?\"pm\":\"PM\");return n},c={A:[o,function(e){this.afternoon=d(e,!1)}],a:[o,function(e){this.afternoon=d(e,!0)}],Q:[n,function(e){this.month=3*(e-1)+1}],S:[n,function(e){this.milliseconds=100*+e}],SS:[r,function(e){this.milliseconds=10*+e}],SSS:[/\\d{3}/,function(e){this.milliseconds=+e}],s:[i,f(\"seconds\")],ss:[i,f(\"seconds\")],m:[i,f(\"minutes\")],mm:[i,f(\"minutes\")],H:[i,f(\"hours\")],h:[i,f(\"hours\")],HH:[i,f(\"hours\")],hh:[i,f(\"hours\")],D:[i,f(\"day\")],DD:[r,f(\"day\")],Do:[o,function(e){var t=s.ordinal,n=e.match(/\\d+/);if(this.day=n[0],t)for(var r=1;r<=31;r+=1)t(r).replace(/\\[|\\]/g,\"\")===e&&(this.day=r)}],w:[i,f(\"week\")],ww:[r,f(\"week\")],M:[i,f(\"month\")],MM:[r,f(\"month\")],MMM:[o,function(e){var t=u(\"months\"),n=(u(\"monthsShort\")||t.map((function(e){return e.slice(0,3)}))).indexOf(e)+1;if(n<1)throw new Error;this.month=n%12||n}],MMMM:[o,function(e){var t=u(\"months\").indexOf(e)+1;if(t<1)throw new Error;this.month=t%12||t}],Y:[/[+-]?\\d+/,f(\"year\")],YY:[r,function(e){this.year=a(e)}],YYYY:[/\\d{4}/,f(\"year\")],Z:h,ZZ:h};function l(n){var r,i;r=n,i=s&&s.formats;for(var o=(n=r.replace(/(\\[[^\\]]+])|(LTS?|l{1,4}|L{1,4})/g,(function(t,n,r){var o=r&&r.toUpperCase();return n||i[r]||e[r]||i[o].replace(/(\\[[^\\]]+])|(MMMM|MM|DD|dddd)/g,(function(e,t,n){return t||n.slice(1)}))}))).match(t),a=o.length,f=0;f<a;f+=1){var h=o[f],u=c[h],d=u&&u[0],l=u&&u[1];o[f]=l?{regex:d,parser:l}:h.replace(/^\\[|\\]$/g,\"\")}return function(e){for(var t={},n=0,r=0;n<a;n+=1){var i=o[n];if(\"string\"==typeof i)r+=i.length;else{var s=i.regex,f=i.parser,h=e.slice(r),u=s.exec(h)[0];f.call(t,u),e=e.replace(u,\"\")}}return function(e){var t=e.afternoon;if(void 0!==t){var n=e.hours;t?n<12&&(e.hours+=12):12===n&&(e.hours=0),delete e.afternoon}}(t),t}}return function(e,t,n){n.p.customParseFormat=!0,e&&e.parseTwoDigitYear&&(a=e.parseTwoDigitYear);var r=t.prototype,i=r.parse;r.parse=function(e){var t=e.date,r=e.utc,o=e.args;this.$u=r;var a=o[1];if(\"string\"==typeof a){var f=!0===o[2],h=!0===o[3],u=f||h,d=o[2];h&&(d=o[2]),s=this.$locale(),!f&&d&&(s=n.Ls[d]),this.$d=function(e,t,n,r){try{if([\"x\",\"X\"].indexOf(t)>-1)return new Date((\"X\"===t?1e3:1)*e);var i=l(t)(e),o=i.year,s=i.month,a=i.day,f=i.hours,h=i.minutes,u=i.seconds,d=i.milliseconds,c=i.zone,m=i.week,M=new Date,Y=a||(o||s?1:M.getDate()),p=o||M.getFullYear(),v=0;o&&!s||(v=s>0?s-1:M.getMonth());var D,w=f||0,g=h||0,y=u||0,L=d||0;return c?new Date(Date.UTC(p,v,Y,w,g,y,L+60*c.offset*1e3)):n?new Date(Date.UTC(p,v,Y,w,g,y,L)):(D=new Date(p,v,Y,w,g,y,L),m&&(D=r(D).week(m).toDate()),D)}catch(e){return new Date(\"\")}}(t,a,r,n),this.init(),d&&!0!==d&&(this.$L=this.locale(d).$L),u&&t!=this.format(a)&&(this.$d=new Date(\"\")),s={}}else if(a instanceof Array)for(var c=a.length,m=1;m<=c;m+=1){o[1]=a[m-1];var M=n.apply(this,o);if(M.isValid()){this.$d=M.$d,this.$L=M.$L,this.init();break}m===c&&(this.$d=new Date(\"\"))}else i.call(this,e)}}}));","import dayjs from 'dayjs'\nimport customParseFormat from 'dayjs/plugin/customParseFormat'\n\ndayjs.extend(customParseFormat)\n\nexport function parseDate(value: string | Date | null | undefined): Date | null {\n if (!value) return null\n if (value instanceof Date) return value\n const d = dayjs(value, 'YYYY-MM-DD', true)\n return d.isValid() ? d.toDate() : dayjs(value).toDate()\n}\n\nexport function toDateString(value: Date | string | null | undefined): string | null {\n if (!value) return null\n if (typeof value === 'string') return value\n return dayjs(value).format('YYYY-MM-DD')\n}\n\nexport function toDateTimeString(value: Date | string | null | undefined): string | null {\n if (!value) return null\n if (typeof value === 'string') return value\n return dayjs(value).toISOString()\n}\n\nexport function formatDateValue(\n value: string | Date | null | undefined,\n format = 'DD/MM/YYYY',\n): string {\n if (!value) return '—'\n return dayjs(value).format(format)\n}\n\nexport function formatDateTimeValue(value: string | Date | null | undefined): string {\n if (!value) return '—'\n return dayjs(value).format('DD/MM/YYYY HH:mm')\n}\n","export function stripMask(value: string): string {\n return value.replace(/\\D/g, '')\n}\n\nexport function formatCpf(value: string | null | undefined): string {\n if (!value) return '—'\n const digits = stripMask(value)\n if (digits.length !== 11) return value\n return digits.replace(/^(\\d{3})(\\d{3})(\\d{3})(\\d{2})$/, '$1.$2.$3-$4')\n}\n\nexport function formatCnpj(value: string | null | undefined): string {\n if (!value) return '—'\n const digits = stripMask(value)\n if (digits.length !== 14) return value\n return digits.replace(/^(\\d{2})(\\d{3})(\\d{3})(\\d{4})(\\d{2})$/, '$1.$2.$3/$4-$5')\n}\n\nexport function formatCpfCnpj(value: string | null | undefined): string {\n if (!value) return '—'\n const digits = stripMask(value)\n if (digits.length === 11) return formatCpf(value)\n if (digits.length === 14) return formatCnpj(value)\n return value\n}\n\nexport function formatTelefone(value: string | null | undefined): string {\n if (!value) return '—'\n const digits = stripMask(value)\n if (digits.length === 11) return digits.replace(/^(\\d{2})(\\d{5})(\\d{4})$/, '($1) $2-$3')\n if (digits.length === 10) return digits.replace(/^(\\d{2})(\\d{4})(\\d{4})$/, '($1) $2-$3')\n return value\n}\n\nexport function validateCpf(value: string | null | undefined): string | null {\n if (!value) return null\n const cpf = stripMask(value)\n if (cpf.length !== 11) return 'CPF deve ter 11 dígitos.'\n if (/^(\\d)\\1{10}$/.test(cpf)) return 'CPF inválido.'\n let soma = 0\n for (let i = 0; i < 9; i++) soma += parseInt(cpf[i]) * (10 - i)\n let resto = soma % 11\n const d1 = resto < 2 ? 0 : 11 - resto\n if (parseInt(cpf[9]) !== d1) return 'CPF inválido.'\n soma = 0\n for (let i = 0; i < 10; i++) soma += parseInt(cpf[i]) * (11 - i)\n resto = soma % 11\n const d2 = resto < 2 ? 0 : 11 - resto\n if (parseInt(cpf[10]) !== d2) return 'CPF inválido.'\n return null\n}\n\nexport function validateCnpj(value: string | null | undefined): string | null {\n if (!value) return null\n const cnpj = stripMask(value)\n if (cnpj.length !== 14) return 'CNPJ deve ter 14 dígitos.'\n if (/^(\\d)\\1{13}$/.test(cnpj)) return 'CNPJ inválido.'\n const pesos1 = [5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2]\n let soma = 0\n for (let i = 0; i < 12; i++) soma += parseInt(cnpj[i]) * pesos1[i]\n let resto = soma % 11\n const d1 = resto < 2 ? 0 : 11 - resto\n if (parseInt(cnpj[12]) !== d1) return 'CNPJ inválido.'\n const pesos2 = [6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2]\n soma = 0\n for (let i = 0; i < 13; i++) soma += parseInt(cnpj[i]) * pesos2[i]\n resto = soma % 11\n const d2 = resto < 2 ? 0 : 11 - resto\n if (parseInt(cnpj[13]) !== d2) return 'CNPJ inválido.'\n return null\n}\n\nexport function validateCpfCnpj(value: string | null | undefined): string | null {\n if (!value) return null\n const digits = stripMask(value)\n if (digits.length === 11) return validateCpf(value)\n if (digits.length === 14) return validateCnpj(value)\n return 'CPF deve ter 11 dígitos ou CNPJ deve ter 14 dígitos.'\n}\n","import { inject } from 'vue'\nimport { W_CONFIG_KEY } from '@/types/plugin'\nimport type { WPluginConfig } from '@/types/plugin'\nimport {\n formatDateValue,\n formatDateTimeValue,\n parseDate,\n toDateString,\n toDateTimeString,\n} from '@/utils/dates'\nimport {\n formatCpf,\n formatCnpj,\n formatCpfCnpj,\n formatTelefone,\n validateCpf,\n validateCnpj,\n validateCpfCnpj,\n} from '@/utils/masks'\n\nconst numberFormatters = new Map<string, Intl.NumberFormat>()\n\nfunction getNumberFormatter(locale: string, decimals: number): Intl.NumberFormat {\n const key = `${locale}-${decimals}`\n let fmt = numberFormatters.get(key)\n if (!fmt) {\n fmt = new Intl.NumberFormat(locale, {\n minimumFractionDigits: decimals,\n maximumFractionDigits: decimals,\n })\n numberFormatters.set(key, fmt)\n }\n return fmt\n}\n\nfunction getCurrencyFormatter(locale: string, currency: string): Intl.NumberFormat {\n const key = `${locale}-${currency}`\n let fmt = numberFormatters.get(key)\n if (!fmt) {\n fmt = new Intl.NumberFormat(locale, {\n style: 'currency',\n currency,\n })\n numberFormatters.set(key, fmt)\n }\n return fmt\n}\n\nexport function useFormatters() {\n const config = inject<WPluginConfig>(W_CONFIG_KEY, {\n defaultPageSize: 20,\n dateFormat: 'DD/MM/YYYY',\n dateTimeFormat: 'DD/MM/YYYY HH:mm',\n locale: 'pt-BR',\n currency: 'BRL',\n } as WPluginConfig)\n\n const locale = config?.locale ?? 'pt-BR'\n const currencyCode = config?.currency ?? 'BRL'\n\n function formatCurrency(value: number | null | undefined): string {\n if (value == null) return '—'\n return getCurrencyFormatter(locale, currencyCode).format(value)\n }\n\n function formatNumber(value: number | null | undefined, decimals = 2): string {\n if (value == null) return '—'\n return getNumberFormatter(locale, decimals).format(value)\n }\n\n function formatDate(value: string | Date | null | undefined, format?: string): string {\n return formatDateValue(value, format ?? config?.dateFormat ?? 'DD/MM/YYYY')\n }\n\n function formatDateTime(value: string | Date | null | undefined): string {\n return formatDateTimeValue(value)\n }\n\n function formatPercent(value: number | null | undefined): string {\n if (value == null) return '—'\n return `${getNumberFormatter(locale, 2).format(value)}%`\n }\n\n return {\n formatCurrency,\n formatNumber,\n formatDate,\n formatDateTime,\n formatPercent,\n formatCpf,\n formatCnpj,\n formatCpfCnpj,\n formatTelefone,\n validateCpf,\n validateCnpj,\n validateCpfCnpj,\n parseDate,\n toDateString,\n toDateTimeString,\n }\n}\n","/**\n * Regras de formulário que independem de onde o registro é gravado.\n *\n * Nasceram dentro do `useCrudManager` (que grava numa API) e saíram para cá quando o\n * `useSubviewCrud` passou a precisar das mesmas: um form é um form, o destino do\n * payload é que muda. Manter uma cópia em cada manager faria as duas divergirem no\n * primeiro `FieldType` novo.\n */\nimport type { FieldDef } from '@/types/field'\nimport { parseDate, toDateString, toDateTimeString } from './dates'\nimport { stripMask } from './masks'\n\n/** Valor inicial de cada campo: `defaultValue` (avaliado, se função) ou `null`. */\nexport function getFieldDefaults(fields: FieldDef[]): Record<string, unknown> {\n const defaults: Record<string, unknown> = {}\n for (const f of fields) {\n defaults[f.field] =\n f.defaultValue !== undefined\n ? typeof f.defaultValue === 'function'\n ? (f.defaultValue as () => unknown)()\n : f.defaultValue\n : null\n }\n return defaults\n}\n\n/**\n * Lê um registro existente para dentro do form.\n *\n * Data vem do servidor como string e o `WDatePicker` trabalha com `Date` — por isso a\n * volta por `parseDate`. Devolve o snapshot dos valores carregados, que o chamador usa\n * como base do diff quando quiser mandar só o que mudou.\n */\nexport function loadItemIntoRecord(\n item: Record<string, unknown>,\n fields: FieldDef[],\n target: Record<string, unknown>,\n): Record<string, unknown> {\n const snapshot: Record<string, unknown> = {}\n for (const f of fields) {\n let value = item[f.field] !== undefined ? item[f.field] : null\n if (value && (f.type === 'date' || f.type === 'datetime') && typeof value === 'string') {\n value = parseDate(value)\n }\n target[f.field] = value\n snapshot[f.field] = value\n }\n return snapshot\n}\n\n/**\n * Converte o form no registro que vai ser gravado: data vira string, FK vira id, campo\n * mascarado perde a máscara. Devolve objeto novo — o form não é tocado.\n */\nexport function convertFormRecord(\n record: Record<string, unknown>,\n fields: FieldDef[],\n): Record<string, unknown> {\n const out: Record<string, unknown> = { ...record }\n for (const f of fields) {\n const val = out[f.field]\n\n // Datas\n if (f.type === 'date' && val instanceof Date) {\n out[f.field] = toDateString(val)\n } else if (f.type === 'datetime' && val instanceof Date) {\n out[f.field] = toDateTimeString(val)\n }\n\n // FK — extrair o ID do objeto selecionado\n if (f.type === 'fk' && val !== null && typeof val === 'object') {\n const key = f.optionValue || 'id'\n out[f.field] = (val as Record<string, unknown>)[key] ?? val\n }\n\n // Máscaras — strip para gravar só dígitos\n if ((f.type === 'mask' || f.type === 'cpf_cnpj') && typeof val === 'string') {\n out[f.field] = stripMask(val)\n }\n }\n return out\n}\n\n/** Resolve `visible` do campo (boolean ou função) para o estado atual do form. */\nexport function isFieldVisible(\n field: FieldDef,\n formData: Record<string, unknown>,\n isEditing = false,\n): boolean {\n if (field.visible === undefined || field.visible === true) return true\n if (typeof field.visible === 'function') return field.visible(formData, isEditing)\n return field.visible\n}\n\n/**\n * Primeira mensagem de erro do form, ou `null` se está tudo certo.\n *\n * Campo oculto (`visible` falso para o form atual) não é validado: o usuário não\n * tem como preenchê-lo, então `required`/`validate` dele não podem barrar o save.\n *\n * A ordem importa: o `validate` do campo vence a obrigatoriedade, para a mensagem\n * específica (\"CNPJ inválido\") aparecer no lugar da genérica.\n */\nexport function validateFormRecord(\n fields: FieldDef[],\n formData: Record<string, unknown>,\n isEditing = false,\n): string | null {\n for (const f of fields) {\n if (!isFieldVisible(f, formData, isEditing)) continue\n if (f.validate) {\n const result = f.validate(formData[f.field])\n if (result) return result\n }\n if (f.required) {\n const val = formData[f.field]\n if (val === null || val === undefined || val === '') {\n return `${f.label} é obrigatório`\n }\n }\n }\n return null\n}\n","import { useToast } from 'primevue/usetoast'\n\nexport function useAppToast() {\n const toast = useToast()\n\n function success(message: string, title = 'Sucesso') {\n toast.add({ severity: 'success', summary: title, detail: message, life: 3000 })\n }\n\n function error(message: string, title = 'Erro') {\n toast.add({ severity: 'error', summary: title, detail: message, life: 5000 })\n }\n\n function warn(message: string, title = 'Atenção') {\n toast.add({ severity: 'warn', summary: title, detail: message, life: 4000 })\n }\n\n function info(message: string, title = 'Info') {\n toast.add({ severity: 'info', summary: title, detail: message, life: 3000 })\n }\n\n return { success, error, warn, info }\n}\n","import { useConfirm } from 'primevue/useconfirm'\nimport { useTabHost } from '@/types/routeTabs'\n\nexport function useAppConfirm() {\n const confirm = useConfirm()\n // Dentro da navegação por abas, o confirm pendura no pane da própria aba\n // (some e volta com ela); fora de abas, o body de sempre. O ConfirmDialog\n // global continua único — só a âncora muda, por confirmação.\n const tabHost = useTabHost()\n const appendTo = () => tabHost?.hostEl.value ?? 'body'\n\n function confirmDelete(\n onAccept: () => void,\n message = 'Deseja realmente excluir este registro?',\n ) {\n confirm.require({\n appendTo: appendTo(),\n message,\n header: 'Confirmar Exclusão',\n icon: 'pi pi-trash',\n rejectLabel: 'Cancelar',\n rejectProps: {\n severity: 'secondary',\n text: true,\n },\n acceptLabel: 'Excluir',\n acceptProps: {\n severity: 'danger',\n },\n accept: onAccept,\n })\n }\n\n function confirmAction(message: string, onAccept: () => void, header = 'Confirmação') {\n confirm.require({\n appendTo: appendTo(),\n message,\n header,\n icon: 'pi pi-question-circle',\n rejectLabel: 'Cancelar',\n rejectProps: {\n severity: 'secondary',\n text: true,\n },\n acceptLabel: 'Confirmar',\n accept: onAccept,\n })\n }\n\n return { confirmDelete, confirmAction }\n}\n","function formatFieldName(field: string): string {\n return field.replace(/_/g, ' ').replace(/^\\w/, (c) => c.toUpperCase())\n}\n\nfunction extractMessage(detail: unknown): string | null {\n if (typeof detail === 'string') {\n return detail\n }\n\n if (Array.isArray(detail)) {\n const messages = detail.filter((item) => typeof item === 'string')\n return messages.length > 0 ? messages.join(' ') : null\n }\n\n if (typeof detail === 'object' && detail !== null) {\n const obj = detail as Record<string, unknown>\n\n if (Array.isArray(obj.non_field_errors) && obj.non_field_errors.length > 0) {\n return obj.non_field_errors.filter((item: unknown) => typeof item === 'string').join(' ')\n }\n\n const messages: string[] = []\n for (const [key, value] of Object.entries(obj)) {\n if (key === 'non_field_errors') continue\n const label = formatFieldName(key)\n if (Array.isArray(value)) {\n const strs = value.filter((item: unknown) => typeof item === 'string')\n if (strs.length > 0) messages.push(`${label}: ${strs.join(' ')}`)\n } else if (typeof value === 'string') {\n messages.push(`${label}: ${value}`)\n }\n }\n return messages.length > 0 ? messages.join('\\n') : null\n }\n\n return null\n}\n\nexport function extractApiError(error: unknown, fallback = 'Erro inesperado'): string {\n if (!error || typeof error !== 'object') return fallback\n\n const axiosError = error as {\n response?: { data?: Record<string, unknown> }\n message?: string\n }\n const data = axiosError.response?.data\n\n if (!data || typeof data !== 'object') {\n return axiosError.message || fallback\n }\n\n const detail = data.detail ?? data\n return extractMessage(detail) || fallback\n}\n\nexport function useApiError() {\n return { extractApiError }\n}\n","import dayjs from 'dayjs'\nimport customParseFormat from 'dayjs/plugin/customParseFormat'\n\ndayjs.extend(customParseFormat)\n\n/**\n * Formato do valor emitido pelo WDatePicker:\n * - `'iso'` → string `YYYY-MM-DD` (ou `YYYY-MM-DDTHH:mm:ss` com hora). Ideal p/ API.\n * - `'date'` → objeto `Date` (compatível com o contrato atual do useCrudManager).\n */\nexport type DateValueFormat = 'iso' | 'date'\n\nconst DISPLAY_DATE = 'DD/MM/YYYY'\nconst DISPLAY_DATETIME = 'DD/MM/YYYY HH:mm'\nconst ISO_DATE = 'YYYY-MM-DD'\nconst ISO_DATETIME = 'YYYY-MM-DDTHH:mm:ss'\n\nexport interface UseDateInputOptions {\n /** Reativo: se o campo inclui hora (datetime). */\n showTime?: () => boolean\n /** Reativo: formato do valor emitido (default `'iso'`). */\n valueFormat?: () => DateValueFormat\n}\n\n/**\n * Lógica pura de parse/format/máscara para inputs de data em pt-BR.\n *\n * Timezone-safe: parse e format usam sempre os componentes LOCAIS via dayjs\n * (nunca `toISOString`, que converte p/ UTC e causa off-by-one em fusos negativos).\n * Sem estado reativo próprio — apenas funções; o componente cuida da reatividade.\n */\nexport function useDateInput(opts: UseDateInputOptions = {}) {\n const withTime = () => opts.showTime?.() ?? false\n const displayFormat = () => (withTime() ? DISPLAY_DATETIME : DISPLAY_DATE)\n const mask = () => (withTime() ? '##/##/#### ##:##' : '##/##/####')\n const placeholder = () => (withTime() ? 'dd/mm/aaaa hh:mm' : 'dd/mm/aaaa')\n\n /** Valor de entrada (string ISO ou Date) → `Date` local, ou `null` se inválido. */\n function toDate(value: unknown): Date | null {\n if (value == null || value === '') return null\n if (value instanceof Date) return isNaN(value.getTime()) ? null : value\n if (typeof value === 'string') {\n // Aceita YYYY-MM-DD estrito primeiro (data pura, meia-noite local)…\n const dateOnly = dayjs(value, ISO_DATE, true)\n if (dateOnly.isValid()) return dateOnly.toDate()\n // …senão qualquer ISO datetime válido (dayjs interpreta como local).\n const any = dayjs(value)\n return any.isValid() ? any.toDate() : null\n }\n return null\n }\n\n /** `Date` → valor emitido, respeitando `valueFormat` (default string ISO). */\n function toValue(date: Date | null): string | Date | null {\n if (!date) return null\n if ((opts.valueFormat?.() ?? 'iso') === 'date') return date\n return dayjs(date).format(withTime() ? ISO_DATETIME : ISO_DATE)\n }\n\n /** `Date` → texto de exibição `DD/MM/YYYY[ HH:mm]`. */\n function toDisplay(date: Date | null): string {\n if (!date) return ''\n return dayjs(date).format(displayFormat())\n }\n\n /** Texto digitado (`30/05/1988`) → `Date`, ou `null` se incompleto/inválido. */\n function fromDisplay(text: string): Date | null {\n if (!text) return null\n const d = dayjs(text, displayFormat(), true)\n return d.isValid() ? d.toDate() : null\n }\n\n /** Hoje: date-only zera a hora; datetime mantém a hora atual. */\n function today(): Date {\n return withTime() ? new Date() : dayjs().startOf('day').toDate()\n }\n\n return { toDate, toValue, toDisplay, fromDisplay, today, mask, placeholder, displayFormat }\n}\n","import { nextTick, type Ref } from 'vue'\n\n/**\n * Navegação por teclado em formulários, estilo aplicação desktop (DevExpress):\n * - `focusFirst()` posiciona o foco no primeiro campo ativo (e seleciona o texto).\n * - `handleKeydown` faz o Enter pular para o próximo campo, até o botão de salvar.\n *\n * Sem watchers nem addEventListener manual: o `handleKeydown` é bindado via\n * `@keydown` no container (o Vue gerencia o listener) e `focusFirst` é chamado\n * no `@show` do Dialog. Shift+Tab / Tab continuam nativos.\n *\n * Regras do Enter (para não atrapalhar a semântica de cada componente):\n * - `textarea` → Enter é quebra de linha (não pula).\n * - `button` → Enter é o clique/submit nativo (não pula).\n * - overlay de dropdown aberto (Select/AutoComplete/DatePicker/MultiSelect) →\n * Enter seleciona o item; só o Enter seguinte pula o foco.\n * - marque um elemento com `data-kbd-skip` para excluí-lo da sequência (ex.: o\n * botão Cancelar, para o Enter ir direto ao Salvar).\n */\n\n// Elementos que recebem foco por tabulação.\nconst FOCUSABLE = [\n 'input:not([type=\"hidden\"]):not([disabled])',\n 'textarea:not([disabled])',\n 'select:not([disabled])',\n 'button:not([disabled])',\n '[tabindex]:not([tabindex=\"-1\"])',\n '[contenteditable=\"true\"]',\n].join(', ')\n\n// Painéis de dropdown do PrimeVue: quando presentes, o Enter deve selecionar.\nconst OPEN_OVERLAY = [\n '.p-select-overlay',\n '.p-autocomplete-overlay',\n '.p-multiselect-overlay',\n '.p-datepicker-panel',\n '.p-cascadeselect-overlay',\n '.p-treeselect-overlay',\n].join(', ')\n\nexport interface FormKeyboardNavOptions {\n /** Liga/desliga a navegação (default: sempre ligada). */\n enabled?: () => boolean\n /** Chamado quando o Enter passa do último elemento sem próximo foco. */\n onSubmit?: () => void\n}\n\nexport function useFormKeyboardNav(\n container: Ref<HTMLElement | null>,\n options: FormKeyboardNavOptions = {},\n) {\n const isEnabled = () => (options.enabled ? options.enabled() : true)\n\n function focusables(): HTMLElement[] {\n const root = container.value\n if (!root) return []\n return Array.from(root.querySelectorAll<HTMLElement>(FOCUSABLE)).filter(\n (el) => el.getClientRects().length > 0 && !el.hasAttribute('data-kbd-skip'),\n )\n }\n\n function focusFirst(): void {\n if (!isEnabled()) return\n nextTick(() => {\n const els = focusables()\n const first = els.find((el) => el.tagName !== 'BUTTON') ?? els[0]\n if (!first) return\n first.focus()\n // Seleciona o conteúdo de inputs de texto para facilitar sobrescrever.\n const input = first as HTMLInputElement\n if (typeof input.select === 'function') {\n try {\n input.select()\n } catch {\n /* nem todo input suporta select() */\n }\n }\n })\n }\n\n function handleKeydown(e: KeyboardEvent): void {\n if (!isEnabled() || e.key !== 'Enter' || e.isComposing) return\n const target = e.target as HTMLElement\n if (target.tagName === 'TEXTAREA' || target.tagName === 'BUTTON') return\n // Dropdown aberto → deixa o componente tratar o Enter (selecionar item).\n if (target.getAttribute('aria-expanded') === 'true') return\n if (document.querySelector(OPEN_OVERLAY)) return\n\n e.preventDefault()\n const els = focusables()\n const i = els.indexOf(target)\n if (i === -1) return\n const next = els[i + 1]\n if (next) next.focus()\n else options.onSubmit?.()\n }\n\n return { focusFirst, handleKeydown }\n}\n"],"x_google_ignoreList":[0],"mappings":"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"}
@@ -1,3 +1,3 @@
1
- var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports),s=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},c=(n,r,o)=>(o=n==null?{}:e(i(n)),s(r||!n||!n.__esModule||!a.call(n,`default`)?t(o,`default`,{value:n,enumerable:!0}):o,n));const l=require("./routeTabs-BnVpnSeJ.cjs");let u=require("vue"),d=require("dayjs");d=c(d,1);let f=require("primevue/usetoast"),p=require("primevue/useconfirm");var m=c(o(((e,t)=>{(function(n,r){typeof e==`object`&&t!==void 0?t.exports=r():typeof define==`function`&&define.amd?define(r):(n=typeof globalThis<`u`?globalThis:n||self).dayjs_plugin_customParseFormat=r()})(e,(function(){"use strict";var e={LTS:`h:mm:ss A`,LT:`h:mm A`,L:`MM/DD/YYYY`,LL:`MMMM D, YYYY`,LLL:`MMMM D, YYYY h:mm A`,LLLL:`dddd, MMMM D, YYYY h:mm A`},t=/(\[[^[]*\])|([-_:/.,()\s]+)|(A|a|Q|YYYY|YY?|ww?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,n=/\d/,r=/\d\d/,i=/\d\d?/,a=/\d*[^-_:/,()\s\d]+/,o={},s=function(e){return(e=+e)+(e>68?1900:2e3)},c=function(e){return function(t){this[e]=+t}},l=[/[+-]\d\d:?(\d\d)?|Z/,function(e){(this.zone||={}).offset=function(e){if(!e||e===`Z`)return 0;var t=e.match(/([+-]|\d\d)/g),n=60*t[1]+(+t[2]||0);return n===0?0:t[0]===`+`?-n:n}(e)}],u=function(e){var t=o[e];return t&&(t.indexOf?t:t.s.concat(t.f))},d=function(e,t){var n,r=o.meridiem;if(r){for(var i=1;i<=24;i+=1)if(e.indexOf(r(i,0,t))>-1){n=i>12;break}}else n=e===(t?`pm`:`PM`);return n},f={A:[a,function(e){this.afternoon=d(e,!1)}],a:[a,function(e){this.afternoon=d(e,!0)}],Q:[n,function(e){this.month=3*(e-1)+1}],S:[n,function(e){this.milliseconds=100*e}],SS:[r,function(e){this.milliseconds=10*e}],SSS:[/\d{3}/,function(e){this.milliseconds=+e}],s:[i,c(`seconds`)],ss:[i,c(`seconds`)],m:[i,c(`minutes`)],mm:[i,c(`minutes`)],H:[i,c(`hours`)],h:[i,c(`hours`)],HH:[i,c(`hours`)],hh:[i,c(`hours`)],D:[i,c(`day`)],DD:[r,c(`day`)],Do:[a,function(e){var t=o.ordinal,n=e.match(/\d+/);if(this.day=n[0],t)for(var r=1;r<=31;r+=1)t(r).replace(/\[|\]/g,``)===e&&(this.day=r)}],w:[i,c(`week`)],ww:[r,c(`week`)],M:[i,c(`month`)],MM:[r,c(`month`)],MMM:[a,function(e){var t=u(`months`),n=(u(`monthsShort`)||t.map((function(e){return e.slice(0,3)}))).indexOf(e)+1;if(n<1)throw Error();this.month=n%12||n}],MMMM:[a,function(e){var t=u(`months`).indexOf(e)+1;if(t<1)throw Error();this.month=t%12||t}],Y:[/[+-]?\d+/,c(`year`)],YY:[r,function(e){this.year=s(e)}],YYYY:[/\d{4}/,c(`year`)],Z:l,ZZ:l};function p(n){for(var r=n,i=o&&o.formats,a=(n=r.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,(function(t,n,r){var a=r&&r.toUpperCase();return n||i[r]||e[r]||i[a].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,(function(e,t,n){return t||n.slice(1)}))}))).match(t),s=a.length,c=0;c<s;c+=1){var l=a[c],u=f[l],d=u&&u[0],p=u&&u[1];a[c]=p?{regex:d,parser:p}:l.replace(/^\[|\]$/g,``)}return function(e){for(var t={},n=0,r=0;n<s;n+=1){var i=a[n];if(typeof i==`string`)r+=i.length;else{var o=i.regex,c=i.parser,l=e.slice(r),u=o.exec(l)[0];c.call(t,u),e=e.replace(u,``)}}return function(e){var t=e.afternoon;if(t!==void 0){var n=e.hours;t?n<12&&(e.hours+=12):n===12&&(e.hours=0),delete e.afternoon}}(t),t}}return function(e,t,n){n.p.customParseFormat=!0,e&&e.parseTwoDigitYear&&(s=e.parseTwoDigitYear);var r=t.prototype,i=r.parse;r.parse=function(e){var t=e.date,r=e.utc,a=e.args;this.$u=r;var s=a[1];if(typeof s==`string`){var c=!0===a[2],l=!0===a[3],u=c||l,d=a[2];l&&(d=a[2]),o=this.$locale(),!c&&d&&(o=n.Ls[d]),this.$d=function(e,t,n,r){try{if([`x`,`X`].indexOf(t)>-1)return new Date((t===`X`?1e3:1)*e);var i=p(t)(e),a=i.year,o=i.month,s=i.day,c=i.hours,l=i.minutes,u=i.seconds,d=i.milliseconds,f=i.zone,m=i.week,h=new Date,g=s||(a||o?1:h.getDate()),_=a||h.getFullYear(),v=0;a&&!o||(v=o>0?o-1:h.getMonth());var y,b=c||0,x=l||0,S=u||0,C=d||0;return f?new Date(Date.UTC(_,v,g,b,x,S,C+60*f.offset*1e3)):n?new Date(Date.UTC(_,v,g,b,x,S,C)):(y=new Date(_,v,g,b,x,S,C),m&&(y=r(y).week(m).toDate()),y)}catch{return new Date(``)}}(t,s,r,n),this.init(),d&&!0!==d&&(this.$L=this.locale(d).$L),u&&t!=this.format(s)&&(this.$d=new Date(``)),o={}}else if(s instanceof Array)for(var f=s.length,m=1;m<=f;m+=1){a[1]=s[m-1];var h=n.apply(this,a);if(h.isValid()){this.$d=h.$d,this.$L=h.$L,this.init();break}m===f&&(this.$d=new Date(``))}else i.call(this,e)}}}))}))(),1);d.default.extend(m.default);function h(e){if(!e)return null;if(e instanceof Date)return e;let t=(0,d.default)(e,`YYYY-MM-DD`,!0);return t.isValid()?t.toDate():(0,d.default)(e).toDate()}function g(e){return e?typeof e==`string`?e:(0,d.default)(e).format(`YYYY-MM-DD`):null}function _(e){return e?typeof e==`string`?e:(0,d.default)(e).toISOString():null}function v(e,t=`DD/MM/YYYY`){return e?(0,d.default)(e).format(t):`—`}function y(e){return e?(0,d.default)(e).format(`DD/MM/YYYY HH:mm`):`—`}function b(e){return e.replace(/\D/g,``)}function x(e){if(!e)return`—`;let t=b(e);return t.length===11?t.replace(/^(\d{3})(\d{3})(\d{3})(\d{2})$/,`$1.$2.$3-$4`):e}function S(e){if(!e)return`—`;let t=b(e);return t.length===14?t.replace(/^(\d{2})(\d{3})(\d{3})(\d{4})(\d{2})$/,`$1.$2.$3/$4-$5`):e}function C(e){if(!e)return`—`;let t=b(e);return t.length===11?x(e):t.length===14?S(e):e}function w(e){if(!e)return`—`;let t=b(e);return t.length===11?t.replace(/^(\d{2})(\d{5})(\d{4})$/,`($1) $2-$3`):t.length===10?t.replace(/^(\d{2})(\d{4})(\d{4})$/,`($1) $2-$3`):e}function T(e){if(!e)return null;let t=b(e);if(t.length!==11)return`CPF deve ter 11 dígitos.`;if(/^(\d)\1{10}$/.test(t))return`CPF inválido.`;let n=0;for(let e=0;e<9;e++)n+=parseInt(t[e])*(10-e);let r=n%11,i=r<2?0:11-r;if(parseInt(t[9])!==i)return`CPF inválido.`;n=0;for(let e=0;e<10;e++)n+=parseInt(t[e])*(11-e);r=n%11;let a=r<2?0:11-r;return parseInt(t[10])===a?null:`CPF inválido.`}function E(e){if(!e)return null;let t=b(e);if(t.length!==14)return`CNPJ deve ter 14 dígitos.`;if(/^(\d)\1{13}$/.test(t))return`CNPJ inválido.`;let n=[5,4,3,2,9,8,7,6,5,4,3,2],r=0;for(let e=0;e<12;e++)r+=parseInt(t[e])*n[e];let i=r%11,a=i<2?0:11-i;if(parseInt(t[12])!==a)return`CNPJ inválido.`;let o=[6,5,4,3,2,9,8,7,6,5,4,3,2];r=0;for(let e=0;e<13;e++)r+=parseInt(t[e])*o[e];i=r%11;let s=i<2?0:11-i;return parseInt(t[13])===s?null:`CNPJ inválido.`}function D(e){if(!e)return null;let t=b(e);return t.length===11?T(e):t.length===14?E(e):`CPF deve ter 11 dígitos ou CNPJ deve ter 14 dígitos.`}var O=new Map;function k(e,t){let n=`${e}-${t}`,r=O.get(n);return r||(r=new Intl.NumberFormat(e,{minimumFractionDigits:t,maximumFractionDigits:t}),O.set(n,r)),r}function A(e,t){let n=`${e}-${t}`,r=O.get(n);return r||(r=new Intl.NumberFormat(e,{style:`currency`,currency:t}),O.set(n,r)),r}function j(){let e=(0,u.inject)(l.i,{defaultPageSize:20,dateFormat:`DD/MM/YYYY`,dateTimeFormat:`DD/MM/YYYY HH:mm`,locale:`pt-BR`,currency:`BRL`}),t=e?.locale??`pt-BR`,n=e?.currency??`BRL`;function r(e){return e==null?`—`:A(t,n).format(e)}function i(e,n=2){return e==null?`—`:k(t,n).format(e)}function a(t,n){return v(t,n??e?.dateFormat??`DD/MM/YYYY`)}function o(e){return y(e)}function s(e){return e==null?`—`:`${k(t,2).format(e)}%`}return{formatCurrency:r,formatNumber:i,formatDate:a,formatDateTime:o,formatPercent:s,formatCpf:x,formatCnpj:S,formatCpfCnpj:C,formatTelefone:w,validateCpf:T,validateCnpj:E,validateCpfCnpj:D,parseDate:h,toDateString:g,toDateTimeString:_}}function M(){let e=(0,f.useToast)();function t(t,n=`Sucesso`){e.add({severity:`success`,summary:n,detail:t,life:3e3})}function n(t,n=`Erro`){e.add({severity:`error`,summary:n,detail:t,life:5e3})}function r(t,n=`Atenção`){e.add({severity:`warn`,summary:n,detail:t,life:4e3})}function i(t,n=`Info`){e.add({severity:`info`,summary:n,detail:t,life:3e3})}return{success:t,error:n,warn:r,info:i}}function N(){let e=(0,p.useConfirm)(),t=l.n(),n=()=>t?.hostEl.value??`body`;function r(t,r=`Deseja realmente excluir este registro?`){e.require({appendTo:n(),message:r,header:`Confirmar Exclusão`,icon:`pi pi-trash`,rejectLabel:`Cancelar`,rejectProps:{severity:`secondary`,text:!0},acceptLabel:`Excluir`,acceptProps:{severity:`danger`},accept:t})}function i(t,r,i=`Confirmação`){e.require({appendTo:n(),message:t,header:i,icon:`pi pi-question-circle`,rejectLabel:`Cancelar`,rejectProps:{severity:`secondary`,text:!0},acceptLabel:`Confirmar`,accept:r})}return{confirmDelete:r,confirmAction:i}}function P(e){return e.replace(/_/g,` `).replace(/^\w/,e=>e.toUpperCase())}function F(e){if(typeof e==`string`)return e;if(Array.isArray(e)){let t=e.filter(e=>typeof e==`string`);return t.length>0?t.join(` `):null}if(typeof e==`object`&&e){let t=e;if(Array.isArray(t.non_field_errors)&&t.non_field_errors.length>0)return t.non_field_errors.filter(e=>typeof e==`string`).join(` `);let n=[];for(let[e,r]of Object.entries(t)){if(e===`non_field_errors`)continue;let t=P(e);if(Array.isArray(r)){let e=r.filter(e=>typeof e==`string`);e.length>0&&n.push(`${t}: ${e.join(` `)}`)}else typeof r==`string`&&n.push(`${t}: ${r}`)}return n.length>0?n.join(`
2
- `):null}return null}function I(e,t=`Erro inesperado`){if(!e||typeof e!=`object`)return t;let n=e,r=n.response?.data;return!r||typeof r!=`object`?n.message||t:F(r.detail??r)||t}function L(){return{extractApiError:I}}d.default.extend(m.default);var R=`DD/MM/YYYY`,z=`DD/MM/YYYY HH:mm`,B=`YYYY-MM-DD`,V=`YYYY-MM-DDTHH:mm:ss`;function H(e={}){let t=()=>e.showTime?.()??!1,n=()=>t()?z:R,r=()=>t()?`##/##/#### ##:##`:`##/##/####`,i=()=>t()?`dd/mm/aaaa hh:mm`:`dd/mm/aaaa`;function a(e){if(e==null||e===``)return null;if(e instanceof Date)return isNaN(e.getTime())?null:e;if(typeof e==`string`){let t=(0,d.default)(e,B,!0);if(t.isValid())return t.toDate();let n=(0,d.default)(e);return n.isValid()?n.toDate():null}return null}function o(n){return n?(e.valueFormat?.()??`iso`)===`date`?n:(0,d.default)(n).format(t()?V:B):null}function s(e){return e?(0,d.default)(e).format(n()):``}function c(e){if(!e)return null;let t=(0,d.default)(e,n(),!0);return t.isValid()?t.toDate():null}function l(){return t()?new Date:(0,d.default)().startOf(`day`).toDate()}return{toDate:a,toValue:o,toDisplay:s,fromDisplay:c,today:l,mask:r,placeholder:i,displayFormat:n}}var U=[`input:not([type="hidden"]):not([disabled])`,`textarea:not([disabled])`,`select:not([disabled])`,`button:not([disabled])`,`[tabindex]:not([tabindex="-1"])`,`[contenteditable="true"]`].join(`, `),W=[`.p-select-overlay`,`.p-autocomplete-overlay`,`.p-multiselect-overlay`,`.p-datepicker-panel`,`.p-cascadeselect-overlay`,`.p-treeselect-overlay`].join(`, `);function G(e,t={}){let n=()=>!t.enabled||t.enabled();function r(){let t=e.value;return t?Array.from(t.querySelectorAll(U)).filter(e=>e.getClientRects().length>0&&!e.hasAttribute(`data-kbd-skip`)):[]}function i(){n()&&(0,u.nextTick)(()=>{let e=r(),t=e.find(e=>e.tagName!==`BUTTON`)??e[0];if(!t)return;t.focus();let n=t;if(typeof n.select==`function`)try{n.select()}catch{}})}function a(e){if(!n()||e.key!==`Enter`||e.isComposing)return;let i=e.target;if(i.tagName===`TEXTAREA`||i.tagName===`BUTTON`||i.getAttribute(`aria-expanded`)===`true`||document.querySelector(W))return;e.preventDefault();let a=r(),o=a.indexOf(i);if(o===-1)return;let s=a[o+1];s?s.focus():t.onSubmit?.()}return{focusFirst:i,handleKeydown:a}}Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return N}}),Object.defineProperty(exports,"c",{enumerable:!0,get:function(){return b}}),Object.defineProperty(exports,"d",{enumerable:!0,get:function(){return _}}),Object.defineProperty(exports,"f",{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return L}}),Object.defineProperty(exports,"l",{enumerable:!0,get:function(){return h}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return H}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return M}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return I}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return j}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return G}}),Object.defineProperty(exports,"u",{enumerable:!0,get:function(){return g}});
3
- //# sourceMappingURL=useFormKeyboardNav-HoSmQwuv.cjs.map
1
+ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports),s=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},c=(n,r,o)=>(o=n==null?{}:e(i(n)),s(r||!n||!n.__esModule||!a.call(n,`default`)?t(o,`default`,{value:n,enumerable:!0}):o,n));const l=require("./routeTabs-BnVpnSeJ.cjs");let u=require("vue"),d=require("dayjs");d=c(d,1);let f=require("primevue/usetoast"),p=require("primevue/useconfirm");var m=c(o(((e,t)=>{(function(n,r){typeof e==`object`&&t!==void 0?t.exports=r():typeof define==`function`&&define.amd?define(r):(n=typeof globalThis<`u`?globalThis:n||self).dayjs_plugin_customParseFormat=r()})(e,(function(){"use strict";var e={LTS:`h:mm:ss A`,LT:`h:mm A`,L:`MM/DD/YYYY`,LL:`MMMM D, YYYY`,LLL:`MMMM D, YYYY h:mm A`,LLLL:`dddd, MMMM D, YYYY h:mm A`},t=/(\[[^[]*\])|([-_:/.,()\s]+)|(A|a|Q|YYYY|YY?|ww?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,n=/\d/,r=/\d\d/,i=/\d\d?/,a=/\d*[^-_:/,()\s\d]+/,o={},s=function(e){return(e=+e)+(e>68?1900:2e3)},c=function(e){return function(t){this[e]=+t}},l=[/[+-]\d\d:?(\d\d)?|Z/,function(e){(this.zone||={}).offset=function(e){if(!e||e===`Z`)return 0;var t=e.match(/([+-]|\d\d)/g),n=60*t[1]+(+t[2]||0);return n===0?0:t[0]===`+`?-n:n}(e)}],u=function(e){var t=o[e];return t&&(t.indexOf?t:t.s.concat(t.f))},d=function(e,t){var n,r=o.meridiem;if(r){for(var i=1;i<=24;i+=1)if(e.indexOf(r(i,0,t))>-1){n=i>12;break}}else n=e===(t?`pm`:`PM`);return n},f={A:[a,function(e){this.afternoon=d(e,!1)}],a:[a,function(e){this.afternoon=d(e,!0)}],Q:[n,function(e){this.month=3*(e-1)+1}],S:[n,function(e){this.milliseconds=100*e}],SS:[r,function(e){this.milliseconds=10*e}],SSS:[/\d{3}/,function(e){this.milliseconds=+e}],s:[i,c(`seconds`)],ss:[i,c(`seconds`)],m:[i,c(`minutes`)],mm:[i,c(`minutes`)],H:[i,c(`hours`)],h:[i,c(`hours`)],HH:[i,c(`hours`)],hh:[i,c(`hours`)],D:[i,c(`day`)],DD:[r,c(`day`)],Do:[a,function(e){var t=o.ordinal,n=e.match(/\d+/);if(this.day=n[0],t)for(var r=1;r<=31;r+=1)t(r).replace(/\[|\]/g,``)===e&&(this.day=r)}],w:[i,c(`week`)],ww:[r,c(`week`)],M:[i,c(`month`)],MM:[r,c(`month`)],MMM:[a,function(e){var t=u(`months`),n=(u(`monthsShort`)||t.map((function(e){return e.slice(0,3)}))).indexOf(e)+1;if(n<1)throw Error();this.month=n%12||n}],MMMM:[a,function(e){var t=u(`months`).indexOf(e)+1;if(t<1)throw Error();this.month=t%12||t}],Y:[/[+-]?\d+/,c(`year`)],YY:[r,function(e){this.year=s(e)}],YYYY:[/\d{4}/,c(`year`)],Z:l,ZZ:l};function p(n){for(var r=n,i=o&&o.formats,a=(n=r.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,(function(t,n,r){var a=r&&r.toUpperCase();return n||i[r]||e[r]||i[a].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,(function(e,t,n){return t||n.slice(1)}))}))).match(t),s=a.length,c=0;c<s;c+=1){var l=a[c],u=f[l],d=u&&u[0],p=u&&u[1];a[c]=p?{regex:d,parser:p}:l.replace(/^\[|\]$/g,``)}return function(e){for(var t={},n=0,r=0;n<s;n+=1){var i=a[n];if(typeof i==`string`)r+=i.length;else{var o=i.regex,c=i.parser,l=e.slice(r),u=o.exec(l)[0];c.call(t,u),e=e.replace(u,``)}}return function(e){var t=e.afternoon;if(t!==void 0){var n=e.hours;t?n<12&&(e.hours+=12):n===12&&(e.hours=0),delete e.afternoon}}(t),t}}return function(e,t,n){n.p.customParseFormat=!0,e&&e.parseTwoDigitYear&&(s=e.parseTwoDigitYear);var r=t.prototype,i=r.parse;r.parse=function(e){var t=e.date,r=e.utc,a=e.args;this.$u=r;var s=a[1];if(typeof s==`string`){var c=!0===a[2],l=!0===a[3],u=c||l,d=a[2];l&&(d=a[2]),o=this.$locale(),!c&&d&&(o=n.Ls[d]),this.$d=function(e,t,n,r){try{if([`x`,`X`].indexOf(t)>-1)return new Date((t===`X`?1e3:1)*e);var i=p(t)(e),a=i.year,o=i.month,s=i.day,c=i.hours,l=i.minutes,u=i.seconds,d=i.milliseconds,f=i.zone,m=i.week,h=new Date,g=s||(a||o?1:h.getDate()),_=a||h.getFullYear(),v=0;a&&!o||(v=o>0?o-1:h.getMonth());var y,b=c||0,x=l||0,S=u||0,C=d||0;return f?new Date(Date.UTC(_,v,g,b,x,S,C+60*f.offset*1e3)):n?new Date(Date.UTC(_,v,g,b,x,S,C)):(y=new Date(_,v,g,b,x,S,C),m&&(y=r(y).week(m).toDate()),y)}catch{return new Date(``)}}(t,s,r,n),this.init(),d&&!0!==d&&(this.$L=this.locale(d).$L),u&&t!=this.format(s)&&(this.$d=new Date(``)),o={}}else if(s instanceof Array)for(var f=s.length,m=1;m<=f;m+=1){a[1]=s[m-1];var h=n.apply(this,a);if(h.isValid()){this.$d=h.$d,this.$L=h.$L,this.init();break}m===f&&(this.$d=new Date(``))}else i.call(this,e)}}}))}))(),1);d.default.extend(m.default);function h(e){if(!e)return null;if(e instanceof Date)return e;let t=(0,d.default)(e,`YYYY-MM-DD`,!0);return t.isValid()?t.toDate():(0,d.default)(e).toDate()}function g(e){return e?typeof e==`string`?e:(0,d.default)(e).format(`YYYY-MM-DD`):null}function _(e){return e?typeof e==`string`?e:(0,d.default)(e).toISOString():null}function v(e,t=`DD/MM/YYYY`){return e?(0,d.default)(e).format(t):`—`}function y(e){return e?(0,d.default)(e).format(`DD/MM/YYYY HH:mm`):`—`}function b(e){return e.replace(/\D/g,``)}function x(e){if(!e)return`—`;let t=b(e);return t.length===11?t.replace(/^(\d{3})(\d{3})(\d{3})(\d{2})$/,`$1.$2.$3-$4`):e}function S(e){if(!e)return`—`;let t=b(e);return t.length===14?t.replace(/^(\d{2})(\d{3})(\d{3})(\d{4})(\d{2})$/,`$1.$2.$3/$4-$5`):e}function C(e){if(!e)return`—`;let t=b(e);return t.length===11?x(e):t.length===14?S(e):e}function w(e){if(!e)return`—`;let t=b(e);return t.length===11?t.replace(/^(\d{2})(\d{5})(\d{4})$/,`($1) $2-$3`):t.length===10?t.replace(/^(\d{2})(\d{4})(\d{4})$/,`($1) $2-$3`):e}function T(e){if(!e)return null;let t=b(e);if(t.length!==11)return`CPF deve ter 11 dígitos.`;if(/^(\d)\1{10}$/.test(t))return`CPF inválido.`;let n=0;for(let e=0;e<9;e++)n+=parseInt(t[e])*(10-e);let r=n%11,i=r<2?0:11-r;if(parseInt(t[9])!==i)return`CPF inválido.`;n=0;for(let e=0;e<10;e++)n+=parseInt(t[e])*(11-e);r=n%11;let a=r<2?0:11-r;return parseInt(t[10])===a?null:`CPF inválido.`}function E(e){if(!e)return null;let t=b(e);if(t.length!==14)return`CNPJ deve ter 14 dígitos.`;if(/^(\d)\1{13}$/.test(t))return`CNPJ inválido.`;let n=[5,4,3,2,9,8,7,6,5,4,3,2],r=0;for(let e=0;e<12;e++)r+=parseInt(t[e])*n[e];let i=r%11,a=i<2?0:11-i;if(parseInt(t[12])!==a)return`CNPJ inválido.`;let o=[6,5,4,3,2,9,8,7,6,5,4,3,2];r=0;for(let e=0;e<13;e++)r+=parseInt(t[e])*o[e];i=r%11;let s=i<2?0:11-i;return parseInt(t[13])===s?null:`CNPJ inválido.`}function D(e){if(!e)return null;let t=b(e);return t.length===11?T(e):t.length===14?E(e):`CPF deve ter 11 dígitos ou CNPJ deve ter 14 dígitos.`}var O=new Map;function k(e,t){let n=`${e}-${t}`,r=O.get(n);return r||(r=new Intl.NumberFormat(e,{minimumFractionDigits:t,maximumFractionDigits:t}),O.set(n,r)),r}function A(e,t){let n=`${e}-${t}`,r=O.get(n);return r||(r=new Intl.NumberFormat(e,{style:`currency`,currency:t}),O.set(n,r)),r}function j(){let e=(0,u.inject)(l.i,{defaultPageSize:20,dateFormat:`DD/MM/YYYY`,dateTimeFormat:`DD/MM/YYYY HH:mm`,locale:`pt-BR`,currency:`BRL`}),t=e?.locale??`pt-BR`,n=e?.currency??`BRL`;function r(e){return e==null?`—`:A(t,n).format(e)}function i(e,n=2){return e==null?`—`:k(t,n).format(e)}function a(t,n){return v(t,n??e?.dateFormat??`DD/MM/YYYY`)}function o(e){return y(e)}function s(e){return e==null?`—`:`${k(t,2).format(e)}%`}return{formatCurrency:r,formatNumber:i,formatDate:a,formatDateTime:o,formatPercent:s,formatCpf:x,formatCnpj:S,formatCpfCnpj:C,formatTelefone:w,validateCpf:T,validateCnpj:E,validateCpfCnpj:D,parseDate:h,toDateString:g,toDateTimeString:_}}function M(e){let t={};for(let n of e)t[n.field]=n.defaultValue===void 0?null:typeof n.defaultValue==`function`?n.defaultValue():n.defaultValue;return t}function N(e,t,n){let r={};for(let i of t){let t=e[i.field]===void 0?null:e[i.field];t&&(i.type===`date`||i.type===`datetime`)&&typeof t==`string`&&(t=h(t)),n[i.field]=t,r[i.field]=t}return r}function P(e,t){let n={...e};for(let e of t){let t=n[e.field];if(e.type===`date`&&t instanceof Date?n[e.field]=g(t):e.type===`datetime`&&t instanceof Date&&(n[e.field]=_(t)),e.type===`fk`&&typeof t==`object`&&t){let r=e.optionValue||`id`;n[e.field]=t[r]??t}(e.type===`mask`||e.type===`cpf_cnpj`)&&typeof t==`string`&&(n[e.field]=b(t))}return n}function F(e,t,n=!1){return e.visible===void 0||e.visible===!0?!0:typeof e.visible==`function`?e.visible(t,n):e.visible}function I(e,t,n=!1){for(let r of e)if(F(r,t,n)){if(r.validate){let e=r.validate(t[r.field]);if(e)return e}if(r.required){let e=t[r.field];if(e==null||e===``)return`${r.label} é obrigatório`}}return null}function L(){let e=(0,f.useToast)();function t(t,n=`Sucesso`){e.add({severity:`success`,summary:n,detail:t,life:3e3})}function n(t,n=`Erro`){e.add({severity:`error`,summary:n,detail:t,life:5e3})}function r(t,n=`Atenção`){e.add({severity:`warn`,summary:n,detail:t,life:4e3})}function i(t,n=`Info`){e.add({severity:`info`,summary:n,detail:t,life:3e3})}return{success:t,error:n,warn:r,info:i}}function R(){let e=(0,p.useConfirm)(),t=l.n(),n=()=>t?.hostEl.value??`body`;function r(t,r=`Deseja realmente excluir este registro?`){e.require({appendTo:n(),message:r,header:`Confirmar Exclusão`,icon:`pi pi-trash`,rejectLabel:`Cancelar`,rejectProps:{severity:`secondary`,text:!0},acceptLabel:`Excluir`,acceptProps:{severity:`danger`},accept:t})}function i(t,r,i=`Confirmação`){e.require({appendTo:n(),message:t,header:i,icon:`pi pi-question-circle`,rejectLabel:`Cancelar`,rejectProps:{severity:`secondary`,text:!0},acceptLabel:`Confirmar`,accept:r})}return{confirmDelete:r,confirmAction:i}}function z(e){return e.replace(/_/g,` `).replace(/^\w/,e=>e.toUpperCase())}function B(e){if(typeof e==`string`)return e;if(Array.isArray(e)){let t=e.filter(e=>typeof e==`string`);return t.length>0?t.join(` `):null}if(typeof e==`object`&&e){let t=e;if(Array.isArray(t.non_field_errors)&&t.non_field_errors.length>0)return t.non_field_errors.filter(e=>typeof e==`string`).join(` `);let n=[];for(let[e,r]of Object.entries(t)){if(e===`non_field_errors`)continue;let t=z(e);if(Array.isArray(r)){let e=r.filter(e=>typeof e==`string`);e.length>0&&n.push(`${t}: ${e.join(` `)}`)}else typeof r==`string`&&n.push(`${t}: ${r}`)}return n.length>0?n.join(`
2
+ `):null}return null}function V(e,t=`Erro inesperado`){if(!e||typeof e!=`object`)return t;let n=e,r=n.response?.data;return!r||typeof r!=`object`?n.message||t:B(r.detail??r)||t}function H(){return{extractApiError:V}}d.default.extend(m.default);var U=`DD/MM/YYYY`,W=`DD/MM/YYYY HH:mm`,G=`YYYY-MM-DD`,K=`YYYY-MM-DDTHH:mm:ss`;function q(e={}){let t=()=>e.showTime?.()??!1,n=()=>t()?W:U,r=()=>t()?`##/##/#### ##:##`:`##/##/####`,i=()=>t()?`dd/mm/aaaa hh:mm`:`dd/mm/aaaa`;function a(e){if(e==null||e===``)return null;if(e instanceof Date)return isNaN(e.getTime())?null:e;if(typeof e==`string`){let t=(0,d.default)(e,G,!0);if(t.isValid())return t.toDate();let n=(0,d.default)(e);return n.isValid()?n.toDate():null}return null}function o(n){return n?(e.valueFormat?.()??`iso`)===`date`?n:(0,d.default)(n).format(t()?K:G):null}function s(e){return e?(0,d.default)(e).format(n()):``}function c(e){if(!e)return null;let t=(0,d.default)(e,n(),!0);return t.isValid()?t.toDate():null}function l(){return t()?new Date:(0,d.default)().startOf(`day`).toDate()}return{toDate:a,toValue:o,toDisplay:s,fromDisplay:c,today:l,mask:r,placeholder:i,displayFormat:n}}var J=[`input:not([type="hidden"]):not([disabled])`,`textarea:not([disabled])`,`select:not([disabled])`,`button:not([disabled])`,`[tabindex]:not([tabindex="-1"])`,`[contenteditable="true"]`].join(`, `),Y=[`.p-select-overlay`,`.p-autocomplete-overlay`,`.p-multiselect-overlay`,`.p-datepicker-panel`,`.p-cascadeselect-overlay`,`.p-treeselect-overlay`].join(`, `);function X(e,t={}){let n=()=>!t.enabled||t.enabled();function r(){let t=e.value;return t?Array.from(t.querySelectorAll(J)).filter(e=>e.getClientRects().length>0&&!e.hasAttribute(`data-kbd-skip`)):[]}function i(){n()&&(0,u.nextTick)(()=>{let e=r(),t=e.find(e=>e.tagName!==`BUTTON`)??e[0];if(!t)return;t.focus();let n=t;if(typeof n.select==`function`)try{n.select()}catch{}})}function a(e){if(!n()||e.key!==`Enter`||e.isComposing)return;let i=e.target;if(i.tagName===`TEXTAREA`||i.tagName===`BUTTON`||i.getAttribute(`aria-expanded`)===`true`||document.querySelector(Y))return;e.preventDefault();let a=r(),o=a.indexOf(i);if(o===-1)return;let s=a[o+1];s?s.focus():t.onSubmit?.()}return{focusFirst:i,handleKeydown:a}}Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return R}}),Object.defineProperty(exports,"c",{enumerable:!0,get:function(){return M}}),Object.defineProperty(exports,"d",{enumerable:!0,get:function(){return I}}),Object.defineProperty(exports,"f",{enumerable:!0,get:function(){return j}}),Object.defineProperty(exports,"g",{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,"h",{enumerable:!0,get:function(){return _}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return H}}),Object.defineProperty(exports,"l",{enumerable:!0,get:function(){return F}}),Object.defineProperty(exports,"m",{enumerable:!0,get:function(){return g}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return q}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return L}}),Object.defineProperty(exports,"p",{enumerable:!0,get:function(){return h}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return V}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return P}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return X}}),Object.defineProperty(exports,"u",{enumerable:!0,get:function(){return N}});
3
+ //# sourceMappingURL=useFormKeyboardNav-pw3m7oX4.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useFormKeyboardNav-pw3m7oX4.cjs","names":[],"sources":["../node_modules/dayjs/plugin/customParseFormat.js","../src/utils/dates.ts","../src/utils/masks.ts","../src/composables/useFormatters.ts","../src/utils/formRecord.ts","../src/composables/useAppToast.ts","../src/composables/useAppConfirm.ts","../src/composables/useApiError.ts","../src/composables/useDateInput.ts","../src/composables/useFormKeyboardNav.ts"],"sourcesContent":["!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_customParseFormat=t()}(this,(function(){\"use strict\";var e={LTS:\"h:mm:ss A\",LT:\"h:mm A\",L:\"MM/DD/YYYY\",LL:\"MMMM D, YYYY\",LLL:\"MMMM D, YYYY h:mm A\",LLLL:\"dddd, MMMM D, YYYY h:mm A\"},t=/(\\[[^[]*\\])|([-_:/.,()\\s]+)|(A|a|Q|YYYY|YY?|ww?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,n=/\\d/,r=/\\d\\d/,i=/\\d\\d?/,o=/\\d*[^-_:/,()\\s\\d]+/,s={},a=function(e){return(e=+e)+(e>68?1900:2e3)};var f=function(e){return function(t){this[e]=+t}},h=[/[+-]\\d\\d:?(\\d\\d)?|Z/,function(e){(this.zone||(this.zone={})).offset=function(e){if(!e)return 0;if(\"Z\"===e)return 0;var t=e.match(/([+-]|\\d\\d)/g),n=60*t[1]+(+t[2]||0);return 0===n?0:\"+\"===t[0]?-n:n}(e)}],u=function(e){var t=s[e];return t&&(t.indexOf?t:t.s.concat(t.f))},d=function(e,t){var n,r=s.meridiem;if(r){for(var i=1;i<=24;i+=1)if(e.indexOf(r(i,0,t))>-1){n=i>12;break}}else n=e===(t?\"pm\":\"PM\");return n},c={A:[o,function(e){this.afternoon=d(e,!1)}],a:[o,function(e){this.afternoon=d(e,!0)}],Q:[n,function(e){this.month=3*(e-1)+1}],S:[n,function(e){this.milliseconds=100*+e}],SS:[r,function(e){this.milliseconds=10*+e}],SSS:[/\\d{3}/,function(e){this.milliseconds=+e}],s:[i,f(\"seconds\")],ss:[i,f(\"seconds\")],m:[i,f(\"minutes\")],mm:[i,f(\"minutes\")],H:[i,f(\"hours\")],h:[i,f(\"hours\")],HH:[i,f(\"hours\")],hh:[i,f(\"hours\")],D:[i,f(\"day\")],DD:[r,f(\"day\")],Do:[o,function(e){var t=s.ordinal,n=e.match(/\\d+/);if(this.day=n[0],t)for(var r=1;r<=31;r+=1)t(r).replace(/\\[|\\]/g,\"\")===e&&(this.day=r)}],w:[i,f(\"week\")],ww:[r,f(\"week\")],M:[i,f(\"month\")],MM:[r,f(\"month\")],MMM:[o,function(e){var t=u(\"months\"),n=(u(\"monthsShort\")||t.map((function(e){return e.slice(0,3)}))).indexOf(e)+1;if(n<1)throw new Error;this.month=n%12||n}],MMMM:[o,function(e){var t=u(\"months\").indexOf(e)+1;if(t<1)throw new Error;this.month=t%12||t}],Y:[/[+-]?\\d+/,f(\"year\")],YY:[r,function(e){this.year=a(e)}],YYYY:[/\\d{4}/,f(\"year\")],Z:h,ZZ:h};function l(n){var r,i;r=n,i=s&&s.formats;for(var o=(n=r.replace(/(\\[[^\\]]+])|(LTS?|l{1,4}|L{1,4})/g,(function(t,n,r){var o=r&&r.toUpperCase();return n||i[r]||e[r]||i[o].replace(/(\\[[^\\]]+])|(MMMM|MM|DD|dddd)/g,(function(e,t,n){return t||n.slice(1)}))}))).match(t),a=o.length,f=0;f<a;f+=1){var h=o[f],u=c[h],d=u&&u[0],l=u&&u[1];o[f]=l?{regex:d,parser:l}:h.replace(/^\\[|\\]$/g,\"\")}return function(e){for(var t={},n=0,r=0;n<a;n+=1){var i=o[n];if(\"string\"==typeof i)r+=i.length;else{var s=i.regex,f=i.parser,h=e.slice(r),u=s.exec(h)[0];f.call(t,u),e=e.replace(u,\"\")}}return function(e){var t=e.afternoon;if(void 0!==t){var n=e.hours;t?n<12&&(e.hours+=12):12===n&&(e.hours=0),delete e.afternoon}}(t),t}}return function(e,t,n){n.p.customParseFormat=!0,e&&e.parseTwoDigitYear&&(a=e.parseTwoDigitYear);var r=t.prototype,i=r.parse;r.parse=function(e){var t=e.date,r=e.utc,o=e.args;this.$u=r;var a=o[1];if(\"string\"==typeof a){var f=!0===o[2],h=!0===o[3],u=f||h,d=o[2];h&&(d=o[2]),s=this.$locale(),!f&&d&&(s=n.Ls[d]),this.$d=function(e,t,n,r){try{if([\"x\",\"X\"].indexOf(t)>-1)return new Date((\"X\"===t?1e3:1)*e);var i=l(t)(e),o=i.year,s=i.month,a=i.day,f=i.hours,h=i.minutes,u=i.seconds,d=i.milliseconds,c=i.zone,m=i.week,M=new Date,Y=a||(o||s?1:M.getDate()),p=o||M.getFullYear(),v=0;o&&!s||(v=s>0?s-1:M.getMonth());var D,w=f||0,g=h||0,y=u||0,L=d||0;return c?new Date(Date.UTC(p,v,Y,w,g,y,L+60*c.offset*1e3)):n?new Date(Date.UTC(p,v,Y,w,g,y,L)):(D=new Date(p,v,Y,w,g,y,L),m&&(D=r(D).week(m).toDate()),D)}catch(e){return new Date(\"\")}}(t,a,r,n),this.init(),d&&!0!==d&&(this.$L=this.locale(d).$L),u&&t!=this.format(a)&&(this.$d=new Date(\"\")),s={}}else if(a instanceof Array)for(var c=a.length,m=1;m<=c;m+=1){o[1]=a[m-1];var M=n.apply(this,o);if(M.isValid()){this.$d=M.$d,this.$L=M.$L,this.init();break}m===c&&(this.$d=new Date(\"\"))}else i.call(this,e)}}}));","import dayjs from 'dayjs'\nimport customParseFormat from 'dayjs/plugin/customParseFormat'\n\ndayjs.extend(customParseFormat)\n\nexport function parseDate(value: string | Date | null | undefined): Date | null {\n if (!value) return null\n if (value instanceof Date) return value\n const d = dayjs(value, 'YYYY-MM-DD', true)\n return d.isValid() ? d.toDate() : dayjs(value).toDate()\n}\n\nexport function toDateString(value: Date | string | null | undefined): string | null {\n if (!value) return null\n if (typeof value === 'string') return value\n return dayjs(value).format('YYYY-MM-DD')\n}\n\nexport function toDateTimeString(value: Date | string | null | undefined): string | null {\n if (!value) return null\n if (typeof value === 'string') return value\n return dayjs(value).toISOString()\n}\n\nexport function formatDateValue(\n value: string | Date | null | undefined,\n format = 'DD/MM/YYYY',\n): string {\n if (!value) return '—'\n return dayjs(value).format(format)\n}\n\nexport function formatDateTimeValue(value: string | Date | null | undefined): string {\n if (!value) return '—'\n return dayjs(value).format('DD/MM/YYYY HH:mm')\n}\n","export function stripMask(value: string): string {\n return value.replace(/\\D/g, '')\n}\n\nexport function formatCpf(value: string | null | undefined): string {\n if (!value) return '—'\n const digits = stripMask(value)\n if (digits.length !== 11) return value\n return digits.replace(/^(\\d{3})(\\d{3})(\\d{3})(\\d{2})$/, '$1.$2.$3-$4')\n}\n\nexport function formatCnpj(value: string | null | undefined): string {\n if (!value) return '—'\n const digits = stripMask(value)\n if (digits.length !== 14) return value\n return digits.replace(/^(\\d{2})(\\d{3})(\\d{3})(\\d{4})(\\d{2})$/, '$1.$2.$3/$4-$5')\n}\n\nexport function formatCpfCnpj(value: string | null | undefined): string {\n if (!value) return '—'\n const digits = stripMask(value)\n if (digits.length === 11) return formatCpf(value)\n if (digits.length === 14) return formatCnpj(value)\n return value\n}\n\nexport function formatTelefone(value: string | null | undefined): string {\n if (!value) return '—'\n const digits = stripMask(value)\n if (digits.length === 11) return digits.replace(/^(\\d{2})(\\d{5})(\\d{4})$/, '($1) $2-$3')\n if (digits.length === 10) return digits.replace(/^(\\d{2})(\\d{4})(\\d{4})$/, '($1) $2-$3')\n return value\n}\n\nexport function validateCpf(value: string | null | undefined): string | null {\n if (!value) return null\n const cpf = stripMask(value)\n if (cpf.length !== 11) return 'CPF deve ter 11 dígitos.'\n if (/^(\\d)\\1{10}$/.test(cpf)) return 'CPF inválido.'\n let soma = 0\n for (let i = 0; i < 9; i++) soma += parseInt(cpf[i]) * (10 - i)\n let resto = soma % 11\n const d1 = resto < 2 ? 0 : 11 - resto\n if (parseInt(cpf[9]) !== d1) return 'CPF inválido.'\n soma = 0\n for (let i = 0; i < 10; i++) soma += parseInt(cpf[i]) * (11 - i)\n resto = soma % 11\n const d2 = resto < 2 ? 0 : 11 - resto\n if (parseInt(cpf[10]) !== d2) return 'CPF inválido.'\n return null\n}\n\nexport function validateCnpj(value: string | null | undefined): string | null {\n if (!value) return null\n const cnpj = stripMask(value)\n if (cnpj.length !== 14) return 'CNPJ deve ter 14 dígitos.'\n if (/^(\\d)\\1{13}$/.test(cnpj)) return 'CNPJ inválido.'\n const pesos1 = [5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2]\n let soma = 0\n for (let i = 0; i < 12; i++) soma += parseInt(cnpj[i]) * pesos1[i]\n let resto = soma % 11\n const d1 = resto < 2 ? 0 : 11 - resto\n if (parseInt(cnpj[12]) !== d1) return 'CNPJ inválido.'\n const pesos2 = [6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2]\n soma = 0\n for (let i = 0; i < 13; i++) soma += parseInt(cnpj[i]) * pesos2[i]\n resto = soma % 11\n const d2 = resto < 2 ? 0 : 11 - resto\n if (parseInt(cnpj[13]) !== d2) return 'CNPJ inválido.'\n return null\n}\n\nexport function validateCpfCnpj(value: string | null | undefined): string | null {\n if (!value) return null\n const digits = stripMask(value)\n if (digits.length === 11) return validateCpf(value)\n if (digits.length === 14) return validateCnpj(value)\n return 'CPF deve ter 11 dígitos ou CNPJ deve ter 14 dígitos.'\n}\n","import { inject } from 'vue'\nimport { W_CONFIG_KEY } from '@/types/plugin'\nimport type { WPluginConfig } from '@/types/plugin'\nimport {\n formatDateValue,\n formatDateTimeValue,\n parseDate,\n toDateString,\n toDateTimeString,\n} from '@/utils/dates'\nimport {\n formatCpf,\n formatCnpj,\n formatCpfCnpj,\n formatTelefone,\n validateCpf,\n validateCnpj,\n validateCpfCnpj,\n} from '@/utils/masks'\n\nconst numberFormatters = new Map<string, Intl.NumberFormat>()\n\nfunction getNumberFormatter(locale: string, decimals: number): Intl.NumberFormat {\n const key = `${locale}-${decimals}`\n let fmt = numberFormatters.get(key)\n if (!fmt) {\n fmt = new Intl.NumberFormat(locale, {\n minimumFractionDigits: decimals,\n maximumFractionDigits: decimals,\n })\n numberFormatters.set(key, fmt)\n }\n return fmt\n}\n\nfunction getCurrencyFormatter(locale: string, currency: string): Intl.NumberFormat {\n const key = `${locale}-${currency}`\n let fmt = numberFormatters.get(key)\n if (!fmt) {\n fmt = new Intl.NumberFormat(locale, {\n style: 'currency',\n currency,\n })\n numberFormatters.set(key, fmt)\n }\n return fmt\n}\n\nexport function useFormatters() {\n const config = inject<WPluginConfig>(W_CONFIG_KEY, {\n defaultPageSize: 20,\n dateFormat: 'DD/MM/YYYY',\n dateTimeFormat: 'DD/MM/YYYY HH:mm',\n locale: 'pt-BR',\n currency: 'BRL',\n } as WPluginConfig)\n\n const locale = config?.locale ?? 'pt-BR'\n const currencyCode = config?.currency ?? 'BRL'\n\n function formatCurrency(value: number | null | undefined): string {\n if (value == null) return '—'\n return getCurrencyFormatter(locale, currencyCode).format(value)\n }\n\n function formatNumber(value: number | null | undefined, decimals = 2): string {\n if (value == null) return '—'\n return getNumberFormatter(locale, decimals).format(value)\n }\n\n function formatDate(value: string | Date | null | undefined, format?: string): string {\n return formatDateValue(value, format ?? config?.dateFormat ?? 'DD/MM/YYYY')\n }\n\n function formatDateTime(value: string | Date | null | undefined): string {\n return formatDateTimeValue(value)\n }\n\n function formatPercent(value: number | null | undefined): string {\n if (value == null) return '—'\n return `${getNumberFormatter(locale, 2).format(value)}%`\n }\n\n return {\n formatCurrency,\n formatNumber,\n formatDate,\n formatDateTime,\n formatPercent,\n formatCpf,\n formatCnpj,\n formatCpfCnpj,\n formatTelefone,\n validateCpf,\n validateCnpj,\n validateCpfCnpj,\n parseDate,\n toDateString,\n toDateTimeString,\n }\n}\n","/**\n * Regras de formulário que independem de onde o registro é gravado.\n *\n * Nasceram dentro do `useCrudManager` (que grava numa API) e saíram para cá quando o\n * `useSubviewCrud` passou a precisar das mesmas: um form é um form, o destino do\n * payload é que muda. Manter uma cópia em cada manager faria as duas divergirem no\n * primeiro `FieldType` novo.\n */\nimport type { FieldDef } from '@/types/field'\nimport { parseDate, toDateString, toDateTimeString } from './dates'\nimport { stripMask } from './masks'\n\n/** Valor inicial de cada campo: `defaultValue` (avaliado, se função) ou `null`. */\nexport function getFieldDefaults(fields: FieldDef[]): Record<string, unknown> {\n const defaults: Record<string, unknown> = {}\n for (const f of fields) {\n defaults[f.field] =\n f.defaultValue !== undefined\n ? typeof f.defaultValue === 'function'\n ? (f.defaultValue as () => unknown)()\n : f.defaultValue\n : null\n }\n return defaults\n}\n\n/**\n * Lê um registro existente para dentro do form.\n *\n * Data vem do servidor como string e o `WDatePicker` trabalha com `Date` — por isso a\n * volta por `parseDate`. Devolve o snapshot dos valores carregados, que o chamador usa\n * como base do diff quando quiser mandar só o que mudou.\n */\nexport function loadItemIntoRecord(\n item: Record<string, unknown>,\n fields: FieldDef[],\n target: Record<string, unknown>,\n): Record<string, unknown> {\n const snapshot: Record<string, unknown> = {}\n for (const f of fields) {\n let value = item[f.field] !== undefined ? item[f.field] : null\n if (value && (f.type === 'date' || f.type === 'datetime') && typeof value === 'string') {\n value = parseDate(value)\n }\n target[f.field] = value\n snapshot[f.field] = value\n }\n return snapshot\n}\n\n/**\n * Converte o form no registro que vai ser gravado: data vira string, FK vira id, campo\n * mascarado perde a máscara. Devolve objeto novo — o form não é tocado.\n */\nexport function convertFormRecord(\n record: Record<string, unknown>,\n fields: FieldDef[],\n): Record<string, unknown> {\n const out: Record<string, unknown> = { ...record }\n for (const f of fields) {\n const val = out[f.field]\n\n // Datas\n if (f.type === 'date' && val instanceof Date) {\n out[f.field] = toDateString(val)\n } else if (f.type === 'datetime' && val instanceof Date) {\n out[f.field] = toDateTimeString(val)\n }\n\n // FK — extrair o ID do objeto selecionado\n if (f.type === 'fk' && val !== null && typeof val === 'object') {\n const key = f.optionValue || 'id'\n out[f.field] = (val as Record<string, unknown>)[key] ?? val\n }\n\n // Máscaras — strip para gravar só dígitos\n if ((f.type === 'mask' || f.type === 'cpf_cnpj') && typeof val === 'string') {\n out[f.field] = stripMask(val)\n }\n }\n return out\n}\n\n/** Resolve `visible` do campo (boolean ou função) para o estado atual do form. */\nexport function isFieldVisible(\n field: FieldDef,\n formData: Record<string, unknown>,\n isEditing = false,\n): boolean {\n if (field.visible === undefined || field.visible === true) return true\n if (typeof field.visible === 'function') return field.visible(formData, isEditing)\n return field.visible\n}\n\n/**\n * Primeira mensagem de erro do form, ou `null` se está tudo certo.\n *\n * Campo oculto (`visible` falso para o form atual) não é validado: o usuário não\n * tem como preenchê-lo, então `required`/`validate` dele não podem barrar o save.\n *\n * A ordem importa: o `validate` do campo vence a obrigatoriedade, para a mensagem\n * específica (\"CNPJ inválido\") aparecer no lugar da genérica.\n */\nexport function validateFormRecord(\n fields: FieldDef[],\n formData: Record<string, unknown>,\n isEditing = false,\n): string | null {\n for (const f of fields) {\n if (!isFieldVisible(f, formData, isEditing)) continue\n if (f.validate) {\n const result = f.validate(formData[f.field])\n if (result) return result\n }\n if (f.required) {\n const val = formData[f.field]\n if (val === null || val === undefined || val === '') {\n return `${f.label} é obrigatório`\n }\n }\n }\n return null\n}\n","import { useToast } from 'primevue/usetoast'\n\nexport function useAppToast() {\n const toast = useToast()\n\n function success(message: string, title = 'Sucesso') {\n toast.add({ severity: 'success', summary: title, detail: message, life: 3000 })\n }\n\n function error(message: string, title = 'Erro') {\n toast.add({ severity: 'error', summary: title, detail: message, life: 5000 })\n }\n\n function warn(message: string, title = 'Atenção') {\n toast.add({ severity: 'warn', summary: title, detail: message, life: 4000 })\n }\n\n function info(message: string, title = 'Info') {\n toast.add({ severity: 'info', summary: title, detail: message, life: 3000 })\n }\n\n return { success, error, warn, info }\n}\n","import { useConfirm } from 'primevue/useconfirm'\nimport { useTabHost } from '@/types/routeTabs'\n\nexport function useAppConfirm() {\n const confirm = useConfirm()\n // Dentro da navegação por abas, o confirm pendura no pane da própria aba\n // (some e volta com ela); fora de abas, o body de sempre. O ConfirmDialog\n // global continua único — só a âncora muda, por confirmação.\n const tabHost = useTabHost()\n const appendTo = () => tabHost?.hostEl.value ?? 'body'\n\n function confirmDelete(\n onAccept: () => void,\n message = 'Deseja realmente excluir este registro?',\n ) {\n confirm.require({\n appendTo: appendTo(),\n message,\n header: 'Confirmar Exclusão',\n icon: 'pi pi-trash',\n rejectLabel: 'Cancelar',\n rejectProps: {\n severity: 'secondary',\n text: true,\n },\n acceptLabel: 'Excluir',\n acceptProps: {\n severity: 'danger',\n },\n accept: onAccept,\n })\n }\n\n function confirmAction(message: string, onAccept: () => void, header = 'Confirmação') {\n confirm.require({\n appendTo: appendTo(),\n message,\n header,\n icon: 'pi pi-question-circle',\n rejectLabel: 'Cancelar',\n rejectProps: {\n severity: 'secondary',\n text: true,\n },\n acceptLabel: 'Confirmar',\n accept: onAccept,\n })\n }\n\n return { confirmDelete, confirmAction }\n}\n","function formatFieldName(field: string): string {\n return field.replace(/_/g, ' ').replace(/^\\w/, (c) => c.toUpperCase())\n}\n\nfunction extractMessage(detail: unknown): string | null {\n if (typeof detail === 'string') {\n return detail\n }\n\n if (Array.isArray(detail)) {\n const messages = detail.filter((item) => typeof item === 'string')\n return messages.length > 0 ? messages.join(' ') : null\n }\n\n if (typeof detail === 'object' && detail !== null) {\n const obj = detail as Record<string, unknown>\n\n if (Array.isArray(obj.non_field_errors) && obj.non_field_errors.length > 0) {\n return obj.non_field_errors.filter((item: unknown) => typeof item === 'string').join(' ')\n }\n\n const messages: string[] = []\n for (const [key, value] of Object.entries(obj)) {\n if (key === 'non_field_errors') continue\n const label = formatFieldName(key)\n if (Array.isArray(value)) {\n const strs = value.filter((item: unknown) => typeof item === 'string')\n if (strs.length > 0) messages.push(`${label}: ${strs.join(' ')}`)\n } else if (typeof value === 'string') {\n messages.push(`${label}: ${value}`)\n }\n }\n return messages.length > 0 ? messages.join('\\n') : null\n }\n\n return null\n}\n\nexport function extractApiError(error: unknown, fallback = 'Erro inesperado'): string {\n if (!error || typeof error !== 'object') return fallback\n\n const axiosError = error as {\n response?: { data?: Record<string, unknown> }\n message?: string\n }\n const data = axiosError.response?.data\n\n if (!data || typeof data !== 'object') {\n return axiosError.message || fallback\n }\n\n const detail = data.detail ?? data\n return extractMessage(detail) || fallback\n}\n\nexport function useApiError() {\n return { extractApiError }\n}\n","import dayjs from 'dayjs'\nimport customParseFormat from 'dayjs/plugin/customParseFormat'\n\ndayjs.extend(customParseFormat)\n\n/**\n * Formato do valor emitido pelo WDatePicker:\n * - `'iso'` → string `YYYY-MM-DD` (ou `YYYY-MM-DDTHH:mm:ss` com hora). Ideal p/ API.\n * - `'date'` → objeto `Date` (compatível com o contrato atual do useCrudManager).\n */\nexport type DateValueFormat = 'iso' | 'date'\n\nconst DISPLAY_DATE = 'DD/MM/YYYY'\nconst DISPLAY_DATETIME = 'DD/MM/YYYY HH:mm'\nconst ISO_DATE = 'YYYY-MM-DD'\nconst ISO_DATETIME = 'YYYY-MM-DDTHH:mm:ss'\n\nexport interface UseDateInputOptions {\n /** Reativo: se o campo inclui hora (datetime). */\n showTime?: () => boolean\n /** Reativo: formato do valor emitido (default `'iso'`). */\n valueFormat?: () => DateValueFormat\n}\n\n/**\n * Lógica pura de parse/format/máscara para inputs de data em pt-BR.\n *\n * Timezone-safe: parse e format usam sempre os componentes LOCAIS via dayjs\n * (nunca `toISOString`, que converte p/ UTC e causa off-by-one em fusos negativos).\n * Sem estado reativo próprio — apenas funções; o componente cuida da reatividade.\n */\nexport function useDateInput(opts: UseDateInputOptions = {}) {\n const withTime = () => opts.showTime?.() ?? false\n const displayFormat = () => (withTime() ? DISPLAY_DATETIME : DISPLAY_DATE)\n const mask = () => (withTime() ? '##/##/#### ##:##' : '##/##/####')\n const placeholder = () => (withTime() ? 'dd/mm/aaaa hh:mm' : 'dd/mm/aaaa')\n\n /** Valor de entrada (string ISO ou Date) → `Date` local, ou `null` se inválido. */\n function toDate(value: unknown): Date | null {\n if (value == null || value === '') return null\n if (value instanceof Date) return isNaN(value.getTime()) ? null : value\n if (typeof value === 'string') {\n // Aceita YYYY-MM-DD estrito primeiro (data pura, meia-noite local)…\n const dateOnly = dayjs(value, ISO_DATE, true)\n if (dateOnly.isValid()) return dateOnly.toDate()\n // …senão qualquer ISO datetime válido (dayjs interpreta como local).\n const any = dayjs(value)\n return any.isValid() ? any.toDate() : null\n }\n return null\n }\n\n /** `Date` → valor emitido, respeitando `valueFormat` (default string ISO). */\n function toValue(date: Date | null): string | Date | null {\n if (!date) return null\n if ((opts.valueFormat?.() ?? 'iso') === 'date') return date\n return dayjs(date).format(withTime() ? ISO_DATETIME : ISO_DATE)\n }\n\n /** `Date` → texto de exibição `DD/MM/YYYY[ HH:mm]`. */\n function toDisplay(date: Date | null): string {\n if (!date) return ''\n return dayjs(date).format(displayFormat())\n }\n\n /** Texto digitado (`30/05/1988`) → `Date`, ou `null` se incompleto/inválido. */\n function fromDisplay(text: string): Date | null {\n if (!text) return null\n const d = dayjs(text, displayFormat(), true)\n return d.isValid() ? d.toDate() : null\n }\n\n /** Hoje: date-only zera a hora; datetime mantém a hora atual. */\n function today(): Date {\n return withTime() ? new Date() : dayjs().startOf('day').toDate()\n }\n\n return { toDate, toValue, toDisplay, fromDisplay, today, mask, placeholder, displayFormat }\n}\n","import { nextTick, type Ref } from 'vue'\n\n/**\n * Navegação por teclado em formulários, estilo aplicação desktop (DevExpress):\n * - `focusFirst()` posiciona o foco no primeiro campo ativo (e seleciona o texto).\n * - `handleKeydown` faz o Enter pular para o próximo campo, até o botão de salvar.\n *\n * Sem watchers nem addEventListener manual: o `handleKeydown` é bindado via\n * `@keydown` no container (o Vue gerencia o listener) e `focusFirst` é chamado\n * no `@show` do Dialog. Shift+Tab / Tab continuam nativos.\n *\n * Regras do Enter (para não atrapalhar a semântica de cada componente):\n * - `textarea` → Enter é quebra de linha (não pula).\n * - `button` → Enter é o clique/submit nativo (não pula).\n * - overlay de dropdown aberto (Select/AutoComplete/DatePicker/MultiSelect) →\n * Enter seleciona o item; só o Enter seguinte pula o foco.\n * - marque um elemento com `data-kbd-skip` para excluí-lo da sequência (ex.: o\n * botão Cancelar, para o Enter ir direto ao Salvar).\n */\n\n// Elementos que recebem foco por tabulação.\nconst FOCUSABLE = [\n 'input:not([type=\"hidden\"]):not([disabled])',\n 'textarea:not([disabled])',\n 'select:not([disabled])',\n 'button:not([disabled])',\n '[tabindex]:not([tabindex=\"-1\"])',\n '[contenteditable=\"true\"]',\n].join(', ')\n\n// Painéis de dropdown do PrimeVue: quando presentes, o Enter deve selecionar.\nconst OPEN_OVERLAY = [\n '.p-select-overlay',\n '.p-autocomplete-overlay',\n '.p-multiselect-overlay',\n '.p-datepicker-panel',\n '.p-cascadeselect-overlay',\n '.p-treeselect-overlay',\n].join(', ')\n\nexport interface FormKeyboardNavOptions {\n /** Liga/desliga a navegação (default: sempre ligada). */\n enabled?: () => boolean\n /** Chamado quando o Enter passa do último elemento sem próximo foco. */\n onSubmit?: () => void\n}\n\nexport function useFormKeyboardNav(\n container: Ref<HTMLElement | null>,\n options: FormKeyboardNavOptions = {},\n) {\n const isEnabled = () => (options.enabled ? options.enabled() : true)\n\n function focusables(): HTMLElement[] {\n const root = container.value\n if (!root) return []\n return Array.from(root.querySelectorAll<HTMLElement>(FOCUSABLE)).filter(\n (el) => el.getClientRects().length > 0 && !el.hasAttribute('data-kbd-skip'),\n )\n }\n\n function focusFirst(): void {\n if (!isEnabled()) return\n nextTick(() => {\n const els = focusables()\n const first = els.find((el) => el.tagName !== 'BUTTON') ?? els[0]\n if (!first) return\n first.focus()\n // Seleciona o conteúdo de inputs de texto para facilitar sobrescrever.\n const input = first as HTMLInputElement\n if (typeof input.select === 'function') {\n try {\n input.select()\n } catch {\n /* nem todo input suporta select() */\n }\n }\n })\n }\n\n function handleKeydown(e: KeyboardEvent): void {\n if (!isEnabled() || e.key !== 'Enter' || e.isComposing) return\n const target = e.target as HTMLElement\n if (target.tagName === 'TEXTAREA' || target.tagName === 'BUTTON') return\n // Dropdown aberto → deixa o componente tratar o Enter (selecionar item).\n if (target.getAttribute('aria-expanded') === 'true') return\n if (document.querySelector(OPEN_OVERLAY)) return\n\n e.preventDefault()\n const els = focusables()\n const i = els.indexOf(target)\n if (i === -1) return\n const next = els[i + 1]\n if (next) next.focus()\n else options.onSubmit?.()\n }\n\n return { focusFirst, handleKeydown }\n}\n"],"x_google_ignoreList":[0],"mappings":"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"}
@@ -14,10 +14,15 @@ export declare function loadItemIntoRecord(item: Record<string, unknown>, fields
14
14
  * mascarado perde a máscara. Devolve objeto novo — o form não é tocado.
15
15
  */
16
16
  export declare function convertFormRecord(record: Record<string, unknown>, fields: FieldDef[]): Record<string, unknown>;
17
+ /** Resolve `visible` do campo (boolean ou função) para o estado atual do form. */
18
+ export declare function isFieldVisible(field: FieldDef, formData: Record<string, unknown>, isEditing?: boolean): boolean;
17
19
  /**
18
20
  * Primeira mensagem de erro do form, ou `null` se está tudo certo.
19
21
  *
22
+ * Campo oculto (`visible` falso para o form atual) não é validado: o usuário não
23
+ * tem como preenchê-lo, então `required`/`validate` dele não podem barrar o save.
24
+ *
20
25
  * A ordem importa: o `validate` do campo vence a obrigatoriedade, para a mensagem
21
26
  * específica ("CNPJ inválido") aparecer no lugar da genérica.
22
27
  */
23
- export declare function validateFormRecord(fields: FieldDef[], formData: Record<string, unknown>): string | null;
28
+ export declare function validateFormRecord(fields: FieldDef[], formData: Record<string, unknown>, isEditing?: boolean): string | null;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wgalleti/primevue-components",
3
- "version": "0.23.0",
3
+ "version": "0.26.0",
4
4
  "type": "module",
5
5
  "license": "MIT",
6
6
  "publishConfig": {