@tiny-design/react 1.0.4 → 1.0.10

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 (165) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +107 -0
  3. package/es/alert/style/_index.scss +0 -0
  4. package/es/alert/style/_mixin.scss +0 -0
  5. package/es/avatar/style/_index.scss +0 -0
  6. package/es/back-top/style/_index.scss +0 -0
  7. package/es/badge/style/_index.scss +0 -0
  8. package/es/breadcrumb/style/_index.scss +0 -0
  9. package/es/button/style/_index.scss +0 -0
  10. package/es/button/style/_mixin.scss +0 -0
  11. package/es/button/style/index.css +1 -1
  12. package/es/carousel/style/_index.scss +0 -0
  13. package/es/checkbox/style/_index.scss +0 -0
  14. package/es/collapse/style/_index.scss +0 -0
  15. package/es/date-picker/style/_index.scss +0 -0
  16. package/es/divider/style/_index.scss +0 -0
  17. package/es/empty/style/_index.scss +0 -0
  18. package/es/flip/style/_index.scss +0 -0
  19. package/es/form/style/_index.scss +0 -0
  20. package/es/grid/style/_index.scss +0 -0
  21. package/es/index.d.ts +2 -2
  22. package/es/index.js +2 -2
  23. package/es/input/style/_index.scss +0 -0
  24. package/es/input/style/_mixin.scss +0 -0
  25. package/es/input-number/style/_index.scss +0 -0
  26. package/es/input-password/style/_index.scss +0 -0
  27. package/es/layout/sidebar.js +2 -5
  28. package/es/layout/sidebar.js.map +1 -1
  29. package/es/layout/style/_index.scss +0 -0
  30. package/es/list/list.js.map +1 -1
  31. package/es/loader/style/_index.scss +0 -0
  32. package/es/loading-bar/style/_index.scss +0 -0
  33. package/es/message/style/_index.scss +0 -0
  34. package/es/modal/style/_index.scss +0 -0
  35. package/es/native-select/style/_index.scss +0 -0
  36. package/es/notification/style/_index.scss +0 -0
  37. package/es/overlay/style/_index.scss +0 -0
  38. package/es/pop-confirm/style/_index.scss +0 -0
  39. package/es/popover/style/_index.scss +0 -0
  40. package/es/popup/style/_index.scss +0 -0
  41. package/es/progress/style/_index.scss +0 -0
  42. package/es/radio/style/_index.scss +0 -0
  43. package/es/rate/rate.js +2 -5
  44. package/es/rate/rate.js.map +1 -1
  45. package/es/rate/style/_index.scss +0 -0
  46. package/es/split/style/_index.scss +0 -0
  47. package/es/style/_component.scss +1 -1
  48. package/es/style/base.css +12 -3
  49. package/es/style/index.scss +0 -0
  50. package/es/switch/style/_index.scss +0 -0
  51. package/es/switch/style/_mixin.scss +0 -0
  52. package/es/switch/style/index.css +3 -3
  53. package/es/table/table.js.map +1 -1
  54. package/es/tag/style/_index.scss +0 -0
  55. package/es/textarea/style/_index.scss +0 -0
  56. package/es/time-picker/style/_index.scss +0 -0
  57. package/es/timeline/style/_index.scss +0 -0
  58. package/es/tooltip/style/_index.scss +0 -0
  59. package/es/typography/heading.d.ts +2 -1
  60. package/es/typography/heading.js +11 -18
  61. package/es/typography/heading.js.map +1 -1
  62. package/es/typography/style/_index.scss +0 -18
  63. package/es/typography/style/index.css +0 -13
  64. package/es/typography/text.d.ts +2 -1
  65. package/es/typography/text.js +4 -2
  66. package/es/typography/text.js.map +1 -1
  67. package/es/typography/types.d.ts +1 -1
  68. package/es/with-spin/index.d.ts +1 -0
  69. package/es/with-spin/style/_index.scss +5 -0
  70. package/es/with-spin/style/index.css +3 -0
  71. package/es/with-spin/with-spin.d.ts +9 -0
  72. package/es/with-spin/with-spin.js +20 -0
  73. package/es/with-spin/with-spin.js.map +1 -0
  74. package/lib/alert/style/_index.scss +0 -0
  75. package/lib/alert/style/_mixin.scss +0 -0
  76. package/lib/avatar/style/_index.scss +0 -0
  77. package/lib/back-top/style/_index.scss +0 -0
  78. package/lib/badge/style/_index.scss +0 -0
  79. package/lib/breadcrumb/style/_index.scss +0 -0
  80. package/lib/button/style/_index.scss +0 -0
  81. package/lib/button/style/_mixin.scss +0 -0
  82. package/lib/button/style/index.css +1 -1
  83. package/lib/carousel/style/_index.scss +0 -0
  84. package/lib/checkbox/style/_index.scss +0 -0
  85. package/lib/collapse/style/_index.scss +0 -0
  86. package/lib/date-picker/style/_index.scss +0 -0
  87. package/lib/divider/style/_index.scss +0 -0
  88. package/lib/empty/style/_index.scss +0 -0
  89. package/lib/flip/style/_index.scss +0 -0
  90. package/lib/form/style/_index.scss +0 -0
  91. package/lib/grid/style/_index.scss +0 -0
  92. package/lib/index.d.ts +2 -2
  93. package/lib/index.js +96 -96
  94. package/lib/input/style/_index.scss +0 -0
  95. package/lib/input/style/_mixin.scss +0 -0
  96. package/lib/input-number/style/_index.scss +0 -0
  97. package/lib/input-password/style/_index.scss +0 -0
  98. package/lib/layout/sidebar.js +2 -5
  99. package/lib/layout/sidebar.js.map +1 -1
  100. package/lib/layout/style/_index.scss +0 -0
  101. package/lib/list/list.js.map +1 -1
  102. package/lib/loader/style/_index.scss +0 -0
  103. package/lib/loading-bar/style/_index.scss +0 -0
  104. package/lib/message/style/_index.scss +0 -0
  105. package/lib/modal/style/_index.scss +0 -0
  106. package/lib/native-select/style/_index.scss +0 -0
  107. package/lib/notification/style/_index.scss +0 -0
  108. package/lib/overlay/style/_index.scss +0 -0
  109. package/lib/pop-confirm/style/_index.scss +0 -0
  110. package/lib/popover/style/_index.scss +0 -0
  111. package/lib/popup/style/_index.scss +0 -0
  112. package/lib/progress/style/_index.scss +0 -0
  113. package/lib/radio/style/_index.scss +0 -0
  114. package/lib/rate/rate.js +2 -5
  115. package/lib/rate/rate.js.map +1 -1
  116. package/lib/rate/style/_index.scss +0 -0
  117. package/lib/split/style/_index.scss +0 -0
  118. package/lib/style/_component.scss +1 -1
  119. package/lib/style/base.css +12 -3
  120. package/lib/style/index.scss +0 -0
  121. package/lib/switch/style/_index.scss +0 -0
  122. package/lib/switch/style/_mixin.scss +0 -0
  123. package/lib/switch/style/index.css +3 -3
  124. package/lib/table/table.js.map +1 -1
  125. package/lib/tag/style/_index.scss +0 -0
  126. package/lib/textarea/style/_index.scss +0 -0
  127. package/lib/time-picker/style/_index.scss +0 -0
  128. package/lib/timeline/style/_index.scss +0 -0
  129. package/lib/tooltip/style/_index.scss +0 -0
  130. package/lib/typography/heading.d.ts +2 -1
  131. package/lib/typography/heading.js +11 -18
  132. package/lib/typography/heading.js.map +1 -1
  133. package/lib/typography/style/_index.scss +0 -18
  134. package/lib/typography/style/index.css +0 -13
  135. package/lib/typography/text.d.ts +2 -1
  136. package/lib/typography/text.js +4 -2
  137. package/lib/typography/text.js.map +1 -1
  138. package/lib/typography/types.d.ts +1 -1
  139. package/lib/with-spin/style/_index.scss +5 -0
  140. package/lib/with-spin/style/index.css +3 -0
  141. package/lib/with-spin/with-spin.d.ts +9 -0
  142. package/lib/with-spin/with-spin.js +22 -0
  143. package/lib/with-spin/with-spin.js.map +1 -0
  144. package/package.json +19 -15
  145. package/es/icon/icon.d.ts +0 -8
  146. package/es/icon/icon.js +0 -25
  147. package/es/icon/icon.js.map +0 -1
  148. package/es/icon/index.d.ts +0 -1
  149. package/es/icon/index.js +0 -9
  150. package/es/icon/index.js.map +0 -1
  151. package/es/icon/style/_index.scss +0 -16
  152. package/es/icon/style/index.css +0 -987
  153. package/es/icon/types.d.ts +0 -15
  154. package/lib/icon/icon.d.ts +0 -8
  155. package/lib/icon/icon.js +0 -28
  156. package/lib/icon/icon.js.map +0 -1
  157. package/lib/icon/index.js +0 -8
  158. package/lib/icon/index.js.map +0 -1
  159. package/lib/icon/style/_index.scss +0 -16
  160. package/lib/icon/style/index.css +0 -987
  161. package/lib/icon/types.d.ts +0 -15
  162. /package/es/{icon → with-spin}/style/index.d.ts +0 -0
  163. /package/es/{icon → with-spin}/style/index.js +0 -0
  164. /package/lib/{icon → with-spin}/style/index.d.ts +0 -0
  165. /package/lib/{icon → with-spin}/style/index.js +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"table.js","names":["React","ConfigContext","getPrefixCls","useVirtualScroll","Pagination"],"sources":["../../src/table/table.tsx"],"sourcesContent":["import React, { useState, useEffect, useContext, useMemo } from 'react';\nimport classNames from 'classnames';\nimport { ConfigContext } from '../config-provider/config-context';\nimport { getPrefixCls } from '../_utils/general';\nimport { useVirtualScroll } from '../_utils/use-virtual-scroll';\nimport Pagination from '../pagination';\nimport { TableProps, ColumnType, SortOrder } from './types';\n\nconst ROW_HEIGHT_MAP = { sm: 40, md: 48, lg: 56 } as const;\n\nconst getRowKey = <T,>(record: T, rowKey: string | ((record: T) => React.Key), index: number): React.Key => {\n if (typeof rowKey === 'function') return rowKey(record);\n const key = (record as any)[rowKey];\n return key !== undefined ? key : index;\n};\n\nconst getValue = <T,>(record: T, dataIndex: string): any => {\n return (record as any)[dataIndex];\n};\n\nconst Table = React.forwardRef<HTMLDivElement, TableProps>((props, ref) => {\n const {\n columns,\n dataSource = [],\n rowKey = 'key',\n loading = false,\n bordered = false,\n size,\n scroll,\n virtual = false,\n height,\n itemHeight: itemHeightProp,\n rowSelection,\n pagination,\n onChange,\n emptyText = 'No Data',\n showHeader = true,\n rowClassName,\n onRow,\n prefixCls: customisedCls,\n className,\n style,\n ...otherProps\n } = props;\n\n const configContext = useContext(ConfigContext);\n const prefixCls = getPrefixCls('table', configContext.prefixCls, customisedCls);\n const tableSize = size || configContext.componentSize || 'md';\n\n if (virtual && height == null) {\n console.warn('[tiny-ui: Table] `height` is required when `virtual` is enabled.');\n }\n\n const isVirtual = virtual && height != null;\n\n // Sorting\n const [sortField, setSortField] = useState<string | undefined>();\n const [sortOrder, setSortOrder] = useState<SortOrder>(null);\n\n // Pagination\n const [currentPage, setCurrentPage] = useState(1);\n const pageSize = pagination && pagination.pageSize ? pagination.pageSize : 10;\n\n // Selection\n const [selectedKeys, setSelectedKeys] = useState<React.Key[]>(\n rowSelection?.selectedRowKeys ?? []\n );\n\n useEffect(() => {\n if (rowSelection?.selectedRowKeys) {\n setSelectedKeys(rowSelection.selectedRowKeys);\n }\n }, [rowSelection?.selectedRowKeys]);\n\n // Initialize default sort\n useEffect(() => {\n for (const col of columns) {\n if (col.defaultSortOrder) {\n setSortField(col.dataIndex);\n setSortOrder(col.defaultSortOrder);\n break;\n }\n }\n }, []);\n\n const sortedData = useMemo(() => {\n if (!sortField || !sortOrder) return [...dataSource];\n const col = columns.find((c) => c.dataIndex === sortField);\n if (!col?.sorter) return [...dataSource];\n const sorted = [...dataSource];\n const sorterFn =\n typeof col.sorter === 'function'\n ? col.sorter\n : (a: any, b: any) => {\n const va = getValue(a, sortField);\n const vb = getValue(b, sortField);\n if (va < vb) return -1;\n if (va > vb) return 1;\n return 0;\n };\n sorted.sort((a, b) => {\n const result = sorterFn(a, b);\n return sortOrder === 'descend' ? -result : result;\n });\n return sorted;\n }, [dataSource, sortField, sortOrder, columns]);\n\n const rowHeight = itemHeightProp ?? ROW_HEIGHT_MAP[tableSize] ?? ROW_HEIGHT_MAP.md;\n const { visibleRange, totalHeight, offsetY, onScroll } = useVirtualScroll({\n itemCount: sortedData.length,\n itemHeight: rowHeight,\n containerHeight: height ?? 0,\n });\n\n const paginatedData = useMemo(() => {\n if (isVirtual) return sortedData;\n if (pagination === false) return sortedData;\n const page = pagination?.current ?? currentPage;\n const start = (page - 1) * pageSize;\n return sortedData.slice(start, start + pageSize);\n }, [sortedData, pagination, currentPage, pageSize, isVirtual]);\n\n const paginationConfig = pagination && typeof pagination === 'object' ? pagination : undefined;\n const totalItems = paginationConfig?.total ?? dataSource.length;\n const activePage = paginationConfig?.current ?? currentPage;\n\n const handleSort = (col: ColumnType) => {\n if (!col.sorter) return;\n let newOrder: SortOrder;\n if (sortField !== col.dataIndex) {\n newOrder = 'ascend';\n } else if (sortOrder === 'ascend') {\n newOrder = 'descend';\n } else if (sortOrder === 'descend') {\n newOrder = null;\n } else {\n newOrder = 'ascend';\n }\n setSortField(newOrder ? col.dataIndex : undefined);\n setSortOrder(newOrder);\n onChange?.({ current: activePage, pageSize }, { field: col.dataIndex, order: newOrder });\n };\n\n const handlePageChange = (page: number) => {\n setCurrentPage(page);\n pagination && pagination.onChange?.(page, pageSize);\n onChange?.({ current: page, pageSize }, { field: sortField, order: sortOrder });\n };\n\n const handleSelectAll = () => {\n if (!rowSelection) return;\n const allKeys = paginatedData.map((record, i) => getRowKey(record, rowKey, i));\n const allSelected = allKeys.every((k) => selectedKeys.includes(k));\n const newKeys = allSelected ? [] : allKeys;\n if (!rowSelection.selectedRowKeys) {\n setSelectedKeys(newKeys);\n }\n const newRows = allSelected ? [] : paginatedData;\n rowSelection.onChange?.(newKeys, newRows);\n };\n\n const handleSelectRow = (record: any, key: React.Key) => {\n if (!rowSelection) return;\n const isRadio = rowSelection.type === 'radio';\n let newKeys: React.Key[];\n if (isRadio) {\n newKeys = [key];\n } else {\n newKeys = selectedKeys.includes(key)\n ? selectedKeys.filter((k) => k !== key)\n : [...selectedKeys, key];\n }\n if (!rowSelection.selectedRowKeys) {\n setSelectedKeys(newKeys);\n }\n const newRows = dataSource.filter((r, i) => newKeys.includes(getRowKey(r, rowKey, i)));\n rowSelection.onChange?.(newKeys, newRows);\n };\n\n const cls = classNames(prefixCls, className, {\n [`${prefixCls}_bordered`]: bordered,\n [`${prefixCls}_${tableSize}`]: tableSize,\n [`${prefixCls}_loading`]: loading,\n });\n\n const tableStyle: React.CSSProperties = {};\n if (scroll?.x) tableStyle.minWidth = scroll.x;\n\n const wrapperStyle: React.CSSProperties = {};\n if (isVirtual) {\n wrapperStyle.height = height;\n wrapperStyle.overflowY = 'auto';\n } else if (scroll?.y) {\n wrapperStyle.maxHeight = scroll.y;\n wrapperStyle.overflowY = 'auto';\n }\n\n const allPageKeys = paginatedData.map((r, i) => getRowKey(r, rowKey, i));\n const allSelected = allPageKeys.length > 0 && allPageKeys.every((k) => selectedKeys.includes(k));\n const someSelected = allPageKeys.some((k) => selectedKeys.includes(k));\n\n const colCount = columns.length + (rowSelection ? 1 : 0);\n\n const renderRow = (record: any, rowIndex: number) => {\n const key = getRowKey(record, rowKey, rowIndex);\n const isSelected = selectedKeys.includes(key);\n const rowCls = classNames(`${prefixCls}__row`, {\n [`${prefixCls}__row_selected`]: isSelected,\n }, typeof rowClassName === 'function' ? rowClassName(record, rowIndex) : rowClassName);\n const rowProps = onRow?.(record, rowIndex) ?? {};\n return (\n <tr key={key} className={rowCls} {...rowProps}>\n {rowSelection && (\n <td className={`${prefixCls}__cell ${prefixCls}__selection-col`}>\n <input\n type={rowSelection.type === 'radio' ? 'radio' : 'checkbox'}\n checked={isSelected}\n onChange={() => handleSelectRow(record, key)}\n aria-label={`Select row ${rowIndex + 1}`}\n />\n </td>\n )}\n {columns.map((col, colIndex) => {\n const colKey = col.key ?? col.dataIndex ?? colIndex;\n const value = getValue(record, col.dataIndex);\n const tdCls = classNames(`${prefixCls}__cell`, col.className, {\n [`${prefixCls}__cell_ellipsis`]: col.ellipsis,\n [`${prefixCls}__cell_align-${col.align}`]: col.align,\n });\n return (\n <td key={colKey} className={tdCls} style={{ width: col.width }}>\n {col.render ? col.render(value, record, rowIndex) : value}\n </td>\n );\n })}\n </tr>\n );\n };\n\n const renderTbody = () => {\n if (loading) {\n return (\n <tr>\n <td\n className={`${prefixCls}__cell ${prefixCls}__loading-cell`}\n colSpan={colCount}\n >\n Loading...\n </td>\n </tr>\n );\n }\n\n if (isVirtual) {\n if (sortedData.length === 0) {\n return (\n <tr>\n <td className={`${prefixCls}__cell ${prefixCls}__empty-cell`} colSpan={colCount}>\n {emptyText}\n </td>\n </tr>\n );\n }\n const [start, end] = visibleRange;\n const topHeight = offsetY;\n const bottomHeight = totalHeight - offsetY - (end - start + 1) * rowHeight;\n return (\n <>\n {topHeight > 0 && (\n <tr className={`${prefixCls}__row_spacer`}>\n <td colSpan={colCount} style={{ height: topHeight }} />\n </tr>\n )}\n {sortedData.slice(start, end + 1).map((record, i) => renderRow(record, start + i))}\n {bottomHeight > 0 && (\n <tr className={`${prefixCls}__row_spacer`}>\n <td colSpan={colCount} style={{ height: Math.max(0, bottomHeight) }} />\n </tr>\n )}\n </>\n );\n }\n\n if (paginatedData.length === 0) {\n return (\n <tr>\n <td\n className={`${prefixCls}__cell ${prefixCls}__empty-cell`}\n colSpan={colCount}\n >\n {emptyText}\n </td>\n </tr>\n );\n }\n\n return paginatedData.map((record, rowIndex) => renderRow(record, rowIndex));\n };\n\n const theadCls = classNames(`${prefixCls}__thead`, {\n [`${prefixCls}__thead_sticky`]: isVirtual,\n });\n\n const showPagination = pagination !== false && !isVirtual;\n\n return (\n <div {...otherProps} ref={ref} className={cls} style={style}>\n <div\n className={`${prefixCls}__wrapper`}\n style={wrapperStyle}\n onScroll={isVirtual ? onScroll : undefined}\n >\n <table className={`${prefixCls}__table`} style={tableStyle}>\n {showHeader && (\n <thead className={theadCls}>\n <tr>\n {rowSelection && (\n <th className={`${prefixCls}__cell ${prefixCls}__selection-col`}>\n {rowSelection.type !== 'radio' && (\n <input\n type=\"checkbox\"\n checked={allSelected}\n ref={(el) => { if (el) el.indeterminate = someSelected && !allSelected; }}\n onChange={handleSelectAll}\n aria-label=\"Select all\"\n />\n )}\n </th>\n )}\n {columns.map((col, i) => {\n const key = col.key ?? col.dataIndex ?? i;\n const thCls = classNames(`${prefixCls}__cell`, col.className, {\n [`${prefixCls}__cell_sortable`]: !!col.sorter,\n [`${prefixCls}__cell_align-${col.align}`]: col.align,\n });\n return (\n <th\n key={key}\n className={thCls}\n style={{ width: col.width }}\n onClick={() => handleSort(col)}\n >\n <span className={`${prefixCls}__col-title`}>{col.title}</span>\n {col.sorter && (\n <span className={`${prefixCls}__sorter`}>\n <span className={classNames(`${prefixCls}__sorter-icon`, {\n [`${prefixCls}__sorter-icon_active`]: sortField === col.dataIndex && sortOrder === 'ascend',\n })}>▲</span>\n <span className={classNames(`${prefixCls}__sorter-icon`, {\n [`${prefixCls}__sorter-icon_active`]: sortField === col.dataIndex && sortOrder === 'descend',\n })}>▼</span>\n </span>\n )}\n </th>\n );\n })}\n </tr>\n </thead>\n )}\n <tbody className={`${prefixCls}__tbody`}>\n {renderTbody()}\n </tbody>\n </table>\n </div>\n {showPagination && (\n <Pagination\n current={activePage}\n total={totalItems}\n pageSize={pageSize}\n align={paginationConfig?.align ?? 'right'}\n size={paginationConfig?.size}\n disabled={paginationConfig?.disabled}\n onChange={(page) => handlePageChange(page)}\n style={{ padding: '16px 0' }}\n />\n )}\n </div>\n );\n});\n\nTable.displayName = 'Table';\nexport default Table;\n"],"mappings":"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"}
