@pautena/react-design-system 0.21.0 → 1.0.1

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 (391) hide show
  1. package/README.md +11 -0
  2. package/dist/Autocomplete/Autocomplete.d.ts +99 -0
  3. package/dist/Autocomplete/Autocomplete.mjs +47 -0
  4. package/dist/Autocomplete/Autocomplete.mjs.map +1 -0
  5. package/dist/Autocomplete/index.d.ts +2 -0
  6. package/dist/{board/board.d.ts → Board/Board.d.ts} +8 -4
  7. package/dist/Board/Board.mjs +60 -0
  8. package/dist/Board/Board.mjs.map +1 -0
  9. package/dist/Board/index.d.ts +2 -0
  10. package/dist/BootstrapDialog/BootstrapDialog.d.ts +31 -0
  11. package/dist/BootstrapDialog/BootstrapDialog.mjs +128 -0
  12. package/dist/BootstrapDialog/BootstrapDialog.mjs.map +1 -0
  13. package/dist/BootstrapDialog/index.d.ts +2 -0
  14. package/dist/{bullet/bullet.d.ts → Bullet/Bullet.d.ts} +5 -1
  15. package/dist/Bullet/Bullet.mjs +24 -0
  16. package/dist/Bullet/Bullet.mjs.map +1 -0
  17. package/dist/Bullet/index.d.ts +2 -0
  18. package/dist/{confirm-dialog/confirm-dialog.d.ts → ConfirmDialog/ConfirmDialog.d.ts} +8 -3
  19. package/dist/ConfirmDialog/ConfirmDialog.mjs +54 -0
  20. package/dist/ConfirmDialog/ConfirmDialog.mjs.map +1 -0
  21. package/dist/ConfirmDialog/index.d.ts +2 -0
  22. package/dist/Content/Content.d.ts +6 -0
  23. package/dist/Content/Content.mjs +10 -0
  24. package/dist/Content/Content.mjs.map +1 -0
  25. package/dist/Content/Content.types.d.ts +18 -0
  26. package/dist/Content/index.d.ts +3 -0
  27. package/dist/ContentPlaceholder/ContentPlaceholder.d.ts +22 -0
  28. package/dist/ContentPlaceholder/ContentPlaceholder.mjs +26 -0
  29. package/dist/ContentPlaceholder/ContentPlaceholder.mjs.map +1 -0
  30. package/dist/ContentPlaceholder/index.d.ts +2 -0
  31. package/dist/{date-range-calendar/date-range-calendar.d.ts → DateRangeCalendar/DateRangeCalendar.d.ts} +2 -2
  32. package/dist/DateRangeCalendar/DateRangeCalendar.mjs +79 -0
  33. package/dist/DateRangeCalendar/DateRangeCalendar.mjs.map +1 -0
  34. package/dist/DateRangeCalendar/index.d.ts +2 -0
  35. package/dist/{date-range-picker/date-range-picker.d.ts → DateRangePicker/DateRangePicker.d.ts} +2 -2
  36. package/dist/DateRangePicker/DateRangePicker.mjs +55 -0
  37. package/dist/DateRangePicker/DateRangePicker.mjs.map +1 -0
  38. package/dist/DateRangePicker/index.d.ts +2 -0
  39. package/dist/Dialog/Dialog.types.d.ts +230 -0
  40. package/dist/Dialog/UseDialog.mjs +9 -0
  41. package/dist/Dialog/UseDialog.mjs.map +1 -0
  42. package/dist/Dialog/index.d.ts +2 -0
  43. package/dist/Drawerx/Drawer/Drawer.d.ts +10 -0
  44. package/dist/Drawerx/Drawer/Drawer.mjs +71 -0
  45. package/dist/Drawerx/Drawer/Drawer.mjs.map +1 -0
  46. package/dist/{drawerx/drawer/drawer.mock.d.ts → Drawerx/Drawer/Drawer.mock.d.ts} +1 -1
  47. package/dist/Drawerx/Drawer/index.d.ts +1 -0
  48. package/dist/{drawerx/drawer.types.d.ts → Drawerx/Drawer.types.d.ts} +119 -3
  49. package/dist/Drawerx/Drawer.types.mjs +8 -0
  50. package/dist/Drawerx/Drawer.types.mjs.map +1 -0
  51. package/dist/{drawerx/drawer-app-bar/drawer-app-bar.d.ts → Drawerx/DrawerAppBar/DrawerAppBar.d.ts} +1 -1
  52. package/dist/Drawerx/DrawerAppBar/DrawerAppBar.mjs +93 -0
  53. package/dist/Drawerx/DrawerAppBar/DrawerAppBar.mjs.map +1 -0
  54. package/dist/Drawerx/DrawerAppBar/index.d.ts +2 -0
  55. package/dist/Drawerx/DrawerContent/DrawerContent.d.ts +5 -0
  56. package/dist/Drawerx/DrawerContent/DrawerContent.mjs +35 -0
  57. package/dist/Drawerx/DrawerContent/DrawerContent.mjs.map +1 -0
  58. package/dist/Drawerx/DrawerContent/index.d.ts +1 -0
  59. package/dist/Drawerx/DrawerContext/Drawer.provider.d.ts +45 -0
  60. package/dist/Drawerx/DrawerContext/Drawer.provider.mjs +54 -0
  61. package/dist/Drawerx/DrawerContext/Drawer.provider.mjs.map +1 -0
  62. package/dist/{drawerx/drawer-context/drawer-context.d.ts → Drawerx/DrawerContext/DrawerContext.d.ts} +1 -1
  63. package/dist/Drawerx/DrawerContext/DrawerContext.mjs +17 -0
  64. package/dist/Drawerx/DrawerContext/DrawerContext.mjs.map +1 -0
  65. package/dist/Drawerx/DrawerContext/DrawerMixins.mjs +27 -0
  66. package/dist/Drawerx/DrawerContext/DrawerMixins.mjs.map +1 -0
  67. package/dist/Drawerx/DrawerContext/index.d.ts +2 -0
  68. package/dist/{drawerx/drawer-item/drawer-item.d.ts → Drawerx/DrawerItem/DrawerItem.d.ts} +2 -2
  69. package/dist/Drawerx/DrawerItem/DrawerItem.mjs +43 -0
  70. package/dist/Drawerx/DrawerItem/DrawerItem.mjs.map +1 -0
  71. package/dist/{drawerx/drawer-item/drawer-item-link.d.ts → Drawerx/DrawerItem/DrawerItemLink.d.ts} +1 -1
  72. package/dist/Drawerx/DrawerItem/DrawerItemLink.mjs +98 -0
  73. package/dist/Drawerx/DrawerItem/DrawerItemLink.mjs.map +1 -0
  74. package/dist/{drawerx/drawer-item/drawer-menu-item.d.ts → Drawerx/DrawerItem/DrawerMenuItem.d.ts} +1 -1
  75. package/dist/Drawerx/DrawerItem/DrawerMenuItem.mjs +115 -0
  76. package/dist/Drawerx/DrawerItem/DrawerMenuItem.mjs.map +1 -0
  77. package/dist/Drawerx/DrawerItem/index.d.ts +4 -0
  78. package/dist/{drawerx/drawer-layout/drawer-layout.d.ts → Drawerx/DrawerLayout/DrawerLayout.d.ts} +4 -4
  79. package/dist/Drawerx/DrawerLayout/DrawerLayout.mjs +39 -0
  80. package/dist/Drawerx/DrawerLayout/DrawerLayout.mjs.map +1 -0
  81. package/dist/Drawerx/DrawerLayout/index.d.ts +2 -0
  82. package/dist/Drawerx/DrawerMain/DrawerMain.d.ts +3 -0
  83. package/dist/Drawerx/DrawerMain/DrawerMain.mjs +28 -0
  84. package/dist/Drawerx/DrawerMain/DrawerMain.mjs.map +1 -0
  85. package/dist/Drawerx/DrawerMain/index.d.ts +2 -0
  86. package/dist/{drawerx/drawer-subheader/drawer-subheader.d.ts → Drawerx/DrawerSubheader/DrawerSubheader.d.ts} +1 -1
  87. package/dist/Drawerx/DrawerSubheader/DrawerSubheader.mjs +22 -0
  88. package/dist/Drawerx/DrawerSubheader/DrawerSubheader.mjs.map +1 -0
  89. package/dist/Drawerx/DrawerSubheader/index.d.ts +2 -0
  90. package/dist/Drawerx/index.d.ts +10 -0
  91. package/dist/ExpandableAlert/ExpandableAlert.d.ts +45 -0
  92. package/dist/ExpandableAlert/ExpandableAlert.mjs +60 -0
  93. package/dist/ExpandableAlert/ExpandableAlert.mjs.map +1 -0
  94. package/dist/ExpandableAlert/index.d.ts +2 -0
  95. package/dist/{form-dialog/form-dialog.d.ts → FormDialog/FormDialog.d.ts} +5 -3
  96. package/dist/FormDialog/FormDialog.mjs +44 -0
  97. package/dist/FormDialog/FormDialog.mjs.map +1 -0
  98. package/dist/FormDialog/index.d.ts +2 -0
  99. package/dist/{group-value-card/group-value-card.d.ts → GroupValueCard/GroupValueCard.d.ts} +3 -2
  100. package/dist/GroupValueCard/GroupValueCard.mjs +74 -0
  101. package/dist/GroupValueCard/GroupValueCard.mjs.map +1 -0
  102. package/dist/GroupValueCard/GroupValueCard.mock.d.ts +2 -0
  103. package/dist/GroupValueCard/index.d.ts +2 -0
  104. package/dist/Header/Header.d.ts +40 -0
  105. package/dist/{header/header.dummy.d.ts → Header/Header.dummy.d.ts} +1 -1
  106. package/dist/Header/Header.mjs +179 -0
  107. package/dist/Header/Header.mjs.map +1 -0
  108. package/dist/Header/Header.types.d.ts +274 -0
  109. package/dist/Header/header-title.d.ts +34 -0
  110. package/dist/Header/header-title.mjs +31 -0
  111. package/dist/Header/header-title.mjs.map +1 -0
  112. package/dist/Header/index.d.ts +3 -0
  113. package/dist/{header-layout/header-layout.d.ts → HeaderLayout/HeaderLayout.d.ts} +12 -7
  114. package/dist/HeaderLayout/HeaderLayout.mjs +54 -0
  115. package/dist/HeaderLayout/HeaderLayout.mjs.map +1 -0
  116. package/dist/HeaderLayout/index.d.ts +2 -0
  117. package/dist/{label/label.d.ts → Label/Label.d.ts} +5 -1
  118. package/dist/Label/Label.mjs +61 -0
  119. package/dist/Label/Label.mjs.map +1 -0
  120. package/dist/Label/index.d.ts +2 -0
  121. package/dist/ListPanel/ListPanel.context.mjs +8 -0
  122. package/dist/ListPanel/ListPanel.context.mjs.map +1 -0
  123. package/dist/{list-panel/list-panel.d.ts → ListPanel/ListPanel.d.ts} +8 -4
  124. package/dist/ListPanel/ListPanel.mjs +75 -0
  125. package/dist/ListPanel/ListPanel.mjs.map +1 -0
  126. package/dist/{list-panel/list-panel.mocks.d.ts → ListPanel/ListPanel.mocks.d.ts} +1 -1
  127. package/dist/ListPanel/ListPanelPanel.d.ts +17 -0
  128. package/dist/ListPanel/index.d.ts +3 -0
  129. package/dist/Markdown/Markdown.mjs +31 -0
  130. package/dist/Markdown/Markdown.mjs.map +1 -0
  131. package/dist/Markdown/index.d.ts +1 -0
  132. package/dist/NotificationCenter/NotificationCenter.context.mjs +15 -0
  133. package/dist/NotificationCenter/NotificationCenter.context.mjs.map +1 -0
  134. package/dist/{notification-center/notification-center.hooks.d.ts → NotificationCenter/NotificationCenter.hooks.d.ts} +1 -1
  135. package/dist/NotificationCenter/NotificationCenter.hooks.mjs +12 -0
  136. package/dist/NotificationCenter/NotificationCenter.hooks.mjs.map +1 -0
  137. package/dist/NotificationCenter/NotificationCenter.provider.d.ts +15 -0
  138. package/dist/NotificationCenter/NotificationCenter.provider.mjs +56 -0
  139. package/dist/NotificationCenter/NotificationCenter.provider.mjs.map +1 -0
  140. package/dist/NotificationCenter/index.d.ts +3 -0
  141. package/dist/Placeholder/Placeholder.d.ts +73 -0
  142. package/dist/Placeholder/Placeholder.mjs +53 -0
  143. package/dist/Placeholder/Placeholder.mjs.map +1 -0
  144. package/dist/{placeholder/placeholder.mock.d.ts → Placeholder/Placeholder.mock.d.ts} +1 -1
  145. package/dist/Placeholder/index.d.ts +2 -0
  146. package/dist/{query-container/query-container.d.ts → QueryContainer/QueryContainer.d.ts} +7 -3
  147. package/dist/QueryContainer/index.d.ts +2 -0
  148. package/dist/{remote-data-table/remote-data-table.d.ts → RemoteDataTable/RemoteDataTable.d.ts} +4 -3
  149. package/dist/RemoteDataTable/RemoteDataTable.mjs +57 -0
  150. package/dist/RemoteDataTable/RemoteDataTable.mjs.map +1 -0
  151. package/dist/{remote-data-table/remote-data-table.mocks.d.ts → RemoteDataTable/RemoteDataTable.mocks.d.ts} +1 -1
  152. package/dist/RemoteDataTable/RemoteDataTable.types.d.ts +189 -0
  153. package/dist/{remote-data-table/remote-data-table-body.d.ts → RemoteDataTable/RemoteDataTableBody.d.ts} +1 -1
  154. package/dist/RemoteDataTable/RemoteDataTableBody.mjs +87 -0
  155. package/dist/RemoteDataTable/RemoteDataTableBody.mjs.map +1 -0
  156. package/dist/{remote-data-table/remote-data-table-pagination.d.ts → RemoteDataTable/RemoteDataTablePagination.d.ts} +1 -1
  157. package/dist/RemoteDataTable/RemoteDataTablePagination.mjs +33 -0
  158. package/dist/RemoteDataTable/RemoteDataTablePagination.mjs.map +1 -0
  159. package/dist/{remote-data-table/remote-data-table-query-builder.d.ts → RemoteDataTable/RemoteDataTableQueryBuilder.d.ts} +1 -1
  160. package/dist/RemoteDataTable/RemoteDataTableQueryBuilder.mjs +296 -0
  161. package/dist/RemoteDataTable/RemoteDataTableQueryBuilder.mjs.map +1 -0
  162. package/dist/RemoteDataTable/index.d.ts +3 -0
  163. package/dist/{remote-data-table → RemoteDataTable}/query-spec-utils.d.ts +1 -1
  164. package/dist/RemoteDataTable/query-spec-utils.mjs +74 -0
  165. package/dist/RemoteDataTable/query-spec-utils.mjs.map +1 -0
  166. package/dist/{remote-data-table → RemoteDataTable}/use-remote-data-table.d.ts +1 -1
  167. package/dist/RemoteDataTable/use-remote-data-table.mjs +40 -0
  168. package/dist/RemoteDataTable/use-remote-data-table.mjs.map +1 -0
  169. package/dist/Select/Select.d.ts +147 -0
  170. package/dist/Select/Select.mjs +103 -0
  171. package/dist/Select/Select.mjs.map +1 -0
  172. package/dist/Select/index.d.ts +2 -0
  173. package/dist/{skeleton-card/skeleton-card.d.ts → SkeletonCard/SkeletonCard.d.ts} +2 -1
  174. package/dist/SkeletonCard/SkeletonCard.mjs +34 -0
  175. package/dist/SkeletonCard/SkeletonCard.mjs.map +1 -0
  176. package/dist/SkeletonCard/index.d.ts +2 -0
  177. package/dist/{skeleton-grid/skeleton-grid.d.ts → SkeletonGrid/SkeletonGrid.d.ts} +2 -1
  178. package/dist/SkeletonGrid/SkeletonGrid.mjs +13 -0
  179. package/dist/SkeletonGrid/SkeletonGrid.mjs.map +1 -0
  180. package/dist/SkeletonGrid/index.d.ts +2 -0
  181. package/dist/TabCard/TabCard.context.mjs +7 -0
  182. package/dist/TabCard/TabCard.context.mjs.map +1 -0
  183. package/dist/TabCard/TabCard.d.ts +43 -0
  184. package/dist/{tab-card/tab-card.dummy.d.ts → TabCard/TabCard.dummy.d.ts} +1 -1
  185. package/dist/TabCard/TabCard.mjs +68 -0
  186. package/dist/TabCard/TabCard.mjs.map +1 -0
  187. package/dist/TabCard/TabCardPanel.d.ts +22 -0
  188. package/dist/TabCard/index.d.ts +3 -0
  189. package/dist/TabPanel/TabPanel.d.ts +18 -0
  190. package/dist/TabPanel/TabPanel.mjs +22 -0
  191. package/dist/TabPanel/TabPanel.mjs.map +1 -0
  192. package/dist/TabPanel/index.d.ts +1 -0
  193. package/dist/TabProvider/TabProvider.context.mjs +8 -0
  194. package/dist/TabProvider/TabProvider.context.mjs.map +1 -0
  195. package/dist/TabProvider/TabProvider.provider.mjs +14 -0
  196. package/dist/TabProvider/TabProvider.provider.mjs.map +1 -0
  197. package/dist/TabProvider/index.d.ts +2 -0
  198. package/dist/TextField/TextField.d.ts +127 -0
  199. package/dist/TextField/TextField.mjs +115 -0
  200. package/dist/TextField/TextField.mjs.map +1 -0
  201. package/dist/TextField/index.d.ts +2 -0
  202. package/dist/{value-base/value-displays.types.d.ts → ValueBase/ValueDisplays.types.d.ts} +0 -10
  203. package/dist/ValueBase/ValueDisplays.types.mjs +5 -0
  204. package/dist/ValueBase/ValueDisplays.types.mjs.map +1 -0
  205. package/dist/ValueBase/index.d.ts +1 -0
  206. package/dist/ValueBoolean/ValueBoolean.d.ts +12 -0
  207. package/dist/ValueBoolean/ValueBoolean.mjs +34 -0
  208. package/dist/ValueBoolean/ValueBoolean.mjs.map +1 -0
  209. package/dist/ValueBoolean/index.d.ts +2 -0
  210. package/dist/ValueCard/ValueCard.d.ts +14 -0
  211. package/dist/ValueCard/ValueCard.mjs +10 -0
  212. package/dist/ValueCard/ValueCard.mjs.map +1 -0
  213. package/dist/ValueCard/index.d.ts +2 -0
  214. package/dist/{value-content/value-content.d.ts → ValueContent/ValueContent.d.ts} +5 -5
  215. package/dist/ValueContent/ValueContent.mjs +35 -0
  216. package/dist/ValueContent/ValueContent.mjs.map +1 -0
  217. package/dist/ValueContent/index.d.ts +2 -0
  218. package/dist/ValueDatetime/ValueDatetime.d.ts +15 -0
  219. package/dist/ValueDatetime/ValueDatetime.mjs +30 -0
  220. package/dist/ValueDatetime/ValueDatetime.mjs.map +1 -0
  221. package/dist/ValueDatetime/index.d.ts +2 -0
  222. package/dist/ValueImage/ValueImage.d.ts +15 -0
  223. package/dist/ValueImage/ValueImage.mjs +26 -0
  224. package/dist/ValueImage/ValueImage.mjs.map +1 -0
  225. package/dist/ValueImage/index.d.ts +2 -0
  226. package/dist/ValueItem/ValueItem.d.ts +33 -0
  227. package/dist/ValueItem/ValueItem.mjs +36 -0
  228. package/dist/ValueItem/ValueItem.mjs.map +1 -0
  229. package/dist/ValueItem/index.d.ts +2 -0
  230. package/dist/ValueLabel/ValueLabel.d.ts +22 -0
  231. package/dist/ValueLabel/ValueLabel.mjs +35 -0
  232. package/dist/ValueLabel/ValueLabel.mjs.map +1 -0
  233. package/dist/ValueLabel/index.d.ts +2 -0
  234. package/dist/ValueRating/ValueRating.d.ts +18 -0
  235. package/dist/ValueRating/ValueRating.mjs +26 -0
  236. package/dist/ValueRating/ValueRating.mjs.map +1 -0
  237. package/dist/ValueRating/index.d.ts +2 -0
  238. package/dist/ValueText/ValueText.d.ts +12 -0
  239. package/dist/ValueText/ValueText.mjs +19 -0
  240. package/dist/ValueText/ValueText.mjs.map +1 -0
  241. package/dist/ValueText/index.d.ts +2 -0
  242. package/dist/index.d.ts +73 -48
  243. package/dist/index.mjs +139 -0
  244. package/dist/index.mjs.map +1 -0
  245. package/dist/tests/actions.d.ts +6 -0
  246. package/dist/tests/actions.mjs +38 -0
  247. package/dist/tests/actions.mjs.map +1 -0
  248. package/dist/tests/assertions.d.ts +24 -0
  249. package/dist/tests/assertions.mjs +39 -0
  250. package/dist/tests/assertions.mjs.map +1 -0
  251. package/dist/tests/file-mock.d.ts +2 -0
  252. package/dist/tests/index.d.ts +2 -0
  253. package/dist/tests/index.mjs +23 -0
  254. package/dist/tests/index.mjs.map +1 -0
  255. package/dist/tests/mocks/markdown.mock.d.ts +1 -0
  256. package/dist/tests/mocks.d.ts +3 -0
  257. package/dist/tests/table-placeholder/TablePlaceholder.d.ts +1 -0
  258. package/dist/tests/table-placeholder/index.d.ts +1 -0
  259. package/dist/tests/testing-library.d.ts +106 -0
  260. package/dist/tests/testing-library.mjs +31 -0
  261. package/dist/tests/testing-library.mjs.map +1 -0
  262. package/dist/utils/arrays.mjs +9 -0
  263. package/dist/utils/arrays.mjs.map +1 -0
  264. package/dist/utils/breakpoints.mjs +33 -0
  265. package/dist/utils/breakpoints.mjs.map +1 -0
  266. package/dist/utils/forms.mjs +10 -0
  267. package/dist/utils/forms.mjs.map +1 -0
  268. package/dist/utils/theme.mjs +12 -0
  269. package/dist/utils/theme.mjs.map +1 -0
  270. package/package.json +45 -36
  271. package/dist/action/action-header.d.ts +0 -9
  272. package/dist/action/action.d.ts +0 -61
  273. package/dist/action/index.d.ts +0 -2
  274. package/dist/autocomplete/autocomplete.d.ts +0 -39
  275. package/dist/autocomplete/index.d.ts +0 -1
  276. package/dist/board/index.d.ts +0 -1
  277. package/dist/bootstrap-dialog/bootstrap-dialog.d.ts +0 -5
  278. package/dist/bootstrap-dialog/index.d.ts +0 -1
  279. package/dist/bullet/index.d.ts +0 -1
  280. package/dist/center-container/center-container.d.ts +0 -25
  281. package/dist/center-container/index.d.ts +0 -1
  282. package/dist/confirm-dialog/index.d.ts +0 -1
  283. package/dist/content/content.d.ts +0 -5
  284. package/dist/content/content.types.d.ts +0 -4
  285. package/dist/content/index.d.ts +0 -2
  286. package/dist/content-placeholder/content-placeholder.d.ts +0 -18
  287. package/dist/content-placeholder/index.d.ts +0 -1
  288. package/dist/date-range-calendar/index.d.ts +0 -1
  289. package/dist/date-range-picker/index.d.ts +0 -1
  290. package/dist/dialog/dialog.types.d.ts +0 -99
  291. package/dist/dialog/index.d.ts +0 -2
  292. package/dist/drawerx/drawer/drawer.d.ts +0 -7
  293. package/dist/drawerx/drawer/index.d.ts +0 -1
  294. package/dist/drawerx/drawer-app-bar/index.d.ts +0 -1
  295. package/dist/drawerx/drawer-content/drawer-content.d.ts +0 -5
  296. package/dist/drawerx/drawer-content/index.d.ts +0 -1
  297. package/dist/drawerx/drawer-context/drawer.provider.d.ts +0 -17
  298. package/dist/drawerx/drawer-context/index.d.ts +0 -2
  299. package/dist/drawerx/drawer-item/index.d.ts +0 -3
  300. package/dist/drawerx/drawer-layout/index.d.ts +0 -1
  301. package/dist/drawerx/drawer-main/drawer-main.d.ts +0 -3
  302. package/dist/drawerx/drawer-main/index.d.ts +0 -1
  303. package/dist/drawerx/drawer-subheader/index.d.ts +0 -1
  304. package/dist/drawerx/index.d.ts +0 -7
  305. package/dist/enhanced-remote-table/enhanced-remote-table.d.ts +0 -46
  306. package/dist/enhanced-remote-table/enhanced-remote-table.mock.d.ts +0 -11
  307. package/dist/enhanced-remote-table/index.d.ts +0 -1
  308. package/dist/enhanced-table/enhanced-table-head.d.ts +0 -16
  309. package/dist/enhanced-table/enhanced-table.d.ts +0 -47
  310. package/dist/enhanced-table/enhanced-table.mock.d.ts +0 -16
  311. package/dist/enhanced-table/index.d.ts +0 -2
  312. package/dist/expandable-alert/expandable-alert.d.ts +0 -14
  313. package/dist/expandable-alert/index.d.ts +0 -1
  314. package/dist/form-dialog/index.d.ts +0 -1
  315. package/dist/generators/generators.mock.d.ts +0 -30
  316. package/dist/generators/generators.model.d.ts +0 -92
  317. package/dist/generators/index.d.ts +0 -1
  318. package/dist/group-value-card/group-value-card.mock.d.ts +0 -4
  319. package/dist/group-value-card/index.d.ts +0 -1
  320. package/dist/header/header-title.d.ts +0 -9
  321. package/dist/header/header.d.ts +0 -6
  322. package/dist/header/header.types.d.ts +0 -88
  323. package/dist/header/index.d.ts +0 -3
  324. package/dist/header-layout/index.d.ts +0 -1
  325. package/dist/index.cjs.js +0 -281
  326. package/dist/index.cjs.js.map +0 -1
  327. package/dist/index.es.js +0 -49140
  328. package/dist/index.es.js.map +0 -1
  329. package/dist/label/index.d.ts +0 -1
  330. package/dist/link-card/index.d.ts +0 -1
  331. package/dist/link-card/link-card.d.ts +0 -11
  332. package/dist/list-panel/index.d.ts +0 -2
  333. package/dist/list-panel/list-panel-panel.d.ts +0 -5
  334. package/dist/loading-area/index.d.ts +0 -1
  335. package/dist/loading-area/loading-area.d.ts +0 -4
  336. package/dist/markdown/index.d.ts +0 -1
  337. package/dist/model-form/index.d.ts +0 -1
  338. package/dist/model-form/model-form-field.d.ts +0 -10
  339. package/dist/model-form/model-form.d.ts +0 -14
  340. package/dist/notification-center/index.d.ts +0 -3
  341. package/dist/notification-center/notification-center.provider.d.ts +0 -5
  342. package/dist/object-details/index.d.ts +0 -1
  343. package/dist/object-details/object-details.d.ts +0 -11
  344. package/dist/placeholder/index.d.ts +0 -1
  345. package/dist/placeholder/placeholder.d.ts +0 -22
  346. package/dist/query-container/index.d.ts +0 -1
  347. package/dist/remote-data-table/index.d.ts +0 -2
  348. package/dist/remote-data-table/remote-data-table.types.d.ts +0 -52
  349. package/dist/search-input/index.d.ts +0 -1
  350. package/dist/search-input/search-input.d.ts +0 -60
  351. package/dist/select/index.d.ts +0 -1
  352. package/dist/select/select.d.ts +0 -57
  353. package/dist/skeleton-card/index.d.ts +0 -1
  354. package/dist/skeleton-grid/index.d.ts +0 -1
  355. package/dist/tab-card/index.d.ts +0 -2
  356. package/dist/tab-card/tab-card-panel.d.ts +0 -7
  357. package/dist/tab-card/tab-card.d.ts +0 -11
  358. package/dist/tab-panel/index.d.ts +0 -1
  359. package/dist/tab-panel/tab-panel.d.ts +0 -6
  360. package/dist/tab-provider/index.d.ts +0 -2
  361. package/dist/table-list/index.d.ts +0 -1
  362. package/dist/table-list/table-list.d.ts +0 -21
  363. package/dist/text-field/index.d.ts +0 -1
  364. package/dist/text-field/text-field.d.ts +0 -25
  365. package/dist/value-base/index.d.ts +0 -2
  366. package/dist/value-base/value-edit.d.ts +0 -23
  367. package/dist/value-boolean/index.d.ts +0 -1
  368. package/dist/value-boolean/value-boolean.d.ts +0 -6
  369. package/dist/value-card/index.d.ts +0 -1
  370. package/dist/value-card/value-card.d.ts +0 -6
  371. package/dist/value-content/index.d.ts +0 -1
  372. package/dist/value-datetime/index.d.ts +0 -1
  373. package/dist/value-datetime/value-datetime.d.ts +0 -16
  374. package/dist/value-image/index.d.ts +0 -1
  375. package/dist/value-image/value-image.d.ts +0 -11
  376. package/dist/value-item/index.d.ts +0 -1
  377. package/dist/value-item/value-item.d.ts +0 -16
  378. package/dist/value-label/index.d.ts +0 -1
  379. package/dist/value-label/value-label.d.ts +0 -10
  380. package/dist/value-rating/index.d.ts +0 -1
  381. package/dist/value-rating/value-rating.d.ts +0 -8
  382. package/dist/value-text/index.d.ts +0 -1
  383. package/dist/value-text/value-text.d.ts +0 -6
  384. /package/dist/{dialog/use-dialog.d.ts → Dialog/UseDialog.d.ts} +0 -0
  385. /package/dist/{drawerx/drawer-context/drawer-mixins.d.ts → Drawerx/DrawerContext/DrawerMixins.d.ts} +0 -0
  386. /package/dist/{list-panel/list-panel.context.d.ts → ListPanel/ListPanel.context.d.ts} +0 -0
  387. /package/dist/{markdown/markdown.d.ts → Markdown/Markdown.d.ts} +0 -0
  388. /package/dist/{notification-center/notification-center.context.d.ts → NotificationCenter/NotificationCenter.context.d.ts} +0 -0
  389. /package/dist/{tab-card/tab-card.context.d.ts → TabCard/TabCard.context.d.ts} +0 -0
  390. /package/dist/{tab-provider/tab-provider.context.d.ts → TabProvider/TabProvider.context.d.ts} +0 -0
  391. /package/dist/{tab-provider/tab-provider.provider.d.ts → TabProvider/TabProvider.provider.d.ts} +0 -0
