slick-table 1.0.18 → 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (351) hide show
  1. package/dist/index.cjs.js +31 -31
  2. package/dist/index.es.js +162 -157
  3. package/dist/types/shared/lib/slickgrid/lib/sorting/ColumnSorter.d.ts +1 -0
  4. package/dist/types/shared/lib/slickgrid/lib/sorting/ColumnSorter.d.ts.map +1 -1
  5. package/dist/types/shared/lib/sorting/Sort.d.ts +1 -0
  6. package/dist/types/shared/lib/sorting/Sort.d.ts.map +1 -1
  7. package/dist/types/shared/model/enums/ESortType.d.ts +3 -1
  8. package/dist/types/shared/model/enums/ESortType.d.ts.map +1 -1
  9. package/package.json +8 -3
  10. package/src/App.tsx +9 -0
  11. package/src/app/styles/global.scss +31 -0
  12. package/src/app/styles/slickgrid.scss +13 -0
  13. package/src/app/types/index.d.ts +9 -0
  14. package/src/entities/popup/index.ts +2 -0
  15. package/src/entities/popup/lib/index.ts +1 -0
  16. package/src/entities/popup/lib/visibility/index.ts +1 -0
  17. package/src/entities/popup/lib/visibility/makeVisible.ts +9 -0
  18. package/src/entities/popup/ui/Overlay/Overlay.style.ts +14 -0
  19. package/src/entities/popup/ui/Overlay/Overlay.test.tsx +19 -0
  20. package/src/entities/popup/ui/Overlay/Overlay.tsx +20 -0
  21. package/src/entities/popup/ui/Overlay/index.ts +1 -0
  22. package/src/entities/popup/ui/Popup.style.ts +17 -0
  23. package/src/entities/popup/ui/Popup.tsx +12 -0
  24. package/src/entities/popup/ui/index.ts +2 -0
  25. package/src/entities/skeleton/Skeleton.style.ts +10 -0
  26. package/src/entities/skeleton/Skeleton.tsx +11 -0
  27. package/src/entities/skeleton/index.ts +1 -0
  28. package/src/features/column-filters/index.ts +1 -0
  29. package/src/features/column-filters/lib/filter/applyFilter.ts +25 -0
  30. package/src/features/column-filters/lib/filter/index.ts +1 -0
  31. package/src/features/column-filters/lib/hooks/index.ts +2 -0
  32. package/src/features/column-filters/lib/hooks/useOpenMenu.ts +43 -0
  33. package/src/features/column-filters/lib/hooks/useSubscribeToEvent.ts +17 -0
  34. package/src/features/column-filters/lib/index.ts +4 -0
  35. package/src/features/column-filters/lib/props/datePickerProps.tsx +11 -0
  36. package/src/features/column-filters/lib/props/index.ts +1 -0
  37. package/src/features/column-filters/lib/select/firstIn.ts +22 -0
  38. package/src/features/column-filters/lib/select/index.ts +1 -0
  39. package/src/features/column-filters/model/consts/defaultValue.ts +6 -0
  40. package/src/features/column-filters/model/consts/id.ts +1 -0
  41. package/src/features/column-filters/model/consts/index.ts +3 -0
  42. package/src/features/column-filters/model/consts/label.ts +5 -0
  43. package/src/features/column-filters/model/index.ts +2 -0
  44. package/src/features/column-filters/model/types/IProps.ts +9 -0
  45. package/src/features/column-filters/model/types/index.ts +1 -0
  46. package/src/features/column-filters/ui/BooleanInput/BooleanInput.style.ts +10 -0
  47. package/src/features/column-filters/ui/BooleanInput/BooleanInput.tsx +53 -0
  48. package/src/features/column-filters/ui/BooleanInput/index.ts +1 -0
  49. package/src/features/column-filters/ui/ButtonReset/ButtonReset.style.ts +10 -0
  50. package/src/features/column-filters/ui/ButtonReset/ButtonReset.tsx +39 -0
  51. package/src/features/column-filters/ui/ButtonReset/index.ts +1 -0
  52. package/src/features/column-filters/ui/ColumnFilters.style.ts +12 -0
  53. package/src/features/column-filters/ui/ColumnFilters.tsx +44 -0
  54. package/src/features/column-filters/ui/DateBetween/DateBetween.tsx +52 -0
  55. package/src/features/column-filters/ui/DateBetween/index.ts +1 -0
  56. package/src/features/column-filters/ui/DateInput/DateInput.tsx +36 -0
  57. package/src/features/column-filters/ui/DateInput/index.ts +1 -0
  58. package/src/features/column-filters/ui/InputArea/InputArea.tsx +63 -0
  59. package/src/features/column-filters/ui/InputArea/index.ts +1 -0
  60. package/src/features/column-filters/ui/MultipleSelect/index.ts +1 -0
  61. package/src/features/column-filters/ui/MultipleSelect/lib/index.ts +2 -0
  62. package/src/features/column-filters/ui/MultipleSelect/lib/props/index.ts +1 -0
  63. package/src/features/column-filters/ui/MultipleSelect/lib/props/props.ts +36 -0
  64. package/src/features/column-filters/ui/MultipleSelect/lib/sorting/ascending.ts +17 -0
  65. package/src/features/column-filters/ui/MultipleSelect/lib/sorting/index.ts +1 -0
  66. package/src/features/column-filters/ui/MultipleSelect/model/IValue.ts +1 -0
  67. package/src/features/column-filters/ui/MultipleSelect/model/index.ts +1 -0
  68. package/src/features/column-filters/ui/MultipleSelect/ui/MultipleSelect.style.ts +9 -0
  69. package/src/features/column-filters/ui/MultipleSelect/ui/MultipleSelect.tsx +72 -0
  70. package/src/features/column-filters/ui/MultipleSelect/ui/index.ts +1 -0
  71. package/src/features/column-filters/ui/NumberBetween/NumberBetween.tsx +42 -0
  72. package/src/features/column-filters/ui/NumberBetween/index.ts +1 -0
  73. package/src/features/column-filters/ui/NumberInput/NumberInput.tsx +24 -0
  74. package/src/features/column-filters/ui/NumberInput/index.ts +1 -0
  75. package/src/features/column-filters/ui/SelectFilter/index.ts +1 -0
  76. package/src/features/column-filters/ui/SelectFilter/model/index.ts +1 -0
  77. package/src/features/column-filters/ui/SelectFilter/model/options/index.ts +1 -0
  78. package/src/features/column-filters/ui/SelectFilter/model/options/options.ts +66 -0
  79. package/src/features/column-filters/ui/SelectFilter/ui/SelectFilter.tsx +50 -0
  80. package/src/features/column-filters/ui/SelectFilter/ui/index.ts +1 -0
  81. package/src/features/column-filters/ui/TextInput/TextInput.tsx +23 -0
  82. package/src/features/column-filters/ui/TextInput/index.ts +1 -0
  83. package/src/features/column-filters/ui/index.ts +1 -0
  84. package/src/features/context-menu/index.ts +1 -0
  85. package/src/features/context-menu/lib/hooks/index.ts +1 -0
  86. package/src/features/context-menu/lib/hooks/useSubscribeToEvent.ts +27 -0
  87. package/src/features/context-menu/lib/index.ts +1 -0
  88. package/src/features/context-menu/model/consts/id.ts +1 -0
  89. package/src/features/context-menu/model/consts/index.ts +1 -0
  90. package/src/features/context-menu/model/index.ts +1 -0
  91. package/src/features/context-menu/ui/ButtonDownloadCSV/ButtonDownloadCSV.tsx +34 -0
  92. package/src/features/context-menu/ui/ButtonDownloadCSV/index.ts +1 -0
  93. package/src/features/context-menu/ui/ButtonGroup/ButtonGroup.tsx +28 -0
  94. package/src/features/context-menu/ui/ButtonGroup/index.ts +1 -0
  95. package/src/features/context-menu/ui/ButtonResetFilters/index.ts +1 -0
  96. package/src/features/context-menu/ui/ButtonResetFilters/lib/index.ts +1 -0
  97. package/src/features/context-menu/ui/ButtonResetFilters/lib/visibility/hasFiltersApplied.ts +8 -0
  98. package/src/features/context-menu/ui/ButtonResetFilters/lib/visibility/index.ts +1 -0
  99. package/src/features/context-menu/ui/ButtonResetFilters/ui/ButtonResetFilters.tsx +39 -0
  100. package/src/features/context-menu/ui/ButtonResetFilters/ui/index.ts +1 -0
  101. package/src/features/context-menu/ui/ButtonUngroup/ButtonUngroup.tsx +28 -0
  102. package/src/features/context-menu/ui/ButtonUngroup/index.ts +1 -0
  103. package/src/features/context-menu/ui/CollapseAll/CollapseAll.tsx +31 -0
  104. package/src/features/context-menu/ui/CollapseAll/index.ts +1 -0
  105. package/src/features/context-menu/ui/ContextMenu.style.ts +29 -0
  106. package/src/features/context-menu/ui/ContextMenu.tsx +55 -0
  107. package/src/features/context-menu/ui/CopyToClipboard/CopyToClipboard.tsx +42 -0
  108. package/src/features/context-menu/ui/CopyToClipboard/index.ts +1 -0
  109. package/src/features/context-menu/ui/ExpandAll/ExpandAll.tsx +30 -0
  110. package/src/features/context-menu/ui/ExpandAll/index.ts +1 -0
  111. package/src/features/context-menu/ui/Print/index.ts +1 -0
  112. package/src/features/context-menu/ui/Print/ui/Print.tsx +25 -0
  113. package/src/features/context-menu/ui/Print/ui/index.ts +1 -0
  114. package/src/features/context-menu/ui/index.ts +1 -0
  115. package/src/index.scss +2 -0
  116. package/src/index.ts +40 -0
  117. package/src/main.tsx +15 -0
  118. package/src/setupTests.ts +5 -0
  119. package/src/shared/lib/an-event/index.ts +31 -0
  120. package/src/shared/lib/datetime/dateToString.spec.ts +11 -0
  121. package/src/shared/lib/datetime/dateToString.ts +8 -0
  122. package/src/shared/lib/datetime/getTime.spec.ts +10 -0
  123. package/src/shared/lib/datetime/getTime.ts +3 -0
  124. package/src/shared/lib/datetime/index.ts +2 -0
  125. package/src/shared/lib/debounce/index.ts +11 -0
  126. package/src/shared/lib/dom/elementNotVisible.spec.ts +72 -0
  127. package/src/shared/lib/dom/elementNotVisible.ts +9 -0
  128. package/src/shared/lib/dom/index.ts +1 -0
  129. package/src/shared/lib/format/IOptions.ts +11 -0
  130. package/src/shared/lib/format/addParentheses.spec.ts +9 -0
  131. package/src/shared/lib/format/addParentheses.ts +7 -0
  132. package/src/shared/lib/format/formatNumber.spec.ts +50 -0
  133. package/src/shared/lib/format/formatNumber.ts +62 -0
  134. package/src/shared/lib/format/index.ts +2 -0
  135. package/src/shared/lib/localStrore/index.ts +1 -0
  136. package/src/shared/lib/localStrore/lib/getSlickTable.ts +5 -0
  137. package/src/shared/lib/localStrore/lib/getSorting.ts +5 -0
  138. package/src/shared/lib/localStrore/lib/index.ts +3 -0
  139. package/src/shared/lib/localStrore/lib/setSorting.ts +8 -0
  140. package/src/shared/lib/localStrore/model/enums/EStorageKey.ts +4 -0
  141. package/src/shared/lib/localStrore/model/enums/index.ts +1 -0
  142. package/src/shared/lib/localStrore/model/index.ts +3 -0
  143. package/src/shared/lib/localStrore/model/localStore.ts +28 -0
  144. package/src/shared/lib/localStrore/model/types/ILastSorting.ts +4 -0
  145. package/src/shared/lib/localStrore/model/types/ISlickTable.ts +1 -0
  146. package/src/shared/lib/localStrore/model/types/ISorting.ts +3 -0
  147. package/src/shared/lib/localStrore/model/types/index.ts +3 -0
  148. package/src/shared/lib/numbers/index.ts +1 -0
  149. package/src/shared/lib/numbers/toNumber.spec.ts +25 -0
  150. package/src/shared/lib/numbers/toNumber.ts +11 -0
  151. package/src/shared/lib/regexp/dates.spec.ts +23 -0
  152. package/src/shared/lib/regexp/dates.ts +6 -0
  153. package/src/shared/lib/regexp/escapeSpecialChar.spec.ts +24 -0
  154. package/src/shared/lib/regexp/escapeSpecialChar.ts +4 -0
  155. package/src/shared/lib/regexp/index.ts +2 -0
  156. package/src/shared/lib/slickgrid/index.ts +70 -0
  157. package/src/shared/lib/slickgrid/lib/callbacks/getOnKeyDownCallback.ts +12 -0
  158. package/src/shared/lib/slickgrid/lib/callbacks/index.ts +4 -0
  159. package/src/shared/lib/slickgrid/lib/callbacks/onCellChange.ts +13 -0
  160. package/src/shared/lib/slickgrid/lib/callbacks/onRowCountChanged.ts +12 -0
  161. package/src/shared/lib/slickgrid/lib/callbacks/onRowsChanged.ts +8 -0
  162. package/src/shared/lib/slickgrid/lib/contextMenu/index.ts +1 -0
  163. package/src/shared/lib/slickgrid/lib/contextMenu/openContextMenu.ts +17 -0
  164. package/src/shared/lib/slickgrid/lib/editors/Autocomplete/Autocomplete.ts +155 -0
  165. package/src/shared/lib/slickgrid/lib/editors/Autocomplete/EditorAutocomplete.ts +66 -0
  166. package/src/shared/lib/slickgrid/lib/editors/Autocomplete/EditorSelectWithSearch.ts +79 -0
  167. package/src/shared/lib/slickgrid/lib/editors/Autocomplete/index.ts +3 -0
  168. package/src/shared/lib/slickgrid/lib/editors/EditorAmount.ts +82 -0
  169. package/src/shared/lib/slickgrid/lib/editors/EditorDate.ts +127 -0
  170. package/src/shared/lib/slickgrid/lib/editors/EditorSelectNumber.ts +16 -0
  171. package/src/shared/lib/slickgrid/lib/editors/EditorSelectString.ts +95 -0
  172. package/src/shared/lib/slickgrid/lib/editors/index.ts +9 -0
  173. package/src/shared/lib/slickgrid/lib/formatters/DateFormatter.ts +9 -0
  174. package/src/shared/lib/slickgrid/lib/formatters/FormatterCheck.ts +11 -0
  175. package/src/shared/lib/slickgrid/lib/formatters/PercentFormatter.spec.ts +11 -0
  176. package/src/shared/lib/slickgrid/lib/formatters/PercentFormatter.ts +8 -0
  177. package/src/shared/lib/slickgrid/lib/formatters/StringFormatter.ts +2 -0
  178. package/src/shared/lib/slickgrid/lib/formatters/getFormatterNumber.ts +17 -0
  179. package/src/shared/lib/slickgrid/lib/formatters/index.ts +5 -0
  180. package/src/shared/lib/slickgrid/lib/functions/addNewRow.ts +22 -0
  181. package/src/shared/lib/slickgrid/lib/functions/commitCurrentEdit.ts +6 -0
  182. package/src/shared/lib/slickgrid/lib/functions/copySelectedRows.ts +34 -0
  183. package/src/shared/lib/slickgrid/lib/functions/deleteRows.ts +20 -0
  184. package/src/shared/lib/slickgrid/lib/functions/getActiveRowId.ts +16 -0
  185. package/src/shared/lib/slickgrid/lib/functions/getDisplayedRows.ts +13 -0
  186. package/src/shared/lib/slickgrid/lib/functions/getLastRow.ts +6 -0
  187. package/src/shared/lib/slickgrid/lib/functions/getNextId.ts +18 -0
  188. package/src/shared/lib/slickgrid/lib/functions/index.ts +10 -0
  189. package/src/shared/lib/slickgrid/lib/functions/isDeletionDangerous.ts +21 -0
  190. package/src/shared/lib/slickgrid/lib/functions/wereEdited.ts +12 -0
  191. package/src/shared/lib/slickgrid/lib/grouping/formatterGroupTotals.test.ts +59 -0
  192. package/src/shared/lib/slickgrid/lib/grouping/formatterGroupTotals.ts +21 -0
  193. package/src/shared/lib/slickgrid/lib/grouping/index.ts +1 -0
  194. package/src/shared/lib/slickgrid/lib/highlighting/getColumnsHash.ts +8 -0
  195. package/src/shared/lib/slickgrid/lib/highlighting/highlightCell.ts +21 -0
  196. package/src/shared/lib/slickgrid/lib/highlighting/highlightColumns.ts +24 -0
  197. package/src/shared/lib/slickgrid/lib/highlighting/index.ts +2 -0
  198. package/src/shared/lib/slickgrid/lib/hooks/eventClickOnTable.ts +17 -0
  199. package/src/shared/lib/slickgrid/lib/hooks/index.ts +4 -0
  200. package/src/shared/lib/slickgrid/lib/hooks/useHotKeys.ts +39 -0
  201. package/src/shared/lib/slickgrid/lib/hooks/useListenIfTablesWereEdited.ts +36 -0
  202. package/src/shared/lib/slickgrid/lib/hooks/useResizeCanvas.ts +18 -0
  203. package/src/shared/lib/slickgrid/lib/hooks/useUpdateTotal.ts +17 -0
  204. package/src/shared/lib/slickgrid/lib/hotKeys/hotKeysCopy.ts +7 -0
  205. package/src/shared/lib/slickgrid/lib/hotKeys/hotKeysDelete.ts +7 -0
  206. package/src/shared/lib/slickgrid/lib/hotKeys/hotKeysRedo.ts +7 -0
  207. package/src/shared/lib/slickgrid/lib/hotKeys/hotKeysReverse.ts +7 -0
  208. package/src/shared/lib/slickgrid/lib/hotKeys/hotKeysUndo.ts +7 -0
  209. package/src/shared/lib/slickgrid/lib/hotKeys/index.ts +7 -0
  210. package/src/shared/lib/slickgrid/lib/hotKeys/nothingToCopy.ts +14 -0
  211. package/src/shared/lib/slickgrid/lib/hotKeys/positionToPaste.ts +12 -0
  212. package/src/shared/lib/slickgrid/lib/index.ts +61 -0
  213. package/src/shared/lib/slickgrid/lib/selection/getUpdates.ts +41 -0
  214. package/src/shared/lib/slickgrid/lib/selection/index.ts +2 -0
  215. package/src/shared/lib/slickgrid/lib/selection/selectedRows.ts +17 -0
  216. package/src/shared/lib/slickgrid/lib/sorting/ColumnSorter.ts +166 -0
  217. package/src/shared/lib/slickgrid/lib/sorting/index.ts +1 -0
  218. package/src/shared/lib/slickgrid/lib/total-calculator/TotalCalculator.ts +71 -0
  219. package/src/shared/lib/slickgrid/lib/total-calculator/index.ts +1 -0
  220. package/src/shared/lib/slickgrid/lib/validators/DateValidator.ts +12 -0
  221. package/src/shared/lib/slickgrid/lib/validators/EmptyStringValidator.ts +5 -0
  222. package/src/shared/lib/slickgrid/lib/validators/LengthValidator.ts +7 -0
  223. package/src/shared/lib/slickgrid/lib/validators/index.ts +3 -0
  224. package/src/shared/lib/slickgrid/model/SlickTable/csvDownloadManager/DownloadManager.ts +110 -0
  225. package/src/shared/lib/slickgrid/model/SlickTable/csvDownloadManager/index.ts +1 -0
  226. package/src/shared/lib/slickgrid/model/SlickTable/filters/DeletedRowsFilter.test.ts +36 -0
  227. package/src/shared/lib/slickgrid/model/SlickTable/filters/DeletedRowsFilter.ts +12 -0
  228. package/src/shared/lib/slickgrid/model/SlickTable/filters/Filter.test.ts +80 -0
  229. package/src/shared/lib/slickgrid/model/SlickTable/filters/Filter.ts +52 -0
  230. package/src/shared/lib/slickgrid/model/SlickTable/filters/WithoutFilter.ts +30 -0
  231. package/src/shared/lib/slickgrid/model/SlickTable/filters/decorators/ColumnFilter/DecoratorColumnFilter.test.ts +216 -0
  232. package/src/shared/lib/slickgrid/model/SlickTable/filters/decorators/ColumnFilter/DecoratorColumnFilter.ts +53 -0
  233. package/src/shared/lib/slickgrid/model/SlickTable/filters/decorators/ColumnFilter/Filter.test.ts +264 -0
  234. package/src/shared/lib/slickgrid/model/SlickTable/filters/decorators/ColumnFilter/Filter.ts +108 -0
  235. package/src/shared/lib/slickgrid/model/SlickTable/filters/decorators/ColumnFilter/index.ts +1 -0
  236. package/src/shared/lib/slickgrid/model/SlickTable/filters/decorators/DecoratorEndingDate.ts +16 -0
  237. package/src/shared/lib/slickgrid/model/SlickTable/filters/decorators/DecoratorFilter.test.ts +139 -0
  238. package/src/shared/lib/slickgrid/model/SlickTable/filters/decorators/DecoratorFilter.ts +55 -0
  239. package/src/shared/lib/slickgrid/model/SlickTable/filters/decorators/DecoratorPeriod.ts +24 -0
  240. package/src/shared/lib/slickgrid/model/SlickTable/filters/decorators/index.ts +4 -0
  241. package/src/shared/lib/slickgrid/model/SlickTable/filters/index.ts +9 -0
  242. package/src/shared/lib/slickgrid/model/SlickTable/hotKeys/DefaultHotKeys.ts +116 -0
  243. package/src/shared/lib/slickgrid/model/SlickTable/hotKeys/WithoutHotKeys.ts +20 -0
  244. package/src/shared/lib/slickgrid/model/SlickTable/hotKeys/decorators/HotKeysDecorator.ts +32 -0
  245. package/src/shared/lib/slickgrid/model/SlickTable/hotKeys/decorators/PreventCopying.ts +18 -0
  246. package/src/shared/lib/slickgrid/model/SlickTable/hotKeys/decorators/RedoUndoOnly.ts +18 -0
  247. package/src/shared/lib/slickgrid/model/SlickTable/hotKeys/decorators/WithConfirmationOfDeletion.ts +33 -0
  248. package/src/shared/lib/slickgrid/model/SlickTable/hotKeys/decorators/index.ts +4 -0
  249. package/src/shared/lib/slickgrid/model/SlickTable/hotKeys/index.ts +8 -0
  250. package/src/shared/lib/slickgrid/model/SlickTable/index.ts +19 -0
  251. package/src/shared/lib/slickgrid/model/SlickTable/printer/DefaultPrinter.test.ts +226 -0
  252. package/src/shared/lib/slickgrid/model/SlickTable/printer/DefaultPrinter.ts +179 -0
  253. package/src/shared/lib/slickgrid/model/SlickTable/printer/index.ts +1 -0
  254. package/src/shared/lib/slickgrid/model/SlickTable/printer/model/consts/cssStyles.ts +46 -0
  255. package/src/shared/lib/slickgrid/model/SlickTable/printer/model/consts/index.ts +1 -0
  256. package/src/shared/lib/slickgrid/model/SlickTable/printer/model/index.ts +1 -0
  257. package/src/shared/lib/slickgrid/model/SlickTable/table/SlickTable.test.ts +72 -0
  258. package/src/shared/lib/slickgrid/model/SlickTable/table/SlickTable.ts +168 -0
  259. package/src/shared/lib/slickgrid/model/SlickTable/table/index.ts +1 -0
  260. package/src/shared/lib/slickgrid/model/events/eventContextMenu.ts +10 -0
  261. package/src/shared/lib/slickgrid/model/events/index.ts +1 -0
  262. package/src/shared/lib/slickgrid/model/index.ts +18 -0
  263. package/src/shared/lib/slickgrid/ui/HeaderButtons/index.ts +2 -0
  264. package/src/shared/lib/slickgrid/ui/HeaderButtons/lib/handleClick/handleHeaderButtons.ts +27 -0
  265. package/src/shared/lib/slickgrid/ui/HeaderButtons/lib/handleClick/index.ts +1 -0
  266. package/src/shared/lib/slickgrid/ui/HeaderButtons/lib/highlighting/headerButtons.ts +45 -0
  267. package/src/shared/lib/slickgrid/ui/HeaderButtons/lib/highlighting/index.ts +1 -0
  268. package/src/shared/lib/slickgrid/ui/HeaderButtons/lib/index.ts +2 -0
  269. package/src/shared/lib/slickgrid/ui/HeaderButtons/model/buttons/index.ts +1 -0
  270. package/src/shared/lib/slickgrid/ui/HeaderButtons/model/buttons/openColumnFilter.ts +10 -0
  271. package/src/shared/lib/slickgrid/ui/HeaderButtons/model/event/eventOpenColumnFilters.ts +13 -0
  272. package/src/shared/lib/slickgrid/ui/HeaderButtons/model/event/index.ts +1 -0
  273. package/src/shared/lib/slickgrid/ui/HeaderButtons/model/index.ts +2 -0
  274. package/src/shared/lib/slickgrid/ui/SlickgridTable/index.ts +1 -0
  275. package/src/shared/lib/slickgrid/ui/SlickgridTable/lib/callbacks/index.ts +1 -0
  276. package/src/shared/lib/slickgrid/ui/SlickgridTable/lib/callbacks/onAddNewRow.ts +34 -0
  277. package/src/shared/lib/slickgrid/ui/SlickgridTable/lib/hooks/index.ts +1 -0
  278. package/src/shared/lib/slickgrid/ui/SlickgridTable/lib/hooks/useGrid.ts +142 -0
  279. package/src/shared/lib/slickgrid/ui/SlickgridTable/lib/index.ts +2 -0
  280. package/src/shared/lib/slickgrid/ui/SlickgridTable/model/defaultOptions.ts +8 -0
  281. package/src/shared/lib/slickgrid/ui/SlickgridTable/model/index.ts +2 -0
  282. package/src/shared/lib/slickgrid/ui/SlickgridTable/model/types/Props.ts +46 -0
  283. package/src/shared/lib/slickgrid/ui/SlickgridTable/model/types/index.ts +1 -0
  284. package/src/shared/lib/slickgrid/ui/SlickgridTable/ui/SlickgridTable.tsx +57 -0
  285. package/src/shared/lib/slickgrid/ui/SlickgridTable/ui/index.ts +1 -0
  286. package/src/shared/lib/slickgrid/ui/columns/columnCheckboxSelector/columnCheckboxSelector.ts +7 -0
  287. package/src/shared/lib/slickgrid/ui/columns/columnCheckboxSelector/index.ts +1 -0
  288. package/src/shared/lib/slickgrid/ui/columns/columnIsEdited/index.ts +1 -0
  289. package/src/shared/lib/slickgrid/ui/columns/columnIsEdited/lib/index.ts +1 -0
  290. package/src/shared/lib/slickgrid/ui/columns/columnIsEdited/lib/setEditedMark.spec.ts +11 -0
  291. package/src/shared/lib/slickgrid/ui/columns/columnIsEdited/lib/setEditedMark.ts +7 -0
  292. package/src/shared/lib/slickgrid/ui/columns/columnIsEdited/ui/columnIsEdited.ts +16 -0
  293. package/src/shared/lib/slickgrid/ui/columns/columnIsEdited/ui/index.ts +1 -0
  294. package/src/shared/lib/slickgrid/ui/columns/index.ts +2 -0
  295. package/src/shared/lib/slickgrid/ui/index.ts +9 -0
  296. package/src/shared/lib/slickgrid/ui/styles/WithTableStyles/WithTableStyles.style.ts +157 -0
  297. package/src/shared/lib/slickgrid/ui/styles/WithTableStyles/WithTableStyles.tsx +11 -0
  298. package/src/shared/lib/slickgrid/ui/styles/WithTableStyles/index.ts +1 -0
  299. package/src/shared/lib/slickgrid/ui/styles/index.ts +1 -0
  300. package/src/shared/lib/slickgrid/ui/styles/keyframes/index.ts +1 -0
  301. package/src/shared/lib/slickgrid/ui/styles/keyframes/wink.ts +7 -0
  302. package/src/shared/lib/sorting/Sort.ts +37 -0
  303. package/src/shared/lib/sorting/index.ts +1 -0
  304. package/src/shared/lib/stringCalculator/index.ts +2 -0
  305. package/src/shared/lib/stringCalculator/stringCalculator.js +834 -0
  306. package/src/shared/lib/stringCalculator/stringCalculator.spec.ts +16 -0
  307. package/src/shared/lib/strings/deleteDoubleQuotes.spec.ts +11 -0
  308. package/src/shared/lib/strings/deleteDoubleQuotes.ts +5 -0
  309. package/src/shared/lib/strings/index.ts +3 -0
  310. package/src/shared/lib/strings/removeHtml.spec.ts +29 -0
  311. package/src/shared/lib/strings/removeHtml.ts +5 -0
  312. package/src/shared/lib/strings/toStringWithCommas.spec.ts +16 -0
  313. package/src/shared/lib/strings/toStringWithCommas.ts +15 -0
  314. package/src/shared/model/consts/columnId.ts +1 -0
  315. package/src/shared/model/consts/dateFormats.ts +5 -0
  316. package/src/shared/model/consts/index.ts +4 -0
  317. package/src/shared/model/consts/invalidDate.ts +1 -0
  318. package/src/shared/model/consts/noPrivilegesMessage.ts +1 -0
  319. package/src/shared/model/enums/EColumnFilter.ts +16 -0
  320. package/src/shared/model/enums/EColumnFiltersGroup.ts +10 -0
  321. package/src/shared/model/enums/EDateFormat.ts +11 -0
  322. package/src/shared/model/enums/EKey.ts +9 -0
  323. package/src/shared/model/enums/EKeyCode.ts +8 -0
  324. package/src/shared/model/enums/ESortType.ts +17 -0
  325. package/src/shared/model/enums/index.ts +6 -0
  326. package/src/shared/model/types/IColumn.ts +11 -0
  327. package/src/shared/model/types/IColumnFilterValue.ts +4 -0
  328. package/src/shared/model/types/IDownloadManager.ts +6 -0
  329. package/src/shared/model/types/IEditedRow.ts +5 -0
  330. package/src/shared/model/types/IExternalVariables.ts +1 -0
  331. package/src/shared/model/types/IFilter.ts +17 -0
  332. package/src/shared/model/types/IFilterArguments.ts +14 -0
  333. package/src/shared/model/types/IGrouping.ts +12 -0
  334. package/src/shared/model/types/IHotKeysBehavior.ts +15 -0
  335. package/src/shared/model/types/IObserver.ts +3 -0
  336. package/src/shared/model/types/IPrinter.ts +24 -0
  337. package/src/shared/model/types/ISlickRow.ts +1 -0
  338. package/src/shared/model/types/ISlickTable.ts +41 -0
  339. package/src/shared/model/types/ITotalCalculator.ts +5 -0
  340. package/src/shared/model/types/TGridRow.ts +6 -0
  341. package/src/shared/model/types/index.ts +15 -0
  342. package/src/shared/ui/ContextSelect/ContextSelect.style.ts +9 -0
  343. package/src/shared/ui/ContextSelect/ContextSelect.tsx +87 -0
  344. package/src/shared/ui/ContextSelect/index.ts +2 -0
  345. package/src/shared/ui/notification/index.ts +1 -0
  346. package/src/shared/ui/notification/model/index.ts +1 -0
  347. package/src/shared/ui/notification/ui/index.style.ts +13 -0
  348. package/src/shared/ui/notification/ui/index.tsx +41 -0
  349. package/src/shared/ui/styles/WithDatePickerStyles.ts +11 -0
  350. package/src/shared/ui/styles/index.ts +1 -0
  351. package/src/vite-env.d.ts +1 -0
