UNPKG

dgz-ui-shared

Version:

Custom ui library using React.js, Shadcn/ui, TailwindCSS, Typescript, dgz-ui library

135 lines (134 loc) 2.9 kB
import { useEffect as g, useMemo as O, useCallback as m, useState as E } from "react"; import { l as a } from "./lodash-CYNxjS-I.js"; import { u as j } from "./useColumnsStore-CllOTGkk.js"; import { S as C } from "./SortOrder-CwuehjY1.js"; const D = ({ key: n, columns: r = [] }) => { const { storedColumns: t, setColumns: u } = j(); g(() => { if (a.isEmpty(a.get(t, n)) && !a.isEmpty(r)) { const o = {}; r.forEach((s) => { a.set(o, s.key, !!s.hidden); }), u({ ...t, [n]: o }); } }, [n, r, t, u]); const f = O(() => { const o = a.get(t, n, {}); return r.filter((s) => s.type !== "action").map((s) => { const { hidden: e, ...c } = s; return { ...c, hidden: a.get(o, s.key, !!e) }; }); }, [n, t, r]), d = m( (o, s) => { const e = a.get(t, n, {}); a.set(e, o.key, s), u({ ...t, [n]: e }); }, [n, u, t] ), i = m(() => { const o = {}; r.forEach((s) => { a.set(o, s.key, !!s.hidden); }), u({ ...t, [n]: o }); }, [n, u, t, r]); return { formattedColumns: f, handleColumnsChange: d, resetColumns: i }; }, K = ({ rows: n = [], defaultSelectedRows: r }) => { const [t, u] = E(), f = m( (s, e) => { u((c) => { const l = n.map((b) => b[s]) || [], h = (c == null ? void 0 : c.filter((b) => !l.includes(b))) || []; return e ? [...h, ...l] : h; }); }, [n] ); g(() => { r && u( (s) => a.isEqual(s, r) ? s : r ); }, [r]); const d = m( (s, e) => { u((c) => { const l = c || []; return e ? [...l, s] : l.filter((h) => h !== s); }); }, [] ), i = m( (s) => !!(t != null && t.includes(s)), [t] ), o = m( (s) => { const e = n.map((l) => l[s]) || []; let c = 0; for (const l of e) t != null && t.includes(l) && c++; return e.length === c ? !0 : c ? "indeterminate" : !1; }, [t, n] ); return { selectedRows: t, isRowSelected: i, isAllRowsSelected: o, handleSelectAllRows: f, handleSelectRow: d }; }, q = ({ sortField: n, sortOrder: r, onSortOrderChange: t }) => { const [u, f] = E(); g(() => { n && f( (i) => (i == null ? void 0 : i.sortField) === r && (i == null ? void 0 : i.sortOrder) === r ? i : { sortField: n, sortOrder: r || void 0 } ); }, [n, r]); const d = m( (i) => { f((o) => { const e = (o == null ? void 0 : o.sortField) === i ? (o == null ? void 0 : o.sortOrder) === C.ASC ? C.DESC : void 0 : C.ASC, c = { sortField: e ? i : void 0, sortOrder: e }; return t && t(c), c; }); }, [t] ); return { sortObject: u, handleSort: d }; }; export { K as a, D as b, q as u };