@onewelcome/react-lib-components 8.4.0 → 8.6.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 (251) 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/Button/Spinner.cjs.js +1 -1
  4. package/dist/cjs/Button/Spinner.cjs.js.map +1 -1
  5. package/dist/cjs/Form/Checkbox/Checkbox.cjs.js +1 -1
  6. package/dist/cjs/Form/Checkbox/Checkbox.cjs.js.map +1 -1
  7. package/dist/cjs/Form/Checkbox/Checkbox.module.scss.cjs.js +1 -1
  8. package/dist/cjs/Form/Fieldset/Fieldset.cjs.js +1 -1
  9. package/dist/cjs/Form/Fieldset/Fieldset.cjs.js.map +1 -1
  10. package/dist/cjs/Form/FileUpload/FileItem/FileItem.cjs.js +1 -1
  11. package/dist/cjs/Form/FileUpload/FileItem/FileItem.cjs.js.map +1 -1
  12. package/dist/cjs/Form/FileUpload/FileItem/FileItem.module.scss.cjs.js +1 -1
  13. package/dist/cjs/Form/FileUpload/FileUpload.cjs.js +1 -1
  14. package/dist/cjs/Form/FileUpload/FileUpload.cjs.js.map +1 -1
  15. package/dist/cjs/Form/FileUpload/FileUpload.module.scss.cjs.js +1 -1
  16. package/dist/cjs/Form/FormHelperText/FormHelperText.module.scss.cjs.js +1 -1
  17. package/dist/cjs/Form/Input/Input.cjs.js +1 -1
  18. package/dist/cjs/Form/Input/Input.cjs.js.map +1 -1
  19. package/dist/cjs/Form/Input/Input.module.scss.cjs.js +1 -1
  20. package/dist/cjs/Form/Radio/Radio.cjs.js +1 -1
  21. package/dist/cjs/Form/Radio/Radio.cjs.js.map +1 -1
  22. package/dist/cjs/Form/Radio/Radio.module.scss.cjs.js +1 -1
  23. package/dist/cjs/Form/Select/MultiSelect/MultiSelect.cjs.js +1 -1
  24. package/dist/cjs/Form/Select/MultiSelect/MultiSelect.cjs.js.map +1 -1
  25. package/dist/cjs/Form/Select/MultiSelect/MultiSelect.module.scss.cjs.js +1 -1
  26. package/dist/cjs/Form/Select/MultiSelect/SelectedOptions.module.scss.cjs.js +1 -1
  27. package/dist/cjs/Form/Select/MultiSelect/useArrowNavigation.cjs.js +1 -1
  28. package/dist/cjs/Form/Select/MultiSelect/useArrowNavigation.cjs.js.map +1 -1
  29. package/dist/cjs/Form/Select/MultiSelect/useMultiSelect.cjs.js +2 -0
  30. package/dist/cjs/Form/Select/MultiSelect/useMultiSelect.cjs.js.map +1 -0
  31. package/dist/cjs/Form/Select/Select.interfaces.cjs.js +2 -0
  32. package/dist/cjs/Form/Select/Select.interfaces.cjs.js.map +1 -0
  33. package/dist/cjs/Form/Select/SingleSelect/Select.cjs.js +1 -1
  34. package/dist/cjs/Form/Select/SingleSelect/Select.cjs.js.map +1 -1
  35. package/dist/cjs/Form/Select/SingleSelect/Select.module.scss.cjs.js +1 -1
  36. package/dist/cjs/Form/Select/SingleSelect/useArrowNavigation.cjs.js +1 -1
  37. package/dist/cjs/Form/Select/SingleSelect/useArrowNavigation.cjs.js.map +1 -1
  38. package/dist/cjs/Form/Select/useSelectPositionList.cjs.js +1 -1
  39. package/dist/cjs/Form/Select/useSelectPositionList.cjs.js.map +1 -1
  40. package/dist/cjs/Form/Textarea/Textarea.cjs.js +1 -1
  41. package/dist/cjs/Form/Textarea/Textarea.cjs.js.map +1 -1
  42. package/dist/cjs/Form/Textarea/Textarea.module.scss.cjs.js +1 -1
  43. package/dist/cjs/Form/Wrapper/CheckboxWrapper/CheckboxWrapper.cjs.js +1 -1
  44. package/dist/cjs/Form/Wrapper/CheckboxWrapper/CheckboxWrapper.cjs.js.map +1 -1
  45. package/dist/cjs/Form/Wrapper/InputWrapper/InputWrapper.cjs.js +1 -1
  46. package/dist/cjs/Form/Wrapper/InputWrapper/InputWrapper.cjs.js.map +1 -1
  47. package/dist/cjs/Form/Wrapper/InputWrapper/InputWrapper.module.scss.cjs.js +1 -1
  48. package/dist/cjs/Form/Wrapper/MultiSelectWrapper/MultiSelectWrapper.cjs.js +1 -1
  49. package/dist/cjs/Form/Wrapper/MultiSelectWrapper/MultiSelectWrapper.cjs.js.map +1 -1
  50. package/dist/cjs/Form/Wrapper/RadioWrapper/RadioWrapper.cjs.js +1 -1
  51. package/dist/cjs/Form/Wrapper/RadioWrapper/RadioWrapper.cjs.js.map +1 -1
  52. package/dist/cjs/Form/Wrapper/SelectWrapper/SelectWrapper.cjs.js +1 -1
  53. package/dist/cjs/Form/Wrapper/SelectWrapper/SelectWrapper.cjs.js.map +1 -1
  54. package/dist/cjs/Form/Wrapper/TextareaWrapper/TextareaWrapper.cjs.js +1 -1
  55. package/dist/cjs/Form/Wrapper/TextareaWrapper/TextareaWrapper.cjs.js.map +1 -1
  56. package/dist/cjs/Form/Wrapper/TextareaWrapper/TextareaWrapper.module.scss.cjs.js +1 -1
  57. package/dist/cjs/Form/Wrapper/Wrapper/Wrapper.module.scss.cjs.js +1 -1
  58. package/dist/cjs/Icon/Icon.cjs.js +1 -1
  59. package/dist/cjs/Icon/Icon.cjs.js.map +1 -1
  60. package/dist/cjs/Icon/Icon.module.scss.cjs.js +1 -1
  61. package/dist/cjs/Spinner/Spinner.cjs.js +2 -0
  62. package/dist/cjs/Spinner/Spinner.cjs.js.map +1 -0
  63. package/dist/cjs/Spinner/Spinner.module.scss.cjs.js +2 -0
  64. package/dist/cjs/Spinner/Spinner.module.scss.cjs.js.map +1 -0
  65. package/dist/cjs/_BaseStyling_/BaseStyling.cjs.js +1 -1
  66. package/dist/cjs/_BaseStyling_/BaseStyling.cjs.js.map +1 -1
  67. package/dist/cjs/src/components/Button/Spinner.d.ts +1 -1
  68. package/dist/cjs/src/components/Form/Checkbox/Checkbox.d.ts +1 -1
  69. package/dist/cjs/src/components/Form/Fieldset/Fieldset.d.ts +1 -1
  70. package/dist/cjs/src/components/Form/FileUpload/FileItem/FileItem.d.ts +1 -1
  71. package/dist/cjs/src/components/Form/FileUpload/FileUpload.d.ts +6 -1
  72. package/dist/cjs/src/components/Form/Input/Input.d.ts +2 -1
  73. package/dist/cjs/src/components/Form/Radio/Radio.d.ts +1 -1
  74. package/dist/cjs/src/components/Form/Select/MultiSelect/MultiSelect.d.ts +1 -1
  75. package/dist/cjs/src/components/Form/Select/MultiSelect/useArrowNavigation.d.ts +2 -1
  76. package/dist/cjs/src/components/Form/Select/MultiSelect/useMultiSelect.d.ts +16 -0
  77. package/dist/cjs/src/components/Form/Select/MultiSelect/useMultiSelect.test.d.ts +1 -0
  78. package/dist/cjs/src/components/Form/Select/Select.interfaces.d.ts +6 -4
  79. package/dist/cjs/src/components/Form/Select/SingleSelect/Select.d.ts +1 -1
  80. package/dist/cjs/src/components/Form/Select/SingleSelect/useArrowNavigation.d.ts +1 -1
  81. package/dist/cjs/src/components/Form/Select/useSelectPositionList.d.ts +2 -2
  82. package/dist/cjs/src/components/Form/Textarea/Textarea.d.ts +2 -1
  83. package/dist/cjs/src/components/Form/Wrapper/CheckboxWrapper/CheckboxWrapper.d.ts +1 -1
  84. package/dist/cjs/src/components/Form/Wrapper/InputWrapper/InputWrapper.d.ts +1 -1
  85. package/dist/cjs/src/components/Form/Wrapper/MultiSelectWrapper/MultiSelectWrapper.d.ts +1 -1
  86. package/dist/cjs/src/components/Form/Wrapper/RadioWrapper/RadioWrapper.d.ts +1 -1
  87. package/dist/cjs/src/components/Form/Wrapper/SelectWrapper/SelectWrapper.d.ts +1 -1
  88. package/dist/cjs/src/components/Form/Wrapper/TextareaWrapper/TextareaWrapper.d.ts +2 -1
  89. package/dist/cjs/src/components/Icon/Icon.d.ts +3 -1
  90. package/dist/cjs/src/components/Spinner/Spinner.d.ts +6 -0
  91. package/dist/cjs/src/components/Spinner/Spinner.test.d.ts +1 -0
  92. package/dist/cjs/src/components/_BaseStyling_/BaseStyling.d.ts +2 -0
  93. package/dist/cjs/src/components/withReadOnly.d.ts +8 -0
  94. package/dist/cjs/src/components/withReadOnly.test.d.ts +1 -0
  95. package/dist/cjs/src/index.cjs.js +1 -1
  96. package/dist/cjs/src/index.d.ts +3 -0
  97. package/dist/cjs/src/util/unitTestUtils.d.ts +12 -0
  98. package/dist/cjs/withReadOnly.cjs.js +2 -0
  99. package/dist/cjs/withReadOnly.cjs.js.map +1 -0
  100. package/dist/esm/Button/BaseButton.esm.js +2 -2
  101. package/dist/esm/Button/BaseButton.esm.js.map +1 -1
  102. package/dist/esm/Button/Spinner.esm.js +2 -2
  103. package/dist/esm/Button/Spinner.esm.js.map +1 -1
  104. package/dist/esm/Form/Checkbox/Checkbox.esm.js +2 -1
  105. package/dist/esm/Form/Checkbox/Checkbox.esm.js.map +1 -1
  106. package/dist/esm/Form/Checkbox/Checkbox.module.scss.esm.js +1 -1
  107. package/dist/esm/Form/Fieldset/Fieldset.esm.js +2 -1
  108. package/dist/esm/Form/Fieldset/Fieldset.esm.js.map +1 -1
  109. package/dist/esm/Form/FileUpload/FileItem/FileItem.esm.js +10 -3
  110. package/dist/esm/Form/FileUpload/FileItem/FileItem.esm.js.map +1 -1
  111. package/dist/esm/Form/FileUpload/FileItem/FileItem.module.scss.esm.js +1 -1
  112. package/dist/esm/Form/FileUpload/FileUpload.esm.js +9 -6
  113. package/dist/esm/Form/FileUpload/FileUpload.esm.js.map +1 -1
  114. package/dist/esm/Form/FileUpload/FileUpload.module.scss.esm.js +2 -2
  115. package/dist/esm/Form/FormHelperText/FormHelperText.module.scss.esm.js +1 -1
  116. package/dist/esm/Form/Input/Input.esm.js +7 -5
  117. package/dist/esm/Form/Input/Input.esm.js.map +1 -1
  118. package/dist/esm/Form/Input/Input.module.scss.esm.js +2 -2
  119. package/dist/esm/Form/Radio/Radio.esm.js +2 -1
  120. package/dist/esm/Form/Radio/Radio.esm.js.map +1 -1
  121. package/dist/esm/Form/Radio/Radio.module.scss.esm.js +1 -1
  122. package/dist/esm/Form/Select/MultiSelect/MultiSelect.esm.js +24 -13
  123. package/dist/esm/Form/Select/MultiSelect/MultiSelect.esm.js.map +1 -1
  124. package/dist/esm/Form/Select/MultiSelect/MultiSelect.module.scss.esm.js +2 -2
  125. package/dist/esm/Form/Select/MultiSelect/SelectedOptions.module.scss.esm.js +1 -1
  126. package/dist/esm/Form/Select/MultiSelect/useArrowNavigation.esm.js +4 -1
  127. package/dist/esm/Form/Select/MultiSelect/useArrowNavigation.esm.js.map +1 -1
  128. package/dist/esm/Form/Select/MultiSelect/useMultiSelect.esm.js +63 -0
  129. package/dist/esm/Form/Select/MultiSelect/useMultiSelect.esm.js.map +1 -0
  130. package/dist/esm/Form/Select/Select.interfaces.esm.js +23 -0
  131. package/dist/esm/Form/Select/Select.interfaces.esm.js.map +1 -0
  132. package/dist/esm/Form/Select/SingleSelect/Select.esm.js +20 -15
  133. package/dist/esm/Form/Select/SingleSelect/Select.esm.js.map +1 -1
  134. package/dist/esm/Form/Select/SingleSelect/Select.module.scss.esm.js +2 -2
  135. package/dist/esm/Form/Select/SingleSelect/useArrowNavigation.esm.js +4 -1
  136. package/dist/esm/Form/Select/SingleSelect/useArrowNavigation.esm.js.map +1 -1
  137. package/dist/esm/Form/Select/useSelectPositionList.esm.js +5 -4
  138. package/dist/esm/Form/Select/useSelectPositionList.esm.js.map +1 -1
  139. package/dist/esm/Form/Textarea/Textarea.esm.js +12 -5
  140. package/dist/esm/Form/Textarea/Textarea.esm.js.map +1 -1
  141. package/dist/esm/Form/Textarea/Textarea.module.scss.esm.js +1 -1
  142. package/dist/esm/Form/Wrapper/CheckboxWrapper/CheckboxWrapper.esm.js +4 -1
  143. package/dist/esm/Form/Wrapper/CheckboxWrapper/CheckboxWrapper.esm.js.map +1 -1
  144. package/dist/esm/Form/Wrapper/InputWrapper/InputWrapper.esm.js +4 -2
  145. package/dist/esm/Form/Wrapper/InputWrapper/InputWrapper.esm.js.map +1 -1
  146. package/dist/esm/Form/Wrapper/InputWrapper/InputWrapper.module.scss.esm.js +1 -1
  147. package/dist/esm/Form/Wrapper/MultiSelectWrapper/MultiSelectWrapper.esm.js +3 -2
  148. package/dist/esm/Form/Wrapper/MultiSelectWrapper/MultiSelectWrapper.esm.js.map +1 -1
  149. package/dist/esm/Form/Wrapper/RadioWrapper/RadioWrapper.esm.js +17 -10
  150. package/dist/esm/Form/Wrapper/RadioWrapper/RadioWrapper.esm.js.map +1 -1
  151. package/dist/esm/Form/Wrapper/SelectWrapper/SelectWrapper.esm.js +5 -2
  152. package/dist/esm/Form/Wrapper/SelectWrapper/SelectWrapper.esm.js.map +1 -1
  153. package/dist/esm/Form/Wrapper/TextareaWrapper/TextareaWrapper.esm.js +20 -10
  154. package/dist/esm/Form/Wrapper/TextareaWrapper/TextareaWrapper.esm.js.map +1 -1
  155. package/dist/esm/Form/Wrapper/TextareaWrapper/TextareaWrapper.module.scss.esm.js +2 -2
  156. package/dist/esm/Form/Wrapper/Wrapper/Wrapper.module.scss.esm.js +1 -1
  157. package/dist/esm/Icon/Icon.esm.js +2 -0
  158. package/dist/esm/Icon/Icon.esm.js.map +1 -1
  159. package/dist/esm/Icon/Icon.module.scss.esm.js +2 -2
  160. package/dist/esm/Spinner/Spinner.esm.js +29 -0
  161. package/dist/esm/Spinner/Spinner.esm.js.map +1 -0
  162. package/dist/esm/Spinner/Spinner.module.scss.esm.js +8 -0
  163. package/dist/esm/Spinner/Spinner.module.scss.esm.js.map +1 -0
  164. package/dist/esm/_BaseStyling_/BaseStyling.esm.js +2 -0
  165. package/dist/esm/_BaseStyling_/BaseStyling.esm.js.map +1 -1
  166. package/dist/esm/src/components/Button/Spinner.d.ts +1 -1
  167. package/dist/esm/src/components/Form/Checkbox/Checkbox.d.ts +1 -1
  168. package/dist/esm/src/components/Form/Fieldset/Fieldset.d.ts +1 -1
  169. package/dist/esm/src/components/Form/FileUpload/FileItem/FileItem.d.ts +1 -1
  170. package/dist/esm/src/components/Form/FileUpload/FileUpload.d.ts +6 -1
  171. package/dist/esm/src/components/Form/Input/Input.d.ts +2 -1
  172. package/dist/esm/src/components/Form/Radio/Radio.d.ts +1 -1
  173. package/dist/esm/src/components/Form/Select/MultiSelect/MultiSelect.d.ts +1 -1
  174. package/dist/esm/src/components/Form/Select/MultiSelect/useArrowNavigation.d.ts +2 -1
  175. package/dist/esm/src/components/Form/Select/MultiSelect/useMultiSelect.d.ts +16 -0
  176. package/dist/esm/src/components/Form/Select/MultiSelect/useMultiSelect.test.d.ts +1 -0
  177. package/dist/esm/src/components/Form/Select/Select.interfaces.d.ts +6 -4
  178. package/dist/esm/src/components/Form/Select/SingleSelect/Select.d.ts +1 -1
  179. package/dist/esm/src/components/Form/Select/SingleSelect/useArrowNavigation.d.ts +1 -1
  180. package/dist/esm/src/components/Form/Select/useSelectPositionList.d.ts +2 -2
  181. package/dist/esm/src/components/Form/Textarea/Textarea.d.ts +2 -1
  182. package/dist/esm/src/components/Form/Wrapper/CheckboxWrapper/CheckboxWrapper.d.ts +1 -1
  183. package/dist/esm/src/components/Form/Wrapper/InputWrapper/InputWrapper.d.ts +1 -1
  184. package/dist/esm/src/components/Form/Wrapper/MultiSelectWrapper/MultiSelectWrapper.d.ts +1 -1
  185. package/dist/esm/src/components/Form/Wrapper/RadioWrapper/RadioWrapper.d.ts +1 -1
  186. package/dist/esm/src/components/Form/Wrapper/SelectWrapper/SelectWrapper.d.ts +1 -1
  187. package/dist/esm/src/components/Form/Wrapper/TextareaWrapper/TextareaWrapper.d.ts +2 -1
  188. package/dist/esm/src/components/Icon/Icon.d.ts +3 -1
  189. package/dist/esm/src/components/Spinner/Spinner.d.ts +6 -0
  190. package/dist/esm/src/components/Spinner/Spinner.test.d.ts +1 -0
  191. package/dist/esm/src/components/_BaseStyling_/BaseStyling.d.ts +2 -0
  192. package/dist/esm/src/components/withReadOnly.d.ts +8 -0
  193. package/dist/esm/src/components/withReadOnly.test.d.ts +1 -0
  194. package/dist/esm/src/index.d.ts +3 -0
  195. package/dist/esm/src/index.esm.js +2 -0
  196. package/dist/esm/src/index.esm.js.map +1 -1
  197. package/dist/esm/src/util/unitTestUtils.d.ts +12 -0
  198. package/dist/esm/withReadOnly.esm.js +70 -0
  199. package/dist/esm/withReadOnly.esm.js.map +1 -0
  200. package/dist/lib/style-inject.js +48 -41
  201. package/dist/lib/style-inject.js.map +1 -1
  202. package/package.json +16 -16
  203. package/src/components/Button/BaseButton.tsx +2 -2
  204. package/src/components/Button/Spinner.tsx +1 -1
  205. package/src/components/Form/Checkbox/Checkbox.module.scss +70 -0
  206. package/src/components/Form/Checkbox/Checkbox.tsx +2 -1
  207. package/src/components/Form/Fieldset/Fieldset.tsx +2 -1
  208. package/src/components/Form/FileUpload/FileItem/FileItem.module.scss +16 -0
  209. package/src/components/Form/FileUpload/FileItem/FileItem.tsx +17 -3
  210. package/src/components/Form/FileUpload/FileUpload.module.scss +57 -1
  211. package/src/components/Form/FileUpload/FileUpload.tsx +16 -6
  212. package/src/components/Form/FormHelperText/FormHelperText.module.scss +4 -0
  213. package/src/components/Form/Input/Input.module.scss +26 -0
  214. package/src/components/Form/Input/Input.tsx +10 -1
  215. package/src/components/Form/Radio/Radio.module.scss +46 -0
  216. package/src/components/Form/Radio/Radio.tsx +2 -1
  217. package/src/components/Form/Select/MultiSelect/MultiSelect.module.scss +35 -1
  218. package/src/components/Form/Select/MultiSelect/MultiSelect.tsx +41 -26
  219. package/src/components/Form/Select/MultiSelect/SelectedOptions.module.scss +8 -0
  220. package/src/components/Form/Select/MultiSelect/useArrowNavigation.ts +6 -1
  221. package/src/components/Form/Select/MultiSelect/useMultiSelect.tsx +98 -0
  222. package/src/components/Form/Select/Select.interfaces.ts +6 -4
  223. package/src/components/Form/Select/SingleSelect/Select.module.scss +60 -1
  224. package/src/components/Form/Select/SingleSelect/Select.tsx +30 -25
  225. package/src/components/Form/Select/SingleSelect/useArrowNavigation.ts +6 -1
  226. package/src/components/Form/Select/useSelectPositionList.ts +4 -4
  227. package/src/components/Form/Textarea/Textarea.module.scss +24 -0
  228. package/src/components/Form/Textarea/Textarea.tsx +24 -3
  229. package/src/components/Form/Wrapper/CheckboxWrapper/CheckboxWrapper.tsx +4 -1
  230. package/src/components/Form/Wrapper/InputWrapper/InputWrapper.module.scss +14 -0
  231. package/src/components/Form/Wrapper/InputWrapper/InputWrapper.tsx +4 -2
  232. package/src/components/Form/Wrapper/MultiSelectWrapper/MultiSelectWrapper.tsx +3 -1
  233. package/src/components/Form/Wrapper/RadioWrapper/RadioWrapper.tsx +17 -12
  234. package/src/components/Form/Wrapper/SelectWrapper/SelectWrapper.tsx +6 -1
  235. package/src/components/Form/Wrapper/TextareaWrapper/TextareaWrapper.module.scss +43 -0
  236. package/src/components/Form/Wrapper/TextareaWrapper/TextareaWrapper.tsx +45 -20
  237. package/src/components/Form/Wrapper/Wrapper/Wrapper.module.scss +6 -0
  238. package/src/components/Icon/Icon.module.scss +8 -1
  239. package/src/components/Icon/Icon.tsx +3 -1
  240. package/src/components/Spinner/Spinner.module.scss +33 -0
  241. package/src/components/Spinner/Spinner.tsx +61 -0
  242. package/src/components/_BaseStyling_/BaseStyling.tsx +4 -0
  243. package/src/components/withReadOnly.tsx +112 -0
  244. package/src/font/icomoon.eot +0 -0
  245. package/src/font/icomoon.svg +2 -0
  246. package/src/font/icomoon.ttf +0 -0
  247. package/src/font/icomoon.woff +0 -0
  248. package/src/font/selection.json +1 -1
  249. package/src/index.ts +3 -0
  250. package/src/mixins.module.scss +6 -0
  251. package/src/util/unitTestUtils.ts +32 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"withReadOnly.esm.js","sources":["../../../../src/components/withReadOnly.tsx"],"sourcesContent":["/*\n * Copyright 2022 OneWelcome B.V.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React, { ComponentType, ForwardedRef, PropsWithChildren } from \"react\";\n\nexport interface WithReadOnlyProps {\n readOnlyView?: boolean;\n required?: boolean;\n helperText?: string;\n type?: string;\n}\n\nconst componentsWithKeyEventsToPrevent: string[] = [\"CheckboxWrapper\"];\n\nconst getDisplayName = <P,>(WrappedComponent: ComponentType<P>) => {\n return WrappedComponent.displayName ?? WrappedComponent.name ?? \"Component\";\n};\n\nconst getConditionalProps = (readOnlyView: boolean, type: string, helperText?: string) => {\n const props: Record<string, any> = {};\n\n if (readOnlyView) {\n props.style = { pointerEvents: \"none\", userSelect: \"text\" };\n if (helperText) {\n props.helperText = \"\";\n }\n } else {\n props.helperText = helperText;\n }\n\n if (type) {\n props.type = type;\n }\n\n return props;\n};\n\nexport const withReadOnly = <P extends object>(WrappedComponent: ComponentType<P>) => {\n const preventKeyUpAndKeyDownHandlerForSpecificComponents = (readOnlyView: boolean) => {\n const preventSubmissionKeys = (e: KeyboardEvent) => {\n const isEnterOrSpace = (e: KeyboardEvent) => e.key === \"Enter\" || e.key === \" \";\n if (isEnterOrSpace(e)) {\n e.stopPropagation();\n e.preventDefault();\n }\n };\n\n if (\n readOnlyView &&\n componentsWithKeyEventsToPrevent.includes(\n WrappedComponent.displayName || WrappedComponent.name\n )\n ) {\n const props: Record<string, any> = {};\n\n props.onKeyUp = (e: KeyboardEvent) => {\n preventSubmissionKeys(e);\n };\n\n props.onKeyDown = (e: KeyboardEvent) => {\n preventSubmissionKeys(e);\n };\n\n return props;\n }\n\n return {};\n };\n\n const WithReadOnlyComponent = React.forwardRef(\n (props: PropsWithChildren<P & WithReadOnlyProps>, ref: ForwardedRef<any>) => {\n const {\n readOnlyView = false,\n required,\n children,\n helperText,\n type = \"\",\n ...restProps\n } = props;\n\n return (\n <WrappedComponent\n ref={ref}\n {...(restProps as P)}\n data-readonlyview={readOnlyView}\n aria-readonly={readOnlyView}\n required={readOnlyView ? false : required}\n {...getConditionalProps(readOnlyView, type, helperText)}\n {...preventKeyUpAndKeyDownHandlerForSpecificComponents(readOnlyView)}\n >\n {children}\n </WrappedComponent>\n );\n }\n );\n\n WithReadOnlyComponent.displayName = `withReadOnly_${getDisplayName(WrappedComponent)}`;\n return WithReadOnlyComponent;\n};\n"],"names":[],"mappings":"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"}
