@hi-ui/check-select 4.0.0-alpha.4 → 4.0.0-alpha.43

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.
Files changed (39) hide show
  1. package/README.md +116 -7
  2. package/lib/cjs/CheckSelect.js +337 -112
  3. package/lib/cjs/CheckSelect.js.map +1 -1
  4. package/lib/cjs/context.js +7 -7
  5. package/lib/cjs/context.js.map +1 -1
  6. package/lib/cjs/hooks/use-data.js +104 -0
  7. package/lib/cjs/hooks/use-data.js.map +1 -0
  8. package/lib/cjs/hooks/use-flatten-data.js +78 -0
  9. package/lib/cjs/hooks/use-flatten-data.js.map +1 -0
  10. package/lib/cjs/index.js +1 -1
  11. package/lib/cjs/styles/index.scss.js +1 -1
  12. package/lib/cjs/use-check-select.js +50 -79
  13. package/lib/cjs/use-check-select.js.map +1 -1
  14. package/lib/esm/CheckSelect.js +326 -108
  15. package/lib/esm/CheckSelect.js.map +1 -1
  16. package/lib/esm/context.js +6 -6
  17. package/lib/esm/context.js.map +1 -1
  18. package/lib/esm/hooks/use-data.js +94 -0
  19. package/lib/esm/hooks/use-data.js.map +1 -0
  20. package/lib/esm/hooks/use-flatten-data.js +69 -0
  21. package/lib/esm/hooks/use-flatten-data.js.map +1 -0
  22. package/lib/esm/index.js +1 -1
  23. package/lib/esm/styles/index.scss.js +1 -1
  24. package/lib/esm/use-check-select.js +49 -71
  25. package/lib/esm/use-check-select.js.map +1 -1
  26. package/lib/types/CheckSelect.d.ts +71 -31
  27. package/lib/types/context.d.ts +12 -556
  28. package/lib/types/hooks/index.d.ts +2 -1
  29. package/lib/types/hooks/use-data.d.ts +4 -0
  30. package/lib/types/hooks/use-flatten-data.d.ts +2 -0
  31. package/lib/types/hooks/use-search.d.ts +2 -2
  32. package/lib/types/types.d.ts +41 -6
  33. package/lib/types/use-check-select.d.ts +45 -281
  34. package/package.json +30 -19
  35. package/lib/cjs/hooks/use-search.js +0 -81
  36. package/lib/cjs/hooks/use-search.js.map +0 -1
  37. package/lib/esm/hooks/use-search.js +0 -72
  38. package/lib/esm/hooks/use-search.js.map +0 -1
  39. package/lib/types/hooks/use-cache.d.ts +0 -8
