@wgalleti/primevue-components 0.4.0 → 0.5.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.
@@ -1,7 +1,12 @@
1
1
  import { KpiItem } from '../../types/crud';
2
2
  type __VLS_Props = {
3
3
  items?: KpiItem[];
4
- columns?: 2 | 3 | 4;
4
+ /**
5
+ * Número fixo de colunas (2–6) ou 'auto' para preencher a largura com quantos
6
+ * KPIs couberem (responsivo, sem overflow). Use 'auto' em dashboards que devem
7
+ * aproveitar o máximo da tela.
8
+ */
9
+ columns?: 2 | 3 | 4 | 5 | 6 | 'auto';
5
10
  dense?: boolean;
6
11
  };
7
12
  declare function __VLS_template(): {
@@ -18,7 +23,7 @@ declare function __VLS_template(): {
18
23
  };
19
24
  type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
20
25
  declare const __VLS_component: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
21
- columns: 2 | 3 | 4;
26
+ columns: 2 | 3 | 4 | 5 | 6 | "auto";
22
27
  items: KpiItem[];
23
28
  dense: boolean;
24
29
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
package/dist/index.cjs CHANGED
@@ -9,5 +9,5 @@
9
9
  * vue-router v4.6.4
10
10
  * (c) 2025 Eduardo San Martin Morote
11
11
  * @license MIT
12
- */function Za(){return e.inject(Ja)}const Xa={class:"w-detail-header"},Qa={class:"w-detail-header-left"},_a={class:"w-detail-header-content"},en={class:"w-detail-header-title"},tn={key:0,class:"w-detail-header-subtitle"},on={class:"w-detail-header-actions"},an=e.defineComponent({__name:"WDetailHeader",props:{title:{},subtitle:{},icon:{},backRoute:{},backTo:{},status:{},statusMap:{}},setup(t){const o=t,a=Za();function n(){o.backTo?a.push(typeof o.backTo=="string"?{name:o.backTo}:o.backTo):o.backRoute?a.push({name:o.backRoute}):a.back()}return(r,s)=>(e.openBlock(),e.createElementBlock("div",Xa,[e.createElementVNode("div",Qa,[e.createVNode(e.unref(U),{icon:"pi pi-arrow-left",text:"",rounded:"",onClick:n}),t.icon?(e.openBlock(),e.createElementBlock("i",{key:0,class:e.normalizeClass([t.icon,"w-detail-header-icon"])},null,2)):e.createCommentVNode("",!0),e.createElementVNode("div",_a,[e.createElementVNode("h2",en,e.toDisplayString(t.title),1),t.subtitle?(e.openBlock(),e.createElementBlock("p",tn,e.toDisplayString(t.subtitle),1)):e.createCommentVNode("",!0)]),t.status?(e.openBlock(),e.createBlock(Ct,{key:1,value:t.status,map:t.statusMap},null,8,["value","map"])):e.createCommentVNode("",!0)]),e.createElementVNode("div",on,[e.renderSlot(r.$slots,"actions")])]))}}),nn={class:"w-info-card"},ln={key:0,class:"w-info-card-title"},rn={class:"w-info-card-grid"},sn={class:"w-info-card-label"},cn={class:"w-info-card-value"},un=e.defineComponent({__name:"WInfoCard",props:{title:{},fields:{}},setup(t){const{formatCurrency:o,formatDate:a,formatNumber:n}=ze();function r(s){const c=s.value;return c==null||c===""?"-":s.format==="currency"?o(Number(c)):s.format==="date"?a(String(c)):s.format==="datetime"?a(String(c),"DD/MM/YYYY HH:mm"):s.format==="number"?n(Number(c)):String(c)}return(s,c)=>(e.openBlock(),e.createElementBlock("div",nn,[t.title?(e.openBlock(),e.createElementBlock("h3",ln,e.toDisplayString(t.title),1)):e.createCommentVNode("",!0),e.createElementVNode("div",rn,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.fields,g=>(e.openBlock(),e.createElementBlock("div",{key:g.label,class:"w-info-card-field"},[e.createElementVNode("span",sn,e.toDisplayString(g.label),1),e.createElementVNode("span",cn,e.toDisplayString(r(g)),1)]))),128))])]))}}),dn={key:0,class:"w-kpi-card__loading"},mn={class:"w-kpi-card__loading-content"},fn={class:"w-kpi-card__header"},pn={key:0,class:"w-kpi-card__icon"},vn={key:1,class:"w-kpi-card__trend"},gn={class:"w-kpi-card__content"},hn={class:"w-kpi-card__label"},kn={class:"w-kpi-card__value"},yn={key:0,class:"w-kpi-card__hint"},bn={key:0,class:"w-kpi-card__footer"},Vt=e.defineComponent({__name:"WKpiCard",props:{label:{},value:{},icon:{},hint:{},severity:{},trend:{},loading:{type:Boolean}},setup(t){return(o,a)=>(e.openBlock(),e.createElementBlock("article",{class:e.normalizeClass(["w-kpi-card",t.severity?`w-kpi-card--${t.severity}`:""])},[t.loading?(e.openBlock(),e.createElementBlock("div",dn,[e.createVNode(e.unref(Pe),{shape:"circle",size:"2.75rem"}),e.createElementVNode("div",mn,[e.createVNode(e.unref(Pe),{width:"6rem",height:"0.75rem"}),e.createVNode(e.unref(Pe),{width:"7.5rem",height:"1.5rem"}),e.createVNode(e.unref(Pe),{width:"5rem",height:"0.75rem"})])])):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createElementVNode("div",fn,[t.icon||o.$slots.icon?(e.openBlock(),e.createElementBlock("div",pn,[e.renderSlot(o.$slots,"icon",{},()=>[t.icon?(e.openBlock(),e.createElementBlock("i",{key:0,class:e.normalizeClass(t.icon)},null,2)):e.createCommentVNode("",!0)])])):e.createCommentVNode("",!0),t.trend||o.$slots.trend?(e.openBlock(),e.createElementBlock("div",vn,[e.renderSlot(o.$slots,"trend",{},()=>[t.trend?(e.openBlock(),e.createElementBlock("span",{key:0,class:e.normalizeClass(["w-kpi-card__trend-badge",t.trend.direction?`w-kpi-card__trend-badge--${t.trend.direction}`:""])},e.toDisplayString(t.trend.value),3)):e.createCommentVNode("",!0)])])):e.createCommentVNode("",!0)]),e.createElementVNode("div",gn,[e.createElementVNode("p",hn,e.toDisplayString(t.label),1),e.createElementVNode("div",kn,[e.renderSlot(o.$slots,"value",{},()=>[e.createTextVNode(e.toDisplayString(t.value),1)])]),t.hint||o.$slots.hint?(e.openBlock(),e.createElementBlock("p",yn,[e.renderSlot(o.$slots,"hint",{},()=>[e.createTextVNode(e.toDisplayString(t.hint),1)])])):e.createCommentVNode("",!0)]),o.$slots.footer?(e.openBlock(),e.createElementBlock("footer",bn,[e.renderSlot(o.$slots,"footer")])):e.createCommentVNode("",!0)],64))],2))}}),wn=e.defineComponent({__name:"WKpiGrid",props:{items:{default:()=>[]},columns:{default:4},dense:{type:Boolean,default:!1}},setup(t){const o=t,a=e.computed(()=>[`w-kpi-grid--cols-${o.columns}`,{"w-kpi-grid--dense":o.dense}]);return(n,r)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["w-kpi-grid",a.value])},[n.$slots.item?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(t.items,(s,c)=>e.renderSlot(n.$slots,"item",{key:c,item:s,index:c})),128)):(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:1},e.renderList(t.items,(s,c)=>(e.openBlock(),e.createBlock(Vt,{key:c,label:s.label,value:s.value,icon:s.icon,severity:s.severity||"primary",hint:s.hint,trend:s.trend,loading:s.loading},null,8,["label","value","icon","severity","hint","trend","loading"]))),128))],2))}}),Bn={class:"w-section-header__main"},Cn={key:0,class:"w-section-header__icon"},Vn={class:"w-section-header__content"},En={class:"w-section-header__title-row"},$n={class:"w-section-header__title"},Sn={key:0,class:"w-section-header__subtitle"},Nn={key:0,class:"w-section-header__actions"},Dn=e.defineComponent({__name:"WSectionHeader",props:{title:{},subtitle:{},icon:{},compact:{type:Boolean}},setup(t){return(o,a)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["w-section-header",{"w-section-header--compact":t.compact}])},[e.createElementVNode("div",Bn,[t.icon||o.$slots.icon?(e.openBlock(),e.createElementBlock("div",Cn,[e.renderSlot(o.$slots,"icon",{},()=>[t.icon?(e.openBlock(),e.createElementBlock("i",{key:0,class:e.normalizeClass(t.icon)},null,2)):e.createCommentVNode("",!0)])])):e.createCommentVNode("",!0),e.createElementVNode("div",Vn,[e.createElementVNode("div",En,[e.createElementVNode("h3",$n,e.toDisplayString(t.title),1),e.renderSlot(o.$slots,"meta")]),t.subtitle?(e.openBlock(),e.createElementBlock("p",Sn,e.toDisplayString(t.subtitle),1)):e.createCommentVNode("",!0)])]),o.$slots.actions?(e.openBlock(),e.createElementBlock("div",Nn,[e.renderSlot(o.$slots,"actions")])):e.createCommentVNode("",!0)],2))}}),xn={key:0,class:"w-form-section__header"},Pn={class:"w-form-section__content"},Fn={class:"w-form-section__title"},Mn={key:0,class:"w-form-section__description"},An={key:0,class:"w-form-section__actions"},zn={class:"w-form-section__body"},Rn=e.defineComponent({__name:"WFormSection",props:{title:{},description:{},variant:{}},setup(t){return(o,a)=>(e.openBlock(),e.createElementBlock("section",{class:e.normalizeClass(["w-form-section",t.variant?`w-form-section--${t.variant}`:""])},[t.title||t.description||o.$slots.actions?(e.openBlock(),e.createElementBlock("div",xn,[e.createElementVNode("div",Pn,[e.createElementVNode("h3",Fn,e.toDisplayString(t.title),1),t.description?(e.openBlock(),e.createElementBlock("p",Mn,e.toDisplayString(t.description),1)):e.createCommentVNode("",!0)]),o.$slots.actions?(e.openBlock(),e.createElementBlock("div",An,[e.renderSlot(o.$slots,"actions")])):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),e.createElementVNode("div",zn,[e.renderSlot(o.$slots,"default")])],2))}}),Ln={key:0,class:"w-action-bar__primary"},Tn={key:1,class:"w-action-bar__filters"},In={key:2,class:"w-action-bar__secondary"},Yn=e.defineComponent({__name:"WActionBar",props:{align:{default:"between"},stackOnMobile:{type:Boolean,default:!0}},setup(t){return(o,a)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["w-action-bar",[`w-action-bar--${t.align}`,{"w-action-bar--stack":t.stackOnMobile}]])},[o.$slots.primary||o.$slots.default?(e.openBlock(),e.createElementBlock("div",Ln,[e.renderSlot(o.$slots,"primary",{},()=>[e.renderSlot(o.$slots,"default")])])):e.createCommentVNode("",!0),o.$slots.filters?(e.openBlock(),e.createElementBlock("div",Tn,[e.renderSlot(o.$slots,"filters")])):e.createCommentVNode("",!0),o.$slots.secondary?(e.openBlock(),e.createElementBlock("div",In,[e.renderSlot(o.$slots,"secondary")])):e.createCommentVNode("",!0)],2))}}),On={class:"w-progress-flow__marker"},jn={class:"w-progress-flow__content"},Wn={class:"w-progress-flow__label"},Un={key:0,class:"w-progress-flow__description"},qn=e.defineComponent({__name:"WProgressFlow",props:{steps:{},currentStep:{},orientation:{default:"horizontal"}},setup(t){const o=t,a=e.computed(()=>o.steps.findIndex(r=>r.key===o.currentStep));function n(r){return r<a.value?"done":r===a.value?"current":"pending"}return(r,s)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["w-progress-flow",`w-progress-flow--${t.orientation}`])},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.steps,(c,g)=>(e.openBlock(),e.createElementBlock("div",{key:c.key,class:e.normalizeClass(["w-progress-flow__step",`w-progress-flow__step--${n(g)}`])},[e.renderSlot(r.$slots,"step",{step:c,index:g,state:n(g)},()=>[e.createElementVNode("div",On,[e.createElementVNode("span",null,e.toDisplayString(g+1),1)]),e.createElementVNode("div",jn,[e.createElementVNode("p",Wn,e.toDisplayString(c.label),1),c.description?(e.openBlock(),e.createElementBlock("p",Un,e.toDisplayString(c.description),1)):e.createCommentVNode("",!0)])])],2))),128))],2))}});function Hn(t,o,a){const n=t;return Array.isArray(n.results)?{data:n.results,page:n.page??o,page_size:n.page_size??a,rows:n.count??0,extras:n.extras??{}}:Array.isArray(n.data)?{data:n.data,page:n.page??o,page_size:n.page_size??a,rows:n.rows??0,extras:n.extras??{}}:{data:Array.isArray(t)?t:[],page:o,page_size:a,rows:Array.isArray(t)?t.length:0,extras:{}}}function Et(t){return{async list(o,a={}){const n=await t.get(o,{params:a});return Hn(n.data,Number(a.page??1),Number(a.page_size??20))},async get(o,a,n){return{data:(await t.get(`${o}${a}/`,n)).data}},async create(o,a,n){return{data:(await t.post(o,a,n)).data}},async update(o,a,n,r){return{data:(await t.patch(`${o}${a}/`,n,r)).data}},async delete(o,a){await t.delete(`${o}${a}/`)}}}const Kn={install(t,o){if(!(o!=null&&o.axios)&&!(o!=null&&o.dataProvider))throw new Error('[wPrimeVueComponents] Informe "axios" ou "dataProvider" ao registrar o WPrimeVuePlugin.');const a=o.dataProvider??Et(o.axios),n={axios:o.axios,dataProvider:a,defaultPageSize:o.defaultPageSize??20,dateFormat:o.dateFormat??"DD/MM/YYYY",dateTimeFormat:o.dateTimeFormat??"DD/MM/YYYY HH:mm",locale:o.locale??"pt-BR",currency:o.currency??"BRL"};o.axios&&t.provide(rt,o.axios),t.provide(De,a),t.provide(xe,n),o.registerComponents!==!1&&(t.component("WCrudView",Bt),t.component("WCrudFormDialog",Re),t.component("WCrudColumnRenderer",Ne),t.component("WAutoCompleteFK",je),t.component("WMoneyInput",We),t.component("WTransferList",Ue))}},$t={createTitle:"Novo Registro",editTitle:"Editar Registro",createButton:"Novo",saveButton:"Salvar",updateButton:"Atualizar",cancelButton:"Cancelar",deleteConfirmTitle:"Confirmar Exclusão",deleteConfirmMessage:"Deseja realmente excluir este registro?",searchPlaceholder:"Buscar...",emptyMessage:"Nenhum registro encontrado",successCreate:"Registro criado com sucesso",successUpdate:"Registro atualizado com sucesso",successDelete:"Registro excluído com sucesso"};function Gn(t,o){const a={};for(const n of Object.keys(o))JSON.stringify(t[n])!==JSON.stringify(o[n])&&(a[n]=o[n]);return a}function Jn(t){const{endpoint:o,columns:a,form:n,pk:r="id",searchDebounce:s=300,partialUpdate:c=!0,refetchOnSave:g=!0,canCreate:u=!0,canEdit:y=!0,canDelete:S=!0,rowActions:E=void 0,filterParams:M=void 0,createDefaults:D=void 0,transformPayload:L=void 0,onAfterSave:T=void 0,onAfterDelete:p=void 0}=t,k=e.inject(De);if(!k)throw new Error("[wPrimeVueComponents] dataProvider não encontrado. Registre o WPrimeVuePlugin antes de usar useCrudManager.");const b=k,C=e.inject(xe),A=t.pageSize??(C==null?void 0:C.defaultPageSize)??20,z={...$t,...t.labels},P=Ye(),{confirmDelete:R}=Oe(),F=e.ref([]),Y=e.ref({}),G=e.ref(!1),H=e.ref(!1),O=e.ref(""),I=e.ref(!1),j=e.ref(!1),m=e.ref(null),v=e.reactive({});let d=null;const i=e.reactive({page:1,pageSize:A,rows:0,totalPages:0}),f=e.reactive({field:null,order:0});function l(){const B={};for(const $ of n)B[$.field]=$.defaultValue!==void 0?typeof $.defaultValue=="function"?$.defaultValue():$.defaultValue:null;return B}const h=l();for(const B of Object.keys(h))v[B]=h[B];const K=e.computed(()=>m.value!==null&&!j.value),Q=e.computed(()=>j.value),ae=e.computed(()=>j.value?z.viewTitle??"Visualizar Registro":K.value?z.editTitle:z.createTitle),J=e.computed(()=>i.page<=1),Z=e.computed(()=>i.page>=i.totalPages);let te=null;async function X(B={}){G.value=!0;try{const $={page:i.page,page_size:i.pageSize,...B};O.value&&($.search=O.value),f.field&&f.order!==0&&($.ordering=f.order===-1?`-${f.field}`:f.field),M&&Object.assign($,M());const N=await b.list(o,$);F.value=N.data,i.rows=N.rows,Y.value=N.extras??{},N.page&&(i.page=N.page),N.page_size&&(i.pageSize=N.page_size),i.totalPages=Math.ceil(i.rows/i.pageSize)||0}finally{G.value=!1}}async function oe(){await X()}async function se(){await X()}async function fe(B=200){const $={};O.value&&($.search=O.value),f.field&&f.order!==0&&($.ordering=f.order===-1?`-${f.field}`:f.field),M&&Object.assign($,M());const N=[];let W=1;const ye=1e4;for(;W<=ye;){const re=await b.list(o,{...$,page:W,page_size:B});N.push(...re.data);const ne=re.rows??N.length;if(re.data.length===0||N.length>=ne)break;W++}return N}function ce(B){O.value=B,te&&clearTimeout(te),te=setTimeout(()=>{i.page=1,X()},s)}function pe(B){const $=B.target;ce($.value)}function le(B){i.page=B,X()}function ue(){le(1)}function ve(){le(i.totalPages)}function ge(B){i.page=B.page+1,i.pageSize=B.rows,X()}function he(B){f.field=B.sortField??null,f.order=B.sortOrder??0,i.page=1,X()}function w(){const B=l();for(const $ of Object.keys(B))v[$]=B[$]}function V(B,$){v[B]=$}function q(){if(j.value=!1,m.value=null,d=null,w(),D){const B=D();for(const[$,N]of Object.entries(B))v[$]=N}I.value=!0}function x(B){const $={};for(const N of n){let W=B[N.field]!==void 0?B[N.field]:null;W&&(N.type==="date"||N.type==="datetime")&&typeof W=="string"&&(W=Ie(W)),v[N.field]=W,$[N.field]=W}d=$}function _(B){j.value=!1,m.value=B,x(B),I.value=!0}function Nt(B){j.value=!0,m.value=B,x(B),I.value=!0}function Dt(B){j.value=!1,m.value=null,d=null,w();for(const $ of n){if($.field===r)continue;let N=B[$.field]!==void 0?B[$.field]:v[$.field];N&&($.type==="date"||$.type==="datetime")&&typeof N=="string"&&(N=Ie(N)),v[$.field]=N}if(D){const $=D();for(const[N,W]of Object.entries($))v[N]=W}I.value=!0}function qe(B){const $={...B};for(const N of n){const W=$[N.field];if(N.type==="date"&&W instanceof Date?$[N.field]=it(W):N.type==="datetime"&&W instanceof Date&&($[N.field]=st(W)),N.type==="fk"&&W!==null&&typeof W=="object"){const ye=N.optionValue||"id";$[N.field]=W[ye]??W}(N.type==="mask"||N.type==="cpf_cnpj")&&typeof W=="string"&&($[N.field]=me(W))}return $}async function xt(){for(const B of n){if(B.validate){const $=B.validate(v[B.field]);if($)return P.error($),null}if(B.required){const $=v[B.field];if($==null||$==="")return P.error(`${B.label} é obrigatório`),null}}H.value=!0;try{let B=qe(v);if(!K.value&&D&&Object.assign(B,D()),K.value&&c&&d){const ne=qe(d);if(B=Gn(ne,B),Object.keys(B).length===0&&!L){I.value=!1;const de=m.value;return m.value=null,d=null,de}}L&&(B=L(B,K.value));const $=n.some(ne=>ne.type==="image"&&B[ne.field]instanceof File);let N=B,W;if($){const ne=new Set(n.filter(ie=>ie.type==="image").map(ie=>ie.field)),de=new FormData;for(const[ie,Be]of Object.entries(B))if(Be!=null)if(Be instanceof File)de.append(ie,Be);else{if(ne.has(ie))continue;de.append(ie,String(Be))}N=de,W={"Content-Type":"multipart/form-data"}}const ye=W?{headers:W}:void 0;let re;if(K.value&&m.value){const ne=m.value[r];if(re=await b.update(o,ne,N,ye),!g){const de=F.value.findIndex(ie=>ie[r]===ne);de!==-1&&(F.value[de]=re.data)}P.success(z.successUpdate)}else re=await b.create(o,N,ye),g||(F.value.unshift(re.data),i.rows++),P.success(z.successCreate);return I.value=!1,m.value=null,d=null,g&&await X(),T&&T(re.data,K.value),re.data}catch(B){return P.error(we(B,"Erro ao salvar registro")),null}finally{H.value=!1}}function Pt(B){R(async()=>{try{const $=B[r];await b.delete(o,$);const N=F.value.findIndex(W=>W[r]===$);N!==-1&&(F.value.splice(N,1),i.rows--),P.success(z.successDelete),p&&p(B)}catch($){P.error(we($,"Erro ao excluir registro"))}},z.deleteConfirmMessage)}return{items:F,extras:Y,loading:G,saving:H,search:O,dialogVisible:I,editingItem:m,formData:v,pagination:i,sort:f,isEditing:K,isViewing:Q,viewMode:j,dialogTitle:ae,isFirstPage:J,isLastPage:Z,init:oe,fetchItems:X,fetchAll:fe,refresh:se,setSearch:ce,onSearch:pe,onPage:ge,onSort:he,openCreateDialog:q,openEditDialog:_,openViewDialog:Nt,openDuplicateDialog:Dt,save:xt,confirmDelete:Pt,setFormField:V,resetForm:w,goToPage:le,firstPage:ue,lastPage:ve,config:t}}function Zn(t){const{endpoint:o,searchDebounce:a=300,immediate:n=!1}=t,r=e.inject(De);if(!r)throw new Error("[wPrimeVueComponents] dataProvider não encontrado. Registre o WPrimeVuePlugin antes de usar useApi.");const s=r,c=e.inject(xe),g=t.pageSize??(c==null?void 0:c.defaultPageSize)??20,u=e.ref([]),y=e.ref(!1),S=e.ref(""),E=e.ref({}),M=e.reactive({}),D=e.reactive({page:1,pageSize:g,rows:0,totalPages:0}),L=e.reactive({field:null,order:0});let T=null;async function p(R={}){y.value=!0;try{const F={page:D.page,page_size:D.pageSize,...R};S.value&&(F.search=S.value),L.field&&L.order!==0&&(F.ordering=L.order===-1?`-${L.field}`:L.field);for(const[G,H]of Object.entries(M))H!=null&&H!==""&&(F[G]=H);const Y=await s.list(o,F);u.value=Y.data,D.rows=Y.rows,Y.page&&(D.page=Y.page),Y.page_size&&(D.pageSize=Y.page_size),D.totalPages=Math.ceil(D.rows/D.pageSize)||0,E.value=Y.extras??{}}finally{y.value=!1}}async function k(){await p()}function b(R){S.value=R,T&&clearTimeout(T),T=setTimeout(()=>{D.page=1,p()},a)}function C(R,F){M[R]=F,D.page=1,p()}function A(){for(const R of Object.keys(M))delete M[R];D.page=1,p()}function z(R){D.page=R.page+1,D.pageSize=R.rows,p()}function P(R){L.field=R.sortField??null,L.order=R.sortOrder??0,D.page=1,p()}return n&&p(),{items:u,loading:y,search:S,pagination:D,sort:L,extras:E,fetchItems:p,refresh:k,setSearch:b,setFilter:C,clearFilters:A,onPage:z,onSort:P}}function Xn(t){return t.split("?")[0].replace(/^\/+|\/+$/g,"").replace(/^api\/v\d+\//,"")}function Qn(t){return typeof t=="string"?{table:t}:t}function St(t,o=400){return{response:{status:o,data:{detail:t}},message:t}}function tt(t){if(t instanceof FormData)throw St("SupabaseDataProvider nao envia FormData diretamente. Faça upload do arquivo no Storage e envie a URL/caminho no payload.");return t}function Ce(t){throw{response:{data:{detail:(t==null?void 0:t.message)??"Erro ao consultar Supabase",code:t==null?void 0:t.code,details:t==null?void 0:t.details,hint:t==null?void 0:t.hint}},message:(t==null?void 0:t.message)??"Erro ao consultar Supabase"}}function Ve(t,o){var r,s;const a=Xn(t),n=(r=o.resources)==null?void 0:r[a];if(n)return Qn(n);if((s=o.allowedTables)!=null&&s.includes(a))return{table:a};throw St(`Recurso Supabase nao registrado para o endpoint "${t}".`,404)}function _n(t,o,a){const n=new Set(["page","page_size","search","ordering"]),r={...a.defaultFilters,...o};for(const[s,c]of Object.entries(r))n.has(s)||c===null||c===void 0||c===""||(t=t.eq(s,c));return t}function el(t,o,a){if(typeof o!="string"||!o.trim()||!(a!=null&&a.length))return t;const n=o.trim().replace(/,/g,"\\,"),r=a.map(s=>`${s}.ilike.%${n}%`).join(",");return t.or(r)}function tl(t,o){const a=typeof t=="string"&&t?t:o;return a?{field:a.startsWith("-")?a.slice(1):a,ascending:!a.startsWith("-")}:null}function ol(t,o){return t?o.mapListItem?t.map(a=>{var n;return(n=o.mapListItem)==null?void 0:n.call(o,a)}):t:[]}function al(t){const o=t.defaultSelect??"*";return{async list(a,n={}){var M;const r=Ve(a,t),s=Math.max(Number(n.page??1),1),c=Math.max(Number(n.page_size??20),1),g=(s-1)*c,u=g+c-1;let y=t.client.from(r.table).select(r.select??o,{count:"exact"});y=_n(y,n,r),y=el(y,n.search,r.searchFields);const S=tl(n.ordering,r.defaultOrdering);S&&(y=y.order(S.field,{ascending:S.ascending}));const E=await y.range(g,u);return E.error&&Ce(E.error),{data:ol(E.data,r),page:s,page_size:c,rows:E.count??((M=E.data)==null?void 0:M.length)??0,extras:{}}},async get(a,n,r){const s=Ve(a,t),c=s.pk??"id",g=await t.client.from(s.table).select(s.select??o).eq(c,n).single();return g.error&&Ce(g.error),{data:g.data}},async create(a,n,r){const s=Ve(a,t),c=tt(n),g=s.mapPayload?s.mapPayload(c,"create"):c,u=await t.client.from(s.table).insert(g).select(s.select??o).single();return u.error&&Ce(u.error),{data:u.data}},async update(a,n,r,s){const c=Ve(a,t),g=c.pk??"id",u=tt(r),y=c.mapPayload?c.mapPayload(u,"update"):u,S=await t.client.from(c.table).update(y).eq(g,n).select(c.select??o).single();return S.error&&Ce(S.error),{data:S.data}},async delete(a,n){const r=Ve(a,t),s=r.pk??"id",c=r.softDelete===!0?{is_active:!1}:typeof r.softDelete=="object"?r.softDelete:null,g=c?await t.client.from(r.table).update(c).eq(s,n):await t.client.from(r.table).delete().eq(s,n);g.error&&Ce(g.error)}}}exports.DEFAULT_CRUD_LABELS=$t;exports.WActionBar=Yn;exports.WAutoCompleteFK=je;exports.WCrudColumnRenderer=Ne;exports.WCrudFormDialog=Re;exports.WCrudView=Bt;exports.WDetailHeader=an;exports.WEmptyState=Ga;exports.WFormRenderer=yt;exports.WFormSection=Rn;exports.WInfoCard=un;exports.WKpiCard=Vt;exports.WKpiGrid=wn;exports.WMoneyInput=We;exports.WPageHeader=Wa;exports.WPrimeVuePlugin=Kn;exports.WProgressFlow=qn;exports.WSectionHeader=Dn;exports.WStatusTag=Ct;exports.WTransferList=Ue;exports.W_AXIOS_KEY=rt;exports.W_CONFIG_KEY=xe;exports.W_DATA_PROVIDER_KEY=De;exports.createAxiosDataProvider=Et;exports.createSupabaseDataProvider=al;exports.downloadCsv=wt;exports.extractApiError=we;exports.mapApiFieldToColumnDef=ht;exports.mapApiFieldToFieldDef=vt;exports.mapApiFieldsToColumnDefs=kt;exports.mapApiFieldsToFieldDefs=gt;exports.toCsv=bt;exports.useApi=Zn;exports.useApiError=bo;exports.useAppConfirm=Oe;exports.useAppToast=Ye;exports.useCrudManager=Jn;exports.useFormatters=ze;
12
+ */function Za(){return e.inject(Ja)}const Xa={class:"w-detail-header"},Qa={class:"w-detail-header-left"},_a={class:"w-detail-header-content"},en={class:"w-detail-header-title"},tn={key:0,class:"w-detail-header-subtitle"},on={class:"w-detail-header-actions"},an=e.defineComponent({__name:"WDetailHeader",props:{title:{},subtitle:{},icon:{},backRoute:{},backTo:{},status:{},statusMap:{}},setup(t){const o=t,a=Za();function n(){o.backTo?a.push(typeof o.backTo=="string"?{name:o.backTo}:o.backTo):o.backRoute?a.push({name:o.backRoute}):a.back()}return(r,s)=>(e.openBlock(),e.createElementBlock("div",Xa,[e.createElementVNode("div",Qa,[e.createVNode(e.unref(U),{icon:"pi pi-arrow-left",text:"",rounded:"",onClick:n}),t.icon?(e.openBlock(),e.createElementBlock("i",{key:0,class:e.normalizeClass([t.icon,"w-detail-header-icon"])},null,2)):e.createCommentVNode("",!0),e.createElementVNode("div",_a,[e.createElementVNode("h2",en,e.toDisplayString(t.title),1),t.subtitle?(e.openBlock(),e.createElementBlock("p",tn,e.toDisplayString(t.subtitle),1)):e.createCommentVNode("",!0)]),t.status?(e.openBlock(),e.createBlock(Ct,{key:1,value:t.status,map:t.statusMap},null,8,["value","map"])):e.createCommentVNode("",!0)]),e.createElementVNode("div",on,[e.renderSlot(r.$slots,"actions")])]))}}),nn={class:"w-info-card"},ln={key:0,class:"w-info-card-title"},rn={class:"w-info-card-grid"},sn={class:"w-info-card-label"},cn={class:"w-info-card-value"},un=e.defineComponent({__name:"WInfoCard",props:{title:{},fields:{}},setup(t){const{formatCurrency:o,formatDate:a,formatNumber:n}=ze();function r(s){const c=s.value;return c==null||c===""?"-":s.format==="currency"?o(Number(c)):s.format==="date"?a(String(c)):s.format==="datetime"?a(String(c),"DD/MM/YYYY HH:mm"):s.format==="number"?n(Number(c)):String(c)}return(s,c)=>(e.openBlock(),e.createElementBlock("div",nn,[t.title?(e.openBlock(),e.createElementBlock("h3",ln,e.toDisplayString(t.title),1)):e.createCommentVNode("",!0),e.createElementVNode("div",rn,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.fields,g=>(e.openBlock(),e.createElementBlock("div",{key:g.label,class:"w-info-card-field"},[e.createElementVNode("span",sn,e.toDisplayString(g.label),1),e.createElementVNode("span",cn,e.toDisplayString(r(g)),1)]))),128))])]))}}),dn={key:0,class:"w-kpi-card__loading"},mn={class:"w-kpi-card__loading-content"},fn={class:"w-kpi-card__header"},pn={key:0,class:"w-kpi-card__icon"},vn={key:1,class:"w-kpi-card__trend"},gn={class:"w-kpi-card__content"},hn={class:"w-kpi-card__label"},kn={class:"w-kpi-card__value"},yn={key:0,class:"w-kpi-card__hint"},bn={key:0,class:"w-kpi-card__footer"},Vt=e.defineComponent({__name:"WKpiCard",props:{label:{},value:{},icon:{},hint:{},severity:{},trend:{},loading:{type:Boolean}},setup(t){return(o,a)=>(e.openBlock(),e.createElementBlock("article",{class:e.normalizeClass(["w-kpi-card",t.severity?`w-kpi-card--${t.severity}`:""])},[t.loading?(e.openBlock(),e.createElementBlock("div",dn,[e.createVNode(e.unref(Pe),{shape:"circle",size:"2.75rem"}),e.createElementVNode("div",mn,[e.createVNode(e.unref(Pe),{width:"6rem",height:"0.75rem"}),e.createVNode(e.unref(Pe),{width:"7.5rem",height:"1.5rem"}),e.createVNode(e.unref(Pe),{width:"5rem",height:"0.75rem"})])])):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createElementVNode("div",fn,[t.icon||o.$slots.icon?(e.openBlock(),e.createElementBlock("div",pn,[e.renderSlot(o.$slots,"icon",{},()=>[t.icon?(e.openBlock(),e.createElementBlock("i",{key:0,class:e.normalizeClass(t.icon)},null,2)):e.createCommentVNode("",!0)])])):e.createCommentVNode("",!0),t.trend||o.$slots.trend?(e.openBlock(),e.createElementBlock("div",vn,[e.renderSlot(o.$slots,"trend",{},()=>[t.trend?(e.openBlock(),e.createElementBlock("span",{key:0,class:e.normalizeClass(["w-kpi-card__trend-badge",t.trend.direction?`w-kpi-card__trend-badge--${t.trend.direction}`:""])},e.toDisplayString(t.trend.value),3)):e.createCommentVNode("",!0)])])):e.createCommentVNode("",!0)]),e.createElementVNode("div",gn,[e.createElementVNode("p",hn,e.toDisplayString(t.label),1),e.createElementVNode("div",kn,[e.renderSlot(o.$slots,"value",{},()=>[e.createTextVNode(e.toDisplayString(t.value),1)])]),t.hint||o.$slots.hint?(e.openBlock(),e.createElementBlock("p",yn,[e.renderSlot(o.$slots,"hint",{},()=>[e.createTextVNode(e.toDisplayString(t.hint),1)])])):e.createCommentVNode("",!0)]),o.$slots.footer?(e.openBlock(),e.createElementBlock("footer",bn,[e.renderSlot(o.$slots,"footer")])):e.createCommentVNode("",!0)],64))],2))}}),wn=e.defineComponent({__name:"WKpiGrid",props:{items:{default:()=>[]},columns:{default:4},dense:{type:Boolean,default:!1}},setup(t){const o=t,a=e.computed(()=>[o.columns==="auto"?"w-kpi-grid--auto":`w-kpi-grid--cols-${o.columns}`,{"w-kpi-grid--dense":o.dense}]);return(n,r)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["w-kpi-grid",a.value])},[n.$slots.item?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(t.items,(s,c)=>e.renderSlot(n.$slots,"item",{key:c,item:s,index:c})),128)):(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:1},e.renderList(t.items,(s,c)=>(e.openBlock(),e.createBlock(Vt,{key:c,label:s.label,value:s.value,icon:s.icon,severity:s.severity||"primary",hint:s.hint,trend:s.trend,loading:s.loading},null,8,["label","value","icon","severity","hint","trend","loading"]))),128))],2))}}),Bn={class:"w-section-header__main"},Cn={key:0,class:"w-section-header__icon"},Vn={class:"w-section-header__content"},En={class:"w-section-header__title-row"},$n={class:"w-section-header__title"},Sn={key:0,class:"w-section-header__subtitle"},Nn={key:0,class:"w-section-header__actions"},Dn=e.defineComponent({__name:"WSectionHeader",props:{title:{},subtitle:{},icon:{},compact:{type:Boolean}},setup(t){return(o,a)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["w-section-header",{"w-section-header--compact":t.compact}])},[e.createElementVNode("div",Bn,[t.icon||o.$slots.icon?(e.openBlock(),e.createElementBlock("div",Cn,[e.renderSlot(o.$slots,"icon",{},()=>[t.icon?(e.openBlock(),e.createElementBlock("i",{key:0,class:e.normalizeClass(t.icon)},null,2)):e.createCommentVNode("",!0)])])):e.createCommentVNode("",!0),e.createElementVNode("div",Vn,[e.createElementVNode("div",En,[e.createElementVNode("h3",$n,e.toDisplayString(t.title),1),e.renderSlot(o.$slots,"meta")]),t.subtitle?(e.openBlock(),e.createElementBlock("p",Sn,e.toDisplayString(t.subtitle),1)):e.createCommentVNode("",!0)])]),o.$slots.actions?(e.openBlock(),e.createElementBlock("div",Nn,[e.renderSlot(o.$slots,"actions")])):e.createCommentVNode("",!0)],2))}}),xn={key:0,class:"w-form-section__header"},Pn={class:"w-form-section__content"},Fn={class:"w-form-section__title"},Mn={key:0,class:"w-form-section__description"},An={key:0,class:"w-form-section__actions"},zn={class:"w-form-section__body"},Rn=e.defineComponent({__name:"WFormSection",props:{title:{},description:{},variant:{}},setup(t){return(o,a)=>(e.openBlock(),e.createElementBlock("section",{class:e.normalizeClass(["w-form-section",t.variant?`w-form-section--${t.variant}`:""])},[t.title||t.description||o.$slots.actions?(e.openBlock(),e.createElementBlock("div",xn,[e.createElementVNode("div",Pn,[e.createElementVNode("h3",Fn,e.toDisplayString(t.title),1),t.description?(e.openBlock(),e.createElementBlock("p",Mn,e.toDisplayString(t.description),1)):e.createCommentVNode("",!0)]),o.$slots.actions?(e.openBlock(),e.createElementBlock("div",An,[e.renderSlot(o.$slots,"actions")])):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),e.createElementVNode("div",zn,[e.renderSlot(o.$slots,"default")])],2))}}),Ln={key:0,class:"w-action-bar__primary"},Tn={key:1,class:"w-action-bar__filters"},In={key:2,class:"w-action-bar__secondary"},Yn=e.defineComponent({__name:"WActionBar",props:{align:{default:"between"},stackOnMobile:{type:Boolean,default:!0}},setup(t){return(o,a)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["w-action-bar",[`w-action-bar--${t.align}`,{"w-action-bar--stack":t.stackOnMobile}]])},[o.$slots.primary||o.$slots.default?(e.openBlock(),e.createElementBlock("div",Ln,[e.renderSlot(o.$slots,"primary",{},()=>[e.renderSlot(o.$slots,"default")])])):e.createCommentVNode("",!0),o.$slots.filters?(e.openBlock(),e.createElementBlock("div",Tn,[e.renderSlot(o.$slots,"filters")])):e.createCommentVNode("",!0),o.$slots.secondary?(e.openBlock(),e.createElementBlock("div",In,[e.renderSlot(o.$slots,"secondary")])):e.createCommentVNode("",!0)],2))}}),On={class:"w-progress-flow__marker"},jn={class:"w-progress-flow__content"},Wn={class:"w-progress-flow__label"},Un={key:0,class:"w-progress-flow__description"},qn=e.defineComponent({__name:"WProgressFlow",props:{steps:{},currentStep:{},orientation:{default:"horizontal"}},setup(t){const o=t,a=e.computed(()=>o.steps.findIndex(r=>r.key===o.currentStep));function n(r){return r<a.value?"done":r===a.value?"current":"pending"}return(r,s)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["w-progress-flow",`w-progress-flow--${t.orientation}`])},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.steps,(c,g)=>(e.openBlock(),e.createElementBlock("div",{key:c.key,class:e.normalizeClass(["w-progress-flow__step",`w-progress-flow__step--${n(g)}`])},[e.renderSlot(r.$slots,"step",{step:c,index:g,state:n(g)},()=>[e.createElementVNode("div",On,[e.createElementVNode("span",null,e.toDisplayString(g+1),1)]),e.createElementVNode("div",jn,[e.createElementVNode("p",Wn,e.toDisplayString(c.label),1),c.description?(e.openBlock(),e.createElementBlock("p",Un,e.toDisplayString(c.description),1)):e.createCommentVNode("",!0)])])],2))),128))],2))}});function Hn(t,o,a){const n=t;return Array.isArray(n.results)?{data:n.results,page:n.page??o,page_size:n.page_size??a,rows:n.count??0,extras:n.extras??{}}:Array.isArray(n.data)?{data:n.data,page:n.page??o,page_size:n.page_size??a,rows:n.rows??0,extras:n.extras??{}}:{data:Array.isArray(t)?t:[],page:o,page_size:a,rows:Array.isArray(t)?t.length:0,extras:{}}}function Et(t){return{async list(o,a={}){const n=await t.get(o,{params:a});return Hn(n.data,Number(a.page??1),Number(a.page_size??20))},async get(o,a,n){return{data:(await t.get(`${o}${a}/`,n)).data}},async create(o,a,n){return{data:(await t.post(o,a,n)).data}},async update(o,a,n,r){return{data:(await t.patch(`${o}${a}/`,n,r)).data}},async delete(o,a){await t.delete(`${o}${a}/`)}}}const Kn={install(t,o){if(!(o!=null&&o.axios)&&!(o!=null&&o.dataProvider))throw new Error('[wPrimeVueComponents] Informe "axios" ou "dataProvider" ao registrar o WPrimeVuePlugin.');const a=o.dataProvider??Et(o.axios),n={axios:o.axios,dataProvider:a,defaultPageSize:o.defaultPageSize??20,dateFormat:o.dateFormat??"DD/MM/YYYY",dateTimeFormat:o.dateTimeFormat??"DD/MM/YYYY HH:mm",locale:o.locale??"pt-BR",currency:o.currency??"BRL"};o.axios&&t.provide(rt,o.axios),t.provide(De,a),t.provide(xe,n),o.registerComponents!==!1&&(t.component("WCrudView",Bt),t.component("WCrudFormDialog",Re),t.component("WCrudColumnRenderer",Ne),t.component("WAutoCompleteFK",je),t.component("WMoneyInput",We),t.component("WTransferList",Ue))}},$t={createTitle:"Novo Registro",editTitle:"Editar Registro",createButton:"Novo",saveButton:"Salvar",updateButton:"Atualizar",cancelButton:"Cancelar",deleteConfirmTitle:"Confirmar Exclusão",deleteConfirmMessage:"Deseja realmente excluir este registro?",searchPlaceholder:"Buscar...",emptyMessage:"Nenhum registro encontrado",successCreate:"Registro criado com sucesso",successUpdate:"Registro atualizado com sucesso",successDelete:"Registro excluído com sucesso"};function Gn(t,o){const a={};for(const n of Object.keys(o))JSON.stringify(t[n])!==JSON.stringify(o[n])&&(a[n]=o[n]);return a}function Jn(t){const{endpoint:o,columns:a,form:n,pk:r="id",searchDebounce:s=300,partialUpdate:c=!0,refetchOnSave:g=!0,canCreate:u=!0,canEdit:y=!0,canDelete:S=!0,rowActions:E=void 0,filterParams:M=void 0,createDefaults:D=void 0,transformPayload:L=void 0,onAfterSave:T=void 0,onAfterDelete:p=void 0}=t,k=e.inject(De);if(!k)throw new Error("[wPrimeVueComponents] dataProvider não encontrado. Registre o WPrimeVuePlugin antes de usar useCrudManager.");const b=k,C=e.inject(xe),A=t.pageSize??(C==null?void 0:C.defaultPageSize)??20,z={...$t,...t.labels},P=Ye(),{confirmDelete:R}=Oe(),F=e.ref([]),Y=e.ref({}),G=e.ref(!1),H=e.ref(!1),O=e.ref(""),I=e.ref(!1),j=e.ref(!1),m=e.ref(null),v=e.reactive({});let d=null;const i=e.reactive({page:1,pageSize:A,rows:0,totalPages:0}),f=e.reactive({field:null,order:0});function l(){const B={};for(const $ of n)B[$.field]=$.defaultValue!==void 0?typeof $.defaultValue=="function"?$.defaultValue():$.defaultValue:null;return B}const h=l();for(const B of Object.keys(h))v[B]=h[B];const K=e.computed(()=>m.value!==null&&!j.value),Q=e.computed(()=>j.value),ae=e.computed(()=>j.value?z.viewTitle??"Visualizar Registro":K.value?z.editTitle:z.createTitle),J=e.computed(()=>i.page<=1),Z=e.computed(()=>i.page>=i.totalPages);let te=null;async function X(B={}){G.value=!0;try{const $={page:i.page,page_size:i.pageSize,...B};O.value&&($.search=O.value),f.field&&f.order!==0&&($.ordering=f.order===-1?`-${f.field}`:f.field),M&&Object.assign($,M());const N=await b.list(o,$);F.value=N.data,i.rows=N.rows,Y.value=N.extras??{},N.page&&(i.page=N.page),N.page_size&&(i.pageSize=N.page_size),i.totalPages=Math.ceil(i.rows/i.pageSize)||0}finally{G.value=!1}}async function oe(){await X()}async function se(){await X()}async function fe(B=200){const $={};O.value&&($.search=O.value),f.field&&f.order!==0&&($.ordering=f.order===-1?`-${f.field}`:f.field),M&&Object.assign($,M());const N=[];let W=1;const ye=1e4;for(;W<=ye;){const re=await b.list(o,{...$,page:W,page_size:B});N.push(...re.data);const ne=re.rows??N.length;if(re.data.length===0||N.length>=ne)break;W++}return N}function ce(B){O.value=B,te&&clearTimeout(te),te=setTimeout(()=>{i.page=1,X()},s)}function pe(B){const $=B.target;ce($.value)}function le(B){i.page=B,X()}function ue(){le(1)}function ve(){le(i.totalPages)}function ge(B){i.page=B.page+1,i.pageSize=B.rows,X()}function he(B){f.field=B.sortField??null,f.order=B.sortOrder??0,i.page=1,X()}function w(){const B=l();for(const $ of Object.keys(B))v[$]=B[$]}function V(B,$){v[B]=$}function q(){if(j.value=!1,m.value=null,d=null,w(),D){const B=D();for(const[$,N]of Object.entries(B))v[$]=N}I.value=!0}function x(B){const $={};for(const N of n){let W=B[N.field]!==void 0?B[N.field]:null;W&&(N.type==="date"||N.type==="datetime")&&typeof W=="string"&&(W=Ie(W)),v[N.field]=W,$[N.field]=W}d=$}function _(B){j.value=!1,m.value=B,x(B),I.value=!0}function Nt(B){j.value=!0,m.value=B,x(B),I.value=!0}function Dt(B){j.value=!1,m.value=null,d=null,w();for(const $ of n){if($.field===r)continue;let N=B[$.field]!==void 0?B[$.field]:v[$.field];N&&($.type==="date"||$.type==="datetime")&&typeof N=="string"&&(N=Ie(N)),v[$.field]=N}if(D){const $=D();for(const[N,W]of Object.entries($))v[N]=W}I.value=!0}function qe(B){const $={...B};for(const N of n){const W=$[N.field];if(N.type==="date"&&W instanceof Date?$[N.field]=it(W):N.type==="datetime"&&W instanceof Date&&($[N.field]=st(W)),N.type==="fk"&&W!==null&&typeof W=="object"){const ye=N.optionValue||"id";$[N.field]=W[ye]??W}(N.type==="mask"||N.type==="cpf_cnpj")&&typeof W=="string"&&($[N.field]=me(W))}return $}async function xt(){for(const B of n){if(B.validate){const $=B.validate(v[B.field]);if($)return P.error($),null}if(B.required){const $=v[B.field];if($==null||$==="")return P.error(`${B.label} é obrigatório`),null}}H.value=!0;try{let B=qe(v);if(!K.value&&D&&Object.assign(B,D()),K.value&&c&&d){const ne=qe(d);if(B=Gn(ne,B),Object.keys(B).length===0&&!L){I.value=!1;const de=m.value;return m.value=null,d=null,de}}L&&(B=L(B,K.value));const $=n.some(ne=>ne.type==="image"&&B[ne.field]instanceof File);let N=B,W;if($){const ne=new Set(n.filter(ie=>ie.type==="image").map(ie=>ie.field)),de=new FormData;for(const[ie,Be]of Object.entries(B))if(Be!=null)if(Be instanceof File)de.append(ie,Be);else{if(ne.has(ie))continue;de.append(ie,String(Be))}N=de,W={"Content-Type":"multipart/form-data"}}const ye=W?{headers:W}:void 0;let re;if(K.value&&m.value){const ne=m.value[r];if(re=await b.update(o,ne,N,ye),!g){const de=F.value.findIndex(ie=>ie[r]===ne);de!==-1&&(F.value[de]=re.data)}P.success(z.successUpdate)}else re=await b.create(o,N,ye),g||(F.value.unshift(re.data),i.rows++),P.success(z.successCreate);return I.value=!1,m.value=null,d=null,g&&await X(),T&&T(re.data,K.value),re.data}catch(B){return P.error(we(B,"Erro ao salvar registro")),null}finally{H.value=!1}}function Pt(B){R(async()=>{try{const $=B[r];await b.delete(o,$);const N=F.value.findIndex(W=>W[r]===$);N!==-1&&(F.value.splice(N,1),i.rows--),P.success(z.successDelete),p&&p(B)}catch($){P.error(we($,"Erro ao excluir registro"))}},z.deleteConfirmMessage)}return{items:F,extras:Y,loading:G,saving:H,search:O,dialogVisible:I,editingItem:m,formData:v,pagination:i,sort:f,isEditing:K,isViewing:Q,viewMode:j,dialogTitle:ae,isFirstPage:J,isLastPage:Z,init:oe,fetchItems:X,fetchAll:fe,refresh:se,setSearch:ce,onSearch:pe,onPage:ge,onSort:he,openCreateDialog:q,openEditDialog:_,openViewDialog:Nt,openDuplicateDialog:Dt,save:xt,confirmDelete:Pt,setFormField:V,resetForm:w,goToPage:le,firstPage:ue,lastPage:ve,config:t}}function Zn(t){const{endpoint:o,searchDebounce:a=300,immediate:n=!1}=t,r=e.inject(De);if(!r)throw new Error("[wPrimeVueComponents] dataProvider não encontrado. Registre o WPrimeVuePlugin antes de usar useApi.");const s=r,c=e.inject(xe),g=t.pageSize??(c==null?void 0:c.defaultPageSize)??20,u=e.ref([]),y=e.ref(!1),S=e.ref(""),E=e.ref({}),M=e.reactive({}),D=e.reactive({page:1,pageSize:g,rows:0,totalPages:0}),L=e.reactive({field:null,order:0});let T=null;async function p(R={}){y.value=!0;try{const F={page:D.page,page_size:D.pageSize,...R};S.value&&(F.search=S.value),L.field&&L.order!==0&&(F.ordering=L.order===-1?`-${L.field}`:L.field);for(const[G,H]of Object.entries(M))H!=null&&H!==""&&(F[G]=H);const Y=await s.list(o,F);u.value=Y.data,D.rows=Y.rows,Y.page&&(D.page=Y.page),Y.page_size&&(D.pageSize=Y.page_size),D.totalPages=Math.ceil(D.rows/D.pageSize)||0,E.value=Y.extras??{}}finally{y.value=!1}}async function k(){await p()}function b(R){S.value=R,T&&clearTimeout(T),T=setTimeout(()=>{D.page=1,p()},a)}function C(R,F){M[R]=F,D.page=1,p()}function A(){for(const R of Object.keys(M))delete M[R];D.page=1,p()}function z(R){D.page=R.page+1,D.pageSize=R.rows,p()}function P(R){L.field=R.sortField??null,L.order=R.sortOrder??0,D.page=1,p()}return n&&p(),{items:u,loading:y,search:S,pagination:D,sort:L,extras:E,fetchItems:p,refresh:k,setSearch:b,setFilter:C,clearFilters:A,onPage:z,onSort:P}}function Xn(t){return t.split("?")[0].replace(/^\/+|\/+$/g,"").replace(/^api\/v\d+\//,"")}function Qn(t){return typeof t=="string"?{table:t}:t}function St(t,o=400){return{response:{status:o,data:{detail:t}},message:t}}function tt(t){if(t instanceof FormData)throw St("SupabaseDataProvider nao envia FormData diretamente. Faça upload do arquivo no Storage e envie a URL/caminho no payload.");return t}function Ce(t){throw{response:{data:{detail:(t==null?void 0:t.message)??"Erro ao consultar Supabase",code:t==null?void 0:t.code,details:t==null?void 0:t.details,hint:t==null?void 0:t.hint}},message:(t==null?void 0:t.message)??"Erro ao consultar Supabase"}}function Ve(t,o){var r,s;const a=Xn(t),n=(r=o.resources)==null?void 0:r[a];if(n)return Qn(n);if((s=o.allowedTables)!=null&&s.includes(a))return{table:a};throw St(`Recurso Supabase nao registrado para o endpoint "${t}".`,404)}function _n(t,o,a){const n=new Set(["page","page_size","search","ordering"]),r={...a.defaultFilters,...o};for(const[s,c]of Object.entries(r))n.has(s)||c===null||c===void 0||c===""||(t=t.eq(s,c));return t}function el(t,o,a){if(typeof o!="string"||!o.trim()||!(a!=null&&a.length))return t;const n=o.trim().replace(/,/g,"\\,"),r=a.map(s=>`${s}.ilike.%${n}%`).join(",");return t.or(r)}function tl(t,o){const a=typeof t=="string"&&t?t:o;return a?{field:a.startsWith("-")?a.slice(1):a,ascending:!a.startsWith("-")}:null}function ol(t,o){return t?o.mapListItem?t.map(a=>{var n;return(n=o.mapListItem)==null?void 0:n.call(o,a)}):t:[]}function al(t){const o=t.defaultSelect??"*";return{async list(a,n={}){var M;const r=Ve(a,t),s=Math.max(Number(n.page??1),1),c=Math.max(Number(n.page_size??20),1),g=(s-1)*c,u=g+c-1;let y=t.client.from(r.table).select(r.select??o,{count:"exact"});y=_n(y,n,r),y=el(y,n.search,r.searchFields);const S=tl(n.ordering,r.defaultOrdering);S&&(y=y.order(S.field,{ascending:S.ascending}));const E=await y.range(g,u);return E.error&&Ce(E.error),{data:ol(E.data,r),page:s,page_size:c,rows:E.count??((M=E.data)==null?void 0:M.length)??0,extras:{}}},async get(a,n,r){const s=Ve(a,t),c=s.pk??"id",g=await t.client.from(s.table).select(s.select??o).eq(c,n).single();return g.error&&Ce(g.error),{data:g.data}},async create(a,n,r){const s=Ve(a,t),c=tt(n),g=s.mapPayload?s.mapPayload(c,"create"):c,u=await t.client.from(s.table).insert(g).select(s.select??o).single();return u.error&&Ce(u.error),{data:u.data}},async update(a,n,r,s){const c=Ve(a,t),g=c.pk??"id",u=tt(r),y=c.mapPayload?c.mapPayload(u,"update"):u,S=await t.client.from(c.table).update(y).eq(g,n).select(c.select??o).single();return S.error&&Ce(S.error),{data:S.data}},async delete(a,n){const r=Ve(a,t),s=r.pk??"id",c=r.softDelete===!0?{is_active:!1}:typeof r.softDelete=="object"?r.softDelete:null,g=c?await t.client.from(r.table).update(c).eq(s,n):await t.client.from(r.table).delete().eq(s,n);g.error&&Ce(g.error)}}}exports.DEFAULT_CRUD_LABELS=$t;exports.WActionBar=Yn;exports.WAutoCompleteFK=je;exports.WCrudColumnRenderer=Ne;exports.WCrudFormDialog=Re;exports.WCrudView=Bt;exports.WDetailHeader=an;exports.WEmptyState=Ga;exports.WFormRenderer=yt;exports.WFormSection=Rn;exports.WInfoCard=un;exports.WKpiCard=Vt;exports.WKpiGrid=wn;exports.WMoneyInput=We;exports.WPageHeader=Wa;exports.WPrimeVuePlugin=Kn;exports.WProgressFlow=qn;exports.WSectionHeader=Dn;exports.WStatusTag=Ct;exports.WTransferList=Ue;exports.W_AXIOS_KEY=rt;exports.W_CONFIG_KEY=xe;exports.W_DATA_PROVIDER_KEY=De;exports.createAxiosDataProvider=Et;exports.createSupabaseDataProvider=al;exports.downloadCsv=wt;exports.extractApiError=we;exports.mapApiFieldToColumnDef=ht;exports.mapApiFieldToFieldDef=vt;exports.mapApiFieldsToColumnDefs=kt;exports.mapApiFieldsToFieldDefs=gt;exports.toCsv=bt;exports.useApi=Zn;exports.useApiError=bo;exports.useAppConfirm=Oe;exports.useAppToast=Ye;exports.useCrudManager=Jn;exports.useFormatters=ze;
13
13
  //# sourceMappingURL=index.cjs.map