1
+ {"version":3,"file":"table.js","names":["React","ConfigContext","getPrefixCls","useVirtualScroll","Pagination"],"sources":["../../src/table/table.tsx"],"sourcesContent":["import React, { useState, useEffect, useContext, useMemo } from 'react';\nimport classNames from 'classnames';\nimport { ConfigContext } from '../config-provider/config-context';\nimport { getPrefixCls } from '../_utils/general';\nimport { useVirtualScroll } from '../_utils/use-virtual-scroll';\nimport Pagination from '../pagination';\nimport { TableProps, ColumnType, SortOrder } from './types';\n\nconst ROW_HEIGHT_MAP = { sm: 40, md: 48, lg: 56 } as const;\n\nconst getRowKey = <T,>(record: T, rowKey: string | ((record: T) => React.Key), index: number): React.Key => {\n if (typeof rowKey === 'function') return rowKey(record);\n const key = (record as any)[rowKey];\n return key !== undefined ? key : index;\n};\n\nconst getValue = <T,>(record: T, dataIndex: string): any => {\n return (record as any)[dataIndex];\n};\n\nconst Table = React.forwardRef<HTMLDivElement, TableProps>((props, ref) => {\n const {\n columns,\n dataSource = [],\n rowKey = 'key',\n loading = false,\n bordered = false,\n size,\n scroll,\n virtual = false,\n height,\n itemHeight: itemHeightProp,\n rowSelection,\n pagination,\n onChange,\n emptyText = 'No Data',\n showHeader = true,\n rowClassName,\n onRow,\n prefixCls: customisedCls,\n className,\n style,\n ...otherProps\n } = props;\n\n const configContext = useContext(ConfigContext);\n const prefixCls = getPrefixCls('table', configContext.prefixCls, customisedCls);\n const tableSize = size || configContext.componentSize || 'md';\n\n if (virtual && height == null) {\n console.warn('[tiny-design: Table] `height` is required when `virtual` is enabled.');\n }\n\n const isVirtual = virtual && height != null;\n\n // Sorting\n const [sortField, setSortField] = useState<string | undefined>();\n const [sortOrder, setSortOrder] = useState<SortOrder>(null);\n\n // Pagination\n const [currentPage, setCurrentPage] = useState(1);\n const pageSize = pagination && pagination.pageSize ? pagination.pageSize : 10;\n\n // Selection\n const [selectedKeys, setSelectedKeys] = useState<React.Key[]>(\n rowSelection?.selectedRowKeys ?? []\n );\n\n useEffect(() => {\n if (rowSelection?.selectedRowKeys) {\n setSelectedKeys(rowSelection.selectedRowKeys);\n }\n }, [rowSelection?.selectedRowKeys]);\n\n // Initialize default sort\n useEffect(() => {\n for (const col of columns) {\n if (col.defaultSortOrder) {\n setSortField(col.dataIndex);\n setSortOrder(col.defaultSortOrder);\n break;\n }\n }\n }, []);\n\n const sortedData = useMemo(() => {\n if (!sortField || !sortOrder) return [...dataSource];\n const col = columns.find((c) => c.dataIndex === sortField);\n if (!col?.sorter) return [...dataSource];\n const sorted = [...dataSource];\n const sorterFn =\n typeof col.sorter === 'function'\n ? col.sorter\n : (a: any, b: any) => {\n const va = getValue(a, sortField);\n const vb = getValue(b, sortField);\n if (va < vb) return -1;\n if (va > vb) return 1;\n return 0;\n };\n sorted.sort((a, b) => {\n const result = sorterFn(a, b);\n return sortOrder === 'descend' ? -result : result;\n });\n return sorted;\n }, [dataSource, sortField, sortOrder, columns]);\n\n const rowHeight = itemHeightProp ?? ROW_HEIGHT_MAP[tableSize] ?? ROW_HEIGHT_MAP.md;\n const { visibleRange, totalHeight, offsetY, onScroll } = useVirtualScroll({\n itemCount: sortedData.length,\n itemHeight: rowHeight,\n containerHeight: height ?? 0,\n });\n\n const paginatedData = useMemo(() => {\n if (isVirtual) return sortedData;\n if (pagination === false) return sortedData;\n const page = pagination?.current ?? currentPage;\n const start = (page - 1) * pageSize;\n return sortedData.slice(start, start + pageSize);\n }, [sortedData, pagination, currentPage, pageSize, isVirtual]);\n\n const paginationConfig = pagination && typeof pagination === 'object' ? pagination : undefined;\n const totalItems = paginationConfig?.total ?? dataSource.length;\n const activePage = paginationConfig?.current ?? currentPage;\n\n const handleSort = (col: ColumnType) => {\n if (!col.sorter) return;\n let newOrder: SortOrder;\n if (sortField !== col.dataIndex) {\n newOrder = 'ascend';\n } else if (sortOrder === 'ascend') {\n newOrder = 'descend';\n } else if (sortOrder === 'descend') {\n newOrder = null;\n } else {\n newOrder = 'ascend';\n }\n setSortField(newOrder ? col.dataIndex : undefined);\n setSortOrder(newOrder);\n onChange?.({ current: activePage, pageSize }, { field: col.dataIndex, order: newOrder });\n };\n\n const handlePageChange = (page: number) => {\n setCurrentPage(page);\n pagination && pagination.onChange?.(page, pageSize);\n onChange?.({ current: page, pageSize }, { field: sortField, order: sortOrder });\n };\n\n const handleSelectAll = () => {\n if (!rowSelection) return;\n const allKeys = paginatedData.map((record, i) => getRowKey(record, rowKey, i));\n const allSelected = allKeys.every((k) => selectedKeys.includes(k));\n const newKeys = allSelected ? [] : allKeys;\n if (!rowSelection.selectedRowKeys) {\n setSelectedKeys(newKeys);\n }\n const newRows = allSelected ? [] : paginatedData;\n rowSelection.onChange?.(newKeys, newRows);\n };\n\n const handleSelectRow = (record: any, key: React.Key) => {\n if (!rowSelection) return;\n const isRadio = rowSelection.type === 'radio';\n let newKeys: React.Key[];\n if (isRadio) {\n newKeys = [key];\n } else {\n newKeys = selectedKeys.includes(key)\n ? selectedKeys.filter((k) => k !== key)\n : [...selectedKeys, key];\n }\n if (!rowSelection.selectedRowKeys) {\n setSelectedKeys(newKeys);\n }\n const newRows = dataSource.filter((r, i) => newKeys.includes(getRowKey(r, rowKey, i)));\n rowSelection.onChange?.(newKeys, newRows);\n };\n\n const cls = classNames(prefixCls, className, {\n [`${prefixCls}_bordered`]: bordered,\n [`${prefixCls}_${tableSize}`]: tableSize,\n [`${prefixCls}_loading`]: loading,\n });\n\n const tableStyle: React.CSSProperties = {};\n if (scroll?.x) tableStyle.minWidth = scroll.x;\n\n const wrapperStyle: React.CSSProperties = {};\n if (isVirtual) {\n wrapperStyle.height = height;\n wrapperStyle.overflowY = 'auto';\n } else if (scroll?.y) {\n wrapperStyle.maxHeight = scroll.y;\n wrapperStyle.overflowY = 'auto';\n }\n\n const allPageKeys = paginatedData.map((r, i) => getRowKey(r, rowKey, i));\n const allSelected = allPageKeys.length > 0 && allPageKeys.every((k) => selectedKeys.includes(k));\n const someSelected = allPageKeys.some((k) => selectedKeys.includes(k));\n\n const colCount = columns.length + (rowSelection ? 1 : 0);\n\n const renderRow = (record: any, rowIndex: number) => {\n const key = getRowKey(record, rowKey, rowIndex);\n const isSelected = selectedKeys.includes(key);\n const rowCls = classNames(`${prefixCls}__row`, {\n [`${prefixCls}__row_selected`]: isSelected,\n }, typeof rowClassName === 'function' ? rowClassName(record, rowIndex) : rowClassName);\n const rowProps = onRow?.(record, rowIndex) ?? {};\n return (\n <tr key={key} className={rowCls} {...rowProps}>\n {rowSelection && (\n <td className={`${prefixCls}__cell ${prefixCls}__selection-col`}>\n <input\n type={rowSelection.type === 'radio' ? 'radio' : 'checkbox'}\n checked={isSelected}\n onChange={() => handleSelectRow(record, key)}\n aria-label={`Select row ${rowIndex + 1}`}\n />\n </td>\n )}\n {columns.map((col, colIndex) => {\n const colKey = col.key ?? col.dataIndex ?? colIndex;\n const value = getValue(record, col.dataIndex);\n const tdCls = classNames(`${prefixCls}__cell`, col.className, {\n [`${prefixCls}__cell_ellipsis`]: col.ellipsis,\n [`${prefixCls}__cell_align-${col.align}`]: col.align,\n });\n return (\n <td key={colKey} className={tdCls} style={{ width: col.width }}>\n {col.render ? col.render(value, record, rowIndex) : value}\n </td>\n );\n })}\n </tr>\n );\n };\n\n const renderTbody = () => {\n if (loading) {\n return (\n <tr>\n <td\n className={`${prefixCls}__cell ${prefixCls}__loading-cell`}\n colSpan={colCount}\n >\n Loading...\n </td>\n </tr>\n );\n }\n\n if (isVirtual) {\n if (sortedData.length === 0) {\n return (\n <tr>\n <td className={`${prefixCls}__cell ${prefixCls}__empty-cell`} colSpan={colCount}>\n {emptyText}\n </td>\n </tr>\n );\n }\n const [start, end] = visibleRange;\n const topHeight = offsetY;\n const bottomHeight = totalHeight - offsetY - (end - start + 1) * rowHeight;\n return (\n <>\n {topHeight > 0 && (\n <tr className={`${prefixCls}__row_spacer`}>\n <td colSpan={colCount} style={{ height: topHeight }} />\n </tr>\n )}\n {sortedData.slice(start, end + 1).map((record, i) => renderRow(record, start + i))}\n {bottomHeight > 0 && (\n <tr className={`${prefixCls}__row_spacer`}>\n <td colSpan={colCount} style={{ height: Math.max(0, bottomHeight) }} />\n </tr>\n )}\n </>\n );\n }\n\n if (paginatedData.length === 0) {\n return (\n <tr>\n <td\n className={`${prefixCls}__cell ${prefixCls}__empty-cell`}\n colSpan={colCount}\n >\n {emptyText}\n </td>\n </tr>\n );\n }\n\n return paginatedData.map((record, rowIndex) => renderRow(record, rowIndex));\n };\n\n const theadCls = classNames(`${prefixCls}__thead`, {\n [`${prefixCls}__thead_sticky`]: isVirtual,\n });\n\n const showPagination = pagination !== false && !isVirtual;\n\n return (\n <div {...otherProps} ref={ref} className={cls} style={style}>\n <div\n className={`${prefixCls}__wrapper`}\n style={wrapperStyle}\n onScroll={isVirtual ? onScroll : undefined}\n >\n <table className={`${prefixCls}__table`} style={tableStyle}>\n {showHeader && (\n <thead className={theadCls}>\n <tr>\n {rowSelection && (\n <th className={`${prefixCls}__cell ${prefixCls}__selection-col`}>\n {rowSelection.type !== 'radio' && (\n <input\n type=\"checkbox\"\n checked={allSelected}\n ref={(el) => { if (el) el.indeterminate = someSelected && !allSelected; }}\n onChange={handleSelectAll}\n aria-label=\"Select all\"\n />\n )}\n </th>\n )}\n {columns.map((col, i) => {\n const key = col.key ?? col.dataIndex ?? i;\n const thCls = classNames(`${prefixCls}__cell`, col.className, {\n [`${prefixCls}__cell_sortable`]: !!col.sorter,\n [`${prefixCls}__cell_align-${col.align}`]: col.align,\n });\n return (\n <th\n key={key}\n className={thCls}\n style={{ width: col.width }}\n onClick={() => handleSort(col)}\n >\n <span className={`${prefixCls}__col-title`}>{col.title}</span>\n {col.sorter && (\n <span className={`${prefixCls}__sorter`}>\n <span className={classNames(`${prefixCls}__sorter-icon`, {\n [`${prefixCls}__sorter-icon_active`]: sortField === col.dataIndex && sortOrder === 'ascend',\n })}>▲</span>\n <span className={classNames(`${prefixCls}__sorter-icon`, {\n [`${prefixCls}__sorter-icon_active`]: sortField === col.dataIndex && sortOrder === 'descend',\n })}>▼</span>\n </span>\n )}\n </th>\n );\n })}\n </tr>\n </thead>\n )}\n <tbody className={`${prefixCls}__tbody`}>\n {renderTbody()}\n </tbody>\n </table>\n </div>\n {showPagination && (\n <Pagination\n current={activePage}\n total={totalItems}\n pageSize={pageSize}\n align={paginationConfig?.align ?? 'right'}\n size={paginationConfig?.size}\n disabled={paginationConfig?.disabled}\n onChange={(page) => handlePageChange(page)}\n style={{ padding: '16px 0' }}\n />\n )}\n </div>\n );\n});\n\nTable.displayName = 'Table';\nexport default Table;\n"],"mappings":"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"}
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -1,7 +1,8 @@
1
1
  import { HeadingProps } from "./types.js";