@@ -2,51 +2,58 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
6
-
7
5
  function getDefaultExportFromCjs (x) {
8
6
  return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
9
7
  }
10
8
 
11
- var styleInject$1 = {exports: {}};
12
-
13
- (function (module, exports) {
14
- (function (global, factory) {
15
- module.exports = factory() ;
16
- }(commonjsGlobal, (function () {
17
- function styleInject(css, ref) {
18
- if ( ref === void 0 ) ref = {};
19
- var insertAt = ref.insertAt;
20
-
21
- if (!css || typeof document === 'undefined') { return; }
22
-
23
- var head = document.head || document.getElementsByTagName('head')[0];
24
- var style = document.createElement('style');
25
- style.type = 'text/css';
26
-
27
- if (insertAt === 'top') {
28
- if (head.firstChild) {
29
- head.insertBefore(style, head.firstChild);
30
- } else {
31
- head.appendChild(style);
32
- }
33
- } else {
34
- head.appendChild(style);
35
- }
36
-
37
- if (style.styleSheet) {
38
- style.styleSheet.cssText = css;
39
- } else {
40
- style.appendChild(document.createTextNode(css));
41
- }
42
- }
43
-
44
- return styleInject;
45
-
46
- })));
47
- } (styleInject$1));
48
-
49
- var styleInjectExports = styleInject$1.exports;
9
+ var styleInject$2 = {exports: {}};
10
+
11
+ var styleInject$1 = styleInject$2.exports;
12
+
13
+ var hasRequiredStyleInject;
14
+
15
+ function requireStyleInject () {
16
+ if (hasRequiredStyleInject) return styleInject$2.exports;
17
+ hasRequiredStyleInject = 1;
18
+ (function (module, exports) {
19
+ (function (global, factory) {
20
+ module.exports = factory() ;
21
+ }(styleInject$1, (function () {
22
+ function styleInject(css, ref) {
23
+ if ( ref === void 0 ) ref = {};
24
+ var insertAt = ref.insertAt;
25
+
26
+ if (!css || typeof document === 'undefined') { return; }
27
+
28
+ var head = document.head || document.getElementsByTagName('head')[0];
29
+ var style = document.createElement('style');
30
+ style.type = 'text/css';
31
+
32
+ if (insertAt === 'top') {
33
+ if (head.firstChild) {
34
+ head.insertBefore(style, head.firstChild);
35
+ } else {
36
+ head.appendChild(style);
37
+ }
38
+ } else {
39
+ head.appendChild(style);
40
+ }
41
+
42
+ if (style.styleSheet) {
43
+ style.styleSheet.cssText = css;
44
+ } else {
45
+ style.appendChild(document.createTextNode(css));
46
+ }
47
+ }
48
+
49
+ return styleInject;
50
+
51
+ })));
52
+ } (styleInject$2));
53
+ return styleInject$2.exports;
54
+ }
55
+
56
+ var styleInjectExports = requireStyleInject();
50
57
  var styleInject = /*@__PURE__*/getDefaultExportFromCjs(styleInjectExports);
