@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.
- package/datePicker/foundation.ts +19 -14
- package/lib/cjs/datePicker/foundation.d.ts +6 -2
- package/lib/cjs/datePicker/foundation.js +24 -17
- package/lib/cjs/select/foundation.js +1 -7
- package/lib/cjs/select/select.css +1 -0
- package/lib/cjs/select/select.scss +3 -1
- package/lib/cjs/select/variables.scss +3 -0
- package/lib/es/datePicker/foundation.d.ts +6 -2
- package/lib/es/datePicker/foundation.js +24 -17
- package/lib/es/select/foundation.js +1 -7
- package/lib/es/select/select.css +1 -0
- package/lib/es/select/select.scss +3 -1
- package/lib/es/select/variables.scss +3 -0
- package/package.json +3 -3
- package/select/foundation.ts +1 -5
- package/select/select.scss +3 -1
- package/select/variables.scss +3 -0
package/datePicker/foundation.ts
CHANGED
|
@@ -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
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
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
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
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
|
}
|
|
@@ -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
|
|
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
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
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
|
}
|
package/lib/es/select/select.css
CHANGED
|
@@ -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
|
|
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.
|
|
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": "
|
|
31
|
+
"gitHead": "3f08368852c402daca35bf5ff4a192e841ea4dd3",
|
|
32
32
|
"devDependencies": {
|
|
33
33
|
"@babel/plugin-transform-runtime": "^7.15.8",
|
|
34
34
|
"@babel/preset-env": "^7.15.8",
|
package/select/foundation.ts
CHANGED
|
@@ -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
|
}
|
package/select/select.scss
CHANGED
|
@@ -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
|
|
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,
|
package/select/variables.scss
CHANGED
|
@@ -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); // 选择器菜单选项文本颜色
|