@crispy-seed/data-table 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/LICENSE +201 -0
  2. package/NOTICE +30 -0
  3. package/README.md +103 -0
  4. package/dist/DataTable-12s-8LMBtS2u.cjs +1532 -0
  5. package/dist/DataTable-12s-Bd20OuMs.js +1482 -0
  6. package/dist/DataTable-12s-Zml1x9Kr-12s-CTRzgvMT.cjs +161 -0
  7. package/dist/DataTable-12s-Zml1x9Kr-12s-Coi-3lUa.js +153 -0
  8. package/dist/Menu-12s-Db_zr1AP.cjs +104 -0
  9. package/dist/Menu-12s-Di5JADW4.js +78 -0
  10. package/dist/Select-12s-1Uh7XbkG.js +219 -0
  11. package/dist/Select-12s-D8DdKT-U.cjs +250 -0
  12. package/dist/body-cells-12s-BnOVUTKN.js +453 -0
  13. package/dist/body-cells-12s-BoOTcg-l.cjs +462 -0
  14. package/dist/column-calc-12s-C6IPSOaF.js +129 -0
  15. package/dist/column-calc-12s-CKuSpe-l.cjs +149 -0
  16. package/dist/column-layout-12s-CTu5yT_D.cjs +120 -0
  17. package/dist/column-layout-12s-s7wnxkMN.js +99 -0
  18. package/dist/column-menu-12s-BPE9N1gs.cjs +427 -0
  19. package/dist/column-menu-12s-mRBk-4oa.js +407 -0
  20. package/dist/data-table-recipe.css +442 -0
  21. package/dist/data-table-recipe.layered.css +505 -0
  22. package/dist/editors-12s-BO9Mp034.js +525 -0
  23. package/dist/editors-12s-DO8TZkYV.cjs +555 -0
  24. package/dist/index.cjs +14 -0
  25. package/dist/index.d.ts +323 -0
  26. package/dist/index.js +10 -0
  27. package/dist/resize-12s-jQY-PX67.cjs +58 -0
  28. package/dist/resize-12s-nsMvrmLt.js +58 -0
  29. package/dist/states-12s-CLO_uVue.cjs +125 -0
  30. package/dist/states-12s-DEFSxJCO.js +122 -0
  31. package/dist/styles.css +14660 -0
  32. package/dist/toolbar-12s-AVU-sbDW.js +69 -0
  33. package/dist/toolbar-12s-CaLgJrDo.cjs +71 -0
  34. package/dist/useDataTable-12s-BHiDUubw-12s-CBeCwTe7.js +61 -0
  35. package/dist/useDataTable-12s-BHiDUubw-12s-Dgvt7XDk.cjs +61 -0
  36. package/dist/useDataTableColumnCalc-12s-DTQQTtEJ-12s-CvD14JYo.cjs +207 -0
  37. package/dist/useDataTableColumnCalc-12s-DTQQTtEJ-12s-DsEse3uq.js +183 -0
  38. package/dist/useDataTableColumns-12s-Cn2ZAzFL-12s-CD6goR59.js +289 -0
  39. package/dist/useDataTableColumns-12s-Cn2ZAzFL-12s-CUk_CpYT.cjs +292 -0
  40. package/dist/useDataTableEdit-12s-9Wb_UCrN-12s-BoOHq3GB.js +98 -0
  41. package/dist/useDataTableEdit-12s-9Wb_UCrN-12s-De6YHBba.cjs +98 -0
  42. package/dist/useDataTableFilter-12s-ZzbmWMin-12s-CWyBeFna.js +74 -0
  43. package/dist/useDataTableFilter-12s-ZzbmWMin-12s-lpjzZY3_.cjs +74 -0
  44. package/dist/useDataTableInfiniteScroll-12s-8ZG31URd-12s-BexjP6iO.js +104 -0
  45. package/dist/useDataTableInfiniteScroll-12s-8ZG31URd-12s-Bt8gojr9.cjs +104 -0
  46. package/dist/useDataTableRow-12s-CPYaDa1p-12s-BmUSAnPe.js +30 -0
  47. package/dist/useDataTableRow-12s-CPYaDa1p-12s-D-DRjwAe.cjs +30 -0
  48. package/dist/useDataTableScroll-12s-BKDCr0en-12s-C7f2vHeG.js +61 -0
  49. package/dist/useDataTableScroll-12s-BKDCr0en-12s-CUvUYMtt.cjs +61 -0
  50. package/dist/useDataTableSearch-12s-Ck3iWcpX-12s-B-65V6gH.js +37 -0
  51. package/dist/useDataTableSearch-12s-Ck3iWcpX-12s-DhVfN2Hq.cjs +37 -0
  52. package/dist/useDataTableSelection-12s-BIDtiRQq-12s-IS__VAnU.cjs +71 -0
  53. package/dist/useDataTableSelection-12s-BIDtiRQq-12s-O6M_BhrH.js +71 -0
  54. package/dist/useDataTableSort-12s-DvJYtmeS-12s-C5VGnsq4.cjs +78 -0
  55. package/dist/useDataTableSort-12s-DvJYtmeS-12s-DABSNt6U.js +78 -0
  56. package/package.json +78 -0
