@onewelcome/react-lib-components 8.5.0 → 8.7.0

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 (334) hide show
  1. package/dist/cjs/Button/BaseButton.cjs.js +1 -1
  2. package/dist/cjs/Button/BaseButton.cjs.js.map +1 -1
  3. package/dist/cjs/ContextMenu/ContextMenu.cjs.js +1 -1
  4. package/dist/cjs/ContextMenu/ContextMenu.cjs.js.map +1 -1
  5. package/dist/cjs/DataGrid/DataGridFilters/DataGridDateFilter.cjs.js +2 -0
  6. package/dist/cjs/DataGrid/DataGridFilters/DataGridDateFilter.cjs.js.map +1 -0
  7. package/dist/cjs/DataGrid/DataGridFilters/DataGridFilterTag.cjs.js +1 -1
  8. package/dist/cjs/DataGrid/DataGridFilters/DataGridFilterTag.cjs.js.map +1 -1
  9. package/dist/cjs/DataGrid/DataGridFilters/DataGridFilters.interfaces.cjs.js.map +1 -1
  10. package/dist/cjs/DataGrid/DataGridFilters/DataGridToolbar.cjs.js +1 -1
  11. package/dist/cjs/DataGrid/DataGridFilters/DataGridToolbar.cjs.js.map +1 -1
  12. package/dist/cjs/DataGrid/DataGridFilters/DateTimePicker/DateTimePicker.cjs.js +2 -0
  13. package/dist/cjs/DataGrid/DataGridFilters/DateTimePicker/DateTimePicker.cjs.js.map +1 -0
  14. package/dist/cjs/DataGrid/DataGridFilters/DateTimePicker/DateTimePicker.module.scss.cjs.js +2 -0
  15. package/dist/cjs/DataGrid/DataGridFilters/DateTimePicker/DateTimePicker.module.scss.cjs.js.map +1 -0
  16. package/dist/cjs/DataGrid/DataGridFilters/DateTimePicker/DateTimePickerCalendarSection.cjs.js +2 -0
  17. package/dist/cjs/DataGrid/DataGridFilters/DateTimePicker/DateTimePickerCalendarSection.cjs.js.map +1 -0
  18. package/dist/cjs/DataGrid/DataGridFilters/DateTimePicker/DateTimePickerInputSection.cjs.js +2 -0
  19. package/dist/cjs/DataGrid/DataGridFilters/DateTimePicker/DateTimePickerInputSection.cjs.js.map +1 -0
  20. package/dist/cjs/DataGrid/DataGridFilters/DateTimePicker/DateTimeService.cjs.js +2 -0
  21. package/dist/cjs/DataGrid/DataGridFilters/DateTimePicker/DateTimeService.cjs.js.map +1 -0
  22. package/dist/cjs/DataGrid/DataGridFilters/DateTimePicker/SideMenu.cjs.js +2 -0
  23. package/dist/cjs/DataGrid/DataGridFilters/DateTimePicker/SideMenu.cjs.js.map +1 -0
  24. package/dist/cjs/DatePicker/DatePicker.cjs.js +1 -1
  25. package/dist/cjs/DatePicker/DatePicker.cjs.js.map +1 -1
  26. package/dist/cjs/DatePicker/DatePicker.module.scss.cjs.js +1 -1
  27. package/dist/cjs/Form/Checkbox/Checkbox.cjs.js +1 -1
  28. package/dist/cjs/Form/Checkbox/Checkbox.cjs.js.map +1 -1
  29. package/dist/cjs/Form/Checkbox/Checkbox.module.scss.cjs.js +1 -1
  30. package/dist/cjs/Form/Fieldset/Fieldset.cjs.js +1 -1
  31. package/dist/cjs/Form/Fieldset/Fieldset.cjs.js.map +1 -1
  32. package/dist/cjs/Form/FileUpload/FileItem/FileItem.cjs.js +1 -1
  33. package/dist/cjs/Form/FileUpload/FileItem/FileItem.cjs.js.map +1 -1
  34. package/dist/cjs/Form/FileUpload/FileItem/FileItem.module.scss.cjs.js +1 -1
  35. package/dist/cjs/Form/FileUpload/FileUpload.cjs.js +1 -1
  36. package/dist/cjs/Form/FileUpload/FileUpload.cjs.js.map +1 -1
  37. package/dist/cjs/Form/FileUpload/FileUpload.module.scss.cjs.js +1 -1
  38. package/dist/cjs/Form/FormGroup/FormGroup.cjs.js +1 -1
  39. package/dist/cjs/Form/FormGroup/FormGroup.cjs.js.map +1 -1
  40. package/dist/cjs/Form/FormHelperText/FormHelperText.module.scss.cjs.js +1 -1
  41. package/dist/cjs/Form/FormSelectorWrapper/FormSelectorWrapper.cjs.js +1 -1
  42. package/dist/cjs/Form/FormSelectorWrapper/FormSelectorWrapper.cjs.js.map +1 -1
  43. package/dist/cjs/Form/Input/Input.cjs.js +1 -1
  44. package/dist/cjs/Form/Input/Input.cjs.js.map +1 -1
  45. package/dist/cjs/Form/Input/Input.module.scss.cjs.js +1 -1
  46. package/dist/cjs/Form/Radio/Radio.cjs.js +1 -1
  47. package/dist/cjs/Form/Radio/Radio.cjs.js.map +1 -1
  48. package/dist/cjs/Form/Radio/Radio.module.scss.cjs.js +1 -1
  49. package/dist/cjs/Form/Select/MultiSelect/MultiSelect.cjs.js +1 -1
  50. package/dist/cjs/Form/Select/MultiSelect/MultiSelect.cjs.js.map +1 -1
  51. package/dist/cjs/Form/Select/MultiSelect/MultiSelect.module.scss.cjs.js +1 -1
  52. package/dist/cjs/Form/Select/MultiSelect/SelectedOptions.module.scss.cjs.js +1 -1
  53. package/dist/cjs/Form/Select/MultiSelect/useArrowNavigation.cjs.js +1 -1
  54. package/dist/cjs/Form/Select/MultiSelect/useArrowNavigation.cjs.js.map +1 -1
  55. package/dist/cjs/Form/Select/MultiSelect/useMultiSelect.cjs.js +2 -0
  56. package/dist/cjs/Form/Select/MultiSelect/useMultiSelect.cjs.js.map +1 -0
  57. package/dist/cjs/Form/Select/Select.interfaces.cjs.js +2 -0
  58. package/dist/cjs/Form/Select/Select.interfaces.cjs.js.map +1 -0
  59. package/dist/cjs/Form/Select/SingleSelect/Select.cjs.js +1 -1
  60. package/dist/cjs/Form/Select/SingleSelect/Select.cjs.js.map +1 -1
  61. package/dist/cjs/Form/Select/SingleSelect/Select.module.scss.cjs.js +1 -1
  62. package/dist/cjs/Form/Select/SingleSelect/useArrowNavigation.cjs.js +1 -1
  63. package/dist/cjs/Form/Select/SingleSelect/useArrowNavigation.cjs.js.map +1 -1
  64. package/dist/cjs/Form/Select/useSelectPositionList.cjs.js +1 -1
  65. package/dist/cjs/Form/Select/useSelectPositionList.cjs.js.map +1 -1
  66. package/dist/cjs/Form/Textarea/Textarea.cjs.js +1 -1
  67. package/dist/cjs/Form/Textarea/Textarea.cjs.js.map +1 -1
  68. package/dist/cjs/Form/Textarea/Textarea.module.scss.cjs.js +1 -1
  69. package/dist/cjs/Form/Wrapper/CheckboxWrapper/CheckboxWrapper.cjs.js +1 -1
  70. package/dist/cjs/Form/Wrapper/CheckboxWrapper/CheckboxWrapper.cjs.js.map +1 -1
  71. package/dist/cjs/Form/Wrapper/InputWrapper/InputWrapper.cjs.js +1 -1
  72. package/dist/cjs/Form/Wrapper/InputWrapper/InputWrapper.cjs.js.map +1 -1
  73. package/dist/cjs/Form/Wrapper/InputWrapper/InputWrapper.module.scss.cjs.js +1 -1
  74. package/dist/cjs/Form/Wrapper/MultiSelectWrapper/MultiSelectWrapper.cjs.js +1 -1
  75. package/dist/cjs/Form/Wrapper/MultiSelectWrapper/MultiSelectWrapper.cjs.js.map +1 -1
  76. package/dist/cjs/Form/Wrapper/RadioWrapper/RadioWrapper.cjs.js +1 -1
  77. package/dist/cjs/Form/Wrapper/RadioWrapper/RadioWrapper.cjs.js.map +1 -1
  78. package/dist/cjs/Form/Wrapper/SelectWrapper/SelectWrapper.cjs.js +1 -1
  79. package/dist/cjs/Form/Wrapper/SelectWrapper/SelectWrapper.cjs.js.map +1 -1
  80. package/dist/cjs/Form/Wrapper/TextareaWrapper/TextareaWrapper.cjs.js +1 -1
  81. package/dist/cjs/Form/Wrapper/TextareaWrapper/TextareaWrapper.cjs.js.map +1 -1
  82. package/dist/cjs/Form/Wrapper/TextareaWrapper/TextareaWrapper.module.scss.cjs.js +1 -1
  83. package/dist/cjs/Form/Wrapper/Wrapper/Wrapper.cjs.js +1 -1
  84. package/dist/cjs/Form/Wrapper/Wrapper/Wrapper.cjs.js.map +1 -1
  85. package/dist/cjs/Form/Wrapper/Wrapper/Wrapper.module.scss.cjs.js +1 -1
  86. package/dist/cjs/_BaseStyling_/BaseStyling.cjs.js +1 -1
  87. package/dist/cjs/_BaseStyling_/BaseStyling.cjs.js.map +1 -1
  88. package/dist/cjs/src/components/DataGrid/DataGridFilters/DataGridDateFilter.d.ts +9 -0
  89. package/dist/cjs/src/components/DataGrid/DataGridFilters/DataGridFilterTag.d.ts +2 -1
  90. package/dist/cjs/src/components/DataGrid/DataGridFilters/DataGridFilters.interfaces.d.ts +10 -1
  91. package/dist/cjs/src/components/DataGrid/DataGridFilters/DataGridToolbar.d.ts +5 -3
  92. package/dist/cjs/src/components/DataGrid/DataGridFilters/DateTimePicker/DateTimePicker.d.ts +31 -0
  93. package/dist/cjs/src/components/DataGrid/DataGridFilters/DateTimePicker/DateTimePickerCalendarSection.d.ts +15 -0
  94. package/dist/cjs/src/components/DataGrid/DataGridFilters/DateTimePicker/DateTimePickerInputSection.d.ts +18 -0
  95. package/dist/cjs/src/components/DataGrid/DataGridFilters/DateTimePicker/DateTimeService.d.ts +10 -0
  96. package/dist/cjs/src/components/DataGrid/DataGridFilters/DateTimePicker/SideMenu.d.ts +10 -0
  97. package/dist/cjs/src/components/DataGrid/testUtils.d.ts +7 -1
  98. package/dist/cjs/src/components/DatePicker/DatePicker.d.ts +4 -1
  99. package/dist/cjs/src/components/Form/Checkbox/Checkbox.d.ts +1 -1
  100. package/dist/cjs/src/components/Form/Fieldset/Fieldset.d.ts +1 -1
  101. package/dist/cjs/src/components/Form/FileUpload/FileItem/FileItem.d.ts +1 -1
  102. package/dist/cjs/src/components/Form/FileUpload/FileUpload.d.ts +6 -1
  103. package/dist/cjs/src/components/Form/FormGroup/FormGroup.d.ts +1 -0
  104. package/dist/cjs/src/components/Form/Input/Input.d.ts +2 -1
  105. package/dist/cjs/src/components/Form/Radio/Radio.d.ts +1 -1
  106. package/dist/cjs/src/components/Form/Select/MultiSelect/MultiSelect.d.ts +1 -1
  107. package/dist/cjs/src/components/Form/Select/MultiSelect/useArrowNavigation.d.ts +2 -1
  108. package/dist/cjs/src/components/Form/Select/MultiSelect/useMultiSelect.d.ts +16 -0
  109. package/dist/cjs/src/components/Form/Select/Select.interfaces.d.ts +6 -4
  110. package/dist/cjs/src/components/Form/Select/SingleSelect/Select.d.ts +1 -1
  111. package/dist/cjs/src/components/Form/Select/SingleSelect/useArrowNavigation.d.ts +1 -1
  112. package/dist/cjs/src/components/Form/Select/useSelectPositionList.d.ts +2 -2
  113. package/dist/cjs/src/components/Form/Textarea/Textarea.d.ts +2 -1
  114. package/dist/cjs/src/components/Form/Wrapper/CheckboxWrapper/CheckboxWrapper.d.ts +1 -1
  115. package/dist/cjs/src/components/Form/Wrapper/InputWrapper/InputWrapper.d.ts +1 -1
  116. package/dist/cjs/src/components/Form/Wrapper/MultiSelectWrapper/MultiSelectWrapper.d.ts +1 -1
  117. package/dist/cjs/src/components/Form/Wrapper/RadioWrapper/RadioWrapper.d.ts +1 -1
  118. package/dist/cjs/src/components/Form/Wrapper/SelectWrapper/SelectWrapper.d.ts +1 -1
  119. package/dist/cjs/src/components/Form/Wrapper/TextareaWrapper/TextareaWrapper.d.ts +2 -1
  120. package/dist/cjs/src/components/Form/Wrapper/Wrapper/Wrapper.d.ts +1 -0
  121. package/dist/cjs/src/components/_BaseStyling_/BaseStyling.d.ts +2 -0
  122. package/dist/cjs/src/components/withReadOnly.d.ts +8 -0
  123. package/dist/cjs/src/hooks/useClickOutside.cjs.js +2 -0
  124. package/dist/cjs/src/hooks/useClickOutside.cjs.js.map +1 -0
  125. package/dist/cjs/src/hooks/useClickOutside.d.ts +2 -0
  126. package/dist/cjs/src/hooks/useClickOutside.test.d.ts +1 -0
  127. package/dist/cjs/src/index.cjs.js +1 -1
  128. package/dist/cjs/src/index.d.ts +2 -0
  129. package/dist/cjs/src/util/unitTestUtils.d.ts +12 -0
  130. package/dist/cjs/withReadOnly.cjs.js +2 -0
  131. package/dist/cjs/withReadOnly.cjs.js.map +1 -0
  132. package/dist/esm/Button/BaseButton.esm.js +5 -2
  133. package/dist/esm/Button/BaseButton.esm.js.map +1 -1
  134. package/dist/esm/ContextMenu/ContextMenu.esm.js +6 -8
  135. package/dist/esm/ContextMenu/ContextMenu.esm.js.map +1 -1
  136. package/dist/esm/ContextMenu/ContextMenuItem.esm.js +3 -3
  137. package/dist/esm/ContextMenu/ContextMenuItem.esm.js.map +1 -1
  138. package/dist/esm/ContextMenu/ContextMenuItem.module.scss.esm.js +2 -2
  139. package/dist/esm/DataGrid/DataGridFilters/DataGridDateFilter.esm.js +35 -0
  140. package/dist/esm/DataGrid/DataGridFilters/DataGridDateFilter.esm.js.map +1 -0
  141. package/dist/esm/DataGrid/DataGridFilters/DataGridFilterTag.esm.js +16 -7
  142. package/dist/esm/DataGrid/DataGridFilters/DataGridFilterTag.esm.js.map +1 -1
  143. package/dist/esm/DataGrid/DataGridFilters/DataGridFilters.interfaces.esm.js.map +1 -1
  144. package/dist/esm/DataGrid/DataGridFilters/DataGridToolbar.esm.js +15 -12
  145. package/dist/esm/DataGrid/DataGridFilters/DataGridToolbar.esm.js.map +1 -1
  146. package/dist/esm/DataGrid/DataGridFilters/DateTimePicker/DateTimePicker.esm.js +138 -0
  147. package/dist/esm/DataGrid/DataGridFilters/DateTimePicker/DateTimePicker.esm.js.map +1 -0
  148. package/dist/esm/DataGrid/DataGridFilters/DateTimePicker/DateTimePicker.module.scss.esm.js +8 -0
  149. package/dist/esm/DataGrid/DataGridFilters/DateTimePicker/DateTimePicker.module.scss.esm.js.map +1 -0
  150. package/dist/esm/DataGrid/DataGridFilters/DateTimePicker/DateTimePickerCalendarSection.esm.js +54 -0
  151. package/dist/esm/DataGrid/DataGridFilters/DateTimePicker/DateTimePickerCalendarSection.esm.js.map +1 -0
  152. package/dist/esm/DataGrid/DataGridFilters/DateTimePicker/DateTimePickerInputSection.esm.js +51 -0
  153. package/dist/esm/DataGrid/DataGridFilters/DateTimePicker/DateTimePickerInputSection.esm.js.map +1 -0
  154. package/dist/esm/DataGrid/DataGridFilters/DateTimePicker/DateTimeService.esm.js +29 -0
  155. package/dist/esm/DataGrid/DataGridFilters/DateTimePicker/DateTimeService.esm.js.map +1 -0
  156. package/dist/esm/DataGrid/DataGridFilters/DateTimePicker/SideMenu.esm.js +26 -0
  157. package/dist/esm/DataGrid/DataGridFilters/DateTimePicker/SideMenu.esm.js.map +1 -0
  158. package/dist/esm/DatePicker/DatePicker.esm.js +3 -1
  159. package/dist/esm/DatePicker/DatePicker.esm.js.map +1 -1
  160. package/dist/esm/DatePicker/DatePicker.module.scss.esm.js +2 -2
  161. package/dist/esm/Form/Checkbox/Checkbox.esm.js +2 -1
  162. package/dist/esm/Form/Checkbox/Checkbox.esm.js.map +1 -1
  163. package/dist/esm/Form/Checkbox/Checkbox.module.scss.esm.js +1 -1
  164. package/dist/esm/Form/Fieldset/Fieldset.esm.js +2 -1
  165. package/dist/esm/Form/Fieldset/Fieldset.esm.js.map +1 -1
  166. package/dist/esm/Form/FileUpload/FileItem/FileItem.esm.js +10 -3
  167. package/dist/esm/Form/FileUpload/FileItem/FileItem.esm.js.map +1 -1
  168. package/dist/esm/Form/FileUpload/FileItem/FileItem.module.scss.esm.js +1 -1
  169. package/dist/esm/Form/FileUpload/FileUpload.esm.js +9 -6
  170. package/dist/esm/Form/FileUpload/FileUpload.esm.js.map +1 -1
  171. package/dist/esm/Form/FileUpload/FileUpload.module.scss.esm.js +2 -2
  172. package/dist/esm/Form/FormGroup/FormGroup.esm.js +2 -2
  173. package/dist/esm/Form/FormGroup/FormGroup.esm.js.map +1 -1
  174. package/dist/esm/Form/FormHelperText/FormHelperText.module.scss.esm.js +1 -1
  175. package/dist/esm/Form/FormSelectorWrapper/FormSelectorWrapper.esm.js +1 -1
  176. package/dist/esm/Form/FormSelectorWrapper/FormSelectorWrapper.esm.js.map +1 -1
  177. package/dist/esm/Form/Input/Input.esm.js +7 -5
  178. package/dist/esm/Form/Input/Input.esm.js.map +1 -1
  179. package/dist/esm/Form/Input/Input.module.scss.esm.js +2 -2
  180. package/dist/esm/Form/Radio/Radio.esm.js +2 -1
  181. package/dist/esm/Form/Radio/Radio.esm.js.map +1 -1
  182. package/dist/esm/Form/Radio/Radio.module.scss.esm.js +1 -1
  183. package/dist/esm/Form/Select/MultiSelect/MultiSelect.esm.js +33 -18
  184. package/dist/esm/Form/Select/MultiSelect/MultiSelect.esm.js.map +1 -1
  185. package/dist/esm/Form/Select/MultiSelect/MultiSelect.module.scss.esm.js +2 -2
  186. package/dist/esm/Form/Select/MultiSelect/SelectedOptions.module.scss.esm.js +1 -1
  187. package/dist/esm/Form/Select/MultiSelect/useArrowNavigation.esm.js +4 -1
  188. package/dist/esm/Form/Select/MultiSelect/useArrowNavigation.esm.js.map +1 -1
  189. package/dist/esm/Form/Select/MultiSelect/useMultiSelect.esm.js +63 -0
  190. package/dist/esm/Form/Select/MultiSelect/useMultiSelect.esm.js.map +1 -0
  191. package/dist/esm/Form/Select/Select.interfaces.esm.js +23 -0
  192. package/dist/esm/Form/Select/Select.interfaces.esm.js.map +1 -0
  193. package/dist/esm/Form/Select/SingleSelect/Select.esm.js +29 -20
  194. package/dist/esm/Form/Select/SingleSelect/Select.esm.js.map +1 -1
  195. package/dist/esm/Form/Select/SingleSelect/Select.module.scss.esm.js +2 -2
  196. package/dist/esm/Form/Select/SingleSelect/useArrowNavigation.esm.js +4 -1
  197. package/dist/esm/Form/Select/SingleSelect/useArrowNavigation.esm.js.map +1 -1
  198. package/dist/esm/Form/Select/useSelectPositionList.esm.js +11 -13
  199. package/dist/esm/Form/Select/useSelectPositionList.esm.js.map +1 -1
  200. package/dist/esm/Form/Textarea/Textarea.esm.js +12 -5
  201. package/dist/esm/Form/Textarea/Textarea.esm.js.map +1 -1
  202. package/dist/esm/Form/Textarea/Textarea.module.scss.esm.js +1 -1
  203. package/dist/esm/Form/Wrapper/CheckboxWrapper/CheckboxWrapper.esm.js +4 -1
  204. package/dist/esm/Form/Wrapper/CheckboxWrapper/CheckboxWrapper.esm.js.map +1 -1
  205. package/dist/esm/Form/Wrapper/InputWrapper/InputWrapper.esm.js +6 -4
  206. package/dist/esm/Form/Wrapper/InputWrapper/InputWrapper.esm.js.map +1 -1
  207. package/dist/esm/Form/Wrapper/InputWrapper/InputWrapper.module.scss.esm.js +1 -1
  208. package/dist/esm/Form/Wrapper/MultiSelectWrapper/MultiSelectWrapper.esm.js +3 -2
  209. package/dist/esm/Form/Wrapper/MultiSelectWrapper/MultiSelectWrapper.esm.js.map +1 -1
  210. package/dist/esm/Form/Wrapper/RadioWrapper/RadioWrapper.esm.js +17 -10
  211. package/dist/esm/Form/Wrapper/RadioWrapper/RadioWrapper.esm.js.map +1 -1
  212. package/dist/esm/Form/Wrapper/SelectWrapper/SelectWrapper.esm.js +5 -2
  213. package/dist/esm/Form/Wrapper/SelectWrapper/SelectWrapper.esm.js.map +1 -1
  214. package/dist/esm/Form/Wrapper/TextareaWrapper/TextareaWrapper.esm.js +20 -10
  215. package/dist/esm/Form/Wrapper/TextareaWrapper/TextareaWrapper.esm.js.map +1 -1
  216. package/dist/esm/Form/Wrapper/TextareaWrapper/TextareaWrapper.module.scss.esm.js +2 -2
  217. package/dist/esm/Form/Wrapper/Wrapper/Wrapper.esm.js +2 -2
  218. package/dist/esm/Form/Wrapper/Wrapper/Wrapper.esm.js.map +1 -1
  219. package/dist/esm/Form/Wrapper/Wrapper/Wrapper.module.scss.esm.js +1 -1
  220. package/dist/esm/_BaseStyling_/BaseStyling.esm.js +2 -0
  221. package/dist/esm/_BaseStyling_/BaseStyling.esm.js.map +1 -1
  222. package/dist/esm/src/components/DataGrid/DataGridFilters/DataGridDateFilter.d.ts +9 -0
  223. package/dist/esm/src/components/DataGrid/DataGridFilters/DataGridFilterTag.d.ts +2 -1
  224. package/dist/esm/src/components/DataGrid/DataGridFilters/DataGridFilters.interfaces.d.ts +10 -1
  225. package/dist/esm/src/components/DataGrid/DataGridFilters/DataGridToolbar.d.ts +5 -3
  226. package/dist/esm/src/components/DataGrid/DataGridFilters/DateTimePicker/DateTimePicker.d.ts +31 -0
  227. package/dist/esm/src/components/DataGrid/DataGridFilters/DateTimePicker/DateTimePickerCalendarSection.d.ts +15 -0
  228. package/dist/esm/src/components/DataGrid/DataGridFilters/DateTimePicker/DateTimePickerInputSection.d.ts +18 -0
  229. package/dist/esm/src/components/DataGrid/DataGridFilters/DateTimePicker/DateTimeService.d.ts +10 -0
  230. package/dist/esm/src/components/DataGrid/DataGridFilters/DateTimePicker/SideMenu.d.ts +10 -0
  231. package/dist/esm/src/components/DataGrid/testUtils.d.ts +7 -1
  232. package/dist/esm/src/components/DatePicker/DatePicker.d.ts +4 -1
  233. package/dist/esm/src/components/Form/Checkbox/Checkbox.d.ts +1 -1
  234. package/dist/esm/src/components/Form/Fieldset/Fieldset.d.ts +1 -1
  235. package/dist/esm/src/components/Form/FileUpload/FileItem/FileItem.d.ts +1 -1
  236. package/dist/esm/src/components/Form/FileUpload/FileUpload.d.ts +6 -1
  237. package/dist/esm/src/components/Form/FormGroup/FormGroup.d.ts +1 -0
  238. package/dist/esm/src/components/Form/Input/Input.d.ts +2 -1
  239. package/dist/esm/src/components/Form/Radio/Radio.d.ts +1 -1
  240. package/dist/esm/src/components/Form/Select/MultiSelect/MultiSelect.d.ts +1 -1
  241. package/dist/esm/src/components/Form/Select/MultiSelect/useArrowNavigation.d.ts +2 -1
  242. package/dist/esm/src/components/Form/Select/MultiSelect/useMultiSelect.d.ts +16 -0
  243. package/dist/esm/src/components/Form/Select/MultiSelect/useMultiSelect.test.d.ts +1 -0
  244. package/dist/esm/src/components/Form/Select/Select.interfaces.d.ts +6 -4
  245. package/dist/esm/src/components/Form/Select/SingleSelect/Select.d.ts +1 -1
  246. package/dist/esm/src/components/Form/Select/SingleSelect/useArrowNavigation.d.ts +1 -1
  247. package/dist/esm/src/components/Form/Select/useSelectPositionList.d.ts +2 -2
  248. package/dist/esm/src/components/Form/Textarea/Textarea.d.ts +2 -1
  249. package/dist/esm/src/components/Form/Wrapper/CheckboxWrapper/CheckboxWrapper.d.ts +1 -1
  250. package/dist/esm/src/components/Form/Wrapper/InputWrapper/InputWrapper.d.ts +1 -1
  251. package/dist/esm/src/components/Form/Wrapper/MultiSelectWrapper/MultiSelectWrapper.d.ts +1 -1
  252. package/dist/esm/src/components/Form/Wrapper/RadioWrapper/RadioWrapper.d.ts +1 -1
  253. package/dist/esm/src/components/Form/Wrapper/SelectWrapper/SelectWrapper.d.ts +1 -1
  254. package/dist/esm/src/components/Form/Wrapper/TextareaWrapper/TextareaWrapper.d.ts +2 -1
  255. package/dist/esm/src/components/Form/Wrapper/Wrapper/Wrapper.d.ts +1 -0
  256. package/dist/esm/src/components/_BaseStyling_/BaseStyling.d.ts +2 -0
  257. package/dist/esm/src/components/withReadOnly.d.ts +8 -0
  258. package/dist/esm/src/components/withReadOnly.test.d.ts +1 -0
  259. package/dist/esm/src/hooks/useClickOutside.d.ts +2 -0
  260. package/dist/esm/src/hooks/useClickOutside.esm.js +38 -0
  261. package/dist/esm/src/hooks/useClickOutside.esm.js.map +1 -0
  262. package/dist/esm/src/hooks/useClickOutside.test.d.ts +1 -0
  263. package/dist/esm/src/index.d.ts +2 -0
  264. package/dist/esm/src/index.esm.js +2 -0
  265. package/dist/esm/src/index.esm.js.map +1 -1
  266. package/dist/esm/src/util/unitTestUtils.d.ts +12 -0
  267. package/dist/esm/withReadOnly.esm.js +70 -0
  268. package/dist/esm/withReadOnly.esm.js.map +1 -0
  269. package/package.json +21 -17
  270. package/src/components/Button/BaseButton.tsx +7 -4
  271. package/src/components/ContextMenu/ContextMenu.tsx +5 -13
  272. package/src/components/DataGrid/DataGridBody/__snapshots__/DataGridBody.test.tsx.snap +4 -4
  273. package/src/components/DataGrid/DataGridFilters/DataGridDateFilter.tsx +65 -0
  274. package/src/components/DataGrid/DataGridFilters/DataGridFilterTag.tsx +25 -5
  275. package/src/components/DataGrid/DataGridFilters/DataGridFilters.interfaces.ts +18 -1
  276. package/src/components/DataGrid/DataGridFilters/DataGridToolbar.tsx +53 -33
  277. package/src/components/DataGrid/DataGridFilters/DateTimePicker/DateTimePicker.module.scss +134 -0
  278. package/src/components/DataGrid/DataGridFilters/DateTimePicker/DateTimePicker.tsx +267 -0
  279. package/src/components/DataGrid/DataGridFilters/DateTimePicker/DateTimePickerCalendarSection.tsx +103 -0
  280. package/src/components/DataGrid/DataGridFilters/DateTimePicker/DateTimePickerInputSection.tsx +121 -0
  281. package/src/{hooks/useBodyClick.ts → components/DataGrid/DataGridFilters/DateTimePicker/DateTimeService.ts} +12 -18
  282. package/src/components/DataGrid/DataGridFilters/DateTimePicker/SideMenu.tsx +50 -0
  283. package/src/components/DataGrid/testUtils.ts +48 -15
  284. package/src/components/DatePicker/DatePicker.module.scss +32 -9
  285. package/src/components/DatePicker/DatePicker.tsx +15 -1
  286. package/src/components/Form/Checkbox/Checkbox.module.scss +70 -0
  287. package/src/components/Form/Checkbox/Checkbox.tsx +2 -1
  288. package/src/components/Form/Fieldset/Fieldset.tsx +2 -1
  289. package/src/components/Form/FileUpload/FileItem/FileItem.module.scss +16 -0
  290. package/src/components/Form/FileUpload/FileItem/FileItem.tsx +17 -3
  291. package/src/components/Form/FileUpload/FileUpload.module.scss +57 -1
  292. package/src/components/Form/FileUpload/FileUpload.tsx +16 -6
  293. package/src/components/Form/FormGroup/FormGroup.tsx +6 -1
  294. package/src/components/Form/FormHelperText/FormHelperText.module.scss +4 -0
  295. package/src/components/Form/FormSelectorWrapper/FormSelectorWrapper.tsx +2 -2
  296. package/src/components/Form/Input/Input.module.scss +26 -0
  297. package/src/components/Form/Input/Input.tsx +10 -1
  298. package/src/components/Form/Radio/Radio.module.scss +46 -0
  299. package/src/components/Form/Radio/Radio.tsx +2 -1
  300. package/src/components/Form/Select/MultiSelect/MultiSelect.module.scss +35 -1
  301. package/src/components/Form/Select/MultiSelect/MultiSelect.tsx +53 -38
  302. package/src/components/Form/Select/MultiSelect/SelectedOptions.module.scss +8 -0
  303. package/src/components/Form/Select/MultiSelect/useArrowNavigation.ts +6 -1
  304. package/src/components/Form/Select/MultiSelect/useMultiSelect.tsx +98 -0
  305. package/src/components/Form/Select/Select.interfaces.ts +6 -4
  306. package/src/components/Form/Select/SingleSelect/Select.module.scss +60 -1
  307. package/src/components/Form/Select/SingleSelect/Select.tsx +42 -37
  308. package/src/components/Form/Select/SingleSelect/useArrowNavigation.ts +6 -1
  309. package/src/components/Form/Select/useSelectPositionList.ts +10 -14
  310. package/src/components/Form/Textarea/Textarea.module.scss +24 -0
  311. package/src/components/Form/Textarea/Textarea.tsx +24 -3
  312. package/src/components/Form/Wrapper/CheckboxWrapper/CheckboxWrapper.tsx +4 -1
  313. package/src/components/Form/Wrapper/InputWrapper/InputWrapper.module.scss +14 -0
  314. package/src/components/Form/Wrapper/InputWrapper/InputWrapper.tsx +6 -2
  315. package/src/components/Form/Wrapper/MultiSelectWrapper/MultiSelectWrapper.tsx +3 -1
  316. package/src/components/Form/Wrapper/RadioWrapper/RadioWrapper.tsx +17 -12
  317. package/src/components/Form/Wrapper/SelectWrapper/SelectWrapper.tsx +6 -1
  318. package/src/components/Form/Wrapper/TextareaWrapper/TextareaWrapper.module.scss +43 -0
  319. package/src/components/Form/Wrapper/TextareaWrapper/TextareaWrapper.tsx +45 -20
  320. package/src/components/Form/Wrapper/Wrapper/Wrapper.module.scss +6 -0
  321. package/src/components/Form/Wrapper/Wrapper/Wrapper.tsx +3 -0
  322. package/src/components/_BaseStyling_/BaseStyling.tsx +4 -0
  323. package/src/components/withReadOnly.tsx +112 -0
  324. package/src/hooks/useClickOutside.ts +42 -0
  325. package/src/index.ts +2 -0
  326. package/src/mixins.module.scss +6 -0
  327. package/{dist/esm/src/hooks/useBodyClick.esm.js → src/util/unitTestUtils.ts} +16 -17
  328. package/dist/cjs/src/hooks/useBodyClick.cjs.js +0 -2
  329. package/dist/cjs/src/hooks/useBodyClick.cjs.js.map +0 -1
  330. package/dist/cjs/src/hooks/useBodyClick.d.ts +0 -1
  331. package/dist/esm/src/hooks/useBodyClick.d.ts +0 -1
  332. package/dist/esm/src/hooks/useBodyClick.esm.js.map +0 -1
  333. /package/dist/cjs/src/{hooks/useBodyClick.test.d.ts → components/Form/Select/MultiSelect/useMultiSelect.test.d.ts} +0 -0
  334. /package/dist/{esm/src/hooks/useBodyClick.test.d.ts → cjs/src/components/withReadOnly.test.d.ts} +0 -0
