@tumaet/prompt-ui-components 1.0.7 → 1.0.10

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 (139) hide show
  1. package/dist/components/MultiSelect.js.map +1 -1
  2. package/dist/components/ScoreLevelSelector.js +23 -0
  3. package/dist/components/ScoreLevelSelector.js.map +1 -0
  4. package/dist/components/getLevelConfig.js +55 -0
  5. package/dist/components/getLevelConfig.js.map +1 -0
  6. package/dist/components/index.js +2 -0
  7. package/dist/components/index.js.map +1 -1
  8. package/dist/components/table/PromptTable/PromptTable.js +61 -0
  9. package/dist/components/table/PromptTable/PromptTable.js.map +1 -0
  10. package/dist/components/table/PromptTable/PromptTableTypes.js +2 -0
  11. package/dist/components/table/PromptTable/PromptTableTypes.js.map +1 -0
  12. package/dist/components/table/{actions → PromptTable/actions}/ActionDialog.js +1 -1
  13. package/dist/components/table/PromptTable/actions/ActionDialog.js.map +1 -0
  14. package/dist/components/table/{actions → PromptTable/actions}/ActionsMenu.js +1 -1
  15. package/dist/components/table/PromptTable/actions/ActionsMenu.js.map +1 -0
  16. package/dist/components/table/{actions → PromptTable/actions}/DropdownMenuItemForRowAction.js +1 -1
  17. package/dist/components/table/PromptTable/actions/DropdownMenuItemForRowAction.js.map +1 -0
  18. package/dist/components/table/{columnDefs → PromptTable/columns/columnDefs}/actionColumn.js +1 -1
  19. package/dist/components/table/PromptTable/columns/columnDefs/actionColumn.js.map +1 -0
  20. package/dist/components/table/{columnDefs → PromptTable/columns/columnDefs}/selectColumn.js +1 -1
  21. package/dist/components/table/PromptTable/columns/columnDefs/selectColumn.js.map +1 -0
  22. package/dist/components/table/PromptTable/columns/generateColumns.js.map +1 -0
  23. package/dist/components/table/PromptTable/filters/ActiveTableFiltersBar.js.map +1 -0
  24. package/dist/components/table/{filters → PromptTable/filters}/FilterBadge.js +1 -1
  25. package/dist/components/table/PromptTable/filters/FilterBadge.js.map +1 -0
  26. package/dist/components/table/{filters → PromptTable/filters}/NumericRangeFilterSection.js +1 -1
  27. package/dist/components/table/PromptTable/filters/NumericRangeFilterSection.js.map +1 -0
  28. package/dist/components/table/{filters → PromptTable/filters}/SelectFilterSection.js +1 -1
  29. package/dist/components/table/PromptTable/filters/SelectFilterSection.js.map +1 -0
  30. package/dist/components/table/{filters → PromptTable/filters}/TableFiltersMenu.js +3 -3
  31. package/dist/components/table/PromptTable/filters/TableFiltersMenu.js.map +1 -0
  32. package/dist/components/table/PromptTable/filters/applyFiltersToColumns.js.map +1 -0
  33. package/dist/components/table/PromptTable/filters/filterFns.js.map +1 -0
  34. package/dist/components/table/PromptTable/filters/filterbadgeFns.js.map +1 -0
  35. package/dist/components/table/{tableBarComponents → PromptTable/tableBarComponents}/TableActionsButton.js +2 -2
  36. package/dist/components/table/PromptTable/tableBarComponents/TableActionsButton.js.map +1 -0
  37. package/dist/components/table/{tableBarComponents → PromptTable/tableBarComponents}/TableColumnVisibilityButton.js +2 -2
  38. package/dist/components/table/PromptTable/tableBarComponents/TableColumnVisibilityButton.js.map +1 -0
  39. package/dist/components/table/PromptTable/tableBarComponents/TableInfoText.js +36 -0
  40. package/dist/components/table/PromptTable/tableBarComponents/TableInfoText.js.map +1 -0
  41. package/dist/components/table/PromptTable/tableBarComponents/TablePagination.js +10 -0
  42. package/dist/components/table/PromptTable/tableBarComponents/TablePagination.js.map +1 -0
  43. package/dist/components/table/PromptTable/tableBarComponents/TableSearch.js +28 -0
  44. package/dist/components/table/PromptTable/tableBarComponents/TableSearch.js.map +1 -0
  45. package/dist/components/table/{tableComponents → PromptTable/tableComponents}/SortableHeader.js +1 -1
  46. package/dist/components/table/PromptTable/tableComponents/SortableHeader.js.map +1 -0
  47. package/dist/components/table/{tableComponents → PromptTable/tableComponents}/TableCheckbox.js +1 -1
  48. package/dist/components/table/PromptTable/tableComponents/TableCheckbox.js.map +1 -0
  49. package/dist/components/table/{tableComponents → PromptTable/tableComponents}/TableHeaders.js +1 -1
  50. package/dist/components/table/PromptTable/tableComponents/TableHeaders.js.map +1 -0
  51. package/dist/components/table/{tableComponents → PromptTable/tableComponents}/TableRows.js +1 -1
  52. package/dist/components/table/PromptTable/tableComponents/TableRows.js.map +1 -0
  53. package/dist/components/table/PromptTable/util/createChangeHandler.js +14 -0
  54. package/dist/components/table/PromptTable/util/createChangeHandler.js.map +1 -0
  55. package/dist/components/table/PromptTableURL/PromptTableURL.js +46 -0
  56. package/dist/components/table/PromptTableURL/PromptTableURL.js.map +1 -0
  57. package/dist/components/table/PromptTableURL/PromptTableURLTypes.js +2 -0
  58. package/dist/components/table/PromptTableURL/PromptTableURLTypes.js.map +1 -0
  59. package/dist/components/table/PromptTableURL/urlParsing/urlParsing.js +120 -0
  60. package/dist/components/table/PromptTableURL/urlParsing/urlParsing.js.map +1 -0
  61. package/dist/components/table/PromptTableURL/urlParsing/useSyncTableStateToUrl.js +55 -0
  62. package/dist/components/table/PromptTableURL/urlParsing/useSyncTableStateToUrl.js.map +1 -0
  63. package/dist/components/table/PromptTableURL/urlParsing/useTableUrlState.js +28 -0
  64. package/dist/components/table/PromptTableURL/urlParsing/useTableUrlState.js.map +1 -0
  65. package/dist/components/table/index.js +5 -3
  66. package/dist/components/table/index.js.map +1 -1
  67. package/dist/types/components/ScoreLevelSelector.d.ts +14 -0
  68. package/dist/types/components/getLevelConfig.d.ts +8 -0
  69. package/dist/types/components/index.d.ts +2 -0
  70. package/dist/types/components/table/PromptTable/PromptTable.d.ts +4 -0
  71. package/dist/types/components/table/{TableTypes.d.ts → PromptTable/PromptTableTypes.d.ts} +13 -13
  72. package/dist/types/components/table/{actions → PromptTable/actions}/ActionDialog.d.ts +1 -1
  73. package/dist/types/components/table/{actions → PromptTable/actions}/ActionsMenu.d.ts +1 -1
  74. package/dist/types/components/table/{actions → PromptTable/actions}/DropdownMenuItemForRowAction.d.ts +1 -1
  75. package/dist/types/components/table/{columnDefs → PromptTable/columns/columnDefs}/actionColumn.d.ts +1 -1
  76. package/dist/types/components/table/{filters → PromptTable/filters}/ActiveTableFiltersBar.d.ts +1 -1
  77. package/dist/types/components/table/PromptTable/filters/TableFiltersMenu.d.ts +10 -0
  78. package/dist/types/components/table/{filters → PromptTable/filters}/applyFiltersToColumns.d.ts +1 -1
  79. package/dist/types/components/table/{filters → PromptTable/filters}/filterbadgeFns.d.ts +1 -1
  80. package/dist/types/components/table/{tableBarComponents → PromptTable/tableBarComponents}/TableActionsButton.d.ts +1 -1
  81. package/dist/types/components/table/{tableBarComponents → PromptTable/tableBarComponents}/TableColumnVisibilityButton.d.ts +1 -1
  82. package/dist/types/components/table/PromptTable/tableBarComponents/TableInfoText.d.ts +9 -0
  83. package/dist/types/components/table/{tableBarComponents/TableInfoText.d.ts → PromptTable/tableBarComponents/TablePagination.d.ts} +2 -2
  84. package/dist/types/components/table/PromptTable/tableBarComponents/TableSearch.d.ts +11 -0
  85. package/dist/types/components/table/PromptTable/util/createChangeHandler.d.ts +2 -0
  86. package/dist/types/components/table/PromptTableURL/PromptTableURL.d.ts +4 -0
  87. package/dist/types/components/table/PromptTableURL/PromptTableURLTypes.d.ts +13 -0
  88. package/dist/types/components/table/PromptTableURL/urlParsing/urlParsing.d.ts +7 -0
  89. package/dist/types/components/table/PromptTableURL/urlParsing/useSyncTableStateToUrl.d.ts +11 -0
  90. package/dist/types/components/table/PromptTableURL/urlParsing/useTableUrlState.d.ts +18 -0
  91. package/dist/types/components/table/index.d.ts +5 -3
  92. package/dist/types/components/ui/chart.d.ts +6 -6
  93. package/package.json +24 -23
  94. package/dist/components/table/PromptTable.js +0 -111
  95. package/dist/components/table/PromptTable.js.map +0 -1
  96. package/dist/components/table/TableTypes.js +0 -2
  97. package/dist/components/table/TableTypes.js.map +0 -1
  98. package/dist/components/table/actions/ActionDialog.js.map +0 -1
  99. package/dist/components/table/actions/ActionsMenu.js.map +0 -1
  100. package/dist/components/table/actions/DropdownMenuItemForRowAction.js.map +0 -1
  101. package/dist/components/table/columnDefs/actionColumn.js.map +0 -1
  102. package/dist/components/table/columnDefs/selectColumn.js.map +0 -1
  103. package/dist/components/table/filters/ActiveTableFiltersBar.js.map +0 -1
  104. package/dist/components/table/filters/FilterBadge.js.map +0 -1
  105. package/dist/components/table/filters/NumericRangeFilterSection.js.map +0 -1
  106. package/dist/components/table/filters/SelectFilterSection.js.map +0 -1
  107. package/dist/components/table/filters/TableFiltersMenu.js.map +0 -1
  108. package/dist/components/table/filters/applyFiltersToColumns.js.map +0 -1
  109. package/dist/components/table/filters/filterFns.js.map +0 -1
  110. package/dist/components/table/filters/filterbadgeFns.js.map +0 -1
  111. package/dist/components/table/generateColumns.js.map +0 -1
  112. package/dist/components/table/tableBarComponents/TableActionsButton.js.map +0 -1
  113. package/dist/components/table/tableBarComponents/TableColumnVisibilityButton.js.map +0 -1
  114. package/dist/components/table/tableBarComponents/TableInfoText.js +0 -6
  115. package/dist/components/table/tableBarComponents/TableInfoText.js.map +0 -1
  116. package/dist/components/table/tableBarComponents/TableSearch.js +0 -7
  117. package/dist/components/table/tableBarComponents/TableSearch.js.map +0 -1
  118. package/dist/components/table/tableComponents/SortableHeader.js.map +0 -1
  119. package/dist/components/table/tableComponents/TableCheckbox.js.map +0 -1
  120. package/dist/components/table/tableComponents/TableHeaders.js.map +0 -1
  121. package/dist/components/table/tableComponents/TableRows.js.map +0 -1
  122. package/dist/types/components/table/PromptTable.d.ts +0 -3
  123. package/dist/types/components/table/filters/TableFiltersMenu.d.ts +0 -8
  124. package/dist/types/components/table/tableBarComponents/TableSearch.d.ts +0 -7
  125. /package/dist/components/table/{generateColumns.js → PromptTable/columns/generateColumns.js} +0 -0
  126. /package/dist/components/table/{filters → PromptTable/filters}/ActiveTableFiltersBar.js +0 -0
  127. /package/dist/components/table/{filters → PromptTable/filters}/applyFiltersToColumns.js +0 -0
  128. /package/dist/components/table/{filters → PromptTable/filters}/filterFns.js +0 -0
  129. /package/dist/components/table/{filters → PromptTable/filters}/filterbadgeFns.js +0 -0
  130. /package/dist/types/components/table/{columnDefs → PromptTable/columns/columnDefs}/selectColumn.d.ts +0 -0
  131. /package/dist/types/components/table/{generateColumns.d.ts → PromptTable/columns/generateColumns.d.ts} +0 -0
  132. /package/dist/types/components/table/{filters → PromptTable/filters}/FilterBadge.d.ts +0 -0
  133. /package/dist/types/components/table/{filters → PromptTable/filters}/NumericRangeFilterSection.d.ts +0 -0
  134. /package/dist/types/components/table/{filters → PromptTable/filters}/SelectFilterSection.d.ts +0 -0
  135. /package/dist/types/components/table/{filters → PromptTable/filters}/filterFns.d.ts +0 -0
  136. /package/dist/types/components/table/{tableComponents → PromptTable/tableComponents}/SortableHeader.d.ts +0 -0
  137. /package/dist/types/components/table/{tableComponents → PromptTable/tableComponents}/TableCheckbox.d.ts +0 -0
  138. /package/dist/types/components/table/{tableComponents → PromptTable/tableComponents}/TableHeaders.d.ts +0 -0
  139. /package/dist/types/components/table/{tableComponents → PromptTable/tableComponents}/TableRows.d.ts +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TableHeaders.js","sourceRoot":"","sources":["../../../../../src/components/table/PromptTable/tableComponents/TableHeaders.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAoC,MAAM,uBAAuB,CAAA;AACpF,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAE9D,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAMjD,MAAM,UAAU,YAAY,CAAQ,EAAE,KAAK,EAA4B;IACrE,OAAO,CACL,KAAC,WAAW,IAAC,SAAS,EAAC,cAAc,YAClC,KAAK,CAAC,eAAe,EAAE,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAC5C,KAAC,QAAQ,cACN,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CACnC,KAAC,SAAS,IAAiB,SAAS,EAAC,mBAAmB,YACrD,gBAAgB,CAAC,MAAM,CAAC,IADX,MAAM,CAAC,EAAE,CAEb,CACb,CAAC,IALW,WAAW,CAAC,EAAE,CAMlB,CACZ,CAAC,GACU,CACf,CAAA;AACH,CAAC;AAED,SAAS,gBAAgB,CAAQ,MAA6C;IAC5E,IAAI,MAAM,CAAC,aAAa;QAAE,OAAO,IAAI,CAAA;IAErC,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAA;IAE1C,IAAI,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC1D,OAAO,KAAC,cAAc,IAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,GAAI,CAAA;IAC9D,CAAC;IAED,OAAO,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,CAAA;AAC7C,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { flexRender } from '@tanstack/react-table';
