@crystaldesign/grid 26.12.0-beta.9 → 26.13.0-beta.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.
@@ -154,8 +154,8 @@ var withToolbar = "with-toolbar-X2Mxk";
154
154
  var css_248z$6 = ".dragged-cell-9YMHK {\n display: flex;\n justify-content: space-between;\n}\n\n.dragged-cell-9YMHK td {\n display: block;\n flex-grow: 100;\n}\n\n.dragged-cell-9YMHK td:nth-child(1) {\n padding: 16px 0 !important;\n}\n\n.dragged-cell-9YMHK td:nth-child(1) {\n max-width: 42px;\n width: 29px;\n}\n\n.no-data-q8Gzm {\n display: flex;\n justify-content: center;\n align-items: center;\n height: calc(100% - 59px - 63px);\n flex-direction: column;\n gap: 15px;\n margin: auto;\n box-shadow: inset 0 0 3px 0px rgba(0, 0, 0, 0.1);\n border-radius: 5px;\n position: absolute;\n margin-top: 59px;\n width: 100%;\n}\n\n.with-toolbar-X2Mxk {\n height: calc(100% - 98px - 61px - 63px);\n margin-top: calc(59px + 98px);\n}\n";
155
155
  styleInject(css_248z$6);
156
156
 
157
- var _excluded$5 = ["prepareRow", "row", "provided", "renderSubComponent", "toggleSelected", "dragDropRows"],
158
- _excluded2 = ["key"],
157
+ var _excluded$6 = ["prepareRow", "row", "provided", "renderSubComponent", "toggleSelected", "dragDropRows"],
158
+ _excluded2$1 = ["key"],
159
159
  _excluded3 = ["key"],
160
160
  _excluded4 = ["row", "provided"];
