@onewelcome/react-lib-components 8.6.0 → 8.7.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 (321) hide show
  1. package/dist/cjs/Breadcrumbs/Breadcrumbs.module.scss.cjs.js +1 -1
  2. package/dist/cjs/Button/BaseButton.cjs.js +1 -1
  3. package/dist/cjs/Button/BaseButton.cjs.js.map +1 -1
  4. package/dist/cjs/Button/BaseButton.module.scss.cjs.js +1 -1
  5. package/dist/cjs/Button/Button.module.scss.cjs.js +1 -1
  6. package/dist/cjs/Button/IconButton.module.scss.cjs.js +1 -1
  7. package/dist/cjs/ContextMenu/ContextMenu.cjs.js +1 -1
  8. package/dist/cjs/ContextMenu/ContextMenu.cjs.js.map +1 -1
  9. package/dist/cjs/ContextMenu/ContextMenu.module.scss.cjs.js +1 -1
  10. package/dist/cjs/ContextMenu/ContextMenuItem.module.scss.cjs.js +1 -1
  11. package/dist/cjs/DataGrid/DataGrid.module.scss.cjs.js +1 -1
  12. package/dist/cjs/DataGrid/DataGridActions/DataGridActions.module.scss.cjs.js +1 -1
  13. package/dist/cjs/DataGrid/DataGridActions/DataGridColumnsToggle.module.scss.cjs.js +1 -1
  14. package/dist/cjs/DataGrid/DataGridBody/DataGridBody.module.scss.cjs.js +1 -1
  15. package/dist/cjs/DataGrid/DataGridBody/DataGridCell/DataGridCell.module.scss.cjs.js +1 -1
  16. package/dist/cjs/DataGrid/DataGridBody/DataGridDrawer/DataGridDrawer.module.scss.cjs.js +1 -1
  17. package/dist/cjs/DataGrid/DataGridBody/DataGridDrawer/DataGridDrawerItem.module.scss.cjs.js +1 -1
  18. package/dist/cjs/DataGrid/DataGridBody/DataGridRow/DataGridRow.module.scss.cjs.js +1 -1
  19. package/dist/cjs/DataGrid/DataGridFilters/DataGridDateFilter.cjs.js +2 -0
  20. package/dist/cjs/DataGrid/DataGridFilters/DataGridDateFilter.cjs.js.map +1 -0
  21. package/dist/cjs/DataGrid/DataGridFilters/DataGridFilter.module.scss.cjs.js +1 -1
  22. package/dist/cjs/DataGrid/DataGridFilters/DataGridFilterTag.cjs.js +1 -1
  23. package/dist/cjs/DataGrid/DataGridFilters/DataGridFilterTag.cjs.js.map +1 -1
  24. package/dist/cjs/DataGrid/DataGridFilters/DataGridFilters.interfaces.cjs.js.map +1 -1
  25. package/dist/cjs/DataGrid/DataGridFilters/DataGridToolbar.cjs.js +1 -1
  26. package/dist/cjs/DataGrid/DataGridFilters/DataGridToolbar.cjs.js.map +1 -1
  27. package/dist/cjs/DataGrid/DataGridFilters/DataGridToolbar.module.scss.cjs.js +1 -1
  28. package/dist/cjs/DataGrid/DataGridFilters/DateTimePicker/DateTimePicker.cjs.js +2 -0
  29. package/dist/cjs/DataGrid/DataGridFilters/DateTimePicker/DateTimePicker.cjs.js.map +1 -0
  30. package/dist/cjs/DataGrid/DataGridFilters/DateTimePicker/DateTimePicker.module.scss.cjs.js +2 -0
  31. package/dist/cjs/DataGrid/DataGridFilters/DateTimePicker/DateTimePicker.module.scss.cjs.js.map +1 -0
  32. package/dist/cjs/DataGrid/DataGridFilters/DateTimePicker/DateTimePickerCalendarSection.cjs.js +2 -0
  33. package/dist/cjs/DataGrid/DataGridFilters/DateTimePicker/DateTimePickerCalendarSection.cjs.js.map +1 -0
  34. package/dist/cjs/DataGrid/DataGridFilters/DateTimePicker/DateTimePickerInputSection.cjs.js +2 -0
  35. package/dist/cjs/DataGrid/DataGridFilters/DateTimePicker/DateTimePickerInputSection.cjs.js.map +1 -0
  36. package/dist/cjs/DataGrid/DataGridFilters/DateTimePicker/DateTimeService.cjs.js +2 -0
  37. package/dist/cjs/DataGrid/DataGridFilters/DateTimePicker/DateTimeService.cjs.js.map +1 -0
  38. package/dist/cjs/DataGrid/DataGridFilters/DateTimePicker/SideMenu.cjs.js +2 -0
  39. package/dist/cjs/DataGrid/DataGridFilters/DateTimePicker/SideMenu.cjs.js.map +1 -0
  40. package/dist/cjs/DataGrid/DataGridHeader/DataGridHeader.module.scss.cjs.js +1 -1
  41. package/dist/cjs/DataGrid/DataGridHeader/DataGridHeaderCell.module.scss.cjs.js +1 -1
  42. package/dist/cjs/DatePicker/DatePicker.cjs.js +1 -1
  43. package/dist/cjs/DatePicker/DatePicker.cjs.js.map +1 -1
  44. package/dist/cjs/DatePicker/DatePicker.module.scss.cjs.js +1 -1
  45. package/dist/cjs/Form/Checkbox/Checkbox.module.scss.cjs.js +1 -1
  46. package/dist/cjs/Form/Fieldset/Fieldset.module.scss.cjs.js +1 -1
  47. package/dist/cjs/Form/FileUpload/FileItem/FileItem.module.scss.cjs.js +1 -1
  48. package/dist/cjs/Form/FileUpload/FileUpload.module.scss.cjs.js +1 -1
  49. package/dist/cjs/Form/Form.module.scss.cjs.js +1 -1
  50. package/dist/cjs/Form/FormControl/FormControl.module.scss.cjs.js +1 -1
  51. package/dist/cjs/Form/FormGroup/FormGroup.cjs.js +1 -1
  52. package/dist/cjs/Form/FormGroup/FormGroup.cjs.js.map +1 -1
  53. package/dist/cjs/Form/FormGroup/FormGroup.module.scss.cjs.js +1 -1
  54. package/dist/cjs/Form/FormHelperText/FormHelperText.module.scss.cjs.js +1 -1
  55. package/dist/cjs/Form/FormSelectorWrapper/FormSelectorWrapper.cjs.js +1 -1
  56. package/dist/cjs/Form/FormSelectorWrapper/FormSelectorWrapper.cjs.js.map +1 -1
  57. package/dist/cjs/Form/FormSelectorWrapper/FormSelectorWrapper.module.scss.cjs.js +1 -1
  58. package/dist/cjs/Form/Input/Input.module.scss.cjs.js +1 -1
  59. package/dist/cjs/Form/Label/Label.module.scss.cjs.js +1 -1
  60. package/dist/cjs/Form/Radio/Radio.module.scss.cjs.js +1 -1
  61. package/dist/cjs/Form/Select/MultiSelect/MultiSelect.cjs.js +1 -1
  62. package/dist/cjs/Form/Select/MultiSelect/MultiSelect.cjs.js.map +1 -1
  63. package/dist/cjs/Form/Select/MultiSelect/MultiSelect.module.scss.cjs.js +1 -1
  64. package/dist/cjs/Form/Select/MultiSelect/SelectButton.module.scss.cjs.js +1 -1
  65. package/dist/cjs/Form/Select/MultiSelect/SelectedOptions.module.scss.cjs.js +1 -1
  66. package/dist/cjs/Form/Select/SingleSelect/Select.cjs.js +1 -1
  67. package/dist/cjs/Form/Select/SingleSelect/Select.cjs.js.map +1 -1
  68. package/dist/cjs/Form/Select/SingleSelect/Select.module.scss.cjs.js +1 -1
  69. package/dist/cjs/Form/Select/useAddNewBtn.module.scss.cjs.js +1 -1
  70. package/dist/cjs/Form/Select/useSelectPositionList.cjs.js +1 -1
  71. package/dist/cjs/Form/Select/useSelectPositionList.cjs.js.map +1 -1
  72. package/dist/cjs/Form/Textarea/Textarea.module.scss.cjs.js +1 -1
  73. package/dist/cjs/Form/Toggle/Toggle.module.scss.cjs.js +1 -1
  74. package/dist/cjs/Form/Wrapper/CheckboxWrapper/CheckboxWrapper.module.scss.cjs.js +1 -1
  75. package/dist/cjs/Form/Wrapper/InputWrapper/InputWrapper.cjs.js +1 -1
  76. package/dist/cjs/Form/Wrapper/InputWrapper/InputWrapper.cjs.js.map +1 -1
  77. package/dist/cjs/Form/Wrapper/InputWrapper/InputWrapper.module.scss.cjs.js +1 -1
  78. package/dist/cjs/Form/Wrapper/MultiSelectWrapper/MultiSelectWrapper.module.scss.cjs.js +1 -1
  79. package/dist/cjs/Form/Wrapper/RadioWrapper/RadioWrapper.module.scss.cjs.js +1 -1
  80. package/dist/cjs/Form/Wrapper/SelectWrapper/SelectWrapper.module.scss.cjs.js +1 -1
  81. package/dist/cjs/Form/Wrapper/TextareaWrapper/TextareaWrapper.module.scss.cjs.js +1 -1
  82. package/dist/cjs/Form/Wrapper/Wrapper/Wrapper.cjs.js +1 -1
  83. package/dist/cjs/Form/Wrapper/Wrapper/Wrapper.cjs.js.map +1 -1
  84. package/dist/cjs/Form/Wrapper/Wrapper/Wrapper.module.scss.cjs.js +1 -1
  85. package/dist/cjs/Icon/Icon.module.scss.cjs.js +1 -1
  86. package/dist/cjs/Layout/ContentHeader/ContentHeader.module.scss.cjs.js +1 -1
  87. package/dist/cjs/Layout/FormPage/FormWithStepper/FormSection/FormSection.module.scss.cjs.js +1 -1
  88. package/dist/cjs/Layout/FormPage/FormWithStepper/FormStepper/FormStepper.module.scss.cjs.js +1 -1
  89. package/dist/cjs/Layout/FormPage/FormWithStepper/FormWithStepper.module.scss.cjs.js +1 -1
  90. package/dist/cjs/Link/Link.module.scss.cjs.js +1 -1
  91. package/dist/cjs/Notifications/Alert/AlertContainer/AlertContainer.module.scss.cjs.js +1 -1
  92. package/dist/cjs/Notifications/Alert/AlertItem/AlertItem.module.scss.cjs.js +1 -1
  93. package/dist/cjs/Notifications/Banner/Banner.module.scss.cjs.js +1 -1
  94. package/dist/cjs/Notifications/BaseModal/BaseModal.module.scss.cjs.js +1 -1
  95. package/dist/cjs/Notifications/BaseModal/BaseModalActions/BaseModalActions.module.scss.cjs.js +1 -1
  96. package/dist/cjs/Notifications/BaseModal/BaseModalContent/BaseModalContent.module.scss.cjs.js +1 -1
  97. package/dist/cjs/Notifications/BaseModal/BaseModalHeader/BaseModalHeader.module.scss.cjs.js +1 -1
  98. package/dist/cjs/Notifications/Dialog/Dialog.module.scss.cjs.js +1 -1
  99. package/dist/cjs/Notifications/Dialog/DialogActions/DialogActions.module.scss.cjs.js +1 -1
  100. package/dist/cjs/Notifications/Dialog/DialogTitle/DialogTitle.module.scss.cjs.js +1 -1
  101. package/dist/cjs/Notifications/SideSheet/SideSheet.module.scss.cjs.js +1 -1
  102. package/dist/cjs/Notifications/SideSheet/SideSheetContent/SideSheetContent.module.scss.cjs.js +1 -1
  103. package/dist/cjs/Notifications/SideSheet/SideSheetHeader/SideSheetHeader.module.scss.cjs.js +1 -1
  104. package/dist/cjs/Notifications/SlideInModal/SlideInModal.module.scss.cjs.js +1 -1
  105. package/dist/cjs/Pagination/Pagination.module.scss.cjs.js +1 -1
  106. package/dist/cjs/Popover/Popover.module.scss.cjs.js +1 -1
  107. package/dist/cjs/ProgressBar/ProgressBar.module.scss.cjs.js +1 -1
  108. package/dist/cjs/Skeleton/Skeleton.module.scss.cjs.js +1 -1
  109. package/dist/cjs/Spinner/Spinner.module.scss.cjs.js +1 -1
  110. package/dist/cjs/Stepper/Step.module.scss.cjs.js +1 -1
  111. package/dist/cjs/Stepper/Stepper.module.scss.cjs.js +1 -1
  112. package/dist/cjs/Tabs/Tab.module.scss.cjs.js +1 -1
  113. package/dist/cjs/Tabs/TabButton.module.scss.cjs.js +1 -1
  114. package/dist/cjs/Tabs/Tabs.module.scss.cjs.js +1 -1
  115. package/dist/cjs/Tag/RemoveButton.module.scss.cjs.js +1 -1
  116. package/dist/cjs/Tag/Tag.module.scss.cjs.js +1 -1
  117. package/dist/cjs/TextEllipsis/TextEllipsis.module.scss.cjs.js +1 -1
  118. package/dist/cjs/Tiles/Tile.module.scss.cjs.js +1 -1
  119. package/dist/cjs/Tiles/Tiles.module.scss.cjs.js +1 -1
  120. package/dist/cjs/Tooltip/Tooltip.module.scss.cjs.js +1 -1
  121. package/dist/cjs/Typography/Typography.module.scss.cjs.js +1 -1
  122. package/dist/cjs/admin/layout/MicrofrontendContainer/MicrofrontendContainer.module.scss.cjs.js +1 -1
  123. package/dist/cjs/src/components/DataGrid/DataGridFilters/DataGridDateFilter.d.ts +9 -0
  124. package/dist/cjs/src/components/DataGrid/DataGridFilters/DataGridFilterTag.d.ts +2 -1
  125. package/dist/cjs/src/components/DataGrid/DataGridFilters/DataGridFilters.interfaces.d.ts +10 -1
  126. package/dist/cjs/src/components/DataGrid/DataGridFilters/DataGridToolbar.d.ts +5 -3
  127. package/dist/cjs/src/components/DataGrid/DataGridFilters/DateTimePicker/DateTimePicker.d.ts +31 -0
  128. package/dist/cjs/src/components/DataGrid/DataGridFilters/DateTimePicker/DateTimePickerCalendarSection.d.ts +15 -0
  129. package/dist/cjs/src/components/DataGrid/DataGridFilters/DateTimePicker/DateTimePickerInputSection.d.ts +18 -0
  130. package/dist/cjs/src/components/DataGrid/DataGridFilters/DateTimePicker/DateTimeService.d.ts +10 -0
  131. package/dist/cjs/src/components/DataGrid/DataGridFilters/DateTimePicker/SideMenu.d.ts +10 -0
  132. package/dist/cjs/src/components/DataGrid/testUtils.d.ts +7 -1
  133. package/dist/cjs/src/components/DatePicker/DatePicker.d.ts +4 -1
  134. package/dist/cjs/src/components/Form/FormGroup/FormGroup.d.ts +1 -0
  135. package/dist/cjs/src/components/Form/Wrapper/Wrapper/Wrapper.d.ts +1 -0
  136. package/dist/cjs/src/hooks/useClickOutside.cjs.js +2 -0
  137. package/dist/cjs/src/hooks/useClickOutside.cjs.js.map +1 -0
  138. package/dist/cjs/src/hooks/useClickOutside.d.ts +2 -0
  139. package/dist/cjs/src/index.cjs.js +1 -1
  140. package/dist/cjs/src/index.d.ts +1 -0
  141. package/dist/cjs/src/readyclasses.module.scss.cjs.js +1 -1
  142. package/dist/esm/Breadcrumbs/Breadcrumbs.module.scss.esm.js +2 -2
  143. package/dist/esm/Button/BaseButton.esm.js +5 -2
  144. package/dist/esm/Button/BaseButton.esm.js.map +1 -1
  145. package/dist/esm/Button/BaseButton.module.scss.esm.js +2 -2
  146. package/dist/esm/Button/Button.module.scss.esm.js +2 -2
  147. package/dist/esm/Button/IconButton.module.scss.esm.js +2 -2
  148. package/dist/esm/ContextMenu/ContextMenu.esm.js +6 -8
  149. package/dist/esm/ContextMenu/ContextMenu.esm.js.map +1 -1
  150. package/dist/esm/ContextMenu/ContextMenu.module.scss.esm.js +2 -2
  151. package/dist/esm/ContextMenu/ContextMenuItem.esm.js +3 -3
  152. package/dist/esm/ContextMenu/ContextMenuItem.esm.js.map +1 -1
  153. package/dist/esm/ContextMenu/ContextMenuItem.module.scss.esm.js +3 -3
  154. package/dist/esm/DataGrid/DataGrid.module.scss.esm.js +2 -2
  155. package/dist/esm/DataGrid/DataGridActions/DataGridActions.module.scss.esm.js +2 -2
  156. package/dist/esm/DataGrid/DataGridActions/DataGridColumnsToggle.module.scss.esm.js +2 -2
  157. package/dist/esm/DataGrid/DataGridBody/DataGridBody.module.scss.esm.js +2 -2
  158. package/dist/esm/DataGrid/DataGridBody/DataGridCell/DataGridCell.module.scss.esm.js +2 -2
  159. package/dist/esm/DataGrid/DataGridBody/DataGridDrawer/DataGridDrawer.module.scss.esm.js +2 -2
  160. package/dist/esm/DataGrid/DataGridBody/DataGridDrawer/DataGridDrawerItem.module.scss.esm.js +2 -2
  161. package/dist/esm/DataGrid/DataGridBody/DataGridRow/DataGridRow.module.scss.esm.js +2 -2
  162. package/dist/esm/DataGrid/DataGridFilters/DataGridDateFilter.esm.js +35 -0
  163. package/dist/esm/DataGrid/DataGridFilters/DataGridDateFilter.esm.js.map +1 -0
  164. package/dist/esm/DataGrid/DataGridFilters/DataGridFilter.module.scss.esm.js +2 -2
  165. package/dist/esm/DataGrid/DataGridFilters/DataGridFilterTag.esm.js +16 -7
  166. package/dist/esm/DataGrid/DataGridFilters/DataGridFilterTag.esm.js.map +1 -1
  167. package/dist/esm/DataGrid/DataGridFilters/DataGridFilters.interfaces.esm.js.map +1 -1
  168. package/dist/esm/DataGrid/DataGridFilters/DataGridToolbar.esm.js +15 -12
  169. package/dist/esm/DataGrid/DataGridFilters/DataGridToolbar.esm.js.map +1 -1
  170. package/dist/esm/DataGrid/DataGridFilters/DataGridToolbar.module.scss.esm.js +2 -2
  171. package/dist/esm/DataGrid/DataGridFilters/DateTimePicker/DateTimePicker.esm.js +138 -0
  172. package/dist/esm/DataGrid/DataGridFilters/DateTimePicker/DateTimePicker.esm.js.map +1 -0
  173. package/dist/esm/DataGrid/DataGridFilters/DateTimePicker/DateTimePicker.module.scss.esm.js +8 -0
  174. package/dist/esm/DataGrid/DataGridFilters/DateTimePicker/DateTimePicker.module.scss.esm.js.map +1 -0
  175. package/dist/esm/DataGrid/DataGridFilters/DateTimePicker/DateTimePickerCalendarSection.esm.js +54 -0
  176. package/dist/esm/DataGrid/DataGridFilters/DateTimePicker/DateTimePickerCalendarSection.esm.js.map +1 -0
  177. package/dist/esm/DataGrid/DataGridFilters/DateTimePicker/DateTimePickerInputSection.esm.js +51 -0
  178. package/dist/esm/DataGrid/DataGridFilters/DateTimePicker/DateTimePickerInputSection.esm.js.map +1 -0
  179. package/dist/esm/DataGrid/DataGridFilters/DateTimePicker/DateTimeService.esm.js +29 -0
  180. package/dist/esm/DataGrid/DataGridFilters/DateTimePicker/DateTimeService.esm.js.map +1 -0
  181. package/dist/esm/DataGrid/DataGridFilters/DateTimePicker/SideMenu.esm.js +26 -0
  182. package/dist/esm/DataGrid/DataGridFilters/DateTimePicker/SideMenu.esm.js.map +1 -0
  183. package/dist/esm/DataGrid/DataGridHeader/DataGridHeader.module.scss.esm.js +2 -2
  184. package/dist/esm/DataGrid/DataGridHeader/DataGridHeaderCell.module.scss.esm.js +2 -2
  185. package/dist/esm/DatePicker/DatePicker.esm.js +3 -1
  186. package/dist/esm/DatePicker/DatePicker.esm.js.map +1 -1
  187. package/dist/esm/DatePicker/DatePicker.module.scss.esm.js +2 -2
  188. package/dist/esm/Form/Checkbox/Checkbox.module.scss.esm.js +2 -2
  189. package/dist/esm/Form/Fieldset/Fieldset.module.scss.esm.js +2 -2
  190. package/dist/esm/Form/FileUpload/FileItem/FileItem.module.scss.esm.js +2 -2
  191. package/dist/esm/Form/FileUpload/FileUpload.module.scss.esm.js +2 -2
  192. package/dist/esm/Form/Form.module.scss.esm.js +2 -2
  193. package/dist/esm/Form/FormControl/FormControl.module.scss.esm.js +2 -2
  194. package/dist/esm/Form/FormGroup/FormGroup.esm.js +2 -2
  195. package/dist/esm/Form/FormGroup/FormGroup.esm.js.map +1 -1
  196. package/dist/esm/Form/FormGroup/FormGroup.module.scss.esm.js +2 -2
  197. package/dist/esm/Form/FormHelperText/FormHelperText.module.scss.esm.js +2 -2
  198. package/dist/esm/Form/FormSelectorWrapper/FormSelectorWrapper.esm.js +1 -1
  199. package/dist/esm/Form/FormSelectorWrapper/FormSelectorWrapper.esm.js.map +1 -1
  200. package/dist/esm/Form/FormSelectorWrapper/FormSelectorWrapper.module.scss.esm.js +2 -2
  201. package/dist/esm/Form/Input/Input.module.scss.esm.js +2 -2
  202. package/dist/esm/Form/Label/Label.module.scss.esm.js +2 -2
  203. package/dist/esm/Form/Radio/Radio.module.scss.esm.js +2 -2
  204. package/dist/esm/Form/Select/MultiSelect/MultiSelect.esm.js +9 -5
  205. package/dist/esm/Form/Select/MultiSelect/MultiSelect.esm.js.map +1 -1
  206. package/dist/esm/Form/Select/MultiSelect/MultiSelect.module.scss.esm.js +2 -2
  207. package/dist/esm/Form/Select/MultiSelect/SelectButton.module.scss.esm.js +2 -2
  208. package/dist/esm/Form/Select/MultiSelect/SelectedOptions.module.scss.esm.js +2 -2
  209. package/dist/esm/Form/Select/SingleSelect/Select.esm.js +9 -5
  210. package/dist/esm/Form/Select/SingleSelect/Select.esm.js.map +1 -1
  211. package/dist/esm/Form/Select/SingleSelect/Select.module.scss.esm.js +2 -2
  212. package/dist/esm/Form/Select/useAddNewBtn.module.scss.esm.js +2 -2
  213. package/dist/esm/Form/Select/useSelectPositionList.esm.js +8 -11
  214. package/dist/esm/Form/Select/useSelectPositionList.esm.js.map +1 -1
  215. package/dist/esm/Form/Textarea/Textarea.module.scss.esm.js +2 -2
  216. package/dist/esm/Form/Toggle/Toggle.module.scss.esm.js +2 -2
  217. package/dist/esm/Form/Wrapper/CheckboxWrapper/CheckboxWrapper.module.scss.esm.js +2 -2
  218. package/dist/esm/Form/Wrapper/InputWrapper/InputWrapper.esm.js +2 -2
  219. package/dist/esm/Form/Wrapper/InputWrapper/InputWrapper.esm.js.map +1 -1
  220. package/dist/esm/Form/Wrapper/InputWrapper/InputWrapper.module.scss.esm.js +2 -2
  221. package/dist/esm/Form/Wrapper/MultiSelectWrapper/MultiSelectWrapper.module.scss.esm.js +2 -2
  222. package/dist/esm/Form/Wrapper/RadioWrapper/RadioWrapper.module.scss.esm.js +2 -2
  223. package/dist/esm/Form/Wrapper/SelectWrapper/SelectWrapper.module.scss.esm.js +2 -2
  224. package/dist/esm/Form/Wrapper/TextareaWrapper/TextareaWrapper.module.scss.esm.js +2 -2
  225. package/dist/esm/Form/Wrapper/Wrapper/Wrapper.esm.js +2 -2
  226. package/dist/esm/Form/Wrapper/Wrapper/Wrapper.esm.js.map +1 -1
  227. package/dist/esm/Form/Wrapper/Wrapper/Wrapper.module.scss.esm.js +2 -2
  228. package/dist/esm/Icon/Icon.module.scss.esm.js +2 -2
  229. package/dist/esm/Layout/ContentHeader/ContentHeader.module.scss.esm.js +2 -2
  230. package/dist/esm/Layout/FormPage/FormWithStepper/FormSection/FormSection.module.scss.esm.js +2 -2
  231. package/dist/esm/Layout/FormPage/FormWithStepper/FormStepper/FormStepper.module.scss.esm.js +2 -2
  232. package/dist/esm/Layout/FormPage/FormWithStepper/FormWithStepper.module.scss.esm.js +2 -2
  233. package/dist/esm/Link/Link.module.scss.esm.js +2 -2
  234. package/dist/esm/Notifications/Alert/AlertContainer/AlertContainer.module.scss.esm.js +2 -2
  235. package/dist/esm/Notifications/Alert/AlertItem/AlertItem.module.scss.esm.js +2 -2
  236. package/dist/esm/Notifications/Banner/Banner.module.scss.esm.js +2 -2
  237. package/dist/esm/Notifications/BaseModal/BaseModal.module.scss.esm.js +2 -2
  238. package/dist/esm/Notifications/BaseModal/BaseModalActions/BaseModalActions.module.scss.esm.js +2 -2
  239. package/dist/esm/Notifications/BaseModal/BaseModalContent/BaseModalContent.module.scss.esm.js +2 -2
  240. package/dist/esm/Notifications/BaseModal/BaseModalHeader/BaseModalHeader.module.scss.esm.js +2 -2
  241. package/dist/esm/Notifications/Dialog/Dialog.module.scss.esm.js +2 -2
  242. package/dist/esm/Notifications/Dialog/DialogActions/DialogActions.module.scss.esm.js +2 -2
  243. package/dist/esm/Notifications/Dialog/DialogTitle/DialogTitle.module.scss.esm.js +2 -2
  244. package/dist/esm/Notifications/SideSheet/SideSheet.module.scss.esm.js +2 -2
  245. package/dist/esm/Notifications/SideSheet/SideSheetContent/SideSheetContent.module.scss.esm.js +2 -2
  246. package/dist/esm/Notifications/SideSheet/SideSheetHeader/SideSheetHeader.module.scss.esm.js +2 -2
  247. package/dist/esm/Notifications/SlideInModal/SlideInModal.module.scss.esm.js +2 -2
  248. package/dist/esm/Pagination/Pagination.module.scss.esm.js +2 -2
  249. package/dist/esm/Popover/Popover.module.scss.esm.js +2 -2
  250. package/dist/esm/ProgressBar/ProgressBar.module.scss.esm.js +2 -2
  251. package/dist/esm/Skeleton/Skeleton.module.scss.esm.js +2 -2
  252. package/dist/esm/Spinner/Spinner.module.scss.esm.js +2 -2
  253. package/dist/esm/Stepper/Step.module.scss.esm.js +2 -2
  254. package/dist/esm/Stepper/Stepper.module.scss.esm.js +2 -2
  255. package/dist/esm/Tabs/Tab.module.scss.esm.js +2 -2
  256. package/dist/esm/Tabs/TabButton.module.scss.esm.js +2 -2
  257. package/dist/esm/Tabs/Tabs.module.scss.esm.js +2 -2
  258. package/dist/esm/Tag/RemoveButton.module.scss.esm.js +2 -2
  259. package/dist/esm/Tag/Tag.module.scss.esm.js +2 -2
  260. package/dist/esm/TextEllipsis/TextEllipsis.module.scss.esm.js +2 -2
  261. package/dist/esm/Tiles/Tile.module.scss.esm.js +2 -2
  262. package/dist/esm/Tiles/Tiles.module.scss.esm.js +2 -2
  263. package/dist/esm/Tooltip/Tooltip.module.scss.esm.js +2 -2
  264. package/dist/esm/Typography/Typography.module.scss.esm.js +2 -2
  265. package/dist/esm/admin/layout/MicrofrontendContainer/MicrofrontendContainer.module.scss.esm.js +2 -2
  266. package/dist/esm/src/components/DataGrid/DataGridFilters/DataGridDateFilter.d.ts +9 -0
  267. package/dist/esm/src/components/DataGrid/DataGridFilters/DataGridFilterTag.d.ts +2 -1
  268. package/dist/esm/src/components/DataGrid/DataGridFilters/DataGridFilters.interfaces.d.ts +10 -1
  269. package/dist/esm/src/components/DataGrid/DataGridFilters/DataGridToolbar.d.ts +5 -3
  270. package/dist/esm/src/components/DataGrid/DataGridFilters/DateTimePicker/DateTimePicker.d.ts +31 -0
  271. package/dist/esm/src/components/DataGrid/DataGridFilters/DateTimePicker/DateTimePickerCalendarSection.d.ts +15 -0
  272. package/dist/esm/src/components/DataGrid/DataGridFilters/DateTimePicker/DateTimePickerInputSection.d.ts +18 -0
  273. package/dist/esm/src/components/DataGrid/DataGridFilters/DateTimePicker/DateTimeService.d.ts +10 -0
  274. package/dist/esm/src/components/DataGrid/DataGridFilters/DateTimePicker/SideMenu.d.ts +10 -0
  275. package/dist/esm/src/components/DataGrid/testUtils.d.ts +7 -1
  276. package/dist/esm/src/components/DatePicker/DatePicker.d.ts +4 -1
  277. package/dist/esm/src/components/Form/FormGroup/FormGroup.d.ts +1 -0
  278. package/dist/esm/src/components/Form/Wrapper/Wrapper/Wrapper.d.ts +1 -0
  279. package/dist/esm/src/hooks/useClickOutside.d.ts +2 -0
  280. package/dist/esm/src/hooks/useClickOutside.esm.js +38 -0
  281. package/dist/esm/src/hooks/useClickOutside.esm.js.map +1 -0
  282. package/dist/esm/src/index.d.ts +1 -0
  283. package/dist/esm/src/index.esm.js +1 -0
  284. package/dist/esm/src/index.esm.js.map +1 -1
  285. package/dist/esm/src/readyclasses.module.scss.esm.js +2 -2
  286. package/package.json +7 -3
  287. package/src/components/Button/BaseButton.tsx +7 -4
  288. package/src/components/ContextMenu/ContextMenu.tsx +5 -13
  289. package/src/components/DataGrid/DataGridBody/__snapshots__/DataGridBody.test.tsx.snap +4 -4
  290. package/src/components/DataGrid/DataGridFilters/DataGridDateFilter.tsx +65 -0
  291. package/src/components/DataGrid/DataGridFilters/DataGridFilterTag.tsx +25 -5
  292. package/src/components/DataGrid/DataGridFilters/DataGridFilters.interfaces.ts +18 -1
  293. package/src/components/DataGrid/DataGridFilters/DataGridToolbar.tsx +53 -33
  294. package/src/components/DataGrid/DataGridFilters/DateTimePicker/DateTimePicker.module.scss +134 -0
  295. package/src/components/DataGrid/DataGridFilters/DateTimePicker/DateTimePicker.tsx +267 -0
  296. package/src/components/DataGrid/DataGridFilters/DateTimePicker/DateTimePickerCalendarSection.tsx +103 -0
  297. package/src/components/DataGrid/DataGridFilters/DateTimePicker/DateTimePickerInputSection.tsx +121 -0
  298. package/{dist/esm/src/hooks/useBodyClick.esm.js → src/components/DataGrid/DataGridFilters/DateTimePicker/DateTimeService.ts} +14 -17
  299. package/src/components/DataGrid/DataGridFilters/DateTimePicker/SideMenu.tsx +50 -0
  300. package/src/components/DataGrid/testUtils.ts +48 -15
  301. package/src/components/DatePicker/DatePicker.module.scss +32 -9
  302. package/src/components/DatePicker/DatePicker.tsx +15 -1
  303. package/src/components/Form/FormGroup/FormGroup.tsx +6 -1
  304. package/src/components/Form/FormSelectorWrapper/FormSelectorWrapper.tsx +2 -2
  305. package/src/components/Form/Input/Input.module.scss +1 -1
  306. package/src/components/Form/Select/MultiSelect/MultiSelect.module.scss +1 -1
  307. package/src/components/Form/Select/MultiSelect/MultiSelect.tsx +13 -13
  308. package/src/components/Form/Select/SingleSelect/Select.module.scss +1 -1
  309. package/src/components/Form/Select/SingleSelect/Select.tsx +13 -13
  310. package/src/components/Form/Select/useSelectPositionList.ts +8 -12
  311. package/src/components/Form/Wrapper/InputWrapper/InputWrapper.tsx +2 -0
  312. package/src/components/Form/Wrapper/Wrapper/Wrapper.tsx +3 -0
  313. package/src/hooks/{useBodyClick.ts → useClickOutside.ts} +17 -11
  314. package/src/index.ts +1 -0
  315. package/dist/cjs/src/hooks/useBodyClick.cjs.js +0 -2
  316. package/dist/cjs/src/hooks/useBodyClick.cjs.js.map +0 -1
  317. package/dist/cjs/src/hooks/useBodyClick.d.ts +0 -1
  318. package/dist/esm/src/hooks/useBodyClick.d.ts +0 -1
  319. package/dist/esm/src/hooks/useBodyClick.esm.js.map +0 -1
  320. /package/dist/cjs/src/hooks/{useBodyClick.test.d.ts → useClickOutside.test.d.ts} +0 -0
  321. /package/dist/esm/src/hooks/{useBodyClick.test.d.ts → useClickOutside.test.d.ts} +0 -0