@@ -0,0 +1,104 @@
1
+ /** @LICENSE
2
+ * @hi-ui/check-select
3
+ * https://github.com/XiaoMi/hiui/tree/master/packages/ui/check-select#readme
4
+ *
5
+ * Copyright (c) HIUI <mi-hiui@xiaomi.com>.
6
+ *
7
+ * This source code is licensed under the MIT license found in the
8
+ * LICENSE file in the root directory of this source tree.
9
+ */
10
+ 'use strict';
11
+
12
+ Object.defineProperty(exports, '__esModule', {
13
+ value: true
14
+ });
15
+
16
+ var tslib = require('tslib');
17
+
18
+ var React = require('react');
19
+
20
+ var useChildren = require('@hi-ui/use-children');
21
+
22
+ var NOOP_ARRAY = [];
23
+
24
+ var useData = function useData(_ref) {
25
+ var data = _ref.data,
26
+ children = _ref.children;
27
+ return React.useMemo(function () {
28
+ var mergedData; // data 优先级大于内嵌式组合
29
+
30
+ if (Array.isArray(data)) {
31
+ mergedData = data;
32
+ } else if (children) {
33
+ mergedData = parseChildren(children);
34
+ }
35
+
36
+ return mergedData || NOOP_ARRAY;
37
+ }, [children, data]);
38
+ };
39
+
40
+ var parseChildren = function parseChildren(children) {
41
+ var data = [];
42
+ var list = useChildren.toArray(children);
43
+ list.forEach(function (item) {
44
+ if (! /*#__PURE__*/React.isValidElement(item)) return;
45
+ if (!item.type) return;
46
+ var HiName = item.type.HiName;
47
+
48
+ switch (HiName) {
49
+ case 'CheckSelectOption':
50
+ var option = parseOption(item);
51
+ data.push(option);
52
+ break;
53
+
54
+ case 'CheckSelectOptionGroup':
55
+ var optGroup = parseOptionGroup(item);
56
+ data.push(optGroup);
57
+ break;
58
+ }
59
+ });
60
+ return data;
61
+ };
62
+
63
+ var parseOption = function parseOption(node) {
64
+ var _a = node.props,
65
+ value = _a.value,
66
+ children = _a.children,
67
+ disabled = _a.disabled,
68
+ rest = tslib.__rest(_a, ["value", "children", "disabled", "groupTitle"]);
69
+
70
+ var option = {
71
+ id: value,
72
+ title: children,
73
+ disabled: disabled,
74
+ // TODO:使用 Symbol 注入,避免 data 传入使用
75
+ rootProps: rest
76
+ };
77
+ return option;
78
+ };
79
+
80
+ var parseOptionGroup = function parseOptionGroup(node) {
81
+ var key = node.key,
82
+ _a = node.props,
83
+ groupId = _a.groupId,
84
+ label = _a.label,
85
+ children = _a.children,
86
+ rest = tslib.__rest(_a, ["groupId", "label", "children"]);
87
+
88
+ var optGroup = {
89
+ groupId: groupId !== null && groupId !== void 0 ? groupId : key,
90
+ groupTitle: label,
91
+ rootProps: rest,
92
+ children: []
93
+ };
94
+
95
+ if (children) {
96
+ optGroup.children = parseChildren(children);
97
+ }
98
+
99
+ return optGroup;
100
+ };
101
+
102
+ exports.parseChildren = parseChildren;
103
+ exports.useData = useData;
104
+ //# sourceMappingURL=use-data.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-data.js","sources":["../../../src/hooks/use-data.ts"],"sourcesContent":[null],"names":["NOOP_ARRAY","useData","data","children","useMemo","mergedData","Array","isArray","parseChildren","list","toArray","forEach","item","isValidElement","type","HiName","option","parseOption","push","optGroup","parseOptionGroup","node","_a","value","disabled","rest","id","title","rootProps","key","groupId","label","groupTitle"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAIA,IAAMA,UAAU,GAAG,EAAnB;;IAEaC,OAAO,GAAG,SAAVA,OAAU,KAAA;MAAGC,YAAAA;MAAMC,gBAAAA;SACvBC,aAAAA,CAAQ;QACTC;;QAGAC,KAAK,CAACC,OAAND,CAAcJ,IAAdI,GAAqB;AACvBD,MAAAA,UAAU,GAAGH,IAAbG;AADF,WAEO,IAAIF,QAAJ,EAAc;AACnBE,MAAAA,UAAU,GAAGG,aAAa,CAACL,QAAD,CAA1BE;;;WAGKA,UAAU,IAAIL;AAVT,GAAPI,EAWJ,CAACD,QAAD,EAAWD,IAAX,CAXIE;;;IAcII,aAAa,GAAG,SAAhBA,aAAgB,CAACL,QAAD;MACrBD,IAAI,GAAG;MACPO,IAAI,GAAGC,mBAAAA,CAAQP,QAARO;AAEbD,EAAAA,IAAI,CAACE,OAALF,CAAa,UAACG,IAAD;QACP,eAACC,oBAAAA,CAAeD,IAAfC,GAAsB;QACvB,CAACD,IAAI,CAACE,MAAM;QAGNC,MADV,GAEIH,IAFJ,CACEE,IACEF,CADMG;;YAGFA;WACD;YACGC,MAAM,GAAGC,WAAW,CAACL,IAAD;AAC1BV,QAAAA,IAAI,CAACgB,IAALhB,CAAUc,MAAVd;;;WAEG;YACGiB,QAAQ,GAAGC,gBAAgB,CAACR,IAAD;AACjCV,QAAAA,IAAI,CAACgB,IAALhB,CAAUiB,QAAVjB;;;AAfN,GAAAO;SAoBOP;;;AAGT,IAAMe,WAAW,GAAG,SAAdA,WAAc,CAACI,IAAD;MAEhBC,KACED,IAAI;MADGE,KAAT,KAAA,CAASA;MAAOpB,QAAhB,KAAA,CAAgBA;MAAUqB,QAA1B,KAAA,CAA0BA;MAAyBC,IAAnD,oBAAO,QAAA,YAAA,YAAA,cAAA;;MAGHT,MAAM,GAAG;AACbU,IAAAA,EAAE,EAAEH,KADS;AAEbI,IAAAA,KAAK,EAAExB,QAFM;AAGbqB,IAAAA,QAAQ,EAAEA,QAHG;;AAKbI,IAAAA,SAAS,EAAEH;AALE;SAQRT;AAbT,CAAA;;AAgBA,IAAMI,gBAAgB,GAAG,SAAnBA,gBAAmB,CAACC,IAAD;MAErBQ,GADI,GAGFR,IAHE,CACJQ;MACAP,EAFI,GAGFD,IAAI;MADGS,OAFL,KAAA,CAEKA;MAASC,KAFd,KAAA,CAEcA;MAAO5B,QAFrB,KAAA,CAEqBA;MAAasB,IAFlC,oBAEG,UAAA,SAAA,YAAA;;MAGHN,QAAQ,GAAG;AACfW,IAAAA,OAAO,EAAEA,OAAO,SAAPA,IAAAA,OAAO,WAAPA,GAAAA,OAAAA,GAAWD,GADL;AAEfG,IAAAA,UAAU,EAAED,KAFG;AAGfH,IAAAA,SAAS,EAAEH,IAHI;AAIftB,IAAAA,QAAQ,EAAE;AAJK;;MAObA,UAAU;AACZgB,IAAAA,QAAQ,CAAChB,QAATgB,GAAoBX,aAAa,CAACL,QAAD,CAAjCgB;;;SAGKA;AAjBT,CAAA;;;"}
@@ -0,0 +1,78 @@
1
+ /** @LICENSE
2
+ * @hi-ui/check-select
3
+ * https://github.com/XiaoMi/hiui/tree/master/packages/ui/check-select#readme
4
+ *
5
+ * Copyright (c) HIUI <mi-hiui@xiaomi.com>.
6
+ *
7
+ * This source code is licensed under the MIT license found in the
8
+ * LICENSE file in the root directory of this source tree.
9
+ */
10
+ 'use strict';
11
+
12
+ Object.defineProperty(exports, '__esModule', {
13
+ value: true
14
+ });
15
+
16
+ var React = require('react');
17
+
18
+ var treeUtils = require('@hi-ui/tree-utils');
19
+
20
+ var NOOP_ARRAY = [];
21
+ var DEFAULT_FIELD_NAMES = {};
22
+
23
+ var useFlattenData = function useFlattenData(_ref) {
24
+ var _ref$data = _ref.data,
25
+ data = _ref$data === void 0 ? NOOP_ARRAY : _ref$data,
26
+ _ref$fieldNames = _ref.fieldNames,
27
+ fieldNames = _ref$fieldNames === void 0 ? DEFAULT_FIELD_NAMES : _ref$fieldNames;
28
+ var flattedData = React.useMemo(function () {
29
+ return flattenData({
30
+ data: data,
31
+ fieldNames: fieldNames
32
+ });
33
+ }, [data, fieldNames]);
34
+ return flattedData;
35
+ };
36
+
37
+ var flattenData = function flattenData(_ref2) {
38
+ var _ref2$data = _ref2.data,
39
+ data = _ref2$data === void 0 ? NOOP_ARRAY : _ref2$data,
40
+ _ref2$fieldNames = _ref2.fieldNames,
41
+ fieldNames = _ref2$fieldNames === void 0 ? DEFAULT_FIELD_NAMES : _ref2$fieldNames; // 转换对象
42
+
43
+ var getKeyFields = function getKeyFields(node, key) {
44
+ return node[fieldNames[key] || key];
45
+ };
46
+
47
+ return treeUtils.baseFlattenTree({
48
+ tree: data,
49
+ childrenFieldName: function childrenFieldName(node) {
50
+ return getKeyFields(node, 'children');
51
+ },
52
+ transform: function transform(node) {
53
+ var _a; // 不对外暴露
54
+
55
+
56
+ delete node.parent;
57
+ var raw = node.raw;
58
+
59
+ if ('groupId' in raw) {
60
+ // 用于虚拟列表唯一 id
61
+ node.id = raw.groupId;
62
+ node.groupId = raw.groupId;
63
+ node.groupTitle = raw.groupTitle;
64
+ } else {
65
+ // 支持 fieldNames 转换
66
+ node.id = getKeyFields(raw, 'id');
67
+ node.title = getKeyFields(raw, 'title');
68
+ node.disabled = (_a = getKeyFields(raw, 'disabled')) !== null && _a !== void 0 ? _a : false;
69
+ }
70
+
71
+ return node;
72
+ }
73
+ });
74
+ };
75
+
76
+ exports.flattenData = flattenData;
77
+ exports.useFlattenData = useFlattenData;
78
+ //# sourceMappingURL=use-flatten-data.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-flatten-data.js","sources":["../../../src/hooks/use-flatten-data.ts"],"sourcesContent":[null],"names":["NOOP_ARRAY","DEFAULT_FIELD_NAMES","useFlattenData","data","fieldNames","flattedData","useMemo","flattenData","getKeyFields","node","key","baseFlattenTree","tree","childrenFieldName","transform","parent","raw","id","groupId","groupTitle","title","disabled"],"mappings":";;;;;;;;;;;;;;;;;;;AAIA,IAAMA,UAAU,GAAG,EAAnB;AACA,IAAMC,mBAAmB,GAAG,EAA5B;;IAEaC,cAAc,GAAG,SAAjBA,cAAiB,KAAA;uBAAGC;MAAAA,8BAAOH;6BAAYI;MAAAA,0CAAaH;MACzDI,WAAW,GAAGC,aAAAA,CAAQ;WACnBC,WAAW,CAAC;AAAEJ,MAAAA,IAAI,EAAJA,IAAF;AAAQC,MAAAA,UAAU,EAAVA;AAAR,KAAD;AADO,GAAPE,EAEjB,CAACH,IAAD,EAAOC,UAAP,CAFiBE;SAIbD;;;IAGIE,WAAW,GAAG,SAAdA,WAAc,MAAA;yBAAGJ;MAAAA,+BAAOH;+BAAYI;MAAAA,2CAAaH;;MAEtDO,YAAY,GAAG,SAAfA,YAAe,CAACC,IAAD,EAAYC,GAAZ;WAAyCD,IAAI,CAACL,UAAU,CAACM,GAAD,CAAVN,IAAmBM,GAApB;AAAlE;;SAEOC,yBAAAA,CAAgB;AACrBC,IAAAA,IAAI,EAAET,IADe;AAErBU,IAAAA,iBAAiB,EAAE,0BAAA,CAACJ,IAAD;aAAUD,YAAY,CAACC,IAAD,EAAO,UAAP;AAFpB,KAAA;AAGrBK,IAAAA,SAAS,EAAE,kBAAA,CAACL,IAAD;;;;aAEFA,IAAI,CAACM;UAEJC,GAAR,GAAgBP,IAAhB,CAAQO;;UAEJ,aAAaA,KAAK;;AAEpBP,QAAAA,IAAI,CAACQ,EAALR,GAAUO,GAAG,CAACE,OAAdT;AACAA,QAAAA,IAAI,CAACS,OAALT,GAAeO,GAAG,CAACE,OAAnBT;AACAA,QAAAA,IAAI,CAACU,UAALV,GAAkBO,GAAG,CAACG,UAAtBV;AAJF,aAKO;;AAELA,QAAAA,IAAI,CAACQ,EAALR,GAAUD,YAAY,CAACQ,GAAD,EAAM,IAAN,CAAtBP;AACAA,QAAAA,IAAI,CAACW,KAALX,GAAaD,YAAY,CAACQ,GAAD,EAAM,OAAN,CAAzBP;AACAA,QAAAA,IAAI,CAACY,QAALZ,GAAgB,MAAAD,YAAY,CAACQ,GAAD,EAAM,UAAN,CAAZ,UAAA,iBAAA,KAAA,GAAiC,KAAjDP;;;aAEKA;;AApBY,GAAhBE;;;;"}
package/lib/cjs/index.js CHANGED
@@ -19,6 +19,6 @@ var CheckSelect = require('./CheckSelect.js');
19
19
 
