@neovici/cosmoz-omnitable 14.21.2 → 14.22.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/cosmoz-omnitable-column-amount.js +27 -29
- package/dist/cosmoz-omnitable-column-autocomplete.js +24 -28
- package/dist/cosmoz-omnitable-column-boolean.js +17 -25
- package/dist/cosmoz-omnitable-column-date.js +26 -28
- package/dist/cosmoz-omnitable-column-datetime.js +26 -28
- package/dist/cosmoz-omnitable-column-list-data.js +6 -8
- package/dist/cosmoz-omnitable-column-list-horizontal.js +15 -17
- package/dist/cosmoz-omnitable-column-list-mixin.js +15 -28
- package/dist/cosmoz-omnitable-column-list.js +19 -21
- package/dist/cosmoz-omnitable-column-mixin.js +8 -12
- package/dist/cosmoz-omnitable-column-number.js +27 -29
- package/dist/cosmoz-omnitable-column-time.js +24 -26
- package/dist/cosmoz-omnitable-column.js +11 -13
- package/dist/cosmoz-omnitable-columns.js +9 -11
- package/dist/cosmoz-omnitable-group-row.js +4 -6
- package/dist/cosmoz-omnitable-header-row.js +15 -17
- package/dist/cosmoz-omnitable-item-expand-line.js +5 -7
- package/dist/cosmoz-omnitable-item-expand.js +6 -8
- package/dist/cosmoz-omnitable-item-row.js +5 -7
- package/dist/cosmoz-omnitable-skeleton.js +6 -8
- package/dist/cosmoz-omnitable-styles.js +4 -7
- package/dist/cosmoz-omnitable.d.ts +1 -1
- package/dist/cosmoz-omnitable.d.ts.map +1 -1
- package/dist/cosmoz-omnitable.js +31 -37
- package/dist/grouped-list/cosmoz-grouped-list-row.js +2 -4
- package/dist/grouped-list/cosmoz-grouped-list.js +4 -6
- package/dist/grouped-list/index.js +1 -3
- package/dist/grouped-list/use-collapsible-items.d.ts +4 -4
- package/dist/grouped-list/use-collapsible-items.js +8 -12
- package/dist/grouped-list/use-cosmoz-grouped-list.d.ts +1 -1
- package/dist/grouped-list/use-cosmoz-grouped-list.js +19 -23
- package/dist/grouped-list/use-selected-items.d.ts +10 -10
- package/dist/grouped-list/use-selected-items.js +15 -19
- package/dist/grouped-list/use-weak-state.d.ts +3 -3
- package/dist/grouped-list/use-weak-state.js +6 -10
- package/dist/grouped-list/utils.js +1 -11
- package/dist/lib/compute-layout.js +7 -12
- package/dist/lib/cosmoz-omnitable-amount-range-input.js +14 -16
- package/dist/lib/cosmoz-omnitable-date-input-mixin.js +5 -9
- package/dist/lib/cosmoz-omnitable-date-range-input.js +12 -14
- package/dist/lib/cosmoz-omnitable-datetime-range-input.js +13 -15
- package/dist/lib/cosmoz-omnitable-number-range-input.js +12 -14
- package/dist/lib/cosmoz-omnitable-range-input-mixin.js +8 -12
- package/dist/lib/cosmoz-omnitable-resize-nub.js +5 -7
- package/dist/lib/cosmoz-omnitable-time-range-input.js +12 -14
- package/dist/lib/generic-sorter.js +1 -5
- package/dist/lib/icons.d.ts +4 -4
- package/dist/lib/icons.d.ts.map +1 -1
- package/dist/lib/icons.js +5 -8
- package/dist/lib/layout.js +2 -5
- package/dist/lib/polymer-haunted-render-mixin.js +6 -10
- package/dist/lib/render-footer.d.ts +1 -1
- package/dist/lib/render-footer.d.ts.map +1 -1
- package/dist/lib/render-footer.js +12 -16
- package/dist/lib/render-header.d.ts +1 -1
- package/dist/lib/render-header.d.ts.map +1 -1
- package/dist/lib/render-header.js +5 -9
- package/dist/lib/render-list.d.ts +1 -1
- package/dist/lib/render-list.d.ts.map +1 -1
- package/dist/lib/render-list.js +15 -19
- package/dist/lib/save-as-csv-action.js +3 -7
- package/dist/lib/save-as-xlsx-action.js +5 -9
- package/dist/lib/settings/cosmoz-omnitable-settings.js +33 -71
- package/dist/lib/settings/cosmoz-omnitable-sort-group.d.ts +3 -3
- package/dist/lib/settings/cosmoz-omnitable-sort-group.d.ts.map +1 -1
- package/dist/lib/settings/cosmoz-omnitable-sort-group.js +12 -19
- package/dist/lib/settings/drivers/context.d.ts +10 -2
- package/dist/lib/settings/drivers/context.d.ts.map +1 -1
- package/dist/lib/settings/drivers/context.js +6 -13
- package/dist/lib/settings/drivers/index.js +3 -25
- package/dist/lib/settings/drivers/local.js +1 -3
- package/dist/lib/settings/drivers/remote.js +1 -3
- package/dist/lib/settings/index.js +2 -9
- package/dist/lib/settings/normalize.js +10 -15
- package/dist/lib/settings/style.css.js +5 -8
- package/dist/lib/settings/use-saved-settings.d.ts +2 -2
- package/dist/lib/settings/use-saved-settings.js +9 -11
- package/dist/lib/settings/use-settings-ui.js +12 -14
- package/dist/lib/settings/use-settings.d.ts +12 -6
- package/dist/lib/settings/use-settings.d.ts.map +1 -1
- package/dist/lib/settings/use-settings.js +8 -46
- package/dist/lib/types.js +1 -2
- package/dist/lib/use-canvas-width.js +5 -9
- package/dist/lib/use-dom-columns.d.ts +1 -1
- package/dist/lib/use-dom-columns.d.ts.map +1 -1
- package/dist/lib/use-dom-columns.js +7 -11
- package/dist/lib/use-fast-layout.d.ts +1 -1
- package/dist/lib/use-fast-layout.js +18 -22
- package/dist/lib/use-footer.js +1 -5
- package/dist/lib/use-hash-state.js +11 -15
- package/dist/lib/use-header.js +5 -9
- package/dist/lib/use-layout.d.ts +1 -1
- package/dist/lib/use-layout.d.ts.map +1 -1
- package/dist/lib/use-layout.js +4 -8
- package/dist/lib/use-list.d.ts +10 -2
- package/dist/lib/use-list.d.ts.map +1 -1
- package/dist/lib/use-list.js +21 -25
- package/dist/lib/use-mini.d.ts +1 -1
- package/dist/lib/use-mini.js +5 -9
- package/dist/lib/use-omnitable.d.ts +10 -2
- package/dist/lib/use-omnitable.d.ts.map +1 -1
- package/dist/lib/use-omnitable.js +18 -22
- package/dist/lib/use-processed-items.d.ts +5 -3
- package/dist/lib/use-processed-items.d.ts.map +1 -1
- package/dist/lib/use-processed-items.js +23 -27
- package/dist/lib/use-public-interface.js +16 -20
- package/dist/lib/use-resizable-columns.js +4 -8
- package/dist/lib/use-sort-and-group-options.d.ts +25 -2
- package/dist/lib/use-sort-and-group-options.d.ts.map +1 -1
- package/dist/lib/use-sort-and-group-options.js +12 -16
- package/dist/lib/use-track-size.d.ts +1 -1
- package/dist/lib/use-track-size.d.ts.map +1 -1
- package/dist/lib/use-track-size.js +2 -6
- package/dist/lib/use-tween-array.js +10 -14
- package/dist/lib/utils-amount.js +29 -25
- package/dist/lib/utils-data.js +8 -12
- package/dist/lib/utils-date.js +38 -55
- package/dist/lib/utils-datetime.js +22 -32
- package/dist/lib/utils-number.js +24 -34
- package/dist/lib/utils-time.js +34 -46
- package/dist/lib/utils.js +2 -6
- package/dist/ui-helpers/cosmoz-clear-button.js +5 -7
- package/package.json +143 -134
|
@@ -1,11 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
const function_1 = require("@neovici/cosmoz-utils/function");
|
|
7
|
-
const path_1 = require("@polymer/polymer/lib/utils/path");
|
|
8
|
-
const utils_data_1 = require("./lib/utils-data");
|
|
1
|
+
import { prop } from '@neovici/cosmoz-utils/object';
|
|
2
|
+
import { array } from '@neovici/cosmoz-utils/array';
|
|
3
|
+
import { invoke } from '@neovici/cosmoz-utils/function';
|
|
4
|
+
import { get } from '@polymer/polymer/lib/utils/path';
|
|
5
|
+
import { valuesFrom } from './lib/utils-data';
|
|
9
6
|
const unique = (values, valueProperty) => {
|
|
10
7
|
if (!Array.isArray(values)) {
|
|
11
8
|
return;
|
|
@@ -27,7 +24,7 @@ const unique = (values, valueProperty) => {
|
|
|
27
24
|
return false;
|
|
28
25
|
}
|
|
29
26
|
if (valueProperty) {
|
|
30
|
-
const value =
|
|
27
|
+
const value = get(item, valueProperty);
|
|
31
28
|
if (used.indexOf(value) !== -1) {
|
|
32
29
|
return false;
|
|
33
30
|
}
|
|
@@ -60,14 +57,14 @@ const unique = (values, valueProperty) => {
|
|
|
60
57
|
});
|
|
61
58
|
}
|
|
62
59
|
return [];
|
|
63
|
-
}, getTexts = (item, valuePath, textProperty) =>
|
|
60
|
+
}, getTexts = (item, valuePath, textProperty) => array(valuePath && get(item, valuePath)).map(prop(textProperty)), getString = ({ valuePath, textProperty }, item) => {
|
|
64
61
|
return getTexts(item, valuePath, textProperty)
|
|
65
62
|
.filter((i) => i != null)
|
|
66
63
|
.join(', ');
|
|
67
64
|
}, toXlsxValue = getString, applyMultiFilter = ({ valueProperty, valuePath, emptyValue, emptyProperty }, filters) => (item) => {
|
|
68
|
-
const val =
|
|
65
|
+
const val = prop(valueProperty), values = array(get(item, valuePath));
|
|
69
66
|
return filters.some((filter) => (values.length === 0 &&
|
|
70
|
-
|
|
67
|
+
prop(emptyProperty || valueProperty)(filter) === emptyValue) ||
|
|
71
68
|
values.some((value) => val(value) === val(filter)));
|
|
72
69
|
}, onChange = (setState) => (value) => setState((state) => ({ ...state, filter: value })), onFocus = (setState) => (focused) => setState((state) => ({ ...state, headerFocused: focused })), onText = (setState) => (text) => setState((state) => ({ ...state, query: text })), computeValues = ({ emptyValue, emptyLabel, emptyProperty, textProperty, valueProperty }, rawSource) => {
|
|
73
70
|
const source = toAutocompleteSource(rawSource, valueProperty, textProperty);
|
|
@@ -85,7 +82,7 @@ const unique = (values, valueProperty) => {
|
|
|
85
82
|
},
|
|
86
83
|
...source,
|
|
87
84
|
];
|
|
88
|
-
}, computeSource = (column, data) => computeValues(column,
|
|
85
|
+
}, computeSource = (column, data) => computeValues(column, valuesFrom(data, column.valuePath)), listColumnMixin = (base) => class extends base {
|
|
89
86
|
static get properties() {
|
|
90
87
|
return {
|
|
91
88
|
textProperty: { type: String },
|
|
@@ -110,12 +107,12 @@ const unique = (values, valueProperty) => {
|
|
|
110
107
|
return getString(column, item);
|
|
111
108
|
}
|
|
112
109
|
getComparableValue({ valuePath, valueProperty }, item) {
|
|
113
|
-
const value =
|
|
110
|
+
const value = get(item, valuePath);
|
|
114
111
|
if (valueProperty == null) {
|
|
115
112
|
return value;
|
|
116
113
|
}
|
|
117
|
-
const subValues =
|
|
118
|
-
acc.push(
|
|
114
|
+
const subValues = array(value).reduce((acc, subItem) => {
|
|
115
|
+
acc.push(get(subItem, valueProperty));
|
|
119
116
|
return acc;
|
|
120
117
|
}, []);
|
|
121
118
|
return subValues.sort().join(' ');
|
|
@@ -134,19 +131,9 @@ const unique = (values, valueProperty) => {
|
|
|
134
131
|
}
|
|
135
132
|
computeSource(column, data) {
|
|
136
133
|
return column.externalValues || typeof column.values === 'function'
|
|
137
|
-
? async (...args) => computeValues(column, await Promise.resolve(
|
|
134
|
+
? async (...args) => computeValues(column, await Promise.resolve(invoke(column.values, ...args)))
|
|
138
135
|
: computeSource(column, data);
|
|
139
136
|
}
|
|
140
137
|
};
|
|
141
|
-
|
|
142
|
-
exports.toAutocompleteSource = toAutocompleteSource;
|
|
143
|
-
exports.getTexts = getTexts;
|
|
144
|
-
exports.getString = getString;
|
|
145
|
-
exports.toXlsxValue = toXlsxValue;
|
|
146
|
-
exports.applyMultiFilter = applyMultiFilter;
|
|
147
|
-
exports.onChange = onChange;
|
|
148
|
-
exports.onFocus = onFocus;
|
|
149
|
-
exports.onText = onText;
|
|
150
|
-
exports.computeSource = computeSource;
|
|
151
|
-
exports.listColumnMixin = listColumnMixin;
|
|
138
|
+
export { unique, getTexts, getString, toXlsxValue, applyMultiFilter, onChange, onFocus, onText, computeSource, toAutocompleteSource, listColumnMixin, };
|
|
152
139
|
//# sourceMappingURL=cosmoz-omnitable-column-list-mixin.js.map
|
|
@@ -1,20 +1,18 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
require("@neovici/cosmoz-autocomplete");
|
|
10
|
-
const use_dom_columns_1 = require("./lib/use-dom-columns");
|
|
1
|
+
import './cosmoz-omnitable-column-list-data';
|
|
2
|
+
import { PolymerElement } from '@polymer/polymer/polymer-element';
|
|
3
|
+
import { html } from 'lit-html';
|
|
4
|
+
import { when } from 'lit-html/directives/when.js';
|
|
5
|
+
import { columnMixin } from './cosmoz-omnitable-column-mixin';
|
|
6
|
+
import { getString, getTexts, listColumnMixin, onChange, onFocus, onText, } from './cosmoz-omnitable-column-list-mixin';
|
|
7
|
+
import '@neovici/cosmoz-autocomplete';
|
|
8
|
+
import { columnSymbol } from './lib/use-dom-columns';
|
|
11
9
|
/**
|
|
12
10
|
* @polymer
|
|
13
11
|
* @customElement
|
|
14
12
|
* @appliesMixin listColumnMixin
|
|
15
13
|
* @appliesMixin columnMixin
|
|
16
14
|
*/
|
|
17
|
-
class OmnitableColumnList extends
|
|
15
|
+
class OmnitableColumnList extends listColumnMixin(columnMixin(PolymerElement)) {
|
|
18
16
|
static get properties() {
|
|
19
17
|
return {
|
|
20
18
|
keepOpened: { type: Boolean, value: true },
|
|
@@ -31,21 +29,21 @@ class OmnitableColumnList extends (0, cosmoz_omnitable_column_list_mixin_1.listC
|
|
|
31
29
|
};
|
|
32
30
|
}
|
|
33
31
|
renderCell({ valuePath, textProperty }, { item }) {
|
|
34
|
-
return
|
|
35
|
-
.items=${
|
|
32
|
+
return html `<cosmoz-omnitable-column-list-data
|
|
33
|
+
.items=${getTexts(item, valuePath, textProperty)}
|
|
36
34
|
></cosmoz-omnitable-column-list-data>`;
|
|
37
35
|
}
|
|
38
36
|
renderEditCell(column, { item }, onItemChange) {
|
|
39
37
|
const onChange = (event) => onItemChange(event.target.value.split(/,\s*/gu));
|
|
40
|
-
return
|
|
38
|
+
return html `<cosmoz-input
|
|
41
39
|
no-label-float
|
|
42
40
|
type="text"
|
|
43
|
-
.value=${
|
|
41
|
+
.value=${getString(column, item)}
|
|
44
42
|
@change=${onChange}
|
|
45
43
|
></cosmoz-input>`;
|
|
46
44
|
}
|
|
47
45
|
renderHeader(column, { filter, query }, setState, source) {
|
|
48
|
-
return
|
|
46
|
+
return html `<cosmoz-autocomplete-ui
|
|
49
47
|
class="external-values-${column.externalValues}"
|
|
50
48
|
?keep-opened=${column.keepOpened}
|
|
51
49
|
?keep-query=${column.keepQuery}
|
|
@@ -55,13 +53,13 @@ class OmnitableColumnList extends (0, cosmoz_omnitable_column_list_mixin_1.listC
|
|
|
55
53
|
.source=${source}
|
|
56
54
|
.textProperty=${column.textProperty}
|
|
57
55
|
.valueProperty=${column.valueProperty}
|
|
58
|
-
.itemRenderer=${column[
|
|
56
|
+
.itemRenderer=${column[columnSymbol]?.itemRenderer}
|
|
59
57
|
.value=${filter}
|
|
60
58
|
.text=${query}
|
|
61
|
-
.onChange=${
|
|
62
|
-
.onFocus=${
|
|
63
|
-
.onText=${
|
|
64
|
-
>${
|
|
59
|
+
.onChange=${onChange(setState)}
|
|
60
|
+
.onFocus=${onFocus(setState)}
|
|
61
|
+
.onText=${onText(setState)}
|
|
62
|
+
>${when(column.loading, () => html `<cosmoz-spinner slot="suffix"></cosmoz-spinner>`)}</cosmoz-autocomplete-ui
|
|
65
63
|
>`;
|
|
66
64
|
}
|
|
67
65
|
}
|
|
@@ -1,9 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const path_1 = require("@polymer/polymer/lib/utils/path");
|
|
5
|
-
const getString = ({ valuePath }, item) => (0, path_1.get)(item, valuePath), applySingleFilter = ({ valuePath }, filter) => (item) => {
|
|
6
|
-
const value = (0, path_1.get)(item, valuePath);
|
|
1
|
+
import { get } from '@polymer/polymer/lib/utils/path';
|
|
2
|
+
export const getString = ({ valuePath }, item) => get(item, valuePath), toXlsxValue = getString, getComparableValue = getString, applySingleFilter = ({ valuePath }, filter) => (item) => {
|
|
3
|
+
const value = get(item, valuePath);
|
|
7
4
|
if (value == null) {
|
|
8
5
|
return false;
|
|
9
6
|
}
|
|
@@ -90,16 +87,16 @@ const getString = ({ valuePath }, item) => (0, path_1.get)(item, valuePath), app
|
|
|
90
87
|
// eslint-disable-next-line no-empty-function
|
|
91
88
|
getFilterFn() { }
|
|
92
89
|
getString(column, item) {
|
|
93
|
-
return
|
|
90
|
+
return getString(column, item);
|
|
94
91
|
}
|
|
95
92
|
toXlsxValue(column, item) {
|
|
96
|
-
return
|
|
93
|
+
return toXlsxValue(column, item);
|
|
97
94
|
}
|
|
98
95
|
cellTitleFn(column, item) {
|
|
99
|
-
return
|
|
96
|
+
return getString(column, item);
|
|
100
97
|
}
|
|
101
98
|
serializeFilter(column, filter) {
|
|
102
|
-
return
|
|
99
|
+
return serializeFilter(column, filter);
|
|
103
100
|
}
|
|
104
101
|
deserializeFilter(column, filter) {
|
|
105
102
|
if (filter == null) {
|
|
@@ -111,7 +108,7 @@ const getString = ({ valuePath }, item) => (0, path_1.get)(item, valuePath), app
|
|
|
111
108
|
return filter;
|
|
112
109
|
}
|
|
113
110
|
getComparableValue(column, item) {
|
|
114
|
-
return
|
|
111
|
+
return getComparableValue(column, item);
|
|
115
112
|
}
|
|
116
113
|
computeSource(column, data) {
|
|
117
114
|
return data;
|
|
@@ -121,5 +118,4 @@ const getString = ({ valuePath }, item) => (0, path_1.get)(item, valuePath), app
|
|
|
121
118
|
this.dispatchEvent(new CustomEvent('cosmoz-column-prop-changed', { bubbles: true }));
|
|
122
119
|
}
|
|
123
120
|
};
|
|
124
|
-
exports.getString = getString, exports.toXlsxValue = exports.getString, exports.getComparableValue = exports.getString, exports.applySingleFilter = applySingleFilter, exports.serializeFilter = serializeFilter, exports.columnMixin = columnMixin;
|
|
125
121
|
//# sourceMappingURL=cosmoz-omnitable-column-mixin.js.map
|
|
@@ -1,21 +1,19 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
const utils_number_1 = require("./lib/utils-number");
|
|
12
|
-
const path_1 = require("@polymer/polymer/lib/utils/path");
|
|
1
|
+
import '@neovici/cosmoz-input';
|
|
2
|
+
import '@polymer/paper-dropdown-menu/paper-dropdown-menu';
|
|
3
|
+
import './ui-helpers/cosmoz-clear-button';
|
|
4
|
+
import { PolymerElement } from '@polymer/polymer/polymer-element';
|
|
5
|
+
import { html } from 'lit-html';
|
|
6
|
+
import { columnMixin } from './cosmoz-omnitable-column-mixin';
|
|
7
|
+
import './lib/cosmoz-omnitable-number-range-input';
|
|
8
|
+
import { defaultComputeSource } from './lib/utils-data';
|
|
9
|
+
import { applySingleFilter, getComparableValue, getInputString, getString, toHashString, toNumber, } from './lib/utils-number';
|
|
10
|
+
import { get } from '@polymer/polymer/lib/utils/path';
|
|
13
11
|
/**
|
|
14
12
|
* @polymer
|
|
15
13
|
* @customElement
|
|
16
14
|
* @appliesMixin columnMixin
|
|
17
15
|
*/
|
|
18
|
-
class OmnitableColumnNumber extends
|
|
16
|
+
class OmnitableColumnNumber extends columnMixin(PolymerElement) {
|
|
19
17
|
static get properties() {
|
|
20
18
|
return {
|
|
21
19
|
min: { type: Number, value: null, notify: true },
|
|
@@ -35,33 +33,33 @@ class OmnitableColumnNumber extends (0, cosmoz_omnitable_column_mixin_1.columnMi
|
|
|
35
33
|
return { limits: column.limits };
|
|
36
34
|
}
|
|
37
35
|
getFilterFn(column, filter) {
|
|
38
|
-
const min =
|
|
36
|
+
const min = getComparableValue({ ...column, valuePath: 'min' }, filter), max = getComparableValue({ ...column, valuePath: 'max' }, filter);
|
|
39
37
|
if (min == null && max == null) {
|
|
40
38
|
return;
|
|
41
39
|
}
|
|
42
|
-
return
|
|
40
|
+
return applySingleFilter(column, filter);
|
|
43
41
|
}
|
|
44
42
|
getString(column, item) {
|
|
45
|
-
return
|
|
43
|
+
return getString(column, item);
|
|
46
44
|
}
|
|
47
45
|
toXlsxValue({ valuePath }, item) {
|
|
48
|
-
return
|
|
46
|
+
return get(item, valuePath);
|
|
49
47
|
}
|
|
50
48
|
cellTitleFn(column, item) {
|
|
51
|
-
return
|
|
49
|
+
return getString(column, item);
|
|
52
50
|
}
|
|
53
51
|
getComparableValue(column, item) {
|
|
54
|
-
return
|
|
52
|
+
return getComparableValue(column, item);
|
|
55
53
|
}
|
|
56
54
|
serializeFilter(column, filter) {
|
|
57
55
|
if (filter == null) {
|
|
58
56
|
return;
|
|
59
57
|
}
|
|
60
|
-
const min =
|
|
58
|
+
const min = toNumber(filter.min), max = toNumber(filter.max);
|
|
61
59
|
if (min == null && max == null) {
|
|
62
60
|
return;
|
|
63
61
|
}
|
|
64
|
-
return
|
|
62
|
+
return toHashString(min) + '~' + toHashString(max);
|
|
65
63
|
}
|
|
66
64
|
deserializeFilter(column, filter) {
|
|
67
65
|
if (filter == null || filter === '') {
|
|
@@ -72,26 +70,26 @@ class OmnitableColumnNumber extends (0, cosmoz_omnitable_column_mixin_1.columnMi
|
|
|
72
70
|
return null;
|
|
73
71
|
}
|
|
74
72
|
return {
|
|
75
|
-
min:
|
|
76
|
-
max:
|
|
73
|
+
min: toNumber(matches[1]),
|
|
74
|
+
max: toNumber(matches[2]),
|
|
77
75
|
};
|
|
78
76
|
}
|
|
79
77
|
renderCell(column, { item }) {
|
|
80
|
-
return
|
|
81
|
-
${
|
|
78
|
+
return html `<div class="omnitable-cell-number">
|
|
79
|
+
${getString(column, item)}
|
|
82
80
|
</div>`;
|
|
83
81
|
}
|
|
84
82
|
renderEditCell(column, { item }, onItemChange) {
|
|
85
83
|
const onChange = (event) => onItemChange(event.target.value);
|
|
86
|
-
return
|
|
84
|
+
return html `<cosmoz-input
|
|
87
85
|
no-label-float
|
|
88
86
|
type="number"
|
|
89
87
|
@change=${onChange}
|
|
90
|
-
.value=${
|
|
88
|
+
.value=${getInputString(column, item)}
|
|
91
89
|
></cosmoz-input>`;
|
|
92
90
|
}
|
|
93
91
|
renderHeader({ title, min, max, limits, locale, maximumFractionDigits, minimumFractionDigits, autoupdate, }, { filter }, setState, source) {
|
|
94
|
-
return
|
|
92
|
+
return html `<cosmoz-omnitable-number-range-input
|
|
95
93
|
.title=${title}
|
|
96
94
|
.filter=${filter}
|
|
97
95
|
.values=${source}
|
|
@@ -107,7 +105,7 @@ class OmnitableColumnNumber extends (0, cosmoz_omnitable_column_mixin_1.columnMi
|
|
|
107
105
|
></cosmoz-omnitable-number-range-input>`;
|
|
108
106
|
}
|
|
109
107
|
computeSource(column, data) {
|
|
110
|
-
return
|
|
108
|
+
return defaultComputeSource(column, data);
|
|
111
109
|
}
|
|
112
110
|
}
|
|
113
111
|
customElements.define('cosmoz-omnitable-column-number', OmnitableColumnNumber);
|
|
@@ -1,20 +1,18 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
require("./lib/cosmoz-omnitable-time-range-input");
|
|
11
|
-
const utils_data_1 = require("./lib/utils-data");
|
|
1
|
+
import '@polymer/paper-dropdown-menu/paper-dropdown-menu';
|
|
2
|
+
import '@neovici/cosmoz-input';
|
|
3
|
+
import './ui-helpers/cosmoz-clear-button';
|
|
4
|
+
import { PolymerElement } from '@polymer/polymer/polymer-element';
|
|
5
|
+
import { html } from 'lit-html';
|
|
6
|
+
import { columnMixin } from './cosmoz-omnitable-column-mixin';
|
|
7
|
+
import { getComparableValue, getString, toXlsxValue, applySingleFilter, toDate, toHashString, fromHashString, } from './lib/utils-time';
|
|
8
|
+
import './lib/cosmoz-omnitable-time-range-input';
|
|
9
|
+
import { defaultComputeSource } from './lib/utils-data';
|
|
12
10
|
/**
|
|
13
11
|
* @polymer
|
|
14
12
|
* @customElement
|
|
15
13
|
* @appliesMixin columnMixin
|
|
16
14
|
*/
|
|
17
|
-
class OmnitableColumnTime extends
|
|
15
|
+
class OmnitableColumnTime extends columnMixin(PolymerElement) {
|
|
18
16
|
static get properties() {
|
|
19
17
|
return {
|
|
20
18
|
min: { type: Number, value: null, notify: true },
|
|
@@ -33,33 +31,33 @@ class OmnitableColumnTime extends (0, cosmoz_omnitable_column_mixin_1.columnMixi
|
|
|
33
31
|
};
|
|
34
32
|
}
|
|
35
33
|
getFilterFn(column, filter) {
|
|
36
|
-
const min =
|
|
34
|
+
const min = getComparableValue({ ...column, valuePath: 'min' }, filter), max = getComparableValue({ ...column, valuePath: 'max' }, filter);
|
|
37
35
|
if (min == null && max == null) {
|
|
38
36
|
return;
|
|
39
37
|
}
|
|
40
|
-
return
|
|
38
|
+
return applySingleFilter(column, filter);
|
|
41
39
|
}
|
|
42
40
|
getString(column, item) {
|
|
43
|
-
return
|
|
41
|
+
return getString(column, item);
|
|
44
42
|
}
|
|
45
43
|
toXlsxValue(column, item) {
|
|
46
|
-
return
|
|
44
|
+
return toXlsxValue(column, item);
|
|
47
45
|
}
|
|
48
46
|
cellTitleFn(column, item) {
|
|
49
|
-
return
|
|
47
|
+
return getString(column, item);
|
|
50
48
|
}
|
|
51
49
|
getComparableValue(column, item) {
|
|
52
|
-
return
|
|
50
|
+
return getComparableValue(column, item);
|
|
53
51
|
}
|
|
54
52
|
serializeFilter(column, filter) {
|
|
55
53
|
if (filter == null) {
|
|
56
54
|
return;
|
|
57
55
|
}
|
|
58
|
-
const min =
|
|
56
|
+
const min = toDate(filter.min), max = toDate(filter.max);
|
|
59
57
|
if (min == null && max == null) {
|
|
60
58
|
return;
|
|
61
59
|
}
|
|
62
|
-
return
|
|
60
|
+
return toHashString(min) + '~' + toHashString(max);
|
|
63
61
|
}
|
|
64
62
|
deserializeFilter(column, filter) {
|
|
65
63
|
if (filter == null || filter === '') {
|
|
@@ -69,22 +67,22 @@ class OmnitableColumnTime extends (0, cosmoz_omnitable_column_mixin_1.columnMixi
|
|
|
69
67
|
if (!Array.isArray(matches)) {
|
|
70
68
|
return null;
|
|
71
69
|
}
|
|
72
|
-
return { min:
|
|
70
|
+
return { min: fromHashString(matches[1]), max: fromHashString(matches[2]) };
|
|
73
71
|
}
|
|
74
72
|
renderCell(column, { item }) {
|
|
75
|
-
return
|
|
73
|
+
return getString(column, item);
|
|
76
74
|
}
|
|
77
75
|
renderEditCell(column, { item }, onItemChange) {
|
|
78
76
|
const onChange = (event) => onItemChange(event.target.value);
|
|
79
|
-
return
|
|
77
|
+
return html `<cosmoz-input
|
|
80
78
|
no-label-float
|
|
81
79
|
type="text"
|
|
82
80
|
@change=${onChange}
|
|
83
|
-
.value=${
|
|
81
|
+
.value=${getString(column, item)}
|
|
84
82
|
></cosmoz-input>`;
|
|
85
83
|
}
|
|
86
84
|
renderHeader({ title, min, max, locale, filterStep }, { filter }, setState, source) {
|
|
87
|
-
return
|
|
85
|
+
return html `<cosmoz-omnitable-time-range-input
|
|
88
86
|
.title=${title}
|
|
89
87
|
.filter=${filter}
|
|
90
88
|
.values=${source}
|
|
@@ -97,7 +95,7 @@ class OmnitableColumnTime extends (0, cosmoz_omnitable_column_mixin_1.columnMixi
|
|
|
97
95
|
></cosmoz-omnitable-time-range-input>`;
|
|
98
96
|
}
|
|
99
97
|
computeSource(column, data) {
|
|
100
|
-
return
|
|
98
|
+
return defaultComputeSource(column, data);
|
|
101
99
|
}
|
|
102
100
|
}
|
|
103
101
|
customElements.define('cosmoz-omnitable-column-time', OmnitableColumnTime);
|
|
@@ -1,10 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
const polymer_element_1 = require("@polymer/polymer/polymer-element");
|
|
7
|
-
const lit_html_1 = require("lit-html");
|
|
1
|
+
import '@neovici/cosmoz-input';
|
|
2
|
+
import './ui-helpers/cosmoz-clear-button';
|
|
3
|
+
import { applySingleFilter, columnMixin, getString, } from './cosmoz-omnitable-column-mixin';
|
|
4
|
+
import { PolymerElement } from '@polymer/polymer/polymer-element';
|
|
5
|
+
import { html } from 'lit-html';
|
|
8
6
|
const onChange = (setState) => (event) => setState((state) => {
|
|
9
7
|
// skip the event emitted during cosmoz-input initialization
|
|
10
8
|
if (state.inputValue === undefined && event.target.value === '') {
|
|
@@ -24,7 +22,7 @@ const onChange = (setState) => (event) => setState((state) => {
|
|
|
24
22
|
* @customElement
|
|
25
23
|
* @appliesMixin columnMixin
|
|
26
24
|
*/
|
|
27
|
-
class OmnitableColumn extends
|
|
25
|
+
class OmnitableColumn extends columnMixin(PolymerElement) {
|
|
28
26
|
static get properties() {
|
|
29
27
|
return {
|
|
30
28
|
minWidth: { type: String, value: '55px' },
|
|
@@ -36,22 +34,22 @@ class OmnitableColumn extends (0, cosmoz_omnitable_column_mixin_1.columnMixin)(p
|
|
|
36
34
|
if (filter == null || filter === '') {
|
|
37
35
|
return;
|
|
38
36
|
}
|
|
39
|
-
return
|
|
37
|
+
return applySingleFilter(column, filter);
|
|
40
38
|
}
|
|
41
39
|
renderCell(column, { item }) {
|
|
42
|
-
return
|
|
40
|
+
return html `<span class="default-column">${getString(column, item)}</span>`;
|
|
43
41
|
}
|
|
44
42
|
renderEditCell(column, { item }, onItemChange) {
|
|
45
43
|
const onChange = (event) => onItemChange(event.target.value);
|
|
46
|
-
return
|
|
44
|
+
return html `<cosmoz-input
|
|
47
45
|
no-label-float
|
|
48
46
|
type="text"
|
|
49
47
|
@change=${onChange}
|
|
50
|
-
.value=${
|
|
48
|
+
.value=${getString(column, item)}
|
|
51
49
|
></cosmoz-input>`;
|
|
52
50
|
}
|
|
53
51
|
renderHeader(column, { filter, inputValue, headerFocused }, setState) {
|
|
54
|
-
return
|
|
52
|
+
return html `<cosmoz-input
|
|
55
53
|
label=${column.title}
|
|
56
54
|
.value=${inputValue ?? filter}
|
|
57
55
|
@value-changed=${onChange(setState)}
|
|
@@ -1,13 +1,11 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
1
|
/* convenience file to import all available columns */
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
2
|
+
import './cosmoz-omnitable-column-amount.js';
|
|
3
|
+
import './cosmoz-omnitable-column-autocomplete.js';
|
|
4
|
+
import './cosmoz-omnitable-column-boolean.js';
|
|
5
|
+
import './cosmoz-omnitable-column-date.js';
|
|
6
|
+
import './cosmoz-omnitable-column-list-horizontal.js';
|
|
7
|
+
import './cosmoz-omnitable-column-list.js';
|
|
8
|
+
import './cosmoz-omnitable-column-number.js';
|
|
9
|
+
import './cosmoz-omnitable-column-time.js';
|
|
10
|
+
import './cosmoz-omnitable-column-datetime.js';
|
|
13
11
|
//# sourceMappingURL=cosmoz-omnitable-columns.js.map
|
|
@@ -1,10 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
const pion_1 = require("@pionjs/pion");
|
|
4
|
-
const lit_html_1 = require("lit-html");
|
|
1
|
+
import { component } from '@pionjs/pion';
|
|
2
|
+
import { nothing } from 'lit-html';
|
|
5
3
|
const GroupRow = ({ column, item, selected, folded, group }) => {
|
|
6
4
|
if (!column) {
|
|
7
|
-
return
|
|
5
|
+
return nothing;
|
|
8
6
|
}
|
|
9
7
|
return (column.renderGroup ?? column.renderCell)(column, {
|
|
10
8
|
item,
|
|
@@ -13,5 +11,5 @@ const GroupRow = ({ column, item, selected, folded, group }) => {
|
|
|
13
11
|
group,
|
|
14
12
|
});
|
|
15
13
|
};
|
|
16
|
-
customElements.define('cosmoz-omnitable-group-row',
|
|
14
|
+
customElements.define('cosmoz-omnitable-group-row', component(GroupRow, { useShadowDOM: false }));
|
|
17
15
|
//# sourceMappingURL=cosmoz-omnitable-group-row.js.map
|
|
@@ -1,13 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
const
|
|
8
|
-
|
|
9
|
-
const renderHeaderRow = ({ data, columns, groupOnColumn, filters, setFilterState, sortAndGroup: { sortOn: on, setSortOn: setOn, descending, setDescending, } = {}, }) => (0, repeat_js_1.repeat)(columns, (column) => column.name, (column) => [
|
|
10
|
-
(0, pion_1.html) `<div
|
|
1
|
+
import { html, component, useContext } from '@pionjs/pion';
|
|
2
|
+
import { repeat } from 'lit-html/directives/repeat.js';
|
|
3
|
+
import './lib/cosmoz-omnitable-resize-nub';
|
|
4
|
+
import { render } from './lib/settings/cosmoz-omnitable-sort-group';
|
|
5
|
+
import { when } from 'lit-html/directives/when.js';
|
|
6
|
+
import { SortAndGroupContext } from './lib/use-sort-and-group-options';
|
|
7
|
+
const renderHeaderRow = ({ data, columns, groupOnColumn, filters, setFilterState, sortAndGroup: { sortOn: on, setSortOn: setOn, descending, setDescending, } = {}, }) => repeat(columns, (column) => column.name, (column) => [
|
|
8
|
+
html `<div
|
|
11
9
|
class="cell ${column.headerCellClass} header-cell"
|
|
12
10
|
part="cell header-cell cell-${column.name} header-cell-${column.name}"
|
|
13
11
|
?hidden="${column === groupOnColumn}"
|
|
@@ -15,22 +13,22 @@ const renderHeaderRow = ({ data, columns, groupOnColumn, filters, setFilterState
|
|
|
15
13
|
name="${column.name}"
|
|
16
14
|
>
|
|
17
15
|
${column.renderHeader(column, filters[column.name] ?? {}, (state) => setFilterState(column.name, state), column.source(column, data))}
|
|
18
|
-
${
|
|
16
|
+
${render({ on, setOn, descending, setDescending, column })}
|
|
19
17
|
</div>`,
|
|
20
|
-
|
|
18
|
+
html `<cosmoz-omnitable-resize-nub
|
|
21
19
|
.column="${column}"
|
|
22
20
|
name="${column.name}"
|
|
23
21
|
></cosmoz-omnitable-resize-nub>`,
|
|
24
22
|
]);
|
|
25
23
|
const HeaderRow = ({ columns, settingsConfig, hideSelectAll, ...thru }) => {
|
|
26
|
-
const sortAndGroup =
|
|
27
|
-
return
|
|
28
|
-
${
|
|
29
|
-
${
|
|
24
|
+
const sortAndGroup = useContext(SortAndGroupContext);
|
|
25
|
+
return html `
|
|
26
|
+
${when(columns, (columns) => renderHeaderRow({ columns, sortAndGroup, ...thru }))}
|
|
27
|
+
${when(!hideSelectAll, () => html ` <cosmoz-omnitable-settings
|
|
30
28
|
.config=${settingsConfig}
|
|
31
29
|
part="settings"
|
|
32
30
|
></cosmoz-omnitable-settings>`)}
|
|
33
31
|
`;
|
|
34
32
|
};
|
|
35
|
-
customElements.define('cosmoz-omnitable-header-row',
|
|
33
|
+
customElements.define('cosmoz-omnitable-header-row', component(HeaderRow, { useShadowDOM: false }));
|
|
36
34
|
//# sourceMappingURL=cosmoz-omnitable-header-row.js.map
|
|
@@ -1,8 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
const
|
|
4
|
-
const cosmoz_utils_1 = require("@neovici/cosmoz-utils");
|
|
5
|
-
const style = (0, cosmoz_utils_1.css) `
|
|
1
|
+
import { component, html } from '@pionjs/pion';
|
|
2
|
+
import { css, sheet } from '@neovici/cosmoz-utils';
|
|
3
|
+
const style = css `
|
|
6
4
|
:host {
|
|
7
5
|
display: flex;
|
|
8
6
|
align-items: center;
|
|
@@ -24,7 +22,7 @@ const style = (0, cosmoz_utils_1.css) `
|
|
|
24
22
|
white-space: nowrap;
|
|
25
23
|
}
|
|
26
24
|
`;
|
|
27
|
-
const ItemExpandLine = ({ column }) =>
|
|
25
|
+
const ItemExpandLine = ({ column }) => html `
|
|
28
26
|
<div class="label" title="${column.title}" part="item-expand-label">
|
|
29
27
|
${column.title}
|
|
30
28
|
</div>
|
|
@@ -32,5 +30,5 @@ const ItemExpandLine = ({ column }) => (0, pion_1.html) `
|
|
|
32
30
|
<slot></slot>
|
|
33
31
|
</div>
|
|
34
32
|
`;
|
|
35
|
-
customElements.define('cosmoz-omnitable-item-expand-line',
|
|
33
|
+
customElements.define('cosmoz-omnitable-item-expand-line', component(ItemExpandLine, { styleSheets: [sheet(style)] }));
|
|
36
34
|
//# sourceMappingURL=cosmoz-omnitable-item-expand-line.js.map
|