@neovici/cosmoz-omnitable 14.14.3 → 14.15.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.d.ts +2 -0
- package/dist/cosmoz-omnitable-column-amount.d.ts.map +1 -0
- package/dist/cosmoz-omnitable-column-amount.js +113 -0
- package/dist/cosmoz-omnitable-column-autocomplete.d.ts +6 -0
- package/dist/cosmoz-omnitable-column-autocomplete.d.ts.map +1 -0
- package/dist/cosmoz-omnitable-column-autocomplete.js +87 -0
- package/dist/cosmoz-omnitable-column-boolean.d.ts +17 -0
- package/dist/cosmoz-omnitable-column-boolean.d.ts.map +1 -0
- package/dist/cosmoz-omnitable-column-boolean.js +105 -0
- package/dist/cosmoz-omnitable-column-date.d.ts +2 -0
- package/dist/cosmoz-omnitable-column-date.d.ts.map +1 -0
- package/dist/cosmoz-omnitable-column-date.js +97 -0
- package/dist/cosmoz-omnitable-column-datetime.d.ts +2 -0
- package/dist/cosmoz-omnitable-column-datetime.d.ts.map +1 -0
- package/dist/cosmoz-omnitable-column-datetime.js +106 -0
- package/dist/cosmoz-omnitable-column-list-data.d.ts +2 -0
- package/dist/cosmoz-omnitable-column-list-data.d.ts.map +1 -0
- package/dist/cosmoz-omnitable-column-list-data.js +123 -0
- package/dist/cosmoz-omnitable-column-list-horizontal.d.ts +2 -0
- package/dist/cosmoz-omnitable-column-list-horizontal.d.ts.map +1 -0
- package/{cosmoz-omnitable-column-list-horizontal.js → dist/cosmoz-omnitable-column-list-horizontal.js} +15 -37
- package/dist/cosmoz-omnitable-column-list-mixin.d.ts +59 -0
- package/dist/cosmoz-omnitable-column-list-mixin.d.ts.map +1 -0
- package/dist/cosmoz-omnitable-column-list-mixin.js +139 -0
- package/dist/cosmoz-omnitable-column-list.d.ts +2 -0
- package/dist/cosmoz-omnitable-column-list.d.ts.map +1 -0
- package/{cosmoz-omnitable-column-list.js → dist/cosmoz-omnitable-column-list.js} +28 -47
- package/dist/cosmoz-omnitable-column-mixin.d.ts +161 -0
- package/dist/cosmoz-omnitable-column-mixin.d.ts.map +1 -0
- package/dist/cosmoz-omnitable-column-mixin.js +121 -0
- package/dist/cosmoz-omnitable-column-number.d.ts +2 -0
- package/dist/cosmoz-omnitable-column-number.d.ts.map +1 -0
- package/dist/cosmoz-omnitable-column-number.js +112 -0
- package/dist/cosmoz-omnitable-column-time.d.ts +2 -0
- package/dist/cosmoz-omnitable-column-time.d.ts.map +1 -0
- package/dist/cosmoz-omnitable-column-time.js +102 -0
- package/dist/cosmoz-omnitable-column.d.ts +2 -0
- package/dist/cosmoz-omnitable-column.d.ts.map +1 -0
- package/dist/cosmoz-omnitable-column.js +75 -0
- package/dist/cosmoz-omnitable-columns.d.ts +2 -0
- package/dist/cosmoz-omnitable-columns.d.ts.map +1 -0
- package/{cosmoz-omnitable-columns.js → dist/cosmoz-omnitable-columns.js} +1 -0
- package/dist/cosmoz-omnitable-group-row.d.ts +2 -0
- package/dist/cosmoz-omnitable-group-row.d.ts.map +1 -0
- package/dist/cosmoz-omnitable-group-row.js +15 -0
- package/dist/cosmoz-omnitable-header-row.d.ts +2 -0
- package/dist/cosmoz-omnitable-header-row.d.ts.map +1 -0
- package/{cosmoz-omnitable-header-row.js → dist/cosmoz-omnitable-header-row.js} +12 -45
- package/dist/cosmoz-omnitable-item-expand-line.d.ts +2 -0
- package/dist/cosmoz-omnitable-item-expand-line.d.ts.map +1 -0
- package/{cosmoz-omnitable-item-expand-line.js → dist/cosmoz-omnitable-item-expand-line.js} +4 -9
- package/dist/cosmoz-omnitable-item-expand.d.ts +2 -0
- package/dist/cosmoz-omnitable-item-expand.d.ts.map +1 -0
- package/{cosmoz-omnitable-item-expand.js → dist/cosmoz-omnitable-item-expand.js} +10 -18
- package/dist/cosmoz-omnitable-item-row.d.ts +2 -0
- package/dist/cosmoz-omnitable-item-row.d.ts.map +1 -0
- package/dist/cosmoz-omnitable-item-row.js +19 -0
- package/dist/cosmoz-omnitable-skeleton.d.ts +2 -0
- package/dist/cosmoz-omnitable-skeleton.d.ts.map +1 -0
- package/{cosmoz-omnitable-skeleton.js → dist/cosmoz-omnitable-skeleton.js} +9 -25
- package/dist/cosmoz-omnitable-styles.d.ts +4 -0
- package/dist/cosmoz-omnitable-styles.d.ts.map +1 -0
- package/{cosmoz-omnitable-styles.js → dist/cosmoz-omnitable-styles.js} +3 -4
- package/dist/cosmoz-omnitable.d.ts +3 -0
- package/dist/cosmoz-omnitable.d.ts.map +1 -0
- package/{cosmoz-omnitable.js → dist/cosmoz-omnitable.js} +27 -40
- package/dist/grouped-list/cosmoz-grouped-list-row.d.ts +2 -0
- package/dist/grouped-list/cosmoz-grouped-list-row.d.ts.map +1 -0
- package/dist/grouped-list/cosmoz-grouped-list-row.js +31 -0
- package/dist/grouped-list/cosmoz-grouped-list.d.ts +2 -0
- package/dist/grouped-list/cosmoz-grouped-list.d.ts.map +1 -0
- package/dist/grouped-list/cosmoz-grouped-list.js +5 -0
- package/dist/grouped-list/index.d.ts +2 -0
- package/dist/grouped-list/index.d.ts.map +1 -0
- package/{grouped-list → dist/grouped-list}/index.js +1 -0
- package/dist/grouped-list/use-collapsible-items.d.ts +7 -0
- package/dist/grouped-list/use-collapsible-items.d.ts.map +1 -0
- package/dist/grouped-list/use-collapsible-items.js +27 -0
- package/dist/grouped-list/use-cosmoz-grouped-list.d.ts +15 -0
- package/dist/grouped-list/use-cosmoz-grouped-list.d.ts.map +1 -0
- package/dist/grouped-list/use-cosmoz-grouped-list.js +66 -0
- package/dist/grouped-list/use-selected-items.d.ts +19 -0
- package/dist/grouped-list/use-selected-items.d.ts.map +1 -0
- package/dist/grouped-list/use-selected-items.js +105 -0
- package/dist/grouped-list/use-weak-state.d.ts +6 -0
- package/dist/grouped-list/use-weak-state.d.ts.map +1 -0
- package/dist/grouped-list/use-weak-state.js +15 -0
- package/dist/grouped-list/utils.d.ts +11 -0
- package/dist/grouped-list/utils.d.ts.map +1 -0
- package/dist/grouped-list/utils.js +57 -0
- package/dist/lib/compute-layout.d.ts +3 -0
- package/dist/lib/compute-layout.d.ts.map +1 -0
- package/dist/lib/compute-layout.js +46 -0
- package/dist/lib/cosmoz-omnitable-amount-range-input.d.ts +2 -0
- package/dist/lib/cosmoz-omnitable-amount-range-input.d.ts.map +1 -0
- package/dist/lib/cosmoz-omnitable-amount-range-input.js +304 -0
- package/dist/lib/cosmoz-omnitable-date-input-mixin.d.ts +2 -0
- package/dist/lib/cosmoz-omnitable-date-input-mixin.d.ts.map +1 -0
- package/dist/lib/cosmoz-omnitable-date-input-mixin.js +149 -0
- package/dist/lib/cosmoz-omnitable-date-range-input.d.ts +2 -0
- package/dist/lib/cosmoz-omnitable-date-range-input.d.ts.map +1 -0
- package/{lib → dist/lib}/cosmoz-omnitable-date-range-input.js +32 -41
- package/dist/lib/cosmoz-omnitable-datetime-range-input.d.ts +2 -0
- package/dist/lib/cosmoz-omnitable-datetime-range-input.d.ts.map +1 -0
- package/{lib → dist/lib}/cosmoz-omnitable-datetime-range-input.js +27 -38
- package/dist/lib/cosmoz-omnitable-number-range-input.d.ts +2 -0
- package/dist/lib/cosmoz-omnitable-number-range-input.d.ts.map +1 -0
- package/{lib → dist/lib}/cosmoz-omnitable-number-range-input.js +73 -83
- package/dist/lib/cosmoz-omnitable-range-input-mixin.d.ts +2 -0
- package/dist/lib/cosmoz-omnitable-range-input-mixin.d.ts.map +1 -0
- package/dist/lib/cosmoz-omnitable-range-input-mixin.js +337 -0
- package/dist/lib/cosmoz-omnitable-resize-nub.d.ts +2 -0
- package/dist/lib/cosmoz-omnitable-resize-nub.d.ts.map +1 -0
- package/dist/lib/cosmoz-omnitable-resize-nub.js +33 -0
- package/dist/lib/cosmoz-omnitable-time-range-input.d.ts +2 -0
- package/dist/lib/cosmoz-omnitable-time-range-input.d.ts.map +1 -0
- package/dist/lib/cosmoz-omnitable-time-range-input.js +125 -0
- package/dist/lib/generic-sorter.d.ts +2 -0
- package/dist/lib/generic-sorter.d.ts.map +1 -0
- package/dist/lib/generic-sorter.js +29 -0
- package/dist/lib/icons.d.ts +5 -0
- package/dist/lib/icons.d.ts.map +1 -0
- package/{lib → dist/lib}/icons.js +5 -8
- package/dist/lib/layout.d.ts +2 -0
- package/dist/lib/layout.d.ts.map +1 -0
- package/dist/lib/layout.js +41 -0
- package/dist/lib/polymer-haunted-render-mixin.d.ts +10 -0
- package/dist/lib/polymer-haunted-render-mixin.d.ts.map +1 -0
- package/dist/lib/polymer-haunted-render-mixin.js +16 -0
- package/dist/lib/render-footer.d.ts +9 -0
- package/dist/lib/render-footer.d.ts.map +1 -0
- package/{lib → dist/lib}/render-footer.js +4 -17
- package/dist/lib/render-header.d.ts +14 -0
- package/dist/lib/render-header.d.ts.map +1 -0
- package/{lib → dist/lib}/render-header.js +6 -27
- package/dist/lib/render-list.d.ts +2 -0
- package/dist/lib/render-list.d.ts.map +1 -0
- package/{lib → dist/lib}/render-list.js +12 -45
- package/dist/lib/save-as-csv-action.d.ts +2 -0
- package/dist/lib/save-as-csv-action.d.ts.map +1 -0
- package/dist/lib/save-as-csv-action.js +26 -0
- package/dist/lib/save-as-xlsx-action.d.ts +3 -0
- package/dist/lib/save-as-xlsx-action.d.ts.map +1 -0
- package/dist/lib/save-as-xlsx-action.js +18 -0
- package/dist/lib/settings/cosmoz-omnitable-settings.d.ts +2 -0
- package/dist/lib/settings/cosmoz-omnitable-settings.d.ts.map +1 -0
- package/{lib → dist/lib}/settings/cosmoz-omnitable-settings.js +27 -69
- package/dist/lib/settings/cosmoz-omnitable-sort-group.d.ts +14 -0
- package/dist/lib/settings/cosmoz-omnitable-sort-group.d.ts.map +1 -0
- package/dist/lib/settings/cosmoz-omnitable-sort-group.js +55 -0
- package/dist/lib/settings/drivers/context.d.ts +12 -0
- package/dist/lib/settings/drivers/context.d.ts.map +1 -0
- package/dist/lib/settings/drivers/context.js +11 -0
- package/dist/lib/settings/drivers/index.d.ts +4 -0
- package/dist/lib/settings/drivers/index.d.ts.map +1 -0
- package/{lib → dist/lib}/settings/drivers/index.js +1 -0
- package/dist/lib/settings/drivers/local.d.ts +8 -0
- package/dist/lib/settings/drivers/local.d.ts.map +1 -0
- package/dist/lib/settings/drivers/local.js +33 -0
- package/dist/lib/settings/drivers/remote.d.ts +8 -0
- package/dist/lib/settings/drivers/remote.d.ts.map +1 -0
- package/dist/lib/settings/drivers/remote.js +25 -0
- package/dist/lib/settings/index.d.ts +2 -0
- package/dist/lib/settings/index.d.ts.map +1 -0
- package/{lib → dist/lib}/settings/index.js +1 -1
- package/dist/lib/settings/normalize.d.ts +11 -0
- package/dist/lib/settings/normalize.d.ts.map +1 -0
- package/dist/lib/settings/normalize.js +47 -0
- package/dist/lib/settings/style.css.d.ts +4 -0
- package/dist/lib/settings/style.css.d.ts.map +1 -0
- package/{lib → dist/lib}/settings/style.css.js +3 -4
- package/dist/lib/settings/use-saved-settings.d.ts +9 -0
- package/dist/lib/settings/use-saved-settings.d.ts.map +1 -0
- package/dist/lib/settings/use-saved-settings.js +35 -0
- package/dist/lib/settings/use-settings-ui.d.ts +3 -0
- package/dist/lib/settings/use-settings-ui.d.ts.map +1 -0
- package/dist/lib/settings/use-settings-ui.js +78 -0
- package/dist/lib/settings/use-settings.d.ts +23 -0
- package/dist/lib/settings/use-settings.d.ts.map +1 -0
- package/dist/lib/settings/use-settings.js +26 -0
- package/dist/lib/use-canvas-width.d.ts +2 -0
- package/dist/lib/use-canvas-width.d.ts.map +1 -0
- package/dist/lib/use-canvas-width.js +8 -0
- package/dist/lib/use-dom-columns.d.ts +5 -0
- package/dist/lib/use-dom-columns.d.ts.map +1 -0
- package/dist/lib/use-dom-columns.js +127 -0
- package/dist/lib/use-fast-layout.d.ts +13 -0
- package/dist/lib/use-fast-layout.d.ts.map +1 -0
- package/dist/lib/use-fast-layout.js +47 -0
- package/dist/lib/use-footer.d.ts +10 -0
- package/dist/lib/use-footer.d.ts.map +1 -0
- package/dist/lib/use-footer.js +11 -0
- package/dist/lib/use-hash-state.d.ts +4 -0
- package/dist/lib/use-hash-state.d.ts.map +1 -0
- package/dist/lib/use-hash-state.js +32 -0
- package/dist/lib/use-header.d.ts +21 -0
- package/dist/lib/use-header.d.ts.map +1 -0
- package/dist/lib/use-header.js +38 -0
- package/dist/lib/use-layout.d.ts +7 -0
- package/dist/lib/use-layout.d.ts.map +1 -0
- package/dist/lib/use-layout.js +21 -0
- package/dist/lib/use-list.d.ts +31 -0
- package/dist/lib/use-list.d.ts.map +1 -0
- package/dist/lib/use-list.js +198 -0
- package/dist/lib/use-mini.d.ts +10 -0
- package/dist/lib/use-mini.d.ts.map +1 -0
- package/dist/lib/use-mini.js +19 -0
- package/dist/lib/use-omnitable.d.ts +37 -0
- package/dist/lib/use-omnitable.d.ts.map +1 -0
- package/dist/lib/use-omnitable.js +74 -0
- package/dist/lib/use-processed-items.d.ts +17 -0
- package/dist/lib/use-processed-items.d.ts.map +1 -0
- package/dist/lib/use-processed-items.js +151 -0
- package/dist/lib/use-public-interface.d.ts +7 -0
- package/dist/lib/use-public-interface.d.ts.map +1 -0
- package/dist/lib/use-public-interface.js +82 -0
- package/dist/lib/use-resizable-columns.d.ts +7 -0
- package/dist/lib/use-resizable-columns.d.ts.map +1 -0
- package/dist/lib/use-resizable-columns.js +38 -0
- package/dist/lib/use-sort-and-group-options.d.ts +26 -0
- package/dist/lib/use-sort-and-group-options.d.ts.map +1 -0
- package/dist/lib/use-sort-and-group-options.js +36 -0
- package/dist/lib/use-track-size.d.ts +2 -0
- package/dist/lib/use-track-size.d.ts.map +1 -0
- package/dist/lib/use-track-size.js +15 -0
- package/dist/lib/use-tween-array.d.ts +3 -0
- package/dist/lib/use-tween-array.d.ts.map +1 -0
- package/dist/lib/use-tween-array.js +50 -0
- package/dist/lib/utils-amount.d.ts +26 -0
- package/dist/lib/utils-amount.d.ts.map +1 -0
- package/dist/lib/utils-amount.js +99 -0
- package/dist/lib/utils-data.d.ts +8 -0
- package/dist/lib/utils-data.d.ts.map +1 -0
- package/dist/lib/utils-data.js +28 -0
- package/dist/lib/utils-date.d.ts +25 -0
- package/dist/lib/utils-date.d.ts.map +1 -0
- package/dist/lib/utils-date.js +161 -0
- package/dist/lib/utils-datetime.d.ts +16 -0
- package/dist/lib/utils-datetime.d.ts.map +1 -0
- package/dist/lib/utils-datetime.js +52 -0
- package/dist/lib/utils-number.d.ts +19 -0
- package/dist/lib/utils-number.d.ts.map +1 -0
- package/dist/lib/utils-number.js +87 -0
- package/dist/lib/utils-time.d.ts +17 -0
- package/dist/lib/utils-time.d.ts.map +1 -0
- package/dist/lib/utils-time.js +88 -0
- package/dist/lib/utils.d.ts +3 -0
- package/dist/lib/utils.d.ts.map +1 -0
- package/dist/lib/utils.js +14 -0
- package/dist/ui-helpers/cosmoz-clear-button.d.ts +2 -0
- package/dist/ui-helpers/cosmoz-clear-button.d.ts.map +1 -0
- package/{ui-helpers → dist/ui-helpers}/cosmoz-clear-button.js +3 -5
- package/package.json +38 -8
- package/cosmoz-omnitable-column-amount.js +0 -162
- package/cosmoz-omnitable-column-autocomplete.js +0 -113
- package/cosmoz-omnitable-column-boolean.js +0 -168
- package/cosmoz-omnitable-column-date.js +0 -133
- package/cosmoz-omnitable-column-datetime.js +0 -145
- package/cosmoz-omnitable-column-list-data.js +0 -141
- package/cosmoz-omnitable-column-list-mixin.js +0 -198
- package/cosmoz-omnitable-column-mixin.js +0 -149
- package/cosmoz-omnitable-column-number.js +0 -157
- package/cosmoz-omnitable-column-time.js +0 -137
- package/cosmoz-omnitable-column.js +0 -99
- package/cosmoz-omnitable-group-row.js +0 -20
- package/cosmoz-omnitable-item-row.js +0 -38
- package/grouped-list/cosmoz-grouped-list-row.js +0 -41
- package/grouped-list/cosmoz-grouped-list.js +0 -13
- package/grouped-list/use-collapsible-items.js +0 -32
- package/grouped-list/use-cosmoz-grouped-list.js +0 -102
- package/grouped-list/use-selected-items.js +0 -140
- package/grouped-list/use-weak-state.js +0 -21
- package/grouped-list/utils.js +0 -89
- package/lib/compute-layout.js +0 -74
- package/lib/cosmoz-omnitable-amount-range-input.js +0 -353
- package/lib/cosmoz-omnitable-date-input-mixin.js +0 -182
- package/lib/cosmoz-omnitable-range-input-mixin.js +0 -451
- package/lib/cosmoz-omnitable-resize-nub.js +0 -41
- package/lib/cosmoz-omnitable-time-range-input.js +0 -154
- package/lib/generic-sorter.js +0 -35
- package/lib/layout.js +0 -61
- package/lib/polymer-haunted-render-mixin.js +0 -19
- package/lib/save-as-csv-action.js +0 -36
- package/lib/save-as-xlsx-action.js +0 -27
- package/lib/settings/cosmoz-omnitable-sort-group.js +0 -74
- package/lib/settings/drivers/context.js +0 -16
- package/lib/settings/drivers/local.js +0 -29
- package/lib/settings/drivers/remote.js +0 -22
- package/lib/settings/normalize.js +0 -76
- package/lib/settings/use-saved-settings.js +0 -43
- package/lib/settings/use-settings-ui.js +0 -125
- package/lib/settings/use-settings.js +0 -53
- package/lib/use-canvas-width.js +0 -12
- package/lib/use-dom-columns.js +0 -166
- package/lib/use-fast-layout.js +0 -73
- package/lib/use-footer.js +0 -16
- package/lib/use-hash-state.js +0 -71
- package/lib/use-header.js +0 -71
- package/lib/use-layout.js +0 -32
- package/lib/use-list.js +0 -263
- package/lib/use-mini.js +0 -30
- package/lib/use-omnitable.js +0 -99
- package/lib/use-processed-items.js +0 -254
- package/lib/use-public-interface.js +0 -107
- package/lib/use-resizable-columns.js +0 -63
- package/lib/use-sort-and-group-options.js +0 -95
- package/lib/use-track-size.js +0 -23
- package/lib/use-tween-array.js +0 -60
- package/lib/utils-amount.js +0 -131
- package/lib/utils-data.js +0 -42
- package/lib/utils-date.js +0 -194
- package/lib/utils-datetime.js +0 -66
- package/lib/utils-number.js +0 -111
- package/lib/utils-time.js +0 -112
- package/lib/utils.js +0 -17
|
@@ -9,34 +9,19 @@ import useSettingsUi from './use-settings-ui';
|
|
|
9
9
|
import { close, pull, arrow } from '../icons';
|
|
10
10
|
import { when } from 'lit-html/directives/when.js';
|
|
11
11
|
import { sheet } from '@neovici/cosmoz-utils';
|
|
12
|
-
|
|
13
12
|
const middleware = [
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
13
|
+
size({
|
|
14
|
+
apply({ availableHeight, elements }) {
|
|
15
|
+
Object.assign(elements.floating.style, {
|
|
16
|
+
maxHeight: `${Math.max(0, availableHeight)}px`,
|
|
17
|
+
});
|
|
18
|
+
},
|
|
19
|
+
}),
|
|
20
|
+
...defaultMiddleware,
|
|
22
21
|
];
|
|
23
|
-
|
|
24
|
-
const
|
|
25
|
-
|
|
26
|
-
onDragStart,
|
|
27
|
-
onDragEnter,
|
|
28
|
-
onDragOver,
|
|
29
|
-
onDragLeave,
|
|
30
|
-
onDrop,
|
|
31
|
-
onDown,
|
|
32
|
-
onToggle,
|
|
33
|
-
collapsed,
|
|
34
|
-
filters,
|
|
35
|
-
}) =>
|
|
36
|
-
(column, i) => {
|
|
37
|
-
const indeterminate = !!collapsed?.find((c) => c.name === column.name),
|
|
38
|
-
checked = !column.disabled && !indeterminate;
|
|
39
|
-
return html` <div
|
|
22
|
+
const renderItem = ({ onDragStart, onDragEnter, onDragOver, onDragLeave, onDrop, onDown, onToggle, collapsed, filters, }) => (column, i) => {
|
|
23
|
+
const indeterminate = !!collapsed?.find((c) => c.name === column.name), checked = !column.disabled && !indeterminate;
|
|
24
|
+
return html ` <div
|
|
40
25
|
class="item"
|
|
41
26
|
data-index=${i}
|
|
42
27
|
@mousedown=${onDown}
|
|
@@ -59,28 +44,18 @@ const renderItem =
|
|
|
59
44
|
.indeterminate=${indeterminate}
|
|
60
45
|
/>
|
|
61
46
|
</div>`;
|
|
62
|
-
|
|
63
|
-
|
|
47
|
+
};
|
|
64
48
|
const SettingsUI = (host) => {
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
settingsId,
|
|
68
|
-
onSave,
|
|
69
|
-
onReset,
|
|
70
|
-
hasChanges,
|
|
71
|
-
opened,
|
|
72
|
-
setOpened,
|
|
73
|
-
...thru
|
|
74
|
-
} = useSettingsUi(host);
|
|
75
|
-
return html` <div class="headline">
|
|
49
|
+
const { settings, settingsId, onSave, onReset, hasChanges, opened, setOpened, ...thru } = useSettingsUi(host);
|
|
50
|
+
return html ` <div class="headline">
|
|
76
51
|
${_('Sort and filter')}
|
|
77
52
|
<button
|
|
78
53
|
class="close"
|
|
79
54
|
@click=${(e) => {
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
55
|
+
const tg = e.currentTarget;
|
|
56
|
+
tg?.focus();
|
|
57
|
+
tg?.blur();
|
|
58
|
+
}}
|
|
84
59
|
>
|
|
85
60
|
${close}
|
|
86
61
|
</button>
|
|
@@ -124,10 +99,7 @@ const SettingsUI = (host) => {
|
|
|
124
99
|
>
|
|
125
100
|
</div>
|
|
126
101
|
|
|
127
|
-
${when(
|
|
128
|
-
settingsId,
|
|
129
|
-
() =>
|
|
130
|
-
html`<div class="buttons">
|
|
102
|
+
${when(settingsId, () => html `<div class="buttons">
|
|
131
103
|
<button
|
|
132
104
|
class="button reset"
|
|
133
105
|
@click=${onReset}
|
|
@@ -138,25 +110,15 @@ const SettingsUI = (host) => {
|
|
|
138
110
|
<button class="button" @click=${onSave} ?disabled=${!hasChanges}>
|
|
139
111
|
${_('Save')}
|
|
140
112
|
</button>
|
|
141
|
-
</div
|
|
142
|
-
)}`;
|
|
113
|
+
</div>`)}`;
|
|
143
114
|
};
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
'cosmoz-omnitable-settings-ui',
|
|
147
|
-
component(SettingsUI, { styleSheets: [sheet(style)] }),
|
|
148
|
-
);
|
|
149
|
-
|
|
150
|
-
const Settings = ({ config, newLayout }) => html`
|
|
115
|
+
customElements.define('cosmoz-omnitable-settings-ui', component(SettingsUI, { styleSheets: [sheet(style)] }));
|
|
116
|
+
const Settings = ({ config, newLayout }) => html `
|
|
151
117
|
<cosmoz-dropdown
|
|
152
118
|
.placement="${newLayout ? 'bottom-start' : 'bottom-end'}"
|
|
153
119
|
.middleware="${middleware}"
|
|
154
120
|
>
|
|
155
|
-
${when(
|
|
156
|
-
newLayout,
|
|
157
|
-
() => html`<div class="headerDots" slot="button">...</div>`,
|
|
158
|
-
() =>
|
|
159
|
-
html` <svg
|
|
121
|
+
${when(newLayout, () => html `<div class="headerDots" slot="button">...</div>`, () => html ` <svg
|
|
160
122
|
viewBox="0 0 24 24"
|
|
161
123
|
width="24"
|
|
162
124
|
slot="button"
|
|
@@ -165,17 +127,13 @@ const Settings = ({ config, newLayout }) => html`
|
|
|
165
127
|
<circle cx="10" cy="18" r="2"></circle>
|
|
166
128
|
<circle cx="10" cy="12" r="2"></circle>
|
|
167
129
|
<circle cx="10" cy="6" r="2"></circle>
|
|
168
|
-
</svg
|
|
169
|
-
)}
|
|
170
|
-
${when(config?.badge, () => html`<div class="badge" slot="button"></div>`)}
|
|
130
|
+
</svg>`)}
|
|
131
|
+
${when(config?.badge, () => html `<div class="badge" slot="button"></div>`)}
|
|
171
132
|
<cosmoz-omnitable-settings-ui
|
|
172
133
|
exportparts="columns, groups"
|
|
173
134
|
.config=${config}
|
|
174
135
|
></cosmoz-omnitable-settings-ui>
|
|
175
136
|
</cosmoz-dropdown>
|
|
176
137
|
`;
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
'cosmoz-omnitable-settings',
|
|
180
|
-
component(Settings, { styleSheets: [sheet(dropdownStyle)] }),
|
|
181
|
-
);
|
|
138
|
+
customElements.define('cosmoz-omnitable-settings', component(Settings, { styleSheets: [sheet(dropdownStyle)] }));
|
|
139
|
+
//# sourceMappingURL=cosmoz-omnitable-settings.js.map
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export function render({ column, on, descending, setOn, setDescending }: {
|
|
2
|
+
column: any;
|
|
3
|
+
on: any;
|
|
4
|
+
descending: any;
|
|
5
|
+
setOn: any;
|
|
6
|
+
setDescending: any;
|
|
7
|
+
}): import("lit-html").TemplateResult<1>;
|
|
8
|
+
export function renderAll({ columns, ...thru }: {
|
|
9
|
+
[x: string]: any;
|
|
10
|
+
columns: any;
|
|
11
|
+
}): any;
|
|
12
|
+
export function group(): import("lit-html").TemplateResult<1>;
|
|
13
|
+
export function sort(): import("lit-html").TemplateResult<1>;
|
|
14
|
+
//# sourceMappingURL=cosmoz-omnitable-sort-group.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cosmoz-omnitable-sort-group.d.ts","sourceRoot":"","sources":["../../../src/lib/settings/cosmoz-omnitable-sort-group.js"],"names":[],"mappings":"AAIO;;;;;;yCAwBN;AAEM;;;QAC+C;AAE/C,8DAmBN;AAEM,6DAmBN"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { html } from '@pionjs/pion';
|
|
2
|
+
import { ifDefined } from 'lit-html/directives/if-defined.js';
|
|
3
|
+
import { triangle } from '../icons';
|
|
4
|
+
export const render = ({ column, on, descending, setOn, setDescending }) => {
|
|
5
|
+
const { name, title } = column ?? {};
|
|
6
|
+
return html `<button
|
|
7
|
+
class="sg"
|
|
8
|
+
title=${title}
|
|
9
|
+
data-on=${ifDefined((name === on && (descending ? 'desc' : 'asc')) || undefined)}
|
|
10
|
+
@click=${(e) => {
|
|
11
|
+
const on = e.currentTarget?.dataset.on;
|
|
12
|
+
if (!on) {
|
|
13
|
+
setOn(name);
|
|
14
|
+
setDescending(false);
|
|
15
|
+
}
|
|
16
|
+
if (on === 'asc') {
|
|
17
|
+
setDescending(true);
|
|
18
|
+
}
|
|
19
|
+
else if (on === 'desc') {
|
|
20
|
+
setOn();
|
|
21
|
+
setDescending(false);
|
|
22
|
+
}
|
|
23
|
+
}}
|
|
24
|
+
>
|
|
25
|
+
<span>${title}</span> ${triangle}
|
|
26
|
+
</button>`;
|
|
27
|
+
};
|
|
28
|
+
export const renderAll = ({ columns, ...thru }) => columns?.map((column) => render({ column, ...thru }));
|
|
29
|
+
export const group = () => html `
|
|
30
|
+
<sort-and-group-consumer
|
|
31
|
+
class="sgs"
|
|
32
|
+
.render=${({ columns, groupOn: on, setGroupOn: setOn, groupOnDescending: descending, setGroupOnDescending: setDescending, } = {}) => renderAll({
|
|
33
|
+
columns: columns?.filter?.((c) => c['groupOn']),
|
|
34
|
+
on,
|
|
35
|
+
setOn,
|
|
36
|
+
descending,
|
|
37
|
+
setDescending,
|
|
38
|
+
})}
|
|
39
|
+
>
|
|
40
|
+
</sort-and-group-consumer>
|
|
41
|
+
`;
|
|
42
|
+
export const sort = () => html `
|
|
43
|
+
<sort-and-group-consumer
|
|
44
|
+
class="sgs"
|
|
45
|
+
.render=${({ columns, sortOn: on, setSortOn: setOn, descending, setDescending, } = {}) => renderAll({
|
|
46
|
+
columns: columns?.filter?.((c) => c['sortOn']),
|
|
47
|
+
on,
|
|
48
|
+
setOn,
|
|
49
|
+
descending,
|
|
50
|
+
setDescending,
|
|
51
|
+
})}
|
|
52
|
+
>
|
|
53
|
+
</sort-and-group-consumer>
|
|
54
|
+
`;
|
|
55
|
+
//# sourceMappingURL=cosmoz-omnitable-sort-group.js.map
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export const DriverContext: import("@pionjs/pion/lib/create-context").Context<({ prefix }?: {
|
|
2
|
+
prefix?: string | undefined;
|
|
3
|
+
}) => {
|
|
4
|
+
write: (settingsId: any, settings: any) => Promise<void>;
|
|
5
|
+
read: (settingsId: any) => Promise<any>;
|
|
6
|
+
}>;
|
|
7
|
+
export function useDriver(): {
|
|
8
|
+
write: (settingsId: any, settings: any) => Promise<void>;
|
|
9
|
+
read: (settingsId: any) => Promise<any>;
|
|
10
|
+
};
|
|
11
|
+
export function registerProvider(): void;
|
|
12
|
+
//# sourceMappingURL=context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../../src/lib/settings/drivers/context.js"],"names":[],"mappings":"AAGa;;;;;GAAoC;AAA1C;;;EAYL;AAZK,yCAYL"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { createContext, useContext, useMemo } from '@pionjs/pion';
|
|
2
|
+
import local from './local';
|
|
3
|
+
export const DriverContext = createContext(local), useDriver = () => {
|
|
4
|
+
const driver = useContext(DriverContext);
|
|
5
|
+
return useMemo(() => driver(), [driver]);
|
|
6
|
+
}, registerProvider = () => {
|
|
7
|
+
if (customElements.get('omnitable-settings-driver-provider'))
|
|
8
|
+
return;
|
|
9
|
+
customElements.define('omnitable-settings-driver-provider', DriverContext.Provider);
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/settings/drivers/index.js"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local.d.ts","sourceRoot":"","sources":["../../../../src/lib/settings/drivers/local.js"],"names":[],"mappings":"AAAe;;;;;EA4Bd"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
export default ({ prefix = 'omnitable-' } = {}) => {
|
|
2
|
+
const read = async (settingsId) => {
|
|
3
|
+
if (!settingsId) {
|
|
4
|
+
return;
|
|
5
|
+
}
|
|
6
|
+
try {
|
|
7
|
+
return JSON.parse(localStorage.getItem(prefix + settingsId));
|
|
8
|
+
}
|
|
9
|
+
catch (e) {
|
|
10
|
+
// eslint-disable-next-line no-console
|
|
11
|
+
console.error(e);
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
return {
|
|
15
|
+
write: async (settingsId, settings) => {
|
|
16
|
+
const key = prefix + settingsId;
|
|
17
|
+
try {
|
|
18
|
+
if (settings) {
|
|
19
|
+
localStorage.setItem(key, JSON.stringify(settings));
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
localStorage.removeItem(key);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
catch (e) {
|
|
26
|
+
// eslint-disable-next-line no-console
|
|
27
|
+
console.error(e);
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
read,
|
|
31
|
+
};
|
|
32
|
+
};
|
|
33
|
+
//# sourceMappingURL=local.js.map
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
declare function _default({ prefix, get$, post$ }?: {
|
|
2
|
+
prefix?: string | undefined;
|
|
3
|
+
}): {
|
|
4
|
+
write: (settingsId: any, settings?: {}) => Promise<void>;
|
|
5
|
+
read: (settingsId: any) => Promise<any>;
|
|
6
|
+
};
|
|
7
|
+
export default _default;
|
|
8
|
+
//# sourceMappingURL=remote.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remote.d.ts","sourceRoot":"","sources":["../../../../src/lib/settings/drivers/remote.js"],"names":[],"mappings":"AAAe;;;;;EAqBd"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export default ({ prefix = '', get$, post$ } = {}) => {
|
|
2
|
+
const read = async (settingsId) => {
|
|
3
|
+
try {
|
|
4
|
+
return await get$(prefix + settingsId);
|
|
5
|
+
}
|
|
6
|
+
catch (e) {
|
|
7
|
+
// eslint-disable-next-line no-console
|
|
8
|
+
console.error(e);
|
|
9
|
+
}
|
|
10
|
+
};
|
|
11
|
+
return {
|
|
12
|
+
write: async (settingsId, settings = {}) => {
|
|
13
|
+
const key = prefix + settingsId;
|
|
14
|
+
try {
|
|
15
|
+
await post$(key, settings);
|
|
16
|
+
}
|
|
17
|
+
catch (e) {
|
|
18
|
+
// eslint-disable-next-line no-console
|
|
19
|
+
console.error(e);
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
read,
|
|
23
|
+
};
|
|
24
|
+
};
|
|
25
|
+
//# sourceMappingURL=remote.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/settings/index.js"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export const sgProps: string[];
|
|
2
|
+
export function normalizeColumns(columns?: any[], settings?: any[], savedSettings?: any[]): any[];
|
|
3
|
+
export function normalizeStore(settings: any, current: any): any;
|
|
4
|
+
declare function _default({ columns, settings, savedSettings, initial }: {
|
|
5
|
+
columns: any;
|
|
6
|
+
settings: any;
|
|
7
|
+
savedSettings: any;
|
|
8
|
+
initial: any;
|
|
9
|
+
}): any;
|
|
10
|
+
export default _default;
|
|
11
|
+
//# sourceMappingURL=normalize.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"normalize.d.ts","sourceRoot":"","sources":["../../../src/lib/settings/normalize.js"],"names":[],"mappings":"AAEA,+BAAgF;AAIzE,kGA4CN;AAEM,iEAML;AAEa;;;;;QAed"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { props } from '@neovici/cosmoz-utils/object';
|
|
2
|
+
export const sgProps = ['sortOn', 'descending', 'groupOn', 'groupOnDescending'];
|
|
3
|
+
const byName = (name) => (item) => item.name === name;
|
|
4
|
+
export const normalizeColumns = (columns = [], settings = [], savedSettings = []) => {
|
|
5
|
+
const _settings = settings.filter((setting) => columns.some(byName(setting.name))), cols = columns.filter((column) => !settings.some(byName(column.name)) &&
|
|
6
|
+
!savedSettings.some(byName(column.name))), _savedSettings = savedSettings.filter((column) => !settings.some(byName(column.name)));
|
|
7
|
+
return [
|
|
8
|
+
..._settings,
|
|
9
|
+
..._savedSettings.flatMap((setting) => {
|
|
10
|
+
const column = columns.find((c) => c.name === setting.name);
|
|
11
|
+
if (!column) {
|
|
12
|
+
return [];
|
|
13
|
+
}
|
|
14
|
+
return {
|
|
15
|
+
...setting,
|
|
16
|
+
title: column.title,
|
|
17
|
+
minWidth: parseInt(column.minWidth, 10),
|
|
18
|
+
};
|
|
19
|
+
}),
|
|
20
|
+
...cols.map((column) => {
|
|
21
|
+
const { name, title, priority, minWidth, width, flex } = column;
|
|
22
|
+
return {
|
|
23
|
+
name,
|
|
24
|
+
title,
|
|
25
|
+
priority,
|
|
26
|
+
minWidth: parseInt(minWidth, 10),
|
|
27
|
+
width: parseInt(width, 10),
|
|
28
|
+
flex: parseInt(flex, 10),
|
|
29
|
+
};
|
|
30
|
+
}),
|
|
31
|
+
];
|
|
32
|
+
};
|
|
33
|
+
export const normalizeStore = (settings, current) => ({
|
|
34
|
+
...current,
|
|
35
|
+
...props(sgProps)(settings),
|
|
36
|
+
columns: settings.columns?.map(props(['name', 'priority', 'width', 'flex', 'disabled'])),
|
|
37
|
+
});
|
|
38
|
+
export default ({ columns, settings, savedSettings, initial }) => {
|
|
39
|
+
const init = Object.fromEntries(sgProps.flatMap((k) => (initial[k] != null ? [[k, initial[k]]] : [])));
|
|
40
|
+
return {
|
|
41
|
+
...init,
|
|
42
|
+
...props(sgProps)(savedSettings),
|
|
43
|
+
...settings,
|
|
44
|
+
columns: normalizeColumns(columns, settings?.columns, savedSettings?.columns),
|
|
45
|
+
};
|
|
46
|
+
};
|
|
47
|
+
//# sourceMappingURL=normalize.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"style.css.d.ts","sourceRoot":"","sources":["../../../src/lib/settings/style.css.js"],"names":[],"mappings":";;AAoNA,8BAgDE"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { tagged as css } from '@neovici/cosmoz-utils';
|
|
2
2
|
import { checkbox } from '../../cosmoz-omnitable-styles';
|
|
3
|
-
|
|
4
|
-
export default css`
|
|
3
|
+
export default css `
|
|
5
4
|
:host {
|
|
6
5
|
box-sizing: border-box;
|
|
7
6
|
display: flex;
|
|
@@ -209,8 +208,7 @@ export default css`
|
|
|
209
208
|
transform: scaleY(-1);
|
|
210
209
|
}
|
|
211
210
|
`;
|
|
212
|
-
|
|
213
|
-
export const dropdown = css`
|
|
211
|
+
export const dropdown = css `
|
|
214
212
|
:host {
|
|
215
213
|
display: contents;
|
|
216
214
|
color: var(
|
|
@@ -259,3 +257,4 @@ export const dropdown = css`
|
|
|
259
257
|
display: flex;
|
|
260
258
|
}
|
|
261
259
|
`;
|
|
260
|
+
//# sourceMappingURL=style.css.js.map
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
declare function _default(settingsId: any, settings: any, setSettings: any, onReset: any): {
|
|
2
|
+
settingsId: any;
|
|
3
|
+
savedSettings: any;
|
|
4
|
+
onSave: () => Promise<void>;
|
|
5
|
+
onReset: (e: any) => Promise<void>;
|
|
6
|
+
hasChanges: boolean;
|
|
7
|
+
};
|
|
8
|
+
export default _default;
|
|
9
|
+
//# sourceMappingURL=use-saved-settings.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-saved-settings.d.ts","sourceRoot":"","sources":["../../../src/lib/settings/use-saved-settings.js"],"names":[],"mappings":"AAIe;;;;;;EAsCd"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { useCallback, useEffect, useState } from '@pionjs/pion';
|
|
2
|
+
import { normalizeStore } from './normalize';
|
|
3
|
+
import { useDriver } from './drivers';
|
|
4
|
+
export default (settingsId, settings, setSettings, onReset) => {
|
|
5
|
+
const [savedSettings, setSavedSettings] = useState(), { read, write } = useDriver();
|
|
6
|
+
useEffect(async () => {
|
|
7
|
+
if (!settingsId) {
|
|
8
|
+
return;
|
|
9
|
+
}
|
|
10
|
+
setSavedSettings(await read(settingsId));
|
|
11
|
+
}, [settingsId, read]);
|
|
12
|
+
return {
|
|
13
|
+
settingsId,
|
|
14
|
+
savedSettings,
|
|
15
|
+
onSave: useCallback(async () => {
|
|
16
|
+
if (!settingsId) {
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
const newSettings = normalizeStore(settings, savedSettings);
|
|
20
|
+
await write(settingsId, newSettings);
|
|
21
|
+
setSettings();
|
|
22
|
+
setSavedSettings(newSettings);
|
|
23
|
+
}, [settings, savedSettings]),
|
|
24
|
+
onReset: useCallback(async (e) => {
|
|
25
|
+
setSettings();
|
|
26
|
+
if (e.shiftKey) {
|
|
27
|
+
await write(settingsId);
|
|
28
|
+
setSavedSettings();
|
|
29
|
+
}
|
|
30
|
+
onReset?.();
|
|
31
|
+
}, [onReset]),
|
|
32
|
+
hasChanges: settings != null,
|
|
33
|
+
};
|
|
34
|
+
};
|
|
35
|
+
//# sourceMappingURL=use-saved-settings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-settings-ui.d.ts","sourceRoot":"","sources":["../../../src/lib/settings/use-settings-ui.js"],"names":[],"mappings":"AAQe,0CAoHd"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { useCallback } from '@pionjs/pion';
|
|
2
|
+
import { useMeta } from '@neovici/cosmoz-utils/hooks/use-meta';
|
|
3
|
+
const parseIndex = (str) => {
|
|
4
|
+
const idx = parseInt(str, 10);
|
|
5
|
+
return isFinite(idx) ? idx : undefined;
|
|
6
|
+
};
|
|
7
|
+
export default (host) => {
|
|
8
|
+
const { config } = host, { settings, setSettings, collapsed } = config, meta = useMeta({
|
|
9
|
+
collapsed,
|
|
10
|
+
settings: settings.columns,
|
|
11
|
+
setSettings: useCallback((columns) => setSettings((cfg) => ({ ...cfg, columns })), [setSettings]),
|
|
12
|
+
});
|
|
13
|
+
return {
|
|
14
|
+
...config,
|
|
15
|
+
onDown: useCallback((e) => {
|
|
16
|
+
if (!e.target.closest('.pull')) {
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
meta.handle = e.currentTarget;
|
|
20
|
+
}, [meta]),
|
|
21
|
+
onDragStart: useCallback((e) => {
|
|
22
|
+
const { target } = e, index = parseIndex(target.dataset.index);
|
|
23
|
+
if (!meta.handle?.contains(target) || index == null) {
|
|
24
|
+
return e.preventDefault();
|
|
25
|
+
}
|
|
26
|
+
meta.handle = null;
|
|
27
|
+
e.dataTransfer.effectAllowed = 'move';
|
|
28
|
+
e.dataTransfer.setData('omnitable/sort-index', index);
|
|
29
|
+
e.dataTransfer.setData('text/plain', index);
|
|
30
|
+
setTimeout(() => target.classList.add('drag'), 0);
|
|
31
|
+
target.addEventListener('dragend', (e) => e.target.classList.remove('drag'), { once: true });
|
|
32
|
+
}, [meta]),
|
|
33
|
+
onDragEnter: useCallback((e) => {
|
|
34
|
+
const ctg = e.currentTarget;
|
|
35
|
+
if (ctg !== e.target) {
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
e.preventDefault();
|
|
39
|
+
e.dataTransfer.dropEffect = 'move';
|
|
40
|
+
ctg.classList.add('dragover');
|
|
41
|
+
}, []),
|
|
42
|
+
onDragOver: useCallback((e) => {
|
|
43
|
+
e.preventDefault();
|
|
44
|
+
e.currentTarget.classList.add('dragover');
|
|
45
|
+
}, []),
|
|
46
|
+
onDragLeave: useCallback((e) => {
|
|
47
|
+
const ctg = e.currentTarget;
|
|
48
|
+
if (ctg.contains(e.relatedTarget)) {
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
ctg.classList.remove('dragover');
|
|
52
|
+
}, []),
|
|
53
|
+
onDrop: useCallback((e) => {
|
|
54
|
+
const from = parseIndex(e.dataTransfer.getData('omnitable/sort-index')), to = parseIndex(e.currentTarget.dataset.index), { settings, setSettings } = meta;
|
|
55
|
+
e.currentTarget.classList.remove('dragover');
|
|
56
|
+
e.preventDefault();
|
|
57
|
+
const newSettings = settings.slice();
|
|
58
|
+
newSettings.splice(to + (from >= to ? 0 : -1), 0, newSettings.splice(from, 1)[0]);
|
|
59
|
+
setSettings(newSettings);
|
|
60
|
+
}, [meta]),
|
|
61
|
+
onToggle: useCallback((e) => {
|
|
62
|
+
const { settings, setSettings } = meta, newSettings = settings.map((column) => ({
|
|
63
|
+
...column,
|
|
64
|
+
disabled: column.disabled ||
|
|
65
|
+
meta.collapsed?.some((c) => c.name === column.name),
|
|
66
|
+
})), idx = parseIndex(e.target.closest('[data-index]')?.dataset.index);
|
|
67
|
+
newSettings.splice(idx, 1, {
|
|
68
|
+
...settings[idx],
|
|
69
|
+
disabled: !e.target.checked,
|
|
70
|
+
priority: e.target.checked
|
|
71
|
+
? settings.reduce((acc, s) => Math.max(acc, s.priority), 0) + 1
|
|
72
|
+
: settings[idx].priority,
|
|
73
|
+
});
|
|
74
|
+
setSettings(newSettings);
|
|
75
|
+
}, [meta]),
|
|
76
|
+
};
|
|
77
|
+
};
|
|
78
|
+
//# sourceMappingURL=use-settings-ui.js.map
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
declare function _default({ settingsId, host }: {
|
|
2
|
+
settingsId: any;
|
|
3
|
+
host: any;
|
|
4
|
+
}): {
|
|
5
|
+
opened: {
|
|
6
|
+
columns: boolean;
|
|
7
|
+
sort: boolean;
|
|
8
|
+
};
|
|
9
|
+
setOpened: import("@pionjs/pion").StateUpdater<{
|
|
10
|
+
columns: boolean;
|
|
11
|
+
sort: boolean;
|
|
12
|
+
}>;
|
|
13
|
+
settings: any;
|
|
14
|
+
columns: any;
|
|
15
|
+
setSettings: import("@pionjs/pion").StateUpdater<any>;
|
|
16
|
+
resetRef: import("@pionjs/pion").Ref<any>;
|
|
17
|
+
settingsId: any;
|
|
18
|
+
onSave: () => Promise<void>;
|
|
19
|
+
onReset: (e: any) => Promise<void>;
|
|
20
|
+
hasChanges: boolean;
|
|
21
|
+
};
|
|
22
|
+
export default _default;
|
|
23
|
+
//# sourceMappingURL=use-settings.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-settings.d.ts","sourceRoot":"","sources":["../../../src/lib/settings/use-settings.js"],"names":[],"mappings":"AAMe;;;;;;;;;;;;;;;;;;;;EA8Cd"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { useMemo, useState, useRef, useCallback } from '@pionjs/pion';
|
|
2
|
+
import useSavedSettings from './use-saved-settings';
|
|
3
|
+
import normalize, { sgProps } from './normalize';
|
|
4
|
+
import { useDOMColumns } from '../use-dom-columns';
|
|
5
|
+
export default ({ settingsId, host }) => {
|
|
6
|
+
const initial = useMemo(() => Object.fromEntries(sgProps.map((k) => [k, host[k]])), []), resetRef = useRef(), onReset = useCallback(() => {
|
|
7
|
+
resetRef.current?.(initial);
|
|
8
|
+
}, [initial]), [settings, setSettings] = useState(), [opened, setOpened] = useState({ columns: true, sort: true }), { savedSettings, ...rest } = useSavedSettings(settingsId, settings, setSettings, onReset), { enabledColumns } = host, columns = useDOMColumns(host, { enabledColumns }), normalizedSettings = useMemo(() => normalize({
|
|
9
|
+
columns,
|
|
10
|
+
settings,
|
|
11
|
+
savedSettings,
|
|
12
|
+
initial,
|
|
13
|
+
}), [columns, settings, savedSettings]), normalizedColumns = useMemo(() => normalizedSettings.columns
|
|
14
|
+
.map((s) => columns.find((c) => c.name === s.name))
|
|
15
|
+
.filter(Boolean), [columns, ...normalizedSettings.columns.map((s) => s.name)]);
|
|
16
|
+
return {
|
|
17
|
+
...rest,
|
|
18
|
+
opened,
|
|
19
|
+
setOpened,
|
|
20
|
+
settings: normalizedSettings,
|
|
21
|
+
columns: normalizedColumns,
|
|
22
|
+
setSettings,
|
|
23
|
+
resetRef,
|
|
24
|
+
};
|
|
25
|
+
};
|
|
26
|
+
//# sourceMappingURL=use-settings.js.map
|