@genesislcap/grid-pro 15.8.1 → 15.8.2-FUI-0.1

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.
@@ -9,15 +9,23 @@ import { BaseServerSideDatasource } from './server-side.resource-base';
9
9
  const POLLING_STREAM_DEBOUNCE_MS = 300;
10
10
  /**
11
11
  * The REQUEST_SERVER IServerSideDatasource implementation, used for SSRM (Server-Side Row Model) in the grid.
12
+ * @remarks
13
+ * Only request replies supporting criteria-only requests (`criteriaOnlyRequest`) can be served this
14
+ * way: every SSRM concern is expressed through `DETAILS` (`CRITERIA_MATCH` for the filter model,
15
+ * `ORDER_BY` for the sort model, `OFFSET` for paging) with an empty `REQUEST` payload.
16
+ * {@link @genesislcap/grid-pro#GridProServerSideDatasource} enforces this before constructing the
17
+ * datasource.
18
+ *
19
+ * Paging is therefore always offset-based - `criteriaOnlyRequest` guarantees `OFFSET` support, so
20
+ * there is no `VIEW_NUMBER` fallback to choose between.
12
21
  * @beta
13
22
  */
14
23
  export class ReqRepServerSideDatasource extends BaseServerSideDatasource {
15
24
  constructor(options) {
16
- var _a, _b, _c, _d, _e;
25
+ var _a, _b, _c;
17
26
  super(options);
18
27
  // Track the total discovered row count when we reach the last page
19
28
  this.discoveredTotalRowCount = null;
20
- this.currentNextOffset = 0;
21
29
  this.createReqRepRequestFunc = options.createReqRepRequestFunc;
22
30
  this.createReqRepStreamFunc = options.createReqRepStreamFunc;
23
31
  this.onPollingUpdate = options.onPollingUpdateFunc;
@@ -25,18 +33,8 @@ export class ReqRepServerSideDatasource extends BaseServerSideDatasource {
25
33
  this.usePolling = (_a = options.usePolling) !== null && _a !== void 0 ? _a : false;
26
34
  // Initialize debounced stream creation function
27
35
  this.debouncedCreateStream = debounce((params) => this.createPollingStream(params), POLLING_STREAM_DEBOUNCE_MS);
28
- const effectivePagingMode = this.getEffectivePagingMode();
29
- // Initialize based on paging mode
30
- if (effectivePagingMode === 'viewBased') {
31
- if (!((_c = (_b = options.resourceParams) === null || _b === void 0 ? void 0 : _b.DETAILS) === null || _c === void 0 ? void 0 : _c.VIEW_NUMBER)) {
32
- this.resourceParams.DETAILS.VIEW_NUMBER = this.zeroBasedViewNumber ? 0 : 1;
33
- }
34
- }
35
- else {
36
- // offsetBased
37
- if (!((_e = (_d = options.resourceParams) === null || _d === void 0 ? void 0 : _d.DETAILS) === null || _e === void 0 ? void 0 : _e.OFFSET)) {
38
- this.resourceParams.DETAILS.OFFSET = 0;
39
- }
36
+ if (!((_c = (_b = options.resourceParams) === null || _b === void 0 ? void 0 : _b.DETAILS) === null || _c === void 0 ? void 0 : _c.OFFSET)) {
37
+ this.resourceParams.DETAILS.OFFSET = 0;
40
38
  }
41
39
  }
42
40
  getRows(params) {
@@ -49,67 +47,19 @@ export class ReqRepServerSideDatasource extends BaseServerSideDatasource {
49
47
  params.fail();
50
48
  return;
51
49
  }
52
- const effectivePagingMode = this.getEffectivePagingMode();
53
- // Advance the view/offset position based on paging mode
54
- this.advancePagingPosition(params, effectivePagingMode);
50
+ // Use startRow as the OFFSET to ensure correct block-to-offset mapping, even when blocks are
51
+ // re-requested out of order (e.g. polling refresh of block 0)
52
+ this.resourceParams.DETAILS.OFFSET = params.request.startRow;
55
53
  const requestParams = {
56
- DETAILS: this.buildRequestDetails(effectivePagingMode),
54
+ DETAILS: this.buildRequestDetails(),
57
55
  };
58
56
  const requestResult = yield this.createReqRepRequestFunc(requestParams);
59
- // Determine if this is the last view/page
60
- const isLastView = yield this.determineIsLastView(requestResult, requestParams, effectivePagingMode);
61
57
  // Apply the result to the grid
62
- this.applyServerSideData(params, requestResult, isLastView);
58
+ this.applyServerSideData(params, requestResult);
63
59
  // If polling enabled, schedule stream creation after user stops scrolling
64
60
  this.schedulePollingStream(requestParams);
65
61
  });
66
62
  }
67
- /**
68
- * Advance the view/offset position based on paging mode
69
- */
70
- advancePagingPosition(params, effectivePagingMode) {
71
- if (effectivePagingMode === 'viewBased') {
72
- if (this.currentSequenceId !== null && this.currentSequenceId >= 0 && this.moreRows) {
73
- this.resourceParams.DETAILS.VIEW_NUMBER += 1;
74
- }
75
- }
76
- else {
77
- // offsetBased: use startRow as the OFFSET to ensure correct block-to-offset mapping,
78
- // even when blocks are re-requested out of order (e.g. polling refresh of block 0)
79
- this.resourceParams.DETAILS.OFFSET = params.request.startRow;
80
- }
81
- }
82
- /**
83
- * Determine if this is the last view/page
84
- */
85
- determineIsLastView(requestResult, requestParams, effectivePagingMode) {
86
- return __awaiter(this, void 0, void 0, function* () {
87
- var _a;
88
- const hasMoreRowsInResult = 'MORE_ROWS' in requestResult;
89
- let isLastView = false;
90
- if (effectivePagingMode === 'viewBased') {
91
- if (hasMoreRowsInResult) {
92
- isLastView = !requestResult.MORE_ROWS;
93
- }
94
- else if (requestResult.NEXT_VIEW !== -1) {
95
- const preCheckRequestParams = Object.assign(Object.assign({}, requestParams), { DETAILS: Object.assign(Object.assign({}, requestParams.DETAILS), { VIEW_NUMBER: requestResult.NEXT_VIEW }) });
96
- const moreRowsPreCheck = yield this.createReqRepRequestFunc(preCheckRequestParams);
97
- isLastView = moreRowsPreCheck.NEXT_VIEW === -1 && ((_a = moreRowsPreCheck.REPLY) === null || _a === void 0 ? void 0 : _a.length) === 0;
98
- }
99
- }
100
- else {
101
- // offsetBased
102
- isLastView = hasMoreRowsInResult && !requestResult.MORE_ROWS;
103
- if ('NEXT_OFFSET' in requestResult && requestResult.NEXT_OFFSET !== -1) {
104
- this.currentNextOffset = requestResult.NEXT_OFFSET;
105
- }
106
- else {
107
- this.currentNextOffset = 0;
108
- }
109
- }
110
- return isLastView;
111
- });
112
- }
113
63
  /**
114
64
  * Schedules polling stream creation if enabled.
115
65
  * @remarks
@@ -122,7 +72,7 @@ export class ReqRepServerSideDatasource extends BaseServerSideDatasource {
122
72
  this.debouncedCreateStream(requestParams);
123
73
  }
124
74
  }
125
- applyServerSideData(params, result, isLastView) {
75
+ applyServerSideData(params, result) {
126
76
  var _a, _b;
127
77
  const messageType = result.MESSAGE_TYPE;
128
78
  if (messageType &&
@@ -137,26 +87,14 @@ export class ReqRepServerSideDatasource extends BaseServerSideDatasource {
137
87
  params.fail();
138
88
  return;
139
89
  }
140
- const effectivePagingMode = this.getEffectivePagingMode();
141
90
  // TODO: the code below will be tweaked/removed when gsf <8.14 is no longer supported
142
91
  if ('MORE_ROWS' in result) {
143
92
  this.moreRows = result.MORE_ROWS;
144
93
  }
145
94
  else {
146
- // Fall back to the existing logic for backwards compatibility
147
- if (effectivePagingMode === 'viewBased') {
148
- this.moreRows =
149
- !isLastView &&
150
- result.NEXT_VIEW !== -1 &&
151
- result.NEXT_VIEW > this.resourceParams.DETAILS.VIEW_NUMBER;
152
- }
153
- else {
154
- // offsetBased
155
- this.moreRows =
156
- !isLastView &&
157
- result.NEXT_OFFSET !== -1 &&
158
- result.NEXT_OFFSET > this.resourceParams.DETAILS.OFFSET;
159
- }
95
+ // Fall back to NEXT_OFFSET for backwards compatibility
96
+ this.moreRows =
97
+ result.NEXT_OFFSET !== -1 && result.NEXT_OFFSET > this.resourceParams.DETAILS.OFFSET;
160
98
  }
161
99
  if ((_a = result.REPLY) === null || _a === void 0 ? void 0 : _a.length) {
162
100
  this.handleCurrentStreamLoad(result.REPLY);
@@ -165,14 +103,7 @@ export class ReqRepServerSideDatasource extends BaseServerSideDatasource {
165
103
  this.completeEmptyResult(params);
166
104
  return;
167
105
  }
168
- // Update current sequence ID based on paging mode
169
- if (effectivePagingMode === 'viewBased') {
170
- this.currentSequenceId = this.resourceParams.DETAILS.VIEW_NUMBER;
171
- }
172
- else {
173
- // For offsetBased, use OFFSET / maxRows to get the sequence
174
- this.currentSequenceId = Math.floor(this.resourceParams.DETAILS.OFFSET / this.maxRows);
175
- }
106
+ this.currentSequenceId = Math.floor(this.resourceParams.DETAILS.OFFSET / this.maxRows);
176
107
  this.sourceRef = result.SOURCE_REF;
177
108
  // For req-rep, store the total row count when we reach the last page
178
109
  if (!this.moreRows) {
@@ -261,8 +192,6 @@ export class ReqRepServerSideDatasource extends BaseServerSideDatasource {
261
192
  this.debouncedCreateStream.cancel();
262
193
  }
263
194
  this.discoveredTotalRowCount = null;
264
- this.currentNextOffset = 0;
265
- this.resourceParams.DETAILS.VIEW_NUMBER = this.zeroBasedViewNumber ? 0 : 1;
266
195
  this.resourceParams.DETAILS.OFFSET = 0;
267
196
  yield _super.refreshDatasource.call(this, params);
268
197
  });
@@ -348,18 +277,12 @@ export class ReqRepServerSideDatasource extends BaseServerSideDatasource {
348
277
  this.resetPreviousPollResult();
349
278
  }
350
279
  }
351
- buildRequestDetails(effectivePagingMode) {
352
- const baseDetails = {
280
+ buildRequestDetails() {
281
+ return {
353
282
  CRITERIA_MATCH: this.resourceParams.DETAILS.CRITERIA_MATCH,
354
283
  MAX_ROWS: this.resourceParams.DETAILS.MAX_ROWS,
355
284
  ORDER_BY: this.resourceParams.DETAILS.ORDER_BY,
285
+ OFFSET: this.resourceParams.DETAILS.OFFSET,
356
286
  };
357
- if (effectivePagingMode === 'viewBased') {
358
- return Object.assign(Object.assign({}, baseDetails), { VIEW_NUMBER: this.resourceParams.DETAILS.VIEW_NUMBER });
359
- }
360
- else {
361
- // offsetBased
362
- return Object.assign(Object.assign({}, baseDetails), { OFFSET: this.resourceParams.DETAILS.OFFSET });
363
- }
364
287
  }
365
288
  }
@@ -20729,7 +20729,7 @@
20729
20729
  {
20730
20730
  "kind": "Class",
20731
20731
  "canonicalReference": "@genesislcap/grid-pro!GridProServerSideDatasource:class",
20732
- "docComment": "/**\n * A Genesis Datasource element, for server-side | SSRM-compatible data fetching and used exclusively by the GridPro element.\n *\n * @remarks\n *\n * Only supports Server-Side Row Model. Requires `@ag-grid-enterprise/server-side-row-model` setup and valid AG Grid Enterprise license.\n *\n * **Custom Sort Indicators**: This datasource automatically applies custom sort indicators that are always visible (instead of only on hover). Sortable columns will show a subtle sort icon even when not sorted, and active sort indicators will be more prominent. The custom styling uses AG Grid's native icon font for consistency with the grid theme.\n *\n * @fires\n *\n * base-datasource-error - Fired when a datasource error is reported. detail: `BaseDatasourceErrorEventDetail`\n *\n * @fires\n *\n * datasource-error - Fired when a datasource error occurs (for grid integration). detail: `DatasourceErrorEventDetail`\n *\n * @fires\n *\n * base-datasource-connected - Fired when error state is cleared after connection succeeds\n *\n * @fires\n *\n * datasource-loading-finished - Fired when pending stream transactions are flushed with no row changes\n *\n * @fires\n *\n * datasource-no-data-available - Fired when loading finishes with an empty row set\n *\n * @fires\n *\n * datasource-data-changed - Fired when row data changes from applied stream transactions. detail: `DataChangedEventDetail`\n *\n * @fires\n *\n * cache-filter-config - Fired to persist filter configuration for the grid\n *\n * @fires\n *\n * refresh-server-side - Fired to request a server-side refresh. detail: `RefreshServerSideEventDetail`\n *\n * @fires\n *\n * set-server-side-datasource - Fired to attach or clear the server-side row model datasource\n *\n * @fires\n *\n * datasource-loading-started - Fired when a server-side load cycle starts\n *\n * @fires\n *\n * add-grid-css-class - Fired to add a CSS class on the grid host (e.g. server-side styling). detail: `GridCssClassEventDetail`\n *\n * @fires\n *\n * remove-grid-css-class - Fired to remove a CSS class from the grid host. detail: `GridCssClassEventDetail`\n *\n * @fires\n *\n * datasource-initialize - Fired to hand off server-side grid options. detail: `InitializeEventDetail`\n *\n * @fires\n *\n * datasource-init - Fired when the server-side grid model should initialize data\n *\n * @fires\n *\n * datasource-schema-updated - Fired when column metadata or defs are updated. detail: `SchemaUpdatedEventDetail`\n *\n * @fires\n *\n * datasource-filters-restored - Fired when persisted filters are reapplied\n *\n * @fires\n *\n * datasource-data-cleared - Fired when server-side row data is cleared. detail: `DataClearedEventDetail`\n *\n * @fires\n *\n * apply-server-side-transaction - Fired to apply a server-side row transaction\n *\n * @fires\n *\n * datasource-ready - Fired when the host grid is ready to start loading data\n *\n * @beta\n */\n",
20732
+ "docComment": "/**\n * A Genesis Datasource element, for server-side | SSRM-compatible data fetching and used exclusively by the GridPro element.\n *\n * @remarks\n *\n * Only supports Server-Side Row Model. Requires `@ag-grid-enterprise/server-side-row-model` setup and valid AG Grid Enterprise license.\n *\n * **Supported resources**: DATASERVER resources, and REQUEST_SERVER (req/rep) resources that declare `criteriaOnlyRequest`. A req/rep resource without it reports a `resource-type` error and no datasource is attached to the grid.\n *\n * **Custom Sort Indicators**: This datasource automatically applies custom sort indicators that are always visible (instead of only on hover). Sortable columns will show a subtle sort icon even when not sorted, and active sort indicators will be more prominent. The custom styling uses AG Grid's native icon font for consistency with the grid theme.\n *\n * @fires\n *\n * base-datasource-error - Fired when a datasource error is reported. detail: `BaseDatasourceErrorEventDetail`\n *\n * @fires\n *\n * datasource-error - Fired when a datasource error occurs (for grid integration). detail: `DatasourceErrorEventDetail`\n *\n * @fires\n *\n * base-datasource-connected - Fired when error state is cleared after connection succeeds\n *\n * @fires\n *\n * datasource-loading-finished - Fired when pending stream transactions are flushed with no row changes\n *\n * @fires\n *\n * datasource-no-data-available - Fired when loading finishes with an empty row set\n *\n * @fires\n *\n * datasource-data-changed - Fired when row data changes from applied stream transactions. detail: `DataChangedEventDetail`\n *\n * @fires\n *\n * cache-filter-config - Fired to persist filter configuration for the grid\n *\n * @fires\n *\n * refresh-server-side - Fired to request a server-side refresh. detail: `RefreshServerSideEventDetail`\n *\n * @fires\n *\n * set-server-side-datasource - Fired to attach or clear the server-side row model datasource\n *\n * @fires\n *\n * datasource-loading-started - Fired when a server-side load cycle starts\n *\n * @fires\n *\n * add-grid-css-class - Fired to add a CSS class on the grid host (e.g. server-side styling). detail: `GridCssClassEventDetail`\n *\n * @fires\n *\n * remove-grid-css-class - Fired to remove a CSS class from the grid host. detail: `GridCssClassEventDetail`\n *\n * @fires\n *\n * datasource-initialize - Fired to hand off server-side grid options. detail: `InitializeEventDetail`\n *\n * @fires\n *\n * datasource-init - Fired when the server-side grid model should initialize data\n *\n * @fires\n *\n * datasource-schema-updated - Fired when column metadata or defs are updated. detail: `SchemaUpdatedEventDetail`\n *\n * @fires\n *\n * datasource-filters-restored - Fired when persisted filters are reapplied\n *\n * @fires\n *\n * datasource-data-cleared - Fired when server-side row data is cleared. detail: `DataClearedEventDetail`\n *\n * @fires\n *\n * apply-server-side-transaction - Fired to apply a server-side row transaction\n *\n * @fires\n *\n * datasource-ready - Fired when the host grid is ready to start loading data\n *\n * @beta\n */\n",
20733
20733
  "excerptTokens": [
20734
20734
  {
20735
20735
  "kind": "Content",
@@ -21090,41 +21090,6 @@
21090
21090
  "isAbstract": false,
21091
21091
  "name": "loadMore"
21092
21092
  },
21093
- {
21094
- "kind": "Property",
21095
- "canonicalReference": "@genesislcap/grid-pro!GridProServerSideDatasource#pagingMode:member",
21096
- "docComment": "/**\n * The paging mode to use for data fetching.\n *\n * @remarks\n *\n * - \"viewBased\": Uses VIEW_NUMBER and NEXT_VIEW (1 by 1 increment) - \"offsetBased\": Uses OFFSET and NEXT_OFFSET (based on maxRows increment) - undefined: Auto-determines based on criteriaOnlyRequest availability\n */\n",
21097
- "excerptTokens": [
21098
- {
21099
- "kind": "Content",
21100
- "text": "pagingMode: "
21101
- },
21102
- {
21103
- "kind": "Reference",
21104
- "text": "PagingMode",
21105
- "canonicalReference": "@genesislcap/grid-pro!PagingMode:type"
21106
- },
21107
- {
21108
- "kind": "Content",
21109
- "text": " | undefined"
21110
- },
21111
- {
21112
- "kind": "Content",
21113
- "text": ";"
21114
- }
21115
- ],
21116
- "isReadonly": false,
21117
- "isOptional": false,
21118
- "releaseTag": "Beta",
21119
- "name": "pagingMode",
21120
- "propertyTypeTokenRange": {
21121
- "startIndex": 1,
21122
- "endIndex": 3
21123
- },
21124
- "isStatic": false,
21125
- "isProtected": false,
21126
- "isAbstract": false
21127
- },
21128
21093
  {
21129
21094
  "kind": "Property",
21130
21095
  "canonicalReference": "@genesislcap/grid-pro!GridProServerSideDatasource#pollingDatasource:member",
@@ -21370,36 +21335,6 @@
21370
21335
  "isStatic": false,
21371
21336
  "isProtected": false,
21372
21337
  "isAbstract": false
21373
- },
21374
- {
21375
- "kind": "Property",
21376
- "canonicalReference": "@genesislcap/grid-pro!GridProServerSideDatasource#zeroBasedViewNumber:member",
21377
- "docComment": "/**\n * The starting VIEW_NUMBER of the data to be fetched.\n *\n * @remarks\n *\n * The VIEW_NUMBER isincremented by the grid as the user scrolls or changes pages.\n */\n",
21378
- "excerptTokens": [
21379
- {
21380
- "kind": "Content",
21381
- "text": "zeroBasedViewNumber: "
21382
- },
21383
- {
21384
- "kind": "Content",
21385
- "text": "boolean"
21386
- },
21387
- {
21388
- "kind": "Content",
21389
- "text": ";"
21390
- }
21391
- ],
21392
- "isReadonly": false,
21393
- "isOptional": false,
21394
- "releaseTag": "Beta",
21395
- "name": "zeroBasedViewNumber",
21396
- "propertyTypeTokenRange": {
21397
- "startIndex": 1,
21398
- "endIndex": 2
21399
- },
21400
- "isStatic": false,
21401
- "isProtected": false,
21402
- "isAbstract": false
21403
21338
  }
21404
21339
  ],
21405
21340
  "extendsTokenRange": {
@@ -26406,32 +26341,6 @@
26406
26341
  "endIndex": 0
26407
26342
  }
26408
26343
  },
