@genesislcap/grid-pro 14.100.1-alpha-da50d69.0 → 14.101.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 (62) hide show
  1. package/dist/custom-elements.json +334 -4
  2. package/dist/dts/cell-editors/index.d.ts +2 -0
  3. package/dist/dts/cell-editors/index.d.ts.map +1 -0
  4. package/dist/dts/cell-editors/select.editor.d.ts +59 -0
  5. package/dist/dts/cell-editors/select.editor.d.ts.map +1 -0
  6. package/dist/dts/cell-renderers/boolean.renderer.d.ts +9 -10
  7. package/dist/dts/cell-renderers/boolean.renderer.d.ts.map +1 -1
  8. package/dist/dts/grid-components.d.ts +11 -2
  9. package/dist/dts/grid-components.d.ts.map +1 -1
  10. package/dist/dts/grid-pro-genesis-datasource/grid-pro-genesis-datasource-next.d.ts.map +1 -1
  11. package/dist/dts/grid-pro-genesis-datasource/grid-pro-genesis-datasource.d.ts +8 -13
  12. package/dist/dts/grid-pro-genesis-datasource/grid-pro-genesis-datasource.d.ts.map +1 -1
  13. package/dist/dts/grid-pro.d.ts.map +1 -1
  14. package/dist/dts/grid-pro.types.d.ts +2 -1
  15. package/dist/dts/grid-pro.types.d.ts.map +1 -1
  16. package/dist/dts/index.d.ts +1 -0
  17. package/dist/dts/index.d.ts.map +1 -1
  18. package/dist/esm/cell-editors/index.js +1 -0
  19. package/dist/esm/cell-editors/select.editor.js +88 -0
  20. package/dist/esm/cell-renderers/boolean.renderer.js +49 -3
  21. package/dist/esm/grid-components.js +2 -0
  22. package/dist/esm/grid-pro-genesis-datasource/grid-pro-genesis-datasource-next.js +15 -9
  23. package/dist/esm/grid-pro-genesis-datasource/grid-pro-genesis-datasource.js +9 -3
  24. package/dist/esm/grid-pro.js +20 -28
  25. package/dist/esm/grid-pro.types.js +1 -0
  26. package/dist/esm/index.js +1 -0
  27. package/dist/grid-pro.api.json +1010 -18
  28. package/dist/grid-pro.d.ts +100 -33
  29. package/docs/api/grid-pro.agselecteditorstyles.md +13 -0
  30. package/docs/api/grid-pro.booleanrenderer.changehandler.md +22 -0
  31. package/docs/api/grid-pro.booleanrenderer.getvalue.md +15 -0
  32. package/docs/api/grid-pro.booleanrenderer.init.md +2 -2
  33. package/docs/api/grid-pro.booleanrenderer.md +4 -1
  34. package/docs/api/grid-pro.booleanrenderer.params.md +1 -1
  35. package/docs/api/grid-pro.booleanrenderer.refresh.md +2 -2
  36. package/docs/api/grid-pro.booleanrenderer.selected.md +11 -0
  37. package/docs/api/grid-pro.foundationagbooleanrenderer.md +2 -2
  38. package/docs/api/grid-pro.foundationgridcomponents.md +11 -2
  39. package/docs/api/grid-pro.foundationselecteditor.md +24 -0
  40. package/docs/api/grid-pro.getagbooleanrenderertemplate.md +1 -1
  41. package/docs/api/grid-pro.getselecteditortemplate.md +13 -0
  42. package/docs/api/grid-pro.gridprorenderertypes.md +1 -0
  43. package/docs/api/grid-pro.md +10 -0
  44. package/docs/api/grid-pro.selecteditor.afterguiattached.md +15 -0
  45. package/docs/api/grid-pro.selecteditor.combobox.md +11 -0
  46. package/docs/api/grid-pro.selecteditor.destroy.md +15 -0
  47. package/docs/api/grid-pro.selecteditor.getgui.md +15 -0
  48. package/docs/api/grid-pro.selecteditor.getvalue.md +15 -0
  49. package/docs/api/grid-pro.selecteditor.init.md +22 -0
  50. package/docs/api/grid-pro.selecteditor.ispopup.md +15 -0
  51. package/docs/api/grid-pro.selecteditor.md +37 -0
  52. package/docs/api/grid-pro.selecteditor.params.md +11 -0
  53. package/docs/api/grid-pro.selecteditor.refresh.md +22 -0
  54. package/docs/api/grid-pro.selecteditor.value.md +11 -0
  55. package/docs/api/grid-pro.selecteditorparams.alloptionsresourcename.md +11 -0
  56. package/docs/api/grid-pro.selecteditorparams.datasourceoptions.md +11 -0
  57. package/docs/api/grid-pro.selecteditorparams.labelfield.md +11 -0
  58. package/docs/api/grid-pro.selecteditorparams.md +25 -0
  59. package/docs/api/grid-pro.selecteditorparams.valuefield.md +11 -0
  60. package/docs/api/grid-pro.selecteditorparams.values.md +11 -0
  61. package/docs/api-report.md +87 -14
  62. package/package.json +8 -8
