@hi-ui/check-select 4.3.1 → 4.3.3

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.
@@ -9,11 +9,8 @@
9
9
  */
10
10
  'use strict';
11
11
 
12
- Object.defineProperty(exports, '__esModule', {
13
- value: true
14
- });
15
-
16
12
  var React = require('react');
13
+
17
14
  /** @LICENSE
18
15
  * @hi-ui/use-cache
19
16
  * https://github.com/XiaoMi/hiui/tree/master/packages/hooks/use-cache#readme
@@ -27,17 +24,13 @@ var React = require('react');
27
24
  /**
28
25
  * A hook using for data cache that compatible with the controlled and uncontrolled modes coexist.
29
26
  */
30
-
31
-
32
27
  var useCache = function useCache(data) {
33
28
  var _useState = React.useState(data),
34
- internalData = _useState[0],
35
- setInternalData = _useState[1];
36
-
29
+ internalData = _useState[0],
30
+ setInternalData = _useState[1];
37
31
  React.useEffect(function () {
38
32
  setInternalData(data);
39
33
  }, [data]);
40
34
  return [internalData, setInternalData];
41
35
  };
42
-
43
36
  exports.useCache = useCache;
@@ -9,34 +9,24 @@
9
9
  */
10
10
  'use strict';
11
11
 
12
- Object.defineProperty(exports, '__esModule', {
13
- value: true
14
- });
15
-
16
12
  var tslib = require('tslib');
17
-
18
13
  var React = require('react');
19
-
20
14
  var useChildren = require('@hi-ui/use-children');
21
-
22
15
  var NOOP_ARRAY = [];
23
-
24
16
  var useData = function useData(_ref) {
25
17
  var data = _ref.data,
26
- children = _ref.children;
18
+ children = _ref.children;
27
19
  return React.useMemo(function () {
28
- var mergedData; // data 优先级大于内嵌式组合
29
-
20
+ var mergedData;
21
+ // data 优先级大于内嵌式组合
30
22
  if (Array.isArray(data)) {
31
23
  mergedData = data;
32
24
  } else if (children) {
33
25
  mergedData = parseChildren(children);
34
26
  }
35
-
36
27
  return mergedData || NOOP_ARRAY;
37
28
  }, [children, data]);
38
29
  };