20
20
  exports.CheckSelect = CheckSelect.CheckSelect;
21
21
  exports.CheckSelectOption = CheckSelect.CheckSelectOption;
22
- exports.SelectSearch = CheckSelect.SelectSearch;
22
+ exports.CheckSelectOptionGroup = CheckSelect.CheckSelectOptionGroup;
23
23
  exports["default"] = CheckSelect.CheckSelect;
24
24
  //# sourceMappingURL=index.js.map
@@ -12,7 +12,7 @@
12
12
  Object.defineProperty(exports, '__esModule', {
13
13
  value: true
14
14
  });
15
- var css_248z = ".hi-v4-check-select {\n margin: 0;\n padding: 0;\n border: none;\n outline: none;\n font-size: 14px;\n vertical-align: middle;\n list-style: none;\n width: auto;\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n -ms-flex-negative: 0;\n flex-shrink: 0;\n display: inline-block;\n min-width: 160px;\n max-height: 260px;\n overflow: auto;\n padding-bottom: 10px; }\n .hi-v4-check-select--open .hi-v4-mock-input {\n border-color: var(--color-primary); }\n .hi-v4-check-select-item {\n width: 100%;\n padding: 4px 0;\n position: relative;\n cursor: pointer;\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex; }\n .hi-v4-check-select-option {\n padding: 0 10px;\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n min-height: 32px;\n width: 100%;\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n position: relative;\n -webkit-box-pack: justify;\n -ms-flex-pack: justify;\n justify-content: space-between; }\n .hi-v4-check-select-option:hover {\n background-color: var(--color-primary-20); }\n .hi-v4-check-select-option--selected {\n background-color: var(--color-primary-20);\n font-weight: 700;\n color: var(--color-primary); }\n .hi-v4-check-select-option--focused {\n background-color: var(--color-primary-10); }\n .hi-v4-check-select-option--disabled {\n cursor: not-allowed;\n color: var(--color-gray-50);\n font-weight: 400; }\n .hi-v4-check-select-option--disabled .hi-v4-check-select-menu-switcher {\n color: var(--color-gray-50); }\n .hi-v4-check-select .title__text {\n -webkit-box-flex: 1;\n -ms-flex: 1 1;\n flex: 1 1; }\n .hi-v4-check-select-panel {\n white-space: nowrap;\n -webkit-box-sizing: border-box;\n box-sizing: border-box; }\n .hi-v4-check-select-search {\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n padding: 0 10px 10px;\n position: relative; }\n .hi-v4-check-select-search .hi-v4-input__prefix {\n font-size: 16px;\n padding-left: 0; }\n .hi-v4-check-select-search__empty {\n display: inline-block;\n margin-top: 20px;\n font-size: 14px;\n font-weight: 400;\n color: #999;\n line-height: 20px; }\n";
15
+ var css_248z = "@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n@use 'sass:map';\n.hi-v4-check-select-option {\n margin-top: 4px;\n margin-top: var(--hi-v4-spacing-2, 4px);\n margin-bottom: 4px;\n margin-bottom: var(--hi-v4-spacing-2, 4px);\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n width: 100%;\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n position: relative;\n border-radius: 4px;\n border-radius: var(--hi-v4-border-radius-normal, 4px);\n cursor: pointer;\n font-size: 0.875rem;\n font-size: var(--hi-v4-text-size-normal, 0.875rem);\n font-weight: 400;\n font-weight: var(--hi-v4-text-weight-normal, 400);\n color: #1f2733;\n color: var(--hi-v4-color-gray-700, #1f2733);\n line-height: 1.25rem;\n line-height: var(--hi-v4-text-lineheight-sm, 1.25rem); }\n.hi-v4-check-select-option__indent {\n display: inline-block;\n width: 16px;\n height: 100%; }\n.hi-v4-check-select-option__title {\n display: inline-block;\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n width: 100%;\n padding: 6px;\n padding: var(--hi-v4-spacing-3, 6px);\n font-size: inherit;\n font-weight: inherit;\n color: inherit;\n line-height: inherit; }\n.hi-v4-check-select-option:hover {\n background-color: #f2f4f7;\n background-color: var(--hi-v4-color-gray-100, #f2f4f7); }\n.hi-v4-check-select-option--focused {\n background-color: #f2f4f7;\n background-color: var(--hi-v4-color-gray-100, #f2f4f7); }\n.hi-v4-check-select-option--disabled {\n cursor: not-allowed;\n color: #929aa6;\n color: var(--hi-v4-color-gray-500, #929aa6); }\n.hi-v4-check-select-option-group {\n display: inline-block;\n margin-top: 12px;\n margin-top: var(--hi-v4-spacing-6, 12px);\n margin-bottom: 4px;\n margin-bottom: var(--hi-v4-spacing-2, 4px);\n padding: 6px 0 6px 6px;\n padding: var(--hi-v4-spacing-3, 6px) 0 var(--hi-v4-spacing-3, 6px) var(--hi-v4-spacing-3, 6px);\n font-size: 0.875rem;\n font-size: var(--hi-v4-text-size-normal, 0.875rem);\n font-weight: 400;\n font-weight: var(--hi-v4-text-weight-normal, 400);\n color: #929aa6;\n color: var(--hi-v4-color-gray-500, #929aa6);\n line-height: 1.25rem;\n line-height: var(--hi-v4-text-lineheight-sm, 1.25rem); }\n.hi-v4-check-select-option-group:first-child {\n margin-top: 4px;\n margin-top: var(--hi-v4-spacing-2, 4px); }\n";
16
16
 