@@ -125,7 +125,8 @@ export declare enum GridProRendererTypes {
125
125
  actionsMenu = "actionsMenu",
126
126
  boolean = "boolean",
127
127
  text = "text",
128
- select = "select"
128
+ select = "select",
129
+ selectEditor = "selectEditor"
129
130
  }
130
131
  /**
131
132
  * Event fired when grid is ready
@@ -1 +1 @@
1
- {"version":3,"file":"grid-pro.types.d.ts","sourceRoot":"","sources":["../../src/grid-pro.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAGhF;;;GAGG;AACH,oBAAY,aAAa;IACvB,eAAe,0BAA0B;IACzC,SAAS,oBAAoB;IAC7B,wBAAwB,oCAAoC;IAC5D,qBAAqB,iCAAiC;IACtD,uBAAuB,mCAAmC;IAC1D,eAAe,0BAA0B;IACzC,qBAAqB,iCAAiC;IACtD,wBAAwB,oCAAoC;IAC5D,+BAA+B,4CAA4C;IAC3E,2BAA2B,wCAAwC;IACnE,0BAA0B,uCAAuC;IACjE,qBAAqB,kCAAkC;IACvD,aAAa,yBAAyB;IACtC,yBAAyB,sCAAsC;IAC/D,6BAA6B,0CAA0C;IACvE,yBAAyB,sCAAsC;IAC/D,0CAA0C,yDAAyD;IACnG,kCAAkC,gDAAgD;IAClF,8BAA8B,4CAA4C;IAC1E,+BAA+B,6CAA6C;IAC5E,mBAAmB,+BAA+B;IAClD,WAAW,sBAAsB;IACjC,oBAAoB,gCAAgC;IACpD,cAAc,0BAA0B;IACxC,0BAA0B,uCAAuC;IACjE,6BAA6B,2CAA2C;IACxE,gBAAgB,4BAA4B;IAC5C,wBAAwB,qCAAqC;IAC7D,4BAA4B,yCAAyC;IACrE,uBAAuB,mCAAmC;IAC1D,oBAAoB,gCAAgC;IACpD,sBAAsB,kCAAkC;IACxD,0BAA0B,sCAAsC;IAChE,0BAA0B,wCAAwC;IAClE,8BAA8B,4CAA4C;IAC1E,yBAAyB,uCAAuC;IAChE,6BAA6B,2CAA2C;IACxE,iCAAiC,+CAA+C;IAChF,6BAA6B,2CAA2C;IACxE,2BAA2B,wCAAwC;IACnE,0BAA0B,uCAAuC;IACjE,2BAA2B,wCAAwC;IACnE,mBAAmB,gCAAgC;IACnD,qBAAqB,kCAAkC;CACxD;AAED;;;GAGG;AACH,oBAAY,WAAW;IACrB,MAAM,oBAAoB;IAC1B,UAAU,yBAAyB;IACnC,MAAM,oBAAoB;IAC1B,UAAU,yBAAyB;IACnC,QAAQ,sBAAsB;CAC/B;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,wBAAwB,cAAe,MAAM,WAA6B,CAAC;AAExF;;;;;;;;;GASG;AACH,eAAO,MAAM,cAAc,cAAe,MAAM,WAAyB,CAAC;AAE1E;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,eAAO,MAAM,kBAAkB,cAAe,MAAM,YAAY,eAAe,GAAG,CAAC,oDAIlF,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG;IAAE,CAAC,aAAa,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,CAAC;AAE9D;;;GAGG;AACH,oBAAY,oBAAoB;IAC9B,MAAM,WAAW;IACjB,WAAW,gBAAgB;IAC3B,OAAO,YAAY;IACnB,IAAI,SAAS;IACb,MAAM,WAAW;CAClB;AAED;;;GAGG;AACH,eAAO,MAAM,gBAAgB,gBAAgB,CAAC"}
1
+ {"version":3,"file":"grid-pro.types.d.ts","sourceRoot":"","sources":["../../src/grid-pro.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAGhF;;;GAGG;AACH,oBAAY,aAAa;IACvB,eAAe,0BAA0B;IACzC,SAAS,oBAAoB;IAC7B,wBAAwB,oCAAoC;IAC5D,qBAAqB,iCAAiC;IACtD,uBAAuB,mCAAmC;IAC1D,eAAe,0BAA0B;IACzC,qBAAqB,iCAAiC;IACtD,wBAAwB,oCAAoC;IAC5D,+BAA+B,4CAA4C;IAC3E,2BAA2B,wCAAwC;IACnE,0BAA0B,uCAAuC;IACjE,qBAAqB,kCAAkC;IACvD,aAAa,yBAAyB;IACtC,yBAAyB,sCAAsC;IAC/D,6BAA6B,0CAA0C;IACvE,yBAAyB,sCAAsC;IAC/D,0CAA0C,yDAAyD;IACnG,kCAAkC,gDAAgD;IAClF,8BAA8B,4CAA4C;IAC1E,+BAA+B,6CAA6C;IAC5E,mBAAmB,+BAA+B;IAClD,WAAW,sBAAsB;IACjC,oBAAoB,gCAAgC;IACpD,cAAc,0BAA0B;IACxC,0BAA0B,uCAAuC;IACjE,6BAA6B,2CAA2C;IACxE,gBAAgB,4BAA4B;IAC5C,wBAAwB,qCAAqC;IAC7D,4BAA4B,yCAAyC;IACrE,uBAAuB,mCAAmC;IAC1D,oBAAoB,gCAAgC;IACpD,sBAAsB,kCAAkC;IACxD,0BAA0B,sCAAsC;IAChE,0BAA0B,wCAAwC;IAClE,8BAA8B,4CAA4C;IAC1E,yBAAyB,uCAAuC;IAChE,6BAA6B,2CAA2C;IACxE,iCAAiC,+CAA+C;IAChF,6BAA6B,2CAA2C;IACxE,2BAA2B,wCAAwC;IACnE,0BAA0B,uCAAuC;IACjE,2BAA2B,wCAAwC;IACnE,mBAAmB,gCAAgC;IACnD,qBAAqB,kCAAkC;CACxD;AAED;;;GAGG;AACH,oBAAY,WAAW;IACrB,MAAM,oBAAoB;IAC1B,UAAU,yBAAyB;IACnC,MAAM,oBAAoB;IAC1B,UAAU,yBAAyB;IACnC,QAAQ,sBAAsB;CAC/B;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,wBAAwB,cAAe,MAAM,WAA6B,CAAC;AAExF;;;;;;;;;GASG;AACH,eAAO,MAAM,cAAc,cAAe,MAAM,WAAyB,CAAC;AAE1E;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,eAAO,MAAM,kBAAkB,cAAe,MAAM,YAAY,eAAe,GAAG,CAAC,oDAIlF,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG;IAAE,CAAC,aAAa,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,CAAC;AAE9D;;;GAGG;AACH,oBAAY,oBAAoB;IAC9B,MAAM,WAAW;IACjB,WAAW,gBAAgB;IAC3B,OAAO,YAAY;IACnB,IAAI,SAAS;IACb,MAAM,WAAW;IACjB,YAAY,iBAAiB;CAC9B;AAED;;;GAGG;AACH,eAAO,MAAM,gBAAgB,gBAAgB,CAAC"}
@@ -1,5 +1,6 @@
1
1
  export * from './cell';
2
2
  export * from './cell-renderers';
3
+ export * from './cell-editors';
3
4
  export * from './column';
4
5
  export * from './external';
5
6
  export * from './grid-components';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,kBAAkB,CAAC;AACjC,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,+BAA+B,CAAC;AAC9C,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,+BAA+B,CAAC;AAC9C,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC"}
@@ -0,0 +1 @@
1
+ export * from './select.editor';
@@ -0,0 +1,88 @@
1
+ import { __decorate } from "tslib";
2
+ import { css, html, observable, ref } from '@microsoft/fast-element';
3
+ import { FoundationElement } from '@microsoft/fast-foundation';
4
+ /**
5
+ * The AG Select Editor element.
6
+ * @public
7
+ * @tagname %%prefix%%-select-editor
8
+ */
9
+ export class SelectEditor extends FoundationElement {
10
+ init(params) {
11
+ if (!params)
12
+ return;
13
+ this.params = params;
14
+ this.value = params.value;
15
+ }
16
+ getGui() {
17
+ return this;
18
+ }
19
+ destroy() { }
20
+ refresh(params) {
21
+ return true;
22
+ }
23
+ getValue() {
24
+ return this.value;
25
+ }
26
+ isPopup() {
27
+ return true;
28
+ }
29
+ afterGuiAttached() {
30
+ this.combobox.open = true;
31
+ }
32
+ }
33
+ __decorate([
34
+ observable
35
+ ], SelectEditor.prototype, "params", void 0);
36
+ __decorate([
37
+ observable
38
+ ], SelectEditor.prototype, "value", void 0);
39
+ /**
40
+ * The AG Select Renderer Styles.
41
+ * @public
42
+ */
43
+ export const agSelectEditorStyles = css `
44
+ :host,
45
+ .select-renderer,
46
+ zero-option,
47
+ ::part(listbox),
48
+ ::part(control) {
49
+ max-width: var(--select-renderer-max-width);
50
+ min-width: 100%;
51
+ }
52
+ `;
53
+ /**
54
+ * Get a Design System prefixed Select template.
55
+ * @param designSystem - The design system prefix to use. Defaults to 'foundation'.
56
+ * @returns A Select component template prefixed with the correct design system.
57
+ * @public
58
+ */
59
+ export const getSelectEditorTemplate = (designSystem = 'foundation') => html `
60
+ <${designSystem}-combobox
61
+ style="width: 100%"
62
+ ${ref('combobox')}
63
+ @value-change=${(x, c) => {
64
+ var _a;
65
+ x.value = (_a = c.event.detail) === null || _a === void 0 ? void 0 : _a.value;
66
+ }}
67
+ >
68
+ <options-datasource
69
+ resourceName=${(x) => x.params.allOptionsResourceName}
70
+ value-field=${(x) => x.params.valueField}
71
+ label-field=${(x) => x.params.labelField}
72
+ :datasourceConfig=${(x) => x.params.datasourceOptions}
73
+ :data=${(x) => x.params.values}
74
+ :initialSelectedValue=${(x) => x.params.value}
75
+ ></options-datasource>
76
+ </${designSystem}-combobox>
77
+ `;
78
+ /**
79
+ *
80
+ * @public
81
+ * @remarks
82
+ * HTML Element: \<foundation-select-editor\>
83
+ */
84
+ export const foundationSelectEditor = SelectEditor.compose({
85
+ baseName: 'select-editor',
86
+ styles: agSelectEditorStyles,
87
+ template: getSelectEditorTemplate(),
88
+ });
@@ -1,4 +1,5 @@
1
1
  import { __decorate } from "tslib";
