@knockout-js/layout 0.1.1-beta.3 → 0.1.1-beta.4

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.
@@ -1,12 +1,13 @@
1
1
  import { getDictItems } from "@knockout-js/api";
2
2
  import { useEffect, useState } from "react";
3
- let distItemList = [], timeoutFn = undefined;
4
- const collectCode = [];
3
+ let timeoutFn = undefined, isLoad = false;
4
+ const distData = {}, collectCode = [];
5
5
  /**
6
6
  * 用来处理缓存字典项列表
7
7
  * @returns
8
8
  */ export const useDistItems = (dictCode, dataSource)=>{
9
- const [items, setItems] = useState([]);
9
+ var _distData_dictCode;
10
+ const [items, setItems] = useState((_distData_dictCode = distData[dictCode]) !== null && _distData_dictCode !== void 0 ? _distData_dictCode : []);
10
11
  /**
11
12
  * 通过列表设置存储
12
13
  * @param list
@@ -17,13 +18,12 @@ const collectCode = [];
17
18
  return (_item_dict = item.dict) === null || _item_dict === void 0 ? void 0 : _item_dict.code;
18
19
  }))
19
20
  ];
20
- // 清理掉旧数据
21
- const newDistItems = distItemList.filter((item)=>{
22
- var _item_dict;
23
- return !dictCodes.includes((_item_dict = item.dict) === null || _item_dict === void 0 ? void 0 : _item_dict.code);
21
+ dictCodes.forEach((code)=>{
22
+ if (code) distData[code] = list.filter((item)=>{
23
+ var _item_dict;
24
+ return ((_item_dict = item.dict) === null || _item_dict === void 0 ? void 0 : _item_dict.code) == code;
25
+ });
24
26
  });
25
- newDistItems.push(...list);
26
- distItemList = newDistItems;
27
27
  };
28
28
  /**
29
29
  * 刷新列表接口
@@ -34,26 +34,33 @@ const collectCode = [];
34
34
  useEffect(()=>{
35
35
  if (dataSource === null || dataSource === void 0 ? void 0 : dataSource.length) setDistItems(dataSource);
36
36
  else {
37
- if (!collectCode.includes(dictCode)) collectCode.push(dictCode);
38
- clearTimeout(timeoutFn);
39
- // 设置收集时间毫秒内收集需要请求的数据
40
- timeoutFn = setTimeout(()=>{
41
- getDictItems(collectCode).then((result)=>{
42
- if (result.length) setDistItems(result);
43
- });
44
- }, 100);
37
+ if (!collectCode.includes(dictCode)) {
38
+ collectCode.push(dictCode);
39
+ isLoad = true;
40
+ }
41
+ if (isLoad) {
42
+ clearTimeout(timeoutFn);
43
+ timeoutFn = setTimeout(()=>{
44
+ getDictItems(collectCode).then((result)=>{
45
+ if (result.length) setDistItems(result);
46
+ isLoad = false;
47
+ });
48
+ }, 100);
49
+ }
45
50
  }
46
51
  }, [
47
52
  dictCode,
48
53
  dataSource
49
54
  ]);
50
55
  useEffect(()=>{
51
- setItems(distItemList.filter((item)=>{
56
+ var _distData_dictCode;
57
+ var _distData_dictCode_filter;
58
+ setItems((_distData_dictCode_filter = (_distData_dictCode = distData[dictCode]) === null || _distData_dictCode === void 0 ? void 0 : _distData_dictCode.filter((item)=>{
52
59
  var _item_dict;
53
60
  return ((_item_dict = item.dict) === null || _item_dict === void 0 ? void 0 : _item_dict.code) === dictCode;
54
- }));
61
+ })) !== null && _distData_dictCode_filter !== void 0 ? _distData_dictCode_filter : []);
55
62
  }, [
56
- distItemList
63
+ distData[dictCode]
57
64
  ]);
58
65
  return [
59
66
  items,
@@ -1 +1 @@
1
- {"version":3,"sources":["D:\\codeing\\git\\github\\knockout-js\\packages\\layout\\src\\components\\dictionary\\index.ts"],"sourcesContent":["import { getDictItems } from \"@knockout-js/api\";\r\nimport { AppDictItem } from \"@knockout-js/api/ucenter\";\r\nimport { useEffect, useState } from \"react\";\r\n\r\nlet distItemList: AppDictItem[] = [],\r\n timeoutFn: NodeJS.Timeout | undefined = undefined;\r\nconst collectCode: string[] = [];\r\n\r\n/**\r\n * 用来处理缓存字典项列表\r\n * @returns\r\n */\r\nexport const useDistItems = (dictCode: string, dataSource?: AppDictItem[]): [AppDictItem[], () => Promise<void>] => {\r\n\r\n const [items, setItems] = useState<AppDictItem[]>([]);\r\n\r\n /**\r\n * 通过列表设置存储\r\n * @param list\r\n */\r\n const setDistItems = (list: AppDictItem[]) => {\r\n const dictCodes = [...new Set(list.map(item => item.dict?.code))];\r\n // 清理掉旧数据\r\n const newDistItems = distItemList.filter(item => !dictCodes.includes(item.dict?.code));\r\n newDistItems.push(...list);\r\n distItemList = newDistItems;\r\n }\r\n\r\n /**\r\n * 刷新列表接口\r\n */\r\n const reloadDistItems = async () => {\r\n const result = await getDictItems(dictCode, true);\r\n if (result.length) {\r\n setDistItems(result);\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n if (dataSource?.length) {\r\n setDistItems(dataSource);\r\n } else {\r\n if (!collectCode.includes(dictCode)) {\r\n collectCode.push(dictCode);\r\n }\r\n clearTimeout(timeoutFn)\r\n // 设置收集时间毫秒内收集需要请求的数据\r\n timeoutFn = setTimeout(() => {\r\n getDictItems(collectCode).then(result => {\r\n if (result.length) {\r\n setDistItems(result);\r\n }\r\n });\r\n }, 100);\r\n }\r\n }, [dictCode, dataSource]);\r\n\r\n useEffect(() => {\r\n setItems(distItemList.filter(item => item.dict?.code === dictCode))\r\n }, [distItemList])\r\n\r\n\r\n return [items, reloadDistItems];\r\n}\r\n"],"names":["getDictItems","useEffect","useState","distItemList","timeoutFn","undefined","collectCode","useDistItems","dictCode","dataSource","items","setItems","setDistItems","list","dictCodes","Set","map","item","dict","code","newDistItems","filter","includes","push","reloadDistItems","result","length","clearTimeout","setTimeout","then"],"mappings":"AAAA,SAASA,YAAY,QAAQ,mBAAmB;AAEhD,SAASC,SAAS,EAAEC,QAAQ,QAAQ,QAAQ;AAE5C,IAAIC,eAA8B,EAAE,EAClCC,YAAwCC;AAC1C,MAAMC,cAAwB,EAAE;AAEhC;;;CAGC,GACD,OAAO,MAAMC,eAAe,CAACC,UAAkBC,aAAqE;IAElH,MAAM,CAACC,OAAOC,SAAS,GAAGT,SAAwB,EAAE;IAEpD;;;GAGC,GACD,MAAMU,eAAe,CAACC,OAAwB;QAC5C,MAAMC,YAAY;eAAI,IAAIC,IAAIF,KAAKG,GAAG,CAACC,CAAAA;oBAAQA;gBAAAA,OAAAA,CAAAA,aAAAA,KAAKC,IAAI,cAATD,wBAAAA,KAAAA,IAAAA,WAAWE,IAAI;;SAAG;QACjE,SAAS;QACT,MAAMC,eAAejB,aAAakB,MAAM,CAACJ,CAAAA;gBAA4BA;YAApB,OAAA,CAACH,UAAUQ,QAAQ,CAACL,CAAAA,aAAAA,KAAKC,IAAI,cAATD,wBAAAA,KAAAA,IAAAA,WAAWE,IAAI;;QACpFC,aAAaG,IAAI,IAAIV;QACrBV,eAAeiB;IACjB;IAEA;;GAEC,GACD,MAAMI,kBAAkB,UAAY;QAClC,MAAMC,SAAS,MAAMzB,aAAaQ,UAAU,IAAI;QAChD,IAAIiB,OAAOC,MAAM,EACfd,aAAaa;IAEjB;IAEAxB,UAAU,IAAM;QACd,IAAIQ,uBAAAA,wBAAAA,KAAAA,IAAAA,WAAYiB,MAAM,EACpBd,aAAaH;aACR;YACL,IAAI,CAACH,YAAYgB,QAAQ,CAACd,WACxBF,YAAYiB,IAAI,CAACf;YAEnBmB,aAAavB;YACb,qBAAqB;YACrBA,YAAYwB,WAAW,IAAM;gBAC3B5B,aAAaM,aAAauB,IAAI,CAACJ,CAAAA,SAAU;oBACvC,IAAIA,OAAOC,MAAM,EACfd,aAAaa;gBAEjB;YACF,GAAG;QACL,CAAC;IACH,GAAG;QAACjB;QAAUC;KAAW;IAEzBR,UAAU,IAAM;QACdU,SAASR,aAAakB,MAAM,CAACJ,CAAAA;gBAAQA;YAAAA,OAAAA,CAAAA,CAAAA,aAAAA,KAAKC,IAAI,cAATD,wBAAAA,KAAAA,IAAAA,WAAWE,IAAI,AAAD,MAAMX;;IAC3D,GAAG;QAACL;KAAa;IAGjB,OAAO;QAACO;QAAOc;KAAgB;AACjC,EAAC"}
1
+ {"version":3,"sources":["D:\\codeing\\git\\github\\knockout-js\\packages\\layout\\src\\components\\dictionary\\index.ts"],"sourcesContent":["import { getDictItems } from \"@knockout-js/api\";\r\nimport { AppDictItem } from \"@knockout-js/api/ucenter\";\r\nimport { useEffect, useState } from \"react\";\r\n\r\nlet timeoutFn: NodeJS.Timeout | undefined = undefined, isLoad = false;\r\nconst distData: Record<string, AppDictItem[] | undefined> = {},\r\n collectCode: string[] = [];\r\n\r\n/**\r\n * 用来处理缓存字典项列表\r\n * @returns\r\n */\r\nexport const useDistItems = (dictCode: string, dataSource?: AppDictItem[]): [AppDictItem[], () => Promise<void>] => {\r\n\r\n const [items, setItems] = useState<AppDictItem[]>(distData[dictCode] ?? []);\r\n\r\n /**\r\n * 通过列表设置存储\r\n * @param list\r\n */\r\n const setDistItems = (list: AppDictItem[]) => {\r\n const dictCodes = [...new Set(list.map(item => item.dict?.code))];\r\n dictCodes.forEach(code => {\r\n if (code) {\r\n distData[code] = list.filter(item => item.dict?.code == code);\r\n }\r\n })\r\n }\r\n\r\n /**\r\n * 刷新列表接口\r\n */\r\n const reloadDistItems = async () => {\r\n const result = await getDictItems(dictCode, true);\r\n if (result.length) {\r\n setDistItems(result);\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n if (dataSource?.length) {\r\n setDistItems(dataSource);\r\n } else {\r\n if (!collectCode.includes(dictCode)) {\r\n collectCode.push(dictCode);\r\n isLoad = true;\r\n }\r\n if (isLoad) {\r\n clearTimeout(timeoutFn)\r\n timeoutFn = setTimeout(() => {\r\n getDictItems(collectCode).then(result => {\r\n if (result.length) {\r\n setDistItems(result);\r\n }\r\n isLoad = false;\r\n });\r\n }, 100);\r\n }\r\n }\r\n }, [dictCode, dataSource]);\r\n\r\n useEffect(() => {\r\n setItems(distData[dictCode]?.filter(item => item.dict?.code === dictCode) ?? [])\r\n }, [distData[dictCode]])\r\n\r\n\r\n return [items, reloadDistItems];\r\n}\r\n"],"names":["getDictItems","useEffect","useState","timeoutFn","undefined","isLoad","distData","collectCode","useDistItems","dictCode","dataSource","items","setItems","setDistItems","list","dictCodes","Set","map","item","dict","code","forEach","filter","reloadDistItems","result","length","includes","push","clearTimeout","setTimeout","then"],"mappings":"AAAA,SAASA,YAAY,QAAQ,mBAAmB;AAEhD,SAASC,SAAS,EAAEC,QAAQ,QAAQ,QAAQ;AAE5C,IAAIC,YAAwCC,WAAWC,SAAS,KAAK;AACrE,MAAMC,WAAsD,CAAC,GAC3DC,cAAwB,EAAE;AAE5B;;;CAGC,GACD,OAAO,MAAMC,eAAe,CAACC,UAAkBC,aAAqE;QAEhEJ;IAAlD,MAAM,CAACK,OAAOC,SAAS,GAAGV,SAAwBI,CAAAA,qBAAAA,QAAQ,CAACG,SAAS,cAAlBH,gCAAAA,qBAAsB,EAAE;IAE1E;;;GAGC,GACD,MAAMO,eAAe,CAACC,OAAwB;QAC5C,MAAMC,YAAY;eAAI,IAAIC,IAAIF,KAAKG,GAAG,CAACC,CAAAA;oBAAQA;gBAAAA,OAAAA,CAAAA,aAAAA,KAAKC,IAAI,cAATD,wBAAAA,KAAAA,IAAAA,WAAWE,IAAI;;SAAG;QACjEL,UAAUM,OAAO,CAACD,CAAAA,OAAQ;YACxB,IAAIA,MACFd,QAAQ,CAACc,KAAK,GAAGN,KAAKQ,MAAM,CAACJ,CAAAA;oBAAQA;gBAAAA,OAAAA,CAAAA,CAAAA,aAAAA,KAAKC,IAAI,cAATD,wBAAAA,KAAAA,IAAAA,WAAWE,IAAI,AAAD,KAAKA;;QAE5D;IACF;IAEA;;GAEC,GACD,MAAMG,kBAAkB,UAAY;QAClC,MAAMC,SAAS,MAAMxB,aAAaS,UAAU,IAAI;QAChD,IAAIe,OAAOC,MAAM,EACfZ,aAAaW;IAEjB;IAEAvB,UAAU,IAAM;QACd,IAAIS,uBAAAA,wBAAAA,KAAAA,IAAAA,WAAYe,MAAM,EACpBZ,aAAaH;aACR;YACL,IAAI,CAACH,YAAYmB,QAAQ,CAACjB,WAAW;gBACnCF,YAAYoB,IAAI,CAAClB;gBACjBJ,SAAS,IAAI;YACf,CAAC;YACD,IAAIA,QAAQ;gBACVuB,aAAazB;gBACbA,YAAY0B,WAAW,IAAM;oBAC3B7B,aAAaO,aAAauB,IAAI,CAACN,CAAAA,SAAU;wBACvC,IAAIA,OAAOC,MAAM,EACfZ,aAAaW;wBAEfnB,SAAS,KAAK;oBAChB;gBACF,GAAG;YACL,CAAC;QACH,CAAC;IACH,GAAG;QAACI;QAAUC;KAAW;IAEzBT,UAAU,IAAM;YACLK;YAAAA;QAATM,SAASN,CAAAA,4BAAAA,CAAAA,qBAAAA,QAAQ,CAACG,SAAS,cAAlBH,gCAAAA,KAAAA,IAAAA,mBAAoBgB,OAAOJ,CAAAA;gBAAQA;YAAAA,OAAAA,CAAAA,CAAAA,aAAAA,KAAKC,IAAI,cAATD,wBAAAA,KAAAA,IAAAA,WAAWE,IAAI,AAAD,MAAMX;wBAAvDH,uCAAAA,4BAAoE,EAAE;IACjF,GAAG;QAACA,QAAQ,CAACG,SAAS;KAAC;IAGvB,OAAO;QAACE;QAAOY;KAAgB;AACjC,EAAC"}
@@ -21,7 +21,7 @@ export default ((props)=>{
21
21
  ]);
22
22
  var _dictItem_name, _ref;
23
23
  return /*#__PURE__*/ _jsx(Typography.Text, _object_spread_props(_object_spread({}, restProps), {
24
- children: (_ref = (_dictItem_name = dictItem === null || dictItem === void 0 ? void 0 : dictItem.name) !== null && _dictItem_name !== void 0 ? _dictItem_name : props.value) !== null && _ref !== void 0 ? _ref : ''
24
+ children: (_ref = (_dictItem_name = dictItem === null || dictItem === void 0 ? void 0 : dictItem.name) !== null && _dictItem_name !== void 0 ? _dictItem_name : value) !== null && _ref !== void 0 ? _ref : ''
25
25
  }));
26
26
  });
27
27
 
@@ -1 +1 @@
1
- {"version":3,"sources":["D:\\codeing\\git\\github\\knockout-js\\packages\\layout\\src\\components\\dictionary\\text.tsx"],"sourcesContent":["import { AppDictItem } from \"@knockout-js/api/ucenter\";\r\nimport { Typography } from \"antd\"\r\nimport { TextProps } from \"antd/es/typography/Text\";\r\nimport { useEffect, useState } from \"react\";\r\nimport { useDistItems } from \".\";\r\n\r\nexport interface DictionaryTextProps extends TextProps {\r\n /**\r\n * 值\r\n */\r\n value?: string;\r\n /**\r\n * 字典code\r\n */\r\n dictCode: string;\r\n /**\r\n * 外部提供数据源\r\n */\r\n dataSource?: AppDictItem[];\r\n /**\r\n * 默认使用code来匹配value\r\n */\r\n valueKey?: \"id\" | \"code\";\r\n}\r\n\r\n\r\nexport default (props: DictionaryTextProps) => {\r\n const { value, dataSource, dictCode, valueKey, ...restProps } = props,\r\n [items] = useDistItems(dictCode, dataSource),\r\n [dictItem, setDictItem] = useState<AppDictItem>();\r\n\r\n\r\n useEffect(() => {\r\n setDictItem(items.find(item => item[valueKey ?? 'code'] === value));\r\n }, [value, valueKey, items]);\r\n\r\n return <Typography.Text {...restProps}>\r\n {dictItem?.name ?? props.value ?? ''}\r\n </Typography.Text>\r\n}\r\n"],"names":["Typography","useEffect","useState","useDistItems","props","value","dataSource","dictCode","valueKey","restProps","items","dictItem","setDictItem","find","item","Text","name"],"mappings":";;;;AACA,SAASA,UAAU,QAAQ,OAAM;AAEjC,SAASC,SAAS,EAAEC,QAAQ,QAAQ,QAAQ;AAC5C,SAASC,YAAY,QAAQ,UAAI;AAsBjC,eAAe,CAAA,CAACC,QAA+B;IAC7C,MAAM,EAAEC,MAAK,EAAEC,WAAU,EAAEC,SAAQ,EAAEC,SAAQ,EAAgB,GAAGJ,OAAdK,uCAAcL;QAAxDC;QAAOC;QAAYC;QAAUC;QACnC,CAACE,MAAM,GAAGP,aAAaI,UAAUD,aACjC,CAACK,UAAUC,YAAY,GAAGV;IAG5BD,UAAU,IAAM;QACdW,YAAYF,MAAMG,IAAI,CAACC,CAAAA,OAAQA,IAAI,CAACN,qBAAAA,sBAAAA,WAAY,MAAM,CAAC,KAAKH;IAC9D,GAAG;QAACA;QAAOG;QAAUE;KAAM;QAGxBC,gBAAAA;IADH,qBAAO,KAACX,WAAWe,IAAI,0CAAKN;kBACzBE,CAAAA,OAAAA,CAAAA,iBAAAA,qBAAAA,sBAAAA,KAAAA,IAAAA,SAAUK,IAAI,cAAdL,4BAAAA,iBAAkBP,MAAMC,KAAK,cAA7BM,kBAAAA,OAAiC,EAAE;;AAExC,CAAA,EAAC"}
1
+ {"version":3,"sources":["D:\\codeing\\git\\github\\knockout-js\\packages\\layout\\src\\components\\dictionary\\text.tsx"],"sourcesContent":["import { AppDictItem } from \"@knockout-js/api/ucenter\";\r\nimport { Typography } from \"antd\"\r\nimport { TextProps } from \"antd/es/typography/Text\";\r\nimport { useEffect, useState } from \"react\";\r\nimport { useDistItems } from \".\";\r\n\r\nexport interface DictionaryTextProps extends TextProps {\r\n /**\r\n * 值\r\n */\r\n value?: string;\r\n /**\r\n * 字典code\r\n */\r\n dictCode: string;\r\n /**\r\n * 外部提供数据源\r\n */\r\n dataSource?: AppDictItem[];\r\n /**\r\n * 默认使用code来匹配value\r\n */\r\n valueKey?: \"id\" | \"code\";\r\n}\r\n\r\n\r\nexport default (props: DictionaryTextProps) => {\r\n const { value, dataSource, dictCode, valueKey, ...restProps } = props,\r\n [items] = useDistItems(dictCode, dataSource),\r\n [dictItem, setDictItem] = useState<AppDictItem>();\r\n\r\n\r\n useEffect(() => {\r\n setDictItem(items.find(item => item[valueKey ?? 'code'] === value));\r\n }, [value, valueKey, items]);\r\n\r\n return <Typography.Text {...restProps}>\r\n {dictItem?.name ?? value ?? ''}\r\n </Typography.Text>\r\n}\r\n"],"names":["Typography","useEffect","useState","useDistItems","props","value","dataSource","dictCode","valueKey","restProps","items","dictItem","setDictItem","find","item","Text","name"],"mappings":";;;;AACA,SAASA,UAAU,QAAQ,OAAM;AAEjC,SAASC,SAAS,EAAEC,QAAQ,QAAQ,QAAQ;AAC5C,SAASC,YAAY,QAAQ,UAAI;AAsBjC,eAAe,CAAA,CAACC,QAA+B;IAC7C,MAAM,EAAEC,MAAK,EAAEC,WAAU,EAAEC,SAAQ,EAAEC,SAAQ,EAAgB,GAAGJ,OAAdK,uCAAcL;QAAxDC;QAAOC;QAAYC;QAAUC;QACnC,CAACE,MAAM,GAAGP,aAAaI,UAAUD,aACjC,CAACK,UAAUC,YAAY,GAAGV;IAG5BD,UAAU,IAAM;QACdW,YAAYF,MAAMG,IAAI,CAACC,CAAAA,OAAQA,IAAI,CAACN,qBAAAA,sBAAAA,WAAY,MAAM,CAAC,KAAKH;IAC9D,GAAG;QAACA;QAAOG;QAAUE;KAAM;QAGxBC,gBAAAA;IADH,qBAAO,KAACX,WAAWe,IAAI,0CAAKN;kBACzBE,CAAAA,OAAAA,CAAAA,iBAAAA,qBAAAA,sBAAAA,KAAAA,IAAAA,SAAUK,IAAI,cAAdL,4BAAAA,iBAAkBN,KAAK,cAAvBM,kBAAAA,OAA2B,EAAE;;AAElC,CAAA,EAAC"}
@@ -4,29 +4,28 @@ import _to_consumable_array from "@swc/helpers/src/_to_consumable_array.mjs";
4
4
  import _ts_generator from "@swc/helpers/src/_ts_generator.mjs";
5
5
  import { getDictItems } from "@knockout-js/api";
6
6
  import { useEffect, useState } from "react";
7
- var distItemList = [], timeoutFn = undefined;
8
- var collectCode = [];
7
+ var timeoutFn = undefined, isLoad = false;
8
+ var distData = {}, collectCode = [];
9
9
  /**
10
10
  * 用来处理缓存字典项列表
11
11
  * @returns
12
12
  */ export var useDistItems = function(dictCode, dataSource) {
13
- var _useState = _sliced_to_array(useState([]), 2), items = _useState[0], setItems = _useState[1];
13
+ var _distData_dictCode;
14
+ var _useState = _sliced_to_array(useState((_distData_dictCode = distData[dictCode]) !== null && _distData_dictCode !== void 0 ? _distData_dictCode : []), 2), items = _useState[0], setItems = _useState[1];
14
15
  /**
15
16
  * 通过列表设置存储
16
17
  * @param list
17
18
  */ var setDistItems = function(list) {
18
- var _newDistItems;
19
19
  var dictCodes = _to_consumable_array(new Set(list.map(function(item) {
20
20
  var _item_dict;
21
21
  return (_item_dict = item.dict) === null || _item_dict === void 0 ? void 0 : _item_dict.code;
22
22
  })));
23
- // 清理掉旧数据
24
- var newDistItems = distItemList.filter(function(item) {
25
- var _item_dict;
26
- return !dictCodes.includes((_item_dict = item.dict) === null || _item_dict === void 0 ? void 0 : _item_dict.code);
23
+ dictCodes.forEach(function(code) {
24
+ if (code) distData[code] = list.filter(function(item) {
25
+ var _item_dict;
26
+ return ((_item_dict = item.dict) === null || _item_dict === void 0 ? void 0 : _item_dict.code) == code;
27
+ });
27
28
  });
28
- (_newDistItems = newDistItems).push.apply(_newDistItems, _to_consumable_array(list));
29
- distItemList = newDistItems;
30
29
  };
31
30
  /**
32
31
  * 刷新列表接口
@@ -56,26 +55,33 @@ var collectCode = [];
56
55
  useEffect(function() {
57
56
  if (dataSource === null || dataSource === void 0 ? void 0 : dataSource.length) setDistItems(dataSource);
58
57
  else {
59
- if (!collectCode.includes(dictCode)) collectCode.push(dictCode);
60
- clearTimeout(timeoutFn);
61
- // 设置收集时间毫秒内收集需要请求的数据
62
- timeoutFn = setTimeout(function() {
63
- getDictItems(collectCode).then(function(result) {
64
- if (result.length) setDistItems(result);
65
- });
66
- }, 100);
58
+ if (!collectCode.includes(dictCode)) {
59
+ collectCode.push(dictCode);
60
+ isLoad = true;
61
+ }
62
+ if (isLoad) {
63
+ clearTimeout(timeoutFn);
64
+ timeoutFn = setTimeout(function() {
65
+ getDictItems(collectCode).then(function(result) {
66
+ if (result.length) setDistItems(result);
67
+ isLoad = false;
68
+ });
69
+ }, 100);
70
+ }
67
71
  }
68
72
  }, [
69
73
  dictCode,
70
74
  dataSource
71
75
  ]);
72
76
  useEffect(function() {
73
- setItems(distItemList.filter(function(item) {
77
+ var _distData_dictCode;
78
+ var _distData_dictCode_filter;
79
+ setItems((_distData_dictCode_filter = (_distData_dictCode = distData[dictCode]) === null || _distData_dictCode === void 0 ? void 0 : _distData_dictCode.filter(function(item) {
74
80
  var _item_dict;
75
81
  return ((_item_dict = item.dict) === null || _item_dict === void 0 ? void 0 : _item_dict.code) === dictCode;
76
- }));
82
+ })) !== null && _distData_dictCode_filter !== void 0 ? _distData_dictCode_filter : []);
77
83
  }, [
78
- distItemList
84
+ distData[dictCode]
79
85
  ]);
80
86
  return [
81
87
  items,
@@ -1 +1 @@
1
- {"version":3,"sources":["D:\\codeing\\git\\github\\knockout-js\\packages\\layout\\src\\components\\dictionary\\index.ts"],"sourcesContent":["import { getDictItems } from \"@knockout-js/api\";\r\nimport { AppDictItem } from \"@knockout-js/api/ucenter\";\r\nimport { useEffect, useState } from \"react\";\r\n\r\nlet distItemList: AppDictItem[] = [],\r\n timeoutFn: NodeJS.Timeout | undefined = undefined;\r\nconst collectCode: string[] = [];\r\n\r\n/**\r\n * 用来处理缓存字典项列表\r\n * @returns\r\n */\r\nexport const useDistItems = (dictCode: string, dataSource?: AppDictItem[]): [AppDictItem[], () => Promise<void>] => {\r\n\r\n const [items, setItems] = useState<AppDictItem[]>([]);\r\n\r\n /**\r\n * 通过列表设置存储\r\n * @param list\r\n */\r\n const setDistItems = (list: AppDictItem[]) => {\r\n const dictCodes = [...new Set(list.map(item => item.dict?.code))];\r\n // 清理掉旧数据\r\n const newDistItems = distItemList.filter(item => !dictCodes.includes(item.dict?.code));\r\n newDistItems.push(...list);\r\n distItemList = newDistItems;\r\n }\r\n\r\n /**\r\n * 刷新列表接口\r\n */\r\n const reloadDistItems = async () => {\r\n const result = await getDictItems(dictCode, true);\r\n if (result.length) {\r\n setDistItems(result);\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n if (dataSource?.length) {\r\n setDistItems(dataSource);\r\n } else {\r\n if (!collectCode.includes(dictCode)) {\r\n collectCode.push(dictCode);\r\n }\r\n clearTimeout(timeoutFn)\r\n // 设置收集时间毫秒内收集需要请求的数据\r\n timeoutFn = setTimeout(() => {\r\n getDictItems(collectCode).then(result => {\r\n if (result.length) {\r\n setDistItems(result);\r\n }\r\n });\r\n }, 100);\r\n }\r\n }, [dictCode, dataSource]);\r\n\r\n useEffect(() => {\r\n setItems(distItemList.filter(item => item.dict?.code === dictCode))\r\n }, [distItemList])\r\n\r\n\r\n return [items, reloadDistItems];\r\n}\r\n"],"names":["getDictItems","useEffect","useState","distItemList","timeoutFn","undefined","collectCode","useDistItems","dictCode","dataSource","items","setItems","setDistItems","list","newDistItems","dictCodes","Set","map","item","dict","code","filter","includes","push","reloadDistItems","result","length","clearTimeout","setTimeout","then"],"mappings":";;;;AAAA,SAASA,YAAY,QAAQ,mBAAmB;AAEhD,SAASC,SAAS,EAAEC,QAAQ,QAAQ,QAAQ;AAE5C,IAAIC,eAA8B,EAAE,EAClCC,YAAwCC;AAC1C,IAAMC,cAAwB,EAAE;AAEhC;;;CAGC,GACD,OAAO,IAAMC,eAAe,SAACC,UAAkBC,YAAqE;IAElH,IAA0BP,6BAAAA,SAAwB,EAAE,OAA7CQ,QAAmBR,cAAZS,WAAYT;IAE1B;;;GAGC,GACD,IAAMU,eAAe,SAACC,MAAwB;YAI5CC;QAHA,IAAMC,YAAa,qBAAG,IAAIC,IAAIH,KAAKI,GAAG,CAACC,SAAAA;gBAAQA;YAAAA,OAAAA,CAAAA,aAAAA,KAAKC,IAAI,cAATD,wBAAAA,KAAAA,IAAAA,WAAWE,IAAI;;QAC9D,SAAS;QACT,IAAMN,eAAeX,aAAakB,MAAM,CAACH,SAAAA;gBAA4BA;YAApB,OAAA,CAACH,UAAUO,QAAQ,CAACJ,CAAAA,aAAAA,KAAKC,IAAI,cAATD,wBAAAA,KAAAA,IAAAA,WAAWE,IAAI;;QACpFN,CAAAA,gBAAAA,cAAaS,IAAI,CAAjBT,MAAAA,eAAkB,qBAAGD;QACrBV,eAAeW;IACjB;IAEA;;GAEC,GACD,IAAMU;mBAAkB,oBAAA,WAAY;gBAC5BC;;;;wBAAS;;4BAAMzB,aAAaQ,UAAU,IAAI;;;wBAA1CiB,SAAS;wBACf,IAAIA,OAAOC,MAAM,EACfd,aAAaa;;;;;;QAEjB;wBALMD;;;;IAONvB,UAAU,WAAM;QACd,IAAIQ,uBAAAA,wBAAAA,KAAAA,IAAAA,WAAYiB,MAAM,EACpBd,aAAaH;aACR;YACL,IAAI,CAACH,YAAYgB,QAAQ,CAACd,WACxBF,YAAYiB,IAAI,CAACf;YAEnBmB,aAAavB;YACb,qBAAqB;YACrBA,YAAYwB,WAAW,WAAM;gBAC3B5B,aAAaM,aAAauB,IAAI,CAACJ,SAAAA,QAAU;oBACvC,IAAIA,OAAOC,MAAM,EACfd,aAAaa;gBAEjB;YACF,GAAG;QACL,CAAC;IACH,GAAG;QAACjB;QAAUC;KAAW;IAEzBR,UAAU,WAAM;QACdU,SAASR,aAAakB,MAAM,CAACH,SAAAA;gBAAQA;YAAAA,OAAAA,CAAAA,CAAAA,aAAAA,KAAKC,IAAI,cAATD,wBAAAA,KAAAA,IAAAA,WAAWE,IAAI,AAAD,MAAMZ;;IAC3D,GAAG;QAACL;KAAa;IAGjB,OAAO;QAACO;QAAOc;KAAgB;AACjC,EAAC"}
1
+ {"version":3,"sources":["D:\\codeing\\git\\github\\knockout-js\\packages\\layout\\src\\components\\dictionary\\index.ts"],"sourcesContent":["import { getDictItems } from \"@knockout-js/api\";\r\nimport { AppDictItem } from \"@knockout-js/api/ucenter\";\r\nimport { useEffect, useState } from \"react\";\r\n\r\nlet timeoutFn: NodeJS.Timeout | undefined = undefined, isLoad = false;\r\nconst distData: Record<string, AppDictItem[] | undefined> = {},\r\n collectCode: string[] = [];\r\n\r\n/**\r\n * 用来处理缓存字典项列表\r\n * @returns\r\n */\r\nexport const useDistItems = (dictCode: string, dataSource?: AppDictItem[]): [AppDictItem[], () => Promise<void>] => {\r\n\r\n const [items, setItems] = useState<AppDictItem[]>(distData[dictCode] ?? []);\r\n\r\n /**\r\n * 通过列表设置存储\r\n * @param list\r\n */\r\n const setDistItems = (list: AppDictItem[]) => {\r\n const dictCodes = [...new Set(list.map(item => item.dict?.code))];\r\n dictCodes.forEach(code => {\r\n if (code) {\r\n distData[code] = list.filter(item => item.dict?.code == code);\r\n }\r\n })\r\n }\r\n\r\n /**\r\n * 刷新列表接口\r\n */\r\n const reloadDistItems = async () => {\r\n const result = await getDictItems(dictCode, true);\r\n if (result.length) {\r\n setDistItems(result);\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n if (dataSource?.length) {\r\n setDistItems(dataSource);\r\n } else {\r\n if (!collectCode.includes(dictCode)) {\r\n collectCode.push(dictCode);\r\n isLoad = true;\r\n }\r\n if (isLoad) {\r\n clearTimeout(timeoutFn)\r\n timeoutFn = setTimeout(() => {\r\n getDictItems(collectCode).then(result => {\r\n if (result.length) {\r\n setDistItems(result);\r\n }\r\n isLoad = false;\r\n });\r\n }, 100);\r\n }\r\n }\r\n }, [dictCode, dataSource]);\r\n\r\n useEffect(() => {\r\n setItems(distData[dictCode]?.filter(item => item.dict?.code === dictCode) ?? [])\r\n }, [distData[dictCode]])\r\n\r\n\r\n return [items, reloadDistItems];\r\n}\r\n"],"names":["getDictItems","useEffect","useState","timeoutFn","undefined","isLoad","distData","collectCode","useDistItems","dictCode","dataSource","items","setItems","setDistItems","list","dictCodes","Set","map","item","dict","code","forEach","filter","reloadDistItems","result","length","includes","push","clearTimeout","setTimeout","then"],"mappings":";;;;AAAA,SAASA,YAAY,QAAQ,mBAAmB;AAEhD,SAASC,SAAS,EAAEC,QAAQ,QAAQ,QAAQ;AAE5C,IAAIC,YAAwCC,WAAWC,SAAS,KAAK;AACrE,IAAMC,WAAsD,CAAC,GAC3DC,cAAwB,EAAE;AAE5B;;;CAGC,GACD,OAAO,IAAMC,eAAe,SAACC,UAAkBC,YAAqE;QAEhEJ;IAAlD,IAA0BJ,6BAAAA,SAAwBI,CAAAA,qBAAAA,QAAQ,CAACG,SAAS,cAAlBH,gCAAAA,qBAAsB,EAAE,OAAnEK,QAAmBT,cAAZU,WAAYV;IAE1B;;;GAGC,GACD,IAAMW,eAAe,SAACC,MAAwB;QAC5C,IAAMC,YAAa,qBAAG,IAAIC,IAAIF,KAAKG,GAAG,CAACC,SAAAA;gBAAQA;YAAAA,OAAAA,CAAAA,aAAAA,KAAKC,IAAI,cAATD,wBAAAA,KAAAA,IAAAA,WAAWE,IAAI;;QAC9DL,UAAUM,OAAO,CAACD,SAAAA,MAAQ;YACxB,IAAIA,MACFd,QAAQ,CAACc,KAAK,GAAGN,KAAKQ,MAAM,CAACJ,SAAAA;oBAAQA;gBAAAA,OAAAA,CAAAA,CAAAA,aAAAA,KAAKC,IAAI,cAATD,wBAAAA,KAAAA,IAAAA,WAAWE,IAAI,AAAD,KAAKA;;QAE5D;IACF;IAEA;;GAEC,GACD,IAAMG;mBAAkB,oBAAA,WAAY;gBAC5BC;;;;wBAAS;;4BAAMxB,aAAaS,UAAU,IAAI;;;wBAA1Ce,SAAS;wBACf,IAAIA,OAAOC,MAAM,EACfZ,aAAaW;;;;;;QAEjB;wBALMD;;;;IAONtB,UAAU,WAAM;QACd,IAAIS,uBAAAA,wBAAAA,KAAAA,IAAAA,WAAYe,MAAM,EACpBZ,aAAaH;aACR;YACL,IAAI,CAACH,YAAYmB,QAAQ,CAACjB,WAAW;gBACnCF,YAAYoB,IAAI,CAAClB;gBACjBJ,SAAS,IAAI;YACf,CAAC;YACD,IAAIA,QAAQ;gBACVuB,aAAazB;gBACbA,YAAY0B,WAAW,WAAM;oBAC3B7B,aAAaO,aAAauB,IAAI,CAACN,SAAAA,QAAU;wBACvC,IAAIA,OAAOC,MAAM,EACfZ,aAAaW;wBAEfnB,SAAS,KAAK;oBAChB;gBACF,GAAG;YACL,CAAC;QACH,CAAC;IACH,GAAG;QAACI;QAAUC;KAAW;IAEzBT,UAAU,WAAM;YACLK;YAAAA;QAATM,SAASN,CAAAA,4BAAAA,CAAAA,qBAAAA,QAAQ,CAACG,SAAS,cAAlBH,gCAAAA,KAAAA,IAAAA,mBAAoBgB,OAAOJ,SAAAA;gBAAQA;YAAAA,OAAAA,CAAAA,CAAAA,aAAAA,KAAKC,IAAI,cAATD,wBAAAA,KAAAA,IAAAA,WAAWE,IAAI,AAAD,MAAMX;wBAAvDH,uCAAAA,4BAAoE,EAAE;IACjF,GAAG;QAACA,QAAQ,CAACG,SAAS;KAAC;IAGvB,OAAO;QAACE;QAAOY;KAAgB;AACjC,EAAC"}
@@ -24,7 +24,7 @@ export default function(props) {
24
24
  ]);
25
25
  var _dictItem_name, _ref;
26
26
  return /*#__PURE__*/ _jsx(Typography.Text, _object_spread_props(_object_spread({}, restProps), {
27
- children: (_ref = (_dictItem_name = dictItem === null || dictItem === void 0 ? void 0 : dictItem.name) !== null && _dictItem_name !== void 0 ? _dictItem_name : props.value) !== null && _ref !== void 0 ? _ref : ""
27
+ children: (_ref = (_dictItem_name = dictItem === null || dictItem === void 0 ? void 0 : dictItem.name) !== null && _dictItem_name !== void 0 ? _dictItem_name : value) !== null && _ref !== void 0 ? _ref : ""
28
28
  }));
29
29
  };
30
30
 
@@ -1 +1 @@
1
- {"version":3,"sources":["D:\\codeing\\git\\github\\knockout-js\\packages\\layout\\src\\components\\dictionary\\text.tsx"],"sourcesContent":["import { AppDictItem } from \"@knockout-js/api/ucenter\";\r\nimport { Typography } from \"antd\"\r\nimport { TextProps } from \"antd/es/typography/Text\";\r\nimport { useEffect, useState } from \"react\";\r\nimport { useDistItems } from \".\";\r\n\r\nexport interface DictionaryTextProps extends TextProps {\r\n /**\r\n * 值\r\n */\r\n value?: string;\r\n /**\r\n * 字典code\r\n */\r\n dictCode: string;\r\n /**\r\n * 外部提供数据源\r\n */\r\n dataSource?: AppDictItem[];\r\n /**\r\n * 默认使用code来匹配value\r\n */\r\n valueKey?: \"id\" | \"code\";\r\n}\r\n\r\n\r\nexport default (props: DictionaryTextProps) => {\r\n const { value, dataSource, dictCode, valueKey, ...restProps } = props,\r\n [items] = useDistItems(dictCode, dataSource),\r\n [dictItem, setDictItem] = useState<AppDictItem>();\r\n\r\n\r\n useEffect(() => {\r\n setDictItem(items.find(item => item[valueKey ?? 'code'] === value));\r\n }, [value, valueKey, items]);\r\n\r\n return <Typography.Text {...restProps}>\r\n {dictItem?.name ?? props.value ?? ''}\r\n </Typography.Text>\r\n}\r\n"],"names":["Typography","useEffect","useState","useDistItems","props","value","dataSource","dictCode","valueKey","restProps","items","dictItem","setDictItem","find","item","Text","name"],"mappings":";;;;;AACA,SAASA,UAAU,QAAQ,OAAM;AAEjC,SAASC,SAAS,EAAEC,QAAQ,QAAQ,QAAQ;AAC5C,SAASC,YAAY,QAAQ,UAAI;AAsBjC,eAAe,SAACC,OAA+B;IAC7C,IAAQC,QAAwDD,MAAxDC,OAAOC,aAAiDF,MAAjDE,YAAYC,WAAqCH,MAArCG,UAAUC,WAA2BJ,MAA3BI,UAAaC,uCAAcL;QAAxDC;QAAOC;QAAYC;QAAUC;QACzBL,iCAAAA,aAAaI,UAAUD,iBAAhCI,QAASP,kBACgBD,6BAAAA,gBAAzBS,WAAyBT,cAAfU,cAAeV;IAG5BD,UAAU,WAAM;QACdW,YAAYF,MAAMG,IAAI,CAACC,SAAAA;mBAAQA,IAAI,CAACN,qBAAAA,sBAAAA,WAAY,MAAM,CAAC,KAAKH;;IAC9D,GAAG;QAACA;QAAOG;QAAUE;KAAM;QAGxBC,gBAAAA;IADH,qBAAO,KAACX,WAAWe,IAAI,0CAAKN;kBACzBE,CAAAA,OAAAA,CAAAA,iBAAAA,qBAAAA,sBAAAA,KAAAA,IAAAA,SAAUK,IAAI,cAAdL,4BAAAA,iBAAkBP,MAAMC,KAAK,cAA7BM,kBAAAA,OAAiC,EAAE;;AAExC,EAAC"}
1
+ {"version":3,"sources":["D:\\codeing\\git\\github\\knockout-js\\packages\\layout\\src\\components\\dictionary\\text.tsx"],"sourcesContent":["import { AppDictItem } from \"@knockout-js/api/ucenter\";\r\nimport { Typography } from \"antd\"\r\nimport { TextProps } from \"antd/es/typography/Text\";\r\nimport { useEffect, useState } from \"react\";\r\nimport { useDistItems } from \".\";\r\n\r\nexport interface DictionaryTextProps extends TextProps {\r\n /**\r\n * 值\r\n */\r\n value?: string;\r\n /**\r\n * 字典code\r\n */\r\n dictCode: string;\r\n /**\r\n * 外部提供数据源\r\n */\r\n dataSource?: AppDictItem[];\r\n /**\r\n * 默认使用code来匹配value\r\n */\r\n valueKey?: \"id\" | \"code\";\r\n}\r\n\r\n\r\nexport default (props: DictionaryTextProps) => {\r\n const { value, dataSource, dictCode, valueKey, ...restProps } = props,\r\n [items] = useDistItems(dictCode, dataSource),\r\n [dictItem, setDictItem] = useState<AppDictItem>();\r\n\r\n\r\n useEffect(() => {\r\n setDictItem(items.find(item => item[valueKey ?? 'code'] === value));\r\n }, [value, valueKey, items]);\r\n\r\n return <Typography.Text {...restProps}>\r\n {dictItem?.name ?? value ?? ''}\r\n </Typography.Text>\r\n}\r\n"],"names":["Typography","useEffect","useState","useDistItems","props","value","dataSource","dictCode","valueKey","restProps","items","dictItem","setDictItem","find","item","Text","name"],"mappings":";;;;;AACA,SAASA,UAAU,QAAQ,OAAM;AAEjC,SAASC,SAAS,EAAEC,QAAQ,QAAQ,QAAQ;AAC5C,SAASC,YAAY,QAAQ,UAAI;AAsBjC,eAAe,SAACC,OAA+B;IAC7C,IAAQC,QAAwDD,MAAxDC,OAAOC,aAAiDF,MAAjDE,YAAYC,WAAqCH,MAArCG,UAAUC,WAA2BJ,MAA3BI,UAAaC,uCAAcL;QAAxDC;QAAOC;QAAYC;QAAUC;QACzBL,iCAAAA,aAAaI,UAAUD,iBAAhCI,QAASP,kBACgBD,6BAAAA,gBAAzBS,WAAyBT,cAAfU,cAAeV;IAG5BD,UAAU,WAAM;QACdW,YAAYF,MAAMG,IAAI,CAACC,SAAAA;mBAAQA,IAAI,CAACN,qBAAAA,sBAAAA,WAAY,MAAM,CAAC,KAAKH;;IAC9D,GAAG;QAACA;QAAOG;QAAUE;KAAM;QAGxBC,gBAAAA;IADH,qBAAO,KAACX,WAAWe,IAAI,0CAAKN;kBACzBE,CAAAA,OAAAA,CAAAA,iBAAAA,qBAAAA,sBAAAA,KAAAA,IAAAA,SAAUK,IAAI,cAAdL,4BAAAA,iBAAkBN,KAAK,cAAvBM,kBAAAA,OAA2B,EAAE;;AAElC,EAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@knockout-js/layout",
3
- "version": "0.1.1-beta.3",
3
+ "version": "0.1.1-beta.4",
4
4
  "description": "组件功能描述",
5
5
  "files": [
6
6
  "esm",