17
17
  var __styleInject__ = require('style-inject/dist/style-inject.es.js')["default"];
18
18
 
@@ -9,8 +9,6 @@
9
9
  */
10
10
  'use strict';
11
11
 
12
- var _typeof = require("@babel/runtime/helpers/typeof");
13
-
14
12
  Object.defineProperty(exports, '__esModule', {
15
13
  value: true
16
14
  });
@@ -21,21 +19,19 @@ var React = require('react');
21
19
 
22
20
  var useUncontrolledState = require('@hi-ui/use-uncontrolled-state');
23
21
 
24
- var useSearch = require('./hooks/use-search.js');
22
+ var lodash = require('lodash');
25
23
 
26
24
  var useCheck = require('@hi-ui/use-check');
27
25
 
28
26
  var useLatest = require('@hi-ui/use-latest');
29
27
 
30
- var useChildren = require('@hi-ui/use-children');
28
+ var useData = require('./hooks/use-data.js');
31
29
 
32
- function _interopDefaultLegacy(e) {
33
- return e && _typeof(e) === 'object' && 'default' in e ? e : {
34
- 'default': e
35
- };
36
- }
30
+ var useFlattenData = require('./hooks/use-flatten-data.js');
31
+
32
+ require('@hi-ui/env');
37
33
 