2
+ import React from "react";
2
3
 
3
4
  //#region src/typography/heading.d.ts
4
- declare const Heading: (props: HeadingProps) => JSX.Element | null;
5
+ declare const Heading: React.ForwardRefExoticComponent<HeadingProps & React.RefAttributes<HTMLHeadingElement>>;
5
6
  //#endregion
6
7
  export { Heading };
7
8
  //# sourceMappingURL=heading.d.ts.map
@@ -5,29 +5,22 @@ let react = require("react");
5
5
  react = require_runtime.__toESM(react);
6
6
  let classnames = require("classnames");
7
7
  classnames = require_runtime.__toESM(classnames);
8
- let react_jsx_runtime = require("react/jsx-runtime");
9
8
  //#region src/typography/heading.tsx
10
- const headingGenerator = (htmlType, displayName) => {
11
- const Component = react.default.forwardRef((props, ref) => {
12
- const { prefixCls: customisedCls, className, children, ...otherProps } = props;
13
- const cls = (0, classnames.default)(require_general.getPrefixCls("typography", (0, react.useContext)(require_config_context.ConfigContext).prefixCls, customisedCls), className);
14
- return react.default.createElement(htmlType, {
15
- ...otherProps,
16
- ref,
17
- className: cls
18
- }, children);
19
- });
20
- Component.displayName = displayName;
21
- return Component;
22
- };
23
- const Heading = (props) => {
24
- const { level = 1, ...otherProps } = props;
9
+ const Heading = react.default.forwardRef((props, ref) => {
10
+ const { level = 1, prefixCls: customisedCls, className, children, ...otherProps } = props;
11
+ const prefixCls = require_general.getPrefixCls("typography", (0, react.useContext)(require_config_context.ConfigContext).prefixCls, customisedCls);
25
12
  if (level < 1 || level > 6) {
26
13
  console.warn("The heading level parameter is invalid.");
27
14
  return null;
28
15
  }
29
- return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(headingGenerator(`h${level}`, `H${level}`), { ...otherProps });
30
- };
16
+ const cls = (0, classnames.default)(prefixCls, className);
17
+ return react.default.createElement(`h${level}`, {
18
+ ...otherProps,
19
+ ref,
20
+ className: cls
21
+ }, children);
22
+ });
23
+ Heading.displayName = "Heading";
31
24
  //#endregion