2
+ import { Events, } from '@ag-grid-community/core';
2
3
  import { css, html, observable } from '@microsoft/fast-element';
3
4
  import { FoundationElement } from '@microsoft/fast-foundation';
4
5
  /**
@@ -11,18 +12,63 @@ export class BooleanRenderer extends FoundationElement {
11
12
  if (!params)
12
13
  return;
13
14
  this.params = params;
15
+ this.selected = params.value;
16
+ }
17
+ changeHandler(e) {
18
+ this.selected = e.target.checked;
19
+ const editedCells = this.params.api.getEditingCells();
20
+ const changingCurrentlyEditedCell = !!editedCells.find((cell) => cell.rowIndex === this.params.rowIndex &&
21
+ cell.column.getInstanceId() === this.params.column.getInstanceId());
22
+ if (!changingCurrentlyEditedCell) {
23
+ // below section allows grid renderer to act as grid editor so users can edit data without requesting edit
24
+ // heavily inspired by https://github.com/ag-grid/ag-grid/blob/latest/grid-community-modules/core/src/ts/rendering/cellRenderers/checkboxCellRenderer.ts#L104
25
+ const { column, node, rowIndex, value } = this.params;
26
+ const eventStarted = {
27
+ type: Events.EVENT_CELL_EDITING_STARTED,
28
+ column: column,
29
+ colDef: column === null || column === void 0 ? void 0 : column.getColDef(),
30
+ data: node.data,
31
+ node,
32
+ rowIndex,
33
+ rowPinned: node.rowPinned,
34
+ value,
35
+ };
36
+ this.params.api.dispatchEvent(eventStarted);
37
+ const valueChanged = this.params.node.setDataValue(this.params.column, this.selected, 'edit');
38
+ const eventStopped = {
39
+ type: Events.EVENT_CELL_EDITING_STOPPED,
40
+ column: column,
41
+ colDef: column === null || column === void 0 ? void 0 : column.getColDef(),
42
+ data: node.data,
43
+ node,
44
+ rowIndex,
45
+ rowPinned: node.rowPinned,
46
+ value,
47
+ oldValue: value,
48
+ newValue: this.selected,
49
+ valueChanged,
50
+ };
51
+ this.params.api.dispatchEvent(eventStopped);
52
+ }
14
53
  }
15
54
  getGui() {
16
55
  return this;
17
56
  }
18
57
  destroy() { }
19
58
  refresh(params) {
59
+ this.selected = params.value;
20
60
  return true;
21
61
  }
62
+ getValue() {
63
+ return this.selected;
64
+ }
22
65
  }
23
66
  __decorate([
24
67
  observable
25
68
  ], BooleanRenderer.prototype, "params", void 0);
69
+ __decorate([
70
+ observable
71
+ ], BooleanRenderer.prototype, "selected", void 0);
26
72
  /**
27
73
  * The AG Boolean Renderer Styles.
28
74
  * @public
@@ -44,9 +90,9 @@ export const getAgBooleanRendererTemplate = (designSystem = 'foundation') => {
44
90
  const checkboxComponent = `${designSystem}-checkbox`;
45
91
  return html `
46
92
  <${checkboxComponent}
47
- @change="${(x) => { var _a; return (_a = x.params) === null || _a === void 0 ? void 0 : _a.changeHandler(x.params); }}"
48
- checked="${(x) => { var _a; return (_a = x.params) === null || _a === void 0 ? void 0 : _a.value; }}"
49
- readonly="${(x) => { var _a; return (_a = x.params) === null || _a === void 0 ? void 0 : _a.readonly; }}"
93
+ @change=${(x, c) => x.changeHandler(c.event)}
94
+ :checked=${(x) => x.selected}
95
+ ?disabled=${(x) => !x.params.colDef.editable}
50
96
  ></${checkboxComponent}>
51
97
  `;
52
98
  };
@@ -1,3 +1,4 @@
1
+ import { foundationSelectEditor } from './cell-editors';
1
2
  import { foundationGridProActionRenderer, foundationGridProActionsMenuRenderer, foundationAgBooleanRenderer, foundationAgSelectRenderer, foundationAgTextRenderer, foundationAgTextFieldRenderer, } from './cell-renderers';
2
3
  import { foundationGridPro } from './grid-pro';
3
4
  /**
@@ -13,6 +14,7 @@ export const foundationGridComponents = {
13
14
  foundationAgTextFieldRenderer,
14
15
  foundationAgSelectRenderer,
15
16
  foundationGridPro,
17
+ selectEditor: foundationSelectEditor,
16
18
  register(container, ...rest) {
17
19
  if (!container) {
18
20
  // preserve backward compatibility with code that loops through
@@ -449,31 +449,37 @@ let GridProServerSideDatasource = class GridProServerSideDatasource extends Life
449
449
  getAgColumnDefs(fieldsMetadata) {
450
450
  const colDefsFromGenesisData = fieldsMetadata === null || fieldsMetadata === void 0 ? void 0 : fieldsMetadata.flatMap((field) => {
451
451
  var _a;
452
- const cellConfigs = {};
453
- cellConfigs.filterParams = getFilterParamsByFieldType(field.type);
452
+ const colDefBase = {};
453
+ colDefBase.filterParams = getFilterParamsByFieldType(field.type);
454
454
  switch (field.type) {
455
455
  case FieldTypeEnum.BOOLEAN:
456
456
  if (this.agGrid.autoCellRendererByType) {
457
- cellConfigs.cellRenderer = GridProRendererTypes.boolean;
457
+ colDefBase.cellRenderer = GridProRendererTypes.boolean;
458
+ colDefBase.cellEditor = GridProRendererTypes.boolean;
458
459
  }
459
460
  break;
460
461
  case FieldTypeEnum.DATE:
461
- cellConfigs.valueFormatter = dateValueFormatter;
462
+ colDefBase.valueFormatter = dateValueFormatter;
462
463
  break;
463
464
  case FieldTypeEnum.DATETIME:
464
- cellConfigs.valueFormatter = dateTimeValueFormatter;
465
+ colDefBase.valueFormatter = dateTimeValueFormatter;
466
+ break;
467
+ case FieldTypeEnum.ENUM:
468
+ colDefBase.cellEditor = GridProRendererTypes.selectEditor;
469
+ colDefBase.cellEditorParams = {
470
+ values: field.enumOptions.map((option) => ({ value: option, label: option })),
471
+ valueField: 'value',
472
+ labelField: 'label',
473
+ };
465
474
  break;
466
475
  default:
467
476
  break;
468
477
  }
469
478
  const templateColDef = (_a = this.agGrid.gridApi) === null || _a === void 0 ? void 0 : _a.getColumnDef(field.name);
470
- if (this.agGrid.onlyTemplateColDefs && !templateColDef) {
471
- return [];
472
- }
473
479
  if (this.fields && !this.fields.includes(field.name)) {
474
480
  return [];
475
481
  }
476
- return Object.assign(Object.assign({ field: field.name, type: getColumnType(field.type), filter: getFilterByFieldType(field.type), sortable: [].concat(...this.indexes.values()).includes(field.name) }, cellConfigs), templateColDef);
482
+ return Object.assign(Object.assign({ field: field.name, type: getColumnType(field.type), filter: getFilterByFieldType(field.type), sortable: [].concat(...this.indexes.values()).includes(field.name) }, colDefBase), templateColDef);
477
483
  });
478
484
  const colDefsMergedWithTemplateDefs = this.agGrid.mergeAllColumnDefsAndStates(colDefsFromGenesisData, true);
479
485
  return colDefsMergedWithTemplateDefs;
@@ -455,6 +455,7 @@ let GridProGenesisDatasource = class GridProGenesisDatasource extends LifecycleM
455
455
  case FieldTypeEnum.BOOLEAN:
456
456
  if (this.agGrid.autoCellRendererByType) {
457
457
  colDefBase.cellRenderer = GridProRendererTypes.boolean;
458
+ colDefBase.cellEditor = GridProRendererTypes.boolean;
458
459
  }
459
460
  break;
460
461
  case FieldTypeEnum.DATE:
@@ -463,13 +464,18 @@ let GridProGenesisDatasource = class GridProGenesisDatasource extends LifecycleM
463
464
  case FieldTypeEnum.DATETIME:
464
465
  colDefBase.valueFormatter = dateTimeValueFormatter;
465
466
  break;
467
+ case FieldTypeEnum.ENUM:
468
+ colDefBase.cellEditor = GridProRendererTypes.selectEditor;
469
+ colDefBase.cellEditorParams = {
470
+ values: field.enumOptions.map((option) => ({ value: option, label: option })),
471
+ valueField: 'value',
472
+ labelField: 'label',
473
+ };
474
+ break;
466
475
  default:
467
476
  break;
468
477
  }
469
478
  const colDefExtras = (_a = this.agGrid.gridApi) === null || _a === void 0 ? void 0 : _a.getColumnDef(field.name);
470
- if (this.agGrid.onlyTemplateColDefs && !colDefExtras) {
471
- return [];
472
- }
473
479
  if (this.fields && !this.fields.includes(field.name)) {
474
480
  return [];
475
481
  }
@@ -8,6 +8,7 @@ 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 } from './cell-editors';
11
12
  import { ActionRenderer, ActionsMenuRenderer, BooleanRenderer } from './cell-renderers';
12
13
  import { GridProColumn } from './column';
13
14
  import { agThemeFontFaceMap, defaultAgGridFontFace } from './external';
@@ -139,6 +140,7 @@ export class GridPro extends LifecycleMixin(FoundationElement) {
139
140
  [GridProRendererTypes.action]: ActionRenderer,
140
141
  [GridProRendererTypes.actionsMenu]: ActionsMenuRenderer,
141
142
  [GridProRendererTypes.boolean]: BooleanRenderer,
143
+ [GridProRendererTypes.selectEditor]: SelectEditor,
142
144
  };
143
145
  return Object.assign(Object.assign(Object.assign({}, defaultFoundationAgComponents), gridOptionsComponents), this.gridComponents);
144
146
  }
@@ -326,34 +328,24 @@ export class GridPro extends LifecycleMixin(FoundationElement) {
326
328
  */
