@genesislcap/grid-pro 14.108.0 → 14.109.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.
Files changed (101) hide show
  1. package/dist/custom-elements.json +691 -23
  2. package/dist/dts/cell-editors/date.editor.d.ts +5 -0
  3. package/dist/dts/cell-editors/date.editor.d.ts.map +1 -1
  4. package/dist/dts/cell-editors/index.d.ts +1 -0
  5. package/dist/dts/cell-editors/index.d.ts.map +1 -1
  6. package/dist/dts/cell-editors/multiselect.editor.d.ts +1 -0
  7. package/dist/dts/cell-editors/multiselect.editor.d.ts.map +1 -1
  8. package/dist/dts/cell-editors/number.editor.d.ts +2 -0
  9. package/dist/dts/cell-editors/number.editor.d.ts.map +1 -1
  10. package/dist/dts/cell-editors/select.editor.d.ts +2 -1
  11. package/dist/dts/cell-editors/select.editor.d.ts.map +1 -1
  12. package/dist/dts/cell-editors/string.editor.d.ts +56 -0
  13. package/dist/dts/cell-editors/string.editor.d.ts.map +1 -0
  14. package/dist/dts/cell-renderers/action.renderer.d.ts.map +1 -1
  15. package/dist/dts/cell-renderers/boolean.renderer.d.ts +1 -0
  16. package/dist/dts/cell-renderers/boolean.renderer.d.ts.map +1 -1
  17. package/dist/dts/cell-renderers/editable.renderer.d.ts +42 -0
  18. package/dist/dts/cell-renderers/editable.renderer.d.ts.map +1 -0
  19. package/dist/dts/cell-renderers/index.d.ts +1 -0
  20. package/dist/dts/cell-renderers/index.d.ts.map +1 -1
  21. package/dist/dts/grid-components.d.ts +18 -0
  22. package/dist/dts/grid-components.d.ts.map +1 -1
  23. package/dist/dts/grid-pro-genesis-datasource/grid-pro-genesis-datasource.d.ts.map +1 -1
  24. package/dist/dts/grid-pro.d.ts +0 -6
  25. package/dist/dts/grid-pro.d.ts.map +1 -1
  26. package/dist/dts/grid-pro.types.d.ts +12 -0
  27. package/dist/dts/grid-pro.types.d.ts.map +1 -1
  28. package/dist/dts/index.d.ts +1 -0
  29. package/dist/dts/index.d.ts.map +1 -1
  30. package/dist/dts/tooltips/error-tooltip.d.ts +11 -0
  31. package/dist/dts/tooltips/error-tooltip.d.ts.map +1 -0
  32. package/dist/dts/tooltips/index.d.ts +2 -0
  33. package/dist/dts/tooltips/index.d.ts.map +1 -0
  34. package/dist/esm/cell-editors/date.editor.js +15 -2
  35. package/dist/esm/cell-editors/index.js +1 -0
  36. package/dist/esm/cell-editors/multiselect.editor.js +5 -10
  37. package/dist/esm/cell-editors/number.editor.js +9 -1
  38. package/dist/esm/cell-editors/select.editor.js +10 -12
  39. package/dist/esm/cell-editors/string.editor.js +86 -0
  40. package/dist/esm/cell-renderers/action.renderer.js +6 -0
  41. package/dist/esm/cell-renderers/boolean.renderer.js +4 -0
  42. package/dist/esm/cell-renderers/editable.renderer.js +60 -0
  43. package/dist/esm/cell-renderers/index.js +1 -0
  44. package/dist/esm/grid-components.js +4 -2
  45. package/dist/esm/grid-pro-genesis-datasource/grid-pro-genesis-datasource.js +3 -0
  46. package/dist/esm/grid-pro.js +31 -3
  47. package/dist/esm/grid-pro.types.js +12 -0
  48. package/dist/esm/index.js +1 -0
  49. package/dist/esm/tooltips/error-tooltip.js +21 -0
  50. package/dist/esm/tooltips/index.js +1 -0
  51. package/dist/grid-pro.api.json +2314 -670
  52. package/dist/grid-pro.d.ts +156 -7
  53. package/docs/api/grid-pro.ageditablerendererstyles.md +13 -0
  54. package/docs/api/grid-pro.agstringeditorstyles.md +13 -0
  55. package/docs/api/grid-pro.booleanrenderer.iscancelbeforestart.md +15 -0
  56. package/docs/api/grid-pro.booleanrenderer.md +1 -0
  57. package/docs/api/grid-pro.dateeditor.actualwidth.md +11 -0
  58. package/docs/api/grid-pro.dateeditor.afterguiattached.md +15 -0
  59. package/docs/api/grid-pro.dateeditor.input.md +11 -0
  60. package/docs/api/grid-pro.dateeditor.iscancelbeforestart.md +15 -0
  61. package/docs/api/grid-pro.dateeditor.md +5 -0
  62. package/docs/api/grid-pro.dateeditor.params.md +11 -0
  63. package/docs/api/grid-pro.editablerenderer.getgui.md +15 -0
  64. package/docs/api/grid-pro.editablerenderer.init.md +22 -0
  65. package/docs/api/grid-pro.editablerenderer.md +31 -0
  66. package/docs/api/grid-pro.editablerenderer.refresh.md +22 -0
  67. package/docs/api/grid-pro.editablerenderer.valueformatted.md +11 -0
  68. package/docs/api/grid-pro.edited_column_field.md +13 -0
  69. package/docs/api/grid-pro.error_column_field.md +13 -0
  70. package/docs/api/grid-pro.foundationageditablerenderer.md +26 -0
  71. package/docs/api/grid-pro.foundationgridcomponents.md +18 -0
  72. package/docs/api/grid-pro.foundationstringeditor.md +24 -0
  73. package/docs/api/grid-pro.getageditablerenderertemplate.md +13 -0
  74. package/docs/api/grid-pro.getstringeditortemplate.md +13 -0
  75. package/docs/api/grid-pro.gridprorenderertypes.md +2 -0
  76. package/docs/api/grid-pro.md +11 -0
  77. package/docs/api/grid-pro.multiselecteditor.iscancelbeforestart.md +15 -0
  78. package/docs/api/grid-pro.multiselecteditor.md +1 -0
  79. package/docs/api/grid-pro.numbereditor.actualwidth.md +11 -0
  80. package/docs/api/grid-pro.numbereditor.iscancelbeforestart.md +15 -0
  81. package/docs/api/grid-pro.numbereditor.md +2 -0
  82. package/docs/api/grid-pro.selecteditor.actualwidth.md +11 -0
  83. package/docs/api/grid-pro.selecteditor.iscancelbeforestart.md +15 -0
  84. package/docs/api/grid-pro.selecteditor.md +2 -1
  85. package/docs/api/grid-pro.stringeditor.actualwidth.md +11 -0
  86. package/docs/api/grid-pro.stringeditor.afterguiattached.md +15 -0
  87. package/docs/api/grid-pro.stringeditor.changehandler.md +22 -0
  88. package/docs/api/grid-pro.stringeditor.getgui.md +15 -0
  89. package/docs/api/grid-pro.stringeditor.getvalue.md +15 -0
  90. package/docs/api/grid-pro.stringeditor.init.md +22 -0
  91. package/docs/api/grid-pro.stringeditor.input.md +11 -0
  92. package/docs/api/grid-pro.stringeditor.iscancelbeforestart.md +15 -0
  93. package/docs/api/{grid-pro.selecteditor.destroy.md → grid-pro.stringeditor.ispopup.md} +4 -4
  94. package/docs/api/grid-pro.stringeditor.md +39 -0
  95. package/docs/api/grid-pro.stringeditor.params.md +11 -0
  96. package/docs/api/grid-pro.stringeditor.refresh.md +22 -0
  97. package/docs/api/grid-pro.stringeditor.value.md +11 -0
  98. package/docs/api/grid-pro.stringeditorparams.md +21 -0
  99. package/docs/api/grid-pro.stringeditorparams.placeholder.md +11 -0
  100. package/docs/api-report.md +142 -2
  101. package/package.json +8 -8
