@xanui/ui 1.1.37 → 1.1.40

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 (310) hide show
  1. package/Accordion/index.cjs +96 -0
  2. package/Accordion/index.cjs.map +1 -0
  3. package/Accordion/index.js +19 -21
  4. package/Accordion/index.js.map +1 -1
  5. package/Alert/index.cjs +121 -0
  6. package/Alert/index.cjs.map +1 -0
  7. package/Alert/index.js +33 -35
  8. package/Alert/index.js.map +1 -1
  9. package/Autocomplete/index.cjs +136 -0
  10. package/Autocomplete/index.cjs.map +1 -0
  11. package/Autocomplete/index.js +23 -25
  12. package/Autocomplete/index.js.map +1 -1
  13. package/Avatar/index.cjs +50 -0
  14. package/Avatar/index.cjs.map +1 -0
  15. package/Avatar/index.js +15 -17
  16. package/Avatar/index.js.map +1 -1
  17. package/Badge/index.cjs +109 -0
  18. package/Badge/index.cjs.map +1 -0
  19. package/Badge/index.js +12 -14
  20. package/Badge/index.js.map +1 -1
  21. package/Box/index.cjs +14 -0
  22. package/Box/index.cjs.map +1 -0
  23. package/Box/index.js +7 -9
  24. package/Box/index.js.map +1 -1
  25. package/Button/index.cjs +94 -0
  26. package/Button/index.cjs.map +1 -0
  27. package/Button/index.js +17 -19
  28. package/Button/index.js.map +1 -1
  29. package/ButtonGroup/index.cjs +58 -0
  30. package/ButtonGroup/index.cjs.map +1 -0
  31. package/ButtonGroup/index.js +12 -14
  32. package/ButtonGroup/index.js.map +1 -1
  33. package/Calendar/index.cjs +174 -0
  34. package/Calendar/index.cjs.map +1 -0
  35. package/Calendar/index.js +39 -41
  36. package/Calendar/index.js.map +1 -1
  37. package/CalendarInput/index.cjs +34 -0
  38. package/CalendarInput/index.cjs.map +1 -0
  39. package/CalendarInput/index.js +19 -21
  40. package/CalendarInput/index.js.map +1 -1
  41. package/Checkbox/index.cjs +58 -0
  42. package/Checkbox/index.cjs.map +1 -0
  43. package/Checkbox/index.js +14 -16
  44. package/Checkbox/index.js.map +1 -1
  45. package/Chip/index.cjs +76 -0
  46. package/Chip/index.cjs.map +1 -0
  47. package/Chip/index.js +12 -14
  48. package/Chip/index.js.map +1 -1
  49. package/CircleProgress/index.cjs +129 -0
  50. package/CircleProgress/index.cjs.map +1 -0
  51. package/CircleProgress/index.js +13 -15
  52. package/CircleProgress/index.js.map +1 -1
  53. package/ClickOutside/index.cjs +37 -0
  54. package/ClickOutside/index.cjs.map +1 -0
  55. package/ClickOutside/index.js +9 -11
  56. package/ClickOutside/index.js.map +1 -1
  57. package/Collaps/index.cjs +26 -0
  58. package/Collaps/index.cjs.map +1 -0
  59. package/Collaps/index.js +9 -11
  60. package/Collaps/index.js.map +1 -1
  61. package/Container/index.cjs +29 -0
  62. package/Container/index.cjs.map +1 -0
  63. package/Container/index.js +9 -11
  64. package/Container/index.js.map +1 -1
  65. package/DataFilter/index.cjs +78 -0
  66. package/DataFilter/index.cjs.map +1 -0
  67. package/DataFilter/index.js +30 -41
  68. package/DataFilter/index.js.map +1 -1
  69. package/DataFilter/options/DateFilter.cjs +32 -0
  70. package/DataFilter/options/DateFilter.cjs.map +1 -0
  71. package/DataFilter/options/DateFilter.js +16 -18
  72. package/DataFilter/options/DateFilter.js.map +1 -1
  73. package/DataFilter/options/DateRangeFilter.cjs +27 -0
  74. package/DataFilter/options/DateRangeFilter.cjs.map +1 -0
  75. package/DataFilter/options/DateRangeFilter.js +12 -14
  76. package/DataFilter/options/DateRangeFilter.js.map +1 -1
  77. package/DataFilter/options/MultiSelectFilter.cjs +38 -0
  78. package/DataFilter/options/MultiSelectFilter.cjs.map +1 -0
  79. package/DataFilter/options/MultiSelectFilter.js +20 -22
  80. package/DataFilter/options/MultiSelectFilter.js.map +1 -1
  81. package/DataFilter/options/NumberFilter.cjs +24 -0
  82. package/DataFilter/options/NumberFilter.cjs.map +1 -0
  83. package/DataFilter/options/NumberFilter.js +11 -13
  84. package/DataFilter/options/NumberFilter.js.map +1 -1
  85. package/DataFilter/options/NumberRangeFilter.cjs +29 -0
  86. package/DataFilter/options/NumberRangeFilter.cjs.map +1 -0
  87. package/DataFilter/options/NumberRangeFilter.js +12 -14
  88. package/DataFilter/options/NumberRangeFilter.js.map +1 -1
  89. package/DataFilter/options/SelectFilter.cjs +34 -0
  90. package/DataFilter/options/SelectFilter.cjs.map +1 -0
  91. package/DataFilter/options/SelectFilter.js +18 -20
  92. package/DataFilter/options/SelectFilter.js.map +1 -1
  93. package/DataFilter/options/TextFilter.cjs +24 -0
  94. package/DataFilter/options/TextFilter.cjs.map +1 -0
  95. package/DataFilter/options/TextFilter.js +11 -13
  96. package/DataFilter/options/TextFilter.js.map +1 -1
  97. package/Datatable/FilterBox.cjs +39 -0
  98. package/Datatable/FilterBox.cjs.map +1 -0
  99. package/Datatable/FilterBox.js +21 -23
  100. package/Datatable/FilterBox.js.map +1 -1
  101. package/Datatable/Row.cjs +59 -0
  102. package/Datatable/Row.cjs.map +1 -0
  103. package/Datatable/Row.js +19 -21
  104. package/Datatable/Row.js.map +1 -1
  105. package/Datatable/SelectedBox.cjs +21 -0
  106. package/Datatable/SelectedBox.cjs.map +1 -0
  107. package/Datatable/SelectedBox.js +10 -12
  108. package/Datatable/SelectedBox.js.map +1 -1
  109. package/Datatable/Table.cjs +23 -0
  110. package/Datatable/Table.cjs.map +1 -0
  111. package/Datatable/Table.js +8 -10
  112. package/Datatable/Table.js.map +1 -1
  113. package/Datatable/TableHead.cjs +61 -0
  114. package/Datatable/TableHead.cjs.map +1 -0
  115. package/Datatable/TableHead.js +18 -20
  116. package/Datatable/TableHead.js.map +1 -1
  117. package/Datatable/index.cjs +93 -0
  118. package/Datatable/index.cjs.map +1 -0
  119. package/Datatable/index.js +21 -23
  120. package/Datatable/index.js.map +1 -1
  121. package/Divider/index.cjs +31 -0
  122. package/Divider/index.cjs.map +1 -0
  123. package/Divider/index.js +8 -10
  124. package/Divider/index.js.map +1 -1
  125. package/Drawer/index.cjs +78 -0
  126. package/Drawer/index.cjs.map +1 -0
  127. package/Drawer/index.js +12 -14
  128. package/Drawer/index.js.map +1 -1
  129. package/Form/index.cjs +45 -0
  130. package/Form/index.cjs.map +1 -0
  131. package/Form/index.js +8 -10
  132. package/Form/index.js.map +1 -1
  133. package/GridContainer/index.cjs +19 -0
  134. package/GridContainer/index.cjs.map +1 -0
  135. package/GridContainer/index.js +7 -9
  136. package/GridContainer/index.js.map +1 -1
  137. package/GridItem/index.cjs +20 -0
  138. package/GridItem/index.cjs.map +1 -0
  139. package/GridItem/index.js +7 -9
  140. package/GridItem/index.js.map +1 -1
  141. package/IconButton/index.cjs +64 -0
  142. package/IconButton/index.cjs.map +1 -0
  143. package/IconButton/index.js +12 -14
  144. package/IconButton/index.js.map +1 -1
  145. package/Image/index.cjs +27 -0
  146. package/Image/index.cjs.map +1 -0
  147. package/Image/index.js +9 -11
  148. package/Image/index.js.map +1 -1
  149. package/Input/index.cjs +144 -0
  150. package/Input/index.cjs.map +1 -0
  151. package/Input/index.js +18 -20
  152. package/Input/index.js.map +1 -1
  153. package/InputNumber/index.cjs +32 -0
  154. package/InputNumber/index.cjs.map +1 -0
  155. package/InputNumber/index.js +6 -8
  156. package/InputNumber/index.js.map +1 -1
  157. package/Label/index.cjs +24 -0
  158. package/Label/index.cjs.map +1 -0
  159. package/Label/index.js +7 -9
  160. package/Label/index.js.map +1 -1
  161. package/Layer/index.cjs +62 -0
  162. package/Layer/index.cjs.map +1 -0
  163. package/Layer/index.js +19 -21
  164. package/Layer/index.js.map +1 -1
  165. package/LineProgress/index.cjs +59 -0
  166. package/LineProgress/index.cjs.map +1 -0
  167. package/LineProgress/index.js +11 -13
  168. package/LineProgress/index.js.map +1 -1
  169. package/List/ListContext.cjs +11 -0
  170. package/List/ListContext.cjs.map +1 -0
  171. package/List/ListContext.js +2 -5
  172. package/List/ListContext.js.map +1 -1
  173. package/List/index.cjs +63 -0
  174. package/List/index.cjs.map +1 -0
  175. package/List/index.js +12 -14
  176. package/List/index.js.map +1 -1
  177. package/ListItem/index.cjs +54 -0
  178. package/ListItem/index.cjs.map +1 -0
  179. package/ListItem/index.js +12 -14
  180. package/ListItem/index.js.map +1 -1
  181. package/LoadingBox/index.cjs +32 -0
  182. package/LoadingBox/index.cjs.map +1 -0
  183. package/LoadingBox/index.js +11 -13
  184. package/LoadingBox/index.js.map +1 -1
  185. package/Menu/index.cjs +150 -0
  186. package/Menu/index.cjs.map +1 -0
  187. package/Menu/index.js +18 -20
  188. package/Menu/index.js.map +1 -1
  189. package/Modal/index.cjs +59 -0
  190. package/Modal/index.cjs.map +1 -0
  191. package/Modal/index.js +15 -17
  192. package/Modal/index.js.map +1 -1
  193. package/NoSSR/index.cjs +15 -0
  194. package/NoSSR/index.cjs.map +1 -0
  195. package/NoSSR/index.js +4 -6
  196. package/NoSSR/index.js.map +1 -1
  197. package/Option/index.cjs +14 -0
  198. package/Option/index.cjs.map +1 -0
  199. package/Option/index.js +7 -9
  200. package/Option/index.js.map +1 -1
  201. package/Paper/index.cjs +15 -0
  202. package/Paper/index.cjs.map +1 -0
  203. package/Paper/index.js +8 -10
  204. package/Paper/index.js.map +1 -1
  205. package/Portal/index.cjs +27 -0
  206. package/Portal/index.cjs.map +1 -0
  207. package/Portal/index.js +9 -11
  208. package/Portal/index.js.map +1 -1
  209. package/Radio/index.cjs +16 -0
  210. package/Radio/index.cjs.map +1 -0
  211. package/Radio/index.js +9 -11
  212. package/Radio/index.js.map +1 -1
  213. package/Scrollbar/index.cjs +59 -0
  214. package/Scrollbar/index.cjs.map +1 -0
  215. package/Scrollbar/index.js +10 -12
  216. package/Scrollbar/index.js.map +1 -1
  217. package/Select/index.cjs +59 -0
  218. package/Select/index.cjs.map +1 -0
  219. package/Select/index.js +22 -24
  220. package/Select/index.js.map +1 -1
  221. package/Skeleton/index.cjs +60 -0
  222. package/Skeleton/index.cjs.map +1 -0
  223. package/Skeleton/index.js +7 -9
  224. package/Skeleton/index.js.map +1 -1
  225. package/Stack/index.cjs +17 -0
  226. package/Stack/index.cjs.map +1 -0
  227. package/Stack/index.js +7 -9
  228. package/Stack/index.js.map +1 -1
  229. package/Switch/index.cjs +79 -0
  230. package/Switch/index.cjs.map +1 -0
  231. package/Switch/index.js +12 -14
  232. package/Switch/index.js.map +1 -1
  233. package/Tab/index.cjs +17 -0
  234. package/Tab/index.cjs.map +1 -0
  235. package/Tab/index.js +9 -11
  236. package/Tab/index.js.map +1 -1
  237. package/Table/index.cjs +88 -0
  238. package/Table/index.cjs.map +1 -0
  239. package/Table/index.js +13 -15
  240. package/Table/index.js.map +1 -1
  241. package/TableBody/index.cjs +14 -0
  242. package/TableBody/index.cjs.map +1 -0
  243. package/TableBody/index.js +7 -9
  244. package/TableBody/index.js.map +1 -1
  245. package/TableCell/index.cjs +14 -0
  246. package/TableCell/index.cjs.map +1 -0
  247. package/TableCell/index.js +7 -9
  248. package/TableCell/index.js.map +1 -1
  249. package/TableFooter/index.cjs +14 -0
  250. package/TableFooter/index.cjs.map +1 -0
  251. package/TableFooter/index.js +7 -9
  252. package/TableFooter/index.js.map +1 -1
  253. package/TableHead/index.cjs +14 -0
  254. package/TableHead/index.cjs.map +1 -0
  255. package/TableHead/index.js +7 -9
  256. package/TableHead/index.js.map +1 -1
  257. package/TablePagination/index.cjs +59 -0
  258. package/TablePagination/index.cjs.map +1 -0
  259. package/TablePagination/index.js +21 -23
  260. package/TablePagination/index.js.map +1 -1
  261. package/TableRow/index.cjs +14 -0
  262. package/TableRow/index.cjs.map +1 -0
  263. package/TableRow/index.js +7 -9
  264. package/TableRow/index.js.map +1 -1
  265. package/Tabs/index.cjs +201 -0
  266. package/Tabs/index.cjs.map +1 -0
  267. package/Tabs/index.js +19 -21
  268. package/Tabs/index.js.map +1 -1
  269. package/Text/index.cjs +25 -0
  270. package/Text/index.cjs.map +1 -0
  271. package/Text/index.js +8 -10
  272. package/Text/index.js.map +1 -1
  273. package/Toast/index.cjs +120 -0
  274. package/Toast/index.cjs.map +1 -0
  275. package/Toast/index.js +18 -20
  276. package/Toast/index.js.map +1 -1
  277. package/Tooltip/index.cjs +40 -0
  278. package/Tooltip/index.cjs.map +1 -0
  279. package/Tooltip/index.js +11 -13
  280. package/Tooltip/index.js.map +1 -1
  281. package/ViewBox/index.cjs +32 -0
  282. package/ViewBox/index.cjs.map +1 -0
  283. package/ViewBox/index.js +11 -13
  284. package/ViewBox/index.js.map +1 -1
  285. package/index.cjs +134 -0
  286. package/index.cjs.map +1 -0
  287. package/index.js +64 -133
  288. package/index.js.map +1 -1
  289. package/package.json +3 -3
  290. package/readme.md +4 -4
  291. package/useAlert/index.cjs +94 -0
  292. package/useAlert/index.cjs.map +1 -0
  293. package/useAlert/index.js +12 -14
  294. package/useAlert/index.js.map +1 -1
  295. package/useBlurCss/index.cjs +19 -0
  296. package/useBlurCss/index.cjs.map +1 -0
  297. package/useBlurCss/index.js +5 -7
  298. package/useBlurCss/index.js.map +1 -1
  299. package/useCorner/index.cjs +22 -0
  300. package/useCorner/index.cjs.map +1 -0
  301. package/useCorner/index.js +1 -3
  302. package/useCorner/index.js.map +1 -1
  303. package/useLayer/index.cjs +38 -0
  304. package/useLayer/index.cjs.map +1 -0
  305. package/useLayer/index.js +7 -9
  306. package/useLayer/index.js.map +1 -1
  307. package/useModal/index.cjs +37 -0
  308. package/useModal/index.cjs.map +1 -0
  309. package/useModal/index.js +8 -10
  310. package/useModal/index.js.map +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SelectFilter.cjs","sources":["../../../src/DataFilter/options/SelectFilter.tsx"],"sourcesContent":["\"use client\"\r\n\r\nimport React from \"react\";\r\nimport { DataFilterSelect } from \"../types\";\r\nimport Menu from \"../../Menu\";\r\nimport List from \"../../List\";\r\nimport ListItem from \"../../ListItem\";\r\nimport Checkbox from \"../../Checkbox\";\r\nimport IconButton from \"../../IconButton\";\r\nimport Stack from \"../../Stack\";\r\nimport Text from \"../../Text\";\r\nimport Close from \"@xanui/icons/Close\";\r\nimport Add from \"@xanui/icons/Add\";\r\nimport ClearAll from \"@xanui/icons/ClearAll\";\r\nimport Chip from \"../../Chip\";\r\n\r\n\r\ntype Props = {\r\n option: DataFilterSelect;\r\n value: string | null;\r\n onChange: (value: string | null) => void;\r\n}\r\n\r\nconst SelectFilter = ({ option, onChange, value }: Props) => {\r\n const ref: any = React.useRef(null)\r\n const [target, setTarget] = React.useState<HTMLElement | undefined>()\r\n return (\r\n <Stack\r\n width={\"100%\"}\r\n bgcolor=\"background.secondary\"\r\n p={1}\r\n radius={1}\r\n >\r\n <Stack\r\n direction=\"row\"\r\n alignItems=\"center\"\r\n justifyContent={\"space-between\"}\r\n gap={0.5}\r\n mb={value ? .5 : 0}\r\n >\r\n <Text>{option.label}</Text>\r\n <Stack\r\n direction=\"row\"\r\n gap={0.5}\r\n >\r\n <IconButton\r\n size=\"small\"\r\n variant=\"soft\"\r\n color={\"default\"}\r\n onClick={(e: any) => {\r\n setTarget(e.currentTarget)\r\n }}\r\n >\r\n <Add />\r\n </IconButton>\r\n {\r\n !!value && <IconButton\r\n size=\"small\"\r\n variant=\"soft\"\r\n color={\"danger\"}\r\n onClick={() => {\r\n onChange(null);\r\n }}\r\n >\r\n <ClearAll />\r\n </IconButton>\r\n }\r\n </Stack>\r\n </Stack>\r\n <Stack\r\n direction=\"row\"\r\n gap={0.5}\r\n flexWrap=\"wrap\"\r\n >\r\n {\r\n !!value && <Chip\r\n size=\"small\"\r\n color=\"default\"\r\n label={value}\r\n endIcon={<IconButton\r\n size={16}\r\n variant={\"text\"}\r\n color=\"default\"\r\n onClick={() => {\r\n onChange(null);\r\n }}\r\n >\r\n <Close />\r\n </IconButton>}\r\n />\r\n }\r\n </Stack>\r\n <Menu\r\n target={target}\r\n onClickOutside={() => setTarget(undefined)}\r\n placement={\"bottom-right\"}\r\n >\r\n <List width={ref?.current?.offsetWidth || 200} size=\"small\">\r\n {\r\n option.options.map((opt, index) => (\r\n <ListItem\r\n key={index}\r\n startIcon={<Checkbox checked={value === opt.value} />}\r\n onClick={() => {\r\n onChange(opt.value);\r\n }}\r\n >\r\n {opt.label}\r\n </ListItem>\r\n ))\r\n }\r\n </List>\r\n </Menu>\r\n </Stack>\r\n )\r\n}\r\n\r\nexport default SelectFilter"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAuBA;;;;AAGG;AAwBkB;AACH;;AAWG;;AAuBA;AAmBM;AACH;AAUxB;;"}