38
- var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
34
+ require('@hi-ui/type-assertion');
39
35
 
40
36
  var NOOP_ARRAY = [];
41
37
  var NOOP_VALUE = [];
@@ -51,58 +47,51 @@ var useCheckSelect = function useCheckSelect(_a) {
51
47
  defaultValue = _a$defaultValue === void 0 ? NOOP_VALUE : _a$defaultValue,
52
48
  onChangeProp = _a.onChange,
53
49
  onSelect = _a.onSelect,
54
- _a$emptyContent = _a.emptyContent,
55
- emptyContent = _a$emptyContent === void 0 ? '无匹配选项' : _a$emptyContent,
56
- searchPlaceholder = _a.searchPlaceholder,
57
- titleRender = _a.titleRender,
58
- rest = tslib.__rest(_a, ["data", "children", "disabled", "value", "defaultValue", "onChange", "onSelect", "emptyContent", "searchPlaceholder", "titleRender"]);
59
-
60
- var data = React.useMemo(function () {
61
- if (children) {
62
- var list = useChildren.toArray(children);
63
- var arr = [];
64
-
65
- var dfs = function dfs(list) {
66
- list.forEach(function (item) {
67
- if (! /*#__PURE__*/React__default['default'].isValidElement(item)) return; // @ts-ignore
68
-
69
- if (item.type && item.type.HiName === 'CheckSelectOption') {
70
- arr.push(item); // @ts-ignore
71
- } else if (item.type && item.type.HiName === 'CheckSelectOptionGroup') {
72
- // @ts-ignore
73
- if (item.props && item.props.children) {
74
- // @ts-ignore
75
- var _list = useChildren.toArray(item.props.children);
76
-
77
- dfs(_list);
78
- }
79
- }
80
- });
81
- };
82
-
83
- dfs(list);
84
- return arr.map(function (_ref) {
85
- var props = _ref.props;
86
- return {
87
- id: props.value,
88
- title: props.children,
89
- disabled: props.disabled || false
90
- };
91
- });
92
- }
93
-
94
- return dataProp;
95
- }, [children, dataProp]);
50
+ fieldNames = _a.fieldNames,
51
+ rest = tslib.__rest(_a, ["data", "children", "disabled", "value", "defaultValue", "onChange", "onSelect", "fieldNames"]);
52
+
53
+ var data = useData.useData({
54
+ data: dataProp,
55
+ children: children
56
+ });
57
+ var flattedData = useFlattenData.useFlattenData({
58
+ data: data,
59
+ fieldNames: fieldNames
60
+ });
61
+ var flattedDataRef = useLatest.useLatestRef(flattedData);
96
62
 
97
63
  var _useUncontrolledState = useUncontrolledState.useUncontrolledState(defaultValue, valueProp, onChangeProp),
98
64
  value = _useUncontrolledState[0],
99
65
  tryChangeValue = _useUncontrolledState[1];
100
66
 
101
67
  var onSelectLatest = useLatest.useLatestCallback(onSelect);
68
+ var selectedItemsRef = React.useRef([]);
102
69
  var proxyTryChangeValue = React.useCallback(function (value, item, shouldChecked) {
103
- tryChangeValue(value, item, shouldChecked);
104
- onSelectLatest(value, item, shouldChecked);
105
- }, [tryChangeValue, onSelectLatest]);
70
+ var changedItems = item;
71
+
72
+ if (!Array.isArray(item)) {
73
+ changedItems = [item];
74
+
75
+ if (shouldChecked) {
76
+ selectedItemsRef.current.push(item);
77
+ }
78
+
79
+ onSelectLatest(value, item, shouldChecked);
80
+ }
81
+
82
+ var selectedItems = lodash.uniqBy([].concat(changedItems, selectedItemsRef.current, flattedDataRef.current), 'id'); // 调用用户的select
83
+
84
+ var checkedItems = selectedItems // 使用最新的value
85
+ .filter(function (item) {
86
+ return value.includes(item.id);
87
+ }).map(function (item) {
88
+ return 'raw' in item ? item.raw : item;
89
+ });
90
+ tryChangeValue(value, // TODO: 处理脏数据
91
+ changedItems.map(function (item) {
92
+ return 'raw' in item ? item.raw : item;
93
+ }), checkedItems);
94
+ }, [tryChangeValue, onSelectLatest, flattedDataRef, selectedItemsRef]);
106
95
 
