@xanui/ui 1.2.6 → 1.2.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 (332) hide show
  1. package/Accordion/index.cjs +5 -5
  2. package/Accordion/index.cjs.map +1 -1
  3. package/Accordion/index.d.ts +3 -3
  4. package/Accordion/index.js +5 -5
  5. package/Accordion/index.js.map +1 -1
  6. package/Alert/index.cjs +19 -17
  7. package/Alert/index.cjs.map +1 -1
  8. package/Alert/index.d.ts +2 -2
  9. package/Alert/index.js +19 -17
  10. package/Alert/index.js.map +1 -1
  11. package/Autocomplete/index.cjs +2 -2
  12. package/Autocomplete/index.cjs.map +1 -1
  13. package/Autocomplete/index.d.ts +7 -7
  14. package/Autocomplete/index.js +2 -2
  15. package/Autocomplete/index.js.map +1 -1
  16. package/Avatar/index.cjs +2 -2
  17. package/Avatar/index.cjs.map +1 -1
  18. package/Avatar/index.d.ts +2 -2
  19. package/Avatar/index.js +2 -2
  20. package/Avatar/index.js.map +1 -1
  21. package/AvatarBox/index.cjs +19 -0
  22. package/AvatarBox/index.cjs.map +1 -0
  23. package/AvatarBox/index.d.ts +19 -0
  24. package/AvatarBox/index.js +17 -0
  25. package/AvatarBox/index.js.map +1 -0
  26. package/AvatarPicker/index.cjs +80 -0
  27. package/AvatarPicker/index.cjs.map +1 -0
  28. package/AvatarPicker/index.d.ts +27 -0
  29. package/AvatarPicker/index.js +78 -0
  30. package/AvatarPicker/index.js.map +1 -0
  31. package/Badge/index.cjs +1 -1
  32. package/Badge/index.cjs.map +1 -1
  33. package/Badge/index.d.ts +4 -4
  34. package/Badge/index.js +1 -1
  35. package/Badge/index.js.map +1 -1
  36. package/Box/index.d.ts +2 -2
  37. package/Button/index.cjs +5 -3
  38. package/Button/index.cjs.map +1 -1
  39. package/Button/index.d.ts +2 -2
  40. package/Button/index.js +5 -3
  41. package/Button/index.js.map +1 -1
  42. package/ButtonGroup/index.cjs +3 -2
  43. package/ButtonGroup/index.cjs.map +1 -1
  44. package/ButtonGroup/index.d.ts +2 -2
  45. package/ButtonGroup/index.js +3 -2
  46. package/ButtonGroup/index.js.map +1 -1
  47. package/Calendar/index.cjs +10 -10
  48. package/Calendar/index.cjs.map +1 -1
  49. package/Calendar/index.js +10 -10
  50. package/Calendar/index.js.map +1 -1
  51. package/CalendarInput/index.cjs +1 -1
  52. package/CalendarInput/index.cjs.map +1 -1
  53. package/CalendarInput/index.js +1 -1
  54. package/CalendarInput/index.js.map +1 -1
  55. package/Card/index.cjs +34 -0
  56. package/Card/index.cjs.map +1 -0
  57. package/Card/index.d.ts +10 -0
  58. package/Card/index.js +32 -0
  59. package/Card/index.js.map +1 -0
  60. package/Carousel/index.cjs +231 -0
  61. package/Carousel/index.cjs.map +1 -0
  62. package/Carousel/index.d.ts +28 -0
  63. package/Carousel/index.js +229 -0
  64. package/Carousel/index.js.map +1 -0
  65. package/Checkbox/index.cjs +2 -2
  66. package/Checkbox/index.cjs.map +1 -1
  67. package/Checkbox/index.d.ts +2 -2
  68. package/Checkbox/index.js +2 -2
  69. package/Checkbox/index.js.map +1 -1
  70. package/Chip/index.cjs +3 -3
  71. package/Chip/index.cjs.map +1 -1
  72. package/Chip/index.d.ts +2 -2
  73. package/Chip/index.js +3 -3
  74. package/Chip/index.js.map +1 -1
  75. package/CircleProgress/index.cjs +10 -10
  76. package/CircleProgress/index.cjs.map +1 -1
  77. package/CircleProgress/index.d.ts +2 -2
  78. package/CircleProgress/index.js +10 -10
  79. package/CircleProgress/index.js.map +1 -1
  80. package/ClickOutside/index.cjs +3 -12
  81. package/ClickOutside/index.cjs.map +1 -1
  82. package/ClickOutside/index.d.ts +3 -3
  83. package/ClickOutside/index.js +4 -13
  84. package/ClickOutside/index.js.map +1 -1
  85. package/Collaps/index.cjs +5 -5
  86. package/Collaps/index.cjs.map +1 -1
  87. package/Collaps/index.d.ts +2 -2
  88. package/Collaps/index.js +5 -5
  89. package/Collaps/index.js.map +1 -1
  90. package/Container/index.d.ts +2 -2
  91. package/DataFilter/index.d.ts +2 -2
  92. package/DataFilter/options/DateFilter.cjs +3 -3
  93. package/DataFilter/options/DateFilter.cjs.map +1 -1
  94. package/DataFilter/options/DateFilter.js +3 -3
  95. package/DataFilter/options/DateFilter.js.map +1 -1
  96. package/DataFilter/options/DateRangeFilter.cjs +2 -2
  97. package/DataFilter/options/DateRangeFilter.cjs.map +1 -1
  98. package/DataFilter/options/DateRangeFilter.js +2 -2
  99. package/DataFilter/options/DateRangeFilter.js.map +1 -1
  100. package/DataFilter/options/MultiSelectFilter.cjs +3 -3
  101. package/DataFilter/options/MultiSelectFilter.cjs.map +1 -1
  102. package/DataFilter/options/MultiSelectFilter.js +3 -3
  103. package/DataFilter/options/MultiSelectFilter.js.map +1 -1
  104. package/DataFilter/options/NumberFilter.cjs +2 -2
  105. package/DataFilter/options/NumberFilter.cjs.map +1 -1
  106. package/DataFilter/options/NumberFilter.js +2 -2
  107. package/DataFilter/options/NumberFilter.js.map +1 -1
  108. package/DataFilter/options/NumberRangeFilter.cjs +2 -2
  109. package/DataFilter/options/NumberRangeFilter.cjs.map +1 -1
  110. package/DataFilter/options/NumberRangeFilter.js +2 -2
  111. package/DataFilter/options/NumberRangeFilter.js.map +1 -1
  112. package/DataFilter/options/SelectFilter.cjs +3 -3
  113. package/DataFilter/options/SelectFilter.cjs.map +1 -1
  114. package/DataFilter/options/SelectFilter.js +3 -3
  115. package/DataFilter/options/SelectFilter.js.map +1 -1
  116. package/DataFilter/options/TextFilter.cjs +2 -2
  117. package/DataFilter/options/TextFilter.cjs.map +1 -1
  118. package/DataFilter/options/TextFilter.js +2 -2
  119. package/DataFilter/options/TextFilter.js.map +1 -1
  120. package/Datatable/FilterBox.cjs +2 -2
  121. package/Datatable/FilterBox.cjs.map +1 -1
  122. package/Datatable/FilterBox.js +2 -2
  123. package/Datatable/FilterBox.js.map +1 -1
  124. package/Datatable/Row.cjs +2 -2
  125. package/Datatable/Row.cjs.map +1 -1
  126. package/Datatable/Row.js +2 -2
  127. package/Datatable/Row.js.map +1 -1
  128. package/Datatable/SelectedBox.cjs +2 -2
  129. package/Datatable/SelectedBox.cjs.map +1 -1
  130. package/Datatable/SelectedBox.js +2 -2
  131. package/Datatable/SelectedBox.js.map +1 -1
  132. package/Datatable/Table.cjs +1 -1
  133. package/Datatable/Table.cjs.map +1 -1
  134. package/Datatable/Table.js +1 -1
  135. package/Datatable/Table.js.map +1 -1
  136. package/Datatable/TableHead.cjs +3 -3
  137. package/Datatable/TableHead.cjs.map +1 -1
  138. package/Datatable/TableHead.js +3 -3
  139. package/Datatable/TableHead.js.map +1 -1
  140. package/Datatable/index.cjs +1 -1
  141. package/Datatable/index.cjs.map +1 -1
  142. package/Datatable/index.d.ts +2 -2
  143. package/Datatable/index.js +1 -1
  144. package/Datatable/index.js.map +1 -1
  145. package/Divider/index.cjs +3 -3
  146. package/Divider/index.cjs.map +1 -1
  147. package/Divider/index.d.ts +2 -2
  148. package/Divider/index.js +3 -3
  149. package/Divider/index.js.map +1 -1
  150. package/Drawer/index.cjs +2 -2
  151. package/Drawer/index.cjs.map +1 -1
  152. package/Drawer/index.js +2 -2
  153. package/Drawer/index.js.map +1 -1
  154. package/FilePicker/index.cjs +115 -0
  155. package/FilePicker/index.cjs.map +1 -0
  156. package/FilePicker/index.d.ts +23 -0
  157. package/FilePicker/index.js +113 -0
  158. package/FilePicker/index.js.map +1 -0
  159. package/Form/index.cjs +1 -1
  160. package/Form/index.cjs.map +1 -1
  161. package/Form/index.d.ts +2 -2
  162. package/Form/index.js +1 -1
  163. package/Form/index.js.map +1 -1
  164. package/GalleryPicker/index.cjs +88 -0
  165. package/GalleryPicker/index.cjs.map +1 -0
  166. package/GalleryPicker/index.d.ts +26 -0
  167. package/GalleryPicker/index.js +86 -0
  168. package/GalleryPicker/index.js.map +1 -0
  169. package/GridContainer/index.d.ts +2 -2
  170. package/GridItem/index.d.ts +2 -2
  171. package/IconButton/index.cjs +6 -3
  172. package/IconButton/index.cjs.map +1 -1
  173. package/IconButton/index.d.ts +2 -2
  174. package/IconButton/index.js +6 -3
  175. package/IconButton/index.js.map +1 -1
  176. package/Image/index.cjs +2 -14
  177. package/Image/index.cjs.map +1 -1
  178. package/Image/index.d.ts +3 -5
  179. package/Image/index.js +3 -15
  180. package/Image/index.js.map +1 -1
  181. package/Input/index.cjs +10 -10
  182. package/Input/index.cjs.map +1 -1
  183. package/Input/index.d.ts +14 -14
  184. package/Input/index.js +10 -10
  185. package/Input/index.js.map +1 -1
  186. package/InputNumber/index.d.ts +2 -2
  187. package/Label/index.cjs +1 -1
  188. package/Label/index.cjs.map +1 -1
  189. package/Label/index.d.ts +2 -2
  190. package/Label/index.js +1 -1
  191. package/Label/index.js.map +1 -1
  192. package/Layer/index.cjs +12 -13
  193. package/Layer/index.cjs.map +1 -1
  194. package/Layer/index.d.ts +5 -5
  195. package/Layer/index.js +13 -14
  196. package/Layer/index.js.map +1 -1
  197. package/LineProgress/index.cjs +6 -6
  198. package/LineProgress/index.cjs.map +1 -1
  199. package/LineProgress/index.d.ts +2 -2
  200. package/LineProgress/index.js +6 -6
  201. package/LineProgress/index.js.map +1 -1
  202. package/Link/index.cjs +41 -0
  203. package/Link/index.cjs.map +1 -0
  204. package/Link/index.d.ts +17 -0
  205. package/Link/index.js +39 -0
  206. package/Link/index.js.map +1 -0
  207. package/List/index.cjs +1 -1
  208. package/List/index.cjs.map +1 -1
  209. package/List/index.d.ts +2 -2
  210. package/List/index.js +1 -1
  211. package/List/index.js.map +1 -1
  212. package/ListItem/index.cjs +8 -8
  213. package/ListItem/index.cjs.map +1 -1
  214. package/ListItem/index.d.ts +2 -2
  215. package/ListItem/index.js +8 -8
  216. package/ListItem/index.js.map +1 -1
  217. package/LoadingBox/index.cjs +2 -2
  218. package/LoadingBox/index.cjs.map +1 -1
  219. package/LoadingBox/index.d.ts +2 -2
  220. package/LoadingBox/index.js +2 -2
  221. package/LoadingBox/index.js.map +1 -1
  222. package/Menu/index.cjs +6 -21
  223. package/Menu/index.cjs.map +1 -1
  224. package/Menu/index.d.ts +6 -4
  225. package/Menu/index.js +6 -21
  226. package/Menu/index.js.map +1 -1
  227. package/Modal/index.cjs +5 -5
  228. package/Modal/index.cjs.map +1 -1
  229. package/Modal/index.js +5 -5
  230. package/Modal/index.js.map +1 -1
  231. package/Option/index.d.ts +2 -2
  232. package/PasswordInput/index.cjs +21 -0
  233. package/PasswordInput/index.cjs.map +1 -0
  234. package/PasswordInput/index.d.ts +11 -0
  235. package/PasswordInput/index.js +19 -0
  236. package/PasswordInput/index.js.map +1 -0
  237. package/Portal/index.d.ts +3 -3
  238. package/Radio/index.d.ts +2 -2
  239. package/RangeSlider/index.cjs +158 -0
  240. package/RangeSlider/index.cjs.map +1 -0
  241. package/RangeSlider/index.d.ts +24 -0
  242. package/RangeSlider/index.js +156 -0
  243. package/RangeSlider/index.js.map +1 -0
  244. package/Scrollbar/index.cjs +6 -6
  245. package/Scrollbar/index.cjs.map +1 -1
  246. package/Scrollbar/index.d.ts +3 -3
  247. package/Scrollbar/index.js +6 -6
  248. package/Scrollbar/index.js.map +1 -1
  249. package/Select/index.cjs +2 -2
  250. package/Select/index.cjs.map +1 -1
  251. package/Select/index.d.ts +5 -5
  252. package/Select/index.js +2 -2
  253. package/Select/index.js.map +1 -1
  254. package/Skeleton/index.cjs +7 -5
  255. package/Skeleton/index.cjs.map +1 -1
  256. package/Skeleton/index.js +7 -5
  257. package/Skeleton/index.js.map +1 -1
  258. package/Stack/index.d.ts +2 -2
  259. package/Switch/index.cjs +2 -2
  260. package/Switch/index.cjs.map +1 -1
  261. package/Switch/index.d.ts +3 -3
  262. package/Switch/index.js +2 -2
  263. package/Switch/index.js.map +1 -1
  264. package/Tab/index.cjs +23 -2
  265. package/Tab/index.cjs.map +1 -1
  266. package/Tab/index.d.ts +2 -2
  267. package/Tab/index.js +25 -4
  268. package/Tab/index.js.map +1 -1
  269. package/Table/index.cjs +9 -9
  270. package/Table/index.cjs.map +1 -1
  271. package/Table/index.d.ts +2 -2
  272. package/Table/index.js +9 -9
  273. package/Table/index.js.map +1 -1
  274. package/TableBody/index.d.ts +2 -2
  275. package/TableCell/index.cjs +1 -1
  276. package/TableCell/index.cjs.map +1 -1
  277. package/TableCell/index.d.ts +2 -2
  278. package/TableCell/index.js +1 -1
  279. package/TableCell/index.js.map +1 -1
  280. package/TableFooter/index.d.ts +2 -2
  281. package/TableHead/index.d.ts +2 -2
  282. package/TablePagination/index.cjs +2 -2
  283. package/TablePagination/index.cjs.map +1 -1
  284. package/TablePagination/index.d.ts +2 -2
  285. package/TablePagination/index.js +2 -2
  286. package/TablePagination/index.js.map +1 -1
  287. package/TableRow/index.d.ts +2 -2
  288. package/Tabs/context.cjs +11 -0
  289. package/Tabs/context.cjs.map +1 -0
  290. package/Tabs/context.js +8 -0
  291. package/Tabs/context.js.map +1 -0
  292. package/Tabs/index.cjs +83 -168
  293. package/Tabs/index.cjs.map +1 -1
  294. package/Tabs/index.d.ts +4 -22
  295. package/Tabs/index.js +86 -171
  296. package/Tabs/index.js.map +1 -1
  297. package/Tabs/types.d.ts +16 -0
  298. package/Text/index.cjs +1 -1
  299. package/Text/index.cjs.map +1 -1
  300. package/Text/index.d.ts +2 -2
  301. package/Text/index.js +1 -1
  302. package/Text/index.js.map +1 -1
  303. package/Toast/index.cjs +15 -16
  304. package/Toast/index.cjs.map +1 -1
  305. package/Toast/index.js +16 -17
  306. package/Toast/index.js.map +1 -1
  307. package/Tooltip/index.cjs +2 -2
  308. package/Tooltip/index.cjs.map +1 -1
  309. package/Tooltip/index.js +2 -2
  310. package/Tooltip/index.js.map +1 -1
  311. package/ViewBox/index.d.ts +2 -2
  312. package/index.cjs +126 -110
  313. package/index.cjs.map +1 -1
  314. package/index.d.ts +9 -1
  315. package/index.js +9 -1
  316. package/index.js.map +1 -1
  317. package/package.json +2 -2
  318. package/readme.md +1 -1
  319. package/useBlurCss/index.cjs +1 -2
  320. package/useBlurCss/index.cjs.map +1 -1
  321. package/useBlurCss/index.js +1 -2
  322. package/useBlurCss/index.js.map +1 -1
  323. package/useContextMenu/index.cjs +2 -2
  324. package/useContextMenu/index.cjs.map +1 -1
  325. package/useContextMenu/index.d.ts +1 -1
  326. package/useContextMenu/index.js +2 -2
  327. package/useContextMenu/index.js.map +1 -1
  328. package/Paper/index.cjs +0 -16
  329. package/Paper/index.cjs.map +0 -1
  330. package/Paper/index.d.ts +0 -8
  331. package/Paper/index.js +0 -14
  332. package/Paper/index.js.map +0 -1
