@highcharts/grid-pro 2.0.0 → 2.1.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/css/grid-pro.css +93 -90
- package/es-modules/Accessibility/Components/SeriesComponent/ForcedMarkers.js +2 -0
- package/es-modules/Accessibility/Options/LangDefaults.js +6 -1
- package/es-modules/Accessibility/Utils/ChartUtilities.js +3 -3
- package/es-modules/Core/Chart/Chart.js +1 -1
- package/es-modules/Core/Color/ColorString.d.ts +25 -0
- package/es-modules/Core/Color/ColorType.d.ts +43 -0
- package/es-modules/Core/Color/GradientColor.d.ts +57 -0
- package/es-modules/Core/Globals.js +1 -1
- package/es-modules/Core/Renderer/AlignObject.d.ts +37 -0
- package/es-modules/Core/Renderer/BBoxObject.d.ts +40 -0
- package/es-modules/Core/Renderer/CSSObject.d.ts +130 -0
- package/es-modules/Core/Renderer/DOMElementType.d.ts +36 -0
- package/es-modules/Core/Renderer/DashStyleValue.d.ts +28 -0
- package/es-modules/Core/Renderer/FontMetricsObject.d.ts +38 -0
- package/es-modules/Core/Renderer/HTML/HTMLAttributes.d.ts +57 -0
- package/es-modules/Core/Renderer/PolygonBoxObject.d.ts +19 -0
- package/es-modules/Core/Renderer/Position3DObject.d.ts +35 -0
- package/es-modules/Core/Renderer/PositionObject.d.ts +28 -0
- package/es-modules/Core/Renderer/RectangleObject.d.ts +35 -0
- package/es-modules/Core/Renderer/RendererType.d.ts +53 -0
- package/es-modules/Core/Renderer/SVG/ButtonThemeObject.d.ts +43 -0
- package/es-modules/Core/Renderer/SVG/SVGArc3D.d.ts +44 -0
- package/es-modules/Core/Renderer/SVG/SVGAttributes.d.ts +147 -0
- package/es-modules/Core/Renderer/SVG/SVGAttributes3D.d.ts +42 -0
- package/es-modules/Core/Renderer/SVG/SVGCuboid.d.ts +42 -0
- package/es-modules/Core/Renderer/SVG/SVGElementBase.d.ts +31 -0
- package/es-modules/Core/Renderer/SVG/SVGPath.d.ts +97 -0
- package/es-modules/Core/Renderer/SVG/SVGPath3D.d.ts +40 -0
- package/es-modules/Core/Renderer/SVG/SVGRendererBase.d.ts +31 -0
- package/es-modules/Core/Renderer/SVG/SymbolOptions.d.ts +41 -0
- package/es-modules/Core/Renderer/SVG/SymbolType.d.ts +50 -0
- package/es-modules/Core/Renderer/ShadowOptionsObject.d.ts +40 -0
- package/es-modules/Core/Renderer/SizeObject.d.ts +28 -0
- package/es-modules/Core/Templating.js +6 -7
- package/es-modules/Data/Connectors/DataConnector.js +3 -2
- package/es-modules/Data/Connectors/DataConnectorOptions.d.ts +1 -1
- package/es-modules/Data/DataTable.d.ts +1 -1
- package/es-modules/Data/DataTable.js +3 -2
- package/es-modules/Data/DataTableCore.js +15 -6
- package/es-modules/Grid/Core/Accessibility/Accessibility.d.ts +13 -15
- package/es-modules/Grid/Core/Credits.d.ts +0 -2
- package/es-modules/Grid/Core/Defaults.d.ts +20 -17
- package/es-modules/Grid/Core/Defaults.js +116 -114
- package/es-modules/Grid/Core/Globals.d.ts +108 -32
- package/es-modules/Grid/Core/Globals.js +98 -111
- package/es-modules/Grid/Core/Grid.d.ts +51 -17
- package/es-modules/Grid/Core/Grid.js +369 -79
- package/es-modules/Grid/Core/GridUtils.d.ts +96 -89
- package/es-modules/Grid/Core/GridUtils.js +143 -155
- package/es-modules/Grid/Core/Options.d.ts +3 -7
- package/es-modules/Grid/Core/Pagination/Icons.d.ts +4 -4
- package/es-modules/Grid/Core/Pagination/Pagination.d.ts +32 -57
- package/es-modules/Grid/Core/Pagination/Pagination.js +206 -214
- package/es-modules/Grid/Core/Pagination/PaginationOptions.d.ts +22 -15
- package/es-modules/Grid/Core/Querying/PaginationController.d.ts +32 -9
- package/es-modules/Grid/Core/Querying/PaginationController.js +58 -18
- package/es-modules/Grid/Core/Querying/SortingController.d.ts +7 -15
- package/es-modules/Grid/Core/Querying/SortingController.js +2 -3
- package/es-modules/Grid/Core/Table/Actions/ColumnFiltering/ColumnFiltering.d.ts +1 -1
- package/es-modules/Grid/Core/Table/Actions/ColumnFiltering/ColumnFiltering.js +32 -4
- package/es-modules/Grid/Core/Table/Actions/ColumnFiltering/FilteringTypes.d.ts +3 -3
- package/es-modules/Grid/Core/Table/Actions/ColumnSorting.d.ts +3 -5
- package/es-modules/Grid/Core/Table/Actions/ColumnSorting.js +1 -5
- package/es-modules/Grid/Core/Table/Body/TableCell.d.ts +14 -10
- package/es-modules/Grid/Core/Table/Body/TableCell.js +22 -25
- package/es-modules/Grid/Core/Table/Body/TableRow.d.ts +0 -2
- package/es-modules/Grid/Core/Table/Cell.js +30 -0
- package/es-modules/Grid/Core/Table/CellContent/TextContent.d.ts +2 -7
- package/es-modules/Grid/Core/Table/CellContent/TextContent.js +25 -14
- package/es-modules/Grid/Core/Table/Column.d.ts +7 -9
- package/es-modules/Grid/Core/Table/Column.js +23 -1
- package/es-modules/Grid/Core/Table/ColumnResizing/AdjacentResizingMode.js +2 -2
- package/es-modules/Grid/Core/Table/ColumnResizing/ColumnResizing.d.ts +30 -23
- package/es-modules/Grid/Core/Table/ColumnResizing/ColumnResizing.js +39 -39
- package/es-modules/Grid/Core/Table/ColumnResizing/DistributedResizingMode.js +1 -1
- package/es-modules/Grid/Core/Table/ColumnResizing/IndependentResizingMode.js +2 -2
- package/es-modules/Grid/Core/Table/ColumnResizing/ResizingMode.d.ts +6 -1
- package/es-modules/Grid/Core/Table/Header/ColumnToolbar/ColumnToolbar.js +10 -0
- package/es-modules/Grid/Core/Table/Header/ColumnToolbar/FilterPopup.d.ts +2 -2
- package/es-modules/Grid/Core/Table/Header/ColumnToolbar/StateHelpers.d.ts +26 -24
- package/es-modules/Grid/Core/Table/Header/ColumnToolbar/StateHelpers.js +37 -39
- package/es-modules/Grid/Core/Table/Header/ColumnToolbar/ToolbarButtons/FilterToolbarButton.d.ts +1 -1
- package/es-modules/Grid/Core/Table/Header/ColumnToolbar/ToolbarButtons/MenuToolbarButton.d.ts +1 -1
- package/es-modules/Grid/Core/Table/Header/ColumnToolbar/ToolbarButtons/SortToolbarButton.d.ts +1 -1
- package/es-modules/Grid/Core/Table/Header/HeaderCell.js +3 -4
- package/es-modules/Grid/Core/Table/Header/HeaderRow.d.ts +0 -2
- package/es-modules/Grid/Core/Table/Header/TableHeader.d.ts +0 -2
- package/es-modules/Grid/Core/Table/Table.d.ts +11 -13
- package/es-modules/Grid/Core/Table/Table.js +9 -5
- package/es-modules/Grid/Core/UI/Button.d.ts +1 -1
- package/es-modules/Grid/Core/UI/ContextMenu.d.ts +1 -1
- package/es-modules/Grid/Core/UI/ContextMenu.js +1 -1
- package/es-modules/Grid/Core/UI/ContextMenuButton.d.ts +39 -44
- package/es-modules/Grid/Core/UI/ContextMenuButton.js +4 -4
- package/es-modules/Grid/Core/UI/Popup.d.ts +17 -19
- package/es-modules/Grid/Core/UI/Popup.js +2 -1
- package/es-modules/Grid/Core/UI/SvgIcons.d.ts +49 -50
- package/es-modules/Grid/Core/UI/SvgIcons.js +114 -123
- package/es-modules/Grid/Core/UI/ToolbarButton.d.ts +46 -52
- package/es-modules/Grid/Core/UI/ToolbarButton.js +4 -3
- package/es-modules/Grid/Pro/CellEditing/CellEditing.d.ts +6 -8
- package/es-modules/Grid/Pro/CellEditing/CellEditing.js +8 -11
- package/es-modules/Grid/Pro/CellEditing/CellEditingComposition.d.ts +27 -1
- package/es-modules/Grid/Pro/CellEditing/CellEditingComposition.js +149 -149
- package/es-modules/Grid/Pro/CellRendering/CellRenderer.d.ts +18 -20
- package/es-modules/Grid/Pro/CellRendering/CellRenderer.js +1 -1
- package/es-modules/Grid/Pro/CellRendering/CellRendererRegistry.d.ts +19 -17
- package/es-modules/Grid/Pro/CellRendering/CellRendererRegistry.js +28 -34
- package/es-modules/Grid/Pro/CellRendering/CellRenderersComposition.d.ts +12 -1
- package/es-modules/Grid/Pro/CellRendering/CellRenderersComposition.js +41 -46
- package/es-modules/Grid/Pro/CellRendering/ContentTypes/CheckboxContent.js +2 -2
- package/es-modules/Grid/Pro/CellRendering/ContentTypes/DateInputContent.d.ts +2 -2
- package/es-modules/Grid/Pro/CellRendering/ContentTypes/DateInputContentBase.d.ts +2 -2
- package/es-modules/Grid/Pro/CellRendering/ContentTypes/DateInputContentBase.js +4 -2
- package/es-modules/Grid/Pro/CellRendering/ContentTypes/DateTimeInputContent.d.ts +2 -2
- package/es-modules/Grid/Pro/CellRendering/ContentTypes/NumberInputContent.js +3 -1
- package/es-modules/Grid/Pro/CellRendering/ContentTypes/SelectContent.js +3 -1
- package/es-modules/Grid/Pro/CellRendering/ContentTypes/SparklineContent.d.ts +19 -8
- package/es-modules/Grid/Pro/CellRendering/ContentTypes/SparklineContent.js +17 -13
- package/es-modules/Grid/Pro/CellRendering/ContentTypes/TextInputContent.js +3 -1
- package/es-modules/Grid/Pro/CellRendering/ContentTypes/TimeInputContent.d.ts +2 -2
- package/es-modules/Grid/Pro/CellRendering/Renderers/CheckboxRenderer.d.ts +18 -20
- package/es-modules/Grid/Pro/CellRendering/Renderers/CheckboxRenderer.js +3 -3
- package/es-modules/Grid/Pro/CellRendering/Renderers/DateInputRenderer.d.ts +10 -12
- package/es-modules/Grid/Pro/CellRendering/Renderers/DateInputRenderer.js +3 -3
- package/es-modules/Grid/Pro/CellRendering/Renderers/DateInputRendererBase.d.ts +17 -20
- package/es-modules/Grid/Pro/CellRendering/Renderers/DateTimeInputRenderer.d.ts +10 -12
- package/es-modules/Grid/Pro/CellRendering/Renderers/DateTimeInputRenderer.js +3 -3
- package/es-modules/Grid/Pro/CellRendering/Renderers/NumberInputRenderer.d.ts +20 -22
- package/es-modules/Grid/Pro/CellRendering/Renderers/NumberInputRenderer.js +3 -3
- package/es-modules/Grid/Pro/CellRendering/Renderers/SelectRenderer.d.ts +40 -42
- package/es-modules/Grid/Pro/CellRendering/Renderers/SelectRenderer.js +3 -3
- package/es-modules/Grid/Pro/CellRendering/Renderers/SparklineRenderer.d.ts +16 -18
- package/es-modules/Grid/Pro/CellRendering/Renderers/SparklineRenderer.js +14 -22
- package/es-modules/Grid/Pro/CellRendering/Renderers/TextInputRenderer.d.ts +22 -24
- package/es-modules/Grid/Pro/CellRendering/Renderers/TextInputRenderer.js +3 -3
- package/es-modules/Grid/Pro/CellRendering/Renderers/TextRenderer.d.ts +10 -12
- package/es-modules/Grid/Pro/CellRendering/Renderers/TextRenderer.js +3 -3
- package/es-modules/Grid/Pro/CellRendering/Renderers/TimeInputRenderer.d.ts +10 -12
- package/es-modules/Grid/Pro/CellRendering/Renderers/TimeInputRenderer.js +3 -3
- package/es-modules/Grid/Pro/ColumnTypes/Validator.d.ts +46 -51
- package/es-modules/Grid/Pro/ColumnTypes/Validator.js +62 -77
- package/es-modules/Grid/Pro/ColumnTypes/ValidatorComposition.d.ts +16 -3
- package/es-modules/Grid/Pro/ColumnTypes/ValidatorComposition.js +26 -31
- package/es-modules/Grid/Pro/Credits/CreditsPro.d.ts +0 -2
- package/es-modules/Grid/Pro/Credits/CreditsProComposition.d.ts +12 -11
- package/es-modules/Grid/Pro/Credits/CreditsProComposition.js +29 -31
- package/es-modules/Grid/Pro/Export/Exporting.d.ts +3 -3
- package/es-modules/Grid/Pro/Export/Exporting.js +35 -29
- package/es-modules/Grid/Pro/Export/ExportingComposition.d.ts +12 -11
- package/es-modules/Grid/Pro/Export/ExportingComposition.js +24 -26
- package/es-modules/Grid/Pro/GridEvents.d.ts +19 -1
- package/es-modules/Grid/Pro/GridEvents.js +6 -2
- package/es-modules/Grid/Pro/Pagination/PaginationComposition.d.ts +4 -11
- package/es-modules/Grid/Pro/Pagination/PaginationComposition.js +44 -45
- package/es-modules/Grid/index.d.ts +1 -0
- package/es-modules/masters/grid-pro.src.d.ts +62 -37
- package/es-modules/masters/grid-pro.src.js +37 -39
- package/grid-pro.d.ts +122 -48
- package/grid-pro.js +3 -6
- package/grid-pro.js.map +1 -1
- package/grid-pro.src.d.ts +122 -48
- package/grid-pro.src.js +6650 -6277
- package/package.json +13 -4
- package/es-modules/Grid/Pro/ColumnTypes/ColumnDataType.d.ts +0 -29
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
*
|
|
15
15
|
* */
|
|
16
16
|
'use strict';
|
|
17
|
-
import
|
|
17
|
+
import { defaultOptions as gridDefaultOptions } from '../../Core/Defaults.js';
|
|
18
18
|
import Globals from '../../Core/Globals.js';
|
|
19
19
|
import CellEditing from './CellEditing.js';
|
|
20
20
|
import CellRendererRegistry from '../CellRendering/CellRendererRegistry.js';
|
|
@@ -28,171 +28,171 @@ const { addEvent, merge, pushUnique } = U;
|
|
|
28
28
|
*
|
|
29
29
|
* */
|
|
30
30
|
/**
|
|
31
|
-
*
|
|
31
|
+
* Default options for the cell editing.
|
|
32
32
|
*/
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
33
|
+
export const defaultOptions = {
|
|
34
|
+
accessibility: {
|
|
35
|
+
announcements: {
|
|
36
|
+
cellEditing: true
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
lang: {
|
|
39
40
|
accessibility: {
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
editable: 'Editable.',
|
|
48
|
-
announcements: {
|
|
49
|
-
started: 'Entered cell editing mode.',
|
|
50
|
-
edited: 'Edited cell value.',
|
|
51
|
-
cancelled: 'Editing canceled.',
|
|
52
|
-
notValid: 'Provided value is not valid.'
|
|
53
|
-
}
|
|
41
|
+
cellEditing: {
|
|
42
|
+
editable: 'Editable.',
|
|
43
|
+
announcements: {
|
|
44
|
+
started: 'Entered cell editing mode.',
|
|
45
|
+
edited: 'Edited cell value.',
|
|
46
|
+
cancelled: 'Editing canceled.',
|
|
47
|
+
notValid: 'Provided value is not valid.'
|
|
54
48
|
}
|
|
55
49
|
}
|
|
56
50
|
}
|
|
57
|
-
};
|
|
58
|
-
/**
|
|
59
|
-
* Extends the grid classes with cell editing functionality.
|
|
60
|
-
*
|
|
61
|
-
* @param TableClass
|
|
62
|
-
* The class to extend.
|
|
63
|
-
*
|
|
64
|
-
* @param TableCellClass
|
|
65
|
-
* The class to extend.
|
|
66
|
-
*
|
|
67
|
-
* @param ColumnClass
|
|
68
|
-
* The class to extend.
|
|
69
|
-
*/
|
|
70
|
-
function compose(TableClass, TableCellClass, ColumnClass) {
|
|
71
|
-
if (!pushUnique(Globals.composed, 'CellEditing')) {
|
|
72
|
-
return;
|
|
73
|
-
}
|
|
74
|
-
merge(true, Defaults.defaultOptions, defaultOptions);
|
|
75
|
-
addEvent(ColumnClass, 'afterInit', afterColumnInit);
|
|
76
|
-
addEvent(TableClass, 'beforeInit', initTable);
|
|
77
|
-
addEvent(TableCellClass, 'keyDown', onCellKeyDown);
|
|
78
|
-
addEvent(TableCellClass, 'dblClick', onCellDblClick);
|
|
79
|
-
addEvent(TableCellClass, 'afterRender', addEditableCellA11yHint);
|
|
80
|
-
addEvent(TableCellClass, 'startedEditing', function () {
|
|
81
|
-
announceA11yUserEditedCell(this, 'started');
|
|
82
|
-
});
|
|
83
|
-
addEvent(TableCellClass, 'stoppedEditing', function (e) {
|
|
84
|
-
if (e.submit) {
|
|
85
|
-
this.column.options.cells?.events?.afterEdit?.call(this);
|
|
86
|
-
}
|
|
87
|
-
announceA11yUserEditedCell(this, e.submit ? 'edited' : 'cancelled');
|
|
88
|
-
});
|
|
89
51
|
}
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
52
|
+
};
|
|
53
|
+
/**
|
|
54
|
+
* Extends the grid classes with cell editing functionality.
|
|
55
|
+
*
|
|
56
|
+
* @param TableClass
|
|
57
|
+
* The class to extend.
|
|
58
|
+
*
|
|
59
|
+
* @param TableCellClass
|
|
60
|
+
* The class to extend.
|
|
61
|
+
*
|
|
62
|
+
* @param ColumnClass
|
|
63
|
+
* The class to extend.
|
|
64
|
+
*/
|
|
65
|
+
export function compose(TableClass, TableCellClass, ColumnClass) {
|
|
66
|
+
if (!pushUnique(Globals.composed, 'CellEditing')) {
|
|
67
|
+
return;
|
|
96
68
|
}
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
function
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
if (
|
|
108
|
-
|
|
109
|
-
}
|
|
110
|
-
const ViewRendererType = CellRendererRegistry.types[viewRendererTypeName] ||
|
|
111
|
-
CellRendererRegistry.types.text;
|
|
112
|
-
let editModeRendererTypeName = ViewRendererType.defaultEditingRenderer;
|
|
113
|
-
if (typeof editModeRendererTypeName !== 'string') {
|
|
114
|
-
editModeRendererTypeName =
|
|
115
|
-
editModeRendererTypeName[column.dataType] || 'textInput';
|
|
69
|
+
merge(true, gridDefaultOptions, defaultOptions);
|
|
70
|
+
addEvent(ColumnClass, 'afterInit', afterColumnInit);
|
|
71
|
+
addEvent(TableClass, 'beforeInit', initTable);
|
|
72
|
+
addEvent(TableCellClass, 'keyDown', onCellKeyDown);
|
|
73
|
+
addEvent(TableCellClass, 'dblClick', onCellDblClick);
|
|
74
|
+
addEvent(TableCellClass, 'afterRender', addEditableCellA11yHint);
|
|
75
|
+
addEvent(TableCellClass, 'startedEditing', function () {
|
|
76
|
+
announceA11yUserEditedCell(this, 'started');
|
|
77
|
+
});
|
|
78
|
+
addEvent(TableCellClass, 'stoppedEditing', function (e) {
|
|
79
|
+
if (e.submit) {
|
|
80
|
+
this.column.options.cells?.events?.afterEdit?.call(this);
|
|
116
81
|
}
|
|
117
|
-
|
|
82
|
+
announceA11yUserEditedCell(this, e.submit ? 'edited' : 'cancelled');
|
|
83
|
+
});
|
|
84
|
+
addEvent(TableCellClass, 'afterEditValue', function () {
|
|
85
|
+
this.column.options.cells?.events?.afterEdit?.call(this);
|
|
86
|
+
announceA11yUserEditedCell(this, 'edited');
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Callback function called before table initialization.
|
|
91
|
+
*/
|
|
92
|
+
function initTable() {
|
|
93
|
+
this.cellEditing = new CellEditing(this);
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Creates the edit mode renderer for the column.
|
|
97
|
+
*
|
|
98
|
+
* @param column
|
|
99
|
+
* The column to create the edit mode renderer for.
|
|
100
|
+
*/
|
|
101
|
+
function createEditModeRenderer(column) {
|
|
102
|
+
const editModeOptions = column.options.cells?.editMode;
|
|
103
|
+
const selectedEditModeRendererTypeName = editModeOptions?.renderer?.type;
|
|
104
|
+
const viewRendererTypeName = column.options?.cells?.renderer?.type || 'text';
|
|
105
|
+
if (selectedEditModeRendererTypeName) {
|
|
106
|
+
return new CellRendererRegistry.types[selectedEditModeRendererTypeName](column, editModeOptions?.renderer || {});
|
|
118
107
|
}
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
this.editModeRenderer = createEditModeRenderer(this);
|
|
126
|
-
}
|
|
108
|
+
const ViewRendererType = CellRendererRegistry.types[viewRendererTypeName] ||
|
|
109
|
+
CellRendererRegistry.types.text;
|
|
110
|
+
let editModeRendererTypeName = ViewRendererType.defaultEditingRenderer;
|
|
111
|
+
if (typeof editModeRendererTypeName !== 'string') {
|
|
112
|
+
editModeRendererTypeName =
|
|
113
|
+
editModeRendererTypeName[column.dataType] || 'textInput';
|
|
127
114
|
}
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
115
|
+
return new CellRendererRegistry.types[editModeRendererTypeName](column, editModeRendererTypeName === viewRendererTypeName ? merge(column.options.cells?.renderer, { disabled: false }) || {} : {});
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Callback function called after column initialization.
|
|
119
|
+
*/
|
|
120
|
+
function afterColumnInit() {
|
|
121
|
+
const { options } = this;
|
|
122
|
+
if (options?.cells?.editMode?.enabled) {
|
|
123
|
+
this.editModeRenderer = createEditModeRenderer(this);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Callback function called when a key is pressed on a cell.
|
|
128
|
+
*
|
|
129
|
+
* @param e
|
|
130
|
+
* The event object.
|
|
131
|
+
*/
|
|
132
|
+
function onCellKeyDown(e) {
|
|
133
|
+
if (e.originalEvent?.key !== 'Enter' ||
|
|
134
|
+
!this.column.editModeRenderer) {
|
|
135
|
+
return;
|
|
136
|
+
}
|
|
137
|
+
this.row.viewport.cellEditing?.startEditing(this);
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Callback function called when a cell is double clicked.
|
|
141
|
+
*/
|
|
142
|
+
function onCellDblClick() {
|
|
143
|
+
if (this.column.editModeRenderer) {
|
|
139
144
|
this.row.viewport.cellEditing?.startEditing(this);
|
|
140
145
|
}
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Add the 'editable' hint span element for the editable cell.
|
|
149
|
+
*/
|
|
150
|
+
function addEditableCellA11yHint() {
|
|
151
|
+
const a11y = this.row.viewport.grid.accessibility;
|
|
152
|
+
if (!a11y || this.a11yEditableHint?.isConnected) {
|
|
153
|
+
return;
|
|
148
154
|
}
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
const a11y = this.row.viewport.grid.accessibility;
|
|
154
|
-
if (!a11y || this.a11yEditableHint?.isConnected) {
|
|
155
|
-
return;
|
|
156
|
-
}
|
|
157
|
-
const editableLang = this.row.viewport.grid.options
|
|
158
|
-
?.lang?.accessibility?.cellEditing?.editable;
|
|
159
|
-
if (!this.column.options.cells?.editMode?.enabled || !editableLang) {
|
|
160
|
-
return;
|
|
161
|
-
}
|
|
162
|
-
this.a11yEditableHint = makeHTMLElement('span', {
|
|
163
|
-
className: Globals.getClassName('visuallyHidden'),
|
|
164
|
-
innerText: ', ' + editableLang
|
|
165
|
-
}, this.htmlElement);
|
|
155
|
+
const editableLang = this.row.viewport.grid.options
|
|
156
|
+
?.lang?.accessibility?.cellEditing?.editable;
|
|
157
|
+
if (!this.column.options.cells?.editMode?.enabled || !editableLang) {
|
|
158
|
+
return;
|
|
166
159
|
}
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
160
|
+
this.a11yEditableHint = makeHTMLElement('span', {
|
|
161
|
+
className: Globals.getClassName('visuallyHidden'),
|
|
162
|
+
innerText: ', ' + editableLang
|
|
163
|
+
}, this.htmlElement);
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Announce that the cell editing started.
|
|
167
|
+
*
|
|
168
|
+
* @param cell
|
|
169
|
+
* The cell that is being edited.
|
|
170
|
+
*
|
|
171
|
+
* @param msgType
|
|
172
|
+
* The type of the message.
|
|
173
|
+
*/
|
|
174
|
+
function announceA11yUserEditedCell(cell, msgType) {
|
|
175
|
+
const a11y = cell.row.viewport.grid.accessibility;
|
|
176
|
+
if (!a11y) {
|
|
177
|
+
return;
|
|
178
|
+
}
|
|
179
|
+
const { options } = a11y.grid;
|
|
180
|
+
if (!options?.accessibility?.announcements?.cellEditing) {
|
|
181
|
+
return;
|
|
182
|
+
}
|
|
183
|
+
const lang = options?.lang?.accessibility?.cellEditing?.announcements;
|
|
184
|
+
const msg = lang?.[msgType];
|
|
185
|
+
if (!msg) {
|
|
186
|
+
return;
|
|
191
187
|
}
|
|
192
|
-
|
|
188
|
+
a11y.announce(msg);
|
|
189
|
+
}
|
|
193
190
|
/* *
|
|
194
191
|
*
|
|
195
192
|
* Default Export
|
|
196
193
|
*
|
|
197
194
|
* */
|
|
198
|
-
export default
|
|
195
|
+
export default {
|
|
196
|
+
compose,
|
|
197
|
+
defaultOptions
|
|
198
|
+
};
|
|
@@ -4,11 +4,11 @@ import type CellContent from '../../Core/Table/CellContent/CellContent';
|
|
|
4
4
|
/**
|
|
5
5
|
* Renderer class that initialize all options per column.
|
|
6
6
|
*/
|
|
7
|
-
declare abstract class CellRenderer {
|
|
7
|
+
export declare abstract class CellRenderer {
|
|
8
8
|
/**
|
|
9
9
|
* Options to control the renderer content.
|
|
10
10
|
*/
|
|
11
|
-
abstract options:
|
|
11
|
+
abstract options: CellRendererOptions;
|
|
12
12
|
/**
|
|
13
13
|
* The column to which the specific renderer belongs.
|
|
14
14
|
*/
|
|
@@ -26,25 +26,23 @@ declare abstract class CellRenderer {
|
|
|
26
26
|
*/
|
|
27
27
|
abstract render(cell: TableCell): CellContent;
|
|
28
28
|
}
|
|
29
|
-
|
|
29
|
+
/**
|
|
30
|
+
* Options to control the renderer content.
|
|
31
|
+
*/
|
|
32
|
+
export interface CellRendererOptions {
|
|
30
33
|
/**
|
|
31
|
-
*
|
|
34
|
+
* The cell content type.
|
|
35
|
+
*
|
|
36
|
+
* Can be one of the following: `'text'`, `'checkbox'`, `'select'`,
|
|
37
|
+
* `'textInput'`, `'dateInput'`, `'dateTimeInput'`, `'timeInput'`,
|
|
38
|
+
* `'numberInput'`, `'sparkline'`.
|
|
39
|
+
*
|
|
40
|
+
* You can also create your own custom renderer by extending the
|
|
41
|
+
* `CellRenderer` class and registering it in the
|
|
42
|
+
* `CellRendererTypeRegistry`.
|
|
43
|
+
*
|
|
44
|
+
* @default 'text'
|
|
32
45
|
*/
|
|
33
|
-
|
|
34
|
-
/**
|
|
35
|
-
* The cell content type.
|
|
36
|
-
*
|
|
37
|
-
* Can be one of the following: `'text'`, `'checkbox'`, `'select'`,
|
|
38
|
-
* `'textInput'`, `'dateInput'`, `'dateTimeInput'`, `'timeInput'`,
|
|
39
|
-
* `'numberInput'`, `'sparkline'`.
|
|
40
|
-
*
|
|
41
|
-
* You can also create your own custom renderer by extending the
|
|
42
|
-
* `CellRenderer` class and registering it in the
|
|
43
|
-
* `CellRendererTypeRegistry`.
|
|
44
|
-
*
|
|
45
|
-
* @default 'text'
|
|
46
|
-
*/
|
|
47
|
-
type: string;
|
|
48
|
-
}
|
|
46
|
+
type: string;
|
|
49
47
|
}
|
|
50
48
|
export default CellRenderer;
|
|
@@ -1,18 +1,20 @@
|
|
|
1
1
|
import type { CellRendererTypeRegistry } from './CellRendererType';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
2
|
+
/**
|
|
3
|
+
* Record of cell renderer classes
|
|
4
|
+
*/
|
|
5
|
+
export declare const types: CellRendererTypeRegistry;
|
|
6
|
+
/**
|
|
7
|
+
* Method used to register new cell renderer classes.
|
|
8
|
+
*
|
|
9
|
+
* @param key
|
|
10
|
+
* Registry key of the cell renderer class.
|
|
11
|
+
*
|
|
12
|
+
* @param CellRendererClass
|
|
13
|
+
* Cell renderer class (aka class constructor) to register.
|
|
14
|
+
*/
|
|
15
|
+
export declare function registerRenderer<T extends keyof CellRendererTypeRegistry>(key: T, CellRendererClass: CellRendererTypeRegistry[T]): boolean;
|
|
16
|
+
declare const _default: {
|
|
17
|
+
readonly types: CellRendererTypeRegistry;
|
|
18
|
+
readonly registerRenderer: typeof registerRenderer;
|
|
19
|
+
};
|
|
20
|
+
export default _default;
|
|
@@ -15,44 +15,38 @@
|
|
|
15
15
|
'use strict';
|
|
16
16
|
/* *
|
|
17
17
|
*
|
|
18
|
-
*
|
|
18
|
+
* Constants
|
|
19
19
|
*
|
|
20
20
|
* */
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
* Cell renderer class (aka class constructor) to register.
|
|
45
|
-
*/
|
|
46
|
-
function registerRenderer(key, CellRendererClass) {
|
|
47
|
-
return (!!key &&
|
|
48
|
-
!CellRendererRegistry.types[key] &&
|
|
49
|
-
!!(CellRendererRegistry.types[key] = CellRendererClass));
|
|
50
|
-
}
|
|
51
|
-
CellRendererRegistry.registerRenderer = registerRenderer;
|
|
52
|
-
})(CellRendererRegistry || (CellRendererRegistry = {}));
|
|
21
|
+
/**
|
|
22
|
+
* Record of cell renderer classes
|
|
23
|
+
*/
|
|
24
|
+
export const types = {};
|
|
25
|
+
/* *
|
|
26
|
+
*
|
|
27
|
+
* Functions
|
|
28
|
+
*
|
|
29
|
+
* */
|
|
30
|
+
/**
|
|
31
|
+
* Method used to register new cell renderer classes.
|
|
32
|
+
*
|
|
33
|
+
* @param key
|
|
34
|
+
* Registry key of the cell renderer class.
|
|
35
|
+
*
|
|
36
|
+
* @param CellRendererClass
|
|
37
|
+
* Cell renderer class (aka class constructor) to register.
|
|
38
|
+
*/
|
|
39
|
+
export function registerRenderer(key, CellRendererClass) {
|
|
40
|
+
return (!!key &&
|
|
41
|
+
!types[key] &&
|
|
42
|
+
!!(types[key] = CellRendererClass));
|
|
43
|
+
}
|
|
53
44
|
/* *
|
|
54
45
|
*
|
|
55
46
|
* Default Export
|
|
56
47
|
*
|
|
57
48
|
* */
|
|
58
|
-
export default
|
|
49
|
+
export default {
|
|
50
|
+
types,
|
|
51
|
+
registerRenderer
|
|
52
|
+
};
|
|
@@ -1,4 +1,12 @@
|
|
|
1
|
+
import type Column from '../../Core/Table/Column';
|
|
1
2
|
import type CellRendererType from './CellRendererType';
|
|
3
|
+
/**
|
|
4
|
+
* Extends the grid classes with cell editing functionality.
|
|
5
|
+
*
|
|
6
|
+
* @param ColumnClass
|
|
7
|
+
* The class to extend.
|
|
8
|
+
*/
|
|
9
|
+
export declare function compose(ColumnClass: typeof Column): void;
|
|
2
10
|
declare module '../../Core/Options' {
|
|
3
11
|
interface ColumnCellOptions {
|
|
4
12
|
/**
|
|
@@ -15,4 +23,7 @@ declare module '../../Core/Table/Column' {
|
|
|
15
23
|
cellRenderer: CellRendererType;
|
|
16
24
|
}
|
|
17
25
|
}
|
|
18
|
-
|
|
26
|
+
declare const _default: {
|
|
27
|
+
readonly compose: typeof compose;
|
|
28
|
+
};
|
|
29
|
+
export default _default;
|
|
@@ -23,57 +23,52 @@ const { addEvent, pushUnique } = U;
|
|
|
23
23
|
*
|
|
24
24
|
* */
|
|
25
25
|
/**
|
|
26
|
-
*
|
|
26
|
+
* Extends the grid classes with cell editing functionality.
|
|
27
|
+
*
|
|
28
|
+
* @param ColumnClass
|
|
29
|
+
* The class to extend.
|
|
27
30
|
*/
|
|
28
|
-
|
|
29
|
-
(
|
|
30
|
-
|
|
31
|
-
* Extends the grid classes with cell editing functionality.
|
|
32
|
-
*
|
|
33
|
-
* @param ColumnClass
|
|
34
|
-
* The class to extend.
|
|
35
|
-
*/
|
|
36
|
-
function compose(ColumnClass) {
|
|
37
|
-
if (!pushUnique(Globals.composed, 'CellRenderers')) {
|
|
38
|
-
return;
|
|
39
|
-
}
|
|
40
|
-
addEvent(ColumnClass, 'afterInit', afterColumnInit);
|
|
41
|
-
ColumnClass.prototype.createCellContent = createCellContent;
|
|
42
|
-
}
|
|
43
|
-
CellRenderersComposition.compose = compose;
|
|
44
|
-
/**
|
|
45
|
-
* Init a type of content for a column.
|
|
46
|
-
* @param this
|
|
47
|
-
* Current column.
|
|
48
|
-
*/
|
|
49
|
-
function afterColumnInit() {
|
|
50
|
-
const rendererType = this.options.cells?.renderer?.type || 'text';
|
|
51
|
-
let Renderer = CellRendererRegistry.types[rendererType];
|
|
52
|
-
if (!Renderer) {
|
|
53
|
-
// eslint-disable-next-line no-console
|
|
54
|
-
console.warn(`The cell renderer of type "${rendererType}" is not registered. Using default text renderer instead.`);
|
|
55
|
-
Renderer = CellRendererRegistry.types.text;
|
|
56
|
-
}
|
|
57
|
-
this.cellRenderer = new Renderer(this, this.options.cells?.renderer || {});
|
|
31
|
+
export function compose(ColumnClass) {
|
|
32
|
+
if (!pushUnique(Globals.composed, 'CellRenderers')) {
|
|
33
|
+
return;
|
|
58
34
|
}
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
35
|
+
addEvent(ColumnClass, 'afterInit', afterColumnInit);
|
|
36
|
+
ColumnClass.prototype.createCellContent = createCellContent;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Init a type of content for a column.
|
|
40
|
+
* @param this
|
|
41
|
+
* Current column.
|
|
42
|
+
*/
|
|
43
|
+
function afterColumnInit() {
|
|
44
|
+
const rendererType = this.options.cells?.renderer?.type || 'text';
|
|
45
|
+
let Renderer = CellRendererRegistry.types[rendererType];
|
|
46
|
+
if (!Renderer) {
|
|
47
|
+
// eslint-disable-next-line no-console
|
|
48
|
+
console.warn(`The cell renderer of type "${rendererType}" is not registered. Using default text renderer instead.`);
|
|
49
|
+
Renderer = CellRendererRegistry.types.text;
|
|
72
50
|
}
|
|
73
|
-
|
|
51
|
+
this.cellRenderer = new Renderer(this, this.options.cells?.renderer || {});
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Render content of cell.
|
|
55
|
+
* @param this
|
|
56
|
+
* Current column.
|
|
57
|
+
*
|
|
58
|
+
* @param cell
|
|
59
|
+
* Current cell.
|
|
60
|
+
*
|
|
61
|
+
* @returns
|
|
62
|
+
* Formatted cell content.
|
|
63
|
+
*/
|
|
64
|
+
function createCellContent(cell) {
|
|
65
|
+
return this.cellRenderer.render(cell);
|
|
66
|
+
}
|
|
74
67
|
/* *
|
|
75
68
|
*
|
|
76
69
|
* Default Export
|
|
77
70
|
*
|
|
78
71
|
* */
|
|
79
|
-
export default
|
|
72
|
+
export default {
|
|
73
|
+
compose
|
|
74
|
+
};
|
|
@@ -38,7 +38,7 @@ class CheckboxContent extends CellContentPro {
|
|
|
38
38
|
this.changeHandler(e);
|
|
39
39
|
}
|
|
40
40
|
else {
|
|
41
|
-
void this.cell.
|
|
41
|
+
void this.cell.editValue(this.value);
|
|
42
42
|
}
|
|
43
43
|
};
|
|
44
44
|
this.onKeyDown = (e) => {
|
|
@@ -66,6 +66,7 @@ class CheckboxContent extends CellContentPro {
|
|
|
66
66
|
input.tabIndex = -1;
|
|
67
67
|
input.type = 'checkbox';
|
|
68
68
|
input.name = cell.column.id + '-' + cell.row.id;
|
|
69
|
+
input.classList.add(Globals.getClassName('input'));
|
|
69
70
|
if (options.attributes) {
|
|
70
71
|
Object.entries(options.attributes).forEach(([key, value]) => {
|
|
71
72
|
input.setAttribute(key, value);
|
|
@@ -73,7 +74,6 @@ class CheckboxContent extends CellContentPro {
|
|
|
73
74
|
}
|
|
74
75
|
this.update();
|
|
75
76
|
parentElement.appendChild(this.input);
|
|
76
|
-
input.classList.add(Globals.classNamePrefix + 'field-auto-width');
|
|
77
77
|
input.addEventListener('change', this.onChange);
|
|
78
78
|
input.addEventListener('keydown', this.onKeyDown);
|
|
79
79
|
input.addEventListener('blur', this.onBlur);
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import type { EditModeContent } from '../../CellEditing/CellEditMode.js';
|
|
2
|
-
import type
|
|
2
|
+
import type { DateInputRendererOptions } from '../Renderers/DateInputRenderer.js';
|
|
3
3
|
import DateInputContentBase from './DateInputContentBase.js';
|
|
4
4
|
/**
|
|
5
5
|
* Represents a date input type of cell content.
|
|
6
6
|
*/
|
|
7
7
|
declare class DateInputContent extends DateInputContentBase implements EditModeContent {
|
|
8
|
-
options:
|
|
8
|
+
options: DateInputRendererOptions;
|
|
9
9
|
protected getInputType(): 'date';
|
|
10
10
|
protected convertToInputValue(): string;
|
|
11
11
|
}
|