directual-web-components-v2 3.11.340 → 3.11.342

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.
package/dist/index.js CHANGED
@@ -14964,6 +14964,19 @@ const SafeInnerHTML$1 = _ref => {
14964
14964
  html: html
14965
14965
  }));
14966
14966
  };
14967
+ const stripDataInfoContent = responseData => {
14968
+ const dataInfo = _$1__default.get(responseData, "result.data", {}) || {};
14969
+ if (dataInfo.content) {
14970
+ delete dataInfo.content;
14971
+ }
14972
+ return dataInfo;
14973
+ };
14974
+ const normalizeObjectsList = result => {
14975
+ if (!Array.isArray(result)) {
14976
+ return [];
14977
+ }
14978
+ return result.filter(Boolean);
14979
+ };
14967
14980
  function FpsCards2(_ref2) {
14968
14981
  let {
14969
14982
  auth,
@@ -14989,8 +15002,6 @@ function FpsCards2(_ref2) {
14989
15002
  const card_border = _$1__default.get(data, "params.card_border", 1);
14990
15003
  const card_border_radius = _$1__default.get(data, "params.card_border_radius");
14991
15004
  const sl = _$1__default.get(data, "sl");
14992
- const cx = null;
14993
- const dqlService = _$1.debounce(performFiltering, 600);
14994
15005
  const comp_ID = _$1__default.get(data, "params.comp_ID");
14995
15006
  const [error, setError] = React.useState("");
14996
15007
  const getPageFromUrl = () => {
@@ -14999,6 +15010,8 @@ function FpsCards2(_ref2) {
14999
15010
  return savedPage ? Number(savedPage) : 0;
15000
15011
  };
15001
15012
  const [page, setPage] = React.useState(getPageFromUrl);
15013
+ const [pageSizeOverride, setPageSizeOverride] = React.useState(null);
15014
+ const pageSize = pageSizeOverride || data.pageSize || 10;
15002
15015
  const [dql, setDQL] = React.useState('');
15003
15016
  const [sort, setSort] = React.useState({});
15004
15017
  const [loading, setLoading] = React.useState(false);
@@ -15006,13 +15019,14 @@ function FpsCards2(_ref2) {
15006
15019
  const isFirstRender = React.useRef(true);
15007
15020
  const isRestoringFromUrl = React.useRef(false);
15008
15021
  const cardsContainerRef = React.useRef(null);
15022
+ const refreshSeqRef = React.useRef(0);
15023
+ const dqlService = React.useMemo(() => _$1.debounce(performFiltering, 600), []);
15009
15024
  const updatePageInUrl = newPage => {
15010
15025
  const urlParams = new URLSearchParams(window.location.search);
15011
15026
  urlParams.set("page_" + comp_ID, newPage);
15012
15027
  window.history.replaceState({}, '', window.location.pathname + "?" + urlParams.toString());
15013
15028
  };
15014
15029
  function performFiltering(dql, sort) {
15015
- clearTimeout(cx);
15016
15030
  console.log('=== F I L T E R I N G ! ===');
15017
15031
  console.log(dql);
15018
15032
  console.log('=== S O R T I N G ! ===');
@@ -15030,31 +15044,6 @@ function FpsCards2(_ref2) {
15030
15044
  setPage(0);
15031
15045
  }
15032
15046
  }
15033
- const nextPage = () => {
15034
- setPage(prevPage => {
15035
- const newPage = prevPage + 1;
15036
- updatePageInUrl(newPage);
15037
- return newPage;
15038
- });
15039
- };
15040
- const prevPage = () => {
15041
- setPage(prevPage => {
15042
- const newPage = Math.max(prevPage - 1, 0);
15043
- updatePageInUrl(newPage);
15044
- return newPage;
15045
- });
15046
- };
15047
- const firstPage = () => {
15048
- setPage(0);
15049
- updatePageInUrl(0);
15050
- };
15051
- const lastPage = () => {
15052
- const pageSize = _$1__default.get(dataInfo, 'pageable.pageSize', data.pageSize || 10);
15053
- const totalPages = Math.max(1, Math.ceil(_$1__default.get(dataInfo, 'total', 0) / pageSize));
15054
- const lastPageNumber = Math.max(0, totalPages - 1);
15055
- setPage(lastPageNumber);
15056
- updatePageInUrl(lastPageNumber);
15057
- };
15058
15047
  function checkHidden(element, debug, reverse, model) {
15059
15048
  let _conditions = _$1__default.get(element, "_conditions") || [];
15060
15049
  let _name = "";
@@ -15337,7 +15326,6 @@ function FpsCards2(_ref2) {
15337
15326
  if (isFlexLayout === void 0) {
15338
15327
  isFlexLayout = false;
15339
15328
  }
15340
- const pageSize = pageLoading ? _$1__default.get(dataInfo, 'pageable.pageSize', data.pageSize || 10) : data.pageSize || 10;
15341
15329
  const card_min_height = _$1__default.get(data, "params.card_min_height") || "120px";
15342
15330
  return Array(pageSize).fill(null).map((_, index) => /*#__PURE__*/React__default.createElement("div", {
15343
15331
  key: "skeleton-" + index,
@@ -15412,6 +15400,31 @@ function FpsCards2(_ref2) {
15412
15400
  "empty": false,
15413
15401
  "numberOfElements": 3
15414
15402
  });
15403
+ const totalObjects = _$1__default.get(dataInfo, 'total', 0);
15404
+ const totalPages = Math.max(1, Math.ceil(totalObjects / pageSize));
15405
+ const nextPage = () => {
15406
+ setPage(prevPage => {
15407
+ const newPage = Math.min(prevPage + 1, totalPages - 1);
15408
+ updatePageInUrl(newPage);
15409
+ return newPage;
15410
+ });
15411
+ };
15412
+ const prevPage = () => {
15413
+ setPage(prevPage => {
15414
+ const newPage = Math.max(prevPage - 1, 0);
15415
+ updatePageInUrl(newPage);
15416
+ return newPage;
15417
+ });
15418
+ };
15419
+ const firstPage = () => {
15420
+ setPage(0);
15421
+ updatePageInUrl(0);
15422
+ };
15423
+ const lastPage = () => {
15424
+ const lastPageNumber = Math.max(0, totalPages - 1);
15425
+ setPage(lastPageNumber);
15426
+ updatePageInUrl(lastPageNumber);
15427
+ };
15415
15428
  React.useEffect(() => {
15416
15429
  setFavLoading(true);
15417
15430
  favoritesOn && favoritesEndpoint && callEndpointGET(favoritesEndpoint, {
@@ -15421,22 +15434,21 @@ function FpsCards2(_ref2) {
15421
15434
  setFavLoading(false);
15422
15435
  });
15423
15436
  }, []);
15424
- function refresh(dql, sort) {
15437
+ function refresh(dql, sort, overridePage) {
15425
15438
  if (data && data.sl) {
15426
15439
  setPageLoading(true);
15440
+ const seq = ++refreshSeqRef.current;
15427
15441
  const sortString = sort && sort.field ? sort.field + ":" + (sort.direction || 'asc') : '';
15442
+ const requestPage = overridePage !== undefined ? overridePage : page;
15428
15443
  callEndpointGET(data.sl, {
15429
- pageSize: data.pageSize || 10,
15430
- page: page,
15444
+ pageSize: pageSize,
15445
+ page: requestPage,
15431
15446
  dql: dql,
15432
15447
  sort: sortString
15433
- }, (result, data) => {
15434
- const dataInfo = _$1__default.get(data, "result.data", {});
15435
- if (dataInfo && dataInfo.content) {
15436
- delete dataInfo.content;
15437
- }
15438
- setDataInfo(dataInfo);
15439
- setObjects(result);
15448
+ }, (result, responseData) => {
15449
+ if (seq !== refreshSeqRef.current) return;
15450
+ setDataInfo(stripDataInfoContent(responseData));
15451
+ setObjects(normalizeObjectsList(result));
15440
15452
  setPageLoading(false);
15441
15453
  });
15442
15454
  }
@@ -15450,9 +15462,9 @@ function FpsCards2(_ref2) {
15450
15462
  isFirstRender.current = false;
15451
15463
  return;
15452
15464
  }
15453
- console.log("page => " + page);
15465
+ console.log("page => " + page + ", pageSize => " + pageSize);
15454
15466
  refresh(dql, sort);
15455
- }, [page, debug]);
15467
+ }, [page, pageSize, debug]);
15456
15468
  React.useEffect(() => {
15457
15469
  if (debug) {
15458
15470
  console.log("Cards2 Debug mode: using data from props, skipping API calls");
@@ -15519,19 +15531,17 @@ function FpsCards2(_ref2) {
15519
15531
  if (data && data.sl) {
15520
15532
  console.log("Loading initial data from URL: page=" + urlPage + ", dql=" + urlDql);
15521
15533
  setPageLoading(true);
15534
+ const seq = ++refreshSeqRef.current;
15522
15535
  const sortString = urlSort && urlSort.field ? urlSort.field + ":" + (urlSort.direction || 'asc') : '';
15523
15536
  callEndpointGET(data.sl, {
15524
- pageSize: data.pageSize || 10,
15537
+ pageSize: pageSize,
15525
15538
  page: urlPage,
15526
15539
  dql: urlDql,
15527
15540
  sort: sortString
15528
15541
  }, (result, responseData) => {
15529
- const newDataInfo = _$1__default.get(responseData, "result.data", {});
15530
- if (newDataInfo && newDataInfo.content) {
15531
- delete newDataInfo.content;
15532
- }
15533
- setDataInfo(newDataInfo);
15534
- setObjects(result);
15542
+ if (seq !== refreshSeqRef.current) return;
15543
+ setDataInfo(stripDataInfoContent(responseData));
15544
+ setObjects(normalizeObjectsList(result));
15535
15545
  setPageLoading(false);
15536
15546
  setInitialLoading(false);
15537
15547
  });
@@ -15547,20 +15557,18 @@ function FpsCards2(_ref2) {
15547
15557
  if (!socket) return;
15548
15558
  if (data && data.sl) {
15549
15559
  console.log("Socket changed, updating data in background...");
15560
+ const seq = ++refreshSeqRef.current;
15550
15561
  const sortString = sort && sort.field ? sort.field + ":" + (sort.direction || 'asc') : '';
15551
15562
  callEndpointGET(data.sl, {
15552
- pageSize: data.pageSize || 10,
15563
+ pageSize: pageSize,
15553
15564
  page: page,
15554
15565
  dql: dql,
15555
15566
  sort: sortString
15556
15567
  }, (result, responseData) => {
15568
+ if (seq !== refreshSeqRef.current) return;
15557
15569
  console.log("Background update completed");
15558
- const dataInfo = _$1__default.get(responseData, "result.data", {});
15559
- if (dataInfo && dataInfo.content) {
15560
- delete dataInfo.content;
15561
- }
15562
- setDataInfo(dataInfo);
15563
- setObjects(result);
15570
+ setDataInfo(stripDataInfoContent(responseData));
15571
+ setObjects(normalizeObjectsList(result));
15564
15572
  });
15565
15573
  }
15566
15574
  }, [socket, debug]);
@@ -15599,7 +15607,10 @@ function FpsCards2(_ref2) {
15599
15607
  customHTMLfilters: _$1__default.get(data.params, 'filterParams.filteringSortingLayout') === 'custom',
15600
15608
  customHTMLfiltersContent: _$1__default.get(data.params, 'filterParams.filteringSortingLayoutHTML'),
15601
15609
  callEndpoint: (endpoint, params, finish, setOptions, setError) => {
15602
- const transformedArray = (inputArray, visibleNames) => _$1__default.map(inputArray, item => {
15610
+ const transformedArray = (inputArray, visibleNames) => _$1__default.compact(_$1__default.map(inputArray || [], item => {
15611
+ if (!item) {
15612
+ return null;
15613
+ }
15603
15614
  const parseJson = json => {
15604
15615
  if (!json) return {};
15605
15616
  let parsedJson = {};
@@ -15625,7 +15636,7 @@ function FpsCards2(_ref2) {
15625
15636
  image: _$1__default.get(rest, "userpic") || _$1__default.get(rest, "image") || _$1__default.get(rest, "picture") || _$1__default.get(rest, "photo"),
15626
15637
  description: description
15627
15638
  };
15628
- });
15639
+ }));
15629
15640
  callEndpoint && callEndpoint(endpoint, "GET", undefined, params, (result, data, visibleNames) => {
15630
15641
  if (result == "ok") {
15631
15642
  finish && finish(transformedArray(data, visibleNames));
@@ -15657,7 +15668,7 @@ function FpsCards2(_ref2) {
15657
15668
  gap: grid_layout__gap,
15658
15669
  gridTemplateColumns: _$1__default.join(_$1__default.times(breakPoints[currentBP], _$1__default.constant('1fr')), ' ')
15659
15670
  }
15660
- }, initialLoading || pageLoading ? renderSkeletons() : objects.filter(object => !!_$1__default.get(object, field_quantity, 1)).map(object => /*#__PURE__*/React__default.createElement(CardWrapper, {
15671
+ }, initialLoading || pageLoading ? renderSkeletons() : objects.filter(object => object && !!_$1__default.get(object, field_quantity, 1)).map(object => /*#__PURE__*/React__default.createElement(CardWrapper, {
15661
15672
  key: object.id,
15662
15673
  data: data,
15663
15674
  auth: auth,
@@ -15705,7 +15716,7 @@ function FpsCards2(_ref2) {
15705
15716
  style: {
15706
15717
  gap: flex_layout__gap
15707
15718
  }
15708
- }, initialLoading || pageLoading ? renderSkeletons(true) : objects.filter(object => !!_$1__default.get(object, field_quantity, 1)).map(object => /*#__PURE__*/React__default.createElement(CardWrapper, {
15719
+ }, initialLoading || pageLoading ? renderSkeletons(true) : objects.filter(object => object && !!_$1__default.get(object, field_quantity, 1)).map(object => /*#__PURE__*/React__default.createElement(CardWrapper, {
15709
15720
  key: object.id,
15710
15721
  data: data,
15711
15722
  auth: auth,
@@ -15749,15 +15760,16 @@ function FpsCards2(_ref2) {
15749
15760
  }
15750
15761
  }
15751
15762
  }))), _$1__default.get(data, 'params.general.allowPagination') === true && /*#__PURE__*/React__default.createElement(NewPaging, {
15752
- totalObjects: _$1__default.get(dataInfo, 'total', 0),
15753
- objectsPerPage: _$1__default.get(dataInfo, 'pageable.pageSize', data.pageSize || 10),
15763
+ totalObjects: totalObjects,
15764
+ objectsPerPage: pageSize,
15754
15765
  showPageSizeDropdown: true,
15755
15766
  onPageSizeChange: newPageSize => {
15756
- console.log("onPageSizeChange");
15757
- console.log("newPageSize:", newPageSize);
15767
+ setPageSizeOverride(newPageSize);
15768
+ setPage(0);
15769
+ updatePageInUrl(0);
15758
15770
  },
15759
- currentPage: _$1__default.get(dataInfo, 'pageable.page', 0),
15760
- totalPages: Math.max(1, Math.ceil(_$1__default.get(dataInfo, 'total', 0) / _$1__default.get(dataInfo, 'pageable.pageSize', data.pageSize || 10))),
15771
+ currentPage: page,
15772
+ totalPages: totalPages,
15761
15773
  nextPage: nextPage,
15762
15774
  dataInfo: dataInfo,
15763
15775
  prevPage: prevPage,