@@ -11,9 +11,9 @@ var index$3 = require('../../Input/index.cjs');
11
11
 
12
12
  const TextFilter = ({ option, onChange, value }) => {
13
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: () => {
14
+ return (jsxRuntime.jsxs(index, { width: "100%", bgcolor: "surface.light", 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: "ghost", color: 'surface', onClick: () => {
15
15
  onChange('');
16
- }, children: jsxRuntime.jsx(Add, {}) }), isValue && jsxRuntime.jsx(index$2, { size: "small", variant: "soft", color: "danger", onClick: () => {
16
+ }, children: jsxRuntime.jsx(Add, {}) }), isValue && jsxRuntime.jsx(index$2, { size: "small", variant: "ghost", color: "danger", onClick: () => {
17
17
  onChange(null);
18
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
19
  onChange(e.target.value);
@@ -1 +1 @@
1
- {"version":3,"file":"TextFilter.cjs","sources":["../../../src/DataFilter/options/TextFilter.tsx"],"sourcesContent":["\"use client\"\n\nimport { DataFilterSelect } from \"../types\";\nimport IconButton from \"../../IconButton\";\nimport Stack from \"../../Stack\";\nimport Text from \"../../Text\";\nimport Add from \"@xanui/icons/Add\";\nimport ClearAll from \"@xanui/icons/ClearAll\";\nimport Input from \"../../Input\";\n\ntype Props = {\n option: DataFilterSelect;\n value: string | null;\n onChange: (value: string | null) => void;\n}\n\nconst TextFilter = ({ option, onChange, value }: Props) => {\n\n const isValue = value !== null && value !== undefined;\n\n return (\n <Stack\n width={\"100%\"}\n bgcolor=\"background.secondary\"\n p={1}\n radius={1}\n >\n <Stack\n direction=\"row\"\n alignItems=\"center\"\n justifyContent={\"space-between\"}\n gap={0.5}\n mb={isValue ? .5 : 0}\n >\n <Text>{option.label}</Text>\n <Stack\n direction=\"row\"\n gap={0.5}\n >\n <IconButton\n size=\"small\"\n variant=\"soft\"\n color={\"default\"}\n onClick={() => {\n onChange('');\n }}\n >\n <Add />\n </IconButton>\n {\n isValue && <IconButton\n size=\"small\"\n variant=\"soft\"\n color={\"danger\"}\n onClick={() => {\n onChange(null);\n }}\n >\n <ClearAll />\n </IconButton>\n }\n </Stack>\n </Stack>\n <Stack\n direction=\"row\"\n gap={0.5}\n flexWrap=\"wrap\"\n >\n {\n isValue && <Input\n variant={\"outline\"}\n value={value.toString()}\n onChange={(e: any) => {\n onChange(e.target.value);\n }}\n fullWidth\n />\n }\n </Stack>\n </Stack>\n )\n}\n\nexport default TextFilter"],"names":[],"mappings":";;;;;;;;;;;AAgBA;;AAIG;;;;;AAqDkB;AACH;AAOlB;;"}
1
+ {"version":3,"file":"TextFilter.cjs","sources":["../../../src/DataFilter/options/TextFilter.tsx"],"sourcesContent":["\"use client\"\n\nimport { DataFilterSelect } from \"../types\";\nimport IconButton from \"../../IconButton\";\nimport Stack from \"../../Stack\";\nimport Text from \"../../Text\";\nimport Add from \"@xanui/icons/Add\";\nimport ClearAll from \"@xanui/icons/ClearAll\";\nimport Input from \"../../Input\";\n\ntype Props = {\n option: DataFilterSelect;\n value: string | null;\n onChange: (value: string | null) => void;\n}\n\nconst TextFilter = ({ option, onChange, value }: Props) => {\n\n const isValue = value !== null && value !== undefined;\n\n return (\n <Stack\n width={\"100%\"}\n bgcolor=\"surface.light\"\n p={1}\n radius={1}\n >\n <Stack\n direction=\"row\"\n alignItems=\"center\"\n justifyContent={\"space-between\"}\n gap={0.5}\n mb={isValue ? .5 : 0}\n >\n <Text>{option.label}</Text>\n <Stack\n direction=\"row\"\n gap={0.5}\n >\n <IconButton\n size=\"small\"\n variant=\"ghost\"\n color={'surface'}\n onClick={() => {\n onChange('');\n }}\n >\n <Add />\n </IconButton>\n {\n isValue && <IconButton\n size=\"small\"\n variant=\"ghost\"\n color={\"danger\"}\n onClick={() => {\n onChange(null);\n }}\n >\n <ClearAll />\n </IconButton>\n }\n </Stack>\n </Stack>\n <Stack\n direction=\"row\"\n gap={0.5}\n flexWrap=\"wrap\"\n >\n {\n isValue && <Input\n variant={\"outline\"}\n value={value.toString()}\n onChange={(e: any) => {\n onChange(e.target.value);\n }}\n fullWidth\n />\n }\n </Stack>\n </Stack>\n )\n}\n\nexport default TextFilter"],"names":[],"mappings":";;;;;;;;;;;AAgBA;;AAIG;;;;;AAqDkB;AACH;AAOlB;;"}
@@ -9,9 +9,9 @@ import Input from '../../Input/index.js';
9
9
 
10
10
  const TextFilter = ({ option, onChange, value }) => {
11
11
  const isValue = value !== null && value !== undefined;
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: () => {
12
+ return (jsxs(Stack, { width: "100%", bgcolor: "surface.light", 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: "ghost", color: 'surface', onClick: () => {
13
13
  onChange('');
14
- }, children: jsx(Add, {}) }), isValue && jsx(IconButton, { size: "small", variant: "soft", color: "danger", onClick: () => {
14
+ }, children: jsx(Add, {}) }), isValue && jsx(IconButton, { size: "small", variant: "ghost", color: "danger", onClick: () => {
15
15
  onChange(null);
16
16
  }, children: jsx(ClearAll, {}) })] })] }), jsx(Stack, { direction: "row", gap: 0.5, flexWrap: "wrap", children: isValue && jsx(Input, { variant: "outline", value: value.toString(), onChange: (e) => {
17
17
  onChange(e.target.value);
@@ -1 +1 @@
1
- {"version":3,"file":"TextFilter.js","sources":["../../../src/DataFilter/options/TextFilter.tsx"],"sourcesContent":["\"use client\"\n\nimport { DataFilterSelect } from \"../types\";\nimport IconButton from \"../../IconButton\";\nimport Stack from \"../../Stack\";\nimport Text from \"../../Text\";\nimport Add from \"@xanui/icons/Add\";\nimport ClearAll from \"@xanui/icons/ClearAll\";\nimport Input from \"../../Input\";\n\ntype Props = {\n option: DataFilterSelect;\n value: string | null;\n onChange: (value: string | null) => void;\n}\n\nconst TextFilter = ({ option, onChange, value }: Props) => {\n\n const isValue = value !== null && value !== undefined;\n\n return (\n <Stack\n width={\"100%\"}\n bgcolor=\"background.secondary\"\n p={1}\n radius={1}\n >\n <Stack\n direction=\"row\"\n alignItems=\"center\"\n justifyContent={\"space-between\"}\n gap={0.5}\n mb={isValue ? .5 : 0}\n >\n <Text>{option.label}</Text>\n <Stack\n direction=\"row\"\n gap={0.5}\n >\n <IconButton\n size=\"small\"\n variant=\"soft\"\n color={\"default\"}\n onClick={() => {\n onChange('');\n }}\n >\n <Add />\n </IconButton>\n {\n isValue && <IconButton\n size=\"small\"\n variant=\"soft\"\n color={\"danger\"}\n onClick={() => {\n onChange(null);\n }}\n >\n <ClearAll />\n </IconButton>\n }\n </Stack>\n </Stack>\n <Stack\n direction=\"row\"\n gap={0.5}\n flexWrap=\"wrap\"\n >\n {\n isValue && <Input\n variant={\"outline\"}\n value={value.toString()}\n onChange={(e: any) => {\n onChange(e.target.value);\n }}\n fullWidth\n />\n }\n </Stack>\n </Stack>\n )\n}\n\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\"\n\nimport { DataFilterSelect } from \"../types\";\nimport IconButton from \"../../IconButton\";\nimport Stack from \"../../Stack\";\nimport Text from \"../../Text\";\nimport Add from \"@xanui/icons/Add\";\nimport ClearAll from \"@xanui/icons/ClearAll\";\nimport Input from \"../../Input\";\n\ntype Props = {\n option: DataFilterSelect;\n value: string | null;\n onChange: (value: string | null) => void;\n}\n\nconst TextFilter = ({ option, onChange, value }: Props) => {\n\n const isValue = value !== null && value !== undefined;\n\n return (\n <Stack\n width={\"100%\"}\n bgcolor=\"surface.light\"\n p={1}\n radius={1}\n >\n <Stack\n direction=\"row\"\n alignItems=\"center\"\n justifyContent={\"space-between\"}\n gap={0.5}\n mb={isValue ? .5 : 0}\n >\n <Text>{option.label}</Text>\n <Stack\n direction=\"row\"\n gap={0.5}\n >\n <IconButton\n size=\"small\"\n variant=\"ghost\"\n color={'surface'}\n onClick={() => {\n onChange('');\n }}\n >\n <Add />\n </IconButton>\n {\n isValue && <IconButton\n size=\"small\"\n variant=\"ghost\"\n color={\"danger\"}\n onClick={() => {\n onChange(null);\n }}\n >\n <ClearAll />\n </IconButton>\n }\n </Stack>\n </Stack>\n <Stack\n direction=\"row\"\n gap={0.5}\n flexWrap=\"wrap\"\n >\n {\n isValue && <Input\n variant={\"outline\"}\n value={value.toString()}\n onChange={(e: any) => {\n onChange(e.target.value);\n }}\n fullWidth\n />\n }\n </Stack>\n </Stack>\n )\n}\n\nexport default TextFilter"],"names":[],"mappings":";;;;;;;;;AAgBA;;AAIG;;;;;AAqDkB;AACH;AAOlB;;"}
@@ -26,9 +26,9 @@ const FilterBox = (props) => {
26
26
  update({ tab: value });
27
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
28
  update({ search: e.target.value });
29
- } })), filters && jsxRuntime.jsxs(index, { children: [jsxRuntime.jsx(index$4, { color: "default", variant: "text", onClick: () => {
29
+ } })), filters && jsxRuntime.jsxs(index, { children: [jsxRuntime.jsx(index$4, { color: "surface", variant: "text", onClick: () => {
30
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: () => {
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: "surface", variant: "text", onClick: () => {
32
32
  setOpenFilter(false);
33
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
34
  update({ filters: s });
@@ -1 +1 @@
1
- {"version":3,"file":"FilterBox.cjs","sources":["../../src/Datatable/FilterBox.tsx"],"sourcesContent":["\"use client\";\nimport Stack from '../Stack'\nimport Tabs from '../Tabs'\nimport Tab from '../Tab'\nimport Input from '../Input'\nimport IconSearch from '@xanui/icons/Search'\nimport { DatatablePropsWithState } from './types';\nimport IconButton from '../IconButton';\nimport FilterListOutlined from '@xanui/icons/FilterListOutlined';\nimport Drawer from '../Drawer';\nimport Text from '../Text';\nimport React from 'react';\nimport CloseOutlined from '@xanui/icons/CloseOutlined';\nimport ViewBox from '../ViewBox';\nimport DataFilter from '../DataFilter';\n\nconst FilterBox = (props: DatatablePropsWithState) => {\n let {\n tabs,\n filters,\n hideSearch,\n slotProps,\n skeleton,\n state,\n update,\n } = props\n const [openFilter, setOpenFilter] = React.useState(false)\n let checked = state.selectAll || !!state.selected.length\n\n if (checked) return <></>\n\n return (\n <Stack\n direction=\"row\"\n alignItems=\"center\"\n justifyContent=\"space-between\"\n zIndex={1}\n radius={1}\n mb={1}\n height={50}\n width=\"100%\"\n >\n <Stack gap={2.4} flexRow>\n {\n tabs && <Tabs\n disabled={skeleton ? true : false}\n onChange={(value: any) => {\n update({ tab: value })\n }}\n value={state.tab}\n >\n {\n tabs.map(t => <Tab key={t.label} value={t.value || t.label.toLowerCase()}>{t.label}</Tab>)\n }\n </Tabs>\n }\n </Stack>\n <Stack\n flexRow\n gap={2}\n className='datatable-header-right-area'\n alignItems={\"center\"}\n >\n {!hideSearch && <Input\n disabled={skeleton ? true : false}\n endIcon={<IconSearch />}\n placeholder='Search...'\n {...slotProps?.search}\n value={state.search}\n onChange={(e: any) => {\n update({ search: e.target.value })\n }}\n />}\n {\n filters && <Stack>\n <IconButton\n color=\"default\"\n variant={\"text\"}\n onClick={() => {\n setOpenFilter(true)\n }}\n >\n <FilterListOutlined />\n </IconButton>\n <Drawer\n open={openFilter}\n onClickOutside={() => { }}\n placement={\"right\"}\n >\n <ViewBox\n height=\"100%\"\n p={1}\n startContent={<Stack mb={2} px={2} flexRow justifyContent={\"space-between\"} alignItems=\"center\">\n <Text fontWeight={600} fontSize=\"h6\">Filters</Text>\n <IconButton\n size=\"small\"\n color=\"default\"\n variant=\"text\"\n onClick={() => {\n setOpenFilter(false)\n }}\n >\n <CloseOutlined />\n </IconButton>\n </Stack>}\n >\n <Stack\n gap={2}\n >\n <DataFilter\n options={filters}\n value={state.filters}\n onChange={(s) => {\n update({ filters: s })\n }}\n />\n </Stack>\n </ViewBox>\n </Drawer>\n </Stack>\n }\n </Stack>\n </Stack>\n )\n}\n\nexport default FilterBox"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAgBA;AACG;AASA;AACA;AAEA;AAAa;AAEb;AAgBkB;;;;;AAiCA;;AAoBS;AAaG;;AAWjC;;"}
1
+ {"version":3,"file":"FilterBox.cjs","sources":["../../src/Datatable/FilterBox.tsx"],"sourcesContent":["\"use client\";\nimport Stack from '../Stack'\nimport Tabs from '../Tabs'\nimport Tab from '../Tab'\nimport Input from '../Input'\nimport IconSearch from '@xanui/icons/Search'\nimport { DatatablePropsWithState } from './types';\nimport IconButton from '../IconButton';\nimport FilterListOutlined from '@xanui/icons/FilterListOutlined';\nimport Drawer from '../Drawer';\nimport Text from '../Text';\nimport React from 'react';\nimport CloseOutlined from '@xanui/icons/CloseOutlined';\nimport ViewBox from '../ViewBox';\nimport DataFilter from '../DataFilter';\n\nconst FilterBox = (props: DatatablePropsWithState) => {\n let {\n tabs,\n filters,\n hideSearch,\n slotProps,\n skeleton,\n state,\n update,\n } = props\n const [openFilter, setOpenFilter] = React.useState(false)\n let checked = state.selectAll || !!state.selected.length\n\n if (checked) return <></>\n\n return (\n <Stack\n direction=\"row\"\n alignItems=\"center\"\n justifyContent=\"space-between\"\n zIndex={1}\n radius={1}\n mb={1}\n height={50}\n width=\"100%\"\n >\n <Stack gap={2.4} flexRow>\n {\n tabs && <Tabs\n disabled={skeleton ? true : false}\n onChange={(value: any) => {\n update({ tab: value })\n }}\n value={state.tab}\n >\n {\n tabs.map(t => <Tab key={t.label} value={t.value || t.label.toLowerCase()}>{t.label}</Tab>)\n }\n </Tabs>\n }\n </Stack>\n <Stack\n flexRow\n gap={2}\n className='datatable-header-right-area'\n alignItems={\"center\"}\n >\n {!hideSearch && <Input\n disabled={skeleton ? true : false}\n endIcon={<IconSearch />}\n placeholder='Search...'\n {...slotProps?.search}\n value={state.search}\n onChange={(e: any) => {\n update({ search: e.target.value })\n }}\n />}\n {\n filters && <Stack>\n <IconButton\n color=\"surface\"\n variant={\"text\"}\n onClick={() => {\n setOpenFilter(true)\n }}\n >\n <FilterListOutlined />\n </IconButton>\n <Drawer\n open={openFilter}\n onClickOutside={() => { }}\n placement={\"right\"}\n >\n <ViewBox\n height=\"100%\"\n p={1}\n startContent={<Stack mb={2} px={2} flexRow justifyContent={\"space-between\"} alignItems=\"center\">\n <Text fontWeight={600} fontSize=\"h6\">Filters</Text>\n <IconButton\n size=\"small\"\n color=\"surface\"\n variant=\"text\"\n onClick={() => {\n setOpenFilter(false)\n }}\n >\n <CloseOutlined />\n </IconButton>\n </Stack>}\n >\n <Stack\n gap={2}\n >\n <DataFilter\n options={filters}\n value={state.filters}\n onChange={(s) => {\n update({ filters: s })\n }}\n />\n </Stack>\n </ViewBox>\n </Drawer>\n </Stack>\n }\n </Stack>\n </Stack>\n )\n}\n\nexport default FilterBox"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAgBA;AACG;AASA;AACA;AAEA;AAAa;AAEb;AAgBkB;;;;;AAiCA;;AAoBS;AAaG;;AAWjC;;"}
@@ -24,9 +24,9 @@ const FilterBox = (props) => {
24
24
  update({ tab: value });
25
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) => {
26
26
  update({ search: e.target.value });
27
- } })), filters && jsxs(Stack, { children: [jsx(IconButton, { color: "default", variant: "text", onClick: () => {
27
+ } })), filters && jsxs(Stack, { children: [jsx(IconButton, { color: "surface", variant: "text", onClick: () => {
28
28
  setOpenFilter(true);
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: () => {
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: "surface", variant: "text", onClick: () => {
30
30
  setOpenFilter(false);
31
31
  }, children: jsx(CloseOutlined, {}) })] }), children: jsx(Stack, { gap: 2, children: jsx(DataFilter, { options: filters, value: state.filters, onChange: (s) => {
32
32
  update({ filters: s });
@@ -1 +1 @@
1
- {"version":3,"file":"FilterBox.js","sources":["../../src/Datatable/FilterBox.tsx"],"sourcesContent":["\"use client\";\nimport Stack from '../Stack'\nimport Tabs from '../Tabs'\nimport Tab from '../Tab'\nimport Input from '../Input'\nimport IconSearch from '@xanui/icons/Search'\nimport { DatatablePropsWithState } from './types';\nimport IconButton from '../IconButton';\nimport FilterListOutlined from '@xanui/icons/FilterListOutlined';\nimport Drawer from '../Drawer';\nimport Text from '../Text';\nimport React from 'react';\nimport CloseOutlined from '@xanui/icons/CloseOutlined';\nimport ViewBox from '../ViewBox';\nimport DataFilter from '../DataFilter';\n\nconst FilterBox = (props: DatatablePropsWithState) => {\n let {\n tabs,\n filters,\n hideSearch,\n slotProps,\n skeleton,\n state,\n update,\n } = props\n const [openFilter, setOpenFilter] = React.useState(false)\n let checked = state.selectAll || !!state.selected.length\n\n if (checked) return <></>\n\n return (\n <Stack\n direction=\"row\"\n alignItems=\"center\"\n justifyContent=\"space-between\"\n zIndex={1}\n radius={1}\n mb={1}\n height={50}\n width=\"100%\"\n >\n <Stack gap={2.4} flexRow>\n {\n tabs && <Tabs\n disabled={skeleton ? true : false}\n onChange={(value: any) => {\n update({ tab: value })\n }}\n value={state.tab}\n >\n {\n tabs.map(t => <Tab key={t.label} value={t.value || t.label.toLowerCase()}>{t.label}</Tab>)\n }\n </Tabs>\n }\n </Stack>\n <Stack\n flexRow\n gap={2}\n className='datatable-header-right-area'\n alignItems={\"center\"}\n >\n {!hideSearch && <Input\n disabled={skeleton ? true : false}\n endIcon={<IconSearch />}\n placeholder='Search...'\n {...slotProps?.search}\n value={state.search}\n onChange={(e: any) => {\n update({ search: e.target.value })\n }}\n />}\n {\n filters && <Stack>\n <IconButton\n color=\"default\"\n variant={\"text\"}\n onClick={() => {\n setOpenFilter(true)\n }}\n >\n <FilterListOutlined />\n </IconButton>\n <Drawer\n open={openFilter}\n onClickOutside={() => { }}\n placement={\"right\"}\n >\n <ViewBox\n height=\"100%\"\n p={1}\n startContent={<Stack mb={2} px={2} flexRow justifyContent={\"space-between\"} alignItems=\"center\">\n <Text fontWeight={600} fontSize=\"h6\">Filters</Text>\n <IconButton\n size=\"small\"\n color=\"default\"\n variant=\"text\"\n onClick={() => {\n setOpenFilter(false)\n }}\n >\n <CloseOutlined />\n </IconButton>\n </Stack>}\n >\n <Stack\n gap={2}\n >\n <DataFilter\n options={filters}\n value={state.filters}\n onChange={(s) => {\n update({ filters: s })\n }}\n />\n </Stack>\n </ViewBox>\n </Drawer>\n </Stack>\n }\n </Stack>\n </Stack>\n )\n}\n\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\";\nimport Stack from '../Stack'\nimport Tabs from '../Tabs'\nimport Tab from '../Tab'\nimport Input from '../Input'\nimport IconSearch from '@xanui/icons/Search'\nimport { DatatablePropsWithState } from './types';\nimport IconButton from '../IconButton';\nimport FilterListOutlined from '@xanui/icons/FilterListOutlined';\nimport Drawer from '../Drawer';\nimport Text from '../Text';\nimport React from 'react';\nimport CloseOutlined from '@xanui/icons/CloseOutlined';\nimport ViewBox from '../ViewBox';\nimport DataFilter from '../DataFilter';\n\nconst FilterBox = (props: DatatablePropsWithState) => {\n let {\n tabs,\n filters,\n hideSearch,\n slotProps,\n skeleton,\n state,\n update,\n } = props\n const [openFilter, setOpenFilter] = React.useState(false)\n let checked = state.selectAll || !!state.selected.length\n\n if (checked) return <></>\n\n return (\n <Stack\n direction=\"row\"\n alignItems=\"center\"\n justifyContent=\"space-between\"\n zIndex={1}\n radius={1}\n mb={1}\n height={50}\n width=\"100%\"\n >\n <Stack gap={2.4} flexRow>\n {\n tabs && <Tabs\n disabled={skeleton ? true : false}\n onChange={(value: any) => {\n update({ tab: value })\n }}\n value={state.tab}\n >\n {\n tabs.map(t => <Tab key={t.label} value={t.value || t.label.toLowerCase()}>{t.label}</Tab>)\n }\n </Tabs>\n }\n </Stack>\n <Stack\n flexRow\n gap={2}\n className='datatable-header-right-area'\n alignItems={\"center\"}\n >\n {!hideSearch && <Input\n disabled={skeleton ? true : false}\n endIcon={<IconSearch />}\n placeholder='Search...'\n {...slotProps?.search}\n value={state.search}\n onChange={(e: any) => {\n update({ search: e.target.value })\n }}\n />}\n {\n filters && <Stack>\n <IconButton\n color=\"surface\"\n variant={\"text\"}\n onClick={() => {\n setOpenFilter(true)\n }}\n >\n <FilterListOutlined />\n </IconButton>\n <Drawer\n open={openFilter}\n onClickOutside={() => { }}\n placement={\"right\"}\n >\n <ViewBox\n height=\"100%\"\n p={1}\n startContent={<Stack mb={2} px={2} flexRow justifyContent={\"space-between\"} alignItems=\"center\">\n <Text fontWeight={600} fontSize=\"h6\">Filters</Text>\n <IconButton\n size=\"small\"\n color=\"surface\"\n variant=\"text\"\n onClick={() => {\n setOpenFilter(false)\n }}\n >\n <CloseOutlined />\n </IconButton>\n </Stack>}\n >\n <Stack\n gap={2}\n >\n <DataFilter\n options={filters}\n value={state.filters}\n onChange={(s) => {\n update({ filters: s })\n }}\n />\n </Stack>\n </ViewBox>\n </Drawer>\n </Stack>\n }\n </Stack>\n </Stack>\n )\n}\n\nexport default FilterBox"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAgBA;AACG;AASA;AACA;AAEA;AAAa;AAEb;AAgBkB;;;;;AAiCA;;AAoBS;AAaG;;AAWjC;;"}
package/Datatable/Row.cjs CHANGED
@@ -16,7 +16,7 @@ var index$4 = require('../Menu/index.cjs');
16
16
  const Row = ({ rows, rawRow, row, rowAction, disableRow, hideCheckbox, columns, compact, state, update }) => {
17
17
  var _a;
18
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";
19
+ let selectedColor = selected ? "primary.ghost" : "transparent";
20
20
  const [target, setTarget] = React.useState();
21
21
  const isDisable = (disableRow ? disableRow(rawRow, state) : false) || false;
22
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: () => {
@@ -40,7 +40,7 @@ const Row = ({ rows, rawRow, row, rowAction, disableRow, hideCheckbox, columns,
40
40
  if (!row[field])
41
41
  return jsxRuntime.jsx(index$1, {}, idx);
42
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: {
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: "surface.divider", children: [jsxRuntime.jsx(index$3, { disabled: isDisable || selected, onClick: (e) => setTarget(e.currentTarget), variant: "text", color: "surface", children: jsxRuntime.jsx(ActionIcon, {}) }), jsxRuntime.jsx(index$4, { target: target, placement: "bottom-right", onClickOutside: () => setTarget(null), children: jsxRuntime.jsx(index$5, { bgcolor: "surface.main", minWidth: 160, sx: {
44
44
  '& > li': {
45
45
  borderBottom: 1,
46
46
  '&:last-child': {
@@ -1 +1 @@
1
- {"version":3,"file":"Row.cjs","sources":["../../src/Datatable/Row.tsx"],"sourcesContent":["\"use client\";\nimport { useState } from 'react'\nimport TableRow from '../TableRow'\nimport TableCell from '../TableCell'\nimport Checkbox from '../Checkbox'\nimport IconButton from '../IconButton'\nimport List from '../List'\nimport ListItem from '../ListItem'\nimport ActionIcon from '@xanui/icons/MoreVert'\nimport Menu from '../Menu'\nimport { DataTableDefaultRow, DatatablePropsWithState } from './types';\n\n\ntype Props = DatatablePropsWithState & {\n rawRow: DataTableDefaultRow;\n row: DataTableDefaultRow;\n}\n\nconst Row = ({ rows, rawRow, row, rowAction, disableRow, hideCheckbox, columns, compact, state, update }: Props) => {\n const selected = row.id ? state.selected.includes(row?.id) : false\n let selectedColor = selected ? \"primary.soft\" : \"transparent\"\n const [target, setTarget] = useState<any>()\n const isDisable = (disableRow ? disableRow(rawRow, state) : false) || false\n\n return (\n <TableRow >\n {!hideCheckbox && <TableCell width={40} bgcolor={selectedColor}>\n {\n !!row.id && <Checkbox\n size={compact ? \"small\" : \"medium\"}\n checked={selected}\n onChange={() => {\n if (isDisable || !row.id) return\n let ids = [...state.selected]\n ids.includes(row.id) ? ids.splice(ids.indexOf(row.id), 1) : ids.push(row.id)\n let selectedLength = 0\n rows.forEach(r => {\n const isDisable = (disableRow ? disableRow(r, state) : false) || false\n if (!isDisable) selectedLength++\n })\n\n update({\n selectAll: selectedLength === ids.length,\n selected: ids\n })\n }}\n />\n }\n\n </TableCell>}\n {\n columns.map(({ label, field, sortable, ...rest }, idx) => {\n field = field || label\n if (!row[field]) return <TableCell key={idx}></TableCell>\n return (\n <TableCell\n key={idx}\n textAlign=\"left\"\n {...rest}\n bgcolor={selectedColor}\n >\n {row[field]}\n </TableCell>\n )\n })\n }\n {!!(rows.length && rowAction && rowAction((rows as any)[0])?.length) && <TableCell width={30} bgcolor={selectedColor} borderColor=\"divider\">\n <IconButton\n disabled={isDisable || selected}\n onClick={(e: any) => setTarget(e.currentTarget)}\n variant=\"text\"\n color=\"default\"\n >\n <ActionIcon />\n </IconButton>\n <Menu target={target} placement=\"bottom-right\" onClickOutside={() => setTarget(null)}>\n <List\n bgcolor=\"background.primary\"\n minWidth={160}\n sx={{\n '& > li': {\n borderBottom: 1,\n '&:last-child': {\n borderBottom: 0\n }\n }\n }}\n >\n {rowAction({ row: rawRow, state }).map(({ label, icon, onClick }) => {\n return (\n <ListItem\n key={label}\n startIcon={icon}\n onClick={(e: any) => {\n onClick && onClick(e)\n setTarget(null)\n }}\n >{label}</ListItem>\n )\n })}\n </List>\n </Menu>\n </TableCell>\n }\n </TableRow>\n )\n}\n\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.cjs","sources":["../../src/Datatable/Row.tsx"],"sourcesContent":["\"use client\";\nimport { useState } from 'react'\nimport TableRow from '../TableRow'\nimport TableCell from '../TableCell'\nimport Checkbox from '../Checkbox'\nimport IconButton from '../IconButton'\nimport List from '../List'\nimport ListItem from '../ListItem'\nimport ActionIcon from '@xanui/icons/MoreVert'\nimport Menu from '../Menu'\nimport { DataTableDefaultRow, DatatablePropsWithState } from './types';\n\n\ntype Props = DatatablePropsWithState & {\n rawRow: DataTableDefaultRow;\n row: DataTableDefaultRow;\n}\n\nconst Row = ({ rows, rawRow, row, rowAction, disableRow, hideCheckbox, columns, compact, state, update }: Props) => {\n const selected = row.id ? state.selected.includes(row?.id) : false\n let selectedColor = selected ? \"primary.ghost\" : \"transparent\"\n const [target, setTarget] = useState<any>()\n const isDisable = (disableRow ? disableRow(rawRow, state) : false) || false\n\n return (\n <TableRow >\n {!hideCheckbox && <TableCell width={40} bgcolor={selectedColor}>\n {\n !!row.id && <Checkbox\n size={compact ? \"small\" : \"medium\"}\n checked={selected}\n onChange={() => {\n if (isDisable || !row.id) return\n let ids = [...state.selected]\n ids.includes(row.id) ? ids.splice(ids.indexOf(row.id), 1) : ids.push(row.id)\n let selectedLength = 0\n rows.forEach(r => {\n const isDisable = (disableRow ? disableRow(r, state) : false) || false\n if (!isDisable) selectedLength++\n })\n\n update({\n selectAll: selectedLength === ids.length,\n selected: ids\n })\n }}\n />\n }\n\n </TableCell>}\n {\n columns.map(({ label, field, sortable, ...rest }, idx) => {\n field = field || label\n if (!row[field]) return <TableCell key={idx}></TableCell>\n return (\n <TableCell\n key={idx}\n textAlign=\"left\"\n {...rest}\n bgcolor={selectedColor}\n >\n {row[field]}\n </TableCell>\n )\n })\n }\n {!!(rows.length && rowAction && rowAction((rows as any)[0])?.length) && <TableCell width={30} bgcolor={selectedColor} borderColor=\"surface.divider\">\n <IconButton\n disabled={isDisable || selected}\n onClick={(e: any) => setTarget(e.currentTarget)}\n variant=\"text\"\n color=\"surface\"\n >\n <ActionIcon />\n </IconButton>\n <Menu target={target} placement=\"bottom-right\" onClickOutside={() => setTarget(null)}>\n <List\n bgcolor=\"surface.main\"\n minWidth={160}\n sx={{\n '& > li': {\n borderBottom: 1,\n '&:last-child': {\n borderBottom: 0\n }\n }\n }}\n >\n {rowAction({ row: rawRow, state }).map(({ label, icon, onClick }) => {\n return (\n <ListItem\n key={label}\n startIcon={icon}\n onClick={(e: any) => {\n onClick && onClick(e)\n setTarget(null)\n }}\n >{label}</ListItem>\n )\n })}\n </List>\n </Menu>\n </TableCell>\n }\n </TableRow>\n )\n}\n\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
@@ -14,7 +14,7 @@ import Menu from '../Menu/index.js';
14
14
  const Row = ({ rows, rawRow, row, rowAction, disableRow, hideCheckbox, columns, compact, state, update }) => {
15
15
  var _a;
16
16
  const selected = row.id ? state.selected.includes(row === null || row === void 0 ? void 0 : row.id) : false;
17
- let selectedColor = selected ? "primary.soft" : "transparent";
17
+ let selectedColor = selected ? "primary.ghost" : "transparent";
18
18
  const [target, setTarget] = useState();
19
19
  const isDisable = (disableRow ? disableRow(rawRow, state) : false) || false;
20
20
  return (jsxs(TableRow, { children: [!hideCheckbox && jsx(TableCell, { width: 40, bgcolor: selectedColor, children: !!row.id && jsx(Checkbox, { size: compact ? "small" : "medium", checked: selected, onChange: () => {
@@ -38,7 +38,7 @@ const Row = ({ rows, rawRow, row, rowAction, disableRow, hideCheckbox, columns,
38
38
  if (!row[field])
39
39
  return jsx(TableCell, {}, idx);
40
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: {
41
+ }), !!(rows.length && rowAction && ((_a = rowAction(rows[0])) === null || _a === void 0 ? void 0 : _a.length)) && jsxs(TableCell, { width: 30, bgcolor: selectedColor, borderColor: "surface.divider", children: [jsx(IconButton, { disabled: isDisable || selected, onClick: (e) => setTarget(e.currentTarget), variant: "text", color: "surface", children: jsx(ActionIcon, {}) }), jsx(Menu, { target: target, placement: "bottom-right", onClickOutside: () => setTarget(null), children: jsx(List, { bgcolor: "surface.main", minWidth: 160, sx: {
42
42
  '& > li': {
43
43
  borderBottom: 1,
44
44
  '&:last-child': {
@@ -1 +1 @@
1
- {"version":3,"file":"Row.js","sources":["../../src/Datatable/Row.tsx"],"sourcesContent":["\"use client\";\nimport { useState } from 'react'\nimport TableRow from '../TableRow'\nimport TableCell from '../TableCell'\nimport Checkbox from '../Checkbox'\nimport IconButton from '../IconButton'\nimport List from '../List'\nimport ListItem from '../ListItem'\nimport ActionIcon from '@xanui/icons/MoreVert'\nimport Menu from '../Menu'\nimport { DataTableDefaultRow, DatatablePropsWithState } from './types';\n\n\ntype Props = DatatablePropsWithState & {\n rawRow: DataTableDefaultRow;\n row: DataTableDefaultRow;\n}\n\nconst Row = ({ rows, rawRow, row, rowAction, disableRow, hideCheckbox, columns, compact, state, update }: Props) => {\n const selected = row.id ? state.selected.includes(row?.id) : false\n let selectedColor = selected ? \"primary.soft\" : \"transparent\"\n const [target, setTarget] = useState<any>()\n const isDisable = (disableRow ? disableRow(rawRow, state) : false) || false\n\n return (\n <TableRow >\n {!hideCheckbox && <TableCell width={40} bgcolor={selectedColor}>\n {\n !!row.id && <Checkbox\n size={compact ? \"small\" : \"medium\"}\n checked={selected}\n onChange={() => {\n if (isDisable || !row.id) return\n let ids = [...state.selected]\n ids.includes(row.id) ? ids.splice(ids.indexOf(row.id), 1) : ids.push(row.id)\n let selectedLength = 0\n rows.forEach(r => {\n const isDisable = (disableRow ? disableRow(r, state) : false) || false\n if (!isDisable) selectedLength++\n })\n\n update({\n selectAll: selectedLength === ids.length,\n selected: ids\n })\n }}\n />\n }\n\n </TableCell>}\n {\n columns.map(({ label, field, sortable, ...rest }, idx) => {\n field = field || label\n if (!row[field]) return <TableCell key={idx}></TableCell>\n return (\n <TableCell\n key={idx}\n textAlign=\"left\"\n {...rest}\n bgcolor={selectedColor}\n >\n {row[field]}\n </TableCell>\n )\n })\n }\n {!!(rows.length && rowAction && rowAction((rows as any)[0])?.length) && <TableCell width={30} bgcolor={selectedColor} borderColor=\"divider\">\n <IconButton\n disabled={isDisable || selected}\n onClick={(e: any) => setTarget(e.currentTarget)}\n variant=\"text\"\n color=\"default\"\n >\n <ActionIcon />\n </IconButton>\n <Menu target={target} placement=\"bottom-right\" onClickOutside={() => setTarget(null)}>\n <List\n bgcolor=\"background.primary\"\n minWidth={160}\n sx={{\n '& > li': {\n borderBottom: 1,\n '&:last-child': {\n borderBottom: 0\n }\n }\n }}\n >\n {rowAction({ row: rawRow, state }).map(({ label, icon, onClick }) => {\n return (\n <ListItem\n key={label}\n startIcon={icon}\n onClick={(e: any) => {\n onClick && onClick(e)\n setTarget(null)\n }}\n >{label}</ListItem>\n )\n })}\n </List>\n </Menu>\n </TableCell>\n }\n </TableRow>\n )\n}\n\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\";\nimport { useState } from 'react'\nimport TableRow from '../TableRow'\nimport TableCell from '../TableCell'\nimport Checkbox from '../Checkbox'\nimport IconButton from '../IconButton'\nimport List from '../List'\nimport ListItem from '../ListItem'\nimport ActionIcon from '@xanui/icons/MoreVert'\nimport Menu from '../Menu'\nimport { DataTableDefaultRow, DatatablePropsWithState } from './types';\n\n\ntype Props = DatatablePropsWithState & {\n rawRow: DataTableDefaultRow;\n row: DataTableDefaultRow;\n}\n\nconst Row = ({ rows, rawRow, row, rowAction, disableRow, hideCheckbox, columns, compact, state, update }: Props) => {\n const selected = row.id ? state.selected.includes(row?.id) : false\n let selectedColor = selected ? \"primary.ghost\" : \"transparent\"\n const [target, setTarget] = useState<any>()\n const isDisable = (disableRow ? disableRow(rawRow, state) : false) || false\n\n return (\n <TableRow >\n {!hideCheckbox && <TableCell width={40} bgcolor={selectedColor}>\n {\n !!row.id && <Checkbox\n size={compact ? \"small\" : \"medium\"}\n checked={selected}\n onChange={() => {\n if (isDisable || !row.id) return\n let ids = [...state.selected]\n ids.includes(row.id) ? ids.splice(ids.indexOf(row.id), 1) : ids.push(row.id)\n let selectedLength = 0\n rows.forEach(r => {\n const isDisable = (disableRow ? disableRow(r, state) : false) || false\n if (!isDisable) selectedLength++\n })\n\n update({\n selectAll: selectedLength === ids.length,\n selected: ids\n })\n }}\n />\n }\n\n </TableCell>}\n {\n columns.map(({ label, field, sortable, ...rest }, idx) => {\n field = field || label\n if (!row[field]) return <TableCell key={idx}></TableCell>\n return (\n <TableCell\n key={idx}\n textAlign=\"left\"\n {...rest}\n bgcolor={selectedColor}\n >\n {row[field]}\n </TableCell>\n )\n })\n }\n {!!(rows.length && rowAction && rowAction((rows as any)[0])?.length) && <TableCell width={30} bgcolor={selectedColor} borderColor=\"surface.divider\">\n <IconButton\n disabled={isDisable || selected}\n onClick={(e: any) => setTarget(e.currentTarget)}\n variant=\"text\"\n color=\"surface\"\n >\n <ActionIcon />\n </IconButton>\n <Menu target={target} placement=\"bottom-right\" onClickOutside={() => setTarget(null)}>\n <List\n bgcolor=\"surface.main\"\n minWidth={160}\n sx={{\n '& > li': {\n borderBottom: 1,\n '&:last-child': {\n borderBottom: 0\n }\n }\n }}\n >\n {rowAction({ row: rawRow, state }).map(({ label, icon, onClick }) => {\n return (\n <ListItem\n key={label}\n startIcon={icon}\n onClick={(e: any) => {\n onClick && onClick(e)\n setTarget(null)\n }}\n >{label}</ListItem>\n )\n })}\n </List>\n </Menu>\n </TableCell>\n }\n </TableRow>\n )\n}\n\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;;"}
@@ -12,9 +12,9 @@ const SelectedBox = (props) => {
12
12
  let checked = state.selectAll || !!state.selected.length;
13
13
  if (!checked)
14
14
  return jsxRuntime.jsx(jsxRuntime.Fragment, {});
15
- 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
+ return (jsxRuntime.jsxs(index, { bgcolor: "surface.light", 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) => {
16
16
  var { label, icon } = _a, bprops = tslib.__rest(_a, ["label", "icon"]);
17
- return (jsxRuntime.jsx(index$2, Object.assign({ variant: "soft", color: "brand" }, bprops, { children: icon }), label));
17
+ return (jsxRuntime.jsx(index$2, Object.assign({ variant: "ghost", color: "primary" }, bprops, { children: icon }), label));
18
18
  }) })] }));
19
19
  };
20
20
 
@@ -1 +1 @@
1
- {"version":3,"file":"SelectedBox.cjs","sources":["../../src/Datatable/SelectedBox.tsx"],"sourcesContent":["\"use client\"\nimport IconButton from '../IconButton'\nimport Stack from '../Stack'\nimport Text from '../Text'\nimport { DatatablePropsWithState } from './types'\n\nconst SelectedBox = (props: DatatablePropsWithState) => {\n let {\n state,\n rowAction\n } = props\n\n let checked = state.selectAll || !!state.selected.length\n if (!checked) return <></>\n\n return (\n <Stack\n bgcolor=\"background.secondary\"\n direction=\"row\"\n alignItems=\"center\"\n justifyContent=\"space-between\"\n zIndex={1}\n radius={1}\n mb={1}\n height={50}\n width=\"100%\"\n px={1.5}\n >\n <Text fontWeight={600}>Selected: {state.selected.length}</Text>\n <Stack\n flexRow\n gap={1}\n >\n {rowAction && rowAction({ row: null, state }).map(({ label, icon, ...bprops }) => {\n return (\n <IconButton\n key={label}\n variant=\"soft\"\n color=\"brand\"\n {...bprops}\n >\n {icon}\n </IconButton>\n )\n })}\n </Stack>\n </Stack>\n )\n}\n\nexport default SelectedBox"],"names":[],"mappings":";;;;;;;;;AAMA;AACG;AAKA;AACA;AAAc;AAEd;;AAmBY;AAUH;AAIZ;;"}
1
+ {"version":3,"file":"SelectedBox.cjs","sources":["../../src/Datatable/SelectedBox.tsx"],"sourcesContent":["\"use client\"\nimport IconButton from '../IconButton'\nimport Stack from '../Stack'\nimport Text from '../Text'\nimport { DatatablePropsWithState } from './types'\n\nconst SelectedBox = (props: DatatablePropsWithState) => {\n let {\n state,\n rowAction\n } = props\n\n let checked = state.selectAll || !!state.selected.length\n if (!checked) return <></>\n\n return (\n <Stack\n bgcolor=\"surface.light\"\n direction=\"row\"\n alignItems=\"center\"\n justifyContent=\"space-between\"\n zIndex={1}\n radius={1}\n mb={1}\n height={50}\n width=\"100%\"\n px={1.5}\n >\n <Text fontWeight={600}>Selected: {state.selected.length}</Text>\n <Stack\n flexRow\n gap={1}\n >\n {rowAction && rowAction({ row: null, state }).map(({ label, icon, ...bprops }) => {\n return (\n <IconButton\n key={label}\n variant=\"ghost\"\n color=\"primary\"\n {...bprops}\n >\n {icon}\n </IconButton>\n )\n })}\n </Stack>\n </Stack>\n )\n}\n\nexport default SelectedBox"],"names":[],"mappings":";;;;;;;;;AAMA;AACG;AAKA;AACA;AAAc;AAEd;;AAmBY;AAUH;AAIZ;;"}
@@ -10,9 +10,9 @@ const SelectedBox = (props) => {
10
10
  let checked = state.selectAll || !!state.selected.length;
11
11
  if (!checked)
12
12
  return jsx(Fragment, {});
13
- 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
+ return (jsxs(Stack, { bgcolor: "surface.light", 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) => {
14
14
  var { label, icon } = _a, bprops = __rest(_a, ["label", "icon"]);
15
- return (jsx(IconButton, Object.assign({ variant: "soft", color: "brand" }, bprops, { children: icon }), label));
15
+ return (jsx(IconButton, Object.assign({ variant: "ghost", color: "primary" }, bprops, { children: icon }), label));
16
16
  }) })] }));
17
17
  };
18
18
 
@@ -1 +1 @@
1
- {"version":3,"file":"SelectedBox.js","sources":["../../src/Datatable/SelectedBox.tsx"],"sourcesContent":["\"use client\"\nimport IconButton from '../IconButton'\nimport Stack from '../Stack'\nimport Text from '../Text'\nimport { DatatablePropsWithState } from './types'\n\nconst SelectedBox = (props: DatatablePropsWithState) => {\n let {\n state,\n rowAction\n } = props\n\n let checked = state.selectAll || !!state.selected.length\n if (!checked) return <></>\n\n return (\n <Stack\n bgcolor=\"background.secondary\"\n direction=\"row\"\n alignItems=\"center\"\n justifyContent=\"space-between\"\n zIndex={1}\n radius={1}\n mb={1}\n height={50}\n width=\"100%\"\n px={1.5}\n >\n <Text fontWeight={600}>Selected: {state.selected.length}</Text>\n <Stack\n flexRow\n gap={1}\n >\n {rowAction && rowAction({ row: null, state }).map(({ label, icon, ...bprops }) => {\n return (\n <IconButton\n key={label}\n variant=\"soft\"\n color=\"brand\"\n {...bprops}\n >\n {icon}\n </IconButton>\n )\n })}\n </Stack>\n </Stack>\n )\n}\n\nexport default SelectedBox"],"names":[],"mappings":";;;;;;;AAMA;AACG;AAKA;AACA;AAAc;AAEd;;AAmBY;AAUH;AAIZ;;"}
1
+ {"version":3,"file":"SelectedBox.js","sources":["../../src/Datatable/SelectedBox.tsx"],"sourcesContent":["\"use client\"\nimport IconButton from '../IconButton'\nimport Stack from '../Stack'\nimport Text from '../Text'\nimport { DatatablePropsWithState } from './types'\n\nconst SelectedBox = (props: DatatablePropsWithState) => {\n let {\n state,\n rowAction\n } = props\n\n let checked = state.selectAll || !!state.selected.length\n if (!checked) return <></>\n\n return (\n <Stack\n bgcolor=\"surface.light\"\n direction=\"row\"\n alignItems=\"center\"\n justifyContent=\"space-between\"\n zIndex={1}\n radius={1}\n mb={1}\n height={50}\n width=\"100%\"\n px={1.5}\n >\n <Text fontWeight={600}>Selected: {state.selected.length}</Text>\n <Stack\n flexRow\n gap={1}\n >\n {rowAction && rowAction({ row: null, state }).map(({ label, icon, ...bprops }) => {\n return (\n <IconButton\n key={label}\n variant=\"ghost\"\n color=\"primary\"\n {...bprops}\n >\n {icon}\n </IconButton>\n )\n })}\n </Stack>\n </Stack>\n )\n}\n\nexport default SelectedBox"],"names":[],"mappings":";;;;;;;AAMA;AACG;AAKA;AACA;AAAc;AAEd;;AAmBY;AAUH;AAIZ;;"}
@@ -9,7 +9,7 @@ var Row = require('./Row.cjs');
9
9
 
10
10
  const TableArea = (props) => {
11
11
  let { rows, compact, renderRow, state, update, slotProps } = props;
12
- return (jsxRuntime.jsxs(index, Object.assign({ width: "100%", size: compact ? "small" : "medium", border: "1px solid", borderColor: "divider" }, slotProps === null || slotProps === void 0 ? void 0 : slotProps.table, { children: [jsxRuntime.jsx(TableHead, Object.assign({}, props, { update: update, state: state })), jsxRuntime.jsx(index$1, { sx: {
12
+ return (jsxRuntime.jsxs(index, Object.assign({ width: "100%", size: compact ? "small" : "medium", border: "1px solid", borderColor: "surface.divider" }, slotProps === null || slotProps === void 0 ? void 0 : slotProps.table, { children: [jsxRuntime.jsx(TableHead, Object.assign({}, props, { update: update, state: state })), jsxRuntime.jsx(index$1, { sx: {
13
13
  '& tr:last-child td': {
14
14
  borderBottom: 0
15
15
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Table.cjs","sources":["../../src/Datatable/Table.tsx"],"sourcesContent":["\"use client\";\nimport TableHead from './TableHead'\nimport Table from '../Table'\nimport TableBody from '../TableBody'\nimport Row from './Row'\nimport { DatatablePropsWithState } from './types';\n\nconst TableArea = (props: DatatablePropsWithState) => {\n let {\n rows,\n compact,\n renderRow,\n state,\n update,\n slotProps\n } = props\n\n return (\n <Table width=\"100%\" size={compact ? \"small\" : \"medium\"} border=\"1px solid\" borderColor=\"divider\" {...slotProps?.table}>\n <TableHead {...props} update={update} state={state} />\n <TableBody\n sx={{\n '& tr:last-child td': {\n borderBottom: 0\n }\n }}\n >\n {\n rows?.map((row: any, idx) => {\n let _row = renderRow ? renderRow(structuredClone(row), state) : row\n return <Row\n key={`dt-row-${row.id}-${idx}`}\n rawRow={row}\n row={_row}\n {...props}\n update={update}\n state={state}\n />\n })\n }\n </TableBody>\n </Table>\n )\n}\n\nexport default TableArea"],"names":[],"mappings":";;;;;;;;;AAOA;AACG;;AAcY;AACG;AACF;AACH;AAIK;AACA;AAQH;AAKf;;"}
1
+ {"version":3,"file":"Table.cjs","sources":["../../src/Datatable/Table.tsx"],"sourcesContent":["\"use client\";\nimport TableHead from './TableHead'\nimport Table from '../Table'\nimport TableBody from '../TableBody'\nimport Row from './Row'\nimport { DatatablePropsWithState } from './types';\n\nconst TableArea = (props: DatatablePropsWithState) => {\n let {\n rows,\n compact,\n renderRow,\n state,\n update,\n slotProps\n } = props\n\n return (\n <Table width=\"100%\" size={compact ? \"small\" : \"medium\"} border=\"1px solid\" borderColor=\"surface.divider\" {...slotProps?.table}>\n <TableHead {...props} update={update} state={state} />\n <TableBody\n sx={{\n '& tr:last-child td': {\n borderBottom: 0\n }\n }}\n >\n {\n rows?.map((row: any, idx) => {\n let _row = renderRow ? renderRow(structuredClone(row), state) : row\n return <Row\n key={`dt-row-${row.id}-${idx}`}\n rawRow={row}\n row={_row}\n {...props}\n update={update}\n state={state}\n />\n })\n }\n </TableBody>\n </Table>\n )\n}\n\nexport default TableArea"],"names":[],"mappings":";;;;;;;;;AAOA;AACG;;AAcY;AACG;AACF;AACH;AAIK;AACA;AAQH;AAKf;;"}
@@ -7,7 +7,7 @@ import Row from './Row.js';
7
7
 
8
8
  const TableArea = (props) => {
9
9
  let { rows, compact, renderRow, state, update, slotProps } = props;
10
- return (jsxs(Table, Object.assign({ width: "100%", size: compact ? "small" : "medium", border: "1px solid", borderColor: "divider" }, slotProps === null || slotProps === void 0 ? void 0 : slotProps.table, { children: [jsx(TableHeadRender, Object.assign({}, props, { update: update, state: state })), jsx(TableBody, { sx: {
10
+ return (jsxs(Table, Object.assign({ width: "100%", size: compact ? "small" : "medium", border: "1px solid", borderColor: "surface.divider" }, slotProps === null || slotProps === void 0 ? void 0 : slotProps.table, { children: [jsx(TableHeadRender, Object.assign({}, props, { update: update, state: state })), jsx(TableBody, { sx: {
11
11
  '& tr:last-child td': {
12
12
  borderBottom: 0
13
13
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Table.js","sources":["../../src/Datatable/Table.tsx"],"sourcesContent":["\"use client\";\nimport TableHead from './TableHead'\nimport Table from '../Table'\nimport TableBody from '../TableBody'\nimport Row from './Row'\nimport { DatatablePropsWithState } from './types';\n\nconst TableArea = (props: DatatablePropsWithState) => {\n let {\n rows,\n compact,\n renderRow,\n state,\n update,\n slotProps\n } = props\n\n return (\n <Table width=\"100%\" size={compact ? \"small\" : \"medium\"} border=\"1px solid\" borderColor=\"divider\" {...slotProps?.table}>\n <TableHead {...props} update={update} state={state} />\n <TableBody\n sx={{\n '& tr:last-child td': {\n borderBottom: 0\n }\n }}\n >\n {\n rows?.map((row: any, idx) => {\n let _row = renderRow ? renderRow(structuredClone(row), state) : row\n return <Row\n key={`dt-row-${row.id}-${idx}`}\n rawRow={row}\n row={_row}\n {...props}\n update={update}\n state={state}\n />\n })\n }\n </TableBody>\n </Table>\n )\n}\n\nexport default TableArea"],"names":[],"mappings":";;;;;;;AAOA;AACG;;AAcY;AACG;AACF;AACH;AAIK;AACA;AAQH;AAKf;;"}
1
+ {"version":3,"file":"Table.js","sources":["../../src/Datatable/Table.tsx"],"sourcesContent":["\"use client\";\nimport TableHead from './TableHead'\nimport Table from '../Table'\nimport TableBody from '../TableBody'\nimport Row from './Row'\nimport { DatatablePropsWithState } from './types';\n\nconst TableArea = (props: DatatablePropsWithState) => {\n let {\n rows,\n compact,\n renderRow,\n state,\n update,\n slotProps\n } = props\n\n return (\n <Table width=\"100%\" size={compact ? \"small\" : \"medium\"} border=\"1px solid\" borderColor=\"surface.divider\" {...slotProps?.table}>\n <TableHead {...props} update={update} state={state} />\n <TableBody\n sx={{\n '& tr:last-child td': {\n borderBottom: 0\n }\n }}\n >\n {\n rows?.map((row: any, idx) => {\n let _row = renderRow ? renderRow(structuredClone(row), state) : row\n return <Row\n key={`dt-row-${row.id}-${idx}`}\n rawRow={row}\n row={_row}\n {...props}\n update={update}\n state={state}\n />\n })\n }\n </TableBody>\n </Table>\n )\n}\n\nexport default TableArea"],"names":[],"mappings":";;;;;;;AAOA;AACG;;AAcY;AACG;AACF;AACH;AAIK;AACA;AAQH;AAKf;;"}
@@ -18,7 +18,7 @@ const TableHeadRender = ({ columns, rows, disableRow, rowAction, hideCheckbox, c
18
18
  return jsxRuntime.jsx(jsxRuntime.Fragment, {});
19
19
  let checked = state.selectAll || !!state.selected.length;
20
20
  let sortables = state.sortable || {};
21
- return (jsxRuntime.jsx(index, { position: "relative", children: jsxRuntime.jsxs(index$1, { bgcolor: "default", borderBottom: 1, children: [!hideCheckbox && jsxRuntime.jsx(index$2, { th: true, width: 40, children: jsxRuntime.jsx(index$3, { size: compact ? "small" : "medium", checkIcon: state.selected.length && !state.selectAll ? jsxRuntime.jsx(IndeterminateCheckBoxIcon, {}) : undefined, checked: checked, onChange: () => {
21
+ return (jsxRuntime.jsx(index, { position: "relative", children: jsxRuntime.jsxs(index$1, { bgcolor: "surface", borderBottom: 1, children: [!hideCheckbox && jsxRuntime.jsx(index$2, { th: true, width: 40, children: jsxRuntime.jsx(index$3, { size: compact ? "small" : "medium", checkIcon: state.selected.length && !state.selectAll ? jsxRuntime.jsx(IndeterminateCheckBoxIcon, {}) : undefined, checked: checked, onChange: () => {
22
22
  let ids = [];
23
23
  let undefinedCount = 0;
24
24
  for (let i = 0; i < rows.length; i++) {
@@ -45,7 +45,7 @@ const TableHeadRender = ({ columns, rows, disableRow, rowAction, hideCheckbox, c
45
45
  }
46
46
  } }) }), columns.map((_a, idx) => {
47
47
  var { label, field: _f, sortable } = _a, rest = tslib.__rest(_a, ["label", "field", "sortable"]);
48
- return jsxRuntime.jsx(index$2, Object.assign({ th: true, textAlign: "left" }, rest, { children: jsxRuntime.jsxs(index$4, { disabled: skeleton ? true : false, flexRow: true, alignItems: "center", cursor: sortable ? "pointer" : "default", userSelect: "none", gap: .5, onClick: () => {
48
+ return jsxRuntime.jsx(index$2, Object.assign({ th: true, textAlign: "left" }, rest, { children: jsxRuntime.jsxs(index$4, { disabled: skeleton ? true : false, flexRow: true, alignItems: "center", cursor: sortable ? "pointer" : 'surface', userSelect: "none", gap: .5, onClick: () => {
49
49
  if (sortable) {
50
50
  let v = sortables[_f];
51
51
  if (!v) {
@@ -61,7 +61,7 @@ const TableHeadRender = ({ columns, rows, disableRow, rowAction, hideCheckbox, c
61
61
  sortable: sortables
62
62
  });
63
63
  }
64
- }, children: [jsxRuntime.jsx(index$5, { color: "text.secondary", fontWeight: 600, children: label }), sortable && jsxRuntime.jsx(jsxRuntime.Fragment, { children: jsxRuntime.jsx(SwitchRight, { opacity: sortables[_f] ? 1 : .3, color: sortables[_f] ? 'brand' : 'text.secondary', sx: {
64
+ }, children: [jsxRuntime.jsx(index$5, { color: "surface.muted", fontWeight: 600, children: label }), sortable && jsxRuntime.jsx(jsxRuntime.Fragment, { children: jsxRuntime.jsx(SwitchRight, { opacity: sortables[_f] ? 1 : .3, color: sortables[_f] ? 'primary' : 'surface.muted', sx: {
65
65
  fontSize: 23,
66
66
  transform: sortables[_f] === 'desc' ? 'rotate(-90deg)' : 'rotate(90deg)',
67
67
  } }) })] }) }), idx);
@@ -1 +1 @@
1
- {"version":3,"file":"TableHead.cjs","sources":["../../src/Datatable/TableHead.tsx"],"sourcesContent":["\"use client\";\nimport TableHead from '../TableHead'\nimport TableRow from '../TableRow'\nimport TableCell from '../TableCell'\nimport Checkbox from '../Checkbox'\nimport IntermidiatIcon from '@xanui/icons/IndeterminateCheckBox'\nimport { DatatablePropsWithState } from './types';\nimport Stack from '../Stack';\nimport Text from '../Text';\nimport SwitchRight from '@xanui/icons/SwitchRight';\n\nconst TableHeadRender = ({ columns, rows, disableRow, rowAction, hideCheckbox, compact, skeleton, state, update }: DatatablePropsWithState) => {\n if (!columns.length) return <></>\n let checked = state.selectAll || !!state.selected.length\n let sortables = state.sortable || {}\n\n return (\n <TableHead position=\"relative\">\n <TableRow bgcolor=\"default\" borderBottom={1} >\n {!hideCheckbox && <TableCell th width={40}>\n <Checkbox\n size={compact ? \"small\" : \"medium\"}\n checkIcon={state.selected.length && !state.selectAll ? <IntermidiatIcon /> : undefined}\n checked={checked}\n onChange={() => {\n let ids: any = []\n let undefinedCount = 0\n for (let i = 0; i < rows.length; i++) {\n const row = rows[i]\n const isDisable = (disableRow ? disableRow(row, state) : false) || false\n if (!isDisable && row.id) {\n ids.push(row.id)\n } else {\n undefinedCount += 1\n }\n }\n\n if (undefinedCount) {\n update({\n selected: state.selected.length ? [] : ids,\n selectAll: !state.selected.length\n })\n } else {\n update({\n selected: state.selectAll ? [] : ids,\n selectAll: !state.selectAll\n })\n }\n }}\n />\n </TableCell>}\n {\n columns.map(({ label, field: _f, sortable, ...rest }, idx) => <TableCell\n key={idx}\n th\n textAlign=\"left\"\n {...rest}\n >\n <Stack\n disabled={skeleton ? true : false}\n flexRow\n alignItems=\"center\"\n cursor={sortable ? \"pointer\" : \"default\"}\n userSelect={\"none\"}\n gap={.5}\n onClick={() => {\n if (sortable) {\n let v = sortables[_f as any]\n if (!v) {\n sortables[_f as any] = 'asc'\n } else if (v === 'asc') {\n sortables[_f as any] = 'desc'\n } else {\n delete sortables[_f as any]\n }\n update({\n sortable: sortables\n })\n }\n }}\n >\n <Text color=\"text.secondary\" fontWeight={600}>{label}</Text>\n {sortable && <>\n <SwitchRight\n opacity={sortables[_f as any] ? 1 : .3}\n color={sortables[_f as any] ? 'brand' : 'text.secondary'}\n sx={{\n fontSize: 23,\n transform: sortables[_f as any] === 'desc' ? 'rotate(-90deg)' : 'rotate(90deg)',\n }}\n />\n </>}\n </Stack>\n </TableCell>)\n }\n {\n !!(rows.length && rowAction && rowAction((rows as any)[0])?.length) && <TableCell th width={30} />\n }\n </TableRow>\n </TableHead>\n )\n}\n\nexport default TableHeadRender\n"],"names":[],"mappings":";;;;;;;;;;;;;;AAWA;;;AACyB;AACrB;AACA;AAEA;;;AAWwB;AACI;;AAEA;AACI;;;;;;;AAOJ;AACI;AACA;AACH;;;AAED;;AAEI;AACH;;AAET;AAIS;;;AAeG;;AAEI;;AACG;AACH;;;AAEA;;AAEJ;AACI;AACH;;;AAUG;AACA;AACH;AAIL;AAQhC;;"}
1
+ {"version":3,"file":"TableHead.cjs","sources":["../../src/Datatable/TableHead.tsx"],"sourcesContent":["\"use client\";\nimport TableHead from '../TableHead'\nimport TableRow from '../TableRow'\nimport TableCell from '../TableCell'\nimport Checkbox from '../Checkbox'\nimport IntermidiatIcon from '@xanui/icons/IndeterminateCheckBox'\nimport { DatatablePropsWithState } from './types';\nimport Stack from '../Stack';\nimport Text from '../Text';\nimport SwitchRight from '@xanui/icons/SwitchRight';\n\nconst TableHeadRender = ({ columns, rows, disableRow, rowAction, hideCheckbox, compact, skeleton, state, update }: DatatablePropsWithState) => {\n if (!columns.length) return <></>\n let checked = state.selectAll || !!state.selected.length\n let sortables = state.sortable || {}\n\n return (\n <TableHead position=\"relative\">\n <TableRow bgcolor=\"surface\" borderBottom={1} >\n {!hideCheckbox && <TableCell th width={40}>\n <Checkbox\n size={compact ? \"small\" : \"medium\"}\n checkIcon={state.selected.length && !state.selectAll ? <IntermidiatIcon /> : undefined}\n checked={checked}\n onChange={() => {\n let ids: any = []\n let undefinedCount = 0\n for (let i = 0; i < rows.length; i++) {\n const row = rows[i]\n const isDisable = (disableRow ? disableRow(row, state) : false) || false\n if (!isDisable && row.id) {\n ids.push(row.id)\n } else {\n undefinedCount += 1\n }\n }\n\n if (undefinedCount) {\n update({\n selected: state.selected.length ? [] : ids,\n selectAll: !state.selected.length\n })\n } else {\n update({\n selected: state.selectAll ? [] : ids,\n selectAll: !state.selectAll\n })\n }\n }}\n />\n </TableCell>}\n {\n columns.map(({ label, field: _f, sortable, ...rest }, idx) => <TableCell\n key={idx}\n th\n textAlign=\"left\"\n {...rest}\n >\n <Stack\n disabled={skeleton ? true : false}\n flexRow\n alignItems=\"center\"\n cursor={sortable ? \"pointer\" : 'surface'}\n userSelect={\"none\"}\n gap={.5}\n onClick={() => {\n if (sortable) {\n let v = sortables[_f as any]\n if (!v) {\n sortables[_f as any] = 'asc'\n } else if (v === 'asc') {\n sortables[_f as any] = 'desc'\n } else {\n delete sortables[_f as any]\n }\n update({\n sortable: sortables\n })\n }\n }}\n >\n <Text color=\"surface.muted\" fontWeight={600}>{label}</Text>\n {sortable && <>\n <SwitchRight\n opacity={sortables[_f as any] ? 1 : .3}\n color={sortables[_f as any] ? 'primary' : 'surface.muted'}\n sx={{\n fontSize: 23,\n transform: sortables[_f as any] === 'desc' ? 'rotate(-90deg)' : 'rotate(90deg)',\n }}\n />\n </>}\n </Stack>\n </TableCell>)\n }\n {\n !!(rows.length && rowAction && rowAction((rows as any)[0])?.length) && <TableCell th width={30} />\n }\n </TableRow>\n </TableHead>\n )\n}\n\nexport default TableHeadRender\n"],"names":[],"mappings":";;;;;;;;;;;;;;AAWA;;;AACyB;AACrB;AACA;AAEA;;;AAWwB;AACI;;AAEA;AACI;;;;;;;AAOJ;AACI;AACA;AACH;;;AAED;;AAEI;AACH;;AAET;AAIS;;;AAeG;;AAEI;;AACG;AACH;;;AAEA;;AAEJ;AACI;AACH;;;AAUG;AACA;AACH;AAIL;AAQhC;;"}
@@ -16,7 +16,7 @@ const TableHeadRender = ({ columns, rows, disableRow, rowAction, hideCheckbox, c
16
16
  return jsx(Fragment, {});
17
17
  let checked = state.selectAll || !!state.selected.length;
18
18
  let sortables = state.sortable || {};
19
- return (jsx(TableHead, { position: "relative", children: jsxs(TableRow, { bgcolor: "default", borderBottom: 1, children: [!hideCheckbox && jsx(TableCell, { th: true, width: 40, children: jsx(Checkbox, { size: compact ? "small" : "medium", checkIcon: state.selected.length && !state.selectAll ? jsx(IndeterminateCheckBoxIcon, {}) : undefined, checked: checked, onChange: () => {
19
+ return (jsx(TableHead, { position: "relative", children: jsxs(TableRow, { bgcolor: "surface", borderBottom: 1, children: [!hideCheckbox && jsx(TableCell, { th: true, width: 40, children: jsx(Checkbox, { size: compact ? "small" : "medium", checkIcon: state.selected.length && !state.selectAll ? jsx(IndeterminateCheckBoxIcon, {}) : undefined, checked: checked, onChange: () => {
20
20
  let ids = [];
21
21
  let undefinedCount = 0;
22
22
  for (let i = 0; i < rows.length; i++) {
@@ -43,7 +43,7 @@ const TableHeadRender = ({ columns, rows, disableRow, rowAction, hideCheckbox, c
43
43
  }
44
44
  } }) }), columns.map((_a, idx) => {
45
45
  var { label, field: _f, sortable } = _a, rest = __rest(_a, ["label", "field", "sortable"]);
46
- return jsx(TableCell, Object.assign({ th: true, textAlign: "left" }, rest, { children: jsxs(Stack, { disabled: skeleton ? true : false, flexRow: true, alignItems: "center", cursor: sortable ? "pointer" : "default", userSelect: "none", gap: .5, onClick: () => {
46
+ return jsx(TableCell, Object.assign({ th: true, textAlign: "left" }, rest, { children: jsxs(Stack, { disabled: skeleton ? true : false, flexRow: true, alignItems: "center", cursor: sortable ? "pointer" : 'surface', userSelect: "none", gap: .5, onClick: () => {
47
47
  if (sortable) {
48
48
  let v = sortables[_f];
49
49
  if (!v) {
@@ -59,7 +59,7 @@ const TableHeadRender = ({ columns, rows, disableRow, rowAction, hideCheckbox, c
59
59
  sortable: sortables
60
60
  });
61
61
  }
62
- }, children: [jsx(Text, { color: "text.secondary", fontWeight: 600, children: label }), sortable && jsx(Fragment, { children: jsx(SwitchRight, { opacity: sortables[_f] ? 1 : .3, color: sortables[_f] ? 'brand' : 'text.secondary', sx: {
62
+ }, children: [jsx(Text, { color: "surface.muted", fontWeight: 600, children: label }), sortable && jsx(Fragment, { children: jsx(SwitchRight, { opacity: sortables[_f] ? 1 : .3, color: sortables[_f] ? 'primary' : 'surface.muted', sx: {
63
63
  fontSize: 23,
64
64
  transform: sortables[_f] === 'desc' ? 'rotate(-90deg)' : 'rotate(90deg)',
65
65
  } }) })] }) }), idx);
@@ -1 +1 @@
1
- {"version":3,"file":"TableHead.js","sources":["../../src/Datatable/TableHead.tsx"],"sourcesContent":["\"use client\";\nimport TableHead from '../TableHead'\nimport TableRow from '../TableRow'\nimport TableCell from '../TableCell'\nimport Checkbox from '../Checkbox'\nimport IntermidiatIcon from '@xanui/icons/IndeterminateCheckBox'\nimport { DatatablePropsWithState } from './types';\nimport Stack from '../Stack';\nimport Text from '../Text';\nimport SwitchRight from '@xanui/icons/SwitchRight';\n\nconst TableHeadRender = ({ columns, rows, disableRow, rowAction, hideCheckbox, compact, skeleton, state, update }: DatatablePropsWithState) => {\n if (!columns.length) return <></>\n let checked = state.selectAll || !!state.selected.length\n let sortables = state.sortable || {}\n\n return (\n <TableHead position=\"relative\">\n <TableRow bgcolor=\"default\" borderBottom={1} >\n {!hideCheckbox && <TableCell th width={40}>\n <Checkbox\n size={compact ? \"small\" : \"medium\"}\n checkIcon={state.selected.length && !state.selectAll ? <IntermidiatIcon /> : undefined}\n checked={checked}\n onChange={() => {\n let ids: any = []\n let undefinedCount = 0\n for (let i = 0; i < rows.length; i++) {\n const row = rows[i]\n const isDisable = (disableRow ? disableRow(row, state) : false) || false\n if (!isDisable && row.id) {\n ids.push(row.id)\n } else {\n undefinedCount += 1\n }\n }\n\n if (undefinedCount) {\n update({\n selected: state.selected.length ? [] : ids,\n selectAll: !state.selected.length\n })\n } else {\n update({\n selected: state.selectAll ? [] : ids,\n selectAll: !state.selectAll\n })\n }\n }}\n />\n </TableCell>}\n {\n columns.map(({ label, field: _f, sortable, ...rest }, idx) => <TableCell\n key={idx}\n th\n textAlign=\"left\"\n {...rest}\n >\n <Stack\n disabled={skeleton ? true : false}\n flexRow\n alignItems=\"center\"\n cursor={sortable ? \"pointer\" : \"default\"}\n userSelect={\"none\"}\n gap={.5}\n onClick={() => {\n if (sortable) {\n let v = sortables[_f as any]\n if (!v) {\n sortables[_f as any] = 'asc'\n } else if (v === 'asc') {\n sortables[_f as any] = 'desc'\n } else {\n delete sortables[_f as any]\n }\n update({\n sortable: sortables\n })\n }\n }}\n >\n <Text color=\"text.secondary\" fontWeight={600}>{label}</Text>\n {sortable && <>\n <SwitchRight\n opacity={sortables[_f as any] ? 1 : .3}\n color={sortables[_f as any] ? 'brand' : 'text.secondary'}\n sx={{\n fontSize: 23,\n transform: sortables[_f as any] === 'desc' ? 'rotate(-90deg)' : 'rotate(90deg)',\n }}\n />\n </>}\n </Stack>\n </TableCell>)\n }\n {\n !!(rows.length && rowAction && rowAction((rows as any)[0])?.length) && <TableCell th width={30} />\n }\n </TableRow>\n </TableHead>\n )\n}\n\nexport default TableHeadRender\n"],"names":[],"mappings":";;;;;;;;;;;;AAWA;;;AACyB;AACrB;AACA;AAEA;;;AAWwB;AACI;;AAEA;AACI;;;;;;;AAOJ;AACI;AACA;AACH;;;AAED;;AAEI;AACH;;AAET;AAIS;;;AAeG;;AAEI;;AACG;AACH;;;AAEA;;AAEJ;AACI;AACH;;;AAUG;AACA;AACH;AAIL;AAQhC;;"}
1
+ {"version":3,"file":"TableHead.js","sources":["../../src/Datatable/TableHead.tsx"],"sourcesContent":["\"use client\";\nimport TableHead from '../TableHead'\nimport TableRow from '../TableRow'\nimport TableCell from '../TableCell'\nimport Checkbox from '../Checkbox'\nimport IntermidiatIcon from '@xanui/icons/IndeterminateCheckBox'\nimport { DatatablePropsWithState } from './types';\nimport Stack from '../Stack';\nimport Text from '../Text';\nimport SwitchRight from '@xanui/icons/SwitchRight';\n\nconst TableHeadRender = ({ columns, rows, disableRow, rowAction, hideCheckbox, compact, skeleton, state, update }: DatatablePropsWithState) => {\n if (!columns.length) return <></>\n let checked = state.selectAll || !!state.selected.length\n let sortables = state.sortable || {}\n\n return (\n <TableHead position=\"relative\">\n <TableRow bgcolor=\"surface\" borderBottom={1} >\n {!hideCheckbox && <TableCell th width={40}>\n <Checkbox\n size={compact ? \"small\" : \"medium\"}\n checkIcon={state.selected.length && !state.selectAll ? <IntermidiatIcon /> : undefined}\n checked={checked}\n onChange={() => {\n let ids: any = []\n let undefinedCount = 0\n for (let i = 0; i < rows.length; i++) {\n const row = rows[i]\n const isDisable = (disableRow ? disableRow(row, state) : false) || false\n if (!isDisable && row.id) {\n ids.push(row.id)\n } else {\n undefinedCount += 1\n }\n }\n\n if (undefinedCount) {\n update({\n selected: state.selected.length ? [] : ids,\n selectAll: !state.selected.length\n })\n } else {\n update({\n selected: state.selectAll ? [] : ids,\n selectAll: !state.selectAll\n })\n }\n }}\n />\n </TableCell>}\n {\n columns.map(({ label, field: _f, sortable, ...rest }, idx) => <TableCell\n key={idx}\n th\n textAlign=\"left\"\n {...rest}\n >\n <Stack\n disabled={skeleton ? true : false}\n flexRow\n alignItems=\"center\"\n cursor={sortable ? \"pointer\" : 'surface'}\n userSelect={\"none\"}\n gap={.5}\n onClick={() => {\n if (sortable) {\n let v = sortables[_f as any]\n if (!v) {\n sortables[_f as any] = 'asc'\n } else if (v === 'asc') {\n sortables[_f as any] = 'desc'\n } else {\n delete sortables[_f as any]\n }\n update({\n sortable: sortables\n })\n }\n }}\n >\n <Text color=\"surface.muted\" fontWeight={600}>{label}</Text>\n {sortable && <>\n <SwitchRight\n opacity={sortables[_f as any] ? 1 : .3}\n color={sortables[_f as any] ? 'primary' : 'surface.muted'}\n sx={{\n fontSize: 23,\n transform: sortables[_f as any] === 'desc' ? 'rotate(-90deg)' : 'rotate(90deg)',\n }}\n />\n </>}\n </Stack>\n </TableCell>)\n }\n {\n !!(rows.length && rowAction && rowAction((rows as any)[0])?.length) && <TableCell th width={30} />\n }\n </TableRow>\n </TableHead>\n )\n}\n\nexport default TableHeadRender\n"],"names":[],"mappings":";;;;;;;;;;;;AAWA;;;AACyB;AACrB;AACA;AAEA;;;AAWwB;AACI;;AAEA;AACI;;;;;;;AAOJ;AACI;AACA;AACH;;;AAED;;AAEI;AACH;;AAET;AAIS;;;AAeG;;AAEI;;AACG;AACH;;;AAEA;;AAEJ;AACI;AACH;;;AAUG;AACA;AACH;AAIL;AAQhC;;"}
@@ -75,7 +75,7 @@ const DataTable = React.forwardRef((props, ref) => {
75
75
  return (jsxRuntime.jsxs(index$1, Object.assign({ height: "100%" }, viewBoxProps, { baseClass: 'datatable', ref: ref, sx: Object.assign(Object.assign({}, viewBoxProps === null || viewBoxProps === void 0 ? void 0 : viewBoxProps.sx), { '& thead': fixedHeader ? {
76
76
  position: "sticky",
77
77
  top: 0,
78
- bgcolor: "background.primary",
78
+ bgcolor: "surface.main",
79
79
  zIndex: 1
80
80
  } : {} }), startContent: (jsxRuntime.jsxs(core.Tag, { baseClass: 'datatable-header', sxr: {
81
81
  display: "flex",
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../src/Datatable/index.tsx"],"sourcesContent":["\"use client\";\nimport React, { useMemo } from 'react'\nimport ViewBox from '../ViewBox'\nimport { Tag, useInterface } from '@xanui/core';\nimport SelectedBox from './SelectedBox'\nimport TableArea from './Table'\nimport FilterBox from './FilterBox'\nimport TablePagination, { TablePaginationState } from '../TablePagination'\nimport Stack from '../Stack'\nimport { DatatableProps, DatatableState } from './types';\nimport Skeleton from '../Skeleton';\n\nexport type * from './types';\n\nconst DataTable = React.forwardRef((props: DatatableProps, ref: React.Ref<HTMLDivElement>) => {\n let [p] = useInterface<any>(\"Datatable\", props, {})\n\n let _props = useMemo(() => {\n let np = { ...p }\n\n if (typeof np.skeleton === 'number' || np.skeleton === true) {\n const limit = np.perpages && np.perpages.length > 0 ? np.perpages[0] : 10\n let length = np.skeleton === true ? limit : np.skeleton\n\n if (!np.hideCheckbox) {\n np.columns = [{\n label: '', field: \"__checkbox\", width: 34\n }, ...np.columns]\n }\n\n if (np.rowAction) {\n np.columns = [...np.columns, { label: \"\", field: \"__actions\", width: 34 }]\n }\n\n let columns = np.columns || []\n\n np.rows = []\n for (let i = 0; i < length; i++) {\n let r: any = { id: i }\n for (let col of columns) {\n r[col.field] = \"\"\n }\n np.rows.push(r)\n }\n\n np.renderRow = (r: any) => {\n for (let col of columns) {\n r[col.field] = <Skeleton\n animation={\"wave\"}\n height={16}\n radius={.5}\n width={\"100%\"}\n />\n }\n return r\n }\n np.hideCheckbox = true\n np.rowAction = undefined\n }\n return np\n }, [p])\n\n let {\n rows,\n tabs,\n\n pagination: { perpages = [30, 50, 100], total = 0 } = {},\n state: userState = {},\n onChange,\n\n fixedHeader,\n hidePagination,\n slotProps,\n\n\n // skip props for ViewBox\n skeleton,\n rowAction,\n disableRow,\n renderRow,\n filters,\n hideCheckbox,\n hideSearch,\n columns,\n compact,\n\n ...viewBoxProps\n } = _props\n\n const userperpage = userState?.pagination?.perpage\n let perpage = userperpage && perpages.includes(userperpage) ? userperpage : perpages[0]\n let page = userState?.pagination?.page ?? 1\n const state = {\n selected: userState?.selected ?? [],\n selectAll: userState?.selectAll ?? false,\n pagination: {\n page,\n perpage,\n from: page ? (perpage * (page - 1)) + 1 : 1,\n to: page ? perpage * page : perpage,\n },\n tab: tabs ? (userState?.tab ?? tabs[0].value ?? tabs[0].label.toLowerCase()) : \"\",\n search: userState?.search ?? \"\",\n sortable: userState?.sortable ?? {},\n filters: userState?.filters ?? {}\n }\n\n const update = (s: Partial<DatatableState>) => {\n onChange({ ...state, ...s })\n }\n\n return (\n <ViewBox\n height=\"100%\"\n {...viewBoxProps}\n baseClass='datatable'\n ref={ref as any}\n sx={{\n ...viewBoxProps?.sx,\n '& thead': fixedHeader ? {\n position: \"sticky\",\n top: 0,\n bgcolor: \"background.primary\",\n zIndex: 1\n } : {},\n }}\n startContent={(\n <Tag\n baseClass='datatable-header'\n sxr={{\n display: \"flex\",\n flexDirection: \"row\",\n justifyContent: \"space-between\"\n }}\n >\n <SelectedBox {..._props} update={update} state={state} />\n <FilterBox {..._props} update={update} state={state} />\n </Tag>\n )}\n >\n <TableArea\n {..._props}\n update={update}\n state={state}\n />\n <Stack\n p={1}\n alignItems=\"flex-end\"\n >\n {!hidePagination && <TablePagination\n disabled={_props.skeleton ? true : false}\n {...slotProps?.pagination}\n total={total || rows.length}\n page={state.pagination.page}\n perpage={state.pagination.perpage}\n perpages={perpages}\n slotProps={{\n select: {\n size: \"small\",\n }\n }}\n onChange={(state: TablePaginationState) => {\n update({ pagination: state })\n }}\n />}\n </Stack>\n </ViewBox>\n )\n})\n\nexport default DataTable"],"names":[],"mappings":";;;;;;;;;;;;;;;AAcA;;AACI;AAEA;AACI;AAEA;;AAEI;AAEA;;;AAGK;;AAGL;;;AAIA;AAEA;AACA;AACI;AACA;AACI;;AAEJ;;AAGJ;AACI;;;AAQA;AACJ;AACA;AACA;;AAEJ;AACJ;AAEA;;;AA2BA;;AAEA;AACA;;;AAGI;;;AAGI;;AAEH;AACD;;;;;AAMJ;AACI;AACJ;AAEA;AASgB;AACA;AACA;AACA;AACH;AAMO;AACA;AACA;;AAyBA;AACI;AACH;AACJ;AAEG;AACJ;AAKpB;;"}
1
+ {"version":3,"file":"index.cjs","sources":["../../src/Datatable/index.tsx"],"sourcesContent":["\"use client\";\nimport React, { useMemo } from 'react'\nimport ViewBox from '../ViewBox'\nimport { Tag, useInterface } from '@xanui/core';\nimport SelectedBox from './SelectedBox'\nimport TableArea from './Table'\nimport FilterBox from './FilterBox'\nimport TablePagination, { TablePaginationState } from '../TablePagination'\nimport Stack from '../Stack'\nimport { DatatableProps, DatatableState } from './types';\nimport Skeleton from '../Skeleton';\n\nexport type * from './types';\n\nconst DataTable = React.forwardRef((props: DatatableProps, ref: React.Ref<HTMLDivElement>) => {\n let [p] = useInterface<any>(\"Datatable\", props, {})\n\n let _props = useMemo(() => {\n let np = { ...p }\n\n if (typeof np.skeleton === 'number' || np.skeleton === true) {\n const limit = np.perpages && np.perpages.length > 0 ? np.perpages[0] : 10\n let length = np.skeleton === true ? limit : np.skeleton\n\n if (!np.hideCheckbox) {\n np.columns = [{\n label: '', field: \"__checkbox\", width: 34\n }, ...np.columns]\n }\n\n if (np.rowAction) {\n np.columns = [...np.columns, { label: \"\", field: \"__actions\", width: 34 }]\n }\n\n let columns = np.columns || []\n\n np.rows = []\n for (let i = 0; i < length; i++) {\n let r: any = { id: i }\n for (let col of columns) {\n r[col.field] = \"\"\n }\n np.rows.push(r)\n }\n\n np.renderRow = (r: any) => {\n for (let col of columns) {\n r[col.field] = <Skeleton\n animation={\"wave\"}\n height={16}\n radius={.5}\n width={\"100%\"}\n />\n }\n return r\n }\n np.hideCheckbox = true\n np.rowAction = undefined\n }\n return np\n }, [p])\n\n let {\n rows,\n tabs,\n\n pagination: { perpages = [30, 50, 100], total = 0 } = {},\n state: userState = {},\n onChange,\n\n fixedHeader,\n hidePagination,\n slotProps,\n\n\n // skip props for ViewBox\n skeleton,\n rowAction,\n disableRow,\n renderRow,\n filters,\n hideCheckbox,\n hideSearch,\n columns,\n compact,\n\n ...viewBoxProps\n } = _props\n\n const userperpage = userState?.pagination?.perpage\n let perpage = userperpage && perpages.includes(userperpage) ? userperpage : perpages[0]\n let page = userState?.pagination?.page ?? 1\n const state = {\n selected: userState?.selected ?? [],\n selectAll: userState?.selectAll ?? false,\n pagination: {\n page,\n perpage,\n from: page ? (perpage * (page - 1)) + 1 : 1,\n to: page ? perpage * page : perpage,\n },\n tab: tabs ? (userState?.tab ?? tabs[0].value ?? tabs[0].label.toLowerCase()) : \"\",\n search: userState?.search ?? \"\",\n sortable: userState?.sortable ?? {},\n filters: userState?.filters ?? {}\n }\n\n const update = (s: Partial<DatatableState>) => {\n onChange({ ...state, ...s })\n }\n\n return (\n <ViewBox\n height=\"100%\"\n {...viewBoxProps}\n baseClass='datatable'\n ref={ref as any}\n sx={{\n ...viewBoxProps?.sx,\n '& thead': fixedHeader ? {\n position: \"sticky\",\n top: 0,\n bgcolor: \"surface.main\",\n zIndex: 1\n } : {},\n }}\n startContent={(\n <Tag\n baseClass='datatable-header'\n sxr={{\n display: \"flex\",\n flexDirection: \"row\",\n justifyContent: \"space-between\"\n }}\n >\n <SelectedBox {..._props} update={update} state={state} />\n <FilterBox {..._props} update={update} state={state} />\n </Tag>\n )}\n >\n <TableArea\n {..._props}\n update={update}\n state={state}\n />\n <Stack\n p={1}\n alignItems=\"flex-end\"\n >\n {!hidePagination && <TablePagination\n disabled={_props.skeleton ? true : false}\n {...slotProps?.pagination}\n total={total || rows.length}\n page={state.pagination.page}\n perpage={state.pagination.perpage}\n perpages={perpages}\n slotProps={{\n select: {\n size: \"small\",\n }\n }}\n onChange={(state: TablePaginationState) => {\n update({ pagination: state })\n }}\n />}\n </Stack>\n </ViewBox>\n )\n})\n\nexport default DataTable"],"names":[],"mappings":";;;;;;;;;;;;;;;AAcA;;AACI;AAEA;AACI;AAEA;;AAEI;AAEA;;;AAGK;;AAGL;;;AAIA;AAEA;AACA;AACI;AACA;AACI;;AAEJ;;AAGJ;AACI;;;AAQA;AACJ;AACA;AACA;;AAEJ;AACJ;AAEA;;;AA2BA;;AAEA;AACA;;;AAGI;;;AAGI;;AAEH;AACD;;;;;AAMJ;AACI;AACJ;AAEA;AASgB;AACA;AACA;AACA;AACH;AAMO;AACA;AACA;;AAyBA;AACI;AACH;AACJ;AAEG;AACJ;AAKpB;;"}
@@ -1,7 +1,7 @@
1
- import React from 'react';
1
+ import React__default from 'react';
2
2
  import { DatatableProps } from './types.js';
3
3
  export { DataTableDefaultRow, DatatableColumnType, DatatableRowActionType, DatatableState, DatatableStatePartial, DatatableTabsProps } from './types.js';
4
4
 
5
- declare const DataTable: React.ForwardRefExoticComponent<Omit<DatatableProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
5
+ declare const DataTable: React__default.ForwardRefExoticComponent<Omit<DatatableProps, "ref"> & React__default.RefAttributes<HTMLDivElement>>;
6
6
 
7
7
  export { DatatableProps, DataTable as default };
@@ -73,7 +73,7 @@ const DataTable = React.forwardRef((props, ref) => {
73
73
  return (jsxs(ViewBox, Object.assign({ height: "100%" }, viewBoxProps, { baseClass: 'datatable', ref: ref, sx: Object.assign(Object.assign({}, viewBoxProps === null || viewBoxProps === void 0 ? void 0 : viewBoxProps.sx), { '& thead': fixedHeader ? {
74
74
  position: "sticky",
75
75
  top: 0,
76
- bgcolor: "background.primary",
76
+ bgcolor: "surface.main",
77
77
  zIndex: 1
78
78
  } : {} }), startContent: (jsxs(Tag, { baseClass: 'datatable-header', sxr: {
79
79
  display: "flex",
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/Datatable/index.tsx"],"sourcesContent":["\"use client\";\nimport React, { useMemo } from 'react'\nimport ViewBox from '../ViewBox'\nimport { Tag, useInterface } from '@xanui/core';\nimport SelectedBox from './SelectedBox'\nimport TableArea from './Table'\nimport FilterBox from './FilterBox'\nimport TablePagination, { TablePaginationState } from '../TablePagination'\nimport Stack from '../Stack'\nimport { DatatableProps, DatatableState } from './types';\nimport Skeleton from '../Skeleton';\n\nexport type * from './types';\n\nconst DataTable = React.forwardRef((props: DatatableProps, ref: React.Ref<HTMLDivElement>) => {\n let [p] = useInterface<any>(\"Datatable\", props, {})\n\n let _props = useMemo(() => {\n let np = { ...p }\n\n if (typeof np.skeleton === 'number' || np.skeleton === true) {\n const limit = np.perpages && np.perpages.length > 0 ? np.perpages[0] : 10\n let length = np.skeleton === true ? limit : np.skeleton\n\n if (!np.hideCheckbox) {\n np.columns = [{\n label: '', field: \"__checkbox\", width: 34\n }, ...np.columns]\n }\n\n if (np.rowAction) {\n np.columns = [...np.columns, { label: \"\", field: \"__actions\", width: 34 }]\n }\n\n let columns = np.columns || []\n\n np.rows = []\n for (let i = 0; i < length; i++) {\n let r: any = { id: i }\n for (let col of columns) {\n r[col.field] = \"\"\n }\n np.rows.push(r)\n }\n\n np.renderRow = (r: any) => {\n for (let col of columns) {\n r[col.field] = <Skeleton\n animation={\"wave\"}\n height={16}\n radius={.5}\n width={\"100%\"}\n />\n }\n return r\n }\n np.hideCheckbox = true\n np.rowAction = undefined\n }\n return np\n }, [p])\n\n let {\n rows,\n tabs,\n\n pagination: { perpages = [30, 50, 100], total = 0 } = {},\n state: userState = {},\n onChange,\n\n fixedHeader,\n hidePagination,\n slotProps,\n\n\n // skip props for ViewBox\n skeleton,\n rowAction,\n disableRow,\n renderRow,\n filters,\n hideCheckbox,\n hideSearch,\n columns,\n compact,\n\n ...viewBoxProps\n } = _props\n\n const userperpage = userState?.pagination?.perpage\n let perpage = userperpage && perpages.includes(userperpage) ? userperpage : perpages[0]\n let page = userState?.pagination?.page ?? 1\n const state = {\n selected: userState?.selected ?? [],\n selectAll: userState?.selectAll ?? false,\n pagination: {\n page,\n perpage,\n from: page ? (perpage * (page - 1)) + 1 : 1,\n to: page ? perpage * page : perpage,\n },\n tab: tabs ? (userState?.tab ?? tabs[0].value ?? tabs[0].label.toLowerCase()) : \"\",\n search: userState?.search ?? \"\",\n sortable: userState?.sortable ?? {},\n filters: userState?.filters ?? {}\n }\n\n const update = (s: Partial<DatatableState>) => {\n onChange({ ...state, ...s })\n }\n\n return (\n <ViewBox\n height=\"100%\"\n {...viewBoxProps}\n baseClass='datatable'\n ref={ref as any}\n sx={{\n ...viewBoxProps?.sx,\n '& thead': fixedHeader ? {\n position: \"sticky\",\n top: 0,\n bgcolor: \"background.primary\",\n zIndex: 1\n } : {},\n }}\n startContent={(\n <Tag\n baseClass='datatable-header'\n sxr={{\n display: \"flex\",\n flexDirection: \"row\",\n justifyContent: \"space-between\"\n }}\n >\n <SelectedBox {..._props} update={update} state={state} />\n <FilterBox {..._props} update={update} state={state} />\n </Tag>\n )}\n >\n <TableArea\n {..._props}\n update={update}\n state={state}\n />\n <Stack\n p={1}\n alignItems=\"flex-end\"\n >\n {!hidePagination && <TablePagination\n disabled={_props.skeleton ? true : false}\n {...slotProps?.pagination}\n total={total || rows.length}\n page={state.pagination.page}\n perpage={state.pagination.perpage}\n perpages={perpages}\n slotProps={{\n select: {\n size: \"small\",\n }\n }}\n onChange={(state: TablePaginationState) => {\n update({ pagination: state })\n }}\n />}\n </Stack>\n </ViewBox>\n )\n})\n\nexport default DataTable"],"names":[],"mappings":";;;;;;;;;;;;;AAcA;;AACI;AAEA;AACI;AAEA;;AAEI;AAEA;;;AAGK;;AAGL;;;AAIA;AAEA;AACA;AACI;AACA;AACI;;AAEJ;;AAGJ;AACI;;;AAQA;AACJ;AACA;AACA;;AAEJ;AACJ;AAEA;;;AA2BA;;AAEA;AACA;;;AAGI;;;AAGI;;AAEH;AACD;;;;;AAMJ;AACI;AACJ;AAEA;AASgB;AACA;AACA;AACA;AACH;AAMO;AACA;AACA;;AAyBA;AACI;AACH;AACJ;AAEG;AACJ;AAKpB;;"}
1
+ {"version":3,"file":"index.js","sources":["../../src/Datatable/index.tsx"],"sourcesContent":["\"use client\";\nimport React, { useMemo } from 'react'\nimport ViewBox from '../ViewBox'\nimport { Tag, useInterface } from '@xanui/core';\nimport SelectedBox from './SelectedBox'\nimport TableArea from './Table'\nimport FilterBox from './FilterBox'\nimport TablePagination, { TablePaginationState } from '../TablePagination'\nimport Stack from '../Stack'\nimport { DatatableProps, DatatableState } from './types';\nimport Skeleton from '../Skeleton';\n\nexport type * from './types';\n\nconst DataTable = React.forwardRef((props: DatatableProps, ref: React.Ref<HTMLDivElement>) => {\n let [p] = useInterface<any>(\"Datatable\", props, {})\n\n let _props = useMemo(() => {\n let np = { ...p }\n\n if (typeof np.skeleton === 'number' || np.skeleton === true) {\n const limit = np.perpages && np.perpages.length > 0 ? np.perpages[0] : 10\n let length = np.skeleton === true ? limit : np.skeleton\n\n if (!np.hideCheckbox) {\n np.columns = [{\n label: '', field: \"__checkbox\", width: 34\n }, ...np.columns]\n }\n\n if (np.rowAction) {\n np.columns = [...np.columns, { label: \"\", field: \"__actions\", width: 34 }]\n }\n\n let columns = np.columns || []\n\n np.rows = []\n for (let i = 0; i < length; i++) {\n let r: any = { id: i }\n for (let col of columns) {\n r[col.field] = \"\"\n }\n np.rows.push(r)\n }\n\n np.renderRow = (r: any) => {\n for (let col of columns) {\n r[col.field] = <Skeleton\n animation={\"wave\"}\n height={16}\n radius={.5}\n width={\"100%\"}\n />\n }\n return r\n }\n np.hideCheckbox = true\n np.rowAction = undefined\n }\n return np\n }, [p])\n\n let {\n rows,\n tabs,\n\n pagination: { perpages = [30, 50, 100], total = 0 } = {},\n state: userState = {},\n onChange,\n\n fixedHeader,\n hidePagination,\n slotProps,\n\n\n // skip props for ViewBox\n skeleton,\n rowAction,\n disableRow,\n renderRow,\n filters,\n hideCheckbox,\n hideSearch,\n columns,\n compact,\n\n ...viewBoxProps\n } = _props\n\n const userperpage = userState?.pagination?.perpage\n let perpage = userperpage && perpages.includes(userperpage) ? userperpage : perpages[0]\n let page = userState?.pagination?.page ?? 1\n const state = {\n selected: userState?.selected ?? [],\n selectAll: userState?.selectAll ?? false,\n pagination: {\n page,\n perpage,\n from: page ? (perpage * (page - 1)) + 1 : 1,\n to: page ? perpage * page : perpage,\n },\n tab: tabs ? (userState?.tab ?? tabs[0].value ?? tabs[0].label.toLowerCase()) : \"\",\n search: userState?.search ?? \"\",\n sortable: userState?.sortable ?? {},\n filters: userState?.filters ?? {}\n }\n\n const update = (s: Partial<DatatableState>) => {\n onChange({ ...state, ...s })\n }\n\n return (\n <ViewBox\n height=\"100%\"\n {...viewBoxProps}\n baseClass='datatable'\n ref={ref as any}\n sx={{\n ...viewBoxProps?.sx,\n '& thead': fixedHeader ? {\n position: \"sticky\",\n top: 0,\n bgcolor: \"surface.main\",\n zIndex: 1\n } : {},\n }}\n startContent={(\n <Tag\n baseClass='datatable-header'\n sxr={{\n display: \"flex\",\n flexDirection: \"row\",\n justifyContent: \"space-between\"\n }}\n >\n <SelectedBox {..._props} update={update} state={state} />\n <FilterBox {..._props} update={update} state={state} />\n </Tag>\n )}\n >\n <TableArea\n {..._props}\n update={update}\n state={state}\n />\n <Stack\n p={1}\n alignItems=\"flex-end\"\n >\n {!hidePagination && <TablePagination\n disabled={_props.skeleton ? true : false}\n {...slotProps?.pagination}\n total={total || rows.length}\n page={state.pagination.page}\n perpage={state.pagination.perpage}\n perpages={perpages}\n slotProps={{\n select: {\n size: \"small\",\n }\n }}\n onChange={(state: TablePaginationState) => {\n update({ pagination: state })\n }}\n />}\n </Stack>\n </ViewBox>\n )\n})\n\nexport default DataTable"],"names":[],"mappings":";;;;;;;;;;;;;AAcA;;AACI;AAEA;AACI;AAEA;;AAEI;AAEA;;;AAGK;;AAGL;;;AAIA;AAEA;AACA;AACI;AACA;AACI;;AAEJ;;AAGJ;AACI;;;AAQA;AACJ;AACA;AACA;;AAEJ;AACJ;AAEA;;;AA2BA;;AAEA;AACA;;;AAGI;;;AAGI;;AAEH;AACD;;;;;AAMJ;AACI;AACJ;AAEA;AASgB;AACA;AACA;AACA;AACH;AAMO;AACA;AACA;;AAyBA;AACI;AACH;AACJ;AAEG;AACJ;AAKpB;;"}