@opentiny/vue-docs 3.28.1 → 3.30.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/demos/apis/action-menu.js +22 -0
- package/demos/apis/alert.js +19 -22
- package/demos/apis/button-group.js +15 -0
- package/demos/apis/calendar-view.js +5 -5
- package/demos/apis/cascader-view.js +5 -5
- package/demos/apis/dialog-box.js +39 -38
- package/demos/apis/drawer.js +31 -0
- package/demos/apis/dropdown.js +39 -1
- package/demos/apis/filter-panel.js +21 -1
- package/demos/apis/fluent-editor.js +30 -0
- package/demos/apis/form.js +11 -0
- package/demos/apis/fullscreen.js +10 -11
- package/demos/apis/grid.js +131 -16
- package/demos/apis/guide.js +14 -0
- package/demos/apis/link.js +11 -0
- package/demos/apis/message.js +48 -22
- package/demos/apis/modal.js +34 -31
- package/demos/apis/notify.js +13 -13
- package/demos/apis/rate.js +15 -0
- package/demos/apis/search-box.js +343 -0
- package/demos/apis/select.js +14 -2
- package/demos/apis/tag-input.js +182 -0
- package/demos/apis/tree.js +23 -23
- package/demos/mobile-first/app/button-group/display-mode.vue +31 -0
- package/demos/mobile-first/app/button-group/webdoc/button-group.js +13 -0
- package/demos/mobile-first/app/calendar-view/webdoc/calendar-view.js +5 -4
- package/demos/mobile-first/app/modal/webdoc/modal.js +2 -1
- package/demos/pc/app/alert/center.spec.ts +8 -0
- package/demos/pc/app/alert/custom-close.spec.ts +39 -9
- package/demos/pc/app/alert/icon.spec.ts +18 -7
- package/demos/pc/app/alert/show-icon.spec.ts +1 -1
- package/demos/pc/app/anchor/webdoc/anchor.js +1 -0
- package/demos/pc/app/base-select/copy-multi.spec.ts +1 -1
- package/demos/pc/app/button-group/display-mode-composition-api.vue +23 -0
- package/demos/pc/app/button-group/display-mode.spec.ts +0 -0
- package/demos/pc/app/button-group/display-mode.vue +31 -0
- package/demos/pc/app/button-group/sup-composition-api.vue +1 -0
- package/demos/pc/app/button-group/sup.vue +1 -0
- package/demos/pc/app/button-group/webdoc/button-group.js +14 -0
- package/demos/pc/app/calendar-view/calendar-event.spec.ts +1 -1
- package/demos/pc/app/calendar-view/custom-day-bg-color.vue +10 -0
- package/demos/pc/app/calendar-view/webdoc/calendar-view.js +4 -4
- package/demos/pc/app/cascader/filter-mode-composition-api.vue +2 -3
- package/demos/pc/app/checkbox/checked-composition-api.vue +3 -3
- package/demos/pc/app/checkbox/checked.vue +3 -3
- package/demos/pc/app/date-picker/align.spec.ts +10 -13
- package/demos/pc/app/date-picker/clear.spec.ts +3 -3
- package/demos/pc/app/date-picker/default-value.spec.ts +4 -4
- package/demos/pc/app/date-picker/events.spec.ts +2 -2
- package/demos/pc/app/date-picker/format.spec.ts +3 -3
- package/demos/pc/app/date-picker/now.spec.ts +4 -4
- package/demos/pc/app/date-picker/shortcuts.spec.ts +1 -1
- package/demos/pc/app/date-picker/slot.spec.ts +5 -5
- package/demos/pc/app/dialog-box/basic-usage.spec.ts +5 -5
- package/demos/pc/app/dialog-box/form-in-dialog.spec.ts +1 -2
- package/demos/pc/app/drawer/basic-usage.spec.ts +4 -3
- package/demos/pc/app/drawer/close-on-press-escape.spec.ts +4 -2
- package/demos/pc/app/drawer/placement.spec.ts +4 -4
- package/demos/pc/app/drawer/show-header.spec.ts +3 -2
- package/demos/pc/app/drawer/webdoc/drawer.js +3 -2
- package/demos/pc/app/dropdown/show-icon-composition-api.vue +1 -1
- package/demos/pc/app/dropdown/show-icon.vue +1 -1
- package/demos/pc/app/dropdown/tip-composition-api.vue +5 -2
- package/demos/pc/app/dropdown/tip.vue +5 -2
- package/demos/pc/app/dropdown/webdoc/dropdown.js +2 -2
- package/demos/pc/app/filter-panel/size-composition-api.vue +58 -0
- package/demos/pc/app/filter-panel/size.spec.ts +23 -0
- package/demos/pc/app/filter-panel/size.vue +68 -0
- package/demos/pc/app/filter-panel/webdoc/filter-panel.js +13 -0
- package/demos/pc/app/flowchart/basic-usage-composition-api.vue +10 -260
- package/demos/pc/app/flowchart/basic-usage.spec.ts +2 -1
- package/demos/pc/app/flowchart/basic-usage.vue +4 -249
- package/demos/pc/app/flowchart/slots-composition-api.vue +182 -0
- package/demos/pc/app/flowchart/slots.spec.ts +24 -0
- package/demos/pc/app/flowchart/slots.vue +193 -0
- package/demos/pc/app/flowchart/webdoc/flowchart.js +14 -2
- package/demos/pc/app/form/basic-usage.spec.ts +6 -4
- package/demos/pc/app/form/custom-validation-string-length-composition-api.vue +38 -0
- package/demos/pc/app/form/custom-validation-string-length.spec.ts +18 -0
- package/demos/pc/app/form/custom-validation-string-length.vue +28 -13
- package/demos/pc/app/form/group-form-composition-api.vue +2 -2
- package/demos/pc/app/form/group-form.vue +2 -2
- package/demos/pc/app/grid/filter/advanced-filter-composition-api.vue +1 -1
- package/demos/pc/app/grid/filter/advanced-filter.spec.js +1 -0
- package/demos/pc/app/grid/filter/advanced-filter.vue +1 -1
- package/demos/pc/app/grid/filter/custom-filter-composition-api.vue +46 -23
- package/demos/pc/app/grid/filter/custom-filter.spec.js +1 -1
- package/demos/pc/app/grid/filter/custom-filter.vue +47 -24
- package/demos/pc/app/grid/filter/default-filter-composition-api.vue +5 -1
- package/demos/pc/app/grid/filter/default-filter.spec.ts +1 -0
- package/demos/pc/app/grid/filter/default-filter.vue +4 -1
- package/demos/pc/app/grid/filter/filter-label-value-composition-api.vue +71 -0
- package/demos/pc/app/grid/filter/filter-label-value.spec.ts +27 -0
- package/demos/pc/app/grid/filter/filter-label-value.vue +78 -0
- package/demos/pc/app/grid/filter/input-filter-custom-component-composition-api.vue +116 -0
- package/demos/pc/app/grid/filter/input-filter-custom-component.spec.ts +20 -0
- package/demos/pc/app/grid/filter/input-filter-custom-component.vue +126 -0
- package/demos/pc/app/grid/filter/layout-order-filter-composition-api.vue +114 -0
- package/demos/pc/app/grid/filter/layout-order-filter.spec.ts +31 -0
- package/demos/pc/app/grid/filter/layout-order-filter.vue +123 -0
- package/demos/pc/app/grid/toolbar/custom-toolbar.spec.js +1 -1
- package/demos/pc/app/grid/webdoc/grid-filter.js +89 -40
- package/demos/pc/app/guide/show-close-composition-api.vue +77 -0
- package/demos/pc/app/guide/show-close.spec.ts +37 -0
- package/demos/pc/app/guide/show-close.vue +84 -0
- package/demos/pc/app/guide/webdoc/guide.js +12 -0
- package/demos/pc/app/icon/advance-icons.js +108 -2
- package/demos/pc/app/icon/advance-usage-composition-api.vue +26 -1
- package/demos/pc/app/icon/advance-usage.vue +27 -1
- package/demos/pc/app/icon/webdoc/icon.js +5 -3
- package/demos/pc/app/input/resize.spec.ts +2 -2
- package/demos/pc/app/link/custom-icon-composition-api.vue +1 -1
- package/demos/pc/app/link/custom-icon.vue +1 -1
- package/demos/pc/app/link/target-composition-api.vue +24 -0
- package/demos/pc/app/link/target.spec.ts +41 -0
- package/demos/pc/app/link/target.vue +30 -0
- package/demos/pc/app/link/webdoc/link.js +14 -0
- package/demos/pc/app/message/basic-usage-composition-api.vue +48 -0
- package/demos/pc/app/message/basic-usage.spec.ts +27 -0
- package/demos/pc/app/message/basic-usage.vue +50 -0
- package/demos/pc/app/message/message-close-composition-api.vue +25 -0
- package/demos/pc/app/message/message-close.spec.ts +9 -0
- package/demos/pc/app/message/message-close.vue +32 -0
- package/demos/pc/app/message/message-duration-composition-api.vue +25 -0
- package/demos/pc/app/message/message-duration.spec.ts +9 -0
- package/demos/pc/app/message/message-duration.vue +32 -0
- package/demos/pc/app/message/prevent-duplicate-composition-api.vue +25 -0
- package/demos/pc/app/message/prevent-duplicate.spec.ts +9 -0
- package/demos/pc/app/message/prevent-duplicate.vue +32 -0
- package/demos/pc/app/message/webdoc/message.cn.md +7 -0
- package/demos/pc/app/message/webdoc/message.en.md +7 -0
- package/demos/pc/app/message/webdoc/message.js +56 -0
- package/demos/pc/app/modal/basic-usage.spec.ts +3 -3
- package/demos/pc/app/modal/modal-footer-composition-api.vue +3 -3
- package/demos/pc/app/modal/modal-footer.spec.ts +9 -4
- package/demos/pc/app/modal/modal-footer.vue +3 -3
- package/demos/pc/app/modal/modal-header.spec.ts +2 -2
- package/demos/pc/app/modal/modal-size.spec.ts +2 -2
- package/demos/pc/app/modal/status.spec.ts +22 -15
- package/demos/pc/app/nav-menu/overflow.spec.ts +1 -1
- package/demos/pc/app/popconfirm/custom-class.spec.ts +0 -1
- package/demos/pc/app/popconfirm/slot-message.spec.ts +10 -2
- package/demos/pc/app/popconfirm/trigger.spec.ts +16 -12
- package/demos/pc/app/popover/basic-usage.spec.js +3 -8
- package/demos/pc/app/popover/custom-popper.spec.js +2 -2
- package/demos/pc/app/popover/delay.spec.js +2 -2
- package/demos/pc/app/popover/disabled.spec.js +2 -2
- package/demos/pc/app/popover/events.spec.js +1 -1
- package/demos/pc/app/popover/ignore-boundaries.spec.js +2 -3
- package/demos/pc/app/popover/offset.spec.js +17 -31
- package/demos/pc/app/radio/dynamic-disable-composition-api.vue +3 -3
- package/demos/pc/app/radio/dynamic-disable.vue +2 -2
- package/demos/pc/app/rate/clearable-composition-api.vue +20 -0
- package/demos/pc/app/rate/clearable.spec.js +74 -0
- package/demos/pc/app/rate/clearable.vue +28 -0
- package/demos/pc/app/rate/webdoc/rate.js +12 -0
- package/demos/pc/app/search/events.spec.ts +1 -1
- package/demos/pc/app/search-box/append-to-body-composition-api.vue +300 -0
- package/demos/pc/app/search-box/append-to-body.vue +308 -0
- package/demos/pc/app/search-box/auto-match-composition-api.vue +162 -0
- package/demos/pc/app/search-box/auto-match.vue +170 -0
- package/demos/pc/app/search-box/basic-usage-composition-api.vue +269 -0
- package/demos/pc/app/search-box/basic-usage.vue +277 -0
- package/demos/pc/app/search-box/custom-panel-composition-api.vue +63 -0
- package/demos/pc/app/search-box/custom-panel.vue +72 -0
- package/demos/pc/app/search-box/default-field-composition-api.vue +163 -0
- package/demos/pc/app/search-box/default-field.vue +171 -0
- package/demos/pc/app/search-box/editable-composition-api.vue +311 -0
- package/demos/pc/app/search-box/editable.vue +320 -0
- package/demos/pc/app/search-box/empty-placeholder-composition-api.vue +162 -0
- package/demos/pc/app/search-box/empty-placeholder.vue +170 -0
- package/demos/pc/app/search-box/events-composition-api.vue +169 -0
- package/demos/pc/app/search-box/events.vue +173 -0
- package/demos/pc/app/search-box/group-key-composition-api.vue +257 -0
- package/demos/pc/app/search-box/group-key.vue +266 -0
- package/demos/pc/app/search-box/help-composition-api.vue +166 -0
- package/demos/pc/app/search-box/help.vue +175 -0
- package/demos/pc/app/search-box/id-map-key-composition-api.vue +131 -0
- package/demos/pc/app/search-box/id-map-key.vue +140 -0
- package/demos/pc/app/search-box/item-placeholder-composition-api.vue +119 -0
- package/demos/pc/app/search-box/item-placeholder.vue +127 -0
- package/demos/pc/app/search-box/max-length-composition-api.vue +29 -0
- package/demos/pc/app/search-box/max-length.vue +38 -0
- package/demos/pc/app/search-box/max-time-length-composition-api.vue +53 -0
- package/demos/pc/app/search-box/max-time-length.vue +62 -0
- package/demos/pc/app/search-box/merge-tag-composition-api.vue +59 -0
- package/demos/pc/app/search-box/merge-tag.vue +68 -0
- package/demos/pc/app/search-box/panel-max-height-composition-api.vue +162 -0
- package/demos/pc/app/search-box/panel-max-height.vue +170 -0
- package/demos/pc/app/search-box/potential-match-composition-api.vue +193 -0
- package/demos/pc/app/search-box/potential-match.vue +201 -0
- package/demos/pc/app/search-box/settings-composition-api.vue +163 -0
- package/demos/pc/app/search-box/settings.vue +171 -0
- package/demos/pc/app/search-box/size-composition-api.vue +162 -0
- package/demos/pc/app/search-box/size.vue +170 -0
- package/demos/pc/app/search-box/split-input-value-composition-api.vue +162 -0
- package/demos/pc/app/search-box/split-input-value.vue +170 -0
- package/demos/pc/app/search-box/suffix-icon-composition-api.vue +209 -0
- package/demos/pc/app/search-box/suffix-icon.vue +219 -0
- package/demos/pc/app/search-box/v-model-composition-api.vue +174 -0
- package/demos/pc/app/search-box/v-model.vue +182 -0
- package/demos/pc/app/search-box/webdoc/search-box.cn.md +7 -0
- package/demos/pc/app/search-box/webdoc/search-box.en.md +7 -0
- package/demos/pc/app/search-box/webdoc/search-box.js +257 -0
- package/demos/pc/app/select/copy-multi.spec.ts +1 -1
- package/demos/pc/app/select-wrapper/copy-multi.spec.ts +2 -1
- package/demos/pc/app/tabs/basic-usage.spec.ts +2 -2
- package/demos/pc/app/tabs/more-show-all.spec.ts +2 -1
- package/demos/pc/app/tabs/tabs-events-close-composition-api.vue +8 -2
- package/demos/pc/app/tabs/tabs-events-close.vue +8 -2
- package/demos/pc/app/tag/basic-usage.spec.ts +1 -1
- package/demos/pc/app/tag/color-border.spec.ts +2 -2
- package/demos/pc/app/tag/max-width.spec.ts +1 -1
- package/demos/pc/app/tag/size.spec.ts +3 -3
- package/demos/pc/app/tag/slot-default.spec.ts +3 -3
- package/demos/pc/app/tag-group/basic-usage.spec.js +5 -5
- package/demos/pc/app/tag-group/tag-group-effect.spec.js +10 -10
- package/demos/pc/app/tag-group/tag-group-event.spec.js +1 -1
- package/demos/pc/app/tag-input/basic-usage-composition-api.vue +29 -0
- package/demos/pc/app/tag-input/basic-usage.spec.ts +0 -0
- package/demos/pc/app/tag-input/basic-usage.vue +38 -0
- package/demos/pc/app/tag-input/clearable-tag-composition-api.vue +20 -0
- package/demos/pc/app/tag-input/clearable-tag.vue +27 -0
- package/demos/pc/app/tag-input/collapsed-tag-composition-api.vue +20 -0
- package/demos/pc/app/tag-input/collapsed-tag.vue +28 -0
- package/demos/pc/app/tag-input/disabled-readonly-composition-api.vue +20 -0
- package/demos/pc/app/tag-input/disabled-readonly.vue +29 -0
- package/demos/pc/app/tag-input/draggable-tag-composition-api.vue +12 -0
- package/demos/pc/app/tag-input/draggable-tag.spec.ts +0 -0
- package/demos/pc/app/tag-input/draggable-tag.vue +20 -0
- package/demos/pc/app/tag-input/max-composition-api.vue +20 -0
- package/demos/pc/app/tag-input/max.vue +28 -0
- package/demos/pc/app/tag-input/prefix-suffix-composition-api.vue +26 -0
- package/demos/pc/app/tag-input/prefix-suffix.vue +34 -0
- package/demos/pc/app/tag-input/separator-tag-composition-api.vue +20 -0
- package/demos/pc/app/tag-input/separator-tag.vue +28 -0
- package/demos/pc/app/tag-input/webdoc/tag-input.cn.md +7 -0
- package/demos/pc/app/tag-input/webdoc/tag-input.en.md +7 -0
- package/demos/pc/app/tag-input/webdoc/tag-input.js +107 -0
- package/demos/pc/app/time-picker/basic-usage.spec.ts +5 -4
- package/demos/pc/app/time-picker/clearable.spec.ts +5 -4
- package/demos/pc/app/time-picker/default-value.spec.ts +2 -2
- package/demos/pc/app/time-picker/disabled.spec.ts +4 -3
- package/demos/pc/app/time-picker/format.spec.ts +8 -11
- package/demos/pc/app/time-picker/is-range.spec.ts +4 -3
- package/demos/pc/app/time-picker/name.spec.ts +1 -1
- package/demos/pc/app/time-picker/placeholder.spec.ts +3 -3
- package/demos/pc/app/time-picker/popper-class.spec.ts +1 -1
- package/demos/pc/app/time-picker/size.spec.ts +2 -1
- package/demos/pc/app/time-select/basic-usage.spec.ts +1 -1
- package/demos/pc/app/time-select/clear-icon.spec.ts +1 -2
- package/demos/pc/app/time-select/focus.spec.ts +1 -1
- package/demos/pc/app/time-select/picker-options.spec.ts +2 -1
- package/demos/pc/app/time-select/range-placeholder.spec.ts +2 -2
- package/demos/pc/app/time-select/size-medium.spec.ts +3 -3
- package/demos/pc/app/tooltip/delay.spec.js +7 -9
- package/demos/pc/app/tooltip/offset.spec.js +0 -2
- package/demos/pc/app/tooltip/popper-options.spec.js +2 -1
- package/demos/pc/menus.js +6 -4
- package/demos/pc/webdoc/changelog-en.md +209 -86
- package/demos/pc/webdoc/changelog.md +176 -257
- package/demos/pc/webdoc/develop-demo-en.md +13 -13
- package/demos/pc/webdoc/import-components.md +1 -1
- package/demos/pc/webdoc/introduce.md +2 -0
- package/demos/pc/webdoc/skills-en.md +107 -0
- package/demos/pc/webdoc/skills.md +107 -0
- package/demos/pc/webdoc/theme-en.md +82 -79
- package/demos/pc/webdoc/v3.28.0-release-article.md +943 -0
- package/demos/saas/menus.js +1 -0
- package/package.json +21 -20
- package/playground/App.vue +6 -4
- package/playground/shims/vue-search-box.mjs +154 -0
- package/public/static/css/mobile-dark-theme.css +1 -0
- package/src/i18n/index.js +1 -2
- package/src/main.js +8 -5
- package/src/style.css +5 -0
- package/src/views/components-doc/common.vue +0 -25
- package/src/views/components-doc/mobile.vue +49 -2
- package/vite.config.ts +3 -2
- package/vite.extend.ts +65 -0
- package/demos/pc/app/grid/webdoc/grid-ai-agent.js +0 -23
- package/demos/pc/webdoc/mcp-en.md +0 -101
- package/demos/pc/webdoc/mcp.md +0 -101
- package/src/components/mcp-docs.vue +0 -33
- package/src/composable/useTinyRemoter.ts +0 -176
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<tiny-checkbox-group v-model="checkedData">
|
|
3
|
-
<tiny-checkbox label="复选框 1" name="name1"></tiny-checkbox>
|
|
4
|
-
<tiny-checkbox label="复选框 2" name="name2" checked></tiny-checkbox>
|
|
5
|
-
<tiny-checkbox label="复选框 3" name="name3"></tiny-checkbox>
|
|
3
|
+
<tiny-checkbox label="复选框 1" name="name1" style="margin-bottom: 8px"></tiny-checkbox>
|
|
4
|
+
<tiny-checkbox label="复选框 2" name="name2" checked style="margin-bottom: 8px"></tiny-checkbox>
|
|
5
|
+
<tiny-checkbox label="复选框 3" name="name3" style="margin-bottom: 8px"></tiny-checkbox>
|
|
6
6
|
</tiny-checkbox-group>
|
|
7
7
|
</template>
|
|
8
8
|
|
|
@@ -6,38 +6,35 @@ test.use({
|
|
|
6
6
|
test('[DatePicker] 测试对齐方式', async ({ page }) => {
|
|
7
7
|
page.on('pageerror', (exception) => expect(exception).toBeNull())
|
|
8
8
|
await page.goto('date-picker#align')
|
|
9
|
-
|
|
10
|
-
await page.locator('label').filter({ hasText: '单示例' }).click()
|
|
11
|
-
await page.waitForSelector('.demo-date-picker-wrap', { state: 'visible' })
|
|
12
|
-
|
|
9
|
+
const demo = page.locator('#align')
|
|
13
10
|
// 左对齐
|
|
14
|
-
const leftDateInputDom =
|
|
15
|
-
const leftDatePanelDom = page.locator('.tiny-picker-panel').nth(
|
|
11
|
+
const leftDateInputDom = demo.locator('.tiny-input__inner').nth(0)
|
|
12
|
+
const leftDatePanelDom = page.locator('body > .tiny-picker-panel').nth(0)
|
|
16
13
|
const leftClosePanel = page.getByText('左对齐:')
|
|
17
14
|
await page.waitForTimeout(200)
|
|
18
15
|
|
|
19
16
|
await leftDateInputDom.click()
|
|
20
17
|
await page.waitForTimeout(200)
|
|
21
|
-
await expect(leftDatePanelDom).toHaveAttribute('x-placement',
|
|
18
|
+
await expect(leftDatePanelDom).toHaveAttribute('x-placement', 'bottom-start')
|
|
22
19
|
await leftClosePanel.click()
|
|
23
20
|
|
|
24
21
|
// 居中对齐
|
|
25
|
-
const centerDateInputDom =
|
|
26
|
-
const centerDatePanelDom = page.locator('.tiny-picker-panel').nth(
|
|
22
|
+
const centerDateInputDom = demo.locator('.tiny-input__inner').nth(1)
|
|
23
|
+
const centerDatePanelDom = page.locator('body > .tiny-picker-panel').nth(1)
|
|
27
24
|
const centerClosePanel = page.getByText('居中对齐:')
|
|
28
25
|
|
|
29
26
|
await centerDateInputDom.click()
|
|
30
27
|
await page.waitForTimeout(200)
|
|
31
|
-
await expect(centerDatePanelDom).toHaveAttribute('x-placement', /bottom
|
|
28
|
+
await expect(centerDatePanelDom).toHaveAttribute('x-placement', /bottom/)
|
|
32
29
|
await centerClosePanel.click()
|
|
33
30
|
|
|
34
31
|
// 右对齐
|
|
35
|
-
const rightDateInputDom =
|
|
36
|
-
const rightDatePanelDom = page.locator('.tiny-picker-panel').nth(2)
|
|
32
|
+
const rightDateInputDom = demo.locator('.tiny-input__inner').nth(2)
|
|
33
|
+
const rightDatePanelDom = page.locator('body > .tiny-picker-panel').nth(2)
|
|
37
34
|
const rightClosePanel = page.getByText('右对齐:')
|
|
38
35
|
|
|
39
36
|
await rightDateInputDom.click()
|
|
40
37
|
await page.waitForTimeout(200)
|
|
41
|
-
await expect(rightDatePanelDom).toHaveAttribute('x-placement', /bottom-end
|
|
38
|
+
await expect(rightDatePanelDom).toHaveAttribute('x-placement', /bottom-end/)
|
|
42
39
|
await rightClosePanel.click()
|
|
43
40
|
})
|
|
@@ -6,9 +6,9 @@ test('[DatePicker] 测试清除输入', async ({ page }) => {
|
|
|
6
6
|
|
|
7
7
|
const demo = page.locator('#clear')
|
|
8
8
|
|
|
9
|
-
const datePickerDefaultClearIcon = demo.getByRole('
|
|
10
|
-
const datePickerHideClearIcon = demo.getByRole('
|
|
11
|
-
const datePickerCustomClearIcon = demo.getByRole('
|
|
9
|
+
const datePickerDefaultClearIcon = demo.getByRole('combobox').nth(0)
|
|
10
|
+
const datePickerHideClearIcon = demo.getByRole('combobox').nth(1)
|
|
11
|
+
const datePickerCustomClearIcon = demo.getByRole('combobox').nth(2)
|
|
12
12
|
const clearIcon = demo.locator('.tiny-date-editor .tiny-input__icon-container .baseClearicon')
|
|
13
13
|
|
|
14
14
|
// 默认显示清除按钮
|
|
@@ -7,20 +7,20 @@ test('[DatePicker] 测试选择器打开时默认时间设置', async ({ page })
|
|
|
7
7
|
await page.locator('label').filter({ hasText: '单示例' }).click()
|
|
8
8
|
|
|
9
9
|
// default-value: 打开日期面板,默认显示的日期
|
|
10
|
-
await page.getByRole('
|
|
10
|
+
await page.getByRole('combobox').nth(0).click()
|
|
11
11
|
await expect(page.getByRole('button', { name: '2000 年' })).toBeVisible()
|
|
12
12
|
await expect(page.getByRole('button', { name: '11 月' })).toBeVisible()
|
|
13
13
|
|
|
14
14
|
// default-time: 日期时间 (范围),选择日期之后默认显示的时间 (范围)
|
|
15
|
-
const dateInputDefaultTime = page.getByRole('
|
|
15
|
+
const dateInputDefaultTime = page.getByRole('combobox').nth(1)
|
|
16
16
|
await dateInputDefaultTime.fill('2023-05-20 09:00:00')
|
|
17
17
|
await dateInputDefaultTime.press('Enter')
|
|
18
18
|
|
|
19
|
-
await page.getByRole('
|
|
19
|
+
await page.getByRole('combobox', { name: '2023-05-20 09:00:00' }).click()
|
|
20
20
|
await page.getByRole('cell', { name: '15' }).getByText('15').last().click()
|
|
21
21
|
await expect(page.getByRole('textbox', { name: '选择时间' })).toHaveValue('09:00:00')
|
|
22
22
|
|
|
23
|
-
await page.getByRole('
|
|
23
|
+
await page.getByRole('combobox').nth(2).click()
|
|
24
24
|
await page.getByRole('cell', { name: '10' }).getByText('10').last().click()
|
|
25
25
|
await page.getByRole('cell', { name: '10' }).getByText('10').nth(1).click()
|
|
26
26
|
await expect(page.getByRole('textbox', { name: '开始时间' })).toHaveValue('09:00:00')
|
|
@@ -19,7 +19,7 @@ test('[DatePicker] 测试事件', async ({ page }) => {
|
|
|
19
19
|
await page
|
|
20
20
|
.locator('div')
|
|
21
21
|
.filter({ hasText: /^blur:$/ })
|
|
22
|
-
.getByRole('
|
|
22
|
+
.getByRole('combobox')
|
|
23
23
|
.click()
|
|
24
24
|
await page.getByRole('cell', { name: '15' }).getByText('15').last().click()
|
|
25
25
|
const blurEventMessageDom = page.locator('div').filter({ hasText: '触发 blur 事件' }).nth(1)
|
|
@@ -33,7 +33,7 @@ test('[DatePicker] 测试事件', async ({ page }) => {
|
|
|
33
33
|
await page
|
|
34
34
|
.locator('div')
|
|
35
35
|
.filter({ hasText: /^change:$/ })
|
|
36
|
-
.getByRole('
|
|
36
|
+
.getByRole('combobox')
|
|
37
37
|
.click()
|
|
38
38
|
await page.getByRole('cell', { name: '15' }).getByText('15').last().click()
|
|
39
39
|
const changeEventMessageDom = page.locator('div').filter({ hasText: '触发 change 事件,组件绑定值为:' }).nth(1)
|
|
@@ -5,13 +5,13 @@ test('[DatePicker] 测试日期格式化', async ({ page }) => {
|
|
|
5
5
|
await page.goto('date-picker#format')
|
|
6
6
|
|
|
7
7
|
// format: 日期输入框中显示的格式
|
|
8
|
-
await page.getByRole('
|
|
8
|
+
await page.getByRole('combobox', { name: '2023 年 05 月 24 日' }).first().click()
|
|
9
9
|
await page.getByRole('cell', { name: '20' }).getByText('20').last().click()
|
|
10
|
-
await expect(page.getByRole('
|
|
10
|
+
await expect(page.getByRole('combobox', { name: '2023 年 05 月 20 日' }).first()).toBeVisible()
|
|
11
11
|
|
|
12
12
|
// time-format: 时间输入框中显示的格式
|
|
13
13
|
await page.locator('.tiny-date-editor input').nth(1).click()
|
|
14
|
-
await page.getByRole('cell', { name: '24' }).locator('span').click()
|
|
14
|
+
await page.getByRole('cell', { name: '24' }).locator('span').click()
|
|
15
15
|
await page.getByRole('button', { name: '确定' }).click()
|
|
16
16
|
await expect(page.locator('.tiny-date-editor input').nth(1)).toHaveValue('2023 年 05 月 24 日 08 时 00 分 00 秒')
|
|
17
17
|
|
|
@@ -3,11 +3,11 @@ import { test, expect } from '@playwright/test'
|
|
|
3
3
|
test('“此刻”逻辑定制', async ({ page }) => {
|
|
4
4
|
page.on('pageerror', (exception) => expect(exception).toBeNull())
|
|
5
5
|
await page.goto('date-picker#now')
|
|
6
|
-
await page.getByRole('
|
|
6
|
+
await page.getByRole('combobox', { name: '-11-11 10:10:11' }).first().click()
|
|
7
7
|
await page.getByText('此刻(服务器时间)').click()
|
|
8
8
|
await page.getByRole('button', { name: '确定' }).click()
|
|
9
|
-
await expect(page.getByRole('
|
|
10
|
-
await page.getByRole('
|
|
9
|
+
await expect(page.getByRole('combobox', { name: '-12-11 18:18:18' })).toBeVisible()
|
|
10
|
+
await page.getByRole('combobox', { name: '-11-11 10:10:11' }).click()
|
|
11
11
|
await page.getByRole('button', { name: '此刻' }).click()
|
|
12
|
-
await expect(page.getByRole('
|
|
12
|
+
await expect(page.getByRole('combobox', { name: '-10-08 18:18:18' })).toBeVisible()
|
|
13
13
|
})
|
|
@@ -5,7 +5,7 @@ test('[DatePicker] 测试选择快捷选项日期:今天/昨天/一周前', as
|
|
|
5
5
|
await page.goto('date-picker#shortcuts')
|
|
6
6
|
|
|
7
7
|
// 日期选择:今天/昨天/一周前
|
|
8
|
-
const datePickerDom = page.getByRole('
|
|
8
|
+
const datePickerDom = page.getByRole('combobox', { name: '请选择日期' })
|
|
9
9
|
await datePickerDom.click()
|
|
10
10
|
await page.getByRole('button', { name: '今天' }).click()
|
|
11
11
|
await page.locator('.tiny-date-editor input').first().click()
|
|
@@ -7,23 +7,23 @@ test('[DatePicker] 测试尺寸设置', async ({ page }) => {
|
|
|
7
7
|
let btn = page.getByRole('button', { name: '自定义按钮' })
|
|
8
8
|
let nowBtn = page.getByRole('button', { name: '自定义此刻' })
|
|
9
9
|
|
|
10
|
-
await page.locator('#slot').getByRole('
|
|
10
|
+
await page.locator('#slot').getByRole('combobox', { name: '请选择日期', exact: true }).click()
|
|
11
11
|
await page.waitForTimeout(200)
|
|
12
12
|
await expect(btn).toBeVisible()
|
|
13
13
|
|
|
14
|
-
await page.getByRole('
|
|
14
|
+
await page.getByRole('combobox', { name: '请选择日期时间' }).click()
|
|
15
15
|
await page.waitForTimeout(200)
|
|
16
16
|
await expect(nowBtn).toBeVisible()
|
|
17
17
|
|
|
18
|
-
await page.locator('#slot').getByRole('
|
|
18
|
+
await page.locator('#slot').getByRole('combobox', { name: '请选择周' }).click()
|
|
19
19
|
await page.waitForTimeout(200)
|
|
20
20
|
await expect(btn.first()).toBeVisible()
|
|
21
21
|
|
|
22
|
-
await page.locator('#slot').getByRole('
|
|
22
|
+
await page.locator('#slot').getByRole('combobox', { name: '请选择月份' }).click()
|
|
23
23
|
await page.waitForTimeout(200)
|
|
24
24
|
await expect(btn.first()).toBeVisible()
|
|
25
25
|
|
|
26
|
-
await page.locator('#slot').getByRole('
|
|
26
|
+
await page.locator('#slot').getByRole('combobox', { name: '请选择年份' }).click()
|
|
27
27
|
await page.waitForTimeout(200)
|
|
28
28
|
await expect(btn.first()).toBeVisible()
|
|
29
29
|
|
|
@@ -5,22 +5,22 @@ test('dialogBox 基础用法', async ({ page }) => {
|
|
|
5
5
|
await page.goto('dialog-box#basic-usage')
|
|
6
6
|
const demo = page.locator('#basic-usage')
|
|
7
7
|
|
|
8
|
-
await
|
|
8
|
+
await demo.getByRole('button', { name: /Dialog/ }).click()
|
|
9
9
|
await demo.getByRole('button', { name: '确 定' }).click()
|
|
10
10
|
|
|
11
|
-
await
|
|
11
|
+
await demo.getByRole('button', { name: /Dialog/ }).click()
|
|
12
12
|
await demo.getByRole('button', { name: '取 消' }).click()
|
|
13
13
|
|
|
14
14
|
// 点击 x 图标
|
|
15
|
-
await
|
|
15
|
+
await demo.getByRole('button', { name: /Dialog/ }).click()
|
|
16
16
|
await demo.getByLabel('Close').click()
|
|
17
17
|
|
|
18
18
|
// 点击遮罩时,关闭 dialogBox
|
|
19
|
-
await
|
|
19
|
+
await demo.getByRole('button', { name: /Dialog/ }).click()
|
|
20
20
|
await demo.locator('.tiny-dialog-box__wrapper').click()
|
|
21
21
|
|
|
22
22
|
// 按 ESC 键,关闭 dialogBox
|
|
23
|
-
await
|
|
23
|
+
await demo.getByRole('button', { name: /Dialog/ }).click()
|
|
24
24
|
await page.locator('body').press('Escape')
|
|
25
25
|
expect(demo.locator('.tiny-dialog-box.is-center > .tiny-dialog-box__header')).toBeHidden()
|
|
26
26
|
})
|
|
@@ -4,7 +4,7 @@ test('弹窗表单', async ({ page }) => {
|
|
|
4
4
|
page.on('pageerror', (exception) => expect(exception).toBeNull())
|
|
5
5
|
await page.goto('dialog-box#form-in-dialog')
|
|
6
6
|
const demo = page.locator('#form-in-dialog')
|
|
7
|
-
const dialogBox =
|
|
7
|
+
const dialogBox = demo.locator('.tiny-dialog-box')
|
|
8
8
|
await page.getByRole('button', { name: '弹出表单' }).click()
|
|
9
9
|
await expect(dialogBox.locator('.tiny-form')).toBeVisible()
|
|
10
10
|
await demo.getByRole('textbox').first().click()
|
|
@@ -17,6 +17,5 @@ test('弹窗表单', async ({ page }) => {
|
|
|
17
17
|
|
|
18
18
|
// 验证下拉选择校验提示不会异常
|
|
19
19
|
await demo.locator('.tiny-select__tags-group').click()
|
|
20
|
-
await page.waitForTimeout(200)
|
|
21
20
|
await expect(page.locator('.tiny-form__valid.tiny-tooltip')).not.toBeVisible()
|
|
22
21
|
})
|
|
@@ -3,12 +3,13 @@ import { test, expect } from '@playwright/test'
|
|
|
3
3
|
test('基本用法', async ({ page }) => {
|
|
4
4
|
page.on('pageerror', (exception) => expect(exception).toBeNull())
|
|
5
5
|
await page.goto('drawer#basic-usage')
|
|
6
|
+
const demo = page.locator('#basic-usage')
|
|
6
7
|
|
|
7
|
-
const drawer =
|
|
8
|
-
await
|
|
8
|
+
const drawer = demo.locator('.tiny-drawer__main')
|
|
9
|
+
await demo.getByRole('button', { name: '抽屉组件' }).click()
|
|
9
10
|
await expect(drawer).toBeVisible()
|
|
10
11
|
await expect(drawer.locator('.tiny-drawer__header')).toHaveText('标题')
|
|
11
12
|
await expect(drawer.locator('.tiny-drawer__body')).toHaveText('内容区域')
|
|
12
13
|
await drawer.getByRole('button', { name: 'Close' }).click()
|
|
13
|
-
await expect(
|
|
14
|
+
await expect(demo.locator('.tiny-drawer__main')).not.toBeVisible()
|
|
14
15
|
})
|
|
@@ -5,10 +5,12 @@ test('按 Esc 键关闭 Drawer(close-on-press-escape)', async ({ page }) =>
|
|
|
5
5
|
|
|
6
6
|
await page.goto('drawer#close-on-press-escape')
|
|
7
7
|
|
|
8
|
-
const
|
|
8
|
+
const demo = page.locator('#close-on-press-escape')
|
|
9
|
+
|
|
10
|
+
const drawer = demo.locator('.tiny-drawer__main')
|
|
9
11
|
|
|
10
12
|
// 打开 Drawer(用文本更稳定)
|
|
11
|
-
await
|
|
13
|
+
await demo.getByText('抽屉组件').click()
|
|
12
14
|
await expect(drawer).toBeVisible()
|
|
13
15
|
|
|
14
16
|
// 按 Esc
|
|
@@ -6,19 +6,19 @@ test('抽屉方向', async ({ page }) => {
|
|
|
6
6
|
const demo = page.locator('#placement')
|
|
7
7
|
const drawer = demo.locator('.tiny-drawer__main')
|
|
8
8
|
|
|
9
|
-
await
|
|
9
|
+
await demo.getByRole('button', { name: 'left' }).click()
|
|
10
10
|
await expect(drawer).toHaveCSS('left', '0px')
|
|
11
11
|
await page.locator('.tiny-drawer__mask').click()
|
|
12
12
|
|
|
13
|
-
await
|
|
13
|
+
await demo.getByRole('button', { name: 'right' }).click()
|
|
14
14
|
await expect(drawer).toHaveCSS('right', '0px')
|
|
15
15
|
await page.locator('.tiny-drawer__mask').click()
|
|
16
16
|
|
|
17
|
-
await
|
|
17
|
+
await demo.getByRole('button', { name: 'top' }).click()
|
|
18
18
|
await expect(drawer).toHaveCSS('top', '0px')
|
|
19
19
|
await page.locator('.tiny-drawer__mask').click()
|
|
20
20
|
|
|
21
|
-
await
|
|
21
|
+
await demo.getByRole('button', { name: 'bottom' }).click()
|
|
22
22
|
await expect(drawer).toHaveCSS('bottom', '0px')
|
|
23
23
|
await page.locator('.tiny-drawer__mask').click()
|
|
24
24
|
})
|
|
@@ -4,8 +4,9 @@ test('头部显示', async ({ page }) => {
|
|
|
4
4
|
page.on('pageerror', (exception) => expect(exception).toBeNull())
|
|
5
5
|
await page.goto('drawer#show-header')
|
|
6
6
|
|
|
7
|
-
const
|
|
7
|
+
const demo = page.locator('#show-header')
|
|
8
|
+
const drawerHeader = demo.locator('.tiny-drawer__header')
|
|
8
9
|
|
|
9
|
-
await
|
|
10
|
+
await demo.getByRole('button', { name: '隐藏头部' }).click()
|
|
10
11
|
await expect(drawerHeader).not.toBeVisible()
|
|
11
12
|
})
|
|
@@ -227,6 +227,7 @@ export default {
|
|
|
227
227
|
'zh-CN': `
|
|
228
228
|
<p><code>open</code>:当抽屉打开时触发;</p>
|
|
229
229
|
<p><code>confirm</code>:当抽屉底部确定按钮点击时触发,该按钮仅当设置 <code>show-footer</code> 属性为 true 时可见;</p>
|
|
230
|
+
<p><code>closed</code>:当抽屉关闭动画结束时触发;</p>
|
|
230
231
|
<p><code>close</code>:当抽屉关闭时触发。关闭抽屉的途径有:</p>
|
|
231
232
|
<ul>
|
|
232
233
|
<li>点击右上角关闭按钮;</li>
|
|
@@ -416,11 +417,11 @@ export default {
|
|
|
416
417
|
support: {
|
|
417
418
|
value: true
|
|
418
419
|
},
|
|
419
|
-
description: '支持 open、confirm、close 等事件。',
|
|
420
|
+
description: '支持 open、confirm、close、closed 等事件。',
|
|
420
421
|
cloud: {
|
|
421
422
|
value: true
|
|
422
423
|
},
|
|
423
|
-
apis: ['open', 'confirm', 'close'],
|
|
424
|
+
apis: ['open', 'confirm', 'close', 'closed'],
|
|
424
425
|
demos: ['events']
|
|
425
426
|
}
|
|
426
427
|
]
|
|
@@ -6,12 +6,14 @@
|
|
|
6
6
|
<tiny-dropdown-menu :options="options"> </tiny-dropdown-menu>
|
|
7
7
|
</template>
|
|
8
8
|
</tiny-dropdown>
|
|
9
|
-
<p>场景 2:使用 tip 和 tip-
|
|
9
|
+
<p>场景 2:使用 tip、tip-position 和 tip-effect 属性设置提示信息</p>
|
|
10
10
|
<tiny-dropdown>
|
|
11
11
|
<template #dropdown>
|
|
12
12
|
<tiny-dropdown-menu popper-class="my-class">
|
|
13
13
|
<tiny-dropdown-item label="老友粉" tip="老友粉"></tiny-dropdown-item>
|
|
14
14
|
<tiny-dropdown-item tip="黄金糕" tip-position="top">黄金糕</tiny-dropdown-item>
|
|
15
|
+
<tiny-dropdown-item tip="深色主题提示" tip-position="right" tip-effect="dark">深色主题</tiny-dropdown-item>
|
|
16
|
+
<tiny-dropdown-item tip="浅色主题提示" tip-position="left" tip-effect="light">浅色主题</tiny-dropdown-item>
|
|
15
17
|
<tiny-dropdown-item>狮子头</tiny-dropdown-item>
|
|
16
18
|
<tiny-dropdown-item>螺蛳粉</tiny-dropdown-item>
|
|
17
19
|
<tiny-dropdown-item disabled>双皮奶</tiny-dropdown-item>
|
|
@@ -36,7 +38,8 @@ const options = ref([
|
|
|
36
38
|
label: '狮子头',
|
|
37
39
|
divided: true,
|
|
38
40
|
tip: '很好',
|
|
39
|
-
tipPosition: 'left'
|
|
41
|
+
tipPosition: 'left',
|
|
42
|
+
tipEffect: 'light'
|
|
40
43
|
},
|
|
41
44
|
{
|
|
42
45
|
label: '黄金糕',
|
|
@@ -6,12 +6,14 @@
|
|
|
6
6
|
<tiny-dropdown-menu :options="options"> </tiny-dropdown-menu>
|
|
7
7
|
</template>
|
|
8
8
|
</tiny-dropdown>
|
|
9
|
-
<p>场景 2:使用 tip 和 tip-
|
|
9
|
+
<p>场景 2:使用 tip、tip-position 和 tip-effect 属性设置提示信息</p>
|
|
10
10
|
<tiny-dropdown>
|
|
11
11
|
<template #dropdown>
|
|
12
12
|
<tiny-dropdown-menu popper-class="my-class">
|
|
13
13
|
<tiny-dropdown-item label="老友粉" tip="老友粉"></tiny-dropdown-item>
|
|
14
14
|
<tiny-dropdown-item tip="黄金糕" tip-position="top">黄金糕</tiny-dropdown-item>
|
|
15
|
+
<tiny-dropdown-item tip="深色主题提示" tip-position="right" tip-effect="dark">深色主题</tiny-dropdown-item>
|
|
16
|
+
<tiny-dropdown-item tip="浅色主题提示" tip-position="left" tip-effect="light">浅色主题</tiny-dropdown-item>
|
|
15
17
|
<tiny-dropdown-item>狮子头</tiny-dropdown-item>
|
|
16
18
|
<tiny-dropdown-item>螺蛳粉</tiny-dropdown-item>
|
|
17
19
|
<tiny-dropdown-item disabled>双皮奶</tiny-dropdown-item>
|
|
@@ -43,7 +45,8 @@ export default {
|
|
|
43
45
|
label: '狮子头',
|
|
44
46
|
divided: true,
|
|
45
47
|
tip: '很好',
|
|
46
|
-
tipPosition: 'left'
|
|
48
|
+
tipPosition: 'left',
|
|
49
|
+
tipEffect: 'light'
|
|
47
50
|
},
|
|
48
51
|
{
|
|
49
52
|
label: '黄金糕',
|
|
@@ -119,9 +119,9 @@ export default {
|
|
|
119
119
|
'en-US': 'Prompt'
|
|
120
120
|
},
|
|
121
121
|
desc: {
|
|
122
|
-
'zh-CN': '
|
|
122
|
+
'zh-CN': '<p>通过 <code>tip</code> 属性设置提示信息,<code>tip-position</code> 属性设置提示信息的位置,<code>tip-effect</code> 属性设置提示信息的主题(light/dark)。</p>\n',
|
|
123
123
|
'en-US':
|
|
124
|
-
'<p>Set the prompt information through the <code>tip</code> attribute,
|
|
124
|
+
'<p>Set the prompt information through the <code>tip</code> attribute, set the position of the prompt information through the <code>tip-position</code> attribute, and set the theme of the prompt information (light/dark) through the <code>tip-effect</code> attribute.</p>\n'
|
|
125
125
|
},
|
|
126
126
|
codeFiles: ['tip.vue']
|
|
127
127
|
},
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div>
|
|
3
|
+
<div class="mb10">
|
|
4
|
+
<span class="label">选择尺寸:</span>
|
|
5
|
+
<tiny-radio-group v-model="currentSize">
|
|
6
|
+
<tiny-radio label="">默认 (default)</tiny-radio>
|
|
7
|
+
<tiny-radio label="medium">中等 (medium)</tiny-radio>
|
|
8
|
+
</tiny-radio-group>
|
|
9
|
+
</div>
|
|
10
|
+
<div class="box">
|
|
11
|
+
<tiny-filter-panel
|
|
12
|
+
ref="filterPanel"
|
|
13
|
+
label="物品数量"
|
|
14
|
+
:value="value"
|
|
15
|
+
:size="currentSize"
|
|
16
|
+
@handle-clear="handleClear"
|
|
17
|
+
>
|
|
18
|
+
<tiny-radio-group v-model="radioVal" size="mini">
|
|
19
|
+
<tiny-radio label="大于">大于</tiny-radio>
|
|
20
|
+
<tiny-radio label="等于">等于</tiny-radio>
|
|
21
|
+
<tiny-radio label="小于">小于</tiny-radio>
|
|
22
|
+
</tiny-radio-group>
|
|
23
|
+
<tiny-input type="text" v-model="inputVal" style="margin-top: 20px"></tiny-input>
|
|
24
|
+
</tiny-filter-panel>
|
|
25
|
+
</div>
|
|
26
|
+
</div>
|
|
27
|
+
</template>
|
|
28
|
+
|
|
29
|
+
<script setup>
|
|
30
|
+
import { ref, computed } from 'vue'
|
|
31
|
+
import { TinyFilterPanel, TinyRadio, TinyRadioGroup, TinyInput } from '@opentiny/vue'
|
|
32
|
+
|
|
33
|
+
// 表单数据
|
|
34
|
+
const inputVal = ref('')
|
|
35
|
+
const radioVal = ref('')
|
|
36
|
+
const currentSize = ref('') // 默认尺寸
|
|
37
|
+
|
|
38
|
+
// 计算显示的值
|
|
39
|
+
const value = computed(() => {
|
|
40
|
+
return radioVal.value + inputVal.value
|
|
41
|
+
})
|
|
42
|
+
|
|
43
|
+
// 清空处理
|
|
44
|
+
const handleClear = () => {
|
|
45
|
+
radioVal.value = ''
|
|
46
|
+
inputVal.value = ''
|
|
47
|
+
}
|
|
48
|
+
</script>
|
|
49
|
+
|
|
50
|
+
<style scoped>
|
|
51
|
+
.box {
|
|
52
|
+
display: flex;
|
|
53
|
+
}
|
|
54
|
+
.label {
|
|
55
|
+
margin-right: 10px;
|
|
56
|
+
font-weight: bold;
|
|
57
|
+
}
|
|
58
|
+
</style>
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { test, expect } from '@playwright/test'
|
|
2
|
+
|
|
3
|
+
test('测试过滤器面板尺寸', async ({ page }) => {
|
|
4
|
+
page.on('pageerror', (exception) => expect(exception).toBeNull())
|
|
5
|
+
await page.goto('filter-panel#size')
|
|
6
|
+
|
|
7
|
+
const demo = page.locator('#size')
|
|
8
|
+
const filterBox = demo.locator('.tiny-filter-box')
|
|
9
|
+
|
|
10
|
+
// 测试默认尺寸(不包含 medium class)
|
|
11
|
+
await expect(filterBox).toHaveClass(/tiny-filter-box/)
|
|
12
|
+
await expect(filterBox).not.toHaveClass(/tiny-filter-box--medium/)
|
|
13
|
+
|
|
14
|
+
// 测试 medium 尺寸
|
|
15
|
+
await demo.getByText('中等 (medium)').click()
|
|
16
|
+
await page.waitForTimeout(200)
|
|
17
|
+
await expect(filterBox).toHaveClass(/tiny-filter-box--medium/)
|
|
18
|
+
|
|
19
|
+
// 切换回默认尺寸
|
|
20
|
+
await demo.getByText('默认 (default)').click()
|
|
21
|
+
await page.waitForTimeout(200)
|
|
22
|
+
await expect(filterBox).not.toHaveClass(/tiny-filter-box--medium/)
|
|
23
|
+
})
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div>
|
|
3
|
+
<div class="mb10">
|
|
4
|
+
<span class="label">选择尺寸:</span>
|
|
5
|
+
<tiny-radio-group v-model="currentSize">
|
|
6
|
+
<tiny-radio label="">默认 (default)</tiny-radio>
|
|
7
|
+
<tiny-radio label="medium">中等 (medium)</tiny-radio>
|
|
8
|
+
</tiny-radio-group>
|
|
9
|
+
</div>
|
|
10
|
+
<div class="box">
|
|
11
|
+
<tiny-filter-panel
|
|
12
|
+
ref="filterPanel"
|
|
13
|
+
label="物品数量"
|
|
14
|
+
:value="value"
|
|
15
|
+
:size="currentSize"
|
|
16
|
+
@handle-clear="handleClear"
|
|
17
|
+
>
|
|
18
|
+
<tiny-radio-group v-model="radioVal" size="mini">
|
|
19
|
+
<tiny-radio label="大于">大于</tiny-radio>
|
|
20
|
+
<tiny-radio label="等于">等于</tiny-radio>
|
|
21
|
+
<tiny-radio label="小于">小于</tiny-radio>
|
|
22
|
+
</tiny-radio-group>
|
|
23
|
+
<tiny-input type="text" v-model="inputVal" style="margin-top: 20px"></tiny-input>
|
|
24
|
+
</tiny-filter-panel>
|
|
25
|
+
</div>
|
|
26
|
+
</div>
|
|
27
|
+
</template>
|
|
28
|
+
|
|
29
|
+
<script>
|
|
30
|
+
import { TinyFilterPanel, TinyRadio, TinyRadioGroup, TinyInput } from '@opentiny/vue'
|
|
31
|
+
|
|
32
|
+
export default {
|
|
33
|
+
components: {
|
|
34
|
+
TinyRadio,
|
|
35
|
+
TinyRadioGroup,
|
|
36
|
+
TinyFilterPanel,
|
|
37
|
+
TinyInput
|
|
38
|
+
},
|
|
39
|
+
data() {
|
|
40
|
+
return {
|
|
41
|
+
inputVal: '',
|
|
42
|
+
radioVal: '',
|
|
43
|
+
currentSize: '' // 默认尺寸
|
|
44
|
+
}
|
|
45
|
+
},
|
|
46
|
+
computed: {
|
|
47
|
+
value() {
|
|
48
|
+
return this.radioVal + this.inputVal
|
|
49
|
+
}
|
|
50
|
+
},
|
|
51
|
+
methods: {
|
|
52
|
+
handleClear() {
|
|
53
|
+
this.radioVal = ''
|
|
54
|
+
this.inputVal = ''
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
</script>
|
|
59
|
+
|
|
60
|
+
<style scoped>
|
|
61
|
+
.box {
|
|
62
|
+
display: flex;
|
|
63
|
+
}
|
|
64
|
+
.label {
|
|
65
|
+
margin-right: 10px;
|
|
66
|
+
font-weight: bold;
|
|
67
|
+
}
|
|
68
|
+
</style>
|
|
@@ -46,6 +46,19 @@ export default {
|
|
|
46
46
|
},
|
|
47
47
|
codeFiles: ['tip.vue']
|
|
48
48
|
},
|
|
49
|
+
{
|
|
50
|
+
demoId: 'size',
|
|
51
|
+
name: {
|
|
52
|
+
'zh-CN': '尺寸',
|
|
53
|
+
'en-US': 'Size'
|
|
54
|
+
},
|
|
55
|
+
desc: {
|
|
56
|
+
'zh-CN': '通过 <code>size</code> 设置过滤器面板的尺寸。支持 <code>medium</code> 中等尺寸,不设置则为默认尺寸。',
|
|
57
|
+
'en-US':
|
|
58
|
+
'Set the size of the filter panel through <code>size</code>. Supports <code>medium</code> size. If not set, the default size is used.'
|
|
59
|
+
},
|
|
60
|
+
codeFiles: ['size.vue']
|
|
61
|
+
},
|
|
49
62
|
{
|
|
50
63
|
demoId: 'manual-hide',
|
|
51
64
|
name: {
|