diff --git a/packages/func/lib/file/index.js b/packages/func/lib/file/index.js index 22c9b0a..059ee7e 100644 --- a/packages/func/lib/file/index.js +++ b/packages/func/lib/file/index.js @@ -167,8 +167,7 @@ var urlToBase64V2 = (url) => { }); }; function base64toBlob(base64) { - if (!base64) - return; + if (!base64) return; var arr = base64.split(","), mime = arr[0].match(/:(.*?);/)[1], bstr = atob(arr[1]), n = bstr.length, u8arr = new Uint8Array(n); while (n--) { u8arr[n] = bstr.charCodeAt(n); @@ -186,15 +185,13 @@ var downloadPackageImages = async (imgDataList, zipName) => { let src = imgDataList[i2].url; let suffix = src.substring(src.lastIndexOf(".")); let base64ByUrl = await urlToBase64V2(imgDataList[i2].url); - if (!base64ByUrl) - continue; + if (!base64ByUrl) continue; let blob = base64toBlob(base64ByUrl); imgDataDownLoadList.push(imgDataList[i2]); imgBlobList.push(blob); imageSuffix.push(suffix); } - if (imgBlobList.length === 0) - throw new Error("The number of pictures is zero !"); + if (imgBlobList.length === 0) throw new Error("The number of pictures is zero !"); if (imgBlobList.length > 0) { for (var i = 0; i < imgBlobList.length; i++) { img == null ? void 0 : img.file( @@ -215,17 +212,12 @@ var downloadPackageImages = async (imgDataList, zipName) => { } }; function getFileSize(size) { - if (!size) - return ""; + if (!size) return ""; var num = 1024; - if (size < num) - return size + "B"; - if (size < Math.pow(num, 2)) - return (size / num).toFixed(2) + "K"; - if (size < Math.pow(num, 3)) - return (size / Math.pow(num, 2)).toFixed(2) + "M"; - if (size < Math.pow(num, 4)) - return (size / Math.pow(num, 3)).toFixed(2) + "G"; + if (size < num) return size + "B"; + if (size < Math.pow(num, 2)) return (size / num).toFixed(2) + "K"; + if (size < Math.pow(num, 3)) return (size / Math.pow(num, 2)).toFixed(2) + "M"; + if (size < Math.pow(num, 4)) return (size / Math.pow(num, 3)).toFixed(2) + "G"; return (size / Math.pow(num, 4)).toFixed(2) + "T"; } var dataURLToBlob = (dataurl) => { @@ -242,8 +234,7 @@ var dataURLToBlob = (dataurl) => { var generateImg = (_imgKey, host = "http://10.0.0.120") => { let imgKey = _imgKey; let imgUrl = ""; - if (!imgKey) - return ""; + if (!imgKey) return ""; if (/(http|https):\/\/([\w.]+\/?)\S*/ig.test(imgKey)) { return imgKey; } diff --git a/packages/func/lib/number/index.js b/packages/func/lib/number/index.js index 371a003..af2ab79 100644 --- a/packages/func/lib/number/index.js +++ b/packages/func/lib/number/index.js @@ -43,8 +43,7 @@ var setNumberAccuracy = (originNumber, accuracy = 0, isCeil = true) => { var toRealNumber = (number) => { if (isNaN(number) || number === Infinity) { return 0; - } else - return number; + } else return number; }; // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { diff --git a/packages/func/lib/performance/index.js b/packages/func/lib/performance/index.js index 1d12f21..972dfb8 100644 --- a/packages/func/lib/performance/index.js +++ b/packages/func/lib/performance/index.js @@ -23,8 +23,7 @@ __export(performance_exports, { }); module.exports = __toCommonJS(performance_exports); var speedConvert = (bps, contertUnit = 8) => { - if (bps === void 0) - return `0KB/s`; + if (bps === void 0) return `0KB/s`; const byte = bps / contertUnit; if (bps > 1024 * 1024 * 1024) { return `${(byte / 1024 / 1024 / 1024).toFixed(2)}GB/s`; diff --git a/packages/func/lib/string/index.js b/packages/func/lib/string/index.js index 6d0895c..b9118fb 100644 --- a/packages/func/lib/string/index.js +++ b/packages/func/lib/string/index.js @@ -31,10 +31,8 @@ var getStrLength = function(str) { var realLength = 0, len = str.length, charCode = -1; for (var i = 0; i < len; i++) { charCode = str.charCodeAt(i); - if (charCode >= 0 && charCode <= 128) - realLength += 1; - else - realLength += 2; + if (charCode >= 0 && charCode <= 128) realLength += 1; + else realLength += 2; } return realLength; }; diff --git a/packages/func/lib/utils/index.js b/packages/func/lib/utils/index.js index 78022ad..09e3faa 100644 --- a/packages/func/lib/utils/index.js +++ b/packages/func/lib/utils/index.js @@ -84,8 +84,7 @@ function getChromeVersion() { const arr = navigator.userAgent.split(" "); let chromeVersion = ""; for (let i = 0; i < arr.length; i++) { - if (/chrome/i.test(arr[i])) - chromeVersion = arr[i]; + if (/chrome/i.test(arr[i])) chromeVersion = arr[i]; } if (chromeVersion) { return Number(chromeVersion.split("/")[1].split(".")[0]); diff --git a/packages/map/package.json b/packages/map/package.json index af4cf4a..2830636 100644 --- a/packages/map/package.json +++ b/packages/map/package.json @@ -51,6 +51,7 @@ "react-map-gl": "^7.1.7" }, "devDependencies": { - "@types/mapbox__mapbox-gl-draw": "^1.4.6" + "@types/mapbox__mapbox-gl-draw": "^1.4.6", + "axios": "^1.7.2" } } diff --git a/packages/meta/src/date-picker/style/index.ts b/packages/meta/src/date-picker/style/index.ts index abb3caf..52c6537 100644 --- a/packages/meta/src/date-picker/style/index.ts +++ b/packages/meta/src/date-picker/style/index.ts @@ -2,7 +2,7 @@ import type { CSSObject } from '@ant-design/cssinjs'; import { unit } from '@ant-design/cssinjs'; import { TinyColor } from '@ctrl/tinycolor'; -import type { SharedComponentToken, SharedInputToken } from '../../input/style'; +import type { SharedComponentToken, SharedInputToken } from '../../input/style/token'; import { genActiveStyle, genBasicInputStyle, diff --git a/packages/meta/src/dropdown/style/index.ts b/packages/meta/src/dropdown/style/index.ts index 44d0ef5..93d4d86 100644 --- a/packages/meta/src/dropdown/style/index.ts +++ b/packages/meta/src/dropdown/style/index.ts @@ -32,9 +32,12 @@ export interface ComponentToken extends ArrowToken, ArrowOffsetToken { paddingBlock: CSSProperties['paddingBlock']; } +// @ts-ignore export interface DropdownToken extends FullToken<'Dropdown'> { dropdownArrowDistance: number | string; + zIndexPopup?: number; dropdownEdgeChildPadding: number; + paddingBlock?: number | string; menuCls: string; } @@ -158,6 +161,7 @@ const genBaseStyle: GenerateStyle = (token) => { // ============================================================= // == Arrow style == // ============================================================= + // @ts-ignore getArrowStyle(token, colorBgElevated, { arrowPlacement: { top: true, bottom: true }, }), @@ -343,6 +347,7 @@ const genBaseStyle: GenerateStyle = (token) => { }; // ============================== Export ============================== +// @ts-ignore export const prepareComponentToken: GetDefaultToken<'Dropdown'> = (token) => ({ zIndexPopup: token.zIndexPopupBase + 50, paddingBlock: (token.controlHeight - token.fontSize * token.lineHeight) / 2, @@ -354,6 +359,7 @@ export const prepareComponentToken: GetDefaultToken<'Dropdown'> = (token) => ({ }); export default genStyleHooks( + // @ts-ignore 'Dropdown', (token) => { const { marginXXS, sizePopupArrow, paddingXXS, componentCls } = token; diff --git a/packages/meta/src/float-button/FloatButtonGroup.tsx b/packages/meta/src/float-button/FloatButtonGroup.tsx index 6abfe4d..2dc903a 100644 --- a/packages/meta/src/float-button/FloatButtonGroup.tsx +++ b/packages/meta/src/float-button/FloatButtonGroup.tsx @@ -31,6 +31,7 @@ const FloatButtonGroup: React.FC = (props) => { ...floatButtonProps } = props; + // @ts-ignore const { direction, getPrefixCls, floatButtonGroup } = useContext(ConfigContext); diff --git a/packages/meta/src/float-button/style/index.ts b/packages/meta/src/float-button/style/index.ts index 79090d2..858f430 100644 --- a/packages/meta/src/float-button/style/index.ts +++ b/packages/meta/src/float-button/style/index.ts @@ -22,6 +22,7 @@ export interface ComponentToken { dotOffsetInSquare: number; } +// @ts-ignore type FloatButtonToken = FullToken<'FloatButton'> & { floatButtonColor: string; floatButtonBackgroundColor: string; @@ -218,8 +219,11 @@ const sharedFloatButtonStyle: GenerateStyle = (toke floatButtonIconSize, floatButtonSize, borderRadiusLG, + // @ts-ignore badgeOffset, + // @ts-ignore dotOffsetInSquare, + // @ts-ignore dotOffsetInCircle, calc, } = token; @@ -366,12 +370,14 @@ const sharedFloatButtonStyle: GenerateStyle = (toke }; // ============================== Export ============================== + // @ts-ignore export const prepareComponentToken: GetDefaultToken<'FloatButton'> = (token) => ({ dotOffsetInCircle: getOffset(token.controlHeightLG / 2), dotOffsetInSquare: getOffset(token.borderRadiusLG), }); export default genStyleHooks( + // @ts-ignore 'FloatButton', (token) => { const { diff --git a/packages/meta/src/form/demo/custom-feedback-icons.tsx b/packages/meta/src/form/demo/custom-feedback-icons.tsx index 4719749..213047a 100644 --- a/packages/meta/src/form/demo/custom-feedback-icons.tsx +++ b/packages/meta/src/form/demo/custom-feedback-icons.tsx @@ -2,7 +2,6 @@ import React from 'react'; import { AlertFilled, CloseSquareFilled } from '@ant-design/icons'; import { Button, Form, Input, Tooltip } from 'antd'; import { createStyles, css } from 'antd-style'; -import uniqueId from 'lodash/uniqueId'; const useStyle = createStyles(() => ({ 'custom-feedback-icons': css` @@ -25,7 +24,6 @@ const App: React.FC = () => { error: (
{error}
)} color="red" > @@ -54,7 +52,6 @@ const App: React.FC = () => { error: (
{error}
)} color="pink" > diff --git a/packages/meta/src/image/index.tsx b/packages/meta/src/image/index.tsx index 45d02ba..3c37796 100644 --- a/packages/meta/src/image/index.tsx +++ b/packages/meta/src/image/index.tsx @@ -68,8 +68,10 @@ const Image: CompositionImage = (props) => { transitionName: getTransitionName(rootPrefixCls, 'zoom', _preview.transitionName), maskTransitionName: getTransitionName(rootPrefixCls, 'fade', _preview.maskTransitionName), zIndex, + // @ts-ignore closeIcon: closeIcon ?? image?.preview?.closeIcon, }; + // @ts-ignore }, [preview, imageLocale, image?.preview?.closeIcon]); const mergedStyle: React.CSSProperties = { ...image?.style, ...style }; diff --git a/packages/meta/src/image/style/index.ts b/packages/meta/src/image/style/index.ts index 09e39bd..77861ec 100644 --- a/packages/meta/src/image/style/index.ts +++ b/packages/meta/src/image/style/index.ts @@ -36,6 +36,7 @@ export interface ComponentToken { previewOperationColorDisabled: string; } + // @ts-ignore export interface ImageToken extends FullToken<'Image'> { previewCls: string; modalMaskBg: string; @@ -85,7 +86,9 @@ export const genPreviewOperationsStyle = (token: ImageToken): CSSObject => { marginXL, margin, paddingLG, + // @ts-ignore previewOperationColorDisabled, + // @ts-ignore previewOperationHoverColor, motionDurationSlow, iconCls, @@ -107,6 +110,7 @@ export const genPreviewOperationsStyle = (token: ImageToken): CSSObject => { display: 'flex', flexDirection: 'column', alignItems: 'center', + // @ts-ignore color: token.previewOperationColor, }, [`${previewCls}-progress`]: { @@ -134,6 +138,7 @@ export const genPreviewOperationsStyle = (token: ImageToken): CSSObject => { }, [`& > ${iconCls}`]: { + // @ts-ignore fontSize: token.previewOperationSize, }, }, @@ -165,6 +170,7 @@ export const genPreviewOperationsStyle = (token: ImageToken): CSSObject => { }, [`& > ${iconCls}`]: { + // @ts-ignore fontSize: token.previewOperationSize, }, }, @@ -176,8 +182,10 @@ export const genPreviewSwitchStyle = (token: ImageToken): CSSObject => { const { modalMaskBg, iconCls, + // @ts-ignore previewOperationColorDisabled, previewCls, + // @ts-ignore zIndexPopup, motionDurationSlow, } = token; @@ -196,6 +204,7 @@ export const genPreviewSwitchStyle = (token: ImageToken): CSSObject => { width: token.imagePreviewSwitchSize, height: token.imagePreviewSwitchSize, marginTop: token.calc(token.imagePreviewSwitchSize).mul(-1).div(2).equal(), + // @ts-ignore color: token.previewOperationColor, background: operationBg.toRgbString(), borderRadius: '50%', @@ -219,6 +228,7 @@ export const genPreviewSwitchStyle = (token: ImageToken): CSSObject => { }, }, [`> ${iconCls}`]: { + // @ts-ignore fontSize: token.previewOperationSize, }, }, @@ -299,6 +309,7 @@ export const genImagePreviewStyle: GenerateStyle = (token: ImageToke { [`${componentCls}-preview-root`]: { [`${previewCls}-wrap`]: { + // @ts-ignore zIndex: token.zIndexPopup, }, }, @@ -308,6 +319,7 @@ export const genImagePreviewStyle: GenerateStyle = (token: ImageToke { [`${componentCls}-preview-operations-wrapper`]: { position: 'fixed', + // @ts-ignore zIndex: token.calc(token.zIndexPopup).add(1).equal({ unit: false }), }, '&': [genPreviewOperationsStyle(token), genPreviewSwitchStyle(token)], @@ -358,6 +370,7 @@ const genPreviewMotion: GenerateStyle = (token) => { }; // ============================== Export ============================== + // @ts-ignore export const prepareComponentToken: GetDefaultToken<'Image'> = (token) => ({ zIndexPopup: token.zIndexPopupBase + 80, previewOperationColor: new TinyColor(token.colorTextLightSolid).setAlpha(0.65).toRgbString(), @@ -369,6 +382,7 @@ export const prepareComponentToken: GetDefaultToken<'Image'> = (token) => ({ }); export default genStyleHooks( + // @ts-ignore 'Image', (token) => { const previewCls = `${token.componentCls}-preview`; diff --git a/packages/meta/src/input-number/index.tsx b/packages/meta/src/input-number/index.tsx index b0c4b30..bc93711 100644 --- a/packages/meta/src/input-number/index.tsx +++ b/packages/meta/src/input-number/index.tsx @@ -156,6 +156,7 @@ const InputNumber = React.forwardRef((props, } classNames={{ input: inputNumberClass, + // @ts-ignore variant: classNames( { [`${prefixCls}-${variant}`]: enableVariantCls, diff --git a/packages/meta/src/input-number/style/token.ts b/packages/meta/src/input-number/style/token.ts index 67fba8d..2266ed1 100644 --- a/packages/meta/src/input-number/style/token.ts +++ b/packages/meta/src/input-number/style/token.ts @@ -60,6 +60,7 @@ export interface ComponentToken extends SharedComponentToken { export type InputNumberToken = FullToken<'InputNumber'> & SharedInputToken; export const prepareComponentToken: GetDefaultToken<'InputNumber'> = (token) => { + // @ts-ignore const handleVisible = token.handleVisible ?? 'auto'; return { diff --git a/packages/meta/src/input/Input.tsx b/packages/meta/src/input/Input.tsx index 5011696..3182f2e 100644 --- a/packages/meta/src/input/Input.tsx +++ b/packages/meta/src/input/Input.tsx @@ -180,6 +180,7 @@ const Input = forwardRef((props, ref) => { ); + // @ts-ignore const mergedAllowClear = getAllowClear(allowClear ?? input?.allowClear); const [variant, enableVariantCls] = useVariant(customVariant, bordered); @@ -221,6 +222,7 @@ const Input = forwardRef((props, ref) => { input?.classNames?.input, hashId, ), + // @ts-ignore variant: classNames( { [`${prefixCls}-${variant}`]: enableVariantCls, diff --git a/packages/meta/src/input/TextArea.tsx b/packages/meta/src/input/TextArea.tsx index 851a86a..ff1a0f1 100644 --- a/packages/meta/src/input/TextArea.tsx +++ b/packages/meta/src/input/TextArea.tsx @@ -62,6 +62,7 @@ const TextArea = forwardRef((props, ref) => { deprecated(!('bordered' in props), 'bordered', 'variant'); } + // @ts-ignore const { getPrefixCls, direction, textArea } = React.useContext(ConfigContext); // ===================== Size ===================== diff --git a/packages/meta/src/input/demo/advance-count.tsx b/packages/meta/src/input/demo/advance-count.tsx index 079a227..8fc26c3 100644 --- a/packages/meta/src/input/demo/advance-count.tsx +++ b/packages/meta/src/input/demo/advance-count.tsx @@ -1,6 +1,5 @@ import React from 'react'; import { Flex, Input, Typography } from 'antd'; -import { runes } from 'runes2'; const App: React.FC = () => ( @@ -20,7 +19,6 @@ const App: React.FC = () => ( runes(txt).length, }} defaultValue="🔥🔥🔥" /> @@ -32,7 +30,6 @@ const App: React.FC = () => ( count={{ show: true, max: 6, - strategy: (txt) => runes(txt).length, exceedFormatter: (txt, { max }) => runes(txt).slice(0, max).join(''), }} defaultValue="🔥 antd" diff --git a/packages/meta/src/input/style/index.ts b/packages/meta/src/input/style/index.ts index 7ce64b5..ef1636c 100644 --- a/packages/meta/src/input/style/index.ts +++ b/packages/meta/src/input/style/index.ts @@ -865,6 +865,7 @@ export default genStyleHooks( }, initComponentToken, { + // @ts-ignore resetFont: false, }, ); diff --git a/packages/meta/src/layout/style/index.ts b/packages/meta/src/layout/style/index.ts index 73b39b7..fc666d5 100644 --- a/packages/meta/src/layout/style/index.ts +++ b/packages/meta/src/layout/style/index.ts @@ -96,6 +96,7 @@ export interface ComponentToken { lightTriggerColor: string; } + // @ts-ignore export interface LayoutToken extends FullToken<'Layout'> {} const genLayoutStyle: GenerateStyle = (token) => { @@ -103,22 +104,35 @@ const genLayoutStyle: GenerateStyle = (token) => { antCls, // .ant componentCls, // .ant-layout colorText, + // @ts-ignore triggerColor, + // @ts-ignore footerBg, + // @ts-ignore triggerBg, + // @ts-ignore headerHeight, + // @ts-ignore headerPadding, + // @ts-ignore headerColor, + // @ts-ignore footerPadding, + // @ts-ignore triggerHeight, + // @ts-ignore zeroTriggerHeight, + // @ts-ignore zeroTriggerWidth, motionDurationMid, motionDurationSlow, fontSize, borderRadius, + // @ts-ignore bodyBg, + // @ts-ignore headerBg, + // @ts-ignore siderBg, } = token; @@ -280,6 +294,7 @@ const genLayoutStyle: GenerateStyle = (token) => { }; }; +// @ts-ignore export const prepareComponentToken: GetDefaultToken<'Layout'> = (token) => { const { colorBgLayout, @@ -320,6 +335,7 @@ export const prepareComponentToken: GetDefaultToken<'Layout'> = (token) => { }; // ============================== Export ============================== + // @ts-ignore export default genStyleHooks('Layout', (token) => [genLayoutStyle(token)], prepareComponentToken, { deprecatedTokens: [ ['colorBgBody', 'bodyBg'], diff --git a/packages/meta/src/layout/style/light.ts b/packages/meta/src/layout/style/light.ts index c4c52eb..6691bd5 100644 --- a/packages/meta/src/layout/style/light.ts +++ b/packages/meta/src/layout/style/light.ts @@ -4,6 +4,7 @@ import type { LayoutToken } from '.'; import type { GenerateStyle } from '../../theme/internal'; const genLayoutLightStyle: GenerateStyle = (token) => { + // @ts-ignore const { componentCls, bodyBg, lightSiderBg, lightTriggerBg, lightTriggerColor } = token; return { diff --git a/packages/meta/src/menu/menu.tsx b/packages/meta/src/menu/menu.tsx index 5e682d7..0c7902b 100644 --- a/packages/meta/src/menu/menu.tsx +++ b/packages/meta/src/menu/menu.tsx @@ -27,6 +27,7 @@ function isEmptyIcon(icon?: React.ReactNode) { return icon === null || icon === false; } + // @ts-ignore const MENU_COMPONENTS: GetProp = { item: MenuItem, submenu: SubMenu, @@ -141,16 +142,21 @@ const InternalMenu = forwardRef((props, ref) => { if (typeof overrideObj.expandIcon === 'function' || isEmptyIcon(overrideObj.expandIcon)) { return overrideObj.expandIcon || null; } + // @ts-ignore if (typeof menu?.expandIcon === 'function' || isEmptyIcon(menu?.expandIcon)) { + // @ts-ignore return menu?.expandIcon || null; } + // @ts-ignore const mergedIcon = expandIcon ?? overrideObj?.expandIcon ?? menu?.expandIcon; return cloneElement(mergedIcon, { className: classNames( `${prefixCls}-submenu-expand-icon`, + // @ts-ignore React.isValidElement(mergedIcon) ? mergedIcon.props?.className : undefined, ), }); + // @ts-ignore }, [expandIcon, overrideObj?.expandIcon, menu?.expandIcon, prefixCls]); // ======================== Context ========================== @@ -198,6 +204,7 @@ const InternalMenu = forwardRef((props, ref) => { cssVarCls, rootCls, )} + // @ts-ignore _internalComponents={MENU_COMPONENTS} /> diff --git a/packages/meta/src/menu/style/horizontal.ts b/packages/meta/src/menu/style/horizontal.ts index 28a97e0..4f92475 100644 --- a/packages/meta/src/menu/style/horizontal.ts +++ b/packages/meta/src/menu/style/horizontal.ts @@ -7,10 +7,12 @@ const getHorizontalStyle: GenerateStyle = (token) => { const { componentCls, motionDurationSlow, + // @ts-ignore horizontalLineHeight, colorSplit, lineWidth, lineType, + // @ts-ignore itemPaddingInline, } = token; diff --git a/packages/meta/src/menu/style/index.ts b/packages/meta/src/menu/style/index.ts index cb3e011..b3e8a17 100644 --- a/packages/meta/src/menu/style/index.ts +++ b/packages/meta/src/menu/style/index.ts @@ -369,6 +369,7 @@ export interface ComponentToken { itemWidth: string; } + // @ts-ignore export interface MenuToken extends FullToken<'Menu'> { menuHorizontalHeight: number | string; menuArrowSize: number | string; @@ -385,7 +386,9 @@ const genMenuItemStyle = (token: MenuToken): CSSObject => { motionEaseInOut, motionEaseOut, iconCls, + // @ts-ignore iconSize, + // @ts-ignore iconMarginInlineEnd, } = token; @@ -521,13 +524,17 @@ const getBaseStyle: GenerateStyle = (token) => { padding, colorSplit, lineWidth, + // @ts-ignore zIndexPopup, borderRadiusLG, + // @ts-ignore subMenuItemBorderRadius, menuArrowSize, menuArrowOffset, lineType, + // @ts-ignore groupTitleLineHeight, + // @ts-ignore groupTitleFontSize, } = token; @@ -577,6 +584,7 @@ const getBaseStyle: GenerateStyle = (token) => { }, }, [`${componentCls}-item, ${componentCls}-submenu, ${componentCls}-submenu-title`]: { + // @ts-ignore borderRadius: token.itemBorderRadius, }, @@ -804,6 +812,7 @@ const getBaseStyle: GenerateStyle = (token) => { ]; }; + // @ts-ignore export const prepareComponentToken: GetDefaultToken<'Menu'> = (token) => { const { colorPrimary, @@ -936,27 +945,44 @@ export const prepareComponentToken: GetDefaultToken<'Menu'> = (token) => { // ============================== Export ============================== export default (prefixCls: string, rootCls: string = prefixCls, injectStyle: boolean = true) => { const useStyle = genStyleHooks( + // @ts-ignore 'Menu', (token) => { const { colorBgElevated, controlHeightLG, fontSize, + // @ts-ignore darkItemColor, + // @ts-ignore darkDangerItemColor, + // @ts-ignore darkItemBg, + // @ts-ignore darkSubMenuItemBg, + // @ts-ignore darkItemSelectedColor, + // @ts-ignore darkItemSelectedBg, + // @ts-ignore darkDangerItemSelectedBg, + // @ts-ignore darkItemHoverBg, + // @ts-ignore darkGroupTitleColor, + // @ts-ignore darkItemHoverColor, + // @ts-ignore darkItemDisabledColor, + // @ts-ignore darkDangerItemHoverColor, + // @ts-ignore darkDangerItemSelectedColor, + // @ts-ignore darkDangerItemActiveBg, + // @ts-ignore popupBg, + // @ts-ignore darkPopupBg, } = token; @@ -969,10 +995,12 @@ export default (prefixCls: string, rootCls: string = prefixCls, injectStyle: boo menuArrowOffset: token.calc(menuArrowSize).mul(0.25).equal(), menuSubMenuBg: colorBgElevated, calc: token.calc, + // @ts-ignore popupBg, }); const menuDarkToken = mergeToken(menuToken, { + // @ts-ignore itemColor: darkItemColor, itemHoverColor: darkItemHoverColor, groupTitleColor: darkGroupTitleColor, diff --git a/packages/meta/src/menu/style/theme.ts b/packages/meta/src/menu/style/theme.ts index b2a0f37..5445f46 100644 --- a/packages/meta/src/menu/style/theme.ts +++ b/packages/meta/src/menu/style/theme.ts @@ -11,43 +11,67 @@ const accessibilityFocus = (token: MenuToken) => ({ const getThemeStyle = (token: MenuToken, themeSuffix: string): CSSInterpolation => { const { componentCls, + // @ts-ignore itemColor, + // @ts-ignore itemSelectedColor, + // @ts-ignore groupTitleColor, + // @ts-ignore itemBg, + // @ts-ignore subMenuItemBg, + // @ts-ignore itemSelectedBg, + // @ts-ignore activeBarHeight, + // @ts-ignore activeBarWidth, + // @ts-ignore activeBarBorderWidth, motionDurationSlow, motionEaseInOut, motionEaseOut, + // @ts-ignore itemPaddingInline, motionDurationMid, + // @ts-ignore itemHoverColor, lineType, colorSplit, // Disabled + // @ts-ignore itemDisabledColor, // Danger + // @ts-ignore dangerItemColor, + // @ts-ignore dangerItemHoverColor, + // @ts-ignore dangerItemSelectedColor, + // @ts-ignore dangerItemActiveBg, + // @ts-ignore dangerItemSelectedBg, // Bg + // @ts-ignore popupBg, + // @ts-ignore itemHoverBg, + // @ts-ignore itemActiveBg, menuSubMenuBg, // Horizontal + // @ts-ignore horizontalItemSelectedColor, + // @ts-ignore horizontalItemSelectedBg, + // @ts-ignore horizontalItemBorderRadius, + // @ts-ignore horizontalItemHoverBg, } = token; diff --git a/packages/meta/src/menu/style/vertical.ts b/packages/meta/src/menu/style/vertical.ts index 9e01e4f..491349a 100644 --- a/packages/meta/src/menu/style/vertical.ts +++ b/packages/meta/src/menu/style/vertical.ts @@ -8,12 +8,16 @@ import type { GenerateStyle } from '../../theme/internal'; const getVerticalInlineStyle: GenerateStyle = (token) => { const { componentCls, + // @ts-ignore itemHeight, + // @ts-ignore itemMarginInline, padding, menuArrowSize, marginXS, + // @ts-ignore itemMarginBlock, + // @ts-ignore itemWidth, } = token; @@ -53,19 +57,24 @@ const getVerticalStyle: GenerateStyle = (token) => { const { componentCls, iconCls, + // @ts-ignore itemHeight, colorTextLightSolid, + // @ts-ignore dropdownWidth, controlHeightLG, motionDurationMid, motionEaseOut, paddingXL, + // @ts-ignore itemMarginInline, fontSizeLG, motionDurationSlow, paddingXS, boxShadowSecondary, + // @ts-ignore collapsedWidth, + // @ts-ignore collapsedIconSize, } = token; diff --git a/packages/meta/src/modal/Modal.tsx b/packages/meta/src/modal/Modal.tsx index 74f0fa9..1e98dfc 100644 --- a/packages/meta/src/modal/Modal.tsx +++ b/packages/meta/src/modal/Modal.tsx @@ -108,7 +108,9 @@ const Modal: React.FC = (props) => { const [mergedClosable, mergedCloseIcon] = useClosable( closable, closeIcon, + // @ts-ignore (icon) => renderCloseIcon(prefixCls, icon), + // @ts-ignore , true, ); diff --git a/packages/meta/src/transfer/ListBody.tsx b/packages/meta/src/transfer/ListBody.tsx new file mode 100644 index 0000000..4490cfb --- /dev/null +++ b/packages/meta/src/transfer/ListBody.tsx @@ -0,0 +1,152 @@ +import * as React from 'react'; +import classNames from 'classnames'; +import useMergedState from 'rc-util/lib/hooks/useMergedState'; + +import type { KeyWiseTransferItem } from '.'; +import Pagination from '../pagination'; +import type { PaginationType, TransferKey } from './interface'; +import type { RenderedItem, TransferListProps } from './list'; +import ListItem from './ListItem'; + +export const OmitProps = ['handleFilter', 'handleClear', 'checkedKeys'] as const; +export type OmitProp = (typeof OmitProps)[number]; +type PartialTransferListProps = Omit, OmitProp>; +type ExistPagination = Exclude; + +export interface TransferListBodyProps extends PartialTransferListProps { + filteredItems: RecordType[]; + filteredRenderItems: RenderedItem[]; + selectedKeys: TransferKey[]; +} + +const parsePagination = (pagination?: ExistPagination) => { + const defaultPagination: PaginationType = { + simple: true, + showSizeChanger: false, + showLessItems: false, + }; + + return { ...defaultPagination, ...pagination }; +}; +export interface ListBodyRef { + items?: RenderedItem[]; +} + +const TransferListBody: React.ForwardRefRenderFunction< + ListBodyRef, + TransferListBodyProps +> = ( + props: TransferListBodyProps, + ref: React.ForwardedRef>, +) => { + const { + prefixCls, + filteredRenderItems, + selectedKeys, + disabled: globalDisabled, + showRemove, + pagination, + onScroll, + onItemSelect, + onItemRemove, + } = props; + const [current, setCurrent] = React.useState(1); + + const mergedPagination = React.useMemo(() => { + if (!pagination) { + return null; + } + + const convertPagination = typeof pagination === 'object' ? pagination : {}; + + return parsePagination(convertPagination); + }, [pagination]); + + const [pageSize, setPageSize] = useMergedState(10, { + value: mergedPagination?.pageSize, + }); + + React.useEffect(() => { + if (mergedPagination) { + const maxPageCount = Math.ceil(filteredRenderItems.length / pageSize!); + setCurrent(Math.min(current, maxPageCount)); + } + }, [filteredRenderItems, mergedPagination, pageSize]); + + const onInternalClick = (item: RecordType, e: React.MouseEvent) => { + onItemSelect(item.key, !selectedKeys.includes(item.key), e); + }; + + const onRemove = (item: RecordType) => { + onItemRemove?.([item.key]); + }; + + const onPageChange = (cur: number) => { + setCurrent(cur); + }; + + const onSizeChange = (cur: number, size: number) => { + setCurrent(cur); + setPageSize(size); + }; + + const memoizedItems = React.useMemo[]>(() => { + const displayItems = mergedPagination + ? filteredRenderItems.slice((current - 1) * pageSize!, current * pageSize!) + : filteredRenderItems; + return displayItems; + }, [current, filteredRenderItems, mergedPagination, pageSize]); + + React.useImperativeHandle(ref, () => ({ items: memoizedItems })); + + const paginationNode: React.ReactNode = mergedPagination ? ( + + ) : null; + + const cls = classNames(`${prefixCls}-content`, { + [`${prefixCls}-content-show-remove`]: showRemove, + }); + + return ( + <> +
    + {(memoizedItems || []).map(({ renderedEl, renderedText, item }) => ( + + ))} +
+ {paginationNode} + + ); +}; + +if (process.env.NODE_ENV !== 'production') { + TransferListBody.displayName = 'TransferListBody'; +} + +export default React.forwardRef< + ListBodyRef, + TransferListBodyProps +>(TransferListBody); diff --git a/packages/meta/src/transfer/ListItem.tsx b/packages/meta/src/transfer/ListItem.tsx new file mode 100644 index 0000000..8b87036 --- /dev/null +++ b/packages/meta/src/transfer/ListItem.tsx @@ -0,0 +1,85 @@ +import * as React from 'react'; +import DeleteOutlined from '@ant-design/icons/DeleteOutlined'; +import classNames from 'classnames'; + +import type { KeyWiseTransferItem } from '.'; +import TransButton from '../_util/transButton'; +import Checkbox from '../checkbox'; +import { useLocale } from '../locale'; +import defaultLocale from '../locale/en_US'; + +type ListItemProps = { + renderedText?: string | number; + renderedEl: React.ReactNode; + disabled?: boolean; + checked?: boolean; + prefixCls: string; + onClick: (item: RecordType, e: React.MouseEvent) => void; + onRemove?: (item: RecordType) => void; + item: RecordType; + showRemove?: boolean; +}; + +const ListItem = (props: ListItemProps) => { + const { + renderedText, + renderedEl, + item, + checked, + disabled, + prefixCls, + onClick, + onRemove, + showRemove, + } = props; + + const className = classNames(`${prefixCls}-content-item`, { + [`${prefixCls}-content-item-disabled`]: disabled || item.disabled, + [`${prefixCls}-content-item-checked`]: checked, + }); + + let title: string | undefined; + if (typeof renderedText === 'string' || typeof renderedText === 'number') { + title = String(renderedText); + } + + const [contextLocale] = useLocale('Transfer', defaultLocale.Transfer); + + const liProps: React.HTMLAttributes = { className, title }; + + const labelNode = {renderedEl}; + + if (showRemove) { + return ( +
  • + {labelNode} + { + onRemove?.(item); + }} + > + + +
  • + ); + } + + // Default click to select + liProps.onClick = disabled || item.disabled ? undefined : (event) => onClick(item, event); + + return ( +
  • + + {labelNode} +
  • + ); +}; + +export default React.memo(ListItem); diff --git a/packages/meta/src/transfer/__tests__/__snapshots__/demo-extend.test.ts.snap b/packages/meta/src/transfer/__tests__/__snapshots__/demo-extend.test.ts.snap new file mode 100644 index 0000000..24536db --- /dev/null +++ b/packages/meta/src/transfer/__tests__/__snapshots__/demo-extend.test.ts.snap @@ -0,0 +1,12230 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`renders components/transfer/demo/advanced.tsx extend context correctly 1`] = ` +
    +