3
- import { TableBody, TableCell, TableRow } from '../../ui';
3
+ import { TableBody, TableCell, TableRow } from '../../../ui';
4
4
  export function TableRows({ table, onRowClick }) {
5
5
  const rows = table.getRowModel().rows;
6
6
  if (!rows.length) {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TableRows.js","sourceRoot":"","sources":["../../../../../src/components/table/PromptTable/tableComponents/TableRows.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAuB,MAAM,uBAAuB,CAAA;AAEvE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAO5D,MAAM,UAAU,SAAS,CAAQ,EAAE,KAAK,EAAE,UAAU,EAAyB;IAC3E,MAAM,IAAI,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,CAAA;IAErC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QACjB,OAAO,CACL,KAAC,SAAS,cACR,KAAC,QAAQ,cACP,KAAC,SAAS,IAAC,OAAO,EAAE,KAAK,CAAC,aAAa,EAAE,CAAC,MAAM,EAAE,SAAS,EAAC,kBAAkB,4BAElE,GACH,GACD,CACb,CAAA;IACH,CAAC;IAED,OAAO,CACL,KAAC,SAAS,cACP,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CACjB,KAAC,QAAQ,kBAEK,GAAG,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,EACxD,OAAO,EAAE,GAAG,EAAE;gBACZ,IAAI,UAAU,EAAE,CAAC;oBACf,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;gBAC1B,CAAC;YACH,CAAC,EACD,SAAS,EAAC,gBAAgB,YAEzB,GAAG,CAAC,eAAe,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CACnC,KAAC,SAAS,IAAe,SAAS,EAAC,kCAAkC,YAClE,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,IAD5C,IAAI,CAAC,EAAE,CAEX,CACb,CAAC,IAbG,GAAG,CAAC,EAAE,CAcF,CACZ,CAAC,GACQ,CACb,CAAA;AACH,CAAC"}
@@ -0,0 +1,14 @@
1
+ export function createChangeHandler(setState, externalOnChange) {
2
+ return (updaterOrValue) => {
3
+ let resolvedNext;
4
+ setState((current) => {
5
+ resolvedNext =
6
+ typeof updaterOrValue === 'function'
7
+ ? updaterOrValue(current)
8
+ : updaterOrValue;
9
+ return resolvedNext;
10
+ });
11
+ externalOnChange?.(resolvedNext);
12
+ };
13
+ }
14
+ //# sourceMappingURL=createChangeHandler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createChangeHandler.js","sourceRoot":"","sources":["../../../../../src/components/table/PromptTable/util/createChangeHandler.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,mBAAmB,CACjC,QAAiD,EACjD,gBAAqC;IAErC,OAAO,CAAC,cAAc,EAAE,EAAE;QACxB,IAAI,YAAe,CAAA;QACnB,QAAQ,CAAC,CAAC,OAAO,EAAE,EAAE;YACnB,YAAY;gBACV,OAAO,cAAc,KAAK,UAAU;oBAClC,CAAC,CAAE,cAAgC,CAAC,OAAO,CAAC;oBAC5C,CAAC,CAAC,cAAc,CAAA;YACpB,OAAO,YAAY,CAAA;QACrB,CAAC,CAAC,CAAA;QACF,gBAAgB,EAAE,CAAC,YAAa,CAAC,CAAA;IACnC,CAAC,CAAA;AACH,CAAC"}
@@ -0,0 +1,46 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { PromptTable } from '../PromptTable/PromptTable';
3
+ import { useTableUrlState } from './urlParsing/useTableUrlState';
4
+ import { useSyncTableStateToUrl } from './urlParsing/useSyncTableStateToUrl';
5
+ export function PromptTableURL({ sortingQueryParam, filteringQueryParam, onSortingChange, onSearchChange, onColumnFiltersChange, ...tableProps }) {
6
+ const sortingQueryParamEnabled = sortingQueryParam?.enabled ?? true;
7
+ const sortingQueryParamName = sortingQueryParam?.paramName ?? 'sorting';
8
+ const filteringQueryParamEnabled = filteringQueryParam?.enabled ?? true;
9
+ const filteringQueryParamName = filteringQueryParam?.paramName ?? 'filters';
10
+ const globalSearchQueryParamName = filteringQueryParam?.globalSearchParamName ?? 'search';
11
+ const { sorting, setSorting, search, setSearch, columnFilters, setColumnFilters } = useTableUrlState({
12
+ initialState: tableProps.initialState,
13
+ filters: tableProps.filters,
14
+ sortingQueryParamEnabled,
15
+ sortingQueryParamName,
16
+ filteringQueryParamEnabled,
17
+ filteringQueryParamName,
18
+ globalSearchQueryParamName,
19
+ });
20
+ useSyncTableStateToUrl({
21
+ sorting,
22
+ columnFilters,
23
+ search,
24
+ sortingQueryParamEnabled,
25
+ sortingQueryParamName,
26
+ filteringQueryParamEnabled,
27
+ filteringQueryParamName,
28
+ globalSearchQueryParamName,
29
+ });
30
+ return (_jsx(PromptTable, { ...tableProps, initialState: {
31
+ ...tableProps.initialState,
32
+ sorting,
33
+ columnFilters,
34
+ globalFilter: search,
35
+ }, onSortingChange: (s) => {
36
+ setSorting(s);
37
+ onSortingChange?.(s);
38
+ }, onSearchChange: (s) => {
39
+ setSearch(s);
40
+ onSearchChange?.(s);
41
+ }, onColumnFiltersChange: (f) => {
42
+ setColumnFilters(f);
43
+ onColumnFiltersChange?.(f);
44
+ } }));
45
+ }
46
+ //# sourceMappingURL=PromptTableURL.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PromptTableURL.js","sourceRoot":"","sources":["../../../../src/components/table/PromptTableURL/PromptTableURL.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAA;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAA;AAG5E,MAAM,UAAU,cAAc,CAAmB,EAC/C,iBAAiB,EACjB,mBAAmB,EACnB,eAAe,EACf,cAAc,EACd,qBAAqB,EACrB,GAAG,UAAU,EACU;IACvB,MAAM,wBAAwB,GAAG,iBAAiB,EAAE,OAAO,IAAI,IAAI,CAAA;IACnE,MAAM,qBAAqB,GAAG,iBAAiB,EAAE,SAAS,IAAI,SAAS,CAAA;IACvE,MAAM,0BAA0B,GAAG,mBAAmB,EAAE,OAAO,IAAI,IAAI,CAAA;IACvE,MAAM,uBAAuB,GAAG,mBAAmB,EAAE,SAAS,IAAI,SAAS,CAAA;IAC3E,MAAM,0BAA0B,GAAG,mBAAmB,EAAE,qBAAqB,IAAI,QAAQ,CAAA;IAEzF,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,gBAAgB,EAAE,GAC/E,gBAAgB,CAAC;QACf,YAAY,EAAE,UAAU,CAAC,YAAY;QACrC,OAAO,EAAE,UAAU,CAAC,OAAO;QAC3B,wBAAwB;QACxB,qBAAqB;QACrB,0BAA0B;QAC1B,uBAAuB;QACvB,0BAA0B;KAC3B,CAAC,CAAA;IAEJ,sBAAsB,CAAC;QACrB,OAAO;QACP,aAAa;QACb,MAAM;QACN,wBAAwB;QACxB,qBAAqB;QACrB,0BAA0B;QAC1B,uBAAuB;QACvB,0BAA0B;KAC3B,CAAC,CAAA;IAEF,OAAO,CACL,KAAC,WAAW,OACN,UAAU,EACd,YAAY,EAAE;YACZ,GAAG,UAAU,CAAC,YAAY;YAC1B,OAAO;YACP,aAAa;YACb,YAAY,EAAE,MAAM;SACrB,EACD,eAAe,EAAE,CAAC,CAAC,EAAE,EAAE;YACrB,UAAU,CAAC,CAAC,CAAC,CAAA;YACb,eAAe,EAAE,CAAC,CAAC,CAAC,CAAA;QACtB,CAAC,EACD,cAAc,EAAE,CAAC,CAAC,EAAE,EAAE;YACpB,SAAS,CAAC,CAAC,CAAC,CAAA;YACZ,cAAc,EAAE,CAAC,CAAC,CAAC,CAAA;QACrB,CAAC,EACD,qBAAqB,EAAE,CAAC,CAAC,EAAE,EAAE;YAC3B,gBAAgB,CAAC,CAAC,CAAC,CAAA;YACnB,qBAAqB,EAAE,CAAC,CAAC,CAAC,CAAA;QAC5B,CAAC,GACD,CACH,CAAA;AACH,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=PromptTableURLTypes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PromptTableURLTypes.js","sourceRoot":"","sources":["../../../../src/components/table/PromptTableURL/PromptTableURLTypes.ts"],"names":[],"mappings":""}
@@ -0,0 +1,120 @@
1
+ export function parseSortingFromUrl(search, paramName) {
2
+ const serializedSorting = new URLSearchParams(search).get(paramName);
3
+ if (!serializedSorting)
4
+ return [];
5
+ return serializedSorting
6
+ .split(',')
7
+ .map((segment) => {
8
+ const [encodedId, order = 'asc'] = segment.split(':');
9
+ if (!encodedId)
10
+ return null;
11
+ if (order !== 'asc' && order !== 'desc')
12
+ return null;
13
+ let id;
14
+ try {
15
+ id = decodeURIComponent(encodedId);
16
+ }
17
+ catch {
18
+ return null;
19
+ }
20
+ if (!id)
21
+ return null;
22
+ return {
23
+ id,
24
+ desc: order === 'desc',
25
+ };
26
+ })
27
+ .filter((entry) => entry !== null);
28
+ }
29
+ export function serializeSortingForUrl(sorting) {
30
+ if (sorting.length === 0)
31
+ return null;
32
+ return sorting
33
+ .map(({ id, desc }) => `${encodeURIComponent(id)}:${desc ? 'desc' : 'asc'}`)
34
+ .join(',');
35
+ }
36
+ export function parseColumnFiltersFromUrl(search, paramName, tableFilters) {
37
+ const serializedFilters = new URLSearchParams(search).get(paramName);
38
+ if (!serializedFilters)
39
+ return [];
40
+ try {
41
+ const parsed = JSON.parse(serializedFilters);
42
+ if (!Array.isArray(parsed))
43
+ return [];
44
+ return parsed
45
+ .map((filter) => {
46
+ if (!filter || typeof filter !== 'object')
47
+ return null;
48
+ if (!('id' in filter) || typeof filter.id !== 'string')
49
+ return null;
50
+ if (!('value' in filter))
51
+ return null;
52
+ if (!isValidFilterValue(filter.id, filter.value, tableFilters))
53
+ return null;
54
+ return {
55
+ id: filter.id,
56
+ value: filter.value,
57
+ };
58
+ })
59
+ .filter((entry) => entry !== null);
60
+ }
61
+ catch {
62
+ return [];
63
+ }
64
+ }
65
+ export function serializeColumnFiltersForUrl(columnFilters) {
66
+ if (columnFilters.length === 0)
67
+ return null;
68
+ return JSON.stringify(columnFilters);
69
+ }
70
+ export function parseSearchFromUrl(search, paramName) {
71
+ return new URLSearchParams(search).get(paramName);
72
+ }
73
+ function isValidFilterValue(id, value, tableFilters) {
74
+ if (value === null || value === undefined)
75
+ return false;
76
+ const tableFilter = tableFilters?.find((filter) => filter.id === id);
77
+ if (!tableFilter)
78
+ return isJsonCompatibleFilterValue(value);
79
+ if (tableFilter.type === 'select') {
80
+ return Array.isArray(value) && value.every((entry) => typeof entry === 'string');
81
+ }
82
+ if (tableFilter.type === 'numericRange') {
83
+ if (!isPlainObject(value))
84
+ return false;
85
+ const allowedKeys = new Set(['min', 'max', 'noScore']);
86
+ for (const key of Object.keys(value)) {
87
+ if (!allowedKeys.has(key))
88
+ return false;
89
+ }
90
+ const min = value.min;
91
+ const max = value.max;
92
+ const noScore = value.noScore;
93
+ if (min !== undefined && typeof min !== 'string')
94
+ return false;
95
+ if (max !== undefined && typeof max !== 'string')
96
+ return false;
97
+ if (noScore !== undefined && typeof noScore !== 'boolean')
98
+ return false;
99
+ return true;
100
+ }
101
+ return isJsonCompatibleFilterValue(value);
102
+ }
103
+ function isPlainObject(value) {
104
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
105
+ }
106
+ function isJsonCompatibleFilterValue(value) {
107
+ if (value === null || value === undefined)
108
+ return false;
109
+ if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {
110
+ return true;
111
+ }
112
+ if (Array.isArray(value)) {
113
+ return value.every((entry) => isJsonCompatibleFilterValue(entry));
114
+ }
115
+ if (isPlainObject(value)) {
116
+ return Object.values(value).every((entry) => isJsonCompatibleFilterValue(entry));
117
+ }
118
+ return false;
119
+ }
120
+ //# sourceMappingURL=urlParsing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"urlParsing.js","sourceRoot":"","sources":["../../../../../src/components/table/PromptTableURL/urlParsing/urlParsing.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ import { useEffect } from 'react';
2
+ import { serializeColumnFiltersForUrl, serializeSortingForUrl } from './urlParsing';
3
+ export function useSyncTableStateToUrl({ sorting, columnFilters, search, sortingQueryParamEnabled, sortingQueryParamName, filteringQueryParamEnabled, filteringQueryParamName, globalSearchQueryParamName, }) {
4
+ useEffect(() => {
5
+ if (typeof window === 'undefined')
6
+ return;
7
+ const url = new URL(window.location.href);
8
+ if (sortingQueryParamEnabled) {
9
+ const serializedSorting = serializeSortingForUrl(sorting);
10
+ if (serializedSorting) {
11
+ url.searchParams.set(sortingQueryParamName, serializedSorting);
12
+ }
13
+ else {
14
+ url.searchParams.delete(sortingQueryParamName);
15
+ }
16
+ }
17
+ else {
18
+ url.searchParams.delete(sortingQueryParamName);
19
+ }
20
+ if (filteringQueryParamEnabled) {
21
+ const serializedFilters = serializeColumnFiltersForUrl(columnFilters);
22
+ if (serializedFilters) {
23
+ url.searchParams.set(filteringQueryParamName, serializedFilters);
24
+ }
25
+ else {
26
+ url.searchParams.delete(filteringQueryParamName);
27
+ }
28
+ if (search.length > 0) {
29
+ url.searchParams.set(globalSearchQueryParamName, search);
30
+ }
31
+ else {
32
+ url.searchParams.delete(globalSearchQueryParamName);
33
+ }
34
+ }
35
+ else {
36
+ url.searchParams.delete(filteringQueryParamName);
37
+ url.searchParams.delete(globalSearchQueryParamName);
38
+ }
39
+ const nextUrl = `${url.pathname}${url.search}${url.hash}`;
40
+ const currentUrl = `${window.location.pathname}${window.location.search}${window.location.hash}`;
41
+ if (nextUrl !== currentUrl) {
42
+ window.history.replaceState(window.history.state, '', nextUrl);
43
+ }
44
+ }, [
45
+ sorting,
46
+ columnFilters,
47
+ search,
48
+ sortingQueryParamEnabled,
49
+ sortingQueryParamName,
50
+ filteringQueryParamEnabled,
51
+ filteringQueryParamName,
52
+ globalSearchQueryParamName,
53
+ ]);
54
+ }
55
+ //# sourceMappingURL=useSyncTableStateToUrl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSyncTableStateToUrl.js","sourceRoot":"","sources":["../../../../../src/components/table/PromptTableURL/urlParsing/useSyncTableStateToUrl.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACjC,OAAO,EAAE,4BAA4B,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAA;AAEnF,MAAM,UAAU,sBAAsB,CAAC,EACrC,OAAO,EACP,aAAa,EACb,MAAM,EACN,wBAAwB,EACxB,qBAAqB,EACrB,0BAA0B,EAC1B,uBAAuB,EACvB,0BAA0B,GAU3B;IACC,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,OAAO,MAAM,KAAK,WAAW;YAAE,OAAM;QAEzC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;QAEzC,IAAI,wBAAwB,EAAE,CAAC;YAC7B,MAAM,iBAAiB,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAA;YACzD,IAAI,iBAAiB,EAAE,CAAC;gBACtB,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,qBAAqB,EAAE,iBAAiB,CAAC,CAAA;YAChE,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAA;YAChD,CAAC;QACH,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAA;QAChD,CAAC;QAED,IAAI,0BAA0B,EAAE,CAAC;YAC/B,MAAM,iBAAiB,GAAG,4BAA4B,CAAC,aAAa,CAAC,CAAA;YACrE,IAAI,iBAAiB,EAAE,CAAC;gBACtB,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,uBAAuB,EAAE,iBAAiB,CAAC,CAAA;YAClE,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAAA;YAClD,CAAC;YAED,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtB,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,0BAA0B,EAAE,MAAM,CAAC,CAAA;YAC1D,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,0BAA0B,CAAC,CAAA;YACrD,CAAC;QACH,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAAA;YAChD,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,0BAA0B,CAAC,CAAA;QACrD,CAAC;QAED,MAAM,OAAO,GAAG,GAAG,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,IAAI,EAAE,CAAA;QACzD,MAAM,UAAU,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAA;QAEhG,IAAI,OAAO,KAAK,UAAU,EAAE,CAAC;YAC3B,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,EAAE,OAAO,CAAC,CAAA;QAChE,CAAC;IACH,CAAC,EAAE;QACD,OAAO;QACP,aAAa;QACb,MAAM;QACN,wBAAwB;QACxB,qBAAqB;QACrB,0BAA0B;QAC1B,uBAAuB;QACvB,0BAA0B;KAC3B,CAAC,CAAA;AACJ,CAAC"}
@@ -0,0 +1,28 @@
1
+ import { useState } from 'react';
2
+ import { parseColumnFiltersFromUrl, parseSearchFromUrl, parseSortingFromUrl } from './urlParsing';
3
+ export function useTableUrlState({ initialState, filters, sortingQueryParamEnabled, sortingQueryParamName, filteringQueryParamEnabled, filteringQueryParamName, globalSearchQueryParamName, }) {
4
+ const [sorting, setSorting] = useState(() => {
5
+ if (!sortingQueryParamEnabled || typeof window === 'undefined') {
6
+ return initialState?.sorting ?? [];
7
+ }
8
+ const urlSorting = parseSortingFromUrl(window.location.search, sortingQueryParamName);
9
+ return urlSorting.length > 0 ? urlSorting : (initialState?.sorting ?? []);
10
+ });
11
+ const [search, setSearch] = useState(() => {
12
+ const initialSearchValue = typeof initialState?.globalFilter === 'string' ? initialState.globalFilter : '';
13
+ if (!filteringQueryParamEnabled || typeof window === 'undefined') {
14
+ return initialSearchValue;
15
+ }
16
+ return (parseSearchFromUrl(window.location.search, globalSearchQueryParamName) ?? initialSearchValue);
17
+ });
18
+ const [columnFilters, setColumnFilters] = useState(() => {
19
+ const initialColumnFilters = initialState?.columnFilters ?? [];
20
+ if (!filteringQueryParamEnabled || typeof window === 'undefined') {
21
+ return initialColumnFilters;
22
+ }
23
+ const urlFilters = parseColumnFiltersFromUrl(window.location.search, filteringQueryParamName, filters);
24
+ return urlFilters.length > 0 ? urlFilters : initialColumnFilters;
25
+ });
26
+ return { sorting, setSorting, search, setSearch, columnFilters, setColumnFilters };
27
+ }
28
+ //# sourceMappingURL=useTableUrlState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useTableUrlState.js","sourceRoot":"","sources":["../../../../../src/components/table/PromptTableURL/urlParsing/useTableUrlState.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAEhC,OAAO,EAAE,yBAAyB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAEjG,MAAM,UAAU,gBAAgB,CAAC,EAC/B,YAAY,EACZ,OAAO,EACP,wBAAwB,EACxB,qBAAqB,EACrB,0BAA0B,EAC1B,uBAAuB,EACvB,0BAA0B,GAS3B;IACC,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAe,GAAG,EAAE;QACxD,IAAI,CAAC,wBAAwB,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;YAC/D,OAAO,YAAY,EAAE,OAAO,IAAI,EAAE,CAAA;QACpC,CAAC;QAED,MAAM,UAAU,GAAG,mBAAmB,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAA;QACrF,OAAO,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,YAAY,EAAE,OAAO,IAAI,EAAE,CAAC,CAAA;IAC3E,CAAC,CAAC,CAAA;IAEF,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAS,GAAG,EAAE;QAChD,MAAM,kBAAkB,GACtB,OAAO,YAAY,EAAE,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAA;QAEjF,IAAI,CAAC,0BAA0B,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;YACjE,OAAO,kBAAkB,CAAA;QAC3B,CAAC;QAED,OAAO,CACL,kBAAkB,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,0BAA0B,CAAC,IAAI,kBAAkB,CAC7F,CAAA;IACH,CAAC,CAAC,CAAA;IAEF,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAAqB,GAAG,EAAE;QAC1E,MAAM,oBAAoB,GAAG,YAAY,EAAE,aAAa,IAAI,EAAE,CAAA;QAE9D,IAAI,CAAC,0BAA0B,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;YACjE,OAAO,oBAAoB,CAAA;QAC7B,CAAC;QAED,MAAM,UAAU,GAAG,yBAAyB,CAC1C,MAAM,CAAC,QAAQ,CAAC,MAAM,EACtB,uBAAuB,EACvB,OAAO,CACR,CAAA;QACD,OAAO,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,oBAAoB,CAAA;IAClE,CAAC,CAAC,CAAA;IAEF,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,gBAAgB,EAAE,CAAA;AACpF,CAAC"}
@@ -1,4 +1,6 @@
1
- export * from './tableComponents/SortableHeader';
2
- export * from './PromptTable';
3
- export * from './TableTypes';
1
+ export * from './PromptTable/PromptTable';
2
+ export * from './PromptTable/PromptTableTypes';
3
+ export * from './PromptTable/tableComponents/SortableHeader';
4
+ export * from './PromptTableURL/PromptTableURL';
5
+ export * from './PromptTableURL/PromptTableURLTypes';
4
6
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/table/index.ts"],"names":[],"mappings":"AAAA,cAAc,kCAAkC,CAAA;AAChD,cAAc,eAAe,CAAA;AAC7B,cAAc,cAAc,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/table/index.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAA;AACzC,cAAc,gCAAgC,CAAA;AAC9C,cAAc,8CAA8C,CAAA;AAC5D,cAAc,iCAAiC,CAAA;AAC/C,cAAc,sCAAsC,CAAA"}
@@ -0,0 +1,14 @@
1
+ import type { ReactNode } from 'react';
2
+ import { ScoreLevel } from '@tumaet/prompt-shared-state';
3
+ export interface ScoreLevelSelectorProps {
4
+ selectedScore?: ScoreLevel;
5
+ onScoreChange: (value: ScoreLevel) => void;
6
+ completed: boolean;
7
+ descriptionsByLevel: Record<ScoreLevel, string>;
8
+ labelsByLevel?: Partial<Record<ScoreLevel, string>>;
9
+ showIndicators?: boolean;
10
+ indicators?: Partial<Record<ScoreLevel, ReactNode[]>>;
11
+ hideUnselectedOnDesktop?: boolean;
12
+ className?: string;
13
+ }
14
+ export declare const ScoreLevelSelector: ({ selectedScore, onScoreChange, completed, descriptionsByLevel, labelsByLevel, showIndicators, indicators, hideUnselectedOnDesktop, className, }: ScoreLevelSelectorProps) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,8 @@
1
+ import { ScoreLevel } from '@tumaet/prompt-shared-state';
2
+ export interface ScoreLevelConfig {
3
+ title: string;
4
+ textColor: string;
5
+ selectedBg: string;
6
+ border: string;
7
+ }
8
+ export declare const getLevelConfig: (level: ScoreLevel, unknown?: boolean) => ScoreLevelConfig;
@@ -10,4 +10,6 @@ export * from './LoadingPage';
10
10
  export * from './ManagementPageHeader';
11
11
  export * from './MultiSelect';
12
12
  export * from './SaveChangesAlert';
13
+ export * from './ScoreLevelSelector';
13
14
  export * from './UnauthorizedPage';
15
+ export * from './getLevelConfig';
@@ -0,0 +1,4 @@
1
+ import { ReactElement } from 'react';
2
+ import { WithId } from './PromptTableTypes';
3
+ import { TableProps } from './PromptTableTypes';
4
+ export declare function PromptTable<T extends WithId>({ data, actions, columns, filters, onRowClick, initialState, onSortingChange, onSearchChange, onColumnFiltersChange, pageSize: initialPageSize, }: TableProps<T>): ReactElement;
@@ -1,4 +1,16 @@
1
- import { Column, ColumnDef, InitialTableState, Table } from '@tanstack/react-table';
1
+ import { Column, Table, ColumnDef, ColumnFiltersState, InitialTableState, SortingState } from '@tanstack/react-table';
2
+ export interface TableProps<T extends WithId> {
3
+ data: T[];
4
+ actions?: RowAction<T>[];
5
+ columns?: ColumnDef<T>[];
6
+ filters?: TableFilter[];
7
+ onRowClick?: (rowData: T) => void;
8
+ initialState?: InitialTableState;
9
+ onSortingChange?: (sorting: SortingState) => void;
10
+ onSearchChange?: (search: string) => void;
11
+ onColumnFiltersChange?: (columnFilters: ColumnFiltersState) => void;
12
+ pageSize?: number;
13
+ }
2
14
  export interface WithId {
3
15
  id: string;
4
16
  }
@@ -37,16 +49,4 @@ export type TableFilter = (TableFilterBase & {
37
49
  table: Table<any>;
38
50
  }) => React.ReactNode;
39
51
  });