@@ -19,22 +19,22 @@ import classes from "./Select.module.scss";
19
19
  import React, {
20
20
  createRef,
21
21
  ForwardRefRenderFunction,
22
- Fragment,
23
22
  ReactElement,
24
23
  useEffect,
25
24
  useRef,
26
25
  useState
27
26
  } from "react";
28
- import { useBodyClick } from "../../../../hooks/useBodyClick";
27
+ import { useClickOutside } from "../../../../hooks/useClickOutside";
29
28
  import { useDetermineStatusIcon } from "../../../../hooks/useDetermineStatusIcon";
30
29
  import readyclasses from "../../../../readyclasses.module.scss";
31
30
  import { filterProps } from "../../../../util/helper";
32
31
  import { Icon, Icons } from "../../../Icon/Icon";
33
- import { SingleSelectProps } from "../Select.interfaces";
32
+ import { Position, SingleSelectProps } from "../Select.interfaces";
34
33
  import { useSelectPositionList } from "../useSelectPositionList";
35
34
  import { useAddNewBtn } from "../useAddNewBtn";
36
35
  import { useSearch } from "./useSearch";
37
36
  import { useArrowNavigation } from "./useArrowNavigation";
37
+ import { withReadOnly } from "../../../withReadOnly";
38
38
 