327
329
  mergeAllColumnDefsAndStates(columnDefs, deferredColumnDefsOrState = false) {
328
330
  var _a;
329
- const columnDefinitions = columnDefs || [];
330
- const agColumnNodes = this.querySelectorAll(this.columnComponentName);
331
- const overrides = Array.from(agColumnNodes).map((x) => { var _a; return (_a = x.definition) === null || _a === void 0 ? void 0 : _a.field; });
332
- let colDefsToReturn = [];
333
- if (agColumnNodes.length === 0) {
334
- colDefsToReturn = columnDefinitions;
335
- }
336
- else {
337
- colDefsToReturn = [
338
- ...columnDefinitions.filter((g) => !overrides.includes(g.field)),
339
- ...Array.from(agColumnNodes).map((x) => {
340
- var _a;
341
- if (this.enableCellFlashing && x.definition.enableCellChangeFlash === undefined) {
342
- x.definition.enableCellChangeFlash = true;
343
- }
344
- // Applies the default valueformatter for given data type, if unspecified in user colDefs
345
- // Skip if autoCellRendererByType is disabled
346
- if (!this.autoCellRendererByType || x.definition.valueFormatter) {
347
- return x.definition;
348
- }
349
- const typeValueFormatter = (_a = columnDefinitions.find((colDef) => x.definition.field === colDef.field)) === null || _a === void 0 ? void 0 : _a.valueFormatter;
350
- if (typeValueFormatter) {
351
- x.definition.valueFormatter = typeValueFormatter;
352
- }
353
- return x.definition;
354
- }),
355
- ];
356
- }
331
+ const columnDefinitionsFromMetadata = columnDefs || [];
332
+ const templateColumnDefs = Array.from(this.querySelectorAll(this.columnComponentName))
333
+ .map((templateColumn) => templateColumn.definition)
334
+ .map((columnDef) => {
335
+ // enable cell flashing for each column if unspecified on column level but enabled on grid level
336
+ if (this.enableCellFlashing && columnDef.enableCellChangeFlash === undefined) {
337
+ columnDef.enableCellChangeFlash = true;
338
+ }
339
+ const metadataColumnDef = columnDefinitionsFromMetadata.find((colDef) => columnDef.field === colDef.field);
340
+ return Object.assign(Object.assign({}, metadataColumnDef), columnDef);
341
+ });
342
+ const templateColumnKeys = templateColumnDefs.map((x) => x.field);
343
+ const colDefsToReturn = [
344
+ ...templateColumnDefs,
345
+ ...(this.onlyTemplateColDefs
346
+ ? []
347
+ : columnDefinitionsFromMetadata.filter((g) => !templateColumnKeys.includes(g.field))),
348
+ ];
357
349
  if (this.gridProGenesisDatasource && deferredColumnDefsOrState) {
358
350
  const savedColumnState = this.getSavedColumnState();
359
351
  if ((savedColumnState === null || savedColumnState === void 0 ? void 0 : savedColumnState.length) > 0) {
@@ -127,6 +127,7 @@ export var GridProRendererTypes;
127
127
  GridProRendererTypes["boolean"] = "boolean";
128
128
  GridProRendererTypes["text"] = "text";
129
129
  GridProRendererTypes["select"] = "select";
130
+ GridProRendererTypes["selectEditor"] = "selectEditor";
130
131
  })(GridProRendererTypes || (GridProRendererTypes = {}));
131
132
  /**
132
133
  * Event fired when grid is ready
package/dist/esm/index.js CHANGED
@@ -1,5 +1,6 @@
1
1
  export * from './cell';
2
2
  export * from './cell-renderers';
3
+ export * from './cell-editors';
3
4
  export * from './column';
4
5
  export * from './external';
5
6
  export * from './grid-components';