@capillarytech/blaze-ui 0.1.6-alpha.28 → 0.1.6-alpha.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.
Files changed (158) hide show
  1. package/CapHeading/CapHeading.js +71 -0
  2. package/CapHeading/index.js +1 -0
  3. package/CapHeading/styles.js +125 -0
  4. package/CapInfoNote/CapInfoNote.js +54 -0
  5. package/CapInfoNote/index.js +1 -0
  6. package/CapInfoNote/styles.js +63 -0
  7. package/CapInput/loadable.js +9 -0
  8. package/CapLabel/CapLabel.js +106 -0
  9. package/CapLabel/index.js +1 -0
  10. package/CapLabel/styles.js +221 -0
  11. package/CapRow/CapRow.js +22 -0
  12. package/CapRow/index.js +1 -0
  13. package/CapRow/styles.js +9 -0
  14. package/CapTable/loadable.js +4 -4
  15. package/CapTooltip/CapTooltip.js +36 -0
  16. package/CapTooltip/index.js +1 -0
  17. package/CapTooltip/styles.js +42 -0
  18. package/CapUnifiedSelect/CapUnifiedSelect.js +51 -304
  19. package/CapUnifiedSelect/index.js +4 -1
  20. package/CapUnifiedSelect/loadable.js +3 -0
  21. package/CapUnifiedSelect/styles.js +174 -62
  22. package/dist/235.index.js +2 -0
  23. package/dist/235.index.js.LICENSE.txt +29 -0
  24. package/dist/603.index.js +1 -0
  25. package/dist/CapTable/loadable.js +4 -4
  26. package/dist/esm/CapHeading/CapHeading.js +41 -0
  27. package/dist/esm/CapHeading/index.js +1 -0
  28. package/dist/esm/CapHeading/styles.js +123 -0
  29. package/dist/esm/CapInfoNote/CapInfoNote.js +62 -0
  30. package/dist/esm/CapInfoNote/index.js +1 -0
  31. package/dist/esm/CapInfoNote/styles.js +6 -0
  32. package/dist/esm/CapInput/loadable.js +9 -0
  33. package/dist/esm/CapLabel/CapLabel.js +50 -0
  34. package/dist/esm/CapLabel/index.js +1 -0
  35. package/dist/esm/CapLabel/styles.js +219 -0
  36. package/dist/esm/{CapSkeleton/CapSkeleton.js → CapRow/CapRow.js} +12 -12
  37. package/dist/esm/CapRow/index.js +1 -0
  38. package/dist/esm/CapRow/styles.js +5 -0
  39. package/dist/esm/CapTable/loadable.js +4 -4
  40. package/dist/esm/CapTooltip/CapTooltip.js +34 -0
  41. package/dist/esm/CapTooltip/index.js +1 -0
  42. package/dist/esm/CapTooltip/styles.js +6 -0
  43. package/dist/esm/CapUnifiedSelect/CapUnifiedSelect.js +38 -335
  44. package/dist/esm/CapUnifiedSelect/index.js +3 -1
  45. package/dist/esm/CapUnifiedSelect/loadable.js +4 -0
  46. package/dist/esm/CapUnifiedSelect/styles.js +3 -19
  47. package/dist/esm/index.js +1 -5
  48. package/dist/index.js +0 -27
  49. package/dist/index.js.LICENSE.txt +7 -0
  50. package/index.js +1 -5
  51. package/package.json +10 -8
  52. package/CapSkeleton/CapSkeleton.js +0 -17
  53. package/CapSkeleton/index.js +0 -1
  54. package/CapSpin/CapSpin.js +0 -23
  55. package/CapSpin/index.js +0 -1
  56. package/CapTestSelect/CapTestSelect.js +0 -47
  57. package/CapTestSelect/index.js +0 -1
  58. package/components/CapInput/CapInput.js +0 -67
  59. package/components/CapInput/Number.js +0 -38
  60. package/components/CapInput/Search.js +0 -32
  61. package/components/CapInput/TextArea.js +0 -45
  62. package/components/CapInput/index.js +0 -10
  63. package/components/CapInput/messages.js +0 -27
  64. package/components/CapInput/styles.js +0 -81
  65. package/components/CapSkeleton/CapSkeleton.js +0 -17
  66. package/components/CapSkeleton/index.js +0 -1
  67. package/components/CapSpin/CapSpin.js +0 -23
  68. package/components/CapSpin/index.js +0 -1
  69. package/components/CapTable/CapTable.js +0 -146
  70. package/components/CapTable/index.js +0 -3
  71. package/components/CapTable/loadable.js +0 -13
  72. package/components/CapTable/styles.js +0 -134
  73. package/components/CapTestSelect/CapTestSelect.js +0 -47
  74. package/components/CapTestSelect/index.js +0 -1
  75. package/components/CapUnifiedSelect/CapUnifiedSelect.js +0 -374
  76. package/components/CapUnifiedSelect/index.js +0 -1
  77. package/components/CapUnifiedSelect/messages.js +0 -24
  78. package/components/CapUnifiedSelect/styles.js +0 -111
  79. package/components/LocaleHoc/index.js +0 -38
  80. package/components/index.js +0 -14
  81. package/components/styled/index.js +0 -6
  82. package/components/styled/variables.js +0 -89
  83. package/components/translations/en.js +0 -331
  84. package/dist/CapSkeleton/CapSkeleton.js +0 -29
  85. package/dist/CapSkeleton/index.js +0 -13
  86. package/dist/CapSpin/CapSpin.js +0 -35
  87. package/dist/CapSpin/index.js +0 -13
  88. package/dist/CapTestSelect/CapTestSelect.js +0 -40
  89. package/dist/CapTestSelect/index.js +0 -13
  90. package/dist/CapUnifiedSelect/CapUnifiedSelect.js +0 -405
  91. package/dist/CapUnifiedSelect/index.js +0 -13
  92. package/dist/CapUnifiedSelect/messages.js +0 -29
  93. package/dist/CapUnifiedSelect/styles.js +0 -39
  94. package/dist/components/CapInput/CapInput.js +0 -66
  95. package/dist/components/CapInput/Number.js +0 -42
  96. package/dist/components/CapInput/Search.js +0 -35
  97. package/dist/components/CapInput/TextArea.js +0 -42
  98. package/dist/components/CapInput/index.js +0 -15
  99. package/dist/components/CapInput/messages.js +0 -32
  100. package/dist/components/CapInput/styles.js +0 -11
  101. package/dist/components/CapSkeleton/CapSkeleton.js +0 -29
  102. package/dist/components/CapSkeleton/index.js +0 -13
  103. package/dist/components/CapSpin/CapSpin.js +0 -35
  104. package/dist/components/CapSpin/index.js +0 -13
  105. package/dist/components/CapTable/CapTable.js +0 -148
  106. package/dist/components/CapTable/index.js +0 -9
  107. package/dist/components/CapTable/loadable.js +0 -23
  108. package/dist/components/CapTable/styles.js +0 -26
  109. package/dist/components/CapTestSelect/CapTestSelect.js +0 -40
  110. package/dist/components/CapTestSelect/index.js +0 -13
  111. package/dist/components/CapUnifiedSelect/CapUnifiedSelect.js +0 -406
  112. package/dist/components/CapUnifiedSelect/index.js +0 -13
  113. package/dist/components/CapUnifiedSelect/messages.js +0 -29
  114. package/dist/components/CapUnifiedSelect/styles.js +0 -39
  115. package/dist/components/LocaleHoc/index.js +0 -40
  116. package/dist/components/index.js +0 -66
  117. package/dist/components/styled/index.js +0 -22
  118. package/dist/components/styled/variables.js +0 -94
  119. package/dist/components/translations/en.js +0 -335
  120. package/dist/esm/CapSkeleton/index.js +0 -1
  121. package/dist/esm/CapSpin/CapSpin.js +0 -28
  122. package/dist/esm/CapSpin/index.js +0 -1
  123. package/dist/esm/CapTestSelect/CapTestSelect.js +0 -34
  124. package/dist/esm/CapTestSelect/index.js +0 -1
  125. package/dist/esm/components/CapInput/CapInput.js +0 -57
  126. package/dist/esm/components/CapInput/Number.js +0 -35
  127. package/dist/esm/components/CapInput/Search.js +0 -28
  128. package/dist/esm/components/CapInput/TextArea.js +0 -35
  129. package/dist/esm/components/CapInput/index.js +0 -8
  130. package/dist/esm/components/CapInput/messages.js +0 -25
  131. package/dist/esm/components/CapInput/styles.js +0 -3
  132. package/dist/esm/components/CapSkeleton/CapSkeleton.js +0 -22
  133. package/dist/esm/components/CapSkeleton/index.js +0 -1
  134. package/dist/esm/components/CapSpin/CapSpin.js +0 -28
  135. package/dist/esm/components/CapSpin/index.js +0 -1
  136. package/dist/esm/components/CapTable/CapTable.js +0 -140
  137. package/dist/esm/components/CapTable/index.js +0 -2
  138. package/dist/esm/components/CapTable/loadable.js +0 -12
  139. package/dist/esm/components/CapTable/styles.js +0 -17
  140. package/dist/esm/components/CapTestSelect/CapTestSelect.js +0 -34
  141. package/dist/esm/components/CapTestSelect/index.js +0 -1
  142. package/dist/esm/components/CapUnifiedSelect/CapUnifiedSelect.js +0 -398
  143. package/dist/esm/components/CapUnifiedSelect/index.js +0 -1
  144. package/dist/esm/components/CapUnifiedSelect/messages.js +0 -23
  145. package/dist/esm/components/CapUnifiedSelect/styles.js +0 -31
  146. package/dist/esm/components/LocaleHoc/index.js +0 -31
  147. package/dist/esm/components/index.js +0 -15
  148. package/dist/esm/components/styled/index.js +0 -5
  149. package/dist/esm/components/styled/variables.js +0 -88
  150. package/dist/esm/components/translations/en.js +0 -329
  151. package/dist/esm/utils/index.js +0 -1
  152. package/dist/esm/utils/withStyles.js +0 -23
  153. package/dist/esm/withStyles.js +0 -23
  154. package/dist/utils/index.js +0 -13
  155. package/dist/utils/withStyles.js +0 -29
  156. package/dist/withStyles.js +0 -29
  157. package/utils/index.js +0 -1
  158. package/utils/withStyles.js +0 -24
