@hi-ui/check-cascader 5.0.0-canary.9 → 5.0.0-experimental.1

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/CHANGELOG.md +138 -150
  2. package/lib/cjs/CheckCascader.js +87 -16
  3. package/lib/cjs/CheckCascaderMenu.js +4 -2
  4. package/lib/cjs/CheckCascaderMenuList.js +10 -3
  5. package/lib/cjs/hooks/use-check.js +3 -9
  6. package/lib/cjs/icons/index.js +3 -6
  7. package/lib/cjs/styles/index.scss.js +1 -1
  8. package/lib/cjs/ui/highlighter/lib/esm/Highlighter.js +88 -0
  9. package/lib/cjs/ui/highlighter/lib/esm/styles/index.scss.js +35 -0
  10. package/lib/cjs/ui/virtual-list/lib/esm/node_modules/rc-resize-observer/node_modules/rc-util/es/Children/toArray.js +1 -1
  11. package/lib/cjs/ui/virtual-list/lib/esm/node_modules/rc-resize-observer/node_modules/rc-util/es/ref.js +1 -1
  12. package/lib/cjs/ui/virtual-list/lib/esm/node_modules/{react-is → rc-resize-observer/node_modules/react-is}/cjs/react-is.development.js +1 -1
  13. package/lib/cjs/ui/virtual-list/lib/esm/node_modules/{react-is → rc-resize-observer/node_modules/react-is}/cjs/react-is.production.min.js +1 -1
  14. package/lib/cjs/ui/virtual-list/lib/esm/node_modules/{react-is → rc-resize-observer/node_modules/react-is}/index.js +3 -3
  15. package/lib/cjs/ui/virtual-list/lib/esm/style/index.scss.js +35 -0
  16. package/lib/cjs/utils/index.js +52 -1
  17. package/lib/esm/CheckCascader.js +89 -19
  18. package/lib/esm/CheckCascaderMenu.js +4 -2
  19. package/lib/esm/CheckCascaderMenuList.js +12 -5
  20. package/lib/esm/hooks/use-check.js +1 -7
  21. package/lib/esm/icons/index.js +3 -6
  22. package/lib/esm/styles/index.scss.js +1 -1
  23. package/lib/esm/ui/highlighter/lib/esm/Highlighter.js +76 -0
  24. package/lib/esm/ui/highlighter/lib/esm/styles/index.scss.js +23 -0
  25. package/lib/esm/ui/virtual-list/lib/esm/node_modules/rc-resize-observer/node_modules/rc-util/es/Children/toArray.js +1 -1
  26. package/lib/esm/ui/virtual-list/lib/esm/node_modules/rc-resize-observer/node_modules/rc-util/es/ref.js +1 -1
  27. package/lib/esm/ui/virtual-list/lib/esm/node_modules/{react-is → rc-resize-observer/node_modules/react-is}/cjs/react-is.development.js +1 -1
  28. package/lib/esm/ui/virtual-list/lib/esm/node_modules/{react-is → rc-resize-observer/node_modules/react-is}/cjs/react-is.production.min.js +1 -1
  29. package/lib/esm/ui/virtual-list/lib/esm/node_modules/{react-is → rc-resize-observer/node_modules/react-is}/index.js +3 -3
  30. package/lib/esm/ui/virtual-list/lib/esm/style/index.scss.js +23 -0
  31. package/lib/esm/utils/index.js +50 -2
  32. package/lib/types/CheckCascader.d.ts +18 -2
  33. package/lib/types/CheckCascaderMenuList.d.ts +4 -0
  34. package/lib/types/hooks/use-async-switch.d.ts +1 -1
  35. package/lib/types/hooks/use-check.d.ts +2 -2
  36. package/lib/types/icons/index.d.ts +1 -1
  37. package/lib/types/types.d.ts +6 -2
  38. package/lib/types/utils/index.d.ts +7 -4
  39. package/package.json +26 -26
package/CHANGELOG.md CHANGED
@@ -1,186 +1,174 @@
1
1
  # @hi-ui/check-cascader
2
2
 
3
- ## 5.0.0-canary.9
3
+ ## 5.0.0-experimental.1
4
4
 
5
5
  ### Patch Changes
6
6
 