107
96
  var _useCheckDefault = useCheck.useCheck({
108
97
  disabled: disabled,
@@ -111,34 +100,16 @@ var useCheckSelect = function useCheckSelect(_a) {
111
100
  allowCheck: allowCheck
112
101
  }),
113
102
  onOptionCheck = _useCheckDefault[0],
114
- isSelectedId = _useCheckDefault[1];
115
-
116
- var _useSearch = useSearch.useSearch(data),
117
- inSearch = _useSearch[0],
118
- matchedItems = _useSearch[1],
119
- inputProps = _useSearch[2],
120
- isEmpty = _useSearch[3],
121
- resetSearch = _useSearch[4];
122
-
123
- var getSearchInputProps = React.useCallback(function () {
124
- return {
125
- placeholder: searchPlaceholder,
126
- value: inputProps.value,
127
- onChange: inputProps.onChange
128
- };
129
- }, [searchPlaceholder, inputProps]);
103
+ isCheckedId = _useCheckDefault[1];
104
+
130
105
  return {
131
106
  rootProps: rest,
132
- data: inSearch ? matchedItems : data,
107
+ data: data,
108
+ flattedData: flattedData,
133
109
  value: value,
110
+ tryChangeValue: proxyTryChangeValue,
134
111
  onSelect: onOptionCheck,
135
- isSelectedId: isSelectedId,
136
- emptyContent: emptyContent,
137
- getSearchInputProps: getSearchInputProps,
138
- tryChangeValue: tryChangeValue,
139
- isEmpty: isEmpty,
140
- resetSearch: resetSearch,
141
- titleRender: titleRender
112
+ isCheckedId: isCheckedId
142
113
  };
143
114
  };