@@ -0,0 +1,267 @@
1
+ /*
2
+ * Copyright 2022 OneWelcome B.V.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ import React, { useEffect, useState } from "react";
18
+ import { Popover } from "../../../Popover/Popover";
19
+ import classes from "./DateTimePicker.module.scss";
20
+ import { Button } from "../../../Button/Button";
21
+ import { DateRange } from "react-day-picker";
22
+ import {
23
+ CUSTOM_DATE_RANGE,
24
+ FIVE_MINUTES,
25
+ ONE_HOUR,
26
+ ONE_MINUTE,
27
+ THIRTY_SECONDS,
28
+ TWENTY_FOUR_HOURS,
29
+ formatInputDate
30
+ } from "./DateTimeService";
31
+ import { SideMenu } from "./SideMenu";
32
+ import { addSeconds } from "date-fns";
33
+ import { DateTimePickerInputSection } from "./DateTimePickerInputSection";
34
+ import { DateTimePickerCalendarSection } from "./DateTimePickerCalendarSection";
35
+ import { DateTimeFilter, DateTimeFilterType } from "../DataGridFilters.interfaces";
36
+ import { useRepeatFocus } from "../../../../hooks/useRepeatFocus";
37
+
38
+ export type DateTimePickerTranslations = {
39
+ errors: {
40
+ dateFormatError: string;
41
+ };
42
+ previousMonth: string;
43
+ nextMonth: string;
44
+ from: string;
45
+ to: string;
46
+ cancel: string;
47
+ apply: string;
48
+ dateInputPlaceholder: string;
49
+ };
50
+
51
+ export type Props = {
52
+ popoverRef: React.RefObject<HTMLDivElement>;
53
+ anchorRef?: React.RefObject<HTMLDivElement>;
54
+ isOpen: boolean;
55
+ onTagCaptionChange: (value: string) => void;
56
+ setPickerOpen: (open: boolean) => void;
57
+ translations?: DateTimePickerTranslations;
58
+ dateFilterValue?: DateTimeFilter;
59
+ onDateFilterValueChange?: (dateTimeFilter: DateTimeFilter) => void;
60
+ };
61
+
62
+ export type SideMenuItem = {
63
+ id: DateTimeFilterType;
64
+ name: string;
65
+ rangeSeconds?: number;
66
+ };
67
+
68
+ export const dateFormat = "yyyy-mm-dd hh:mm:ss";
69
+
70
+ const sideMenuItems: SideMenuItem[] = [
71
+ { id: THIRTY_SECONDS, name: "Last 30 seconds", rangeSeconds: 30 },
72
+ { id: ONE_MINUTE, name: "Last 1 minute", rangeSeconds: 60 },
73
+ { id: FIVE_MINUTES, name: "Last 5 minutes", rangeSeconds: 300 },
74
+ { id: ONE_HOUR, name: "Last 1 hour", rangeSeconds: 3600 },
75
+ { id: TWENTY_FOUR_HOURS, name: "Last 24 hours", rangeSeconds: 86400 },
76
+ { id: CUSTOM_DATE_RANGE, name: "Custom" }
77
+ ];
78
+
79
+ export const DateTimePicker = ({
80
+ anchorRef,
81
+ popoverRef,
82
+ isOpen,
83
+ setPickerOpen,
84
+ onTagCaptionChange,
85
+ translations = {
86
+ errors: {
87
+ dateFormatError: `The format must be ${dateFormat}`
88
+ },
89
+ previousMonth: "Previous month",
90
+ nextMonth: "Next month",
91
+ from: "From",
92
+ to: "To",
93
+ cancel: "Cancel",
94
+ apply: "Apply",
95
+ dateInputPlaceholder: dateFormat
96
+ },
97
+ dateFilterValue,
98
+ onDateFilterValueChange
99
+ }: Props) => {
100
+ const {
101
+ errors: { dateFormatError },
102
+ previousMonth,
103
+ nextMonth,
104
+ cancel,
105
+ from,
106
+ to,
107
+ apply,
108
+ dateInputPlaceholder
109
+ } = translations;
110
+ const [selectedDate, setSelectedDate] = useState<DateRange>({
111
+ from: dateFilterValue?.fromDate ? new Date(dateFilterValue?.fromDate) : undefined,
112
+ to: dateFilterValue?.toDate ? new Date(dateFilterValue?.toDate) : undefined
113
+ });
114
+ const [selectedPredefinedRange, setSelectedPredefinedRange] = useState<DateTimeFilterType>(
115
+ sideMenuItems[0].id
116
+ );
117
+ const [fromDateText, setFromDateText] = useState("");
118
+ const [toDateText, setToDateText] = useState("");
119
+ const [fromDateError, setFromDateError] = useState("");
120
+ const [toDateError, setToDateError] = useState("");
121
+ useRepeatFocus(popoverRef);
122
+
123
+ const disableDateRangePickers = selectedPredefinedRange !== CUSTOM_DATE_RANGE;
124
+
125
+ useEffect(() => {
126
+ if (isOpen) {
127
+ popoverRef.current?.focus();
128
+ }
129
+ }, [isOpen]);
130
+
131
+ useEffect(() => {
132
+ if (dateFilterValue) {
133
+ const foundItem = sideMenuItems.find(item => item.id === dateFilterValue.type);
134
+
135
+ foundItem && onTagCaptionChange(foundItem.name);
136
+
137
+ setSelectedPredefinedRange(dateFilterValue.type);
138
+
139
+ if (foundItem?.rangeSeconds && dateFilterValue.type !== CUSTOM_DATE_RANGE) {
140
+ const fromDate = addSeconds(new Date(), -foundItem.rangeSeconds);
141
+ const toDate = new Date();
142
+
143
+ setFromDateText(formatInputDate(fromDate));
144
+ setToDateText(formatInputDate(toDate));
145
+ setSelectedDate({ from: fromDate, to: toDate });
146
+
147
+ return;
148
+ }
149
+
150
+ dateFilterValue.fromDate &&
151
+ setFromDateText(formatInputDate(new Date(dateFilterValue.fromDate)));
152
+
153
+ dateFilterValue.toDate && setToDateText(formatInputDate(new Date(dateFilterValue.toDate)));
154
+
155
+ setSelectedDate({
156
+ from: dateFilterValue?.fromDate ? new Date(dateFilterValue?.fromDate) : undefined,
157
+ to: dateFilterValue?.toDate ? new Date(dateFilterValue?.toDate) : undefined
158
+ });
159
+ }
160
+ }, [dateFilterValue]);
161
+
162
+ useEffect(() => {
163
+ if (!dateFilterValue) {
164
+ isOpen && onSideMenuItemSelect(selectedPredefinedRange);
165
+ }
166
+ }, [isOpen, dateFilterValue]);
167
+
168
+ const onSideMenuItemSelect = (itemId: DateTimeFilterType) => {
169
+ setSelectedPredefinedRange(itemId);
170
+ const foundItem = sideMenuItems.find(item => item.id === itemId);
171
+ foundItem && onTagCaptionChange(foundItem.name);
172
+
173
+ if (itemId !== CUSTOM_DATE_RANGE) {
174
+ if (!foundItem) {
175
+ return;
176
+ }
177
+
178
+ if (foundItem.rangeSeconds) {
179
+ const fromDate = addSeconds(new Date(), -foundItem.rangeSeconds);
180
+ const toDate = new Date();
181
+
182
+ setSelectedDate({ from: fromDate, to: toDate });
183
+ setFromDateText(formatInputDate(fromDate));
184
+ setToDateText(formatInputDate(toDate));
185
+ }
186
+ }
187
+ };
188
+
189
+ const closeDateTimePicker = () => {
190
+ setPickerOpen(false);
191
+ };
192
+
193
+ const saveDateTimePicker = () => {
194
+ onDateFilterValueChange &&
195
+ onDateFilterValueChange({
196
+ toDate: selectedDate.to?.toISOString() ?? "",
197
+ fromDate: selectedDate.from?.toISOString() ?? "",
198
+ type: selectedPredefinedRange
199
+ });
200
+ setPickerOpen(false);
201
+ };
202
+
203
+ return (
204
+ <Popover
205
+ tabIndex={-1}
206
+ anchorEl={anchorRef}
207
+ ref={popoverRef}
208
+ show={isOpen}
209
+ placement={{ horizontal: "left", vertical: "bottom" }}
210
+ transformOrigin={{ horizontal: "left", vertical: "top" }}
211
+ >
212
+ {isOpen && (
213
+ <div className={classes["popover"]}>
214
+ <div className={classes["content-wrapper"]}>
215
+ <div className={classes["aside"]}>
216
+ <SideMenu
217
+ sideMenuItems={sideMenuItems}
218
+ selectedItemId={selectedPredefinedRange}
219
+ onItemSelect={onSideMenuItemSelect}
220
+ />
221
+ </div>
222
+ <div
223
+ className={`${classes["controls"]} ${toDateError || fromDateError ? classes["has-error"] : ""}`}
224
+ >
225
+ <div className={classes["controls-panel"]}>
226
+ <DateTimePickerInputSection
227
+ from={from}
228
+ to={to}
229
+ dateInputPlaceholder={dateInputPlaceholder}
230
+ dateFormatError={dateFormatError}
231
+ fromDateText={fromDateText}
232
+ toDateText={toDateText}
233
+ fromDateError={fromDateError}
234
+ toDateError={toDateError}
235
+ setSelectedDate={setSelectedDate}
236
+ setFromDateText={setFromDateText}
237
+ setToDateText={setToDateText}
238
+ setFromDateError={setFromDateError}
239
+ setToDateError={setToDateError}
240
+ />
241
+ </div>
242
+ <div className={`${classes["controls-panel"]} ${classes["set-height"]}`}>
243
+ <DateTimePickerCalendarSection
244
+ previousMonth={previousMonth}
245
+ nextMonth={nextMonth}
246
+ selectedDate={selectedDate}
247
+ disableDateRangePickers={disableDateRangePickers}
248
+ setSelectedDate={setSelectedDate}
249
+ setFromDateText={setFromDateText}
250
+ setFromDateError={setFromDateError}
251
+ setToDateText={setToDateText}
252
+ setToDateError={setToDateError}
253
+ />
254
+ </div>
255
+ </div>
256
+ </div>
257
+ <div className={classes["actions"]}>
258
+ <Button variant="text" onClick={closeDateTimePicker}>
259
+ {cancel}
260
+ </Button>
261
+ <Button onClick={saveDateTimePicker}>{apply}</Button>
262
+ </div>
263
+ </div>
264
+ )}
265
+ </Popover>
266
+ );
267
+ };
@@ -0,0 +1,103 @@
1
+ /*
2
+ * Copyright 2022 OneWelcome B.V.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ import React from "react";
18
+ import classes from "./DateTimePicker.module.scss";
19
+ import { DatePicker } from "../../../DatePicker/DatePicker";
20
+ import { IconButton } from "../../../Button/IconButton";
21
+ import { DateRange } from "react-day-picker";
22
+ import { formatInputDate, getMonthName, getYearFromDate } from "./DateTimeService";
23
+ import { Icon, Icons } from "../../../Icon/Icon";
24
+ import { Typography } from "../../../Typography/Typography";
25
+
26
+ type Props = {
27
+ previousMonth: string;
28
+ nextMonth: string;
29
+ selectedDate: DateRange | undefined;
30
+ disableDateRangePickers: boolean;
31
+ setSelectedDate: React.Dispatch<React.SetStateAction<DateRange>>;
32
+ setFromDateText: React.Dispatch<React.SetStateAction<string>>;
33
+ setToDateText: React.Dispatch<React.SetStateAction<string>>;
34
+ setFromDateError: React.Dispatch<React.SetStateAction<string>>;
35
+ setToDateError: React.Dispatch<React.SetStateAction<string>>;
36
+ };
37
+
38
+ export const DateTimePickerCalendarSection = ({
39
+ previousMonth,
40
+ nextMonth,
41
+ selectedDate,
42
+ disableDateRangePickers,
43
+ setSelectedDate,
44
+ setFromDateText,
45
+ setFromDateError,
46
+ setToDateError,
47
+ setToDateText
48
+ }: Props) => {
49
+ const onDatePickerSelect = (date: Date | DateRange | undefined): void => {
50
+ if (date) {
51
+ setSelectedDate(date as DateRange);
52
+
53
+ const fromDate = (date as DateRange).from;
54
+ const toDate = (date as DateRange).to;
55
+
56
+ if (fromDate) {
57
+ setFromDateText(formatInputDate(fromDate));
58
+ setFromDateError("");
59
+ }
60
+
61
+ if (toDate) {
62
+ setToDateText(formatInputDate(toDate));
63
+ setToDateError("");
64
+ }
65
+ }
66
+ };
67
+ return (
68
+ <DatePicker
69
+ onSelect={onDatePickerSelect}
70
+ value={selectedDate}
71
+ disabled={disableDateRangePickers}
72
+ mode={"range"}
73
+ components={{
74
+ Nav: ({ onNextClick, onPreviousClick }) => (
75
+ <div className={classes["nav"]}>
76
+ <IconButton
77
+ title={previousMonth}
78
+ onClick={onPreviousClick}
79
+ className={classes["prev-button"]}
80
+ disabled={disableDateRangePickers}
81
+ >
82
+ <Icon size="0.75rem" icon={Icons.ChevronLeft} />
83
+ </IconButton>
84
+ <IconButton
85
+ title={nextMonth}
86
+ onClick={onNextClick}
87
+ className={classes["next-button"]}
88
+ disabled={disableDateRangePickers}
89
+ >
90
+ <Icon size="0.75rem" icon={Icons.ChevronRight} />
91
+ </IconButton>
92
+ </div>
93
+ ),
94
+ MonthCaption: ({ calendarMonth }) => (
95
+ <Typography className={classes["month-caption"]} variant="body">
96
+ {getMonthName(calendarMonth.date)} {getYearFromDate(calendarMonth.date)}
97
+ </Typography>
98
+ )
99
+ }}
100
+ numberOfMonths={2}
101
+ />
102
+ );
103
+ };
@@ -0,0 +1,121 @@
1
+ /*
2
+ * Copyright 2022 OneWelcome B.V.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ import React, { Fragment } from "react";
18
+ import { InputWrapper } from "../../../Form/Wrapper/InputWrapper/InputWrapper";
19
+ import classes from "./DateTimePicker.module.scss";
20
+ import { parse } from "date-fns";
21
+ import { DateRange } from "react-day-picker";
22
+
23
+ export type Props = {
24
+ from: string;
25
+ to: string;
26
+ dateInputPlaceholder: string;
27
+ dateFormatError: string;
28
+ fromDateText: string;
29
+ toDateText: string;
30
+ fromDateError: string;
31
+ toDateError: string;
32
+ setSelectedDate: React.Dispatch<React.SetStateAction<DateRange>>;
33
+ setFromDateText: React.Dispatch<React.SetStateAction<string>>;
34
+ setToDateText: React.Dispatch<React.SetStateAction<string>>;
35
+ setFromDateError: React.Dispatch<React.SetStateAction<string>>;
36
+ setToDateError: React.Dispatch<React.SetStateAction<string>>;
37
+ };
38
+
39
+ export const DateTimePickerInputSection = ({
40
+ from,
41
+ to,
42
+ dateInputPlaceholder,
43
+ dateFormatError,
44
+ toDateText,
45
+ fromDateText,
46
+ fromDateError,
47
+ toDateError,
48
+ setSelectedDate,
49
+ setFromDateText,
50
+ setToDateText,
51
+ setFromDateError,
52
+ setToDateError
53
+ }: Props) => {
54
+ const dateParseTemplate = "yyyy-MM-dd HH:mm:ss";
55
+ const parseDate = (date: string) => {
56
+ const dateText = parse(date, dateParseTemplate, new Date());
57
+ return dateText;
58
+ };
59
+
60
+ const validationRegex =
61
+ /^(\d{4})-(0[1-9]|1[012])-(0[1-9]|[12]\d|3[01]) ([0-1]\d|2[0-3]):([0-5]\d):([0-5]\d)$/;
62
+ const validateInput = (text: string) => validationRegex.test(text);
63
+
64
+ const onInputBlur =
65
+ (setError: (value: React.SetStateAction<string>) => void, setDate: (value: string) => void) =>
66
+ (e: React.FocusEvent<HTMLInputElement, Element>) => {
67
+ if (!validateInput(e.target.value)) {
68
+ setError(dateFormatError);
69
+ return;
70
+ }
71
+
72
+ setDate(e.target.value);
73
+ setError("");
74
+ };
75
+
76
+ const setFromDate = (value: string) =>
77
+ setSelectedDate(prev => ({ ...prev, from: parseDate(value) }));
78
+
79
+ const setToDate = (value: string) =>
80
+ setSelectedDate(prev => ({ from: prev?.from, to: parseDate(value) }));
81
+
82
+ const onFromInputBlur = onInputBlur(setFromDateError, setFromDate);
83
+ const onToInputBlur = onInputBlur(setToDateError, setToDate);
84
+
85
+ return (
86
+ <Fragment>
87
+ <InputWrapper
88
+ label={from}
89
+ name="fromDate"
90
+ error={!!fromDateError}
91
+ errorMessage={fromDateError}
92
+ errorMessageProps={{ className: classes["error-message"] }}
93
+ helperProps={{
94
+ style: { fontSize: "0.625rem" }
95
+ }}
96
+ type="text"
97
+ value={fromDateText}
98
+ onBlur={onFromInputBlur}
99
+ onChange={e => setFromDateText(e.target.value)}
100
+ inputProps={{ style: { height: "2rem" }, placeholder: dateInputPlaceholder }}
101
+ className={classes["input"]}
102
+ />
103
+ <InputWrapper
104
+ className={classes["input"]}
105
+ inputProps={{ style: { height: "2rem" }, placeholder: dateInputPlaceholder }}
106
+ label={to}
107
+ value={toDateText}
108
+ error={!!toDateError}
109
+ errorMessage={toDateError}
110
+ errorMessageProps={{ className: classes["error-message"] }}
111
+ helperProps={{
112
+ style: { fontSize: "0.625rem" }
113
+ }}
114
+ onChange={e => setToDateText(e.target.value)}
115
+ onBlur={onToInputBlur}
116
+ name="toDate"
117
+ type="text"
118
+ />
119
+ </Fragment>
120
+ );
121
+ };
@@ -1,5 +1,3 @@
1
- import { useEffect } from 'react';
2
-
3
1
  /*
4
2
  * Copyright 2022 OneWelcome B.V.
5
3
  *
@@ -15,19 +13,18 @@ import { useEffect } from 'react';
15
13
  * See the License for the specific language governing permissions and
16
14
  * limitations under the License.
17
15
  */