@@ -0,0 +1,86 @@
1
+ import { __decorate } from "tslib";
2
+ import { css, html, observable, ref } from '@microsoft/fast-element';
3
+ import { FoundationElement } from '@microsoft/fast-foundation';
4
+ import { EDITED_COLUMN_FIELD } from '../grid-pro.types';
5
+ /**
6
+ * The AG String Editor element.
7
+ * @public
8
+ * @tagname %%prefix%%-string-editor
9
+ */
10
+ export class StringEditor extends FoundationElement {
11
+ init(params) {
12
+ if (!params)
13
+ return;
14
+ this.params = params;
15
+ this.value = params.value;
16
+ this.actualWidth = params.column.getActualWidth();
17
+ }
18
+ getGui() {
19
+ return this;
20
+ }
21
+ refresh(params) {
22
+ return true;
23
+ }
24
+ getValue() {
25
+ return this.value;
26
+ }
27
+ isPopup() {
28
+ return true;
29
+ }
30
+ afterGuiAttached() {
31
+ this.input.focus();
32
+ }
33
+ changeHandler(event) {
34
+ this.value = event.target.value;
35
+ }
36
+ isCancelBeforeStart() {
37
+ return !!this.params.data[EDITED_COLUMN_FIELD];
38
+ }
39
+ }
40
+ __decorate([
41
+ observable
42
+ ], StringEditor.prototype, "params", void 0);
43
+ __decorate([
44
+ observable
45
+ ], StringEditor.prototype, "value", void 0);
46
+ __decorate([
47
+ observable
48
+ ], StringEditor.prototype, "actualWidth", void 0);
49
+ /**
50
+ * The AG String Renderer Styles.
51
+ * @public
52
+ */
53
+ export const agStringEditorStyles = css `
54
+ :host {
55
+ display: flex;
56
+ }
57
+ `;
58
+ /**
59
+ * Get a Design System prefixed String template.
60
+ * @param designSystem - The design system prefix to use. Defaults to 'foundation'.
61
+ * @returns A String component template prefixed with the correct design system.
62
+ * @public
63
+ */
64
+ export const getStringEditorTemplate = (designSystem = 'foundation') => html `
65
+ <${designSystem}-text-field
66
+ ${ref('input')}
67
+ :value=${(x) => (x.value === undefined ? '' : x.value)}
68
+ @input=${(x, c) => {
69
+ x.changeHandler(c.event);
70
+ }}
71
+ placeholder=${(x) => x.params.placeholder}
72
+ style="width: ${(x) => x.actualWidth}px"
73
+ >
74
+ </${designSystem}-text-field>
75
+ `;
76
+ /**
77
+ *
78
+ * @public
79
+ * @remarks
80
+ * HTML Element: \<foundation-string-editor\>
81
+ */
82
+ export const foundationStringEditor = StringEditor.compose({
83
+ baseName: 'string-editor',
84
+ styles: agStringEditorStyles,
85
+ template: getStringEditorTemplate(),
86
+ });
@@ -1,4 +1,5 @@
1
1
  import { __awaiter, __decorate } from "tslib";
