From bfb4520d6f2bab6da8432d0bac005e93c39cda92 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E6=AC=A2?= Date: Tue, 7 Jan 2025 17:45:44 +0800 Subject: [PATCH 1/3] =?UTF-8?q?feat:renderItem=20=E5=85=A5=E5=8F=82?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=20index?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Item.tsx | 4 ++-- src/Overflow.tsx | 2 +- tests/index.spec.tsx | 16 ++++++++++++++++ 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/src/Item.tsx b/src/Item.tsx index e1870b0..fe3ca1f 100644 --- a/src/Item.tsx +++ b/src/Item.tsx @@ -11,7 +11,7 @@ export interface ItemProps extends React.HTMLAttributes { item?: ItemType; className?: string; style?: React.CSSProperties; - renderItem?: (item: ItemType) => React.ReactNode; + renderItem?: (item: ItemType, info: { index: number }) => React.ReactNode; responsive?: boolean; // https://github.com/ant-design/ant-design/issues/35475 /** @@ -66,7 +66,7 @@ function InternalItem( // ================================ Render ================================ const childNode = - renderItem && item !== UNDEFINED ? renderItem(item) : children; + renderItem && item !== UNDEFINED ? renderItem(item, { index: order }) : children; let overflowStyle: React.CSSProperties | undefined; if (!invalidate) { diff --git a/src/Overflow.tsx b/src/Overflow.tsx index acc850c..e173111 100644 --- a/src/Overflow.tsx +++ b/src/Overflow.tsx @@ -24,7 +24,7 @@ export interface OverflowProps extends React.HTMLAttributes { itemKey?: React.Key | ((item: ItemType) => React.Key); /** Used for `responsive`. It will limit render node to avoid perf issue */ itemWidth?: number; - renderItem?: (item: ItemType) => React.ReactNode; + renderItem?: (item: ItemType, info: { index: number }) => React.ReactNode; /** @private Do not use in your production. Render raw node that need wrap Item by developer self */ renderRawItem?: (item: ItemType, index: number) => React.ReactElement; maxCount?: number | typeof RESPONSIVE | typeof INVALIDATE; diff --git a/tests/index.spec.tsx b/tests/index.spec.tsx index bbfc2a0..a4f42d4 100644 --- a/tests/index.spec.tsx +++ b/tests/index.spec.tsx @@ -51,6 +51,22 @@ describe('Overflow.Basic', () => { expect(wrapper.find('Item').text()).toEqual('Bamboo Is Light'); }); + it('renderItem params have "order"', () => { + const testData = getData(3); + const wrapper = mount( + { + return `${item.label}-${info.index}-test`; + }} + />, + ); + const renderedItems = wrapper.find('.rc-overflow-item'); + expect(renderedItems).toHaveLength(testData.length); + renderedItems.forEach((node, index) => { + expect(node.text()).toBe(`${testData[index].label}-${index}-test`); + }); + }); describe('renderRest', () => { it('function', () => { const wrapper = mount( From 9faf88e02cbf03b80981b47994b7af50eda5db20 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E6=AC=A2?= Date: Wed, 8 Jan 2025 15:12:48 +0800 Subject: [PATCH 2/3] =?UTF-8?q?chore:=E6=9B=B4=E6=96=B0jest=E9=85=8D?= =?UTF-8?q?=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- jest.config.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/jest.config.js b/jest.config.js index 86627c3..a8eeb76 100644 --- a/jest.config.js +++ b/jest.config.js @@ -1,4 +1,7 @@ module.exports = { setupFiles: ['./tests/setup.js'], snapshotSerializers: [require.resolve('enzyme-to-json/serializer')], + transformIgnorePatterns: [ + '/node_modules/(?!cheerio).+\\.js$', + ], }; From ea8e3a636181878de99c8044b99262dc10ffc0c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E6=AC=A2?= Date: Wed, 8 Jan 2025 15:59:40 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=20chore:cheerio=201.0.0=E7=89=88=E6=9C=AC?= =?UTF-8?q?=E8=B7=91jest=E6=9C=89export=E8=AF=AD=E6=B3=95=E9=97=AE?= =?UTF-8?q?=E9=A2=98=EF=BC=8C=E9=94=81=E5=AE=9A=E7=89=88=E6=9C=AC=E4=B8=BA?= =?UTF-8?q?1.0.0-rc.12?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- jest.config.js | 3 --- package.json | 3 +++ 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/jest.config.js b/jest.config.js index a8eeb76..86627c3 100644 --- a/jest.config.js +++ b/jest.config.js @@ -1,7 +1,4 @@ module.exports = { setupFiles: ['./tests/setup.js'], snapshotSerializers: [require.resolve('enzyme-to-json/serializer')], - transformIgnorePatterns: [ - '/node_modules/(?!cheerio).+\\.js$', - ], }; diff --git a/package.json b/package.json index bbd61bf..d24fdf6 100644 --- a/package.json +++ b/package.json @@ -80,6 +80,9 @@ "react": ">=16.9.0", "react-dom": ">=16.9.0" }, + "overrides": { + "cheerio":"1.0.0-rc.12" + }, "cnpm": { "mode": "npm" },