18
- const useBodyClick = (checkFunction, callbackFunction, dependingStateVariable) => {
19
- function bodyClickListener(event) {
20
- if (checkFunction(event)) {
21
- callbackFunction();
22
- }
23
- }
24
- useEffect(() => {
25
- window.addEventListener("click", bodyClickListener);
26
- return () => {
27
- window.removeEventListener("click", bodyClickListener);
28
- };
29
- }, [dependingStateVariable]);
30
- };
31
16
 
32
- export { useBodyClick };
33
- //# sourceMappingURL=useBodyClick.esm.js.map
17
+ import { format, Locale } from "date-fns";
18
+
19
+ export const THIRTY_SECONDS = "THIRTY_SECONDS";
20
+ export const ONE_MINUTE = "ONE_MINUTE";
21
+ export const FIVE_MINUTES = "FIVE_MINUTES";
22
+ export const ONE_HOUR = "ONE_HOUR";
23
+ export const TWENTY_FOUR_HOURS = "TWENTY_FOUR_HOURS";
24
+ export const CUSTOM_DATE_RANGE = "CUSTOM";
25
+
26
+ export const getMonthName = (date: Date, locale?: Locale) => format(date, "MMMM", { locale });
27
+
28
+ export const getYearFromDate = (date: Date) => format(date, "yyyy");
29
+
30
+ export const formatInputDate = (date: Date) => format(date, "yyyy-MM-dd HH:mm:ss");
@@ -0,0 +1,50 @@
1
+ /*
2
+ * Copyright 2022 OneWelcome B.V.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ import React from "react";
18
+ import classes from "./DateTimePicker.module.scss";
19
+ import contextMenuItemClasses from "../../../ContextMenu/ContextMenuItem.module.scss";
20
+ import { SideMenuItem } from "./DateTimePicker";
21
+ import { DateTimeFilterType } from "../DataGridFilters.interfaces";
22
+
23
+ type Props = {
24
+ sideMenuItems: SideMenuItem[];
25
+ selectedItemId: string;
26
+ onItemSelect: (id: DateTimeFilterType) => void;
27
+ };
28
+
29
+ export const SideMenu = ({ sideMenuItems, selectedItemId, onItemSelect }: Props) => {
30
+ return (
31
+ <ul className={classes["aside-menu"]}>
32
+ {sideMenuItems.map(item => (
33
+ <li
34
+ key={item.id}
35
+ role="none"
36
+ className={`${contextMenuItemClasses["context-menu-item"]} ${classes["aside-menu-item"]}`}
37
+ >
38
+ <button
39
+ role="menuitem"
40
+ style={{ height: "2rem" }}
41
+ className={selectedItemId === item.id ? contextMenuItemClasses["active"] : undefined}
42
+ onClick={() => onItemSelect(item.id)}
43
+ >
44
+ {item.name}
45
+ </button>
46
+ </li>
47
+ ))}
48
+ </ul>
49
+ );
50
+ };
@@ -15,8 +15,9 @@
15
15
  */