40
- export interface TableProps<Type extends WithId> {
41
- data: Type[];
42
- actions?: RowAction<Type>[];
43
- columns?: ColumnDef<Type>[];
44
- filters?: TableFilter[];
45
- onRowClick?: (rowData: Type) => void;
46
- initialState?: InitialTableState;
47
- sortingQueryParam?: {
48
- enabled?: boolean;
49
- paramName?: string;
50
- };
51
- }
52
52
  export {};
@@ -1,5 +1,5 @@
1
1
  import { ReactElement } from 'react';
2
- import { RowAction, WithId } from '../TableTypes';
2
+ import { RowAction, WithId } from '../PromptTableTypes';
3
3
  interface ActionDialogProps<T extends WithId> {
4
4
  action: RowAction<T>;
5
5
  selectedRows: T[];
@@ -1,5 +1,5 @@
1
1
  import { ReactElement } from 'react';
2
- import { RowAction, WithId } from '../TableTypes';
2
+ import { RowAction, WithId } from '../PromptTableTypes';
3
3
  interface ActionsMenuProps<Type extends WithId> {
4
4
  selectedRows: Type[];
5
5
  triggerComponent: React.ReactNode;
@@ -1,5 +1,5 @@
1
1
  import { ReactElement } from 'react';
2
- import { RowAction, WithId } from '../TableTypes';
2
+ import { RowAction, WithId } from '../PromptTableTypes';
3
3
  interface DropdownMenuItemForRowActionProps<Type extends WithId> {
4
4
  action: RowAction<Type>;
5
5
  rows: Type[];
@@ -1,5 +1,5 @@
1
1
  import { ColumnDef } from '@tanstack/react-table';
2
- import { RowAction } from '../TableTypes';
2
+ import { RowAction } from '../../PromptTableTypes';
3
3
  export declare const actionColumn: <T extends {
4
4
  id: string;
5
5
  }>(actions: RowAction<T>[]) => ColumnDef<T>;
@@ -1,4 +1,4 @@
1
- import { TableFilter } from '../TableTypes';
1
+ import { TableFilter } from '../PromptTableTypes';
2
2
  import { Table } from '@tanstack/react-table';
3
3
  interface ActiveTableFiltersBarProps {
4
4
  table: Table<any>;
@@ -0,0 +1,10 @@
1
+ import { Table } from '@tanstack/react-table';
2
+ import { ReactNode } from 'react';
3
+ import { TableFilter } from '../PromptTableTypes';
4
+ interface TableFiltersMenuProps {
5
+ table: Table<any>;
6
+ filters: TableFilter[];
7
+ trigger?: ReactNode;
8
+ }
9
+ export declare function TableFiltersMenu({ table, filters, trigger }: TableFiltersMenuProps): import("react/jsx-runtime").JSX.Element;
10
+ export {};
@@ -1,3 +1,3 @@
1
1
  import { ColumnDef } from '@tanstack/react-table';
2
- import { TableFilter } from '../TableTypes';
2
+ import { TableFilter } from '../PromptTableTypes';
3
3
  export declare function addFiltersToColumns<T>(columns: ColumnDef<T>[], filters?: TableFilter[]): ColumnDef<T>[];
@@ -1,4 +1,4 @@
1
- import { TableFilter } from '../TableTypes';
1
+ import { TableFilter } from '../PromptTableTypes';
2
2
  export declare function displaySelectActiveFilterBadgeValue(filtervalue: unknown): string;
3
3
  export declare function displayMinMaxActiveFilterBadgeValue(filtervalue: unknown): string;
4
4
  export declare function tableFilterTypeDisplayFunction(tableFilter: TableFilter): (filtervalue: unknown) => string;
@@ -1,6 +1,6 @@
1
1
  import { Table as ReactTable } from '@tanstack/react-table';
2
2
  import { ReactElement } from 'react';
3
- import { RowAction, WithId } from '../TableTypes';
3
+ import { RowAction, WithId } from '../PromptTableTypes';
4
4
  interface TableActionsButtonProps<TData extends WithId> {
5
5
  actions: RowAction<TData>[];
6
6
  table: ReactTable<TData>;
@@ -1,5 +1,5 @@
1
1
  import { Table } from '@tanstack/react-table';
2
- import { WithId } from '../TableTypes';
2
+ import { WithId } from '../PromptTableTypes';
3
3
  interface TableColumnVisibilityButtonProps<Type> {
4
4
  table: Table<Type>;
5
5
  }
@@ -0,0 +1,9 @@
1
+ import { Table as ReactTable } from '@tanstack/react-table';
2
+ import { ReactElement } from 'react';
3
+ import { TableFilter } from '../PromptTableTypes';
4
+ interface TableInfoTextProps<TData> {
5
+ table: ReactTable<TData>;
6
+ filters?: TableFilter[];
7
+ }
8
+ export declare function TableInfoText<TData>({ table, filters, }: TableInfoTextProps<TData>): ReactElement;
9
+ export {};
@@ -1,7 +1,7 @@
1
1
  import { Table as ReactTable } from '@tanstack/react-table';
2
2
  import { ReactElement } from 'react';
3
- interface TableInfoTextProps<TData> {
3
+ interface TablePaginationProps<TData> {
4
4
  table: ReactTable<TData>;
5
5
  }
6
- export declare function TableInfoText<TData>({ table }: TableInfoTextProps<TData>): ReactElement;
6
+ export declare function TablePagination<TData>({ table }: TablePaginationProps<TData>): ReactElement;
7
7
  export {};
@@ -0,0 +1,11 @@
1
+ import { ReactElement } from 'react';
2
+ import { Table as ReactTable } from '@tanstack/react-table';
3
+ import { TableFilter } from '../PromptTableTypes';
4
+ interface TableSearchProps {
5
+ value: string;
6
+ onChange: (value: string) => void;
7
+ table?: ReactTable<any>;
8
+ filters?: TableFilter[];
9
+ }
10
+ export declare function TableSearch({ value, onChange, table, filters }: TableSearchProps): ReactElement;
11
+ export {};
@@ -0,0 +1,2 @@
1
+ import { OnChangeFn } from '@tanstack/react-table';
2
+ export declare function createChangeHandler<T>(setState: React.Dispatch<React.SetStateAction<T>>, externalOnChange?: (value: T) => void): OnChangeFn<T>;
@@ -0,0 +1,4 @@
1
+ import { ReactElement } from 'react';
2
+ import { WithId } from '../PromptTable/PromptTableTypes';
3
+ import { PromptTableURLProps } from './PromptTableURLTypes';
4
+ export declare function PromptTableURL<T extends WithId>({ sortingQueryParam, filteringQueryParam, onSortingChange, onSearchChange, onColumnFiltersChange, ...tableProps }: PromptTableURLProps<T>): ReactElement;
@@ -0,0 +1,13 @@
1
+ import { TableProps } from '../PromptTable/PromptTableTypes';
2
+ import { WithId } from '../PromptTable/PromptTableTypes';
3
+ export interface UrlParamConfig {
4
+ enabled?: boolean;
5
+ paramName?: string;
6
+ }
7
+ export interface FilteringUrlParamConfig extends UrlParamConfig {
8
+ globalSearchParamName?: string;
9
+ }
10
+ export interface PromptTableURLProps<T extends WithId> extends TableProps<T> {
11
+ sortingQueryParam?: UrlParamConfig;
12
+ filteringQueryParam?: FilteringUrlParamConfig;
13
+ }
@@ -0,0 +1,7 @@
1
+ import { ColumnFiltersState, SortingState } from '@tanstack/react-table';
2
+ import { TableFilter } from '../../PromptTable/PromptTableTypes';
3
+ export declare function parseSortingFromUrl(search: string, paramName: string): SortingState;
4
+ export declare function serializeSortingForUrl(sorting: SortingState): string | null;
5
+ export declare function parseColumnFiltersFromUrl(search: string, paramName: string, tableFilters?: TableFilter[]): ColumnFiltersState;
6
+ export declare function serializeColumnFiltersForUrl(columnFilters: ColumnFiltersState): string | null;
7
+ export declare function parseSearchFromUrl(search: string, paramName: string): string | null;
@@ -0,0 +1,11 @@
1
+ import { ColumnFiltersState, SortingState } from '@tanstack/react-table';
2
+ export declare function useSyncTableStateToUrl({ sorting, columnFilters, search, sortingQueryParamEnabled, sortingQueryParamName, filteringQueryParamEnabled, filteringQueryParamName, globalSearchQueryParamName, }: {
3
+ sorting: SortingState;
4
+ columnFilters: ColumnFiltersState;
5
+ search: string;
6
+ sortingQueryParamEnabled: boolean;
7
+ sortingQueryParamName: string;
8
+ filteringQueryParamEnabled: boolean;
9
+ filteringQueryParamName: string;
10
+ globalSearchQueryParamName: string;
11
+ }): void;
@@ -0,0 +1,18 @@
1
+ import { ColumnFiltersState, InitialTableState, SortingState } from '@tanstack/react-table';
2
+ import { TableFilter } from '../../PromptTable/PromptTableTypes';
3
+ export declare function useTableUrlState({ initialState, filters, sortingQueryParamEnabled, sortingQueryParamName, filteringQueryParamEnabled, filteringQueryParamName, globalSearchQueryParamName, }: {
4
+ initialState?: InitialTableState;
5
+ filters?: TableFilter[];
6
+ sortingQueryParamEnabled: boolean;
7
+ sortingQueryParamName: string;
8
+ filteringQueryParamEnabled: boolean;
9
+ filteringQueryParamName: string;
10
+ globalSearchQueryParamName: string;
11
+ }): {
12
+ sorting: SortingState;
13
+ setSorting: import("react").Dispatch<import("react").SetStateAction<SortingState>>;
14
+ search: string;
15
+ setSearch: import("react").Dispatch<import("react").SetStateAction<string>>;
16
+ columnFilters: ColumnFiltersState;
17
+ setColumnFilters: import("react").Dispatch<import("react").SetStateAction<ColumnFiltersState>>;
18
+ };
@@ -1,3 +1,5 @@
1
- export * from './tableComponents/SortableHeader';
2
- export * from './PromptTable';
3
- export * from './TableTypes';
1
+ export * from './PromptTable/PromptTable';
2
+ export * from './PromptTable/PromptTableTypes';
3
+ export * from './PromptTable/tableComponents/SortableHeader';
4
+ export * from './PromptTableURL/PromptTableURL';
5
+ export * from './PromptTableURL/PromptTableURLTypes';