@tendaui/components 1.0.0 → 1.0.2

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 (270) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +176 -176
  3. package/alert/Alert.tsx +3 -2
  4. package/button/_example/base.tsx +10 -0
  5. package/button/_example/icon.tsx +20 -0
  6. package/color-picker/ColorPickPanel.tsx +9 -0
  7. package/color-picker/ColorPicker.tsx +67 -0
  8. package/color-picker/components/panel/alpha.tsx +32 -0
  9. package/color-picker/components/panel/format/index.tsx +47 -0
  10. package/color-picker/components/panel/format/inputs.tsx +119 -0
  11. package/color-picker/components/panel/header.tsx +37 -0
  12. package/color-picker/components/panel/hue.tsx +20 -0
  13. package/color-picker/components/panel/index.tsx +191 -0
  14. package/color-picker/components/panel/saturation.tsx +81 -0
  15. package/color-picker/components/panel/slider.tsx +76 -0
  16. package/color-picker/components/panel/swatches.tsx +84 -0
  17. package/color-picker/components/trigger.tsx +49 -0
  18. package/color-picker/defaultProps.ts +7 -0
  19. package/color-picker/helpers.ts +53 -0
  20. package/color-picker/hooks/useClassNames.ts +9 -0
  21. package/color-picker/hooks/useStyles.ts +39 -0
  22. package/color-picker/index.ts +12 -0
  23. package/color-picker/style/css.js +1 -0
  24. package/color-picker/style/index.js +1 -0
  25. package/color-picker/type.ts +143 -0
  26. package/color-picker/utils/color-picker/cmyk.ts +89 -0
  27. package/color-picker/utils/color-picker/color.ts +467 -0
  28. package/color-picker/utils/color-picker/constants.ts +187 -0
  29. package/color-picker/utils/color-picker/draggable.ts +100 -0
  30. package/color-picker/utils/color-picker/format.ts +95 -0
  31. package/color-picker/utils/color-picker/gradient.ts +243 -0
  32. package/color-picker/utils/color-picker/index.ts +7 -0
  33. package/color-picker/utils/color-picker/types.ts +33 -0
  34. package/common/observe.ts +33 -0
  35. package/common.ts +20 -0
  36. package/config-provider/ConfigContext.tsx +4 -1
  37. package/config-provider/index.ts +1 -1
  38. package/dialog/DialogCard.tsx +4 -6
  39. package/dialog/hooks/useDialogPosition.ts +1 -2
  40. package/dialog/plugin.tsx +3 -2
  41. package/drawer/Drawer.tsx +264 -0
  42. package/drawer/defaultProps.ts +19 -0
  43. package/drawer/hooks/useDrag.ts +98 -0
  44. package/drawer/hooks/useLockStyle.ts +36 -0
  45. package/drawer/index.ts +5 -0
  46. package/drawer/style/css.js +1 -0
  47. package/drawer/style/index.js +1 -0
  48. package/drawer/type.ts +193 -0
  49. package/drawer/utils/index.ts +76 -0
  50. package/fireworks/Fireworks.tsx +138 -0
  51. package/fireworks/index.ts +10 -0
  52. package/fireworks/style/css.js +0 -0
  53. package/fireworks/style/index.js +0 -0
  54. package/fireworks/type.ts +72 -0
  55. package/form/FormItem.tsx +5 -5
  56. package/form/easing.ts +10 -0
  57. package/form/scroll.ts +124 -0
  58. package/form/type.ts +519 -519
  59. package/global-config/default-config.ts +95 -0
  60. package/global-config/locale/ar_KW.ts +270 -0
  61. package/global-config/locale/en_US.ts +280 -0
  62. package/global-config/locale/it_IT.ts +287 -0
  63. package/global-config/locale/ja_JP.ts +279 -0
  64. package/global-config/locale/ko_KR.ts +279 -0
  65. package/global-config/locale/ru_RU.ts +288 -0
  66. package/global-config/locale/zh_CN.ts +279 -0
  67. package/global-config/locale/zh_TW.ts +279 -0
  68. package/global-config/mobile/default-config.ts +6 -0
  69. package/global-config/mobile/locale/ar_KW.ts +113 -0
  70. package/global-config/mobile/locale/en_US.ts +114 -0
  71. package/global-config/mobile/locale/it_IT.ts +114 -0
  72. package/global-config/mobile/locale/ja_JP.ts +101 -0
  73. package/global-config/mobile/locale/ko_KR.ts +101 -0
  74. package/global-config/mobile/locale/ru_RU.ts +113 -0
  75. package/global-config/mobile/locale/zh_CN.ts +101 -0
  76. package/global-config/mobile/locale/zh_TW.ts +101 -0
  77. package/global-config/t.ts +111 -0
  78. package/hooks/useControlled.ts +3 -3
  79. package/hooks/useDeepEffect.ts +32 -0
  80. package/hooks/useGlobalIcon.ts +10 -3
  81. package/hooks/useLastest.ts +2 -6
  82. package/hooks/useResizeObserve.ts +36 -0
  83. package/index.ts +10 -7
  84. package/input/Input.tsx +4 -1
  85. package/input/defaultProps.ts +0 -2
  86. package/input/type.ts +1 -6
  87. package/input-number/InputNumber.tsx +124 -0
  88. package/input-number/defaultProps.ts +17 -0
  89. package/input-number/index.ts +9 -0
  90. package/input-number/style/css.js +1 -0
  91. package/input-number/style/index.js +1 -0
  92. package/input-number/type.ts +147 -0
  93. package/input-number/useInputNumber.tsx +270 -0
  94. package/ip-input/IPInput.tsx +516 -0
  95. package/ip-input/defaultProps.ts +11 -0
  96. package/ip-input/index.ts +3 -0
  97. package/ip-input/style/css.js +1 -0
  98. package/ip-input/style/index.js +1 -0
  99. package/ip-input/type.ts +115 -0
  100. package/ip-input/utils.ts +112 -0
  101. package/layout/Aside.tsx +38 -0
  102. package/layout/Layout.tsx +104 -0
  103. package/layout/defaultProps.ts +9 -0
  104. package/layout/index.ts +9 -0
  105. package/layout/style/css.js +1 -0
  106. package/layout/style/index.js +1 -0
  107. package/layout/type.ts +43 -0
  108. package/list/List.tsx +144 -0
  109. package/list/ListItem.tsx +36 -0
  110. package/list/ListItemMeta.tsx +40 -0
  111. package/list/defaultProps.ts +11 -0
  112. package/list/hooks/useListVirtualScroll.ts +82 -0
  113. package/list/index.ts +11 -0
  114. package/list/style/css.js +1 -0
  115. package/list/style/index.js +1 -0
  116. package/list/type.ts +93 -0
  117. package/locale/LocalReceiver.ts +55 -0
  118. package/locale/ar_KW.ts +7 -0
  119. package/locale/en_US.ts +7 -0
  120. package/locale/it_IT.ts +6 -0
  121. package/locale/ja_JP.ts +6 -0
  122. package/locale/ko_KR.ts +6 -0
  123. package/locale/ru_RU.ts +6 -0
  124. package/locale/zh_CN.ts +5 -0
  125. package/locale/zh_TW.ts +7 -0
  126. package/notification/NotifyContainer.tsx +2 -2
  127. package/notification/NotifyContext.tsx +1 -0
  128. package/package.json +6 -3
  129. package/popup/Popup.tsx +34 -10
  130. package/radio/Radio.tsx +24 -0
  131. package/radio/RadioGroup.tsx +159 -0
  132. package/radio/defaultProps.ts +18 -0
  133. package/radio/index.ts +12 -0
  134. package/radio/style/css.js +0 -0
  135. package/radio/style/index.js +1 -0
  136. package/radio/type.ts +115 -0
  137. package/radio/useKeyboard.ts +36 -0
  138. package/select/hooks/useOptions.ts +10 -7
  139. package/select/hooks/usePanelVirtualScroll.ts +1 -1
  140. package/select/type.ts +382 -382
  141. package/select-input/type.ts +280 -280
  142. package/slider/Slider.tsx +270 -0
  143. package/slider/SliderHandleButton.tsx +50 -0
  144. package/slider/defaultProps.ts +15 -0
  145. package/slider/index.ts +9 -0
  146. package/slider/style/css.js +1 -0
  147. package/slider/style/index.js +1 -0
  148. package/slider/type.ts +77 -0
  149. package/style/all.js +26 -0
  150. package/styles/_global.scss +39 -39
  151. package/styles/_vars.scss +358 -386
  152. package/styles/components/alert/_index.scss +175 -175
  153. package/styles/components/alert/_vars.scss +39 -39
  154. package/styles/components/badge/_index.scss +70 -70
  155. package/styles/components/badge/_vars.scss +25 -25
  156. package/styles/components/button/_index.scss +499 -511
  157. package/styles/components/button/_mixins.scss +39 -39
  158. package/styles/components/button/_vars.scss +120 -122
  159. package/styles/components/checkbox/_index.scss +158 -158
  160. package/styles/components/checkbox/_var.scss +60 -60
  161. package/styles/components/color-picker/_index.scss +586 -0
  162. package/styles/components/color-picker/_mixins.scss +0 -0
  163. package/styles/components/color-picker/_vars.scss +84 -0
  164. package/styles/components/dialog/_animate.scss +135 -135
  165. package/styles/components/dialog/_index.scss +311 -311
  166. package/styles/components/dialog/_vars.scss +59 -59
  167. package/styles/components/drawer/_index.scss +205 -0
  168. package/styles/components/drawer/_mixins.scss +1 -0
  169. package/styles/components/drawer/_var.scss +53 -0
  170. package/styles/components/fireworks/_index.scss +86 -0
  171. package/styles/components/fireworks/_vars.scss +4 -0
  172. package/styles/components/form/_index.scss +174 -174
  173. package/styles/components/form/_mixins.scss +76 -76
  174. package/styles/components/form/_vars.scss +100 -100
  175. package/styles/components/input/_index.scss +349 -349
  176. package/styles/components/input/_mixins.scss +116 -116
  177. package/styles/components/input/_vars.scss +134 -134
  178. package/styles/components/input-number/_index.scss +353 -0
  179. package/styles/components/input-number/_mixins.scss +0 -0
  180. package/styles/components/input-number/_vars.scss +65 -0
  181. package/styles/components/ip-input/_index.scss +280 -0
  182. package/styles/components/layout/_index.scss +47 -0
  183. package/styles/components/layout/_mixin.scss +0 -0
  184. package/styles/components/layout/_vars.scss +18 -0
  185. package/styles/components/layout/doc.scss +74 -0
  186. package/styles/components/list/_index.scss +172 -0
  187. package/styles/components/list/_mixins.scss +0 -0
  188. package/styles/components/list/_vars.scss +41 -0
  189. package/styles/components/loading/_index.scss +112 -112
  190. package/styles/components/loading/_vars.scss +39 -39
  191. package/styles/components/notification/_index.scss +160 -160
  192. package/styles/components/notification/_mixins.scss +12 -12
  193. package/styles/components/notification/_vars.scss +59 -59
  194. package/styles/components/popup/_index.scss +82 -82
  195. package/styles/components/popup/_mixin.scss +149 -149
  196. package/styles/components/popup/_var.scss +31 -31
  197. package/styles/components/radio/_index.scss +376 -0
  198. package/styles/components/radio/_mixins.scss +0 -0
  199. package/styles/components/radio/_var.scss +92 -0
  200. package/styles/components/select/_index.scss +290 -290
  201. package/styles/components/select/_var.scss +65 -65
  202. package/styles/components/select-input/_index.scss +5 -5
  203. package/styles/components/select-input/_var.scss +3 -3
  204. package/styles/components/slider/_index.scss +241 -0
  205. package/styles/components/slider/_mixins.scss +0 -0
  206. package/styles/components/slider/_vars.scss +50 -0
  207. package/styles/components/switch/_index.scss +279 -279
  208. package/styles/components/switch/_vars.scss +61 -61
  209. package/styles/components/table/_index.scss +193 -0
  210. package/styles/components/table/_var.scss +52 -0
  211. package/styles/components/tabs/_index.scss +165 -0
  212. package/styles/components/tabs/_mixins.scss +11 -0
  213. package/styles/components/tabs/_vars.scss +71 -0
  214. package/styles/components/tag/_index.scss +316 -316
  215. package/styles/components/tag/_var.scss +85 -85
  216. package/styles/components/tag-input/_index.scss +163 -163
  217. package/styles/components/tag-input/_vars.scss +16 -16
  218. package/styles/globals.css +250 -250
  219. package/styles/mixins/_focus.scss +7 -7
  220. package/styles/mixins/_layout.scss +32 -32
  221. package/styles/mixins/_reset.scss +10 -10
  222. package/styles/mixins/_scrollbar.scss +31 -31
  223. package/styles/mixins/_text.scss +48 -48
  224. package/styles/rillple.css +16 -16
  225. package/styles/scrollbar.css +41 -41
  226. package/styles/themes/_dark.scss +191 -191
  227. package/styles/themes/_font.scss +69 -79
  228. package/styles/themes/_index.scss +5 -5
  229. package/styles/themes/_light.scss +190 -190
  230. package/styles/themes/_radius.scss +9 -9
  231. package/styles/themes/_size.scss +68 -68
  232. package/styles/themes.css +66 -66
  233. package/styles/utilities/_animation.scss +57 -57
  234. package/styles/utilities/_tips.scss +9 -9
  235. package/tab/TabBar.tsx +85 -0
  236. package/tab/TabNav.tsx +103 -0
  237. package/tab/TabNavItem.tsx +80 -0
  238. package/tab/TabPanel.tsx +42 -0
  239. package/tab/Tabs.tsx +71 -0
  240. package/tab/defaultProps.ts +19 -0
  241. package/tab/index.ts +7 -0
  242. package/tab/style/index.js +1 -0
  243. package/tab/type.ts +125 -0
  244. package/tab/useTabClass.ts +20 -0
  245. package/table/Cell.tsx +109 -0
  246. package/table/TBody.tsx +77 -0
  247. package/table/THead.tsx +63 -0
  248. package/table/TR.tsx +78 -0
  249. package/table/Table.tsx +73 -0
  250. package/table/defaultProps.ts +14 -0
  251. package/table/hooks/index.ts +4 -0
  252. package/table/hooks/useTableClassName.ts +63 -0
  253. package/table/hooks/useTableStyle.ts +93 -0
  254. package/table/index.ts +7 -0
  255. package/table/style/css.js +1 -0
  256. package/table/style/index.js +1 -0
  257. package/table/type.ts +192 -0
  258. package/tag/Tag.tsx +1 -1
  259. package/tag-input/hooks/useTagList.tsx +1 -1
  260. package/utils/dom.ts +4 -0
  261. package/utils/forwardRefWithStatics.ts +1 -4
  262. package/utils/input-number/large-number.ts +423 -0
  263. package/utils/input-number/number.ts +257 -0
  264. package/utils/isFragment.ts +6 -6
  265. package/utils/log/index.ts +3 -0
  266. package/utils/log/log.ts +30 -0
  267. package/utils/log/types.ts +12 -0
  268. package/utils/number.ts +21 -0
  269. package/utils/scroll.ts +26 -0
  270. package/utils/style.ts +2 -4