26409
- {
26410
- "kind": "TypeAlias",
26411
- "canonicalReference": "@genesislcap/grid-pro!PagingMode:type",
26412
- "docComment": "/**\n * Available paging modes for server-side datasources\n *\n * @remarks\n *\n * - This type defines the paging approach used for server-side data fetching - 'viewBased': Uses VIEW_NUMBER and NEXT_VIEW (1 by 1 increment) - 'offsetBased': Uses OFFSET and NEXT_OFFSET (based on maxRows increment)\n *\n * @public\n */\n",
26413
- "excerptTokens": [
26414
- {
26415
- "kind": "Content",
26416
- "text": "export type PagingMode = "
26417
- },
26418
- {
26419
- "kind": "Content",
26420
- "text": "'viewBased' | 'offsetBased'"
26421
- },
26422
- {
26423
- "kind": "Content",
26424
- "text": ";"
26425
- }
26426
- ],
26427
- "fileUrlPath": "src/datasource/datasource.types.ts",
26428
- "releaseTag": "Public",
26429
- "name": "PagingMode",
26430
- "typeTokenRange": {
26431
- "startIndex": 1,
26432
- "endIndex": 2
26433
- }
26434
- },
26435
26344
  {
26436
26345
  "kind": "Interface",
26437
26346
  "canonicalReference": "@genesislcap/grid-pro!RefreshServerSideEventDetail:interface",
@@ -28597,16 +28506,7 @@
28597
28506
  },
