@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,92 @@
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 { forwardRef, useEffect, useMemo, useState } from 'react';
19
+ import styled from '@darajs/styled-components';
20
+ import { Moon } from '@darajs/ui-icons';
21
+ import Sun from './sun-icon';
22
+ const SwitchWrapper = styled.div `
23
+ cursor: pointer;
24
+
25
+ position: relative;
26
+
27
+ display: flex;
28
+ align-items: center;
29
+ justify-content: ${(props) => (props.enabled ? 'flex-start' : 'flex-end')};
30
+
31
+ width: max-content;
32
+ height: 1.5rem;
33
+ padding: 0;
34
+ padding-right: ${(props) => (props.enabled ? '1.75rem' : '0.5rem')};
35
+ padding-left: ${(props) => (props.enabled ? '0.5rem' : '1.75rem')};
36
+
37
+ font-size: ${(props) => props.theme.font.size};
38
+ color: ${(props) => props.theme.colors.blue1};
39
+
40
+ background-color: ${(props) => (props.enabled ? props.theme.colors.primary : props.theme.colors.secondary)};
41
+ border-radius: 0.75rem;
42
+
43
+ svg {
44
+ color: ${(props) => props.theme.colors.blue1};
45
+ }
46
+ `;
47
+ const SwitchHandle = styled.span `
48
+ position: absolute;
49
+ top: 0.125rem;
50
+ left: ${(props) => (props.enabled ? 'calc(100% - 1.375rem)' : '0.125rem')};
51
+
52
+ display: inline-block;
53
+
54
+ width: 1.25rem;
55
+ height: 1.25rem;
56
+
57
+ background-color: ${(props) => props.theme.colors.blue1};
58
+ border-radius: 0.625rem;
59
+
60
+ transition: left 100ms linear;
61
+ `;
62
+ /**
63
+ * A simple switch component that can be on or off. Accepts an onChange handler to listen for changes to the state.
64
+ *
65
+ * @param {SwitchProps} props - the component props
66
+ */
67
+ function Switch({ className, initialValue = false, labels = {
68
+ off: 'OFF',
69
+ on: 'ON',
70
+ }, lightDark = false, onChange, style, value, }, ref) {
71
+ const [enabled, setEnabled] = useState(value || initialValue);
72
+ const labelIconToShow = useMemo(() => {
73
+ if (lightDark) {
74
+ return enabled ? _jsx(Sun, {}) : _jsx(Moon, {});
75
+ }
76
+ return enabled ? labels.on : labels.off;
77
+ }, [labels, lightDark, enabled]);
78
+ useEffect(() => {
79
+ if (value !== undefined) {
80
+ setEnabled(value);
81
+ }
82
+ }, [value]);
83
+ const onClick = () => {
84
+ if (value === undefined) {
85
+ setEnabled(!enabled);
86
+ }
87
+ onChange === null || onChange === void 0 ? void 0 : onChange(!enabled);
88
+ };
89
+ return (_jsxs(SwitchWrapper, { className: className, "data-testid": "wrapper", enabled: enabled, onClick: onClick, ref: ref, style: style, children: [_jsx(SwitchHandle, { "data-testid": "handle", enabled: enabled }), _jsx("div", { style: { userSelect: 'none' }, children: labelIconToShow })] }));
90
+ }
91
+ export default forwardRef(Switch);
92
+ //# sourceMappingURL=switch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"switch.js","sourceRoot":"","sources":["../../src/switch/switch.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ import { IconProps } from '@darajs/ui-icons';
2
+ export declare enum Action {
3
+ COPY = "copy",
4
+ DELETE = "delete",
5
+ SELECT = "select",
6
+ SELECT_ALL = "select_all",
7
+ SWITCH = "switch",
8
+ UNSELECT_ALL = "unselect_all"
9
+ }
10
+ export interface ActionCol {
11
+ getIcon?: (row: any) => (props: IconProps) => JSX.Element;
12
+ getLabel?: (row: any) => string;
13
+ icon?: (props: IconProps) => JSX.Element;
14
+ id: Action | string;
15
+ label?: string;
16
+ }
17
+ export declare const Actions: {
18
+ [k: string]: ActionCol;
19
+ };
20
+ /** Interface is very loose because react table basically lets anything go through here */
21
+ interface ActionCellProps {
22
+ column: any;
23
+ data: any;
24
+ onAction: (actionId: string, row: any) => void | Promise<void>;
25
+ row: any;
26
+ }
27
+ /**
28
+ * The action cell is used by the action column to render row actions such as delete on each row of a table
29
+ *
30
+ * @param {ActionCellProps} props see interface for details
31
+ */
32
+ export declare function ActionCell(props: ActionCellProps): JSX.Element;
33
+ export {};
34
+ //# sourceMappingURL=action-cell.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"action-cell.d.ts","sourceRoot":"","sources":["../../../src/table/cells/action-cell.tsx"],"names":[],"mappings":"AAmBA,OAAO,EAAqB,SAAS,EAAsC,MAAM,kBAAkB,CAAC;AAEpG,oBAAY,MAAM;IACd,IAAI,SAAS;IACb,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,UAAU,eAAe;IACzB,MAAM,WAAW;IACjB,YAAY,iBAAiB;CAChC;AAkBD,MAAM,WAAW,SAAS;IACtB,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,KAAK,EAAE,SAAS,KAAK,GAAG,CAAC,OAAO,CAAC;IAC1D,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,MAAM,CAAC;IAChC,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,GAAG,CAAC,OAAO,CAAC;IACzC,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,eAAO,MAAM,OAAO,EAAE;IAAE,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAO7C,CAAC;AAeF,0FAA0F;AAC1F,UAAU,eAAe;IACrB,MAAM,EAAE,GAAG,CAAC;IAEZ,IAAI,EAAE,GAAG,CAAC;IACV,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/D,GAAG,EAAE,GAAG,CAAC;CACZ;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,GAAG,CAAC,OAAO,CAoB9D"}
@@ -0,0 +1,68 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import styled from '@darajs/styled-components';
3
+ import { CheckSquare, Copy, Square, ToggleOff, ToggleOn, Trash } from '@darajs/ui-icons';
4
+ export var Action;
5
+ (function (Action) {
6
+ Action["COPY"] = "copy";
7
+ Action["DELETE"] = "delete";
8
+ Action["SELECT"] = "select";
9
+ Action["SELECT_ALL"] = "select_all";
10
+ Action["SWITCH"] = "switch";
11
+ Action["UNSELECT_ALL"] = "unselect_all";
12
+ })(Action || (Action = {}));
13
+ const SelectCheck = styled(CheckSquare) `
14
+ color: ${(props) => props.theme.colors.primary};
15
+ `;
16
+ function getSelectIcon(row) {
17
+ return row.selected ? SelectCheck : Square;
18
+ }
19
+ const SwitchOn = styled(ToggleOn) `
20
+ color: ${(props) => props.theme.colors.primary};
21
+ `;
22
+ function getSwitchIcon(row) {
23
+ return row.active ? SwitchOn : ToggleOff;
24
+ }
25
+ export const Actions = {
26
+ COPY: { icon: Copy, id: Action.COPY, label: 'Copy' },
27
+ DELETE: { icon: Trash, id: Action.DELETE, label: 'Delete' },
28
+ SELECT: { getIcon: getSelectIcon, id: Action.SELECT, label: 'Select Row' },
29
+ SELECT_ALL: { id: Action.SELECT_ALL, label: 'Select All Rows' },
30
+ SWITCH: { getIcon: getSwitchIcon, id: Action.SWITCH, label: 'Switch On/Off' },
31
+ UNSELECT_ALL: { id: Action.UNSELECT_ALL, label: 'Unselect All Rows' },
32
+ };
33
+ const ActionWrapper = styled.div `
34
+ display: flex;
35
+ align-items: center;
36
+ justify-content: flex-end;
37
+
38
+ width: 100%;
39
+ padding: 0 1rem;
40
+
41
+ svg:not(:last-of-type) {
42
+ margin-right: 0.7rem;
43
+ }
44
+ `;
45
+ /**
46
+ * The action cell is used by the action column to render row actions such as delete on each row of a table
47
+ *
48
+ * @param {ActionCellProps} props see interface for details
49
+ */
50
+ export function ActionCell(props) {
51
+ if (!props.column.actions) {
52
+ throw new Error('Must pass an array of actions to the column def when using the ActionCell');
53
+ }
54
+ return (_jsx(ActionWrapper, { className: "table-action-cell", children: props.column.actions.map((action) => {
55
+ const Icon = action.getIcon ? action.getIcon(props.row.original) : action.icon;
56
+ if (Icon === undefined) {
57
+ return;
58
+ }
59
+ const label = action.getLabel ? action.getLabel(props.row.original) : action.label;
60
+ const onClick = (e) => {
61
+ var _a;
62
+ e.stopPropagation();
63
+ (_a = props.onAction) === null || _a === void 0 ? void 0 : _a.call(props, action.id, props.row.original);
64
+ };
65
+ return _jsx(Icon, { asButton: true, onClick: onClick, title: label }, action.label);
66
+ }) }));
67
+ }
68
+ //# sourceMappingURL=action-cell.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"action-cell.js","sourceRoot":"","sources":["../../../src/table/cells/action-cell.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /** Interface is very loose because react table basically lets anything go through here */
2
+ interface DateCellProps {
3
+ value: any;
4
+ }
5
+ /**
6
+ * A date formatting cell that will accept native JS date objects and render them according to a string format
7
+ *
8
+ * @param fmt the date format to render the Date as
9
+ */
10
+ declare function DatetimeCell(fmt?: string): (props: DateCellProps) => string;
11
+ export default DatetimeCell;
12
+ //# sourceMappingURL=datetime-cell.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"datetime-cell.d.ts","sourceRoot":"","sources":["../../../src/table/cells/datetime-cell.tsx"],"names":[],"mappings":"AAkBA,0FAA0F;AAC1F,UAAU,aAAa;IACnB,KAAK,EAAE,GAAG,CAAC;CACd;AAED;;;;GAIG;AACH,iBAAS,YAAY,CAAC,GAAG,SAAqB,GAAG,CAAC,KAAK,EAAE,aAAa,KAAK,MAAM,CAahF;AAED,eAAe,YAAY,CAAC"}
@@ -0,0 +1,36 @@
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 { format, parseISO } from 'date-fns';
18
+ /**
19
+ * A date formatting cell that will accept native JS date objects and render them according to a string format
20
+ *
21
+ * @param fmt the date format to render the Date as
22
+ */
23
+ function DatetimeCell(fmt = 'yyyy-MM-dd HH:mm') {
24
+ return ({ value }) => {
25
+ if (!value) {
26
+ return '';
27
+ }
28
+ const parsed = parseISO(value);
29
+ if (Number.isNaN(parsed.getTime())) {
30
+ return '';
31
+ }
32
+ return format(parsed, fmt);
33
+ };
34
+ }
35
+ export default DatetimeCell;
36
+ //# sourceMappingURL=datetime-cell.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"datetime-cell.js","sourceRoot":"","sources":["../../../src/table/cells/datetime-cell.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAO5C;;;;GAIG;AACH,SAAS,YAAY,CAAC,GAAG,GAAG,kBAAkB;IAC1C,OAAO,CAAC,EAAE,KAAK,EAAiB,EAAU,EAAE;QACxC,IAAI,CAAC,KAAK,EAAE,CAAC;YACT,OAAO,EAAE,CAAC;QACd,CAAC;QAED,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC/B,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;YACjC,OAAO,EAAE,CAAC;QACd,CAAC;QAED,OAAO,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC/B,CAAC,CAAC;AACN,CAAC;AAED,eAAe,YAAY,CAAC"}
@@ -0,0 +1,32 @@
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
+ /** Interface is very loose because react table basically lets anything go through here */
19
+ export interface EditCellProps<T> {
20
+ cell: any;
21
+ column: any;
22
+ currentEditCell?: [number, string | number];
23
+ data: any;
24
+ onAction: (actionId: string, row: any) => void | Promise<void>;
25
+ onChange: (value: T, rowIdx: number, colId: string) => void | Promise<void>;
26
+ onStartEdit: (e?: React.SyntheticEvent<HTMLSpanElement>) => void | Promise<void>;
27
+ onStopEdit: () => void | Promise<void>;
28
+ row: any;
29
+ rowIdx: number;
30
+ value: any;
31
+ }
32
+ //# sourceMappingURL=edit-cell-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"edit-cell-utils.d.ts","sourceRoot":"","sources":["../../../src/table/cells/edit-cell-utils.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,0FAA0F;AAC1F,MAAM,WAAW,aAAa,CAAC,CAAC;IAC5B,IAAI,EAAE,GAAG,CAAC;IACV,MAAM,EAAE,GAAG,CAAC;IACZ,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;IAC5C,IAAI,EAAE,GAAG,CAAC;IACV,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/D,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5E,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,eAAe,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjF,UAAU,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC,GAAG,EAAE,GAAG,CAAC;IACT,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,GAAG,CAAC;CACd"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=edit-cell-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"edit-cell-utils.js","sourceRoot":"","sources":["../../../src/table/cells/edit-cell-utils.tsx"],"names":[],"mappings":""}
@@ -0,0 +1,10 @@
1
+ import { EditCellProps } from './edit-cell-utils';
2
+ /**
3
+ * The edit input cell can be used to make all the cells of a particular column editable with an input field. When using
4
+ * an editable cell then an onChange handler should be added to the main table component as well to listen for any
5
+ * updates. The onChange handler will be called with the value, row index and column id, but it will not update the data
6
+ * for you. You need to update the data and pass it back in to the component.
7
+ */
8
+ declare function EditInputCell(): (props: EditCellProps<string>) => JSX.Element;
9
+ export default EditInputCell;
10
+ //# sourceMappingURL=edit-input-cell.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"edit-input-cell.d.ts","sourceRoot":"","sources":["../../../src/table/cells/edit-input-cell.tsx"],"names":[],"mappings":"AAsBA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAelD;;;;;GAKG;AACH,iBAAS,aAAa,IAAI,CAAC,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,OAAO,CAuCtE;AAED,eAAe,aAAa,CAAC"}
@@ -0,0 +1,61 @@
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 isEqual from 'lodash/isEqual';
19
+ import { useEffect, useState } from 'react';
20
+ import styled from '@darajs/styled-components';
21
+ import Input from '../../input/input';
22
+ const InputWrapper = styled.div `
23
+ display: flex;
24
+ width: calc(100% + 22px);
25
+ margin: 0 -1rem;
26
+ `;
27
+ const ValueWrapper = styled.span `
28
+ display: flex;
29
+ flex: 1 1 auto;
30
+ align-items: center;
31
+ height: 100%;
32
+ `;
33
+ /**
34
+ * The edit input cell can be used to make all the cells of a particular column editable with an input field. When using
35
+ * an editable cell then an onChange handler should be added to the main table component as well to listen for any
36
+ * updates. The onChange handler will be called with the value, row index and column id, but it will not update the data
37
+ * for you. You need to update the data and pass it back in to the component.
38
+ */
39
+ function EditInputCell() {
40
+ return function InputCell(props) {
41
+ const [value, setValue] = useState(props.value);
42
+ useEffect(() => {
43
+ setValue(props.value);
44
+ }, [props.value]);
45
+ if (isEqual(props.currentEditCell, [props.rowIdx, props.column.id])) {
46
+ const onComplete = () => {
47
+ if (props.onChange && value !== props.value) {
48
+ props.onChange(value, props.rowIdx, props.column.id);
49
+ }
50
+ props.onStopEdit();
51
+ };
52
+ const onChange = (val) => {
53
+ setValue(val);
54
+ };
55
+ return (_jsx(InputWrapper, { children: _jsx(Input, { autoFocus: true, initialValue: props.value, onBlur: onComplete, onChange: onChange, onComplete: onComplete, style: { maxWidth: '100%' } }) }));
56
+ }
57
+ return (_jsx(ValueWrapper, { "data-cell": [props.rowIdx, props.column.id], onClick: props.onStartEdit, children: props.value }));
58
+ };
59
+ }
60
+ export default EditInputCell;
61
+ //# sourceMappingURL=edit-input-cell.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"edit-input-cell.js","sourceRoot":"","sources":["../../../src/table/cells/edit-input-cell.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,OAAO,MAAM,gBAAgB,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAE5C,OAAO,MAAM,MAAM,2BAA2B,CAAC;AAE/C,OAAO,KAAK,MAAM,mBAAmB,CAAC;AAGtC,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAA;;;;CAI9B,CAAC;AAEF,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAA;;;;;CAK/B,CAAC;AAEF;;;;;GAKG;AACH,SAAS,aAAa;IAClB,OAAO,SAAS,SAAS,CAAC,KAA4B;QAClD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAChD,SAAS,CAAC,GAAG,EAAE;YACX,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QAElB,IAAI,OAAO,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;YAClE,MAAM,UAAU,GAAG,GAAS,EAAE;gBAC1B,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,KAAK,KAAK,CAAC,KAAK,EAAE,CAAC;oBAC1C,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBACzD,CAAC;gBACD,KAAK,CAAC,UAAU,EAAE,CAAC;YACvB,CAAC,CAAC;YAEF,MAAM,QAAQ,GAAG,CAAC,GAAW,EAAQ,EAAE;gBACnC,QAAQ,CAAC,GAAG,CAAC,CAAC;YAClB,CAAC,CAAC;YAEF,OAAO,CACH,KAAC,YAAY,cACT,KAAC,KAAK,IACF,SAAS,QACT,YAAY,EAAE,KAAK,CAAC,KAAK,EACzB,MAAM,EAAE,UAAU,EAClB,QAAQ,EAAE,QAAQ,EAClB,UAAU,EAAE,UAAU,EACtB,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,GAC7B,GACS,CAClB,CAAC;QACN,CAAC;QAED,OAAO,CACH,KAAC,YAAY,iBAAY,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,WAAW,YAC/E,KAAK,CAAC,KAAK,GACD,CAClB,CAAC;IACN,CAAC,CAAC;AACN,CAAC;AAED,eAAe,aAAa,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { Item } from '../../types';
2
+ import { EditCellProps } from './edit-cell-utils';
3
+ /**
4
+ * The edit select cell can be used to make all the cells of a particular column editable with a select field to
5
+ * constrain the options you can choose from. When using an editable cell then an onChange handler should be added to
6
+ * the main table component as well to listen for any updates. The onChange handler will be called with the value, row
7
+ * index and column id, but it will not update the data for you. You need to update the data and pass it back in to the
8
+ * component.
9
+ */
10
+ declare function EditSelectCell<T extends Item>(items: Array<T>): (props: EditCellProps<T>) => JSX.Element;
11
+ export default EditSelectCell;
12
+ //# sourceMappingURL=edit-select-cell.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"edit-select-cell.d.ts","sourceRoot":"","sources":["../../../src/table/cells/edit-select-cell.tsx"],"names":[],"mappings":"AAqBA,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAelD;;;;;;GAMG;AACH,iBAAS,cAAc,CAAC,CAAC,SAAS,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,OAAO,CA+BjG;AAED,eAAe,cAAc,CAAC"}
@@ -0,0 +1,55 @@
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 isEqual from 'lodash/isEqual';
19
+ import styled from '@darajs/styled-components';
20
+ import Select from '../../select/select';
21
+ const SelectWrapper = styled.div `
22
+ display: flex;
23
+ width: calc(100% + 22px);
24
+ margin: 0 -1rem;
25
+ `;
26
+ const ValueWrapper = styled.span `
27
+ display: flex;
28
+ flex: 1 1 auto;
29
+ align-items: center;
30
+ height: 100%;
31
+ `;
32
+ /**
33
+ * The edit select cell can be used to make all the cells of a particular column editable with a select field to
34
+ * constrain the options you can choose from. When using an editable cell then an onChange handler should be added to
35
+ * the main table component as well to listen for any updates. The onChange handler will be called with the value, row
36
+ * index and column id, but it will not update the data for you. You need to update the data and pass it back in to the
37
+ * component.
38
+ */
39
+ function EditSelectCell(items) {
40
+ return function SelectCell(props) {
41
+ const selectedItem = items.find((item) => item.value === props.value);
42
+ if (isEqual(props.currentEditCell, [props.rowIdx, props.column.id])) {
43
+ const onSelect = (item) => {
44
+ if (props.onChange && item.value !== props.value) {
45
+ props.onChange(item.value, props.rowIdx, props.column.id);
46
+ }
47
+ props.onStopEdit();
48
+ };
49
+ return (_jsx(SelectWrapper, { children: _jsx(Select, { initialIsOpen: true, initialValue: selectedItem, items: items, onSelect: onSelect, style: { flex: '1 1 auto' } }) }));
50
+ }
51
+ return (_jsx(ValueWrapper, { "data-cell": [props.rowIdx, props.column.id], onClick: props.onStartEdit, children: selectedItem ? selectedItem.label : '' }));
52
+ };
53
+ }
54
+ export default EditSelectCell;
55
+ //# sourceMappingURL=edit-select-cell.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"edit-select-cell.js","sourceRoot":"","sources":["../../../src/table/cells/edit-select-cell.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,OAAO,MAAM,gBAAgB,CAAC;AAErC,OAAO,MAAM,MAAM,2BAA2B,CAAC;AAE/C,OAAO,MAAM,MAAM,qBAAqB,CAAC;AAIzC,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,CAAA;;;;CAI/B,CAAC;AAEF,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAA;;;;;CAK/B,CAAC;AAEF;;;;;;GAMG;AACH,SAAS,cAAc,CAAiB,KAAe;IACnD,OAAO,SAAS,UAAU,CAAC,KAAuB;QAC9C,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC,CAAC;QAEtE,IAAI,OAAO,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;YAClE,MAAM,QAAQ,GAAG,CAAC,IAAU,EAAQ,EAAE;gBAClC,IAAI,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,EAAE,CAAC;oBAC/C,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBAC9D,CAAC;gBACD,KAAK,CAAC,UAAU,EAAE,CAAC;YACvB,CAAC,CAAC;YAEF,OAAO,CACH,KAAC,aAAa,cACV,KAAC,MAAM,IACH,aAAa,QACb,YAAY,EAAE,YAAY,EAC1B,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,GAC7B,GACU,CACnB,CAAC;QACN,CAAC;QAED,OAAO,CACH,KAAC,YAAY,iBAAY,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,WAAW,YAC/E,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAC5B,CAClB,CAAC;IACN,CAAC,CAAC;AACN,CAAC;AAED,eAAe,cAAc,CAAC"}
@@ -0,0 +1,46 @@
1
+ import { FilterProps, HeaderGroup, Row } from 'react-table';
2
+ import { FilterResults as DatetimeFilterResults } from '../filter/datetime-filter';
3
+ import { FilterResults as NumericFilterResults } from '../filter/numeric-filter';
4
+ import { Item } from '../types';
5
+ interface HeaderIconWrapperProp {
6
+ hasFilter?: boolean;
7
+ }
8
+ export declare const HeaderIconWrapper: import("styled-components").StyledComponent<"div", import("@darajs/styled-components").DefaultTheme, HeaderIconWrapperProp, never>;
9
+ /**
10
+ * Custom numeric filter function
11
+ *
12
+ * @param rows rows to filter
13
+ * @param columnIds IDs of columns
14
+ * @param filterValue filter value provided
15
+ */
16
+ export declare function numeric(rows: Array<Row>, columnIds: Array<string>, filterValue: NumericFilterResults): Array<Row>;
17
+ /**
18
+ * Custom datetime filter function
19
+ *
20
+ * @param rows rows to filter
21
+ * @param columnIds IDs of columns
22
+ * @param filterValue filter value
23
+ */
24
+ export declare function datetime(rows: Array<Row>, columnIds: Array<string>, filterValue: DatetimeFilterResults): Array<Row>;
25
+ /**
26
+ * Custom categorical filter function
27
+ *
28
+ * @param rows rows to filter
29
+ * @param columnIds IDs of columns
30
+ * @param filterItems filter value
31
+ */
32
+ export declare function categorical(rows: Array<Row>, columnIds: Array<string>, filterItems: Item[]): Array<Row>;
33
+ /**
34
+ * Text Filter component
35
+ */
36
+ export declare function TextFilter(props: FilterProps<any>): JSX.Element;
37
+ interface ColumnFilterProps extends HeaderGroup {
38
+ /** Optional prop passed to column defining uniqueItems that categorical filter should search for */
39
+ uniqueItems?: Array<string>;
40
+ }
41
+ export interface FilterContainerProps {
42
+ col: ColumnFilterProps;
43
+ }
44
+ export declare function FilterContainer(props: FilterContainerProps): JSX.Element;
45
+ export {};
46
+ //# sourceMappingURL=filters.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filters.d.ts","sourceRoot":"","sources":["../../src/table/filters.tsx"],"names":[],"mappings":"AAqBA,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAK5D,OAAO,EAAE,aAAa,IAAI,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AACnF,OAAO,EAAE,aAAa,IAAI,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAEjF,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAOhC,UAAU,qBAAqB;IAC3B,SAAS,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,eAAO,MAAM,iBAAiB,oIAqB7B,CAAC;AAyGF;;;;;;GAMG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,oBAAoB,GAAG,KAAK,CAAC,GAAG,CAAC,CAUjH;AAED;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,qBAAqB,GAAG,KAAK,CAAC,GAAG,CAAC,CAUnH;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,CAUvG;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,WAAW,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,OAAO,CAU/D;AAED,UAAU,iBAAkB,SAAQ,WAAW;IAC3C,oGAAoG;IACpG,WAAW,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;CAC/B;AAED,MAAM,WAAW,oBAAoB;IACjC,GAAG,EAAE,iBAAiB,CAAC;CAC1B;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,oBAAoB,GAAG,GAAG,CAAC,OAAO,CA+CxE"}