@uxf/data-grid 11.12.0 → 11.13.0

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 (51) hide show
  1. package/README.md +12 -0
  2. package/_api/index.d.ts +8 -0
  3. package/_api/index.js +12 -0
  4. package/_store/reducer.js +17 -4
  5. package/_story-utils/schema.js +13 -11
  6. package/filter-handler/boolean-select.d.ts +4 -0
  7. package/filter-handler/boolean-select.js +23 -0
  8. package/filter-handler/checkbox.d.ts +4 -0
  9. package/filter-handler/checkbox.js +19 -0
  10. package/filter-handler/date.d.ts +6 -2
  11. package/filter-handler/date.js +25 -22
  12. package/filter-handler/datetime.d.ts +7 -0
  13. package/filter-handler/datetime.js +34 -0
  14. package/filter-handler/entity-multi-select.d.ts +5 -0
  15. package/filter-handler/entity-multi-select.js +22 -0
  16. package/filter-handler/entity-select.d.ts +5 -0
  17. package/filter-handler/entity-select.js +22 -0
  18. package/filter-handler/index.d.ts +1 -1
  19. package/filter-handler/index.js +20 -13
  20. package/filter-handler/interval.d.ts +7 -0
  21. package/filter-handler/interval.js +45 -0
  22. package/filter-handler/multi-select.d.ts +4 -2
  23. package/filter-handler/multi-select.js +13 -16
  24. package/filter-handler/select.d.ts +5 -0
  25. package/filter-handler/{select-filter.js → select.js} +6 -6
  26. package/filter-handler/string.d.ts +4 -0
  27. package/filter-handler/{text-filter.js → string.js} +9 -7
  28. package/filter-handler/types.d.ts +5 -6
  29. package/filter-list/filter-list.js +6 -9
  30. package/filters/filters.js +4 -7
  31. package/package.json +2 -2
  32. package/styles.css +2 -1
  33. package/types/api.d.ts +0 -1
  34. package/types/components.d.ts +5 -5
  35. package/types/schema.d.ts +5 -7
  36. package/use-data-grid-control/actions-factory.d.ts +2 -2
  37. package/use-data-grid-control/actions-factory.js +2 -1
  38. package/use-data-grid-control/use-data-grid-control.d.ts +2 -1
  39. package/use-data-grid-fetching/loader.js +2 -4
  40. package/utils/create-filter-component-props.d.ts +4 -0
  41. package/utils/create-filter-component-props.js +16 -0
  42. package/_store/actions.d.ts +0 -45
  43. package/_store/actions.js +0 -47
  44. package/filter-handler/bool-filter.d.ts +0 -3
  45. package/filter-handler/bool-filter.js +0 -20
  46. package/filter-handler/boolean-filter.d.ts +0 -3
  47. package/filter-handler/boolean-filter.js +0 -16
  48. package/filter-handler/interval-filter.d.ts +0 -3
  49. package/filter-handler/interval-filter.js +0 -50
  50. package/filter-handler/select-filter.d.ts +0 -3
  51. package/filter-handler/text-filter.d.ts +0 -3
package/README.md CHANGED
@@ -43,6 +43,18 @@ const { state, actions } = useDataGridControl({
43
43
  });
