chore(deps): update dependency eslint to v9 (#50690)

Co-authored-by: afc163 <afc163@gmail.com>
This commit is contained in:
renovate[bot] 2024-09-19 03:30:19 +08:00 committed by GitHub
parent 9c4d5496bd
commit 863f61d908
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
219 changed files with 406 additions and 776 deletions

View File

@ -11,15 +11,15 @@ module.exports = {
],
modulePattern: [
{
pattern: /ConfigContext.*renderEmpty/ms,
pattern: /ConfigContext.*renderEmpty/s,
module: '../empty',
},
{
pattern: /ConfigConsumer.*renderEmpty/ms,
pattern: /ConfigConsumer.*renderEmpty/s,
module: '../empty',
},
{
pattern: /config-provider\/context.*renderEmpty/ms,
pattern: /config-provider\/context.*renderEmpty/s,
module: '../empty',
},
],

View File

@ -89,7 +89,6 @@ const useThemeAnimation = () => {
.startViewTransition(async () => {
// wait for theme change end
while (colorBgElevated === animateRef.current.colorBgElevated) {
// eslint-disable-next-line no-await-in-loop
await new Promise((resolve) => {
setTimeout(resolve, 1000 / 60);
});
@ -99,6 +98,7 @@ const useThemeAnimation = () => {
root.classList.add(isDark ? 'light' : 'dark');
})
.ready.then(() => {
// eslint-disable-next-line no-console
console.log(`Theme transition finished in ${Date.now() - time}ms`);
const clipPath = [
`circle(0px at ${x}px ${y}px)`,

View File

@ -1,3 +1,3 @@
// must be .js file, can't modify to be .ts file!
// eslint-disable-next-line no-restricted-exports
export { default } from './theme/common/Loading';

View File

@ -112,7 +112,7 @@ export const BannerRecommendsFallback: React.FC = () => {
const { isMobile } = useContext(SiteContext);
const { styles } = useStyle();
const list = Array(3).fill(1);
const list = new Array(3).fill(1);
return isMobile ? (
<Carousel className={styles.carousel}>
@ -140,7 +140,7 @@ const BannerRecommends: React.FC = () => {
const data = useSiteData();
const extras = data?.extras?.[lang];
const icons = data?.icons || [];
const first3 = !extras || extras.length === 0 ? Array(3).fill(null) : extras.slice(0, 3);
const first3 = !extras || extras.length === 0 ? new Array(3).fill(null) : extras.slice(0, 3);
if (!data) {
return <BannerRecommendsFallback />;

View File

@ -102,7 +102,6 @@ const ThemeColorPicker: React.FC<ThemeColorPickerProps> = ({ value, onChange, id
<Flex gap="middle">
{matchColors.map<React.ReactNode>(({ color, active, picker }) => {
const colorNode = (
// eslint-disable-next-line jsx-a11y/label-has-associated-control
<label
key={color}
className={classNames(styles.color, { [styles.colorActive]: active })}

View File

@ -1,4 +1,3 @@
/* eslint-disable jsx-a11y/label-has-associated-control */
import * as React from 'react';
import { Flex } from 'antd';
import { createStyles } from 'antd-style';

View File

@ -46,6 +46,7 @@ const { Header, Content, Sider } = Layout;
const TokenChecker: React.FC = () => {
if (process.env.NODE_ENV !== 'production') {
// eslint-disable-next-line no-console
console.log('Demo Token:', theme.useToken());
}
return null;

View File

@ -72,7 +72,7 @@ function rehypeAntd(): UnifiedTransformer<HastRoot> {
if (typeof lang === 'string' && lang.startsWith('sandpack')) {
const code = (node.children[0] as any).value as string;
const configRegx = /^const sandpackConfig = ([\S\s]*?});/;
const configRegx = /^const sandpackConfig = ([\s\S]*?});/;
const [configString] = code.match(configRegx) || [];
/* biome-ignore lint/security/noGlobalEval: used in documentation */ /* eslint-disable-next-line no-eval */
const config = configString && eval(`(${configString.replace(configRegx, '$1')})`);

View File

@ -141,12 +141,12 @@
const title = document.createElement('div');
title.className = 'mirror-modal-title';
title.innerText = '提示';
title.textContent = '提示';
dialog.append(title);
const content = document.createElement('div');
content.className = 'mirror-modal-content';
content.innerText = '🚀 国内用户推荐访问国内镜像以获得极速体验~';
content.textContent = '🚀 国内用户推荐访问国内镜像以获得极速体验~';
dialog.append(content);
const btnWrapper = document.createElement('div');
@ -155,7 +155,7 @@
const cancelBtn = document.createElement('a');
cancelBtn.className = 'mirror-modal-cancel-btn mirror-modal-btn';
cancelBtn.innerText = '7 天内不再显示';
cancelBtn.textContent = '7 天内不再显示';
btnWrapper.append(cancelBtn);
cancelBtn.addEventListener('click', () => {
window.localStorage.setItem(ANTD_DOT_NOT_SHOW_MIRROR_MODAL, new Date().toISOString());
@ -167,7 +167,7 @@
const confirmBtn = document.createElement('a');
confirmBtn.className = 'mirror-modal-confirm-btn mirror-modal-btn';
confirmBtn.href = window.location.href.replace(window.location.host, 'ant-design.antgroup.com');
confirmBtn.innerText = '🚀 立刻前往';
confirmBtn.textContent = '🚀 立刻前往';
btnWrapper.append(confirmBtn);
document.body.append(modal);

View File

@ -24,7 +24,6 @@ interface NewToken {
// 通过给 antd-style 扩展 CustomToken 对象类型定义,可以为 useTheme 中增加相应的 token 对象
declare module 'antd-style' {
// eslint-disable-next-line @typescript-eslint/no-empty-interface
export interface CustomToken extends NewToken {}
}

View File

@ -80,7 +80,7 @@ const IconSearch: React.FC = () => {
let iconList = categories[key as CategoriesKeys];
if (searchKey) {
const matchKey = searchKey
// eslint-disable-next-line prefer-regex-literals
.replace(/^<([a-z]*)\s\/>$/gi, (_, name) => name)
.replace(/(Filled|Outlined|TwoTone)$/, '')
.toLowerCase();

View File

@ -44,15 +44,13 @@ const IconSearchFallback: React.FC = () => {
</div>
<Skeleton.Button active style={{ margin: '28px 0 10px', width: 100 }} />
<div className={styles.fallbackWrapper}>
{Array(24)
.fill(1)
.map((_, index) => (
<div key={index} className={styles.skeletonWrapper}>
<Skeleton.Node active style={{ height: 110, width: '100%' }}>
{' '}
</Skeleton.Node>
</div>
))}
{new Array(24).fill(1).map((_, index) => (
<div key={index} className={styles.skeletonWrapper}>
<Skeleton.Node active style={{ height: 110, width: '100%' }}>
{' '}
</Skeleton.Node>
</div>
))}
</div>
</>
);

View File

@ -1,4 +1,3 @@
/* eslint-disable react/no-array-index-key */
import * as React from 'react';
import { Avatar, Divider, Empty, Skeleton, Tabs } from 'antd';
import { createStyles } from 'antd-style';

View File

@ -1,4 +1,3 @@
/* eslint-disable global-require, import/no-unresolved */
import React from 'react';
import { BugOutlined, HistoryOutlined } from '@ant-design/icons';
import { Button, Drawer, Grid, Popover, Timeline, Typography } from 'antd';

View File

@ -1,21 +1,19 @@
import React from 'react';
import Icon from '@ant-design/icons';
const ThemeIcon: React.FC<{ className?: string }> = (props) => {
const SVGIcon = React.useCallback(
() => (
<svg width={20} height={20} viewBox="0 0 24 24" fill="currentColor" {...props}>
<title>Theme icon</title>
<g fillRule="evenodd">
<g fillRule="nonzero">
<path d="M7.02 3.635l12.518 12.518a1.863 1.863 0 010 2.635l-1.317 1.318a1.863 1.863 0 01-2.635 0L3.068 7.588A2.795 2.795 0 117.02 3.635zm2.09 14.428a.932.932 0 110 1.864.932.932 0 010-1.864zm-.043-9.747L7.75 9.635l9.154 9.153 1.318-1.317-9.154-9.155zM3.52 12.473c.514 0 .931.417.931.931v.932h.932a.932.932 0 110 1.864h-.932v.931a.932.932 0 01-1.863 0l-.001-.931h-.93a.932.932 0 010-1.864h.93v-.932c0-.514.418-.931.933-.931zm15.374-3.727a1.398 1.398 0 110 2.795 1.398 1.398 0 010-2.795zM4.385 4.953a.932.932 0 000 1.317l2.046 2.047L7.75 7 5.703 4.953a.932.932 0 00-1.318 0zM14.701.36a.932.932 0 01.931.932v.931h.932a.932.932 0 010 1.864h-.933l.001.932a.932.932 0 11-1.863 0l-.001-.932h-.93a.932.932 0 110-1.864h.93v-.931a.932.932 0 01.933-.932z" />
</g>
</g>
</svg>
),
[props],
);
return <Icon component={SVGIcon} {...props} />;
};
const SVGIcon: React.FC = (props) => (
<svg width={20} height={20} viewBox="0 0 24 24" fill="currentColor" {...props}>
<title>Theme icon</title>
<g fillRule="evenodd">
<g fillRule="nonzero">
<path d="M7.02 3.635l12.518 12.518a1.863 1.863 0 010 2.635l-1.317 1.318a1.863 1.863 0 01-2.635 0L3.068 7.588A2.795 2.795 0 117.02 3.635zm2.09 14.428a.932.932 0 110 1.864.932.932 0 010-1.864zm-.043-9.747L7.75 9.635l9.154 9.153 1.318-1.317-9.154-9.155zM3.52 12.473c.514 0 .931.417.931.931v.932h.932a.932.932 0 110 1.864h-.932v.931a.932.932 0 01-1.863 0l-.001-.931h-.93a.932.932 0 010-1.864h.93v-.932c0-.514.418-.931.933-.931zm15.374-3.727a1.398 1.398 0 110 2.795 1.398 1.398 0 010-2.795zM4.385 4.953a.932.932 0 000 1.317l2.046 2.047L7.75 7 5.703 4.953a.932.932 0 00-1.318 0zM14.701.36a.932.932 0 01.931.932v.931h.932a.932.932 0 010 1.864h-.933l.001.932a.932.932 0 11-1.863 0l-.001-.932h-.93a.932.932 0 110-1.864h.93v-.931a.932.932 0 01.933-.932z" />
</g>
</g>
</svg>
);
const ThemeIcon: React.FC<{ className?: string }> = (props) => (
<Icon component={SVGIcon} {...props} />
);
export default ThemeIcon;

View File

@ -37,7 +37,6 @@ export const getHash = (str: string, length = 8) =>
* extends dumi internal tech stack, for customize previewer props
*/
class AntdReactTechStack extends ReactTechStack {
// eslint-disable-next-line class-methods-use-this
generatePreviewerProps(...[props, opts]: any) {
props.pkgDependencyList = { ...devDependencies, ...dependencies };
props.jsx ??= '';

View File

@ -210,7 +210,6 @@ const Header: React.FC = () => {
};
}, []);
// eslint-disable-next-line class-methods-use-this
const handleVersionChange = useCallback((url: string) => {
const currentUrl = window.location.href;
const currentPathname = window.location.pathname;

View File

@ -1,24 +0,0 @@
components/**/*.js
components/**/*.jsx
components/version/token.tsx
!components/*/__tests__/**/*.js
!components/*/demo/*.md
!.*.js
~*
typings
es/**/*
lib/**/*
locale
server
.dumi/tmp
.dumi/tmp-production
!.dumi/
node_modules
.eslintcache
_site
dist
coverage
**/*.d.ts
# Scripts
scripts/previewEditor/**/*
jest-stare

View File

@ -1,231 +0,0 @@
module.exports = {
extends: [
'airbnb',
'prettier',
'plugin:compat/recommended',
'plugin:jest/recommended',
'plugin:react/recommended',
'plugin:import/typescript',
'plugin:markdown/recommended-legacy',
],
env: {
browser: true,
node: true,
jasmine: true,
jest: true,
es6: true,
},
settings: {
react: {
version: 'detect',
},
polyfills: ['Promise', 'URL'],
'import/resolver': {
typescript: {},
},
},
parser: '@typescript-eslint/parser',
plugins: [
'react',
'@babel',
'jest',
'@typescript-eslint',
'react-hooks',
'unicorn',
'markdown',
'lodash',
],
// https://github.com/typescript-eslint/typescript-eslint/issues/46#issuecomment-470486034
overrides: [
{
files: ['*.ts', '*.tsx'],
rules: {
'@typescript-eslint/no-unused-vars': [2, { args: 'none' }],
'no-unused-expressions': 'off',
'@typescript-eslint/no-unused-expressions': 2,
'@typescript-eslint/consistent-type-imports': [2, { disallowTypeAnnotations: false }],
'import/consistent-type-specifier-style': 2,
},
},
{
// In v2, explicitly apply eslint-plugin-markdown's `markdown`
// processor on any Markdown files you want to lint.
files: ['components/*/demo/*.md'],
processor: 'markdown/markdown',
},
{
// In v2, configuration for fenced code blocks is separate from the
// containing Markdown file. Each code block has a virtual filename
// appended to the Markdown file's path.
files: [
'components/*/demo/*.md/*.ts',
'components/*/demo/*.md/*.tsx',
'components/*/demo/*.md/*.js',
'components/*/demo/*.md/*.jsx',
],
// Configuration for fenced code blocks goes with the override for
// the code block's virtual filename, for example:
parserOptions: {
ecmaFeatures: {
impliedStrict: true,
},
},
globals: {
React: true,
ReactDOM: true,
mountNode: true,
},
rules: {
indent: 0,
'@babel/new-cap': 0,
'@babel/no-invalid-this': 0,
'@babel/no-unused-expressions': 2,
'@babel/object-curly-spacing': 0,
'@babel/semi': 2,
'default-case': 0,
'eol-last': 0,
'no-console': 0,
'no-plusplus': 0,
'no-script-url': 0,
'prefer-rest-params': 0,
'compat/compat': 0,
'class-methods-use-this': 0,
'react/no-access-state-in-setstate': 0,
'react/destructuring-assignment': 0,
'react/no-multi-comp': 0,
'react/no-array-index-key': 0,
'jsx-a11y/href-no-hash': 0,
'jsx-a11y/control-has-associated-label': 0,
'import/no-extraneous-dependencies': 0,
'react/jsx-no-constructed-context-values': 0,
'react/no-unstable-nested-components': 0,
},
},
{
files: ['components/**/demo/*.tsx'],
rules: {
'import/no-extraneous-dependencies': 0,
'no-console': 0,
'compat/compat': 0,
'react/no-unstable-nested-components': 0,
'jsx-a11y/control-has-associated-label': 0,
'class-methods-use-this': 0,
'react/no-access-state-in-setstate': 0,
},
},
{
files: ['.dumi/**/*.ts', '.dumi/**/*.tsx', '.dumi/**/*.js', '.dumi/**/*.jsx'],
rules: {
'import/no-extraneous-dependencies': 0,
'no-console': 0,
'compat/compat': 0,
'react/no-unstable-nested-components': 0,
'jsx-a11y/control-has-associated-label': 0,
'class-methods-use-this': 0,
'react/no-access-state-in-setstate': 0,
'react/no-unknown-property': ['error', { ignore: ['css'] }],
'react/no-array-index-key': 0,
'react/button-has-type': 0,
'react/no-danger': 0,
},
},
{
files: ['**/*.json'],
rules: {
'no-unused-expressions': 0,
'comma-dangle': 0,
},
},
{
files: ['**/*.test.ts', '**/*.test.tsx', '**/*.spec.ts', '**/*.spec.tsx'],
rules: {
'compat/compat': 0,
},
},
],
rules: {
'react/jsx-one-expression-per-line': 0,
'react/prop-types': 0,
'react/forbid-prop-types': 0,
'react/jsx-indent': 0,
'react/jsx-wrap-multilines': ['error', { declaration: false, assignment: false }],
'react/jsx-filename-extension': 0,
'react/state-in-constructor': 0,
'react/jsx-props-no-spreading': 0,
'react/destructuring-assignment': 0, // TODO: remove later
'react/require-default-props': 0,
'react/sort-comp': 0,
'react/display-name': 0,
'react/static-property-placement': 0,
'react/jsx-no-bind': 0, // Should not check test file
'react/no-find-dom-node': 0,
'react/no-unused-prop-types': 0,
'react/default-props-match-prop-types': 0,
'react-hooks/rules-of-hooks': 2, // Checks rules of Hooks
'react/function-component-definition': 0,
'react/no-unused-class-component-methods': 0,
'import/extensions': 0,
'import/no-cycle': 2,
'lodash/import-scope': 2,
'import/no-extraneous-dependencies': [
'error',
{
devDependencies: [
'site/**',
'tests/**',
'scripts/**',
'scripts/*.ts',
'**/*.test.js',
'**/__tests__/*',
'*.config.js',
'**/*.md',
],
},
],
'jsx-a11y/no-static-element-interactions': 0,
'jsx-a11y/anchor-has-content': 0,
'jsx-a11y/click-events-have-key-events': 0,
'jsx-a11y/anchor-is-valid': 0,
'jsx-a11y/no-noninteractive-element-interactions': 0,
// label-has-for has been deprecated
// https://github.com/evcohen/eslint-plugin-jsx-a11y/blob/master/docs/rules/label-has-for.md
'jsx-a11y/label-has-for': 0,
'comma-dangle': ['error', 'always-multiline'],
'consistent-return': 0, // TODO: remove later
'no-param-reassign': 0, // TODO: remove later
'no-underscore-dangle': 0,
// for (let i = 0; i < len; i++)
'no-plusplus': 0,
// https://eslint.org/docs/rules/no-continue
// labeledLoop is conflicted with `eslint . --fix`
'no-continue': 0,
// ban this for Number.isNaN needs polyfill
'no-restricted-globals': 0,
'max-classes-per-file': 0,
'jest/no-test-callback': 0,
'jest/expect-expect': 0,
'jest/no-done-callback': 0,
'jest/valid-title': 0,
'jest/no-conditional-expect': 0,
'jest/no-standalone-expect': 0,
'unicorn/better-regex': 2,
'unicorn/prefer-string-trim-start-end': 2,
'unicorn/expiring-todo-comments': 2,
'unicorn/no-abusive-eslint-disable': 0,
// https://github.com/typescript-eslint/typescript-eslint/issues/2540#issuecomment-692866111
'no-use-before-define': 0,
'@typescript-eslint/no-use-before-define': 2,
'no-shadow': 0,
'@typescript-eslint/no-shadow': [2, { ignoreTypeValueShadow: true }],
// https://github.com/typescript-eslint/typescript-eslint/issues/2528#issuecomment-689369395
'no-undef': 0,
'import/order': 0,
},
globals: {
gtag: true,
},
};

View File

@ -5,35 +5,35 @@
version: 2
updates:
- package-ecosystem: "npm"
directory: "/"
- package-ecosystem: npm
directory: /
schedule:
interval: "daily"
interval: daily
groups:
rc-component-patch:
dependency-type: "production"
dependency-type: production
patterns:
- "rc-*"
- "@rc-component*"
update-types: ["patch"]
update-types: [patch]
dependencies:
dependency-type: "production"
dependency-type: production
exclude-patterns:
- "rc-*"
- "@rc-component*"
update-types: ["major", "minor"]
update-types: [major, minor]
dev-dependencies:
dependency-type: "development"
update-types: ["major"]
dependency-type: development
update-types: [major]
ignore:
- dependency-name: "@ant-design/cssinjs"
- dependency-name: "dayjs"
versions: ["1.x"]
- package-ecosystem: "github-actions"
directory: "/"
- dependency-name: dayjs
versions: [1.x]
- package-ecosystem: github-actions
directory: /
schedule:
interval: "daily"
interval: daily
labels:
- "github-actions"
- "dependencies"
- "skip-verify-files"
- github-actions
- dependencies
- skip-verify-files

View File

@ -17,6 +17,6 @@ jobs:
- name: check-inactive
uses: actions-cool/issues-helper@v3
with:
actions: 'check-inactive'
inactive-label: 'Inactive'
actions: check-inactive
inactive-label: Inactive
inactive-day: 30

View File

@ -17,15 +17,15 @@ jobs:
- name: need reproduce
uses: actions-cool/issues-helper@v3
with:
actions: 'close-issues'
labels: '🤔 Need Reproduce'
actions: close-issues
labels: 🤔 Need Reproduce
inactive-day: 3
- name: needs more info
uses: actions-cool/issues-helper@v3
with:
actions: 'close-issues'
labels: 'needs-more-info'
actions: close-issues
labels: needs-more-info
inactive-day: 3
body: |
Since the issue was labeled with `needs-more-info`, but no response in 3 days. This issue will be closed. If you have any questions, you can comment and reply.

View File

@ -20,7 +20,7 @@ jobs:
if: github.event.label.name == 'help wanted'
uses: actions-cool/issues-helper@v3
with:
actions: 'create-comment'
actions: create-comment
token: ${{ secrets.GITHUB_TOKEN }}
issue-number: ${{ github.event.issue.number }}
body: |
@ -34,7 +34,7 @@ jobs:
if: github.event.label.name == '🤔 Need Reproduce'
uses: actions-cool/issues-helper@v3
with:
actions: 'create-comment'
actions: create-comment
token: ${{ secrets.GITHUB_TOKEN }}
issue-number: ${{ github.event.issue.number }}
body: |
@ -86,6 +86,6 @@ jobs:
if: github.event.label.name != 'unconfirmed'
uses: actions-cool/issues-helper@v3
with:
actions: 'remove-labels'
actions: remove-labels
issue-number: ${{ github.event.issue.number }}
labels: 'unconfirmed'
labels: unconfirmed

View File

@ -18,15 +18,15 @@ jobs:
- uses: actions-cool/check-user-permission@v2
id: checkUser
with:
require: 'write'
require: write
check-bot: true
- name: add unconfirmed label
uses: actions-cool/issues-helper@v3
with:
actions: 'add-labels'
actions: add-labels
issue-number: ${{ github.event.issue.number }}
labels: 'unconfirmed'
labels: unconfirmed
- name: check invalid
if: (contains(github.event.issue.body, 'ant-design-issue-helper') == false) && (steps.checkUser.outputs.require-result == 'false')
@ -34,7 +34,7 @@ jobs:
with:
actions: 'create-comment,add-labels,close-issue'
issue-number: ${{ github.event.issue.number }}
labels: 'Invalid'
labels: Invalid
body: |
Hello @${{ github.event.issue.user.login }}, your issue has been closed because it does not conform to our issue requirements. Please use the [Issue Helper](http://new-issue.ant.design) to create an issue, thank you!
@ -44,7 +44,7 @@ jobs:
uses: actions-cool/issues-helper@v3
id: checkid
with:
actions: 'check-issue'
actions: check-issue
issue-number: ${{ github.event.issue.number }}
# 格式如:'x1,x2' or 'x1,x2/y1,y2' 最多支持 2 个数组
title-includes: '官网,网站,国内,镜像,mobile ant design,mobile.ant.design,ant design,ant design pro,pro.ant.design/挂了,挂掉了,无法访问,不能访问,访问速度,访问慢,访问不了,加载太慢,加载慢,加载很慢,出问题,打不开,登不上,can not open,cannot open,can not be reached'
@ -80,7 +80,7 @@ jobs:
if: contains(github.event.issue.body, 'ant-design-issue-helper') == true && contains(github.event.issue.title, 'IE9') == true || contains(github.event.issue.title, 'IE 9') == true || contains(github.event.issue.title, 'IE10') == true || contains(github.event.issue.title, 'IE 10') == true || contains(github.event.issue.title, 'IE11') == true || contains(github.event.issue.title, 'IE 11') == true || contains(github.event.issue.title, 'Internet Explorer') == true || contains(github.event.issue.body, 'IE9') == true || contains(github.event.issue.body, 'IE 9') == true || contains(github.event.issue.body, 'IE10') == true || contains(github.event.issue.body, 'IE 10') == true || contains(github.event.issue.body, 'IE11') == true || contains(github.event.issue.body, 'IE 11') == true || contains(github.event.issue.body, 'Internet Explorer') == true
uses: actions-cool/issues-helper@v3
with:
actions: 'add-labels'
actions: add-labels
issue-number: ${{ github.event.issue.number }}
labels: 'IE | Firefox | Safari,Internet Explorer'

View File

@ -20,6 +20,6 @@ jobs:
if: github.event.issue.state == 'open' && github.actor == github.event.issue.user.login
uses: actions-cool/issues-helper@v3
with:
actions: 'remove-labels'
actions: remove-labels
issue-number: ${{ github.event.issue.number }}
labels: 'Inactive, needs-more-info'

View File

@ -12,7 +12,7 @@ jobs:
uses: actions/github-script@v7
env:
DINGDING_BOT_TOKEN: ${{ secrets.DINGDING_BOT_COLLABORATOR_TOKEN }}
actionTitle: '近 7 天未确认的 issue'
actionTitle: 近 7 天未确认的 issue
with:
script: |
const dingdingTokenKey = process.env.DINGDING_BOT_TOKEN;

View File

@ -57,10 +57,10 @@ jobs:
- uses: actions-cool/ci-notice@v1
if: ${{ failure() }}
with:
notice-types: 'dingding'
notice-types: dingding
# Exit directly with non-zero to trigger the failure logic of ci-notice.
ci: |
echo "❌ CI Mock Project Build Failed"
exit 1
dingding-token: ${{ secrets.DINGDING_BOT_COLLABORATOR_TOKEN }}
notice-title: 'CI Mock Project Build Failed'
notice-title: CI Mock Project Build Failed

View File

@ -20,13 +20,13 @@ jobs:
steps:
- uses: actions-cool/check-pr-ci@v1
with:
filter-label: 'BranchAutoMerge'
filter-creator-authority: 'write'
filter-label: BranchAutoMerge
filter-creator-authority: write
filter-head-ref: 'master, feature, next, master-merge-feature, feature-merge-master, next-merge-master, next-merge-feature'
filter-support-fork: false
skip-run-names: 'deploy preview, pr-check-ci, upstream workflow summary, suggest-related-links, download visual-regression report'
conflict-review-body: '😅 This branch has conflicts that must be resolved!'
conflict-review-body: 😅 This branch has conflicts that must be resolved!
success-review: true
success-merge: true
merge-method: 'merge'
merge-method: merge
merge-title: 'chore: auto merge branches (#${number})'

View File

@ -17,7 +17,7 @@ jobs:
steps:
- uses: actions-cool/issues-helper@v3
with:
actions: 'create-comment'
actions: create-comment
issue-number: ${{ github.event.number }}
body: |
Hi @${{ github.event.pull_request.user.login }}。

View File

@ -39,4 +39,4 @@ jobs:
<img src="https://github.com/user-attachments/assets/cfee105e-8731-481f-a336-92b79a84d35a" height="200" />
<!-- WELCOME_CONTRIBUTION -->
body-include: '<!-- WELCOME_CONTRIBUTION -->'
body-include: <!-- WELCOME_CONTRIBUTION -->

View File

@ -16,8 +16,8 @@ jobs:
steps:
- uses: actions-cool/pr-welcome@v1
with:
refuse-issue-label: '🎱 Collaborate PR only'
need-creator-authority: 'write'
refuse-issue-label: 🎱 Collaborate PR only
need-creator-authority: write
comment: |
Hi @${{ github.event.pull_request.user.login }}. The issue mentioned in this PR needs to be confirmed with the designer or core team. Thank you for your contribution! 😊

View File

@ -26,7 +26,7 @@ jobs:
id: site
run: bun run site
env:
NODE_OPTIONS: "--max_old_space_size=4096"
NODE_OPTIONS: --max_old_space_size=4096
- name: run e2e test
run: bun run test:site
- name: upload site artifact

View File

@ -4,7 +4,7 @@ name: Preview Deploy
on:
workflow_run:
workflows: ["Preview Build"]
workflows: [Preview Build]
types:
- completed
@ -104,7 +104,7 @@ jobs:
body: |
[<img width="300" alt="Preview is ready" src="https://user-images.githubusercontent.com/5378891/72400743-23dbb200-3785-11ea-9d13-1a2d92743846.png">](https://preview-${{ steps.pr.outputs.id }}-ant-design.surge.sh)
<!-- AUTO_PREVIEW_HOOK -->
body-include: '<!-- AUTO_PREVIEW_HOOK -->'
body-include: <!-- AUTO_PREVIEW_HOOK -->
number: ${{ steps.pr.outputs.id }}
- name: failed comment
@ -115,7 +115,7 @@ jobs:
body: |
[<img width="300" alt="Preview failed" src="https://user-images.githubusercontent.com/5378891/75333447-1e63a280-58c1-11ea-975d-235367fd1522.png">](https://preview-${{ steps.pr.outputs.id }}-ant-design.surge.sh)
<!-- AUTO_PREVIEW_HOOK -->
body-include: '<!-- AUTO_PREVIEW_HOOK -->'
body-include: <!-- AUTO_PREVIEW_HOOK -->
number: ${{ steps.pr.outputs.id }}
- name: Check surge deploy result and exit if failed

View File

@ -28,4 +28,4 @@ jobs:
body: |
[<img width="500" alt="Prepare preview" src="https://user-images.githubusercontent.com/5378891/72351368-2c979e00-371b-11ea-9652-eb4e825d745e.gif">](https://preview-${{ github.event.number }}-ant-design.surge.sh)
<!-- AUTO_PREVIEW_HOOK -->
body-include: '<!-- AUTO_PREVIEW_HOOK -->'
body-include: <!-- AUTO_PREVIEW_HOOK -->

View File

@ -23,13 +23,13 @@ jobs:
- name: Send to Ant Design DingGroup
uses: actions-cool/release-helper@v2
with:
trigger: 'tag'
trigger: tag
changelogs: 'CHANGELOG.en-US.md, CHANGELOG.zh-CN.md'
branch: 'master, 4.x-stable'
tag: '5*, 4*'
latest: '5*'
dingding-token: ${{ secrets.DINGDING_BOT_TOKEN }} ${{ secrets.DINGDING_BOT_COLLABORATOR_TOKEN }} ${{ secrets.DINGDING_BOT_MAINTAINER_TOKEN }}
dingding-msg: 'CHANGELOG.zh-CN.md'
dingding-msg: CHANGELOG.zh-CN.md
msg-title: '# Ant Design {{v}} 发布日志'
msg-poster: 'https://gw.alipayobjects.com/mdn/rms_08e378/afts/img/A*zx7LTI_ECSAAAAAAAAAAAABkARQnAQ'
msg-footer: '💬 前往 [**Ant Design Releases**]({{url}}) 查看更新日志'
@ -39,17 +39,17 @@ jobs:
- name: Send to Bigfish DingGroup
uses: actions-cool/release-helper@v2
with:
trigger: 'tag'
trigger: tag
changelogs: 'CHANGELOG.en-US.md, CHANGELOG.zh-CN.md'
branch: 'master, 4.x-stable'
tag: '5*, 4*'
latest: '5*'
dingding-token: ${{ secrets.DINGDING_BOT_BIGFISH_TOKEN }} ${{ secrets.DINGDING_BOT_BIGFISH_2_TOKEN }} ${{ secrets.DINGDING_BOT_YUNFENGDIE_TOKEN }}
dingding-msg: 'CHANGELOG.zh-CN.md'
dingding-msg: CHANGELOG.zh-CN.md
dingding-delay-minute: 10
release: false
conch-tag: 'conch-v5, conch'
antd-conch-msg: '🐟 当前 Bigfish 内嵌 antd 版本:'
antd-conch-msg: 🐟 当前 Bigfish 内嵌 antd 版本:
msg-title: '# Ant Design {{v}} 发布日志'
msg-poster: 'https://gw.alipayobjects.com/mdn/rms_08e378/afts/img/A*zx7LTI_ECSAAAAAAAAAAAABkARQnAQ'
msg-footer: '💬 前往 [**Ant Design Releases**]({{url}}) 查看更新日志'

View File

@ -25,13 +25,13 @@ jobs:
- name: build site
run: bun run predeploy
env:
NODE_OPTIONS: "--max_old_space_size=4096"
NODE_OPTIONS: --max_old_space_size=4096
- name: build dist and bundle analyzer report
run: bun run dist
env:
ANALYZER: 1
NODE_OPTIONS: "--max_old_space_size=4096"
NODE_OPTIONS: --max_old_space_size=4096
- name: Get version
id: publish-version

View File

@ -25,6 +25,6 @@ jobs:
package_manager: bun
build_script: dist
env:
NODE_OPTIONS: "--max_old_space_size=4096"
NODE_OPTIONS: --max_old_space_size=4096
PRODUCTION_ONLY: 1
CI_JOB_NUMBER: 1

View File

@ -27,7 +27,7 @@ jobs:
strategy:
matrix:
react: ['16', '17']
shard: ['1/2', '2/2']
shard: [1/2, 2/2]
env:
REACT: ${{ matrix.react }}
runs-on: ubuntu-latest
@ -58,8 +58,8 @@ jobs:
name: test-react-latest
strategy:
matrix:
module: ['dom']
shard: ['1/2', '2/2']
module: [dom]
shard: [1/2, 2/2]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
@ -85,8 +85,8 @@ jobs:
name: test-react-latest-dist
strategy:
matrix:
module: ['dist', 'dist-min']
shard: ['1/2', '2/2']
module: [dist, dist-min]
shard: [1/2, 2/2]
runs-on: ubuntu-latest
needs: build
steps:
@ -170,7 +170,7 @@ jobs:
- name: dist
run: bun run dist
env:
NODE_OPTIONS: "--max_old_space_size=4096"
NODE_OPTIONS: --max_old_space_size=4096
CI: 1
- name: check build files
@ -204,7 +204,7 @@ jobs:
strategy:
matrix:
module: [lib, es]
shard: ['1/2', '2/2']
shard: [1/2, 2/2]
steps:
- uses: actions/checkout@v4
- uses: oven-sh/setup-bun@v2

View File

@ -18,10 +18,10 @@ jobs:
with:
forbid-paths: '.github/, scripts/'
forbid-files: 'CHANGELOG.zh-CN.md, CHANGELOG.en-US.md, LICENSE'
skip-verify-authority: 'write'
skip-label: 'skip-verify-files'
skip-verify-authority: write
skip-label: skip-verify-files
assignees: 'afc163, zombieJ, xrkffgg, MadCcc'
comment-mark: 'version'
comment-mark: version
comment: |
Hi @${{ github.event.pull_request.user.login }}. Thanks for your contribution. The path `.github/` or `scripts/` and `CHANGELOG` is only maintained by team members. This current PR will be closed and team members will help on this.
close: true
@ -35,11 +35,11 @@ jobs:
- name: verify-version
uses: actions-cool/verify-files-modify@v1
with:
forbid-files: 'README.md'
skip-verify-authority: 'write'
skip-label: 'skip-verify-files'
forbid-files: README.md
skip-verify-authority: write
skip-label: skip-verify-files
assignees: 'afc163, zombieJ, xrkffgg, MadCcc'
comment-mark: 'readmeCheck'
comment-mark: readmeCheck
comment: |
Hi @${{ github.event.pull_request.user.login }}. Thanks for your contribution. But, we don't have plan to add README of more languages. This current PR will be closed and team members will help on this.
close: true

View File

@ -19,6 +19,6 @@ jobs:
- name: verify-version
uses: actions-cool/verify-package-version@v1
with:
title-include-content: 'docs'
title-include-content: docs
title-include-version: true
open-comment: true

View File

@ -21,7 +21,7 @@ jobs:
name: visual-diff snapshot
strategy:
matrix:
shard: ['1/2', '2/2']
shard: [1/2, 2/2]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
@ -35,7 +35,7 @@ jobs:
bun run version
bun run test:image -- --shard=${{matrix.shard}}
env:
NODE_OPTIONS: "--max_old_space_size=4096"
NODE_OPTIONS: --max_old_space_size=4096
- uses: actions/upload-artifact@v4
name: artifact snapshot

View File

@ -4,7 +4,7 @@ name: 👀 Visual Regression Diff Finish
on:
workflow_run:
workflows: ["👀 Visual Regression Diff Build"]
workflows: [👀 Visual Regression Diff Build]
types:
- completed
@ -130,7 +130,7 @@ jobs:
body: |
${{ steps.report.outputs.content }}
<!-- VISUAL_DIFF_REGRESSION_HOOK -->
body-include: '<!-- VISUAL_DIFF_REGRESSION_HOOK -->'
body-include: <!-- VISUAL_DIFF_REGRESSION_HOOK -->
number: ${{ steps.pr.outputs.id }}
- name: failed comment
@ -147,7 +147,7 @@ jobs:
- `report upload` status: ${{ steps.report.outcome }}
- workflow url: https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}
<!-- VISUAL_DIFF_REGRESSION_HOOK -->
body-include: '<!-- VISUAL_DIFF_REGRESSION_HOOK -->'
body-include: <!-- VISUAL_DIFF_REGRESSION_HOOK -->
number: ${{ steps.pr.outputs.id }}
# Resync commit status. This will be also reset by `visual-regression-diff-approver`

View File

@ -34,4 +34,4 @@ jobs:
<img src="https://github.com/ant-design/ant-design/assets/507615/5d52d8a2-f74e-4159-9792-c705b7bc1744" width="300" />
<!-- VISUAL_DIFF_REGRESSION_HOOK -->
body-include: '<!-- VISUAL_DIFF_REGRESSION_HOOK -->'
body-include: <!-- VISUAL_DIFF_REGRESSION_HOOK -->

View File

@ -4,7 +4,7 @@ name: 👁️ Visual Regression Persist Finish
on:
workflow_run:
workflows: ["👁️ Visual Regression Persist Start"]
workflows: [👁️ Visual Regression Persist Start]
types:
- completed

View File

@ -26,7 +26,7 @@ jobs:
bun run test:image
tar -czvf imageSnapshots.tar.gz imageSnapshots/*
env:
NODE_OPTIONS: "--max_old_space_size=4096"
NODE_OPTIONS: --max_old_space_size=4096
# Upload `imageSnapshots` on master
- name: upload report artifact

View File

@ -1,4 +1,4 @@
{
"*.{ts,tsx,js,jsx,css}": ["biome check --write"],
"*.{ts,tsx,js,jsx,css,mjs,json}": ["biome check --write"],
"*.{md,yml}": ["prettier --ignore-unknown --write"]
}

3
.npmrc
View File

@ -1,5 +1,4 @@
package-lock=false
legacy-peer-deps=true
PUPPETEER_DOWNLOAD_BASE_URL="https://cdn.npmmirror.com/binaries/chrome-for-testing"
npm_config_sharp_libvips_binary_host="https://cdn.npmmirror.com/binaries/sharp-libvips"

View File

@ -1,5 +1,4 @@
/* eslint-disable global-require, import/no-unresolved */
/* eslint-disable no-restricted-globals */
// This is a alias proxy, which will use global `@ant-design/cssinjs` first.
// Use local if global not found.
let cssinjs;
@ -13,6 +12,7 @@ if (typeof window !== 'undefined' && window.antdCssinjs) {
} else {
// Use local version.
// Use relative path since webpack will also replace module here.
// eslint-disable-next-line antfu/no-import-node-modules-by-path
cssinjs = require('../node_modules/@ant-design/cssinjs');
}

View File

@ -34,7 +34,7 @@ describe('node', () => {
);
// Use mock to get config
require(`../../${componentTestFile}`); // eslint-disable-line global-require, import/no-dynamic-require
require(`../../${componentTestFile}`);
const option = (global as any).testConfig?.[componentName];
demoList.forEach((demoFile) => {
@ -42,7 +42,7 @@ describe('node', () => {
const test = skip.some((skipMarkdown) => demoFile.includes(skipMarkdown)) ? it.skip : it;
test(demoFile, () => {
const Demo = require(`../../${demoFile}`).default; // eslint-disable-line global-require, import/no-dynamic-require
const Demo = require(`../../${demoFile}`).default;
expect(() => {
renderToString(<Demo />);
}).not.toThrow();

View File

@ -4,10 +4,6 @@ import type { GetProp, GetProps, GetRef } from '../type';
describe('type', () => {
class CC extends React.Component<{ bamboo?: number }> {
getBamboo() {
return this.props.bamboo;
}
render() {
return this.props.bamboo;
}

View File

@ -1,4 +1,3 @@
/* eslint-disable class-methods-use-this */
import React from 'react';
import KeyCode from 'rc-util/lib/KeyCode';

View File

@ -21,7 +21,6 @@ describe('Wave component', () => {
let disCnt = 0;
beforeAll(() => {
/* eslint-disable class-methods-use-this */
class FakeResizeObserver {
observe = () => {
obCnt += 1;

View File

@ -1,4 +1,3 @@
/* eslint-disable */
export function easeInOutCubic(t: number, b: number, c: number, d: number) {
const cc = c - b;
// biome-ignore lint: it is a common easing function

View File

@ -27,10 +27,9 @@ const initCollapseMotion = (rootCls = defaultPrefixCls): CSSMotionProps => ({
motionDeadline: 500,
});
// eslint-disable-next-line @typescript-eslint/no-unused-vars
const SelectPlacements = ['bottomLeft', 'bottomRight', 'topLeft', 'topRight'] as const;
const _SelectPlacements = ['bottomLeft', 'bottomRight', 'topLeft', 'topRight'] as const;
export type SelectCommonPlacement = (typeof SelectPlacements)[number];
export type SelectCommonPlacement = (typeof _SelectPlacements)[number];
const getTransitionName = (rootPrefixCls: string, motion: string, transitionName?: string) => {
if (transitionName !== undefined) {

View File

@ -1,4 +1,3 @@
/* eslint-disable default-case */
import type { AlignType, BuildInPlacements } from '@rc-component/trigger';
import { getArrowOffsetToken } from '../style/placementArrow';

View File

@ -2,10 +2,8 @@ import classNames from 'classnames';
import type { ValidateStatus } from '../form/FormItem';
// eslint-disable-next-line @typescript-eslint/no-unused-vars
const InputStatuses = ['warning', 'error', ''] as const;
export type InputStatus = (typeof InputStatuses)[number];
const _InputStatuses = ['warning', 'error', ''] as const;
export type InputStatus = (typeof _InputStatuses)[number];
export function getStatusClassNames(
prefixCls: string,

View File

@ -77,7 +77,6 @@ export const devUseWarning: (component: string) => TypeWarning =
// Warning for the first time
if (!existWarning) {
// eslint-disable-next-line no-console
console.warn(
'[antd] There exists deprecated usage in your code:',
deprecatedWarnList,

View File

@ -219,7 +219,6 @@ const Alert = React.forwardRef<AlertRef, AlertProps>((props, ref) => {
const mergedAriaProps = React.useMemo<React.AriaAttributes>(() => {
const merged = closable ?? alert?.closable;
if (typeof merged === 'object') {
// eslint-disable-next-line @typescript-eslint/no-unused-vars
const { closeIcon: _, ...ariaProps } = merged;
return ariaProps;
}

View File

@ -84,7 +84,6 @@ describe('Alert', () => {
const warnSpy = jest.spyOn(console, 'error').mockImplementation(() => {});
expect(warnSpy).toHaveBeenCalledTimes(0);
// @ts-expect-error
// eslint-disable-next-line react/jsx-no-undef
const ThrowError = () => <NotExisted />;
render(
<ErrorBoundary>

View File

@ -78,8 +78,8 @@ describe('AutoComplete', () => {
);
expect(screen.getByRole('combobox')).toBeInTheDocument();
await userEvent.type(screen.getByRole('combobox'), '1');
expect(screen.getByTitle(/111/i)).toBeInTheDocument();
expect(screen.getByTitle(/222/i)).toBeInTheDocument();
expect(screen.getByTitle(/111/)).toBeInTheDocument();
expect(screen.getByTitle(/222/)).toBeInTheDocument();
});
it('should not warning when getInputElement is null', () => {

View File

@ -232,7 +232,6 @@ describe('Button', () => {
it('should merge text if children using variable', () => {
const wrapper = render(
<Button>
{/* eslint-disable-next-line react/jsx-curly-brace-presence */}
This {'is'} a test {1}
</Button>,
);
@ -330,7 +329,6 @@ describe('Button', () => {
it('should handle fragment as children', () => {
const wrapper = render(
<Button>
{/* eslint-disable-next-line react/jsx-no-useless-fragment */}
<>text</>
</Button>,
);

View File

@ -1,4 +1,3 @@
/* eslint-disable react/button-has-type */
import React, { Children, createRef, useContext, useEffect, useMemo, useState } from 'react';
import classNames from 'classnames';
import omit from 'rc-util/lib/omit';

View File

@ -3,7 +3,7 @@ import React from 'react';
import { cloneElement, isFragment } from '../_util/reactNode';
import type { BaseButtonProps, LegacyButtonType } from './button';
const rxTwoCNChar = /^[\u4e00-\u9fa5]{2}$/;
const rxTwoCNChar = /^[\u4E00-\u9FA5]{2}$/;
export const isTwoCNChar = rxTwoCNChar.test.bind(rxTwoCNChar);
export function convertLegacyProps(
@ -75,20 +75,16 @@ export function spaceChildren(children: React.ReactNode, needInserted: boolean)
);
}
// eslint-disable-next-line @typescript-eslint/no-unused-vars
const ButtonTypes = ['default', 'primary', 'dashed', 'link', 'text'] as const;
export type ButtonType = (typeof ButtonTypes)[number];
const _ButtonTypes = ['default', 'primary', 'dashed', 'link', 'text'] as const;
export type ButtonType = (typeof _ButtonTypes)[number];
// eslint-disable-next-line @typescript-eslint/no-unused-vars
const ButtonShapes = ['default', 'circle', 'round'] as const;
export type ButtonShape = (typeof ButtonShapes)[number];
const _ButtonShapes = ['default', 'circle', 'round'] as const;
export type ButtonShape = (typeof _ButtonShapes)[number];
// eslint-disable-next-line @typescript-eslint/no-unused-vars
const ButtonHTMLTypes = ['submit', 'button', 'reset'] as const;
export type ButtonHTMLType = (typeof ButtonHTMLTypes)[number];
const _ButtonHTMLTypes = ['submit', 'button', 'reset'] as const;
export type ButtonHTMLType = (typeof _ButtonHTMLTypes)[number];
// eslint-disable-next-line @typescript-eslint/no-unused-vars
export const ButtonVariantTypes = [
export const _ButtonVariantTypes = [
'outlined',
'dashed',
'solid',
@ -96,8 +92,7 @@ export const ButtonVariantTypes = [
'text',
'link',
] as const;
export type ButtonVariantType = (typeof ButtonVariantTypes)[number];
export type ButtonVariantType = (typeof _ButtonVariantTypes)[number];
// eslint-disable-next-line @typescript-eslint/no-unused-vars
export const ButtonColorTypes = ['default', 'primary', 'danger'] as const;
export type ButtonColorType = (typeof ButtonColorTypes)[number];
export const _ButtonColorTypes = ['default', 'primary', 'danger'] as const;
export type ButtonColorType = (typeof _ButtonColorTypes)[number];

View File

@ -202,7 +202,7 @@ describe('Calendar', () => {
it('Calendar should support locale', () => {
MockDate.set(Dayjs('2018-10-19').valueOf());
// eslint-disable-next-line global-require
const zhCN = require('../locale/zh_CN').default;
const wrapper = render(<Calendar locale={zhCN} />);
expect(wrapper.container.children[0]).toMatchSnapshot();
@ -211,9 +211,9 @@ describe('Calendar', () => {
it('Calendar locale support should override ConfigProvider locale', () => {
MockDate.set(Dayjs('2018-10-19').valueOf());
// eslint-disable-next-line global-require
const zhCN = require('../locale/zh_CN').default;
// eslint-disable-next-line global-require
const enUs = require('../../locale/en_US').default;
const wrapper = render(
<ConfigProvider locale={enUs}>

View File

@ -97,7 +97,6 @@ describe('Carousel', () => {
describe('should works for dotPosition', () => {
(['left', 'right', 'top', 'bottom'] as const).forEach((dotPosition) => {
// eslint-disable-next-line jest/valid-title
it(dotPosition, () => {
const { container } = render(
<Carousel dotPosition={dotPosition}>

View File

@ -147,7 +147,7 @@ const InternalCheckbox: React.ForwardRefRenderFunction<CheckboxRef, CheckboxProp
const ariaChecked = indeterminate ? 'mixed' : undefined;
return wrapCSSVar(
<Wave component="Checkbox" disabled={mergedDisabled}>
{/* eslint-disable-next-line jsx-a11y/label-has-associated-control */}
{}
<label
className={classString}
style={{ ...checkbox?.style, ...style }}

View File

@ -4,7 +4,6 @@ import { resetWarned } from '../../_util/warning';
import { act, fireEvent, render, waitFakeTimer } from '../../../tests/utils';
describe('Collapse', () => {
// eslint-disable-next-line global-require
const Collapse = require('..').default;
const errorSpy = jest.spyOn(console, 'error').mockImplementation(() => {});

View File

@ -1,10 +1,9 @@
/* eslint-disable class-methods-use-this */
import { Color as RcColor } from '@rc-component/color-picker';
import type { ColorGenInput, Colors } from './interface';
export const toHexFormat = (value?: string, alpha?: boolean) =>
value?.replace(/[^\w/]/gi, '').slice(0, alpha ? 8 : 6) || '';
value?.replace(/[^\w/]/g, '').slice(0, alpha ? 8 : 6) || '';
export const getHex = (value?: string, alpha?: boolean) => (value ? toHexFormat(value, alpha) : '');

View File

@ -9,7 +9,6 @@ import Button from '../../button';
describe('ConfigProvider.Icon', () => {
beforeEach(() => {
// eslint-disable-next-line jest/no-standalone-expect
expect(document.querySelectorAll('style')).toHaveLength(0);
});

View File

@ -1,5 +1,3 @@
/* eslint-disable import/prefer-default-export, prefer-destructuring */
import { generate } from '@ant-design/colors';
import { TinyColor } from '@ctrl/tinycolor';
import canUseDom from 'rc-util/lib/Dom/canUseDom';

View File

@ -1,2 +1 @@
// eslint-disable-next-line no-restricted-exports
export { useResetIconStyle as default } from '../../theme/internal';

View File

@ -18,7 +18,6 @@ const range = (start: number, end: number) => {
return result;
};
// eslint-disable-next-line arrow-body-style
const disabledDate: RangePickerProps['disabledDate'] = (current) => {
// Can not select days before today and today
return current && current < dayjs().endOf('day');

View File

@ -58,9 +58,7 @@ const useStyle = createStyles(({ token }) => ({
`,
}));
const seeds = Array(30)
.fill(1)
.map(() => Math.random());
const seeds = new Array(30).fill(1).map(() => Math.random());
const getSales = (date: Dayjs) => Math.floor(seeds[date.date() % 30] * 10000);

View File

@ -11,10 +11,9 @@ import type { SizeType } from '../../config-provider/SizeContext';
import type { Variant } from '../../config-provider';
import type { TimePickerLocale } from '../../time-picker';
// eslint-disable-next-line @typescript-eslint/no-unused-vars
const DataPickerPlacements = ['bottomLeft', 'bottomRight', 'topLeft', 'topRight'] as const;
const _DataPickerPlacements = ['bottomLeft', 'bottomRight', 'topLeft', 'topRight'] as const;
type DataPickerPlacement = (typeof DataPickerPlacements)[number];
type DataPickerPlacement = (typeof _DataPickerPlacements)[number];
export type PickerLocale = {
lang: RcPickerLocale & AdditionalPickerLocaleLangProps;

View File

@ -37,7 +37,6 @@ describe('Descriptions', () => {
});
it('when max-width: 575px, column=2', () => {
// eslint-disable-next-line global-require
const wrapper = render(
<Descriptions column={{ xs: 2 }}>
<Descriptions.Item label="Product">Cloud Database</Descriptions.Item>
@ -51,7 +50,6 @@ describe('Descriptions', () => {
});
it('when max-width: 575px, column=2, span=2', () => {
// eslint-disable-next-line global-require
const { container } = render(
<Descriptions
column={{ xs: 2 }}
@ -81,7 +79,6 @@ describe('Descriptions', () => {
});
it('column is number', () => {
// eslint-disable-next-line global-require
const wrapper = render(
<Descriptions column={3}>
<Descriptions.Item label="Product">Cloud Database</Descriptions.Item>
@ -146,7 +143,6 @@ describe('Descriptions', () => {
});
it('vertical layout', () => {
// eslint-disable-next-line global-require
const wrapper = render(
<Descriptions layout="vertical">
<Descriptions.Item label="Product">Cloud Database</Descriptions.Item>

View File

@ -16,9 +16,8 @@ import type { DrawerClassNames, DrawerPanelProps, DrawerStyles } from './DrawerP
import DrawerPanel from './DrawerPanel';
import useStyle from './style';
// eslint-disable-next-line @typescript-eslint/no-unused-vars
const SizeTypes = ['default', 'large'] as const;
type sizeType = (typeof SizeTypes)[number];
const _SizeTypes = ['default', 'large'] as const;
type sizeType = (typeof _SizeTypes)[number];
export interface PushState {
distance: string | number;

View File

@ -22,8 +22,7 @@ import { OverrideProvider } from '../menu/OverrideContext';
import { useToken } from '../theme/internal';
import useStyle from './style';
// eslint-disable-next-line @typescript-eslint/no-unused-vars
const Placements = [
const _Placements = [
'topLeft',
'topCenter',
'topRight',
@ -34,7 +33,7 @@ const Placements = [
'bottom',
] as const;
type Placement = (typeof Placements)[number];
type Placement = (typeof _Placements)[number];
type DropdownPlacement = Exclude<Placement, 'topCenter' | 'bottomCenter'>;
type OverlayFunc = () => React.ReactElement;

View File

@ -1,4 +1,3 @@
/* eslint-disable react/button-has-type */
import React, { useContext, useMemo } from 'react';
import classNames from 'classnames';
import omit from 'rc-util/lib/omit';

View File

@ -31,9 +31,8 @@ interface FieldError {
warnings: string[];
}
// eslint-disable-next-line @typescript-eslint/no-unused-vars
const ValidateStatuses = ['success', 'warning', 'error', 'validating', ''] as const;
export type ValidateStatus = (typeof ValidateStatuses)[number];
const _ValidateStatuses = ['success', 'warning', 'error', 'validating', ''] as const;
export type ValidateStatus = (typeof _ValidateStatuses)[number];
type RenderChildren<Values = any> = (form: FormInstance<Values>) => React.ReactNode;
type RcFieldProps<Values = any> = Omit<FieldProps<Values>, 'children'>;

View File

@ -710,7 +710,6 @@ describe('Form', () => {
</Form>,
);
/* eslint-disable no-await-in-loop */
for (let i = 0; i < 3; i += 1) {
await changeValue(0, 'bamboo');
await changeValue(0, '');
@ -721,7 +720,6 @@ describe('Form', () => {
await changeValue(0, 'p');
expect(container.querySelector('.ant-form-item-explain')?.textContent).toEqual('not a p');
}
/* eslint-enable */
});
// https://github.com/ant-design/ant-design/issues/20813
@ -1025,7 +1023,6 @@ describe('Form', () => {
it('validation message should has alert role', async () => {
// https://github.com/ant-design/ant-design/issues/25711
const { container } = render(
// eslint-disable-next-line no-template-curly-in-string
<Form validateMessages={{ required: 'name is good!' }}>
<Form.Item name="test" rules={[{ required: true }]}>
<input />
@ -1067,7 +1064,7 @@ describe('Form', () => {
for (let i = 0; i < 5; i += 1) {
fireEvent.click(container.querySelector('button')!);
// eslint-disable-next-line no-await-in-loop
await waitFakeTimer();
}

View File

@ -137,7 +137,7 @@ describe('Form.List', () => {
{(fields, { add, remove }) => (
<>
{fields.map((field) => (
/* biome-ignore lint/correctness/useJsxKeyInIterable: key is in a field */ /* eslint-disable-next-line react/jsx-key */
/* biome-ignore lint/correctness/useJsxKeyInIterable: key is in a field */ /* eslint-disable-next-line react/no-missing-key */
<Form.Item {...field}>
<Input />
</Form.Item>

View File

@ -6,7 +6,6 @@ const layout = {
wrapperCol: { span: 16 },
};
/* eslint-disable no-template-curly-in-string */
const validateMessages = {
required: '${label} is required!',
types: {
@ -17,7 +16,6 @@ const validateMessages = {
range: '${label} must be between ${min} and ${max}',
},
};
/* eslint-enable no-template-curly-in-string */
const onFinish = (values: any) => {
console.log(values);

View File

@ -8,10 +8,8 @@ import RowContext from './RowContext';
import type { RowContextState } from './RowContext';
import { useRowStyle } from './style';
// eslint-disable-next-line @typescript-eslint/no-unused-vars
const RowAligns = ['top', 'middle', 'bottom', 'stretch'] as const;
// eslint-disable-next-line @typescript-eslint/no-unused-vars
const RowJustify = [
const _RowAligns = ['top', 'middle', 'bottom', 'stretch'] as const;
const _RowJustify = [
'start',
'end',
'center',
@ -28,12 +26,12 @@ type ResponsiveLike<T> = {
type Gap = number | undefined;
export type Gutter = number | undefined | Partial<Record<Breakpoint, number>>;
type ResponsiveAligns = ResponsiveLike<(typeof RowAligns)[number]>;
type ResponsiveJustify = ResponsiveLike<(typeof RowJustify)[number]>;
type ResponsiveAligns = ResponsiveLike<(typeof _RowAligns)[number]>;
type ResponsiveJustify = ResponsiveLike<(typeof _RowJustify)[number]>;
export interface RowProps extends React.HTMLAttributes<HTMLDivElement> {
gutter?: Gutter | [Gutter, Gutter];
align?: (typeof RowAligns)[number] | ResponsiveAligns;
justify?: (typeof RowJustify)[number] | ResponsiveJustify;
align?: (typeof _RowAligns)[number] | ResponsiveAligns;
justify?: (typeof _RowJustify)[number] | ResponsiveJustify;
prefixCls?: string;
wrap?: boolean;
}

View File

@ -238,7 +238,6 @@ exports[`renders components/icon/demo/custom.tsx extend context correctly 1`] =
aria-hidden="true"
aria-label="home"
class="anticon anticon-home"
fill="currentColor"
focusable="false"
height="1em"
role="img"
@ -302,7 +301,6 @@ exports[`renders components/icon/demo/iconfont.tsx extend context correctly 1`]
<svg
aria-hidden="true"
class=""
fill="currentColor"
focusable="false"
height="1em"
width="1em"
@ -323,7 +321,6 @@ exports[`renders components/icon/demo/iconfont.tsx extend context correctly 1`]
<svg
aria-hidden="true"
class=""
fill="currentColor"
focusable="false"
height="1em"
width="1em"
@ -344,7 +341,6 @@ exports[`renders components/icon/demo/iconfont.tsx extend context correctly 1`]
<svg
aria-hidden="true"
class=""
fill="currentColor"
focusable="false"
height="1em"
width="1em"
@ -374,7 +370,6 @@ exports[`renders components/icon/demo/scriptUrl.tsx extend context correctly 1`]
<svg
aria-hidden="true"
class=""
fill="currentColor"
focusable="false"
height="1em"
width="1em"
@ -395,7 +390,6 @@ exports[`renders components/icon/demo/scriptUrl.tsx extend context correctly 1`]
<svg
aria-hidden="true"
class=""
fill="currentColor"
focusable="false"
height="1em"
width="1em"
@ -416,7 +410,6 @@ exports[`renders components/icon/demo/scriptUrl.tsx extend context correctly 1`]
<svg
aria-hidden="true"
class=""
fill="currentColor"
focusable="false"
height="1em"
width="1em"
@ -437,7 +430,6 @@ exports[`renders components/icon/demo/scriptUrl.tsx extend context correctly 1`]
<svg
aria-hidden="true"
class=""
fill="currentColor"
focusable="false"
height="1em"
width="1em"

View File

@ -236,7 +236,6 @@ exports[`renders components/icon/demo/custom.tsx correctly 1`] = `
aria-hidden="true"
aria-label="home"
class="anticon anticon-home"
fill="currentColor"
focusable="false"
height="1em"
role="img"
@ -298,7 +297,6 @@ exports[`renders components/icon/demo/iconfont.tsx correctly 1`] = `
<svg
aria-hidden="true"
class=""
fill="currentColor"
focusable="false"
height="1em"
width="1em"
@ -319,7 +317,6 @@ exports[`renders components/icon/demo/iconfont.tsx correctly 1`] = `
<svg
aria-hidden="true"
class=""
fill="currentColor"
focusable="false"
height="1em"
width="1em"
@ -340,7 +337,6 @@ exports[`renders components/icon/demo/iconfont.tsx correctly 1`] = `
<svg
aria-hidden="true"
class=""
fill="currentColor"
focusable="false"
height="1em"
width="1em"
@ -368,7 +364,6 @@ exports[`renders components/icon/demo/scriptUrl.tsx correctly 1`] = `
<svg
aria-hidden="true"
class=""
fill="currentColor"
focusable="false"
height="1em"
width="1em"
@ -389,7 +384,6 @@ exports[`renders components/icon/demo/scriptUrl.tsx correctly 1`] = `
<svg
aria-hidden="true"
class=""
fill="currentColor"
focusable="false"
height="1em"
width="1em"
@ -410,7 +404,6 @@ exports[`renders components/icon/demo/scriptUrl.tsx correctly 1`] = `
<svg
aria-hidden="true"
class=""
fill="currentColor"
focusable="false"
height="1em"
width="1em"
@ -431,7 +424,6 @@ exports[`renders components/icon/demo/scriptUrl.tsx correctly 1`] = `
<svg
aria-hidden="true"
class=""
fill="currentColor"
focusable="false"
height="1em"
width="1em"

View File

@ -118,7 +118,7 @@ const InputNumber = React.forwardRef<HTMLInputElement, InputNumberProps>((props,
const [variant, enableVariantCls] = useVariant('inputNumber', customVariant, bordered);
/* biome-ignore lint/complexity/noUselessFragments: avoid falsy value */ /* eslint-disable-next-line react/jsx-no-useless-fragment */
/* biome-ignore lint/complexity/noUselessFragments: avoid falsy value */
const suffixNode = hasFeedback && <>{feedbackIcon}</>;
const inputNumberClass = classNames(

View File

@ -1,7 +1,6 @@
import React, { useState } from 'react';
import { createPortal } from 'react-dom';
// eslint-disable-next-line import/no-unresolved
import type { InputProps, InputRef } from '..';
import Input from '..';
import { resetWarned } from '../../_util/warning';

View File

@ -2,7 +2,6 @@ import type { ReactNode } from 'react';
import type { InputProps } from './Input';
// eslint-disable-next-line import/prefer-default-export
export function hasPrefixSuffix(props: {
prefix?: ReactNode;
suffix?: ReactNode;

View File

@ -1,4 +1,3 @@
/* eslint-disable react/no-multi-comp */
import dayjs from 'dayjs';
import 'dayjs/locale/ar';

View File

@ -1,4 +1,3 @@
/* eslint-disable no-template-curly-in-string */
import Pagination from 'rc-pagination/lib/locale/ar_EG';
import type { Locale } from '.';

View File

@ -1,4 +1,3 @@
/* eslint-disable no-template-curly-in-string */
import Pagination from 'rc-pagination/lib/locale/az_AZ';
import type { Locale } from '.';

View File

@ -1,4 +1,3 @@
/* eslint-disable no-template-curly-in-string */
import Pagination from 'rc-pagination/lib/locale/bn_BD';
import type { Locale } from '.';

View File

@ -1,4 +1,3 @@
/* eslint-disable no-template-curly-in-string */
import Pagination from 'rc-pagination/lib/locale/by_BY';
import type { Locale } from '.';

View File

@ -1,4 +1,3 @@
/* eslint-disable no-template-curly-in-string */
import Pagination from 'rc-pagination/lib/locale/ca_ES';
import type { Locale } from '.';

View File

@ -1,4 +1,3 @@
/* eslint-disable no-template-curly-in-string */
import Pagination from 'rc-pagination/lib/locale/cs_CZ';
import type { Locale } from '.';

View File

@ -1,4 +1,3 @@
/* eslint-disable no-template-curly-in-string */
import Pagination from 'rc-pagination/lib/locale/de_DE';
import type { Locale } from '.';

View File

@ -1,4 +1,3 @@
/* eslint-disable no-template-curly-in-string */
import Pagination from 'rc-pagination/lib/locale/en_GB';
import type { Locale } from '.';

View File

@ -1,4 +1,3 @@
/* eslint-disable no-template-curly-in-string */
import Pagination from 'rc-pagination/lib/locale/en_US';
import type { Locale } from '.';

View File

@ -1,4 +1,3 @@
/* eslint-disable no-template-curly-in-string */
import Pagination from 'rc-pagination/lib/locale/es_ES';
import type { Locale } from '.';

View File

@ -1,4 +1,3 @@
/* eslint-disable no-template-curly-in-string */
import Pagination from 'rc-pagination/lib/locale/et_EE';
import type { Locale } from '.';

Some files were not shown because too many files have changed in this diff Show More