39
-
40
30
  var parseChildren = function parseChildren(children) {
41
31
  var data = [];
42
32
  var list = useChildren.toArray(children);
@@ -44,13 +34,11 @@ var parseChildren = function parseChildren(children) {
44
34
  if (! /*#__PURE__*/React.isValidElement(item)) return;
45
35
  if (!item.type) return;
46
36
  var HiName = item.type.HiName;
47
-
48
37
  switch (HiName) {
49
38
  case 'CheckSelectOption':
50
39
  var option = parseOption(item);
51
40
  data.push(option);
52
41
  break;
53
-
54
42
  case 'CheckSelectOptionGroup':
55
43
  var optGroup = parseOptionGroup(item);
56
44
  data.push(optGroup);
@@ -59,14 +47,12 @@ var parseChildren = function parseChildren(children) {
59
47
  });
60
48
  return data;
61
49
  };
62
-
63
50
  var parseOption = function parseOption(node) {
64
51
  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
-
52
+ value = _a.value,
53
+ children = _a.children,
54
+ disabled = _a.disabled,
55
+ rest = tslib.__rest(_a, ["value", "children", "disabled", "groupTitle"]);
70
56
  var option = {
71
57
  id: value,
72
58
  title: children,
@@ -76,28 +62,23 @@ var parseOption = function parseOption(node) {
76
62
  };
77
63
  return option;
78
64
  };
79
-
80
65
  var parseOptionGroup = function parseOptionGroup(node) {
81
66
  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
-
67
+ _a = node.props,
68
+ groupId = _a.groupId,
69
+ label = _a.label,
70
+ children = _a.children,
71
+ rest = tslib.__rest(_a, ["groupId", "label", "children"]);
88
72
  var optGroup = {
89
73
  groupId: groupId !== null && groupId !== void 0 ? groupId : key,
90
74
  groupTitle: label,
91
75
  rootProps: rest,
92
76
  children: []
93
77
  };
94
-
95
78
  if (children) {
96
79
  optGroup.children = parseChildren(children);
97
80
  }
98
-
99
81
  return optGroup;
100
82
  };
101
-
102
83
  exports.parseChildren = parseChildren;
103
84
  exports.useData = useData;
@@ -9,22 +9,15 @@
9
9
  */
10
10
  'use strict';
11
11
 
12
- Object.defineProperty(exports, '__esModule', {
13
- value: true
14
- });
15
-
16
12
  var React = require('react');
17
-
18
13
  var treeUtils = require('@hi-ui/tree-utils');
19
-
20
14
  var NOOP_ARRAY = [];
21
15
  var DEFAULT_FIELD_NAMES = {};
22
-
23
16
  var useFlattenData = function useFlattenData(_ref) {
24
17
  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;
18
+ data = _ref$data === void 0 ? NOOP_ARRAY : _ref$data,
19
+ _ref$fieldNames = _ref.fieldNames,
20
+ fieldNames = _ref$fieldNames === void 0 ? DEFAULT_FIELD_NAMES : _ref$fieldNames;
28
21
  var flattedData = React.useMemo(function () {
29
22
  return flattenData({
30
23
  data: data,
@@ -33,29 +26,25 @@ var useFlattenData = function useFlattenData(_ref) {
33
26
  }, [data, fieldNames]);
34
27
  return flattedData;
35
28
  };
36
-
37
29
  var flattenData = function flattenData(_ref2) {
38
30
  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
-
31
+ data = _ref2$data === void 0 ? NOOP_ARRAY : _ref2$data,
32
+ _ref2$fieldNames = _ref2.fieldNames,
33
+ fieldNames = _ref2$fieldNames === void 0 ? DEFAULT_FIELD_NAMES : _ref2$fieldNames;
34
+ // 转换对象
43
35
  var getKeyFields = function getKeyFields(node, key) {
44
36
  return node[fieldNames[key] || key];
45
37
  };
46
-
47
38
  return treeUtils.baseFlattenTree({
48
39
  tree: data,
49
40
  childrenFieldName: function childrenFieldName(node) {
50
41
  return getKeyFields(node, 'children');
51
42
  },
52
43
  transform: function transform(node) {
53
- var _a; // 不对外暴露
54
-
55
-
44
+ var _a;
45
+ // 不对外暴露
56
46
  delete node.parent;
57
47
  var raw = node.raw;
58
-
59
48
  if ('groupId' in raw) {
60
49
  // 用于虚拟列表唯一 id
61
50
  node.id = raw.groupId;
@@ -67,11 +56,9 @@ var flattenData = function flattenData(_ref2) {
67
56
  node.title = getKeyFields(raw, 'title');
68
57
  node.disabled = (_a = getKeyFields(raw, 'disabled')) !== null && _a !== void 0 ? _a : false;
69
58
  }
70
-
71
59
  return node;
72
60
  }
73
61
  });
74
62
  };
75
-
76
63
  exports.flattenData = flattenData;
77
64
  exports.useFlattenData = useFlattenData;
package/lib/cjs/index.js CHANGED
@@ -12,11 +12,8 @@
12
12
  Object.defineProperty(exports, '__esModule', {
13
13
  value: true
14
14
  });
15
-
16
15
  require('./styles/index.scss.js');
17
-
18
16
  var CheckSelect = require('./CheckSelect.js');
19
-
20
17
  exports.CheckSelect = CheckSelect.CheckSelect;
21
18
  exports.CheckSelectOption = CheckSelect.CheckSelectOption;
22
19
  exports.CheckSelectOptionGroup = CheckSelect.CheckSelectOptionGroup;
@@ -13,9 +13,6 @@ Object.defineProperty(exports, '__esModule', {
13
13
  value: true
14
14
  });
15
15
  var css_248z = ".hi-v4-check-select-option {-webkit-box-sizing: border-box;box-sizing: border-box;width: 100%;display: -webkit-box;display: -ms-flexbox;display: flex;-webkit-box-align: center;-ms-flex-align: center;align-items: center;position: relative;border-radius: var(--hi-v4-border-radius-md, 4px);cursor: pointer;font-size: var(--hi-v4-text-size-md, 0.875rem);font-weight: var(--hi-v4-text-weight-normal, 400);color: var(--hi-v4-color-gray-700, #1f2733);line-height: var(--hi-v4-text-lineheight-sm, 1.25rem);}.hi-v4-check-select-option__indent {display: inline-block;width: 16px;height: 100%;}.hi-v4-check-select-option__title {display: -webkit-box;display: -ms-flexbox;display: flex;-webkit-box-align: center;-ms-flex-align: center;align-items: center;-webkit-box-sizing: border-box;box-sizing: border-box;width: 100%;padding: var(--hi-v4-spacing-3, 6px) var(--hi-v4-spacing-3, 6px);font-size: inherit;-webkit-text-size-adjust: none;-moz-text-size-adjust: none;-ms-text-size-adjust: none;text-size-adjust: none;font-weight: inherit;color: inherit;line-height: inherit;}.hi-v4-check-select-option:hover {background-color: var(--hi-v4-color-gray-100, #f2f4f7);}.hi-v4-check-select-option--focused {background-color: var(--hi-v4-color-gray-100, #f2f4f7);}.hi-v4-check-select-option--disabled {cursor: not-allowed;color: var(--hi-v4-color-gray-500, #929aa6);}.hi-v4-check-select-option-group {display: inline-block;margin-top: var(--hi-v4-spacing-6, 12px);margin-bottom: var(--hi-v4-spacing-2, 4px);padding: var(--hi-v4-spacing-3, 6px) 0 var(--hi-v4-spacing-3, 6px) var(--hi-v4-spacing-3, 6px);font-size: var(--hi-v4-text-size-md, 0.875rem);font-weight: var(--hi-v4-text-weight-normal, 400);color: var(--hi-v4-color-gray-500, #929aa6);line-height: var(--hi-v4-text-lineheight-sm, 1.25rem);}.hi-v4-check-select-option-group:first-child {margin-top: var(--hi-v4-spacing-2, 4px);}";
16
-
17
16
  var __styleInject__ = require('style-inject')["default"];
18
-
19
17
  __styleInject__(css_248z);
20
-
21
18
  exports["default"] = css_248z;
@@ -9,80 +9,57 @@
9
9
  */
10
10
  'use strict';
11
11
 
12
- Object.defineProperty(exports, '__esModule', {
13
- value: true
14
- });
15
-
16
12
  var tslib = require('tslib');
17
-
18
13
  var React = require('react');
19
-
20
14
  var useUncontrolledState = require('@hi-ui/use-uncontrolled-state');
21
-
22
15
  var arrayUtils = require('@hi-ui/array-utils');
23
-
24
16
  var useCheck = require('@hi-ui/use-check');
25
-
26
17
  var useLatest = require('@hi-ui/use-latest');
27
-
28
18
  var index = require('./hooks/use-cache/lib/esm/index.js');
29
-
30
19
  var useData = require('./hooks/use-data.js');
31
-
32
20
  var useFlattenData = require('./hooks/use-flatten-data.js');
33
-
34
21
  require('@hi-ui/env');
35
-
36
22
  require('@hi-ui/type-assertion');
37
-
38
23
  var NOOP_ARRAY = [];
39
24
  var NOOP_VALUE = [];
40
-
41
25
  var useCheckSelect = function useCheckSelect(_a) {
42
26
  var _a$data = _a.data,
43
- dataProp = _a$data === void 0 ? NOOP_ARRAY : _a$data,
44
- children = _a.children,
45
- _a$disabled = _a.disabled,
46
- disabled = _a$disabled === void 0 ? false : _a$disabled,
47
- valueProp = _a.value,
48
- _a$defaultValue = _a.defaultValue,
49
- defaultValue = _a$defaultValue === void 0 ? NOOP_VALUE : _a$defaultValue,
50
- onChangeProp = _a.onChange,
51
- onSelect = _a.onSelect,
52
- fieldNames = _a.fieldNames,
53
- rest = tslib.__rest(_a, ["data", "children", "disabled", "value", "defaultValue", "onChange", "onSelect", "fieldNames"]);
54
-
27
+ dataProp = _a$data === void 0 ? NOOP_ARRAY : _a$data,
28
+ children = _a.children,
29
+ _a$disabled = _a.disabled,
30
+ disabled = _a$disabled === void 0 ? false : _a$disabled,
31
+ valueProp = _a.value,
32
+ _a$defaultValue = _a.defaultValue,
33
+ defaultValue = _a$defaultValue === void 0 ? NOOP_VALUE : _a$defaultValue,
34
+ onChangeProp = _a.onChange,
35
+ onSelect = _a.onSelect,
36
+ fieldNames = _a.fieldNames,
37
+ rest = tslib.__rest(_a, ["data", "children", "disabled", "value", "defaultValue", "onChange", "onSelect", "fieldNames"]);
55
38
  var data = useData.useData({
56
39
  data: dataProp,
57
40
  children: children
58
41
  });
59
-
60
42
  var _useCache = index.useCache(data),
61
- cacheData = _useCache[0],
62
- setCacheData = _useCache[1];
63
-
43
+ cacheData = _useCache[0],
44
+ setCacheData = _useCache[1];
64
45
  var flattedData = useFlattenData.useFlattenData({
65
46
  data: cacheData,
66
47
  fieldNames: fieldNames
67
48
  });
68
49
  var flattedDataRef = useLatest.useLatestRef(flattedData);
69
-
70
50
  var _useUncontrolledState = useUncontrolledState.useUncontrolledState(defaultValue, valueProp, onChangeProp),
71
- value = _useUncontrolledState[0],
72
- tryChangeValue = _useUncontrolledState[1];
73
-
51
+ value = _useUncontrolledState[0],
52
+ tryChangeValue = _useUncontrolledState[1];
74
53
  var onSelectLatest = useLatest.useLatestCallback(onSelect);
75
- var usedItemsRef = React.useRef([]); // 扁平化的选中数据,可能包括异步临时选中缓存数据
76
-
54
+ var usedItemsRef = React.useRef([]);
55
+ // 扁平化的选中数据,可能包括异步临时选中缓存数据
77
56
  var _useState = React.useState([]),
78
- checkedItems = _useState[0],
79
- setCheckedItems = _useState[1];
57
+ checkedItems = _useState[0],
58
+ setCheckedItems = _useState[1];
80
59
  /**
81
60
  * 更新缓存的 data 数据
82
61
  * 兼容在搜索异步加载结果的场景时,将选中的项加入到 cacheData 数据中,这样再次打开下拉框时可以显示之前选中的值
83
62
  */
84
-
85
-
86
63
  var updateCacheData = React.useCallback(function (nextCheckedItems) {
87
64
  var newData = [].concat(cacheData);
88
65
  nextCheckedItems.forEach(function (item) {
@@ -96,38 +73,35 @@ var useCheckSelect = function useCheckSelect(_a) {
96
73
  }, [cacheData, flattedData, setCacheData]);
97
74
  var proxyTryChangeValue = React.useCallback(function (value, item, shouldChecked) {
98
75
  var changedItems = item;
99
-
100
76
  if (!Array.isArray(item)) {
101
77
  changedItems = [item];
102
78
  onSelectLatest(value, item, shouldChecked);
103
79
  }
104
-
105
80
  var usedItems = arrayUtils.uniqBy([].concat(changedItems, usedItemsRef.current, flattedDataRef.current), 'id');
106
- usedItemsRef.current = usedItems; // 使用最新的value
107
-
81
+ usedItemsRef.current = usedItems;
82
+ // 使用最新的value
108
83
  var nextCheckedItems = usedItems.filter(function (item) {
109
84
  return value.includes(item.id);
110
85
  });
111
86
  setCheckedItems(nextCheckedItems);
112
- tryChangeValue(value, // 处理脏数据
87
+ tryChangeValue(value,
88
+ // 处理脏数据
113
89
  changedItems.map(function (item) {
114
90
  return 'raw' in item ? item.raw : item;
115
91
  }), nextCheckedItems.map(function (item) {
116
92
  return 'raw' in item ? item.raw : item;
117
- })); // 每次更新 value 时,同步更新下 cacheData
118
-
93
+ }));
94
+ // 每次更新 value 时,同步更新下 cacheData
119
95
  updateCacheData(nextCheckedItems);
120
96
  }, [flattedDataRef, tryChangeValue, updateCacheData, onSelectLatest]);
121
-
122
97
  var _useCheckDefault = useCheck.useCheck({
123
- disabled: disabled,
124
- checkedIds: value,
125
- onCheck: proxyTryChangeValue,
126
- allowCheck: allowCheck
127
- }),
128
- onOptionCheck = _useCheckDefault[0],
129
- isCheckedId = _useCheckDefault[1];
130
-
98
+ disabled: disabled,
99
+ checkedIds: value,
100
+ onCheck: proxyTryChangeValue,
101
+ allowCheck: allowCheck
102
+ }),
103
+ onOptionCheck = _useCheckDefault[0],
104
+ isCheckedId = _useCheckDefault[1];
131
105
  return {
132
106
  rootProps: rest,
133
107
  data: data,
@@ -139,9 +113,7 @@ var useCheckSelect = function useCheckSelect(_a) {
139
113
  checkedItems: checkedItems
140
114
  };
141
115
  };
142
-
143
116
  var allowCheck = function allowCheck(option) {
144
117
  return !option.disabled;
145
118
  };
146
-
147
119
  exports.useCheckSelect = useCheckSelect;
@@ -9,13 +9,9 @@
9
9
  */
10
10
  'use strict';
11
11
 
12
- Object.defineProperty(exports, '__esModule', {
13
- value: true
14
- });
15
12
  /**
16
13
  * 判断选项是否进行可选操作
17
14
  */
18
-
19
15
  var isCheckableOption = function isCheckableOption(item) {
20
16
  if ('groupTitle' in item) return false;
21
17
  if (item.disabled) return false;
@@ -24,13 +20,10 @@ var isCheckableOption = function isCheckableOption(item) {
24
20
  /**
25
21
  * 判断选项为
26
22
  */
27
-
28
-
29
23
  var isOption = function isOption(item) {
30
24
  if ('groupTitle' in item) return false;
31
25
  return true;
32
26
  };
33
-
34
27
  var getAllCheckedStatus = function getAllCheckedStatus(dropdownItems, values, filterFunc) {
35
28
  var dropdownIds = dropdownItems.filter(filterFunc).map(function (_ref) {
36
29
  var id = _ref.id;
@@ -46,7 +39,6 @@ var getAllCheckedStatus = function getAllCheckedStatus(dropdownItems, values, fi
46
39
  });
47
40
  return [hasValue && dropdownIdsSet.size === 0, hasValue && dropdownIdsSet.size > 0];
48
41
  };
49
-
50
42
  exports.getAllCheckedStatus = getAllCheckedStatus;
51
43
  exports.isCheckableOption = isCheckableOption;
52
44
  exports.isOption = isOption;