@douyinfe/semi-ui 2.34.0 → 2.34.1-alpha.3

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 (121) hide show
  1. package/dist/css/semi.css +21 -45
  2. package/dist/css/semi.min.css +1 -1
  3. package/dist/umd/semi-ui.js +41228 -40825
  4. package/dist/umd/semi-ui.js.map +1 -1
  5. package/dist/umd/semi-ui.min.js +1 -1
  6. package/dist/umd/semi-ui.min.js.map +1 -1
  7. package/lib/cjs/anchor/index.d.ts +1 -1
  8. package/lib/cjs/autoComplete/index.d.ts +1 -1
  9. package/lib/cjs/breadcrumb/item.js +1 -1
  10. package/lib/cjs/button/Button.d.ts +1 -1
  11. package/lib/cjs/button/buttonGroup.d.ts +1 -1
  12. package/lib/cjs/button/index.d.ts +1 -1
  13. package/lib/cjs/calendar/interface.d.ts +2 -2
  14. package/lib/cjs/card/index.d.ts +37 -4
  15. package/lib/cjs/card/index.js +248 -67
  16. package/lib/cjs/cascader/index.d.ts +0 -2
  17. package/lib/cjs/cascader/index.js +0 -13
  18. package/lib/cjs/datePicker/dateInput.d.ts +1 -1
  19. package/lib/cjs/datePicker/datePicker.d.ts +2 -2
  20. package/lib/cjs/datePicker/monthsGrid.d.ts +1 -1
  21. package/lib/cjs/datePicker/yearAndMonth.d.ts +1 -1
  22. package/lib/cjs/form/baseForm.d.ts +2 -2
  23. package/lib/cjs/form/field.d.ts +2 -2
  24. package/lib/cjs/form/group.js +2 -4
  25. package/lib/cjs/image/image.d.ts +0 -4
  26. package/lib/cjs/image/image.js +1 -23
  27. package/lib/cjs/image/preview.d.ts +1 -1
  28. package/lib/cjs/image/preview.js +16 -9
  29. package/lib/cjs/image/previewContext.d.ts +0 -1
  30. package/lib/cjs/input/index.d.ts +1 -1
  31. package/lib/cjs/input/inputGroup.d.ts +1 -1
  32. package/lib/cjs/modal/confirm.d.ts +19 -19
  33. package/lib/cjs/rating/index.d.ts +1 -1
  34. package/lib/cjs/rating/item.d.ts +1 -1
  35. package/lib/cjs/steps/basicStep.js +13 -7
  36. package/lib/cjs/steps/basicSteps.js +4 -2
  37. package/lib/cjs/steps/fillStep.js +13 -7
  38. package/lib/cjs/steps/fillSteps.js +3 -2
  39. package/lib/cjs/steps/index.d.ts +1 -0
  40. package/lib/cjs/steps/index.js +5 -2
  41. package/lib/cjs/steps/navStep.js +12 -4
  42. package/lib/cjs/steps/navSteps.js +4 -2
  43. package/lib/cjs/switch/index.d.ts +1 -1
  44. package/lib/cjs/table/Body/index.d.ts +0 -1
  45. package/lib/cjs/table/Body/index.js +3 -3
  46. package/lib/cjs/table/HeadTable.d.ts +4 -4
  47. package/lib/cjs/table/HeadTable.js +3 -3
  48. package/lib/cjs/table/Table.d.ts +2 -2
  49. package/lib/cjs/table/Table.js +14 -41
  50. package/lib/cjs/table/TableCell.js +3 -14
  51. package/lib/cjs/table/TableHeader.d.ts +0 -1
  52. package/lib/cjs/table/TableHeader.js +2 -11
  53. package/lib/cjs/table/TableHeaderRow.js +1 -2
  54. package/lib/cjs/table/index.d.ts +1 -1
  55. package/lib/cjs/table/interface.d.ts +1 -2
  56. package/lib/cjs/tagInput/index.d.ts +1 -1
  57. package/lib/cjs/timePicker/TimePicker.d.ts +1 -1
  58. package/lib/cjs/timePicker/index.d.ts +1 -1
  59. package/lib/cjs/typography/base.d.ts +2 -1
  60. package/lib/cjs/typography/base.js +68 -66
  61. package/lib/cjs/typography/title.d.ts +1 -1
  62. package/lib/cjs/typography/util.d.ts +1 -4
  63. package/lib/cjs/typography/util.js +13 -36
  64. package/lib/es/anchor/index.d.ts +1 -1
  65. package/lib/es/autoComplete/index.d.ts +1 -1
  66. package/lib/es/breadcrumb/item.js +1 -1
  67. package/lib/es/button/Button.d.ts +1 -1
  68. package/lib/es/button/buttonGroup.d.ts +1 -1
  69. package/lib/es/button/index.d.ts +1 -1
  70. package/lib/es/calendar/interface.d.ts +2 -2
  71. package/lib/es/card/index.d.ts +37 -4
  72. package/lib/es/card/index.js +247 -66
  73. package/lib/es/cascader/index.d.ts +0 -2
  74. package/lib/es/cascader/index.js +0 -13
  75. package/lib/es/datePicker/dateInput.d.ts +1 -1
  76. package/lib/es/datePicker/datePicker.d.ts +2 -2
  77. package/lib/es/datePicker/monthsGrid.d.ts +1 -1
  78. package/lib/es/datePicker/yearAndMonth.d.ts +1 -1
  79. package/lib/es/form/baseForm.d.ts +2 -2
  80. package/lib/es/form/field.d.ts +2 -2
  81. package/lib/es/form/group.js +2 -4
  82. package/lib/es/image/image.d.ts +0 -4
  83. package/lib/es/image/image.js +1 -23
  84. package/lib/es/image/preview.d.ts +1 -1
  85. package/lib/es/image/preview.js +16 -9
  86. package/lib/es/image/previewContext.d.ts +0 -1
  87. package/lib/es/input/index.d.ts +1 -1
  88. package/lib/es/input/inputGroup.d.ts +1 -1
  89. package/lib/es/modal/confirm.d.ts +19 -19
  90. package/lib/es/rating/index.d.ts +1 -1
  91. package/lib/es/rating/item.d.ts +1 -1
  92. package/lib/es/steps/basicStep.js +12 -7
  93. package/lib/es/steps/basicSteps.js +4 -2
  94. package/lib/es/steps/fillStep.js +12 -7
  95. package/lib/es/steps/fillSteps.js +3 -2
  96. package/lib/es/steps/index.d.ts +1 -0
  97. package/lib/es/steps/index.js +3 -0
  98. package/lib/es/steps/navStep.js +11 -4
  99. package/lib/es/steps/navSteps.js +4 -2
  100. package/lib/es/switch/index.d.ts +1 -1
  101. package/lib/es/table/Body/index.d.ts +0 -1
  102. package/lib/es/table/Body/index.js +3 -3
  103. package/lib/es/table/HeadTable.d.ts +4 -4
  104. package/lib/es/table/HeadTable.js +3 -3
  105. package/lib/es/table/Table.d.ts +2 -2
  106. package/lib/es/table/Table.js +14 -41
  107. package/lib/es/table/TableCell.js +4 -15
  108. package/lib/es/table/TableHeader.d.ts +0 -1
  109. package/lib/es/table/TableHeader.js +1 -9
  110. package/lib/es/table/TableHeaderRow.js +1 -2
  111. package/lib/es/table/index.d.ts +1 -1
  112. package/lib/es/table/interface.d.ts +1 -2
  113. package/lib/es/tagInput/index.d.ts +1 -1
  114. package/lib/es/timePicker/TimePicker.d.ts +1 -1
  115. package/lib/es/timePicker/index.d.ts +1 -1
  116. package/lib/es/typography/base.d.ts +2 -1
  117. package/lib/es/typography/base.js +67 -64
  118. package/lib/es/typography/title.d.ts +1 -1
  119. package/lib/es/typography/util.d.ts +1 -4
  120. package/lib/es/typography/util.js +14 -36
  121. package/package.json +9 -8