39
39
  const SelectComponent: ForwardRefRenderFunction<HTMLSelectElement, SingleSelectProps> = (
40
40
  {
@@ -54,6 +54,7 @@ const SelectComponent: ForwardRefRenderFunction<HTMLSelectElement, SingleSelectP
54
54
  onChange,
55
55
  addNew,
56
56
  search,
57
+ isReadOnlyView,
57
58
  ...rest
58
59
  }: SingleSelectProps,
59
60
  ref
@@ -113,7 +114,8 @@ const SelectComponent: ForwardRefRenderFunction<HTMLSelectElement, SingleSelectP
113
114
  setShouldClick,
114
115
  searchInputRef,
115
116
  addBtnRef,
116
- renderThreshold: searchThreshold
117
+ renderThreshold: searchThreshold,
118
+ isReadOnlyView: isReadOnlyView || !!rest["data-readonlyview"]
117
119
  });
118
120
 
119
121
  const { listPosition, opacity, optionsListMaxHeight, setListPosition, setOpacity } =
@@ -201,15 +203,16 @@ const SelectComponent: ForwardRefRenderFunction<HTMLSelectElement, SingleSelectP
201
203
  syncDisplayValue(value);
202
204
  }, [value]);
203
205
 
204
- useBodyClick(
205
- (event: MouseEvent) => !(event.target as Element).closest(".custom-select") && expanded,
206
- () => {
207
- setExpanded(false);
208
- setListPosition({ top: 0, bottom: "initial" });
209
- setOpacity(0);
210
- },
211
- expanded
212
- );
206
+ const myElementRef = useRef<HTMLDivElement>(null);
207
+
208
+ useClickOutside(myElementRef, () => {
209
+ if (!expanded) {
210
+ return;
211
+ }
212
+ setExpanded(false);
213
+ setListPosition(Position.Below);
214
+ setOpacity(0);
215
+ }, [expanded]);
213
216
 