@@ -1,12 +1,12 @@
1
- import CapSkeleton from '../CapSkeleton';
1
+ import CapSpin from '@capillarytech/cap-ui-library/CapSpin';
2
2
  import { loadable } from '@capillarytech/cap-ui-utils';
3
3
  import React, { Suspense } from 'react';
4
4
 
5
5
  const LoadableComponent = loadable(() => import('./CapTable'));
6
6
 
7
- const CapTableLoadable = (props) => (
8
- <Suspense fallback={<CapSkeleton />}>
9
- <LoadableComponent {...props} />
7
+ const CapTableLoadable = () => (
8
+ <Suspense fallback={<CapSpin />}>
9
+ <LoadableComponent />
10
10
  </Suspense>
11
11
  );
12
12
 
@@ -0,0 +1,36 @@
1
+ import React from 'react';
2
+ import PropTypes from 'prop-types';
3
+ import { Tooltip } from 'antd';
4
+ import classNames from 'classnames';
5
+ import { TooltipWrapper } from './styles';
6
+
7
+ const CapTooltip = ({ overlayClassName, children, ...rest }) => {
8
+ return (
9
+ <TooltipWrapper>
10
+ <Tooltip
11
+ overlayClassName={classNames('cap-tooltip', overlayClassName)}
12
+ {...rest}
13
+ >
14
+ {children}
15
+ </Tooltip>
16
+ </TooltipWrapper>
17
+ );
18
+ };
19
+
20
+ /*
21
+ NOTE:
22
+ While using a disabled button with tooltip, wrap the button with an element with className "button-disabled-tooltip-wrapper".
23
+
24
+ <CapTooltip title="disabled button with tooltip">
25
+ <span className="button-disabled-tooltip-wrapper">
26
+ <CapButton disabled>Button</CapButton>
27
+ </span>
28
+ </CapTooltip>
29
+ */
30
+
31
+ CapTooltip.propTypes = {
32
+ overlayClassName: PropTypes.string,
33
+ children: PropTypes.node,
34
+ };
35
+
36
+ export default CapTooltip;
@@ -0,0 +1 @@
1
+ export { default } from './CapTooltip';
@@ -0,0 +1,42 @@
1
+ import styled from 'styled-components';
2
+ import * as styledVars from '../styled/variables';
3
+
4
+ export const TooltipWrapper = styled.span`
5
+ .cap-tooltip {
6
+ max-width: 324px;
7
+
8
+ .ant-tooltip-inner {
9
+ background-color: ${styledVars.FONT_COLOR_01};
10
+ font-size: ${styledVars.FONT_SIZE_M};
11
+ font-weight: ${styledVars.FONT_WEIGHT_MEDIUM};
12
+ padding: 6px 8px;
13
+ min-height: 32px;
14
+ border-radius: ${styledVars.RADIUS_04};
15
+ }
16
+
17
+ &.cap-bgcolor-tooltip {
18
+ .ant-tooltip-inner {
19
+ background-color: ${styledVars.FONT_COLOR_05};
20
+ }
21
+ }
22
+
23
+ &.hide-tooltip-pointer {
24
+ .ant-tooltip-arrow {
25
+ display: none;
26
+ }
27
+ }
28
+ }
29
+
30
+ .button-disabled-tooltip-wrapper {
31
+ display: inline-flex;
32
+ cursor: not-allowed;
33
+
34
+ .cap-button.ant-btn[disabled] {
35
+ pointer-events: none;
36
+ & > * {
37
+ pointer-events: auto;
38
+ cursor: not-allowed;
39
+ }
40
+ }
41
+ }
42
+ `;
@@ -1,14 +1,12 @@
1
- // Enhanced CapUnifiedSelect supporting 4 scenarios with advanced features
2
- import React, { useState, useEffect } from 'react';
1
+ // CapUnifiedSelect component using Ant Design v5 Select and TreeSelect directly
2
+ import React from 'react';
3
3
  import PropTypes from 'prop-types';
4
- import classnames from 'classnames';
5
- import { Select, TreeSelect, Tooltip, Input, Button } from 'antd';
6
- import { InfoCircleOutlined, SearchOutlined, WarningFilled, DownOutlined } from '@ant-design/icons';
7
- import { SelectWrapper, HeaderWrapper, selectStyles } from './styles';
8
- import withStyles from '../../utils/withStyles';
9
- import styled from 'styled-components';
4
+ import { Select, TreeSelect } from 'antd';
5
+ import { SelectWrapper, HeaderWrapper, StyledInfoIcon } from './styles';
6
+ import CapLabel from '../CapLabel';
7
+ import CapTooltip from '../CapTooltip';
10
8
 
11
- const CapUnifiedSelect = ({
9
+ function CapUnifiedSelect({
12
10
  type,
13
11
  options = [],
14
12
  treeData,
@@ -17,33 +15,12 @@ const CapUnifiedSelect = ({
17
15
  placeholder = 'Select an option',
18
16
  className,
19
17
  style,
20
- status,
21
- statusMessage,
22
18
  allowClear = false,
19
+ showSearch = false,
23
20
  label,
24
21
  tooltip,
25
22
  disabled = false,
26
- treeCheckable = false,
27
- customPopupRender = false,
28
- onConfirm,
29
- onCancel
30
- }) => {
31
- const StyledSelect = styled(Select)`
32
- ${selectStyles}
33
- `;
34
- const StyledTreeSelect = styled(TreeSelect)`
35
- ${selectStyles}
36
- `;
37
-
38
- const [searchText, setSearchText] = useState('');
39
- const [tempValue, setTempValue] = useState(value);
40
- const [allSelected, setAllSelected] = useState(false);
41
-
42
- // Update tempValue when value changes
43
- useEffect(() => {
44
- setTempValue(value);
45
- }, [value]);
46
-
23
+ }) {
47
24
  const selectVirtualizationProps = {
48
25
  listHeight: 256,
49
26
  };
@@ -53,296 +30,71 @@ const CapUnifiedSelect = ({
53
30
  listItemHeight: 32,
54
31
  };
55
32
 
56
- // No results component
57
- const NoResult = () => (
58
- <div style={{
59
- display: 'flex',
60
- flexDirection: 'column',
61
- alignItems: 'center',
62
- justifyContent: 'center',
63
- height: 200,
64
- color: '#8c8c8c',
65
- fontSize: 14
66
- }}>
67
- <WarningFilled style={{ fontSize: 36, marginBottom: 8, color: '#bfbfbf' }} />
68
- <div style={{ fontWeight: 500 }}>No results found</div>
69
- </div>
70
- );
71
-
72
- // Filter tree data based on search text
73
- const getFilteredTreeData = (data, search) => {
74
- if (!search) return data;
75
-
76
- const filterNode = node => {
77
- const titleText = node.title?.toLowerCase() || '';
78
- const labelText = node.label?.toLowerCase() || '';
79
- return titleText.includes(search.toLowerCase()) || labelText.includes(search.toLowerCase());
80
- };
81
-
82
- const loop = data =>
83
- data.map(item => {
84
- const children = item.children ? loop(item.children) : [];
85
- if (filterNode(item) || children.length) {
86
- return { ...item, children };
87
- }
88
- return null;
89
- }).filter(Boolean);
90
-
91
- return loop(data);
92
- };
93
-
94
- // Get all leaf node values from tree data
95
- const flattenedLeafValues = (nodes) =>
96
- nodes?.flatMap((node) =>
97
- node.children ? flattenedLeafValues(node.children) : [node.value]
98
- ) || [];
99
-
100
- const filteredTree = getFilteredTreeData(treeData || options, searchText);
101
- const filteredOptions = !searchText ? options : options.filter(opt =>
102
- opt.label?.toLowerCase().includes(searchText.toLowerCase())
103
- );
104
-
105
- // All available leaf values for the current filtered tree data
106
- const leafValues = flattenedLeafValues(filteredTree);
107
-
108
- // Handles select all checkbox click
109
- const handleSelectAll = (isTree = false) => {
110
- const availableValues = isTree ? leafValues : filteredOptions.map(opt => opt.value);
111
-
112
- if (allSelected) {
113
- setTempValue([]);
114
- } else {
115
- setTempValue(availableValues);
116
- }
117
-
118
- setAllSelected(!allSelected);
119
- };
120
-
121
- // Update allSelected state when value changes
122
- useEffect(() => {
123
- const isMultipleMode = type === 'multiSelect' || type === 'multiTreeSelect';
124
- if (isMultipleMode && Array.isArray(tempValue)) {
125
- const availableValues = type.includes('tree') ? leafValues : filteredOptions.map(opt => opt.value);
126
- setAllSelected(tempValue.length > 0 && tempValue.length === availableValues.length);
127
- }
128
- }, [tempValue, filteredOptions, leafValues, type]);
129
-
130
- // Handle confirmation
131
- const handleConfirm = () => {
132
- if (onConfirm) {
133
- onConfirm(tempValue);
134
- } else {
135
- onChange(tempValue);
136
- }
137
- setSearchText('');
138
- };
139
-
140
- // Handle cancellation
141
- const handleCancel = () => {
142
- if (onCancel) {
143
- onCancel();
144
- }
145
- setTempValue(value);
146
- setSearchText('');
147
- };
148
-
149
- // Handle temporary value change
150
- const handleTempChange = (newValue) => {
151
- setTempValue(newValue);
152
- };
153
-
154
- const suffix =
155
- (type === "multiTreeSelect" || type === "multiSelect") && Array.isArray(value) && value.length > 1 ? (
156
- <>
157
- <span>
158
- +{value.length - 1} more
159
- <DownOutlined />
160
- </span>
161
- </>
162
- ) : (
163
- <DownOutlined />
164
- );
165
-
166
- const prefix = () => {
167
- if((type === "multiTreeSelect" || type === "multiSelect") && Array.isArray(value) && value.length > 0) {
168
- const selectedLabels = options
169
- .filter((opt) => value.includes(opt.value))
170
- .map((opt) => opt.label);
171
-
172
- return selectedLabels[0];
173
- } else {
174
- return null;
175
- }
176
- }
177
-
178
33
  const renderHeader = () => {
179
34
  if (!label && !tooltip) return null;
35
+
180
36
  return (
181
37
  <HeaderWrapper className={disabled ? 'disabled' : ''}>
182
- {label && <label type="label16" className={disabled ? 'disabled' : ''}>{label}</label>}
38
+ {label && (
39
+ <CapLabel type="label16" className={disabled ? 'disabled' : ''}>
40
+ {label}
41
+ </CapLabel>
42
+ )}
183
43
  {tooltip && (
184
- <Tooltip title={tooltip}>
185
- <InfoCircleOutlined className={disabled ? 'disabled' : ''} style={{ color: '#B3BAC5' }}/>
186
- </Tooltip>
44
+ <CapTooltip title={tooltip}>
45
+ <StyledInfoIcon className={disabled ? 'disabled' : ''} />
46
+ </CapTooltip>
187
47
  )}
188
48
  </HeaderWrapper>
189
49
  );
190
50
  };
191
51
 
192
52
  const renderDropdown = () => {
193
- const isMultipleSelect = type === 'multiSelect' || type === 'multiTreeSelect';
194
- const isTreeMode = type === 'treeSelect' || type === 'multiTreeSelect';
195
- const currentItems = isTreeMode ? filteredTree : filteredOptions;
196
- const selectedCount = Array.isArray(tempValue) ? tempValue.length : (tempValue ? 1 : 0);
197
-
198
- // Custom dropdown render for both Select and TreeSelect
199
- const renderCustomDropdown = (menu) => {
200
- if (!customPopupRender) return menu;
201
-
202
- return (
203
- <>
204
- <div style={{ borderBottom: '1px solid #f0f0f0'}}>
205
- <Input
206
- prefix={<SearchOutlined style={{ color: "#B3BAC5" }} />}
207
- placeholder="Search"
208
- variant="borderless"
209
- value={searchText}
210
- onChange={(e) => setSearchText(e.target.value)}
211
- onKeyDown={(e) => e.stopPropagation()}
212
- />
213
- </div>
214
-
215
- {isMultipleSelect && currentItems.length > 0 && (
216
- <div style={{
217
- padding: '8px 12px',
218
- cursor: 'pointer',
219
- display: 'flex',
220
- alignItems: 'center',
221
- borderBottom: '1px solid #f0f0f0'
222
- }}
223
- onClick={(e) => {
224
- // Prevent event propagation to keep dropdown open
225
- e.stopPropagation();
226
- handleSelectAll(isTreeMode);
227
- }}>
228
- <input
229
- type="checkbox"
230
- checked={allSelected}
231
- readOnly
232
- style={{ cursor: 'pointer' }}
233
- onClick={(e) => e.stopPropagation()}
234
- />
235
- <label style={{ marginLeft: 8, cursor: 'pointer' }}>Select all</label>
236
- </div>
237
- )}
238
-
239
- {currentItems.length === 0 ? <NoResult /> : menu}
240
-
241
- {currentItems.length > 0 && isMultipleSelect && (
242
- <div style={{
243
- display: 'flex',
244
- justifyContent: 'space-between',
245
- alignItems: 'center',
246
- padding: '8px 12px',
247
- borderTop: '1px solid #f0f0f0'
248
- }}>
249
- <div>
250
- <Button
251
- type="primary"
252
- size="small"
253
- style={{ marginRight: 8 }}
254
- onClick={(e) => {
255
- e.stopPropagation();
256
- handleConfirm();
257
- }}>
258
- Confirm
259
- </Button>
260
- <Button
261
- type="text"
262
- size="small"
263
- onClick={(e) => {
264
- e.stopPropagation();
265
- handleCancel();
266
- }}>
267
- Cancel
268
- </Button>
269
- </div>
270
- {selectedCount > 0 && (
271
- <span style={{ color: '#8c8c8c', fontSize: '14px' }}>
272
- {selectedCount} selected
273
- </span>
274
- )}
275
- </div>
276
- )}
277
- </>
278
- );
279
- };
280
-
281
53
  if (type === 'treeSelect' || type === 'multiTreeSelect') {
282
54
  return (
283
- <>
284
- <StyledTreeSelect
285
- treeData={filteredTree}
286
- value={customPopupRender ? tempValue : value}
287
- onChange={customPopupRender ? handleTempChange : onChange}
288
- placeholder={placeholder}
289
- maxTagCount={0}
290
- maxTagPlaceholder={() => null}
291
- prefix={type === "multiTreeSelect" && value.length > 0 && prefix()}
292
- suffixIcon={suffix}
293
- className={classnames(`cap-unified-tree-select ${className || ''}`)}
294
- style={style}
295
- status={status}
296
- allowClear={allowClear}
297
- showSearch={false}
298
- multiple={type === 'multiTreeSelect'}
299
- treeCheckable={treeCheckable}
300
- showCheckedStrategy={TreeSelect.SHOW_PARENT}
301
- virtual
302
- disabled={disabled}
303
- filterTreeNode={false}
304
- {...treeSelectVirtualizationProps}
305
- popupRender={renderCustomDropdown}
306
- />
307
- {status === 'error' && <div style={{ color: '#E83135' }} className="cap-unified-select-status">{statusMessage}</div>}
308
- </>
309
- );
310
- }
311
-
312
- return (
313
- <>
314
- <StyledSelect
315
- options={filteredOptions}
316
- value={customPopupRender ? tempValue : value}
317
- onChange={customPopupRender ? handleTempChange : onChange}
55
+ <TreeSelect
56
+ treeData={treeData || options}
57
+ value={value}
58
+ onChange={onChange}
318
59
  placeholder={placeholder}
319
- maxTagCount={0}
320
- maxTagPlaceholder={() => null}
321
- prefix={type === "multiSelect" && value.length > 0 && prefix()}
322
- suffixIcon={suffix}
323
- className={classnames('cap-unified-select', className)}
60
+ className={className}
324
61
  style={style}
325
62
  allowClear={allowClear}
326
- showSearch={false}
327
- mode={type === 'multiSelect' ? 'multiple' : undefined}
63
+ showSearch={showSearch}
64
+ multiple={type === 'multiTreeSelect' ? true : false}
328
65
  virtual
66
+ treeDefaultExpandAll
329
67
  disabled={disabled}
330
- status={status}
331
- {...selectVirtualizationProps}
332
- popupRender={renderCustomDropdown}
68
+ {...treeSelectVirtualizationProps}
333
69
  />
334
- {status === 'error' && <div style={{ color: '#E83135' }} className="cap-unified-select-status">{statusMessage}</div>}
335
- </>
70
+ );
71
+ }
72
+
73
+ return (
74
+ <Select
75
+ value={value}
76
+ onChange={onChange}
77
+ placeholder={placeholder}
78
+ className={className}
79
+ style={style}
80
+ allowClear={allowClear}
81
+ showSearch={showSearch}
82
+ options={options}
83
+ mode={type === 'multiSelect' ? 'multiple' : undefined}
84
+ virtual
85
+ disabled={disabled}
86
+ {...selectVirtualizationProps}
87
+ />
336
88
  );
337
- };
89
+ };
338
90
 
339
91
  return (
340
- <SelectWrapper className={classnames(`cap-unified-select-container ${className || ''}`)}>
92
+ <SelectWrapper>
341
93
  {renderHeader()}
342
94
  {renderDropdown()}
343
95
  </SelectWrapper>
344
96
  );
345
- };
97
+ }
346
98
 
347
99
  CapUnifiedSelect.propTypes = {
348
100
  type: PropTypes.oneOf(['select', 'multiSelect', 'treeSelect', 'multiTreeSelect']),
@@ -354,21 +106,16 @@ CapUnifiedSelect.propTypes = {
354
106
  className: PropTypes.string,
355
107
  style: PropTypes.object,
356
108
  allowClear: PropTypes.bool,
109
+ showSearch: PropTypes.bool,
357
110
  label: PropTypes.string,
358
111
  tooltip: PropTypes.oneOfType([PropTypes.string, PropTypes.node]),
359
112
  disabled: PropTypes.bool,
360
- treeCheckable: PropTypes.bool,
361
- customPopupRender: PropTypes.bool,
362
- onConfirm: PropTypes.func,
363
- onCancel: PropTypes.func,
364
113
  };
365
114
 
366
115
  CapUnifiedSelect.defaultProps = {
367
116
  type: 'select',
368
117
  allowClear: false,
369
- customPopupRender: false,
370
- treeCheckable: false,
371
- className: '',
118
+ showSearch: false,
372
119
  };
373
120
 
374
- export default withStyles(CapUnifiedSelect, selectStyles);
121
+ export default CapUnifiedSelect;
@@ -1 +1,4 @@
1
- export { default } from './CapUnifiedSelect';
1
+ import CapUnifiedSelect from './CapUnifiedSelect';
2
+ import CapUnifiedSelectLoadable from './loadable';
3
+
4
+ export default CapUnifiedSelectLoadable;
@@ -0,0 +1,3 @@
1
+ import loadable from '@loadable/component';
2
+
3
+ export default loadable(() => import('./CapUnifiedSelect'));