diff --git a/.dumi/theme/common/ComponentChangelog/ComponentChangelog.tsx b/.dumi/theme/common/ComponentChangelog/ComponentChangelog.tsx index 26cf85cadc..32d05d513f 100644 --- a/.dumi/theme/common/ComponentChangelog/ComponentChangelog.tsx +++ b/.dumi/theme/common/ComponentChangelog/ComponentChangelog.tsx @@ -20,6 +20,7 @@ interface ChangelogInfo { version: string; changelog: string; refs: string[]; + contributors: string[]; releaseDate: string; } @@ -160,14 +161,30 @@ const ParseChangelog: React.FC<{ changelog: string }> = (props) => { return {parsedChangelog}; }; -const RefLinks: React.FC<{ refs: string[] }> = ({ refs }) => { +const RefLinks: React.FC<{ refs: string[]; contributors: string[] }> = ({ refs, contributors }) => { const { styles } = useStyle(); + return ( <> {refs?.map((ref) => ( - - #{ref.match(/[^/]+$/)?.[0]} - + + + #{ref.match(/[^/]+$/)?.[0]} + + + ))} + {contributors?.map((contributor) => ( + + + @{contributor} + + ))} ); @@ -178,7 +195,7 @@ const RenderChangelogList: React.FC<{ changelogList: ChangelogInfo[] }> = ({ cha const { styles } = useStyle(); const len = changelogList.length; for (let i = 0; i < len; i += 1) { - const { refs, changelog } = changelogList[i]; + const { refs, changelog, contributors } = changelogList[i]; // Check if the next line is an image link and append it to the current line if (i + 1 < len && changelogList[i + 1].changelog.trim().startsWith(' = ({ cha elements.push(
  • - +
    = ({ cha elements.push(
  • - +
  • , ); } diff --git a/.github/workflows/auto-unassign.yml b/.github/workflows/issue-inactivity-reminder.yml similarity index 55% rename from .github/workflows/auto-unassign.yml rename to .github/workflows/issue-inactivity-reminder.yml index 01d647c949..46dd7e328a 100644 --- a/.github/workflows/auto-unassign.yml +++ b/.github/workflows/issue-inactivity-reminder.yml @@ -5,7 +5,7 @@ on: - cron: "0 0 * * *" # Run at 00:00 every day permissions: - issues: write # Need write permission to modify issue assignees + issues: write jobs: reminder_job: @@ -15,16 +15,18 @@ jobs: uses: actions/github-script@v7 with: script: | - const daysBeforeReminder = 14; + const daysBeforeReminder = 14; let page = 1; const perPage = 100; + + const reminderSignature = "This issue has been inactive for more than 14 days"; while (true) { const { data: issues } = await github.rest.issues.listForRepo({ owner: context.repo.owner, repo: context.repo.repo, state: 'open', - assignee: '*', // Filter assigned issues + assignee: '*', per_page: perPage, page: page, }); @@ -53,16 +55,30 @@ jobs: ); if (daysInactive >= daysBeforeReminder && !hasLinkedPR) { - const assigneesMentions = issue.assignees - .map(user => `@${user.login}`) - .join(' '); - - await github.rest.issues.createComment({ + // get issue comments + const { data: comments } = await github.rest.issues.listComments({ owner: context.repo.owner, repo: context.repo.repo, issue_number: issue.number, - body: `${assigneesMentions} 这个 issue 已经超过 14 天没有更新或关联 PR。如果您仍在处理这个 issue,请更新进度;如果您无法继续处理,请联系维护者重新分配。\n\nThis issue has been inactive for more than 14 days without any updates or linked PR. If you are still working on this issue, please provide a progress update. If you are unable to continue, please contact the maintainers for reassignment.`, }); + + // check if reminder has been sent + const hasReminder = comments.some(comment => + comment.body.includes(reminderSignature) + ); + + if (!hasReminder) { + const assigneesMentions = issue.assignees + .map(user => `@${user.login}`) + .join(' '); + + await github.rest.issues.createComment({ + owner: context.repo.owner, + repo: context.repo.repo, + issue_number: issue.number, + body: `${assigneesMentions} 这个 issue 已经超过 14 天没有更新或关联 PR。如果您仍在处理这个 issue,请更新进度;如果您无法继续处理,请联系维护者重新分配。\n\nThis issue has been inactive for more than 14 days without any updates or linked PR. If you are still working on this issue, please provide a progress update. If you are unable to continue, please contact the maintainers for reassignment.`, + }); + } } } diff --git a/components/descriptions/__tests__/index.test.tsx b/components/descriptions/__tests__/index.test.tsx index c273b1171b..facd33391a 100644 --- a/components/descriptions/__tests__/index.test.tsx +++ b/components/descriptions/__tests__/index.test.tsx @@ -102,6 +102,20 @@ describe('Descriptions', () => { expect(container.querySelectorAll('.ant-descriptions-item')[6]).toHaveAttribute('colSpan', '2'); }); + it('when column=6, last item span should be 5', () => { + const { container } = render( + , + ); + expect(container.querySelectorAll('.ant-descriptions-item')[0]).toHaveAttribute('colSpan', '1'); + expect(container.querySelectorAll('.ant-descriptions-item')[1]).toHaveAttribute('colSpan', '5'); + }); + it('column is number', () => { const wrapper = render( diff --git a/components/descriptions/hooks/useRow.ts b/components/descriptions/hooks/useRow.ts index 84945487f4..0cd1d3d6f0 100644 --- a/components/descriptions/hooks/useRow.ts +++ b/components/descriptions/hooks/useRow.ts @@ -53,7 +53,7 @@ function getCalcRows( if (count < mergedColumn) { // If the span of the last element in the current row is less than the column, then add its span to the remaining columns const last = rows[rows.length - 1]; - last.span = mergedColumn - count + 1; + last.span = mergedColumn - (count - (last.span || 1)); return rows; } return rows; diff --git a/components/input/style/index.ts b/components/input/style/index.ts index 4ac3c73c5e..20dc670845 100644 --- a/components/input/style/index.ts +++ b/components/input/style/index.ts @@ -421,6 +421,7 @@ const genAllowClearStyle = (token: InputToken): CSSObject => { // ========================= Input ========================= [`${componentCls}-clear-icon`]: { margin: 0, + padding: 0, lineHeight: 0, color: token.colorTextQuaternary, fontSize: token.fontSizeIcon, diff --git a/components/layout/__tests__/__snapshots__/demo-extend.test.ts.snap b/components/layout/__tests__/__snapshots__/demo-extend.test.ts.snap index 1f87849079..b6551c2a6e 100644 --- a/components/layout/__tests__/__snapshots__/demo-extend.test.ts.snap +++ b/components/layout/__tests__/__snapshots__/demo-extend.test.ts.snap @@ -1405,7 +1405,7 @@ exports[`renders components/layout/demo/fixed-sider.tsx extend context correctly >