51
58
 
52
59
  exports.default = styleInject;
@@ -1 +1 @@
1
- {"version":3,"file":"style-inject.js","sources":["../../node_modules/style-inject/dist/style-inject.js"],"sourcesContent":["(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n\ttypeof define === 'function' && define.amd ? define(factory) :\n\t(global.styleInject = factory());\n}(this, (function () { 'use strict';\n\nfunction styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nreturn styleInject;\n\n})));\n"],"names":["this"],"mappings":";;;;;;;;;;;;;AAAA,CAAA,CAAC,UAAU,MAAM,EAAE,OAAO,EAAE;EACoC,MAAiB,CAAA,OAAA,GAAA,OAAO,EAAE,CAEzD,CAAC;AAClC,EAAC,CAACA,cAAI,GAAG,YAAY,CACrB;AACA,CAAA,SAAS,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE;GAC7B,KAAK,GAAG,KAAK,KAAK,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC;AACjC,GAAE,IAAI,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;AAC9B;GACE,IAAI,CAAC,GAAG,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE,EAAE,OAAO,EAAE;AAC1D;AACA,GAAE,IAAI,IAAI,GAAG,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;GACrE,IAAI,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;AAC9C,GAAE,KAAK,CAAC,IAAI,GAAG,UAAU,CAAC;AAC1B;AACA,GAAE,IAAI,QAAQ,KAAK,KAAK,EAAE;AAC1B,KAAI,IAAI,IAAI,CAAC,UAAU,EAAE;OACnB,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;AAChD,MAAK,MAAM;AACX,OAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;MACzB;AACL,IAAG,MAAM;AACT,KAAI,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IACzB;AACH;AACA,GAAE,IAAI,KAAK,CAAC,UAAU,EAAE;AACxB,KAAI,KAAK,CAAC,UAAU,CAAC,OAAO,GAAG,GAAG,CAAC;AACnC,IAAG,MAAM;KACL,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;IACjD;EACF;AACD;AACA,CAAA,OAAO,WAAW,CAAC;AACnB;AACA,EAAC,EAAE,EAAA;;;;;;;;","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"style-inject.js","sources":["../../node_modules/style-inject/dist/style-inject.js","../../node_modules/style-inject/dist/style-inject.js?commonjs-entry"],"sourcesContent":["(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n\ttypeof define === 'function' && define.amd ? define(factory) :\n\t(global.styleInject = factory());\n}(this, (function () { 'use strict';\n\nfunction styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nreturn styleInject;\n\n})));\n","import { getDefaultExportFromCjs } from \"\u0000commonjsHelpers.js\";\nimport { __require as requireStyleInject } from \"/home/circleci/project/node_modules/style-inject/dist/style-inject.js\";\nvar styleInjectExports = requireStyleInject();\nexport { styleInjectExports as __moduleExports };\nexport default /*@__PURE__*/getDefaultExportFromCjs(styleInjectExports);"],"names":["this"],"mappings":";;;;;;;;;;;;;;;;;;AAAA,EAAA,CAAC,UAAU,MAAM,EAAE,OAAO,EAAE;GACoC,MAAiB,CAAA,OAAA,GAAA,OAAO,EAAE,CAEzD,CAAC;AAClC,GAAC,CAACA,aAAI,GAAG,YAAY,CACrB;AACA,EAAA,SAAS,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE;IAC7B,KAAK,GAAG,KAAK,KAAK,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC;AACjC,IAAE,IAAI,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;AAC9B;IACE,IAAI,CAAC,GAAG,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE,EAAE,OAAO,EAAE;AAC1D;AACA,IAAE,IAAI,IAAI,GAAG,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IACrE,IAAI,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;AAC9C,IAAE,KAAK,CAAC,IAAI,GAAG,UAAU,CAAC;AAC1B;AACA,IAAE,IAAI,QAAQ,KAAK,KAAK,EAAE;AAC1B,MAAI,IAAI,IAAI,CAAC,UAAU,EAAE;QACnB,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;AAChD,OAAK,MAAM;AACX,QAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;OACzB;AACL,KAAG,MAAM;AACT,MAAI,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;KACzB;AACH;AACA,IAAE,IAAI,KAAK,CAAC,UAAU,EAAE;AACxB,MAAI,KAAK,CAAC,UAAU,CAAC,OAAO,GAAG,GAAG,CAAC;AACnC,KAAG,MAAM;MACL,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;KACjD;GACF;AACD;AACA,EAAA,OAAO,WAAW,CAAC;AACnB;AACA,GAAC,EAAE,EAAA;;;;;ACjCH,IAAI,kBAAkB,GAAG,kBAAkB,EAAE,CAAC;AAE9C,kBAAe,aAAa,uBAAuB,CAAC,kBAAkB,CAAC;;;;","x_google_ignoreList":[0,1]}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "homepage": "http://onewelcome.github.io/react-lib-components",
3
3
  "name": "@onewelcome/react-lib-components",
