@rc-component/cascader 1.1.1 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/es/Cascader.d.ts +8 -0
- package/es/Cascader.js +14 -0
- package/es/OptionList/Column.js +21 -8
- package/es/context.d.ts +2 -0
- package/lib/Cascader.d.ts +8 -0
- package/lib/Cascader.js +14 -0
- package/lib/OptionList/Column.js +20 -7
- package/lib/context.d.ts +2 -0
- package/package.json +2 -2
package/es/Cascader.d.ts
CHANGED
|
@@ -55,7 +55,15 @@ export interface FieldNames<OptionType extends DefaultOptionType = DefaultOption
|
|
|
55
55
|
export type ValueType<OptionType extends DefaultOptionType = DefaultOptionType, ValueField extends keyof OptionType = keyof OptionType> = keyof OptionType extends ValueField ? unknown extends OptionType['value'] ? OptionType[ValueField] : OptionType['value'] : OptionType[ValueField];
|
|
56
56
|
export type GetValueType<OptionType extends DefaultOptionType = DefaultOptionType, ValueField extends keyof OptionType = keyof OptionType, Multiple extends boolean | React.ReactNode = false> = false extends Multiple ? ValueType<Required<OptionType>, ValueField>[] : ValueType<Required<OptionType>, ValueField>[][];
|
|
57
57
|
export type GetOptionType<OptionType extends DefaultOptionType = DefaultOptionType, Multiple extends boolean | React.ReactNode = false> = false extends Multiple ? OptionType[] : OptionType[][];
|
|
58
|
+
type SemanticName = 'input' | 'prefix' | 'suffix';
|
|
59
|
+
type PopupSemantic = 'list' | 'listItem';
|
|
58
60
|
export interface CascaderProps<OptionType extends DefaultOptionType = DefaultOptionType, ValueField extends keyof OptionType = keyof OptionType, Multiple extends boolean | React.ReactNode = false> extends BaseCascaderProps<OptionType, ValueField> {
|
|
61
|
+
styles?: Partial<Record<SemanticName, React.CSSProperties>> & {
|
|
62
|
+
popup?: Partial<Record<PopupSemantic, React.CSSProperties>>;
|
|
63
|
+
};
|
|
64
|
+
classNames?: Partial<Record<SemanticName, string>> & {
|
|
65
|
+
popup?: Partial<Record<PopupSemantic, string>>;
|
|
66
|
+
};
|
|
59
67
|
checkable?: Multiple;
|
|
60
68
|
value?: GetValueType<OptionType, ValueField, Multiple>;
|
|
61
69
|
defaultValue?: GetValueType<OptionType, ValueField, Multiple>;
|
package/es/Cascader.js
CHANGED
|
@@ -45,6 +45,8 @@ const Cascader = /*#__PURE__*/React.forwardRef((props, ref) => {
|
|
|
45
45
|
popupClassName,
|
|
46
46
|
popupMenuColumnStyle,
|
|
47
47
|
popupStyle: customPopupStyle,
|
|
48
|
+
classNames,
|
|
49
|
+
styles,
|
|
48
50
|
placement,
|
|
49
51
|
onPopupVisibleChange,
|
|
50
52
|
// Icon
|
|
@@ -147,6 +149,8 @@ const Cascader = /*#__PURE__*/React.forwardRef((props, ref) => {
|
|
|
147
149
|
|
|
148
150
|
// ========================== Context ===========================
|
|
149
151
|
const cascaderContext = React.useMemo(() => ({
|
|
152
|
+
classNames,
|
|
153
|
+
styles,
|
|
150
154
|
options: mergedOptions,
|
|
151
155
|
fieldNames: mergedFieldNames,
|
|
152
156
|
values: checkedValues,
|
|
@@ -184,6 +188,16 @@ const Cascader = /*#__PURE__*/React.forwardRef((props, ref) => {
|
|
|
184
188
|
prefixCls: prefixCls,
|
|
185
189
|
autoClearSearchValue: autoClearSearchValue,
|
|
186
190
|
popupMatchSelectWidth: popupMatchSelectWidth,
|
|
191
|
+
classNames: {
|
|
192
|
+
prefix: classNames?.prefix,
|
|
193
|
+
suffix: classNames?.suffix,
|
|
194
|
+
input: classNames?.input
|
|
195
|
+
},
|
|
196
|
+
styles: {
|
|
197
|
+
prefix: styles?.prefix,
|
|
198
|
+
suffix: styles?.suffix,
|
|
199
|
+
input: styles?.input
|
|
200
|
+
},
|
|
187
201
|
popupStyle: {
|
|
188
202
|
...popupStyle,
|
|
189
203
|
...customPopupStyle
|
package/es/OptionList/Column.js
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
|
|
1
|
+
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
2
|
+
import cls from 'classnames';
|
|
2
3
|
import * as React from 'react';
|
|
4
|
+
import pickAttrs from "rc-util/es/pickAttrs";
|
|
3
5
|
import CascaderContext from "../context";
|
|
4
6
|
import { SEARCH_MARK } from "../hooks/useSearchOptions";
|
|
5
7
|
import { isLeaf, toPathKey } from "../utils/commonUtil";
|
|
@@ -30,7 +32,9 @@ export default function Column({
|
|
|
30
32
|
expandIcon,
|
|
31
33
|
loadingIcon,
|
|
32
34
|
popupMenuColumnStyle,
|
|
33
|
-
optionRender
|
|
35
|
+
optionRender,
|
|
36
|
+
classNames,
|
|
37
|
+
styles
|
|
34
38
|
} = React.useContext(CascaderContext);
|
|
35
39
|
const hoverOpen = expandTrigger === 'hover';
|
|
36
40
|
const isOptionDisabled = disabled => propsDisabled || disabled;
|
|
@@ -85,7 +89,8 @@ export default function Column({
|
|
|
85
89
|
|
|
86
90
|
// ============================ Render ============================
|
|
87
91
|
return /*#__PURE__*/React.createElement("ul", {
|
|
88
|
-
className: menuPrefixCls,
|
|
92
|
+
className: cls(menuPrefixCls, classNames?.popup?.list),
|
|
93
|
+
style: styles?.popup?.list,
|
|
89
94
|
ref: menuRef,
|
|
90
95
|
role: "menu"
|
|
91
96
|
}, optionInfoList.map(({
|
|
@@ -101,6 +106,10 @@ export default function Column({
|
|
|
101
106
|
fullPathKey,
|
|
102
107
|
disableCheckbox
|
|
103
108
|
}) => {
|
|
109
|
+
const ariaProps = pickAttrs(option, {
|
|
110
|
+
aria: true,
|
|
111
|
+
data: true
|
|
112
|
+
});
|
|
104
113
|
// >>>>> Open
|
|
105
114
|
const triggerOpenPath = () => {
|
|
106
115
|
if (isOptionDisabled(disabled)) {
|
|
@@ -129,15 +138,19 @@ export default function Column({
|
|
|
129
138
|
}
|
|
130
139
|
|
|
131
140
|
// >>>>> Render
|
|
132
|
-
return /*#__PURE__*/React.createElement("li", {
|
|
133
|
-
key: fullPathKey
|
|
134
|
-
|
|
141
|
+
return /*#__PURE__*/React.createElement("li", _extends({
|
|
142
|
+
key: fullPathKey
|
|
143
|
+
}, ariaProps, {
|
|
144
|
+
className: cls(menuItemPrefixCls, classNames?.popup?.listItem, {
|
|
135
145
|
[`${menuItemPrefixCls}-expand`]: !isMergedLeaf,
|
|
136
146
|
[`${menuItemPrefixCls}-active`]: activeValue === value || activeValue === fullPathKey,
|
|
137
147
|
[`${menuItemPrefixCls}-disabled`]: isOptionDisabled(disabled),
|
|
138
148
|
[`${menuItemPrefixCls}-loading`]: isLoading
|
|
139
149
|
}),
|
|
140
|
-
style:
|
|
150
|
+
style: {
|
|
151
|
+
...popupMenuColumnStyle,
|
|
152
|
+
...styles?.popup?.listItem
|
|
153
|
+
},
|
|
141
154
|
role: "menuitemcheckbox",
|
|
142
155
|
title: title,
|
|
143
156
|
"aria-checked": checked,
|
|
@@ -165,7 +178,7 @@ export default function Column({
|
|
|
165
178
|
// Prevent selector from blurring
|
|
166
179
|
e.preventDefault();
|
|
167
180
|
}
|
|
168
|
-
}, multiple && /*#__PURE__*/React.createElement(Checkbox, {
|
|
181
|
+
}), multiple && /*#__PURE__*/React.createElement(Checkbox, {
|
|
169
182
|
prefixCls: `${prefixCls}-checkbox`,
|
|
170
183
|
checked: checked,
|
|
171
184
|
halfChecked: halfChecked,
|
package/es/context.d.ts
CHANGED
|
@@ -16,6 +16,8 @@ export interface CascaderContextProps {
|
|
|
16
16
|
loadingIcon?: React.ReactNode;
|
|
17
17
|
popupMenuColumnStyle?: React.CSSProperties;
|
|
18
18
|
optionRender?: CascaderProps['optionRender'];
|
|
19
|
+
classNames?: CascaderProps['classNames'];
|
|
20
|
+
styles?: CascaderProps['styles'];
|
|
19
21
|
}
|
|
20
22
|
declare const CascaderContext: React.Context<CascaderContextProps>;
|
|
21
23
|
export default CascaderContext;
|
package/lib/Cascader.d.ts
CHANGED
|
@@ -55,7 +55,15 @@ export interface FieldNames<OptionType extends DefaultOptionType = DefaultOption
|
|
|
55
55
|
export type ValueType<OptionType extends DefaultOptionType = DefaultOptionType, ValueField extends keyof OptionType = keyof OptionType> = keyof OptionType extends ValueField ? unknown extends OptionType['value'] ? OptionType[ValueField] : OptionType['value'] : OptionType[ValueField];
|
|
56
56
|
export type GetValueType<OptionType extends DefaultOptionType = DefaultOptionType, ValueField extends keyof OptionType = keyof OptionType, Multiple extends boolean | React.ReactNode = false> = false extends Multiple ? ValueType<Required<OptionType>, ValueField>[] : ValueType<Required<OptionType>, ValueField>[][];
|
|
57
57
|
export type GetOptionType<OptionType extends DefaultOptionType = DefaultOptionType, Multiple extends boolean | React.ReactNode = false> = false extends Multiple ? OptionType[] : OptionType[][];
|
|
58
|
+
type SemanticName = 'input' | 'prefix' | 'suffix';
|
|
59
|
+
type PopupSemantic = 'list' | 'listItem';
|
|
58
60
|
export interface CascaderProps<OptionType extends DefaultOptionType = DefaultOptionType, ValueField extends keyof OptionType = keyof OptionType, Multiple extends boolean | React.ReactNode = false> extends BaseCascaderProps<OptionType, ValueField> {
|
|
61
|
+
styles?: Partial<Record<SemanticName, React.CSSProperties>> & {
|
|
62
|
+
popup?: Partial<Record<PopupSemantic, React.CSSProperties>>;
|
|
63
|
+
};
|
|
64
|
+
classNames?: Partial<Record<SemanticName, string>> & {
|
|
65
|
+
popup?: Partial<Record<PopupSemantic, string>>;
|
|
66
|
+
};
|
|
59
67
|
checkable?: Multiple;
|
|
60
68
|
value?: GetValueType<OptionType, ValueField, Multiple>;
|
|
61
69
|
defaultValue?: GetValueType<OptionType, ValueField, Multiple>;
|
package/lib/Cascader.js
CHANGED
|
@@ -54,6 +54,8 @@ const Cascader = /*#__PURE__*/React.forwardRef((props, ref) => {
|
|
|
54
54
|
popupClassName,
|
|
55
55
|
popupMenuColumnStyle,
|
|
56
56
|
popupStyle: customPopupStyle,
|
|
57
|
+
classNames,
|
|
58
|
+
styles,
|
|
57
59
|
placement,
|
|
58
60
|
onPopupVisibleChange,
|
|
59
61
|
// Icon
|
|
@@ -156,6 +158,8 @@ const Cascader = /*#__PURE__*/React.forwardRef((props, ref) => {
|
|
|
156
158
|
|
|
157
159
|
// ========================== Context ===========================
|
|
158
160
|
const cascaderContext = React.useMemo(() => ({
|
|
161
|
+
classNames,
|
|
162
|
+
styles,
|
|
159
163
|
options: mergedOptions,
|
|
160
164
|
fieldNames: mergedFieldNames,
|
|
161
165
|
values: checkedValues,
|
|
@@ -193,6 +197,16 @@ const Cascader = /*#__PURE__*/React.forwardRef((props, ref) => {
|
|
|
193
197
|
prefixCls: prefixCls,
|
|
194
198
|
autoClearSearchValue: autoClearSearchValue,
|
|
195
199
|
popupMatchSelectWidth: popupMatchSelectWidth,
|
|
200
|
+
classNames: {
|
|
201
|
+
prefix: classNames?.prefix,
|
|
202
|
+
suffix: classNames?.suffix,
|
|
203
|
+
input: classNames?.input
|
|
204
|
+
},
|
|
205
|
+
styles: {
|
|
206
|
+
prefix: styles?.prefix,
|
|
207
|
+
suffix: styles?.suffix,
|
|
208
|
+
input: styles?.input
|
|
209
|
+
},
|
|
196
210
|
popupStyle: {
|
|
197
211
|
...popupStyle,
|
|
198
212
|
...customPopupStyle
|
package/lib/OptionList/Column.js
CHANGED
|
@@ -7,6 +7,7 @@ exports.FIX_LABEL = void 0;
|
|
|
7
7
|
exports.default = Column;
|
|
8
8
|
var _classnames = _interopRequireDefault(require("classnames"));
|
|
9
9
|
var React = _interopRequireWildcard(require("react"));
|
|
10
|
+
var _pickAttrs = _interopRequireDefault(require("rc-util/lib/pickAttrs"));
|
|
10
11
|
var _context = _interopRequireDefault(require("../context"));
|
|
11
12
|
var _useSearchOptions = require("../hooks/useSearchOptions");
|
|
12
13
|
var _commonUtil = require("../utils/commonUtil");
|
|
@@ -14,6 +15,7 @@ var _Checkbox = _interopRequireDefault(require("./Checkbox"));
|
|
|
14
15
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
15
16
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
16
17
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
18
|
+
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
17
19
|
const FIX_LABEL = exports.FIX_LABEL = '__cascader_fix_label__';
|
|
18
20
|
function Column({
|
|
19
21
|
prefixCls,
|
|
@@ -40,7 +42,9 @@ function Column({
|
|
|
40
42
|
expandIcon,
|
|
41
43
|
loadingIcon,
|
|
42
44
|
popupMenuColumnStyle,
|
|
43
|
-
optionRender
|
|
45
|
+
optionRender,
|
|
46
|
+
classNames,
|
|
47
|
+
styles
|
|
44
48
|
} = React.useContext(_context.default);
|
|
45
49
|
const hoverOpen = expandTrigger === 'hover';
|
|
46
50
|
const isOptionDisabled = disabled => propsDisabled || disabled;
|
|
@@ -95,7 +99,8 @@ function Column({
|
|
|
95
99
|
|
|
96
100
|
// ============================ Render ============================
|
|
97
101
|
return /*#__PURE__*/React.createElement("ul", {
|
|
98
|
-
className: menuPrefixCls,
|
|
102
|
+
className: (0, _classnames.default)(menuPrefixCls, classNames?.popup?.list),
|
|
103
|
+
style: styles?.popup?.list,
|
|
99
104
|
ref: menuRef,
|
|
100
105
|
role: "menu"
|
|
101
106
|
}, optionInfoList.map(({
|
|
@@ -111,6 +116,10 @@ function Column({
|
|
|
111
116
|
fullPathKey,
|
|
112
117
|
disableCheckbox
|
|
113
118
|
}) => {
|
|
119
|
+
const ariaProps = (0, _pickAttrs.default)(option, {
|
|
120
|
+
aria: true,
|
|
121
|
+
data: true
|
|
122
|
+
});
|
|
114
123
|
// >>>>> Open
|
|
115
124
|
const triggerOpenPath = () => {
|
|
116
125
|
if (isOptionDisabled(disabled)) {
|
|
@@ -139,15 +148,19 @@ function Column({
|
|
|
139
148
|
}
|
|
140
149
|
|
|
141
150
|
// >>>>> Render
|
|
142
|
-
return /*#__PURE__*/React.createElement("li", {
|
|
143
|
-
key: fullPathKey
|
|
144
|
-
|
|
151
|
+
return /*#__PURE__*/React.createElement("li", _extends({
|
|
152
|
+
key: fullPathKey
|
|
153
|
+
}, ariaProps, {
|
|
154
|
+
className: (0, _classnames.default)(menuItemPrefixCls, classNames?.popup?.listItem, {
|
|
145
155
|
[`${menuItemPrefixCls}-expand`]: !isMergedLeaf,
|
|
146
156
|
[`${menuItemPrefixCls}-active`]: activeValue === value || activeValue === fullPathKey,
|
|
147
157
|
[`${menuItemPrefixCls}-disabled`]: isOptionDisabled(disabled),
|
|
148
158
|
[`${menuItemPrefixCls}-loading`]: isLoading
|
|
149
159
|
}),
|
|
150
|
-
style:
|
|
160
|
+
style: {
|
|
161
|
+
...popupMenuColumnStyle,
|
|
162
|
+
...styles?.popup?.listItem
|
|
163
|
+
},
|
|
151
164
|
role: "menuitemcheckbox",
|
|
152
165
|
title: title,
|
|
153
166
|
"aria-checked": checked,
|
|
@@ -175,7 +188,7 @@ function Column({
|
|
|
175
188
|
// Prevent selector from blurring
|
|
176
189
|
e.preventDefault();
|
|
177
190
|
}
|
|
178
|
-
}, multiple && /*#__PURE__*/React.createElement(_Checkbox.default, {
|
|
191
|
+
}), multiple && /*#__PURE__*/React.createElement(_Checkbox.default, {
|
|
179
192
|
prefixCls: `${prefixCls}-checkbox`,
|
|
180
193
|
checked: checked,
|
|
181
194
|
halfChecked: halfChecked,
|
package/lib/context.d.ts
CHANGED
|
@@ -16,6 +16,8 @@ export interface CascaderContextProps {
|
|
|
16
16
|
loadingIcon?: React.ReactNode;
|
|
17
17
|
popupMenuColumnStyle?: React.CSSProperties;
|
|
18
18
|
optionRender?: CascaderProps['optionRender'];
|
|
19
|
+
classNames?: CascaderProps['classNames'];
|
|
20
|
+
styles?: CascaderProps['styles'];
|
|
19
21
|
}
|
|
20
22
|
declare const CascaderContext: React.Context<CascaderContextProps>;
|
|
21
23
|
export default CascaderContext;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rc-component/cascader",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.3.0",
|
|
4
4
|
"description": "cascade select ui component for react",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"react",
|
|
@@ -70,7 +70,7 @@
|
|
|
70
70
|
"enzyme-to-json": "^3.2.1",
|
|
71
71
|
"eslint": "^8.54.0",
|
|
72
72
|
"eslint-plugin-jest": "^28.8.3",
|
|
73
|
-
"eslint-plugin-unicorn": "^
|
|
73
|
+
"eslint-plugin-unicorn": "^56.0.1",
|
|
74
74
|
"father": "^4.0.0",
|
|
75
75
|
"gh-pages": "^6.1.1",
|
|
76
76
|
"glob": "^7.1.6",
|