32
25
  exports.default = Heading;
33
26
 
@@ -1 +1 @@
1
- {"version":3,"file":"heading.js","names":["React","getPrefixCls","ConfigContext"],"sources":["../../src/typography/heading.tsx"],"sourcesContent":["import React, { useContext } from 'react';\nimport classNames from 'classnames';\nimport { ConfigContext } from '../config-provider/config-context';\nimport { getPrefixCls } from '../_utils/general';\nimport { HeadingProps } from './types';\n\nconst headingGenerator = (htmlType: string, displayName: string) => {\n const Component = React.forwardRef<HTMLHeadingElement, HeadingProps>(\n (props: HeadingProps, ref): JSX.Element => {\n const { prefixCls: customisedCls, className, children, ...otherProps } = props;\n const configContext = useContext(ConfigContext);\n const prefixCls = getPrefixCls('typography', configContext.prefixCls, customisedCls);\n const cls = classNames(prefixCls, className);\n\n return React.createElement(\n htmlType,\n {\n ...otherProps,\n ref,\n className: cls,\n },\n children\n );\n }\n );\n\n Component.displayName = displayName;\n\n return Component;\n};\n\nconst Heading = (props: HeadingProps): JSX.Element | null => {\n const { level = 1, ...otherProps } = props;\n if (level < 1 || level > 6) {\n console.warn('The heading level parameter is invalid.');\n return null;\n }\n const Component = headingGenerator(`h${level}`, `H${level}`);\n return <Component {...otherProps} />;\n};\n\nexport default Heading;\n"],"mappings":";;;;;;;;;AAMA,MAAM,oBAAoB,UAAkB,gBAAwB;CAClE,MAAM,YAAYA,MAAAA,QAAM,YACrB,OAAqB,QAAqB;EACzC,MAAM,EAAE,WAAW,eAAe,WAAW,UAAU,GAAG,eAAe;EAGzE,MAAM,OAAA,GAAA,WAAA,SADYC,gBAAAA,aAAa,eAAA,GAAA,MAAA,YADEC,uBAAAA,cAAc,CACY,WAAW,cAAc,EAClD,UAAU;AAE5C,SAAOF,MAAAA,QAAM,cACX,UACA;GACE,GAAG;GACH;GACA,WAAW;GACZ,EACD,SACD;GAEJ;AAED,WAAU,cAAc;AAExB,QAAO;;AAGT,MAAM,WAAW,UAA4C;CAC3D,MAAM,EAAE,QAAQ,GAAG,GAAG,eAAe;AACrC,KAAI,QAAQ,KAAK,QAAQ,GAAG;AAC1B,UAAQ,KAAK,0CAA0C;AACvD,SAAO;;AAGT,QAAO,iBAAA,GAAA,kBAAA,KADW,iBAAiB,IAAI,SAAS,IAAI,QAAQ,EACrD,EAAW,GAAI,YAAc,CAAA"}
1
+ {"version":3,"file":"heading.js","names":["React","getPrefixCls","ConfigContext"],"sources":["../../src/typography/heading.tsx"],"sourcesContent":["import React, { useContext } from 'react';\nimport classNames from 'classnames';\nimport { ConfigContext } from '../config-provider/config-context';\nimport { getPrefixCls } from '../_utils/general';\nimport { HeadingProps } from './types';\n\nconst Heading = React.forwardRef<HTMLHeadingElement, HeadingProps>(\n (props, ref) => {\n const { level = 1, prefixCls: customisedCls, className, children, ...otherProps } = props;\n const configContext = useContext(ConfigContext);\n const prefixCls = getPrefixCls('typography', configContext.prefixCls, customisedCls);\n\n if (level < 1 || level > 6) {\n console.warn('The heading level parameter is invalid.');\n return null;\n }\n const cls = classNames(prefixCls, className);\n\n return React.createElement(\n `h${level}`,\n {\n ...otherProps,\n ref,\n className: cls,\n },\n children\n );\n }\n);\n\nHeading.displayName = 'Heading';\n\nexport default Heading;\n"],"mappings":";;;;;;;;AAMA,MAAM,UAAUA,MAAAA,QAAM,YACnB,OAAO,QAAQ;CACd,MAAM,EAAE,QAAQ,GAAG,WAAW,eAAe,WAAW,UAAU,GAAG,eAAe;CAEpF,MAAM,YAAYC,gBAAAA,aAAa,eAAA,GAAA,MAAA,YADEC,uBAAAA,cAAc,CACY,WAAW,cAAc;AAEpF,KAAI,QAAQ,KAAK,QAAQ,GAAG;AAC1B,UAAQ,KAAK,0CAA0C;AACvD,SAAO;;CAET,MAAM,OAAA,GAAA,WAAA,SAAiB,WAAW,UAAU;AAE5C,QAAOF,MAAAA,QAAM,cACX,IAAI,SACJ;EACE,GAAG;EACH;EACA,WAAW;EACZ,EACD,SACD;EAEJ;AAED,QAAQ,cAAc"}
@@ -4,8 +4,6 @@ $tp-prefix: #{$prefix}-typography;
4
4
 