2
+ import { KeyCode } from '@ag-grid-community/core';
2
3
  import { css, html, observable } from '@microsoft/fast-element';
3
4
  import { DesignToken, FoundationElement } from '@microsoft/fast-foundation';
4
5
  import { logger } from '../utils';
@@ -12,6 +13,11 @@ export class ActionRenderer extends FoundationElement {
12
13
  if (!params)
13
14
  return;
14
15
  this.params = params;
16
+ params.eGridCell.addEventListener('keydown', (event) => {
17
+ if (event.key === KeyCode.ENTER) {
18
+ this.clickHandler();
19
+ }
20
+ });
15
21
  }
16
22
  getGui() {
17
23
  return this;
@@ -2,6 +2,7 @@ import { __decorate } from "tslib";
2
2
  import { Events, } from '@ag-grid-community/core';
3
3
  import { css, html, observable } from '@microsoft/fast-element';
4
4
  import { FoundationElement } from '@microsoft/fast-foundation';
5
+ import { EDITED_COLUMN_FIELD } from '../grid-pro.types';
5
6
  /**
6
7
  * The AG Boolean Renderer element.
7
8
  * @public
@@ -62,6 +63,9 @@ export class BooleanRenderer extends FoundationElement {
62
63
  getValue() {
63
64
  return this.selected;
64
65
  }
66
+ isCancelBeforeStart() {
67
+ return !!this.params.data[EDITED_COLUMN_FIELD];
68
+ }
65
69
  }
66
70
  __decorate([
67
71
  observable
@@ -0,0 +1,60 @@
1
+ import { __decorate } from "tslib";
2
+ import { css, html, observable } from '@microsoft/fast-element';
3
+ import { FoundationElement } from '@microsoft/fast-foundation';
4
+ /**
5
+ * The AG Editable Renderer element.
6
+ * @public
7
+ * @tagname %%prefix%%-editable-renderer
8
+ */
9
+ export class EditableRenderer extends FoundationElement {
10
+ init(params) {
11
+ if (!params)
12
+ return;
13
+ this.valueFormatted = params.formatValue(params.value);
14
+ }
15
+ getGui() {
16
+ return this;
17
+ }
18
+ refresh(params) {
19
+ this.valueFormatted = params.formatValue(params.value);
20
+ return true;
21
+ }
22
+ }
23
+ __decorate([
24
+ observable
25
+ ], EditableRenderer.prototype, "valueFormatted", void 0);
26
+ /**
27
+ * The AG Editable Renderer Styles.
28
+ * @public
29
+ */
30
+ export const agEditableRendererStyles = css `
31
+ :host {
32
+ display: flex;
33
+ justify-content: space-between;
34
+ align-items: center;
35
+ }
36
+ `;
37
+ /**
38
+ * Get a Design System prefixed Checkbox template.
39
+ * @param designSystem - The design system prefix to use. Defaults to 'foundation'.
40
+ * @returns A Checkbox component template prefixed with the correct design system.
41
+ * @public
42
+ */
43
+ export const getAgEditableRendererTemplate = (designSystem = 'foundation') => {
44
+ return html `
45
+ <span>${(x) => x.valueFormatted}</span>
46
+ <${designSystem}-progress-ring style="margin: 0; width: 20px; height: 20px"></${designSystem}-progress-ring>
47
+ `;
48
+ };
49
+ /**
50
+ * A function that returns a Foundation Editable Renderer registration for configuring the component with a DesignSystem.
51
+ *
52
+ * @public
53
+ * @remarks
54
+ * HTML Element: \<foundation-editable-renderer\>
55
+ */
56
+ export const foundationAgEditableRenderer = EditableRenderer.compose({
57
+ baseName: 'editable-renderer',
58
+ styles: agEditableRendererStyles,
59
+ template: getAgEditableRendererTemplate(),
60
+ });
@@ -1,6 +1,7 @@
1
1
  export * from './action.renderer';
2
2
  export * from './actions-menu.renderer';
3
3
  export * from './boolean.renderer';
4
+ export * from './editable.renderer';
4
5
  export * from './text.renderer';
5
6
  export * from './text-field.renderer';
6
7
  export * from './select.renderer';
@@ -1,5 +1,5 @@
1
- import { foundationSelectEditor, foundationNumberEditor, foundationMultiselectEditor, foundationDateEditor, } from './cell-editors';
2
- import { foundationGridProActionRenderer, foundationGridProActionsMenuRenderer, foundationAgBooleanRenderer, foundationAgSelectRenderer, foundationAgTextRenderer, foundationAgTextFieldRenderer, } from './cell-renderers';
1
+ import { foundationSelectEditor, foundationNumberEditor, foundationMultiselectEditor, foundationDateEditor, foundationStringEditor, } from './cell-editors';
2
+ import { foundationGridProActionRenderer, foundationGridProActionsMenuRenderer, foundationAgBooleanRenderer, foundationAgEditableRenderer, foundationAgSelectRenderer, foundationAgTextRenderer, foundationAgTextFieldRenderer, } from './cell-renderers';
3
3
  import { foundationGridPro } from './grid-pro';
4
4
  /**
5
5
  * The Grid Pro Components.
@@ -12,12 +12,14 @@ export const foundationGridComponents = {
12
12
  foundationAgBooleanRenderer,
13
13
  foundationAgTextRenderer,
14
14
  foundationAgTextFieldRenderer,
15
+ foundationAgEditableRenderer,
15
16
  foundationAgSelectRenderer,
16
17
  foundationGridPro,
17
18
  foundationSelectEditor,
18
19
  foundationNumberEditor,
19
20
  foundationDateEditor,
20
21
  foundationMultiselectEditor,
22
+ foundationStringEditor,
21
23
  register(container, ...rest) {
22
24
  if (!container) {
23
25
  // preserve backward compatibility with code that loops through
@@ -463,6 +463,9 @@ let GridProGenesisDatasource = class GridProGenesisDatasource extends LifecycleM
463
463
  const colDefBase = {};
464
464
  colDefBase.filterParams = getFilterParamsByFieldType(field.type);
465
465
  switch (field.type) {
466
+ case FieldTypeEnum.STRING:
467
+ colDefBase.cellEditor = GridProRendererTypes.stringEditor;
468
+ break;
466
469
  case FieldTypeEnum.NUMBER:
467
470
  colDefBase.cellEditor = GridProRendererTypes.numberEditor;
468
471
  break;
@@ -8,8 +8,8 @@ import { attr, DOM, observable } from '@microsoft/fast-element';
8
8
  import { FoundationElement } from '@microsoft/fast-foundation';
9
9
  import { classNames } from '@microsoft/fast-web-utilities';
10
10
  import { GridProCell } from './cell';
11
- import { SelectEditor, NumberEditor, MultiselectEditor, DateEditor } from './cell-editors';
12
- import { ActionRenderer, ActionsMenuRenderer, BooleanRenderer } from './cell-renderers';
11
+ import { SelectEditor, NumberEditor, MultiselectEditor, DateEditor, StringEditor, } from './cell-editors';
12
+ import { ActionRenderer, ActionsMenuRenderer, BooleanRenderer, EditableRenderer, } from './cell-renderers';
13
13
  import { GridProColumn } from './column';
14
14
  import { GridProClientSideDatasource, GridProServerSideDatasource } from './datasource';
15
15
  import { agThemeFontFaceMap, defaultAgGridFontFace } from './external';
@@ -17,7 +17,8 @@ import { GridProGenesisDatasource } from './grid-pro-genesis-datasource';
17
17
  import { DEBOUNCED_RESIZE_TIME } from './grid-pro.definitions';
18
18
  import { foundationGridProStyles as styles } from './grid-pro.styles';
19
19
  import { gridProTemplate as template } from './grid-pro.template';
20
- import { AgGridTheme, GridProRendererTypes, agThemeFontsId, agThemeTokenMapClassname, GRID_READY_EVENT, } from './grid-pro.types';
20
+ import { AgGridTheme, GridProRendererTypes, agThemeFontsId, agThemeTokenMapClassname, GRID_READY_EVENT, ERROR_COLUMN_FIELD, EDITED_COLUMN_FIELD, } from './grid-pro.types';
21
+ import { ErrorTooltip } from './tooltips';
21
22
  import { logger, mergeAndDedupColDefWithColumnState } from './utils';
22
23
  GridProGenesisDatasource;
23
24
  GridProClientSideDatasource;
@@ -140,10 +141,12 @@ export class GridPro extends LifecycleMixin(FoundationElement) {
140
141
  [GridProRendererTypes.action]: ActionRenderer,
141
142
  [GridProRendererTypes.actionsMenu]: ActionsMenuRenderer,
142
143
  [GridProRendererTypes.boolean]: BooleanRenderer,
144
+ [GridProRendererTypes.editable]: EditableRenderer,
143
145
  [GridProRendererTypes.selectEditor]: SelectEditor,
144
146
  [GridProRendererTypes.numberEditor]: NumberEditor,
145
147
  [GridProRendererTypes.multiselectEditor]: MultiselectEditor,
146
148
  [GridProRendererTypes.dateEditor]: DateEditor,
149
+ [GridProRendererTypes.stringEditor]: StringEditor,
147
150
  };
148
151
  return Object.assign(Object.assign(Object.assign({}, defaultFoundationAgComponents), gridOptionsComponents), this.gridComponents);
149
152
  }
@@ -323,6 +326,31 @@ export class GridPro extends LifecycleMixin(FoundationElement) {
323
326
  if (this.enableCellFlashing && columnDef.enableCellChangeFlash === undefined) {
324
327
  columnDef.enableCellChangeFlash = true;
325
328
  }
329
+ if (columnDef.editable) {
330
+ if (!columnDef.cellRenderer && !columnDef.cellRendererSelector) {
331
+ columnDef.cellRendererSelector = (params) => {
332
+ if (params.data[EDITED_COLUMN_FIELD] === columnDef.field) {
333
+ return {
334
+ component: GridProRendererTypes.editable,
335
+ };
336
+ }
337
+ };
338
+ }
339
+ if (!columnDef.tooltipComponent && !columnDef.tooltipValueGetter) {
340
+ columnDef.tooltipComponent = ErrorTooltip;
341
+ columnDef.tooltipValueGetter = (params) => {
342
+ const error = params.data[ERROR_COLUMN_FIELD];
343
+ if (error && error.column === columnDef.field) {
344
+ return error.message;
345
+ }
346
+ };
347
+ }
348
+ if (!columnDef.cellClassRules) {
349
+ columnDef.cellClassRules = {
350
+ error: (params) => { var _a; return ((_a = params.data[ERROR_COLUMN_FIELD]) === null || _a === void 0 ? void 0 : _a.column) === params.colDef.field; },
351
+ };
352
+ }
353
+ }
326
354
  const metadataColumnDef = columnDefinitionsFromMetadata.find((colDef) => columnDef.field === colDef.field);
327
355
  return Object.assign(Object.assign({}, metadataColumnDef), columnDef);
328
356
  });
@@ -125,11 +125,13 @@ export var GridProRendererTypes;
125
125
  GridProRendererTypes["action"] = "action";
126
126
  GridProRendererTypes["actionsMenu"] = "actionsMenu";
127
127
  GridProRendererTypes["boolean"] = "boolean";
128
+ GridProRendererTypes["editable"] = "editable";
128
129
  GridProRendererTypes["text"] = "text";
129
130
  GridProRendererTypes["select"] = "select";
130
131
  GridProRendererTypes["dateEditor"] = "dateEditor";
131
132
  GridProRendererTypes["selectEditor"] = "selectEditor";
132
133
  GridProRendererTypes["numberEditor"] = "numberEditor";
134
+ GridProRendererTypes["stringEditor"] = "stringEditor";
133
135
  GridProRendererTypes["multiselectEditor"] = "multiselectEditor";
134
136
  })(GridProRendererTypes || (GridProRendererTypes = {}));
135
137
  /**
@@ -137,3 +139,13 @@ export var GridProRendererTypes;
137
139
  * @public
138
140
  */
139
141
  export const GRID_READY_EVENT = 'onGridReady';
142
+ /**
143
+ * Key used to store currently edited column when it being synced with server side data
144
+ * @public
145
+ */
146
+ export const EDITED_COLUMN_FIELD = '__editedColumn';
147
+ /**
148
+ * Key used to store error details (column, message) when inline edit fails sync with server side data
149
+ * @public
150
+ */
151
+ export const ERROR_COLUMN_FIELD = '__errorColumn';
package/dist/esm/index.js CHANGED
@@ -12,4 +12,5 @@ export * from './grid-pro.types';
12
12
  export * from './grid-pro';
13
13
  export * from './grid-pro-genesis-datasource';
14
14
  export * from './style';
15
+ export * from './tooltips';
15
16
  export * from './utils';
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Tooltip for errors that happen while syncing data with server after inline editing
3
+ * @internal
4
+ */
5
+ export class ErrorTooltip {
6
+ init(params) {
7
+ const eGui = (this.eGui = document.createElement('div'));
8
+ const message = params.value;
9
+ eGui.classList.add('custom-tooltip');
10
+ eGui.style['background-color'] = '#f14376';
11
+ eGui.style['border'] = '1px inside';
12
+ eGui.style['border-color'] = '#2e3339';
13
+ eGui.style['border-radius'] = '4px';
14
+ eGui.style['padding'] = '5px';
15
+ eGui.style['box-shadow'] = '0px 4px 10px 0px rgba(0, 0, 0, 0.25);';
16
+ eGui.innerHTML = `<span style='color: #000000; font-size: 10px'>${message}</span>`;
17
+ }
18
+ getGui() {
19
+ return this.eGui;
20
+ }
21
+ }
@@ -0,0 +1 @@
1
+ export * from './error-tooltip';