@rc-component/select 1.5.2 → 1.6.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.
@@ -37,51 +37,54 @@ const SingleContent = /*#__PURE__*/React.forwardRef(({
37
37
  }
38
38
  return showSearch ? searchValue : '';
39
39
  }, [combobox, activeValue, inputChanged, triggerOpen, searchValue, showSearch]);
40
-
41
- // Extract option props, excluding label and value, and handle className/style merging
42
- const optionProps = React.useMemo(() => {
43
- const restProps = {
44
- className: `${prefixCls}-content-value`,
45
- style: mergedSearchValue ? {
46
- visibility: 'hidden'
47
- } : {}
48
- };
40
+ const [optionClassName, optionStyle, optionTitle, hasOptionStyle] = React.useMemo(() => {
41
+ let className;
42
+ let style;
43
+ let titleValue;
49
44
  if (displayValue && selectContext?.flattenOptions) {
50
45
  const option = selectContext.flattenOptions.find(opt => opt.value === displayValue.value);
51
46
  if (option?.data) {
52
- const {
53
- className,
54
- style
55
- } = option.data;
56
- Object.assign(restProps, {
57
- title: getTitle(option.data),
58
- className: clsx(restProps.className, className),
59
- style: {
60
- ...restProps.style,
61
- ...style
62
- }
63
- });
47
+ className = option.data.className;
48
+ style = option.data.style;
49
+ titleValue = getTitle(option.data);
64
50
  }
65
51
  }
66
- if (displayValue && !restProps.title) {
67
- restProps.title = getTitle(displayValue);
52
+ if (displayValue && !titleValue) {
53
+ titleValue = getTitle(displayValue);
68
54
  }
69
55
  if (rootTitle !== undefined) {
70
- restProps.title = rootTitle;
56
+ titleValue = rootTitle;
71
57
  }
72
- return restProps;
73
- }, [displayValue, selectContext?.flattenOptions, prefixCls, mergedSearchValue, rootTitle]);
58
+ const nextHasStyle = !!className || !!style;
59
+ return [className, style, titleValue, nextHasStyle];
60
+ }, [displayValue, selectContext?.flattenOptions, rootTitle]);
74
61
  React.useEffect(() => {
75
62
  if (combobox) {
76
63
  setInputChanged(false);
77
64
  }
78
65
  }, [combobox, activeValue]);
79
- return /*#__PURE__*/React.createElement("div", {
80
- className: clsx(`${prefixCls}-content`, classNames?.content),
81
- style: styles?.content
82
- }, displayValue ? /*#__PURE__*/React.createElement("div", optionProps, displayValue.label) : /*#__PURE__*/React.createElement(Placeholder, {
66
+
67
+ // ========================== Render ==========================
68
+ // Render value
69
+ const renderValue = displayValue ? hasOptionStyle ? /*#__PURE__*/React.createElement("div", {
70
+ className: clsx(`${prefixCls}-content-value`, optionClassName),
71
+ style: {
72
+ ...(mergedSearchValue ? {
73
+ visibility: 'hidden'
74
+ } : {}),
75
+ ...optionStyle
76
+ },
77
+ title: optionTitle
78
+ }, displayValue.label) : displayValue.label : /*#__PURE__*/React.createElement(Placeholder, {
83
79
  show: !mergedSearchValue
84
- }), /*#__PURE__*/React.createElement(Input, _extends({
80
+ });
81
+
82
+ // Render
83
+ return /*#__PURE__*/React.createElement("div", {
84
+ className: clsx(`${prefixCls}-content`, displayValue && `${prefixCls}-content-has-value`, classNames?.content),
85
+ style: styles?.content,
86
+ title: hasOptionStyle ? undefined : optionTitle
87
+ }, renderValue, /*#__PURE__*/React.createElement(Input, _extends({
85
88
  ref: ref
86
89
  }, inputProps, {
87
90
  value: mergedSearchValue,
@@ -46,51 +46,54 @@ const SingleContent = /*#__PURE__*/React.forwardRef(({
46
46
  }
47
47
  return showSearch ? searchValue : '';
48
48
  }, [combobox, activeValue, inputChanged, triggerOpen, searchValue, showSearch]);
49
-
50
- // Extract option props, excluding label and value, and handle className/style merging
51
- const optionProps = React.useMemo(() => {
52
- const restProps = {
53
- className: `${prefixCls}-content-value`,
54
- style: mergedSearchValue ? {
55
- visibility: 'hidden'
56
- } : {}
57
- };
49
+ const [optionClassName, optionStyle, optionTitle, hasOptionStyle] = React.useMemo(() => {
50
+ let className;
51
+ let style;
52
+ let titleValue;
58
53
  if (displayValue && selectContext?.flattenOptions) {
59
54
  const option = selectContext.flattenOptions.find(opt => opt.value === displayValue.value);
60
55
  if (option?.data) {
61
- const {
62
- className,
63
- style
64
- } = option.data;
65
- Object.assign(restProps, {
66
- title: (0, _commonUtil.getTitle)(option.data),
67
- className: (0, _clsx.clsx)(restProps.className, className),
68
- style: {
69
- ...restProps.style,
70
- ...style
71
- }
72
- });
56
+ className = option.data.className;
57
+ style = option.data.style;
58
+ titleValue = (0, _commonUtil.getTitle)(option.data);
73
59
  }
74
60
  }
75
- if (displayValue && !restProps.title) {
76
- restProps.title = (0, _commonUtil.getTitle)(displayValue);
61
+ if (displayValue && !titleValue) {
62
+ titleValue = (0, _commonUtil.getTitle)(displayValue);
77
63
  }
78
64
  if (rootTitle !== undefined) {
79
- restProps.title = rootTitle;
65
+ titleValue = rootTitle;
80
66
  }
81
- return restProps;
82
- }, [displayValue, selectContext?.flattenOptions, prefixCls, mergedSearchValue, rootTitle]);
67
+ const nextHasStyle = !!className || !!style;
68
+ return [className, style, titleValue, nextHasStyle];
69
+ }, [displayValue, selectContext?.flattenOptions, rootTitle]);
83
70
  React.useEffect(() => {
84
71
  if (combobox) {
85
72
  setInputChanged(false);
86
73
  }
87
74
  }, [combobox, activeValue]);
88
- return /*#__PURE__*/React.createElement("div", {
89
- className: (0, _clsx.clsx)(`${prefixCls}-content`, classNames?.content),
90
- style: styles?.content
91
- }, displayValue ? /*#__PURE__*/React.createElement("div", optionProps, displayValue.label) : /*#__PURE__*/React.createElement(_Placeholder.default, {
75
+
76
+ // ========================== Render ==========================
77
+ // Render value
78
+ const renderValue = displayValue ? hasOptionStyle ? /*#__PURE__*/React.createElement("div", {
79
+ className: (0, _clsx.clsx)(`${prefixCls}-content-value`, optionClassName),
80
+ style: {
81
+ ...(mergedSearchValue ? {
82
+ visibility: 'hidden'
83
+ } : {}),
84
+ ...optionStyle
85
+ },
86
+ title: optionTitle
87
+ }, displayValue.label) : displayValue.label : /*#__PURE__*/React.createElement(_Placeholder.default, {
92
88
  show: !mergedSearchValue
93
- }), /*#__PURE__*/React.createElement(_Input.default, _extends({
89
+ });
90
+
91
+ // Render
92
+ return /*#__PURE__*/React.createElement("div", {
93
+ className: (0, _clsx.clsx)(`${prefixCls}-content`, displayValue && `${prefixCls}-content-has-value`, classNames?.content),
94
+ style: styles?.content,
95
+ title: hasOptionStyle ? undefined : optionTitle
96
+ }, renderValue, /*#__PURE__*/React.createElement(_Input.default, _extends({
94
97
  ref: ref
95
98
  }, inputProps, {
96
99
  value: mergedSearchValue,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rc-component/select",
3
- "version": "1.5.2",
3
+ "version": "1.6.1",
4
4
  "description": "React Select",
5
5
  "engines": {
6
6
  "node": ">=8.x"