16
16
 
17
17
  import { useEffect, useState } from "react";
18
- import { Filter } from "./DataGridFilters/DataGridFilters.interfaces";
18
+ import { DateTimeFilter, Filter } from "./DataGridFilters/DataGridFilters.interfaces";
19
19
  import { useFiltersReducer } from "./DataGridFilters/useFiltersReducer";
20
+ import { isWithinInterval } from "date-fns";
20
21
 
21
22
  type OperatorPredicateMap<TOperator extends string> = {
22
23
  [op in TOperator]: (v1: string, v2: string) => boolean;
@@ -47,10 +48,26 @@ export const useMockFilteringLogic = <T extends { [k: string]: string }>(
47
48
 
48
49
  const [gridData, setGridData] = useState(data);
49
50
 
51
+ const filterRow = (row: T) => {
52
+ let shouldBeDiscarded: boolean[] = [];
53
+ state.filters.forEach(filter => {
54
+ const reduce = filter.operator == "is" ? reduceDisjunction : reduceConjunction;
55
+ const operatorPredicate = operatorPredicateMap[filter.operator];
56
+ shouldBeDiscarded = [
57
+ ...shouldBeDiscarded,
58
+ !reduce(filter.value, val => operatorPredicate(row[filter.column], val))
59
+ ];
60
+ });
61
+
62
+ return shouldBeDiscarded.length > 0 && shouldBeDiscarded.reduce((acc, val) => acc || val, false)
63
+ ? undefined
64
+ : row;
65
+ };
66
+
50
67
  useEffect(() => {
51
68
  const filteredData = data.map(filterRow).filter(val => {
52
69
  return val !== undefined;
53
- });
70
+ }) as T[];
54
71
  setGridData(filteredData);
55
72
  }, [state.filters]);
