@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
@@ -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
 
@@ -63,7 +64,7 @@ const InputWrapperComponent: ForwardRefRenderFunction<HTMLDivElement, Props> = (
63
64
  inputProps?.wrapperProps?.className &&
64
65
  inputWrapperClasses.push(inputProps?.wrapperProps?.className);
65
66
  disabled && inputWrapperClasses.push(classes["disabled"]);
66
-
67
+ const readValue = rest["data-readonlyview"] as boolean;
67
68
  return (
68
69
  <Wrapper
69
70
  {...rest}
@@ -88,6 +89,7 @@ const InputWrapperComponent: ForwardRefRenderFunction<HTMLDivElement, Props> = (
88
89
  {...inputProps}
89
90
  prefix={prefix}
90
91
  suffix={suffix}
92
+ readOnlyView={readValue}
91
93
  wrapperProps={{
92
94
  className: inputWrapperClasses.join(" ")
93
95
  }}
@@ -116,4 +118,4 @@ const InputWrapperComponent: ForwardRefRenderFunction<HTMLDivElement, Props> = (
116
118
  );
117
119
  };
118
120
 
119
- export const InputWrapper = React.forwardRef(InputWrapperComponent);
121
+ 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 {
@@ -377,8 +377,15 @@
377
377
  content: "\e950";
378
378
  @include fontProperties();
379
379
  }
380
-
381
380
  .icon-sidesheet-handle:before {
382
381
  content: "\e951";
383
382
  @include fontProperties();
384
383
  }
384
+ .icon-pending-circle:before {
385
+ content: "\e952";
386
+ @include fontProperties();
387
+ }
388
+ .icon-minus-circle:before {
389
+ content: "\e953";
390
+ @include fontProperties();
391
+ }
@@ -101,7 +101,9 @@ export enum Icons {
101
101
  ZoomOut = "zoom-out",
102
102
  ArrowUp = "arrow-up",
103
103
  ExternalLink = "external-link",
104
- SideSheetHandle = "sidesheet-handle"
104
+ SideSheetHandle = "sidesheet-handle",
105
+ PendingCircle = "pending-circle",
106
+ MinusCircle = "minus-circle"
105
107
  }
106
108
 
107
109
  type Tag = "span" | "div" | "i";
@@ -0,0 +1,33 @@
1
+ /*!
2
+ * Copyright 2022 OneWelcome B.V.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ @import "../../mixins.module.scss";
17
+
18
+ .spinner {
19
+ --orbit-color: var(--color-blue-grey100);
20
+ --arch-color: var(--color-blue-grey900);
21
+ @keyframes rotate {
22
+ 0% {
23
+ transform: rotate(0deg);
24
+ }
25
+ 100% {
26
+ transform: rotate(360deg);
27
+ }
28
+ }
29
+ .arch {
30
+ animation: rotate 1s linear infinite;
31
+ transform-origin: center;
32
+ }
33
+ }
@@ -0,0 +1,61 @@
1
+ /*
2
+ * Copyright 2022 OneWelcome B.V.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ import React from "react";
18
+ import classes from "./Spinner.module.scss";
19
+
20
+ export interface SpinnerProps extends React.SVGProps<SVGSVGElement> {
21
+ size?: number;
22
+ thickness?: number;
23
+ }
24
+
25
+ export const Spinner: React.FC<SpinnerProps> = ({ size = 32, thickness, ...props }) => {
26
+ if (!thickness) {
27
+ thickness = size / 16;
28
+ }
29
+ return (
30
+ <svg
31
+ {...props}
32
+ className={classes["spinner"]}
33
+ width={size}
34
+ height={size}
35
+ viewBox={`0 0 ${size} ${size}`}
36
+ fill="none"
37
+ xmlns="http://www.w3.org/2000/svg"
38
+ >
39
+ <circle
40
+ cx={size / 2}
41
+ cy={size / 2}
42
+ r={(size - thickness) / 2}
43
+ stroke="var(--orbit-color)"
44
+ strokeWidth={thickness}
45
+ fill="none"
46
+ ></circle>
47
+ <circle
48
+ className={classes["arch"]}
49
+ cx={size / 2}
50
+ cy={size / 2}
51
+ r={(size - thickness) / 2}
52
+ stroke="var(--arch-color)"
53
+ strokeWidth={thickness}
54
+ strokeLinecap="round"
55
+ fill="none"
56
+ strokeDasharray={`${size}`}
57
+ transform="rotate(-90 25 25)"
58
+ />
59
+ </svg>
60
+ );
61
+ };
@@ -208,6 +208,8 @@ interface CSSProperties {
208
208
  fileUploadBorderWidth?: string;
209
209
  dragDropBorderStyle?: string;
210
210
  fontSizeDataGrid?: string;
211
+ readOnlyBorderColor?: string;
212
+ readOnlyTextColor?: string;
211
213
  }
212
214
 
213
215
  export interface Props extends HTMLAttributes<HTMLDivElement> {
@@ -403,6 +405,8 @@ export const BaseStyling = ({ children, properties = {} }: Props) => {
403
405
  fontSizeH4: "1.25rem",
404
406
  fontSizeSub: ".75rem",
405
407
  fontSizeCode: "1rem",
408
+ readOnlyBorderColor: "var(--color-blue-grey100)",
409
+ readOnlyTextColor: "var(--color-blue-grey900)",
406
410
  formControlFontSize: "0.875rem", //FIXME: UCL-395
407
411
  fontSizeDataGrid: "0.875rem" //FIXME: UCL-395
408
412
  };