From 9acc34eecd0ad9763244e4acbfc2ed3ea14c53fb Mon Sep 17 00:00:00 2001 From: ajaxzheng <894103554@qq.com> Date: Mon, 28 Oct 2024 20:09:17 +0800 Subject: [PATCH] Release 3.19.0 to dev (#2447) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix(build): fix build error * fix(docs): 增加上传文件类型说明 (#2439) * fix(tag): update tag's size when only icon, update one place of button's icon size (#2440) * fix(date-picker): [date-picker,select] fix radius bugs for month-table (#2442) * docs(site): fix demos and test e2e (#2444) * test(site): fix icon not correct test e2e (#2445) --------- Co-authored-by: chenxi-20 <2465950588@qq.com> Co-authored-by: 申君健 <40288193@qq.com> Co-authored-by: MomoPoppy <125256456+MomoPoppy@users.noreply.github.com> Co-authored-by: gimmyhehe <975402925@qq.com> --- .../pc/app/action-menu/basic-usage.spec.ts | 5 +- .../pc/app/action-menu/card-mode.spec.ts | 3 +- .../demos/pc/app/action-menu/icon.spec.ts | 2 +- .../pc/app/button-group/show-more.spec.ts | 2 +- .../color-picker/history-composition-api.vue | 6 +- .../predefine-composition-api.vue | 6 +- .../history-composition-api.vue | 8 +- .../predefine-composition-api.vue | 2 +- .../demos/pc/app/date-picker/clear.spec.ts | 10 +- .../demos/pc/app/dropdown/basic-usage.spec.ts | 4 - .../pc/app/file-upload/webdoc/file-upload.js | 4 +- .../custom-editor-select-composition-api.vue | 2 +- .../app/grid/editor/custom-editor-select.vue | 2 +- .../editor/mutil-render-composition-api.vue | 2 +- .../demos/pc/app/grid/editor/mutil-render.vue | 2 +- ...-in-grid-remote-search-composition-api.vue | 2 +- .../popeditor-in-grid-remote-search.vue | 2 +- .../grid-large-tree-data-composition-api.vue | 6 +- .../grid/large-data/grid-large-tree-data.vue | 6 +- .../async-colunm-render-composition-api.vue | 2 +- .../app/grid/renderer/async-colunm-render.vue | 2 +- .../custom-renderer-composition-api.vue | 2 +- .../pc/app/grid/renderer/custom-renderer.vue | 2 +- .../valid-config-composition-api.vue | 2 +- .../pc/app/grid/validation/valid-config.vue | 2 +- ...lidation-scroll-to-col-composition-api.vue | 2 +- .../validation/validation-scroll-to-col.vue | 2 +- .../pc/app/select/nest-grid-remote.spec.ts | 2 +- .../demos/pc/app/select/nest-grid-remote.vue | 2 +- .../demos/pc/app/select/nest-grid.spec.ts | 2 +- .../select/nest-radio-grid-much-data.spec.ts | 2 +- .../sites/demos/pc/app/select/size.spec.ts | 2 +- .../sites/demos/pc/app/slider/max-min.spec.ts | 4 +- .../demos/pc/app/tag/size-composition-api.vue | 8 + examples/sites/demos/pc/app/tag/size.vue | 9 +- examples/sites/demos/pc/app/tag/webdoc/tag.js | 6 +- packages/design/aurora/index.ts | 4 +- packages/modules.json | 932 ++++++++++++++---- packages/theme/src/button/vars.less | 2 +- packages/theme/src/index.less | 1 + packages/theme/src/month-table/index.less | 19 + packages/theme/src/month-table/vars.less | 5 + packages/theme/src/select/index.less | 4 + packages/theme/src/tag/index.less | 29 +- packages/theme/src/tag/vars.less | 23 +- packages/vue-icon-saas/index.ts | 28 + packages/vue/src/select/src/pc.vue | 1 + 47 files changed, 890 insertions(+), 287 deletions(-) diff --git a/examples/sites/demos/pc/app/action-menu/basic-usage.spec.ts b/examples/sites/demos/pc/app/action-menu/basic-usage.spec.ts index 5623a46274..574459a8e6 100644 --- a/examples/sites/demos/pc/app/action-menu/basic-usage.spec.ts +++ b/examples/sites/demos/pc/app/action-menu/basic-usage.spec.ts @@ -16,10 +16,7 @@ test('基本用法', async ({ page }) => { // 更多按钮 await expect(moreItem).toHaveText(/更多/) // 图标显示 - await expect(moreItem.locator('svg > path').nth(0)).toHaveAttribute( - 'd', - 'M8 11.43c-.15 0-.31-.06-.42-.18L1.92 5.6c-.23-.23-.23-.61 0-.85s.61-.23.85 0L8 9.98l5.23-5.23a.61.61 0 0 1 .85 0c.23.23.23.61 0 .85l-5.66 5.66c-.11.11-.27.17-.42.17z' - ) + await expect(moreItem.locator('.tiny-dropdown__trigger .tiny-svg')).toBeVisible() // 分割线 await expect(actionMenu.locator('.tiny-action-menu__item-line')).toHaveCount(2) // 图标旋转 diff --git a/examples/sites/demos/pc/app/action-menu/card-mode.spec.ts b/examples/sites/demos/pc/app/action-menu/card-mode.spec.ts index 94c4027ec0..3055a84e31 100644 --- a/examples/sites/demos/pc/app/action-menu/card-mode.spec.ts +++ b/examples/sites/demos/pc/app/action-menu/card-mode.spec.ts @@ -12,5 +12,6 @@ test('基本用法', async ({ page }) => { await expect(visibleItem).toHaveCount(4) await expect(moreItem).not.toHaveText(/更多/) // 三点图标 - await expect(moreItem.locator('circle')).toHaveCount(3) + const SvgPathReg = /^M2\.3 7\.78v.+219-1\.17Z$/ + await expect(moreItem.locator('.tiny-svg path').first()).toHaveAttribute('d', SvgPathReg) }) diff --git a/examples/sites/demos/pc/app/action-menu/icon.spec.ts b/examples/sites/demos/pc/app/action-menu/icon.spec.ts index ba8db21851..d17ff39ca2 100644 --- a/examples/sites/demos/pc/app/action-menu/icon.spec.ts +++ b/examples/sites/demos/pc/app/action-menu/icon.spec.ts @@ -24,7 +24,7 @@ test('只显示文本', async ({ page }) => { await page.goto('action-menu#icon') const wrap = page.locator('#icon') - const actionMenu = wrap.locator('.tiny-action-menu').nth(2) + const actionMenu = wrap.locator('.tiny-action-menu').nth(1) const actionMenuItem = actionMenu.locator('.tiny-action-menu__item') await expect(actionMenuItem.nth(0).locator('.tiny-svg')).toBeHidden() diff --git a/examples/sites/demos/pc/app/button-group/show-more.spec.ts b/examples/sites/demos/pc/app/button-group/show-more.spec.ts index b9b97b9a70..28ce2f7ce4 100644 --- a/examples/sites/demos/pc/app/button-group/show-more.spec.ts +++ b/examples/sites/demos/pc/app/button-group/show-more.spec.ts @@ -22,6 +22,6 @@ test('测试更多按钮', async ({ page }) => { // 判断图标是否正确 const moreButton = buttonGroup.getByRole('button').nth(3) const moreButtonSvg = moreButton.locator('svg path').first() - const moreSvgPathReg = /^M292\.768 449\.694c2\.491\.515.+002-12.555-\.002z$/ + const moreSvgPathReg = /^M2\.3 7\.78v.+219-1\.17Z$/ await expect(moreButtonSvg).toHaveAttribute('d', moreSvgPathReg) }) diff --git a/examples/sites/demos/pc/app/color-picker/history-composition-api.vue b/examples/sites/demos/pc/app/color-picker/history-composition-api.vue index 4108cf32e5..c152b6a3a4 100644 --- a/examples/sites/demos/pc/app/color-picker/history-composition-api.vue +++ b/examples/sites/demos/pc/app/color-picker/history-composition-api.vue @@ -1,9 +1,9 @@ diff --git a/examples/sites/demos/pc/app/color-picker/predefine-composition-api.vue b/examples/sites/demos/pc/app/color-picker/predefine-composition-api.vue index 96281bd10d..1a6bbb2bf9 100644 --- a/examples/sites/demos/pc/app/color-picker/predefine-composition-api.vue +++ b/examples/sites/demos/pc/app/color-picker/predefine-composition-api.vue @@ -1,9 +1,9 @@ diff --git a/examples/sites/demos/pc/app/color-select-panel/history-composition-api.vue b/examples/sites/demos/pc/app/color-select-panel/history-composition-api.vue index 010330d3e4..8846485cf5 100644 --- a/examples/sites/demos/pc/app/color-select-panel/history-composition-api.vue +++ b/examples/sites/demos/pc/app/color-select-panel/history-composition-api.vue @@ -4,7 +4,13 @@ Append history color Pop history color
- +
diff --git a/examples/sites/demos/pc/app/color-select-panel/predefine-composition-api.vue b/examples/sites/demos/pc/app/color-select-panel/predefine-composition-api.vue index 6e956bd6bb..07397a67ed 100644 --- a/examples/sites/demos/pc/app/color-select-panel/predefine-composition-api.vue +++ b/examples/sites/demos/pc/app/color-select-panel/predefine-composition-api.vue @@ -4,7 +4,7 @@ Append predefine color Pop predefine color
- { // 默认显示清除按钮 await datePickerDefaultClearIcon.hover() await expect(clearIcon).toBeVisible() - await expect(clearIcon.locator('path').nth(1)).toHaveAttribute( - 'd', - 'M4.25 3.4 8 7.15l3.75-3.75a.61.61 0 0 1 .85 0c.23.23.23.62 0 .85L8.85 8l3.75 3.75c.23.24.23.62 0 .85a.61.61 0 0 1-.85 0L8 8.85 4.25 12.6a.61.61 0 0 1-.85 0 .592.592 0 0 1 0-.85L7.15 8 3.4 4.25a.61.61 0 0 1 0-.85.61.61 0 0 1 .85 0z' - ) + await expect(clearIcon.locator('path').nth(0)).toHaveAttribute('d', /^M12\.49 3\.3a.+22\.71 0Z$/) // 隐藏清除按钮 await datePickerHideClearIcon.hover() @@ -24,10 +21,7 @@ test('[DatePicker] 测试清除输入', async ({ page }) => { // 自定义清除图标 await datePickerCustomClearIcon.hover() await expect(clearIcon).toBeVisible() - await expect(clearIcon.locator('path').nth(1)).toHaveAttribute( - 'd', - 'M4.25 3.4 8 7.15l3.75-3.75a.61.61 0 0 1 .85 0c.23.23.23.62 0 .85L8.85 8l3.75 3.75c.23.24.23.62 0 .85a.61.61 0 0 1-.85 0L8 8.85 4.25 12.6a.61.61 0 0 1-.85 0 .592.592 0 0 1 0-.85L7.15 8 3.4 4.25a.61.61 0 0 1 0-.85.61.61 0 0 1 .85 0z' - ) + await expect(clearIcon.locator('path').nth(0)).toHaveAttribute('d', /^M12\.49 3\.3a.+22\.71 0Z$/) // 测试清除功能 await expect(datePickerCustomClearIcon).toHaveValue('2023-05-24') diff --git a/examples/sites/demos/pc/app/dropdown/basic-usage.spec.ts b/examples/sites/demos/pc/app/dropdown/basic-usage.spec.ts index 8a5810d52b..7ca42f010c 100644 --- a/examples/sites/demos/pc/app/dropdown/basic-usage.spec.ts +++ b/examples/sites/demos/pc/app/dropdown/basic-usage.spec.ts @@ -13,10 +13,6 @@ test('基本用法', async ({ page }) => { // 箭头是否存在 await expect(dropDownSvg).toBeVisible() - await expect(dropDownSvg.locator('path')).toHaveAttribute( - 'd', - 'M8 11.43c-.15 0-.31-.06-.42-.18L1.92 5.6c-.23-.23-.23-.61 0-.85s.61-.23.85 0L8 9.98l5.23-5.23a.61.61 0 0 1 .85 0c.23.23.23.61 0 .85l-5.66 5.66c-.11.11-.27.17-.42.17z' - ) await page.waitForTimeout(500) await dropDown.hover() diff --git a/examples/sites/demos/pc/app/file-upload/webdoc/file-upload.js b/examples/sites/demos/pc/app/file-upload/webdoc/file-upload.js index 1f61fb712e..b520ba5c40 100644 --- a/examples/sites/demos/pc/app/file-upload/webdoc/file-upload.js +++ b/examples/sites/demos/pc/app/file-upload/webdoc/file-upload.js @@ -59,8 +59,8 @@ export default { 'en-US': 'Restrict file types' }, desc: { - 'zh-CN': '通过 accept 设置限制上传文件的格式。', - 'en-US': 'Limit the format of uploaded files by setting accept .' + 'zh-CN': '通过 accept 设置限制上传文件的格式只能为图片类型。', + 'en-US': 'Set a limit on the format of uploaded files to only be image type through accept.' }, codeFiles: ['accept-file-image.vue'] }, diff --git a/examples/sites/demos/pc/app/grid/editor/custom-editor-select-composition-api.vue b/examples/sites/demos/pc/app/grid/editor/custom-editor-select-composition-api.vue index 5e1448b327..dd0bab238c 100644 --- a/examples/sites/demos/pc/app/grid/editor/custom-editor-select-composition-api.vue +++ b/examples/sites/demos/pc/app/grid/editor/custom-editor-select-composition-api.vue @@ -11,7 +11,7 @@ field="area" title="区域" :editor="{ - component: Select, + component: TinySelect, attrs: { options, textField: 'name', valueField: 'id' } }" :format-config="{ data: options, label: 'name', value: 'id' }" diff --git a/examples/sites/demos/pc/app/grid/editor/custom-editor-select.vue b/examples/sites/demos/pc/app/grid/editor/custom-editor-select.vue index 0bf6513321..17c7c41f9e 100644 --- a/examples/sites/demos/pc/app/grid/editor/custom-editor-select.vue +++ b/examples/sites/demos/pc/app/grid/editor/custom-editor-select.vue @@ -11,7 +11,7 @@ field="area" title="区域" :editor="{ - component: Select, + component: TinySelect, attrs: { options, textField: 'name', valueField: 'id' } }" :format-config="{ data: options, label: 'name', value: 'id' }" diff --git a/examples/sites/demos/pc/app/grid/editor/mutil-render-composition-api.vue b/examples/sites/demos/pc/app/grid/editor/mutil-render-composition-api.vue index b2affaae0e..872aee079d 100644 --- a/examples/sites/demos/pc/app/grid/editor/mutil-render-composition-api.vue +++ b/examples/sites/demos/pc/app/grid/editor/mutil-render-composition-api.vue @@ -11,7 +11,7 @@ field="area" title="区域" :editor="{ - component: Select, + component: TinySelect, attrs: { multiple: true, options, diff --git a/examples/sites/demos/pc/app/grid/editor/mutil-render.vue b/examples/sites/demos/pc/app/grid/editor/mutil-render.vue index 046d588982..ba4a56b227 100644 --- a/examples/sites/demos/pc/app/grid/editor/mutil-render.vue +++ b/examples/sites/demos/pc/app/grid/editor/mutil-render.vue @@ -11,7 +11,7 @@ field="area" title="区域" :editor="{ - component: Select, + component: TinySelect, attrs: { multiple: true, options, diff --git a/examples/sites/demos/pc/app/grid/editor/popeditor-in-grid-remote-search-composition-api.vue b/examples/sites/demos/pc/app/grid/editor/popeditor-in-grid-remote-search-composition-api.vue index f402e449e6..c1a1f06a0c 100644 --- a/examples/sites/demos/pc/app/grid/editor/popeditor-in-grid-remote-search-composition-api.vue +++ b/examples/sites/demos/pc/app/grid/editor/popeditor-in-grid-remote-search-composition-api.vue @@ -8,7 +8,7 @@ diff --git a/examples/sites/demos/pc/app/grid/large-data/grid-large-tree-data.vue b/examples/sites/demos/pc/app/grid/large-data/grid-large-tree-data.vue index e782ac4b9e..86e9d5f9ea 100644 --- a/examples/sites/demos/pc/app/grid/large-data/grid-large-tree-data.vue +++ b/examples/sites/demos/pc/app/grid/large-data/grid-large-tree-data.vue @@ -43,17 +43,17 @@ diff --git a/examples/sites/demos/pc/app/grid/renderer/async-colunm-render-composition-api.vue b/examples/sites/demos/pc/app/grid/renderer/async-colunm-render-composition-api.vue index 6373ef9006..1e3e865607 100644 --- a/examples/sites/demos/pc/app/grid/renderer/async-colunm-render-composition-api.vue +++ b/examples/sites/demos/pc/app/grid/renderer/async-colunm-render-composition-api.vue @@ -18,7 +18,7 @@ value: 'value' }" :editor="{ - component: Select, + component: TinySelect, attrs: { textField: 'text', clearable: true } }" > diff --git a/examples/sites/demos/pc/app/grid/renderer/async-colunm-render.vue b/examples/sites/demos/pc/app/grid/renderer/async-colunm-render.vue index 57291ed8b2..86a282513b 100644 --- a/examples/sites/demos/pc/app/grid/renderer/async-colunm-render.vue +++ b/examples/sites/demos/pc/app/grid/renderer/async-colunm-render.vue @@ -18,7 +18,7 @@ value: 'value' }" :editor="{ - component: Select, + component: TinySelect, attrs: { textField: 'text', clearable: true } }" > diff --git a/examples/sites/demos/pc/app/grid/renderer/custom-renderer-composition-api.vue b/examples/sites/demos/pc/app/grid/renderer/custom-renderer-composition-api.vue index c6db2fcfdc..a9699be91c 100644 --- a/examples/sites/demos/pc/app/grid/renderer/custom-renderer-composition-api.vue +++ b/examples/sites/demos/pc/app/grid/renderer/custom-renderer-composition-api.vue @@ -7,7 +7,7 @@ field="boole" title="Vue 渲染器" align="center" - :renderer="{ component: Switch }" + :renderer="{ component: TinySwitch }" > diff --git a/examples/sites/demos/pc/app/grid/renderer/custom-renderer.vue b/examples/sites/demos/pc/app/grid/renderer/custom-renderer.vue index 31348f5d0d..f09b082091 100644 --- a/examples/sites/demos/pc/app/grid/renderer/custom-renderer.vue +++ b/examples/sites/demos/pc/app/grid/renderer/custom-renderer.vue @@ -7,7 +7,7 @@ field="boole" title="Vue 渲染器" align="center" - :renderer="{ component: Switch }" + :renderer="{ component: TinySwitch }" > diff --git a/examples/sites/demos/pc/app/grid/validation/valid-config-composition-api.vue b/examples/sites/demos/pc/app/grid/validation/valid-config-composition-api.vue index af16edd58a..7d50c32aa2 100644 --- a/examples/sites/demos/pc/app/grid/validation/valid-config-composition-api.vue +++ b/examples/sites/demos/pc/app/grid/validation/valid-config-composition-api.vue @@ -15,7 +15,7 @@ show-overflow="tooltip" > - + diff --git a/examples/sites/demos/pc/app/grid/validation/valid-config.vue b/examples/sites/demos/pc/app/grid/validation/valid-config.vue index 3a5e9ccd3c..a8fce890c6 100644 --- a/examples/sites/demos/pc/app/grid/validation/valid-config.vue +++ b/examples/sites/demos/pc/app/grid/validation/valid-config.vue @@ -15,7 +15,7 @@ show-overflow="tooltip" > - + diff --git a/examples/sites/demos/pc/app/grid/validation/validation-scroll-to-col-composition-api.vue b/examples/sites/demos/pc/app/grid/validation/validation-scroll-to-col-composition-api.vue index 14b75f695b..b24d68ce83 100644 --- a/examples/sites/demos/pc/app/grid/validation/validation-scroll-to-col-composition-api.vue +++ b/examples/sites/demos/pc/app/grid/validation/validation-scroll-to-col-composition-api.vue @@ -11,7 +11,7 @@ - + - + { const row2 = page.getByRole('row', { name: '省份2 城市2 区域2' }) await expect(row2).not.toBeVisible() await row1.getByRole('cell').first().click() - await expect(row1).toHaveClass(/tiny-grid-body__row row__selected/) + await expect(row1).toHaveClass(/tiny-grid-body__row row__radio/) await expect(input).toHaveValue('省1-市1') const row3 = page.getByRole('row', { name: '省份10 城市10 区域10' }) diff --git a/examples/sites/demos/pc/app/select/nest-grid-remote.vue b/examples/sites/demos/pc/app/select/nest-grid-remote.vue index e438022b86..c47aed32b9 100644 --- a/examples/sites/demos/pc/app/select/nest-grid-remote.vue +++ b/examples/sites/demos/pc/app/select/nest-grid-remote.vue @@ -119,7 +119,7 @@ export default { methods: { remoteMethod(value) { const filterData = this.filter(value) - + console.log(filterData, value) return new Promise((resolve) => { setTimeout(() => { resolve(filterData) diff --git a/examples/sites/demos/pc/app/select/nest-grid.spec.ts b/examples/sites/demos/pc/app/select/nest-grid.spec.ts index 18e329e97f..51ede2b861 100644 --- a/examples/sites/demos/pc/app/select/nest-grid.spec.ts +++ b/examples/sites/demos/pc/app/select/nest-grid.spec.ts @@ -21,7 +21,7 @@ test('嵌套表格(单选)', async ({ page }) => { await row.nth(1).getByRole('cell').first().click() await expect(input).toHaveValue('深圳1') await input.click() - await expect(row.filter({ hasText: '深圳1' })).toHaveClass(/tiny-grid-body__row row__selected/) + await expect(row.filter({ hasText: '深圳1' })).toHaveClass(/tiny-grid-body__row row__radio/) }) test('嵌套表格(多选)', async ({ page }) => { diff --git a/examples/sites/demos/pc/app/select/nest-radio-grid-much-data.spec.ts b/examples/sites/demos/pc/app/select/nest-radio-grid-much-data.spec.ts index ae49793723..80f6055cbc 100644 --- a/examples/sites/demos/pc/app/select/nest-radio-grid-much-data.spec.ts +++ b/examples/sites/demos/pc/app/select/nest-radio-grid-much-data.spec.ts @@ -23,7 +23,7 @@ test('下拉表格大数据', async ({ page }) => { await input.click() await page.waitForTimeout(200) - await expect(row.nth(1)).toHaveClass(/tiny-grid-body__row row__selected/) + await expect(row.nth(1)).toHaveClass(/tiny-grid-body__row row__radio/) await expect(row).toHaveCount(6) await expect(page.getByRole('row', { name: '华南区12 广东省 广州市' })).toBeHidden() await row.nth(5).scrollIntoViewIfNeeded() diff --git a/examples/sites/demos/pc/app/select/size.spec.ts b/examples/sites/demos/pc/app/select/size.spec.ts index 9ef7ce4406..183f48a405 100644 --- a/examples/sites/demos/pc/app/select/size.spec.ts +++ b/examples/sites/demos/pc/app/select/size.spec.ts @@ -57,5 +57,5 @@ test('mini 尺寸', async ({ page }) => { await expect(input).toHaveClass(/tiny-input-mini/) await expect(tag.nth(0)).toHaveClass(/tiny-tag--mini tiny-tag--light/) // TODO: 此处继承input 尺寸的话,应该是24 - expect(height).toBeCloseTo(27, 1) + expect(height).toBeCloseTo(24, 1) }) diff --git a/examples/sites/demos/pc/app/slider/max-min.spec.ts b/examples/sites/demos/pc/app/slider/max-min.spec.ts index 3e4b5b1850..cdf1697d97 100644 --- a/examples/sites/demos/pc/app/slider/max-min.spec.ts +++ b/examples/sites/demos/pc/app/slider/max-min.spec.ts @@ -13,11 +13,11 @@ test('最大值最小值', async ({ page }) => { await page.mouse.down() await page.mouse.move(sliderWidth * -0.3 + x, y) const sliderTip = slider.locator('div').nth(2) - await expect(sliderTip).toHaveText('0') + await expect(sliderTip).toHaveText('30') await page.waitForTimeout(1000) await page.mouse.move(sliderWidth * 0.81 + x, y) const sliderTip1 = slider.locator('div').nth(2) - await expect(sliderTip1).toHaveText('100') + await expect(sliderTip1).toHaveText('62') await page.waitForTimeout(1000) await page.mouse.up() }) diff --git a/examples/sites/demos/pc/app/tag/size-composition-api.vue b/examples/sites/demos/pc/app/tag/size-composition-api.vue index 7335699fb6..bfecbcd50b 100644 --- a/examples/sites/demos/pc/app/tag/size-composition-api.vue +++ b/examples/sites/demos/pc/app/tag/size-composition-api.vue @@ -4,11 +4,19 @@ 默认标签 小型标签 超小标签 +

+ + + +