144
115
 
@@ -1 +1 @@
1
- {"version":3,"file":"use-check-select.js","sources":["../../src/use-check-select.ts"],"sourcesContent":[null],"names":["NOOP_ARRAY","NOOP_VALUE","useCheckSelect","_a","data","dataProp","children","disabled","valueProp","value","defaultValue","onChangeProp","onChange","onSelect","emptyContent","searchPlaceholder","titleRender","rest","useMemo","list","toArray","arr","dfs","forEach","item","React","isValidElement","type","HiName","push","props","map","id","title","useUncontrolledState","tryChangeValue","onSelectLatest","useLatestCallback","proxyTryChangeValue","useCallback","shouldChecked","useCheckDefault","checkedIds","onCheck","allowCheck","onOptionCheck","isSelectedId","useSearch","inSearch","matchedItems","inputProps","isEmpty","resetSearch","getSearchInputProps","placeholder","rootProps","option"],"mappings":"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"}
1
+ {"version":3,"file":"use-check-select.js","sources":["../../src/use-check-select.ts"],"sourcesContent":[null],"names":["NOOP_ARRAY","NOOP_VALUE","useCheckSelect","_a","data","dataProp","children","disabled","valueProp","value","defaultValue","onChangeProp","onChange","onSelect","fieldNames","rest","useData","flattedData","useFlattenData","flattedDataRef","useLatestRef","useUncontrolledState","tryChangeValue","onSelectLatest","useLatestCallback","selectedItemsRef","useRef","proxyTryChangeValue","useCallback","item","shouldChecked","changedItems","Array","isArray","current","push","selectedItems","uniqBy","checkedItems","filter","includes","id","map","raw","useCheckDefault","checkedIds","onCheck","allowCheck","onOptionCheck","isCheckedId","rootProps","option"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASA,IAAMA,UAAU,GAAG,EAAnB;AACA,IAAMC,UAAU,GAAG,EAAnB;;IAEaC,cAAc,GAAG,SAAjBA,cAAiB,CAACC,EAAD;mBAC5BC;MAAMC,gCAAWL;MACjBM,cAAAA;uBACAC;MAAAA,oCAAW;MACJC,eAAPC;2BACAC;MAAAA,4CAAeT;MACLU,kBAAVC;MACAC,cAAAA;MACAC,gBAAAA;MACGC,wBAT0B,OAAA,YAAA,YAAA,SAAA,gBAAA,YAAA,YAAA,cAAA;;MAWvBX,IAAI,GAAGY,eAAAA,CAAQ;AAAEZ,IAAAA,IAAI,EAAEC,QAAR;AAAkBC,IAAAA,QAAQ,EAARA;AAAlB,GAARU;MACPC,WAAW,GAAGC,6BAAAA,CAAe;AAAEd,IAAAA,IAAI,EAAJA,IAAF;AAAQU,IAAAA,UAAU,EAAVA;AAAR,GAAfI;MACdC,cAAc,GAAGC,sBAAAA,CAAaH,WAAbG;;8BAESC,yCAAAA,CAAqBX,YAArBW,EAAmCb,SAAnCa,EAA8CV,YAA9CU;MAAzBZ,KAAP;MAAca,cAAd;;MAEMC,cAAc,GAAGC,2BAAAA,CAAkBX,QAAlBW;MAEjBC,gBAAgB,GAAGC,YAAAA,CAAc,EAAdA;MAEnBC,mBAAmB,GAAGC,iBAAAA,CAC1B,UACEnB,KADF,EAEEoB,IAFF,EAGEC,aAHF;QAKMC,YAAY,GAAGF;;QAEf,CAACG,KAAK,CAACC,OAAND,CAAcH,IAAdG,GAAqB;AACxBD,MAAAA,YAAY,GAAG,CAACF,IAAD,CAAfE;;UAEID,eAAe;AACjBL,QAAAA,gBAAgB,CAACS,OAAjBT,CAAyBU,IAAzBV,CAA8BI,IAA9BJ;;;AAEFF,MAAAA,cAAc,CAACd,KAAD,EAAQoB,IAAR,EAAcC,aAAd,CAAdP;;;QAGIa,aAAa,GAAGC,aAAAA,WAChBN,cAAiBN,gBAAgB,CAACS,SAAYf,cAAc,CAACe,QAD7CG,EAEpB,IAFoBA;;QAMhBC,YAAY,GAAGF,aAAa;AAAA,KAE/BG,MAFkBH,CAEX,UAACP,IAAD;aAAUpB,KAAK,CAAC+B,QAAN/B,CAAeoB,IAAI,CAACY,EAApBhC;AAFC,KAAA2B,EAGlBM,GAHkBN,CAGd,UAACP,IAAD;aAAW,SAASA,IAAT,GAAgBA,IAAI,CAACc,GAArB,GAA2Bd;AAHxB,KAAAO;AAKrBd,IAAAA,cAAc,CACZb,KADY;AAGZsB,IAAAA,YAAY,CAACW,GAAbX,CAAiB,UAACF,IAAD;aAAW,SAASA,IAAT,GAAgBA,IAAI,CAACc,GAArB,GAA2Bd;AAAvD,KAAAE,CAHY,EAIZO,YAJY,CAAdhB;AA5BmC,GAAXM,EAmC1B,CAACN,cAAD,EAAiBC,cAAjB,EAAiCJ,cAAjC,EAAiDM,gBAAjD,CAnC0BG;;yBAsCSgB,iBAAAA,CAAgB;AACnDrC,IAAAA,QAAQ,EAARA,QADmD;AAEnDsC,IAAAA,UAAU,EAAEpC,KAFuC;AAGnDqC,IAAAA,OAAO,EAAEnB,mBAH0C;AAInDoB,IAAAA,UAAU,EAAVA;AAJmD,GAAhBH;MAA9BI,aAAP;MAAsBC,WAAtB;;SAOO;AACLC,IAAAA,SAAS,EAAEnC,IADN;AAELX,IAAAA,IAAI,EAAJA,IAFK;AAGLa,IAAAA,WAAW,EAAXA,WAHK;AAILR,IAAAA,KAAK,EAALA,KAJK;AAKLa,IAAAA,cAAc,EAAEK,mBALX;AAMLd,IAAAA,QAAQ,EAAEmC,aANL;AAOLC,IAAAA,WAAW,EAAXA;AAPK;;;AA4DT,IAAMF,UAAU,GAAG,SAAbA,UAAa,CAACI,MAAD;SAAiB,CAACA,MAAM,CAAC5C;AAA5C,CAAA;;"}