@@ -1,34 +1,32 @@
1
1
  "use client";
2
- 'use strict';
3
-
4
- var jsxRuntime = require('react/jsx-runtime');
5
- var React = require('react');
6
- var index$4 = require('../../Menu/index.js');
7
- var index$5 = require('../../List/index.js');
8
- var index$6 = require('../../ListItem/index.js');
9
- var index$7 = require('../../Checkbox/index.js');
10
- var index$2 = require('../../IconButton/index.js');
11
- var index = require('../../Stack/index.js');
12
- var index$1 = require('../../Text/index.js');
13
- var Close = require('@xanui/icons/Close');
14
- var Add = require('@xanui/icons/Add');
15
- var ClearAll = require('@xanui/icons/ClearAll');
16
- var index$3 = require('../../Chip/index.js');
2
+ import { jsxs, jsx } from 'react/jsx-runtime';
3
+ import React from 'react';
4
+ import Menu from '../../Menu/index.js';
5
+ import List from '../../List/index.js';
6
+ import ListItem from '../../ListItem/index.js';
7
+ import Checkbox from '../../Checkbox/index.js';
8
+ import IconButton from '../../IconButton/index.js';
9
+ import Stack from '../../Stack/index.js';
10
+ import Text from '../../Text/index.js';
11
+ import Close from '@xanui/icons/Close';
12
+ import Add from '@xanui/icons/Add';
13
+ import ClearAll from '@xanui/icons/ClearAll';
14
+ import Chip from '../../Chip/index.js';
17
15
 
