@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.
@@ -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;
@@ -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: 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') {
@@ -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>[];
@@ -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);
@@ -42,6 +42,8 @@ export interface RefSelectorProps {
42
42
  scrollTo?: ScrollTo;
43
43
  }
44
44
  export interface SelectorProps {
45
+ prefixClassName: string;
46
+ prefixStyle: React.CSSProperties;
45
47
  id: string;
46
48
  prefixCls: string;
47
49
  showSearch?: boolean;
@@ -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;
@@ -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: 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') {
@@ -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>[];
@@ -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);
@@ -42,6 +42,8 @@ export interface RefSelectorProps {
42
42
  scrollTo?: ScrollTo;
43
43
  }
44
44
  export interface SelectorProps {
45
+ prefixClassName: string;
46
+ prefixStyle: React.CSSProperties;
45
47
  id: string;
46
48
  prefixCls: string;
47
49
  showSearch?: boolean;
@@ -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,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rc-component/select",
3
- "version": "1.0.0",
3
+ "version": "1.0.1",
4
4
  "description": "React Select",
5
5
  "engines": {
6
6
  "node": ">=8.x"