@douyinfe/semi-foundation 2.67.1 → 2.67.2-alpha.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.
@@ -227,6 +227,7 @@ export interface DatePickerAdapter extends DefaultAdapter<DatePickerFoundationPr
227
227
  */
228
228
  export default class DatePickerFoundation extends BaseFoundation<DatePickerAdapter> {
229
229
 
230
+ clickConfirmButton: boolean;
230
231
  constructor(adapter: DatePickerAdapter) {
231
232
  super({ ...adapter });
232
233
  }
@@ -388,12 +389,17 @@ export default class DatePickerFoundation extends BaseFoundation<DatePickerAdapt
388
389
  * - date type and not multiple, close panel after select date
389
390
  * - dateRange type, close panel after select rangeStart and rangeEnd
390
391
  * 4. click outside
392
+ * @param {Event} e
393
+ * @param {String} inputValue
394
+ * @param {Date[]} dates
391
395
  */
392
- closePanel() {
396
+ closePanel(e?: any, inputValue: string = null, dates?: Date[]) {
397
+ const { value } = this._adapter.getStates();
398
+ const willUpdateDates = isNullOrUndefined(dates) ? value : dates;
393
399
  if (!this._isControlledComponent('open')) {
394
400
  this.close();
395
401
  } else {
396
- this.resetInnerSelectedStates();
402
+ this.resetInnerSelectedStates(willUpdateDates);
397
403
  }
398
404
  this._adapter.notifyOpenChange(false);
399
405
  }
@@ -404,8 +410,7 @@ export default class DatePickerFoundation extends BaseFoundation<DatePickerAdapt
404
410
  }
405
411
 
406
412
  close() {
407
- this._adapter.togglePanel(false);
408
- this.resetInnerSelectedStates();
413
+ this._adapter.togglePanel(false, () => this.resetInnerSelectedStates());
409
414
  this._adapter.unregisterClickOutSide();
410
415
  }
411
416
 
@@ -429,16 +434,15 @@ export default class DatePickerFoundation extends BaseFoundation<DatePickerAdapt
429
434
  /**
430
435
  * reset cachedSelectedValue, inputValue when close panel
431
436
  */
432
- resetInnerSelectedStates() {
433
- // 通过 setTimeout 保证需要获取到最新的 state 状态
434
- setTimeout(() => {
435
- const { value, cachedSelectedValue } = this._adapter.getStates();
436
- if (!isEqual(value, cachedSelectedValue)) {
437
- this.resetCachedSelectedValue(value);
438
- }
439
- }, 0);
437
+ resetInnerSelectedStates(willUpdateDates?: Date[]) {
438
+ const { value } = this._adapter.getStates();
439
+ const needResetCachedSelectedValue = isNullOrUndefined(willUpdateDates) || !this.isCachedSelectedValueValid(willUpdateDates) || this._adapter.needConfirm() && !this.clickConfirmButton;
440
+ if (needResetCachedSelectedValue) {
441
+ this.resetCachedSelectedValue(value);
442
+ }
440
443
  this.resetFocus();
441
444
  this.clearInputValue();
445
+ this.clickConfirmButton = false;
442
446
  }
443
447
 
444
448
  resetFocus(e?: any) {
@@ -1012,7 +1016,7 @@ export default class DatePickerFoundation extends BaseFoundation<DatePickerAdapt
1012
1016
 
1013
1017
  const focusRecordChecked = !needCheckFocusRecord || (needCheckFocusRecord && this._adapter.couldPanelClosed());
1014
1018
  if ((type === 'date' && !this._isMultiple() && closePanel) || (type === 'dateRange' && this._isRangeValueComplete(dates) && closePanel && focusRecordChecked)) {
1015
- this.closePanel();
1019
+ this.closePanel(undefined, inputValue, dates);
1016
1020
  }
1017
1021
  }
1018
1022
 
@@ -1039,6 +1043,7 @@ export default class DatePickerFoundation extends BaseFoundation<DatePickerAdapt
1039
1043
  }
1040
1044
 
1041
1045
  handleConfirm() {
1046
+ this.clickConfirmButton = true;
1042
1047
  const { cachedSelectedValue, value } = this._adapter.getStates();
1043
1048
  const isRangeValueComplete = this._isRangeValueComplete(cachedSelectedValue);
1044
1049
  const newValue = isRangeValueComplete ? cachedSelectedValue : value;
@@ -1046,7 +1051,7 @@ export default class DatePickerFoundation extends BaseFoundation<DatePickerAdapt
1046
1051
  this._adapter.updateValue(newValue);
1047
1052
  }
1048
1053
  // If the input is incomplete, the legal date of the last input is used
1049
- this.closePanel();
1054
+ this.closePanel(undefined, undefined, newValue);
1050
1055
 
1051
1056
  if (isRangeValueComplete) {
1052
1057
  const { notifyValue, notifyDate } = this.disposeCallbackArgs(cachedSelectedValue);
@@ -190,6 +190,7 @@ export interface DatePickerAdapter extends DefaultAdapter<DatePickerFoundationPr
190
190
  * task 2. When the input box changes, update the date value = > Notify the change
191
191
  */
192
192
  export default class DatePickerFoundation extends BaseFoundation<DatePickerAdapter> {
193
+ clickConfirmButton: boolean;
193
194
  constructor(adapter: DatePickerAdapter);
194
195
  init(): void;
195
196
  initFromProps({ value, timeZone, prevTimeZone }: Pick<DatePickerFoundationProps, 'value' | 'timeZone'> & {
@@ -246,8 +247,11 @@ export default class DatePickerFoundation extends BaseFoundation<DatePickerAdapt
246
247
  * - date type and not multiple, close panel after select date
247
248
  * - dateRange type, close panel after select rangeStart and rangeEnd
248
249
  * 4. click outside
250
+ * @param {Event} e
251
+ * @param {String} inputValue
252
+ * @param {Date[]} dates
249
253
  */
250
- closePanel(): void;
254
+ closePanel(e?: any, inputValue?: string, dates?: Date[]): void;
251
255
  open(): void;
252
256
  close(): void;
253
257
  focus(focusType?: Exclude<RangeType, false>): void;
@@ -255,7 +259,7 @@ export default class DatePickerFoundation extends BaseFoundation<DatePickerAdapt
255
259
  /**
256
260
  * reset cachedSelectedValue, inputValue when close panel
257
261
  */
258
- resetInnerSelectedStates(): void;
262
+ resetInnerSelectedStates(willUpdateDates?: Date[]): void;
259
263
  resetFocus(e?: any): void;
260
264
  /**
261
265
  * cachedSelectedValue can be `(Date|null)[]` or `null`
@@ -217,12 +217,21 @@ class DatePickerFoundation extends _foundation.default {
217
217
  * - date type and not multiple, close panel after select date
218
218
  * - dateRange type, close panel after select rangeStart and rangeEnd
219
219
  * 4. click outside
220
+ * @param {Event} e
221
+ * @param {String} inputValue
222
+ * @param {Date[]} dates
220
223
  */
221
- closePanel() {
224
+ closePanel(e) {
225
+ let inputValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
226
+ let dates = arguments.length > 2 ? arguments[2] : undefined;
227
+ const {
228
+ value
229
+ } = this._adapter.getStates();
230
+ const willUpdateDates = (0, _isNullOrUndefined.default)(dates) ? value : dates;
222
231
  if (!this._isControlledComponent('open')) {
223
232
  this.close();
224
233
  } else {
225
- this.resetInnerSelectedStates();
234
+ this.resetInnerSelectedStates(willUpdateDates);
226
235
  }
227
236
  this._adapter.notifyOpenChange(false);
228
237
  }
@@ -231,8 +240,7 @@ class DatePickerFoundation extends _foundation.default {
231
240
  this._adapter.registerClickOutSide();
232
241
  }
233
242
  close() {
234
- this._adapter.togglePanel(false);
235
- this.resetInnerSelectedStates();
243
+ this._adapter.togglePanel(false, () => this.resetInnerSelectedStates());
236
244
  this._adapter.unregisterClickOutSide();
237
245
  }
238
246
  focus(focusType) {
@@ -253,19 +261,17 @@ class DatePickerFoundation extends _foundation.default {
253
261
  /**
254
262
  * reset cachedSelectedValue, inputValue when close panel
255
263
  */
256
- resetInnerSelectedStates() {
257
- // 通过 setTimeout 保证需要获取到最新的 state 状态
258
- setTimeout(() => {
259
- const {
260
- value,
261
- cachedSelectedValue
262
- } = this._adapter.getStates();
263
- if (!(0, _isEqual2.default)(value, cachedSelectedValue)) {
264
- this.resetCachedSelectedValue(value);
265
- }
266
- }, 0);
264
+ resetInnerSelectedStates(willUpdateDates) {
265
+ const {
266
+ value
267
+ } = this._adapter.getStates();
268
+ const needResetCachedSelectedValue = (0, _isNullOrUndefined.default)(willUpdateDates) || !this.isCachedSelectedValueValid(willUpdateDates) || this._adapter.needConfirm() && !this.clickConfirmButton;
269
+ if (needResetCachedSelectedValue) {
270
+ this.resetCachedSelectedValue(value);
271
+ }
267
272
  this.resetFocus();
268
273
  this.clearInputValue();
274
+ this.clickConfirmButton = false;
269
275
  }
270
276
  resetFocus(e) {
271
277
  this._adapter.setRangeInputFocus(false);
@@ -819,7 +825,7 @@ class DatePickerFoundation extends _foundation.default {
819
825
  }
820
826
  const focusRecordChecked = !needCheckFocusRecord || needCheckFocusRecord && this._adapter.couldPanelClosed();
821
827
  if (type === 'date' && !this._isMultiple() && closePanel || type === 'dateRange' && this._isRangeValueComplete(dates) && closePanel && focusRecordChecked) {
822
- this.closePanel();
828
+ this.closePanel(undefined, inputValue, dates);
823
829
  }
824
830
  }
825
831
  /**
@@ -846,6 +852,7 @@ class DatePickerFoundation extends _foundation.default {
846
852
  }
847
853
  }
848
854
  handleConfirm() {
855
+ this.clickConfirmButton = true;
849
856
  const {
850
857
  cachedSelectedValue,
851
858
  value
@@ -856,7 +863,7 @@ class DatePickerFoundation extends _foundation.default {
856
863
  this._adapter.updateValue(newValue);
857
864
  }
858
865
  // If the input is incomplete, the legal date of the last input is used
859
- this.closePanel();
866
+ this.closePanel(undefined, undefined, newValue);
860
867
  if (isRangeValueComplete) {
861
868
  const {
862
869
  notifyValue,
@@ -378,16 +378,9 @@ class SelectFoundation extends _foundation.default {
378
378
  closeCb,
379
379
  notToggleInput
380
380
  } = closeConfig || {};
381
- const {
382
- isFocus
383
- } = this.getStates();
384
381
  this._adapter.closeMenu();
385
382
  this._adapter.notifyDropdownVisibleChange(false);
386
383
  this._adapter.setIsFocusInContainer(false);
387
- if (isFocus) {
388
- // if the isFocus state is true, refocus the trigger case see in https://github.com/DouyinFE/semi-design/issues/2465
389
- this._focusTrigger();
390
- }
391
384
  // this.unBindKeyBoardEvent();
392
385
  // this._notifyBlur(e);
393
386
  // this._adapter.updateFocusState(false);
@@ -418,6 +411,7 @@ class SelectFoundation extends _foundation.default {
418
411
  const isMultiple = this._isMultiple();
419
412
  if (!isMultiple) {
420
413
  this._handleSingleSelect(option, event);
414
+ this._focusTrigger();
421
415
  } else {
422
416
  this._handleMultipleSelect(option, event);
423
417
  }
@@ -165,6 +165,7 @@
165
165
  }
166
166
  .semi-select-disabled:focus {
167
167
  border: 1px solid transparent;
168
+ background-color: var(--semi-color-disabled-fill);
168
169
  }
169
170
  .semi-select-disabled .semi-select-selection,
170
171
  .semi-select-disabled .semi-select-selection-placeholder {
@@ -37,6 +37,7 @@ $overflowList: #{$prefix}-overflow-list;
37
37
  &:focus {
38
38
  border: $width-select-border-focus solid $color-select-border-focus;
39
39
  background-color: $color-select-bg-focus;
40
+ // background-color: plum;
40
41
  outline: 0;
41
42
  }
42
43
 
@@ -125,7 +126,8 @@ $overflowList: #{$prefix}-overflow-list;
125
126
 
126
127
  &:focus {
127
128
  // when select is disabled, the border should not have active color
128
- border: $width-select-border-focus solid transparent;
129
+ border: $width-select-border-focus solid $color-select_input_disabled-border-focus;
130
+ background-color: $color-select_input_disabled-bg-focus;
129
131
  }
130
132
 
131
133
  .#{$module}-selection,
@@ -37,8 +37,11 @@ $color-select_clearBtn-text-hover: var(--semi-color-primary); // 选择器输入
37
37
  $color-select_input-bg-default: transparent; // 选择器输入框清空按钮颜色 - 悬停态
38
38
  $color-select_input_disabled-bg: var(--semi-color-disabled-fill); // 禁用选择器输入框背景色
39
39
  $color-select_input_disabled-border: var(--semi-color-border); // 禁用选择器输入框描边颜色
40
+ $color-select_input_disabled-border-focus: transparent; // 禁用选择器输入框描边颜色 - 聚焦态
40
41
  $color-select_input_disabled-text: var(--semi-color-disabled-text); // 禁用选择器输入框回填内容文字颜色
41
42
  $color-select_input_disabled-bg-hover: var(--semi-color-disabled-fill); // 选择器输入框回填内容文字颜色 - 悬停态
43
+ $color-select_input_disabled-bg-focus: var(--semi-color-disabled-fill); // 选择器输入框回填内容文字颜色 - 聚焦态
44
+
42
45
  $color-select_input_placeholder-text: var(--semi-color-text-2); // 选择器输入框占位文本文字颜色
43
46
 
44
47
  $color-select_option_main-text: var(--semi-color-text-0); // 选择器菜单选项文本颜色
@@ -190,6 +190,7 @@ export interface DatePickerAdapter extends DefaultAdapter<DatePickerFoundationPr
190
190
  * task 2. When the input box changes, update the date value = > Notify the change
191
191
  */
192
192
  export default class DatePickerFoundation extends BaseFoundation<DatePickerAdapter> {
193
+ clickConfirmButton: boolean;
193
194
  constructor(adapter: DatePickerAdapter);
194
195
  init(): void;
195
196
  initFromProps({ value, timeZone, prevTimeZone }: Pick<DatePickerFoundationProps, 'value' | 'timeZone'> & {
@@ -246,8 +247,11 @@ export default class DatePickerFoundation extends BaseFoundation<DatePickerAdapt
246
247
  * - date type and not multiple, close panel after select date
247
248
  * - dateRange type, close panel after select rangeStart and rangeEnd
248
249
  * 4. click outside
250
+ * @param {Event} e
251
+ * @param {String} inputValue
252
+ * @param {Date[]} dates
249
253
  */
250
- closePanel(): void;
254
+ closePanel(e?: any, inputValue?: string, dates?: Date[]): void;
251
255
  open(): void;
252
256
  close(): void;
253
257
  focus(focusType?: Exclude<RangeType, false>): void;
@@ -255,7 +259,7 @@ export default class DatePickerFoundation extends BaseFoundation<DatePickerAdapt
255
259
  /**
256
260
  * reset cachedSelectedValue, inputValue when close panel
257
261
  */
258
- resetInnerSelectedStates(): void;
262
+ resetInnerSelectedStates(willUpdateDates?: Date[]): void;
259
263
  resetFocus(e?: any): void;
260
264
  /**
261
265
  * cachedSelectedValue can be `(Date|null)[]` or `null`
@@ -210,12 +210,21 @@ export default class DatePickerFoundation extends BaseFoundation {
210
210
  * - date type and not multiple, close panel after select date
211
211
  * - dateRange type, close panel after select rangeStart and rangeEnd
212
212
  * 4. click outside
213
+ * @param {Event} e
214
+ * @param {String} inputValue
215
+ * @param {Date[]} dates
213
216
  */
214
- closePanel() {
217
+ closePanel(e) {
218
+ let inputValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
219
+ let dates = arguments.length > 2 ? arguments[2] : undefined;
220
+ const {
221
+ value
222
+ } = this._adapter.getStates();
223
+ const willUpdateDates = isNullOrUndefined(dates) ? value : dates;
215
224
  if (!this._isControlledComponent('open')) {
216
225
  this.close();
217
226
  } else {
218
- this.resetInnerSelectedStates();
227
+ this.resetInnerSelectedStates(willUpdateDates);
219
228
  }
220
229
  this._adapter.notifyOpenChange(false);
221
230
  }
@@ -224,8 +233,7 @@ export default class DatePickerFoundation extends BaseFoundation {
224
233
  this._adapter.registerClickOutSide();
225
234
  }
226
235
  close() {
227
- this._adapter.togglePanel(false);
228
- this.resetInnerSelectedStates();
236
+ this._adapter.togglePanel(false, () => this.resetInnerSelectedStates());
229
237
  this._adapter.unregisterClickOutSide();
230
238
  }
231
239
  focus(focusType) {
@@ -246,19 +254,17 @@ export default class DatePickerFoundation extends BaseFoundation {
246
254
  /**
247
255
  * reset cachedSelectedValue, inputValue when close panel
248
256
  */
249
- resetInnerSelectedStates() {
250
- // 通过 setTimeout 保证需要获取到最新的 state 状态
251
- setTimeout(() => {
252
- const {
253
- value,
254
- cachedSelectedValue
255
- } = this._adapter.getStates();
256
- if (!_isEqual(value, cachedSelectedValue)) {
257
- this.resetCachedSelectedValue(value);
258
- }
259
- }, 0);
257
+ resetInnerSelectedStates(willUpdateDates) {
258
+ const {
259
+ value
260
+ } = this._adapter.getStates();
261
+ const needResetCachedSelectedValue = isNullOrUndefined(willUpdateDates) || !this.isCachedSelectedValueValid(willUpdateDates) || this._adapter.needConfirm() && !this.clickConfirmButton;
262
+ if (needResetCachedSelectedValue) {
263
+ this.resetCachedSelectedValue(value);
264
+ }
260
265
  this.resetFocus();
261
266
  this.clearInputValue();
267
+ this.clickConfirmButton = false;
262
268
  }
263
269
  resetFocus(e) {
264
270
  this._adapter.setRangeInputFocus(false);
@@ -812,7 +818,7 @@ export default class DatePickerFoundation extends BaseFoundation {
812
818
  }
813
819
  const focusRecordChecked = !needCheckFocusRecord || needCheckFocusRecord && this._adapter.couldPanelClosed();
814
820
  if (type === 'date' && !this._isMultiple() && closePanel || type === 'dateRange' && this._isRangeValueComplete(dates) && closePanel && focusRecordChecked) {
815
- this.closePanel();
821
+ this.closePanel(undefined, inputValue, dates);
816
822
  }
817
823
  }
818
824
  /**
@@ -839,6 +845,7 @@ export default class DatePickerFoundation extends BaseFoundation {
839
845
  }
840
846
  }
841
847
  handleConfirm() {
848
+ this.clickConfirmButton = true;
842
849
  const {
843
850
  cachedSelectedValue,
844
851
  value
@@ -849,7 +856,7 @@ export default class DatePickerFoundation extends BaseFoundation {
849
856
  this._adapter.updateValue(newValue);
850
857
  }
851
858
  // If the input is incomplete, the legal date of the last input is used
852
- this.closePanel();
859
+ this.closePanel(undefined, undefined, newValue);
853
860
  if (isRangeValueComplete) {
854
861
  const {
855
862
  notifyValue,
@@ -369,16 +369,9 @@ export default class SelectFoundation extends BaseFoundation {
369
369
  closeCb,
370
370
  notToggleInput
371
371
  } = closeConfig || {};
372
- const {
373
- isFocus
374
- } = this.getStates();
375
372
  this._adapter.closeMenu();
376
373
  this._adapter.notifyDropdownVisibleChange(false);
377
374
  this._adapter.setIsFocusInContainer(false);
378
- if (isFocus) {
379
- // if the isFocus state is true, refocus the trigger case see in https://github.com/DouyinFE/semi-design/issues/2465
380
- this._focusTrigger();
381
- }
382
375
  // this.unBindKeyBoardEvent();
383
376
  // this._notifyBlur(e);
384
377
  // this._adapter.updateFocusState(false);
@@ -409,6 +402,7 @@ export default class SelectFoundation extends BaseFoundation {
409
402
  const isMultiple = this._isMultiple();
410
403
  if (!isMultiple) {
411
404
  this._handleSingleSelect(option, event);
405
+ this._focusTrigger();
412
406
  } else {
413
407
  this._handleMultipleSelect(option, event);
414
408
  }
@@ -165,6 +165,7 @@
165
165
  }
166
166
  .semi-select-disabled:focus {
167
167
  border: 1px solid transparent;
168
+ background-color: var(--semi-color-disabled-fill);
168
169
  }
169
170
  .semi-select-disabled .semi-select-selection,
170
171
  .semi-select-disabled .semi-select-selection-placeholder {
@@ -37,6 +37,7 @@ $overflowList: #{$prefix}-overflow-list;
37
37
  &:focus {
38
38
  border: $width-select-border-focus solid $color-select-border-focus;
39
39
  background-color: $color-select-bg-focus;
40
+ // background-color: plum;
40
41
  outline: 0;
41
42
  }
42
43
 
@@ -125,7 +126,8 @@ $overflowList: #{$prefix}-overflow-list;
125
126
 
126
127
  &:focus {
127
128
  // when select is disabled, the border should not have active color
128
- border: $width-select-border-focus solid transparent;
129
+ border: $width-select-border-focus solid $color-select_input_disabled-border-focus;
130
+ background-color: $color-select_input_disabled-bg-focus;
129
131
  }
130
132
 
131
133
  .#{$module}-selection,
@@ -37,8 +37,11 @@ $color-select_clearBtn-text-hover: var(--semi-color-primary); // 选择器输入
37
37
  $color-select_input-bg-default: transparent; // 选择器输入框清空按钮颜色 - 悬停态
38
38
  $color-select_input_disabled-bg: var(--semi-color-disabled-fill); // 禁用选择器输入框背景色
39
39
  $color-select_input_disabled-border: var(--semi-color-border); // 禁用选择器输入框描边颜色
40
+ $color-select_input_disabled-border-focus: transparent; // 禁用选择器输入框描边颜色 - 聚焦态
40
41
  $color-select_input_disabled-text: var(--semi-color-disabled-text); // 禁用选择器输入框回填内容文字颜色
41
42
  $color-select_input_disabled-bg-hover: var(--semi-color-disabled-fill); // 选择器输入框回填内容文字颜色 - 悬停态
43
+ $color-select_input_disabled-bg-focus: var(--semi-color-disabled-fill); // 选择器输入框回填内容文字颜色 - 聚焦态
44
+
42
45
  $color-select_input_placeholder-text: var(--semi-color-text-2); // 选择器输入框占位文本文字颜色
43
46
 
44
47
  $color-select_option_main-text: var(--semi-color-text-0); // 选择器菜单选项文本颜色
package/package.json CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "@douyinfe/semi-foundation",
3
- "version": "2.67.1",
3
+ "version": "2.67.2-alpha.1",
4
4
  "description": "",
5
5
  "scripts": {
6
6
  "build:lib": "node ./scripts/compileLib.js",
7
7
  "prepublishOnly": "npm run build:lib"
8
8
  },
9
9
  "dependencies": {
10
- "@douyinfe/semi-animation": "2.67.1",
10
+ "@douyinfe/semi-animation": "2.67.0",
11
11
  "@mdx-js/mdx": "^3.0.1",
12
12
  "async-validator": "^3.5.0",
13
13
  "classnames": "^2.2.6",
@@ -28,7 +28,7 @@
28
28
  "*.scss",
29
29
  "*.css"
30
30
  ],
31
- "gitHead": "3582ea01a35b6f6c9db326d74c3181697f66d1b1",
31
+ "gitHead": "3f08368852c402daca35bf5ff4a192e841ea4dd3",
32
32
  "devDependencies": {
33
33
  "@babel/plugin-transform-runtime": "^7.15.8",
34
34
  "@babel/preset-env": "^7.15.8",
@@ -400,14 +400,9 @@ export default class SelectFoundation extends BaseFoundation<SelectAdapter> {
400
400
  close(closeConfig?: { event?: any; closeCb?: () => void; notToggleInput?: boolean }) {
401
401
  // to support A11y, closing the panel trigger does not necessarily lose focus
402
402
  const { event, closeCb, notToggleInput } = closeConfig || {};
403
- const { isFocus } = this.getStates();
404
403
  this._adapter.closeMenu();
405
404
  this._adapter.notifyDropdownVisibleChange(false);
406
405
  this._adapter.setIsFocusInContainer(false);
407
- if (isFocus) {
408
- // if the isFocus state is true, refocus the trigger case see in https://github.com/DouyinFE/semi-design/issues/2465
409
- this._focusTrigger();
410
- }
411
406
  // this.unBindKeyBoardEvent();
412
407
  // this._notifyBlur(e);
413
408
  // this._adapter.updateFocusState(false);
@@ -443,6 +438,7 @@ export default class SelectFoundation extends BaseFoundation<SelectAdapter> {
443
438
  const isMultiple = this._isMultiple();
444
439
  if (!isMultiple) {
445
440
  this._handleSingleSelect(option, event);
441
+ this._focusTrigger();
446
442
  } else {
447
443
  this._handleMultipleSelect(option, event);
448
444
  }
@@ -37,6 +37,7 @@ $overflowList: #{$prefix}-overflow-list;
37
37
  &:focus {
38
38
  border: $width-select-border-focus solid $color-select-border-focus;
39
39
  background-color: $color-select-bg-focus;
40
+ // background-color: plum;
40
41
  outline: 0;
41
42
  }
42
43
 
@@ -125,7 +126,8 @@ $overflowList: #{$prefix}-overflow-list;
125
126
 
126
127
  &:focus {
127
128
  // when select is disabled, the border should not have active color
128
- border: $width-select-border-focus solid transparent;
129
+ border: $width-select-border-focus solid $color-select_input_disabled-border-focus;
130
+ background-color: $color-select_input_disabled-bg-focus;
129
131
  }
130
132
 
131
133
  .#{$module}-selection,
@@ -37,8 +37,11 @@ $color-select_clearBtn-text-hover: var(--semi-color-primary); // 选择器输入
37
37
  $color-select_input-bg-default: transparent; // 选择器输入框清空按钮颜色 - 悬停态
38
38
  $color-select_input_disabled-bg: var(--semi-color-disabled-fill); // 禁用选择器输入框背景色
39
39
  $color-select_input_disabled-border: var(--semi-color-border); // 禁用选择器输入框描边颜色
40
+ $color-select_input_disabled-border-focus: transparent; // 禁用选择器输入框描边颜色 - 聚焦态
40
41
  $color-select_input_disabled-text: var(--semi-color-disabled-text); // 禁用选择器输入框回填内容文字颜色
41
42
  $color-select_input_disabled-bg-hover: var(--semi-color-disabled-fill); // 选择器输入框回填内容文字颜色 - 悬停态
43
+ $color-select_input_disabled-bg-focus: var(--semi-color-disabled-fill); // 选择器输入框回填内容文字颜色 - 聚焦态
44
+
42
45
  $color-select_input_placeholder-text: var(--semi-color-text-2); // 选择器输入框占位文本文字颜色
43
46
 
44
47
  $color-select_option_main-text: var(--semi-color-text-0); // 选择器菜单选项文本颜色