@revolist/revogrid 4.12.12 → 4.13.2
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/cjs/{column.drag.plugin-0ce0b39a.js → column.drag.plugin-0f367fe1.js} +2 -1
- package/dist/cjs/column.drag.plugin-0f367fe1.js.map +1 -0
- package/dist/cjs/column.service-b59380a3.js.map +1 -1
- package/dist/cjs/{sorting.sign-a1e9d97a.js → grouping.row.renderer-d6119ced.js} +6 -6
- package/dist/cjs/grouping.row.renderer-d6119ced.js.map +1 -0
- package/dist/cjs/index.cjs.js +7 -6
- package/dist/cjs/index.cjs.js.map +1 -1
- package/dist/cjs/revo-grid.cjs.entry.js +2 -2
- package/dist/cjs/revo-grid.cjs.entry.js.map +1 -1
- package/dist/cjs/revogr-data_4.cjs.entry.js +5 -5
- package/dist/cjs/revogr-data_4.cjs.entry.js.map +1 -1
- package/dist/cjs/revogr-filter-panel.cjs.entry.js +1 -1
- package/dist/cjs/revogr-filter-panel.cjs.entry.js.map +1 -1
- package/dist/collection/components/revoGrid/revo-grid-style.css +109 -197
- package/dist/collection/plugins/filter/filter.style.css +12 -25
- package/dist/collection/plugins/sorting/sorting.plugin.js +2 -0
- package/dist/collection/plugins/sorting/sorting.plugin.js.map +1 -1
- package/dist/collection/store/selection/selection.store.js.map +1 -1
- package/dist/esm/{column.drag.plugin-017c4fb3.js → column.drag.plugin-d201beb7.js} +2 -2
- package/dist/esm/{column.drag.plugin-017c4fb3.js.map → column.drag.plugin-d201beb7.js.map} +1 -1
- package/dist/esm/column.service-f39c0a1d.js.map +1 -1
- package/dist/esm/{sorting.sign-c02e3b12.js → grouping.row.renderer-95f32c6b.js} +6 -6
- package/dist/esm/grouping.row.renderer-95f32c6b.js.map +1 -0
- package/dist/esm/index.js +3 -3
- package/dist/esm/revo-grid.entry.js +2 -2
- package/dist/esm/revo-grid.entry.js.map +1 -1
- package/dist/esm/revogr-data_4.entry.js +1 -1
- package/dist/esm/revogr-filter-panel.entry.js +1 -1
- package/dist/esm/revogr-filter-panel.entry.js.map +1 -1
- package/dist/revo-grid/app-globals-6b929fd8.js +8 -1
- package/dist/revo-grid/app-globals-6b929fd8.js.map +1 -1
- package/dist/revo-grid/column.drag.plugin-d201beb7.js +2522 -0
- package/dist/revo-grid/column.drag.plugin-d201beb7.js.map +1 -0
- package/dist/revo-grid/column.service-f39c0a1d.js +1293 -1
- package/dist/revo-grid/column.service-f39c0a1d.js.map +1 -1
- package/dist/revo-grid/debounce-b3166f78.js +491 -1
- package/dist/revo-grid/debounce-b3166f78.js.map +1 -1
- package/dist/revo-grid/dimension.helpers-5567e424.js +3608 -1
- package/dist/revo-grid/dimension.helpers-5567e424.js.map +1 -1
- package/dist/revo-grid/edit.utils-b59306be.js +13 -1
- package/dist/revo-grid/edit.utils-b59306be.js.map +1 -1
- package/dist/revo-grid/events-cf0893a3.js +38 -1
- package/dist/revo-grid/events-cf0893a3.js.map +1 -1
- package/dist/revo-grid/filter.button-84396156.js +34 -1
- package/dist/revo-grid/filter.button-84396156.js.map +1 -1
- package/dist/revo-grid/grouping.row.renderer-95f32c6b.js +65 -0
- package/dist/revo-grid/grouping.row.renderer-95f32c6b.js.map +1 -0
- package/dist/revo-grid/header-cell-renderer-31f53644.js +335 -1
- package/dist/revo-grid/header-cell-renderer-31f53644.js.map +1 -1
- package/dist/revo-grid/index-f6fae858.js +2090 -2
- package/dist/revo-grid/index-f6fae858.js.map +1 -1
- package/dist/revo-grid/index.esm.js +160 -1
- package/dist/revo-grid/index.esm.js.map +1 -1
- package/dist/revo-grid/key.utils-3632161b.js +85 -1
- package/dist/revo-grid/key.utils-3632161b.js.map +1 -1
- package/dist/revo-grid/resize-observer-83c9e167.js +501 -1
- package/dist/revo-grid/resize-observer-83c9e167.js.map +1 -1
- package/dist/revo-grid/revo-grid.entry.js +1943 -1
- package/dist/revo-grid/revo-grid.entry.js.map +1 -1
- package/dist/revo-grid/revo-grid.esm.js +21 -1
- package/dist/revo-grid/revo-grid.esm.js.map +1 -1
- package/dist/revo-grid/revogr-attribution_7.entry.js +1446 -1
- package/dist/revo-grid/revogr-attribution_7.entry.js.map +1 -1
- package/dist/revo-grid/revogr-clipboard_3.entry.js +455 -1
- package/dist/revo-grid/revogr-clipboard_3.entry.js.map +1 -1
- package/dist/revo-grid/revogr-data_4.entry.js +960 -1
- package/dist/revo-grid/revogr-data_4.entry.js.map +1 -1
- package/dist/revo-grid/revogr-filter-panel.entry.js +340 -1
- package/dist/revo-grid/revogr-filter-panel.entry.js.map +1 -1
- package/dist/revo-grid/text-editor-e47e56c3.js +74 -1
- package/dist/revo-grid/text-editor-e47e56c3.js.map +1 -1
- package/dist/revo-grid/throttle-dec28f5b.js +229 -1
- package/dist/revo-grid/throttle-dec28f5b.js.map +1 -1
- package/dist/revo-grid/viewport.helpers-7e7f9dad.js +48 -1
- package/dist/revo-grid/viewport.helpers-7e7f9dad.js.map +1 -1
- package/dist/revo-grid/viewport.store-c18a25a6.js +402 -1
- package/dist/revo-grid/viewport.store-c18a25a6.js.map +1 -1
- package/dist/types/plugins/sorting/sorting.plugin.d.ts +2 -0
- package/dist/types/store/selection/selection.store.d.ts +1 -1
- package/hydrate/index.js +7 -7
- package/hydrate/index.mjs +7 -7
- package/package.json +1 -1
- package/standalone/column.service.js.map +1 -1
- package/standalone/index.js +1 -1
- package/standalone/revo-grid.js +2 -2
- package/standalone/revo-grid.js.map +1 -1
- package/standalone/revogr-filter-panel.js +1 -1
- package/standalone/revogr-filter-panel.js.map +1 -1
- package/dist/cjs/column.drag.plugin-0ce0b39a.js.map +0 -1
- package/dist/cjs/sorting.sign-a1e9d97a.js.map +0 -1
- package/dist/esm/sorting.sign-c02e3b12.js.map +0 -1
- package/dist/revo-grid/column.drag.plugin-017c4fb3.js +0 -5
- package/dist/revo-grid/column.drag.plugin-017c4fb3.js.map +0 -1
- package/dist/revo-grid/sorting.sign-c02e3b12.js +0 -5
- package/dist/revo-grid/sorting.sign-c02e3b12.js.map +0 -1
|
@@ -81,11 +81,12 @@ revogr-filter-panel {
|
|
|
81
81
|
overflow: auto;
|
|
82
82
|
opacity: 1;
|
|
83
83
|
transform: none;
|
|
84
|
-
background-color: #fff;
|
|
84
|
+
background-color: var(--revo-grid-filter-panel-bg, #fff);
|
|
85
|
+
border: 1px solid var(--revo-grid-filter-panel-border, #cecece);
|
|
85
86
|
transform-origin: 62px 0px;
|
|
86
|
-
box-shadow: 0 5px 18px -2px rgba(0, 0, 0, 0.
|
|
87
|
+
box-shadow: 0 5px 18px -2px var(--revo-grid-filter-panel-shadow, rgba(0, 0, 0, 0.15));
|
|
87
88
|
padding: 10px;
|
|
88
|
-
border-radius:
|
|
89
|
+
border-radius: 8px;
|
|
89
90
|
min-width: 220px;
|
|
90
91
|
text-align: left;
|
|
91
92
|
}
|
|
@@ -105,7 +106,7 @@ revogr-filter-panel input[type=text] {
|
|
|
105
106
|
border: 0;
|
|
106
107
|
min-height: 34px;
|
|
107
108
|
margin: 5px 0;
|
|
108
|
-
background: #f3f3f3;
|
|
109
|
+
background: var(--revo-grid-filter-panel-input-bg, #f3f3f3);
|
|
109
110
|
border-radius: 5px;
|
|
110
111
|
padding: 0 10px;
|
|
111
112
|
box-sizing: border-box;
|
|
@@ -148,20 +149,18 @@ revogr-filter-panel .filter-actions {
|
|
|
148
149
|
.select-css {
|
|
149
150
|
display: block;
|
|
150
151
|
font-family: sans-serif;
|
|
151
|
-
font-weight: 600;
|
|
152
|
-
color: #444;
|
|
153
152
|
line-height: 1.3;
|
|
154
153
|
padding: 0.6em 1.4em 0.5em 0.8em;
|
|
155
154
|
width: 100%;
|
|
156
155
|
max-width: 100%; /* useful when width is set to anything other than 100% */
|
|
157
156
|
box-sizing: border-box;
|
|
158
157
|
margin: 0;
|
|
159
|
-
border: 1px solid #
|
|
158
|
+
border: 1px solid var(--revo-grid-filter-panel-select-border, #d9d9d9);
|
|
160
159
|
box-shadow: transparent;
|
|
161
160
|
border-radius: 0.5em;
|
|
162
161
|
appearance: none;
|
|
163
|
-
background-color: #
|
|
164
|
-
background-image: url("data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22292.4%22%20height%3D%22292.4%22%3E%3Cpath%20fill%3D%22%23007CB2%22%20d%3D%22M287%2069.4a17.6%2017.6%200%200%200-13-5.4H18.4c-5%200-9.3%201.8-12.9%205.4A17.6%2017.6%200%200%200%200%2082.2c0%205%201.8%209.3%205.4%2012.9l128%20127.9c3.6%203.6%207.8%205.4%2012.8%205.4s9.2-1.8%2012.8-5.4L287%2095c3.5-3.5%205.4-7.8%205.4-12.8%200-5-1.9-9.2-5.5-12.8z%22%2F%3E%3C%2Fsvg%3E")
|
|
162
|
+
background-color: var(--revo-grid-filter-panel-input-bg, #f3f3f3);
|
|
163
|
+
background-image: url("data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22292.4%22%20height%3D%22292.4%22%3E%3Cpath%20fill%3D%22%23007CB2%22%20d%3D%22M287%2069.4a17.6%2017.6%200%200%200-13-5.4H18.4c-5%200-9.3%201.8-12.9%205.4A17.6%2017.6%200%200%200%200%2082.2c0%205%201.8%209.3%205.4%2012.9l128%20127.9c3.6%203.6%207.8%205.4%2012.8%205.4s9.2-1.8%2012.8-5.4L287%2095c3.5-3.5%205.4-7.8%205.4-12.8%200-5-1.9-9.2-5.5-12.8z%22%2F%3E%3C%2Fsvg%3E");
|
|
165
164
|
background-repeat: no-repeat, repeat;
|
|
166
165
|
/* arrow icon position (1em from the right, 50% vertical) , then gradient position*/
|
|
167
166
|
background-position: right 0.7em top 50%, 0 0;
|
|
@@ -177,13 +176,12 @@ revogr-filter-panel .filter-actions {
|
|
|
177
176
|
display: none;
|
|
178
177
|
}
|
|
179
178
|
.select-css:hover {
|
|
180
|
-
border-color:
|
|
179
|
+
border-color: var(--revo-grid-filter-panel-select-border, #d9d9d9);
|
|
181
180
|
}
|
|
182
181
|
.select-css:focus {
|
|
183
|
-
border-color: #
|
|
182
|
+
border-color: var(--revo-grid-filter-panel-select-border-hover, #d9d9d9);
|
|
184
183
|
box-shadow: 0 0 1px 3px rgba(59, 153, 252, 0.7);
|
|
185
184
|
box-shadow: 0 0 0 3px -moz-mac-focusring;
|
|
186
|
-
color: #222;
|
|
187
185
|
outline: none;
|
|
188
186
|
}
|
|
189
187
|
.select-css option {
|
|
@@ -194,7 +192,7 @@ revogr-filter-panel .filter-actions {
|
|
|
194
192
|
background-image: url("data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22292.4%22%20height%3D%22292.4%22%3E%3Cpath%20fill%3D%22graytext%22%20d%3D%22M287%2069.4a17.6%2017.6%200%200%200-13-5.4H18.4c-5%200-9.3%201.8-12.9%205.4A17.6%2017.6%200%200%200%200%2082.2c0%205%201.8%209.3%205.4%2012.9l128%20127.9c3.6%203.6%207.8%205.4%2012.8%205.4s9.2-1.8%2012.8-5.4L287%2095c3.5-3.5%205.4-7.8%205.4-12.8%200-5-1.9-9.2-5.5-12.8z%22%2F%3E%3C%2Fsvg%3E"), linear-gradient(to bottom, #ffffff 0%, #ffffff 100%);
|
|
195
193
|
}
|
|
196
194
|
.select-css:disabled:hover, .select-css[aria-disabled=true] {
|
|
197
|
-
border-color: #
|
|
195
|
+
border-color: var(--revo-grid-filter-panel-select-border, #d9d9d9);
|
|
198
196
|
}
|
|
199
197
|
|
|
200
198
|
.multi-filter-list {
|
|
@@ -228,7 +226,7 @@ revogr-filter-panel .filter-actions {
|
|
|
228
226
|
.add-filter-divider {
|
|
229
227
|
display: block;
|
|
230
228
|
margin: 0 -10px 10px -10px;
|
|
231
|
-
border-bottom: 1px solid #d9d9d9;
|
|
229
|
+
border-bottom: 1px solid var(--revo-grid-filter-panel-divider, #d9d9d9);
|
|
232
230
|
height: 10px;
|
|
233
231
|
}
|
|
234
232
|
|
|
@@ -236,15 +234,4 @@ revogr-filter-panel .filter-actions {
|
|
|
236
234
|
display: flex;
|
|
237
235
|
justify-content: space-between;
|
|
238
236
|
align-items: center;
|
|
239
|
-
}
|
|
240
|
-
|
|
241
|
-
revo-grid[theme^=dark] revogr-filter-panel {
|
|
242
|
-
background-color: #28272b;
|
|
243
|
-
}
|
|
244
|
-
revo-grid[theme^=dark] revogr-filter-panel .add-filter-divider {
|
|
245
|
-
border-bottom-color: #28272b;
|
|
246
|
-
}
|
|
247
|
-
revo-grid[theme^=dark] revogr-filter-panel input[type=text] {
|
|
248
|
-
background-color: #d8d8d8;
|
|
249
|
-
color: black;
|
|
250
237
|
}
|
|
@@ -8,6 +8,8 @@ import { getCellRaw, getColumnByProp } from "../../utils/column.utils";
|
|
|
8
8
|
import { rowTypes } from "../../store/index";
|
|
9
9
|
import { sortIndexByItems } from "./sorting.func";
|
|
10
10
|
export * from './sorting.types';
|
|
11
|
+
export * from './sorting.func';
|
|
12
|
+
export * from './sorting.sign';
|
|
11
13
|
/**
|
|
12
14
|
* Lifecycle
|
|
13
15
|
* 1. @event `beforesorting` - Triggered when sorting just starts. Nothing has happened yet. This can be triggered from a column or from the source. If the type is from rows, the column will be undefined.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sorting.plugin.js","sourceRoot":"","sources":["../../../src/plugins/sorting/sorting.plugin.ts"],"names":[],"mappings":"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","sourcesContent":["import size from 'lodash/size';\nimport debounce from 'lodash/debounce';\n\nimport { BasePlugin } from '../base.plugin';\nimport type {\n ColumnProp,\n Order,\n CellCompareFunc,\n ColumnRegular,\n DataType,\n DimensionRows,\n PluginProviders,\n} from '@type';\nimport type { SortingConfig, SortingOrder, SortingOrderFunction } from './sorting.types';\nimport { getCellRaw, getColumnByProp } from '../../utils/column.utils';\nimport { rowTypes } from '@store';\nimport { sortIndexByItems } from './sorting.func';\n\nexport * from './sorting.types';\n\n/**\n * Lifecycle\n * 1. @event `beforesorting` - Triggered when sorting just starts. Nothing has happened yet. This can be triggered from a column or from the source. If the type is from rows, the column will be undefined.\n * 1.1. @event `beforesourcesortingapply` - Triggered before the sorting data is applied to the data source. You can prevent this event, and the data will not be sorted.\n * 2. Method `updateColumnSorting` - Updates the column sorting icon on the grid and the column itself, but the data remains untouched.\n * 3. @event `beforesortingapply` - Triggered before the sorting data is applied to the data source. You can prevent this event, and the data will not be sorted. This event is only called from a column sorting click.\n * 4. @event `aftersortingapply` - Triggered after sorting has been applied and completed. This event occurs for both row and column sorting.\n *\n * Note: If you prevent an event, it will not proceed to the subsequent steps.\n */\n\nexport class SortingPlugin extends BasePlugin {\n // sorting order per column\n sorting?: SortingOrder;\n\n // sorting function per column, multiple columns sorting supported\n sortingFunc?: SortingOrderFunction;\n sortingPromise: (() => void) | null = null;\n postponeSort = debounce(\n (order?: SortingOrder, comparison?: SortingOrderFunction, ignoreViewportUpdate?: boolean) =>\n this.runSorting(order, comparison, ignoreViewportUpdate),\n 50,\n );\n\n runSorting(\n order?: SortingOrder,\n comparison?: SortingOrderFunction,\n ignoreViewportUpdate?: boolean\n ) {\n this.sort(order, comparison, undefined, ignoreViewportUpdate);\n this.sortingPromise?.();\n this.sortingPromise = null;\n }\n\n constructor(\n public revogrid: HTMLRevoGridElement,\n providers: PluginProviders,\n config?: SortingConfig,\n ) {\n super(revogrid, providers);\n\n const setConfig = (cfg?: SortingConfig) => {\n if (cfg) {\n const sortingFunc: SortingOrderFunction = {};\n const order: SortingOrder = {};\n cfg.columns?.forEach(col => {\n sortingFunc[col.prop] = this.getComparer(col, col.order);\n order[col.prop] = col.order;\n });\n\n // // set sorting\n this.sorting = order;\n this.sortingFunc = sortingFunc;\n }\n }\n\n setConfig(config);\n\n this.addEventListener('sortingconfigchanged', ({ detail }) => {\n config = detail;\n setConfig(detail);\n this.startSorting(this.sorting, this.sortingFunc);\n });\n\n this.addEventListener('beforeanysource', ({\n detail: { type },\n }) => {\n // if sorting was provided - sort data\n if (!!this.sorting && this.sortingFunc) {\n const event = this.emit('beforesourcesortingapply', { type, sorting: this.sorting });\n if (event.defaultPrevented) {\n return;\n }\n this.startSorting(this.sorting, this.sortingFunc);\n }\n });\n this.addEventListener('aftercolumnsset', ({\n detail: { order },\n }) => {\n // if config provided - do nothing, read from config\n if (config) {\n return;\n }\n\n const columns = this.providers.column.getColumns();\n const sortingFunc: SortingOrderFunction = {};\n\n for (let prop in order) {\n const cmp = this.getComparer(\n getColumnByProp(columns, prop),\n order[prop],\n );\n sortingFunc[prop] = cmp;\n }\n\n // set sorting\n this.sorting = order;\n this.sortingFunc = order && sortingFunc;\n });\n this.addEventListener('beforeheaderclick', (e) => {\n if (e.defaultPrevented) {\n return;\n }\n\n if (!e.detail?.column?.sortable) {\n return;\n }\n\n this.headerclick(\n e.detail.column,\n e.detail.index,\n e.detail?.originalEvent?.shiftKey,\n );\n });\n }\n\n startSorting(order?: SortingOrder, sortingFunc?: SortingOrderFunction, ignoreViewportUpdate?: boolean) {\n if (!this.sortingPromise) {\n // add job before render\n this.revogrid.jobsBeforeRender.push(\n new Promise<void>(resolve => {\n this.sortingPromise = resolve;\n }),\n );\n }\n this.postponeSort(order, sortingFunc, ignoreViewportUpdate);\n }\n\n getComparer(column: Partial<ColumnRegular> | undefined, order: Order): CellCompareFunc | undefined {\n const cellCmp: CellCompareFunc =\n column?.cellCompare?.bind({ order }) || this.defaultCellCompare?.bind({ column, order });\n if (order == 'asc') {\n return cellCmp;\n }\n if (order == 'desc') {\n return this.descCellCompare(cellCmp);\n }\n return undefined;\n }\n\n /**\n * Apply sorting to data on header click\n * If additive - add to existing sorting, multiple columns can be sorted\n */\n headerclick(column: ColumnRegular, index: number, additive: boolean) {\n let order: Order = this.getNextOrder(column.order);\n const beforeEvent = this.emit('beforesorting', { column, order, additive });\n if (beforeEvent.defaultPrevented) {\n return;\n }\n order = beforeEvent.detail.order;\n const newCol = this.providers.column.updateColumnSorting(\n beforeEvent.detail.column,\n index,\n order,\n additive,\n );\n\n // apply sort data\n const beforeApplyEvent = this.emit('beforesortingapply', {\n column: newCol,\n order,\n additive,\n });\n if (beforeApplyEvent.defaultPrevented) {\n return;\n }\n const cmp = this.getComparer(beforeApplyEvent.detail.column, beforeApplyEvent.detail.order);\n\n if (beforeApplyEvent.detail.additive && this.sorting) {\n const sorting: SortingOrder = {};\n const sortingFunc: SortingOrderFunction = {};\n\n this.sorting = {\n ...this.sorting,\n ...sorting,\n };\n // extend sorting function with new sorting for multiple columns sorting\n this.sortingFunc = {\n ...this.sortingFunc,\n ...sortingFunc,\n };\n\n if (column.prop in sorting && size(sorting) > 1 && order === undefined) {\n delete sorting[column.prop];\n delete sortingFunc[column.prop];\n } else {\n sorting[column.prop] = order;\n sortingFunc[column.prop] = cmp;\n }\n } else {\n if (order) {\n // reset sorting\n this.sorting = { [column.prop]: order };\n this.sortingFunc = { [column.prop]: cmp };\n } else {\n delete this.sorting?.[column.prop];\n delete this.sortingFunc?.[column.prop];\n }\n }\n\n this.startSorting(this.sorting, this.sortingFunc);\n }\n\n /**\n * Sort items by sorting function\n * @requires proxyItems applied to row store\n * @requires source applied to row store\n *\n * @param sorting - per column sorting\n * @param data - this.stores['rgRow'].store.get('source')\n */\n sort(\n sorting?: SortingOrder,\n sortingFunc?: SortingOrderFunction,\n types: DimensionRows[] = rowTypes,\n ignoreViewportUpdate = false\n ) {\n // if no sorting - reset\n if (!Object.keys(sorting || {}).length) {\n for (let type of types) {\n const storeService = this.providers.data.stores[type];\n // row data\n const source = storeService.store.get('source');\n // row indexes\n const proxyItems = storeService.store.get('proxyItems');\n // row indexes\n const newItemsOrder = Array.from({ length: source.length }, (_, i) => i); // recover indexes range(0, source.length)\n this.providers.dimension.updateSizesPositionByNewDataIndexes(type, newItemsOrder, proxyItems);\n storeService.setData({ proxyItems: newItemsOrder, source: [...source], });\n }\n } else {\n for (let type of types) {\n const storeService = this.providers.data.stores[type];\n // row data\n const source = storeService.store.get('source');\n // row indexes\n const proxyItems = storeService.store.get('proxyItems');\n\n const newItemsOrder = sortIndexByItems(\n [...proxyItems],\n source,\n sortingFunc,\n );\n \n // take row indexes before trim applied and proxy items\n const prevItems = storeService.store.get('items');\n storeService.setData({\n proxyItems: newItemsOrder,\n source: [...source],\n });\n // take currently visible row indexes\n const newItems = storeService.store.get('items');\n if (!ignoreViewportUpdate) {\n this.providers.dimension\n .updateSizesPositionByNewDataIndexes(type, newItems, prevItems);\n }\n }\n }\n this.emit('aftersortingapply');\n }\n\n defaultCellCompare(this: { column?: ColumnRegular }, prop: ColumnProp, a: DataType, b: DataType) {\n const aRaw = this.column ? getCellRaw(a, this.column) : a?.[prop];\n const bRaw = this.column ? getCellRaw(b, this.column) : b?.[prop];\n const av = aRaw?.toString().toLowerCase();\n const bv = bRaw?.toString().toLowerCase();\n\n return av == bv ? 0 : av > bv ? 1 : -1;\n }\n\n descCellCompare(cmp: CellCompareFunc) {\n return (prop: ColumnProp, a: DataType, b: DataType): number => {\n return -1 * cmp(prop, a, b);\n };\n }\n\n getNextOrder(currentOrder: Order): Order {\n switch (currentOrder) {\n case undefined:\n return 'asc';\n case 'asc':\n return 'desc';\n case 'desc':\n return undefined;\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"sorting.plugin.js","sourceRoot":"","sources":["../../../src/plugins/sorting/sorting.plugin.ts"],"names":[],"mappings":"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","sourcesContent":["import size from 'lodash/size';\nimport debounce from 'lodash/debounce';\n\nimport { BasePlugin } from '../base.plugin';\nimport type {\n ColumnProp,\n Order,\n CellCompareFunc,\n ColumnRegular,\n DataType,\n DimensionRows,\n PluginProviders,\n} from '@type';\nimport type { SortingConfig, SortingOrder, SortingOrderFunction } from './sorting.types';\nimport { getCellRaw, getColumnByProp } from '../../utils/column.utils';\nimport { rowTypes } from '@store';\nimport { sortIndexByItems } from './sorting.func';\n\nexport * from './sorting.types';\nexport * from './sorting.func';\nexport * from './sorting.sign';\n\n/**\n * Lifecycle\n * 1. @event `beforesorting` - Triggered when sorting just starts. Nothing has happened yet. This can be triggered from a column or from the source. If the type is from rows, the column will be undefined.\n * 1.1. @event `beforesourcesortingapply` - Triggered before the sorting data is applied to the data source. You can prevent this event, and the data will not be sorted.\n * 2. Method `updateColumnSorting` - Updates the column sorting icon on the grid and the column itself, but the data remains untouched.\n * 3. @event `beforesortingapply` - Triggered before the sorting data is applied to the data source. You can prevent this event, and the data will not be sorted. This event is only called from a column sorting click.\n * 4. @event `aftersortingapply` - Triggered after sorting has been applied and completed. This event occurs for both row and column sorting.\n *\n * Note: If you prevent an event, it will not proceed to the subsequent steps.\n */\n\nexport class SortingPlugin extends BasePlugin {\n // sorting order per column\n sorting?: SortingOrder;\n\n // sorting function per column, multiple columns sorting supported\n sortingFunc?: SortingOrderFunction;\n sortingPromise: (() => void) | null = null;\n postponeSort = debounce(\n (order?: SortingOrder, comparison?: SortingOrderFunction, ignoreViewportUpdate?: boolean) =>\n this.runSorting(order, comparison, ignoreViewportUpdate),\n 50,\n );\n\n runSorting(\n order?: SortingOrder,\n comparison?: SortingOrderFunction,\n ignoreViewportUpdate?: boolean\n ) {\n this.sort(order, comparison, undefined, ignoreViewportUpdate);\n this.sortingPromise?.();\n this.sortingPromise = null;\n }\n\n constructor(\n public revogrid: HTMLRevoGridElement,\n providers: PluginProviders,\n config?: SortingConfig,\n ) {\n super(revogrid, providers);\n\n const setConfig = (cfg?: SortingConfig) => {\n if (cfg) {\n const sortingFunc: SortingOrderFunction = {};\n const order: SortingOrder = {};\n cfg.columns?.forEach(col => {\n sortingFunc[col.prop] = this.getComparer(col, col.order);\n order[col.prop] = col.order;\n });\n\n // // set sorting\n this.sorting = order;\n this.sortingFunc = sortingFunc;\n }\n }\n\n setConfig(config);\n\n this.addEventListener('sortingconfigchanged', ({ detail }) => {\n config = detail;\n setConfig(detail);\n this.startSorting(this.sorting, this.sortingFunc);\n });\n\n this.addEventListener('beforeanysource', ({\n detail: { type },\n }) => {\n // if sorting was provided - sort data\n if (!!this.sorting && this.sortingFunc) {\n const event = this.emit('beforesourcesortingapply', { type, sorting: this.sorting });\n if (event.defaultPrevented) {\n return;\n }\n this.startSorting(this.sorting, this.sortingFunc);\n }\n });\n this.addEventListener('aftercolumnsset', ({\n detail: { order },\n }) => {\n // if config provided - do nothing, read from config\n if (config) {\n return;\n }\n\n const columns = this.providers.column.getColumns();\n const sortingFunc: SortingOrderFunction = {};\n\n for (let prop in order) {\n const cmp = this.getComparer(\n getColumnByProp(columns, prop),\n order[prop],\n );\n sortingFunc[prop] = cmp;\n }\n\n // set sorting\n this.sorting = order;\n this.sortingFunc = order && sortingFunc;\n });\n this.addEventListener('beforeheaderclick', (e) => {\n if (e.defaultPrevented) {\n return;\n }\n\n if (!e.detail?.column?.sortable) {\n return;\n }\n\n this.headerclick(\n e.detail.column,\n e.detail.index,\n e.detail?.originalEvent?.shiftKey,\n );\n });\n }\n\n startSorting(order?: SortingOrder, sortingFunc?: SortingOrderFunction, ignoreViewportUpdate?: boolean) {\n if (!this.sortingPromise) {\n // add job before render\n this.revogrid.jobsBeforeRender.push(\n new Promise<void>(resolve => {\n this.sortingPromise = resolve;\n }),\n );\n }\n this.postponeSort(order, sortingFunc, ignoreViewportUpdate);\n }\n\n getComparer(column: Partial<ColumnRegular> | undefined, order: Order): CellCompareFunc | undefined {\n const cellCmp: CellCompareFunc =\n column?.cellCompare?.bind({ order }) || this.defaultCellCompare?.bind({ column, order });\n if (order == 'asc') {\n return cellCmp;\n }\n if (order == 'desc') {\n return this.descCellCompare(cellCmp);\n }\n return undefined;\n }\n\n /**\n * Apply sorting to data on header click\n * If additive - add to existing sorting, multiple columns can be sorted\n */\n headerclick(column: ColumnRegular, index: number, additive: boolean) {\n let order: Order = this.getNextOrder(column.order);\n const beforeEvent = this.emit('beforesorting', { column, order, additive });\n if (beforeEvent.defaultPrevented) {\n return;\n }\n order = beforeEvent.detail.order;\n const newCol = this.providers.column.updateColumnSorting(\n beforeEvent.detail.column,\n index,\n order,\n additive,\n );\n\n // apply sort data\n const beforeApplyEvent = this.emit('beforesortingapply', {\n column: newCol,\n order,\n additive,\n });\n if (beforeApplyEvent.defaultPrevented) {\n return;\n }\n const cmp = this.getComparer(beforeApplyEvent.detail.column, beforeApplyEvent.detail.order);\n\n if (beforeApplyEvent.detail.additive && this.sorting) {\n const sorting: SortingOrder = {};\n const sortingFunc: SortingOrderFunction = {};\n\n this.sorting = {\n ...this.sorting,\n ...sorting,\n };\n // extend sorting function with new sorting for multiple columns sorting\n this.sortingFunc = {\n ...this.sortingFunc,\n ...sortingFunc,\n };\n\n if (column.prop in sorting && size(sorting) > 1 && order === undefined) {\n delete sorting[column.prop];\n delete sortingFunc[column.prop];\n } else {\n sorting[column.prop] = order;\n sortingFunc[column.prop] = cmp;\n }\n } else {\n if (order) {\n // reset sorting\n this.sorting = { [column.prop]: order };\n this.sortingFunc = { [column.prop]: cmp };\n } else {\n delete this.sorting?.[column.prop];\n delete this.sortingFunc?.[column.prop];\n }\n }\n\n this.startSorting(this.sorting, this.sortingFunc);\n }\n\n /**\n * Sort items by sorting function\n * @requires proxyItems applied to row store\n * @requires source applied to row store\n *\n * @param sorting - per column sorting\n * @param data - this.stores['rgRow'].store.get('source')\n */\n sort(\n sorting?: SortingOrder,\n sortingFunc?: SortingOrderFunction,\n types: DimensionRows[] = rowTypes,\n ignoreViewportUpdate = false\n ) {\n // if no sorting - reset\n if (!Object.keys(sorting || {}).length) {\n for (let type of types) {\n const storeService = this.providers.data.stores[type];\n // row data\n const source = storeService.store.get('source');\n // row indexes\n const proxyItems = storeService.store.get('proxyItems');\n // row indexes\n const newItemsOrder = Array.from({ length: source.length }, (_, i) => i); // recover indexes range(0, source.length)\n this.providers.dimension.updateSizesPositionByNewDataIndexes(type, newItemsOrder, proxyItems);\n storeService.setData({ proxyItems: newItemsOrder, source: [...source], });\n }\n } else {\n for (let type of types) {\n const storeService = this.providers.data.stores[type];\n // row data\n const source = storeService.store.get('source');\n // row indexes\n const proxyItems = storeService.store.get('proxyItems');\n\n const newItemsOrder = sortIndexByItems(\n [...proxyItems],\n source,\n sortingFunc,\n );\n \n // take row indexes before trim applied and proxy items\n const prevItems = storeService.store.get('items');\n storeService.setData({\n proxyItems: newItemsOrder,\n source: [...source],\n });\n // take currently visible row indexes\n const newItems = storeService.store.get('items');\n if (!ignoreViewportUpdate) {\n this.providers.dimension\n .updateSizesPositionByNewDataIndexes(type, newItems, prevItems);\n }\n }\n }\n this.emit('aftersortingapply');\n }\n\n defaultCellCompare(this: { column?: ColumnRegular }, prop: ColumnProp, a: DataType, b: DataType) {\n const aRaw = this.column ? getCellRaw(a, this.column) : a?.[prop];\n const bRaw = this.column ? getCellRaw(b, this.column) : b?.[prop];\n const av = aRaw?.toString().toLowerCase();\n const bv = bRaw?.toString().toLowerCase();\n\n return av == bv ? 0 : av > bv ? 1 : -1;\n }\n\n descCellCompare(cmp: CellCompareFunc) {\n return (prop: ColumnProp, a: DataType, b: DataType): number => {\n return -1 * cmp(prop, a, b);\n };\n }\n\n getNextOrder(currentOrder: Order): Order {\n switch (currentOrder) {\n case undefined:\n return 'asc';\n case 'asc':\n return 'desc';\n case 'desc':\n return undefined;\n }\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"selection.store.js","sourceRoot":"","sources":["../../../src/store/selection/selection.store.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Selection store\n */\n\nimport { setStore, Observable } from '../../utils';\nimport { getRange } from '@store';\nimport { SelectionStoreState, Cell, TempRange, RangeArea, Nullable } from '@type';\nimport { createStore } from '@stencil/store';\n\nfunction defaultState(): SelectionStoreState {\n return {\n range: null,\n tempRange: null,\n tempRangeType: null,\n focus: null,\n edit: null,\n lastCell: null,\n nextFocus: null,\n };\n}\n\nexport class SelectionStore {\n readonly store: Observable<SelectionStoreState>;\n private unsubscribe: { (): void }[] = [];\n constructor() {\n this.store = createStore(defaultState());\n this.store.on('set', (key, newVal) => {\n if (key === 'tempRange' && !newVal) {\n this.store.set('tempRangeType', null);\n }\n });\n }\n\n onChange<Key extends keyof SelectionStoreState>(propName: Key, cb: (newValue: SelectionStoreState[Key]) => void) {\n this.unsubscribe.push(this.store.onChange(propName, cb));\n }\n\n clearFocus() {\n setStore(this.store, { focus: null, range: null, edit: null, tempRange: null });\n }\n\n setFocus(focus: Cell, end?: Cell) {\n if (!end) {\n setStore(this.store, { focus });\n } else {\n setStore(this.store, {\n focus,\n range: getRange(focus, end),\n edit: null,\n tempRange: null,\n });\n }\n }\n\n setNextFocus(focus: Cell) {\n setStore(this.store, { nextFocus: focus });\n }\n\n setTempArea(range: Nullable<TempRange> | null) {\n setStore(this.store, { tempRange: range?.area, tempRangeType: range?.type, edit: null });\n }\n\n clearTemp() {\n setStore(this.store, { tempRange: null });\n }\n\n /** Can be applied from selection change or from simple keyboard change clicks */\n setRangeArea(range: RangeArea | null) {\n setStore(this.store, { range, edit: null, tempRange: null });\n }\n setRange(start: Cell, end: Cell) {\n const range = getRange(start, end);\n this.setRangeArea(range);\n }\n\n setLastCell(lastCell: Cell) {\n setStore(this.store, { lastCell });\n }\n\n setEdit(val?: string | boolean) {\n const focus = this.store.get('focus');\n if (focus && typeof val === 'string') {\n setStore(this.store, {\n edit: { x: focus.x, y: focus.y, val },\n });\n return;\n }\n setStore(this.store, { edit: null });\n }\n\n dispose() {\n this.unsubscribe.forEach(f => f());\n this.store.dispose();\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"selection.store.js","sourceRoot":"","sources":["../../../src/store/selection/selection.store.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Selection store\n */\n\nimport { setStore, Observable } from '../../utils';\nimport { getRange } from '@store';\nimport type { SelectionStoreState, Cell, TempRange, RangeArea, Nullable } from '@type';\nimport { createStore } from '@stencil/store';\n\nfunction defaultState(): SelectionStoreState {\n return {\n range: null,\n tempRange: null,\n tempRangeType: null,\n focus: null,\n edit: null,\n lastCell: null,\n nextFocus: null,\n };\n}\n\nexport class SelectionStore {\n readonly store: Observable<SelectionStoreState>;\n private unsubscribe: { (): void }[] = [];\n constructor() {\n this.store = createStore(defaultState());\n this.store.on('set', (key, newVal) => {\n if (key === 'tempRange' && !newVal) {\n this.store.set('tempRangeType', null);\n }\n });\n }\n\n onChange<Key extends keyof SelectionStoreState>(propName: Key, cb: (newValue: SelectionStoreState[Key]) => void) {\n this.unsubscribe.push(this.store.onChange(propName, cb));\n }\n\n clearFocus() {\n setStore(this.store, { focus: null, range: null, edit: null, tempRange: null });\n }\n\n setFocus(focus: Cell, end?: Cell) {\n if (!end) {\n setStore(this.store, { focus });\n } else {\n setStore(this.store, {\n focus,\n range: getRange(focus, end),\n edit: null,\n tempRange: null,\n });\n }\n }\n\n setNextFocus(focus: Cell) {\n setStore(this.store, { nextFocus: focus });\n }\n\n setTempArea(range: Nullable<TempRange> | null) {\n setStore(this.store, { tempRange: range?.area, tempRangeType: range?.type, edit: null });\n }\n\n clearTemp() {\n setStore(this.store, { tempRange: null });\n }\n\n /** Can be applied from selection change or from simple keyboard change clicks */\n setRangeArea(range: RangeArea | null) {\n setStore(this.store, { range, edit: null, tempRange: null });\n }\n setRange(start: Cell, end: Cell) {\n const range = getRange(start, end);\n this.setRangeArea(range);\n }\n\n setLastCell(lastCell: Cell) {\n setStore(this.store, { lastCell });\n }\n\n setEdit(val?: string | boolean) {\n const focus = this.store.get('focus');\n if (focus && typeof val === 'string') {\n setStore(this.store, {\n edit: { x: focus.x, y: focus.y, val },\n });\n return;\n }\n setStore(this.store, { edit: null });\n }\n\n dispose() {\n this.unsubscribe.forEach(f => f());\n this.store.dispose();\n }\n}\n"]}
|
|
@@ -2517,6 +2517,6 @@ function getLeftRelative(absoluteX, gridPos, offset) {
|
|
|
2517
2517
|
return absoluteX - gridPos - offset;
|
|
2518
2518
|
}
|
|
2519
2519
|
|
|
2520
|
-
export { AutoSizeColumnPlugin as A, BasePlugin as B, ColumnMovePlugin as C, DimensionStore as D, ExportFilePlugin as E, FILTER_TRIMMED_TYPE as F, GroupingRowPlugin as G, StretchColumn as S, isStretchPlugin as a, ExportCsv as b, columnTypes as c, FILTER_CONFIG_CHANGED_EVENT as d, FILTE_PANEL as e, FilterPlugin as f, filterCoreFunctionsIndexedByType as g, filterTypes as h, isRowType as i, filterNames as j, doCollapse as k, doExpand as l, getLeftRelative as m, SortingPlugin as n, forEach as o, rowTypes as r };
|
|
2520
|
+
export { AutoSizeColumnPlugin as A, BasePlugin as B, ColumnMovePlugin as C, DimensionStore as D, ExportFilePlugin as E, FILTER_TRIMMED_TYPE as F, GroupingRowPlugin as G, StretchColumn as S, isStretchPlugin as a, ExportCsv as b, columnTypes as c, FILTER_CONFIG_CHANGED_EVENT as d, FILTE_PANEL as e, FilterPlugin as f, filterCoreFunctionsIndexedByType as g, filterTypes as h, isRowType as i, filterNames as j, doCollapse as k, doExpand as l, getLeftRelative as m, SortingPlugin as n, forEach as o, rowTypes as r, sortIndexByItems as s };
|
|
2521
2521
|
|
|
2522
|
-
//# sourceMappingURL=column.drag.plugin-
|
|
2522
|
+
//# sourceMappingURL=column.drag.plugin-d201beb7.js.map
|