44
44
  ```
45
45
 
46
+ ## Supported FilterHandlers
47
+
48
+ - `bool` - Select (yes / no / null)
49
+ - `checkbox`, `boolean` - Checkbox (is sent only if checkbox is checked)
50
+ - `date`
51
+ - `datetime`
52
+ - `entityMultiSelect`
53
+ - `entitySelect`
54
+ - `interval`
55
+ - `multiSelect`
56
+ - `select`
57
+ - `string`, `text`
46
58
 
47
59
  ## Examples
48
60
 
@@ -0,0 +1,8 @@
1
+ import { Request, Response } from "../types/api";
2
+ export declare function dataGridGetResult(gridName: string, request: Request): Promise<Response>;
3
+ type Option = {
4
+ id: number | string;
5
+ label: string;
6
+ };
7
+ export declare function dataGridAutocomplete(name: string, term: string): Promise<Option[]>;
8
+ export {};
package/_api/index.js ADDED
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.dataGridAutocomplete = exports.dataGridGetResult = void 0;
4
+ const qs_1 = require("qs");
5
+ function dataGridGetResult(gridName, request) {
6
+ return fetch(`/api/cms/datagrid/${gridName}?${(0, qs_1.stringify)(request)}`).then((response) => response.json());
7
+ }
8
+ exports.dataGridGetResult = dataGridGetResult;
9
+ function dataGridAutocomplete(name, term) {
10
+ return fetch(`/api/cms/autocomplete/${name}?${(0, qs_1.stringify)({ term })}`).then((response) => response.json());
11
+ }
12
+ exports.dataGridAutocomplete = dataGridAutocomplete;
package/_store/reducer.js CHANGED
@@ -48,15 +48,28 @@ const reducer = (state, action) => {
48
48
  };
49
49
  case "FILTER":
50
50
  // eslint-disable-next-line no-case-declarations
51
- const filterValue = action.filterValue;
51
+ const name = action.name;
52
+ // eslint-disable-next-line no-case-declarations
53
+ const value = action.value;
54
+ // eslint-disable-next-line no-case-declarations
55
+ const op = action.op;
56
+ return {
57
+ ...state,
58
+ request: {
59
+ ...state.request,
60
+ page: 0,
61
+ f: state.request.f.find((f) => f.name === name)
62
+ ? state.request.f.map((f) => (f.name === name ? { value, name, op } : f))
63
+ : [...state.request.f, { value, name, op }],
64
+ },
65
+ };
66
+ case "FILTER_CLEAR":
52
67
  return {
53
68
  ...state,
54
69
  request: {
55
70
  ...state.request,
56
71
  page: 0,
57
- f: state.request.f.find((f) => f.name === filterValue.name)
58
- ? state.request.f.map((f) => (f.name === filterValue.name ? filterValue : f))
59
- : [...state.request.f, filterValue],
72
+ f: state.request.f.filter((filter) => filter.name !== action.name),
60
73
  },
61
74
  };
62
75
  case "FILTER_RESET":
@@ -15,17 +15,17 @@ exports.schema = {
15
15
  filters: [
16
16
  { name: "text", type: "text", label: "Text" },
17
17
  { name: "bool", type: "boolean", label: "Boolean" },
18
- { name: "ival", type: "interval", label: "Super interval" },
18
+ { name: "interval", type: "interval", label: "Super interval" },
19
19
  { name: "mail", type: "string", label: "E-mail" },
20
20
  { name: "date", type: "date", label: "Date" },
21
+ { name: "datetime", type: "datetime", label: "Datetime" },
21
22
  { name: "tel", type: "string", label: "Phone" },
22
23
  { name: "link", type: "string", label: "Link" },
23
24
  {
24
- name: "sele",
25
+ name: "select",
25
26
  type: "select",
26
27
  label: "Select",
27
28
  options: [
28
- { id: "", label: "" },
29
29
  { id: 1, label: "A" },
30
30
  { id: 2, label: "B" },
31
31
  ],
@@ -42,14 +42,16 @@ exports.schema = {
42
42
  ],
43
43
  },
44
44
  {
45
- name: "seleBool",
46
- type: "select",
47
- label: "Select Boolean",
48
- options: [
49
- { id: "", label: "" },
50
- { id: 1, label: "Ano" },
51
- { id: 0, label: "Ne" },
52
- ],
45
+ name: "entitySelect",
46
+ label: "Entity select",
47
+ type: "entitySelect",
48
+ autocomplete: "user",
49
+ },
50
+ {
51
+ name: "entityMultiSelect",
52
+ label: "Entity multi select",
53
+ type: "entityMultiSelect",
54
+ autocomplete: "user",
53
55
  },
54
56
  ],
55
57
  tabs: [
@@ -0,0 +1,4 @@
1
+ import { FilterHandler } from "./types";
2
+ type StateValue = 1 | 0 | null;
3
+ declare const filterHandler: FilterHandler<StateValue>;
4
+ export default filterHandler;
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const chip_1 = require("@uxf/ui/chip");
7
+ const select_1 = require("@uxf/ui/select");
8
+ const react_1 = __importDefault(require("react"));
9
+ const filterHandler = {
10
+ Input(props) {
11
+ return (react_1.default.createElement(select_1.Select, { options: [
12
+ { id: 1, label: "Ano" },
13
+ { id: 0, label: "Ne" },
14
+ ], label: props.filter.label, value: props.value, onChange: (value) => props.onChange(value), isClearable: true, name: props.filter.name }));
15
+ },
16
+ ListItem(props) {
17
+ return (react_1.default.createElement(chip_1.Chip, { onClose: props.onClear },
18
+ props.filter.label,
19
+ ":\u00A0",
20
+ props.value ? "Ano" : "Ne"));
21
+ },
22
+ };
23
+ exports.default = filterHandler;
@@ -0,0 +1,4 @@
1
+ import { FilterHandler } from "./types";
2
+ type StateValue = boolean | undefined;
3
+ declare const filterHandler: FilterHandler<StateValue>;
4
+ export default filterHandler;
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const checkbox_input_1 = require("@uxf/ui/checkbox-input");
7
+ const chip_1 = require("@uxf/ui/chip");
8
+ const react_1 = __importDefault(require("react"));
9
+ const filterHandler = {
10
+ Input(props) {
11
+ var _a;
12
+ return (react_1.default.createElement(checkbox_input_1.CheckboxInput, { label: props.filter.label, value: (_a = props.value) !== null && _a !== void 0 ? _a : false, onChange: (value) => props.onChange(value ? value : undefined), name: props.filter.name }));
13
+ },
14
+ ListItem: (props) => (react_1.default.createElement(chip_1.Chip, { onClose: props.onClear },
15
+ props.filter.label,
16
+ ":\u00A0",
17
+ props.value ? "Ano" : "Ne")),
18
+ };
19
+ exports.default = filterHandler;
@@ -1,3 +1,7 @@
1
1
  import { FilterHandler } from "./types";
2
- declare const date: FilterHandler;
3
- export default date;
2
+ type StateValue = {
3
+ from?: string;
4
+ to?: string;
5
+ } | undefined;
6
+ declare const filterHandler: FilterHandler<StateValue>;
7
+ export default filterHandler;
@@ -9,35 +9,38 @@ const chip_1 = require("@uxf/ui/chip");
9
9
  const date_picker_input_1 = require("@uxf/ui/date-picker-input");
10
10
  const dayjs_1 = __importDefault(require("dayjs"));
11
11
  const react_1 = __importDefault(require("react"));
12
- const date = {
13
- input: function (props) {
14
- var _a, _b;
15
- const initializedValue = typeof ((_a = props.value.value) === null || _a === void 0 ? void 0 : _a.from) !== "undefined" && typeof ((_b = props.value.value) === null || _b === void 0 ? void 0 : _b.to) !== "undefined"
16
- ? props.value
17
- : { name: props.filter.name, value: { from: null, to: null } };
12
+ const filterHandler = {
13
+ Input(props) {
14
+ var _a, _b, _c, _d, _e, _f;
15
+ const onChangeFrom = (value) => {
16
+ var _a;
17
+ return (0, is_nil_1.isNil)(value) && (0, is_nil_1.isNil)((_a = props.value) === null || _a === void 0 ? void 0 : _a.to)
18
+ ? props.onChange(undefined)
19
+ : props.onChange({ ...props.value, from: value !== null && value !== void 0 ? value : undefined });
20
+ };
21
+ const onChangeTo = (value) => {
22
+ var _a;
23
+ return (0, is_nil_1.isNil)(value) && (0, is_nil_1.isNil)((_a = props.value) === null || _a === void 0 ? void 0 : _a.from)
24
+ ? props.onChange(undefined)
25
+ : props.onChange({ ...props.value, to: value !== null && value !== void 0 ? value : undefined });
26
+ };
18
27
  return (react_1.default.createElement("div", { className: "uxf-data-grid__filter uxf-data-grid__filter--date" },
19
- react_1.default.createElement(date_picker_input_1.DatePickerInput, { value: initializedValue.value.from, onChange: (changedValue) => props.onFilter({
20
- ...initializedValue,
21
- value: { ...initializedValue.value, from: changedValue },
22
- }), label: `${props.filter.label} (od)`, name: props.filter.name }),
23
- react_1.default.createElement(date_picker_input_1.DatePickerInput, { value: initializedValue.value.to, onChange: (changedValue) => props.onFilter({ ...initializedValue, value: { ...initializedValue.value, to: changedValue } }), label: `${props.filter.label} (do)`, name: props.filter.name })));
28
+ react_1.default.createElement(date_picker_input_1.DatePickerInput, { value: (_b = (_a = props.value) === null || _a === void 0 ? void 0 : _a.from) !== null && _b !== void 0 ? _b : null, onChange: onChangeFrom, label: `${props.filter.label} (od)`, name: props.filter.name, maxDate: (_c = props.value) === null || _c === void 0 ? void 0 : _c.to, isClearable: true }),
29
+ react_1.default.createElement(date_picker_input_1.DatePickerInput, { value: (_e = (_d = props.value) === null || _d === void 0 ? void 0 : _d.to) !== null && _e !== void 0 ? _e : null, onChange: onChangeTo, label: `${props.filter.label} (do)`, name: props.filter.name, minDate: (_f = props.value) === null || _f === void 0 ? void 0 : _f.from, isClearable: true })));
24
30
  },
25
- listItem: function (props) {
26
- if ((0, is_nil_1.isNil)(props.value.value)) {
27
- return null;
28
- }
29
- const value = props.value.value;
30
- if ((0, is_nil_1.isNil)(value.from) && (0, is_nil_1.isNil)(value.to)) {
31
+ ListItem: function (props) {
32
+ var _a, _b;
33
+ if ((0, is_nil_1.isNil)((_a = props.value) === null || _a === void 0 ? void 0 : _a.from) && (0, is_nil_1.isNil)((_b = props.value) === null || _b === void 0 ? void 0 : _b.to)) {
31
34
  return null;
32
35
  }
33
36
  const formatDate = [
34
- value.from ? "od " + (0, dayjs_1.default)(value.from).format("l") : "",
35
- value.to ? "do " + (0, dayjs_1.default)(value.to).format("l") : "",
37
+ props.value.from ? "od " + (0, dayjs_1.default)(props.value.from).format("l") : null,
38
+ props.value.to ? "do " + (0, dayjs_1.default)(props.value.to).format("l") : null,
36
39
  ];
37
- return (react_1.default.createElement(chip_1.Chip, { onClose: () => props.onFilter({ ...props.value, value: undefined }) },
40
+ return (react_1.default.createElement(chip_1.Chip, { onClose: props.onClear },
38
41
  props.filter.label,
39
- " ",
42
+ ": ",
40
43
  (0, filter_nullish_1.filterNullish)(formatDate).join(" ")));
41
44
  },
42
45
  };
43
- exports.default = date;
46
+ exports.default = filterHandler;
@@ -0,0 +1,7 @@
1
+ import { FilterHandler } from "./types";
2
+ type StateValue = {
3
+ from?: string;
4
+ to?: string;
5
+ } | undefined;
6
+ declare const filterHandler: FilterHandler<StateValue>;
7
+ export default filterHandler;
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const filter_nullish_1 = require("@uxf/core/utils/filter-nullish");
7
+ const is_nil_1 = require("@uxf/core/utils/is-nil");
8
+ const chip_1 = require("@uxf/ui/chip");
9
+ const datetime_picker_input_1 = require("@uxf/ui/datetime-picker-input");
10
+ const dayjs_1 = __importDefault(require("dayjs"));
11
+ const react_1 = __importDefault(require("react"));
12
+ const filterHandler = {
13
+ Input(props) {
14
+ var _a, _b, _c, _d, _e, _f;
15
+ return (react_1.default.createElement("div", { className: "uxf-data-grid__filter uxf-data-grid__filter--datetime" },
16
+ react_1.default.createElement(datetime_picker_input_1.DatetimePickerInput, { value: (_b = (_a = props.value) === null || _a === void 0 ? void 0 : _a.from) !== null && _b !== void 0 ? _b : null, onChange: (value) => props.onChange({ ...props.value, from: value !== null && value !== void 0 ? value : undefined }), label: `${props.filter.label} (od)`, name: props.filter.name, maxDate: (_c = props.value) === null || _c === void 0 ? void 0 : _c.to, isClearable: true }),
17
+ react_1.default.createElement(datetime_picker_input_1.DatetimePickerInput, { value: (_e = (_d = props.value) === null || _d === void 0 ? void 0 : _d.to) !== null && _e !== void 0 ? _e : null, onChange: (value) => props.onChange({ ...props.value, to: value !== null && value !== void 0 ? value : undefined }), label: `${props.filter.label} (do)`, name: props.filter.name, minDate: (_f = props.value) === null || _f === void 0 ? void 0 : _f.from, isClearable: true })));
18
+ },
19
+ ListItem: function (props) {
20
+ var _a, _b;
21
+ if ((0, is_nil_1.isNil)((_a = props.value) === null || _a === void 0 ? void 0 : _a.from) && (0, is_nil_1.isNil)((_b = props.value) === null || _b === void 0 ? void 0 : _b.to)) {
22
+ return null;
23
+ }
24
+ const formatDate = [
25
+ props.value.from ? "od " + (0, dayjs_1.default)(props.value.from).format("l LT") : null,
26
+ props.value.to ? "do " + (0, dayjs_1.default)(props.value.to).format("l LT") : null,
27
+ ];
28
+ return (react_1.default.createElement(chip_1.Chip, { onClose: props.onClear },
29
+ props.filter.label,
30
+ ": ",
31
+ (0, filter_nullish_1.filterNullish)(formatDate).join(" ")));
32
+ },
33
+ };
34
+ exports.default = filterHandler;
@@ -0,0 +1,5 @@
1
+ import { MultiComboboxProps } from "@uxf/ui/multi-combobox";
2
+ import { FilterHandler } from "./types";
3
+ type StateValue = MultiComboboxProps["value"];
4
+ declare const filterHandler: FilterHandler<StateValue>;
5
+ export default filterHandler;
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const chip_1 = require("@uxf/ui/chip");
7
+ const multi_combobox_1 = require("@uxf/ui/multi-combobox");
8
+ const react_1 = __importDefault(require("react"));
9
+ const _api_1 = require("../_api");
10
+ const filterHandler = {
11
+ Input(props) {
12
+ return (react_1.default.createElement(multi_combobox_1.MultiCombobox, { loadOptions: (term) => { var _a; return (0, _api_1.dataGridAutocomplete)((_a = props.filter.autocomplete) !== null && _a !== void 0 ? _a : "", term); }, label: props.filter.label, value: props.value, onChange: (value) => props.onChange(value), name: props.filter.name }));
13
+ },
14
+ ListItem(props) {
15
+ var _a;
16
+ return (react_1.default.createElement(chip_1.Chip, { onClose: props.onClear },
17
+ props.filter.label,
18
+ ":\u00A0", (_a = props.value) === null || _a === void 0 ? void 0 :
19
+ _a.map((item) => item.label).join(", ")));
20
+ },
21
+ };
22
+ exports.default = filterHandler;
@@ -0,0 +1,5 @@
1
+ import { ComboboxProps } from "@uxf/ui/combobox";
2
+ import { FilterHandler } from "./types";
3
+ type StateValue = ComboboxProps["value"];
4
+ declare const filterHandler: FilterHandler<StateValue>;
5
+ export default filterHandler;
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const chip_1 = require("@uxf/ui/chip");
7
+ const combobox_1 = require("@uxf/ui/combobox");
8
+ const react_1 = __importDefault(require("react"));
9
+ const _api_1 = require("../_api");
10
+ const filterHandler = {
11
+ Input(props) {
12
+ return (react_1.default.createElement(combobox_1.Combobox, { loadOptions: (term) => { var _a; return (0, _api_1.dataGridAutocomplete)((_a = props.filter.autocomplete) !== null && _a !== void 0 ? _a : "", term); }, label: props.filter.label, value: props.value, onChange: (value) => props.onChange(value), isClearable: true, name: props.filter.name }));
13
+ },
14
+ ListItem(props) {
15
+ var _a;
16
+ return (react_1.default.createElement(chip_1.Chip, { onClose: props.onClear },
17
+ props.filter.label,
18
+ ":\u00A0", (_a = props.value) === null || _a === void 0 ? void 0 :
19
+ _a.label));
20
+ },
21
+ };
22
+ exports.default = filterHandler;
@@ -1,4 +1,4 @@
1
1
  import { FilterHandler } from "./types";
2
2
  export * from "./types";
3
- export type FilterHandlers = Record<string, FilterHandler>;
3
+ export type FilterHandlers = Partial<Record<string, FilterHandler<any>>>;
4
4
  export declare const defaultFilterHandlers: FilterHandlers;
@@ -18,22 +18,29 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
18
18
  };
19
19
  Object.defineProperty(exports, "__esModule", { value: true });
20
20
  exports.defaultFilterHandlers = void 0;
21
- const bool_filter_1 = __importDefault(require("./bool-filter"));
22
- const boolean_filter_1 = __importDefault(require("./boolean-filter"));
21
+ const boolean_select_1 = __importDefault(require("./boolean-select"));
22
+ const checkbox_1 = __importDefault(require("./checkbox"));
23
23
  const date_1 = __importDefault(require("./date"));
24
- const interval_filter_1 = __importDefault(require("./interval-filter"));
24
+ const datetime_1 = __importDefault(require("./datetime"));
25
+ const entity_multi_select_1 = __importDefault(require("./entity-multi-select"));
26
+ const entity_select_1 = __importDefault(require("./entity-select"));
27
+ const interval_1 = __importDefault(require("./interval"));
25
28
  const multi_select_1 = __importDefault(require("./multi-select"));
26
- const select_filter_1 = __importDefault(require("./select-filter"));
27
- const text_filter_1 = __importDefault(require("./text-filter"));
29
+ const select_1 = __importDefault(require("./select"));
30
+ const string_1 = __importDefault(require("./string"));
28
31
  __exportStar(require("./types"), exports);
29
32
  exports.defaultFilterHandlers = {
30
- text: text_filter_1.default,
31
- string: text_filter_1.default,
32
- date: date_1.default,
33
- bool: bool_filter_1.default,
34
- boolean: boolean_filter_1.default,
35
- checkbox: boolean_filter_1.default,
36
- interval: interval_filter_1.default,
33
+ bool: boolean_select_1.default, // TODO smazat
34
+ boolean: checkbox_1.default, // TODO smazat
35
+ text: string_1.default, // TODO smazat
36
+ date: // TODO smazat
37
+ date_1.default,
38
+ datetime: datetime_1.default,
39
+ entityMultiSelect: entity_multi_select_1.default,
40
+ entitySelect: entity_select_1.default,
41
+ checkbox: checkbox_1.default,
42
+ interval: interval_1.default,
37
43
  multiSelect: multi_select_1.default,
38
- select: select_filter_1.default,
44
+ select: select_1.default,
45
+ string: string_1.default,
39
46
  };
@@ -0,0 +1,7 @@
1
+ import { FilterHandler } from "./types";
2
+ type StateValue = {
3
+ from?: number | null;
4
+ to?: number | null;
5
+ } | undefined;
6
+ declare const filterHandler: FilterHandler<StateValue>;
7
+ export default filterHandler;
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const filter_nullish_1 = require("@uxf/core/utils/filter-nullish");
7
+ const is_empty_1 = require("@uxf/core/utils/is-empty");
8
+ const is_nil_1 = require("@uxf/core/utils/is-nil");
9
+ const is_not_nil_1 = require("@uxf/core/utils/is-not-nil");
10
+ const chip_1 = require("@uxf/ui/chip");
11
+ const text_input_1 = require("@uxf/ui/text-input");
12
+ const react_1 = __importDefault(require("react"));
13
+ const filterHandler = {
14
+ Input(props) {
15
+ var _a, _b, _c, _d, _e, _f;
16
+ const onChangeFrom = (value) => props.onChange({
17
+ ...props.value,
18
+ from: (0, is_not_nil_1.isNotNil)(value) && !(0, is_empty_1.isEmpty)(value) ? parseInt(value, 10) : null,
19
+ });
20
+ const onChangeTo = (value) => props.onChange({
21
+ ...props.value,
22
+ to: (0, is_not_nil_1.isNotNil)(value) && !(0, is_empty_1.isEmpty)(value) ? parseInt(value, 10) : null,
23
+ });
24
+ return (react_1.default.createElement("div", { key: props.filter.name },
25
+ react_1.default.createElement("div", { className: "uxf-data-grid__filter uxf-data-grid__filter--interval" },
26
+ react_1.default.createElement(text_input_1.TextInput, { label: `${props.filter.label} od:`, value: (_c = (_b = (_a = props.value) === null || _a === void 0 ? void 0 : _a.from) === null || _b === void 0 ? void 0 : _b.toString()) !== null && _c !== void 0 ? _c : "", onChange: onChangeFrom, name: props.filter.name }),
27
+ react_1.default.createElement("div", { className: "uxf-data-grid__filter-gap" }, "\u2013"),
28
+ react_1.default.createElement(text_input_1.TextInput, { label: `${props.filter.label} do:`, value: (_f = (_e = (_d = props.value) === null || _d === void 0 ? void 0 : _d.to) === null || _e === void 0 ? void 0 : _e.toString()) !== null && _f !== void 0 ? _f : "", onChange: onChangeTo, name: props.filter.name }))));
29
+ },
30
+ ListItem(props) {
31
+ var _a, _b;
32
+ if ((0, is_nil_1.isNil)((_a = props.value) === null || _a === void 0 ? void 0 : _a.from) && (0, is_nil_1.isNil)((_b = props.value) === null || _b === void 0 ? void 0 : _b.to)) {
33
+ return null;
34
+ }
35
+ const formatInterval = [
36
+ props.value.from ? "od " + props.value.from : null,
37
+ props.value.to ? "do " + props.value.to : null,
38
+ ];
39
+ return (react_1.default.createElement(chip_1.Chip, { onClose: props.onClear },
40
+ props.filter.label,
41
+ " ",
42
+ (0, filter_nullish_1.filterNullish)(formatInterval).join(" ")));
43
+ },
44
+ };
45
+ exports.default = filterHandler;
@@ -1,3 +1,5 @@
1
+ import { MultiSelectProps } from "@uxf/ui/multi-select";
1
2
  import { FilterHandler } from "./types";
2
- declare const multiSelect: FilterHandler;
3
- export default multiSelect;
3
+ type StateValue = MultiSelectProps["value"];
4
+ declare const filterHandler: FilterHandler<StateValue>;
5
+ export default filterHandler;
@@ -3,27 +3,24 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- const is_nil_1 = require("@uxf/core/utils/is-nil");
6
+ const is_empty_1 = require("@uxf/core/utils/is-empty");
7
7
  const chip_1 = require("@uxf/ui/chip");
8
8
  const multi_select_1 = require("@uxf/ui/multi-select");
9
9
  const react_1 = __importDefault(require("react"));
10
- const multiSelect = {
11
- input: (props) => {
12
- var _a, _b;
13
- return (react_1.default.createElement(multi_select_1.MultiSelect, { options: (_a = props.filter.options) !== null && _a !== void 0 ? _a : [], label: props.filter.label, value: (_b = props.value.value) === null || _b === void 0 ? void 0 : _b.map((id) => { var _a; return (_a = props.filter.options) === null || _a === void 0 ? void 0 : _a.find((option) => option.id === id); }), onChange: (value) => {
14
- props.onFilter({
15
- ...props.value,
16
- value: (0, is_nil_1.isNil)(value) || value.length === 0 ? null : value.map((item) => item.id),
17
- });
18
- }, name: props.filter.name }));
10
+ const filterHandler = {
11
+ Input(props) {
12
+ var _a;
13
+ const onChange = (value) => {
14
+ props.onChange(Array.isArray(value) && !(0, is_empty_1.isEmpty)(value) ? value : null);
15
+ };
16
+ return (react_1.default.createElement(multi_select_1.MultiSelect, { options: (_a = props.filter.options) !== null && _a !== void 0 ? _a : [], label: props.filter.label, value: props.value, onChange: onChange, name: props.filter.name }));
19
17
  },
20
- listItem: (props) => {
18
+ ListItem(props) {
19
+ var _a;
21
20
  return (react_1.default.createElement(chip_1.Chip, { onClose: props.onClear },
22
21
  props.filter.label,
23
- ":\u00A0",
24
- props.value.value
25
- .map((id) => { var _a, _b; return (_b = (_a = props.filter.options) === null || _a === void 0 ? void 0 : _a.find((option) => option.id === id)) === null || _b === void 0 ? void 0 : _b.label; })
26
- .join(", ")));
22
+ ":\u00A0", (_a = props.value) === null || _a === void 0 ? void 0 :
23
+ _a.map((item) => item.label).join(", ")));
27
24
  },
28
25
  };
29
- exports.default = multiSelect;
26
+ exports.default = filterHandler;
@@ -0,0 +1,5 @@
1
+ import { SelectValue } from "@uxf/ui/select";
2
+ import { FilterHandler } from "./types";
3
+ type StateValue = SelectValue | null;
4
+ declare const filterHandler: FilterHandler<StateValue>;
5
+ export default filterHandler;
@@ -6,16 +6,16 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const chip_1 = require("@uxf/ui/chip");
7
7
  const select_1 = require("@uxf/ui/select");
8
8
  const react_1 = __importDefault(require("react"));
9
- const SelectFilterHandler = {
10
- input: (props) => {
9
+ const filterHandler = {
10
+ Input(props) {
11
11
  var _a;
12
- return (react_1.default.createElement(select_1.Select, { options: (_a = props.filter.options) !== null && _a !== void 0 ? _a : [], label: props.filter.label, value: props.value.value, onChange: (value) => props.onFilter({ ...props.value, value }), isClearable: true, name: props.filter.name }));
12
+ return (react_1.default.createElement(select_1.Select, { options: (_a = props.filter.options) !== null && _a !== void 0 ? _a : [], label: props.filter.label, value: props.value, onChange: (value) => props.onChange(value), isClearable: true, name: props.filter.name }));
13
13
  },
14
- listItem: (props) => {
14
+ ListItem(props) {
15
15
  var _a, _b, _c;
16
16
  return (react_1.default.createElement(chip_1.Chip, { onClose: props.onClear },
17
17
  props.filter.label,
18
- ":\u00A0", (_c = (_b = (_a = props.filter.options) === null || _a === void 0 ? void 0 : _a.find((v) => v.id === props.value.value)) === null || _b === void 0 ? void 0 : _b.label) !== null && _c !== void 0 ? _c : ""));
18
+ ":\u00A0", (_c = (_b = (_a = props.filter.options) === null || _a === void 0 ? void 0 : _a.find((v) => v.id === props.value)) === null || _b === void 0 ? void 0 : _b.label) !== null && _c !== void 0 ? _c : ""));
19
19
  },
20
20
  };
21
- exports.default = SelectFilterHandler;
21
+ exports.default = filterHandler;
@@ -0,0 +1,4 @@
1
+ import { FilterHandler } from "./types";
2
+ type StateValue = string | null;
3
+ declare const filterHandler: FilterHandler<StateValue>;
4
+ export default filterHandler;
@@ -3,22 +3,24 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
+ const is_empty_1 = require("@uxf/core/utils/is-empty");
7
+ const is_nil_1 = require("@uxf/core/utils/is-nil");
6
8
  const chip_1 = require("@uxf/ui/chip");
7
9
  const text_input_1 = require("@uxf/ui/text-input");
8
10
  const react_1 = __importDefault(require("react"));
9
- const TextFilterHandler = {
10
- input: (props) => {
11
+ const filterHandler = {
12
+ Input(props) {
11
13
  var _a;
12
- return (react_1.default.createElement(text_input_1.TextInput, { label: props.filter.label, value: (_a = props.value.value) !== null && _a !== void 0 ? _a : "", onChange: (value) => props.onFilter({ ...props.value, value }), name: props.filter.name }));
14
+ return (react_1.default.createElement(text_input_1.TextInput, { label: props.filter.label, value: (_a = props.value) !== null && _a !== void 0 ? _a : "", onChange: (value) => props.onChange(value), name: props.filter.name }));
13
15
  },
14
- listItem: (props) => {
15
- if (!props.value.value) {
16
+ ListItem(props) {
17
+ if ((0, is_nil_1.isNil)(props.value) || (0, is_empty_1.isEmpty)(props.value)) {
16
18
  return null;
17
19
  }
18
20
  return (react_1.default.createElement(chip_1.Chip, { onClose: props.onClear },
19
21
  props.filter.label,
20
22
  ": ",
21
- props.value.value));
23
+ props.value));
22
24
  },
23
25
  };
24
- exports.default = TextFilterHandler;
26
+ exports.default = filterHandler;
@@ -1,8 +1,7 @@
1
- import { ComponentType } from "react";
1
+ import { FunctionComponent } from "react";
2
2
  import { FilterProps } from "../types/components";
3
- import { BaseGridType, Filters } from "../types/schema";
4
- export type FilterComponent<F extends BaseGridType["filters"], T = any> = ComponentType<FilterProps<Filters<F>, T>>;
5
- export interface FilterHandler {
6
- input: FilterComponent<any>;
7
- listItem: FilterComponent<any>;
3
+ export type FilterComponent<StateValue> = FunctionComponent<FilterProps<StateValue>>;
4
+ export interface FilterHandler<StateValue> {
5
+ Input: FilterComponent<StateValue>;
6
+ ListItem: FilterComponent<StateValue>;
8
7
  }
@@ -5,25 +5,22 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.FilterList = void 0;
7
7
  const cx_1 = require("@uxf/core/utils/cx");
8
+ const is_nil_1 = require("@uxf/core/utils/is-nil");
8
9
  const react_1 = __importDefault(require("react"));
10
+ const create_filter_component_props_1 = require("../utils/create-filter-component-props");
9
11
  function FilterList(props) {
10
12
  const renderedFilters = props.state.request.f
11
13
  .map((filterRequest) => {
12
- var _a;
13
- if (typeof filterRequest.value !== "number" && !filterRequest.value) {
14
- return null;
15
- }
16
14
  const filter = props.schema.filters.find((f) => f.name === filterRequest.name);
17
- if (!filter) {
15
+ if ((0, is_nil_1.isNil)(filter)) {
18
16
  return null;
19
17
  }
20
- // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
21
- const FilterListItem = (_a = props.filterHandlers[filter.type]) === null || _a === void 0 ? void 0 : _a.listItem;
22
- // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
18
+ const filterHandler = props.filterHandlers[filter.type];
19
+ const FilterListItem = filterHandler === null || filterHandler === void 0 ? void 0 : filterHandler.ListItem;
23
20
  if (!FilterListItem) {
24
21
  return null;
25
22
  }
26
- return (react_1.default.createElement(FilterListItem, { key: filterRequest.name, filter: filter, onFilter: props.actions.filter, gridName: props.gridName, value: filterRequest, onClear: () => props.actions.filter({ name: filter.name, value: null }) }));
23
+ return (react_1.default.createElement(FilterListItem, { key: filterRequest.name, ...(0, create_filter_component_props_1.createFilterComponentProps)(props.gridName, filter, props.state, props.actions) }));
27
24
  })
28
25
  .filter((item) => !!item);
29
26
  if (renderedFilters.length === 0) {
@@ -5,21 +5,18 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.Filters = void 0;
7
7
  const react_1 = __importDefault(require("react"));
8
+ const create_filter_component_props_1 = require("../utils/create-filter-component-props");
8
9
  function Filters(props) {
9
10
  return (react_1.default.createElement("div", { className: "uxf-data-grid__filters" }, props.schema.filters.map((filter) => {
10
- var _a, _b;
11
- // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
12
- const FilterInput = (_a = props.filterHandlers[filter.type]) === null || _a === void 0 ? void 0 : _a.input;
11
+ const filterHandler = props.filterHandlers[filter.type];
12
+ const FilterInput = filterHandler === null || filterHandler === void 0 ? void 0 : filterHandler.Input;
13
13
  // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
14
14
  if (!FilterInput) {
15
15
  // eslint-disable-next-line no-console
16
16
  console.warn(`Unknown filter "${filter.type}".`);
17
17
  return null;
18
18
  }
19
- return (react_1.default.createElement(FilterInput, { key: filter.name, gridName: props.gridName, filter: filter, value: (_b = props.state.request.f.find((f) => f.name === filter.name)) !== null && _b !== void 0 ? _b : {
20
- name: filter.name,
21
- value: null,
22
- }, onFilter: (requestFilter) => props.actions.filter(requestFilter), onClear: () => props.actions.filter({ name: filter.name, value: null }) }));
19
+ return (react_1.default.createElement(FilterInput, { key: filter.name, ...(0, create_filter_component_props_1.createFilterComponentProps)(props.gridName, filter, props.state, props.actions) }));
23
20
  })));
24
21
  }
25
22
  exports.Filters = Filters;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@uxf/data-grid",
3
- "version": "11.12.0",
3
+ "version": "11.13.0",
4
4
  "description": "UXF DataGrid",
5
5
  "homepage": "https://gitlab.com/uxf-npm/data-grid#readme",
6
6
  "main": "index.js",
@@ -31,7 +31,7 @@
31
31
  "typecheck": "tsc --noEmit --skipLibCheck"
32
32
  },
33
33
  "dependencies": {
34
- "@uxf/ui": "11.12.0",
34
+ "@uxf/ui": "11.13.0",
35
35
  "dayjs": "1.11.10",
36
36
  "fast-glob": "3.3.2",
37
37
  "qs": "6.11.2",
package/styles.css CHANGED
@@ -165,7 +165,8 @@
165
165
  }
166
166
 
167
167
  &__filter {
168
- &--date {
168
+ &--date,
169
+ &--datetime {
169
170
  display: grid;
170
171
  gap: theme("spacing.4");
171
172
  grid-template-columns: repeat(2, 1fr);
package/types/api.d.ts CHANGED
@@ -3,7 +3,6 @@ export type ResultItem = any;
3
3
  export interface RequestFilter<T = any> {
4
4
  name: string;
5
5
  value: T;
6
- label?: string;
7
6
  op?: string;
8
7
  }
9
8
  export interface Request {
@@ -1,5 +1,4 @@
1
1
  import { ComponentType, FC } from "react";
2
- import { RequestFilter } from "./api";
3
2
  import { BaseGridType, Columns, Filter } from "./schema";
4
3
  export interface ActionCellProps<R> {
5
4
  row: R;
@@ -17,10 +16,11 @@ export type BodyCellComponents<C, R> = {
17
16
  [key: string]: BodyCellComponent<C, R>;
18
17
  default: BodyCellComponent<C, R>;
19
18
  };
20
- export interface FilterProps<F extends Filter<any, any>, T> {
19
+ export interface FilterProps<StateValue> {
21
20
  gridName?: string;
22
- filter: F;
23
- value: RequestFilter<T>;
24
- onFilter: (value: RequestFilter<T>) => void;
21
+ filter: Filter;
22
+ value: StateValue;
23
+ op?: string;
24
+ onChange: (value: StateValue | undefined, op?: string) => void;
25
25
  onClear: () => void;
26
26
  }
package/types/schema.d.ts CHANGED
@@ -37,19 +37,17 @@ export interface FilterOption {
37
37
  id: string | number;
38
38
  label: string;
39
39
  }
40
- export interface Filter<N, T> {
41
- name: N;
40
+ export interface Filter {
41
+ name: string;
42
42
  label: string;
43
- type?: T;
43
+ type: string;
44
44
  options?: FilterOption[];
45
+ autocomplete?: string | null;
45
46
  }
46
- export type Filters<F extends BaseGridType["filters"]> = {
47
- [K in keyof F]: Filter<K, F[K]>;
48
- }[keyof F];
49
47
  export interface Schema<GritType extends BaseGridType> {
50
48
  name?: string;
51
49
  columns: Columns<GritType["columns"]>[];
52
- filters: Filters<GritType["filters"]>[];
50
+ filters: Filter[];
53
51
  tabs?: Tab[];
54
52
  s: DataGridSort;
55
53
  perPage: number;
@@ -1,10 +1,10 @@
1
1
  import { Dispatch } from "react";
2
- import { RequestFilter } from "../types/api";
3
2
  import { Tab } from "../types/schema";
4
3
  export declare function createActions(dispatch: Dispatch<any>): {
5
4
  changePage: (page: number) => void;
6
5
  changePerPage: (perPage: number) => void;
7
- filter: (filterValue: RequestFilter) => void;
6
+ filter: (name: string, value: any, op?: string) => void;
7
+ filterClear: (name: string) => void;
8
8
  sort: (columnName: string, direction: string) => void;
9
9
  sortClear: () => void;
10
10
  search: (search: string) => void;
@@ -5,7 +5,8 @@ function createActions(dispatch) {
5
5
  return {
6
6
  changePage: (page) => dispatch({ type: "CHANGE_PAGE", page }),
7
7
  changePerPage: (perPage) => dispatch({ type: "CHANGE_PER_PAGE", perPage }),
8
- filter: (filterValue) => dispatch({ type: "FILTER", filterValue }),
8
+ filter: (name, value, op) => dispatch({ type: "FILTER", name, value, op }),
9
+ filterClear: (name) => dispatch({ type: "FILTER_CLEAR", name }),
9
10
  sort: (columnName, direction) => dispatch({ type: "SORT", columnName, direction }),
10
11
  sortClear: () => dispatch({ type: "SORT_CLEAR" }),
11
12
  search: (search) => dispatch({ type: "FULLTEXT", search }),
@@ -13,7 +13,8 @@ export declare function useDataGridControl<T extends BaseGridType>(config: UseDa
13
13
  actions: {
14
14
  changePage: (page: number) => void;
15
15
  changePerPage: (perPage: number) => void;
16
- filter: (filterValue: import("../types/api").RequestFilter<any>) => void;
16
+ filter: (name: string, value: any, op?: string | undefined) => void;
17
+ filterClear: (name: string) => void;
17
18
  sort: (columnName: string, direction: string) => void;
18
19
  sortClear: () => void;
19
20
  search: (search: string) => void;
@@ -1,8 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.dataGridLoader = void 0;
4
- const qs_1 = require("qs");
5
- const dataGridLoader = (gridName, request) => {
6
- return fetch(`/api/cms/datagrid/${gridName}?${(0, qs_1.stringify)(request)}`).then((response) => response.json());
7
- };
4
+ const _api_1 = require("../_api");
5
+ const dataGridLoader = (gridName, request) => (0, _api_1.dataGridGetResult)(gridName !== null && gridName !== void 0 ? gridName : "", request);
8
6
  exports.dataGridLoader = dataGridLoader;
@@ -0,0 +1,4 @@
1
+ import { FilterProps } from "../types/components";
2
+ import { Filter } from "../types/schema";
3
+ import { DataGridControl } from "../use-data-grid-control";
4
+ export declare function createFilterComponentProps(gridName: string | undefined, filter: Filter, state: DataGridControl["state"], actions: DataGridControl["actions"]): FilterProps<any>;
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createFilterComponentProps = void 0;
4
+ const is_nil_1 = require("@uxf/core/utils/is-nil");
5
+ function createFilterComponentProps(gridName, filter, state, actions) {
6
+ const requestFilter = state.request.f.find((f) => f.name === filter.name);
7
+ return {
8
+ filter,
9
+ value: requestFilter === null || requestFilter === void 0 ? void 0 : requestFilter.value,
10
+ op: requestFilter === null || requestFilter === void 0 ? void 0 : requestFilter.op,
11
+ gridName,
12
+ onChange: (value, op) => (0, is_nil_1.isNil)(value) ? actions.filterClear(filter.name) : actions.filter(filter.name, value, op),
13
+ onClear: () => actions.filterClear(filter.name),
14
+ };
15
+ }
16
+ exports.createFilterComponentProps = createFilterComponentProps;
@@ -1,45 +0,0 @@
1
- import { DataGridSortDir, RequestFilter, Response, Tab } from "../types";
2
- export declare const dataGridActions: {
3
- filter: (filterValue: RequestFilter) => {
4
- type: string;
5
- filterValue: RequestFilter<any>;
6
- };
7
- filterReset: () => {
8
- type: string;
9
- };
10
- changePage: (page: number) => {
11
- type: string;
12
- page: number;
13
- };
14
- changePerPage: (perPage: number) => {
15
- type: string;
16
- perPage: number;
17
- };
18
- changeTab: (tab: Tab) => {
19
- type: string;
20
- tab: Tab;
21
- };
22
- reload: () => {
23
- type: string;
24
- };
25
- reloadDone: (response: Response) => {
26
- type: string;
27
- response: Response;
28
- };
29
- reloadFailed: (error: any) => {
30
- type: string;
31
- error: any;
32
- };
33
- search: (term: string) => {
34
- type: string;
35
- search: string;
36
- };
37
- sort: (columnName: string, direction: DataGridSortDir) => {
38
- type: string;
39
- columnName: string;
40
- direction: DataGridSortDir;
41
- };
42
- sortClear: () => {
43
- type: string;
44
- };
45
- };
package/_store/actions.js DELETED
@@ -1,47 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.dataGridActions = void 0;
4
- exports.dataGridActions = {
5
- filter: (filterValue) => ({
6
- type: "FILTER",
7
- filterValue,
8
- }),
9
- filterReset: () => ({
10
- type: "FILTER_RESET",
11
- }),
12
- changePage: (page) => ({
13
- type: "CHANGE_PAGE",
14
- page,
15
- }),
16
- changePerPage: (perPage) => ({
17
- type: "CHANGE_PER_PAGE",
18
- perPage,
19
- }),
20
- changeTab: (tab) => ({
21
- type: "CHANGE_TAB",
22
- tab,
23
- }),
24
- reload: () => ({
25
- type: "RELOAD",
26
- }),
27
- reloadDone: (response) => ({
28
- type: "RELOAD_DONE",
29
- response,
30
- }),
31
- reloadFailed: (error) => ({
32
- type: "RELOAD_FAILED",
33
- error,
34
- }),
35
- search: (term) => ({
36
- type: "FULLTEXT",
37
- search: term,
38
- }),
39
- sort: (columnName, direction) => ({
40
- type: "SORT",
41
- columnName,
42
- direction,
43
- }),
44
- sortClear: () => ({
45
- type: "SORT_CLEAR",
46
- }),
47
- };
@@ -1,3 +0,0 @@
1
- import { FilterHandler } from "./types";
2
- declare const BoolFilterHandler: FilterHandler;
3
- export default BoolFilterHandler;
@@ -1,20 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const chip_1 = require("@uxf/ui/chip");
7
- const select_1 = require("@uxf/ui/select");
8
- const react_1 = __importDefault(require("react"));
9
- const BoolFilterHandler = {
10
- input: (props) => (react_1.default.createElement(select_1.Select, { options: [
11
- { id: "", label: "Nerozhoduje" },
12
- { id: 1, label: "Ano" },
13
- { id: 0, label: "Ne" },
14
- ], label: props.filter.label, value: props.value.value, onChange: (value) => props.onFilter({ ...props.value, value }), isClearable: true, name: props.filter.name })),
15
- listItem: (props) => (react_1.default.createElement(chip_1.Chip, { onClose: props.onClear },
16
- props.filter.label,
17
- ":\u00A0",
18
- props.value.value ? "Ano" : "Ne")),
19
- };
20
- exports.default = BoolFilterHandler;
@@ -1,3 +0,0 @@
1
- import { FilterHandler } from "./types";
2
- declare const BooleanFilterHandler: FilterHandler;
3
- export default BooleanFilterHandler;
@@ -1,16 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const checkbox_input_1 = require("@uxf/ui/checkbox-input");
7
- const chip_1 = require("@uxf/ui/chip");
8
- const react_1 = __importDefault(require("react"));
9
- const BooleanFilterHandler = {
10
- input: (props) => (react_1.default.createElement(checkbox_input_1.CheckboxInput, { label: props.filter.label, value: props.value.value, onChange: (value) => props.onFilter({ ...props.value, value: value === true ? value : undefined }), name: props.filter.name })),
11
- listItem: (props) => (react_1.default.createElement(chip_1.Chip, { onClose: props.onClear },
12
- props.filter.label,
13
- ":\u00A0",
14
- props.value.value ? "Ano" : "Ne")),
15
- };
16
- exports.default = BooleanFilterHandler;
@@ -1,3 +0,0 @@
1
- import { FilterHandler } from "./types";
2
- declare const IntervalFilterHandler: FilterHandler;
3
- export default IntervalFilterHandler;
@@ -1,50 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const chip_1 = require("@uxf/ui/chip");
7
- const text_input_1 = require("@uxf/ui/text-input");
8
- const react_1 = __importDefault(require("react"));
9
- const IntervalFilterHandler = {
10
- input: (props) => {
11
- const initializedValue = props.value.value &&
12
- typeof props.value.value.from !== "undefined" &&
13
- typeof props.value.value.to !== "undefined"
14
- ? props.value
15
- : { name: props.filter.name, value: { from: null, to: null } };
16
- return (react_1.default.createElement("div", { key: props.filter.name },
17
- react_1.default.createElement("div", { className: "uxf-data-grid__filter uxf-data-grid__filter--interval" },
18
- react_1.default.createElement(text_input_1.TextInput, { label: `${props.filter.label} od:`, value: props.value.value ? props.value.value.from : "", onChange: (val) => {
19
- return props.onFilter({
20
- ...initializedValue,
21
- value: {
22
- ...initializedValue.value,
23
- from: val ? parseInt(val, 10) : null,
24
- },
25
- });
26
- }, name: props.filter.name }),
27
- react_1.default.createElement("div", { className: "uxf-data-grid__filter-gap" }, "\u2013"),
28
- react_1.default.createElement(text_input_1.TextInput, { label: `${props.filter.label} do:`, value: props.value.value ? props.value.value.to : "", onChange: (val) => {
29
- return props.onFilter({
30
- ...initializedValue,
31
- value: {
32
- ...initializedValue.value,
33
- to: val ? parseInt(val, 10) : null,
34
- },
35
- });
36
- }, name: props.filter.name }))));
37
- },
38
- listItem: (props) => {
39
- if (!props.value.value) {
40
- return null;
41
- }
42
- const { from, to } = props.value.value;
43
- const formatInterval = [from ? "od " + from : "", to ? "do " + to : ""];
44
- return from || to ? (react_1.default.createElement(chip_1.Chip, { onClose: () => props.onFilter({ ...props.value, value: undefined }) },
45
- props.filter.label,
46
- " ",
47
- formatInterval.filter((i) => !!i).join(" "))) : null;
48
- },
49
- };
50
- exports.default = IntervalFilterHandler;
@@ -1,3 +0,0 @@
1
- import { FilterHandler } from "./types";
2
- declare const SelectFilterHandler: FilterHandler;
3
- export default SelectFilterHandler;
@@ -1,3 +0,0 @@
1
- import { FilterHandler } from "./types";
2
- declare const TextFilterHandler: FilterHandler;
3
- export default TextFilterHandler;