@servicetitan/table 31.2.0 → 32.0.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.
- package/dist/demo/column-hiding/index.js +1 -0
- package/dist/demo/column-hiding/index.js.map +1 -1
- package/dist/demo/column-hiding/product.js +7 -6
- package/dist/demo/column-hiding/product.js.map +1 -1
- package/dist/demo/column-hiding/products.js +12 -11
- package/dist/demo/column-hiding/products.js.map +1 -1
- package/dist/demo/column-hiding/table.js +126 -32
- package/dist/demo/column-hiding/table.js.map +1 -1
- package/dist/demo/column-hiding/table.store.js +30 -27
- package/dist/demo/column-hiding/table.store.js.map +1 -1
- package/dist/demo/filters/async-select-filter.js +59 -12
- package/dist/demo/filters/async-select-filter.js.map +1 -1
- package/dist/demo/filters/categories.js +20 -16
- package/dist/demo/filters/categories.js.map +1 -1
- package/dist/demo/filters/multiselect-filter.js +37 -5
- package/dist/demo/filters/multiselect-filter.js.map +1 -1
- package/dist/demo/filters/range-filter.js +104 -10
- package/dist/demo/filters/range-filter.js.map +1 -1
- package/dist/demo/filters/select-filter.js +139 -41
- package/dist/demo/filters/select-filter.js.map +1 -1
- package/dist/demo/filters/single-select-filter.js +109 -18
- package/dist/demo/filters/single-select-filter.js.map +1 -1
- package/dist/demo/filters/table.store.js +77 -86
- package/dist/demo/filters/table.store.js.map +1 -1
- package/dist/demo/footer-page-size/index.js +1 -0
- package/dist/demo/footer-page-size/index.js.map +1 -1
- package/dist/demo/footer-page-size/table.js +82 -6
- package/dist/demo/footer-page-size/table.js.map +1 -1
- package/dist/demo/index.js +1 -0
- package/dist/demo/index.js.map +1 -1
- package/dist/demo/master-detail/detail-table.js +41 -9
- package/dist/demo/master-detail/detail-table.js.map +1 -1
- package/dist/demo/master-detail/detail-table.store.js +60 -56
- package/dist/demo/master-detail/detail-table.store.js.map +1 -1
- package/dist/demo/master-detail/index.js +1 -0
- package/dist/demo/master-detail/index.js.map +1 -1
- package/dist/demo/master-detail/master-table.store.js +65 -61
- package/dist/demo/master-detail/master-table.store.js.map +1 -1
- package/dist/demo/master-detail/product-detail.js +2 -1
- package/dist/demo/master-detail/product-detail.js.map +1 -1
- package/dist/demo/master-detail/product-details.js +10 -9
- package/dist/demo/master-detail/product-details.js.map +1 -1
- package/dist/demo/master-detail/product.js +7 -6
- package/dist/demo/master-detail/product.js.map +1 -1
- package/dist/demo/master-detail/products.js +12 -11
- package/dist/demo/master-detail/products.js.map +1 -1
- package/dist/demo/master-detail/table-master-detail.js +39 -8
- package/dist/demo/master-detail/table-master-detail.js.map +1 -1
- package/dist/demo/overview/actions-cell.js +47 -10
- package/dist/demo/overview/actions-cell.js.map +1 -1
- package/dist/demo/overview/index.js +1 -0
- package/dist/demo/overview/index.js.map +1 -1
- package/dist/demo/overview/product.js +7 -6
- package/dist/demo/overview/product.js.map +1 -1
- package/dist/demo/overview/products.js +15 -14
- package/dist/demo/overview/products.js.map +1 -1
- package/dist/demo/overview/table.js +176 -21
- package/dist/demo/overview/table.js.map +1 -1
- package/dist/demo/overview/table.store.js +45 -51
- package/dist/demo/overview/table.store.js.map +1 -1
- package/dist/demo/row-details/index.js +1 -0
- package/dist/demo/row-details/index.js.map +1 -1
- package/dist/demo/row-details/row-details-table.js +52 -5
- package/dist/demo/row-details/row-details-table.js.map +1 -1
- package/dist/demo/row-details/row-details-table.store.js +27 -19
- package/dist/demo/row-details/row-details-table.store.js.map +1 -1
- package/dist/demo/state-caching/beverages.js +11 -10
- package/dist/demo/state-caching/beverages.js.map +1 -1
- package/dist/demo/state-caching/index.js +1 -0
- package/dist/demo/state-caching/index.js.map +1 -1
- package/dist/demo/state-caching/product.js +2 -1
- package/dist/demo/state-caching/product.js.map +1 -1
- package/dist/demo/state-caching/products.js +12 -11
- package/dist/demo/state-caching/products.js.map +1 -1
- package/dist/demo/state-caching/state-caching-table.js +44 -3
- package/dist/demo/state-caching/state-caching-table.js.map +1 -1
- package/dist/demo/state-caching/state-caching-table.store.js +42 -54
- package/dist/demo/state-caching/state-caching-table.store.js.map +1 -1
- package/dist/details/expand-column.js +31 -7
- package/dist/details/expand-column.js.map +1 -1
- package/dist/details/index.js +1 -0
- package/dist/details/index.js.map +1 -1
- package/dist/editable-cell/boolean-editable-cell.js +15 -4
- package/dist/editable-cell/boolean-editable-cell.js.map +1 -1
- package/dist/editable-cell/get-action-cell.js +14 -7
- package/dist/editable-cell/get-action-cell.js.map +1 -1
- package/dist/editable-cell/get-editable-cell.js +16 -8
- package/dist/editable-cell/get-editable-cell.js.map +1 -1
- package/dist/editable-cell/get-select-editable-cell.js +19 -5
- package/dist/editable-cell/get-select-editable-cell.js.map +1 -1
- package/dist/editable-cell/index.js +1 -0
- package/dist/editable-cell/index.js.map +1 -1
- package/dist/editable-cell/text-editable-cell.js +23 -5
- package/dist/editable-cell/text-editable-cell.js.map +1 -1
- package/dist/export/export.js +38 -1
- package/dist/export/export.js.map +1 -1
- package/dist/export/export.module.css.d.ts +3 -0
- package/dist/export/index.js +1 -0
- package/dist/export/index.js.map +1 -1
- package/dist/filters/async-select/async-select-filter.js +167 -132
- package/dist/filters/async-select/async-select-filter.js.map +1 -1
- package/dist/filters/column-menu-filters.js +39 -8
- package/dist/filters/column-menu-filters.js.map +1 -1
- package/dist/filters/datetime-filter/datetime-filter.js +73 -50
- package/dist/filters/datetime-filter/datetime-filter.js.map +1 -1
- package/dist/filters/field-values-filter.js +80 -72
- package/dist/filters/field-values-filter.js.map +1 -1
- package/dist/filters/index.js +1 -0
- package/dist/filters/index.js.map +1 -1
- package/dist/filters/multiselect-filter/multiselect-filter.js +77 -73
- package/dist/filters/multiselect-filter/multiselect-filter.js.map +1 -1
- package/dist/filters/numeric-filter-extended/numeric-extended-operators.js +10 -3
- package/dist/filters/numeric-filter-extended/numeric-extended-operators.js.map +1 -1
- package/dist/filters/numeric-filter-extended/numeric-filter-extended.js +39 -16
- package/dist/filters/numeric-filter-extended/numeric-filter-extended.js.map +1 -1
- package/dist/filters/range-filter/range-filter.js +76 -72
- package/dist/filters/range-filter/range-filter.js.map +1 -1
- package/dist/filters/select-filter/object-search.js +4 -3
- package/dist/filters/select-filter/object-search.js.map +1 -1
- package/dist/filters/select-filter/operators.js +6 -5
- package/dist/filters/select-filter/operators.js.map +1 -1
- package/dist/filters/select-filter/select-filter.js +180 -145
- package/dist/filters/select-filter/select-filter.js.map +1 -1
- package/dist/filters/select-filter/value-getter.js +2 -1
- package/dist/filters/select-filter/value-getter.js.map +1 -1
- package/dist/filters/single-select/single-select-filter.js +29 -15
- package/dist/filters/single-select/single-select-filter.js.map +1 -1
- package/dist/filters/standard-filter-with-multiselect/filter-cell-ext.js +114 -67
- package/dist/filters/standard-filter-with-multiselect/filter-cell-ext.js.map +1 -1
- package/dist/filters/standard-filter-with-multiselect/filter-cell-ext.module.css.d.ts +7 -0
- package/dist/filters/standard-filter-with-multiselect/multiselect-operators.js +10 -3
- package/dist/filters/standard-filter-with-multiselect/multiselect-operators.js.map +1 -1
- package/dist/filters/standard-filter-with-multiselect/standard-filter-with-multiselect.js +77 -55
- package/dist/filters/standard-filter-with-multiselect/standard-filter-with-multiselect.js.map +1 -1
- package/dist/filters/standard-filter-with-multiselect/table-column-menu-filter-ext.js +23 -10
- package/dist/filters/standard-filter-with-multiselect/table-column-menu-filter-ext.js.map +1 -1
- package/dist/filters/time-filter/time-filter.js +63 -49
- package/dist/filters/time-filter/time-filter.js.map +1 -1
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/dist/select-cell/index.js +1 -0
- package/dist/select-cell/index.js.map +1 -1
- package/dist/select-cell/select-cell.js +36 -11
- package/dist/select-cell/select-cell.js.map +1 -1
- package/dist/select-cell/select-cell.module.css.d.ts +3 -0
- package/dist/table-state.js +479 -660
- package/dist/table-state.js.map +1 -1
- package/dist/table.js +235 -250
- package/dist/table.js.map +1 -1
- package/dist/table.module.css.d.ts +5 -0
- package/dist/use-observing-table-state/demo/components/use-observing-table-state-demo.js +97 -5
- package/dist/use-observing-table-state/demo/components/use-observing-table-state-demo.js.map +1 -1
- package/dist/use-observing-table-state/demo/stores/use-observing-table-state-demo.store.js +71 -97
- package/dist/use-observing-table-state/demo/stores/use-observing-table-state-demo.store.js.map +1 -1
- package/dist/use-observing-table-state/index.js +1 -0
- package/dist/use-observing-table-state/index.js.map +1 -1
- package/dist/use-observing-table-state/use-observing-table-state.js +26 -20
- package/dist/use-observing-table-state/use-observing-table-state.js.map +1 -1
- package/dist/utils/filters.js +14 -9
- package/dist/utils/filters.js.map +1 -1
- package/dist/utils/use-td-props.js +3 -2
- package/dist/utils/use-td-props.js.map +1 -1
- package/package.json +13 -13
- package/dist/filters/async-select/async-select-filter.stories.js +0 -7
- package/dist/filters/async-select/async-select-filter.stories.js.map +0 -1
- package/dist/filters/multiselect-filter/multiselect-filter.stories.js +0 -7
- package/dist/filters/multiselect-filter/multiselect-filter.stories.js.map +0 -1
- package/dist/filters/range-filter/range-filter.stories.js +0 -9
- package/dist/filters/range-filter/range-filter.stories.js.map +0 -1
- package/dist/filters/select-filter/__tests__/object-search.test.js +0 -28
- package/dist/filters/select-filter/__tests__/object-search.test.js.map +0 -1
- package/dist/filters/select-filter/select-filter.stories.js +0 -8
- package/dist/filters/select-filter/select-filter.stories.js.map +0 -1
- package/dist/filters/single-select/single-select-filter.stories.js +0 -8
- package/dist/filters/single-select/single-select-filter.stories.js.map +0 -1
- package/dist/table.stories.js +0 -12
- package/dist/table.stories.js.map +0 -1
- package/dist/use-observing-table-state/use-observing-table-state.stories.js +0 -11
- package/dist/use-observing-table-state/use-observing-table-state.stories.js.map +0 -1
- package/dist/utils/__tests__/filters.test.js +0 -24
- package/dist/utils/__tests__/filters.test.js.map +0 -1
@@ -1,100 +1,103 @@
|
|
1
|
+
function _define_property(obj, key, value) {
|
2
|
+
if (key in obj) {
|
3
|
+
Object.defineProperty(obj, key, {
|
4
|
+
value: value,
|
5
|
+
enumerable: true,
|
6
|
+
configurable: true,
|
7
|
+
writable: true
|
8
|
+
});
|
9
|
+
} else {
|
10
|
+
obj[key] = value;
|
11
|
+
}
|
12
|
+
return obj;
|
13
|
+
}
|
1
14
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
2
15
|
import { useState, useEffect, Component, Fragment } from 'react';
|
3
16
|
import { DatePicker, TimePicker } from '@progress/kendo-react-dateinputs';
|
4
17
|
import { NumericTextBox } from '@progress/kendo-react-inputs';
|
5
18
|
import moment from 'moment';
|
6
19
|
import { renderCustomColumnMenuFilter } from '../column-menu-filters';
|
7
|
-
const NoSSR = ({ children })
|
20
|
+
const NoSSR = ({ children })=>{
|
8
21
|
const [isMounted, setIsMounted] = useState(false);
|
9
|
-
useEffect(()
|
22
|
+
useEffect(()=>{
|
10
23
|
setIsMounted(true);
|
11
24
|
}, []);
|
12
25
|
return isMounted ? children : null;
|
13
26
|
};
|
14
27
|
class RangeFilterCellBase extends Component {
|
15
|
-
|
16
|
-
|
17
|
-
Object.defineProperty(this, "controlClass", {
|
18
|
-
enumerable: true,
|
19
|
-
configurable: true,
|
20
|
-
writable: true,
|
21
|
-
value: controlClass
|
22
|
-
});
|
23
|
-
Object.defineProperty(this, "controlProps", {
|
24
|
-
enumerable: true,
|
25
|
-
configurable: true,
|
26
|
-
writable: true,
|
27
|
-
value: controlProps
|
28
|
-
});
|
29
|
-
Object.defineProperty(this, "minValueBox", {
|
30
|
-
enumerable: true,
|
31
|
-
configurable: true,
|
32
|
-
writable: true,
|
33
|
-
value: null
|
34
|
-
});
|
35
|
-
Object.defineProperty(this, "maxValueBox", {
|
36
|
-
enumerable: true,
|
37
|
-
configurable: true,
|
38
|
-
writable: true,
|
39
|
-
value: null
|
40
|
-
});
|
41
|
-
Object.defineProperty(this, "onChange", {
|
42
|
-
enumerable: true,
|
43
|
-
configurable: true,
|
44
|
-
writable: true,
|
45
|
-
value: (ev) => {
|
46
|
-
if (!this.minValueBox || !this.maxValueBox) {
|
47
|
-
return;
|
48
|
-
}
|
49
|
-
this.props.onChange({
|
50
|
-
value: { min: this.minValueBox.value, max: this.maxValueBox.value },
|
51
|
-
operator: this.inRange,
|
52
|
-
syntheticEvent: ev.syntheticEvent,
|
53
|
-
});
|
54
|
-
}
|
55
|
-
});
|
56
|
-
Object.defineProperty(this, "setMinValueRef", {
|
57
|
-
enumerable: true,
|
58
|
-
configurable: true,
|
59
|
-
writable: true,
|
60
|
-
value: (el) => {
|
61
|
-
this.minValueBox = el;
|
62
|
-
}
|
63
|
-
});
|
64
|
-
Object.defineProperty(this, "setMaxValueRef", {
|
65
|
-
enumerable: true,
|
66
|
-
configurable: true,
|
67
|
-
writable: true,
|
68
|
-
value: (el) => {
|
69
|
-
this.maxValueBox = el;
|
70
|
-
}
|
71
|
-
});
|
72
|
-
}
|
73
|
-
/** override this if additional type support needed */
|
74
|
-
inRange(current, values) {
|
75
|
-
return ((values.min === null || values.min === undefined || current >= values.min) &&
|
76
|
-
(values.max === null || values.max === undefined || current <= values.max));
|
28
|
+
/** override this if additional type support needed */ inRange(current, values) {
|
29
|
+
return (values.min === null || values.min === undefined || current >= values.min) && (values.max === null || values.max === undefined || current <= values.max);
|
77
30
|
}
|
78
31
|
render() {
|
79
32
|
const filterValue = this.props.value;
|
80
33
|
const Control = this.controlClass;
|
81
|
-
return
|
34
|
+
return /*#__PURE__*/ _jsxs(Fragment, {
|
35
|
+
children: [
|
36
|
+
/*#__PURE__*/ _jsx("span", {
|
37
|
+
className: "k-widget m-b-1 d-b",
|
38
|
+
children: "From:"
|
39
|
+
}),
|
40
|
+
/*#__PURE__*/ _jsx("span", {
|
41
|
+
children: /*#__PURE__*/ _jsx(NoSSR, {
|
42
|
+
children: /*#__PURE__*/ _jsx(Control, {
|
43
|
+
...this.controlProps,
|
44
|
+
value: filterValue === null || filterValue === void 0 ? void 0 : filterValue.min,
|
45
|
+
ref: this.setMinValueRef,
|
46
|
+
onChange: this.onChange
|
47
|
+
})
|
48
|
+
})
|
49
|
+
}),
|
50
|
+
/*#__PURE__*/ _jsx("span", {
|
51
|
+
className: "k-widget m-t-1 m-b-1 d-b",
|
52
|
+
children: "To:"
|
53
|
+
}),
|
54
|
+
/*#__PURE__*/ _jsx("span", {
|
55
|
+
children: /*#__PURE__*/ _jsx(NoSSR, {
|
56
|
+
children: /*#__PURE__*/ _jsx(Control, {
|
57
|
+
...this.controlProps,
|
58
|
+
value: filterValue === null || filterValue === void 0 ? void 0 : filterValue.max,
|
59
|
+
ref: this.setMaxValueRef,
|
60
|
+
onChange: this.onChange
|
61
|
+
})
|
62
|
+
})
|
63
|
+
})
|
64
|
+
]
|
65
|
+
});
|
66
|
+
}
|
67
|
+
constructor(props, controlClass, controlProps = {}){
|
68
|
+
super(props), _define_property(this, "controlClass", void 0), _define_property(this, "controlProps", void 0), _define_property(this, "minValueBox", void 0), _define_property(this, "maxValueBox", void 0), _define_property(this, "onChange", void 0), _define_property(this, "setMinValueRef", void 0), _define_property(this, "setMaxValueRef", void 0), this.controlClass = controlClass, this.controlProps = controlProps, this.minValueBox = null, this.maxValueBox = null, this.onChange = (ev)=>{
|
69
|
+
if (!this.minValueBox || !this.maxValueBox) {
|
70
|
+
return;
|
71
|
+
}
|
72
|
+
this.props.onChange({
|
73
|
+
value: {
|
74
|
+
min: this.minValueBox.value,
|
75
|
+
max: this.maxValueBox.value
|
76
|
+
},
|
77
|
+
operator: this.inRange,
|
78
|
+
syntheticEvent: ev.syntheticEvent
|
79
|
+
});
|
80
|
+
}, this.setMinValueRef = (el)=>{
|
81
|
+
this.minValueBox = el;
|
82
|
+
}, this.setMaxValueRef = (el)=>{
|
83
|
+
this.maxValueBox = el;
|
84
|
+
};
|
82
85
|
}
|
83
86
|
}
|
84
87
|
class NumericRangeFilterCell extends RangeFilterCellBase {
|
85
|
-
constructor(props)
|
88
|
+
constructor(props){
|
86
89
|
super(props, NumericTextBox);
|
87
90
|
}
|
88
91
|
}
|
89
92
|
class CurrencyRangeFilterCell extends RangeFilterCellBase {
|
90
|
-
constructor(props)
|
93
|
+
constructor(props){
|
91
94
|
super(props, NumericTextBox, {
|
92
|
-
format: 'c'
|
95
|
+
format: 'c'
|
93
96
|
});
|
94
97
|
}
|
95
98
|
}
|
96
99
|
class DateRangeFilterCell extends RangeFilterCellBase {
|
97
|
-
constructor(props)
|
100
|
+
constructor(props){
|
98
101
|
super(props, DatePicker);
|
99
102
|
}
|
100
103
|
}
|
@@ -102,15 +105,16 @@ function getTimeString(date) {
|
|
102
105
|
return `${date.getHours()}:${date.getMinutes()}`;
|
103
106
|
}
|
104
107
|
class TimeRangeFilterCell extends RangeFilterCellBase {
|
105
|
-
constructor(props) {
|
106
|
-
super(props, TimePicker);
|
107
|
-
}
|
108
108
|
inRange(current, values) {
|
109
109
|
return moment(getTimeString(current), 'h:mma').isBetween(moment(getTimeString(values.min || current), 'h:mma'), moment(getTimeString(values.max || current), 'h:mma'), 'minutes', '[]');
|
110
110
|
}
|
111
|
+
constructor(props){
|
112
|
+
super(props, TimePicker);
|
113
|
+
}
|
111
114
|
}
|
112
115
|
export const NumericRangeColumnMenuFilter = renderCustomColumnMenuFilter(NumericRangeFilterCell);
|
113
116
|
export const CurrencyRangeColumnMenuFilter = renderCustomColumnMenuFilter(CurrencyRangeFilterCell);
|
114
117
|
export const DateRangeColumnMenuFilter = renderCustomColumnMenuFilter(DateRangeFilterCell);
|
115
118
|
export const TimeRangeColumnMenuFilter = renderCustomColumnMenuFilter(TimeRangeFilterCell);
|
119
|
+
|
116
120
|
//# sourceMappingURL=range-filter.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"
|
1
|
+
{"version":3,"sources":["../../../src/filters/range-filter/range-filter.tsx"],"sourcesContent":["import { useState, useEffect, Component, Fragment, ComponentType, FC } from 'react';\nimport { DatePicker, TimePicker } from '@progress/kendo-react-dateinputs';\nimport { TableFilterCellProps } from '@servicetitan/design-system';\nimport { NumericTextBox, NumericTextBoxProps } from '@progress/kendo-react-inputs';\nimport moment from 'moment';\n\nimport { renderCustomColumnMenuFilter } from '../column-menu-filters';\n\n// TODO: remove when Kendo fix the propType bug of DatePicker\ntype ComponentClassWithBrokenPropTypes<P> = ComponentType<P> & { defaultProps?: any };\n\ninterface Range<T> {\n min: T;\n max: T;\n}\n\ninterface BaseControlProps<T> {\n value?: T | null;\n width?: number | string;\n onChange?: (ev: any) => void;\n}\n\ntype RangeControlProps<T, TProps> = BaseControlProps<T> & TProps;\n\ntype RangeControl<T, TProps> = Component<RangeControlProps<T, TProps>> & { value: T | null };\n\nconst NoSSR: FC<{ children: JSX.Element }> = ({ children }) => {\n const [isMounted, setIsMounted] = useState(false);\n\n useEffect(() => {\n setIsMounted(true);\n }, []);\n\n return isMounted ? children : null;\n};\n\nclass RangeFilterCellBase<T, TProps = void> extends Component<TableFilterCellProps> {\n private minValueBox: RangeControl<T, TProps> | null = null;\n private maxValueBox: RangeControl<T, TProps> | null = null;\n\n constructor(\n props: TableFilterCellProps,\n private controlClass: ComponentClassWithBrokenPropTypes<RangeControlProps<T, TProps>>,\n private controlProps: TProps = {} as any\n ) {\n super(props);\n }\n\n /** override this if additional type support needed */\n inRange(current: T, values: Range<T>) {\n return (\n (values.min === null || values.min === undefined || current >= values.min) &&\n (values.max === null || values.max === undefined || current <= values.max)\n );\n }\n\n onChange = (ev: any) => {\n if (!this.minValueBox || !this.maxValueBox) {\n return;\n }\n this.props.onChange({\n value: { min: this.minValueBox.value, max: this.maxValueBox.value },\n operator: this.inRange,\n syntheticEvent: ev.syntheticEvent,\n });\n };\n\n render() {\n const filterValue = this.props.value;\n const Control = this.controlClass;\n return (\n <Fragment>\n <span className=\"k-widget m-b-1 d-b\">From:</span>\n <span>\n {/* KendoNumericTextBox uses useLayoutEffect which is incompatible with SSR */}\n <NoSSR>\n <Control\n {...this.controlProps}\n value={filterValue?.min}\n ref={this.setMinValueRef}\n onChange={this.onChange}\n />\n </NoSSR>\n </span>\n <span className=\"k-widget m-t-1 m-b-1 d-b\">To:</span>\n <span>\n {/* KendoNumericTextBox uses useLayoutEffect which is incompatible with SSR */}\n <NoSSR>\n <Control\n {...this.controlProps}\n value={filterValue?.max}\n ref={this.setMaxValueRef}\n onChange={this.onChange}\n />\n </NoSSR>\n </span>\n </Fragment>\n );\n }\n\n protected setMinValueRef = (el: RangeControl<T, TProps> | null) => {\n this.minValueBox = el;\n };\n\n protected setMaxValueRef = (el: RangeControl<T, TProps> | null) => {\n this.maxValueBox = el;\n };\n}\n\nclass NumericRangeFilterCell extends RangeFilterCellBase<number> {\n constructor(props: TableFilterCellProps) {\n super(props, NumericTextBox);\n }\n}\n\nclass CurrencyRangeFilterCell extends RangeFilterCellBase<number, NumericTextBoxProps> {\n constructor(props: TableFilterCellProps) {\n super(props, NumericTextBox, {\n format: 'c',\n });\n }\n}\n\nclass DateRangeFilterCell extends RangeFilterCellBase<Date> {\n constructor(props: TableFilterCellProps) {\n super(props, DatePicker);\n }\n}\n\nfunction getTimeString(date: Date) {\n return `${date.getHours()}:${date.getMinutes()}`;\n}\n\nclass TimeRangeFilterCell extends RangeFilterCellBase<Date> {\n constructor(props: TableFilterCellProps) {\n super(props, TimePicker);\n }\n\n inRange(current: Date, values: Range<Date>) {\n return moment(getTimeString(current), 'h:mma').isBetween(\n moment(getTimeString(values.min || current), 'h:mma'),\n moment(getTimeString(values.max || current), 'h:mma'),\n 'minutes',\n '[]'\n );\n }\n}\n\nexport const NumericRangeColumnMenuFilter = renderCustomColumnMenuFilter(NumericRangeFilterCell);\nexport const CurrencyRangeColumnMenuFilter = renderCustomColumnMenuFilter(CurrencyRangeFilterCell);\nexport const DateRangeColumnMenuFilter = renderCustomColumnMenuFilter(DateRangeFilterCell);\nexport const TimeRangeColumnMenuFilter = renderCustomColumnMenuFilter(TimeRangeFilterCell);\n"],"names":["useState","useEffect","Component","Fragment","DatePicker","TimePicker","NumericTextBox","moment","renderCustomColumnMenuFilter","NoSSR","children","isMounted","setIsMounted","RangeFilterCellBase","inRange","current","values","min","undefined","max","render","filterValue","props","value","Control","controlClass","span","className","controlProps","ref","setMinValueRef","onChange","setMaxValueRef","constructor","minValueBox","maxValueBox","ev","operator","syntheticEvent","el","NumericRangeFilterCell","CurrencyRangeFilterCell","format","DateRangeFilterCell","getTimeString","date","getHours","getMinutes","TimeRangeFilterCell","isBetween","NumericRangeColumnMenuFilter","CurrencyRangeColumnMenuFilter","DateRangeColumnMenuFilter","TimeRangeColumnMenuFilter"],"mappings":"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"}
|
@@ -1,6 +1,6 @@
|
|
1
|
-
export const objectSearch = (search)
|
1
|
+
export const objectSearch = (search)=>{
|
2
2
|
const s = search.toLowerCase().trim();
|
3
|
-
return (item)
|
3
|
+
return (item)=>{
|
4
4
|
if (!s) {
|
5
5
|
return true;
|
6
6
|
}
|
@@ -11,9 +11,10 @@ export const objectSearch = (search) => {
|
|
11
11
|
return item.toLowerCase().includes(s);
|
12
12
|
}
|
13
13
|
if (typeof item === 'object') {
|
14
|
-
return Object.values(item).some(value
|
14
|
+
return Object.values(item).some((value)=>typeof value === 'string' ? value.toLowerCase().includes(s) : false);
|
15
15
|
}
|
16
16
|
return false;
|
17
17
|
};
|
18
18
|
};
|
19
|
+
|
19
20
|
//# sourceMappingURL=object-search.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"
|
1
|
+
{"version":3,"sources":["../../../src/filters/select-filter/object-search.ts"],"sourcesContent":["export const objectSearch = (search: string) => {\n const s = search.toLowerCase().trim();\n\n return (item: any): boolean => {\n if (!s) {\n return true;\n }\n\n if (item === null) {\n return false;\n }\n\n if (typeof item === 'string') {\n return item.toLowerCase().includes(s);\n }\n\n if (typeof item === 'object') {\n return Object.values(item).some(value =>\n typeof value === 'string' ? value.toLowerCase().includes(s) : false\n );\n }\n\n return false;\n };\n};\n"],"names":["objectSearch","search","s","toLowerCase","trim","item","includes","Object","values","some","value"],"mappings":"AAAA,OAAO,MAAMA,eAAe,CAACC;IACzB,MAAMC,IAAID,OAAOE,WAAW,GAAGC,IAAI;IAEnC,OAAO,CAACC;QACJ,IAAI,CAACH,GAAG;YACJ,OAAO;QACX;QAEA,IAAIG,SAAS,MAAM;YACf,OAAO;QACX;QAEA,IAAI,OAAOA,SAAS,UAAU;YAC1B,OAAOA,KAAKF,WAAW,GAAGG,QAAQ,CAACJ;QACvC;QAEA,IAAI,OAAOG,SAAS,UAAU;YAC1B,OAAOE,OAAOC,MAAM,CAACH,MAAMI,IAAI,CAACC,CAAAA,QAC5B,OAAOA,UAAU,WAAWA,MAAMP,WAAW,GAAGG,QAAQ,CAACJ,KAAK;QAEtE;QAEA,OAAO;IACX;AACJ,EAAE"}
|
@@ -1,12 +1,13 @@
|
|
1
1
|
import { getSimpleValue } from './value-getter';
|
2
2
|
export const selectColumnMenuFilterOperators = {
|
3
|
-
getContains: (opts)
|
3
|
+
getContains: (opts)=>{
|
4
4
|
const { valueSelector = getSimpleValue, rowValueSelector = getSimpleValue } = opts !== null && opts !== void 0 ? opts : {};
|
5
|
-
return (value, options)
|
5
|
+
return (value, options)=>options === null || options === void 0 ? void 0 : options.some((opt)=>valueSelector(opt) === rowValueSelector(value));
|
6
6
|
},
|
7
|
-
getEquals: (opts)
|
7
|
+
getEquals: (opts)=>{
|
8
8
|
const { valueSelector = getSimpleValue, rowValueSelector = getSimpleValue } = opts !== null && opts !== void 0 ? opts : {};
|
9
|
-
return (value, option)
|
10
|
-
}
|
9
|
+
return (value, option)=>option === undefined ? false : valueSelector(option) === rowValueSelector(value);
|
10
|
+
}
|
11
11
|
};
|
12
|
+
|
12
13
|
//# sourceMappingURL=operators.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"
|
1
|
+
{"version":3,"sources":["../../../src/filters/select-filter/operators.ts"],"sourcesContent":["import { getSimpleValue } from './value-getter';\nimport { IdType } from '@servicetitan/data-query';\n\ninterface OperatorOpts<TO> {\n valueSelector?: (item: TO) => IdType;\n rowValueSelector?: (item: any) => IdType | undefined;\n}\n\nexport const selectColumnMenuFilterOperators = {\n getContains: <TO>(opts?: OperatorOpts<TO>) => {\n const { valueSelector = getSimpleValue, rowValueSelector = getSimpleValue } = opts ?? {};\n\n return (value: any, options?: TO[]) =>\n options?.some(opt => valueSelector(opt) === rowValueSelector(value));\n },\n getEquals: <TO>(opts?: OperatorOpts<TO>) => {\n const { valueSelector = getSimpleValue, rowValueSelector = getSimpleValue } = opts ?? {};\n\n return (value: any, option?: TO) =>\n option === undefined ? false : valueSelector(option) === rowValueSelector(value);\n },\n};\n"],"names":["getSimpleValue","selectColumnMenuFilterOperators","getContains","opts","valueSelector","rowValueSelector","value","options","some","opt","getEquals","option","undefined"],"mappings":"AAAA,SAASA,cAAc,QAAQ,iBAAiB;AAQhD,OAAO,MAAMC,kCAAkC;IAC3CC,aAAa,CAAKC;QACd,MAAM,EAAEC,gBAAgBJ,cAAc,EAAEK,mBAAmBL,cAAc,EAAE,GAAGG,iBAAAA,kBAAAA,OAAQ,CAAC;QAEvF,OAAO,CAACG,OAAYC,UAChBA,oBAAAA,8BAAAA,QAASC,IAAI,CAACC,CAAAA,MAAOL,cAAcK,SAASJ,iBAAiBC;IACrE;IACAI,WAAW,CAAKP;QACZ,MAAM,EAAEC,gBAAgBJ,cAAc,EAAEK,mBAAmBL,cAAc,EAAE,GAAGG,iBAAAA,kBAAAA,OAAQ,CAAC;QAEvF,OAAO,CAACG,OAAYK,SAChBA,WAAWC,YAAY,QAAQR,cAAcO,YAAYN,iBAAiBC;IAClF;AACJ,EAAE"}
|