5
5
  .#{$tp-prefix} {
6
6
  box-sizing: border-box;
7
- font-family: $font-family;
8
-
9
7
  & + h1.#{$tp-prefix},
10
8
  & + h2.#{$tp-prefix},
11
9
  & + h3.#{$tp-prefix},
@@ -46,22 +44,6 @@ $tp-prefix: #{$prefix}-typography;
46
44
  background-color: var(--ty-typography-mark-bg);
47
45
  }
48
46
 
49
- u {
50
- text-decoration: underline;
51
- }
52
-
53
- del {
54
- text-decoration: line-through;
55
- }
56
-
57
- strong {
58
- font-weight: 600;
59
- }
60
-
61
- i {
62
- font-style: italic;
63
- }
64
-
65
47
  sup {
66
48
  vertical-align: super;
67
49
  }
@@ -1,6 +1,5 @@
1
1
  .ty-typography {
2
2
  box-sizing: border-box;
3
- font-family: -apple-system, blinkmacsystemfont, "Segoe UI", roboto, "Helvetica Neue", arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
4
3
  }
5
4
  .ty-typography + h1.ty-typography, .ty-typography + h2.ty-typography, .ty-typography + h3.ty-typography, .ty-typography + h4.ty-typography {
6
5
  margin-top: 1.2em;
@@ -31,18 +30,6 @@
31
30
  padding: 0;
32
31
  background-color: var(--ty-typography-mark-bg);
33
32
  }