56
73
 
@@ -63,20 +80,36 @@ export const useMockFilteringLogic = <T extends { [k: string]: string }>(
63
80
  setGridData,
64
81
  filters: state.filters
65
82
  };
83
+ };
66
84
 
67
- function filterRow(row: T) {
68
- let shouldBeDiscarded: boolean[] = [];
69
- state.filters.forEach(filter => {
70
- const reduce = filter.operator == "is" ? reduceDisjunction : reduceConjunction;
71
- const operatorPredicate = operatorPredicateMap[filter.operator];
72
- shouldBeDiscarded = [
73
- ...shouldBeDiscarded,
74
- !reduce(filter.value, val => operatorPredicate(row[filter.column], val))
75
- ];
85
+ export const useMockFilteringByDateLogic = <T extends { [k: string]: string | Date }>(
86
+ data: T[],
87
+ dateFieldKey: string,
88
+ filterValue: DateTimeFilter | undefined
89
+ ) => {
90
+ const [gridData, setGridData] = useState(data);
91
+
92
+ const filterRowByDateRange = (date: string | Date, fromDate: string, toDate: string): boolean => {
93
+ return isWithinInterval(new Date(date), {
94
+ start: new Date(fromDate),
95
+ end: new Date(toDate)
76
96
  });
97
+ };
77
98
 
78
- return shouldBeDiscarded.length > 0 && shouldBeDiscarded.reduce((acc, val) => acc || val, false)
79
- ? undefined
80
- : row;
81
- }
99
+ useEffect(() => {
100
+ if (filterValue) {
101
+ const fromDate = filterValue.fromDate;
102
+ const toDate = filterValue.toDate;
103
+
104
+ const filteredData = data.filter(item =>
105
+ filterRowByDateRange(item[dateFieldKey], fromDate, toDate)
106
+ );
107
+ setGridData(filteredData);
108
+ }
109
+ }, [filterValue, data]);
110
+
111
+ return {
112
+ gridData,
113
+ setGridData
114
+ };
82
115
  };