@genesislcap/foundation-entity-management 14.416.1 → 14.416.2-alpha-a775978.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.
@@ -89,6 +89,41 @@
89
89
  }
90
90
  ]
91
91
  },
92
+ {
93
+ "kind": "javascript-module",
94
+ "path": "src/components/components.ts",
95
+ "declarations": [
96
+ {
97
+ "kind": "function",
98
+ "name": "loadRemotes"
99
+ }
100
+ ],
101
+ "exports": [
102
+ {
103
+ "kind": "js",
104
+ "name": "loadRemotes",
105
+ "declaration": {
106
+ "name": "loadRemotes",
107
+ "module": "src/components/components.ts"
108
+ }
109
+ }
110
+ ]
111
+ },
112
+ {
113
+ "kind": "javascript-module",
114
+ "path": "src/components/index.ts",
115
+ "declarations": [],
116
+ "exports": [
117
+ {
118
+ "kind": "js",
119
+ "name": "*",
120
+ "declaration": {
121
+ "name": "*",
122
+ "package": "./components"
123
+ }
124
+ }
125
+ ]
126
+ },
92
127
  {
93
128
  "kind": "javascript-module",
94
129
  "path": "src/entities/entities.styles.ts",
@@ -2660,41 +2695,6 @@
2660
2695
  }
2661
2696
  ]
2662
2697
  },
2663
- {
2664
- "kind": "javascript-module",
2665
- "path": "src/components/components.ts",
2666
- "declarations": [
2667
- {
2668
- "kind": "function",
2669
- "name": "loadRemotes"
2670
- }
2671
- ],
2672
- "exports": [
2673
- {
2674
- "kind": "js",
2675
- "name": "loadRemotes",
2676
- "declaration": {
2677
- "name": "loadRemotes",
2678
- "module": "src/components/components.ts"
2679
- }
2680
- }
2681
- ]
2682
- },
2683
- {
2684
- "kind": "javascript-module",
2685
- "path": "src/components/index.ts",
2686
- "declarations": [],
2687
- "exports": [
2688
- {
2689
- "kind": "js",
2690
- "name": "*",
2691
- "declaration": {
2692
- "name": "*",
2693
- "package": "./components"
2694
- }
2695
- }
2696
- ]
2697
- },
2698
2698
  {
2699
2699
  "kind": "javascript-module",
2700
2700
  "path": "src/list/index.ts",
@@ -3006,6 +3006,25 @@
3006
3006
  },
3007
3007
  "privacy": "protected"
3008
3008
  },
3009
+ {
3010
+ "kind": "field",
3011
+ "name": "_skipSchemaReentry",
3012
+ "type": {
3013
+ "text": "boolean"
3014
+ },
3015
+ "privacy": "private",
3016
+ "default": "false",
3017
+ "description": "When re-dispatching `datasource-schema-updated` after action columns render, skip the nested handler once."
3018
+ },
3019
+ {
3020
+ "kind": "field",
3021
+ "name": "_serverSchemaListenerAttached",
3022
+ "type": {
3023
+ "text": "boolean"
3024
+ },
3025
+ "privacy": "private",
3026
+ "default": "false"
3027
+ },
3009
3028
  {
3010
3029
  "kind": "field",
3011
3030
  "name": "isServerSideDatasource",
@@ -3026,6 +3045,23 @@
3026
3045
  }
3027
3046
  ]
3028
3047
  },
