one-design-next 0.0.55 → 0.0.57

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 (116) hide show
  1. package/dist/_util/date.js +1 -6
  2. package/dist/_util/focusManager.js +3 -7
  3. package/dist/_util/time.js +1 -6
  4. package/dist/_util/useControlledState.js +1 -6
  5. package/dist/action-bar/index.js +3 -10
  6. package/dist/agent-step/index.js +2 -7
  7. package/dist/agent-think/CircleIcon.js +2 -3
  8. package/dist/agent-think/ThinkingDoneIcon.js +2 -3
  9. package/dist/agent-think/ThinkingIcon.js +2 -3
  10. package/dist/agent-think/index.js +2 -7
  11. package/dist/alert/index.js +4 -13
  12. package/dist/approval/index.js +1 -6
  13. package/dist/artifact/index.js +2 -12
  14. package/dist/attachments/index.js +1 -1
  15. package/dist/auto-complete/index.js +5 -15
  16. package/dist/avatar/index.js +4 -15
  17. package/dist/avatar/primitive.js +1 -1
  18. package/dist/button/index.js +2 -3
  19. package/dist/calendar/index.js +4 -15
  20. package/dist/card/header.js +2 -3
  21. package/dist/card/index.js +2 -3
  22. package/dist/cascader/CascaderOptionContent.js +2 -7
  23. package/dist/cascader/Panel.d.ts +3 -1
  24. package/dist/cascader/Panel.js +15 -16
  25. package/dist/cascader/SelectedSummary.d.ts +12 -0
  26. package/dist/cascader/SelectedSummary.js +34 -0
  27. package/dist/cascader/fork/Cascader.js +273 -0
  28. package/dist/cascader/fork/OptionList/Checkbox.d.ts +14 -0
  29. package/dist/cascader/fork/OptionList/Checkbox.js +24 -0
  30. package/dist/cascader/fork/OptionList/Column.d.ts +20 -0
  31. package/dist/cascader/fork/OptionList/Column.js +175 -0
  32. package/dist/cascader/fork/OptionList/List.js +317 -0
  33. package/dist/cascader/fork/OptionList/index.js +13 -0
  34. package/dist/cascader/fork/OptionList/useActive.js +47 -0
  35. package/dist/cascader/fork/Panel.js +140 -0
  36. package/dist/cascader/fork/hooks/useSelect.js +63 -0
  37. package/dist/cascader/fork/hooks/useValues.js +35 -0
  38. package/dist/cascader/fork/index.d.ts +44 -0
  39. package/dist/cascader/fork/index.js +8 -0
  40. package/dist/cascader/index.d.ts +14 -0
  41. package/dist/cascader/index.js +191 -52
  42. package/dist/cascader/style/index.css +109 -0
  43. package/dist/cascader/utils.d.ts +48 -0
  44. package/dist/cascader/utils.js +74 -13
  45. package/dist/chart/index.js +1 -1
  46. package/dist/chat-item/index.js +2 -10
  47. package/dist/checkbox/Checkbox.js +3 -7
  48. package/dist/checkbox/Group.js +6 -19
  49. package/dist/clarify-dock/auto-height.js +5 -15
  50. package/dist/clarify-dock/index.js +4 -16
  51. package/dist/code-block/index.js +3 -10
  52. package/dist/collapse/index.js +2 -10
  53. package/dist/collapse/primitive.js +4 -15
  54. package/dist/color-picker/index.js +1 -6
  55. package/dist/composer/clipboard.js +3 -13
  56. package/dist/composer/editor.js +3 -13
  57. package/dist/composer/hooks/useChipManager.js +3 -16
  58. package/dist/composer/hooks/useChipSelectionMarker.js +1 -3
  59. package/dist/composer/index.js +34 -34
  60. package/dist/composer/utils.js +1 -3
  61. package/dist/config-provider/index.js +2 -3
  62. package/dist/date-picker/index.js +6 -20
  63. package/dist/date-range-picker/index.js +6 -20
  64. package/dist/dialog/index.js +2 -3
  65. package/dist/drawer/index.js +1 -6
  66. package/dist/dropdown/index.js +6 -20
  67. package/dist/ellipsis-text/index.js +4 -15
  68. package/dist/empty/index.js +2 -3
  69. package/dist/fab/index.js +1 -6
  70. package/dist/form/index.js +7 -20
  71. package/dist/hover-fill/index.js +4 -9
  72. package/dist/icon/index.js +3 -9
  73. package/dist/image/index.js +1 -6
  74. package/dist/input/index.js +5 -15
  75. package/dist/input-number/index.js +4 -15
  76. package/dist/input-otp/index.js +3 -4
  77. package/dist/invocation/index.js +1 -6
  78. package/dist/invocation/param-popover.js +1 -6
  79. package/dist/layout/layout.js +3 -12
  80. package/dist/link/index.js +2 -3
  81. package/dist/loading/index.js +2 -3
  82. package/dist/mention/index.js +1 -6
  83. package/dist/message/MessageBase.js +4 -15
  84. package/dist/message/MessageReact16.js +2 -4
  85. package/dist/message/MessageReact18.js +2 -4
  86. package/dist/message-image/image-viewer.js +1 -6
  87. package/dist/message-image/index.js +1 -6
  88. package/dist/modal-base/index.js +2 -3
  89. package/dist/number-flow/index.js +1 -1
  90. package/dist/overlay-vertical-scrollbar/index.js +1 -6
  91. package/dist/pagination/index.js +4 -13
  92. package/dist/pop-base/index.js +4 -15
  93. package/dist/pop-base/mergeProps.js +3 -12
  94. package/dist/popover/index.js +1 -1
  95. package/dist/radio/index.js +3 -9
  96. package/dist/radio/primitive.js +2 -3
  97. package/dist/scroll-area/index.js +3 -9
  98. package/dist/select/index.js +4 -15
  99. package/dist/select/style/index.css +5 -2
  100. package/dist/select/utils.js +1 -6
  101. package/dist/skill-slot/index.js +3 -13
  102. package/dist/slider/index.js +5 -15
  103. package/dist/sources/index.js +1 -6
  104. package/dist/stream-pulse/index.js +2 -3
  105. package/dist/stream-text/index.js +3 -8
  106. package/dist/switch/index.js +2 -3
  107. package/dist/table/TableCellContent.js +3 -13
  108. package/dist/table/index.js +4 -15
  109. package/dist/table/useSelection.js +4 -15
  110. package/dist/tabs/index.js +3 -9
  111. package/dist/text-swap/index.js +6 -19
  112. package/dist/time-picker/index.js +3 -9
  113. package/dist/tooltip/index.js +4 -15
  114. package/dist/tree-select/index.js +5 -15
  115. package/dist/virtual-list/index.js +3 -9
  116. package/package.json +5 -1
