@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
|
@@ -2,34 +2,46 @@ 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('tree-menu#data-resource')
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
await expect(
|
|
7
|
+
const wrap = page.locator('#data-resource')
|
|
8
|
+
const treeMenu = wrap.locator('.tiny-tree-menu').nth(0)
|
|
9
|
+
const treeNode = treeMenu.locator('.tiny-tree-node__wrapper > .tiny-tree-node')
|
|
10
|
+
const treeNodeContent = treeNode.locator('> .tiny-tree-node__content')
|
|
11
|
+
|
|
12
|
+
await expect(treeNode.filter({ hasText: /^后端适配器$/ })).toBeHidden()
|
|
13
|
+
await treeNodeContent.filter({ hasText: /^指南$/ }).click()
|
|
14
|
+
await expect(treeNode.filter({ hasText: /^后端适配器$/ })).toBeVisible()
|
|
15
|
+
await treeNode.filter({ hasText: /^后端适配器$/ }).click()
|
|
16
|
+
await expect(treeNode.filter({ hasText: /^后端适配器$/ })).toHaveClass(/is-current/)
|
|
17
|
+
await treeNodeContent.filter({ hasText: /^指南$/ }).click()
|
|
18
|
+
await expect(treeNode.filter({ hasText: /^后端适配器$/ })).toBeHidden()
|
|
13
19
|
|
|
14
20
|
// 过滤功能
|
|
15
|
-
await
|
|
21
|
+
await treeMenu.locator('.tiny-input__inner').fill('添加标签页')
|
|
16
22
|
await expect(page.getByTitle('添加标签页')).toBeVisible()
|
|
17
|
-
await expect(
|
|
18
|
-
await
|
|
19
|
-
await expect(
|
|
23
|
+
await expect(treeNodeContent.filter({ hasText: /^指南$/ })).toBeHidden()
|
|
24
|
+
await treeMenu.locator('.tiny-input__inner').clear()
|
|
25
|
+
await expect(treeNodeContent.filter({ hasText: /^指南$/ })).toBeVisible()
|
|
20
26
|
})
|
|
21
27
|
|
|
22
28
|
test('服务端数据', async ({ page }) => {
|
|
23
29
|
page.on('pageerror', (exception) => expect(exception).toBeNull())
|
|
24
|
-
await page.goto('
|
|
30
|
+
await page.goto('tree-menu#data-resource')
|
|
31
|
+
|
|
32
|
+
const wrap = page.locator('#data-resource')
|
|
33
|
+
const treeMenu = wrap.locator('.tiny-tree-menu').nth(1)
|
|
34
|
+
const treeNode = treeMenu.locator('.tiny-tree-node__wrapper > .tiny-tree-node')
|
|
35
|
+
const treeNodeContent = treeNode.locator('> .tiny-tree-node__content')
|
|
25
36
|
|
|
26
|
-
await
|
|
27
|
-
await
|
|
28
|
-
await expect(
|
|
29
|
-
await
|
|
30
|
-
await
|
|
31
|
-
await
|
|
32
|
-
await
|
|
33
|
-
await expect(
|
|
34
|
-
await expect(
|
|
37
|
+
await expect(treeNodeContent.filter({ hasText: /^引入组件$/ })).toBeHidden()
|
|
38
|
+
await treeNodeContent.filter({ hasText: /^指南$/ }).click()
|
|
39
|
+
await expect(treeNodeContent.filter({ hasText: /^引入组件$/ })).toBeVisible()
|
|
40
|
+
await expect(treeNode.filter({ hasText: /^按需引入$/ })).toBeHidden()
|
|
41
|
+
await treeNodeContent.filter({ hasText: /^引入组件$/ }).click()
|
|
42
|
+
await expect(treeNode.filter({ hasText: /^按需引入$/ })).toBeVisible()
|
|
43
|
+
await treeNodeContent.filter({ hasText: /^指南$/ }).click()
|
|
44
|
+
await expect(treeNode.filter({ hasText: /^按需引入$/ })).toBeHidden()
|
|
45
|
+
await expect(treeNodeContent.filter({ hasText: /^组件$/ })).toBeVisible()
|
|
46
|
+
await expect(treeNode.filter({ hasText: /^规范$/ })).toBeVisible()
|
|
35
47
|
})
|
|
@@ -4,12 +4,29 @@ test('默认展开全部菜单', async ({ page }) => {
|
|
|
4
4
|
page.on('pageerror', (exception) => expect(exception).toBeNull())
|
|
5
5
|
await page.goto('tree-menu#default-expand-all')
|
|
6
6
|
|
|
7
|
-
const
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
await expect(
|
|
13
|
-
await expect(
|
|
14
|
-
await expect(
|
|
7
|
+
const wrap = page.locator('#default-expand-all')
|
|
8
|
+
const treeMenu = wrap.locator('.tiny-tree-menu')
|
|
9
|
+
const treeNode = treeMenu.locator('.tiny-tree-node__wrapper > .tiny-tree-node')
|
|
10
|
+
const treeNodeContent = treeNode.locator('> .tiny-tree-node__content')
|
|
11
|
+
|
|
12
|
+
await expect(treeNode.filter({ hasText: /^指南/ })).toHaveClass(/is-expanded/)
|
|
13
|
+
await expect(treeNode.filter({ hasText: /^引入组件/ })).toHaveClass(/is-expanded/)
|
|
14
|
+
await expect(treeNode.filter({ hasText: /^组件/ })).toHaveClass(/is-expanded/)
|
|
15
|
+
await expect(treeNode.filter({ hasText: /^表单组件/ })).toHaveClass(/is-expanded/)
|
|
16
|
+
await expect(treeNode.filter({ hasText: /^教程/ })).toHaveClass(/is-expanded/)
|
|
17
|
+
await expect(treeNode.filter({ hasText: /^页面布局/ })).toHaveClass(/is-expanded/)
|
|
18
|
+
await expect(treeNode.filter({ hasText: /^查询功能/ })).toHaveClass(/is-expanded/)
|
|
19
|
+
await expect(treeNode.filter({ hasText: /^新增功能/ })).toHaveClass(/is-expanded/)
|
|
20
|
+
await expect(treeNode.filter({ hasText: /^编辑功能/ })).toHaveClass(/is-expanded/)
|
|
21
|
+
|
|
22
|
+
await expect(treeNodeContent.filter({ hasText: /^首页$/ })).toBeVisible()
|
|
23
|
+
await expect(treeNodeContent.filter({ hasText: /^按需引入$/ })).toBeVisible()
|
|
24
|
+
await expect(treeNodeContent.filter({ hasText: /^引入组件$/ })).toBeVisible()
|
|
25
|
+
await expect(treeNodeContent.filter({ hasText: /^Button 按钮$/ })).toBeVisible()
|
|
26
|
+
await expect(treeNodeContent.filter({ hasText: /^业务组件$/ })).toBeVisible()
|
|
27
|
+
await expect(treeNodeContent.filter({ hasText: /^添加标签页$/ })).toBeVisible()
|
|
28
|
+
await expect(treeNodeContent.filter({ hasText: /^添加查询页面$/ })).toBeVisible()
|
|
29
|
+
await expect(treeNodeContent.filter({ hasText: /^表单新增功能$/ })).toBeVisible()
|
|
30
|
+
await expect(treeNodeContent.filter({ hasText: /^开启编辑功能$/ })).toBeVisible()
|
|
31
|
+
await expect(treeNodeContent.filter({ hasText: /^更新日志$/ })).toBeVisible()
|
|
15
32
|
})
|
|
@@ -4,9 +4,11 @@ test('默认展开某节点', async ({ page }) => {
|
|
|
4
4
|
page.on('pageerror', (exception) => expect(exception).toBeNull())
|
|
5
5
|
await page.goto('tree-menu#default-expanded-keys-highlight')
|
|
6
6
|
|
|
7
|
-
const
|
|
8
|
-
const
|
|
7
|
+
const wrap = page.locator('#default-expanded-keys-highlight')
|
|
8
|
+
const treeMenu = wrap.locator('.tiny-tree-menu')
|
|
9
|
+
const treeNode = treeMenu.locator('.tiny-tree-node__wrapper > .tiny-tree-node')
|
|
9
10
|
|
|
10
|
-
await
|
|
11
|
-
await
|
|
11
|
+
await expect(treeNode.filter({ hasText: /^Button 按钮$/ })).toHaveClass(/is-current/)
|
|
12
|
+
await wrap.getByRole('button', { name: '设置展开并高亮' }).click()
|
|
13
|
+
await expect(treeNode.filter({ hasText: /^页面布局/ })).toHaveClass(/is-current/)
|
|
12
14
|
})
|
|
@@ -4,15 +4,19 @@ test('默认展开某节点', async ({ page }) => {
|
|
|
4
4
|
page.on('pageerror', (exception) => expect(exception).toBeNull())
|
|
5
5
|
await page.goto('tree-menu#default-expanded-keys')
|
|
6
6
|
|
|
7
|
-
const
|
|
7
|
+
const wrap = page.locator('#default-expanded-keys')
|
|
8
|
+
const treeMenu = wrap.locator('.tiny-tree-menu')
|
|
9
|
+
const treeNode = treeMenu.locator('.tiny-tree-node__wrapper > .tiny-tree-node')
|
|
10
|
+
const treeNodeContent = treeNode.locator('> .tiny-tree-node__content')
|
|
11
|
+
|
|
8
12
|
// 默认展开节点
|
|
9
|
-
await expect(
|
|
13
|
+
await expect(treeNodeContent.filter({ hasText: /^数据组件$/ })).toBeVisible()
|
|
10
14
|
// 默认展开节点的祖先节点展开
|
|
11
|
-
await expect(
|
|
15
|
+
await expect(treeNodeContent.filter({ hasText: /^组件/ })).toBeVisible()
|
|
12
16
|
// 默认展开节点兄弟节点展开
|
|
13
|
-
await expect(
|
|
17
|
+
await expect(treeNodeContent.filter({ hasText: /^导航组件$/ })).toBeVisible()
|
|
14
18
|
// 默认展开节点的下一层次节点不展开
|
|
15
|
-
await expect(
|
|
19
|
+
await expect(treeNodeContent.filter({ hasText: /^Datepicker 日期$/ })).toBeVisible()
|
|
16
20
|
// 非默认展开节点子的祖先节点的子节点不展开
|
|
17
|
-
await expect(
|
|
18
|
-
})
|
|
21
|
+
await expect(treeNodeContent.filter({ hasText: /^页面布局/ })).toBeHidden()
|
|
22
|
+
})
|
|
@@ -2,10 +2,15 @@ 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('tree-menu#
|
|
5
|
+
await page.goto('tree-menu#draggable')
|
|
6
6
|
|
|
7
|
-
const
|
|
8
|
-
const
|
|
7
|
+
const wrap = page.locator('#draggable')
|
|
8
|
+
const treeMenu = wrap.locator('.tiny-tree-menu')
|
|
9
|
+
const treeNodeWrapper = treeMenu.locator('.tiny-tree-node__wrapper')
|
|
10
|
+
const treeNode = treeMenu.locator('.tiny-tree-node__wrapper > .tiny-tree-node')
|
|
11
|
+
const node = treeNodeWrapper.filter({ hasText: /^首页$/ })
|
|
12
|
+
|
|
13
|
+
await page.waitForTimeout(2000)
|
|
9
14
|
|
|
10
15
|
// 同一层次节点拖拽
|
|
11
16
|
const { x: x0, y: y0 } = await node.boundingBox()
|
|
@@ -15,6 +20,8 @@ test('拖动菜单', async ({ page }) => {
|
|
|
15
20
|
await page.mouse.move(x0, y0 + 80)
|
|
16
21
|
await page.mouse.up()
|
|
17
22
|
|
|
23
|
+
await node.hover()
|
|
24
|
+
|
|
18
25
|
// 判断位置是否变化
|
|
19
26
|
const { x: x1, y: y1 } = await node.boundingBox()
|
|
20
27
|
expect(y1).toBeGreaterThan(y0)
|
|
@@ -26,7 +33,7 @@ test('拖动菜单', async ({ page }) => {
|
|
|
26
33
|
await page.mouse.up()
|
|
27
34
|
|
|
28
35
|
// 判断是否放到兄弟节点内
|
|
29
|
-
await
|
|
36
|
+
await treeNode.filter({ hasText: /^指南/ }).click()
|
|
30
37
|
await expect(treeMenu.getByRole('treeitem', { name: '指南' }).getByRole('treeitem', { name: '首页' })).toBeVisible()
|
|
31
38
|
|
|
32
39
|
// 拖拽到父节点同级
|
|
@@ -4,6 +4,6 @@ test('自定义空数据文本', async ({ page }) => {
|
|
|
4
4
|
page.on('pageerror', (exception) => expect(exception).toBeNull())
|
|
5
5
|
await page.goto('tree-menu#empty-text')
|
|
6
6
|
|
|
7
|
-
const treeMenu = page.locator('#
|
|
7
|
+
const treeMenu = page.locator('#empty-text .tiny-tree-menu')
|
|
8
8
|
await expect(treeMenu.locator('.tiny-tree__empty-text')).toHaveText('空数据')
|
|
9
9
|
})
|
|
@@ -4,9 +4,12 @@ test('拖拽菜单回调事件', async ({ page }) => {
|
|
|
4
4
|
page.on('pageerror', (exception) => expect(exception).toBeNull())
|
|
5
5
|
await page.goto('tree-menu#event-allow-draggable')
|
|
6
6
|
|
|
7
|
-
const
|
|
7
|
+
const wrap = page.locator('#event-allow-draggable')
|
|
8
|
+
const treeMenu = wrap.locator('.tiny-tree-menu')
|
|
8
9
|
const node = treeMenu.getByTitle('首页')
|
|
9
10
|
|
|
11
|
+
await page.waitForTimeout(2000)
|
|
12
|
+
|
|
10
13
|
const { x: x0, y: y0 } = await node.boundingBox()
|
|
11
14
|
await page.mouse.move(x0, y0)
|
|
12
15
|
await page.mouse.down()
|
|
@@ -2,61 +2,89 @@ 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('tree-menu#
|
|
5
|
+
await page.goto('tree-menu#events')
|
|
6
6
|
|
|
7
|
-
const
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
const wrap = page.locator('#events')
|
|
8
|
+
const treeMenu = wrap.locator('.tiny-tree-menu')
|
|
9
|
+
const treeNode = treeMenu.locator('.tiny-tree-node__wrapper > .tiny-tree-node')
|
|
10
|
+
const modal = page.locator('.tiny-modal')
|
|
11
|
+
|
|
12
|
+
await treeNode.getByTitle('首页', { exact: true }).click()
|
|
13
|
+
await expect(modal.filter({ hasText: '节点-首页被点击了' })).toBeVisible()
|
|
10
14
|
await treeMenu.getByTitle('指南', { exact: true }).click()
|
|
11
|
-
await expect(
|
|
15
|
+
await expect(modal.filter({ hasText: '节点-指南被点击了' })).toBeVisible()
|
|
12
16
|
await treeMenu.getByTitle('后端适配器', { exact: true }).click()
|
|
13
|
-
await expect(
|
|
17
|
+
await expect(modal.filter({ hasText: '节点-后端适配器被点击了' })).toBeVisible()
|
|
14
18
|
})
|
|
15
19
|
|
|
16
|
-
|
|
17
20
|
test('当前选中节点变化事件', async ({ page }) => {
|
|
18
21
|
page.on('pageerror', (exception) => expect(exception).toBeNull())
|
|
19
|
-
await page.goto('tree-menu#
|
|
22
|
+
await page.goto('tree-menu#events')
|
|
20
23
|
|
|
21
|
-
const
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
24
|
+
const wrap = page.locator('#events')
|
|
25
|
+
const treeMenu = wrap.locator('.tiny-tree-menu')
|
|
26
|
+
const treeNode = treeMenu.locator('.tiny-tree-node__wrapper > .tiny-tree-node')
|
|
27
|
+
const treeNodeContent = treeNode.locator('> .tiny-tree-node__content')
|
|
28
|
+
const modal = page.locator('.tiny-modal')
|
|
29
|
+
|
|
30
|
+
await treeNodeContent
|
|
31
|
+
.filter({ hasText: /^指南$/ })
|
|
32
|
+
.locator('.tiny-checkbox')
|
|
33
|
+
.click()
|
|
34
|
+
await expect(modal.filter({ hasText: '选中节点变化为:指南' })).toBeVisible()
|
|
35
|
+
await treeNodeContent.filter({ hasText: /^指南$/ }).click()
|
|
36
|
+
await treeNodeContent
|
|
37
|
+
.filter({ hasText: /^后端适配器$/ })
|
|
38
|
+
.locator('.tiny-checkbox')
|
|
39
|
+
.click()
|
|
40
|
+
await expect(modal.filter({ hasText: '选中节点变化为:后端适配器' })).toBeVisible()
|
|
26
41
|
})
|
|
27
42
|
|
|
28
43
|
test('节点被折叠时触发的事件', async ({ page }) => {
|
|
29
44
|
page.on('pageerror', (exception) => expect(exception).toBeNull())
|
|
30
|
-
await page.goto('tree-menu#
|
|
45
|
+
await page.goto('tree-menu#events')
|
|
31
46
|
|
|
32
|
-
const
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
47
|
+
const wrap = page.locator('#events')
|
|
48
|
+
const treeMenu = wrap.locator('.tiny-tree-menu')
|
|
49
|
+
const treeNode = treeMenu.locator('.tiny-tree-node__wrapper > .tiny-tree-node')
|
|
50
|
+
const treeNodeContent = treeNode.locator('> .tiny-tree-node__content')
|
|
51
|
+
const modal = page.locator('.tiny-modal')
|
|
37
52
|
|
|
53
|
+
await treeNodeContent.filter({ hasText: /^指南$/ }).click()
|
|
54
|
+
await treeNodeContent.filter({ hasText: /^指南$/ }).click()
|
|
55
|
+
await expect(modal.filter({ hasText: '节点-指南被关闭了' })).toBeVisible()
|
|
56
|
+
})
|
|
38
57
|
|
|
39
58
|
test('节点被展开时触发的事件', async ({ page }) => {
|
|
40
59
|
page.on('pageerror', (exception) => expect(exception).toBeNull())
|
|
41
|
-
await page.goto('tree-menu#
|
|
60
|
+
await page.goto('tree-menu#events')
|
|
42
61
|
|
|
43
|
-
const
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
62
|
+
const wrap = page.locator('#events')
|
|
63
|
+
const treeMenu = wrap.locator('.tiny-tree-menu')
|
|
64
|
+
const treeNode = treeMenu.locator('.tiny-tree-node__wrapper > .tiny-tree-node')
|
|
65
|
+
const treeNodeContent = treeNode.locator('> .tiny-tree-node__content')
|
|
66
|
+
const modal = page.locator('.tiny-modal')
|
|
47
67
|
|
|
68
|
+
await treeNodeContent.filter({ hasText: /^指南$/ }).click()
|
|
69
|
+
await expect(modal.filter({ hasText: '节点-指南被打开了' })).toBeVisible()
|
|
70
|
+
})
|
|
48
71
|
|
|
49
72
|
test('节点选中状态发生变化时的回调', async ({ page }) => {
|
|
50
73
|
page.on('pageerror', (exception) => expect(exception).toBeNull())
|
|
51
|
-
await page.goto('tree-menu#
|
|
74
|
+
await page.goto('tree-menu#events')
|
|
52
75
|
|
|
53
|
-
const
|
|
76
|
+
const wrap = page.locator('#events')
|
|
77
|
+
const treeMenu = wrap.locator('.tiny-tree-menu')
|
|
78
|
+
const treeNode = treeMenu.locator('.tiny-tree-node__wrapper > .tiny-tree-node')
|
|
79
|
+
const treeNodeContent = treeNode.locator('> .tiny-tree-node__content')
|
|
80
|
+
const modal = page.locator('.tiny-modal')
|
|
81
|
+
const checkBox = treeNodeContent.filter({ hasText: /^首页$/ }).locator('.tiny-checkbox')
|
|
54
82
|
|
|
55
83
|
// 选中节点
|
|
56
84
|
await checkBox.click()
|
|
57
|
-
await expect(
|
|
85
|
+
await expect(modal.filter({ hasText: '节点-首页被选中了' })).toBeVisible()
|
|
58
86
|
|
|
59
87
|
// 取消选中
|
|
60
88
|
await checkBox.click()
|
|
61
|
-
await expect(
|
|
89
|
+
await expect(modal.filter({ hasText: '节点-首页被取消了' })).toBeVisible()
|
|
62
90
|
})
|
|
@@ -4,7 +4,36 @@ test('点击文字展开菜单', async ({ page }) => {
|
|
|
4
4
|
page.on('pageerror', (exception) => expect(exception).toBeNull())
|
|
5
5
|
await page.goto('tree-menu#expand-on-click-node')
|
|
6
6
|
|
|
7
|
-
const
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
const wrap = page.locator('#expand-on-click-node')
|
|
8
|
+
const treeMenu = wrap.locator('.tiny-tree-menu').nth(0)
|
|
9
|
+
const treeNode = treeMenu.locator('.tiny-tree-node__wrapper > .tiny-tree-node')
|
|
10
|
+
const treeNodeContent = treeNode.locator('> .tiny-tree-node__content')
|
|
11
|
+
|
|
12
|
+
await treeNodeContent.filter({ hasText: /^指南$/ }).click()
|
|
13
|
+
await expect(treeNodeContent.filter({ hasText: /^后端适配器$/ })).toBeVisible()
|
|
14
|
+
})
|
|
15
|
+
|
|
16
|
+
test('点击展开按钮才可展开菜单', async ({ page }) => {
|
|
17
|
+
page.on('pageerror', (exception) => expect(exception).toBeNull())
|
|
18
|
+
await page.goto('tree-menu#expand-on-click-node')
|
|
19
|
+
|
|
20
|
+
const wrap = page.locator('#expand-on-click-node')
|
|
21
|
+
const treeMenu = wrap.locator('.tiny-tree-menu').nth(1)
|
|
22
|
+
const treeNode = treeMenu.locator('.tiny-tree-node__wrapper > .tiny-tree-node')
|
|
23
|
+
const treeNodeContent = treeNode.locator('> .tiny-tree-node__content')
|
|
24
|
+
|
|
25
|
+
// 点击非展开按钮位置,只高亮,不展开
|
|
26
|
+
await treeNodeContent.filter({ hasText: /^指南$/ }).click()
|
|
27
|
+
await expect(treeNodeContent.filter({ hasText: /^后端适配器$/ })).toBeHidden()
|
|
28
|
+
await expect(treeNode.filter({ hasText: /^指南/ })).toHaveClass(/is-current/)
|
|
29
|
+
await expect(treeNode.filter({ hasText: /^指南/ })).not.toHaveClass(/is-expanded/)
|
|
30
|
+
|
|
31
|
+
// 点击展开按钮,才展开
|
|
32
|
+
await treeNodeContent
|
|
33
|
+
.filter({ hasText: /^指南$/ })
|
|
34
|
+
.locator('.tree-node-icon')
|
|
35
|
+
.click()
|
|
36
|
+
await expect(treeNodeContent.filter({ hasText: /^后端适配器$/ })).toBeVisible()
|
|
37
|
+
await expect(treeNode.filter({ hasText: /^指南/ })).toHaveClass(/is-expanded/)
|
|
38
|
+
await expect(treeNode.filter({ hasText: /^指南/ })).toHaveClass(/is-current/)
|
|
10
39
|
})
|
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
import { test, expect } from '@playwright/test'
|
|
2
2
|
|
|
3
3
|
test('搜索规则配置 精确匹配', async ({ page }) => {
|
|
4
|
-
page.on('pageerror', (exception) => expect(exception).toBeNull())
|
|
5
4
|
await page.goto('tree-menu#filter-node-method')
|
|
6
5
|
|
|
7
|
-
const
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
6
|
+
const wrap = page.locator('#filter-node-method')
|
|
7
|
+
const treeMenu = wrap.locator('.tiny-tree-menu')
|
|
8
|
+
const treeNode = treeMenu.locator('.tiny-tree-node__wrapper > .tiny-tree-node')
|
|
9
|
+
const treeNodeContent = treeNode.locator('> .tiny-tree-node__content')
|
|
10
|
+
|
|
11
|
+
await treeMenu.locator('.tiny-input__inner').fill('组件')
|
|
12
|
+
await expect(treeNodeContent.filter({ hasText: /^组件$/ })).toBeVisible()
|
|
13
|
+
await expect(treeNodeContent.filter({ hasText: /^引入组件$/ })).not.toBeVisible()
|
|
14
|
+
await expect(treeNodeContent.filter({ hasText: /^表单组件$/ })).not.toBeVisible()
|
|
12
15
|
})
|
|
@@ -2,10 +2,15 @@ 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('tree-menu#
|
|
5
|
+
await page.goto('tree-menu#indent')
|
|
6
|
+
|
|
7
|
+
const wrap = page.locator('#indent')
|
|
8
|
+
const treeMenu = wrap.locator('.tiny-tree-menu')
|
|
9
|
+
const treeNode = treeMenu.locator('.tiny-tree-node__wrapper > .tiny-tree-node')
|
|
10
|
+
const treeNodeContent = treeNode.locator('> .tiny-tree-node__content')
|
|
11
|
+
const node = treeNodeContent.filter({ hasText: /^指南$/ })
|
|
12
|
+
const childNode = treeNodeContent.filter({ hasText: /^引入组件$/ })
|
|
6
13
|
|
|
7
|
-
const node = page.locator('#preview .tiny-tree-menu').getByText('指南', { exact: true })
|
|
8
|
-
const childNode = page.locator('#preview .tiny-tree-menu').getByRole('treeitem', { name: '引入组件' }).first()
|
|
9
14
|
await node.click()
|
|
10
|
-
await expect(childNode.locator('.tiny-tree-node__content')).toHaveCSS('
|
|
15
|
+
await expect(childNode.locator('.tiny-tree-node__content-indent')).toHaveCSS('width', '50px')
|
|
11
16
|
})
|
|
@@ -4,10 +4,14 @@ test('懒加载', async ({ page }) => {
|
|
|
4
4
|
page.on('pageerror', (exception) => expect(exception).toBeNull())
|
|
5
5
|
await page.goto('tree-menu#lazy-load')
|
|
6
6
|
|
|
7
|
-
const
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
const wrap = page.locator('#lazy-load')
|
|
8
|
+
const treeMenu = wrap.locator('.tiny-tree-menu')
|
|
9
|
+
const treeNode = treeMenu.locator('.tiny-tree-node__wrapper > .tiny-tree-node')
|
|
10
|
+
const treeNodeContent = treeNode.locator('> .tiny-tree-node__content')
|
|
11
|
+
|
|
12
|
+
await treeNodeContent.filter({ hasText: /^表单组件$/ }).click()
|
|
13
|
+
await expect(treeNodeContent.filter({ hasText: /^表单组件1$/ })).not.toBeVisible()
|
|
10
14
|
// 等到异步加载完成
|
|
11
15
|
await page.waitForTimeout(600)
|
|
12
|
-
await expect(
|
|
16
|
+
await expect(treeNodeContent.filter({ hasText: /^表单组件1$/ })).toBeVisible()
|
|
13
17
|
})
|
|
@@ -4,8 +4,8 @@ test('菜单可折叠', async ({ page }) => {
|
|
|
4
4
|
page.on('pageerror', (exception) => expect(exception).toBeNull())
|
|
5
5
|
await page.goto('tree-menu#menu-collapsible')
|
|
6
6
|
|
|
7
|
-
const
|
|
8
|
-
const treeMenu =
|
|
7
|
+
const wrap = page.locator('#menu-collapsible')
|
|
8
|
+
const treeMenu = wrap.locator('.tiny-tree-menu')
|
|
9
9
|
const toggleBtn = treeMenu.locator('.tiny-tree-menu__toggle-button')
|
|
10
10
|
|
|
11
11
|
await expect(toggleBtn).toBeVisible()
|
|
@@ -13,4 +13,7 @@ test('菜单可折叠', async ({ page }) => {
|
|
|
13
13
|
await toggleBtn.click()
|
|
14
14
|
await expect(treeMenu).toHaveClass(/is-collapsed/)
|
|
15
15
|
await expect(treeMenu).toHaveCSS('width', '0px')
|
|
16
|
+
await toggleBtn.click()
|
|
17
|
+
await expect(treeMenu).not.toHaveClass(/is-collapsed/)
|
|
18
|
+
await expect(treeMenu).toHaveCSS('width', '270px')
|
|
16
19
|
})
|
|
@@ -4,65 +4,103 @@ test('节点可勾选', async ({ page }) => {
|
|
|
4
4
|
page.on('pageerror', (exception) => expect(exception).toBeNull())
|
|
5
5
|
await page.goto('tree-menu#show-checkbox')
|
|
6
6
|
|
|
7
|
-
const
|
|
8
|
-
const
|
|
7
|
+
const wrap = page.locator('#show-checkbox')
|
|
8
|
+
const treeMenu = wrap.locator('.tiny-tree-menu').nth(0)
|
|
9
|
+
const treeNode = treeMenu.locator('.tiny-tree-node__wrapper > .tiny-tree-node')
|
|
10
|
+
const treeNodeContent = treeNode.locator('> .tiny-tree-node__content')
|
|
11
|
+
const node = treeNodeContent.filter({ hasText: /^首页$/ })
|
|
9
12
|
const selectedClass = /is-checked/
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
await expect(node
|
|
13
|
-
await expect(
|
|
13
|
+
|
|
14
|
+
// 可勾选节点显示复选框且默认选中
|
|
15
|
+
await expect(node.locator('.tiny-checkbox')).toBeVisible()
|
|
16
|
+
await expect(treeNode.filter({ hasText: /^首页$/ })).toHaveClass(selectedClass)
|
|
17
|
+
await expect(node.locator('.tiny-checkbox')).toHaveClass(selectedClass)
|
|
18
|
+
await node.click()
|
|
19
|
+
await expect(treeNode.filter({ hasText: /^首页$/ })).toHaveClass(/is-current/)
|
|
14
20
|
|
|
15
21
|
// 父级选中, 子孙节点同时都选中
|
|
16
|
-
await
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
)
|
|
21
|
-
await expect(
|
|
22
|
-
|
|
23
|
-
)
|
|
24
|
-
|
|
25
|
-
await
|
|
26
|
-
|
|
27
|
-
).toHaveClass(selectedClass)
|
|
22
|
+
await treeNodeContent
|
|
23
|
+
.filter({ hasText: /^指南$/ })
|
|
24
|
+
.locator('.tiny-checkbox')
|
|
25
|
+
.click()
|
|
26
|
+
await treeNodeContent.filter({ hasText: /^指南$/ }).click()
|
|
27
|
+
await expect(treeNodeContent.filter({ hasText: /^指南$/ }).locator('.tiny-checkbox')).toHaveClass(selectedClass)
|
|
28
|
+
await expect(treeNodeContent.filter({ hasText: /^引入组件$/ }).locator('.tiny-checkbox')).toHaveClass(selectedClass)
|
|
29
|
+
await expect(treeNodeContent.filter({ hasText: /^后端适配器$/ }).locator('.tiny-checkbox')).toHaveClass(selectedClass)
|
|
30
|
+
|
|
31
|
+
await treeNodeContent.filter({ hasText: /^引入组件$/ }).click()
|
|
32
|
+
await expect(treeNodeContent.filter({ hasText: /^按需引入$/ }).locator('.tiny-checkbox')).toHaveClass(selectedClass)
|
|
33
|
+
await expect(treeNodeContent.filter({ hasText: /^完整引入$/ }).locator('.tiny-checkbox')).toHaveClass(selectedClass)
|
|
28
34
|
|
|
29
35
|
// 子节点取消勾选, 祖先节点改变勾选状态
|
|
30
|
-
await
|
|
36
|
+
await treeNodeContent
|
|
37
|
+
.filter({ hasText: /^完整引入$/ })
|
|
38
|
+
.locator('.tiny-checkbox')
|
|
39
|
+
.click()
|
|
40
|
+
await expect(
|
|
41
|
+
treeNodeContent
|
|
42
|
+
.filter({ hasText: /^引入组件$/ })
|
|
43
|
+
.locator('.tiny-checkbox__input')
|
|
44
|
+
.first()
|
|
45
|
+
).toHaveClass(/is-indeterminate/)
|
|
31
46
|
await expect(
|
|
32
|
-
|
|
47
|
+
treeNodeContent
|
|
48
|
+
.filter({ hasText: /^指南$/ })
|
|
49
|
+
.locator('.tiny-checkbox__input')
|
|
50
|
+
.first()
|
|
33
51
|
).toHaveClass(/is-indeterminate/)
|
|
34
|
-
await
|
|
52
|
+
await treeNodeContent
|
|
53
|
+
.filter({ hasText: /^按需引入$/ })
|
|
54
|
+
.locator('.tiny-checkbox')
|
|
55
|
+
.click()
|
|
56
|
+
await expect(treeNodeContent.filter({ hasText: /^引入组件$/ }).locator('.tiny-checkbox__input')).not.toHaveClass(
|
|
35
57
|
/is-indeterminate/
|
|
36
58
|
)
|
|
37
|
-
await
|
|
38
|
-
await expect(
|
|
39
|
-
treeMenu.getByRole('treeitem', { name: '引入组件' }).first().locator('.tiny-checkbox__input').first()
|
|
40
|
-
).not.toHaveClass(/is-indeterminate/)
|
|
59
|
+
await expect(treeNode.filter({ hasText: /^引入组件/ })).not.toHaveClass(selectedClass)
|
|
60
|
+
await expect(treeNode.filter({ hasText: /^按需引入$/ })).toHaveClass(/is-current/)
|
|
41
61
|
})
|
|
42
62
|
|
|
43
|
-
|
|
44
63
|
test('父子级不相关联', async ({ page }) => {
|
|
45
64
|
page.on('pageerror', (exception) => expect(exception).toBeNull())
|
|
46
|
-
await page.goto('tree-menu#
|
|
65
|
+
await page.goto('tree-menu#show-checkbox')
|
|
47
66
|
|
|
48
|
-
const
|
|
49
|
-
const
|
|
67
|
+
const wrap = page.locator('#show-checkbox')
|
|
68
|
+
const treeMenu = wrap.locator('.tiny-tree-menu').nth(1)
|
|
69
|
+
const treeNode = treeMenu.locator('.tiny-tree-node__wrapper > .tiny-tree-node')
|
|
70
|
+
const treeNodeContent = treeNode.locator('> .tiny-tree-node__content')
|
|
50
71
|
|
|
51
72
|
// 父节点勾选不会改变子节点
|
|
52
|
-
await
|
|
53
|
-
|
|
54
|
-
|
|
73
|
+
await treeNodeContent
|
|
74
|
+
.filter({ hasText: /^指南$/ })
|
|
75
|
+
.locator('.tiny-checkbox')
|
|
76
|
+
.click()
|
|
77
|
+
await expect(treeNode.filter({ hasText: /^指南/ })).toHaveClass(/is-current is-checked/)
|
|
78
|
+
await treeNodeContent.filter({ hasText: /^指南$/ }).click()
|
|
79
|
+
await expect(treeNodeContent.filter({ hasText: /^引入组件$/ }).locator('.tiny-checkbox')).not.toHaveClass(
|
|
80
|
+
/is-checked/
|
|
55
81
|
)
|
|
56
|
-
await expect(
|
|
57
|
-
|
|
82
|
+
await expect(treeNodeContent.filter({ hasText: /^构建部署$/ }).locator('.tiny-checkbox')).not.toHaveClass(
|
|
83
|
+
/is-checked/
|
|
58
84
|
)
|
|
59
85
|
|
|
60
86
|
// 子节点勾选不改变父节点
|
|
61
|
-
await
|
|
62
|
-
await
|
|
63
|
-
await
|
|
64
|
-
await expect(
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
87
|
+
await treeNodeContent.filter({ hasText: /^引入组件$/ }).click()
|
|
88
|
+
await expect(treeNode.filter({ hasText: /^引入组件/ })).toHaveClass(/is-current is-focusable is-expanded/)
|
|
89
|
+
await expect(treeNode.filter({ hasText: /^引入组件/ })).not.toHaveClass(/is-checked/)
|
|
90
|
+
await expect(treeNodeContent.filter({ hasText: /^引入组件$/ }).locator('.tiny-checkbox')).not.toHaveClass(
|
|
91
|
+
/is-checked/
|
|
92
|
+
)
|
|
93
|
+
await treeNodeContent
|
|
94
|
+
.filter({ hasText: /^按需引入$/ })
|
|
95
|
+
.locator('.tiny-checkbox')
|
|
96
|
+
.click()
|
|
97
|
+
await treeNodeContent
|
|
98
|
+
.filter({ hasText: /^完整引入$/ })
|
|
99
|
+
.locator('.tiny-checkbox')
|
|
100
|
+
.click()
|
|
101
|
+
await expect(treeNodeContent.filter({ hasText: /^按需引入$/ }).locator('.tiny-checkbox')).toHaveClass(/is-checked/)
|
|
102
|
+
await expect(treeNodeContent.filter({ hasText: /^完整引入$/ }).locator('.tiny-checkbox')).toHaveClass(/is-checked/)
|
|
103
|
+
await expect(treeNodeContent.filter({ hasText: /^引入组件$/ }).locator('.tiny-checkbox')).not.toHaveClass(
|
|
104
|
+
/is-checked/
|
|
105
|
+
)
|
|
68
106
|
})
|