3048
+ {
3049
+ "kind": "method",
3050
+ "name": "populateActionButtonsConfig",
3051
+ "privacy": "private",
3052
+ "return": {
3053
+ "type": {
3054
+ "text": "void"
3055
+ }
3056
+ },
3057
+ "description": "Builds column defs for CRUD / custom actions in the grid (pinned action column)."
3058
+ },
3059
+ {
3060
+ "kind": "field",
3061
+ "name": "handleDatasourceSchemaUpdated",
3062
+ "privacy": "private",
3063
+ "description": "Server-side row model: `grid-pro` may run `handleSchemaUpdated` before `grid-pro-column` for action\nbuttons exist in the DOM, so the merge omits them. After schema, repopulate actions and re-dispatch\nthe same event so `grid-pro` merges again with template columns present."
3064
+ },
3029
3065
  {
3030
3066
  "kind": "field",
3031
3067
  "name": "criteria",
@@ -427,9 +427,24 @@ export declare class List extends List_base {
427
427
  statusBarConfig: GridProStatusBarConfig;
428
428
  customActions: CustomAction[];
429
429
  protected connect: Connect;
430
+ /**
431
+ * When re-dispatching `datasource-schema-updated` after action columns render, skip the nested handler once.
432
+ */
433
+ private _skipSchemaReentry;
434
+ private _serverSchemaListenerAttached;
430
435
  get isServerSideDatasource(): boolean;
431
436
  connectedCallback(): void;
432
437
  handleCellEditRequest(event: CustomEvent<CellEditRequestEvent>): Promise<void>;
438
+ /**
439
+ * Builds column defs for CRUD / custom actions in the grid (pinned action column).
440
+ */
441
+ private populateActionButtonsConfig;
442
+ /**
443
+ * Server-side row model: `grid-pro` may run `handleSchemaUpdated` before `grid-pro-column` for action
444
+ * buttons exist in the DOM, so the merge omits them. After schema, repopulate actions and re-dispatch
445
+ * the same event so `grid-pro` merges again with template columns present.
446
+ */
447
+ private handleDatasourceSchemaUpdated;
433
448
  disconnectedCallback(): Promise<void>;
434
449
  get criteria(): string;
435
450
  get fields(): string;
@@ -1 +1 @@
1
- {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/list/list.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/list/list.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@ import { __awaiter, __decorate } from "tslib";
2
2
  import { Events } from '@ag-grid-community/core';
3
3
  import { Connect } from '@genesislcap/foundation-comms';
4
4
  import { LifecycleMixin } from '@genesislcap/foundation-utils';
5
- import { EDITED_COLUMN_FIELD, ERROR_COLUMN_FIELD } from '@genesislcap/grid-pro';
5
+ import { datasourceEventNames, EDITED_COLUMN_FIELD, ERROR_COLUMN_FIELD, } from '@genesislcap/grid-pro';
6
6
  import { attr, customElement, DOM, GenesisElement, html, observable, volatile, } from '@genesislcap/web-core';
7
7
  import { CrudMenuPosition } from '../types';
8
8
  import { buttonCellRenderer } from '../utils';
@@ -28,6 +28,37 @@ let List = class List extends LifecycleMixin(GenesisElement) {
28
28
  this.datasourceType = 'client';
29
29
  this.actionButtonsConfig = [];
30
30
  this.customActions = [];
31
+ /**
32
+ * When re-dispatching `datasource-schema-updated` after action columns render, skip the nested handler once.
33
+ */
34
+ this._skipSchemaReentry = false;
35
+ this._serverSchemaListenerAttached = false;
36
+ /**
37
+ * Server-side row model: `grid-pro` may run `handleSchemaUpdated` before `grid-pro-column` for action
38
+ * buttons exist in the DOM, so the merge omits them. After schema, repopulate actions and re-dispatch
39
+ * the same event so `grid-pro` merges again with template columns present.
40
+ */
41
+ this.handleDatasourceSchemaUpdated = (e) => {
42
+ if (!this.isServerSideDatasource)
43
+ return;
44
+ if (this._skipSchemaReentry) {
45
+ this._skipSchemaReentry = false;
46
+ return;
47
+ }
48
+ DOM.queueUpdate(() => {
49
+ this.populateActionButtonsConfig();
50
+ DOM.queueUpdate(() => {
51
+ if (!this.grid)
52
+ return;
53
+ this._skipSchemaReentry = true;
54
+ this.grid.dispatchEvent(new CustomEvent(datasourceEventNames.schemaUpdated, {
55
+ bubbles: true,
56
+ composed: true,
57
+ detail: e.detail,
58
+ }));
59
+ });
60
+ });
61
+ };
31
62
  this.edit = (e) => {
32
63
  this.$emit('edit-entity', e);
33
64
  };
@@ -43,39 +74,10 @@ let List = class List extends LifecycleMixin(GenesisElement) {
43
74
  if (!this.shouldRunConnect)
44
75
  return;
45
76
  this.grid.addEventListener(Events.EVENT_GRID_READY, () => {
46
- this.actionButtonsConfig = [];
47
- const gridCustomActions = this.customActions.filter((action) => (action.position || CrudMenuPosition.Column) === CrudMenuPosition.Column);
48
- gridCustomActions.forEach((action) => {
49
- this.actionButtonsConfig.push(buttonCellRenderer(action.name, () => this.handleCustomAction(action.name), html `
50
- <${this.prefix}-icon
51
- style="pointer-events: none; opacity: 0.5"
52
- class="icon-button"
53
- variant="solid"
54
- name="${action.icon || 'gear'}"
55
- size="1x"
56
- ></${this.prefix}-icon>
57
- `, action.tooltip || action.name));
58
- });
59
- if (this.updateEvent && !this.hideEdit) {
60
- this.actionButtonsConfig.push(buttonCellRenderer('Edit', this.edit, html `
61
- <${this.prefix}-icon
62
- style="pointer-events: none; opacity: 0.5"
63
- class="icon-button"
64
- variant="solid"
65
- name="pen"
66
- size="1x"
67
- ></${this.prefix}-icon>
68
- `));
69
- }
70
- if (this.deleteEvent && !this.hideDelete) {
71
- this.actionButtonsConfig.push(buttonCellRenderer('Delete', (e) => this.delete(e), html `
72
- <${this.prefix}-icon
73
- style="opacity: 0.5"
74
- variant="regular"
75
- name="trash-alt"
76
- size="1x"
77
- ></${this.prefix}-icon>
78
- `));
77
+ this.populateActionButtonsConfig();
78
+ if (this.isServerSideDatasource && !this._serverSchemaListenerAttached) {
79
+ this._serverSchemaListenerAttached = true;
80
+ this.grid.addEventListener(datasourceEventNames.schemaUpdated, this.handleDatasourceSchemaUpdated);
79
81
  }
80
82
  if (this.enableFilterBar) {
81
83
  this.addEventListener('filter-changed', this.handleFilterChanged);
@@ -117,6 +119,45 @@ let List = class List extends LifecycleMixin(GenesisElement) {
117
119
  }
118
120
  });
119
121
  }
122
+ /**
123
+ * Builds column defs for CRUD / custom actions in the grid (pinned action column).
124
+ */
125
+ populateActionButtonsConfig() {
126
+ this.actionButtonsConfig = [];
127
+ const gridCustomActions = this.customActions.filter((action) => (action.position || CrudMenuPosition.Column) === CrudMenuPosition.Column);
128
+ gridCustomActions.forEach((action) => {
129
+ this.actionButtonsConfig.push(buttonCellRenderer(action.name, () => this.handleCustomAction(action.name), html `
130
+ <${this.prefix}-icon
131
+ style="pointer-events: none; opacity: 0.5"
132
+ class="icon-button"
133
+ variant="solid"
134
+ name="${action.icon || 'gear'}"
135
+ size="1x"
136
+ ></${this.prefix}-icon>
137
+ `, action.tooltip || action.name));
138
+ });
139
+ if (this.updateEvent && !this.hideEdit) {
140
+ this.actionButtonsConfig.push(buttonCellRenderer('Edit', this.edit, html `
141
+ <${this.prefix}-icon
142
+ style="pointer-events: none; opacity: 0.5"
143
+ class="icon-button"
144
+ variant="solid"
145
+ name="pen"
146
+ size="1x"
147
+ ></${this.prefix}-icon>
148
+ `));
149
+ }
150
+ if (this.deleteEvent && !this.hideDelete) {
151
+ this.actionButtonsConfig.push(buttonCellRenderer('Delete', (e) => this.delete(e), html `
152
+ <${this.prefix}-icon
153
+ style="opacity: 0.5"
154
+ variant="regular"
155
+ name="trash-alt"
156
+ size="1x"
157
+ ></${this.prefix}-icon>
158
+ `));
159
+ }
160
+ }
120
161
  disconnectedCallback() {
121
162
  const _super = Object.create(null, {
122
163
  disconnectedCallback: { get: () => super.disconnectedCallback }
@@ -127,6 +168,10 @@ let List = class List extends LifecycleMixin(GenesisElement) {
127
168
  if (!shouldRunDisconnect)
128
169
  return;
129
170
  _super.disconnectedCallback.call(this);
171
+ if (this._serverSchemaListenerAttached && this.grid) {
172
+ this.grid.removeEventListener(datasourceEventNames.schemaUpdated, this.handleDatasourceSchemaUpdated);
173
+ this._serverSchemaListenerAttached = false;
174
+ }
130
175
  if (this.enableFilterBar) {
131
176
  this.removeEventListener('filter-changed', this.handleFilterChanged);
132
177
  this.removeEventListener('filter-cleared', this.handleFilterCleared);
@@ -1316,9 +1316,24 @@ export declare class List extends List_base {
1316
1316
  statusBarConfig: GridProStatusBarConfig;
1317
1317
  customActions: CustomAction[];
1318
1318
  protected connect: Connect;
1319
+ /**
1320
+ * When re-dispatching `datasource-schema-updated` after action columns render, skip the nested handler once.
1321
+ */
1322
+ private _skipSchemaReentry;
1323
+ private _serverSchemaListenerAttached;
1319
1324
  get isServerSideDatasource(): boolean;
1320
1325
  connectedCallback(): void;
1321
1326
  handleCellEditRequest(event: CustomEvent<CellEditRequestEvent>): Promise<void>;
1327
+ /**
1328
+ * Builds column defs for CRUD / custom actions in the grid (pinned action column).
1329
+ */
1330
+ private populateActionButtonsConfig;
1331
+ /**
1332
+ * Server-side row model: `grid-pro` may run `handleSchemaUpdated` before `grid-pro-column` for action
1333
+ * buttons exist in the DOM, so the merge omits them. After schema, repopulate actions and re-dispatch
1334
+ * the same event so `grid-pro` merges again with template columns present.
1335
+ */
1336
+ private handleDatasourceSchemaUpdated;
1322
1337
  disconnectedCallback(): Promise<void>;
1323
1338
  get criteria(): string;
1324
1339
  get fields(): string;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@genesislcap/foundation-entity-management",
3
3
  "description": "Genesis Foundation Entity Management",
4
- "version": "14.416.1",
4
+ "version": "14.416.2-alpha-a775978.0",
5
5
  "sideEffects": false,
6
6
  "license": "SEE LICENSE IN license.txt",
7
7
  "main": "dist/esm/index.js",
@@ -54,32 +54,32 @@
54
54
  }
55
55
  },
56
56
  "devDependencies": {
57
- "@genesislcap/foundation-testing": "14.416.1",
58
- "@genesislcap/genx": "14.416.1",
59
- "@genesislcap/rollup-builder": "14.416.1",
60
- "@genesislcap/ts-builder": "14.416.1",
61
- "@genesislcap/uvu-playwright-builder": "14.416.1",
62
- "@genesislcap/vite-builder": "14.416.1",
63
- "@genesislcap/webpack-builder": "14.416.1"
57
+ "@genesislcap/foundation-testing": "14.416.2-alpha-a775978.0",
58
+ "@genesislcap/genx": "14.416.2-alpha-a775978.0",
59
+ "@genesislcap/rollup-builder": "14.416.2-alpha-a775978.0",
60
+ "@genesislcap/ts-builder": "14.416.2-alpha-a775978.0",
61
+ "@genesislcap/uvu-playwright-builder": "14.416.2-alpha-a775978.0",
62
+ "@genesislcap/vite-builder": "14.416.2-alpha-a775978.0",
63
+ "@genesislcap/webpack-builder": "14.416.2-alpha-a775978.0"
64
64
  },
65
65
  "peerDependencies": {
66
66
  "@ag-grid-community/core": "29.2.0"
67
67
  },
68
68
  "dependencies": {
69
- "@genesislcap/foundation-ai": "14.416.1",
70
- "@genesislcap/foundation-comms": "14.416.1",
71
- "@genesislcap/foundation-errors": "14.416.1",
72
- "@genesislcap/foundation-events": "14.416.1",
73
- "@genesislcap/foundation-forms": "14.416.1",
74
- "@genesislcap/foundation-logger": "14.416.1",
75
- "@genesislcap/foundation-login": "14.416.1",
76
- "@genesislcap/foundation-notifications": "14.416.1",
77
- "@genesislcap/foundation-ui": "14.416.1",
78
- "@genesislcap/foundation-utils": "14.416.1",
79
- "@genesislcap/foundation-zero": "14.416.1",
80
- "@genesislcap/foundation-zero-grid-pro": "14.416.1",
81
- "@genesislcap/grid-pro": "14.416.1",
82
- "@genesislcap/web-core": "14.416.1",
69
+ "@genesislcap/foundation-ai": "14.416.2-alpha-a775978.0",
70
+ "@genesislcap/foundation-comms": "14.416.2-alpha-a775978.0",
71
+ "@genesislcap/foundation-errors": "14.416.2-alpha-a775978.0",
72
+ "@genesislcap/foundation-events": "14.416.2-alpha-a775978.0",
73
+ "@genesislcap/foundation-forms": "14.416.2-alpha-a775978.0",
74
+ "@genesislcap/foundation-logger": "14.416.2-alpha-a775978.0",
75
+ "@genesislcap/foundation-login": "14.416.2-alpha-a775978.0",
76
+ "@genesislcap/foundation-notifications": "14.416.2-alpha-a775978.0",
77
+ "@genesislcap/foundation-ui": "14.416.2-alpha-a775978.0",
78
+ "@genesislcap/foundation-utils": "14.416.2-alpha-a775978.0",
79
+ "@genesislcap/foundation-zero": "14.416.2-alpha-a775978.0",
80
+ "@genesislcap/foundation-zero-grid-pro": "14.416.2-alpha-a775978.0",
81
+ "@genesislcap/grid-pro": "14.416.2-alpha-a775978.0",
82
+ "@genesislcap/web-core": "14.416.2-alpha-a775978.0",
83
83
  "change-case": "^4.1.2"
84
84
  },
85
85
  "repository": {
@@ -91,5 +91,5 @@
91
91
  "access": "public"
92
92
  },
93
93
  "customElements": "dist/custom-elements.json",
94
- "gitHead": "dd39f2bffbd92a41d51853efc09425731aab4d12"
94
+ "gitHead": "b7d9e88c57938176774a52fe3300a36d89c3dcad"
95
95
  }