@@ -0,0 +1,296 @@
1
+ import { jsxs as u, Fragment as L, jsx as e } from "react/jsx-runtime";
2
+ import j from "@mui/icons-material/Add";
3
+ import D from "@mui/icons-material/Close";
4
+ import N from "@mui/icons-material/DeleteOutline";
5
+ import K from "@mui/icons-material/FilterAltOutlined";
6
+ import V from "@mui/icons-material/KeyboardArrowDown";
7
+ import E from "@mui/icons-material/KeyboardArrowUp";
8
+ import { Box as C, TextField as h, InputAdornment as W, Popover as G, Stack as S, Typography as T, Button as H, IconButton as M, MenuItem as m, ToggleButtonGroup as U, ToggleButton as Y } from "@mui/material";
9
+ import { useState as _, useMemo as k } from "react";
10
+ import { formatFiltersSummary as J, getOpsForField as q, coerceFilterValue as A, createFilterId as X, querySpecOpLabels as Z, getFieldByName as $ } from "./query-spec-utils.mjs";
11
+ const ee = ({
12
+ filter: n,
13
+ fields: v,
14
+ fieldMap: y,
15
+ onFieldChange: x,
16
+ onOpChange: I,
17
+ onValueChange: a,
18
+ onRemove: i
19
+ }) => {
20
+ const r = y.get(n.field), z = q(r), c = n.op === "in" ? "Values" : "Value", b = r?.type === "number" ? "number" : r?.type === "date" ? "date" : r?.type === "datetime" ? "datetime-local" : "text", w = r?.type === "date" || r?.type === "datetime", f = r?.placeholder ?? (n.op === "in" ? "Comma-separated values" : void 0), g = r?.options ?? [], O = g.length > 0 && (n.op === "eq" || n.op === "neq");
21
+ return /* @__PURE__ */ u(
22
+ S,
23
+ {
24
+ direction: { xs: "column", sm: "row" },
25
+ spacing: 1,
26
+ alignItems: { xs: "stretch", sm: "center" },
27
+ children: [
28
+ /* @__PURE__ */ e(
29
+ h,
30
+ {
31
+ select: !0,
32
+ size: "small",
33
+ label: "Field",
34
+ value: n.field,
35
+ onChange: (l) => x(n.id, l.target.value),
36
+ sx: { minWidth: 160 },
37
+ children: v.map((l) => /* @__PURE__ */ e(m, { value: l.name, children: l.label }, l.name))
38
+ }
39
+ ),
40
+ /* @__PURE__ */ e(
41
+ U,
42
+ {
43
+ exclusive: !0,
44
+ size: "small",
45
+ color: "primary",
46
+ value: n.op,
47
+ onChange: (l, F) => {
48
+ F !== null && I(n.id, F);
49
+ },
50
+ sx: { minWidth: 150, alignSelf: "center" },
51
+ children: z.map((l) => /* @__PURE__ */ e(Y, { value: l, children: Z[l] ?? l }, l))
52
+ }
53
+ ),
54
+ n.op === "isnull" ? /* @__PURE__ */ u(
55
+ h,
56
+ {
57
+ select: !0,
58
+ size: "small",
59
+ label: "Null state",
60
+ value: n.value ?? "true",
61
+ onChange: (l) => a(n.id, l.target.value),
62
+ sx: { minWidth: 160, flex: 1 },
63
+ children: [
64
+ /* @__PURE__ */ e(m, { value: "true", children: "Is null" }),
65
+ /* @__PURE__ */ e(m, { value: "false", children: "Is not null" })
66
+ ]
67
+ }
68
+ ) : O ? /* @__PURE__ */ e(
69
+ h,
70
+ {
71
+ select: !0,
72
+ size: "small",
73
+ label: c,
74
+ value: n.value ?? "",
75
+ onChange: (l) => a(n.id, l.target.value),
76
+ sx: { minWidth: 160, flex: 1 },
77
+ children: g.map((l) => /* @__PURE__ */ e(m, { value: l.value, children: l.label }, l.value))
78
+ }
79
+ ) : r?.type === "boolean" ? /* @__PURE__ */ u(
80
+ h,
81
+ {
82
+ select: !0,
83
+ size: "small",
84
+ label: c,
85
+ value: n.value ?? "true",
86
+ onChange: (l) => a(n.id, l.target.value),
87
+ sx: { minWidth: 160, flex: 1 },
88
+ children: [
89
+ /* @__PURE__ */ e(m, { value: "true", children: "True" }),
90
+ /* @__PURE__ */ e(m, { value: "false", children: "False" })
91
+ ]
92
+ }
93
+ ) : /* @__PURE__ */ e(
94
+ h,
95
+ {
96
+ size: "small",
97
+ type: b,
98
+ label: c,
99
+ value: n.value ?? "",
100
+ onChange: (l) => a(n.id, l.target.value),
101
+ placeholder: f,
102
+ InputLabelProps: w ? { shrink: !0 } : void 0,
103
+ sx: { minWidth: 160, flex: 1 }
104
+ }
105
+ ),
106
+ /* @__PURE__ */ e(
107
+ M,
108
+ {
109
+ size: "small",
110
+ "aria-label": "Remove filter",
111
+ onClick: () => i(n.id),
112
+ children: /* @__PURE__ */ e(N, { fontSize: "small" })
113
+ }
114
+ )
115
+ ]
116
+ }
117
+ );
118
+ }, ue = ({
119
+ queryBuilder: n
120
+ }) => {
121
+ const [v, y] = _(null), x = !!v, I = v?.clientWidth ?? 560, {
122
+ fields: a,
123
+ filters: i,
124
+ onFiltersChange: r,
125
+ placeholder: z,
126
+ summaryFormatter: c
127
+ } = n, b = k(
128
+ () => new Map(a.map((t) => [t.name, t])),
129
+ [a]
130
+ ), w = k(() => i.length ? c ? c(i, a) : J(i, a) : "", [i, a, c]), f = (t) => {
131
+ y(t.currentTarget);
132
+ }, g = () => {
133
+ y(null);
134
+ }, O = () => {
135
+ if (a.length === 0)
136
+ return;
137
+ const t = a[0], o = q(t)[0] ?? "eq", p = A(t, o);
138
+ r([
139
+ ...i,
140
+ { id: X(), field: t.name, op: o, value: p }
141
+ ]);
142
+ }, l = (t) => {
143
+ r(i.filter((s) => s.id !== t));
144
+ }, F = (t, s) => {
145
+ const o = $(a, s);
146
+ if (!o)
147
+ return;
148
+ const p = q(o);
149
+ r(
150
+ i.map((d) => {
151
+ if (d.id !== t)
152
+ return d;
153
+ const B = p.includes(d.op) ? d.op : p[0] ?? "eq", Q = A(o, B, d.value);
154
+ return {
155
+ ...d,
156
+ field: o.name,
157
+ op: B,
158
+ value: Q
159
+ };
160
+ })
161
+ );
162
+ }, P = (t, s) => {
163
+ r(
164
+ i.map((o) => {
165
+ if (o.id !== t)
166
+ return o;
167
+ const p = b.get(o.field), d = A(p, s, o.value);
168
+ return {
169
+ ...o,
170
+ op: s,
171
+ value: d
172
+ };
173
+ })
174
+ );
175
+ }, R = (t, s) => {
176
+ r(
177
+ i.map(
178
+ (o) => o.id === t ? {
179
+ ...o,
180
+ value: s
181
+ } : o
182
+ )
183
+ );
184
+ };
185
+ return /* @__PURE__ */ u(L, { children: [
186
+ /* @__PURE__ */ e(
187
+ C,
188
+ {
189
+ sx: {
190
+ borderBottom: "1px solid",
191
+ borderColor: "divider",
192
+ px: 2,
193
+ py: 1.5
194
+ },
195
+ children: /* @__PURE__ */ e(
196
+ h,
197
+ {
198
+ fullWidth: !0,
199
+ size: "small",
200
+ placeholder: z ?? "Add filters",
201
+ value: w,
202
+ onClick: f,
203
+ onFocus: f,
204
+ InputProps: {
205
+ readOnly: !0,
206
+ startAdornment: /* @__PURE__ */ e(W, { position: "start", children: /* @__PURE__ */ e(K, { fontSize: "small" }) }),
207
+ endAdornment: /* @__PURE__ */ e(W, { position: "end", children: x ? /* @__PURE__ */ e(E, {}) : /* @__PURE__ */ e(V, {}) })
208
+ },
209
+ inputProps: { "aria-label": "Filter query" },
210
+ sx: {
211
+ "& .MuiInputBase-root": { cursor: "pointer" },
212
+ "& .MuiInputBase-input": {
213
+ cursor: "pointer",
214
+ textOverflow: "ellipsis",
215
+ overflow: "hidden",
216
+ whiteSpace: "nowrap"
217
+ }
218
+ }
219
+ }
220
+ )
221
+ }
222
+ ),
223
+ /* @__PURE__ */ e(
224
+ G,
225
+ {
226
+ open: x,
227
+ anchorEl: v,
228
+ onClose: g,
229
+ disableRestoreFocus: !0,
230
+ anchorOrigin: { vertical: "bottom", horizontal: "left" },
231
+ transformOrigin: { vertical: "top", horizontal: "left" },
232
+ slotProps: {
233
+ paper: {
234
+ sx: {
235
+ width: I,
236
+ maxWidth: "calc(100vw - 32px)",
237
+ p: 2
238
+ }
239
+ }
240
+ },
241
+ children: /* @__PURE__ */ e(C, { sx: { maxHeight: "60vh", overflowY: "auto" }, children: /* @__PURE__ */ u(S, { spacing: 2, children: [
242
+ /* @__PURE__ */ u(
243
+ C,
244
+ {
245
+ display: "flex",
246
+ alignItems: "center",
247
+ justifyContent: "space-between",
248
+ gap: 1,
249
+ children: [
250
+ /* @__PURE__ */ e(T, { variant: "subtitle2", children: "Filters" }),
251
+ /* @__PURE__ */ u(C, { display: "flex", alignItems: "center", gap: 1, children: [
252
+ /* @__PURE__ */ e(
253
+ H,
254
+ {
255
+ size: "small",
256
+ startIcon: /* @__PURE__ */ e(j, { fontSize: "small" }),
257
+ onClick: O,
258
+ disabled: a.length === 0,
259
+ children: "Add filter"
260
+ }
261
+ ),
262
+ /* @__PURE__ */ e(
263
+ M,
264
+ {
265
+ size: "small",
266
+ "aria-label": "Close filters",
267
+ onClick: g,
268
+ children: /* @__PURE__ */ e(D, { fontSize: "small" })
269
+ }
270
+ )
271
+ ] })
272
+ ]
273
+ }
274
+ ),
275
+ i.length === 0 ? /* @__PURE__ */ e(T, { variant: "body2", color: "text.secondary", children: "No filters yet." }) : /* @__PURE__ */ e(S, { spacing: 1.5, children: i.map((t) => /* @__PURE__ */ e(
276
+ ee,
277
+ {
278
+ filter: t,
279
+ fields: a,
280
+ fieldMap: b,
281
+ onFieldChange: F,
282
+ onOpChange: P,
283
+ onValueChange: R,
284
+ onRemove: l
285
+ },
286
+ t.id
287
+ )) })
288
+ ] }) })
289
+ }
290
+ )
291
+ ] });
292
+ };
293
+ export {
294
+ ue as RemoteDataTableQueryBuilder
295
+ };
296
+ //# sourceMappingURL=RemoteDataTableQueryBuilder.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RemoteDataTableQueryBuilder.mjs","sources":["../../src/RemoteDataTable/RemoteDataTableQueryBuilder.tsx"],"sourcesContent":["import AddIcon from \"@mui/icons-material/Add\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport DeleteOutlineIcon from \"@mui/icons-material/DeleteOutline\";\nimport FilterAltOutlinedIcon from \"@mui/icons-material/FilterAltOutlined\";\nimport KeyboardArrowDownIcon from \"@mui/icons-material/KeyboardArrowDown\";\nimport KeyboardArrowUpIcon from \"@mui/icons-material/KeyboardArrowUp\";\nimport {\n Box,\n Button,\n IconButton,\n InputAdornment,\n MenuItem,\n Popover,\n Stack,\n TextField,\n ToggleButton,\n ToggleButtonGroup,\n Typography,\n} from \"@mui/material\";\nimport { type FocusEvent, type MouseEvent, useMemo, useState } from \"react\";\nimport {\n coerceFilterValue,\n createFilterId,\n formatFiltersSummary,\n getFieldByName,\n getOpsForField,\n querySpecOpLabels,\n} from \"./query-spec-utils\";\nimport type {\n QuerySpecField,\n QuerySpecFilter,\n QuerySpecOp,\n RemoteDataTableQueryBuilderProps as RemoteDataTableQueryBuilderConfig,\n} from \"./RemoteDataTable.types\";\n\ntype RemoteDataTableQueryBuilderProps = {\n queryBuilder: RemoteDataTableQueryBuilderConfig;\n};\n\ntype QueryFilterRowProps = {\n filter: QuerySpecFilter;\n fields: QuerySpecField[];\n fieldMap: Map<string, QuerySpecField>;\n onFieldChange: (filterId: string, nextFieldName: string) => void;\n onOpChange: (filterId: string, nextOp: QuerySpecOp) => void;\n onValueChange: (filterId: string, nextValue: string) => void;\n onRemove: (filterId: string) => void;\n};\n\nconst QueryFilterRow = ({\n filter,\n fields,\n fieldMap,\n onFieldChange,\n onOpChange,\n onValueChange,\n onRemove,\n}: QueryFilterRowProps) => {\n const field = fieldMap.get(filter.field);\n const ops = getOpsForField(field);\n const valueLabel = filter.op === \"in\" ? \"Values\" : \"Value\";\n const inputType =\n field?.type === \"number\"\n ? \"number\"\n : field?.type === \"date\"\n ? \"date\"\n : field?.type === \"datetime\"\n ? \"datetime-local\"\n : \"text\";\n const shouldShrinkLabel =\n field?.type === \"date\" || field?.type === \"datetime\";\n const valuePlaceholder =\n field?.placeholder ??\n (filter.op === \"in\" ? \"Comma-separated values\" : undefined);\n const fieldOptions = field?.options ?? [];\n const useOptions =\n fieldOptions.length > 0 && (filter.op === \"eq\" || filter.op === \"neq\");\n\n return (\n <Stack\n direction={{ xs: \"column\", sm: \"row\" }}\n spacing={1}\n alignItems={{ xs: \"stretch\", sm: \"center\" }}\n >\n <TextField\n select\n size=\"small\"\n label=\"Field\"\n value={filter.field}\n onChange={(event) => onFieldChange(filter.id, event.target.value)}\n sx={{ minWidth: 160 }}\n >\n {fields.map((queryField) => (\n <MenuItem key={queryField.name} value={queryField.name}>\n {queryField.label}\n </MenuItem>\n ))}\n </TextField>\n <ToggleButtonGroup\n exclusive\n size=\"small\"\n color=\"primary\"\n value={filter.op}\n onChange={(_, value) => {\n if (value !== null) {\n onOpChange(filter.id, value as QuerySpecOp);\n }\n }}\n sx={{ minWidth: 150, alignSelf: \"center\" }}\n >\n {ops.map((op) => (\n <ToggleButton key={op} value={op}>\n {querySpecOpLabels[op] ?? op}\n </ToggleButton>\n ))}\n </ToggleButtonGroup>\n {filter.op === \"isnull\" ? (\n <TextField\n select\n size=\"small\"\n label=\"Null state\"\n value={filter.value ?? \"true\"}\n onChange={(event) => onValueChange(filter.id, event.target.value)}\n sx={{ minWidth: 160, flex: 1 }}\n >\n <MenuItem value=\"true\">Is null</MenuItem>\n <MenuItem value=\"false\">Is not null</MenuItem>\n </TextField>\n ) : useOptions ? (\n <TextField\n select\n size=\"small\"\n label={valueLabel}\n value={filter.value ?? \"\"}\n onChange={(event) => onValueChange(filter.id, event.target.value)}\n sx={{ minWidth: 160, flex: 1 }}\n >\n {fieldOptions.map((option) => (\n <MenuItem key={option.value} value={option.value}>\n {option.label}\n </MenuItem>\n ))}\n </TextField>\n ) : field?.type === \"boolean\" ? (\n <TextField\n select\n size=\"small\"\n label={valueLabel}\n value={filter.value ?? \"true\"}\n onChange={(event) => onValueChange(filter.id, event.target.value)}\n sx={{ minWidth: 160, flex: 1 }}\n >\n <MenuItem value=\"true\">True</MenuItem>\n <MenuItem value=\"false\">False</MenuItem>\n </TextField>\n ) : (\n <TextField\n size=\"small\"\n type={inputType}\n label={valueLabel}\n value={filter.value ?? \"\"}\n onChange={(event) => onValueChange(filter.id, event.target.value)}\n placeholder={valuePlaceholder}\n InputLabelProps={shouldShrinkLabel ? { shrink: true } : undefined}\n sx={{ minWidth: 160, flex: 1 }}\n />\n )}\n <IconButton\n size=\"small\"\n aria-label=\"Remove filter\"\n onClick={() => onRemove(filter.id)}\n >\n <DeleteOutlineIcon fontSize=\"small\" />\n </IconButton>\n </Stack>\n );\n};\n\nexport const RemoteDataTableQueryBuilder = ({\n queryBuilder,\n}: RemoteDataTableQueryBuilderProps) => {\n const [queryAnchor, setQueryAnchor] = useState<HTMLElement | null>(null);\n const queryOpen = Boolean(queryAnchor);\n const queryPopoverWidth = queryAnchor?.clientWidth ?? 560;\n const {\n fields: queryFields,\n filters: queryFilters,\n onFiltersChange,\n placeholder,\n summaryFormatter,\n } = queryBuilder;\n const queryFieldMap = useMemo(\n () => new Map(queryFields.map((field) => [field.name, field])),\n [queryFields],\n );\n\n const querySummary = useMemo(() => {\n if (!queryFilters.length) {\n return \"\";\n }\n\n if (summaryFormatter) {\n return summaryFormatter(queryFilters, queryFields);\n }\n\n return formatFiltersSummary(queryFilters, queryFields);\n }, [queryFilters, queryFields, summaryFormatter]);\n\n const handleQueryOpen = (\n event: MouseEvent<HTMLElement> | FocusEvent<HTMLElement>,\n ) => {\n setQueryAnchor(event.currentTarget);\n };\n\n const handleQueryClose = () => {\n setQueryAnchor(null);\n };\n\n const handleAddFilter = () => {\n if (queryFields.length === 0) {\n return;\n }\n\n const field = queryFields[0];\n const ops = getOpsForField(field);\n const op = ops[0] ?? \"eq\";\n const value = coerceFilterValue(field, op);\n\n onFiltersChange([\n ...queryFilters,\n { id: createFilterId(), field: field.name, op, value },\n ]);\n };\n\n const handleRemoveFilter = (filterId: string) => {\n onFiltersChange(queryFilters.filter((filter) => filter.id !== filterId));\n };\n\n const handleFieldChange = (filterId: string, nextFieldName: string) => {\n const nextField = getFieldByName(queryFields, nextFieldName);\n if (!nextField) {\n return;\n }\n\n const allowedOps = getOpsForField(nextField);\n\n onFiltersChange(\n queryFilters.map((filter) => {\n if (filter.id !== filterId) {\n return filter;\n }\n\n const op = allowedOps.includes(filter.op)\n ? filter.op\n : (allowedOps[0] ?? \"eq\");\n const value = coerceFilterValue(nextField, op, filter.value);\n\n return {\n ...filter,\n field: nextField.name,\n op,\n value,\n };\n }),\n );\n };\n\n const handleOpChange = (filterId: string, nextOp: QuerySpecOp) => {\n onFiltersChange(\n queryFilters.map((filter) => {\n if (filter.id !== filterId) {\n return filter;\n }\n\n const field = queryFieldMap.get(filter.field);\n const value = coerceFilterValue(field, nextOp, filter.value);\n\n return {\n ...filter,\n op: nextOp,\n value,\n };\n }),\n );\n };\n\n const handleValueChange = (filterId: string, nextValue: string) => {\n onFiltersChange(\n queryFilters.map((filter) =>\n filter.id === filterId\n ? {\n ...filter,\n value: nextValue,\n }\n : filter,\n ),\n );\n };\n\n return (\n <>\n <Box\n sx={{\n borderBottom: \"1px solid\",\n borderColor: \"divider\",\n px: 2,\n py: 1.5,\n }}\n >\n <TextField\n fullWidth\n size=\"small\"\n placeholder={placeholder ?? \"Add filters\"}\n value={querySummary}\n onClick={handleQueryOpen}\n onFocus={handleQueryOpen}\n InputProps={{\n readOnly: true,\n startAdornment: (\n <InputAdornment position=\"start\">\n <FilterAltOutlinedIcon fontSize=\"small\" />\n </InputAdornment>\n ),\n endAdornment: (\n <InputAdornment position=\"end\">\n {queryOpen ? (\n <KeyboardArrowUpIcon />\n ) : (\n <KeyboardArrowDownIcon />\n )}\n </InputAdornment>\n ),\n }}\n inputProps={{ \"aria-label\": \"Filter query\" }}\n sx={{\n \"& .MuiInputBase-root\": { cursor: \"pointer\" },\n \"& .MuiInputBase-input\": {\n cursor: \"pointer\",\n textOverflow: \"ellipsis\",\n overflow: \"hidden\",\n whiteSpace: \"nowrap\",\n },\n }}\n />\n </Box>\n <Popover\n open={queryOpen}\n anchorEl={queryAnchor}\n onClose={handleQueryClose}\n disableRestoreFocus\n anchorOrigin={{ vertical: \"bottom\", horizontal: \"left\" }}\n transformOrigin={{ vertical: \"top\", horizontal: \"left\" }}\n slotProps={{\n paper: {\n sx: {\n width: queryPopoverWidth,\n maxWidth: \"calc(100vw - 32px)\",\n p: 2,\n },\n },\n }}\n >\n <Box sx={{ maxHeight: \"60vh\", overflowY: \"auto\" }}>\n <Stack spacing={2}>\n <Box\n display=\"flex\"\n alignItems=\"center\"\n justifyContent=\"space-between\"\n gap={1}\n >\n <Typography variant=\"subtitle2\">Filters</Typography>\n <Box display=\"flex\" alignItems=\"center\" gap={1}>\n <Button\n size=\"small\"\n startIcon={<AddIcon fontSize=\"small\" />}\n onClick={handleAddFilter}\n disabled={queryFields.length === 0}\n >\n Add filter\n </Button>\n <IconButton\n size=\"small\"\n aria-label=\"Close filters\"\n onClick={handleQueryClose}\n >\n <CloseIcon fontSize=\"small\" />\n </IconButton>\n </Box>\n </Box>\n {queryFilters.length === 0 ? (\n <Typography variant=\"body2\" color=\"text.secondary\">\n No filters yet.\n </Typography>\n ) : (\n <Stack spacing={1.5}>\n {queryFilters.map((filter) => (\n <QueryFilterRow\n key={filter.id}\n filter={filter}\n fields={queryFields}\n fieldMap={queryFieldMap}\n onFieldChange={handleFieldChange}\n onOpChange={handleOpChange}\n onValueChange={handleValueChange}\n onRemove={handleRemoveFilter}\n />\n ))}\n </Stack>\n )}\n </Stack>\n </Box>\n </Popover>\n </>\n );\n};\n"],"names":["QueryFilterRow","filter","fields","fieldMap","onFieldChange","onOpChange","onValueChange","onRemove","field","ops","getOpsForField","valueLabel","inputType","shouldShrinkLabel","valuePlaceholder","fieldOptions","useOptions","jsxs","Stack","jsx","TextField","event","queryField","MenuItem","ToggleButtonGroup","_","value","op","ToggleButton","querySpecOpLabels","option","IconButton","DeleteOutlineIcon","RemoteDataTableQueryBuilder","queryBuilder","queryAnchor","setQueryAnchor","useState","queryOpen","queryPopoverWidth","queryFields","queryFilters","onFiltersChange","placeholder","summaryFormatter","queryFieldMap","useMemo","querySummary","formatFiltersSummary","handleQueryOpen","handleQueryClose","handleAddFilter","coerceFilterValue","createFilterId","handleRemoveFilter","filterId","handleFieldChange","nextFieldName","nextField","getFieldByName","allowedOps","handleOpChange","nextOp","handleValueChange","nextValue","Fragment","Box","InputAdornment","FilterAltOutlinedIcon","KeyboardArrowUpIcon","KeyboardArrowDownIcon","Popover","Typography","Button","AddIcon","CloseIcon"],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export type { OnChangeFn, PaginationState, QuerySpecField, QuerySpecFieldOption, QuerySpecFieldType, QuerySpecFilter, QuerySpecOp, RemoteDataTableColumn, RemoteDataTableColumnMeta, RemoteDataTableProps, RemoteDataTableQueryBuilderProps, SortingState, } from './RemoteDataTable';
2
+ export { buildQuerySpecParams, default, default as RemoteDataTable, } from './RemoteDataTable';
3
+ export * from './use-remote-data-table';
@@ -1,4 +1,4 @@
1
- import { QuerySpecField, QuerySpecFilter, QuerySpecOp } from './remote-data-table.types';
1
+ import { QuerySpecField, QuerySpecFilter, QuerySpecOp } from './RemoteDataTable.types';
2
2
  export declare const querySpecOpLabels: Record<QuerySpecOp, string>;
