@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,231 @@
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, useMultipleSelection } from 'downshift';
31
+ import { useCallback, useMemo, useState } from 'react';
32
+ import ReactDOM from 'react-dom';
33
+ import styled from '@darajs/styled-components';
34
+ import { Cross } from '@darajs/ui-icons';
35
+ import ChevronButton from '../shared/chevron-button';
36
+ import DropdownList from '../shared/dropdown-list';
37
+ import Tooltip from '../tooltip/tooltip';
38
+ import { matchWidthToReference } from '../utils';
39
+ import { syncKbdHighlightIdx } from '../utils/syncKbdHighlightIdx';
40
+ const { stateChangeTypes } = useCombobox;
41
+ const tagHeight = 2;
42
+ const tagTopMargin = 0.5;
43
+ const Wrapper = styled.div `
44
+ display: inline-flex;
45
+ ${(props) => {
46
+ if (props.isDisabled) {
47
+ return `
48
+ cursor: not-allowed;
49
+ `;
50
+ }
51
+ }}
52
+
53
+ width: 100%;
54
+ max-width: ${(props) => props.maxWidth};
55
+ max-height: ${(props) => props.maxRows * (tagHeight + tagTopMargin)}rem;
56
+
57
+ border-radius: ${(props) => (props.isOpen ? '0.25rem 0.25rem 0rem 0rem' : '0.25rem')};
58
+ `;
59
+ const InputWrapper = styled.div `
60
+ display: flex;
61
+ flex: 1 1 auto;
62
+ align-items: center;
63
+ justify-content: space-between;
64
+
65
+ width: 100%;
66
+ min-width: 10rem;
67
+ min-height: 2.5rem;
68
+ margin-right: 0.25rem;
69
+ padding: 0.25rem 0.5rem 0.25rem 1rem;
70
+
71
+ color: ${(props) => (props.isDisabled ? props.theme.colors.grey2 : props.theme.colors.text)};
72
+
73
+ background-color: ${(props) => props.theme.colors.grey1};
74
+ border: none;
75
+ border-radius: ${(props) => (props.isOpen ? '0.25rem 0.25rem 0rem 0rem' : '0.25rem')};
76
+
77
+ :hover {
78
+ background-color: ${(props) => (props.isDisabled ? props.theme.colors.grey1 : props.theme.colors.grey2)};
79
+ }
80
+
81
+ svg {
82
+ height: 0.8rem;
83
+ }
84
+
85
+ ${(props) => {
86
+ if (props.isDisabled) {
87
+ return `
88
+ border: 1px solid ${props.theme.colors.grey1};
89
+
90
+ svg {
91
+ color: ${props.theme.colors.grey2};
92
+ cursor: not-allowed;
93
+ }
94
+ `;
95
+ }
96
+ if (props.isErrored) {
97
+ return `border: 1px solid ${props.theme.colors.error};`;
98
+ }
99
+ return `
100
+ border: 1px solid ${props.isOpen ? props.theme.colors.grey3 : props.theme.colors.grey1};
101
+ :hover {
102
+ border: 1px solid ${props.theme.colors.grey3};
103
+
104
+ }
105
+ `;
106
+ }}
107
+ `;
108
+ const Input = styled.input `
109
+ overflow: hidden;
110
+ flex: 1 1 auto;
111
+
112
+ margin-right: 0.5rem;
113
+ padding: 0;
114
+
115
+ font-size: ${(props) => (props.size ? `${props.size}rem` : props.theme.font.size)};
116
+ font-weight: 300;
117
+ color: ${(props) => props.theme.colors.grey6};
118
+ text-align: left;
119
+ text-overflow: ellipsis;
120
+ white-space: nowrap;
121
+
122
+ background-color: transparent;
123
+ border: none;
124
+ outline: 0;
125
+
126
+ :disabled {
127
+ cursor: not-allowed;
128
+ }
129
+ `;
130
+ const TagWrapper = styled.div `
131
+ overflow: auto;
132
+ display: flex;
133
+ flex-wrap: wrap;
134
+ gap: 0.5rem;
135
+ align-items: center;
136
+
137
+ width: 100%;
138
+ height: 100%;
139
+ max-height: ${(props) => props.maxRows * (tagHeight + tagTopMargin) - 0.25}rem;
140
+ `;
141
+ const Tag = styled.span `
142
+ overflow: hidden;
143
+ display: flex;
144
+ align-items: center;
145
+
146
+ height: ${tagHeight}rem;
147
+ padding: 0 0.75rem;
148
+
149
+ font-size: 0.875rem;
150
+ color: ${(props) => (props.disabled ? props.theme.colors.grey3 : props.theme.colors.text)};
151
+
152
+ background-color: ${(props) => (props.disabled ? props.theme.colors.grey3 : props.theme.colors.blue3)};
153
+ border: 1px solid ${(props) => props.theme.colors.primary};
154
+ border-radius: 1rem;
155
+
156
+ svg {
157
+ width: 0.85rem;
158
+ height: 0.85rem;
159
+ margin-left: 0.25rem;
160
+ color: ${(props) => (props.disabled ? props.theme.colors.grey3 : props.theme.colors.text)};
161
+
162
+ :hover {
163
+ color: ${(props) => (props.disabled ? props.theme.colors.grey3 : props.theme.colors.primary)};
164
+ }
165
+ }
166
+ `;
167
+ const TagText = styled.span `
168
+ overflow: hidden;
169
+ text-overflow: ellipsis;
170
+ white-space: nowrap;
171
+ `;
172
+ /**
173
+ * A multiselect select combobox component, accepts a list of items to select from and an onSelect handler to listen for
174
+ * changes. Renders currently selected items as list of tags which have a cross for removing them. Component will expand
175
+ * vertically to fit all selected items.
176
+ *
177
+ * @param {MultiSelectProps} props - the component props
178
+ */
179
+ function MultiSelect(_a) {
180
+ var _b, _c;
181
+ var { maxWidth = '100%', maxRows = 3 } = _a, props = __rest(_a, ["maxWidth", "maxRows"]);
182
+ const [inputValue, setInputValue] = useState('');
183
+ const { getSelectedItemProps, getDropdownProps, addSelectedItem, removeSelectedItem, selectedItems } = useMultipleSelection(Object.assign({ initialSelectedItems: (_b = props.initialValue) !== null && _b !== void 0 ? _b : [], onSelectedItemsChange: (changes) => {
184
+ if (props.onSelect) {
185
+ props.onSelect(changes.selectedItems);
186
+ }
187
+ } }, ('selectedItems' in props && { selectedItems: (_c = props.selectedItems) !== null && _c !== void 0 ? _c : [] })));
188
+ const onTermChange = useCallback((term) => {
189
+ setInputValue(term);
190
+ if (props.onTermChange) {
191
+ props.onTermChange(term);
192
+ }
193
+ },
194
+ // eslint-disable-next-line react-hooks/exhaustive-deps
195
+ [props.onTermChange]);
196
+ // If there is a term change function passed in then don't filter locally
197
+ const filteredItems = useMemo(() => props.onTermChange ?
198
+ props.items
199
+ : props.items.filter((item) => { var _a; return !selectedItems.includes(item) && ((_a = item.label) === null || _a === void 0 ? void 0 : _a.toLowerCase().includes(inputValue.toLowerCase())); }), [props.onTermChange, props.items, selectedItems, inputValue]);
200
+ const [kbdHighlightIdx, setKbdHighlightIdx] = useState();
201
+ const { isOpen, getMenuProps, getInputProps, getItemProps, getToggleButtonProps } = useCombobox(Object.assign(Object.assign({ defaultHighlightedIndex: -1, initialIsOpen: props.initialIsOpen, inputValue, itemToString: (item) => (item === null || item === void 0 ? void 0 : item.label) || '', items: filteredItems, onStateChange: ({ inputValue: internalInputVal, selectedItem, type }) => {
202
+ if (type === stateChangeTypes.InputChange) {
203
+ onTermChange(internalInputVal);
204
+ }
205
+ if ([stateChangeTypes.InputKeyDownEnter, stateChangeTypes.ItemClick, stateChangeTypes.InputBlur].includes(type)) {
206
+ if (selectedItem) {
207
+ onTermChange('');
208
+ addSelectedItem(selectedItem);
209
+ }
210
+ }
211
+ } }, syncKbdHighlightIdx(setKbdHighlightIdx)), { selectedItem: null, stateReducer: (state, { changes, type }) => {
212
+ if (type === stateChangeTypes.ItemClick || type === stateChangeTypes.InputKeyDownEnter) {
213
+ return Object.assign(Object.assign({}, changes), { isOpen: true });
214
+ }
215
+ return changes;
216
+ } }));
217
+ const { refs, floatingStyles, context } = useFloating({
218
+ open: isOpen,
219
+ middleware: [flip(), shift(), matchWidthToReference()],
220
+ whileElementsMounted: isOpen ? autoUpdate : undefined,
221
+ });
222
+ const role = useRole(context, { role: 'listbox' });
223
+ const { getReferenceProps, getFloatingProps } = useInteractions([role]);
224
+ return (_jsxs(Wrapper, { className: props.className, isDisabled: props.disabled, isOpen: isOpen, maxRows: maxRows, maxWidth: maxWidth, style: props.style, children: [_jsx(Tooltip, { content: props.errorMsg, disabled: !props.errorMsg, styling: "error", children: _jsxs(InputWrapper, { isDisabled: props.disabled, isOpen: isOpen, ref: refs.setReference, children: [_jsxs(TagWrapper, { maxRows: maxRows, children: [selectedItems.map((selectedItem, index) => (_jsxs(Tag, Object.assign({ disabled: props.disabled }, getSelectedItemProps({ index, selectedItem }), { children: [_jsx(TagText, { children: selectedItem.label }), _jsx(Cross, { asButton: true, onClick: (e) => {
225
+ // See https://github.com/downshift-js/downshift/issues/1188
226
+ e.stopPropagation();
227
+ return removeSelectedItem(selectedItem);
228
+ } })] }), selectedItem.value))), _jsx(Input, Object.assign({}, getInputProps(getDropdownProps({ preventKeyAction: isOpen })), getReferenceProps(), { disabled: props.disabled, placeholder: props.placeholder, size: props.size, style: { flex: '1 1 5ch' } }))] }), _jsx(ChevronButton, { disabled: props.disabled, isOpen: isOpen, getToggleButtonProps: getToggleButtonProps })] }) }), ReactDOM.createPortal(_jsx(DropdownList, { items: filteredItems, getItemProps: getItemProps, getFloatingProps: getFloatingProps, style: floatingStyles, isOpen: isOpen, getMenuProps: getMenuProps, size: props.size, ref: refs.setFloating, kbdHighlightIdx: kbdHighlightIdx }), document.body)] }));
229
+ }
230
+ export default MultiSelect;
231
+ //# sourceMappingURL=multiselect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"multiselect.js","sourceRoot":"","sources":["../../src/multiselect/multiselect.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
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 { FunctionComponent } from 'react';
18
+ interface InputStepperProps {
19
+ /** property that disables the stepper */
20
+ disabled: boolean;
21
+ /** callback that determines the logic for increasing or decreasing input value */
22
+ step: (value: number) => void;
23
+ /** Optional property to set how many steps the stepper should take */
24
+ stepSkip?: number;
25
+ }
26
+ /**
27
+ * A simple stepper component that can be added to an input component to increase or decrease its value
28
+ *
29
+ * @param props the component props
30
+ */
31
+ declare const InputStepper: FunctionComponent<InputStepperProps>;
32
+ export default InputStepper;
33
+ //# sourceMappingURL=input-stepper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input-stepper.d.ts","sourceRoot":"","sources":["../../src/numeric-input/input-stepper.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAkD1C,UAAU,iBAAiB;IACvB,yCAAyC;IACzC,QAAQ,EAAE,OAAO,CAAC;IAClB,kFAAkF;IAClF,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9B,sEAAsE;IACtE,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;GAIG;AAEH,QAAA,MAAM,YAAY,EAAE,iBAAiB,CAAC,iBAAiB,CAgBtD,CAAC;AAEF,eAAe,YAAY,CAAC"}
@@ -0,0 +1,54 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import styled from '@darajs/styled-components';
3
+ import { ChevronDown, ChevronUp } from '@darajs/ui-icons';
4
+ import Button from '../button/button';
5
+ const StepperWrapper = styled.div `
6
+ cursor: ${(props) => (props.disabled ? 'not-allowed' : 'pointer')};
7
+
8
+ display: flex;
9
+ flex-direction: column;
10
+ justify-content: space-around;
11
+
12
+ box-sizing: border-box;
13
+ padding: 0.25rem 0;
14
+
15
+ border-radius: 0 0.25rem 0.25rem 0;
16
+ `;
17
+ const StepperButton = styled(Button) `
18
+ min-width: 0.75rem;
19
+ height: max-content;
20
+ padding: 0;
21
+ background-color: transparent !important;
22
+
23
+ svg {
24
+ cursor: ${(props) => (props.disabled ? 'not-allowed' : 'pointer')};
25
+ width: 0.75rem;
26
+ height: 0.75rem;
27
+ color: ${(props) => (props.disabled ? props.theme.colors.grey3 : props.theme.colors.grey4)};
28
+ }
29
+
30
+ :hover:not(:disabled) {
31
+ svg {
32
+ color: ${(props) => props.theme.colors.grey5};
33
+ }
34
+ }
35
+
36
+ :active:not(:disabled) {
37
+ svg {
38
+ transform: scale(0.75);
39
+ }
40
+ }
41
+ `;
42
+ /**
43
+ * A simple stepper component that can be added to an input component to increase or decrease its value
44
+ *
45
+ * @param props the component props
46
+ */
47
+ const InputStepper = ({ disabled, step, stepSkip }) => {
48
+ const amountToStep = Math.abs(stepSkip !== null && stepSkip !== void 0 ? stepSkip : 1);
49
+ const stepUp = () => step(amountToStep);
50
+ const stepDown = () => step(amountToStep * -1);
51
+ return (_jsxs(StepperWrapper, { disabled: disabled, children: [_jsx(StepperButton, { disabled: disabled, onClick: stepUp, styling: "ghost", tabIndex: -1, children: _jsx(ChevronUp, {}) }), _jsx(StepperButton, { disabled: disabled, onClick: stepDown, styling: "ghost", tabIndex: -1, children: _jsx(ChevronDown, {}) })] }));
52
+ };
53
+ export default InputStepper;
54
+ //# sourceMappingURL=input-stepper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input-stepper.js","sourceRoot":"","sources":["../../src/numeric-input/input-stepper.tsx"],"names":[],"mappings":";AAkBA,OAAO,MAAM,MAAM,2BAA2B,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE1D,OAAO,MAAM,MAAM,kBAAkB,CAAC;AAMtC,MAAM,cAAc,GAAG,MAAM,CAAC,GAAG,CAAqB;cACxC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC;;;;;;;;;;CAUpE,CAAC;AAEF,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,CAAA;;;;;;;kBAOlB,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC;;;iBAGxD,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;;;;;qBAK7E,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK;;;;;;;;;CASvD,CAAC;AAWF;;;;GAIG;AAEH,MAAM,YAAY,GAAyC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE;IACxF,MAAM,YAAY,GAAW,IAAI,CAAC,GAAG,CAAC,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,CAAC,CAAC,CAAC;IACrD,MAAM,MAAM,GAAG,GAAS,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC9C,MAAM,QAAQ,GAAG,GAAS,EAAE,CAAC,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC;IAErD,OAAO,CACH,MAAC,cAAc,IAAC,QAAQ,EAAE,QAAQ,aAC9B,KAAC,aAAa,IAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAC,OAAO,EAAC,QAAQ,EAAE,CAAC,CAAC,YAC5E,KAAC,SAAS,KAAG,GACD,EAEhB,KAAC,aAAa,IAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAC,OAAO,EAAC,QAAQ,EAAE,CAAC,CAAC,YAC9E,KAAC,WAAW,KAAG,GACH,IACH,CACpB,CAAC;AACN,CAAC,CAAC;AAEF,eAAe,YAAY,CAAC"}
@@ -0,0 +1,42 @@
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 NumericInputProps extends InteractiveComponentProps<number>, Omit<React.InputHTMLAttributes<HTMLInputElement>, 'onChange' | 'value' | 'initialValue'> {
20
+ /** An optional parameter to restrict the field to just integers */
21
+ integerOnly?: boolean;
22
+ /** An optional property to set the maximum accepted value */
23
+ maxValue?: number;
24
+ /** An optional property to set the minimum accepted value */
25
+ minValue?: number;
26
+ /** An optional onChange handler for listening to changes in the input */
27
+ onChange?: (value: number, e?: React.SyntheticEvent<HTMLInputElement>) => void | Promise<void>;
28
+ /** An optional event listener for complete events (enter presses) */
29
+ onComplete?: () => void | Promise<void>;
30
+ /** An optional property to set how many steps the stepper should take */
31
+ stepSkip?: number;
32
+ /** An optional property to show input stepper control */
33
+ stepper?: boolean;
34
+ }
35
+ /**
36
+ * NumericInput is a wrapper around the input component that restricts the value to be numeric, either float or integer.
37
+ *
38
+ * @param props the component props
39
+ */
40
+ declare const NumericInput: React.ForwardRefExoticComponent<NumericInputProps & React.RefAttributes<HTMLInputElement>>;
41
+ export default NumericInput;
42
+ //# sourceMappingURL=numeric-input.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"numeric-input.d.ts","sourceRoot":"","sources":["../../src/numeric-input/numeric-input.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAO/B,OAAO,EAAE,yBAAyB,EAAE,MAAM,UAAU,CAAC;AAwHrD,MAAM,WAAW,iBACb,SAAQ,yBAAyB,CAAC,MAAM,CAAC,EAErC,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,EAAE,UAAU,GAAG,OAAO,GAAG,cAAc,CAAC;IAC5F,mEAAmE;IACnE,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,6DAA6D;IAC7D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,6DAA6D;IAC7D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,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,qEAAqE;IACrE,UAAU,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxC,yEAAyE;IACzE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,yDAAyD;IACzD,OAAO,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;;;GAIG;AACH,QAAA,MAAM,YAAY,4FAwHjB,CAAC;AAGF,eAAe,YAAY,CAAC"}
@@ -0,0 +1,234 @@
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 * as React from 'react';
30
+ import { useCallback, useEffect, useMemo, useState } from 'react';
31
+ import styled from '@darajs/styled-components';
32
+ import { CONTROL_KEYS, Key } from '../constants';
33
+ import Input, { ErrorMessage } from '../input/input';
34
+ import InputStepper from './input-stepper';
35
+ const InputWrapper = styled.div `
36
+ display: flex;
37
+ flex-direction: row;
38
+
39
+ width: 22ch;
40
+ height: 2.5rem;
41
+ padding-right: 0.5rem;
42
+
43
+ background-color: ${(props) => props.theme.colors.grey1};
44
+ border: 1px solid ${(props) => (props.errorMsg ? props.theme.colors.error : props.theme.colors.grey1)};
45
+ border-radius: 0.25rem;
46
+
47
+ input {
48
+ height: calc(2.5rem - 2px);
49
+ border: none;
50
+ border-radius: 0.25rem;
51
+ }
52
+
53
+ div {
54
+ border: none;
55
+ border-radius: 0.25rem;
56
+
57
+ div {
58
+ border: none;
59
+ border-radius: 0.25rem;
60
+ }
61
+ }
62
+
63
+ :hover {
64
+ background-color: ${(props) => (props.disabled ? props.theme.colors.grey1 : props.theme.colors.grey2)};
65
+ /* stylelint-disable -- fails to parse the statement */
66
+ border: 1px solid
67
+ ${(props) => {
68
+ if (props.disabled) {
69
+ return props.theme.colors.grey1;
70
+ }
71
+ if (props.errorMsg) {
72
+ return props.theme.colors.error;
73
+ }
74
+ return props.theme.colors.grey2;
75
+ }};
76
+ /* stylelint-enable */
77
+
78
+ input {
79
+ background-color: ${(props) => (props.disabled ? props.theme.colors.grey1 : props.theme.colors.grey2)};
80
+ }
81
+
82
+ div {
83
+ background-color: ${(props) => (props.disabled ? props.theme.colors.grey1 : props.theme.colors.grey2)};
84
+ }
85
+ }
86
+
87
+ :focus-within:not(:disabled) {
88
+ border: 1px solid ${(props) => (props.errorMsg ? props.theme.colors.error : props.theme.colors.grey3)};
89
+
90
+ input {
91
+ border: none;
92
+ }
93
+ }
94
+
95
+ /* Fix: Overrides the 22ch default width of the nested regular input */
96
+ > div:first-child {
97
+ width: 100%;
98
+ height: auto;
99
+ }
100
+ `;
101
+ /**
102
+ * A numeric characters only filter for the input component, can be applied to create a numeric input that prevents
103
+ * invalid entries rather than just erroring them
104
+ *
105
+ * @param integerOnly whether to limit the input to only accept integers
106
+ */
107
+ const numericFilter = (integerOnly) => (e) => {
108
+ // Check for numbers
109
+ if (parseInt(e.key) || parseInt(e.key) === 0) {
110
+ return true;
111
+ }
112
+ // Check control keys
113
+ if (CONTROL_KEYS.includes(e.key)) {
114
+ return true;
115
+ }
116
+ const target = e.target;
117
+ // Check for decimal point and make sure there is only one
118
+ if (!integerOnly && e.key === Key.PERIOD && !target.value.includes(Key.PERIOD)) {
119
+ return true;
120
+ }
121
+ // Check for minus and make sure it's at the start
122
+ if (e.key === Key.MINUS && !e.shiftKey && target.selectionStart === 0 && !target.value.includes(Key.MINUS)) {
123
+ return true;
124
+ }
125
+ return false;
126
+ };
127
+ /**
128
+ * A helper function to get the initial value of the input, either from the value or the initialValue props
129
+ *
130
+ * @param value the value prop
131
+ * @param initialValue the initialValue prop
132
+ * @returns the initial value of the numeric input
133
+ */
134
+ const getInitialValue = (value, initialValue) => {
135
+ if (Number.isFinite(value)) {
136
+ return String(value);
137
+ }
138
+ if (Number.isFinite(initialValue)) {
139
+ return String(initialValue);
140
+ }
141
+ return '';
142
+ };
143
+ /**
144
+ * NumericInput is a wrapper around the input component that restricts the value to be numeric, either float or integer.
145
+ *
146
+ * @param props the component props
147
+ */
148
+ const NumericInput = React.forwardRef((_a, ref) => {
149
+ var { value, onChange, initialValue } = _a, props = __rest(_a, ["value", "onChange", "initialValue"]);
150
+ const keydownFilter = useMemo(() => numericFilter(props.integerOnly), [props.integerOnly]);
151
+ const [input, setInput] = useState(getInitialValue(value, initialValue));
152
+ const step = (v) => {
153
+ if (!input || input === '-') {
154
+ return;
155
+ }
156
+ const isFloat = input.includes('.');
157
+ const parsedValue = isFloat ? parseFloat(input) : parseInt(input);
158
+ let nextValueNumber = parsedValue + v;
159
+ let nextValueStr = String(nextValueNumber);
160
+ if (isFloat) {
161
+ const decimals = input.split('.')[1];
162
+ if (decimals) {
163
+ nextValueStr = (parsedValue + v / Math.pow(10, decimals.length)).toFixed(decimals.length);
164
+ nextValueNumber = parseFloat(nextValueStr);
165
+ }
166
+ }
167
+ // controlled
168
+ if (value !== undefined) {
169
+ onChange === null || onChange === void 0 ? void 0 : onChange(nextValueNumber, {
170
+ target: {
171
+ value: nextValueStr,
172
+ },
173
+ });
174
+ // uncontrolled
175
+ }
176
+ else {
177
+ setInput(nextValueStr);
178
+ }
179
+ };
180
+ const onKeyDown = (e) => {
181
+ var _a, _b;
182
+ // run the keydown event handler if it exists
183
+ (_a = props.onKeyDown) === null || _a === void 0 ? void 0 : _a.call(props, e);
184
+ if (!props.stepper) {
185
+ return;
186
+ }
187
+ const stepSkip = Math.abs((_b = props.stepSkip) !== null && _b !== void 0 ? _b : 1);
188
+ if (e.key === Key.UP) {
189
+ step(stepSkip);
190
+ }
191
+ if (e.key === Key.DOWN) {
192
+ step(stepSkip * -1);
193
+ }
194
+ };
195
+ const handleOnChange = useCallback((v, e) => {
196
+ const parsed = props.integerOnly ? parseInt(v) : parseFloat(v);
197
+ // uncontrolled component
198
+ if (value === undefined) {
199
+ setInput(v);
200
+ onChange === null || onChange === void 0 ? void 0 : onChange(parsed, e);
201
+ return;
202
+ }
203
+ // In controlled mode, we need to take over the input updates whenever the value is not a valid number
204
+ // This way onchange is only called with valid number updates and not when user is still entering a valid number
205
+ // if the value ends with a period, don't call onChange as it's not yet a valid number
206
+ if (v.endsWith('.')) {
207
+ setInput(v);
208
+ return;
209
+ }
210
+ // if the value is decimal and ends in a zero the user has also not changed the number/finished typing
211
+ if (v.includes('.') && v.endsWith('0')) {
212
+ setInput(v);
213
+ return;
214
+ }
215
+ // if the user is typing a negative number, don't call onChange until they have added the number
216
+ if (v === '-') {
217
+ setInput(v);
218
+ return;
219
+ }
220
+ // When the input ends with . and the user backspaces, we should update the input as the value won't have changed
221
+ if (input.endsWith('.')) {
222
+ setInput(v);
223
+ }
224
+ onChange === null || onChange === void 0 ? void 0 : onChange(parsed, e);
225
+ }, [props.integerOnly, value, onChange, input]);
226
+ useEffect(() => {
227
+ setInput(getInitialValue(value, initialValue));
228
+ // eslint-disable-next-line react-hooks/exhaustive-deps
229
+ }, [value]);
230
+ return (_jsxs("div", { children: [_jsxs(InputWrapper, { disabled: props.disabled, errorMsg: props.errorMsg, stepper: props.stepper, style: props.style, children: [_jsx(Input, Object.assign({}, props, { keydownFilter: keydownFilter, onChange: handleOnChange, onKeyDown: onKeyDown, ref: ref, value: input })), props.stepper && _jsx(InputStepper, { disabled: props.disabled, step: step, stepSkip: props.stepSkip })] }), props.errorMsg && _jsx(ErrorMessage, { children: props.errorMsg })] }));
231
+ });
232
+ Input.displayName = 'NumericInput';
233
+ export default NumericInput;
234
+ //# sourceMappingURL=numeric-input.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"numeric-input.js","sourceRoot":"","sources":["../../src/numeric-input/numeric-input.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import * as React from 'react';
2
+ export interface ProgressBarProps {
3
+ /** Standard react className property */
4
+ className?: string;
5
+ /** Optional color prop for the progress bar, should be a hex code. Pass an array for multiple values */
6
+ color?: string | string[];
7
+ /** Optional label for the progress bar. If not provided, the progress will be displayed as a percentage. Pass an array for multiple values */
8
+ label?: React.ReactNode | React.ReactNode[];
9
+ /** The current progress as a percentage. Pass an array for multiple values */
10
+ progress: number | number[];
11
+ /** Set the progress bar to view as a smaller strip with no label */
12
+ small?: boolean;
13
+ /** Native react style property, can be used to fine tune the button appearance */
14
+ style?: React.CSSProperties;
15
+ }
16
+ /**
17
+ * A simple progress bar component, that displays the current progress to 100% as a bar with a small label
18
+ *
19
+ * @param props see interface for details
20
+ */
21
+ declare function ProgressBar(props: ProgressBarProps): JSX.Element;
22
+ export default ProgressBar;
23
+ //# sourceMappingURL=progress-bar.d.ts.map