@douyinfe/semi-foundation 2.34.1-alpha.3 → 2.34.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.
Files changed (65) hide show
  1. package/breadcrumb/breadcrumb.scss +4 -4
  2. package/calendar/eventUtil.ts +9 -7
  3. package/calendar/foundation.ts +4 -4
  4. package/card/card.scss +1 -2
  5. package/cascader/foundation.ts +24 -13
  6. package/lib/cjs/breadcrumb/breadcrumb.css +0 -3
  7. package/lib/cjs/breadcrumb/breadcrumb.scss +4 -4
  8. package/lib/cjs/calendar/eventUtil.d.ts +7 -6
  9. package/lib/cjs/calendar/eventUtil.js +8 -6
  10. package/lib/cjs/calendar/foundation.d.ts +2 -2
  11. package/lib/cjs/calendar/foundation.js +2 -2
  12. package/lib/cjs/card/card.css +1 -1
  13. package/lib/cjs/card/card.scss +1 -2
  14. package/lib/cjs/cascader/foundation.d.ts +3 -1
  15. package/lib/cjs/cascader/foundation.js +26 -8
  16. package/lib/cjs/radio/radio.css +1 -0
  17. package/lib/cjs/radio/radio.scss +1 -0
  18. package/lib/cjs/steps/bacisSteps.scss +2 -2
  19. package/lib/cjs/steps/fillSteps.scss +3 -3
  20. package/lib/cjs/steps/steps.css +12 -12
  21. package/lib/cjs/table/foundation.d.ts +5 -0
  22. package/lib/cjs/table/table.css +23 -5
  23. package/lib/cjs/table/table.scss +25 -5
  24. package/lib/cjs/table/utils.d.ts +2 -0
  25. package/lib/cjs/table/utils.js +6 -0
  26. package/lib/cjs/timePicker/foundation.js +15 -1
  27. package/lib/cjs/typography/typography.css +8 -0
  28. package/lib/cjs/typography/typography.scss +13 -0
  29. package/lib/cjs/utils/date-fns-extra.d.ts +4 -0
  30. package/lib/cjs/utils/date-fns-extra.js +66 -3
  31. package/lib/es/breadcrumb/breadcrumb.css +0 -3
  32. package/lib/es/breadcrumb/breadcrumb.scss +4 -4
  33. package/lib/es/calendar/eventUtil.d.ts +7 -6
  34. package/lib/es/calendar/eventUtil.js +8 -6
  35. package/lib/es/calendar/foundation.d.ts +2 -2
  36. package/lib/es/calendar/foundation.js +2 -2
  37. package/lib/es/card/card.css +1 -1
  38. package/lib/es/card/card.scss +1 -2
  39. package/lib/es/cascader/foundation.d.ts +3 -1
  40. package/lib/es/cascader/foundation.js +26 -8
  41. package/lib/es/radio/radio.css +1 -0
  42. package/lib/es/radio/radio.scss +1 -0
  43. package/lib/es/steps/bacisSteps.scss +2 -2
  44. package/lib/es/steps/fillSteps.scss +3 -3
  45. package/lib/es/steps/steps.css +12 -12
  46. package/lib/es/table/foundation.d.ts +5 -0
  47. package/lib/es/table/table.css +23 -5
  48. package/lib/es/table/table.scss +25 -5
  49. package/lib/es/table/utils.d.ts +2 -0
  50. package/lib/es/table/utils.js +5 -0
  51. package/lib/es/timePicker/foundation.js +14 -1
  52. package/lib/es/typography/typography.css +8 -0
  53. package/lib/es/typography/typography.scss +13 -0
  54. package/lib/es/utils/date-fns-extra.d.ts +4 -0
  55. package/lib/es/utils/date-fns-extra.js +61 -0
  56. package/package.json +2 -2
  57. package/radio/radio.scss +1 -0
  58. package/steps/bacisSteps.scss +2 -2
  59. package/steps/fillSteps.scss +3 -3
  60. package/table/foundation.ts +6 -2
  61. package/table/table.scss +25 -5
  62. package/table/utils.ts +6 -0
  63. package/timePicker/foundation.ts +12 -3
  64. package/typography/typography.scss +13 -0
  65. package/utils/date-fns-extra.ts +56 -0
@@ -82,14 +82,14 @@ $module: #{$prefix}-breadcrumb;
82
82
  }
83
83
  }
84
84
 
85
- &-item-icon+&-item-title {
86
- margin-left: $spacing-breadcrumb_item_text-marginLeft;
87
- }
85
+ // &-item-icon+&-item-title {
86
+ // margin-left: $spacing-breadcrumb_item_text-marginLeft;
87
+ // }
88
88
 
