@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
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type TableCell from './TableCell';
|
|
2
|
+
import ContextMenu from '../../UI/ContextMenu.js';
|
|
3
|
+
declare class CellContextMenu extends ContextMenu {
|
|
4
|
+
cell?: TableCell;
|
|
5
|
+
private cursorAnchorElement?;
|
|
6
|
+
private removeCellOutdateListener?;
|
|
7
|
+
showAt(cell: TableCell, clientX: number, clientY: number): void;
|
|
8
|
+
hide(): void;
|
|
9
|
+
protected renderContent(): void;
|
|
10
|
+
}
|
|
11
|
+
export default CellContextMenu;
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/* *
|
|
2
|
+
*
|
|
3
|
+
* Grid Cell Context Menu
|
|
4
|
+
*
|
|
5
|
+
* (c) 2020-2026 Highsoft AS
|
|
6
|
+
*
|
|
7
|
+
* A commercial license may be required depending on use.
|
|
8
|
+
* See www.highcharts.com/license
|
|
9
|
+
*
|
|
10
|
+
* Authors:
|
|
11
|
+
* - Mikkel Espolin Birkeland
|
|
12
|
+
*
|
|
13
|
+
* */
|
|
14
|
+
'use strict';
|
|
15
|
+
import ContextMenu from '../../UI/ContextMenu.js';
|
|
16
|
+
import ContextMenuButton from '../../UI/ContextMenuButton.js';
|
|
17
|
+
import { addEvent } from '../../../../Shared/Utilities.js';
|
|
18
|
+
/* *
|
|
19
|
+
*
|
|
20
|
+
* Class
|
|
21
|
+
*
|
|
22
|
+
* */
|
|
23
|
+
class CellContextMenu extends ContextMenu {
|
|
24
|
+
showAt(cell, clientX, clientY) {
|
|
25
|
+
const wrapper = this.grid.contentWrapper;
|
|
26
|
+
if (!wrapper) {
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
this.cell = cell;
|
|
30
|
+
this.removeCellOutdateListener?.();
|
|
31
|
+
this.removeCellOutdateListener = addEvent(cell, 'outdate', () => {
|
|
32
|
+
this.hide();
|
|
33
|
+
delete this.cell;
|
|
34
|
+
});
|
|
35
|
+
const rect = wrapper.getBoundingClientRect();
|
|
36
|
+
this.cursorAnchorElement = document.createElement('div');
|
|
37
|
+
this.cursorAnchorElement.style.position = 'absolute';
|
|
38
|
+
this.cursorAnchorElement.style.left = (clientX - rect.left) + 'px';
|
|
39
|
+
this.cursorAnchorElement.style.top = (clientY - rect.top) + 'px';
|
|
40
|
+
this.cursorAnchorElement.style.width = '0px';
|
|
41
|
+
this.cursorAnchorElement.style.height = '0px';
|
|
42
|
+
this.cursorAnchorElement.style.pointerEvents = 'none';
|
|
43
|
+
wrapper.appendChild(this.cursorAnchorElement);
|
|
44
|
+
super.show(this.cursorAnchorElement);
|
|
45
|
+
}
|
|
46
|
+
hide() {
|
|
47
|
+
super.hide();
|
|
48
|
+
this.cursorAnchorElement?.remove();
|
|
49
|
+
this.removeCellOutdateListener?.();
|
|
50
|
+
delete this.cursorAnchorElement;
|
|
51
|
+
delete this.removeCellOutdateListener;
|
|
52
|
+
}
|
|
53
|
+
renderContent() {
|
|
54
|
+
const { cell } = this;
|
|
55
|
+
if (!cell) {
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
const items = cell.column?.options.cells?.contextMenu?.items || [];
|
|
59
|
+
for (const item of items) {
|
|
60
|
+
if (item.separator) {
|
|
61
|
+
this.addDivider();
|
|
62
|
+
continue;
|
|
63
|
+
}
|
|
64
|
+
const btn = new ContextMenuButton({
|
|
65
|
+
label: item.label,
|
|
66
|
+
icon: item.icon,
|
|
67
|
+
onClick: () => {
|
|
68
|
+
if (item.disabled) {
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
item.onClick?.call(cell, cell);
|
|
72
|
+
this.hide();
|
|
73
|
+
}
|
|
74
|
+
}).add(this);
|
|
75
|
+
if (btn && item.disabled) {
|
|
76
|
+
// Minimal disable support for v1. We don't currently have a
|
|
77
|
+
// dedicated ContextMenuButton API for disabled state.
|
|
78
|
+
// This keeps behavior consistent without introducing new CSS.
|
|
79
|
+
btn.wrapper?.querySelector('button')?.setAttribute('disabled', '');
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
export default CellContextMenu;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import type { CellType as DataTableCellType } from '../../../../Data/DataTable';
|
|
2
2
|
import type Column from '../Column';
|
|
3
3
|
import type TableRow from './TableRow';
|
|
4
4
|
import Cell from '../Cell.js';
|
|
@@ -19,6 +19,16 @@ declare class TableCell extends Cell {
|
|
|
19
19
|
* The cell's content.
|
|
20
20
|
*/
|
|
21
21
|
content?: CellContent;
|
|
22
|
+
/**
|
|
23
|
+
* A token used to prevent stale async responses from overwriting cell
|
|
24
|
+
* data. In virtualized grids, cells are reused as rows scroll in/out of
|
|
25
|
+
* view. If a cell starts an async value fetch for row A, then gets reused
|
|
26
|
+
* for row B before the fetch completes, the stale response for row A
|
|
27
|
+
* could incorrectly overwrite row B's data. This token is incremented
|
|
28
|
+
* before each async fetch, and checked when the fetch completes - if the
|
|
29
|
+
* token has changed, the response is discarded as stale.
|
|
30
|
+
*/
|
|
31
|
+
private asyncFetchToken;
|
|
22
32
|
/**
|
|
23
33
|
* Constructs a cell in the data grid.
|
|
24
34
|
*
|
|
@@ -32,15 +42,15 @@ declare class TableCell extends Cell {
|
|
|
32
42
|
/**
|
|
33
43
|
* Renders the cell by appending it to the row and setting its value.
|
|
34
44
|
*/
|
|
35
|
-
render(): void
|
|
45
|
+
render(): Promise<void>;
|
|
36
46
|
/**
|
|
37
|
-
* Edits the cell value and updates the
|
|
47
|
+
* Edits the cell value and updates the dataset. Call this instead of
|
|
38
48
|
* `setValue` when you want it to trigger the cell value user change event.
|
|
39
49
|
*
|
|
40
50
|
* @param value
|
|
41
51
|
* The new value to set.
|
|
42
52
|
*/
|
|
43
|
-
editValue(value:
|
|
53
|
+
editValue(value: DataTableCellType): Promise<void>;
|
|
44
54
|
/**
|
|
45
55
|
* Sets the cell value and updates its content with it.
|
|
46
56
|
*
|
|
@@ -48,21 +58,25 @@ declare class TableCell extends Cell {
|
|
|
48
58
|
* The raw value to set. If not provided, it will use the value from the
|
|
49
59
|
* data table for the current row and column.
|
|
50
60
|
*
|
|
51
|
-
* @param
|
|
52
|
-
* Whether to update the
|
|
53
|
-
* `false`, meaning the
|
|
61
|
+
* @param updateDataset
|
|
62
|
+
* Whether to update the dataset after setting the content. Defaults to
|
|
63
|
+
* `false`, meaning the dataset will not be updated.
|
|
64
|
+
*/
|
|
65
|
+
setValue(value?: DataTableCellType, updateDataset?: boolean): Promise<void>;
|
|
66
|
+
/**
|
|
67
|
+
* Returns merged styles from defaults and current column options.
|
|
54
68
|
*/
|
|
55
|
-
|
|
69
|
+
private getCellStyles;
|
|
56
70
|
/**
|
|
57
|
-
* Updates the the
|
|
58
|
-
*
|
|
71
|
+
* Updates the the dataset so that it reflects the current state of the
|
|
72
|
+
* grid.
|
|
59
73
|
*
|
|
60
74
|
* @returns
|
|
61
75
|
* A promise that resolves to `true` if the cell triggered all the whole
|
|
62
|
-
* viewport rows to be updated, or `false` if the only change
|
|
63
|
-
*
|
|
76
|
+
* viewport rows to be updated, or `false` if the only change was the cell's
|
|
77
|
+
* content.
|
|
64
78
|
*/
|
|
65
|
-
private
|
|
79
|
+
private updateDataset;
|
|
66
80
|
/**
|
|
67
81
|
* Initialize event listeners for table body cells.
|
|
68
82
|
*
|
|
@@ -16,8 +16,8 @@
|
|
|
16
16
|
'use strict';
|
|
17
17
|
import Globals from '../../Globals.js';
|
|
18
18
|
import Cell from '../Cell.js';
|
|
19
|
-
import
|
|
20
|
-
|
|
19
|
+
import { defined, fireEvent } from '../../../../Shared/Utilities.js';
|
|
20
|
+
import { mergeStyleValues } from '../../GridUtils.js';
|
|
21
21
|
/* *
|
|
22
22
|
*
|
|
23
23
|
* Class
|
|
@@ -43,6 +43,16 @@ class TableCell extends Cell {
|
|
|
43
43
|
*/
|
|
44
44
|
constructor(row, column) {
|
|
45
45
|
super(row, column);
|
|
46
|
+
/**
|
|
47
|
+
* A token used to prevent stale async responses from overwriting cell
|
|
48
|
+
* data. In virtualized grids, cells are reused as rows scroll in/out of
|
|
49
|
+
* view. If a cell starts an async value fetch for row A, then gets reused
|
|
50
|
+
* for row B before the fetch completes, the stale response for row A
|
|
51
|
+
* could incorrectly overwrite row B's data. This token is incremented
|
|
52
|
+
* before each async fetch, and checked when the fetch completes - if the
|
|
53
|
+
* token has changed, the response is discarded as stale.
|
|
54
|
+
*/
|
|
55
|
+
this.asyncFetchToken = 0;
|
|
46
56
|
this.column = column;
|
|
47
57
|
this.row = row;
|
|
48
58
|
this.column.registerCell(this);
|
|
@@ -55,12 +65,12 @@ class TableCell extends Cell {
|
|
|
55
65
|
/**
|
|
56
66
|
* Renders the cell by appending it to the row and setting its value.
|
|
57
67
|
*/
|
|
58
|
-
render() {
|
|
59
|
-
super.render();
|
|
60
|
-
|
|
68
|
+
async render() {
|
|
69
|
+
await super.render();
|
|
70
|
+
await this.setValue();
|
|
61
71
|
}
|
|
62
72
|
/**
|
|
63
|
-
* Edits the cell value and updates the
|
|
73
|
+
* Edits the cell value and updates the dataset. Call this instead of
|
|
64
74
|
* `setValue` when you want it to trigger the cell value user change event.
|
|
65
75
|
*
|
|
66
76
|
* @param value
|
|
@@ -81,14 +91,40 @@ class TableCell extends Cell {
|
|
|
81
91
|
* The raw value to set. If not provided, it will use the value from the
|
|
82
92
|
* data table for the current row and column.
|
|
83
93
|
*
|
|
84
|
-
* @param
|
|
85
|
-
* Whether to update the
|
|
86
|
-
* `false`, meaning the
|
|
94
|
+
* @param updateDataset
|
|
95
|
+
* Whether to update the dataset after setting the content. Defaults to
|
|
96
|
+
* `false`, meaning the dataset will not be updated.
|
|
87
97
|
*/
|
|
88
|
-
async setValue(value
|
|
98
|
+
async setValue(value, updateDataset = false) {
|
|
99
|
+
const fetchToken = ++this.asyncFetchToken;
|
|
100
|
+
const { grid } = this.column.viewport;
|
|
101
|
+
// TODO(design): Design a better way to show the cell val being updated.
|
|
102
|
+
this.htmlElement.style.opacity = '0.5';
|
|
103
|
+
if (!defined(value)) {
|
|
104
|
+
value = await grid.dataProvider?.getValue(this.column.id, this.row.index);
|
|
105
|
+
// Discard stale response if cell was reused for a different row
|
|
106
|
+
if (fetchToken !== this.asyncFetchToken) {
|
|
107
|
+
this.htmlElement.style.opacity = '';
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
const oldValue = this.value;
|
|
89
112
|
this.value = value;
|
|
90
|
-
if (
|
|
91
|
-
|
|
113
|
+
if (updateDataset) {
|
|
114
|
+
try {
|
|
115
|
+
grid.showLoading();
|
|
116
|
+
if (await this.updateDataset()) {
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
catch (err) {
|
|
121
|
+
// eslint-disable-next-line no-console
|
|
122
|
+
console.error(err);
|
|
123
|
+
this.value = oldValue;
|
|
124
|
+
}
|
|
125
|
+
finally {
|
|
126
|
+
grid.hideLoading();
|
|
127
|
+
}
|
|
92
128
|
}
|
|
93
129
|
if (this.content) {
|
|
94
130
|
this.content.update();
|
|
@@ -101,33 +137,46 @@ class TableCell extends Cell {
|
|
|
101
137
|
this.htmlElement.classList[this.column.dataType === 'number' ? 'add' : 'remove'](Globals.getClassName('rightAlign'));
|
|
102
138
|
// Add custom class name from column options
|
|
103
139
|
this.setCustomClassName(this.column.options.cells?.className);
|
|
140
|
+
this.setCustomStyles(this.getCellStyles());
|
|
141
|
+
// TODO(design): Remove this after the first part was implemented.
|
|
142
|
+
this.htmlElement.style.opacity = '';
|
|
104
143
|
fireEvent(this, 'afterRender', { target: this });
|
|
105
144
|
}
|
|
106
145
|
/**
|
|
107
|
-
*
|
|
108
|
-
|
|
146
|
+
* Returns merged styles from defaults and current column options.
|
|
147
|
+
*/
|
|
148
|
+
getCellStyles() {
|
|
149
|
+
const { grid } = this.column.viewport;
|
|
150
|
+
const rawColumnOptions = grid.columnOptionsMap?.[this.column.id]?.options;
|
|
151
|
+
return {
|
|
152
|
+
...mergeStyleValues(this.column, grid.options?.columnDefaults?.style, rawColumnOptions?.style),
|
|
153
|
+
...mergeStyleValues(this, grid.options?.columnDefaults?.cells?.style, rawColumnOptions?.cells?.style)
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Updates the the dataset so that it reflects the current state of the
|
|
158
|
+
* grid.
|
|
109
159
|
*
|
|
110
160
|
* @returns
|
|
111
161
|
* A promise that resolves to `true` if the cell triggered all the whole
|
|
112
|
-
* viewport rows to be updated, or `false` if the only change
|
|
113
|
-
*
|
|
162
|
+
* viewport rows to be updated, or `false` if the only change was the cell's
|
|
163
|
+
* content.
|
|
114
164
|
*/
|
|
115
|
-
async
|
|
116
|
-
|
|
165
|
+
async updateDataset() {
|
|
166
|
+
const oldValue = await this.column.viewport.grid.dataProvider?.getValue(this.column.id, this.row.index);
|
|
167
|
+
if (oldValue === this.value) {
|
|
117
168
|
// Abort if the value is the same as in the data table.
|
|
118
169
|
return false;
|
|
119
170
|
}
|
|
120
171
|
const vp = this.column.viewport;
|
|
121
|
-
const {
|
|
122
|
-
const
|
|
123
|
-
|
|
124
|
-
if (!originalDataTable || rowTableIndex === void 0) {
|
|
172
|
+
const { dataProvider: dp } = vp.grid;
|
|
173
|
+
const rowId = this.row.id;
|
|
174
|
+
if (!dp || rowId === void 0) {
|
|
125
175
|
return false;
|
|
126
176
|
}
|
|
127
177
|
this.row.data[this.column.id] = this.value;
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
if (vp.grid.dataTable === vp.grid.presentationTable) {
|
|
178
|
+
await dp.setValue(this.value, this.column.id, rowId);
|
|
179
|
+
if (vp.grid.querying.willNotModify()) {
|
|
131
180
|
return false;
|
|
132
181
|
}
|
|
133
182
|
await vp.updateRows();
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type Cell from '../Cell';
|
|
2
2
|
import type Column from '../Column';
|
|
3
|
-
import type
|
|
3
|
+
import type { RowObject as DataTableRowObject } from '../../../../Data/DataTable';
|
|
4
|
+
import type { RowId } from '../../Data/DataProvider';
|
|
4
5
|
import Row from '../Row.js';
|
|
5
6
|
import Table from '../Table.js';
|
|
6
7
|
/**
|
|
@@ -10,15 +11,15 @@ declare class TableRow extends Row {
|
|
|
10
11
|
/**
|
|
11
12
|
* The row values from the data table in the original column order.
|
|
12
13
|
*/
|
|
13
|
-
data:
|
|
14
|
+
data: DataTableRowObject;
|
|
14
15
|
/**
|
|
15
16
|
* The local index of the row in the presentation data table.
|
|
16
17
|
*/
|
|
17
18
|
index: number;
|
|
18
19
|
/**
|
|
19
|
-
* The
|
|
20
|
+
* The unique ID of the row.
|
|
20
21
|
*/
|
|
21
|
-
id?:
|
|
22
|
+
id?: RowId;
|
|
22
23
|
/**
|
|
23
24
|
* The vertical translation of the row.
|
|
24
25
|
*/
|
|
@@ -33,6 +34,7 @@ declare class TableRow extends Row {
|
|
|
33
34
|
* The index of the row in the data table.
|
|
34
35
|
*/
|
|
35
36
|
constructor(viewport: Table, index: number);
|
|
37
|
+
init(): Promise<void>;
|
|
36
38
|
createCell(column: Column): Cell;
|
|
37
39
|
/**
|
|
38
40
|
* Loads the row data from the data table.
|
|
@@ -42,17 +44,7 @@ declare class TableRow extends Row {
|
|
|
42
44
|
* Updates the row data and its cells with the latest values from the data
|
|
43
45
|
* table.
|
|
44
46
|
*/
|
|
45
|
-
update(): void
|
|
46
|
-
/**
|
|
47
|
-
* Reuses the row instance for a new index.
|
|
48
|
-
*
|
|
49
|
-
* @param index
|
|
50
|
-
* The index of the row in the data table.
|
|
51
|
-
*
|
|
52
|
-
* @param doReflow
|
|
53
|
-
* Whether to reflow the row after updating the cells.
|
|
54
|
-
*/
|
|
55
|
-
reuse(index: number, doReflow?: boolean): void;
|
|
47
|
+
update(): Promise<void>;
|
|
56
48
|
/**
|
|
57
49
|
* Adds or removes the hovered CSS class to the row element.
|
|
58
50
|
*
|
|
@@ -17,6 +17,7 @@
|
|
|
17
17
|
import Row from '../Row.js';
|
|
18
18
|
import TableCell from './TableCell.js';
|
|
19
19
|
import Globals from '../../Globals.js';
|
|
20
|
+
import { fireEvent } from '../../../../Shared/Utilities.js';
|
|
20
21
|
/* *
|
|
21
22
|
*
|
|
22
23
|
* Class
|
|
@@ -56,24 +57,28 @@ class TableRow extends Row {
|
|
|
56
57
|
*/
|
|
57
58
|
this.translateY = 0;
|
|
58
59
|
this.index = index;
|
|
59
|
-
this.id = viewport.dataTable.getOriginalRowIndex(index);
|
|
60
|
-
this.loadData();
|
|
61
|
-
this.setRowAttributes();
|
|
62
60
|
}
|
|
63
61
|
/* *
|
|
64
62
|
*
|
|
65
63
|
* Methods
|
|
66
64
|
*
|
|
67
65
|
* */
|
|
66
|
+
async init() {
|
|
67
|
+
const dp = this.viewport.grid.dataProvider;
|
|
68
|
+
this.id = await dp?.getRowId(this.index);
|
|
69
|
+
await this.loadData();
|
|
70
|
+
this.setRowAttributes();
|
|
71
|
+
}
|
|
68
72
|
createCell(column) {
|
|
69
73
|
return new TableCell(this, column);
|
|
70
74
|
}
|
|
71
75
|
/**
|
|
72
76
|
* Loads the row data from the data table.
|
|
73
77
|
*/
|
|
74
|
-
loadData() {
|
|
75
|
-
const data = this.viewport.
|
|
78
|
+
async loadData() {
|
|
79
|
+
const data = await this.viewport.grid.dataProvider?.getRowObject(this.index);
|
|
76
80
|
if (!data) {
|
|
81
|
+
this.data = {};
|
|
77
82
|
return;
|
|
78
83
|
}
|
|
79
84
|
this.data = data;
|
|
@@ -82,13 +87,13 @@ class TableRow extends Row {
|
|
|
82
87
|
* Updates the row data and its cells with the latest values from the data
|
|
83
88
|
* table.
|
|
84
89
|
*/
|
|
85
|
-
update() {
|
|
86
|
-
this.id = this.viewport.
|
|
90
|
+
async update() {
|
|
91
|
+
this.id = await this.viewport.grid.dataProvider?.getRowId(this.index);
|
|
87
92
|
this.updateRowAttributes();
|
|
88
|
-
this.loadData();
|
|
93
|
+
await this.loadData();
|
|
89
94
|
for (let i = 0, iEnd = this.cells.length; i < iEnd; ++i) {
|
|
90
95
|
const cell = this.cells[i];
|
|
91
|
-
|
|
96
|
+
await cell.setValue();
|
|
92
97
|
}
|
|
93
98
|
this.reflow();
|
|
94
99
|
}
|
|
@@ -98,28 +103,28 @@ class TableRow extends Row {
|
|
|
98
103
|
* @param index
|
|
99
104
|
* The index of the row in the data table.
|
|
100
105
|
*
|
|
101
|
-
* @
|
|
102
|
-
* Whether to reflow the row after updating the cells.
|
|
106
|
+
* @internal
|
|
103
107
|
*/
|
|
104
|
-
reuse(index
|
|
108
|
+
async reuse(index) {
|
|
109
|
+
for (let i = 0, iEnd = this.cells.length; i < iEnd; ++i) {
|
|
110
|
+
fireEvent(this.cells[i], 'outdate');
|
|
111
|
+
}
|
|
105
112
|
if (this.index === index) {
|
|
106
|
-
this.update();
|
|
113
|
+
await this.update();
|
|
107
114
|
return;
|
|
108
115
|
}
|
|
109
116
|
this.index = index;
|
|
110
|
-
this.id = this.viewport.
|
|
117
|
+
this.id = await this.viewport.grid.dataProvider?.getRowId(this.index);
|
|
111
118
|
this.htmlElement.setAttribute('data-row-index', index);
|
|
112
119
|
this.updateRowAttributes();
|
|
113
120
|
this.updateParityClass();
|
|
114
121
|
this.updateStateClasses();
|
|
115
|
-
this.loadData();
|
|
122
|
+
await this.loadData();
|
|
116
123
|
for (let i = 0, iEnd = this.cells.length; i < iEnd; ++i) {
|
|
117
124
|
const cell = this.cells[i];
|
|
118
|
-
|
|
119
|
-
}
|
|
120
|
-
if (doReflow) {
|
|
121
|
-
this.reflow();
|
|
125
|
+
await cell.setValue();
|
|
122
126
|
}
|
|
127
|
+
this.reflow();
|
|
123
128
|
}
|
|
124
129
|
/**
|
|
125
130
|
* Adds or removes the hovered CSS class to the row element.
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import type { CellType as DataTableCellType } from '../../../Data/DataTable';
|
|
2
|
+
import type CSSObject from '../../../Core/Renderer/CSSObject';
|
|
2
3
|
import Column from './Column';
|
|
3
4
|
import Row from './Row';
|
|
4
5
|
declare abstract class Cell {
|
|
@@ -17,11 +18,15 @@ declare abstract class Cell {
|
|
|
17
18
|
/**
|
|
18
19
|
* The raw value of the cell.
|
|
19
20
|
*/
|
|
20
|
-
value:
|
|
21
|
+
value: DataTableCellType;
|
|
21
22
|
/**
|
|
22
23
|
* An additional, custom class name that can be changed dynamically.
|
|
23
24
|
*/
|
|
24
25
|
private customClassName?;
|
|
26
|
+
/**
|
|
27
|
+
* Custom inline styles currently applied from user options.
|
|
28
|
+
*/
|
|
29
|
+
private customStyleProperties?;
|
|
25
30
|
/**
|
|
26
31
|
* Array of cell events to be removed when the cell is destroyed.
|
|
27
32
|
*/
|
|
@@ -55,7 +60,7 @@ declare abstract class Cell {
|
|
|
55
60
|
/**
|
|
56
61
|
* Renders the cell by appending the HTML element to the row.
|
|
57
62
|
*/
|
|
58
|
-
render(): void
|
|
63
|
+
render(): Promise<void>;
|
|
59
64
|
/**
|
|
60
65
|
* Reflows the cell dimensions.
|
|
61
66
|
*/
|
|
@@ -77,6 +82,14 @@ declare abstract class Cell {
|
|
|
77
82
|
* The template string.
|
|
78
83
|
*/
|
|
79
84
|
protected setCustomClassName(template?: string): void;
|
|
85
|
+
/**
|
|
86
|
+
* Sets custom inline styles from options and removes the previously applied
|
|
87
|
+
* custom styles to keep updates deterministic.
|
|
88
|
+
*
|
|
89
|
+
* @param styles
|
|
90
|
+
* A style object to apply.
|
|
91
|
+
*/
|
|
92
|
+
protected setCustomStyles(styles?: CSSObject): void;
|
|
80
93
|
/**
|
|
81
94
|
* Destroys the cell.
|
|
82
95
|
*/
|
|
@@ -15,8 +15,7 @@
|
|
|
15
15
|
* */
|
|
16
16
|
'use strict';
|
|
17
17
|
import Templating from '../../../Core/Templating.js';
|
|
18
|
-
import
|
|
19
|
-
const { fireEvent } = U;
|
|
18
|
+
import { fireEvent } from '../../../Shared/Utilities.js';
|
|
20
19
|
/* *
|
|
21
20
|
*
|
|
22
21
|
* Abstract Class of Cell
|
|
@@ -185,9 +184,10 @@ class Cell {
|
|
|
185
184
|
/**
|
|
186
185
|
* Renders the cell by appending the HTML element to the row.
|
|
187
186
|
*/
|
|
188
|
-
render() {
|
|
187
|
+
async render() {
|
|
189
188
|
this.row.htmlElement.appendChild(this.htmlElement);
|
|
190
189
|
this.reflow();
|
|
190
|
+
return Promise.resolve();
|
|
191
191
|
}
|
|
192
192
|
/**
|
|
193
193
|
* Reflows the cell dimensions.
|
|
@@ -235,6 +235,39 @@ class Cell {
|
|
|
235
235
|
element.classList.add(...newClassName.split(/\s+/g));
|
|
236
236
|
this.customClassName = newClassName;
|
|
237
237
|
}
|
|
238
|
+
/**
|
|
239
|
+
* Sets custom inline styles from options and removes the previously applied
|
|
240
|
+
* custom styles to keep updates deterministic.
|
|
241
|
+
*
|
|
242
|
+
* @param styles
|
|
243
|
+
* A style object to apply.
|
|
244
|
+
*/
|
|
245
|
+
setCustomStyles(styles) {
|
|
246
|
+
const elementStyle = this.htmlElement.style;
|
|
247
|
+
const getCSSPropertyName = (property) => (property.indexOf('-') > -1 ?
|
|
248
|
+
property :
|
|
249
|
+
property.replace(/[A-Z]/g, '-$&').toLowerCase());
|
|
250
|
+
if (this.customStyleProperties) {
|
|
251
|
+
for (const property of this.customStyleProperties) {
|
|
252
|
+
elementStyle.removeProperty(property);
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
if (!styles) {
|
|
256
|
+
delete this.customStyleProperties;
|
|
257
|
+
return;
|
|
258
|
+
}
|
|
259
|
+
const appliedProperties = [];
|
|
260
|
+
for (const key of Object.keys(styles)) {
|
|
261
|
+
const value = styles[key];
|
|
262
|
+
if (value === void 0 || value === null) {
|
|
263
|
+
continue;
|
|
264
|
+
}
|
|
265
|
+
const property = getCSSPropertyName(String(key));
|
|
266
|
+
elementStyle.setProperty(property, String(value));
|
|
267
|
+
appliedProperties.push(property);
|
|
268
|
+
}
|
|
269
|
+
this.customStyleProperties = appliedProperties;
|
|
270
|
+
}
|
|
238
271
|
/**
|
|
239
272
|
* Destroys the cell.
|
|
240
273
|
*/
|
|
@@ -17,8 +17,7 @@ import AST from '../../../../Core/Renderer/HTML/AST.js';
|
|
|
17
17
|
import CellContent from './CellContent.js';
|
|
18
18
|
import GridUtils from '../../GridUtils.js';
|
|
19
19
|
const { setHTMLContent } = GridUtils;
|
|
20
|
-
import
|
|
21
|
-
const { defined, isString } = Utils;
|
|
20
|
+
import { defined } from '../../../../Shared/Utilities.js';
|
|
22
21
|
/* *
|
|
23
22
|
*
|
|
24
23
|
* Class
|
|
@@ -77,12 +76,8 @@ class TextContent extends CellContent {
|
|
|
77
76
|
}
|
|
78
77
|
else if (isDefaultFormat) {
|
|
79
78
|
const formattedValue = formatter?.call(cell);
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
}
|
|
83
|
-
else {
|
|
84
|
-
cellContent = value + '';
|
|
85
|
-
}
|
|
79
|
+
cellContent = defined(formattedValue) ?
|
|
80
|
+
String(formattedValue) : value + '';
|
|
86
81
|
}
|
|
87
82
|
else if (isDefaultFormatter) {
|
|
88
83
|
cellContent = format ? cell.format(format) : value + '';
|
|
@@ -2,8 +2,8 @@ import type { IndividualColumnOptions } from '../Options';
|
|
|
2
2
|
import type Cell from './Cell';
|
|
3
3
|
import type CellContent from './CellContent/CellContent';
|
|
4
4
|
import type HeaderCell from './Header/HeaderCell';
|
|
5
|
+
import type { Column as DataTableColumn } from '../../../Data/DataTable';
|
|
5
6
|
import Table from './Table.js';
|
|
6
|
-
import DataTable from '../../../Data/DataTable.js';
|
|
7
7
|
import ColumnSorting from './Actions/ColumnSorting';
|
|
8
8
|
import ColumnFiltering from './Actions/ColumnFiltering/ColumnFiltering.js';
|
|
9
9
|
import TableCell from './Body/TableCell';
|
|
@@ -18,7 +18,7 @@ export declare class Column {
|
|
|
18
18
|
/**
|
|
19
19
|
* Type of the data in the column.
|
|
20
20
|
*/
|
|
21
|
-
|
|
21
|
+
dataType: ColumnDataType;
|
|
22
22
|
/**
|
|
23
23
|
* The cells of the column.
|
|
24
24
|
*/
|
|
@@ -28,9 +28,11 @@ export declare class Column {
|
|
|
28
28
|
*/
|
|
29
29
|
id: string;
|
|
30
30
|
/**
|
|
31
|
-
* The data of the column.
|
|
31
|
+
* The data of the column. Shouldn't be used directly in all cases, because
|
|
32
|
+
* it's not guaranteed to be defined (e.g. when using the lazy loading,
|
|
33
|
+
* `RemoteDataProvider`).
|
|
32
34
|
*/
|
|
33
|
-
data?:
|
|
35
|
+
data?: DataTableColumn;
|
|
34
36
|
/**
|
|
35
37
|
* The options of the column as a proxy that provides merged access to
|
|
36
38
|
* original options and defaults if not defined in the individual options.
|
|
@@ -65,6 +67,10 @@ export declare class Column {
|
|
|
65
67
|
* The index of the column.
|
|
66
68
|
*/
|
|
67
69
|
constructor(viewport: Table, id: string, index: number);
|
|
70
|
+
/**
|
|
71
|
+
* Initializes the column data-related properties.
|
|
72
|
+
*/
|
|
73
|
+
init(): Promise<void>;
|
|
68
74
|
/**
|
|
69
75
|
* Loads the data of the column from the viewport's data table.
|
|
70
76
|
*/
|