@fctc/widget-logic 5.2.7 → 5.2.8

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/hooks.js CHANGED
@@ -745,11 +745,14 @@ var useGetSpecification = ({
745
745
  viewData,
746
746
  fields
747
747
  }) => {
748
- const baseModel = {
749
- name: String(model),
750
- view: viewData,
751
- fields
752
- };
748
+ const baseModel = (0, import_react10.useMemo)(
749
+ () => ({
750
+ name: String(model),
751
+ view: viewData,
752
+ fields
753
+ }),
754
+ [model, viewData, fields]
755
+ );
753
756
  const initModel = (0, import_hooks2.useModel)();
754
757
  const modelInstance = (0, import_react10.useMemo)(() => {
755
758
  if (viewData) {
package/dist/hooks.mjs CHANGED
@@ -726,11 +726,14 @@ var useGetSpecification = ({
726
726
  viewData,
727
727
  fields
728
728
  }) => {
729
- const baseModel = {
730
- name: String(model),
731
- view: viewData,
732
- fields
733
- };
729
+ const baseModel = useMemo5(
730
+ () => ({
731
+ name: String(model),
732
+ view: viewData,
733
+ fields
734
+ }),
735
+ [model, viewData, fields]
736
+ );
734
737
  const initModel = useModel();
735
738
  const modelInstance = useMemo5(() => {
736
739
  if (viewData) {
package/dist/index.js CHANGED
@@ -4817,11 +4817,14 @@ var useGetSpecification = ({
4817
4817
  viewData,
4818
4818
  fields
4819
4819
  }) => {
4820
- const baseModel = {
4821
- name: String(model),
4822
- view: viewData,
4823
- fields
4824
- };
4820
+ const baseModel = (0, import_react10.useMemo)(
4821
+ () => ({
4822
+ name: String(model),
4823
+ view: viewData,
4824
+ fields
4825
+ }),
4826
+ [model, viewData, fields]
4827
+ );
4825
4828
  const initModel = (0, import_hooks2.useModel)();
4826
4829
  const modelInstance = (0, import_react10.useMemo)(() => {
4827
4830
  if (viewData) {
@@ -6339,8 +6342,11 @@ var binaryFieldController = (props) => {
6339
6342
  };
6340
6343
  };
6341
6344
 
6342
- // src/widget/advance/table/table-head/controller.ts
6345
+ // src/widget/basic/many2many-binary-field/controller.tsx
6343
6346
  var import_react23 = require("react");
6347
+
6348
+ // src/widget/advance/table/table-head/controller.ts
6349
+ var import_react24 = require("react");
6344
6350
  var tableHeadController = (props) => {
6345
6351
  const {
6346
6352
  typeTable,
@@ -6351,21 +6357,21 @@ var tableHeadController = (props) => {
6351
6357
  setSelectedRowKeys
6352
6358
  } = props;
6353
6359
  const { rowIds: recordIds } = useGetRowIds(tableRef);
6354
- const selectedRowKeysRef = (0, import_react23.useRef)(recordIds);
6360
+ const selectedRowKeysRef = (0, import_react24.useRef)(recordIds);
6355
6361
  const isGroupTable = typeTable === "group";
6356
- const recordsCheckedGroup = (0, import_react23.useMemo)(() => {
6362
+ const recordsCheckedGroup = (0, import_react24.useMemo)(() => {
6357
6363
  if (!rows || !groupByList) return 0;
6358
6364
  const groupBy = typeof groupByList === "object" ? groupByList?.contexts?.[0]?.group_by : void 0;
6359
6365
  return countSum(rows, groupBy);
6360
6366
  }, [rows, groupByList]);
6361
- const isAllGroupChecked = (0, import_react23.useMemo)(() => {
6367
+ const isAllGroupChecked = (0, import_react24.useMemo)(() => {
6362
6368
  if (!isGroupTable || !selectedRowKeys?.length) return false;
6363
6369
  const selectedLength = selectedRowKeys.filter((id) => id !== -1).length;
6364
6370
  const allRecordsSelected = recordIds.length === selectedRowKeys.length ? recordIds.length === selectedLength : false;
6365
6371
  const allGroupsSelected = recordsCheckedGroup === selectedRowKeys.length;
6366
6372
  return allGroupsSelected || allRecordsSelected;
6367
6373
  }, [isGroupTable, selectedRowKeys, recordIds, recordsCheckedGroup]);
6368
- const isAllNormalChecked = (0, import_react23.useMemo)(() => {
6374
+ const isAllNormalChecked = (0, import_react24.useMemo)(() => {
6369
6375
  if (isGroupTable || !selectedRowKeys?.length || !rows?.length) return false;
6370
6376
  return selectedRowKeys.length === rows.length && selectedRowKeys.every(
6371
6377
  (id) => rows.some((record) => record.id === id)
@@ -6406,23 +6412,23 @@ var tableHeadController = (props) => {
6406
6412
  };
6407
6413
 
6408
6414
  // src/widget/advance/table/table-view/controller.ts
6409
- var import_react24 = require("react");
6410
- var import_utils17 = require("@fctc/interface-logic/utils");
6415
+ var import_react25 = require("react");
6416
+ var import_utils18 = require("@fctc/interface-logic/utils");
6411
6417
  var tableController = ({ data }) => {
6412
- const [rows, setRows] = (0, import_react24.useState)([]);
6413
- const [columnVisibility, setColumnVisibility] = (0, import_react24.useState)({});
6414
- const dataModelFields = (0, import_react24.useMemo)(() => {
6418
+ const [rows, setRows] = (0, import_react25.useState)([]);
6419
+ const [columnVisibility, setColumnVisibility] = (0, import_react25.useState)({});
6420
+ const dataModelFields = (0, import_react25.useMemo)(() => {
6415
6421
  return data?.fields?.map((field) => ({
6416
6422
  ...data.dataModel?.[field?.name],
6417
6423
  ...field,
6418
6424
  string: field?.string || data.dataModel?.[field?.name]?.string
6419
6425
  })) ?? [];
6420
6426
  }, [data?.fields, data?.dataModel]);
6421
- const mergeFields = (0, import_react24.useMemo)(
6427
+ const mergeFields = (0, import_react25.useMemo)(
6422
6428
  () => mergeButtons(dataModelFields),
6423
6429
  [dataModelFields]
6424
6430
  );
6425
- const transformData = (0, import_react24.useCallback)(
6431
+ const transformData = (0, import_react25.useCallback)(
6426
6432
  (dataList) => {
6427
6433
  if (!dataList) return [];
6428
6434
  return dataList.map((item) => {
@@ -6444,16 +6450,16 @@ var tableController = ({ data }) => {
6444
6450
  },
6445
6451
  [data?.typeTable]
6446
6452
  );
6447
- (0, import_react24.useEffect)(() => {
6453
+ (0, import_react25.useEffect)(() => {
6448
6454
  setRows(transformData(data?.records));
6449
6455
  }, [data?.records, transformData]);
6450
- const columns = (0, import_react24.useMemo)(() => {
6456
+ const columns = (0, import_react25.useMemo)(() => {
6451
6457
  try {
6452
6458
  return mergeFields?.filter((item) => {
6453
- return item?.widget !== "details_Receive_money" && !(item?.column_invisible ? import_utils17.domainHelper.matchDomains(
6459
+ return item?.widget !== "details_Receive_money" && !(item?.column_invisible ? import_utils18.domainHelper.matchDomains(
6454
6460
  data.context,
6455
6461
  item?.column_invisible
6456
- ) : item?.invisible ? import_utils17.domainHelper.matchDomains(data.context, item?.invisible) : false);
6462
+ ) : item?.invisible ? import_utils18.domainHelper.matchDomains(data.context, item?.invisible) : false);
6457
6463
  })?.map((field) => {
6458
6464
  const overridden = columnVisibility[field?.name];
6459
6465
  return {
@@ -6468,7 +6474,7 @@ var tableController = ({ data }) => {
6468
6474
  return [];
6469
6475
  }
6470
6476
  }, [mergeFields, data?.context, columnVisibility]);
6471
- const onToggleColumnOptional = (0, import_react24.useCallback)((item) => {
6477
+ const onToggleColumnOptional = (0, import_react25.useCallback)((item) => {
6472
6478
  setColumnVisibility((prev) => ({
6473
6479
  ...prev,
6474
6480
  [item?.name]: item?.optional === "show" ? "hide" : "show"
@@ -6483,7 +6489,7 @@ var tableController = ({ data }) => {
6483
6489
  };
6484
6490
 
6485
6491
  // src/widget/advance/table/table-group/controller.ts
6486
- var import_react25 = require("react");
6492
+ var import_react26 = require("react");
6487
6493
  var import_store = require("@fctc/interface-logic/store");
6488
6494
  var tableGroupController = (props) => {
6489
6495
  const { env } = (0, provider_exports.useEnv)();
@@ -6500,15 +6506,15 @@ var tableGroupController = (props) => {
6500
6506
  groupByList,
6501
6507
  setSelectedRowKeys
6502
6508
  } = props;
6503
- const [pageGroup, setPageGroup] = (0, import_react25.useState)(0);
6509
+ const [pageGroup, setPageGroup] = (0, import_react26.useState)(0);
6504
6510
  const { selectedRowKeys } = (0, import_store.useAppSelector)(import_store.selectList);
6505
- const [isShowGroup, setIsShowGroup] = (0, import_react25.useState)(false);
6506
- const [colEmptyGroup, setColEmptyGroup] = (0, import_react25.useState)({
6511
+ const [isShowGroup, setIsShowGroup] = (0, import_react26.useState)(false);
6512
+ const [colEmptyGroup, setColEmptyGroup] = (0, import_react26.useState)({
6507
6513
  fromStart: 1,
6508
6514
  fromEnd: 1
6509
6515
  });
6510
6516
  const domain = row?.__domain;
6511
- const processedData = (0, import_react25.useMemo)(() => {
6517
+ const processedData = (0, import_react26.useMemo)(() => {
6512
6518
  const calculateColSpanEmpty = () => {
6513
6519
  const startIndex = columns.findIndex(
6514
6520
  (col) => col.field.type === "monetary" && typeof row[col.key] === "number" || col.field.aggregator === "sum"
@@ -6523,7 +6529,7 @@ var tableGroupController = (props) => {
6523
6529
  };
6524
6530
  return calculateColSpanEmpty();
6525
6531
  }, [columns, row]);
6526
- const shouldFetchData = (0, import_react25.useMemo)(() => {
6532
+ const shouldFetchData = (0, import_react26.useMemo)(() => {
6527
6533
  return !!isShowGroup;
6528
6534
  }, [isShowGroup]);
6529
6535
  const enabled = shouldFetchData && !!processedData;
@@ -6592,7 +6598,7 @@ var tableGroupController = (props) => {
6592
6598
  }
6593
6599
  toggleShowGroup();
6594
6600
  };
6595
- (0, import_react25.useEffect)(() => {
6601
+ (0, import_react26.useEffect)(() => {
6596
6602
  if (!isDataGroupFetched || !rowsGroup || !checkedAll || allIdsNull || typeTableGroup === "group") {
6597
6603
  return;
6598
6604
  }
@@ -6618,7 +6624,7 @@ var tableGroupController = (props) => {
6618
6624
 
6619
6625
  // src/widget/advance/search/controller.ts
6620
6626
  var import_moment2 = __toESM(require_moment());
6621
- var import_react26 = require("react");
6627
+ var import_react27 = require("react");
6622
6628
 
6623
6629
  // src/constants.ts
6624
6630
  var constants_exports = {};
@@ -6633,14 +6639,14 @@ var searchController = ({
6633
6639
  fieldsList
6634
6640
  }) => {
6635
6641
  const { env } = (0, provider_exports.useEnv)();
6636
- const [filterBy, setFilterBy] = (0, import_react26.useState)(null);
6637
- const [searchBy, setSearchBy] = (0, import_react26.useState)(null);
6638
- const [groupBy, setGroupBy] = (0, import_react26.useState)(null);
6639
- const [selectedTags, setSelectedTags] = (0, import_react26.useState)(null);
6640
- const [searchString, setSearchString] = (0, import_react26.useState)("");
6641
- const [searchMap, setSearchMap] = (0, import_react26.useState)({});
6642
- const [hoveredIndex, setHoveredIndex] = (0, import_react26.useState)(0);
6643
- const [hoveredIndexSearchList, setHoveredIndexSearchList] = (0, import_react26.useState)(0);
6642
+ const [filterBy, setFilterBy] = (0, import_react27.useState)(null);
6643
+ const [searchBy, setSearchBy] = (0, import_react27.useState)(null);
6644
+ const [groupBy, setGroupBy] = (0, import_react27.useState)(null);
6645
+ const [selectedTags, setSelectedTags] = (0, import_react27.useState)(null);
6646
+ const [searchString, setSearchString] = (0, import_react27.useState)("");
6647
+ const [searchMap, setSearchMap] = (0, import_react27.useState)({});
6648
+ const [hoveredIndex, setHoveredIndex] = (0, import_react27.useState)(0);
6649
+ const [hoveredIndexSearchList, setHoveredIndexSearchList] = (0, import_react27.useState)(0);
6644
6650
  const actionContext = typeof context === "string" ? (0, utils_exports.evalJSONContext)(context) : context;
6645
6651
  const contextSearch = { ...env.context, ...actionContext };
6646
6652
  const domainAction = domain ? Array.isArray(domain) ? [...domain] : (0, utils_exports.evalJSONDomain)(domain, contextSearch) : [];
@@ -6687,7 +6693,7 @@ var searchController = ({
6687
6693
  }
6688
6694
  }
6689
6695
  };
6690
- (0, import_react26.useEffect)(() => {
6696
+ (0, import_react27.useEffect)(() => {
6691
6697
  fetchData();
6692
6698
  }, [model, viewData]);
6693
6699
  const onChangeSearchInput = (search_string) => {
@@ -6769,7 +6775,7 @@ var searchController = ({
6769
6775
  return [...domain2];
6770
6776
  }
6771
6777
  };
6772
- const setTagSearch = (0, import_react26.useCallback)(
6778
+ const setTagSearch = (0, import_react27.useCallback)(
6773
6779
  (updatedMap) => {
6774
6780
  if (!updatedMap) return;
6775
6781
  const tagsSearch = Object.entries(updatedMap).map(
@@ -6832,7 +6838,7 @@ var searchController = ({
6832
6838
  },
6833
6839
  [searchMap]
6834
6840
  );
6835
- (0, import_react26.useEffect)(() => {
6841
+ (0, import_react27.useEffect)(() => {
6836
6842
  setTagSearch(searchMap);
6837
6843
  }, [searchMap]);
6838
6844
  const handleAddTagSearch = (tag) => {
package/dist/index.mjs CHANGED
@@ -4907,11 +4907,14 @@ var useGetSpecification = ({
4907
4907
  viewData,
4908
4908
  fields
4909
4909
  }) => {
4910
- const baseModel = {
4911
- name: String(model),
4912
- view: viewData,
4913
- fields
4914
- };
4910
+ const baseModel = useMemo5(
4911
+ () => ({
4912
+ name: String(model),
4913
+ view: viewData,
4914
+ fields
4915
+ }),
4916
+ [model, viewData, fields]
4917
+ );
4915
4918
  const initModel = useModel();
4916
4919
  const modelInstance = useMemo5(() => {
4917
4920
  if (viewData) {
@@ -6434,8 +6437,11 @@ var binaryFieldController = (props) => {
6434
6437
  };
6435
6438
  };
6436
6439
 
6440
+ // src/widget/basic/many2many-binary-field/controller.tsx
6441
+ import { useId as useId2, useRef as useRef4, useState as useState13 } from "react";
6442
+
6437
6443
  // src/widget/advance/table/table-head/controller.ts
6438
- import { useMemo as useMemo10, useRef as useRef4 } from "react";
6444
+ import { useMemo as useMemo10, useRef as useRef5 } from "react";
6439
6445
  var tableHeadController = (props) => {
6440
6446
  const {
6441
6447
  typeTable,
@@ -6446,7 +6452,7 @@ var tableHeadController = (props) => {
6446
6452
  setSelectedRowKeys
6447
6453
  } = props;
6448
6454
  const { rowIds: recordIds } = useGetRowIds(tableRef);
6449
- const selectedRowKeysRef = useRef4(recordIds);
6455
+ const selectedRowKeysRef = useRef5(recordIds);
6450
6456
  const isGroupTable = typeTable === "group";
6451
6457
  const recordsCheckedGroup = useMemo10(() => {
6452
6458
  if (!rows || !groupByList) return 0;
@@ -6501,11 +6507,11 @@ var tableHeadController = (props) => {
6501
6507
  };
6502
6508
 
6503
6509
  // src/widget/advance/table/table-view/controller.ts
6504
- import { useCallback as useCallback6, useEffect as useEffect14, useMemo as useMemo11, useState as useState13 } from "react";
6510
+ import { useCallback as useCallback6, useEffect as useEffect14, useMemo as useMemo11, useState as useState14 } from "react";
6505
6511
  import { domainHelper } from "@fctc/interface-logic/utils";
6506
6512
  var tableController = ({ data }) => {
6507
- const [rows, setRows] = useState13([]);
6508
- const [columnVisibility, setColumnVisibility] = useState13({});
6513
+ const [rows, setRows] = useState14([]);
6514
+ const [columnVisibility, setColumnVisibility] = useState14({});
6509
6515
  const dataModelFields = useMemo11(() => {
6510
6516
  return data?.fields?.map((field) => ({
6511
6517
  ...data.dataModel?.[field?.name],
@@ -6578,7 +6584,7 @@ var tableController = ({ data }) => {
6578
6584
  };
6579
6585
 
6580
6586
  // src/widget/advance/table/table-group/controller.ts
6581
- import { useEffect as useEffect15, useMemo as useMemo12, useState as useState14 } from "react";
6587
+ import { useEffect as useEffect15, useMemo as useMemo12, useState as useState15 } from "react";
6582
6588
  import { useAppSelector, selectList } from "@fctc/interface-logic/store";
6583
6589
  var tableGroupController = (props) => {
6584
6590
  const { env } = (0, provider_exports.useEnv)();
@@ -6595,10 +6601,10 @@ var tableGroupController = (props) => {
6595
6601
  groupByList,
6596
6602
  setSelectedRowKeys
6597
6603
  } = props;
6598
- const [pageGroup, setPageGroup] = useState14(0);
6604
+ const [pageGroup, setPageGroup] = useState15(0);
6599
6605
  const { selectedRowKeys } = useAppSelector(selectList);
6600
- const [isShowGroup, setIsShowGroup] = useState14(false);
6601
- const [colEmptyGroup, setColEmptyGroup] = useState14({
6606
+ const [isShowGroup, setIsShowGroup] = useState15(false);
6607
+ const [colEmptyGroup, setColEmptyGroup] = useState15({
6602
6608
  fromStart: 1,
6603
6609
  fromEnd: 1
6604
6610
  });
@@ -6713,7 +6719,7 @@ var tableGroupController = (props) => {
6713
6719
 
6714
6720
  // src/widget/advance/search/controller.ts
6715
6721
  var import_moment2 = __toESM(require_moment());
6716
- import { useCallback as useCallback7, useEffect as useEffect16, useState as useState15 } from "react";
6722
+ import { useCallback as useCallback7, useEffect as useEffect16, useState as useState16 } from "react";
6717
6723
 
6718
6724
  // src/constants.ts
6719
6725
  var constants_exports = {};
@@ -6729,14 +6735,14 @@ var searchController = ({
6729
6735
  fieldsList
6730
6736
  }) => {
6731
6737
  const { env } = (0, provider_exports.useEnv)();
6732
- const [filterBy, setFilterBy] = useState15(null);
6733
- const [searchBy, setSearchBy] = useState15(null);
6734
- const [groupBy, setGroupBy] = useState15(null);
6735
- const [selectedTags, setSelectedTags] = useState15(null);
6736
- const [searchString, setSearchString] = useState15("");
6737
- const [searchMap, setSearchMap] = useState15({});
6738
- const [hoveredIndex, setHoveredIndex] = useState15(0);
6739
- const [hoveredIndexSearchList, setHoveredIndexSearchList] = useState15(0);
6738
+ const [filterBy, setFilterBy] = useState16(null);
6739
+ const [searchBy, setSearchBy] = useState16(null);
6740
+ const [groupBy, setGroupBy] = useState16(null);
6741
+ const [selectedTags, setSelectedTags] = useState16(null);
6742
+ const [searchString, setSearchString] = useState16("");
6743
+ const [searchMap, setSearchMap] = useState16({});
6744
+ const [hoveredIndex, setHoveredIndex] = useState16(0);
6745
+ const [hoveredIndexSearchList, setHoveredIndexSearchList] = useState16(0);
6740
6746
  const actionContext = typeof context === "string" ? (0, utils_exports.evalJSONContext)(context) : context;
6741
6747
  const contextSearch = { ...env.context, ...actionContext };
6742
6748
  const domainAction = domain ? Array.isArray(domain) ? [...domain] : (0, utils_exports.evalJSONDomain)(domain, contextSearch) : [];
package/dist/widget.js CHANGED
@@ -4375,11 +4375,14 @@ var useGetSpecification = ({
4375
4375
  viewData,
4376
4376
  fields
4377
4377
  }) => {
4378
- const baseModel = {
4379
- name: String(model),
4380
- view: viewData,
4381
- fields
4382
- };
4378
+ const baseModel = (0, import_react11.useMemo)(
4379
+ () => ({
4380
+ name: String(model),
4381
+ view: viewData,
4382
+ fields
4383
+ }),
4384
+ [model, viewData, fields]
4385
+ );
4383
4386
  const initModel = (0, import_hooks3.useModel)();
4384
4387
  const modelInstance = (0, import_react11.useMemo)(() => {
4385
4388
  if (viewData) {
@@ -5577,8 +5580,11 @@ var binaryFieldController = (props) => {
5577
5580
  };
5578
5581
  };
5579
5582
 
5580
- // src/widget/advance/table/table-head/controller.ts
5583
+ // src/widget/basic/many2many-binary-field/controller.tsx
5581
5584
  var import_react23 = require("react");
5585
+
5586
+ // src/widget/advance/table/table-head/controller.ts
5587
+ var import_react24 = require("react");
5582
5588
  var tableHeadController = (props) => {
5583
5589
  const {
5584
5590
  typeTable,
@@ -5589,21 +5595,21 @@ var tableHeadController = (props) => {
5589
5595
  setSelectedRowKeys
5590
5596
  } = props;
5591
5597
  const { rowIds: recordIds } = useGetRowIds(tableRef);
5592
- const selectedRowKeysRef = (0, import_react23.useRef)(recordIds);
5598
+ const selectedRowKeysRef = (0, import_react24.useRef)(recordIds);
5593
5599
  const isGroupTable = typeTable === "group";
5594
- const recordsCheckedGroup = (0, import_react23.useMemo)(() => {
5600
+ const recordsCheckedGroup = (0, import_react24.useMemo)(() => {
5595
5601
  if (!rows || !groupByList) return 0;
5596
5602
  const groupBy = typeof groupByList === "object" ? groupByList?.contexts?.[0]?.group_by : void 0;
5597
5603
  return countSum(rows, groupBy);
5598
5604
  }, [rows, groupByList]);
5599
- const isAllGroupChecked = (0, import_react23.useMemo)(() => {
5605
+ const isAllGroupChecked = (0, import_react24.useMemo)(() => {
5600
5606
  if (!isGroupTable || !selectedRowKeys?.length) return false;
5601
5607
  const selectedLength = selectedRowKeys.filter((id) => id !== -1).length;
5602
5608
  const allRecordsSelected = recordIds.length === selectedRowKeys.length ? recordIds.length === selectedLength : false;
5603
5609
  const allGroupsSelected = recordsCheckedGroup === selectedRowKeys.length;
5604
5610
  return allGroupsSelected || allRecordsSelected;
5605
5611
  }, [isGroupTable, selectedRowKeys, recordIds, recordsCheckedGroup]);
5606
- const isAllNormalChecked = (0, import_react23.useMemo)(() => {
5612
+ const isAllNormalChecked = (0, import_react24.useMemo)(() => {
5607
5613
  if (isGroupTable || !selectedRowKeys?.length || !rows?.length) return false;
5608
5614
  return selectedRowKeys.length === rows.length && selectedRowKeys.every(
5609
5615
  (id) => rows.some((record) => record.id === id)
@@ -5644,23 +5650,23 @@ var tableHeadController = (props) => {
5644
5650
  };
5645
5651
 
5646
5652
  // src/widget/advance/table/table-view/controller.ts
5647
- var import_react24 = require("react");
5648
- var import_utils17 = require("@fctc/interface-logic/utils");
5653
+ var import_react25 = require("react");
5654
+ var import_utils18 = require("@fctc/interface-logic/utils");
5649
5655
  var tableController = ({ data }) => {
5650
- const [rows, setRows] = (0, import_react24.useState)([]);
5651
- const [columnVisibility, setColumnVisibility] = (0, import_react24.useState)({});
5652
- const dataModelFields = (0, import_react24.useMemo)(() => {
5656
+ const [rows, setRows] = (0, import_react25.useState)([]);
5657
+ const [columnVisibility, setColumnVisibility] = (0, import_react25.useState)({});
5658
+ const dataModelFields = (0, import_react25.useMemo)(() => {
5653
5659
  return data?.fields?.map((field) => ({
5654
5660
  ...data.dataModel?.[field?.name],
5655
5661
  ...field,
5656
5662
  string: field?.string || data.dataModel?.[field?.name]?.string
5657
5663
  })) ?? [];
5658
5664
  }, [data?.fields, data?.dataModel]);
5659
- const mergeFields = (0, import_react24.useMemo)(
5665
+ const mergeFields = (0, import_react25.useMemo)(
5660
5666
  () => mergeButtons(dataModelFields),
5661
5667
  [dataModelFields]
5662
5668
  );
5663
- const transformData = (0, import_react24.useCallback)(
5669
+ const transformData = (0, import_react25.useCallback)(
5664
5670
  (dataList) => {
5665
5671
  if (!dataList) return [];
5666
5672
  return dataList.map((item) => {
@@ -5682,16 +5688,16 @@ var tableController = ({ data }) => {
5682
5688
  },
5683
5689
  [data?.typeTable]
5684
5690
  );
5685
- (0, import_react24.useEffect)(() => {
5691
+ (0, import_react25.useEffect)(() => {
5686
5692
  setRows(transformData(data?.records));
5687
5693
  }, [data?.records, transformData]);
5688
- const columns = (0, import_react24.useMemo)(() => {
5694
+ const columns = (0, import_react25.useMemo)(() => {
5689
5695
  try {
5690
5696
  return mergeFields?.filter((item) => {
5691
- return item?.widget !== "details_Receive_money" && !(item?.column_invisible ? import_utils17.domainHelper.matchDomains(
5697
+ return item?.widget !== "details_Receive_money" && !(item?.column_invisible ? import_utils18.domainHelper.matchDomains(
5692
5698
  data.context,
5693
5699
  item?.column_invisible
5694
- ) : item?.invisible ? import_utils17.domainHelper.matchDomains(data.context, item?.invisible) : false);
5700
+ ) : item?.invisible ? import_utils18.domainHelper.matchDomains(data.context, item?.invisible) : false);
5695
5701
  })?.map((field) => {
5696
5702
  const overridden = columnVisibility[field?.name];
5697
5703
  return {
@@ -5706,7 +5712,7 @@ var tableController = ({ data }) => {
5706
5712
  return [];
5707
5713
  }
5708
5714
  }, [mergeFields, data?.context, columnVisibility]);
5709
- const onToggleColumnOptional = (0, import_react24.useCallback)((item) => {
5715
+ const onToggleColumnOptional = (0, import_react25.useCallback)((item) => {
5710
5716
  setColumnVisibility((prev) => ({
5711
5717
  ...prev,
5712
5718
  [item?.name]: item?.optional === "show" ? "hide" : "show"
@@ -5721,7 +5727,7 @@ var tableController = ({ data }) => {
5721
5727
  };
5722
5728
 
5723
5729
  // src/widget/advance/table/table-group/controller.ts
5724
- var import_react25 = require("react");
5730
+ var import_react26 = require("react");
5725
5731
  var import_store = require("@fctc/interface-logic/store");
5726
5732
  var tableGroupController = (props) => {
5727
5733
  const { env } = (0, provider_exports.useEnv)();
@@ -5738,15 +5744,15 @@ var tableGroupController = (props) => {
5738
5744
  groupByList,
5739
5745
  setSelectedRowKeys
5740
5746
  } = props;
5741
- const [pageGroup, setPageGroup] = (0, import_react25.useState)(0);
5747
+ const [pageGroup, setPageGroup] = (0, import_react26.useState)(0);
5742
5748
  const { selectedRowKeys } = (0, import_store.useAppSelector)(import_store.selectList);
5743
- const [isShowGroup, setIsShowGroup] = (0, import_react25.useState)(false);
5744
- const [colEmptyGroup, setColEmptyGroup] = (0, import_react25.useState)({
5749
+ const [isShowGroup, setIsShowGroup] = (0, import_react26.useState)(false);
5750
+ const [colEmptyGroup, setColEmptyGroup] = (0, import_react26.useState)({
5745
5751
  fromStart: 1,
5746
5752
  fromEnd: 1
5747
5753
  });
5748
5754
  const domain = row?.__domain;
5749
- const processedData = (0, import_react25.useMemo)(() => {
5755
+ const processedData = (0, import_react26.useMemo)(() => {
5750
5756
  const calculateColSpanEmpty = () => {
5751
5757
  const startIndex = columns.findIndex(
5752
5758
  (col) => col.field.type === "monetary" && typeof row[col.key] === "number" || col.field.aggregator === "sum"
@@ -5761,7 +5767,7 @@ var tableGroupController = (props) => {
5761
5767
  };
5762
5768
  return calculateColSpanEmpty();
5763
5769
  }, [columns, row]);
5764
- const shouldFetchData = (0, import_react25.useMemo)(() => {
5770
+ const shouldFetchData = (0, import_react26.useMemo)(() => {
5765
5771
  return !!isShowGroup;
5766
5772
  }, [isShowGroup]);
5767
5773
  const enabled = shouldFetchData && !!processedData;
@@ -5830,7 +5836,7 @@ var tableGroupController = (props) => {
5830
5836
  }
5831
5837
  toggleShowGroup();
5832
5838
  };
5833
- (0, import_react25.useEffect)(() => {
5839
+ (0, import_react26.useEffect)(() => {
5834
5840
  if (!isDataGroupFetched || !rowsGroup || !checkedAll || allIdsNull || typeTableGroup === "group") {
5835
5841
  return;
5836
5842
  }
@@ -5856,7 +5862,7 @@ var tableGroupController = (props) => {
5856
5862
 
5857
5863
  // src/widget/advance/search/controller.ts
5858
5864
  var import_moment2 = __toESM(require_moment());
5859
- var import_react26 = require("react");
5865
+ var import_react27 = require("react");
5860
5866
 
5861
5867
  // src/constants.ts
5862
5868
  var constants_exports = {};
@@ -5871,14 +5877,14 @@ var searchController = ({
5871
5877
  fieldsList
5872
5878
  }) => {
5873
5879
  const { env } = (0, provider_exports.useEnv)();
5874
- const [filterBy, setFilterBy] = (0, import_react26.useState)(null);
5875
- const [searchBy, setSearchBy] = (0, import_react26.useState)(null);
5876
- const [groupBy, setGroupBy] = (0, import_react26.useState)(null);
5877
- const [selectedTags, setSelectedTags] = (0, import_react26.useState)(null);
5878
- const [searchString, setSearchString] = (0, import_react26.useState)("");
5879
- const [searchMap, setSearchMap] = (0, import_react26.useState)({});
5880
- const [hoveredIndex, setHoveredIndex] = (0, import_react26.useState)(0);
5881
- const [hoveredIndexSearchList, setHoveredIndexSearchList] = (0, import_react26.useState)(0);
5880
+ const [filterBy, setFilterBy] = (0, import_react27.useState)(null);
5881
+ const [searchBy, setSearchBy] = (0, import_react27.useState)(null);
5882
+ const [groupBy, setGroupBy] = (0, import_react27.useState)(null);
5883
+ const [selectedTags, setSelectedTags] = (0, import_react27.useState)(null);
5884
+ const [searchString, setSearchString] = (0, import_react27.useState)("");
5885
+ const [searchMap, setSearchMap] = (0, import_react27.useState)({});
5886
+ const [hoveredIndex, setHoveredIndex] = (0, import_react27.useState)(0);
5887
+ const [hoveredIndexSearchList, setHoveredIndexSearchList] = (0, import_react27.useState)(0);
5882
5888
  const actionContext = typeof context === "string" ? (0, utils_exports.evalJSONContext)(context) : context;
5883
5889
  const contextSearch = { ...env.context, ...actionContext };
5884
5890
  const domainAction = domain ? Array.isArray(domain) ? [...domain] : (0, utils_exports.evalJSONDomain)(domain, contextSearch) : [];
@@ -5925,7 +5931,7 @@ var searchController = ({
5925
5931
  }
5926
5932
  }
5927
5933
  };
5928
- (0, import_react26.useEffect)(() => {
5934
+ (0, import_react27.useEffect)(() => {
5929
5935
  fetchData();
5930
5936
  }, [model, viewData]);
5931
5937
  const onChangeSearchInput = (search_string) => {
@@ -6007,7 +6013,7 @@ var searchController = ({
6007
6013
  return [...domain2];
6008
6014
  }
6009
6015
  };
6010
- const setTagSearch = (0, import_react26.useCallback)(
6016
+ const setTagSearch = (0, import_react27.useCallback)(
6011
6017
  (updatedMap) => {
6012
6018
  if (!updatedMap) return;
6013
6019
  const tagsSearch = Object.entries(updatedMap).map(
@@ -6070,7 +6076,7 @@ var searchController = ({
6070
6076
  },
6071
6077
  [searchMap]
6072
6078
  );
6073
- (0, import_react26.useEffect)(() => {
6079
+ (0, import_react27.useEffect)(() => {
6074
6080
  setTagSearch(searchMap);
6075
6081
  }, [searchMap]);
6076
6082
  const handleAddTagSearch = (tag) => {
package/dist/widget.mjs CHANGED
@@ -4443,11 +4443,14 @@ var useGetSpecification = ({
4443
4443
  viewData,
4444
4444
  fields
4445
4445
  }) => {
4446
- const baseModel = {
4447
- name: String(model),
4448
- view: viewData,
4449
- fields
4450
- };
4446
+ const baseModel = useMemo5(
4447
+ () => ({
4448
+ name: String(model),
4449
+ view: viewData,
4450
+ fields
4451
+ }),
4452
+ [model, viewData, fields]
4453
+ );
4451
4454
  const initModel = useModel();
4452
4455
  const modelInstance = useMemo5(() => {
4453
4456
  if (viewData) {
@@ -5649,8 +5652,11 @@ var binaryFieldController = (props) => {
5649
5652
  };
5650
5653
  };
5651
5654
 
5655
+ // src/widget/basic/many2many-binary-field/controller.tsx
5656
+ import { useId as useId2, useRef as useRef4, useState as useState13 } from "react";
5657
+
5652
5658
  // src/widget/advance/table/table-head/controller.ts
5653
- import { useMemo as useMemo10, useRef as useRef4 } from "react";
5659
+ import { useMemo as useMemo10, useRef as useRef5 } from "react";
5654
5660
  var tableHeadController = (props) => {
5655
5661
  const {
5656
5662
  typeTable,
@@ -5661,7 +5667,7 @@ var tableHeadController = (props) => {
5661
5667
  setSelectedRowKeys
5662
5668
  } = props;
5663
5669
  const { rowIds: recordIds } = useGetRowIds(tableRef);
5664
- const selectedRowKeysRef = useRef4(recordIds);
5670
+ const selectedRowKeysRef = useRef5(recordIds);
5665
5671
  const isGroupTable = typeTable === "group";
5666
5672
  const recordsCheckedGroup = useMemo10(() => {
5667
5673
  if (!rows || !groupByList) return 0;
@@ -5716,11 +5722,11 @@ var tableHeadController = (props) => {
5716
5722
  };
5717
5723
 
5718
5724
  // src/widget/advance/table/table-view/controller.ts
5719
- import { useCallback as useCallback6, useEffect as useEffect14, useMemo as useMemo11, useState as useState13 } from "react";
5725
+ import { useCallback as useCallback6, useEffect as useEffect14, useMemo as useMemo11, useState as useState14 } from "react";
5720
5726
  import { domainHelper } from "@fctc/interface-logic/utils";
5721
5727
  var tableController = ({ data }) => {
5722
- const [rows, setRows] = useState13([]);
5723
- const [columnVisibility, setColumnVisibility] = useState13({});
5728
+ const [rows, setRows] = useState14([]);
5729
+ const [columnVisibility, setColumnVisibility] = useState14({});
5724
5730
  const dataModelFields = useMemo11(() => {
5725
5731
  return data?.fields?.map((field) => ({
5726
5732
  ...data.dataModel?.[field?.name],
@@ -5793,7 +5799,7 @@ var tableController = ({ data }) => {
5793
5799
  };
5794
5800
 
5795
5801
  // src/widget/advance/table/table-group/controller.ts
5796
- import { useEffect as useEffect15, useMemo as useMemo12, useState as useState14 } from "react";
5802
+ import { useEffect as useEffect15, useMemo as useMemo12, useState as useState15 } from "react";
5797
5803
  import { useAppSelector, selectList } from "@fctc/interface-logic/store";
5798
5804
  var tableGroupController = (props) => {
5799
5805
  const { env } = (0, provider_exports.useEnv)();
@@ -5810,10 +5816,10 @@ var tableGroupController = (props) => {
5810
5816
  groupByList,
5811
5817
  setSelectedRowKeys
5812
5818
  } = props;
5813
- const [pageGroup, setPageGroup] = useState14(0);
5819
+ const [pageGroup, setPageGroup] = useState15(0);
5814
5820
  const { selectedRowKeys } = useAppSelector(selectList);
5815
- const [isShowGroup, setIsShowGroup] = useState14(false);
5816
- const [colEmptyGroup, setColEmptyGroup] = useState14({
5821
+ const [isShowGroup, setIsShowGroup] = useState15(false);
5822
+ const [colEmptyGroup, setColEmptyGroup] = useState15({
5817
5823
  fromStart: 1,
5818
5824
  fromEnd: 1
5819
5825
  });
@@ -5928,7 +5934,7 @@ var tableGroupController = (props) => {
5928
5934
 
5929
5935
  // src/widget/advance/search/controller.ts
5930
5936
  var import_moment2 = __toESM(require_moment());
5931
- import { useCallback as useCallback7, useEffect as useEffect16, useState as useState15 } from "react";
5937
+ import { useCallback as useCallback7, useEffect as useEffect16, useState as useState16 } from "react";
5932
5938
 
5933
5939
  // src/constants.ts
5934
5940
  var constants_exports = {};
@@ -5944,14 +5950,14 @@ var searchController = ({
5944
5950
  fieldsList
5945
5951
  }) => {
5946
5952
  const { env } = (0, provider_exports.useEnv)();
5947
- const [filterBy, setFilterBy] = useState15(null);
5948
- const [searchBy, setSearchBy] = useState15(null);
5949
- const [groupBy, setGroupBy] = useState15(null);
5950
- const [selectedTags, setSelectedTags] = useState15(null);
5951
- const [searchString, setSearchString] = useState15("");
5952
- const [searchMap, setSearchMap] = useState15({});
5953
- const [hoveredIndex, setHoveredIndex] = useState15(0);
5954
- const [hoveredIndexSearchList, setHoveredIndexSearchList] = useState15(0);
5953
+ const [filterBy, setFilterBy] = useState16(null);
5954
+ const [searchBy, setSearchBy] = useState16(null);
5955
+ const [groupBy, setGroupBy] = useState16(null);
5956
+ const [selectedTags, setSelectedTags] = useState16(null);
5957
+ const [searchString, setSearchString] = useState16("");
5958
+ const [searchMap, setSearchMap] = useState16({});
5959
+ const [hoveredIndex, setHoveredIndex] = useState16(0);
5960
+ const [hoveredIndexSearchList, setHoveredIndexSearchList] = useState16(0);
5955
5961
  const actionContext = typeof context === "string" ? (0, utils_exports.evalJSONContext)(context) : context;
5956
5962
  const contextSearch = { ...env.context, ...actionContext };
5957
5963
  const domainAction = domain ? Array.isArray(domain) ? [...domain] : (0, utils_exports.evalJSONDomain)(domain, contextSearch) : [];
package/package.json CHANGED
@@ -1,92 +1,92 @@
1
- {
2
- "name": "@fctc/widget-logic",
3
- "version": "5.2.7",
4
- "types": "dist/index.d.ts",
5
- "main": "dist/index.cjs",
6
- "module": "dist/index.mjs",
7
- "exports": {
8
- ".": {
9
- "types": "./dist/index.d.ts",
10
- "import": "./dist/index.mjs",
11
- "require": "./dist/index.cjs"
12
- },
13
- "./hooks": {
14
- "types": "./dist/hooks.d.ts",
15
- "import": "./dist/hooks.mjs",
16
- "require": "./dist/hooks.cjs"
17
- },
18
- "./widget": {
19
- "types": "./dist/widget.d.ts",
20
- "import": "./dist/widget.mjs",
21
- "require": "./dist/widget.cjs"
22
- },
23
- "./icons": {
24
- "types": "./dist/icons.d.ts",
25
- "import": "./dist/icons.mjs",
26
- "require": "./dist/icons.cjs"
27
- },
28
- "./utils": {
29
- "types": "./dist/utils.d.ts",
30
- "import": "./dist/utils.mjs",
31
- "require": "./dist/utils.cjs"
32
- },
33
- "./store": {
34
- "types": "./dist/store.d.ts",
35
- "import": "./dist/store.mjs",
36
- "require": "./dist/store.cjs"
37
- },
38
- "./config": {
39
- "types": "./dist/config.d.ts",
40
- "import": "./dist/config.mjs",
41
- "require": "./dist/config.cjs"
42
- },
43
- "./constants": {
44
- "types": "./dist/constants.d.ts",
45
- "import": "./dist/constants.mjs",
46
- "require": "./dist/constants.cjs"
47
- },
48
- "./environment": {
49
- "types": "./dist/environment.d.ts",
50
- "import": "./dist/environment.mjs",
51
- "require": "./dist/environment.cjs"
52
- },
53
- "./provider": {
54
- "types": "./dist/provider.d.ts",
55
- "import": "./dist/provider.mjs",
56
- "require": "./dist/provider.cjs"
57
- },
58
- "./services": {
59
- "types": "./dist/services.d.ts",
60
- "import": "./dist/services.mjs",
61
- "require": "./dist/services.cjs"
62
- },
63
- "./types": {
64
- "types": "./dist/types.d.ts",
65
- "import": "./dist/types.mjs",
66
- "require": "./dist/types.cjs"
67
- }
68
- },
69
- "files": [
70
- "dist"
71
- ],
72
- "scripts": {
73
- "build": "tsup",
74
- "test": "jest"
75
- },
76
- "dependencies": {
77
- "@fctc/interface-logic": "^4.5.3",
78
- "@tanstack/react-query": "^5.84.0",
79
- "i18next": "^25.3.2",
80
- "i18next-browser-languagedetector": "^8.2.0",
81
- "react-i18next": "^15.6.1"
82
- },
83
- "devDependencies": {
84
- "@types/react": "^18.3.1",
85
- "jest": "^29.7.0",
86
- "react": "18.0.0",
87
- "tsup": "^8.0.0",
88
- "typescript": "^5.8.2"
89
- },
90
- "packageManager": "yarn@1.22.0",
91
- "peerDependencies": {}
92
- }
1
+ {
2
+ "name": "@fctc/widget-logic",
3
+ "version": "5.2.8",
4
+ "types": "dist/index.d.ts",
5
+ "main": "dist/index.cjs",
6
+ "module": "dist/index.mjs",
7
+ "exports": {
8
+ ".": {
9
+ "types": "./dist/index.d.ts",
10
+ "import": "./dist/index.mjs",
11
+ "require": "./dist/index.cjs"
12
+ },
13
+ "./hooks": {
14
+ "types": "./dist/hooks.d.ts",
15
+ "import": "./dist/hooks.mjs",
16
+ "require": "./dist/hooks.cjs"
17
+ },
18
+ "./widget": {
19
+ "types": "./dist/widget.d.ts",
20
+ "import": "./dist/widget.mjs",
21
+ "require": "./dist/widget.cjs"
22
+ },
23
+ "./icons": {
24
+ "types": "./dist/icons.d.ts",
25
+ "import": "./dist/icons.mjs",
26
+ "require": "./dist/icons.cjs"
27
+ },
28
+ "./utils": {
29
+ "types": "./dist/utils.d.ts",
30
+ "import": "./dist/utils.mjs",
31
+ "require": "./dist/utils.cjs"
32
+ },
33
+ "./store": {
34
+ "types": "./dist/store.d.ts",
35
+ "import": "./dist/store.mjs",
36
+ "require": "./dist/store.cjs"
37
+ },
38
+ "./config": {
39
+ "types": "./dist/config.d.ts",
40
+ "import": "./dist/config.mjs",
41
+ "require": "./dist/config.cjs"
42
+ },
43
+ "./constants": {
44
+ "types": "./dist/constants.d.ts",
45
+ "import": "./dist/constants.mjs",
46
+ "require": "./dist/constants.cjs"
47
+ },
48
+ "./environment": {
49
+ "types": "./dist/environment.d.ts",
50
+ "import": "./dist/environment.mjs",
51
+ "require": "./dist/environment.cjs"
52
+ },
53
+ "./provider": {
54
+ "types": "./dist/provider.d.ts",
55
+ "import": "./dist/provider.mjs",
56
+ "require": "./dist/provider.cjs"
57
+ },
58
+ "./services": {
59
+ "types": "./dist/services.d.ts",
60
+ "import": "./dist/services.mjs",
61
+ "require": "./dist/services.cjs"
62
+ },
63
+ "./types": {
64
+ "types": "./dist/types.d.ts",
65
+ "import": "./dist/types.mjs",
66
+ "require": "./dist/types.cjs"
67
+ }
68
+ },
69
+ "files": [
70
+ "dist"
71
+ ],
72
+ "scripts": {
73
+ "build": "tsup",
74
+ "test": "jest"
75
+ },
76
+ "dependencies": {
77
+ "@fctc/interface-logic": "^4.5.3",
78
+ "@tanstack/react-query": "^5.84.0",
79
+ "i18next": "^25.3.2",
80
+ "i18next-browser-languagedetector": "^8.2.0",
81
+ "react-i18next": "^15.6.1"
82
+ },
83
+ "devDependencies": {
84
+ "@types/react": "^18.3.1",
85
+ "jest": "^29.7.0",
86
+ "react": "18.0.0",
87
+ "tsup": "^8.0.0",
88
+ "typescript": "^5.8.2"
89
+ },
90
+ "packageManager": "yarn@1.22.0",
91
+ "peerDependencies": {}
92
+ }