4
- "version": "8.4.0",
4
+ "version": "8.6.0",
5
5
  "license": "Apache-2.0",
6
6
  "author": "OneWelcome B.V.",
7
7
  "main": "dist/cjs/src/index.cjs.js",
@@ -61,23 +61,23 @@
61
61
  "@mdx-js/react": "^3.0.1",
62
62
  "@onewelcome/eslint-config-shared-codestyle": "^9.2.3",
63
63
  "@onewelcome/storybook-addon-basestyling": "^2.0.0",
64
- "@rollup/plugin-commonjs": "^26.0.1",
64
+ "@rollup/plugin-commonjs": "^28.0.1",
65
65
  "@rollup/plugin-node-resolve": "^15.2.3",
66
66
  "@rollup/plugin-terser": "^0.4.4",
67
67
  "@rollup/plugin-typescript": "^11.1.6",
68
- "@storybook/addon-a11y": "^8.1.11",
69
- "@storybook/addon-actions": "^8.1.11",
70
- "@storybook/addon-docs": "^8.1.11",
71
- "@storybook/addon-essentials": "^8.1.11",
72
- "@storybook/addon-interactions": "^8.1.11",
73
- "@storybook/addon-links": "^8.1.11",
74
- "@storybook/addon-webpack5-compiler-babel": "^3.0.3",
75
- "@storybook/blocks": "^8.1.11",
76
- "@storybook/components": "^8.1.11",
77
- "@storybook/manager-api": "^8.1.11",
78
- "@storybook/react": "^8.1.11",
79
- "@storybook/react-webpack5": "^8.1.11",
80
- "@storybook/theming": "^8.1.11",
68
+ "@storybook/addon-a11y": "~8.1.11",
69
+ "@storybook/addon-actions": "~8.1.11",
70
+ "@storybook/addon-docs": "~8.1.11",
71
+ "@storybook/addon-essentials": "~8.1.11",
72
+ "@storybook/addon-interactions": "~8.1.11",
73
+ "@storybook/addon-links": "~8.1.11",
74
+ "@storybook/addon-webpack5-compiler-babel": "~3.0.3",
75
+ "@storybook/blocks": "~8.1.11",
76
+ "@storybook/components": "~8.1.11",
77
+ "@storybook/manager-api": "~8.1.11",
78
+ "@storybook/react": "~8.1.11",
79
+ "@storybook/react-webpack5": "~8.1.11",
80
+ "@storybook/theming": "~8.1.11",
81
81
  "@testing-library/dom": "^10.3.0",