@@ -0,0 +1,122 @@
1
+ 'use client';
2
+ function __insertCSS(code) {
3
+ if (!code || typeof document == 'undefined') return
4
+ let head = document.head || document.getElementsByTagName('head')[0]
5
+ let style = document.createElement('style')
6
+ style.type = 'text/css'
7
+ head.appendChild(style)
8
+ ;style.styleSheet ? (style.styleSheet.cssText = code) : style.appendChild(document.createTextNode(code))
9
+ }
10
+
11
+ import { jsxs, jsx } from 'react/jsx-runtime';
12
+ import 'react';
13
+ import { D as DataTableCell, y as IconPlusLine_default } from './DataTable-12s-Bd20OuMs.js';
14
+ import { u as useDataTableContext } from './DataTable-12s-Zml1x9Kr-12s-Coi-3lUa.js';
15
+
16
+ /**
17
+ * A small inline spinner, not seed's own `ProgressCircle` -- that component's
18
+ * smallest size (24px) is already bigger than crisp's own measured 16px loading
19
+ * icon, the same gap `editors.tsx`'s `EditPendingIndicator` already works around for
20
+ * its own (smaller still, 14px) in-cell pending spinner. Same shape, one size up,
21
+ * reusing the SAME global `rotate` keyframe (this file's own qvism recipe slot
22
+ * nests `.seed-data-table-loading-spinner` under it) rather than a third near-
23
+ * identical spinner.
24
+ */ function LoadingSpinner() {
25
+ return /*#__PURE__*/ jsxs("svg", {
26
+ className: "seed-data-table-loading-spinner",
27
+ width: 16,
28
+ height: 16,
29
+ viewBox: "0 0 16 16",
30
+ fill: "none",
31
+ role: "presentation",
32
+ "aria-hidden": "true",
33
+ children: [
34
+ /*#__PURE__*/ jsx("circle", {
35
+ cx: 8,
36
+ cy: 8,
37
+ r: 6.5,
38
+ stroke: "currentColor",
39
+ strokeOpacity: 0.25,
40
+ strokeWidth: 2
41
+ }),
42
+ /*#__PURE__*/ jsx("path", {
43
+ d: "M14.5 8a6.5 6.5 0 0 0-6.5-6.5",
44
+ stroke: "currentColor",
45
+ strokeWidth: 2,
46
+ strokeLinecap: "round"
47
+ })
48
+ ]
49
+ });
50
+ }
51
+ /** The full-body empty/error row's own content -- one `<tr>`/`<td colSpan>` wrapping
52
+ * this, rendered by `DataTable.tsx` itself (it already owns `totalCols`). Shared by
53
+ * `empty` and `error` alike, matching crisp's own single `.crisp-datatable-empty`
54
+ * class doing double duty for both. */ function EmptyStateContent({ children, classNames }) {
55
+ return /*#__PURE__*/ jsx("div", {
56
+ className: classNames.emptyState,
57
+ children: children
58
+ });
59
+ }
60
+ /** The full-body loading row's own content (spinner + `loadingLabel`). */ function LoadingStateContent({ label, classNames }) {
61
+ return /*#__PURE__*/ jsxs("div", {
62
+ className: classNames.loadingState,
63
+ children: [
64
+ /*#__PURE__*/ jsx(LoadingSpinner, {}),
65
+ label
66
+ ]
67
+ });
68
+ }
69
+ /**
70
+ * Infinite scroll's own sentinel + "loading more" row -- the LAST child of
71
+ * `<tbody>` while `hasMore` (the headless `useDataTableInfiniteScroll`'s own
72
+ * return, read off context the same way `SelectAllCheckbox` reads `selectionState`).
73
+ * Renders nothing once `hasMore` is false -- there is no manual pagination
74
+ * fallback, matching DATATABLE-ATTIO-SPEC.md's auto-load-only contract. While a
75
+ * fetch is in flight (`loadingMore`) the SAME row shows the compact spinner
76
+ * (`loadingState`'s own `[data-inline]` modifier, a normal 36px row); at rest it's
77
+ * an empty sentinel row the IntersectionObserver watches.
78
+ */ function InfiniteScrollRow({ colSpan, classNames, loadingLabel }) {
79
+ const { sentinelRef, hasMore, loadingMore } = useDataTableContext();
80
+ if (!hasMore) return null;
81
+ return /*#__PURE__*/ jsx("tr", {
82
+ ref: sentinelRef,
83
+ "aria-hidden": loadingMore ? undefined : "true",
84
+ children: /*#__PURE__*/ jsx(DataTableCell, {
85
+ colSpan: colSpan,
86
+ children: loadingMore && /*#__PURE__*/ jsxs("div", {
87
+ className: classNames.loadingState,
88
+ "data-inline": "",
89
+ children: [
90
+ /*#__PURE__*/ jsx(LoadingSpinner, {}),
91
+ loadingLabel
92
+ ]
93
+ })
94
+ })
95
+ });
96
+ }
97
+ /** The trailing "+ New" add-row footer -- crisp's own `.crisp-datatable-addrow`
98
+ * inside a zero-padding `.crisp-datatable-addcell`, its own `<tfoot>` (a table can
99
+ * have more than one; the ColumnCalc summary footer, when both are present, is a
100
+ * separate one, matching crisp's own two independent `<TableFooter>` rows). */ function AddRowFooter({ onAddRow, addRowLabel, colSpan, classNames }) {
101
+ return /*#__PURE__*/ jsx("tfoot", {
102
+ children: /*#__PURE__*/ jsx("tr", {
103
+ children: /*#__PURE__*/ jsx("td", {
104
+ className: classNames.addRowCell,
105
+ colSpan: colSpan,
106
+ children: /*#__PURE__*/ jsxs("button", {
107
+ type: "button",
108
+ className: classNames.addRow,
109
+ onClick: onAddRow,
110
+ children: [
111
+ /*#__PURE__*/ jsx(IconPlusLine_default, {
112
+ size: 15
113
+ }),
114
+ addRowLabel
115
+ ]
116
+ })
117
+ })
118
+ })
119
+ });
120
+ }
121
+
122
+ export { AddRowFooter as A, EmptyStateContent as E, InfiniteScrollRow as I, LoadingStateContent as L };