@darajs/ui-components 0.4.8

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 (278) hide show
  1. package/LICENSE +201 -0
  2. package/dist/accordion/accordion-item.d.ts +24 -0
  3. package/dist/accordion/accordion-item.d.ts.map +1 -0
  4. package/dist/accordion/accordion-item.js +92 -0
  5. package/dist/accordion/accordion-item.js.map +1 -0
  6. package/dist/accordion/accordion.d.ts +32 -0
  7. package/dist/accordion/accordion.d.ts.map +1 -0
  8. package/dist/accordion/accordion.js +87 -0
  9. package/dist/accordion/accordion.js.map +1 -0
  10. package/dist/badge/badge.d.ts +20 -0
  11. package/dist/badge/badge.d.ts.map +1 -0
  12. package/dist/badge/badge.js +42 -0
  13. package/dist/badge/badge.js.map +1 -0
  14. package/dist/button/button.d.ts +35 -0
  15. package/dist/button/button.d.ts.map +1 -0
  16. package/dist/button/button.js +169 -0
  17. package/dist/button/button.js.map +1 -0
  18. package/dist/button-bar/button-bar.d.ts +19 -0
  19. package/dist/button-bar/button-bar.d.ts.map +1 -0
  20. package/dist/button-bar/button-bar.js +124 -0
  21. package/dist/button-bar/button-bar.js.map +1 -0
  22. package/dist/carousel/carousel.d.ts +23 -0
  23. package/dist/carousel/carousel.d.ts.map +1 -0
  24. package/dist/carousel/carousel.js +178 -0
  25. package/dist/carousel/carousel.js.map +1 -0
  26. package/dist/chat/chat.d.ts +28 -0
  27. package/dist/chat/chat.d.ts.map +1 -0
  28. package/dist/chat/chat.js +182 -0
  29. package/dist/chat/chat.js.map +1 -0
  30. package/dist/chat/message.d.ts +28 -0
  31. package/dist/chat/message.d.ts.map +1 -0
  32. package/dist/chat/message.js +220 -0
  33. package/dist/chat/message.js.map +1 -0
  34. package/dist/checkbox/checkbox-group.d.ts +35 -0
  35. package/dist/checkbox/checkbox-group.d.ts.map +1 -0
  36. package/dist/checkbox/checkbox-group.js +116 -0
  37. package/dist/checkbox/checkbox-group.js.map +1 -0
  38. package/dist/checkbox/checkbox.d.ts +27 -0
  39. package/dist/checkbox/checkbox.d.ts.map +1 -0
  40. package/dist/checkbox/checkbox.js +164 -0
  41. package/dist/checkbox/checkbox.js.map +1 -0
  42. package/dist/checkbox/tri-state-checkbox.d.ts +22 -0
  43. package/dist/checkbox/tri-state-checkbox.d.ts.map +1 -0
  44. package/dist/checkbox/tri-state-checkbox.js +87 -0
  45. package/dist/checkbox/tri-state-checkbox.js.map +1 -0
  46. package/dist/code-viewer/code-viewer.d.ts +31 -0
  47. package/dist/code-viewer/code-viewer.d.ts.map +1 -0
  48. package/dist/code-viewer/code-viewer.js +115 -0
  49. package/dist/code-viewer/code-viewer.js.map +1 -0
  50. package/dist/combo-box/combo-box.d.ts +39 -0
  51. package/dist/combo-box/combo-box.d.ts.map +1 -0
  52. package/dist/combo-box/combo-box.js +176 -0
  53. package/dist/combo-box/combo-box.js.map +1 -0
  54. package/dist/component-select-list/component-select-list.d.ts +27 -0
  55. package/dist/component-select-list/component-select-list.d.ts.map +1 -0
  56. package/dist/component-select-list/component-select-list.js +131 -0
  57. package/dist/component-select-list/component-select-list.js.map +1 -0
  58. package/dist/constants.d.ts +33 -0
  59. package/dist/constants.d.ts.map +1 -0
  60. package/dist/constants.js +47 -0
  61. package/dist/constants.js.map +1 -0
  62. package/dist/context-menu/context-menu.d.ts +24 -0
  63. package/dist/context-menu/context-menu.d.ts.map +1 -0
  64. package/dist/context-menu/context-menu.js +116 -0
  65. package/dist/context-menu/context-menu.js.map +1 -0
  66. package/dist/datepicker/datepicker-select.d.ts +48 -0
  67. package/dist/datepicker/datepicker-select.d.ts.map +1 -0
  68. package/dist/datepicker/datepicker-select.js +219 -0
  69. package/dist/datepicker/datepicker-select.js.map +1 -0
  70. package/dist/datepicker/datepicker.d.ts +56 -0
  71. package/dist/datepicker/datepicker.d.ts.map +1 -0
  72. package/dist/datepicker/datepicker.js +669 -0
  73. package/dist/datepicker/datepicker.js.map +1 -0
  74. package/dist/dropzone/dropzone.d.ts +21 -0
  75. package/dist/dropzone/dropzone.d.ts.map +1 -0
  76. package/dist/dropzone/dropzone.js +80 -0
  77. package/dist/dropzone/dropzone.js.map +1 -0
  78. package/dist/error-boundary/error-boundary.d.ts +33 -0
  79. package/dist/error-boundary/error-boundary.d.ts.map +1 -0
  80. package/dist/error-boundary/error-boundary.js +72 -0
  81. package/dist/error-boundary/error-boundary.js.map +1 -0
  82. package/dist/filter/categorical-filter.d.ts +26 -0
  83. package/dist/filter/categorical-filter.d.ts.map +1 -0
  84. package/dist/filter/categorical-filter.js +153 -0
  85. package/dist/filter/categorical-filter.js.map +1 -0
  86. package/dist/filter/datetime-filter.d.ts +28 -0
  87. package/dist/filter/datetime-filter.d.ts.map +1 -0
  88. package/dist/filter/datetime-filter.js +174 -0
  89. package/dist/filter/datetime-filter.js.map +1 -0
  90. package/dist/filter/numeric-filter.d.ts +24 -0
  91. package/dist/filter/numeric-filter.d.ts.map +1 -0
  92. package/dist/filter/numeric-filter.js +148 -0
  93. package/dist/filter/numeric-filter.js.map +1 -0
  94. package/dist/hierarchy-selector/hierarchy-selector.d.ts +31 -0
  95. package/dist/hierarchy-selector/hierarchy-selector.d.ts.map +1 -0
  96. package/dist/hierarchy-selector/hierarchy-selector.js +65 -0
  97. package/dist/hierarchy-selector/hierarchy-selector.js.map +1 -0
  98. package/dist/hierarchy-selector/node/branch.d.ts +47 -0
  99. package/dist/hierarchy-selector/node/branch.d.ts.map +1 -0
  100. package/dist/hierarchy-selector/node/branch.js +132 -0
  101. package/dist/hierarchy-selector/node/branch.js.map +1 -0
  102. package/dist/index.d.ts +57 -0
  103. package/dist/index.d.ts.map +1 -0
  104. package/dist/index.js +55 -0
  105. package/dist/index.js.map +1 -0
  106. package/dist/input/input.d.ts +44 -0
  107. package/dist/input/input.d.ts.map +1 -0
  108. package/dist/input/input.js +91 -0
  109. package/dist/input/input.js.map +1 -0
  110. package/dist/jest-setup.d.ts +18 -0
  111. package/dist/jest-setup.d.ts.map +1 -0
  112. package/dist/jest-setup.js +18 -0
  113. package/dist/jest-setup.js.map +1 -0
  114. package/dist/markdown/markdown.d.ts +18 -0
  115. package/dist/markdown/markdown.d.ts.map +1 -0
  116. package/dist/markdown/markdown.js +356 -0
  117. package/dist/markdown/markdown.js.map +1 -0
  118. package/dist/modal/modal.d.ts +37 -0
  119. package/dist/modal/modal.d.ts.map +1 -0
  120. package/dist/modal/modal.js +121 -0
  121. package/dist/modal/modal.js.map +1 -0
  122. package/dist/multiselect/multiselect.d.ts +31 -0
  123. package/dist/multiselect/multiselect.d.ts.map +1 -0
  124. package/dist/multiselect/multiselect.js +231 -0
  125. package/dist/multiselect/multiselect.js.map +1 -0
  126. package/dist/numeric-input/input-stepper.d.ts +33 -0
  127. package/dist/numeric-input/input-stepper.d.ts.map +1 -0
  128. package/dist/numeric-input/input-stepper.js +54 -0
  129. package/dist/numeric-input/input-stepper.js.map +1 -0
  130. package/dist/numeric-input/numeric-input.d.ts +42 -0
  131. package/dist/numeric-input/numeric-input.d.ts.map +1 -0
  132. package/dist/numeric-input/numeric-input.js +234 -0
  133. package/dist/numeric-input/numeric-input.js.map +1 -0
  134. package/dist/progress-bar/progress-bar.d.ts +23 -0
  135. package/dist/progress-bar/progress-bar.d.ts.map +1 -0
  136. package/dist/progress-bar/progress-bar.js +90 -0
  137. package/dist/progress-bar/progress-bar.js.map +1 -0
  138. package/dist/radio/radio-group.d.ts +19 -0
  139. package/dist/radio/radio-group.d.ts.map +1 -0
  140. package/dist/radio/radio-group.js +160 -0
  141. package/dist/radio/radio-group.js.map +1 -0
  142. package/dist/search-bar/search-bar.d.ts +34 -0
  143. package/dist/search-bar/search-bar.d.ts.map +1 -0
  144. package/dist/search-bar/search-bar.js +39 -0
  145. package/dist/search-bar/search-bar.js.map +1 -0
  146. package/dist/sectioned-list/sectioned-list.d.ts +29 -0
  147. package/dist/sectioned-list/sectioned-list.d.ts.map +1 -0
  148. package/dist/sectioned-list/sectioned-list.js +205 -0
  149. package/dist/sectioned-list/sectioned-list.js.map +1 -0
  150. package/dist/select/select.d.ts +54 -0
  151. package/dist/select/select.d.ts.map +1 -0
  152. package/dist/select/select.js +143 -0
  153. package/dist/select/select.js.map +1 -0
  154. package/dist/shared/chevron-button.d.ts +13 -0
  155. package/dist/shared/chevron-button.d.ts.map +1 -0
  156. package/dist/shared/chevron-button.js +35 -0
  157. package/dist/shared/chevron-button.js.map +1 -0
  158. package/dist/shared/dropdown-list.d.ts +34 -0
  159. package/dist/shared/dropdown-list.d.ts.map +1 -0
  160. package/dist/shared/dropdown-list.js +33 -0
  161. package/dist/shared/dropdown-list.js.map +1 -0
  162. package/dist/shared/list-item.d.ts +35 -0
  163. package/dist/shared/list-item.d.ts.map +1 -0
  164. package/dist/shared/list-item.js +69 -0
  165. package/dist/shared/list-item.js.map +1 -0
  166. package/dist/slider/slider-inputs.d.ts +36 -0
  167. package/dist/slider/slider-inputs.d.ts.map +1 -0
  168. package/dist/slider/slider-inputs.js +88 -0
  169. package/dist/slider/slider-inputs.js.map +1 -0
  170. package/dist/slider/slider.d.ts +53 -0
  171. package/dist/slider/slider.d.ts.map +1 -0
  172. package/dist/slider/slider.js +273 -0
  173. package/dist/slider/slider.js.map +1 -0
  174. package/dist/spinner/spinner.d.ts +19 -0
  175. package/dist/spinner/spinner.d.ts.map +1 -0
  176. package/dist/spinner/spinner.js +144 -0
  177. package/dist/spinner/spinner.js.map +1 -0
  178. package/dist/switch/sun-icon.d.ts +3 -0
  179. package/dist/switch/sun-icon.d.ts.map +1 -0
  180. package/dist/switch/sun-icon.js +24 -0
  181. package/dist/switch/sun-icon.js.map +1 -0
  182. package/dist/switch/switch.d.ts +16 -0
  183. package/dist/switch/switch.d.ts.map +1 -0
  184. package/dist/switch/switch.js +92 -0
  185. package/dist/switch/switch.js.map +1 -0
  186. package/dist/table/cells/action-cell.d.ts +34 -0
  187. package/dist/table/cells/action-cell.d.ts.map +1 -0
  188. package/dist/table/cells/action-cell.js +68 -0
  189. package/dist/table/cells/action-cell.js.map +1 -0
  190. package/dist/table/cells/datetime-cell.d.ts +12 -0
  191. package/dist/table/cells/datetime-cell.d.ts.map +1 -0
  192. package/dist/table/cells/datetime-cell.js +36 -0
  193. package/dist/table/cells/datetime-cell.js.map +1 -0
  194. package/dist/table/cells/edit-cell-utils.d.ts +32 -0
  195. package/dist/table/cells/edit-cell-utils.d.ts.map +1 -0
  196. package/dist/table/cells/edit-cell-utils.js +2 -0
  197. package/dist/table/cells/edit-cell-utils.js.map +1 -0
  198. package/dist/table/cells/edit-input-cell.d.ts +10 -0
  199. package/dist/table/cells/edit-input-cell.d.ts.map +1 -0
  200. package/dist/table/cells/edit-input-cell.js +61 -0
  201. package/dist/table/cells/edit-input-cell.js.map +1 -0
  202. package/dist/table/cells/edit-select-cell.d.ts +12 -0
  203. package/dist/table/cells/edit-select-cell.d.ts.map +1 -0
  204. package/dist/table/cells/edit-select-cell.js +55 -0
  205. package/dist/table/cells/edit-select-cell.js.map +1 -0
  206. package/dist/table/filters.d.ts +46 -0
  207. package/dist/table/filters.d.ts.map +1 -0
  208. package/dist/table/filters.js +226 -0
  209. package/dist/table/filters.js.map +1 -0
  210. package/dist/table/headers/select-header.d.ts +14 -0
  211. package/dist/table/headers/select-header.d.ts.map +1 -0
  212. package/dist/table/headers/select-header.js +41 -0
  213. package/dist/table/headers/select-header.js.map +1 -0
  214. package/dist/table/options-menu.d.ts +25 -0
  215. package/dist/table/options-menu.d.ts.map +1 -0
  216. package/dist/table/options-menu.js +123 -0
  217. package/dist/table/options-menu.js.map +1 -0
  218. package/dist/table/render-row.d.ts +25 -0
  219. package/dist/table/render-row.d.ts.map +1 -0
  220. package/dist/table/render-row.js +163 -0
  221. package/dist/table/render-row.js.map +1 -0
  222. package/dist/table/table.d.ts +95 -0
  223. package/dist/table/table.d.ts.map +1 -0
  224. package/dist/table/table.js +422 -0
  225. package/dist/table/table.js.map +1 -0
  226. package/dist/table/types.d.ts +30 -0
  227. package/dist/table/types.d.ts.map +1 -0
  228. package/dist/table/types.js +2 -0
  229. package/dist/table/types.js.map +1 -0
  230. package/dist/tabs/tabs.d.ts +22 -0
  231. package/dist/tabs/tabs.d.ts.map +1 -0
  232. package/dist/tabs/tabs.js +91 -0
  233. package/dist/tabs/tabs.js.map +1 -0
  234. package/dist/textarea/textarea.d.ts +47 -0
  235. package/dist/textarea/textarea.d.ts.map +1 -0
  236. package/dist/textarea/textarea.js +121 -0
  237. package/dist/textarea/textarea.js.map +1 -0
  238. package/dist/tooltip/tooltip.d.ts +48 -0
  239. package/dist/tooltip/tooltip.d.ts.map +1 -0
  240. package/dist/tooltip/tooltip.js +116 -0
  241. package/dist/tooltip/tooltip.js.map +1 -0
  242. package/dist/types.d.ts +94 -0
  243. package/dist/types.d.ts.map +1 -0
  244. package/dist/types.js +2 -0
  245. package/dist/types.js.map +1 -0
  246. package/dist/utils/chevron.d.ts +34 -0
  247. package/dist/utils/chevron.d.ts.map +1 -0
  248. package/dist/utils/chevron.js +38 -0
  249. package/dist/utils/chevron.js.map +1 -0
  250. package/dist/utils/index.d.ts +22 -0
  251. package/dist/utils/index.d.ts.map +1 -0
  252. package/dist/utils/index.js +22 -0
  253. package/dist/utils/index.js.map +1 -0
  254. package/dist/utils/label.d.ts +3 -0
  255. package/dist/utils/label.d.ts.map +1 -0
  256. package/dist/utils/label.js +24 -0
  257. package/dist/utils/label.js.map +1 -0
  258. package/dist/utils/list-styles.d.ts +8 -0
  259. package/dist/utils/list-styles.d.ts.map +1 -0
  260. package/dist/utils/list-styles.js +43 -0
  261. package/dist/utils/list-styles.js.map +1 -0
  262. package/dist/utils/match-width-to-reference.d.ts +24 -0
  263. package/dist/utils/match-width-to-reference.d.ts.map +1 -0
  264. package/dist/utils/match-width-to-reference.js +30 -0
  265. package/dist/utils/match-width-to-reference.js.map +1 -0
  266. package/dist/utils/syncKbdHighlightIdx.d.ts +23 -0
  267. package/dist/utils/syncKbdHighlightIdx.d.ts.map +1 -0
  268. package/dist/utils/syncKbdHighlightIdx.js +41 -0
  269. package/dist/utils/syncKbdHighlightIdx.js.map +1 -0
  270. package/dist/utils/use-infinite-loader.d.ts +32 -0
  271. package/dist/utils/use-infinite-loader.d.ts.map +1 -0
  272. package/dist/utils/use-infinite-loader.js +119 -0
  273. package/dist/utils/use-infinite-loader.js.map +1 -0
  274. package/dist/utils/use-on-click-outside.d.ts +3 -0
  275. package/dist/utils/use-on-click-outside.d.ts.map +1 -0
  276. package/dist/utils/use-on-click-outside.js +36 -0
  277. package/dist/utils/use-on-click-outside.js.map +1 -0
  278. package/package.json +106 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"progress-bar.d.ts","sourceRoot":"","sources":["../../src/progress-bar/progress-bar.tsx"],"names":[],"mappings":"AAiBA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAgF/B,MAAM,WAAW,gBAAgB;IAC7B,wCAAwC;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wGAAwG;IACxG,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC1B,8IAA8I;IAC9I,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;IAC5C,8EAA8E;IAC9E,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC5B,oEAAoE;IACpE,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,kFAAkF;IAClF,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC/B;AAED;;;;GAIG;AACH,iBAAS,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,GAAG,CAAC,OAAO,CAgCzD;AAED,eAAe,WAAW,CAAC"}
