@hi-ui/check-select 4.0.0-alpha.3 → 4.0.0-alpha.33
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/README.md +115 -7
- package/lib/cjs/CheckSelect.js +339 -112
- package/lib/cjs/CheckSelect.js.map +1 -1
- package/lib/cjs/context.js +7 -7
- package/lib/cjs/context.js.map +1 -1
- package/lib/cjs/index.js +1 -1
- package/lib/cjs/styles/index.scss.js +1 -1
- package/lib/cjs/use-check-select.js +119 -53
- package/lib/cjs/use-check-select.js.map +1 -1
- package/lib/esm/CheckSelect.js +330 -108
- package/lib/esm/CheckSelect.js.map +1 -1
- package/lib/esm/context.js +6 -6
- package/lib/esm/context.js.map +1 -1
- package/lib/esm/index.js +1 -1
- package/lib/esm/styles/index.scss.js +1 -1
- package/lib/esm/use-check-select.js +119 -53
- package/lib/esm/use-check-select.js.map +1 -1
- package/lib/types/CheckSelect.d.ts +71 -31
- package/lib/types/context.d.ts +12 -548
- package/lib/types/hooks/index.d.ts +0 -1
- package/lib/types/hooks/use-search.d.ts +1 -1
- package/lib/types/types.d.ts +41 -6
- package/lib/types/use-check-select.d.ts +69 -277
- package/package.json +30 -19
- package/lib/cjs/hooks/use-search.js +0 -81
- package/lib/cjs/hooks/use-search.js.map +0 -1
- package/lib/esm/hooks/use-search.js +0 -72
- package/lib/esm/hooks/use-search.js.map +0 -1
- package/lib/types/hooks/use-cache.d.ts +0 -8
@@ -21,14 +21,14 @@ var React = require('react');
|
|
21
21
|
|
22
22
|
var useUncontrolledState = require('@hi-ui/use-uncontrolled-state');
|
23
23
|
|
24
|
-
var useSearch = require('./hooks/use-search.js');
|
25
|
-
|
26
24
|
var useCheck = require('@hi-ui/use-check');
|
27
25
|
|
28
26
|
var useLatest = require('@hi-ui/use-latest');
|
29
27
|
|
30
28
|
var useChildren = require('@hi-ui/use-children');
|
31
29
|
|
30
|
+
var treeUtils = require('@hi-ui/tree-utils');
|
31
|
+
|
32
32
|
function _interopDefaultLegacy(e) {
|
33
33
|
return e && _typeof(e) === 'object' && 'default' in e ? e : {
|
34
34
|
'default': e
|
@@ -39,6 +39,7 @@ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
39
39
|
|
40
40
|
var NOOP_ARRAY = [];
|
41
41
|
var NOOP_VALUE = [];
|
42
|
+
var DEFAULT_FIELD_NAMES = {};
|
42
43
|
|
43
44
|
var useCheckSelect = function useCheckSelect(_a) {
|
44
45
|
var _a$data = _a.data,
|
@@ -53,56 +54,125 @@ var useCheckSelect = function useCheckSelect(_a) {
|
|
53
54
|
onSelect = _a.onSelect,
|
54
55
|
_a$emptyContent = _a.emptyContent,
|
55
56
|
emptyContent = _a$emptyContent === void 0 ? '无匹配选项' : _a$emptyContent,
|
56
|
-
|
57
|
-
|
58
|
-
rest = tslib.__rest(_a, ["data", "children", "disabled", "value", "defaultValue", "onChange", "onSelect", "emptyContent", "searchPlaceholder", "
|
57
|
+
_a$fieldNames = _a.fieldNames,
|
58
|
+
fieldNames = _a$fieldNames === void 0 ? DEFAULT_FIELD_NAMES : _a$fieldNames,
|
59
|
+
rest = tslib.__rest(_a, ["data", "children", "disabled", "value", "defaultValue", "onChange", "onSelect", "emptyContent", "searchPlaceholder", "filter", "fieldNames"]);
|
59
60
|
|
60
61
|
var data = React.useMemo(function () {
|
62
|
+
// @private
|
61
63
|
if (children) {
|
62
|
-
var
|
63
|
-
|
64
|
-
|
65
|
-
var dfs = function dfs(list) {
|
64
|
+
var dfs = function dfs(child) {
|
65
|
+
var arr = [];
|
66
|
+
var list = useChildren.toArray(child);
|
66
67
|
list.forEach(function (item) {
|
67
68
|
if (! /*#__PURE__*/React__default['default'].isValidElement(item)) return; // @ts-ignore
|
68
69
|
|
69
|
-
if (item.type
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
70
|
+
if (item.type.HiName === 'CheckSelectOption') {
|
71
|
+
var props = item.props;
|
72
|
+
|
73
|
+
var _value = props.value,
|
74
|
+
_children = props.children,
|
75
|
+
_disabled = props.disabled,
|
76
|
+
_rest = tslib.__rest(props, ["value", "children", "disabled", "groupTitle"]);
|
77
|
+
|
78
|
+
var option = {
|
79
|
+
id: _value,
|
80
|
+
title: _children,
|
81
|
+
disabled: _disabled,
|
82
|
+
rootProps: _rest
|
83
|
+
};
|
84
|
+
arr.push(option); // @ts-ignore
|
85
|
+
} else if (item.type.HiName === 'CheckSelectOptionGroup') {
|
86
|
+
var _props = item.props;
|
87
|
+
|
88
|
+
var groupId = _props.groupId,
|
89
|
+
label = _props.label,
|
90
|
+
_children2 = _props.children,
|
91
|
+
_rest2 = tslib.__rest(_props, ["groupId", "label", "children"]);
|
92
|
+
|
93
|
+
var optGroup = {
|
94
|
+
groupId: groupId,
|
95
|
+
groupTitle: label,
|
96
|
+
children: [],
|
97
|
+
rootProps: _rest2
|
98
|
+
}; // @ts-ignore
|
99
|
+
|
100
|
+
if (_children2) {
|
74
101
|
// @ts-ignore
|
75
|
-
|
76
|
-
|
77
|
-
dfs(_list);
|
102
|
+
optGroup.children = dfs(_children2);
|
78
103
|
}
|
104
|
+
|
105
|
+
arr.push(optGroup);
|
79
106
|
}
|
80
107
|
});
|
108
|
+
return arr;
|
81
109
|
};
|
82
110
|
|
83
|
-
dfs(
|
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
|
-
});
|
111
|
+
return dfs(children);
|
92
112
|
}
|
93
113
|
|
94
114
|
return dataProp;
|
95
115
|
}, [children, dataProp]);
|
116
|
+
/**
|
117
|
+
* 转换对象
|
118
|
+
*/
|
119
|
+
|
120
|
+
var getKeyFields = React.useCallback(function (node, key) {
|
121
|
+
return node[fieldNames[key] || key];
|
122
|
+
}, [fieldNames]);
|
123
|
+
var flattedData = React.useMemo(function () {
|
124
|
+
// @ts-ignore
|
125
|
+
return treeUtils.flattenTree(data, function (node) {
|
126
|
+
var _a;
|
127
|
+
|
128
|
+
if ('groupId' in node.raw) {
|
129
|
+
// @ts-ignore
|
130
|
+
node.id = node.raw.groupId; // @ts-ignore
|
131
|
+
|
132
|
+
node.groupTitle = node.raw.groupTitle; // @ts-ignore
|
133
|
+
|
134
|
+
node.groupId = node.raw.groupId;
|
135
|
+
} else {
|
136
|
+
// TODO:support children field map
|
137
|
+
node.id = getKeyFields(node.raw, 'id'); // @ts-ignore
|
138
|
+
|
139
|
+
node.title = getKeyFields(node.raw, 'title'); // @ts-ignore
|
140
|
+
|
141
|
+
node.disabled = (_a = getKeyFields(node.raw, 'disabled')) !== null && _a !== void 0 ? _a : false;
|
142
|
+
}
|
143
|
+
|
144
|
+
return node;
|
145
|
+
});
|
146
|
+
}, [data, getKeyFields]);
|
96
147
|
|
97
148
|
var _useUncontrolledState = useUncontrolledState.useUncontrolledState(defaultValue, valueProp, onChangeProp),
|
98
149
|
value = _useUncontrolledState[0],
|
99
150
|
tryChangeValue = _useUncontrolledState[1];
|
100
151
|
|
101
152
|
var onSelectLatest = useLatest.useLatestCallback(onSelect);
|
153
|
+
var flattedDataRef = useLatest.useLatestRef(flattedData);
|
102
154
|
var proxyTryChangeValue = React.useCallback(function (value, item, shouldChecked) {
|
103
|
-
|
104
|
-
|
105
|
-
|
155
|
+
// 调用用户的select
|
156
|
+
var checkedItems = flattedDataRef.current // 使用最新的value
|
157
|
+
.filter(function (item) {
|
158
|
+
return value.includes(item.id);
|
159
|
+
}).map(function (item) {
|
160
|
+
return item.raw;
|
161
|
+
});
|
162
|
+
var changedItems = item;
|
163
|
+
|
164
|
+
if (!Array.isArray(item)) {
|
165
|
+
changedItems = [item];
|
166
|
+
onSelectLatest(value, item, shouldChecked);
|
167
|
+
}
|
168
|
+
|
169
|
+
tryChangeValue(value, // TODO: 处理脏数据
|
170
|
+
changedItems.map(function (item) {
|
171
|
+
return 'raw' in item ? item.raw : item;
|
172
|
+
}), checkedItems);
|
173
|
+
}, // deps-ignore: isCheckedId no changed
|
174
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
175
|
+
[tryChangeValue, onSelectLatest, flattedDataRef]);
|
106
176
|
|
107
177
|
var _useCheckDefault = useCheck.useCheck({
|
108
178
|
disabled: disabled,
|
@@ -111,34 +181,30 @@ var useCheckSelect = function useCheckSelect(_a) {
|
|
111
181
|
allowCheck: allowCheck
|
112
182
|
}),
|
113
183
|
onOptionCheck = _useCheckDefault[0],
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
placeholder: searchPlaceholder,
|
126
|
-
value: inputProps.value,
|
127
|
-
onChange: inputProps.onChange
|
128
|
-
};
|
129
|
-
}, [searchPlaceholder, inputProps]);
|
184
|
+
isCheckedId = _useCheckDefault[1]; // const [inSearch, matchedItems, inputProps, isEmpty, resetSearch] = useSearch(data, filter)
|
185
|
+
// const getSearchInputProps = useCallback(
|
186
|
+
// () => ({
|
187
|
+
// placeholder: searchPlaceholder,
|
188
|
+
// value: inputProps.value,
|
189
|
+
// onChange: inputProps.onChange,
|
190
|
+
// }),
|
191
|
+
// [searchPlaceholder, inputProps]
|
192
|
+
// )
|
193
|
+
|
194
|
+
|
130
195
|
return {
|
131
196
|
rootProps: rest,
|
132
|
-
data: inSearch ? matchedItems : data,
|
197
|
+
// data: inSearch ? matchedItems : data,
|
198
|
+
data: data,
|
199
|
+
flattedData: flattedData,
|
133
200
|
value: value,
|
201
|
+
tryChangeValue: proxyTryChangeValue,
|
134
202
|
onSelect: onOptionCheck,
|
135
|
-
|
136
|
-
emptyContent: emptyContent,
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
resetSearch: resetSearch,
|
141
|
-
titleRender: titleRender
|
203
|
+
isCheckedId: isCheckedId,
|
204
|
+
emptyContent: emptyContent // getSearchInputProps,
|
205
|
+
// isEmpty,
|
206
|
+
// resetSearch,
|
207
|
+
|
142
208
|
};
|
143
209
|
};
|
144
210
|
|
@@ -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","
|
1
|
+
{"version":3,"file":"use-check-select.js","sources":["../../src/use-check-select.ts"],"sourcesContent":[null],"names":["NOOP_ARRAY","NOOP_VALUE","DEFAULT_FIELD_NAMES","useCheckSelect","_a","data","dataProp","children","disabled","valueProp","value","defaultValue","onChangeProp","onChange","onSelect","emptyContent","fieldNames","rest","useMemo","dfs","child","arr","list","toArray","forEach","item","React","isValidElement","type","HiName","props","option","id","title","rootProps","push","groupId","label","optGroup","groupTitle","getKeyFields","useCallback","node","key","flattedData","flattenTree","raw","useUncontrolledState","tryChangeValue","onSelectLatest","useLatestCallback","flattedDataRef","useLatestRef","proxyTryChangeValue","shouldChecked","checkedItems","current","filter","includes","map","changedItems","Array","isArray","useCheckDefault","checkedIds","onCheck","allowCheck","onOptionCheck","isCheckedId"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASA,IAAMA,UAAU,GAAG,EAAnB;AACA,IAAMC,UAAU,GAAG,EAAnB;AACA,IAAMC,mBAAmB,GAAG,EAA5B;;IAEaC,cAAc,GAAG,SAAjBA,cAAiB,CAACC,EAAD;mBAC5BC;MAAMC,gCAAWN;MACjBO,cAAAA;uBACAC;MAAAA,oCAAW;MACJC,eAAPC;2BACAC;MAAAA,4CAAeV;MACLW,kBAAVC;MACAC,cAAAA;2BACAC;MAAAA,4CAAe;yBAGfC;MAAAA,wCAAad;MACVe,wBAZ0B,OAAA,YAAA,YAAA,SAAA,gBAAA,YAAA,YAAA,gBAAA,qBAAA,UAAA,cAAA;;MAcvBZ,IAAI,GAAGa,aAAAA,CAAQ;;QAEfX,UAAU;UACNY,GAAG,GAAG,SAANA,GAAM,CAACC,KAAD;YACJC,GAAG,GAAU;YACbC,IAAI,GAAGC,mBAAAA,CAAQH,KAARG;AAEbD,QAAAA,IAAI,CAACE,OAALF,CAAa,UAACG,IAAD;cACP,eAACC,yBAAAA,CAAMC,cAAND,CAAqBD,IAArBC,GAA4B;;cAG7BD,IAAI,CAACG,IAALH,CAAUI,MAAVJ,KAAqB,qBAAqB;gBACpCK,KAAR,GAAkBL,IAAlB,CAAQK;;gBACApB,MAAR,GAA2DoB,KAA3D,CAAQpB;gBAAOH,SAAf,GAA2DuB,KAA3D,CAAevB;gBAAUC,SAAzB,GAA2DsB,KAA3D,CAAyBtB;gBAAyBS,KAAlD,gBAA2Da,OAArD,QAAA,YAAA,YAAA,cAAA;;gBACAC,MAAM,GAAG;AACbC,cAAAA,EAAE,EAAEtB,MADS;AAEbuB,cAAAA,KAAK,EAAE1B,SAFM;AAGbC,cAAAA,QAAQ,EAAEA,SAHG;AAIb0B,cAAAA,SAAS,EAAEjB;AAJE;AAMfI,YAAAA,GAAG,CAACc,IAAJd,CAASU,MAATV,EAT4C;AAA9C,iBAWO,IAAII,IAAI,CAACG,IAALH,CAAUI,MAAVJ,KAAqB,wBAAzB,EAAmD;gBAChDK,MAAR,GAAkBL,IAAlB,CAAQK;;gBACAM,OAAR,GAA8CN,MAA9C,CAAQM;gBAASC,KAAjB,GAA8CP,MAA9C,CAAiBO;gBAAO9B,UAAxB,GAA8CuB,MAA9C,CAAwBvB;gBAAaU,MAArC,gBAA8Ca,QAAxC,UAAA,SAAA,YAAA;;gBAEAQ,QAAQ,GAAG;AACfF,cAAAA,OAAO,EAAPA,OADe;AAEfG,cAAAA,UAAU,EAAEF,KAFG;AAGf9B,cAAAA,QAAQ,EAAE,EAHK;AAIf2B,cAAAA,SAAS,EAAEjB;AAJI,cAJuC;;gBAYpDV,YAAU;;AAEZ+B,cAAAA,QAAQ,CAAC/B,QAAT+B,GAAoBnB,GAAG,CAACZ,UAAD,CAAvB+B;;;AAGFjB,YAAAA,GAAG,CAACc,IAAJd,CAASiB,QAATjB;;AAhCJ,SAAAC;eAoCOD;AAxCT;;aA2COF,GAAG,CAACZ,QAAD;;;WAGLD;AAjDW,GAAPY,EAkDV,CAACX,QAAD,EAAWD,QAAX,CAlDUY;;;;;MAuDPsB,YAAY,GAAGC,iBAAAA,CACnB,UAACC,IAAD,EAAYC,GAAZ;WACSD,IAAI,CAAC1B,UAAU,CAAC2B,GAAD,CAAV3B,IAAmB2B,GAApB;AAFiB,GAAXF,EAInB,CAACzB,UAAD,CAJmByB;MAOfG,WAAW,GAAG1B,aAAAA,CAAQ;;WAEnB2B,qBAAAA,CAAYxC,IAAZwC,EAAkB,UAACH,IAAD;;;UACnB,aAAaA,IAAI,CAACI,KAAK;;AAEzBJ,QAAAA,IAAI,CAACV,EAALU,GAAUA,IAAI,CAACI,GAALJ,CAASN,OAAnBM,CAFyB;;AAIzBA,QAAAA,IAAI,CAACH,UAALG,GAAkBA,IAAI,CAACI,GAALJ,CAASH,UAA3BG,CAJyB;;AAMzBA,QAAAA,IAAI,CAACN,OAALM,GAAeA,IAAI,CAACI,GAALJ,CAASN,OAAxBM;AANF,aAOO;;AAELA,QAAAA,IAAI,CAACV,EAALU,GAAUF,YAAY,CAACE,IAAI,CAACI,GAAN,EAAW,IAAX,CAAtBJ,CAFK;;AAILA,QAAAA,IAAI,CAACT,KAALS,GAAaF,YAAY,CAACE,IAAI,CAACI,GAAN,EAAW,OAAX,CAAzBJ,CAJK;;AAMLA,QAAAA,IAAI,CAAClC,QAALkC,GAAgB,MAAAF,YAAY,CAACE,IAAI,CAACI,GAAN,EAAW,UAAX,CAAZ,UAAA,iBAAA,KAAA,GAAsC,KAAtDJ;;;aAEKA;AAhBS,KAAXG;AAFkB,GAAP3B,EAoBjB,CAACb,IAAD,EAAOmC,YAAP,CApBiBtB;;8BAsBY6B,yCAAAA,CAAqBpC,YAArBoC,EAAmCtC,SAAnCsC,EAA8CnC,YAA9CmC;MAAzBrC,KAAP;MAAcsC,cAAd;;MAEMC,cAAc,GAAGC,2BAAAA,CAAkBpC,QAAlBoC;MAEjBC,cAAc,GAAGC,sBAAAA,CAAaR,WAAbQ;MAEjBC,mBAAmB,GAAGZ,iBAAAA,CAC1B,UACE/B,KADF,EAEEe,IAFF,EAGE6B,aAHF;;QAMQC,YAAY,GAAGJ,cAAc,CAACK,OAAfL;AAAAA,KAElBM,MAFkBN,CAEX,UAAC1B,IAAD;aAAUf,KAAK,CAACgD,QAANhD,CAAee,IAAI,CAACO,EAApBtB;AAFC,KAAAyC,EAGlBQ,GAHkBR,CAGd,UAAC1B,IAAD;aAAUA,IAAI,CAACqB;AAHD,KAAAK;QAKjBS,YAAY,GAAGnC;;QAEf,CAACoC,KAAK,CAACC,OAAND,CAAcpC,IAAdoC,GAAqB;AACxBD,MAAAA,YAAY,GAAG,CAACnC,IAAD,CAAfmC;AAEAX,MAAAA,cAAc,CAACvC,KAAD,EAAQe,IAAR,EAAc6B,aAAd,CAAdL;;;AAGFD,IAAAA,cAAc,CACZtC,KADY;AAGZkD,IAAAA,YAAY,CAACD,GAAbC,CAAiB,UAACnC,IAAD;aAAW,SAASA,IAAT,GAAgBA,IAAI,CAACqB,GAArB,GAA2BrB;AAAvD,KAAAmC,CAHY,EAIZL,YAJY,CAAdP;AApBmC,GAAXP;;GA6BzBO,gBAAgBC,gBAAgBE,eA7BPV;;yBAgCSsB,iBAAAA,CAAgB;AACnDvD,IAAAA,QAAQ,EAARA,QADmD;AAEnDwD,IAAAA,UAAU,EAAEtD,KAFuC;AAGnDuD,IAAAA,OAAO,EAAEZ,mBAH0C;AAInDa,IAAAA,UAAU,EAAVA;AAJmD,GAAhBH;MAA9BI,aAAP;MAAsBC,WAAtB;;;;;;;;;;;SAkBO;AACLlC,IAAAA,SAAS,EAAEjB,IADN;;AAGLZ,IAAAA,IAAI,EAAJA,IAHK;AAILuC,IAAAA,WAAW,EAAXA,WAJK;AAKLlC,IAAAA,KAAK,EAALA,KALK;AAMLsC,IAAAA,cAAc,EAAEK,mBANX;AAOLvC,IAAAA,QAAQ,EAAEqD,aAPL;AAQLC,IAAAA,WAAW,EAAXA,WARK;AASLrD,IAAAA,YAAY,EAAZA,YATK;;;;AAAA;;;AAoFT,IAAMmD,UAAU,GAAG,SAAbA,UAAa,CAACnC,MAAD;SAAiB,CAACA,MAAM,CAACvB;AAA5C,CAAA;;"}
|