28598
28507
  {
28599
28508
  "kind": "Content",
28600
- "text": "[];\n maxRows?: number;\n maxView?: number;\n rowId?: string;\n zeroBasedViewNumber?: boolean;\n pagingMode?: "
28601
- },
28602
- {
28603
- "kind": "Reference",
28604
- "text": "PagingMode",
28605
- "canonicalReference": "@genesislcap/grid-pro!PagingMode:type"
28606
- },
28607
- {
28608
- "kind": "Content",
28609
- "text": " | undefined;\n criteriaOnlyRequest?: boolean;\n usePolling?: boolean;\n}"
28509
+ "text": "[];\n maxRows?: number;\n maxView?: number;\n rowId?: string;\n usePolling?: boolean;\n}"
28610
28510
  },
28611
28511
  {
28612
28512
  "kind": "Content",
@@ -28618,7 +28518,7 @@
28618
28518
  "name": "ServerSideDatasourceOptions",
28619
28519
  "typeTokenRange": {
28620
28520
  "startIndex": 1,
28621
- "endIndex": 34
28521
+ "endIndex": 32
28622
28522
  }
28623
28523
  },
28624
28524
  {
@@ -4980,6 +4980,10 @@ export declare enum GridProRendererTypes {
4980
4980
  * A Genesis Datasource element, for server-side | SSRM-compatible data fetching and used exclusively by the GridPro element.
4981
4981
  * @remarks Only supports Server-Side Row Model. Requires `@ag-grid-enterprise/server-side-row-model` setup and valid AG Grid Enterprise license.
4982
4982
  *
4983
+ * **Supported resources**: DATASERVER resources, and REQUEST_SERVER (req/rep) resources that declare
4984
+ * `criteriaOnlyRequest`. A req/rep resource without it reports a `resource-type` error and no
4985
+ * datasource is attached to the grid.
4986
+ *
4983
4987
  * **Custom Sort Indicators**: This datasource automatically applies custom sort indicators that are always visible (instead of only on hover).
4984
4988
  * Sortable columns will show a subtle sort icon even when not sorted, and active sort indicators will be more prominent.
4985
4989
  * The custom styling uses AG Grid's native icon font for consistency with the grid theme.
@@ -5009,24 +5013,11 @@ export declare enum GridProRendererTypes {
5009
5013
  export declare class GridProServerSideDatasource extends GridProServerSideDatasource_base {
5010
5014
  serializer: JSONSerializer;
5011
5015
  pollingDatasource: Datasource;
5012
- /**
5013
- * The starting VIEW_NUMBER of the data to be fetched.
5014
- * @remarks The VIEW_NUMBER isincremented by the grid as the user scrolls or changes pages.
5015
- */
5016
- zeroBasedViewNumber: boolean;
5017
5016
  /**
5018
5017
  * Enable live updates for the grid.
5019
5018
  * @remarks Only works with DATASERVER resources (StreamDatasource) right now.
5020
5019
  */
5021
5020
  liveUpdates: boolean;
5022
- /**
5023
- * The paging mode to use for data fetching.
5024
- * @remarks
5025
- * - "viewBased": Uses VIEW_NUMBER and NEXT_VIEW (1 by 1 increment)
5026
- * - "offsetBased": Uses OFFSET and NEXT_OFFSET (based on maxRows increment)
5027
- * - undefined: Auto-determines based on criteriaOnlyRequest availability
5028
- */
5029
- pagingMode: PagingMode | undefined;
5030
5021
  request: any;
5031
5022
  private indexes;
5032
5023
  private ssrmDatasource;
@@ -5057,6 +5048,21 @@ export declare class GridProServerSideDatasource extends GridProServerSideDataso
5057
5048
  destroy(): Promise<void>;
5058
5049
  restart(): Promise<void>;
5059
5050
  private clearRowData;
5051
+ /**
5052
+ * Checks whether the resolved resource can be served through the Server-Side Row Model.
5053
+ * @remarks
5054
+ * REQUEST_SERVER (req/rep) resources are only supported when the request reply declares
5055
+ * `criteriaOnlyRequest` (`CRITERIA_ONLY_REQUEST` in its metadata). SSRM drives a req/rep
5056
+ * resource purely through `DETAILS` - `CRITERIA_MATCH` for the grid filter model, `ORDER_BY`
5057
+ * for the sort model and `OFFSET`/`VIEW_NUMBER` for paging - and sends an empty `REQUEST`
5058
+ * payload. A request reply without `criteriaOnlyRequest` expects its inputs in `REQUEST`
5059
+ * instead, so filtering, sorting and paging would silently do nothing.
5060
+ *
5061
+ * DATASERVER resources are always supported.
5062
+ * @returns `true` when SSRM can be used, `false` after reporting a `resource-type` error.
5063
+ * @internal
5064
+ */
5065
+ private isSsrmSupportedForResource;
5060
5066
  private getResourceIndexes;
5061
5067
  private createReqRepRequest;
5062
5068
  /**
@@ -6431,15 +6437,6 @@ export declare enum OperationType {
6431
6437
  /** The CSS class to use for the options element's class in the dropdown */
6432
6438
  export declare const optionsClass = "options";
6433
6439
 
6434
- /**
6435
- * Available paging modes for server-side datasources
6436
- * @remarks - This type defines the paging approach used for server-side data fetching
6437
- * - 'viewBased': Uses VIEW_NUMBER and NEXT_VIEW (1 by 1 increment)
6438
- * - 'offsetBased': Uses OFFSET and NEXT_OFFSET (based on maxRows increment)
6439
- * @public
6440
- */
6441
- export declare type PagingMode = 'viewBased' | 'offsetBased';
6442
-
6443
6440
  /**
6444
6441
  * Event detail for requesting a server-side row model refresh.
6445
6442
  */
@@ -6643,9 +6640,6 @@ export declare type ServerSideDatasourceOptions = {
6643
6640
  maxRows?: number;
6644
6641
  maxView?: number;
6645
6642
  rowId?: string;
6646
- zeroBasedViewNumber?: boolean;
6647
- pagingMode?: PagingMode | undefined;
6648
- criteriaOnlyRequest?: boolean;
6649
6643
  usePolling?: boolean;
6650
6644
  };
6651
6645
 
package/dist/react.cjs CHANGED
@@ -121,46 +121,6 @@ const StringEditor = React.forwardRef(function StringEditor(props, ref) {
121
121
  return React.createElement(customElements.getName(StringEditorWC) ?? '%%prefix%%-string-editor', { ...rest, ref }, children);
122
122
  });
123
123
 
124
- const ActionRenderer = React.forwardRef(function ActionRenderer(props, ref) {
125
- const { children, ...rest } = props;
126
- return React.createElement(customElements.getName(ActionRendererWC) ?? '%%prefix%%-grid-pro-action-renderer', { ...rest, ref }, children);
127
- });
128
-
129
- const ActionsMenuRenderer = React.forwardRef(function ActionsMenuRenderer(props, ref) {
130
- const { children, ...rest } = props;
131
- return React.createElement(customElements.getName(ActionsMenuRendererWC) ?? '%%prefix%%-grid-pro-actions-menu-renderer', { ...rest, ref }, children);
132
- });
133
-
134
- const BooleanRenderer = React.forwardRef(function BooleanRenderer(props, ref) {
135
- const { children, ...rest } = props;
136
- return React.createElement(customElements.getName(BooleanRendererWC) ?? '%%prefix%%-boolean-renderer', { ...rest, ref }, children);
137
- });
138
-
139
- const EditableRenderer = React.forwardRef(function EditableRenderer(props, ref) {
140
- const { children, ...rest } = props;
141
- return React.createElement(customElements.getName(EditableRendererWC) ?? '%%prefix%%-editable-renderer', { ...rest, ref }, children);
142
- });
143
-
144
- const SelectRenderer = React.forwardRef(function SelectRenderer(props, ref) {
145
- const { children, ...rest } = props;
146
- return React.createElement(customElements.getName(SelectRendererWC) ?? '%%prefix%%-select-renderer', { ...rest, ref }, children);
147
- });
148
-
149
- const StatusPillRenderer = React.forwardRef(function StatusPillRenderer(props, ref) {
150
- const { children, ...rest } = props;
151
- return React.createElement(customElements.getName(StatusPillRendererWC) ?? '%%prefix%%-status-pill-renderer', { ...rest, ref }, children);
152
- });
153
-
154
- const AgTextFieldRenderer = React.forwardRef(function AgTextFieldRenderer(props, ref) {
155
- const { children, ...rest } = props;
156
- return React.createElement(customElements.getName(AgTextFieldRendererWC) ?? '%%prefix%%-grid-text-field-renderer', { ...rest, ref }, children);
157
- });
158
-
159
- const AgTextRenderer = React.forwardRef(function AgTextRenderer(props, ref) {
160
- const { children, ...rest } = props;
161
- return React.createElement(customElements.getName(AgTextRendererWC) ?? '%%prefix%%-grid-text-renderer', { ...rest, ref }, children);
162
- });
163
-
164
124
  const GridProColumn = React.forwardRef(function GridProColumn(props, ref) {
165
125
  const { children, ...rest } = props;
166
126
  return React.createElement(customElements.getName(GridProColumnWC) ?? 'grid-pro-column', { ...rest, ref }, children);
@@ -375,6 +335,46 @@ const GridProServerSideDatasource = React.forwardRef(function GridProServerSideD
375
335
  return React.createElement(customElements.getName(GridProServerSideDatasourceWC) ?? 'grid-pro-server-side-datasource', { ...rest, ref: _mergeRefs(_innerRef, ref) }, children);
376
336
  });
377
337
 
338
+ const ActionRenderer = React.forwardRef(function ActionRenderer(props, ref) {
339
+ const { children, ...rest } = props;
340
+ return React.createElement(customElements.getName(ActionRendererWC) ?? '%%prefix%%-grid-pro-action-renderer', { ...rest, ref }, children);
341
+ });
342
+
343
+ const ActionsMenuRenderer = React.forwardRef(function ActionsMenuRenderer(props, ref) {
344
+ const { children, ...rest } = props;
345
+ return React.createElement(customElements.getName(ActionsMenuRendererWC) ?? '%%prefix%%-grid-pro-actions-menu-renderer', { ...rest, ref }, children);
346
+ });
347
+
348
+ const BooleanRenderer = React.forwardRef(function BooleanRenderer(props, ref) {
349
+ const { children, ...rest } = props;
350
+ return React.createElement(customElements.getName(BooleanRendererWC) ?? '%%prefix%%-boolean-renderer', { ...rest, ref }, children);
351
+ });
352
+
353
+ const EditableRenderer = React.forwardRef(function EditableRenderer(props, ref) {
354
+ const { children, ...rest } = props;
355
+ return React.createElement(customElements.getName(EditableRendererWC) ?? '%%prefix%%-editable-renderer', { ...rest, ref }, children);
356
+ });
357
+
358
+ const SelectRenderer = React.forwardRef(function SelectRenderer(props, ref) {
359
+ const { children, ...rest } = props;
360
+ return React.createElement(customElements.getName(SelectRendererWC) ?? '%%prefix%%-select-renderer', { ...rest, ref }, children);
361
+ });
362
+
363
+ const StatusPillRenderer = React.forwardRef(function StatusPillRenderer(props, ref) {
364
+ const { children, ...rest } = props;
365
+ return React.createElement(customElements.getName(StatusPillRendererWC) ?? '%%prefix%%-status-pill-renderer', { ...rest, ref }, children);
366
+ });
367
+
368
+ const AgTextFieldRenderer = React.forwardRef(function AgTextFieldRenderer(props, ref) {
369
+ const { children, ...rest } = props;
370
+ return React.createElement(customElements.getName(AgTextFieldRendererWC) ?? '%%prefix%%-grid-text-field-renderer', { ...rest, ref }, children);
371
+ });
372
+
373
+ const AgTextRenderer = React.forwardRef(function AgTextRenderer(props, ref) {
374
+ const { children, ...rest } = props;
375
+ return React.createElement(customElements.getName(AgTextRendererWC) ?? '%%prefix%%-grid-text-renderer', { ...rest, ref }, children);
376
+ });
377
+
378
378
  const GridProGenesisDatasource = React.forwardRef(function GridProGenesisDatasource(props, ref) {
379
379
  const { onBaseDatasourceError, onDatasourceError, onBaseDatasourceConnected, onDatasourceLoadingFinished, onDatasourceNoDataAvailable, onDatasourceDataChanged, onDatasourceInitialize, onDatasourceDestroy, onDatasourceDataCleared, onDatasourceSchemaUpdated, onDatasourceFiltersRestored, onDatasourceDataLoaded, onDatasourceLoadingStarted, onDatasourceMoreDataAvailable, onDatasourceReady, onDatasourceInit, onMoreRowsChanged, onDatasourceSizeChanged, children, ...rest } = props;
380
380
  const _innerRef = React.useRef(null);
@@ -491,6 +491,9 @@ module.exports = {
491
491
  NumberEditor,
492
492
  SelectEditor,
493
493
  StringEditor,
494
+ GridProColumn,
495
+ GridProClientSideDatasource,
496
+ GridProServerSideDatasource,
494
497
  ActionRenderer,
495
498
  ActionsMenuRenderer,
496
499
  BooleanRenderer,
@@ -499,9 +502,6 @@ module.exports = {
499
502
  StatusPillRenderer,
500
503
  AgTextFieldRenderer,
501
504
  AgTextRenderer,
502
- GridProColumn,
503
- GridProClientSideDatasource,
504
- GridProServerSideDatasource,
505
505
  GridProGenesisDatasource,
506
506
  MulticolumnDropdown,
507
507
  };
package/dist/react.mjs CHANGED
@@ -119,46 +119,6 @@ export const StringEditor = React.forwardRef(function StringEditor(props, ref) {
119
119
  return React.createElement(customElements.getName(StringEditorWC) ?? '%%prefix%%-string-editor', { ...rest, ref }, children);
120
120
  });
121
121
 
122
- export const ActionRenderer = React.forwardRef(function ActionRenderer(props, ref) {
123
- const { children, ...rest } = props;
124
- return React.createElement(customElements.getName(ActionRendererWC) ?? '%%prefix%%-grid-pro-action-renderer', { ...rest, ref }, children);
125
- });
126
-
127
- export const ActionsMenuRenderer = React.forwardRef(function ActionsMenuRenderer(props, ref) {
128
- const { children, ...rest } = props;
129
- return React.createElement(customElements.getName(ActionsMenuRendererWC) ?? '%%prefix%%-grid-pro-actions-menu-renderer', { ...rest, ref }, children);
130
- });
131
-
132
- export const BooleanRenderer = React.forwardRef(function BooleanRenderer(props, ref) {
133
- const { children, ...rest } = props;
134
- return React.createElement(customElements.getName(BooleanRendererWC) ?? '%%prefix%%-boolean-renderer', { ...rest, ref }, children);
135
- });
136
-
137
- export const EditableRenderer = React.forwardRef(function EditableRenderer(props, ref) {
138
- const { children, ...rest } = props;
139
- return React.createElement(customElements.getName(EditableRendererWC) ?? '%%prefix%%-editable-renderer', { ...rest, ref }, children);
140
- });
141
-
142
- export const SelectRenderer = React.forwardRef(function SelectRenderer(props, ref) {
143
- const { children, ...rest } = props;
144
- return React.createElement(customElements.getName(SelectRendererWC) ?? '%%prefix%%-select-renderer', { ...rest, ref }, children);
145
- });
146
-
147
- export const StatusPillRenderer = React.forwardRef(function StatusPillRenderer(props, ref) {
148
- const { children, ...rest } = props;
149
- return React.createElement(customElements.getName(StatusPillRendererWC) ?? '%%prefix%%-status-pill-renderer', { ...rest, ref }, children);
150
- });
151
-
152
- export const AgTextFieldRenderer = React.forwardRef(function AgTextFieldRenderer(props, ref) {
153
- const { children, ...rest } = props;
154
- return React.createElement(customElements.getName(AgTextFieldRendererWC) ?? '%%prefix%%-grid-text-field-renderer', { ...rest, ref }, children);
155
- });
156
-
157
- export const AgTextRenderer = React.forwardRef(function AgTextRenderer(props, ref) {
158
- const { children, ...rest } = props;
159
- return React.createElement(customElements.getName(AgTextRendererWC) ?? '%%prefix%%-grid-text-renderer', { ...rest, ref }, children);
160
- });
161
-
162
122
  export const GridProColumn = React.forwardRef(function GridProColumn(props, ref) {
163
123
  const { children, ...rest } = props;
164
124
  return React.createElement(customElements.getName(GridProColumnWC) ?? 'grid-pro-column', { ...rest, ref }, children);
@@ -373,6 +333,46 @@ export const GridProServerSideDatasource = React.forwardRef(function GridProServ
373
333
  return React.createElement(customElements.getName(GridProServerSideDatasourceWC) ?? 'grid-pro-server-side-datasource', { ...rest, ref: _mergeRefs(_innerRef, ref) }, children);
374
334
  });
375
335
 
336
+ export const ActionRenderer = React.forwardRef(function ActionRenderer(props, ref) {
337
+ const { children, ...rest } = props;
338
+ return React.createElement(customElements.getName(ActionRendererWC) ?? '%%prefix%%-grid-pro-action-renderer', { ...rest, ref }, children);
339
+ });
340
+
341
+ export const ActionsMenuRenderer = React.forwardRef(function ActionsMenuRenderer(props, ref) {
342
+ const { children, ...rest } = props;
343
+ return React.createElement(customElements.getName(ActionsMenuRendererWC) ?? '%%prefix%%-grid-pro-actions-menu-renderer', { ...rest, ref }, children);
344
+ });
345
+
346
+ export const BooleanRenderer = React.forwardRef(function BooleanRenderer(props, ref) {
347
+ const { children, ...rest } = props;
348
+ return React.createElement(customElements.getName(BooleanRendererWC) ?? '%%prefix%%-boolean-renderer', { ...rest, ref }, children);
349
+ });
350
+
351
+ export const EditableRenderer = React.forwardRef(function EditableRenderer(props, ref) {
352
+ const { children, ...rest } = props;
353
+ return React.createElement(customElements.getName(EditableRendererWC) ?? '%%prefix%%-editable-renderer', { ...rest, ref }, children);
354
+ });
355
+
356
+ export const SelectRenderer = React.forwardRef(function SelectRenderer(props, ref) {
357
+ const { children, ...rest } = props;
358
+ return React.createElement(customElements.getName(SelectRendererWC) ?? '%%prefix%%-select-renderer', { ...rest, ref }, children);
359
+ });
360
+
361
+ export const StatusPillRenderer = React.forwardRef(function StatusPillRenderer(props, ref) {
362
+ const { children, ...rest } = props;
363
+ return React.createElement(customElements.getName(StatusPillRendererWC) ?? '%%prefix%%-status-pill-renderer', { ...rest, ref }, children);
364
+ });
365
+
366
+ export const AgTextFieldRenderer = React.forwardRef(function AgTextFieldRenderer(props, ref) {
367
+ const { children, ...rest } = props;
368
+ return React.createElement(customElements.getName(AgTextFieldRendererWC) ?? '%%prefix%%-grid-text-field-renderer', { ...rest, ref }, children);
369
+ });
370
+
371
+ export const AgTextRenderer = React.forwardRef(function AgTextRenderer(props, ref) {
372
+ const { children, ...rest } = props;
373
+ return React.createElement(customElements.getName(AgTextRendererWC) ?? '%%prefix%%-grid-text-renderer', { ...rest, ref }, children);
374
+ });
375
+
376
376
  export const GridProGenesisDatasource = React.forwardRef(function GridProGenesisDatasource(props, ref) {
377
377
  const { onBaseDatasourceError, onDatasourceError, onBaseDatasourceConnected, onDatasourceLoadingFinished, onDatasourceNoDataAvailable, onDatasourceDataChanged, onDatasourceInitialize, onDatasourceDestroy, onDatasourceDataCleared, onDatasourceSchemaUpdated, onDatasourceFiltersRestored, onDatasourceDataLoaded, onDatasourceLoadingStarted, onDatasourceMoreDataAvailable, onDatasourceReady, onDatasourceInit, onMoreRowsChanged, onDatasourceSizeChanged, children, ...rest } = props;
378
378
  const _innerRef = React.useRef(null);