@@ -0,0 +1,16 @@
1
+ //@ts-nocheck
2
+ import { stringCalculator } from "./stringCalculator";
3
+
4
+ describe("stringCalculator", () => {
5
+ test("must return correct value", () => {
6
+ expect(stringCalculator.parse("0")).toBe(0);
7
+ expect(stringCalculator.parse("1 +3/2*3")).toBe(5.5);
8
+ expect(stringCalculator.parse("1--3")).toBe(4);
9
+ expect(stringCalculator.parse("-1*-3")).toBe(3);
10
+ expect(stringCalculator.parse("-1*3")).toBe(-3);
11
+ expect(stringCalculator.parse("-1/0")).toBe(-Infinity);
12
+ expect(stringCalculator.parse("-1/0")).toBe(-Infinity);
13
+ expect(stringCalculator.parse("-0/2")).toBe(-0);
14
+ expect(stringCalculator.parse("0/2")).toBe(0);
15
+ });
16
+ });
@@ -0,0 +1,11 @@
1
+ import { deleteDoubleQuotes } from "./deleteDoubleQuotes";
2
+
3
+ test("Return expected values", () => {
4
+ expect(deleteDoubleQuotes('"50000"')).toBe("50000");
5
+ expect(deleteDoubleQuotes(50000)).toBe("50000");
6
+ expect(deleteDoubleQuotes(0)).toBe("0");
7
+ expect(deleteDoubleQuotes(null)).toBe("");
8
+ expect(deleteDoubleQuotes(undefined)).toBe("");
9
+ expect(deleteDoubleQuotes("")).toBe("");
10
+ expect(deleteDoubleQuotes(NaN)).toBe("");
11
+ });
@@ -0,0 +1,5 @@
1
+ export const deleteDoubleQuotes = (value?: string | number | null): string => {
2
+ if (value !== value) return ""; // if value is NaN
3
+ const str = String(value ?? "");
4
+ return str.replace(/(^")|("$)/g, "");
5
+ };
@@ -0,0 +1,3 @@
1
+ export { deleteDoubleQuotes } from "./deleteDoubleQuotes";
2
+ export { removeHtml } from "./removeHtml";
3
+ export { toStringWithCommas } from "./toStringWithCommas";
@@ -0,0 +1,29 @@
1
+ import { removeHtml } from "./removeHtml";
2
+
3
+ describe("removeHtml", () => {
4
+ it("should remove HTML tags from a string", () => {
5
+ const input = "<div>Hello <strong>World</strong></div>";
6
+ const output = "Hello World";
7
+ expect(removeHtml(input)).toBe(output);
8
+ });
9
+ it("should return an empty string if input is an empty string", () => {
10
+ const input = "";
11
+ const output = "";
12
+ expect(removeHtml(input)).toBe(output);
13
+ });
14
+ it("should handle strings without HTML tags", () => {
15
+ const input = "Hello World";
16
+ const output = "Hello World";
17
+ expect(removeHtml(input)).toBe(output);
18
+ });
19
+ it("should handle nested HTML tags", () => {
20
+ const input = "<div><p>Hello <span>World</span></p></div>";
21
+ const output = "Hello World";
22
+ expect(removeHtml(input)).toBe(output);
23
+ });
24
+ it("should handle self-closing tags", () => {
25
+ const input = "<div>Hello <br/>World</div>";
26
+ const output = "Hello World";
27
+ expect(removeHtml(input)).toBe(output);
28
+ });
29
+ });
@@ -0,0 +1,5 @@
1
+ export function removeHtml(str: string): string {
2
+ const tmp = document.createElement("div");
3
+ tmp.innerHTML = str;
4
+ return tmp.textContent || tmp.innerText || "";
5
+ }
@@ -0,0 +1,16 @@
1
+ import { toStringWithCommas } from "./toStringWithCommas";
2
+
3
+ test("Return expected values", () => {
4
+ expect(toStringWithCommas("50000")).toBe("50,000");
5
+ expect(toStringWithCommas("-50000")).toBe("-50,000");
6
+ expect(toStringWithCommas("5.0002")).toBe("5.0002");
7
+ expect(toStringWithCommas(1005.0002)).toBe("1,005.0002");
8
+ expect(toStringWithCommas(-1005.0002)).toBe("-1,005.0002");
9
+ expect(toStringWithCommas("1,000.123")).toBe("1,000.123");
10
+ expect(toStringWithCommas("")).toBe("");
11
+ expect(toStringWithCommas(0)).toBe("0");
12
+ expect(toStringWithCommas("0")).toBe("0");
13
+ expect(toStringWithCommas(".")).toBe("0");
14
+ expect(toStringWithCommas("0.00")).toBe("0.00");
15
+ expect(toStringWithCommas("sdfg")).toBe("0");
16
+ });
@@ -0,0 +1,15 @@
1
+ export const toStringWithCommas = (value: string | number): string => {
2
+ const valueWithoutCommas =
3
+ typeof value === "number" ? value : value.replace(/,/g, "");
4
+ if (isNaN(+valueWithoutCommas)) return "0";
5
+ const stringValue = String(valueWithoutCommas);
6
+ const [integerPart, fractionalPart] = stringValue.split(".");
7
+ const integerPartWithCommas = integerPart.replace(
8
+ /\B(?=(\d{3})+(?!\d))/g,
9
+ ",",
10
+ );
11
+ const fractionalPartWithoutCommas = fractionalPart
12
+ ? `.${fractionalPart}`
13
+ : "";
14
+ return `${integerPartWithCommas}${fractionalPartWithoutCommas}`;
15
+ };
@@ -0,0 +1 @@
1
+ export const CHECKBOX_SELECTOR = "checkboxSelector";
@@ -0,0 +1,5 @@
1
+ import moment from "moment";
2
+
3
+ import { EDateFormat } from "shared/model/enums";
4
+
5
+ export const dateFormats = [moment.ISO_8601, EDateFormat.ui, EDateFormat.db];
@@ -0,0 +1,4 @@
1
+ export { CHECKBOX_SELECTOR } from "./columnId";
2
+ export { dateFormats } from "./dateFormats";
3
+ export { INVALID_DATE } from "./invalidDate";
4
+ export { NO_PRIVILEGES_MESSAGE } from "./noPrivilegesMessage";
@@ -0,0 +1 @@
1
+ export const INVALID_DATE = "Invalid date";
@@ -0,0 +1 @@
1
+ export const NO_PRIVILEGES_MESSAGE = "You do not have sufficient privileges";
@@ -0,0 +1,16 @@
1
+ export enum EColumnFilter {
2
+ "Boolean" = 1,
3
+ "DateBetween",
4
+ "DateEqual",
5
+ "DateFrom",
6
+ "DateTo",
7
+ "MultipleSelect",
8
+ "NumberBetween",
9
+ "NumberEqual",
10
+ "NumberFrom",
11
+ "NumberTo",
12
+ "TextContain",
13
+ "TextEqual",
14
+ "TextNotContain",
15
+ "TextNotEqual",
16
+ }
@@ -0,0 +1,10 @@
1
+ export enum EColumnFiltersGroup {
2
+ Boolean = "Boolean",
3
+ Date = "Date",
4
+ MultipleSelect = "MultipleSelect",
5
+ /** Don't take into account column formatter while filtering */
6
+ Number = "Number",
7
+ /** Take into account column formatter while filtering */
8
+ NumberFormatted = "NumberFormatted",
9
+ Text = "Text",
10
+ }
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Enum for date format.
3
+ * @readonly
4
+ * @enum {string}
5
+ * */
6
+ export enum EDateFormat {
7
+ /** In this format dates are stored in database. */
8
+ db = "YYYY-MM-DD",
9
+ /** In this format dates are displayed for user. */
10
+ ui = "MM/DD/YY",
11
+ }
@@ -0,0 +1,9 @@
1
+ export enum EKey {
2
+ ArrowDown = "ArrowDown",
3
+ ArrowLeft = "ArrowLeft",
4
+ ArrowRight = "ArrowRight",
5
+ ArrowUp = "ArrowUp",
6
+ Control = "Control",
7
+ Enter = "Enter",
8
+ Tab = "Tab",
9
+ }
@@ -0,0 +1,8 @@
1
+ export enum EKeyCode {
2
+ "KeyB" = 66,
3
+ "KeyDel" = 46,
4
+ "KeyEnter" = 13,
5
+ "KeyR" = 82,
6
+ "KeyY" = 89,
7
+ "KeyZ" = 90,
8
+ }
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Enum defines how to handle column values.
3
+ * @readonly
4
+ * @enum {number}
5
+ */
6
+ export enum ESortType {
7
+ /** sort as date */
8
+ DATE = 1,
9
+ /** sort as number, do not take formatter into account */
10
+ NUMBER,
11
+ /** sort as number, take formatter into account */
12
+ NUMBER_FORMATTED,
13
+ /** treats numeric substrings as actual numbers, rather than just characters */
14
+ TEXT_NUMERIC,
15
+ /** sort as text */
16
+ TEXT,
17
+ }
@@ -0,0 +1,6 @@
1
+ export { EColumnFilter } from "./EColumnFilter";
2
+ export { EColumnFiltersGroup } from "./EColumnFiltersGroup";
3
+ export { EDateFormat } from "./EDateFormat";
4
+ export { EKey } from "./EKey";
5
+ export { EKeyCode } from "./EKeyCode";
6
+ export { ESortType } from "./ESortType";
@@ -0,0 +1,11 @@
1
+ import { Column, Formatter } from "slickgrid";
2
+
3
+ import { ESortType } from "shared/model/enums";
4
+
5
+ export type IColumn<TData = any> = Column<TData> & {
6
+ sortAs?: ESortType;
7
+ forPrint?: boolean;
8
+ selectOptions?: Record<string, string | number>;
9
+ optionsList?: unknown[];
10
+ printer?: Formatter;
11
+ };
@@ -0,0 +1,4 @@
1
+ export interface IColumnFilterValue {
2
+ 1: string;
3
+ 2: string;
4
+ }
@@ -0,0 +1,6 @@
1
+ import { ISlickTable } from "./ISlickTable";
2
+
3
+ export interface IDownloadManager {
4
+ download(table: ISlickTable, clientId: number, name: string): void;
5
+ createCSV(table: ISlickTable): string;
6
+ }
@@ -0,0 +1,5 @@
1
+ export interface IEditedRow {
2
+ isEdited?: boolean;
3
+ isNew?: boolean;
4
+ isDeleted?: boolean;
5
+ }
@@ -0,0 +1 @@
1
+ export type IExternalVariables = Record<string, any>;
@@ -0,0 +1,17 @@
1
+ import { FilterFn, SlickGrid } from "slickgrid";
2
+
3
+ import { IFilterArguments } from "./IFilterArguments";
4
+ import { ISlickRow } from "./ISlickRow";
5
+ import { ISlickTable } from "./ISlickTable";
6
+
7
+ export interface IFilter {
8
+ /** Field "args" is used to preserve Data View filter args after
9
+ * creating a new grid instance */
10
+ args: IFilterArguments;
11
+ grid: SlickGrid | null;
12
+ tableId: string;
13
+ getFilterFn(): FilterFn<ISlickRow>;
14
+ register(grid: SlickGrid, tableId: string): void;
15
+ print(table: ISlickTable): HTMLTableRowElement[];
16
+ reset(): void;
17
+ }
@@ -0,0 +1,14 @@
1
+ import { EColumnFilter, EColumnFiltersGroup } from "shared/model/enums";
2
+
3
+ import { IColumnFilterValue } from "./IColumnFilterValue";
4
+
5
+ export type IFilterArguments = Record<string, any> & {
6
+ columnFilters?: Record<
7
+ string,
8
+ {
9
+ filterId: EColumnFilter;
10
+ group: EColumnFiltersGroup;
11
+ value: IColumnFilterValue;
12
+ }
13
+ >;
14
+ };
@@ -0,0 +1,12 @@
1
+ import { Grouping } from "slickgrid";
2
+
3
+ /** @description Describes table's grouping state
4
+ * @property isGrouped
5
+ * Undefined: table has no groups;
6
+ * False: table ungrouped;
7
+ * True: table grouped
8
+ * */
9
+ export interface IGrouping {
10
+ isGrouped?: boolean;
11
+ groups?: Grouping[];
12
+ }
@@ -0,0 +1,15 @@
1
+ import { OnKeyDownEventArgs, SlickEventData, SlickGrid } from "slickgrid";
2
+
3
+ import { IExternalVariables } from "./IExternalVariables";
4
+ import { ISlickTable } from "./ISlickTable";
5
+
6
+ export interface IHotKeysBehavior {
7
+ handleKeyboardEvent(
8
+ event: SlickEventData<OnKeyDownEventArgs>,
9
+ table: ISlickTable,
10
+ ): void;
11
+ pushToCommandQueue(grid: SlickGrid | null): void;
12
+ resetQueue(): void;
13
+ setExternalVariables(variables: IExternalVariables): void;
14
+ getExternalVariables(): IExternalVariables;
15
+ }
@@ -0,0 +1,3 @@
1
+ import { ISlickTable } from "./ISlickTable";
2
+
3
+ export type IObserver = (table: ISlickTable) => void;
@@ -0,0 +1,24 @@
1
+ import { SlickGrid } from "slickgrid";
2
+
3
+ import { IColumn } from "./IColumn";
4
+ import { ISlickTable } from "./ISlickTable";
5
+
6
+ export interface IPrinter {
7
+ clientId: number;
8
+ clientName: string;
9
+ cssStyles: string;
10
+ getClientName(): HTMLTableRowElement;
11
+ columnNames(table: ISlickTable): HTMLTableRowElement;
12
+ tableNameAndTime(table: ISlickTable): HTMLTableRowElement;
13
+ createStyleElement(): HTMLStyleElement;
14
+ createTableElement(table: ISlickTable): HTMLTableElement;
15
+ createTbody(table: ISlickTable): HTMLTableSectionElement;
16
+ createThead(table: ISlickTable): HTMLTableSectionElement;
17
+ createTr(
18
+ columns: IColumn[],
19
+ rowIndex: number,
20
+ grid: SlickGrid,
21
+ ): HTMLTableRowElement;
22
+ print(table: ISlickTable, clientId: number, clientName: string): void;
23
+ totals(table: ISlickTable): HTMLTableRowElement[];
24
+ }
@@ -0,0 +1 @@
1
+ export type ISlickRow = Record<string, any>;
@@ -0,0 +1,41 @@
1
+ import {
2
+ Column,
3
+ GridOption,
4
+ OnKeyDownEventArgs,
5
+ SlickDataView,
6
+ SlickEventData,
7
+ SlickGrid,
8
+ } from "slickgrid";
9
+
10
+ import { IDownloadManager } from "./IDownloadManager";
11
+ import { IFilter } from "./IFilter";
12
+ import { IGrouping } from "./IGrouping";
13
+ import { IHotKeysBehavior } from "./IHotKeysBehavior";
14
+ import { IObserver } from "./IObserver";
15
+ import { IPrinter } from "./IPrinter";
16
+ import { ITotalCalculator } from "./ITotalCalculator";
17
+
18
+ export interface ISlickTable {
19
+ createGrid(
20
+ dataView: SlickDataView,
21
+ columns: Column[],
22
+ options: GridOption,
23
+ ): SlickGrid;
24
+ deleteObserver(observer: IObserver): void;
25
+ downloadManager: IDownloadManager;
26
+ filter: IFilter;
27
+ grid: SlickGrid | null;
28
+ grouping: IGrouping;
29
+ handleKeyboardEvent(event: SlickEventData<OnKeyDownEventArgs>): void;
30
+ readonly hotKeysBehavior: IHotKeysBehavior;
31
+ readonly id: string;
32
+ isActive: boolean;
33
+ isEdited: boolean;
34
+ lastActiveSell: { row: number; cell: number };
35
+ printer: IPrinter;
36
+ readonly name: string;
37
+ notifyObservers(): void;
38
+ registerObservers(observer: IObserver): void;
39
+ reset(): void;
40
+ totalCalculator?: ITotalCalculator;
41
+ }
@@ -0,0 +1,5 @@
1
+ import { SlickGrid } from "slickgrid";
2
+
3
+ export interface ITotalCalculator {
4
+ calculate(grid: SlickGrid): void;
5
+ }
@@ -0,0 +1,6 @@
1
+ export type TGridRow = {
2
+ id: number;
3
+ isDeleted?: boolean;
4
+ isEdited?: boolean;
5
+ isNew?: boolean;
6
+ };
@@ -0,0 +1,15 @@
1
+ export type { IFilterArguments } from "./IFilterArguments";
2
+ export type { IColumn } from "./IColumn";
3
+ export type { IColumnFilterValue } from "./IColumnFilterValue";
4
+ export type { IDownloadManager } from "./IDownloadManager";
5
+ export type { IEditedRow } from "./IEditedRow";
6
+ export type { IExternalVariables } from "./IExternalVariables";
7
+ export type { IFilter } from "./IFilter";
8
+ export type { IGrouping } from "./IGrouping";
9
+ export type { IHotKeysBehavior } from "./IHotKeysBehavior";
10
+ export type { IObserver } from "./IObserver";
11
+ export type { IPrinter } from "./IPrinter";
12
+ export type { ISlickTable } from "./ISlickTable";
13
+ export type { TGridRow } from "./TGridRow";
14
+ export type { ISlickRow } from "./ISlickRow";
15
+ export type { ITotalCalculator } from "./ITotalCalculator";
@@ -0,0 +1,9 @@
1
+ import { MenuItem, styled } from "@mui/material";
2
+
3
+ const StyledMenuItem = styled(MenuItem)({
4
+ fontSize: "12px",
5
+ });
6
+
7
+ export default {
8
+ MenuItem: StyledMenuItem,
9
+ };
@@ -0,0 +1,87 @@
1
+ import {
2
+ FormControl,
3
+ InputLabel,
4
+ Select,
5
+ SelectChangeEvent,
6
+ } from "@mui/material";
7
+ import { FC } from "react";
8
+
9
+ import Styled from "./ContextSelect.style";
10
+
11
+ export const ContextSelect: FC<IProps> = ({
12
+ name,
13
+ list,
14
+ onChange,
15
+ defaultValue,
16
+ value,
17
+ showSelect = true,
18
+ dataTestId,
19
+ width = "12.8em",
20
+ height,
21
+ disabled = false,
22
+ }) => {
23
+ return (
24
+ <FormControl variant="outlined" size={"small"}>
25
+ <InputLabel id="reportType">{name}</InputLabel>
26
+ <Select
27
+ labelId="reportType"
28
+ id={name}
29
+ label={name}
30
+ autoWidth={true}
31
+ value={`${value ?? (defaultValue || 0)}`}
32
+ defaultValue={`${defaultValue || 0}`}
33
+ onChange={onChange}
34
+ disabled={disabled}
35
+ data-testid={dataTestId}
36
+ MenuProps={{
37
+ anchorOrigin: {
38
+ vertical: "bottom",
39
+ horizontal: "left",
40
+ },
41
+ transformOrigin: {
42
+ vertical: "top",
43
+ horizontal: "left",
44
+ },
45
+ disableScrollLock: true,
46
+ }}
47
+ sx={{ height, width }}
48
+ >
49
+ {showSelect && (
50
+ <Styled.MenuItem value={0} id="Select">
51
+ Select
52
+ </Styled.MenuItem>
53
+ )}
54
+ {list.map((el, index: number) => (
55
+ <Styled.MenuItem
56
+ value={el.id}
57
+ key={index}
58
+ id="selectedReport"
59
+ disabled={el.isDisabled}
60
+ >
61
+ {el.labelForSelect || el.name}
62
+ </Styled.MenuItem>
63
+ ))}
64
+ </Select>
65
+ </FormControl>
66
+ );
67
+ };
68
+
69
+ interface IProps {
70
+ onChange: (event: SelectChangeEvent<string | number>) => void;
71
+ dataTestId?: string;
72
+ defaultValue?: number;
73
+ disabled?: boolean;
74
+ height?: string;
75
+ list: IContextSelectValue[];
76
+ name: string;
77
+ showSelect?: boolean;
78
+ value?: number | string;
79
+ width?: string;
80
+ }
81
+
82
+ export interface IContextSelectValue {
83
+ id: number | string;
84
+ name: string;
85
+ labelForSelect?: string;
86
+ isDisabled?: boolean;
87
+ }
@@ -0,0 +1,2 @@
1
+ export { ContextSelect } from "./ContextSelect";
2
+ export type { IContextSelectValue } from "./ContextSelect";
@@ -0,0 +1 @@
1
+ export { Notification, showNotification } from "./ui";
@@ -0,0 +1 @@
1
+ export type ISeverity = "success" | "info" | "warning" | "error";
@@ -0,0 +1,13 @@
1
+ import { Alert, styled } from "@mui/material";
2
+
3
+ const StyledAlert = styled(Alert)({
4
+ width: "100%",
5
+ "& .MuiAlert-message": {
6
+ fontSize: "0.8rem",
7
+ },
8
+ " [data-testid=CloseIcon]": {
9
+ fill: "white",
10
+ },
11
+ });
12
+
13
+ export default { Alert: StyledAlert };
@@ -0,0 +1,41 @@
1
+ import Snackbar, { SnackbarCloseReason } from "@mui/material/Snackbar";
2
+ import { SyntheticEvent, useState } from "react";
3
+
4
+ import { ISeverity } from "../model";
5
+
6
+ import Styled from "./index.style";
7
+
8
+ export let showNotification = (
9
+ _message: string,
10
+ _severity: ISeverity,
11
+ ): void => {};
12
+
13
+ export function Notification() {
14
+ const [open, setOpen] = useState(false);
15
+ const [message, setMessage] = useState("");
16
+ const [severity, setSeverity] = useState<ISeverity>("success");
17
+
18
+ showNotification = (message: string, type: ISeverity): void => {
19
+ setMessage(message);
20
+ setSeverity(type);
21
+ setOpen(true);
22
+ };
23
+
24
+ function handleClose(
25
+ _event?: SyntheticEvent | Event,
26
+ reason?: SnackbarCloseReason,
27
+ ) {
28
+ if (reason === "clickaway") {
29
+ return;
30
+ }
31
+ setOpen(false);
32
+ }
33
+
34
+ return (
35
+ <Snackbar open={open} autoHideDuration={5000} onClose={handleClose}>
36
+ <Styled.Alert onClose={handleClose} severity={severity} variant="filled">
37
+ {message}
38
+ </Styled.Alert>
39
+ </Snackbar>
40
+ );
41
+ }
@@ -0,0 +1,11 @@
1
+ import { Box, styled } from "@mui/material";
2
+
3
+ export const WithDatePickerStyles = styled(Box)({
4
+ "& label[data-shrink=false]": {
5
+ top: "-5px",
6
+ fontSize: "14px",
7
+ },
8
+ "& .MuiOutlinedInput-root": {
9
+ height: "40px",
10
+ },
11
+ });
@@ -0,0 +1 @@
1
+ export { WithDatePickerStyles } from "./WithDatePickerStyles";
@@ -0,0 +1 @@
1
+ /// <reference types="vite/client" />