@highcharts/grid-pro 2.2.0 → 2.3.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/LICENSE.txt +6 -0
- package/README.md +15 -9
- package/css/grid-pro.css +1262 -1122
- package/css/modules/grid-base-variables.css +131 -0
- package/css/modules/grid-button-variables.css +140 -0
- package/css/modules/grid-caption-variables.css +11 -0
- package/css/modules/grid-description-variables.css +11 -0
- package/css/modules/grid-input-variables.css +114 -0
- package/css/modules/grid-link-variables.css +18 -0
- package/css/modules/grid-menu-variables.css +50 -0
- package/css/modules/grid-pagination-variables.css +12 -0
- package/css/modules/grid-popup-variables.css +24 -0
- package/css/modules/grid-pro.css +234 -0
- package/css/modules/grid-table-variables.css +385 -0
- package/css/modules/grid-theme-default.css +55 -0
- package/es-modules/Accessibility/A11yI18n.js +1 -2
- package/es-modules/Accessibility/Accessibility.js +1 -2
- package/es-modules/Accessibility/AccessibilityComponent.d.ts +2 -2
- package/es-modules/Accessibility/Components/InfoRegionsComponent.js +5 -6
- package/es-modules/Accessibility/Components/LegendComponent.js +1 -2
- package/es-modules/Accessibility/Components/MenuComponent.js +1 -2
- package/es-modules/Accessibility/Components/NavigatorComponent.js +3 -4
- package/es-modules/Accessibility/Components/RangeSelectorComponent.js +1 -2
- package/es-modules/Accessibility/Components/SeriesComponent/ForcedMarkers.js +1 -2
- package/es-modules/Accessibility/Components/SeriesComponent/NewDataAnnouncer.js +3 -4
- package/es-modules/Accessibility/Components/SeriesComponent/SeriesDescriber.js +3 -4
- package/es-modules/Accessibility/Components/SeriesComponent/SeriesKeyboardNavigation.js +1 -2
- package/es-modules/Accessibility/Components/ZoomComponent.js +1 -2
- package/es-modules/Accessibility/FocusBorder.js +1 -2
- package/es-modules/Accessibility/KeyboardNavigation.js +1 -2
- package/es-modules/Accessibility/KeyboardNavigationHandler.js +1 -2
- package/es-modules/Accessibility/Options/A11yDefaults.d.ts +11 -0
- package/es-modules/Accessibility/Options/A11yDefaults.js +11 -0
- package/es-modules/Accessibility/Options/DeprecatedOptions.d.ts +58 -0
- package/es-modules/Accessibility/Options/DeprecatedOptions.js +7 -2
- package/es-modules/Accessibility/Options/LangDefaults.js +9 -0
- package/es-modules/Accessibility/ProxyElement.js +2 -5
- package/es-modules/Accessibility/ProxyProvider.js +1 -2
- package/es-modules/Accessibility/Utils/Announcer.js +2 -3
- package/es-modules/Accessibility/Utils/ChartUtilities.js +1 -2
- package/es-modules/Accessibility/Utils/EventProvider.d.ts +2 -2
- package/es-modules/Accessibility/Utils/EventProvider.js +6 -2
- package/es-modules/Accessibility/Utils/HTMLUtilities.js +1 -2
- package/es-modules/Core/Animation/AnimationUtilities.js +1 -2
- package/es-modules/Core/Animation/Fx.js +1 -2
- package/es-modules/Core/Callback.d.ts +9 -2
- package/es-modules/Core/Chart/Chart.js +48 -41
- package/es-modules/Core/Chart/Chart3D.js +1 -2
- package/es-modules/Core/Chart/ChartDefaults.js +11 -0
- package/es-modules/Core/Chart/ChartOptions.d.ts +8 -0
- package/es-modules/Core/Chart/GanttChart.js +1 -2
- package/es-modules/Core/Chart/MapChart.js +1 -2
- package/es-modules/Core/Chart/StockChart.js +2 -3
- package/es-modules/Core/Color/Color.js +1 -2
- package/es-modules/Core/Defaults.js +36 -9
- package/es-modules/Core/Delaunay.d.ts +52 -0
- package/es-modules/Core/Delaunay.js +310 -0
- package/es-modules/Core/Foundation.js +1 -2
- package/es-modules/Core/Geometry/CircleUtilities.js +1 -2
- package/es-modules/Core/Globals.js +1 -1
- package/es-modules/Core/HttpUtilities.js +1 -2
- package/es-modules/Core/MSPointer.js +1 -2
- package/es-modules/Core/Math3D.js +1 -2
- package/es-modules/Core/Options.d.ts +6 -2
- package/es-modules/Core/Pointer.js +23 -4
- package/es-modules/Core/PointerEvent.d.ts +2 -0
- package/es-modules/Core/Renderer/HTML/AST.js +2 -2
- package/es-modules/Core/Renderer/HTML/HTMLElement.js +1 -2
- package/es-modules/Core/Renderer/RendererUtilities.js +34 -19
- package/es-modules/Core/Responsive.d.ts +4 -2
- package/es-modules/Core/Responsive.js +10 -4
- package/es-modules/Core/Templating.d.ts +1 -1
- package/es-modules/Core/Templating.js +3 -4
- package/es-modules/Core/Time.d.ts +8 -0
- package/es-modules/Core/Time.js +2 -2
- package/es-modules/Core/Tooltip.d.ts +4 -8
- package/es-modules/Core/Tooltip.js +100 -81
- package/es-modules/Core/TooltipOptions.d.ts +44 -1
- package/es-modules/Core/Utilities.d.ts +25 -665
- package/es-modules/Core/Utilities.js +17 -1398
- package/es-modules/Data/ColumnUtils.d.ts +83 -80
- package/es-modules/Data/ColumnUtils.js +103 -113
- package/es-modules/Data/Connectors/CSVConnector.d.ts +9 -14
- package/es-modules/Data/Connectors/CSVConnector.js +3 -4
- package/es-modules/Data/Connectors/DataConnector.d.ts +52 -54
- package/es-modules/Data/Connectors/DataConnector.js +33 -52
- package/es-modules/Data/Connectors/GoogleSheetsConnector.d.ts +40 -42
- package/es-modules/Data/Connectors/GoogleSheetsConnector.js +73 -88
- package/es-modules/Data/Connectors/GoogleSheetsConnectorOptions.d.ts +4 -2
- package/es-modules/Data/Connectors/HTMLTableConnector.d.ts +23 -28
- package/es-modules/Data/Connectors/HTMLTableConnector.js +3 -4
- package/es-modules/Data/Connectors/JSONConnector.d.ts +9 -14
- package/es-modules/Data/Connectors/JSONConnector.js +3 -4
- package/es-modules/Data/Converters/CSVConverter.d.ts +5 -5
- package/es-modules/Data/Converters/CSVConverter.js +3 -4
- package/es-modules/Data/Converters/CSVConverterOptions.d.ts +2 -2
- package/es-modules/Data/Converters/DataConverter.d.ts +76 -78
- package/es-modules/Data/Converters/DataConverter.js +26 -53
- package/es-modules/Data/Converters/DataConverterUtils.d.ts +88 -81
- package/es-modules/Data/Converters/DataConverterUtils.js +169 -181
- package/es-modules/Data/Converters/GoogleSheetsConverter.d.ts +4 -4
- package/es-modules/Data/Converters/GoogleSheetsConverter.js +3 -3
- package/es-modules/Data/Converters/GoogleSheetsConverterOptions.d.ts +2 -2
- package/es-modules/Data/Converters/HTMLTableConverter.d.ts +4 -4
- package/es-modules/Data/Converters/HTMLTableConverter.js +2 -3
- package/es-modules/Data/Converters/HTMLTableConverterOptions.d.ts +2 -2
- package/es-modules/Data/Converters/JSONConverter.d.ts +7 -7
- package/es-modules/Data/Converters/JSONConverter.js +6 -6
- package/es-modules/Data/Converters/JSONConverterOptions.d.ts +2 -2
- package/es-modules/Data/DataCursor.d.ts +65 -70
- package/es-modules/Data/DataCursor.js +119 -139
- package/es-modules/Data/DataEvent.d.ts +55 -57
- package/es-modules/Data/DataPool.d.ts +10 -17
- package/es-modules/Data/DataPool.js +20 -9
- package/es-modules/Data/DataTable.d.ts +111 -113
- package/es-modules/Data/DataTable.js +3 -3
- package/es-modules/Data/DataTableCore.d.ts +9 -9
- package/es-modules/Data/DataTableCore.js +2 -2
- package/es-modules/Data/Formula/FormulaParser.js +1 -2
- package/es-modules/Data/Formula/FormulaProcessor.js +1 -2
- package/es-modules/Data/Modifiers/ChainModifier.d.ts +29 -34
- package/es-modules/Data/Modifiers/ChainModifier.js +7 -8
- package/es-modules/Data/Modifiers/DataModifier.d.ts +36 -41
- package/es-modules/Data/Modifiers/DataModifier.js +31 -53
- package/es-modules/Data/Modifiers/FilterModifier.d.ts +4 -4
- package/es-modules/Data/Modifiers/FilterModifier.js +3 -4
- package/es-modules/Data/Modifiers/FilterModifierOptions.d.ts +3 -2
- package/es-modules/Data/Modifiers/InvertModifier.d.ts +4 -4
- package/es-modules/Data/Modifiers/InvertModifier.js +3 -4
- package/es-modules/Data/Modifiers/MathModifier.d.ts +5 -4
- package/es-modules/Data/Modifiers/RangeModifier.d.ts +4 -4
- package/es-modules/Data/Modifiers/RangeModifier.js +3 -4
- package/es-modules/Data/Modifiers/SortModifier.d.ts +6 -11
- package/es-modules/Data/Modifiers/SortModifier.js +3 -4
- package/es-modules/Data/Modifiers/SortModifierOptions.d.ts +3 -3
- package/es-modules/Grid/Core/Accessibility/Accessibility.d.ts +1 -1
- package/es-modules/Grid/Core/Accessibility/Accessibility.js +5 -6
- package/es-modules/Grid/Core/Data/DataProvider.d.ts +97 -0
- package/es-modules/Grid/Core/Data/DataProvider.js +89 -0
- package/es-modules/Grid/Core/Data/DataProviderRegistry.d.ts +20 -0
- package/es-modules/Grid/Core/Data/DataProviderRegistry.js +52 -0
- package/es-modules/Grid/Core/Data/DataProviderType.d.ts +19 -0
- package/es-modules/Grid/Core/Data/DataProviderType.js +15 -0
- package/es-modules/Grid/Core/Data/LocalDataProvider.d.ts +165 -0
- package/es-modules/Grid/Core/Data/LocalDataProvider.js +341 -0
- package/es-modules/Grid/Core/Defaults.js +4 -2
- package/es-modules/Grid/Core/Globals.d.ts +20 -16
- package/es-modules/Grid/Core/Globals.js +10 -8
- package/es-modules/Grid/Core/Grid.d.ts +31 -22
- package/es-modules/Grid/Core/Grid.js +214 -136
- package/es-modules/Grid/Core/GridUtils.d.ts +33 -0
- package/es-modules/Grid/Core/GridUtils.js +50 -3
- package/es-modules/Grid/Core/Options.d.ts +145 -4
- package/es-modules/Grid/Core/Pagination/Pagination.d.ts +3 -0
- package/es-modules/Grid/Core/Pagination/Pagination.js +63 -23
- package/es-modules/Grid/Core/Pagination/PaginationOptions.d.ts +4 -0
- package/es-modules/Grid/Core/Querying/FilteringController.js +1 -2
- package/es-modules/Grid/Core/Querying/PaginationController.d.ts +2 -2
- package/es-modules/Grid/Core/Querying/PaginationController.js +3 -3
- package/es-modules/Grid/Core/Querying/QueryingController.d.ts +1 -1
- package/es-modules/Grid/Core/Querying/QueryingController.js +2 -26
- package/es-modules/Grid/Core/Responsive/ResponsiveComposition.d.ts +53 -0
- package/es-modules/Grid/Core/Responsive/ResponsiveComposition.js +229 -0
- package/es-modules/Grid/Core/Responsive/ResponsiveOptions.d.ts +58 -0
- package/es-modules/Grid/Core/Responsive/ResponsiveOptions.js +15 -0
- package/es-modules/Grid/Core/Table/Actions/ColumnFiltering/ColumnFiltering.js +2 -3
- package/es-modules/Grid/Core/Table/Actions/ColumnFiltering/FilterCell.d.ts +1 -1
- package/es-modules/Grid/Core/Table/Actions/ColumnFiltering/FilterCell.js +3 -4
- package/es-modules/Grid/Core/Table/Actions/ColumnFiltering/FilterRow.d.ts +1 -1
- package/es-modules/Grid/Core/Table/Actions/ColumnFiltering/FilterRow.js +2 -2
- package/es-modules/Grid/Core/Table/Actions/ColumnSorting.d.ts +17 -1
- package/es-modules/Grid/Core/Table/Actions/ColumnSorting.js +58 -15
- package/es-modules/Grid/Core/Table/Actions/ColumnsResizer.js +1 -3
- package/es-modules/Grid/Core/Table/Actions/RowsVirtualizer.d.ts +57 -3
- package/es-modules/Grid/Core/Table/Actions/RowsVirtualizer.js +397 -118
- package/es-modules/Grid/Core/Table/Body/CellContextMenu.d.ts +11 -0
- package/es-modules/Grid/Core/Table/Body/CellContextMenu.js +84 -0
- package/es-modules/Grid/Core/Table/Body/TableCell.d.ts +27 -13
- package/es-modules/Grid/Core/Table/Body/TableCell.js +74 -25
- package/es-modules/Grid/Core/Table/Body/TableRow.d.ts +7 -15
- package/es-modules/Grid/Core/Table/Body/TableRow.js +24 -19
- package/es-modules/Grid/Core/Table/Cell.d.ts +16 -3
- package/es-modules/Grid/Core/Table/Cell.js +36 -3
- package/es-modules/Grid/Core/Table/CellContent/TextContent.js +3 -8
- package/es-modules/Grid/Core/Table/Column.d.ts +10 -4
- package/es-modules/Grid/Core/Table/Column.js +23 -34
- package/es-modules/Grid/Core/Table/ColumnResizing/IndependentResizingMode.js +9 -8
- package/es-modules/Grid/Core/Table/ColumnResizing/ResizingMode.js +4 -3
- package/es-modules/Grid/Core/Table/Header/ColumnToolbar/ColumnToolbar.d.ts +5 -0
- package/es-modules/Grid/Core/Table/Header/ColumnToolbar/ColumnToolbar.js +7 -2
- package/es-modules/Grid/Core/Table/Header/ColumnToolbar/FilterPopup.js +1 -2
- package/es-modules/Grid/Core/Table/Header/ColumnToolbar/MenuButtons/FilterMenuButton.js +1 -2
- package/es-modules/Grid/Core/Table/Header/ColumnToolbar/MenuButtons/SortMenuButton.js +2 -3
- package/es-modules/Grid/Core/Table/Header/ColumnToolbar/ToolbarButtons/FilterToolbarButton.js +1 -2
- package/es-modules/Grid/Core/Table/Header/ColumnToolbar/ToolbarButtons/MenuToolbarButton.js +1 -2
- package/es-modules/Grid/Core/Table/Header/ColumnToolbar/ToolbarButtons/SortToolbarButton.d.ts +0 -1
- package/es-modules/Grid/Core/Table/Header/ColumnToolbar/ToolbarButtons/SortToolbarButton.js +4 -14
- package/es-modules/Grid/Core/Table/Header/HeaderCell.d.ts +6 -1
- package/es-modules/Grid/Core/Table/Header/HeaderCell.js +33 -13
- package/es-modules/Grid/Core/Table/Header/HeaderRow.js +4 -5
- package/es-modules/Grid/Core/Table/Header/TableHeader.d.ts +1 -1
- package/es-modules/Grid/Core/Table/Header/TableHeader.js +3 -3
- package/es-modules/Grid/Core/Table/Row.d.ts +1 -1
- package/es-modules/Grid/Core/Table/Row.js +2 -2
- package/es-modules/Grid/Core/Table/Table.d.ts +38 -12
- package/es-modules/Grid/Core/Table/Table.js +184 -91
- package/es-modules/Grid/Core/UI/ContextMenuButton.d.ts +6 -7
- package/es-modules/Grid/Core/UI/ContextMenuButton.js +5 -3
- package/es-modules/Grid/Core/UI/Popup.js +7 -9
- package/es-modules/Grid/Core/UI/SvgIcons.d.ts +42 -7
- package/es-modules/Grid/Core/UI/SvgIcons.js +206 -33
- package/es-modules/Grid/Core/UI/Toolbar.d.ts +5 -0
- package/es-modules/Grid/Core/UI/ToolbarButton.d.ts +4 -12
- package/es-modules/Grid/Core/UI/ToolbarButton.js +8 -26
- package/es-modules/Grid/Pro/CellEditing/CellEditMode.d.ts +2 -2
- package/es-modules/Grid/Pro/CellEditing/CellEditing.js +10 -10
- package/es-modules/Grid/Pro/CellEditing/CellEditingComposition.js +1 -2
- package/es-modules/Grid/Pro/CellRendering/CellRenderersComposition.d.ts +1 -1
- package/es-modules/Grid/Pro/CellRendering/CellRenderersComposition.js +4 -2
- package/es-modules/Grid/Pro/CellRendering/ContentTypes/CheckboxContent.d.ts +2 -2
- package/es-modules/Grid/Pro/CellRendering/ContentTypes/NumberInputContent.js +1 -2
- package/es-modules/Grid/Pro/CellRendering/ContentTypes/SelectContent.d.ts +2 -2
- package/es-modules/Grid/Pro/CellRendering/ContentTypes/SparklineContent.js +1 -2
- package/es-modules/Grid/Pro/CellRendering/ContentTypes/TextInputContent.d.ts +2 -2
- package/es-modules/Grid/Pro/CellRendering/ContentTypes/TextInputContent.js +1 -2
- package/es-modules/Grid/Pro/CellRendering/Renderers/CheckboxRenderer.js +1 -2
- package/es-modules/Grid/Pro/CellRendering/Renderers/DateInputRenderer.js +1 -2
- package/es-modules/Grid/Pro/CellRendering/Renderers/DateTimeInputRenderer.js +1 -2
- package/es-modules/Grid/Pro/CellRendering/Renderers/NumberInputRenderer.js +1 -2
- package/es-modules/Grid/Pro/CellRendering/Renderers/SelectRenderer.js +1 -2
- package/es-modules/Grid/Pro/CellRendering/Renderers/SparklineRenderer.d.ts +2 -2
- package/es-modules/Grid/Pro/CellRendering/Renderers/SparklineRenderer.js +1 -2
- package/es-modules/Grid/Pro/CellRendering/Renderers/TextInputRenderer.js +1 -2
- package/es-modules/Grid/Pro/CellRendering/Renderers/TextRenderer.js +1 -2
- package/es-modules/Grid/Pro/CellRendering/Renderers/TimeInputRenderer.js +1 -2
- package/es-modules/Grid/Pro/ColumnTypes/Validator.js +34 -32
- package/es-modules/Grid/Pro/ColumnTypes/ValidatorComposition.d.ts +1 -1
- package/es-modules/Grid/Pro/ColumnTypes/ValidatorComposition.js +3 -4
- package/es-modules/Grid/Pro/Credits/CreditsProComposition.js +1 -3
- package/es-modules/Grid/Pro/Data/DataSourceHelper.d.ts +74 -0
- package/es-modules/Grid/Pro/Data/DataSourceHelper.js +246 -0
- package/es-modules/Grid/Pro/Data/QuerySerializer.d.ts +46 -0
- package/es-modules/Grid/Pro/Data/QuerySerializer.js +169 -0
- package/es-modules/Grid/Pro/Data/RemoteDataProvider.d.ts +187 -0
- package/es-modules/Grid/Pro/Data/RemoteDataProvider.js +500 -0
- package/es-modules/Grid/Pro/Export/Exporting.js +1 -2
- package/es-modules/Grid/Pro/Export/ExportingComposition.js +1 -2
- package/es-modules/Grid/Pro/GridEvents.js +1 -2
- package/es-modules/Grid/Pro/Pagination/PaginationComposition.d.ts +0 -1
- package/es-modules/Grid/Pro/Pagination/PaginationComposition.js +1 -2
- package/es-modules/Shared/BaseForm.js +1 -2
- package/es-modules/Shared/DownloadURL.js +1 -2
- package/es-modules/Shared/TimeBase.js +3 -3
- package/es-modules/Shared/Types.d.ts +7 -0
- package/es-modules/Shared/Utilities.d.ts +576 -0
- package/es-modules/Shared/Utilities.js +1368 -0
- package/es-modules/masters/grid-pro.src.d.ts +15 -11
- package/es-modules/masters/grid-pro.src.js +12 -5
- package/grid-pro.d.ts +15 -11
- package/grid-pro.js +3 -3
- package/grid-pro.js.map +1 -1
- package/grid-pro.src.d.ts +15 -11
- package/grid-pro.src.js +10408 -8009
- package/package.json +1 -1
- package/es-modules/Grid/Core/Pagination/Icons.d.ts +0 -7
- package/es-modules/Grid/Core/Pagination/Icons.js +0 -7
|
@@ -13,8 +13,7 @@
|
|
|
13
13
|
*
|
|
14
14
|
* */
|
|
15
15
|
import AST from '../../Core/Renderer/HTML/AST.js';
|
|
16
|
-
import
|
|
17
|
-
const { isObject } = U;
|
|
16
|
+
import { isObject } from '../../Shared/Utilities.js';
|
|
18
17
|
AST.allowedAttributes.push('srcset', 'media');
|
|
19
18
|
AST.allowedTags.push('picture', 'source');
|
|
20
19
|
/* *
|
|
@@ -163,6 +162,52 @@ export function createOptionsProxy(options, defaultOptions = {}) {
|
|
|
163
162
|
export function formatText(template, values) {
|
|
164
163
|
return template.replace(/\{(\w+)\}/g, (match, key) => (values[key] !== void 0 ? String(values[key]) : match));
|
|
165
164
|
}
|
|
165
|
+
/**
|
|
166
|
+
* Resolves a style value that can be static or callback based.
|
|
167
|
+
*
|
|
168
|
+
* @param style
|
|
169
|
+
* Style object or callback returning one.
|
|
170
|
+
*
|
|
171
|
+
* @param target
|
|
172
|
+
* Runtime target used as callback context and first argument.
|
|
173
|
+
*
|
|
174
|
+
* @returns
|
|
175
|
+
* A resolved style object or `undefined`.
|
|
176
|
+
*/
|
|
177
|
+
export function resolveStyleValue(style, target) {
|
|
178
|
+
if (!style) {
|
|
179
|
+
return;
|
|
180
|
+
}
|
|
181
|
+
if (typeof style === 'function') {
|
|
182
|
+
if (!target) {
|
|
183
|
+
return;
|
|
184
|
+
}
|
|
185
|
+
return style.call(target, target);
|
|
186
|
+
}
|
|
187
|
+
return style;
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Resolves and merges style values in order.
|
|
191
|
+
*
|
|
192
|
+
* @param target
|
|
193
|
+
* Runtime target used as callback context and first argument.
|
|
194
|
+
*
|
|
195
|
+
* @param styleValues
|
|
196
|
+
* Style values to merge in order, where latter entries override former.
|
|
197
|
+
*
|
|
198
|
+
* @returns
|
|
199
|
+
* Merged style object.
|
|
200
|
+
*/
|
|
201
|
+
export function mergeStyleValues(target, ...styleValues) {
|
|
202
|
+
const mergedStyle = {};
|
|
203
|
+
for (const styleValue of styleValues) {
|
|
204
|
+
const resolvedStyle = resolveStyleValue(styleValue, target);
|
|
205
|
+
if (resolvedStyle) {
|
|
206
|
+
Object.assign(mergedStyle, resolvedStyle);
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
return mergedStyle;
|
|
210
|
+
}
|
|
166
211
|
/* *
|
|
167
212
|
*
|
|
168
213
|
* Default Export
|
|
@@ -175,5 +220,7 @@ export default {
|
|
|
175
220
|
sanitizeText,
|
|
176
221
|
setHTMLContent,
|
|
177
222
|
createOptionsProxy,
|
|
178
|
-
formatText
|
|
223
|
+
formatText,
|
|
224
|
+
resolveStyleValue,
|
|
225
|
+
mergeStyleValues
|
|
179
226
|
};
|
|
@@ -2,12 +2,17 @@ import type { A11yOptions, HeaderCellA11yOptions, LangAccessibilityOptions } fro
|
|
|
2
2
|
import type { PaginationLangOptions, PaginationOptions } from './Pagination/PaginationOptions';
|
|
3
3
|
import type { ColumnResizingMode } from './Table/ColumnResizing/ColumnResizing';
|
|
4
4
|
import type { ColumnDataType } from './Table/Column';
|
|
5
|
+
import type { DataProviderOptionsType } from './Data/DataProviderType';
|
|
5
6
|
import type DataTable from '../../Data/DataTable';
|
|
7
|
+
import type { CellType as DataTableCellType } from '../../Data/DataTable';
|
|
6
8
|
import type DataTableOptions from '../../Data/DataTableOptions';
|
|
7
9
|
import type Cell from './Table/Cell';
|
|
8
10
|
import type Column from './Table/Column';
|
|
11
|
+
import type TableCell from './Table/Body/TableCell';
|
|
12
|
+
import type { IconRegistryValue } from './UI/SvgIcons';
|
|
9
13
|
import type { LangOptionsCore } from '../../Shared/LangOptionsCore';
|
|
10
14
|
import type { Condition as ColumnFilteringCondition } from './Table/Actions/ColumnFiltering/FilteringTypes';
|
|
15
|
+
import type CSSObject from '../../Core/Renderer/CSSObject';
|
|
11
16
|
/**
|
|
12
17
|
* Callback function to be called when a header event is triggered. Returns a
|
|
13
18
|
* formatted cell's string.
|
|
@@ -18,10 +23,80 @@ export type CellFormatterCallback = (this: Cell) => string;
|
|
|
18
23
|
* formatted header's string.
|
|
19
24
|
*/
|
|
20
25
|
export type HeaderFormatterCallback = (this: Column) => string;
|
|
26
|
+
/**
|
|
27
|
+
* Callback function to resolve dynamic style for a grid entity.
|
|
28
|
+
*/
|
|
29
|
+
export type StyleCallback<T> = (this: T, target: T) => CSSObject;
|
|
30
|
+
/**
|
|
31
|
+
* A static style object or a callback that returns one.
|
|
32
|
+
*/
|
|
33
|
+
export type StyleValue<T> = CSSObject | StyleCallback<T>;
|
|
21
34
|
/**
|
|
22
35
|
* Column sorting order type.
|
|
23
36
|
*/
|
|
24
37
|
export type ColumnSortingOrder = 'asc' | 'desc' | null;
|
|
38
|
+
/**
|
|
39
|
+
* Options for a single cell context menu item.
|
|
40
|
+
*/
|
|
41
|
+
export interface CellContextMenuActionItemOptions {
|
|
42
|
+
/**
|
|
43
|
+
* The label shown in the menu.
|
|
44
|
+
*/
|
|
45
|
+
label: string;
|
|
46
|
+
/**
|
|
47
|
+
* Optional icon name for the menu item (built-in name from the default
|
|
48
|
+
* registry or custom name from rendering.icons).
|
|
49
|
+
*/
|
|
50
|
+
icon?: string;
|
|
51
|
+
/**
|
|
52
|
+
* Whether the menu item should be disabled.
|
|
53
|
+
*/
|
|
54
|
+
disabled?: boolean;
|
|
55
|
+
/**
|
|
56
|
+
* Whether to render a divider instead of a button.
|
|
57
|
+
*/
|
|
58
|
+
separator?: false;
|
|
59
|
+
/**
|
|
60
|
+
* Callback executed when the menu item is clicked.
|
|
61
|
+
*
|
|
62
|
+
* The cell is available on `this` and is also passed as the first argument
|
|
63
|
+
* to support arrow functions.
|
|
64
|
+
*/
|
|
65
|
+
onClick?: (this: TableCell, cell: TableCell) => void;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Options for a divider item in the cell context menu.
|
|
69
|
+
*/
|
|
70
|
+
export interface CellContextMenuDividerItemOptions {
|
|
71
|
+
/**
|
|
72
|
+
* Whether to render a divider instead of a button.
|
|
73
|
+
*/
|
|
74
|
+
separator: true;
|
|
75
|
+
/**
|
|
76
|
+
* Optional label for accessibility or testing.
|
|
77
|
+
* Not rendered as a clickable item.
|
|
78
|
+
*/
|
|
79
|
+
label?: string;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Options for a single cell context menu item.
|
|
83
|
+
*/
|
|
84
|
+
export type CellContextMenuItemOptions = CellContextMenuDividerItemOptions | CellContextMenuActionItemOptions;
|
|
85
|
+
/**
|
|
86
|
+
* Cell context menu options.
|
|
87
|
+
*/
|
|
88
|
+
export interface CellContextMenuOptions {
|
|
89
|
+
/**
|
|
90
|
+
* Whether the cell context menu is enabled.
|
|
91
|
+
*
|
|
92
|
+
* @default true
|
|
93
|
+
*/
|
|
94
|
+
enabled?: boolean;
|
|
95
|
+
/**
|
|
96
|
+
* List of items to show in the cell context menu.
|
|
97
|
+
*/
|
|
98
|
+
items?: Array<CellContextMenuItemOptions>;
|
|
99
|
+
}
|
|
25
100
|
/**
|
|
26
101
|
* Options to control the content and the user experience of a grid structure.
|
|
27
102
|
*/
|
|
@@ -47,8 +122,15 @@ export interface Options {
|
|
|
47
122
|
* Options for individual columns.
|
|
48
123
|
*/
|
|
49
124
|
columns?: Array<IndividualColumnOptions>;
|
|
125
|
+
/**
|
|
126
|
+
* Options for the data provider.
|
|
127
|
+
*/
|
|
128
|
+
data?: DataProviderOptionsType;
|
|
50
129
|
/**
|
|
51
130
|
* Data table with the data to display in the grid structure.
|
|
131
|
+
*
|
|
132
|
+
* @deprecated
|
|
133
|
+
* Use `data.dataTable` instead.
|
|
52
134
|
*/
|
|
53
135
|
dataTable?: DataTable | DataTableOptions;
|
|
54
136
|
/**
|
|
@@ -83,6 +165,25 @@ export interface Options {
|
|
|
83
165
|
* Options to control the way grid is rendered.
|
|
84
166
|
*/
|
|
85
167
|
export interface RenderingSettings {
|
|
168
|
+
/**
|
|
169
|
+
* Custom or override icons for the grid. Keys are icon names (either
|
|
170
|
+
* built-in names from the default registry or custom names). Values
|
|
171
|
+
* are either an SVG definition object or a raw SVG markup string.
|
|
172
|
+
* Built-in icons can be overridden; new names can be used for custom
|
|
173
|
+
* icons and referenced where an icon name is accepted (e.g. menu
|
|
174
|
+
* items, pagination buttons).
|
|
175
|
+
*
|
|
176
|
+
* @example
|
|
177
|
+
* ```js
|
|
178
|
+
* rendering: {
|
|
179
|
+
* icons: {
|
|
180
|
+
* chevronRight: '<svg>...</svg>',
|
|
181
|
+
* myCustomIcon: { width: 16, height: 16, children: [{ d: '...' }] }
|
|
182
|
+
* }
|
|
183
|
+
* }
|
|
184
|
+
* ```
|
|
185
|
+
*/
|
|
186
|
+
icons?: Record<string, IconRegistryValue>;
|
|
86
187
|
/**
|
|
87
188
|
* Options to control the columns rendering.
|
|
88
189
|
*/
|
|
@@ -268,9 +369,9 @@ export interface ColumnOptions {
|
|
|
268
369
|
*/
|
|
269
370
|
sorting?: ColumnSortingOptions;
|
|
270
371
|
/**
|
|
271
|
-
* The width of the column. It can be set in pixels
|
|
272
|
-
*
|
|
273
|
-
* columns.
|
|
372
|
+
* The width of the column. It can be set in pixels, as a percentage of the
|
|
373
|
+
* table width, or `'auto'`. If unset or `'auto'`, the width is distributed
|
|
374
|
+
* evenly between columns without a fixed width.
|
|
274
375
|
*
|
|
275
376
|
* This option does not work with the `resizing` option set to `full`.
|
|
276
377
|
*
|
|
@@ -282,6 +383,11 @@ export interface ColumnOptions {
|
|
|
282
383
|
* Filtering options for the column.
|
|
283
384
|
*/
|
|
284
385
|
filtering?: ColumnFilteringOptions;
|
|
386
|
+
/**
|
|
387
|
+
* CSS styles for the whole column, applied to the header and body cells.
|
|
388
|
+
* Can be a static style object or a callback that returns one.
|
|
389
|
+
*/
|
|
390
|
+
style?: StyleValue<Column>;
|
|
285
391
|
}
|
|
286
392
|
/**
|
|
287
393
|
* Options for all cells in the column.
|
|
@@ -319,6 +425,11 @@ export interface ColumnCellOptions {
|
|
|
319
425
|
* A string to be set as a table cell's content.
|
|
320
426
|
*/
|
|
321
427
|
formatter?: CellFormatterCallback;
|
|
428
|
+
/**
|
|
429
|
+
* CSS styles for table body cells in the column.
|
|
430
|
+
* Can be a static style object or a callback that returns one.
|
|
431
|
+
*/
|
|
432
|
+
style?: StyleValue<Cell>;
|
|
322
433
|
}
|
|
323
434
|
/**
|
|
324
435
|
* Options for the header cells in the columns.
|
|
@@ -344,6 +455,11 @@ export interface ColumnHeaderOptions {
|
|
|
344
455
|
* A string to be set as a header cell's content.
|
|
345
456
|
*/
|
|
346
457
|
formatter?: HeaderFormatterCallback;
|
|
458
|
+
/**
|
|
459
|
+
* CSS styles for the column header cells.
|
|
460
|
+
* Can be a static style object or a callback that returns one.
|
|
461
|
+
*/
|
|
462
|
+
style?: StyleValue<Column>;
|
|
347
463
|
}
|
|
348
464
|
/**
|
|
349
465
|
* Column sorting options available for applying to all columns at once.
|
|
@@ -367,6 +483,22 @@ export interface ColumnSortingOptions {
|
|
|
367
483
|
* Use `enabled` instead
|
|
368
484
|
*/
|
|
369
485
|
sortable?: boolean;
|
|
486
|
+
/**
|
|
487
|
+
* Sequence of sorting orders used when toggling sorting from the user
|
|
488
|
+
* interface (for example by clicking the column header).
|
|
489
|
+
*
|
|
490
|
+
* The sequence can contain any number of values, in any order, with
|
|
491
|
+
* duplicates allowed. Allowed values are: `'asc'`, `'desc'`, and `null`.
|
|
492
|
+
*
|
|
493
|
+
* If the sequence is empty (`[]`), sorting toggles become a no-op while
|
|
494
|
+
* the sortable UI can still be shown.
|
|
495
|
+
*
|
|
496
|
+
* This option can be set in both `columnDefaults.sorting` and
|
|
497
|
+
* `columns[].sorting`.
|
|
498
|
+
*
|
|
499
|
+
* @default ['asc', 'desc', null]
|
|
500
|
+
*/
|
|
501
|
+
orderSequence?: ColumnSortingOrder[];
|
|
370
502
|
/**
|
|
371
503
|
* Custom compare function to sort the column values. It overrides the
|
|
372
504
|
* default sorting behavior. If not set, the default sorting behavior is
|
|
@@ -382,7 +514,7 @@ export interface ColumnSortingOptions {
|
|
|
382
514
|
* A number indicating whether the first value (`a`) is less than (`-1`),
|
|
383
515
|
* equal to (`0`), or greater than (`1`) the second value (`b`).
|
|
384
516
|
*/
|
|
385
|
-
compare?: (a:
|
|
517
|
+
compare?: (a: DataTableCellType, b: DataTableCellType) => number;
|
|
386
518
|
}
|
|
387
519
|
/**
|
|
388
520
|
* Column sorting options that can be set for each column individually.
|
|
@@ -439,6 +571,15 @@ export interface CaptionOptions {
|
|
|
439
571
|
* The custom CSS class name for the table caption.
|
|
440
572
|
*/
|
|
441
573
|
className?: string;
|
|
574
|
+
/**
|
|
575
|
+
* The HTML tag to use for the caption. When set, the caption is rendered
|
|
576
|
+
* as that element (e.g. `h1`, `p`, `span`). Must be one of
|
|
577
|
+
* [AST.allowedTags](https://api.highcharts.com/class-reference/Highcharts.AST#allowedTags)
|
|
578
|
+
* (e.g. `div`, `p`, `span`, `h1`–`h6`).
|
|
579
|
+
*
|
|
580
|
+
* @default 'div'
|
|
581
|
+
*/
|
|
582
|
+
htmlTag?: string;
|
|
442
583
|
/**
|
|
443
584
|
* The caption of the grid.
|
|
444
585
|
*
|
|
@@ -13,13 +13,19 @@
|
|
|
13
13
|
*
|
|
14
14
|
* */
|
|
15
15
|
'use strict';
|
|
16
|
-
import
|
|
16
|
+
import { createGridIcon } from '../UI/SvgIcons.js';
|
|
17
17
|
import Globals from '../Globals.js';
|
|
18
18
|
import GridUtils from '../GridUtils.js';
|
|
19
|
-
import Utilities from '../../../Core/Utilities.js';
|
|
20
19
|
import AST from '../../../Core/Renderer/HTML/AST.js';
|
|
20
|
+
import { defined, fireEvent, isObject, merge } from '../../../Shared/Utilities.js';
|
|
21
21
|
const { makeHTMLElement, formatText } = GridUtils;
|
|
22
|
-
const
|
|
22
|
+
const paginationAlignments = [
|
|
23
|
+
'left',
|
|
24
|
+
'center',
|
|
25
|
+
'right',
|
|
26
|
+
'distributed'
|
|
27
|
+
];
|
|
28
|
+
const alignmentClassName = (alignment) => `${Globals.classNamePrefix}pagination-${alignment}`;
|
|
23
29
|
/**
|
|
24
30
|
* Representing the pagination functionalities for the Grid.
|
|
25
31
|
*/
|
|
@@ -83,6 +89,10 @@ class Pagination {
|
|
|
83
89
|
delete diff.page;
|
|
84
90
|
delete diff.pageSize;
|
|
85
91
|
}
|
|
92
|
+
if ('alignment' in diff) {
|
|
93
|
+
this.isDirtyAlignment = true;
|
|
94
|
+
delete diff.alignment;
|
|
95
|
+
}
|
|
86
96
|
// TODO: Optimize more options here.
|
|
87
97
|
if (Object.keys(diff).length > 0) {
|
|
88
98
|
this.grid.dirtyFlags.add('grid');
|
|
@@ -101,6 +111,7 @@ class Pagination {
|
|
|
101
111
|
render() {
|
|
102
112
|
const position = this.options?.position;
|
|
103
113
|
const grid = this.grid;
|
|
114
|
+
const alignmentClass = this.getAlignmentClass();
|
|
104
115
|
this.oldTotalItems = this.controller.totalItems;
|
|
105
116
|
// Set row count for a11y
|
|
106
117
|
grid.tableElement?.setAttribute('aria-current', 'page');
|
|
@@ -114,7 +125,9 @@ class Pagination {
|
|
|
114
125
|
this.renderFooter();
|
|
115
126
|
}
|
|
116
127
|
this.contentWrapper = makeHTMLElement('nav', {
|
|
117
|
-
className:
|
|
128
|
+
className: alignmentClass ?
|
|
129
|
+
`${Globals.getClassName('pagination')} ${alignmentClass}` :
|
|
130
|
+
Globals.getClassName('pagination')
|
|
118
131
|
}, position === 'footer' ?
|
|
119
132
|
this.paginationContainer : grid.contentWrapper);
|
|
120
133
|
this.contentWrapper.setAttribute('aria-label', 'Results pagination');
|
|
@@ -126,6 +139,30 @@ class Pagination {
|
|
|
126
139
|
// Update button states after rendering
|
|
127
140
|
this.updateButtonStates();
|
|
128
141
|
}
|
|
142
|
+
getAlignmentClass() {
|
|
143
|
+
const align = this.options?.align || '';
|
|
144
|
+
return alignmentClassName(align);
|
|
145
|
+
}
|
|
146
|
+
updateAlignmentClass() {
|
|
147
|
+
const wrapper = this.contentWrapper;
|
|
148
|
+
if (!wrapper) {
|
|
149
|
+
return;
|
|
150
|
+
}
|
|
151
|
+
const alignmentClasses = paginationAlignments.map(alignmentClassName);
|
|
152
|
+
wrapper.classList.remove(...alignmentClasses);
|
|
153
|
+
const alignmentClass = this.getAlignmentClass();
|
|
154
|
+
wrapper.classList.add(alignmentClass);
|
|
155
|
+
}
|
|
156
|
+
redraw() {
|
|
157
|
+
if (this.isDirtyQuerying) {
|
|
158
|
+
this.updateControls(true);
|
|
159
|
+
}
|
|
160
|
+
if (this.isDirtyAlignment) {
|
|
161
|
+
this.updateAlignmentClass();
|
|
162
|
+
}
|
|
163
|
+
delete this.isDirtyQuerying;
|
|
164
|
+
delete this.isDirtyAlignment;
|
|
165
|
+
}
|
|
129
166
|
/**
|
|
130
167
|
* Render pagination in a tfoot element.
|
|
131
168
|
*/
|
|
@@ -156,9 +193,13 @@ class Pagination {
|
|
|
156
193
|
return;
|
|
157
194
|
}
|
|
158
195
|
this.paginationContainer = customContainer;
|
|
196
|
+
const alignmentClass = this.getAlignmentClass();
|
|
197
|
+
const className = alignmentClass ?
|
|
198
|
+
`${Globals.getClassName('pagination')} ${alignmentClass}` :
|
|
199
|
+
Globals.getClassName('pagination');
|
|
159
200
|
// Set content wrapper to the custom container
|
|
160
201
|
this.contentWrapper = makeHTMLElement('div', {
|
|
161
|
-
className:
|
|
202
|
+
className: className
|
|
162
203
|
}, customContainer);
|
|
163
204
|
}
|
|
164
205
|
/**
|
|
@@ -199,7 +240,7 @@ class Pagination {
|
|
|
199
240
|
*/
|
|
200
241
|
renderControls() {
|
|
201
242
|
const navContainer = makeHTMLElement('div', {
|
|
202
|
-
className: Globals.getClassName('
|
|
243
|
+
className: Globals.getClassName('paginationControls')
|
|
203
244
|
}, this.contentWrapper);
|
|
204
245
|
const controls = this.options?.controls || {};
|
|
205
246
|
// Render first/previous buttons
|
|
@@ -214,8 +255,6 @@ class Pagination {
|
|
|
214
255
|
if (controls.pageButtons) {
|
|
215
256
|
this.renderPageNumbers(navContainer);
|
|
216
257
|
}
|
|
217
|
-
// Render dropdown page selector
|
|
218
|
-
this.renderDropdownPageSelector(navContainer);
|
|
219
258
|
// Render next button
|
|
220
259
|
if (controls.previousNextButtons) {
|
|
221
260
|
this.renderNextButton(navContainer);
|
|
@@ -257,11 +296,11 @@ class Pagination {
|
|
|
257
296
|
(isObject(firstLastButtons) && firstLastButtons.enabled === false)) {
|
|
258
297
|
return;
|
|
259
298
|
}
|
|
260
|
-
|
|
299
|
+
const firstIconEl = createGridIcon('doubleChevronLeft', this.grid.options?.rendering?.icons);
|
|
261
300
|
this.firstButton = makeHTMLElement('button', {
|
|
262
|
-
className: Globals.getClassName('button')
|
|
263
|
-
innerHTML: Icons.first
|
|
301
|
+
className: Globals.getClassName('button')
|
|
264
302
|
}, container);
|
|
303
|
+
this.firstButton.appendChild(firstIconEl);
|
|
265
304
|
this.firstButton.title = this.lang?.firstPage ?? '';
|
|
266
305
|
// Set aria-label for a11y
|
|
267
306
|
this.firstButton.setAttribute('aria-label', this.lang?.firstPage ?? '');
|
|
@@ -284,11 +323,12 @@ class Pagination {
|
|
|
284
323
|
previousNextButtons.enabled === false)) {
|
|
285
324
|
return;
|
|
286
325
|
}
|
|
287
|
-
|
|
326
|
+
const prevIconName = 'chevronLeft';
|
|
327
|
+
const prevIconEl = createGridIcon(prevIconName, this.grid.options?.rendering?.icons);
|
|
288
328
|
this.prevButton = makeHTMLElement('button', {
|
|
289
|
-
className: Globals.getClassName('button')
|
|
290
|
-
innerHTML: Icons.previous
|
|
329
|
+
className: Globals.getClassName('button')
|
|
291
330
|
}, container);
|
|
331
|
+
this.prevButton.appendChild(prevIconEl);
|
|
292
332
|
this.prevButton.title = this.lang?.previousPage ?? '';
|
|
293
333
|
// Set aria-label for a11y
|
|
294
334
|
this.prevButton.setAttribute('aria-label', this.lang?.previousPage ?? '');
|
|
@@ -311,11 +351,12 @@ class Pagination {
|
|
|
311
351
|
previousNextButtons.enabled === false)) {
|
|
312
352
|
return;
|
|
313
353
|
}
|
|
314
|
-
|
|
354
|
+
const nextIconName = 'chevronRight';
|
|
355
|
+
const nextIconEl = createGridIcon(nextIconName, this.grid.options?.rendering?.icons);
|
|
315
356
|
this.nextButton = makeHTMLElement('button', {
|
|
316
|
-
className: Globals.getClassName('button')
|
|
317
|
-
innerHTML: Icons.next
|
|
357
|
+
className: Globals.getClassName('button')
|
|
318
358
|
}, container);
|
|
359
|
+
this.nextButton.appendChild(nextIconEl);
|
|
319
360
|
this.nextButton.title = this.lang?.nextPage ?? '';
|
|
320
361
|
// Set aria-label for a11y
|
|
321
362
|
this.nextButton.setAttribute('aria-label', this.lang?.nextPage ?? '');
|
|
@@ -337,11 +378,12 @@ class Pagination {
|
|
|
337
378
|
(isObject(firstLastButtons) && firstLastButtons.enabled === false)) {
|
|
338
379
|
return;
|
|
339
380
|
}
|
|
340
|
-
|
|
381
|
+
const lastIconName = 'doubleChevronRight';
|
|
382
|
+
const lastIconEl = createGridIcon(lastIconName, this.grid.options?.rendering?.icons);
|
|
341
383
|
this.lastButton = makeHTMLElement('button', {
|
|
342
|
-
className: Globals.getClassName('button')
|
|
343
|
-
innerHTML: Icons.last
|
|
384
|
+
className: Globals.getClassName('button')
|
|
344
385
|
}, container);
|
|
386
|
+
this.lastButton.appendChild(lastIconEl);
|
|
345
387
|
this.lastButton.title = this.lang?.lastPage ?? '';
|
|
346
388
|
// Set aria-label for a11y
|
|
347
389
|
this.lastButton.setAttribute('aria-label', this.lang?.lastPage ?? '');
|
|
@@ -364,7 +406,7 @@ class Pagination {
|
|
|
364
406
|
return;
|
|
365
407
|
}
|
|
366
408
|
this.pageNumbersContainer = makeHTMLElement('div', {
|
|
367
|
-
className: Globals.getClassName('
|
|
409
|
+
className: Globals.getClassName('paginationPages')
|
|
368
410
|
}, container);
|
|
369
411
|
this.updatePageNumbers();
|
|
370
412
|
}
|
|
@@ -481,8 +523,6 @@ class Pagination {
|
|
|
481
523
|
}
|
|
482
524
|
});
|
|
483
525
|
}
|
|
484
|
-
// Update dropdown selector if it exists
|
|
485
|
-
this.updateDropdownPageSelector();
|
|
486
526
|
}
|
|
487
527
|
/**
|
|
488
528
|
* Create a page number button.
|
|
@@ -138,6 +138,10 @@ export interface PaginationOptions {
|
|
|
138
138
|
* @default 'bottom'
|
|
139
139
|
*/
|
|
140
140
|
position?: string;
|
|
141
|
+
/**
|
|
142
|
+
* Alignment of the pagination elements within the wrapper.
|
|
143
|
+
*/
|
|
144
|
+
align?: 'left' | 'center' | 'right' | 'distributed';
|
|
141
145
|
/**
|
|
142
146
|
* Controls options for pagination UI elements.
|
|
143
147
|
*/
|
|
@@ -23,7 +23,7 @@ declare class PaginationController {
|
|
|
23
23
|
/**
|
|
24
24
|
* The number of rows before pagination.
|
|
25
25
|
*/
|
|
26
|
-
|
|
26
|
+
totalItemsCount?: number;
|
|
27
27
|
/**
|
|
28
28
|
* Constructs the PaginationController instance.
|
|
29
29
|
*
|
|
@@ -32,7 +32,7 @@ declare class PaginationController {
|
|
|
32
32
|
*/
|
|
33
33
|
constructor(querying: QueryingController);
|
|
34
34
|
/**
|
|
35
|
-
* Total number of items (rows)
|
|
35
|
+
* Total number of items (rows before pagination).
|
|
36
36
|
*/
|
|
37
37
|
get totalItems(): number;
|
|
38
38
|
/**
|
|
@@ -52,10 +52,10 @@ class PaginationController {
|
|
|
52
52
|
*
|
|
53
53
|
* */
|
|
54
54
|
/**
|
|
55
|
-
* Total number of items (rows)
|
|
55
|
+
* Total number of items (rows before pagination).
|
|
56
56
|
*/
|
|
57
57
|
get totalItems() {
|
|
58
|
-
return this.
|
|
58
|
+
return this.totalItemsCount ?? 0;
|
|
59
59
|
}
|
|
60
60
|
/**
|
|
61
61
|
* Gets the total number of pages.
|
|
@@ -126,7 +126,7 @@ class PaginationController {
|
|
|
126
126
|
// Calculate the start index (0-based)
|
|
127
127
|
const start = (currentPage - 1) * pageSize;
|
|
128
128
|
const end = Math.min(start + pageSize, rowsCountBeforePagination);
|
|
129
|
-
this.
|
|
129
|
+
this.totalItemsCount = rowsCountBeforePagination;
|
|
130
130
|
return new RangeModifier({
|
|
131
131
|
start,
|
|
132
132
|
end
|
|
@@ -13,7 +13,6 @@
|
|
|
13
13
|
*
|
|
14
14
|
* */
|
|
15
15
|
'use strict';
|
|
16
|
-
import ChainModifier from '../../../Data/Modifiers/ChainModifier.js';
|
|
17
16
|
import SortingController from './SortingController.js';
|
|
18
17
|
import FilteringController from './FilteringController.js';
|
|
19
18
|
import PaginationController from './PaginationController.js';
|
|
@@ -89,33 +88,10 @@ class QueryingController {
|
|
|
89
88
|
return modifiers;
|
|
90
89
|
}
|
|
91
90
|
/**
|
|
92
|
-
* Apply all modifiers to the data
|
|
91
|
+
* Apply all modifiers to the data provider.
|
|
93
92
|
*/
|
|
94
93
|
async modifyData() {
|
|
95
|
-
|
|
96
|
-
if (!originalDataTable) {
|
|
97
|
-
return;
|
|
98
|
-
}
|
|
99
|
-
const groupedModifiers = this.getGroupedModifiers();
|
|
100
|
-
let interTable;
|
|
101
|
-
// Grouped modifiers
|
|
102
|
-
if (groupedModifiers.length > 0) {
|
|
103
|
-
const chainModifier = new ChainModifier({}, ...groupedModifiers);
|
|
104
|
-
const dataTableCopy = originalDataTable.clone();
|
|
105
|
-
await chainModifier.modify(dataTableCopy.getModified());
|
|
106
|
-
interTable = dataTableCopy.getModified();
|
|
107
|
-
}
|
|
108
|
-
else {
|
|
109
|
-
interTable = originalDataTable.getModified();
|
|
110
|
-
}
|
|
111
|
-
// Pagination modifier
|
|
112
|
-
const paginationModifier = this.pagination.createModifier(interTable.rowCount);
|
|
113
|
-
if (paginationModifier) {
|
|
114
|
-
interTable = interTable.clone();
|
|
115
|
-
await paginationModifier.modify(interTable);
|
|
116
|
-
interTable = interTable.getModified();
|
|
117
|
-
}
|
|
118
|
-
this.grid.presentationTable = interTable;
|
|
94
|
+
await this.grid.dataProvider?.applyQuery();
|
|
119
95
|
this.shouldBeUpdated = false;
|
|
120
96
|
}
|
|
121
97
|
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import type { DeepPartial } from '../../../Shared/Types';
|
|
2
|
+
import type Grid from '../../Core/Grid';
|
|
3
|
+
import type { Options } from '../Options';
|
|
4
|
+
import type { ResponsiveOptions, RuleOptions } from './ResponsiveOptions';
|
|
5
|
+
/**
|
|
6
|
+
* Extends the grid classes with responsive options.
|
|
7
|
+
*
|
|
8
|
+
* @param GridClass
|
|
9
|
+
* The class to extend.
|
|
10
|
+
*
|
|
11
|
+
*/
|
|
12
|
+
export declare function compose(GridClass: typeof Grid): void;
|
|
13
|
+
declare module '../Options' {
|
|
14
|
+
interface Options {
|
|
15
|
+
/**
|
|
16
|
+
* Allows setting a set of rules to apply for different screen or grid
|
|
17
|
+
* sizes. Each rule specifies additional grid options.
|
|
18
|
+
*/
|
|
19
|
+
responsive?: ResponsiveOptions;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
declare module '../Grid' {
|
|
23
|
+
export default interface Grid {
|
|
24
|
+
/**
|
|
25
|
+
* Tracks the ResizeObserver instance for the grid.
|
|
26
|
+
* @private
|
|
27
|
+
*/
|
|
28
|
+
resizeObserver?: ResizeObserver;
|
|
29
|
+
/**
|
|
30
|
+
* Cache of currently active responsive rules.
|
|
31
|
+
* @private
|
|
32
|
+
*/
|
|
33
|
+
activeRules?: Set<RuleOptions>;
|
|
34
|
+
/**
|
|
35
|
+
* Stores merged responsive options and undo data.
|
|
36
|
+
* @private
|
|
37
|
+
*/
|
|
38
|
+
currentResponsive?: {
|
|
39
|
+
ruleIds?: string;
|
|
40
|
+
mergedOptions: DeepPartial<Options>;
|
|
41
|
+
undoOptions: DeepPartial<Options>;
|
|
42
|
+
};
|
|
43
|
+
/**
|
|
44
|
+
* Prevents recursive updates during responsive changes.
|
|
45
|
+
* @private
|
|
46
|
+
*/
|
|
47
|
+
updatingResponsive?: boolean;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
declare const _default: {
|
|
51
|
+
readonly compose: typeof compose;
|
|
52
|
+
};
|
|
53
|
+
export default _default;
|