@redi.run/redi-components 0.0.49 → 0.0.50
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/redi-components.js +10 -12
- package/dist/redi-components.umd.cjs +1 -1
- package/package.json +1 -1
package/dist/redi-components.js
CHANGED
|
@@ -13122,16 +13122,15 @@ const useAdvancedTable = (e) => {
|
|
|
13122
13122
|
if (b && typeof window < "u") {
|
|
13123
13123
|
let t = new URLSearchParams(window.location.search), i = { ...e };
|
|
13124
13124
|
return t.forEach((e, a) => {
|
|
13125
|
-
|
|
13126
|
-
|
|
13127
|
-
|
|
13128
|
-
|
|
13129
|
-
...
|
|
13130
|
-
value: [...s.value, e],
|
|
13125
|
+
if (!n.find((e) => e.id === a)) return;
|
|
13126
|
+
let o = i[a];
|
|
13127
|
+
if (o) Array.isArray(o.value) ? i[a] = {
|
|
13128
|
+
...o,
|
|
13129
|
+
value: [...o.value, e],
|
|
13131
13130
|
type: "multiselect"
|
|
13132
13131
|
} : i[a] = {
|
|
13133
|
-
...
|
|
13134
|
-
value: [
|
|
13132
|
+
...o,
|
|
13133
|
+
value: [o.value, e],
|
|
13135
13134
|
type: "multiselect"
|
|
13136
13135
|
};
|
|
13137
13136
|
else {
|
|
@@ -13296,10 +13295,9 @@ const useAdvancedTable = (e) => {
|
|
|
13296
13295
|
if (b && typeof window < "u") {
|
|
13297
13296
|
let e = new URLSearchParams(window.location.search);
|
|
13298
13297
|
n.forEach((t) => {
|
|
13299
|
-
|
|
13300
|
-
}), Object.entries(C).forEach(([t,
|
|
13301
|
-
|
|
13302
|
-
_ && !a?.shouldBeRefetch || i.value && (Array.isArray(i.value) ? i.value.forEach((n) => e.append(t, String(n))) : e.set(t, String(i.value)));
|
|
13298
|
+
e.delete(t.id);
|
|
13299
|
+
}), Object.entries(C).forEach(([t, n]) => {
|
|
13300
|
+
n.value && (Array.isArray(n.value) ? n.value.forEach((n) => e.append(t, String(n))) : e.set(t, String(n.value)));
|
|
13303
13301
|
});
|
|
13304
13302
|
let t = `${window.location.pathname}?${e.toString()}`;
|
|
13305
13303
|
window.history.replaceState({}, "", t);
|
|
@@ -104,7 +104,7 @@ function Xd(e){return new DataView(e.buffer,e.byteOffset,e.byteLength)}function
|
|
|
104
104
|
${e===`icon`?w[r]:C[r]}
|
|
105
105
|
${S?`cursor-pointer`:`cursor-not-allowed opacity-60`}
|
|
106
106
|
${m||``}
|
|
107
|
-
`,...h,children:[s&&(0,n.jsxs)(`svg`,{className:`animate-spin -ml-1 mr-1 h-4 w-4 text-current`,xmlns:`http://www.w3.org/2000/svg`,fill:`none`,viewBox:`0 0 24 24`,children:[(0,n.jsx)(`circle`,{className:`opacity-25`,cx:`12`,cy:`12`,r:`10`,stroke:`currentColor`,strokeWidth:`4`}),(0,n.jsx)(`path`,{className:`opacity-75`,fill:`currentColor`,d:`M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z`})]}),u||(0,n.jsxs)(n.Fragment,{children:[l&&a===`left`&&!s&&l,c&&e!==`icon`&&(0,n.jsx)(`span`,{children:c}),l&&a===`right`&&!s&&l]})]})},lp={controls:`_controls_1pwn9_1`,leftControls:`_leftControls_1pwn9_10`,rightControls:`_rightControls_1pwn9_16`,configButton:`_configButton_1pwn9_23`,configIcon:`_configIcon_1pwn9_42`,configSection:`_configSection_1pwn9_49`,configSectionTitle:`_configSectionTitle_1pwn9_57`,configOptions:`_configOptions_1pwn9_66`,configOption:`_configOption_1pwn9_66`,actionButton:`_actionButton_1pwn9_91`,export:`_export_1pwn9_110`,reset:`_reset_1pwn9_120`,buttonIcon:`_buttonIcon_1pwn9_130`,filtersContainer:`_filtersContainer_1pwn9_137`,active:`_active_1pwn9_145`,filtersRow:`_filtersRow_1pwn9_149`,filterGroup:`_filterGroup_1pwn9_156`,filterLabel:`_filterLabel_1pwn9_162`,filterDropdown:`_filterDropdown_1pwn9_172`,filterDropdownButton:`_filterDropdownButton_1pwn9_177`,filterDropdownIcon:`_filterDropdownIcon_1pwn9_200`,filterModalHeader:`_filterModalHeader_1pwn9_212`,filterSearchInput:`_filterSearchInput_1pwn9_217`,filterOptions:`_filterOptions_1pwn9_231`,filterOption:`_filterOption_1pwn9_231`,selected:`_selected_1pwn9_250`,filterOptionCheckbox:`_filterOptionCheckbox_1pwn9_254`,filterOptionLabel:`_filterOptionLabel_1pwn9_260`,filterOptionCount:`_filterOptionCount_1pwn9_266`,filterModalActions:`_filterModalActions_1pwn9_275`,filterClearButton:`_filterClearButton_1pwn9_284`,filterApplyButton:`_filterApplyButton_1pwn9_285`,tableWrapper:`_tableWrapper_1pwn9_315`,table:`_table_1pwn9_315`,header:`_header_1pwn9_332`,dragging:`_dragging_1pwn9_349`,dragOver:`_dragOver_1pwn9_354`,headerContent:`_headerContent_1pwn9_359`,dragHandle:`_dragHandle_1pwn9_367`,columnTitle:`_columnTitle_1pwn9_384`,sortable:`_sortable_1pwn9_391`,sortIcon:`_sortIcon_1pwn9_408`,filterButton:`_filterButton_1pwn9_415`,filterButtonIcon:`_filterButtonIcon_1pwn9_451`,filterModal:`_filterModal_1pwn9_212`,row:`_row_1pwn9_474`,cell:`_cell_1pwn9_486`,statusBadge:`_statusBadge_1pwn9_507`,statusActive:`_statusActive_1pwn9_517`,statusInactive:`_statusInactive_1pwn9_522`,statusPending:`_statusPending_1pwn9_527`,statusCompleted:`_statusCompleted_1pwn9_532`,statusDraft:`_statusDraft_1pwn9_537`,pagination:`_pagination_1pwn9_543`,paginationInfo:`_paginationInfo_1pwn9_553`,paginationControls:`_paginationControls_1pwn9_560`,pageSizeSelect:`_pageSizeSelect_1pwn9_575`,pageButtons:`_pageButtons_1pwn9_591`,pageButton:`_pageButton_1pwn9_591`,exportButton:`_exportButton_1pwn9_659`,resetButton:`_resetButton_1pwn9_660`,filterModalSlideIn:`_filterModalSlideIn_1pwn9_1`,shimmer:`_shimmer_1pwn9_1`,columnCheckboxes:`_columnCheckboxes_1pwn9_1195`},up=({option:e,selectedValues:t,handleOptionToggle:r})=>(0,n.jsxs)(`div`,{className:`${lp.filterOption} ${t.includes(e.value)?lp.selected:``}`,onClick:()=>r(e),children:[(0,n.jsx)(`input`,{type:`checkbox`,className:lp.filterOptionCheckbox,checked:t.includes(e.value),onChange:()=>r(e),onClick:e=>e.stopPropagation()}),(0,n.jsx)(`span`,{className:lp.filterOptionLabel,children:e.value}),(0,n.jsx)(`span`,{className:lp.filterOptionCount,children:e.count})]},e.value),dp=({label:e,options:r,textValue:i,selectedValues:a,onTextChange:o,onSelectionChange:s,onClose:c})=>{let[l,u]=(0,t.useState)(``),d=(0,t.useRef)(null),f=r.filter(e=>e.value.toLowerCase().includes(l.toLowerCase())||e.label.toLowerCase().includes(l.toLowerCase())),p=e=>{let t=a.includes(e.value)?a.filter(t=>t!==e.value):[...a,e.value];s(t)},m=()=>{let e=f.map(e=>e.value);s(e)},h=()=>{s([]),o(``)};return(0,t.useEffect)(()=>{let e=e=>{d.current&&!d.current.contains(e.target)&&c()};return document.addEventListener(`mousedown`,e),()=>{document.removeEventListener(`mousedown`,e)}},[c]),(0,n.jsxs)(`div`,{className:lp.filterModal,ref:d,children:[(0,n.jsx)(`div`,{className:lp.filterModalHeader,children:(0,n.jsx)(`input`,{type:`text`,className:lp.filterSearchInput,placeholder:`Buscar texto en ${e.toLowerCase()}...`,value:l,onChange:e=>u(e.target.value),style:{marginTop:`8px`}})}),(0,n.jsxs)(`div`,{className:lp.filterOptions,children:[(0,n.jsxs)(`div`,{className:lp.filterOption,style:{borderBottom:`1px solid #e5e7eb`,marginBottom:`4px`,paddingBottom:`8px`},children:[(0,n.jsx)(cp,{onClick:m,size:`small`,level:`tertiary`,children:`Seleccionar todo`}),(0,n.jsx)(cp,{onClick:h,size:`small`,level:`tertiary`,children:`Limpiar todo`})]}),f.length>0?f.map((e,t)=>{let r=f[t-1],i=e.group&&(!r||r.group!==e.group);return(0,n.jsxs)(`div`,{children:[i&&(0,n.jsx)(`div`,{className:`px-3 py-1 text-xs font-bold text-gray-500 bg-gray-50 uppercase tracking-wider`,children:e.group}),(0,n.jsx)(up,{option:e,selectedValues:a,handleOptionToggle:p})]},e.value)}):(0,n.jsx)(`div`,{className:lp.filterOption,children:(0,n.jsx)(`span`,{className:lp.filterOptionLabel,children:`No se encontraron opciones`})})]}),(0,n.jsxs)(`div`,{className:lp.filterModalActions,children:[(0,n.jsx)(cp,{onClick:h,level:`tertiary`,children:`Limpiar todo`}),(0,n.jsxs)(cp,{onClick:c,level:`primary`,children:[`Aplicar (`,a.length+(i?1:0),`)`]})]})]})};let fp=e=>{let{data:n,columns:r,defaultSort:i,defaultFilters:a={},defaultPageSize:o=10,pageSizeOptions:s=[10,25,50,100,200,300,400,500],initialConfig:c,onConfigChange:l,onPaginationChange:u,onFiltersChange:d,fetchData:f,rowKey:p=`id`,onRowSelectionChange:m,syncFiltersWithUrl:h=!1}=e,[g,_]=(0,t.useState)(c?.sort||i||void 0),[v,y]=(0,t.useState)(()=>{let e=c?.filters||a;if(h&&typeof window<`u`){let t=new URLSearchParams(window.location.search),n={...e};return t.forEach((e,i)=>{let a=r.find(e=>e.id===i);if(f&&!a?.shouldBeRefetch)return;let o=n[i];if(o)Array.isArray(o.value)?n[i]={...o,value:[...o.value,e],type:`multiselect`}:n[i]={...o,value:[o.value,e],type:`multiselect`};else{let r=t.getAll(i);r.length>1?n[i]={type:`multiselect`,value:r}:n[i]={type:`text`,value:e}}}),n}return e}),[b,x]=(0,t.useState)(c?.columnOrder||r.map(e=>e.id)),[S,C]=(0,t.useState)(c?.hiddenColumns||[]),[w,T]=(0,t.useState)(c?.pinnedColumns||[]),[E,D]=(0,t.useState)([]),[O,k]=(0,t.useState)({}),[A,j]=(0,t.useState)({page:1,pageSize:c?.pagination?.pageSize||o,total:c?.pagination?.total||n.length}),[ee,M]=(0,t.useState)([]),[N,te]=(0,t.useState)(0),[ne,re]=(0,t.useState)(!1),[ie,P]=(0,t.useState)(0),ae=(0,t.useCallback)(async()=>{if(f){re(!0);try{let e={page_number:A.page,page_size:A.pageSize};g&&(e.order_by=`${g.direction===`desc`?`-`:``}${g.column}`),Object.entries(v).forEach(([t,n])=>{n.value&&r.find(e=>e.id===t)?.shouldBeRefetch&&(e[t]=n.value)});let t=await f(e);M(t.items),te(t.total_items)}catch(e){console.error(`Failed to fetch data:`,e)}finally{re(!1)}}},[f,A.page,A.pageSize,g,v,r]),oe=(0,t.useRef)(!0),se=(0,t.useRef)(v),ce=(0,t.useRef)(g),le=(0,t.useRef)(A.page),ue=(0,t.useRef)(A.pageSize),de=(0,t.useRef)(ie);(0,t.useEffect)(()=>{if(f){let e=!1,t=JSON.stringify(v)!==JSON.stringify(se.current);if(oe.current)e=!0,oe.current=!1;else if(ie!==de.current)e=!0,de.current=ie;else if(A.page!==le.current||A.pageSize!==ue.current)e=!0;else if(JSON.stringify(g)!==JSON.stringify(ce.current))e=!0;else if(t){let t=Object.keys(se.current),n=Object.keys(v),i=Array.from(new Set([...t,...n]));for(let t of i)if(JSON.stringify(se.current[t])!==JSON.stringify(v[t])&&r.find(e=>e.id===t)?.shouldBeRefetch===!0){e=!0;break}}le.current=A.page,ue.current=A.pageSize,ce.current=g,se.current=v,e&&ae()}},[ae,ie,f,A.page,A.pageSize,g,v,r]),(0,t.useEffect)(()=>{f&&j(e=>({...e,total:N}))},[N,f]),(0,t.useEffect)(()=>{let e=r.map(e=>e.id);x(t=>{let n=t.filter(t=>e.includes(t)),r=e.filter(e=>!n.includes(e));return[...n,...r]}),C(t=>t.filter(t=>e.includes(t))),T(t=>t.filter(t=>e.includes(t)))},[r]);let F=(0,t.useMemo)(()=>{let e=[];return e=f?[...ee]:[...n],Object.entries(v).forEach(([t,n])=>{let i=r.find(e=>e.id===t);i&&(f&&i.shouldBeRefetch||(e=e.filter(e=>{let t=typeof i.accessor==`function`?i.accessor(e):e[i.accessor],r=String(t||``).toLowerCase(),a=!0;return n.type===`text`&&n.value&&(a&&=r.includes(String(n.value).toLowerCase())),n.type===`select`&&n.value&&(a&&=r===String(n.value).toLowerCase()),n.type===`multiselect`&&Array.isArray(n.value)&&n.value.length>0&&(a&&=n.value.some(e=>r===String(e).toLowerCase())),a})))}),e},[n,v,r,f,ee]),fe=(0,t.useMemo)(()=>{if(f||!g)return F;let e=r.find(e=>e.id===g.column);return e?[...F].sort((t,n)=>{let r=typeof e.accessor==`function`?e.accessor(t):t[e.accessor],i=typeof e.accessor==`function`?e.accessor(n):n[e.accessor];if(r==null)return 1;if(i==null)return-1;let a=0;if(typeof r==`number`&&typeof i==`number`)a=r-i;else if(typeof r==`boolean`&&typeof i==`boolean`)a=r===i?0:r?1:-1;else if(r instanceof Date&&i instanceof Date)a=r.getTime()-i.getTime();else{let e=String(r).toLowerCase(),t=String(i).toLowerCase();a=e.localeCompare(t)}return g.direction===`desc`?a*-1:a}):F},[F,g,r,f]),pe=(0,t.useMemo)(()=>{if(f)return fe;let e=(A.page-1)*A.pageSize,t=e+A.pageSize;return fe.slice(e,t)},[fe,A.page,A.pageSize,f]);(0,t.useEffect)(()=>{f||j(e=>({...e,total:F.length,page:Math.min(e.page,Math.ceil(F.length/e.pageSize)||1)}))},[F.length,f]),(0,t.useEffect)(()=>{l?.({columns:r,sort:g,filters:v,pagination:A,columnOrder:b,hiddenColumns:S,pinnedColumns:w})},[g,v,b,S,w,A.pageSize,l,A,r]),(0,t.useEffect)(()=>{u?.(A)},[A,u]),(0,t.useEffect)(()=>{d?.(v)},[v,d]),(0,t.useEffect)(()=>{if(h&&typeof window<`u`){let e=new URLSearchParams(window.location.search);r.forEach(t=>{f&&!t.shouldBeRefetch||e.delete(t.id)}),Object.entries(v).forEach(([t,n])=>{let i=r.find(e=>e.id===t);f&&!i?.shouldBeRefetch||n.value&&(Array.isArray(n.value)?n.value.forEach(n=>e.append(t,String(n))):e.set(t,String(n.value)))});let t=`${window.location.pathname}?${e.toString()}`;window.history.replaceState({},``,t)}},[v,h,r,f]);let me=(0,t.useCallback)(e=>{_(t=>t?.column===e?t.direction===`asc`?{column:e,direction:`desc`}:void 0:{column:e,direction:`asc`})},[]),he=(0,t.useCallback)((e,t,n=`text`)=>{y(r=>({...r,[e]:{type:n,value:t,options:r[e]?.options}})),j(e=>({...e,page:1}))},[]),ge=(0,t.useCallback)(e=>{y(t=>{let n={...t};return delete n[e],n})},[]),_e=(0,t.useCallback)(()=>{y({})},[]),I=(0,t.useCallback)(e=>{j(t=>({...t,page:e}))},[]),ve=(0,t.useCallback)(e=>{j(t=>({...t,pageSize:e,page:1}))},[]),ye=(0,t.useCallback)(e=>{x(e)},[]),be=(0,t.useCallback)(e=>{C(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e])},[]),xe=(0,t.useCallback)(e=>{T(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e])},[]),Se=(0,t.useCallback)(e=>{D(t=>{let n=t.includes(e)?t.filter(t=>t!==e):[...t,e];return m?.(n),n})},[m]),Ce=(0,t.useCallback)(e=>{D(t=>{let n=e.map(e=>typeof p==`function`?p(e):e[p]),r=n.every(e=>t.includes(e)),i;if(r)i=t.filter(e=>!n.includes(e));else{let e=n.filter(e=>!t.includes(e));i=[...t,...e]}return m?.(i),i})},[p,m]),we=(0,t.useCallback)((e,t)=>{k(n=>({...n,[e]:Math.max(50,t)}))},[]),Te=(0,t.useMemo)(()=>{let e=new Map(r.map(e=>[e.id,e])),t=b.map(t=>e.get(t)).filter(Boolean),n=new Set(t.map(e=>e.id)),i=r.filter(e=>!n.has(e.id));return[...t,...i].filter(e=>!S.includes(e.id))},[b,r,S]),L=(0,t.useCallback)(()=>{P(e=>e+1)},[]);return{state:{data:n,filteredData:F,paginatedData:pe,sortConfig:g,filters:v,pagination:A,columnOrder:b,hiddenColumns:S,pinnedColumns:w,selectedRows:E,columnWidths:O,loading:ne},orderedColumns:Te,pageSizeOptions:s,handleSort:me,handleFilter:he,clearFilter:ge,clearAllFilters:_e,handlePageChange:I,handlePageSizeChange:ve,handleColumnReorder:ye,handleToggleColumn:be,handleTogglePin:xe,handleRowSelect:Se,handleSelectAll:Ce,handleColumnResize:we,allColumns:r,refresh:L}};var pp=({data:e,columns:r,defaultSort:i,defaultFilters:a={},defaultPageSize:o=10,pageSizeOptions:s=[10,25,50,100,200,300,400,500],enableSorting:c=!0,enableFiltering:l=!0,enablePagination:u=!0,enableExport:p=!0,initialConfig:x,onConfigChange:S,className:C=``,labels:w={configuration:`Configuración`,columnVisibility:`Columnas visibles`,pagination:{showingItems:`Mostrando`,to:`a`,of:`de`,items:`elementos`,showPerPage:`Mostrar`,perPageItems:`elementos`},clearAllFilters:`Limpiar todos los filtros`,noData:`No hay datos disponibles`},enableColumnReordering:T=!0,enableColumnPinning:E=!1,enableColumnResizing:D=!1,enableRowSelection:O=!1,stickyActionsColumn:k=!1,rowKey:A=`id`,onRowSelectionChange:j,renderActions:ee,actionsColumnLabel:M,loading:N=!1,fetchData:te,onRefresh:ne,onPaginationChange:re,onFiltersChange:ie,syncFiltersWithUrl:P=!1})=>{let[ae,oe]=(0,t.useState)(null),[se,ce]=(0,t.useState)(null),[le,ue]=(0,t.useState)(!1),[de,F]=(0,t.useState)(null),fe=(0,t.useRef)(null),[pe,me]=(0,t.useState)(r),{state:he,orderedColumns:ge,handleSort:_e,handleFilter:I,clearAllFilters:ve,handlePageChange:ye,handlePageSizeChange:be,handleColumnReorder:xe,handleToggleColumn:Se,handleTogglePin:Ce,handleRowSelect:we,handleSelectAll:Te,handleColumnResize:L,refresh:Ee}=fp({data:e,columns:pe,defaultSort:i,defaultFilters:a,defaultPageSize:o,pageSizeOptions:s,initialConfig:x,onConfigChange:S,fetchData:te,onPaginationChange:re,onFiltersChange:ie,rowKey:A,onRowSelectionChange:j,syncFiltersWithUrl:P}),{paginatedData:De,sortConfig:Oe,filters:ke,pagination:R,hiddenColumns:Ae,pinnedColumns:je,selectedRows:Me,columnWidths:Ne,loading:Pe}=he,Fe=N||Pe;(0,t.useEffect)(()=>me(r),[r]);let Ie=(0,t.useMemo)(()=>{let e=[...ge],t=e.filter(e=>e.isAction),r=[...e.filter(e=>!e.isAction),...t];return O&&r.unshift({id:`selection-synthetic`,label:``,accessor:e=>e[A],width:50,minWidth:50,render:({row:e})=>{let t=e[A];return(0,n.jsx)(`input`,{type:`checkbox`,className:`w-4 h-4 accent-redi-primary cursor-pointer`,checked:Me.includes(t),onChange:e=>{e.stopPropagation(),we(t)},onClick:e=>e.stopPropagation()})},isAction:!1,filterable:!1,sortable:!1,draggable:!1}),ee&&r.push({id:`actions-synthetic`,label:M||``,accessor:e=>e[A],render:({row:e,column:t,index:n})=>ee({row:e,index:n,column:t}),width:100,isAction:!0,filterable:!1,sortable:!1,draggable:!1}),r},[ge,ee,M,O,Me,A,we]),Le=(0,t.useRef)(null);(0,t.useEffect)(()=>{let e=e=>{if(!Le.current)return;let{columnId:t,startX:n,startWidth:r}=Le.current,i=e.clientX-n;L(t,r+i)},t=()=>{Le.current=null,document.body.style.cursor=`default`,document.body.style.userSelect=`auto`};if(D)return document.addEventListener(`mousemove`,e),document.addEventListener(`mouseup`,t),()=>{document.removeEventListener(`mousemove`,e),document.removeEventListener(`mouseup`,t)}},[D,L]);let Re=(e,t,n)=>{e.preventDefault(),e.stopPropagation(),Le.current={columnId:t,startX:e.clientX,startWidth:n},document.body.style.cursor=`col-resize`,document.body.style.userSelect=`none`},ze=(e,t)=>{oe(t),e.dataTransfer.effectAllowed=`move`,e.dataTransfer.setData(`text/html`,``)},Be=(e,t)=>{e.preventDefault(),e.dataTransfer.dropEffect=`move`,ce(t)},Ve=()=>{ce(null)},He=(e,t)=>{if(e.preventDefault(),ae===null)return;let n=Ie[ae].id,r=Ie[t].id;if(n===r){oe(null),ce(null);return}let i=e.currentTarget.getBoundingClientRect(),a=e.clientX-i.left>i.width/2,o=[...he.columnOrder],s=o.indexOf(n),c=o.indexOf(r);s===-1||c===-1||(o.splice(s,1),c=o.indexOf(r),a?o.splice(c+1,0,n):o.splice(c,0,n),xe(o),oe(null),ce(null))},Ue=()=>{oe(null),ce(null)},We=()=>{if(!p)return;let e=Ie.filter(e=>!e.isAction);$f(he.filteredData,e,`table-data.xlsx`)},Ge=e=>{F(de===e?null:e)},Ke=t=>{let n=pe.find(e=>e.id===t);if(!n)return[];let r=e.filter(e=>Object.entries(ke).every(([n,r])=>{if(n===t||!r.value)return!0;let i=pe.find(e=>e.id===n);if(!i)return!0;let a=typeof i.accessor==`function`?i.accessor(e):e[i.accessor],o=String(a||``).toLowerCase(),s=!0;return r.type===`text`&&(s=o.includes(String(r.value).toLowerCase())),r.type===`select`&&(s=o===String(r.value).toLowerCase()),r.type===`multiselect`&&Array.isArray(r.value)&&(s=r.value.some(e=>o===String(e).toLowerCase())),s})),i=new Map;r.forEach(e=>{let t=typeof n.accessor==`function`?n.accessor(e):e[n.accessor],r=ep(t);i.set(r,(i.get(r)||0)+1)});let a=new Map;e.forEach(e=>{let t=typeof n.accessor==`function`?n.accessor(e):e[n.accessor],r=ep(t);a.set(r,(a.get(r)||0)+1)});let o=[],s=[];return a.forEach((e,t)=>{let n=i.get(t);n!==void 0&&n>0?o.push({value:t,count:n,label:`${t} (${n})`,group:`Disponibles`}):s.push({value:t,count:e,label:`${t} (0)`,group:`Otros`})}),o.sort((e,t)=>e.value.localeCompare(t.value)),s.sort((e,t)=>e.value.localeCompare(t.value)),s.length===0?o.map(e=>({...e,group:void 0})):[...o,...s]},qe=Object.values(ke).some(e=>e.type===`text`&&e.value||e.type===`select`&&e.value||e.type===`multiselect`&&Array.isArray(e.value)&&e.value.length>0),Je=(0,t.useMemo)(()=>{let e=[];return Object.entries(ke).forEach(([t,n])=>{let r=pe.find(e=>e.id===t);r&&(n.type===`text`&&n.value?e.push({columnId:t,columnLabel:r.label,value:String(n.value),displayValue:String(n.value)}):n.type===`multiselect`&&Array.isArray(n.value)&&n.value.length>0&&n.value.forEach(n=>{e.push({columnId:t,columnLabel:r.label,value:n,displayValue:n})}))}),e},[ke,pe]),Ye=(e,t)=>{let n=ke[e];if(n.type===`text`)I(e,``,`text`);else if(n.type===`multiselect`&&Array.isArray(n.value)){let r=n.value.filter(e=>e!==t);I(e,r,`multiselect`)}};(0,t.useEffect)(()=>{let e=e=>{fe.current&&!fe.current.contains(e.target)&&ue(!1)};return le&&document.addEventListener(`mousedown`,e),()=>{document.removeEventListener(`mousedown`,e)}},[le]);let Xe=Math.ceil(R.total/R.pageSize),Ze=e=>Ne[e.id]?Ne[e.id]:e.width?e.width:e.isAction?100:150+(e.filterable?50:0),Qe=()=>{Ee(),ne?.()},$e=({columnLabel:e,value:t,onRemove:r})=>(0,n.jsxs)(`div`,{className:`inline-flex items-center gap-1 bg-blue-100 text-blue-800 font-medium px-4 py-1 rounded-full border border-blue-300 hover:bg-blue-200 transition-colors`,children:[(0,n.jsxs)(`span`,{className:`font-semibold`,children:[e,`:`]}),(0,n.jsx)(`span`,{className:`max-w-[200px] truncate`,children:t}),(0,n.jsx)(`button`,{onClick:r,className:`ml-1 hover:bg-blue-300 rounded-full transition-colors cursor-pointer`,"aria-label":`Remove filter ${e}: ${t}`,children:(0,n.jsx)(d,{size:22})})]});return(0,n.jsxs)(`div`,{className:`w-full bg-redi-background border border-solid border-gray-500 rounded-xl overflow-hidden font-family-base shadow ${C}`,children:[(0,n.jsxs)(`div`,{className:`flex items-center justify-between p-4 bg-transparent border-b border-solid border-gray-400`,children:[(0,n.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(te||ne)&&(0,n.jsx)(cp,{level:`secondary`,onClick:Qe,loading:Fe,children:(0,n.jsx)(b,{size:18})}),(0,n.jsxs)(`div`,{className:`relative`,children:[(0,n.jsxs)(cp,{level:`secondary`,onClick:()=>ue(!le),children:[(0,n.jsx)(h,{}),(0,n.jsx)(`span`,{className:`hidden md:block`,children:w.configuration})]}),le&&(0,n.jsx)(`div`,{className:`absolute top-full left-0 bg-white border border-solid border-gray-300 rounded-md shadow-lg z-1000 mt-2 min-w-2xs max-w-xs opacity-100 visible p-4`,ref:fe,children:(0,n.jsxs)(`div`,{className:`mb-4 last:mb-0`,children:[(0,n.jsx)(`div`,{className:`text-sm font-semibold text-redi-text mb-2 uppercase`,children:w.columnVisibility}),(0,n.jsx)(`div`,{className:`flex flex-col gap-2`,children:pe.filter(e=>!e.isAction).map(e=>{let t=!Ae.includes(e.id);return(0,n.jsxs)(`div`,{className:`flex items-center justify-between gap-2 hover:bg-gray-50 p-1 rounded`,children:[(0,n.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,n.jsx)(`input`,{type:`checkbox`,className:`w-4 h-4 accent-redi-primary cursor-pointer`,checked:t,onChange:()=>Se(e.id),id:`col-visibility-${e.id}`}),(0,n.jsx)(`label`,{htmlFor:`col-visibility-${e.id}`,className:`text-sm text-redi-text cursor-pointer select-none`,children:e.label})]}),t&&(0,n.jsxs)(`div`,{className:`flex items-center gap-1`,children:[E&&(0,n.jsx)(cp,{level:`icon`,onClick:t=>{t.stopPropagation(),Ce(e.id)},"aria-label":je.includes(e.id)?`Unpin column`:`Pin column`,className:`p-1 hover:bg-gray-200 rounded-full`,children:je.includes(e.id)?(0,n.jsx)(v,{size:14,className:`text-redi-primary`}):(0,n.jsx)(y,{size:14,className:`text-gray-400`})}),(0,n.jsx)(cp,{level:`icon`,onClick:t=>{t.stopPropagation();let n=pe.map(t=>t.id===e.id?{...t,draggable:!t.draggable}:t);me(n)},"aria-label":e.draggable?`Disable drag`:`Enable drag`,className:`p-1 hover:bg-gray-200 rounded-full`,children:(0,n.jsx)(m,{active:!!e.draggable,size:14,label:`Draggable`})}),(0,n.jsx)(cp,{level:`icon`,onClick:t=>{t.stopPropagation();let n=pe.map(t=>t.id===e.id?{...t,filterable:!t.filterable}:t);me(n)},"aria-label":e.filterable?`Disable filter`:`Enable filter`,className:`p-1 hover:bg-gray-200 rounded-full`,children:e.filterable?(0,n.jsx)(g,{size:14,color:`#fa8c16`}):(0,n.jsx)(_,{size:14,color:`#9ca3af`})})]})]},e.id)})})]})})]}),l&&qe&&(0,n.jsx)(cp,{level:`icon`,onClick:ve,label:w.clearAllFilters,children:(0,n.jsx)(d,{color:`white`})}),Je.length>0&&(0,n.jsx)(`div`,{className:`flex items-center gap-2 flex-wrap ml-2`,children:Je.map((e,t)=>(0,n.jsx)($e,{columnLabel:e.columnLabel,value:e.displayValue,onRemove:()=>Ye(e.columnId,e.value)},`${e.columnId}-${e.value}-${t}`))})]}),(0,n.jsx)(`div`,{className:`flex items-center gap-2`,children:p&&(0,n.jsx)(cp,{level:`secondary`,onClick:We,children:(0,n.jsx)(f,{size:18})})})]}),(0,n.jsx)(`div`,{className:`overflow-x-auto max-h-[600px] md:max-h-none min-h-[500px] overflow-y-auto md:overflow-y-visible bg-white relative`,children:(0,n.jsxs)(`table`,{className:`w-full border-separate border-spacing-0 table-auto text-sm relative`,"aria-label":`Data Table`,children:[(0,n.jsx)(`thead`,{children:(0,n.jsx)(`tr`,{children:Ie.map((e,t)=>{let r=Ze(e),i=je.includes(e.id),a=0;if(i)for(let e=0;e<t;e++)je.includes(Ie[e].id)&&(a+=Ze(Ie[e]));let o={width:r,minWidth:r,maxWidth:r,...i?{position:`sticky`,left:a,zIndex:20,backgroundColor:`#f9fafb`}:{}};return(0,n.jsx)(`th`,{className:`bg-gray-50 border-b border-solid border-gray-200 text-left font-semibold text-redi-text p-0 sticky top-0 z-10 select-none hover:bg-gray-200
|
|
107
|
+
`,...h,children:[s&&(0,n.jsxs)(`svg`,{className:`animate-spin -ml-1 mr-1 h-4 w-4 text-current`,xmlns:`http://www.w3.org/2000/svg`,fill:`none`,viewBox:`0 0 24 24`,children:[(0,n.jsx)(`circle`,{className:`opacity-25`,cx:`12`,cy:`12`,r:`10`,stroke:`currentColor`,strokeWidth:`4`}),(0,n.jsx)(`path`,{className:`opacity-75`,fill:`currentColor`,d:`M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z`})]}),u||(0,n.jsxs)(n.Fragment,{children:[l&&a===`left`&&!s&&l,c&&e!==`icon`&&(0,n.jsx)(`span`,{children:c}),l&&a===`right`&&!s&&l]})]})},lp={controls:`_controls_1pwn9_1`,leftControls:`_leftControls_1pwn9_10`,rightControls:`_rightControls_1pwn9_16`,configButton:`_configButton_1pwn9_23`,configIcon:`_configIcon_1pwn9_42`,configSection:`_configSection_1pwn9_49`,configSectionTitle:`_configSectionTitle_1pwn9_57`,configOptions:`_configOptions_1pwn9_66`,configOption:`_configOption_1pwn9_66`,actionButton:`_actionButton_1pwn9_91`,export:`_export_1pwn9_110`,reset:`_reset_1pwn9_120`,buttonIcon:`_buttonIcon_1pwn9_130`,filtersContainer:`_filtersContainer_1pwn9_137`,active:`_active_1pwn9_145`,filtersRow:`_filtersRow_1pwn9_149`,filterGroup:`_filterGroup_1pwn9_156`,filterLabel:`_filterLabel_1pwn9_162`,filterDropdown:`_filterDropdown_1pwn9_172`,filterDropdownButton:`_filterDropdownButton_1pwn9_177`,filterDropdownIcon:`_filterDropdownIcon_1pwn9_200`,filterModalHeader:`_filterModalHeader_1pwn9_212`,filterSearchInput:`_filterSearchInput_1pwn9_217`,filterOptions:`_filterOptions_1pwn9_231`,filterOption:`_filterOption_1pwn9_231`,selected:`_selected_1pwn9_250`,filterOptionCheckbox:`_filterOptionCheckbox_1pwn9_254`,filterOptionLabel:`_filterOptionLabel_1pwn9_260`,filterOptionCount:`_filterOptionCount_1pwn9_266`,filterModalActions:`_filterModalActions_1pwn9_275`,filterClearButton:`_filterClearButton_1pwn9_284`,filterApplyButton:`_filterApplyButton_1pwn9_285`,tableWrapper:`_tableWrapper_1pwn9_315`,table:`_table_1pwn9_315`,header:`_header_1pwn9_332`,dragging:`_dragging_1pwn9_349`,dragOver:`_dragOver_1pwn9_354`,headerContent:`_headerContent_1pwn9_359`,dragHandle:`_dragHandle_1pwn9_367`,columnTitle:`_columnTitle_1pwn9_384`,sortable:`_sortable_1pwn9_391`,sortIcon:`_sortIcon_1pwn9_408`,filterButton:`_filterButton_1pwn9_415`,filterButtonIcon:`_filterButtonIcon_1pwn9_451`,filterModal:`_filterModal_1pwn9_212`,row:`_row_1pwn9_474`,cell:`_cell_1pwn9_486`,statusBadge:`_statusBadge_1pwn9_507`,statusActive:`_statusActive_1pwn9_517`,statusInactive:`_statusInactive_1pwn9_522`,statusPending:`_statusPending_1pwn9_527`,statusCompleted:`_statusCompleted_1pwn9_532`,statusDraft:`_statusDraft_1pwn9_537`,pagination:`_pagination_1pwn9_543`,paginationInfo:`_paginationInfo_1pwn9_553`,paginationControls:`_paginationControls_1pwn9_560`,pageSizeSelect:`_pageSizeSelect_1pwn9_575`,pageButtons:`_pageButtons_1pwn9_591`,pageButton:`_pageButton_1pwn9_591`,exportButton:`_exportButton_1pwn9_659`,resetButton:`_resetButton_1pwn9_660`,filterModalSlideIn:`_filterModalSlideIn_1pwn9_1`,shimmer:`_shimmer_1pwn9_1`,columnCheckboxes:`_columnCheckboxes_1pwn9_1195`},up=({option:e,selectedValues:t,handleOptionToggle:r})=>(0,n.jsxs)(`div`,{className:`${lp.filterOption} ${t.includes(e.value)?lp.selected:``}`,onClick:()=>r(e),children:[(0,n.jsx)(`input`,{type:`checkbox`,className:lp.filterOptionCheckbox,checked:t.includes(e.value),onChange:()=>r(e),onClick:e=>e.stopPropagation()}),(0,n.jsx)(`span`,{className:lp.filterOptionLabel,children:e.value}),(0,n.jsx)(`span`,{className:lp.filterOptionCount,children:e.count})]},e.value),dp=({label:e,options:r,textValue:i,selectedValues:a,onTextChange:o,onSelectionChange:s,onClose:c})=>{let[l,u]=(0,t.useState)(``),d=(0,t.useRef)(null),f=r.filter(e=>e.value.toLowerCase().includes(l.toLowerCase())||e.label.toLowerCase().includes(l.toLowerCase())),p=e=>{let t=a.includes(e.value)?a.filter(t=>t!==e.value):[...a,e.value];s(t)},m=()=>{let e=f.map(e=>e.value);s(e)},h=()=>{s([]),o(``)};return(0,t.useEffect)(()=>{let e=e=>{d.current&&!d.current.contains(e.target)&&c()};return document.addEventListener(`mousedown`,e),()=>{document.removeEventListener(`mousedown`,e)}},[c]),(0,n.jsxs)(`div`,{className:lp.filterModal,ref:d,children:[(0,n.jsx)(`div`,{className:lp.filterModalHeader,children:(0,n.jsx)(`input`,{type:`text`,className:lp.filterSearchInput,placeholder:`Buscar texto en ${e.toLowerCase()}...`,value:l,onChange:e=>u(e.target.value),style:{marginTop:`8px`}})}),(0,n.jsxs)(`div`,{className:lp.filterOptions,children:[(0,n.jsxs)(`div`,{className:lp.filterOption,style:{borderBottom:`1px solid #e5e7eb`,marginBottom:`4px`,paddingBottom:`8px`},children:[(0,n.jsx)(cp,{onClick:m,size:`small`,level:`tertiary`,children:`Seleccionar todo`}),(0,n.jsx)(cp,{onClick:h,size:`small`,level:`tertiary`,children:`Limpiar todo`})]}),f.length>0?f.map((e,t)=>{let r=f[t-1],i=e.group&&(!r||r.group!==e.group);return(0,n.jsxs)(`div`,{children:[i&&(0,n.jsx)(`div`,{className:`px-3 py-1 text-xs font-bold text-gray-500 bg-gray-50 uppercase tracking-wider`,children:e.group}),(0,n.jsx)(up,{option:e,selectedValues:a,handleOptionToggle:p})]},e.value)}):(0,n.jsx)(`div`,{className:lp.filterOption,children:(0,n.jsx)(`span`,{className:lp.filterOptionLabel,children:`No se encontraron opciones`})})]}),(0,n.jsxs)(`div`,{className:lp.filterModalActions,children:[(0,n.jsx)(cp,{onClick:h,level:`tertiary`,children:`Limpiar todo`}),(0,n.jsxs)(cp,{onClick:c,level:`primary`,children:[`Aplicar (`,a.length+(i?1:0),`)`]})]})]})};let fp=e=>{let{data:n,columns:r,defaultSort:i,defaultFilters:a={},defaultPageSize:o=10,pageSizeOptions:s=[10,25,50,100,200,300,400,500],initialConfig:c,onConfigChange:l,onPaginationChange:u,onFiltersChange:d,fetchData:f,rowKey:p=`id`,onRowSelectionChange:m,syncFiltersWithUrl:h=!1}=e,[g,_]=(0,t.useState)(c?.sort||i||void 0),[v,y]=(0,t.useState)(()=>{let e=c?.filters||a;if(h&&typeof window<`u`){let t=new URLSearchParams(window.location.search),n={...e};return t.forEach((e,i)=>{if(!r.find(e=>e.id===i))return;let a=n[i];if(a)Array.isArray(a.value)?n[i]={...a,value:[...a.value,e],type:`multiselect`}:n[i]={...a,value:[a.value,e],type:`multiselect`};else{let r=t.getAll(i);r.length>1?n[i]={type:`multiselect`,value:r}:n[i]={type:`text`,value:e}}}),n}return e}),[b,x]=(0,t.useState)(c?.columnOrder||r.map(e=>e.id)),[S,C]=(0,t.useState)(c?.hiddenColumns||[]),[w,T]=(0,t.useState)(c?.pinnedColumns||[]),[E,D]=(0,t.useState)([]),[O,k]=(0,t.useState)({}),[A,j]=(0,t.useState)({page:1,pageSize:c?.pagination?.pageSize||o,total:c?.pagination?.total||n.length}),[ee,M]=(0,t.useState)([]),[N,te]=(0,t.useState)(0),[ne,re]=(0,t.useState)(!1),[ie,P]=(0,t.useState)(0),ae=(0,t.useCallback)(async()=>{if(f){re(!0);try{let e={page_number:A.page,page_size:A.pageSize};g&&(e.order_by=`${g.direction===`desc`?`-`:``}${g.column}`),Object.entries(v).forEach(([t,n])=>{n.value&&r.find(e=>e.id===t)?.shouldBeRefetch&&(e[t]=n.value)});let t=await f(e);M(t.items),te(t.total_items)}catch(e){console.error(`Failed to fetch data:`,e)}finally{re(!1)}}},[f,A.page,A.pageSize,g,v,r]),oe=(0,t.useRef)(!0),se=(0,t.useRef)(v),ce=(0,t.useRef)(g),le=(0,t.useRef)(A.page),ue=(0,t.useRef)(A.pageSize),de=(0,t.useRef)(ie);(0,t.useEffect)(()=>{if(f){let e=!1,t=JSON.stringify(v)!==JSON.stringify(se.current);if(oe.current)e=!0,oe.current=!1;else if(ie!==de.current)e=!0,de.current=ie;else if(A.page!==le.current||A.pageSize!==ue.current)e=!0;else if(JSON.stringify(g)!==JSON.stringify(ce.current))e=!0;else if(t){let t=Object.keys(se.current),n=Object.keys(v),i=Array.from(new Set([...t,...n]));for(let t of i)if(JSON.stringify(se.current[t])!==JSON.stringify(v[t])&&r.find(e=>e.id===t)?.shouldBeRefetch===!0){e=!0;break}}le.current=A.page,ue.current=A.pageSize,ce.current=g,se.current=v,e&&ae()}},[ae,ie,f,A.page,A.pageSize,g,v,r]),(0,t.useEffect)(()=>{f&&j(e=>({...e,total:N}))},[N,f]),(0,t.useEffect)(()=>{let e=r.map(e=>e.id);x(t=>{let n=t.filter(t=>e.includes(t)),r=e.filter(e=>!n.includes(e));return[...n,...r]}),C(t=>t.filter(t=>e.includes(t))),T(t=>t.filter(t=>e.includes(t)))},[r]);let F=(0,t.useMemo)(()=>{let e=[];return e=f?[...ee]:[...n],Object.entries(v).forEach(([t,n])=>{let i=r.find(e=>e.id===t);i&&(f&&i.shouldBeRefetch||(e=e.filter(e=>{let t=typeof i.accessor==`function`?i.accessor(e):e[i.accessor],r=String(t||``).toLowerCase(),a=!0;return n.type===`text`&&n.value&&(a&&=r.includes(String(n.value).toLowerCase())),n.type===`select`&&n.value&&(a&&=r===String(n.value).toLowerCase()),n.type===`multiselect`&&Array.isArray(n.value)&&n.value.length>0&&(a&&=n.value.some(e=>r===String(e).toLowerCase())),a})))}),e},[n,v,r,f,ee]),fe=(0,t.useMemo)(()=>{if(f||!g)return F;let e=r.find(e=>e.id===g.column);return e?[...F].sort((t,n)=>{let r=typeof e.accessor==`function`?e.accessor(t):t[e.accessor],i=typeof e.accessor==`function`?e.accessor(n):n[e.accessor];if(r==null)return 1;if(i==null)return-1;let a=0;if(typeof r==`number`&&typeof i==`number`)a=r-i;else if(typeof r==`boolean`&&typeof i==`boolean`)a=r===i?0:r?1:-1;else if(r instanceof Date&&i instanceof Date)a=r.getTime()-i.getTime();else{let e=String(r).toLowerCase(),t=String(i).toLowerCase();a=e.localeCompare(t)}return g.direction===`desc`?a*-1:a}):F},[F,g,r,f]),pe=(0,t.useMemo)(()=>{if(f)return fe;let e=(A.page-1)*A.pageSize,t=e+A.pageSize;return fe.slice(e,t)},[fe,A.page,A.pageSize,f]);(0,t.useEffect)(()=>{f||j(e=>({...e,total:F.length,page:Math.min(e.page,Math.ceil(F.length/e.pageSize)||1)}))},[F.length,f]),(0,t.useEffect)(()=>{l?.({columns:r,sort:g,filters:v,pagination:A,columnOrder:b,hiddenColumns:S,pinnedColumns:w})},[g,v,b,S,w,A.pageSize,l,A,r]),(0,t.useEffect)(()=>{u?.(A)},[A,u]),(0,t.useEffect)(()=>{d?.(v)},[v,d]),(0,t.useEffect)(()=>{if(h&&typeof window<`u`){let e=new URLSearchParams(window.location.search);r.forEach(t=>{e.delete(t.id)}),Object.entries(v).forEach(([t,n])=>{n.value&&(Array.isArray(n.value)?n.value.forEach(n=>e.append(t,String(n))):e.set(t,String(n.value)))});let t=`${window.location.pathname}?${e.toString()}`;window.history.replaceState({},``,t)}},[v,h,r,f]);let me=(0,t.useCallback)(e=>{_(t=>t?.column===e?t.direction===`asc`?{column:e,direction:`desc`}:void 0:{column:e,direction:`asc`})},[]),he=(0,t.useCallback)((e,t,n=`text`)=>{y(r=>({...r,[e]:{type:n,value:t,options:r[e]?.options}})),j(e=>({...e,page:1}))},[]),ge=(0,t.useCallback)(e=>{y(t=>{let n={...t};return delete n[e],n})},[]),_e=(0,t.useCallback)(()=>{y({})},[]),I=(0,t.useCallback)(e=>{j(t=>({...t,page:e}))},[]),ve=(0,t.useCallback)(e=>{j(t=>({...t,pageSize:e,page:1}))},[]),ye=(0,t.useCallback)(e=>{x(e)},[]),be=(0,t.useCallback)(e=>{C(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e])},[]),xe=(0,t.useCallback)(e=>{T(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e])},[]),Se=(0,t.useCallback)(e=>{D(t=>{let n=t.includes(e)?t.filter(t=>t!==e):[...t,e];return m?.(n),n})},[m]),Ce=(0,t.useCallback)(e=>{D(t=>{let n=e.map(e=>typeof p==`function`?p(e):e[p]),r=n.every(e=>t.includes(e)),i;if(r)i=t.filter(e=>!n.includes(e));else{let e=n.filter(e=>!t.includes(e));i=[...t,...e]}return m?.(i),i})},[p,m]),we=(0,t.useCallback)((e,t)=>{k(n=>({...n,[e]:Math.max(50,t)}))},[]),Te=(0,t.useMemo)(()=>{let e=new Map(r.map(e=>[e.id,e])),t=b.map(t=>e.get(t)).filter(Boolean),n=new Set(t.map(e=>e.id)),i=r.filter(e=>!n.has(e.id));return[...t,...i].filter(e=>!S.includes(e.id))},[b,r,S]),L=(0,t.useCallback)(()=>{P(e=>e+1)},[]);return{state:{data:n,filteredData:F,paginatedData:pe,sortConfig:g,filters:v,pagination:A,columnOrder:b,hiddenColumns:S,pinnedColumns:w,selectedRows:E,columnWidths:O,loading:ne},orderedColumns:Te,pageSizeOptions:s,handleSort:me,handleFilter:he,clearFilter:ge,clearAllFilters:_e,handlePageChange:I,handlePageSizeChange:ve,handleColumnReorder:ye,handleToggleColumn:be,handleTogglePin:xe,handleRowSelect:Se,handleSelectAll:Ce,handleColumnResize:we,allColumns:r,refresh:L}};var pp=({data:e,columns:r,defaultSort:i,defaultFilters:a={},defaultPageSize:o=10,pageSizeOptions:s=[10,25,50,100,200,300,400,500],enableSorting:c=!0,enableFiltering:l=!0,enablePagination:u=!0,enableExport:p=!0,initialConfig:x,onConfigChange:S,className:C=``,labels:w={configuration:`Configuración`,columnVisibility:`Columnas visibles`,pagination:{showingItems:`Mostrando`,to:`a`,of:`de`,items:`elementos`,showPerPage:`Mostrar`,perPageItems:`elementos`},clearAllFilters:`Limpiar todos los filtros`,noData:`No hay datos disponibles`},enableColumnReordering:T=!0,enableColumnPinning:E=!1,enableColumnResizing:D=!1,enableRowSelection:O=!1,stickyActionsColumn:k=!1,rowKey:A=`id`,onRowSelectionChange:j,renderActions:ee,actionsColumnLabel:M,loading:N=!1,fetchData:te,onRefresh:ne,onPaginationChange:re,onFiltersChange:ie,syncFiltersWithUrl:P=!1})=>{let[ae,oe]=(0,t.useState)(null),[se,ce]=(0,t.useState)(null),[le,ue]=(0,t.useState)(!1),[de,F]=(0,t.useState)(null),fe=(0,t.useRef)(null),[pe,me]=(0,t.useState)(r),{state:he,orderedColumns:ge,handleSort:_e,handleFilter:I,clearAllFilters:ve,handlePageChange:ye,handlePageSizeChange:be,handleColumnReorder:xe,handleToggleColumn:Se,handleTogglePin:Ce,handleRowSelect:we,handleSelectAll:Te,handleColumnResize:L,refresh:Ee}=fp({data:e,columns:pe,defaultSort:i,defaultFilters:a,defaultPageSize:o,pageSizeOptions:s,initialConfig:x,onConfigChange:S,fetchData:te,onPaginationChange:re,onFiltersChange:ie,rowKey:A,onRowSelectionChange:j,syncFiltersWithUrl:P}),{paginatedData:De,sortConfig:Oe,filters:ke,pagination:R,hiddenColumns:Ae,pinnedColumns:je,selectedRows:Me,columnWidths:Ne,loading:Pe}=he,Fe=N||Pe;(0,t.useEffect)(()=>me(r),[r]);let Ie=(0,t.useMemo)(()=>{let e=[...ge],t=e.filter(e=>e.isAction),r=[...e.filter(e=>!e.isAction),...t];return O&&r.unshift({id:`selection-synthetic`,label:``,accessor:e=>e[A],width:50,minWidth:50,render:({row:e})=>{let t=e[A];return(0,n.jsx)(`input`,{type:`checkbox`,className:`w-4 h-4 accent-redi-primary cursor-pointer`,checked:Me.includes(t),onChange:e=>{e.stopPropagation(),we(t)},onClick:e=>e.stopPropagation()})},isAction:!1,filterable:!1,sortable:!1,draggable:!1}),ee&&r.push({id:`actions-synthetic`,label:M||``,accessor:e=>e[A],render:({row:e,column:t,index:n})=>ee({row:e,index:n,column:t}),width:100,isAction:!0,filterable:!1,sortable:!1,draggable:!1}),r},[ge,ee,M,O,Me,A,we]),Le=(0,t.useRef)(null);(0,t.useEffect)(()=>{let e=e=>{if(!Le.current)return;let{columnId:t,startX:n,startWidth:r}=Le.current,i=e.clientX-n;L(t,r+i)},t=()=>{Le.current=null,document.body.style.cursor=`default`,document.body.style.userSelect=`auto`};if(D)return document.addEventListener(`mousemove`,e),document.addEventListener(`mouseup`,t),()=>{document.removeEventListener(`mousemove`,e),document.removeEventListener(`mouseup`,t)}},[D,L]);let Re=(e,t,n)=>{e.preventDefault(),e.stopPropagation(),Le.current={columnId:t,startX:e.clientX,startWidth:n},document.body.style.cursor=`col-resize`,document.body.style.userSelect=`none`},ze=(e,t)=>{oe(t),e.dataTransfer.effectAllowed=`move`,e.dataTransfer.setData(`text/html`,``)},Be=(e,t)=>{e.preventDefault(),e.dataTransfer.dropEffect=`move`,ce(t)},Ve=()=>{ce(null)},He=(e,t)=>{if(e.preventDefault(),ae===null)return;let n=Ie[ae].id,r=Ie[t].id;if(n===r){oe(null),ce(null);return}let i=e.currentTarget.getBoundingClientRect(),a=e.clientX-i.left>i.width/2,o=[...he.columnOrder],s=o.indexOf(n),c=o.indexOf(r);s===-1||c===-1||(o.splice(s,1),c=o.indexOf(r),a?o.splice(c+1,0,n):o.splice(c,0,n),xe(o),oe(null),ce(null))},Ue=()=>{oe(null),ce(null)},We=()=>{if(!p)return;let e=Ie.filter(e=>!e.isAction);$f(he.filteredData,e,`table-data.xlsx`)},Ge=e=>{F(de===e?null:e)},Ke=t=>{let n=pe.find(e=>e.id===t);if(!n)return[];let r=e.filter(e=>Object.entries(ke).every(([n,r])=>{if(n===t||!r.value)return!0;let i=pe.find(e=>e.id===n);if(!i)return!0;let a=typeof i.accessor==`function`?i.accessor(e):e[i.accessor],o=String(a||``).toLowerCase(),s=!0;return r.type===`text`&&(s=o.includes(String(r.value).toLowerCase())),r.type===`select`&&(s=o===String(r.value).toLowerCase()),r.type===`multiselect`&&Array.isArray(r.value)&&(s=r.value.some(e=>o===String(e).toLowerCase())),s})),i=new Map;r.forEach(e=>{let t=typeof n.accessor==`function`?n.accessor(e):e[n.accessor],r=ep(t);i.set(r,(i.get(r)||0)+1)});let a=new Map;e.forEach(e=>{let t=typeof n.accessor==`function`?n.accessor(e):e[n.accessor],r=ep(t);a.set(r,(a.get(r)||0)+1)});let o=[],s=[];return a.forEach((e,t)=>{let n=i.get(t);n!==void 0&&n>0?o.push({value:t,count:n,label:`${t} (${n})`,group:`Disponibles`}):s.push({value:t,count:e,label:`${t} (0)`,group:`Otros`})}),o.sort((e,t)=>e.value.localeCompare(t.value)),s.sort((e,t)=>e.value.localeCompare(t.value)),s.length===0?o.map(e=>({...e,group:void 0})):[...o,...s]},qe=Object.values(ke).some(e=>e.type===`text`&&e.value||e.type===`select`&&e.value||e.type===`multiselect`&&Array.isArray(e.value)&&e.value.length>0),Je=(0,t.useMemo)(()=>{let e=[];return Object.entries(ke).forEach(([t,n])=>{let r=pe.find(e=>e.id===t);r&&(n.type===`text`&&n.value?e.push({columnId:t,columnLabel:r.label,value:String(n.value),displayValue:String(n.value)}):n.type===`multiselect`&&Array.isArray(n.value)&&n.value.length>0&&n.value.forEach(n=>{e.push({columnId:t,columnLabel:r.label,value:n,displayValue:n})}))}),e},[ke,pe]),Ye=(e,t)=>{let n=ke[e];if(n.type===`text`)I(e,``,`text`);else if(n.type===`multiselect`&&Array.isArray(n.value)){let r=n.value.filter(e=>e!==t);I(e,r,`multiselect`)}};(0,t.useEffect)(()=>{let e=e=>{fe.current&&!fe.current.contains(e.target)&&ue(!1)};return le&&document.addEventListener(`mousedown`,e),()=>{document.removeEventListener(`mousedown`,e)}},[le]);let Xe=Math.ceil(R.total/R.pageSize),Ze=e=>Ne[e.id]?Ne[e.id]:e.width?e.width:e.isAction?100:150+(e.filterable?50:0),Qe=()=>{Ee(),ne?.()},$e=({columnLabel:e,value:t,onRemove:r})=>(0,n.jsxs)(`div`,{className:`inline-flex items-center gap-1 bg-blue-100 text-blue-800 font-medium px-4 py-1 rounded-full border border-blue-300 hover:bg-blue-200 transition-colors`,children:[(0,n.jsxs)(`span`,{className:`font-semibold`,children:[e,`:`]}),(0,n.jsx)(`span`,{className:`max-w-[200px] truncate`,children:t}),(0,n.jsx)(`button`,{onClick:r,className:`ml-1 hover:bg-blue-300 rounded-full transition-colors cursor-pointer`,"aria-label":`Remove filter ${e}: ${t}`,children:(0,n.jsx)(d,{size:22})})]});return(0,n.jsxs)(`div`,{className:`w-full bg-redi-background border border-solid border-gray-500 rounded-xl overflow-hidden font-family-base shadow ${C}`,children:[(0,n.jsxs)(`div`,{className:`flex items-center justify-between p-4 bg-transparent border-b border-solid border-gray-400`,children:[(0,n.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(te||ne)&&(0,n.jsx)(cp,{level:`secondary`,onClick:Qe,loading:Fe,children:(0,n.jsx)(b,{size:18})}),(0,n.jsxs)(`div`,{className:`relative`,children:[(0,n.jsxs)(cp,{level:`secondary`,onClick:()=>ue(!le),children:[(0,n.jsx)(h,{}),(0,n.jsx)(`span`,{className:`hidden md:block`,children:w.configuration})]}),le&&(0,n.jsx)(`div`,{className:`absolute top-full left-0 bg-white border border-solid border-gray-300 rounded-md shadow-lg z-1000 mt-2 min-w-2xs max-w-xs opacity-100 visible p-4`,ref:fe,children:(0,n.jsxs)(`div`,{className:`mb-4 last:mb-0`,children:[(0,n.jsx)(`div`,{className:`text-sm font-semibold text-redi-text mb-2 uppercase`,children:w.columnVisibility}),(0,n.jsx)(`div`,{className:`flex flex-col gap-2`,children:pe.filter(e=>!e.isAction).map(e=>{let t=!Ae.includes(e.id);return(0,n.jsxs)(`div`,{className:`flex items-center justify-between gap-2 hover:bg-gray-50 p-1 rounded`,children:[(0,n.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,n.jsx)(`input`,{type:`checkbox`,className:`w-4 h-4 accent-redi-primary cursor-pointer`,checked:t,onChange:()=>Se(e.id),id:`col-visibility-${e.id}`}),(0,n.jsx)(`label`,{htmlFor:`col-visibility-${e.id}`,className:`text-sm text-redi-text cursor-pointer select-none`,children:e.label})]}),t&&(0,n.jsxs)(`div`,{className:`flex items-center gap-1`,children:[E&&(0,n.jsx)(cp,{level:`icon`,onClick:t=>{t.stopPropagation(),Ce(e.id)},"aria-label":je.includes(e.id)?`Unpin column`:`Pin column`,className:`p-1 hover:bg-gray-200 rounded-full`,children:je.includes(e.id)?(0,n.jsx)(v,{size:14,className:`text-redi-primary`}):(0,n.jsx)(y,{size:14,className:`text-gray-400`})}),(0,n.jsx)(cp,{level:`icon`,onClick:t=>{t.stopPropagation();let n=pe.map(t=>t.id===e.id?{...t,draggable:!t.draggable}:t);me(n)},"aria-label":e.draggable?`Disable drag`:`Enable drag`,className:`p-1 hover:bg-gray-200 rounded-full`,children:(0,n.jsx)(m,{active:!!e.draggable,size:14,label:`Draggable`})}),(0,n.jsx)(cp,{level:`icon`,onClick:t=>{t.stopPropagation();let n=pe.map(t=>t.id===e.id?{...t,filterable:!t.filterable}:t);me(n)},"aria-label":e.filterable?`Disable filter`:`Enable filter`,className:`p-1 hover:bg-gray-200 rounded-full`,children:e.filterable?(0,n.jsx)(g,{size:14,color:`#fa8c16`}):(0,n.jsx)(_,{size:14,color:`#9ca3af`})})]})]},e.id)})})]})})]}),l&&qe&&(0,n.jsx)(cp,{level:`icon`,onClick:ve,label:w.clearAllFilters,children:(0,n.jsx)(d,{color:`white`})}),Je.length>0&&(0,n.jsx)(`div`,{className:`flex items-center gap-2 flex-wrap ml-2`,children:Je.map((e,t)=>(0,n.jsx)($e,{columnLabel:e.columnLabel,value:e.displayValue,onRemove:()=>Ye(e.columnId,e.value)},`${e.columnId}-${e.value}-${t}`))})]}),(0,n.jsx)(`div`,{className:`flex items-center gap-2`,children:p&&(0,n.jsx)(cp,{level:`secondary`,onClick:We,children:(0,n.jsx)(f,{size:18})})})]}),(0,n.jsx)(`div`,{className:`overflow-x-auto max-h-[600px] md:max-h-none min-h-[500px] overflow-y-auto md:overflow-y-visible bg-white relative`,children:(0,n.jsxs)(`table`,{className:`w-full border-separate border-spacing-0 table-auto text-sm relative`,"aria-label":`Data Table`,children:[(0,n.jsx)(`thead`,{children:(0,n.jsx)(`tr`,{children:Ie.map((e,t)=>{let r=Ze(e),i=je.includes(e.id),a=0;if(i)for(let e=0;e<t;e++)je.includes(Ie[e].id)&&(a+=Ze(Ie[e]));let o={width:r,minWidth:r,maxWidth:r,...i?{position:`sticky`,left:a,zIndex:20,backgroundColor:`#f9fafb`}:{}};return(0,n.jsx)(`th`,{className:`bg-gray-50 border-b border-solid border-gray-200 text-left font-semibold text-redi-text p-0 sticky top-0 z-10 select-none hover:bg-gray-200
|
|
108
108
|
${ae===t?`opacity-50 bg-gray-300`:``}
|
|
109
109
|
${se===t?`bg-redi-primary-bg border-l border-solid border-redi-primary`:``}
|
|
110
110
|
${se===t?`bg-redi-primary-bg border-l border-solid border-redi-primary`:``}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@redi.run/redi-components",
|
|
3
3
|
"description": "This project was created to define the style of the UI and improve the UX in all projects from REDI",
|
|
4
|
-
"version": "0.0.
|
|
4
|
+
"version": "0.0.50",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "Jonathan Manchego Sosa",
|