34
- .ty-typography u {
35
- text-decoration: underline;
36
- }
37
- .ty-typography del {
38
- text-decoration: line-through;
39
- }
40
- .ty-typography strong {
41
- font-weight: 600;
42
- }
43
- .ty-typography i {
44
- font-style: italic;
45
- }
46
33
  .ty-typography sup {
47
34
  vertical-align: super;
48
35
  }
@@ -1,7 +1,8 @@
1
1
  import { TextProps } from "./types.js";
2
+ import React from "react";
2
3
 
3
4
  //#region src/typography/text.d.ts
4
- declare const Text: (props: TextProps) => JSX.Element;
5
+ declare const Text: React.ForwardRefExoticComponent<Omit<TextProps, "ref"> & React.RefAttributes<HTMLSpanElement>>;
5
6
  //#endregion
6
7
  export { Text };
7
8
  //# sourceMappingURL=text.d.ts.map
@@ -11,7 +11,7 @@ const tagGenerator = (isRequired, tag, element) => {
11
11
  if (!isRequired) return element;
12
12
  return react.default.createElement(tag, {}, element);
13
13
  };
14
- const Text = (props) => {
14
+ const Text = react.default.forwardRef((props, ref) => {
15
15
  const { code = false, del = false, underline = false, strong = false, italic = false, mark = false, sub = false, sup = false, className, children, prefixCls: customisedCls, ...otherProps } = props;
16
16
  let Node = tagGenerator(code, "code", children);
17
17
  Node = tagGenerator(del, "del", Node);
@@ -24,10 +24,12 @@ const Text = (props) => {
24
24
  const cls = (0, classnames.default)(className, require_general.getPrefixCls("typography", (0, react.useContext)(require_config_context.ConfigContext).prefixCls, customisedCls));
25
25
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
26
26
  ...otherProps,
27
+ ref,
27
28
  className: cls,
28
29
  children: Node
29
30
  });
30
- };
31
+ });
32
+ Text.displayName = "Text";
31
33
  //#endregion
32
34
  exports.default = Text;
33
35
 