@@ -5,8 +5,6 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = void 0;
7
7
 
8
- var _omit2 = _interopRequireDefault(require("lodash/omit"));
9
-
10
8
  var _reactDom = _interopRequireDefault(require("react-dom"));
11
9
 
12
10
  var _react = _interopRequireDefault(require("react"));
@@ -62,7 +60,6 @@ const getRenderText = function (originEle, rows) {
62
60
  const lineHeight = pxToNumber(originStyle.lineHeight);
63
61
  const maxHeight = Math.round(lineHeight * (rows + 1) + pxToNumber(originStyle.paddingTop) + pxToNumber(originStyle.paddingBottom)); // Set shadow
64
62
 
65
- const maxWidth = parseInt(originStyle.width);
66
63
  ellipsisContainer.setAttribute('style', originCSS);
67
64
  ellipsisContainer.style.position = 'fixed';
68
65
  ellipsisContainer.style.left = '0';
@@ -77,32 +74,20 @@ const getRenderText = function (originEle, rows) {
77
74
 
78
75
 
79
76
  function inRange() {
80
- if (originStyle.whiteSpace === 'nowrap') {
81
- return ellipsisContainer.scrollWidth <= maxWidth;
82
- }
83
-
77
+ // console.log('inrange?', ellipsisContainer.scrollHeight, ellipsisContainer.scrollHeight < maxHeight)
84
78
  return ellipsisContainer.scrollHeight < maxHeight;
85
79
  } // ========================= Find match ellipsis content =========================
86
80
  // Create origin content holder
87
81
 
88
82
 
89
83
  const ellipsisContentHolder = document.createElement('span');
90
- const textNode = document.createTextNode(content);
91
- ellipsisContentHolder.appendChild(textNode);
92
-
93
- if (suffix.length > 0) {
94
- const ellipsisTextNode = document.createTextNode(suffix);
95
- ellipsisContentHolder.appendChild(ellipsisTextNode);
96
- }
84
+ const ellipsisTextNode = document.createTextNode(suffix);
85
+ ellipsisContentHolder.appendChild(ellipsisTextNode);
86
+ ellipsisContainer.appendChild(ellipsisContentHolder);
87
+ fixedContent.map(node => node && ellipsisContainer.appendChild(node.cloneNode(true))); // Append before fixed nodes
97
88
 
98
- ellipsisContainer.appendChild(ellipsisContentHolder); // Expand node needs to be added only when text needTruncated
99
-
100
- Object.values((0, _omit2.default)(fixedContent, 'expand')).map(node => node && ellipsisContainer.appendChild(node.cloneNode(true)));
101
-
102
- function appendExpandNode() {
103
- ellipsisContainer.innerHTML = '';
104
- ellipsisContainer.appendChild(ellipsisContentHolder);
105
- Object.values(fixedContent).map(node => node && ellipsisContainer.appendChild(node.cloneNode(true)));
89
+ function appendChildNode(node) {
90
+ ellipsisContentHolder.insertBefore(node, ellipsisTextNode);
106
91
  }
107
92
 
108
93
  function getCurrentText(text, pos) {
@@ -112,7 +97,7 @@ const getRenderText = function (originEle, rows) {
112
97
  return ellipsisStr;
113
98
  }
114
99
 
115
- if (ellipsisPos === 'end') {
100
+ if (ellipsisPos === 'end' || pos > end - pos) {
116
101
  return text.slice(0, pos) + ellipsisStr;
117
102
  }
118
103
 
@@ -134,8 +119,8 @@ const getRenderText = function (originEle, rows) {
134
119
  const currentStepText = getCurrentText(fullText, step);
135
120
  textNode.textContent = currentStepText;
136
121
 
137
- if (inRange()) {
138
- return currentStepText;
122
+ if (inRange() || !currentStepText) {
123
+ return step === fullText.length ? fullText : currentStepText;
139
124
  }
140
125
  }
141
126
  } else if (endLoc === 0) {
@@ -149,17 +134,9 @@ const getRenderText = function (originEle, rows) {
149
134
  return measureText(textNode, fullText, startLoc, midLoc, lastSuccessLoc);
150
135
  }
151
136
 
152
- let resText = content; // First judge whether the total length of fullText, plus suffix (possible)
153
- // and copied icon (possible) meets expectations?
154
- // If it does not meet expectations, add an expand button to find the largest content that meets size limit
155
- // 首先判断总文本长度,加上可能有的 suffix,复制按钮长度,看结果是否符合预期
156
- // 如果不符合预期,则再加上展开按钮,找最大符合尺寸的内容
157
-
158
- if (!inRange()) {
159
- appendExpandNode();
160
- resText = measureText(textNode, content, 0, ellipsisPos === 'middle' ? Math.floor(content.length / 2) : content.length);
161
- }
162
-
137
+ const textNode = document.createTextNode(content);
138
+ appendChildNode(textNode);
139
+ const resText = measureText(textNode, content);
163
140
  ellipsisContainer.innerHTML = '';
164
141
  return resText;
165
142
  };
@@ -39,7 +39,7 @@ declare class Anchor extends BaseComponent<AnchorProps, AnchorState> {
39
39
  static contextType: React.Context<ContextValue>;
40
40
  static Link: typeof Link;
41
41
  static PropTypes: {
42
- size: PropTypes.Requireable<"default" | "small">;
42
+ size: PropTypes.Requireable<"small" | "default">;
43
43
  railTheme: PropTypes.Requireable<"primary" | "tertiary" | "muted">;
44
44
  className: PropTypes.Requireable<string>;
45
45
  style: PropTypes.Requireable<object>;
@@ -125,7 +125,7 @@ declare class AutoComplete<T extends AutoCompleteItems> extends BaseComponent<Au
125
125
  renderSelectedItem: PropTypes.Requireable<(...args: any[]) => any>;
126
126
  suffix: PropTypes.Requireable<PropTypes.ReactNodeLike>;
127
127
  showClear: PropTypes.Requireable<boolean>;
128
- size: PropTypes.Requireable<"default" | "small" | "large">;
128
+ size: PropTypes.Requireable<"small" | "default" | "large">;
129
129
  style: PropTypes.Requireable<object>;
130
130
  stopPropagation: PropTypes.Requireable<NonNullable<string | boolean>>;
131
131
  maxHeight: PropTypes.Requireable<NonNullable<string | number>>;
@@ -111,7 +111,7 @@ export default class BreadcrumbItem extends BaseComponent {
111
111
  },
112
112
  // icon={this.renderIcon(icon)}
113
113
  style: {
114
- maxWidth: width
114
+ width
115
115
  },
116
116
  size: compact ? 'small' : 'normal'
117
117
  }, children)));
@@ -47,7 +47,7 @@ export default class Button extends PureComponent<ButtonProps> {
47
47
  disabled: PropTypes.Requireable<boolean>;
48
48
  prefixCls: PropTypes.Requireable<string>;
49
49
  style: PropTypes.Requireable<object>;
50
- size: PropTypes.Requireable<"default" | "small" | "large">;
50
+ size: PropTypes.Requireable<"small" | "default" | "large">;
51
51
  type: PropTypes.Requireable<"warning" | "primary" | "tertiary" | "secondary" | "danger">;
52
52
  block: PropTypes.Requireable<boolean>;
53
53
  onClick: PropTypes.Requireable<(...args: any[]) => any>;
@@ -18,7 +18,7 @@ export default class ButtonGroup extends BaseComponent<ButtonGroupProps> {
18
18
  children: PropTypes.Requireable<PropTypes.ReactNodeLike>;
19
19
  disabled: PropTypes.Requireable<boolean>;
20
20
  type: PropTypes.Requireable<string>;
21
- size: PropTypes.Requireable<"default" | "small" | "large">;
21
+ size: PropTypes.Requireable<"small" | "default" | "large">;
22
22
  theme: PropTypes.Requireable<"solid" | "light" | "borderless">;
23
23
  'aria-label': PropTypes.Requireable<string>;
24
24
  };
@@ -22,7 +22,7 @@ declare class Button extends React.PureComponent<ButtonProps> {
22
22
  onMouseEnter: import("prop-types").Requireable<(...args: any[]) => any>;
23
23
  onMouseLeave: import("prop-types").Requireable<(...args: any[]) => any>;
24
24
  disabled: import("prop-types").Requireable<boolean>;
25
- size: import("prop-types").Requireable<"default" | "small" | "large">;
25
+ size: import("prop-types").Requireable<"small" | "default" | "large">;
26
26
  type: import("prop-types").Requireable<"warning" | "primary" | "tertiary" | "secondary" | "danger">;
27
27
  block: import("prop-types").Requireable<boolean>;
28
28
  onClick: import("prop-types").Requireable<(...args: any[]) => any>;
@@ -2,7 +2,7 @@
2
2
  import { strings } from '@douyinfe/semi-foundation/lib/es/calendar/constants';
3
3
  import type { ArrayElement } from '../_base/base';
4
4
  import type { BaseProps } from '../_base/baseComponent';
5
- import type { EventObject, weekStartsOnEnum } from '@douyinfe/semi-foundation/lib/es/calendar/foundation';
5
+ import type { EventObject, weeekStartsOnEnum } from '@douyinfe/semi-foundation/lib/es/calendar/foundation';
6
6
  export interface CalendarProps extends BaseProps {
7
7
  displayValue?: Date;
8
8
  range?: Date[];
@@ -10,7 +10,7 @@ export interface CalendarProps extends BaseProps {
10
10
  events?: EventObject[];
11
11
  mode?: ArrayElement<typeof strings.MODE>;
12
12
  showCurrTime?: boolean;
13
- weekStartsOn?: weekStartsOnEnum;
13
+ weekStartsOn?: weeekStartsOnEnum;
14
14
  scrollTop?: number;
15
15
  onClick?: (e: React.MouseEvent, value: Date) => void;
16
16
  onClose?: (e: React.MouseEvent) => void;
@@ -42,8 +42,45 @@ export interface CardProps {
42
42
  /** aria label */
43
43
  'aria-label'?: string;
44
44
  }
45
+ export interface CardHeaderProps {
46
+ title?: ReactNode;
47
+ headerExtraContent?: ReactNode;
48
+ header?: ReactNode;
49
+ headerLine?: boolean;
50
+ headerStyle?: CSSProperties;
51
+ }
52
+ export interface CardFooterProps {
53
+ footer?: ReactNode;
54
+ footerLine?: boolean;
55
+ footerStyle?: CSSProperties;
56
+ }
57
+ export interface CardBodyProps {
58
+ cover: ReactNode;
59
+ children: ReactNode;
60
+ actions: ReactNode[];
61
+ loading: boolean;
62
+ bodyStyle?: CSSProperties;
63
+ style?: CSSProperties;
64
+ }
65
+ declare class Header extends PureComponent<CardHeaderProps> {
66
+ static elementType: string;
67
+ render(): JSX.Element;
68
+ }
69
+ declare class Footer extends PureComponent<CardFooterProps> {
70
+ static elementType: string;
71
+ render(): JSX.Element;
72
+ }
73
+ declare class Body extends PureComponent<CardBodyProps> {
74
+ static elementType: string;
75
+ renderCover: () => ReactNode;
76
+ renderBody: () => ReactNode;
77
+ render(): JSX.Element;
78
+ }
45
79
  declare class Card extends PureComponent<CardProps> {
46
80
  static Meta: typeof Meta;
81
+ static Header: typeof Header;
82
+ static Footer: typeof Footer;
83
+ static Body: typeof Body;
47
84
  static propTypes: {
48
85
  actions: PropTypes.Requireable<any[]>;
49
86
  bodyStyle: PropTypes.Requireable<object>;
@@ -70,10 +107,6 @@ declare class Card extends PureComponent<CardProps> {
70
107
  headerLine: boolean;
71
108
  loading: boolean;
72
109
  };
73
- renderHeader: () => ReactNode;
74
- renderCover: () => ReactNode;
75
- renderBody: () => ReactNode;
76
- renderFooter: () => ReactNode;
77
110
  render(): ReactNode;
78
111
  }
79
112
  export default Card;
@@ -1,5 +1,4 @@
1
1
  import _isString from "lodash/isString";
2
- import _omit from "lodash/omit";
3
2
 
4
3
  var __rest = this && this.__rest || function (s, e) {
5
4
  var t = {};
@@ -23,53 +22,75 @@ import Typography from '../typography';
23
22
  import Space from '../space';
24
23
  const prefixcls = cssClasses.PREFIX;
25
24
 
26
- class Card extends PureComponent {
25
+ class Header extends PureComponent {
26
+ render() {
27
+ const {
28
+ title,
29
+ headerExtraContent,
30
+ header,
31
+ headerLine,
32
+ headerStyle
33
+ } = this.props;
34
+ const headerCls = cls(`${prefixcls}-header`, {
35
+ [`${prefixcls}-header-bordered`]: Boolean(headerLine)
36
+ });
37
+ const headerWrapperCls = cls(`${prefixcls}-header-wrapper`);
38
+ const titleCls = cls(`${prefixcls}-header-wrapper-title`, {
39
+ [`${prefixcls}-header-wrapper-spacing`]: Boolean(headerExtraContent)
40
+ });
41
+
42
+ if (header || headerExtraContent || title) {
43
+ return /*#__PURE__*/React.createElement("div", {
44
+ style: headerStyle,
45
+ className: headerCls
46
+ }, header ||
47
+ /*#__PURE__*/
48
+ // Priority of header over title and headerExtraContent
49
+ React.createElement("div", {
50
+ className: headerWrapperCls
51
+ }, title && /*#__PURE__*/React.createElement("div", {
52
+ className: titleCls
53
+ }, _isString(title) ? /*#__PURE__*/React.createElement(Typography.Title, {
54
+ heading: 6,
55
+ ellipsis: {
56
+ showTooltip: true,
57
+ rows: 1
58
+ },
59
+ "x-semi-prop": "title"
60
+ }, title) : title), headerExtraContent && /*#__PURE__*/React.createElement("div", {
61
+ className: `${prefixcls}-header-wrapper-extra`,
62
+ "x-semi-prop": "headerExtraContent"
63
+ }, headerExtraContent)));
64
+ }
65
+
66
+ return null;
67
+ }
68
+
69
+ }
70
+
71
+ class Footer extends PureComponent {
72
+ render() {
73
+ const {
74
+ footer,
75
+ footerLine,
76
+ footerStyle
77
+ } = this.props;
78
+ const footerCls = cls(`${prefixcls}-footer`, {
79
+ [`${prefixcls}-footer-bordered`]: footerLine
80
+ });
81
+ return footer ? /*#__PURE__*/React.createElement("div", {
82
+ style: footerStyle,
83
+ className: footerCls,
84
+ "x-semi-prop": "footer"
85
+ }, footer) : null;
86
+ }
87
+
88
+ }
89
+
90
+ class Body extends PureComponent {
27
91
  constructor() {
28
92
  super(...arguments);
29
93
 
30
- this.renderHeader = () => {
31
- const {
32
- title,
33
- headerExtraContent,
34
- header,
35
- headerLine,
36
- headerStyle
37
- } = this.props;
38
- const headerCls = cls(`${prefixcls}-header`, {
39
- [`${prefixcls}-header-bordered`]: Boolean(headerLine)
40
- });
41
- const headerWrapperCls = cls(`${prefixcls}-header-wrapper`);
42
- const titleCls = cls(`${prefixcls}-header-wrapper-title`, {
43
- [`${prefixcls}-header-wrapper-spacing`]: Boolean(headerExtraContent)
44
- });
45
-
46
- if (header || headerExtraContent || title) {
47
- return /*#__PURE__*/React.createElement("div", {
48
- style: headerStyle,
49
- className: headerCls
50
- }, header ||
51
- /*#__PURE__*/
52
- // Priority of header over title and headerExtraContent
53
- React.createElement("div", {
54
- className: headerWrapperCls
55
- }, headerExtraContent && /*#__PURE__*/React.createElement("div", {
56
- className: `${prefixcls}-header-wrapper-extra`,
57
- "x-semi-prop": "headerExtraContent"
58
- }, headerExtraContent), title && /*#__PURE__*/React.createElement("div", {
59
- className: titleCls
60
- }, _isString(title) ? /*#__PURE__*/React.createElement(Typography.Title, {
61
- heading: 6,
62
- ellipsis: {
63
- showTooltip: true,
64
- rows: 1
65
- },
66
- "x-semi-prop": "title"
67
- }, title) : title)));
68
- }
69
-
70
- return null;
71
- };
72
-
73
94
  this.renderCover = () => {
74
95
  const {
75
96
  cover
@@ -86,7 +107,7 @@ class Card extends PureComponent {
86
107
  bodyStyle,
87
108
  children,
88
109
  actions,
89
- loading
110
+ loading = false
90
111
  } = this.props;
91
112
  const bodyCls = cls(`${prefixcls}-body`);
92
113
  const actionsCls = cls(`${prefixcls}-body-actions`);
@@ -111,51 +132,211 @@ class Card extends PureComponent {
111
132
  "x-semi-prop": `actions.${idx}`
112
133
  }, item)))));
113
134
  };
135
+ }
114
136
 
115
- this.renderFooter = () => {
116
- const {
117
- footer,
118
- footerLine,
119
- footerStyle
120
- } = this.props;
121
- const footerCls = cls(`${prefixcls}-footer`, {
122
- [`${prefixcls}-footer-bordered`]: footerLine
123
- });
124
- return footer && /*#__PURE__*/React.createElement("div", {
125
- style: footerStyle,
126
- className: footerCls,
127
- "x-semi-prop": "footer"
128
- }, footer);
129
- };
137
+ render() {
138
+ const bodyWrapperCls = cls(`${prefixcls}-body-wrapper`);
139
+ return /*#__PURE__*/React.createElement("div", {
140
+ className: bodyWrapperCls,
141
+ style: this.props.style
142
+ }, this.renderCover(), this.renderBody());
130
143
  }
131
144
 
145
+ }
146
+
147
+ Header.elementType = 'Card.Header';
148
+ Footer.elementType = 'Card.Footer';
149
+ Body.elementType = 'Card.Body';
150
+
151
+ class Card extends PureComponent {
152
+ // renderHeader = (): ReactNode => {
153
+ // const {
154
+ // title,
155
+ // headerExtraContent,
156
+ // header,
157
+ // headerLine,
158
+ // headerStyle
159
+ // } = this.props;
160
+ // const headerCls = cls(`${prefixcls}-header`, {
161
+ // [`${prefixcls}-header-bordered`]: Boolean(headerLine)
162
+ // });
163
+ // const headerWrapperCls = cls(`${prefixcls}-header-wrapper`);
164
+ // const titleCls = cls(`${prefixcls}-header-wrapper-title`, {
165
+ // [`${prefixcls}-header-wrapper-spacing`]: Boolean(headerExtraContent)
166
+ // });
167
+ // if (header || headerExtraContent || title) {
168
+ // return (
169
+ // <div style={headerStyle} className={headerCls}>
170
+ // {header || ( // Priority of header over title and headerExtraContent
171
+ // <div className={headerWrapperCls}>
172
+ // {headerExtraContent && (
173
+ // <div
174
+ // className={`${prefixcls}-header-wrapper-extra`}
175
+ // x-semi-prop="headerExtraContent"
176
+ // >
177
+ // {headerExtraContent}
178
+ // </div>
179
+ // )}
180
+ // {title && (
181
+ // <div className={titleCls}>
182
+ // {isString(title) ? (
183
+ // <Typography.Title
184
+ // heading={6}
185
+ // ellipsis={{ showTooltip: true, rows: 1 }}
186
+ // x-semi-prop="title"
187
+ // >
188
+ // {title}
189
+ // </Typography.Title>
190
+ // ) : (
191
+ // title
192
+ // )}
193
+ // </div>
194
+ // )}
195
+ // </div>
196
+ // )}
197
+ // </div>
198
+ // );
199
+ // }
200
+ // return null;
201
+ // };
202
+ // renderCover = (): ReactNode => {
203
+ // const {
204
+ // cover
205
+ // } = this.props;
206
+ // const coverCls = cls(`${prefixcls}-cover`);
207
+ // return (
208
+ // cover && (
209
+ // <div className={coverCls} x-semi-prop="cover">
210
+ // {cover}
211
+ // </div>
212
+ // )
213
+ // );
214
+ // };
215
+ // renderBody = (): ReactNode => {
216
+ // const { bodyStyle, children, actions, loading } = this.props;
217
+ // const bodyCls = cls(`${prefixcls}-body`);
218
+ // const actionsCls = cls(`${prefixcls}-body-actions`);
219
+ // const actionsItemCls = cls(`${prefixcls}-body-actions-item`);
220
+ // const placeholder = (
221
+ // <div>
222
+ // <Skeleton.Title />
223
+ // <br />
224
+ // <Skeleton.Paragraph rows={3} />
225
+ // </div>
226
+ // );
227
+ // return (
228
+ // <div style={bodyStyle} className={bodyCls}>
229
+ // {children && (
230
+ // <Skeleton placeholder={placeholder} loading={loading} active>
231
+ // {children}
232
+ // </Skeleton>
233
+ // )}
234
+ // {
235
+ // Array.isArray(actions) &&
236
+ // (
237
+ // <div className={actionsCls}>
238
+ // <Space spacing={12}>
239
+ // {actions.map((item, idx) => (
240
+ // <div key={idx} className={actionsItemCls} x-semi-prop={`actions.${idx}`}>{item}</div>
241
+ // ))}
242
+ // </Space>
243
+ // </div>
244
+ // )
245
+ // }
246
+ // </div>
247
+ // );
248
+ // };
249
+ // renderFooter = (): ReactNode => {
250
+ // const {
251
+ // footer,
252
+ // footerLine,
253
+ // footerStyle
254
+ // } = this.props;
255
+ // const footerCls = cls(`${prefixcls}-footer`, {
256
+ // [`${prefixcls}-footer-bordered`]: footerLine
257
+ // });
258
+ // return (
259
+ // footer && (
260
+ // <div style={footerStyle} className={footerCls} x-semi-prop="footer">
261
+ // {footer}
262
+ // </div>
263
+ // )
264
+ // );
265
+ // };
132
266
  render() {
133
267
  const _a = this.props,
134
268
  {
135
269
  bordered,
136
270
  shadows,
137
271
  style,
138
- className
272
+ className,
273
+ actions,
274
+ bodyStyle,
275
+ cover,
276
+ headerExtraContent,
277
+ footer,
278
+ footerLine,
279
+ footerStyle,
280
+ header,
281
+ headerLine,
282
+ headerStyle,
283
+ loading,
284
+ title,
285
+ children
139
286
  } = _a,
140
- otherProps = __rest(_a, ["bordered", "shadows", "style", "className"]);
287
+ otherProps = __rest(_a, ["bordered", "shadows", "style", "className", "actions", "bodyStyle", "cover", "headerExtraContent", "footer", "footerLine", "footerStyle", "header", "headerLine", "headerStyle", "loading", "title", "children"]); // const others = omit(otherProps, [ // Remove APIs in otherProps that do not need to be hung on the outer node
288
+ // 'actions',
289
+ // 'bodyStyle',
290
+ // 'cover',
291
+ // 'headerExtraContent',
292
+ // 'footer',
293
+ // 'footerLine',
294
+ // 'footerStyle',
295
+ // 'header',
296
+ // 'headerLine',
297
+ // 'headerStyle',
298
+ // 'loading',
299
+ // 'title'
300
+ // ]);
141
301
 
142
- const others = _omit(otherProps, ['actions', 'bodyStyle', 'cover', 'headerExtraContent', 'footer', 'footerLine', 'footerStyle', 'header', 'headerLine', 'headerStyle', 'loading', 'title']);
143
302
 
144
303
  const cardCls = cls(prefixcls, className, {
145
304
  [`${prefixcls}-bordered`]: bordered,
146
305
  [`${prefixcls}-shadows`]: shadows,
147
306
  [`${prefixcls}-shadows-${shadows}`]: shadows
148
307
  });
149
- return /*#__PURE__*/React.createElement("div", Object.assign({}, others, {
308
+ const headProps = {
309
+ title,
310
+ headerExtraContent,
311
+ header,
312
+ headerLine,
313
+ headerStyle
314
+ };
315
+ const bodyProps = {
316
+ cover,
317
+ bodyStyle,
318
+ children,
319
+ actions,
320
+ loading
321
+ };
322
+ const footerProps = {
323
+ footer,
324
+ footerLine,
325
+ footerStyle
326
+ };
327
+ return /*#__PURE__*/React.createElement("div", Object.assign({}, otherProps, {
150
328
  "aria-busy": this.props.loading,
151
329
  className: cardCls,
152
330
  style: style
153
- }), this.renderHeader(), this.renderCover(), this.renderBody(), this.renderFooter());
331
+ }), /*#__PURE__*/React.createElement(Header, Object.assign({}, headProps)), /*#__PURE__*/React.createElement(Body, Object.assign({}, bodyProps)), /*#__PURE__*/React.createElement(Footer, Object.assign({}, footerProps)));
154
332
  }
155
333
 
156
334
  }
157
335
 
158
336
  Card.Meta = Meta;
337
+ Card.Header = Header;
338
+ Card.Footer = Footer;
339
+ Card.Body = Body;
159
340
  Card.propTypes = {
160
341
  actions: PropTypes.array,
161
342
  bodyStyle: PropTypes.object,
@@ -200,8 +200,6 @@ declare class Cascader extends BaseComponent<CascaderProps, CascaderState> {
200
200
  handleListScroll: (e: React.UIEvent<HTMLUListElement, UIEvent>, ind: number) => void;
201
201
  close(): void;
202
202
  open(): void;
203
- focus(): void;
204
- blur(): void;
205
203
  renderContent: () => JSX.Element;
206
204
  renderPlusN: (hiddenTag: Array<ReactNode>) => JSX.Element;
207
205
  renderMultipleTags: () => JSX.Element;
@@ -591,11 +591,6 @@ class Cascader extends BaseComponent {
591
591
  preventScroll
592
592
  });
593
593
  }
594
- },
595
- blurInput: () => {
596
- if (this.inputRef && this.inputRef.current) {
597
- this.inputRef.current.blur();
598
- }
599
594
  }
600
595
  };
601
596
  const cascaderAdapter = {
@@ -932,14 +927,6 @@ class Cascader extends BaseComponent {
932
927
  this.foundation.open();
933
928
  }
934
929
 
935
- focus() {
936
- this.foundation.focus();
937
- }
938
-
939
- blur() {
940
- this.foundation.blur();
941
- }
942
-
943
930
  render() {
944
931
  const {
945
932
  zIndex,
@@ -30,7 +30,7 @@ export default class DateInput extends BaseComponent<DateInputProps, {}> {
30
30
  onFocus: PropTypes.Requireable<(...args: any[]) => any>;
31
31
  value: PropTypes.Requireable<any[]>;
32
32
  disabled: PropTypes.Requireable<boolean>;
33
- type: PropTypes.Requireable<"dateTime" | "date" | "month" | "dateRange" | "year" | "monthRange" | "dateTimeRange">;
33
+ type: PropTypes.Requireable<"date" | "month" | "dateTime" | "dateRange" | "year" | "monthRange" | "dateTimeRange">;
34
34
  showClear: PropTypes.Requireable<boolean>;
35
35
  format: PropTypes.Requireable<string>;
36
36
  inputStyle: PropTypes.Requireable<object>;
@@ -58,8 +58,8 @@ export default class DatePicker extends BaseComponent<DatePickerProps, DatePicke
58
58
  'aria-labelledby': PropTypes.Requireable<string>;
59
59
  'aria-required': PropTypes.Requireable<boolean>;
60
60
  borderless: PropTypes.Requireable<boolean>;
61
- type: PropTypes.Requireable<"dateTime" | "date" | "month" | "dateRange" | "year" | "monthRange" | "dateTimeRange">;
62
- size: PropTypes.Requireable<"default" | "small" | "large">;
61
+ type: PropTypes.Requireable<"date" | "month" | "dateTime" | "dateRange" | "year" | "monthRange" | "dateTimeRange">;
62
+ size: PropTypes.Requireable<"small" | "default" | "large">;
63
63
  clearIcon: PropTypes.Requireable<PropTypes.ReactNodeLike>;
64
64
  density: PropTypes.Requireable<"default" | "compact">;
65
65
  defaultValue: PropTypes.Requireable<NonNullable<string | number | object>>;
@@ -19,7 +19,7 @@ export interface MonthsGridProps extends MonthsGridFoundationProps, BaseProps {
19
19
  export declare type MonthsGridState = MonthsGridFoundationState;
20
20
  export default class MonthsGrid extends BaseComponent<MonthsGridProps, MonthsGridState> {
21
21
  static propTypes: {
22
- type: PropTypes.Requireable<"dateTime" | "date" | "month" | "dateRange" | "year" | "monthRange" | "dateTimeRange">;
22
+ type: PropTypes.Requireable<"date" | "month" | "dateTime" | "dateRange" | "year" | "monthRange" | "dateTimeRange">;
23
23
  defaultValue: PropTypes.Requireable<any[]>;
24
24
  defaultPickerValue: PropTypes.Requireable<NonNullable<string | number | object>>;
25
25
  multiple: PropTypes.Requireable<boolean>;