@hi-ui/check-select 4.0.0-alpha.6 → 4.0.0-beta.0

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 +290 -144
  3. package/lib/cjs/CheckSelect.js.map +1 -1
  4. package/lib/cjs/hooks/use-data.js +104 -0
  5. package/lib/cjs/hooks/use-data.js.map +1 -0
  6. package/lib/cjs/hooks/use-flatten-data.js +78 -0
  7. package/lib/cjs/hooks/use-flatten-data.js.map +1 -0
  8. package/lib/cjs/index.js +0 -1
  9. package/lib/cjs/index.js.map +1 -1
  10. package/lib/cjs/styles/index.scss.js +1 -1
  11. package/lib/cjs/use-check-select.js +50 -96
  12. package/lib/cjs/use-check-select.js.map +1 -1
  13. package/lib/esm/CheckSelect.js +284 -141
  14. package/lib/esm/CheckSelect.js.map +1 -1
  15. package/lib/esm/hooks/use-data.js +94 -0
  16. package/lib/esm/hooks/use-data.js.map +1 -0
  17. package/lib/esm/hooks/use-flatten-data.js +69 -0
  18. package/lib/esm/hooks/use-flatten-data.js.map +1 -0
  19. package/lib/esm/index.js +1 -1
  20. package/lib/esm/styles/index.scss.js +1 -1
  21. package/lib/esm/use-check-select.js +49 -88
  22. package/lib/esm/use-check-select.js.map +1 -1
  23. package/lib/types/CheckSelect.d.ts +57 -21
  24. package/lib/types/context.d.ts +8 -30
  25. package/lib/types/hooks/index.d.ts +2 -0
  26. package/lib/types/hooks/use-data.d.ts +4 -0
  27. package/lib/types/hooks/use-flatten-data.d.ts +2 -0
  28. package/lib/types/hooks/use-search.d.ts +2 -2
  29. package/lib/types/types.d.ts +29 -5
  30. package/lib/types/use-check-select.d.ts +20 -52
  31. package/package.json +29 -19
  32. package/lib/cjs/hooks/use-search.js +0 -154
  33. package/lib/cjs/hooks/use-search.js.map +0 -1
  34. package/lib/cjs/utils/type-assertion/lib/esm/index.js +0 -42
  35. package/lib/cjs/utils/type-assertion/lib/esm/index.js.map +0 -1
  36. package/lib/esm/hooks/use-search.js +0 -144
  37. package/lib/esm/hooks/use-search.js.map +0 -1
  38. package/lib/esm/utils/type-assertion/lib/esm/index.js +0 -33
  39. package/lib/esm/utils/type-assertion/lib/esm/index.js.map +0 -1
@@ -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
@@ -20,6 +20,5 @@ var CheckSelect = require('./CheckSelect.js');
20
20
  exports.CheckSelect = CheckSelect.CheckSelect;
21
21
  exports.CheckSelectOption = CheckSelect.CheckSelectOption;
22
22
  exports.CheckSelectOptionGroup = CheckSelect.CheckSelectOptionGroup;
23
- exports.CheckSelectSearch = CheckSelect.CheckSelectSearch;
24
23
  exports["default"] = CheckSelect.CheckSelect;