@@ -0,0 +1,273 @@
1
+ import _extends from "@babel/runtime/helpers/esm/extends";
2
+ import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
3
+ import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
4
+ import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
5
+ import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
6
+ var _excluded = ["id", "prefixCls", "fieldNames", "defaultValue", "value", "changeOnSelect", "onChange", "displayRender", "checkable", "autoClearSearchValue", "searchValue", "onSearch", "showSearch", "expandTrigger", "options", "dropdownPrefixCls", "loadData", "popupVisible", "open", "popupClassName", "dropdownClassName", "dropdownMenuColumnStyle", "dropdownStyle", "popupPlacement", "placement", "onDropdownVisibleChange", "onPopupVisibleChange", "onOpenChange", "expandIcon", "loadingIcon", "children", "dropdownMatchSelectWidth", "showCheckedStrategy", "optionRender", "checkStrictly"];
7
+ import { BaseSelect } from 'rc-select';
8
+ import useId from "rc-select/es/hooks/useId";
9
+ import useEvent from "rc-util/es/hooks/useEvent";
10
+ import useMergedState from "rc-util/es/hooks/useMergedState";
11
+ import * as React from 'react';
12
+ import CascaderContext from 'rc-cascader/es/context';
13
+ import useDisplayValues from 'rc-cascader/es/hooks/useDisplayValues';
14
+ import useMissingValues from 'rc-cascader/es/hooks/useMissingValues';
15
+ import useOptions from 'rc-cascader/es/hooks/useOptions';
16
+ import useSearchConfig from 'rc-cascader/es/hooks/useSearchConfig';
17
+ import useSearchOptions from 'rc-cascader/es/hooks/useSearchOptions';
18
+ import useSelect from "./hooks/useSelect";
19
+ import useValues from "./hooks/useValues";
20
+ import OptionList from "./OptionList";
21
+ import Panel from "./Panel";
22
+ import { fillFieldNames, SHOW_CHILD, SHOW_PARENT, toPathKeys, toRawValues } from 'rc-cascader/es/utils/commonUtil';
23
+ import { formatStrategyValues, toPathOptions } from 'rc-cascader/es/utils/treeUtil';
24
+ import warningProps, { warningNullOptions } from 'rc-cascader/es/utils/warningPropsUtil';
25
+ var Cascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
26
+ var id = props.id,
27
+ _props$prefixCls = props.prefixCls,
28
+ prefixCls = _props$prefixCls === void 0 ? 'rc-cascader' : _props$prefixCls,
29
+ fieldNames = props.fieldNames,
30
+ defaultValue = props.defaultValue,
31
+ value = props.value,
32
+ changeOnSelect = props.changeOnSelect,
33
+ onChange = props.onChange,
34
+ displayRender = props.displayRender,
35
+ checkable = props.checkable,
36
+ _props$autoClearSearc = props.autoClearSearchValue,
37
+ autoClearSearchValue = _props$autoClearSearc === void 0 ? true : _props$autoClearSearc,
38
+ searchValue = props.searchValue,
39
+ onSearch = props.onSearch,
40
+ showSearch = props.showSearch,
41
+ expandTrigger = props.expandTrigger,
42
+ options = props.options,
43
+ dropdownPrefixCls = props.dropdownPrefixCls,
44
+ loadData = props.loadData,
45
+ popupVisible = props.popupVisible,
46
+ open = props.open,
47
+ popupClassName = props.popupClassName,
48
+ dropdownClassName = props.dropdownClassName,
49
+ dropdownMenuColumnStyle = props.dropdownMenuColumnStyle,
50
+ customDropdownStyle = props.dropdownStyle,
51
+ popupPlacement = props.popupPlacement,
52
+ placement = props.placement,
53
+ onDropdownVisibleChange = props.onDropdownVisibleChange,
54
+ onPopupVisibleChange = props.onPopupVisibleChange,
55
+ onOpenChange = props.onOpenChange,
56
+ _props$expandIcon = props.expandIcon,
57
+ expandIcon = _props$expandIcon === void 0 ? '>' : _props$expandIcon,
58
+ loadingIcon = props.loadingIcon,
59
+ children = props.children,
60
+ _props$dropdownMatchS = props.dropdownMatchSelectWidth,
61
+ dropdownMatchSelectWidth = _props$dropdownMatchS === void 0 ? false : _props$dropdownMatchS,
62
+ _props$showCheckedStr = props.showCheckedStrategy,
63
+ showCheckedStrategy = _props$showCheckedStr === void 0 ? SHOW_PARENT : _props$showCheckedStr,
64
+ optionRender = props.optionRender,
65
+ checkStrictly = props.checkStrictly,
66
+ restProps = _objectWithoutProperties(props, _excluded);
67
+ var mergedId = useId(id);
68
+ var multiple = !!checkable;
69
+ // 跨层级选择时强制允许选中非叶子,并在单选时也展示勾选控件
70
+ var mergedChangeOnSelect = changeOnSelect || !!checkStrictly;
71
+
72
+ // =========================== Values ===========================
73
+ var _useMergedState = useMergedState(defaultValue, {
74
+ value: value,
75
+ postState: toRawValues
76
+ }),
77
+ _useMergedState2 = _slicedToArray(_useMergedState, 2),
78
+ rawValues = _useMergedState2[0],
79
+ setRawValues = _useMergedState2[1];
80
+
81
+ // ========================= FieldNames =========================
82
+ var mergedFieldNames = React.useMemo(function () {
83
+ return fillFieldNames(fieldNames);
84
+ }, /* eslint-disable react-hooks/exhaustive-deps */
85
+ [JSON.stringify(fieldNames)]
86
+ /* eslint-enable react-hooks/exhaustive-deps */);
87
+
88
+ // =========================== Option ===========================
89
+ var _useOptions = useOptions(mergedFieldNames, options),
90
+ _useOptions2 = _slicedToArray(_useOptions, 3),
91
+ mergedOptions = _useOptions2[0],
92
+ getPathKeyEntities = _useOptions2[1],
93
+ getValueByKeyPath = _useOptions2[2];
94
+
95
+ // =========================== Search ===========================
96
+ var _useMergedState3 = useMergedState('', {
97
+ value: searchValue,
98
+ postState: function postState(search) {
99
+ return search || '';
100
+ }
101
+ }),
102
+ _useMergedState4 = _slicedToArray(_useMergedState3, 2),
103
+ mergedSearchValue = _useMergedState4[0],
104
+ setSearchValue = _useMergedState4[1];
105
+ var onInternalSearch = function onInternalSearch(searchText, info) {
106
+ setSearchValue(searchText);
107
+ if (info.source !== 'blur' && onSearch) {
108
+ onSearch(searchText);
109
+ }
110
+ };
111
+ var _useSearchConfig = useSearchConfig(showSearch),
112
+ _useSearchConfig2 = _slicedToArray(_useSearchConfig, 2),
113
+ mergedShowSearch = _useSearchConfig2[0],
114
+ searchConfig = _useSearchConfig2[1];
115
+ var searchOptions = useSearchOptions(mergedSearchValue, mergedOptions, mergedFieldNames, dropdownPrefixCls || prefixCls, searchConfig, mergedChangeOnSelect || multiple);
116
+
117
+ // =========================== Values ===========================
118
+ var getMissingValues = useMissingValues(mergedOptions, mergedFieldNames);
119
+
120
+ // Fill `rawValues` with checked conduction values
121
+ var _useValues = useValues(multiple, rawValues, getPathKeyEntities, getValueByKeyPath, getMissingValues, checkStrictly),
122
+ _useValues2 = _slicedToArray(_useValues, 3),
123
+ checkedValues = _useValues2[0],
124
+ halfCheckedValues = _useValues2[1],
125
+ missingCheckedValues = _useValues2[2];
126
+ var deDuplicatedValues = React.useMemo(function () {
127
+ if (checkStrictly) {
128
+ return [].concat(_toConsumableArray(missingCheckedValues), _toConsumableArray(checkedValues));
129
+ }
130
+ var checkedKeys = toPathKeys(checkedValues);
131
+ var deduplicateKeys = formatStrategyValues(checkedKeys, getPathKeyEntities, showCheckedStrategy);
132
+ return [].concat(_toConsumableArray(missingCheckedValues), _toConsumableArray(getValueByKeyPath(deduplicateKeys)));
133
+ }, [checkedValues, getPathKeyEntities, getValueByKeyPath, missingCheckedValues, showCheckedStrategy, checkStrictly]);
134
+ var displayValues = useDisplayValues(deDuplicatedValues, mergedOptions, mergedFieldNames, multiple, displayRender);
135
+
136
+ // =========================== Change ===========================
137
+ var triggerChange = useEvent(function (nextValues) {
138
+ setRawValues(nextValues);
139
+
140
+ // Save perf if no need trigger event
141
+ if (onChange) {
142
+ var nextRawValues = toRawValues(nextValues);
143
+ var valueOptions = nextRawValues.map(function (valueCells) {
144
+ return toPathOptions(valueCells, mergedOptions, mergedFieldNames).map(function (valueOpt) {
145
+ return valueOpt.option;
146
+ });
147
+ });
148
+ var triggerValues = multiple ? nextRawValues : nextRawValues[0];
149
+ var triggerOptions = multiple ? valueOptions : valueOptions[0];
150
+ onChange(triggerValues, triggerOptions);
151
+ }
152
+ });
153
+
154
+ // =========================== Select ===========================
155
+ var handleSelection = useSelect(multiple, triggerChange, checkedValues, halfCheckedValues, missingCheckedValues, getPathKeyEntities, getValueByKeyPath, showCheckedStrategy, checkStrictly);
156
+ var onInternalSelect = useEvent(function (valuePath) {
157
+ if (!multiple || autoClearSearchValue) {
158
+ setSearchValue('');
159
+ }
160
+ handleSelection(valuePath);
161
+ });
162
+
163
+ // Display Value change logic
164
+ var onDisplayValuesChange = function onDisplayValuesChange(_, info) {
165
+ if (info.type === 'clear') {
166
+ triggerChange([]);
167
+ return;
168
+ }
169
+
170
+ // Cascader do not support `add` type. Only support `remove`
171
+ var _ref = info.values[0],
172
+ valueCells = _ref.valueCells;
173
+ onInternalSelect(valueCells);
174
+ };
175
+
176
+ // ============================ Open ============================
177
+ var mergedOpen = open !== undefined ? open : popupVisible;
178
+ var mergedDropdownClassName = dropdownClassName || popupClassName;
179
+ var mergedPlacement = placement || popupPlacement;
180
+ var onInternalDropdownVisibleChange = function onInternalDropdownVisibleChange(nextVisible) {
181
+ onOpenChange === null || onOpenChange === void 0 || onOpenChange(nextVisible);
182
+ onDropdownVisibleChange === null || onDropdownVisibleChange === void 0 || onDropdownVisibleChange(nextVisible);
183
+ onPopupVisibleChange === null || onPopupVisibleChange === void 0 || onPopupVisibleChange(nextVisible);
184
+ };
185
+
186
+ // ========================== Warning ===========================
187
+ if (process.env.NODE_ENV !== 'production') {
188
+ warningProps(props);
189
+ warningNullOptions(mergedOptions, mergedFieldNames);
190
+ }
191
+
192
+ // ========================== Context ===========================
193
+ var cascaderContext = React.useMemo(function () {
194
+ return {
195
+ options: mergedOptions,
196
+ fieldNames: mergedFieldNames,
197
+ values: checkedValues,
198
+ halfValues: halfCheckedValues,
199
+ changeOnSelect: mergedChangeOnSelect,
200
+ onSelect: onInternalSelect,
201
+ checkable: checkable,
202
+ checkStrictly: checkStrictly,
203
+ searchOptions: searchOptions,
204
+ dropdownPrefixCls: dropdownPrefixCls,
205
+ loadData: loadData,
206
+ expandTrigger: expandTrigger,
207
+ expandIcon: expandIcon,
208
+ loadingIcon: loadingIcon,
209
+ dropdownMenuColumnStyle: dropdownMenuColumnStyle,
210
+ optionRender: optionRender
211
+ };
212
+ }, [mergedOptions, mergedFieldNames, checkedValues, halfCheckedValues, mergedChangeOnSelect, onInternalSelect, checkable, checkStrictly, searchOptions, dropdownPrefixCls, loadData, expandTrigger, expandIcon, loadingIcon, dropdownMenuColumnStyle, optionRender]);
213
+
214
+ // ==============================================================
215
+ // == Render ==
216
+ // ==============================================================
217
+ var emptyOptions = !(mergedSearchValue ? searchOptions : mergedOptions).length;
218
+ var dropdownStyle =
219
+ // Search to match width
220
+ mergedSearchValue && searchConfig.matchInputWidth ||
221
+ // Empty keep the width
222
+ emptyOptions ? {} : {
223
+ minWidth: 'auto'
224
+ };
225
+ return /*#__PURE__*/React.createElement(CascaderContext.Provider, {
226
+ value: cascaderContext
227
+ }, /*#__PURE__*/React.createElement(BaseSelect, _extends({}, restProps, {
228
+ // MISC
229
+ ref: ref,
230
+ id: mergedId,
231
+ prefixCls: prefixCls,
232
+ autoClearSearchValue: autoClearSearchValue,
233
+ dropdownMatchSelectWidth: dropdownMatchSelectWidth,
234
+ dropdownStyle: _objectSpread(_objectSpread({}, dropdownStyle), customDropdownStyle)
235
+ // Value
236
+ ,
237
+
238
+ displayValues: displayValues,
239
+ onDisplayValuesChange: onDisplayValuesChange,
240
+ mode: multiple ? 'multiple' : undefined
241
+ // Search
242
+ ,
243
+
244
+ searchValue: mergedSearchValue,
245
+ onSearch: onInternalSearch,
246
+ showSearch: mergedShowSearch
247
+ // Options
248
+ ,
249
+
250
+ OptionList: OptionList,
251
+ emptyOptions: emptyOptions
252
+ // Open
253
+ ,
254
+
255
+ open: mergedOpen,
256
+ dropdownClassName: mergedDropdownClassName,
257
+ placement: mergedPlacement,
258
+ onDropdownVisibleChange: onInternalDropdownVisibleChange
259
+ // Children
260
+ ,
261
+
262
+ getRawInputElement: function getRawInputElement() {
263
+ return children;
264
+ }
265
+ })));
266
+ });
267
+ if (process.env.NODE_ENV !== 'production') {
268
+ Cascader.displayName = 'Cascader';
269
+ }
270
+ Cascader.SHOW_PARENT = SHOW_PARENT;
271
+ Cascader.SHOW_CHILD = SHOW_CHILD;
272
+ Cascader.Panel = Panel;
273
+ export default Cascader;
@@ -0,0 +1,14 @@
1
+ import type { DefaultOptionType } from 'rc-cascader';
2
+ import * as React from 'react';
3
+ export interface CascaderCheckboxProps {
4
+ prefixCls: string;
5
+ checked?: boolean;
6
+ halfChecked?: boolean;
7
+ disabled?: boolean;
8
+ onClick?: React.MouseEventHandler<HTMLSpanElement>;
9
+ disableCheckbox?: boolean;
10
+ type?: 'checkbox' | 'radio';
11
+ /** 保留与 rc-cascader Checkbox 一致的签名占位,当前未使用 */
12
+ option?: DefaultOptionType;
13
+ }
14
+ export default function Checkbox({ prefixCls, checked, halfChecked, disabled, onClick, disableCheckbox, type, }: CascaderCheckboxProps): React.JSX.Element;
@@ -0,0 +1,24 @@
1
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
+ import clsx from 'clsx';
3
+ import CascaderContext from 'rc-cascader/es/context';
4
+ import * as React from 'react';
5
+ export default function Checkbox(_ref) {
6
+ var prefixCls = _ref.prefixCls,
7
+ checked = _ref.checked,
8
+ halfChecked = _ref.halfChecked,
9
+ disabled = _ref.disabled,
10
+ onClick = _ref.onClick,
11
+ disableCheckbox = _ref.disableCheckbox,
12
+ _ref$type = _ref.type,
13
+ type = _ref$type === void 0 ? 'checkbox' : _ref$type;
14
+ var _React$useContext = React.useContext(CascaderContext),
15
+ checkable = _React$useContext.checkable;
16
+ var customCheckbox = typeof checkable !== 'boolean' ? checkable : null;
17
+ var isRadio = type === 'radio';
18
+ return /*#__PURE__*/React.createElement("span", {
19
+ className: clsx(prefixCls, _defineProperty(_defineProperty(_defineProperty(_defineProperty({}, "".concat(prefixCls, "-checked"), checked), "".concat(prefixCls, "-indeterminate"), !checked && halfChecked && !isRadio), "".concat(prefixCls, "-disabled"), disabled || disableCheckbox), "".concat(prefixCls, "-radio"), isRadio)),
20
+ onClick: onClick
21
+ }, customCheckbox || (isRadio ? /*#__PURE__*/React.createElement("span", {
22
+ className: "".concat(prefixCls, "-inner")
23
+ }) : null));
24
+ }
@@ -0,0 +1,20 @@
1
+ import type { DefaultOptionType } from 'rc-cascader';
2
+ import * as React from 'react';
3
+ export declare const FIX_LABEL = "__cascader_fix_label__";
4
+ export interface ColumnProps {
5
+ prefixCls: string;
6
+ multiple?: boolean;
7
+ options: DefaultOptionType[];
8
+ activeValue?: string | number | null;
9
+ prevValuePath: (string | number)[];
10
+ onToggleOpen: (open: boolean) => void;
11
+ onSelect: (valuePath: (string | number)[], leaf: boolean) => void;
12
+ onActive: (valuePath: (string | number)[]) => void;
13
+ checkedSet: Set<string>;
14
+ halfCheckedSet: Set<string>;
15
+ loadingKeys: string[];
16
+ isSelectable: (option: DefaultOptionType) => boolean;
17
+ disabled?: boolean;
18
+ motionEnter?: boolean;
19
+ }
20
+ export default function Column({ prefixCls, multiple, options, activeValue, prevValuePath, onToggleOpen, onSelect, onActive, checkedSet, halfCheckedSet, loadingKeys, isSelectable, disabled: propsDisabled, motionEnter, }: ColumnProps): React.JSX.Element;
@@ -0,0 +1,175 @@
1
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
+ import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
3
+ import clsx from 'clsx';
4
+ import CascaderContext from 'rc-cascader/es/context';
5
+ import { SEARCH_MARK } from 'rc-cascader/es/hooks/useSearchOptions';
6
+ import { isLeaf, toPathKey } from 'rc-cascader/es/utils/commonUtil';
7
+ import * as React from 'react';
8
+ import Checkbox from "./Checkbox";
9
+ export var FIX_LABEL = '__cascader_fix_label__';
10
+ export default function Column(_ref) {
11
+ var prefixCls = _ref.prefixCls,
12
+ multiple = _ref.multiple,
13
+ options = _ref.options,
14
+ activeValue = _ref.activeValue,
15
+ prevValuePath = _ref.prevValuePath,
16
+ onToggleOpen = _ref.onToggleOpen,
17
+ onSelect = _ref.onSelect,
18
+ onActive = _ref.onActive,
19
+ checkedSet = _ref.checkedSet,
20
+ halfCheckedSet = _ref.halfCheckedSet,
21
+ loadingKeys = _ref.loadingKeys,
22
+ isSelectable = _ref.isSelectable,
23
+ propsDisabled = _ref.disabled,
24
+ motionEnter = _ref.motionEnter;
25
+ var menuPrefixCls = "".concat(prefixCls, "-menu");
26
+ var menuItemPrefixCls = "".concat(prefixCls, "-menu-item");
27
+ var _ref2 = React.useContext(CascaderContext),
28
+ fieldNames = _ref2.fieldNames,
29
+ changeOnSelect = _ref2.changeOnSelect,
30
+ expandTrigger = _ref2.expandTrigger,
31
+ expandIcon = _ref2.expandIcon,
32
+ loadingIcon = _ref2.loadingIcon,
33
+ dropdownMenuColumnStyle = _ref2.dropdownMenuColumnStyle,
34
+ optionRender = _ref2.optionRender,
35
+ checkStrictly = _ref2.checkStrictly;
36
+ var hoverOpen = expandTrigger === 'hover';
37
+ // 跨层级选择:单选也展示 radio,多选展示 checkbox;点击项选中,仅展开图标展开
38
+ var showCheckedIcon = multiple || !!checkStrictly;
39
+ var expandIconOnly = !!checkStrictly;
40
+ var isOptionDisabled = function isOptionDisabled(disabled) {
41
+ return propsDisabled || disabled;
42
+ };
43
+ var optionInfoList = React.useMemo(function () {
44
+ return options.map(function (option) {
45
+ var _FIX_LABEL;
46
+ var disabled = option.disabled,
47
+ disableCheckbox = option.disableCheckbox;
48
+ var searchOptions = option[SEARCH_MARK];
49
+ var label = (_FIX_LABEL = option[FIX_LABEL]) !== null && _FIX_LABEL !== void 0 ? _FIX_LABEL : option[fieldNames.label];
50
+ var value = option[fieldNames.value];
51
+ var isMergedLeaf = isLeaf(option, fieldNames);
52
+ var fullPath = searchOptions ? searchOptions.map(function (opt) {
53
+ return opt[fieldNames.value];
54
+ }) : [].concat(_toConsumableArray(prevValuePath), [value]);
55
+ var fullPathKey = toPathKey(fullPath);
56
+ var isLoading = loadingKeys.includes(fullPathKey);
57
+ var checked = checkedSet.has(fullPathKey);
58
+ var halfChecked = halfCheckedSet.has(fullPathKey);
59
+ return {
60
+ disabled: disabled,
61
+ label: label,
62
+ value: value,
63
+ isLeaf: isMergedLeaf,
64
+ isLoading: isLoading,
65
+ checked: checked,
66
+ halfChecked: halfChecked,
67
+ option: option,
68
+ disableCheckbox: disableCheckbox,
69
+ fullPath: fullPath,
70
+ fullPathKey: fullPathKey
71
+ };
72
+ });
73
+ }, [options, checkedSet, fieldNames, halfCheckedSet, loadingKeys, prevValuePath]);
74
+ return /*#__PURE__*/React.createElement("ul", {
75
+ className: clsx(menuPrefixCls, _defineProperty({}, "".concat(menuPrefixCls, "-enter"), motionEnter)),
76
+ role: "menu"
77
+ }, optionInfoList.map(function (_ref3) {
78
+ var disabled = _ref3.disabled,
79
+ label = _ref3.label,
80
+ value = _ref3.value,
81
+ isMergedLeaf = _ref3.isLeaf,
82
+ isLoading = _ref3.isLoading,
83
+ checked = _ref3.checked,
84
+ halfChecked = _ref3.halfChecked,
85
+ option = _ref3.option,
86
+ fullPath = _ref3.fullPath,
87
+ fullPathKey = _ref3.fullPathKey,
88
+ disableCheckbox = _ref3.disableCheckbox;
89
+ var triggerOpenPath = function triggerOpenPath() {
90
+ if (isOptionDisabled(disabled)) {
91
+ return;
92
+ }
93
+ var nextValueCells = _toConsumableArray(fullPath);
94
+ if (hoverOpen && isMergedLeaf) {
95
+ nextValueCells.pop();
96
+ }
97
+ onActive(nextValueCells);
98
+ };
99
+ var triggerSelect = function triggerSelect() {
100
+ if (isSelectable(option) && !isOptionDisabled(disabled)) {
101
+ onSelect(fullPath, isMergedLeaf);
102
+ }
103
+ };
104
+ var title;
105
+ if (typeof option.title === 'string') {
106
+ title = option.title;
107
+ } else if (typeof label === 'string') {
108
+ title = label;
109
+ }
110
+ return /*#__PURE__*/React.createElement("li", {
111
+ key: fullPathKey,
112
+ className: clsx(menuItemPrefixCls, _defineProperty(_defineProperty(_defineProperty(_defineProperty({}, "".concat(menuItemPrefixCls, "-expand"), !isMergedLeaf), "".concat(menuItemPrefixCls, "-active"), activeValue === value || activeValue === fullPathKey), "".concat(menuItemPrefixCls, "-disabled"), isOptionDisabled(disabled)), "".concat(menuItemPrefixCls, "-loading"), isLoading)),
113
+ style: dropdownMenuColumnStyle,
114
+ role: "menuitemcheckbox",
115
+ title: title,
116
+ "aria-checked": checked,
117
+ "data-path-key": fullPathKey,
118
+ onClick: function onClick() {
119
+ if (expandIconOnly) {
120
+ // 跨层级:点击选项/radio/checkbox 只选中,不展开
121
+ if (disableCheckbox) {
122
+ return;
123
+ }
124
+ triggerSelect();
125
+ return;
126
+ }
127
+ triggerOpenPath();
128
+ if (disableCheckbox) {
129
+ return;
130
+ }
131
+ if (!multiple || isMergedLeaf) {
132
+ triggerSelect();
133
+ }
134
+ },
135
+ onDoubleClick: function onDoubleClick() {
136
+ // 跨层级多选:勾选/双击都不应收起面板
137
+ if (changeOnSelect && !expandIconOnly) {
138
+ onToggleOpen(false);
139
+ }
140
+ },
141
+ onMouseEnter: function onMouseEnter() {
142
+ if (hoverOpen && !expandIconOnly) {
143
+ triggerOpenPath();
144
+ }
145
+ },
146
+ onMouseDown: function onMouseDown(e) {
147
+ e.preventDefault();
148
+ }
149
+ }, showCheckedIcon && /*#__PURE__*/React.createElement(Checkbox, {
150
+ prefixCls: "".concat(prefixCls, "-checkbox"),
151
+ type: multiple ? 'checkbox' : 'radio',
152
+ checked: checked,
153
+ halfChecked: halfChecked,
154
+ disabled: isOptionDisabled(disabled) || disableCheckbox,
155
+ disableCheckbox: disableCheckbox,
156
+ onClick: function onClick(e) {
157
+ if (disableCheckbox) {
158
+ return;
159
+ }
160
+ e.stopPropagation();
161
+ triggerSelect();
162
+ }
163
+ }), /*#__PURE__*/React.createElement("div", {
164
+ className: "".concat(menuItemPrefixCls, "-content")
165
+ }, optionRender ? optionRender(option) : label), !isLoading && expandIcon && !isMergedLeaf && /*#__PURE__*/React.createElement("div", {
166
+ className: "".concat(menuItemPrefixCls, "-expand-icon"),
167
+ onClick: expandIconOnly ? function (e) {
168
+ e.stopPropagation();
169
+ triggerOpenPath();
170
+ } : undefined
171
+ }, expandIcon), isLoading && loadingIcon && /*#__PURE__*/React.createElement("div", {
172
+ className: "".concat(menuItemPrefixCls, "-loading-icon")
173
+ }, loadingIcon));
174
+ }));
175
+ }