dinocollab-core 2.1.19 → 2.1.21

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 (445) hide show
  1. package/dist/_virtual/Reflect.js +2 -0
  2. package/dist/_virtual/Reflect.js.map +1 -0
  3. package/dist/_virtual/Reflect2.js +2 -0
  4. package/dist/_virtual/Reflect2.js.map +1 -0
  5. package/dist/_virtual/_commonjsHelpers.js +2 -0
  6. package/dist/_virtual/_commonjsHelpers.js.map +1 -0
  7. package/dist/api-context/index.js +1 -1
  8. package/dist/components/index.js +1 -1
  9. package/dist/data-view/index.js +1 -1
  10. package/dist/form/index.js +1 -1
  11. package/dist/hooks/index.js +1 -1
  12. package/dist/http-service/index.js +1 -1
  13. package/dist/lab/index.js +1 -1
  14. package/dist/mfe-shared/index.js +1 -1
  15. package/dist/node_modules/reflect-metadata/Reflect.js +16 -0
  16. package/dist/node_modules/reflect-metadata/Reflect.js.map +1 -0
  17. package/dist/redux/index.js +1 -1
  18. package/dist/src/api-context/alert-global.js +2 -0
  19. package/dist/src/api-context/alert-global.js.map +1 -0
  20. package/dist/src/api-context/drawer-global.js +2 -0
  21. package/dist/src/api-context/drawer-global.js.map +1 -0
  22. package/dist/src/api-context/global-modal.js +2 -0
  23. package/dist/src/api-context/global-modal.js.map +1 -0
  24. package/dist/src/api-context/popover-global.js +2 -0
  25. package/dist/src/api-context/popover-global.js.map +1 -0
  26. package/dist/src/api-context/popover.js +2 -0
  27. package/dist/src/api-context/popover.js.map +1 -0
  28. package/dist/src/api-context/ui.units.js.map +1 -0
  29. package/dist/src/components/breadcrumbs.js +2 -0
  30. package/dist/src/components/breadcrumbs.js.map +1 -0
  31. package/dist/src/components/buttons.js +2 -0
  32. package/dist/src/components/buttons.js.map +1 -0
  33. package/dist/src/components/copy-to-clipboard.js +2 -0
  34. package/dist/src/components/copy-to-clipboard.js.map +1 -0
  35. package/dist/src/components/create.multi-select-dropdown.js +2 -0
  36. package/dist/src/components/create.multi-select-dropdown.js.map +1 -0
  37. package/dist/src/components/help-tooltip.js +2 -0
  38. package/dist/src/components/help-tooltip.js.map +1 -0
  39. package/dist/src/components/image-with-fallback.js +2 -0
  40. package/dist/src/components/image-with-fallback.js.map +1 -0
  41. package/dist/src/components/rich-tooltip.js +2 -0
  42. package/dist/src/components/rich-tooltip.js.map +1 -0
  43. package/dist/src/components/text-editor.js +2 -0
  44. package/dist/src/components/text-editor.js.map +1 -0
  45. package/dist/src/components/text-editor.preview.js.map +1 -0
  46. package/dist/src/data-view/context.js +2 -0
  47. package/dist/src/data-view/context.js.map +1 -0
  48. package/dist/src/data-view/convert-filter-to-graphql.js +2 -0
  49. package/dist/src/data-view/convert-filter-to-graphql.js.map +1 -0
  50. package/dist/src/data-view/create.active-filters-panel.js +2 -0
  51. package/dist/src/data-view/create.active-filters-panel.js.map +1 -0
  52. package/dist/src/data-view/create.data-view.js +2 -0
  53. package/dist/src/data-view/create.data-view.js.map +1 -0
  54. package/dist/src/data-view/create.filter-bar.js +2 -0
  55. package/dist/src/data-view/create.filter-bar.js.map +1 -0
  56. package/dist/src/data-view/create.filter-menu.js +2 -0
  57. package/dist/src/data-view/create.filter-menu.js.map +1 -0
  58. package/dist/src/data-view/create.pagination-bar.js +2 -0
  59. package/dist/src/data-view/create.pagination-bar.js.map +1 -0
  60. package/dist/src/data-view/create.popper-panel.js +2 -0
  61. package/dist/src/data-view/create.popper-panel.js.map +1 -0
  62. package/dist/src/data-view/create.search-match.js +2 -0
  63. package/dist/src/data-view/create.search-match.js.map +1 -0
  64. package/dist/src/data-view/create.sort-menu.js +2 -0
  65. package/dist/src/data-view/create.sort-menu.js.map +1 -0
  66. package/dist/src/data-view/create.view-mode.js +2 -0
  67. package/dist/src/data-view/create.view-mode.js.map +1 -0
  68. package/dist/src/data-view/dino.js +2 -0
  69. package/dist/src/data-view/dino.js.map +1 -0
  70. package/dist/src/data-view/filter-store.js +2 -0
  71. package/dist/src/data-view/filter-store.js.map +1 -0
  72. package/dist/src/data-view/helpers.js +2 -0
  73. package/dist/src/data-view/helpers.js.map +1 -0
  74. package/dist/src/data-view/query-param-url.js +2 -0
  75. package/dist/src/data-view/query-param-url.js.map +1 -0
  76. package/dist/src/data-view/scroll-tracking.js +2 -0
  77. package/dist/src/data-view/scroll-tracking.js.map +1 -0
  78. package/dist/src/data-view/types.js.map +1 -0
  79. package/dist/src/data-view/ui.units.js +2 -0
  80. package/dist/src/data-view/ui.units.js.map +1 -0
  81. package/dist/src/data-view/view-mode.content.js +2 -0
  82. package/dist/src/data-view/view-mode.content.js.map +1 -0
  83. package/dist/src/data-view/view-mode.types.js.map +1 -0
  84. package/dist/src/data-view/view-mode.units.js +2 -0
  85. package/dist/src/data-view/view-mode.units.js.map +1 -0
  86. package/dist/src/form/create.autocomplete.chips.js +2 -0
  87. package/dist/src/form/create.autocomplete.chips.js.map +1 -0
  88. package/dist/src/form/create.color-picker.js +2 -0
  89. package/dist/src/form/create.color-picker.js.map +1 -0
  90. package/dist/src/form/create.date-expired.js +2 -0
  91. package/dist/src/form/create.date-expired.js.map +1 -0
  92. package/dist/src/form/create.date-picker.js +2 -0
  93. package/dist/src/form/create.date-picker.js.map +1 -0
  94. package/dist/src/form/create.form-base.js +2 -0
  95. package/dist/src/form/create.form-base.js.map +1 -0
  96. package/dist/src/form/create.form-comfirm.js +2 -0
  97. package/dist/src/form/create.form-comfirm.js.map +1 -0
  98. package/dist/src/form/create.form-grid-layout.js +2 -0
  99. package/dist/src/form/create.form-grid-layout.js.map +1 -0
  100. package/dist/src/form/create.form-grid-layout.units.js.map +1 -0
  101. package/dist/src/form/create.input-file.csv-local-parser.js +2 -0
  102. package/dist/src/form/create.input-file.csv-local-parser.js.map +1 -0
  103. package/dist/src/form/create.input.file.js +2 -0
  104. package/dist/src/form/create.input.file.js.map +1 -0
  105. package/dist/src/form/create.input.image-file.js +2 -0
  106. package/dist/src/form/create.input.image-file.js.map +1 -0
  107. package/dist/src/form/create.input.js +2 -0
  108. package/dist/src/form/create.input.js.map +1 -0
  109. package/dist/src/form/create.select-simple.js +2 -0
  110. package/dist/src/form/create.select-simple.js.map +1 -0
  111. package/dist/src/form/create.select-with-api.js +2 -0
  112. package/dist/src/form/create.select-with-api.js.map +1 -0
  113. package/dist/src/form/create.text-editor.js +2 -0
  114. package/dist/src/form/create.text-editor.js.map +1 -0
  115. package/dist/src/form/decorator.form.js +2 -0
  116. package/dist/src/form/decorator.form.js.map +1 -0
  117. package/dist/src/form/decorator.js +2 -0
  118. package/dist/src/form/decorator.js.map +1 -0
  119. package/dist/src/form/dino-form.js +2 -0
  120. package/dist/src/form/dino-form.js.map +1 -0
  121. package/dist/src/form/helpers.js +2 -0
  122. package/dist/src/form/helpers.js.map +1 -0
  123. package/dist/src/form/modal-wrapper.js +2 -0
  124. package/dist/src/form/modal-wrapper.js.map +1 -0
  125. package/dist/src/form/validator.js +2 -0
  126. package/dist/src/form/validator.js.map +1 -0
  127. package/dist/src/hooks/check-scrolled.js +2 -0
  128. package/dist/src/hooks/check-scrolled.js.map +1 -0
  129. package/dist/src/hooks/debounce.js +2 -0
  130. package/dist/src/hooks/debounce.js.map +1 -0
  131. package/dist/src/hooks/use-fetch-data.js +2 -0
  132. package/dist/src/hooks/use-fetch-data.js.map +1 -0
  133. package/dist/src/http-service/base/crud-service-base.js +2 -0
  134. package/dist/src/http-service/base/crud-service-base.js.map +1 -0
  135. package/dist/src/http-service/base/gateway.js.map +1 -0
  136. package/dist/src/http-service/base/helpers.js +2 -0
  137. package/dist/src/http-service/base/helpers.js.map +1 -0
  138. package/dist/src/http-service/base/service-base.js +2 -0
  139. package/dist/src/http-service/base/service-base.js.map +1 -0
  140. package/dist/src/http-service/graphql/app-profile.js +2 -0
  141. package/dist/src/http-service/graphql/app-profile.js.map +1 -0
  142. package/dist/src/http-service/graphql/graphql-request.js +2 -0
  143. package/dist/src/http-service/graphql/graphql-request.js.map +1 -0
  144. package/dist/src/http-service/graphql/key-converter.js.map +1 -0
  145. package/dist/src/http-service/graphql/request-param.js +2 -0
  146. package/dist/src/http-service/graphql/request-param.js.map +1 -0
  147. package/dist/src/http-service/graphql/types.js.map +1 -0
  148. package/dist/src/lab/attach-widget/helpers.js +2 -0
  149. package/dist/src/lab/attach-widget/helpers.js.map +1 -0
  150. package/dist/src/lab/attach-widget/modal.js +2 -0
  151. package/dist/src/lab/attach-widget/modal.js.map +1 -0
  152. package/dist/src/lab/attach-widget/styled.js +2 -0
  153. package/dist/src/lab/attach-widget/styled.js.map +1 -0
  154. package/dist/src/lab/attach-widget/widget.js +2 -0
  155. package/dist/src/lab/attach-widget/widget.js.map +1 -0
  156. package/dist/src/lab/input.social-links/configs.js.map +1 -0
  157. package/dist/src/lab/input.social-links/create.js +2 -0
  158. package/dist/src/lab/input.social-links/create.js.map +1 -0
  159. package/dist/src/lab/input.social-links/types.js.map +1 -0
  160. package/dist/src/lab/input.social-links/unit.icons.js +2 -0
  161. package/dist/src/lab/input.social-links/unit.icons.js.map +1 -0
  162. package/dist/src/lab/input.social-links/units.js +2 -0
  163. package/dist/src/lab/input.social-links/units.js.map +1 -0
  164. package/dist/src/mfe-shared/navigation.js +2 -0
  165. package/dist/src/mfe-shared/navigation.js.map +1 -0
  166. package/dist/src/redux/create.hoc-lazy.js +2 -0
  167. package/dist/src/redux/create.hoc-lazy.js.map +1 -0
  168. package/dist/src/redux/dino.js +2 -0
  169. package/dist/src/redux/dino.js.map +1 -0
  170. package/dist/src/redux/types.js.map +1 -0
  171. package/dist/src/redux/ui.error-page.js +2 -0
  172. package/dist/src/redux/ui.error-page.js.map +1 -0
  173. package/dist/src/table/context.js.map +1 -0
  174. package/dist/src/table/create.action-row.js +2 -0
  175. package/dist/src/table/create.action-row.js.map +1 -0
  176. package/dist/src/table/create.table.js +2 -0
  177. package/dist/src/table/create.table.js.map +1 -0
  178. package/dist/src/table/custom.filter-operators.js.map +1 -0
  179. package/dist/src/table/dino.js +2 -0
  180. package/dist/src/table/dino.js.map +1 -0
  181. package/dist/src/table/helpers.js +2 -0
  182. package/dist/src/table/helpers.js.map +1 -0
  183. package/dist/src/table/model-filter.js.map +1 -0
  184. package/dist/src/table/toolbar-pannel.js +2 -0
  185. package/dist/src/table/toolbar-pannel.js.map +1 -0
  186. package/dist/src/table/ui.buttons.js.map +1 -0
  187. package/dist/src/table/ui.units.js +2 -0
  188. package/dist/src/table/ui.units.js.map +1 -0
  189. package/dist/src/table-grid/create.table-grid.js +2 -0
  190. package/dist/src/table-grid/create.table-grid.js.map +1 -0
  191. package/dist/src/table-grid/dino.js +2 -0
  192. package/dist/src/table-grid/dino.js.map +1 -0
  193. package/dist/src/table-grid/filter-bar/base.js +2 -0
  194. package/dist/src/table-grid/filter-bar/base.js.map +1 -0
  195. package/dist/src/table-grid/filter-bar/create.filter-bar.js +2 -0
  196. package/dist/src/table-grid/filter-bar/create.filter-bar.js.map +1 -0
  197. package/dist/src/table-grid/filter-bar/create.filter-menu.js +2 -0
  198. package/dist/src/table-grid/filter-bar/create.filter-menu.js.map +1 -0
  199. package/dist/src/table-grid/filter-bar/create.filter-panel.js +2 -0
  200. package/dist/src/table-grid/filter-bar/create.filter-panel.js.map +1 -0
  201. package/dist/src/table-grid/filter-bar/create.filtered.js +2 -0
  202. package/dist/src/table-grid/filter-bar/create.filtered.js.map +1 -0
  203. package/dist/src/table-grid/filter-bar/types.js.map +1 -0
  204. package/dist/src/table-grid/filter-bar/ui.units.js.map +1 -0
  205. package/dist/src/table-grid/helpers.js.map +1 -0
  206. package/dist/src/table-grid/item-actions.js +2 -0
  207. package/dist/src/table-grid/item-actions.js.map +1 -0
  208. package/dist/src/table-grid/toolbar-pannel.js +2 -0
  209. package/dist/src/table-grid/toolbar-pannel.js.map +1 -0
  210. package/dist/src/table-grid/url-query-param.js +2 -0
  211. package/dist/src/table-grid/url-query-param.js.map +1 -0
  212. package/dist/src/utils/dayjs-config.js.map +1 -0
  213. package/dist/src/utils/helpers.js +2 -0
  214. package/dist/src/utils/helpers.js.map +1 -0
  215. package/dist/src/utils/json-object.js +2 -0
  216. package/dist/src/utils/json-object.js.map +1 -0
  217. package/dist/src/utils/query-param.js +2 -0
  218. package/dist/src/utils/query-param.js.map +1 -0
  219. package/dist/table/index.js +1 -1
  220. package/dist/table-grid/index.js +1 -1
  221. package/dist/types/form/create.form-base.d.ts +3 -2
  222. package/dist/types/form/create.form-grid-layout.d.ts +2 -1
  223. package/dist/types/form/create.input.d.ts +2 -2
  224. package/dist/types/form/decorator.d.ts +30 -0
  225. package/dist/types/form/decorator.form.d.ts +20 -0
  226. package/dist/types/form/dino-form.d.ts +3 -1
  227. package/dist/types/form/index.d.ts +2 -0
  228. package/dist/utils/index.js +1 -1
  229. package/package.json +5 -1
  230. package/dist/api-context/alert-global.js +0 -2
  231. package/dist/api-context/alert-global.js.map +0 -1
  232. package/dist/api-context/drawer-global.js +0 -2
  233. package/dist/api-context/drawer-global.js.map +0 -1
  234. package/dist/api-context/global-modal.js +0 -2
  235. package/dist/api-context/global-modal.js.map +0 -1
  236. package/dist/api-context/popover-global.js +0 -2
  237. package/dist/api-context/popover-global.js.map +0 -1
  238. package/dist/api-context/popover.js +0 -2
  239. package/dist/api-context/popover.js.map +0 -1
  240. package/dist/api-context/ui.units.js.map +0 -1
  241. package/dist/components/breadcrumbs.js +0 -2
  242. package/dist/components/breadcrumbs.js.map +0 -1
  243. package/dist/components/buttons.js +0 -2
  244. package/dist/components/buttons.js.map +0 -1
  245. package/dist/components/copy-to-clipboard.js +0 -2
  246. package/dist/components/copy-to-clipboard.js.map +0 -1
  247. package/dist/components/create.multi-select-dropdown.js +0 -2
  248. package/dist/components/create.multi-select-dropdown.js.map +0 -1
  249. package/dist/components/help-tooltip.js +0 -2
  250. package/dist/components/help-tooltip.js.map +0 -1
  251. package/dist/components/image-with-fallback.js +0 -2
  252. package/dist/components/image-with-fallback.js.map +0 -1
  253. package/dist/components/rich-tooltip.js +0 -2
  254. package/dist/components/rich-tooltip.js.map +0 -1
  255. package/dist/components/text-editor.js +0 -2
  256. package/dist/components/text-editor.js.map +0 -1
  257. package/dist/components/text-editor.preview.js.map +0 -1
  258. package/dist/data-view/context.js +0 -2
  259. package/dist/data-view/context.js.map +0 -1
  260. package/dist/data-view/convert-filter-to-graphql.js +0 -2
  261. package/dist/data-view/convert-filter-to-graphql.js.map +0 -1
  262. package/dist/data-view/create.active-filters-panel.js +0 -2
  263. package/dist/data-view/create.active-filters-panel.js.map +0 -1
  264. package/dist/data-view/create.data-view.js +0 -2
  265. package/dist/data-view/create.data-view.js.map +0 -1
  266. package/dist/data-view/create.filter-bar.js +0 -2
  267. package/dist/data-view/create.filter-bar.js.map +0 -1
  268. package/dist/data-view/create.filter-menu.js +0 -2
  269. package/dist/data-view/create.filter-menu.js.map +0 -1
  270. package/dist/data-view/create.pagination-bar.js +0 -2
  271. package/dist/data-view/create.pagination-bar.js.map +0 -1
  272. package/dist/data-view/create.popper-panel.js +0 -2
  273. package/dist/data-view/create.popper-panel.js.map +0 -1
  274. package/dist/data-view/create.search-match.js +0 -2
  275. package/dist/data-view/create.search-match.js.map +0 -1
  276. package/dist/data-view/create.sort-menu.js +0 -2
  277. package/dist/data-view/create.sort-menu.js.map +0 -1
  278. package/dist/data-view/create.view-mode.js +0 -2
  279. package/dist/data-view/create.view-mode.js.map +0 -1
  280. package/dist/data-view/dino.js +0 -2
  281. package/dist/data-view/dino.js.map +0 -1
  282. package/dist/data-view/filter-store.js +0 -2
  283. package/dist/data-view/filter-store.js.map +0 -1
  284. package/dist/data-view/helpers.js +0 -2
  285. package/dist/data-view/helpers.js.map +0 -1
  286. package/dist/data-view/query-param-url.js +0 -2
  287. package/dist/data-view/query-param-url.js.map +0 -1
  288. package/dist/data-view/scroll-tracking.js +0 -2
  289. package/dist/data-view/scroll-tracking.js.map +0 -1
  290. package/dist/data-view/types.js.map +0 -1
  291. package/dist/data-view/ui.units.js +0 -2
  292. package/dist/data-view/ui.units.js.map +0 -1
  293. package/dist/data-view/view-mode.content.js +0 -2
  294. package/dist/data-view/view-mode.content.js.map +0 -1
  295. package/dist/data-view/view-mode.types.js.map +0 -1
  296. package/dist/data-view/view-mode.units.js +0 -2
  297. package/dist/data-view/view-mode.units.js.map +0 -1
  298. package/dist/form/create.autocomplete.chips.js +0 -2
  299. package/dist/form/create.autocomplete.chips.js.map +0 -1
  300. package/dist/form/create.color-picker.js +0 -2
  301. package/dist/form/create.color-picker.js.map +0 -1
  302. package/dist/form/create.date-expired.js +0 -2
  303. package/dist/form/create.date-expired.js.map +0 -1
  304. package/dist/form/create.date-picker.js +0 -2
  305. package/dist/form/create.date-picker.js.map +0 -1
  306. package/dist/form/create.form-base.js +0 -2
  307. package/dist/form/create.form-base.js.map +0 -1
  308. package/dist/form/create.form-comfirm.js +0 -2
  309. package/dist/form/create.form-comfirm.js.map +0 -1
  310. package/dist/form/create.form-grid-layout.js +0 -2
  311. package/dist/form/create.form-grid-layout.js.map +0 -1
  312. package/dist/form/create.form-grid-layout.units.js.map +0 -1
  313. package/dist/form/create.input-file.csv-local-parser.js +0 -2
  314. package/dist/form/create.input-file.csv-local-parser.js.map +0 -1
  315. package/dist/form/create.input.file.js +0 -2
  316. package/dist/form/create.input.file.js.map +0 -1
  317. package/dist/form/create.input.image-file.js +0 -2
  318. package/dist/form/create.input.image-file.js.map +0 -1
  319. package/dist/form/create.input.js +0 -2
  320. package/dist/form/create.input.js.map +0 -1
  321. package/dist/form/create.select-simple.js +0 -2
  322. package/dist/form/create.select-simple.js.map +0 -1
  323. package/dist/form/create.select-with-api.js +0 -2
  324. package/dist/form/create.select-with-api.js.map +0 -1
  325. package/dist/form/create.text-editor.js +0 -2
  326. package/dist/form/create.text-editor.js.map +0 -1
  327. package/dist/form/dino-form.js +0 -2
  328. package/dist/form/dino-form.js.map +0 -1
  329. package/dist/form/helpers.js +0 -2
  330. package/dist/form/helpers.js.map +0 -1
  331. package/dist/form/modal-wrapper.js +0 -2
  332. package/dist/form/modal-wrapper.js.map +0 -1
  333. package/dist/form/validator.js +0 -2
  334. package/dist/form/validator.js.map +0 -1
  335. package/dist/hooks/check-scrolled.js +0 -2
  336. package/dist/hooks/check-scrolled.js.map +0 -1
  337. package/dist/hooks/debounce.js +0 -2
  338. package/dist/hooks/debounce.js.map +0 -1
  339. package/dist/hooks/use-fetch-data.js +0 -2
  340. package/dist/hooks/use-fetch-data.js.map +0 -1
  341. package/dist/http-service/base/crud-service-base.js +0 -2
  342. package/dist/http-service/base/crud-service-base.js.map +0 -1
  343. package/dist/http-service/base/gateway.js.map +0 -1
  344. package/dist/http-service/base/helpers.js +0 -2
  345. package/dist/http-service/base/helpers.js.map +0 -1
  346. package/dist/http-service/base/service-base.js +0 -2
  347. package/dist/http-service/base/service-base.js.map +0 -1
  348. package/dist/http-service/graphql/app-profile.js +0 -2
  349. package/dist/http-service/graphql/app-profile.js.map +0 -1
  350. package/dist/http-service/graphql/graphql-request.js +0 -2
  351. package/dist/http-service/graphql/graphql-request.js.map +0 -1
  352. package/dist/http-service/graphql/key-converter.js.map +0 -1
  353. package/dist/http-service/graphql/request-param.js +0 -2
  354. package/dist/http-service/graphql/request-param.js.map +0 -1
  355. package/dist/http-service/graphql/types.js.map +0 -1
  356. package/dist/lab/attach-widget/helpers.js +0 -2
  357. package/dist/lab/attach-widget/helpers.js.map +0 -1
  358. package/dist/lab/attach-widget/modal.js +0 -2
  359. package/dist/lab/attach-widget/modal.js.map +0 -1
  360. package/dist/lab/attach-widget/styled.js +0 -2
  361. package/dist/lab/attach-widget/styled.js.map +0 -1
  362. package/dist/lab/attach-widget/widget.js +0 -2
  363. package/dist/lab/attach-widget/widget.js.map +0 -1
  364. package/dist/lab/input.social-links/configs.js.map +0 -1
  365. package/dist/lab/input.social-links/create.js +0 -2
  366. package/dist/lab/input.social-links/create.js.map +0 -1
  367. package/dist/lab/input.social-links/types.js.map +0 -1
  368. package/dist/lab/input.social-links/unit.icons.js +0 -2
  369. package/dist/lab/input.social-links/unit.icons.js.map +0 -1
  370. package/dist/lab/input.social-links/units.js +0 -2
  371. package/dist/lab/input.social-links/units.js.map +0 -1
  372. package/dist/mfe-shared/navigation.js +0 -2
  373. package/dist/mfe-shared/navigation.js.map +0 -1
  374. package/dist/redux/create.hoc-lazy.js +0 -2
  375. package/dist/redux/create.hoc-lazy.js.map +0 -1
  376. package/dist/redux/dino.js +0 -2
  377. package/dist/redux/dino.js.map +0 -1
  378. package/dist/redux/types.js.map +0 -1
  379. package/dist/redux/ui.error-page.js +0 -2
  380. package/dist/redux/ui.error-page.js.map +0 -1
  381. package/dist/table/context.js.map +0 -1
  382. package/dist/table/create.action-row.js +0 -2
  383. package/dist/table/create.action-row.js.map +0 -1
  384. package/dist/table/create.table.js +0 -2
  385. package/dist/table/create.table.js.map +0 -1
  386. package/dist/table/custom.filter-operators.js.map +0 -1
  387. package/dist/table/dino.js +0 -2
  388. package/dist/table/dino.js.map +0 -1
  389. package/dist/table/helpers.js +0 -2
  390. package/dist/table/helpers.js.map +0 -1
  391. package/dist/table/model-filter.js.map +0 -1
  392. package/dist/table/toolbar-pannel.js +0 -2
  393. package/dist/table/toolbar-pannel.js.map +0 -1
  394. package/dist/table/ui.buttons.js.map +0 -1
  395. package/dist/table/ui.units.js +0 -2
  396. package/dist/table/ui.units.js.map +0 -1
  397. package/dist/table-grid/create.table-grid.js +0 -2
  398. package/dist/table-grid/create.table-grid.js.map +0 -1
  399. package/dist/table-grid/dino.js +0 -2
  400. package/dist/table-grid/dino.js.map +0 -1
  401. package/dist/table-grid/filter-bar/base.js +0 -2
  402. package/dist/table-grid/filter-bar/base.js.map +0 -1
  403. package/dist/table-grid/filter-bar/create.filter-bar.js +0 -2
  404. package/dist/table-grid/filter-bar/create.filter-bar.js.map +0 -1
  405. package/dist/table-grid/filter-bar/create.filter-menu.js +0 -2
  406. package/dist/table-grid/filter-bar/create.filter-menu.js.map +0 -1
  407. package/dist/table-grid/filter-bar/create.filter-panel.js +0 -2
  408. package/dist/table-grid/filter-bar/create.filter-panel.js.map +0 -1
  409. package/dist/table-grid/filter-bar/create.filtered.js +0 -2
  410. package/dist/table-grid/filter-bar/create.filtered.js.map +0 -1
  411. package/dist/table-grid/filter-bar/types.js.map +0 -1
  412. package/dist/table-grid/filter-bar/ui.units.js.map +0 -1
  413. package/dist/table-grid/helpers.js.map +0 -1
  414. package/dist/table-grid/item-actions.js +0 -2
  415. package/dist/table-grid/item-actions.js.map +0 -1
  416. package/dist/table-grid/toolbar-pannel.js +0 -2
  417. package/dist/table-grid/toolbar-pannel.js.map +0 -1
  418. package/dist/table-grid/url-query-param.js +0 -2
  419. package/dist/table-grid/url-query-param.js.map +0 -1
  420. package/dist/utils/dayjs-config.js.map +0 -1
  421. package/dist/utils/helpers.js +0 -2
  422. package/dist/utils/helpers.js.map +0 -1
  423. package/dist/utils/json-object.js +0 -2
  424. package/dist/utils/json-object.js.map +0 -1
  425. package/dist/utils/query-param.js +0 -2
  426. package/dist/utils/query-param.js.map +0 -1
  427. /package/dist/{api-context → src/api-context}/ui.units.js +0 -0
  428. /package/dist/{components → src/components}/text-editor.preview.js +0 -0
  429. /package/dist/{data-view → src/data-view}/types.js +0 -0
  430. /package/dist/{data-view → src/data-view}/view-mode.types.js +0 -0
  431. /package/dist/{form → src/form}/create.form-grid-layout.units.js +0 -0
  432. /package/dist/{http-service → src/http-service}/base/gateway.js +0 -0
  433. /package/dist/{http-service → src/http-service}/graphql/key-converter.js +0 -0
  434. /package/dist/{http-service → src/http-service}/graphql/types.js +0 -0
  435. /package/dist/{lab → src/lab}/input.social-links/configs.js +0 -0
  436. /package/dist/{lab → src/lab}/input.social-links/types.js +0 -0
  437. /package/dist/{redux → src/redux}/types.js +0 -0
  438. /package/dist/{table → src/table}/context.js +0 -0
  439. /package/dist/{table → src/table}/custom.filter-operators.js +0 -0
  440. /package/dist/{table → src/table}/model-filter.js +0 -0
  441. /package/dist/{table → src/table}/ui.buttons.js +0 -0
  442. /package/dist/{table-grid → src/table-grid}/filter-bar/types.js +0 -0
  443. /package/dist/{table-grid → src/table-grid}/filter-bar/ui.units.js +0 -0
  444. /package/dist/{table-grid → src/table-grid}/helpers.js +0 -0
  445. /package/dist/{utils → src/utils}/dayjs-config.js +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create.search-match.js","sources":["../../../src/data-view/create.search-match.tsx"],"sourcesContent":["import React, { Component, ComponentType } from 'react'\r\nimport { MenuList, MenuItem, Typography, styled } from '@mui/material'\r\nimport { IFilterConfigs } from './types'\r\nimport { FilterNotes } from './ui.units'\r\nimport { createFilterStore } from './filter-store'\r\nimport { filterMenuClasses, getFieldsMatches } from './helpers'\r\nimport { IDataViewContext, mapDataViewContext } from './context'\r\n\r\nexport interface ISearchMatchProps {}\r\n\r\nfunction createSearchMatch<T>(): ComponentType<ISearchMatchProps> {\r\n class SearchMatch extends Component<ISearchMatchProps> {\r\n render = () => {\r\n return mapDataViewContext<T>((context) => {\r\n const { keyword } = context\r\n const { fields, quickSearch } = context.filterBarConfigs\r\n const fieldMatches = getFieldsMatches<T>(fields, keyword)\r\n const keys = Object.keys(fieldMatches).filter((x) => !!x) as (keyof IFilterConfigs<T>)[]\r\n const quickSearchLabel = quickSearch?.label ?? 'Quick search'\r\n\r\n return (\r\n <MenuListCustom className={filterMenuClasses.list}>\r\n {keys.map((key, i) => {\r\n const item = fieldMatches[key]\r\n const label = item?.label ?? key.toString()\r\n const notes = item?.quickSearchMatch?.notes\r\n return (\r\n <MenuItem key={key.toString() + i} className={filterMenuClasses.item} onClick={() => this.handleClick(context, key)}>\r\n <Typography noWrap variant='body2' component='span' sx={{ flex: 1 }}>\r\n {label} \"{keyword}\"\r\n </Typography>\r\n {notes && <FilterNotes title={`The ${label} includes`} disabledSize {...notes} />}\r\n </MenuItem>\r\n )\r\n })}\r\n {quickSearch && (\r\n <MenuItem className={filterMenuClasses.item} onClick={() => this.handleQuickSearchClick(context)}>\r\n <Typography noWrap variant='body2' component='span' sx={{ flex: 1 }}>\r\n {quickSearchLabel ?? 'Quick search'} &quot;{keyword}&quot;\r\n </Typography>\r\n {quickSearch.notes && (\r\n <FilterNotes title={`The ${quickSearchLabel.toLocaleLowerCase()} includes`} disabledSize {...quickSearch.notes} />\r\n )}\r\n </MenuItem>\r\n )}\r\n </MenuListCustom>\r\n )\r\n })\r\n }\r\n\r\n handleClick = (context: IDataViewContext<T>, field: keyof T) => {\r\n const store = createFilterStore(context.filterState)\r\n store.addFilterItem(field, { value: context.keyword }, { reason: 'quickSearch', area: 'input' })\r\n context.onFilterStateChange?.(store.build())\r\n }\r\n\r\n handleQuickSearchClick = (context: IDataViewContext<T>) => {\r\n const store = createFilterStore(context.filterState)\r\n store.addQuickSearch(context.keyword, { reason: 'quickSearch', area: 'input' })\r\n context.onFilterStateChange?.(store.build())\r\n }\r\n }\r\n return SearchMatch\r\n}\r\nexport default createSearchMatch\r\n\r\nconst MenuListCustom = styled(MenuList)({\r\n padding: 0,\r\n [`.${filterMenuClasses.item}`]: {\r\n height: 'var(--filter-item-height, 40px)',\r\n padding: '8px 16px',\r\n '&:not(:last-child)': {\r\n borderBottom: '1px solid var(--color-divider, rgba(145 160 170 / 10%))'\r\n }\r\n }\r\n})\r\n"],"names":["createSearchMatch","SearchMatch","_this","_classCallCheck","_len","arguments","length","args","Array","_key","_callSuper","this","concat","_defineProperty","mapDataViewContext","context","_quickSearch$label","keyword","_context$filterBarCon","filterBarConfigs","fields","quickSearch","fieldMatches","getFieldsMatches","keys","Object","filter","x","quickSearchLabel","label","_jsxs","MenuListCustom","className","filterMenuClasses","list","map","key","i","_item$label","_item$quickSearchMatc","item","toString","notes","quickSearchMatch","MenuItem","onClick","handleClick","children","Typography","noWrap","variant","component","sx","flex","_jsx","FilterNotes","_objectSpread","title","disabledSize","handleQuickSearchClick","toLocaleLowerCase","field","_context$onFilterStat","store","createFilterStore","filterState","addFilterItem","value","reason","area","onFilterStateChange","call","build","_context$onFilterStat2","addQuickSearch","_inherits","Component","_createClass","styled","MenuList","padding","height","borderBottom"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import{defineProperty as t,inherits as e,createClass as r,classCallCheck as a,callSuper as o}from"../../_virtual/_rollupPluginBabelHelpers.js";import{jsxs as n,jsx as i}from"react/jsx-runtime";import{Component as l}from"react";import{styled as c,Box as d,List as s,Typography as u,ListItem as m,ListItemButton as p,ListItemText as f,IconButton as g}from"@mui/material";import{createFilterStore as h}from"./filter-store.js";import{ClearAllButton as C,mapSortConfigs as x}from"./ui.units.js";import{mapDataViewContext as v,defaultDataViewContext as b}from"./context.js";var S="SortMenu-root",k="SortMenu-header",w="SortMenu-list",y="SortMenu-item",V="SortMenu-activeItem",B="SortMenu-itemText",M="SortMenu-directionButton",N="SortMenu-clearButton";function j(){return function(){function c(e){var r;return a(this,c),r=o(this,c,[e]),t(r,"dataViewContext",b),t(r,"renderSortList",(function(){var t=r.dataViewContext.filterBarConfigs.fields||{},e=Object.keys(t).filter((function(e){var r=t[e];return!1!==(null==r?void 0:r.sortable)})),a=r.dataViewContext.filterState.sort;return 0===e.length?i(d,{sx:{p:2,textAlign:"center"},children:i(u,{variant:"body2",color:"text.secondary",children:"No sortable fields available"})}):i(P,{className:w,disablePadding:!0,children:e.map((function(e){var o=t[e],l=(null==a?void 0:a.field)===e,c=l?a.direction:void 0,d=x[c||"asc"];return i(m,{className:"".concat(y," ").concat(l?V:""),disablePadding:!0,children:n(p,{onClick:function(){return r.handleFieldClick(e,c)},className:l?"active":"",children:[i(f,{primary:(null==o?void 0:o.label)||e.toString(),className:B,primaryTypographyProps:{className:B,sx:{fontWeight:l?600:400}}}),l&&i(g,{size:"small",className:M,onClick:function(t){t.stopPropagation(),r.handleDirectionToggle(e,c)},title:"Sort ".concat(d.title.toLocaleLowerCase()),children:d.icon})]})},e.toString())}))})})),t(r,"handleFieldClick",(function(t,e){var a={field:t,direction:e&&"asc"===e?"desc":"asc"},o=h(r.dataViewContext.filterState).changeSort(a,{area:"sortButton"});r.dataViewContext.onFilterStateChange(o.build())})),t(r,"handleDirectionToggle",(function(t,e){if(e){var a={field:t,direction:"asc"===e?"desc":"asc"},o=h(r.dataViewContext.filterState).changeSort(a,{area:"sortButton"});r.dataViewContext.onFilterStateChange(o.build())}})),t(r,"handleClearSort",(function(){var t=h(r.dataViewContext.filterState).removeSort({area:"sortButton"});r.dataViewContext.onFilterStateChange(t.build())})),r.dataViewContext=b,r}return e(c,l),r(c,[{key:"render",value:function(){var t=this;return v((function(e){return t.dataViewContext=e,n(L,{className:S,children:[n(d,{className:k,children:[i(u,{variant:"subtitle2",sx:{fontWeight:600},children:"Sort By"}),t.dataViewContext.filterState.sort&&i(C,{className:N,onClick:function(){return t.handleClearSort()},title:"Clear sort",children:"Clear"})]}),t.renderSortList()]})}))}}])}()}var L=c(d)((function(e){var r=e.theme;return t(t(t(t(t({minWidth:"240px",maxWidth:"360px",backgroundColor:r.palette.background.paper,borderRadius:"4px",overflow:"hidden",border:"1px solid ".concat(r.palette.divider)},".".concat(k),{display:"flex",alignItems:"center",background:"dark"===r.palette.mode?r.palette.grey[800]:r.palette.grey[900],padding:"8px",gap:"8px",".MuiTypography-root":{color:r.palette.common.white,flex:1}}),".".concat(w),{maxHeight:"300px",overflowY:"auto"}),".".concat(y),{"&:not(:last-child)":{borderBottom:"1px solid ".concat(r.palette.divider)}}),".".concat(M),{marginLeft:"auto",color:r.palette.primary.main}),".".concat(N),{color:r.palette.error.main})})),P=c(s)((function(t){var e=t.theme;return{".MuiListItemButton-root":{backgroundColor:"transparent","&:hover":{backgroundColor:"dark"===e.palette.mode?"rgba(255, 255, 255, 0.08)":"rgba(0, 0, 0, 0.04)"},"&.active":{backgroundColor:"dark"===e.palette.mode?"rgba(144, 202, 249, 0.08)":"rgba(25, 118, 210, 0.08)","&:hover":{backgroundColor:"dark"===e.palette.mode?"rgba(144, 202, 249, 0.12)":"rgba(25, 118, 210, 0.12)"}}}}}));export{j as default};
2
+ //# sourceMappingURL=create.sort-menu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create.sort-menu.js","sources":["../../../src/data-view/create.sort-menu.tsx"],"sourcesContent":["import React, { Component, ComponentType } from 'react'\r\nimport { Box, List, ListItem, ListItemButton, ListItemText, Typography, IconButton, styled, colors } from '@mui/material'\r\nimport { ISort, IFilterConfigs } from './types'\r\nimport { createFilterStore } from './filter-store'\r\nimport { ClearAllButton, mapSortConfigs } from './ui.units'\r\nimport { defaultDataViewContext, IDataViewContext, mapDataViewContext } from './context'\r\n\r\nconst sortMenuClasses = {\r\n root: 'SortMenu-root',\r\n header: 'SortMenu-header',\r\n list: 'SortMenu-list',\r\n item: 'SortMenu-item',\r\n activeItem: 'SortMenu-activeItem',\r\n itemText: 'SortMenu-itemText',\r\n directionButton: 'SortMenu-directionButton',\r\n clearButton: 'SortMenu-clearButton'\r\n}\r\n\r\nexport interface ISortMenuProps {}\r\n\r\nfunction createSortMenu<T>(): ComponentType<any> {\r\n class SortMenu extends Component {\r\n dataViewContext: IDataViewContext<T> = defaultDataViewContext\r\n constructor(props: ISortMenuProps) {\r\n super(props)\r\n this.dataViewContext = defaultDataViewContext\r\n }\r\n\r\n render() {\r\n return mapDataViewContext((context) => {\r\n this.dataViewContext = context\r\n return (\r\n <Wrapper className={sortMenuClasses.root}>\r\n <Box className={sortMenuClasses.header}>\r\n <Typography variant='subtitle2' sx={{ fontWeight: 600 }}>\r\n Sort By\r\n </Typography>\r\n {this.dataViewContext.filterState.sort && (\r\n <ClearAllButton className={sortMenuClasses.clearButton} onClick={() => this.handleClearSort()} title='Clear sort'>\r\n Clear\r\n </ClearAllButton>\r\n )}\r\n </Box>\r\n {this.renderSortList()}\r\n </Wrapper>\r\n )\r\n })\r\n }\r\n\r\n renderSortList = () => {\r\n const fields: IFilterConfigs<T> = this.dataViewContext.filterBarConfigs.fields || {}\r\n const fieldKeys = Object.keys(fields) as Array<keyof T>\r\n\r\n // Filter only sortable fields (default is true if not specified)\r\n const sortableFields = fieldKeys.filter((fieldKey) => {\r\n const fieldConfig = fields[fieldKey]\r\n return fieldConfig?.sortable !== false // true by default\r\n })\r\n\r\n const currentSort = this.dataViewContext.filterState.sort\r\n\r\n if (sortableFields.length === 0) {\r\n return (\r\n <Box sx={{ p: 2, textAlign: 'center' }}>\r\n <Typography variant='body2' color='text.secondary'>\r\n No sortable fields available\r\n </Typography>\r\n </Box>\r\n )\r\n }\r\n\r\n return (\r\n <ListStyled className={sortMenuClasses.list} disablePadding>\r\n {sortableFields.map((fieldKey) => {\r\n const fieldConfig = fields[fieldKey]\r\n const isActive = currentSort?.field === fieldKey\r\n const currentDirection = isActive ? currentSort.direction : undefined\r\n const sortConfig = mapSortConfigs[currentDirection || 'asc']\r\n\r\n return (\r\n <ListItem key={fieldKey.toString()} className={`${sortMenuClasses.item} ${isActive ? sortMenuClasses.activeItem : ''}`} disablePadding>\r\n <ListItemButton\r\n onClick={() => this.handleFieldClick(fieldKey, currentDirection)}\r\n className={isActive ? 'active' : ''}\r\n // sx={{\r\n // backgroundColor: isActive ? 'rgba(25, 118, 210, 0.08)' : 'transparent',\r\n // '&:hover': {\r\n // backgroundColor: isActive ? 'rgba(25, 118, 210, 0.12)' : 'rgba(0, 0, 0, 0.04)'\r\n // }\r\n // }}\r\n >\r\n <ListItemText\r\n primary={fieldConfig?.label || fieldKey.toString()}\r\n className={sortMenuClasses.itemText}\r\n primaryTypographyProps={{ className: sortMenuClasses.itemText, sx: { fontWeight: isActive ? 600 : 400 } }}\r\n />\r\n {isActive && (\r\n <IconButton\r\n size='small'\r\n className={sortMenuClasses.directionButton}\r\n onClick={(e) => {\r\n e.stopPropagation()\r\n this.handleDirectionToggle(fieldKey, currentDirection)\r\n }}\r\n title={`Sort ${sortConfig.title.toLocaleLowerCase()}`}\r\n >\r\n {sortConfig.icon}\r\n </IconButton>\r\n )}\r\n </ListItemButton>\r\n </ListItem>\r\n )\r\n })}\r\n </ListStyled>\r\n )\r\n }\r\n\r\n handleFieldClick = (field: keyof T, currentDirection?: 'asc' | 'desc') => {\r\n const newDirection: 'asc' | 'desc' = currentDirection ? (currentDirection === 'asc' ? 'desc' : 'asc') : 'asc'\r\n const newSort: ISort<T> = { field, direction: newDirection }\r\n\r\n const store = createFilterStore(this.dataViewContext.filterState).changeSort(newSort, { area: 'sortButton' })\r\n\r\n this.dataViewContext.onFilterStateChange(store.build())\r\n }\r\n\r\n handleDirectionToggle = (field: keyof T, currentDirection?: 'asc' | 'desc') => {\r\n if (!currentDirection) return\r\n\r\n const newDirection: 'asc' | 'desc' = currentDirection === 'asc' ? 'desc' : 'asc'\r\n const newSort: ISort<T> = { field, direction: newDirection }\r\n\r\n const store = createFilterStore(this.dataViewContext.filterState).changeSort(newSort, { area: 'sortButton' })\r\n\r\n this.dataViewContext.onFilterStateChange(store.build())\r\n }\r\n\r\n handleClearSort = () => {\r\n const store = createFilterStore(this.dataViewContext.filterState).removeSort({ area: 'sortButton' })\r\n\r\n this.dataViewContext.onFilterStateChange(store.build())\r\n }\r\n }\r\n\r\n return SortMenu\r\n}\r\n\r\nexport default createSortMenu\r\n\r\nconst Wrapper = styled(Box)(({ theme }) => ({\r\n minWidth: '240px',\r\n maxWidth: '360px',\r\n backgroundColor: theme.palette.background.paper,\r\n borderRadius: '4px',\r\n overflow: 'hidden',\r\n border: `1px solid ${theme.palette.divider}`,\r\n\r\n [`.${sortMenuClasses.header}`]: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n background: theme.palette.mode === 'dark' ? theme.palette.grey[800] : theme.palette.grey[900],\r\n padding: '8px',\r\n gap: '8px',\r\n '.MuiTypography-root': {\r\n color: theme.palette.common.white,\r\n flex: 1\r\n }\r\n },\r\n\r\n [`.${sortMenuClasses.list}`]: {\r\n maxHeight: '300px',\r\n overflowY: 'auto'\r\n },\r\n\r\n [`.${sortMenuClasses.item}`]: {\r\n '&:not(:last-child)': {\r\n borderBottom: `1px solid ${theme.palette.divider}`\r\n }\r\n },\r\n\r\n [`.${sortMenuClasses.directionButton}`]: {\r\n marginLeft: 'auto',\r\n color: theme.palette.primary.main\r\n },\r\n\r\n [`.${sortMenuClasses.clearButton}`]: {\r\n color: theme.palette.error.main\r\n }\r\n}))\r\n\r\nconst ListStyled = styled(List)(({ theme }) => ({\r\n '.MuiListItemButton-root': {\r\n backgroundColor: 'transparent',\r\n '&:hover': {\r\n backgroundColor: theme.palette.mode === 'dark' ? 'rgba(255, 255, 255, 0.08)' : 'rgba(0, 0, 0, 0.04)'\r\n },\r\n\r\n '&.active': {\r\n backgroundColor: theme.palette.mode === 'dark' ? 'rgba(144, 202, 249, 0.08)' : 'rgba(25, 118, 210, 0.08)',\r\n '&:hover': {\r\n backgroundColor: theme.palette.mode === 'dark' ? 'rgba(144, 202, 249, 0.12)' : 'rgba(25, 118, 210, 0.12)'\r\n }\r\n }\r\n }\r\n}))\r\n"],"names":["sortMenuClasses","createSortMenu","SortMenu","props","_this","_classCallCheck","_callSuper","_defineProperty","defaultDataViewContext","fields","dataViewContext","filterBarConfigs","sortableFields","Object","keys","filter","fieldKey","fieldConfig","sortable","currentSort","filterState","sort","length","_jsx","Box","sx","p","textAlign","children","Typography","variant","color","ListStyled","className","disablePadding","map","isActive","field","currentDirection","direction","undefined","sortConfig","mapSortConfigs","ListItem","concat","_jsxs","ListItemButton","onClick","handleFieldClick","ListItemText","primary","label","toString","primaryTypographyProps","fontWeight","IconButton","size","e","stopPropagation","handleDirectionToggle","title","toLocaleLowerCase","icon","newSort","store","createFilterStore","changeSort","area","onFilterStateChange","build","removeSort","_inherits","Component","_createClass","key","value","_this2","this","mapDataViewContext","context","Wrapper","ClearAllButton","handleClearSort","renderSortList","styled","_ref","theme","minWidth","maxWidth","backgroundColor","palette","background","paper","borderRadius","overflow","border","divider","display","alignItems","mode","grey","padding","gap","common","white","flex","maxHeight","overflowY","borderBottom","marginLeft","main","error","List","_ref3"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import{slicedToArray as o,objectSpread2 as i}from"../../_virtual/_rollupPluginBabelHelpers.js";import{jsxs as t,jsx as n,Fragment as e}from"react/jsx-runtime";import l,{useState as r,useCallback as a,useMemo as d,useEffect as s}from"react";import{styled as u,Typography as v}from"@mui/material";import{motion as c,AnimatePresence as m}from"framer-motion";import{createViewModeModule as f,createViewModeList as p}from"./view-mode.content.js";import{EViewMode as g}from"./view-mode.types.js";import{LoadingError as y,LoadingWaiting as h,LoadingNoData as w,LoadingOverlay as b}from"./view-mode.units.js";var k={hidden:{opacity:0,y:8,scale:.98},visible:{opacity:1,y:0,scale:1},exit:{opacity:0,y:-8,scale:.98}},j={duration:.25,ease:[.25,.1,.25,1]};function x(u){var x=f(),M=p(),S=function(l){var f=r(l.viewMode||g.Module),p=o(f,2),S=p[0],C=p[1],E=a((function(){var o,i,t,n,e,r,a,d,s,v,c,m,f,p=Object.assign({},null==u||null===(o=u.list)||void 0===o?void 0:o.columns,null===(i=l.slots)||void 0===i||null===(i=i.list)||void 0===i?void 0:i.columns),g=Object.assign({},null==u?void 0:u.list,null===(t=l.slots)||void 0===t?void 0:t.list,{columns:p});return{NoData:null!==(n=null!==(e=null===(r=l.slots)||void 0===r?void 0:r.NoData)&&void 0!==e?e:null==u?void 0:u.NoData)&&void 0!==n?n:w,Skeleton:null!==(a=null!==(d=null===(s=l.slots)||void 0===s?void 0:s.Skeleton)&&void 0!==d?d:null==u?void 0:u.Skeleton)&&void 0!==a?a:h,ErrorData:null!==(v=null!==(c=null===(m=l.slots)||void 0===m?void 0:m.ErrorData)&&void 0!==c?c:null==u?void 0:u.ErrorData)&&void 0!==v?v:y,listConfigs:g,moduleConfigs:Object.assign({},null==u?void 0:u.module,null===(f=l.slots)||void 0===f?void 0:f.module)}}),[l.slots]),N=a((function(){var o;return Object.assign({},null==u?void 0:u.wrapProps,null===(o=l.slots)||void 0===o?void 0:o.wrapProps)}),[l.slots]),O=a((function(o){var i=E();switch(o){case g.List:return n(M,{value:l.data,configs:i.listConfigs});case g.Module:return n(x,{data:l.data,configs:i.moduleConfigs});default:return t(v,{variant:"subtitle1",children:["Unsupported view mode: ",o]})}}),[l.data,E]),P=a((function(o){var i=E(),r=i.NoData,a=i.ErrorData,d=i.Skeleton;return l.error?{key:"error",content:n(a,{error:l.error})}:l.loading&&0===l.data.length&&d?{key:"skeleton",content:n(d,{mode:o})}:0!==l.data.length||l.loading?l.data.length>0?{key:"content-".concat(o,"-").concat(l.data.length),content:t(e,{children:[l.loading&&n(b,{}),n(m,{mode:"wait",children:n(c.div,{variants:k,initial:"hidden",animate:"visible",exit:"exit",transition:j,children:O(o)},o)})]})}:{key:"loading",content:n(b,{})}:{key:"no-data",content:n(r,{mode:o})}}),[l.error,l.loading,l.data,E,O]),_=a((function(o){var i=P(o),t=i.key,e=i.content;return n(m,{mode:"wait",children:n(c.div,{variants:k,initial:"hidden",animate:"visible",exit:"exit",transition:j,layout:!0,children:e},t)})}),[P]),z=d((function(){return N()}),[N]);return s((function(){l.viewMode&&C(l.viewMode)}),[l.viewMode]),n(D,i(i({layout:"size",transition:{layout:{duration:.3,ease:[.4,0,.2,1]},opacity:{duration:.2}}},z),{},{children:_(S)}))};return l.memo(S)}var D=u(c.div,{shouldForwardProp:function(o){return"color"!==o&&"bgcolor"!==o&&"sx"!==o}})({position:"relative",display:"flex",flexDirection:"column"});export{x as createViewMode};
2
+ //# sourceMappingURL=create.view-mode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create.view-mode.js","sources":["../../../src/data-view/create.view-mode.tsx"],"sourcesContent":["import React, { ComponentType, useState, useEffect, useMemo, useCallback } from 'react'\r\nimport { styled, Typography } from '@mui/material'\r\nimport { motion, AnimatePresence, Variants } from 'framer-motion'\r\nimport { createViewModeList, createViewModeModule, IViewModeListProps, IViewModeModuleProps } from './view-mode.content'\r\nimport { EViewMode, IViewModeConfigs, IViewModeElementProps, IViewModeValidModel } from './view-mode.types'\r\nimport { LoadingError, LoadingNoData, LoadingOverlay, LoadingWaiting } from './view-mode.units'\r\n\r\ninterface IViewModeSlots<T extends IViewModeValidModel> extends IViewModeConfigs<T> {}\r\n\r\n/**\r\n * Props for ViewMode component\r\n * @template T - Type extending IViewModeValidModel\r\n */\r\ninterface IViewModeProps<T extends IViewModeValidModel> {\r\n data: T[]\r\n viewMode?: EViewMode\r\n ready?: boolean\r\n loading?: boolean\r\n error?: string\r\n slots?: IViewModeSlots<T>\r\n}\r\n\r\n// Animation variants for smooth transitions between states\r\nconst animationVariants: Variants = {\r\n hidden: { opacity: 0, y: 8, scale: 0.98 },\r\n visible: { opacity: 1, y: 0, scale: 1 },\r\n exit: { opacity: 0, y: -8, scale: 0.98 }\r\n}\r\n\r\n// Optimized animation timing for better UX\r\nconst animationTransition = {\r\n duration: 0.25,\r\n ease: [0.25, 0.1, 0.25, 1] // cubic-bezier for smoother animation\r\n}\r\n\r\nexport function createViewMode<T extends IViewModeValidModel>(configs?: IViewModeConfigs<T>): ComponentType<IViewModeProps<T>> {\r\n // Pre-memoized components for better performance\r\n const MemoizedContentModeModule = createViewModeModule<T>()\r\n const MemoizedContentModeList = createViewModeList<T>()\r\n\r\n const ViewMode: React.FC<IViewModeProps<T>> = (props) => {\r\n const [currentMode, setCurrentMode] = useState<EViewMode>(props.viewMode || EViewMode.Module)\r\n\r\n // Merge configs from props and default configs to allow customization\r\n const getInternalConfigs = useCallback(() => {\r\n const columns = Object.assign({}, configs?.list?.columns, props.slots?.list?.columns)\r\n const listConfigs = Object.assign({}, configs?.list, props.slots?.list, { columns })\r\n return {\r\n NoData: props.slots?.NoData ?? configs?.NoData ?? LoadingNoData,\r\n Skeleton: props.slots?.Skeleton ?? configs?.Skeleton ?? LoadingWaiting,\r\n ErrorData: props.slots?.ErrorData ?? configs?.ErrorData ?? LoadingError,\r\n listConfigs,\r\n moduleConfigs: Object.assign({}, configs?.module, props.slots?.module)\r\n }\r\n }, [props.slots])\r\n\r\n // Extract wrapper props separately\r\n const getWrapperProps = useCallback(() => {\r\n return Object.assign({}, configs?.wrapProps, props.slots?.wrapProps)\r\n }, [props.slots])\r\n\r\n // Render content based on current view mode (List/Module)\r\n const renderContentByMode = useCallback(\r\n (currentMode: EViewMode) => {\r\n const internalConfigs = getInternalConfigs()\r\n\r\n switch (currentMode) {\r\n case EViewMode.List:\r\n return <MemoizedContentModeList value={props.data} configs={internalConfigs.listConfigs} />\r\n case EViewMode.Module:\r\n return <MemoizedContentModeModule data={props.data} configs={internalConfigs.moduleConfigs} />\r\n default:\r\n return <Typography variant='subtitle1'>Unsupported view mode: {currentMode}</Typography>\r\n }\r\n },\r\n [props.data, getInternalConfigs]\r\n )\r\n\r\n // State management with clear priority order to prevent multiple renders\r\n const getContentState = useCallback(\r\n (currentMode: EViewMode) => {\r\n const { NoData, ErrorData, Skeleton } = getInternalConfigs()\r\n\r\n // 1. Error state - highest priority\r\n if (props.error) {\r\n return { key: 'error', content: <ErrorData error={props.error} /> }\r\n }\r\n\r\n // 2. Loading state with empty data (skeleton)\r\n if (props.loading && props.data.length === 0 && Skeleton) {\r\n return { key: 'skeleton', content: <Skeleton mode={currentMode} /> }\r\n }\r\n\r\n // 3. No data state (not loading and no data)\r\n if (props.data.length === 0 && !props.loading) {\r\n return { key: 'no-data', content: <NoData mode={currentMode} /> }\r\n }\r\n\r\n // 4. Content state with data (might be loading additional data)\r\n if (props.data.length > 0) {\r\n return {\r\n key: `content-${currentMode}-${props.data.length}`,\r\n content: (\r\n <>\r\n {props.loading && <LoadingOverlay />}\r\n <AnimatePresence mode='wait'>\r\n <motion.div\r\n key={currentMode}\r\n variants={animationVariants}\r\n initial='hidden'\r\n animate='visible'\r\n exit='exit'\r\n transition={animationTransition}\r\n >\r\n {renderContentByMode(currentMode)}\r\n </motion.div>\r\n </AnimatePresence>\r\n </>\r\n )\r\n }\r\n }\r\n\r\n // 5. Fallback - loading without skeleton\r\n return { key: 'loading', content: <LoadingOverlay /> }\r\n },\r\n [props.error, props.loading, props.data, getInternalConfigs, renderContentByMode]\r\n )\r\n\r\n // Main render method\r\n const renderContent = useCallback(\r\n (currentMode: EViewMode) => {\r\n const { key, content } = getContentState(currentMode)\r\n\r\n // Single AnimatePresence wrapper for smooth state transitions\r\n return (\r\n <AnimatePresence mode='wait'>\r\n <motion.div key={key} variants={animationVariants} initial='hidden' animate='visible' exit='exit' transition={animationTransition} layout>\r\n {content}\r\n </motion.div>\r\n </AnimatePresence>\r\n )\r\n },\r\n [getContentState]\r\n )\r\n\r\n const wrapperProps = useMemo(() => getWrapperProps(), [getWrapperProps])\r\n\r\n useEffect(() => {\r\n if (props.viewMode) {\r\n setCurrentMode(props.viewMode)\r\n }\r\n }, [props.viewMode])\r\n\r\n return (\r\n <Wrap\r\n layout='size'\r\n transition={{\r\n layout: { duration: 0.3, ease: [0.4, 0, 0.2, 1] },\r\n opacity: { duration: 0.2 }\r\n }}\r\n {...wrapperProps}\r\n >\r\n {renderContent(currentMode)}\r\n </Wrap>\r\n )\r\n }\r\n\r\n // Memoize component to prevent unnecessary re-renders\r\n return React.memo(ViewMode)\r\n}\r\n\r\nconst Wrap = styled(motion.div, {\r\n // Only forward specific props to prevent MUI system props from being passed to DOM\r\n shouldForwardProp: (prop) => prop !== 'color' && prop !== 'bgcolor' && prop !== 'sx'\r\n})({\r\n position: 'relative',\r\n // Remove overflow hidden to allow natural animations\r\n display: 'flex',\r\n flexDirection: 'column'\r\n})\r\n"],"names":["animationVariants","hidden","opacity","y","scale","visible","exit","animationTransition","duration","ease","createViewMode","configs","MemoizedContentModeModule","createViewModeModule","MemoizedContentModeList","createViewModeList","ViewMode","props","_useState","useState","viewMode","EViewMode","Module","_useState2","_slicedToArray","currentMode","setCurrentMode","getInternalConfigs","useCallback","_configs$list","_props$slots","_props$slots2","_ref","_props$slots$NoData","_props$slots3","_ref2","_props$slots$Skeleton","_props$slots4","_ref3","_props$slots$ErrorDat","_props$slots5","_props$slots6","columns","Object","assign","list","slots","listConfigs","NoData","LoadingNoData","Skeleton","LoadingWaiting","ErrorData","LoadingError","moduleConfigs","module","getWrapperProps","_props$slots7","wrapProps","renderContentByMode","internalConfigs","List","_jsx","value","data","_jsxs","Typography","variant","children","getContentState","_getInternalConfigs","error","key","content","loading","length","mode","concat","_Fragment","LoadingOverlay","AnimatePresence","motion","div","variants","initial","animate","transition","renderContent","_getContentState","layout","wrapperProps","useMemo","useEffect","Wrap","_objectSpread","React","memo","styled","shouldForwardProp","prop","position","display","flexDirection"],"mappings":"ylBAuBA,IAAMA,EAA8B,CAClCC,OAAQ,CAAEC,QAAS,EAAGC,EAAG,EAAGC,MAAO,KACnCC,QAAS,CAAEH,QAAS,EAAGC,EAAG,EAAGC,MAAO,GACpCE,KAAM,CAAEJ,QAAS,EAAGC,GAAK,EAAEC,MAAO,MAI9BG,EAAsB,CAC1BC,SAAU,IACVC,KAAM,CAAC,IAAM,GAAK,IAAM,IAGpB,SAAUC,EAA8CC,GAE5D,IAAMC,EAA4BC,IAC5BC,EAA0BC,IAE1BC,EAAwC,SAACC,GAC7C,IAAAC,EAAsCC,EAAoBF,EAAMG,UAAYC,EAAUC,QAAOC,EAAAC,EAAAN,EAAA,GAAtFO,EAAWF,EAAA,GAAEG,EAAcH,EAAA,GAG5BI,EAAqBC,GAAY,WAAK,IAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EACpCC,EAAUC,OAAOC,OAAO,CAAA,EAAIjC,SAAa,QAANkB,EAAPlB,EAASkC,YAAThB,IAAaA,OAAbA,EAAAA,EAAea,QAAoB,QAAbZ,EAAEb,EAAM6B,aAAKhB,IAAAA,GAAMA,QAANA,EAAXA,EAAae,gBAAIf,SAAjBA,EAAmBY,SACvEK,EAAcJ,OAAOC,OAAO,CAAE,EAAEjC,aAAAA,EAAAA,EAASkC,KAAiBd,QAAbA,EAAEd,EAAM6B,aAANf,IAAWA,OAAXA,EAAAA,EAAac,KAAM,CAAEH,QAAAA,IAC1E,MAAO,CACLM,OAA8ChB,QAAxCA,EAAqBC,QAArBA,EAAa,QAAbC,EAAEjB,EAAM6B,aAAK,IAAAZ,OAAA,EAAXA,EAAac,cAAMf,IAAAA,EAAAA,EAAItB,aAAO,EAAPA,EAASqC,cAAMhB,IAAAA,EAAAA,EAAIiB,EAClDC,SAAoDf,QAA5CA,EAAuBC,QAAvBA,EAAa,QAAbC,EAAEpB,EAAM6B,aAAK,IAAAT,OAAA,EAAXA,EAAaa,gBAAQd,IAAAA,EAAAA,EAAIzB,aAAO,EAAPA,EAASuC,gBAAQf,IAAAA,EAAAA,EAAIgB,EACxDC,UAAuDd,QAA9CA,EAAwBC,QAAxBA,EAAa,QAAbC,EAAEvB,EAAM6B,aAAK,IAAAN,OAAA,EAAXA,EAAaY,iBAASb,IAAAA,EAAAA,EAAI5B,aAAO,EAAPA,EAASyC,iBAASd,IAAAA,EAAAA,EAAIe,EAC3DN,YAAAA,EACAO,cAAeX,OAAOC,OAAO,CAAE,EAAEjC,aAAAA,EAAAA,EAAS4C,OAAmB,QAAbd,EAAExB,EAAM6B,aAAK,IAAAL,OAAA,EAAXA,EAAac,QAEnE,GAAG,CAACtC,EAAM6B,QAGJU,EAAkB5B,GAAY,WAAK,IAAA6B,EACvC,OAAOd,OAAOC,OAAO,GAAIjC,aAAO,EAAPA,EAAS+C,UAAsBD,QAAbA,EAAExC,EAAM6B,aAANW,IAAWA,OAAXA,EAAAA,EAAaC,UAC5D,GAAG,CAACzC,EAAM6B,QAGJa,EAAsB/B,GAC1B,SAACH,GACC,IAAMmC,EAAkBjC,IAExB,OAAQF,GACN,KAAKJ,EAAUwC,KACb,OAAOC,EAAChD,EAAwB,CAAAiD,MAAO9C,EAAM+C,KAAMrD,QAASiD,EAAgBb,cAC9E,KAAK1B,EAAUC,OACb,OAAOwC,EAAClD,EAA0B,CAAAoD,KAAM/C,EAAM+C,KAAMrD,QAASiD,EAAgBN,gBAC/E,QACE,OAAOW,EAACC,EAAW,CAAAC,QAAQ,YAAWC,SAAA,CAAA,0BAAyB3C,KAEpE,GACD,CAACR,EAAM+C,KAAMrC,IAIT0C,EAAkBzC,GACtB,SAACH,GACC,IAAA6C,EAAwC3C,IAAhCqB,EAAMsB,EAANtB,OAAQI,EAASkB,EAATlB,UAAWF,EAAQoB,EAARpB,SAG3B,OAAIjC,EAAMsD,MACD,CAAEC,IAAK,QAASC,QAASX,EAACV,EAAS,CAACmB,MAAOtD,EAAMsD,SAItDtD,EAAMyD,SAAiC,IAAtBzD,EAAM+C,KAAKW,QAAgBzB,EACvC,CAAEsB,IAAK,WAAYC,QAASX,EAACZ,GAAS0B,KAAMnD,KAI3B,IAAtBR,EAAM+C,KAAKW,QAAiB1D,EAAMyD,QAKlCzD,EAAM+C,KAAKW,OAAS,EACf,CACLH,IAAGK,WAAAA,OAAapD,EAAWoD,KAAAA,OAAI5D,EAAM+C,KAAKW,QAC1CF,QACER,EAAAa,EAAA,CAAAV,SAAA,CACGnD,EAAMyD,SAAWZ,EAACiB,EAAc,CAAA,GACjCjB,EAACkB,EAAgB,CAAAJ,KAAK,OACpBR,SAAAN,EAACmB,EAAOC,IAEN,CAAAC,SAAUnF,EACVoF,QAAQ,SACRC,QAAQ,UACR/E,KAAK,OACLgF,WAAY/E,EAAmB6D,SAE9BT,EAAoBlC,IAPhBA,SAgBV,CAAE+C,IAAK,UAAWC,QAASX,EAACiB,EAAiB,CAAA,IA5B3C,CAAEP,IAAK,UAAWC,QAASX,EAACd,GAAO4B,KAAMnD,IA6BpD,GACA,CAACR,EAAMsD,MAAOtD,EAAMyD,QAASzD,EAAM+C,KAAMrC,EAAoBgC,IAIzD4B,EAAgB3D,GACpB,SAACH,GACC,IAAA+D,EAAyBnB,EAAgB5C,GAAjC+C,EAAGgB,EAAHhB,IAAKC,EAAOe,EAAPf,QAGb,OACEX,EAACkB,GAAgBJ,KAAK,OACpBR,SAAAN,EAACmB,EAAOC,IAAc,CAAAC,SAAUnF,EAAmBoF,QAAQ,SAASC,QAAQ,UAAU/E,KAAK,OAAOgF,WAAY/E,EAAqBkF,mBAChIhB,GADcD,IAKvB,GACA,CAACH,IAGGqB,EAAeC,GAAQ,WAAA,OAAMnC,MAAmB,CAACA,IAQvD,OANAoC,GAAU,WACJ3E,EAAMG,UACRM,EAAeT,EAAMG,SAEzB,GAAG,CAACH,EAAMG,WAGR0C,EAAC+B,EAAIC,EAAAA,EAAA,CACHL,OAAO,OACPH,WAAY,CACVG,OAAQ,CAAEjF,SAAU,GAAKC,KAAM,CAAC,GAAK,EAAG,GAAK,IAC7CP,QAAS,CAAEM,SAAU,MAEnBkF,GAAY,GAAA,UAEfH,EAAc9D,KAGpB,EAGD,OAAOsE,EAAMC,KAAKhF,EACpB,CAEA,IAAM6E,EAAOI,EAAOhB,EAAOC,IAAK,CAE9BgB,kBAAmB,SAACC,GAAI,MAAc,UAATA,GAA6B,YAATA,GAA+B,OAATA,CAAa,GAFzEF,CAGV,CACDG,SAAU,WAEVC,QAAS,OACTC,cAAe"}
@@ -0,0 +1,2 @@
1
+ import{createClass as t,classCallCheck as r,defineProperty as e}from"../../_virtual/_rollupPluginBabelHelpers.js";import o from"dayjs";import"../utils/dayjs-config.js";import"../utils/query-param.js";import{createFilterStore as i}from"./filter-store.js";import{createViewMode as a}from"./create.view-mode.js";import{createViewModeButtons as s}from"./view-mode.units.js";import{syncQueryToURL as m,getQueryFromURL as n,getSeedKeyFromURL as l,syncViewModeToURL as c,getViewModeFromURL as u,convertFilterToQueryParam as f}from"./query-param-url.js";import{createConvertFilterToGraphQL as h}from"./convert-filter-to-graphql.js";import{createKeyConverter as p}from"../http-service/graphql/key-converter.js";import{createPaginationBar as v}from"./create.pagination-bar.js";import d from"./create.data-view.js";var y=new(t((function t(){var y=this;r(this,t),e(this,"createDataView",d),e(this,"createKeyConverter",p),e(this,"createConvertFilterToGraphQL",h),e(this,"createFilterStore",i),e(this,"createPaginationBar",v),e(this,"createViewMode",a),e(this,"createViewModeButtons",s),e(this,"syncQueryToURL",m),e(this,"getQueryFromURL",n),e(this,"getSeedKeyFromURL",l),e(this,"syncViewModeToURL",c),e(this,"getViewModeFromURL",u),e(this,"convertFilterToQueryParam",f),e(this,"formatterDate",(function(t,r){var e,i,a=null!==(e=null==r?void 0:r.formatString)&&void 0!==e?e:"MM/DD/YYYY HH:mm",s=null!==(i=null==r?void 0:r.showRelative)&&void 0!==i&&i;try{if(!t)return"";var m=o(t),n=m.format(a);return s?"".concat(n," (").concat(o().to(m),")"):n}catch(t){return""}})),e(this,"valueFormatterDate",(function(t){return function(r){return y.formatterDate(r.value,t)}}))})));export{y as DinoDataView,y as default};
2
+ //# sourceMappingURL=dino.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dino.js","sources":["../../../src/data-view/dino.tsx"],"sourcesContent":["import { GridValueFormatterParams } from '@mui/x-data-grid'\r\nimport { dayjsCustom } from '../utils'\r\nimport { createFilterStore } from './filter-store'\r\nimport { createViewMode } from './create.view-mode'\r\nimport { createViewModeButtons } from './view-mode.units'\r\nimport { getViewModeFromURL, syncViewModeToURL } from './query-param-url'\r\nimport { createConvertFilterToGraphQL } from './convert-filter-to-graphql'\r\nimport { createKeyConverter } from '../http-service/graphql/key-converter'\r\nimport { convertFilterToQueryParam, getQueryFromURL, getSeedKeyFromURL, syncQueryToURL } from './query-param-url'\r\nimport createPaginationBar from './create.pagination-bar'\r\nimport createDataView from './create.data-view'\r\n\r\nconst formatDateString = 'MM/DD/YYYY HH:mm'\r\n\r\nexport interface IFormatterDateOptions {\r\n formatString?: string\r\n showRelative?: boolean\r\n}\r\n\r\nclass DinoDataViewBase {\r\n createDataView = createDataView\r\n\r\n createKeyConverter = createKeyConverter\r\n\r\n createConvertFilterToGraphQL = createConvertFilterToGraphQL\r\n\r\n createFilterStore = createFilterStore\r\n\r\n createPaginationBar = createPaginationBar\r\n\r\n createViewMode = createViewMode\r\n\r\n createViewModeButtons = createViewModeButtons\r\n\r\n syncQueryToURL = syncQueryToURL\r\n\r\n getQueryFromURL = getQueryFromURL\r\n\r\n getSeedKeyFromURL = getSeedKeyFromURL\r\n\r\n syncViewModeToURL = syncViewModeToURL\r\n\r\n getViewModeFromURL = getViewModeFromURL\r\n\r\n convertFilterToQueryParam = convertFilterToQueryParam\r\n\r\n //#region Value Formatter\r\n formatterDate = (value: any, options?: IFormatterDateOptions): string => {\r\n const f = options?.formatString ?? formatDateString\r\n const showRelative = options?.showRelative ?? false\r\n try {\r\n if (!value) return ''\r\n\r\n const date = dayjsCustom(value)\r\n const formatted = date.format(f)\r\n\r\n return showRelative ? `${formatted} (${dayjsCustom().to(date)})` : formatted\r\n } catch (error) {\r\n return ''\r\n }\r\n }\r\n\r\n valueFormatterDate = (options?: IFormatterDateOptions) => {\r\n return (params: GridValueFormatterParams<any>) => this.formatterDate(params.value, options)\r\n }\r\n //#endregion\r\n}\r\nexport const DinoDataView = new DinoDataViewBase()\r\nexport default DinoDataView\r\n"],"names":["DinoDataView","_createClass","DinoDataViewBase","_this","this","_classCallCheck","_defineProperty","createDataView","createKeyConverter","createConvertFilterToGraphQL","createFilterStore","createPaginationBar","createViewMode","createViewModeButtons","syncQueryToURL","getQueryFromURL","getSeedKeyFromURL","syncViewModeToURL","getViewModeFromURL","convertFilterToQueryParam","value","options","_options$formatString","_options$showRelative","f","formatString","showRelative","date","dayjsCustom","formatted","format","concat","to","error","params","formatterDate"],"mappings":"oyBAYA,IAuDaA,EAAe,IAhDNC,GAAA,SAAAC,IAAA,IAAAC,EAAAC,KAAAC,OAAAH,GAAAI,wBACHC,GAAcD,4BAEVE,GAAkBF,sCAERG,GAA4BH,2BAEvCI,GAAiBJ,6BAEfK,GAAmBL,wBAExBM,GAAcN,+BAEPO,GAAqBP,wBAE5BQ,GAAcR,yBAEbS,GAAeT,2BAEbU,GAAiBV,2BAEjBW,GAAiBX,4BAEhBY,GAAkBZ,mCAEXa,GAE5Bb,EACgBF,KAAA,iBAAA,SAACgB,EAAYC,GAA2C,IAAAC,EAAAC,EAChEC,EAAyBF,QAAxBA,EAAGD,aAAO,EAAPA,EAASI,oBAAYH,IAAAA,EAAAA,EApCV,mBAqCfI,EAAoCH,QAAxBA,EAAGF,aAAO,EAAPA,EAASK,oBAAYH,IAAAA,GAAAA,EAC1C,IACE,IAAKH,EAAO,MAAO,GAEnB,IAAMO,EAAOC,EAAYR,GACnBS,EAAYF,EAAKG,OAAON,GAE9B,OAAOE,EAAYK,GAAAA,OAAMF,QAASE,OAAKH,IAAcI,GAAGL,QAAWE,CACpE,CAAC,MAAOI,GACP,MAAO,EACR,KACF3B,EAAAF,KAAA,sBAEoB,SAACiB,GACpB,OAAO,SAACa,GAAqC,OAAK/B,EAAKgC,cAAcD,EAAOd,MAAOC,EAAQ,IAC5F"}
@@ -0,0 +1,2 @@
1
+ import{createClass as t,objectSpread2 as e,toConsumableArray as i,defineProperty as a,objectWithoutProperties as s,toPropertyKey as r,classCallCheck as n}from"../../_virtual/_rollupPluginBabelHelpers.js";import"dayjs";import"../utils/dayjs-config.js";import{QueryParam as o}from"../utils/query-param.js";var h=function(){return t((function t(){var i=this,s=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=arguments.length>1?arguments[1]:void 0;n(this,t),a(this,"converToQueryParam",(function(t){var e=i.extractFilter();return t+o.stringify({filter:JSON.stringify(e)})}));var h=e({},s);null!=h&&h.details&&delete h.details,this._state=h,this._defaultFilter=r}),[{key:"state",get:function(){return e({},this._state)}},{key:"addFilterItem",value:function(t,s,r){var n,o,h=null!==(n=null===(o=this._state.filter)||void 0===o?void 0:o[t])&&void 0!==n?n:[];if(h.some((function(t){return t.value===s.value})))this._state=e(e({},this._state),{},{details:e(e({},r),{},{action:"add",reason:"filter",isChanged:!1})});else{var u=[].concat(i(h),[s]),l=e(e({},this._state.filter),{},a({},t,u));this._state=e(e({},this._state),{},{filter:l,details:e(e({},r),{},{action:"add",isChanged:!0})})}return this}},{key:"removeFilterField",value:function(t,i){var a=this._state.filter;if(a&&a[t]&&a[t].length>0){a[t];var n=s(a,[t].map(r)),o=Object.keys(n).length>0;this._state=e(e({},this._state),{},{filter:o?n:void 0,details:e(e({},i),{},{action:"remove",reason:"filter",isChanged:!0})})}return this}},{key:"removeFilterItem",value:function(t,i,n){var o=this._state.filter,h=e({action:"remove",reason:"filter"},n);if(!o||!o[t]||0===o[t].length)return this._state=e(e({},this._state),{},{details:e(e({},h),{},{isChanged:!1})}),this;var u=o[t],l=u.findIndex((function(t){return t.value===i}));if(-1===l)return this._state=e(e({},this._state),{},{details:e(e({},h),{},{isChanged:!1})}),this;var c=u.filter((function(t,e){return e!==l}));if(0===c.length){o[t];var d=s(o,[t].map(r)),v=Object.keys(d).length>0;this._state=e(e({},this._state),{},{filter:v?d:void 0,details:e(e({},h),{},{isChanged:!0})})}else{var f=e(e({},o),{},a({},t,c));this._state=e(e({},this._state),{},{filter:f,details:e(e({},h),{},{isChanged:!0})})}return this}},{key:"updateFilter",value:function(t,i){return this._state=e(e({},this._state),{},{filter:t,details:e(e({},i),{},{action:"change",reason:"filter",isChanged:!0})}),this}},{key:"addQuickSearch",value:function(t,a){var s,r=null!==(s=this._state.quickSearch)&&void 0!==s?s:[],n=null!=t?t:[],o=[].concat(i(Array.isArray(r)?r:[r]),i(Array.isArray(n)?n:[n])),h=Array.from(new Set(o)),u=new Set(Array.isArray(r)?r:[r]),l=h.length!==u.size||h.some((function(t){return!u.has(t)}));return l&&(this._state=e(e({},this._state),{},{quickSearch:h,details:e(e({},a),{},{action:"add",reason:"quickSearch",isChanged:l})})),this}},{key:"removeQuickSearch",value:function(t){return this._state=e(e({},this._state),{},{quickSearch:void 0,details:e(e({},t),{},{action:"remove",reason:"quickSearch",isChanged:!0})}),this}},{key:"removeQuickSearchItem",value:function(t,i){var a=this._state.quickSearch,s=e({action:"remove",reason:"quickSearch"},i);if(!a)return this._state=e(e({},this._state),{},{details:e(e({},s),{},{isChanged:!1})}),this;var r=Array.isArray(a)?a:[a];if(-1===r.indexOf(t))return this._state=e(e({},this._state),{},{details:e(e({},s),{},{isChanged:!1})}),this;var n=r.filter((function(e){return e!==t}));return 0===n.length?this._state=e(e({},this._state),{},{quickSearch:void 0,details:e(e({},s),{},{isChanged:!0})}):this._state=e(e({},this._state),{},{quickSearch:1===n.length?n[0]:n,details:e(e({},s),{},{isChanged:!0})}),this}},{key:"updateSearchInput",value:function(t){return this._state=e(e({},this._state),{},{quickSearch:t,details:{reason:"quickSearch",area:"input",action:"change",isChanged:!0}}),this}},{key:"changePagination",value:function(t){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{area:"filterButton"};return this._state=e(e({},this._state),{},{pagination:t,details:e(e({},i),{},{action:"change",reason:"pagination",isChanged:!0})}),this}},{key:"removePagination",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{area:"filterButton"};return this._state=e(e({},this._state),{},{pagination:void 0,details:e(e({},t),{},{action:"remove",reason:"pagination",isChanged:!0})}),this}},{key:"changeSort",value:function(t){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{area:"sortButton"};return this._state=e(e({},this._state),{},{sort:t,details:e(e({},i),{},{action:"change",reason:"sort"})}),this}},{key:"removeSort",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{area:"sortButton"};return this._state=e(e({},this._state),{},{sort:void 0,details:e(e({},t),{},{action:"remove",reason:"sort"})}),this}},{key:"toggleSortDirection",value:function(t){var i=this._state.sort;if(!i)return this;var a=e(e({},i),{},{direction:"asc"===i.direction?"desc":"asc"});return this._state=e(e({},this._state),{},{sort:a,details:e(e({},t),{},{action:"change",reason:"sort"})}),this}},{key:"updateState",value:function(t){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{area:"filterButton"};return this._state=e(e(e({},this._state),t),{},{details:e(e({},i),{},{action:"change"})}),this}},{key:"reset",value:function(){return this._state=e(e({},this._defaultFilter),{},{details:{action:"reset",isChanged:!0}}),this}},{key:"resetFilter",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{area:"filterButton"};return this._state=e(e({},this._state),{},{filter:void 0,details:e({action:"reset",reason:"filter"},t)}),this}},{key:"resetQuickSearch",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{area:"input"};return this._state=e(e({},this._state),{},{quickSearch:void 0,details:e({action:"reset",reason:"quickSearch"},t)}),this}},{key:"resetPagination",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{reason:"pagination"};return this._state=e(e({},this._state),{},{pagination:void 0,details:e({action:"reset",reason:"pagination"},t)}),this}},{key:"resetSort",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{reason:"sort"};return this._state=e(e({},this._state),{},{sort:void 0,details:e({action:"reset",reason:"sort"},t)}),this}},{key:"isPaginationEqualToDefault",value:function(){var t,e=this._state.pagination,i=null===(t=this._defaultFilter)||void 0===t?void 0:t.pagination;return!e&&!i||!(!e||!i)&&(e.page===i.page&&e.pageSize===i.pageSize)}},{key:"isSortEqualToDefault",value:function(){var t,e=this._state.sort,i=null===(t=this._defaultFilter)||void 0===t?void 0:t.sort;return!e&&!i||!(!e||!i)&&(e.field===i.field&&e.direction===i.direction)}},{key:"extractFilter",value:function(){var t={};return this._state.filter&&(t.filter=this._state.filter),this._state.quickSearch&&(t.quickSearch=this._state.quickSearch),this._state.pagination&&!this.isPaginationEqualToDefault()&&(t.pagination=this._state.pagination),this._state.sort&&!this.isSortEqualToDefault()&&(t.sort=this._state.sort),t}},{key:"countFilterItems",value:function(){var t=this._state.filter;return t?Object.values(t).reduce((function(t,e){return t+(Array.isArray(e)?e.length:0)}),0):0}},{key:"hasFilter",value:function(){return!!this._state.filter&&Object.keys(this._state.filter).length>0}},{key:"hasQuickSearch",value:function(){return!!this._state.quickSearch}},{key:"hasPagination",value:function(){return!this.isPaginationEqualToDefault()&&!!this._state.pagination}},{key:"hasSort",value:function(){return!this.isSortEqualToDefault()&&!!this._state.sort}},{key:"isEmpty",value:function(){return!(this.hasFilter()||this.hasQuickSearch()||this.hasPagination()||this.hasSort())}},{key:"build",value:function(){return e({},this._state)}}])}();function u(t,e){return new h(t,e)}export{h as FilterStore,u as createFilterStore,h as default};
2
+ //# sourceMappingURL=filter-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filter-store.js","sources":["../../../src/data-view/filter-store.ts"],"sourcesContent":["import { QueryParam } from '../utils'\r\nimport { IFilterState, IFilterMap, IPagination, ISort, IFilterChangeDetails, IFilterItem, SingleOrArray } from './types'\r\n\r\nexport class FilterStore<T> {\r\n private _state: IFilterState<T>\r\n private _defaultFilter: IFilterState<T> | undefined\r\n\r\n constructor(initialState: IFilterState<T> = {}, defaultFilter?: IFilterState<T>) {\r\n const obj = { ...initialState }\r\n if (obj?.details) delete obj.details // Ensure details are not included in the initial state\r\n this._state = obj\r\n this._defaultFilter = defaultFilter\r\n }\r\n\r\n // Static factory method\r\n // static initialize<T>(filterState: IFilterState<T>, defaultFilter?: IFilterState<T>): FilterStore<T> {\r\n // if (filterState?.details) delete filterState.details // Ensure details are not included in the initial state\r\n // return new FilterStore(filterState, defaultFilter)\r\n // }\r\n\r\n // Getter for current state\r\n get state(): IFilterState<T> {\r\n return { ...this._state }\r\n }\r\n\r\n // Filter operations\r\n addFilterItem(field: keyof T, filterItem: IFilterItem, details?: IFilterChangeDetails): FilterStore<T> {\r\n const existingFieldItems = this._state.filter?.[field] ?? []\r\n\r\n // Check if item already exists to avoid duplicates\r\n const itemExists = existingFieldItems.some((item) => item.value === filterItem.value)\r\n\r\n if (!itemExists) {\r\n const newFieldItems = [...existingFieldItems, filterItem]\r\n const updatedFilter = { ...this._state.filter, [field]: newFieldItems } as IFilterMap<T>\r\n\r\n this._state = { ...this._state, filter: updatedFilter, details: { ...details, action: 'add', isChanged: true } }\r\n } else {\r\n // If item already exists, mark as not changed\r\n this._state = { ...this._state, details: { ...details, action: 'add', reason: 'filter', isChanged: false } }\r\n }\r\n\r\n return this\r\n }\r\n\r\n removeFilterField(field: keyof T, details?: IFilterChangeDetails): FilterStore<T> {\r\n const existingFilter = this._state.filter\r\n\r\n // Check if field exists and has items\r\n const fieldExists = existingFilter && existingFilter[field] && existingFilter[field]!.length > 0\r\n\r\n if (fieldExists) {\r\n // Create new filter without the specified field\r\n const { [field]: removedField, ...remainingFilter } = existingFilter!\r\n\r\n // Check if there are any remaining fields\r\n const hasRemainingFields = Object.keys(remainingFilter).length > 0\r\n\r\n this._state = {\r\n ...this._state,\r\n filter: hasRemainingFields ? (remainingFilter as IFilterMap<T>) : undefined,\r\n details: { ...details, action: 'remove', reason: 'filter', isChanged: true }\r\n }\r\n }\r\n\r\n return this\r\n }\r\n\r\n removeFilterItem(field: keyof T, value: string, details?: IFilterChangeDetails): FilterStore<T> {\r\n const existingFilter = this._state.filter\r\n const defaultDetails: IFilterChangeDetails = { action: 'remove', reason: 'filter', ...details }\r\n\r\n // Check if field exists and has items\r\n if (!existingFilter || !existingFilter[field] || existingFilter[field]!.length === 0) {\r\n // Field doesn't exist or is empty, mark as not changed\r\n this._state = { ...this._state, details: { ...defaultDetails, isChanged: false } }\r\n return this\r\n }\r\n\r\n const fieldItems = existingFilter[field]!\r\n\r\n // Find the item to remove\r\n const itemIndex = fieldItems.findIndex((item) => item.value === value)\r\n\r\n if (itemIndex === -1) {\r\n // Item not found, mark as not changed\r\n this._state = { ...this._state, details: { ...defaultDetails, isChanged: false } }\r\n return this\r\n }\r\n\r\n // Remove the specific item\r\n const updatedFieldItems = fieldItems.filter((_, index) => index !== itemIndex)\r\n\r\n // If no items left in the field, remove the field entirely\r\n if (updatedFieldItems.length === 0) {\r\n const { [field]: removedField, ...remainingFilter } = existingFilter\r\n const hasRemainingFields = Object.keys(remainingFilter).length > 0\r\n\r\n this._state = {\r\n ...this._state,\r\n filter: hasRemainingFields ? (remainingFilter as IFilterMap<T>) : undefined,\r\n details: { ...defaultDetails, isChanged: true }\r\n }\r\n } else {\r\n // Update the field with remaining items\r\n const updatedFilter = { ...existingFilter, [field]: updatedFieldItems } as IFilterMap<T>\r\n\r\n this._state = {\r\n ...this._state,\r\n filter: updatedFilter,\r\n details: { ...defaultDetails, isChanged: true }\r\n }\r\n }\r\n\r\n return this\r\n }\r\n\r\n updateFilter(filter?: IFilterMap<T>, details?: IFilterChangeDetails) {\r\n this._state = { ...this._state, filter, details: { ...details, action: 'change', reason: 'filter', isChanged: true } }\r\n return this\r\n }\r\n\r\n // Quick search operations\r\n addQuickSearch(value?: SingleOrArray<string>, details?: IFilterChangeDetails): FilterStore<T> {\r\n const currentValues = this._state.quickSearch ?? []\r\n const newValues = value ?? []\r\n\r\n // Merge current and new values\r\n const allValues = [...(Array.isArray(currentValues) ? currentValues : [currentValues]), ...(Array.isArray(newValues) ? newValues : [newValues])]\r\n\r\n // Remove duplicates\r\n const uniqueValues = Array.from(new Set(allValues))\r\n\r\n // Check if changed\r\n const currentSet = new Set(Array.isArray(currentValues) ? currentValues : [currentValues])\r\n const isChanged = uniqueValues.length !== currentSet.size || uniqueValues.some((val) => !currentSet.has(val))\r\n\r\n if (isChanged) {\r\n this._state = { ...this._state, quickSearch: uniqueValues, details: { ...details, action: 'add', reason: 'quickSearch', isChanged } }\r\n }\r\n\r\n return this\r\n }\r\n\r\n removeQuickSearch(details?: IFilterChangeDetails): FilterStore<T> {\r\n this._state = { ...this._state, quickSearch: undefined, details: { ...details, action: 'remove', reason: 'quickSearch', isChanged: true } }\r\n return this\r\n }\r\n\r\n removeQuickSearchItem(value: string, details?: IFilterChangeDetails): FilterStore<T> {\r\n const currentValues = this._state.quickSearch\r\n const defaultDetails: IFilterChangeDetails = { action: 'remove', reason: 'quickSearch', ...details }\r\n\r\n // Check if quickSearch exists and has values\r\n if (!currentValues) {\r\n // No quickSearch to remove from, mark as not changed\r\n this._state = { ...this._state, details: { ...defaultDetails, isChanged: false } }\r\n return this\r\n }\r\n\r\n // Convert to array for consistent handling\r\n const valuesArray = Array.isArray(currentValues) ? currentValues : [currentValues]\r\n\r\n // Check if the value exists\r\n const valueIndex = valuesArray.indexOf(value)\r\n\r\n if (valueIndex === -1) {\r\n // Value not found, mark as not changed\r\n this._state = { ...this._state, details: { ...defaultDetails, isChanged: false } }\r\n return this\r\n }\r\n\r\n // Remove the specific value\r\n const updatedValues = valuesArray.filter((val) => val !== value)\r\n\r\n // If no values left, remove quickSearch entirely\r\n if (updatedValues.length === 0) {\r\n this._state = {\r\n ...this._state,\r\n quickSearch: undefined,\r\n details: { ...defaultDetails, isChanged: true }\r\n }\r\n } else {\r\n // Update with remaining values\r\n this._state = {\r\n ...this._state,\r\n quickSearch: updatedValues.length === 1 ? updatedValues[0] : updatedValues,\r\n details: { ...defaultDetails, isChanged: true }\r\n }\r\n }\r\n\r\n return this\r\n }\r\n\r\n updateSearchInput(quickSearch: SingleOrArray<string>): FilterStore<T> {\r\n this._state = { ...this._state, quickSearch, details: { reason: 'quickSearch', area: 'input', action: 'change', isChanged: true } }\r\n return this\r\n }\r\n\r\n // Pagination operations\r\n changePagination(pagination: IPagination, details: IFilterChangeDetails = { area: 'filterButton' }): FilterStore<T> {\r\n this._state = { ...this._state, pagination, details: { ...details, action: 'change', reason: 'pagination', isChanged: true } }\r\n return this\r\n }\r\n\r\n removePagination(details: IFilterChangeDetails = { area: 'filterButton' }): FilterStore<T> {\r\n this._state = { ...this._state, pagination: undefined, details: { ...details, action: 'remove', reason: 'pagination', isChanged: true } }\r\n return this\r\n }\r\n\r\n // Sort operations\r\n changeSort(sort: ISort<T>, details: IFilterChangeDetails = { area: 'sortButton' }): FilterStore<T> {\r\n this._state = { ...this._state, sort, details: { ...details, action: 'change', reason: 'sort' } }\r\n return this\r\n }\r\n\r\n removeSort(details: IFilterChangeDetails = { area: 'sortButton' }): FilterStore<T> {\r\n this._state = { ...this._state, sort: undefined, details: { ...details, action: 'remove', reason: 'sort' } }\r\n return this\r\n }\r\n\r\n toggleSortDirection(details: IFilterChangeDetails): FilterStore<T> {\r\n const currentSort = this._state.sort\r\n if (!currentSort) return this\r\n const finalSort: ISort<T> = { ...currentSort, direction: currentSort.direction === 'asc' ? 'desc' : 'asc' }\r\n this._state = { ...this._state, sort: finalSort, details: { ...details, action: 'change', reason: 'sort' } }\r\n return this\r\n }\r\n\r\n // Batch operations\r\n updateState(updates: Partial<IFilterState<T>>, details: IFilterChangeDetails = { area: 'filterButton' }): FilterStore<T> {\r\n this._state = { ...this._state, ...updates, details: { ...details, action: 'change' } }\r\n return this\r\n }\r\n\r\n // Reset operations\r\n reset(): FilterStore<T> {\r\n this._state = { ...this._defaultFilter, details: { action: 'reset', isChanged: true } }\r\n return this\r\n }\r\n\r\n resetFilter(details: IFilterChangeDetails = { area: 'filterButton' }): FilterStore<T> {\r\n this._state = { ...this._state, filter: undefined, details: { action: 'reset', reason: 'filter', ...details } }\r\n return this\r\n }\r\n\r\n resetQuickSearch(details: IFilterChangeDetails = { area: 'input' }): FilterStore<T> {\r\n this._state = { ...this._state, quickSearch: undefined, details: { action: 'reset', reason: 'quickSearch', ...details } }\r\n return this\r\n }\r\n\r\n resetPagination(details: IFilterChangeDetails = { reason: 'pagination' }): FilterStore<T> {\r\n this._state = { ...this._state, pagination: undefined, details: { action: 'reset', reason: 'pagination', ...details } }\r\n return this\r\n }\r\n\r\n resetSort(details: IFilterChangeDetails = { reason: 'sort' }): FilterStore<T> {\r\n this._state = { ...this._state, sort: undefined, details: { action: 'reset', reason: 'sort', ...details } }\r\n return this\r\n }\r\n\r\n // Utility methods\r\n private isPaginationEqualToDefault(): boolean {\r\n const curentVal = this._state.pagination\r\n const defaultVal = this._defaultFilter?.pagination\r\n\r\n if (!curentVal && !defaultVal) return true\r\n if (!curentVal || !defaultVal) return false\r\n\r\n return curentVal.page === defaultVal.page && curentVal.pageSize === defaultVal.pageSize\r\n }\r\n\r\n private isSortEqualToDefault(): boolean {\r\n const currentVal = this._state.sort\r\n const defaultVal = this._defaultFilter?.sort\r\n\r\n if (!currentVal && !defaultVal) return true\r\n if (!currentVal || !defaultVal) return false\r\n\r\n return currentVal.field === defaultVal.field && currentVal.direction === defaultVal.direction\r\n }\r\n\r\n extractFilter(): IFilterState<T> {\r\n const result: IFilterState<T> = {}\r\n\r\n // Include filter if it exists\r\n if (this._state.filter) {\r\n result.filter = this._state.filter\r\n }\r\n\r\n // Include quickSearch if it exists\r\n if (this._state.quickSearch) {\r\n result.quickSearch = this._state.quickSearch\r\n }\r\n\r\n // Include pagination only if it's different from default\r\n if (this._state.pagination && !this.isPaginationEqualToDefault()) {\r\n result.pagination = this._state.pagination\r\n }\r\n\r\n // Include sort only if it's different from default\r\n if (this._state.sort && !this.isSortEqualToDefault()) {\r\n result.sort = this._state.sort\r\n }\r\n\r\n return result\r\n }\r\n\r\n countFilterItems(): number {\r\n const filter = this._state.filter\r\n if (!filter) return 0\r\n\r\n return Object.values(filter).reduce<number>((count, items) => {\r\n // If items is an array and return its length, otherwise return 0\r\n return count + (Array.isArray(items) ? items.length : 0)\r\n }, 0)\r\n }\r\n\r\n hasFilter(): boolean {\r\n return !!this._state.filter && Object.keys(this._state.filter).length > 0\r\n }\r\n\r\n hasQuickSearch(): boolean {\r\n return !!this._state.quickSearch\r\n }\r\n\r\n hasPagination(): boolean {\r\n if (this.isPaginationEqualToDefault()) return false\r\n return !!this._state.pagination\r\n }\r\n\r\n hasSort(): boolean {\r\n if (this.isSortEqualToDefault()) return false\r\n return !!this._state.sort\r\n }\r\n\r\n isEmpty(): boolean {\r\n return !this.hasFilter() && !this.hasQuickSearch() && !this.hasPagination() && !this.hasSort()\r\n }\r\n\r\n converToQueryParam = (base: string) => {\r\n const extractFilter = this.extractFilter()\r\n const queryString = QueryParam.stringify({ filter: JSON.stringify(extractFilter) })\r\n return base + queryString\r\n }\r\n\r\n // Build the final state\r\n build(): IFilterState<T> {\r\n return { ...this._state }\r\n }\r\n}\r\nexport default FilterStore\r\n\r\nexport function createFilterStore<T>(filterState: IFilterState<T>, defaultFilter?: IFilterState<T>): FilterStore<T> {\r\n return new FilterStore(filterState, defaultFilter)\r\n}\r\n"],"names":["FilterStore","_createClass","_this","this","initialState","arguments","length","undefined","defaultFilter","_classCallCheck","_defineProperty","base","extractFilter","QueryParam","stringify","filter","JSON","obj","_objectSpread","details","_state","_defaultFilter","key","get","value","field","filterItem","_this$_state$filter$f","_this$_state$filter","existingFieldItems","some","item","action","reason","isChanged","newFieldItems","concat","_toConsumableArray","updatedFilter","existingFilter","remainingFilter","_objectWithoutProperties","map","_toPropertyKey","hasRemainingFields","Object","keys","defaultDetails","fieldItems","itemIndex","findIndex","updatedFieldItems","_","index","_this$_state$quickSea","currentValues","quickSearch","newValues","allValues","Array","isArray","uniqueValues","from","Set","currentSet","size","val","has","valuesArray","indexOf","updatedValues","area","pagination","sort","currentSort","finalSort","direction","updates","_this$_defaultFilter","curentVal","defaultVal","page","pageSize","_this$_defaultFilter2","currentVal","result","isPaginationEqualToDefault","isSortEqualToDefault","values","reduce","count","items","hasFilter","hasQuickSearch","hasPagination","hasSort","createFilterStore","filterState"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import{slicedToArray as r,createForOfIteratorHelper as e}from"../../_virtual/_rollupPluginBabelHelpers.js";import{EFieldValidate as t,EFieldMatch as a}from"./types.js";var i={list:"FilterMenu-list",item:"FilterMenu-item"},o=function(r){var e=Array.from(r).reduce((function(r,e){return r[e[0]]?Array.isArray(r[e[0]])?r[e[0]].push(e[1]):r[e[0]]=[r[e[0]],e[1]]:r[e[0]]=e[1],r}),{});return Object.keys(e).forEach((function(r){var t=e[r];"string"!=typeof t||"true"!==t.toString().toLocaleLowerCase()&&"false"!==t.toString().toLocaleLowerCase()||(e[r]="true"===t.toString().toLocaleLowerCase())})),e},n=function(r){return/^https?:\/\/(www\.)?(youtube\.com|youtu\.be)\//.test(r)},l=function(r){return/^https?:\/\/[^ ]+$/.test(r)},u=function(r,t){var i,o=null!==(i=null==t?void 0:t.trim().toLowerCase())&&void 0!==i?i:"";if(!o)return{};var u={};for(var s in r){var c,f=s,v=r[f];if(null!=v&&v.quickSearchMatch){var b,d=null!==(c=v.quickSearchMatch.rules)&&void 0!==c?c:[],h=Array.isArray(d)?d:[d],y=!1,m=e(h);try{for(m.s();!(b=m.n()).done;){var k=b.value;switch(k.rule){case a.AlwaysVisible:y=!0;break;case a.MatchOnly:"match"in k&&"function"==typeof k.match&&k.match(o)&&(y=!0);break;case a.LinkYoutube:n(o)&&(y=!0);break;case a.Link:l(o)&&(y=!0);break;case a.Guid:/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(o)&&(y=!0)}if(y)break}}catch(r){m.e(r)}finally{m.f()}y&&(u[f]=v)}}return u},s=function(e){if(!e)return{};for(var t={},a=0,i=Object.entries(e);a<i.length;a++){var o=r(i[a],2),n=o[0],l=o[1];l&&!1!==l.filterable&&(t[n]=l)}return t},c=function(r,a,i){var o,u,s=r.trim().toLowerCase();if(!s)return{error:!0,message:"The ".concat(a.toString()," is required ")};var c,f=null!==(o=null==i||null===(u=i.validation)||void 0===u?void 0:u.rules)&&void 0!==o?o:[],v=Array.isArray(f)?f:[f],b={error:!1},d=e(v);try{for(d.s();!(c=d.n()).done;){var h=c.value;switch(h.rule){case t.LinkYoutube:var y;if(!n(s))b.error=!0,b.message="The ".concat(null!==(y=null==i?void 0:i.label)&&void 0!==y?y:a.toString()," must be a valid YouTube link");break;case t.Link:var m;if(!l(s))b.error=!0,b.message="The ".concat(null!==(m=null==i?void 0:i.label)&&void 0!==m?m:a.toString()," must be a valid URL link");break;case t.Custom:var k;if("function"==typeof h.validator&&!h.validator(s))b.error=!0,b.message="The ".concat(null!==(k=null==i?void 0:i.label)&&void 0!==k?k:a.toString()," is invalid")}if(b.error)break}}catch(r){d.e(r)}finally{d.f()}return b},f={before:"<",after:">"},v={before:"Before",after:"After"};export{o as convertFormDataToJson,c as filterFieldValidated,i as filterMenuClasses,u as getFieldsMatches,s as getFieldsValidation,f as mapDateLogic,v as mapDateLogicText};
2
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","sources":["../../../src/data-view/helpers.ts"],"sourcesContent":["import { EFieldMatch, EFieldValidate, IFieldMatchConfig, IFilterConfig, IFilterConfigs, IFilterDateLogic, SingleOrArray } from './types'\r\n\r\nexport const filterMenuClasses = {\r\n list: 'FilterMenu-list',\r\n item: 'FilterMenu-item'\r\n}\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\nexport const convertFormDataToJson = function <TModel>(form: FormData): Partial<TModel> {\r\n const data = Array.from(form as any).reduce<Partial<TModel>>((a: unknown | any, b: any) => {\r\n if (!a[b[0]]) {\r\n a[b[0]] = b[1]\r\n } else if (Array.isArray(a[b[0]])) {\r\n a[b[0]].push(b[1])\r\n } else {\r\n a[b[0]] = [a[b[0]], b[1]]\r\n }\r\n return a\r\n }, {} as any) as any\r\n\r\n Object.keys(data).forEach((key) => {\r\n const value = data[key]\r\n if (typeof value === 'string' && (value.toString().toLocaleLowerCase() === 'true' || value.toString().toLocaleLowerCase() === 'false')) {\r\n data[key] = value.toString().toLocaleLowerCase() === 'true'\r\n }\r\n })\r\n return data\r\n}\r\n\r\nconst isYoutubeLink = (val: string) => /^https?:\\/\\/(www\\.)?(youtube\\.com|youtu\\.be)\\//.test(val)\r\n\r\nconst isGenericLink = (val: string) => /^https?:\\/\\/[^ ]+$/.test(val)\r\n\r\nconst isGuid = (val: string) => /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(val)\r\n\r\nexport const getFieldsMatches = <T>(fields?: IFilterConfigs<T>, keyword?: string): IFilterConfigs<T> => {\r\n const trimmed = keyword?.trim().toLowerCase() ?? ''\r\n if (!trimmed) return {}\r\n\r\n const matched: IFilterConfigs<T> = {}\r\n\r\n for (const key in fields) {\r\n const field = key as keyof IFilterConfigs<T>\r\n const config = fields[field]\r\n if (!config?.quickSearchMatch) continue\r\n const temp: SingleOrArray<IFieldMatchConfig> = config.quickSearchMatch.rules ?? []\r\n const rules = Array.isArray(temp) ? temp : [temp]\r\n\r\n let visible = false\r\n\r\n for (const rule of rules) {\r\n switch (rule.rule) {\r\n case EFieldMatch.AlwaysVisible:\r\n visible = true\r\n break\r\n case EFieldMatch.MatchOnly:\r\n if ('match' in rule && typeof rule.match === 'function') {\r\n if (rule.match(trimmed)) visible = true\r\n }\r\n break\r\n case EFieldMatch.LinkYoutube:\r\n if (isYoutubeLink(trimmed)) visible = true\r\n break\r\n case EFieldMatch.Link:\r\n if (isGenericLink(trimmed)) visible = true\r\n break\r\n case EFieldMatch.Guid:\r\n if (isGuid(trimmed)) visible = true\r\n break\r\n default:\r\n break\r\n }\r\n\r\n if (visible) break\r\n }\r\n\r\n if (visible) matched[field] = config\r\n }\r\n\r\n return matched\r\n}\r\n\r\nexport const getFieldsValidation = <T>(fields?: IFilterConfigs<T>): IFilterConfigs<T> => {\r\n if (!fields) return {} as IFilterConfigs<T>\r\n\r\n const filteredFields: IFilterConfigs<T> = {}\r\n\r\n for (const [key, config] of Object.entries(fields) as [keyof T, IFilterConfig][]) {\r\n // Default to true if no validation is provided\r\n if (config && config.filterable !== false) {\r\n filteredFields[key] = config\r\n }\r\n }\r\n\r\n return filteredFields\r\n}\r\n\r\nexport const filterFieldValidated = <T>(value: string, fieldKey: keyof T, filterField?: IFilterConfig): { error: boolean; message?: string } => {\r\n const trimmed = value.trim().toLowerCase()\r\n if (!trimmed) return { error: true, message: `The ${fieldKey.toString()} is required ` }\r\n const rules = filterField?.validation?.rules ?? []\r\n const rulesValidation = Array.isArray(rules) ? rules : [rules]\r\n const obj: { error: boolean; message?: string } = { error: false }\r\n for (const validateObj of rulesValidation) {\r\n switch (validateObj.rule) {\r\n case EFieldValidate.LinkYoutube:\r\n if (!isYoutubeLink(trimmed)) {\r\n obj.error = true\r\n obj.message = `The ${filterField?.label ?? fieldKey.toString()} must be a valid YouTube link`\r\n }\r\n break\r\n\r\n case EFieldValidate.Link:\r\n if (!isGenericLink(trimmed)) {\r\n obj.error = true\r\n obj.message = `The ${filterField?.label ?? fieldKey.toString()} must be a valid URL link`\r\n }\r\n break\r\n\r\n case EFieldValidate.Custom:\r\n if (typeof validateObj.validator === 'function' && !validateObj.validator(trimmed)) {\r\n obj.error = true\r\n obj.message = `The ${filterField?.label ?? fieldKey.toString()} is invalid`\r\n }\r\n break\r\n default:\r\n break\r\n }\r\n if (obj.error) break\r\n }\r\n return obj\r\n}\r\n\r\nexport const mapDateLogic: { [key in IFilterDateLogic]: string } = {\r\n before: '<',\r\n after: '>'\r\n}\r\n\r\nexport const mapDateLogicText: { [key in IFilterDateLogic]: string } = {\r\n before: 'Before',\r\n after: 'After'\r\n}\r\n"],"names":["filterMenuClasses","list","item","convertFormDataToJson","form","data","Array","from","reduce","a","b","isArray","push","Object","keys","forEach","key","value","toString","toLocaleLowerCase","isYoutubeLink","val","test","isGenericLink","getFieldsMatches","fields","keyword","_keyword$trim$toLower","trimmed","trim","toLowerCase","matched","_config$quickSearchMa","field","config","quickSearchMatch","_step","temp","rules","visible","_iterator","_createForOfIteratorHelper","s","n","done","rule","EFieldMatch","AlwaysVisible","MatchOnly","match","LinkYoutube","Link","Guid","err","e","f","getFieldsValidation","filteredFields","_i","_Object$entries","entries","length","_Object$entries$_i","_slicedToArray","filterable","filterFieldValidated","fieldKey","filterField","_filterField$validati","_filterField$validati2","error","message","concat","_step2","validation","rulesValidation","obj","_iterator2","validateObj","EFieldValidate","_filterField$label","label","_filterField$label2","Custom","_filterField$label3","validator","mapDateLogic","before","after","mapDateLogicText"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import{objectSpread2 as e}from"../../_virtual/_rollupPluginBabelHelpers.js";import{createFilterStore as r}from"./filter-store.js";import{tryParseObject as t}from"../utils/helpers.js";import"../utils/dayjs-config.js";import{QueryParam as i}from"../utils/query-param.js";var o=function(e){if("undefined"!=typeof window)try{var t,o={filter:"",sk:""};if(e.filter&&Object.keys(e.filter).length>0){var n=r(e.filter,e.defaultFilter).extractFilter(),l=Object.keys(n).length>0?JSON.stringify(n):"";o.filter=l}o.sk=null!==(t=e.seedKey)&&void 0!==t?t:"",o.filter||o.sk?i.replacePatch(o):i.replaceDeletes("filter","sk")}catch(e){console.error("Error syncing filter and seedKey to URL:",e)}},n=function(e){if("undefined"==typeof window)return null;try{var r,o,n,l=i.gets("filter","sk");return{filter:t(l.filter,null!==(r=e.defaultFilter)&&void 0!==r?r:{}),seedKey:null!==(o=null!==(n=l.sk)&&void 0!==n?n:e.defaultSeedKey)&&void 0!==o?o:(new Date).getTime().toString()}}catch(e){return console.error("Error getting filter from URL:",e),null}},l=function(e){var r;if("undefined"==typeof window)return null!==(r=e.defaultSeedKey)&&void 0!==r?r:(new Date).getTime().toString();try{var t,o;return null!==(t=null!==(o=i.gets("sk").sk)&&void 0!==o?o:e.defaultSeedKey)&&void 0!==t?t:(new Date).getTime().toString()}catch(r){var n;return console.error("Error getting seed key from URL:",r),null!==(n=e.defaultSeedKey)&&void 0!==n?n:(new Date).getTime().toString()}},d=function(e){if("undefined"!=typeof window)try{var r,t={mode:e.viewMode!==e.defaultViewMode&&null!==(r=e.viewMode)&&void 0!==r?r:""};t.mode?i.replacePatch(t):i.replaceDeletes("mode")}catch(e){console.error("Error syncing view mode to URL:",e)}},f=function(e){if("undefined"==typeof window)return e.defaultViewMode;try{var r=i.gets("mode");return r.mode?r.mode:e.defaultViewMode}catch(r){return console.error("Error getting view mode from URL:",r),e.defaultViewMode}},u=function(r){var t=e({},r||{});return t.details&&delete t.details,i.stringify({filter:JSON.stringify(t)})};export{u as convertFilterToQueryParam,n as getQueryFromURL,l as getSeedKeyFromURL,f as getViewModeFromURL,o as syncQueryToURL,d as syncViewModeToURL};
2
+ //# sourceMappingURL=query-param-url.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-param-url.js","sources":["../../../src/data-view/query-param-url.ts"],"sourcesContent":["import { IFilterState } from './types'\r\nimport { createFilterStore } from './filter-store'\r\nimport { QueryParam, tryParseObject } from '../utils'\r\nimport { EViewMode } from './view-mode.types'\r\n\r\nexport interface IViewDataQueryParams {\r\n filter?: string\r\n sk?: string\r\n mode?: string\r\n}\r\n\r\nexport interface IViewDataHandlerDef<T> {\r\n filter?: IFilterState<T>\r\n seedKey?: string\r\n defaultFilter?: IFilterState<T>\r\n defaultSeedKey?: string\r\n defaultValue?: string\r\n viewMode?: EViewMode\r\n defaultViewMode?: EViewMode\r\n}\r\n\r\nexport type IViewDataHandlerParams<T, K extends keyof IViewDataHandlerDef<T> = keyof IViewDataHandlerDef<T>> = Pick<IViewDataHandlerDef<T>, K>\r\n\r\nexport const syncQueryToURL = <T>(params: IViewDataHandlerParams<T, 'filter' | 'seedKey' | 'defaultFilter'>) => {\r\n // If window is undefined (e.g., during SSR), do nothing\r\n if (typeof window === 'undefined') return\r\n try {\r\n const updateParams: IViewDataQueryParams = { filter: '', sk: '' }\r\n\r\n // Handle filter\r\n if (!!params.filter && Object.keys(params.filter).length > 0) {\r\n const store = createFilterStore(params.filter, params.defaultFilter)\r\n const obj = store.extractFilter()\r\n const filterString = Object.keys(obj).length > 0 ? JSON.stringify(obj) : ''\r\n updateParams.filter = filterString\r\n }\r\n\r\n // Handle seedKey\r\n updateParams.sk = params.seedKey ?? ''\r\n\r\n // Update URL with both params at once\r\n if (updateParams.filter || updateParams.sk) {\r\n QueryParam.replacePatch<IViewDataQueryParams>(updateParams)\r\n } else {\r\n // If no params to update, remove existing filter and seedKey from URL\r\n QueryParam.replaceDeletes<IViewDataQueryParams>('filter', 'sk')\r\n }\r\n } catch (error) {\r\n console.error('Error syncing filter and seedKey to URL:', error)\r\n }\r\n}\r\n\r\nexport const getQueryFromURL = <T>(params: IViewDataHandlerParams<T, 'defaultFilter' | 'defaultSeedKey'>) => {\r\n // If window is undefined (e.g., during SSR), return null\r\n if (typeof window === 'undefined') return null\r\n\r\n // Attempt to parse filter and seedKey from URL\r\n try {\r\n const urlParams = QueryParam.gets<IViewDataQueryParams>('filter', 'sk')\r\n const filter = tryParseObject<IFilterState<T>>(urlParams.filter, params.defaultFilter ?? {})\r\n return {\r\n filter,\r\n seedKey: urlParams.sk ?? params.defaultSeedKey ?? new Date().getTime().toString()\r\n }\r\n } catch (error) {\r\n console.error('Error getting filter from URL:', error)\r\n return null\r\n }\r\n}\r\n\r\n// Methods for managing seedKey in URL\r\nexport const getSeedKeyFromURL = <T>(params: IViewDataHandlerParams<T, 'defaultSeedKey'>): string => {\r\n // If window is undefined (e.g., during SSR), return defaultSeedKey or current timestamp\r\n if (typeof window === 'undefined') return params.defaultSeedKey ?? new Date().getTime().toString()\r\n try {\r\n const q = QueryParam.gets<IViewDataQueryParams>('sk')\r\n return q.sk ?? params.defaultSeedKey ?? new Date().getTime().toString()\r\n } catch (error) {\r\n console.error('Error getting seed key from URL:', error)\r\n return params.defaultSeedKey ?? new Date().getTime().toString()\r\n }\r\n}\r\n\r\nexport const syncViewModeToURL = <T>(params: IViewDataHandlerParams<T, 'viewMode' | 'defaultViewMode'>) => {\r\n // If window is undefined (e.g., during SSR), do nothing\r\n if (typeof window === 'undefined') return\r\n try {\r\n const updateParams: IViewDataQueryParams = {\r\n mode: params.viewMode !== params.defaultViewMode ? params.viewMode ?? '' : ''\r\n }\r\n\r\n // Update URL with view mode\r\n if (updateParams.mode) {\r\n QueryParam.replacePatch<IViewDataQueryParams>(updateParams)\r\n } else {\r\n // If no view mode to update, remove existing mode from URL\r\n QueryParam.replaceDeletes<IViewDataQueryParams>('mode')\r\n }\r\n } catch (error) {\r\n console.error('Error syncing view mode to URL:', error)\r\n }\r\n}\r\n\r\nexport const getViewModeFromURL = <T>(params: IViewDataHandlerParams<T, 'defaultViewMode'>): EViewMode | undefined => {\r\n // If window is undefined (e.g., during SSR), return defaultViewMode\r\n if (typeof window === 'undefined') return params.defaultViewMode\r\n try {\r\n const q = QueryParam.gets<IViewDataQueryParams>('mode')\r\n return q.mode ? (q.mode as EViewMode) : params.defaultViewMode\r\n } catch (error) {\r\n console.error('Error getting view mode from URL:', error)\r\n return params.defaultViewMode\r\n }\r\n}\r\n\r\nexport const convertFilterToQueryParam = <T>(filterState?: IFilterState<T>) => {\r\n const obj = { ...(filterState || {}) }\r\n if (!!obj.details) delete obj.details\r\n return QueryParam.stringify<IViewDataQueryParams>({ filter: JSON.stringify(obj) })\r\n}\r\n"],"names":["syncQueryToURL","params","window","_params$seedKey","updateParams","filter","sk","Object","keys","length","obj","createFilterStore","defaultFilter","extractFilter","filterString","JSON","stringify","seedKey","QueryParam","replacePatch","replaceDeletes","error","console","getQueryFromURL","_params$defaultFilter","_ref","_urlParams$sk","urlParams","gets","tryParseObject","defaultSeedKey","Date","getTime","toString","getSeedKeyFromURL","_params$defaultSeedKe","_ref2","_q$sk","_params$defaultSeedKe2","syncViewModeToURL","_params$viewMode","mode","viewMode","defaultViewMode","getViewModeFromURL","q","convertFilterToQueryParam","filterState","_objectSpread","details"],"mappings":"iRAuBaA,EAAiB,SAAIC,GAEhC,GAAsB,oBAAXC,OACX,IAAI,IAAAC,EACIC,EAAqC,CAAEC,OAAQ,GAAIC,GAAI,IAG7D,GAAML,EAAOI,QAAUE,OAAOC,KAAKP,EAAOI,QAAQI,OAAS,EAAG,CAC5D,IACMC,EADQC,EAAkBV,EAAOI,OAAQJ,EAAOW,eACpCC,gBACZC,EAAeP,OAAOC,KAAKE,GAAKD,OAAS,EAAIM,KAAKC,UAAUN,GAAO,GACzEN,EAAaC,OAASS,CACvB,CAGDV,EAAaE,GAAmBH,QAAjBA,EAAGF,EAAOgB,eAAOd,IAAAA,EAAAA,EAAI,GAGhCC,EAAaC,QAAUD,EAAaE,GACtCY,EAAWC,aAAmCf,GAG9Cc,EAAWE,eAAqC,SAAU,KAE7D,CAAC,MAAOC,GACPC,QAAQD,MAAM,2CAA4CA,EAC3D,CACH,EAEaE,EAAkB,SAAItB,GAEjC,GAAsB,oBAAXC,OAAwB,OAAO,KAG1C,IAAI,IAAAsB,EAAAC,EAAAC,EACIC,EAAYT,EAAWU,KAA2B,SAAU,MAElE,MAAO,CACLvB,OAFawB,EAAgCF,EAAUtB,eAAMmB,EAAEvB,EAAOW,qBAAa,IAAAY,EAAAA,EAAI,CAAA,GAGvFP,QAA8C,QAAvCQ,EAAcC,QAAdA,EAAEC,EAAUrB,UAAEoB,IAAAA,EAAAA,EAAIzB,EAAO6B,sBAAc,IAAAL,EAAAA,GAAI,IAAIM,MAAOC,UAAUC,WAE1E,CAAC,MAAOZ,GAEP,OADAC,QAAQD,MAAM,iCAAkCA,GACzC,IACR,CACH,EAGaa,EAAoB,SAAIjC,GAA+D,IAAAkC,EAElG,GAAsB,oBAAXjC,OAAwB,OAA4BiC,QAA5BA,EAAOlC,EAAO6B,sBAAcK,IAAAA,EAAAA,GAAI,IAAIJ,MAAOC,UAAUC,WACxF,IAAI,IAAAG,EAAAC,EAEF,OAAoCD,QAApCA,EAAW,QAAXC,EADUnB,EAAWU,KAA2B,MACvCtB,UAAE,IAAA+B,EAAAA,EAAIpC,EAAO6B,sBAAcM,IAAAA,EAAAA,GAAI,IAAIL,MAAOC,UAAUC,UAC9D,CAAC,MAAOZ,GAAO,IAAAiB,EAEd,OADAhB,QAAQD,MAAM,mCAAoCA,GACtBiB,QAA5BA,EAAOrC,EAAO6B,0BAAcQ,EAAAA,GAAI,IAAIP,MAAOC,UAAUC,UACtD,CACH,EAEaM,EAAoB,SAAItC,GAEnC,GAAsB,oBAAXC,OACX,IAAI,IAAAsC,EACIpC,EAAqC,CACzCqC,KAAMxC,EAAOyC,WAAazC,EAAO0C,iBAAiCH,QAAlBA,EAAGvC,EAAOyC,oBAAQF,EAAAA,EAAS,IAIzEpC,EAAaqC,KACfvB,EAAWC,aAAmCf,GAG9Cc,EAAWE,eAAqC,OAEnD,CAAC,MAAOC,GACPC,QAAQD,MAAM,kCAAmCA,EAClD,CACH,EAEauB,EAAqB,SAAI3C,GAEpC,GAAsB,oBAAXC,OAAwB,OAAOD,EAAO0C,gBACjD,IACE,IAAME,EAAI3B,EAAWU,KAA2B,QAChD,OAAOiB,EAAEJ,KAAQI,EAAEJ,KAAqBxC,EAAO0C,eAChD,CAAC,MAAOtB,GAEP,OADAC,QAAQD,MAAM,oCAAqCA,GAC5CpB,EAAO0C,eACf,CACH,EAEaG,EAA4B,SAAIC,GAC3C,IAAMrC,EAAGsC,EAAA,GAASD,GAAe,CAAA,GAEjC,OADMrC,EAAIuC,gBAAgBvC,EAAIuC,QACvB/B,EAAWF,UAAgC,CAAEX,OAAQU,KAAKC,UAAUN,IAC7E"}
@@ -0,0 +1,2 @@
1
+ import{slicedToArray as r}from"../../_virtual/_rollupPluginBabelHelpers.js";import{jsx as n,Fragment as o}from"react/jsx-runtime";import{useEffect as e,useState as t}from"react";var i=function(){var n=t(!1),o=r(n,2),i=o[0],l=o[1];return e((function(){var r=function(){var r=window.scrollY>0;r!==i&&l(r)};return window.addEventListener("scroll",r),function(){return window.removeEventListener("scroll",r)}}),[i]),e((function(){var r=window.scrollY>0;r!==i&&l(r)}),[]),{isScrolled:i}},l=function(r){var t=i().isScrolled;return e((function(){r.onChange({isScrolled:t})}),[t,r.onChange]),n(o,{})};export{l as default,i as useScrollTracking};
2
+ //# sourceMappingURL=scroll-tracking.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scroll-tracking.js","sources":["../../../src/data-view/scroll-tracking.tsx"],"sourcesContent":["/* eslint-disable react-hooks/exhaustive-deps*/\r\nimport { FC, useEffect, useState } from 'react'\r\n\r\nexport interface IScrollTrackingData {\r\n isScrolled: boolean\r\n}\r\n\r\nexport const useScrollTracking = (): IScrollTrackingData => {\r\n const [isScrolled, setIsScrolled] = useState<boolean>(false)\r\n\r\n useEffect(() => {\r\n const handleScroll = () => {\r\n const scrolled = window.scrollY > 0\r\n if (scrolled !== isScrolled) setIsScrolled(scrolled)\r\n }\r\n\r\n window.addEventListener('scroll', handleScroll)\r\n return () => window.removeEventListener('scroll', handleScroll)\r\n }, [isScrolled])\r\n\r\n useEffect(() => {\r\n const scrolled = window.scrollY > 0\r\n if (scrolled !== isScrolled) setIsScrolled(scrolled)\r\n }, [])\r\n\r\n return { isScrolled }\r\n}\r\n\r\nexport interface IScrollTrackingProps {\r\n onChange: (data: IScrollTrackingData) => void\r\n}\r\n\r\nconst ScrollTracking: FC<IScrollTrackingProps> = (props) => {\r\n const { isScrolled } = useScrollTracking()\r\n\r\n useEffect(() => {\r\n props.onChange({ isScrolled })\r\n }, [isScrolled, props.onChange])\r\n\r\n return <></>\r\n}\r\n\r\nexport default ScrollTracking\r\n"],"names":["useScrollTracking","_useState","useState","_useState2","_slicedToArray","isScrolled","setIsScrolled","useEffect","handleScroll","scrolled","window","scrollY","addEventListener","removeEventListener","ScrollTracking","props","onChange","_jsx"],"mappings":"sLAOaA,EAAoB,WAC/B,IAAAC,EAAoCC,GAAkB,GAAMC,EAAAC,EAAAH,EAAA,GAArDI,EAAUF,EAAA,GAAEG,EAAaH,EAAA,GAiBhC,OAfAI,GAAU,WACR,IAAMC,EAAe,WACnB,IAAMC,EAAWC,OAAOC,QAAU,EAC9BF,IAAaJ,GAAYC,EAAcG,EAC5C,EAGD,OADAC,OAAOE,iBAAiB,SAAUJ,GAC3B,WAAA,OAAME,OAAOG,oBAAoB,SAAUL,EAAa,CACjE,GAAG,CAACH,IAEJE,GAAU,WACR,IAAME,EAAWC,OAAOC,QAAU,EAC9BF,IAAaJ,GAAYC,EAAcG,EAC5C,GAAE,IAEI,CAAEJ,WAAAA,EACX,EAMMS,EAA2C,SAACC,GAChD,IAAQV,EAAeL,IAAfK,WAMR,OAJAE,GAAU,WACRQ,EAAMC,SAAS,CAAEX,WAAAA,GAClB,GAAE,CAACA,EAAYU,EAAMC,WAEfC,OACT"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sources":["../../../src/data-view/types.ts"],"sourcesContent":["import type { ReactNode } from 'react'\r\nimport type { ButtonProps } from '@mui/material'\r\nimport type { IFilterNotesProps } from './ui.units'\r\n\r\nexport type SingleOrArray<T> = T | T[]\r\n\r\nexport type IRelativePosition = 'above' | 'below' | 'left' | 'right'\r\n\r\nexport type IPositionElement<K extends IRelativePosition = IRelativePosition> = { [key in K]?: ReactNode }\r\n\r\nexport enum EViewStatus {\r\n Loading = 'Loading',\r\n Loaded = 'Loaded',\r\n Error = 'Error'\r\n}\r\n\r\nexport type IFilterArea = 'input' | 'filterButton' | 'sortButton'\r\nexport type IFilterReason = 'filter' | 'quickSearch' | 'pagination' | 'sort'\r\nexport type IFilterAction = 'add' | 'remove' | 'change' | 'reset'\r\nexport type IFilterType = 'string' | 'select' | 'select-multi' | 'date' | 'date-range'\r\n\r\nexport type IFilterLogic = 'and' | 'or'\r\nexport type IFilterDateLogic = 'before' | 'after'\r\nexport type IFilterDateRangeLogic = 'between' | 'not-between'\r\n\r\nexport interface IItemBase {\r\n value: string\r\n label?: string\r\n}\r\n\r\n//#region Validation Result\r\nexport interface IValidationResult {\r\n hasError: boolean\r\n message?: string\r\n}\r\n//#endregion\r\n\r\n//#region Field Match Config\r\nexport enum EFieldMatch {\r\n AlwaysVisible = 'AlwaysVisible',\r\n MatchOnly = 'MatchOnly',\r\n LinkYoutube = 'LinkYoutube',\r\n Link = 'Link',\r\n Guid = 'Guid'\r\n}\r\n\r\nexport interface IFieldMatchDef {\r\n rule: EFieldMatch\r\n}\r\n\r\nexport interface IFieldMatchMatchOnly extends IFieldMatchDef {\r\n rule: EFieldMatch.MatchOnly\r\n match: (value: string) => boolean\r\n}\r\n\r\nexport interface IFieldMatchBasic extends IFieldMatchDef {\r\n rule: EFieldMatch.AlwaysVisible | EFieldMatch.LinkYoutube | EFieldMatch.Link | EFieldMatch.Guid\r\n}\r\n\r\nexport type IFieldMatchConfig = IFieldMatchMatchOnly | IFieldMatchBasic\r\n\r\nexport type IFieldMatchConfigs = {\r\n rules: SingleOrArray<IFieldMatchConfig>\r\n notes?: IFilterNotesProps\r\n}\r\n//#endregion\r\n\r\n//#region Field Validate Config\r\nexport enum EFieldValidate {\r\n Required = 'Required',\r\n LinkYoutube = 'LinkYoutube',\r\n Link = 'Link',\r\n Custom = 'Custom'\r\n}\r\n\r\nexport interface IFieldValidateDef {\r\n rule: EFieldValidate\r\n}\r\n\r\nexport interface IFieldValidateCustom extends IFieldValidateDef {\r\n rule: EFieldValidate.Custom\r\n validator: (value: string) => boolean\r\n}\r\n\r\nexport interface IFieldValidateBasic extends IFieldValidateDef {\r\n rule: EFieldValidate.Required | EFieldValidate.Link | EFieldValidate.LinkYoutube\r\n}\r\n\r\nexport type IFieldValidateConfig = IFieldValidateCustom | IFieldValidateBasic\r\n\r\nexport type IFieldValidateConfigs = {\r\n rules: SingleOrArray<IFieldValidateConfig>\r\n notes?: IFilterNotesProps\r\n}\r\n//#endregion\r\n\r\n//#region Pagination\r\nexport interface IPagination {\r\n page?: number\r\n pageSize?: number\r\n}\r\n//#endregion\r\n\r\n//#region Sort\r\nexport interface ISort<T> {\r\n field: keyof T\r\n direction: 'asc' | 'desc'\r\n}\r\n//#endregion\r\n\r\n//#region Quick Search Config\r\nexport interface IQuickSearchConfig<T> {\r\n fields: SingleOrArray<keyof T>\r\n label?: string\r\n notes?: IFilterNotesProps\r\n logic?: IFilterLogic\r\n}\r\n//#endregion\r\n\r\n//#region Filter Config\r\ninterface IFilterDef {\r\n /** Display label for the filter field */\r\n label?: string\r\n /**\r\n * Filter input type\r\n * @default 'string'\r\n */\r\n type?: IFilterType\r\n /**\r\n * Configuration for quick search matching behavior.\r\n * Determines how the quick search should match against field values.\r\n */\r\n quickSearchMatch?: IFieldMatchConfigs\r\n /**\r\n * Notes for the filter field.\r\n */\r\n notes?: IFilterNotesProps\r\n /**\r\n * Validation rules for the filter menu input.\r\n * @default\r\n * { rules: [{ rule: EFieldValidate.Required }] }\r\n */\r\n validation?: IFieldValidateConfigs\r\n /**\r\n * Notes to display in the filter menu.\r\n * Useful for providing additional context or instructions.\r\n */\r\n filterable?: boolean\r\n /**\r\n * Whether the filter field is sortable.\r\n * If true, the field can be used for sorting in the filter menu.\r\n * @default true\r\n */\r\n sortable?: boolean\r\n}\r\n\r\nexport interface IFilterBasicDef extends IFilterDef {\r\n type?: 'string'\r\n}\r\n\r\nexport interface IFilterSelectDef extends IFilterDef {\r\n type: 'select' | 'select-multi'\r\n options: { value: string; label?: string }[]\r\n}\r\n\r\nexport interface IFilterDateDef extends IFilterDef {\r\n type: 'date' | 'date-range'\r\n /**\r\n * Date format for display and validation\r\n * @default 'YYYY-MM-DD'\r\n */\r\n format?: string\r\n /**\r\n * Minimum date allowed\r\n */\r\n minDate?: string | Date\r\n /**\r\n * Maximum date allowed\r\n */\r\n maxDate?: string | Date\r\n}\r\n\r\nexport type IFilterConfig = IFilterBasicDef | IFilterSelectDef | IFilterDateDef\r\n\r\nexport type IFilterConfigs<T> = { [key in keyof T]?: IFilterConfig }\r\n//#endregion\r\n\r\n//#region Filter State\r\nexport interface IFilterItem {\r\n type?: IFilterType\r\n value?: string | number | boolean\r\n label?: string\r\n logic?: IFilterLogic\r\n dateLogic?: IFilterDateLogic\r\n dateRangeLogic?: IFilterDateRangeLogic\r\n // For date-range, we store start and end dates\r\n startDate?: string\r\n endDate?: string\r\n}\r\n\r\nexport type IFilterMap<T> = { [key in keyof T]?: IFilterItem[] }\r\n\r\nexport interface IFilterChangeDetails {\r\n reason?: IFilterReason\r\n area?: IFilterArea\r\n action?: IFilterAction\r\n isChanged?: boolean\r\n}\r\n\r\nexport interface IFilterState<T> {\r\n filter?: IFilterMap<T>\r\n quickSearch?: SingleOrArray<string>\r\n quickSearchLogic?: IFilterLogic\r\n pagination?: IPagination\r\n sort?: ISort<T>\r\n details?: IFilterChangeDetails\r\n}\r\n\r\nexport type IFilterStateChangeHandler<T> = (filterState: IFilterState<T>) => void\r\n//#endregion\r\n\r\n//#region Filter Bar\r\n\r\nexport interface ISortButtonConfigs {\r\n text?: string\r\n icon?: ReactNode\r\n wrapProps?: ButtonProps\r\n}\r\n\r\nexport interface IFilterBarConfigBase {\r\n /** @default false */\r\n enableSticky?: boolean\r\n /** @default false */\r\n enableSort?: boolean\r\n}\r\n\r\nexport interface IFilterBarConfigs<T> extends IFilterBarConfigBase {\r\n id?: string\r\n placeholder?: string\r\n notes?: IFilterNotesProps\r\n fields?: IFilterConfigs<T>\r\n quickSearch?: IQuickSearchConfig<T>\r\n defaultValue?: IFilterState<T>\r\n sortButton?: ISortButtonConfigs\r\n}\r\n//#endregion\r\n\r\n// #region View Data\r\nexport interface IViewData<T> {\r\n items: T[]\r\n totalItems?: number\r\n hasPreviousPage?: boolean\r\n hasNextPage?: boolean\r\n}\r\n//#endregion\r\n"],"names":["EViewStatus","EFieldMatch","EFieldValidate"],"mappings":"IAUYA,EA4BAC,EA8BAC,GA1DZ,SAAYF,GACVA,EAAA,QAAA,UACAA,EAAA,OAAA,SACAA,EAAA,MAAA,OACD,CAJD,CAAYA,IAAAA,EAIX,CAAA,IAwBD,SAAYC,GACVA,EAAA,cAAA,gBACAA,EAAA,UAAA,YACAA,EAAA,YAAA,cACAA,EAAA,KAAA,OACAA,EAAA,KAAA,MACD,CAND,CAAYA,IAAAA,EAMX,CAAA,IAwBD,SAAYC,GACVA,EAAA,SAAA,WACAA,EAAA,YAAA,cACAA,EAAA,KAAA,OACAA,EAAA,OAAA,QACD,CALD,CAAYA,IAAAA,EAKX,CAAA"}
@@ -0,0 +1,2 @@
1
+ import{objectSpread2 as e,objectWithoutProperties as o,slicedToArray as n}from"../../_virtual/_rollupPluginBabelHelpers.js";import{jsx as i,Fragment as r,jsxs as l}from"react/jsx-runtime";import t,{useRef as a,useState as d}from"react";import{styled as u,ToggleButtonGroup as s,Button as c,colors as f,Box as m,RadioGroup as v,FormGroup as p,ButtonGroup as h,IconButton as g,InputBase as b,InputAdornment as x,Typography as C,Tooltip as z,TextField as y,FormControlLabel as w,Checkbox as S,Radio as k,ToggleButton as T}from"@mui/material";import R from"@mui/icons-material/Close";import B from"@mui/icons-material/Shuffle";import P from"@mui/icons-material/ClearAll";import L from"@mui/icons-material/FilterList";import W from"@mui/icons-material/ArrowUpward";import M from"@mui/icons-material/ArrowDownward";import D from"@mui/icons-material/KeyboardReturn";import E from"@mui/icons-material/KeyboardArrowDown";import{mapDataViewContext as F}from"./context.js";import{RichTooltip as I,HelpOutlinePulseIcon as j}from"../components/rich-tooltip.js";import{createFilterStore as A}from"./filter-store.js";var N=["children"],H={asc:{title:"Ascending",icon:i(W,{fontSize:"small"})},desc:{title:"Descending",icon:i(M,{fontSize:"small"})}},_=function(e){return l(U,{size:"small",value:e.value||"and",exclusive:!0,onChange:function(o,n){n&&e.onChange&&e.onChange(o,n)},children:[i(T,{size:"small",value:"and","aria-label":"and logic",children:"AND"}),i(T,{size:"small",value:"or","aria-label":"or logic",children:"OR"})]})},K=function(e){return l(U,{size:"small",value:e.value||"before",exclusive:!0,onChange:function(o,n){n&&e.onChange&&e.onChange(o,n)},children:[i(T,{size:"small",value:"before","aria-label":"before date",children:"before"}),i(T,{size:"small",value:"after","aria-label":"after date",children:"after"})]})},O=function(e){return l(U,{size:"small",value:e.value||"between",exclusive:!0,onChange:function(o,n){n&&e.onChange&&e.onChange(o,n)},children:[i(T,{size:"small",value:"between","aria-label":"between dates",children:"between"}),i(T,{size:"small",value:"not-between","aria-label":"not between dates",children:"not between"})]})},U=u(s)({"& .MuiToggleButton-root":{color:"#fff",borderColor:"rgba(255, 255, 255, 0.3)",fontSize:"0.65rem",fontWeight:600,lineHeight:1,minWidth:"40px",padding:"6px 8px","&.Mui-selected":{backgroundColor:"#1976d2",color:"#fff","&:hover":{backgroundColor:"#1565c0"}},"&:hover":{backgroundColor:"rgba(255, 255, 255, 0.08)"}}}),Y=function(e){return i(me,{children:e.items.map((function(e,o){return i(C,{component:"li",variant:"body2",children:e},o)}))})},$=function(e){var o,n;return i(fe,{className:!0===e.disabledSize?"disabled-size":"",children:i(I,{panel:{title:null!==(o=e.title)&&void 0!==o?o:"The search includes",content:e.renderContent?e.renderContent():i(Y,{items:null!==(n=e.items)&&void 0!==n?n:[]})},children:i(j,{fontSize:"small"})})})},q=t.forwardRef((function(o,n){return i(b,e(e({fullWidth:!0,autoComplete:"off",size:"small"},o),{},{inputRef:n}))})),G=function(o){return l(x,{position:"end",children:[o.keyword&&l(r,{children:[i(J,{size:"small",color:"primary",onClick:o.onEnterSearch,sx:{display:{xs:"none",md:"flex"}},children:l(C,{variant:"caption",children:["Type and hit ",i("b",{children:"Enter ⏎"})," to filter."]})}),i(z,{title:"Press Enter to filter",placement:"bottom",arrow:!0,children:i(g,{size:"small",color:"primary",sx:{display:{xs:"flex",md:"none"}},onClick:o.onEnterSearch,children:i(D,{fontSize:"small"})})})]}),o.keyword&&i(z,{title:"Press Esc to clear",placement:"bottom",arrow:!0,children:i(g,{size:"small",sx:{marginLeft:"8px",color:"text.error","&:hover":{color:"error.main"}},onClick:o.onClear,children:i(R,{fontSize:"small"})})}),o.notes&&i($,e({},o.notes))]})},J=u(c)({padding:"4px 6px",textTransform:"none",lineHeight:1,".MuiTypography-root":{fontWeight:600,b:{fontWeight:700,backgroundColor:f.blue[100],borderRadius:"4px",padding:"2px 4px"}}}),Q=t.forwardRef((function(n,r){var l=n.children,t=o(n,N);return i(V,e(e({size:"small",color:"error",startIcon:i(P,{}),ref:r},t),{},{children:l||"Clear all"}))})),V=u(c)({textTransform:"none",fontWeight:700}),X=t.forwardRef((function(o,n){return i(g,e(e({ref:n,size:"small",sx:{flex:"0 0 auto"}},o),{},{children:i(L,{})}))})),Z=function(o){var n=a(null);return i(r,{children:F((function(r){var t,a,d,u,s,c,f,m,v,p=r.filterState,g=r.filterBarConfigs,b=p.sort?H[null===(t=p.sort)||void 0===t?void 0:t.direction]:{},x=null===(a=g.fields)||void 0===a?void 0:a[null===(d=p.sort)||void 0===d?void 0:d.field],C=(null==x?void 0:x.label)||(null===(u=p.sort)||void 0===u||null===(u=u.field)||void 0===u?void 0:u.toString())||(null===(s=g.sortButton)||void 0===s?void 0:s.text);return C?l(h,{"aria-label":"Button Sort",size:"small",children:[i(ee,e(e(e({size:"small",color:"inherit",startIcon:b.icon||i(B,{fontSize:"small"}),onClick:function(e){e.stopPropagation(),n.current&&clearTimeout(n.current),n.current=setTimeout((function(){return function(){var e,o;if(null!==(e=p.sort)&&void 0!==e&&e.field){var n=null===(o=p.sort)||void 0===o?void 0:o.direction,i=n&&"asc"===n?"desc":"asc",l={field:p.sort.field,direction:i},t=A(p).changeSort(l,{area:"sortButton"});r.onFilterStateChange(t.build())}}()}),500)}},null===(v=g.sortButton)||void 0===v?void 0:v.wrapProps),o),{},{children:C})),i(ee,{size:"small",color:"inherit",sx:{p:0},onClick:function(e){return r.onPopperPanelChange(e.currentTarget,"sortButton")},children:i(E,{fontSize:"small"})})]}):i(ee,e(e(e({size:"small",color:"inherit",startIcon:b.icon||i(B,{fontSize:"small"}),endIcon:null!==(c=null===(f=g.sortButton)||void 0===f?void 0:f.icon)&&void 0!==c?c:i(E,{fontSize:"small"}),onClick:function(e){return r.onPopperPanelChange(e.currentTarget,"sortButton")}},null===(m=g.sortButton)||void 0===m?void 0:m.wrapProps),o),{},{children:C||"Sort"}))}))})},ee=u(c)((function(e){var o=e.theme;return{height:"var(--filter-bar-height, 40px)",padding:"0 16px",backgroundColor:"dark"===o.palette.mode?o.palette.background.paper:o.palette.grey[50],border:"1px solid var(--color-divider, rgba(145 158 171 / 20%))",textTransform:"none",fontWeight:600,":hover":{backgroundColor:"dark"===o.palette.mode?o.palette.grey[800]:f.grey[100]}}})),oe=function(e){var o=e.area;return i(m,{sx:{padding:"8px",textAlign:"center",border:"1px solid #ddd",borderRadius:"4px"},children:l(C,{variant:"body2",sx:{padding:"8px"},children:["No panel available for area: ",o]})})},ne=function(o){var n=o.label,r=o.notes,t=o.children,a=o.afterTopBar;return l(ie,{children:[l(m,{className:"top-bar",children:[i(C,{variant:"subtitle2",children:n}),a&&i(m,{className:"after-top-bar",children:a}),r&&i($,e({title:"The ".concat(n," includes"),disabledSize:!0},r))]}),i(m,{className:"content",children:t})]})},ie=u(m)({minWidth:"200px",borderRadius:"4px",overflow:"hidden",".top-bar":{display:"flex",alignItems:"center",background:f.grey[900],padding:"8px",gap:"8px",".MuiTypography-root":{color:f.common.white,flex:1}},".after-top-bar":{marginLeft:"8px"},".content":{padding:"8px"}}),re=function(e){var o,n,r,l,t,a=null!==(o=null===(n=e.fieldConfig)||void 0===n?void 0:n.label)&&void 0!==o?o:e.name;return i(ne,{label:a,notes:null===(r=e.fieldConfig)||void 0===r?void 0:r.notes,children:i(y,{autoFocus:!0,name:e.name,size:"small",fullWidth:!0,error:!(null===(l=e.validationResult)||void 0===l||!l.hasError),helperText:null===(t=e.validationResult)||void 0===t?void 0:t.message,sx:{".MuiInputBase-root":{minHeight:"42px"}}})})},le=function(e){var o,n,r,l,t,a=null!==(o=null===(n=e.fieldConfig)||void 0===n?void 0:n.label)&&void 0!==o?o:e.name;return i(ne,{label:a,notes:null===(r=e.fieldConfig)||void 0===r?void 0:r.notes,children:i(te,{name:e.name,className:null!==(l=e.validationResult)&&void 0!==l&&l.hasError?"error":"",onChange:e.onChange,children:null===(t=e.fieldConfig)||void 0===t?void 0:t.options.map((function(e,o){var n;return i(w,{value:e.value,control:i(k,{}),label:null!==(n=e.label)&&void 0!==n?n:e.value},e.value.toString()+o)}))})})},te=u(v)({marginLeft:"-8px",marginRight:"-8px","&.error .MuiRadio-root":{color:"#d32f2f"},".MuiFormControlLabel-root":{margin:0},".MuiFormControlLabel-root:hover":{backgroundColor:"rgba(25, 118, 210, 0.04)"}}),ae=function(e){var o,r,t,a,u,s=d("and"),c=n(s,2),f=c[0],m=c[1],v=null!==(o=null===(r=e.fieldConfig)||void 0===r?void 0:r.label)&&void 0!==o?o:e.name;return l(ne,{label:v,notes:null===(t=e.fieldConfig)||void 0===t?void 0:t.notes,afterTopBar:i(_,{value:f,onChange:function(e,o){return m(o)}}),children:[i("input",{type:"hidden",name:"filterLogic",value:f}),i(de,{className:null!==(a=e.validationResult)&&void 0!==a&&a.hasError?"error":"",children:null===(u=e.fieldConfig)||void 0===u?void 0:u.options.map((function(o,n){var r;return i(w,{value:o.value,control:i(S,{name:e.name}),label:null!==(r=o.label)&&void 0!==r?r:o.value,onChange:e.onChange},o.value.toString()+n)}))})]})},de=u(p)({marginLeft:"-8px",marginRight:"-8px","&.error .MuiCheckbox-root":{color:"#d32f2f"},".MuiFormControlLabel-root":{margin:0},".MuiFormControlLabel-root:hover":{backgroundColor:"rgba(25, 118, 210, 0.04)"}});var ue=function(e){var o,r,t,a,u,s,c,f,v=d("before"),p=n(v,2),h=p[0],g=p[1],b=d(""),x=n(b,2),C=x[0],z=x[1],w=null!==(o=null===(r=e.fieldConfig)||void 0===r?void 0:r.label)&&void 0!==o?o:e.name;return i(ne,{label:w,notes:null===(t=e.fieldConfig)||void 0===t?void 0:t.notes,afterTopBar:i(K,{value:h,onChange:function(e,o){return g(o)}}),children:l(m,{className:"content",children:[i("input",{type:"hidden",name:"dateLogic",value:h}),i("input",{hidden:!0,type:"text",name:e.name,readOnly:!0,value:(f=C,f&&/^\d{4}-\d{2}-\d{2}$/.test(f)?"".concat(f,"T00:00:00.0000000"):"")}),i(y,{autoFocus:!0,fullWidth:!0,type:"date",size:"small",value:C,onChange:function(e){return z(e.target.value)},error:!(null===(a=e.validationResult)||void 0===a||!a.hasError),helperText:null===(u=e.validationResult)||void 0===u?void 0:u.message,inputProps:{min:null===(s=e.fieldConfig)||void 0===s?void 0:s.minDate,max:null===(c=e.fieldConfig)||void 0===c?void 0:c.maxDate},sx:{".MuiInputBase-root":{minHeight:"42px"}}})]})})},se=function(e){var o,r,t,a,u,s,c,f,m,v,p=d("between"),h=n(p,2),g=h[0],b=h[1],x=null!==(o=null===(r=e.fieldConfig)||void 0===r?void 0:r.label)&&void 0!==o?o:e.name;return l(ne,{label:x,notes:null===(t=e.fieldConfig)||void 0===t?void 0:t.notes,afterTopBar:i(O,{value:g,onChange:function(e,o){return b(o)}}),children:[i("input",{type:"hidden",name:"dateRangeLogic",value:g}),l(ce,{children:[i(y,{autoFocus:!0,fullWidth:!0,name:"".concat(e.name,"_start"),type:"date",size:"small",label:"From",error:!(null===(a=e.validationResult)||void 0===a||!a.hasError),sx:{marginBottom:1},InputLabelProps:{shrink:!0},inputProps:{min:null===(u=e.fieldConfig)||void 0===u?void 0:u.minDate,max:null===(s=e.fieldConfig)||void 0===s?void 0:s.maxDate}}),i(y,{fullWidth:!0,name:"".concat(e.name,"_end"),type:"date",size:"small",label:"To",error:!(null===(c=e.validationResult)||void 0===c||!c.hasError),helperText:null===(f=e.validationResult)||void 0===f?void 0:f.message,InputLabelProps:{shrink:!0},inputProps:{min:null===(m=e.fieldConfig)||void 0===m?void 0:m.minDate,max:null===(v=e.fieldConfig)||void 0===v?void 0:v.maxDate}})]})]})},ce=u(m)({display:"flex",flexDirection:"column",gap:"8px"}),fe=u(m)({display:"inline-flex",flex:"0 0 auto",justifyContent:"center",alignItems:"center","&:not(.disabled-size)":{width:"40px",height:"40px"}}),me=u("ul")({paddingLeft:"1.7rem",marginBottom:0,li:{position:"relative",textAlign:"justify","&::before":{content:'"►"',display:"block",position:"absolute",top:"50%",right:"calc(100% + 6px)",transform:"translateY(-50%)",fontSize:"0.9em"}}});export{Q as ClearAllButton,K as DateLogicToggle,O as DateRangeLogicToggle,X as FilterButton,q as FilterInput,G as FilterInputAdornment,_ as FilterLogicToggle,$ as FilterNotes,ue as MenuWithTypeDate,se as MenuWithTypeDateRange,le as MenuWithTypeSelect,ae as MenuWithTypeSelectMulti,re as MenuWithTypeString,oe as PanelNotFound,Z as SortButton,H as mapSortConfigs};
2
+ //# sourceMappingURL=ui.units.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui.units.js","sources":["../../../src/data-view/ui.units.tsx"],"sourcesContent":["import React, { FC, ReactNode, useRef, useState } from 'react'\r\nimport { Box, Button, ButtonGroup, ButtonProps, Fade, IconButton, InputBaseProps, Typography } from '@mui/material'\r\nimport { FormControlLabel, FormGroup, Radio, RadioGroup, TextField, colors, styled } from '@mui/material'\r\nimport { ToggleButton, Tooltip, ToggleButtonGroup, Checkbox, IconButtonProps, InputAdornment, InputBase } from '@mui/material'\r\nimport CloseIcon from '@mui/icons-material/Close'\r\nimport ShuffleIcon from '@mui/icons-material/Shuffle'\r\nimport ClearAllIcon from '@mui/icons-material/ClearAll'\r\nimport FilterListIcon from '@mui/icons-material/FilterList'\r\nimport ArrowUpwardIcon from '@mui/icons-material/ArrowUpward'\r\nimport ArrowDownwardIcon from '@mui/icons-material/ArrowDownward'\r\nimport KeyboardReturnIcon from '@mui/icons-material/KeyboardReturn'\r\nimport KeyboardArrowDownIcon from '@mui/icons-material/KeyboardArrowDown'\r\nimport { mapDataViewContext } from './context'\r\nimport { IFilterLogic, IFilterDateLogic, IFilterDateRangeLogic, IFilterSelectDef, IValidationResult, IFilterDateDef, IFilterBasicDef } from './types'\r\nimport RichTooltip, { HelpOutlinePulseIcon } from '../components/rich-tooltip'\r\nimport { createFilterStore } from './filter-store'\r\n\r\nexport const mapSortConfigs: Record<'asc' | 'desc', { title: string; icon: ReactNode }> = {\r\n asc: { title: 'Ascending', icon: <ArrowUpwardIcon fontSize='small' /> },\r\n desc: { title: 'Descending', icon: <ArrowDownwardIcon fontSize='small' /> }\r\n}\r\n\r\n//#region Toggle Components\r\nexport interface IFilterLogicToggleProps {\r\n value?: IFilterLogic\r\n onChange?: (event: React.MouseEvent<HTMLElement>, value: IFilterLogic) => void\r\n}\r\n\r\nexport const FilterLogicToggle: FC<IFilterLogicToggleProps> = (props) => {\r\n const handleChange = (event: React.MouseEvent<HTMLElement>, newValue: string | null) => {\r\n if (newValue && props.onChange) {\r\n props.onChange(event, newValue as IFilterLogic)\r\n }\r\n }\r\n\r\n return (\r\n <ToggleButtonGroupCustom size='small' value={props.value || 'and'} exclusive onChange={handleChange}>\r\n <ToggleButton size='small' value='and' aria-label='and logic'>\r\n AND\r\n </ToggleButton>\r\n <ToggleButton size='small' value='or' aria-label='or logic'>\r\n OR\r\n </ToggleButton>\r\n </ToggleButtonGroupCustom>\r\n )\r\n}\r\n\r\nexport interface IDateLogicToggleProps {\r\n value?: IFilterDateLogic\r\n onChange?: (event: React.MouseEvent<HTMLElement>, value: IFilterDateLogic) => void\r\n}\r\n\r\nexport const DateLogicToggle: FC<IDateLogicToggleProps> = (props) => {\r\n const handleChange = (event: React.MouseEvent<HTMLElement>, newValue: string | null) => {\r\n if (newValue && props.onChange) {\r\n props.onChange(event, newValue as IFilterDateLogic)\r\n }\r\n }\r\n\r\n return (\r\n <ToggleButtonGroupCustom size='small' value={props.value || 'before'} exclusive onChange={handleChange}>\r\n <ToggleButton size='small' value='before' aria-label='before date'>\r\n before\r\n </ToggleButton>\r\n <ToggleButton size='small' value='after' aria-label='after date'>\r\n after\r\n </ToggleButton>\r\n </ToggleButtonGroupCustom>\r\n )\r\n}\r\n\r\nexport interface IDateRangeLogicToggleProps {\r\n value?: IFilterDateRangeLogic\r\n onChange?: (event: React.MouseEvent<HTMLElement>, value: IFilterDateRangeLogic) => void\r\n}\r\n\r\nexport const DateRangeLogicToggle: FC<IDateRangeLogicToggleProps> = (props) => {\r\n const handleChange = (event: React.MouseEvent<HTMLElement>, newValue: string | null) => {\r\n if (newValue && props.onChange) {\r\n props.onChange(event, newValue as IFilterDateRangeLogic)\r\n }\r\n }\r\n\r\n return (\r\n <ToggleButtonGroupCustom size='small' value={props.value || 'between'} exclusive onChange={handleChange}>\r\n <ToggleButton size='small' value='between' aria-label='between dates'>\r\n between\r\n </ToggleButton>\r\n <ToggleButton size='small' value='not-between' aria-label='not between dates'>\r\n not between\r\n </ToggleButton>\r\n </ToggleButtonGroupCustom>\r\n )\r\n}\r\n\r\nconst ToggleButtonGroupCustom = styled(ToggleButtonGroup)({\r\n '& .MuiToggleButton-root': {\r\n color: '#fff',\r\n borderColor: 'rgba(255, 255, 255, 0.3)',\r\n fontSize: '0.65rem',\r\n fontWeight: 600,\r\n lineHeight: 1,\r\n minWidth: '40px',\r\n padding: '6px 8px',\r\n '&.Mui-selected': {\r\n backgroundColor: '#1976d2',\r\n color: '#fff',\r\n '&:hover': {\r\n backgroundColor: '#1565c0'\r\n }\r\n },\r\n '&:hover': {\r\n backgroundColor: 'rgba(255, 255, 255, 0.08)'\r\n }\r\n }\r\n})\r\n//#endregion\r\n\r\n//#region Notes\r\nexport interface IFilterNotesProps {\r\n title?: string\r\n items?: string[]\r\n disabledSize?: boolean\r\n renderContent?: () => ReactNode\r\n}\r\n\r\nconst HelpTooltipContent: FC<{ items: string[] }> = (props) => (\r\n <WrapList>\r\n {props.items.map((item, index) => (\r\n <Typography key={index} component='li' variant='body2'>\r\n {item}\r\n </Typography>\r\n ))}\r\n </WrapList>\r\n)\r\n\r\nexport const FilterNotes: FC<IFilterNotesProps> = (props) => (\r\n <WrapIcon className={props.disabledSize === true ? 'disabled-size' : ''}>\r\n <RichTooltip\r\n panel={{\r\n title: props.title ?? 'The search includes',\r\n content: props.renderContent ? props.renderContent() : <HelpTooltipContent items={props.items ?? []} />\r\n }}\r\n >\r\n <HelpOutlinePulseIcon fontSize='small' />\r\n </RichTooltip>\r\n </WrapIcon>\r\n)\r\n//#endregion\r\n\r\n//#region Input\r\nexport const FilterInput = React.forwardRef<HTMLInputElement, InputBaseProps>((props, ref) => {\r\n return <InputBase fullWidth autoComplete='off' size='small' {...props} inputRef={ref} />\r\n})\r\n\r\ninterface IFilterInputAdornmentProps {\r\n notes?: IFilterNotesProps\r\n keyword?: string\r\n onClear: IconButtonProps['onClick']\r\n onEnterSearch: ButtonProps['onClick']\r\n}\r\n\r\nexport const FilterInputAdornment: FC<IFilterInputAdornmentProps> = (props) => (\r\n <InputAdornment position='end'>\r\n {props.keyword && (\r\n <>\r\n <HelpButton size='small' color='primary' onClick={props.onEnterSearch} sx={{ display: { xs: 'none', md: 'flex' } }}>\r\n <Typography variant='caption'>\r\n Type and hit <b>Enter ⏎</b> to filter.\r\n </Typography>\r\n </HelpButton>\r\n <Tooltip title='Press Enter to filter' placement='bottom' arrow>\r\n <IconButton size='small' color='primary' sx={{ display: { xs: 'flex', md: 'none' } }} onClick={props.onEnterSearch}>\r\n <KeyboardReturnIcon fontSize='small' />\r\n </IconButton>\r\n </Tooltip>\r\n </>\r\n )}\r\n {props.keyword && (\r\n <Tooltip title='Press Esc to clear' placement='bottom' arrow>\r\n <IconButton size='small' sx={{ marginLeft: '8px', color: 'text.error', '&:hover': { color: 'error.main' } }} onClick={props.onClear}>\r\n <CloseIcon fontSize='small' />\r\n </IconButton>\r\n </Tooltip>\r\n )}\r\n {props.notes && <FilterNotes {...props.notes} />}\r\n </InputAdornment>\r\n)\r\n\r\nconst HelpButton = styled(Button)({\r\n padding: '4px 6px',\r\n textTransform: 'none',\r\n lineHeight: 1,\r\n '.MuiTypography-root': {\r\n fontWeight: 600,\r\n b: {\r\n fontWeight: 700,\r\n backgroundColor: colors.blue[100],\r\n borderRadius: '4px',\r\n padding: '2px 4px'\r\n }\r\n }\r\n})\r\n//#endregion\r\n\r\n//#region Button\r\nexport interface IButtonClearProps {\r\n visibled?: boolean\r\n onClick: IconButtonProps['onClick']\r\n}\r\n\r\nexport const ButtonClear: FC<IButtonClearProps> = (props) => (\r\n <WrapIcon>\r\n <Tooltip title='Remove filter'>\r\n <Fade in={props.visibled} unmountOnExit>\r\n <IconButton size='small' onClick={props.onClick}>\r\n <CloseIcon fontSize='small' />\r\n </IconButton>\r\n </Fade>\r\n </Tooltip>\r\n </WrapIcon>\r\n)\r\n\r\nexport const ClearAllButton = React.forwardRef<HTMLButtonElement, ButtonProps>(({ children, ...props }, ref) => (\r\n <ClearButtonStyled size='small' color='error' startIcon={<ClearAllIcon />} ref={ref} {...props}>\r\n {children || 'Clear all'}\r\n </ClearButtonStyled>\r\n))\r\n\r\nconst ClearButtonStyled = styled(Button)({ textTransform: 'none', fontWeight: 700 })\r\n\r\nexport const FilterButton = React.forwardRef<HTMLButtonElement, IconButtonProps>((props, ref) => (\r\n <IconButton ref={ref} size='small' sx={{ flex: '0 0 auto' }} {...props}>\r\n <FilterListIcon />\r\n </IconButton>\r\n))\r\n\r\nexport const SortIconButton = React.forwardRef<HTMLButtonElement, IconButtonProps>((props, ref) => (\r\n <IconButton ref={ref} size='small' sx={{ flex: '0 0 auto' }} {...props}>\r\n <ShuffleIcon />\r\n </IconButton>\r\n))\r\n\r\nexport const SortButton: FC<ButtonProps> = (props) => {\r\n const timeoutRef = useRef<NodeJS.Timeout | null>(null)\r\n const debounceDelay = 500\r\n return (\r\n <>\r\n {mapDataViewContext((context) => {\r\n const { filterState, filterBarConfigs: configs } = context\r\n const config: Partial<{ title: string; icon: ReactNode }> = filterState.sort ? mapSortConfigs[filterState.sort?.direction] : {}\r\n const fieldConfig = configs.fields?.[filterState.sort?.field as any]\r\n const text = fieldConfig?.label || filterState.sort?.field?.toString() || configs.sortButton?.text\r\n // Debounce logic to prevent rapid/continuous calls\r\n const handleSortButtonClick = () => {\r\n if (!filterState.sort?.field) return\r\n const currentDirection = filterState.sort?.direction\r\n const newDirection: 'asc' | 'desc' = currentDirection ? (currentDirection === 'asc' ? 'desc' : 'asc') : 'asc'\r\n const newSort = { field: filterState.sort.field, direction: newDirection }\r\n const store = createFilterStore(filterState).changeSort(newSort, { area: 'sortButton' })\r\n context.onFilterStateChange(store.build())\r\n }\r\n\r\n const handlePopperPanelChange = (e: React.MouseEvent<HTMLButtonElement>) => {\r\n e.stopPropagation()\r\n timeoutRef.current && clearTimeout(timeoutRef.current)\r\n timeoutRef.current = setTimeout(() => handleSortButtonClick(), debounceDelay)\r\n }\r\n\r\n if (text) {\r\n return (\r\n <ButtonGroup aria-label='Button Sort' size='small'>\r\n <SortButtonStyled\r\n size='small'\r\n color='inherit'\r\n startIcon={config.icon || <ShuffleIcon fontSize='small' />}\r\n onClick={handlePopperPanelChange}\r\n {...configs.sortButton?.wrapProps}\r\n {...props}\r\n >\r\n {text}\r\n </SortButtonStyled>\r\n <SortButtonStyled\r\n size='small'\r\n color='inherit'\r\n sx={{ p: 0 }}\r\n onClick={(e) => context.onPopperPanelChange(e.currentTarget, 'sortButton')}\r\n >\r\n <KeyboardArrowDownIcon fontSize='small' />\r\n </SortButtonStyled>\r\n </ButtonGroup>\r\n )\r\n }\r\n\r\n return (\r\n <SortButtonStyled\r\n size='small'\r\n color='inherit'\r\n startIcon={config.icon || <ShuffleIcon fontSize='small' />}\r\n endIcon={configs.sortButton?.icon ?? <KeyboardArrowDownIcon fontSize='small' />}\r\n onClick={(e) => context.onPopperPanelChange(e.currentTarget, 'sortButton')}\r\n {...configs.sortButton?.wrapProps}\r\n {...props}\r\n >\r\n {text || 'Sort'}\r\n </SortButtonStyled>\r\n )\r\n })}\r\n </>\r\n )\r\n}\r\n\r\nconst SortButtonStyled = styled(Button)(({ theme }) => ({\r\n height: 'var(--filter-bar-height, 40px)',\r\n padding: '0 16px',\r\n backgroundColor: theme.palette.mode === 'dark' ? theme.palette.background.paper : theme.palette.grey[50],\r\n border: '1px solid var(--color-divider, rgba(145 158 171 / 20%))',\r\n textTransform: 'none',\r\n fontWeight: 600,\r\n ':hover': {\r\n backgroundColor: theme.palette.mode === 'dark' ? theme.palette.grey[800] : colors.grey[100]\r\n }\r\n}))\r\n//#endregion\r\n\r\n//#region Panel Not Found\r\nexport const PanelNotFound: FC<{ area?: string }> = ({ area }) => (\r\n <Box sx={{ padding: '8px', textAlign: 'center', border: '1px solid #ddd', borderRadius: '4px' }}>\r\n <Typography variant='body2' sx={{ padding: '8px' }}>\r\n No panel available for area: {area}\r\n </Typography>\r\n </Box>\r\n)\r\n//#endregion\r\n\r\n//#region Form\r\ninterface IFormContentProps {\r\n label: string\r\n notes?: any\r\n children?: React.ReactNode\r\n afterTopBar?: React.ReactNode\r\n}\r\n\r\nconst FormContent: FC<IFormContentProps> = ({ label, notes, children, afterTopBar }) => (\r\n <FormContentWrapper>\r\n <Box className='top-bar'>\r\n <Typography variant='subtitle2'>{label}</Typography>\r\n {afterTopBar && <Box className='after-top-bar'>{afterTopBar}</Box>}\r\n {notes && <FilterNotes title={`The ${label} includes`} disabledSize {...notes} />}\r\n </Box>\r\n <Box className='content'>{children}</Box>\r\n </FormContentWrapper>\r\n)\r\n\r\nconst FormContentWrapper = styled(Box)({\r\n minWidth: '200px',\r\n borderRadius: '4px',\r\n overflow: 'hidden',\r\n '.top-bar': {\r\n display: 'flex',\r\n alignItems: 'center',\r\n background: colors.grey[900],\r\n padding: '8px',\r\n gap: '8px',\r\n '.MuiTypography-root': {\r\n color: colors.common.white,\r\n flex: 1\r\n }\r\n },\r\n '.after-top-bar': {\r\n marginLeft: '8px'\r\n },\r\n '.content': {\r\n padding: '8px'\r\n }\r\n})\r\n//#endregion\r\n\r\n//#region Menu - String Type\r\ninterface IMenuWithTypeBaseProps {\r\n name: string\r\n validationResult?: IValidationResult\r\n}\r\n\r\ninterface IMenuWithTypeStringProps extends IMenuWithTypeBaseProps {\r\n fieldConfig?: IFilterBasicDef\r\n}\r\n\r\nexport const MenuWithTypeString: FC<IMenuWithTypeStringProps> = (props) => {\r\n const label = props.fieldConfig?.label ?? props.name\r\n return (\r\n <FormContent label={label} notes={props.fieldConfig?.notes}>\r\n <TextField\r\n autoFocus\r\n name={props.name}\r\n size='small'\r\n fullWidth\r\n error={!!props.validationResult?.hasError}\r\n helperText={props.validationResult?.message}\r\n sx={{ '.MuiInputBase-root': { minHeight: '42px' } }}\r\n />\r\n </FormContent>\r\n )\r\n}\r\n//#endregion\r\n\r\n//#region Menu - Select Type\r\nexport interface IMenuWithTypeSelectProps extends IMenuWithTypeBaseProps {\r\n fieldConfig?: IFilterSelectDef\r\n onChange?: (event: React.ChangeEvent<HTMLInputElement>) => void\r\n}\r\n\r\nexport const MenuWithTypeSelect: FC<IMenuWithTypeSelectProps> = (props) => {\r\n const label = props.fieldConfig?.label ?? props.name\r\n return (\r\n <FormContent label={label} notes={props.fieldConfig?.notes}>\r\n <CustomRadioGroup name={props.name} className={props.validationResult?.hasError ? 'error' : ''} onChange={props.onChange}>\r\n {props.fieldConfig?.options.map((x, i) => (\r\n <FormControlLabel key={x.value.toString() + i} value={x.value} control={<Radio />} label={x.label ?? x.value} />\r\n ))}\r\n </CustomRadioGroup>\r\n </FormContent>\r\n )\r\n}\r\n\r\nconst CustomRadioGroup = styled(RadioGroup)({\r\n marginLeft: '-8px',\r\n marginRight: '-8px',\r\n '&.error .MuiRadio-root': {\r\n color: '#d32f2f'\r\n },\r\n '.MuiFormControlLabel-root': {\r\n margin: 0\r\n },\r\n '.MuiFormControlLabel-root:hover': {\r\n backgroundColor: 'rgba(25, 118, 210, 0.04)'\r\n }\r\n})\r\n//#endregion\r\n\r\n//#region Menu - Select Multi Type\r\nexport interface IMenuWithTypeSelectMultiProps extends IMenuWithTypeBaseProps {\r\n fieldConfig?: IFilterSelectDef\r\n onChange?: (event: React.SyntheticEvent, checked: boolean) => void\r\n}\r\n\r\nexport const MenuWithTypeSelectMulti: FC<IMenuWithTypeSelectMultiProps> = (props) => {\r\n const [filterLogic, setFilterLogic] = useState<IFilterLogic>('and')\r\n const label = props.fieldConfig?.label ?? props.name\r\n return (\r\n <FormContent\r\n label={label}\r\n notes={props.fieldConfig?.notes}\r\n afterTopBar={<FilterLogicToggle value={filterLogic} onChange={(_, value) => setFilterLogic(value)} />}\r\n >\r\n {/* Hidden input for logic value */}\r\n <input type='hidden' name='filterLogic' value={filterLogic} />\r\n <CustomFormGroup className={props.validationResult?.hasError ? 'error' : ''}>\r\n {props.fieldConfig?.options.map((x, i) => (\r\n <FormControlLabel\r\n key={x.value.toString() + i}\r\n value={x.value}\r\n control={<Checkbox name={props.name} />}\r\n label={x.label ?? x.value}\r\n onChange={props.onChange}\r\n />\r\n ))}\r\n </CustomFormGroup>\r\n </FormContent>\r\n )\r\n}\r\n\r\nconst CustomFormGroup = styled(FormGroup)({\r\n marginLeft: '-8px',\r\n marginRight: '-8px',\r\n '&.error .MuiCheckbox-root': {\r\n color: '#d32f2f'\r\n },\r\n '.MuiFormControlLabel-root': {\r\n margin: 0\r\n },\r\n '.MuiFormControlLabel-root:hover': {\r\n backgroundColor: 'rgba(25, 118, 210, 0.04)'\r\n }\r\n})\r\n//#endregion\r\n\r\nfunction convertDateToCustomFormat(dateString: string): string {\r\n if (!dateString || !/^\\d{4}-\\d{2}-\\d{2}$/.test(dateString)) return ''\r\n return `${dateString}T00:00:00.0000000`\r\n}\r\n//#region Menu - Date Type\r\nexport interface IMenuWithTypeDateProps extends IMenuWithTypeBaseProps {\r\n fieldConfig?: IFilterDateDef\r\n}\r\n\r\nexport const MenuWithTypeDate: FC<IMenuWithTypeDateProps> = (props) => {\r\n const [dateLogic, setDateLogic] = useState<IFilterDateLogic>('before')\r\n const [value, setValue] = useState<string>('')\r\n const label = props.fieldConfig?.label ?? props.name\r\n return (\r\n <FormContent\r\n label={label}\r\n notes={props.fieldConfig?.notes}\r\n afterTopBar={<DateLogicToggle value={dateLogic} onChange={(_, value) => setDateLogic(value)} />}\r\n >\r\n <Box className='content'>\r\n {/* Hidden input for logic value */}\r\n <input type='hidden' name='dateLogic' value={dateLogic} />\r\n <input hidden type='text' name={props.name} readOnly value={convertDateToCustomFormat(value)} />\r\n <TextField\r\n autoFocus\r\n fullWidth\r\n type='date'\r\n size='small'\r\n value={value}\r\n onChange={(event) => setValue(event.target.value)}\r\n error={!!props.validationResult?.hasError}\r\n helperText={props.validationResult?.message}\r\n inputProps={{ min: props.fieldConfig?.minDate, max: props.fieldConfig?.maxDate }}\r\n sx={{ '.MuiInputBase-root': { minHeight: '42px' } }}\r\n />\r\n </Box>\r\n </FormContent>\r\n )\r\n}\r\n//#endregion\r\n\r\n//#region Menu - Date Range Type\r\nexport interface IMenuWithTypeDateRangeProps extends IMenuWithTypeBaseProps {\r\n fieldConfig?: IFilterDateDef\r\n}\r\n\r\nexport const MenuWithTypeDateRange: FC<IMenuWithTypeDateRangeProps> = (props) => {\r\n const [dateRangeLogic, setDateRangeLogic] = useState<IFilterDateRangeLogic>('between')\r\n const label = props.fieldConfig?.label ?? props.name\r\n return (\r\n <FormContent\r\n label={label}\r\n notes={props.fieldConfig?.notes}\r\n afterTopBar={<DateRangeLogicToggle value={dateRangeLogic} onChange={(_, value) => setDateRangeLogic(value)} />}\r\n >\r\n {/* Hidden input for logic value */}\r\n <input type='hidden' name='dateRangeLogic' value={dateRangeLogic} />\r\n <DateRangeContainer>\r\n <TextField\r\n autoFocus\r\n fullWidth\r\n name={`${props.name}_start`}\r\n type='date'\r\n size='small'\r\n label='From'\r\n error={!!props.validationResult?.hasError}\r\n sx={{ marginBottom: 1 }}\r\n InputLabelProps={{ shrink: true }}\r\n inputProps={{ min: props.fieldConfig?.minDate, max: props.fieldConfig?.maxDate }}\r\n />\r\n <TextField\r\n fullWidth\r\n name={`${props.name}_end`}\r\n type='date'\r\n size='small'\r\n label='To'\r\n error={!!props.validationResult?.hasError}\r\n helperText={props.validationResult?.message}\r\n InputLabelProps={{ shrink: true }}\r\n inputProps={{ min: props.fieldConfig?.minDate, max: props.fieldConfig?.maxDate }}\r\n />\r\n </DateRangeContainer>\r\n </FormContent>\r\n )\r\n}\r\n\r\nconst DateRangeContainer = styled(Box)({\r\n display: 'flex',\r\n flexDirection: 'column',\r\n gap: '8px'\r\n})\r\n//#endregion\r\n\r\n//#region Styled\r\nconst WrapIcon = styled(Box)({\r\n display: 'inline-flex',\r\n flex: '0 0 auto',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n '&:not(.disabled-size)': {\r\n width: '40px',\r\n height: '40px'\r\n }\r\n})\r\n\r\nconst WrapList = styled('ul')({\r\n paddingLeft: '1.7rem',\r\n marginBottom: 0,\r\n li: {\r\n position: 'relative',\r\n textAlign: 'justify',\r\n '&::before': {\r\n content: '\"►\"',\r\n display: 'block',\r\n position: 'absolute',\r\n top: '50%',\r\n right: 'calc(100% + 6px)',\r\n transform: 'translateY(-50%)',\r\n fontSize: '0.9em'\r\n }\r\n }\r\n})\r\n//#endregion\r\n"],"names":["mapSortConfigs","asc","title","icon","_jsx","ArrowUpwardIcon","fontSize","desc","ArrowDownwardIcon","FilterLogicToggle","props","_jsxs","ToggleButtonGroupCustom","size","value","exclusive","onChange","event","newValue","children","ToggleButton","DateLogicToggle","DateRangeLogicToggle","styled","ToggleButtonGroup","color","borderColor","fontWeight","lineHeight","minWidth","padding","backgroundColor","HelpTooltipContent","WrapList","items","map","item","index","Typography","component","variant","FilterNotes","_props$title","_props$items","WrapIcon","className","disabledSize","RichTooltip","panel","content","renderContent","HelpOutlinePulseIcon","FilterInput","React","forwardRef","ref","InputBase","_objectSpread","fullWidth","autoComplete","inputRef","FilterInputAdornment","InputAdornment","position","keyword","_Fragment","HelpButton","onClick","onEnterSearch","sx","display","xs","md","Tooltip","placement","arrow","IconButton","KeyboardReturnIcon","marginLeft","onClear","CloseIcon","notes","Button","textTransform","b","colors","blue","borderRadius","ClearAllButton","_ref","_objectWithoutProperties","_excluded","ClearButtonStyled","startIcon","ClearAllIcon","FilterButton","flex","FilterListIcon","SortButton","timeoutRef","useRef","mapDataViewContext","context","_filterState$sort","_configs$fields","_filterState$sort2","_filterState$sort3","_configs$sortButton","_configs$sortButton$i","_configs$sortButton3","_configs$sortButton4","_configs$sortButton2","filterState","configs","filterBarConfigs","config","sort","direction","fieldConfig","fields","field","text","label","toString","sortButton","ButtonGroup","SortButtonStyled","ShuffleIcon","e","stopPropagation","current","clearTimeout","setTimeout","_filterState$sort4","_filterState$sort5","currentDirection","newDirection","newSort","store","createFilterStore","changeSort","area","onFilterStateChange","build","handleSortButtonClick","wrapProps","p","onPopperPanelChange","currentTarget","KeyboardArrowDownIcon","endIcon","_ref2","theme","height","palette","mode","background","paper","grey","border","PanelNotFound","_ref3","Box","textAlign","FormContent","_ref4","afterTopBar","FormContentWrapper","concat","overflow","alignItems","gap","common","white","MenuWithTypeString","_props$fieldConfig$la","_props$fieldConfig","_props$fieldConfig2","_props$validationResu","_props$validationResu2","name","TextField","autoFocus","error","validationResult","hasError","helperText","message","minHeight","MenuWithTypeSelect","_props$fieldConfig$la2","_props$fieldConfig3","_props$fieldConfig4","_props$validationResu3","_props$fieldConfig5","CustomRadioGroup","options","x","i","_x$label","FormControlLabel","control","Radio","RadioGroup","marginRight","margin","MenuWithTypeSelectMulti","_props$fieldConfig$la3","_props$fieldConfig6","_props$fieldConfig7","_props$validationResu4","_props$fieldConfig8","_useState","useState","_useState2","_slicedToArray","filterLogic","setFilterLogic","_","type","CustomFormGroup","_x$label2","Checkbox","FormGroup","MenuWithTypeDate","_props$fieldConfig$la4","_props$fieldConfig9","_props$fieldConfig0","_props$validationResu5","_props$validationResu6","_props$fieldConfig1","_props$fieldConfig10","dateString","_useState3","_useState4","dateLogic","setDateLogic","_useState5","_useState6","setValue","hidden","readOnly","test","target","inputProps","min","minDate","max","maxDate","MenuWithTypeDateRange","_props$fieldConfig$la5","_props$fieldConfig11","_props$fieldConfig12","_props$validationResu7","_props$fieldConfig13","_props$fieldConfig14","_props$validationResu8","_props$validationResu9","_props$fieldConfig15","_props$fieldConfig16","_useState7","_useState8","dateRangeLogic","setDateRangeLogic","DateRangeContainer","marginBottom","InputLabelProps","shrink","flexDirection","justifyContent","width","paddingLeft","li","top","right","transform"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import{inherits as r,createClass as o,objectWithoutProperties as e,objectSpread2 as t,classCallCheck as i,callSuper as n,defineProperty as a}from"../../_virtual/_rollupPluginBabelHelpers.js";import{jsx as s}from"react/jsx-runtime";import{memo as l,Component as u}from"react";import{styled as d,colors as c,Grid as p,Typography as m}from"@mui/material";import{DataGrid as f}from"@mui/x-data-grid";var g=["Element"],b=["Element"],v=function(){return s(m,{variant:"subtitle1",color:"textSecondary",children:"No items to display"})};function h(){return l(function(){function a(r){var o;return i(this,a),(o=n(this,a,[r])).ElementComponent=r.configs.Element||v,o}return r(a,u),o(a,[{key:"shouldComponentUpdate",value:function(r){var o=this.props.configs,t=o.Element,i=e(o,g),n=r.configs,a=n.Element,s=e(n,b);t!==a&&(this.ElementComponent=r.configs.Element||v);var l=JSON.stringify(i)!==JSON.stringify(s);return JSON.stringify(this.props.data)!==JSON.stringify(r.data)||l}},{key:"render",value:function(){var r=this.ElementComponent,o=this.props,e=o.data,i=o.configs,n=i.size||{xs:12,sm:6,md:4,lg:3};return s(p,t(t({container:!0,spacing:i.spacing||0},i.wrapProps),{},{children:e.map((function(o,e){var a=i.getElementId?i.getElementId(o):e.toString(),l=i.elementWrapPropsGetter?i.elementWrapPropsGetter({data:o,index:e}):i.elementWrapProps||{};return s(p,t(t(t({item:!0},n),l),{},{children:s(r,{data:o,index:e})}),a)}))}))}}])}())}function y(){var e=function(r){var o,e=null!==(o=null==r?void 0:r.columns)&&void 0!==o?o:{};return Object.keys(e).map((function(r){var o=e[r];return t({field:String(r),sortable:!1},o)}))};return l(function(){function l(r){var o;return i(this,l),o=n(this,l,[r]),a(o,"columns",[]),o.columns=e(r.configs),o}return r(l,u),o(l,[{key:"shouldComponentUpdate",value:function(r){var o=JSON.stringify(this.props.value)!==JSON.stringify(r.value),t=JSON.stringify(this.props.configs)!==JSON.stringify(r.configs);return t&&(this.columns=e()),o||t}},{key:"render",value:function(){var r,o,e,i,n;if(this.props.configs&&Object.keys(null!==(r=null===(o=this.props.configs)||void 0===o?void 0:o.columns)&&void 0!==r?r:{}).length>0){var a=this.props.value;return s(x,t({hideFooter:!0,disableColumnFilter:!0,disableColumnMenu:!0,getRowId:null===(e=this.props.configs)||void 0===e?void 0:e.getRowId,rows:a,rowHeight:null===(i=this.props.configs)||void 0===i?void 0:i.rowHeight,columnHeaderHeight:48,getRowSpacing:function(r){return{top:r.isFirstVisible?8:4,bottom:4}},columns:this.columns,disableColumnSelector:!0},null===(n=this.props.slots)||void 0===n?void 0:n.dataGridProps))}}}])}())}var x=d(f)((function(r){var o=r.theme;return{"*":{boxSizing:"border-box"},"--custom-border-color":"rgba(145, 158, 171, 0.16)","--custom-bg-color":o.palette.background.paper,"--DataGrid-rowBorderColor":"transparent",borderColor:"transparent",".MuiDataGrid-cell":{"--rowBorderColor":"transparent",display:"flex",alignItems:"center"},".MuiDataGrid-cell:focus, .MuiDataGrid-columnHeader:focus":{outline:"none"},".MuiDataGrid-cell:focus-within, .MuiDataGrid-columnHeader:focus-within":{outline:"none"},".MuiDataGrid-cell.Mui-focusVisible, .MuiDataGrid-columnHeader.Mui-focusVisible":{outline:"none"},".MuiDataGrid-columnHeaders":{backgroundColor:c.grey[50],borderColor:"transparent",borderRadius:"6px"},".MuiDataGrid-virtualScrollerContent":{".MuiDataGrid-row":{borderRadius:"6px",border:"none",transition:"all 0.2s ease",backgroundColor:"var(--custom-bg-color)",".MuiDataGrid-cell":{backgroundColor:"var(--custom-bg-color)",border:"none",borderTop:"1px dashed var(--custom-border-color)",borderBottom:"1px dashed var(--custom-border-color)","&:first-of-type":{borderLeft:"1px dashed var(--custom-border-color)",borderRadius:"6px 0 0 6px"},"&:last-of-type":{borderRight:"1px dashed var(--custom-border-color)",borderRadius:"0 6px 6px 0"}},"&:hover":{"--custom-border-color":o.palette.divider,"--custom-bg-color":c.grey[50],transform:"translateY(-1px)",boxShadow:"rgba(99, 99, 99, 0.1) 0px 2px 8px 0px",".MuiDataGrid-cell":{borderTopStyle:"solid",borderBottomStyle:"solid","&:first-of-type":{borderLeftStyle:"solid"},"&:last-of-type":{borderRightStyle:"solid"}}}}}}}));export{y as createViewModeList,h as createViewModeModule};
2
+ //# sourceMappingURL=view-mode.content.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"view-mode.content.js","sources":["../../../src/data-view/view-mode.content.tsx"],"sourcesContent":["import { Component, ComponentType, FC, memo } from 'react'\r\nimport { Typography, Grid, styled, colors } from '@mui/material'\r\nimport { DataGrid, DataGridProps, GridColDef, GridRowIdGetter, GridValidRowModel } from '@mui/x-data-grid'\r\nimport { GridColsDef, IViewModeListConfig, IViewModeModuleConfig, IViewModeValidModel } from './view-mode.types'\r\n\r\n//#region Mode Module\r\nconst EmptyModule: FC = () => (\r\n <Typography variant='subtitle1' color='textSecondary'>\r\n No items to display\r\n </Typography>\r\n)\r\n\r\nexport interface IViewModeModuleProps<T extends IViewModeValidModel> {\r\n data: T[]\r\n configs: IViewModeModuleConfig<T>\r\n}\r\n\r\nexport function createViewModeModule<T extends IViewModeValidModel>(): ComponentType<IViewModeModuleProps<T>> {\r\n class ViewModeModule extends Component<IViewModeModuleProps<T>> {\r\n private ElementComponent\r\n constructor(props: IViewModeModuleProps<T>) {\r\n super(props)\r\n this.ElementComponent = props.configs.Element || EmptyModule\r\n }\r\n\r\n shouldComponentUpdate(nextProps: Readonly<IViewModeModuleProps<T>>): boolean {\r\n const { Element: currentElement, ...currentConfig } = this.props.configs\r\n const { Element: nextElement, ...nextConfigs } = nextProps.configs\r\n const checkElementDiff = currentElement !== nextElement\r\n if (checkElementDiff) {\r\n this.ElementComponent = nextProps.configs.Element || EmptyModule\r\n }\r\n\r\n const checkConfigsDiff = JSON.stringify(currentConfig) !== JSON.stringify(nextConfigs)\r\n const checkDataDiff = JSON.stringify(this.props.data) !== JSON.stringify(nextProps.data)\r\n return checkDataDiff || checkConfigsDiff\r\n }\r\n\r\n render() {\r\n const { ElementComponent } = this\r\n const { data, configs } = this.props\r\n const size = configs.size || { xs: 12, sm: 6, md: 4, lg: 3 }\r\n return (\r\n <Grid container spacing={configs.spacing || 0} {...configs.wrapProps}>\r\n {data.map((item, index) => {\r\n const key = configs.getElementId ? configs.getElementId(item) : index.toString()\r\n const itemProps = configs.elementWrapPropsGetter ? configs.elementWrapPropsGetter({ data: item, index }) : configs.elementWrapProps || {}\r\n return (\r\n <Grid item key={key} {...size} {...itemProps}>\r\n <ElementComponent data={item} index={index} />\r\n </Grid>\r\n )\r\n })}\r\n </Grid>\r\n )\r\n }\r\n }\r\n\r\n return memo(ViewModeModule)\r\n}\r\n//#endregion\r\n\r\n//#region View Mode List\r\nexport interface IViewModeListProps<T extends IViewModeValidModel> {\r\n value: T[]\r\n configs: IViewModeListConfig<T>\r\n slots?: {\r\n dataGridProps?: Partial<Omit<DataGridProps, 'columns' | 'rows'>>\r\n }\r\n}\r\n\r\nexport function createViewModeList<T extends IViewModeValidModel>(): ComponentType<IViewModeListProps<T>> {\r\n const genarateColumns = (configs?: IViewModeListConfig<T>): GridColDef[] => {\r\n const cols: GridColsDef<T> = configs?.columns ?? {}\r\n const fields = Object.keys(cols) as (keyof T)[]\r\n return fields.map((field) => {\r\n const config = cols[field]\r\n return { field: String(field), sortable: false, ...config }\r\n })\r\n }\r\n\r\n class ViewModeList extends Component<IViewModeListProps<T>> {\r\n private columns: GridColDef[] = []\r\n constructor(props: IViewModeListProps<T>) {\r\n super(props)\r\n this.columns = genarateColumns(props.configs)\r\n }\r\n\r\n shouldComponentUpdate(nextProps: Readonly<IViewModeListProps<T>>): boolean {\r\n const checkValueDiff = JSON.stringify(this.props.value) !== JSON.stringify(nextProps.value)\r\n const checkListConfigsDiff = JSON.stringify(this.props.configs) !== JSON.stringify(nextProps.configs)\r\n if (checkListConfigsDiff) {\r\n this.columns = genarateColumns()\r\n }\r\n return checkValueDiff || checkListConfigsDiff\r\n }\r\n\r\n render() {\r\n const isRender = this.props.configs && Object.keys(this.props.configs?.columns ?? {}).length > 0\r\n if (!isRender) {\r\n return\r\n }\r\n const rows = this.props.value as GridValidRowModel[]\r\n return (\r\n <DataGridCustom\r\n hideFooter\r\n // disableColumnSorting\r\n disableColumnFilter\r\n disableColumnMenu\r\n getRowId={this.props.configs?.getRowId as GridRowIdGetter<GridValidRowModel>}\r\n rows={rows}\r\n rowHeight={this.props.configs?.rowHeight}\r\n columnHeaderHeight={48}\r\n getRowSpacing={({ isFirstVisible }) => ({ top: isFirstVisible ? 8 : 4, bottom: 4 })}\r\n columns={this.columns}\r\n disableColumnSelector\r\n {...this.props.slots?.dataGridProps}\r\n />\r\n )\r\n }\r\n }\r\n\r\n return memo(ViewModeList)\r\n}\r\n\r\nconst DataGridCustom = styled(DataGrid)(({ theme }) => ({\r\n '*': {\r\n boxSizing: 'border-box'\r\n },\r\n '--custom-border-color': 'rgba(145, 158, 171, 0.16)',\r\n '--custom-bg-color': theme.palette.background.paper,\r\n '--DataGrid-rowBorderColor': 'transparent',\r\n borderColor: 'transparent',\r\n '.MuiDataGrid-cell': {\r\n '--rowBorderColor': 'transparent',\r\n display: 'flex',\r\n alignItems: 'center'\r\n },\r\n '.MuiDataGrid-cell:focus, .MuiDataGrid-columnHeader:focus': {\r\n outline: 'none'\r\n },\r\n '.MuiDataGrid-cell:focus-within, .MuiDataGrid-columnHeader:focus-within': {\r\n outline: 'none'\r\n },\r\n '.MuiDataGrid-cell.Mui-focusVisible, .MuiDataGrid-columnHeader.Mui-focusVisible': {\r\n outline: 'none'\r\n },\r\n '.MuiDataGrid-columnHeaders': {\r\n backgroundColor: colors.grey[50],\r\n borderColor: 'transparent',\r\n borderRadius: '6px'\r\n },\r\n '.MuiDataGrid-virtualScrollerContent': {\r\n '.MuiDataGrid-row': {\r\n borderRadius: '6px',\r\n border: 'none',\r\n transition: 'all 0.2s ease',\r\n backgroundColor: 'var(--custom-bg-color)',\r\n '.MuiDataGrid-cell': {\r\n backgroundColor: 'var(--custom-bg-color)',\r\n border: 'none',\r\n borderTop: '1px dashed var(--custom-border-color)',\r\n borderBottom: '1px dashed var(--custom-border-color)',\r\n '&:first-of-type': {\r\n borderLeft: '1px dashed var(--custom-border-color)',\r\n borderRadius: '6px 0 0 6px'\r\n },\r\n '&:last-of-type': {\r\n borderRight: '1px dashed var(--custom-border-color)',\r\n borderRadius: '0 6px 6px 0'\r\n }\r\n },\r\n '&:hover': {\r\n '--custom-border-color': theme.palette.divider,\r\n '--custom-bg-color': colors.grey[50],\r\n transform: 'translateY(-1px)',\r\n boxShadow: 'rgba(99, 99, 99, 0.1) 0px 2px 8px 0px',\r\n '.MuiDataGrid-cell': {\r\n borderTopStyle: 'solid',\r\n borderBottomStyle: 'solid',\r\n '&:first-of-type': {\r\n borderLeftStyle: 'solid'\r\n },\r\n '&:last-of-type': {\r\n borderRightStyle: 'solid'\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}))\r\n//#endregion\r\n"],"names":["EmptyModule","_jsx","Typography","variant","color","children","createViewModeModule","memo","ViewModeModule","props","_this","_classCallCheck","_callSuper","ElementComponent","configs","Element","_inherits","Component","_createClass","key","value","nextProps","_this$props$configs","this","currentElement","currentConfig","_objectWithoutProperties","_excluded","_nextProps$configs","nextElement","nextConfigs","_excluded2","checkConfigsDiff","JSON","stringify","data","_this$props","size","xs","sm","md","lg","Grid","_objectSpread","container","spacing","wrapProps","map","item","index","getElementId","toString","itemProps","elementWrapPropsGetter","elementWrapProps","createViewModeList","genarateColumns","_configs$columns","cols","columns","Object","keys","field","config","String","sortable","ViewModeList","_this2","_defineProperty","checkValueDiff","checkListConfigsDiff","_this$props$configs$c","_this$props$configs2","_this$props$configs3","_this$props$configs4","_this$props$slots","length","rows","DataGridCustom","hideFooter","disableColumnFilter","disableColumnMenu","getRowId","rowHeight","columnHeaderHeight","getRowSpacing","_ref","top","isFirstVisible","bottom","disableColumnSelector","slots","dataGridProps","styled","DataGrid","_ref2","theme","boxSizing","palette","background","paper","borderColor","display","alignItems","outline","backgroundColor","colors","grey","borderRadius","border","transition","borderTop","borderBottom","borderLeft","borderRight","divider","transform","boxShadow","borderTopStyle","borderBottomStyle","borderLeftStyle","borderRightStyle"],"mappings":"4aAMMA,EAAkB,WAAP,OACfC,EAACC,EAAU,CAACC,QAAQ,YAAYC,MAAM,gBAAeC,SAAA,uBAExC,WAQCC,IAyCd,OAAOC,aAtCL,SAAAC,EAAYC,GAA8B,IAAAC,EAEoB,OAFpBC,OAAAH,IACxCE,EAAAE,EAAAJ,KAAAA,GAAMC,KACDI,iBAAmBJ,EAAMK,QAAQC,SAAWf,EAAWU,CAC9D,CAAC,OAAAM,EAAAR,EAL0BS,GAK1BC,EAAAV,EAAA,CAAA,CAAAW,IAAA,wBAAAC,MAED,SAAsBC,GACpB,IAAAC,EAAsDC,KAAKd,MAAMK,QAAhDU,EAAcF,EAAvBP,QAA4BU,EAAaC,EAAAJ,EAAAK,GACjDC,EAAiDP,EAAUP,QAA1Ce,EAAWD,EAApBb,QAAyBe,EAAWJ,EAAAE,EAAAG,GACnBP,IAAmBK,IAE1CN,KAAKV,iBAAmBQ,EAAUP,QAAQC,SAAWf,GAGvD,IAAMgC,EAAmBC,KAAKC,UAAUT,KAAmBQ,KAAKC,UAAUJ,GAE1E,OADsBG,KAAKC,UAAUX,KAAKd,MAAM0B,QAAUF,KAAKC,UAAUb,EAAUc,OAC3DH,CAC1B,GAAC,CAAAb,IAAA,SAAAC,MAED,WACE,IAAQP,EAAqBU,KAArBV,iBACRuB,EAA0Bb,KAAKd,MAAvB0B,EAAIC,EAAJD,KAAMrB,EAAOsB,EAAPtB,QACRuB,EAAOvB,EAAQuB,MAAQ,CAAEC,GAAI,GAAIC,GAAI,EAAGC,GAAI,EAAGC,GAAI,GACzD,OACExC,EAACyC,EAAIC,EAAAA,EAAA,CAACC,WAAU,EAAAC,QAAS/B,EAAQ+B,SAAW,GAAO/B,EAAQgC,WAAS,GAAA,CACjEzC,SAAA8B,EAAKY,KAAI,SAACC,EAAMC,GACf,IAAM9B,EAAML,EAAQoC,aAAepC,EAAQoC,aAAaF,GAAQC,EAAME,WAChEC,EAAYtC,EAAQuC,uBAAyBvC,EAAQuC,uBAAuB,CAAElB,KAAMa,EAAMC,MAAAA,IAAWnC,EAAQwC,kBAAoB,CAAE,EACzI,OACErD,EAACyC,EAAIC,EAAAA,EAAAA,EAAA,CAACK,SAAmBX,GAAUe,GAAS,GAAA,CAAA/C,SAC1CJ,EAACY,GAAiBsB,KAAMa,EAAMC,MAAOA,MADvB9B,EAInB,MAGP,IAAC,IAIL,UAYgBoC,IACd,IAAMC,EAAkB,SAAC1C,GAAkD,IAAA2C,EACnEC,EAAuCD,QAAnCA,EAAmB3C,aAAO,EAAPA,EAAS6C,mBAAOF,EAAAA,EAAI,CAAE,EAEnD,OADeG,OAAOC,KAAKH,GACbX,KAAI,SAACe,GACjB,IAAMC,EAASL,EAAKI,GACpB,OAAAnB,EAAA,CAASmB,MAAOE,OAAOF,GAAQG,UAAU,GAAUF,EACrD,GACD,EA2CD,OAAOxD,aAvCL,SAAA2D,EAAYzD,GAA4B,IAAA0D,EAEO,OAFPxD,OAAAuD,GACtCC,EAAAvD,EAAAsD,KAAAA,GAAMzD,IAAM2D,EAAAD,EAAA,UAFkB,IAG9BA,EAAKR,QAAUH,EAAgB/C,EAAMK,SAAQqD,CAC/C,CAAC,OAAAnD,EAAAkD,EALwBjD,GAKxBC,EAAAgD,EAAA,CAAA,CAAA/C,IAAA,wBAAAC,MAED,SAAsBC,GACpB,IAAMgD,EAAiBpC,KAAKC,UAAUX,KAAKd,MAAMW,SAAWa,KAAKC,UAAUb,EAAUD,OAC/EkD,EAAuBrC,KAAKC,UAAUX,KAAKd,MAAMK,WAAamB,KAAKC,UAAUb,EAAUP,SAI7F,OAHIwD,IACF/C,KAAKoC,QAAUH,KAEVa,GAAkBC,CAC3B,GAAC,CAAAnD,IAAA,SAAAC,MAED,WAAM,IAAAmD,EAAAC,EAAAC,EAAAC,EAAAC,EAEJ,GADiBpD,KAAKd,MAAMK,SAAW8C,OAAOC,KAAgCU,QAA5BA,UAAAC,EAACjD,KAAKd,MAAMK,eAAO,IAAA0D,OAAA,EAAlBA,EAAoBb,eAAOY,IAAAA,EAAAA,EAAI,IAAIK,OAAS,EAC/F,CAGA,IAAMC,EAAOtD,KAAKd,MAAMW,MACxB,OACEnB,EAAC6E,EAAcnC,EAAA,CACboC,YAAU,EAEVC,uBACAC,mBAAiB,EACjBC,SAA4BT,QAApBA,EAAElD,KAAKd,MAAMK,eAAX2D,IAAkBA,OAAlBA,EAAAA,EAAoBS,SAC9BL,KAAMA,EACNM,UAA6BT,QAApBA,EAAEnD,KAAKd,MAAMK,eAAX4D,IAAkBA,OAAlBA,EAAAA,EAAoBS,UAC/BC,mBAAoB,GACpBC,cAAe,SAAFC,GAAmB,MAAQ,CAAEC,IAAVD,EAAdE,eAA8C,EAAI,EAAGC,OAAQ,EAAI,EACnF9B,QAASpC,KAAKoC,QACd+B,uBAAqB,GACDf,QADCA,EACjBpD,KAAKd,MAAMkF,aAAXhB,IAAgBA,OAAhBA,EAAAA,EAAkBiB,eAfzB,CAkBH,IAAC,IAIL,CAEA,IAAMd,EAAiBe,EAAOC,EAAPD,EAAiB,SAAAE,GAAA,IAAGC,EAAKD,EAALC,MAAK,MAAQ,CACtD,IAAK,CACHC,UAAW,cAEb,wBAAyB,4BACzB,oBAAqBD,EAAME,QAAQC,WAAWC,MAC9C,4BAA6B,cAC7BC,YAAa,cACb,oBAAqB,CACnB,mBAAoB,cACpBC,QAAS,OACTC,WAAY,UAEd,2DAA4D,CAC1DC,QAAS,QAEX,yEAA0E,CACxEA,QAAS,QAEX,iFAAkF,CAChFA,QAAS,QAEX,6BAA8B,CAC5BC,gBAAiBC,EAAOC,KAAK,IAC7BN,YAAa,cACbO,aAAc,OAEhB,sCAAuC,CACrC,mBAAoB,CAClBA,aAAc,MACdC,OAAQ,OACRC,WAAY,gBACZL,gBAAiB,yBACjB,oBAAqB,CACnBA,gBAAiB,yBACjBI,OAAQ,OACRE,UAAW,wCACXC,aAAc,wCACd,kBAAmB,CACjBC,WAAY,wCACZL,aAAc,eAEhB,iBAAkB,CAChBM,YAAa,wCACbN,aAAc,gBAGlB,UAAW,CACT,wBAAyBZ,EAAME,QAAQiB,QACvC,oBAAqBT,EAAOC,KAAK,IACjCS,UAAW,mBACXC,UAAW,wCACX,oBAAqB,CACnBC,eAAgB,QAChBC,kBAAmB,QACnB,kBAAmB,CACjBC,gBAAiB,SAEnB,iBAAkB,CAChBC,iBAAkB,aAM7B"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"view-mode.types.js","sources":["../../../src/data-view/view-mode.types.ts"],"sourcesContent":["import { MotionProps } from 'framer-motion'\r\nimport { Breakpoint, GridProps } from '@mui/material'\r\nimport { GridColDef, GridRowIdGetter } from '@mui/x-data-grid'\r\n\r\nexport type IViewModeValidModel = {\r\n [key: string | symbol]: any\r\n}\r\n\r\nexport enum EViewMode {\r\n List = 'list',\r\n Module = 'module'\r\n}\r\n\r\nexport type IResponsiveSize = { [key in Breakpoint]?: number }\r\n\r\nexport interface IViewModeElementProps {\r\n mode?: EViewMode\r\n}\r\n\r\nexport interface IViewModeItemProps<T> {\r\n data: T\r\n index: number\r\n}\r\n\r\nexport type GridColsDef<T extends IViewModeValidModel> = { [key in keyof T]?: Omit<GridColDef<T>, 'field'> }\r\n\r\nexport interface IViewModeListConfig<T extends IViewModeValidModel> {\r\n getRowId?: GridRowIdGetter<T>\r\n columns?: GridColsDef<T>\r\n rowHeight?: number\r\n}\r\n\r\nexport type IViewModeModuleConfig<T> = {\r\n getElementId?: (value: T) => string | number\r\n Element?: React.ComponentType<IViewModeItemProps<T>>\r\n elementWrapProps?: Omit<GridProps, 'size' | 'children'>\r\n elementWrapPropsGetter?: (props: IViewModeItemProps<T>) => Omit<GridProps, 'size' | 'children'>\r\n spacing?: GridProps['spacing']\r\n size?: IResponsiveSize\r\n wrapProps?: Omit<GridProps, 'size' | 'children'>\r\n}\r\n\r\nexport interface IViewModeConfigs<T extends IViewModeValidModel> {\r\n list?: IViewModeListConfig<T>\r\n module?: IViewModeModuleConfig<T>\r\n NoData?: React.ComponentType<IViewModeElementProps>\r\n ErrorData?: React.ComponentType<IViewModeElementProps>\r\n Skeleton?: React.ComponentType<IViewModeElementProps>\r\n wrapProps?: MotionProps\r\n defaultValue?: EViewMode\r\n}\r\n"],"names":["EViewMode"],"mappings":"IAQYA,GAAZ,SAAYA,GACVA,EAAA,KAAA,OACAA,EAAA,OAAA,QACD,CAHD,CAAYA,IAAAA,EAGX,CAAA"}
@@ -0,0 +1,2 @@
1
+ import{defineProperty as r,objectSpread2 as o}from"../../_virtual/_rollupPluginBabelHelpers.js";import{jsx as e,jsxs as a}from"react/jsx-runtime";import{useCallback as n}from"react";import{styled as t,ToggleButtonGroup as i,colors as l,Box as c,Tooltip as d,ToggleButton as s,Typography as p}from"@mui/material";import u from"@mui/icons-material/ViewList";import g from"@mui/icons-material/ViewModule";import{EViewMode as h}from"./view-mode.types.js";var m=h.List,b=[{value:h.Module,icon:e(g,{}),label:"Card Grid"},{value:h.List,icon:e(u,{}),label:"Detailed List"}],f=function(r){var o=r.value,a=r.onChange,t=void 0===a?function(){}:a,i=o&&Object.values(h).includes(o)?o:m,l=n((function(r){null!==r&&r!==i&&t(r)}),[i,t]);return e(y,{size:"small",value:i,exclusive:!0,onChange:function(r,o){return l(o)},children:b.map((function(r){return e(d,{title:r.label,arrow:!0,children:e(s,{size:"small",value:r.value,"aria-label":r.label,sx:{p:"5px"},children:r.icon})},r.value)}))})},v=function(){return f},y=t(i)((function(o){var e=o.theme;return r({flex:"0 0 auto",".MuiToggleButtonGroup-grouped":{"&.Mui-selected":{color:l.common.white,backgroundColor:"var(--color-orange, ".concat(l.blue[600],")"),borderColor:"var(--color-orange, ".concat(l.blue[600],")"),"&.MuiToggleButtonGroup-lastButton":{borderColor:"var(--color-orange, ".concat(l.blue[600],")")},"&:hover":{backgroundColor:"var(--color-orange, ".concat(l.blue[600],")")}}}},e.breakpoints.down("md"),{display:"none"})})),x=function(r){return e(w,o(o({},r),{},{children:a(c,{className:"loading-overlay__content",children:[e(c,{className:"loading-overlay__spinner"}),e(p,{variant:"body2",color:"primary",children:"Loading..."})]})}))},w=t(c)({position:"absolute",top:0,left:0,right:0,bottom:0,bgcolor:"rgba(255, 255, 255, 0.7)",display:"flex",alignItems:"flex-start",justifyContent:"center",zIndex:1e3,paddingTop:"20vh",backdropFilter:"blur(2px)",".loading-overlay__content":{display:"flex",alignItems:"center",gap:"10px"},".loading-overlay__spinner":{width:24,height:24,border:"3px solid",borderColor:l.grey[300],borderTopColor:"var(--color-orange, ".concat(l.blue[600],")"),borderRadius:"50%","@keyframes spin":{"0%":{transform:"rotate(0deg)"},"100%":{transform:"rotate(360deg)"}},animation:"spin 1s linear infinite"},".MuiTypography-root":{color:"var(--color-orange, ".concat(l.blue[600],")")}}),C=function(r){var o=r.error;return a(M,{children:[e(p,{variant:"h6",gutterBottom:!0,children:"An error occurred"}),e(p,{variant:"body2",children:o})]})},M=t(c)({marginTop:3,padding:3,border:"1px solid",borderColor:"error.main",borderRadius:1,bgcolor:"error.light",color:"error.contrastText"}),T=t("div")((function(r){var e=r.theme;return{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",height:"100%","& .no-rows-primary":o({fill:"#3D4751"},e.applyStyles("light",{fill:"#AEB8C2"})),"& .no-rows-secondary":o({fill:"#1D2126"},e.applyStyles("light",{fill:"#E8EAED"}))}})),Z=function(){return a(_,{children:[a(T,{children:[a("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",width:96,viewBox:"0 0 452 257","aria-hidden":!0,focusable:"false",children:[e("path",{className:"no-rows-primary",d:"M348 69c-46.392 0-84 37.608-84 84s37.608 84 84 84 84-37.608 84-84-37.608-84-84-84Zm-104 84c0-57.438 46.562-104 104-104s104 46.562 104 104-46.562 104-104 104-104-46.562-104-104Z"}),e("path",{className:"no-rows-primary",d:"M308.929 113.929c3.905-3.905 10.237-3.905 14.142 0l63.64 63.64c3.905 3.905 3.905 10.236 0 14.142-3.906 3.905-10.237 3.905-14.142 0l-63.64-63.64c-3.905-3.905-3.905-10.237 0-14.142Z"}),e("path",{className:"no-rows-primary",d:"M308.929 191.711c-3.905-3.906-3.905-10.237 0-14.142l63.64-63.64c3.905-3.905 10.236-3.905 14.142 0 3.905 3.905 3.905 10.237 0 14.142l-63.64 63.64c-3.905 3.905-10.237 3.905-14.142 0Z"}),e("path",{className:"no-rows-secondary",d:"M0 10C0 4.477 4.477 0 10 0h380c5.523 0 10 4.477 10 10s-4.477 10-10 10H10C4.477 20 0 15.523 0 10ZM0 59c0-5.523 4.477-10 10-10h231c5.523 0 10 4.477 10 10s-4.477 10-10 10H10C4.477 69 0 64.523 0 59ZM0 106c0-5.523 4.477-10 10-10h203c5.523 0 10 4.477 10 10s-4.477 10-10 10H10c-5.523 0-10-4.477-10-10ZM0 153c0-5.523 4.477-10 10-10h195.5c5.523 0 10 4.477 10 10s-4.477 10-10 10H10c-5.523 0-10-4.477-10-10ZM0 200c0-5.523 4.477-10 10-10h203c5.523 0 10 4.477 10 10s-4.477 10-10 10H10c-5.523 0-10-4.477-10-10ZM0 247c0-5.523 4.477-10 10-10h231c5.523 0 10 4.477 10 10s-4.477 10-10 10H10c-5.523 0-10-4.477-10-10Z"})]}),e(p,{variant:"h6",color:"text.secondary",gutterBottom:!0,children:"No data available"})]}),e(p,{variant:"body2",color:"text.secondary",children:"Try changing the filter or search keyword"})]})},_=t(c)({marginTop:"8px",padding:"24px 12px",textAlign:"center",border:"1px dashed",borderColor:l.grey[400],borderRadius:"6px"}),B=function(){return a(j,{children:[e(p,{variant:"h6",color:"text.primary",sx:{fontWeight:"bold"},children:"Waiting for data..."}),e(p,{variant:"body2",color:"text.secondary",children:"Please wait while we fetch the data."})]})},j=t(c)({marginTop:"8px",padding:"24px 12px",textAlign:"center",border:"1px dashed",borderColor:l.grey[400],borderRadius:"6px"});t(c)({marginTop:3,padding:4,textAlign:"center",border:"1px dashed",borderColor:l.red[700],borderRadius:1});export{C as LoadingError,Z as LoadingNoData,x as LoadingOverlay,B as LoadingWaiting,f as ViewModeButtons,v as createViewModeButtons,m as defaultViewMode};
2
+ //# sourceMappingURL=view-mode.units.js.map