25
24
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;"}
@@ -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-tag-input,\n .hi-v4-check-select--open .hi-v4-tag-input-mock {\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 .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: 10px 10px 6px;\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,75 +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
- filter = _a.filter,
58
- titleRender = _a.titleRender,
59
- rest = tslib.__rest(_a, ["data", "children", "disabled", "value", "defaultValue", "onChange", "onSelect", "emptyContent", "searchPlaceholder", "filter", "titleRender"]);
60
-
61
- var data = React.useMemo(function () {
62
- if (children) {
63
- var dfs = function dfs(child) {
64
- var list = useChildren.toArray(child);
65
- var arr = [];
66
- list.forEach(function (item) {
67
- if (! /*#__PURE__*/React__default['default'].isValidElement(item)) return; // @ts-ignore
68
-
69
- if (item.type.HiName === 'CheckSelectOption') {
70
- var props = item.props;
71
-
72
- var _value = props.value,
73
- _children = props.children,
74
- _disabled = props.disabled,
75
- _rest = tslib.__rest(props, ["value", "children", "disabled", "groupTitle"]);
76
-
77
- var option = {
78
- id: _value,
79
- title: _children,
80
- disabled: _disabled,
81
- rootProps: _rest
82
- };
83
- arr.push(option); // @ts-ignore
84
- } else if (item.type.HiName === 'CheckSelectOptionGroup') {
85
- var _props = item.props;
86
-
87
- var label = _props.label,
88
- _children2 = _props.children,
89
- _rest2 = tslib.__rest(_props, ["label", "children"]);
90
-
91
- var optGroup = {
92
- groupTitle: label,
93
- children: [],
94
- rootProps: _rest2
95
- }; // @ts-ignore
96
-
97
- if (_children2) {
98
- // @ts-ignore
99
- optGroup.children = dfs(_children2);
100
- }
101
-
102
- arr.push(optGroup);
103
- }
104
- });
105
- return arr;
106
- };
107
-
108
- return dfs(children);
109
- }
110
-
111
- return dataProp;
112
- }, [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);
113
62
 
114
63
  var _useUncontrolledState = useUncontrolledState.useUncontrolledState(defaultValue, valueProp, onChangeProp),
115
64
  value = _useUncontrolledState[0],
116
65
  tryChangeValue = _useUncontrolledState[1];
117
66
 
118
67
  var onSelectLatest = useLatest.useLatestCallback(onSelect);
68
+ var selectedItemsRef = React.useRef([]);
119
69
  var proxyTryChangeValue = React.useCallback(function (value, item, shouldChecked) {
120
- tryChangeValue(value, item, shouldChecked);
121
- onSelectLatest(value, item, shouldChecked);
122
- }, [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]);
123
95
 
124
96
  var _useCheckDefault = useCheck.useCheck({
125
97
  disabled: disabled,
@@ -128,34 +100,16 @@ var useCheckSelect = function useCheckSelect(_a) {
128
100
  allowCheck: allowCheck
129
101
  }),
130
102
  onOptionCheck = _useCheckDefault[0],
131
- isSelectedId = _useCheckDefault[1];
132
-
133
- var _useSearch = useSearch.useSearch(data, filter),
134
- inSearch = _useSearch[0],
135
- matchedItems = _useSearch[1],
136
- inputProps = _useSearch[2],
137
- isEmpty = _useSearch[3],
138
- resetSearch = _useSearch[4];
139
-
140
- var getSearchInputProps = React.useCallback(function () {
141
- return {
142
- placeholder: searchPlaceholder,
143
- value: inputProps.value,
144
- onChange: inputProps.onChange
145
- };
146
- }, [searchPlaceholder, inputProps]);
103
+ isCheckedId = _useCheckDefault[1];
104
+
147
105
  return {
148
106
  rootProps: rest,
149
- data: inSearch ? matchedItems : data,
107
+ data: data,
108
+ flattedData: flattedData,
150
109
  value: value,
110
+ tryChangeValue: proxyTryChangeValue,
151
111
  onSelect: onOptionCheck,
152
- isSelectedId: isSelectedId,
153
- emptyContent: emptyContent,
154
- getSearchInputProps: getSearchInputProps,
155
- tryChangeValue: tryChangeValue,
156
- isEmpty: isEmpty,
157
- resetSearch: resetSearch,
158
- titleRender: titleRender
112
+ isCheckedId: isCheckedId
159
113
  };
160
114
  };
161
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","filter","titleRender","rest","useMemo","dfs","child","list","toArray","arr","forEach","item","React","isValidElement","type","HiName","props","option","id","title","rootProps","push","label","optGroup","groupTitle","useUncontrolledState","tryChangeValue","onSelectLatest","useLatestCallback","proxyTryChangeValue","useCallback","shouldChecked","useCheckDefault","checkedIds","onCheck","allowCheck","onOptionCheck","isSelectedId","useSearch","inSearch","matchedItems","inputProps","isEmpty","resetSearch","getSearchInputProps","placeholder"],"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;;"}