214
217
  const additionalClasses = [];
215
218
  expanded && additionalClasses.push(classes.expanded);
@@ -220,7 +223,7 @@ const SelectComponent: ForwardRefRenderFunction<HTMLSelectElement, SingleSelectP
220
223
 
221
224
  /** The native select is purely for external form libraries. We use it to emit an onChange with native select event object so they know exactly what's happening. */
222
225
  return (
223
- <Fragment>
226
+ <div ref={myElementRef}>
224
227
  <select
225
228
  {...filterProps(rest, /^data-/, false)}
226
229
  tabIndex={-1}
@@ -245,13 +248,13 @@ const SelectComponent: ForwardRefRenderFunction<HTMLSelectElement, SingleSelectP
245
248
  <button
246
249
  {...selectButtonProps}
247
250
  onClick={() => {
248
- setExpanded(!expanded);
251
+ setExpanded(isReadOnlyView || rest["data-readonlyview"] ? false : !expanded);
249
252
  }}
250
253
  ref={customSelectButtonRef}
251
254
  type="button"
252
255
  name={name}
253
256
  className={`${classes["custom-select"]} ${additionalClasses.join(" ")} `}
254
- style={{ display: expanded && searchVisible ? "none" : "initial" }}
257
+ style={{ display: expanded && searchVisible ? "none" : "block" }}
255
258
  disabled={disabled}
256
259
  aria-disabled={disabled}
257
260
  aria-invalid={error}
@@ -266,29 +269,31 @@ const SelectComponent: ForwardRefRenderFunction<HTMLSelectElement, SingleSelectP
266
269
  </div>
267
270
  <div className={classes["status"]}>{icon || renderChevronIcon()}</div>
268
271
  </button>
269
-
270
- <div
271
- ref={optionListReference}
272
- className={`list-wrapper ${classes["list-wrapper"]}`}
273
- style={{
274
- display: expanded ? "block" : "none",
275
- opacity: opacity,
276
- maxHeight: optionsListMaxHeight.wrapper,
277
- pointerEvents: expanded ? "auto" : "none",
278
- ...listPosition
279
- }}
280
- >
281
- <ul
282
- className={addNewBtnOptionsContainerClassName}
283
- role="listbox"
284
- style={{ maxHeight: optionsListMaxHeight.list }}
272
+ <div className="list-wrapper-container">
273
+ <div
274
+ ref={optionListReference}
275
+ className={`list-wrapper ${classes["list-wrapper"]}`}
276
+ style={{
277
+ display: expanded ? "block" : "none",
278
+ opacity: opacity,
279
+ maxHeight: optionsListMaxHeight.wrapper,
280
+ pointerEvents: expanded ? "auto" : "none",
281
+ bottom: listPosition === Position.Above ? "2.85rem" : "initial",
282
+ marginTop: "4px"
283
+ }}
285
284
  >
286
- {renderOptions()}
287
- </ul>
288
- {renderAddNew()}
285
+ <ul
286
+ className={addNewBtnOptionsContainerClassName}
287
+ role="listbox"
288
+ style={{ maxHeight: optionsListMaxHeight.list }}
289
+ >
290
+ {renderOptions()}
291
+ </ul>
292
+ {renderAddNew()}
293
+ </div>
289
294
  </div>
290
295
  </div>
291
- </Fragment>
296
+ </div>
292
297
  );