7
- - 807b7c644: fix(tag-input): 修复 contained 模式下 displayRender 设置无效问题 (5.0)
8
- - Updated dependencies [ab2d5625d]
9
- - Updated dependencies [807b7c644]
10
- - @hi-ui/input@5.0.0-canary.8
11
- - @hi-ui/tag-input@5.0.0-canary.10
12
-
13
- ## 5.0.0-canary.8
14
-
15
- ### Minor Changes
16
-
17
- - bbba46153: feat(cascader): onChange 回调中增加选中项对象参数返回 (#3230)
18
-
19
- ### Patch Changes
20
-
21
- - Updated dependencies [bf65028e6]
22
- - @hi-ui/popper@5.0.0-canary.4
23
-
24
- ## 5.0.0-canary.7
25
-
26
- ### Patch Changes
27
-
28
- - cc0a82922: perf(cascader): 性能优化 (5.0)
29
- - Updated dependencies [cc0a82922]
30
- - @hi-ui/tag-input@5.0.0-canary.9
31
-
32
- ## 5.0.0-canary.6
33
-
34
- ### Patch Changes
35
-
36
- - chore: rebase master (5.0)
7
+ - 8f23e9322: style: 表单类组件统一调整后缀颜色、placeholder 颜色 (5.0)
8
+ - 发布 hiui experimental 版本
9
+ - Updated dependencies [8f23e9322]
10
+ - Updated dependencies [b27483796]
11
+ - Updated dependencies [900c6c2f0]
37
12
  - Updated dependencies
38
- - @hi-ui/core@5.0.0-canary.2
39
- - @hi-ui/use-check@5.0.0-canary.2
40
- - @hi-ui/use-data-source@5.0.0-canary.2
41
- - @hi-ui/use-latest@5.0.0-canary.2
42
- - @hi-ui/use-merge-refs@5.0.0-canary.2
43
- - @hi-ui/use-outside-click@5.0.0-canary.2
44
- - @hi-ui/use-search-mode@5.0.0-canary.2
45
- - @hi-ui/use-toggle@5.0.0-canary.2
46
- - @hi-ui/use-uncontrolled-state@5.0.0-canary.2
47
- - @hi-ui/icons@5.0.0-canary.2
48
- - @hi-ui/checkbox@5.0.0-canary.2
49
- - @hi-ui/input@5.0.0-canary.7
50
- - @hi-ui/picker@5.0.0-canary.8
51
- - @hi-ui/popper@5.0.0-canary.3
52
- - @hi-ui/spinner@5.0.0-canary.2
53
- - @hi-ui/tag-input@5.0.0-canary.8
54
- - @hi-ui/array-utils@5.0.0-canary.2
55
- - @hi-ui/classname@5.0.0-canary.2
56
- - @hi-ui/env@5.0.0-canary.2
57
- - @hi-ui/func-utils@5.0.0-canary.2
58
- - @hi-ui/times@5.0.0-canary.2
59
- - @hi-ui/tree-utils@5.0.0-canary.2
60
- - @hi-ui/type-assertion@5.0.0-canary.2
61
-
62
- ## 5.0.0-canary.5
13
+ - @hi-ui/input@5.0.0-experimental.1
14
+ - @hi-ui/picker@5.0.0-experimental.1
15
+ - @hi-ui/tag-input@5.0.0-experimental.1
63
16
 
64
- ### Patch Changes
17
+ ## 5.0.0-experimental.0
65
18
 
66
- - 4b09e728b: build: 将 package.json 中 exports 配置中的 types 配置放在最上面 (5.0)
67
- - ba7c324c2: style: 统一调整选择类组件 hover 时的背景色 (5.0)
68
- - Updated dependencies [ba7c324c2]
69
- - Updated dependencies [4b09e728b]
70
- - @hi-ui/picker@5.0.0-canary.7
71
- - @hi-ui/core@5.0.0-canary.1
72
- - @hi-ui/use-check@5.0.0-canary.1
73
- - @hi-ui/use-data-source@5.0.0-canary.1
74
- - @hi-ui/use-latest@5.0.0-canary.1
75
- - @hi-ui/use-merge-refs@5.0.0-canary.1
76
- - @hi-ui/use-outside-click@5.0.0-canary.1
77
- - @hi-ui/use-search-mode@5.0.0-canary.1
78
- - @hi-ui/use-toggle@5.0.0-canary.1
79
- - @hi-ui/use-uncontrolled-state@5.0.0-canary.1
80
- - @hi-ui/icons@5.0.0-canary.1
81
- - @hi-ui/checkbox@5.0.0-canary.1
82
- - @hi-ui/input@5.0.0-canary.6
83
- - @hi-ui/popper@5.0.0-canary.2
84
- - @hi-ui/spinner@5.0.0-canary.1
85
- - @hi-ui/tag-input@5.0.0-canary.7
86
- - @hi-ui/array-utils@5.0.0-canary.1
87
- - @hi-ui/classname@5.0.0-canary.1
88
- - @hi-ui/env@5.0.0-canary.1
89
- - @hi-ui/func-utils@5.0.0-canary.1
90
- - @hi-ui/times@5.0.0-canary.1
91
- - @hi-ui/tree-utils@5.0.0-canary.1
92
- - @hi-ui/type-assertion@5.0.0-canary.1
93
-
94
- ## 5.0.0-canary.4
95
-
96
- ### Patch Changes
97
-
98
- - 40f819417: fix: 修复 UI 问题 (5.0)
99
- - Updated dependencies [40f819417]
100
- - @hi-ui/input@5.0.0-canary.5
101
- - @hi-ui/tag-input@5.0.0-canary.6
19
+ ### Major Changes
102
20
 
103
- ## 5.0.0-canary.3
21
+ - 8f3aa85e4: feat: 组件的 package.json 中的 exports 统一加上 types 配置 (5.0)
104
22
 
105
23
  ### Minor Changes
106
24
 
107
- - c3052130d: feat(check-cascader): add showOnlyShowChecked api (5.0)
25
+ - b9989e482: feat(picker): 增加 clearSearchOnClosed api 默认是 false (5.0)
26
+ - f1ab51725: <br>
27
+ - feat(picker): 下拉选择类组件增加 xs 尺寸 (5.0)
28
+ - feat(input): 输入框组件增加 xs 尺寸 (5.0)
29
+ - f8acad4e1: feat(check-cascader): 增加 checkbox 级联禁用功能和相关样式调整 (5.0)
30
+ - a4c48b19e: feat(check-cascader): add showOnlyShowChecked api (5.0)
31
+ - 6dca7795c: feat: 下拉选择组件增加 showIndicator 参数 & 修改 appearance 中的 unset 样式 (5.0)
32
+ - 77d969c2e: feat: 下拉选择类组件 appearance 参数增加 contained 类型 (5.0)
33
+ - 58ad82e94: feat: 输入框和选择器组件增加 borderless 形态 (5.0)
108
34
 
109
35
  ### Patch Changes
110
36
 
111
- - df3615e78: <br>
37
+ - 6fb223e3a: style: fix ui bug (5.0)
38
+ - 9b34d99bc: chore: 将代码中 v4 改为 v5 (5.0)
39
+ - 1662753e0: style: fix ui bug (5.0)
40
+ - cf89262c7: style(picker): 移除 picker 组件中的 \_\_text 样式定义 (5.0)
41
+ - 68dccedb1: fix(check-cascader): 修复非平铺展示搜索结果时显示出层级问题 (5.0)
42
+ - 9b34d99bc: fix: 修复 5.0 UI 问题 (5.0)
43
+ - 1dbc23ca5: feat(check-cascader): 增加全选功能
44
+ - cb9d8f6db: fix(tag-input): 修复 contained 模式下 displayRender 设置无效问题 (5.0)
45
+ - be5a59325: style: 修改样式问题 (5.0)
46
+ - 79ea480f3: feat(global-context): 增加 size api 全局配置 (5.0)
47
+ - 2e56529f7: styles: 主题定制功能完善&&样式变量化写法改造&&兼容 RTL (5.0)
48
+ - 95abba983: fix: 修改 UI 问题 (5.0)
49
+ - de8d058dc: perf: 对下拉选择类组件的 customRender 的内容增加 memoization 以优化性能 (5.0)
50
+ - 5210770d9: feat(picker): add header api (5.0)
51
+ - 424700fc5: style(cascader&check-cascader): 调整下拉框样式,增加搜索框宽度设置 (5.0)
52
+ - 9ecf354ba: perf(cascader): 性能优化 (5.0)
53
+ - 4b2596538: <br>
54
+ - style(cascader&check-cascader): 增加 white-space: nowrap; 样式以防止文本换行 (5.0)
55
+ - style(cascader&check-cascader): 调整搜索框默认宽度为 100px (5.0)
56
+ - feat(check-cascader): 增加 flattedSearchResult 属性,用于控制搜索结果的展现形式 (5.0)
57
+ - fix(cascader): 修复当搜索结果为空时,下拉框没有显示空状态问题 (5.0)
58
+ - 33da3144e: build: 将 package.json 中 exports 配置中的 types 配置放在最上面 (5.0)
59
+ - e7b64347e: style(tag-input): 增加 flex-wrap 属性以优化标签换行展示 (5.0)
60
+ - 0a4e90dbd: <br>
112
61
  - style(tag-input): 间距调整 (5.0)
113
62
  - style(select): 选择类组件选项圆角改为 4px (5.0)
114
63
  - style(picker): 搜索框样式调整 (5.0)
115
- - Updated dependencies [3cb3377dc]
116
- - Updated dependencies [df3615e78]
117
- - @hi-ui/picker@5.0.0-canary.3
118
- - @hi-ui/tag-input@5.0.0-canary.4
119
-
120
- ## 5.0.0-canary.2
121
-
122
- ### Minor Changes
123
-
124
- - 6c4bf35af: feat: 下拉选择类组件 appearance 参数增加 contained 类型 (5.0)
64
+ - 79739ed82: <br>
65
+ - fix(cascader): 处理当 value 为空时清空选项的选中态(5.0)
66
+ - style(cascader&check-cascader): 调整选项容器最小宽度为 160px (5.0)
67
+ - style(cascader&check-cascader): 优化下拉框宽度,让内容和搜索框默认宽度对齐 (5.0)
68
+ - perf(cascader&check-cascader): 优化 customRender 函数,支持传递选中项和当前值 (5.0)
69
+ - 4a31cea53: style: 统一调整选择类组件 hover 时的背景色 (5.0)
70
+ - 99801c2d1: fix: 修复 UI 问题 (5.0)
71
+ - Updated dependencies [0b34e1c15]
72
+ - Updated dependencies [da2e63a14]
73
+ - Updated dependencies [1e226cd66]
74
+ - Updated dependencies [cce71cdfa]
75
+ - Updated dependencies [b9989e482]
76
+ - Updated dependencies [1662753e0]
77
+ - Updated dependencies [122d1d859]
78
+ - Updated dependencies [f1ab51725]
79
+ - Updated dependencies [41552be0b]
80
+ - Updated dependencies [8c0ee78f0]
81
+ - Updated dependencies [9b34d99bc]
82
+ - Updated dependencies [8f3aa85e4]
83
+ - Updated dependencies [f4fc0ef30]
84
+ - Updated dependencies [cb9d8f6db]
85
+ - Updated dependencies [ec4c7faa2]
86
+ - Updated dependencies [29cae09ea]
87
+ - Updated dependencies [fd4c20bbd]
88
+ - Updated dependencies [be5a59325]
89
+ - Updated dependencies [71fc15e5c]
90
+ - Updated dependencies [f8acad4e1]
91
+ - Updated dependencies [79ea480f3]
92
+ - Updated dependencies [2e56529f7]
93
+ - Updated dependencies [277c5033a]
94
+ - Updated dependencies [4e0ed3a31]
95
+ - Updated dependencies [95abba983]
96
+ - Updated dependencies [4a31cea53]
97
+ - Updated dependencies [976ec929d]
98
+ - Updated dependencies [f1ab51725]
99
+ - Updated dependencies [6dca7795c]
100
+ - Updated dependencies [7b956b1eb]
101
+ - Updated dependencies [5210770d9]
102
+ - Updated dependencies [e2d184e74]
103
+ - Updated dependencies [4006b2c8c]
104
+ - Updated dependencies [77d969c2e]
105
+ - Updated dependencies [9ecf354ba]
106
+ - Updated dependencies [e42e2badf]
107
+ - Updated dependencies [33da3144e]
108
+ - Updated dependencies [e7b64347e]
109
+ - Updated dependencies [7f3abee55]
110
+ - Updated dependencies [6fcda9bf2]
111
+ - Updated dependencies [0a4e90dbd]
112
+ - Updated dependencies [58ad82e94]
113
+ - Updated dependencies [a0f0c9d6b]
114
+ - Updated dependencies [f2be367e9]
115
+ - Updated dependencies [1972fd16a]
116
+ - Updated dependencies [99801c2d1]
117
+ - Updated dependencies [86910f5e2]
118
+ - Updated dependencies [cb7b794d0]
119
+ - @hi-ui/picker@5.0.0-experimental.0
120
+ - @hi-ui/input@5.0.0-experimental.0
121
+ - @hi-ui/popper@5.0.0-experimental.0
122
+ - @hi-ui/tag-input@5.0.0-experimental.0
123
+ - @hi-ui/icons@5.0.0-experimental.0
124
+ - @hi-ui/core@5.0.0-experimental.0
125
+ - @hi-ui/use-check@5.0.0-experimental.0
126
+ - @hi-ui/use-data-source@5.0.0-experimental.0
127
+ - @hi-ui/use-latest@5.0.0-experimental.0
128
+ - @hi-ui/use-merge-refs@5.0.0-experimental.0
129
+ - @hi-ui/use-outside-click@5.0.0-experimental.0
130
+ - @hi-ui/use-search-mode@5.0.0-experimental.0
131
+ - @hi-ui/use-toggle@5.0.0-experimental.0
132
+ - @hi-ui/use-uncontrolled-state@5.0.0-experimental.0
133
+ - @hi-ui/checkbox@5.0.0-experimental.0
134
+ - @hi-ui/spinner@5.0.0-experimental.0
135
+ - @hi-ui/array-utils@5.0.0-experimental.0
136
+ - @hi-ui/classname@5.0.0-experimental.0
137
+ - @hi-ui/env@5.0.0-experimental.0
138
+ - @hi-ui/func-utils@5.0.0-experimental.0
139
+ - @hi-ui/times@5.0.0-experimental.0
140
+ - @hi-ui/tree-utils@5.0.0-experimental.0
141
+ - @hi-ui/type-assertion@5.0.0-experimental.0
142
+
143
+ ## 4.5.2
125
144
 
126
145
  ### Patch Changes
127
146
 
128
- - Updated dependencies [6c4bf35af]
129
- - @hi-ui/input@5.0.0-canary.2
130
- - @hi-ui/tag-input@5.0.0-canary.2
147
+ - [#3336](https://github.com/XiaoMi/hiui/pull/3336) [`9356e8c`](https://github.com/XiaoMi/hiui/commit/9356e8ca43ae75f2886bd5225723ee9afad501a6) Thanks [@zyprepare](https://github.com/zyprepare)! - fix(use-search-mode): 优化初次搜索逻辑 (#3335)
131
148
 
132
- ## 5.0.0-canary.1
149
+ - Updated dependencies [[`9356e8c`](https://github.com/XiaoMi/hiui/commit/9356e8ca43ae75f2886bd5225723ee9afad501a6)]:
150
+ - @hi-ui/use-search-mode@4.2.3
151
+
152
+ ## 4.5.1
133
153
 
134
154
  ### Patch Changes
135
155
 
136
- - 3903bd4ff: chore: 将代码中 v4 改为 v5 (5.0)
137
- - 3903bd4ff: fix: 修复 5.0 UI 问题 (5.0)
138
- - Updated dependencies [3903bd4ff]
139
- - @hi-ui/input@5.0.0-canary.1
140
- - @hi-ui/picker@5.0.0-canary.1
141
- - @hi-ui/tag-input@5.0.0-canary.1
156
+ - [#3326](https://github.com/XiaoMi/hiui/pull/3326) [`c11a132ad`](https://github.com/XiaoMi/hiui/commit/c11a132ad1bb076356752e9d0a6f40cc04c44880) Thanks [@zyprepare](https://github.com/zyprepare)! - fix(check-cascader): 修复 onChange 第三个参数返回的值和类型不匹配问题 (#3325)
142
157
 
143
- ## 5.0.0-canary.0
158
+ - Updated dependencies [[`8db6414b6`](https://github.com/XiaoMi/hiui/commit/8db6414b635ef561c7487a6f713c21a388d85739)]:
159
+ - @hi-ui/use-search-mode@4.2.2
144
160
 
145
- ### Major Changes
146
-
147
- - 225ebaa51: feat: 组件的 package.json 中的 exports 统一加上 types 配置 (5.0)
161
+ ## 4.5.0
148
162
 
149
163
  ### Minor Changes
150
164
 
151
- - 428716024: <br>
152
- - feat(picker): 下拉选择类组件增加 xs 尺寸 (5.0)
153
- - feat(input): 输入框组件增加 xs 尺寸 (5.0)
165
+ - [#3231](https://github.com/XiaoMi/hiui/pull/3231) [`bbba46153`](https://github.com/XiaoMi/hiui/commit/bbba4615313cd0618deff633bebc657e7f34ec94) Thanks [@zyprepare](https://github.com/zyprepare)! - feat(cascader): onChange 回调中增加选中项对象参数返回 (#3230)
154
166
 
155
167
  ### Patch Changes
156
168
 
157
- - Updated dependencies [428716024]
158
- - Updated dependencies [225ebaa51]
159
- - Updated dependencies [192de8767]
160
- - Updated dependencies [428716024]
161
- - @hi-ui/input@5.0.0-canary.0
162
- - @hi-ui/picker@5.0.0-canary.0
163
- - @hi-ui/tag-input@5.0.0-canary.0
164
- - @hi-ui/core@5.0.0-canary.0
165
- - @hi-ui/use-check@5.0.0-canary.0
166
- - @hi-ui/use-data-source@5.0.0-canary.0
167
- - @hi-ui/use-latest@5.0.0-canary.0
168
- - @hi-ui/use-merge-refs@5.0.0-canary.0
169
- - @hi-ui/use-outside-click@5.0.0-canary.0
170
- - @hi-ui/use-search-mode@5.0.0-canary.0
171
- - @hi-ui/use-toggle@5.0.0-canary.0
172
- - @hi-ui/use-uncontrolled-state@5.0.0-canary.0
173
- - @hi-ui/icons@5.0.0-canary.0
174
- - @hi-ui/checkbox@5.0.0-canary.0
175
- - @hi-ui/popper@5.0.0-canary.0
176
- - @hi-ui/spinner@5.0.0-canary.0
177
- - @hi-ui/array-utils@5.0.0-canary.0
178
- - @hi-ui/classname@5.0.0-canary.0
179
- - @hi-ui/env@5.0.0-canary.0
180
- - @hi-ui/func-utils@5.0.0-canary.0
181
- - @hi-ui/times@5.0.0-canary.0
182
- - @hi-ui/tree-utils@5.0.0-canary.0
183
- - @hi-ui/type-assertion@5.0.0-canary.0
169
+ - Updated dependencies [[`dc1311a91`](https://github.com/XiaoMi/hiui/commit/dc1311a917518bc5debef755a9fcd4e33fb58790), [`b8c19048f`](https://github.com/XiaoMi/hiui/commit/b8c19048fe25147f344be4cd951740593aee8d12)]:
170
+ - @hi-ui/use-search-mode@4.2.1
171
+ - @hi-ui/tag-input@4.1.4
184
172
 
185
173
  ## 4.4.1
186
174
 
@@ -30,19 +30,24 @@ var treeUtils = require('@hi-ui/tree-utils');
30
30
  var useLatest = require('@hi-ui/use-latest');
31
31
  var typeAssertion = require('@hi-ui/type-assertion');
32
32
  var core = require('@hi-ui/core');
33
+ var Checkbox = require('@hi-ui/checkbox');
33
34
  var funcUtils = require('@hi-ui/func-utils');
35
+ require('./ui/highlighter/lib/esm/styles/index.scss.js');
36
+ var Highlighter = require('./ui/highlighter/lib/esm/Highlighter.js');
34
37
  function _interopDefaultCompat(e) {
35
38
  return e && _typeof(e) === 'object' && 'default' in e ? e : {
36
39
  'default': e
37
40
  };
38
41
  }
39
42
  var React__default = /*#__PURE__*/_interopDefaultCompat(React);
43
+ var Checkbox__default = /*#__PURE__*/_interopDefaultCompat(Checkbox);
40
44
  var _prefix = classname.getPrefixCls('check-cascader');
41
45
  var NOOP_ARRAY = [];
42
46
  /**
43
47
  * 多项级联选择器
44
48
  */
45
49
  var CheckCascader = /*#__PURE__*/React.forwardRef(function (_a, ref) {
50
+ var _b;
46
51
  var _a$prefixCls = _a.prefixCls,
47
52
  prefixCls = _a$prefixCls === void 0 ? _prefix : _a$prefixCls,
48
53
  className = _a.className,
@@ -70,16 +75,18 @@ var CheckCascader = /*#__PURE__*/React.forwardRef(function (_a, ref) {
70
75
  searchableProp = _a.searchable,
71
76
  keywordProp = _a.keyword,
72
77
  onSearchProp = _a.onSearch,
78
+ clearSearchOnClosed = _a.clearSearchOnClosed,
73
79
  overlayClassName = _a.overlayClassName,
74
80
  _a$type = _a.type,
75
81
  type = _a$type === void 0 ? 'tree' : _a$type,
82
+ _a$flattedSearchResul = _a.flattedSearchResult,
83
+ flattedSearchResult = _a$flattedSearchResul === void 0 ? true : _a$flattedSearchResul,
76
84
  checkedMode = _a.checkedMode,
77
85
  visible = _a.visible,
78
86
  onOpen = _a.onOpen,
79
87
  onClose = _a.onClose,
80
88
  tagInputProps = _a.tagInputProps,
81
- _a$size = _a.size,
82
- size = _a$size === void 0 ? 'md' : _a$size,
89
+ sizeProp = _a.size,
83
90
  prefix = _a.prefix,
84
91
  suffix = _a.suffix,
85
92
  renderExtraFooter = _a.renderExtraFooter,
@@ -89,7 +96,14 @@ var CheckCascader = /*#__PURE__*/React.forwardRef(function (_a, ref) {
89
96
  label = _a.label,
90
97
  showOnlyShowChecked = _a.showOnlyShowChecked,
91
98
  virtual = _a.virtual,
92
- rest = tslib.__rest(_a, ["prefixCls", "className", "defaultValue", "value", "onChange", "data", "placeholder", "clearable", "onClear", "onSelect", "expandTrigger", "disabled", "emptyContent", "changeOnSelect", "render", "displayRender", "checkCascaded", "searchPlaceholder", "onLoadChildren", "appearance", "invalid", "filterOption", "searchable", "keyword", "onSearch", "overlayClassName", "type", "checkedMode", "visible", "onOpen", "onClose", "tagInputProps", "size", "prefix", "suffix", "renderExtraFooter", "dropdownColumnRender", "customRender", "fieldNames", "label", "showOnlyShowChecked", "virtual"]);
99
+ showCheckAll = _a.showCheckAll,
100
+ _a$showIndicator = _a.showIndicator,
101
+ showIndicator = _a$showIndicator === void 0 ? true : _a$showIndicator,
102
+ renderExtraHeader = _a.renderExtraHeader,
103
+ rest = tslib.__rest(_a, ["prefixCls", "className", "defaultValue", "value", "onChange", "data", "placeholder", "clearable", "onClear", "onSelect", "expandTrigger", "disabled", "emptyContent", "changeOnSelect", "render", "displayRender", "checkCascaded", "searchPlaceholder", "onLoadChildren", "appearance", "invalid", "filterOption", "searchable", "keyword", "onSearch", "clearSearchOnClosed", "overlayClassName", "type", "flattedSearchResult", "checkedMode", "visible", "onOpen", "onClose", "tagInputProps", "size", "prefix", "suffix", "renderExtraFooter", "dropdownColumnRender", "customRender", "fieldNames", "label", "showOnlyShowChecked", "virtual", "showCheckAll", "showIndicator", "renderExtraHeader"]);
104
+ var _useGlobalContext = core.useGlobalContext(),
105
+ globalSize = _useGlobalContext.size;
106
+ var size = (_b = sizeProp !== null && sizeProp !== void 0 ? sizeProp : globalSize) !== null && _b !== void 0 ? _b : 'md';
93
107
  var i18n = core.useLocaleContext();
94
108
  var pickerInnerRef = React.useRef(null);
95
109
  var placeholder = typeAssertion.isUndef(placeholderProp) ? i18n.get('checkCascader.placeholder') : placeholderProp;
@@ -123,14 +137,18 @@ var CheckCascader = /*#__PURE__*/React.forwardRef(function (_a, ref) {
123
137
  _value = _useUncontrolledState[0],
124
138
  tryChangeValue = _useUncontrolledState[1];
125
139
  // 内部实现使用尾部 id
126
- var value = _value.map(function (path) {
127
- return path[path.length - 1];
128
- });
140
+ var value = React.useMemo(function () {
141
+ return _value.map(function (path) {
142
+ return path[path.length - 1];
143
+ });
144
+ }, [_value]);
129
145
  var proxyOnChange = useLatest.useLatestCallback(function (value, item, shouldChecked) {
146
+ var dataItemsPaths = [];
130
147
  var itemsPaths = value.map(function (lastId) {
131
148
  var item = flattedDataMap.get(lastId);
132
149
  if (item) {
133
- return treeUtils.getTopDownAncestors(item).map(function (_ref) {
150
+ dataItemsPaths = treeUtils.getTopDownAncestors(item);
151
+ return dataItemsPaths.map(function (_ref) {
134
152
  var id = _ref.id;
135
153
  return id;
136
154
  });
@@ -139,9 +157,17 @@ var CheckCascader = /*#__PURE__*/React.forwardRef(function (_a, ref) {
139
157
  var idPaths = _value.find(function (item) {
140
158
  return item[item.length - 1] === lastId;
141
159
  });
142
- return idPaths || [lastId];
160
+ var nextIdPaths = idPaths || [lastId];
161
+ // 对于匹配不到的,将 title 设置为 id 构造一个数据项
162
+ dataItemsPaths = dataItemsPaths.concat(nextIdPaths.map(function (id) {
163
+ return {
164
+ id: id,
165
+ title: id
166
+ };
167
+ }));
168
+ return nextIdPaths;
143
169
  });
144
- tryChangeValue(itemsPaths, item, itemsPaths);
170
+ tryChangeValue(itemsPaths, item, dataItemsPaths);
145
171
  });
146
172
  // ************************** 搜索 ************************* //
147
173
  // 无法做异步搜索,因为下拉菜单不能合并(因为树形数据,不知道是第几级)
@@ -175,6 +201,14 @@ var CheckCascader = /*#__PURE__*/React.forwardRef(function (_a, ref) {
175
201
  }
176
202
  // 本地搜索执行默认高亮规则
177
203
  var highlight = !!searchValue && searchMode === 'upMatch';
204
+ if (highlight && !flattedSearchResult) {
205
+ return /*#__PURE__*/React__default["default"].createElement("span", {
206
+ className: classname.cx("title__text", "title__text--cols")
207
+ }, /*#__PURE__*/React__default["default"].createElement(Highlighter.Highlighter, {
208
+ key: node.id,
209
+ keyword: new RegExp(searchValue, 'ig')
210
+ }, node.title));
211
+ }
178
212
  var found = false;
179
213
  var ret = highlight ? ( /*#__PURE__*/React__default["default"].createElement("span", {
180
214
  className: classname.cx("title__text", "title__text--cols")
@@ -202,7 +236,7 @@ var CheckCascader = /*#__PURE__*/React.forwardRef(function (_a, ref) {
202
236
  }, resultStr), afterStr);
203
237
  }).reverse())) : true;
204
238
  return ret;
205
- }, [titleRender, searchValue, searchMode]);
239
+ }, [titleRender, searchValue, searchMode, flattedSearchResult]);
206
240
  var shouldUseSearch = !!searchValue;
207
241
  var selectProps = {
208
242
  data: filterItems || (shouldUseSearch ? stateInSearch.data : flattedData),
@@ -214,13 +248,46 @@ var CheckCascader = /*#__PURE__*/React.forwardRef(function (_a, ref) {
214
248
  return flattedDataMap.get(selectedId);
215
249
  });
216
250
  }, [flattedDataMap, value]);
217
- React.useEffect(function () {
251
+ var _useMemo2 = React.useMemo(function () {
252
+ if (!showCheckAll) return [];
253
+ var parsedCheckedIds = index$1.parseCheckDataDirty(checkedMode, value, flattedData, index$1.allowCheck);
254
+ return index$1.getAllCheckedStatus(flattedData, parsedCheckedIds);
255
+ }, [showCheckAll, value, flattedData, checkedMode]),
256
+ currentAllChecked = _useMemo2[0],
257
+ hasCheckedAll = _useMemo2[1];
258
+ var toggleCheckAll = React.useCallback(function () {
259
+ var shouldChecked = !currentAllChecked;
260
+ // 全选操作
261
+ if (!currentAllChecked && !hasCheckedAll) {
262
+ var checkedIds = index$1.processCheckedIds(checkedMode, flattedData.filter(function (item) {
263
+ return index$1.allowCheck(item);
264
+ }).map(function (_ref2) {
265
+ var id = _ref2.id;
266
+ return id;
267
+ }), flattedData, index$1.allowCheck);
268
+ proxyOnChange(checkedIds, null, shouldChecked);
269
+ } else {
270
+ proxyOnChange([], null, shouldChecked);
271
+ }
272
+ }, [checkedMode, flattedData, currentAllChecked, hasCheckedAll, proxyOnChange]);
273
+ var renderDefaultFooter = React.useCallback(function () {
274
+ if (!showCheckAll) return null;
275
+ return /*#__PURE__*/React__default["default"].createElement(Checkbox__default["default"], {
276
+ indeterminate: hasCheckedAll,
277
+ checked: currentAllChecked,
278
+ onChange: toggleCheckAll
279
+ }, i18n.get('checkSelect.checkAll'));
280
+ }, [i18n, showCheckAll, currentAllChecked, hasCheckedAll, toggleCheckAll]);
281
+ var customRenderContent = React.useMemo(function () {
282
+ return customRender ? typeof customRender === 'function' ? customRender(selectedItems, value) : customRender : null;
283
+ }, [customRender, selectedItems, value]);
284
+ var handleMenuListChange = React.useCallback(function () {
218
285
  var _a;
219
286
  if (menuVisible) {
220
287
  // 数据改变时更新弹窗显示位置,避免弹窗内容被遮挡
221
288
  (_a = pickerInnerRef.current) === null || _a === void 0 ? void 0 : _a.update();
222
289
  }
223
- }, [menuVisible, selectProps.data]);
290
+ }, [menuVisible]);
224
291
  return /*#__PURE__*/React__default["default"].createElement(picker.Picker, Object.assign({
225
292
  ref: ref,
226
293
  innerRef: pickerInnerRef,
@@ -240,10 +307,12 @@ var CheckCascader = /*#__PURE__*/React.forwardRef(function (_a, ref) {
240
307
  onClose: menuVisibleAction.off,
241
308
  searchable: searchable,
242
309
  scrollable: false,
243
- footer: typeAssertion.isFunction(renderExtraFooter) && renderExtraFooter(),
310
+ footer: typeAssertion.isFunction(renderExtraFooter) ? renderExtraFooter() : renderDefaultFooter(),
244
311
  keyword: keywordProp,
245
312
  onSearch: funcUtils.callAllFuncs(onSearchProp, onSearch),
246
- trigger: customRender ? typeof customRender === 'function' ? customRender(selectedItems) : customRender : ( /*#__PURE__*/React__default["default"].createElement(tagInput.TagInputMock, Object.assign({
313
+ clearSearchOnClosed: clearSearchOnClosed,
314
+ header: renderExtraHeader === null || renderExtraHeader === void 0 ? void 0 : renderExtraHeader(),
315
+ trigger: customRender ? customRenderContent : ( /*#__PURE__*/React__default["default"].createElement(tagInput.TagInputMock, Object.assign({
247
316
  style: {
248
317
  maxWidth: appearance === 'contained' ? '360px' : undefined
249
318
  }
@@ -255,6 +324,7 @@ var CheckCascader = /*#__PURE__*/React.forwardRef(function (_a, ref) {
255
324
  // @ts-ignore
256
325
  displayRender: displayRender,
257
326
  prefix: prefix,
327
+ showIndicator: showIndicator,
258
328
  suffix: [menuVisible ? /*#__PURE__*/React__default["default"].createElement(icons.UpOutlined, null) : /*#__PURE__*/React__default["default"].createElement(icons.DownOutlined, null), suffix],
259
329
  focused: menuVisible,
260
330
  appearance: appearance,
@@ -331,7 +401,7 @@ var CheckCascader = /*#__PURE__*/React.forwardRef(function (_a, ref) {
331
401
  onSelect: onSelect,
332
402
  onLoadChildren: onLoadChildren,
333
403
  titleRender: proxyTitleRender,
334
- flatted: flatted || !!searchValue || activeExpandable,
404
+ flatted: flatted || !!searchValue && flattedSearchResult || activeExpandable,
335
405
  // @ts-ignore
336
406
  flattedData: selectProps.data,
337
407
  originalFlattedData: flattedData,
@@ -339,7 +409,8 @@ var CheckCascader = /*#__PURE__*/React.forwardRef(function (_a, ref) {
339
409
  onChangeData: setCascaderData,
340
410
  checkedMode: checkedMode,
341
411
  dropdownColumnRender: dropdownColumnRender,
342
- virtual: virtual
412
+ virtual: virtual,
413
+ onMenuListChange: handleMenuListChange
343
414
  })) : null);
344
415
  });
345
416
  if (env.__DEV__) {
@@ -20,6 +20,7 @@ var Checkbox = require('@hi-ui/checkbox');
20
20
  var context = require('./context.js');
21
21
  var index = require('./utils/index.js');
22
22
  var treeUtils = require('@hi-ui/tree-utils');
23
+ require('./ui/virtual-list/lib/esm/style/index.scss.js');
23
24
  var List = require('./ui/virtual-list/lib/esm/node_modules/rc-virtual-list/es/List.js');
24
25
  var env = require('@hi-ui/env');
25
26
  function _interopDefaultCompat(e) {
@@ -126,7 +127,8 @@ var MenuItem = /*#__PURE__*/React.forwardRef(function (_ref3, ref) {
126
127
  ref: ref,
127
128
  role: "menu-item",
128
129
  className: prefixCls + "-item",
129
- key: option.id
130
+ key: option.id,
131
+ title: typeof option.title === 'string' ? option.title : undefined
130
132
  }, /*#__PURE__*/React__default["default"].createElement("div", {
131
133
  className: optionCls,
132
134
  onClick: function onClick(evt) {
@@ -145,7 +147,7 @@ var MenuItem = /*#__PURE__*/React.forwardRef(function (_ref3, ref) {
145
147
  className: prefixCls + "-checkbox",
146
148
  indeterminate: semiChecked,
147
149
  checked: checked,
148
- disabled: disabled || option.disabledCheckbox,
150
+ disabled: disabled || option.disabledCheckbox || option.disabledCheckboxCascaded,
149
151
  onClick: function onClick(evt) {
150
152
  return evt.stopPropagation();
151
153
  },
@@ -62,7 +62,8 @@ var CheckCascaderMenuList = /*#__PURE__*/React.forwardRef(function (_a, ref) {
62
62
  _a$checkedMode = _a.checkedMode,
63
63
  checkedMode = _a$checkedMode === void 0 ? 'ALL' : _a$checkedMode,
64
64
  virtual = _a.virtual,
65
- rest = tslib.__rest(_a, ["prefixCls", "role", "className", "children", "data", "flattedData", "originalFlattedData", "onChangeData", "value", "defaultValue", "disabled", "expandTrigger", "changeOnSelect", "checkCascaded", "onLoadChildren", "onChange", "onSelect", "titleRender", "dropdownColumnRender", "flatted", "checkedMode", "virtual"]);
65
+ onMenuListChange = _a.onMenuListChange,
66
+ rest = tslib.__rest(_a, ["prefixCls", "role", "className", "children", "data", "flattedData", "originalFlattedData", "onChangeData", "value", "defaultValue", "disabled", "expandTrigger", "changeOnSelect", "checkCascaded", "onLoadChildren", "onChange", "onSelect", "titleRender", "dropdownColumnRender", "flatted", "checkedMode", "virtual", "onMenuListChange"]);
66
67
  if (checkCascaded === false) {
67
68
  checkedMode = 'SEPARATE';
68
69
  }
@@ -106,7 +107,13 @@ var CheckCascaderMenuList = /*#__PURE__*/React.forwardRef(function (_a, ref) {
106
107
  virtual: virtual
107
108
  };
108
109
  }, [expandTrigger, onOptionCheck, onItemExpand, flatted, changeOnSelect, titleRender, onLoadChildren, disabled, virtual]);
109
- var menus = flatted ? index.getFlattedMenus(flattedData) : index.getActiveMenus(flattedData, selectedId);
110
+ var filteredMenus = React.useMemo(function () {
111
+ var menus = flatted ? index.getFlattedMenus(originalFlattedData) : index.getActiveMenus(originalFlattedData, selectedId);
112
+ return index.getFilteredMenuList(menus, flattedData);
113
+ }, [flatted, flattedData, originalFlattedData, selectedId]);
114
+ React.useEffect(function () {
115
+ onMenuListChange === null || onMenuListChange === void 0 ? void 0 : onMenuListChange(filteredMenus);
116
+ }, [filteredMenus, onMenuListChange]);
110
117
  var cls = classname.cx(prefixCls, className, flatted && prefixCls + "--flatted", changeOnSelect && prefixCls + "--selectchange");
111
118
  return /*#__PURE__*/React__default["default"].createElement(context.CheckCascaderProvider, {
112
119
  value: providedValue
@@ -114,7 +121,7 @@ var CheckCascaderMenuList = /*#__PURE__*/React.forwardRef(function (_a, ref) {
114
121
  ref: ref,
115
122
  role: role,
116
123
  className: cls
117
- }, rest), menus.map(function (menu, menuIndex) {
124
+ }, rest), filteredMenus.map(function (menu, menuIndex) {
118
125
  var menuContent = /*#__PURE__*/React__default["default"].createElement(CheckCascaderMenu.CheckCascaderMenu, {
119
126
  key: menuIndex,
120
127
  data: menu,
@@ -30,7 +30,7 @@ var useCheck = function useCheck(checkedMode, disabled, flattedData, defaultChec
30
30
  checkedIds = _useUncontrolledState[0],
31
31
  trySetCheckedIds = _useUncontrolledState[1];
32
32
  // 入口数据处理
33
- var parsedCheckedIds = index.parseCheckDataDirty(checkedMode, checkedIds, flattedData, allowCheck);
33
+ var parsedCheckedIds = index.parseCheckDataDirty(checkedMode, checkedIds, flattedData, index.allowCheck);
34
34
  // 合并 checkedIds,防止部分模式(PARENT和CHILD)在搜索场景下 id 丢失 (https://github.com/XiaoMi/hiui/issues/2750)
35
35
  var mergedCheckedIds = Array.from(new Set([].concat(parsedCheckedIds, checkedIds)));
36
36
  var cascaded = checkedMode !== 'SEPARATE';
@@ -41,16 +41,10 @@ var useCheck = function useCheck(checkedMode, disabled, flattedData, defaultChec
41
41
  checkedIds: mergedCheckedIds,
42
42
  onCheck: function onCheck(checkedIds, checkedNode, shouldChecked, semiCheckedIds) {
43
43
  // 出口数据处理
44
- var processedIds = index.processCheckedIds(checkedMode, checkedIds, flattedData, allowCheck);
44
+ var processedIds = index.processCheckedIds(checkedMode, checkedIds, flattedData, index.allowCheck);
45
45
  trySetCheckedIds(processedIds, checkedNode, shouldChecked, semiCheckedIds);
46
46
  },
47
- allowCheck: allowCheck
47
+ allowCheck: index.allowCheck
48
48
  });
49
49
  };
50
- var allowCheck = function allowCheck(targetItem) {
51
- if (targetItem.disabled || targetItem.disabledCheckbox || targetItem.checkable === false) {
52
- return false;
53
- }
54
- return true;
55
- };
56
50
  exports.useCheck = useCheck;
@@ -23,13 +23,10 @@ function _interopDefaultCompat(e) {
23
23
  }
24
24
  var React__default = /*#__PURE__*/_interopDefaultCompat(React);
25
25
  var defaultSuffixIcon = /*#__PURE__*/React__default["default"].createElement(icons.DownOutlined, null);
26
- var defaultLeafIcon = /*#__PURE__*/React__default["default"].createElement("span", {
27
- style: {
28
- display: 'inline-block',
29
- width: 16
30
- }
26
+ var defaultLeafIcon = null;
27
+ var defaultLoadingIcon = /*#__PURE__*/React__default["default"].createElement(spinner.Spinner, {
28
+ size: "sm"
31
29
  });
32
- var defaultLoadingIcon = /*#__PURE__*/React__default["default"].createElement(spinner.Spinner, null);
33
30
  exports.defaultLeafIcon = defaultLeafIcon;
34
31
  exports.defaultLoadingIcon = defaultLoadingIcon;
35
32
  exports.defaultSuffixIcon = defaultSuffixIcon;