82
82
  "@testing-library/jest-dom": "^6.4.6",
83
83
  "@testing-library/react": "^16.0.0",
@@ -127,7 +127,7 @@
127
127
  "sass": "1.77.6",
128
128
  "sass-loader": "^14.2.1",
129
129
  "size-limit": "^11.1.4",
130
- "storybook": "^8.1.11",
130
+ "storybook": "~8.1.11",
131
131
  "storybook-addon-mock": "^5.0.0",
132
132
  "storybook-addon-pseudo-states": "^3.1.1",
133
133
  "style-loader": "^4.0.0",
@@ -16,7 +16,7 @@
16
16
 
17
17
  import React, { ForwardRefRenderFunction, ComponentPropsWithRef, Fragment } from "react";
18
18
  import classes from "./BaseButton.module.scss";
19
- import { Spinner } from "./Spinner";
19
+ import { ButtonSpinner } from "./Spinner";
20
20
 
21
21
  export interface Props extends ComponentPropsWithRef<"button"> {
22
22
  type?: "submit" | "button" | "reset";
@@ -49,7 +49,7 @@ const BaseButtonComponent: ForwardRefRenderFunction<HTMLButtonElement, Props> =
49
49
  {loading ? (
50
50
  <Fragment>
51
51
  <div className={classes["content-hidden"]}>{children}</div>
52
- <Spinner className={classes["spinner"]} />
52
+ <ButtonSpinner className={classes["spinner"]} />
53
53
  </Fragment>
54
54
  ) : (
55
55
  children
@@ -16,7 +16,7 @@
16
16
 
17
17
  import React from "react";
18
18
 
19
- export const Spinner: React.FC<React.SVGProps<SVGSVGElement>> = props => (
19
+ export const ButtonSpinner: React.FC<React.SVGProps<SVGSVGElement>> = props => (
20
20
  <svg
21
21
  {...props}
22
22
  width="24"
@@ -133,3 +133,73 @@
133
133
  .indeterminate {
134
134
  color: var(--color-primary);
135
135
  }
136
+
137
+ [data-readonlyview="true"] {
138
+ & label {
139
+ border-color: var(--read-only-border-color);
140
+ color: var(--read-only-text-color);
141
+ background-color: transparent;
142
+ user-select: text;
143
+ }
144
+
145
+ & .checkbox-wrapper {
146
+ & span {
147
+ color: var(--color-blue-grey100);
148
+
149
+ &.checkmark {
150
+ background-color: var(--color-blue-grey900);
151
+ color: var(--color-white);
152
+ border-radius: 2px;
153
+ &:before {
154
+ outline: 1px solid var(--read-only-border-color);
155
+ border-radius: 2px;
156
+ outline-offset: -1px;
157
+ }
158
+ }
159
+ }
160
+ }
161
+
162
+ input[type="checkbox"] {
163
+ pointer-events: none;
164
+ }
165
+ }
166
+
167
+ input[type="checkbox"] {
168
+ &[data-readonlyview="true"] {
169
+ & ~ span {
170
+ &:before {
171
+ color: var(--color-blue-grey100);
172
+ }
173
+
174
+ &.checkmark {
175
+ background-color: var(--color-blue-grey900);
176
+ color: var(--color-white);
177
+ border: 1px solid var(--read-only-border-color);
178
+ border-radius: 3px;
179
+ &:before {
180
+ color: var(--color-white);
181
+ }
182
+ }
183
+ }
184
+
185
+ & ~ span[data-icon="true"] {
186
+ color: var(--color-blue-grey100);
187
+
188
+ &.checkmark {
189
+ background-color: var(--color-blue-grey900);
190
+ color: var(--color-white);
191
+ border: 0;
192
+ &:before {
193
+ outline: 1px solid var(--read-only-border-color);
194
+ outline-offset: -1px;
195
+ border-radius: 2px;
196
+ }
197
+ }
198
+ }
199
+
200
+ & ~ label {
201
+ pointer-events: none;
202
+ user-select: text;
203
+ }
204
+ }
205
+ }
@@ -30,6 +30,7 @@ import {
30
30
  Props as FormSelectorWrapperProps
31
31
  } from "../FormSelectorWrapper/FormSelectorWrapper";
32
32
  import { FormSelector } from "../form.interfaces";
33
+ import { withReadOnly } from "../../withReadOnly";
33
34
 
34
35
  const isToggle = (children: ReactNode) => !!(children as ReactElement)?.props?.["data-toggle"];
35
36
 
@@ -182,4 +183,4 @@ const CheckboxComponent: ForwardRefRenderFunction<HTMLInputElement, Props> = (
182
183
  );
183
184
  };
184
185
 
185
- export const Checkbox = React.forwardRef(CheckboxComponent);
186
+ export const Checkbox = withReadOnly(React.forwardRef(CheckboxComponent));
@@ -32,6 +32,7 @@ import { FormHelperText } from "../FormHelperText/FormHelperText";
32
32
  import { InputWrapper } from "../Wrapper/InputWrapper/InputWrapper";
33
33
  import { SelectWrapper } from "../Wrapper/SelectWrapper/SelectWrapper";
34
34
  import { TextareaWrapper } from "../Wrapper/TextareaWrapper/TextareaWrapper";
35
+ import { withReadOnly } from "../../withReadOnly";
35
36
 
36
37
  export interface Props extends ComponentPropsWithRef<"fieldset"> {
37
38
  children?: ReactElement | ReactElement[];
@@ -123,4 +124,4 @@ const FieldsetComponent: ForwardRefRenderFunction<HTMLFieldSetElement, Props> =
123
124
  );
124
125
  };
125
126
 
126
- export const Fieldset = React.forwardRef(FieldsetComponent);
127
+ export const Fieldset = withReadOnly(React.forwardRef(FieldsetComponent));
@@ -186,4 +186,20 @@
186
186
  .file-subtitle {
187
187
  margin-left: 0;
188
188
  }
189
+
190
+ &[data-readonlyview="true"] {
191
+ & .file-list-container {
192
+ & p {
193
+ & span {
194
+ &:before {
195
+ color: var(--font-family);
196
+ }
197
+ }
198
+ }
199
+
200
+ & button {
201
+ visibility: hidden;
202
+ }
203
+ }
204
+ }
189
205
  }
@@ -22,6 +22,7 @@ import { ProgressBar } from "../../../ProgressBar/ProgressBar";
22
22
  import { FileType } from "../FileUpload";
23
23
  import { Button } from "../../../Button/Button";
24
24
  import { Link } from "../../../Link/Link";
25
+ import { withReadOnly } from "../../../withReadOnly";
25
26
  export type UploadProgress = "uploading" | "completed" | "error" | "readonly" | "retry";
26
27
 
27
28
  export interface Props extends ComponentPropsWithRef<"div"> {
@@ -62,7 +63,8 @@ const FileItemComponent: ForwardRefRenderFunction<HTMLDivElement, Props> = (
62
63
  progress,
63
64
  downloadFileLink,
64
65
  totalPercentage,
65
- onRequestedFileAction
66
+ onRequestedFileAction,
67
+ ...rest
66
68
  }: Props,
67
69
  ref
68
70
  ) => {
@@ -213,8 +215,20 @@ const FileItemComponent: ForwardRefRenderFunction<HTMLDivElement, Props> = (
213
215
  );
214
216
  };
215
217
 
218
+ const restPropsWithoutPointerEvents = () => {
219
+ let props = rest;
220
+ delete rest?.style?.pointerEvents;
221
+ return props;
222
+ };
223
+
216
224
  return (
217
- <div ref={ref} className={classes["file-item-wrapper"]} aria-label={`${name}-wrapper`}>
225
+ <div
226
+ ref={ref}
227
+ className={classes["file-item-wrapper"]}
228
+ aria-label={`${name}-wrapper`}
229
+ tabIndex={0}
230
+ {...restPropsWithoutPointerEvents()}
231
+ >
218
232
  <div className={classes["file-list-container"]}>
219
233
  {status !== ACTION_STATUS.UPLOADING && getUploadedFileInfo()}
220
234
 
@@ -240,4 +254,4 @@ const FileItemComponent: ForwardRefRenderFunction<HTMLDivElement, Props> = (
240
254
  );
241
255
  };
242
256
 
243
- export const FileItem = React.forwardRef(FileItemComponent);
257
+ export const FileItem = withReadOnly(React.forwardRef(FileItemComponent));
@@ -80,6 +80,58 @@
80
80
  & {
81
81
  @include transition(all, 0.2s, ease-in-out);
82
82
  }
83
+
84
+ &[data-readonlyview="true"]:has(.file-list) {
85
+ .required {
86
+ &:after {
87
+ display: none;
88
+ }
89
+ }
90
+
91
+ ul {
92
+ li {
93
+ p {
94
+ span[data-icon] {
95
+ &:before {
96
+ color: var(--color-blue-grey900);
97
+ }
98
+ }
99
+ }
100
+
101
+ button {
102
+ visibility: hidden;
103
+ }
104
+ }
105
+ }
106
+
107
+ .upload-button-wrapper {
108
+ display: none;
109
+ }
110
+ }
111
+
112
+ &[data-readonlyview="true"]:not(:has(.file-list)) {
113
+ .upload-button-wrapper {
114
+ min-height: 4.5rem;
115
+
116
+ & .file-select {
117
+ border: 0;
118
+
119
+ & p {
120
+ color: var(--read-only-text-color);
121
+ }
122
+ }
123
+
124
+ & .file-upload-btn {
125
+ display: none;
126
+ }
127
+ }
128
+
129
+ .required {
130
+ &:after {
131
+ display: none;
132
+ }
133
+ }
134
+ }
83
135
  }
84
136
 
85
137
  .upload-button-wrapper {
@@ -88,7 +140,6 @@
88
140
 
89
141
  &.drag-active {
90
142
  .outline {
91
- pointer-events: none;
92
143
  position: absolute;
93
144
  margin: 0;
94
145
  padding: 0;
@@ -134,6 +185,11 @@
134
185
  }
135
186
  }
136
187
 
188
+ .file-selector-helper-text {
189
+ color: var(--greyed-out);
190
+ display: block;
191
+ }
192
+
137
193
  .file-select {
138
194
  display: flex;
139
195
  align-items: center;
@@ -29,6 +29,7 @@ import { Typography } from "../../Typography/Typography";
29
29
  import classes from "./FileUpload.module.scss";
30
30
  import { useDetermineStatusIcon } from "../../../hooks/useDetermineStatusIcon";
31
31
  import { Label } from "../Label/Label";
32
+ import { withReadOnly } from "../../withReadOnly";
32
33
 
33
34
  type FileUploadType = Omit<InputProps, "onDrop" | "type" | "onChange" | "suffix" | "prefix">;
34
35
  export type FileType = Omit<FileConfig, "onRequestedFileAction"> &
@@ -43,6 +44,9 @@ export interface Props extends FileUploadType {
43
44
  maxFileSizeInBytes?: number;
44
45
  selectButtonText?: string;
45
46
  dragAndDropText?: string;
47
+ /**
48
+ * @deprecated use the `helperText` prop instead
49
+ */
46
50
  subText?: string;
47
51
  onDragOver?: DragEventHandler;
48
52
  onDragEnter?: DragEventHandler;
@@ -54,6 +58,8 @@ export interface Props extends FileUploadType {
54
58
  isRequired?: boolean;
55
59
  invalidDropErrorMessage?: string;
56
60
  noMultipleFileDropErrorMessage?: string;
61
+ readOnlyViewMessage?: string;
62
+ helperText?: string;
57
63
  }
58
64
 
59
65
  const FileUploadComponent: ForwardRefRenderFunction<HTMLInputElement, Props> = (
@@ -71,11 +77,12 @@ const FileUploadComponent: ForwardRefRenderFunction<HTMLInputElement, Props> = (
71
77
  onChange,
72
78
  dragAndDropText = "Drag and drop or",
73
79
  selectButtonText = "Browse file",
80
+ readOnlyViewMessage = "No file uploaded",
74
81
  onDragOver,
75
82
  onDragLeave,
76
83
  wrapperProps,
77
84
  onDrop,
78
- subText,
85
+ subText, // @deprecated
79
86
  onRequestedFileAction,
80
87
  exceedingMaxSizeErrorText,
81
88
  fileList,
@@ -83,6 +90,7 @@ const FileUploadComponent: ForwardRefRenderFunction<HTMLInputElement, Props> = (
83
90
  isRequired = true,
84
91
  invalidDropErrorMessage = "Invalid file format. Supported formats are: $accept.",
85
92
  noMultipleFileDropErrorMessage = "You can upload only a single file.",
93
+ helperText = subText,
86
94
  ...rest
87
95
  }: Props,
88
96
  ref
@@ -98,6 +106,7 @@ const FileUploadComponent: ForwardRefRenderFunction<HTMLInputElement, Props> = (
98
106
  let errorTextClass = [classes["file-selector-sub-text"]];
99
107
  dragActive && dropzoneContainerClassNames.push(classes["drag-active"]);
100
108
  const hasError = inputError || error || errorMsg;
109
+ const readOnlyView = rest["data-readonlyview"];
101
110
  if (hasError) {
102
111
  const errorClass = classes["error"];
103
112
  dropzoneClassNames.push(errorClass);
@@ -231,7 +240,7 @@ const FileUploadComponent: ForwardRefRenderFunction<HTMLInputElement, Props> = (
231
240
  return (
232
241
  <div className={classes["file-upload-wrapper"]} {...wrapperProps}>
233
242
  <div className={classes["dropzone-wrapper"]}>
234
- <div className={dropzoneClassNames.join(" ")}>
243
+ <div className={dropzoneClassNames.join(" ")} data-readonlyview={readOnlyView}>
235
244
  <Label ref={labelRef} className={`${labelClasses.join(" ")}`} htmlFor={inputId}>
236
245
  {title}
237
246
  </Label>
@@ -258,10 +267,11 @@ const FileUploadComponent: ForwardRefRenderFunction<HTMLInputElement, Props> = (
258
267
  onDragOver={e => !disabled && handleOnDragOver(e)}
259
268
  onDragLeave={e => !disabled && handleOnDragLeave(e)}
260
269
  onDrop={e => !disabled && handleOnDrop(e)}
270
+ tabIndex={readOnlyView ? 0 : -1}
261
271
  >
262
272
  <div className={classes["file-select"]}>
263
273
  <Typography variant="body" className={"drag-and-drop-text"}>
264
- {dragAndDropText}
274
+ {readOnlyView ? readOnlyViewMessage : dragAndDropText}
265
275
  </Typography>
266
276
 
267
277
  <div className={classes["file-upload-btn"]}>
@@ -293,9 +303,9 @@ const FileUploadComponent: ForwardRefRenderFunction<HTMLInputElement, Props> = (
293
303
  {errorMsg}
294
304
  </Typography>
295
305
  )}
296
- {subText && (
306
+ {helperText && (
297
307
  <Typography variant={"sub-text"} className={subTextClass.join(" ")}>
298
- {subText}
308
+ {helperText}
299
309
  </Typography>
300
310
  )}
301
311
  </div>
@@ -303,4 +313,4 @@ const FileUploadComponent: ForwardRefRenderFunction<HTMLInputElement, Props> = (
303
313
  );
304
314
  };
305
315
 
306
- export const FileUpload = React.forwardRef(FileUploadComponent);
316
+ export const FileUpload = withReadOnly(React.forwardRef(FileUploadComponent));
@@ -26,3 +26,7 @@ div.disabled {
26
26
  div.error {
27
27
  color: var(--error);
28
28
  }
29
+
30
+ [data-readonlyview="true"] div.form-helper-text {
31
+ display: none;
32
+ }
@@ -94,6 +94,32 @@
94
94
  [data-icon-status="error"] {
95
95
  color: var(--error);
96
96
  }
97
+
98
+ &[data-readonlyview="true"] {
99
+ color: var(--read-only-text-color);
100
+
101
+ & .Input-module {
102
+ border-color: var(--read-only-border-color);
103
+ }
104
+
105
+ & span.outline {
106
+ color: var(--read-only-text-color);
107
+ border-color: var(--read-only-border-color);
108
+ background-color: var(--color-white);
109
+
110
+ &.focus {
111
+ border-color: var(--read-only-border-color);
112
+ }
113
+ }
114
+
115
+ &:hover {
116
+ & .outline {
117
+ color: var(--read-only-text-color);
118
+ background-color: var(--color-white);
119
+ border-color: var(--read-only-border-color);
120
+ }
121
+ }
122
+ }
97
123
  }
98
124
 
99
125
  .input {
@@ -28,6 +28,7 @@ import readyclasses from "../../../readyclasses.module.scss";
28
28
  import { FormElement } from "../form.interfaces";
29
29
  import { useDetermineStatusIcon } from "../../../hooks/useDetermineStatusIcon";
30
30
  import { MergeElementProps } from "../../../interfaces";
31
+ import { withReadOnly } from "../../withReadOnly";
31
32
 
32
33
  export const dateTypes = ["date", "time", "datetime-local"] as const;
33
34
 
@@ -51,6 +52,7 @@ export type Props = MergeElementProps<
51
52
  type: Type;
52
53
  suffix?: ReactNode;
53
54
  prefix?: ReactNode;
55
+ readOnlyView?: boolean;
54
56
  }
55
57
  >;
56
58
 
@@ -69,6 +71,7 @@ const InputComponent: ForwardRefRenderFunction<HTMLInputElement, Props> = (
69
71
  disabled,
70
72
  onFocus,
71
73
  onBlur,
74
+ readOnlyView,
72
75
  ...rest
73
76
  }: Props,
74
77
  ref: Ref<HTMLInputElement>
@@ -106,13 +109,16 @@ const InputComponent: ForwardRefRenderFunction<HTMLInputElement, Props> = (
106
109
  success && wrapperClasses.push(classes["success"]);
107
110
 
108
111
  const icon = useDetermineStatusIcon({ success, error });
112
+ const readOnlyMode = rest["data-readonlyview"] as boolean;
109
113
 
110
114
  return (
111
115
  <div
112
116
  ref={inputWrapperRef}
113
117
  {...wrapperProps}
114
118
  style={{ ...style }}
119
+ data-readonlyview={readOnlyMode}
115
120
  className={`${classes["input-wrapper"]} ${wrapperClasses.join(" ")}`}
121
+ tabIndex={readOnlyMode ? 0 : -1}
116
122
  >
117
123
  {prefix && (
118
124
  <div data-prefix className={classes["prefix"]}>
@@ -122,6 +128,8 @@ const InputComponent: ForwardRefRenderFunction<HTMLInputElement, Props> = (
122
128
  <input
123
129
  {...rest}
124
130
  ref={ref}
131
+ aria-readonly={readOnlyMode}
132
+ readOnly={readOnlyMode}
125
133
  onFocus={event => {
126
134
  setFocus(true);
127
135
  onFocus?.(event);
@@ -136,6 +144,7 @@ const InputComponent: ForwardRefRenderFunction<HTMLInputElement, Props> = (
136
144
  disabled={disabled}
137
145
  className={inputClassNames.join(" ")}
138
146
  spellCheck={rest.spellCheck ?? false}
147
+ tabIndex={readOnlyMode ? -1 : 0}
139
148
  />
140
149
  {icon}
141
150
  {suffix && (
@@ -149,4 +158,4 @@ const InputComponent: ForwardRefRenderFunction<HTMLInputElement, Props> = (
149
158
  );
150
159
  };
151
160
 
152
- export const Input = React.forwardRef(InputComponent);
161
+ export const Input = withReadOnly(React.forwardRef(InputComponent));