@@ -0,0 +1,90 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ /**
3
+ * Copyright 2023 Impulse Innovations Limited
4
+ *
5
+ *
6
+ * Licensed under the Apache License, Version 2.0 (the "License");
7
+ * you may not use this file except in compliance with the License.
8
+ * You may obtain a copy of the License at
9
+ *
10
+ * http://www.apache.org/licenses/LICENSE-2.0
11
+ *
12
+ * Unless required by applicable law or agreed to in writing, software
13
+ * distributed under the License is distributed on an "AS IS" BASIS,
14
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ * See the License for the specific language governing permissions and
16
+ * limitations under the License.
17
+ */
18
+ import { sortBy } from 'lodash';
19
+ import styled, { theme } from '@darajs/styled-components';
20
+ const Track = styled.div `
21
+ position: relative;
22
+
23
+ overflow: hidden;
24
+ display: flex;
25
+
26
+ width: 100%;
27
+ height: ${(props) => (props.small ? '0.5rem' : '1rem')};
28
+
29
+ background-color: ${(props) => props.theme.colors.grey2};
30
+ border-radius: ${(props) => (props.small ? '0.25rem' : '0.5rem')};
31
+ `;
32
+ const Bar = styled.div `
33
+ position: absolute;
34
+
35
+ overflow: ${(props) => (props.multi ? 'hidden' : 'visible')};
36
+
37
+ height: 100%;
38
+
39
+ background-color: ${(props) => (props.color ? props.color : props.theme.colors.primary)};
40
+ border-radius: ${(props) => (props.small ? '0.25rem' : '0.5rem')};
41
+ `;
42
+ const Text = styled.span `
43
+ position: absolute;
44
+ right: 0.5rem;
45
+ bottom: 0.05rem;
46
+ left: 0.5rem;
47
+
48
+ height: 100%;
49
+
50
+ font-size: 0.75rem;
51
+ color: ${(props) => props.theme.colors.blue1};
52
+ text-align: end;
53
+ `;
54
+ const defaultColors = [theme.colors.primary, theme.colors.success, theme.colors.warning, theme.colors.error];
55
+ /**
56
+ * Takes an input value and converts it into an array. If the input is undefined, it returns a default input array.
57
+ * If the input is already an array, it returns the input itself. Otherwise, it wraps the input inside an array.
58
+ *
59
+ * @param input - The input value that should be arrayified. It can be a value of type T, an array of T, or undefined.
60
+ * @param defaultInput - The default array to return in case the input is undefined.
61
+ *
62
+ * @returns The input arrayified as an array of type T.
63
+ *
64
+ * @typeparam T - The type of the elements in the array.
65
+ */
66
+ const arrayify = (input, defaultInput) => {
67
+ if (typeof input === 'undefined') {
68
+ return defaultInput;
69
+ }
70
+ if (Array.isArray(input)) {
71
+ return input;
72
+ }
73
+ return [input];
74
+ };
75
+ /**
76
+ * A simple progress bar component, that displays the current progress to 100% as a bar with a small label
77
+ *
78
+ * @param props see interface for details
79
+ */
80
+ function ProgressBar(props) {
81
+ // We need to sort the values to properly render them, so we need to preserve the original index
82
+ const progresses = typeof props.progress === 'number' ?
83
+ [{ index: 0, value: props.progress }]
84
+ : sortBy([...props.progress.map((x, i) => ({ index: i, value: x }))], 'value').reverse();
85
+ const colors = arrayify(props.color, defaultColors.slice(0, progresses.length));
86
+ const labels = arrayify(props.label, progresses.map((x) => `${x.value}%`));
87
+ return (_jsx(Track, { className: props.className, multi: typeof props.progress !== 'number', small: props.small, style: props.style, children: progresses.map((progress, index) => (_jsx(Bar, { color: colors[progress.index], multi: typeof props.progress !== 'number', small: props.small, style: { width: `${progress.value}%` }, children: !props.small && _jsx(Text, { progress: progress.value, children: labels[progress.index] }) }, index))) }));
88
+ }
89
+ export default ProgressBar;
90
+ //# sourceMappingURL=progress-bar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"progress-bar.js","sourceRoot":"","sources":["../../src/progress-bar/progress-bar.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import { InteractiveComponentProps, Item } from '../types';
2
+ export interface RadioGroupProps extends InteractiveComponentProps<Item> {
3
+ /** An optional value which determines the direction of the radio group components by default is vertical */
4
+ direction?: 'horizontal' | 'vertical';
5
+ /** Whether to show radio in list style */
6
+ isListStyle?: boolean;
7
+ /** The items to pick from the list. Each should have a label and a value */
8
+ items: Array<Item>;
9
+ /** An optional onChange handler, will be called whenever the state of the checkbox changes */
10
+ onChange?: (value: Item, e?: React.FormEvent<HTMLInputElement>) => void | Promise<void>;
11
+ }
12
+ /**
13
+ * A simple radio component
14
+ *
15
+ * @param {RadioGroupProps} props - the component props
16
+ */
17
+ declare function RadioGroup(props: RadioGroupProps): JSX.Element;
18
+ export default RadioGroup;
19
+ //# sourceMappingURL=radio-group.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"radio-group.d.ts","sourceRoot":"","sources":["../../src/radio/radio-group.tsx"],"names":[],"mappings":"AAsBA,OAAO,EAAE,yBAAyB,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAyH3D,MAAM,WAAW,eAAgB,SAAQ,yBAAyB,CAAC,IAAI,CAAC;IACpE,4GAA4G;IAC5G,SAAS,CAAC,EAAE,YAAY,GAAG,UAAU,CAAC;IACtC,0CAA0C;IAC1C,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,4EAA4E;IAC5E,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IACnB,8FAA8F;IAC9F,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,gBAAgB,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3F;AAED;;;;GAIG;AACH,iBAAS,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,GAAG,CAAC,OAAO,CA0DvD;AAED,eAAe,UAAU,CAAC"}
@@ -0,0 +1,160 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /**
3
+ * Copyright 2023 Impulse Innovations Limited
4
+ *
5
+ *
6
+ * Licensed under the Apache License, Version 2.0 (the "License");
7
+ * you may not use this file except in compliance with the License.
8
+ * You may obtain a copy of the License at
9
+ *
10
+ * http://www.apache.org/licenses/LICENSE-2.0
11
+ *
12
+ * Unless required by applicable law or agreed to in writing, software
13
+ * distributed under the License is distributed on an "AS IS" BASIS,
14
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ * See the License for the specific language governing permissions and
16
+ * limitations under the License.
17
+ */
18
+ import isEqual from 'lodash/isEqual';
19
+ import { nanoid } from 'nanoid';
20
+ import { useEffect, useRef, useState } from 'react';
21
+ import styled from '@darajs/styled-components';
22
+ const RadioGroupWrapper = styled.div `
23
+ display: ${(props) => (props.isHorizontal ? 'flex' : 'block')};
24
+ gap: ${(props) => (props.isHorizontal ? '1.25rem' : '0rem')};
25
+ `;
26
+ const RadioWrapper = styled.label `
27
+ cursor: ${(props) => (props['aria-disabled'] ? 'not-allowed' : 'pointer')};
28
+ user-select: none;
29
+
30
+ display: flex;
31
+ gap: 0.5rem;
32
+ align-items: center;
33
+ justify-content: flex-start;
34
+
35
+ width: ${(props) => (props.isListStyle ? 'auto' : 'fit-content')};
36
+ height: 2.5rem;
37
+ padding: 0 0.5rem;
38
+
39
+ color: ${(props) => (props['aria-disabled'] ? props.theme.colors.grey3 : props.theme.colors.text)};
40
+
41
+ border: none;
42
+ border-radius: 0.25rem;
43
+
44
+ /* sets checkmark indicator */
45
+ span::after {
46
+ top: calc(0.25rem - 1px);
47
+ left: calc(0.25rem - 1px);
48
+
49
+ width: 0.5rem;
50
+ height: 0.5rem;
51
+
52
+ background-color: ${(props) => (props['aria-disabled'] ? props.theme.colors.grey3 : props.theme.colors.grey5)};
53
+ border-radius: 50%;
54
+ }
55
+
56
+ /* Show the checkmark when checked */
57
+ input:checked ~ span::after {
58
+ display: block;
59
+ }
60
+
61
+ /* Controls background color change depending on style */
62
+ ${(props) => {
63
+ if (props.isListStyle) {
64
+ return `:hover {
65
+ background-color: ${props['aria-disabled'] ? 'none' : props.theme.colors.grey1}
66
+ }
67
+ :active {
68
+ background-color: ${props['aria-disabled'] ? 'none' : props.theme.colors.grey2}
69
+ }`;
70
+ }
71
+ return `
72
+ :hover {
73
+ span {
74
+ background-color: ${props['aria-disabled'] ? 'none' : props.theme.colors.grey1};
75
+ }
76
+ }
77
+
78
+ :active {
79
+ span {
80
+ background-color: ${props['aria-disabled'] ? 'none' : props.theme.colors.grey2};
81
+ }
82
+ }
83
+ `;
84
+ }}
85
+
86
+ /* Sets the outer rim color of radio button */
87
+ :hover {
88
+ span {
89
+ border: 1px solid
90
+ ${(props) => (props['aria-disabled'] ? props.theme.colors.grey2 : props.theme.colors.grey4)};
91
+ }
92
+ }
93
+
94
+ :active {
95
+ span {
96
+ border: 1px solid
97
+ ${(props) => (props['aria-disabled'] ? props.theme.colors.grey2 : props.theme.colors.grey4)};
98
+ }
99
+ }
100
+ `;
101
+ // hides default html radio button
102
+ const RadioButton = styled.input `
103
+ position: absolute;
104
+ opacity: 0;
105
+ `;
106
+ // customdot/circle for the radio button
107
+ const StyledCheckmark = styled.span `
108
+ position: relative;
109
+ top: 0;
110
+ left: 0;
111
+
112
+ width: 1rem;
113
+ height: 1rem;
114
+
115
+ background-color: ${(props) => (props.disabled ? props.theme.colors.grey1 : props.theme.colors.blue1)};
116
+ border: 1px solid ${(props) => (props.disabled ? props.theme.colors.grey2 : props.theme.colors.grey3)};
117
+ border-radius: 50%;
118
+
119
+ ::after {
120
+ content: '';
121
+ position: relative;
122
+ display: none;
123
+ }
124
+ `;
125
+ /**
126
+ * A simple radio component
127
+ *
128
+ * @param {RadioGroupProps} props - the component props
129
+ */
130
+ function RadioGroup(props) {
131
+ const [currentSelected, setCurrentSelected] = useState(props.items.findIndex((item) => props.value !== undefined ? isEqual(item.value, props.value) : isEqual(item.value, props.initialValue)));
132
+ // radio needs a name that is unique to that radio component, so that more than one radio components on a page don't get mixed inputs
133
+ const uuid = useRef(null);
134
+ if (uuid.current === null) {
135
+ uuid.current = nanoid();
136
+ }
137
+ const onChangeValue = (event) => {
138
+ var _a;
139
+ const target = event.target;
140
+ const chosenIndex = Number(target.value);
141
+ // controlled mode
142
+ if (props.value !== undefined) {
143
+ (_a = props.onChange) === null || _a === void 0 ? void 0 : _a.call(props, props.items[chosenIndex], event);
144
+ // uncontrolled mode
145
+ }
146
+ else {
147
+ setCurrentSelected(chosenIndex);
148
+ }
149
+ };
150
+ useEffect(() => {
151
+ setCurrentSelected(props.items.findIndex((item) => props.value !== undefined ? isEqual(item.value, props.value) : isEqual(item.value, props.initialValue)));
152
+ // eslint-disable-next-line react-hooks/exhaustive-deps
153
+ }, [props.value]);
154
+ return (_jsx(RadioGroupWrapper, { className: props.className, isHorizontal: props.direction === 'horizontal', style: props.style, children: props.items.map((item, index) => {
155
+ var _a;
156
+ return (_jsxs(RadioWrapper, { "aria-disabled": props.disabled, isListStyle: props.isListStyle, children: [_jsx(RadioButton, { checked: isEqual((_a = props.value) === null || _a === void 0 ? void 0 : _a.value, item.value) || currentSelected === index, disabled: props.disabled, name: uuid.current, onChange: (e) => onChangeValue(e), type: "radio", value: index }), _jsx(StyledCheckmark, { disabled: props.disabled }), item.label ? item.label : item.value] }, `item-${index}`));
157
+ }) }));
158
+ }
159
+ export default RadioGroup;
160
+ //# sourceMappingURL=radio-group.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"radio-group.js","sourceRoot":"","sources":["../../src/radio/radio-group.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,OAAO,MAAM,gBAAgB,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEpD,OAAO,MAAM,MAAM,2BAA2B,CAAC;AAQ/C,MAAM,iBAAiB,GAAG,MAAM,CAAC,GAAG,CAAwB;eAC7C,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;WACtD,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC;CAC9D,CAAC;AAMF,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,CAAmB;cACtC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC;;;;;;;;aAQhE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC;;;;aAIvD,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;;;;;;;;;;;;;4BAazE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;;;;;;;;;;MAU/G,CAAC,KAAK,EAAE,EAAE;IACR,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;QACpB,OAAO;4CACyB,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK;;;oCAGlE,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK;MACxF,CAAC;IACC,CAAC;IACD,OAAO;;;gCAGiB,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK;;;;;;gCAM1D,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK;;;SAGjF,CAAC;AACN,CAAC;;;;;;kBAMa,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;;;;;;;kBAOzF,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;;;CAG1G,CAAC;AAEF,kCAAkC;AAClC,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAA;;;CAG/B,CAAC;AAMF,wCAAwC;AACxC,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,CAAsB;;;;;;;;wBAQjC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;wBACjF,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;;;;;;;;CAQxG,CAAC;AAaF;;;;GAIG;AACH,SAAS,UAAU,CAAC,KAAsB;IACtC,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,QAAQ,CAClD,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAC3B,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,YAAY,CAAC,CACzG,CACJ,CAAC;IACF,qIAAqI;IACrI,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IAE1B,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;QACxB,IAAI,CAAC,OAAO,GAAG,MAAM,EAAE,CAAC;IAC5B,CAAC;IAED,MAAM,aAAa,GAAG,CAAC,KAAwC,EAAQ,EAAE;;QACrE,MAAM,MAAM,GAAG,KAAK,CAAC,MAA0B,CAAC;QAChD,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACzC,kBAAkB;QAClB,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAC5B,MAAA,KAAK,CAAC,QAAQ,sDAAG,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,KAAK,CAAC,CAAC;YAClD,oBAAoB;QACxB,CAAC;aAAM,CAAC;YACJ,kBAAkB,CAAC,WAAW,CAAC,CAAC;QACpC,CAAC;IACL,CAAC,CAAC;IAEF,SAAS,CAAC,GAAG,EAAE;QACX,kBAAkB,CACd,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAC3B,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,YAAY,CAAC,CACzG,CACJ,CAAC;QACF,uDAAuD;IAC3D,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IAElB,OAAO,CACH,KAAC,iBAAiB,IACd,SAAS,EAAE,KAAK,CAAC,SAAS,EAC1B,YAAY,EAAE,KAAK,CAAC,SAAS,KAAK,YAAY,EAC9C,KAAK,EAAE,KAAK,CAAC,KAAK,YAEjB,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;;YAC7B,OAAO,CACH,MAAC,YAAY,qBAAgB,KAAK,CAAC,QAAQ,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,aACvE,KAAC,WAAW,IACR,OAAO,EAAE,OAAO,CAAC,MAAA,KAAK,CAAC,KAAK,0CAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,eAAe,KAAK,KAAK,EAC7E,QAAQ,EAAE,KAAK,CAAC,QAAQ,EACxB,IAAI,EAAE,IAAI,CAAC,OAAO,EAClB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,EACjC,IAAI,EAAC,OAAO,EACZ,KAAK,EAAE,KAAK,GACd,EACF,KAAC,eAAe,IAAC,QAAQ,EAAE,KAAK,CAAC,QAAQ,GAAI,EAC5C,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,KAVyC,QAAQ,KAAK,EAAE,CAWlF,CAClB,CAAC;QACN,CAAC,CAAC,GACc,CACvB,CAAC;AACN,CAAC;AAED,eAAe,UAAU,CAAC"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Copyright 2023 Impulse Innovations Limited
3
+ *
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+ import * as React from 'react';
18
+ import { InteractiveComponentProps } from '../types';
19
+ export interface SearchBarProps extends InteractiveComponentProps<string> {
20
+ /** An optional maximum length */
21
+ maxLength?: number;
22
+ /** An optional onChange handler for listening to changes in the input */
23
+ onChange?: (value: string, e?: React.SyntheticEvent<HTMLInputElement>) => void | Promise<void>;
24
+ /** An optional placeholder that will be used when the input is empty, defaults to '' */
25
+ placeholder?: string;
26
+ }
27
+ /**
28
+ * A search bar component, accepts an onChange handler to listen for changes.
29
+ *
30
+ * @param props - the component props
31
+ */
32
+ declare function SearchBar(props: SearchBarProps): JSX.Element;
33
+ export default SearchBar;
34
+ //# sourceMappingURL=search-bar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search-bar.d.ts","sourceRoot":"","sources":["../../src/search-bar/search-bar.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAM/B,OAAO,EAAE,yBAAyB,EAAE,MAAM,UAAU,CAAC;AA6BrD,MAAM,WAAW,cAAe,SAAQ,yBAAyB,CAAC,MAAM,CAAC;IACrE,iCAAiC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yEAAyE;IACzE,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,gBAAgB,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/F,wFAAwF;IACxF,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;GAIG;AACH,iBAAS,SAAS,CAAC,KAAK,EAAE,cAAc,GAAG,GAAG,CAAC,OAAO,CAerD;AAED,eAAe,SAAS,CAAC"}
@@ -0,0 +1,39 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import styled from '@darajs/styled-components';
3
+ import { MagnifyingGlass } from '@darajs/ui-icons';
4
+ import Input from '../input/input';
5
+ const Wrapper = styled.div `
6
+ display: flex;
7
+ margin: 0 0.5rem;
8
+ `;
9
+ const SearchBarComponent = styled(Input) `
10
+ input {
11
+ padding-right: 2.25rem;
12
+ }
13
+
14
+ :hover:not(:disabled) {
15
+ input {
16
+ border: 1px solid ${(props) => props.theme.colors.grey3};
17
+ }
18
+ }
19
+ `;
20
+ const SearchBarIcon = styled(MagnifyingGlass) `
21
+ position: relative;
22
+ top: 0.625rem;
23
+ right: 1.75rem;
24
+
25
+ height: 1.25rem;
26
+
27
+ color: ${(props) => props.theme.colors.grey4};
28
+ `;
29
+ /**
30
+ * A search bar component, accepts an onChange handler to listen for changes.
31
+ *
32
+ * @param props - the component props
33
+ */
34
+ function SearchBar(props) {
35
+ var _a;
36
+ return (_jsxs(Wrapper, { children: [_jsx(SearchBarComponent, { className: props.className, disabled: props.disabled, maxLength: props.maxLength, onChange: props.onChange, placeholder: (_a = props.placeholder) !== null && _a !== void 0 ? _a : 'Search', style: props.style, value: props.value }), _jsx(SearchBarIcon, {})] }));
37
+ }
38
+ export default SearchBar;
39
+ //# sourceMappingURL=search-bar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search-bar.js","sourceRoot":"","sources":["../../src/search-bar/search-bar.tsx"],"names":[],"mappings":";AAkBA,OAAO,MAAM,MAAM,2BAA2B,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEnD,OAAO,KAAK,MAAM,gBAAgB,CAAC;AAGnC,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAA;;;CAGzB,CAAC;AAEF,MAAM,kBAAkB,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;;;;;;;gCAOR,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK;;;CAGlE,CAAC;AAEF,MAAM,aAAa,GAAG,MAAM,CAAC,eAAe,CAAC,CAAA;;;;;;;aAOhC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK;CAC/C,CAAC;AAWF;;;;GAIG;AACH,SAAS,SAAS,CAAC,KAAqB;;IACpC,OAAO,CACH,MAAC,OAAO,eACJ,KAAC,kBAAkB,IACf,SAAS,EAAE,KAAK,CAAC,SAAS,EAC1B,QAAQ,EAAE,KAAK,CAAC,QAAQ,EACxB,SAAS,EAAE,KAAK,CAAC,SAAS,EAC1B,QAAQ,EAAE,KAAK,CAAC,QAAQ,EACxB,WAAW,EAAE,MAAA,KAAK,CAAC,WAAW,mCAAI,QAAQ,EAC1C,KAAK,EAAE,KAAK,CAAC,KAAK,EAClB,KAAK,EAAE,KAAK,CAAC,KAAK,GACpB,EACF,KAAC,aAAa,KAAG,IACX,CACb,CAAC;AACN,CAAC;AAED,eAAe,SAAS,CAAC"}
@@ -0,0 +1,29 @@
1
+ import React from 'react';
2
+ import { InteractiveComponentProps, Item } from '../types';
3
+ export interface ListItem extends Item {
4
+ heading?: boolean;
5
+ section?: string;
6
+ }
7
+ export interface ListSection {
8
+ items: Array<Item>;
9
+ label: string;
10
+ }
11
+ export interface SectionedListProps extends InteractiveComponentProps<Item> {
12
+ /** An array of ListItem and/or ListSection objects to render */
13
+ items: Array<ListItem | ListSection>;
14
+ /** An optional onSelect handler for listening to changes in the selected item */
15
+ onSelect?: (item: ListItem) => void | Promise<void>;
16
+ /** Put the component in controlled mode and pass in the selectedItem */
17
+ selectedItem?: ListItem | Item;
18
+ /** Pass through of style property to the root element */
19
+ style?: React.CSSProperties;
20
+ }
21
+ /**
22
+ * A component for rendering lists, sectioned and non-sectioned. Takes an array of unpacked ListItem objects and
23
+ * renders a searchable list.
24
+ *
25
+ * @param {SectionedListProps} props - the component props
26
+ */
27
+ declare function SectionedList(props: SectionedListProps): JSX.Element;
28
+ export default SectionedList;
29
+ //# sourceMappingURL=sectioned-list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sectioned-list.d.ts","sourceRoot":"","sources":["../../src/sectioned-list/sectioned-list.tsx"],"names":[],"mappings":"AAkBA,OAAO,KAAoD,MAAM,OAAO,CAAC;AAUzE,OAAO,EAAE,yBAAyB,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAkE3D,MAAM,WAAW,QAAS,SAAQ,IAAI;IAClC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IACxB,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,kBAAmB,SAAQ,yBAAyB,CAAC,IAAI,CAAC;IACvE,gEAAgE;IAChE,KAAK,EAAE,KAAK,CAAC,QAAQ,GAAG,WAAW,CAAC,CAAC;IACrC,iFAAiF;IACjF,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpD,wEAAwE;IACxE,YAAY,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC/B,yDAAyD;IACzD,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC/B;AAwCD;;;;;GAKG;AACH,iBAAS,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,GAAG,CAAC,OAAO,CAgN7D;AACD,eAAe,aAAa,CAAC"}
@@ -0,0 +1,205 @@
1
+ var __rest = (this && this.__rest) || function (s, e) {
2
+ var t = {};
3
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
4
+ t[p] = s[p];
5
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
6
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
7
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
8
+ t[p[i]] = s[p[i]];
9
+ }
10
+ return t;
11
+ };
12
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
13
+ /**
14
+ * Copyright 2023 Impulse Innovations Limited
15
+ *
16
+ *
17
+ * Licensed under the Apache License, Version 2.0 (the "License");
18
+ * you may not use this file except in compliance with the License.
19
+ * You may obtain a copy of the License at
20
+ *
21
+ * http://www.apache.org/licenses/LICENSE-2.0
22
+ *
23
+ * Unless required by applicable law or agreed to in writing, software
24
+ * distributed under the License is distributed on an "AS IS" BASIS,
25
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
26
+ * See the License for the specific language governing permissions and
27
+ * limitations under the License.
28
+ */
29
+ import { autoUpdate, flip, shift, useFloating, useInteractions, useRole } from '@floating-ui/react';
30
+ import { useCombobox } from 'downshift';
31
+ import React, { useCallback, useEffect, useMemo, useState } from 'react';
32
+ import ReactDOM from 'react-dom';
33
+ import styled, { useTheme } from '@darajs/styled-components';
34
+ import Badge from '../badge/badge';
35
+ import { Input, InputWrapper, Wrapper } from '../combo-box/combo-box';
36
+ import ChevronButton from '../shared/chevron-button';
37
+ import DropdownList from '../shared/dropdown-list';
38
+ import { StyledListItem } from '../shared/list-item';
39
+ import { matchWidthToReference } from '../utils';
40
+ import { syncKbdHighlightIdx } from '../utils/syncKbdHighlightIdx';
41
+ const { stateChangeTypes } = useCombobox;
42
+ const getTextColor = (heading, isSelected, theme) => {
43
+ if (heading) {
44
+ return theme.colors.text;
45
+ }
46
+ if (isSelected) {
47
+ return theme.colors.primary;
48
+ }
49
+ return theme.colors.text;
50
+ };
51
+ const ListItemSpan = styled(StyledListItem) `
52
+ cursor: ${(props) => ((props === null || props === void 0 ? void 0 : props.heading) ? 'text' : 'pointer')};
53
+ user-select: ${(props) => ((props === null || props === void 0 ? void 0 : props.heading) ? 'text' : 'none')};
54
+
55
+ display: flex;
56
+ align-items: center;
57
+ justify-content: space-between;
58
+
59
+ padding: ${(props) => ((props === null || props === void 0 ? void 0 : props.heading) || !props.section ? '0 0.7rem' : '0 1.5rem')};
60
+ padding-right: 0.7rem;
61
+
62
+ font-weight: ${(props) => ((props === null || props === void 0 ? void 0 : props.heading) ? 'bold' : 'normal')};
63
+ color: ${(props) => getTextColor(props === null || props === void 0 ? void 0 : props.heading, props.isSelected, props.theme)};
64
+
65
+ ${(props) => {
66
+ if (props.heading) {
67
+ return `
68
+ :hover {
69
+ background-color: ${props.theme.colors.background};
70
+ color: ${props.theme.colors.text};
71
+ }
72
+ `;
73
+ }
74
+ }}
75
+ `;
76
+ function instanceOfSectionItem(item) {
77
+ return 'items' in item;
78
+ }
79
+ function unpackSectionedList(listItems) {
80
+ return listItems.reduce((acc, item) => {
81
+ if (instanceOfSectionItem(item)) {
82
+ const sectionHeading = { heading: true, label: item.label, value: item.label };
83
+ const sectionItems = item.items.map((sectionItem) => (Object.assign(Object.assign({}, sectionItem), { section: item.label })));
84
+ return [...acc, sectionHeading, ...sectionItems];
85
+ }
86
+ return [...acc, item];
87
+ }, []);
88
+ }
89
+ const SectionedListItem = ({ item, index, getItemProps, isSelected, isHighlighted, }) => {
90
+ const theme = useTheme();
91
+ const _a = getItemProps({ index, item }), { itemClassName } = _a, itemProps = __rest(_a, ["itemClassName"]);
92
+ if (item.heading) {
93
+ delete itemProps.onClick;
94
+ }
95
+ return (_jsxs(ListItemSpan, Object.assign({}, itemProps, { heading: item.heading, section: item.section, isSelected: isSelected, title: item.label, item: item, index: index, isHighlighted: isHighlighted, children: [item.label || item.section, item.badge && _jsx(Badge, { color: item.badge.color || theme.colors.primary, children: item.badge.label })] })));
96
+ };
97
+ /**
98
+ * A component for rendering lists, sectioned and non-sectioned. Takes an array of unpacked ListItem objects and
99
+ * renders a searchable list.
100
+ *
101
+ * @param {SectionedListProps} props - the component props
102
+ */
103
+ function SectionedList(props) {
104
+ var _a, _b, _c;
105
+ const unpackedItems = useMemo(() => unpackSectionedList(props.items), [props.items]);
106
+ const [pendingHighlight, setPendingHighlight] = useState(null);
107
+ const [items, setItems] = useState(unpackedItems);
108
+ const [inputValue, setInputValue] = useState((_b = (_a = props.selectedItem) === null || _a === void 0 ? void 0 : _a.label) !== null && _b !== void 0 ? _b : '');
109
+ const [kbdHighlightIdx, setKbdHighlightIdx] = React.useState();
110
+ const { selectedItem, isOpen, getMenuProps, getInputProps, getToggleButtonProps, getItemProps, setHighlightedIndex, } = useCombobox(Object.assign(Object.assign(Object.assign({ initialIsOpen: false, initialSelectedItem: (_c = props.initialValue) !== null && _c !== void 0 ? _c : props.selectedItem, itemToString: (item) => (item ? item.label : ''), items, onInputValueChange: (change) => {
111
+ setInputValue(change.inputValue);
112
+ if (!change.inputValue) {
113
+ setItems(unpackedItems);
114
+ return;
115
+ }
116
+ const counts = {};
117
+ const filteredItems = unpackedItems.filter((item) => {
118
+ const lowercaseInput = change.inputValue.toLowerCase();
119
+ const lowercaseLabel = item.label.toLowerCase();
120
+ // Check if search input matches section item
121
+ if (!item.heading && lowercaseLabel.includes(lowercaseInput)) {
122
+ counts[item.label] = counts[item.label] ? counts[item.label] + 1 : 1;
123
+ return true;
124
+ }
125
+ if (item.heading) {
126
+ // search for section headers that contain an item that matches the input
127
+ const listSections = props.items.filter((propItem) => propItem.items.find((subItem) => subItem.label.toLowerCase().includes(lowercaseInput)));
128
+ if (listSections.length) {
129
+ // display section headers that contain a matching item
130
+ listSections.forEach((section) => {
131
+ counts[section.label] = counts[section.label] ? counts[section.label] + 1 : 1;
132
+ });
133
+ return true;
134
+ }
135
+ }
136
+ return false;
137
+ });
138
+ setItems(filteredItems.filter((item) => counts[item.label] > 0));
139
+ }, onSelectedItemChange: (changes) => {
140
+ var _a, _b;
141
+ if (props.onSelect) {
142
+ if ((props.selectedItem && ((_a = changes.selectedItem) === null || _a === void 0 ? void 0 : _a.value) !== ((_b = props.selectedItem) === null || _b === void 0 ? void 0 : _b.value)) ||
143
+ !props.selectedItem) {
144
+ props.onSelect(changes.selectedItem);
145
+ }
146
+ }
147
+ } }, syncKbdHighlightIdx(setKbdHighlightIdx)), { stateReducer: (state, { changes, type }) => {
148
+ var _a, _b, _c;
149
+ // When props is forcefully updated then clear the input as well
150
+ if (type === stateChangeTypes.ControlledPropUpdatedSelectedItem) {
151
+ return Object.assign(Object.assign({}, changes), { inputValue: '' });
152
+ }
153
+ // This resets the input when the dropdown is opened
154
+ if (type === stateChangeTypes.InputFocus ||
155
+ (type === stateChangeTypes.ToggleButtonClick && changes.isOpen)) {
156
+ // This is a hack to change the highlight in the next render cycle so filteredItems had time to update
157
+ setPendingHighlight(changes.selectedItem ?
158
+ props.items.findIndex((i) => i.value === changes.selectedItem.value)
159
+ : 0);
160
+ return Object.assign(Object.assign({}, changes), { inputValue: '' });
161
+ }
162
+ // On item selection make sure the list doesn't filter down to just the selected item
163
+ if ([
164
+ stateChangeTypes.InputKeyDownEnter,
165
+ stateChangeTypes.ItemClick,
166
+ stateChangeTypes.InputBlur,
167
+ stateChangeTypes.InputKeyDownEscape,
168
+ stateChangeTypes.ToggleButtonClick,
169
+ ].includes(type)) {
170
+ return Object.assign(Object.assign({}, changes), { inputValue: ((_a = changes.selectedItem) === null || _a === void 0 ? void 0 : _a.label) || '' });
171
+ }
172
+ // jump section headings when navigating with keys
173
+ if (type === stateChangeTypes.InputKeyDownArrowUp && ((_b = items[changes.highlightedIndex]) === null || _b === void 0 ? void 0 : _b.heading)) {
174
+ return Object.assign(Object.assign({}, changes), { highlightedIndex: changes.highlightedIndex - 1 < 0 ? items.length - 1 : changes.highlightedIndex - 1 });
175
+ }
176
+ if (type === stateChangeTypes.InputKeyDownArrowDown && ((_c = items[changes.highlightedIndex]) === null || _c === void 0 ? void 0 : _c.heading)) {
177
+ return Object.assign(Object.assign({}, changes), { highlightedIndex: changes.highlightedIndex + 1 === items.length ? 0 : changes.highlightedIndex + 1 });
178
+ }
179
+ return changes;
180
+ } }), ('selectedItem' in props && { selectedItem: props.selectedItem })));
181
+ useEffect(() => {
182
+ if (isOpen && pendingHighlight !== null) {
183
+ setHighlightedIndex(pendingHighlight);
184
+ setPendingHighlight(null);
185
+ }
186
+ }, [isOpen, pendingHighlight, setHighlightedIndex]);
187
+ useEffect(() => {
188
+ if (props.selectedItem === null) {
189
+ setInputValue('');
190
+ }
191
+ }, [props.selectedItem]);
192
+ const { refs, floatingStyles, context } = useFloating({
193
+ open: isOpen,
194
+ placement: 'bottom-start',
195
+ middleware: [flip(), shift(), matchWidthToReference(+2)],
196
+ whileElementsMounted: isOpen ? autoUpdate : undefined,
197
+ });
198
+ const role = useRole(context, { role: 'listbox' });
199
+ const { getReferenceProps, getFloatingProps } = useInteractions([role]);
200
+ const dropdownStyle = React.useMemo(() => (Object.assign(Object.assign({}, floatingStyles), { marginLeft: -1 })), [floatingStyles]);
201
+ const renderListItem = useCallback((item, index) => (_jsx(SectionedListItem, { item: item, index: index, getItemProps: getItemProps, isSelected: (selectedItem === null || selectedItem === void 0 ? void 0 : selectedItem.value) === item.value, isHighlighted: isOpen && kbdHighlightIdx !== undefined && kbdHighlightIdx === index }, `item-${index}-${isOpen && (selectedItem === null || selectedItem === void 0 ? void 0 : selectedItem.label) === item.label}`)), [getItemProps, selectedItem, isOpen, kbdHighlightIdx]);
202
+ return (_jsxs(Wrapper, { className: props.className, isDisabled: props.disabled, isErrored: false, isOpen: isOpen, style: props.style, children: [_jsxs(InputWrapper, { disabled: props.disabled, isOpen: isOpen, ref: refs.setReference, children: [_jsx(Input, Object.assign({}, getInputProps({ value: inputValue }), getReferenceProps())), _jsx(ChevronButton, { disabled: props.disabled, isOpen: isOpen, getToggleButtonProps: getToggleButtonProps })] }), ReactDOM.createPortal(_jsx(DropdownList, { items: items, getItemProps: getItemProps, getFloatingProps: getFloatingProps, style: dropdownStyle, isOpen: isOpen, getMenuProps: getMenuProps, ref: refs.setFloating, kbdHighlightIdx: kbdHighlightIdx, children: renderListItem }), document.body)] }));
203
+ }
204
+ export default SectionedList;
205
+ //# sourceMappingURL=sectioned-list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sectioned-list.js","sourceRoot":"","sources":["../../src/sectioned-list/sectioned-list.tsx"],"names":[],"mappings":"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"}