293
298
  };
294
- export const Select = React.forwardRef(SelectComponent);
299
+ export const Select = withReadOnly(React.forwardRef(SelectComponent));
@@ -28,7 +28,8 @@ export const useArrowNavigation = ({
28
28
  setShouldClick,
29
29
  searchInputRef,
30
30
  addBtnRef,
31
- renderThreshold
31
+ renderThreshold,
32
+ isReadOnlyView
32
33
  }: UseArrowNavigationParams) => {
33
34
  const onArrowNavigation = (event: React.KeyboardEvent) => {
34
35
  const codesToPreventDefault = [
@@ -53,6 +54,10 @@ export const useArrowNavigation = ({
53
54
 
54
55
  const isAddBtnFocused = addBtnRef?.current === document.activeElement;
55
56
 
57
+ if (isReadOnlyView) {
58
+ return;
59
+ }
60
+
56
61
  if (expanded) {
57
62
  codesToPreventDefault.push("Tab");
58
63
  }
@@ -32,7 +32,7 @@ export const useSelectPositionList = ({
32
32
  list: undefined
33
33
  });
34
34
  const [opacity, setOpacity] = useState(0); // We set opacity because otherwise if we calculate the max height you see the list full height for a split second and then it shortens.
35
- const [listPosition, setListPosition] = useState<Partial<Position>>({});
35
+ const [listPosition, setListPosition] = useState<Position>(Position.Below);
36
36
 
37
37
  useEffect(() => {
38
38
  rePositionList();
@@ -43,21 +43,17 @@ export const useSelectPositionList = ({
43
43
  return;
44
44
  }
45
45
 
46
- // Check whether there is more space above or below the select
47
- // Check space between the bottom of select and top of viewport
48
- const spaceOnTopOfSelect = containerReference.current.getBoundingClientRect().bottom;
46
+ const listHeight = optionListReference.current?.getBoundingClientRect().height;
49
47
 
50
- // Check space between the top of the select and bottom of viewport
51
- const spaceOnBottomOfSelect =
52
- window.innerHeight - containerReference.current.getBoundingClientRect().top;
48
+ const viewportRelativeRect = containerReference.current.getBoundingClientRect();
53
49
 
54
- // Set position as if there's more space on the bottom
55
- let position: Position = { top: "2.75rem", bottom: "initial" };
50
+ const spaceOnTopOfSelect = viewportRelativeRect.top;
51
+ const spaceOnBottomOfSelect = window.innerHeight - viewportRelativeRect.bottom;
56
52
 
57
- // Set the position of the select
58
- if (spaceOnTopOfSelect > spaceOnBottomOfSelect) {
59
- position = { top: "initial", bottom: "2.75rem" };
60
- }
53
+ const position =
54
+ listHeight > spaceOnBottomOfSelect && spaceOnTopOfSelect > spaceOnBottomOfSelect
55
+ ? Position.Above
56
+ : Position.Below;
61
57
 
62
58
  setListPosition(position);
63
59
 
@@ -72,7 +68,7 @@ export const useSelectPositionList = ({
72
68
  ? addBtnRef.current.getBoundingClientRect().height +
73
69
  parseInt(getComputedStyle(addBtnRef.current).marginBottom)
74
70
  : 0;
75
- const transformOrigin = position.top !== "initial" ? "top" : "bottom";
71
+ const transformOrigin = position === Position.Below ? "top" : "bottom";
76
72
 
77
73
  if (!containerReference.current) {
78
74
  console.error(
@@ -48,6 +48,26 @@
48
48
  }
49
49
 
50
50
  @include mixins.outlineStates();
51
+
52
+ div[data-readonlyview="true"] {
53
+ min-height: 4rem;
54
+ border: 1px solid var(--color-blue-grey100);
55
+ color: var(--read-only-text-color);
56
+ background-color: var(--color-white);
57
+ padding: 0.5rem 0.75rem;
58
+ font-family: var(--font-family);
59
+ font-size: var(--form-control-font-size);
60
+ position: relative;
61
+ border-radius: 0.125rem;
62
+
63
+ & ~ span.outline {
64
+ display: none;
65
+ }
66
+
67
+ &:has(~ [data-icon-status]) {
68
+ padding-right: 2.5rem;
69
+ }
70
+ }
51
71
  }
52
72
 
53
73
  .textarea {
@@ -77,6 +97,10 @@
77
97
  @include mixins.transition(all, 0.2s, ease-in-out);
78
98
  @include mixins.browserOutlineDisabled();
79
99
  }
100
+
101
+ &:has(~ [data-icon-status]) {
102
+ padding-right: 2.5rem;
103
+ }
80
104
  }
81
105
 
82
106
  .error {
@@ -18,9 +18,11 @@ import React, { ForwardRefRenderFunction, ComponentPropsWithRef, useState } from
18
18
  import classes from "./Textarea.module.scss";
19
19
  import { FormElement } from "../form.interfaces";
20
20
  import { useDetermineStatusIcon } from "../../../hooks/useDetermineStatusIcon";
21
+ import { withReadOnly } from "../../withReadOnly";
21
22
 
22
23
  export interface Props extends ComponentPropsWithRef<"textarea">, FormElement {
23
24
  wrapperProps?: ComponentPropsWithRef<"div">;
25
+ readOnlyView?: boolean;
24
26
  }
25
27
 
26
28
  const TextareaComponent: ForwardRefRenderFunction<HTMLTextAreaElement, Props> = (
@@ -33,6 +35,7 @@ const TextareaComponent: ForwardRefRenderFunction<HTMLTextAreaElement, Props> =
33
35
  wrapperProps,
34
36
  onFocus,
35
37
  onBlur,
38
+ value,
36
39
  ...rest
37
40
  }: Props,
38
41
  ref
@@ -50,8 +53,19 @@ const TextareaComponent: ForwardRefRenderFunction<HTMLTextAreaElement, Props> =
50
53
 
51
54
  const icon = useDetermineStatusIcon({ success, error });
52
55
 
53
- return (
54
- <div {...wrapperProps} className={wrapperClasses.join(" ")}>
56
+ const renderTextarea = () => {
57
+ if (rest["data-readonlyview"]) {
58
+ return (
59
+ <div
60
+ data-readonlyview={true}
61
+ tabIndex={0}
62
+ className={`${error ? classes["error"] : ""} ${success ? classes["success"] : ""}`}
63
+ >
64
+ {value}
65
+ </div>
66
+ );
67
+ }
68
+ return (
55
69
  <textarea
56
70
  {...rest}
57
71
  ref={ref}
@@ -66,11 +80,18 @@ const TextareaComponent: ForwardRefRenderFunction<HTMLTextAreaElement, Props> =
66
80
  setFocus(false);
67
81
  onBlur?.(event);
68
82
  }}
83
+ value={value}
69
84
  />
85
+ );
86
+ };
87
+
88
+ return (
89
+ <div {...wrapperProps} className={wrapperClasses.join(" ")}>
90
+ {renderTextarea()}
70
91
  {icon}
71
92
  <span className={outlineClasses.join(" ")}></span>
72
93
  </div>
73
94
  );
74
95
  };
75
96
 
76
- export const Textarea = React.forwardRef(TextareaComponent);
97
+ export const Textarea = withReadOnly(React.forwardRef(TextareaComponent));
@@ -25,6 +25,7 @@ import { useWrapper } from "../../../../hooks/useWrapper";
25
25
  import { Wrapper, WrapperProps } from "../Wrapper/Wrapper";
26
26
  import { Icons } from "../../../Icon/Icon";
27
27
  import { Fieldset, Props as FieldsetProps } from "../../../Form/Fieldset/Fieldset";
28
+ import { withReadOnly } from "../../../withReadOnly";
28
29
 
29
30
  export interface Props extends ComponentPropsWithRef<"div">, Omit<WrapperProps, "success"> {
30
31
  children: ReactElement[] | ReactElement;
@@ -80,7 +81,9 @@ const CheckboxWrapperComponent: ForwardRefRenderFunction<HTMLDivElement, Props>
80
81
  );
81
82
  };
82
83
 
84
+ const ForwardedCheckboxWrapper = React.forwardRef(CheckboxWrapperComponent);
85
+ ForwardedCheckboxWrapper.displayName = "CheckboxWrapper";
83
86
  /**
84
87
  * @deprecated
85
88
  */
86
- export const CheckboxWrapper = React.forwardRef(CheckboxWrapperComponent);
89
+ export const CheckboxWrapper = withReadOnly(ForwardedCheckboxWrapper);
@@ -37,6 +37,10 @@ input {
37
37
  justify-content: center;
38
38
 
39
39
  @include mixins.transition(all, 0.2s, ease-in-out);
40
+
41
+ &[data-readonlyview="true"] {
42
+ padding: auto;
43
+ }
40
44
  }
41
45
 
42
46
  [data-prefix],
@@ -61,4 +65,14 @@ input {
61
65
  cursor: not-allowed;
62
66
  color: var(--greyed-out);
63
67
  }
68
+
69
+ &[data-readonlyview="true"] {
70
+ & label {
71
+ color: var(--read-only-text-color);
72
+ }
73
+
74
+ & input {
75
+ color: var(--read-only-text-color);
76
+ }
77
+ }
64
78
  }
@@ -19,6 +19,7 @@ import { Input, Type, Props as InputProps } from "../../Input/Input";
19
19
  import classes from "./InputWrapper.module.scss";
20
20
  import { Wrapper, WrapperProps } from "../Wrapper/Wrapper";
21
21
  import { useWrapper } from "../../../../hooks/useWrapper";
22
+ import { withReadOnly } from "../../../withReadOnly";
22
23
 
23
24
  interface PartialInputProps extends Partial<InputProps> {}
24
25
 
@@ -44,6 +45,7 @@ const InputWrapperComponent: ForwardRefRenderFunction<HTMLDivElement, Props> = (
44
45
  value,
45
46
  className,
46
47
  error,
48
+ errorMessageProps,
47
49
  success,
48
50
  onChange,
49
51
  onBlur,
@@ -63,7 +65,7 @@ const InputWrapperComponent: ForwardRefRenderFunction<HTMLDivElement, Props> = (
63
65
  inputProps?.wrapperProps?.className &&
64
66
  inputWrapperClasses.push(inputProps?.wrapperProps?.className);
65
67
  disabled && inputWrapperClasses.push(classes["disabled"]);
66
-
68
+ const readValue = rest["data-readonlyview"] as boolean;
67
69
  return (
68
70
  <Wrapper
69
71
  {...rest}
@@ -76,6 +78,7 @@ const InputWrapperComponent: ForwardRefRenderFunction<HTMLDivElement, Props> = (
76
78
  }}
77
79
  errorId={errorId}
78
80
  error={error}
81
+ errorMessageProps={errorMessageProps}
79
82
  helperId={helperId}
80
83
  helperText={helperText}
81
84
  helperProps={{
@@ -88,6 +91,7 @@ const InputWrapperComponent: ForwardRefRenderFunction<HTMLDivElement, Props> = (
88
91
  {...inputProps}
89
92
  prefix={prefix}
90
93
  suffix={suffix}
94
+ readOnlyView={readValue}
91
95
  wrapperProps={{
92
96
  className: inputWrapperClasses.join(" ")
93
97
  }}
@@ -116,4 +120,4 @@ const InputWrapperComponent: ForwardRefRenderFunction<HTMLDivElement, Props> = (
116
120
  );
117
121
  };
118
122
 
119
- export const InputWrapper = React.forwardRef(InputWrapperComponent);
123
+ export const InputWrapper = withReadOnly(React.forwardRef(InputWrapperComponent));
@@ -20,6 +20,7 @@ import { Wrapper, WrapperProps } from "../Wrapper/Wrapper";
20
20
  import { useWrapper } from "../../../../hooks/useWrapper";
21
21
  import { MultiSelect } from "../../Select/MultiSelect/MultiSelect";
22
22
  import { MultiSelectProps } from "../../Select/Select.interfaces";
23
+ import { withReadOnly } from "../../../withReadOnly";
23
24
 
24
25
  interface PartialSelectProps extends Partial<MultiSelectProps> {}
25
26
 
@@ -74,6 +75,7 @@ const MultiSelectWrapperComponent: ForwardRefRenderFunction<HTMLDivElement, Prop
74
75
  onChange={onChange}
75
76
  placeholder={placeholder}
76
77
  className={`${selectProps?.className ?? ""}`}
78
+ isReadOnlyView={!!rest["data-readonlyview"]}
77
79
  >
78
80
  {children as ReactElement[]}
79
81
  </MultiSelect>
@@ -81,4 +83,4 @@ const MultiSelectWrapperComponent: ForwardRefRenderFunction<HTMLDivElement, Prop
81
83
  );
82
84
  };
83
85
 
84
- export const MultiSelectWrapper = React.forwardRef(MultiSelectWrapperComponent);
86
+ export const MultiSelectWrapper = withReadOnly(React.forwardRef(MultiSelectWrapperComponent));
@@ -25,6 +25,7 @@ import { Wrapper, WrapperProps } from "../Wrapper/Wrapper";
25
25
  import { useWrapper } from "../../../../hooks/useWrapper";
26
26
  import { Icons } from "../../../Icon/Icon";
27
27
  import { Fieldset, Props as FieldsetProps } from "../../../Form/Fieldset/Fieldset";
28
+ import { withReadOnly } from "../../../withReadOnly";
28
29
 
29
30
  export interface Props extends ComponentPropsWithRef<"div">, WrapperProps {
30
31
  children: ReactElement | ReactElement[];
@@ -49,6 +50,7 @@ const RadioWrapperComponent: ForwardRefRenderFunction<HTMLDivElement, Props> = (
49
50
  ref
50
51
  ) => {
51
52
  const { errorId, helperId } = useWrapper();
53
+ const readOnlyView = !!rest["data-readonlyview"];
52
54
 
53
55
  useEffect(() => {
54
56
  if (fieldsetProps.legend === undefined) {
@@ -59,17 +61,20 @@ const RadioWrapperComponent: ForwardRefRenderFunction<HTMLDivElement, Props> = (
59
61
  }, []);
60
62
 
61
63
  const renderChildren = () =>
62
- React.Children.map(children, child =>
63
- React.cloneElement(child, {
64
- parentErrorId: errorId,
65
- error: error,
66
- checked: child.props.value === value,
67
- name: name,
68
- parentHelperId: helperText ? helperId : false,
69
- onChange: onChange,
70
- disabled: child.props.disabled !== undefined ? child.props.disabled : disabled
71
- })
72
- );
64
+ React.Children.map(children, child => {
65
+ if (!readOnlyView || child.props.value === value) {
66
+ return React.cloneElement(child, {
67
+ parentErrorId: errorId,
68
+ error: error,
69
+ checked: child.props.value === value,
70
+ name: name,
71
+ parentHelperId: helperText ? helperId : false,
72
+ onChange: onChange,
73
+ disabled: child.props.disabled !== undefined ? child.props.disabled : disabled
74
+ });
75
+ }
76
+ return null;
77
+ });
73
78
 
74
79
  return (
75
80
  <Fieldset {...fieldsetProps} disabled={disabled}>
@@ -96,4 +101,4 @@ const RadioWrapperComponent: ForwardRefRenderFunction<HTMLDivElement, Props> = (
96
101
  );
97
102
  };
98
103
 
99
- export const RadioWrapper = React.forwardRef(RadioWrapperComponent);
104
+ export const RadioWrapper = withReadOnly(React.forwardRef(RadioWrapperComponent));
@@ -20,6 +20,7 @@ import { Wrapper, WrapperProps } from "../Wrapper/Wrapper";
20
20
  import { Select } from "../../Select/SingleSelect/Select";
21
21
  import { useWrapper } from "../../../../hooks/useWrapper";
22
22
  import { SingleSelectProps } from "../../Select/Select.interfaces";
23
+ import { withReadOnly } from "../../../withReadOnly";
23
24
 
24
25
  interface PartialSelectProps extends Partial<SingleSelectProps> {}
25
26
 
@@ -74,6 +75,7 @@ const SelectWrapperComponent: ForwardRefRenderFunction<HTMLDivElement, Props> =
74
75
  onChange={onChange}
75
76
  placeholder={placeholder}
76
77
  className={`${selectProps?.className ?? ""}`}
78
+ isReadOnlyView={!!rest["data-readonlyview"]}
77
79
  >
78
80
  {children as ReactElement[]}
79
81
  </Select>
@@ -81,4 +83,7 @@ const SelectWrapperComponent: ForwardRefRenderFunction<HTMLDivElement, Props> =
81
83
  );
82
84
  };
83
85
 
84
- export const SelectWrapper = React.forwardRef(SelectWrapperComponent);
86
+ const forwardedSelectWrapper = React.forwardRef(SelectWrapperComponent);
87
+ forwardedSelectWrapper.displayName = "SelectWrapper";
88
+
89
+ export const SelectWrapper = withReadOnly(forwardedSelectWrapper);
@@ -48,9 +48,52 @@
48
48
  &:focus:not(:disabled) {
49
49
  outline: none;
50
50
  }
51
+
52
+ &:has([data-icon-status]) {
53
+ padding-right: 2.5rem;
54
+ }
51
55
  }
52
56
  }
53
57
 
54
58
  .textarea-helper-text {
55
59
  margin-top: 0.14rem;
56
60
  }
61
+
62
+ [data-readonlyview="true"] {
63
+ & ~ span.error {
64
+ background-color: var(--color-white);
65
+ }
66
+
67
+ & label + div:not(:has(input)) {
68
+ min-height: 4rem;
69
+ border: 1px solid var(--color-blue-grey100);
70
+ color: var(--read-only-text-color);
71
+ background-color: var(--color-white);
72
+ padding: 0.5rem 0.75rem;
73
+ font-family: var(--font-family);
74
+ font-size: var(--form-control-font-size);
75
+ position: relative;
76
+ border-radius: 0.125rem;
77
+
78
+ & [data-icon-status] {
79
+ position: absolute;
80
+ right: 1.25rem;
81
+ top: 0.8rem;
82
+ font-size: 1.125rem;
83
+ height: 1.25rem;
84
+ width: 1.25rem;
85
+ }
86
+
87
+ & [data-icon-status="error"] {
88
+ color: var(--error);
89
+ }
90
+
91
+ & [data-icon-status="success"] {
92
+ color: var(--success);
93
+ }
94
+
95
+ &:has([data-icon-status]) {
96
+ padding-right: 2.5rem;
97
+ }
98
+ }
99
+ }
@@ -19,6 +19,8 @@ import classes from "./TextareaWrapper.module.scss";
19
19
  import { Wrapper, WrapperProps } from "../Wrapper/Wrapper";
20
20
  import { Textarea, Props as TextareaProps } from "../../Textarea/Textarea";
21
21
  import { useWrapper } from "../../../../hooks/useWrapper";
22
+ import { withReadOnly } from "../../../withReadOnly";
23
+ import { useDetermineStatusIcon } from "../../../../hooks/useDetermineStatusIcon";
22
24
 
23
25
  export interface Props
24
26
  extends Omit<
@@ -35,6 +37,7 @@ export interface Props
35
37
  onMouseEnter?: (event: React.MouseEvent<HTMLTextAreaElement>) => void;
36
38
  onMouseLeave?: (event: React.MouseEvent<HTMLTextAreaElement>) => void;
37
39
  success?: boolean;
40
+ readOnlyView?: boolean;
38
41
  }
39
42
 
40
43
  const TextareaWrapperComponent: ForwardRefRenderFunction<HTMLDivElement, Props> = (
@@ -67,25 +70,24 @@ const TextareaWrapperComponent: ForwardRefRenderFunction<HTMLDivElement, Props>
67
70
  disabled && wrapperClasses.push(classes["disabled"]);
68
71
  error && wrapperClasses.push(classes["error"]);
69
72
 
70
- return (
71
- <Wrapper
72
- {...rest}
73
- ref={ref}
74
- disabled={disabled}
75
- labelProps={{
76
- id: labelId,
77
- className: `${classes["textarea-label"]} ${wrapperClasses.join(" ")}`
78
- }}
79
- name={name}
80
- label={label}
81
- helperId={helperId}
82
- helperProps={{
83
- ...helperProps,
84
- className: classes["textarea-helper-text"]
85
- }}
86
- error={error}
87
- errorId={errorId}
88
- >
73
+ const icon = useDetermineStatusIcon({ success, error });
74
+
75
+ const getTextareaWrapper = () => {
76
+ if (rest["data-readonlyview"]) {
77
+ return (
78
+ <div
79
+ aria-labelledby={label && labelId}
80
+ aria-describedby={error ? errorId : helperId}
81
+ id={name}
82
+ tabIndex={0}
83
+ className={`${error ? classes["error"] : ""} ${success ? classes["success"] : ""}`}
84
+ >
85
+ {icon}
86
+ {value}
87
+ </div>
88
+ );
89
+ }
90
+ return (
89
91
  <Textarea
90
92
  {...textareaProps}
91
93
  error={error}
@@ -118,8 +120,31 @@ const TextareaWrapperComponent: ForwardRefRenderFunction<HTMLDivElement, Props>
118
120
  className: `${wrapperClasses.join(" ")} ${classes["textarea-wrapper"]}`
119
121
  }}
120
122
  />
123
+ );
124
+ };
125
+
126
+ return (
127
+ <Wrapper
128
+ {...rest}
129
+ ref={ref}
130
+ disabled={disabled}
131
+ labelProps={{
132
+ id: labelId,
133
+ className: `${classes["textarea-label"]} ${wrapperClasses.join(" ")}`
134
+ }}
135
+ name={name}
136
+ label={label}
137
+ helperId={helperId}
138
+ helperProps={{
139
+ ...helperProps,
140
+ className: classes["textarea-helper-text"]
141
+ }}
142
+ error={error}
143
+ errorId={errorId}
144
+ >
145
+ {getTextareaWrapper()}
121
146
  </Wrapper>
122
147
  );
123
148
  };
124
149
 
125
- export const TextareaWrapper = React.forwardRef(TextareaWrapperComponent);
150
+ export const TextareaWrapper = withReadOnly(React.forwardRef(TextareaWrapperComponent));
@@ -66,6 +66,12 @@
66
66
  }
67
67
  }
68
68
 
69
+ [data-readonlyview="true"] {
70
+ & label {
71
+ color: var(--read-only-text-color);
72
+ }
73
+ }
74
+
69
75
  @media only screen and (min-width: 30em) {
70
76
  .floating-wrapper {
71
77
  .floating-label {