@@ -1 +1 @@
1
- {"version":3,"file":"text.js","names":["React","getPrefixCls","ConfigContext"],"sources":["../../src/typography/text.tsx"],"sourcesContent":["import React, { useContext } from 'react';\nimport classNames from 'classnames';\nimport { ConfigContext } from '../config-provider/config-context';\nimport { getPrefixCls } from '../_utils/general';\nimport { TextProps } from './types';\n\nconst tagGenerator = (\n isRequired: boolean,\n tag: string,\n element: React.ReactNode\n): React.ReactNode => {\n if (!isRequired) return element;\n return React.createElement(tag, {}, element);\n};\n\nconst Text = (props: TextProps): JSX.Element => {\n const {\n code = false,\n del = false,\n underline = false,\n strong = false,\n italic = false,\n mark = false,\n sub = false,\n sup = false,\n className,\n children,\n prefixCls: customisedCls,\n ...otherProps\n } = props;\n\n let Node = tagGenerator(code, 'code', children);\n Node = tagGenerator(del, 'del', Node);\n Node = tagGenerator(underline, 'u', Node);\n Node = tagGenerator(strong, 'strong', Node);\n Node = tagGenerator(italic, 'i', Node);\n Node = tagGenerator(mark, 'mark', Node);\n Node = tagGenerator(sub, 'sub', Node);\n Node = tagGenerator(sup, 'sup', Node);\n\n const configContext = useContext(ConfigContext);\n const prefixCls = getPrefixCls('typography', configContext.prefixCls, customisedCls);\n const cls = classNames(className, prefixCls);\n\n return (\n <span {...otherProps} className={cls}>\n {Node}\n </span>\n );\n};\n\nexport default Text;\n"],"mappings":";;;;;;;;;AAMA,MAAM,gBACJ,YACA,KACA,YACoB;AACpB,KAAI,CAAC,WAAY,QAAO;AACxB,QAAOA,MAAAA,QAAM,cAAc,KAAK,EAAE,EAAE,QAAQ;;AAG9C,MAAM,QAAQ,UAAkC;CAC9C,MAAM,EACJ,OAAO,OACP,MAAM,OACN,YAAY,OACZ,SAAS,OACT,SAAS,OACT,OAAO,OACP,MAAM,OACN,MAAM,OACN,WACA,UACA,WAAW,eACX,GAAG,eACD;CAEJ,IAAI,OAAO,aAAa,MAAM,QAAQ,SAAS;AAC/C,QAAO,aAAa,KAAK,OAAO,KAAK;AACrC,QAAO,aAAa,WAAW,KAAK,KAAK;AACzC,QAAO,aAAa,QAAQ,UAAU,KAAK;AAC3C,QAAO,aAAa,QAAQ,KAAK,KAAK;AACtC,QAAO,aAAa,MAAM,QAAQ,KAAK;AACvC,QAAO,aAAa,KAAK,OAAO,KAAK;AACrC,QAAO,aAAa,KAAK,OAAO,KAAK;CAIrC,MAAM,OAAA,GAAA,WAAA,SAAiB,WADLC,gBAAAA,aAAa,eAAA,GAAA,MAAA,YADEC,uBAAAA,cAAc,CACY,WAAW,cAAc,CACxC;AAE5C,QACE,iBAAA,GAAA,kBAAA,KAAC,QAAD;EAAM,GAAI;EAAY,WAAW;YAC9B;EACI,CAAA"}
1
+ {"version":3,"file":"text.js","names":["React","getPrefixCls","ConfigContext"],"sources":["../../src/typography/text.tsx"],"sourcesContent":["import React, { useContext } from 'react';\nimport classNames from 'classnames';\nimport { ConfigContext } from '../config-provider/config-context';\nimport { getPrefixCls } from '../_utils/general';\nimport { TextProps } from './types';\n\nconst tagGenerator = (\n isRequired: boolean,\n tag: string,\n element: React.ReactNode\n): React.ReactNode => {\n if (!isRequired) return element;\n return React.createElement(tag, {}, element);\n};\n\nconst Text = React.forwardRef<HTMLSpanElement, TextProps>(\n (props, ref) => {\n const {\n code = false,\n del = false,\n underline = false,\n strong = false,\n italic = false,\n mark = false,\n sub = false,\n sup = false,\n className,\n children,\n prefixCls: customisedCls,\n ...otherProps\n } = props;\n\n let Node = tagGenerator(code, 'code', children);\n Node = tagGenerator(del, 'del', Node);\n Node = tagGenerator(underline, 'u', Node);\n Node = tagGenerator(strong, 'strong', Node);\n Node = tagGenerator(italic, 'i', Node);\n Node = tagGenerator(mark, 'mark', Node);\n Node = tagGenerator(sub, 'sub', Node);\n Node = tagGenerator(sup, 'sup', Node);\n\n const configContext = useContext(ConfigContext);\n const prefixCls = getPrefixCls('typography', configContext.prefixCls, customisedCls);\n const cls = classNames(className, prefixCls);\n\n return (\n <span {...otherProps} ref={ref} className={cls}>\n {Node}\n </span>\n );\n }\n);\n\nText.displayName = 'Text';\n\nexport default Text;\n"],"mappings":";;;;;;;;;AAMA,MAAM,gBACJ,YACA,KACA,YACoB;AACpB,KAAI,CAAC,WAAY,QAAO;AACxB,QAAOA,MAAAA,QAAM,cAAc,KAAK,EAAE,EAAE,QAAQ;;AAG9C,MAAM,OAAOA,MAAAA,QAAM,YAChB,OAAO,QAAQ;CACd,MAAM,EACJ,OAAO,OACP,MAAM,OACN,YAAY,OACZ,SAAS,OACT,SAAS,OACT,OAAO,OACP,MAAM,OACN,MAAM,OACN,WACA,UACA,WAAW,eACX,GAAG,eACD;CAEJ,IAAI,OAAO,aAAa,MAAM,QAAQ,SAAS;AAC/C,QAAO,aAAa,KAAK,OAAO,KAAK;AACrC,QAAO,aAAa,WAAW,KAAK,KAAK;AACzC,QAAO,aAAa,QAAQ,UAAU,KAAK;AAC3C,QAAO,aAAa,QAAQ,KAAK,KAAK;AACtC,QAAO,aAAa,MAAM,QAAQ,KAAK;AACvC,QAAO,aAAa,KAAK,OAAO,KAAK;AACrC,QAAO,aAAa,KAAK,OAAO,KAAK;CAIrC,MAAM,OAAA,GAAA,WAAA,SAAiB,WADLC,gBAAAA,aAAa,eAAA,GAAA,MAAA,YADEC,uBAAAA,cAAc,CACY,WAAW,cAAc,CACxC;AAE5C,QACE,iBAAA,GAAA,kBAAA,KAAC,QAAD;EAAM,GAAI;EAAiB;EAAK,WAAW;YACxC;EACI,CAAA;EAGZ;AAED,KAAK,cAAc"}
@@ -9,7 +9,7 @@ interface ParagraphProps extends BaseProps, React.PropsWithRef<JSX.IntrinsicElem
9
9
  children?: React.ReactNode;
10
10
  }
11
11
  interface HeadingProps extends BaseProps, React.PropsWithRef<React.HTMLAttributes<HTMLHeadingElement>> {
12
- level?: number;
12
+ level?: 1 | 2 | 3 | 4 | 5 | 6;
13
13
  children?: React.ReactNode;
14
14
  }
15
15
  interface TextProps extends BaseProps, React.PropsWithRef<JSX.IntrinsicElements['span']> {
@@ -0,0 +1,5 @@
1
+ @use '../../style/variables' as *;
2
+
3
+ .#{$prefix}-icon-spin {
4
+ animation: ty-rotate 1s linear infinite;
5
+ }
@@ -0,0 +1,3 @@
1
+ .ty-icon-spin {
2
+ animation: ty-rotate 1s linear infinite;
3
+ }
@@ -0,0 +1,9 @@
1
+ import { ForwardRefExoticComponent, RefAttributes } from "react";
2
+ import { IconProps } from "@tiny-design/icons";
3
+
4
+ //#region src/with-spin/with-spin.d.ts
5
+ type IconComponent = ForwardRefExoticComponent<IconProps & RefAttributes<SVGSVGElement>>;
6
+ declare function withSpin(Icon: IconComponent): IconComponent;
7
+ //#endregion
8
+ export { withSpin };
9
+ //# sourceMappingURL=with-spin.d.ts.map
@@ -0,0 +1,22 @@
1
+ const require_runtime = require("../_virtual/_rolldown/runtime.js");
2
+ let react = require("react");
3
+ let classnames = require("classnames");
4
+ classnames = require_runtime.__toESM(classnames);
5
+ let react_jsx_runtime = require("react/jsx-runtime");
6
+ //#region src/with-spin/with-spin.tsx
7
+ function withSpin(Icon) {
8
+ const SpinIcon = (0, react.forwardRef)((props, ref) => {
9
+ const { className, ...rest } = props;
10
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Icon, {
11
+ ref,
12
+ className: (0, classnames.default)("ty-icon-spin", className),
13
+ ...rest
14
+ });
15
+ });
16
+ SpinIcon.displayName = `withSpin(${Icon.displayName || "Icon"})`;
17
+ return SpinIcon;
18
+ }
19
+ //#endregion
20
+ exports.withSpin = withSpin;
21
+
22
+ //# sourceMappingURL=with-spin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"with-spin.js","names":[],"sources":["../../src/with-spin/with-spin.tsx"],"sourcesContent":["import { forwardRef, type ForwardRefExoticComponent, type RefAttributes } from 'react';\nimport type { IconProps } from '@tiny-design/icons';\nimport classNames from 'classnames';\n\ntype IconComponent = ForwardRefExoticComponent<IconProps & RefAttributes<SVGSVGElement>>;\n\nexport function withSpin(Icon: IconComponent): IconComponent {\n const SpinIcon = forwardRef<SVGSVGElement, IconProps>((props, ref) => {\n const { className, ...rest } = props;\n\n return (\n <Icon\n ref={ref}\n className={classNames('ty-icon-spin', className)}\n {...rest}\n />\n );\n });\n\n const name = Icon.displayName || 'Icon';\n SpinIcon.displayName = `withSpin(${name})`;\n\n return SpinIcon;\n}\n"],"mappings":";;;;;;AAMA,SAAgB,SAAS,MAAoC;CAC3D,MAAM,YAAA,GAAA,MAAA,aAAiD,OAAO,QAAQ;EACpE,MAAM,EAAE,WAAW,GAAG,SAAS;AAE/B,SACE,iBAAA,GAAA,kBAAA,KAAC,MAAD;GACO;GACL,YAAA,GAAA,WAAA,SAAsB,gBAAgB,UAAU;GAChD,GAAI;GACJ,CAAA;GAEJ;AAGF,UAAS,cAAc,YADV,KAAK,eAAe,OACO;AAExC,QAAO"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tiny-design/react",
3
- "version": "1.0.4",
3
+ "version": "1.0.10",
4
4
  "description": "A friendly UI component set for React",