3
3
  export declare const createFilterId: () => string;
4
4
  export declare const getFieldByName: (fields: QuerySpecField[], name: string) => QuerySpecField | undefined;
@@ -0,0 +1,74 @@
1
+ const c = ["eq"], m = {
2
+ eq: "is",
3
+ neq: "is not",
4
+ lt: "<",
5
+ lte: "<=",
6
+ gt: ">",
7
+ gte: ">=",
8
+ ilike: "contains",
9
+ in: "in",
10
+ isnull: "is null"
11
+ }, d = () => typeof crypto < "u" && typeof crypto.randomUUID == "function" ? crypto.randomUUID() : `filter-${Math.random().toString(36).slice(2, 10)}`, b = (e, t) => e.find((n) => n.name === t), g = (e) => e?.ops?.length ? e.ops : c, $ = (e, t, n) => t === "isnull" || e?.type === "boolean" ? n === "false" ? "false" : "true" : n ?? "", f = (e, t) => {
12
+ if (e.op === "isnull")
13
+ return e.value === "false" ? "false" : "true";
14
+ const n = (e.value ?? "").trim();
15
+ if (!n)
16
+ return "";
17
+ if (e.op === "in")
18
+ return n.split(",").map((o) => o.trim()).filter(Boolean).join(",");
19
+ if (t?.type === "date" || t?.type === "datetime") {
20
+ const o = new Date(n);
21
+ if (!Number.isNaN(o.getTime()))
22
+ return o.toISOString();
23
+ }
24
+ return t?.type === "boolean" ? n === "false" ? "false" : "true" : n;
25
+ }, p = (e, t) => t?.options?.length ? t.options.find((n) => n.value === e)?.label ?? e : e, y = (e, t) => {
26
+ const n = t?.label ?? e.field, o = (e.value ?? "").trim();
27
+ if (e.op === "isnull")
28
+ return `${n} ${o !== "false" ? "is null" : "is not null"}`;
29
+ if (!o)
30
+ return "";
31
+ const s = m[e.op] ?? e.op;
32
+ if (e.op === "in") {
33
+ const l = o.split(",").map((u) => u.trim()).filter(Boolean).map((u) => p(u, t)).join(", ");
34
+ return `${n} ${s} (${l})`;
35
+ }
36
+ const r = p(o, t), i = !t?.type || t.type === "string" || t.type === "date" || t.type === "datetime" ? `"${r}"` : r;
37
+ return `${n} ${s} ${i}`;
38
+ }, N = (e, t) => {
39
+ if (!e.length)
40
+ return "";
41
+ const n = new Map(t.map((o) => [o.name, o]));
42
+ return e.map((o) => y(o, n.get(o.field))).filter(Boolean).join(" AND ");
43
+ }, F = (e, t) => {
44
+ const n = new Map(t.map((s) => [s.name, s])), o = {};
45
+ for (const s of e) {
46
+ const r = n.get(s.field);
47
+ if (!r)
48
+ continue;
49
+ const a = f(s, r);
50
+ if (!a && s.op !== "isnull")
51
+ continue;
52
+ const i = s.op === "eq" ? r.name : `${r.name}__${s.op}`;
53
+ if (s.op === "isnull")
54
+ o[i] = a !== "false";
55
+ else if (r.type === "boolean")
56
+ o[i] = a !== "false";
57
+ else if (r.type === "number" && s.op !== "in") {
58
+ const l = Number(a);
59
+ o[i] = Number.isNaN(l) ? a : l;
60
+ } else
61
+ o[i] = a;
62
+ }
63
+ return o;
64
+ };
65
+ export {
66
+ F as buildQuerySpecParams,
67
+ $ as coerceFilterValue,
68
+ d as createFilterId,
69
+ N as formatFiltersSummary,
70
+ b as getFieldByName,
71
+ g as getOpsForField,
72
+ m as querySpecOpLabels
73
+ };
74
+ //# sourceMappingURL=query-spec-utils.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-spec-utils.mjs","sources":["../../src/RemoteDataTable/query-spec-utils.ts"],"sourcesContent":["import type {\n QuerySpecField,\n QuerySpecFilter,\n QuerySpecOp,\n} from \"./RemoteDataTable.types\";\n\nconst defaultQuerySpecOps: QuerySpecOp[] = [\"eq\"];\n\nexport const querySpecOpLabels: Record<QuerySpecOp, string> = {\n eq: \"is\",\n neq: \"is not\",\n lt: \"<\",\n lte: \"<=\",\n gt: \">\",\n gte: \">=\",\n ilike: \"contains\",\n in: \"in\",\n isnull: \"is null\",\n};\n\nexport const createFilterId = () =>\n typeof crypto !== \"undefined\" && typeof crypto.randomUUID === \"function\"\n ? crypto.randomUUID()\n : `filter-${Math.random().toString(36).slice(2, 10)}`;\n\nexport const getFieldByName = (fields: QuerySpecField[], name: string) =>\n fields.find((field) => field.name === name);\n\nexport const getOpsForField = (field?: QuerySpecField) =>\n field?.ops?.length ? field.ops : defaultQuerySpecOps;\n\nexport const coerceFilterValue = (\n field: QuerySpecField | undefined,\n op: QuerySpecOp,\n value?: string,\n) => {\n if (op === \"isnull\") {\n return value === \"false\" ? \"false\" : \"true\";\n }\n\n if (field?.type === \"boolean\") {\n return value === \"false\" ? \"false\" : \"true\";\n }\n\n return value ?? \"\";\n};\n\nconst normalizeFilterValue = (\n filter: QuerySpecFilter,\n field?: QuerySpecField,\n) => {\n if (filter.op === \"isnull\") {\n return filter.value === \"false\" ? \"false\" : \"true\";\n }\n\n const raw = (filter.value ?? \"\").trim();\n if (!raw) {\n return \"\";\n }\n\n if (filter.op === \"in\") {\n return raw\n .split(\",\")\n .map((part) => part.trim())\n .filter(Boolean)\n .join(\",\");\n }\n\n if (field?.type === \"date\" || field?.type === \"datetime\") {\n const parsed = new Date(raw);\n if (!Number.isNaN(parsed.getTime())) {\n return parsed.toISOString();\n }\n }\n\n if (field?.type === \"boolean\") {\n return raw === \"false\" ? \"false\" : \"true\";\n }\n\n return raw;\n};\n\nconst getOptionLabel = (value: string, field?: QuerySpecField) => {\n if (!field?.options?.length) {\n return value;\n }\n\n return field.options.find((option) => option.value === value)?.label ?? value;\n};\n\nconst formatFilterSummary = (\n filter: QuerySpecFilter,\n field?: QuerySpecField,\n) => {\n const label = field?.label ?? filter.field;\n const rawValue = (filter.value ?? \"\").trim();\n\n if (filter.op === \"isnull\") {\n const isNull = rawValue !== \"false\";\n return `${label} ${isNull ? \"is null\" : \"is not null\"}`;\n }\n\n if (!rawValue) {\n return \"\";\n }\n\n const opLabel = querySpecOpLabels[filter.op] ?? filter.op;\n\n if (filter.op === \"in\") {\n const values = rawValue\n .split(\",\")\n .map((part) => part.trim())\n .filter(Boolean)\n .map((value) => getOptionLabel(value, field))\n .join(\", \");\n return `${label} ${opLabel} (${values})`;\n }\n\n const displayValue = getOptionLabel(rawValue, field);\n const needsQuotes =\n !field?.type ||\n field.type === \"string\" ||\n field.type === \"date\" ||\n field.type === \"datetime\";\n const formattedValue = needsQuotes ? `\"${displayValue}\"` : displayValue;\n return `${label} ${opLabel} ${formattedValue}`;\n};\n\nexport const formatFiltersSummary = (\n filters: QuerySpecFilter[],\n fields: QuerySpecField[],\n) => {\n if (!filters.length) {\n return \"\";\n }\n\n const fieldMap = new Map(fields.map((field) => [field.name, field]));\n return filters\n .map((filter) => formatFilterSummary(filter, fieldMap.get(filter.field)))\n .filter(Boolean)\n .join(\" AND \");\n};\n\nexport const buildQuerySpecParams = (\n filters: QuerySpecFilter[],\n fields: QuerySpecField[],\n) => {\n const fieldMap = new Map(fields.map((field) => [field.name, field]));\n const params: Record<string, string | number | boolean> = {};\n\n for (const filter of filters) {\n const field = fieldMap.get(filter.field);\n if (!field) {\n continue;\n }\n\n const normalized = normalizeFilterValue(filter, field);\n if (!normalized && filter.op !== \"isnull\") {\n continue;\n }\n\n const key = filter.op === \"eq\" ? field.name : `${field.name}__${filter.op}`;\n if (filter.op === \"isnull\") {\n params[key] = normalized !== \"false\";\n } else if (field.type === \"boolean\") {\n params[key] = normalized !== \"false\";\n } else if (field.type === \"number\" && filter.op !== \"in\") {\n const numeric = Number(normalized);\n params[key] = Number.isNaN(numeric) ? normalized : numeric;\n } else {\n params[key] = normalized;\n }\n }\n\n return params;\n};\n"],"names":["defaultQuerySpecOps","querySpecOpLabels","createFilterId","getFieldByName","fields","name","field","getOpsForField","coerceFilterValue","op","value","normalizeFilterValue","filter","raw","part","parsed","getOptionLabel","option","formatFilterSummary","label","rawValue","opLabel","values","displayValue","formattedValue","formatFiltersSummary","filters","fieldMap","buildQuerySpecParams","params","normalized","key","numeric"],"mappings":"AAMA,MAAMA,IAAqC,CAAC,IAAI,GAEnCC,IAAiD;AAAA,EAC5D,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,OAAO;AAAA,EACP,IAAI;AAAA,EACJ,QAAQ;AACV,GAEaC,IAAiB,MAC5B,OAAO,SAAW,OAAe,OAAO,OAAO,cAAe,aAC1D,OAAO,WAAA,IACP,UAAU,KAAK,SAAS,SAAS,EAAE,EAAE,MAAM,GAAG,EAAE,CAAC,IAE1CC,IAAiB,CAACC,GAA0BC,MACvDD,EAAO,KAAK,CAACE,MAAUA,EAAM,SAASD,CAAI,GAE/BE,IAAiB,CAACD,MAC7BA,GAAO,KAAK,SAASA,EAAM,MAAMN,GAEtBQ,IAAoB,CAC/BF,GACAG,GACAC,MAEID,MAAO,YAIPH,GAAO,SAAS,YACXI,MAAU,UAAU,UAAU,SAGhCA,KAAS,IAGZC,IAAuB,CAC3BC,GACAN,MACG;AACH,MAAIM,EAAO,OAAO;AAChB,WAAOA,EAAO,UAAU,UAAU,UAAU;AAG9C,QAAMC,KAAOD,EAAO,SAAS,IAAI,KAAA;AACjC,MAAI,CAACC;AACH,WAAO;AAGT,MAAID,EAAO,OAAO;AAChB,WAAOC,EACJ,MAAM,GAAG,EACT,IAAI,CAACC,MAASA,EAAK,KAAA,CAAM,EACzB,OAAO,OAAO,EACd,KAAK,GAAG;AAGb,MAAIR,GAAO,SAAS,UAAUA,GAAO,SAAS,YAAY;AACxD,UAAMS,IAAS,IAAI,KAAKF,CAAG;AAC3B,QAAI,CAAC,OAAO,MAAME,EAAO,QAAA,CAAS;AAChC,aAAOA,EAAO,YAAA;AAAA,EAElB;AAEA,SAAIT,GAAO,SAAS,YACXO,MAAQ,UAAU,UAAU,SAG9BA;AACT,GAEMG,IAAiB,CAACN,GAAeJ,MAChCA,GAAO,SAAS,SAIdA,EAAM,QAAQ,KAAK,CAACW,MAAWA,EAAO,UAAUP,CAAK,GAAG,SAASA,IAH/DA,GAMLQ,IAAsB,CAC1BN,GACAN,MACG;AACH,QAAMa,IAAQb,GAAO,SAASM,EAAO,OAC/BQ,KAAYR,EAAO,SAAS,IAAI,KAAA;AAEtC,MAAIA,EAAO,OAAO;AAEhB,WAAO,GAAGO,CAAK,IADAC,MAAa,UACA,YAAY,aAAa;AAGvD,MAAI,CAACA;AACH,WAAO;AAGT,QAAMC,IAAUpB,EAAkBW,EAAO,EAAE,KAAKA,EAAO;AAEvD,MAAIA,EAAO,OAAO,MAAM;AACtB,UAAMU,IAASF,EACZ,MAAM,GAAG,EACT,IAAI,CAACN,MAASA,EAAK,MAAM,EACzB,OAAO,OAAO,EACd,IAAI,CAACJ,MAAUM,EAAeN,GAAOJ,CAAK,CAAC,EAC3C,KAAK,IAAI;AACZ,WAAO,GAAGa,CAAK,IAAIE,CAAO,KAAKC,CAAM;AAAA,EACvC;AAEA,QAAMC,IAAeP,EAAeI,GAAUd,CAAK,GAM7CkB,IAJJ,CAAClB,GAAO,QACRA,EAAM,SAAS,YACfA,EAAM,SAAS,UACfA,EAAM,SAAS,aACoB,IAAIiB,CAAY,MAAMA;AAC3D,SAAO,GAAGJ,CAAK,IAAIE,CAAO,IAAIG,CAAc;AAC9C,GAEaC,IAAuB,CAClCC,GACAtB,MACG;AACH,MAAI,CAACsB,EAAQ;AACX,WAAO;AAGT,QAAMC,IAAW,IAAI,IAAIvB,EAAO,IAAI,CAACE,MAAU,CAACA,EAAM,MAAMA,CAAK,CAAC,CAAC;AACnE,SAAOoB,EACJ,IAAI,CAACd,MAAWM,EAAoBN,GAAQe,EAAS,IAAIf,EAAO,KAAK,CAAC,CAAC,EACvE,OAAO,OAAO,EACd,KAAK,OAAO;AACjB,GAEagB,IAAuB,CAClCF,GACAtB,MACG;AACH,QAAMuB,IAAW,IAAI,IAAIvB,EAAO,IAAI,CAACE,MAAU,CAACA,EAAM,MAAMA,CAAK,CAAC,CAAC,GAC7DuB,IAAoD,CAAA;AAE1D,aAAWjB,KAAUc,GAAS;AAC5B,UAAMpB,IAAQqB,EAAS,IAAIf,EAAO,KAAK;AACvC,QAAI,CAACN;AACH;AAGF,UAAMwB,IAAanB,EAAqBC,GAAQN,CAAK;AACrD,QAAI,CAACwB,KAAclB,EAAO,OAAO;AAC/B;AAGF,UAAMmB,IAAMnB,EAAO,OAAO,OAAON,EAAM,OAAO,GAAGA,EAAM,IAAI,KAAKM,EAAO,EAAE;AACzE,QAAIA,EAAO,OAAO;AAChB,MAAAiB,EAAOE,CAAG,IAAID,MAAe;AAAA,aACpBxB,EAAM,SAAS;AACxB,MAAAuB,EAAOE,CAAG,IAAID,MAAe;AAAA,aACpBxB,EAAM,SAAS,YAAYM,EAAO,OAAO,MAAM;AACxD,YAAMoB,IAAU,OAAOF,CAAU;AACjC,MAAAD,EAAOE,CAAG,IAAI,OAAO,MAAMC,CAAO,IAAIF,IAAaE;AAAA,IACrD;AACE,MAAAH,EAAOE,CAAG,IAAID;AAAA,EAElB;AAEA,SAAOD;AACT;"}
@@ -1,4 +1,4 @@
1
- import { OnChangeFn, PaginationState, QuerySpecFilter, SortingState } from './remote-data-table.types';
1
+ import { OnChangeFn, PaginationState, QuerySpecFilter, SortingState } from './RemoteDataTable.types';
2
2
  export type UseRemoteDataTableOptions = {
3
3
  initialPagination?: Partial<PaginationState>;
4
4
  initialSorting?: SortingState;
@@ -0,0 +1,40 @@
1
+ import { useState as t } from "react";
2
+ const F = {
3
+ pageIndex: 0,
4
+ pageSize: 10
5
+ }, m = (c = {}) => {
6
+ const {
7
+ initialPagination: P = {},
8
+ initialSorting: n = [],
9
+ initialFilters: e = []
10
+ } = c, i = {
11
+ ...F,
12
+ ...P
13
+ }, [S, o] = t(
14
+ i
15
+ ), [p, s] = t(n), [A, a] = t(e), r = () => {
16
+ o(i);
17
+ }, g = () => {
18
+ s(n);
19
+ }, l = () => {
20
+ a(e);
21
+ };
22
+ return {
23
+ pagination: S,
24
+ onPaginationChange: o,
25
+ sorting: p,
26
+ onSortingChange: s,
27
+ filters: A,
28
+ onFiltersChange: a,
29
+ resetPagination: r,
30
+ resetSorting: g,
31
+ resetFilters: l,
32
+ resetAll: () => {
33
+ r(), g(), l();
34
+ }
35
+ };
36
+ };
37
+ export {
38
+ m as useRemoteDataTable
39
+ };
40
+ //# sourceMappingURL=use-remote-data-table.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-remote-data-table.mjs","sources":["../../src/RemoteDataTable/use-remote-data-table.ts"],"sourcesContent":["import { useState } from \"react\";\nimport type {\n OnChangeFn,\n PaginationState,\n QuerySpecFilter,\n SortingState,\n} from \"./RemoteDataTable.types\";\n\nexport type UseRemoteDataTableOptions = {\n initialPagination?: Partial<PaginationState>;\n initialSorting?: SortingState;\n initialFilters?: QuerySpecFilter[];\n};\n\nexport type UseRemoteDataTableResult = {\n pagination: PaginationState;\n onPaginationChange: OnChangeFn<PaginationState>;\n sorting: SortingState;\n onSortingChange: OnChangeFn<SortingState>;\n filters: QuerySpecFilter[];\n onFiltersChange: (filters: QuerySpecFilter[]) => void;\n resetPagination: () => void;\n resetSorting: () => void;\n resetFilters: () => void;\n resetAll: () => void;\n};\n\nconst DEFAULT_PAGINATION: PaginationState = {\n pageIndex: 0,\n pageSize: 10,\n};\n\nexport const useRemoteDataTable = (\n options: UseRemoteDataTableOptions = {},\n): UseRemoteDataTableResult => {\n const {\n initialPagination = {},\n initialSorting = [],\n initialFilters = [],\n } = options;\n\n const resolvedInitialPagination: PaginationState = {\n ...DEFAULT_PAGINATION,\n ...initialPagination,\n };\n\n const [pagination, setPagination] = useState<PaginationState>(\n resolvedInitialPagination,\n );\n const [sorting, setSorting] = useState<SortingState>(initialSorting);\n const [filters, setFilters] = useState<QuerySpecFilter[]>(initialFilters);\n\n const resetPagination = () => {\n setPagination(resolvedInitialPagination);\n };\n\n const resetSorting = () => {\n setSorting(initialSorting);\n };\n\n const resetFilters = () => {\n setFilters(initialFilters);\n };\n\n const resetAll = () => {\n resetPagination();\n resetSorting();\n resetFilters();\n };\n\n return {\n pagination,\n onPaginationChange: setPagination,\n sorting,\n onSortingChange: setSorting,\n filters,\n onFiltersChange: setFilters,\n resetPagination,\n resetSorting,\n resetFilters,\n resetAll,\n };\n};\n"],"names":["DEFAULT_PAGINATION","useRemoteDataTable","options","initialPagination","initialSorting","initialFilters","resolvedInitialPagination","pagination","setPagination","useState","sorting","setSorting","filters","setFilters","resetPagination","resetSorting","resetFilters"],"mappings":";AA2BA,MAAMA,IAAsC;AAAA,EAC1C,WAAW;AAAA,EACX,UAAU;AACZ,GAEaC,IAAqB,CAChCC,IAAqC,OACR;AAC7B,QAAM;AAAA,IACJ,mBAAAC,IAAoB,CAAA;AAAA,IACpB,gBAAAC,IAAiB,CAAA;AAAA,IACjB,gBAAAC,IAAiB,CAAA;AAAA,EAAC,IAChBH,GAEEI,IAA6C;AAAA,IACjD,GAAGN;AAAA,IACH,GAAGG;AAAA,EAAA,GAGC,CAACI,GAAYC,CAAa,IAAIC;AAAA,IAClCH;AAAA,EAAA,GAEI,CAACI,GAASC,CAAU,IAAIF,EAAuBL,CAAc,GAC7D,CAACQ,GAASC,CAAU,IAAIJ,EAA4BJ,CAAc,GAElES,IAAkB,MAAM;AAC5B,IAAAN,EAAcF,CAAyB;AAAA,EACzC,GAEMS,IAAe,MAAM;AACzB,IAAAJ,EAAWP,CAAc;AAAA,EAC3B,GAEMY,IAAe,MAAM;AACzB,IAAAH,EAAWR,CAAc;AAAA,EAC3B;AAQA,SAAO;AAAA,IACL,YAAAE;AAAA,IACA,oBAAoBC;AAAA,IACpB,SAAAE;AAAA,IACA,iBAAiBC;AAAA,IACjB,SAAAC;AAAA,IACA,iBAAiBC;AAAA,IACjB,iBAAAC;AAAA,IACA,cAAAC;AAAA,IACA,cAAAC;AAAA,IACA,UAhBe,MAAM;AACrB,MAAAF,EAAA,GACAC,EAAA,GACAC,EAAA;AAAA,IACF;AAAA,EAYE;AAEJ;"}
@@ -0,0 +1,147 @@
1
+ import { BoxProps } from '@mui/material/Box';
2
+ import { CircularProgressProps } from '@mui/material/CircularProgress';
3
+ import { FormControlProps } from '@mui/material/FormControl';
4
+ import { InputLabelProps } from '@mui/material/InputLabel';
5
+ import { LinearProgressProps } from '@mui/material/LinearProgress';
6
+ import { SelectProps as MuiSelectProps } from '@mui/material/Select';
7
+ import { JSXElementConstructor, ReactNode } from 'react';
8
+ /**
9
+ * Select input size variants
10
+ */
11
+ export type SelectSize = "small" | "medium";
12
+ /**
13
+ * Interface representing the slots for the Select component.
14
+ */
15
+ export interface SelectSlots {
16
+ /**
17
+ * Root form control component
18
+ */
19
+ formControl?: JSXElementConstructor<FormControlProps>;
20
+ /**
21
+ * Input label component
22
+ */
23
+ inputLabel?: JSXElementConstructor<InputLabelProps>;
24
+ /**
25
+ * Select component
26
+ */
27
+ select?: JSXElementConstructor<MuiSelectProps<any>>;
28
+ /**
29
+ * Render value container component
30
+ */
31
+ renderValueContainer?: JSXElementConstructor<BoxProps>;
32
+ /**
33
+ * Loading indicator component (when fetching)
34
+ */
35
+ loadingIndicator?: JSXElementConstructor<CircularProgressProps>;
36
+ /**
37
+ * Fetching indicator component (when loading)
38
+ */
39
+ fetchingIndicator?: JSXElementConstructor<LinearProgressProps>;
40
+ }
41
+ /**
42
+ * Interface representing the slot properties for the Select component.
43
+ */
44
+ export interface SelectSlotProps {
45
+ /**
46
+ * Props for the form control
47
+ */
48
+ formControl?: Partial<FormControlProps>;
49
+ /**
50
+ * Props for the input label
51
+ */
52
+ inputLabel?: Partial<InputLabelProps>;
53
+ /**
54
+ * Props for the select (onChange is managed by the component)
55
+ */
56
+ select?: Partial<Omit<MuiSelectProps<any>, "onChange">>;
57
+ /**
58
+ * Props for the render value container
59
+ */
60
+ renderValueContainer?: Partial<BoxProps>;
61
+ /**
62
+ * Props for the loading indicator
63
+ */
64
+ loadingIndicator?: Partial<CircularProgressProps>;
65
+ /**
66
+ * Props for the fetching indicator
67
+ */
68
+ fetchingIndicator?: Partial<LinearProgressProps>;
69
+ }
70
+ /**
71
+ * Props for the Select component
72
+ *
73
+ * @template T - The type of the selected value
74
+ */
75
+ export interface SelectProps<T> {
76
+ /**
77
+ * The label for the select input.
78
+ */
79
+ label: string;
80
+ /**
81
+ * The selected value.
82
+ */
83
+ value: T;
84
+ /**
85
+ * If true, the select input is in a loading state.
86
+ */
87
+ loading?: boolean;
88
+ /**
89
+ * If true, the select input is in a fetching state.
90
+ */
91
+ fetching?: boolean;
92
+ /**
93
+ * The size of the select input.
94
+ */
95
+ size?: SelectSize;
96
+ /**
97
+ * The color of the select input.
98
+ */
99
+ color?: string;
100
+ /**
101
+ * If true, the select input takes up the full width of its container.
102
+ */
103
+ fullWidth?: boolean;
104
+ /**
105
+ * The child elements to be rendered within the select input.
106
+ */
107
+ children?: ReactNode;
108
+ /**
109
+ * The callback function to handle changes to the select input.
110
+ */
111
+ onChange?: MuiSelectProps<T>["onChange"];
112
+ /**
113
+ * Optional slots for custom rendering within the select
114
+ */
115
+ slots?: SelectSlots;
116
+ /**
117
+ * Optional props for the slots
118
+ */
119
+ slotProps?: SelectSlotProps;
120
+ }
121
+ /**
122
+ * A custom Select component that extends the functionality of the Material-UI Select component.
123
+ * This component supports additional features such as loading and fetching states, custom colors, and full-width display.
124
+ *
125
+ * Supports extensive customization through slots and slotProps.
126
+ *
127
+ * @example
128
+ * ```tsx
129
+ * // Basic usage
130
+ * <Select label="Country" value={country} onChange={handleChange}>
131
+ * <MenuItem value="us">United States</MenuItem>
132
+ * <MenuItem value="uk">United Kingdom</MenuItem>
133
+ * </Select>
134
+ *
135
+ * // With custom loading indicator
136
+ * <Select
137
+ * label="Status"
138
+ * value={status}
139
+ * loading
140
+ * slotProps={{
141
+ * loadingIndicator: { size: 24 }
142
+ * }}
143
+ * />
144
+ * ```
145
+ */
146
+ export declare function Select<T extends ReactNode>({ label, value, loading, fetching, size, fullWidth, color, children, onChange, slots, slotProps, }: SelectProps<T>): import("react/jsx-runtime").JSX.Element;
147
+ export default Select;