@xanui/ui 1.1.27 → 1.1.28

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 (152) hide show
  1. package/Alert/index.js +2 -2
  2. package/Alert/index.mjs +2 -2
  3. package/Autocomplete/index.d.ts +40 -0
  4. package/Autocomplete/index.js +136 -0
  5. package/Autocomplete/index.js.map +1 -0
  6. package/Autocomplete/index.mjs +134 -0
  7. package/Autocomplete/index.mjs.map +1 -0
  8. package/Avatar/index.d.ts +5 -0
  9. package/Avatar/index.js +7 -2
  10. package/Avatar/index.js.map +1 -1
  11. package/Avatar/index.mjs +7 -2
  12. package/Avatar/index.mjs.map +1 -1
  13. package/Button/index.d.ts +3 -0
  14. package/Button/index.js +13 -9
  15. package/Button/index.js.map +1 -1
  16. package/Button/index.mjs +12 -8
  17. package/Button/index.mjs.map +1 -1
  18. package/Calendar/index.js +35 -20
  19. package/Calendar/index.js.map +1 -1
  20. package/Calendar/index.mjs +27 -12
  21. package/Calendar/index.mjs.map +1 -1
  22. package/CalendarInput/index.js +6 -2
  23. package/CalendarInput/index.js.map +1 -1
  24. package/CalendarInput/index.mjs +6 -2
  25. package/CalendarInput/index.mjs.map +1 -1
  26. package/DataFilter/index.d.ts +7 -0
  27. package/DataFilter/index.js +78 -0
  28. package/DataFilter/index.js.map +1 -0
  29. package/DataFilter/index.mjs +67 -0
  30. package/DataFilter/index.mjs.map +1 -0
  31. package/DataFilter/options/DateFilter.d.ts +11 -0
  32. package/DataFilter/options/DateFilter.js +32 -0
  33. package/DataFilter/options/DateFilter.js.map +1 -0
  34. package/DataFilter/options/DateFilter.mjs +30 -0
  35. package/DataFilter/options/DateFilter.mjs.map +1 -0
  36. package/DataFilter/options/DateRangeFilter.d.ts +11 -0
  37. package/DataFilter/options/DateRangeFilter.js +27 -0
  38. package/DataFilter/options/DateRangeFilter.js.map +1 -0
  39. package/DataFilter/options/DateRangeFilter.mjs +25 -0
  40. package/DataFilter/options/DateRangeFilter.mjs.map +1 -0
  41. package/DataFilter/options/MultiSelectFilter.d.ts +11 -0
  42. package/DataFilter/options/MultiSelectFilter.js +38 -0
  43. package/DataFilter/options/MultiSelectFilter.js.map +1 -0
  44. package/DataFilter/options/MultiSelectFilter.mjs +36 -0
  45. package/DataFilter/options/MultiSelectFilter.mjs.map +1 -0
  46. package/DataFilter/options/NumberFilter.d.ts +11 -0
  47. package/DataFilter/options/NumberFilter.js +24 -0
  48. package/DataFilter/options/NumberFilter.js.map +1 -0
  49. package/DataFilter/options/NumberFilter.mjs +22 -0
  50. package/DataFilter/options/NumberFilter.mjs.map +1 -0
  51. package/DataFilter/options/NumberRangeFilter.d.ts +11 -0
  52. package/DataFilter/options/NumberRangeFilter.js +29 -0
  53. package/DataFilter/options/NumberRangeFilter.js.map +1 -0
  54. package/DataFilter/options/NumberRangeFilter.mjs +27 -0
  55. package/DataFilter/options/NumberRangeFilter.mjs.map +1 -0
  56. package/DataFilter/options/SelectFilter.d.ts +11 -0
  57. package/DataFilter/options/SelectFilter.js +34 -0
  58. package/DataFilter/options/SelectFilter.js.map +1 -0
  59. package/DataFilter/options/SelectFilter.mjs +32 -0
  60. package/DataFilter/options/SelectFilter.mjs.map +1 -0
  61. package/DataFilter/options/TextFilter.d.ts +11 -0
  62. package/DataFilter/options/TextFilter.js +24 -0
  63. package/DataFilter/options/TextFilter.js.map +1 -0
  64. package/DataFilter/options/TextFilter.mjs +22 -0
  65. package/DataFilter/options/TextFilter.mjs.map +1 -0
  66. package/DataFilter/types.d.ts +58 -0
  67. package/Datatable/FilterBox.js +21 -13
  68. package/Datatable/FilterBox.js.map +1 -1
  69. package/Datatable/FilterBox.mjs +20 -12
  70. package/Datatable/FilterBox.mjs.map +1 -1
  71. package/Datatable/Row.js +15 -14
  72. package/Datatable/Row.js.map +1 -1
  73. package/Datatable/Row.mjs +16 -15
  74. package/Datatable/Row.mjs.map +1 -1
  75. package/Datatable/Table.js +2 -2
  76. package/Datatable/Table.js.map +1 -1
  77. package/Datatable/Table.mjs +2 -2
  78. package/Datatable/Table.mjs.map +1 -1
  79. package/Datatable/TableHead.js +5 -4
  80. package/Datatable/TableHead.js.map +1 -1
  81. package/Datatable/TableHead.mjs +5 -4
  82. package/Datatable/TableHead.mjs.map +1 -1
  83. package/Datatable/index.d.ts +1 -1
  84. package/Datatable/index.js +51 -11
  85. package/Datatable/index.js.map +1 -1
  86. package/Datatable/index.mjs +50 -10
  87. package/Datatable/index.mjs.map +1 -1
  88. package/Datatable/types.d.ts +13 -9
  89. package/Drawer/index.js +3 -3
  90. package/Drawer/index.js.map +1 -1
  91. package/Drawer/index.mjs +3 -3
  92. package/Drawer/index.mjs.map +1 -1
  93. package/IconButton/index.js +1 -7
  94. package/IconButton/index.js.map +1 -1
  95. package/IconButton/index.mjs +1 -7
  96. package/IconButton/index.mjs.map +1 -1
  97. package/Input/index.d.ts +7 -7
  98. package/Input/index.js +35 -66
  99. package/Input/index.js.map +1 -1
  100. package/Input/index.mjs +35 -66
  101. package/Input/index.mjs.map +1 -1
  102. package/InputNumber/index.js +32 -0
  103. package/InputNumber/index.js.map +1 -0
  104. package/InputNumber/index.mjs +30 -0
  105. package/InputNumber/index.mjs.map +1 -0
  106. package/List/ListContext.js +11 -0
  107. package/List/ListContext.js.map +1 -0
  108. package/List/ListContext.mjs +8 -0
  109. package/List/ListContext.mjs.map +1 -0
  110. package/List/index.d.ts +2 -1
  111. package/List/index.js +23 -19
  112. package/List/index.js.map +1 -1
  113. package/List/index.mjs +23 -19
  114. package/List/index.mjs.map +1 -1
  115. package/ListItem/index.d.ts +1 -0
  116. package/ListItem/index.js +30 -13
  117. package/ListItem/index.js.map +1 -1
  118. package/ListItem/index.mjs +30 -13
  119. package/ListItem/index.mjs.map +1 -1
  120. package/Menu/index.js +2 -0
  121. package/Menu/index.js.map +1 -1
  122. package/Menu/index.mjs +2 -0
  123. package/Menu/index.mjs.map +1 -1
  124. package/Paper/index.js +2 -2
  125. package/Paper/index.js.map +1 -1
  126. package/Paper/index.mjs +2 -2
  127. package/Paper/index.mjs.map +1 -1
  128. package/Select/index.d.ts +2 -10
  129. package/Select/index.js +3 -3
  130. package/Select/index.js.map +1 -1
  131. package/Select/index.mjs +3 -3
  132. package/Select/index.mjs.map +1 -1
  133. package/Skeleton/index.d.ts +8 -0
  134. package/Skeleton/index.js +60 -0
  135. package/Skeleton/index.js.map +1 -0
  136. package/Skeleton/index.mjs +58 -0
  137. package/Skeleton/index.mjs.map +1 -0
  138. package/Table/index.js +3 -3
  139. package/Table/index.js.map +1 -1
  140. package/Table/index.mjs +3 -3
  141. package/Table/index.mjs.map +1 -1
  142. package/TablePagination/index.d.ts +2 -2
  143. package/TablePagination/index.js +2 -7
  144. package/TablePagination/index.js.map +1 -1
  145. package/TablePagination/index.mjs +2 -7
  146. package/TablePagination/index.mjs.map +1 -1
  147. package/index.d.ts +65 -55
  148. package/index.js +126 -108
  149. package/index.js.map +1 -1
  150. package/index.mjs +9 -0
  151. package/index.mjs.map +1 -1
  152. package/package.json +2 -7