18
16
  const SelectFilter = ({ option, onChange, value }) => {
19
17
  var _a;
20
18
  const ref = React.useRef(null);
21
19
  const [target, setTarget] = React.useState();
22
- return (jsxRuntime.jsxs(index, { width: "100%", bgcolor: "background.secondary", p: 1, radius: 1, children: [jsxRuntime.jsxs(index, { direction: "row", alignItems: "center", justifyContent: "space-between", gap: 0.5, mb: value ? .5 : 0, children: [jsxRuntime.jsx(index$1, { children: option.label }), jsxRuntime.jsxs(index, { direction: "row", gap: 0.5, children: [jsxRuntime.jsx(index$2, { size: "small", variant: "soft", color: "default", onClick: (e) => {
20
+ return (jsxs(Stack, { width: "100%", bgcolor: "background.secondary", p: 1, radius: 1, children: [jsxs(Stack, { direction: "row", alignItems: "center", justifyContent: "space-between", gap: 0.5, mb: value ? .5 : 0, children: [jsx(Text, { children: option.label }), jsxs(Stack, { direction: "row", gap: 0.5, children: [jsx(IconButton, { size: "small", variant: "soft", color: "default", onClick: (e) => {
23
21
  setTarget(e.currentTarget);
24
- }, children: jsxRuntime.jsx(Add, {}) }), !!value && jsxRuntime.jsx(index$2, { size: "small", variant: "soft", color: "danger", onClick: () => {
22
+ }, children: jsx(Add, {}) }), !!value && jsx(IconButton, { size: "small", variant: "soft", color: "danger", onClick: () => {
25
23
  onChange(null);
26
- }, children: jsxRuntime.jsx(ClearAll, {}) })] })] }), jsxRuntime.jsx(index, { direction: "row", gap: 0.5, flexWrap: "wrap", children: !!value && jsxRuntime.jsx(index$3, { size: "small", color: "default", label: value, endIcon: jsxRuntime.jsx(index$2, { size: 16, variant: "text", color: "default", onClick: () => {
24
+ }, children: jsx(ClearAll, {}) })] })] }), jsx(Stack, { direction: "row", gap: 0.5, flexWrap: "wrap", children: !!value && jsx(Chip, { size: "small", color: "default", label: value, endIcon: jsx(IconButton, { size: 16, variant: "text", color: "default", onClick: () => {
27
25
  onChange(null);
28
- }, children: jsxRuntime.jsx(Close, {}) }) }) }), jsxRuntime.jsx(index$4, { target: target, onClickOutside: () => setTarget(undefined), placement: "bottom-right", children: jsxRuntime.jsx(index$5, { width: ((_a = ref === null || ref === void 0 ? void 0 : ref.current) === null || _a === void 0 ? void 0 : _a.offsetWidth) || 200, size: "small", children: option.options.map((opt, index) => (jsxRuntime.jsx(index$6, { startIcon: jsxRuntime.jsx(index$7, { checked: value === opt.value }), onClick: () => {
26
+ }, children: jsx(Close, {}) }) }) }), jsx(Menu, { target: target, onClickOutside: () => setTarget(undefined), placement: "bottom-right", children: jsx(List, { width: ((_a = ref === null || ref === void 0 ? void 0 : ref.current) === null || _a === void 0 ? void 0 : _a.offsetWidth) || 200, size: "small", children: option.options.map((opt, index) => (jsx(ListItem, { startIcon: jsx(Checkbox, { checked: value === opt.value }), onClick: () => {
29
27
  onChange(opt.value);
30
28
  }, children: opt.label }, index))) }) })] }));
31
29
  };
32
30
 
33
- module.exports = SelectFilter;
31
+ export { SelectFilter as default };
34
32
  //# sourceMappingURL=SelectFilter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SelectFilter.js","sources":["../../../src/DataFilter/options/SelectFilter.tsx"],"sourcesContent":["\"use client\"\r\n\r\nimport React from \"react\";\r\nimport { DataFilterSelect } from \"../types\";\r\nimport Menu from \"../../Menu\";\r\nimport List from \"../../List\";\r\nimport ListItem from \"../../ListItem\";\r\nimport Checkbox from \"../../Checkbox\";\r\nimport IconButton from \"../../IconButton\";\r\nimport Stack from \"../../Stack\";\r\nimport Text from \"../../Text\";\r\nimport Close from \"@xanui/icons/Close\";\r\nimport Add from \"@xanui/icons/Add\";\r\nimport ClearAll from \"@xanui/icons/ClearAll\";\r\nimport Chip from \"../../Chip\";\r\n\r\n\r\ntype Props = {\r\n option: DataFilterSelect;\r\n value: string | null;\r\n onChange: (value: string | null) => void;\r\n}\r\n\r\nconst SelectFilter = ({ option, onChange, value }: Props) => {\r\n const ref: any = React.useRef(null)\r\n const [target, setTarget] = React.useState<HTMLElement | undefined>()\r\n return (\r\n <Stack\r\n width={\"100%\"}\r\n bgcolor=\"background.secondary\"\r\n p={1}\r\n radius={1}\r\n >\r\n <Stack\r\n direction=\"row\"\r\n alignItems=\"center\"\r\n justifyContent={\"space-between\"}\r\n gap={0.5}\r\n mb={value ? .5 : 0}\r\n >\r\n <Text>{option.label}</Text>\r\n <Stack\r\n direction=\"row\"\r\n gap={0.5}\r\n >\r\n <IconButton\r\n size=\"small\"\r\n variant=\"soft\"\r\n color={\"default\"}\r\n onClick={(e: any) => {\r\n setTarget(e.currentTarget)\r\n }}\r\n >\r\n <Add />\r\n </IconButton>\r\n {\r\n !!value && <IconButton\r\n size=\"small\"\r\n variant=\"soft\"\r\n color={\"danger\"}\r\n onClick={() => {\r\n onChange(null);\r\n }}\r\n >\r\n <ClearAll />\r\n </IconButton>\r\n }\r\n </Stack>\r\n </Stack>\r\n <Stack\r\n direction=\"row\"\r\n gap={0.5}\r\n flexWrap=\"wrap\"\r\n >\r\n {\r\n !!value && <Chip\r\n size=\"small\"\r\n color=\"default\"\r\n label={value}\r\n endIcon={<IconButton\r\n size={16}\r\n variant={\"text\"}\r\n color=\"default\"\r\n onClick={() => {\r\n onChange(null);\r\n }}\r\n >\r\n <Close />\r\n </IconButton>}\r\n />\r\n }\r\n </Stack>\r\n <Menu\r\n target={target}\r\n onClickOutside={() => setTarget(undefined)}\r\n placement={\"bottom-right\"}\r\n >\r\n <List width={ref?.current?.offsetWidth || 200} size=\"small\">\r\n {\r\n option.options.map((opt, index) => (\r\n <ListItem\r\n key={index}\r\n startIcon={<Checkbox checked={value === opt.value} />}\r\n onClick={() => {\r\n onChange(opt.value);\r\n }}\r\n >\r\n {opt.label}\r\n </ListItem>\r\n ))\r\n }\r\n </List>\r\n </Menu>\r\n </Stack>\r\n )\r\n}\r\n\r\nexport default SelectFilter"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAuBA;;;;AAGG;AAwBkB;AACH;;AAWG;;AAuBA;AAmBM;AACH;AAUxB;;"}
1
+ {"version":3,"file":"SelectFilter.js","sources":["../../../src/DataFilter/options/SelectFilter.tsx"],"sourcesContent":["\"use client\"\r\n\r\nimport React from \"react\";\r\nimport { DataFilterSelect } from \"../types\";\r\nimport Menu from \"../../Menu\";\r\nimport List from \"../../List\";\r\nimport ListItem from \"../../ListItem\";\r\nimport Checkbox from \"../../Checkbox\";\r\nimport IconButton from \"../../IconButton\";\r\nimport Stack from \"../../Stack\";\r\nimport Text from \"../../Text\";\r\nimport Close from \"@xanui/icons/Close\";\r\nimport Add from \"@xanui/icons/Add\";\r\nimport ClearAll from \"@xanui/icons/ClearAll\";\r\nimport Chip from \"../../Chip\";\r\n\r\n\r\ntype Props = {\r\n option: DataFilterSelect;\r\n value: string | null;\r\n onChange: (value: string | null) => void;\r\n}\r\n\r\nconst SelectFilter = ({ option, onChange, value }: Props) => {\r\n const ref: any = React.useRef(null)\r\n const [target, setTarget] = React.useState<HTMLElement | undefined>()\r\n return (\r\n <Stack\r\n width={\"100%\"}\r\n bgcolor=\"background.secondary\"\r\n p={1}\r\n radius={1}\r\n >\r\n <Stack\r\n direction=\"row\"\r\n alignItems=\"center\"\r\n justifyContent={\"space-between\"}\r\n gap={0.5}\r\n mb={value ? .5 : 0}\r\n >\r\n <Text>{option.label}</Text>\r\n <Stack\r\n direction=\"row\"\r\n gap={0.5}\r\n >\r\n <IconButton\r\n size=\"small\"\r\n variant=\"soft\"\r\n color={\"default\"}\r\n onClick={(e: any) => {\r\n setTarget(e.currentTarget)\r\n }}\r\n >\r\n <Add />\r\n </IconButton>\r\n {\r\n !!value && <IconButton\r\n size=\"small\"\r\n variant=\"soft\"\r\n color={\"danger\"}\r\n onClick={() => {\r\n onChange(null);\r\n }}\r\n >\r\n <ClearAll />\r\n </IconButton>\r\n }\r\n </Stack>\r\n </Stack>\r\n <Stack\r\n direction=\"row\"\r\n gap={0.5}\r\n flexWrap=\"wrap\"\r\n >\r\n {\r\n !!value && <Chip\r\n size=\"small\"\r\n color=\"default\"\r\n label={value}\r\n endIcon={<IconButton\r\n size={16}\r\n variant={\"text\"}\r\n color=\"default\"\r\n onClick={() => {\r\n onChange(null);\r\n }}\r\n >\r\n <Close />\r\n </IconButton>}\r\n />\r\n }\r\n </Stack>\r\n <Menu\r\n target={target}\r\n onClickOutside={() => setTarget(undefined)}\r\n placement={\"bottom-right\"}\r\n >\r\n <List width={ref?.current?.offsetWidth || 200} size=\"small\">\r\n {\r\n option.options.map((opt, index) => (\r\n <ListItem\r\n key={index}\r\n startIcon={<Checkbox checked={value === opt.value} />}\r\n onClick={() => {\r\n onChange(opt.value);\r\n }}\r\n >\r\n {opt.label}\r\n </ListItem>\r\n ))\r\n }\r\n </List>\r\n </Menu>\r\n </Stack>\r\n )\r\n}\r\n\r\nexport default SelectFilter"],"names":[],"mappings":";;;;;;;;;;;;;;;AAuBA;;;;AAGG;AAwBkB;AACH;;AAWG;;AAuBA;AAmBM;AACH;AAUxB;;"}
@@ -0,0 +1,24 @@
1
+ "use client";
2
+ 'use strict';
3
+
4
+ var jsxRuntime = require('react/jsx-runtime');
5
+ var index$2 = require('../../IconButton/index.cjs');
6
+ var index = require('../../Stack/index.cjs');
7
+ var index$1 = require('../../Text/index.cjs');
8
+ var Add = require('@xanui/icons/Add');
9
+ var ClearAll = require('@xanui/icons/ClearAll');
10
+ var index$3 = require('../../Input/index.cjs');
11
+
12
+ const TextFilter = ({ option, onChange, value }) => {
13
+ const isValue = value !== null && value !== undefined;
14
+ return (jsxRuntime.jsxs(index, { width: "100%", bgcolor: "background.secondary", p: 1, radius: 1, children: [jsxRuntime.jsxs(index, { direction: "row", alignItems: "center", justifyContent: "space-between", gap: 0.5, mb: isValue ? .5 : 0, children: [jsxRuntime.jsx(index$1, { children: option.label }), jsxRuntime.jsxs(index, { direction: "row", gap: 0.5, children: [jsxRuntime.jsx(index$2, { size: "small", variant: "soft", color: "default", onClick: () => {
15
+ onChange('');
16
+ }, children: jsxRuntime.jsx(Add, {}) }), isValue && jsxRuntime.jsx(index$2, { size: "small", variant: "soft", color: "danger", onClick: () => {
17
+ onChange(null);
18
+ }, children: jsxRuntime.jsx(ClearAll, {}) })] })] }), jsxRuntime.jsx(index, { direction: "row", gap: 0.5, flexWrap: "wrap", children: isValue && jsxRuntime.jsx(index$3, { variant: "outline", value: value.toString(), onChange: (e) => {
19
+ onChange(e.target.value);
20
+ }, fullWidth: true }) })] }));
21
+ };
22
+
23
+ module.exports = TextFilter;
24
+ //# sourceMappingURL=TextFilter.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TextFilter.cjs","sources":["../../../src/DataFilter/options/TextFilter.tsx"],"sourcesContent":["\"use client\"\r\n\r\nimport { DataFilterSelect } from \"../types\";\r\nimport IconButton from \"../../IconButton\";\r\nimport Stack from \"../../Stack\";\r\nimport Text from \"../../Text\";\r\nimport Add from \"@xanui/icons/Add\";\r\nimport ClearAll from \"@xanui/icons/ClearAll\";\r\nimport Input from \"../../Input\";\r\n\r\ntype Props = {\r\n option: DataFilterSelect;\r\n value: string | null;\r\n onChange: (value: string | null) => void;\r\n}\r\n\r\nconst TextFilter = ({ option, onChange, value }: Props) => {\r\n\r\n const isValue = value !== null && value !== undefined;\r\n\r\n return (\r\n <Stack\r\n width={\"100%\"}\r\n bgcolor=\"background.secondary\"\r\n p={1}\r\n radius={1}\r\n >\r\n <Stack\r\n direction=\"row\"\r\n alignItems=\"center\"\r\n justifyContent={\"space-between\"}\r\n gap={0.5}\r\n mb={isValue ? .5 : 0}\r\n >\r\n <Text>{option.label}</Text>\r\n <Stack\r\n direction=\"row\"\r\n gap={0.5}\r\n >\r\n <IconButton\r\n size=\"small\"\r\n variant=\"soft\"\r\n color={\"default\"}\r\n onClick={() => {\r\n onChange('');\r\n }}\r\n >\r\n <Add />\r\n </IconButton>\r\n {\r\n isValue && <IconButton\r\n size=\"small\"\r\n variant=\"soft\"\r\n color={\"danger\"}\r\n onClick={() => {\r\n onChange(null);\r\n }}\r\n >\r\n <ClearAll />\r\n </IconButton>\r\n }\r\n </Stack>\r\n </Stack>\r\n <Stack\r\n direction=\"row\"\r\n gap={0.5}\r\n flexWrap=\"wrap\"\r\n >\r\n {\r\n isValue && <Input\r\n variant={\"outline\"}\r\n value={value.toString()}\r\n onChange={(e: any) => {\r\n onChange(e.target.value);\r\n }}\r\n fullWidth\r\n />\r\n }\r\n </Stack>\r\n </Stack>\r\n )\r\n}\r\n\r\nexport default TextFilter"],"names":[],"mappings":";;;;;;;;;;;AAgBA;;AAIG;;;;;AAqDkB;AACH;AAOlB;;"}
@@ -1,24 +1,22 @@
1
1
  "use client";
2
- 'use strict';
3
-
4
- var jsxRuntime = require('react/jsx-runtime');
5
- var index$2 = require('../../IconButton/index.js');
6
- var index = require('../../Stack/index.js');
7
- var index$1 = require('../../Text/index.js');
8
- var Add = require('@xanui/icons/Add');
9
- var ClearAll = require('@xanui/icons/ClearAll');
10
- var index$3 = require('../../Input/index.js');
2
+ import { jsxs, jsx } from 'react/jsx-runtime';
3
+ import IconButton from '../../IconButton/index.js';
4
+ import Stack from '../../Stack/index.js';
5
+ import Text from '../../Text/index.js';
6
+ import Add from '@xanui/icons/Add';
7
+ import ClearAll from '@xanui/icons/ClearAll';
8
+ import Input from '../../Input/index.js';
11
9
 
12
10
  const TextFilter = ({ option, onChange, value }) => {
13
11
  const isValue = value !== null && value !== undefined;
14
- return (jsxRuntime.jsxs(index, { width: "100%", bgcolor: "background.secondary", p: 1, radius: 1, children: [jsxRuntime.jsxs(index, { direction: "row", alignItems: "center", justifyContent: "space-between", gap: 0.5, mb: isValue ? .5 : 0, children: [jsxRuntime.jsx(index$1, { children: option.label }), jsxRuntime.jsxs(index, { direction: "row", gap: 0.5, children: [jsxRuntime.jsx(index$2, { size: "small", variant: "soft", color: "default", onClick: () => {
12
+ return (jsxs(Stack, { width: "100%", bgcolor: "background.secondary", p: 1, radius: 1, children: [jsxs(Stack, { direction: "row", alignItems: "center", justifyContent: "space-between", gap: 0.5, mb: isValue ? .5 : 0, children: [jsx(Text, { children: option.label }), jsxs(Stack, { direction: "row", gap: 0.5, children: [jsx(IconButton, { size: "small", variant: "soft", color: "default", onClick: () => {
15
13
  onChange('');
16
- }, children: jsxRuntime.jsx(Add, {}) }), isValue && jsxRuntime.jsx(index$2, { size: "small", variant: "soft", color: "danger", onClick: () => {
14
+ }, children: jsx(Add, {}) }), isValue && jsx(IconButton, { size: "small", variant: "soft", color: "danger", onClick: () => {
17
15
  onChange(null);
18
- }, children: jsxRuntime.jsx(ClearAll, {}) })] })] }), jsxRuntime.jsx(index, { direction: "row", gap: 0.5, flexWrap: "wrap", children: isValue && jsxRuntime.jsx(index$3, { variant: "outline", value: value.toString(), onChange: (e) => {
16
+ }, children: jsx(ClearAll, {}) })] })] }), jsx(Stack, { direction: "row", gap: 0.5, flexWrap: "wrap", children: isValue && jsx(Input, { variant: "outline", value: value.toString(), onChange: (e) => {
19
17
  onChange(e.target.value);
20
18
  }, fullWidth: true }) })] }));
21
19
  };
22
20
 
23
- module.exports = TextFilter;
21
+ export { TextFilter as default };
24
22
  //# sourceMappingURL=TextFilter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TextFilter.js","sources":["../../../src/DataFilter/options/TextFilter.tsx"],"sourcesContent":["\"use client\"\r\n\r\nimport { DataFilterSelect } from \"../types\";\r\nimport IconButton from \"../../IconButton\";\r\nimport Stack from \"../../Stack\";\r\nimport Text from \"../../Text\";\r\nimport Add from \"@xanui/icons/Add\";\r\nimport ClearAll from \"@xanui/icons/ClearAll\";\r\nimport Input from \"../../Input\";\r\n\r\ntype Props = {\r\n option: DataFilterSelect;\r\n value: string | null;\r\n onChange: (value: string | null) => void;\r\n}\r\n\r\nconst TextFilter = ({ option, onChange, value }: Props) => {\r\n\r\n const isValue = value !== null && value !== undefined;\r\n\r\n return (\r\n <Stack\r\n width={\"100%\"}\r\n bgcolor=\"background.secondary\"\r\n p={1}\r\n radius={1}\r\n >\r\n <Stack\r\n direction=\"row\"\r\n alignItems=\"center\"\r\n justifyContent={\"space-between\"}\r\n gap={0.5}\r\n mb={isValue ? .5 : 0}\r\n >\r\n <Text>{option.label}</Text>\r\n <Stack\r\n direction=\"row\"\r\n gap={0.5}\r\n >\r\n <IconButton\r\n size=\"small\"\r\n variant=\"soft\"\r\n color={\"default\"}\r\n onClick={() => {\r\n onChange('');\r\n }}\r\n >\r\n <Add />\r\n </IconButton>\r\n {\r\n isValue && <IconButton\r\n size=\"small\"\r\n variant=\"soft\"\r\n color={\"danger\"}\r\n onClick={() => {\r\n onChange(null);\r\n }}\r\n >\r\n <ClearAll />\r\n </IconButton>\r\n }\r\n </Stack>\r\n </Stack>\r\n <Stack\r\n direction=\"row\"\r\n gap={0.5}\r\n flexWrap=\"wrap\"\r\n >\r\n {\r\n isValue && <Input\r\n variant={\"outline\"}\r\n value={value.toString()}\r\n onChange={(e: any) => {\r\n onChange(e.target.value);\r\n }}\r\n fullWidth\r\n />\r\n }\r\n </Stack>\r\n </Stack>\r\n )\r\n}\r\n\r\nexport default TextFilter"],"names":[],"mappings":";;;;;;;;;;;AAgBA;;AAIG;;;;;AAqDkB;AACH;AAOlB;;"}
1
+ {"version":3,"file":"TextFilter.js","sources":["../../../src/DataFilter/options/TextFilter.tsx"],"sourcesContent":["\"use client\"\r\n\r\nimport { DataFilterSelect } from \"../types\";\r\nimport IconButton from \"../../IconButton\";\r\nimport Stack from \"../../Stack\";\r\nimport Text from \"../../Text\";\r\nimport Add from \"@xanui/icons/Add\";\r\nimport ClearAll from \"@xanui/icons/ClearAll\";\r\nimport Input from \"../../Input\";\r\n\r\ntype Props = {\r\n option: DataFilterSelect;\r\n value: string | null;\r\n onChange: (value: string | null) => void;\r\n}\r\n\r\nconst TextFilter = ({ option, onChange, value }: Props) => {\r\n\r\n const isValue = value !== null && value !== undefined;\r\n\r\n return (\r\n <Stack\r\n width={\"100%\"}\r\n bgcolor=\"background.secondary\"\r\n p={1}\r\n radius={1}\r\n >\r\n <Stack\r\n direction=\"row\"\r\n alignItems=\"center\"\r\n justifyContent={\"space-between\"}\r\n gap={0.5}\r\n mb={isValue ? .5 : 0}\r\n >\r\n <Text>{option.label}</Text>\r\n <Stack\r\n direction=\"row\"\r\n gap={0.5}\r\n >\r\n <IconButton\r\n size=\"small\"\r\n variant=\"soft\"\r\n color={\"default\"}\r\n onClick={() => {\r\n onChange('');\r\n }}\r\n >\r\n <Add />\r\n </IconButton>\r\n {\r\n isValue && <IconButton\r\n size=\"small\"\r\n variant=\"soft\"\r\n color={\"danger\"}\r\n onClick={() => {\r\n onChange(null);\r\n }}\r\n >\r\n <ClearAll />\r\n </IconButton>\r\n }\r\n </Stack>\r\n </Stack>\r\n <Stack\r\n direction=\"row\"\r\n gap={0.5}\r\n flexWrap=\"wrap\"\r\n >\r\n {\r\n isValue && <Input\r\n variant={\"outline\"}\r\n value={value.toString()}\r\n onChange={(e: any) => {\r\n onChange(e.target.value);\r\n }}\r\n fullWidth\r\n />\r\n }\r\n </Stack>\r\n </Stack>\r\n )\r\n}\r\n\r\nexport default TextFilter"],"names":[],"mappings":";;;;;;;;;AAgBA;;AAIG;;;;;AAqDkB;AACH;AAOlB;;"}
@@ -0,0 +1,39 @@
1
+ "use client";
2
+ 'use strict';
3
+
4
+ var jsxRuntime = require('react/jsx-runtime');
5
+ var index = require('../Stack/index.cjs');
6
+ var index$1 = require('../Tabs/index.cjs');
7
+ var index$2 = require('../Tab/index.cjs');
8
+ var index$3 = require('../Input/index.cjs');
9
+ var IconSearch = require('@xanui/icons/Search');
10
+ var index$4 = require('../IconButton/index.cjs');
11
+ var FilterListOutlined = require('@xanui/icons/FilterListOutlined');
12
+ var index$5 = require('../Drawer/index.cjs');
13
+ var index$8 = require('../Text/index.cjs');
14
+ var React = require('react');
15
+ var CloseOutlined = require('@xanui/icons/CloseOutlined');
16
+ var index$6 = require('../ViewBox/index.cjs');
17
+ var index$7 = require('../DataFilter/index.cjs');
18
+
19
+ const FilterBox = (props) => {
20
+ let { tabs, filters, hideSearch, slotProps, skeleton, state, update, } = props;
21
+ const [openFilter, setOpenFilter] = React.useState(false);
22
+ let checked = state.selectAll || !!state.selected.length;
23
+ if (checked)
24
+ return jsxRuntime.jsx(jsxRuntime.Fragment, {});
25
+ return (jsxRuntime.jsxs(index, { direction: "row", alignItems: "center", justifyContent: "space-between", zIndex: 1, radius: 1, mb: 1, height: 50, width: "100%", children: [jsxRuntime.jsx(index, { gap: 2.4, flexRow: true, children: tabs && jsxRuntime.jsx(index$1, { disabled: skeleton ? true : false, onChange: (value) => {
26
+ update({ tab: value });
27
+ }, value: state.tab, children: tabs.map(t => jsxRuntime.jsx(index$2, { value: t.value || t.label.toLowerCase(), children: t.label }, t.label)) }) }), jsxRuntime.jsxs(index, { flexRow: true, gap: 2, className: 'datatable-header-right-area', alignItems: "center", children: [!hideSearch && jsxRuntime.jsx(index$3, Object.assign({ disabled: skeleton ? true : false, endIcon: jsxRuntime.jsx(IconSearch, {}), placeholder: 'Search...' }, slotProps === null || slotProps === void 0 ? void 0 : slotProps.search, { value: state.search, onChange: (e) => {
28
+ update({ search: e.target.value });
29
+ } })), filters && jsxRuntime.jsxs(index, { children: [jsxRuntime.jsx(index$4, { color: "default", variant: "text", onClick: () => {
30
+ setOpenFilter(true);
31
+ }, children: jsxRuntime.jsx(FilterListOutlined, {}) }), jsxRuntime.jsx(index$5, { open: openFilter, onClickOutside: () => { }, placement: "right", children: jsxRuntime.jsx(index$6, { height: "100%", p: 1, startContent: jsxRuntime.jsxs(index, { mb: 2, px: 2, flexRow: true, justifyContent: "space-between", alignItems: "center", children: [jsxRuntime.jsx(index$8, { fontWeight: 600, fontSize: "h6", children: "Filters" }), jsxRuntime.jsx(index$4, { size: "small", color: "default", variant: "text", onClick: () => {
32
+ setOpenFilter(false);
33
+ }, children: jsxRuntime.jsx(CloseOutlined, {}) })] }), children: jsxRuntime.jsx(index, { gap: 2, children: jsxRuntime.jsx(index$7.default, { options: filters, value: state.filters, onChange: (s) => {
34
+ update({ filters: s });
35
+ } }) }) }) })] })] })] }));
36
+ };
37
+
38
+ module.exports = FilterBox;
39
+ //# sourceMappingURL=FilterBox.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FilterBox.cjs","sources":["../../src/Datatable/FilterBox.tsx"],"sourcesContent":["'use client'\r\nimport Stack from '../Stack'\r\nimport Tabs from '../Tabs'\r\nimport Tab from '../Tab'\r\nimport Input from '../Input'\r\nimport IconSearch from '@xanui/icons/Search'\r\nimport { DatatablePropsWithState } from './types';\r\nimport IconButton from '../IconButton';\r\nimport FilterListOutlined from '@xanui/icons/FilterListOutlined';\r\nimport Drawer from '../Drawer';\r\nimport Text from '../Text';\r\nimport React from 'react';\r\nimport CloseOutlined from '@xanui/icons/CloseOutlined';\r\nimport ViewBox from '../ViewBox';\r\nimport DataFilter from '../DataFilter';\r\n\r\nconst FilterBox = (props: DatatablePropsWithState) => {\r\n let {\r\n tabs,\r\n filters,\r\n hideSearch,\r\n slotProps,\r\n skeleton,\r\n state,\r\n update,\r\n } = props\r\n const [openFilter, setOpenFilter] = React.useState(false)\r\n let checked = state.selectAll || !!state.selected.length\r\n\r\n if (checked) return <></>\r\n\r\n return (\r\n <Stack\r\n direction=\"row\"\r\n alignItems=\"center\"\r\n justifyContent=\"space-between\"\r\n zIndex={1}\r\n radius={1}\r\n mb={1}\r\n height={50}\r\n width=\"100%\"\r\n >\r\n <Stack gap={2.4} flexRow>\r\n {\r\n tabs && <Tabs\r\n disabled={skeleton ? true : false}\r\n onChange={(value: any) => {\r\n update({ tab: value })\r\n }}\r\n value={state.tab}\r\n >\r\n {\r\n tabs.map(t => <Tab key={t.label} value={t.value || t.label.toLowerCase()}>{t.label}</Tab>)\r\n }\r\n </Tabs>\r\n }\r\n </Stack>\r\n <Stack\r\n flexRow\r\n gap={2}\r\n className='datatable-header-right-area'\r\n alignItems={\"center\"}\r\n >\r\n {!hideSearch && <Input\r\n disabled={skeleton ? true : false}\r\n endIcon={<IconSearch />}\r\n placeholder='Search...'\r\n {...slotProps?.search}\r\n value={state.search}\r\n onChange={(e: any) => {\r\n update({ search: e.target.value })\r\n }}\r\n />}\r\n {\r\n filters && <Stack>\r\n <IconButton\r\n color=\"default\"\r\n variant={\"text\"}\r\n onClick={() => {\r\n setOpenFilter(true)\r\n }}\r\n >\r\n <FilterListOutlined />\r\n </IconButton>\r\n <Drawer\r\n open={openFilter}\r\n onClickOutside={() => { }}\r\n placement={\"right\"}\r\n >\r\n <ViewBox\r\n height=\"100%\"\r\n p={1}\r\n startContent={<Stack mb={2} px={2} flexRow justifyContent={\"space-between\"} alignItems=\"center\">\r\n <Text fontWeight={600} fontSize=\"h6\">Filters</Text>\r\n <IconButton\r\n size=\"small\"\r\n color=\"default\"\r\n variant=\"text\"\r\n onClick={() => {\r\n setOpenFilter(false)\r\n }}\r\n >\r\n <CloseOutlined />\r\n </IconButton>\r\n </Stack>}\r\n >\r\n <Stack\r\n gap={2}\r\n >\r\n <DataFilter\r\n options={filters}\r\n value={state.filters}\r\n onChange={(s) => {\r\n update({ filters: s })\r\n }}\r\n />\r\n </Stack>\r\n </ViewBox>\r\n </Drawer>\r\n </Stack>\r\n }\r\n </Stack>\r\n </Stack>\r\n )\r\n}\r\n\r\nexport default FilterBox"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAgBA;AACG;AASA;AACA;AAEA;AAAa;AAEb;AAgBkB;;;;;AAiCA;;AAoBS;AAaG;;AAWjC;;"}
@@ -1,39 +1,37 @@
1
1
  "use client";
2
- 'use strict';
3
-
4
- var jsxRuntime = require('react/jsx-runtime');
5
- var index = require('../Stack/index.js');
6
- var index$1 = require('../Tabs/index.js');
7
- var index$2 = require('../Tab/index.js');
8
- var index$3 = require('../Input/index.js');
9
- var IconSearch = require('@xanui/icons/Search');
10
- var index$4 = require('../IconButton/index.js');
11
- var FilterListOutlined = require('@xanui/icons/FilterListOutlined');
12
- var index$5 = require('../Drawer/index.js');
13
- var index$8 = require('../Text/index.js');
14
- var React = require('react');
15
- var CloseOutlined = require('@xanui/icons/CloseOutlined');
16
- var index$6 = require('../ViewBox/index.js');
17
- var index$7 = require('../DataFilter/index.js');
2
+ import { jsx, Fragment, jsxs } from 'react/jsx-runtime';
3
+ import Stack from '../Stack/index.js';
4
+ import Tabs from '../Tabs/index.js';
5
+ import Tab from '../Tab/index.js';
6
+ import Input from '../Input/index.js';
7
+ import IconSearch from '@xanui/icons/Search';
8
+ import IconButton from '../IconButton/index.js';
9
+ import FilterListOutlined from '@xanui/icons/FilterListOutlined';
10
+ import Drawer from '../Drawer/index.js';
11
+ import Text from '../Text/index.js';
12
+ import React from 'react';
13
+ import CloseOutlined from '@xanui/icons/CloseOutlined';
14
+ import ViewBox from '../ViewBox/index.js';
15
+ import DataFilter from '../DataFilter/index.js';
18
16
 
19
17
  const FilterBox = (props) => {
20
18
  let { tabs, filters, hideSearch, slotProps, skeleton, state, update, } = props;
21
19
  const [openFilter, setOpenFilter] = React.useState(false);
22
20
  let checked = state.selectAll || !!state.selected.length;
23
21
  if (checked)
24
- return jsxRuntime.jsx(jsxRuntime.Fragment, {});
25
- return (jsxRuntime.jsxs(index, { direction: "row", alignItems: "center", justifyContent: "space-between", zIndex: 1, radius: 1, mb: 1, height: 50, width: "100%", children: [jsxRuntime.jsx(index, { gap: 2.4, flexRow: true, children: tabs && jsxRuntime.jsx(index$1, { disabled: skeleton ? true : false, onChange: (value) => {
22
+ return jsx(Fragment, {});
23
+ return (jsxs(Stack, { direction: "row", alignItems: "center", justifyContent: "space-between", zIndex: 1, radius: 1, mb: 1, height: 50, width: "100%", children: [jsx(Stack, { gap: 2.4, flexRow: true, children: tabs && jsx(Tabs, { disabled: skeleton ? true : false, onChange: (value) => {
26
24
  update({ tab: value });
27
- }, value: state.tab, children: tabs.map(t => jsxRuntime.jsx(index$2, { value: t.value || t.label.toLowerCase(), children: t.label }, t.label)) }) }), jsxRuntime.jsxs(index, { flexRow: true, gap: 2, className: 'datatable-header-right-area', alignItems: "center", children: [!hideSearch && jsxRuntime.jsx(index$3, Object.assign({ disabled: skeleton ? true : false, endIcon: jsxRuntime.jsx(IconSearch, {}), placeholder: 'Search...' }, slotProps === null || slotProps === void 0 ? void 0 : slotProps.search, { value: state.search, onChange: (e) => {
25
+ }, value: state.tab, children: tabs.map(t => jsx(Tab, { value: t.value || t.label.toLowerCase(), children: t.label }, t.label)) }) }), jsxs(Stack, { flexRow: true, gap: 2, className: 'datatable-header-right-area', alignItems: "center", children: [!hideSearch && jsx(Input, Object.assign({ disabled: skeleton ? true : false, endIcon: jsx(IconSearch, {}), placeholder: 'Search...' }, slotProps === null || slotProps === void 0 ? void 0 : slotProps.search, { value: state.search, onChange: (e) => {
28
26
  update({ search: e.target.value });
29
- } })), filters && jsxRuntime.jsxs(index, { children: [jsxRuntime.jsx(index$4, { color: "default", variant: "text", onClick: () => {
27
+ } })), filters && jsxs(Stack, { children: [jsx(IconButton, { color: "default", variant: "text", onClick: () => {
30
28
  setOpenFilter(true);
31
- }, children: jsxRuntime.jsx(FilterListOutlined, {}) }), jsxRuntime.jsx(index$5, { open: openFilter, onClickOutside: () => { }, placement: "right", children: jsxRuntime.jsx(index$6, { height: "100%", p: 1, startContent: jsxRuntime.jsxs(index, { mb: 2, px: 2, flexRow: true, justifyContent: "space-between", alignItems: "center", children: [jsxRuntime.jsx(index$8, { fontWeight: 600, fontSize: "h6", children: "Filters" }), jsxRuntime.jsx(index$4, { size: "small", color: "default", variant: "text", onClick: () => {
29
+ }, children: jsx(FilterListOutlined, {}) }), jsx(Drawer, { open: openFilter, onClickOutside: () => { }, placement: "right", children: jsx(ViewBox, { height: "100%", p: 1, startContent: jsxs(Stack, { mb: 2, px: 2, flexRow: true, justifyContent: "space-between", alignItems: "center", children: [jsx(Text, { fontWeight: 600, fontSize: "h6", children: "Filters" }), jsx(IconButton, { size: "small", color: "default", variant: "text", onClick: () => {
32
30
  setOpenFilter(false);
33
- }, children: jsxRuntime.jsx(CloseOutlined, {}) })] }), children: jsxRuntime.jsx(index, { gap: 2, children: jsxRuntime.jsx(index$7.default, { options: filters, value: state.filters, onChange: (s) => {
31
+ }, children: jsx(CloseOutlined, {}) })] }), children: jsx(Stack, { gap: 2, children: jsx(DataFilter, { options: filters, value: state.filters, onChange: (s) => {
34
32
  update({ filters: s });
35
33
  } }) }) }) })] })] })] }));
36
34
  };
37
35
 
38
- module.exports = FilterBox;
36
+ export { FilterBox as default };
39
37
  //# sourceMappingURL=FilterBox.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FilterBox.js","sources":["../../src/Datatable/FilterBox.tsx"],"sourcesContent":["\"use client\";\r\nimport Stack from '../Stack'\r\nimport Tabs from '../Tabs'\r\nimport Tab from '../Tab'\r\nimport Input from '../Input'\r\nimport IconSearch from '@xanui/icons/Search'\r\nimport { DatatablePropsWithState } from './types';\r\nimport IconButton from '../IconButton';\r\nimport FilterListOutlined from '@xanui/icons/FilterListOutlined';\r\nimport Drawer from '../Drawer';\r\nimport Text from '../Text';\r\nimport React from 'react';\r\nimport CloseOutlined from '@xanui/icons/CloseOutlined';\r\nimport ViewBox from '../ViewBox';\r\nimport DataFilter from '../DataFilter';\r\n\r\nconst FilterBox = (props: DatatablePropsWithState) => {\r\n let {\r\n tabs,\r\n filters,\r\n hideSearch,\r\n slotProps,\r\n skeleton,\r\n state,\r\n update,\r\n } = props\r\n const [openFilter, setOpenFilter] = React.useState(false)\r\n let checked = state.selectAll || !!state.selected.length\r\n\r\n if (checked) return <></>\r\n\r\n return (\r\n <Stack\r\n direction=\"row\"\r\n alignItems=\"center\"\r\n justifyContent=\"space-between\"\r\n zIndex={1}\r\n radius={1}\r\n mb={1}\r\n height={50}\r\n width=\"100%\"\r\n >\r\n <Stack gap={2.4} flexRow>\r\n {\r\n tabs && <Tabs\r\n disabled={skeleton ? true : false}\r\n onChange={(value: any) => {\r\n update({ tab: value })\r\n }}\r\n value={state.tab}\r\n >\r\n {\r\n tabs.map(t => <Tab key={t.label} value={t.value || t.label.toLowerCase()}>{t.label}</Tab>)\r\n }\r\n </Tabs>\r\n }\r\n </Stack>\r\n <Stack\r\n flexRow\r\n gap={2}\r\n className='datatable-header-right-area'\r\n alignItems={\"center\"}\r\n >\r\n {!hideSearch && <Input\r\n disabled={skeleton ? true : false}\r\n endIcon={<IconSearch />}\r\n placeholder='Search...'\r\n {...slotProps?.search}\r\n value={state.search}\r\n onChange={(e: any) => {\r\n update({ search: e.target.value })\r\n }}\r\n />}\r\n {\r\n filters && <Stack>\r\n <IconButton\r\n color=\"default\"\r\n variant={\"text\"}\r\n onClick={() => {\r\n setOpenFilter(true)\r\n }}\r\n >\r\n <FilterListOutlined />\r\n </IconButton>\r\n <Drawer\r\n open={openFilter}\r\n onClickOutside={() => { }}\r\n placement={\"right\"}\r\n >\r\n <ViewBox\r\n height=\"100%\"\r\n p={1}\r\n startContent={<Stack mb={2} px={2} flexRow justifyContent={\"space-between\"} alignItems=\"center\">\r\n <Text fontWeight={600} fontSize=\"h6\">Filters</Text>\r\n <IconButton\r\n size=\"small\"\r\n color=\"default\"\r\n variant=\"text\"\r\n onClick={() => {\r\n setOpenFilter(false)\r\n }}\r\n >\r\n <CloseOutlined />\r\n </IconButton>\r\n </Stack>}\r\n >\r\n <Stack\r\n gap={2}\r\n >\r\n <DataFilter\r\n options={filters}\r\n value={state.filters}\r\n onChange={(s) => {\r\n update({ filters: s })\r\n }}\r\n />\r\n </Stack>\r\n </ViewBox>\r\n </Drawer>\r\n </Stack>\r\n }\r\n </Stack>\r\n </Stack>\r\n )\r\n}\r\n\r\nexport default FilterBox"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAgBA;AACG;AASA;AACA;AAEA;AAAa;AAEb;AAgBkB;;;;;AAiCA;;AAoBS;AAaG;;AAWjC;;"}
1
+ {"version":3,"file":"FilterBox.js","sources":["../../src/Datatable/FilterBox.tsx"],"sourcesContent":["'use client'\r\nimport Stack from '../Stack'\r\nimport Tabs from '../Tabs'\r\nimport Tab from '../Tab'\r\nimport Input from '../Input'\r\nimport IconSearch from '@xanui/icons/Search'\r\nimport { DatatablePropsWithState } from './types';\r\nimport IconButton from '../IconButton';\r\nimport FilterListOutlined from '@xanui/icons/FilterListOutlined';\r\nimport Drawer from '../Drawer';\r\nimport Text from '../Text';\r\nimport React from 'react';\r\nimport CloseOutlined from '@xanui/icons/CloseOutlined';\r\nimport ViewBox from '../ViewBox';\r\nimport DataFilter from '../DataFilter';\r\n\r\nconst FilterBox = (props: DatatablePropsWithState) => {\r\n let {\r\n tabs,\r\n filters,\r\n hideSearch,\r\n slotProps,\r\n skeleton,\r\n state,\r\n update,\r\n } = props\r\n const [openFilter, setOpenFilter] = React.useState(false)\r\n let checked = state.selectAll || !!state.selected.length\r\n\r\n if (checked) return <></>\r\n\r\n return (\r\n <Stack\r\n direction=\"row\"\r\n alignItems=\"center\"\r\n justifyContent=\"space-between\"\r\n zIndex={1}\r\n radius={1}\r\n mb={1}\r\n height={50}\r\n width=\"100%\"\r\n >\r\n <Stack gap={2.4} flexRow>\r\n {\r\n tabs && <Tabs\r\n disabled={skeleton ? true : false}\r\n onChange={(value: any) => {\r\n update({ tab: value })\r\n }}\r\n value={state.tab}\r\n >\r\n {\r\n tabs.map(t => <Tab key={t.label} value={t.value || t.label.toLowerCase()}>{t.label}</Tab>)\r\n }\r\n </Tabs>\r\n }\r\n </Stack>\r\n <Stack\r\n flexRow\r\n gap={2}\r\n className='datatable-header-right-area'\r\n alignItems={\"center\"}\r\n >\r\n {!hideSearch && <Input\r\n disabled={skeleton ? true : false}\r\n endIcon={<IconSearch />}\r\n placeholder='Search...'\r\n {...slotProps?.search}\r\n value={state.search}\r\n onChange={(e: any) => {\r\n update({ search: e.target.value })\r\n }}\r\n />}\r\n {\r\n filters && <Stack>\r\n <IconButton\r\n color=\"default\"\r\n variant={\"text\"}\r\n onClick={() => {\r\n setOpenFilter(true)\r\n }}\r\n >\r\n <FilterListOutlined />\r\n </IconButton>\r\n <Drawer\r\n open={openFilter}\r\n onClickOutside={() => { }}\r\n placement={\"right\"}\r\n >\r\n <ViewBox\r\n height=\"100%\"\r\n p={1}\r\n startContent={<Stack mb={2} px={2} flexRow justifyContent={\"space-between\"} alignItems=\"center\">\r\n <Text fontWeight={600} fontSize=\"h6\">Filters</Text>\r\n <IconButton\r\n size=\"small\"\r\n color=\"default\"\r\n variant=\"text\"\r\n onClick={() => {\r\n setOpenFilter(false)\r\n }}\r\n >\r\n <CloseOutlined />\r\n </IconButton>\r\n </Stack>}\r\n >\r\n <Stack\r\n gap={2}\r\n >\r\n <DataFilter\r\n options={filters}\r\n value={state.filters}\r\n onChange={(s) => {\r\n update({ filters: s })\r\n }}\r\n />\r\n </Stack>\r\n </ViewBox>\r\n </Drawer>\r\n </Stack>\r\n }\r\n </Stack>\r\n </Stack>\r\n )\r\n}\r\n\r\nexport default FilterBox"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAgBA;AACG;AASA;AACA;AAEA;AAAa;AAEb;AAgBkB;;;;;AAiCA;;AAoBS;AAaG;;AAWjC;;"}
@@ -0,0 +1,59 @@
1
+ "use client";
2
+ 'use strict';
3
+
4
+ var tslib = require('tslib');
5
+ var jsxRuntime = require('react/jsx-runtime');
6
+ var React = require('react');
7
+ var index = require('../TableRow/index.cjs');
8
+ var index$1 = require('../TableCell/index.cjs');
9
+ var index$2 = require('../Checkbox/index.cjs');
10
+ var index$3 = require('../IconButton/index.cjs');
11
+ var index$5 = require('../List/index.cjs');
12
+ var index$6 = require('../ListItem/index.cjs');
13
+ var ActionIcon = require('@xanui/icons/MoreVert');
14
+ var index$4 = require('../Menu/index.cjs');
15
+
16
+ const Row = ({ rows, rawRow, row, rowAction, disableRow, hideCheckbox, columns, compact, state, update }) => {
17
+ var _a;
18
+ const selected = row.id ? state.selected.includes(row === null || row === void 0 ? void 0 : row.id) : false;
19
+ let selectedColor = selected ? "primary.soft" : "transparent";
20
+ const [target, setTarget] = React.useState();
21
+ const isDisable = (disableRow ? disableRow(rawRow, state) : false) || false;
22
+ return (jsxRuntime.jsxs(index, { children: [!hideCheckbox && jsxRuntime.jsx(index$1, { width: 40, bgcolor: selectedColor, children: !!row.id && jsxRuntime.jsx(index$2, { size: compact ? "small" : "medium", checked: selected, onChange: () => {
23
+ if (isDisable || !row.id)
24
+ return;
25
+ let ids = [...state.selected];
26
+ ids.includes(row.id) ? ids.splice(ids.indexOf(row.id), 1) : ids.push(row.id);
27
+ let selectedLength = 0;
28
+ rows.forEach(r => {
29
+ const isDisable = (disableRow ? disableRow(r, state) : false) || false;
30
+ if (!isDisable)
31
+ selectedLength++;
32
+ });
33
+ update({
34
+ selectAll: selectedLength === ids.length,
35
+ selected: ids
36
+ });
37
+ } }) }), columns.map((_a, idx) => {
38
+ var { label, field, sortable } = _a, rest = tslib.__rest(_a, ["label", "field", "sortable"]);
39
+ field = field || label;
40
+ if (!row[field])
41
+ return jsxRuntime.jsx(index$1, {}, idx);
42
+ return (jsxRuntime.jsx(index$1, Object.assign({ textAlign: "left" }, rest, { bgcolor: selectedColor, children: row[field] }), idx));
43
+ }), !!(rows.length && rowAction && ((_a = rowAction(rows[0])) === null || _a === void 0 ? void 0 : _a.length)) && jsxRuntime.jsxs(index$1, { width: 30, bgcolor: selectedColor, borderColor: "divider", children: [jsxRuntime.jsx(index$3, { disabled: isDisable || selected, onClick: (e) => setTarget(e.currentTarget), variant: "text", color: "default", children: jsxRuntime.jsx(ActionIcon, {}) }), jsxRuntime.jsx(index$4, { target: target, placement: "bottom-right", onClickOutside: () => setTarget(null), children: jsxRuntime.jsx(index$5, { bgcolor: "background.primary", minWidth: 160, sx: {
44
+ '& > li': {
45
+ borderBottom: 1,
46
+ '&:last-child': {
47
+ borderBottom: 0
48
+ }
49
+ }
50
+ }, children: rowAction({ row, state }).map(({ label, icon, onClick }) => {
51
+ return (jsxRuntime.jsx(index$6, { startIcon: icon, onClick: (e) => {
52
+ onClick && onClick(e);
53
+ setTarget(null);
54
+ }, children: label }, label));
55
+ }) }) })] })] }));
56
+ };
57
+
58
+ module.exports = Row;
59
+ //# sourceMappingURL=Row.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Row.cjs","sources":["../../src/Datatable/Row.tsx"],"sourcesContent":["'use client'\r\nimport { useState } from 'react'\r\nimport TableRow from '../TableRow'\r\nimport TableCell from '../TableCell'\r\nimport Checkbox from '../Checkbox'\r\nimport IconButton from '../IconButton'\r\nimport List from '../List'\r\nimport ListItem from '../ListItem'\r\nimport ActionIcon from '@xanui/icons/MoreVert'\r\nimport Menu from '../Menu'\r\nimport { DataTableDefaultRow, DatatablePropsWithState } from './types';\r\n\r\n\r\ntype Props = DatatablePropsWithState & {\r\n rawRow: DataTableDefaultRow;\r\n row: DataTableDefaultRow;\r\n}\r\n\r\nconst Row = ({ rows, rawRow, row, rowAction, disableRow, hideCheckbox, columns, compact, state, update }: Props) => {\r\n const selected = row.id ? state.selected.includes(row?.id) : false\r\n let selectedColor = selected ? \"primary.soft\" : \"transparent\"\r\n const [target, setTarget] = useState<any>()\r\n const isDisable = (disableRow ? disableRow(rawRow, state) : false) || false\r\n\r\n return (\r\n <TableRow >\r\n {!hideCheckbox && <TableCell width={40} bgcolor={selectedColor}>\r\n {\r\n !!row.id && <Checkbox\r\n size={compact ? \"small\" : \"medium\"}\r\n checked={selected}\r\n onChange={() => {\r\n if (isDisable || !row.id) return\r\n let ids = [...state.selected]\r\n ids.includes(row.id) ? ids.splice(ids.indexOf(row.id), 1) : ids.push(row.id)\r\n let selectedLength = 0\r\n rows.forEach(r => {\r\n const isDisable = (disableRow ? disableRow(r, state) : false) || false\r\n if (!isDisable) selectedLength++\r\n })\r\n\r\n update({\r\n selectAll: selectedLength === ids.length,\r\n selected: ids\r\n })\r\n }}\r\n />\r\n }\r\n\r\n </TableCell>}\r\n {\r\n columns.map(({ label, field, sortable, ...rest }, idx) => {\r\n field = field || label\r\n if (!row[field]) return <TableCell key={idx}></TableCell>\r\n return (\r\n <TableCell\r\n key={idx}\r\n textAlign=\"left\"\r\n {...rest}\r\n bgcolor={selectedColor}\r\n >\r\n {row[field]}\r\n </TableCell>\r\n )\r\n })\r\n }\r\n {!!(rows.length && rowAction && rowAction((rows as any)[0])?.length) && <TableCell width={30} bgcolor={selectedColor} borderColor=\"divider\">\r\n <IconButton\r\n disabled={isDisable || selected}\r\n onClick={(e: any) => setTarget(e.currentTarget)}\r\n variant=\"text\"\r\n color=\"default\"\r\n >\r\n <ActionIcon />\r\n </IconButton>\r\n <Menu target={target} placement=\"bottom-right\" onClickOutside={() => setTarget(null)}>\r\n <List\r\n bgcolor=\"background.primary\"\r\n minWidth={160}\r\n sx={{\r\n '& > li': {\r\n borderBottom: 1,\r\n '&:last-child': {\r\n borderBottom: 0\r\n }\r\n }\r\n }}\r\n >\r\n {rowAction({ row, state }).map(({ label, icon, onClick }) => {\r\n return (\r\n <ListItem\r\n key={label}\r\n startIcon={icon}\r\n onClick={(e: any) => {\r\n onClick && onClick(e)\r\n setTarget(null)\r\n }}\r\n >{label}</ListItem>\r\n )\r\n })}\r\n </List>\r\n </Menu>\r\n </TableCell>\r\n }\r\n </TableRow>\r\n )\r\n}\r\n\r\nexport default Row"],"names":[],"mappings":";;;;;;;;;;;;;;;AAkBA;;;;;;;AAc4B;;;AAEA;;AAEA;;AAEI;AAAgB;AACpB;AAEA;AACI;AACA;AACH;AACL;;AAOJ;AACA;AAAiB;;;AA2BT;AACI;AACA;AACI;AACH;AACJ;;AAID;AAKY;;AAEJ;AAGZ;AAOxB;;"}
package/Datatable/Row.js CHANGED
@@ -1,25 +1,23 @@
1
1
  "use client";
2
- 'use strict';
3
-
4
- var tslib = require('tslib');
5
- var jsxRuntime = require('react/jsx-runtime');
6
- var React = require('react');
7
- var index = require('../TableRow/index.js');
8
- var index$1 = require('../TableCell/index.js');
9
- var index$2 = require('../Checkbox/index.js');
10
- var index$3 = require('../IconButton/index.js');
11
- var index$5 = require('../List/index.js');
12
- var index$6 = require('../ListItem/index.js');
13
- var ActionIcon = require('@xanui/icons/MoreVert');
14
- var index$4 = require('../Menu/index.js');
2
+ import { __rest } from 'tslib';
3
+ import { jsxs, jsx } from 'react/jsx-runtime';
4
+ import { useState } from 'react';
5
+ import TableRow from '../TableRow/index.js';
6
+ import TableCell from '../TableCell/index.js';
7
+ import Checkbox from '../Checkbox/index.js';
8
+ import IconButton from '../IconButton/index.js';
9
+ import List from '../List/index.js';
10
+ import ListItem from '../ListItem/index.js';
11
+ import ActionIcon from '@xanui/icons/MoreVert';
12
+ import Menu from '../Menu/index.js';
15
13
 
16
14
  const Row = ({ rows, rawRow, row, rowAction, disableRow, hideCheckbox, columns, compact, state, update }) => {
17
15
  var _a;
18
16
  const selected = row.id ? state.selected.includes(row === null || row === void 0 ? void 0 : row.id) : false;
19
17
  let selectedColor = selected ? "primary.soft" : "transparent";
20
- const [target, setTarget] = React.useState();
18
+ const [target, setTarget] = useState();
21
19
  const isDisable = (disableRow ? disableRow(rawRow, state) : false) || false;
22
- return (jsxRuntime.jsxs(index, { children: [!hideCheckbox && jsxRuntime.jsx(index$1, { width: 40, bgcolor: selectedColor, children: !!row.id && jsxRuntime.jsx(index$2, { size: compact ? "small" : "medium", checked: selected, onChange: () => {
20
+ return (jsxs(TableRow, { children: [!hideCheckbox && jsx(TableCell, { width: 40, bgcolor: selectedColor, children: !!row.id && jsx(Checkbox, { size: compact ? "small" : "medium", checked: selected, onChange: () => {
23
21
  if (isDisable || !row.id)
24
22
  return;
25
23
  let ids = [...state.selected];
@@ -35,12 +33,12 @@ const Row = ({ rows, rawRow, row, rowAction, disableRow, hideCheckbox, columns,
35
33
  selected: ids
36
34
  });
37
35
  } }) }), columns.map((_a, idx) => {
38
- var { label, field, sortable } = _a, rest = tslib.__rest(_a, ["label", "field", "sortable"]);
36
+ var { label, field, sortable } = _a, rest = __rest(_a, ["label", "field", "sortable"]);
39
37
  field = field || label;
40
38
  if (!row[field])
41
- return jsxRuntime.jsx(index$1, {}, idx);
42
- return (jsxRuntime.jsx(index$1, Object.assign({ textAlign: "left" }, rest, { bgcolor: selectedColor, children: row[field] }), idx));
43
- }), !!(rows.length && rowAction && ((_a = rowAction(rows[0])) === null || _a === void 0 ? void 0 : _a.length)) && jsxRuntime.jsxs(index$1, { width: 30, bgcolor: selectedColor, borderColor: "divider", children: [jsxRuntime.jsx(index$3, { disabled: isDisable || selected, onClick: (e) => setTarget(e.currentTarget), variant: "text", color: "default", children: jsxRuntime.jsx(ActionIcon, {}) }), jsxRuntime.jsx(index$4, { target: target, placement: "bottom-right", onClickOutside: () => setTarget(null), children: jsxRuntime.jsx(index$5, { bgcolor: "background.primary", minWidth: 160, sx: {
39
+ return jsx(TableCell, {}, idx);
40
+ return (jsx(TableCell, Object.assign({ textAlign: "left" }, rest, { bgcolor: selectedColor, children: row[field] }), idx));
41
+ }), !!(rows.length && rowAction && ((_a = rowAction(rows[0])) === null || _a === void 0 ? void 0 : _a.length)) && jsxs(TableCell, { width: 30, bgcolor: selectedColor, borderColor: "divider", children: [jsx(IconButton, { disabled: isDisable || selected, onClick: (e) => setTarget(e.currentTarget), variant: "text", color: "default", children: jsx(ActionIcon, {}) }), jsx(Menu, { target: target, placement: "bottom-right", onClickOutside: () => setTarget(null), children: jsx(List, { bgcolor: "background.primary", minWidth: 160, sx: {
44
42
  '& > li': {
45
43
  borderBottom: 1,
46
44
  '&:last-child': {
@@ -48,12 +46,12 @@ const Row = ({ rows, rawRow, row, rowAction, disableRow, hideCheckbox, columns,
48
46
  }
49
47
  }
50
48
  }, children: rowAction({ row, state }).map(({ label, icon, onClick }) => {
51
- return (jsxRuntime.jsx(index$6, { startIcon: icon, onClick: (e) => {
49
+ return (jsx(ListItem, { startIcon: icon, onClick: (e) => {
52
50
  onClick && onClick(e);
53
51
  setTarget(null);
54
52
  }, children: label }, label));
55
53
  }) }) })] })] }));
56
54
  };
57
55
 
58
- module.exports = Row;
56
+ export { Row as default };
59
57
  //# sourceMappingURL=Row.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Row.js","sources":["../../src/Datatable/Row.tsx"],"sourcesContent":["\"use client\";\r\nimport { useState } from 'react'\r\nimport TableRow from '../TableRow'\r\nimport TableCell from '../TableCell'\r\nimport Checkbox from '../Checkbox'\r\nimport IconButton from '../IconButton'\r\nimport List from '../List'\r\nimport ListItem from '../ListItem'\r\nimport ActionIcon from '@xanui/icons/MoreVert'\r\nimport Menu from '../Menu'\r\nimport { DataTableDefaultRow, DatatablePropsWithState } from './types';\r\n\r\n\r\ntype Props = DatatablePropsWithState & {\r\n rawRow: DataTableDefaultRow;\r\n row: DataTableDefaultRow;\r\n}\r\n\r\nconst Row = ({ rows, rawRow, row, rowAction, disableRow, hideCheckbox, columns, compact, state, update }: Props) => {\r\n const selected = row.id ? state.selected.includes(row?.id) : false\r\n let selectedColor = selected ? \"primary.soft\" : \"transparent\"\r\n const [target, setTarget] = useState<any>()\r\n const isDisable = (disableRow ? disableRow(rawRow, state) : false) || false\r\n\r\n return (\r\n <TableRow >\r\n {!hideCheckbox && <TableCell width={40} bgcolor={selectedColor}>\r\n {\r\n !!row.id && <Checkbox\r\n size={compact ? \"small\" : \"medium\"}\r\n checked={selected}\r\n onChange={() => {\r\n if (isDisable || !row.id) return\r\n let ids = [...state.selected]\r\n ids.includes(row.id) ? ids.splice(ids.indexOf(row.id), 1) : ids.push(row.id)\r\n let selectedLength = 0\r\n rows.forEach(r => {\r\n const isDisable = (disableRow ? disableRow(r, state) : false) || false\r\n if (!isDisable) selectedLength++\r\n })\r\n\r\n update({\r\n selectAll: selectedLength === ids.length,\r\n selected: ids\r\n })\r\n }}\r\n />\r\n }\r\n\r\n </TableCell>}\r\n {\r\n columns.map(({ label, field, sortable, ...rest }, idx) => {\r\n field = field || label\r\n if (!row[field]) return <TableCell key={idx}></TableCell>\r\n return (\r\n <TableCell\r\n key={idx}\r\n textAlign=\"left\"\r\n {...rest}\r\n bgcolor={selectedColor}\r\n >\r\n {row[field]}\r\n </TableCell>\r\n )\r\n })\r\n }\r\n {!!(rows.length && rowAction && rowAction((rows as any)[0])?.length) && <TableCell width={30} bgcolor={selectedColor} borderColor=\"divider\">\r\n <IconButton\r\n disabled={isDisable || selected}\r\n onClick={(e: any) => setTarget(e.currentTarget)}\r\n variant=\"text\"\r\n color=\"default\"\r\n >\r\n <ActionIcon />\r\n </IconButton>\r\n <Menu target={target} placement=\"bottom-right\" onClickOutside={() => setTarget(null)}>\r\n <List\r\n bgcolor=\"background.primary\"\r\n minWidth={160}\r\n sx={{\r\n '& > li': {\r\n borderBottom: 1,\r\n '&:last-child': {\r\n borderBottom: 0\r\n }\r\n }\r\n }}\r\n >\r\n {rowAction({ row, state }).map(({ label, icon, onClick }) => {\r\n return (\r\n <ListItem\r\n key={label}\r\n startIcon={icon}\r\n onClick={(e: any) => {\r\n onClick && onClick(e)\r\n setTarget(null)\r\n }}\r\n >{label}</ListItem>\r\n )\r\n })}\r\n </List>\r\n </Menu>\r\n </TableCell>\r\n }\r\n </TableRow>\r\n )\r\n}\r\n\r\nexport default Row"],"names":[],"mappings":";;;;;;;;;;;;;;;AAkBA;;;;;;;AAc4B;;;AAEA;;AAEA;;AAEI;AAAgB;AACpB;AAEA;AACI;AACA;AACH;AACL;;AAOJ;AACA;AAAiB;;;AA2BT;AACI;AACA;AACI;AACH;AACJ;;AAID;AAKY;;AAEJ;AAGZ;AAOxB;;"}
1
+ {"version":3,"file":"Row.js","sources":["../../src/Datatable/Row.tsx"],"sourcesContent":["'use client'\r\nimport { useState } from 'react'\r\nimport TableRow from '../TableRow'\r\nimport TableCell from '../TableCell'\r\nimport Checkbox from '../Checkbox'\r\nimport IconButton from '../IconButton'\r\nimport List from '../List'\r\nimport ListItem from '../ListItem'\r\nimport ActionIcon from '@xanui/icons/MoreVert'\r\nimport Menu from '../Menu'\r\nimport { DataTableDefaultRow, DatatablePropsWithState } from './types';\r\n\r\n\r\ntype Props = DatatablePropsWithState & {\r\n rawRow: DataTableDefaultRow;\r\n row: DataTableDefaultRow;\r\n}\r\n\r\nconst Row = ({ rows, rawRow, row, rowAction, disableRow, hideCheckbox, columns, compact, state, update }: Props) => {\r\n const selected = row.id ? state.selected.includes(row?.id) : false\r\n let selectedColor = selected ? \"primary.soft\" : \"transparent\"\r\n const [target, setTarget] = useState<any>()\r\n const isDisable = (disableRow ? disableRow(rawRow, state) : false) || false\r\n\r\n return (\r\n <TableRow >\r\n {!hideCheckbox && <TableCell width={40} bgcolor={selectedColor}>\r\n {\r\n !!row.id && <Checkbox\r\n size={compact ? \"small\" : \"medium\"}\r\n checked={selected}\r\n onChange={() => {\r\n if (isDisable || !row.id) return\r\n let ids = [...state.selected]\r\n ids.includes(row.id) ? ids.splice(ids.indexOf(row.id), 1) : ids.push(row.id)\r\n let selectedLength = 0\r\n rows.forEach(r => {\r\n const isDisable = (disableRow ? disableRow(r, state) : false) || false\r\n if (!isDisable) selectedLength++\r\n })\r\n\r\n update({\r\n selectAll: selectedLength === ids.length,\r\n selected: ids\r\n })\r\n }}\r\n />\r\n }\r\n\r\n </TableCell>}\r\n {\r\n columns.map(({ label, field, sortable, ...rest }, idx) => {\r\n field = field || label\r\n if (!row[field]) return <TableCell key={idx}></TableCell>\r\n return (\r\n <TableCell\r\n key={idx}\r\n textAlign=\"left\"\r\n {...rest}\r\n bgcolor={selectedColor}\r\n >\r\n {row[field]}\r\n </TableCell>\r\n )\r\n })\r\n }\r\n {!!(rows.length && rowAction && rowAction((rows as any)[0])?.length) && <TableCell width={30} bgcolor={selectedColor} borderColor=\"divider\">\r\n <IconButton\r\n disabled={isDisable || selected}\r\n onClick={(e: any) => setTarget(e.currentTarget)}\r\n variant=\"text\"\r\n color=\"default\"\r\n >\r\n <ActionIcon />\r\n </IconButton>\r\n <Menu target={target} placement=\"bottom-right\" onClickOutside={() => setTarget(null)}>\r\n <List\r\n bgcolor=\"background.primary\"\r\n minWidth={160}\r\n sx={{\r\n '& > li': {\r\n borderBottom: 1,\r\n '&:last-child': {\r\n borderBottom: 0\r\n }\r\n }\r\n }}\r\n >\r\n {rowAction({ row, state }).map(({ label, icon, onClick }) => {\r\n return (\r\n <ListItem\r\n key={label}\r\n startIcon={icon}\r\n onClick={(e: any) => {\r\n onClick && onClick(e)\r\n setTarget(null)\r\n }}\r\n >{label}</ListItem>\r\n )\r\n })}\r\n </List>\r\n </Menu>\r\n </TableCell>\r\n }\r\n </TableRow>\r\n )\r\n}\r\n\r\nexport default Row"],"names":[],"mappings":";;;;;;;;;;;;;AAkBA;;;;;;;AAc4B;;;AAEA;;AAEA;;AAEI;AAAgB;AACpB;AAEA;AACI;AACA;AACH;AACL;;AAOJ;AACA;AAAiB;;;AA2BT;AACI;AACA;AACI;AACH;AACJ;;AAID;AAKY;;AAEJ;AAGZ;AAOxB;;"}
@@ -0,0 +1,21 @@
1
+ 'use strict';
2
+
3
+ var tslib = require('tslib');
4
+ var jsxRuntime = require('react/jsx-runtime');
5
+ var index$2 = require('../IconButton/index.cjs');
6
+ var index = require('../Stack/index.cjs');
7
+ var index$1 = require('../Text/index.cjs');
8
+
9
+ const SelectedBox = (props) => {
10
+ let { state, rowAction } = props;
11
+ let checked = state.selectAll || !!state.selected.length;
12
+ if (!checked)
13
+ return jsxRuntime.jsx(jsxRuntime.Fragment, {});
14
+ return (jsxRuntime.jsxs(index, { bgcolor: "background.secondary", direction: "row", alignItems: "center", justifyContent: "space-between", zIndex: 1, radius: 1, mb: 1, height: 50, width: "100%", px: 1.5, children: [jsxRuntime.jsxs(index$1, { fontWeight: 600, children: ["Selected: ", state.selected.length] }), jsxRuntime.jsx(index, { flexRow: true, gap: 1, children: rowAction && rowAction({ row: null, state }).map((_a) => {
15
+ var { label, icon } = _a, bprops = tslib.__rest(_a, ["label", "icon"]);
16
+ return (jsxRuntime.jsx(index$2, Object.assign({ variant: "soft", color: "brand" }, bprops, { children: icon }), label));
17
+ }) })] }));
18
+ };
19
+
20
+ module.exports = SelectedBox;
21
+ //# sourceMappingURL=SelectedBox.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SelectedBox.cjs","sources":["../../src/Datatable/SelectedBox.tsx"],"sourcesContent":["import IconButton from '../IconButton'\r\nimport Stack from '../Stack'\r\nimport Text from '../Text'\r\nimport { DatatablePropsWithState } from './types'\r\n\r\nconst SelectedBox = (props: DatatablePropsWithState) => {\r\n let {\r\n state,\r\n rowAction\r\n } = props\r\n\r\n let checked = state.selectAll || !!state.selected.length\r\n if (!checked) return <></>\r\n\r\n return (\r\n <Stack\r\n bgcolor=\"background.secondary\"\r\n direction=\"row\"\r\n alignItems=\"center\"\r\n justifyContent=\"space-between\"\r\n zIndex={1}\r\n radius={1}\r\n mb={1}\r\n height={50}\r\n width=\"100%\"\r\n px={1.5}\r\n >\r\n <Text fontWeight={600}>Selected: {state.selected.length}</Text>\r\n <Stack\r\n flexRow\r\n gap={1}\r\n >\r\n {rowAction && rowAction({ row: null, state }).map(({ label, icon, ...bprops }) => {\r\n return (\r\n <IconButton\r\n key={label}\r\n variant=\"soft\"\r\n color=\"brand\"\r\n {...bprops}\r\n >\r\n {icon}\r\n </IconButton>\r\n )\r\n })}\r\n </Stack>\r\n </Stack>\r\n )\r\n}\r\n\r\nexport default SelectedBox"],"names":["_jsx","_jsxs","Stack","Text","__rest","IconButton"],"mappings":";;;;;;;;AAKA,MAAM,WAAW,GAAG,CAAC,KAA8B,KAAI;AACpD,IAAA,IAAI,EACD,KAAK,EACL,SAAS,EACX,GAAG,KAAK;AAET,IAAA,IAAI,OAAO,GAAG,KAAK,CAAC,SAAS,IAAI,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM;AACxD,IAAA,IAAI,CAAC,OAAO;AAAE,QAAA,OAAOA,uCAAK;AAE1B,IAAA,QACGC,eAAA,CAACC,KAAK,IACH,OAAO,EAAC,sBAAsB,EAC9B,SAAS,EAAC,KAAK,EACf,UAAU,EAAC,QAAQ,EACnB,cAAc,EAAC,eAAe,EAC9B,MAAM,EAAE,CAAC,EACT,MAAM,EAAE,CAAC,EACT,EAAE,EAAE,CAAC,EACL,MAAM,EAAE,EAAE,EACV,KAAK,EAAC,MAAM,EACZ,EAAE,EAAE,GAAG,EAAA,QAAA,EAAA,CAEPD,gBAACE,OAAI,EAAA,EAAC,UAAU,EAAE,GAAG,2BAAa,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAA,EAAA,CAAQ,EAC/DH,eAACE,KAAK,EAAA,EACH,OAAO,EAAA,IAAA,EACP,GAAG,EAAE,CAAC,YAEL,SAAS,IAAI,SAAS,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAA0B,KAAI;wBAA9B,EAAE,KAAK,EAAE,IAAI,EAAA,GAAA,EAAa,EAAR,MAAM,GAAAE,YAAA,CAAA,EAAA,EAAxB,iBAA0B,CAAF;AACxE,oBAAA,QACGJ,cAAA,CAACK,OAAU,kBAER,OAAO,EAAC,MAAM,EACd,KAAK,EAAC,OAAO,EAAA,EACT,MAAM,EAAA,EAAA,QAAA,EAET,IAAI,KALA,KAAK,CAMA;AAEnB,gBAAA,CAAC,CAAC,EAAA,CACG,CAAA,EAAA,CACH;AAEd;;;;"}
@@ -1,21 +1,19 @@
1
- 'use strict';
2
-
3
- var tslib = require('tslib');
4
- var jsxRuntime = require('react/jsx-runtime');
5
- var index$2 = require('../IconButton/index.js');
6
- var index = require('../Stack/index.js');
7
- var index$1 = require('../Text/index.js');
1
+ import { __rest } from 'tslib';
2
+ import { jsx, Fragment, jsxs } from 'react/jsx-runtime';
3
+ import IconButton from '../IconButton/index.js';
4
+ import Stack from '../Stack/index.js';
5
+ import Text from '../Text/index.js';
8
6
 
9
7
  const SelectedBox = (props) => {
10
8
  let { state, rowAction } = props;
11
9
  let checked = state.selectAll || !!state.selected.length;
12
10
  if (!checked)
13
- return jsxRuntime.jsx(jsxRuntime.Fragment, {});
14
- return (jsxRuntime.jsxs(index, { bgcolor: "background.secondary", direction: "row", alignItems: "center", justifyContent: "space-between", zIndex: 1, radius: 1, mb: 1, height: 50, width: "100%", px: 1.5, children: [jsxRuntime.jsxs(index$1, { fontWeight: 600, children: ["Selected: ", state.selected.length] }), jsxRuntime.jsx(index, { flexRow: true, gap: 1, children: rowAction && rowAction({ row: null, state }).map((_a) => {
15
- var { label, icon } = _a, bprops = tslib.__rest(_a, ["label", "icon"]);
16
- return (jsxRuntime.jsx(index$2, Object.assign({ variant: "soft", color: "brand" }, bprops, { children: icon }), label));
11
+ return jsx(Fragment, {});
12
+ return (jsxs(Stack, { bgcolor: "background.secondary", direction: "row", alignItems: "center", justifyContent: "space-between", zIndex: 1, radius: 1, mb: 1, height: 50, width: "100%", px: 1.5, children: [jsxs(Text, { fontWeight: 600, children: ["Selected: ", state.selected.length] }), jsx(Stack, { flexRow: true, gap: 1, children: rowAction && rowAction({ row: null, state }).map((_a) => {
13
+ var { label, icon } = _a, bprops = __rest(_a, ["label", "icon"]);
14
+ return (jsx(IconButton, Object.assign({ variant: "soft", color: "brand" }, bprops, { children: icon }), label));
17
15
  }) })] }));
18
16
  };
19
17
 
20
- module.exports = SelectedBox;
18
+ export { SelectedBox as default };
21
19
  //# sourceMappingURL=SelectedBox.js.map