@opentiny/vue-docs 2.2.4 → 2.2.6
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/mobile/app/container/basic-usage.vue +105 -0
- package/demos/mobile/app/container/custom-width.vue +93 -0
- package/demos/mobile/app/container/webdoc/container.cn.md +7 -0
- package/demos/mobile/app/container/webdoc/container.en.md +7 -0
- package/demos/mobile/app/container/webdoc/container.js +80 -0
- package/demos/mobile/app/pull-refresh/animation-duration.vue +58 -12
- package/demos/mobile/app/pull-refresh/base.vue +32 -18
- package/demos/mobile/app/pull-refresh/disabled-pull-down.vue +66 -0
- package/demos/mobile/app/pull-refresh/disabled-pull-up.vue +67 -0
- package/demos/mobile/app/pull-refresh/{hasmore.vue → event.vue} +21 -20
- package/demos/mobile/app/pull-refresh/{enhance.vue → has-more.vue} +20 -25
- package/demos/mobile/app/pull-refresh/loosing-text.vue +55 -12
- package/demos/mobile/app/pull-refresh/pull-refresh-slot.vue +64 -15
- package/demos/mobile/app/pull-refresh/pull-up-distance.vue +74 -0
- package/demos/mobile/app/pull-refresh/pulling-text.vue +56 -12
- package/demos/mobile/app/pull-refresh/webdoc/pull-refresh.js +98 -120
- package/demos/mobile/app/tabs/before-leave.vue +3 -3
- package/demos/mobile/app/tabs/tabs-events.vue +7 -7
- package/demos/mobile/menus.js +4 -1
- package/demos/mobile-first/app/tabs/basic-usage.vue +3 -3
- package/demos/mobile-first/app/tabs/before-leave.vue +3 -3
- package/demos/mobile-first/app/tabs/change-title.vue +2 -2
- package/demos/mobile-first/app/tabs/custom-tab-content.vue +3 -3
- package/demos/mobile-first/app/tabs/custom-tab-title.vue +3 -3
- package/demos/mobile-first/app/tabs/position-bottom.vue +10 -10
- package/demos/mobile-first/app/tabs/position-left.vue +10 -10
- package/demos/mobile-first/app/tabs/position-right.vue +10 -10
- package/demos/mobile-first/app/tabs/position.vue +10 -10
- package/demos/mobile-first/app/tabs/prevent-tab-switching.vue +3 -3
- package/demos/mobile-first/app/tabs/stretch-wh.vue +3 -3
- package/demos/mobile-first/app/tabs/tab-style-bordercard.vue +10 -10
- package/demos/mobile-first/app/tabs/tab-style-card.vue +10 -10
- package/demos/mobile-first/app/tabs/tabdata-title.vue +4 -4
- package/demos/mobile-first/app/tabs/tabs-draggable.vue +1 -1
- package/demos/mobile-first/app/tabs/tabs-events-add.vue +3 -3
- package/demos/mobile-first/app/tabs/tabs-events-click.vue +3 -3
- package/demos/mobile-first/app/tabs/tabs-events-close.vue +4 -4
- package/demos/mobile-first/app/tabs/tabs-events-edit.vue +4 -4
- package/demos/mobile-first/app/tabs/tabs-separator.vue +8 -8
- package/demos/mobile-first/app/tabs/tabs-size.vue +3 -3
- package/demos/mobile-first/app/tabs/tabs-tabs.vue +2 -2
- package/demos/mobile-first/app/tabs/with-add.vue +1 -1
- package/demos/pc/app/action-menu/disabled.vue +2 -1
- package/demos/pc/app/action-menu/icon-composition-api.vue +73 -0
- package/demos/pc/app/action-menu/icon.vue +79 -0
- package/demos/pc/app/action-menu/popper-class.spec.ts +2 -1
- package/demos/pc/app/action-menu/webdoc/action-menu.js +42 -1
- package/demos/pc/app/autocomplete/webdoc/autocomplete.js +30 -16
- package/demos/pc/app/breadcrumb/webdoc/breadcrumb.js +3 -3
- package/demos/pc/app/button/basic-usage-composition-api.vue +2 -0
- package/demos/pc/app/button/basic-usage.vue +2 -0
- package/demos/pc/app/button/click-composition-api.vue +1 -1
- package/demos/pc/app/button/click.vue +1 -1
- package/demos/pc/app/button/dynamic-disabled-composition-api.vue +10 -1
- package/demos/pc/app/button/{dynamic-disabled.spec.js → dynamic-disabled.spec.ts} +4 -0
- package/demos/pc/app/button/dynamic-disabled.vue +12 -3
- package/demos/pc/app/button/ghost-composition-api.vue +26 -0
- package/demos/pc/app/button/ghost.spec.ts +69 -0
- package/demos/pc/app/button/ghost.vue +32 -0
- package/demos/pc/app/button/icon-composition-api.vue +2 -0
- package/demos/pc/app/button/icon.vue +2 -0
- package/demos/pc/app/button/loading-composition-api.vue +2 -0
- package/demos/pc/app/button/loading.vue +2 -0
- package/demos/pc/app/button/size-composition-api.vue +2 -0
- package/demos/pc/app/button/size.vue +2 -0
- package/demos/pc/app/button/text-composition-api.vue +1 -1
- package/demos/pc/app/button/text.vue +1 -1
- package/demos/pc/app/button/webdoc/button.js +28 -1
- package/demos/pc/app/button-group/button-group-multiple-composition-api.vue +9 -9
- package/demos/pc/app/button-group/button-group-multiple.vue +9 -9
- package/demos/pc/app/button-group/change-event-composition-api.vue +1 -1
- package/demos/pc/app/button-group/change-event.vue +1 -1
- package/demos/pc/app/button-group/show-edit-composition-api.vue +1 -1
- package/demos/pc/app/button-group/show-edit.vue +1 -1
- package/demos/pc/app/button-group/webdoc/button-group.js +2 -3
- package/demos/pc/app/carousel/webdoc/carousel.js +82 -49
- package/demos/pc/app/cascader/auto-load-checkStrictly-composition-api.vue +2 -1
- package/demos/pc/app/cascader/auto-load-checkStrictly.vue +2 -1
- package/demos/pc/app/cascader/auto-load-composition-api.vue +3 -1
- package/demos/pc/app/cascader/auto-load.vue +2 -1
- package/demos/pc/app/cascader/events-composition-api.vue +1 -1
- package/demos/pc/app/cascader/expand-trigger-composition-api.vue +195 -2
- package/demos/pc/app/cascader/show-all-levels-composition-api.vue +197 -2
- package/demos/pc/app/cascader/webdoc/cascader.js +27 -13
- package/demos/pc/app/cascader-panel/basic-usage-composition-api.vue +3 -1
- package/demos/pc/app/cascader-panel/basic-usage.vue +2 -1
- package/demos/pc/app/cascader-panel/cascader-panel-props-composition-api.vue +3 -1
- package/demos/pc/app/cascader-panel/cascader-panel-props.vue +3 -1
- package/demos/pc/app/cascader-panel/change-composition-api.vue +1 -2
- package/demos/pc/app/cascader-panel/change.vue +1 -1
- package/demos/pc/app/cascader-panel/webdoc/cascader-panel.js +5 -5
- package/demos/pc/app/color-picker/webdoc/color-picker.js +36 -18
- package/demos/pc/app/color-select-panel/webdoc/color-select-panel.js +32 -19
- package/demos/pc/app/config-provider/basic.spec.ts +9 -0
- package/demos/pc/app/config-provider/tag.spec.ts +12 -0
- package/demos/pc/app/config-provider/text-direct.spec.ts +11 -0
- package/demos/pc/app/config-provider/webdoc/config-provider.en.md +7 -0
- package/demos/pc/app/config-provider/webdoc/config-provider.js +27 -12
- package/demos/pc/app/container/basic-usage.spec.js +47 -2
- package/demos/pc/app/container/custom-with-height.spec.js +10 -2
- package/demos/pc/app/crop/webdoc/crop.js +53 -49
- package/demos/pc/app/dialog-box/webdoc/dialog-box.js +82 -83
- package/demos/pc/app/divider/webdoc/divider.js +25 -21
- package/demos/pc/app/dropdown/events-composition-api.vue +1 -1
- package/demos/pc/app/dropdown/events.spec.ts +1 -0
- package/demos/pc/app/dropdown/multi-level-composition-api.vue +4 -8
- package/demos/pc/app/dropdown/multi-level.spec.ts +16 -9
- package/demos/pc/app/dropdown/multi-level.vue +3 -7
- package/demos/pc/app/dropdown/show-icon-composition-api.vue +44 -21
- package/demos/pc/app/dropdown/show-icon.vue +42 -12
- package/demos/pc/app/dropdown/webdoc/dropdown.js +29 -8
- package/demos/pc/app/fall-menu/custom-menuitem.spec.ts +6 -9
- package/demos/pc/app/fall-menu/custom-slider-icon.spec.ts +10 -21
- package/demos/pc/app/fall-menu/data-resource.spec.ts +6 -9
- package/demos/pc/app/file-upload/abort-quest.spec.ts +6 -5
- package/demos/pc/app/file-upload/accept-file-image.spec.ts +9 -4
- package/demos/pc/app/file-upload/custom-trigger.spec.ts +1 -1
- package/demos/pc/app/file-upload/disabled.spec.ts +4 -5
- package/demos/pc/app/file-upload/drag-upload.spec.ts +1 -1
- package/demos/pc/app/file-upload/file-picture-card.spec.ts +7 -6
- package/demos/pc/app/file-upload/form-validation.spec.ts +2 -2
- package/demos/pc/app/file-upload/image-size.spec.ts +2 -2
- package/demos/pc/app/file-upload/max-file-count.spec.ts +6 -6
- package/demos/pc/app/file-upload/paste-upload-composition-api.vue +2 -2
- package/demos/pc/app/file-upload/paste-upload.spec.ts +19 -2
- package/demos/pc/app/file-upload/picture-card.spec.ts +6 -5
- package/demos/pc/app/file-upload/picture-list.spec.ts +2 -3
- package/demos/pc/app/file-upload/prevent-delete-file.spec.ts +1 -1
- package/demos/pc/app/file-upload/prevent-upload-file.spec.ts +1 -1
- package/demos/pc/app/file-upload/upload-events.spec.ts +6 -4
- package/demos/pc/app/file-upload/upload-file-list-slot.spec.ts +18 -0
- package/demos/pc/app/file-upload/upload-file-list-thumb-composition-api.vue +4 -3
- package/demos/pc/app/file-upload/upload-file-list-thumb.spec.ts +2 -2
- package/demos/pc/app/file-upload/upload-file-list-thumb.vue +4 -3
- package/demos/pc/app/file-upload/upload-file-list.spec.ts +9 -9
- package/demos/pc/app/file-upload/upload-limit.spec.ts +5 -8
- package/demos/pc/app/file-upload/upload-request.spec.ts +1 -1
- package/demos/pc/app/file-upload/upload-user-head.spec.ts +1 -1
- package/demos/pc/app/file-upload/webdoc/file-upload.js +4 -4
- package/demos/pc/app/file-upload//346/265/213/350/257/225.txt +1 -0
- package/demos/pc/app/form/custom-validation-rule-composition-api.vue +2 -14
- package/demos/pc/app/form/custom-validation-rule.vue +2 -8
- package/demos/pc/app/form/form-validate-field.vue +2 -2
- package/demos/pc/app/form/size.spec.ts +26 -6
- package/demos/pc/app/grid/custom-style/body-style-composition-api.vue +1 -1
- package/demos/pc/app/grid/custom-style/footer-style-composition-api.vue +64 -19
- package/demos/pc/app/grid/drag/row-drag-ctrl-composition-api.vue +4 -4
- package/demos/pc/app/grid/edit/trigger-mode-hm-editing-composition-api.vue +2 -2
- package/demos/pc/app/grid/edit/trigger-mode-hm-editing.vue +1 -1
- package/demos/pc/app/grid/event/cell-mouse-event-composition-api.vue +1 -1
- package/demos/pc/app/grid/event/context-menu-event-composition-api.vue +1 -0
- package/demos/pc/app/grid/event/edit-event-composition-api.vue +1 -1
- package/demos/pc/app/grid/expand/set-row-expansion-composition-api.vue +9 -4
- package/demos/pc/app/grid/loading/{grid-loading-off-tip-composition-api.vue → grid-custom-loading-composition-api.vue} +29 -4
- package/demos/pc/app/grid/loading/grid-custom-loading.spec.js +7 -0
- package/demos/pc/app/grid/loading/{grid-loading-off-tip.vue → grid-custom-loading.vue} +27 -1
- package/demos/pc/app/grid/operation-column/clear-and-set-radio-row-composition-api.vue +5 -1
- package/demos/pc/app/grid/operation-column/selection-operation-composition-api.vue +32 -0
- package/demos/pc/app/grid/size/grid-size-composition-api.vue +17 -0
- package/demos/pc/app/grid/slot/editor-slot-composition-api.vue +13 -7
- package/demos/pc/app/grid/sort/combinations-sort-composition-api.vue +3 -3
- package/demos/pc/app/grid/sort/combinations-sort.spec.js +3 -0
- package/demos/pc/app/grid/sort/combinations-sort.vue +3 -3
- package/demos/pc/app/grid/toolbar/insert-remove-rows-composition-api.vue +1 -1
- package/demos/pc/app/grid/toolbar/insert-remove-rows.vue +1 -1
- package/demos/pc/app/grid/toolbar/refresh-grid-composition-api.vue +105 -0
- package/demos/pc/app/grid/tree-table/set-tree-expansion-composition-api.vue +4 -4
- package/demos/pc/app/grid/validation/before-submit-validation-composition-api.vue +19 -2
- package/demos/pc/app/grid/validation/before-submit-validation.spec.js +5 -2
- package/demos/pc/app/grid/validation/before-submit-validation.vue +19 -2
- package/demos/pc/app/grid/webdoc/grid-loading.js +9 -5
- package/demos/pc/app/grid/webdoc/grid-size.js +2 -2
- package/demos/pc/app/grid/webdoc/grid-validation.js +1 -1
- package/demos/pc/app/grid/webdoc/grid.js +8 -1
- package/demos/pc/app/guide/callback-composition-api.vue +2 -2
- package/demos/pc/app/guide/callback.vue +2 -2
- package/demos/pc/app/guide/highlight-box-composition-api.vue +9 -8
- package/demos/pc/app/guide/highlight-box.vue +8 -2
- package/demos/pc/app/guide/offset-composition-api.vue +7 -2
- package/demos/pc/app/guide/offset.vue +7 -2
- package/demos/pc/app/guide/size-composition-api.vue +3 -8
- package/demos/pc/app/guide/size.vue +3 -8
- package/demos/pc/app/guide/webdoc/guide.js +2 -2
- package/demos/pc/app/image/basic-usage.spec.ts +9 -2
- package/demos/pc/app/image/events.spec.ts +3 -1
- package/demos/pc/app/image/lazy-composition-api.vue +2 -2
- package/demos/pc/app/image/lazy.spec.ts +7 -4
- package/demos/pc/app/image/lazy.vue +2 -2
- package/demos/pc/app/image/preview-in-dialog.spec.ts +15 -1
- package/demos/pc/app/image/preview.spec.ts +28 -13
- package/demos/pc/app/image/slot.spec.ts +3 -0
- package/demos/pc/app/input/webdoc/input.js +11 -11
- package/demos/pc/app/link/basic-usage-composition-api.vue +1 -1
- package/demos/pc/app/link/basic-usage.spec.ts +1 -1
- package/demos/pc/app/link/basic-usage.vue +1 -1
- package/demos/pc/app/link/config-href.spec.ts +2 -2
- package/demos/pc/app/link/custom-icon.spec.ts +5 -5
- package/demos/pc/app/link/dynamic-disable.spec.ts +11 -11
- package/demos/pc/app/link/focus-no-underline.spec.ts +3 -3
- package/demos/pc/app/link/link-style-composition-api.vue +6 -6
- package/demos/pc/app/link/link-style.spec.ts +36 -7
- package/demos/pc/app/link/link-style.vue +6 -6
- package/demos/pc/app/link/webdoc/link.js +20 -22
- package/demos/pc/app/link-menu/webdoc/link-menu.js +22 -22
- package/demos/pc/app/milestone/basic-usage-composition-api.vue +6 -6
- package/demos/pc/app/milestone/basic-usage.spec.ts +1 -1
- package/demos/pc/app/milestone/basic-usage.vue +6 -6
- package/demos/pc/app/milestone/line-style-composition-api.vue +6 -6
- package/demos/pc/app/milestone/line-style.vue +6 -6
- package/demos/pc/app/milestone/show-number-composition-api.vue +9 -7
- package/demos/pc/app/milestone/show-number.spec.ts +7 -7
- package/demos/pc/app/milestone/show-number.vue +9 -7
- package/demos/pc/app/milestone/solid-style-composition-api.vue +7 -7
- package/demos/pc/app/milestone/solid-style.spec.ts +7 -7
- package/demos/pc/app/milestone/solid-style.vue +7 -7
- package/demos/pc/app/milestone/webdoc/milestone.js +31 -12
- package/demos/pc/app/modal/webdoc/modal.js +80 -76
- package/demos/pc/app/nav-menu/basic-usage.spec.ts +2 -2
- package/demos/pc/app/nav-menu/before-skip-prevent.spec.ts +1 -1
- package/demos/pc/app/nav-menu/before-skip.spec.ts +1 -1
- package/demos/pc/app/nav-menu/custom-service.spec.ts +1 -2
- package/demos/pc/app/nav-menu/overflow.spec.ts +2 -2
- package/demos/pc/app/nav-menu/slot-logo.spec.ts +1 -1
- package/demos/pc/app/nav-menu/slot-toolbar.spec.ts +2 -2
- package/demos/pc/app/numeric/webdoc/numeric.js +33 -32
- package/demos/pc/app/search/basic-usage.spec.ts +1 -1
- package/demos/pc/app/search/clearable.spec.ts +1 -1
- package/demos/pc/app/search/events-composition-api.vue +6 -0
- package/demos/pc/app/search/events.spec.ts +9 -6
- package/demos/pc/app/search/events.vue +5 -0
- package/demos/pc/app/search/webdoc/search.js +14 -4
- package/demos/pc/app/slide-bar/webdoc/slide-bar.js +18 -12
- package/demos/pc/app/slider/webdoc/slider.js +23 -18
- package/demos/pc/app/steps/advanced-steps.spec.ts +3 -2
- package/demos/pc/app/steps/click-composition-api.vue +0 -1
- package/demos/pc/app/steps/click.spec.ts +1 -12
- package/demos/pc/app/steps/custom-steps-item.spec.ts +1 -1
- package/demos/pc/app/steps/node-status-composition-api.vue +1 -1
- package/demos/pc/app/steps/node-status.spec.ts +1 -1
- package/demos/pc/app/steps/node-status.vue +1 -1
- package/demos/pc/app/steps/normal-steps-composition-api.vue +1 -1
- package/demos/pc/app/steps/normal-steps.spec.ts +2 -2
- package/demos/pc/app/steps/normal-steps.vue +1 -1
- package/demos/pc/app/steps/only-number-composition-api.vue +1 -1
- package/demos/pc/app/steps/only-number.spec.ts +1 -1
- package/demos/pc/app/steps/only-number.vue +1 -1
- package/demos/pc/app/steps/show-divider-composition-api.vue +1 -1
- package/demos/pc/app/steps/show-divider.spec.ts +1 -1
- package/demos/pc/app/steps/show-divider.vue +1 -1
- package/demos/pc/app/steps/size-composition-api.vue +6 -9
- package/demos/pc/app/steps/size.spec.ts +1 -4
- package/demos/pc/app/steps/size.vue +4 -4
- package/demos/pc/app/steps/slot-active-node-desc-composition-api.vue +3 -1
- package/demos/pc/app/steps/slot-active-node-desc.spec.ts +1 -1
- package/demos/pc/app/steps/slot-active-node-desc.vue +3 -1
- package/demos/pc/app/steps/slot-description-composition-api.vue +6 -6
- package/demos/pc/app/steps/slot-description.spec.ts +1 -1
- package/demos/pc/app/steps/slot-description.vue +5 -5
- package/demos/pc/app/steps/slot-item-composition-api.vue +0 -1
- package/demos/pc/app/steps/slot-item.spec.ts +1 -7
- package/demos/pc/app/steps/slot-item.vue +0 -1
- package/demos/pc/app/steps/space.spec.ts +1 -1
- package/demos/pc/app/steps/text-position-composition-api.vue +1 -1
- package/demos/pc/app/steps/text-position.spec.ts +1 -4
- package/demos/pc/app/steps/text-position.vue +1 -1
- package/demos/pc/app/steps/vertical-steps.spec.ts +13 -19
- package/demos/pc/app/steps/webdoc/steps.js +18 -17
- package/demos/pc/app/tabs/basic-usage-composition-api.vue +4 -4
- package/demos/pc/app/tabs/basic-usage.vue +4 -4
- package/demos/pc/app/tabs/before-leave-composition-api.vue +3 -3
- package/demos/pc/app/tabs/before-leave.vue +3 -3
- package/demos/pc/app/tabs/custom-more-icon-composition-api.vue +1 -1
- package/demos/pc/app/tabs/custom-more-icon.vue +1 -1
- package/demos/pc/app/tabs/custom-tab-content-composition-api.vue +3 -3
- package/demos/pc/app/tabs/custom-tab-content.vue +3 -3
- package/demos/pc/app/tabs/custom-tab-title-composition-api.vue +3 -3
- package/demos/pc/app/tabs/custom-tab-title.vue +3 -3
- package/demos/pc/app/tabs/lazy-composition-api.vue +5 -3
- package/demos/pc/app/tabs/lazy.vue +5 -3
- package/demos/pc/app/tabs/position-composition-api.vue +22 -17
- package/demos/pc/app/tabs/position.spec.ts +4 -4
- package/demos/pc/app/tabs/position.vue +19 -18
- package/demos/pc/app/tabs/prevent-tab-switching-composition-api.vue +3 -3
- package/demos/pc/app/tabs/prevent-tab-switching.vue +3 -3
- package/demos/pc/app/tabs/stretch-wh-composition-api.vue +3 -3
- package/demos/pc/app/tabs/stretch-wh.vue +3 -3
- package/demos/pc/app/tabs/tab-style-bordercard-composition-api.vue +10 -10
- package/demos/pc/app/tabs/tab-style-bordercard.vue +10 -10
- package/demos/pc/app/tabs/tab-style-card-composition-api.vue +1 -1
- package/demos/pc/app/tabs/tab-style-card.vue +1 -1
- package/demos/pc/app/tabs/tabs-draggable-composition-api.vue +1 -1
- package/demos/pc/app/tabs/tabs-draggable.spec.ts +1 -7
- package/demos/pc/app/tabs/tabs-draggable.vue +1 -1
- package/demos/pc/app/tabs/tabs-events-click-composition-api.vue +3 -3
- package/demos/pc/app/tabs/tabs-events-click.vue +3 -3
- package/demos/pc/app/tabs/tabs-events-close-composition-api.vue +4 -4
- package/demos/pc/app/tabs/tabs-events-close.vue +4 -4
- package/demos/pc/app/tabs/tabs-events-edit-composition-api.vue +4 -4
- package/demos/pc/app/tabs/tabs-events-edit.vue +4 -4
- package/demos/pc/app/tabs/tabs-separator-composition-api.vue +7 -7
- package/demos/pc/app/tabs/tabs-separator.vue +7 -7
- package/demos/pc/app/tabs/tabs-size-composition-api.vue +3 -3
- package/demos/pc/app/tabs/tabs-size.vue +3 -3
- package/demos/pc/app/tabs/tooltip-composition-api.vue +17 -13
- package/demos/pc/app/tabs/tooltip.vue +17 -13
- package/demos/pc/app/tabs/webdoc/tabs.js +35 -35
- package/demos/pc/app/tabs/with-add-composition-api.vue +1 -1
- package/demos/pc/app/tabs/with-add.vue +1 -1
- package/demos/pc/app/tag/{before-delete-composition-api.vue → delete-composition-api.vue} +6 -16
- package/demos/pc/app/tag/delete.spec.ts +19 -0
- package/demos/pc/app/tag/{closable.vue → delete.vue} +22 -5
- package/demos/pc/app/tag/webdoc/tag.js +15 -7
- package/demos/pc/app/time-line/webdoc/time-line.js +12 -12
- package/demos/pc/app/toggle-menu/webdoc/toggle-menu.js +64 -55
- package/demos/pc/app/tooltip/content.spec.js +1 -1
- package/demos/pc/app/tooltip/custom-popper.spec.js +4 -4
- package/demos/pc/app/transfer/basic-usage.spec.ts +7 -20
- package/demos/pc/app/transfer/custom-btns.spec.ts +11 -19
- package/demos/pc/app/transfer/custom-filter.spec.ts +6 -4
- package/demos/pc/app/transfer/custom-footer.spec.ts +1 -2
- package/demos/pc/app/transfer/custom-render.spec.ts +7 -5
- package/demos/pc/app/transfer/custom-titles.spec.ts +5 -3
- package/demos/pc/app/transfer/default-checked.spec.ts +5 -9
- package/demos/pc/app/transfer/drop-config.spec.ts +21 -16
- package/demos/pc/app/transfer/manual-clear-query.spec.ts +2 -2
- package/demos/pc/app/transfer/nested-table.spec.ts +12 -35
- package/demos/pc/app/transfer/nested-tree.spec.ts +3 -30
- package/demos/pc/app/transfer/target-order.spec.ts +2 -1
- package/demos/pc/app/transfer/transfer-events.spec.ts +2 -1
- package/demos/pc/app/tree/basic-usage.spec.ts +26 -16
- package/demos/pc/app/tree/check-op.spec.ts +37 -19
- package/demos/pc/app/tree/checkbox.spec.ts +23 -18
- package/demos/pc/app/tree/contextmenu.spec.ts +9 -8
- package/demos/pc/app/tree/drag.spec.ts +10 -18
- package/demos/pc/app/tree/edit.spec.ts +24 -103
- package/demos/pc/app/tree/expand-control.spec.ts +22 -18
- package/demos/pc/app/tree/filter-view.spec.ts +16 -18
- package/demos/pc/app/tree/icons.spec.ts +20 -18
- package/demos/pc/app/tree/lazy.spec.ts +10 -18
- package/demos/pc/app/tree/node-hl.spec.ts +27 -18
- package/demos/pc/app/tree/node-op-composition-api.vue +12 -6
- package/demos/pc/app/tree/node-op.spec.ts +32 -19
- package/demos/pc/app/tree/other.spec.ts +5 -18
- package/demos/pc/app/tree/props.spec.ts +7 -18
- package/demos/pc/app/tree/radio.spec.ts +10 -18
- package/demos/pc/app/tree/slot.spec.ts +12 -18
- package/demos/pc/app/tree/webdoc/tree.js +2 -2
- package/demos/pc/app/tree-menu/accordion.spec.ts +3 -1
- package/demos/pc/app/tree-menu/basic-usage.spec.ts +4 -2
- package/demos/pc/app/tree-menu/current-node-composition-api.vue +7 -3
- package/demos/pc/app/tree-menu/current-node.spec.ts +20 -13
- package/demos/pc/app/tree-menu/current-node.vue +8 -6
- package/demos/pc/app/tree-menu/custom-icon.spec.ts +12 -2
- package/demos/pc/app/tree-menu/data-resource.spec.ts +33 -21
- package/demos/pc/app/tree-menu/default-expand-all.spec.ts +25 -8
- package/demos/pc/app/tree-menu/default-expanded-keys-highlight.spec.ts +6 -4
- package/demos/pc/app/tree-menu/default-expanded-keys.spec.ts +11 -7
- package/demos/pc/app/tree-menu/draggable.spec.ts +11 -4
- package/demos/pc/app/tree-menu/empty-text.spec.ts +1 -1
- package/demos/pc/app/tree-menu/event-allow-draggable.spec.ts +4 -1
- package/demos/pc/app/tree-menu/events.spec.ts +56 -28
- package/demos/pc/app/tree-menu/expand-on-click-node.spec.ts +32 -3
- package/demos/pc/app/tree-menu/filter-node-method.spec.ts +9 -6
- package/demos/pc/app/tree-menu/filter-node-method.vue +0 -4
- package/demos/pc/app/tree-menu/indent.spec.ts +9 -4
- package/demos/pc/app/tree-menu/lazy-load.spec.ts +8 -4
- package/demos/pc/app/tree-menu/menu-collapsible.spec.ts +5 -2
- package/demos/pc/app/tree-menu/show-checkbox.spec.ts +79 -41
- package/demos/pc/app/tree-menu/text-ellipsis.spec.ts +7 -4
- package/demos/pc/app/tree-menu/tree-menu-slot.spec.ts +4 -3
- package/demos/pc/app/tree-menu/webdoc/tree-menu.cn.md +1 -1
- package/demos/pc/app/tree-menu/webdoc/tree-menu.en.md +1 -1
- package/demos/pc/app/tree-menu/webdoc/tree-menu.js +3 -3
- package/demos/pc/app/user-contact/webdoc/user-contact.js +21 -13
- package/demos/pc/app/user-head/icon-user-head.spec.ts +3 -3
- package/demos/pc/app/user-head/image-user-head.spec.ts +2 -2
- package/demos/pc/app/user-head/webdoc/user-head.js +44 -28
- package/demos/pc/webdoc/changelog.md +1 -0
- package/demos/pc/webdoc/import-components.md +2 -4
- package/demos/pc/webdoc/theme-en.md +8 -4
- package/demos/pc/webdoc/theme.md +10 -3
- package/package.json +6 -6
- package/src/App.vue +0 -2
- package/src/i18n/index.js +3 -3
- package/src/main.js +2 -7
- package/src/menus.jsx +1 -1
- package/src/tools/useApiMode.js +2 -2
- package/src/tools/useBulletin.jsx +2 -2
- package/src/tools/utils.js +2 -2
- package/src/views/components/VersionTip.vue +14 -8
- package/src/views/components/components.vue +48 -47
- package/src/views/components/demo.vue +11 -11
- package/src/views/docs/docs.vue +2 -3
- package/src/views/layout/layout.vue +17 -19
- package/src/views/overview.vue +16 -13
- package/vite.config.ts +10 -4
- package/demos/mobile/app/pull-refresh/disabled.vue +0 -57
- package/demos/mobile/app/pull-refresh/head-height.vue +0 -31
- package/demos/mobile/app/pull-refresh/result-text.vue +0 -46
- package/demos/mobile/app/pull-refresh/success-duration.vue +0 -31
- package/demos/mobile/app/pull-refresh/success-text.vue +0 -27
- package/demos/pc/app/grid/loading/grid-loading-off-tip.spec.js +0 -8
- package/demos/pc/app/tag/before-delete.vue +0 -64
- package/demos/pc/app/tag/closable-composition-api.vue +0 -25
- package/demos/pc/app/tag/closable.spec.ts +0 -14
- /package/demos/pc/app/button/{autofocus.spec.js → autofocus.spec.ts} +0 -0
- /package/demos/pc/app/button/{basic-usage.spec.js → basic-usage.spec.ts} +0 -0
- /package/demos/pc/app/button/{click.spec.js → click.spec.ts} +0 -0
- /package/demos/pc/app/button/{icon.spec.js → icon.spec.ts} +0 -0
- /package/demos/pc/app/button/{image.spec.js → image.spec.ts} +0 -0
- /package/demos/pc/app/button/{loading.spec.js → loading.spec.ts} +0 -0
- /package/demos/pc/app/button/{reset-time.spec.js → reset-time.spec.ts} +0 -0
- /package/demos/pc/app/button/{size.spec.js → size.spec.ts} +0 -0
- /package/demos/pc/app/button/{text.spec.js → text.spec.ts} +0 -0
|
@@ -5,22 +5,27 @@ test('多级菜单,使用 menu-options', async ({ page }) => {
|
|
|
5
5
|
await page.goto('dropdown#multi-level')
|
|
6
6
|
|
|
7
7
|
const wrap = page.locator('#multi-level')
|
|
8
|
-
const dropDown = wrap.locator('.tiny-dropdown').
|
|
8
|
+
const dropDown = wrap.locator('.tiny-dropdown').nth(0)
|
|
9
9
|
const dropDownMenu = page.locator('body > .tiny-dropdown-menu')
|
|
10
10
|
const dropDownMenuItem = dropDownMenu.locator('.tiny-dropdown-item')
|
|
11
|
-
const notify = page.locator('.tiny-notify')
|
|
12
11
|
|
|
13
|
-
await page.waitForTimeout(
|
|
12
|
+
await page.waitForTimeout(2000)
|
|
14
13
|
await dropDown.hover()
|
|
15
14
|
await expect(dropDownMenu).toBeVisible()
|
|
15
|
+
await page.waitForTimeout(500)
|
|
16
16
|
await dropDownMenuItem.first().hover()
|
|
17
|
+
await page.waitForTimeout(500)
|
|
17
18
|
await dropDownMenuItem.getByText('老友粉2.1').hover()
|
|
19
|
+
await expect(dropDownMenuItem.getByText('狮子头3.1')).toBeVisible()
|
|
18
20
|
await dropDownMenuItem.getByText('狮子头3.1').click()
|
|
21
|
+
await page.waitForTimeout(1000)
|
|
22
|
+
|
|
19
23
|
await expect(
|
|
20
|
-
|
|
24
|
+
page.locator('.tiny-modal').filter({
|
|
21
25
|
hasText: '配置式可以通过 data.itemData 获取配置数据:{"label":"狮子头3.1"}'
|
|
22
26
|
})
|
|
23
|
-
).
|
|
27
|
+
).toHaveCount(1)
|
|
28
|
+
await page.waitForTimeout(500)
|
|
24
29
|
})
|
|
25
30
|
|
|
26
31
|
test('多级菜单,使用 options', async ({ page }) => {
|
|
@@ -31,17 +36,19 @@ test('多级菜单,使用 options', async ({ page }) => {
|
|
|
31
36
|
const dropDown = wrap.locator('.tiny-dropdown').nth(1)
|
|
32
37
|
const dropDownMenu = page.locator('body > .tiny-dropdown-menu')
|
|
33
38
|
const dropDownMenuItem = dropDownMenu.locator('.tiny-dropdown-item')
|
|
34
|
-
const notify = page.locator('.tiny-notify')
|
|
35
39
|
|
|
36
|
-
await page.waitForTimeout(
|
|
40
|
+
await page.waitForTimeout(2000)
|
|
37
41
|
await dropDown.hover()
|
|
38
42
|
await expect(dropDownMenu).toBeVisible()
|
|
43
|
+
await page.waitForTimeout(500)
|
|
39
44
|
await dropDownMenuItem.first().hover()
|
|
45
|
+
await page.waitForTimeout(500)
|
|
40
46
|
await dropDownMenuItem.getByText('老友粉2.1').hover()
|
|
41
47
|
await dropDownMenuItem.getByText('狮子头3.1').click()
|
|
48
|
+
await page.waitForTimeout(1000)
|
|
42
49
|
await expect(
|
|
43
|
-
|
|
50
|
+
page.locator('.tiny-modal').filter({
|
|
44
51
|
hasText: '配置式可以通过 data.itemData 获取配置数据:{"label":"狮子头3.1"}'
|
|
45
52
|
})
|
|
46
|
-
).
|
|
53
|
+
).toHaveCount(1)
|
|
47
54
|
})
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
|
|
14
14
|
<script>
|
|
15
15
|
import { iconStarDisable } from '@opentiny/vue-icon'
|
|
16
|
-
import { Dropdown, DropdownMenu,
|
|
16
|
+
import { Dropdown, DropdownMenu, Modal } from '@opentiny/vue'
|
|
17
17
|
|
|
18
18
|
export default {
|
|
19
19
|
components: {
|
|
@@ -73,12 +73,8 @@ export default {
|
|
|
73
73
|
},
|
|
74
74
|
methods: {
|
|
75
75
|
itemClick(data) {
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
title: 'itemData',
|
|
79
|
-
message: `配置式可以通过 data.itemData 获取配置数据:${JSON.stringify(data.itemData)}`,
|
|
80
|
-
position: 'top-right',
|
|
81
|
-
duration: 2000
|
|
76
|
+
Modal.message({
|
|
77
|
+
message: `配置式可以通过 data.itemData 获取配置数据:${JSON.stringify(data.itemData)}`
|
|
82
78
|
})
|
|
83
79
|
}
|
|
84
80
|
}
|
|
@@ -1,26 +1,49 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<
|
|
3
|
-
<
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
<tiny-dropdown-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
2
|
+
<div>
|
|
3
|
+
<p>场景1: 只显示文本</p>
|
|
4
|
+
<tiny-dropdown :show-icon="false">
|
|
5
|
+
<template #dropdown>
|
|
6
|
+
<tiny-dropdown-menu>
|
|
7
|
+
<tiny-dropdown-item label="老友粉"></tiny-dropdown-item>
|
|
8
|
+
<tiny-dropdown-item>黄金糕</tiny-dropdown-item>
|
|
9
|
+
<tiny-dropdown-item>狮子头</tiny-dropdown-item>
|
|
10
|
+
<tiny-dropdown-item>螺蛳粉</tiny-dropdown-item>
|
|
11
|
+
<tiny-dropdown-item>双皮奶</tiny-dropdown-item>
|
|
12
|
+
<tiny-dropdown-item>蚵仔煎</tiny-dropdown-item>
|
|
13
|
+
</tiny-dropdown-menu>
|
|
14
|
+
</template>
|
|
15
|
+
</tiny-dropdown>
|
|
16
|
+
<p>场景2:自定义图且只显示图标</p>
|
|
17
|
+
<tiny-dropdown title="" :suffix-icon="tinyIconEllipsis">
|
|
18
|
+
<template #dropdown>
|
|
19
|
+
<tiny-dropdown-menu>
|
|
20
|
+
<tiny-dropdown-item label="老友粉"></tiny-dropdown-item>
|
|
21
|
+
<tiny-dropdown-item>黄金糕</tiny-dropdown-item>
|
|
22
|
+
<tiny-dropdown-item>狮子头</tiny-dropdown-item>
|
|
23
|
+
<tiny-dropdown-item>螺蛳粉</tiny-dropdown-item>
|
|
24
|
+
<tiny-dropdown-item>双皮奶</tiny-dropdown-item>
|
|
25
|
+
<tiny-dropdown-item>蚵仔煎</tiny-dropdown-item>
|
|
26
|
+
</tiny-dropdown-menu>
|
|
27
|
+
</template>
|
|
28
|
+
</tiny-dropdown>
|
|
29
|
+
</div>
|
|
14
30
|
</template>
|
|
15
31
|
|
|
16
|
-
<script>
|
|
17
|
-
import {
|
|
32
|
+
<script setup>
|
|
33
|
+
import {
|
|
34
|
+
Dropdown as TinyDropdown,
|
|
35
|
+
DropdownMenu as TinyDropdownMenu,
|
|
36
|
+
DropdownItem as TinyDropdownItem
|
|
37
|
+
} from '@opentiny/vue'
|
|
38
|
+
import { iconEllipsis } from '@opentiny/vue-icon'
|
|
18
39
|
|
|
19
|
-
|
|
20
|
-
components: {
|
|
21
|
-
TinyDropdown: Dropdown,
|
|
22
|
-
TinyDropdownMenu: DropdownMenu,
|
|
23
|
-
TinyDropdownItem: DropdownItem
|
|
24
|
-
}
|
|
25
|
-
}
|
|
40
|
+
const tinyIconEllipsis = iconEllipsis()
|
|
26
41
|
</script>
|
|
42
|
+
|
|
43
|
+
<style lang="less" scoped>
|
|
44
|
+
p {
|
|
45
|
+
line-height: 1.5;
|
|
46
|
+
font-size: 14px;
|
|
47
|
+
margin-top: 30px;
|
|
48
|
+
}
|
|
49
|
+
</style>
|
|
@@ -1,26 +1,56 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<
|
|
3
|
-
<
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
<tiny-dropdown-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
2
|
+
<div>
|
|
3
|
+
<p>场景1: 只显示文本</p>
|
|
4
|
+
<tiny-dropdown :show-icon="false">
|
|
5
|
+
<template #dropdown>
|
|
6
|
+
<tiny-dropdown-menu>
|
|
7
|
+
<tiny-dropdown-item label="老友粉"></tiny-dropdown-item>
|
|
8
|
+
<tiny-dropdown-item>黄金糕</tiny-dropdown-item>
|
|
9
|
+
<tiny-dropdown-item>狮子头</tiny-dropdown-item>
|
|
10
|
+
<tiny-dropdown-item>螺蛳粉</tiny-dropdown-item>
|
|
11
|
+
<tiny-dropdown-item>双皮奶</tiny-dropdown-item>
|
|
12
|
+
<tiny-dropdown-item>蚵仔煎</tiny-dropdown-item>
|
|
13
|
+
</tiny-dropdown-menu>
|
|
14
|
+
</template>
|
|
15
|
+
</tiny-dropdown>
|
|
16
|
+
<p>场景2:自定义图且只显示图标</p>
|
|
17
|
+
<tiny-dropdown class="custom-icon" title="" :suffix-icon="tinyIconEllipsis">
|
|
18
|
+
<template #dropdown>
|
|
19
|
+
<tiny-dropdown-menu>
|
|
20
|
+
<tiny-dropdown-item label="老友粉"></tiny-dropdown-item>
|
|
21
|
+
<tiny-dropdown-item>黄金糕</tiny-dropdown-item>
|
|
22
|
+
<tiny-dropdown-item>狮子头</tiny-dropdown-item>
|
|
23
|
+
<tiny-dropdown-item>螺蛳粉</tiny-dropdown-item>
|
|
24
|
+
<tiny-dropdown-item>双皮奶</tiny-dropdown-item>
|
|
25
|
+
<tiny-dropdown-item>蚵仔煎</tiny-dropdown-item>
|
|
26
|
+
</tiny-dropdown-menu>
|
|
27
|
+
</template>
|
|
28
|
+
</tiny-dropdown>
|
|
29
|
+
</div>
|
|
14
30
|
</template>
|
|
15
31
|
|
|
16
32
|
<script>
|
|
17
33
|
import { Dropdown, DropdownMenu, DropdownItem } from '@opentiny/vue'
|
|
34
|
+
import { iconEllipsis } from '@opentiny/vue-icon'
|
|
18
35
|
|
|
19
36
|
export default {
|
|
20
37
|
components: {
|
|
21
38
|
TinyDropdown: Dropdown,
|
|
22
39
|
TinyDropdownMenu: DropdownMenu,
|
|
23
40
|
TinyDropdownItem: DropdownItem
|
|
41
|
+
},
|
|
42
|
+
data() {
|
|
43
|
+
return {
|
|
44
|
+
tinyIconEllipsis: iconEllipsis()
|
|
45
|
+
}
|
|
24
46
|
}
|
|
25
47
|
}
|
|
26
48
|
</script>
|
|
49
|
+
|
|
50
|
+
<style lang="less" scoped>
|
|
51
|
+
p {
|
|
52
|
+
line-height: 1.5;
|
|
53
|
+
font-size: 14px;
|
|
54
|
+
margin-top: 30px;
|
|
55
|
+
}
|
|
56
|
+
</style>
|
|
@@ -33,11 +33,12 @@ export default {
|
|
|
33
33
|
},
|
|
34
34
|
{
|
|
35
35
|
'demoId': 'show-icon',
|
|
36
|
-
'name': { 'zh-CN': '
|
|
36
|
+
'name': { 'zh-CN': '图标', 'en-US': 'Show icons' },
|
|
37
37
|
'desc': {
|
|
38
|
-
'zh-CN':
|
|
38
|
+
'zh-CN':
|
|
39
|
+
'<p>通过 <code>show-icon</code> 属性设置是否显示下拉触发源图标,<code>suffix-icon</code> 设置下拉触发源图标。</p>\n',
|
|
39
40
|
'en-US':
|
|
40
|
-
'<p>
|
|
41
|
+
'<p> Set whether to display the dropdown trigger source icon through the <code>show-icon</code> attribute, and set the dropdown trigger source icon through the <code>suffix-icon</code> setting. </p>\n'
|
|
41
42
|
},
|
|
42
43
|
'codeFiles': ['show-icon.vue']
|
|
43
44
|
},
|
|
@@ -237,6 +238,16 @@ export default {
|
|
|
237
238
|
},
|
|
238
239
|
'demoId': 'trigger'
|
|
239
240
|
},
|
|
241
|
+
{
|
|
242
|
+
'name': 'size',
|
|
243
|
+
'type': '"medium" | "small" | "mini"',
|
|
244
|
+
'defaultValue': '',
|
|
245
|
+
'desc': {
|
|
246
|
+
'zh-CN': '菜单尺寸。注意:只在 split-button为 true 的情况下生效',
|
|
247
|
+
'en-US': 'Menu size. Note: Only takes effect when split-button is true'
|
|
248
|
+
},
|
|
249
|
+
'demoId': 'size'
|
|
250
|
+
},
|
|
240
251
|
{
|
|
241
252
|
'name': 'split-button',
|
|
242
253
|
'type': 'boolean',
|
|
@@ -248,14 +259,24 @@ export default {
|
|
|
248
259
|
'demoId': 'split-button'
|
|
249
260
|
},
|
|
250
261
|
{
|
|
251
|
-
'name': '
|
|
252
|
-
'type': '
|
|
262
|
+
'name': 'show-icon',
|
|
263
|
+
'type': 'boolean',
|
|
264
|
+
'defaultValue': 'true',
|
|
265
|
+
'desc': {
|
|
266
|
+
'zh-CN': '是否显示下拉触发源图标',
|
|
267
|
+
'en-US': 'Is the dropdown trigger source icon displayed'
|
|
268
|
+
},
|
|
269
|
+
'demoId': 'show-icon'
|
|
270
|
+
},
|
|
271
|
+
{
|
|
272
|
+
'name': 'suffix-icon',
|
|
273
|
+
'type': 'VueComponent',
|
|
253
274
|
'defaultValue': '',
|
|
254
275
|
'desc': {
|
|
255
|
-
'zh-CN': '
|
|
256
|
-
'en-US': '
|
|
276
|
+
'zh-CN': '下拉触发源图标',
|
|
277
|
+
'en-US': 'Dropdown trigger source icon'
|
|
257
278
|
},
|
|
258
|
-
'demoId': '
|
|
279
|
+
'demoId': 'show-icon'
|
|
259
280
|
},
|
|
260
281
|
{
|
|
261
282
|
'name': 'type',
|
|
@@ -3,18 +3,15 @@ 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('fall-menu#custom-menuitem')
|
|
6
|
-
const preview = page.locator('#preview')
|
|
7
6
|
// 子菜单列表容器
|
|
8
|
-
const
|
|
7
|
+
const preview = page.locator('.tiny-fall-menu__wrap')
|
|
9
8
|
// 父菜单列表
|
|
10
|
-
const fallMenuList =
|
|
11
|
-
await
|
|
12
|
-
await
|
|
13
|
-
await page.getByText('指南level1').hover()
|
|
14
|
-
await expect(fallMenuBox).toBeVisible()
|
|
9
|
+
const fallMenuList = page.locator('.tiny-fall-menu__list')
|
|
10
|
+
await preview.getByText('指南 level1').hover()
|
|
11
|
+
await page.waitForTimeout(1000)
|
|
15
12
|
// 点击左、右侧图标切换列表
|
|
16
|
-
await preview.locator('.icon-slot-right').click()
|
|
13
|
+
await preview.locator('.tiny-fall-menu__nav > .tiny-fall-menu__subnav > .icon-slot-right').click()
|
|
17
14
|
await expect(fallMenuList).toHaveCSS('left', /^-\d+px/)
|
|
18
|
-
await preview.locator('.icon-slot-left').click()
|
|
15
|
+
await preview.locator('.tiny-fall-menu__nav > .tiny-fall-menu__subnav > .icon-slot-left').click()
|
|
19
16
|
await expect(fallMenuList).toHaveCSS('left', '0px')
|
|
20
17
|
})
|
|
@@ -1,28 +1,17 @@
|
|
|
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
|
-
await page.goto('fall-menu#custom-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
const rightSlotIcon = preview.locator('.icon-slot-right')
|
|
5
|
+
await page.goto('fall-menu#custom-menuitem')
|
|
6
|
+
// 子菜单列表容器
|
|
7
|
+
const preview = page.locator('.tiny-fall-menu__wrap')
|
|
9
8
|
// 父菜单列表
|
|
10
|
-
const fallMenuList =
|
|
11
|
-
|
|
12
|
-
await
|
|
13
|
-
|
|
14
|
-
)
|
|
15
|
-
// 点击右侧更多切换图标
|
|
16
|
-
await rightSlotIcon.click()
|
|
17
|
-
// 向左移动
|
|
9
|
+
const fallMenuList = page.locator('.tiny-fall-menu__list')
|
|
10
|
+
await preview.getByText('组件 level1').hover()
|
|
11
|
+
await page.waitForTimeout(1000)
|
|
12
|
+
// 点击左、右侧图标切换列表
|
|
13
|
+
await preview.locator('.tiny-fall-menu__nav > .tiny-fall-menu__subnav > .icon-slot-right').click()
|
|
18
14
|
await expect(fallMenuList).toHaveCSS('left', /^-\d+px/)
|
|
19
|
-
|
|
20
|
-
const leftSlotIcon = preview.locator('.icon-slot-left')
|
|
21
|
-
await expect(leftSlotIcon.locator('svg path').getAttribute('d')).not.toContain(
|
|
22
|
-
'M17 21c-.2 0-.5-.1-.6-.2l-9.9-8c-.4-.2-.5-.5-.5-.8'
|
|
23
|
-
)
|
|
24
|
-
// 点击左侧更多切换图标
|
|
25
|
-
await leftSlotIcon.click()
|
|
26
|
-
// 向右移动
|
|
15
|
+
await preview.locator('.tiny-fall-menu__nav > .tiny-fall-menu__subnav > .icon-slot-left').click()
|
|
27
16
|
await expect(fallMenuList).toHaveCSS('left', '0px')
|
|
28
17
|
})
|
|
@@ -4,22 +4,19 @@ import { test, expect } from '@playwright/test'
|
|
|
4
4
|
test('基础用法、数据源', async ({ page }) => {
|
|
5
5
|
page.on('pageerror', (exception) => expect(exception).toBeNull())
|
|
6
6
|
await page.goto('fall-menu#data-resource')
|
|
7
|
-
const preview = page.locator('
|
|
8
|
-
await preview.getByRole('link', { name: '指南' }).hover()
|
|
9
|
-
const fallMenuBox = preview.locator('.tiny-fall-menu__box')
|
|
7
|
+
const preview = page.locator('.tiny-fall-menu__wrap')
|
|
10
8
|
// 父菜单列表
|
|
11
|
-
const fallMenuList =
|
|
9
|
+
const fallMenuList = page.locator('.tiny-fall-menu__list')
|
|
12
10
|
// 菜单列表应该可见
|
|
13
|
-
await
|
|
14
|
-
await
|
|
11
|
+
await preview.getByText(/^指南*$/i).hover()
|
|
12
|
+
await page.waitForTimeout(1000)
|
|
15
13
|
// 菜单列表应该不可见
|
|
16
|
-
await expect(fallMenuBox).toBeHidden()
|
|
17
14
|
// 点击右侧更多切换图标
|
|
18
|
-
await preview.
|
|
15
|
+
await preview.locator('.tiny-fall-menu__nav > .tiny-fall-menu__subnav > .icon-slot-right').click()
|
|
19
16
|
// 向左移动
|
|
20
17
|
await expect(fallMenuList).toHaveCSS('left', /^-\d+px/)
|
|
21
18
|
// 点击左侧更多切换图标
|
|
22
|
-
await preview.
|
|
19
|
+
await preview.locator('.tiny-fall-menu__nav > .tiny-fall-menu__subnav > .icon-slot-left').click()
|
|
23
20
|
// 向右移动
|
|
24
21
|
await expect(fallMenuList).toHaveCSS('left', '0px')
|
|
25
22
|
})
|
|
@@ -4,8 +4,8 @@ test('手动取消上传请求', async ({ page }) => {
|
|
|
4
4
|
page.on('pageerror', (exception) => expect(exception).toBeNull())
|
|
5
5
|
await page.goto('file-upload#abort-quest')
|
|
6
6
|
|
|
7
|
-
const upload = page.
|
|
8
|
-
const
|
|
7
|
+
const upload = page.getByRole('button', { name: '点击上传' })
|
|
8
|
+
const item = page.locator('.tiny-upload-list__li').nth(0)
|
|
9
9
|
const modal = page.locator('.tiny-modal')
|
|
10
10
|
const button = page.locator('button').filter({ hasText: '取消上传' })
|
|
11
11
|
const [fileChooser] = await Promise.all([page.waitForEvent('filechooser'), upload.click()])
|
|
@@ -13,9 +13,10 @@ test('手动取消上传请求', async ({ page }) => {
|
|
|
13
13
|
const path = require('node:path')
|
|
14
14
|
const currentPath = path.resolve(__dirname, '测试.jpg')
|
|
15
15
|
|
|
16
|
-
await button.click()
|
|
17
|
-
await expect(modal).toHaveText('手动取消上传')
|
|
18
16
|
await fileChooser.setFiles(currentPath)
|
|
17
|
+
await item.isVisible()
|
|
18
|
+
await button.click()
|
|
19
|
+
await expect(modal.nth(1)).toHaveText('手动取消上传')
|
|
20
|
+
await item.isHidden()
|
|
19
21
|
await expect(fileChooser.isMultiple()).toBe(false)
|
|
20
|
-
await expect(lists).toHaveCount(1)
|
|
21
22
|
})
|
|
@@ -1,21 +1,26 @@
|
|
|
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('file-upload#accept-file-image')
|
|
6
6
|
|
|
7
7
|
const upload = page.getByRole('button', { name: '点击上传' })
|
|
8
|
-
const lists = page.locator('.tiny-upload-
|
|
8
|
+
const lists = page.locator('.tiny-upload-list__li')
|
|
9
9
|
const [fileChooser] = await Promise.all([page.waitForEvent('filechooser'), upload.click()])
|
|
10
10
|
|
|
11
11
|
const path = require('node:path')
|
|
12
12
|
const path1 = path.resolve(__dirname, '测试.jpg')
|
|
13
13
|
const path2 = path.resolve(__dirname, '测试.svg')
|
|
14
14
|
const path3 = path.resolve(__dirname, '测试.png')
|
|
15
|
+
const path4 = path.resolve(__dirname, '测试.txt')
|
|
15
16
|
|
|
16
17
|
await fileChooser.setFiles(path1)
|
|
17
18
|
await fileChooser.setFiles(path2)
|
|
18
19
|
await fileChooser.setFiles(path3)
|
|
19
|
-
await
|
|
20
|
-
await
|
|
20
|
+
await fileChooser.setFiles(path4)
|
|
21
|
+
await page.getByText('格式(.txt)暂不支持').isVisible()
|
|
22
|
+
|
|
23
|
+
await page.getByText('测试.jpg').isVisible()
|
|
24
|
+
await page.getByText('测试.svg').isVisible()
|
|
25
|
+
await page.getByText('测试.png').isVisible()
|
|
21
26
|
})
|
|
@@ -1,11 +1,10 @@
|
|
|
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
|
-
await page.goto('
|
|
5
|
+
await page.goto('file-upload#disabled')
|
|
6
6
|
|
|
7
|
-
const upload = page.
|
|
8
|
-
const [fileChooser] = await Promise.all([page.waitForEvent('filechooser'), upload.click()])
|
|
7
|
+
const upload = page.locator('.tiny-upload')
|
|
9
8
|
|
|
10
|
-
await expect(
|
|
9
|
+
await expect(upload).toHaveClass(/is-disabled/)
|
|
11
10
|
})
|
|
@@ -15,6 +15,6 @@ test('是否可以拖拽上传', async ({ page }) => {
|
|
|
15
15
|
await expect(drag).toHaveCSS('width', '360px')
|
|
16
16
|
await expect(drag).toHaveCSS('height', '180px')
|
|
17
17
|
await fileChooser.setFiles(currentPath)
|
|
18
|
-
await expect(lists).toHaveText(/测试.jpg/)
|
|
18
|
+
await expect(lists.nth(0)).toHaveText(/测试.jpg/)
|
|
19
19
|
await expect(input).toHaveAttribute('accept', '.png,.jpeg,.jpg')
|
|
20
20
|
})
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
import { test, expect } from '@playwright/test'
|
|
2
2
|
|
|
3
|
-
test('
|
|
3
|
+
test('照片墙的预览、下载与删除', async ({ page, context }) => {
|
|
4
4
|
page.on('pageerror', (exception) => expect(exception).toBeNull())
|
|
5
5
|
await page.goto('file-upload#file-picture-card')
|
|
6
6
|
|
|
7
7
|
const upload = page.locator('.tiny-upload')
|
|
8
8
|
const [fileChooser] = await Promise.all([page.waitForEvent('filechooser'), upload.click()])
|
|
9
9
|
const lists = page.locator('.tiny-upload-list__item')
|
|
10
|
-
const prevPic = page.locator('#
|
|
10
|
+
const prevPic = page.locator('#file-picture-card svg').first()
|
|
11
11
|
const prevImg = page.locator('.tiny-dialog-box__body > img')
|
|
12
12
|
const dialogClose = page.getByRole('button', { name: 'Close' })
|
|
13
|
-
const dowPic = page.locator('#
|
|
14
|
-
const delbutton = page.locator('#
|
|
13
|
+
const dowPic = page.locator('#file-picture-card svg').nth(1)
|
|
14
|
+
const delbutton = page.locator('#file-picture-card svg').nth(2)
|
|
15
15
|
|
|
16
16
|
const path = require('node:path')
|
|
17
17
|
const currentPath = path.resolve(__dirname, '测试.jpg')
|
|
@@ -19,17 +19,18 @@ test('文件缩略图', async ({ page, context }) => {
|
|
|
19
19
|
await expect(lists).toHaveCount(0)
|
|
20
20
|
await fileChooser.setFiles(currentPath)
|
|
21
21
|
await expect(lists).toHaveCount(1)
|
|
22
|
+
await lists.first().hover()
|
|
22
23
|
const [newPage] = await Promise.all([context.waitForEvent('page'), dowPic.click()])
|
|
23
24
|
await expect(newPage.url()).toContain('blob:http://localhost:')
|
|
24
25
|
await newPage.close()
|
|
25
|
-
await lists.hover()
|
|
26
|
+
await lists.first().hover()
|
|
26
27
|
await prevPic.click()
|
|
27
28
|
await prevImg.isVisible()
|
|
28
29
|
const { width, height } = await lists.boundingBox()
|
|
29
30
|
await expect(width).toEqual(148)
|
|
30
31
|
await expect(height).toEqual(148)
|
|
31
32
|
await dialogClose.click()
|
|
32
|
-
await lists.hover()
|
|
33
|
+
await lists.first().hover()
|
|
33
34
|
await delbutton.click()
|
|
34
35
|
await expect(lists).toHaveCount(0)
|
|
35
36
|
})
|
|
@@ -2,9 +2,9 @@ import { test, expect } from '@playwright/test'
|
|
|
2
2
|
|
|
3
3
|
test('表单校验', async ({ page }) => {
|
|
4
4
|
page.on('pageerror', (exception) => expect(exception).toBeNull())
|
|
5
|
-
await page.goto('
|
|
5
|
+
await page.goto('file-upload#form-validation')
|
|
6
6
|
|
|
7
|
-
const button = page.locator('
|
|
7
|
+
const button = page.locator('button').filter({ hasText: '提交' })
|
|
8
8
|
const tip = page.locator('.tiny-form-item__validate-message')
|
|
9
9
|
|
|
10
10
|
await button.click()
|
|
@@ -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('file-upload#image-size')
|
|
6
6
|
|
|
@@ -12,5 +12,5 @@ test('获取上传的片的原始尺寸', async ({ page }) => {
|
|
|
12
12
|
const currentPath = path.resolve(__dirname, '测试.jpg')
|
|
13
13
|
|
|
14
14
|
await fileChooser.setFiles(currentPath)
|
|
15
|
-
await expect(modal).toHaveText(/宽:\d+ 高:\d+/)
|
|
15
|
+
await expect(modal.nth(1)).toHaveText(/宽:\d+ 高:\d+/)
|
|
16
16
|
})
|
|
@@ -1,21 +1,21 @@
|
|
|
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('file-upload#max-file-count')
|
|
6
6
|
|
|
7
7
|
const upload = page.getByRole('button', { name: '点击上传' })
|
|
8
|
-
const lists = page.locator('.tiny-upload-
|
|
8
|
+
const lists = page.locator('.tiny-upload-list__li')
|
|
9
9
|
const [fileChooser] = await Promise.all([page.waitForEvent('filechooser'), upload.click()])
|
|
10
|
-
const modal = page.locator('.tiny-modal')
|
|
10
|
+
const modal = page.locator('.tiny-modal').getByText(/文件数不能超过/)
|
|
11
11
|
|
|
12
12
|
const path = require('node:path')
|
|
13
13
|
const path1 = path.resolve(__dirname, '测试.jpg')
|
|
14
14
|
const path2 = path.resolve(__dirname, '测试.png')
|
|
15
15
|
|
|
16
|
+
await fileChooser.setFiles([path1, path2])
|
|
17
|
+
await modal.isVisible()
|
|
16
18
|
await fileChooser.setFiles(path1)
|
|
17
19
|
await expect(lists).toHaveCount(1)
|
|
18
|
-
await
|
|
19
|
-
await expect(lists).toHaveCount(1)
|
|
20
|
-
await modal.waitFor({ state: 'attached', timeout: 100 })
|
|
20
|
+
await upload.isHidden()
|
|
21
21
|
})
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<tiny-file-upload drag accept=".png,.jpeg,.jpg" action="#" paste-upload :auto-upload="false" :max-name-length="3">
|
|
3
|
-
<icon-
|
|
3
|
+
<icon-file-upload class="tiny-svg-size icon-fileupload"></icon-file-upload>
|
|
4
4
|
</tiny-file-upload>
|
|
5
5
|
</template>
|
|
6
6
|
|
|
@@ -8,5 +8,5 @@
|
|
|
8
8
|
import { FileUpload as TinyFileUpload } from '@opentiny/vue'
|
|
9
9
|
import { iconFileupload } from '@opentiny/vue-icon'
|
|
10
10
|
|
|
11
|
-
const
|
|
11
|
+
const IconFileUpload = iconFileupload()
|
|
12
12
|
</script>
|
|
@@ -1,10 +1,27 @@
|
|
|
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
|
-
await page.goto('
|
|
5
|
+
await page.goto('file-upload#paste-upload')
|
|
6
6
|
|
|
7
7
|
const drag = page.locator('.tiny-upload-dragger')
|
|
8
8
|
await expect(drag).toHaveCSS('width', '360px')
|
|
9
9
|
await expect(drag).toHaveCSS('height', '180px')
|
|
10
|
+
|
|
11
|
+
const path = require('node:path')
|
|
12
|
+
const pathJpg = path.resolve(__dirname, '测试.jpg')
|
|
13
|
+
|
|
14
|
+
await page.goto(pathJpg)
|
|
15
|
+
|
|
16
|
+
await page.keyboard.down('Control')
|
|
17
|
+
await page.keyboard.press('KeyC')
|
|
18
|
+
await page.keyboard.up('Control')
|
|
19
|
+
|
|
20
|
+
await page.goto('file-upload#paste-upload')
|
|
21
|
+
|
|
22
|
+
await page.focus('div.tiny-upload-dragger')
|
|
23
|
+
|
|
24
|
+
await page.keyboard.down('Control')
|
|
25
|
+
await page.keyboard.press('KeyV')
|
|
26
|
+
await page.keyboard.up('Control')
|
|
10
27
|
})
|