@opentiny/vue-docs 3.28.0 → 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 -2
- 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/tabs/tooltip-composition-api.vue +1 -1
- 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/app/user-head/color-composition-api.vue +2 -1
- package/demos/pc/menus.js +6 -4
- package/demos/pc/webdoc/changelog-en.md +370 -176
- package/demos/pc/webdoc/changelog.md +177 -219
- 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 +12 -6
- 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
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div>
|
|
3
|
+
<div class="content">
|
|
4
|
+
<tiny-button @click="btnClick">显示关闭按钮</tiny-button>
|
|
5
|
+
</div>
|
|
6
|
+
</div>
|
|
7
|
+
</template>
|
|
8
|
+
|
|
9
|
+
<script setup>
|
|
10
|
+
import { Button as TinyButton, Message } from '@opentiny/vue'
|
|
11
|
+
|
|
12
|
+
function btnClick() {
|
|
13
|
+
Message.message({
|
|
14
|
+
status: 'info',
|
|
15
|
+
message: '是否显示关闭按钮',
|
|
16
|
+
messageClosable: true
|
|
17
|
+
})
|
|
18
|
+
}
|
|
19
|
+
</script>
|
|
20
|
+
|
|
21
|
+
<style scoped>
|
|
22
|
+
.content {
|
|
23
|
+
margin: 8px;
|
|
24
|
+
}
|
|
25
|
+
</style>
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { test, expect } from '@playwright/test'
|
|
2
|
+
|
|
3
|
+
test('消息的关闭和延时', async ({ page }) => {
|
|
4
|
+
page.on('pageerror', (exception) => expect(exception).toBeNull())
|
|
5
|
+
await page.goto('message#message-close')
|
|
6
|
+
await page.getByRole('button', { name: '显示关闭按钮' }).click()
|
|
7
|
+
const info = page.locator('div').filter({ hasText: /是否显示关闭按钮/ })
|
|
8
|
+
await expect(info.nth(1)).toHaveText(/是否显示关闭按钮/)
|
|
9
|
+
})
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div>
|
|
3
|
+
<div class="content">
|
|
4
|
+
<tiny-button @click="btnClick">显示关闭按钮</tiny-button>
|
|
5
|
+
</div>
|
|
6
|
+
</div>
|
|
7
|
+
</template>
|
|
8
|
+
|
|
9
|
+
<script>
|
|
10
|
+
import { Button, Message } from '@opentiny/vue'
|
|
11
|
+
|
|
12
|
+
export default {
|
|
13
|
+
components: {
|
|
14
|
+
TinyButton: Button
|
|
15
|
+
},
|
|
16
|
+
methods: {
|
|
17
|
+
btnClick() {
|
|
18
|
+
Message.message({
|
|
19
|
+
status: 'info',
|
|
20
|
+
message: '是否显示关闭按钮',
|
|
21
|
+
messageClosable: true
|
|
22
|
+
})
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
</script>
|
|
27
|
+
|
|
28
|
+
<style scoped>
|
|
29
|
+
.content {
|
|
30
|
+
margin: 8px;
|
|
31
|
+
}
|
|
32
|
+
</style>
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div>
|
|
3
|
+
<div class="content">
|
|
4
|
+
<tiny-button @click="btnClick">消息时长</tiny-button>
|
|
5
|
+
</div>
|
|
6
|
+
</div>
|
|
7
|
+
</template>
|
|
8
|
+
|
|
9
|
+
<script setup>
|
|
10
|
+
import { Button as TinyButton, Message } from '@opentiny/vue'
|
|
11
|
+
|
|
12
|
+
function btnClick() {
|
|
13
|
+
Message.message({
|
|
14
|
+
status: 'info',
|
|
15
|
+
message: '自定义消息的内容,5s 后得自动关闭',
|
|
16
|
+
duration: 5000
|
|
17
|
+
})
|
|
18
|
+
}
|
|
19
|
+
</script>
|
|
20
|
+
|
|
21
|
+
<style scoped>
|
|
22
|
+
.content {
|
|
23
|
+
margin: 8px;
|
|
24
|
+
}
|
|
25
|
+
</style>
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { test, expect } from '@playwright/test'
|
|
2
|
+
|
|
3
|
+
test('消息的关闭和延时', async ({ page }) => {
|
|
4
|
+
page.on('pageerror', (exception) => expect(exception).toBeNull())
|
|
5
|
+
await page.goto('message#message-duration')
|
|
6
|
+
await page.getByRole('button', { name: '消息时长' }).click()
|
|
7
|
+
const info = page.locator('div').filter({ hasText: /5s 后得自动关闭/ })
|
|
8
|
+
await expect(info.nth(1)).toHaveText(/5s 后得自动关闭/)
|
|
9
|
+
})
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div>
|
|
3
|
+
<div class="content">
|
|
4
|
+
<tiny-button @click="btnClick">消息时长</tiny-button>
|
|
5
|
+
</div>
|
|
6
|
+
</div>
|
|
7
|
+
</template>
|
|
8
|
+
|
|
9
|
+
<script>
|
|
10
|
+
import { Button, Message } from '@opentiny/vue'
|
|
11
|
+
|
|
12
|
+
export default {
|
|
13
|
+
components: {
|
|
14
|
+
TinyButton: Button
|
|
15
|
+
},
|
|
16
|
+
methods: {
|
|
17
|
+
btnClick() {
|
|
18
|
+
Message.message({
|
|
19
|
+
status: 'info',
|
|
20
|
+
message: '自定义消息的内容,5s 后得自动关闭',
|
|
21
|
+
duration: 5000
|
|
22
|
+
})
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
</script>
|
|
27
|
+
|
|
28
|
+
<style scoped>
|
|
29
|
+
.content {
|
|
30
|
+
margin: 8px;
|
|
31
|
+
}
|
|
32
|
+
</style>
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div>
|
|
3
|
+
<div class="content">
|
|
4
|
+
<tiny-button @click="btnClick">重复点击不出现多个</tiny-button>
|
|
5
|
+
</div>
|
|
6
|
+
</div>
|
|
7
|
+
</template>
|
|
8
|
+
|
|
9
|
+
<script setup>
|
|
10
|
+
import { Button as TinyButton, Message } from '@opentiny/vue'
|
|
11
|
+
|
|
12
|
+
function btnClick() {
|
|
13
|
+
Message.message({
|
|
14
|
+
status: 'info',
|
|
15
|
+
message: '自定义消息具有唯一 id,所以不会重复出现',
|
|
16
|
+
id: 'unique'
|
|
17
|
+
})
|
|
18
|
+
}
|
|
19
|
+
</script>
|
|
20
|
+
|
|
21
|
+
<style scoped>
|
|
22
|
+
.content {
|
|
23
|
+
margin: 8px;
|
|
24
|
+
}
|
|
25
|
+
</style>
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { test, expect } from '@playwright/test'
|
|
2
|
+
|
|
3
|
+
test('防止重复消息提示', async ({ page }) => {
|
|
4
|
+
page.on('pageerror', (exception) => expect(exception).toBeNull())
|
|
5
|
+
await page.goto('message#prevent-duplicate')
|
|
6
|
+
await page.getByRole('button', { name: '重复点击不出现多个' }).click()
|
|
7
|
+
const info = await page.locator('div').filter({ hasText: '自定义消息具有唯一 id,所以不会重复出现' })
|
|
8
|
+
await expect(info.nth(1)).toHaveText(/唯一 id/)
|
|
9
|
+
})
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div>
|
|
3
|
+
<div class="content">
|
|
4
|
+
<tiny-button @click="btnClick" :reset-time="0">重复点击不出现多个</tiny-button>
|
|
5
|
+
</div>
|
|
6
|
+
</div>
|
|
7
|
+
</template>
|
|
8
|
+
|
|
9
|
+
<script>
|
|
10
|
+
import { Button, Message } from '@opentiny/vue'
|
|
11
|
+
|
|
12
|
+
export default {
|
|
13
|
+
components: {
|
|
14
|
+
TinyButton: Button
|
|
15
|
+
},
|
|
16
|
+
methods: {
|
|
17
|
+
btnClick() {
|
|
18
|
+
Message.message({
|
|
19
|
+
status: 'info',
|
|
20
|
+
message: '自定义消息具有唯一 id,所以不会重复出现',
|
|
21
|
+
id: 'unique'
|
|
22
|
+
})
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
</script>
|
|
27
|
+
|
|
28
|
+
<style scoped>
|
|
29
|
+
.content {
|
|
30
|
+
margin: 8px;
|
|
31
|
+
}
|
|
32
|
+
</style>
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
export default {
|
|
2
|
+
column: '2',
|
|
3
|
+
owner: '',
|
|
4
|
+
show: true,
|
|
5
|
+
cloud: true,
|
|
6
|
+
demos: [
|
|
7
|
+
{
|
|
8
|
+
demoId: 'basic-usage',
|
|
9
|
+
name: {
|
|
10
|
+
'zh-CN': '基本用法',
|
|
11
|
+
'en-US': 'Basic Usage'
|
|
12
|
+
},
|
|
13
|
+
desc: {
|
|
14
|
+
'zh-CN': `通过<code>status</code>属性设置组件状态,可选值有<code>info</code>、<code>success</code>、<code>warning</code>、<code>error</code>、<code>loading</code>五种状态。<code>message</code> 属性设置提示信息。`,
|
|
15
|
+
'en-US': `Set the component status via the <code>status</code> attribute, with optional values including <code>info</code>, <code>success</code>, <code>warning</code>, <code>error</code>, and <code>loading</code>. The <code>message</code> attribute sets the prompt information.`
|
|
16
|
+
},
|
|
17
|
+
codeFiles: ['basic-usage.vue']
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
demoId: 'message-duration',
|
|
21
|
+
name: {
|
|
22
|
+
'zh-CN': '自定义时长',
|
|
23
|
+
'en-US': 'Custom Duration'
|
|
24
|
+
},
|
|
25
|
+
desc: {
|
|
26
|
+
'zh-CN': `<code>duration</code> 属性用于设置消息提示的显示时长,单位为毫秒。`,
|
|
27
|
+
'en-US': `The <code>duration</code> attribute is used to set the display duration of the message prompt, in milliseconds.`
|
|
28
|
+
},
|
|
29
|
+
codeFiles: ['message-duration.vue']
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
demoId: 'message-close',
|
|
33
|
+
name: {
|
|
34
|
+
'zh-CN': '消息显示关闭按钮',
|
|
35
|
+
'en-US': 'Message Close Button'
|
|
36
|
+
},
|
|
37
|
+
desc: {
|
|
38
|
+
'zh-CN': `<code>message-closable</code> 属性用于设置消息提示是否可关闭。`,
|
|
39
|
+
'en-US': `The <code>message-closable</code> attribute is used to set whether the message prompt can be closed.`
|
|
40
|
+
},
|
|
41
|
+
codeFiles: ['message-close.vue']
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
demoId: 'prevent-duplicate',
|
|
45
|
+
name: {
|
|
46
|
+
'zh-CN': '防止重复消息提示',
|
|
47
|
+
'en-US': 'Prevent Duplicate Message Prompts'
|
|
48
|
+
},
|
|
49
|
+
desc: {
|
|
50
|
+
'zh-CN': `<code>id</code> 属性设置防止重复提示。`,
|
|
51
|
+
'en-US': `The <code>id</code> attribute is set to prevent duplicate prompts.`
|
|
52
|
+
},
|
|
53
|
+
codeFiles: ['prevent-duplicate.vue']
|
|
54
|
+
}
|
|
55
|
+
]
|
|
56
|
+
}
|
|
@@ -5,7 +5,7 @@ test('基本用法', async ({ page }) => {
|
|
|
5
5
|
await page.goto('modal#basic-usage')
|
|
6
6
|
|
|
7
7
|
const modal = page.locator('.tiny-modal__status-wrapper svg').first()
|
|
8
|
-
const content = page.locator('.tiny-
|
|
8
|
+
const content = page.locator('.tiny-modal.type__alert.is__visible')
|
|
9
9
|
|
|
10
10
|
// 基本提示框
|
|
11
11
|
await page.getByRole('button', { name: '基本提示框' }).click()
|
|
@@ -24,11 +24,11 @@ test('基本用法', async ({ page }) => {
|
|
|
24
24
|
|
|
25
25
|
// 打开弹窗 1
|
|
26
26
|
await page.getByRole('button', { name: '打开弹窗 1' }).click()
|
|
27
|
-
await expect(content
|
|
27
|
+
await expect(content).toHaveText(/窗口内容1/)
|
|
28
28
|
await page.getByRole('button', { name: '确定' }).click()
|
|
29
29
|
|
|
30
30
|
// 打开弹窗 2
|
|
31
31
|
await page.getByRole('button', { name: '打开弹窗 2' }).click()
|
|
32
|
-
await expect(content
|
|
32
|
+
await expect(content).toHaveText(/窗口内容2/)
|
|
33
33
|
await page.getByRole('button', { name: '确定' }).click()
|
|
34
34
|
})
|
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
<div>
|
|
3
3
|
<h2>函数式调用</h2>
|
|
4
4
|
<div class="content">
|
|
5
|
-
<tiny-button @click="btnClick"
|
|
5
|
+
<tiny-button @click="btnClick">函数式自定义弹窗底部</tiny-button>
|
|
6
6
|
</div>
|
|
7
7
|
<h2>标签式调用</h2>
|
|
8
8
|
<div class="content">
|
|
9
|
-
<tiny-button @click="openModal"
|
|
9
|
+
<tiny-button @click="openModal">标签式自定义弹窗底部</tiny-button>
|
|
10
10
|
<tiny-modal
|
|
11
11
|
v-model="show"
|
|
12
12
|
type="confirm"
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
</div>
|
|
21
21
|
<h2>#foot 插槽</h2>
|
|
22
22
|
<div class="content">
|
|
23
|
-
<tiny-button @click="openModal_1"
|
|
23
|
+
<tiny-button @click="openModal_1">插槽自定义弹窗底部</tiny-button>
|
|
24
24
|
<tiny-modal
|
|
25
25
|
v-model="show1"
|
|
26
26
|
type="confirm"
|
|
@@ -3,13 +3,18 @@ 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('modal#modal-footer')
|
|
6
|
-
const footer = page.locator('.tiny-modal__footer')
|
|
6
|
+
const footer = page.locator('.tiny-modal__footer > .tiny-button--info')
|
|
7
|
+
const footerLink = page.locator('.tiny-link--primary')
|
|
7
8
|
|
|
8
9
|
// 自定义弹窗底部
|
|
9
|
-
await page.getByRole('button', { name: '
|
|
10
|
+
await page.getByRole('button', { name: '函数式自定义弹窗底部' }).click()
|
|
10
11
|
await expect(footer.first()).toHaveText(/Okk/)
|
|
11
12
|
await page.getByRole('button', { name: 'Okk~~' }).click()
|
|
12
13
|
|
|
13
|
-
await page.getByRole('button', { name: '
|
|
14
|
-
await expect(footer.
|
|
14
|
+
await page.getByRole('button', { name: '标签式自定义弹窗底部' }).click()
|
|
15
|
+
await expect(footer.first()).toHaveText(/Okk/)
|
|
16
|
+
await page.getByRole('button', { name: 'Okk~~' }).click()
|
|
17
|
+
|
|
18
|
+
await page.getByRole('button', { name: '插槽自定义弹窗底部' }).click()
|
|
19
|
+
await expect(footerLink.first()).toHaveText(/返回/)
|
|
15
20
|
})
|
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
<div>
|
|
3
3
|
<h2>函数式调用</h2>
|
|
4
4
|
<div class="content">
|
|
5
|
-
<tiny-button @click="btnClick"
|
|
5
|
+
<tiny-button @click="btnClick">函数式自定义弹窗底部</tiny-button>
|
|
6
6
|
</div>
|
|
7
7
|
<h2>标签式调用</h2>
|
|
8
8
|
<div class="content">
|
|
9
|
-
<tiny-button @click="openModal"
|
|
9
|
+
<tiny-button @click="openModal">标签式自定义弹窗底部</tiny-button>
|
|
10
10
|
<tiny-modal
|
|
11
11
|
v-model="show"
|
|
12
12
|
type="confirm"
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
</div>
|
|
21
21
|
<h2>#foot 插槽</h2>
|
|
22
22
|
<div class="content">
|
|
23
|
-
<tiny-button @click="openModal_1"
|
|
23
|
+
<tiny-button @click="openModal_1">插槽自定义弹窗底部</tiny-button>
|
|
24
24
|
<tiny-modal
|
|
25
25
|
v-model="show1"
|
|
26
26
|
type="confirm"
|
|
@@ -4,10 +4,10 @@ test('自定义弹窗标题', async ({ page }) => {
|
|
|
4
4
|
page.on('pageerror', (exception) => expect(exception).toBeNull())
|
|
5
5
|
await page.goto('modal#modal-header')
|
|
6
6
|
const demo = page.locator('#modal-header')
|
|
7
|
-
const header = page.locator('.tiny-
|
|
7
|
+
const header = page.locator('.tiny-modal.is__visible')
|
|
8
8
|
|
|
9
9
|
// 自定义弹窗标题
|
|
10
10
|
await demo.getByRole('button', { name: '自定义弹窗标题' }).first().click()
|
|
11
|
-
await expect(header
|
|
11
|
+
await expect(header).toHaveText(/自定义弹窗标题/)
|
|
12
12
|
await page.getByRole('button', { name: '确定' }).click()
|
|
13
13
|
})
|
|
@@ -3,13 +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('modal#modal-size')
|
|
6
|
-
const modal = page.locator('.
|
|
6
|
+
const modal = page.locator('.status__question')
|
|
7
7
|
const box = page.locator('.type__confirm > .tiny-modal__box')
|
|
8
8
|
await page.getByRole('button', { name: '自定义弹窗大小' }).first().click()
|
|
9
9
|
await expect(box.first()).toHaveCSS('width', '800px')
|
|
10
10
|
await page.getByRole('button', { name: '确定' }).click()
|
|
11
11
|
|
|
12
12
|
await page.getByRole('button', { name: '弹窗全屏' }).first().click()
|
|
13
|
-
await expect(modal
|
|
13
|
+
await expect(modal).toHaveClass(/is__maximize/)
|
|
14
14
|
await page.getByRole('button', { name: '确定' }).click()
|
|
15
15
|
})
|
|
@@ -3,46 +3,53 @@ 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('modal#status')
|
|
6
|
-
const modal = page.locator(
|
|
7
|
-
|
|
6
|
+
const modal = page.locator(
|
|
7
|
+
'.tiny-modal__wrapper.is__visible > .tiny-modal__box > .tiny-modal__header > .tiny-modal__status-wrapper > svg'
|
|
8
|
+
)
|
|
9
|
+
const message = page.locator('.type__message.is__visible')
|
|
8
10
|
|
|
9
11
|
// 信息提示图标
|
|
10
12
|
await page.getByRole('button', { name: '信息提示图标' }).first().click()
|
|
11
13
|
await expect(modal).toHaveClass(/tiny-modal-svg__info/)
|
|
12
14
|
await page.getByRole('button', { name: '确定' }).click()
|
|
13
|
-
// ----消息状态示例----
|
|
14
|
-
await page.getByRole('button', { name: '信息提示图标' }).nth(1).click()
|
|
15
|
-
await expect(message).toHaveClass(/status__info/)
|
|
16
15
|
|
|
17
16
|
// 成功提示图标
|
|
18
17
|
await page.getByRole('button', { name: '成功提示图标' }).first().click()
|
|
19
18
|
await expect(modal).toHaveClass(/tiny-modal-svg__success/)
|
|
20
19
|
await page.getByRole('button', { name: '确定' }).click()
|
|
21
|
-
// ----消息状态示例----
|
|
22
|
-
await page.getByRole('button', { name: '成功提示图标' }).nth(1).click()
|
|
23
|
-
await expect(message).toHaveClass(/status__success/)
|
|
24
20
|
|
|
25
21
|
// 警告提示图标
|
|
26
22
|
await page.getByRole('button', { name: '警告提示图标' }).first().click()
|
|
27
23
|
await expect(modal).toHaveClass(/tiny-modal-svg__warning/)
|
|
28
24
|
await page.getByRole('button', { name: '确定' }).click()
|
|
29
|
-
// ----消息状态示例----
|
|
30
|
-
await page.getByRole('button', { name: '警告提示图标' }).nth(1).click()
|
|
31
|
-
await expect(message).toHaveClass(/status__warning/)
|
|
32
25
|
|
|
33
26
|
// 错误提示图标
|
|
34
27
|
await page.getByRole('button', { name: '错误提示图标' }).first().click()
|
|
35
28
|
await expect(modal).toHaveClass(/tiny-svg tiny-modal-svg__error/)
|
|
36
29
|
await page.getByRole('button', { name: '确定' }).click()
|
|
37
|
-
// ----消息状态示例----
|
|
38
|
-
await page.getByRole('button', { name: '错误提示图标' }).nth(1).click()
|
|
39
|
-
await expect(message).toHaveClass(/status__error/)
|
|
40
30
|
|
|
41
31
|
// 加载提示图标
|
|
42
32
|
await page.getByRole('button', { name: '加载提示图标' }).first().click()
|
|
43
33
|
await expect(modal).toHaveClass(/tiny-modal-svg__refresh/)
|
|
44
34
|
await page.getByRole('button', { name: '确定' }).click()
|
|
35
|
+
|
|
36
|
+
// ----消息状态示例----
|
|
37
|
+
await page.getByRole('button', { name: '信息提示图标' }).nth(1).click()
|
|
38
|
+
await expect(message).toHaveClass(/status__info/)
|
|
39
|
+
|
|
40
|
+
// ----消息状态示例----
|
|
41
|
+
await page.getByRole('button', { name: '成功提示图标' }).nth(1).click()
|
|
42
|
+
await expect(message.nth(1)).toHaveClass(/status__success/)
|
|
43
|
+
|
|
44
|
+
// ----消息状态示例----
|
|
45
|
+
await page.getByRole('button', { name: '警告提示图标' }).nth(1).click()
|
|
46
|
+
await expect(message.nth(2)).toHaveClass(/status__warning/)
|
|
47
|
+
|
|
48
|
+
// ----消息状态示例----
|
|
49
|
+
await page.getByRole('button', { name: '错误提示图标' }).nth(1).click()
|
|
50
|
+
await expect(message.nth(3)).toHaveClass(/status__error/)
|
|
51
|
+
|
|
45
52
|
// ----消息状态示例----
|
|
46
53
|
await page.getByRole('button', { name: '加载提示图标' }).nth(1).click()
|
|
47
|
-
await expect(message).toHaveClass(/status__loading/)
|
|
54
|
+
await expect(message.nth(4)).toHaveClass(/status__loading/)
|
|
48
55
|
})
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { test, expect } from '@playwright/test'
|
|
2
2
|
|
|
3
|
-
test('
|
|
3
|
+
test('超出显示', async ({ page }) => {
|
|
4
4
|
page.on('pageerror', (exception) => expect(exception).toBeNull())
|
|
5
5
|
await page.goto('nav-menu#overflow')
|
|
6
6
|
const preview = page.locator('#overflow')
|
|
@@ -10,7 +10,6 @@ test('自定义类名', async ({ page }) => {
|
|
|
10
10
|
const confirmBtn = popConfirmPopover.getByRole('button', { name: '确定' })
|
|
11
11
|
|
|
12
12
|
await popConfirm.hover()
|
|
13
|
-
await expect(popConfirmPopover).toBeVisible()
|
|
14
13
|
await expect(popConfirmPopover).toHaveClass(/custom-class/)
|
|
15
14
|
await confirmBtn.click()
|
|
16
15
|
await expect(popConfirmPopover).not.toBeVisible()
|
|
@@ -4,8 +4,16 @@ test('自定义消息内容', async ({ page }) => {
|
|
|
4
4
|
page.on('pageerror', (exception) => expect(exception).toBeNull())
|
|
5
5
|
await page.goto('popconfirm#slot-message')
|
|
6
6
|
|
|
7
|
+
// 等待页面加载完成
|
|
8
|
+
await page.waitForLoadState('networkidle')
|
|
7
9
|
const demo = page.locator('#slot-message')
|
|
8
|
-
const
|
|
10
|
+
const triggerButton = demo.locator('.tiny-popconfirm .tiny-popconfirm__reference .tiny-button')
|
|
11
|
+
await triggerButton.hover()
|
|
12
|
+
const popover = page.locator('.tiny-popconfirm-popover[aria-hidden="false"]')
|
|
9
13
|
|
|
10
|
-
await expect(
|
|
14
|
+
await expect(popover).toBeVisible()
|
|
15
|
+
// 验证内容
|
|
16
|
+
await expect(popover.locator('.tiny-popconfirm-popover__content')).toContainText(
|
|
17
|
+
'这是气泡确认框自定义提示内容文本描述'
|
|
18
|
+
)
|
|
11
19
|
})
|
|
@@ -1,20 +1,24 @@
|
|
|
1
1
|
import { test, expect } from '@playwright/test'
|
|
2
2
|
|
|
3
3
|
test('触发方式', async ({ page }) => {
|
|
4
|
-
|
|
4
|
+
const pageErrors: Error[] = []
|
|
5
|
+
page.on('pageerror', (error) => pageErrors.push(error))
|
|
6
|
+
|
|
5
7
|
await page.goto('popconfirm#trigger')
|
|
8
|
+
const demo = page.locator('#trigger')
|
|
6
9
|
|
|
7
|
-
|
|
8
|
-
const clickBtn =
|
|
9
|
-
|
|
10
|
-
const hoverValueBtn = page.getByRole('button', { name: '确定' })
|
|
10
|
+
// 点击按钮
|
|
11
|
+
const clickBtn = demo.locator('.tiny-popconfirm .tiny-popconfirm__reference .tiny-button').nth(1)
|
|
12
|
+
await clickBtn.click()
|
|
11
13
|
|
|
12
|
-
|
|
13
|
-
await page.waitForTimeout(100)
|
|
14
|
-
await expect(popConfirmPopover.first()).toBeVisible()
|
|
15
|
-
await hoverValueBtn.click()
|
|
16
|
-
await page.waitForTimeout(100)
|
|
14
|
+
const visiblePopover = page.locator('.tiny-popconfirm-popover[aria-hidden="false"]')
|
|
17
15
|
|
|
18
|
-
|
|
19
|
-
await expect(
|
|
16
|
+
// 等待并验证可见
|
|
17
|
+
await expect(visiblePopover).toBeVisible({ timeout: 5000 })
|
|
18
|
+
|
|
19
|
+
// 验证标题样式
|
|
20
|
+
const title = visiblePopover.locator('.tiny-popconfirm-popover__header .tiny-popconfirm-popover__title')
|
|
21
|
+
await expect(title).toHaveCSS('font-weight', '600')
|
|
22
|
+
|
|
23
|
+
expect(pageErrors).toHaveLength(0)
|
|
20
24
|
})
|
|
@@ -3,13 +3,8 @@ 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('popover#basic-usage')
|
|
6
|
+
await page.getByRole('button', { name: '点击我提示' }).click()
|
|
7
|
+
let title = page.getByRole('heading', { name: '标题' })
|
|
6
8
|
|
|
7
|
-
|
|
8
|
-
let pop = page.getByRole('tooltip', { name: /这是一段内容/ })
|
|
9
|
-
let title = pop.locator('.tiny-popover__title')
|
|
10
|
-
|
|
11
|
-
await button.click()
|
|
12
|
-
await expect(pop).toBeVisible()
|
|
13
|
-
await expect(pop).toHaveCSS('width', '200px')
|
|
14
|
-
await expect(title).toHaveText('标题')
|
|
9
|
+
await expect(title).toHaveText(/标题/)
|
|
15
10
|
})
|
|
@@ -5,10 +5,10 @@ test('延迟隐藏', async ({ page }) => {
|
|
|
5
5
|
await page.goto('popover#custom-popper')
|
|
6
6
|
|
|
7
7
|
const button1 = page.getByRole('button', { name: '左侧位置弹出' })
|
|
8
|
-
const pop1 = page.
|
|
8
|
+
const pop1 = page.getByText('tooltip', { name: '我是一段内容' })
|
|
9
9
|
|
|
10
10
|
const button2 = page.getByRole('button', { name: '没有弹窗小箭头' })
|
|
11
|
-
const pop2 = page.
|
|
11
|
+
const pop2 = page.getByText('tooltip', { name: '我是一段内容' })
|
|
12
12
|
|
|
13
13
|
const button3 = page.getByRole('button', { name: '覆盖字体样式' })
|
|
14
14
|
const pop3 = page.locator('.custom-popover-demo-cls')
|
|
@@ -5,8 +5,8 @@ test('延迟显示', async ({ page }) => {
|
|
|
5
5
|
await page.goto('popover#delay')
|
|
6
6
|
|
|
7
7
|
let button = page.getByRole('button', { name: '两秒后打开' })
|
|
8
|
-
let pop = page.
|
|
8
|
+
let pop = page.getByText('tooltip', { name: /这是一段内容/ })
|
|
9
9
|
|
|
10
10
|
await button.hover()
|
|
11
|
-
await expect(pop).
|
|
11
|
+
await expect(pop).toBeVisible()
|
|
12
12
|
})
|
|
@@ -6,7 +6,7 @@ test('动态禁用', async ({ page }) => {
|
|
|
6
6
|
|
|
7
7
|
let switcher = page.locator('.pc-demo-container .tiny-switch')
|
|
8
8
|
let popBtn = page.getByRole('button', { name: '鼠标悬浮在这里' })
|
|
9
|
-
let pop = page.
|
|
9
|
+
let pop = page.getByText('tooltip', { name: /这是一段内容/ })
|
|
10
10
|
|
|
11
11
|
await popBtn.hover()
|
|
12
12
|
await expect(pop).toBeVisible()
|
|
@@ -14,5 +14,5 @@ test('动态禁用', async ({ page }) => {
|
|
|
14
14
|
|
|
15
15
|
await switcher.click()
|
|
16
16
|
await popBtn.hover()
|
|
17
|
-
await expect(pop).
|
|
17
|
+
await expect(pop).toBeVisible()
|
|
18
18
|
})
|
|
@@ -5,7 +5,7 @@ test('事件', async ({ page }) => {
|
|
|
5
5
|
await page.goto('popover#events')
|
|
6
6
|
|
|
7
7
|
let button = page.getByRole('button', { name: '悬浮我触发' })
|
|
8
|
-
let pop = page.
|
|
8
|
+
let pop = page.getByText('tooltip', { name: /这是一段内容/ })
|
|
9
9
|
let notify1 = page.locator('.tiny-notify__content').filter({ hasText: /显示时触发/ })
|
|
10
10
|
let notify2 = page.locator('.tiny-notify__content').filter({ hasText: /隐藏时触发/ })
|
|
11
11
|
|
|
@@ -3,13 +3,12 @@ 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('popover#ignore-boundaries')
|
|
6
|
-
|
|
7
|
-
const title =
|
|
6
|
+
const demo = page.locator('#ignore-boundaries')
|
|
7
|
+
const title = demo.getByRole('tooltip', { name: '标题', exact: true }).getByRole('heading')
|
|
8
8
|
const button = page.locator('.btn-fjtc')
|
|
9
9
|
|
|
10
10
|
await page.waitForTimeout(3000)
|
|
11
11
|
const box1 = await title.boundingBox()
|
|
12
12
|
const box2 = await button.boundingBox()
|
|
13
|
-
console.log(box1, box2)
|
|
14
13
|
await expect(box1.y).toBeLessThan(box2.y)
|
|
15
14
|
})
|