@rc-component/select 1.0.0 → 1.0.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.
- package/es/BaseSelect/index.d.ts +3 -0
- package/es/BaseSelect/index.js +7 -2
- package/es/OptionList.js +11 -4
- package/es/Select.d.ts +4 -1
- package/es/Select.js +6 -2
- package/es/SelectContext.d.ts +3 -1
- package/es/Selector/Input.js +8 -2
- package/es/Selector/index.d.ts +2 -0
- package/es/Selector/index.js +5 -1
- package/es/TransBtn.d.ts +1 -0
- package/es/TransBtn.js +3 -1
- package/lib/BaseSelect/index.d.ts +3 -0
- package/lib/BaseSelect/index.js +7 -2
- package/lib/OptionList.js +11 -4
- package/lib/Select.d.ts +4 -1
- package/lib/Select.js +6 -2
- package/lib/SelectContext.d.ts +3 -1
- package/lib/Selector/Input.js +8 -2
- package/lib/Selector/index.d.ts +2 -0
- package/lib/Selector/index.js +5 -1
- package/lib/TransBtn.d.ts +1 -0
- package/lib/TransBtn.js +3 -1
- package/package.json +1 -1
package/es/BaseSelect/index.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ import type { AlignType, BuildInPlacements } from '@rc-component/trigger/lib/int
|
|
|
2
2
|
import type { ScrollConfig, ScrollTo } from 'rc-virtual-list/lib/List';
|
|
3
3
|
import * as React from 'react';
|
|
4
4
|
import type { DisplayInfoType, DisplayValueType, Mode, Placement, RawValueType, RenderDOMFunc, RenderNode } from '../interface';
|
|
5
|
+
export type BaseSelectSemanticName = 'prefix' | 'suffix' | 'input';
|
|
5
6
|
export type { DisplayInfoType, DisplayValueType, Mode, Placement, RenderDOMFunc, RenderNode, RawValueType, };
|
|
6
7
|
export interface RefOptionListProps {
|
|
7
8
|
onKeyDown: React.KeyboardEventHandler;
|
|
@@ -53,6 +54,8 @@ export type BaseSelectPropsWithoutPrivate = Omit<BaseSelectProps, keyof BaseSele
|
|
|
53
54
|
export interface BaseSelectProps extends BaseSelectPrivateProps, React.AriaAttributes {
|
|
54
55
|
className?: string;
|
|
55
56
|
style?: React.CSSProperties;
|
|
57
|
+
classNames?: Partial<Record<BaseSelectSemanticName, string>>;
|
|
58
|
+
styles?: Partial<Record<BaseSelectSemanticName, React.CSSProperties>>;
|
|
56
59
|
title?: string;
|
|
57
60
|
showSearch?: boolean;
|
|
58
61
|
tagRender?: (props: CustomTagProps) => React.ReactElement;
|
package/es/BaseSelect/index.js
CHANGED
|
@@ -173,7 +173,9 @@ const BaseSelect = /*#__PURE__*/React.forwardRef((props, ref) => {
|
|
|
173
173
|
const tokenWithEnter = React.useMemo(() => (tokenSeparators || []).some(tokenSeparator => ['\n', '\r\n'].includes(tokenSeparator)), [tokenSeparators]);
|
|
174
174
|
const {
|
|
175
175
|
maxCount,
|
|
176
|
-
rawValues
|
|
176
|
+
rawValues,
|
|
177
|
+
classNames: selectClassNames,
|
|
178
|
+
styles
|
|
177
179
|
} = React.useContext(SelectContext) || {};
|
|
178
180
|
const onInternalSearch = (searchText, fromTyping, isCompositing) => {
|
|
179
181
|
if (multiple && isValidCount(maxCount) && rawValues?.size >= maxCount) {
|
|
@@ -436,9 +438,10 @@ const BaseSelect = /*#__PURE__*/React.forwardRef((props, ref) => {
|
|
|
436
438
|
let arrowNode;
|
|
437
439
|
if (showSuffixIcon) {
|
|
438
440
|
arrowNode = /*#__PURE__*/React.createElement(TransBtn, {
|
|
439
|
-
className: classNames(`${prefixCls}-arrow`, {
|
|
441
|
+
className: classNames(`${prefixCls}-arrow`, selectClassNames?.suffix, {
|
|
440
442
|
[`${prefixCls}-arrow-loading`]: loading
|
|
441
443
|
}),
|
|
444
|
+
style: styles?.suffix,
|
|
442
445
|
customizeIcon: suffixIcon,
|
|
443
446
|
customizeIconProps: {
|
|
444
447
|
loading,
|
|
@@ -513,6 +516,8 @@ const BaseSelect = /*#__PURE__*/React.forwardRef((props, ref) => {
|
|
|
513
516
|
}, customizeRawInputElement ? ( /*#__PURE__*/React.cloneElement(customizeRawInputElement, {
|
|
514
517
|
ref: customizeRawInputRef
|
|
515
518
|
})) : /*#__PURE__*/React.createElement(Selector, _extends({}, props, {
|
|
519
|
+
prefixClassName: selectClassNames?.prefix,
|
|
520
|
+
prefixStyle: styles?.prefix,
|
|
516
521
|
domRef: selectorDomRef,
|
|
517
522
|
prefixCls: prefixCls,
|
|
518
523
|
inputElement: customizeInputElement,
|
package/es/OptionList.js
CHANGED
|
@@ -49,7 +49,9 @@ const OptionList = (_, ref) => {
|
|
|
49
49
|
direction,
|
|
50
50
|
listHeight,
|
|
51
51
|
listItemHeight,
|
|
52
|
-
optionRender
|
|
52
|
+
optionRender,
|
|
53
|
+
classNames: contextClassNames,
|
|
54
|
+
styles: contextStyles
|
|
53
55
|
} = React.useContext(SelectContext);
|
|
54
56
|
const itemPrefixCls = `${prefixCls}-item`;
|
|
55
57
|
const memoFlattenOptions = useMemo(() => flattenOptions, [open, flattenOptions], (prev, next) => next[0] && prev[1] !== next[1]);
|
|
@@ -290,7 +292,9 @@ const OptionList = (_, ref) => {
|
|
|
290
292
|
virtual: virtual,
|
|
291
293
|
direction: direction,
|
|
292
294
|
innerProps: virtual ? null : a11yProps,
|
|
293
|
-
showScrollBar: showScrollBar
|
|
295
|
+
showScrollBar: showScrollBar,
|
|
296
|
+
className: contextClassNames?.list,
|
|
297
|
+
style: contextStyles?.list
|
|
294
298
|
}, (item, itemIndex) => {
|
|
295
299
|
const {
|
|
296
300
|
group,
|
|
@@ -325,7 +329,7 @@ const OptionList = (_, ref) => {
|
|
|
325
329
|
const selected = isSelected(value);
|
|
326
330
|
const mergedDisabled = disabled || !selected && overMaxCount;
|
|
327
331
|
const optionPrefixCls = `${itemPrefixCls}-option`;
|
|
328
|
-
const optionClassName = classNames(itemPrefixCls, optionPrefixCls, className, {
|
|
332
|
+
const optionClassName = classNames(itemPrefixCls, optionPrefixCls, className, contextClassNames?.listItem, {
|
|
329
333
|
[`${optionPrefixCls}-grouped`]: groupOption,
|
|
330
334
|
[`${optionPrefixCls}-active`]: activeIndex === itemIndex && !mergedDisabled,
|
|
331
335
|
[`${optionPrefixCls}-disabled`]: mergedDisabled,
|
|
@@ -356,7 +360,10 @@ const OptionList = (_, ref) => {
|
|
|
356
360
|
onSelectValue(value);
|
|
357
361
|
}
|
|
358
362
|
},
|
|
359
|
-
style:
|
|
363
|
+
style: {
|
|
364
|
+
...contextStyles?.listItem,
|
|
365
|
+
...style
|
|
366
|
+
}
|
|
360
367
|
}), /*#__PURE__*/React.createElement("div", {
|
|
361
368
|
className: `${optionPrefixCls}-content`
|
|
362
369
|
}, typeof optionRender === 'function' ? optionRender(item, {
|
package/es/Select.d.ts
CHANGED
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
* - `combobox` mode not support `optionLabelProp`
|
|
30
30
|
*/
|
|
31
31
|
import * as React from 'react';
|
|
32
|
-
import type { BaseSelectPropsWithoutPrivate, BaseSelectRef, DisplayValueType, RenderNode } from './BaseSelect';
|
|
32
|
+
import type { BaseSelectPropsWithoutPrivate, BaseSelectRef, BaseSelectSemanticName, DisplayValueType, RenderNode } from './BaseSelect';
|
|
33
33
|
import OptGroup from './OptGroup';
|
|
34
34
|
import Option from './Option';
|
|
35
35
|
import type { FlattenOptionData } from './interface';
|
|
@@ -65,6 +65,7 @@ export interface DefaultOptionType extends BaseOptionType {
|
|
|
65
65
|
}
|
|
66
66
|
export type SelectHandler<ValueType, OptionType extends BaseOptionType = DefaultOptionType> = (value: ValueType, option: OptionType) => void;
|
|
67
67
|
type ArrayElementType<T> = T extends (infer E)[] ? E : T;
|
|
68
|
+
export type SemanticName = BaseSelectSemanticName | 'listItem' | 'list';
|
|
68
69
|
export interface SelectProps<ValueType = any, OptionType extends BaseOptionType = DefaultOptionType> extends BaseSelectPropsWithoutPrivate {
|
|
69
70
|
prefixCls?: string;
|
|
70
71
|
id?: string;
|
|
@@ -104,6 +105,8 @@ export interface SelectProps<ValueType = any, OptionType extends BaseOptionType
|
|
|
104
105
|
defaultValue?: ValueType | null;
|
|
105
106
|
maxCount?: number;
|
|
106
107
|
onChange?: (value: ValueType, option?: OptionType | OptionType[]) => void;
|
|
108
|
+
classNames?: Partial<Record<SemanticName, string>>;
|
|
109
|
+
styles?: Partial<Record<SemanticName, React.CSSProperties>>;
|
|
107
110
|
}
|
|
108
111
|
declare const TypedSelect: (<ValueType = any, OptionType extends BaseOptionType | DefaultOptionType = DefaultOptionType>(props: SelectProps<ValueType, OptionType> & {
|
|
109
112
|
children?: React.ReactNode;
|
package/es/Select.js
CHANGED
|
@@ -86,6 +86,8 @@ const Select = /*#__PURE__*/React.forwardRef((props, ref) => {
|
|
|
86
86
|
labelInValue,
|
|
87
87
|
onChange,
|
|
88
88
|
maxCount,
|
|
89
|
+
classNames: selectClassNames,
|
|
90
|
+
styles,
|
|
89
91
|
...restProps
|
|
90
92
|
} = props;
|
|
91
93
|
const mergedId = useId(id);
|
|
@@ -425,9 +427,11 @@ const Select = /*#__PURE__*/React.forwardRef((props, ref) => {
|
|
|
425
427
|
listItemHeight,
|
|
426
428
|
childrenAsData,
|
|
427
429
|
maxCount,
|
|
428
|
-
optionRender
|
|
430
|
+
optionRender,
|
|
431
|
+
classNames: selectClassNames,
|
|
432
|
+
styles
|
|
429
433
|
};
|
|
430
|
-
}, [maxCount, parsedOptions, displayOptions, onActiveValue, mergedDefaultActiveFirstOption, onInternalSelect, menuItemSelectedIcon, rawValues, mergedFieldNames, virtual, popupMatchSelectWidth, direction, listHeight, listItemHeight, childrenAsData, optionRender]);
|
|
434
|
+
}, [selectClassNames, styles, maxCount, parsedOptions, displayOptions, onActiveValue, mergedDefaultActiveFirstOption, onInternalSelect, menuItemSelectedIcon, rawValues, mergedFieldNames, virtual, popupMatchSelectWidth, direction, listHeight, listItemHeight, childrenAsData, optionRender]);
|
|
431
435
|
|
|
432
436
|
// ========================== Warning ===========================
|
|
433
437
|
if (process.env.NODE_ENV !== 'production') {
|
package/es/SelectContext.d.ts
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import type { RawValueType, RenderNode } from './BaseSelect';
|
|
3
|
-
import type { BaseOptionType, FieldNames, OnActiveValue, OnInternalSelect, SelectProps } from './Select';
|
|
3
|
+
import type { BaseOptionType, FieldNames, OnActiveValue, OnInternalSelect, SelectProps, SemanticName } from './Select';
|
|
4
4
|
import type { FlattenOptionData } from './interface';
|
|
5
5
|
export interface SelectContextProps {
|
|
6
|
+
classNames?: Partial<Record<SemanticName, string>>;
|
|
7
|
+
styles?: Partial<Record<SemanticName, React.CSSProperties>>;
|
|
6
8
|
options: BaseOptionType[];
|
|
7
9
|
optionRender?: SelectProps['optionRender'];
|
|
8
10
|
flattenOptions: FlattenOptionData<BaseOptionType>[];
|
package/es/Selector/Input.js
CHANGED
|
@@ -2,6 +2,7 @@ import * as React from 'react';
|
|
|
2
2
|
import classNames from 'classnames';
|
|
3
3
|
import { composeRef } from "@rc-component/util/es/ref";
|
|
4
4
|
import { warning } from "@rc-component/util/es/warning";
|
|
5
|
+
import SelectContext from "../SelectContext";
|
|
5
6
|
const Input = (props, ref) => {
|
|
6
7
|
const {
|
|
7
8
|
prefixCls,
|
|
@@ -25,6 +26,10 @@ const Input = (props, ref) => {
|
|
|
25
26
|
open,
|
|
26
27
|
attrs
|
|
27
28
|
} = props;
|
|
29
|
+
const {
|
|
30
|
+
classNames: contextClassNames,
|
|
31
|
+
styles: contextStyles
|
|
32
|
+
} = React.useContext(SelectContext) || {};
|
|
28
33
|
let inputNode = inputElement || /*#__PURE__*/React.createElement("input", null);
|
|
29
34
|
const {
|
|
30
35
|
ref: originRef,
|
|
@@ -50,7 +55,7 @@ const Input = (props, ref) => {
|
|
|
50
55
|
tabIndex,
|
|
51
56
|
autoComplete: autoComplete || 'off',
|
|
52
57
|
autoFocus,
|
|
53
|
-
className: classNames(`${prefixCls}-selection-search-input`, inputNode?.props?.className),
|
|
58
|
+
className: classNames(`${prefixCls}-selection-search-input`, inputNode?.props?.className, contextClassNames?.input),
|
|
54
59
|
role: 'combobox',
|
|
55
60
|
'aria-expanded': open || false,
|
|
56
61
|
'aria-haspopup': 'listbox',
|
|
@@ -65,7 +70,8 @@ const Input = (props, ref) => {
|
|
|
65
70
|
unselectable: !editable ? 'on' : null,
|
|
66
71
|
style: {
|
|
67
72
|
...style,
|
|
68
|
-
opacity: editable ? null : 0
|
|
73
|
+
opacity: editable ? null : 0,
|
|
74
|
+
...contextStyles?.input
|
|
69
75
|
},
|
|
70
76
|
onKeyDown: event => {
|
|
71
77
|
onKeyDown(event);
|
package/es/Selector/index.d.ts
CHANGED
package/es/Selector/index.js
CHANGED
|
@@ -16,10 +16,13 @@ import useLock from "../hooks/useLock";
|
|
|
16
16
|
import { isValidateOpenKey } from "../utils/keyUtil";
|
|
17
17
|
import MultipleSelector from "./MultipleSelector";
|
|
18
18
|
import SingleSelector from "./SingleSelector";
|
|
19
|
+
import classNames from 'classnames';
|
|
19
20
|
const Selector = (props, ref) => {
|
|
20
21
|
const inputRef = useRef(null);
|
|
21
22
|
const compositionStatusRef = useRef(false);
|
|
22
23
|
const {
|
|
24
|
+
prefixClassName,
|
|
25
|
+
prefixStyle,
|
|
23
26
|
prefixCls,
|
|
24
27
|
open,
|
|
25
28
|
mode,
|
|
@@ -174,7 +177,8 @@ const Selector = (props, ref) => {
|
|
|
174
177
|
onClick: onClick,
|
|
175
178
|
onMouseDown: onMouseDown
|
|
176
179
|
}, prefix && /*#__PURE__*/React.createElement("div", {
|
|
177
|
-
className: `${prefixCls}-prefix
|
|
180
|
+
className: classNames(`${prefixCls}-prefix`, prefixClassName),
|
|
181
|
+
style: prefixStyle
|
|
178
182
|
}, prefix), selectNode);
|
|
179
183
|
};
|
|
180
184
|
const ForwardSelector = /*#__PURE__*/React.forwardRef(Selector);
|
package/es/TransBtn.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ import * as React from 'react';
|
|
|
2
2
|
import type { RenderNode } from './BaseSelect';
|
|
3
3
|
export interface TransBtnProps {
|
|
4
4
|
className: string;
|
|
5
|
+
style?: React.CSSProperties;
|
|
5
6
|
customizeIcon: RenderNode;
|
|
6
7
|
customizeIconProps?: any;
|
|
7
8
|
onMouseDown?: React.MouseEventHandler<HTMLSpanElement>;
|
package/es/TransBtn.js
CHANGED
|
@@ -3,6 +3,7 @@ import classNames from 'classnames';
|
|
|
3
3
|
const TransBtn = props => {
|
|
4
4
|
const {
|
|
5
5
|
className,
|
|
6
|
+
style,
|
|
6
7
|
customizeIcon,
|
|
7
8
|
customizeIconProps,
|
|
8
9
|
children,
|
|
@@ -18,7 +19,8 @@ const TransBtn = props => {
|
|
|
18
19
|
},
|
|
19
20
|
style: {
|
|
20
21
|
userSelect: 'none',
|
|
21
|
-
WebkitUserSelect: 'none'
|
|
22
|
+
WebkitUserSelect: 'none',
|
|
23
|
+
...style
|
|
22
24
|
},
|
|
23
25
|
unselectable: "on",
|
|
24
26
|
onClick: onClick,
|
|
@@ -2,6 +2,7 @@ import type { AlignType, BuildInPlacements } from '@rc-component/trigger/lib/int
|
|
|
2
2
|
import type { ScrollConfig, ScrollTo } from 'rc-virtual-list/lib/List';
|
|
3
3
|
import * as React from 'react';
|
|
4
4
|
import type { DisplayInfoType, DisplayValueType, Mode, Placement, RawValueType, RenderDOMFunc, RenderNode } from '../interface';
|
|
5
|
+
export type BaseSelectSemanticName = 'prefix' | 'suffix' | 'input';
|
|
5
6
|
export type { DisplayInfoType, DisplayValueType, Mode, Placement, RenderDOMFunc, RenderNode, RawValueType, };
|
|
6
7
|
export interface RefOptionListProps {
|
|
7
8
|
onKeyDown: React.KeyboardEventHandler;
|
|
@@ -53,6 +54,8 @@ export type BaseSelectPropsWithoutPrivate = Omit<BaseSelectProps, keyof BaseSele
|
|
|
53
54
|
export interface BaseSelectProps extends BaseSelectPrivateProps, React.AriaAttributes {
|
|
54
55
|
className?: string;
|
|
55
56
|
style?: React.CSSProperties;
|
|
57
|
+
classNames?: Partial<Record<BaseSelectSemanticName, string>>;
|
|
58
|
+
styles?: Partial<Record<BaseSelectSemanticName, React.CSSProperties>>;
|
|
56
59
|
title?: string;
|
|
57
60
|
showSearch?: boolean;
|
|
58
61
|
tagRender?: (props: CustomTagProps) => React.ReactElement;
|
package/lib/BaseSelect/index.js
CHANGED
|
@@ -183,7 +183,9 @@ const BaseSelect = /*#__PURE__*/React.forwardRef((props, ref) => {
|
|
|
183
183
|
const tokenWithEnter = React.useMemo(() => (tokenSeparators || []).some(tokenSeparator => ['\n', '\r\n'].includes(tokenSeparator)), [tokenSeparators]);
|
|
184
184
|
const {
|
|
185
185
|
maxCount,
|
|
186
|
-
rawValues
|
|
186
|
+
rawValues,
|
|
187
|
+
classNames: selectClassNames,
|
|
188
|
+
styles
|
|
187
189
|
} = React.useContext(_SelectContext.default) || {};
|
|
188
190
|
const onInternalSearch = (searchText, fromTyping, isCompositing) => {
|
|
189
191
|
if (multiple && (0, _valueUtil.isValidCount)(maxCount) && rawValues?.size >= maxCount) {
|
|
@@ -446,9 +448,10 @@ const BaseSelect = /*#__PURE__*/React.forwardRef((props, ref) => {
|
|
|
446
448
|
let arrowNode;
|
|
447
449
|
if (showSuffixIcon) {
|
|
448
450
|
arrowNode = /*#__PURE__*/React.createElement(_TransBtn.default, {
|
|
449
|
-
className: (0, _classnames.default)(`${prefixCls}-arrow`, {
|
|
451
|
+
className: (0, _classnames.default)(`${prefixCls}-arrow`, selectClassNames?.suffix, {
|
|
450
452
|
[`${prefixCls}-arrow-loading`]: loading
|
|
451
453
|
}),
|
|
454
|
+
style: styles?.suffix,
|
|
452
455
|
customizeIcon: suffixIcon,
|
|
453
456
|
customizeIconProps: {
|
|
454
457
|
loading,
|
|
@@ -523,6 +526,8 @@ const BaseSelect = /*#__PURE__*/React.forwardRef((props, ref) => {
|
|
|
523
526
|
}, customizeRawInputElement ? ( /*#__PURE__*/React.cloneElement(customizeRawInputElement, {
|
|
524
527
|
ref: customizeRawInputRef
|
|
525
528
|
})) : /*#__PURE__*/React.createElement(_Selector.default, _extends({}, props, {
|
|
529
|
+
prefixClassName: selectClassNames?.prefix,
|
|
530
|
+
prefixStyle: styles?.prefix,
|
|
526
531
|
domRef: selectorDomRef,
|
|
527
532
|
prefixCls: prefixCls,
|
|
528
533
|
inputElement: customizeInputElement,
|
package/lib/OptionList.js
CHANGED
|
@@ -57,7 +57,9 @@ const OptionList = (_, ref) => {
|
|
|
57
57
|
direction,
|
|
58
58
|
listHeight,
|
|
59
59
|
listItemHeight,
|
|
60
|
-
optionRender
|
|
60
|
+
optionRender,
|
|
61
|
+
classNames: contextClassNames,
|
|
62
|
+
styles: contextStyles
|
|
61
63
|
} = React.useContext(_SelectContext.default);
|
|
62
64
|
const itemPrefixCls = `${prefixCls}-item`;
|
|
63
65
|
const memoFlattenOptions = (0, _useMemo.default)(() => flattenOptions, [open, flattenOptions], (prev, next) => next[0] && prev[1] !== next[1]);
|
|
@@ -298,7 +300,9 @@ const OptionList = (_, ref) => {
|
|
|
298
300
|
virtual: virtual,
|
|
299
301
|
direction: direction,
|
|
300
302
|
innerProps: virtual ? null : a11yProps,
|
|
301
|
-
showScrollBar: showScrollBar
|
|
303
|
+
showScrollBar: showScrollBar,
|
|
304
|
+
className: contextClassNames?.list,
|
|
305
|
+
style: contextStyles?.list
|
|
302
306
|
}, (item, itemIndex) => {
|
|
303
307
|
const {
|
|
304
308
|
group,
|
|
@@ -333,7 +337,7 @@ const OptionList = (_, ref) => {
|
|
|
333
337
|
const selected = isSelected(value);
|
|
334
338
|
const mergedDisabled = disabled || !selected && overMaxCount;
|
|
335
339
|
const optionPrefixCls = `${itemPrefixCls}-option`;
|
|
336
|
-
const optionClassName = (0, _classnames.default)(itemPrefixCls, optionPrefixCls, className, {
|
|
340
|
+
const optionClassName = (0, _classnames.default)(itemPrefixCls, optionPrefixCls, className, contextClassNames?.listItem, {
|
|
337
341
|
[`${optionPrefixCls}-grouped`]: groupOption,
|
|
338
342
|
[`${optionPrefixCls}-active`]: activeIndex === itemIndex && !mergedDisabled,
|
|
339
343
|
[`${optionPrefixCls}-disabled`]: mergedDisabled,
|
|
@@ -364,7 +368,10 @@ const OptionList = (_, ref) => {
|
|
|
364
368
|
onSelectValue(value);
|
|
365
369
|
}
|
|
366
370
|
},
|
|
367
|
-
style:
|
|
371
|
+
style: {
|
|
372
|
+
...contextStyles?.listItem,
|
|
373
|
+
...style
|
|
374
|
+
}
|
|
368
375
|
}), /*#__PURE__*/React.createElement("div", {
|
|
369
376
|
className: `${optionPrefixCls}-content`
|
|
370
377
|
}, typeof optionRender === 'function' ? optionRender(item, {
|
package/lib/Select.d.ts
CHANGED
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
* - `combobox` mode not support `optionLabelProp`
|
|
30
30
|
*/
|
|
31
31
|
import * as React from 'react';
|
|
32
|
-
import type { BaseSelectPropsWithoutPrivate, BaseSelectRef, DisplayValueType, RenderNode } from './BaseSelect';
|
|
32
|
+
import type { BaseSelectPropsWithoutPrivate, BaseSelectRef, BaseSelectSemanticName, DisplayValueType, RenderNode } from './BaseSelect';
|
|
33
33
|
import OptGroup from './OptGroup';
|
|
34
34
|
import Option from './Option';
|
|
35
35
|
import type { FlattenOptionData } from './interface';
|
|
@@ -65,6 +65,7 @@ export interface DefaultOptionType extends BaseOptionType {
|
|
|
65
65
|
}
|
|
66
66
|
export type SelectHandler<ValueType, OptionType extends BaseOptionType = DefaultOptionType> = (value: ValueType, option: OptionType) => void;
|
|
67
67
|
type ArrayElementType<T> = T extends (infer E)[] ? E : T;
|
|
68
|
+
export type SemanticName = BaseSelectSemanticName | 'listItem' | 'list';
|
|
68
69
|
export interface SelectProps<ValueType = any, OptionType extends BaseOptionType = DefaultOptionType> extends BaseSelectPropsWithoutPrivate {
|
|
69
70
|
prefixCls?: string;
|
|
70
71
|
id?: string;
|
|
@@ -104,6 +105,8 @@ export interface SelectProps<ValueType = any, OptionType extends BaseOptionType
|
|
|
104
105
|
defaultValue?: ValueType | null;
|
|
105
106
|
maxCount?: number;
|
|
106
107
|
onChange?: (value: ValueType, option?: OptionType | OptionType[]) => void;
|
|
108
|
+
classNames?: Partial<Record<SemanticName, string>>;
|
|
109
|
+
styles?: Partial<Record<SemanticName, React.CSSProperties>>;
|
|
107
110
|
}
|
|
108
111
|
declare const TypedSelect: (<ValueType = any, OptionType extends BaseOptionType | DefaultOptionType = DefaultOptionType>(props: SelectProps<ValueType, OptionType> & {
|
|
109
112
|
children?: React.ReactNode;
|
package/lib/Select.js
CHANGED
|
@@ -93,6 +93,8 @@ const Select = /*#__PURE__*/React.forwardRef((props, ref) => {
|
|
|
93
93
|
labelInValue,
|
|
94
94
|
onChange,
|
|
95
95
|
maxCount,
|
|
96
|
+
classNames: selectClassNames,
|
|
97
|
+
styles,
|
|
96
98
|
...restProps
|
|
97
99
|
} = props;
|
|
98
100
|
const mergedId = (0, _useId.default)(id);
|
|
@@ -432,9 +434,11 @@ const Select = /*#__PURE__*/React.forwardRef((props, ref) => {
|
|
|
432
434
|
listItemHeight,
|
|
433
435
|
childrenAsData,
|
|
434
436
|
maxCount,
|
|
435
|
-
optionRender
|
|
437
|
+
optionRender,
|
|
438
|
+
classNames: selectClassNames,
|
|
439
|
+
styles
|
|
436
440
|
};
|
|
437
|
-
}, [maxCount, parsedOptions, displayOptions, onActiveValue, mergedDefaultActiveFirstOption, onInternalSelect, menuItemSelectedIcon, rawValues, mergedFieldNames, virtual, popupMatchSelectWidth, direction, listHeight, listItemHeight, childrenAsData, optionRender]);
|
|
441
|
+
}, [selectClassNames, styles, maxCount, parsedOptions, displayOptions, onActiveValue, mergedDefaultActiveFirstOption, onInternalSelect, menuItemSelectedIcon, rawValues, mergedFieldNames, virtual, popupMatchSelectWidth, direction, listHeight, listItemHeight, childrenAsData, optionRender]);
|
|
438
442
|
|
|
439
443
|
// ========================== Warning ===========================
|
|
440
444
|
if (process.env.NODE_ENV !== 'production') {
|
package/lib/SelectContext.d.ts
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import type { RawValueType, RenderNode } from './BaseSelect';
|
|
3
|
-
import type { BaseOptionType, FieldNames, OnActiveValue, OnInternalSelect, SelectProps } from './Select';
|
|
3
|
+
import type { BaseOptionType, FieldNames, OnActiveValue, OnInternalSelect, SelectProps, SemanticName } from './Select';
|
|
4
4
|
import type { FlattenOptionData } from './interface';
|
|
5
5
|
export interface SelectContextProps {
|
|
6
|
+
classNames?: Partial<Record<SemanticName, string>>;
|
|
7
|
+
styles?: Partial<Record<SemanticName, React.CSSProperties>>;
|
|
6
8
|
options: BaseOptionType[];
|
|
7
9
|
optionRender?: SelectProps['optionRender'];
|
|
8
10
|
flattenOptions: FlattenOptionData<BaseOptionType>[];
|
package/lib/Selector/Input.js
CHANGED
|
@@ -8,6 +8,7 @@ var React = _interopRequireWildcard(require("react"));
|
|
|
8
8
|
var _classnames = _interopRequireDefault(require("classnames"));
|
|
9
9
|
var _ref = require("@rc-component/util/lib/ref");
|
|
10
10
|
var _warning = require("@rc-component/util/lib/warning");
|
|
11
|
+
var _SelectContext = _interopRequireDefault(require("../SelectContext"));
|
|
11
12
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
12
13
|
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); }
|
|
13
14
|
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; }
|
|
@@ -34,6 +35,10 @@ const Input = (props, ref) => {
|
|
|
34
35
|
open,
|
|
35
36
|
attrs
|
|
36
37
|
} = props;
|
|
38
|
+
const {
|
|
39
|
+
classNames: contextClassNames,
|
|
40
|
+
styles: contextStyles
|
|
41
|
+
} = React.useContext(_SelectContext.default) || {};
|
|
37
42
|
let inputNode = inputElement || /*#__PURE__*/React.createElement("input", null);
|
|
38
43
|
const {
|
|
39
44
|
ref: originRef,
|
|
@@ -59,7 +64,7 @@ const Input = (props, ref) => {
|
|
|
59
64
|
tabIndex,
|
|
60
65
|
autoComplete: autoComplete || 'off',
|
|
61
66
|
autoFocus,
|
|
62
|
-
className: (0, _classnames.default)(`${prefixCls}-selection-search-input`, inputNode?.props?.className),
|
|
67
|
+
className: (0, _classnames.default)(`${prefixCls}-selection-search-input`, inputNode?.props?.className, contextClassNames?.input),
|
|
63
68
|
role: 'combobox',
|
|
64
69
|
'aria-expanded': open || false,
|
|
65
70
|
'aria-haspopup': 'listbox',
|
|
@@ -74,7 +79,8 @@ const Input = (props, ref) => {
|
|
|
74
79
|
unselectable: !editable ? 'on' : null,
|
|
75
80
|
style: {
|
|
76
81
|
...style,
|
|
77
|
-
opacity: editable ? null : 0
|
|
82
|
+
opacity: editable ? null : 0,
|
|
83
|
+
...contextStyles?.input
|
|
78
84
|
},
|
|
79
85
|
onKeyDown: event => {
|
|
80
86
|
onKeyDown(event);
|
package/lib/Selector/index.d.ts
CHANGED
package/lib/Selector/index.js
CHANGED
|
@@ -11,6 +11,7 @@ var _useLock = _interopRequireDefault(require("../hooks/useLock"));
|
|
|
11
11
|
var _keyUtil = require("../utils/keyUtil");
|
|
12
12
|
var _MultipleSelector = _interopRequireDefault(require("./MultipleSelector"));
|
|
13
13
|
var _SingleSelector = _interopRequireDefault(require("./SingleSelector"));
|
|
14
|
+
var _classnames = _interopRequireDefault(require("classnames"));
|
|
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 }; }
|
|
@@ -27,6 +28,8 @@ const Selector = (props, ref) => {
|
|
|
27
28
|
const inputRef = (0, _react.useRef)(null);
|
|
28
29
|
const compositionStatusRef = (0, _react.useRef)(false);
|
|
29
30
|
const {
|
|
31
|
+
prefixClassName,
|
|
32
|
+
prefixStyle,
|
|
30
33
|
prefixCls,
|
|
31
34
|
open,
|
|
32
35
|
mode,
|
|
@@ -181,7 +184,8 @@ const Selector = (props, ref) => {
|
|
|
181
184
|
onClick: onClick,
|
|
182
185
|
onMouseDown: onMouseDown
|
|
183
186
|
}, prefix && /*#__PURE__*/React.createElement("div", {
|
|
184
|
-
className: `${prefixCls}-prefix
|
|
187
|
+
className: (0, _classnames.default)(`${prefixCls}-prefix`, prefixClassName),
|
|
188
|
+
style: prefixStyle
|
|
185
189
|
}, prefix), selectNode);
|
|
186
190
|
};
|
|
187
191
|
const ForwardSelector = /*#__PURE__*/React.forwardRef(Selector);
|
package/lib/TransBtn.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ import * as React from 'react';
|
|
|
2
2
|
import type { RenderNode } from './BaseSelect';
|
|
3
3
|
export interface TransBtnProps {
|
|
4
4
|
className: string;
|
|
5
|
+
style?: React.CSSProperties;
|
|
5
6
|
customizeIcon: RenderNode;
|
|
6
7
|
customizeIconProps?: any;
|
|
7
8
|
onMouseDown?: React.MouseEventHandler<HTMLSpanElement>;
|
package/lib/TransBtn.js
CHANGED
|
@@ -12,6 +12,7 @@ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e;
|
|
|
12
12
|
const TransBtn = props => {
|
|
13
13
|
const {
|
|
14
14
|
className,
|
|
15
|
+
style,
|
|
15
16
|
customizeIcon,
|
|
16
17
|
customizeIconProps,
|
|
17
18
|
children,
|
|
@@ -27,7 +28,8 @@ const TransBtn = props => {
|
|
|
27
28
|
},
|
|
28
29
|
style: {
|
|
29
30
|
userSelect: 'none',
|
|
30
|
-
WebkitUserSelect: 'none'
|
|
31
|
+
WebkitUserSelect: 'none',
|
|
32
|
+
...style
|
|
31
33
|
},
|
|
32
34
|
unselectable: "on",
|
|
33
35
|
onClick: onClick,
|