5
5
  "license": "MIT",
6
6
  "keywords": [
@@ -23,6 +23,9 @@
23
23
  },
24
24
  "author": "Di Wang<wangdicoder@gmail.com>",
25
25
  "homepage": "https://wangdicoder.github.io/tiny-design/",
26
+ "publishConfig": {
27
+ "access": "public"
28
+ },
26
29
  "main": "lib/index.js",
27
30
  "module": "es/index.js",
28
31
  "typings": "lib/index.d.ts",
@@ -43,27 +46,17 @@
43
46
  "lib",
44
47
  "es"
45
48
  ],
46
- "scripts": {
47
- "build": "npm run clean && tsdown && node scripts/build-styles.js && node scripts/inject-style-imports.js",
48
- "clean": "rimraf lib es",
49
- "test": "jest",
50
- "test:watch": "jest --watch",
51
- "test:coverage": "jest --coverage",
52
- "test:update": "jest --updateSnapshot",
53
- "lint": "eslint src/",
54
- "lint:style": "stylelint \"src/**/*.scss\"",
55
- "lint:style:fix": "npm run lint:style -- --fix"
56
- },
57
49
  "peerDependencies": {
58
50
  "react": ">=18.0.0",
59
51
  "react-dom": ">=18.0.0"
60
52
  },
61
53
  "dependencies": {
62
54
  "@popperjs/core": "^2.11.4",
63
- "@tiny-design/tokens": "workspace:*",
64
55
  "classnames": "^2.3.1",
65
56
  "react-transition-group": "^4.4.2",
66
- "tslib": "^2.3.1"
57
+ "tslib": "^2.3.1",
58
+ "@tiny-design/icons": "1.0.10",
59
+ "@tiny-design/tokens": "1.0.10"
67
60
  },
68
61
  "devDependencies": {
69
62
  "@testing-library/jest-dom": "^6.0.0",
@@ -83,5 +76,16 @@
83
76
  "ts-jest": "^29.0.0",
84
77
  "tsdown": "^0.21.1",
85
78
  "typescript": "^5.4.0"
79
+ },
80
+ "scripts": {
81
+ "build": "npm run clean && tsdown && node scripts/build-styles.js && node scripts/inject-style-imports.js",
82
+ "clean": "rimraf lib es",
83
+ "test": "jest",
84
+ "test:watch": "jest --watch",
85
+ "test:coverage": "jest --coverage",
86
+ "test:update": "jest --updateSnapshot",
87
+ "lint": "eslint src/",
88
+ "lint:style": "stylelint \"src/**/*.scss\"",
89
+ "lint:style:fix": "npm run lint:style -- --fix"
86
90
  }
87
- }
91
+ }
package/es/icon/icon.d.ts DELETED
@@ -1,8 +0,0 @@
1
- import { IconProps } from "./types.js";
2
- import React from "react";
3
-
4
- //#region src/icon/icon.d.ts
5
- declare const Icon: React.MemoExoticComponent<React.ForwardRefExoticComponent<IconProps & React.RefAttributes<HTMLElement>>>;
6
- //#endregion
7
- export { Icon };
8
- //# sourceMappingURL=icon.d.ts.map
package/es/icon/icon.js DELETED
@@ -1,25 +0,0 @@
1
- import { ConfigContext } from "../config-provider/config-context.js";
2
- import { getPrefixCls } from "../_utils/general.js";
3
- import React, { useContext } from "react";
4
- import classNames from "classnames";
5
- import { jsx } from "react/jsx-runtime";
6
- //#region src/icon/icon.tsx
7
- const Icon = React.memo(React.forwardRef((props, ref) => {
8
- const { name, color, size, style, spin, className, prefixCls: customisedCls, ...otherProps } = props;
9
- const prefixCls = getPrefixCls("icon", useContext(ConfigContext).prefixCls, customisedCls);
10
- return /* @__PURE__ */ jsx("i", {
11
- ref,
12
- className: classNames(prefixCls, className, `ty--${name}`, { [`${prefixCls}_spin`]: spin }),
13
- style: {
14
- color,
15
- fontSize: size,
16
- ...style
17
- },
18
- ...otherProps
19
- });
20
- }));
21
- Icon.displayName = "Icon";
22
- //#endregion
23
- export { Icon as default };
24
-
25
- //# sourceMappingURL=icon.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"icon.js","names":[],"sources":["../../src/icon/icon.tsx"],"sourcesContent":["import React, { useContext } from 'react';\nimport classNames from 'classnames';\nimport { ConfigContext } from '../config-provider/config-context';\nimport { getPrefixCls } from '../_utils/general';\nimport { IconProps } from './types';\n\nconst Icon = React.memo(React.forwardRef<HTMLElement, IconProps>((props, ref) => {\n const {\n name,\n color,\n size,\n style,\n spin,\n className,\n prefixCls: customisedCls,\n ...otherProps\n } = props;\n const configContext = useContext(ConfigContext);\n const prefixCls = getPrefixCls('icon', configContext.prefixCls, customisedCls);\n const cls = classNames(prefixCls, className, `ty--${name}`, {\n [`${prefixCls}_spin`]: spin,\n });\n return <i ref={ref} className={cls} style={{ color, fontSize: size, ...style }} {...otherProps} />;\n}));\n\nIcon.displayName = 'Icon';\n\nexport default Icon;\n"],"mappings":";;;;;;AAMA,MAAM,OAAO,MAAM,KAAK,MAAM,YAAoC,OAAO,QAAQ;CAC/E,MAAM,EACJ,MACA,OACA,MACA,OACA,MACA,WACA,WAAW,eACX,GAAG,eACD;CAEJ,MAAM,YAAY,aAAa,QADT,WAAW,cAAc,CACM,WAAW,cAAc;AAI9E,QAAO,oBAAC,KAAD;EAAQ;EAAK,WAHR,WAAW,WAAW,WAAW,OAAO,QAAQ,GACzD,GAAG,UAAU,SAAS,MACxB,CAAC;EACkC,OAAO;GAAE;GAAO,UAAU;GAAM,GAAG;GAAO;EAAE,GAAI;EAAc,CAAA;EAClG,CAAC;AAEH,KAAK,cAAc"}
@@ -1 +0,0 @@
1
- import { Icon } from "./icon.js";
package/es/icon/index.js DELETED
@@ -1,9 +0,0 @@
1
- import '../style/base.css';
2
- import './style/index.css';
3
- import Icon from "./icon.js";
4
- //#region src/icon/index.tsx
5
- var icon_default = Icon;
6
- //#endregion
7
- export { icon_default as default };
8
-
9
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../src/icon/index.tsx"],"sourcesContent":["import Icon from './icon';\n\nexport default Icon;\n"],"mappings":";;AAEA,IAAA,eAAe"}
@@ -1,16 +0,0 @@
1
- @use '../../style/variables' as *;
2
- @use '../../style/font' as *;
3
-
4
- .#{$prefix}-icon {
5
- font-family: 'tiny' !important;
6
- line-height: 1;
7
- font-size: 16px;
8
- font-style: normal;
9
- -webkit-font-smoothing: antialiased;
10
- -moz-osx-font-smoothing: grayscale;
11
-
12
- &_spin:before {
13
- display: inline-block;
14
- animation: ty-rotate 1s linear infinite;
15
- }
16
- }