161
161
  function ownKeys$k(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
@@ -347,11 +347,11 @@ var MyRow = /*#__PURE__*/forwardRef(function (_ref2, ref) {
347
347
  renderSubComponent = _ref2.renderSubComponent,
348
348
  toggleSelected = _ref2.toggleSelected,
349
349
  dragDropRows = _ref2.dragDropRows,
350
- others = _objectWithoutProperties(_ref2, _excluded$5);
350
+ others = _objectWithoutProperties(_ref2, _excluded$6);
351
351
  prepareRow(row);
352
352
  var _row$getRowProps = row.getRowProps(),
353
353
  key = _row$getRowProps.key,
354
- rowProps = _objectWithoutProperties(_row$getRowProps, _excluded2);
354
+ rowProps = _objectWithoutProperties(_row$getRowProps, _excluded2$1);
355
355
  var handleRowClick = function handleRowClick(e) {
356
356
  var _cell$parentElement;
357
357
  // Only toggle selection when clicking on the first column (selection column)
@@ -1028,13 +1028,13 @@ function ActionCell(_ref) {
1028
1028
  });
1029
1029
  }
1030
1030
 
1031
- var _excluded$4 = ["isLoading", "noData"];
1031
+ var _excluded$5 = ["isLoading", "noData"];
1032
1032
  function ownKeys$i(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
1033
1033
  function _objectSpread$i(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$i(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$i(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
1034
1034
  function Gallery(_ref) {
1035
1035
  var isLoading = _ref.isLoading;
1036
1036
  _ref.noData;
1037
- var props = _objectWithoutProperties(_ref, _excluded$4);
1037
+ var props = _objectWithoutProperties(_ref, _excluded$5);
1038
1038
  var GalleryNode;
1039
1039
  if (isLoading) {
1040
1040
  var _props$grid$cardSize, _props$grid;
@@ -1711,7 +1711,7 @@ var StyledCircularProgress = styled(CircularProgress)(function (_ref5) {
1711
1711
  };
1712
1712
  });
1713
1713
 
1714
- var _excluded$3 = ["className"];
1714
+ var _excluded$4 = ["className"];
1715
1715
  function ownKeys$g(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
1716
1716
  function _objectSpread$g(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$g(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$g(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
1717
1717
  function OverflowTooltip(_ref) {
@@ -1759,7 +1759,7 @@ function OverflowTooltip(_ref) {
1759
1759
  }
1760
1760
  var ExtendedTooltip = styled(function (_ref2) {
1761
1761
  var className = _ref2.className,
1762
- props = _objectWithoutProperties(_ref2, _excluded$3);
1762
+ props = _objectWithoutProperties(_ref2, _excluded$4);
1763
1763
  return /*#__PURE__*/jsx(Tooltip, _objectSpread$g(_objectSpread$g({}, props), {}, {
1764
1764
  classes: {
1765
1765
  popper: className
@@ -2341,13 +2341,13 @@ function MediaItemCell(props) {
2341
2341
  });
2342
2342
  }
2343
2343
 
2344
- var _excluded$2 = ["showArrows"];
2344
+ var _excluded$3 = ["showArrows"];
2345
2345
  function ownKeys$b(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
2346
2346
  function _objectSpread$b(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$b(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$b(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
2347
2347
  function SelectionCell (_ref) {
2348
2348
  var _props$value;
2349
2349
  var showArrows = _ref.showArrows,
2350
- props = _objectWithoutProperties(_ref, _excluded$2);
2350
+ props = _objectWithoutProperties(_ref, _excluded$3);
2351
2351
  var _useTranslation = useTranslation(),
2352
2352
  t = _useTranslation.t;
2353
2353
  var _useState = useState((_props$value = props.value) !== null && _props$value !== void 0 ? _props$value : ''),
@@ -2584,7 +2584,7 @@ function a11yProps(index) {
2584
2584
  };
2585
2585
  }
2586
2586
 
2587
- var _excluded$1 = ["onValueChange", "value"];
2587
+ var _excluded$2 = ["onValueChange", "value"];
2588
2588
  function ownKeys$9(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
2589
2589
  function _objectSpread$9(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$9(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$9(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
2590
2590
  function PriceCell (props) {
@@ -2677,7 +2677,7 @@ function PriceCell (props) {
2677
2677
  function ControlledNumberFormat(_ref2) {
2678
2678
  var onValueChange = _ref2.onValueChange,
2679
2679
  origValue = _ref2.value,
2680
- props = _objectWithoutProperties(_ref2, _excluded$1);
2680
+ props = _objectWithoutProperties(_ref2, _excluded$2);
2681
2681
  var _useState5 = useState(origValue),
2682
2682
  _useState6 = _slicedToArray(_useState5, 2),
2683
2683
  value = _useState6[0],
@@ -2802,10 +2802,10 @@ var copyButton = "copyButton-bYWpf";
2802
2802
  var css_248z$1 = ".textArea-wdcac {\n overflow-y: auto !important;\n}\n\n.textArea-wdcac {\n width: 100%;\n font-size: 10px;\n max-height: 150px;\n resize: none;\n}\n\n.copyButton-bYWpf {\n padding: 2px !important;\n}\n\n.copyButton-bYWpf {\n top: 2px;\n background-color: rgba(255, 255, 255, 0.8);\n}\n\n.copyButton-bYWpf:hover {\n background-color: rgba(230, 230, 230, 0.9);\n}\n";
2803
2803
  styleInject(css_248z$1);
2804
2804
 
2805
- var _excluded = ["enableCopyText"];
2805
+ var _excluded$1 = ["enableCopyText"];
2806
2806
  function HTMLTextCell(_ref) {
2807
2807
  var enableCopyText = _ref.enableCopyText,
2808
- props = _objectWithoutProperties(_ref, _excluded);
2808
+ props = _objectWithoutProperties(_ref, _excluded$1);
2809
2809
  var _useState = useState(false),
2810
2810
  _useState2 = _slicedToArray(_useState, 2),
2811
2811
  copySuccess = _useState2[0],
@@ -3007,6 +3007,9 @@ function getSortType(sortType, valueType) {
3007
3007
 
3008
3008
  function ownKeys$5(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
3009
3009
  function _objectSpread$5(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$5(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$5(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
3010
+
3011
+ /** One page as the server answers it; `total`, `totalIsLowerBound` and `next` are absent where an endpoint does not send them. */
3012
+
3010
3013
  function apiFetchData (_x) {
3011
3014
  return _ref2.apply(this, arguments);
3012
3015
  }
@@ -3029,7 +3032,7 @@ function _ref2() {
3029
3032
  if (!((_apiInterface$customS = apiInterface.customSettings) !== null && _apiInterface$customS !== void 0 && _apiInterface$customS.find(function (setting) {
3030
3033
  return setting.filter;
3031
3034
  }) && !((_serverSideFilteringS = serverSideFilteringState.filters) !== null && _serverSideFilteringS !== void 0 && _serverSideFilteringS.length) && !serverSideFilteringState.globalFilter)) {
3032
- _context2.next = 20;
3035
+ _context2.next = 22;
3033
3036
  break;
3034
3037
  }
3035
3038
  if (apiInterface.filterServerSide) {
@@ -3038,6 +3041,12 @@ function _ref2() {
3038
3041
  }
3039
3042
  throw new Error('If customSettings are used, apiInterface.filterServerSide must be enabled');
3040
3043
  case 7:
3044
+ if (!(apiInterface.paging === 'cursor')) {
3045
+ _context2.next = 9;
3046
+ break;
3047
+ }
3048
+ throw new Error('If customSettings with a filter are used, apiInterface.paging must not be cursor');
3049
+ case 9:
3041
3050
  skip = serverSideFilteringState.skip;
3042
3051
  limit = serverSideFilteringState.limit;
3043
3052
  result = {
@@ -3045,7 +3054,7 @@ function _ref2() {
3045
3054
  total: 0
3046
3055
  };
3047
3056
  _loop = /*#__PURE__*/_regeneratorRuntime.mark(function _loop() {
3048
- var _result$data;
3057
+ var _result$data, _response$total;
3049
3058
  var customSetting, filter, url, response;
3050
3059
  return _regeneratorRuntime.wrap(function _loop$(_context) {
3051
3060
  while (1) switch (_context.prev = _context.next) {
@@ -3074,7 +3083,7 @@ function _ref2() {
3074
3083
  case 8:
3075
3084
  response = _context.sent;
3076
3085
  (_result$data = result.data).push.apply(_result$data, _toConsumableArray(response.data));
3077
- result.total = result.total + response.total;
3086
+ result.total = result.total + ((_response$total = response.total) !== null && _response$total !== void 0 ? _response$total : 0);
3078
3087
  limit = limit - result.data.length > 0 ? limit - result.data.length : 0;
3079
3088
  skip = result.data.length > 0 ? 0 : skip; // the first call that returns data used up the skippable items
3080
3089
  case 13:
@@ -3084,43 +3093,43 @@ function _ref2() {
3084
3093
  }, _loop);
3085
3094
  });
3086
3095
  i = 0;
3087
- case 12:
3096
+ case 14:
3088
3097
  if (!(i < apiInterface.customSettings.length)) {
3089
- _context2.next = 19;
3098
+ _context2.next = 21;
3090
3099
  break;
3091
3100
  }
3092
- return _context2.delegateYield(_loop(), "t0", 14);
3093
- case 14:
3101
+ return _context2.delegateYield(_loop(), "t0", 16);
3102
+ case 16:
3094
3103
  if (!_context2.t0) {
3095
- _context2.next = 16;
3104
+ _context2.next = 18;
3096
3105
  break;
3097
3106
  }
3098
- return _context2.abrupt("continue", 16);
3099
- case 16:
3107
+ return _context2.abrupt("continue", 18);
3108
+ case 18:
3100
3109
  i++;
3101
- _context2.next = 12;
3110
+ _context2.next = 14;
3102
3111
  break;
3103
- case 19:
3112
+ case 21:
3104
3113
  return _context2.abrupt("return", result);
3105
- case 20:
3114
+ case 22:
3106
3115
  if (!(requestMethod === 'POST')) {
3107
- _context2.next = 25;
3116
+ _context2.next = 27;
3108
3117
  break;
3109
3118
  }
3110
3119
  _url = new URL(apiInterface.url);
3111
- params = getUrlParams(apiInterface, columns, serverSideFilteringState.skip, serverSideFilteringState.limit, serverSideFilteringState.sortBy, serverSideFilteringState.filters, serverSideFilteringState.globalFilter, apiInterface.customSettings);
3120
+ params = getUrlParams(apiInterface, columns, serverSideFilteringState.skip, serverSideFilteringState.limit, serverSideFilteringState.sortBy, serverSideFilteringState.filters, serverSideFilteringState.globalFilter, apiInterface.customSettings, serverSideFilteringState.after);
3112
3121
  body = buildQueryBody(params);
3113
3122
  return _context2.abrupt("return", fetchData(abortSignal, _url.toString(), apiInterface.authToken, {
3114
3123
  method: 'POST',
3115
3124
  body: body
3116
3125
  }));
3117
- case 25:
3126
+ case 27:
3118
3127
  url = new URL(apiInterface.url);
3119
- getUrlParams(apiInterface, columns, serverSideFilteringState.skip, serverSideFilteringState.limit, serverSideFilteringState.sortBy, serverSideFilteringState.filters, serverSideFilteringState.globalFilter, apiInterface.customSettings).forEach(function (value, key) {
3128
+ getUrlParams(apiInterface, columns, serverSideFilteringState.skip, serverSideFilteringState.limit, serverSideFilteringState.sortBy, serverSideFilteringState.filters, serverSideFilteringState.globalFilter, apiInterface.customSettings, serverSideFilteringState.after).forEach(function (value, key) {
3120
3129
  url.searchParams.append(key, value);
3121
3130
  });
3122
3131
  return _context2.abrupt("return", fetchData(abortSignal, url.toString(), apiInterface.authToken));
3123
- case 28:
3132
+ case 30:
3124
3133
  case "end":
3125
3134
  return _context2.stop();
3126
3135
  }
@@ -3218,7 +3227,7 @@ function _fetchData() {
3218
3227
  }));
3219
3228
  return _fetchData.apply(this, arguments);
3220
3229
  }
3221
- function getUrlParams(apiInterface, columns, skip, limit, sortBy, filters, globalFilter, customSettings) {
3230
+ function getUrlParams(apiInterface, columns, skip, limit, sortBy, filters, globalFilter, customSettings, after) {
3222
3231
  var _apiInterface$prefilt;
3223
3232
  var processedColumns = _toConsumableArray(getLeafColumns(columns));
3224
3233
  var processedFilters = _toConsumableArray(filters || []);
@@ -3257,7 +3266,12 @@ function getUrlParams(apiInterface, columns, skip, limit, sortBy, filters, globa
3257
3266
  });
3258
3267
  var parms = new URLSearchParams();
3259
3268
  parms.append('limit', limit.toString());
3260
- parms.append('skip', skip.toString());
3269
+ if (apiInterface.paging === 'cursor') {
3270
+ // a token-paged list has no offsets: the first page sends no token, every later page the `next` of the one before
3271
+ if (after) parms.append('after', after);
3272
+ } else {
3273
+ parms.append('skip', skip.toString());
3274
+ }
3261
3275
  if (processedColumns.length > 0) {
3262
3276
  parms.append('fields', parseFields(processedColumns));
3263
3277
  }
@@ -3410,9 +3424,38 @@ function getLeafColumns(columns) {
3410
3424
  return cl;
3411
3425
  }
3412
3426
 
3427
+ var _excluded = ["after"],
3428
+ _excluded2 = ["after"];
3413
3429
  function ownKeys$4(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
3414
3430
  function _objectSpread$4(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$4(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$4(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
3415
3431
  var LOG = getLogger('Framework', 'Grid');
3432
+ /** Zero-based page of a filter state; the token history of cursor paging is kept per page. */
3433
+ function pageIndexOf(filter) {
3434
+ return filter.limit > 0 ? Math.floor(filter.skip / filter.limit) : 0;
3435
+ }
3436
+
3437
+ /**
3438
+ * The list a request reads: the request without its page (`skip`, `after`) and its projection (`fields`). A token only
3439
+ * continues the list it came from. Consumers rebuild the interface and its columns on every refresh, so an equal key is
3440
+ * the same list, whatever the object identities.
3441
+ */
3442
+ function listKeyOf(apiInterface, columns, filter) {
3443
+ var params = getUrlParams(apiInterface, columns, 0, filter.limit, filter.sortBy, filter.filters, filter.globalFilter, apiInterface.customSettings);
3444
+ ['skip', 'after', 'fields'].forEach(function (key) {
3445
+ return params["delete"](key);
3446
+ });
3447
+ return JSON.stringify([apiInterface.paging, apiInterface.filterServerSide, apiInterface.requestMethod, apiInterface.url, params.toString()]);
3448
+ }
3449
+
3450
+ /** Whether two filter states ask for the same query and page; `after` is derived from them and not compared. */
3451
+ function sameRequest(previous, filter) {
3452
+ if (!previous) return false;
3453
+ previous.after;
3454
+ var previousRequest = _objectWithoutProperties(previous, _excluded);
3455
+ filter.after;
3456
+ var request = _objectWithoutProperties(filter, _excluded2);
3457
+ return deepEqual(previousRequest, request);
3458
+ }
3416
3459
  function useApiInterface(_ref) {
3417
3460
  var apiInterface = _ref.apiInterface,
3418
3461
  initialFilterState = _ref.initialFilterState,
@@ -3445,46 +3488,72 @@ function useApiInterface(_ref) {
3445
3488
  jwt = _useDivaCore$state.jwt,
3446
3489
  organization = _useDivaCore$state.organization;
3447
3490
  var abortControlerRef = useRef();
3491
+ // cursor paging: the token every visited page was requested with, by page index (the first page has none)
3492
+ var pageTokensRef = useRef([undefined]);
3493
+ // cursor paging: the list the token history belongs to, as {@link listKeyOf} of the last request
3494
+ var listKeyRef = useRef();
3448
3495
  var fetchData = useCallback(/*#__PURE__*/function () {
3449
3496
  var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(filter, force) {
3450
- var _state$serverSideFilt, _state$serverSideFilt2;
3451
- var newServerSideFilterState, _abortControlerRef$cu, result;
3497
+ var previous, newServerSideFilterState, queryChanged, page, _abortControlerRef$cu, _result$totalIsLowerB, _result$total, result, _page;
3452
3498
  return _regeneratorRuntime.wrap(function _callee$(_context) {
3453
3499
  while (1) switch (_context.prev = _context.next) {
3454
3500
  case 0:
3455
- if (!(!force && deepEqual(state.serverSideFilterState, filter))) {
3501
+ if (!(!force && sameRequest(state.serverSideFilterState, filter))) {
3456
3502
  _context.next = 2;
3457
3503
  break;
3458
3504
  }
3459
3505
  return _context.abrupt("return");
3460
3506
  case 2:
3507
+ previous = state.serverSideFilterState;
3461
3508
  newServerSideFilterState = _objectSpread$4({}, filter);
3462
- if (filter.globalFilter != ((_state$serverSideFilt = state.serverSideFilterState) === null || _state$serverSideFilt === void 0 ? void 0 : _state$serverSideFilt.globalFilter) || !deepEqual(filter.filters, (_state$serverSideFilt2 = state.serverSideFilterState) === null || _state$serverSideFilt2 === void 0 ? void 0 : _state$serverSideFilt2.filters)) {
3509
+ queryChanged = filter.globalFilter != (previous === null || previous === void 0 ? void 0 : previous.globalFilter) || !deepEqual(filter.filters, previous === null || previous === void 0 ? void 0 : previous.filters);
3510
+ if (queryChanged) {
3463
3511
  //if filters are updated, reset to page 0
3464
3512
  newServerSideFilterState.skip = 0;
3465
3513
  }
3514
+ if (apiInterface.paging === 'cursor') {
3515
+ // the tokens belong to one query, sort and page size: a change of any of them restarts the history at the first page
3516
+ if (queryChanged || filter.limit !== (previous === null || previous === void 0 ? void 0 : previous.limit) || !deepEqual(filter.sortBy, previous === null || previous === void 0 ? void 0 : previous.sortBy)) {
3517
+ pageTokensRef.current = [undefined];
3518
+ newServerSideFilterState.skip = 0;
3519
+ }
3520
+ // a page the history holds no token for (a jump past the visited pages) falls back to the last visited one
3521
+ page = Math.min(pageIndexOf(newServerSideFilterState), pageTokensRef.current.length - 1);
3522
+ newServerSideFilterState.skip = page * newServerSideFilterState.limit;
3523
+ newServerSideFilterState.after = pageTokensRef.current[page];
3524
+ listKeyRef.current = listKeyOf(apiInterface, columns, newServerSideFilterState);
3525
+ }
3466
3526
  dispatch({
3467
3527
  type: 'startLoading',
3468
3528
  data: newServerSideFilterState
3469
3529
  });
3470
- _context.prev = 5;
3530
+ _context.prev = 8;
3471
3531
  //abort previous request
3472
3532
  (_abortControlerRef$cu = abortControlerRef.current) === null || _abortControlerRef$cu === void 0 || _abortControlerRef$cu.abort('Request cancelled');
3473
3533
  abortControlerRef.current = new AbortController();
3474
- _context.next = 10;
3534
+ _context.next = 13;
3475
3535
  return apiFetchData({
3476
3536
  abortSignal: abortControlerRef.current.signal,
3477
3537
  apiInterface: apiInterface,
3478
3538
  serverSideFilteringState: newServerSideFilterState,
3479
3539
  columns: columns
3480
3540
  });
3481
- case 10:
3541
+ case 13:
3482
3542
  result = _context.sent;
3543
+ if (apiInterface.paging === 'cursor') {
3544
+ // the page after this one is reached by the token the server returned; history beyond it is stale, and a
3545
+ // page without a token is the last one, so the history ends with it
3546
+ pageTokensRef.current = [].concat(_toConsumableArray(pageTokensRef.current.slice(0, pageIndexOf(newServerSideFilterState) + 1)), _toConsumableArray(result.next ? [result.next] : []));
3547
+ }
3548
+ // only the first page of a token-paged list counts; a first page without the flag is an exact count
3549
+ _page = newServerSideFilterState.after ? result : _objectSpread$4(_objectSpread$4({}, result), {}, {
3550
+ totalIsLowerBound: (_result$totalIsLowerB = result.totalIsLowerBound) !== null && _result$totalIsLowerB !== void 0 ? _result$totalIsLowerB : false
3551
+ });
3483
3552
  dispatch({
3484
3553
  type: 'finishedLoading',
3485
- data: result
3554
+ data: _page
3486
3555
  });
3487
- onLoaded === null || onLoaded === void 0 || onLoaded(result.data, result.total);
3556
+ onLoaded === null || onLoaded === void 0 || onLoaded(result.data, (_result$total = result.total) !== null && _result$total !== void 0 ? _result$total : state.total);
3488
3557
  //if there is already data, then a new data record should not be created automatically if the result is empty (e.g. when filtering)
3489
3558
  if (result.data.length > 0 || state.data.length > 0) {
3490
3559
  setDataExists(true);
@@ -3499,12 +3568,12 @@ function useApiInterface(_ref) {
3499
3568
  } else {
3500
3569
  setDataExists(false);
3501
3570
  }
3502
- onUpdate === null || onUpdate === void 0 || onUpdate(result.data, getUrlParams(apiInterface, columns, newServerSideFilterState.skip, newServerSideFilterState.limit, newServerSideFilterState.sortBy, newServerSideFilterState.filters, newServerSideFilterState.globalFilter, apiInterface.customSettings));
3503
- _context.next = 20;
3571
+ onUpdate === null || onUpdate === void 0 || onUpdate(result.data, getUrlParams(apiInterface, columns, newServerSideFilterState.skip, newServerSideFilterState.limit, newServerSideFilterState.sortBy, newServerSideFilterState.filters, newServerSideFilterState.globalFilter, apiInterface.customSettings, newServerSideFilterState.after));
3572
+ _context.next = 25;
3504
3573
  break;
3505
- case 17:
3506
- _context.prev = 17;
3507
- _context.t0 = _context["catch"](5);
3574
+ case 22:
3575
+ _context.prev = 22;
3576
+ _context.t0 = _context["catch"](8);
3508
3577
  if (_context.t0 !== 'Request cancelled') {
3509
3578
  LOG.error(new DivaError(_context.t0 === null || _context.t0 === void 0 ? void 0 : _context.t0.message, {
3510
3579
  code: 'GRID_0001',
@@ -3515,11 +3584,11 @@ function useApiInterface(_ref) {
3515
3584
  data: _context.t0 === null || _context.t0 === void 0 ? void 0 : _context.t0.message
3516
3585
  });
3517
3586
  }
3518
- case 20:
3587
+ case 25:
3519
3588
  case "end":
3520
3589
  return _context.stop();
3521
3590
  }
3522
- }, _callee, null, [[5, 17]]);
3591
+ }, _callee, null, [[8, 22]]);
3523
3592
  }));
3524
3593
  return function (_x, _x2) {
3525
3594
  return _ref2.apply(this, arguments);
@@ -3689,15 +3758,30 @@ function useApiInterface(_ref) {
3689
3758
  useEffect(function () {
3690
3759
  //if apiInterface changes and data is fetched from url reset the state
3691
3760
  if (apiInterface.url) {
3692
- var _state$serverSideFilt3, _initialFilterState$l2, _initialFilterState$s3, _initialFilterState$s4;
3761
+ var _state$serverSideFilt, _initialFilterState$l2, _initialFilterState$s3, _initialFilterState$s4;
3693
3762
  setInitialized(true);
3694
- fetchData((_state$serverSideFilt3 = state.serverSideFilterState) !== null && _state$serverSideFilt3 !== void 0 ? _state$serverSideFilt3 : {
3763
+ var filter = (_state$serverSideFilt = state.serverSideFilterState) !== null && _state$serverSideFilt !== void 0 ? _state$serverSideFilt : {
3695
3764
  limit: (_initialFilterState$l2 = initialFilterState.limit) !== null && _initialFilterState$l2 !== void 0 ? _initialFilterState$l2 : 20,
3696
3765
  skip: (_initialFilterState$s3 = initialFilterState.skip) !== null && _initialFilterState$s3 !== void 0 ? _initialFilterState$s3 : 0,
3697
3766
  sortBy: (_initialFilterState$s4 = initialFilterState.sortBy) !== null && _initialFilterState$s4 !== void 0 ? _initialFilterState$s4 : [],
3698
3767
  globalFilter: undefined,
3699
3768
  filters: []
3700
- }, true);
3769
+ };
3770
+ if (apiInterface.paging === 'cursor') {
3771
+ if (listKeyRef.current === listKeyOf(apiInterface, columns, filter)) {
3772
+ // a refresh (e.g. after a row action): the shown page is loaded again with its token
3773
+ fetchData(filter, true);
3774
+ } else {
3775
+ // a new list (url, prefilter, custom params, the columns the filters run on): its tokens belong to the old
3776
+ // one, so the list restarts at the first page
3777
+ pageTokensRef.current = [undefined];
3778
+ fetchData(_objectSpread$4(_objectSpread$4({}, filter), {}, {
3779
+ skip: 0
3780
+ }), true);
3781
+ }
3782
+ } else {
3783
+ fetchData(filter, true);
3784
+ }
3701
3785
  //else set the state to the new data from the apiInterface
3702
3786
  } else if (apiInterface.loading) {
3703
3787
  dispatch({
@@ -3732,6 +3816,11 @@ function useApiInterface(_ref) {
3732
3816
  data: state.data,
3733
3817
  loading: state.loading,
3734
3818
  total: state.total,
3819
+ totalIsLowerBound: state.totalIsLowerBound,
3820
+ next: state.next,
3821
+ // the page the loaded (or loading) state belongs to: after a restart or a fallback it differs from the page the
3822
+ // table asked for, and the table's page index follows it
3823
+ loadedPage: state.serverSideFilterState ? pageIndexOf(state.serverSideFilterState) : undefined,
3735
3824
  error: state.error,
3736
3825
  custom: state.custom,
3737
3826
  //if no url is provided fetchData is a no-op
@@ -3744,7 +3833,7 @@ function useApiInterface(_ref) {
3744
3833
  };
3745
3834
  }
3746
3835
  function reducer(state, action) {
3747
- var _action$data;
3836
+ var _action$data, _action$data$total, _action$data$totalIsL;
3748
3837
  var newState = state;
3749
3838
  switch (action.type) {
3750
3839
  case 'startLoading':
@@ -3763,7 +3852,10 @@ function reducer(state, action) {
3763
3852
  newState.loading = false;
3764
3853
  newState.data = action.data.data;
3765
3854
  newState.custom = action.data.custom;
3766
- newState.total = action.data.total;
3855
+ // later pages of a token-paged list carry no totals: the values of the first page stay
3856
+ newState.total = (_action$data$total = action.data.total) !== null && _action$data$total !== void 0 ? _action$data$total : state.total;
3857
+ newState.totalIsLowerBound = (_action$data$totalIsL = action.data.totalIsLowerBound) !== null && _action$data$totalIsL !== void 0 ? _action$data$totalIsL : state.totalIsLowerBound;
3858
+ newState.next = action.data.next;
3767
3859
  break;
3768
3860
  case 'updateData':
3769
3861
  newState = _objectSpread$4(_objectSpread$4({}, state), {}, {
@@ -4079,6 +4171,9 @@ function Grid(_ref) {
4079
4171
  }),
4080
4172
  data = _useApiInterface.data,
4081
4173
  total = _useApiInterface.total,
4174
+ totalIsLowerBound = _useApiInterface.totalIsLowerBound,
4175
+ next = _useApiInterface.next,
4176
+ loadedPage = _useApiInterface.loadedPage,
4082
4177
  isLoading = _useApiInterface.loading,
4083
4178
  custom = _useApiInterface.custom,
4084
4179
  fetchData = _useApiInterface.fetchData,
@@ -4089,6 +4184,7 @@ function Grid(_ref) {
4089
4184
  onInternalDelete = _useApiInterface.onInternalDelete,
4090
4185
  error = _useApiInterface.error;
4091
4186
  var debouncedFetchData = useAsyncDebounce(fetchData !== null && fetchData !== void 0 ? fetchData : function () {}, 500);
4187
+ var cursorPaging = options.apiInterface.paging === 'cursor';
4092
4188
  var views = parsedOptions.views || ['Table'];
4093
4189
  var _useState3 = useState(parsedOptions.defaultView || (views && views.length > 0 ? views[0] : undefined)),
4094
4190
  _useState4 = _slicedToArray(_useState3, 2),
@@ -4253,6 +4349,11 @@ function Grid(_ref) {
4253
4349
  filters: filters
4254
4350
  });
4255
4351
  }, [pageIndex, pageSize, globalFilter, filters, sortBy]);
4352
+ useEffect(function () {
4353
+ // cursor paging: the hook restarts at the first page on a query, sort or page size change and falls back to the
4354
+ // last visited page for a jump it has no token for; the table's page index follows, so the rows and the label agree
4355
+ if (cursorPaging && loadedPage !== undefined && loadedPage !== pageIndex) gotoPage(loadedPage);
4356
+ }, [loadedPage]);
4256
4357
  useEffect(function () {
4257
4358
  if (options.selectable && selected && !isLoading) {
4258
4359
  // Sync the selection state with the external selected prop
@@ -4265,7 +4366,8 @@ function Grid(_ref) {
4265
4366
  }
4266
4367
  }, [selected, options.selectable, flatRows, isLoading]);
4267
4368
  useEffect(function () {
4268
- if (options.apiInterface.filterServerSide && pageIndex > total / pageSize) {
4369
+ // a token-paged list has no page count to check against: its total may be a lower bound
4370
+ if (!cursorPaging && options.apiInterface.filterServerSide && pageIndex > total / pageSize) {
4269
4371
  gotoPage(0);
4270
4372
  }
4271
4373
  }, [total, pageSize]);
@@ -4327,6 +4429,13 @@ function Grid(_ref) {
4327
4429
  var handleChangePage = function handleChangePage(event, newPage) {
4328
4430
  gotoPage(newPage);
4329
4431
  };
4432
+
4433
+ // cursor paging: the rows of the shown page and the total, which is a lower bound above the server's counting limit
4434
+ var cursorRangeLabel = cursorPaging ? t('grid.pagination.displayedrows', {
4435
+ from: rows.length ? pageIndex * pageSize + 1 : 0,
4436
+ to: pageIndex * pageSize + rows.length,
4437
+ count: "".concat(total.toLocaleString()).concat(totalIsLowerBound ? '+' : '')
4438
+ }) : undefined;
4330
4439
  var isGlobalFiltering = useMemo(function () {
4331
4440
  return parsedOptions.columns.some(function (c) {
4332
4441
  return c.disableGlobalFilter == false;
@@ -4423,12 +4532,25 @@ function Grid(_ref) {
4423
4532
  lang: "en",
4424
4533
  rowsPerPageOptions: (_parsedOptions$pagina3 = parsedOptions.pagination.pageOptions) !== null && _parsedOptions$pagina3 !== void 0 ? _parsedOptions$pagina3 : [5, 10, 20, 50, 100],
4425
4534
  component: "div",
4426
- count: options.apiInterface.filterServerSide ? total : rows.length,
4535
+ count: cursorPaging ? -1 : options.apiInterface.filterServerSide ? total : rows.length,
4427
4536
  rowsPerPage: pageSize,
4428
4537
  page: pageIndex,
4429
4538
  onPageChange: handleChangePage,
4430
4539
  onRowsPerPageChange: handleChangeRowsPerPage,
4431
- labelRowsPerPage: shortPaging ? /*#__PURE__*/jsx(Fragment, {}) : undefined
4540
+ labelRowsPerPage: shortPaging ? /*#__PURE__*/jsx(Fragment, {}) : cursorPaging ? t('grid.pagination.rowsperpage') : undefined,
4541
+ showFirstButton: cursorPaging,
4542
+ labelDisplayedRows: cursorPaging ? function () {
4543
+ return cursorRangeLabel;
4544
+ } : undefined
4545
+ // "next" waits until the shown page is the requested one: a second click before that would ask for a page without a token
4546
+ ,
4547
+ slotProps: cursorPaging ? {
4548
+ actions: {
4549
+ nextButton: {
4550
+ disabled: !next || isLoading || loadedPage !== pageIndex
4551
+ }
4552
+ }
4553
+ } : undefined
4432
4554
  }), /*#__PURE__*/jsx(Footerbar, {
4433
4555
  actions: footerActions === null || footerActions === void 0 ? void 0 : footerActions.map(function (a) {
4434
4556
  return {
@@ -114,6 +114,15 @@ export interface ApiInterface<D extends Object> {
114
114
  requestMethod?: 'GET' | 'POST';
115
115
  filterServerSide?: boolean;
116
116
  useSearchFilter?: true | false | 'force';
117
+ /**
118
+ * How a server-side list pages. `offset` (default) sends `skip`/`limit` and lets the pager jump to any page.
119
+ * `cursor` sends the `next` token of the previous page as `after` instead of `skip`: the pager offers first /
120
+ * previous / next only, `total` may be a lower bound (`totalIsLowerBound` in the response) and a change of the
121
+ * filters, the sort, the page size or the interface's query (url, prefilter, custom params, the columns the filters
122
+ * run on) restarts at the first page; an interface rebuilt with the same query loads the shown page again. Requires
123
+ * `filterServerSide`, and does not combine with `customSettings` that carry a `filter`: those are merged by offset.
124
+ */
125
+ paging?: 'offset' | 'cursor';
117
126
  prefilterRaw?: RawFilter[];
118
127
  prefilter?: {
119
128
  id?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"GirdOptions.d.ts","sourceRoot":"","sources":["../../../../src/GirdOptions.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GirdOptions.d.ts","sourceRoot":"","sources":["../../../../src/GirdOptions.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Grid.d.ts","sourceRoot":"","sources":["../../../../src/Grid.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Grid.d.ts","sourceRoot":"","sources":["../../../../src/Grid.tsx"],"names":[],"mappings":"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"}
@@ -1,15 +1,21 @@
1
1
  import { ApiInterface, Column } from '../../GirdOptions';
2
2
  import { ServerSideFilteringData } from '.';
3
3
  import { CustomSetting } from '../..';
4
+ /** One page as the server answers it; `total`, `totalIsLowerBound` and `next` are absent where an endpoint does not send them. */
5
+ export interface ApiPage {
6
+ data: any[];
7
+ total?: number;
8
+ /** Whether `total` is only a lower bound (a token-paged list above its counting limit). */
9
+ totalIsLowerBound?: boolean;
10
+ /** Token of the page after this one in a token-paged list; absent when the list ended. */
11
+ next?: string;
12
+ }
4
13
  export default function <D extends Object>({ apiInterface, columns, serverSideFilteringState, abortSignal, }: {
5
14
  apiInterface: ApiInterface<D>;
6
15
  columns: Column<any>[];
7
16
  serverSideFilteringState: ServerSideFilteringData;
8
17
  abortSignal: AbortSignal;
9
- }): Promise<{
10
- data: any[];
11
- total: number;
12
- }>;
18
+ }): Promise<ApiPage>;
13
19
  export declare function getUrlParams(apiInterface: ApiInterface<any>, columns: Column<any>[], skip: number, limit: number, sortBy: {
14
20
  id: string;
15
21
  desc?: boolean;
@@ -17,5 +23,5 @@ export declare function getUrlParams(apiInterface: ApiInterface<any>, columns: C
17
23
  id: string;
18
24
  value: any;
19
25
  op?: string;
20
- }[], globalFilter?: string, customSettings?: CustomSetting[]): URLSearchParams;
26
+ }[], globalFilter?: string, customSettings?: CustomSetting[], after?: string): URLSearchParams;
21
27
  //# sourceMappingURL=apiFetchData.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"apiFetchData.d.ts","sourceRoot":"","sources":["../../../../../../src/hooks/useApiInterface/apiFetchData.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,EAAa,MAAM,mBAAmB,CAAC;AACpE,OAAO,EAAE,uBAAuB,EAAE,MAAM,GAAG,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAEtC,yBAA+B,CAAC,SAAS,MAAM,EAAE,EAC/C,YAAY,EACZ,OAAO,EACP,wBAAwB,EACxB,WAAW,GACZ,EAAE;IACD,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IAC9B,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;IACvB,wBAAwB,EAAE,uBAAuB,CAAC;IAClD,WAAW,EAAE,WAAW,CAAC;CAC1B;UAoBiB,GAAG,EAAE;;GAqDtB;AA4DD,wBAAgB,YAAY,CAC1B,YAAY,EAAE,YAAY,CAAC,GAAG,CAAC,EAC/B,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,EACtB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,MAAM,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,EAAE,EACxC,OAAO,CAAC,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,GAAG,CAAC;IAAC,EAAE,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,EACnD,YAAY,CAAC,EAAE,MAAM,EACrB,cAAc,CAAC,EAAE,aAAa,EAAE,mBAuDjC"}
1
+ {"version":3,"file":"apiFetchData.d.ts","sourceRoot":"","sources":["../../../../../../src/hooks/useApiInterface/apiFetchData.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,EAAa,MAAM,mBAAmB,CAAC;AACpE,OAAO,EAAE,uBAAuB,EAAE,MAAM,GAAG,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAEtC,kIAAkI;AAClI,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2FAA2F;IAC3F,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,0FAA0F;IAC1F,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,yBAA+B,CAAC,SAAS,MAAM,EAAE,EAC/C,YAAY,EACZ,OAAO,EACP,wBAAwB,EACxB,WAAW,GACZ,EAAE;IACD,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IAC9B,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;IACvB,wBAAwB,EAAE,uBAAuB,CAAC;IAClD,WAAW,EAAE,WAAW,CAAC;CAC1B,GAAG,OAAO,CAAC,OAAO,CAAC,CA+EnB;AA4DD,wBAAgB,YAAY,CAC1B,YAAY,EAAE,YAAY,CAAC,GAAG,CAAC,EAC/B,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,EACtB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,MAAM,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,EAAE,EACxC,OAAO,CAAC,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,GAAG,CAAC;IAAC,EAAE,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,EACnD,YAAY,CAAC,EAAE,MAAM,EACrB,cAAc,CAAC,EAAE,aAAa,EAAE,EAChC,KAAK,CAAC,EAAE,MAAM,mBA4Df"}
@@ -29,11 +29,16 @@ export interface ServerSideFilteringData {
29
29
  value: any;
30
30
  }[];
31
31
  globalFilter?: string;
32
+ /** Token the page is requested with in cursor paging (`apiInterface.paging`); the hook fills it from its page history. */
33
+ after?: string;
32
34
  }
33
35
  export default function useApiInterface<D extends Object>({ apiInterface, initialFilterState, columns, onNew, onEdit, onDelete, onUpdate, onLoaded, forceNewData, }: UseApiInterfacePops<D>): {
34
36
  data: D[];
35
37
  loading: boolean;
36
38
  total: number;
39
+ totalIsLowerBound: boolean | undefined;
40
+ next: string | undefined;
41
+ loadedPage: number | undefined;
37
42
  error: string | undefined;
38
43
  custom: {
39
44
  [key: string]: string | number;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/hooks/useApiInterface/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAIzD,UAAU,mBAAmB,CAAC,CAAC,SAAS,MAAM;IAC5C,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IAC9B,kBAAkB,EAAE;QAClB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,IAAI,CAAC,EAAE,OAAO,CAAA;SAAE,EAAE,CAAC;QAC1C,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;IACF,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IACrB,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,KAAK,IAAI,CAAC;IACzD,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,SAAS,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC;IACpD,KAAK,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,KAAK,IAAI,CAAC;IAC/C,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,WAAW,CAAC,EAAE,eAAe,KAAK,IAAI,CAAC;IAChE,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/C,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAgBD,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,OAAO,CAAA;KAAE,EAAE,CAAC;IACzC,OAAO,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,GAAG,CAAA;KAAE,EAAE,CAAC;IACvC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,CAAC,SAAS,MAAM,EAAE,EACxD,YAAY,EACZ,kBAAkB,EAClB,OAAO,EACP,KAAK,EACL,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,YAAY,GACb,EAAE,mBAAmB,CAAC,CAAC,CAAC;;;;;;;;yBAeN,uBAAuB,UAAU,OAAO;uBA2Db,CAAC,UAAU,MAAM,WAAW,GAAG;wBAgFpC,MAAM;;2BASpC,CAAC,SAAS,MAAM;6BAOhB,CAAC,SAAS,MAAM;EAuD1B"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/hooks/useApiInterface/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAIzD,UAAU,mBAAmB,CAAC,CAAC,SAAS,MAAM;IAC5C,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IAC9B,kBAAkB,EAAE;QAClB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,IAAI,CAAC,EAAE,OAAO,CAAA;SAAE,EAAE,CAAC;QAC1C,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;IACF,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IACrB,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,KAAK,IAAI,CAAC;IACzD,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,SAAS,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC;IACpD,KAAK,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,KAAK,IAAI,CAAC;IAC/C,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,WAAW,CAAC,EAAE,eAAe,KAAK,IAAI,CAAC;IAChE,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/C,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAoBD,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,OAAO,CAAA;KAAE,EAAE,CAAC;IACzC,OAAO,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,GAAG,CAAA;KAAE,EAAE,CAAC;IACvC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,0HAA0H;IAC1H,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAmCD,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,CAAC,SAAS,MAAM,EAAE,EACxD,YAAY,EACZ,kBAAkB,EAClB,OAAO,EACP,KAAK,EACL,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,YAAY,GACb,EAAE,mBAAmB,CAAC,CAAC,CAAC;;;;;;;;;;;yBAmBN,uBAAuB,UAAU,OAAO;uBAoFb,CAAC,UAAU,MAAM,WAAW,GAAG;wBAgFpC,MAAM;;2BASpC,CAAC,SAAS,MAAM;6BAOhB,CAAC,SAAS,MAAM;EAsE1B"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=getUrlParams.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getUrlParams.test.d.ts","sourceRoot":"","sources":["../../../../../src/tests/getUrlParams.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=useApiInterface.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useApiInterface.test.d.ts","sourceRoot":"","sources":["../../../../../src/tests/useApiInterface.test.tsx"],"names":[],"mappings":""}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@crystaldesign/grid",
3
- "version": "26.12.0-beta.9",
3
+ "version": "26.13.0-beta.1",
4
4
  "description": "AG Grid helpers: shared grid options, cell styling and loading state.",
5
5
  "license": "COMMERCIAL",
6
6
  "devDependencies": {
@@ -13,9 +13,9 @@
13
13
  "react-dom": "18.3.1"
14
14
  },
15
15
  "dependencies": {
16
- "@crystaldesign/content-box": "26.12.0-beta.9",
17
- "@crystaldesign/rtf-editor": "26.12.0-beta.9",
18
- "@crystaldesign/searchfield": "26.12.0-beta.9",
16
+ "@crystaldesign/content-box": "26.13.0-beta.1",
17
+ "@crystaldesign/rtf-editor": "26.13.0-beta.1",
18
+ "@crystaldesign/searchfield": "26.13.0-beta.1",
19
19
  "@hello-pangea/dnd": "^18.0.1",
20
20
  "@mui/icons-material": "7.3.11",
21
21
  "@mui/material": "7.3.11",
@@ -39,5 +39,5 @@
39
39
  },
40
40
  "module": "build/esm/index.js",
41
41
  "types": "./build/types/grid/src/index.d.ts",
42
- "gitHead": "62f51ceee2ea71c54b990c666eb7ae864f13d374"
42
+ "gitHead": "b38715cf22885313d39435130631ab8993ac8dc5"
43
43
  }