@@ -0,0 +1,78 @@
1
+ "use client";
2
+ 'use strict';
3
+
4
+ Object.defineProperty(exports, '__esModule', { value: true });
5
+
6
+ var tslib = require('tslib');
7
+ var jsxRuntime = require('react/jsx-runtime');
8
+ var index = require('../Stack/index.js');
9
+ var SelectFilter = require('./options/SelectFilter.js');
10
+ var MultiSelectFilter = require('./options/MultiSelectFilter.js');
11
+ var NumberFilter = require('./options/NumberFilter.js');
12
+ var TextFilter = require('./options/TextFilter.js');
13
+ var NumberRangeFilter = require('./options/NumberRangeFilter.js');
14
+ var DateFilter = require('./options/DateFilter.js');
15
+ var DateRangeFilter = require('./options/DateRangeFilter.js');
16
+ var React = require('react');
17
+ var core = require('@xanui/core');
18
+
19
+ const DataFilter$1 = (_a, ref) => {
20
+ var { inline, options, onChange, value } = _a, props = tslib.__rest(_a, ["inline", "options", "onChange", "value"]);
21
+ inline !== null && inline !== void 0 ? inline : (inline = false);
22
+ value !== null && value !== void 0 ? value : (value = {});
23
+ onChange !== null && onChange !== void 0 ? onChange : (onChange = () => { });
24
+ return (jsxRuntime.jsx(core.Tag, Object.assign({}, props, { sxr: {
25
+ flexBox: true,
26
+ flexDirection: inline ? 'row' : 'column',
27
+ alignItems: inline ? 'center' : 'stretch',
28
+ flexWrap: inline ? 'wrap' : 'nowrap',
29
+ gap: 1,
30
+ p: 2,
31
+ radius: 1,
32
+ }, baseClass: 'data-filter', ref: ref, children: options.map((option, index$1) => {
33
+ var _a, _b, _c, _d, _e, _f, _g;
34
+ switch (option.type) {
35
+ case "text":
36
+ return (jsxRuntime.jsx(index, { width: inline ? 300 : "100%", children: jsxRuntime.jsx(TextFilter, { option: option, value: (_a = value[option.key]) !== null && _a !== void 0 ? _a : null, onChange: (v) => {
37
+ onChange(Object.assign(Object.assign({}, value), { [option.key]: v }));
38
+ } }) }, index$1));
39
+ case "number":
40
+ return (jsxRuntime.jsx(index, { width: inline ? 300 : "100%", children: jsxRuntime.jsx(NumberFilter, { option: option, value: (_b = value[option.key]) !== null && _b !== void 0 ? _b : null, onChange: (v) => {
41
+ onChange(Object.assign(Object.assign({}, value), { [option.key]: v }));
42
+ } }) }, index$1));
43
+ case "number-range":
44
+ return (jsxRuntime.jsx(index, { width: inline ? 300 : "100%", children: jsxRuntime.jsx(NumberRangeFilter, { option: option, value: (_c = value[option.key]) !== null && _c !== void 0 ? _c : null, onChange: (v) => {
45
+ onChange(Object.assign(Object.assign({}, value), { [option.key]: v }));
46
+ } }) }, index$1));
47
+ case "select":
48
+ return (jsxRuntime.jsx(index, { width: inline ? 300 : "100%", children: jsxRuntime.jsx(SelectFilter, { option: option, value: (_d = value[option.key]) !== null && _d !== void 0 ? _d : null, onChange: (v) => {
49
+ onChange(Object.assign(Object.assign({}, value), { [option.key]: v }));
50
+ } }) }, index$1));
51
+ case "multi-select":
52
+ return (jsxRuntime.jsx(index, { width: inline ? 300 : "100%", children: jsxRuntime.jsx(MultiSelectFilter, { option: option, value: (_e = value[option.key]) !== null && _e !== void 0 ? _e : [], onChange: (v) => {
53
+ onChange(Object.assign(Object.assign({}, value), { [option.key]: v }));
54
+ } }) }, index$1));
55
+ case "date":
56
+ return (jsxRuntime.jsx(index, { width: inline ? 300 : "100%", children: jsxRuntime.jsx(DateFilter, { option: option, value: (_f = value[option.key]) !== null && _f !== void 0 ? _f : null, onChange: (v) => {
57
+ onChange(Object.assign(Object.assign({}, value), { [option.key]: v }));
58
+ } }) }, index$1));
59
+ case "date-range":
60
+ return (jsxRuntime.jsx(index, { width: inline ? 300 : "100%", children: jsxRuntime.jsx(DateRangeFilter, { option: option, value: (_g = value[option.key]) !== null && _g !== void 0 ? _g : null, onChange: (v) => {
61
+ onChange(Object.assign(Object.assign({}, value), { [option.key]: v }));
62
+ } }) }, index$1));
63
+ default:
64
+ return null;
65
+ }
66
+ }) })));
67
+ };
68
+ var DataFilter = React.forwardRef(DataFilter$1);
69
+
70
+ exports.SelectFilter = SelectFilter;
71
+ exports.MultiSelectFilter = MultiSelectFilter;
72
+ exports.NumberFilter = NumberFilter;
73
+ exports.TextFilter = TextFilter;
74
+ exports.NumberRangeFilter = NumberRangeFilter;
75
+ exports.DateFilter = DateFilter;
76
+ exports.DateRangeFilter = DateRangeFilter;
77
+ exports.default = DataFilter;
78
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../src/DataFilter/index.tsx"],"sourcesContent":["\"use client\"\nimport Stack from '../Stack'\nimport { DataFilterProps } from './types'\nimport SelectFilter from './options/SelectFilter'\nimport MultiSelectFilter from './options/MultiSelectFilter'\nimport NumberFilter from './options/NumberFilter'\nimport TextFilter from './options/TextFilter'\nimport NumberRangeFilter from './options/NumberRangeFilter'\nimport DateFilter from './options/DateFilter'\nimport DateRangeFilter from './options/DateRangeFilter'\nimport React from 'react'\nimport { Tag } from '@xanui/core'\n\nexport {\n SelectFilter,\n MultiSelectFilter,\n NumberFilter,\n TextFilter,\n NumberRangeFilter,\n DateFilter,\n DateRangeFilter,\n}\n\nexport * from './types'\n\nconst DataFilter = ({ inline, options, onChange, value, ...props }: DataFilterProps, ref: React.Ref<HTMLDivElement>) => {\n inline ??= false\n value ??= {}\n onChange ??= () => { }\n\n return (\n <Tag\n {...props}\n sxr={{\n flexBox: true,\n flexDirection: inline ? 'row' : 'column',\n alignItems: inline ? 'center' : 'stretch',\n flexWrap: inline ? 'wrap' : 'nowrap',\n gap: 1,\n p: 2,\n radius: 1,\n }}\n baseClass='data-filter'\n ref={ref}\n >\n {\n options.map((option, index) => {\n switch (option.type) {\n case \"text\":\n return (<Stack\n width={inline ? 300 : \"100%\"}\n key={index}\n >\n <TextFilter\n option={option as any}\n value={value[option.key] ?? null}\n onChange={(v) => {\n onChange({\n ...value,\n [option.key]: v\n })\n }}\n />\n </Stack>\n )\n case \"number\":\n return (<Stack\n width={inline ? 300 : \"100%\"}\n key={index}\n >\n <NumberFilter\n option={option as any}\n value={value[option.key] ?? null}\n onChange={(v) => {\n onChange({\n ...value,\n [option.key]: v\n })\n }}\n />\n </Stack>\n )\n case \"number-range\":\n return (<Stack\n width={inline ? 300 : \"100%\"}\n key={index}\n >\n <NumberRangeFilter\n option={option as any}\n value={value[option.key] ?? null}\n onChange={(v) => {\n onChange({\n ...value,\n [option.key]: v\n })\n }}\n />\n </Stack>\n )\n case \"select\":\n return (<Stack\n width={inline ? 300 : \"100%\"}\n key={index}\n >\n <SelectFilter\n option={option as any}\n value={value[option.key] ?? null}\n onChange={(v) => {\n onChange({\n ...value,\n [option.key]: v\n })\n }}\n />\n </Stack>\n )\n case \"multi-select\":\n return (<Stack\n width={inline ? 300 : \"100%\"}\n key={index}\n >\n <MultiSelectFilter\n option={option as any}\n value={value[option.key] ?? []}\n onChange={(v) => {\n onChange({\n ...value,\n [option.key]: v\n })\n }}\n />\n </Stack>\n )\n case \"date\":\n return (<Stack\n width={inline ? 300 : \"100%\"}\n key={index}\n >\n <DateFilter\n option={option as any}\n value={value[option.key] ?? null}\n onChange={(v) => {\n onChange({\n ...value,\n [option.key]: v\n })\n }}\n />\n </Stack>\n )\n case \"date-range\":\n return (<Stack\n width={inline ? 300 : \"100%\"}\n key={index}\n >\n <DateRangeFilter\n option={option as any}\n value={value[option.key] ?? null}\n onChange={(v) => {\n onChange({\n ...value,\n [option.key]: v\n })\n }}\n />\n </Stack>\n )\n default:\n return null\n\n }\n })\n }\n </Tag>\n )\n}\n\nexport default React.forwardRef(DataFilter);\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAyBA;AAAoB;;;;AAKjB;AAIS;;;;AAIA;AACA;AACA;AACF;;AAMK;AACG;AACG;;AAYM;AAIT;AACG;;AAYM;AAIT;AACG;;AAYM;AAIT;AACG;;AAYM;AAIT;AACG;;AAYM;AAIT;AACG;;AAYM;AAIT;AACG;;AAYM;AAIT;AACG;;;AAOrB;AAEA;;;;;;;;;"}
@@ -0,0 +1,67 @@
1
+ "use client";
2
+ import { __rest } from 'tslib';
3
+ import { jsx } from 'react/jsx-runtime';
4
+ import Stack from '../Stack/index.mjs';
5
+ import SelectFilter from './options/SelectFilter.mjs';
6
+ import MultiSelectFilter from './options/MultiSelectFilter.mjs';
7
+ import NumberFilter from './options/NumberFilter.mjs';
8
+ import TextFilter from './options/TextFilter.mjs';
9
+ import NumberRangeFilter from './options/NumberRangeFilter.mjs';
10
+ import DateFilter from './options/DateFilter.mjs';
11
+ import DateRangeFilter from './options/DateRangeFilter.mjs';
12
+ import React from 'react';
13
+ import { Tag } from '@xanui/core';
14
+
15
+ const DataFilter = (_a, ref) => {
16
+ var { inline, options, onChange, value } = _a, props = __rest(_a, ["inline", "options", "onChange", "value"]);
17
+ inline !== null && inline !== void 0 ? inline : (inline = false);
18
+ value !== null && value !== void 0 ? value : (value = {});
19
+ onChange !== null && onChange !== void 0 ? onChange : (onChange = () => { });
20
+ return (jsx(Tag, Object.assign({}, props, { sxr: {
21
+ flexBox: true,
22
+ flexDirection: inline ? 'row' : 'column',
23
+ alignItems: inline ? 'center' : 'stretch',
24
+ flexWrap: inline ? 'wrap' : 'nowrap',
25
+ gap: 1,
26
+ p: 2,
27
+ radius: 1,
28
+ }, baseClass: 'data-filter', ref: ref, children: options.map((option, index) => {
29
+ var _a, _b, _c, _d, _e, _f, _g;
30
+ switch (option.type) {
31
+ case "text":
32
+ return (jsx(Stack, { width: inline ? 300 : "100%", children: jsx(TextFilter, { option: option, value: (_a = value[option.key]) !== null && _a !== void 0 ? _a : null, onChange: (v) => {
33
+ onChange(Object.assign(Object.assign({}, value), { [option.key]: v }));
34
+ } }) }, index));
35
+ case "number":
36
+ return (jsx(Stack, { width: inline ? 300 : "100%", children: jsx(NumberFilter, { option: option, value: (_b = value[option.key]) !== null && _b !== void 0 ? _b : null, onChange: (v) => {
37
+ onChange(Object.assign(Object.assign({}, value), { [option.key]: v }));
38
+ } }) }, index));
39
+ case "number-range":
40
+ return (jsx(Stack, { width: inline ? 300 : "100%", children: jsx(NumberRangeFilter, { option: option, value: (_c = value[option.key]) !== null && _c !== void 0 ? _c : null, onChange: (v) => {
41
+ onChange(Object.assign(Object.assign({}, value), { [option.key]: v }));
42
+ } }) }, index));
43
+ case "select":
44
+ return (jsx(Stack, { width: inline ? 300 : "100%", children: jsx(SelectFilter, { option: option, value: (_d = value[option.key]) !== null && _d !== void 0 ? _d : null, onChange: (v) => {
45
+ onChange(Object.assign(Object.assign({}, value), { [option.key]: v }));
46
+ } }) }, index));
47
+ case "multi-select":
48
+ return (jsx(Stack, { width: inline ? 300 : "100%", children: jsx(MultiSelectFilter, { option: option, value: (_e = value[option.key]) !== null && _e !== void 0 ? _e : [], onChange: (v) => {
49
+ onChange(Object.assign(Object.assign({}, value), { [option.key]: v }));
50
+ } }) }, index));
51
+ case "date":
52
+ return (jsx(Stack, { width: inline ? 300 : "100%", children: jsx(DateFilter, { option: option, value: (_f = value[option.key]) !== null && _f !== void 0 ? _f : null, onChange: (v) => {
53
+ onChange(Object.assign(Object.assign({}, value), { [option.key]: v }));
54
+ } }) }, index));
55
+ case "date-range":
56
+ return (jsx(Stack, { width: inline ? 300 : "100%", children: jsx(DateRangeFilter, { option: option, value: (_g = value[option.key]) !== null && _g !== void 0 ? _g : null, onChange: (v) => {
57
+ onChange(Object.assign(Object.assign({}, value), { [option.key]: v }));
58
+ } }) }, index));
59
+ default:
60
+ return null;
61
+ }
62
+ }) })));
63
+ };
64
+ var DataFilter$1 = React.forwardRef(DataFilter);
65
+
66
+ export { DateFilter, DateRangeFilter, MultiSelectFilter, NumberFilter, NumberRangeFilter, SelectFilter, TextFilter, DataFilter$1 as default };
67
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","sources":["../../src/DataFilter/index.tsx"],"sourcesContent":["\"use client\"\nimport Stack from '../Stack'\nimport { DataFilterProps } from './types'\nimport SelectFilter from './options/SelectFilter'\nimport MultiSelectFilter from './options/MultiSelectFilter'\nimport NumberFilter from './options/NumberFilter'\nimport TextFilter from './options/TextFilter'\nimport NumberRangeFilter from './options/NumberRangeFilter'\nimport DateFilter from './options/DateFilter'\nimport DateRangeFilter from './options/DateRangeFilter'\nimport React from 'react'\nimport { Tag } from '@xanui/core'\n\nexport {\n SelectFilter,\n MultiSelectFilter,\n NumberFilter,\n TextFilter,\n NumberRangeFilter,\n DateFilter,\n DateRangeFilter,\n}\n\nexport * from './types'\n\nconst DataFilter = ({ inline, options, onChange, value, ...props }: DataFilterProps, ref: React.Ref<HTMLDivElement>) => {\n inline ??= false\n value ??= {}\n onChange ??= () => { }\n\n return (\n <Tag\n {...props}\n sxr={{\n flexBox: true,\n flexDirection: inline ? 'row' : 'column',\n alignItems: inline ? 'center' : 'stretch',\n flexWrap: inline ? 'wrap' : 'nowrap',\n gap: 1,\n p: 2,\n radius: 1,\n }}\n baseClass='data-filter'\n ref={ref}\n >\n {\n options.map((option, index) => {\n switch (option.type) {\n case \"text\":\n return (<Stack\n width={inline ? 300 : \"100%\"}\n key={index}\n >\n <TextFilter\n option={option as any}\n value={value[option.key] ?? null}\n onChange={(v) => {\n onChange({\n ...value,\n [option.key]: v\n })\n }}\n />\n </Stack>\n )\n case \"number\":\n return (<Stack\n width={inline ? 300 : \"100%\"}\n key={index}\n >\n <NumberFilter\n option={option as any}\n value={value[option.key] ?? null}\n onChange={(v) => {\n onChange({\n ...value,\n [option.key]: v\n })\n }}\n />\n </Stack>\n )\n case \"number-range\":\n return (<Stack\n width={inline ? 300 : \"100%\"}\n key={index}\n >\n <NumberRangeFilter\n option={option as any}\n value={value[option.key] ?? null}\n onChange={(v) => {\n onChange({\n ...value,\n [option.key]: v\n })\n }}\n />\n </Stack>\n )\n case \"select\":\n return (<Stack\n width={inline ? 300 : \"100%\"}\n key={index}\n >\n <SelectFilter\n option={option as any}\n value={value[option.key] ?? null}\n onChange={(v) => {\n onChange({\n ...value,\n [option.key]: v\n })\n }}\n />\n </Stack>\n )\n case \"multi-select\":\n return (<Stack\n width={inline ? 300 : \"100%\"}\n key={index}\n >\n <MultiSelectFilter\n option={option as any}\n value={value[option.key] ?? []}\n onChange={(v) => {\n onChange({\n ...value,\n [option.key]: v\n })\n }}\n />\n </Stack>\n )\n case \"date\":\n return (<Stack\n width={inline ? 300 : \"100%\"}\n key={index}\n >\n <DateFilter\n option={option as any}\n value={value[option.key] ?? null}\n onChange={(v) => {\n onChange({\n ...value,\n [option.key]: v\n })\n }}\n />\n </Stack>\n )\n case \"date-range\":\n return (<Stack\n width={inline ? 300 : \"100%\"}\n key={index}\n >\n <DateRangeFilter\n option={option as any}\n value={value[option.key] ?? null}\n onChange={(v) => {\n onChange({\n ...value,\n [option.key]: v\n })\n }}\n />\n </Stack>\n )\n default:\n return null\n\n }\n })\n }\n </Tag>\n )\n}\n\nexport default React.forwardRef(DataFilter);\n"],"names":[],"mappings":";;;;;;;;;;;;;;AAyBA;AAAoB;;;;AAKjB;AAIS;;;;AAIA;AACA;AACA;AACF;;AAMK;AACG;AACG;;AAYM;AAIT;AACG;;AAYM;AAIT;AACG;;AAYM;AAIT;AACG;;AAYM;AAIT;AACG;;AAYM;AAIT;AACG;;AAYM;AAIT;AACG;;AAYM;AAIT;AACG;;;AAOrB;AAEA;;"}
@@ -0,0 +1,11 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import { DataFilterDate } from '../types.js';
3
+
4
+ type Props = {
5
+ option: DataFilterDate;
6
+ value: string | null;
7
+ onChange: (value: string | null) => void;
8
+ };
9
+ declare const DateFilter: ({ option, onChange, value }: Props) => react_jsx_runtime.JSX.Element;
10
+
11
+ export { DateFilter as default };
@@ -0,0 +1,32 @@
1
+ "use client";
2
+ 'use strict';
3
+
4
+ var jsxRuntime = require('react/jsx-runtime');
5
+ var React = require('react');
6
+ var index$4 = require('../../Menu/index.js');
7
+ var index$2 = require('../../IconButton/index.js');
8
+ var index = require('../../Stack/index.js');
9
+ var index$1 = require('../../Text/index.js');
10
+ var Close = require('@xanui/icons/Close');
11
+ var Add = require('@xanui/icons/Add');
12
+ var ClearAll = require('@xanui/icons/ClearAll');
13
+ var index$3 = require('../../Chip/index.js');
14
+ var index$5 = require('../../Calendar/index.js');
15
+
16
+ const DateFilter = ({ option, onChange, value }) => {
17
+ const [target, setTarget] = React.useState();
18
+ const isValue = value !== null && value !== undefined && value !== "";
19
+ 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: (e) => {
20
+ setTarget(e.currentTarget);
21
+ }, children: jsxRuntime.jsx(Add, {}) }), isValue && jsxRuntime.jsx(index$2, { size: "small", variant: "soft", color: "danger", onClick: () => {
22
+ onChange(null);
23
+ }, children: jsxRuntime.jsx(ClearAll, {}) })] })] }), jsxRuntime.jsx(index, { direction: "row", gap: 0.5, flexWrap: "wrap", children: isValue && jsxRuntime.jsx(index$3, { size: "small", color: "default", label: new Date(value).toLocaleDateString("en-US"), endIcon: jsxRuntime.jsx(index$2, { size: 16, variant: "text", color: "default", onClick: () => {
24
+ onChange(null);
25
+ }, children: jsxRuntime.jsx(Close, {}) }) }) }), jsxRuntime.jsx(index$4, { target: target, onClickOutside: () => setTarget(undefined), placement: "bottom-right", children: jsxRuntime.jsx(index$5, { value: value ? new Date(value) : null, onChange: (date) => {
26
+ onChange((date === null || date === void 0 ? void 0 : date.toISOString()) || null);
27
+ setTarget(undefined);
28
+ } }) })] }));
29
+ };
30
+
31
+ module.exports = DateFilter;
32
+ //# sourceMappingURL=DateFilter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DateFilter.js","sources":["../../../src/DataFilter/options/DateFilter.tsx"],"sourcesContent":["\"use client\"\n\nimport React from \"react\";\nimport { DataFilterDate } from \"../types\";\nimport Menu from \"../../Menu\";\nimport IconButton from \"../../IconButton\";\nimport Stack from \"../../Stack\";\nimport Text from \"../../Text\";\nimport Close from \"@xanui/icons/Close\";\nimport Add from \"@xanui/icons/Add\";\nimport ClearAll from \"@xanui/icons/ClearAll\";\nimport Chip from \"../../Chip\";\nimport Calendar from \"../../Calendar\";\n\n\ntype Props = {\n option: DataFilterDate;\n value: string | null;\n onChange: (value: string | null) => void;\n}\n\nconst DateFilter = ({ option, onChange, value }: Props) => {\n const [target, setTarget] = React.useState<HTMLElement | undefined>()\n const isValue = value !== null && value !== undefined && value !== \"\"\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={(e: any) => {\n setTarget(e.currentTarget)\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 && <Chip\n size=\"small\"\n color=\"default\"\n label={new Date(value).toLocaleDateString(\"en-US\")}\n endIcon={<IconButton\n size={16}\n variant={\"text\"}\n color=\"default\"\n onClick={() => {\n onChange(null);\n }}\n >\n <Close />\n </IconButton>}\n />\n }\n </Stack>\n <Menu\n target={target}\n onClickOutside={() => setTarget(undefined)}\n placement={\"bottom-right\"}\n >\n <Calendar\n value={value ? new Date(value) : null}\n onChange={(date) => {\n onChange(date?.toISOString() || null);\n setTarget(undefined);\n }}\n />\n </Menu>\n </Stack>\n )\n}\n\nexport default DateFilter"],"names":[],"mappings":";;;;;;;;;;;;;;;AAqBA;;AAEG;AAEA;AAwBkB;;;AAYA;;;AAsCH;;AAEH;AAKf;;"}
@@ -0,0 +1,30 @@
1
+ "use client";
2
+ import { jsxs, jsx } from 'react/jsx-runtime';
3
+ import React from 'react';
4
+ import Menu from '../../Menu/index.mjs';
5
+ import IconButton from '../../IconButton/index.mjs';
6
+ import Stack from '../../Stack/index.mjs';
7
+ import Text from '../../Text/index.mjs';
8
+ import Close from '@xanui/icons/Close';
9
+ import Add from '@xanui/icons/Add';
10
+ import ClearAll from '@xanui/icons/ClearAll';
11
+ import Chip from '../../Chip/index.mjs';
12
+ import Calendar from '../../Calendar/index.mjs';
13
+
14
+ const DateFilter = ({ option, onChange, value }) => {
15
+ const [target, setTarget] = React.useState();
16
+ const isValue = value !== null && value !== undefined && value !== "";
17
+ 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: (e) => {
18
+ setTarget(e.currentTarget);
19
+ }, children: jsx(Add, {}) }), isValue && jsx(IconButton, { size: "small", variant: "soft", color: "danger", onClick: () => {
20
+ onChange(null);
21
+ }, children: jsx(ClearAll, {}) })] })] }), jsx(Stack, { direction: "row", gap: 0.5, flexWrap: "wrap", children: isValue && jsx(Chip, { size: "small", color: "default", label: new Date(value).toLocaleDateString("en-US"), endIcon: jsx(IconButton, { size: 16, variant: "text", color: "default", onClick: () => {
22
+ onChange(null);
23
+ }, children: jsx(Close, {}) }) }) }), jsx(Menu, { target: target, onClickOutside: () => setTarget(undefined), placement: "bottom-right", children: jsx(Calendar, { value: value ? new Date(value) : null, onChange: (date) => {
24
+ onChange((date === null || date === void 0 ? void 0 : date.toISOString()) || null);
25
+ setTarget(undefined);
26
+ } }) })] }));
27
+ };
28
+
29
+ export { DateFilter as default };
30
+ //# sourceMappingURL=DateFilter.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DateFilter.mjs","sources":["../../../src/DataFilter/options/DateFilter.tsx"],"sourcesContent":["\"use client\"\n\nimport React from \"react\";\nimport { DataFilterDate } from \"../types\";\nimport Menu from \"../../Menu\";\nimport IconButton from \"../../IconButton\";\nimport Stack from \"../../Stack\";\nimport Text from \"../../Text\";\nimport Close from \"@xanui/icons/Close\";\nimport Add from \"@xanui/icons/Add\";\nimport ClearAll from \"@xanui/icons/ClearAll\";\nimport Chip from \"../../Chip\";\nimport Calendar from \"../../Calendar\";\n\n\ntype Props = {\n option: DataFilterDate;\n value: string | null;\n onChange: (value: string | null) => void;\n}\n\nconst DateFilter = ({ option, onChange, value }: Props) => {\n const [target, setTarget] = React.useState<HTMLElement | undefined>()\n const isValue = value !== null && value !== undefined && value !== \"\"\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={(e: any) => {\n setTarget(e.currentTarget)\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 && <Chip\n size=\"small\"\n color=\"default\"\n label={new Date(value).toLocaleDateString(\"en-US\")}\n endIcon={<IconButton\n size={16}\n variant={\"text\"}\n color=\"default\"\n onClick={() => {\n onChange(null);\n }}\n >\n <Close />\n </IconButton>}\n />\n }\n </Stack>\n <Menu\n target={target}\n onClickOutside={() => setTarget(undefined)}\n placement={\"bottom-right\"}\n >\n <Calendar\n value={value ? new Date(value) : null}\n onChange={(date) => {\n onChange(date?.toISOString() || null);\n setTarget(undefined);\n }}\n />\n </Menu>\n </Stack>\n )\n}\n\nexport default DateFilter"],"names":[],"mappings":";;;;;;;;;;;;;AAqBA;;AAEG;AAEA;AAwBkB;;;AAYA;;;AAsCH;;AAEH;AAKf;;"}
@@ -0,0 +1,11 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import { DataFilterDate } from '../types.js';
3
+
4
+ type Props = {
5
+ option: DataFilterDate;
6
+ value: [string, string] | null;
7
+ onChange: (value: [string, string] | null) => void;
8
+ };
9
+ declare const DateRangeFilter: ({ option, onChange, value }: Props) => react_jsx_runtime.JSX.Element;
10
+
11
+ export { DateRangeFilter as default };
@@ -0,0 +1,27 @@
1
+ "use client";
2
+ 'use strict';
3
+
4
+ var jsxRuntime = require('react/jsx-runtime');
5
+ var index$2 = require('../../IconButton/index.js');
6
+ var index = require('../../Stack/index.js');
7
+ var index$1 = require('../../Text/index.js');
8
+ var Add = require('@xanui/icons/Add');
9
+ var ClearAll = require('@xanui/icons/ClearAll');
10
+ var index$3 = require('../../CalendarInput/index.js');
11
+
12
+ const DateRangeFilter = ({ option, onChange, value }) => {
13
+ const isValue = value !== null && value !== undefined && value.length === 2;
14
+ return (jsxRuntime.jsxs(index, { width: "100%", bgcolor: "background.secondary", p: 1, radius: 1, children: [jsxRuntime.jsxs(index, { direction: "row", alignItems: "center", justifyContent: "space-between", gap: 0.5, mb: isValue ? .5 : 0, children: [jsxRuntime.jsx(index$1, { children: option.label }), jsxRuntime.jsxs(index, { direction: "row", gap: 0.5, children: [jsxRuntime.jsx(index$2, { size: "small", variant: "soft", color: "default", onClick: () => {
15
+ const d = new Date();
16
+ onChange([d.toISOString(), d.toISOString()]);
17
+ }, children: jsxRuntime.jsx(Add, {}) }), isValue && jsxRuntime.jsx(index$2, { size: "small", variant: "soft", color: "danger", onClick: () => {
18
+ onChange(null);
19
+ }, children: jsxRuntime.jsx(ClearAll, {}) })] })] }), jsxRuntime.jsx(index, { direction: "row", gap: 0.5, flexWrap: "wrap", children: isValue && jsxRuntime.jsx(jsxRuntime.Fragment, { children: jsxRuntime.jsxs(index, { p: 1, gap: 1, width: "100%", children: [jsxRuntime.jsx(index$3, { fullWidth: true, variant: "outline", value: value[0] ? new Date(value[0]) : null, onChange: (date) => {
20
+ onChange([date ? date.toISOString() : "", value ? value[1] : ""]);
21
+ } }), jsxRuntime.jsx(index$3, { fullWidth: true, variant: "outline", value: value[1] ? new Date(value[1]) : null, onChange: (date) => {
22
+ onChange([value ? value[0] : "", date ? date.toISOString() : ""]);
23
+ } })] }) }) })] }));
24
+ };
25
+
26
+ module.exports = DateRangeFilter;
27
+ //# sourceMappingURL=DateRangeFilter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DateRangeFilter.js","sources":["../../../src/DataFilter/options/DateRangeFilter.tsx"],"sourcesContent":["\"use client\"\n\nimport { DataFilterDate } 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 CalenderInput from \"../../CalendarInput\";\n\n\ntype Props = {\n option: DataFilterDate;\n value: [string, string] | null;\n onChange: (value: [string, string] | null) => void;\n}\n\nconst DateRangeFilter = ({ option, onChange, value }: Props) => {\n const isValue = value !== null && value !== undefined && value.length === 2\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 const d = new Date();\n onChange([d.toISOString(), d.toISOString()]);\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 && <>\n <Stack\n p={1}\n gap={1}\n width={\"100%\"}\n >\n <CalenderInput\n fullWidth\n variant={\"outline\"}\n value={value![0] ? new Date(value[0]) : null}\n onChange={(date) => {\n onChange([date ? date.toISOString() : \"\", value ? value[1] : \"\"])\n }}\n />\n\n <CalenderInput\n fullWidth\n variant={\"outline\"}\n value={value![1] ? new Date(value[1]) : null}\n onChange={(date) => {\n onChange([value ? value[0] : \"\", date ? date.toISOString() : \"\"])\n }}\n />\n </Stack>\n </>\n }\n </Stack>\n\n </Stack>\n )\n}\n\nexport default DateRangeFilter"],"names":[],"mappings":";;;;;;;;;;;AAiBA;AACG;AAEA;AAwBkB;AACA;;;AAYA;AAwBM;AACH;AAQG;AACH;AASxB;;"}
@@ -0,0 +1,25 @@
1
+ "use client";
2
+ import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
3
+ import IconButton from '../../IconButton/index.mjs';
4
+ import Stack from '../../Stack/index.mjs';
5
+ import Text from '../../Text/index.mjs';
6
+ import Add from '@xanui/icons/Add';
7
+ import ClearAll from '@xanui/icons/ClearAll';
8
+ import CalenderInput from '../../CalendarInput/index.mjs';
9
+
10
+ const DateRangeFilter = ({ option, onChange, value }) => {
11
+ const isValue = value !== null && value !== undefined && value.length === 2;
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: () => {
13
+ const d = new Date();
14
+ onChange([d.toISOString(), d.toISOString()]);
15
+ }, children: jsx(Add, {}) }), isValue && jsx(IconButton, { size: "small", variant: "soft", color: "danger", onClick: () => {
16
+ onChange(null);
17
+ }, children: jsx(ClearAll, {}) })] })] }), jsx(Stack, { direction: "row", gap: 0.5, flexWrap: "wrap", children: isValue && jsx(Fragment, { children: jsxs(Stack, { p: 1, gap: 1, width: "100%", children: [jsx(CalenderInput, { fullWidth: true, variant: "outline", value: value[0] ? new Date(value[0]) : null, onChange: (date) => {
18
+ onChange([date ? date.toISOString() : "", value ? value[1] : ""]);
19
+ } }), jsx(CalenderInput, { fullWidth: true, variant: "outline", value: value[1] ? new Date(value[1]) : null, onChange: (date) => {
20
+ onChange([value ? value[0] : "", date ? date.toISOString() : ""]);
21
+ } })] }) }) })] }));
22
+ };
23
+
24
+ export { DateRangeFilter as default };
25
+ //# sourceMappingURL=DateRangeFilter.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DateRangeFilter.mjs","sources":["../../../src/DataFilter/options/DateRangeFilter.tsx"],"sourcesContent":["\"use client\"\n\nimport { DataFilterDate } 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 CalenderInput from \"../../CalendarInput\";\n\n\ntype Props = {\n option: DataFilterDate;\n value: [string, string] | null;\n onChange: (value: [string, string] | null) => void;\n}\n\nconst DateRangeFilter = ({ option, onChange, value }: Props) => {\n const isValue = value !== null && value !== undefined && value.length === 2\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 const d = new Date();\n onChange([d.toISOString(), d.toISOString()]);\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 && <>\n <Stack\n p={1}\n gap={1}\n width={\"100%\"}\n >\n <CalenderInput\n fullWidth\n variant={\"outline\"}\n value={value![0] ? new Date(value[0]) : null}\n onChange={(date) => {\n onChange([date ? date.toISOString() : \"\", value ? value[1] : \"\"])\n }}\n />\n\n <CalenderInput\n fullWidth\n variant={\"outline\"}\n value={value![1] ? new Date(value[1]) : null}\n onChange={(date) => {\n onChange([value ? value[0] : \"\", date ? date.toISOString() : \"\"])\n }}\n />\n </Stack>\n </>\n }\n </Stack>\n\n </Stack>\n )\n}\n\nexport default DateRangeFilter"],"names":[],"mappings":";;;;;;;;;AAiBA;AACG;AAEA;AAwBkB;AACA;;;AAYA;AAwBM;AACH;AAQG;AACH;AASxB;;"}
@@ -0,0 +1,11 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import { DataFilterSelect } from '../types.js';
3
+
4
+ type Props = {
5
+ option: DataFilterSelect;
6
+ value: string[];
7
+ onChange: (value: string[]) => void;
8
+ };
9
+ declare const MultiSelectFilter: ({ option, onChange, value }: Props) => react_jsx_runtime.JSX.Element;
10
+
11
+ export { MultiSelectFilter as default };
@@ -0,0 +1,38 @@
1
+ "use client";
2
+ 'use strict';
3
+
4
+ var jsxRuntime = require('react/jsx-runtime');
5
+ var React = require('react');
6
+ var index$4 = require('../../Menu/index.js');
7
+ var index$5 = require('../../List/index.js');
8
+ var index$6 = require('../../ListItem/index.js');
9
+ var index$7 = require('../../Checkbox/index.js');
10
+ var index$2 = require('../../IconButton/index.js');
11
+ var index = require('../../Stack/index.js');
12
+ var index$1 = require('../../Text/index.js');
13
+ var Add = require('@xanui/icons/Add');
14
+ var ClearAll = require('@xanui/icons/ClearAll');
15
+ var index$3 = require('../../Chip/index.js');
16
+ var Close = require('@xanui/icons/Close');
17
+
18
+ const MultiSelectFilter = ({ option, onChange, value }) => {
19
+ var _a;
20
+ const ref = React.useRef(null);
21
+ const [target, setTarget] = React.useState();
22
+ const isValue = value && value.length > 0;
23
+ 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: (e) => {
24
+ setTarget(e.currentTarget);
25
+ }, children: jsxRuntime.jsx(Add, {}) }), isValue && jsxRuntime.jsx(index$2, { size: "small", variant: "soft", color: "danger", onClick: () => {
26
+ onChange([]);
27
+ }, children: jsxRuntime.jsx(ClearAll, {}) })] })] }), jsxRuntime.jsx(index, { direction: "row", gap: 0.5, flexWrap: "wrap", children: isValue && value.map((val, index) => {
28
+ return (jsxRuntime.jsx(index$3, { size: "small", color: "default", label: val, endIcon: jsxRuntime.jsx(index$2, { size: 16, variant: "text", color: "default", onClick: () => {
29
+ onChange(value.filter(v => v !== val));
30
+ }, children: jsxRuntime.jsx(Close, {}) }) }, index));
31
+ }) }), jsxRuntime.jsx(index$4, { target: target, onClickOutside: () => setTarget(undefined), placement: "bottom-right", children: jsxRuntime.jsx(index$5, { width: ((_a = ref === null || ref === void 0 ? void 0 : ref.current) === null || _a === void 0 ? void 0 : _a.offsetWidth) || 200, size: "small", children: option.options.map((opt, index) => (jsxRuntime.jsx(index$6, { startIcon: jsxRuntime.jsx(index$7, { checked: value === null || value === void 0 ? void 0 : value.includes(opt.value) }), onClick: () => {
32
+ const has = value === null || value === void 0 ? void 0 : value.includes(opt.value);
33
+ onChange(has ? value === null || value === void 0 ? void 0 : value.filter(v => v !== opt.value) : [...value || [], opt.value]);
34
+ }, children: opt.label }, index))) }) })] }));
35
+ };
36
+
37
+ module.exports = MultiSelectFilter;
38
+ //# sourceMappingURL=MultiSelectFilter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MultiSelectFilter.js","sources":["../../../src/DataFilter/options/MultiSelectFilter.tsx"],"sourcesContent":["\"use client\"\n\nimport React from \"react\";\nimport { DataFilterSelect } from \"../types\";\nimport Menu from \"../../Menu\";\nimport List from \"../../List\";\nimport ListItem from \"../../ListItem\";\nimport Checkbox from \"../../Checkbox\";\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 Chip from \"../../Chip\";\nimport Close from \"@xanui/icons/Close\";\n\n\ntype Props = {\n option: DataFilterSelect;\n value: string[];\n onChange: (value: string[]) => void;\n}\n\nconst MultiSelectFilter = ({ option, onChange, value }: Props) => {\n const ref: any = React.useRef(null)\n const [target, setTarget] = React.useState<HTMLElement | undefined>()\n const isValue = value && value.length > 0;\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={(e: any) => {\n setTarget(e.currentTarget)\n }}\n >\n <Add />\n </IconButton>\n {\n isValue && <IconButton\n size=\"small\"\n variant=\"soft\"\n color={\"danger\"}\n onClick={() => {\n onChange([]);\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 && value.map((val, index) => {\n return (\n <Chip\n key={index}\n size=\"small\"\n color=\"default\"\n label={val}\n endIcon={<IconButton\n size={16}\n variant={\"text\"}\n color=\"default\"\n onClick={() => {\n onChange(value.filter(v => v !== val));\n }}\n >\n <Close />\n </IconButton>}\n />\n )\n })\n }\n </Stack>\n <Menu\n target={target}\n onClickOutside={() => setTarget(undefined)}\n placement={\"bottom-right\"}\n >\n <List width={ref?.current?.offsetWidth || 200} size=\"small\">\n {\n option.options.map((opt, index) => (\n <ListItem\n key={index}\n startIcon={<Checkbox checked={value?.includes(opt.value)} />}\n onClick={() => {\n const has = value?.includes(opt.value)\n onChange(has ? value?.filter(v => v !== opt.value) : [...value || [], opt.value]);\n }}\n >\n {opt.label}\n </ListItem>\n ))\n }\n </List>\n </Menu>\n </Stack>\n )\n}\n\nexport default MultiSelectFilter"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAuBA;;;;;AAIG;AAwBkB;;;AAYA;AAcH;AAWY;;AAOf;AAeY;AACA;AACH;AAUxB;;"}
@@ -0,0 +1,36 @@
1
+ "use client";
2
+ import { jsxs, jsx } from 'react/jsx-runtime';
3
+ import React from 'react';
4
+ import Menu from '../../Menu/index.mjs';
5
+ import List from '../../List/index.mjs';
6
+ import ListItem from '../../ListItem/index.mjs';
7
+ import Checkbox from '../../Checkbox/index.mjs';
8
+ import IconButton from '../../IconButton/index.mjs';
9
+ import Stack from '../../Stack/index.mjs';
10
+ import Text from '../../Text/index.mjs';
11
+ import Add from '@xanui/icons/Add';
12
+ import ClearAll from '@xanui/icons/ClearAll';
13
+ import Chip from '../../Chip/index.mjs';
14
+ import Close from '@xanui/icons/Close';
15
+
16
+ const MultiSelectFilter = ({ option, onChange, value }) => {
17
+ var _a;
18
+ const ref = React.useRef(null);
19
+ const [target, setTarget] = React.useState();
20
+ const isValue = value && value.length > 0;
21
+ 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: (e) => {
22
+ setTarget(e.currentTarget);
23
+ }, children: jsx(Add, {}) }), isValue && jsx(IconButton, { size: "small", variant: "soft", color: "danger", onClick: () => {
24
+ onChange([]);
25
+ }, children: jsx(ClearAll, {}) })] })] }), jsx(Stack, { direction: "row", gap: 0.5, flexWrap: "wrap", children: isValue && value.map((val, index) => {
26
+ return (jsx(Chip, { size: "small", color: "default", label: val, endIcon: jsx(IconButton, { size: 16, variant: "text", color: "default", onClick: () => {
27
+ onChange(value.filter(v => v !== val));
28
+ }, children: jsx(Close, {}) }) }, index));
29
+ }) }), jsx(Menu, { target: target, onClickOutside: () => setTarget(undefined), placement: "bottom-right", children: jsx(List, { width: ((_a = ref === null || ref === void 0 ? void 0 : ref.current) === null || _a === void 0 ? void 0 : _a.offsetWidth) || 200, size: "small", children: option.options.map((opt, index) => (jsx(ListItem, { startIcon: jsx(Checkbox, { checked: value === null || value === void 0 ? void 0 : value.includes(opt.value) }), onClick: () => {
30
+ const has = value === null || value === void 0 ? void 0 : value.includes(opt.value);
31
+ onChange(has ? value === null || value === void 0 ? void 0 : value.filter(v => v !== opt.value) : [...value || [], opt.value]);
32
+ }, children: opt.label }, index))) }) })] }));
33
+ };
34
+
35
+ export { MultiSelectFilter as default };
36
+ //# sourceMappingURL=MultiSelectFilter.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MultiSelectFilter.mjs","sources":["../../../src/DataFilter/options/MultiSelectFilter.tsx"],"sourcesContent":["\"use client\"\n\nimport React from \"react\";\nimport { DataFilterSelect } from \"../types\";\nimport Menu from \"../../Menu\";\nimport List from \"../../List\";\nimport ListItem from \"../../ListItem\";\nimport Checkbox from \"../../Checkbox\";\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 Chip from \"../../Chip\";\nimport Close from \"@xanui/icons/Close\";\n\n\ntype Props = {\n option: DataFilterSelect;\n value: string[];\n onChange: (value: string[]) => void;\n}\n\nconst MultiSelectFilter = ({ option, onChange, value }: Props) => {\n const ref: any = React.useRef(null)\n const [target, setTarget] = React.useState<HTMLElement | undefined>()\n const isValue = value && value.length > 0;\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={(e: any) => {\n setTarget(e.currentTarget)\n }}\n >\n <Add />\n </IconButton>\n {\n isValue && <IconButton\n size=\"small\"\n variant=\"soft\"\n color={\"danger\"}\n onClick={() => {\n onChange([]);\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 && value.map((val, index) => {\n return (\n <Chip\n key={index}\n size=\"small\"\n color=\"default\"\n label={val}\n endIcon={<IconButton\n size={16}\n variant={\"text\"}\n color=\"default\"\n onClick={() => {\n onChange(value.filter(v => v !== val));\n }}\n >\n <Close />\n </IconButton>}\n />\n )\n })\n }\n </Stack>\n <Menu\n target={target}\n onClickOutside={() => setTarget(undefined)}\n placement={\"bottom-right\"}\n >\n <List width={ref?.current?.offsetWidth || 200} size=\"small\">\n {\n option.options.map((opt, index) => (\n <ListItem\n key={index}\n startIcon={<Checkbox checked={value?.includes(opt.value)} />}\n onClick={() => {\n const has = value?.includes(opt.value)\n onChange(has ? value?.filter(v => v !== opt.value) : [...value || [], opt.value]);\n }}\n >\n {opt.label}\n </ListItem>\n ))\n }\n </List>\n </Menu>\n </Stack>\n )\n}\n\nexport default MultiSelectFilter"],"names":[],"mappings":";;;;;;;;;;;;;;;AAuBA;;;;;AAIG;AAwBkB;;;AAYA;AAcH;AAWY;;AAOf;AAeY;AACA;AACH;AAUxB;;"}
@@ -0,0 +1,11 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import { DataFilterSelect } from '../types.js';
3
+
4
+ type Props = {
5
+ option: DataFilterSelect;
6
+ value: number | null;
7
+ onChange: (value: number | null) => void;
8
+ };
9
+ declare const NumberFilter: ({ option, onChange, value }: Props) => react_jsx_runtime.JSX.Element;
10
+
11
+ export { NumberFilter as default };
@@ -0,0 +1,24 @@
1
+ "use client";
2
+ 'use strict';
3
+
4
+ var jsxRuntime = require('react/jsx-runtime');
5
+ var index$2 = require('../../IconButton/index.js');
6
+ var index = require('../../Stack/index.js');
7
+ var index$1 = require('../../Text/index.js');
8
+ var Add = require('@xanui/icons/Add');
9
+ var ClearAll = require('@xanui/icons/ClearAll');
10
+ var index$3 = require('../../InputNumber/index.js');
11
+
12
+ const NumberFilter = ({ option, onChange, value }) => {
13
+ const isValue = value !== null && value !== undefined;
14
+ return (jsxRuntime.jsxs(index, { width: "100%", bgcolor: "background.secondary", p: 1, radius: 1, children: [jsxRuntime.jsxs(index, { direction: "row", alignItems: "center", justifyContent: "space-between", gap: 0.5, mb: isValue ? .5 : 0, children: [jsxRuntime.jsx(index$1, { children: option.label }), jsxRuntime.jsxs(index, { direction: "row", gap: 0.5, children: [jsxRuntime.jsx(index$2, { size: "small", variant: "soft", color: "default", onClick: () => {
15
+ onChange(0);
16
+ }, children: jsxRuntime.jsx(Add, {}) }), isValue && jsxRuntime.jsx(index$2, { size: "small", variant: "soft", color: "danger", onClick: () => {
17
+ onChange(null);
18
+ }, children: jsxRuntime.jsx(ClearAll, {}) })] })] }), jsxRuntime.jsx(index, { direction: "row", gap: 0.5, flexWrap: "wrap", children: isValue && jsxRuntime.jsx(index$3, { variant: "outline", value: value.toString(), onChange: (e) => {
19
+ onChange(e.target.value);
20
+ }, fullWidth: true }) })] }));
21
+ };
22
+
23
+ module.exports = NumberFilter;
24
+ //# sourceMappingURL=NumberFilter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NumberFilter.js","sources":["../../../src/DataFilter/options/NumberFilter.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 InputNumber from \"../../InputNumber\";\n\ntype Props = {\n option: DataFilterSelect;\n value: number | null;\n onChange: (value: number | null) => void;\n}\n\nconst NumberFilter = ({ 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(0);\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 && <InputNumber\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 NumberFilter"],"names":[],"mappings":";;;;;;;;;;;AAgBA;;AAIG;;;;;AAqDkB;AACH;AAOlB;;"}
@@ -0,0 +1,22 @@
1
+ "use client";
2
+ import { jsxs, jsx } from 'react/jsx-runtime';
3
+ import IconButton from '../../IconButton/index.mjs';
4
+ import Stack from '../../Stack/index.mjs';
5
+ import Text from '../../Text/index.mjs';
6
+ import Add from '@xanui/icons/Add';
7
+ import ClearAll from '@xanui/icons/ClearAll';
8
+ import InputNumber from '../../InputNumber/index.mjs';
9
+
10
+ const NumberFilter = ({ option, onChange, value }) => {
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: () => {
13
+ onChange(0);
14
+ }, children: jsx(Add, {}) }), isValue && jsx(IconButton, { size: "small", variant: "soft", color: "danger", onClick: () => {
15
+ onChange(null);
16
+ }, children: jsx(ClearAll, {}) })] })] }), jsx(Stack, { direction: "row", gap: 0.5, flexWrap: "wrap", children: isValue && jsx(InputNumber, { variant: "outline", value: value.toString(), onChange: (e) => {
17
+ onChange(e.target.value);
18
+ }, fullWidth: true }) })] }));
19
+ };
20
+
21
+ export { NumberFilter as default };
22
+ //# sourceMappingURL=NumberFilter.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NumberFilter.mjs","sources":["../../../src/DataFilter/options/NumberFilter.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 InputNumber from \"../../InputNumber\";\n\ntype Props = {\n option: DataFilterSelect;\n value: number | null;\n onChange: (value: number | null) => void;\n}\n\nconst NumberFilter = ({ 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(0);\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 && <InputNumber\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 NumberFilter"],"names":[],"mappings":";;;;;;;;;AAgBA;;AAIG;;;;;AAqDkB;AACH;AAOlB;;"}
@@ -0,0 +1,11 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import { DataFilterSelect } from '../types.js';
3
+
4
+ type Props = {
5
+ option: DataFilterSelect;
6
+ value: [number, number] | null;
7
+ onChange: (value: [number, number] | null) => void;
8
+ };
9
+ declare const NumberRangeFilter: ({ option, onChange, value }: Props) => react_jsx_runtime.JSX.Element;
10
+
11
+ export { NumberRangeFilter as default };