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.
@@ -14959,6 +14959,19 @@ const SafeInnerHTML$1 = _ref => {
14959
14959
  html: html
14960
14960
  }));
14961
14961
  };
14962
+ const stripDataInfoContent = responseData => {
14963
+ const dataInfo = _$1.get(responseData, "result.data", {}) || {};
14964
+ if (dataInfo.content) {
14965
+ delete dataInfo.content;
14966
+ }
14967
+ return dataInfo;
14968
+ };
14969
+ const normalizeObjectsList = result => {
14970
+ if (!Array.isArray(result)) {
14971
+ return [];
14972
+ }
14973
+ return result.filter(Boolean);
14974
+ };
14962
14975
  function FpsCards2(_ref2) {
14963
14976
  let {
14964
14977
  auth,
@@ -14984,8 +14997,6 @@ function FpsCards2(_ref2) {
14984
14997
  const card_border = _$1.get(data, "params.card_border", 1);
14985
14998
  const card_border_radius = _$1.get(data, "params.card_border_radius");
14986
14999
  const sl = _$1.get(data, "sl");
14987
- const cx = null;
14988
- const dqlService = debounce$1(performFiltering, 600);
14989
15000
  const comp_ID = _$1.get(data, "params.comp_ID");
14990
15001
  const [error, setError] = useState("");
14991
15002
  const getPageFromUrl = () => {
@@ -14994,6 +15005,8 @@ function FpsCards2(_ref2) {
14994
15005
  return savedPage ? Number(savedPage) : 0;
14995
15006
  };
14996
15007
  const [page, setPage] = useState(getPageFromUrl);
15008
+ const [pageSizeOverride, setPageSizeOverride] = useState(null);
15009
+ const pageSize = pageSizeOverride || data.pageSize || 10;
14997
15010
  const [dql, setDQL] = useState('');
14998
15011
  const [sort, setSort] = useState({});
14999
15012
  const [loading, setLoading] = useState(false);
@@ -15001,13 +15014,14 @@ function FpsCards2(_ref2) {
15001
15014
  const isFirstRender = useRef(true);
15002
15015
  const isRestoringFromUrl = useRef(false);
15003
15016
  const cardsContainerRef = useRef(null);
15017
+ const refreshSeqRef = useRef(0);
15018
+ const dqlService = useMemo(() => debounce$1(performFiltering, 600), []);
15004
15019
  const updatePageInUrl = newPage => {
15005
15020
  const urlParams = new URLSearchParams(window.location.search);
15006
15021
  urlParams.set("page_" + comp_ID, newPage);
15007
15022
  window.history.replaceState({}, '', window.location.pathname + "?" + urlParams.toString());
15008
15023
  };
15009
15024
  function performFiltering(dql, sort) {
15010
- clearTimeout(cx);
15011
15025
  console.log('=== F I L T E R I N G ! ===');
15012
15026
  console.log(dql);
15013
15027
  console.log('=== S O R T I N G ! ===');
@@ -15025,31 +15039,6 @@ function FpsCards2(_ref2) {
15025
15039
  setPage(0);
15026
15040
  }
15027
15041
  }
15028
- const nextPage = () => {
15029
- setPage(prevPage => {
15030
- const newPage = prevPage + 1;
15031
- updatePageInUrl(newPage);
15032
- return newPage;
15033
- });
15034
- };
15035
- const prevPage = () => {
15036
- setPage(prevPage => {
15037
- const newPage = Math.max(prevPage - 1, 0);
15038
- updatePageInUrl(newPage);
15039
- return newPage;
15040
- });
15041
- };
15042
- const firstPage = () => {
15043
- setPage(0);
15044
- updatePageInUrl(0);
15045
- };
15046
- const lastPage = () => {
15047
- const pageSize = _$1.get(dataInfo, 'pageable.pageSize', data.pageSize || 10);
15048
- const totalPages = Math.max(1, Math.ceil(_$1.get(dataInfo, 'total', 0) / pageSize));
15049
- const lastPageNumber = Math.max(0, totalPages - 1);
15050
- setPage(lastPageNumber);
15051
- updatePageInUrl(lastPageNumber);
15052
- };
15053
15042
  function checkHidden(element, debug, reverse, model) {
15054
15043
  let _conditions = _$1.get(element, "_conditions") || [];
15055
15044
  let _name = "";
@@ -15332,7 +15321,6 @@ function FpsCards2(_ref2) {
15332
15321
  if (isFlexLayout === void 0) {
15333
15322
  isFlexLayout = false;
15334
15323
  }
15335
- const pageSize = pageLoading ? _$1.get(dataInfo, 'pageable.pageSize', data.pageSize || 10) : data.pageSize || 10;
15336
15324
  const card_min_height = _$1.get(data, "params.card_min_height") || "120px";
15337
15325
  return Array(pageSize).fill(null).map((_, index) => /*#__PURE__*/React.createElement("div", {
15338
15326
  key: "skeleton-" + index,
@@ -15407,6 +15395,31 @@ function FpsCards2(_ref2) {
15407
15395
  "empty": false,
15408
15396
  "numberOfElements": 3
15409
15397
  });
15398
+ const totalObjects = _$1.get(dataInfo, 'total', 0);
15399
+ const totalPages = Math.max(1, Math.ceil(totalObjects / pageSize));
15400
+ const nextPage = () => {
15401
+ setPage(prevPage => {
15402
+ const newPage = Math.min(prevPage + 1, totalPages - 1);
15403
+ updatePageInUrl(newPage);
15404
+ return newPage;
15405
+ });
15406
+ };
15407
+ const prevPage = () => {
15408
+ setPage(prevPage => {
15409
+ const newPage = Math.max(prevPage - 1, 0);
15410
+ updatePageInUrl(newPage);
15411
+ return newPage;
15412
+ });
15413
+ };
15414
+ const firstPage = () => {
15415
+ setPage(0);
15416
+ updatePageInUrl(0);
15417
+ };
15418
+ const lastPage = () => {
15419
+ const lastPageNumber = Math.max(0, totalPages - 1);
15420
+ setPage(lastPageNumber);
15421
+ updatePageInUrl(lastPageNumber);
15422
+ };
15410
15423
  useEffect(() => {
15411
15424
  setFavLoading(true);
15412
15425
  favoritesOn && favoritesEndpoint && callEndpointGET(favoritesEndpoint, {
@@ -15416,22 +15429,21 @@ function FpsCards2(_ref2) {
15416
15429
  setFavLoading(false);
15417
15430
  });
15418
15431
  }, []);
15419
- function refresh(dql, sort) {
15432
+ function refresh(dql, sort, overridePage) {
15420
15433
  if (data && data.sl) {
15421
15434
  setPageLoading(true);
15435
+ const seq = ++refreshSeqRef.current;
15422
15436
  const sortString = sort && sort.field ? sort.field + ":" + (sort.direction || 'asc') : '';
15437
+ const requestPage = overridePage !== undefined ? overridePage : page;
15423
15438
  callEndpointGET(data.sl, {
15424
- pageSize: data.pageSize || 10,
15425
- page: page,
15439
+ pageSize: pageSize,
15440
+ page: requestPage,
15426
15441
  dql: dql,
15427
15442
  sort: sortString
15428
- }, (result, data) => {
15429
- const dataInfo = _$1.get(data, "result.data", {});
15430
- if (dataInfo && dataInfo.content) {
15431
- delete dataInfo.content;
15432
- }
15433
- setDataInfo(dataInfo);
15434
- setObjects(result);
15443
+ }, (result, responseData) => {
15444
+ if (seq !== refreshSeqRef.current) return;
15445
+ setDataInfo(stripDataInfoContent(responseData));
15446
+ setObjects(normalizeObjectsList(result));
15435
15447
  setPageLoading(false);
15436
15448
  });
15437
15449
  }
@@ -15445,9 +15457,9 @@ function FpsCards2(_ref2) {
15445
15457
  isFirstRender.current = false;
15446
15458
  return;
15447
15459
  }
15448
- console.log("page => " + page);
15460
+ console.log("page => " + page + ", pageSize => " + pageSize);
15449
15461
  refresh(dql, sort);
15450
- }, [page, debug]);
15462
+ }, [page, pageSize, debug]);
15451
15463
  useEffect(() => {
15452
15464
  if (debug) {
15453
15465
  console.log("Cards2 Debug mode: using data from props, skipping API calls");
@@ -15514,19 +15526,17 @@ function FpsCards2(_ref2) {
15514
15526
  if (data && data.sl) {
15515
15527
  console.log("Loading initial data from URL: page=" + urlPage + ", dql=" + urlDql);
15516
15528
  setPageLoading(true);
15529
+ const seq = ++refreshSeqRef.current;
15517
15530
  const sortString = urlSort && urlSort.field ? urlSort.field + ":" + (urlSort.direction || 'asc') : '';
15518
15531
  callEndpointGET(data.sl, {
15519
- pageSize: data.pageSize || 10,
15532
+ pageSize: pageSize,
15520
15533
  page: urlPage,
15521
15534
  dql: urlDql,
15522
15535
  sort: sortString
15523
15536
  }, (result, responseData) => {
15524
- const newDataInfo = _$1.get(responseData, "result.data", {});
15525
- if (newDataInfo && newDataInfo.content) {
15526
- delete newDataInfo.content;
15527
- }
15528
- setDataInfo(newDataInfo);
15529
- setObjects(result);
15537
+ if (seq !== refreshSeqRef.current) return;
15538
+ setDataInfo(stripDataInfoContent(responseData));
15539
+ setObjects(normalizeObjectsList(result));
15530
15540
  setPageLoading(false);
15531
15541
  setInitialLoading(false);
15532
15542
  });
@@ -15542,20 +15552,18 @@ function FpsCards2(_ref2) {
15542
15552
  if (!socket) return;
15543
15553
  if (data && data.sl) {
15544
15554
  console.log("Socket changed, updating data in background...");
15555
+ const seq = ++refreshSeqRef.current;
15545
15556
  const sortString = sort && sort.field ? sort.field + ":" + (sort.direction || 'asc') : '';
15546
15557
  callEndpointGET(data.sl, {
15547
- pageSize: data.pageSize || 10,
15558
+ pageSize: pageSize,
15548
15559
  page: page,
15549
15560
  dql: dql,
15550
15561
  sort: sortString
15551
15562
  }, (result, responseData) => {
15563
+ if (seq !== refreshSeqRef.current) return;
15552
15564
  console.log("Background update completed");
15553
- const dataInfo = _$1.get(responseData, "result.data", {});
15554
- if (dataInfo && dataInfo.content) {
15555
- delete dataInfo.content;
15556
- }
15557
- setDataInfo(dataInfo);
15558
- setObjects(result);
15565
+ setDataInfo(stripDataInfoContent(responseData));
15566
+ setObjects(normalizeObjectsList(result));
15559
15567
  });
15560
15568
  }
15561
15569
  }, [socket, debug]);
@@ -15594,7 +15602,10 @@ function FpsCards2(_ref2) {
15594
15602
  customHTMLfilters: _$1.get(data.params, 'filterParams.filteringSortingLayout') === 'custom',
15595
15603
  customHTMLfiltersContent: _$1.get(data.params, 'filterParams.filteringSortingLayoutHTML'),
15596
15604
  callEndpoint: (endpoint, params, finish, setOptions, setError) => {
15597
- const transformedArray = (inputArray, visibleNames) => _$1.map(inputArray, item => {
15605
+ const transformedArray = (inputArray, visibleNames) => _$1.compact(_$1.map(inputArray || [], item => {
15606
+ if (!item) {
15607
+ return null;
15608
+ }
15598
15609
  const parseJson = json => {
15599
15610
  if (!json) return {};
15600
15611
  let parsedJson = {};
@@ -15620,7 +15631,7 @@ function FpsCards2(_ref2) {
15620
15631
  image: _$1.get(rest, "userpic") || _$1.get(rest, "image") || _$1.get(rest, "picture") || _$1.get(rest, "photo"),
15621
15632
  description: description
15622
15633
  };
15623
- });
15634
+ }));
15624
15635
  callEndpoint && callEndpoint(endpoint, "GET", undefined, params, (result, data, visibleNames) => {
15625
15636
  if (result == "ok") {
15626
15637
  finish && finish(transformedArray(data, visibleNames));
@@ -15652,7 +15663,7 @@ function FpsCards2(_ref2) {
15652
15663
  gap: grid_layout__gap,
15653
15664
  gridTemplateColumns: _$1.join(_$1.times(breakPoints[currentBP], _$1.constant('1fr')), ' ')
15654
15665
  }
15655
- }, initialLoading || pageLoading ? renderSkeletons() : objects.filter(object => !!_$1.get(object, field_quantity, 1)).map(object => /*#__PURE__*/React.createElement(CardWrapper, {
15666
+ }, initialLoading || pageLoading ? renderSkeletons() : objects.filter(object => object && !!_$1.get(object, field_quantity, 1)).map(object => /*#__PURE__*/React.createElement(CardWrapper, {
15656
15667
  key: object.id,
15657
15668
  data: data,
15658
15669
  auth: auth,
@@ -15700,7 +15711,7 @@ function FpsCards2(_ref2) {
15700
15711
  style: {
15701
15712
  gap: flex_layout__gap
15702
15713
  }
15703
- }, initialLoading || pageLoading ? renderSkeletons(true) : objects.filter(object => !!_$1.get(object, field_quantity, 1)).map(object => /*#__PURE__*/React.createElement(CardWrapper, {
15714
+ }, initialLoading || pageLoading ? renderSkeletons(true) : objects.filter(object => object && !!_$1.get(object, field_quantity, 1)).map(object => /*#__PURE__*/React.createElement(CardWrapper, {
15704
15715
  key: object.id,
15705
15716
  data: data,
15706
15717
  auth: auth,
@@ -15744,15 +15755,16 @@ function FpsCards2(_ref2) {
15744
15755
  }
15745
15756
  }
15746
15757
  }))), _$1.get(data, 'params.general.allowPagination') === true && /*#__PURE__*/React.createElement(NewPaging, {
15747
- totalObjects: _$1.get(dataInfo, 'total', 0),
15748
- objectsPerPage: _$1.get(dataInfo, 'pageable.pageSize', data.pageSize || 10),
15758
+ totalObjects: totalObjects,
15759
+ objectsPerPage: pageSize,
15749
15760
  showPageSizeDropdown: true,
15750
15761
  onPageSizeChange: newPageSize => {
15751
- console.log("onPageSizeChange");
15752
- console.log("newPageSize:", newPageSize);
15762
+ setPageSizeOverride(newPageSize);
15763
+ setPage(0);
15764
+ updatePageInUrl(0);
15753
15765
  },
15754
- currentPage: _$1.get(dataInfo, 'pageable.page', 0),
15755
- totalPages: Math.max(1, Math.ceil(_$1.get(dataInfo, 'total', 0) / _$1.get(dataInfo, 'pageable.pageSize', data.pageSize || 10))),
15766
+ currentPage: page,
15767
+ totalPages: totalPages,
15756
15768
  nextPage: nextPage,
15757
15769
  dataInfo: dataInfo,
15758
15770
  prevPage: prevPage,