@@ -0,0 +1,14 @@
1
+ import { BaseTableProps } from "./type";
2
+
3
+ export const tableDefaultProps: BaseTableProps = {
4
+ columns: [],
5
+ data: [],
6
+ rowKey: "id",
7
+ showHeader: true,
8
+ bordered: false,
9
+ stripe: false,
10
+ hover: false,
11
+ size: "medium",
12
+ tableLayout: "fixed",
13
+ verticalAlign: "middle"
14
+ };
@@ -0,0 +1,4 @@
1
+ export { default as useTableClassName } from "./useTableClassName";
2
+ export type { TableClassName } from "./useTableClassName";
3
+ export { default as useTableStyle, formatCSSUnit } from "./useTableStyle";
4
+ export type { TableStyleResult } from "./useTableStyle";
@@ -0,0 +1,63 @@
1
+ import { useMemo } from "react";
2
+ import useConfig from "../../hooks/useConfig";
3
+
4
+ export interface TableClassName {
5
+ table: string;
6
+ content: string;
7
+ tableElm: string;
8
+ header: string;
9
+ body: string;
10
+ empty: string;
11
+ emptyRow: string;
12
+ bordered: string;
13
+ stripe: string;
14
+ hover: string;
15
+ sizeSmall: string;
16
+ sizeMedium: string;
17
+ sizeLarge: string;
18
+ layoutFixed: string;
19
+ layoutAuto: string;
20
+ verticalAlignTop: string;
21
+ verticalAlignMiddle: string;
22
+ verticalAlignBottom: string;
23
+ alignLeft: string;
24
+ alignCenter: string;
25
+ alignRight: string;
26
+ ellipsis: string;
27
+ cellEllipsis: string;
28
+ }
29
+
30
+ export default function useTableClassName() {
31
+ const { classPrefix } = useConfig();
32
+
33
+ const classNames = useMemo<TableClassName>(
34
+ () => ({
35
+ table: `${classPrefix}-table`,
36
+ content: `${classPrefix}-table__content`,
37
+ tableElm: `${classPrefix}-table__table`,
38
+ header: `${classPrefix}-table__header`,
39
+ body: `${classPrefix}-table__body`,
40
+ empty: `${classPrefix}-table__empty`,
41
+ emptyRow: `${classPrefix}-table__empty-row`,
42
+ bordered: `${classPrefix}-table--bordered`,
43
+ stripe: `${classPrefix}-table--stripe`,
44
+ hover: `${classPrefix}-table--hover`,
45
+ sizeSmall: `${classPrefix}-table--size-small`,
46
+ sizeMedium: `${classPrefix}-table--size-medium`,
47
+ sizeLarge: `${classPrefix}-table--size-large`,
48
+ layoutFixed: `${classPrefix}-table--layout-fixed`,
49
+ layoutAuto: `${classPrefix}-table--layout-auto`,
50
+ verticalAlignTop: `${classPrefix}-vertical-align-top`,
51
+ verticalAlignMiddle: `${classPrefix}-vertical-align-middle`,
52
+ verticalAlignBottom: `${classPrefix}-vertical-align-bottom`,
53
+ alignLeft: `${classPrefix}-align-left`,
54
+ alignCenter: `${classPrefix}-align-center`,
55
+ alignRight: `${classPrefix}-align-right`,
56
+ ellipsis: `${classPrefix}-table__ellipsis`,
57
+ cellEllipsis: `${classPrefix}-table__cell--ellipsis`
58
+ }),
59
+ [classPrefix]
60
+ );
61
+
62
+ return classNames;
63
+ }
@@ -0,0 +1,93 @@
1
+ import { useMemo } from "react";
2
+ import classNames from "classnames";
3
+ import { BaseTableProps } from "../type";
4
+ import useTableClassName from "./useTableClassName";
5
+
6
+ export interface TableStyleResult {
7
+ tableClasses: string;
8
+ tableContentStyles: React.CSSProperties;
9
+ tableElementStyles: React.CSSProperties;
10
+ }
11
+
12
+ /**
13
+ * 格式化 CSS 单位
14
+ */
15
+ export function formatCSSUnit(unit: string | number | undefined): string | undefined {
16
+ if (!unit) return undefined;
17
+ if (typeof unit === "string") {
18
+ // 如果已经是字符串且包含单位,直接返回
19
+ if (/px|em|rem|%|vh|vw/.test(unit)) {
20
+ return unit;
21
+ }
22
+ // 如果是纯数字字符串,添加 px
23
+ if (!isNaN(Number(unit))) {
24
+ return `${unit}px`;
25
+ }
26
+ return unit;
27
+ }
28
+ // 数字类型,添加 px
29
+ return `${unit}px`;
30
+ }
31
+
32
+ export default function useTableStyle(props: BaseTableProps): TableStyleResult {
33
+ const {
34
+ bordered = false,
35
+ stripe = false,
36
+ hover = false,
37
+ size = "medium",
38
+ tableLayout = "fixed",
39
+ verticalAlign = "middle",
40
+ height,
41
+ maxHeight,
42
+ className,
43
+ style
44
+ } = props;
45
+
46
+ const tableClassNames = useTableClassName();
47
+
48
+ // 构建表格类名
49
+ const tableClasses = useMemo(
50
+ () =>
51
+ classNames(
52
+ tableClassNames.table,
53
+ {
54
+ [tableClassNames.bordered]: bordered,
55
+ [tableClassNames.stripe]: stripe,
56
+ [tableClassNames.hover]: hover,
57
+ [tableClassNames.sizeSmall]: size === "small",
58
+ [tableClassNames.sizeMedium]: size === "medium",
59
+ [tableClassNames.sizeLarge]: size === "large",
60
+ [tableClassNames.layoutFixed]: tableLayout === "fixed",
61
+ [tableClassNames.layoutAuto]: tableLayout === "auto",
62
+ [tableClassNames.verticalAlignTop]: verticalAlign === "top",
63
+ [tableClassNames.verticalAlignMiddle]: verticalAlign === "middle",
64
+ [tableClassNames.verticalAlignBottom]: verticalAlign === "bottom"
65
+ },
66
+ className
67
+ ),
68
+ [bordered, stripe, hover, size, tableLayout, verticalAlign, className, tableClassNames]
69
+ );
70
+
71
+ // 表格内容区样式
72
+ const tableContentStyles = useMemo<React.CSSProperties>(() => {
73
+ const styles: React.CSSProperties = {};
74
+ if (maxHeight) {
75
+ styles.maxHeight = formatCSSUnit(maxHeight);
76
+ }
77
+ if (height) {
78
+ styles.height = formatCSSUnit(height);
79
+ }
80
+ return styles;
81
+ }, [height, maxHeight]);
82
+
83
+ // 表格元素样式
84
+ const tableElementStyles = useMemo<React.CSSProperties>(() => {
85
+ return style || {};
86
+ }, [style]);
87
+
88
+ return {
89
+ tableClasses,
90
+ tableContentStyles,
91
+ tableElementStyles
92
+ };
93
+ }
package/table/index.ts ADDED
@@ -0,0 +1,7 @@
1
+ import _Table from "./Table";
2
+ import "./style/index";
3
+
4
+ export type { TableProps } from "./Table";
5
+ export type * from "./type";
6
+ export const Table = _Table;
7
+ export default Table;
@@ -0,0 +1 @@
1
+ import "./index.css";
@@ -0,0 +1 @@
1
+ import "../../styles/components/table/_index.scss";
package/table/type.ts ADDED
@@ -0,0 +1,192 @@
1
+ import { ReactNode, MouseEvent } from "react";
2
+
3
+ // HTMLTableCellElement 是浏览器全局类型,无需导入
4
+
5
+ /**
6
+ * 表格行数据类型
7
+ */
8
+ export type TableRowData = Record<string, unknown>;
9
+
10
+ /**
11
+ * 列对齐方式
12
+ */
13
+ export type TableColumnAlign = "left" | "center" | "right";
14
+
15
+ /**
16
+ * 表格尺寸
17
+ */
18
+ export type TableSize = "small" | "medium" | "large";
19
+
20
+ /**
21
+ * 表格布局方式
22
+ */
23
+ export type TableLayout = "auto" | "fixed";
24
+
25
+ /**
26
+ * 单元格参数
27
+ */
28
+ export interface BaseTableCellParams<T extends TableRowData = TableRowData> {
29
+ row: T;
30
+ rowIndex: number;
31
+ col: BaseTableCol<T>;
32
+ colIndex: number;
33
+ e?: React.MouseEvent<HTMLElement>;
34
+ }
35
+
36
+ /**
37
+ * 表头单元格参数
38
+ */
39
+ export interface BaseTableHeadCellParams<T extends TableRowData = TableRowData> {
40
+ col: BaseTableCol<T>;
41
+ colIndex: number;
42
+ }
43
+
44
+ /**
45
+ * 表格列配置
46
+ */
47
+ export interface BaseTableCol<T extends TableRowData = TableRowData> {
48
+ /**
49
+ * 列标识,必需
50
+ */
51
+ colKey: string;
52
+ /**
53
+ * 列标题
54
+ */
55
+ title?: string | ReactNode | ((params: BaseTableHeadCellParams<T>) => ReactNode);
56
+ /**
57
+ * 列宽度
58
+ */
59
+ width?: string | number;
60
+ /**
61
+ * 列最小宽度
62
+ */
63
+ minWidth?: string | number;
64
+ /**
65
+ * 列对齐方式
66
+ */
67
+ align?: TableColumnAlign;
68
+ /**
69
+ * 自定义单元格渲染
70
+ */
71
+ cell?: string | ReactNode | ((params: BaseTableCellParams<T>) => ReactNode);
72
+ /**
73
+ * 自定义表头渲染
74
+ */
75
+ render?: (params: BaseTableHeadCellParams<T> | BaseTableCellParams<T>) => ReactNode;
76
+ /**
77
+ * 是否固定列
78
+ */
79
+ fixed?: "left" | "right";
80
+ /**
81
+ * 列类名
82
+ */
83
+ className?: string | ((params: BaseTableCellParams<T>) => string);
84
+ /**
85
+ * 列属性
86
+ */
87
+ attrs?: Record<string, unknown> | ((params: BaseTableCellParams<T>) => Record<string, unknown>);
88
+ /**
89
+ * 是否省略文本
90
+ */
91
+ ellipsis?: boolean | { content?: ReactNode; props?: Record<string, unknown> };
92
+ /**
93
+ * 子列(多级表头)
94
+ */
95
+ children?: BaseTableCol<T>[];
96
+ }
97
+
98
+ /**
99
+ * 基础表格属性
100
+ */
101
+ export interface BaseTableProps<T extends TableRowData = TableRowData> {
102
+ /**
103
+ * 列配置
104
+ * @default []
105
+ */
106
+ columns?: BaseTableCol<T>[];
107
+ /**
108
+ * 数据源
109
+ * @default []
110
+ */
111
+ data?: T[];
112
+ /**
113
+ * 行唯一标识字段名
114
+ * @default 'id'
115
+ */
116
+ rowKey?: string;
117
+ /**
118
+ * 是否显示表头
119
+ * @default true
120
+ */
121
+ showHeader?: boolean;
122
+ /**
123
+ * 是否显示边框
124
+ * @default false
125
+ */
126
+ bordered?: boolean;
127
+ /**
128
+ * 是否显示斑马纹
129
+ * @default false
130
+ */
131
+ stripe?: boolean;
132
+ /**
133
+ * 是否显示悬浮效果
134
+ * @default false
135
+ */
136
+ hover?: boolean;
137
+ /**
138
+ * 表格尺寸
139
+ * @default 'medium'
140
+ */
141
+ size?: TableSize;
142
+ /**
143
+ * 表格布局方式
144
+ * @default 'fixed'
145
+ */
146
+ tableLayout?: TableLayout;
147
+ /**
148
+ * 垂直对齐方式
149
+ * @default 'middle'
150
+ */
151
+ verticalAlign?: "top" | "middle" | "bottom";
152
+ /**
153
+ * 表格高度,超出后会出现滚动条。示例:100, '30%', '300'。值为数字类型,会自动加上单位 px
154
+ */
155
+ height?: string | number;
156
+ /**
157
+ * 表格最大高度,超出后会出现滚动条。示例:100, '30%', '300'。值为数字类型,会自动加上单位 px
158
+ */
159
+ maxHeight?: string | number;
160
+ /**
161
+ * 空数据展示内容
162
+ */
163
+ empty?: ReactNode;
164
+ /**
165
+ * 单元格为空时的展示内容
166
+ */
167
+ cellEmptyContent?: ReactNode | ((params: BaseTableCellParams<T>) => ReactNode);
168
+ /**
169
+ * 行类名
170
+ */
171
+ rowClassName?: string | ((params: { row: T; rowIndex: number }) => string);
172
+ /**
173
+ * 行属性
174
+ */
175
+ rowAttributes?: Record<string, unknown> | ((params: { row: T; rowIndex: number }) => Record<string, unknown>);
176
+ /**
177
+ * 行点击事件
178
+ */
179
+ onRowClick?: (params: { row: T; rowIndex: number; e: MouseEvent<HTMLTableRowElement> }) => void;
180
+ /**
181
+ * 单元格点击事件
182
+ */
183
+ onCellClick?: (params: BaseTableCellParams<T>) => void;
184
+ /**
185
+ * 自定义类名
186
+ */
187
+ className?: string;
188
+ /**
189
+ * 自定义样式
190
+ */
191
+ style?: React.CSSProperties;
192
+ }
package/tag/Tag.tsx CHANGED
@@ -70,7 +70,7 @@ export const TagFunction: ForwardRefRenderFunction<HTMLDivElement, TagProps> = (
70
70
  <CloseIcon
71
71
  onClick={(e) => {
72
72
  if (disabled) return;
73
- onClose({ e });
73
+ onClose({ e: e as any });
74
74
  }}
75
75
  className={`${tagClassPrefix}__icon-close`}
76
76
  />
@@ -103,7 +103,7 @@ export default function useTagList(props: TagInputProps) {
103
103
  value: tagValue,
104
104
  count: tagValue.length - minCollapsedNum,
105
105
  collapsedTags: tagValue.slice(minCollapsedNum, tagValue.length),
106
- collapsedSelectedItems: options.slice(minCollapsedNum, tagValue.length),
106
+ collapsedSelectedItems: (options.slice(minCollapsedNum, tagValue.length) as TagInputValue),
107
107
  onClose
108
108
  };
109
109
  const more = isFunction(collapsedItems) ? collapsedItems(params) : collapsedItems;
package/utils/dom.ts CHANGED
@@ -27,3 +27,7 @@ export const getAttach = (
27
27
  }
28
28
  return document.body;
29
29
  };
30
+
31
+ export const isWindow = (obj: unknown): obj is Window => {
32
+ return obj !== null && obj !== undefined && obj === (obj as Window).window;
33
+ };
@@ -5,8 +5,5 @@ export default function forwardRefWithStatics<P, T = HTMLElement, S = Record<str
5
5
  component: React.ForwardRefRenderFunction<T, P>,
6
6
  statics?: S
7
7
  ): React.FunctionComponent<P & RefAttributes<T>> & S {
8
- return hoistNonReactStatics(
9
- forwardRef(component as React.ForwardRefRenderFunction<T, P>),
10
- statics as S
11
- ) as React.FunctionComponent<P & RefAttributes<T>> & S;
8
+ return hoistNonReactStatics(forwardRef(component as any), statics as any) as any;
12
9
  }