89
89
  &-item-link {
90
90
  display: inline-flex;
91
91
  align-items: center;
92
- column-gap: 4px;
92
+ column-gap: $spacing-breadcrumb_item_text-marginLeft;
93
93
  text-decoration: inherit;
94
94
  transition: color $transition_duration-breadcrumb_link-text $transition-function_breadcrumb_link-text $transition_delay-breadcrumb_link-text;
95
95
  transform: scale($transform_scale-breadcrumb_link-text);
@@ -96,9 +96,9 @@ export interface DateObj {
96
96
  month: string
97
97
  }
98
98
 
99
- export type weeekStartsOnEnum = 0 | 1 | 2 | 3 | 4 | 5 | 6;
99
+ export type weekStartsOnEnum = 0 | 1 | 2 | 3 | 4 | 5 | 6;
100
100
 
101
- export const calcRangeData = (value: Date, start: Date, rangeLen: number, mode: string, locale: Locale, weekStartsOn: weeekStartsOnEnum) => {
101
+ export const calcRangeData = (value: Date, start: Date, rangeLen: number, mode: string, locale: Locale, weekStartsOn: weekStartsOnEnum) => {
102
102
  const today = getCurrDate();
103
103
  const arr: Array<DateObj> = [];
104
104
  [...Array(rangeLen).keys()].map(ind => {
@@ -121,15 +121,17 @@ export const calcRangeData = (value: Date, start: Date, rangeLen: number, mode:
121
121
 
122
122
  /**
123
123
  *
124
- * @param {value} date
124
+ * @param {Date} date
125
+ * @param {Date} monthStart current month start date, using for month mode
125
126
  * @param {string} mode
126
127
  * @param {string} locale
127
128
  * @returns {object[]} { date: Date, dayString: string, ind: number, isToday: boolean, isWeekend: boolean, weekday: string }
128
129
  * create weekly object array
129
130
  */
130
- export const calcWeekData = (value: Date, mode = 'week', locale: Locale, weekStartsOn: weeekStartsOnEnum) => {
131
+ export const calcWeekData = (value: Date, monthStart: Date | null, mode = 'week', locale: Locale, weekStartsOn: weekStartsOnEnum) => {
131
132
  const start = startOfWeek(value, { weekStartsOn });
132
- return calcRangeData(value, start, 7, mode, locale, weekStartsOn);
133
+ const realValue = monthStart || value;
134
+ return calcRangeData(realValue, start, 7, mode, locale, weekStartsOn);
133
135
  };
134
136
 
135
137
  /**
@@ -250,7 +252,7 @@ export const filterEvents = (events: Map<string, EventObject[]>, start: Date, en
250
252
  * filter out event that is not in the week range
251
253
  */
252
254
  // eslint-disable-next-line max-len
253
- export const filterWeeklyEvents = (events: Map<string, EventObject[]>, weekStart: Date, weekStartsOn: weeekStartsOnEnum ) => filterEvents(events, weekStart, addDays(endOfWeek(weekStart, { weekStartsOn }), 1));
255
+ export const filterWeeklyEvents = (events: Map<string, EventObject[]>, weekStart: Date, weekStartsOn: weekStartsOnEnum ) => filterEvents(events, weekStart, addDays(endOfWeek(weekStart, { weekStartsOn }), 1));
254
256
 
255
257
  /**
256
258
  * @returns {arr}
@@ -309,7 +311,7 @@ export const parseWeeklyAllDayEvent = (
309
311
  startDate: Date,
310
312
  weekStart: Date,
311
313
  parsed: Array<Array<ParsedRangeEvent>>,
312
- weekStartsOn: weeekStartsOnEnum
314
+ weekStartsOn: weekStartsOnEnum
313
315
  ) => parseRangeAllDayEvent(event, startDate, weekStart, addDays(endOfWeek(startDate, { weekStartsOn }), 1), parsed);
314
316
 
315
317
 
@@ -33,9 +33,9 @@ import {
33
33
  DateObj,
34
34
  checkWeekend,
35
35
  } from './eventUtil';
36
- import type { weeekStartsOnEnum } from './eventUtil';
36
+ import type { weekStartsOnEnum } from './eventUtil';
37
37
 
38
- export { weeekStartsOnEnum };
38
+ export { weekStartsOnEnum };
39
39
  export interface EventObject {
40
40
  [x: string]: any;
41
41
  key: string;
@@ -191,7 +191,7 @@ export default class CalendarFoundation<P = Record<string, any>, S = Record<stri
191
191
  const data = {} as WeeklyData;
192
192
  const { weekStartsOn } = this.getProps();
193
193
  data.month = format(value, 'LLL', { locale: dateFnsLocale, weekStartsOn });
194
- data.week = calcWeekData(value, 'week', dateFnsLocale, weekStartsOn);
194
+ data.week = calcWeekData(value, null, 'week', dateFnsLocale, weekStartsOn);
195
195
  this._adapter.setWeeklyData(data);
196
196
  return data;
197
197
  }
@@ -212,7 +212,7 @@ export default class CalendarFoundation<P = Record<string, any>, S = Record<stri
212
212
  const { weekStartsOn } = this.getProps();
213
213
  const numberOfWeek = getWeeksInMonth(value, { weekStartsOn });
214
214
  [...Array(numberOfWeek).keys()].map(ind => {
215
- data[ind] = calcWeekData(addDays(monthStart, ind * 7), 'month', dateFnsLocale, weekStartsOn);
215
+ data[ind] = calcWeekData(addDays(monthStart, ind * 7), monthStart, 'month', dateFnsLocale, weekStartsOn);
216
216
  });
217
217
  this._adapter.setMonthlyData(data);
218
218
  return data;
package/card/card.scss CHANGED
@@ -45,8 +45,7 @@ $module: #{$prefix}-card;
45
45
  &-wrapper {
46
46
  display: flex;
47
47
  align-items: flex-start;
48
- flex-direction: row;
49
- // flex-direction: row-reverse;
48
+ flex-direction: row-reverse;
50
49
  justify-content: space-between;
51
50
 
52
51
  &-spacing {
@@ -92,9 +92,9 @@ export interface BasicTriggerRenderProps {
92
92
  * customized by triggerRender is updated to synchronize the state
93
93
  * with Cascader. */
94
94
  onSearch: (inputValue: string) => void;
95
- /* This function is the same as onSearch (supported since v2.32.0),
96
- * because this function was used before, and to align with TreeSelect,
97
- * use onSearch instead of onChange is more suitable,
95
+ /* This function is the same as onSearch (supported since v2.32.0),
96
+ * because this function was used before, and to align with TreeSelect,
97
+ * use onSearch instead of onChange is more suitable,
98
98
  * onChange needs to be deleted in the next Major
99
99
  */
100
100
  onChange: (inputValue: string) => void;
@@ -203,6 +203,7 @@ export interface CascaderAdapter extends DefaultAdapter<BasicCascaderProps, Basi
203
203
  updateInputValue: (value: string) => void;
204
204
  updateInputPlaceHolder: (value: string) => void;
205
205
  focusInput: () => void;
206
+ blurInput: () => void;
206
207
  registerClickOutsideHandler: (cb: (e: any) => void) => void;
207
208
  unregisterClickOutsideHandler: () => void;
208
209
  rePositionDropdown: () => void;
@@ -259,7 +260,7 @@ export default class CascaderFoundation extends BaseFoundation<CascaderAdapter,
259
260
  if (multiple) {
260
261
  const valuePath: BasicValue = [];
261
262
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
262
- // @ts-ignore
263
+ // @ts-ignore
263
264
  item.forEach((checkedKey: string) => {
264
265
  const valuePathItem = this.getItemPropPath(checkedKey, valueProp);
265
266
  valuePath.push(valuePathItem as any);
@@ -449,7 +450,7 @@ export default class CascaderFoundation extends BaseFoundation<CascaderAdapter,
449
450
  if (filterable && !multiple) {
450
451
  const displayText = this.renderDisplayText(selectedKey, keyEntities);
451
452
  updateStates.inputPlaceHolder = displayText;
452
- /*
453
+ /*
453
454
  * displayText should not be assign to inputValue,
454
455
  * cause inputValue should only change by user enter
455
456
  */
@@ -484,7 +485,7 @@ export default class CascaderFoundation extends BaseFoundation<CascaderAdapter,
484
485
  if (filterable && !multiple) {
485
486
  const displayText = this._defaultRenderText(valuePath);
486
487
  updateStates.inputPlaceHolder = displayText;
487
- /*
488
+ /*
488
489
  * displayText should not be assign to inputValue,
489
490
  * cause inputValue should only change by user enter
490
491
  */
@@ -555,20 +556,30 @@ export default class CascaderFoundation extends BaseFoundation<CascaderAdapter,
555
556
  this._notifyBlur(e);
556
557
  }
557
558
 
559
+ focus() {
560
+ const { filterTreeNode } = this.getProps();
561
+ if (filterTreeNode) {
562
+ this._adapter.focusInput();
563
+ }
564
+ this._adapter.updateFocusState(true);
565
+ }
566
+
567
+ blur() {
568
+ const { filterTreeNode } = this.getProps();
569
+ if (filterTreeNode) {
570
+ this._adapter.blurInput();
571
+ }
572
+ this._adapter.updateFocusState(false);
573
+ }
574
+
558
575
  toggle2SearchInput(isShow: boolean) {
559
576
  if (isShow) {
560
- this._adapter.toggleInputShow(isShow, () => this.focusInput());
577
+ this._adapter.toggleInputShow(isShow, () => this.focus());
561
578
  } else {
562
579
  this._adapter.toggleInputShow(isShow, () => undefined);
563
580
  }
564
581
  }
565
582
 
566
- focusInput() {
567
- this._adapter.focusInput();
568
- this._adapter.updateFocusState(true);
569
- }
570
-
571
-
572
583
  updateSearching = (isSearching: boolean)=>{
573
584
  this._adapter.updateStates({ isSearching: false });
574
585
  }
@@ -54,9 +54,6 @@
54
54
  .semi-breadcrumb-item-more svg {
55
55
  vertical-align: middle;
56
56
  }
57
- .semi-breadcrumb-item-icon + .semi-breadcrumb-item-title {
58
- margin-left: 4px;
59
- }
60
57
  .semi-breadcrumb-item-link {
61
58
  display: inline-flex;
62
59
  align-items: center;
@@ -82,14 +82,14 @@ $module: #{$prefix}-breadcrumb;
82
82
  }
83
83
  }
84
84
 
85
- &-item-icon+&-item-title {
86
- margin-left: $spacing-breadcrumb_item_text-marginLeft;
87
- }
85
+ // &-item-icon+&-item-title {
86
+ // margin-left: $spacing-breadcrumb_item_text-marginLeft;
87
+ // }
88
88
 
89
89
  &-item-link {
90
90
  display: inline-flex;
91
91
  align-items: center;
92
- column-gap: 4px;
92
+ column-gap: $spacing-breadcrumb_item_text-marginLeft;
93
93
  text-decoration: inherit;
94
94
  transition: color $transition_duration-breadcrumb_link-text $transition-function_breadcrumb_link-text $transition_delay-breadcrumb_link-text;
95
95
  transform: scale($transform_scale-breadcrumb_link-text);
@@ -30,17 +30,18 @@ export interface DateObj {
30
30
  isSameMonth: boolean;
31
31
  month: string;
32
32
  }
33
- export declare type weeekStartsOnEnum = 0 | 1 | 2 | 3 | 4 | 5 | 6;
34
- export declare const calcRangeData: (value: Date, start: Date, rangeLen: number, mode: string, locale: Locale, weekStartsOn: weeekStartsOnEnum) => DateObj[];
33
+ export declare type weekStartsOnEnum = 0 | 1 | 2 | 3 | 4 | 5 | 6;
34
+ export declare const calcRangeData: (value: Date, start: Date, rangeLen: number, mode: string, locale: Locale, weekStartsOn: weekStartsOnEnum) => DateObj[];
35
35
  /**
36
36
  *
37
- * @param {value} date
37
+ * @param {Date} date
38
+ * @param {Date} monthStart current month start date, using for month mode
38
39
  * @param {string} mode
39
40
  * @param {string} locale
40
41
  * @returns {object[]} { date: Date, dayString: string, ind: number, isToday: boolean, isWeekend: boolean, weekday: string }
41
42
  * create weekly object array
42
43
  */
43
- export declare const calcWeekData: (value: Date, mode: string, locale: Locale, weekStartsOn: weeekStartsOnEnum) => DateObj[];
44
+ export declare const calcWeekData: (value: Date, monthStart: Date | null, mode: string, locale: Locale, weekStartsOn: weekStartsOnEnum) => DateObj[];
44
45
  /**
45
46
  *
46
47
  * @param {object} event
@@ -74,7 +75,7 @@ export declare const filterEvents: (events: Map<string, EventObject[]>, start: D
74
75
  * @returns {arr}
75
76
  * filter out event that is not in the week range
76
77
  */
77
- export declare const filterWeeklyEvents: (events: Map<string, EventObject[]>, weekStart: Date, weekStartsOn: weeekStartsOnEnum) => Map<string, EventObject[]>;
78
+ export declare const filterWeeklyEvents: (events: Map<string, EventObject[]>, weekStart: Date, weekStartsOn: weekStartsOnEnum) => Map<string, EventObject[]>;
78
79
  /**
79
80
  * @returns {arr}
80
81
  * arrange and sort all day event for a range
@@ -84,7 +85,7 @@ export declare const parseRangeAllDayEvent: (event: EventObject[], startDate: Da
84
85
  * @returns {arr}
85
86
  * arrange and sort weekly all day event
86
87
  */
87
- export declare const parseWeeklyAllDayEvent: (event: EventObject[], startDate: Date, weekStart: Date, parsed: Array<Array<ParsedRangeEvent>>, weekStartsOn: weeekStartsOnEnum) => ParsedRangeEvent[][];
88
+ export declare const parseWeeklyAllDayEvent: (event: EventObject[], startDate: Date, weekStart: Date, parsed: Array<Array<ParsedRangeEvent>>, weekStartsOn: weekStartsOnEnum) => ParsedRangeEvent[][];
88
89
  export declare const collectDailyEvents: (events: ParsedRangeEvent[][]) => ParsedRangeEvent[][];
89
90
  export declare const renderDailyEvent: (event: EventObject) => {
90
91
  startPos: number;
@@ -127,7 +127,8 @@ const calcRangeData = (value, start, rangeLen, mode, locale, weekStartsOn) => {
127
127
  };
128
128
  /**
129
129
  *
130
- * @param {value} date
130
+ * @param {Date} date
131
+ * @param {Date} monthStart current month start date, using for month mode
131
132
  * @param {string} mode
132
133
  * @param {string} locale
133
134
  * @returns {object[]} { date: Date, dayString: string, ind: number, isToday: boolean, isWeekend: boolean, weekday: string }
@@ -137,14 +138,15 @@ const calcRangeData = (value, start, rangeLen, mode, locale, weekStartsOn) => {
137
138
 
138
139
  exports.calcRangeData = calcRangeData;
139
140
 
140
- const calcWeekData = function (value) {
141
- let mode = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'week';
142
- let locale = arguments.length > 2 ? arguments[2] : undefined;
143
- let weekStartsOn = arguments.length > 3 ? arguments[3] : undefined;
141
+ const calcWeekData = function (value, monthStart) {
142
+ let mode = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'week';
143
+ let locale = arguments.length > 3 ? arguments[3] : undefined;
144
+ let weekStartsOn = arguments.length > 4 ? arguments[4] : undefined;
144
145
  const start = (0, _dateFns.startOfWeek)(value, {
145
146
  weekStartsOn
146
147
  });
147
- return calcRangeData(value, start, 7, mode, locale, weekStartsOn);
148
+ const realValue = monthStart || value;
149
+ return calcRangeData(realValue, start, 7, mode, locale, weekStartsOn);
148
150
  };
149
151
  /**
150
152
  *
@@ -1,8 +1,8 @@
1
1
  import BaseFoundation, { DefaultAdapter } from '../base/foundation';
2
2
  import { Locale } from 'date-fns';
3
3
  import { DateObj } from './eventUtil';
4
- import type { weeekStartsOnEnum } from './eventUtil';
5
- export { weeekStartsOnEnum };
4
+ import type { weekStartsOnEnum } from './eventUtil';
5
+ export { weekStartsOnEnum };
6
6
  export interface EventObject {
7
7
  [x: string]: any;
8
8
  key: string;
@@ -119,7 +119,7 @@ class CalendarFoundation extends _foundation.default {
119
119
  locale: dateFnsLocale,
120
120
  weekStartsOn
121
121
  });
122
- data.week = (0, _eventUtil.calcWeekData)(value, 'week', dateFnsLocale, weekStartsOn);
122
+ data.week = (0, _eventUtil.calcWeekData)(value, null, 'week', dateFnsLocale, weekStartsOn);
123
123
 
124
124
  this._adapter.setWeeklyData(data);
125
125
 
@@ -154,7 +154,7 @@ class CalendarFoundation extends _foundation.default {
154
154
  weekStartsOn
155
155
  });
156
156
  [...Array(numberOfWeek).keys()].map(ind => {
157
- data[ind] = (0, _eventUtil.calcWeekData)((0, _dateFns.addDays)(monthStart, ind * 7), 'month', dateFnsLocale, weekStartsOn);
157
+ data[ind] = (0, _eventUtil.calcWeekData)((0, _dateFns.addDays)(monthStart, ind * 7), monthStart, 'month', dateFnsLocale, weekStartsOn);
158
158
  });
159
159
 
160
160
  this._adapter.setMonthlyData(data);
@@ -37,7 +37,7 @@
37
37
  .semi-card-header-wrapper {
38
38
  display: flex;
39
39
  align-items: flex-start;
40
- flex-direction: row;
40
+ flex-direction: row-reverse;
41
41
  justify-content: space-between;
42
42
  }
43
43
  .semi-card-header-wrapper-spacing {
@@ -45,8 +45,7 @@ $module: #{$prefix}-card;
45
45
  &-wrapper {
46
46
  display: flex;
47
47
  align-items: flex-start;
48
- flex-direction: row;
49
- // flex-direction: row-reverse;
48
+ flex-direction: row-reverse;
50
49
  justify-content: space-between;
51
50
 
52
51
  &-spacing {
@@ -149,6 +149,7 @@ export interface CascaderAdapter extends DefaultAdapter<BasicCascaderProps, Basi
149
149
  updateInputValue: (value: string) => void;
150
150
  updateInputPlaceHolder: (value: string) => void;
151
151
  focusInput: () => void;
152
+ blurInput: () => void;
152
153
  registerClickOutsideHandler: (cb: (e: any) => void) => void;
153
154
  unregisterClickOutsideHandler: () => void;
154
155
  rePositionDropdown: () => void;
@@ -196,8 +197,9 @@ export default class CascaderFoundation extends BaseFoundation<CascaderAdapter,
196
197
  open(): void;
197
198
  reCalcActiveKeys(): void;
198
199
  close(e: any, key?: string): void;
200
+ focus(): void;
201
+ blur(): void;
199
202
  toggle2SearchInput(isShow: boolean): void;
200
- focusInput(): void;
201
203
  updateSearching: (isSearching: boolean) => void;
202
204
  handleItemClick(e: any, item: BasicEntity | BasicData): void;
203
205
  handleItemHover(e: any, item: BasicEntity): void;
@@ -79,7 +79,7 @@ class CascaderFoundation extends _foundation.default {
79
79
 
80
80
  if (multiple) {
81
81
  const valuePath = []; // eslint-disable-next-line @typescript-eslint/ban-ts-comment
82
- // @ts-ignore
82
+ // @ts-ignore
83
83
 
84
84
  item.forEach(checkedKey => {
85
85
  const valuePathItem = this.getItemPropPath(checkedKey, valueProp);
@@ -449,20 +449,38 @@ class CascaderFoundation extends _foundation.default {
449
449
  this._notifyBlur(e);
450
450
  }
451
451
 
452
+ focus() {
453
+ const {
454
+ filterTreeNode
455
+ } = this.getProps();
456
+
457
+ if (filterTreeNode) {
458
+ this._adapter.focusInput();
459
+ }
460
+
461
+ this._adapter.updateFocusState(true);
462
+ }
463
+
464
+ blur() {
465
+ const {
466
+ filterTreeNode
467
+ } = this.getProps();
468
+
469
+ if (filterTreeNode) {
470
+ this._adapter.blurInput();
471
+ }
472
+
473
+ this._adapter.updateFocusState(false);
474
+ }
475
+
452
476
  toggle2SearchInput(isShow) {
453
477
  if (isShow) {
454
- this._adapter.toggleInputShow(isShow, () => this.focusInput());
478
+ this._adapter.toggleInputShow(isShow, () => this.focus());
455
479
  } else {
456
480
  this._adapter.toggleInputShow(isShow, () => undefined);
457
481
  }
458
482
  }
459
483
 
460
- focusInput() {
461
- this._adapter.focusInput();
462
-
463
- this._adapter.updateFocusState(true);
464
- }
465
-
466
484
  handleItemClick(e, item) {
467
485
  const isDisabled = this._isDisabled();
468
486
 
@@ -301,6 +301,7 @@
301
301
  .semi-radioGroup-horizontal {
302
302
  display: inline-flex;
303
303
  flex-wrap: wrap;
304
+ vertical-align: bottom;
304
305
  gap: 16px;
305
306
  }
306
307
  .semi-radioGroup-buttonRadio {
@@ -416,6 +416,7 @@ $inner-width: $width-icon-medium;
416
416
  &-horizontal {
417
417
  display: inline-flex;
418
418
  flex-wrap: wrap;
419
+ vertical-align: bottom; // Fix 1573
419
420
  gap: $spacing-radio_group_horizontal-marginRight;
420
421
  }
421
422
 
@@ -173,7 +173,7 @@ $basicType: #{$module}-basic;
173
173
 
174
174
  transform:scale($transform_scale-step-item);
175
175
 
176
- &:hover {
176
+ &-hover:hover {
177
177
 
178
178
  .#{$item}-title {
179
179
  color: $color-steps_item_title-text-hover;
@@ -267,7 +267,7 @@ $basicType: #{$module}-basic;
267
267
  }
268
268
  }
269
269
 
270
- &:hover {
270
+ &-hover:hover {
271
271
  .#{$item}-left {
272
272
 
273
273
  .#{$item}-icon {
@@ -92,7 +92,7 @@ $module: #{$prefix}-steps;
92
92
  color: $color-steps_success-text-default;
93
93
  }
94
94
 
95
- &:hover {
95
+ &-hover:hover {
96
96
  background-color: $color-steps-bg-hover;
97
97
 
98
98
  .#{$prefix}-icon,
@@ -118,7 +118,7 @@ $module: #{$prefix}-steps;
118
118
  color: $color-steps_danger-text-default;
119
119
  }
120
120
 
121
- &:hover {
121
+ &-hover:hover {
122
122
  background: $color-steps-bg-hover;
123
123
 
124
124
  .#{$prefix}-icon,
@@ -144,7 +144,7 @@ $module: #{$prefix}-steps;
144
144
  color: $color-steps_warning-text-default;
145
145
  }
146
146
 
147
- &:hover {
147
+ &-hover:hover {
148
148
  background: $color-steps-bg-hover;
149
149
 
150
150
  .#{$module}-item-title,
@@ -64,11 +64,11 @@
64
64
  .semi-steps .semi-steps-item-finish .semi-steps-item-title {
65
65
  color: var(--semi-color-success);
66
66
  }
67
- .semi-steps .semi-steps-item-finish:hover {
67
+ .semi-steps .semi-steps-item-finish-hover:hover {
68
68
  background-color: var(--semi-color-fill-0);
69
69
  }
70
- .semi-steps .semi-steps-item-finish:hover .semi-icon,
71
- .semi-steps .semi-steps-item-finish:hover .semi-steps-item-title {
70
+ .semi-steps .semi-steps-item-finish-hover:hover .semi-icon,
71
+ .semi-steps .semi-steps-item-finish-hover:hover .semi-steps-item-title {
72
72
  color: var(--semi-color-success-hover);
73
73
  }
74
74
  .semi-steps .semi-steps-item-finish:active {
@@ -82,11 +82,11 @@
82
82
  .semi-steps .semi-steps-item-error .semi-steps-item-title {
83
83
  color: var(--semi-color-danger);
84
84
  }
85
- .semi-steps .semi-steps-item-error:hover {
85
+ .semi-steps .semi-steps-item-error-hover:hover {
86
86
  background: var(--semi-color-fill-0);
87
87
  }
88
- .semi-steps .semi-steps-item-error:hover .semi-icon,
89
- .semi-steps .semi-steps-item-error:hover .semi-steps-item-title {
88
+ .semi-steps .semi-steps-item-error-hover:hover .semi-icon,
89
+ .semi-steps .semi-steps-item-error-hover:hover .semi-steps-item-title {
90
90
  color: var(--semi-color-danger-hover);
91
91
  }
92
92
  .semi-steps .semi-steps-item-error:active {
@@ -100,11 +100,11 @@
100
100
  .semi-steps .semi-steps-item-warning .semi-icon {
101
101
  color: var(--semi-color-warning);
102
102
  }
103
- .semi-steps .semi-steps-item-warning:hover {
103
+ .semi-steps .semi-steps-item-warning-hover:hover {
104
104
  background: var(--semi-color-fill-0);
105
105
  }
106
- .semi-steps .semi-steps-item-warning:hover .semi-steps-item-title,
107
- .semi-steps .semi-steps-item-warning:hover .semi-icon {
106
+ .semi-steps .semi-steps-item-warning-hover:hover .semi-steps-item-title,
107
+ .semi-steps .semi-steps-item-warning-hover:hover .semi-icon {
108
108
  color: var(--semi-color-warning-hover);
109
109
  }
110
110
  .semi-steps .semi-steps-item-warning:active {
@@ -264,10 +264,10 @@
264
264
  transition: color var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none), background-color var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none);
265
265
  transform: scale(var(--semi-transform_scale-small));
266
266
  }
267
- .semi-steps-basic .semi-steps-item:hover .semi-steps-item-title {
267
+ .semi-steps-basic .semi-steps-item-hover:hover .semi-steps-item-title {
268
268
  color: var(--semi-color-focus-border);
269
269
  }
270
- .semi-steps-basic .semi-steps-item:hover .semi-steps-item-description {
270
+ .semi-steps-basic .semi-steps-item-hover:hover .semi-steps-item-description {
271
271
  color: var(--semi-color-focus-border);
272
272
  }
273
273
  .semi-steps-basic .semi-steps-item .semi-steps-item-container {
@@ -330,7 +330,7 @@
330
330
  background: var(--semi-color-fill-0);
331
331
  color: var(--semi-color-text-2);
332
332
  }
333
- .semi-steps-basic .semi-steps-item-wait:hover .semi-steps-item-left .semi-steps-item-icon .semi-steps-item-number-icon {
333
+ .semi-steps-basic .semi-steps-item-wait-hover:hover .semi-steps-item-left .semi-steps-item-icon .semi-steps-item-number-icon {
334
334
  background: var(--semi-color-secondary-light-default);
335
335
  color: var(--semi-color-focus-border);
336
336
  }
@@ -32,6 +32,7 @@ export interface BaseColumnProps<RecordType> {
32
32
  title?: any;
33
33
  useFullRender?: boolean;
34
34
  width?: string | number;
35
+ ellipsis?: BaseEllipsis;
35
36
  }
36
37
  export interface TableAdapter<RecordType> extends DefaultAdapter {
37
38
  resetScrollY: () => void;
@@ -81,6 +82,7 @@ export interface TableAdapter<RecordType> extends DefaultAdapter {
81
82
  getHandleColumns: () => (queries: BaseColumnProps<RecordType>[], cachedColumns: BaseColumnProps<RecordType>[]) => BaseColumnProps<RecordType>[];
82
83
  getMergePagination: () => (pagination: BasePagination) => BasePagination;
83
84
  setBodyHasScrollbar: (bodyHasScrollBar: boolean) => void;
85
+ getTableLayout: () => 'fixed' | 'auto';
84
86
  }
85
87
  declare class TableFoundation<RecordType> extends BaseFoundation<TableAdapter<RecordType>> {
86
88
  memoizedWithFnsColumns: (queries: BaseColumnProps<RecordType>[], cachedColumns: BaseColumnProps<RecordType>[], rowSelectionUpdate: boolean, hideExpandedColumn: boolean, bodyHasScrollBar: boolean) => BaseColumnProps<RecordType>[];
@@ -366,4 +368,7 @@ export interface BaseChangeInfoSorter<RecordType> {
366
368
  export declare type BaseIncludeGroupRecord<RecordType> = RecordType | {
367
369
  groupKey: string;
368
370
  };
371
+ export declare type BaseEllipsis = boolean | {
372
+ showTitle: boolean;
373
+ };
369
374
  export default TableFoundation;
@@ -94,6 +94,10 @@
94
94
  .semi-table-header-sticky .semi-table-thead > .semi-table-row > .semi-table-row-head {
95
95
  background-color: var(--semi-color-bg-1);
96
96
  }
97
+ .semi-table-operate-wrapper {
98
+ display: flex;
99
+ justify-content: flex-start;
100
+ }
97
101
  .semi-table-body {
98
102
  overflow: auto;
99
103
  width: 100%;
@@ -119,8 +123,7 @@
119
123
  padding-top: 8px;
120
124
  padding-bottom: 8px;
121
125
  vertical-align: middle;
122
- word-break: break-all;
123
- word-wrap: break-word;
126
+ overflow-wrap: break-word;
124
127
  position: relative;
125
128
  }
126
129
  .semi-table-thead > .semi-table-row > .semi-table-row-head.semi-table-cell-fixed-left, .semi-table-thead > .semi-table-row > .semi-table-row-head.semi-table-cell-fixed-right {
@@ -173,6 +176,16 @@
173
176
  display: inline-flex;
174
177
  align-items: center;
175
178
  }
179
+ .semi-table-thead > .semi-table-row > .semi-table-row-head-ellipsis {
180
+ overflow: hidden;
181
+ text-overflow: ellipsis;
182
+ white-space: nowrap;
183
+ }
184
+ .semi-table-thead > .semi-table-row > .semi-table-row-head-ellipsis .semi-table-row-head-title {
185
+ overflow: hidden;
186
+ text-overflow: ellipsis;
187
+ white-space: nowrap;
188
+ }
176
189
  .semi-table-thead > .semi-table-row .react-resizable {
177
190
  position: relative;
178
191
  background-clip: padding-box;
@@ -223,8 +236,7 @@
223
236
  }
224
237
  .semi-table-tbody > .semi-table-row > .semi-table-row-cell {
225
238
  display: table-cell;
226
- word-wrap: break-word;
227
- word-break: break-all;
239
+ overflow-wrap: break-word;
228
240
  border-left: none;
229
241
  border-right: none;
230
242
  border-bottom: 1px solid var(--semi-color-border);
@@ -236,6 +248,11 @@
236
248
  .semi-table-tbody > .semi-table-row > .semi-table-row-cell.resizing {
237
249
  border-right: 2px solid var(--semi-color-primary);
238
250
  }
251
+ .semi-table-tbody > .semi-table-row > .semi-table-row-cell-ellipsis {
252
+ overflow: hidden;
253
+ text-overflow: ellipsis;
254
+ white-space: nowrap;
255
+ }
239
256
  .semi-table-tbody > .semi-table-row.semi-table-row-expand > .semi-table-row-cell {
240
257
  background-color: var(--semi-color-fill-0);
241
258
  }
@@ -336,9 +353,10 @@
336
353
  text-align: center;
337
354
  }
338
355
  .semi-table .semi-table-column-sorter-wrapper {
339
- display: inline-flex;
356
+ display: flex;
340
357
  align-items: center;
341
358
  cursor: pointer;
359
+ overflow: hidden;
342
360
  }
343
361
  .semi-table .semi-table-column-sorter-up, .semi-table .semi-table-column-sorter-down {
344
362
  height: 0;