From ae97ad85e083d491074fe5eb7f05df2ffa9948b4 Mon Sep 17 00:00:00 2001 From: zzcr <894103554@qq.com> Date: Sat, 10 Jun 2023 00:54:00 -0700 Subject: [PATCH] =?UTF-8?q?feat(TinyVue):=20=E5=90=8C=E6=AD=A5=E5=86=85?= =?UTF-8?q?=E9=83=A8=E4=BB=A3=E7=A0=81=EF=BC=8C=E8=A7=A3=E5=86=B3=E8=8B=A5?= =?UTF-8?q?=E5=B9=B2bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .eslintrc.js | 13 +- .gitignore | 4 - README.md | 2 +- README.zh-CN.md | 2 +- examples/docs/newsrc/App.vue | 6 +- examples/docs/newsrc/mobile-first.vue | 67 +- examples/docs/newsrc/mobile.vue | 59 +- examples/docs/newsrc/pc.vue | 79 +- examples/docs/newsrc/resourceMobile.js | 8 + examples/docs/newsrc/resourceMobileFirst.js | 8 + examples/docs/newsrc/style.css | 20 + examples/docs/package.json | 1 + .../action-sheet/webdoc/action-sheet.cn.md | 9 + .../action-sheet/webdoc/action-sheet.en.md | 9 + .../app/action-sheet/webdoc/action-sheet.js | 82 ++ .../mobile-first/app/alert/webdoc/alert.js | 13 + .../mobile-first/app/badge/webdoc/badge.cn.md | 9 + .../mobile-first/app/badge/webdoc/badge.en.md | 9 + .../mobile-first/app/badge/webdoc/badge.js | 127 ++ .../button-group/webdoc/button-group.cn.md | 9 + .../button-group/webdoc/button-group.en.md | 9 + .../app/button-group/webdoc/button-group.js | 58 + .../app/calendar-bar/webdoc/calendar-bar.js | 2 +- .../mobile-first/app/card/webdoc/card.cn.md | 11 + .../mobile-first/app/card/webdoc/card.en.md | 11 + .../mobile-first/app/card/webdoc/card.js | 153 +++ .../app/carousel/webdoc/carousel.cn.md | 11 + .../app/carousel/webdoc/carousel.en.md | 11 + .../app/carousel/webdoc/carousel.js | 167 +++ .../webdoc/cascader-select.cn.md | 9 + .../webdoc/cascader-select.en.md | 9 + .../cascader-select/webdoc/cascader-select.js | 94 ++ .../app/checkbox/webdoc/checkbox.cn.md | 9 + .../app/checkbox/webdoc/checkbox.en.md | 9 + .../app/checkbox/webdoc/checkbox.js | 120 ++ .../app/collapse/webdoc/collapse.cn.md | 9 + .../app/collapse/webdoc/collapse.en.md | 9 + .../app/collapse/webdoc/collapse.js | 154 +++ .../app/column-list-item/show-radio.vue | 51 + .../webdoc/column-list-item.cn.md | 8 + .../webdoc/column-list-item.en.md | 8 + .../webdoc/column-list-item.js | 130 ++ .../webdoc/date-picker-mobile.cn.md | 9 + .../webdoc/date-picker-mobile.en.md | 9 + .../webdoc/date-picker-mobile.js | 56 + .../app/drawer/webdoc/drawer.cn.md | 9 + .../app/drawer/webdoc/drawer.en.md | 9 + .../mobile-first/app/drawer/webdoc/drawer.js | 117 ++ .../app/dropdown/webdoc/dropdown.cn.md | 9 + .../app/dropdown/webdoc/dropdown.en.md | 9 + .../app/dropdown/webdoc/dropdown.js | 207 +++ .../app/exception/webdoc/exception.cn.md | 9 + .../app/exception/webdoc/exception.en.md | 9 + .../app/exception/webdoc/exception.js | 69 + .../app/file-upload/webdoc/file-upload.cn.md | 9 + .../app/file-upload/webdoc/file-upload.en.md | 9 + .../app/file-upload/webdoc/file-upload.js | 331 +++++ .../app/filter-bar/webdoc/filter-bar.cn.md | 9 + .../app/filter-bar/webdoc/filter-bar.en.md | 9 + .../app/filter-bar/webdoc/filter-bar.js | 43 + .../app/filter/webdoc/filter.cn.md | 9 + .../app/filter/webdoc/filter.en.md | 9 + .../mobile-first/app/filter/webdoc/filter.js | 58 + .../app/flowchart/basic-usage.vue | 9 +- .../app/flowchart/dot-horizon.vue | 124 ++ .../app/flowchart/dot-vertical.vue | 226 ++++ .../app/flowchart/holistic-fork.vue | 357 ++++++ .../mobile-first/app/flowchart/holistic.vue | 186 +++ .../mobile-first/app/flowchart/horizon.vue | 9 +- .../app/flowchart/webdoc/flowchart.cn.md | 16 + .../app/flowchart/webdoc/flowchart.en.md | 16 + .../app/flowchart/webdoc/flowchart.js | 79 ++ .../app/form/no-validate-to-add.vue | 1 - .../mobile-first/app/form/webdoc/form.cn.md | 9 + .../mobile-first/app/form/webdoc/form.en.md | 9 + .../mobile-first/app/form/webdoc/form.js | 210 +++ .../mobile-first/app/grid/basic-usage.vue | 179 +++ .../mobile-first/app/grid/webdoc/grid.cn.md | 9 + .../mobile-first/app/grid/webdoc/grid.en.md | 9 + .../mobile-first/app/grid/webdoc/grid.js | 43 + .../mobile-first/app/image/webdoc/image.cn.md | 9 + .../mobile-first/app/image/webdoc/image.en.md | 9 + .../mobile-first/app/image/webdoc/image.js | 57 + .../mobile-first/app/input/webdoc/input.cn.md | 9 + .../mobile-first/app/input/webdoc/input.en.md | 9 + .../mobile-first/app/input/webdoc/input.js | 471 +++++++ .../app/loading/webdoc/loading.cn.md | 9 + .../app/loading/webdoc/loading.en.md | 9 + .../app/loading/webdoc/loading.js | 118 ++ .../app/message/webdoc/message.cn.md | 9 + .../app/message/webdoc/message.en.md | 9 + .../app/message/webdoc/message.js | 56 + .../mobile-first/app/modal/webdoc/modal.cn.md | 9 + .../mobile-first/app/modal/webdoc/modal.en.md | 9 + .../mobile-first/app/modal/webdoc/modal.js | 334 +++++ .../app/numeric/webdoc/numeric.cn.md | 9 + .../app/numeric/webdoc/numeric.en.md | 9 + .../app/numeric/webdoc/numeric.js | 117 ++ .../mobile-first/app/pager/webdoc/pager.cn.md | 9 + .../mobile-first/app/pager/webdoc/pager.en.md | 9 + .../mobile-first/app/pager/webdoc/pager.js | 58 + .../app/popconfirm/webdoc/popconfirm.cn.md | 9 + .../app/popconfirm/webdoc/popconfirm.en.md | 9 + .../app/popconfirm/webdoc/popconfirm.js | 19 + .../app/popover/webdoc/popover.cn.md | 9 + .../app/popover/webdoc/popover.en.md | 9 + .../app/popover/webdoc/popover.js | 203 +++ .../app/progress/webdoc/progress.cn.md | 9 + .../app/progress/webdoc/progress.en.md | 9 + .../app/progress/webdoc/progress.js | 129 ++ .../app/radio-block/webdoc/radio-block.cn.md | 9 + .../app/radio-block/webdoc/radio-block.en.md | 9 + .../app/radio-block/webdoc/radio-block.js | 58 + .../mobile-first/app/radio/webdoc/radio.cn.md | 9 + .../mobile-first/app/radio/webdoc/radio.en.md | 9 + .../mobile-first/app/radio/webdoc/radio.js | 107 ++ .../mobile-first/app/rate/webdoc/rate.cn.md | 9 + .../mobile-first/app/rate/webdoc/rate.en.md | 9 + .../mobile-first/app/rate/webdoc/rate.js | 225 ++++ .../app/record/webdoc/record.cn.md | 9 + .../app/record/webdoc/record.en.md | 9 + .../mobile-first/app/record/webdoc/record.js | 19 + .../app/scrollbar/webdoc/scrollbar.cn.md | 9 + .../app/scrollbar/webdoc/scrollbar.en.md | 9 + .../app/scrollbar/webdoc/scrollbar.js | 31 + .../app/search/webdoc/search.cn.md | 9 + .../app/search/webdoc/search.en.md | 9 + .../mobile-first/app/search/webdoc/search.js | 176 +++ .../select-mobile/webdoc/select-mobile.cn.md | 9 + .../select-mobile/webdoc/select-mobile.en.md | 9 + .../app/select-mobile/webdoc/select-mobile.js | 45 + .../app/select-view/webdoc/select-view.cn.md | 9 + .../app/select-view/webdoc/select-view.en.md | 9 + .../app/select-view/webdoc/select-view.js | 83 ++ .../selected-box/webdoc/selected-box.cn.md | 9 + .../selected-box/webdoc/selected-box.en.md | 9 + .../app/selected-box/webdoc/selected-box.js | 58 + .../app/slider/webdoc/slider.cn.md | 9 + .../app/slider/webdoc/slider.en.md | 9 + .../mobile-first/app/slider/webdoc/slider.js | 192 +++ .../webdoc/standard-list-item.cn.md | 9 + .../webdoc/standard-list-item.en.md | 9 + .../webdoc/standard-list-item.js | 81 ++ .../mobile-first/app/steps/webdoc/steps.cn.md | 17 + .../mobile-first/app/steps/webdoc/steps.en.md | 17 + .../mobile-first/app/steps/webdoc/steps.js | 132 ++ .../app/switch/webdoc/switch.cn.md | 9 + .../app/switch/webdoc/switch.en.md | 9 + .../mobile-first/app/switch/webdoc/switch.js | 106 ++ .../mobile-first/app/tabs/webdoc/tabs.cn.md | 9 + .../mobile-first/app/tabs/webdoc/tabs.en.md | 9 + .../mobile-first/app/tabs/webdoc/tabs.js | 204 +++ .../app/tag-group/webdoc/tag-group.cn.md | 9 + .../app/tag-group/webdoc/tag-group.en.md | 9 + .../app/tag-group/webdoc/tag-group.js | 70 + .../mobile-first/app/tag/webdoc/tag.cn.md | 9 + .../mobile-first/app/tag/webdoc/tag.en.md | 9 + .../mobile-first/app/tag/webdoc/tag.js | 153 +++ .../app/time-line/webdoc/time-line.cn.md | 9 + .../app/time-line/webdoc/time-line.en.md | 9 + .../app/time-line/webdoc/time-line.js | 93 ++ .../webdoc/time-picker-mobile.cn.md | 9 + .../webdoc/time-picker-mobile.en.md | 9 + .../webdoc/time-picker-mobile.js | 19 + .../app/tooltip/webdoc/tooltip.cn.md | 9 + .../app/tooltip/webdoc/tooltip.en.md | 9 + .../app/tooltip/webdoc/tooltip.js | 205 +++ .../app/user-head/webdoc/user-head.cn.md | 9 + .../app/user-head/webdoc/user-head.en.md | 9 + .../app/user-head/webdoc/user-head.js | 57 + .../docs/resources/pc/api/zh-CN/transfer.json | 10 +- .../resources/pc/api/zh-CN/tree-menu.json | 2 +- .../docs/resources/pc/api/zh-CN/tree.json | 26 +- .../pc/demo-config/en-US/action-menu.json | 8 + .../resources/pc/demo-config/en-US/alert.json | 2 +- .../resources/pc/demo-config/en-US/badge.json | 16 + .../pc/demo-config/en-US/country.json | 10 +- .../pc/demo-config/en-US/dropdown.json | 16 + .../pc/demo-config/en-US/ip-address.json | 10 +- .../resources/pc/demo-config/en-US/modal.json | 4 +- .../pc/demo-config/en-US/popover.json | 2 +- .../pc/demo-config/en-US/select.json | 8 + .../pc/demo-config/en-US/time-picker.json | 14 +- .../pc/demo-config/en-US/transfer.json | 2 +- .../pc/demo-config/zh-CN/action-menu.json | 8 + .../resources/pc/demo-config/zh-CN/alert.json | 2 +- .../resources/pc/demo-config/zh-CN/badge.json | 83 +- .../pc/demo-config/zh-CN/breadcrumb.json | 35 +- .../pc/demo-config/zh-CN/bulletin-board.json | 67 +- .../pc/demo-config/zh-CN/collapse.json | 75 +- .../pc/demo-config/zh-CN/country.json | 27 +- .../pc/demo-config/zh-CN/dialog-box.json | 155 ++- .../pc/demo-config/zh-CN/dropdown.json | 16 + .../pc/demo-config/zh-CN/fullscreen.json | 19 +- .../pc/demo-config/zh-CN/ip-address.json | 99 +- .../resources/pc/demo-config/zh-CN/modal.json | 251 +++- .../pc/demo-config/zh-CN/numeric.json | 131 +- .../pc/demo-config/zh-CN/pop-upload.json | 123 +- .../pc/demo-config/zh-CN/popover.json | 2 +- .../pc/demo-config/zh-CN/select.json | 10 +- .../pc/demo-config/zh-CN/time-picker.json | 12 +- .../pc/demo-config/zh-CN/transfer.json | 163 ++- .../pc/demo-config/zh-CN/tree-menu.json | 74 +- .../pc/demo/action-menu/basic-usage.spec.ts | 23 + .../pc/demo/action-menu/basic-usage.vue | 3 +- .../pc/demo/action-menu/disabled.spec.ts | 13 + .../pc/demo/action-menu/item-click.spec.ts | 19 + .../pc/demo/action-menu/max-show-num.spec.ts | 17 + .../pc/demo/action-menu/more-click.spec.ts | 16 + .../pc/demo/action-menu/more-text.spec.ts | 12 + .../pc/demo/action-menu/popper-class.spec.ts | 14 + .../pc/demo/action-menu/slot-item.spec.ts | 14 + .../pc/demo/action-menu/spacing.spec.ts | 17 + .../pc/demo/action-menu/text-field.spec.ts | 13 + .../demo/action-menu/visible-change.spec.ts | 19 + .../docs/resources/pc/demo/alert/base.spec.ts | 24 + .../resources/pc/demo/alert/center.spec.ts | 11 + .../resources/pc/demo/alert/closable.spec.ts | 10 + .../pc/demo/alert/close-text.spec.ts | 18 + .../resources/pc/demo/alert/close.spec.ts | 14 + .../pc/demo/alert/custom-description.spec.ts | 11 + .../pc/demo/alert/feedback-of-result.spec.ts | 14 + .../docs/resources/pc/demo/alert/icon.spec.ts | 13 + .../resources/pc/demo/alert/show-icon.spec.ts | 9 + .../docs/resources/pc/demo/alert/size.spec.ts | 10 + .../pc/demo/alert/slot-default.spec.ts | 11 + .../resources/pc/demo/alert/title.spec.ts | 11 + .../docs/resources/pc/demo/alert/type.spec.ts | 69 + .../pc/demo/anchor/basic-usage.spec.ts | 22 + .../resources/pc/demo/anchor/is-affix.spec.ts | 18 + .../pc/demo/anchor/on-change.spec.ts | 18 + .../resources/pc/demo/anchor/on-change.vue | 4 +- .../pc/demo/anchor/set-container.spec.ts | 25 + .../pc/demo/anchor/set-container.vue | 10 +- .../pc/demo/area/custom-service.spec.ts | 42 + .../pc/demo/autocomplete/clearable.spec.js | 18 +- .../pc/demo/badge/badge-class.spec.ts | 11 + .../docs/resources/pc/demo/badge/base.spec.ts | 15 + .../pc/demo/badge/dynamic-hidden.spec.ts | 16 + .../resources/pc/demo/badge/is-dot.spec.ts | 13 + .../docs/resources/pc/demo/badge/max.spec.ts | 11 + .../resources/pc/demo/badge/offset.spec.ts | 12 + .../pc/demo/badge/slot-content.spec.ts | 11 + .../pc/demo/badge/slot-default.spec.ts | 12 + .../resources/pc/demo/badge/target.spec.ts | 18 + .../docs/resources/pc/demo/badge/type.spec.ts | 25 + .../resources/pc/demo/breadcrumb/base.spec.ts | 26 + .../resources/pc/demo/breadcrumb/base.vue | 2 +- .../pc/demo/breadcrumb/options.spec.ts | 26 + .../pc/demo/breadcrumb/separator.spec.ts | 13 + .../pc/demo/breadcrumb/slot-default.spec.ts | 10 + .../demo/bulletin-board/active-name.spec.ts | 18 + .../pc/demo/bulletin-board/base.spec.ts | 32 + .../pc/demo/bulletin-board/icon.spec.ts | 15 + .../pc/demo/bulletin-board/more-link.spec.ts | 11 + .../pc/demo/bulletin-board/route.spec.ts | 12 + .../pc/demo/bulletin-board/tab-title.spec.ts | 15 + .../pc/demo/bulletin-board/title.spec.ts | 11 + .../pc/demo/bulletin-board/url.spec.ts | 12 + .../pc/demo/button-group/base.spec.js | 14 +- .../pc/demo/button-group/border.spec.js | 40 + .../button-group-multiple.spec.js | 43 + .../pc/demo/button-group/data.spec.js | 21 +- .../pc/demo/button-group/disabled.spec.js | 18 +- .../pc/demo/button-group/event-edit.spec.js | 22 +- .../pc/demo/button-group/plain.spec.js | 26 +- .../pc/demo/button-group/show-edit.spec.js | 39 +- .../pc/demo/button-group/show-more.spec.js | 34 +- .../pc/demo/button-group/size.spec.js | 27 +- .../pc/demo/button-group/slot-default.spec.js | 21 +- .../button-group/text-value-field.spec.js | 20 +- .../pc/demo/button/autofocus.spec.js | 20 +- .../resources/pc/demo/button/base.spec.js | 41 +- .../resources/pc/demo/button/circle.spec.js | 19 +- .../resources/pc/demo/button/click.spec.js | 15 +- .../pc/demo/button/dynamic-disabled.spec.js | 27 +- .../resources/pc/demo/button/icon.spec.js | 27 +- .../resources/pc/demo/button/image.spec.js | 13 +- .../resources/pc/demo/button/loading.spec.js | 24 +- .../resources/pc/demo/button/plain.spec.js | 18 +- .../pc/demo/button/reset-time.spec.js | 35 +- .../resources/pc/demo/button/round.spec.js | 19 +- .../resources/pc/demo/button/size.spec.js | 20 +- .../docs/resources/pc/demo/button/size.vue | 15 +- .../resources/pc/demo/button/text.spec.js | 13 +- .../resources/pc/demo/button/type.spec.js | 25 +- .../pc/demo/carousel/autoplay.spec.ts | 28 + .../pc/demo/carousel/basic-usage.spec.ts | 28 + .../pc/demo/carousel/card-mode.spec.ts | 44 + .../carousel/carousel-arrow-always.spec.ts | 26 + .../carousel/carousel-arrow-hover.spec.ts | 27 + .../carousel/carousel-arrow-never.spec.ts | 22 + .../pc/demo/carousel/close-loop.spec.ts | 26 + .../demo/carousel/indicator-trigger.spec.ts | 18 + .../pc/demo/carousel/manual-play.spec.ts | 30 + .../pc/demo/carousel/play-interval.spec.ts | 20 + .../pc/demo/carousel/show-title.spec.ts | 12 + .../pc/demo/carousel/up-down-carousel.spec.ts | 18 + .../demo/cascader-panel/basic-usage.spec.ts | 13 + .../cascader-panel-props.spec.ts | 11 + .../pc/demo/cascader-panel/change.spec.ts | 9 + .../custom-option-content.spec.ts | 9 + .../demo/cascader-panel/expand-change.spec.ts | 8 + .../cascader/auto-load-checkStrictly.spec.ts | 23 + .../pc/demo/cascader/auto-load.spec.ts | 18 + .../pc/demo/cascader/basic-usage.spec.ts | 11 + .../cascader/check-strictly-multiple.spec.ts | 13 + .../pc/demo/cascader/check-strictly.spec.ts | 11 + .../pc/demo/cascader/clearable.spec.ts | 13 + .../pc/demo/cascader/collapse-tags.spec.ts | 8 + .../pc/demo/cascader/default-multiple.spec.ts | 10 + .../pc/demo/cascader/disabled-items.spec.ts | 11 + .../resources/pc/demo/cascader/events.spec.ts | 9 + .../pc/demo/cascader/expand-trigger.spec.ts | 10 + .../pc/demo/cascader/filter-method.spec.ts | 14 + .../demo/cascader/filterable-multiple.spec.ts | 20 + .../pc/demo/cascader/filterable.spec.ts | 16 + .../pc/demo/cascader/props-children.spec.ts | 8 + .../pc/demo/cascader/show-all-levels.spec.ts | 10 + .../pc/demo/checkbox/basic-usage.spec.ts | 11 + .../pc/demo/checkbox/button-check-box.spec.ts | 12 + .../checkbox/checkbox-button-multiple.spec.ts | 10 + .../pc/demo/checkbox/checkbox-button.spec.ts | 23 + .../pc/demo/checkbox/checkbox-events.spec.ts | 13 + .../pc/demo/checkbox/checkbox-group.spec.ts | 11 + .../pc/demo/checkbox/checkbox-slot.spec.ts | 10 + .../pc/demo/checkbox/checked.spec.ts | 11 + .../pc/demo/checkbox/content-overflow.spec.ts | 11 + .../checkbox/dynamic-create-checkbox.spec.ts | 11 + .../pc/demo/checkbox/group-options.spec.ts | 9 + .../pc/demo/checkbox/indeterminate.spec.ts | 25 + .../pc/demo/checkbox/min-max.spec.ts | 16 + .../resources/pc/demo/checkbox/text.spec.ts | 10 + .../demo/checkbox/vertical-checkbox.spec.ts | 25 + .../pc/demo/checkbox/with-border.spec.ts | 26 + .../pc/demo/collapse/accordion.spec.ts | 16 + .../pc/demo/collapse/basic-usage.spec.ts | 26 + .../pc/demo/collapse/block-close.spec.ts | 18 + .../pc/demo/collapse/collapse-events.spec.ts | 13 + .../collapse/custom-collapse-icon.spec.ts | 19 + .../collapse/custom-collapse-title.spec.ts | 10 + .../pc/demo/collapse/dynamic-disable.spec.ts | 15 + .../pc/demo/collapse/nested-form.spec.ts | 9 + .../pc/demo/collapse/nested-grid.spec.ts | 9 + .../pc/demo/company/basic-usage.spec.ts | 25 + .../pc/demo/company/custom-service.spec.ts | 33 + .../pc/demo/company/custom-service.vue | 51 +- .../pc/demo/country/custom-service.spec.js | 20 + .../pc/demo/country/custom-service.vue | 35 +- .../resources/pc/demo/country/fields.spec.js | 13 + .../credit-card-form/background-image.spec.ts | 10 + .../demo/credit-card-form/basic-usage.spec.ts | 13 + .../credit-card-form-events.spec.ts | 18 + .../pc/demo/currency/basic-usage.spec.ts | 9 + .../pc/demo/currency/custom-service.spec.ts | 11 + .../pc/demo/currency/custom-service.vue | 62 +- .../pc/demo/currency/disable-currency.spec.ts | 9 + .../resources/pc/demo/currency/size.spec.ts | 8 + .../pc/demo/dept/custom-service.spec.ts | 23 + .../resources/pc/demo/dept/custom-service.vue | 299 ++++- .../pc/demo/detail-page/basic-usage.spec.ts | 29 + .../demo/detail-page/custom-show-text.spec.ts | 18 + .../pc/demo/dialog-box/basic-usage.spec.ts | 52 + .../pc/demo/dialog-box/center.spec.ts | 21 + .../dialog-box/close-on-click-modal.spec.ts | 16 + .../dialog-box/close-on-press-escape.spec.ts | 16 + .../dialog-box/custom-dialog-content.spec.ts | 16 + .../dialog-box/custom-dialog-footer.spec.ts | 20 + .../dialog-box/custom-dialog-title.spec.ts | 18 + .../demo/dialog-box/dialog-top-height.spec.ts | 22 + .../pc/demo/dialog-box/dialog-top-height.vue | 4 +- .../pc/demo/dialog-box/dialog-width.spec.ts | 24 + .../pc/demo/dialog-box/draggable.spec.ts | 27 + .../pc/demo/dialog-box/draggable.vue | 14 +- .../pc/demo/dialog-box/form-in-dialog.spec.ts | 15 + .../pc/demo/dialog-box/fullscreen.spec.ts | 11 + .../dialog-box/hidden-close-buttons.spec.ts | 10 + .../pc/demo/dialog-box/hidden-header.spec.ts | 10 + .../pc/demo/dialog-box/lock-scroll.spec.ts | 20 + .../pc/demo/dialog-box/no-modal.spec.ts | 9 + .../demo/dialog-box/open-close-events.spec.ts | 14 + .../pc/demo/dialog-box/right-dialog.spec.ts | 12 + .../demo/dialog-box/secondary-dialog.spec.ts | 11 + .../pc/demo/drop-roles/custom-service.spec.ts | 26 + .../pc/demo/drop-roles/custom-service.vue | 7 +- .../pc/demo/drop-times/basic-usage.spec.ts | 16 + .../resources/pc/demo/drop-times/size.spec.ts | 9 + .../pc/demo/drop-times/start-end-step.spec.ts | 16 + .../pc/demo/dropdown/basic-usage.spec.ts | 28 + .../pc/demo/dropdown/disabled.spec.ts | 17 + .../resources/pc/demo/dropdown/events.spec.ts | 19 + .../pc/demo/dropdown/hide-on-click.spec.ts | 17 + .../pc/demo/dropdown/multi-level.spec.ts | 19 + .../pc/demo/dropdown/options.spec.ts | 22 + .../resources/pc/demo/dropdown/size.spec.ts | 18 + .../pc/demo/dropdown/slot-default.spec.ts | 11 + .../pc/demo/dropdown/split-button.spec.ts | 24 + .../resources/pc/demo/dropdown/title.spec.ts | 11 + .../pc/demo/dropdown/trigger.spec.ts | 19 + .../resources/pc/demo/espace/data.spec.ts | 15 + .../pc/demo/fall-menu/custom-menuitem.spec.ts | 20 + .../demo/fall-menu/custom-slider-icon.spec.ts | 28 + .../pc/demo/fall-menu/data-resource.spec.ts | 25 + .../pc/demo/file-upload/abort-quest.spec.ts | 21 + .../pc/demo/file-upload/abort-quest.vue | 6 +- .../file-upload/accept-file-image.spec.ts | 21 + .../pc/demo/file-upload/basic-usage.spec.ts | 17 + .../pc/demo/file-upload/clear-files.spec.ts | 13 + .../pc/demo/file-upload/custom-prefix.spec.ts | 27 + .../demo/file-upload/custom-trigger.spec.ts | 10 + .../file-upload/custom-upload-request.spec.ts | 18 + .../file-upload/custom-upload-tip.spec.ts | 10 + .../demo/file-upload/drag-select-file.spec.ts | 24 + .../pc/demo/file-upload/drag-upload.spec.ts | 20 + .../file-upload/file-picture-card.spec.ts | 35 + .../pc/demo/file-upload/http-request.spec.ts | 19 + .../pc/demo/file-upload/image-size.spec.ts | 16 + .../pc/demo/file-upload/manual-upload.spec.ts | 20 + .../demo/file-upload/max-file-count.spec.ts | 21 + .../pc/demo/file-upload/mini-mode.spec.ts | 10 + .../pc/demo/file-upload/multiple-file.spec.ts | 21 + .../pc/demo/file-upload/picture-card.spec.ts | 37 + .../pc/demo/file-upload/picture-list.spec.ts | 28 + .../file-upload/prevent-delete-file.spec.ts | 20 + .../file-upload/prevent-upload-file.spec.ts | 23 + .../pc/demo/file-upload/size.spec.ts | 13 + .../pc/demo/file-upload/upload-events.spec.ts | 29 + .../upload-file-list-thumb.spec.ts | 20 + .../file-upload/upload-file-list-thumb.vue | 3 +- .../demo/file-upload/upload-file-list.spec.ts | 22 + .../pc/demo/file-upload/upload-limit.spec.ts | 23 + .../demo/file-upload/upload-request.spec.ts | 29 + .../demo/file-upload/upload-user-head.spec.ts | 14 + .../pc/demo/file-upload/upload-user-head.vue | 8 +- .../resources/pc/demo/file-upload/测试.jpg | Bin 0 -> 10126 bytes .../resources/pc/demo/file-upload/测试.png | Bin 0 -> 4844 bytes .../resources/pc/demo/file-upload/测试.svg | Bin 0 -> 6046 bytes .../resources/pc/demo/floatbar/base.spec.ts | 11 + .../floatbar/custom-floatbar-item.spec.ts | 14 + .../pc/demo/floatbar/custom-style.spec.ts | 14 + .../pc/demo/floatbar/custom-style.vue | 8 +- .../floatbar/operation-floatbar-item.spec.ts | 15 + .../demo/form/custom-validation-rule.spec.js | 93 ++ .../pc/demo/form/custom-validation-rule.vue | 8 +- .../pc/demo/form/form-clear-validate.spec.js | 29 + .../pc/demo/form/form-clear-validate.vue | 8 +- .../pc/demo/form/form-disabled.spec.js | 73 ++ .../resources/pc/demo/form/form-disabled.vue | 19 +- .../pc/demo/form/form-in-row.spec.js | 31 + .../resources/pc/demo/form/form-in-row.vue | 4 +- .../pc/demo/form/form-row-col.spec.js | 23 + .../resources/pc/demo/form/form-row-col.vue | 4 +- .../pc/demo/form/form-validation.spec.js | 104 ++ .../pc/demo/form/form-validation.vue | 8 +- .../pc/demo/form/frequently-used-form.spec.js | 47 + .../pc/demo/form/frequently-used-form.vue | 11 +- .../resources/pc/demo/form/group-form.spec.js | 20 + .../resources/pc/demo/form/group-form.vue | 34 +- .../pc/demo/form/label-align.spec.js | 30 + .../resources/pc/demo/form/label-align.vue | 12 +- .../pc/demo/form/no-validate-to-add.spec.js | 28 + .../pc/demo/form/no-validate-to-add.vue | 8 +- .../pc/demo/form/novalid-tip.spec.js | 15 + .../resources/pc/demo/form/novalid-tip.vue | 4 +- .../docs/resources/pc/demo/form/size.spec.js | 22 + examples/docs/resources/pc/demo/form/size.vue | 11 +- .../resources/pc/demo/form/slot-label.spec.js | 15 + .../resources/pc/demo/form/slot-label.vue | 20 +- .../pc/demo/form/validate-type.spec.js | 21 + .../resources/pc/demo/form/validate-type.vue | 4 +- .../pc/demo/form/validation-position.spec.js | 22 + .../pc/demo/form/validation-position.vue | 4 +- .../pc/demo/fullscreen/example-api.spec.ts | 62 + .../demo/fullscreen/example-component.spec.ts | 62 + .../pc/demo/fullscreen/example-component.vue | 28 +- .../pc/demo/grid/align/column-align.spec.js | 10 + .../footer-align/center-footer-align.spec.js | 7 + .../footer-align/left-footer-align.spec.js | 7 + .../footer-align/right-footer-align.spec.js | 7 + .../grid-align/center-grid-align.spec.js | 7 + .../align/grid-align/left-grid-align.spec.js | 7 + .../align/grid-align/right-grid-align.spec.js | 7 + .../align/grid-align/right-grid-align.vue | 2 +- .../header-align/center-header-align.spec.js | 7 + .../header-align/left-header-align.spec.js | 7 + .../header-align/right-header-align.spec.js | 7 + .../pc/demo/grid/basicUsage-conf.spec.js | 7 + .../resources/pc/demo/grid/basicUsage.spec.js | 8 + .../pc/demo/grid/column/class-name.spec.js | 7 + .../demo/grid/custom-style/cell-style.spec.js | 15 + .../pc/demo/grid/custom-style/cell-style.vue | 2 - .../footer-style/footer-cell-style.spec.js | 7 + .../footer-style/footer-row-style.spec.js | 8 + .../header-style/header-cell-style.spec.js | 7 + .../header-style/header-row-style.spec.js | 7 + .../demo/grid/custom-style/row-style.spec.js | 8 + .../pc/demo/grid/custom/column-sort.spec.js | 2 +- .../pc/demo/grid/custom/resetResizable.vue | 6 +- .../pc/demo/grid/disable-radio.spec.js | 9 + .../pc/demo/grid/disable-selection.spec.js | 9 + .../pc/demo/grid/drag/column-drag.spec.js | 19 + .../pc/demo/grid/drag/row-drag-ctrl.spec.js | 19 + .../pc/demo/grid/drag/row-drag.spec.js | 19 + .../pc/demo/grid/edit/hasRowChange.spec.js | 19 + .../pc/demo/grid/edit/mutil-render.spec.js | 23 + .../pc/demo/grid/edit/revertData.spec.js | 24 + .../grid/event/cell-dblclick-event.spec.js | 2 +- .../grid/event/cell-mouseenter-event.spec.js | 2 +- .../grid/event/cell-mouseleave-event.spec.js | 4 +- .../grid/event/current-change-event.spec.js | 2 +- .../grid/event/edit-actived-event.spec.js | 2 +- .../demo/grid/event/edit-closed-event.spec.js | 2 +- .../grid/event/edit-disabled-event.spec.js | 2 +- .../demo/grid/event/grid-scroll-event.spec.js | 2 +- .../grid/event/table-data-association.spec.js | 2 +- .../demo/grid/event/valid-error-event.spec.js | 2 +- .../pc/demo/grid/faq/gridInDialogBox.spec.js | 4 +- .../resources/pc/demo/grid/faq/opSlot.spec.js | 4 +- .../pc/demo/grid/fixed/left-fixed.spec.js | 9 + .../grid/fixed/multi-column-fixed.spec.js | 8 + .../pc/demo/grid/fixed/right-fixed.spec.js | 7 + .../grid/footer/footer-class-name.spec.js | 7 + .../footer/footer-row-or-column-span.spec.js | 8 + .../footer/footer-summation-empty.spec.js | 9 + .../demo/grid/footer/footer-summation.spec.js | 7 + .../gridEdit/custom-editor-select.spec.js | 14 + .../gridEdit/custom-editor.spec.js | 15 + .../gridEdit/inner-editor.spec.js | 15 + .../popeditor-in-grid-remote-search.spec.js | 14 + .../gridEdit/popeditor-in-grid.spec.js | 14 + .../gridRenderer/custom-renderer.spec.js | 15 + .../gridRenderer/inner-renderer.spec.js | 8 + .../before-submit-validation.spec.js | 2 +- .../grid_Example/gridValid/custcomp.spec.js | 2 +- .../gridValid/editing-validation.spec.js | 2 +- .../gridValid/row-data-valid.spec.js | 3 +- .../gridValid/select-validation.spec.js | 2 +- .../validation-scroll-to-col.spec.js | 2 +- .../demo/grid/grid_Example/reverseRow.spec.js | 2 +- .../shortcutMenu/cell-menu.spec.js | 15 + .../shortcutMenu/footer-menu.spec.js | 10 + .../shortcutMenu/header-menu.spec.js | 10 + .../shortcutMenu/menu-permissions.spec.js | 10 + .../grid/header/custom-grid-header.spec.js | 9 + .../grid/header/header-class-name.spec.js | 7 + .../demo/grid/header/hide-grid-header.spec.js | 7 + .../pc/demo/grid/header/slot-header.spec.js | 9 + .../grid/highlight/highlight-cell.spec.js | 8 + .../highlight-current-column.spec.js | 10 + .../highlight/highlight-current-row.spec.js | 10 + .../highlight/highlight-hover-column.spec.js | 9 + .../highlight/highlight-hover-row.spec.js | 10 + .../pc/demo/grid/keyboard-config.spec.js | 2 +- .../demo/grid/large-data/load-column.spec.js | 8 + .../pc/demo/grid/large-data/scroll-to.spec.js | 10 + .../demo/grid/methods/set-active-cell.spec.js | 13 + .../grid/methods/set-all-selection.spec.js | 12 + .../demo/grid/methods/set-current-row.spec.js | 8 + .../demo/grid/methods/set-selection.spec.js | 9 + .../pc/demo/grid/methods/set-selection.vue | 17 +- .../pc/demo/grid/methods/sort.spec.js | 8 + .../grid/methods/toggle-all-selection.spec.js | 19 + .../grid/methods/toggle-row-selection.spec.js | 14 + .../pc/demo/grid/mouse-config.spec.js | 2 +- .../grid/news/async-colunm-render.spec.js | 8 + .../pc/demo/grid/news/auto-height.spec.js | 10 + .../pc/demo/grid/news/editor-events.spec.js | 14 + .../grid/pager/inner-default-pager.spec.js | 8 + .../pc/demo/grid/pager/inner-pager.spec.js | 8 + .../pc/demo/grid/pager/showSaveMsg.spec.js | 16 + .../pc/demo/grid/recalculate.spec.js | 11 + .../pc/demo/grid/row-grouping.spec.js | 8 + .../pc/demo/grid/rowGroupRender.spec.js | 7 + .../demo/grid/sort/combinations-sort.spec.js | 8 + .../pc/demo/grid/sort/custom-sort.spec.js | 8 + .../pc/demo/grid/sort/default-sort.spec.js | 11 + .../pc/demo/grid/sort/server-sort.spec.js | 8 + .../pc/demo/grid/span/column-span.spec.js | 10 + .../grid/span/row-span/row-span-easy.spec.js | 10 + .../demo/grid/span/row-span/row-span.spec.js | 11 + .../pc/demo/grid/stripe/stripe.spec.js | 7 + .../summary/configuration-summary.spec.js | 7 + .../demo/grid/summary/custom-summary.spec.js | 7 + .../adaptive-column-width.spec.js | 9 + .../adaptive-grid-off-width-height.spec.js | 11 + .../adaptive-grid-off-width-height.vue | 17 +- .../adaptive-un-column-width.spec.js | 9 + .../grid/tiny-first-menu/auto-load.spec.js | 10 + .../grid/tiny-first-menu/cell-editing.spec.js | 17 + .../grid/tiny-first-menu/clearData.spec.js | 12 + .../tiny-first-menu/clearRadioRow.spec.js | 18 + .../tiny-first-menu/clearSelection.spec.js | 24 + .../column-asyn-rendering.spec.js | 15 + .../tiny-first-menu/column-asyn-rendering.vue | 2 +- .../tiny-first-menu/column-min-width.spec.js | 12 + .../grid/tiny-first-menu/column-width.spec.js | 14 + .../demo/grid/tiny-first-menu/columns.spec.js | 12 + .../tiny-first-menu/copy-row-data.spec.js | 7 + .../tiny-first-menu/custom-editing.spec.js | 16 + .../custom-operation-column.spec.js | 16 + .../custom-serial-column.spec.js | 9 + .../tiny-first-menu/custom-toolbar.spec.js | 9 + .../default-serial-column.spec.js | 8 + .../editor-is-salid-always.spec.js | 13 + .../empty-data-default-tip.spec.js | 9 + .../tiny-first-menu/empty-data-tip.spec.js | 9 + .../fixed-column-width.spec.js | 8 + .../tiny-first-menu/fixed-grid-height.spec.js | 9 + .../grid/tiny-first-menu/format-value.spec.js | 13 + .../tiny-first-menu/full-data-loading.spec.js | 15 + .../tiny-first-menu/full-data-loading.vue | 1 + .../grid/tiny-first-menu/grid-border.spec.js | 8 + .../grid-full-screen-height.spec.js | 8 + .../tiny-first-menu/grid-full-screen.spec.js | 12 + .../grid/tiny-first-menu/grid-full-screen.vue | 7 +- .../grid-large-tree-data.spec.js | 13 + .../grid-loading-off-tip.spec.js | 8 + .../tiny-first-menu/grid-loading-tip.spec.js | 8 + .../tiny-first-menu/grid-size-mini.spec.js | 8 + .../tiny-first-menu/grid-size-small.spec.js | 8 + .../grid/tiny-first-menu/grid-size.spec.js | 8 + .../insert-delete-update.spec.js | 45 + .../max-min-grid-height.spec.js | 8 + .../tiny-first-menu/min-grid-height.spec.js | 8 + .../grid/tiny-first-menu/min-width.spec.js | 8 + .../grid/tiny-first-menu/radio-config.spec.js | 20 + .../grid/tiny-first-menu/refresh-grid.spec.js | 8 + .../tiny-first-menu/request-service.spec.js | 11 + .../resize-column-width.spec.js | 24 + .../grid/tiny-first-menu/row-editing.spec.js | 12 + .../demo/grid/tiny-first-menu/row-id.spec.js | 8 + .../pc/demo/grid/tiny-first-menu/row-id.vue | 31 +- .../grid/tiny-first-menu/save-data.spec.js | 16 + .../tiny-first-menu/scroll-paging.spec.js | 10 + .../grid/tiny-first-menu/start-index.spec.js | 8 + .../grid/tiny-first-menu/static-data.spec.js | 10 + .../tiny-first-menu/status-of-editing.spec.js | 15 + .../status-of-noediting.spec.js | 15 + .../trigger-mode-db-editing.spec.js | 16 + .../trigger-mode-for-editing.spec.js | 14 + .../trigger-mode-hm-editing.spec.js | 15 + .../tiny-first-menu/virtual-rolling.spec.js | 15 + .../grid/tiny-first-menu/virtual-rolling.vue | 17 +- .../pc/demo/grid/tip/cell-tip.spec.js | 14 + .../demo/grid/tip/column-header-tip.spec.js | 11 + .../demo/grid/toolbar/cancel-delete.spec.js | 14 + .../grid/toolbar/insert-remove-rows.spec.js | 8 + .../grid/toolbar/toolbar-op-config.spec.js | 8 + .../grid/tree-table/tree-grid-expand.spec.js | 2 +- .../tree-table/tree-grid-fixed-column.spec.js | 2 +- .../tree-grid-insert-delete-update.spec.js | 4 +- .../pc/demo/hrapprover/basic-usage.spec.ts | 13 + .../pc/demo/hrapprover/category-type.spec.ts | 13 + .../pc/demo/hrapprover/custom-service.spec.ts | 7 + .../pc/demo/hrapprover/custom-service.vue | 35 +- .../pc/demo/hrapprover/disabled.spec.ts | 8 + .../image/auto-fit-container-size.spec.ts | 16 + .../pc/demo/image/basic-usage.spec.ts | 11 + .../image/custom-load-failed-text.spec.ts | 10 + .../pc/demo/image/custom-placeholder.spec.ts | 11 + .../resources/pc/demo/image/lazy-load.spec.ts | 13 + .../pc/demo/image/load-error.spec.ts | 8 + .../pc/demo/image/load-event.spec.ts | 9 + .../pc/demo/image/preview-in-dialog.spec.ts | 9 + .../pc/demo/image/preview-src-list.spec.ts | 37 + .../pc/demo/image/preview-z-index.spec.ts | 9 + .../pc/demo/input/autocomplete.spec.ts | 8 + .../resources/pc/demo/input/autofocus.spec.ts | 8 + .../resources/pc/demo/input/autosize.spec.ts | 8 + .../pc/demo/input/basic-usage.spec.ts | 11 + .../resources/pc/demo/input/clearable.spec.ts | 14 + .../docs/resources/pc/demo/input/cols.spec.ts | 8 + .../resources/pc/demo/input/counter.spec.ts | 10 + .../pc/demo/input/event-blur.spec.ts | 10 + .../pc/demo/input/event-change.spec.ts | 11 + .../pc/demo/input/event-clear.spec.ts | 11 + .../pc/demo/input/event-focus.spec.ts | 10 + .../docs/resources/pc/demo/input/form.spec.ts | 8 + .../resources/pc/demo/input/label.spec.ts | 8 + .../docs/resources/pc/demo/input/max.spec.ts | 8 + .../resources/pc/demo/input/maxlength.spec.ts | 8 + .../pc/demo/input/method-addMemory.spec.ts | 18 + .../pc/demo/input/method-blur.spec.ts | 11 + .../pc/demo/input/method-focus.spec.ts | 9 + .../pc/demo/input/method-select.spec.ts | 12 + .../docs/resources/pc/demo/input/min.spec.ts | 8 + .../docs/resources/pc/demo/input/name.spec.ts | 10 + .../pc/demo/input/prefix-icon.spec.ts | 8 + .../resources/pc/demo/input/resize.spec.ts | 12 + .../docs/resources/pc/demo/input/rows.spec.ts | 8 + .../pc/demo/input/show-password.spec.ts | 14 + .../pc/demo/input/show-word-limit.spec.ts | 10 + .../docs/resources/pc/demo/input/size.spec.ts | 12 + .../pc/demo/input/slot-append.spec.ts | 8 + .../pc/demo/input/slot-prefix.spec.ts | 8 + .../pc/demo/input/slot-prepend.spec.ts | 8 + .../pc/demo/input/slot-suffix.spec.ts | 8 + .../docs/resources/pc/demo/input/step.spec.ts | 8 + .../pc/demo/input/suffix-icon.spec.ts | 8 + .../resources/pc/demo/input/tabindex.spec.ts | 21 + .../docs/resources/pc/demo/input/type.spec.ts | 24 + .../pc/demo/input/validate-event.spec.ts | 14 + .../resources/pc/demo/ip-address/blur.spec.ts | 27 + .../pc/demo/ip-address/change.spec.ts | 27 + .../pc/demo/ip-address/delimiter.spec.ts | 14 + .../pc/demo/ip-address/disabled.spec.ts | 16 + .../pc/demo/ip-address/focus.spec.ts | 23 + .../pc/demo/ip-address/input.spec.ts | 23 + .../pc/demo/ip-address/ipv4-type.spec.ts | 11 + .../pc/demo/ip-address/ipv6-type.spec.ts | 11 + .../pc/demo/ip-address/readonly.spec.ts | 24 + .../pc/demo/ip-address/select.spec.ts | 22 + .../resources/pc/demo/ip-address/size.spec.ts | 12 + .../pc/demo/ip-address/slots.spec.ts | 14 + .../pc/demo/layout/alignment.spec.ts | 13 + .../pc/demo/layout/basic-usage.spec.ts | 21 + .../resources/pc/demo/layout/gutter.spec.ts | 16 + .../resources/pc/demo/layout/offset.spec.ts | 9 + .../resources/pc/demo/layout/order.spec.ts | 13 + .../pc/demo/layout/responsive-layout.spec.ts | 23 + .../pc/demo/link-menu/custom-foot.spec.ts | 22 + .../pc/demo/link-menu/custom-icon.spec.ts | 30 + .../pc/demo/link-menu/data-resource.spec.ts | 90 ++ .../demo/link-menu/get-menu-data-sync.spec.ts | 41 + .../pc/demo/link-menu/menu-items.spec.ts | 51 + .../pc/demo/link/basic-usage.spec.ts | 10 + .../pc/demo/link/config-href.spec.ts | 10 + .../pc/demo/link/custom-icon.spec.ts | 15 + .../pc/demo/link/dynamic-disable.spec.ts | 31 + .../pc/demo/link/focus-no-underline.spec.ts | 13 + .../resources/pc/demo/link/link-style.spec.ts | 25 + .../pc/demo/loading/background.spec.ts | 8 + .../pc/demo/loading/basic-usage.spec.ts | 10 + .../resources/pc/demo/loading/body.spec.ts | 8 + .../pc/demo/loading/custom-class.spec.ts | 10 + .../pc/demo/loading/fullscreen.spec.ts | 14 + .../pc/demo/loading/loading-tip-text.spec.ts | 8 + .../resources/pc/demo/loading/size.spec.ts | 12 + .../resources/pc/demo/loading/spinner.spec.ts | 16 + .../resources/pc/demo/loading/target.spec.ts | 8 + .../pc/demo/milestone/basic-usage.spec.ts | 68 + .../pc/demo/milestone/custom-bottom.spec.ts | 15 + .../pc/demo/milestone/custom-flag.spec.ts | 15 + .../demo/milestone/custom-icon-slot.spec.ts | 15 + .../pc/demo/milestone/custom-top.spec.ts | 15 + .../demo/milestone/data-field-mapping.spec.ts | 22 + .../pc/demo/milestone/data-source.spec.ts | 14 + .../pc/demo/milestone/flag-before.spec.ts | 48 + .../pc/demo/milestone/line-style.spec.ts | 15 + .../demo/milestone/milestone-events.spec.ts | 15 + .../pc/demo/milestone/milestone-space.spec.ts | 12 + .../demo/milestone/milestones-status.spec.ts | 52 + .../pc/demo/milestone/milestones-status.vue | 2 +- .../pc/demo/milestone/show-number.spec.ts | 63 + .../pc/demo/milestone/solid-style.spec.ts | 59 + .../pc/demo/milestone/start-index.spec.ts | 14 + .../docs/resources/pc/demo/modal/base.spec.ts | 43 + .../docs/resources/pc/demo/modal/base.vue | 19 +- .../pc/demo/modal/cancel-event.spec.ts | 12 + .../pc/demo/modal/close-event.spec.ts | 13 + .../pc/demo/modal/confirm-event.spec.ts | 12 + .../resources/pc/demo/modal/duration.spec.ts | 25 + .../pc/demo/modal/esc-closable.spec.ts | 11 + .../pc/demo/modal/footer-slot.spec.ts | 11 + .../pc/demo/modal/fullscreen.spec.ts | 12 + .../docs/resources/pc/demo/modal/grid.spec.ts | 11 + .../pc/demo/modal/hide-event.spec.ts | 17 + .../docs/resources/pc/demo/modal/id.spec.ts | 11 + .../pc/demo/modal/is-form-reset.spec.ts | 17 + .../pc/demo/modal/lock-scroll.spec.ts | 17 + .../resources/pc/demo/modal/lock-scroll.vue | 3 +- .../resources/pc/demo/modal/lock-view.spec.ts | 27 + .../pc/demo/modal/mask-closable.spec.ts | 11 + .../resources/pc/demo/modal/message.spec.ts | 9 + .../pc/demo/modal/min-height.spec.ts | 21 + .../resources/pc/demo/modal/min-width.spec.ts | 20 + .../resources/pc/demo/modal/resize.spec.ts | 25 + .../pc/demo/modal/show-event.spec.ts | 11 + .../pc/demo/modal/showFooter.spec.ts | 10 + .../pc/demo/modal/showHeader.spec.ts | 10 + .../resources/pc/demo/modal/status.spec.ts | 35 + .../resources/pc/demo/modal/title.spec.ts | 10 + .../docs/resources/pc/demo/modal/top.spec.ts | 10 + .../docs/resources/pc/demo/modal/type.spec.ts | 22 + .../resources/pc/demo/modal/value.spec.ts | 23 + .../docs/resources/pc/demo/modal/value.vue | 7 +- .../resources/pc/demo/modal/zIndex.spec.ts | 10 + .../pc/demo/modal/zoom-event.spec.ts | 19 + .../pc/demo/nav-menu/basic-usage.spec.ts | 17 + .../demo/nav-menu/before-skip-prevent.spec.ts | 16 + .../pc/demo/nav-menu/before-skip-prevent.vue | 306 ++++- .../pc/demo/nav-menu/before-skip.spec.ts | 11 + .../pc/demo/nav-menu/custom-service.spec.ts | 12 + .../pc/demo/nav-menu/data-resource.spec.ts | 17 + .../pc/demo/nav-menu/overflow.spec.ts | 14 + .../pc/demo/nav-menu/slot-logo.spec.ts | 8 + .../pc/demo/nav-menu/slot-toolbar.spec.ts | 8 + .../pc/demo/notify/basic-usage.spec.ts | 15 + .../pc/demo/notify/beforeClose.spec.ts | 13 + .../pc/demo/notify/closeIcon.spec.ts | 12 + .../pc/demo/notify/debounceDelay.spec.ts | 16 + .../resources/pc/demo/notify/duration.spec.ts | 20 + .../resources/pc/demo/notify/message.spec.ts | 9 + .../resources/pc/demo/notify/onClose.spec.ts | 11 + .../resources/pc/demo/notify/position.spec.ts | 13 + .../pc/demo/notify/showClose.spec.ts | 9 + .../resources/pc/demo/notify/showIcon.spec.ts | 9 + .../pc/demo/notify/statusIcon.spec.ts | 9 + .../resources/pc/demo/notify/title.spec.ts | 9 + .../resources/pc/demo/notify/type.spec.ts | 21 + .../pc/demo/notify/verticalOffset.spec.ts | 10 + .../pc/demo/numeric/about-step.spec.ts | 18 + .../pc/demo/numeric/allow-empty.spec.ts | 13 + .../pc/demo/numeric/basic-usage.spec.ts | 22 + .../pc/demo/numeric/blur-event.spec.ts | 11 + ...alculate-according-to-num-of-goods.spec.ts | 13 + .../pc/demo/numeric/change-event.spec.ts | 10 + .../pc/demo/numeric/controls-position.spec.ts | 16 + .../pc/demo/numeric/controls.spec.ts | 29 + .../pc/demo/numeric/dynamic-disabled.spec.ts | 11 + .../pc/demo/numeric/focus-event.spec.ts | 10 + .../resources/pc/demo/numeric/max-min.spec.ts | 18 + .../pc/demo/numeric/mouse-wheel.spec.ts | 13 + .../pc/demo/numeric/numeric-size.spec.ts | 27 + .../pc/demo/numeric/precision.spec.ts | 22 + .../pc/demo/pager/basic-usage.spec.js | 54 +- .../pc/demo/pager/before-page-change.spec.js | 53 +- .../pc/demo/pager/current-page.spec.js | 33 +- .../pc/demo/pager/custom-layout.spec.js | 41 +- .../demo/pager/custom-next-prev-text.spec.js | 23 +- .../pc/demo/pager/hide-on-single-page.spec.js | 25 +- .../pc/demo/pager/page-append-to-body.spec.js | 21 +- .../pc/demo/pager/page-count.spec.js | 19 +- .../resources/pc/demo/pager/page-size.spec.js | 34 +- .../pc/demo/pager/pager-count.spec.js | 19 +- .../pc/demo/pager/pager-disabled.spec.js | 19 + .../pager/pager-events-current-change.spec.js | 23 +- .../demo/pager/pager-events-nextclick.spec.js | 27 +- .../pager/pager-events-prev-click.spec.js | 27 +- .../pc/demo/pager/pager-events.spec.js | 26 +- .../pc/demo/pager/pager-in-grid.spec.js | 28 +- .../pc/demo/pager/pager-mode-fixed.spec.js | 28 +- .../pc/demo/pager/pager-mode-number.spec.js | 24 +- .../pc/demo/pager/pager-mode-simple.spec.js | 37 +- .../pc/demo/pager/pager-mode.spec.js | 36 +- .../pc/demo/pager/pager-size.spec.js | 11 + .../pc/demo/pager/popper-class.spec.js | 21 +- .../pc/demo/pop-upload/basic-usage.spec.ts | 43 + .../pc/demo/pop-upload/before-upload.spec.ts | 25 + .../pop-upload/custom-request-headers.spec.ts | 25 + .../resources/pc/demo/pop-upload/data.spec.ts | 24 + .../pc/demo/pop-upload/file-limit.spec.ts | 32 + .../pc/demo/pop-upload/file-type.spec.ts | 28 + .../demo/pop-upload/fill-button-text.spec.ts | 41 + .../pc/demo/pop-upload/fill-button-text.vue | 5 +- .../pc/demo/pop-upload/http-request.spec.ts | 26 + .../pop-upload/max-upload-file-size.spec.ts | 24 + .../demo/pop-upload/max-upload-file-size.vue | 2 +- .../pop-upload/prevent-delete-file.spec.ts | 23 + .../resources/pc/demo/pop-upload/size.spec.ts | 14 + .../pc/demo/pop-upload/upload-name.spec.ts | 46 + .../pc/demo/pop-upload/upload-name.vue | 2 +- .../resources/pc/demo/pop-upload/测试.jpg | Bin 0 -> 10126 bytes .../resources/pc/demo/pop-upload/测试.png | Bin 0 -> 4844 bytes .../resources/pc/demo/pop-upload/测试.svg | Bin 0 -> 6046 bytes .../pc/demo/popover/arrow-offset.spec.js | 17 + .../pc/demo/popover/arrow-offset.vue | 18 +- .../pc/demo/popover/basic-usage.spec.js | 12 + .../pc/demo/popover/close-delay.spec.js | 16 + .../pc/demo/popover/custom-tip-text.spec.js | 17 + .../pc/demo/popover/custom-transition.spec.js | 17 + .../pc/demo/popover/dynamic-disable.spec.js | 18 + .../pc/demo/popover/frame-offset.spec.js | 15 + .../pc/demo/popover/frame-offset.vue | 14 +- .../pc/demo/popover/hidden-arrow.spec.js | 18 + .../pc/demo/popover/open-delay.spec.js | 15 + .../pc/demo/popover/popover-content.spec.js | 12 + .../pc/demo/popover/popover-events.spec.js | 19 + .../pc/demo/popover/popover-placement.spec.js | 43 + .../pc/demo/popover/popover-width.spec.js | 12 + .../pc/demo/popover/popper-class.spec.js | 21 + .../pc/demo/popover/popper-options.spec.js | 12 + .../pc/demo/popover/trigger-mode.spec.js | 31 + .../pc/demo/popover/trigger-mode.vue | 39 +- .../pc/demo/popover/trigger-reference.spec.js | 12 + .../pc/demo/progress/basic-usage.spec.ts | 20 + .../pc/demo/progress/custom-color.spec.ts | 21 + .../pc/demo/progress/custom-color.vue | 16 +- .../progress/dynamic-control-changes.spec.ts | 16 + .../pc/demo/progress/format-text.spec.ts | 20 + .../pc/demo/progress/progress-status.spec.ts | 20 + .../progress/progress-type-circle.spec.ts | 23 + .../progress/progress-type-dashboard.spec.ts | 14 + .../pc/demo/progress/progress-type.spec.ts | 16 + .../pc/demo/progress/progress-width.spec.ts | 14 + .../progress/text-inside-or-no-text.spec.ts | 16 + .../pc/demo/radio/active-color.spec.ts | 10 + .../pc/demo/radio/basic-usage.spec.ts | 11 + .../pc/demo/radio/dynamic-disable.spec.ts | 14 + .../pc/demo/radio/group-options.spec.ts | 15 + .../pc/demo/radio/radio-button.spec.ts | 12 + .../pc/demo/radio/radio-default.spec.ts | 10 + .../resources/pc/demo/radio/radio-default.vue | 7 +- .../pc/demo/radio/radio-events.spec.ts | 13 + .../pc/demo/radio/radio-size.spec.ts | 12 + .../pc/demo/radio/radio-text.spec.ts | 10 + .../pc/demo/radio/radio-value.spec.ts | 11 + .../resources/pc/demo/radio/vertical.spec.ts | 9 + .../pc/demo/radio/with-border.spec.ts | 12 + .../resources/pc/demo/rate/allow-half.spec.js | 17 + .../pc/demo/rate/basic-usage.spec.js | 60 + .../rate/custom-3-threshold-colors.spec.js | 33 + .../demo/rate/custom-3-threshold-icon.spec.js | 36 + .../rate/disabled-not-selected-class.spec.js | 28 + .../rate/disabled-not-selected-color.spec.js | 19 + .../pc/demo/rate/dynamic-disable.spec.js | 17 + .../resources/pc/demo/rate/max-score.spec.js | 12 + .../pc/demo/rate/not-selected-class.spec.js | 17 + .../pc/demo/rate/not-selected-color.spec.js | 18 + .../resources/pc/demo/rate/radio-rate.spec.js | 13 + .../pc/demo/rate/rate-events.spec.js | 14 + .../resources/pc/demo/rate/show-score.spec.js | 15 + .../pc/demo/rate/size-and-space.spec.js | 14 + .../pc/demo/rate/text-on-bottom.spec.js | 23 + .../pc/demo/rate/texts-and-text-color.spec.js | 31 + .../pc/demo/rate/threshold-value.spec.js | 33 + .../docs/resources/pc/demo/row/gutter.vue | 2 +- .../pc/demo/scroll-text/basic-usage.spec.ts | 7 + .../scroll-text/custom-scroll-text.spec.ts | 7 + .../scroll-text/custom-text-style.spec.ts | 7 + .../pc/demo/scroll-text/hover-stop.spec.ts | 8 + .../demo/scroll-text/scroll-direction.spec.ts | 10 + .../pc/demo/scroll-text/scroll-time.spec.ts | 7 + .../pc/demo/scroll-text/slots.spec.ts | 7 + .../pc/demo/search/basic-usage.spec.ts | 20 + .../pc/demo/search/change-events.spec.ts | 13 + .../pc/demo/search/clearable.spec.ts | 14 + .../demo/search/custom-search-types.spec.ts | 16 + .../pc/demo/search/default-value.spec.ts | 10 + .../pc/demo/search/mini-mode.spec.ts | 27 + .../pc/demo/search/search-events.spec.ts | 18 + .../pc/demo/search/search-types.spec.ts | 16 + .../pc/demo/search/select-events.spec.ts | 18 + .../demo/search/show-selected-types.spec.ts | 16 + .../pc/demo/search/slot-prefix.spec.ts | 12 + .../pc/demo/search/transparent-mode.spec.ts | 34 + .../pc/demo/select/allow-create.spec.ts | 34 + .../pc/demo/select/automatic-dropdown.spec.ts | 14 + .../pc/demo/select/basic-usage.spec.ts | 18 + .../pc/demo/select/binding-obj.spec.ts | 16 + .../resources/pc/demo/select/binding-obj.vue | 4 +- .../pc/demo/select/cache-usage.spec.ts | 14 + .../resources/pc/demo/select/cache-usage.vue | 20 +- .../pc/demo/select/clearable.spec.ts | 15 + .../pc/demo/select/collapse-tags.spec.ts | 18 + .../pc/demo/select/custom-options.spec.ts | 11 + .../pc/demo/select/custom-prefix.spec.ts | 11 + .../demo/select/custom-reference-slot.spec.ts | 8 + .../pc/demo/select/custom-reference-slot.vue | 2 +- .../select/disable-grid-select-radio.spec.ts | 27 + .../demo/select/disable-grid-select-radio.vue | 2 + .../disabled-and-selected-options.spec.ts | 17 + .../pc/demo/select/disabled-options.spec.ts | 16 + .../resources/pc/demo/select/disabled.spec.ts | 8 + .../pc/demo/select/envts-change.spec.ts | 48 + .../pc/demo/select/envts-remove.spec.ts | 29 + .../pc/demo/select/filter-method.spec.ts | 38 + .../demo/select/focus-remote-method.spec.ts | 12 + .../select/hide-select-input-border.spec.ts | 10 + .../pc/demo/select/input-box-type.spec.ts | 26 + .../demo/select/is-drop-inherit-width.spec.ts | 29 + .../pc/demo/select/manual-focus-blur.spec.ts | 12 + .../pc/demo/select/manual-focus-blur.vue | 10 +- .../pc/demo/select/memoize-usage.spec.ts | 14 + .../pc/demo/select/memoize-usage.vue | 7 +- .../pc/demo/select/multiple-limit.spec.ts | 19 + .../resources/pc/demo/select/multiple.spec.ts | 19 + .../resources/pc/demo/select/name.spec.ts | 8 + .../nest-checkbox-grid-clearable.spec.ts | 40 + .../pc/demo/select/nest-checkbox-grid.spec.ts | 34 + .../pc/demo/select/nest-checkbox-tree.spec.ts | 27 + .../demo/select/nest-filterable-tree.spec.ts | 30 + .../select/nest-grid-remote-filter.spec.ts | 58 + .../demo/select/nest-grid-remote-filter.vue | 2 + .../select/nest-radio-grid-much-data.spec.ts | 30 + .../pc/demo/select/nest-radio-grid.spec.ts | 19 + .../pc/demo/select/nest-radio-tree.spec.ts | 20 + .../pc/demo/select/nest-remote-grid.spec.ts | 56 + .../pc/demo/select/nest-remote-grid.vue | 2 + .../pc/demo/select/no-data-text.spec.ts | 20 + .../pc/demo/select/no-match-text.spec.ts | 13 + .../pc/demo/select/optimization.spec.ts | 44 + .../demo/select/option-group-disable.spec.ts | 10 + .../pc/demo/select/option-group.spec.ts | 12 + .../demo/select/popup-style-position.spec.ts | 11 + .../pc/demo/select/remote-method.spec.ts | 24 + .../pc/demo/select/remote-method.vue | 1 + .../select/remote-search-allow-copy.spec.ts | 27 + .../demo/select/remote-search-allow-copy.vue | 2 + .../pc/demo/select/search-allow-copy.spec.ts | 26 + .../pc/demo/select/search-allow-copy.vue | 26 +- .../pc/demo/select/searchable.spec.ts | 49 + .../pc/demo/select/set-input-value.spec.ts | 11 + .../pc/demo/select/show-alloption.spec.ts | 11 + .../resources/pc/demo/select/show-tip.spec.ts | 0 .../pc/demo/select/size-medium.spec.ts | 8 + .../pc/demo/select/size-mini.spec.ts | 8 + .../pc/demo/select/size-small.spec.ts | 8 + .../pc/demo/select/slot-default.spec.ts | 11 + .../pc/demo/select/slot-empty.spec.ts | 12 + .../pc/demo/select/slot-footer.spec.ts | 12 + .../pc/demo/select/tag-copy-all.spec.ts | 12 + .../resources/pc/demo/select/tag-copy-all.vue | 17 +- .../pc/demo/select/tag-select.spec.ts | 20 + .../resources/pc/demo/select/tag-select.vue | 17 +- .../pc/demo/slide-bar/basic-usage.spec.ts | 17 + .../pc/demo/slide-bar/custom-content.spec.ts | 11 + .../pc/demo/slide-bar/custom-tag.spec.ts | 11 + .../demo/slide-bar/slide-bar-events.spec.ts | 12 + .../pc/demo/slide-bar/slide-bar-events.vue | 4 +- .../pc/demo/slide-bar/wheel-blocks.spec.ts | 17 + .../pc/demo/slider/about-step.spec.ts | 20 + .../pc/demo/slider/basic-usage.spec.ts | 20 + .../pc/demo/slider/dynamic-disable.spec.ts | 11 + .../pc/demo/slider/format-tooltip.spec.ts | 10 + .../resources/pc/demo/slider/max-min.spec.ts | 24 + .../pc/demo/slider/range-select.spec.ts | 30 + .../pc/demo/slider/shortcut-operation.spec.ts | 35 + .../pc/demo/slider/show-iput.spec.ts | 8 + .../resources/pc/demo/slider/show-tip.spec.ts | 14 + .../demo/slider/slider-event-change.spec.ts | 19 + .../pc/demo/slider/slider-event-start.spec.ts | 20 + .../pc/demo/slider/slider-event-stop.spec.ts | 19 + .../pc/demo/slider/slider-slot.spec.ts | 18 + .../pc/demo/slider/vertical-mode.spec.ts | 20 + .../pc/demo/split/basic-usage.spec.ts | 25 + .../pc/demo/split/basic-usage1.spec.ts | 20 + .../pc/demo/split/left-right.spec.ts | 11 + .../pc/demo/split/moveend-event.spec.ts | 16 + .../pc/demo/split/movestart-event.spec.ts | 17 + .../pc/demo/split/moving-event.spec.ts | 16 + .../pc/demo/split/nested-use.spec.ts | 37 + .../pc/demo/split/split-mode.spec.ts | 12 + .../pc/demo/split/split-threshold.spec.ts | 30 + .../pc/demo/split/top-bottom-solt.spec.ts | 10 + .../pc/demo/split/trigger-slot.spec.ts | 8 + .../pc/demo/steps/advanced-steps.spec.ts | 17 + .../resources/pc/demo/steps/click.spec.ts | 19 + .../pc/demo/steps/custom-steps-item.spec.ts | 17 + .../pc/demo/steps/data-resource.spec.ts | 22 + .../resources/pc/demo/steps/data-resource.vue | 17 +- .../pc/demo/steps/node-status.spec.ts | 25 + .../pc/demo/steps/normal-steps.spec.ts | 18 + .../pc/demo/steps/order-progress.spec.ts | 16 + .../pc/demo/steps/show-divider.spec.ts | 9 + .../docs/resources/pc/demo/steps/size.spec.ts | 11 + .../demo/steps/slot-active-node-desc.spec.ts | 13 + .../docs/resources/pc/demo/steps/slot.spec.ts | 14 + .../docs/resources/pc/demo/steps/slot.vue | 8 +- .../pc/demo/steps/text-position.spec.ts | 11 + .../pc/demo/steps/timeline-steps.spec.ts | 29 + .../pc/demo/tabs/basic-usage.spec.ts | 20 + .../pc/demo/tabs/before-leave.spec.ts | 16 + .../pc/demo/tabs/custom-more-icon.spec.ts | 26 + .../pc/demo/tabs/custom-tab-title.spec.ts | 13 + .../pc/demo/tabs/position-bottom.spec.ts | 16 + .../pc/demo/tabs/position-left.spec.ts | 26 + .../pc/demo/tabs/position-right.spec.ts | 26 + .../resources/pc/demo/tabs/position.spec.ts | 16 + .../tabs/show-different-grid-data.spec.ts | 16 + .../pc/demo/tabs/show-different-grid-data.vue | 4 +- .../resources/pc/demo/tabs/stretch-wh.spec.ts | 10 + .../pc/demo/tabs/tab-style-bordercard.spec.ts | 25 + .../pc/demo/tabs/tab-style-card.spec.ts | 27 + .../pc/demo/tabs/tabdata-title.spec.ts | 15 + .../pc/demo/tabs/tabs-draggable.spec.ts | 32 + .../pc/demo/tabs/tabs-events-add.spec.ts | 21 + .../pc/demo/tabs/tabs-events-click.spec.ts | 12 + .../pc/demo/tabs/tabs-events-close.spec.ts | 16 + .../pc/demo/tabs/tabs-events-edit.spec.ts | 17 + .../pc/demo/tabs/tabs-second-layer.spec.ts | 11 + .../resources/pc/demo/tabs/with-add.spec.ts | 19 + .../resources/pc/demo/tag/basic-usage.spec.ts | 10 + .../resources/pc/demo/tag/closeable.spec.ts | 12 + .../docs/resources/pc/demo/tag/color3.spec.ts | 10 + .../docs/resources/pc/demo/tag/create.spec.ts | 18 + .../resources/pc/demo/tag/disabled.spec.ts | 13 + .../docs/resources/pc/demo/tag/effect.spec.ts | 35 + .../docs/resources/pc/demo/tag/hit.spec.ts | 19 + .../pc/demo/tag/slot-default.spec.ts | 12 + .../pc/demo/tag/tag-event-click.spec.ts | 12 + .../pc/demo/tag/tag-event-close.spec.ts | 14 + .../resources/pc/demo/tag/tag-size.spec.ts | 16 + .../pc/demo/text-popup/basic-usage.spec.ts | 28 + .../pc/demo/text-popup/clear-value.spec.ts | 19 + .../pc/demo/text-popup/placeholder.spec.ts | 13 + .../pc/demo/text-popup/readonly.spec.ts | 12 + .../pc/demo/text-popup/separtor.spec.ts | 20 + .../pc/demo/text-popup/value.spec.ts | 14 + .../pc/demo/text-popup/width.spec.ts | 11 + .../pc/demo/time-line/basic-usage.spec.ts | 25 + .../demo/time-line/custom-normal-step.spec.ts | 14 + .../pc/demo/time-line/custom-normal-step.vue | 14 +- .../time-line/custom-vertical-step.spec.ts | 15 + .../pc/demo/time-line/different-data.spec.ts | 17 + .../pc/demo/time-line/horizontal-step.spec.ts | 10 + .../pc/demo/time-line/set-start-value.spec.ts | 10 + .../pc/demo/time-line/set-step-width.spec.ts | 10 + .../pc/demo/time-line/set-step-width.vue | 2 +- .../pc/demo/time-line/show-number.spec.ts | 11 + .../pc/demo/time-line/show-status.spec.ts | 11 + .../time-line/vertical-step-reverse.spec.ts | 18 + .../pc/demo/time-line/vertical-step.spec.ts | 10 + .../pc/demo/time-picker/basic-usage.spec.ts | 41 + .../pc/demo/time-picker/clear-icon.spec.ts | 24 + .../pc/demo/time-picker/clearable.spec.ts | 16 + .../pc/demo/time-picker/date.spec.ts | 64 + .../pc/demo/time-picker/default-value.spec.ts | 17 + .../pc/demo/time-picker/disabled.spec.ts | 12 + .../pc/demo/time-picker/editable.spec.ts | 18 + .../pc/demo/time-picker/event-blur.spec.ts | 20 + .../pc/demo/time-picker/format.spec.ts | 20 + .../resources/pc/demo/time-picker/format.vue | 23 +- .../pc/demo/time-picker/is-range.spec.ts | 39 + .../pc/demo/time-picker/name.spec.ts | 11 + .../demo/time-picker/picker-options.spec.ts | 41 + .../pc/demo/time-picker/popper-class.spec.ts | 14 + .../pc/demo/time-picker/size-medium.spec.ts | 10 + .../pc/demo/time-picker/size-mini.spec.ts | 10 + .../pc/demo/time-picker/size-small.spec.ts | 10 + .../pc/demo/time-picker/suffix-icon.spec.ts | 12 + .../pc/demo/time-picker/time-low.spec.ts | 12 + .../pc/demo/time-select/basic-usage.spec.ts | 14 + .../pc/demo/time-select/clear-icon.spec.ts | 13 + .../pc/demo/time-select/default-value.spec.ts | 9 + .../pc/demo/time-select/disabled.spec.ts | 8 + .../pc/demo/time-select/editable.spec.ts | 8 + .../pc/demo/time-select/event-blur.spec.ts | 14 + .../pc/demo/time-select/focus.spec.ts | 9 + .../demo/time-select/picker-options.spec.ts | 7 + .../pc/demo/time-select/popper-class.spec.ts | 9 + .../time-select/range-placeholder.spec.ts | 22 + .../pc/demo/time-select/size-medium.spec.ts | 8 + .../pc/demo/time-select/size-mini.spec.ts | 8 + .../pc/demo/time-select/size-small.spec.ts | 8 + .../pc/demo/time-select/suffix-icon.spec.ts | 8 + .../toggle-menu/automatic-filtering.spec.ts | 20 + .../pc/demo/toggle-menu/basic-usage.spec.ts | 46 + .../pc/demo/toggle-menu/custom-icon.spec.ts | 13 + .../toggle-menu/default-expand-all.spec.ts | 13 + .../pc/demo/toggle-menu/drag-events.spec.ts | 18 + .../pc/demo/toggle-menu/draggable.spec.ts | 19 + .../pc/demo/toggle-menu/node-click.spec.ts | 13 + .../pc/demo/toggle-menu/node-collapse.spec.ts | 12 + .../pc/demo/toggle-menu/node-drop.spec.ts | 15 + .../pc/demo/toggle-menu/node-expand.spec.ts | 12 + .../pc/demo/toggle-menu/show-filter.spec.ts | 12 + .../pc/demo/toggle-menu/slot-node.spec.ts | 10 + .../pc/demo/toggle-menu/slot-node.vue | 2 +- .../pc/demo/toggle-menu/toggle-props.spec.ts | 19 + .../pc/demo/tooltip/basic-usage.spec.js | 65 +- .../pc/demo/tooltip/custom-transition.spec.js | 21 + .../pc/demo/tooltip/dynamic-disable.spec.js | 23 + .../pc/demo/tooltip/enterable.spec.js | 16 + .../demo/tooltip/manual-control-tip.spec.js | 17 + .../pc/demo/tooltip/open-delay.spec.js | 29 + .../pc/demo/tooltip/popper-class.spec.js | 13 + .../pc/demo/tooltip/popper-class.vue | 4 +- .../pc/demo/tooltip/popper-options.spec.js | 17 + .../pc/demo/tooltip/tabindex.spec.js | 9 + .../pc/demo/tooltip/tooltip-content.spec.js | 19 + .../pc/demo/tooltip/tooltip-offset.spec.js | 16 + .../tooltip/tooltip-render-content.spec.js | 12 + .../pc/demo/tooltip/tooltip-theme.spec.js | 29 + .../pc/demo/tooltip/tooltip-theme.vue | 14 +- .../pc/demo/tooltip/visible-arrow.spec.js | 13 + .../pc/demo/tooltip/visible-show.spec.js | 30 + .../pc/demo/transfer/basic-usage.spec.ts | 104 ++ .../demo/transfer/checked-format-text.spec.ts | 10 + .../demo/transfer/custom-button-texts.spec.ts | 10 + .../transfer/custom-filter-method.spec.ts | 18 + .../pc/demo/transfer/custom-footer.spec.ts | 8 + .../transfer/custom-render-content.spec.ts | 8 + .../transfer/custom-transfer-titles.spec.ts | 12 + .../pc/demo/transfer/data-source.spec.ts | 26 + .../pc/demo/transfer/default-checked.spec.ts | 22 + .../pc/demo/transfer/drop-config.spec.ts | 33 + .../demo/transfer/filter-placeholder.spec.ts | 8 + .../pc/demo/transfer/filterable.spec.ts | 18 + .../demo/transfer/manual-clear-query.spec.ts | 12 + .../pc/demo/transfer/nested-table.spec.ts | 48 + .../pc/demo/transfer/nested-tree.spec.ts | 27 + .../pc/demo/transfer/panel-slot.spec.ts | 14 + .../transfer/props-of-data-source.spec.ts | 26 + .../pc/demo/transfer/show-all-btn.spec.ts | 36 + .../pc/demo/transfer/target-order.spec.ts | 17 + .../pc/demo/transfer/transfer-events.spec.ts | 16 + .../pc/demo/tree-menu/accordion.spec.ts | 17 + .../pc/demo/tree-menu/basic-usage.spec.ts | 10 + .../pc/demo/tree-menu/can-draggable.spec.ts | 40 + .../pc/demo/tree-menu/check-strictly.spec.ts | 17 + .../pc/demo/tree-menu/data-resource.spec.ts | 20 + .../demo/tree-menu/default-expand-all.spec.ts | 15 + .../tree-menu/default-expanded-keys.spec.ts | 19 + .../pc/demo/tree-menu/empty-text.spec.ts | 9 + .../tree-menu/event-allow-draggable.spec.ts | 19 + .../demo/tree-menu/event-check-change.spec.ts | 16 + .../tree-menu/event-current-change.spec.ts | 12 + .../demo/tree-menu/event-current-change.vue | 2 +- .../demo/tree-menu/event-node-click.spec.ts | 14 + .../pc/demo/tree-menu/event-node-click.vue | 2 +- .../tree-menu/event-node-collapse.spec.ts | 11 + .../demo/tree-menu/event-node-expand.spec.ts | 10 + .../tree-menu/expand-on-click-node.spec.ts | 10 + .../demo/tree-menu/filter-node-method.spec.ts | 12 + .../demo/tree-menu/get-menu-data-sync.spec.ts | 16 + .../pc/demo/tree-menu/lazy-load.spec.ts | 13 + .../pc/demo/tree-menu/search-icon.spec.ts | 9 + .../pc/demo/tree-menu/show-checkbox.spec.ts | 29 + .../pc/demo/tree-menu/text-ellipsis.spec.ts | 9 + .../pc/demo/tree-menu/text-wrap.spec.ts | 9 + .../demo/tree-menu/tree-menu-indent.spec.ts | 11 + .../pc/demo/tree-menu/tree-menu-slot.spec.ts | 12 + .../pc/demo/tree/accordion-mode.spec.ts | 13 + .../resources/pc/demo/tree/allow-drag.spec.ts | 21 + .../resources/pc/demo/tree/allow-drop.spec.ts | 19 + .../pc/demo/tree/auto-expand-parent.spec.ts | 11 + .../pc/demo/tree/basic-usage.spec.ts | 16 + .../pc/demo/tree/check-on-click-node.spec.ts | 29 + .../pc/demo/tree/check-strictly.spec.ts | 40 + .../pc/demo/tree/contextmenu.spec.ts | 13 + .../pc/demo/tree/current-node-key.spec.ts | 12 + .../pc/demo/tree/custom-empty-text.spec.ts | 9 + .../pc/demo/tree/custom-node-icon.spec.ts | 10 + .../pc/demo/tree/data-source.spec.ts | 12 + .../pc/demo/tree/default-checked-keys.spec.ts | 17 + .../pc/demo/tree/default-expand-all.spec.ts | 13 + .../demo/tree/default-expended-keys.spec.ts | 15 + .../pc/demo/tree/disable-node.spec.ts | 28 + .../pc/demo/tree/drag-events.spec.ts | 22 + .../pc/demo/tree/expand-on-click-node.spec.ts | 21 + .../pc/demo/tree/filter-node.spec.ts | 12 + .../pc/demo/tree/highlight-current.spec.ts | 10 + .../resources/pc/demo/tree/indent.spec.ts | 11 + .../pc/demo/tree/lazy-load-node.spec.ts | 19 + .../pc/demo/tree/node-contextmenu.spec.ts | 12 + .../pc/demo/tree/node-draggable.spec.ts | 26 + .../pc/demo/tree/node-events.spec.ts | 11 + .../resources/pc/demo/tree/node-key.spec.ts | 39 + .../pc/demo/tree/node-props-config.spec.ts | 10 + .../pc/demo/tree/render-after-expand.spec.ts | 10 + .../pc/demo/tree/render-content.spec.ts | 21 + .../pc/demo/tree/set-tree-icon.spec.ts | 13 + .../pc/demo/tree/show-checkbox.spec.ts | 34 + .../pc/demo/tree/single-select-radio.spec.ts | 16 + .../pc/demo/tree/single-select-radio.vue | 12 +- .../pc/demo/tree/slot-deffault.spec.ts | 9 + .../resources/pc/demo/tree/slot-deffault.vue | 19 +- .../pc/demo/user-contact/basic-usage.spec.ts | 10 + .../pc/demo/user-contact/data-source.spec.ts | 13 + .../not-displayed-content.spec.ts | 8 + .../user-contact/slots-usercontact.spec.ts | 12 + .../user-contact/support-open-espace.spec.ts | 11 + .../pc/demo/user-head/basic-usage.spec.ts | 8 + .../resources/pc/demo/user-head/color.spec.ts | 10 + .../user-head/custom-background-color.spec.ts | 8 + .../custom-user-head-content.spec.ts | 8 + .../pc/demo/user-head/icon-user-head.spec.ts | 8 + .../pc/demo/user-head/image-user-head.spec.ts | 8 + .../pc/demo/user-head/label-user-head.spec.ts | 8 + .../user-head/message-count-limit.spec.ts | 8 + .../user-head/message-count-total.spec.ts | 8 + .../demo/user-head/message-count-type.spec.ts | 8 + .../pc/demo/user-head/min-user-head.spec.ts | 9 + .../render-user-head-in-grid.spec.ts | 10 + .../pc/demo/user-head/round-user-head.spec.ts | 8 + .../pc/demo/wizard/base-flow.spec.ts | 40 + .../pc/demo/wizard/page-guide.spec.ts | 52 + .../pc/demo/wizard/slot-base.spec.ts | 14 + .../pc/demo/wizard/slot-step-button.spec.ts | 17 + .../pc/demo/wizard/time-line-flow.spec.ts | 63 + .../resources/pc/demo/wizard/vertical.spec.ts | 32 + examples/vue2.7/.env.saas | 1 + examples/vue2.7/package.json | 3 +- examples/vue2.7/src/vite-env.d.ts | 7 + examples/vue2.7/vite.config.ts | 8 + examples/vue2.7/vitest.config.ts | 10 +- examples/vue2/.env.saas | 1 + examples/vue2/package.json | 3 +- examples/vue2/src/vite-env.d.ts | 8 + examples/vue2/vite.config.ts | 19 +- examples/vue2/vitest.config.ts | 10 +- examples/vue3/.env.saas | 1 + examples/vue3/package.json | 5 +- examples/vue3/src/vite-env.d.ts | 16 + examples/vue3/vite.config.ts | 18 +- examples/vue3/vitest.config.ts | 10 +- internals/cli/package.json | 4 +- internals/cli/src/commands/build/build-ui.ts | 2 +- .../src/commands/create/commonMapping.json | 5 - internals/cli/src/config/vite.ts | 3 + internals/cli/src/shared/module-utils.ts | 2 - internals/cli/tsconfig.json | 15 +- internals/playwright-config/src/index.js | 95 +- internals/vue-vite-import/.npmignore | 1 + .../vue-vite-import/example/ts/package.json | 2 +- internals/vue-vite-import/package.json | 23 +- internals/vue-vite-import/src/index.ts | 4 +- internals/vue-vite-import/tsconfig.json | 26 +- package.json | 29 +- packages/design/aurora/index.ts | 4 + packages/design/aurora/src/grid/index.ts | 11 + packages/design/aurora/src/switch/index.ts | 3 + packages/design/smb/src/grid/index.ts | 6 +- packages/modules.json | 5 - packages/renderless/package.json | 2 +- packages/renderless/src/anchor/index.ts | 173 +-- packages/renderless/src/anchor/vue.ts | 4 +- packages/renderless/src/button-group/vue.ts | 4 +- .../renderless/src/common/deps/memorize.ts | 20 +- .../renderless/src/common/validate/util.ts | 5 +- packages/renderless/src/dropdown-item/mf.ts | 2 +- packages/renderless/src/dropdown-menu/vue.ts | 2 +- packages/renderless/src/file-upload/index.ts | 1 - packages/renderless/src/grid/utils/column.ts | 1 + packages/renderless/src/pager/vue.ts | 4 +- packages/renderless/src/switch/vue.ts | 12 +- packages/theme-mobile/package.json | 2 +- packages/theme-mobile/src/svgs/index.js | 1 + packages/theme-saas/src/svgs/dot-download.svg | 24 + packages/theme-saas/src/svgs/down-ward.svg | 10 + .../theme-saas/src/svgs/left-ward-arrow.svg | 11 + .../src/svgs/prompt-exclamation.svg | 7 + packages/theme-saas/src/svgs/sort-default.svg | 7 + .../src/svgs/sort-triangle-ascending.svg | 9 + .../src/svgs/sort-triangle-descending.svg | 9 + .../theme-saas/src/svgs/sort-triangle.svg | 12 + packages/theme-saas/src/textarea/index.less | 118 ++ packages/theme-saas/src/textarea/vars.less | 70 + packages/theme-saas/src/theme-tool.js | 132 ++ packages/theme-saas/src/theme.config.js | 79 ++ .../src/theme/aurora-theme/index.js | 1 + .../theme-saas/src/theme/deep-theme/index.js | 13 + .../src/theme/galaxy-theme/index.js | 13 + .../src/theme/impression-theme/index.js | 14 + packages/theme-saas/src/theme/index.js | 61 + .../src/theme/infinity-theme/index.js | 13 + .../theme-saas/src/theme/smb-theme/index.js | 1 + packages/theme-saas/src/theme/utils.js | 12 + packages/theme/package.json | 2 +- packages/theme/scripts/build-theme-json.js | 37 +- packages/theme/scripts/components.js | 91 +- packages/theme/src/alert/aurora-theme.js | 1 - packages/theme/src/alert/index.less | 1 - packages/theme/src/alert/smb-theme.js | 5 +- packages/theme/src/alert/vars.less | 8 +- packages/theme/src/anchor/index.less | 9 +- packages/theme/src/anchor/vars.less | 2 +- packages/theme/src/breadcrumb/aurora-theme.js | 3 +- packages/theme/src/breadcrumb/index.less | 13 +- packages/theme/src/breadcrumb/vars.less | 4 +- packages/theme/src/button-group/index.less | 2 +- packages/theme/src/button/index.less | 70 +- packages/theme/src/button/smb-theme.js | 20 + packages/theme/src/button/vars.less | 51 +- packages/theme/src/checkbox/aurora-theme.js | 6 +- packages/theme/src/checkbox/index.less | 4 +- packages/theme/src/checkbox/vars.less | 4 + .../theme/src/collapse-item/aurora-theme.js | 5 +- packages/theme/src/collapse-item/index.less | 8 +- packages/theme/src/collapse-item/vars.less | 6 + packages/theme/src/dialog-box/aurora-theme.js | 24 + packages/theme/src/dialog-box/index.less | 26 +- packages/theme/src/dialog-box/vars.less | 8 +- packages/theme/src/dropdown/index.less | 12 + packages/theme/src/grid/aurora-theme.js | 6 +- packages/theme/src/grid/checkbox.less | 2 +- packages/theme/src/grid/header.less | 7 + packages/theme/src/grid/smb-theme.js | 13 +- packages/theme/src/grid/table.less | 145 ++- packages/theme/src/grid/vars.less | 4 + packages/theme/src/ip-address/aurora-theme.js | 3 +- packages/theme/src/numeric/index.less | 29 +- packages/theme/src/numeric/smb-theme.js | 7 +- packages/theme/src/numeric/vars.less | 6 + packages/theme/src/pager/aurora-theme.js | 15 + packages/theme/src/pager/index.less | 16 +- packages/theme/src/pager/smb-theme.js | 4 +- packages/theme/src/pager/vars.less | 14 +- packages/theme/src/picker/index.less | 2 +- packages/theme/src/pop-upload/index.less | 41 +- packages/theme/src/pop-upload/vars.less | 51 +- packages/theme/src/popeditor/index.less | 30 +- packages/theme/src/popeditor/vars.less | 47 +- packages/theme/src/popover/index.less | 4 - packages/theme/src/select/index.less | 2 +- packages/theme/src/select/vars.less | 2 +- packages/theme/src/steps/aurora-theme.js | 13 + packages/theme/src/svgs/draft.svg | 2 +- packages/theme/src/svgs/error.svg | 24 +- packages/theme/src/svgs/prompt.svg | 18 +- packages/theme/src/svgs/success.svg | 23 +- packages/theme/src/svgs/warning-triangle.svg | 21 +- packages/theme/src/switch/index.less | 2 +- packages/theme/src/textarea/index.less | 7 + packages/theme/src/textarea/smb-theme.js | 3 +- .../theme/src/theme/aurora-theme/index.js | 2 +- packages/theme/src/tree-menu/aurora-theme.js | 3 + packages/theme/src/tree/aurora-theme.js | 4 + packages/vue-common/src/index.ts | 4 +- packages/vue-icon-saas/index.ts | 1122 +++++++++++++++++ packages/vue-icon-saas/package.json | 4 +- .../vue-icon-saas/src/administrator/index.ts | 4 + .../vue-icon-saas/src/area-chart/index.ts | 4 + .../vue-icon-saas/src/arrow-bottom/index.ts | 4 + .../vue-icon-saas/src/arrow-down/index.ts | 4 + .../vue-icon-saas/src/arrow-left/index.ts | 4 + .../vue-icon-saas/src/arrow-right/index.ts | 4 + packages/vue-icon-saas/src/arrow-up/index.ts | 4 + packages/vue-icon-saas/src/ascending/index.ts | 4 + .../vue-icon-saas/src/association/index.ts | 4 + .../vue-icon-saas/src/attachment/index.ts | 4 + packages/vue-icon-saas/src/audio/index.ts | 4 + packages/vue-icon-saas/src/bar-chart/index.ts | 4 + packages/vue-icon-saas/src/befilter/index.ts | 4 + packages/vue-icon-saas/src/boat/index.ts | 4 + packages/vue-icon-saas/src/busy/index.ts | 4 + .../vue-icon-saas/src/calculator/index.ts | 4 + packages/vue-icon-saas/src/calendar/index.ts | 4 + packages/vue-icon-saas/src/check-out/index.ts | 4 + packages/vue-icon-saas/src/check/index.ts | 4 + .../vue-icon-saas/src/checked-linear/index.ts | 4 + .../vue-icon-saas/src/checked-sur/index.ts | 4 + .../vue-icon-saas/src/checked-true/index.ts | 4 + .../vue-icon-saas/src/chevron-down/index.ts | 4 + .../vue-icon-saas/src/chevron-left/index.ts | 4 + .../vue-icon-saas/src/chevron-right/index.ts | 4 + .../vue-icon-saas/src/chevron-up/index.ts | 4 + .../vue-icon-saas/src/clear-filter/index.ts | 4 + .../vue-icon-saas/src/clock-work/index.ts | 4 + .../vue-icon-saas/src/close-circle/index.ts | 4 + .../vue-icon-saas/src/close-square/index.ts | 4 + packages/vue-icon-saas/src/close/index.ts | 4 + .../vue-icon-saas/src/cloud-download/index.ts | 4 + .../vue-icon-saas/src/cloud-upload/index.ts | 4 + packages/vue-icon-saas/src/coin/index.ts | 4 + .../vue-icon-saas/src/commission/index.ts | 4 + .../src/conment-refresh/index.ts | 4 + packages/vue-icon-saas/src/copy/index.ts | 4 + packages/vue-icon-saas/src/course/index.ts | 4 + packages/vue-icon-saas/src/crop/index.ts | 4 + packages/vue-icon-saas/src/cue-l/index.ts | 4 + packages/vue-icon-saas/src/custom/index.ts | 4 + .../src/customer-service/index.ts | 4 + packages/vue-icon-saas/src/default/index.ts | 4 + .../src/defined-filtration/index.ts | 4 + packages/vue-icon-saas/src/del/index.ts | 4 + .../vue-icon-saas/src/delete-page/index.ts | 4 + packages/vue-icon-saas/src/deleted/index.ts | 4 + .../vue-icon-saas/src/delta-down-o/index.ts | 4 + .../vue-icon-saas/src/delta-down/index.ts | 4 + .../vue-icon-saas/src/delta-left-o/index.ts | 4 + .../vue-icon-saas/src/delta-left/index.ts | 4 + .../vue-icon-saas/src/delta-right-o/index.ts | 4 + .../vue-icon-saas/src/delta-right/index.ts | 4 + .../vue-icon-saas/src/delta-up-o/index.ts | 4 + packages/vue-icon-saas/src/delta-up/index.ts | 4 + packages/vue-icon-saas/src/derive/index.ts | 4 + .../vue-icon-saas/src/descending/index.ts | 4 + packages/vue-icon-saas/src/dialog/index.ts | 4 + packages/vue-icon-saas/src/dialog2/index.ts | 4 + packages/vue-icon-saas/src/dot-chart/index.ts | 4 + .../vue-icon-saas/src/dot-download/index.ts | 15 + packages/vue-icon-saas/src/dot-ipv4/index.ts | 4 + .../vue-icon-saas/src/double-left/index.ts | 4 + .../vue-icon-saas/src/double-right/index.ts | 4 + packages/vue-icon-saas/src/down-o/index.ts | 4 + packages/vue-icon-saas/src/down-ward/index.ts | 15 + packages/vue-icon-saas/src/down/index.ts | 4 + .../vue-icon-saas/src/download-cloud/index.ts | 4 + .../vue-icon-saas/src/download-link/index.ts | 4 + packages/vue-icon-saas/src/download/index.ts | 4 + packages/vue-icon-saas/src/edit/index.ts | 4 + .../src/editor-align-center/index.ts | 4 + .../src/editor-align-left/index.ts | 4 + .../src/editor-align-right/index.ts | 4 + .../src/editor-background/index.ts | 4 + .../vue-icon-saas/src/editor-bold/index.ts | 4 + .../vue-icon-saas/src/editor-code/index.ts | 4 + .../src/editor-deleteline/index.ts | 4 + .../vue-icon-saas/src/editor-eraser/index.ts | 4 + .../vue-icon-saas/src/editor-italic/index.ts | 4 + .../src/editor-left-border/index.ts | 4 + .../src/editor-list-dot/index.ts | 4 + .../src/editor-list-num/index.ts | 4 + .../vue-icon-saas/src/editor-list/index.ts | 4 + .../src/editor-menu-left/index.ts | 4 + .../src/editor-menu-right/index.ts | 4 + .../vue-icon-saas/src/editor-quote/index.ts | 4 + .../vue-icon-saas/src/editor-redo/index.ts | 4 + .../src/editor-right-border/index.ts | 4 + .../vue-icon-saas/src/editor-sub/index.ts | 4 + .../src/editor-subtitle/index.ts | 4 + .../vue-icon-saas/src/editor-super/index.ts | 4 + .../vue-icon-saas/src/editor-tab/index.ts | 4 + .../vue-icon-saas/src/editor-table/index.ts | 4 + .../src/editor-textcolor/index.ts | 4 + .../vue-icon-saas/src/editor-title/index.ts | 4 + .../src/editor-underline/index.ts | 4 + .../vue-icon-saas/src/editor-undo/index.ts | 4 + .../vue-icon-saas/src/editor-video/index.ts | 4 + packages/vue-icon-saas/src/ellipsis/index.ts | 4 + packages/vue-icon-saas/src/email-add/index.ts | 4 + .../vue-icon-saas/src/email-circle/index.ts | 4 + packages/vue-icon-saas/src/end/index.ts | 4 + packages/vue-icon-saas/src/error/index.ts | 4 + .../vue-icon-saas/src/espace-auto/index.ts | 4 + packages/vue-icon-saas/src/espace/index.ts | 4 + .../vue-icon-saas/src/excel-type/index.ts | 4 + packages/vue-icon-saas/src/excel/index.ts | 4 + packages/vue-icon-saas/src/exception/index.ts | 4 + .../vue-icon-saas/src/exclamation/index.ts | 4 + packages/vue-icon-saas/src/export/index.ts | 4 + .../vue-icon-saas/src/express-search/index.ts | 4 + packages/vue-icon-saas/src/eyeclose/index.ts | 4 + packages/vue-icon-saas/src/eyeopen/index.ts | 4 + .../src/file-cloudupload/index.ts | 4 + .../vue-icon-saas/src/file-excel/index.ts | 4 + packages/vue-icon-saas/src/file-type/index.ts | 4 + packages/vue-icon-saas/src/file/index.ts | 4 + .../vue-icon-saas/src/files-circle/index.ts | 4 + packages/vue-icon-saas/src/files/index.ts | 4 + packages/vue-icon-saas/src/filetext/index.ts | 4 + .../vue-icon-saas/src/fileupload/index.ts | 4 + packages/vue-icon-saas/src/filtered/index.ts | 4 + packages/vue-icon-saas/src/flag/index.ts | 4 + .../vue-icon-saas/src/folder-closed/index.ts | 4 + .../vue-icon-saas/src/folder-opened/index.ts | 4 + .../vue-icon-saas/src/freeze-left/index.ts | 4 + .../vue-icon-saas/src/freeze-right/index.ts | 4 + packages/vue-icon-saas/src/frown-o/index.ts | 4 + packages/vue-icon-saas/src/frown/index.ts | 4 + .../src/fullscreen-left/index.ts | 4 + .../vue-icon-saas/src/fullscreen/index.ts | 4 + packages/vue-icon-saas/src/grade/index.ts | 4 + .../vue-icon-saas/src/group-transfer/index.ts | 4 + packages/vue-icon-saas/src/group/index.ts | 4 + .../vue-icon-saas/src/halfchecked/index.ts | 4 + .../vue-icon-saas/src/halfselect/index.ts | 4 + .../vue-icon-saas/src/heartempty/index.ts | 4 + .../vue-icon-saas/src/help-circle/index.ts | 4 + .../vue-icon-saas/src/help-query/index.ts | 4 + .../vue-icon-saas/src/help-solid/index.ts | 4 + packages/vue-icon-saas/src/help/index.ts | 4 + packages/vue-icon-saas/src/helpful/index.ts | 4 + packages/vue-icon-saas/src/import/index.ts | 4 + .../vue-icon-saas/src/info-circle/index.ts | 4 + .../vue-icon-saas/src/info-solid/index.ts | 4 + packages/vue-icon-saas/src/info/index.ts | 4 + .../vue-icon-saas/src/information/index.ts | 4 + packages/vue-icon-saas/src/leave/index.ts | 4 + .../vue-icon-saas/src/left-frozen/index.ts | 4 + packages/vue-icon-saas/src/left-o/index.ts | 4 + .../src/left-ward-arrow/index.ts | 16 + packages/vue-icon-saas/src/left-ward/index.ts | 4 + packages/vue-icon-saas/src/left/index.ts | 4 + .../vue-icon-saas/src/line-chart/index.ts | 4 + packages/vue-icon-saas/src/link/index.ts | 4 + packages/vue-icon-saas/src/loading/index.ts | 4 + packages/vue-icon-saas/src/lock/index.ts | 4 + .../vue-icon-saas/src/mail-content/index.ts | 4 + packages/vue-icon-saas/src/mail/index.ts | 4 + packages/vue-icon-saas/src/male/index.ts | 4 + packages/vue-icon-saas/src/mark-on/index.ts | 4 + packages/vue-icon-saas/src/meh/index.ts | 4 + .../vue-icon-saas/src/message-circle/index.ts | 4 + packages/vue-icon-saas/src/mic/index.ts | 4 + .../vue-icon-saas/src/minscreen-left/index.ts | 4 + packages/vue-icon-saas/src/minscreen/index.ts | 4 + .../vue-icon-saas/src/minus-circle/index.ts | 4 + .../vue-icon-saas/src/minus-square/index.ts | 4 + packages/vue-icon-saas/src/minus/index.ts | 4 + .../src/mobile-checkbox-half/index.ts | 4 + .../src/mobile-checkbox-selected/index.ts | 4 + .../src/mobile-checkbox/index.ts | 4 + .../src/mobile-radio-selected/index.ts | 4 + .../vue-icon-saas/src/mobile-radio/index.ts | 4 + packages/vue-icon-saas/src/mobile/index.ts | 4 + packages/vue-icon-saas/src/more/index.ts | 4 + packages/vue-icon-saas/src/new/index.ts | 4 + .../vue-icon-saas/src/no-premission/index.ts | 4 + packages/vue-icon-saas/src/node-open/index.ts | 4 + packages/vue-icon-saas/src/node/index.ts | 4 + packages/vue-icon-saas/src/off-line/index.ts | 4 + packages/vue-icon-saas/src/on-line/index.ts | 4 + .../src/operationfaild-l/index.ts | 4 + .../vue-icon-saas/src/operationfaild/index.ts | 4 + .../vue-icon-saas/src/other-type/index.ts | 4 + .../vue-icon-saas/src/outer-link/index.ts | 4 + packages/vue-icon-saas/src/pagelink/index.ts | 4 + .../vue-icon-saas/src/pager-first/index.ts | 4 + .../vue-icon-saas/src/pager-last/index.ts | 4 + .../vue-icon-saas/src/pager-next/index.ts | 4 + .../vue-icon-saas/src/pager-prev/index.ts | 4 + packages/vue-icon-saas/src/panel-max/index.ts | 4 + .../vue-icon-saas/src/panel-mini/index.ts | 4 + .../vue-icon-saas/src/panel-normal/index.ts | 4 + .../vue-icon-saas/src/pause-circle/index.ts | 4 + packages/vue-icon-saas/src/pause/index.ts | 4 + packages/vue-icon-saas/src/pdf-type/index.ts | 4 + .../vue-icon-saas/src/picture-type/index.ts | 4 + packages/vue-icon-saas/src/picture/index.ts | 4 + packages/vue-icon-saas/src/pie-chart/index.ts | 4 + .../vue-icon-saas/src/plus-circle/index.ts | 4 + .../vue-icon-saas/src/plus-square/index.ts | 4 + packages/vue-icon-saas/src/plus/index.ts | 4 + packages/vue-icon-saas/src/popup/index.ts | 4 + packages/vue-icon-saas/src/ppt-type/index.ts | 4 + .../vue-icon-saas/src/pre-checked/index.ts | 4 + .../vue-icon-saas/src/print-preview/index.ts | 4 + .../src/prompt-exclamation/index.ts | 15 + packages/vue-icon-saas/src/pushpin/index.ts | 4 + packages/vue-icon-saas/src/radio/index.ts | 4 + .../vue-icon-saas/src/radioselected/index.ts | 4 + packages/vue-icon-saas/src/refres/index.ts | 4 + packages/vue-icon-saas/src/renew/index.ts | 4 + packages/vue-icon-saas/src/repeat/index.ts | 4 + packages/vue-icon-saas/src/replace/index.ts | 4 + packages/vue-icon-saas/src/replies/index.ts | 4 + .../vue-icon-saas/src/right-frozen/index.ts | 4 + packages/vue-icon-saas/src/right-o/index.ts | 4 + packages/vue-icon-saas/src/right/index.ts | 4 + packages/vue-icon-saas/src/rightward/index.ts | 4 + .../src/sandwich-collapse/index.ts | 4 + .../src/sandwich-expand/index.ts | 4 + packages/vue-icon-saas/src/save/index.ts | 4 + packages/vue-icon-saas/src/scissor/index.ts | 4 + packages/vue-icon-saas/src/search/index.ts | 4 + packages/vue-icon-saas/src/select/index.ts | 4 + packages/vue-icon-saas/src/sent/index.ts | 4 + packages/vue-icon-saas/src/separate/index.ts | 4 + packages/vue-icon-saas/src/setting/index.ts | 4 + .../vue-icon-saas/src/share-arrow/index.ts | 4 + packages/vue-icon-saas/src/share/index.ts | 4 + .../vue-icon-saas/src/shopping-card/index.ts | 4 + packages/vue-icon-saas/src/smile-o/index.ts | 4 + packages/vue-icon-saas/src/smile/index.ts | 4 + .../vue-icon-saas/src/sort-default/index.ts | 15 + .../src/sort-triangle-ascending/index.ts | 15 + .../src/sort-triangle-descending/index.ts | 15 + .../vue-icon-saas/src/sort-triangle/index.ts | 15 + packages/vue-icon-saas/src/sort/index.ts | 4 + .../vue-icon-saas/src/star-active/index.ts | 4 + .../vue-icon-saas/src/star-disable/index.ts | 4 + packages/vue-icon-saas/src/star-o/index.ts | 4 + .../vue-icon-saas/src/start-circle/index.ts | 4 + packages/vue-icon-saas/src/start/index.ts | 4 + .../vue-icon-saas/src/statistics/index.ts | 4 + packages/vue-icon-saas/src/stop/index.ts | 4 + packages/vue-icon-saas/src/success/index.ts | 4 + .../vue-icon-saas/src/successful/index.ts | 4 + .../src/task-cooperation/index.ts | 4 + .../src/telephone-circle/index.ts | 4 + packages/vue-icon-saas/src/telephone/index.ts | 4 + packages/vue-icon-saas/src/text-tab/index.ts | 4 + packages/vue-icon-saas/src/text-type/index.ts | 4 + packages/vue-icon-saas/src/text/index.ts | 4 + packages/vue-icon-saas/src/time/index.ts | 4 + packages/vue-icon-saas/src/total/index.ts | 4 + .../vue-icon-saas/src/triangle-down/index.ts | 4 + packages/vue-icon-saas/src/undelete/index.ts | 4 + packages/vue-icon-saas/src/unfilter/index.ts | 4 + packages/vue-icon-saas/src/unfreeze/index.ts | 4 + packages/vue-icon-saas/src/unknow/index.ts | 4 + packages/vue-icon-saas/src/unlock/index.ts | 4 + packages/vue-icon-saas/src/unsent/index.ts | 4 + packages/vue-icon-saas/src/up-o/index.ts | 4 + packages/vue-icon-saas/src/up/index.ts | 4 + packages/vue-icon-saas/src/upload/index.ts | 4 + packages/vue-icon-saas/src/user/index.ts | 4 + .../vue-icon-saas/src/versiontree/index.ts | 4 + .../vue-icon-saas/src/video-type/index.ts | 4 + packages/vue-icon-saas/src/view/index.ts | 4 + .../src/warning-triangle/index.ts | 4 + packages/vue-icon-saas/src/warning/index.ts | 4 + packages/vue-icon-saas/src/web-plus/index.ts | 4 + packages/vue-icon-saas/src/word-type/index.ts | 4 + packages/vue-icon-saas/src/writing/index.ts | 4 + packages/vue-icon-saas/src/yes/index.ts | 4 + packages/vue-icon-saas/src/zip-type/index.ts | 4 + packages/vue-icon-saas/src/zoom-in/index.ts | 4 + packages/vue-icon-saas/src/zoom-out/index.ts | 4 + packages/vue-icon/index.ts | 343 ++++- packages/vue-locale/src/lang/en.ts | 256 +++- packages/vue-locale/src/lang/zh-CN.ts | 165 ++- packages/vue/src/action-menu/package.json | 1 + packages/vue/src/action-sheet/package.json | 1 + .../vue/src/alert/__tests__/alert.test.tsx | 16 +- packages/vue/src/alert/package.json | 1 + packages/vue/src/amount/package.json | 1 + packages/vue/src/anchor/package.json | 34 +- packages/vue/src/area/package.json | 1 + .../__tests__/autocomplete.test.tsx | 69 + packages/vue/src/autocomplete/package.json | 1 + packages/vue/src/avatar/package.json | 1 + .../vue/src/badge/__tests__/badge.test.tsx | 35 + packages/vue/src/badge/package.json | 1 + packages/vue/src/breadcrumb-item/package.json | 1 + packages/vue/src/breadcrumb/package.json | 1 + packages/vue/src/bulletin-board/package.json | 1 + .../__tests__/button-group.test.tsx | 42 + packages/vue/src/button-group/package.json | 1 + .../vue/src/button/__tests__/button.test.tsx | 148 +++ packages/vue/src/button/package.json | 1 + packages/vue/src/calendar/package.json | 1 + packages/vue/src/card-group/package.json | 5 + packages/vue/src/card-template/package.json | 1 + packages/vue/src/card/package.json | 5 + packages/vue/src/carousel-item/package.json | 1 + packages/vue/src/carousel/package.json | 1 + packages/vue/src/cascader-menu/package.json | 1 + packages/vue/src/cascader-node/package.json | 1 + .../__tests__/cascader-panel.test.tsx | 119 ++ packages/vue/src/cascader-panel/package.json | 1 + .../src/cascader/__tests__/cascader.test.tsx | 122 ++ packages/vue/src/cascader/package.json | 1 + .../vue/src/chart/autonavi-map/package.json | 7 +- packages/vue/src/chart/baidu-map/package.json | 7 +- packages/vue/src/chart/chart-bar/package.json | 7 +- .../vue/src/chart/chart-boxplot/package.json | 7 +- .../vue/src/chart/chart-candle/package.json | 7 +- .../vue/src/chart/chart-core/package.json | 5 + .../vue/src/chart/chart-funnel/package.json | 7 +- .../vue/src/chart/chart-gauge/package.json | 7 +- .../vue/src/chart/chart-graph/package.json | 7 +- .../vue/src/chart/chart-heatmap/package.json | 7 +- .../src/chart/chart-histogram/package.json | 7 +- .../vue/src/chart/chart-line/package.json | 7 +- .../src/chart/chart-liquidfill/package.json | 7 +- packages/vue/src/chart/chart-map/package.json | 7 +- packages/vue/src/chart/chart-pie/package.json | 7 +- .../vue/src/chart/chart-radar/package.json | 7 +- .../vue/src/chart/chart-ring/package.json | 7 +- .../vue/src/chart/chart-sankey/package.json | 7 +- .../vue/src/chart/chart-scatter/package.json | 7 +- .../vue/src/chart/chart-sunburst/package.json | 7 +- .../vue/src/chart/chart-tree/package.json | 7 +- .../src/chart/chart-waterfall/package.json | 7 +- .../src/chart/chart-wordcloud/package.json | 7 +- packages/vue/src/chart/package.json | 1 + packages/vue/src/checkbox-button/package.json | 1 + packages/vue/src/checkbox-group/package.json | 1 + .../src/checkbox/__tests__/checkbox.test.tsx | 29 + packages/vue/src/checkbox/package.json | 1 + packages/vue/src/col/package.json | 1 + packages/vue/src/collapse-item/package.json | 1 + .../vue/src/collapse-transition/package.json | 1 + packages/vue/src/collapse/package.json | 1 + .../vue/src/column-list-group/package.json | 5 + .../vue/src/column-list-item/package.json | 4 + packages/vue/src/company/package.json | 1 + packages/vue/src/config-provider/package.json | 1 + .../vue/src/config-provider/src/index.vue | 30 +- packages/vue/src/container/package.json | 1 + packages/vue/src/country/package.json | 1 + .../vue/src/credit-card-form/package.json | 1 + .../vue/src/credit-card-form/src/index.ts | 5 +- packages/vue/src/credit-card/package.json | 1 + packages/vue/src/crop/package.json | 1 + packages/vue/src/currency/package.json | 1 + packages/vue/src/date-panel/package.json | 1 + .../__tests__/date-picker.test.tsx | 24 + packages/vue/src/date-picker/package.json | 1 + packages/vue/src/date-range/package.json | 1 + packages/vue/src/date-table/package.json | 1 + packages/vue/src/dept/package.json | 1 + packages/vue/src/detail-page/package.json | 1 + packages/vue/src/dialog-box/package.json | 1 + packages/vue/src/dialog-select/package.json | 5 + packages/vue/src/drawer/package.json | 4 + packages/vue/src/drop-roles/package.json | 1 + .../drop-times/__tests__/drop-times.test.tsx | 23 + packages/vue/src/drop-times/package.json | 1 + packages/vue/src/dropdown-item/package.json | 1 + packages/vue/src/dropdown-menu/package.json | 1 + packages/vue/src/dropdown/package.json | 1 + .../src/dynamic-scroller-item/package.json | 5 + .../vue/src/dynamic-scroller/package.json | 5 + packages/vue/src/espace/package.json | 1 + packages/vue/src/exception/package.json | 1 + packages/vue/src/fall-menu/package.json | 1 + .../__tests__/file-upload.test.tsx | 52 + packages/vue/src/file-upload/package.json | 1 + packages/vue/src/filter-box/package.json | 5 + packages/vue/src/filter-panel/package.json | 5 + packages/vue/src/floatbar/package.json | 1 + packages/vue/src/form-item/package.json | 1 + packages/vue/src/form/__tests__/form.test.tsx | 56 + packages/vue/src/form/package.json | 1 + packages/vue/src/fullscreen/package.json | 1 + packages/vue/src/grid-column/package.json | 1 + packages/vue/src/grid-manager/package.json | 1 + packages/vue/src/grid-toolbar/package.json | 1 + packages/vue/src/grid/package.json | 7 +- packages/vue/src/grid/src/body/src/body.tsx | 76 +- packages/vue/src/grid/src/cell/src/cell.ts | 134 +- .../vue/src/grid/src/column/src/column.ts | 4 +- packages/vue/src/grid/src/config.ts | 45 +- packages/vue/src/grid/src/grid/grid.ts | 168 ++- packages/vue/src/grid/src/grid/methods.ts | 2 +- .../grid/src/mobile-first/column-content.vue | 128 ++ .../grid/src/mobile-first/column-layout.vue | 30 + .../src/grid/src/mobile-first/column-link.vue | 59 + .../src/grid/src/mobile-first/column-type.vue | 31 + .../src/grid/src/mobile-first/gantt-view.vue | 21 + .../vue/src/grid/src/mobile-first/index.vue | 328 +++++ .../src/grid/src/mobile-first/list-view.vue | 21 + .../src/grid/src/mobile-first/table-row.vue | 45 + .../vue/src/grid/src/mobile-first/type.ts | 47 + .../vue/src/grid/src/mobile-first/utils.ts | 5 + packages/vue/src/grid/src/table/src/table.ts | 66 +- .../grid/src/table/src/utils/autoCellWidth.ts | 11 +- packages/vue/src/guide/package.json | 5 + packages/vue/src/hrapprover/package.json | 1 + packages/vue/src/image-viewer/package.json | 1 + packages/vue/src/image/package.json | 1 + .../vue/src/index-bar-anchor/package.json | 1 + packages/vue/src/index-bar/package.json | 1 + .../vue/src/input/__tests__/input.test.tsx | 30 + packages/vue/src/input/package.json | 1 + .../ip-address/__tests__/ip-address.test.tsx | 31 + packages/vue/src/ip-address/package.json | 1 + packages/vue/src/ip-address/src/pc.vue | 2 +- packages/vue/src/layout/package.json | 1 + packages/vue/src/link-menu/package.json | 1 + packages/vue/src/link/__tests__/link.test.tsx | 22 + packages/vue/src/link/package.json | 1 + packages/vue/src/list/package.json | 1 + packages/vue/src/loading/package.json | 1 + packages/vue/src/locales/package.json | 1 + packages/vue/src/logon-user/package.json | 1 + packages/vue/src/logout/package.json | 1 + packages/vue/src/milestone/package.json | 1 + packages/vue/src/mini-picker/package.json | 1 + packages/vue/src/modal/index.ts | 5 +- packages/vue/src/modal/package.json | 1 + packages/vue/src/month-range/package.json | 1 + packages/vue/src/month-table/package.json | 1 + packages/vue/src/multi-select/package.json | 1 + packages/vue/src/nav-bar/package.json | 1 + packages/vue/src/nav-menu/package.json | 1 + packages/vue/src/notify/package.json | 1 + .../src/numeric/__tests__/numeric.test.tsx | 23 + packages/vue/src/numeric/package.json | 1 + packages/vue/src/option-group/package.json | 1 + packages/vue/src/option/package.json | 1 + packages/vue/src/pager-item/package.json | 1 + .../vue/src/pager/__test__/pager.test.tsx | 50 + packages/vue/src/pager/package.json | 1 + packages/vue/src/pager/src/pc.vue | 4 +- packages/vue/src/panel/package.json | 1 + packages/vue/src/picker-column/package.json | 1 + packages/vue/src/picker/package.json | 1 + packages/vue/src/picker/src/pc.vue | 6 +- .../pop-upload/__tests__/pop-upload.test.tsx | 17 + packages/vue/src/pop-upload/package.json | 1 + packages/vue/src/pop-upload/src/pc.vue | 1 + .../popeditor/__tests__/popeditor.test.tsx | 37 + packages/vue/src/popeditor/package.json | 1 + .../src/popover/__tests__/popover.test.tsx | 33 + packages/vue/src/popover/package.json | 1 + packages/vue/src/popup/package.json | 1 + packages/vue/src/progress/package.json | 1 + packages/vue/src/pull-refresh/package.json | 1 + packages/vue/src/radio-button/package.json | 1 + packages/vue/src/radio-group/package.json | 1 + .../vue/src/radio/__tests__/radio.test.tsx | 38 + packages/vue/src/radio/package.json | 1 + packages/vue/src/rate/__test__/rate.test.ts | 61 + packages/vue/src/rate/package.json | 1 + packages/vue/src/record/package.json | 5 + .../vue/src/recycle-scroller/package.json | 5 + packages/vue/src/roles/package.json | 1 + packages/vue/src/row/package.json | 1 + packages/vue/src/scroll-text/package.json | 1 + packages/vue/src/scrollbar/package.json | 1 + .../vue/src/search/__tests__/search.test.tsx | 52 + packages/vue/src/search/package.json | 1 + packages/vue/src/select-dropdown/package.json | 1 + .../vue/src/select/__tests__/select.test.tsx | 74 ++ packages/vue/src/select/package.json | 1 + packages/vue/src/slide-bar/package.json | 1 + packages/vue/src/slide-bar/src/pc.vue | 2 +- .../vue/src/slider/__tests__/slider.test.tsx | 32 + packages/vue/src/slider/package.json | 1 + packages/vue/src/split/package.json | 1 + .../vue/src/standard-list-item/package.json | 5 + packages/vue/src/steps/package.json | 1 + packages/vue/src/svg-icon/package.json | 1 + .../vue/src/switch/__tests__/switch.test.tsx | 32 + packages/vue/src/switch/package.json | 1 + packages/vue/src/switch/src/index.ts | 4 +- packages/vue/src/switch/src/pc.vue | 4 +- packages/vue/src/tab-item/package.json | 1 + packages/vue/src/tabbar-item/package.json | 1 + packages/vue/src/tabbar/package.json | 1 + packages/vue/src/table/package.json | 1 + packages/vue/src/tabs/package.json | 1 + packages/vue/src/tag/package.json | 1 + packages/vue/src/text-popup/package.json | 1 + packages/vue/src/time-line/package.json | 1 + packages/vue/src/time-line/src/pc.vue | 3 +- packages/vue/src/time-panel/package.json | 1 + .../__tests__/time-picker.test.tsx | 30 + packages/vue/src/time-picker/package.json | 1 + packages/vue/src/time-range/package.json | 1 + .../__tests__/time-select.test.tsx | 34 + packages/vue/src/time-select/package.json | 1 + packages/vue/src/time-spinner/package.json | 1 + packages/vue/src/time/package.json | 1 + packages/vue/src/toggle-menu/package.json | 1 + packages/vue/src/tooltip/package.json | 1 + packages/vue/src/top-box/package.json | 1 + packages/vue/src/transfer-panel/package.json | 1 + .../src/transfer/__tests__/transfer.test.ts | 75 ++ packages/vue/src/transfer/package.json | 1 + packages/vue/src/tree-menu/package.json | 1 + packages/vue/src/tree/__test__/tree.test.tsx | 200 +++ packages/vue/src/tree/package.json | 1 + packages/vue/src/tree/src/tree-node.vue | 1 + packages/vue/src/upload-dragger/package.json | 1 + packages/vue/src/upload-list/package.json | 1 + packages/vue/src/upload/package.json | 1 + packages/vue/src/user-account/package.json | 1 + packages/vue/src/user-contact/package.json | 1 + packages/vue/src/user-head-group/package.json | 5 + packages/vue/src/user-head/package.json | 1 + packages/vue/src/user-link/package.json | 1 + packages/vue/src/user/package.json | 1 + packages/vue/src/wheel/package.json | 1 + packages/vue/src/wizard/package.json | 1 + packages/vue/src/year-range/package.json | 5 + packages/vue/src/year-table/package.json | 1 + volar.config.js | 2 +- 1944 files changed, 35128 insertions(+), 1812 deletions(-) create mode 100644 examples/docs/resources/mobile-first/app/action-sheet/webdoc/action-sheet.cn.md create mode 100644 examples/docs/resources/mobile-first/app/action-sheet/webdoc/action-sheet.en.md create mode 100644 examples/docs/resources/mobile-first/app/action-sheet/webdoc/action-sheet.js create mode 100644 examples/docs/resources/mobile-first/app/badge/webdoc/badge.cn.md create mode 100644 examples/docs/resources/mobile-first/app/badge/webdoc/badge.en.md create mode 100644 examples/docs/resources/mobile-first/app/badge/webdoc/badge.js create mode 100644 examples/docs/resources/mobile-first/app/button-group/webdoc/button-group.cn.md create mode 100644 examples/docs/resources/mobile-first/app/button-group/webdoc/button-group.en.md create mode 100644 examples/docs/resources/mobile-first/app/button-group/webdoc/button-group.js create mode 100644 examples/docs/resources/mobile-first/app/card/webdoc/card.cn.md create mode 100644 examples/docs/resources/mobile-first/app/card/webdoc/card.en.md create mode 100644 examples/docs/resources/mobile-first/app/card/webdoc/card.js create mode 100644 examples/docs/resources/mobile-first/app/carousel/webdoc/carousel.cn.md create mode 100644 examples/docs/resources/mobile-first/app/carousel/webdoc/carousel.en.md create mode 100644 examples/docs/resources/mobile-first/app/carousel/webdoc/carousel.js create mode 100644 examples/docs/resources/mobile-first/app/cascader-select/webdoc/cascader-select.cn.md create mode 100644 examples/docs/resources/mobile-first/app/cascader-select/webdoc/cascader-select.en.md create mode 100644 examples/docs/resources/mobile-first/app/cascader-select/webdoc/cascader-select.js create mode 100644 examples/docs/resources/mobile-first/app/checkbox/webdoc/checkbox.cn.md create mode 100644 examples/docs/resources/mobile-first/app/checkbox/webdoc/checkbox.en.md create mode 100644 examples/docs/resources/mobile-first/app/checkbox/webdoc/checkbox.js create mode 100644 examples/docs/resources/mobile-first/app/collapse/webdoc/collapse.cn.md create mode 100644 examples/docs/resources/mobile-first/app/collapse/webdoc/collapse.en.md create mode 100644 examples/docs/resources/mobile-first/app/collapse/webdoc/collapse.js create mode 100644 examples/docs/resources/mobile-first/app/column-list-item/show-radio.vue create mode 100644 examples/docs/resources/mobile-first/app/column-list-item/webdoc/column-list-item.cn.md create mode 100644 examples/docs/resources/mobile-first/app/column-list-item/webdoc/column-list-item.en.md create mode 100644 examples/docs/resources/mobile-first/app/column-list-item/webdoc/column-list-item.js create mode 100644 examples/docs/resources/mobile-first/app/date-picker-mobile/webdoc/date-picker-mobile.cn.md create mode 100644 examples/docs/resources/mobile-first/app/date-picker-mobile/webdoc/date-picker-mobile.en.md create mode 100644 examples/docs/resources/mobile-first/app/date-picker-mobile/webdoc/date-picker-mobile.js create mode 100644 examples/docs/resources/mobile-first/app/drawer/webdoc/drawer.cn.md create mode 100644 examples/docs/resources/mobile-first/app/drawer/webdoc/drawer.en.md create mode 100644 examples/docs/resources/mobile-first/app/drawer/webdoc/drawer.js create mode 100644 examples/docs/resources/mobile-first/app/dropdown/webdoc/dropdown.cn.md create mode 100644 examples/docs/resources/mobile-first/app/dropdown/webdoc/dropdown.en.md create mode 100644 examples/docs/resources/mobile-first/app/dropdown/webdoc/dropdown.js create mode 100644 examples/docs/resources/mobile-first/app/exception/webdoc/exception.cn.md create mode 100644 examples/docs/resources/mobile-first/app/exception/webdoc/exception.en.md create mode 100644 examples/docs/resources/mobile-first/app/exception/webdoc/exception.js create mode 100644 examples/docs/resources/mobile-first/app/file-upload/webdoc/file-upload.cn.md create mode 100644 examples/docs/resources/mobile-first/app/file-upload/webdoc/file-upload.en.md create mode 100644 examples/docs/resources/mobile-first/app/file-upload/webdoc/file-upload.js create mode 100644 examples/docs/resources/mobile-first/app/filter-bar/webdoc/filter-bar.cn.md create mode 100644 examples/docs/resources/mobile-first/app/filter-bar/webdoc/filter-bar.en.md create mode 100644 examples/docs/resources/mobile-first/app/filter-bar/webdoc/filter-bar.js create mode 100644 examples/docs/resources/mobile-first/app/filter/webdoc/filter.cn.md create mode 100644 examples/docs/resources/mobile-first/app/filter/webdoc/filter.en.md create mode 100644 examples/docs/resources/mobile-first/app/filter/webdoc/filter.js create mode 100644 examples/docs/resources/mobile-first/app/flowchart/dot-horizon.vue create mode 100644 examples/docs/resources/mobile-first/app/flowchart/dot-vertical.vue create mode 100644 examples/docs/resources/mobile-first/app/flowchart/holistic-fork.vue create mode 100644 examples/docs/resources/mobile-first/app/flowchart/holistic.vue create mode 100644 examples/docs/resources/mobile-first/app/flowchart/webdoc/flowchart.cn.md create mode 100644 examples/docs/resources/mobile-first/app/flowchart/webdoc/flowchart.en.md create mode 100644 examples/docs/resources/mobile-first/app/flowchart/webdoc/flowchart.js create mode 100644 examples/docs/resources/mobile-first/app/form/webdoc/form.cn.md create mode 100644 examples/docs/resources/mobile-first/app/form/webdoc/form.en.md create mode 100644 examples/docs/resources/mobile-first/app/form/webdoc/form.js create mode 100644 examples/docs/resources/mobile-first/app/grid/basic-usage.vue create mode 100644 examples/docs/resources/mobile-first/app/grid/webdoc/grid.cn.md create mode 100644 examples/docs/resources/mobile-first/app/grid/webdoc/grid.en.md create mode 100644 examples/docs/resources/mobile-first/app/grid/webdoc/grid.js create mode 100644 examples/docs/resources/mobile-first/app/image/webdoc/image.cn.md create mode 100644 examples/docs/resources/mobile-first/app/image/webdoc/image.en.md create mode 100644 examples/docs/resources/mobile-first/app/image/webdoc/image.js create mode 100644 examples/docs/resources/mobile-first/app/input/webdoc/input.cn.md create mode 100644 examples/docs/resources/mobile-first/app/input/webdoc/input.en.md create mode 100644 examples/docs/resources/mobile-first/app/input/webdoc/input.js create mode 100644 examples/docs/resources/mobile-first/app/loading/webdoc/loading.cn.md create mode 100644 examples/docs/resources/mobile-first/app/loading/webdoc/loading.en.md create mode 100644 examples/docs/resources/mobile-first/app/loading/webdoc/loading.js create mode 100644 examples/docs/resources/mobile-first/app/message/webdoc/message.cn.md create mode 100644 examples/docs/resources/mobile-first/app/message/webdoc/message.en.md create mode 100644 examples/docs/resources/mobile-first/app/message/webdoc/message.js create mode 100644 examples/docs/resources/mobile-first/app/modal/webdoc/modal.cn.md create mode 100644 examples/docs/resources/mobile-first/app/modal/webdoc/modal.en.md create mode 100644 examples/docs/resources/mobile-first/app/modal/webdoc/modal.js create mode 100644 examples/docs/resources/mobile-first/app/numeric/webdoc/numeric.cn.md create mode 100644 examples/docs/resources/mobile-first/app/numeric/webdoc/numeric.en.md create mode 100644 examples/docs/resources/mobile-first/app/numeric/webdoc/numeric.js create mode 100644 examples/docs/resources/mobile-first/app/pager/webdoc/pager.cn.md create mode 100644 examples/docs/resources/mobile-first/app/pager/webdoc/pager.en.md create mode 100644 examples/docs/resources/mobile-first/app/pager/webdoc/pager.js create mode 100644 examples/docs/resources/mobile-first/app/popconfirm/webdoc/popconfirm.cn.md create mode 100644 examples/docs/resources/mobile-first/app/popconfirm/webdoc/popconfirm.en.md create mode 100644 examples/docs/resources/mobile-first/app/popconfirm/webdoc/popconfirm.js create mode 100644 examples/docs/resources/mobile-first/app/popover/webdoc/popover.cn.md create mode 100644 examples/docs/resources/mobile-first/app/popover/webdoc/popover.en.md create mode 100644 examples/docs/resources/mobile-first/app/popover/webdoc/popover.js create mode 100644 examples/docs/resources/mobile-first/app/progress/webdoc/progress.cn.md create mode 100644 examples/docs/resources/mobile-first/app/progress/webdoc/progress.en.md create mode 100644 examples/docs/resources/mobile-first/app/progress/webdoc/progress.js create mode 100644 examples/docs/resources/mobile-first/app/radio-block/webdoc/radio-block.cn.md create mode 100644 examples/docs/resources/mobile-first/app/radio-block/webdoc/radio-block.en.md create mode 100644 examples/docs/resources/mobile-first/app/radio-block/webdoc/radio-block.js create mode 100644 examples/docs/resources/mobile-first/app/radio/webdoc/radio.cn.md create mode 100644 examples/docs/resources/mobile-first/app/radio/webdoc/radio.en.md create mode 100644 examples/docs/resources/mobile-first/app/radio/webdoc/radio.js create mode 100644 examples/docs/resources/mobile-first/app/rate/webdoc/rate.cn.md create mode 100644 examples/docs/resources/mobile-first/app/rate/webdoc/rate.en.md create mode 100644 examples/docs/resources/mobile-first/app/rate/webdoc/rate.js create mode 100644 examples/docs/resources/mobile-first/app/record/webdoc/record.cn.md create mode 100644 examples/docs/resources/mobile-first/app/record/webdoc/record.en.md create mode 100644 examples/docs/resources/mobile-first/app/record/webdoc/record.js create mode 100644 examples/docs/resources/mobile-first/app/scrollbar/webdoc/scrollbar.cn.md create mode 100644 examples/docs/resources/mobile-first/app/scrollbar/webdoc/scrollbar.en.md create mode 100644 examples/docs/resources/mobile-first/app/scrollbar/webdoc/scrollbar.js create mode 100644 examples/docs/resources/mobile-first/app/search/webdoc/search.cn.md create mode 100644 examples/docs/resources/mobile-first/app/search/webdoc/search.en.md create mode 100644 examples/docs/resources/mobile-first/app/search/webdoc/search.js create mode 100644 examples/docs/resources/mobile-first/app/select-mobile/webdoc/select-mobile.cn.md create mode 100644 examples/docs/resources/mobile-first/app/select-mobile/webdoc/select-mobile.en.md create mode 100644 examples/docs/resources/mobile-first/app/select-mobile/webdoc/select-mobile.js create mode 100644 examples/docs/resources/mobile-first/app/select-view/webdoc/select-view.cn.md create mode 100644 examples/docs/resources/mobile-first/app/select-view/webdoc/select-view.en.md create mode 100644 examples/docs/resources/mobile-first/app/select-view/webdoc/select-view.js create mode 100644 examples/docs/resources/mobile-first/app/selected-box/webdoc/selected-box.cn.md create mode 100644 examples/docs/resources/mobile-first/app/selected-box/webdoc/selected-box.en.md create mode 100644 examples/docs/resources/mobile-first/app/selected-box/webdoc/selected-box.js create mode 100644 examples/docs/resources/mobile-first/app/slider/webdoc/slider.cn.md create mode 100644 examples/docs/resources/mobile-first/app/slider/webdoc/slider.en.md create mode 100644 examples/docs/resources/mobile-first/app/slider/webdoc/slider.js create mode 100644 examples/docs/resources/mobile-first/app/standard-list-item/webdoc/standard-list-item.cn.md create mode 100644 examples/docs/resources/mobile-first/app/standard-list-item/webdoc/standard-list-item.en.md create mode 100644 examples/docs/resources/mobile-first/app/standard-list-item/webdoc/standard-list-item.js create mode 100644 examples/docs/resources/mobile-first/app/steps/webdoc/steps.cn.md create mode 100644 examples/docs/resources/mobile-first/app/steps/webdoc/steps.en.md create mode 100644 examples/docs/resources/mobile-first/app/steps/webdoc/steps.js create mode 100644 examples/docs/resources/mobile-first/app/switch/webdoc/switch.cn.md create mode 100644 examples/docs/resources/mobile-first/app/switch/webdoc/switch.en.md create mode 100644 examples/docs/resources/mobile-first/app/switch/webdoc/switch.js create mode 100644 examples/docs/resources/mobile-first/app/tabs/webdoc/tabs.cn.md create mode 100644 examples/docs/resources/mobile-first/app/tabs/webdoc/tabs.en.md create mode 100644 examples/docs/resources/mobile-first/app/tabs/webdoc/tabs.js create mode 100644 examples/docs/resources/mobile-first/app/tag-group/webdoc/tag-group.cn.md create mode 100644 examples/docs/resources/mobile-first/app/tag-group/webdoc/tag-group.en.md create mode 100644 examples/docs/resources/mobile-first/app/tag-group/webdoc/tag-group.js create mode 100644 examples/docs/resources/mobile-first/app/tag/webdoc/tag.cn.md create mode 100644 examples/docs/resources/mobile-first/app/tag/webdoc/tag.en.md create mode 100644 examples/docs/resources/mobile-first/app/tag/webdoc/tag.js create mode 100644 examples/docs/resources/mobile-first/app/time-line/webdoc/time-line.cn.md create mode 100644 examples/docs/resources/mobile-first/app/time-line/webdoc/time-line.en.md create mode 100644 examples/docs/resources/mobile-first/app/time-line/webdoc/time-line.js create mode 100644 examples/docs/resources/mobile-first/app/time-picker-mobile/webdoc/time-picker-mobile.cn.md create mode 100644 examples/docs/resources/mobile-first/app/time-picker-mobile/webdoc/time-picker-mobile.en.md create mode 100644 examples/docs/resources/mobile-first/app/time-picker-mobile/webdoc/time-picker-mobile.js create mode 100644 examples/docs/resources/mobile-first/app/tooltip/webdoc/tooltip.cn.md create mode 100644 examples/docs/resources/mobile-first/app/tooltip/webdoc/tooltip.en.md create mode 100644 examples/docs/resources/mobile-first/app/tooltip/webdoc/tooltip.js create mode 100644 examples/docs/resources/mobile-first/app/user-head/webdoc/user-head.cn.md create mode 100644 examples/docs/resources/mobile-first/app/user-head/webdoc/user-head.en.md create mode 100644 examples/docs/resources/mobile-first/app/user-head/webdoc/user-head.js create mode 100644 examples/docs/resources/pc/demo/action-menu/basic-usage.spec.ts create mode 100644 examples/docs/resources/pc/demo/action-menu/disabled.spec.ts create mode 100644 examples/docs/resources/pc/demo/action-menu/item-click.spec.ts create mode 100644 examples/docs/resources/pc/demo/action-menu/max-show-num.spec.ts create mode 100644 examples/docs/resources/pc/demo/action-menu/more-click.spec.ts create mode 100644 examples/docs/resources/pc/demo/action-menu/more-text.spec.ts create mode 100644 examples/docs/resources/pc/demo/action-menu/popper-class.spec.ts create mode 100644 examples/docs/resources/pc/demo/action-menu/slot-item.spec.ts create mode 100644 examples/docs/resources/pc/demo/action-menu/spacing.spec.ts create mode 100644 examples/docs/resources/pc/demo/action-menu/text-field.spec.ts create mode 100644 examples/docs/resources/pc/demo/action-menu/visible-change.spec.ts create mode 100644 examples/docs/resources/pc/demo/alert/base.spec.ts create mode 100644 examples/docs/resources/pc/demo/alert/center.spec.ts create mode 100644 examples/docs/resources/pc/demo/alert/closable.spec.ts create mode 100644 examples/docs/resources/pc/demo/alert/close-text.spec.ts create mode 100644 examples/docs/resources/pc/demo/alert/close.spec.ts create mode 100644 examples/docs/resources/pc/demo/alert/custom-description.spec.ts create mode 100644 examples/docs/resources/pc/demo/alert/feedback-of-result.spec.ts create mode 100644 examples/docs/resources/pc/demo/alert/icon.spec.ts create mode 100644 examples/docs/resources/pc/demo/alert/show-icon.spec.ts create mode 100644 examples/docs/resources/pc/demo/alert/size.spec.ts create mode 100644 examples/docs/resources/pc/demo/alert/slot-default.spec.ts create mode 100644 examples/docs/resources/pc/demo/alert/title.spec.ts create mode 100644 examples/docs/resources/pc/demo/alert/type.spec.ts create mode 100644 examples/docs/resources/pc/demo/anchor/basic-usage.spec.ts create mode 100644 examples/docs/resources/pc/demo/anchor/is-affix.spec.ts create mode 100644 examples/docs/resources/pc/demo/anchor/on-change.spec.ts create mode 100644 examples/docs/resources/pc/demo/anchor/set-container.spec.ts create mode 100644 examples/docs/resources/pc/demo/area/custom-service.spec.ts create mode 100644 examples/docs/resources/pc/demo/badge/badge-class.spec.ts create mode 100644 examples/docs/resources/pc/demo/badge/base.spec.ts create mode 100644 examples/docs/resources/pc/demo/badge/dynamic-hidden.spec.ts create mode 100644 examples/docs/resources/pc/demo/badge/is-dot.spec.ts create mode 100644 examples/docs/resources/pc/demo/badge/max.spec.ts create mode 100644 examples/docs/resources/pc/demo/badge/offset.spec.ts create mode 100644 examples/docs/resources/pc/demo/badge/slot-content.spec.ts create mode 100644 examples/docs/resources/pc/demo/badge/slot-default.spec.ts create mode 100644 examples/docs/resources/pc/demo/badge/target.spec.ts create mode 100644 examples/docs/resources/pc/demo/badge/type.spec.ts create mode 100644 examples/docs/resources/pc/demo/breadcrumb/base.spec.ts create mode 100644 examples/docs/resources/pc/demo/breadcrumb/options.spec.ts create mode 100644 examples/docs/resources/pc/demo/breadcrumb/separator.spec.ts create mode 100644 examples/docs/resources/pc/demo/breadcrumb/slot-default.spec.ts create mode 100644 examples/docs/resources/pc/demo/bulletin-board/active-name.spec.ts create mode 100644 examples/docs/resources/pc/demo/bulletin-board/base.spec.ts create mode 100644 examples/docs/resources/pc/demo/bulletin-board/icon.spec.ts create mode 100644 examples/docs/resources/pc/demo/bulletin-board/more-link.spec.ts create mode 100644 examples/docs/resources/pc/demo/bulletin-board/route.spec.ts create mode 100644 examples/docs/resources/pc/demo/bulletin-board/tab-title.spec.ts create mode 100644 examples/docs/resources/pc/demo/bulletin-board/title.spec.ts create mode 100644 examples/docs/resources/pc/demo/bulletin-board/url.spec.ts create mode 100644 examples/docs/resources/pc/demo/button-group/border.spec.js create mode 100644 examples/docs/resources/pc/demo/button-group/button-group-multiple.spec.js create mode 100644 examples/docs/resources/pc/demo/carousel/autoplay.spec.ts create mode 100644 examples/docs/resources/pc/demo/carousel/basic-usage.spec.ts create mode 100644 examples/docs/resources/pc/demo/carousel/card-mode.spec.ts create mode 100644 examples/docs/resources/pc/demo/carousel/carousel-arrow-always.spec.ts create mode 100644 examples/docs/resources/pc/demo/carousel/carousel-arrow-hover.spec.ts create mode 100644 examples/docs/resources/pc/demo/carousel/carousel-arrow-never.spec.ts create mode 100644 examples/docs/resources/pc/demo/carousel/close-loop.spec.ts create mode 100644 examples/docs/resources/pc/demo/carousel/indicator-trigger.spec.ts create mode 100644 examples/docs/resources/pc/demo/carousel/manual-play.spec.ts create mode 100644 examples/docs/resources/pc/demo/carousel/play-interval.spec.ts create mode 100644 examples/docs/resources/pc/demo/carousel/show-title.spec.ts create mode 100644 examples/docs/resources/pc/demo/carousel/up-down-carousel.spec.ts create mode 100644 examples/docs/resources/pc/demo/cascader-panel/basic-usage.spec.ts create mode 100644 examples/docs/resources/pc/demo/cascader-panel/cascader-panel-props.spec.ts create mode 100644 examples/docs/resources/pc/demo/cascader-panel/change.spec.ts create mode 100644 examples/docs/resources/pc/demo/cascader-panel/custom-option-content.spec.ts create mode 100644 examples/docs/resources/pc/demo/cascader-panel/expand-change.spec.ts create mode 100644 examples/docs/resources/pc/demo/cascader/auto-load-checkStrictly.spec.ts create mode 100644 examples/docs/resources/pc/demo/cascader/auto-load.spec.ts create mode 100644 examples/docs/resources/pc/demo/cascader/basic-usage.spec.ts create mode 100644 examples/docs/resources/pc/demo/cascader/check-strictly-multiple.spec.ts create mode 100644 examples/docs/resources/pc/demo/cascader/check-strictly.spec.ts create mode 100644 examples/docs/resources/pc/demo/cascader/clearable.spec.ts create mode 100644 examples/docs/resources/pc/demo/cascader/collapse-tags.spec.ts create mode 100644 examples/docs/resources/pc/demo/cascader/default-multiple.spec.ts create mode 100644 examples/docs/resources/pc/demo/cascader/disabled-items.spec.ts create mode 100644 examples/docs/resources/pc/demo/cascader/events.spec.ts create mode 100644 examples/docs/resources/pc/demo/cascader/expand-trigger.spec.ts create mode 100644 examples/docs/resources/pc/demo/cascader/filter-method.spec.ts create mode 100644 examples/docs/resources/pc/demo/cascader/filterable-multiple.spec.ts create mode 100644 examples/docs/resources/pc/demo/cascader/filterable.spec.ts create mode 100644 examples/docs/resources/pc/demo/cascader/props-children.spec.ts create mode 100644 examples/docs/resources/pc/demo/cascader/show-all-levels.spec.ts create mode 100644 examples/docs/resources/pc/demo/checkbox/basic-usage.spec.ts create mode 100644 examples/docs/resources/pc/demo/checkbox/button-check-box.spec.ts create mode 100644 examples/docs/resources/pc/demo/checkbox/checkbox-button-multiple.spec.ts create mode 100644 examples/docs/resources/pc/demo/checkbox/checkbox-button.spec.ts create mode 100644 examples/docs/resources/pc/demo/checkbox/checkbox-events.spec.ts create mode 100644 examples/docs/resources/pc/demo/checkbox/checkbox-group.spec.ts create mode 100644 examples/docs/resources/pc/demo/checkbox/checkbox-slot.spec.ts create mode 100644 examples/docs/resources/pc/demo/checkbox/checked.spec.ts create mode 100644 examples/docs/resources/pc/demo/checkbox/content-overflow.spec.ts create mode 100644 examples/docs/resources/pc/demo/checkbox/dynamic-create-checkbox.spec.ts create mode 100644 examples/docs/resources/pc/demo/checkbox/group-options.spec.ts create mode 100644 examples/docs/resources/pc/demo/checkbox/indeterminate.spec.ts create mode 100644 examples/docs/resources/pc/demo/checkbox/min-max.spec.ts create mode 100644 examples/docs/resources/pc/demo/checkbox/text.spec.ts create mode 100644 examples/docs/resources/pc/demo/checkbox/vertical-checkbox.spec.ts create mode 100644 examples/docs/resources/pc/demo/checkbox/with-border.spec.ts create mode 100644 examples/docs/resources/pc/demo/collapse/accordion.spec.ts create mode 100644 examples/docs/resources/pc/demo/collapse/basic-usage.spec.ts create mode 100644 examples/docs/resources/pc/demo/collapse/block-close.spec.ts create mode 100644 examples/docs/resources/pc/demo/collapse/collapse-events.spec.ts create mode 100644 examples/docs/resources/pc/demo/collapse/custom-collapse-icon.spec.ts create mode 100644 examples/docs/resources/pc/demo/collapse/custom-collapse-title.spec.ts create mode 100644 examples/docs/resources/pc/demo/collapse/dynamic-disable.spec.ts create mode 100644 examples/docs/resources/pc/demo/collapse/nested-form.spec.ts create mode 100644 examples/docs/resources/pc/demo/collapse/nested-grid.spec.ts create mode 100644 examples/docs/resources/pc/demo/company/basic-usage.spec.ts create mode 100644 examples/docs/resources/pc/demo/company/custom-service.spec.ts create mode 100644 examples/docs/resources/pc/demo/country/custom-service.spec.js create mode 100644 examples/docs/resources/pc/demo/country/fields.spec.js create mode 100644 examples/docs/resources/pc/demo/credit-card-form/background-image.spec.ts create mode 100644 examples/docs/resources/pc/demo/credit-card-form/basic-usage.spec.ts create mode 100644 examples/docs/resources/pc/demo/credit-card-form/credit-card-form-events.spec.ts create mode 100644 examples/docs/resources/pc/demo/currency/basic-usage.spec.ts create mode 100644 examples/docs/resources/pc/demo/currency/custom-service.spec.ts create mode 100644 examples/docs/resources/pc/demo/currency/disable-currency.spec.ts create mode 100644 examples/docs/resources/pc/demo/currency/size.spec.ts create mode 100644 examples/docs/resources/pc/demo/dept/custom-service.spec.ts create mode 100644 examples/docs/resources/pc/demo/detail-page/basic-usage.spec.ts create mode 100644 examples/docs/resources/pc/demo/detail-page/custom-show-text.spec.ts create mode 100644 examples/docs/resources/pc/demo/dialog-box/basic-usage.spec.ts create mode 100644 examples/docs/resources/pc/demo/dialog-box/center.spec.ts create mode 100644 examples/docs/resources/pc/demo/dialog-box/close-on-click-modal.spec.ts create mode 100644 examples/docs/resources/pc/demo/dialog-box/close-on-press-escape.spec.ts create mode 100644 examples/docs/resources/pc/demo/dialog-box/custom-dialog-content.spec.ts create mode 100644 examples/docs/resources/pc/demo/dialog-box/custom-dialog-footer.spec.ts create mode 100644 examples/docs/resources/pc/demo/dialog-box/custom-dialog-title.spec.ts create mode 100644 examples/docs/resources/pc/demo/dialog-box/dialog-top-height.spec.ts create mode 100644 examples/docs/resources/pc/demo/dialog-box/dialog-width.spec.ts create mode 100644 examples/docs/resources/pc/demo/dialog-box/draggable.spec.ts create mode 100644 examples/docs/resources/pc/demo/dialog-box/form-in-dialog.spec.ts create mode 100644 examples/docs/resources/pc/demo/dialog-box/fullscreen.spec.ts create mode 100644 examples/docs/resources/pc/demo/dialog-box/hidden-close-buttons.spec.ts create mode 100644 examples/docs/resources/pc/demo/dialog-box/hidden-header.spec.ts create mode 100644 examples/docs/resources/pc/demo/dialog-box/lock-scroll.spec.ts create mode 100644 examples/docs/resources/pc/demo/dialog-box/no-modal.spec.ts create mode 100644 examples/docs/resources/pc/demo/dialog-box/open-close-events.spec.ts create mode 100644 examples/docs/resources/pc/demo/dialog-box/right-dialog.spec.ts create mode 100644 examples/docs/resources/pc/demo/dialog-box/secondary-dialog.spec.ts create mode 100644 examples/docs/resources/pc/demo/drop-roles/custom-service.spec.ts create mode 100644 examples/docs/resources/pc/demo/drop-times/basic-usage.spec.ts create mode 100644 examples/docs/resources/pc/demo/drop-times/size.spec.ts create mode 100644 examples/docs/resources/pc/demo/drop-times/start-end-step.spec.ts create mode 100644 examples/docs/resources/pc/demo/dropdown/basic-usage.spec.ts create mode 100644 examples/docs/resources/pc/demo/dropdown/disabled.spec.ts create mode 100644 examples/docs/resources/pc/demo/dropdown/events.spec.ts create mode 100644 examples/docs/resources/pc/demo/dropdown/hide-on-click.spec.ts create mode 100644 examples/docs/resources/pc/demo/dropdown/multi-level.spec.ts create mode 100644 examples/docs/resources/pc/demo/dropdown/options.spec.ts create mode 100644 examples/docs/resources/pc/demo/dropdown/size.spec.ts create mode 100644 examples/docs/resources/pc/demo/dropdown/slot-default.spec.ts create mode 100644 examples/docs/resources/pc/demo/dropdown/split-button.spec.ts create mode 100644 examples/docs/resources/pc/demo/dropdown/title.spec.ts create mode 100644 examples/docs/resources/pc/demo/dropdown/trigger.spec.ts create mode 100644 examples/docs/resources/pc/demo/espace/data.spec.ts create mode 100644 examples/docs/resources/pc/demo/fall-menu/custom-menuitem.spec.ts create mode 100644 examples/docs/resources/pc/demo/fall-menu/custom-slider-icon.spec.ts create mode 100644 examples/docs/resources/pc/demo/fall-menu/data-resource.spec.ts create mode 100644 examples/docs/resources/pc/demo/file-upload/abort-quest.spec.ts create mode 100644 examples/docs/resources/pc/demo/file-upload/accept-file-image.spec.ts create mode 100644 examples/docs/resources/pc/demo/file-upload/basic-usage.spec.ts create mode 100644 examples/docs/resources/pc/demo/file-upload/clear-files.spec.ts create mode 100644 examples/docs/resources/pc/demo/file-upload/custom-prefix.spec.ts create mode 100644 examples/docs/resources/pc/demo/file-upload/custom-trigger.spec.ts create mode 100644 examples/docs/resources/pc/demo/file-upload/custom-upload-request.spec.ts create mode 100644 examples/docs/resources/pc/demo/file-upload/custom-upload-tip.spec.ts create mode 100644 examples/docs/resources/pc/demo/file-upload/drag-select-file.spec.ts create mode 100644 examples/docs/resources/pc/demo/file-upload/drag-upload.spec.ts create mode 100644 examples/docs/resources/pc/demo/file-upload/file-picture-card.spec.ts create mode 100644 examples/docs/resources/pc/demo/file-upload/http-request.spec.ts create mode 100644 examples/docs/resources/pc/demo/file-upload/image-size.spec.ts create mode 100644 examples/docs/resources/pc/demo/file-upload/manual-upload.spec.ts create mode 100644 examples/docs/resources/pc/demo/file-upload/max-file-count.spec.ts create mode 100644 examples/docs/resources/pc/demo/file-upload/mini-mode.spec.ts create mode 100644 examples/docs/resources/pc/demo/file-upload/multiple-file.spec.ts create mode 100644 examples/docs/resources/pc/demo/file-upload/picture-card.spec.ts create mode 100644 examples/docs/resources/pc/demo/file-upload/picture-list.spec.ts create mode 100644 examples/docs/resources/pc/demo/file-upload/prevent-delete-file.spec.ts create mode 100644 examples/docs/resources/pc/demo/file-upload/prevent-upload-file.spec.ts create mode 100644 examples/docs/resources/pc/demo/file-upload/size.spec.ts create mode 100644 examples/docs/resources/pc/demo/file-upload/upload-events.spec.ts create mode 100644 examples/docs/resources/pc/demo/file-upload/upload-file-list-thumb.spec.ts create mode 100644 examples/docs/resources/pc/demo/file-upload/upload-file-list.spec.ts create mode 100644 examples/docs/resources/pc/demo/file-upload/upload-limit.spec.ts create mode 100644 examples/docs/resources/pc/demo/file-upload/upload-request.spec.ts create mode 100644 examples/docs/resources/pc/demo/file-upload/upload-user-head.spec.ts create mode 100644 examples/docs/resources/pc/demo/file-upload/测试.jpg create mode 100644 examples/docs/resources/pc/demo/file-upload/测试.png create mode 100644 examples/docs/resources/pc/demo/file-upload/测试.svg create mode 100644 examples/docs/resources/pc/demo/floatbar/base.spec.ts create mode 100644 examples/docs/resources/pc/demo/floatbar/custom-floatbar-item.spec.ts create mode 100644 examples/docs/resources/pc/demo/floatbar/custom-style.spec.ts create mode 100644 examples/docs/resources/pc/demo/floatbar/operation-floatbar-item.spec.ts create mode 100644 examples/docs/resources/pc/demo/form/custom-validation-rule.spec.js create mode 100644 examples/docs/resources/pc/demo/form/form-clear-validate.spec.js create mode 100644 examples/docs/resources/pc/demo/form/form-disabled.spec.js create mode 100644 examples/docs/resources/pc/demo/form/form-in-row.spec.js create mode 100644 examples/docs/resources/pc/demo/form/form-row-col.spec.js create mode 100644 examples/docs/resources/pc/demo/form/form-validation.spec.js create mode 100644 examples/docs/resources/pc/demo/form/frequently-used-form.spec.js create mode 100644 examples/docs/resources/pc/demo/form/group-form.spec.js create mode 100644 examples/docs/resources/pc/demo/form/label-align.spec.js create mode 100644 examples/docs/resources/pc/demo/form/no-validate-to-add.spec.js create mode 100644 examples/docs/resources/pc/demo/form/novalid-tip.spec.js create mode 100644 examples/docs/resources/pc/demo/form/size.spec.js create mode 100644 examples/docs/resources/pc/demo/form/slot-label.spec.js create mode 100644 examples/docs/resources/pc/demo/form/validate-type.spec.js create mode 100644 examples/docs/resources/pc/demo/form/validation-position.spec.js create mode 100644 examples/docs/resources/pc/demo/fullscreen/example-api.spec.ts create mode 100644 examples/docs/resources/pc/demo/fullscreen/example-component.spec.ts create mode 100644 examples/docs/resources/pc/demo/grid/align/column-align.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/align/footer-align/center-footer-align.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/align/footer-align/left-footer-align.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/align/footer-align/right-footer-align.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/align/grid-align/center-grid-align.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/align/grid-align/left-grid-align.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/align/grid-align/right-grid-align.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/align/header-align/center-header-align.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/align/header-align/left-header-align.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/align/header-align/right-header-align.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/basicUsage-conf.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/basicUsage.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/column/class-name.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/custom-style/cell-style.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/custom-style/footer-style/footer-cell-style.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/custom-style/footer-style/footer-row-style.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/custom-style/header-style/header-cell-style.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/custom-style/header-style/header-row-style.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/custom-style/row-style.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/disable-radio.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/disable-selection.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/drag/column-drag.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/drag/row-drag-ctrl.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/drag/row-drag.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/edit/hasRowChange.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/edit/mutil-render.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/edit/revertData.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/fixed/left-fixed.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/fixed/multi-column-fixed.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/fixed/right-fixed.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/footer/footer-class-name.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/footer/footer-row-or-column-span.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/footer/footer-summation-empty.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/footer/footer-summation.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/grid_Example/gridEdit/custom-editor-select.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/grid_Example/gridEdit/custom-editor.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/grid_Example/gridEdit/inner-editor.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/grid_Example/gridEdit/popeditor-in-grid-remote-search.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/grid_Example/gridEdit/popeditor-in-grid.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/grid_Example/gridRenderer/custom-renderer.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/grid_Example/gridRenderer/inner-renderer.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/grid_Example/shortcutMenu/cell-menu.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/grid_Example/shortcutMenu/footer-menu.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/grid_Example/shortcutMenu/header-menu.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/grid_Example/shortcutMenu/menu-permissions.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/header/custom-grid-header.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/header/header-class-name.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/header/hide-grid-header.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/header/slot-header.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/highlight/highlight-cell.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/highlight/highlight-current-column.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/highlight/highlight-current-row.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/highlight/highlight-hover-column.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/highlight/highlight-hover-row.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/large-data/load-column.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/large-data/scroll-to.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/methods/set-active-cell.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/methods/set-all-selection.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/methods/set-current-row.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/methods/set-selection.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/methods/sort.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/methods/toggle-all-selection.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/methods/toggle-row-selection.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/news/async-colunm-render.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/news/auto-height.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/news/editor-events.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/pager/inner-default-pager.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/pager/inner-pager.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/pager/showSaveMsg.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/recalculate.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/row-grouping.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/rowGroupRender.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/sort/combinations-sort.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/sort/custom-sort.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/sort/default-sort.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/sort/server-sort.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/span/column-span.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/span/row-span/row-span-easy.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/span/row-span/row-span.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/stripe/stripe.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/summary/configuration-summary.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/summary/custom-summary.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/tiny-first-menu/adaptive-column-width.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/tiny-first-menu/adaptive-grid-off-width-height.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/tiny-first-menu/adaptive-un-column-width.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/tiny-first-menu/auto-load.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/tiny-first-menu/cell-editing.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/tiny-first-menu/clearData.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/tiny-first-menu/clearRadioRow.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/tiny-first-menu/clearSelection.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/tiny-first-menu/column-asyn-rendering.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/tiny-first-menu/column-min-width.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/tiny-first-menu/column-width.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/tiny-first-menu/columns.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/tiny-first-menu/copy-row-data.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/tiny-first-menu/custom-editing.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/tiny-first-menu/custom-operation-column.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/tiny-first-menu/custom-serial-column.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/tiny-first-menu/custom-toolbar.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/tiny-first-menu/default-serial-column.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/tiny-first-menu/editor-is-salid-always.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/tiny-first-menu/empty-data-default-tip.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/tiny-first-menu/empty-data-tip.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/tiny-first-menu/fixed-column-width.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/tiny-first-menu/fixed-grid-height.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/tiny-first-menu/format-value.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/tiny-first-menu/full-data-loading.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/tiny-first-menu/grid-border.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/tiny-first-menu/grid-full-screen-height.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/tiny-first-menu/grid-full-screen.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/tiny-first-menu/grid-large-tree-data.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/tiny-first-menu/grid-loading-off-tip.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/tiny-first-menu/grid-loading-tip.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/tiny-first-menu/grid-size-mini.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/tiny-first-menu/grid-size-small.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/tiny-first-menu/grid-size.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/tiny-first-menu/insert-delete-update.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/tiny-first-menu/max-min-grid-height.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/tiny-first-menu/min-grid-height.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/tiny-first-menu/min-width.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/tiny-first-menu/radio-config.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/tiny-first-menu/refresh-grid.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/tiny-first-menu/request-service.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/tiny-first-menu/resize-column-width.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/tiny-first-menu/row-editing.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/tiny-first-menu/row-id.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/tiny-first-menu/save-data.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/tiny-first-menu/scroll-paging.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/tiny-first-menu/start-index.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/tiny-first-menu/static-data.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/tiny-first-menu/status-of-editing.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/tiny-first-menu/status-of-noediting.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/tiny-first-menu/trigger-mode-db-editing.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/tiny-first-menu/trigger-mode-for-editing.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/tiny-first-menu/trigger-mode-hm-editing.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/tiny-first-menu/virtual-rolling.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/tip/cell-tip.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/tip/column-header-tip.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/toolbar/cancel-delete.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/toolbar/insert-remove-rows.spec.js create mode 100644 examples/docs/resources/pc/demo/grid/toolbar/toolbar-op-config.spec.js create mode 100644 examples/docs/resources/pc/demo/hrapprover/basic-usage.spec.ts create mode 100644 examples/docs/resources/pc/demo/hrapprover/category-type.spec.ts create mode 100644 examples/docs/resources/pc/demo/hrapprover/custom-service.spec.ts create mode 100644 examples/docs/resources/pc/demo/hrapprover/disabled.spec.ts create mode 100644 examples/docs/resources/pc/demo/image/auto-fit-container-size.spec.ts create mode 100644 examples/docs/resources/pc/demo/image/basic-usage.spec.ts create mode 100644 examples/docs/resources/pc/demo/image/custom-load-failed-text.spec.ts create mode 100644 examples/docs/resources/pc/demo/image/custom-placeholder.spec.ts create mode 100644 examples/docs/resources/pc/demo/image/lazy-load.spec.ts create mode 100644 examples/docs/resources/pc/demo/image/load-error.spec.ts create mode 100644 examples/docs/resources/pc/demo/image/load-event.spec.ts create mode 100644 examples/docs/resources/pc/demo/image/preview-in-dialog.spec.ts create mode 100644 examples/docs/resources/pc/demo/image/preview-src-list.spec.ts create mode 100644 examples/docs/resources/pc/demo/image/preview-z-index.spec.ts create mode 100644 examples/docs/resources/pc/demo/input/autocomplete.spec.ts create mode 100644 examples/docs/resources/pc/demo/input/autofocus.spec.ts create mode 100644 examples/docs/resources/pc/demo/input/autosize.spec.ts create mode 100644 examples/docs/resources/pc/demo/input/basic-usage.spec.ts create mode 100644 examples/docs/resources/pc/demo/input/clearable.spec.ts create mode 100644 examples/docs/resources/pc/demo/input/cols.spec.ts create mode 100644 examples/docs/resources/pc/demo/input/counter.spec.ts create mode 100644 examples/docs/resources/pc/demo/input/event-blur.spec.ts create mode 100644 examples/docs/resources/pc/demo/input/event-change.spec.ts create mode 100644 examples/docs/resources/pc/demo/input/event-clear.spec.ts create mode 100644 examples/docs/resources/pc/demo/input/event-focus.spec.ts create mode 100644 examples/docs/resources/pc/demo/input/form.spec.ts create mode 100644 examples/docs/resources/pc/demo/input/label.spec.ts create mode 100644 examples/docs/resources/pc/demo/input/max.spec.ts create mode 100644 examples/docs/resources/pc/demo/input/maxlength.spec.ts create mode 100644 examples/docs/resources/pc/demo/input/method-addMemory.spec.ts create mode 100644 examples/docs/resources/pc/demo/input/method-blur.spec.ts create mode 100644 examples/docs/resources/pc/demo/input/method-focus.spec.ts create mode 100644 examples/docs/resources/pc/demo/input/method-select.spec.ts create mode 100644 examples/docs/resources/pc/demo/input/min.spec.ts create mode 100644 examples/docs/resources/pc/demo/input/name.spec.ts create mode 100644 examples/docs/resources/pc/demo/input/prefix-icon.spec.ts create mode 100644 examples/docs/resources/pc/demo/input/resize.spec.ts create mode 100644 examples/docs/resources/pc/demo/input/rows.spec.ts create mode 100644 examples/docs/resources/pc/demo/input/show-password.spec.ts create mode 100644 examples/docs/resources/pc/demo/input/show-word-limit.spec.ts create mode 100644 examples/docs/resources/pc/demo/input/size.spec.ts create mode 100644 examples/docs/resources/pc/demo/input/slot-append.spec.ts create mode 100644 examples/docs/resources/pc/demo/input/slot-prefix.spec.ts create mode 100644 examples/docs/resources/pc/demo/input/slot-prepend.spec.ts create mode 100644 examples/docs/resources/pc/demo/input/slot-suffix.spec.ts create mode 100644 examples/docs/resources/pc/demo/input/step.spec.ts create mode 100644 examples/docs/resources/pc/demo/input/suffix-icon.spec.ts create mode 100644 examples/docs/resources/pc/demo/input/tabindex.spec.ts create mode 100644 examples/docs/resources/pc/demo/input/type.spec.ts create mode 100644 examples/docs/resources/pc/demo/input/validate-event.spec.ts create mode 100644 examples/docs/resources/pc/demo/ip-address/blur.spec.ts create mode 100644 examples/docs/resources/pc/demo/ip-address/change.spec.ts create mode 100644 examples/docs/resources/pc/demo/ip-address/delimiter.spec.ts create mode 100644 examples/docs/resources/pc/demo/ip-address/disabled.spec.ts create mode 100644 examples/docs/resources/pc/demo/ip-address/focus.spec.ts create mode 100644 examples/docs/resources/pc/demo/ip-address/input.spec.ts create mode 100644 examples/docs/resources/pc/demo/ip-address/ipv4-type.spec.ts create mode 100644 examples/docs/resources/pc/demo/ip-address/ipv6-type.spec.ts create mode 100644 examples/docs/resources/pc/demo/ip-address/readonly.spec.ts create mode 100644 examples/docs/resources/pc/demo/ip-address/select.spec.ts create mode 100644 examples/docs/resources/pc/demo/ip-address/size.spec.ts create mode 100644 examples/docs/resources/pc/demo/ip-address/slots.spec.ts create mode 100644 examples/docs/resources/pc/demo/layout/alignment.spec.ts create mode 100644 examples/docs/resources/pc/demo/layout/basic-usage.spec.ts create mode 100644 examples/docs/resources/pc/demo/layout/gutter.spec.ts create mode 100644 examples/docs/resources/pc/demo/layout/offset.spec.ts create mode 100644 examples/docs/resources/pc/demo/layout/order.spec.ts create mode 100644 examples/docs/resources/pc/demo/layout/responsive-layout.spec.ts create mode 100644 examples/docs/resources/pc/demo/link-menu/custom-foot.spec.ts create mode 100644 examples/docs/resources/pc/demo/link-menu/custom-icon.spec.ts create mode 100644 examples/docs/resources/pc/demo/link-menu/data-resource.spec.ts create mode 100644 examples/docs/resources/pc/demo/link-menu/get-menu-data-sync.spec.ts create mode 100644 examples/docs/resources/pc/demo/link-menu/menu-items.spec.ts create mode 100644 examples/docs/resources/pc/demo/link/basic-usage.spec.ts create mode 100644 examples/docs/resources/pc/demo/link/config-href.spec.ts create mode 100644 examples/docs/resources/pc/demo/link/custom-icon.spec.ts create mode 100644 examples/docs/resources/pc/demo/link/dynamic-disable.spec.ts create mode 100644 examples/docs/resources/pc/demo/link/focus-no-underline.spec.ts create mode 100644 examples/docs/resources/pc/demo/link/link-style.spec.ts create mode 100644 examples/docs/resources/pc/demo/loading/background.spec.ts create mode 100644 examples/docs/resources/pc/demo/loading/basic-usage.spec.ts create mode 100644 examples/docs/resources/pc/demo/loading/body.spec.ts create mode 100644 examples/docs/resources/pc/demo/loading/custom-class.spec.ts create mode 100644 examples/docs/resources/pc/demo/loading/fullscreen.spec.ts create mode 100644 examples/docs/resources/pc/demo/loading/loading-tip-text.spec.ts create mode 100644 examples/docs/resources/pc/demo/loading/size.spec.ts create mode 100644 examples/docs/resources/pc/demo/loading/spinner.spec.ts create mode 100644 examples/docs/resources/pc/demo/loading/target.spec.ts create mode 100644 examples/docs/resources/pc/demo/milestone/basic-usage.spec.ts create mode 100644 examples/docs/resources/pc/demo/milestone/custom-bottom.spec.ts create mode 100644 examples/docs/resources/pc/demo/milestone/custom-flag.spec.ts create mode 100644 examples/docs/resources/pc/demo/milestone/custom-icon-slot.spec.ts create mode 100644 examples/docs/resources/pc/demo/milestone/custom-top.spec.ts create mode 100644 examples/docs/resources/pc/demo/milestone/data-field-mapping.spec.ts create mode 100644 examples/docs/resources/pc/demo/milestone/data-source.spec.ts create mode 100644 examples/docs/resources/pc/demo/milestone/flag-before.spec.ts create mode 100644 examples/docs/resources/pc/demo/milestone/line-style.spec.ts create mode 100644 examples/docs/resources/pc/demo/milestone/milestone-events.spec.ts create mode 100644 examples/docs/resources/pc/demo/milestone/milestone-space.spec.ts create mode 100644 examples/docs/resources/pc/demo/milestone/milestones-status.spec.ts create mode 100644 examples/docs/resources/pc/demo/milestone/show-number.spec.ts create mode 100644 examples/docs/resources/pc/demo/milestone/solid-style.spec.ts create mode 100644 examples/docs/resources/pc/demo/milestone/start-index.spec.ts create mode 100644 examples/docs/resources/pc/demo/modal/base.spec.ts create mode 100644 examples/docs/resources/pc/demo/modal/cancel-event.spec.ts create mode 100644 examples/docs/resources/pc/demo/modal/close-event.spec.ts create mode 100644 examples/docs/resources/pc/demo/modal/confirm-event.spec.ts create mode 100644 examples/docs/resources/pc/demo/modal/duration.spec.ts create mode 100644 examples/docs/resources/pc/demo/modal/esc-closable.spec.ts create mode 100644 examples/docs/resources/pc/demo/modal/footer-slot.spec.ts create mode 100644 examples/docs/resources/pc/demo/modal/fullscreen.spec.ts create mode 100644 examples/docs/resources/pc/demo/modal/grid.spec.ts create mode 100644 examples/docs/resources/pc/demo/modal/hide-event.spec.ts create mode 100644 examples/docs/resources/pc/demo/modal/id.spec.ts create mode 100644 examples/docs/resources/pc/demo/modal/is-form-reset.spec.ts create mode 100644 examples/docs/resources/pc/demo/modal/lock-scroll.spec.ts create mode 100644 examples/docs/resources/pc/demo/modal/lock-view.spec.ts create mode 100644 examples/docs/resources/pc/demo/modal/mask-closable.spec.ts create mode 100644 examples/docs/resources/pc/demo/modal/message.spec.ts create mode 100644 examples/docs/resources/pc/demo/modal/min-height.spec.ts create mode 100644 examples/docs/resources/pc/demo/modal/min-width.spec.ts create mode 100644 examples/docs/resources/pc/demo/modal/resize.spec.ts create mode 100644 examples/docs/resources/pc/demo/modal/show-event.spec.ts create mode 100644 examples/docs/resources/pc/demo/modal/showFooter.spec.ts create mode 100644 examples/docs/resources/pc/demo/modal/showHeader.spec.ts create mode 100644 examples/docs/resources/pc/demo/modal/status.spec.ts create mode 100644 examples/docs/resources/pc/demo/modal/title.spec.ts create mode 100644 examples/docs/resources/pc/demo/modal/top.spec.ts create mode 100644 examples/docs/resources/pc/demo/modal/type.spec.ts create mode 100644 examples/docs/resources/pc/demo/modal/value.spec.ts create mode 100644 examples/docs/resources/pc/demo/modal/zIndex.spec.ts create mode 100644 examples/docs/resources/pc/demo/modal/zoom-event.spec.ts create mode 100644 examples/docs/resources/pc/demo/nav-menu/basic-usage.spec.ts create mode 100644 examples/docs/resources/pc/demo/nav-menu/before-skip-prevent.spec.ts create mode 100644 examples/docs/resources/pc/demo/nav-menu/before-skip.spec.ts create mode 100644 examples/docs/resources/pc/demo/nav-menu/custom-service.spec.ts create mode 100644 examples/docs/resources/pc/demo/nav-menu/data-resource.spec.ts create mode 100644 examples/docs/resources/pc/demo/nav-menu/overflow.spec.ts create mode 100644 examples/docs/resources/pc/demo/nav-menu/slot-logo.spec.ts create mode 100644 examples/docs/resources/pc/demo/nav-menu/slot-toolbar.spec.ts create mode 100644 examples/docs/resources/pc/demo/notify/basic-usage.spec.ts create mode 100644 examples/docs/resources/pc/demo/notify/beforeClose.spec.ts create mode 100644 examples/docs/resources/pc/demo/notify/closeIcon.spec.ts create mode 100644 examples/docs/resources/pc/demo/notify/debounceDelay.spec.ts create mode 100644 examples/docs/resources/pc/demo/notify/duration.spec.ts create mode 100644 examples/docs/resources/pc/demo/notify/message.spec.ts create mode 100644 examples/docs/resources/pc/demo/notify/onClose.spec.ts create mode 100644 examples/docs/resources/pc/demo/notify/position.spec.ts create mode 100644 examples/docs/resources/pc/demo/notify/showClose.spec.ts create mode 100644 examples/docs/resources/pc/demo/notify/showIcon.spec.ts create mode 100644 examples/docs/resources/pc/demo/notify/statusIcon.spec.ts create mode 100644 examples/docs/resources/pc/demo/notify/title.spec.ts create mode 100644 examples/docs/resources/pc/demo/notify/type.spec.ts create mode 100644 examples/docs/resources/pc/demo/notify/verticalOffset.spec.ts create mode 100644 examples/docs/resources/pc/demo/numeric/about-step.spec.ts create mode 100644 examples/docs/resources/pc/demo/numeric/allow-empty.spec.ts create mode 100644 examples/docs/resources/pc/demo/numeric/basic-usage.spec.ts create mode 100644 examples/docs/resources/pc/demo/numeric/blur-event.spec.ts create mode 100644 examples/docs/resources/pc/demo/numeric/calculate-according-to-num-of-goods.spec.ts create mode 100644 examples/docs/resources/pc/demo/numeric/change-event.spec.ts create mode 100644 examples/docs/resources/pc/demo/numeric/controls-position.spec.ts create mode 100644 examples/docs/resources/pc/demo/numeric/controls.spec.ts create mode 100644 examples/docs/resources/pc/demo/numeric/dynamic-disabled.spec.ts create mode 100644 examples/docs/resources/pc/demo/numeric/focus-event.spec.ts create mode 100644 examples/docs/resources/pc/demo/numeric/max-min.spec.ts create mode 100644 examples/docs/resources/pc/demo/numeric/mouse-wheel.spec.ts create mode 100644 examples/docs/resources/pc/demo/numeric/numeric-size.spec.ts create mode 100644 examples/docs/resources/pc/demo/numeric/precision.spec.ts create mode 100644 examples/docs/resources/pc/demo/pager/pager-disabled.spec.js create mode 100644 examples/docs/resources/pc/demo/pager/pager-size.spec.js create mode 100644 examples/docs/resources/pc/demo/pop-upload/basic-usage.spec.ts create mode 100644 examples/docs/resources/pc/demo/pop-upload/before-upload.spec.ts create mode 100644 examples/docs/resources/pc/demo/pop-upload/custom-request-headers.spec.ts create mode 100644 examples/docs/resources/pc/demo/pop-upload/data.spec.ts create mode 100644 examples/docs/resources/pc/demo/pop-upload/file-limit.spec.ts create mode 100644 examples/docs/resources/pc/demo/pop-upload/file-type.spec.ts create mode 100644 examples/docs/resources/pc/demo/pop-upload/fill-button-text.spec.ts create mode 100644 examples/docs/resources/pc/demo/pop-upload/http-request.spec.ts create mode 100644 examples/docs/resources/pc/demo/pop-upload/max-upload-file-size.spec.ts create mode 100644 examples/docs/resources/pc/demo/pop-upload/prevent-delete-file.spec.ts create mode 100644 examples/docs/resources/pc/demo/pop-upload/size.spec.ts create mode 100644 examples/docs/resources/pc/demo/pop-upload/upload-name.spec.ts create mode 100644 examples/docs/resources/pc/demo/pop-upload/测试.jpg create mode 100644 examples/docs/resources/pc/demo/pop-upload/测试.png create mode 100644 examples/docs/resources/pc/demo/pop-upload/测试.svg create mode 100644 examples/docs/resources/pc/demo/popover/arrow-offset.spec.js create mode 100644 examples/docs/resources/pc/demo/popover/basic-usage.spec.js create mode 100644 examples/docs/resources/pc/demo/popover/close-delay.spec.js create mode 100644 examples/docs/resources/pc/demo/popover/custom-tip-text.spec.js create mode 100644 examples/docs/resources/pc/demo/popover/custom-transition.spec.js create mode 100644 examples/docs/resources/pc/demo/popover/dynamic-disable.spec.js create mode 100644 examples/docs/resources/pc/demo/popover/frame-offset.spec.js create mode 100644 examples/docs/resources/pc/demo/popover/hidden-arrow.spec.js create mode 100644 examples/docs/resources/pc/demo/popover/open-delay.spec.js create mode 100644 examples/docs/resources/pc/demo/popover/popover-content.spec.js create mode 100644 examples/docs/resources/pc/demo/popover/popover-events.spec.js create mode 100644 examples/docs/resources/pc/demo/popover/popover-placement.spec.js create mode 100644 examples/docs/resources/pc/demo/popover/popover-width.spec.js create mode 100644 examples/docs/resources/pc/demo/popover/popper-class.spec.js create mode 100644 examples/docs/resources/pc/demo/popover/popper-options.spec.js create mode 100644 examples/docs/resources/pc/demo/popover/trigger-mode.spec.js create mode 100644 examples/docs/resources/pc/demo/popover/trigger-reference.spec.js create mode 100644 examples/docs/resources/pc/demo/progress/basic-usage.spec.ts create mode 100644 examples/docs/resources/pc/demo/progress/custom-color.spec.ts create mode 100644 examples/docs/resources/pc/demo/progress/dynamic-control-changes.spec.ts create mode 100644 examples/docs/resources/pc/demo/progress/format-text.spec.ts create mode 100644 examples/docs/resources/pc/demo/progress/progress-status.spec.ts create mode 100644 examples/docs/resources/pc/demo/progress/progress-type-circle.spec.ts create mode 100644 examples/docs/resources/pc/demo/progress/progress-type-dashboard.spec.ts create mode 100644 examples/docs/resources/pc/demo/progress/progress-type.spec.ts create mode 100644 examples/docs/resources/pc/demo/progress/progress-width.spec.ts create mode 100644 examples/docs/resources/pc/demo/progress/text-inside-or-no-text.spec.ts create mode 100644 examples/docs/resources/pc/demo/radio/active-color.spec.ts create mode 100644 examples/docs/resources/pc/demo/radio/basic-usage.spec.ts create mode 100644 examples/docs/resources/pc/demo/radio/dynamic-disable.spec.ts create mode 100644 examples/docs/resources/pc/demo/radio/group-options.spec.ts create mode 100644 examples/docs/resources/pc/demo/radio/radio-button.spec.ts create mode 100644 examples/docs/resources/pc/demo/radio/radio-default.spec.ts create mode 100644 examples/docs/resources/pc/demo/radio/radio-events.spec.ts create mode 100644 examples/docs/resources/pc/demo/radio/radio-size.spec.ts create mode 100644 examples/docs/resources/pc/demo/radio/radio-text.spec.ts create mode 100644 examples/docs/resources/pc/demo/radio/radio-value.spec.ts create mode 100644 examples/docs/resources/pc/demo/radio/vertical.spec.ts create mode 100644 examples/docs/resources/pc/demo/radio/with-border.spec.ts create mode 100644 examples/docs/resources/pc/demo/rate/allow-half.spec.js create mode 100644 examples/docs/resources/pc/demo/rate/basic-usage.spec.js create mode 100644 examples/docs/resources/pc/demo/rate/custom-3-threshold-colors.spec.js create mode 100644 examples/docs/resources/pc/demo/rate/custom-3-threshold-icon.spec.js create mode 100644 examples/docs/resources/pc/demo/rate/disabled-not-selected-class.spec.js create mode 100644 examples/docs/resources/pc/demo/rate/disabled-not-selected-color.spec.js create mode 100644 examples/docs/resources/pc/demo/rate/dynamic-disable.spec.js create mode 100644 examples/docs/resources/pc/demo/rate/max-score.spec.js create mode 100644 examples/docs/resources/pc/demo/rate/not-selected-class.spec.js create mode 100644 examples/docs/resources/pc/demo/rate/not-selected-color.spec.js create mode 100644 examples/docs/resources/pc/demo/rate/radio-rate.spec.js create mode 100644 examples/docs/resources/pc/demo/rate/rate-events.spec.js create mode 100644 examples/docs/resources/pc/demo/rate/show-score.spec.js create mode 100644 examples/docs/resources/pc/demo/rate/size-and-space.spec.js create mode 100644 examples/docs/resources/pc/demo/rate/text-on-bottom.spec.js create mode 100644 examples/docs/resources/pc/demo/rate/texts-and-text-color.spec.js create mode 100644 examples/docs/resources/pc/demo/rate/threshold-value.spec.js create mode 100644 examples/docs/resources/pc/demo/scroll-text/basic-usage.spec.ts create mode 100644 examples/docs/resources/pc/demo/scroll-text/custom-scroll-text.spec.ts create mode 100644 examples/docs/resources/pc/demo/scroll-text/custom-text-style.spec.ts create mode 100644 examples/docs/resources/pc/demo/scroll-text/hover-stop.spec.ts create mode 100644 examples/docs/resources/pc/demo/scroll-text/scroll-direction.spec.ts create mode 100644 examples/docs/resources/pc/demo/scroll-text/scroll-time.spec.ts create mode 100644 examples/docs/resources/pc/demo/scroll-text/slots.spec.ts create mode 100644 examples/docs/resources/pc/demo/search/basic-usage.spec.ts create mode 100644 examples/docs/resources/pc/demo/search/change-events.spec.ts create mode 100644 examples/docs/resources/pc/demo/search/clearable.spec.ts create mode 100644 examples/docs/resources/pc/demo/search/custom-search-types.spec.ts create mode 100644 examples/docs/resources/pc/demo/search/default-value.spec.ts create mode 100644 examples/docs/resources/pc/demo/search/mini-mode.spec.ts create mode 100644 examples/docs/resources/pc/demo/search/search-events.spec.ts create mode 100644 examples/docs/resources/pc/demo/search/search-types.spec.ts create mode 100644 examples/docs/resources/pc/demo/search/select-events.spec.ts create mode 100644 examples/docs/resources/pc/demo/search/show-selected-types.spec.ts create mode 100644 examples/docs/resources/pc/demo/search/slot-prefix.spec.ts create mode 100644 examples/docs/resources/pc/demo/search/transparent-mode.spec.ts create mode 100644 examples/docs/resources/pc/demo/select/allow-create.spec.ts create mode 100644 examples/docs/resources/pc/demo/select/automatic-dropdown.spec.ts create mode 100644 examples/docs/resources/pc/demo/select/basic-usage.spec.ts create mode 100644 examples/docs/resources/pc/demo/select/binding-obj.spec.ts create mode 100644 examples/docs/resources/pc/demo/select/cache-usage.spec.ts create mode 100644 examples/docs/resources/pc/demo/select/clearable.spec.ts create mode 100644 examples/docs/resources/pc/demo/select/collapse-tags.spec.ts create mode 100644 examples/docs/resources/pc/demo/select/custom-options.spec.ts create mode 100644 examples/docs/resources/pc/demo/select/custom-prefix.spec.ts create mode 100644 examples/docs/resources/pc/demo/select/custom-reference-slot.spec.ts create mode 100644 examples/docs/resources/pc/demo/select/disable-grid-select-radio.spec.ts create mode 100644 examples/docs/resources/pc/demo/select/disabled-and-selected-options.spec.ts create mode 100644 examples/docs/resources/pc/demo/select/disabled-options.spec.ts create mode 100644 examples/docs/resources/pc/demo/select/disabled.spec.ts create mode 100644 examples/docs/resources/pc/demo/select/envts-change.spec.ts create mode 100644 examples/docs/resources/pc/demo/select/envts-remove.spec.ts create mode 100644 examples/docs/resources/pc/demo/select/filter-method.spec.ts create mode 100644 examples/docs/resources/pc/demo/select/focus-remote-method.spec.ts create mode 100644 examples/docs/resources/pc/demo/select/hide-select-input-border.spec.ts create mode 100644 examples/docs/resources/pc/demo/select/input-box-type.spec.ts create mode 100644 examples/docs/resources/pc/demo/select/is-drop-inherit-width.spec.ts create mode 100644 examples/docs/resources/pc/demo/select/manual-focus-blur.spec.ts create mode 100644 examples/docs/resources/pc/demo/select/memoize-usage.spec.ts create mode 100644 examples/docs/resources/pc/demo/select/multiple-limit.spec.ts create mode 100644 examples/docs/resources/pc/demo/select/multiple.spec.ts create mode 100644 examples/docs/resources/pc/demo/select/name.spec.ts create mode 100644 examples/docs/resources/pc/demo/select/nest-checkbox-grid-clearable.spec.ts create mode 100644 examples/docs/resources/pc/demo/select/nest-checkbox-grid.spec.ts create mode 100644 examples/docs/resources/pc/demo/select/nest-checkbox-tree.spec.ts create mode 100644 examples/docs/resources/pc/demo/select/nest-filterable-tree.spec.ts create mode 100644 examples/docs/resources/pc/demo/select/nest-grid-remote-filter.spec.ts create mode 100644 examples/docs/resources/pc/demo/select/nest-radio-grid-much-data.spec.ts create mode 100644 examples/docs/resources/pc/demo/select/nest-radio-grid.spec.ts create mode 100644 examples/docs/resources/pc/demo/select/nest-radio-tree.spec.ts create mode 100644 examples/docs/resources/pc/demo/select/nest-remote-grid.spec.ts create mode 100644 examples/docs/resources/pc/demo/select/no-data-text.spec.ts create mode 100644 examples/docs/resources/pc/demo/select/no-match-text.spec.ts create mode 100644 examples/docs/resources/pc/demo/select/optimization.spec.ts create mode 100644 examples/docs/resources/pc/demo/select/option-group-disable.spec.ts create mode 100644 examples/docs/resources/pc/demo/select/option-group.spec.ts create mode 100644 examples/docs/resources/pc/demo/select/popup-style-position.spec.ts create mode 100644 examples/docs/resources/pc/demo/select/remote-method.spec.ts create mode 100644 examples/docs/resources/pc/demo/select/remote-search-allow-copy.spec.ts create mode 100644 examples/docs/resources/pc/demo/select/search-allow-copy.spec.ts create mode 100644 examples/docs/resources/pc/demo/select/searchable.spec.ts create mode 100644 examples/docs/resources/pc/demo/select/set-input-value.spec.ts create mode 100644 examples/docs/resources/pc/demo/select/show-alloption.spec.ts create mode 100644 examples/docs/resources/pc/demo/select/show-tip.spec.ts create mode 100644 examples/docs/resources/pc/demo/select/size-medium.spec.ts create mode 100644 examples/docs/resources/pc/demo/select/size-mini.spec.ts create mode 100644 examples/docs/resources/pc/demo/select/size-small.spec.ts create mode 100644 examples/docs/resources/pc/demo/select/slot-default.spec.ts create mode 100644 examples/docs/resources/pc/demo/select/slot-empty.spec.ts create mode 100644 examples/docs/resources/pc/demo/select/slot-footer.spec.ts create mode 100644 examples/docs/resources/pc/demo/select/tag-copy-all.spec.ts create mode 100644 examples/docs/resources/pc/demo/select/tag-select.spec.ts create mode 100644 examples/docs/resources/pc/demo/slide-bar/basic-usage.spec.ts create mode 100644 examples/docs/resources/pc/demo/slide-bar/custom-content.spec.ts create mode 100644 examples/docs/resources/pc/demo/slide-bar/custom-tag.spec.ts create mode 100644 examples/docs/resources/pc/demo/slide-bar/slide-bar-events.spec.ts create mode 100644 examples/docs/resources/pc/demo/slide-bar/wheel-blocks.spec.ts create mode 100644 examples/docs/resources/pc/demo/slider/about-step.spec.ts create mode 100644 examples/docs/resources/pc/demo/slider/basic-usage.spec.ts create mode 100644 examples/docs/resources/pc/demo/slider/dynamic-disable.spec.ts create mode 100644 examples/docs/resources/pc/demo/slider/format-tooltip.spec.ts create mode 100644 examples/docs/resources/pc/demo/slider/max-min.spec.ts create mode 100644 examples/docs/resources/pc/demo/slider/range-select.spec.ts create mode 100644 examples/docs/resources/pc/demo/slider/shortcut-operation.spec.ts create mode 100644 examples/docs/resources/pc/demo/slider/show-iput.spec.ts create mode 100644 examples/docs/resources/pc/demo/slider/show-tip.spec.ts create mode 100644 examples/docs/resources/pc/demo/slider/slider-event-change.spec.ts create mode 100644 examples/docs/resources/pc/demo/slider/slider-event-start.spec.ts create mode 100644 examples/docs/resources/pc/demo/slider/slider-event-stop.spec.ts create mode 100644 examples/docs/resources/pc/demo/slider/slider-slot.spec.ts create mode 100644 examples/docs/resources/pc/demo/slider/vertical-mode.spec.ts create mode 100644 examples/docs/resources/pc/demo/split/basic-usage.spec.ts create mode 100644 examples/docs/resources/pc/demo/split/basic-usage1.spec.ts create mode 100644 examples/docs/resources/pc/demo/split/left-right.spec.ts create mode 100644 examples/docs/resources/pc/demo/split/moveend-event.spec.ts create mode 100644 examples/docs/resources/pc/demo/split/movestart-event.spec.ts create mode 100644 examples/docs/resources/pc/demo/split/moving-event.spec.ts create mode 100644 examples/docs/resources/pc/demo/split/nested-use.spec.ts create mode 100644 examples/docs/resources/pc/demo/split/split-mode.spec.ts create mode 100644 examples/docs/resources/pc/demo/split/split-threshold.spec.ts create mode 100644 examples/docs/resources/pc/demo/split/top-bottom-solt.spec.ts create mode 100644 examples/docs/resources/pc/demo/split/trigger-slot.spec.ts create mode 100644 examples/docs/resources/pc/demo/steps/advanced-steps.spec.ts create mode 100644 examples/docs/resources/pc/demo/steps/click.spec.ts create mode 100644 examples/docs/resources/pc/demo/steps/custom-steps-item.spec.ts create mode 100644 examples/docs/resources/pc/demo/steps/data-resource.spec.ts create mode 100644 examples/docs/resources/pc/demo/steps/node-status.spec.ts create mode 100644 examples/docs/resources/pc/demo/steps/normal-steps.spec.ts create mode 100644 examples/docs/resources/pc/demo/steps/order-progress.spec.ts create mode 100644 examples/docs/resources/pc/demo/steps/show-divider.spec.ts create mode 100644 examples/docs/resources/pc/demo/steps/size.spec.ts create mode 100644 examples/docs/resources/pc/demo/steps/slot-active-node-desc.spec.ts create mode 100644 examples/docs/resources/pc/demo/steps/slot.spec.ts create mode 100644 examples/docs/resources/pc/demo/steps/text-position.spec.ts create mode 100644 examples/docs/resources/pc/demo/steps/timeline-steps.spec.ts create mode 100644 examples/docs/resources/pc/demo/tabs/basic-usage.spec.ts create mode 100644 examples/docs/resources/pc/demo/tabs/before-leave.spec.ts create mode 100644 examples/docs/resources/pc/demo/tabs/custom-more-icon.spec.ts create mode 100644 examples/docs/resources/pc/demo/tabs/custom-tab-title.spec.ts create mode 100644 examples/docs/resources/pc/demo/tabs/position-bottom.spec.ts create mode 100644 examples/docs/resources/pc/demo/tabs/position-left.spec.ts create mode 100644 examples/docs/resources/pc/demo/tabs/position-right.spec.ts create mode 100644 examples/docs/resources/pc/demo/tabs/position.spec.ts create mode 100644 examples/docs/resources/pc/demo/tabs/show-different-grid-data.spec.ts create mode 100644 examples/docs/resources/pc/demo/tabs/stretch-wh.spec.ts create mode 100644 examples/docs/resources/pc/demo/tabs/tab-style-bordercard.spec.ts create mode 100644 examples/docs/resources/pc/demo/tabs/tab-style-card.spec.ts create mode 100644 examples/docs/resources/pc/demo/tabs/tabdata-title.spec.ts create mode 100644 examples/docs/resources/pc/demo/tabs/tabs-draggable.spec.ts create mode 100644 examples/docs/resources/pc/demo/tabs/tabs-events-add.spec.ts create mode 100644 examples/docs/resources/pc/demo/tabs/tabs-events-click.spec.ts create mode 100644 examples/docs/resources/pc/demo/tabs/tabs-events-close.spec.ts create mode 100644 examples/docs/resources/pc/demo/tabs/tabs-events-edit.spec.ts create mode 100644 examples/docs/resources/pc/demo/tabs/tabs-second-layer.spec.ts create mode 100644 examples/docs/resources/pc/demo/tabs/with-add.spec.ts create mode 100644 examples/docs/resources/pc/demo/tag/basic-usage.spec.ts create mode 100644 examples/docs/resources/pc/demo/tag/closeable.spec.ts create mode 100644 examples/docs/resources/pc/demo/tag/color3.spec.ts create mode 100644 examples/docs/resources/pc/demo/tag/create.spec.ts create mode 100644 examples/docs/resources/pc/demo/tag/disabled.spec.ts create mode 100644 examples/docs/resources/pc/demo/tag/effect.spec.ts create mode 100644 examples/docs/resources/pc/demo/tag/hit.spec.ts create mode 100644 examples/docs/resources/pc/demo/tag/slot-default.spec.ts create mode 100644 examples/docs/resources/pc/demo/tag/tag-event-click.spec.ts create mode 100644 examples/docs/resources/pc/demo/tag/tag-event-close.spec.ts create mode 100644 examples/docs/resources/pc/demo/tag/tag-size.spec.ts create mode 100644 examples/docs/resources/pc/demo/text-popup/basic-usage.spec.ts create mode 100644 examples/docs/resources/pc/demo/text-popup/clear-value.spec.ts create mode 100644 examples/docs/resources/pc/demo/text-popup/placeholder.spec.ts create mode 100644 examples/docs/resources/pc/demo/text-popup/readonly.spec.ts create mode 100644 examples/docs/resources/pc/demo/text-popup/separtor.spec.ts create mode 100644 examples/docs/resources/pc/demo/text-popup/value.spec.ts create mode 100644 examples/docs/resources/pc/demo/text-popup/width.spec.ts create mode 100644 examples/docs/resources/pc/demo/time-line/basic-usage.spec.ts create mode 100644 examples/docs/resources/pc/demo/time-line/custom-normal-step.spec.ts create mode 100644 examples/docs/resources/pc/demo/time-line/custom-vertical-step.spec.ts create mode 100644 examples/docs/resources/pc/demo/time-line/different-data.spec.ts create mode 100644 examples/docs/resources/pc/demo/time-line/horizontal-step.spec.ts create mode 100644 examples/docs/resources/pc/demo/time-line/set-start-value.spec.ts create mode 100644 examples/docs/resources/pc/demo/time-line/set-step-width.spec.ts create mode 100644 examples/docs/resources/pc/demo/time-line/show-number.spec.ts create mode 100644 examples/docs/resources/pc/demo/time-line/show-status.spec.ts create mode 100644 examples/docs/resources/pc/demo/time-line/vertical-step-reverse.spec.ts create mode 100644 examples/docs/resources/pc/demo/time-line/vertical-step.spec.ts create mode 100644 examples/docs/resources/pc/demo/time-picker/basic-usage.spec.ts create mode 100644 examples/docs/resources/pc/demo/time-picker/clear-icon.spec.ts create mode 100644 examples/docs/resources/pc/demo/time-picker/clearable.spec.ts create mode 100644 examples/docs/resources/pc/demo/time-picker/date.spec.ts create mode 100644 examples/docs/resources/pc/demo/time-picker/default-value.spec.ts create mode 100644 examples/docs/resources/pc/demo/time-picker/disabled.spec.ts create mode 100644 examples/docs/resources/pc/demo/time-picker/editable.spec.ts create mode 100644 examples/docs/resources/pc/demo/time-picker/event-blur.spec.ts create mode 100644 examples/docs/resources/pc/demo/time-picker/format.spec.ts create mode 100644 examples/docs/resources/pc/demo/time-picker/is-range.spec.ts create mode 100644 examples/docs/resources/pc/demo/time-picker/name.spec.ts create mode 100644 examples/docs/resources/pc/demo/time-picker/picker-options.spec.ts create mode 100644 examples/docs/resources/pc/demo/time-picker/popper-class.spec.ts create mode 100644 examples/docs/resources/pc/demo/time-picker/size-medium.spec.ts create mode 100644 examples/docs/resources/pc/demo/time-picker/size-mini.spec.ts create mode 100644 examples/docs/resources/pc/demo/time-picker/size-small.spec.ts create mode 100644 examples/docs/resources/pc/demo/time-picker/suffix-icon.spec.ts create mode 100644 examples/docs/resources/pc/demo/time-picker/time-low.spec.ts create mode 100644 examples/docs/resources/pc/demo/time-select/basic-usage.spec.ts create mode 100644 examples/docs/resources/pc/demo/time-select/clear-icon.spec.ts create mode 100644 examples/docs/resources/pc/demo/time-select/default-value.spec.ts create mode 100644 examples/docs/resources/pc/demo/time-select/disabled.spec.ts create mode 100644 examples/docs/resources/pc/demo/time-select/editable.spec.ts create mode 100644 examples/docs/resources/pc/demo/time-select/event-blur.spec.ts create mode 100644 examples/docs/resources/pc/demo/time-select/focus.spec.ts create mode 100644 examples/docs/resources/pc/demo/time-select/picker-options.spec.ts create mode 100644 examples/docs/resources/pc/demo/time-select/popper-class.spec.ts create mode 100644 examples/docs/resources/pc/demo/time-select/range-placeholder.spec.ts create mode 100644 examples/docs/resources/pc/demo/time-select/size-medium.spec.ts create mode 100644 examples/docs/resources/pc/demo/time-select/size-mini.spec.ts create mode 100644 examples/docs/resources/pc/demo/time-select/size-small.spec.ts create mode 100644 examples/docs/resources/pc/demo/time-select/suffix-icon.spec.ts create mode 100644 examples/docs/resources/pc/demo/toggle-menu/automatic-filtering.spec.ts create mode 100644 examples/docs/resources/pc/demo/toggle-menu/basic-usage.spec.ts create mode 100644 examples/docs/resources/pc/demo/toggle-menu/custom-icon.spec.ts create mode 100644 examples/docs/resources/pc/demo/toggle-menu/default-expand-all.spec.ts create mode 100644 examples/docs/resources/pc/demo/toggle-menu/drag-events.spec.ts create mode 100644 examples/docs/resources/pc/demo/toggle-menu/draggable.spec.ts create mode 100644 examples/docs/resources/pc/demo/toggle-menu/node-click.spec.ts create mode 100644 examples/docs/resources/pc/demo/toggle-menu/node-collapse.spec.ts create mode 100644 examples/docs/resources/pc/demo/toggle-menu/node-drop.spec.ts create mode 100644 examples/docs/resources/pc/demo/toggle-menu/node-expand.spec.ts create mode 100644 examples/docs/resources/pc/demo/toggle-menu/show-filter.spec.ts create mode 100644 examples/docs/resources/pc/demo/toggle-menu/slot-node.spec.ts create mode 100644 examples/docs/resources/pc/demo/toggle-menu/toggle-props.spec.ts create mode 100644 examples/docs/resources/pc/demo/tooltip/custom-transition.spec.js create mode 100644 examples/docs/resources/pc/demo/tooltip/dynamic-disable.spec.js create mode 100644 examples/docs/resources/pc/demo/tooltip/enterable.spec.js create mode 100644 examples/docs/resources/pc/demo/tooltip/manual-control-tip.spec.js create mode 100644 examples/docs/resources/pc/demo/tooltip/open-delay.spec.js create mode 100644 examples/docs/resources/pc/demo/tooltip/popper-class.spec.js create mode 100644 examples/docs/resources/pc/demo/tooltip/popper-options.spec.js create mode 100644 examples/docs/resources/pc/demo/tooltip/tabindex.spec.js create mode 100644 examples/docs/resources/pc/demo/tooltip/tooltip-content.spec.js create mode 100644 examples/docs/resources/pc/demo/tooltip/tooltip-offset.spec.js create mode 100644 examples/docs/resources/pc/demo/tooltip/tooltip-render-content.spec.js create mode 100644 examples/docs/resources/pc/demo/tooltip/tooltip-theme.spec.js create mode 100644 examples/docs/resources/pc/demo/tooltip/visible-arrow.spec.js create mode 100644 examples/docs/resources/pc/demo/tooltip/visible-show.spec.js create mode 100644 examples/docs/resources/pc/demo/transfer/basic-usage.spec.ts create mode 100644 examples/docs/resources/pc/demo/transfer/checked-format-text.spec.ts create mode 100644 examples/docs/resources/pc/demo/transfer/custom-button-texts.spec.ts create mode 100644 examples/docs/resources/pc/demo/transfer/custom-filter-method.spec.ts create mode 100644 examples/docs/resources/pc/demo/transfer/custom-footer.spec.ts create mode 100644 examples/docs/resources/pc/demo/transfer/custom-render-content.spec.ts create mode 100644 examples/docs/resources/pc/demo/transfer/custom-transfer-titles.spec.ts create mode 100644 examples/docs/resources/pc/demo/transfer/data-source.spec.ts create mode 100644 examples/docs/resources/pc/demo/transfer/default-checked.spec.ts create mode 100644 examples/docs/resources/pc/demo/transfer/drop-config.spec.ts create mode 100644 examples/docs/resources/pc/demo/transfer/filter-placeholder.spec.ts create mode 100644 examples/docs/resources/pc/demo/transfer/filterable.spec.ts create mode 100644 examples/docs/resources/pc/demo/transfer/manual-clear-query.spec.ts create mode 100644 examples/docs/resources/pc/demo/transfer/nested-table.spec.ts create mode 100644 examples/docs/resources/pc/demo/transfer/nested-tree.spec.ts create mode 100644 examples/docs/resources/pc/demo/transfer/panel-slot.spec.ts create mode 100644 examples/docs/resources/pc/demo/transfer/props-of-data-source.spec.ts create mode 100644 examples/docs/resources/pc/demo/transfer/show-all-btn.spec.ts create mode 100644 examples/docs/resources/pc/demo/transfer/target-order.spec.ts create mode 100644 examples/docs/resources/pc/demo/transfer/transfer-events.spec.ts create mode 100644 examples/docs/resources/pc/demo/tree-menu/accordion.spec.ts create mode 100644 examples/docs/resources/pc/demo/tree-menu/basic-usage.spec.ts create mode 100644 examples/docs/resources/pc/demo/tree-menu/can-draggable.spec.ts create mode 100644 examples/docs/resources/pc/demo/tree-menu/check-strictly.spec.ts create mode 100644 examples/docs/resources/pc/demo/tree-menu/data-resource.spec.ts create mode 100644 examples/docs/resources/pc/demo/tree-menu/default-expand-all.spec.ts create mode 100644 examples/docs/resources/pc/demo/tree-menu/default-expanded-keys.spec.ts create mode 100644 examples/docs/resources/pc/demo/tree-menu/empty-text.spec.ts create mode 100644 examples/docs/resources/pc/demo/tree-menu/event-allow-draggable.spec.ts create mode 100644 examples/docs/resources/pc/demo/tree-menu/event-check-change.spec.ts create mode 100644 examples/docs/resources/pc/demo/tree-menu/event-current-change.spec.ts create mode 100644 examples/docs/resources/pc/demo/tree-menu/event-node-click.spec.ts create mode 100644 examples/docs/resources/pc/demo/tree-menu/event-node-collapse.spec.ts create mode 100644 examples/docs/resources/pc/demo/tree-menu/event-node-expand.spec.ts create mode 100644 examples/docs/resources/pc/demo/tree-menu/expand-on-click-node.spec.ts create mode 100644 examples/docs/resources/pc/demo/tree-menu/filter-node-method.spec.ts create mode 100644 examples/docs/resources/pc/demo/tree-menu/get-menu-data-sync.spec.ts create mode 100644 examples/docs/resources/pc/demo/tree-menu/lazy-load.spec.ts create mode 100644 examples/docs/resources/pc/demo/tree-menu/search-icon.spec.ts create mode 100644 examples/docs/resources/pc/demo/tree-menu/show-checkbox.spec.ts create mode 100644 examples/docs/resources/pc/demo/tree-menu/text-ellipsis.spec.ts create mode 100644 examples/docs/resources/pc/demo/tree-menu/text-wrap.spec.ts create mode 100644 examples/docs/resources/pc/demo/tree-menu/tree-menu-indent.spec.ts create mode 100644 examples/docs/resources/pc/demo/tree-menu/tree-menu-slot.spec.ts create mode 100644 examples/docs/resources/pc/demo/tree/accordion-mode.spec.ts create mode 100644 examples/docs/resources/pc/demo/tree/allow-drag.spec.ts create mode 100644 examples/docs/resources/pc/demo/tree/allow-drop.spec.ts create mode 100644 examples/docs/resources/pc/demo/tree/auto-expand-parent.spec.ts create mode 100644 examples/docs/resources/pc/demo/tree/basic-usage.spec.ts create mode 100644 examples/docs/resources/pc/demo/tree/check-on-click-node.spec.ts create mode 100644 examples/docs/resources/pc/demo/tree/check-strictly.spec.ts create mode 100644 examples/docs/resources/pc/demo/tree/contextmenu.spec.ts create mode 100644 examples/docs/resources/pc/demo/tree/current-node-key.spec.ts create mode 100644 examples/docs/resources/pc/demo/tree/custom-empty-text.spec.ts create mode 100644 examples/docs/resources/pc/demo/tree/custom-node-icon.spec.ts create mode 100644 examples/docs/resources/pc/demo/tree/data-source.spec.ts create mode 100644 examples/docs/resources/pc/demo/tree/default-checked-keys.spec.ts create mode 100644 examples/docs/resources/pc/demo/tree/default-expand-all.spec.ts create mode 100644 examples/docs/resources/pc/demo/tree/default-expended-keys.spec.ts create mode 100644 examples/docs/resources/pc/demo/tree/disable-node.spec.ts create mode 100644 examples/docs/resources/pc/demo/tree/drag-events.spec.ts create mode 100644 examples/docs/resources/pc/demo/tree/expand-on-click-node.spec.ts create mode 100644 examples/docs/resources/pc/demo/tree/filter-node.spec.ts create mode 100644 examples/docs/resources/pc/demo/tree/highlight-current.spec.ts create mode 100644 examples/docs/resources/pc/demo/tree/indent.spec.ts create mode 100644 examples/docs/resources/pc/demo/tree/lazy-load-node.spec.ts create mode 100644 examples/docs/resources/pc/demo/tree/node-contextmenu.spec.ts create mode 100644 examples/docs/resources/pc/demo/tree/node-draggable.spec.ts create mode 100644 examples/docs/resources/pc/demo/tree/node-events.spec.ts create mode 100644 examples/docs/resources/pc/demo/tree/node-key.spec.ts create mode 100644 examples/docs/resources/pc/demo/tree/node-props-config.spec.ts create mode 100644 examples/docs/resources/pc/demo/tree/render-after-expand.spec.ts create mode 100644 examples/docs/resources/pc/demo/tree/render-content.spec.ts create mode 100644 examples/docs/resources/pc/demo/tree/set-tree-icon.spec.ts create mode 100644 examples/docs/resources/pc/demo/tree/show-checkbox.spec.ts create mode 100644 examples/docs/resources/pc/demo/tree/single-select-radio.spec.ts create mode 100644 examples/docs/resources/pc/demo/tree/slot-deffault.spec.ts create mode 100644 examples/docs/resources/pc/demo/user-contact/basic-usage.spec.ts create mode 100644 examples/docs/resources/pc/demo/user-contact/data-source.spec.ts create mode 100644 examples/docs/resources/pc/demo/user-contact/not-displayed-content.spec.ts create mode 100644 examples/docs/resources/pc/demo/user-contact/slots-usercontact.spec.ts create mode 100644 examples/docs/resources/pc/demo/user-contact/support-open-espace.spec.ts create mode 100644 examples/docs/resources/pc/demo/user-head/basic-usage.spec.ts create mode 100644 examples/docs/resources/pc/demo/user-head/color.spec.ts create mode 100644 examples/docs/resources/pc/demo/user-head/custom-background-color.spec.ts create mode 100644 examples/docs/resources/pc/demo/user-head/custom-user-head-content.spec.ts create mode 100644 examples/docs/resources/pc/demo/user-head/icon-user-head.spec.ts create mode 100644 examples/docs/resources/pc/demo/user-head/image-user-head.spec.ts create mode 100644 examples/docs/resources/pc/demo/user-head/label-user-head.spec.ts create mode 100644 examples/docs/resources/pc/demo/user-head/message-count-limit.spec.ts create mode 100644 examples/docs/resources/pc/demo/user-head/message-count-total.spec.ts create mode 100644 examples/docs/resources/pc/demo/user-head/message-count-type.spec.ts create mode 100644 examples/docs/resources/pc/demo/user-head/min-user-head.spec.ts create mode 100644 examples/docs/resources/pc/demo/user-head/render-user-head-in-grid.spec.ts create mode 100644 examples/docs/resources/pc/demo/user-head/round-user-head.spec.ts create mode 100644 examples/docs/resources/pc/demo/wizard/base-flow.spec.ts create mode 100644 examples/docs/resources/pc/demo/wizard/page-guide.spec.ts create mode 100644 examples/docs/resources/pc/demo/wizard/slot-base.spec.ts create mode 100644 examples/docs/resources/pc/demo/wizard/slot-step-button.spec.ts create mode 100644 examples/docs/resources/pc/demo/wizard/time-line-flow.spec.ts create mode 100644 examples/docs/resources/pc/demo/wizard/vertical.spec.ts create mode 100644 examples/vue2.7/.env.saas create mode 100644 examples/vue2.7/src/vite-env.d.ts create mode 100644 examples/vue2/.env.saas create mode 100644 examples/vue2/src/vite-env.d.ts create mode 100644 examples/vue3/.env.saas create mode 100644 examples/vue3/src/vite-env.d.ts create mode 100644 internals/vue-vite-import/.npmignore create mode 100644 packages/design/aurora/src/grid/index.ts create mode 100644 packages/design/aurora/src/switch/index.ts create mode 100644 packages/theme-saas/src/svgs/dot-download.svg create mode 100644 packages/theme-saas/src/svgs/down-ward.svg create mode 100644 packages/theme-saas/src/svgs/left-ward-arrow.svg create mode 100644 packages/theme-saas/src/svgs/prompt-exclamation.svg create mode 100644 packages/theme-saas/src/svgs/sort-default.svg create mode 100644 packages/theme-saas/src/svgs/sort-triangle-ascending.svg create mode 100644 packages/theme-saas/src/svgs/sort-triangle-descending.svg create mode 100644 packages/theme-saas/src/svgs/sort-triangle.svg create mode 100644 packages/theme-saas/src/textarea/index.less create mode 100644 packages/theme-saas/src/textarea/vars.less create mode 100644 packages/theme-saas/src/theme-tool.js create mode 100644 packages/theme-saas/src/theme.config.js create mode 100644 packages/theme-saas/src/theme/aurora-theme/index.js create mode 100644 packages/theme-saas/src/theme/deep-theme/index.js create mode 100644 packages/theme-saas/src/theme/galaxy-theme/index.js create mode 100644 packages/theme-saas/src/theme/impression-theme/index.js create mode 100644 packages/theme-saas/src/theme/index.js create mode 100644 packages/theme-saas/src/theme/infinity-theme/index.js create mode 100644 packages/theme-saas/src/theme/smb-theme/index.js create mode 100644 packages/theme-saas/src/theme/utils.js create mode 100644 packages/theme/src/dialog-box/aurora-theme.js create mode 100644 packages/theme/src/pager/aurora-theme.js create mode 100644 packages/theme/src/steps/aurora-theme.js create mode 100644 packages/theme/src/tree-menu/aurora-theme.js create mode 100644 packages/theme/src/tree/aurora-theme.js create mode 100644 packages/vue-icon-saas/index.ts create mode 100644 packages/vue-icon-saas/src/administrator/index.ts create mode 100644 packages/vue-icon-saas/src/area-chart/index.ts create mode 100644 packages/vue-icon-saas/src/arrow-bottom/index.ts create mode 100644 packages/vue-icon-saas/src/arrow-down/index.ts create mode 100644 packages/vue-icon-saas/src/arrow-left/index.ts create mode 100644 packages/vue-icon-saas/src/arrow-right/index.ts create mode 100644 packages/vue-icon-saas/src/arrow-up/index.ts create mode 100644 packages/vue-icon-saas/src/ascending/index.ts create mode 100644 packages/vue-icon-saas/src/association/index.ts create mode 100644 packages/vue-icon-saas/src/attachment/index.ts create mode 100644 packages/vue-icon-saas/src/audio/index.ts create mode 100644 packages/vue-icon-saas/src/bar-chart/index.ts create mode 100644 packages/vue-icon-saas/src/befilter/index.ts create mode 100644 packages/vue-icon-saas/src/boat/index.ts create mode 100644 packages/vue-icon-saas/src/busy/index.ts create mode 100644 packages/vue-icon-saas/src/calculator/index.ts create mode 100644 packages/vue-icon-saas/src/calendar/index.ts create mode 100644 packages/vue-icon-saas/src/check-out/index.ts create mode 100644 packages/vue-icon-saas/src/check/index.ts create mode 100644 packages/vue-icon-saas/src/checked-linear/index.ts create mode 100644 packages/vue-icon-saas/src/checked-sur/index.ts create mode 100644 packages/vue-icon-saas/src/checked-true/index.ts create mode 100644 packages/vue-icon-saas/src/chevron-down/index.ts create mode 100644 packages/vue-icon-saas/src/chevron-left/index.ts create mode 100644 packages/vue-icon-saas/src/chevron-right/index.ts create mode 100644 packages/vue-icon-saas/src/chevron-up/index.ts create mode 100644 packages/vue-icon-saas/src/clear-filter/index.ts create mode 100644 packages/vue-icon-saas/src/clock-work/index.ts create mode 100644 packages/vue-icon-saas/src/close-circle/index.ts create mode 100644 packages/vue-icon-saas/src/close-square/index.ts create mode 100644 packages/vue-icon-saas/src/close/index.ts create mode 100644 packages/vue-icon-saas/src/cloud-download/index.ts create mode 100644 packages/vue-icon-saas/src/cloud-upload/index.ts create mode 100644 packages/vue-icon-saas/src/coin/index.ts create mode 100644 packages/vue-icon-saas/src/commission/index.ts create mode 100644 packages/vue-icon-saas/src/conment-refresh/index.ts create mode 100644 packages/vue-icon-saas/src/copy/index.ts create mode 100644 packages/vue-icon-saas/src/course/index.ts create mode 100644 packages/vue-icon-saas/src/crop/index.ts create mode 100644 packages/vue-icon-saas/src/cue-l/index.ts create mode 100644 packages/vue-icon-saas/src/custom/index.ts create mode 100644 packages/vue-icon-saas/src/customer-service/index.ts create mode 100644 packages/vue-icon-saas/src/default/index.ts create mode 100644 packages/vue-icon-saas/src/defined-filtration/index.ts create mode 100644 packages/vue-icon-saas/src/del/index.ts create mode 100644 packages/vue-icon-saas/src/delete-page/index.ts create mode 100644 packages/vue-icon-saas/src/deleted/index.ts create mode 100644 packages/vue-icon-saas/src/delta-down-o/index.ts create mode 100644 packages/vue-icon-saas/src/delta-down/index.ts create mode 100644 packages/vue-icon-saas/src/delta-left-o/index.ts create mode 100644 packages/vue-icon-saas/src/delta-left/index.ts create mode 100644 packages/vue-icon-saas/src/delta-right-o/index.ts create mode 100644 packages/vue-icon-saas/src/delta-right/index.ts create mode 100644 packages/vue-icon-saas/src/delta-up-o/index.ts create mode 100644 packages/vue-icon-saas/src/delta-up/index.ts create mode 100644 packages/vue-icon-saas/src/derive/index.ts create mode 100644 packages/vue-icon-saas/src/descending/index.ts create mode 100644 packages/vue-icon-saas/src/dialog/index.ts create mode 100644 packages/vue-icon-saas/src/dialog2/index.ts create mode 100644 packages/vue-icon-saas/src/dot-chart/index.ts create mode 100644 packages/vue-icon-saas/src/dot-download/index.ts create mode 100644 packages/vue-icon-saas/src/dot-ipv4/index.ts create mode 100644 packages/vue-icon-saas/src/double-left/index.ts create mode 100644 packages/vue-icon-saas/src/double-right/index.ts create mode 100644 packages/vue-icon-saas/src/down-o/index.ts create mode 100644 packages/vue-icon-saas/src/down-ward/index.ts create mode 100644 packages/vue-icon-saas/src/down/index.ts create mode 100644 packages/vue-icon-saas/src/download-cloud/index.ts create mode 100644 packages/vue-icon-saas/src/download-link/index.ts create mode 100644 packages/vue-icon-saas/src/download/index.ts create mode 100644 packages/vue-icon-saas/src/edit/index.ts create mode 100644 packages/vue-icon-saas/src/editor-align-center/index.ts create mode 100644 packages/vue-icon-saas/src/editor-align-left/index.ts create mode 100644 packages/vue-icon-saas/src/editor-align-right/index.ts create mode 100644 packages/vue-icon-saas/src/editor-background/index.ts create mode 100644 packages/vue-icon-saas/src/editor-bold/index.ts create mode 100644 packages/vue-icon-saas/src/editor-code/index.ts create mode 100644 packages/vue-icon-saas/src/editor-deleteline/index.ts create mode 100644 packages/vue-icon-saas/src/editor-eraser/index.ts create mode 100644 packages/vue-icon-saas/src/editor-italic/index.ts create mode 100644 packages/vue-icon-saas/src/editor-left-border/index.ts create mode 100644 packages/vue-icon-saas/src/editor-list-dot/index.ts create mode 100644 packages/vue-icon-saas/src/editor-list-num/index.ts create mode 100644 packages/vue-icon-saas/src/editor-list/index.ts create mode 100644 packages/vue-icon-saas/src/editor-menu-left/index.ts create mode 100644 packages/vue-icon-saas/src/editor-menu-right/index.ts create mode 100644 packages/vue-icon-saas/src/editor-quote/index.ts create mode 100644 packages/vue-icon-saas/src/editor-redo/index.ts create mode 100644 packages/vue-icon-saas/src/editor-right-border/index.ts create mode 100644 packages/vue-icon-saas/src/editor-sub/index.ts create mode 100644 packages/vue-icon-saas/src/editor-subtitle/index.ts create mode 100644 packages/vue-icon-saas/src/editor-super/index.ts create mode 100644 packages/vue-icon-saas/src/editor-tab/index.ts create mode 100644 packages/vue-icon-saas/src/editor-table/index.ts create mode 100644 packages/vue-icon-saas/src/editor-textcolor/index.ts create mode 100644 packages/vue-icon-saas/src/editor-title/index.ts create mode 100644 packages/vue-icon-saas/src/editor-underline/index.ts create mode 100644 packages/vue-icon-saas/src/editor-undo/index.ts create mode 100644 packages/vue-icon-saas/src/editor-video/index.ts create mode 100644 packages/vue-icon-saas/src/ellipsis/index.ts create mode 100644 packages/vue-icon-saas/src/email-add/index.ts create mode 100644 packages/vue-icon-saas/src/email-circle/index.ts create mode 100644 packages/vue-icon-saas/src/end/index.ts create mode 100644 packages/vue-icon-saas/src/error/index.ts create mode 100644 packages/vue-icon-saas/src/espace-auto/index.ts create mode 100644 packages/vue-icon-saas/src/espace/index.ts create mode 100644 packages/vue-icon-saas/src/excel-type/index.ts create mode 100644 packages/vue-icon-saas/src/excel/index.ts create mode 100644 packages/vue-icon-saas/src/exception/index.ts create mode 100644 packages/vue-icon-saas/src/exclamation/index.ts create mode 100644 packages/vue-icon-saas/src/export/index.ts create mode 100644 packages/vue-icon-saas/src/express-search/index.ts create mode 100644 packages/vue-icon-saas/src/eyeclose/index.ts create mode 100644 packages/vue-icon-saas/src/eyeopen/index.ts create mode 100644 packages/vue-icon-saas/src/file-cloudupload/index.ts create mode 100644 packages/vue-icon-saas/src/file-excel/index.ts create mode 100644 packages/vue-icon-saas/src/file-type/index.ts create mode 100644 packages/vue-icon-saas/src/file/index.ts create mode 100644 packages/vue-icon-saas/src/files-circle/index.ts create mode 100644 packages/vue-icon-saas/src/files/index.ts create mode 100644 packages/vue-icon-saas/src/filetext/index.ts create mode 100644 packages/vue-icon-saas/src/fileupload/index.ts create mode 100644 packages/vue-icon-saas/src/filtered/index.ts create mode 100644 packages/vue-icon-saas/src/flag/index.ts create mode 100644 packages/vue-icon-saas/src/folder-closed/index.ts create mode 100644 packages/vue-icon-saas/src/folder-opened/index.ts create mode 100644 packages/vue-icon-saas/src/freeze-left/index.ts create mode 100644 packages/vue-icon-saas/src/freeze-right/index.ts create mode 100644 packages/vue-icon-saas/src/frown-o/index.ts create mode 100644 packages/vue-icon-saas/src/frown/index.ts create mode 100644 packages/vue-icon-saas/src/fullscreen-left/index.ts create mode 100644 packages/vue-icon-saas/src/fullscreen/index.ts create mode 100644 packages/vue-icon-saas/src/grade/index.ts create mode 100644 packages/vue-icon-saas/src/group-transfer/index.ts create mode 100644 packages/vue-icon-saas/src/group/index.ts create mode 100644 packages/vue-icon-saas/src/halfchecked/index.ts create mode 100644 packages/vue-icon-saas/src/halfselect/index.ts create mode 100644 packages/vue-icon-saas/src/heartempty/index.ts create mode 100644 packages/vue-icon-saas/src/help-circle/index.ts create mode 100644 packages/vue-icon-saas/src/help-query/index.ts create mode 100644 packages/vue-icon-saas/src/help-solid/index.ts create mode 100644 packages/vue-icon-saas/src/help/index.ts create mode 100644 packages/vue-icon-saas/src/helpful/index.ts create mode 100644 packages/vue-icon-saas/src/import/index.ts create mode 100644 packages/vue-icon-saas/src/info-circle/index.ts create mode 100644 packages/vue-icon-saas/src/info-solid/index.ts create mode 100644 packages/vue-icon-saas/src/info/index.ts create mode 100644 packages/vue-icon-saas/src/information/index.ts create mode 100644 packages/vue-icon-saas/src/leave/index.ts create mode 100644 packages/vue-icon-saas/src/left-frozen/index.ts create mode 100644 packages/vue-icon-saas/src/left-o/index.ts create mode 100644 packages/vue-icon-saas/src/left-ward-arrow/index.ts create mode 100644 packages/vue-icon-saas/src/left-ward/index.ts create mode 100644 packages/vue-icon-saas/src/left/index.ts create mode 100644 packages/vue-icon-saas/src/line-chart/index.ts create mode 100644 packages/vue-icon-saas/src/link/index.ts create mode 100644 packages/vue-icon-saas/src/loading/index.ts create mode 100644 packages/vue-icon-saas/src/lock/index.ts create mode 100644 packages/vue-icon-saas/src/mail-content/index.ts create mode 100644 packages/vue-icon-saas/src/mail/index.ts create mode 100644 packages/vue-icon-saas/src/male/index.ts create mode 100644 packages/vue-icon-saas/src/mark-on/index.ts create mode 100644 packages/vue-icon-saas/src/meh/index.ts create mode 100644 packages/vue-icon-saas/src/message-circle/index.ts create mode 100644 packages/vue-icon-saas/src/mic/index.ts create mode 100644 packages/vue-icon-saas/src/minscreen-left/index.ts create mode 100644 packages/vue-icon-saas/src/minscreen/index.ts create mode 100644 packages/vue-icon-saas/src/minus-circle/index.ts create mode 100644 packages/vue-icon-saas/src/minus-square/index.ts create mode 100644 packages/vue-icon-saas/src/minus/index.ts create mode 100644 packages/vue-icon-saas/src/mobile-checkbox-half/index.ts create mode 100644 packages/vue-icon-saas/src/mobile-checkbox-selected/index.ts create mode 100644 packages/vue-icon-saas/src/mobile-checkbox/index.ts create mode 100644 packages/vue-icon-saas/src/mobile-radio-selected/index.ts create mode 100644 packages/vue-icon-saas/src/mobile-radio/index.ts create mode 100644 packages/vue-icon-saas/src/mobile/index.ts create mode 100644 packages/vue-icon-saas/src/more/index.ts create mode 100644 packages/vue-icon-saas/src/new/index.ts create mode 100644 packages/vue-icon-saas/src/no-premission/index.ts create mode 100644 packages/vue-icon-saas/src/node-open/index.ts create mode 100644 packages/vue-icon-saas/src/node/index.ts create mode 100644 packages/vue-icon-saas/src/off-line/index.ts create mode 100644 packages/vue-icon-saas/src/on-line/index.ts create mode 100644 packages/vue-icon-saas/src/operationfaild-l/index.ts create mode 100644 packages/vue-icon-saas/src/operationfaild/index.ts create mode 100644 packages/vue-icon-saas/src/other-type/index.ts create mode 100644 packages/vue-icon-saas/src/outer-link/index.ts create mode 100644 packages/vue-icon-saas/src/pagelink/index.ts create mode 100644 packages/vue-icon-saas/src/pager-first/index.ts create mode 100644 packages/vue-icon-saas/src/pager-last/index.ts create mode 100644 packages/vue-icon-saas/src/pager-next/index.ts create mode 100644 packages/vue-icon-saas/src/pager-prev/index.ts create mode 100644 packages/vue-icon-saas/src/panel-max/index.ts create mode 100644 packages/vue-icon-saas/src/panel-mini/index.ts create mode 100644 packages/vue-icon-saas/src/panel-normal/index.ts create mode 100644 packages/vue-icon-saas/src/pause-circle/index.ts create mode 100644 packages/vue-icon-saas/src/pause/index.ts create mode 100644 packages/vue-icon-saas/src/pdf-type/index.ts create mode 100644 packages/vue-icon-saas/src/picture-type/index.ts create mode 100644 packages/vue-icon-saas/src/picture/index.ts create mode 100644 packages/vue-icon-saas/src/pie-chart/index.ts create mode 100644 packages/vue-icon-saas/src/plus-circle/index.ts create mode 100644 packages/vue-icon-saas/src/plus-square/index.ts create mode 100644 packages/vue-icon-saas/src/plus/index.ts create mode 100644 packages/vue-icon-saas/src/popup/index.ts create mode 100644 packages/vue-icon-saas/src/ppt-type/index.ts create mode 100644 packages/vue-icon-saas/src/pre-checked/index.ts create mode 100644 packages/vue-icon-saas/src/print-preview/index.ts create mode 100644 packages/vue-icon-saas/src/prompt-exclamation/index.ts create mode 100644 packages/vue-icon-saas/src/pushpin/index.ts create mode 100644 packages/vue-icon-saas/src/radio/index.ts create mode 100644 packages/vue-icon-saas/src/radioselected/index.ts create mode 100644 packages/vue-icon-saas/src/refres/index.ts create mode 100644 packages/vue-icon-saas/src/renew/index.ts create mode 100644 packages/vue-icon-saas/src/repeat/index.ts create mode 100644 packages/vue-icon-saas/src/replace/index.ts create mode 100644 packages/vue-icon-saas/src/replies/index.ts create mode 100644 packages/vue-icon-saas/src/right-frozen/index.ts create mode 100644 packages/vue-icon-saas/src/right-o/index.ts create mode 100644 packages/vue-icon-saas/src/right/index.ts create mode 100644 packages/vue-icon-saas/src/rightward/index.ts create mode 100644 packages/vue-icon-saas/src/sandwich-collapse/index.ts create mode 100644 packages/vue-icon-saas/src/sandwich-expand/index.ts create mode 100644 packages/vue-icon-saas/src/save/index.ts create mode 100644 packages/vue-icon-saas/src/scissor/index.ts create mode 100644 packages/vue-icon-saas/src/search/index.ts create mode 100644 packages/vue-icon-saas/src/select/index.ts create mode 100644 packages/vue-icon-saas/src/sent/index.ts create mode 100644 packages/vue-icon-saas/src/separate/index.ts create mode 100644 packages/vue-icon-saas/src/setting/index.ts create mode 100644 packages/vue-icon-saas/src/share-arrow/index.ts create mode 100644 packages/vue-icon-saas/src/share/index.ts create mode 100644 packages/vue-icon-saas/src/shopping-card/index.ts create mode 100644 packages/vue-icon-saas/src/smile-o/index.ts create mode 100644 packages/vue-icon-saas/src/smile/index.ts create mode 100644 packages/vue-icon-saas/src/sort-default/index.ts create mode 100644 packages/vue-icon-saas/src/sort-triangle-ascending/index.ts create mode 100644 packages/vue-icon-saas/src/sort-triangle-descending/index.ts create mode 100644 packages/vue-icon-saas/src/sort-triangle/index.ts create mode 100644 packages/vue-icon-saas/src/sort/index.ts create mode 100644 packages/vue-icon-saas/src/star-active/index.ts create mode 100644 packages/vue-icon-saas/src/star-disable/index.ts create mode 100644 packages/vue-icon-saas/src/star-o/index.ts create mode 100644 packages/vue-icon-saas/src/start-circle/index.ts create mode 100644 packages/vue-icon-saas/src/start/index.ts create mode 100644 packages/vue-icon-saas/src/statistics/index.ts create mode 100644 packages/vue-icon-saas/src/stop/index.ts create mode 100644 packages/vue-icon-saas/src/success/index.ts create mode 100644 packages/vue-icon-saas/src/successful/index.ts create mode 100644 packages/vue-icon-saas/src/task-cooperation/index.ts create mode 100644 packages/vue-icon-saas/src/telephone-circle/index.ts create mode 100644 packages/vue-icon-saas/src/telephone/index.ts create mode 100644 packages/vue-icon-saas/src/text-tab/index.ts create mode 100644 packages/vue-icon-saas/src/text-type/index.ts create mode 100644 packages/vue-icon-saas/src/text/index.ts create mode 100644 packages/vue-icon-saas/src/time/index.ts create mode 100644 packages/vue-icon-saas/src/total/index.ts create mode 100644 packages/vue-icon-saas/src/triangle-down/index.ts create mode 100644 packages/vue-icon-saas/src/undelete/index.ts create mode 100644 packages/vue-icon-saas/src/unfilter/index.ts create mode 100644 packages/vue-icon-saas/src/unfreeze/index.ts create mode 100644 packages/vue-icon-saas/src/unknow/index.ts create mode 100644 packages/vue-icon-saas/src/unlock/index.ts create mode 100644 packages/vue-icon-saas/src/unsent/index.ts create mode 100644 packages/vue-icon-saas/src/up-o/index.ts create mode 100644 packages/vue-icon-saas/src/up/index.ts create mode 100644 packages/vue-icon-saas/src/upload/index.ts create mode 100644 packages/vue-icon-saas/src/user/index.ts create mode 100644 packages/vue-icon-saas/src/versiontree/index.ts create mode 100644 packages/vue-icon-saas/src/video-type/index.ts create mode 100644 packages/vue-icon-saas/src/view/index.ts create mode 100644 packages/vue-icon-saas/src/warning-triangle/index.ts create mode 100644 packages/vue-icon-saas/src/warning/index.ts create mode 100644 packages/vue-icon-saas/src/web-plus/index.ts create mode 100644 packages/vue-icon-saas/src/word-type/index.ts create mode 100644 packages/vue-icon-saas/src/writing/index.ts create mode 100644 packages/vue-icon-saas/src/yes/index.ts create mode 100644 packages/vue-icon-saas/src/zip-type/index.ts create mode 100644 packages/vue-icon-saas/src/zoom-in/index.ts create mode 100644 packages/vue-icon-saas/src/zoom-out/index.ts create mode 100644 packages/vue/src/autocomplete/__tests__/autocomplete.test.tsx create mode 100644 packages/vue/src/badge/__tests__/badge.test.tsx create mode 100644 packages/vue/src/button-group/__tests__/button-group.test.tsx create mode 100644 packages/vue/src/button/__tests__/button.test.tsx create mode 100644 packages/vue/src/cascader-panel/__tests__/cascader-panel.test.tsx create mode 100644 packages/vue/src/cascader/__tests__/cascader.test.tsx create mode 100644 packages/vue/src/checkbox/__tests__/checkbox.test.tsx create mode 100644 packages/vue/src/date-picker/__tests__/date-picker.test.tsx create mode 100644 packages/vue/src/drop-times/__tests__/drop-times.test.tsx create mode 100644 packages/vue/src/file-upload/__tests__/file-upload.test.tsx create mode 100644 packages/vue/src/form/__tests__/form.test.tsx create mode 100644 packages/vue/src/grid/src/mobile-first/column-content.vue create mode 100644 packages/vue/src/grid/src/mobile-first/column-layout.vue create mode 100644 packages/vue/src/grid/src/mobile-first/column-link.vue create mode 100644 packages/vue/src/grid/src/mobile-first/column-type.vue create mode 100644 packages/vue/src/grid/src/mobile-first/gantt-view.vue create mode 100644 packages/vue/src/grid/src/mobile-first/index.vue create mode 100644 packages/vue/src/grid/src/mobile-first/list-view.vue create mode 100644 packages/vue/src/grid/src/mobile-first/table-row.vue create mode 100644 packages/vue/src/grid/src/mobile-first/type.ts create mode 100644 packages/vue/src/grid/src/mobile-first/utils.ts create mode 100644 packages/vue/src/input/__tests__/input.test.tsx create mode 100644 packages/vue/src/ip-address/__tests__/ip-address.test.tsx create mode 100644 packages/vue/src/link/__tests__/link.test.tsx create mode 100644 packages/vue/src/numeric/__tests__/numeric.test.tsx create mode 100644 packages/vue/src/pager/__test__/pager.test.tsx create mode 100644 packages/vue/src/pop-upload/__tests__/pop-upload.test.tsx create mode 100644 packages/vue/src/popeditor/__tests__/popeditor.test.tsx create mode 100644 packages/vue/src/popover/__tests__/popover.test.tsx create mode 100644 packages/vue/src/radio/__tests__/radio.test.tsx create mode 100644 packages/vue/src/rate/__test__/rate.test.ts create mode 100644 packages/vue/src/search/__tests__/search.test.tsx create mode 100644 packages/vue/src/select/__tests__/select.test.tsx create mode 100644 packages/vue/src/slider/__tests__/slider.test.tsx create mode 100644 packages/vue/src/switch/__tests__/switch.test.tsx create mode 100644 packages/vue/src/time-picker/__tests__/time-picker.test.tsx create mode 100644 packages/vue/src/time-select/__tests__/time-select.test.tsx create mode 100644 packages/vue/src/transfer/__tests__/transfer.test.ts create mode 100644 packages/vue/src/tree/__test__/tree.test.tsx diff --git a/.eslintrc.js b/.eslintrc.js index f9c047c4b..3baa85b10 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -4,9 +4,12 @@ module.exports = { extends: '@antfu', rules: { - 'vue/component-tags-order': ['error', { - order: [['script', 'template'], 'style'], - }], + 'vue/component-tags-order': [ + 'error', + { + order: [['script', 'template'], 'style'] + } + ], 'vue/order-in-components': 'off', 'vue/component-name-in-template-casing': 'off', 'vue/custom-event-name-casing': 'off', @@ -38,6 +41,6 @@ module.exports = { '@typescript-eslint/brace-style': 'off', '@typescript-eslint/restrict-plus-operands': 'off', '@typescript-eslint/no-use-before-define': 'off', - '@typescript-eslint/restrict-template-expressions': 'off', - }, + '@typescript-eslint/restrict-template-expressions': 'off' + } } diff --git a/.gitignore b/.gitignore index 75f3ea20e..354a55c53 100644 --- a/.gitignore +++ b/.gitignore @@ -8,16 +8,12 @@ allDist/ packages/**/runtime coverage/ -/packages/vue-icon-saas/src -/packages/vue-icon-saas/index.ts /packages/vue/index.ts /packages/vue/pc.ts /packages/vue/mobile.ts /packages/vue/app.ts -/packages/vue-icon/src/index.ts /examples/**/playwright-report -/examples/docs/.vitepress/cache vite.config.ts.timestamp* vitest.config.ts.timestamp* diff --git a/README.md b/README.md index 3db450881..c4c069367 100644 --- a/README.md +++ b/README.md @@ -59,7 +59,7 @@ pnpm i pnpm dev # Vue.js 2 -pnpm dev:vue2 +pnpm dev2 ``` Open your browser and visit: [http://127.0.0.1:7130/](http://127.0.0.1:7130/) diff --git a/README.zh-CN.md b/README.zh-CN.md index 7e3869f2e..b1837c97d 100644 --- a/README.zh-CN.md +++ b/README.zh-CN.md @@ -59,7 +59,7 @@ pnpm i pnpm dev # 启动 Vue2 项目 -pnpm dev:vue2 +pnpm dev2 ``` 打开浏览器访问:[http://127.0.0.1:7130/](http://127.0.0.1:7130/) diff --git a/examples/docs/newsrc/App.vue b/examples/docs/newsrc/App.vue index 414484a9d..c7239221f 100644 --- a/examples/docs/newsrc/App.vue +++ b/examples/docs/newsrc/App.vue @@ -25,9 +25,8 @@ import { ButtonGroup, Link } from '@opentiny/vue' import TinyPc from './pc.vue' import TinyMobile from './mobile.vue' import TinyMobileFirst from './mobile-first.vue' -import { hooks, provideDesignConfig } from '@opentiny/vue-common' +import { hooks } from '@opentiny/vue-common' import { useModeCtx } from './uses' -import designAuroraConfig from '@opentiny/vue-design-aurora' export default { components: { @@ -48,9 +47,6 @@ export default { vueVersion: hooks.version }) - // 注入aurora主题规范 - provideDesignConfig(designAuroraConfig) - hooks.onMounted(() => { hooks.watch( () => modeState.mode, diff --git a/examples/docs/newsrc/mobile-first.vue b/examples/docs/newsrc/mobile-first.vue index 8c2d4340f..8839ee2d7 100644 --- a/examples/docs/newsrc/mobile-first.vue +++ b/examples/docs/newsrc/mobile-first.vue @@ -10,12 +10,16 @@
-
- {{ modeState.pathName }} +
+
-
{{ state.currDemo?.name['zh-CN'] }}({{ state.currDemo?.codeFiles[0] }}):
+
+ {{ state.currDemo?.name['zh-CN'] }} + ({{ state.currDemo?.codeFiles[0] }}): +
@@ -40,23 +44,29 @@
{{ key }}
- - - - - - - - - - + + + + + + + + + + + + + + + + + +
名称类型默认值说明
+ {{ + row.name + }} + {{ row.name }} + {{ row.type }}{{ row.defaultValue }}
@@ -84,9 +94,9 @@ + + diff --git a/examples/docs/newsrc/mobile.vue b/examples/docs/newsrc/mobile.vue index b0ca518e3..df480f907 100644 --- a/examples/docs/newsrc/mobile.vue +++ b/examples/docs/newsrc/mobile.vue @@ -10,12 +10,15 @@
-
- {{ modeState.pathName }} +
+
-
{{ state.currDemo?.name['zh-CN'] }}({{ state.currDemo?.codeFiles[0] }}):
+
+ {{ state.currDemo?.name['zh-CN'] }}( {{ state.currDemo?.codeFiles[0] }}): +
@@ -44,23 +47,30 @@
{{ key }}
- - - - - - - - - - + + + + + + + + + + + + + + + + + + +
名称类型默认值说明
+ {{ + row.name + }} + {{ row.name }} + {{ row.type }}{{ row.defaultValue }}
@@ -88,9 +98,9 @@ diff --git a/examples/docs/resources/mobile-first/app/column-list-item/webdoc/column-list-item.cn.md b/examples/docs/resources/mobile-first/app/column-list-item/webdoc/column-list-item.cn.md new file mode 100644 index 000000000..1f43565e2 --- /dev/null +++ b/examples/docs/resources/mobile-first/app/column-list-item/webdoc/column-list-item.cn.md @@ -0,0 +1,8 @@ +--- +title: ColumnListItem 分区列表项 +--- + +# ColumnListItem 分区列表项 + +
+
diff --git a/examples/docs/resources/mobile-first/app/column-list-item/webdoc/column-list-item.en.md b/examples/docs/resources/mobile-first/app/column-list-item/webdoc/column-list-item.en.md new file mode 100644 index 000000000..1f43565e2 --- /dev/null +++ b/examples/docs/resources/mobile-first/app/column-list-item/webdoc/column-list-item.en.md @@ -0,0 +1,8 @@ +--- +title: ColumnListItem 分区列表项 +--- + +# ColumnListItem 分区列表项 + +
+
diff --git a/examples/docs/resources/mobile-first/app/column-list-item/webdoc/column-list-item.js b/examples/docs/resources/mobile-first/app/column-list-item/webdoc/column-list-item.js new file mode 100644 index 000000000..6f21442d4 --- /dev/null +++ b/examples/docs/resources/mobile-first/app/column-list-item/webdoc/column-list-item.js @@ -0,0 +1,130 @@ +export default { + column: '2', + owner: '', + demos: [ + { + demoId: 'basic-usage', + name: { + 'zh-CN': '基本用法', + 'en-US': 'basic usage' + }, + desc: { + 'zh-CN': '

', + 'en-US': '

button type

' + }, + codeFiles: ['basic-usage.vue'] + }, + + { + demoId: 'size', + name: { + 'zh-CN': '设置尺寸', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

通过 `size` 属性可以设置分区列表项的大小,支持 small 和 medium 两种尺寸。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['size.vue'] + }, + { + demoId: 'content-slot', + name: { + 'zh-CN': '内容区插槽', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

通过 `#column1、#column2、#column3、#column4` 可以设置内容区插槽,最多支持 4 个内容插槽。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['content-slot.vue'] + }, + { + demoId: 'custom-width', + name: { + 'zh-CN': '自定义内容插槽宽度', + 'en-US': 'events' + }, + desc: { + 'zh-CN': + '

通过 `flex-basis` 属性可以设置内容插槽的宽度,flex-basis 类型为数组,最多能传入 4 个值,支持百分比,固定宽度及固有的尺寸关键词,默认为 auto,详情见 flex 的 flex-basis 属性。
通过设置`flex-grow`属性可以设置每一项在 flex 容器中分配剩余空间的相对比例,默认为 1。如果不想自动撑满主容器,可以设为 0,详情见 flex 的 flex-grow 属性。
flex-grow 举例:`:flex-grow="[0, 0]" :flex-grow="[2, 1]" :flex-grow="[2, 1,1,1]"`
flex-basis 举例:`:flex-basis="["200px", "100px","300px"]" :flex-basis="["75%", "25%"]" :flex-basis="["40%", "20%", "20%", "20%"]"`

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['custom-width.vue'] + }, + { + demoId: 'icon-click-event', + name: { + 'zh-CN': '操作列按钮点击事件', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

通过 `icon-click` 给按钮加点击事件。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['icon-click-event.vue'] + }, + { + demoId: 'icon-disabled', + name: { + 'zh-CN': '操作列按钮隐藏与禁用', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

操作列配置项 options 中添加属性 hidden 可以隐藏按钮,可以通过 disabled 属性禁用操作按钮。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['icon-disabled.vue'] + }, + { + demoId: 'image-operate-slot', + name: { + 'zh-CN': '图片和操作列插槽', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

通过 `#image` 可以设置图片插槽,通过 `#operate` 可以设置操作列插槽。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['image-operate-slot.vue'] + }, + { + demoId: 'show-radio', + name: { + 'zh-CN': '单选', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

通过属性`show-radio`设置卡片单选,需同时设置 label,`disabled` 属性可以禁用单选按钮 。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['show-radio.vue'] + }, + { + demoId: 'show-checkbox', + name: { + 'zh-CN': '多选', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

通过属性`show-checkbox`设置卡片多选,需同时设置 label,`disabled` 属性可以禁用复选按钮 。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['show-checkbox.vue'] + }, + { + demoId: 'list-group', + name: { + 'zh-CN': '列表组', + 'en-US': 'events' + }, + desc: { + 'zh-CN': + '

通过引入`column-list-group`组件来对列表进行分组,使用列表组结合复选功能时,需要给 item 设置 label,以此来记录选中的列表项。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['list-group.vue'] + } + ], + apis: [] +} diff --git a/examples/docs/resources/mobile-first/app/date-picker-mobile/webdoc/date-picker-mobile.cn.md b/examples/docs/resources/mobile-first/app/date-picker-mobile/webdoc/date-picker-mobile.cn.md new file mode 100644 index 000000000..28aabe946 --- /dev/null +++ b/examples/docs/resources/mobile-first/app/date-picker-mobile/webdoc/date-picker-mobile.cn.md @@ -0,0 +1,9 @@ +--- +title: DatePickerMobile 日期选择器组件 +--- + +# DatePickerMobile 日期选择器组件 + +
+ +
diff --git a/examples/docs/resources/mobile-first/app/date-picker-mobile/webdoc/date-picker-mobile.en.md b/examples/docs/resources/mobile-first/app/date-picker-mobile/webdoc/date-picker-mobile.en.md new file mode 100644 index 000000000..28aabe946 --- /dev/null +++ b/examples/docs/resources/mobile-first/app/date-picker-mobile/webdoc/date-picker-mobile.en.md @@ -0,0 +1,9 @@ +--- +title: DatePickerMobile 日期选择器组件 +--- + +# DatePickerMobile 日期选择器组件 + +
+ +
diff --git a/examples/docs/resources/mobile-first/app/date-picker-mobile/webdoc/date-picker-mobile.js b/examples/docs/resources/mobile-first/app/date-picker-mobile/webdoc/date-picker-mobile.js new file mode 100644 index 000000000..ceb7fa2d4 --- /dev/null +++ b/examples/docs/resources/mobile-first/app/date-picker-mobile/webdoc/date-picker-mobile.js @@ -0,0 +1,56 @@ +export default { + column: '2', + owner: '', + demos: [ + { + demoId: 'basic-usage', + name: { + 'zh-CN': '基本用法', + 'en-US': 'basic usage' + }, + desc: { + 'zh-CN': '

设置 `type` 属性默认值为 `date`,以日期的形式进行选择。

', + 'en-US': '

button type

' + }, + codeFiles: ['basic-usage.vue'] + }, + + { + demoId: 'datetime', + name: { + 'zh-CN': '选择日期时间', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

设置 `type` 属性为 `datetime`,以日期时间的形式进行选择。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['datetime.vue'] + }, + { + demoId: 'date-range', + name: { + 'zh-CN': '选择日期范围', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

设置 `type` 属性为 `daterange`,以日期范围的形式进行选择。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['date-range.vue'] + }, + { + demoId: 'datetime-range', + name: { + 'zh-CN': '选择日期时间范围', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

设置 `type` 属性为 `datetimerange`,以日期时间范围的形式进行选择。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['datetime-range.vue'] + } + ], + apis: [] +} diff --git a/examples/docs/resources/mobile-first/app/drawer/webdoc/drawer.cn.md b/examples/docs/resources/mobile-first/app/drawer/webdoc/drawer.cn.md new file mode 100644 index 000000000..408078906 --- /dev/null +++ b/examples/docs/resources/mobile-first/app/drawer/webdoc/drawer.cn.md @@ -0,0 +1,9 @@ +--- +title: Drawer 抽屉组件 +--- + +# Drawer 抽屉组件 + +
+ +
diff --git a/examples/docs/resources/mobile-first/app/drawer/webdoc/drawer.en.md b/examples/docs/resources/mobile-first/app/drawer/webdoc/drawer.en.md new file mode 100644 index 000000000..408078906 --- /dev/null +++ b/examples/docs/resources/mobile-first/app/drawer/webdoc/drawer.en.md @@ -0,0 +1,9 @@ +--- +title: Drawer 抽屉组件 +--- + +# Drawer 抽屉组件 + +
+ +
diff --git a/examples/docs/resources/mobile-first/app/drawer/webdoc/drawer.js b/examples/docs/resources/mobile-first/app/drawer/webdoc/drawer.js new file mode 100644 index 000000000..4feee386d --- /dev/null +++ b/examples/docs/resources/mobile-first/app/drawer/webdoc/drawer.js @@ -0,0 +1,117 @@ +export default { + column: '2', + owner: '', + demos: [ + { + demoId: 'basic-usage', + name: { + 'zh-CN': '基本用法', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['basic-usage.vue'] + }, + { + demoId: 'placement', + name: { + 'zh-CN': '抽屉方向', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

添加 `placement` 属性设置抽屉的方向,可选值有 `left|right|top|bottom`,默认值为 `right`。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['placement.vue'] + }, + { + demoId: 'width', + name: { + 'zh-CN': '抽屉宽度', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

添加 `width` 属性设置抽屉的宽度,默认值为 `300px`。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['width.vue'] + }, + { + demoId: 'dragable', + name: { + 'zh-CN': '拖拽功能', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

添加 `dragable` 属性开启抽屉宽度拖拽功能,默认值为 `false`。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['dragable.vue'] + }, + { + demoId: 'mask', + name: { + 'zh-CN': '遮罩层1', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

添加 `mask` 属性可以关闭遮罩层,默认值为 `true` 。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['mask.vue'] + }, + { + demoId: 'mask-event', + name: { + 'zh-CN': '遮罩层2', + 'en-US': 'events' + }, + desc: { + 'zh-CN': + '

默认弹窗打开后,可以单击遮罩层关闭弹窗,设置 `mask-closable` 为 `false` 后将禁用该功能,默认值为 `true` 。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['mask-event.vue'] + }, + { + demoId: 'show', + name: { + 'zh-CN': '显示隐藏', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

- show-header: 显示头部,默认值为 true;- show-footer: 显示底部,默认值为 false;

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['show.vue'] + }, + { + demoId: 'slot', + name: { + 'zh-CN': '插槽', + 'en-US': 'events' + }, + desc: { + 'zh-CN': + '

- header: 头部插槽,默认显示头部,设置 :show-header="true" 时有效;- header-right: 头部右侧插槽,默认显示关闭功能;- footer: 头部插槽,默认隐藏底部,设置 :show-footer="true" 时有效;

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['slot.vue'] + }, + { + demoId: 'event', + name: { + 'zh-CN': '事件', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

- hide: 关闭抽屉事件;- confirm: 确认事件,设置 :show-footer="true" 时有效;

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['event.vue'] + } + ], + apis: [] +} diff --git a/examples/docs/resources/mobile-first/app/dropdown/webdoc/dropdown.cn.md b/examples/docs/resources/mobile-first/app/dropdown/webdoc/dropdown.cn.md new file mode 100644 index 000000000..006c3bb45 --- /dev/null +++ b/examples/docs/resources/mobile-first/app/dropdown/webdoc/dropdown.cn.md @@ -0,0 +1,9 @@ +--- +title: Dropdown 下拉菜单 +--- + +# Dropdown 下拉菜单 + +
+将动作或菜单折叠到下拉菜单中。 +
diff --git a/examples/docs/resources/mobile-first/app/dropdown/webdoc/dropdown.en.md b/examples/docs/resources/mobile-first/app/dropdown/webdoc/dropdown.en.md new file mode 100644 index 000000000..006c3bb45 --- /dev/null +++ b/examples/docs/resources/mobile-first/app/dropdown/webdoc/dropdown.en.md @@ -0,0 +1,9 @@ +--- +title: Dropdown 下拉菜单 +--- + +# Dropdown 下拉菜单 + +
+将动作或菜单折叠到下拉菜单中。 +
diff --git a/examples/docs/resources/mobile-first/app/dropdown/webdoc/dropdown.js b/examples/docs/resources/mobile-first/app/dropdown/webdoc/dropdown.js new file mode 100644 index 000000000..187919d29 --- /dev/null +++ b/examples/docs/resources/mobile-first/app/dropdown/webdoc/dropdown.js @@ -0,0 +1,207 @@ +export default { + column: '2', + owner: '', + demos: [ + { + demoId: 'basic-usage', + name: { + 'zh-CN': '基本用法', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

基本用法

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['basic-usage.vue'] + }, + + { + demoId: 'checked-status', + name: { + 'zh-CN': '选中态', + 'en-US': 'events' + }, + desc: { + 'zh-CN': + '

通过添加`checked-status`属性实现选中态,其中必须添加索引值`current-index`和选中态`selected`属性

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['checked-status.vue'] + }, + { + demoId: 'label-over', + name: { + 'zh-CN': '标签超出显示', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

当文字超出规定范围展示全部信息

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['label-over.vue'] + }, + { + demoId: 'button-dropdown', + name: { + 'zh-CN': '下拉按钮1', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

可以通过 `split-button` 属性设置按钮下拉菜单。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['button-dropdown.vue'] + }, + { + demoId: 'button-type', + name: { + 'zh-CN': '下拉按钮2', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

可以通过 `type` 属性设置下拉菜单按钮类型,仅支持`primary`类型。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['button-type.vue'] + }, + { + demoId: 'button-size', + name: { + 'zh-CN': '下拉按钮3', + 'en-US': 'events' + }, + desc: { + 'zh-CN': + '

通过 size 属性设置按钮不同的大小尺寸,包括 medium、small、mini 三种不同大小。不设置时为默认尺寸。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['button-size.vue'] + }, + { + demoId: 'multi-stage', + name: { + 'zh-CN': '二级下拉触发对象', + 'en-US': 'events' + }, + desc: { + 'zh-CN': + '

将动作或菜单折叠到下拉菜单中。(暂不支持三级菜单)可以通过 `multi-stage` 属性设置二级下拉菜单,通过添加`level="2"`以便区分二级层级。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['multi-stage.vue'] + }, + { + demoId: 'many-dropdown', + name: { + 'zh-CN': '更多图标下拉', + 'en-US': 'events' + }, + desc: { + 'zh-CN': + '

通过添加`show-self-icon`属性自定义用户图标,无旋旋转动画;通过添加`:show-icon="false"`属性自定义用户图标,有旋旋转动画。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['many-dropdown.vue'] + }, + { + demoId: 'arrow-button', + name: { + 'zh-CN': '箭头按钮1', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

通过添加`border`属性可实现箭头按钮

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['arrow-button.vue'] + }, + { + demoId: 'border-size', + name: { + 'zh-CN': '箭头按钮2', + 'en-US': 'events' + }, + desc: { + 'zh-CN': + '

通过 size 属性设置按钮不同的大小尺寸,包括 medium、small、mini 三种不同大小。不设置时为默认尺寸。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['border-size.vue'] + }, + { + demoId: 'events-visible-change', + name: { + 'zh-CN': 'visible-change 事件', + 'en-US': 'events' + }, + desc: { + 'zh-CN': + '

内置事件包含:`button-click`、`item-click`、`visible-change` 事件。`visible-change` 事件:下拉框出现/隐藏时触发

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['events-visible-change.vue'] + }, + { + demoId: 'events-item-click', + name: { + 'zh-CN': 'item-click 事件', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

点击菜单项时触发的事件回调。可以通过`itemData`,获取菜单项中设置的`item-data`属性

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['events-item-click.vue'] + }, + { + demoId: 'events-button-click', + name: { + 'zh-CN': 'button-click 事件', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

当下拉触发元素呈现为按钮组,即`split-button`属性为`true`时,点击左侧按钮的事件回调

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['events-button-click.vue'] + }, + { + demoId: 'trigger-event', + name: { + 'zh-CN': '触发方式', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

可以配置 `click` 激活或者 `hover` 激活。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['trigger-event.vue'] + }, + { + demoId: 'pop-direction', + name: { + 'zh-CN': '弹出方向', + 'en-US': 'events' + }, + desc: { + 'zh-CN': + '

通过属性`palcement`来设置菜单弹出位置。可选值(top/top-start/top-end/bottom/bottom-start/bottom-end),默认:bottom-start;top:上居中;top-start:上偏左;top-end:上偏右;bottom 下居中;bottom-start 下偏左;bottom-end 下偏右

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['pop-direction.vue'] + }, + { + demoId: '/max-height', + name: { + 'zh-CN': '最大高度', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

通过添加`max-height`属性可设置下拉最大高度

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['/max-height.vue'] + } + ], + apis: [] +} diff --git a/examples/docs/resources/mobile-first/app/exception/webdoc/exception.cn.md b/examples/docs/resources/mobile-first/app/exception/webdoc/exception.cn.md new file mode 100644 index 000000000..486a1e8e5 --- /dev/null +++ b/examples/docs/resources/mobile-first/app/exception/webdoc/exception.cn.md @@ -0,0 +1,9 @@ +--- +title: Exception 缺省页 +--- + +# Exception 缺省页 + +
+ +
diff --git a/examples/docs/resources/mobile-first/app/exception/webdoc/exception.en.md b/examples/docs/resources/mobile-first/app/exception/webdoc/exception.en.md new file mode 100644 index 000000000..486a1e8e5 --- /dev/null +++ b/examples/docs/resources/mobile-first/app/exception/webdoc/exception.en.md @@ -0,0 +1,9 @@ +--- +title: Exception 缺省页 +--- + +# Exception 缺省页 + +
+ +
diff --git a/examples/docs/resources/mobile-first/app/exception/webdoc/exception.js b/examples/docs/resources/mobile-first/app/exception/webdoc/exception.js new file mode 100644 index 000000000..6c9705f14 --- /dev/null +++ b/examples/docs/resources/mobile-first/app/exception/webdoc/exception.js @@ -0,0 +1,69 @@ +export default { + column: '2', + owner: '', + demos: [ + { + demoId: 'message', + name: { + 'zh-CN': '基本用法', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['message.vue'] + }, + { + demoId: 'page-empty', + name: { + 'zh-CN': '页面级空态', + 'en-US': 'events' + }, + desc: { + 'zh-CN': + '

通过添加`page-empty`属性展示页面级空态,其中 type 类型有`pagenoperm`、 `pageweaknet`、 `pagenothing`、 `pageservererror`
对应场景:
`pagenoperm` :无访问权限
`pageweaknet` :网络异常
`pagenothing` :你访问的页面不存在
`pageservererror`:服务器异常

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['page-empty.vue'] + }, + { + demoId: 'component-empty', + name: { + 'zh-CN': '组件级空态', + 'en-US': 'events' + }, + desc: { + 'zh-CN': + '

通过添加`component-empty`属性展示组件级空态,其中 type 类型有`noperm、 nodata、 weaknet、noresult、 nonews`
对应场景:
`noperm` :无访问权限
`nodata` :暂无数据
`weaknet` :网络不给力
`noresult`:无相关搜索结果
`nonews`:暂无最新消息

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['component-empty.vue'] + }, + { + demoId: 'sub-message', + name: { + 'zh-CN': '自定义二级标题内容', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

通过`sub-message`自定义二级标题

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['sub-message.vue'] + }, + { + demoId: 'button-text', + name: { + 'zh-CN': '自定义插槽', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

已去除`button-text`自定义按钮文本,直接可以通过插槽自定义

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['button-text.vue'] + } + ], + apis: [] +} diff --git a/examples/docs/resources/mobile-first/app/file-upload/webdoc/file-upload.cn.md b/examples/docs/resources/mobile-first/app/file-upload/webdoc/file-upload.cn.md new file mode 100644 index 000000000..a0ac5c8d2 --- /dev/null +++ b/examples/docs/resources/mobile-first/app/file-upload/webdoc/file-upload.cn.md @@ -0,0 +1,9 @@ +--- +title: FileUpload 文件上传 +--- + +# FileUpload 文件上传 + +
+可以设定文件的类型与上传的个数等。可自定义上传服务。 +
diff --git a/examples/docs/resources/mobile-first/app/file-upload/webdoc/file-upload.en.md b/examples/docs/resources/mobile-first/app/file-upload/webdoc/file-upload.en.md new file mode 100644 index 000000000..a0ac5c8d2 --- /dev/null +++ b/examples/docs/resources/mobile-first/app/file-upload/webdoc/file-upload.en.md @@ -0,0 +1,9 @@ +--- +title: FileUpload 文件上传 +--- + +# FileUpload 文件上传 + +
+可以设定文件的类型与上传的个数等。可自定义上传服务。 +
diff --git a/examples/docs/resources/mobile-first/app/file-upload/webdoc/file-upload.js b/examples/docs/resources/mobile-first/app/file-upload/webdoc/file-upload.js new file mode 100644 index 000000000..9c3f54a9c --- /dev/null +++ b/examples/docs/resources/mobile-first/app/file-upload/webdoc/file-upload.js @@ -0,0 +1,331 @@ +export default { + column: '2', + owner: '', + demos: [ + { + demoId: 'basic-usage', + name: { + 'zh-CN': '基本用法', + 'en-US': 'basic usage' + }, + desc: { + 'zh-CN': '

属性 action(type:String) 上传服务器地址。

', + 'en-US': '

button type

' + }, + codeFiles: ['basic-usage.vue'] + }, + + { + demoId: 'file-type', + name: { + 'zh-CN': '可上传的文件类型', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

通过配置 `accept(.doc,.docx)` 来限制上传文件的格式为 `.doc .docx`

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['file-type.vue'] + }, + { + demoId: 'file-list', + name: { + 'zh-CN': '上传的文件列表', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

通过 `fileList` 配置需要显示的文件列表。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['file-list.vue'] + }, + { + demoId: 'show-title', + name: { + 'zh-CN': '隐藏标题', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

配置 `show-title` 为 `false` 隐藏标题,默认为 `true`。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['show-title.vue'] + }, + { + demoId: 'title', + name: { + 'zh-CN': '自定义标题', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

通过 `title` 可自定义标题。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['title.vue'] + }, + { + demoId: 'preview', + name: { + 'zh-CN': '文件预览', + 'en-US': 'events' + }, + desc: { + 'zh-CN': + '

文件上传模式,配置 `preview` 事件,已上传的文件会显示预览按钮,点击预览图标会触发 `preview` 事件。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['preview.vue'] + }, + { + demoId: 'preview-picture', + name: { + 'zh-CN': '图片预览', + 'en-US': 'events' + }, + desc: { + 'zh-CN': + '

图片上传模式,配置 `preview` 事件,已上传的文件会显示预览图标,点击预览图标会触发 `preview` 事件。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['preview-picture.vue'] + }, + { + demoId: 'download-all', + name: { + 'zh-CN': '下载全部', + 'en-US': 'events' + }, + desc: { + 'zh-CN': + '

文件上传模式,配置 `download-all` 事件,会显示下载全部按钮,点击下载全部按钮会触发 `download-all` 事件

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['download-all.vue'] + }, + { + demoId: 'download', + name: { + 'zh-CN': '文件下载', + 'en-US': 'events' + }, + desc: { + 'zh-CN': + '

文件上传模式,配置 `download-file` 事件,已上传的文件会显示下载按钮,点击下载按钮会触发 `download-file` 事件

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['download.vue'] + }, + { + demoId: 'download-picture', + name: { + 'zh-CN': '图片下载', + 'en-US': 'events' + }, + desc: { + 'zh-CN': + '

图片上传模式,配置 `download-file` 事件,已上传的文件会显示下载图标,点击下载按钮会触发 `download-file` 事件

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['download-picture.vue'] + }, + { + demoId: 're-upload', + name: { + 'zh-CN': '文件重新上传', + 'en-US': 'events' + }, + desc: { + 'zh-CN': + '

文件上传模式,配置 `re-upload` 事件,上传失败的文件会显示重新上传按钮,点击重新上传按钮会触发 `re-upload` 事件

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['re-upload.vue'] + }, + { + demoId: 're-upload-picture', + name: { + 'zh-CN': '图片重新上传', + 'en-US': 'events' + }, + desc: { + 'zh-CN': + '

图片上传模式,配置 `re-upload` 事件,上传失败的文件会显示重新上传图标,点击重新上传按钮会触发 `re-upload` 事件

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['re-upload-picture.vue'] + }, + { + demoId: 'display-only', + name: { + 'zh-CN': '文件只读模式', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

文件上传模式,通过 `display-only` 设置组件是否只读。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['display-only.vue'] + }, + { + demoId: 'display-only-picture', + name: { + 'zh-CN': '图片只读模式', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

图片上传模式,通过 `display-only` 设置组件是否只读。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['display-only-picture.vue'] + }, + { + demoId: 'display-only-video-audio', + name: { + 'zh-CN': '音视频只读模式', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

音视频上传模式,通过 `display-only` 设置组件是否只读。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['display-only-video-audio.vue'] + }, + { + demoId: 'picture', + name: { + 'zh-CN': '图片上传--picture-single', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

设置 `list-type` 为 `picture-single`,展示单图片模式。可配置 `file-list` 属性展示对应的图片

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['picture.vue'] + }, + { + demoId: 'picture-card', + name: { + 'zh-CN': '图片上传--picture-card', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

设置 `list-type` 为 `picture-card`,展示图片墙模式。可配置 `file-list` 属性展示对应的图片

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['picture-card.vue'] + }, + { + demoId: 'picture-show-name', + name: { + 'zh-CN': '图片上传--show-name', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

设置 `show-name` 控制是否展示图片名字

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['picture-show-name.vue'] + }, + { + demoId: 'video', + name: { + 'zh-CN': '视频上传', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

在 `list-type` 为 `picture-single` 时,设置 `source-type` 为 `video` 时展示视频

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['video.vue'] + }, + { + demoId: 'audio', + name: { + 'zh-CN': '音频上传', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

在 `list-type` 为 `picture-single` 时,设置 `source-type` 为 `audio` 时展示视频

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['audio.vue'] + }, + { + demoId: 'multi-media', + name: { + 'zh-CN': '多媒体上传1', + 'en-US': 'events' + }, + desc: { + 'zh-CN': + '

在 `list-type` 为 `picture-card` 时,设置 `source-type` 为 `video/audio/picture` 时进行视频、音频、图片上传,`source-type` 支持 `video、audio、picture` 的互相组合

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['multi-media.vue'] + }, + { + demoId: 'multi-media-native', + name: { + 'zh-CN': '多媒体上传2', + 'en-US': 'events' + }, + desc: { + 'zh-CN': + '

同时在多媒体上传模式下,可配置hwh5属性,进行原生上传。可在 `trigger-click` 事件中进行文件选取操作并上传,可在 `play` 事件中进行音视频播放操作

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['multi-media-native.vue'] + }, + + { + demoId: 'drag', + name: { + 'zh-CN': '拖拽上传', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

设置 `list-type` 为 `drag-single`,开启单文件拖拽上传。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['drag.vue'] + }, + { + demoId: 'drag-file-list', + name: { + 'zh-CN': '拖拽上传显示文件', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

可配置 `file-list` 属性展示对应的文件

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['drag-file-list.vue'] + }, + { + demoId: 'event-trigger-click', + name: { + 'zh-CN': '事件', + 'en-US': 'events' + }, + desc: { + 'zh-CN': + '

`trigger-click` 点击文件上传时触发的事件
`preview` 点击预览时触发的事件
`download-file` 点击下载时触发的事件
`download-all` 点击全部下载时触发的事件
`re-upload` 点击重新上传时触发的事件
`click-file-list` 点击上传的文件列表时触发的事件

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['event-trigger-click.vue'] + }, + { + demoId: 'assist-content', + name: { + 'zh-CN': '插槽', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

`assist-content` 辅助内容插槽

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['assist-content.vue'] + } + ], + apis: [] +} diff --git a/examples/docs/resources/mobile-first/app/filter-bar/webdoc/filter-bar.cn.md b/examples/docs/resources/mobile-first/app/filter-bar/webdoc/filter-bar.cn.md new file mode 100644 index 000000000..22bc93b40 --- /dev/null +++ b/examples/docs/resources/mobile-first/app/filter-bar/webdoc/filter-bar.cn.md @@ -0,0 +1,9 @@ +--- +title: FilterBar 过滤栏 +--- + +# FilterBar 过滤栏 + +
+ +
diff --git a/examples/docs/resources/mobile-first/app/filter-bar/webdoc/filter-bar.en.md b/examples/docs/resources/mobile-first/app/filter-bar/webdoc/filter-bar.en.md new file mode 100644 index 000000000..22bc93b40 --- /dev/null +++ b/examples/docs/resources/mobile-first/app/filter-bar/webdoc/filter-bar.en.md @@ -0,0 +1,9 @@ +--- +title: FilterBar 过滤栏 +--- + +# FilterBar 过滤栏 + +
+ +
diff --git a/examples/docs/resources/mobile-first/app/filter-bar/webdoc/filter-bar.js b/examples/docs/resources/mobile-first/app/filter-bar/webdoc/filter-bar.js new file mode 100644 index 000000000..7b3a39ae0 --- /dev/null +++ b/examples/docs/resources/mobile-first/app/filter-bar/webdoc/filter-bar.js @@ -0,0 +1,43 @@ +export default { + column: '2', + owner: '', + demos: [ + { + demoId: 'basic-usage', + name: { + 'zh-CN': '基本用法', + 'en-US': 'basic usage' + }, + desc: { + 'zh-CN': '

基本用法

', + 'en-US': '

button type

' + }, + codeFiles: ['basic-usage.vue'] + }, + { + demoId: 'readonly', + name: { + 'zh-CN': '选中项只读', + 'en-US': 'button round' + }, + desc: { + 'zh-CN': '

点击事件不改变选中项。

', + 'en-US': '

button round

' + }, + codeFiles: ['readonly.vue'] + }, + { + demoId: 'slot', + name: { + 'zh-CN': '插槽', + 'en-US': 'button round' + }, + desc: { + 'zh-CN': '

可使用右侧 `icon` 自定义插槽。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['slot.vue'] + } + ], + apis: [] +} diff --git a/examples/docs/resources/mobile-first/app/filter/webdoc/filter.cn.md b/examples/docs/resources/mobile-first/app/filter/webdoc/filter.cn.md new file mode 100644 index 000000000..4bcaf4016 --- /dev/null +++ b/examples/docs/resources/mobile-first/app/filter/webdoc/filter.cn.md @@ -0,0 +1,9 @@ +--- +title: Filter 过滤器 +--- + +# Filter 过滤器 + +
+ +
diff --git a/examples/docs/resources/mobile-first/app/filter/webdoc/filter.en.md b/examples/docs/resources/mobile-first/app/filter/webdoc/filter.en.md new file mode 100644 index 000000000..4bcaf4016 --- /dev/null +++ b/examples/docs/resources/mobile-first/app/filter/webdoc/filter.en.md @@ -0,0 +1,9 @@ +--- +title: Filter 过滤器 +--- + +# Filter 过滤器 + +
+ +
diff --git a/examples/docs/resources/mobile-first/app/filter/webdoc/filter.js b/examples/docs/resources/mobile-first/app/filter/webdoc/filter.js new file mode 100644 index 000000000..a358c3215 --- /dev/null +++ b/examples/docs/resources/mobile-first/app/filter/webdoc/filter.js @@ -0,0 +1,58 @@ +export default { + column: '2', + owner: '', + demos: [ + { + demoId: 'basic-usage', + name: { + 'zh-CN': '基本用法', + 'en-US': 'basic usage' + }, + desc: { + 'zh-CN': + '

过滤类型 type 包括 单选、多选、枚举单选 (radio | checkbox | enum-radio)

', + 'en-US': '

button type

' + }, + codeFiles: ['basic-usage.vue'] + }, + { + demoId: 'column-num', + name: { + 'zh-CN': '面板每行标签数', + 'en-US': 'button round' + }, + desc: { + 'zh-CN': '

通过 column-num 属性设置面板每行标签数,默认值为 3。

', + 'en-US': '

button round

' + }, + codeFiles: ['column-num.vue'] + }, + { + demoId: 'filter-group', + name: { + 'zh-CN': '过滤组', + 'en-US': '过滤组' + }, + desc: { + 'zh-CN': + '

通过 filter-group 属性开启过滤组功能,filter-value 绑定过滤组的值。过滤组类型 type 包括 单选、多选 (radio | checkbox)

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['filter-group.vue'] + }, + { + demoId: 'enumeration', + name: { + 'zh-CN': '枚举单选', + 'en-US': 'events' + }, + desc: { + 'zh-CN': + '

设置过滤类型 type: "enum-radio" 时,当前数据为枚举单选,通过 showAll: true 显示 全部 选择项。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['enumeration.vue'] + } + ], + apis: [] +} diff --git a/examples/docs/resources/mobile-first/app/flowchart/basic-usage.vue b/examples/docs/resources/mobile-first/app/flowchart/basic-usage.vue index 6444c6b75..1655ee517 100644 --- a/examples/docs/resources/mobile-first/app/flowchart/basic-usage.vue +++ b/examples/docs/resources/mobile-first/app/flowchart/basic-usage.vue @@ -1,5 +1,12 @@ diff --git a/examples/docs/resources/mobile-first/app/flowchart/dot-horizon.vue b/examples/docs/resources/mobile-first/app/flowchart/dot-horizon.vue new file mode 100644 index 000000000..77beb200e --- /dev/null +++ b/examples/docs/resources/mobile-first/app/flowchart/dot-horizon.vue @@ -0,0 +1,124 @@ + + + diff --git a/examples/docs/resources/mobile-first/app/flowchart/dot-vertical.vue b/examples/docs/resources/mobile-first/app/flowchart/dot-vertical.vue new file mode 100644 index 000000000..c4111cec9 --- /dev/null +++ b/examples/docs/resources/mobile-first/app/flowchart/dot-vertical.vue @@ -0,0 +1,226 @@ + + + diff --git a/examples/docs/resources/mobile-first/app/flowchart/holistic-fork.vue b/examples/docs/resources/mobile-first/app/flowchart/holistic-fork.vue new file mode 100644 index 000000000..9d66d4c4c --- /dev/null +++ b/examples/docs/resources/mobile-first/app/flowchart/holistic-fork.vue @@ -0,0 +1,357 @@ + + + + + diff --git a/examples/docs/resources/mobile-first/app/flowchart/holistic.vue b/examples/docs/resources/mobile-first/app/flowchart/holistic.vue new file mode 100644 index 000000000..df5449c6c --- /dev/null +++ b/examples/docs/resources/mobile-first/app/flowchart/holistic.vue @@ -0,0 +1,186 @@ + + + + + diff --git a/examples/docs/resources/mobile-first/app/flowchart/horizon.vue b/examples/docs/resources/mobile-first/app/flowchart/horizon.vue index 281a5acc7..c152d88f8 100644 --- a/examples/docs/resources/mobile-first/app/flowchart/horizon.vue +++ b/examples/docs/resources/mobile-first/app/flowchart/horizon.vue @@ -1,5 +1,12 @@ diff --git a/examples/docs/resources/mobile-first/app/flowchart/webdoc/flowchart.cn.md b/examples/docs/resources/mobile-first/app/flowchart/webdoc/flowchart.cn.md new file mode 100644 index 000000000..8e356754e --- /dev/null +++ b/examples/docs/resources/mobile-first/app/flowchart/webdoc/flowchart.cn.md @@ -0,0 +1,16 @@ +--- +title: Flowchart 流程图 +--- + +# Flowchart 流程图 + +
+基本用法 +该组件可以用来定制流程图,不依赖其它库或组件。默认的实现支持有状态的节点和连线,支持节点和连线以及空白区域的点击事件。 +点模式 +提供了节点组件 Node 用于定制多端流程图的节点样式 + +业务场景 +提供了节点组件 Node 用于定制多端流程图的节点样式 + +
diff --git a/examples/docs/resources/mobile-first/app/flowchart/webdoc/flowchart.en.md b/examples/docs/resources/mobile-first/app/flowchart/webdoc/flowchart.en.md new file mode 100644 index 000000000..8e356754e --- /dev/null +++ b/examples/docs/resources/mobile-first/app/flowchart/webdoc/flowchart.en.md @@ -0,0 +1,16 @@ +--- +title: Flowchart 流程图 +--- + +# Flowchart 流程图 + +
+基本用法 +该组件可以用来定制流程图,不依赖其它库或组件。默认的实现支持有状态的节点和连线,支持节点和连线以及空白区域的点击事件。 +点模式 +提供了节点组件 Node 用于定制多端流程图的节点样式 + +业务场景 +提供了节点组件 Node 用于定制多端流程图的节点样式 + +
diff --git a/examples/docs/resources/mobile-first/app/flowchart/webdoc/flowchart.js b/examples/docs/resources/mobile-first/app/flowchart/webdoc/flowchart.js new file mode 100644 index 000000000..a0b30c28c --- /dev/null +++ b/examples/docs/resources/mobile-first/app/flowchart/webdoc/flowchart.js @@ -0,0 +1,79 @@ +export default { + column: '2', + owner: '', + demos: [ + { + demoId: '/basic-usage', + name: { + 'zh-CN': '垂直图形', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['/basic-usage.vue'] + }, + { + demoId: 'horizon', + name: { + 'zh-CN': '水平图形', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['horizon.vue'] + }, + { + demoId: 'dot-vertical', + name: { + 'zh-CN': '点模式-垂直图形', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['dot-vertical.vue'] + }, + { + demoId: 'dot-horizon', + name: { + 'zh-CN': '点模式-水平图形', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['dot-horizon.vue'] + }, + { + demoId: 'holistic', + name: { + 'zh-CN': '全景图', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['holistic.vue'] + }, + { + demoId: 'holistic-fork', + name: { + 'zh-CN': '全景图-分叉', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['holistic-fork.vue'] + } + ], + apis: [] +} diff --git a/examples/docs/resources/mobile-first/app/form/no-validate-to-add.vue b/examples/docs/resources/mobile-first/app/form/no-validate-to-add.vue index ae0f815ec..fad47820f 100644 --- a/examples/docs/resources/mobile-first/app/form/no-validate-to-add.vue +++ b/examples/docs/resources/mobile-first/app/form/no-validate-to-add.vue @@ -130,7 +130,6 @@ export default { .demo-ruleForm .tiny-form-item .tiny-form-item__content { width: 270px; } - button:first-of-type { margin-left: 100px; } diff --git a/examples/docs/resources/mobile-first/app/form/webdoc/form.cn.md b/examples/docs/resources/mobile-first/app/form/webdoc/form.cn.md new file mode 100644 index 000000000..6702addcb --- /dev/null +++ b/examples/docs/resources/mobile-first/app/form/webdoc/form.cn.md @@ -0,0 +1,9 @@ +--- +title: Form 表单 +--- + +# Form 表单 + +
+由按钮、输入框、选择器、单选框、多选框等控件组成,用以收集、校验、提交数据。 +
diff --git a/examples/docs/resources/mobile-first/app/form/webdoc/form.en.md b/examples/docs/resources/mobile-first/app/form/webdoc/form.en.md new file mode 100644 index 000000000..6702addcb --- /dev/null +++ b/examples/docs/resources/mobile-first/app/form/webdoc/form.en.md @@ -0,0 +1,9 @@ +--- +title: Form 表单 +--- + +# Form 表单 + +
+由按钮、输入框、选择器、单选框、多选框等控件组成,用以收集、校验、提交数据。 +
diff --git a/examples/docs/resources/mobile-first/app/form/webdoc/form.js b/examples/docs/resources/mobile-first/app/form/webdoc/form.js new file mode 100644 index 000000000..380ac0951 --- /dev/null +++ b/examples/docs/resources/mobile-first/app/form/webdoc/form.js @@ -0,0 +1,210 @@ +export default { + column: '2', + owner: '', + demos: [ + { + demoId: 'frequently-used-form', + name: { + 'zh-CN': '常用表单', + 'en-US': 'events' + }, + desc: { + 'zh-CN': + '

在 Form 组件中,每一个表单域由一个 FormItem 组件构成,表单域中可以放置各种类型的表单控件,包括 Input、Select、Checkbox、Radio、Switch、DatePicker、TimePicker。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['frequently-used-form.vue'] + }, + { + demoId: 'form-in-row', + name: { + 'zh-CN': '行内表单', + 'en-US': 'events' + }, + desc: { + 'zh-CN': + '

当垂直方向空间受限且表单较简单时,可以在一行内放置表单,设置 `inline` 属性可以让表单域变为行内的表单域。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['form-in-row.vue'] + }, + { + demoId: 'form-validation', + name: { + 'zh-CN': '表单校验', + 'en-US': 'events' + }, + desc: { + 'zh-CN': + '

包括常用的必填、日期、时间、URL、邮件等校验规则。通过 `trigger` 配置触发校验规则的方式,为 `change` 时,当输入框值改变即触发校验,为 `blur` 时则失焦后触发校验。
校验时若校验类型为 `date`,则需要使用 `DatePicker` 组件进行日期选择,若使用 `Input` 组件进行日期输入,建议使用自定义校验规则。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['form-validation.vue'] + }, + { + demoId: 'custom-validation-rule', + name: { + 'zh-CN': '自定义校验规则', + 'en-US': 'events' + }, + desc: { + 'zh-CN': + '

通过 `validator` 选项进行自定义校验,校验方法中 `callback` 必须被调用。通过配置 `validate-on-rule-change` 属性,设置是否在 `rules` 属性改变后立即触发一次验证

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['custom-validation-rule.vue'] + }, + { + demoId: 'validation-position', + name: { + 'zh-CN': '校验提示位置', + 'en-US': 'events' + }, + desc: { + 'zh-CN': + '

通过 `validate-position` 可自定义错误提示出现的位置,在 `Form` 组件上设置后,子组件`FormItem`会继承父组件设置。单独在 `FormItem` 组件上进行设置优先级高于在 `From`上的设置。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['validation-position.vue'] + }, + { + demoId: 'popper-options-bubbling', + name: { + 'zh-CN': '校验提示跟随表单项移动', + 'en-US': 'events' + }, + desc: { + 'zh-CN': + '

通过配置 `popperOptions.bubbling` 为 `true` ,可实现表单的校验提示跟随 Form 表单外部的滚动条滚动。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['popper-options-bubbling.vue'] + }, + { + demoId: 'switch-from-item', + name: { + 'zh-CN': '动态切换 FormItem', + 'en-US': 'events' + }, + desc: { + 'zh-CN': + '

在表单中通过 `v-if` 切换两个 `FormItem` 控制页面元素时,会存在错误提示错位问题,原因时 Vue 复用了 ToolTip 组件,这时需要将 form-item 上加上 `key` 属性标识

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['switch-from-item.vue'] + }, + { + demoId: 'no-validate-to-add', + name: { + 'zh-CN': 'RichText 等无校验的组件添加校验的方法', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['no-validate-to-add.vue'] + }, + { + demoId: 'size', + name: { + 'zh-CN': '表单尺寸', + 'en-US': 'events' + }, + desc: { + 'zh-CN': + '

通过在 `tiny-form` 标签上设置 `size` 属性可以改变表单内组件尺寸;设置 `disabled` 属性可以改变表单内组件禁用状态

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['size.vue'] + }, + { + demoId: 'form-clear-validate', + name: { + 'zh-CN': '移除表单项的校验结果', + 'en-US': 'events' + }, + desc: { + 'zh-CN': + '

调用 `clearValidate` 方法移除表单项的校验结果。传入待移除的表单项的 `prop` 属性或者 `prop` 组成的数组,如不传则移除整个表单的校验结果。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['form-clear-validate.vue'] + }, + { + demoId: 'slot-label', + name: { + 'zh-CN': '标签文本插槽', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

通过在 `label` 插槽,自定义标签文本的内容

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['slot-label.vue'] + }, + { + demoId: 'form-item-tip', + name: { + 'zh-CN': '给表单项 label 添加提示', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

通过给 form-item 添加 tip-content 属性给 label 添加提示信息

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['form-item-tip.vue'] + }, + { + demoId: 'validate-type', + name: { + 'zh-CN': '校验提示的形式', + 'en-US': 'events' + }, + desc: { + 'zh-CN': + '

通过 `validate-type` 可设置校验提示信息是以 `text` 文本显示还是以 `tip` 提示框的形式显示,默认为 `tip` 。也可直接配置在某一个 `` 上控制某一项的校验提示形式。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['validate-type.vue'] + }, + { + demoId: 'form-disabled', + name: { + 'zh-CN': '表单禁用', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

通过 `disabled` 可设置表单是否禁用,默认为 `false`。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['form-disabled.vue'] + }, + { + demoId: 'form-display-only', + name: { + 'zh-CN': '只读 display-only', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

通过 `display-only` 属性,开启只读模式

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['form-display-only.vue'] + }, + { + demoId: 'validate-debounce', + name: { + 'zh-CN': '防抖处理', + 'en-US': 'events' + }, + desc: { + 'zh-CN': + '

设置 FormItem 的属性 `validate-debounce` 为 `true`,可以开启校验防抖,在连续输入的情况下,会在最后一次输入结束时才开始校验。默认为 `false` 不开启。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['validate-debounce.vue'] + } + ], + apis: [] +} diff --git a/examples/docs/resources/mobile-first/app/grid/basic-usage.vue b/examples/docs/resources/mobile-first/app/grid/basic-usage.vue new file mode 100644 index 000000000..649562222 --- /dev/null +++ b/examples/docs/resources/mobile-first/app/grid/basic-usage.vue @@ -0,0 +1,179 @@ + + + diff --git a/examples/docs/resources/mobile-first/app/grid/webdoc/grid.cn.md b/examples/docs/resources/mobile-first/app/grid/webdoc/grid.cn.md new file mode 100644 index 000000000..b0debc154 --- /dev/null +++ b/examples/docs/resources/mobile-first/app/grid/webdoc/grid.cn.md @@ -0,0 +1,9 @@ +--- +title: Grid 表格 +--- + +# Grid 表格 + +
+表格组件,提供了非常强大数据表格功能,在 Grid 可以展示数据列表,可以对数据列表进行选择、编辑等。 +
diff --git a/examples/docs/resources/mobile-first/app/grid/webdoc/grid.en.md b/examples/docs/resources/mobile-first/app/grid/webdoc/grid.en.md new file mode 100644 index 000000000..b0debc154 --- /dev/null +++ b/examples/docs/resources/mobile-first/app/grid/webdoc/grid.en.md @@ -0,0 +1,9 @@ +--- +title: Grid 表格 +--- + +# Grid 表格 + +
+表格组件,提供了非常强大数据表格功能,在 Grid 可以展示数据列表,可以对数据列表进行选择、编辑等。 +
diff --git a/examples/docs/resources/mobile-first/app/grid/webdoc/grid.js b/examples/docs/resources/mobile-first/app/grid/webdoc/grid.js new file mode 100644 index 000000000..a207919d6 --- /dev/null +++ b/examples/docs/resources/mobile-first/app/grid/webdoc/grid.js @@ -0,0 +1,43 @@ +export default { + column: '2', + owner: '', + demos: [ + { + demoId: 'basic-usage', + name: { + 'zh-CN': '枚举单选', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['basic-usage.vue'] + }, + { + demoId: 'column-anchor', + name: { + 'zh-CN': '列锚点', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['column-anchor.vue'] + }, + { + demoId: 'operation-column', + name: { + 'zh-CN': '操作列', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['operation-column.vue'] + } + ], + apis: [] +} diff --git a/examples/docs/resources/mobile-first/app/image/webdoc/image.cn.md b/examples/docs/resources/mobile-first/app/image/webdoc/image.cn.md new file mode 100644 index 000000000..0baebc049 --- /dev/null +++ b/examples/docs/resources/mobile-first/app/image/webdoc/image.cn.md @@ -0,0 +1,9 @@ +--- +title: Image 图片预览 +--- + +# Image 图片预览 + +
+图片容器,在保留原生 img 的特性下,支持懒加载,自定义占位、加载失败等功能。 +
diff --git a/examples/docs/resources/mobile-first/app/image/webdoc/image.en.md b/examples/docs/resources/mobile-first/app/image/webdoc/image.en.md new file mode 100644 index 000000000..0baebc049 --- /dev/null +++ b/examples/docs/resources/mobile-first/app/image/webdoc/image.en.md @@ -0,0 +1,9 @@ +--- +title: Image 图片预览 +--- + +# Image 图片预览 + +
+图片容器,在保留原生 img 的特性下,支持懒加载,自定义占位、加载失败等功能。 +
diff --git a/examples/docs/resources/mobile-first/app/image/webdoc/image.js b/examples/docs/resources/mobile-first/app/image/webdoc/image.js new file mode 100644 index 000000000..afa43193b --- /dev/null +++ b/examples/docs/resources/mobile-first/app/image/webdoc/image.js @@ -0,0 +1,57 @@ +export default { + column: '2', + owner: '', + demos: [ + { + demoId: 'basic-usage', + name: { + 'zh-CN': '基本用法', + 'en-US': 'basic usage' + }, + desc: { + 'zh-CN': '

通过 `image-size` 设置预览的图片尺寸大小,通过`round`设置是否展示圆形。

', + 'en-US': '

button type

' + }, + codeFiles: ['basic-usage.vue'] + }, + + { + demoId: 'show-hover', + name: { + 'zh-CN': '图片悬浮', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

通过 `show-hover` 设置预览的图片的悬浮效果。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['show-hover.vue'] + }, + { + demoId: 'auto-fit-container-size', + name: { + 'zh-CN': '自适应容器尺寸', + 'en-US': 'events' + }, + desc: { + 'zh-CN': + '

可通过 `fit` 属性确定图片如何适应到容器框,同原生 css 的 object-fit 属性。
object-fit 说明
fill:被替换的内容将被缩放,以在填充元素的内容框时保持其宽高比
contain:被替换的内容大小可以填充元素的内容框
cover:被替换的内容大小保持其宽高比,同时填充元素的整个内容框
none:被替换的内容尺寸不会被改变
scale-down:内容的尺寸就像是指定了 none 或 contain,取决于哪一个将导致更小的对象尺寸。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['auto-fit-container-size.vue'] + }, + { + demoId: 'preview-src-list', + name: { + 'zh-CN': '预览大图', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

通过 `preview-src-list` 开启预览大图的功能,通过添加`show-index`开启图片序列号展示。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['preview-src-list.vue'] + } + ], + apis: [] +} diff --git a/examples/docs/resources/mobile-first/app/input/webdoc/input.cn.md b/examples/docs/resources/mobile-first/app/input/webdoc/input.cn.md new file mode 100644 index 000000000..45bb9e1d0 --- /dev/null +++ b/examples/docs/resources/mobile-first/app/input/webdoc/input.cn.md @@ -0,0 +1,9 @@ +--- +title: Input 输入框 +--- + +# Input 输入框 + +
+通过鼠标或键盘输入字符。 +
diff --git a/examples/docs/resources/mobile-first/app/input/webdoc/input.en.md b/examples/docs/resources/mobile-first/app/input/webdoc/input.en.md new file mode 100644 index 000000000..45bb9e1d0 --- /dev/null +++ b/examples/docs/resources/mobile-first/app/input/webdoc/input.en.md @@ -0,0 +1,9 @@ +--- +title: Input 输入框 +--- + +# Input 输入框 + +
+通过鼠标或键盘输入字符。 +
diff --git a/examples/docs/resources/mobile-first/app/input/webdoc/input.js b/examples/docs/resources/mobile-first/app/input/webdoc/input.js new file mode 100644 index 000000000..3df544824 --- /dev/null +++ b/examples/docs/resources/mobile-first/app/input/webdoc/input.js @@ -0,0 +1,471 @@ +export default { + column: '2', + owner: '', + demos: [ + { + demoId: 'basic-usage', + name: { + 'zh-CN': '基本用法', + 'en-US': 'basic usage' + }, + desc: { + 'zh-CN': '

', + 'en-US': '

button type

' + }, + codeFiles: ['basic-usage.vue'] + }, + + { + demoId: 'clearable', + name: { + 'zh-CN': '可清空', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

可通过 `clearable` 属性设置输入框显示清空图标按钮。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['clearable.vue'] + }, + { + demoId: 'show-password', + name: { + 'zh-CN': '密码显示', + 'en-US': 'events' + }, + desc: { + 'zh-CN': + '

当 `type` 为 `password` 时,可通过 `show-password` 属性设置输入框显示密码显示/隐藏切换图标按钮。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['show-password.vue'] + }, + { + demoId: 'type', + name: { + 'zh-CN': 'type 属性', + 'en-US': 'events' + }, + desc: { + 'zh-CN': + '

通对应的 type 属性,可以设置为对应的类型。默认为 text,可选值为 text,textarea 和其他 原生 input 的 type 值

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['type.vue'] + }, + { + demoId: 'size', + name: { + 'zh-CN': '尺寸', + 'en-US': 'events' + }, + desc: { + 'zh-CN': + '

可通过 `size` 属性设置尺寸大小,可选值:`medium / small / mini`。注意:只在 `type!="textarea"` 时有效。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['size.vue'] + }, + { + demoId: 'form', + name: { + 'zh-CN': 'form', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

可通过 `form` 属性设置原生属性 form 。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['form.vue'] + }, + { + demoId: 'enumnameeration', + name: { + 'zh-CN': 'name', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

可通过 `name` 原生属性。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['name.vue'] + }, + { + demoId: 'label', + name: { + 'zh-CN': '输入框关联文字', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

可通过 `label` 属性设置输入框关联的 label 文字。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['label.vue'] + }, + { + demoId: 'prefix-icon', + name: { + 'zh-CN': '头部图标', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

可通过 `prefix-icon` 属性设置输入框头部图标。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['prefix-icon.vue'] + }, + { + demoId: 'suffix-icon', + name: { + 'zh-CN': '尾部图标', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

可通过 `suffix-icon` 属性设置输入框尾部图标。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['suffix-icon.vue'] + }, + { + demoId: 'slot-prefix', + name: { + 'zh-CN': '可通过 slot="prefix" 设置头部图标', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['slot-prefix.vue'] + }, + { + demoId: 'slot-suffix', + name: { + 'zh-CN': '可通过 slot="suffix" 设置尾部图标', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['slot-suffix.vue'] + }, + { + demoId: 'resize', + name: { + 'zh-CN': '可缩放文本域', + 'en-US': 'events' + }, + desc: { + 'zh-CN': + '

可通过 `resize` 属性设置文本域的缩放。可选值:`none / both / horizontal / vertical`。注意:只在 `type="textarea"` 时有效。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['resize.vue'] + }, + { + demoId: 'rows', + name: { + 'zh-CN': '文本域行数', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

可通过 `rows` 属性设置文本域显示行数。注意:只在 `text="textarea"` 时有效。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['rows.vue'] + }, + { + demoId: 'cols', + name: { + 'zh-CN': '文本域宽度', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

可通过 `cols` 属性设置文本域显示宽度。注意:只在 `text="textarea"` 时有效。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['cols.vue'] + }, + { + demoId: 'autosize', + name: { + 'zh-CN': '可自适应文本高度的文本域', + 'en-US': 'events' + }, + desc: { + 'zh-CN': + '

可通过 `autosize` 属性设置文本域自适应内容高度。可传入对象,如`{ minRows: 2, maxRows: 6 }`。注意:只对 `type="textarea"` 有效。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['autosize.vue'] + }, + { + demoId: 'tabindex', + name: { + 'zh-CN': '输入框的 tabindex', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

可通过 `tabindex` 属性设置输入框的 tabindex

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['tabindex.vue'] + }, + { + demoId: 'slot-prepend', + name: { + 'zh-CN': '前置内容', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

配置 `prepend` slot,设置输入框前置内容,注意:只对 `type="text"` 有效。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['slot-prepend.vue'] + }, + { + demoId: 'slot-append', + name: { + 'zh-CN': '后置内容', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

配置 `append` slot,设置输入框后置内容,注意:只对 `type="text"` 有效。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['slot-append.vue'] + }, + { + demoId: 'slot-prefix', + name: { + 'zh-CN': '头部内容', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

配置 `prefix` slot,设置输入框头部内容,注意:只对 `type="text"` 有效。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['slot-prefix.vue'] + }, + { + demoId: 'slot-suffix', + name: { + 'zh-CN': '尾部内容', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

配置 `suffix` slot,设置输入框尾部内容,注意:只对 `type="text"` 有效。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['slot-suffix.vue'] + }, + { + demoId: 'max', + name: { + 'zh-CN': '最大值', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

可通过 `max` 属性设置输入框最大值。`max` 是原生属性。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['max.vue'] + }, + { + demoId: 'min', + name: { + 'zh-CN': '最小值', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

可通过 `min` 属性设置输入框最小值。`min` 是原生属性。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['min.vue'] + }, + { + demoId: 'maxlength', + name: { + 'zh-CN': '最大输入长度', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

可通过 `maxlength` 属性设置输入框最大输入长度。`maxlength` 是原生属性。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['maxlength.vue'] + }, + { + demoId: 'show-word-limit', + name: { + 'zh-CN': '输入字数统计', + 'en-US': 'events' + }, + desc: { + 'zh-CN': + '

可通过 `show-word-limit` 属性设置是否显示输入字数统计,只在 type = "text" 或 type = "textarea" 时有效

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['show-word-limit.vue'] + }, + { + demoId: 'counter', + name: { + 'zh-CN': '计数器', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

可通过 `counter` 属性设置显示输入框字符计数器。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['counter.vue'] + }, + { + demoId: 'step', + name: { + 'zh-CN': '输入字段的合法数字间隔', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

可通过 `step` 属性设置输入字段的合法数字间隔。`step` 是原生属性。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['step.vue'] + }, + { + demoId: 'validate-event', + name: { + 'zh-CN': '输入时触发表单校验', + 'en-US': 'events' + }, + desc: { + 'zh-CN': + '

可通过 `validate-event` 属性设置输入时触发表单校验。通过 `trigger` 配置触发校验规则的方式,为 `change` 时,当输入框值改变即触发校验,为 `blur` 时则失焦后触发校验。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['validate-event.vue'] + }, + { + demoId: 'autofocus', + name: { + 'zh-CN': '自动获取焦点', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

可通过 `autofocus` 属性设置自动获取焦点。`autofocus` 是原生属性。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['autofocus.vue'] + }, + { + demoId: 'autocomplete', + name: { + 'zh-CN': '自动补全', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

可通过 `autocomplete` 属性设置自动补全,默认值为 off ,可选 on 。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['autocomplete.vue'] + }, + { + demoId: 'event-blur', + name: { + 'zh-CN': '失焦事件', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

输入框失去焦点时触发 `blur` 事件。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['event-blur.vue'] + }, + { + demoId: 'event-change', + name: { + 'zh-CN': '值改变事件', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

输入框值改变时触发 `change` 事件。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['event-change.vue'] + }, + { + demoId: 'event-clear', + name: { + 'zh-CN': '清除事件', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

点击输入框清除按钮时触发 `clear` 事件。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['event-clear.vue'] + }, + { + demoId: 'event-focus', + name: { + 'zh-CN': '聚焦事件', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

输入框获取焦点时触发 `focus` 事件。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['event-focus.vue'] + }, + { + demoId: 'method-addMemory', + name: { + 'zh-CN': '记忆历史输入', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['method-addMemory.vue'] + }, + { + demoId: 'method-blur', + name: { + 'zh-CN': '失去焦点', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['method-blur.vue'] + }, + { + demoId: 'method-focus', + name: { + 'zh-CN': '获取焦点', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['method-focus.vue'] + }, + { + demoId: 'method-select', + name: { + 'zh-CN': '选中输入框文本', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['method-select.vue'] + } + ], + apis: [] +} diff --git a/examples/docs/resources/mobile-first/app/loading/webdoc/loading.cn.md b/examples/docs/resources/mobile-first/app/loading/webdoc/loading.cn.md new file mode 100644 index 000000000..b33dedec4 --- /dev/null +++ b/examples/docs/resources/mobile-first/app/loading/webdoc/loading.cn.md @@ -0,0 +1,9 @@ +--- +title: Loading 加载 +--- + +# Loading 加载 + +
+加载数据时显示的动画效果。 +
diff --git a/examples/docs/resources/mobile-first/app/loading/webdoc/loading.en.md b/examples/docs/resources/mobile-first/app/loading/webdoc/loading.en.md new file mode 100644 index 000000000..b33dedec4 --- /dev/null +++ b/examples/docs/resources/mobile-first/app/loading/webdoc/loading.en.md @@ -0,0 +1,9 @@ +--- +title: Loading 加载 +--- + +# Loading 加载 + +
+加载数据时显示的动画效果。 +
diff --git a/examples/docs/resources/mobile-first/app/loading/webdoc/loading.js b/examples/docs/resources/mobile-first/app/loading/webdoc/loading.js new file mode 100644 index 000000000..0213f5e6f --- /dev/null +++ b/examples/docs/resources/mobile-first/app/loading/webdoc/loading.js @@ -0,0 +1,118 @@ +export default { + column: '2', + owner: '', + demos: [ + { + demoId: 'basic-usage', + name: { + 'zh-CN': '基本用法', + 'en-US': 'basic usage' + }, + desc: { + 'zh-CN': '

通过静态方法 `Loading.service` 在指定 `target` 上设置加载。

', + 'en-US': '

button type

' + }, + codeFiles: ['basic-usage.vue'] + }, + + { + demoId: 'loading-tip-text', + name: { + 'zh-CN': '自定义加载提示文本', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

通过 `text` 自定义加载文字的提示文本。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['loading-tip-text.vue'] + }, + { + demoId: 'background', + name: { + 'zh-CN': '自定义遮罩背景色', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

通过 `background` 自定义背景颜色和透明度。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['background.vue'] + }, + { + demoId: 'custom-class', + name: { + 'zh-CN': '自定义样式', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

通过 `customClass` 指定类名进行样式修改。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['custom-class.vue'] + }, + { + demoId: 'body', + name: { + 'zh-CN': '修饰符', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['body.vue'] + }, + { + demoId: 'fullscreen', + name: { + 'zh-CN': '全局加载', + 'en-US': 'events' + }, + desc: { + 'zh-CN': + '

通过 `v-loading.lock.fullscreen` 指令方式或者服务方式进行全局加载,如需使用指令方式全局加载需要如下操作:
在 `Vue 2` 版本环境中添加 `Vue.use(Loading)`
在 `Vue 3` 版本环境中添加 `app.use(Loading)`

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['fullscreen.vue'] + }, + { + demoId: 'spinner', + name: { + 'zh-CN': '自定义加载图标', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

通过 `spinner` 自定义加载图标。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['spinner.vue'] + }, + { + demoId: 'target', + name: { + 'zh-CN': '区域加载', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

通过 `target` 指定 Loading 需要覆盖的 DOM 节点。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['target.vue'] + }, + { + demoId: 'loading-size', + name: { + 'zh-CN': '尺寸', + 'en-US': 'events' + }, + desc: { + 'zh-CN': + '

通过在 `Loading.service` 中设置 `size` 属性加载不同的大小尺寸,包括 large、medium、small、mini 四种不同大小。不设置时为默认尺寸。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['loading-size.vue'] + } + ], + apis: [] +} diff --git a/examples/docs/resources/mobile-first/app/message/webdoc/message.cn.md b/examples/docs/resources/mobile-first/app/message/webdoc/message.cn.md new file mode 100644 index 000000000..c4e993f36 --- /dev/null +++ b/examples/docs/resources/mobile-first/app/message/webdoc/message.cn.md @@ -0,0 +1,9 @@ +--- +title: Message 提示框 +--- + +# Message 提示框 + +
+ +
diff --git a/examples/docs/resources/mobile-first/app/message/webdoc/message.en.md b/examples/docs/resources/mobile-first/app/message/webdoc/message.en.md new file mode 100644 index 000000000..c4e993f36 --- /dev/null +++ b/examples/docs/resources/mobile-first/app/message/webdoc/message.en.md @@ -0,0 +1,9 @@ +--- +title: Message 提示框 +--- + +# Message 提示框 + +
+ +
diff --git a/examples/docs/resources/mobile-first/app/message/webdoc/message.js b/examples/docs/resources/mobile-first/app/message/webdoc/message.js new file mode 100644 index 000000000..e147cdfec --- /dev/null +++ b/examples/docs/resources/mobile-first/app/message/webdoc/message.js @@ -0,0 +1,56 @@ +export default { + column: '2', + owner: '', + demos: [ + { + demoId: 'base', + name: { + 'zh-CN': '基本用法', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

可通过 `this.$message` 弹出信息提示框。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['base.vue'] + }, + { + demoId: 'duration', + name: { + 'zh-CN': '自动关闭延时', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

可通过 `duration` 属性设置自动关闭的延迟时间,只对 type=message 有效。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['duration.vue'] + }, + { + demoId: 'status', + name: { + 'zh-CN': '消息状态', + 'en-US': 'events' + }, + desc: { + 'zh-CN': + '

可通过 `status` 属性设置消息状态,可选值有 `info | success | warning | error `。
可通过 `showClose` 属性控制弹窗是否显示关闭图标,可选值有 `ture | false`。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['status.vue'] + }, + { + demoId: 'id', + name: { + 'zh-CN': '防止重复提示', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

如果不想窗口重复点击,可以设置唯一的 `id` 防止重复提示,只对 type=message 有效。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['id.vue'] + } + ], + apis: [] +} diff --git a/examples/docs/resources/mobile-first/app/modal/webdoc/modal.cn.md b/examples/docs/resources/mobile-first/app/modal/webdoc/modal.cn.md new file mode 100644 index 000000000..191718672 --- /dev/null +++ b/examples/docs/resources/mobile-first/app/modal/webdoc/modal.cn.md @@ -0,0 +1,9 @@ +--- +title: Modal 模态框 +--- + +# Modal 模态框 + +
+ +
diff --git a/examples/docs/resources/mobile-first/app/modal/webdoc/modal.en.md b/examples/docs/resources/mobile-first/app/modal/webdoc/modal.en.md new file mode 100644 index 000000000..191718672 --- /dev/null +++ b/examples/docs/resources/mobile-first/app/modal/webdoc/modal.en.md @@ -0,0 +1,9 @@ +--- +title: Modal 模态框 +--- + +# Modal 模态框 + +
+ +
diff --git a/examples/docs/resources/mobile-first/app/modal/webdoc/modal.js b/examples/docs/resources/mobile-first/app/modal/webdoc/modal.js new file mode 100644 index 000000000..1fd4bcca3 --- /dev/null +++ b/examples/docs/resources/mobile-first/app/modal/webdoc/modal.js @@ -0,0 +1,334 @@ +export default { + column: '2', + owner: '', + demos: [ + { + demoId: 'base', + name: { + 'zh-CN': '基本用法', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

可通过 `Modal.alert` 方法设置弹出框,通过 `Modal.confirm` 方法设置确认弹出框。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['base.vue'] + }, + { + demoId: 'div-button-content', + name: { + 'zh-CN': '按钮内容', + 'en-US': 'events' + }, + desc: { + 'zh-CN': + '

可在 `Modal.alert` 方法里通过添加 `confirmContent` 属性设置确定按钮内容,通过 `cancelContent` 属性设置取消按钮内容。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['div-button-content.vue'] + }, + { + demoId: 'fullscreen', + name: { + 'zh-CN': '最大化显示', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

可通过 `fullscreen` 属性设置是否最大化显示。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['fullscreen.vue'] + }, + { + demoId: 'esc-closable', + name: { + 'zh-CN': '按 Esc 键关闭弹出框', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

可通过 `esc-closable` 属性设置是否允许按 Esc 键关闭窗口,默认为 `false`。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['esc-closable.vue'] + }, + { + demoId: 'duration', + name: { + 'zh-CN': '自动关闭延时', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

可通过 `duration` 属性设置自动关闭的延迟时间,只对 type=message 有效。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['duration.vue'] + }, + { + demoId: 'id', + name: { + 'zh-CN': '防止重复提示', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

如果不想窗口重复点击,可以设置唯一的 `id` 防止重复提示,只对 type=message 有效。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['id.vue'] + }, + { + demoId: 'lock-scroll', + name: { + 'zh-CN': '锁住滚动条', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

可通过 `lock-scroll` 属性设置是否锁住滚动条,不允许页面滚动。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['lock-scroll.vue'] + }, + { + demoId: 'lock-view', + name: { + 'zh-CN': '锁住页面', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

可通过 `lock-view` 属性设置是否锁住页面,不允许窗口之外的任何操作。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['lock-view.vue'] + }, + { + demoId: 'mask-closable', + name: { + 'zh-CN': '点击遮罩层关闭窗口', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

可通过 `mask-closable` 属性设置是否允许点击遮罩层关闭窗口。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['mask-closable.vue'] + }, + { + demoId: 'message', + name: { + 'zh-CN': '自定义内容', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

可通过 `message` 属性设置窗口的内容。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['message.vue'] + }, + { + demoId: 'showFooter', + name: { + 'zh-CN': '不显示底部', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

可通过 `showFooter` 属性设置是否显示底部,默认为 `true`。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['showFooter.vue'] + }, + { + demoId: 'showHeader', + name: { + 'zh-CN': '不显示头部', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

可通过 `showHeader` 属性设置是否显示头部,默认为 `true`。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['showHeader.vue'] + }, + { + demoId: 'status', + name: { + 'zh-CN': '消息状态', + 'en-US': 'events' + }, + desc: { + 'zh-CN': + '

可通过 `status` 属性设置消息状态,可选值有 `info | success | warning | error | loading | 自定义组件`,`status` 可以是自定义组件。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['status.vue'] + }, + { + demoId: 'title', + name: { + 'zh-CN': '标题', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

可通过 `title` 属性设置窗口的标题。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['title.vue'] + }, + { + demoId: 'type', + name: { + 'zh-CN': '窗口类型', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

可通过 `type` 属性设置窗口类型,可选值 `alert | confirm | message`。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['type.vue'] + }, + { + demoId: 'value', + name: { + 'zh-CN': '绑定值', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

可通过 `v-model` 属性绑定值。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['value.vue'] + }, + { + demoId: 'zIndex', + name: { + 'zh-CN': '自定义堆叠顺序', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

可通过 `zIndex` 属性设置自定义堆叠顺序(对于某些特殊场景,比如被遮挡时可能会用到)。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['zIndex.vue'] + }, + { + demoId: 'cancel-event', + name: { + 'zh-CN': '取消按钮事件', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

点击取消按钮时触发 `cancel` 事件。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['cancel-event.vue'] + }, + { + demoId: 'close-event', + name: { + 'zh-CN': '关闭按钮事件', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

点击关闭按钮时会触发 `close` 事件。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['close-event.vue'] + }, + { + demoId: 'confirm-event', + name: { + 'zh-CN': '确定按钮事件', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

点击确定按钮时会触发 `confirm` 事件。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['confirm-event.vue'] + }, + { + demoId: 'hide-event', + name: { + 'zh-CN': '窗口关闭事件', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

窗口关闭时会触发 `hide` 事件。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['hide-event.vue'] + }, + { + demoId: 'show-event', + name: { + 'zh-CN': '窗口显示事件', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

在窗口显示时会触发 `show` 事件。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['show-event.vue'] + }, + { + demoId: 'zoom-event', + name: { + 'zh-CN': '窗口缩放事件', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

窗口缩放时会触发 `zoom` 事件。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['zoom-event.vue'] + }, + { + demoId: 'value', + name: { + 'zh-CN': '默认插槽', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

可通过 `templete` 设置默认插槽。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['value.vue'] + }, + { + demoId: 'footer-slot', + name: { + 'zh-CN': '底部插槽', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

可通过 `slot="footer"` 设置底部插槽。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['footer-slot.vue'] + }, + { + demoId: 'grid', + name: { + 'zh-CN': '嵌套 grid', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

可通过插槽嵌套 grid

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['grid.vue'] + }, + { + demoId: 'before-close', + name: { + 'zh-CN': '拦截弹窗关闭', + 'en-US': 'events' + }, + desc: { + 'zh-CN': + '

通过 `before-close` 属性可以配置一个拦截弹窗关闭的方法。如果方法返回 false 值,则拦截弹窗关闭;否则不拦截
可以通过该拦截方法传入的参数获取关闭的操作类型
confirm 弹窗有以下关闭类型:
- confirm:点击确认时关闭
- cancel:点击取消时关闭
- close:点击关闭按钮时关闭
- mask: 点击遮罩时关闭
- esc:通过按钮 esc 时关闭
alert 弹窗比 confirm 弹窗少了 `confirm` 类型
message 弹窗只有 `show` 一种关闭类型

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['before-close.vue'] + } + ], + apis: [] +} diff --git a/examples/docs/resources/mobile-first/app/numeric/webdoc/numeric.cn.md b/examples/docs/resources/mobile-first/app/numeric/webdoc/numeric.cn.md new file mode 100644 index 000000000..4cd2f7fc4 --- /dev/null +++ b/examples/docs/resources/mobile-first/app/numeric/webdoc/numeric.cn.md @@ -0,0 +1,9 @@ +--- +title: Numeric 计数器 +--- + +# Numeric 计数器 + +
+Numeric 计数器可用于输入数字,可自定义数值范围,步进大小。支持鼠标键盘增减。 +
diff --git a/examples/docs/resources/mobile-first/app/numeric/webdoc/numeric.en.md b/examples/docs/resources/mobile-first/app/numeric/webdoc/numeric.en.md new file mode 100644 index 000000000..4cd2f7fc4 --- /dev/null +++ b/examples/docs/resources/mobile-first/app/numeric/webdoc/numeric.en.md @@ -0,0 +1,9 @@ +--- +title: Numeric 计数器 +--- + +# Numeric 计数器 + +
+Numeric 计数器可用于输入数字,可自定义数值范围,步进大小。支持鼠标键盘增减。 +
diff --git a/examples/docs/resources/mobile-first/app/numeric/webdoc/numeric.js b/examples/docs/resources/mobile-first/app/numeric/webdoc/numeric.js new file mode 100644 index 000000000..5231386bd --- /dev/null +++ b/examples/docs/resources/mobile-first/app/numeric/webdoc/numeric.js @@ -0,0 +1,117 @@ +export default { + column: '2', + owner: '', + demos: [ + { + demoId: 'basic-usage', + name: { + 'zh-CN': '基本用法', + 'en-US': 'basic usage' + }, + desc: { + 'zh-CN': '

', + 'en-US': '

button type

' + }, + codeFiles: ['basic-usage.vue'] + }, + + { + demoId: 'numeric-size', + name: { + 'zh-CN': '尺寸', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

可通过 `size` 属性设置计数器尺寸。可取值 `medium`。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['numeric-size.vue'] + }, + { + demoId: 'dynamic-disabled', + name: { + 'zh-CN': '禁用', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

通过设置 disabled 控制是否禁用计数器

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['dynamic-disabled.vue'] + }, + { + demoId: 'max-min', + name: { + 'zh-CN': '数值循环', + 'en-US': 'events' + }, + desc: { + 'zh-CN': + '

可通过设置 `max` 属性设置计数器允许的最大值,通过设置 `min` 属性设置计数器允许的最小值通过设置 `circulate` 属性设置是否循环,即数组首尾相连

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['max-min.vue'] + }, + { + demoId: 'about-step', + name: { + 'zh-CN': '步长', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

可通过 `step` 属性设置计数器的步长。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['about-step.vue'] + }, + { + demoId: 'unit', + name: { + 'zh-CN': '数值单位', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

可通过 `unit` 属性设置计数器的单位

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['unit.vue'] + }, + { + demoId: 'focus-event', + name: { + 'zh-CN': '聚焦事件', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

输入框获得焦点时触发 `focus` 事件。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['focus-event.vue'] + }, + { + demoId: 'blur-event', + name: { + 'zh-CN': '失焦事件', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

输入框失去焦点时触发 `blur` 事件。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['blur-event.vue'] + }, + { + demoId: 'change-event', + name: { + 'zh-CN': '值改变事件', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

输入框值被改变时触发 `change` 事件。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['change-event.vue'] + } + ], + apis: [] +} diff --git a/examples/docs/resources/mobile-first/app/pager/webdoc/pager.cn.md b/examples/docs/resources/mobile-first/app/pager/webdoc/pager.cn.md new file mode 100644 index 000000000..4bcaf4016 --- /dev/null +++ b/examples/docs/resources/mobile-first/app/pager/webdoc/pager.cn.md @@ -0,0 +1,9 @@ +--- +title: Filter 过滤器 +--- + +# Filter 过滤器 + +
+ +
diff --git a/examples/docs/resources/mobile-first/app/pager/webdoc/pager.en.md b/examples/docs/resources/mobile-first/app/pager/webdoc/pager.en.md new file mode 100644 index 000000000..4bcaf4016 --- /dev/null +++ b/examples/docs/resources/mobile-first/app/pager/webdoc/pager.en.md @@ -0,0 +1,9 @@ +--- +title: Filter 过滤器 +--- + +# Filter 过滤器 + +
+ +
diff --git a/examples/docs/resources/mobile-first/app/pager/webdoc/pager.js b/examples/docs/resources/mobile-first/app/pager/webdoc/pager.js new file mode 100644 index 000000000..a358c3215 --- /dev/null +++ b/examples/docs/resources/mobile-first/app/pager/webdoc/pager.js @@ -0,0 +1,58 @@ +export default { + column: '2', + owner: '', + demos: [ + { + demoId: 'basic-usage', + name: { + 'zh-CN': '基本用法', + 'en-US': 'basic usage' + }, + desc: { + 'zh-CN': + '

过滤类型 type 包括 单选、多选、枚举单选 (radio | checkbox | enum-radio)

', + 'en-US': '

button type

' + }, + codeFiles: ['basic-usage.vue'] + }, + { + demoId: 'column-num', + name: { + 'zh-CN': '面板每行标签数', + 'en-US': 'button round' + }, + desc: { + 'zh-CN': '

通过 column-num 属性设置面板每行标签数,默认值为 3。

', + 'en-US': '

button round

' + }, + codeFiles: ['column-num.vue'] + }, + { + demoId: 'filter-group', + name: { + 'zh-CN': '过滤组', + 'en-US': '过滤组' + }, + desc: { + 'zh-CN': + '

通过 filter-group 属性开启过滤组功能,filter-value 绑定过滤组的值。过滤组类型 type 包括 单选、多选 (radio | checkbox)

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['filter-group.vue'] + }, + { + demoId: 'enumeration', + name: { + 'zh-CN': '枚举单选', + 'en-US': 'events' + }, + desc: { + 'zh-CN': + '

设置过滤类型 type: "enum-radio" 时,当前数据为枚举单选,通过 showAll: true 显示 全部 选择项。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['enumeration.vue'] + } + ], + apis: [] +} diff --git a/examples/docs/resources/mobile-first/app/popconfirm/webdoc/popconfirm.cn.md b/examples/docs/resources/mobile-first/app/popconfirm/webdoc/popconfirm.cn.md new file mode 100644 index 000000000..78b9ad437 --- /dev/null +++ b/examples/docs/resources/mobile-first/app/popconfirm/webdoc/popconfirm.cn.md @@ -0,0 +1,9 @@ +--- +title: Popconfirm 气泡确认框组件 +--- + +# Popconfirm 气泡确认框组件 + +
+ +
diff --git a/examples/docs/resources/mobile-first/app/popconfirm/webdoc/popconfirm.en.md b/examples/docs/resources/mobile-first/app/popconfirm/webdoc/popconfirm.en.md new file mode 100644 index 000000000..78b9ad437 --- /dev/null +++ b/examples/docs/resources/mobile-first/app/popconfirm/webdoc/popconfirm.en.md @@ -0,0 +1,9 @@ +--- +title: Popconfirm 气泡确认框组件 +--- + +# Popconfirm 气泡确认框组件 + +
+ +
diff --git a/examples/docs/resources/mobile-first/app/popconfirm/webdoc/popconfirm.js b/examples/docs/resources/mobile-first/app/popconfirm/webdoc/popconfirm.js new file mode 100644 index 000000000..066f9df8e --- /dev/null +++ b/examples/docs/resources/mobile-first/app/popconfirm/webdoc/popconfirm.js @@ -0,0 +1,19 @@ +export default { + column: '2', + owner: '', + demos: [ + { + demoId: 'basic-usage', + name: { + 'zh-CN': '基本用法', + 'en-US': 'basic usage' + }, + desc: { + 'zh-CN': '

', + 'en-US': '

button type

' + }, + codeFiles: ['basic-usage.vue'] + } + ], + apis: [] +} diff --git a/examples/docs/resources/mobile-first/app/popover/webdoc/popover.cn.md b/examples/docs/resources/mobile-first/app/popover/webdoc/popover.cn.md new file mode 100644 index 000000000..79f3d1e02 --- /dev/null +++ b/examples/docs/resources/mobile-first/app/popover/webdoc/popover.cn.md @@ -0,0 +1,9 @@ +--- +title: Popover 气泡框 +--- + +# Popover 气泡框 + +
+Popover 可通过对一个触发源操作触发弹出框,支持自定义弹出内容,延迟触发和渐变动画 +
diff --git a/examples/docs/resources/mobile-first/app/popover/webdoc/popover.en.md b/examples/docs/resources/mobile-first/app/popover/webdoc/popover.en.md new file mode 100644 index 000000000..79f3d1e02 --- /dev/null +++ b/examples/docs/resources/mobile-first/app/popover/webdoc/popover.en.md @@ -0,0 +1,9 @@ +--- +title: Popover 气泡框 +--- + +# Popover 气泡框 + +
+Popover 可通过对一个触发源操作触发弹出框,支持自定义弹出内容,延迟触发和渐变动画 +
diff --git a/examples/docs/resources/mobile-first/app/popover/webdoc/popover.js b/examples/docs/resources/mobile-first/app/popover/webdoc/popover.js new file mode 100644 index 000000000..57781d5ba --- /dev/null +++ b/examples/docs/resources/mobile-first/app/popover/webdoc/popover.js @@ -0,0 +1,203 @@ +export default { + column: '2', + owner: '', + demos: [ + { + demoId: 'basic-usage', + name: { + 'zh-CN': '基本用法', + 'en-US': 'basic usage' + }, + desc: { + 'zh-CN': '

', + 'en-US': '

button type

' + }, + codeFiles: ['basic-usage.vue'] + }, + + { + demoId: 'popover-content', + name: { + 'zh-CN': '添加内容', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

`content` 设置要显示的内容。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['popover-content.vue'] + }, + { + demoId: 'arrow-offset', + name: { + 'zh-CN': '箭头偏移', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

`arrow-offset` 在 Popover 的范围内,设置箭头的偏移量,来改变箭头的位置。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['arrow-offset.vue'] + }, + { + demoId: 'frame-offset', + name: { + 'zh-CN': '弹出框偏移', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

`offset` 在触发源的范围内,设置弹框的偏移量,来改变弹框的位置。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['frame-offset.vue'] + }, + { + demoId: 'close-delay', + name: { + 'zh-CN': '延迟隐藏', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

`close-delay` 弹出框延迟隐藏单位为毫秒(Number)

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['close-delay.vue'] + }, + { + demoId: 'dynamic-disable', + name: { + 'zh-CN': '禁用', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

`disabled` 设置是否禁用弹出框。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['dynamic-disable.vue'] + }, + { + demoId: 'open-delay', + name: { + 'zh-CN': '延迟显示', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

`open-delay`,设置延迟时间 ( type:number,单位毫秒 )

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['open-delay.vue'] + }, + { + demoId: 'popover-placement', + name: { + 'zh-CN': '显示位置', + 'en-US': 'events' + }, + desc: { + 'zh-CN': + '

`placement` 设置弹出框的的位置,可选值为(to/top-start/top-end/bottom/bottom-start/bottom-end/left/left-start/left-end/right/right-start/right-end)

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['popover-placement.vue'] + }, + { + demoId: 'popper-class', + name: { + 'zh-CN': '自定义样式', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

`popper-class` 可配置单个或多个 class

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['popper-class.vue'] + }, + { + demoId: 'trigger-mode', + name: { + 'zh-CN': '触发方式', + 'en-US': 'events' + }, + desc: { + 'zh-CN': + '

`trigger`设定弹出框的触发方式
`click` 点击触发
`focus` 鼠标长按触发
`hover` 鼠标悬浮触发
`manual` 点击触发,再次点击隐藏

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['trigger-mode.vue'] + }, + { + demoId: 'hidden-arrow', + name: { + 'zh-CN': '隐藏提示框箭头', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

`visible-arrow` 设定是否显示提示框的箭头

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['hidden-arrow.vue'] + }, + { + demoId: 'popover-width', + name: { + 'zh-CN': '宽度', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

`width` 弹出框的宽度

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['popover-width.vue'] + }, + { + demoId: 'popper-options', + name: { + 'zh-CN': '弹出框选项', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

`popper-options` 配置弹出框选项

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['popper-options.vue'] + }, + { + demoId: 'trigger-reference', + name: { + 'zh-CN': '触发源', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

`slot` 设置弹出框的触发源

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['trigger-reference.vue'] + }, + { + demoId: 'custom-tip-text', + name: { + 'zh-CN': '自定义提示文本', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

`content` 设置自定义文本,也可在标签内直接嵌套默认插槽为自定义文本

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['custom-tip-text.vue'] + }, + { + demoId: 'popover-events', + name: { + 'zh-CN': '事件', + 'en-US': 'events' + }, + desc: { + 'zh-CN': + '

`hide` 隐藏时触发回调
`show` 显示时触发回调
`after-leave` 隐藏动画播放完毕后触发回调
`after-enter` 显示动画播放完毕后触发回调

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['popover-events.vue'] + } + ], + apis: [] +} diff --git a/examples/docs/resources/mobile-first/app/progress/webdoc/progress.cn.md b/examples/docs/resources/mobile-first/app/progress/webdoc/progress.cn.md new file mode 100644 index 000000000..859b582a8 --- /dev/null +++ b/examples/docs/resources/mobile-first/app/progress/webdoc/progress.cn.md @@ -0,0 +1,9 @@ +--- +title: Progress 进度条 +--- + +# Progress 进度条 + +
+用于展示操作进度,告知用户当前状态和预期。 +
diff --git a/examples/docs/resources/mobile-first/app/progress/webdoc/progress.en.md b/examples/docs/resources/mobile-first/app/progress/webdoc/progress.en.md new file mode 100644 index 000000000..859b582a8 --- /dev/null +++ b/examples/docs/resources/mobile-first/app/progress/webdoc/progress.en.md @@ -0,0 +1,9 @@ +--- +title: Progress 进度条 +--- + +# Progress 进度条 + +
+用于展示操作进度,告知用户当前状态和预期。 +
diff --git a/examples/docs/resources/mobile-first/app/progress/webdoc/progress.js b/examples/docs/resources/mobile-first/app/progress/webdoc/progress.js new file mode 100644 index 000000000..ebd0b3520 --- /dev/null +++ b/examples/docs/resources/mobile-first/app/progress/webdoc/progress.js @@ -0,0 +1,129 @@ +export default { + column: '2', + owner: '', + demos: [ + { + demoId: 'basic-usage', + name: { + 'zh-CN': '基本用法', + 'en-US': 'basic usage' + }, + desc: { + 'zh-CN': '

', + 'en-US': '

button type

' + }, + codeFiles: ['basic-usage.vue'] + }, + + { + demoId: 'progress-type', + name: { + 'zh-CN': 'line 类型', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

`type="line"` 显示为 line 类型

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['progress-type.vue'] + }, + { + demoId: 'progress-type-circle', + name: { + 'zh-CN': 'circle 类型', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

`type="circle"` 显示为 circle 类型。`width`可以调整环形进度条画布宽度,默认值为 96px。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['progress-type-circle.vue'] + }, + { + demoId: 'progress-size', + name: { + 'zh-CN': '尺寸', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

`size` 进度条的大小(small/medium/large)

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['progress-size.vue'] + }, + { + demoId: 'progress-width', + name: { + 'zh-CN': '自定义宽度', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

`stroke-width`自定义进度条的宽度,单位 px

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['progress-width.vue'] + }, + { + demoId: 'progress-status', + name: { + 'zh-CN': '状态', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

`status` 进度条当前状态(success/exception/warning)

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['progress-status.vue'] + }, + { + demoId: 'text-inside-or-no-text', + name: { + 'zh-CN': '文字内显或不显', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

`show-text` 是否显示进度条文字内容

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['text-inside-or-no-text.vue'] + }, + { + demoId: 'custom-color', + name: { + 'zh-CN': '自定义颜色', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

通过 `color` 设置进度条颜色。color 进度条背景色(会覆盖 status 状态颜色)

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['custom-color.vue'] + }, + { + demoId: 'format-text', + name: { + 'zh-CN': '自定义显示文字', + 'en-US': 'events' + }, + desc: { + 'zh-CN': + '

`text-inside` 进度条显示文字内置在进度条内(只在 type=line 时可用),`format`自定义进度条的文字

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['format-text.vue'] + }, + { + demoId: 'dynamic-control-changes', + name: { + 'zh-CN': '动态控制进度条变化', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

通过设置 `percentage` 动态控制进度条变化

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['dynamic-control-changes.vue'] + } + ], + apis: [] +} diff --git a/examples/docs/resources/mobile-first/app/radio-block/webdoc/radio-block.cn.md b/examples/docs/resources/mobile-first/app/radio-block/webdoc/radio-block.cn.md new file mode 100644 index 000000000..4bcaf4016 --- /dev/null +++ b/examples/docs/resources/mobile-first/app/radio-block/webdoc/radio-block.cn.md @@ -0,0 +1,9 @@ +--- +title: Filter 过滤器 +--- + +# Filter 过滤器 + +
+ +
diff --git a/examples/docs/resources/mobile-first/app/radio-block/webdoc/radio-block.en.md b/examples/docs/resources/mobile-first/app/radio-block/webdoc/radio-block.en.md new file mode 100644 index 000000000..4bcaf4016 --- /dev/null +++ b/examples/docs/resources/mobile-first/app/radio-block/webdoc/radio-block.en.md @@ -0,0 +1,9 @@ +--- +title: Filter 过滤器 +--- + +# Filter 过滤器 + +
+ +
diff --git a/examples/docs/resources/mobile-first/app/radio-block/webdoc/radio-block.js b/examples/docs/resources/mobile-first/app/radio-block/webdoc/radio-block.js new file mode 100644 index 000000000..a358c3215 --- /dev/null +++ b/examples/docs/resources/mobile-first/app/radio-block/webdoc/radio-block.js @@ -0,0 +1,58 @@ +export default { + column: '2', + owner: '', + demos: [ + { + demoId: 'basic-usage', + name: { + 'zh-CN': '基本用法', + 'en-US': 'basic usage' + }, + desc: { + 'zh-CN': + '

过滤类型 type 包括 单选、多选、枚举单选 (radio | checkbox | enum-radio)

', + 'en-US': '

button type

' + }, + codeFiles: ['basic-usage.vue'] + }, + { + demoId: 'column-num', + name: { + 'zh-CN': '面板每行标签数', + 'en-US': 'button round' + }, + desc: { + 'zh-CN': '

通过 column-num 属性设置面板每行标签数,默认值为 3。

', + 'en-US': '

button round

' + }, + codeFiles: ['column-num.vue'] + }, + { + demoId: 'filter-group', + name: { + 'zh-CN': '过滤组', + 'en-US': '过滤组' + }, + desc: { + 'zh-CN': + '

通过 filter-group 属性开启过滤组功能,filter-value 绑定过滤组的值。过滤组类型 type 包括 单选、多选 (radio | checkbox)

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['filter-group.vue'] + }, + { + demoId: 'enumeration', + name: { + 'zh-CN': '枚举单选', + 'en-US': 'events' + }, + desc: { + 'zh-CN': + '

设置过滤类型 type: "enum-radio" 时,当前数据为枚举单选,通过 showAll: true 显示 全部 选择项。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['enumeration.vue'] + } + ], + apis: [] +} diff --git a/examples/docs/resources/mobile-first/app/radio/webdoc/radio.cn.md b/examples/docs/resources/mobile-first/app/radio/webdoc/radio.cn.md new file mode 100644 index 000000000..364a3699b --- /dev/null +++ b/examples/docs/resources/mobile-first/app/radio/webdoc/radio.cn.md @@ -0,0 +1,9 @@ +--- +title: Radio 单选框 +--- + +# Radio 单选框 + +
+用于配置不同场景的选项,在一组备选项中进行单选 +
diff --git a/examples/docs/resources/mobile-first/app/radio/webdoc/radio.en.md b/examples/docs/resources/mobile-first/app/radio/webdoc/radio.en.md new file mode 100644 index 000000000..364a3699b --- /dev/null +++ b/examples/docs/resources/mobile-first/app/radio/webdoc/radio.en.md @@ -0,0 +1,9 @@ +--- +title: Radio 单选框 +--- + +# Radio 单选框 + +
+用于配置不同场景的选项,在一组备选项中进行单选 +
diff --git a/examples/docs/resources/mobile-first/app/radio/webdoc/radio.js b/examples/docs/resources/mobile-first/app/radio/webdoc/radio.js new file mode 100644 index 000000000..e8c730948 --- /dev/null +++ b/examples/docs/resources/mobile-first/app/radio/webdoc/radio.js @@ -0,0 +1,107 @@ +export default { + column: '2', + owner: '', + demos: [ + { + demoId: 'basic-usage', + name: { + 'zh-CN': '基本用法', + 'en-US': 'basic usage' + }, + desc: { + 'zh-CN': + '

通过 `v-model` 绑定变量,设置的变量值为默认选中的 Radio,变量值对应 `label` 属性的值。通过 `text` 也可以配置显示文本,与默认插槽配置纯文本的结果一致
`label` 可以是 `String`、`Number` 或 `Boolean`。

', + 'en-US': '

button type

' + }, + codeFiles: ['basic-usage.vue'] + }, + + { + demoId: 'group-options', + name: { + 'zh-CN': '配置式单选组', + 'en-US': 'events' + }, + desc: { + 'zh-CN': + '

提供 `options` 属性,支持通过配置对象数组数据的形式来渲染单选组。使用该属性后,可以不用再在标签中以插槽的形式插入 `` 或 `` 标签。
`options` 对象数组中包括三个字段:`label`、`text`、`events`。
另外还提供 `type` 属性,配合 `options` 属性一起使用,默认值为 `radio`。还可以配置为 `button`,配置后单选组将以按钮的形式展示。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['group-options.vue'] + }, + { + demoId: 'dynamic-disable', + name: { + 'zh-CN': '禁用状态', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

设置 `disabled` 属性即可启动禁用状态,默认为 false 。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['dynamic-disable.vue'] + }, + { + demoId: 'vertical', + name: { + 'zh-CN': '垂直布局', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

可在 RadioGroup 组件上设置 `vertical` 属性,使单选框垂直布局。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['vertical.vue'] + }, + { + demoId: 'radio-text', + name: { + 'zh-CN': '文字内容', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

可在 Radio 组件上设置 `text` 属性,设置内容。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['radio-text.vue'] + }, + { + demoId: 'radio-events', + name: { + 'zh-CN': '单选框事件', + 'en-US': 'events' + }, + desc: { + 'zh-CN': + '

可在 Radio、RadioGroup 组件上设置 `change` 事件,当绑定值变化时触发,回调函数为选中的 Radio label 值。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['radio-events.vue'] + }, + { + demoId: 'radio-default', + name: { + 'zh-CN': '默认插槽', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

通过 `default` 默认插槽列表。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['radio-default.vue'] + }, + { + demoId: 'read-only', + name: { + 'zh-CN': '只读', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

通过添加`display-only`,给单选框增加只读属性。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['read-only.vue'] + } + ], + apis: [] +} diff --git a/examples/docs/resources/mobile-first/app/rate/webdoc/rate.cn.md b/examples/docs/resources/mobile-first/app/rate/webdoc/rate.cn.md new file mode 100644 index 000000000..f5a3b35c9 --- /dev/null +++ b/examples/docs/resources/mobile-first/app/rate/webdoc/rate.cn.md @@ -0,0 +1,9 @@ +--- +title: Rate 评分 +--- + +# Rate 评分 + +
+Rate 快速评级,对评价进行展示。 +
diff --git a/examples/docs/resources/mobile-first/app/rate/webdoc/rate.en.md b/examples/docs/resources/mobile-first/app/rate/webdoc/rate.en.md new file mode 100644 index 000000000..f5a3b35c9 --- /dev/null +++ b/examples/docs/resources/mobile-first/app/rate/webdoc/rate.en.md @@ -0,0 +1,9 @@ +--- +title: Rate 评分 +--- + +# Rate 评分 + +
+Rate 快速评级,对评价进行展示。 +
diff --git a/examples/docs/resources/mobile-first/app/rate/webdoc/rate.js b/examples/docs/resources/mobile-first/app/rate/webdoc/rate.js new file mode 100644 index 000000000..939f1b222 --- /dev/null +++ b/examples/docs/resources/mobile-first/app/rate/webdoc/rate.js @@ -0,0 +1,225 @@ +export default { + column: '2', + owner: '', + demos: [ + { + demoId: 'basic-usage', + name: { + 'zh-CN': '基本用法', + 'en-US': 'basic usage' + }, + desc: { + 'zh-CN': '

', + 'en-US': '

button type

' + }, + codeFiles: ['basic-usage.vue'] + }, + + { + demoId: 'custom-3-threshold-colors', + name: { + 'zh-CN': '自定义 3 分段颜色', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

可通过 `colors` 定义 3 分段颜色。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['custom-3-threshold-colors.vue'] + }, + { + demoId: 'disabled-not-selected-color', + name: { + 'zh-CN': '禁用时未选中图标颜色', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

可通过 `disabled-void-color` 自定义禁用时未选中图标颜色。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['disabled-not-selected-color.vue'] + }, + { + demoId: 'disabled-not-selected-class', + name: { + 'zh-CN': '禁用时未选中图标类名', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

可通过 `disabled-void-icon-class` 自定义禁用时未选中图标类名。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['disabled-not-selected-class.vue'] + }, + { + demoId: 'custom-3-threshold-icon.vue', + name: { + 'zh-CN': '自定义 3 分段图标样式', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

可通过 `icon-classes` 自定义 3 分段图标样式。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['custom-3-threshold-icon.vue.vue'] + }, + { + demoId: 'texts-and-text-color', + name: { + 'zh-CN': '辅助文字及颜色', + 'en-US': 'events' + }, + desc: { + 'zh-CN': + '

可通过 `texts show-text text-color` 三个属性分别设置辅助文字内容、是否显示辅助文字及辅助文字颜色。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['texts-and-text-color.vue'] + }, + { + demoId: 'size', + name: { + 'zh-CN': '尺寸', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

可通过 `type` 设置尺寸 `large small(默认)` 。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['size.vue'] + }, + { + demoId: 'not-selected-color', + name: { + 'zh-CN': '未选中图标颜色', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

可通过 `void-color` 定义未选中图标颜色。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['not-selected-color.vue'] + }, + { + demoId: 'not-selected-class', + name: { + 'zh-CN': '未选中图标类名', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

可通过 `void-icon-class` 定义未选中图标类名。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['not-selected-class.vue'] + }, + { + demoId: 'text-on-bottom', + name: { + 'zh-CN': '图标下文字提示', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

可通过 `text-on-bottom` 定义是否在图标下显示文字提示。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['text-on-bottom.vue'] + }, + { + demoId: 'allow-half', + name: { + 'zh-CN': '半选', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

可通过 `allow-half` 定义是否支持半选。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['allow-half.vue'] + }, + { + demoId: 'enumeration', + name: { + 'zh-CN': '枚举单选', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

设置过滤类型

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['enumeration.vue'] + }, + { + demoId: 'dynamic-disable', + name: { + 'zh-CN': '禁用', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

可通过 `disabled` 定义是否禁用。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['dynamic-disable.vue'] + }, + { + demoId: 'show-score', + name: { + 'zh-CN': '分数显示', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

可通过 `show-score score-template` 分别定义是否显示分数和显示的模板。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['show-score.vue'] + }, + { + demoId: 'radio-rate', + name: { + 'zh-CN': '单选模式', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

可通过 `radio` 设置单选模式。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['radio-rate.vue'] + }, + { + demoId: 'max-score', + name: { + 'zh-CN': '最大分值', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

可通过 `max` 设置最大分值。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['max-score.vue'] + }, + { + demoId: 'threshold-value', + name: { + 'zh-CN': '界限值', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

可通过 `low-threshold high-threshold` 分别设置下限值和上限值,通过`colors`配置显示星的颜色

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['threshold-value.vue'] + }, + { + demoId: 'rate-events', + name: { + 'zh-CN': '事件', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

监听 `change` 事件触发处理方法。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['rate-events.vue'] + } + ], + apis: [] +} diff --git a/examples/docs/resources/mobile-first/app/record/webdoc/record.cn.md b/examples/docs/resources/mobile-first/app/record/webdoc/record.cn.md new file mode 100644 index 000000000..2645db085 --- /dev/null +++ b/examples/docs/resources/mobile-first/app/record/webdoc/record.cn.md @@ -0,0 +1,9 @@ +--- +title: Record 录音 +--- + +# Record 录音 + +
+Record 语音录入。 +
diff --git a/examples/docs/resources/mobile-first/app/record/webdoc/record.en.md b/examples/docs/resources/mobile-first/app/record/webdoc/record.en.md new file mode 100644 index 000000000..2645db085 --- /dev/null +++ b/examples/docs/resources/mobile-first/app/record/webdoc/record.en.md @@ -0,0 +1,9 @@ +--- +title: Record 录音 +--- + +# Record 录音 + +
+Record 语音录入。 +
diff --git a/examples/docs/resources/mobile-first/app/record/webdoc/record.js b/examples/docs/resources/mobile-first/app/record/webdoc/record.js new file mode 100644 index 000000000..066f9df8e --- /dev/null +++ b/examples/docs/resources/mobile-first/app/record/webdoc/record.js @@ -0,0 +1,19 @@ +export default { + column: '2', + owner: '', + demos: [ + { + demoId: 'basic-usage', + name: { + 'zh-CN': '基本用法', + 'en-US': 'basic usage' + }, + desc: { + 'zh-CN': '

', + 'en-US': '

button type

' + }, + codeFiles: ['basic-usage.vue'] + } + ], + apis: [] +} diff --git a/examples/docs/resources/mobile-first/app/scrollbar/webdoc/scrollbar.cn.md b/examples/docs/resources/mobile-first/app/scrollbar/webdoc/scrollbar.cn.md new file mode 100644 index 000000000..edf895006 --- /dev/null +++ b/examples/docs/resources/mobile-first/app/scrollbar/webdoc/scrollbar.cn.md @@ -0,0 +1,9 @@ +--- +title: Scrollbar 滚动条 +--- + +# Scrollbar 滚动条 + +
+提供各个浏览器下,风格统一,更美观的滚动条。 +
diff --git a/examples/docs/resources/mobile-first/app/scrollbar/webdoc/scrollbar.en.md b/examples/docs/resources/mobile-first/app/scrollbar/webdoc/scrollbar.en.md new file mode 100644 index 000000000..edf895006 --- /dev/null +++ b/examples/docs/resources/mobile-first/app/scrollbar/webdoc/scrollbar.en.md @@ -0,0 +1,9 @@ +--- +title: Scrollbar 滚动条 +--- + +# Scrollbar 滚动条 + +
+提供各个浏览器下,风格统一,更美观的滚动条。 +
diff --git a/examples/docs/resources/mobile-first/app/scrollbar/webdoc/scrollbar.js b/examples/docs/resources/mobile-first/app/scrollbar/webdoc/scrollbar.js new file mode 100644 index 000000000..d3d1b67c0 --- /dev/null +++ b/examples/docs/resources/mobile-first/app/scrollbar/webdoc/scrollbar.js @@ -0,0 +1,31 @@ +export default { + column: '2', + owner: '', + demos: [ + { + demoId: 'basic-usage', + name: { + 'zh-CN': '基本用法', + 'en-US': '' + }, + desc: { + 'zh-CN': '

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['basic-usage.vue'] + }, + { + demoId: 'horizon', + name: { + 'zh-CN': '水平滚动条', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['horizon.vue'] + } + ], + apis: [] +} diff --git a/examples/docs/resources/mobile-first/app/search/webdoc/search.cn.md b/examples/docs/resources/mobile-first/app/search/webdoc/search.cn.md new file mode 100644 index 000000000..953269549 --- /dev/null +++ b/examples/docs/resources/mobile-first/app/search/webdoc/search.cn.md @@ -0,0 +1,9 @@ +--- +title: Search 搜索 +--- + +# Search 搜索 + +
+指定条件对象进行搜索数据。 +
diff --git a/examples/docs/resources/mobile-first/app/search/webdoc/search.en.md b/examples/docs/resources/mobile-first/app/search/webdoc/search.en.md new file mode 100644 index 000000000..953269549 --- /dev/null +++ b/examples/docs/resources/mobile-first/app/search/webdoc/search.en.md @@ -0,0 +1,9 @@ +--- +title: Search 搜索 +--- + +# Search 搜索 + +
+指定条件对象进行搜索数据。 +
diff --git a/examples/docs/resources/mobile-first/app/search/webdoc/search.js b/examples/docs/resources/mobile-first/app/search/webdoc/search.js new file mode 100644 index 000000000..d1ac88163 --- /dev/null +++ b/examples/docs/resources/mobile-first/app/search/webdoc/search.js @@ -0,0 +1,176 @@ +export default { + column: '2', + owner: '', + demos: [ + { + demoId: 'basic-usage', + name: { + 'zh-CN': '基本用法', + 'en-US': 'basic usage' + }, + desc: { + 'zh-CN': '

', + 'en-US': '

button type

' + }, + codeFiles: ['basic-usage.vue'] + }, + + { + demoId: 'clearable', + name: { + 'zh-CN': '可清除', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

可通过 `clearable` 属性设置显示清空图标按钮。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['clearable.vue'] + }, + { + demoId: 'mini-mode', + name: { + 'zh-CN': '迷你模式', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

可通过 `mini` 设置组件为 mini 模式。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['mini-mode.vue'] + }, + { + demoId: 'transparent-mode', + name: { + 'zh-CN': '透明模式', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

可通过 `transparent` 设置组件为透明模式(`mini`模式下有效)。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['transparent-mode.vue'] + }, + { + demoId: 'default-value', + name: { + 'zh-CN': '默认值搜索', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

可通过 `v-model` 配置组件默认搜索条件。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['default-value.vue'] + }, + { + demoId: 'search-types', + name: { + 'zh-CN': '搜索类型', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

可通过 `search-types` 配置组件可选的搜索类型。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['search-types.vue'] + }, + { + demoId: 'enter-search', + name: { + 'zh-CN': '回车搜索', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

可通过 `is-enter-search` 属性设置按回车键后触发搜索。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['enter-search.vue'] + }, + { + demoId: 'custom-search-types', + name: { + 'zh-CN': '自定义搜索类型的内容', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['custom-search-types.vue'] + }, + { + demoId: 'show-selected-types', + name: { + 'zh-CN': '自定义搜索类型选择后的展示', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['show-selected-types.vue'] + }, + { + demoId: 'search-events', + name: { + 'zh-CN': 'search 事件', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['search-events.vue'] + }, + { + demoId: 'change-events', + name: { + 'zh-CN': 'change 事件', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['change-events.vue'] + }, + { + demoId: 'select-events', + name: { + 'zh-CN': 'select 事件', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['select-events.vue'] + }, + { + demoId: 'button-search', + name: { + 'zh-CN': '按钮搜索', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

可通过 `show-button` 属性对移动端设置按钮搜索。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['button-search.vue'] + }, + { + demoId: 'change-bg', + name: { + 'zh-CN': '切换背景色', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

可通过 `change-bg-color` 属性切换背景色。(只针对移动端有效)

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['change-bg.vue'] + } + ], + apis: [] +} diff --git a/examples/docs/resources/mobile-first/app/select-mobile/webdoc/select-mobile.cn.md b/examples/docs/resources/mobile-first/app/select-mobile/webdoc/select-mobile.cn.md new file mode 100644 index 000000000..1caa4ca55 --- /dev/null +++ b/examples/docs/resources/mobile-first/app/select-mobile/webdoc/select-mobile.cn.md @@ -0,0 +1,9 @@ +--- +title: SelectMobile 面板选择器组件 +--- + +# SelectMobile 面板选择器组件 + +
+ +
diff --git a/examples/docs/resources/mobile-first/app/select-mobile/webdoc/select-mobile.en.md b/examples/docs/resources/mobile-first/app/select-mobile/webdoc/select-mobile.en.md new file mode 100644 index 000000000..1caa4ca55 --- /dev/null +++ b/examples/docs/resources/mobile-first/app/select-mobile/webdoc/select-mobile.en.md @@ -0,0 +1,9 @@ +--- +title: SelectMobile 面板选择器组件 +--- + +# SelectMobile 面板选择器组件 + +
+ +
diff --git a/examples/docs/resources/mobile-first/app/select-mobile/webdoc/select-mobile.js b/examples/docs/resources/mobile-first/app/select-mobile/webdoc/select-mobile.js new file mode 100644 index 000000000..f8b476b25 --- /dev/null +++ b/examples/docs/resources/mobile-first/app/select-mobile/webdoc/select-mobile.js @@ -0,0 +1,45 @@ +export default { + column: '2', + owner: '', + demos: [ + { + demoId: 'basic-usage', + name: { + 'zh-CN': '基本用法', + 'en-US': 'basic usage' + }, + desc: { + 'zh-CN': '

', + 'en-US': '

button type

' + }, + codeFiles: ['basic-usage.vue'] + }, + + { + demoId: 'multiple', + name: { + 'zh-CN': '多选', + 'en-US': 'events' + }, + desc: { + 'zh-CN': + '

通过添加属性 `multiple`,开启多选功能。 通过 `@update:text` 事件接收选中项的 `textField` 文本信息,`text-split` 设置文本分隔符,默认值为 `; `。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['multiple.vue'] + }, + { + demoId: 'ellipsis', + name: { + 'zh-CN': '内容超出隐藏', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

添加属性 `ellipsis` 选项内容会超出隐藏。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['ellipsis.vue'] + } + ], + apis: [] +} diff --git a/examples/docs/resources/mobile-first/app/select-view/webdoc/select-view.cn.md b/examples/docs/resources/mobile-first/app/select-view/webdoc/select-view.cn.md new file mode 100644 index 000000000..0e760852d --- /dev/null +++ b/examples/docs/resources/mobile-first/app/select-view/webdoc/select-view.cn.md @@ -0,0 +1,9 @@ +--- +title: SelectView 页面选择器组件 +--- + +# SelectView 页面选择器组件 + +
+ +
diff --git a/examples/docs/resources/mobile-first/app/select-view/webdoc/select-view.en.md b/examples/docs/resources/mobile-first/app/select-view/webdoc/select-view.en.md new file mode 100644 index 000000000..0e760852d --- /dev/null +++ b/examples/docs/resources/mobile-first/app/select-view/webdoc/select-view.en.md @@ -0,0 +1,9 @@ +--- +title: SelectView 页面选择器组件 +--- + +# SelectView 页面选择器组件 + +
+ +
diff --git a/examples/docs/resources/mobile-first/app/select-view/webdoc/select-view.js b/examples/docs/resources/mobile-first/app/select-view/webdoc/select-view.js new file mode 100644 index 000000000..466470eb0 --- /dev/null +++ b/examples/docs/resources/mobile-first/app/select-view/webdoc/select-view.js @@ -0,0 +1,83 @@ +export default { + column: '2', + owner: '', + demos: [ + { + demoId: 'basic-usage', + name: { + 'zh-CN': '基本用法', + 'en-US': 'basic usage' + }, + desc: { + 'zh-CN': '

', + 'en-US': '

button type

' + }, + codeFiles: ['basic-usage.vue'] + }, + + { + demoId: 'field', + name: { + 'zh-CN': '显示三个字段两行', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['field.vue'] + }, + { + demoId: 'multiple', + name: { + 'zh-CN': '多选', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['multiple.vue'] + }, + { + demoId: 'multiple-required', + name: { + 'zh-CN': '必选项', + 'en-US': 'events' + }, + desc: { + 'zh-CN': + '

添加 `required-selected-list` 属性开启必选项列表,开启 `multiple` 多选时有效。可通过事件 `search-click` 的第二个返回参数判断是否操作成功,必选项不能取消勾选。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['multiple-required.vue'] + }, + { + demoId: 'text', + name: { + 'zh-CN': '文本信息', + 'en-US': 'events' + }, + desc: { + 'zh-CN': + '

通过 `@update:text` 事件接收选中项的 `textField` 文本信息,`text-split` 设置文本分隔符,默认值为 `;`。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['text.vue'] + }, + { + demoId: 'infinit-scroll', + name: { + 'zh-CN': '无限滚动', + 'en-US': 'events' + }, + desc: { + 'zh-CN': + '

配置 `infinite-scroll` 属性开启无限滚动,配置参数 `{ load: () => {}, delay: 200, disabled: false, distance: 0, immediate: true }`,可参考 `InfiniteScroll 无限滚动` 组件文档。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['infinit-scroll.vue'] + } + ], + apis: [] +} diff --git a/examples/docs/resources/mobile-first/app/selected-box/webdoc/selected-box.cn.md b/examples/docs/resources/mobile-first/app/selected-box/webdoc/selected-box.cn.md new file mode 100644 index 000000000..4bcaf4016 --- /dev/null +++ b/examples/docs/resources/mobile-first/app/selected-box/webdoc/selected-box.cn.md @@ -0,0 +1,9 @@ +--- +title: Filter 过滤器 +--- + +# Filter 过滤器 + +
+ +
diff --git a/examples/docs/resources/mobile-first/app/selected-box/webdoc/selected-box.en.md b/examples/docs/resources/mobile-first/app/selected-box/webdoc/selected-box.en.md new file mode 100644 index 000000000..4bcaf4016 --- /dev/null +++ b/examples/docs/resources/mobile-first/app/selected-box/webdoc/selected-box.en.md @@ -0,0 +1,9 @@ +--- +title: Filter 过滤器 +--- + +# Filter 过滤器 + +
+ +
diff --git a/examples/docs/resources/mobile-first/app/selected-box/webdoc/selected-box.js b/examples/docs/resources/mobile-first/app/selected-box/webdoc/selected-box.js new file mode 100644 index 000000000..a358c3215 --- /dev/null +++ b/examples/docs/resources/mobile-first/app/selected-box/webdoc/selected-box.js @@ -0,0 +1,58 @@ +export default { + column: '2', + owner: '', + demos: [ + { + demoId: 'basic-usage', + name: { + 'zh-CN': '基本用法', + 'en-US': 'basic usage' + }, + desc: { + 'zh-CN': + '

过滤类型 type 包括 单选、多选、枚举单选 (radio | checkbox | enum-radio)

', + 'en-US': '

button type

' + }, + codeFiles: ['basic-usage.vue'] + }, + { + demoId: 'column-num', + name: { + 'zh-CN': '面板每行标签数', + 'en-US': 'button round' + }, + desc: { + 'zh-CN': '

通过 column-num 属性设置面板每行标签数,默认值为 3。

', + 'en-US': '

button round

' + }, + codeFiles: ['column-num.vue'] + }, + { + demoId: 'filter-group', + name: { + 'zh-CN': '过滤组', + 'en-US': '过滤组' + }, + desc: { + 'zh-CN': + '

通过 filter-group 属性开启过滤组功能,filter-value 绑定过滤组的值。过滤组类型 type 包括 单选、多选 (radio | checkbox)

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['filter-group.vue'] + }, + { + demoId: 'enumeration', + name: { + 'zh-CN': '枚举单选', + 'en-US': 'events' + }, + desc: { + 'zh-CN': + '

设置过滤类型 type: "enum-radio" 时,当前数据为枚举单选,通过 showAll: true 显示 全部 选择项。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['enumeration.vue'] + } + ], + apis: [] +} diff --git a/examples/docs/resources/mobile-first/app/slider/webdoc/slider.cn.md b/examples/docs/resources/mobile-first/app/slider/webdoc/slider.cn.md new file mode 100644 index 000000000..6923694ae --- /dev/null +++ b/examples/docs/resources/mobile-first/app/slider/webdoc/slider.cn.md @@ -0,0 +1,9 @@ +--- +title: Slider 滑块 +--- + +# Slider 滑块 + +
+通过鼠标滑动滑块来确定位置和大小。多种形式,横向、纵向和范围滑块。 +
diff --git a/examples/docs/resources/mobile-first/app/slider/webdoc/slider.en.md b/examples/docs/resources/mobile-first/app/slider/webdoc/slider.en.md new file mode 100644 index 000000000..6923694ae --- /dev/null +++ b/examples/docs/resources/mobile-first/app/slider/webdoc/slider.en.md @@ -0,0 +1,9 @@ +--- +title: Slider 滑块 +--- + +# Slider 滑块 + +
+通过鼠标滑动滑块来确定位置和大小。多种形式,横向、纵向和范围滑块。 +
diff --git a/examples/docs/resources/mobile-first/app/slider/webdoc/slider.js b/examples/docs/resources/mobile-first/app/slider/webdoc/slider.js new file mode 100644 index 000000000..901d97d9d --- /dev/null +++ b/examples/docs/resources/mobile-first/app/slider/webdoc/slider.js @@ -0,0 +1,192 @@ +export default { + column: '2', + owner: '', + demos: [ + { + demoId: 'basic-usage', + name: { + 'zh-CN': '基本用法', + 'en-US': 'basic usage' + }, + desc: { + 'zh-CN': '

', + 'en-US': '

button type

' + }, + codeFiles: ['basic-usage.vue'] + }, + + { + demoId: 'max-min', + name: { + 'zh-CN': '最大最小值', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

通过设置`min` `max` 来设置滑块取值范围

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['max-min.vue'] + }, + { + demoId: 'format-tooltip', + name: { + 'zh-CN': '当前值', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

通过设置`format-tooltip` 来属性设置 value

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['format-tooltip.vue'] + }, + { + demoId: 'range-select', + name: { + 'zh-CN': '范围选择', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

通过`v-model` 为数组 设定初始范围选择

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['range-select.vue'] + }, + { + demoId: 'show-input', + name: { + 'zh-CN': '输入框模式', + 'en-US': 'events' + }, + desc: { + 'zh-CN': + '

通过配置`show-input`,开启滑块输入框模式。可以通过`unit`属性设置输入框后面显示的单位,默认为 `%`

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['show-input.vue'] + }, + { + demoId: 'show-graduate', + name: { + 'zh-CN': '显示刻度', + 'en-US': 'events' + }, + desc: { + 'zh-CN': + '

通过设置`show-steps` 属性来显示刻度,需结合 step 一起使用,显示的刻度个数为 `max / step`,最前与最后的刻度默认不显示

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['show-graduate.vue'] + }, + { + demoId: 'show-label', + name: { + 'zh-CN': '显示 Label', + 'en-US': 'events' + }, + desc: { + 'zh-CN': + '

通过设置`show-label` 属性来显示 Label,需结合`show-steps`一起使用可以通过`format-label` 函数自定义想要显示的 label

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['show-label.vue'] + }, + { + demoId: 'dynamic-disable', + name: { + 'zh-CN': '禁用', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

通过设置属性`disabled` ,设置滑动滑块禁止滑动

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['dynamic-disable.vue'] + }, + { + demoId: 'show-tip', + name: { + 'zh-CN': '提示', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

通过设定`:show-tip="false"`,关闭滑块提示。(默认开启)

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['show-tip.vue'] + }, + { + demoId: 'about-step', + name: { + 'zh-CN': '步长', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

通过设置`step`来配置滑块滑动的步长

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['about-step.vue'] + }, + { + demoId: 'slider-event-change', + name: { + 'zh-CN': 'change 事件', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['slider-event-change.vue'] + }, + { + demoId: 'slider-event-start', + name: { + 'zh-CN': 'start 滑块开始滑动事件', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['slider-event-start.vue'] + }, + { + demoId: 'slider-event-stop', + name: { + 'zh-CN': 'stop 滑块停止滑动事件', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['slider-event-stop.vue'] + }, + { + demoId: 'slider-slot', + name: { + 'zh-CN': '默认插槽', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

默认插槽`default` 在滑块的尾部

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['slider-slot.vue'] + }, + { + demoId: 'left-right-slot', + name: { + 'zh-CN': '左右插槽', + 'en-US': 'events' + }, + desc: { + 'zh-CN': + '

左插槽`left`,右插槽`right`,注意这两个插槽只在移动端展示,PC 端默认是隐藏的,如果想要看效果请将页面缩小至移动端大小。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['left-right-slot.vue'] + } + ], + apis: [] +} diff --git a/examples/docs/resources/mobile-first/app/standard-list-item/webdoc/standard-list-item.cn.md b/examples/docs/resources/mobile-first/app/standard-list-item/webdoc/standard-list-item.cn.md new file mode 100644 index 000000000..9079c050a --- /dev/null +++ b/examples/docs/resources/mobile-first/app/standard-list-item/webdoc/standard-list-item.cn.md @@ -0,0 +1,9 @@ +--- +title: StandardListItem 标准列表项 +--- + +# StandardListItem 标准列表项 + +
+ +
diff --git a/examples/docs/resources/mobile-first/app/standard-list-item/webdoc/standard-list-item.en.md b/examples/docs/resources/mobile-first/app/standard-list-item/webdoc/standard-list-item.en.md new file mode 100644 index 000000000..9079c050a --- /dev/null +++ b/examples/docs/resources/mobile-first/app/standard-list-item/webdoc/standard-list-item.en.md @@ -0,0 +1,9 @@ +--- +title: StandardListItem 标准列表项 +--- + +# StandardListItem 标准列表项 + +
+ +
diff --git a/examples/docs/resources/mobile-first/app/standard-list-item/webdoc/standard-list-item.js b/examples/docs/resources/mobile-first/app/standard-list-item/webdoc/standard-list-item.js new file mode 100644 index 000000000..5dd925a86 --- /dev/null +++ b/examples/docs/resources/mobile-first/app/standard-list-item/webdoc/standard-list-item.js @@ -0,0 +1,81 @@ +export default { + column: '2', + owner: '', + demos: [ + { + demoId: 'basic-usage', + name: { + 'zh-CN': '基本用法', + 'en-US': 'basic usage' + }, + desc: { + 'zh-CN': + '

通过设置`:show-image="true"`可以显示图片区域
`user-head` 属性可以配置头像的类型、大小、背景色等,具体可查看 UserHead 用户头像组件的属性配置
传入`icon` 属性可以将头像区域替换为 icon 图标

', + 'en-US': '

button type

' + }, + codeFiles: ['basic-usage.vue'] + }, + + { + demoId: 'type', + name: { + 'zh-CN': '设置类型', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

通过 `type` 属性可以设置标准列表项的模式,支持 card 和 list 两种模式。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['type.vue'] + }, + { + demoId: 'content-slot', + name: { + 'zh-CN': '内容区插槽', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

通过 `#default` 可以设置内容区插槽,`#tag` 可以设置标签插槽。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['content-slot.vue'] + }, + { + demoId: 'icon-click-event', + name: { + 'zh-CN': '操作列按钮点击事件', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

通过 `icon-click` 给按钮加点击事件。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['icon-click-event.vue'] + }, + { + demoId: 'icon-disabled', + name: { + 'zh-CN': '操作列按钮隐藏与禁用', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

操作列配置项 `options` 中添加属性 hidden 可以隐藏按钮,可以通过 disabled 属性禁用操作按钮。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['icon-disabled.vue'] + }, + { + demoId: 'image-operate-slot', + name: { + 'zh-CN': '头像和操作列插槽', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

通过 `#image` 可以设置头像插槽,通过 `#operate` 可以设置操作列插槽。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['image-operate-slot.vue'] + } + ], + apis: [] +} diff --git a/examples/docs/resources/mobile-first/app/steps/webdoc/steps.cn.md b/examples/docs/resources/mobile-first/app/steps/webdoc/steps.cn.md new file mode 100644 index 000000000..25bedc4a6 --- /dev/null +++ b/examples/docs/resources/mobile-first/app/steps/webdoc/steps.cn.md @@ -0,0 +1,17 @@ +--- +title: Steps 步骤条 +--- + +# Steps 步骤条 + +
+ 属性说明 +vertical:是否开启垂直单链型,默认值为 false; +active:当前活动的节点; +nameField:节点名称的映射字段,默认值为 name; +statusField:节点状态的映射字段,默认值为 status,状态的可选值有:doing | done | error | disabled | 空字符串; +descriptionField:节点描述的映射字段,默认值为 description,仅单链型有效; +visibleNum:节点描述的映射字段,默认值为 5; +data:节点列表; +duration:节点滚动的持续时间(单位 ms),默认值为 300,仅高级向导模式有效。 +
diff --git a/examples/docs/resources/mobile-first/app/steps/webdoc/steps.en.md b/examples/docs/resources/mobile-first/app/steps/webdoc/steps.en.md new file mode 100644 index 000000000..25bedc4a6 --- /dev/null +++ b/examples/docs/resources/mobile-first/app/steps/webdoc/steps.en.md @@ -0,0 +1,17 @@ +--- +title: Steps 步骤条 +--- + +# Steps 步骤条 + +
+ 属性说明 +vertical:是否开启垂直单链型,默认值为 false; +active:当前活动的节点; +nameField:节点名称的映射字段,默认值为 name; +statusField:节点状态的映射字段,默认值为 status,状态的可选值有:doing | done | error | disabled | 空字符串; +descriptionField:节点描述的映射字段,默认值为 description,仅单链型有效; +visibleNum:节点描述的映射字段,默认值为 5; +data:节点列表; +duration:节点滚动的持续时间(单位 ms),默认值为 300,仅高级向导模式有效。 +
diff --git a/examples/docs/resources/mobile-first/app/steps/webdoc/steps.js b/examples/docs/resources/mobile-first/app/steps/webdoc/steps.js new file mode 100644 index 000000000..5a2471bb0 --- /dev/null +++ b/examples/docs/resources/mobile-first/app/steps/webdoc/steps.js @@ -0,0 +1,132 @@ +export default { + column: '2', + owner: '', + demos: [ + { + demoId: 'data-resource', + name: { + 'zh-CN': '横向单链型', + 'en-US': 'basic usage' + }, + desc: { + 'zh-CN': '

默认显示横向单链型

', + 'en-US': '

button type

' + }, + codeFiles: ['data-resource.vue'] + }, + { + demoId: 'vertical', + name: { + 'zh-CN': '垂直单链型', + 'en-US': 'button round' + }, + desc: { + 'zh-CN': '

添加 `vertical` 属性开启垂直单链型,通过 `visible-num` 属性设置显示的节点数,默认为 5。

', + 'en-US': '

button round

' + }, + codeFiles: ['vertical.vue'] + }, + { + demoId: 'advanced-steps', + name: { + 'zh-CN': '高级向导1', + 'en-US': '' + }, + desc: { + 'zh-CN': '

添加属性 `advanced` 启用高级向导功能。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['advanced-steps.vue'] + }, + { + demoId: 'advanced-flex', + name: { + 'zh-CN': '高级向导2', + 'en-US': '' + }, + desc: { + 'zh-CN': '

添加属性 `flex` 开启总宽度响应,节点等宽,撑满父容器,节点名称超出省略,默认值为 `false`。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['advanced-flex.vue'] + }, + { + demoId: 'advanced-no-arrow', + name: { + 'zh-CN': '高级向导3', + 'en-US': '' + }, + desc: { + 'zh-CN': + '

添加属性 `no-arrow` 隐藏左右箭头,在 PC 端按住 `shift+鼠标滚轮` 进行节点左右滚动,移动端触屏左右滑动即可。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['advanced-no-arrow.vue'] + }, + + { + demoId: 'slot-item', + name: { + 'zh-CN': '插槽1', + 'en-US': '' + }, + desc: { + 'zh-CN': '

`item` 节点插槽。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['slot-item.vue'] + }, + { + demoId: 'slot', + name: { + 'zh-CN': '插槽2', + 'en-US': '' + }, + desc: { + 'zh-CN': '

`prefix` 前置插槽,仅开启 `advanced` 高级向导模式有效。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['slot.vue'] + }, + { + demoId: 'slot-bottom', + name: { + 'zh-CN': '插槽3', + 'en-US': '' + }, + desc: { + 'zh-CN': '

`block-bottom` 滚动块底部插槽,仅开启 `advanced` 高级向导模式有效。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['slot-bottom.vue'] + }, + + { + demoId: 'duration', + name: { + 'zh-CN': '节点滚动时间', + 'en-US': '' + }, + desc: { + 'zh-CN': + '

`duration` 设置节点左右滚动的持续时间,默认值为 300(单位 ms),设置 0 则无滚动动画,仅开启 `advanced` 高级向导模式有效。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['duration.vue'] + }, + + { + demoId: 'complicated', + name: { + 'zh-CN': '综合示例', + 'en-US': '' + }, + desc: { + 'zh-CN': '

综合示例

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['complicated.vue'] + } + ], + apis: [] +} diff --git a/examples/docs/resources/mobile-first/app/switch/webdoc/switch.cn.md b/examples/docs/resources/mobile-first/app/switch/webdoc/switch.cn.md new file mode 100644 index 000000000..c2715e255 --- /dev/null +++ b/examples/docs/resources/mobile-first/app/switch/webdoc/switch.cn.md @@ -0,0 +1,9 @@ +--- +title: Switch 开关 +--- + +# Switch 开关 + +
+Switch 在两种状态间切换选择。 +
diff --git a/examples/docs/resources/mobile-first/app/switch/webdoc/switch.en.md b/examples/docs/resources/mobile-first/app/switch/webdoc/switch.en.md new file mode 100644 index 000000000..c2715e255 --- /dev/null +++ b/examples/docs/resources/mobile-first/app/switch/webdoc/switch.en.md @@ -0,0 +1,9 @@ +--- +title: Switch 开关 +--- + +# Switch 开关 + +
+Switch 在两种状态间切换选择。 +
diff --git a/examples/docs/resources/mobile-first/app/switch/webdoc/switch.js b/examples/docs/resources/mobile-first/app/switch/webdoc/switch.js new file mode 100644 index 000000000..3b27b12ed --- /dev/null +++ b/examples/docs/resources/mobile-first/app/switch/webdoc/switch.js @@ -0,0 +1,106 @@ +export default { + column: '2', + owner: '', + demos: [ + { + demoId: 'basic-usage', + name: { + 'zh-CN': '基本用法', + 'en-US': 'basic usage' + }, + desc: { + 'zh-CN': '

', + 'en-US': '

button type

' + }, + codeFiles: ['basic-usage.vue'] + }, + + { + demoId: 'mini-mode', + name: { + 'zh-CN': '迷你尺寸', + 'en-US': 'events' + }, + desc: { + 'zh-CN': + '

设置是否为 mini 模式,默认为 false。当设置 `mini` 为 `true` 且处于移动端时,开关会变为 mini 尺寸。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['mini-mode.vue'] + }, + { + demoId: 'icon-mode', + name: { + 'zh-CN': '图标开关', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

设置是否显示为图标模式。当设置 `types` 为 `icon` 时,显示为带图标的开关。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['icon-mode.vue'] + }, + { + demoId: 'word-mode', + name: { + 'zh-CN': '文本模式', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

设置是否显示为文字模式。当设置 `types` 为 `word` 时,显示为带文字的开关。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['word-mode.vue'] + }, + { + demoId: 'loading-mode', + name: { + 'zh-CN': '加载态开关', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

设置是否显示为加载模式。当设置 `types` 为 `loading` 时,显示为加载态的开关。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['loading-mode.vue'] + }, + { + demoId: 'dynamic-disable', + name: { + 'zh-CN': '禁用状态', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

`disable` 属性表示的是当前状态是无法被使用的,默认值为 false(true/false)。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['dynamic-disable.vue'] + }, + { + demoId: 'custom-open-close', + name: { + 'zh-CN': '自定义开关显示', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

在文字模式中,通过具名插槽 open 和 close 自定义 Switch 显示。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['custom-open-close.vue'] + }, + { + demoId: 'custom-true-false-value', + name: { + 'zh-CN': '自定义开关取值', + 'en-US': 'events' + }, + desc: { + 'zh-CN': + '

`通过 true-value 和 false-value 属性设置 Switch 在开和关状态下的不同取值。
false-value`:开关处于关闭状态时的取值; `true-value`:开关处于开启状态时的取值;
当 v-model 中定义的属性名为`value`时,可以通过`false-value`和`true-value`自定义关闭和开启状态下的取值

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['custom-true-false-value.vue'] + } + ], + apis: [] +} diff --git a/examples/docs/resources/mobile-first/app/tabs/webdoc/tabs.cn.md b/examples/docs/resources/mobile-first/app/tabs/webdoc/tabs.cn.md new file mode 100644 index 000000000..d77db3e82 --- /dev/null +++ b/examples/docs/resources/mobile-first/app/tabs/webdoc/tabs.cn.md @@ -0,0 +1,9 @@ +--- +title: Tabs 标签页 +--- + +# Tabs 标签页 + +
+分隔内容上有关联但属于不同类别的数据集合。 +
diff --git a/examples/docs/resources/mobile-first/app/tabs/webdoc/tabs.en.md b/examples/docs/resources/mobile-first/app/tabs/webdoc/tabs.en.md new file mode 100644 index 000000000..d77db3e82 --- /dev/null +++ b/examples/docs/resources/mobile-first/app/tabs/webdoc/tabs.en.md @@ -0,0 +1,9 @@ +--- +title: Tabs 标签页 +--- + +# Tabs 标签页 + +
+分隔内容上有关联但属于不同类别的数据集合。 +
diff --git a/examples/docs/resources/mobile-first/app/tabs/webdoc/tabs.js b/examples/docs/resources/mobile-first/app/tabs/webdoc/tabs.js new file mode 100644 index 000000000..9ebcea5fc --- /dev/null +++ b/examples/docs/resources/mobile-first/app/tabs/webdoc/tabs.js @@ -0,0 +1,204 @@ +export default { + column: '2', + owner: '', + demos: [ + { + demoId: 'mobile-first', + name: { + 'zh-CN': '基本用法', + 'en-US': 'events' + }, + desc: { + 'zh-CN': + '

通过 `v-model` 设置初始激活的标签页,绑定的值对应 `tiny-tab-item` 元素中 `name` 属性的值。一个 `tiny-tab-item` 为一个标签页,通过 `title` 属性设置标签页标题。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['mobile-first.vue'] + }, + { + demoId: 'align-center', + name: { + 'zh-CN': '居中对齐', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

在小屏下,页签项较少并且可以完全显示时,页签项默认居中对齐。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['align-center.vue'] + }, + { + demoId: 'tab-style-card', + name: { + 'zh-CN': 'card 类型', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

通过 `tab-style` 设置标签页风格类型,默认为 `card` 通过 `active-name` 设置初始激活的标签页 。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['tab-style-card.vue'] + }, + { + demoId: 'tab-style-bordercard', + name: { + 'zh-CN': 'bordercard 类型', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

通过 `tab-style` 设置标签页风格类型为 `bordercard` 。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['tab-style-bordercard.vue'] + }, + { + demoId: 'with-add', + name: { + 'zh-CN': '标签页可增加', + 'en-US': 'events' + }, + desc: { + 'zh-CN': + '

设置 `with-add` 属性启用标签可增加功能。同时通过 `add` 事件自定义实现增加标签页的逻辑。配置 `show-more-tabs` 属性后当标签页超过一定宽度时将显示 `更多` 按钮。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['with-add.vue'] + }, + { + demoId: 'tabs-events-close', + name: { + 'zh-CN': '标签页可关闭', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

通过 `withClose` 属性设置是否可关闭标签页。同时可通过 `close` 事件自定义实现关闭标签页的逻辑。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['tabs-events-close.vue'] + }, + { + demoId: 'before-leave', + name: { + 'zh-CN': '离开前事件', + 'en-US': 'events' + }, + desc: { + 'zh-CN': + '

`before-leave` 切换标签之前的钩子函数,若返回 false 或者返回 Promise 且被 reject,则阻止切换,返回 true 则可以切换。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['before-leave.vue'] + }, + { + demoId: 'stretch-wh', + name: { + 'zh-CN': '可自动撑开', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

`stretch` 属性设置标签的宽度是否自撑开,默认为 false 。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['stretch-wh.vue'] + }, + { + demoId: 'tabs-events-add', + name: { + 'zh-CN': 'add 事件', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

点击新增按钮增加标签页时触发 `add` 事件

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['tabs-events-add.vue'] + }, + { + demoId: 'tabs-events-click', + name: { + 'zh-CN': 'click 事件', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

单击标签页时触发 `click` 事件

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['tabs-events-click.vue'] + }, + { + demoId: 'tabs-events-close', + name: { + 'zh-CN': 'close 事件', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

关闭标签页时触发 `close` 事件

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['tabs-events-close.vue'] + }, + { + demoId: 'custom-tab-title', + name: { + 'zh-CN': '自定义标签页标题', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

通过 `tiny-tab-item` 的 `title` 插槽自定义标签页标题,比如在标题前增加图标。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['custom-tab-title.vue'] + }, + { + demoId: 'tabdata-title', + name: { + 'zh-CN': '循环创建标签页', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

通过 `v-for` 根据数据循环创建多个 `tiny-tab-item` 。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['tabdata-title.vue'] + }, + { + demoId: 'show-echarts', + name: { + 'zh-CN': '标签页切换显示不同图表', + 'en-US': 'events' + }, + desc: { + 'zh-CN': + '

Tabs 组件里使用 Chart 组件要调用 Chart 实例方法 `resize()`,例如示例中的 `this.$refs.firstChart.resize()`,这样才能让 Chart 自适应父元素响应变化。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['show-echarts.vue'] + }, + { + demoId: 'show-different-grid-data', + name: { + 'zh-CN': '标签页切换不同 Grid', + 'en-US': 'events' + }, + desc: { + 'zh-CN': + '

Tabs 组件里使用 Grid 组件需要 Grid 设置属性 `:auto-resize="true"`,这样才能让 Grid 自适应父元素响应变化。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['show-different-grid-data.vue'] + }, + { + demoId: 'tabs-tabs', + name: { + 'zh-CN': '标签页嵌套', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

可将 子 tabs 作为 父 tabs 的 tab-item 嵌套显示标签页

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['tabs-tabs.vue'] + } + ], + apis: [] +} diff --git a/examples/docs/resources/mobile-first/app/tag-group/webdoc/tag-group.cn.md b/examples/docs/resources/mobile-first/app/tag-group/webdoc/tag-group.cn.md new file mode 100644 index 000000000..e982071a4 --- /dev/null +++ b/examples/docs/resources/mobile-first/app/tag-group/webdoc/tag-group.cn.md @@ -0,0 +1,9 @@ +--- +title: TagGroup 标签组 +--- + +# TagGroup 标签组 + +
+TagGroup 标签组,用于标记事物的属性和维度 +
diff --git a/examples/docs/resources/mobile-first/app/tag-group/webdoc/tag-group.en.md b/examples/docs/resources/mobile-first/app/tag-group/webdoc/tag-group.en.md new file mode 100644 index 000000000..e982071a4 --- /dev/null +++ b/examples/docs/resources/mobile-first/app/tag-group/webdoc/tag-group.en.md @@ -0,0 +1,9 @@ +--- +title: TagGroup 标签组 +--- + +# TagGroup 标签组 + +
+TagGroup 标签组,用于标记事物的属性和维度 +
diff --git a/examples/docs/resources/mobile-first/app/tag-group/webdoc/tag-group.js b/examples/docs/resources/mobile-first/app/tag-group/webdoc/tag-group.js new file mode 100644 index 000000000..880b1cd5a --- /dev/null +++ b/examples/docs/resources/mobile-first/app/tag-group/webdoc/tag-group.js @@ -0,0 +1,70 @@ +export default { + column: '2', + owner: '', + demos: [ + { + demoId: 'basic-usage', + name: { + 'zh-CN': '基本用法', + 'en-US': 'basic usage' + }, + desc: { + 'zh-CN': '

', + 'en-US': '

button type

' + }, + codeFiles: ['basic-usage.vue'] + }, + + { + demoId: 'tag-group-type', + name: { + 'zh-CN': '类型', + 'en-US': 'events' + }, + desc: { + 'zh-CN': + '

`type`可以为标签设置相应的类型,可选值(success / warning / alerting / error / info / default),默认值为 info。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['tag-group-type.vue'] + }, + { + demoId: 'tag-group-size', + name: { + 'zh-CN': '尺寸', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

可通过 `size` 设置 TagGroup 标签组标签大小,可选值(medium / small / mini),默认值为 medium。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['tag-group-size.vue'] + }, + { + demoId: 'tag-group-effect', + name: { + 'zh-CN': '主题', + 'en-US': 'events' + }, + desc: { + 'zh-CN': + '

可通过 `effect` 设置 TagGroup 标签组 标签主题,可选值(dark / light / plain),默认值为 light。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['tag-group-effect.vue'] + }, + { + demoId: 'tag-group-event', + name: { + 'zh-CN': 'Click 事件', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

TagGroup 标签组提供了`item-click`事件,`item-click`事件默认提供的参数有 `item,index,event`

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['tag-group-event.vue'] + } + ], + apis: [] +} diff --git a/examples/docs/resources/mobile-first/app/tag/webdoc/tag.cn.md b/examples/docs/resources/mobile-first/app/tag/webdoc/tag.cn.md new file mode 100644 index 000000000..5e75e1dee --- /dev/null +++ b/examples/docs/resources/mobile-first/app/tag/webdoc/tag.cn.md @@ -0,0 +1,9 @@ +--- +title: Tag 标签 +--- + +# Tag 标签 + +
+Tag 标签组件,用于标记事物的属性和维度 +
diff --git a/examples/docs/resources/mobile-first/app/tag/webdoc/tag.en.md b/examples/docs/resources/mobile-first/app/tag/webdoc/tag.en.md new file mode 100644 index 000000000..5e75e1dee --- /dev/null +++ b/examples/docs/resources/mobile-first/app/tag/webdoc/tag.en.md @@ -0,0 +1,9 @@ +--- +title: Tag 标签 +--- + +# Tag 标签 + +
+Tag 标签组件,用于标记事物的属性和维度 +
diff --git a/examples/docs/resources/mobile-first/app/tag/webdoc/tag.js b/examples/docs/resources/mobile-first/app/tag/webdoc/tag.js new file mode 100644 index 000000000..7aba014cb --- /dev/null +++ b/examples/docs/resources/mobile-first/app/tag/webdoc/tag.js @@ -0,0 +1,153 @@ +export default { + column: '2', + owner: '', + demos: [ + { + demoId: 'basic-usage', + name: { + 'zh-CN': '基本用法', + 'en-US': 'basic usage' + }, + desc: { + 'zh-CN': '

', + 'en-US': '

button type

' + }, + codeFiles: ['basic-usage.vue'] + }, + + { + demoId: 'color3', + name: { + 'zh-CN': '颜色', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

可通过 `color` 设置标签背景色。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['color3.vue'] + }, + { + demoId: 'hit', + name: { + 'zh-CN': '边框', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

可通过 `hit` 设置标签边框,可选值(true/false)true 为有边框,false 无边框,默认值为 false。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['hit.vue'] + }, + { + demoId: 'tag-size', + name: { + 'zh-CN': '尺寸', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

可通过 `size` 设置 Tag 标签大小,可选值(medium / small / mini),默认值为 medium。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['tag-size.vue'] + }, + { + demoId: 'effect', + name: { + 'zh-CN': '主题', + 'en-US': 'events' + }, + desc: { + 'zh-CN': + '

可通过 `effect` 设置 Tag 标签主题,可选值(dark / light / plain),默认值为 light。
`type`可以为标签设置相应的类型,可选值(success / warning / alerting / error / default / info),默认值为 info。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['effect.vue'] + }, + { + demoId: 'create', + name: { + 'zh-CN': '动态编辑标签', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

通过点击`+ New Tag`在文本框中输入你要定义的标签名就能在标签列表中最后一个创建标签 。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['create.vue'] + }, + { + demoId: 'closeable', + name: { + 'zh-CN': '可移除标签', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

`closable` 属性可以为标签设置成可去除标签。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['closeable.vue'] + }, + { + demoId: 'tag-event-click', + name: { + 'zh-CN': 'Click 事件', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

设置过滤类型

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['tag-event-click.vue'] + }, + { + demoId: 'tag-event-close', + name: { + 'zh-CN': 'Close 事件', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

设置过滤类型

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['tag-event-close.vue'] + }, + { + demoId: 'tag-selectable', + name: { + 'zh-CN': '标签可选中', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

标签加上 selectable 属性可开启选中功能

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['tag-selectable.vue'] + }, + { + demoId: 'colorful-tag', + name: { + 'zh-CN': '多彩标签', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

可通过 `theme` 设置其他颜色的标签,目前新增的彩色标签有 pink、purple、cyan。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['colorful-tag.vue'] + }, + { + demoId: 'content', + name: { + 'zh-CN': '属性传值显示内容', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

通过绑定`value`属性设置自定义内容

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['content.vue'] + } + ], + apis: [] +} diff --git a/examples/docs/resources/mobile-first/app/time-line/webdoc/time-line.cn.md b/examples/docs/resources/mobile-first/app/time-line/webdoc/time-line.cn.md new file mode 100644 index 000000000..3cee5f448 --- /dev/null +++ b/examples/docs/resources/mobile-first/app/time-line/webdoc/time-line.cn.md @@ -0,0 +1,9 @@ +--- +title: TimeLine 时间线 +--- + +# TimeLine 时间线 + +
+ +
diff --git a/examples/docs/resources/mobile-first/app/time-line/webdoc/time-line.en.md b/examples/docs/resources/mobile-first/app/time-line/webdoc/time-line.en.md new file mode 100644 index 000000000..3cee5f448 --- /dev/null +++ b/examples/docs/resources/mobile-first/app/time-line/webdoc/time-line.en.md @@ -0,0 +1,9 @@ +--- +title: TimeLine 时间线 +--- + +# TimeLine 时间线 + +
+ +
diff --git a/examples/docs/resources/mobile-first/app/time-line/webdoc/time-line.js b/examples/docs/resources/mobile-first/app/time-line/webdoc/time-line.js new file mode 100644 index 000000000..5fbd52068 --- /dev/null +++ b/examples/docs/resources/mobile-first/app/time-line/webdoc/time-line.js @@ -0,0 +1,93 @@ +export default { + column: '2', + owner: '', + demos: [ + { + demoId: 'basic-usage', + name: { + 'zh-CN': '基本用法', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

通过 `data` 属性设置时间线步骤条数据

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['basic-usage.vue'] + }, + { + demoId: 'sub-field', + name: { + 'zh-CN': '两侧分布', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

通过 `sub-field` 属性设置时间线两侧展示。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['sub-field.vue'] + }, + { + demoId: 'single-status', + name: { + 'zh-CN': '单状态时间轴', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

通过在`data`里面的属性`autoColor`设置自定义图标

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['single-status.vue'] + }, + { + demoId: 'many-status', + name: { + 'zh-CN': '多状态时间轴', + 'en-US': 'events' + }, + desc: { + 'zh-CN': + '

通过在`data`里面的属性`autoColor`设置自定义状态。对应场景: `success` :成功 `error` :失败 `info` :等待

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['many-status.vue'] + }, + { + demoId: 'node-toset', + name: { + 'zh-CN': '节点配置图标', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

通过在`data`里面的属性`autoColor`设置自定义图标

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['node-toset.vue'] + }, + { + demoId: 'fold-time', + name: { + 'zh-CN': '折叠时间轴', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

当节点超过七项时,自动折叠节点,仅展示最近三项,点击后展开

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['fold-time.vue'] + }, + { + demoId: 'auto-slot', + name: { + 'zh-CN': '自定义插槽', + 'en-US': 'events' + }, + desc: { + 'zh-CN': + '

通过 `slot` 为 `left` 可以自定义步骤条右侧内容。`data`中自定义属性名应避免`name`(正标题)、`tips`(副标题)、`time`(时间)属性

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['auto-slot.vue'] + } + ], + apis: [] +} diff --git a/examples/docs/resources/mobile-first/app/time-picker-mobile/webdoc/time-picker-mobile.cn.md b/examples/docs/resources/mobile-first/app/time-picker-mobile/webdoc/time-picker-mobile.cn.md new file mode 100644 index 000000000..c2ba1f6b2 --- /dev/null +++ b/examples/docs/resources/mobile-first/app/time-picker-mobile/webdoc/time-picker-mobile.cn.md @@ -0,0 +1,9 @@ +--- +title: TimePickerMobile 时间选择器组件 +--- + +# TimePickerMobile 时间选择器组件 + +
+ +
diff --git a/examples/docs/resources/mobile-first/app/time-picker-mobile/webdoc/time-picker-mobile.en.md b/examples/docs/resources/mobile-first/app/time-picker-mobile/webdoc/time-picker-mobile.en.md new file mode 100644 index 000000000..c2ba1f6b2 --- /dev/null +++ b/examples/docs/resources/mobile-first/app/time-picker-mobile/webdoc/time-picker-mobile.en.md @@ -0,0 +1,9 @@ +--- +title: TimePickerMobile 时间选择器组件 +--- + +# TimePickerMobile 时间选择器组件 + +
+ +
diff --git a/examples/docs/resources/mobile-first/app/time-picker-mobile/webdoc/time-picker-mobile.js b/examples/docs/resources/mobile-first/app/time-picker-mobile/webdoc/time-picker-mobile.js new file mode 100644 index 000000000..066f9df8e --- /dev/null +++ b/examples/docs/resources/mobile-first/app/time-picker-mobile/webdoc/time-picker-mobile.js @@ -0,0 +1,19 @@ +export default { + column: '2', + owner: '', + demos: [ + { + demoId: 'basic-usage', + name: { + 'zh-CN': '基本用法', + 'en-US': 'basic usage' + }, + desc: { + 'zh-CN': '

', + 'en-US': '

button type

' + }, + codeFiles: ['basic-usage.vue'] + } + ], + apis: [] +} diff --git a/examples/docs/resources/mobile-first/app/tooltip/webdoc/tooltip.cn.md b/examples/docs/resources/mobile-first/app/tooltip/webdoc/tooltip.cn.md new file mode 100644 index 000000000..5bea2ba6d --- /dev/null +++ b/examples/docs/resources/mobile-first/app/tooltip/webdoc/tooltip.cn.md @@ -0,0 +1,9 @@ +--- +title: ToolTip 文字提示 +--- + +# ToolTip 文字提示 + +
+动态显示提示信息,一般通过鼠标事件进行响应; +
diff --git a/examples/docs/resources/mobile-first/app/tooltip/webdoc/tooltip.en.md b/examples/docs/resources/mobile-first/app/tooltip/webdoc/tooltip.en.md new file mode 100644 index 000000000..5bea2ba6d --- /dev/null +++ b/examples/docs/resources/mobile-first/app/tooltip/webdoc/tooltip.en.md @@ -0,0 +1,9 @@ +--- +title: ToolTip 文字提示 +--- + +# ToolTip 文字提示 + +
+动态显示提示信息,一般通过鼠标事件进行响应; +
diff --git a/examples/docs/resources/mobile-first/app/tooltip/webdoc/tooltip.js b/examples/docs/resources/mobile-first/app/tooltip/webdoc/tooltip.js new file mode 100644 index 000000000..a16d54236 --- /dev/null +++ b/examples/docs/resources/mobile-first/app/tooltip/webdoc/tooltip.js @@ -0,0 +1,205 @@ +export default { + column: '2', + owner: '', + demos: [ + { + demoId: 'basic-usage', + name: { + 'zh-CN': '基本用法', + 'en-US': 'basic usage' + }, + desc: { + 'zh-CN': '

', + 'en-US': '

button type

' + }, + codeFiles: ['basic-usage.vue'] + }, + + { + demoId: 'dynamic-disable', + name: { + 'zh-CN': '禁用', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

通过 `disabled` 设置禁用

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['dynamic-disable.vue'] + }, + { + demoId: 'manual-control-tip', + name: { + 'zh-CN': '手动控制', + 'en-US': 'events' + }, + desc: { + 'zh-CN': + '

手动控制模式,通过设置 `manual` 属性为 true 后,mouseenter 和 mouseleave 事件将不会生效,然后可以通过设置 `v-model` 动态控制显示和隐藏

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['manual-control-tip.vue'] + }, + { + demoId: 'tooltip-theme', + name: { + 'zh-CN': '主题', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

通过 `effect` 属性设置主题,可选值 dark/light 两种主题。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['tooltip-theme.vue'] + }, + { + demoId: 'open-delay', + name: { + 'zh-CN': '自动隐藏和延迟时间', + 'en-US': 'events' + }, + desc: { + 'zh-CN': + '

通过 `hide-after` 属性设置 Tooltip 组件出现后自动隐藏延时,单位毫秒,为 0 则不会自动隐藏。通过 `open-delay` 属性设置 Tooltip 组件延迟出现的时间,单位毫秒。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['open-delay.vue'] + }, + { + demoId: 'tooltip-offset', + name: { + 'zh-CN': '偏移量', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

通过 `offset` 属性设置 Tooltip 组件出现位置的偏移量。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['tooltip-offset.vue'] + }, + { + demoId: 'enterable', + name: { + 'zh-CN': '鼠标是否可进入', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

通过 `enterable` 属性设置鼠标是否可进入到 tooltip 中。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['enterable.vue'] + }, + { + demoId: 'visible-arrow', + name: { + 'zh-CN': '是否显示箭头', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

通过 `visible-arrow` 属性设置是否显示 Tooltip 箭头。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['visible-arrow.vue'] + }, + { + demoId: 'popper-class', + name: { + 'zh-CN': '添加样式类名', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

通过 `popper-class` 属性为 Tooltip 的 popper 添加类名。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['popper-class.vue'] + }, + { + demoId: 'tooltip-content', + name: { + 'zh-CN': '插槽', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

设置过通过 `content` 插槽添加自定义内容。滤类型

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['tooltip-content.vue'] + }, + { + demoId: 'popper-options', + name: { + 'zh-CN': 'popper 配置', + 'en-US': 'events' + }, + desc: { + 'zh-CN': + '

通过 `popper-options` 属性为 Tooltip 的 popper 配置参数,具体可参考[popper.js](https://popper.js.org/)

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['popper-options.vue'] + }, + { + demoId: 'popper-options-bubbling', + name: { + 'zh-CN': 'popper 配置通过 bubbling 控制 tip 位置', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

popperOptions.bubbling 配置为 true 时,所有的父元素包含滚动条,滚动时都会动态改变 tip 的位置

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['popper-options-bubbling.vue'] + }, + { + demoId: 'tabindex', + name: { + 'zh-CN': 'tabindex 配置', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

通过配置 `tabindex`, 配置的属性会自动添加到该组件的触发原上。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['tabindex.vue'] + }, + { + demoId: 'content-pre', + name: { + 'zh-CN': '文本预格式化', + 'en-US': 'events' + }, + desc: { + 'zh-CN': + '

配置 `pre` 为 `true`,就会预格式化 `content` 文本。
被包围在 `

` 标签元素中的文本会保留空格和换行符,文本也会呈现为等宽字体。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['content-pre.vue'] + }, + { + demoId: 'content-render', + name: { + 'zh-CN': '自定义渲染', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

使用属性 `renderContent` 配置自定义渲染方法

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['content-render.vue'] + }, + { + demoId: 'z-index', + name: { + 'zh-CN': '弹出层 zIndex', + 'en-US': 'events' + }, + desc: { + 'zh-CN': + '

设置`z-index`属性为`relative`时,弹出层样式属性 zIndex 值参考 Reference 及其父级 Dom。
设置`z-index`属性为默认值`next`时,弹出层样式属性 zIndex 值由组件库内部维护。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['z-index.vue'] + } + ], + apis: [] +} diff --git a/examples/docs/resources/mobile-first/app/user-head/webdoc/user-head.cn.md b/examples/docs/resources/mobile-first/app/user-head/webdoc/user-head.cn.md new file mode 100644 index 000000000..d1f9b62b5 --- /dev/null +++ b/examples/docs/resources/mobile-first/app/user-head/webdoc/user-head.cn.md @@ -0,0 +1,9 @@ +--- +title: UserHead 用户头像 +--- + +# UserHead 用户头像 + +
+UserHead 用户头像组件,用来代表用户或事物,支持图片、图标或字符展示。 +
diff --git a/examples/docs/resources/mobile-first/app/user-head/webdoc/user-head.en.md b/examples/docs/resources/mobile-first/app/user-head/webdoc/user-head.en.md new file mode 100644 index 000000000..d1f9b62b5 --- /dev/null +++ b/examples/docs/resources/mobile-first/app/user-head/webdoc/user-head.en.md @@ -0,0 +1,9 @@ +--- +title: UserHead 用户头像 +--- + +# UserHead 用户头像 + +
+UserHead 用户头像组件,用来代表用户或事物,支持图片、图标或字符展示。 +
diff --git a/examples/docs/resources/mobile-first/app/user-head/webdoc/user-head.js b/examples/docs/resources/mobile-first/app/user-head/webdoc/user-head.js new file mode 100644 index 000000000..9883ad8c5 --- /dev/null +++ b/examples/docs/resources/mobile-first/app/user-head/webdoc/user-head.js @@ -0,0 +1,57 @@ +export default { + column: '2', + owner: '', + demos: [ + { + demoId: 'basic-usage', + name: { + 'zh-CN': '基本用法', + 'en-US': 'basic usage' + }, + desc: { + 'zh-CN': '

', + 'en-US': '

button type

' + }, + codeFiles: ['basic-usage.vue'] + }, + + { + demoId: 'user-head-style', + name: { + 'zh-CN': '圆形头像', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

可通过 `round` 设置圆形头像。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['user-head-style.vue'] + }, + { + demoId: 'user-head-size', + name: { + 'zh-CN': '头像尺寸', + 'en-US': 'events' + }, + desc: { + 'zh-CN': '

可通过 `size` 设置圆形头像尺寸大小。

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['user-head-size.vue'] + }, + { + demoId: 'user-head-group', + name: { + 'zh-CN': '群组头像', + 'en-US': 'events' + }, + desc: { + 'zh-CN': + '

通过`group-size`属性设置群组头像整体尺寸大小,通过`list`传入对应数据
type:表示粗腰传入的类型
modelValue:文字头像传入字符串,图标头像不传,图片头像传入图片链接
round:是否展示圆形
群组头像最多只展示 4 个头像

', + 'en-US': '

bbutton click

' + }, + codeFiles: ['user-head-group.vue'] + } + ], + apis: [] +} diff --git a/examples/docs/resources/pc/api/zh-CN/transfer.json b/examples/docs/resources/pc/api/zh-CN/transfer.json index 6be53c3ff..83f1d7053 100644 --- a/examples/docs/resources/pc/api/zh-CN/transfer.json +++ b/examples/docs/resources/pc/api/zh-CN/transfer.json @@ -178,7 +178,7 @@ "defaultValue": "" }, { - "name": "button", + "name": "button-panel", "sample": "panel-slot", "type": "", "desc": "自定义穿梭按钮", @@ -192,15 +192,15 @@ "defaultValue": "" }, { - "name": "leftPanel", - "sample": "", + "name": "left-panel", + "sample": "panel-slot", "type": "", "desc": "左侧自定义内容", "defaultValue": "" }, { - "name": "rightPanel", - "sample": "", + "name": "right-panel", + "sample": "panel-slot", "type": "", "desc": "右侧自定义内容", "defaultValue": "" diff --git a/examples/docs/resources/pc/api/zh-CN/tree-menu.json b/examples/docs/resources/pc/api/zh-CN/tree-menu.json index 06dd6cff2..95eaf9424 100644 --- a/examples/docs/resources/pc/api/zh-CN/tree-menu.json +++ b/examples/docs/resources/pc/api/zh-CN/tree-menu.json @@ -181,7 +181,7 @@ "events": [ { "name": "node-click", - "sample": "event-current-change", + "sample": "event-node-click", "type": "Function(arg1,arg2)", "desc": "节点被点击时的回调;//参数: arg1:Object \n{ children: 点击节点的子节点, id: 点击节点的id, label: 点击节点的title }\n// arg2:Object // 当前点击节点的数据信息对象", "defaultValue": "" diff --git a/examples/docs/resources/pc/api/zh-CN/tree.json b/examples/docs/resources/pc/api/zh-CN/tree.json index 621ee0e07..4408dc2a8 100644 --- a/examples/docs/resources/pc/api/zh-CN/tree.json +++ b/examples/docs/resources/pc/api/zh-CN/tree.json @@ -4,7 +4,7 @@ "name": "data", "sample": "data-source", "type": "Array", - "desc": "设置数据源。可配置静态数据源和动态数据源。;展示数据", + "desc": "设置数据源。可配置静态数据源和动态数据源。", "defaultValue": "" }, { @@ -53,7 +53,7 @@ "name": "node-key", "sample": "node-key", "type": "String", - "desc": "节点唯一标识属性名称。;每个树节点用来作为唯一标识的属性,整棵树应该是唯一的", + "desc": "节点唯一标识属性名称。每个树节点用来作为唯一标识的属性,整棵树应该是唯一的", "defaultValue": "" }, { @@ -74,7 +74,7 @@ "name": "expand-on-click-node", "sample": "expand-on-click-node", "type": "Boolean", - "desc": "点击节点展开收起开关。当设置为true: 点击节点内容时可展开/收起节点。设置为false: 只有点击节点名称前面的展开/收起图标才能进行节点展开/收起。;是否在点击节点的时候展开或者收缩节点, 默认值为 true,如果为 false,则只有点箭头图标的时候才会展开或者收缩节点。", + "desc": "点击节点展开收起开关。当设置为true: 点击节点内容时可展开/收起节点。设置为false: 只有点击节点名称前面的展开/收起图标才能进行节点展开/收起。是否在点击节点的时候展开或者收缩节点, 默认值为 true,如果为 false,则只有点箭头图标的时候才会展开或者收缩节点。", "defaultValue": "该属性的默认值为 true" }, { @@ -95,7 +95,7 @@ "name": "default-checked-keys", "sample": "default-checked-keys", "type": "Array", - "desc": "配置默认选中。取值为 key 在数据源 dataset 中所对应的值。组件生成后会默认将 defaultValue 中所对应的节点选中。;默认勾选的节点的 key 的数组", + "desc": "配置默认选中。取值为 key 在数据源 dataset 中所对应的值。组件生成后会默认将 defaultValue 中所对应的节点选中。默认勾选的节点的 key 的数组", "defaultValue": "" }, { @@ -123,7 +123,7 @@ "name": "draggable", "sample": "node-draggable", "type": "Boolean", - "desc": "是否开启节点拖拽,节点的位置可任意拖放,改变原来的节点的父子结构。;是否开启拖拽节点功能", + "desc": "是否开启节点拖拽,节点的位置可任意拖放,改变原来的节点的父子结构。是否开启拖拽节点功能", "defaultValue": "该属性的默认值为 false" }, { @@ -158,7 +158,7 @@ "name": "lazy", "sample": "lazy-load-node", "type": "Boolean", - "desc": "异步加载模式,展开节点时再请求数据。需要服务支持。;是否懒加载子节点,需与 load 方法结合使用", + "desc": "异步加载模式,展开节点时再请求数据。需要服务支持。是否懒加载子节点,需与 load 方法结合使用", "defaultValue": "该属性的默认值为 false" }, { @@ -172,14 +172,14 @@ "name": "filter-node-method", "sample": "filter-node", "type": "Function(value, data, node)", - "desc": "指定输入筛选时匹配的节点的字段值。showFilter 为 false时无效。;对树节点进行筛选时执行的方法,返回 true 表示这个节点可以显示,返回 false 则表示这个节点会被隐藏", + "desc": "指定输入筛选时匹配的节点的字段值。showFilter 为 false时无效。对树节点进行筛选时执行的方法,返回 true 表示这个节点可以显示,返回 false 则表示这个节点会被隐藏", "defaultValue": "" }, { "name": "accordion", "sample": "accordion-mode", "type": "Boolean", - "desc": "是否为单一路径。为 true 时,全部层级的节点同级互斥,为数字时,不大于该值的节点同级互斥。;是否每次只打开一个同级树节点展开", + "desc": "是否为单一路径。为 true 时,全部层级的节点同级互斥,为数字时,不大于该值的节点同级互斥。是否每次只打开一个同级树节点展开", "defaultValue": "该属性的默认值为 false" }, { @@ -232,7 +232,7 @@ "name": "getCheckedNodes", "sample": "check-on-click-node", "type": "(leafOnly, includeHalfChecked) => result", - "desc": "获取选中标识的数据。;若节点可被选择(即 show-checkbox 为 true),则返回目前被选中的节点所组成的数组,仅配置多选时生效", + "desc": "获取选中标识的数据。若节点可被选择(即 show-checkbox 为 true),则返回目前被选中的节点所组成的数组,仅配置多选时生效", "defaultValue": "" }, { @@ -323,7 +323,7 @@ "name": "remove", "sample": "", "type": "(data) => void", - "desc": "删除节点。;删除 Tree 中的一个节点,使用此方法必须设置 node-key 属性", + "desc": "删除节点。删除 Tree 中的一个节点,使用此方法必须设置 node-key 属性", "defaultValue": "" }, { @@ -353,7 +353,7 @@ "name": "node-click", "sample": "check-on-click-node", "type": "Function(data, node, vm)", - "desc": "点击节点后的事件。;节点被点击时的回调;//参数说明\n{data: 节点数据,node: 节点状态信息(包括数据),vm: 组件实例}", + "desc": "点击节点后的事件。节点被点击时的回调;//参数说明\n{data: 节点数据,node: 节点状态信息(包括数据),vm: 组件实例}", "defaultValue": "" }, { @@ -388,7 +388,7 @@ "name": "node-expand", "sample": "default-expanded-keys", "type": "Function(data, node, vm)", - "desc": "展开节点后的事件。;节点被展开时触发的事件;//参数说明\n{data: 节点数据,node: 节点状态信息(包括数据,vm: 当前组件实例}", + "desc": "展开节点后的事件。节点被展开时触发的事件;//参数说明\n{data: 节点数据,node: 节点状态信息(包括数据,vm: 当前组件实例}", "defaultValue": "" }, { @@ -437,7 +437,7 @@ "name": "node-drop", "sample": "node-draggable", "type": "Function(draggingNode, targetNode, dropType, event)", - "desc": "拖放节点后的事件。开启 dragable 属性为 true 有效。;拖拽成功完成时触发的事件;//参数\n{draggingNode: 拖拽节点,targetNode: 目标节点,dropType: 拖拽类型, //拖拽节点在目标节点对应关系(before/after/inner/none)\nevent: 原生事件}", + "desc": "拖放节点后的事件。开启 dragable 属性为 true 有效。拖拽成功完成时触发的事件;//参数\n{draggingNode: 拖拽节点,targetNode: 目标节点,dropType: 拖拽类型, //拖拽节点在目标节点对应关系(before/after/inner/none)\nevent: 原生事件}", "defaultValue": "" } ] diff --git a/examples/docs/resources/pc/demo-config/en-US/action-menu.json b/examples/docs/resources/pc/demo-config/en-US/action-menu.json index 495460ba6..b596d1d8f 100644 --- a/examples/docs/resources/pc/demo-config/en-US/action-menu.json +++ b/examples/docs/resources/pc/demo-config/en-US/action-menu.json @@ -78,5 +78,13 @@ "component": " ActionMenu", "findIntroStr": "ActionMenu", "demoId": "slot-item" + }, + { + "title": "Drop-down menu visible change", + "content": "When the drop-down menu change to be visible or hidden, the visible-change event is triggered.", + "link": "action-menu/visible-change", + "component": " ActionMenu", + "findIntroStr": "ActionMenu", + "demoId": "visible-change" } ] diff --git a/examples/docs/resources/pc/demo-config/en-US/alert.json b/examples/docs/resources/pc/demo-config/en-US/alert.json index f20d8574b..a90f98ca1 100644 --- a/examples/docs/resources/pc/demo-config/en-US/alert.json +++ b/examples/docs/resources/pc/demo-config/en-US/alert.json @@ -65,7 +65,7 @@ }, { "title": "Customized prompt content", - "content": "

When size is set to large, you can customize the prompt content through the description attribute or slot.

\n", + "content": "

You can customize the prompt content through the description attribute or slot.

\n", "link": "alert/custom-description", "component": "Alert", "findIntroStr": "Alert alarms, including warning, error, info, and success.", diff --git a/examples/docs/resources/pc/demo-config/en-US/badge.json b/examples/docs/resources/pc/demo-config/en-US/badge.json index 713ce5b3c..672ab53b7 100644 --- a/examples/docs/resources/pc/demo-config/en-US/badge.json +++ b/examples/docs/resources/pc/demo-config/en-US/badge.json @@ -39,6 +39,14 @@ "findIntroStr": "Badge displays specified data, such as the number of to-do tasks and the number of new tasks.", "demoId": "target" }, + { + "title": "Custom Class Name", + "content": "

badge-class Custom Class Name

\n", + "link": "badge/badge-class", + "component": "Badge flag", + "findIntroStr": "Badge displays specified data, such as the number of to-do tasks and the number of new tasks.", + "demoId": "badge-class" + }, { "title": "Custom Tag Target", "content": "

default slot Tag Content Custom

\n", @@ -62,5 +70,13 @@ "component": "Badge flag", "findIntroStr": "Badge displays specified data, such as the number of to-do tasks and the number of new tasks.", "demoId": "dynamic-hidden" + }, + { + "title": "Tag Offset", + "content": "

offset Custom Tag Offset

\n", + "link": "badge/offset", + "component": "Badge flag", + "findIntroStr": "Badge displays specified data, such as the number of to-do tasks and the number of new tasks.", + "demoId": "offset" } ] \ No newline at end of file diff --git a/examples/docs/resources/pc/demo-config/en-US/country.json b/examples/docs/resources/pc/demo-config/en-US/country.json index bac2d301c..12d11b40b 100644 --- a/examples/docs/resources/pc/demo-config/en-US/country.json +++ b/examples/docs/resources/pc/demo-config/en-US/country.json @@ -14,5 +14,13 @@ "component": "Country", "findIntroStr": "Country: country/region component, which is used to display and select country/region names. The options are obtained by configuring the data source.", "demoId": "custom-service" + }, + { + "title": "Custom Data Fields", + "content": "When a user-defined data body is used, fields must be used to specify fields.", + "link": "country/fields", + "component": "Country", + "findIntroStr": "Country: country/region component, which is used to display and select country/region names. The options are obtained by configuring the data source.", + "demoId": "fields" } -] \ No newline at end of file +] diff --git a/examples/docs/resources/pc/demo-config/en-US/dropdown.json b/examples/docs/resources/pc/demo-config/en-US/dropdown.json index 73933790b..2f24e9923 100644 --- a/examples/docs/resources/pc/demo-config/en-US/dropdown.json +++ b/examples/docs/resources/pc/demo-config/en-US/dropdown.json @@ -23,6 +23,14 @@ "findIntroStr": "Dropdown drop-down list.", "demoId": "trigger" }, + { + "title": "Custom Text", + "content": "

DropdownYou can customize the text of DropdownMenu through the title attribute.

\n", + "link": "dropdown/options", + "component": "Dropdown drop-down list", + "findIntroStr": "Dropdown drop-down list.", + "demoId": "options" + }, { "title": "Menu hiding mode", "content": "The

drop-down menu is hidden by default after a menu item is clicked. You can disable this function by setting hide-on-click to false.

\n", @@ -62,5 +70,13 @@ "component": "Dropdown drop-down list", "findIntroStr": "Dropdown drop-down list.", "demoId": "events" + }, + { + "title": "Default Slot", + "content": "

Dropdown can customize content through the default slot

\n", + "link": "dropdown/slot-default", + "component": "Dropdown drop-down list", + "findIntroStr": "Dropdown drop-down list.", + "demoId": "slot-default" } ] diff --git a/examples/docs/resources/pc/demo-config/en-US/ip-address.json b/examples/docs/resources/pc/demo-config/en-US/ip-address.json index 562de0a8e..825c90f8a 100644 --- a/examples/docs/resources/pc/demo-config/en-US/ip-address.json +++ b/examples/docs/resources/pc/demo-config/en-US/ip-address.json @@ -86,5 +86,13 @@ "component": "IpAddress text box", "findIntroStr": "The IP address text box is the same as that of the native IpAddress component of the HTML. In addition, the data binding function is provided.", "demoId": "select" + }, + { + "title": "input event", + "content": "The input event is triggered when a user enters a text box. ", + "link": "ip-address/input", + "component": "IpAddress text box", + "findIntroStr": "The IP address text box is the same as that of the native IpAddress component of the HTML. In addition, the data binding function is provided.", + "demoId": "input" } -] \ No newline at end of file +] diff --git a/examples/docs/resources/pc/demo-config/en-US/modal.json b/examples/docs/resources/pc/demo-config/en-US/modal.json index f85a82628..126484c99 100644 --- a/examples/docs/resources/pc/demo-config/en-US/modal.json +++ b/examples/docs/resources/pc/demo-config/en-US/modal.json @@ -1,7 +1,7 @@ [ { "title": "Basic Usage", - "content": "

You can use the Modal.alert method to set a pop-up box, and use the Modal.confirm method to set a confirmation pop-up box.

\n", + "content": "

You can use the Modal.alert method to set a pop-up box, and use the Modal.confirm method to set a confirmation pop-up box. The function returns a Promise object, where the property vm can be used to close the current Modal.

\n", "link": "modal/base", "component": "Modal modal box", "findIntroStr": "Modal modal box", @@ -247,4 +247,4 @@ "findIntroStr": "Modal modal box", "demoId": "grid" } -] \ No newline at end of file +] diff --git a/examples/docs/resources/pc/demo-config/en-US/popover.json b/examples/docs/resources/pc/demo-config/en-US/popover.json index e7f7a9dc2..9f9597e3f 100644 --- a/examples/docs/resources/pc/demo-config/en-US/popover.json +++ b/examples/docs/resources/pc/demo-config/en-US/popover.json @@ -17,7 +17,7 @@ }, { "title": "Arrow Offset", - "content": "

arrow-offset Sets the offset of the arrow to change the position of the arrow.

\n", + "content": "

arrow-offset Sets the offset of the arrow to change the position of the arrow.By default, the arrow retains at least 8px of space to ensure that the arrow does not stick to the left.

\n", "link": "popover/arrow-offset", "component": " Popover", "findIntroStr": "Popover can trigger a pop-up dialog box by performing operations on a trigger source. The pop-up content, delay triggering, and gradient animation are supported.", diff --git a/examples/docs/resources/pc/demo-config/en-US/select.json b/examples/docs/resources/pc/demo-config/en-US/select.json index 4f149cbe7..3d50330a7 100644 --- a/examples/docs/resources/pc/demo-config/en-US/select.json +++ b/examples/docs/resources/pc/demo-config/en-US/select.json @@ -415,6 +415,14 @@ "findIntroStr": "Select selector is a UI component that displays and selects data from a drop-down list box.", "demoId": "cache-usage" }, + { + "title": "Hide drop-down", + "content": "

Use the hide-drop attribute to disable the display of the drop-down list.

\n", + "link": "select/hide-select-input-border", + "component": "Select Selector", + "findIntroStr": "Select selector is a UI component that displays and selects data from a drop-down list box.", + "demoId": "hide-select-input-border" + }, { "title": "Slot Mode", "content": "

If the list rendering component is set to vue-option through slot to output the drop-down list, you need to manually add the cache function.

\n", diff --git a/examples/docs/resources/pc/demo-config/en-US/time-picker.json b/examples/docs/resources/pc/demo-config/en-US/time-picker.json index f24d35d6d..13c9872ae 100644 --- a/examples/docs/resources/pc/demo-config/en-US/time-picker.json +++ b/examples/docs/resources/pc/demo-config/en-US/time-picker.json @@ -10,10 +10,10 @@ { "title": "Selection Range", "content": "

picker-options Set the time range

\n", - "link": "time-picker/basic-usage", + "link": "time-picker/picker-options", "component": "TimePicker Time Selector", "findIntroStr": "This command is used to set or select a date, including the date format of year, month, month, day, hour, minute, and second.", - "demoId": "basic-usage1" + "demoId": "picker-options" }, { "title": "Arrow Selection", @@ -135,9 +135,17 @@ "findIntroStr": "This command is used to set or select a date, including the date format of year, month, month, day, hour, minute, and second.", "demoId": "editable" }, + { + "title": "Disabled status", + "content": "

You can set disabled to true, you can disabled the time picker。

\n", + "link": "time-picker/disabled", + "component": " TimePicker Time Selector", + "findIntroStr": "This command is used to set or select a date, including the date format of year, month, month, day, hour, minute, and second.", + "demoId": "disabled" + }, { "title": "Event", - "content": "

When focusing or out of focus, the focus and bulr events are triggered. When the selected value is determined, the change event is triggered.

\n", + "content": "

When focusing or out of focus, the focus and blur events are triggered. When the selected value is determined, the change event is triggered.

\n", "link": "time-picker/event-blur", "component": "TimePicker Time Selector", "findIntroStr": "This command is used to set or select a date, including the date format of year, month, month, day, hour, minute, and second.", diff --git a/examples/docs/resources/pc/demo-config/en-US/transfer.json b/examples/docs/resources/pc/demo-config/en-US/transfer.json index de70a1a7d..ab43a773b 100644 --- a/examples/docs/resources/pc/demo-config/en-US/transfer.json +++ b/examples/docs/resources/pc/demo-config/en-US/transfer.json @@ -137,7 +137,7 @@ }, { "title": "Panel Slot", - "content": "

You can use left-panel and right-panel to customize the contents of the left and right panels. Use button to customize the shuttle button

\n", + "content": "

You can use left-panel and right-panel to customize the contents of the left and right panels. Use button-panel to customize the shuttle button

\n", "link": "transfer/panel-slot", "component": "Transfer shuttle box", "findIntroStr": "Shuttle box, which provides bidirectional selection of table data.", diff --git a/examples/docs/resources/pc/demo-config/zh-CN/action-menu.json b/examples/docs/resources/pc/demo-config/zh-CN/action-menu.json index 77df836e9..c5bee1eb5 100644 --- a/examples/docs/resources/pc/demo-config/zh-CN/action-menu.json +++ b/examples/docs/resources/pc/demo-config/zh-CN/action-menu.json @@ -78,5 +78,13 @@ "component": " ActionMenu 菜单按钮", "findIntroStr": "ActionMenu 菜单按钮", "demoId": "slot-item" + }, + { + "title": "下拉面板显示事件", + "content": "当下拉面板出现或者隐藏时触发 visible-change 事件", + "link": "action-menu/visible-change", + "component": " ActionMenu 菜单按钮", + "findIntroStr": "ActionMenu 菜单按钮", + "demoId": "visible-change" } ] diff --git a/examples/docs/resources/pc/demo-config/zh-CN/alert.json b/examples/docs/resources/pc/demo-config/zh-CN/alert.json index 1db532962..277590298 100644 --- a/examples/docs/resources/pc/demo-config/zh-CN/alert.json +++ b/examples/docs/resources/pc/demo-config/zh-CN/alert.json @@ -65,7 +65,7 @@ }, { "title": "自定义提示内容", - "content": "

size 为 large时,可通过 description 属性或插槽设置自定义提示内容。

\n", + "content": "

可通过 description 属性或插槽设置自定义提示内容。

\n", "link": "alert/custom-description", "component": " Alert 警告", "findIntroStr": "Alert 警告,提供 warning、error、info、success 四种类型显示不同类别的信息。", diff --git a/examples/docs/resources/pc/demo-config/zh-CN/badge.json b/examples/docs/resources/pc/demo-config/zh-CN/badge.json index d591ebde8..3a58b6f79 100644 --- a/examples/docs/resources/pc/demo-config/zh-CN/badge.json +++ b/examples/docs/resources/pc/demo-config/zh-CN/badge.json @@ -1 +1,82 @@ -[{"title":"基本用法","content":"

Badge 展示指定数据信息,如:我的待办数、新任务数等。

\n","link":"badge/base","component":" Badge 标记","findIntroStr":"Badge 展示指定数据信息,如:我的待办数、新任务数等。","demoId":"base"},{"title":"主題样式","content":"

type 设置显示主题,可选值:primary、success、warning、danger、info,默认值:danger

\n","link":"badge/type","component":" Badge 标记","findIntroStr":"Badge 展示指定数据信息,如:我的待办数、新任务数等。","demoId":"type"},{"title":"小圆点标记","content":"

is-dot 显示小圆点标记

\n","link":"badge/is-dot","component":" Badge 标记","findIntroStr":"Badge 展示指定数据信息,如:我的待办数、新任务数等。","demoId":"is-dot"},{"title":"计数最大值","content":"

max 超过最大值会显示 '{max}+'

\n","link":"badge/max","component":" Badge 标记","findIntroStr":"Badge 展示指定数据信息,如:我的待办数、新任务数等。","demoId":"max"},{"title":"跳转链接","content":"

href定义跳转链接

\n","link":"badge/target","component":" Badge 标记","findIntroStr":"Badge 展示指定数据信息,如:我的待办数、新任务数等。","demoId":"target"},{"title":"自定义标记目标","content":"

default slot 标记内容自定义

\n","link":"badge/slot-default","component":" Badge 标记","findIntroStr":"Badge 展示指定数据信息,如:我的待办数、新任务数等。","demoId":"slot-default"},{"title":"自定义提示内容","content":"

content slot 自定义提示内容

\n","link":"badge/slot-content","component":" Badge 标记","findIntroStr":"Badge 展示指定数据信息,如:我的待办数、新任务数等。","demoId":"slot-content"},{"title":"消息已读动态隐藏标记","content":"

hidden 隐藏标记

\n","link":"badge/dynamic-hidden","component":" Badge 标记","findIntroStr":"Badge 展示指定数据信息,如:我的待办数、新任务数等。","demoId":"dynamic-hidden"}] +[ + { + "title": "基本用法", + "content": "

Badge 展示指定数据信息,如:我的待办数、新任务数等。

\n", + "link": "badge/base", + "component": " Badge 标记", + "findIntroStr": "Badge 展示指定数据信息,如:我的待办数、新任务数等。", + "demoId": "base" + }, + { + "title": "主題样式", + "content": "

type 设置显示主题,可选值:primary、success、warning、danger、info,默认值:danger

\n", + "link": "badge/type", + "component": " Badge 标记", + "findIntroStr": "Badge 展示指定数据信息,如:我的待办数、新任务数等。", + "demoId": "type" + }, + { + "title": "小圆点标记", + "content": "

is-dot 显示小圆点标记

\n", + "link": "badge/is-dot", + "component": " Badge 标记", + "findIntroStr": "Badge 展示指定数据信息,如:我的待办数、新任务数等。", + "demoId": "is-dot" + }, + { + "title": "计数最大值", + "content": "

max 超过最大值会显示 '{max}+'

\n", + "link": "badge/max", + "component": " Badge 标记", + "findIntroStr": "Badge 展示指定数据信息,如:我的待办数、新任务数等。", + "demoId": "max" + }, + { + "title": "跳转链接", + "content": "

href定义跳转链接

\n", + "link": "badge/target", + "component": " Badge 标记", + "findIntroStr": "Badge 展示指定数据信息,如:我的待办数、新任务数等。", + "demoId": "target" + }, + { + "title": "自定义类名", + "content": "

badge-class 自定义类名

\n", + "link": "badge/badge-class", + "component": " Badge 标记", + "findIntroStr": "Badge 展示指定数据信息,如:我的待办数、新任务数等。", + "demoId": "badge-class" + }, + { + "title": "自定义标记目标", + "content": "

default slot 标记内容自定义

\n", + "link": "badge/slot-default", + "component": " Badge 标记", + "findIntroStr": "Badge 展示指定数据信息,如:我的待办数、新任务数等。", + "demoId": "slot-default" + }, + { + "title": "自定义提示内容", + "content": "

content slot 自定义提示内容

\n", + "link": "badge/slot-content", + "component": " Badge 标记", + "findIntroStr": "Badge 展示指定数据信息,如:我的待办数、新任务数等。", + "demoId": "slot-content" + }, + { + "title": "消息已读动态隐藏标记", + "content": "

hidden 隐藏标记

\n", + "link": "badge/dynamic-hidden", + "component": " Badge 标记", + "findIntroStr": "Badge 展示指定数据信息,如:我的待办数、新任务数等。", + "demoId": "dynamic-hidden" + }, + { + "title": "标记的位置", + "content": "

offset 调整标记的位置

\n", + "link": "badge/offset", + "component": " Badge 标记", + "findIntroStr": "Badge 展示指定数据信息,如:我的待办数、新任务数等。", + "demoId": "offset" + } +] \ No newline at end of file diff --git a/examples/docs/resources/pc/demo-config/zh-CN/breadcrumb.json b/examples/docs/resources/pc/demo-config/zh-CN/breadcrumb.json index 1fa7ba930..b4d081c50 100644 --- a/examples/docs/resources/pc/demo-config/zh-CN/breadcrumb.json +++ b/examples/docs/resources/pc/demo-config/zh-CN/breadcrumb.json @@ -1 +1,34 @@ -[{"title":"基本用法","content":"详细用法参考如下示例","link":"breadcrumb/base","component":" Breadcrumb 面包屑","findIntroStr":"Breadcrumb 面包屑导航,作用是告诉访问者他们目前在网站中的位置以及如何返回。","demoId":"base"},{"title":"自定义节点","content":"

设置子组件 BreadcrumbItem 的 默认插槽,自定义节点内容。to 设置路由跳转的对象,同时设置 replace 后将不会向 history 添加新记录。

\n","link":"breadcrumb/slot-default","component":" Breadcrumb 面包屑","findIntroStr":"Breadcrumb 面包屑导航,作用是告诉访问者他们目前在网站中的位置以及如何返回。","demoId":"slot-default"},{"title":"自定义分隔符","content":"

设置 separatorseparator-icon 属性,自定义分隔符。

\n","link":"breadcrumb/separator","component":" Breadcrumb 面包屑","findIntroStr":"Breadcrumb 面包屑导航,作用是告诉访问者他们目前在网站中的位置以及如何返回。","demoId":"separator"},{"title":"options 配置","content":"

通过 options 总体配置每个 BreadcrumbItem

设置textField 指定显示字段,默认显示字段为 label\n","link":"breadcrumb/options","component":" Breadcrumb 面包屑","findIntroStr":"Breadcrumb 面包屑导航,作用是告诉访问者他们目前在网站中的位置以及如何返回。","demoId":"options"}] +[ + { + "title": "基本用法", + "content": "详细用法参考如下示例", + "link": "breadcrumb/base", + "component": " Breadcrumb 面包屑", + "findIntroStr": "Breadcrumb 面包屑导航,作用是告诉访问者他们目前在网站中的位置以及如何返回。", + "demoId": "base" + }, + { + "title": "自定义节点", + "content": "

设置子组件 BreadcrumbItem 的 默认插槽,自定义节点内容。to 设置路由跳转的对象,同时设置 replace 后将不会向 history 添加新记录。

\n", + "link": "breadcrumb/slot-default", + "component": " Breadcrumb 面包屑", + "findIntroStr": "Breadcrumb 面包屑导航,作用是告诉访问者他们目前在网站中的位置以及如何返回。", + "demoId": "slot-default" + }, + { + "title": "自定义分隔符", + "content": "

设置 separatorseparator-icon 属性,自定义分隔符。

\n", + "link": "breadcrumb/separator", + "component": " Breadcrumb 面包屑", + "findIntroStr": "Breadcrumb 面包屑导航,作用是告诉访问者他们目前在网站中的位置以及如何返回。", + "demoId": "separator" + }, + { + "title": "options 配置", + "content": "

通过 options 总体配置每个 BreadcrumbItem

设置textField 指定显示字段,默认显示字段为 label\n", + "link": "breadcrumb/options", + "component": " Breadcrumb 面包屑", + "findIntroStr": "Breadcrumb 面包屑导航,作用是告诉访问者他们目前在网站中的位置以及如何返回。", + "demoId": "options" + } +] diff --git a/examples/docs/resources/pc/demo-config/zh-CN/bulletin-board.json b/examples/docs/resources/pc/demo-config/zh-CN/bulletin-board.json index 76b0d9dcb..61e7d7be1 100644 --- a/examples/docs/resources/pc/demo-config/zh-CN/bulletin-board.json +++ b/examples/docs/resources/pc/demo-config/zh-CN/bulletin-board.json @@ -1 +1,66 @@ -[{"title":"基本用法","content":"

必须设置 data 属性设置公告牌公告信息数据,以及 tab-title 属性设置每个公告牌标题。

\n","link":"bulletin-board/base","component":" BulletinBoard 公告牌","findIntroStr":"BulletinBoard 公告牌组件,展现需要重点关注的信息。","demoId":"base"},{"title":"公告牌标题","content":"

可通过 title 设置公告牌标题。

\n","link":"bulletin-board/title","component":" BulletinBoard 公告牌","findIntroStr":"BulletinBoard 公告牌组件,展现需要重点关注的信息。","demoId":"title"},{"title":"默认激活的选项卡","content":"

可通过 active-name 设置默认激活的选项卡,从 1 开始计算。

\n","link":"bulletin-board/active-name","component":" BulletinBoard 公告牌","findIntroStr":"BulletinBoard 公告牌组件,展现需要重点关注的信息。","demoId":"active-name"},{"title":"选项卡标题","content":"

可通过 tab-title 属性自定义选项卡标题。

\n","link":"bulletin-board/tab-title","component":" BulletinBoard 公告牌","findIntroStr":"BulletinBoard 公告牌组件,展现需要重点关注的信息。","demoId":"tab-title"},{"title":"基于Url的跳转","content":"

基于 Url 的跳转是根据数据中的 urltarget 字段进行跳转的。

\n","link":"bulletin-board/url","component":" BulletinBoard 公告牌","findIntroStr":"BulletinBoard 公告牌组件,展现需要重点关注的信息。","demoId":"url"},{"title":"基于Route的跳转","content":"

基于 Route 的跳转是根据数据中的 route 字段进行跳转的。

\n","link":"bulletin-board/route","component":" BulletinBoard 公告牌","findIntroStr":"BulletinBoard 公告牌组件,展现需要重点关注的信息。","demoId":"route"},{"title":"显示 “更多” 链接","content":"

可通过 more-link 显示并设置更多链接。 show-more 设置是否显示更多按钮,默认为 true。

\n","link":"bulletin-board/more-link","component":" BulletinBoard 公告牌","findIntroStr":"BulletinBoard 公告牌组件,展现需要重点关注的信息。","demoId":"more-link"},{"title":"自定义新公告前缀","content":"

可通过 icon 自定义新公告前缀图标。

\n","link":"bulletin-board/icon","component":" BulletinBoard 公告牌","findIntroStr":"BulletinBoard 公告牌组件,展现需要重点关注的信息。","demoId":"icon"}] +[ + { + "title": "基本用法", + "content": "

必须设置 data 属性设置公告牌公告信息数据,以及 tab-title 属性设置每个公告牌标题。

\n", + "link": "bulletin-board/base", + "component": " BulletinBoard 公告牌", + "findIntroStr": "BulletinBoard 公告牌组件,展现需要重点关注的信息。", + "demoId": "base" + }, + { + "title": "公告牌标题", + "content": "

可通过 title 设置公告牌标题。

\n", + "link": "bulletin-board/title", + "component": " BulletinBoard 公告牌", + "findIntroStr": "BulletinBoard 公告牌组件,展现需要重点关注的信息。", + "demoId": "title" + }, + { + "title": "默认激活的选项卡", + "content": "

可通过 active-name 设置默认激活的选项卡,从 1 开始计算。

\n", + "link": "bulletin-board/active-name", + "component": " BulletinBoard 公告牌", + "findIntroStr": "BulletinBoard 公告牌组件,展现需要重点关注的信息。", + "demoId": "active-name" + }, + { + "title": "选项卡标题", + "content": "

可通过 tab-title 属性自定义选项卡标题。

\n", + "link": "bulletin-board/tab-title", + "component": " BulletinBoard 公告牌", + "findIntroStr": "BulletinBoard 公告牌组件,展现需要重点关注的信息。", + "demoId": "tab-title" + }, + { + "title": "基于Url的跳转", + "content": "

基于 Url 的跳转是根据数据中的 urltarget 字段进行跳转的。

\n", + "link": "bulletin-board/url", + "component": " BulletinBoard 公告牌", + "findIntroStr": "BulletinBoard 公告牌组件,展现需要重点关注的信息。", + "demoId": "url" + }, + { + "title": "基于Route的跳转", + "content": "

基于 Route 的跳转是根据数据中的 route 字段进行跳转的。

\n", + "link": "bulletin-board/route", + "component": " BulletinBoard 公告牌", + "findIntroStr": "BulletinBoard 公告牌组件,展现需要重点关注的信息。", + "demoId": "route" + }, + { + "title": "显示 “更多” 链接", + "content": "

可通过 more-link 显示并设置更多链接。 show-more 设置是否显示更多按钮,默认为 true。

\n", + "link": "bulletin-board/more-link", + "component": " BulletinBoard 公告牌", + "findIntroStr": "BulletinBoard 公告牌组件,展现需要重点关注的信息。", + "demoId": "more-link" + }, + { + "title": "自定义新公告前缀", + "content": "

可通过 icon 自定义新公告前缀图标。

\n", + "link": "bulletin-board/icon", + "component": " BulletinBoard 公告牌", + "findIntroStr": "BulletinBoard 公告牌组件,展现需要重点关注的信息。", + "demoId": "icon" + } +] diff --git a/examples/docs/resources/pc/demo-config/zh-CN/collapse.json b/examples/docs/resources/pc/demo-config/zh-CN/collapse.json index e97d6c3ea..88623c81c 100644 --- a/examples/docs/resources/pc/demo-config/zh-CN/collapse.json +++ b/examples/docs/resources/pc/demo-config/zh-CN/collapse.json @@ -1 +1,74 @@ -[{"title":"基本用法","content":"详细用法参考如下示例","link":"collapse/basic-usage","component":" Collapse 折叠面板","findIntroStr":"内容区可指定动态页面或自定义 html 等,支持展开收起操作。","demoId":"basic-usage"},{"title":"手风琴效果","content":"

配置 accordion 属性为 true 后,折叠面板将展示手风琴效果。\n配置 v-model 设置当前激活的面板(如果是手风琴模式,绑定值类型需要为 string ,否则为 array )\nchange 事件,在当前激活面板改变时触发,参数为当前的 value 值\n配置 name 属性作为每个 collapse-item 的唯一标志符

\n","link":"collapse/accordion","component":" Collapse 折叠面板","findIntroStr":"内容区可指定动态页面或自定义 html 等,支持展开收起操作。","demoId":"accordion"},{"title":"禁用状态","content":"

collapse-item 元素上配置 disabled 属性为 true 后,将禁用指定的折叠面板项。

\n","link":"collapse/dynamic-disable","component":" Collapse 折叠面板","findIntroStr":"内容区可指定动态页面或自定义 html 等,支持展开收起操作。","demoId":"dynamic-disable"},{"title":"自定义面板标题","content":"

collapse-item 元素上配置 title 属性可以指定每个折叠面板项的标题。但同时也可以通过 title 插槽的方式自定义面板标题,比如在标题前增加图标。

\n","link":"collapse/custom-collapse-title","component":" Collapse 折叠面板","findIntroStr":"内容区可指定动态页面或自定义 html 等,支持展开收起操作。","demoId":"custom-collapse-title"},{"title":"自定义展开折叠图标","content":"

collapse-item 元素上可以通过 icon 插槽的方式自定义展开折叠 icon 图标。

\n","link":"collapse/custom-collapse-icon","component":" Collapse 折叠面板","findIntroStr":"内容区可指定动态页面或自定义 html 等,支持展开收起操作。","demoId":"custom-collapse-icon"},{"title":"折叠面板事件","content":"

激活面板的值改变时将触发 change 事件。

\n","link":"collapse/collapse-events","component":" Collapse 折叠面板","findIntroStr":"内容区可指定动态页面或自定义 html 等,支持展开收起操作。","demoId":"collapse-events"},{"title":"阻止折叠面板关闭事件","content":"

:before-close 折叠面板关闭前事件,方法里面return true/false,表示是否可以关闭

\n","link":"collapse/block-close","component":" Collapse 折叠面板","findIntroStr":"内容区可指定动态页面或自定义 html 等,支持展开收起操作。","demoId":"block-close"},{"title":"嵌套表格","content":"

通过 collapse-item 元素的默认插槽嵌入表格。

\n","link":"collapse/nested-grid","component":" Collapse 折叠面板","findIntroStr":"内容区可指定动态页面或自定义 html 等,支持展开收起操作。","demoId":"nested-grid"},{"title":"嵌套表单","content":"

通过 collapse-item 元素的默认插槽嵌入表单。

\n","link":"collapse/nested-form","component":" Collapse 折叠面板","findIntroStr":"内容区可指定动态页面或自定义 html 等,支持展开收起操作。","demoId":"nested-form"}] +[ + { + "title": "基本用法", + "content": "详细用法参考如下示例", + "link": "collapse/basic-usage", + "component": " Collapse 折叠面板", + "findIntroStr": "内容区可指定动态页面或自定义 html 等,支持展开收起操作。", + "demoId": "basic-usage" + }, + { + "title": "手风琴效果", + "content": "

配置 accordion 属性为 true 后,折叠面板将展示手风琴效果。\n配置 v-model 设置当前激活的面板(如果是手风琴模式,绑定值类型需要为 string ,否则为 array )\nchange 事件,在当前激活面板改变时触发,参数为当前的 value 值\n配置 name 属性作为每个 collapse-item 的唯一标志符

\n", + "link": "collapse/accordion", + "component": " Collapse 折叠面板", + "findIntroStr": "内容区可指定动态页面或自定义 html 等,支持展开收起操作。", + "demoId": "accordion" + }, + { + "title": "禁用状态", + "content": "

collapse-item 元素上配置 disabled 属性为 true 后,将禁用指定的折叠面板项。

\n", + "link": "collapse/dynamic-disable", + "component": " Collapse 折叠面板", + "findIntroStr": "内容区可指定动态页面或自定义 html 等,支持展开收起操作。", + "demoId": "dynamic-disable" + }, + { + "title": "自定义面板标题", + "content": "

collapse-item 元素上配置 title 属性可以指定每个折叠面板项的标题。但同时也可以通过 title 插槽的方式自定义面板标题,比如在标题前增加图标。

\n", + "link": "collapse/custom-collapse-title", + "component": " Collapse 折叠面板", + "findIntroStr": "内容区可指定动态页面或自定义 html 等,支持展开收起操作。", + "demoId": "custom-collapse-title" + }, + { + "title": "自定义展开折叠图标", + "content": "

collapse-item 元素上可以通过 icon 插槽的方式自定义展开折叠 icon 图标。

\n", + "link": "collapse/custom-collapse-icon", + "component": " Collapse 折叠面板", + "findIntroStr": "内容区可指定动态页面或自定义 html 等,支持展开收起操作。", + "demoId": "custom-collapse-icon" + }, + { + "title": "折叠面板事件", + "content": "

激活面板的值改变时将触发 change 事件。

\n", + "link": "collapse/collapse-events", + "component": " Collapse 折叠面板", + "findIntroStr": "内容区可指定动态页面或自定义 html 等,支持展开收起操作。", + "demoId": "collapse-events" + }, + { + "title": "阻止折叠面板关闭事件", + "content": "

:before-close 折叠面板关闭前事件,方法里面return true/false,表示是否可以关闭

\n", + "link": "collapse/block-close", + "component": " Collapse 折叠面板", + "findIntroStr": "内容区可指定动态页面或自定义 html 等,支持展开收起操作。", + "demoId": "block-close" + }, + { + "title": "嵌套表格", + "content": "

通过 collapse-item 元素的默认插槽嵌入表格。

\n", + "link": "collapse/nested-grid", + "component": " Collapse 折叠面板", + "findIntroStr": "内容区可指定动态页面或自定义 html 等,支持展开收起操作。", + "demoId": "nested-grid" + }, + { + "title": "嵌套表单", + "content": "

通过 collapse-item 元素的默认插槽嵌入表单。

\n", + "link": "collapse/nested-form", + "component": " Collapse 折叠面板", + "findIntroStr": "内容区可指定动态页面或自定义 html 等,支持展开收起操作。", + "demoId": "nested-form" + } +] diff --git a/examples/docs/resources/pc/demo-config/zh-CN/country.json b/examples/docs/resources/pc/demo-config/zh-CN/country.json index 0cf40dc52..22bf7b4ba 100644 --- a/examples/docs/resources/pc/demo-config/zh-CN/country.json +++ b/examples/docs/resources/pc/demo-config/zh-CN/country.json @@ -1 +1,26 @@ -[{"title":"基本用法","content":"详细用法参考如下示例","link":"country/basic-usage","component":" Country 国家/地区","findIntroStr":"Country 国家/地区组件,用于国家/地区名称展示及选择,通过配置数据源获取选项。","demoId":"basic-usage"},{"title":"自定义服务","content":"

通过 fetch-country 属性可以指定一个方法,在方法中可实现请求自定义的服务。 clearable 设置是否可清空,默认值为 true。

\n","link":"country/custom-service","component":" Country 国家/地区","findIntroStr":"Country 国家/地区组件,用于国家/地区名称展示及选择,通过配置数据源获取选项。","demoId":"custom-service"}] +[ + { + "title": "基本用法", + "content": "详细用法参考如下示例", + "link": "country/basic-usage", + "component": " Country 国家/地区", + "findIntroStr": "Country 国家/地区组件,用于国家/地区名称展示及选择,通过配置数据源获取选项。", + "demoId": "basic-usage" + }, + { + "title": "自定义服务", + "content": "

通过 fetch-country 属性可以指定一个方法,在方法中可实现请求自定义的服务。 clearable 设置是否可清空,默认值为 true。

\n", + "link": "country/custom-service", + "component": " Country 国家/地区", + "findIntroStr": "Country 国家/地区组件,用于国家/地区名称展示及选择,通过配置数据源获取选项。", + "demoId": "custom-service" + }, + { + "title": "自定义数据的字段", + "content": "当使用自定义的数据体时,需要使用fields来指定字段", + "link": "country/fields", + "component": " Country 国家/地区", + "findIntroStr": "Country 国家/地区组件,用于国家/地区名称展示及选择,通过配置数据源获取选项。", + "demoId": "fields" + } +] diff --git a/examples/docs/resources/pc/demo-config/zh-CN/dialog-box.json b/examples/docs/resources/pc/demo-config/zh-CN/dialog-box.json index 15b973c2d..8c0350fd4 100644 --- a/examples/docs/resources/pc/demo-config/zh-CN/dialog-box.json +++ b/examples/docs/resources/pc/demo-config/zh-CN/dialog-box.json @@ -1 +1,154 @@ -[{"title":"基本用法","content":"详细用法参考如下示例","link":"dialog-box/basic-usage","component":" DialogBox 对话框","findIntroStr":"模态对话框,在浮层中显示,引导用户进行相关操作。","demoId":"basic-usage"},{"title":"二级弹窗","content":"

通过 default 默认插槽和底部操作区按钮实现二级弹窗。设置 append-to-body 属性后,二级弹窗的实体 DOM 结构将追加到 body 元素上。

\n","link":"dialog-box/secondary-dialog","component":" DialogBox 对话框","findIntroStr":"模态对话框,在浮层中显示,引导用户进行相关操作。","demoId":"secondary-dialog"},{"title":"自定义标题","content":"

title 属性可以设置弹窗标题外,还可以通过 title 插槽自定义弹窗标题区的内容。

\n","link":"dialog-box/custom-dialog-title","component":" DialogBox 对话框","findIntroStr":"模态对话框,在浮层中显示,引导用户进行相关操作。","demoId":"custom-dialog-title"},{"title":"自定义内容","content":"

通过 default 默认插槽自定义弹窗主体部分的内容。

\n","link":"dialog-box/custom-dialog-content","component":" DialogBox 对话框","findIntroStr":"模态对话框,在浮层中显示,引导用户进行相关操作。","demoId":"custom-dialog-content"},{"title":"自定义底部","content":"

通过 footer 插槽自定义弹窗底部操作区内容。

\n","link":"dialog-box/custom-dialog-footer","component":" DialogBox 对话框","findIntroStr":"模态对话框,在浮层中显示,引导用户进行相关操作。","demoId":"custom-dialog-footer"},{"title":"隐藏关闭按钮","content":"

默认弹窗右上角会显示关闭图标,单击可以关闭弹窗。若设置 show-close 为 false 后,将隐藏关闭图标,要实现关闭弹窗的功能可以通过底部操作区按钮的 click 事件切换 visible 属性的值为 false 。

\n","link":"dialog-box/hidden-close-buttons","component":" DialogBox 对话框","findIntroStr":"模态对话框,在浮层中显示,引导用户进行相关操作。","demoId":"hidden-close-buttons"},{"title":"禁用 ESC 关闭","content":"

默认弹窗打开后,可以按下 Esc 键关闭弹窗,设置 close-on-press-escape 为 false 后将禁用该功能。

\n","link":"dialog-box/close-on-press-escape","component":" DialogBox 对话框","findIntroStr":"模态对话框,在浮层中显示,引导用户进行相关操作。","demoId":"close-on-press-escape"},{"title":"弹窗距离顶部的高度","content":"

通过 top 属性指定弹窗距离窗口顶部的高度,默认为屏高的 15% 。

\n","link":"dialog-box/dialog-top-height","component":" DialogBox 对话框","findIntroStr":"模态对话框,在浮层中显示,引导用户进行相关操作。","demoId":"dialog-top-height"},{"title":"弹窗的宽度","content":"

通过 width 属性指定弹窗的宽度。

\n","link":"dialog-box/dialog-width","component":" DialogBox 对话框","findIntroStr":"模态对话框,在浮层中显示,引导用户进行相关操作。","demoId":"dialog-width"},{"title":"点击遮罩时不关闭弹窗","content":"

默认弹窗打开后,可以单击遮罩层关闭弹窗,设置 close-on-click-modal 为 false 后将禁用该功能。

\n","link":"dialog-box/close-on-click-modal","component":" DialogBox 对话框","findIntroStr":"模态对话框,在浮层中显示,引导用户进行相关操作。","demoId":"close-on-click-modal"},{"title":"不启用遮罩层","content":"

默认弹窗打开时会显示遮罩层,设置 modal 为 false 后将不启用遮罩层。无遮罩层时,单击弹窗外部区域仍然可以关闭弹窗。

\n","link":"dialog-box/no-modal","component":" DialogBox 对话框","findIntroStr":"模态对话框,在浮层中显示,引导用户进行相关操作。","demoId":"no-modal"},{"title":"右侧弹窗","content":"

设置 right-slide 属性为 true 后,弹窗将从窗口右侧弹出。\n设置 modal-append-to-body 属性默认为 true 遮罩层应用在 body 上。

\n","link":"dialog-box/right-dialog","component":" DialogBox 对话框","findIntroStr":"模态对话框,在浮层中显示,引导用户进行相关操作。","demoId":"right-dialog"},{"title":"隐藏标题区域","content":"

弹窗默认有标题区域,设置 show-header 为 false 后,将隐藏标题区域。

\n","link":"dialog-box/hidden-header","component":" DialogBox 对话框","findIntroStr":"模态对话框,在浮层中显示,引导用户进行相关操作。","demoId":"hidden-header"},{"title":"弹出时禁用滚动","content":"

弹窗弹出后,背景页面默认仍然是不可以滚动的,设置 lock-scroll 为 fasle 后将不锁定被遮罩内容的滚动。

\n","link":"dialog-box/lock-scroll","component":" DialogBox 对话框","findIntroStr":"模态对话框,在浮层中显示,引导用户进行相关操作。","demoId":"lock-scroll"},{"title":"头部和底部水平居中","content":"

头部标题默认显示在区域左侧,设置 center 为 true 后,将居中显示。

\n","link":"dialog-box/center","component":" DialogBox 对话框","findIntroStr":"模态对话框,在浮层中显示,引导用户进行相关操作。","demoId":"center"},{"title":"可拖拽的弹窗","content":"

默认弹窗不可拖拽,设置 draggable 属性为 true 后,鼠标移入标题区域单击可拖拽,拖拽事件有 @drag-startdrag-movedrag-end

\n","link":"dialog-box/draggable","component":" DialogBox 对话框","findIntroStr":"模态对话框,在浮层中显示,引导用户进行相关操作。","demoId":"draggable"},{"title":"全屏弹窗","content":"

设置 fullscreen 属性为 true 可显示全屏弹窗,默认弹窗宽度是 500px,此时设置宽度是不生效的。

\n","link":"dialog-box/fullscreen","component":" DialogBox 对话框","findIntroStr":"模态对话框,在浮层中显示,引导用户进行相关操作。","demoId":"fullscreen"},{"title":"弹出与关闭事件","content":"

open :对话框打开时触发,opened :对话框打开动画结束时触发,close :对话框关闭时触发,closed :对话框关闭动画结束时触发。

\n","link":"dialog-box/open-close-events","component":" DialogBox 对话框","findIntroStr":"模态对话框,在浮层中显示,引导用户进行相关操作。","demoId":"open-close-events"},{"title":"弹窗表单","content":"

通过 default 默认插槽实现嵌套表单以及表单提交的逻辑。

\n

默认关闭弹窗的时候重置表单,设置is-form-reset 为false,则关闭弹窗的时候不重置表格

","link":"dialog-box/form-in-dialog","component":" DialogBox 对话框","findIntroStr":"模态对话框,在浮层中显示,引导用户进行相关操作。","demoId":"form-in-dialog"}] +[ + { + "title": "基本用法", + "content": "详细用法参考如下示例", + "link": "dialog-box/basic-usage", + "component": " DialogBox 对话框", + "findIntroStr": "模态对话框,在浮层中显示,引导用户进行相关操作。", + "demoId": "basic-usage" + }, + { + "title": "二级弹窗", + "content": "

通过 default 默认插槽和底部操作区按钮实现二级弹窗。设置 append-to-body 属性后,二级弹窗的实体 DOM 结构将追加到 body 元素上。

\n", + "link": "dialog-box/secondary-dialog", + "component": " DialogBox 对话框", + "findIntroStr": "模态对话框,在浮层中显示,引导用户进行相关操作。", + "demoId": "secondary-dialog" + }, + { + "title": "自定义标题", + "content": "

title 属性可以设置弹窗标题外,还可以通过 title 插槽自定义弹窗标题区的内容。

\n", + "link": "dialog-box/custom-dialog-title", + "component": " DialogBox 对话框", + "findIntroStr": "模态对话框,在浮层中显示,引导用户进行相关操作。", + "demoId": "custom-dialog-title" + }, + { + "title": "自定义内容", + "content": "

通过 default 默认插槽自定义弹窗主体部分的内容。

\n", + "link": "dialog-box/custom-dialog-content", + "component": " DialogBox 对话框", + "findIntroStr": "模态对话框,在浮层中显示,引导用户进行相关操作。", + "demoId": "custom-dialog-content" + }, + { + "title": "自定义底部", + "content": "

通过 footer 插槽自定义弹窗底部操作区内容。

\n", + "link": "dialog-box/custom-dialog-footer", + "component": " DialogBox 对话框", + "findIntroStr": "模态对话框,在浮层中显示,引导用户进行相关操作。", + "demoId": "custom-dialog-footer" + }, + { + "title": "隐藏关闭按钮", + "content": "

默认弹窗右上角会显示关闭图标,单击可以关闭弹窗。若设置 show-close 为 false 后,将隐藏关闭图标,要实现关闭弹窗的功能可以通过底部操作区按钮的 click 事件切换 visible 属性的值为 false 。

\n", + "link": "dialog-box/hidden-close-buttons", + "component": " DialogBox 对话框", + "findIntroStr": "模态对话框,在浮层中显示,引导用户进行相关操作。", + "demoId": "hidden-close-buttons" + }, + { + "title": "禁用 ESC 关闭", + "content": "

默认弹窗打开后,可以按下 Esc 键关闭弹窗,设置 close-on-press-escape 为 false 后将禁用该功能。

\n", + "link": "dialog-box/close-on-press-escape", + "component": " DialogBox 对话框", + "findIntroStr": "模态对话框,在浮层中显示,引导用户进行相关操作。", + "demoId": "close-on-press-escape" + }, + { + "title": "弹窗距离顶部的高度", + "content": "

通过 top 属性指定弹窗距离窗口顶部的高度,默认为屏高的 15% 。

\n", + "link": "dialog-box/dialog-top-height", + "component": " DialogBox 对话框", + "findIntroStr": "模态对话框,在浮层中显示,引导用户进行相关操作。", + "demoId": "dialog-top-height" + }, + { + "title": "弹窗的宽度", + "content": "

通过 width 属性指定弹窗的宽度。

\n", + "link": "dialog-box/dialog-width", + "component": " DialogBox 对话框", + "findIntroStr": "模态对话框,在浮层中显示,引导用户进行相关操作。", + "demoId": "dialog-width" + }, + { + "title": "点击遮罩时不关闭弹窗", + "content": "

默认弹窗打开后,可以单击遮罩层关闭弹窗,设置 close-on-click-modal 为 false 后将禁用该功能。

\n", + "link": "dialog-box/close-on-click-modal", + "component": " DialogBox 对话框", + "findIntroStr": "模态对话框,在浮层中显示,引导用户进行相关操作。", + "demoId": "close-on-click-modal" + }, + { + "title": "不启用遮罩层", + "content": "

默认弹窗打开时会显示遮罩层,设置 modal 为 false 后将不启用遮罩层。无遮罩层时,单击弹窗外部区域仍然可以关闭弹窗。

\n", + "link": "dialog-box/no-modal", + "component": " DialogBox 对话框", + "findIntroStr": "模态对话框,在浮层中显示,引导用户进行相关操作。", + "demoId": "no-modal" + }, + { + "title": "右侧弹窗", + "content": "

设置 right-slide 属性为 true 后,弹窗将从窗口右侧弹出。\n设置 modal-append-to-body 属性默认为 true 遮罩层应用在 body 上。

\n", + "link": "dialog-box/right-dialog", + "component": " DialogBox 对话框", + "findIntroStr": "模态对话框,在浮层中显示,引导用户进行相关操作。", + "demoId": "right-dialog" + }, + { + "title": "隐藏标题区域", + "content": "

弹窗默认有标题区域,设置 show-header 为 false 后,将隐藏标题区域。

\n", + "link": "dialog-box/hidden-header", + "component": " DialogBox 对话框", + "findIntroStr": "模态对话框,在浮层中显示,引导用户进行相关操作。", + "demoId": "hidden-header" + }, + { + "title": "弹出时禁用滚动", + "content": "

弹窗弹出后,背景页面默认仍然是不可以滚动的,设置 lock-scroll 为 fasle 后将不锁定被遮罩内容的滚动。

\n", + "link": "dialog-box/lock-scroll", + "component": " DialogBox 对话框", + "findIntroStr": "模态对话框,在浮层中显示,引导用户进行相关操作。", + "demoId": "lock-scroll" + }, + { + "title": "头部和底部水平居中", + "content": "

头部标题默认显示在区域左侧,设置 center 为 true 后,将居中显示。

\n", + "link": "dialog-box/center", + "component": " DialogBox 对话框", + "findIntroStr": "模态对话框,在浮层中显示,引导用户进行相关操作。", + "demoId": "center" + }, + { + "title": "可拖拽的弹窗", + "content": "

默认弹窗不可拖拽,设置 draggable 属性为 true 后,鼠标移入标题区域单击可拖拽,拖拽事件有 @drag-startdrag-movedrag-end

\n", + "link": "dialog-box/draggable", + "component": " DialogBox 对话框", + "findIntroStr": "模态对话框,在浮层中显示,引导用户进行相关操作。", + "demoId": "draggable" + }, + { + "title": "全屏弹窗", + "content": "

设置 fullscreen 属性为 true 可显示全屏弹窗,默认弹窗宽度是 500px,此时设置宽度是不生效的。

\n", + "link": "dialog-box/fullscreen", + "component": " DialogBox 对话框", + "findIntroStr": "模态对话框,在浮层中显示,引导用户进行相关操作。", + "demoId": "fullscreen" + }, + { + "title": "弹出与关闭事件", + "content": "

open :对话框打开时触发,opened :对话框打开动画结束时触发,close :对话框关闭时触发,closed :对话框关闭动画结束时触发。

\n", + "link": "dialog-box/open-close-events", + "component": " DialogBox 对话框", + "findIntroStr": "模态对话框,在浮层中显示,引导用户进行相关操作。", + "demoId": "open-close-events" + }, + { + "title": "弹窗表单", + "content": "

通过 default 默认插槽实现嵌套表单以及表单提交的逻辑。

\n

默认关闭弹窗的时候重置表单,设置is-form-reset 为false,则关闭弹窗的时候不重置表格

", + "link": "dialog-box/form-in-dialog", + "component": " DialogBox 对话框", + "findIntroStr": "模态对话框,在浮层中显示,引导用户进行相关操作。", + "demoId": "form-in-dialog" + } +] diff --git a/examples/docs/resources/pc/demo-config/zh-CN/dropdown.json b/examples/docs/resources/pc/demo-config/zh-CN/dropdown.json index a766941d4..161175f8a 100644 --- a/examples/docs/resources/pc/demo-config/zh-CN/dropdown.json +++ b/examples/docs/resources/pc/demo-config/zh-CN/dropdown.json @@ -23,6 +23,14 @@ "findIntroStr": "Dropdown 下拉菜单。", "demoId": "trigger" }, + { + "title": "自定义文本", + "content": "

Dropdown 可以通过title 属性去自定义显示文本

\n", + "link": "dropdown/title", + "component": "Dropdown 下拉菜单", + "findIntroStr": "Dropdown 下拉菜单。", + "demoId": "title" + }, { "title": "菜单隐藏方式", "content": "

下拉菜单默认在点击菜单项后会被隐藏,将 hide-on-click 属性默认为 false 可以关闭此功能。

\n", @@ -70,5 +78,13 @@ "component": "Dropdown 下拉菜单", "findIntroStr": "Dropdown 下拉菜单。", "demoId": "events" + }, + { + "title": "默认插槽", + "content": "

Dropdown 可以通过default 插槽去自定义显示内容

\n", + "link": "dropdown/slot-default", + "component": "Dropdown 下拉菜单", + "findIntroStr": "Dropdown 下拉菜单。", + "demoId": "slot-default" } ] diff --git a/examples/docs/resources/pc/demo-config/zh-CN/fullscreen.json b/examples/docs/resources/pc/demo-config/zh-CN/fullscreen.json index d62a37b3f..43f6bf9b8 100644 --- a/examples/docs/resources/pc/demo-config/zh-CN/fullscreen.json +++ b/examples/docs/resources/pc/demo-config/zh-CN/fullscreen.json @@ -1 +1,18 @@ -[{"title":"组件式使用","content":"详细用法参考如下示例","link":"fullscreen/example-component","component":" Fullscreen 全屏显示","findIntroStr":"Fullscreen 全屏显示","demoId":"example-component"},{"title":"函数式使用","content":"详细用法参考如下示例","link":"fullscreen/example-api","component":" Fullscreen 全屏显示","findIntroStr":"Fullscreen 全屏显示","demoId":"example-api"}] +[ + { + "title": "组件式使用", + "content": "详细用法参考如下示例", + "link": "fullscreen/example-component", + "component": " Fullscreen 全屏显示", + "findIntroStr": "Fullscreen 全屏显示", + "demoId": "example-component" + }, + { + "title": "函数式使用", + "content": "详细用法参考如下示例", + "link": "fullscreen/example-api", + "component": " Fullscreen 全屏显示", + "findIntroStr": "Fullscreen 全屏显示", + "demoId": "example-api" + } +] diff --git a/examples/docs/resources/pc/demo-config/zh-CN/ip-address.json b/examples/docs/resources/pc/demo-config/zh-CN/ip-address.json index 3a70c21bd..3b47fc74a 100644 --- a/examples/docs/resources/pc/demo-config/zh-CN/ip-address.json +++ b/examples/docs/resources/pc/demo-config/zh-CN/ip-address.json @@ -1 +1,98 @@ -[{"title":"IPv4 类型","content":"

可通过 type 属性配置 IPv4 类型,默认是 IPv4

\n","link":"ip-address/ipv4-type","component":" IpAddress 输入框","findIntroStr":"IP 地址输入框与 HTML 原生的 IpAddress 组件保持一致,同时提供数据绑定功能。","demoId":"ipv4-type"},{"title":"IPv6 类型","content":"

可通过 type属性配置为 IPv6 类型,默认是 IPv4

\n","link":"ip-address/ipv6-type","component":" IpAddress 输入框","findIntroStr":"IP 地址输入框与 HTML 原生的 IpAddress 组件保持一致,同时提供数据绑定功能。","demoId":"ipv6-type"},{"title":"文本只读","content":"

通过 readonly 属性设置文本的只读行,默认为 false 。

\n","link":"ip-address/readonly","component":" IpAddress 输入框","findIntroStr":"IP 地址输入框与 HTML 原生的 IpAddress 组件保持一致,同时提供数据绑定功能。","demoId":"readonly"},{"title":"禁用","content":"

通过 disabled 属性设置文本是否禁用,默认为 false。

\n","link":"ip-address/disabled","component":" IpAddress 输入框","findIntroStr":"IP 地址输入框与 HTML 原生的 IpAddress 组件保持一致,同时提供数据绑定功能。","demoId":"disabled"},{"title":"输入框大小","content":"

可设置为mediumsmallmini

\n","link":"ip-address/size","component":" IpAddress 输入框","findIntroStr":"IP 地址输入框与 HTML 原生的 IpAddress 组件保持一致,同时提供数据绑定功能。","demoId":"size"},{"title":"属性设置分隔符","content":"

可通过 delimiter 属性设置分隔符(图标类)。

\n","link":"ip-address/delimiter","component":" IpAddress 输入框","findIntroStr":"IP 地址输入框与 HTML 原生的 IpAddress 组件保持一致,同时提供数据绑定功能。","demoId":"delimiter"},{"title":"默认插槽","content":"

可通过默认插槽设置分隔符。

\n","link":"ip-address/slots","component":" IpAddress 输入框","findIntroStr":"IP 地址输入框与 HTML 原生的 IpAddress 组件保持一致,同时提供数据绑定功能。","demoId":"slots"},{"title":"focus 事件","content":"

文本框获取焦点时触发 focus 事件。

\n","link":"ip-address/focus","component":" IpAddress 输入框","findIntroStr":"IP 地址输入框与 HTML 原生的 IpAddress 组件保持一致,同时提供数据绑定功能。","demoId":"focus"},{"title":"blur 事件","content":"

文本框失去焦点时触发 blur 事件。

\n","link":"ip-address/blur","component":" IpAddress 输入框","findIntroStr":"IP 地址输入框与 HTML 原生的 IpAddress 组件保持一致,同时提供数据绑定功能。","demoId":"blur"},{"title":"change 事件","content":"

文本框内容改变后触发 change 事件。

\n","link":"ip-address/change","component":" IpAddress 输入框","findIntroStr":"IP 地址输入框与 HTML 原生的 IpAddress 组件保持一致,同时提供数据绑定功能。","demoId":"change"},{"title":"select 事件","content":"

文本框内容选中时触发 select 事件。

\n","link":"ip-address/select","component":" IpAddress 输入框","findIntroStr":"IP 地址输入框与 HTML 原生的 IpAddress 组件保持一致,同时提供数据绑定功能。","demoId":"select"}] +[ + { + "title": "IPv4 类型", + "content": "

可通过 type 属性配置 IPv4 类型,默认是 IPv4

\n", + "link": "ip-address/ipv4-type", + "component": " IpAddress 输入框", + "findIntroStr": "IP 地址输入框与 HTML 原生的 IpAddress 组件保持一致,同时提供数据绑定功能。", + "demoId": "ipv4-type" + }, + { + "title": "IPv6 类型", + "content": "

可通过 type属性配置为 IPv6 类型,默认是 IPv4

\n", + "link": "ip-address/ipv6-type", + "component": " IpAddress 输入框", + "findIntroStr": "IP 地址输入框与 HTML 原生的 IpAddress 组件保持一致,同时提供数据绑定功能。", + "demoId": "ipv6-type" + }, + { + "title": "文本只读", + "content": "

通过 readonly 属性设置文本的只读行,默认为 false 。

\n", + "link": "ip-address/readonly", + "component": " IpAddress 输入框", + "findIntroStr": "IP 地址输入框与 HTML 原生的 IpAddress 组件保持一致,同时提供数据绑定功能。", + "demoId": "readonly" + }, + { + "title": "禁用", + "content": "

通过 disabled 属性设置文本是否禁用,默认为 false。

\n", + "link": "ip-address/disabled", + "component": " IpAddress 输入框", + "findIntroStr": "IP 地址输入框与 HTML 原生的 IpAddress 组件保持一致,同时提供数据绑定功能。", + "demoId": "disabled" + }, + { + "title": "输入框大小", + "content": "

可设置为mediumsmallmini

\n", + "link": "ip-address/size", + "component": " IpAddress 输入框", + "findIntroStr": "IP 地址输入框与 HTML 原生的 IpAddress 组件保持一致,同时提供数据绑定功能。", + "demoId": "size" + }, + { + "title": "属性设置分隔符", + "content": "

可通过 delimiter 属性设置分隔符(图标类)。

\n", + "link": "ip-address/delimiter", + "component": " IpAddress 输入框", + "findIntroStr": "IP 地址输入框与 HTML 原生的 IpAddress 组件保持一致,同时提供数据绑定功能。", + "demoId": "delimiter" + }, + { + "title": "默认插槽", + "content": "

可通过默认插槽设置分隔符。

\n", + "link": "ip-address/slots", + "component": " IpAddress 输入框", + "findIntroStr": "IP 地址输入框与 HTML 原生的 IpAddress 组件保持一致,同时提供数据绑定功能。", + "demoId": "slots" + }, + { + "title": "focus 事件", + "content": "

文本框获取焦点时触发 focus 事件。

\n", + "link": "ip-address/focus", + "component": " IpAddress 输入框", + "findIntroStr": "IP 地址输入框与 HTML 原生的 IpAddress 组件保持一致,同时提供数据绑定功能。", + "demoId": "focus" + }, + { + "title": "blur 事件", + "content": "

文本框失去焦点时触发 blur 事件。

\n", + "link": "ip-address/blur", + "component": " IpAddress 输入框", + "findIntroStr": "IP 地址输入框与 HTML 原生的 IpAddress 组件保持一致,同时提供数据绑定功能。", + "demoId": "blur" + }, + { + "title": "change 事件", + "content": "

文本框内容改变后触发 change 事件。

\n", + "link": "ip-address/change", + "component": " IpAddress 输入框", + "findIntroStr": "IP 地址输入框与 HTML 原生的 IpAddress 组件保持一致,同时提供数据绑定功能。", + "demoId": "change" + }, + { + "title": "select 事件", + "content": "

文本框内容选中时触发 select 事件。

\n", + "link": "ip-address/select", + "component": " IpAddress 输入框", + "findIntroStr": "IP 地址输入框与 HTML 原生的 IpAddress 组件保持一致,同时提供数据绑定功能。", + "demoId": "select" + }, + { + "title": "input 事件", + "content": "

文本框输入时触发 input 事件。

\n", + "link": "ip-address/input", + "component": " IpAddress 输入框", + "findIntroStr": "IP 地址输入框与 HTML 原生的 IpAddress 组件保持一致,同时提供数据绑定功能。", + "demoId": "input" + } +] diff --git a/examples/docs/resources/pc/demo-config/zh-CN/modal.json b/examples/docs/resources/pc/demo-config/zh-CN/modal.json index 757513ed4..46a81fb5a 100644 --- a/examples/docs/resources/pc/demo-config/zh-CN/modal.json +++ b/examples/docs/resources/pc/demo-config/zh-CN/modal.json @@ -1 +1,250 @@ -[{"title":"基本用法","content":"

可通过 Modal.alert 方法设置弹出框,通过 Modal.confirm 方法设置确认弹出框。

\n","link":"modal/base","component":" Modal 模态框","findIntroStr":"Modal 模态框","demoId":"base"},{"title":"最大化显示","content":"

可通过 fullscreen 属性设置是否最大化显示。

\n","link":"modal/fullscreen","component":" Modal 模态框","findIntroStr":"Modal 模态框","demoId":"fullscreen"},{"title":"按 Esc 键关闭弹出框","content":"

可通过 esc-closable 属性设置是否允许按 Esc 键关闭窗口,默认为 false

\n","link":"modal/esc-closable","component":" Modal 模态框","findIntroStr":"Modal 模态框","demoId":"esc-closable"},{"title":"自动关闭延时","content":"

可通过 duration 属性设置自动关闭的延迟时间,只对 type=message 有效。

\n","link":"modal/duration","component":" Modal 模态框","findIntroStr":"Modal 模态框","demoId":"duration"},{"title":"防止重复提示","content":"

如果不想窗口重复点击,可以设置唯一的 id 防止重复提示,只对 type=message 有效。

\n","link":"modal/id","component":" Modal 模态框","findIntroStr":"Modal 模态框","demoId":"id"},{"title":"锁住滚动条","content":"

可通过 lock-scroll 属性设置是否锁住滚动条,不允许页面滚动。

\n","link":"modal/lock-scroll","component":" Modal 模态框","findIntroStr":"Modal 模态框","demoId":"lock-scroll"},{"title":"锁住页面","content":"

可通过 lock-view 属性设置是否锁住页面,不允许窗口之外的任何操作。

\n","link":"modal/lock-view","component":" Modal 模态框","findIntroStr":"Modal 模态框","demoId":"lock-view"},{"title":"显示遮罩层","content":"

可通过 mask 属性设置是否显示遮罩层,默认为 true

\n","link":"modal/lock-view","component":" Modal 模态框","findIntroStr":"Modal 模态框","demoId":"lock-view1"},{"title":"点击遮罩层关闭窗口","content":"

可通过 mask-closable 属性设置是否允许点击遮罩层关闭窗口。

\n","link":"modal/mask-closable","component":" Modal 模态框","findIntroStr":"Modal 模态框","demoId":"mask-closable"},{"title":"自定义内容","content":"

可通过 message 属性设置窗口的内容。

\n","link":"modal/message","component":" Modal 模态框","findIntroStr":"Modal 模态框","demoId":"message"},{"title":"调整窗口大小","content":"

可通过和widthheight设置窗口的宽高,而通过 resize 设置是否允许拖动调整窗口大小。

\n","link":"modal/resize","component":" Modal 模态框","findIntroStr":"Modal 模态框","demoId":"resize"},{"title":"调整窗口大小后窗口显示的最小宽度","content":"

配置 resize 可拖拽属性为 true后,可通过 min-width 属性设置拖拽后窗口的最小宽度。

\n","link":"modal/min-width","component":" Modal 模态框","findIntroStr":"Modal 模态框","demoId":"min-width"},{"title":"调整窗口大小后窗口显示的最小高度","content":"

配置 resize 可拖拽属性为 true后,可通过 min-height 属性设置拖拽后窗口的最小高度。

\n","link":"modal/min-height","component":" Modal 模态框","findIntroStr":"Modal 模态框","demoId":"min-height"},{"title":"不显示底部","content":"

可通过 showFooter 属性设置是否显示底部,默认为 true

\n","link":"modal/showFooter","component":" Modal 模态框","findIntroStr":"Modal 模态框","demoId":"showFooter"},{"title":"不显示头部","content":"

可通过 showHeader 属性设置是否显示头部,默认为 true

\n","link":"modal/showHeader","component":" Modal 模态框","findIntroStr":"Modal 模态框","demoId":"showHeader"},{"title":"消息状态","content":"

可通过 status 属性设置消息状态,可选值有 info | success | warning | error | loading

\n","link":"modal/status","component":" Modal 模态框","findIntroStr":"Modal 模态框","demoId":"status"},{"title":"标题","content":"

可通过 title 属性设置窗口的标题。

\n","link":"modal/title","component":" Modal 模态框","findIntroStr":"Modal 模态框","demoId":"title"},{"title":"距离顶部的位置","content":"

可通过 top 属性设置消息距离顶部的位置,只对 type=message 有效。

\n","link":"modal/top","component":" Modal 模态框","findIntroStr":"Modal 模态框","demoId":"top"},{"title":"窗口类型","content":"

可通过 type 属性设置窗口类型,可选值 alert | confirm | message

\n","link":"modal/type","component":" Modal 模态框","findIntroStr":"Modal 模态框","demoId":"type"},{"title":"绑定值","content":"

可通过 value/v-model 属性绑定值。

\n","link":"modal/value","component":" Modal 模态框","findIntroStr":"Modal 模态框","demoId":"value"},{"title":"自定义堆叠顺序","content":"

可通过 zIndex 属性设置自定义堆叠顺序(对于某些特殊场景,比如被遮挡时可能会用到)。

\n","link":"modal/zIndex","component":" Modal 模态框","findIntroStr":"Modal 模态框","demoId":"zIndex"},{"title":"取消按钮事件","content":"

点击取消按钮时触发 cancel 事件。

\n","link":"modal/cancel-event","component":" Modal 模态框","findIntroStr":"Modal 模态框","demoId":"cancel-event"},{"title":"关闭按钮事件","content":"

点击关闭按钮时会触发 close 事件。

\n","link":"modal/close-event","component":" Modal 模态框","findIntroStr":"Modal 模态框","demoId":"close-event"},{"title":"确定按钮事件","content":"

点击确定按钮时会触发 confirm 事件。

\n","link":"modal/confirm-event","component":" Modal 模态框","findIntroStr":"Modal 模态框","demoId":"confirm-event"},{"title":"窗口关闭事件","content":"

窗口关闭时会触发 hide 事件。

\n","link":"modal/hide-event","component":" Modal 模态框","findIntroStr":"Modal 模态框","demoId":"hide-event"},{"title":"窗口显示事件","content":"

在窗口显示时会触发 show 事件。

\n","link":"modal/show-event","component":" Modal 模态框","findIntroStr":"Modal 模态框","demoId":"show-event"},{"title":"窗口缩放事件","content":"

窗口缩放时会触发 zoom 事件。

\n","link":"modal/zoom-event","component":" Modal 模态框","findIntroStr":"Modal 模态框","demoId":"zoom-event"},{"title":"关闭弹窗,是否重置表单数据","content":"

Modal嵌套表单使用时,关闭弹窗时,重置表单数据

\n

设置 is-form-reset 为false,则关闭弹窗是不重置表单

","link":"modal/is-form-reset","component":" Modal 模态框","findIntroStr":"Modal 模态框","demoId":"is-form-reset"},{"title":"默认插槽","content":"

可通过 templete 设置默认插槽。

\n","link":"modal/value","component":" Modal 模态框","findIntroStr":"Modal 模态框","demoId":"value1"},{"title":"底部插槽","content":"

可通过 slot="footer" 设置底部插槽。

\n","link":"modal/footer-slot","component":" Modal 模态框","findIntroStr":"Modal 模态框","demoId":"footer-slot"},{"title":"嵌套 grid","content":"

可通过插槽嵌套 grid

\n","link":"modal/grid","component":" Modal 模态框","findIntroStr":"Modal 模态框","demoId":"grid"}] +[ + { + "title": "基本用法", + "content": "

可通过 Modal.alert 方法设置弹出框,通过 Modal.confirm 方法设置确认弹出框。函数返回一个 Promise 对象,其中属性 vm 可用来关闭当前模态框

\n", + "link": "modal/base", + "component": " Modal 模态框", + "findIntroStr": "Modal 模态框", + "demoId": "base" + }, + { + "title": "最大化显示", + "content": "

可通过 fullscreen 属性设置是否最大化显示。

\n", + "link": "modal/fullscreen", + "component": " Modal 模态框", + "findIntroStr": "Modal 模态框", + "demoId": "fullscreen" + }, + { + "title": "按 Esc 键关闭弹出框", + "content": "

可通过 esc-closable 属性设置是否允许按 Esc 键关闭窗口,默认为 false

\n", + "link": "modal/esc-closable", + "component": " Modal 模态框", + "findIntroStr": "Modal 模态框", + "demoId": "esc-closable" + }, + { + "title": "自动关闭延时", + "content": "

可通过 duration 属性设置自动关闭的延迟时间,只对 type=message 有效。

\n", + "link": "modal/duration", + "component": " Modal 模态框", + "findIntroStr": "Modal 模态框", + "demoId": "duration" + }, + { + "title": "防止重复提示", + "content": "

如果不想窗口重复点击,可以设置唯一的 id 防止重复提示,只对 type=message 有效。

\n", + "link": "modal/id", + "component": " Modal 模态框", + "findIntroStr": "Modal 模态框", + "demoId": "id" + }, + { + "title": "锁住滚动条", + "content": "

可通过 lock-scroll 属性设置是否锁住滚动条,不允许页面滚动。

\n", + "link": "modal/lock-scroll", + "component": " Modal 模态框", + "findIntroStr": "Modal 模态框", + "demoId": "lock-scroll" + }, + { + "title": "锁住页面", + "content": "

可通过 lock-view 属性设置是否锁住页面,不允许窗口之外的任何操作。

\n", + "link": "modal/lock-view", + "component": " Modal 模态框", + "findIntroStr": "Modal 模态框", + "demoId": "lock-view" + }, + { + "title": "显示遮罩层", + "content": "

可通过 mask 属性设置是否显示遮罩层,默认为 true

\n", + "link": "modal/lock-view", + "component": " Modal 模态框", + "findIntroStr": "Modal 模态框", + "demoId": "lock-view1" + }, + { + "title": "点击遮罩层关闭窗口", + "content": "

可通过 mask-closable 属性设置是否允许点击遮罩层关闭窗口。

\n", + "link": "modal/mask-closable", + "component": " Modal 模态框", + "findIntroStr": "Modal 模态框", + "demoId": "mask-closable" + }, + { + "title": "自定义内容", + "content": "

可通过 message 属性设置窗口的内容。

\n", + "link": "modal/message", + "component": " Modal 模态框", + "findIntroStr": "Modal 模态框", + "demoId": "message" + }, + { + "title": "调整窗口大小", + "content": "

可通过和widthheight设置窗口的宽高,而通过 resize 设置是否允许拖动调整窗口大小。

\n", + "link": "modal/resize", + "component": " Modal 模态框", + "findIntroStr": "Modal 模态框", + "demoId": "resize" + }, + { + "title": "调整窗口大小后窗口显示的最小宽度", + "content": "

配置 resize 可拖拽属性为 true后,可通过 min-width 属性设置拖拽后窗口的最小宽度。

\n", + "link": "modal/min-width", + "component": " Modal 模态框", + "findIntroStr": "Modal 模态框", + "demoId": "min-width" + }, + { + "title": "调整窗口大小后窗口显示的最小高度", + "content": "

配置 resize 可拖拽属性为 true后,可通过 min-height 属性设置拖拽后窗口的最小高度。

\n", + "link": "modal/min-height", + "component": " Modal 模态框", + "findIntroStr": "Modal 模态框", + "demoId": "min-height" + }, + { + "title": "不显示底部", + "content": "

可通过 showFooter 属性设置是否显示底部,默认为 true

\n", + "link": "modal/showFooter", + "component": " Modal 模态框", + "findIntroStr": "Modal 模态框", + "demoId": "showFooter" + }, + { + "title": "不显示头部", + "content": "

可通过 showHeader 属性设置是否显示头部,默认为 true

\n", + "link": "modal/showHeader", + "component": " Modal 模态框", + "findIntroStr": "Modal 模态框", + "demoId": "showHeader" + }, + { + "title": "消息状态", + "content": "

可通过 status 属性设置消息状态,可选值有 info | success | warning | error | loading

\n", + "link": "modal/status", + "component": " Modal 模态框", + "findIntroStr": "Modal 模态框", + "demoId": "status" + }, + { + "title": "标题", + "content": "

可通过 title 属性设置窗口的标题。

\n", + "link": "modal/title", + "component": " Modal 模态框", + "findIntroStr": "Modal 模态框", + "demoId": "title" + }, + { + "title": "距离顶部的位置", + "content": "

可通过 top 属性设置消息距离顶部的位置,只对 type=message 有效。

\n", + "link": "modal/top", + "component": " Modal 模态框", + "findIntroStr": "Modal 模态框", + "demoId": "top" + }, + { + "title": "窗口类型", + "content": "

可通过 type 属性设置窗口类型,可选值 alert | confirm | message

\n", + "link": "modal/type", + "component": " Modal 模态框", + "findIntroStr": "Modal 模态框", + "demoId": "type" + }, + { + "title": "绑定值", + "content": "

可通过 value/v-model 属性绑定值。

\n", + "link": "modal/value", + "component": " Modal 模态框", + "findIntroStr": "Modal 模态框", + "demoId": "value" + }, + { + "title": "自定义堆叠顺序", + "content": "

可通过 zIndex 属性设置自定义堆叠顺序(对于某些特殊场景,比如被遮挡时可能会用到)。

\n", + "link": "modal/zIndex", + "component": " Modal 模态框", + "findIntroStr": "Modal 模态框", + "demoId": "zIndex" + }, + { + "title": "取消按钮事件", + "content": "

点击取消按钮时触发 cancel 事件。

\n", + "link": "modal/cancel-event", + "component": " Modal 模态框", + "findIntroStr": "Modal 模态框", + "demoId": "cancel-event" + }, + { + "title": "关闭按钮事件", + "content": "

点击关闭按钮时会触发 close 事件。

\n", + "link": "modal/close-event", + "component": " Modal 模态框", + "findIntroStr": "Modal 模态框", + "demoId": "close-event" + }, + { + "title": "确定按钮事件", + "content": "

点击确定按钮时会触发 confirm 事件。

\n", + "link": "modal/confirm-event", + "component": " Modal 模态框", + "findIntroStr": "Modal 模态框", + "demoId": "confirm-event" + }, + { + "title": "窗口关闭事件", + "content": "

窗口关闭时会触发 hide 事件。

\n", + "link": "modal/hide-event", + "component": " Modal 模态框", + "findIntroStr": "Modal 模态框", + "demoId": "hide-event" + }, + { + "title": "窗口显示事件", + "content": "

在窗口显示时会触发 show 事件。

\n", + "link": "modal/show-event", + "component": " Modal 模态框", + "findIntroStr": "Modal 模态框", + "demoId": "show-event" + }, + { + "title": "窗口缩放事件", + "content": "

窗口缩放时会触发 zoom 事件。

\n", + "link": "modal/zoom-event", + "component": " Modal 模态框", + "findIntroStr": "Modal 模态框", + "demoId": "zoom-event" + }, + { + "title": "关闭弹窗,是否重置表单数据", + "content": "

Modal嵌套表单使用时,关闭弹窗时,重置表单数据

\n

设置 is-form-reset 为false,则关闭弹窗是不重置表单

", + "link": "modal/is-form-reset", + "component": " Modal 模态框", + "findIntroStr": "Modal 模态框", + "demoId": "is-form-reset" + }, + { + "title": "默认插槽", + "content": "

可通过 templete 设置默认插槽。

\n", + "link": "modal/value", + "component": " Modal 模态框", + "findIntroStr": "Modal 模态框", + "demoId": "value1" + }, + { + "title": "底部插槽", + "content": "

可通过 slot="footer" 设置底部插槽。

\n", + "link": "modal/footer-slot", + "component": " Modal 模态框", + "findIntroStr": "Modal 模态框", + "demoId": "footer-slot" + }, + { + "title": "嵌套 grid", + "content": "

可通过插槽嵌套 grid

\n", + "link": "modal/grid", + "component": " Modal 模态框", + "findIntroStr": "Modal 模态框", + "demoId": "grid" + } +] diff --git a/examples/docs/resources/pc/demo-config/zh-CN/numeric.json b/examples/docs/resources/pc/demo-config/zh-CN/numeric.json index e72b82d16..20bd1ac2b 100644 --- a/examples/docs/resources/pc/demo-config/zh-CN/numeric.json +++ b/examples/docs/resources/pc/demo-config/zh-CN/numeric.json @@ -1 +1,130 @@ -[{"title":"基本用法","content":"详细用法参考如下示例","link":"numeric/basic-usage","component":" Numeric 计数器","findIntroStr":"Numeric 计数器可用于输入数字,可自定义数值范围,步进大小。支持鼠标键盘增减。","demoId":"basic-usage"},{"title":"可清空特性","content":"

可通过 allow-empty 属性设置计数器内容的可清空特性。默认为 false,表示不可清空。

\n","link":"numeric/allow-empty","component":" Numeric 计数器","findIntroStr":"Numeric 计数器可用于输入数字,可自定义数值范围,步进大小。支持鼠标键盘增减。","demoId":"allow-empty"},{"title":"步长","content":"

可通过 step 属性设置计数器的步长。

\n","link":"numeric/about-step","component":" Numeric 计数器","findIntroStr":"Numeric 计数器可用于输入数字,可自定义数值范围,步进大小。支持鼠标键盘增减。","demoId":"about-step"},{"title":"数值循环","content":"

可通过设置 max 属性设置计数器允许的最大值,通过设置 min 属性设置计数器允许的最小值,通过设置 circulate 属性设置向上到达最大值后从最小值开始,或反过来。

\n","link":"numeric/max-min","component":" Numeric 计数器","findIntroStr":"Numeric 计数器可用于输入数字,可自定义数值范围,步进大小。支持鼠标键盘增减。","demoId":"max-min"},{"title":"尺寸","content":"

可通过 size 属性设置计数器尺寸。可取值 medium / small / mini

\n","link":"numeric/numeric-size","component":" Numeric 计数器","findIntroStr":"Numeric 计数器可用于输入数字,可自定义数值范围,步进大小。支持鼠标键盘增减。","demoId":"numeric-size"},{"title":"控制按钮","content":"

可通过 controls 属性设置计数器是否有控制按钮。

\n","link":"numeric/controls","component":" Numeric 计数器","findIntroStr":"Numeric 计数器可用于输入数字,可自定义数值范围,步进大小。支持鼠标键盘增减。","demoId":"controls"},{"title":"控制按钮显示位置","content":"

可通过 controls-position 属性设置控制按钮显示的位置。

\n","link":"numeric/controls-position","component":" Numeric 计数器","findIntroStr":"Numeric 计数器可用于输入数字,可自定义数值范围,步进大小。支持鼠标键盘增减。","demoId":"controls-position"},{"title":"关联文字","content":"

可通过 label 属性设置输入框关联的 label 文字。

\n","link":"numeric/controls","component":" Numeric 计数器","findIntroStr":"Numeric 计数器可用于输入数字,可自定义数值范围,步进大小。支持鼠标键盘增减。","demoId":"controls1"},{"title":"disabled","content":"通过设置 disabled 控制是否禁用计数器","link":"numeric/dynamic-disabled","component":"Numeric 计数器","findIntroStr":"Numeric 计数器可用于输入数字,可自定义数值范围,步进大小。支持鼠标键盘增减。","demoId":"dynamic-disabled"},{"title":"name","content":"

可通过 name 属性设置原生属性。

\n","link":"numeric/controls","component":" Numeric 计数器","findIntroStr":"Numeric 计数器可用于输入数字,可自定义数值范围,步进大小。支持鼠标键盘增减。","demoId":"controls2"},{"title":"数值精度","content":"

可通过 precision 属性设置计数器的精度值。

\n","link":"numeric/precision","component":" Numeric 计数器","findIntroStr":"Numeric 计数器可用于输入数字,可自定义数值范围,步进大小。支持鼠标键盘增减。","demoId":"precision"},{"title":"鼠标滚轮滚动改变值","content":"

可通过 mouseWheel 属性控制鼠标滚动滑轮是否能改变数值。

\n","link":"numeric/mouse-wheel","component":" Numeric 计数器","findIntroStr":"Numeric 计数器可用于输入数字,可自定义数值范围,步进大小。支持鼠标键盘增减。","demoId":"mouse-wheel"},{"title":"聚焦事件","content":"

输入框获得焦点时触发 focus 事件。

\n","link":"numeric/focus-event","component":" Numeric 计数器","findIntroStr":"Numeric 计数器可用于输入数字,可自定义数值范围,步进大小。支持鼠标键盘增减。","demoId":"focus-event"},{"title":"失焦事件","content":"

输入框失去焦点时触发 blur 事件。

\n","link":"numeric/blur-event","component":" Numeric 计数器","findIntroStr":"Numeric 计数器可用于输入数字,可自定义数值范围,步进大小。支持鼠标键盘增减。","demoId":"blur-event"},{"title":"值改变事件","content":"

输入框值被改变时触发 change 事件。

\n","link":"numeric/change-event","component":" Numeric 计数器","findIntroStr":"Numeric 计数器可用于输入数字,可自定义数值范围,步进大小。支持鼠标键盘增减。","demoId":"change-event"},{"title":"根据商品数量自动计算价格","content":"

根据商品数量自动计算价格。

\n","link":"numeric/calculate-according-to-num-of-goods","component":" Numeric 计数器","findIntroStr":"Numeric 计数器可用于输入数字,可自定义数值范围,步进大小。支持鼠标键盘增减。","demoId":"calculate-according-to-num-of-goods"}] +[ + { + "title": "基本用法", + "content": "详细用法参考如下示例", + "link": "numeric/basic-usage", + "component": " Numeric 计数器", + "findIntroStr": "Numeric 计数器可用于输入数字,可自定义数值范围,步进大小。支持鼠标键盘增减。", + "demoId": "basic-usage" + }, + { + "title": "可清空特性", + "content": "

可通过 allow-empty 属性设置计数器内容的可清空特性。默认为 false,表示不可清空。

\n", + "link": "numeric/allow-empty", + "component": " Numeric 计数器", + "findIntroStr": "Numeric 计数器可用于输入数字,可自定义数值范围,步进大小。支持鼠标键盘增减。", + "demoId": "allow-empty" + }, + { + "title": "步长", + "content": "

可通过 step 属性设置计数器的步长。

\n", + "link": "numeric/about-step", + "component": " Numeric 计数器", + "findIntroStr": "Numeric 计数器可用于输入数字,可自定义数值范围,步进大小。支持鼠标键盘增减。", + "demoId": "about-step" + }, + { + "title": "最值与数值循环", + "content": "

可通过设置 max 属性设置计数器允许的最大值,通过设置 min 属性设置计数器允许的最小值,通过设置 circulate 属性设置向上到达最大值后从最小值开始,或反过来。

\n", + "link": "numeric/max-min", + "component": " Numeric 计数器", + "findIntroStr": "Numeric 计数器可用于输入数字,可自定义数值范围,步进大小。支持鼠标键盘增减。", + "demoId": "max-min" + }, + { + "title": "尺寸", + "content": "

可通过 size 属性设置计数器尺寸。可取值 medium / small / mini

\n", + "link": "numeric/numeric-size", + "component": " Numeric 计数器", + "findIntroStr": "Numeric 计数器可用于输入数字,可自定义数值范围,步进大小。支持鼠标键盘增减。", + "demoId": "numeric-size" + }, + { + "title": "控制按钮", + "content": "

可通过 controls 属性设置计数器是否有控制按钮。

\n", + "link": "numeric/controls", + "component": " Numeric 计数器", + "findIntroStr": "Numeric 计数器可用于输入数字,可自定义数值范围,步进大小。支持鼠标键盘增减。", + "demoId": "controls" + }, + { + "title": "控制按钮显示位置", + "content": "

可通过 controls-position 属性设置控制按钮显示的位置。

\n", + "link": "numeric/controls-position", + "component": " Numeric 计数器", + "findIntroStr": "Numeric 计数器可用于输入数字,可自定义数值范围,步进大小。支持鼠标键盘增减。", + "demoId": "controls-position" + }, + { + "title": "关联文字", + "content": "

可通过 label 属性设置输入框关联的 label 文字。

\n", + "link": "numeric/controls", + "component": " Numeric 计数器", + "findIntroStr": "Numeric 计数器可用于输入数字,可自定义数值范围,步进大小。支持鼠标键盘增减。", + "demoId": "controls1" + }, + { + "title": "disabled", + "content": "通过设置 disabled 控制是否禁用计数器", + "link": "numeric/dynamic-disabled", + "component": "Numeric 计数器", + "findIntroStr": "Numeric 计数器可用于输入数字,可自定义数值范围,步进大小。支持鼠标键盘增减。", + "demoId": "dynamic-disabled" + }, + { + "title": "name", + "content": "

可通过 name 属性设置原生属性。

\n", + "link": "numeric/controls", + "component": " Numeric 计数器", + "findIntroStr": "Numeric 计数器可用于输入数字,可自定义数值范围,步进大小。支持鼠标键盘增减。", + "demoId": "controls2" + }, + { + "title": "数值精度", + "content": "

可通过 precision 属性设置计数器的精度值。

\n", + "link": "numeric/precision", + "component": " Numeric 计数器", + "findIntroStr": "Numeric 计数器可用于输入数字,可自定义数值范围,步进大小。支持鼠标键盘增减。", + "demoId": "precision" + }, + { + "title": "鼠标滚轮滚动改变值", + "content": "

可通过 mouseWheel 属性控制鼠标滚动滑轮是否能改变数值。

\n", + "link": "numeric/mouse-wheel", + "component": " Numeric 计数器", + "findIntroStr": "Numeric 计数器可用于输入数字,可自定义数值范围,步进大小。支持鼠标键盘增减。", + "demoId": "mouse-wheel" + }, + { + "title": "聚焦事件", + "content": "

输入框获得焦点时触发 focus 事件。

\n", + "link": "numeric/focus-event", + "component": " Numeric 计数器", + "findIntroStr": "Numeric 计数器可用于输入数字,可自定义数值范围,步进大小。支持鼠标键盘增减。", + "demoId": "focus-event" + }, + { + "title": "失焦事件", + "content": "

输入框失去焦点时触发 blur 事件。

\n", + "link": "numeric/blur-event", + "component": " Numeric 计数器", + "findIntroStr": "Numeric 计数器可用于输入数字,可自定义数值范围,步进大小。支持鼠标键盘增减。", + "demoId": "blur-event" + }, + { + "title": "值改变事件", + "content": "

输入框值被改变时触发 change 事件。

\n", + "link": "numeric/change-event", + "component": " Numeric 计数器", + "findIntroStr": "Numeric 计数器可用于输入数字,可自定义数值范围,步进大小。支持鼠标键盘增减。", + "demoId": "change-event" + }, + { + "title": "根据商品数量自动计算价格", + "content": "

根据商品数量自动计算价格。

\n", + "link": "numeric/calculate-according-to-num-of-goods", + "component": " Numeric 计数器", + "findIntroStr": "Numeric 计数器可用于输入数字,可自定义数值范围,步进大小。支持鼠标键盘增减。", + "demoId": "calculate-according-to-num-of-goods" + } +] \ No newline at end of file diff --git a/examples/docs/resources/pc/demo-config/zh-CN/pop-upload.json b/examples/docs/resources/pc/demo-config/zh-CN/pop-upload.json index bcfd03bce..6319e31fa 100644 --- a/examples/docs/resources/pc/demo-config/zh-CN/pop-upload.json +++ b/examples/docs/resources/pc/demo-config/zh-CN/pop-upload.json @@ -1 +1,122 @@ -[{"title":"基本用法","content":"

通过 action 属性设置上传的服务接口。

\n","link":"pop-upload/basic-usage","component":" PopUpload 弹出框上传","findIntroStr":"点击所设置的元素,弹出上传对话框。","demoId":"basic-usage"},{"title":"自定义请求头","content":"

通过 headers 属性自定义上传请求头信息。

\n","link":"pop-upload/custom-request-headers","component":" PopUpload 弹出框上传","findIntroStr":"点击所设置的元素,弹出上传对话框。","demoId":"custom-request-headers"},{"title":"上传时附带的额外参数","content":"

通过 data 属性自定义上传时附带的额外参数。

\n","link":"pop-upload/data","component":" PopUpload 弹出框上传","findIntroStr":"点击所设置的元素,弹出上传对话框。","demoId":"data"},{"title":"设置组件大小","content":"

可设置为:mediumsmallmini\n通过 disabled 属性设置是否禁用,默认值为 false 。

\n","link":"pop-upload/size","component":" PopUpload 弹出框上传","findIntroStr":"点击所设置的元素,弹出上传对话框。","demoId":"size"},{"title":"覆盖默认请求","content":"

通过配置 http-request 覆盖默认的上传行为,可以自定义上传的实现

\n","link":"pop-upload/http-request","component":" PopUpload 弹出框上传","findIntroStr":"点击所设置的元素,弹出上传对话框。","demoId":"http-request"},{"title":"上传的文件字段名","content":"

通过 upload-name 属性设置上传的文件字段名,默认值为 file 。

\n","link":"pop-upload/upload-name","component":" PopUpload 弹出框上传","findIntroStr":"点击所设置的元素,弹出上传对话框。","demoId":"upload-name1"},{"title":"发送 cookie 凭证信息","content":"详细用法参考如下示例","link":"pop-upload/upload-name","component":" PopUpload 弹出框上传","findIntroStr":"点击所设置的元素,弹出上传对话框。","demoId":"upload-name"},{"title":"文件上传弹框中取消按钮的文本","content":"

通过 cancel-button-text 属性指定取消按钮的文本内容

\n","link":"pop-upload/fill-button-text","component":" PopUpload 弹出框上传","findIntroStr":"点击所设置的元素,弹出上传对话框。","demoId":"fill-button-text1"},{"title":"文件上传弹框中提交按钮的文本","content":"详细用法参考如下示例","link":"pop-upload/fill-button-text","component":" PopUpload 弹出框上传","findIntroStr":"点击所设置的元素,弹出上传对话框。","demoId":"fill-button-text2"},{"title":"打开弹出框的按钮的文本","content":"详细用法参考如下示例","link":"pop-upload/fill-button-text","component":" PopUpload 弹出框上传","findIntroStr":"点击所设置的元素,弹出上传对话框。","demoId":"fill-button-text4"},{"title":"最大上传文件数","content":"

通过 limit 属性可以指定最大上传的文件数量,配置 multiple 属性后可同时选择多个文件。

\n","link":"pop-upload/file-limit","component":" PopUpload 弹出框上传","findIntroStr":"点击所设置的元素,弹出上传对话框。","demoId":"file-limit"},{"title":"可上传文件类型","content":"

通过 accept 属性可以对选择文件时的文件类型进行控制,而 upload-file-type 属性可以指定在上传时进行校验的文件类型。

\n","link":"pop-upload/file-type","component":" PopUpload 弹出框上传","findIntroStr":"点击所设置的元素,弹出上传对话框。","demoId":"file-type"},{"title":"可上传文件大小","content":"

通过 max-upload-file-size 属性指定可上传文件的大小。

\n","link":"pop-upload/max-upload-file-size","component":" PopUpload 弹出框上传","findIntroStr":"点击所设置的元素,弹出上传对话框。","demoId":"max-upload-file-size"},{"title":"阻止删除文件","content":"

:before-remove(移除文件前回调事件),方法里面return true/false,表示是否可以删除

\n","link":"pop-upload/prevent-delete-file","component":" PopUpload 弹出框上传","findIntroStr":"点击所设置的元素,弹出上传对话框。","demoId":"prevent-delete-file"},{"title":"阻止上传文件","content":"

:before-upload 上传文件之前的钩子,参数为上传的文件,若返回 false 或者返回 Promise 且被 reject,则停止上传

\n","link":"pop-upload/before-upload","component":" PopUpload 弹出框上传","findIntroStr":"点击所设置的元素,弹出上传对话框。","demoId":"before-upload"}] +[ + { + "title": "基本用法", + "content": "

通过 action 属性设置上传的服务接口。

\n", + "link": "pop-upload/basic-usage", + "component": " PopUpload 弹出框上传", + "findIntroStr": "点击所设置的元素,弹出上传对话框。", + "demoId": "basic-usage" + }, + { + "title": "自定义请求头", + "content": "

通过 headers 属性自定义上传请求头信息。

\n", + "link": "pop-upload/custom-request-headers", + "component": " PopUpload 弹出框上传", + "findIntroStr": "点击所设置的元素,弹出上传对话框。", + "demoId": "custom-request-headers" + }, + { + "title": "上传时附带的额外参数", + "content": "

通过 data 属性自定义上传时附带的额外参数。

\n", + "link": "pop-upload/data", + "component": " PopUpload 弹出框上传", + "findIntroStr": "点击所设置的元素,弹出上传对话框。", + "demoId": "data" + }, + { + "title": "设置组件大小", + "content": "

可设置为:mediumsmallmini\n通过 disabled 属性设置是否禁用,默认值为 false 。

\n", + "link": "pop-upload/size", + "component": " PopUpload 弹出框上传", + "findIntroStr": "点击所设置的元素,弹出上传对话框。", + "demoId": "size" + }, + { + "title": "覆盖默认请求", + "content": "

通过配置 http-request 覆盖默认的上传行为,可以自定义上传的实现

\n", + "link": "pop-upload/http-request", + "component": " PopUpload 弹出框上传", + "findIntroStr": "点击所设置的元素,弹出上传对话框。", + "demoId": "http-request" + }, + { + "title": "上传的文件字段名", + "content": "

通过 upload-name 属性设置上传的文件字段名,默认值为 file 。

\n", + "link": "pop-upload/upload-name", + "component": " PopUpload 弹出框上传", + "findIntroStr": "点击所设置的元素,弹出上传对话框。", + "demoId": "upload-name1" + }, + { + "title": "发送 cookie 凭证信息", + "content": "详细用法参考如下示例", + "link": "pop-upload/upload-name", + "component": " PopUpload 弹出框上传", + "findIntroStr": "点击所设置的元素,弹出上传对话框。", + "demoId": "upload-name" + }, + { + "title": "文件上传弹框中取消按钮的文本", + "content": "

通过 cancel-button-text 属性指定取消按钮的文本内容

\n", + "link": "pop-upload/fill-button-text", + "component": " PopUpload 弹出框上传", + "findIntroStr": "点击所设置的元素,弹出上传对话框。", + "demoId": "fill-button-text1" + }, + { + "title": "文件上传弹框中提交按钮的文本", + "content": "详细用法参考如下示例", + "link": "pop-upload/fill-button-text", + "component": " PopUpload 弹出框上传", + "findIntroStr": "点击所设置的元素,弹出上传对话框。", + "demoId": "fill-button-text2" + }, + { + "title": "打开弹出框的按钮的文本", + "content": "详细用法参考如下示例", + "link": "pop-upload/fill-button-text", + "component": " PopUpload 弹出框上传", + "findIntroStr": "点击所设置的元素,弹出上传对话框。", + "demoId": "fill-button-text4" + }, + { + "title": "最大上传文件数", + "content": "

通过 limit 属性可以指定最大上传的文件数量,配置 multiple 属性后可同时选择多个文件。

\n", + "link": "pop-upload/file-limit", + "component": " PopUpload 弹出框上传", + "findIntroStr": "点击所设置的元素,弹出上传对话框。", + "demoId": "file-limit" + }, + { + "title": "可上传文件类型", + "content": "

通过 accept 属性可以对选择文件时的文件类型进行控制,而 upload-file-type 属性可以指定在上传时进行校验的文件类型。

\n", + "link": "pop-upload/file-type", + "component": " PopUpload 弹出框上传", + "findIntroStr": "点击所设置的元素,弹出上传对话框。", + "demoId": "file-type" + }, + { + "title": "可上传文件大小", + "content": "

通过 max-upload-file-size 属性指定可上传文件的大小。

\n", + "link": "pop-upload/max-upload-file-size", + "component": " PopUpload 弹出框上传", + "findIntroStr": "点击所设置的元素,弹出上传对话框。", + "demoId": "max-upload-file-size" + }, + { + "title": "阻止删除文件", + "content": "

:before-remove(移除文件前回调事件),方法里面return true/false,表示是否可以删除

\n", + "link": "pop-upload/prevent-delete-file", + "component": " PopUpload 弹出框上传", + "findIntroStr": "点击所设置的元素,弹出上传对话框。", + "demoId": "prevent-delete-file" + }, + { + "title": "阻止上传文件", + "content": "

:before-upload 上传文件之前的钩子,参数为上传的文件,若返回 false 或者返回 Promise 且被 reject,则停止上传

\n", + "link": "pop-upload/before-upload", + "component": " PopUpload 弹出框上传", + "findIntroStr": "点击所设置的元素,弹出上传对话框。", + "demoId": "before-upload" + } +] diff --git a/examples/docs/resources/pc/demo-config/zh-CN/popover.json b/examples/docs/resources/pc/demo-config/zh-CN/popover.json index d61972397..11e9efffe 100644 --- a/examples/docs/resources/pc/demo-config/zh-CN/popover.json +++ b/examples/docs/resources/pc/demo-config/zh-CN/popover.json @@ -17,7 +17,7 @@ }, { "title": "箭头偏移", - "content": "

arrow-offset 设置箭头的偏移量,来改变箭头的位置。

\n", + "content": "

arrow-offset 设置箭头的在弹窗层上的偏移量。箭头默认至少会保留8px的空间, 以保证箭头不会贴在弹窗层两边。

\n", "link": "popover/arrow-offset", "component": " Popover", "findIntroStr": "Popover可通过对一个触发源操作触发弹出框,支持自定义弹出内容,延迟触发和渐变动画", diff --git a/examples/docs/resources/pc/demo-config/zh-CN/select.json b/examples/docs/resources/pc/demo-config/zh-CN/select.json index 5457d1293..0e61dc4e4 100644 --- a/examples/docs/resources/pc/demo-config/zh-CN/select.json +++ b/examples/docs/resources/pc/demo-config/zh-CN/select.json @@ -311,6 +311,14 @@ "findIntroStr": "Select 选择器是一种通过点击弹出下拉列表展示数据并进行选择的 UI 组件。", "demoId": "is-drop-inherit-width" }, + { + "title": "隐藏下拉", + "content": "

通过 hide-drop 属性设置下拉列表不显示。

\n", + "link": "select/hide-select-input-border", + "component": " Select 选择器", + "findIntroStr": "Select 选择器是一种通过点击弹出下拉列表展示数据并进行选择的 UI 组件。", + "demoId": "hide-select-input-border" + }, { "title": "默认插槽", "content": "

通过 default 默认插槽列表。

\n", @@ -433,7 +441,7 @@ }, { "title": "配置方式", - "content": "

通过设置 cache-op 开启缓存功能并且通过 options 设置下来选项。

\n", + "content": "

通过设置 cache-op 开启缓存功能并且通过 options 设置下拉选项。

\n", "link": "select/cache-usage", "component": " Select 选择器", "findIntroStr": "Select 选择器是一种通过点击弹出下拉列表展示数据并进行选择的 UI 组件。", diff --git a/examples/docs/resources/pc/demo-config/zh-CN/time-picker.json b/examples/docs/resources/pc/demo-config/zh-CN/time-picker.json index b76f53e1d..d0a467f01 100644 --- a/examples/docs/resources/pc/demo-config/zh-CN/time-picker.json +++ b/examples/docs/resources/pc/demo-config/zh-CN/time-picker.json @@ -10,10 +10,10 @@ { "title": "选择范围", "content": "

picker-options 设置时间选择范围

\n", - "link": "time-picker/basic-usage", + "link": "time-picker/picker-options", "component": " TimePicker 时间选择器", "findIntroStr": "用于设置/选择日期,包括年月/年月日/年月日时分/年月日时分秒日期格式。", - "demoId": "basic-usage1" + "demoId": "picker-options" }, { "title": "箭头选择", @@ -135,6 +135,14 @@ "findIntroStr": "用于设置/选择日期,包括年月/年月日/年月日时分/年月日时分秒日期格式。", "demoId": "editable" }, + { + "title": "禁用状态", + "content": "

通过设置 disabled 为 true 后,禁用时间输入框。

\n", + "link": "time-picker/disabled", + "component": " TimePicker 时间选择器", + "findIntroStr": "用于设置/选择日期,包括年月/年月日/年月日时分/年月日时分秒日期格式。", + "demoId": "disabled" + }, { "title": "事件", "content": "

当聚焦和失焦时会触发 focus 和 bulr 事件,当确定选值时会触发 change 事件

\n", diff --git a/examples/docs/resources/pc/demo-config/zh-CN/transfer.json b/examples/docs/resources/pc/demo-config/zh-CN/transfer.json index 46ac34dc6..9e7f48e82 100644 --- a/examples/docs/resources/pc/demo-config/zh-CN/transfer.json +++ b/examples/docs/resources/pc/demo-config/zh-CN/transfer.json @@ -1 +1,162 @@ -[{"title":"基本用法","content":"

通过 value 属性进行双向绑定,其指定的值为默认选择的值,将展示在右侧列表。\n\ndata 属性提供数据源,其是一个对象数组,对象中默认字段有 key、label、disabled 。

\n","link":"transfer/basic-usage","component":" Transfer 穿梭框","findIntroStr":"穿梭框,提供表格数据的双向选择。","demoId":"basic-usage"},{"title":"数据源","content":"

可请求服务获取数据,再将数据赋予 data

\n","link":"transfer/data-source","component":" Transfer 穿梭框","findIntroStr":"穿梭框,提供表格数据的双向选择。","demoId":"data-source"},{"title":"展示全部移动按钮","content":"

可通过 show-all-btn 属性设置展示全部移动按钮。

\n","link":"transfer/show-all-btn","component":" Transfer 穿梭框","findIntroStr":"穿梭框,提供表格数据的双向选择。","demoId":"show-all-btn"},{"title":"自定义列表标题","content":"

通过 titles 属性可对左右列表的标题进行自定义。

\n","link":"transfer/custom-transfer-titles","component":" Transfer 穿梭框","findIntroStr":"穿梭框,提供表格数据的双向选择。","demoId":"custom-transfer-titles"},{"title":"自定义按钮文案","content":"

通过 button-texts 属性自定义左右穿梭的按钮文本。

\n","link":"transfer/custom-button-texts","component":" Transfer 穿梭框","findIntroStr":"穿梭框,提供表格数据的双向选择。","demoId":"custom-button-texts"},{"title":"搜索框占位符","content":"

通过 filter-placeholder 属性自定义搜索框占位符。

\n","link":"transfer/filter-placeholder","component":" Transfer 穿梭框","findIntroStr":"穿梭框,提供表格数据的双向选择。","demoId":"filter-placeholder"},{"title":"自定义搜索方法","content":"

提供 filter-method 钩子函数,可自定义搜索的方法。

\n","link":"transfer/custom-filter-method","component":" Transfer 穿梭框","findIntroStr":"穿梭框,提供表格数据的双向选择。","demoId":"custom-filter-method"},{"title":"默认勾选项","content":"

通过 left-default-checkedright-default-checked 属性分别指定左右侧列表默认的勾选数据。

\n","link":"transfer/default-checked","component":" Transfer 穿梭框","findIntroStr":"穿梭框,提供表格数据的双向选择。","demoId":"default-checked"},{"title":"自定义数据项渲染","content":"

使用 render-content 自定义数据项

\n","link":"transfer/custom-render-content","component":" Transfer 穿梭框","findIntroStr":"穿梭框,提供表格数据的双向选择。","demoId":"custom-render-content"},{"title":"列表顶部勾选状态文案","content":"

指定 format 属性后,勾选数据时,左右侧列表顶部将展示已勾选数据和所有数据的比值。

\n","link":"transfer/checked-format-text","component":" Transfer 穿梭框","findIntroStr":"穿梭框,提供表格数据的双向选择。","demoId":"checked-format-text"},{"title":"可搜索","content":"

通过 filterable 属性开启左右侧列表的搜索功能。

\n","link":"transfer/filterable","component":" Transfer 穿梭框","findIntroStr":"穿梭框,提供表格数据的双向选择。","demoId":"filterable"},{"title":"数据源的字段别名","content":"

当数据对象中的字段和默认不一致时,可通过 props 属性进行映射。

\n","link":"transfer/props-of-data-source","component":" Transfer 穿梭框","findIntroStr":"穿梭框,提供表格数据的双向选择。","demoId":"props-of-data-source"},{"title":"右侧排序策略","content":"

通过 target-order 属性设置右侧列表元素的排序策略,有 original、push、unshift 三个选项,默认为 original 。

\n

排序策略

\n

若为 original,则保持与数据源相同的顺序\n若为 push,则新加入的元素排在最后\n若为 unshift,则新加入的元素排在最前

\n
\n","link":"transfer/target-order","component":" Transfer 穿梭框","findIntroStr":"穿梭框,提供表格数据的双向选择。","demoId":"target-order"},{"title":"左右拖拽","content":"

使用拖拽功能时请先安装 sortablejs 插件

\n
\n

通过 drop-config 属性配置 sortablejs 插件进行左右拖拽穿梭。

\n","link":"transfer/drop-config","component":" Transfer 穿梭框","findIntroStr":"穿梭框,提供表格数据的双向选择。","demoId":"drop-config"},{"title":"穿梭框事件","content":"

主要有 changeleft-check-changeright-check-change 三个事件。

\n

事件说明

\n

change:右侧列表元素变化时触发\nleft-check-change:左侧列表元素被用户选中 / 取消选中时触发\nright-check-change:右侧列表元素被用户选中 / 取消选中时触发

\n
\n","link":"transfer/transfer-events","component":" Transfer 穿梭框","findIntroStr":"穿梭框,提供表格数据的双向选择。","demoId":"transfer-events"},{"title":"手动清空搜索框","content":"

调用 clearQuery() 方法可清空左右侧列表的搜索框,参数为 left 或者 right 。

\n","link":"transfer/manual-clear-query","component":" Transfer 穿梭框","findIntroStr":"穿梭框,提供表格数据的双向选择。","demoId":"manual-clear-query"},{"title":"自定义列表底部","content":"

通过 left-footerright-footer 插槽可分别对左右列表底部进行自定义。

\n","link":"transfer/custom-footer","component":" Transfer 穿梭框","findIntroStr":"穿梭框,提供表格数据的双向选择。","demoId":"custom-footer"},{"title":"面板插槽","content":"

可通过 left-panelright-panel 自定义左、右侧面板内容;通过 button 自定义穿梭按钮

\n","link":"transfer/panel-slot","component":" Transfer 穿梭框","findIntroStr":"穿梭框,提供表格数据的双向选择。","demoId":"panel-slot"},{"title":"嵌套表格","content":"

render 属性里的 plugin 设置为 Table 时指定穿梭框渲染成表格,具体配置可参考 grid 组件的配置。

\n","link":"transfer/nested-table","component":" Transfer 穿梭框","findIntroStr":"穿梭框,提供表格数据的双向选择。","demoId":"nested-table"},{"title":"嵌套树","content":"

render 属性里的 plugin 设置为 Tree 时指定穿梭框渲染成树,通过 treeConfig 属性配置树相关的配置(具体配置可参考 tree 组件的配置)。

\n","link":"transfer/nested-tree","component":" Transfer 穿梭框","findIntroStr":"穿梭框,提供表格数据的双向选择。","demoId":"nested-tree"}] +[ + { + "title": "基本用法", + "content": "

通过 value 属性进行双向绑定,其指定的值为默认选择的值,将展示在右侧列表。\n\ndata 属性提供数据源,其是一个对象数组,对象中默认字段有 key、label、disabled 。

\n", + "link": "transfer/basic-usage", + "component": " Transfer 穿梭框", + "findIntroStr": "穿梭框,提供表格数据的双向选择。", + "demoId": "basic-usage" + }, + { + "title": "数据源", + "content": "

可请求服务获取数据,再将数据赋予 data

\n", + "link": "transfer/data-source", + "component": " Transfer 穿梭框", + "findIntroStr": "穿梭框,提供表格数据的双向选择。", + "demoId": "data-source" + }, + { + "title": "展示全部移动按钮", + "content": "

可通过 show-all-btn 属性设置展示全部移动按钮。

\n", + "link": "transfer/show-all-btn", + "component": " Transfer 穿梭框", + "findIntroStr": "穿梭框,提供表格数据的双向选择。", + "demoId": "show-all-btn" + }, + { + "title": "自定义列表标题", + "content": "

通过 titles 属性可对左右列表的标题进行自定义。

\n", + "link": "transfer/custom-transfer-titles", + "component": " Transfer 穿梭框", + "findIntroStr": "穿梭框,提供表格数据的双向选择。", + "demoId": "custom-transfer-titles" + }, + { + "title": "自定义按钮文案", + "content": "

通过 button-texts 属性自定义左右穿梭的按钮文本。

\n", + "link": "transfer/custom-button-texts", + "component": " Transfer 穿梭框", + "findIntroStr": "穿梭框,提供表格数据的双向选择。", + "demoId": "custom-button-texts" + }, + { + "title": "搜索框占位符", + "content": "

通过 filter-placeholder 属性自定义搜索框占位符。

\n", + "link": "transfer/filter-placeholder", + "component": " Transfer 穿梭框", + "findIntroStr": "穿梭框,提供表格数据的双向选择。", + "demoId": "filter-placeholder" + }, + { + "title": "自定义搜索方法", + "content": "

提供 filter-method 钩子函数,可自定义搜索的方法。

\n", + "link": "transfer/custom-filter-method", + "component": " Transfer 穿梭框", + "findIntroStr": "穿梭框,提供表格数据的双向选择。", + "demoId": "custom-filter-method" + }, + { + "title": "默认勾选项", + "content": "

通过 left-default-checkedright-default-checked 属性分别指定左右侧列表默认的勾选数据。

\n", + "link": "transfer/default-checked", + "component": " Transfer 穿梭框", + "findIntroStr": "穿梭框,提供表格数据的双向选择。", + "demoId": "default-checked" + }, + { + "title": "自定义数据项渲染", + "content": "

使用 render-content 自定义数据项

\n", + "link": "transfer/custom-render-content", + "component": " Transfer 穿梭框", + "findIntroStr": "穿梭框,提供表格数据的双向选择。", + "demoId": "custom-render-content" + }, + { + "title": "列表顶部勾选状态文案", + "content": "

指定 format 属性后,勾选数据时,左右侧列表顶部将展示已勾选数据和所有数据的比值。

\n", + "link": "transfer/checked-format-text", + "component": " Transfer 穿梭框", + "findIntroStr": "穿梭框,提供表格数据的双向选择。", + "demoId": "checked-format-text" + }, + { + "title": "可搜索", + "content": "

通过 filterable 属性开启左右侧列表的搜索功能。

\n", + "link": "transfer/filterable", + "component": " Transfer 穿梭框", + "findIntroStr": "穿梭框,提供表格数据的双向选择。", + "demoId": "filterable" + }, + { + "title": "数据源的字段别名", + "content": "

当数据对象中的字段和默认不一致时,可通过 props 属性进行映射。

\n", + "link": "transfer/props-of-data-source", + "component": " Transfer 穿梭框", + "findIntroStr": "穿梭框,提供表格数据的双向选择。", + "demoId": "props-of-data-source" + }, + { + "title": "右侧排序策略", + "content": "

通过 target-order 属性设置右侧列表元素的排序策略,有 original、push、unshift 三个选项,默认为 original 。

\n

排序策略

\n

若为 original,则保持与数据源相同的顺序\n若为 push,则新加入的元素排在最后\n若为 unshift,则新加入的元素排在最前

\n
\n", + "link": "transfer/target-order", + "component": " Transfer 穿梭框", + "findIntroStr": "穿梭框,提供表格数据的双向选择。", + "demoId": "target-order" + }, + { + "title": "左右拖拽", + "content": "

使用拖拽功能时请先安装 sortablejs 插件

\n
\n

通过 drop-config 属性配置 sortablejs 插件进行左右拖拽穿梭。

\n", + "link": "transfer/drop-config", + "component": " Transfer 穿梭框", + "findIntroStr": "穿梭框,提供表格数据的双向选择。", + "demoId": "drop-config" + }, + { + "title": "穿梭框事件", + "content": "

主要有 changeleft-check-changeright-check-change 三个事件。

\n

事件说明

\n

change:右侧列表元素变化时触发\nleft-check-change:左侧列表元素被用户选中 / 取消选中时触发\nright-check-change:右侧列表元素被用户选中 / 取消选中时触发

\n
\n", + "link": "transfer/transfer-events", + "component": " Transfer 穿梭框", + "findIntroStr": "穿梭框,提供表格数据的双向选择。", + "demoId": "transfer-events" + }, + { + "title": "手动清空搜索框", + "content": "

调用 clearQuery() 方法可清空左右侧列表的搜索框,参数为 left 或者 right 。

\n", + "link": "transfer/manual-clear-query", + "component": " Transfer 穿梭框", + "findIntroStr": "穿梭框,提供表格数据的双向选择。", + "demoId": "manual-clear-query" + }, + { + "title": "自定义列表底部", + "content": "

通过 left-footerright-footer 插槽可分别对左右列表底部进行自定义。

\n", + "link": "transfer/custom-footer", + "component": " Transfer 穿梭框", + "findIntroStr": "穿梭框,提供表格数据的双向选择。", + "demoId": "custom-footer" + }, + { + "title": "面板插槽", + "content": "

可通过 left-panelright-panel 自定义左、右侧面板内容;通过 button-panel 自定义穿梭按钮

\n", + "link": "transfer/panel-slot", + "component": " Transfer 穿梭框", + "findIntroStr": "穿梭框,提供表格数据的双向选择。", + "demoId": "panel-slot" + }, + { + "title": "嵌套表格", + "content": "

render 属性里的 plugin 设置为 Table 时指定穿梭框渲染成表格,具体配置可参考 grid 组件的配置。

\n", + "link": "transfer/nested-table", + "component": " Transfer 穿梭框", + "findIntroStr": "穿梭框,提供表格数据的双向选择。", + "demoId": "nested-table" + }, + { + "title": "嵌套树", + "content": "

render 属性里的 plugin 设置为 Tree 时指定穿梭框渲染成树,通过 treeConfig 属性配置树相关的配置(具体配置可参考 tree 组件的配置)。

\n", + "link": "transfer/nested-tree", + "component": " Transfer 穿梭框", + "findIntroStr": "穿梭框,提供表格数据的双向选择。", + "demoId": "nested-tree" + } +] \ No newline at end of file diff --git a/examples/docs/resources/pc/demo-config/zh-CN/tree-menu.json b/examples/docs/resources/pc/demo-config/zh-CN/tree-menu.json index fa3c83516..63b78298e 100644 --- a/examples/docs/resources/pc/demo-config/zh-CN/tree-menu.json +++ b/examples/docs/resources/pc/demo-config/zh-CN/tree-menu.json @@ -95,38 +95,6 @@ "findIntroStr": "以树形方式显示的菜单,适用于版型定制的一种组件。", "demoId": "can-draggable" }, - { - "title": "拖拽菜单回调事件", - "content": "

拖拽菜单回调事件,配合 draggable 使用。

\n", - "link": "tree-menu/event-allow-draggable", - "component": " TreeMenu 树型菜单", - "findIntroStr": "以树形方式显示的菜单,适用于版型定制的一种组件。", - "demoId": "event-allow-draggable" - }, - { - "title": "节点被展开时触发的事件", - "content": "

节点被展开时触发的事件

\n", - "link": "tree-menu/event-node-expand", - "component": " TreeMenu 树型菜单", - "findIntroStr": "以树形方式显示的菜单,适用于版型定制的一种组件。", - "demoId": "event-node-expand" - }, - { - "title": "节点被关闭时触发的事件", - "content": "

节点被关闭时触发的事件

\n", - "link": "tree-menu/event-node-collapse", - "component": " TreeMenu 树型菜单", - "findIntroStr": "以树形方式显示的菜单,适用于版型定制的一种组件。", - "demoId": "event-node-collapse" - }, - { - "title": "节点选中状态发生变化时的回调", - "content": "

节点选中状态发生变化时的回调

\n", - "link": "tree-menu/event-check-change", - "component": " TreeMenu 树型菜单", - "findIntroStr": "以树形方式显示的菜单,适用于版型定制的一种组件。", - "demoId": "event-check-change" - }, { "title": "点击文字展开菜单", "content": "

可通过属性 expand-on-click-node 配置点击文字即可展开子菜单。

\n", @@ -176,11 +144,51 @@ "demoId": "tree-menu-slot" }, { - "title": "事件", + "title": "节点点击事件", + "content": "

node-click节点被点击触发的事件。

\n", + "link": "tree-menu/event-node-click", + "component": " TreeMenu 树型菜单", + "findIntroStr": "以树形方式显示的菜单,适用于版型定制的一种组件。", + "demoId": "event-node-click" + }, + { + "title": "当前选中节点变化事件", "content": "

current-change 当前选中节点变化时触发的事件。

\n", "link": "tree-menu/event-current-change", "component": " TreeMenu 树型菜单", "findIntroStr": "以树形方式显示的菜单,适用于版型定制的一种组件。", "demoId": "event-current-change" + }, + { + "title": "拖拽菜单回调事件", + "content": "

拖拽菜单回调事件,配合 draggable 使用。

\n", + "link": "tree-menu/event-allow-draggable", + "component": " TreeMenu 树型菜单", + "findIntroStr": "以树形方式显示的菜单,适用于版型定制的一种组件。", + "demoId": "event-allow-draggable" + }, + { + "title": "节点被展开时触发的事件", + "content": "

节点被展开时触发的事件

\n", + "link": "tree-menu/event-node-expand", + "component": " TreeMenu 树型菜单", + "findIntroStr": "以树形方式显示的菜单,适用于版型定制的一种组件。", + "demoId": "event-node-expand" + }, + { + "title": "节点被折叠时触发的事件", + "content": "

节点被折叠时触发的事件

\n", + "link": "tree-menu/event-node-collapse", + "component": " TreeMenu 树型菜单", + "findIntroStr": "以树形方式显示的菜单,适用于版型定制的一种组件。", + "demoId": "event-node-collapse" + }, + { + "title": "节点选中状态变化事件", + "content": "

节点选中状态发生变化时的回调

\n", + "link": "tree-menu/event-check-change", + "component": " TreeMenu 树型菜单", + "findIntroStr": "以树形方式显示的菜单,适用于版型定制的一种组件。", + "demoId": "event-check-change" } ] diff --git a/examples/docs/resources/pc/demo/action-menu/basic-usage.spec.ts b/examples/docs/resources/pc/demo/action-menu/basic-usage.spec.ts new file mode 100644 index 000000000..dbf736a7f --- /dev/null +++ b/examples/docs/resources/pc/demo/action-menu/basic-usage.spec.ts @@ -0,0 +1,23 @@ +import { test, expect } from '@playwright/test' + +test('测试基本用法', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('http://localhost:7130/pc/action-menu/basic-usage') + + const preview = page.locator('#preview') + const actionMenu = preview.locator('.tiny-action-menu') + const menuItem = actionMenu.locator('.tiny-action-menu__item') + const dropDownMenu = page.locator('body > .tiny-dropdown-menu.tiny-popper') + const childMenu = page.locator('.tiny-dropdown-menu.tiny-dropdown-item--child') + const moreItem = menuItem.last().getByRole('button', { name: '更多' }) + + await expect(menuItem).toHaveCount(3) + await expect(menuItem.last()).toHaveText(/更多/) + await expect(moreItem.locator('svg path')).toHaveAttribute('d', 'M2 6h20L12 19z') + await expect(actionMenu.locator('.tiny-action-menu__item-line')).toHaveCount(2) + await moreItem.hover() + await expect(moreItem.locator('svg')).toHaveCSS('transform', 'matrix(-1, 0, 0, -1, 0, 0)') + await expect(dropDownMenu).toBeVisible() + await dropDownMenu.locator('.tiny-dropdown-item').filter({ hasText: '网络设置' }).hover() + await expect(childMenu).toBeVisible() +}) diff --git a/examples/docs/resources/pc/demo/action-menu/basic-usage.vue b/examples/docs/resources/pc/demo/action-menu/basic-usage.vue index 4a00382ba..15e68a202 100644 --- a/examples/docs/resources/pc/demo/action-menu/basic-usage.vue +++ b/examples/docs/resources/pc/demo/action-menu/basic-usage.vue @@ -1,5 +1,6 @@ diff --git a/examples/docs/resources/pc/demo/button/text.spec.js b/examples/docs/resources/pc/demo/button/text.spec.js index 10824b0b2..477ef7fd3 100644 --- a/examples/docs/resources/pc/demo/button/text.spec.js +++ b/examples/docs/resources/pc/demo/button/text.spec.js @@ -1,7 +1,8 @@ -import { test, expect } from '@playwright/test'; +import { test, expect } from '@playwright/test' -test('test', async ({ page }) => { - await page.goto('http://localhost:7130/pc/button/icon'); - await page.getByText('文字按钮').click(); - await page.getByRole('button', { name: 'text属性' }).click(); -}); \ No newline at end of file +test('测试按钮文字', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('http://localhost:7130/pc/button/text') + await expect(page.getByRole('button', { name: '文本按钮' })).toHaveClass(/tiny-button--text/) + await expect(page.getByRole('button', { name: 'text属性' })).toHaveClass(/tiny-button--text/) +}) diff --git a/examples/docs/resources/pc/demo/button/type.spec.js b/examples/docs/resources/pc/demo/button/type.spec.js index a5321997f..bbba527e0 100644 --- a/examples/docs/resources/pc/demo/button/type.spec.js +++ b/examples/docs/resources/pc/demo/button/type.spec.js @@ -1,14 +1,13 @@ -import { test, expect } from '@playwright/test'; +import { test, expect } from '@playwright/test' -test('test', async ({ page }) => { - await page.goto('http://localhost:7130/pc/button/image'); - await page.getByText('主题样式').click(); - await page.getByRole('button', { name: '主要按钮' }).click(); - await expect(page.getByRole('button', { name: '主要按钮' })).toHaveText('主要按钮') - await page.getByRole('button', { name: '成功按钮' }).click(); - await page.getByRole('button', { name: '信息按钮' }).click(); - await page.getByRole('button', { name: '警告按钮' }).click(); - await page.getByRole('button', { name: '危险按钮' }).click(); - await page.getByRole('button', { name: '文本按钮' }).click(); - await expect(page.getByRole('button', { name: '文本按钮' })).toHaveText('文本按钮') -}); \ No newline at end of file +test('测试按钮类型', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('http://localhost:7130/pc/button/type') + await expect(page.getByRole('button', { name: '默认按钮' })).toHaveClass(/tiny-button--default/) + await expect(page.getByRole('button', { name: '主要按钮' })).toHaveClass(/tiny-button--primary/) + await expect(page.getByRole('button', { name: '成功按钮' })).toHaveClass(/tiny-button--success/) + await expect(page.getByRole('button', { name: '信息按钮' })).toHaveClass(/tiny-button--info/) + await expect(page.getByRole('button', { name: '警告按钮' })).toHaveClass(/tiny-button--warning/) + await expect(page.getByRole('button', { name: '危险按钮' })).toHaveClass(/tiny-button--danger/) + await expect(page.getByRole('button', { name: '文本按钮' })).toHaveClass(/tiny-button--text/) +}) diff --git a/examples/docs/resources/pc/demo/carousel/autoplay.spec.ts b/examples/docs/resources/pc/demo/carousel/autoplay.spec.ts new file mode 100644 index 000000000..a70a2f256 --- /dev/null +++ b/examples/docs/resources/pc/demo/carousel/autoplay.spec.ts @@ -0,0 +1,28 @@ +import { test, expect } from '@playwright/test'; + +test('自动切换', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()); + await page.goto('http://localhost:7130/pc/carousel/autoplay'); + const preview = page.locator('#preview'); + const carousel = preview.locator('.tiny-carousel'); + const carouselItems = preview.locator('div.tiny-carousel__item'); + // 默认显示第一张幻灯片 + await expect(carouselItems.first()).toHaveCSS('transform', 'matrix(1, 0, 0, 1, 0, 0)'); + + // 这里需要等待幻灯片在3秒后切换 + await page.waitForTimeout(3000); + // 当前应该显示第二张幻灯片 + await expect(carouselItems.nth(1)).toHaveCSS('transform', 'matrix(1, 0, 0, 1, 0, 0)'); + + await carousel.hover(); + await page.waitForTimeout(100); + // 点击下一张按钮 + await preview.locator('button:nth-child(2)').click(); + // 当前应该显示第三张幻灯片 + await expect(carouselItems.nth(2)).toHaveCSS('transform', 'matrix(1, 0, 0, 1, 0, 0)'); + + // 点击上一张按钮 + await page.locator('.tiny-carousel__arrow').first().click(); + // 当前应该显示第二张幻灯片 + await expect(carouselItems.nth(1)).toHaveCSS('transform', 'matrix(1, 0, 0, 1, 0, 0)'); +}) \ No newline at end of file diff --git a/examples/docs/resources/pc/demo/carousel/basic-usage.spec.ts b/examples/docs/resources/pc/demo/carousel/basic-usage.spec.ts new file mode 100644 index 000000000..fa49d90e0 --- /dev/null +++ b/examples/docs/resources/pc/demo/carousel/basic-usage.spec.ts @@ -0,0 +1,28 @@ +import { test, expect } from '@playwright/test'; + +test('基础用法', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()); + await page.goto('http://localhost:7130/pc/carousel/basic-usage'); + const preview = page.locator('#preview'); + const carousel = preview.locator('.tiny-carousel'); + const carouselItems = preview.locator('div.tiny-carousel__item'); + // 默认显示第一张幻灯片 + await expect(carouselItems.first()).toHaveCSS('transform', 'matrix(1, 0, 0, 1, 0, 0)'); + + await carousel.hover(); + await page.waitForTimeout(100); + // 点击下一张按钮 + await preview.locator('button:nth-child(2)').click(); + // 当前应该显示第二张幻灯片 + await expect(carouselItems.nth(1)).toHaveCSS('transform', 'matrix(1, 0, 0, 1, 0, 0)'); + + // 点击上一张按钮 + await page.locator('.tiny-carousel__arrow').first().click(); + // 当前应该显示第一张幻灯片 + await expect(carouselItems.first()).toHaveCSS('transform', 'matrix(1, 0, 0, 1, 0, 0)'); + + // 点击底部按钮切换 + await preview.getByRole('list').getByRole('button').nth(1).click(); + // 当前应该显示第二张幻灯片 + await expect(carouselItems.nth(1)).toHaveCSS('transform', 'matrix(1, 0, 0, 1, 0, 0)'); +}) \ No newline at end of file diff --git a/examples/docs/resources/pc/demo/carousel/card-mode.spec.ts b/examples/docs/resources/pc/demo/carousel/card-mode.spec.ts new file mode 100644 index 000000000..f4ffbc9fb --- /dev/null +++ b/examples/docs/resources/pc/demo/carousel/card-mode.spec.ts @@ -0,0 +1,44 @@ +import { test, expect } from '@playwright/test'; + +test('卡片模式', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()); + await page.goto('http://localhost:7130/pc/carousel/card-mode'); + const preview = page.locator('#preview'); + const carousel = preview.locator('.tiny-carousel'); + const carouselItems = preview.locator('div.tiny-carousel__item'); + // 默认显示第一张幻灯片 + await expect(carouselItems.first()).toHaveCSS('transform', 'matrix(1, 0, 0, 1, 192.75, 0)'); + // 第二张幻灯片应该可见,并且被缩放 + await expect(carouselItems.nth(1)).toHaveCSS('transform', 'matrix(0.83, 0, 0, 0.83, 418.267, 0)'); + // 第四张幻灯片应该可见,并且被缩放 + await expect(carouselItems.nth(3)).toHaveCSS('transform', 'matrix(0.83, 0, 0, 0.83, -32.7675, 0)'); + + await carousel.hover(); + await page.waitForTimeout(100); + // 点击下一张按钮 + await preview.locator('button:nth-child(2)').click(); + // 当前应该显示第二张幻灯片 + await expect(carouselItems.nth(1)).toHaveCSS('transform', 'matrix(1, 0, 0, 1, 192.75, 0)'); + // 第三张幻灯片应该可见,并且被缩放 + await expect(carouselItems.nth(2)).toHaveCSS('transform', 'matrix(0.83, 0, 0, 0.83, 418.267, 0)'); + // 第一张幻灯片应该可见,并且被缩放 + await expect(carouselItems.first()).toHaveCSS('transform', 'matrix(0.83, 0, 0, 0.83, -32.7675, 0)'); + + // 点击底部按钮切换 + await preview.getByRole('list').getByRole('button').nth(2).click(); + // 当前应该显示第三张幻灯片 + await expect(carouselItems.nth(2)).toHaveCSS('transform', 'matrix(1, 0, 0, 1, 192.75, 0)'); + // 第四张幻灯片应该可见,并且被缩放 + await expect(carouselItems.nth(3)).toHaveCSS('transform', 'matrix(0.83, 0, 0, 0.83, 418.267, 0)'); + // 第二张幻灯片应该可见,并且被缩放 + await expect(carouselItems.nth(1)).toHaveCSS('transform', 'matrix(0.83, 0, 0, 0.83, -32.7675, 0)'); + + // 点击上一张按钮 + await page.locator('.tiny-carousel__arrow').first().click(); + // 当前应该显示第二张幻灯片 + await expect(carouselItems.nth(1)).toHaveCSS('transform', 'matrix(1, 0, 0, 1, 192.75, 0)'); + // 第三张幻灯片应该可见,并且被缩放 + await expect(carouselItems.nth(2)).toHaveCSS('transform', 'matrix(0.83, 0, 0, 0.83, 418.267, 0)'); + // 第一张幻灯片应该可见,并且被缩放 + await expect(carouselItems.first()).toHaveCSS('transform', 'matrix(0.83, 0, 0, 0.83, -32.7675, 0)'); +}) \ No newline at end of file diff --git a/examples/docs/resources/pc/demo/carousel/carousel-arrow-always.spec.ts b/examples/docs/resources/pc/demo/carousel/carousel-arrow-always.spec.ts new file mode 100644 index 000000000..bfafea217 --- /dev/null +++ b/examples/docs/resources/pc/demo/carousel/carousel-arrow-always.spec.ts @@ -0,0 +1,26 @@ +import { test, expect } from '@playwright/test'; + +test('总是显示切换箭头', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()); + await page.goto('http://localhost:7130/pc/carousel/carousel-arrow-always'); + const preview = page.locator('#preview'); + const carousel = preview.locator('.tiny-carousel'); + const carouselItems = preview.locator('div.tiny-carousel__item'); + // 默认显示第一张幻灯片 + await expect(carouselItems.first()).toHaveCSS('transform', 'matrix(1, 0, 0, 1, 0, 0)'); + + // 点击下一张按钮 + await preview.locator('button:nth-child(2)').click(); + // 当前应该显示第二张幻灯片 + await expect(carouselItems.nth(1)).toHaveCSS('transform', 'matrix(1, 0, 0, 1, 0, 0)'); + + // 点击上一张按钮 + await page.locator('.tiny-carousel__arrow').first().click(); + // 当前应该显示第一张幻灯片 + await expect(carouselItems.first()).toHaveCSS('transform', 'matrix(1, 0, 0, 1, 0, 0)'); + + // 点击底部按钮切换 + await preview.getByRole('list').getByRole('button').nth(1).click(); + // 当前应该显示第二张幻灯片 + await expect(carouselItems.nth(1)).toHaveCSS('transform', 'matrix(1, 0, 0, 1, 0, 0)'); +}) \ No newline at end of file diff --git a/examples/docs/resources/pc/demo/carousel/carousel-arrow-hover.spec.ts b/examples/docs/resources/pc/demo/carousel/carousel-arrow-hover.spec.ts new file mode 100644 index 000000000..03d34f6b1 --- /dev/null +++ b/examples/docs/resources/pc/demo/carousel/carousel-arrow-hover.spec.ts @@ -0,0 +1,27 @@ +import { test, expect } from '@playwright/test'; + +test('hover 时显示切换箭头', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()); + await page.goto('http://localhost:7130/pc/carousel/carousel-arrow-hover'); + const preview = page.locator('#preview'); + const carousel = preview.locator('.tiny-carousel'); + const carouselItems = preview.locator('div.tiny-carousel__item'); + + await carousel.hover(); + await page.waitForTimeout(100); + const arrow = carousel.locator('.tiny-carousel__arrow'); + // 左侧切换按钮 + await expect(arrow.first()).toBeVisible(); + // 右侧切换按钮 + await expect(arrow.nth(1)).toBeVisible(); + + // 点击下一张按钮 + await preview.locator('button:nth-child(2)').click(); + // 当前应该显示第二张幻灯片 + await expect(carouselItems.nth(1)).toHaveCSS('transform', 'matrix(1, 0, 0, 1, 0, 0)'); + + // 点击上一张按钮 + await page.locator('.tiny-carousel__arrow').first().click(); + // 当前应该显示第一张幻灯片 + await expect(carouselItems.first()).toHaveCSS('transform', 'matrix(1, 0, 0, 1, 0, 0)'); +}) \ No newline at end of file diff --git a/examples/docs/resources/pc/demo/carousel/carousel-arrow-never.spec.ts b/examples/docs/resources/pc/demo/carousel/carousel-arrow-never.spec.ts new file mode 100644 index 000000000..b98316e38 --- /dev/null +++ b/examples/docs/resources/pc/demo/carousel/carousel-arrow-never.spec.ts @@ -0,0 +1,22 @@ +import { test, expect } from '@playwright/test'; + +test('隐藏切换箭头', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()); + await page.goto('http://localhost:7130/pc/carousel/carousel-arrow-never'); + const preview = page.locator('#preview'); + const carousel = preview.locator('.tiny-carousel'); + const carouselItems = preview.locator('div.tiny-carousel__item'); + + await carousel.hover(); + await page.waitForTimeout(100); + const arrow = carousel.locator('.tiny-carousel__arrow'); + // 左侧切换按钮应该不可见 + await expect(arrow.first()).not.toBeVisible(); + // 右侧切换按钮应该不可见 + await expect(arrow.nth(1)).not.toBeVisible(); + + // 点击底部按钮切换 + await preview.getByRole('list').getByRole('button').nth(1).click(); + // 当前应该显示第二张幻灯片 + await expect(carouselItems.nth(1)).toHaveCSS('transform', 'matrix(1, 0, 0, 1, 0, 0)'); +}) \ No newline at end of file diff --git a/examples/docs/resources/pc/demo/carousel/close-loop.spec.ts b/examples/docs/resources/pc/demo/carousel/close-loop.spec.ts new file mode 100644 index 000000000..f8b9aa3d8 --- /dev/null +++ b/examples/docs/resources/pc/demo/carousel/close-loop.spec.ts @@ -0,0 +1,26 @@ +import { test, expect } from '@playwright/test'; + +test('关闭循环轮播', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()); + await page.goto('http://localhost:7130/pc/carousel/close-loop'); + const preview = page.locator('#preview'); + const carousel = preview.locator('.tiny-carousel'); + const carouselItems = preview.locator('div.tiny-carousel__item'); + const arrow = carousel.locator('.tiny-carousel__arrow'); + + // 左侧切换按钮应该不可见 + await expect(arrow.first()).not.toBeVisible(); + // 点击下一张按钮 + await arrow.nth(1).click(); + // 当前应该显示第二张幻灯片 + await expect(carouselItems.nth(1)).toHaveCSS('transform', 'matrix(1, 0, 0, 1, 0, 0)'); + await arrow.nth(1).click(); + // 当前应该显示第三张幻灯片 + await expect(carouselItems.nth(2)).toHaveCSS('transform', 'matrix(1, 0, 0, 1, 0, 0)'); + // 右侧切换按钮应该不可见 + await expect(arrow.nth(1)).not.toBeVisible(); + // 点击上一张按钮 + await arrow.first().click(); + // 当前应该显示第一张幻灯片 + await expect(carouselItems.nth(1)).toHaveCSS('transform', 'matrix(1, 0, 0, 1, 0, 0)'); +}); \ No newline at end of file diff --git a/examples/docs/resources/pc/demo/carousel/indicator-trigger.spec.ts b/examples/docs/resources/pc/demo/carousel/indicator-trigger.spec.ts new file mode 100644 index 000000000..e6548b09b --- /dev/null +++ b/examples/docs/resources/pc/demo/carousel/indicator-trigger.spec.ts @@ -0,0 +1,18 @@ +import { test, expect } from '@playwright/test'; + +test('指示器和触发方式', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()); + await page.goto('http://localhost:7130/pc/carousel/indicator-trigger'); + const preview = page.locator('#preview'); + const carouselItems = preview.locator('div.tiny-carousel__item'); + const indicators = preview.getByRole('list').getByRole('button'); + + // 悬浮底部第二个按钮 + await indicators.nth(1).hover(); + // 当前应该显示第一张幻灯片 + await expect(carouselItems.first()).toHaveCSS('transform', 'matrix(1, 0, 0, 1, 0, 0)'); + // 点击底部第二个按钮 + await indicators.nth(1).click(); + // 当前应该显示第二张幻灯片 + await expect(carouselItems.nth(1)).toHaveCSS('transform', 'matrix(1, 0, 0, 1, 0, 0)'); +}) \ No newline at end of file diff --git a/examples/docs/resources/pc/demo/carousel/manual-play.spec.ts b/examples/docs/resources/pc/demo/carousel/manual-play.spec.ts new file mode 100644 index 000000000..65e25e536 --- /dev/null +++ b/examples/docs/resources/pc/demo/carousel/manual-play.spec.ts @@ -0,0 +1,30 @@ +import { test, expect } from '@playwright/test'; + +test('手动轮播', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()); + await page.goto('http://localhost:7130/pc/carousel/manual-play'); + const preview = page.locator('#preview'); + const carouselItems = preview.locator('div.tiny-carousel__item'); + const numButtons = preview.locator('#num').getByRole('button'); + + // 减一 + await numButtons.first().click(); + // 当前应该显示第二张幻灯片 + await expect(carouselItems.nth(1)).toHaveCSS('transform', 'matrix(1, 0, 0, 1, 0, 0)'); + // 加一 + await numButtons.nth(1).click(); + // 当前应该显示第三张幻灯片 + await expect(carouselItems.nth(2)).toHaveCSS('transform', 'matrix(1, 0, 0, 1, 0, 0)'); + // 点击上一张按钮 + await page.getByRole('button', { name: '上一张' }).click(); + // 当前应该显示第二张幻灯片 + await expect(carouselItems.nth(1)).toHaveCSS('transform', 'matrix(1, 0, 0, 1, 0, 0)'); + // 点击下一张按钮 + await page.getByRole('button', { name: '下一张' }).click(); + // 当前应该显示第三张幻灯片 + await expect(carouselItems.nth(2)).toHaveCSS('transform', 'matrix(1, 0, 0, 1, 0, 0)'); + // 指定一个序号 + await page.getByRole('spinbutton').fill('4'); + // 当前应该显示第四张幻灯片 + await expect(carouselItems.nth(3)).toHaveCSS('transform', 'matrix(1, 0, 0, 1, 0, 0)'); +}) \ No newline at end of file diff --git a/examples/docs/resources/pc/demo/carousel/play-interval.spec.ts b/examples/docs/resources/pc/demo/carousel/play-interval.spec.ts new file mode 100644 index 000000000..9f5270061 --- /dev/null +++ b/examples/docs/resources/pc/demo/carousel/play-interval.spec.ts @@ -0,0 +1,20 @@ +import { test, expect } from '@playwright/test'; + +test('轮播间隔时间', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()); + await page.goto('http://localhost:7130/pc/carousel/play-interval'); + const preview = page.locator('#preview'); + const carouselItems = preview.locator('div.tiny-carousel__item'); + // 等待1秒后幻灯片切换 + await page.waitForTimeout(1000); + // 当前应该显示第二张幻灯片 + await expect(carouselItems.nth(1)).toHaveCSS('transform', 'matrix(1, 0, 0, 1, 0, 0)'); + // 等待1秒后幻灯片切换 + await page.waitForTimeout(1000); + // 当前应该显示第三张幻灯片 + await expect(carouselItems.nth(2)).toHaveCSS('transform', 'matrix(1, 0, 0, 1, 0, 0)'); + // 等待1秒后幻灯片切换 + await page.waitForTimeout(1000); + // 当前应该显示第四张幻灯片 + await expect(carouselItems.nth(3)).toHaveCSS('transform', 'matrix(1, 0, 0, 1, 0, 0)'); +}) \ No newline at end of file diff --git a/examples/docs/resources/pc/demo/carousel/show-title.spec.ts b/examples/docs/resources/pc/demo/carousel/show-title.spec.ts new file mode 100644 index 000000000..1a718fd9f --- /dev/null +++ b/examples/docs/resources/pc/demo/carousel/show-title.spec.ts @@ -0,0 +1,12 @@ +import { test, expect } from '@playwright/test'; + +test('显示标题', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()); + await page.goto('http://localhost:7130/pc/carousel/show-title'); + const preview = page.locator('#preview'); + const carouselItems = preview.locator('div.tiny-carousel__item'); + const indicators = preview.getByRole('list').getByRole('button'); + await expect(carouselItems.first().locator('span')).toHaveText('幻灯片 - 1'); + await indicators.nth(1).hover(); + await expect(carouselItems.nth(1).locator('span')).toHaveText('幻灯片 - 2'); +}) \ No newline at end of file diff --git a/examples/docs/resources/pc/demo/carousel/up-down-carousel.spec.ts b/examples/docs/resources/pc/demo/carousel/up-down-carousel.spec.ts new file mode 100644 index 000000000..b3fa4fe54 --- /dev/null +++ b/examples/docs/resources/pc/demo/carousel/up-down-carousel.spec.ts @@ -0,0 +1,18 @@ +import { test, expect } from '@playwright/test'; + +test('纵向轮播', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()); + await page.goto('http://localhost:7130/pc/carousel/up-down-carousel'); + const preview = page.locator('#preview'); + const indicators = preview.getByRole('button'); + const carouselItems = preview.locator('.tiny-carousel__item'); + await indicators.nth(1).hover(); + // 第一张幻灯片在Y轴向上平移了150px + await expect(carouselItems.first()).toHaveCSS('transform', 'matrix(1, 0, 0, 1, 0, -150)'); + // 当前应该显示第二张幻灯片 + await expect(carouselItems.nth(1)).toHaveCSS('transform', 'matrix(1, 0, 0, 1, 0, 0)'); + // 第三张幻灯片在Y轴向下平移了150px + await expect(carouselItems.nth(2)).toHaveCSS('transform', 'matrix(1, 0, 0, 1, 0, 150)'); + // 第四张幻灯片在Y轴向上平移了450px + await expect(carouselItems.nth(3)).toHaveCSS('transform', 'matrix(1, 0, 0, 1, 0, -450)'); +}) \ No newline at end of file diff --git a/examples/docs/resources/pc/demo/cascader-panel/basic-usage.spec.ts b/examples/docs/resources/pc/demo/cascader-panel/basic-usage.spec.ts new file mode 100644 index 000000000..b4c96fb44 --- /dev/null +++ b/examples/docs/resources/pc/demo/cascader-panel/basic-usage.spec.ts @@ -0,0 +1,13 @@ +import { test, expect } from '@playwright/test' + +test('基本用法', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('http://localhost:7130/pc/cascader-panel/basic-usage') + await page + .locator('div') + .filter({ hasText: /^指南组件$/ }) + .nth(2) + .click() + await page.getByRole('menuitem', { name: '指南' }).click() + await expect(page.getByText('安装开发')).toBeVisible() +}) diff --git a/examples/docs/resources/pc/demo/cascader-panel/cascader-panel-props.spec.ts b/examples/docs/resources/pc/demo/cascader-panel/cascader-panel-props.spec.ts new file mode 100644 index 000000000..b7c75104d --- /dev/null +++ b/examples/docs/resources/pc/demo/cascader-panel/cascader-panel-props.spec.ts @@ -0,0 +1,11 @@ +import { test, expect } from '@playwright/test' + +test('Props 选项', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('http://localhost:7130/pc/cascader-panel/cascader-panel-props') + await expect(page.getByText('指南组件')).toBeVisible() + await page.getByRole('menuitem', { name: '指南' }).click() + await expect(page.getByText('安装开发')).toBeVisible() + await page.getByText('安装').click() + await expect(page.getByText('项目登记环境准备安装 CLI创建项目')).toBeVisible() +}) diff --git a/examples/docs/resources/pc/demo/cascader-panel/change.spec.ts b/examples/docs/resources/pc/demo/cascader-panel/change.spec.ts new file mode 100644 index 000000000..f84fd3715 --- /dev/null +++ b/examples/docs/resources/pc/demo/cascader-panel/change.spec.ts @@ -0,0 +1,9 @@ +import { test, expect } from '@playwright/test' + +test('选中节点变化', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('http://localhost:7130/pc/cascader-panel/change') + await page.getByRole('menuitem', { name: '指南' }).click() + await page.getByRole('menuitem', { name: '安装' }).getByRole('radio').click() + await expect(page.getByText('change 事件,当前选中的值为:安装;传入的值为:zhinan,anzhuang')).toBeVisible() +}) diff --git a/examples/docs/resources/pc/demo/cascader-panel/custom-option-content.spec.ts b/examples/docs/resources/pc/demo/cascader-panel/custom-option-content.spec.ts new file mode 100644 index 000000000..85e5252b3 --- /dev/null +++ b/examples/docs/resources/pc/demo/cascader-panel/custom-option-content.spec.ts @@ -0,0 +1,9 @@ +import { test, expect } from '@playwright/test' + +test('自定义节点内容', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('http://localhost:7130/pc/cascader-panel/custom-option-content') + await expect(page.getByText('指南自定义(2)组件自定义(6)')).toBeVisible() + await page.getByRole('menuitem', { name: '指南自定义(2)' }).click() + await expect(page.getByText('安装自定义(4)开发自定义(2)')).toBeVisible() +}) diff --git a/examples/docs/resources/pc/demo/cascader-panel/expand-change.spec.ts b/examples/docs/resources/pc/demo/cascader-panel/expand-change.spec.ts new file mode 100644 index 000000000..336303190 --- /dev/null +++ b/examples/docs/resources/pc/demo/cascader-panel/expand-change.spec.ts @@ -0,0 +1,8 @@ +import { test, expect } from '@playwright/test' + +test('展开节点发生变化', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('http://localhost:7130/pc/cascader-panel/expand-change') + await page.getByRole('menuitem', { name: '组件' }).click() + await expect(page.getByText('节点变化值:zujian')).toBeVisible() +}) diff --git a/examples/docs/resources/pc/demo/cascader/auto-load-checkStrictly.spec.ts b/examples/docs/resources/pc/demo/cascader/auto-load-checkStrictly.spec.ts new file mode 100644 index 000000000..12f2fa57d --- /dev/null +++ b/examples/docs/resources/pc/demo/cascader/auto-load-checkStrictly.spec.ts @@ -0,0 +1,23 @@ +import { test, expect } from '@playwright/test' + +test('动态加载且父子级不相关联', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('http://localhost:7130/pc/cascader/auto-load-checkStrictly') + await page.locator('#preview').getByRole('img').nth(1).click() + const svg = page.locator('.tiny-cascader-node__postfix > .st0') + await expect(svg).toHaveAttribute( + 'd', + 'M7 21c.2 0 .5-.1.6-.2l9.9-8c.2-.2.4-.5.4-.8 0-.3-.1-.6-.4-.8L7.6 3.3c-.4-.4-1.1-.3-1.4.2-.4.4-.3 1.1.2 1.4l8.9 7.2-8.9 7.2c-.4.4-.5 1-.2 1.4.2.2.5.3.8.3z' + ) + await page.getByRole('menuitem', { name: '选项1' }).click() + const loadingSvg = page.getByRole('menuitem', { name: '选项1' }).locator('path') + await expect(loadingSvg).toHaveAttribute( + 'd', + 'M511.883 287.998h-.362a31.999 31.999 0 0 1-31.66-31.977v-.361c0-.105.117-11.723.117-63.659v-96a31.999 31.999 0 1 1 64.001 0v96c0 52.586-.112 63.882-.12 64.338a32.003 32.003 0 0 1-31.976 31.66zm.115 672A31.999 31.999 0 0 1 480 928v-96.38c0-51.61-.112-63.174-.115-63.286s0-.242 0-.361a31.999 31.999 0 0 1 63.998-.314c0 .455.119 11.711.119 64.034v96.307a31.999 31.999 0 0 1-32.003 32zM330.9 363.021a31.898 31.898 0 0 1-22.866-9.612c-.076-.076-8.208-8.37-44.932-45.095l-67.903-67.885a31.999 31.999 0 0 1 45.257-45.253l67.881 67.882c37.183 37.183 45.09 45.253 45.412 45.578A31.999 31.999 0 0 1 330.9 363.02zm475.238 475.094a31.901 31.901 0 0 1-22.628-9.375l-67.885-67.88c-36.724-36.725-45.018-44.86-45.098-44.94a31.999 31.999 0 0 1 44.777-45.73c.325.318 8.395 8.23 45.578 45.412l67.881 67.882a31.999 31.999 0 0 1-22.625 54.63zm-582.137 0a31.901 31.901 0 0 0 22.628-9.375l67.882-67.88c36.724-36.725 45.022-44.86 45.097-44.94a31.999 31.999 0 0 0-44.776-45.73c-.325.318-8.395 8.23-45.578 45.412l-67.881 67.885A31.999 31.999 0 0 0 224 838.115zm31.949-294.056h-.362c-.104 0-11.722-.116-63.658-.116H95.943a31.999 31.999 0 1 1 0-64.002h95.997c52.586 0 63.882.112 64.337.12a31.999 31.999 0 0 1 31.66 31.977v.361a32.003 32.003 0 0 1-31.988 31.66zm511.99 0a32.003 32.003 0 0 1-31.995-31.667v-.361a31.999 31.999 0 0 1 31.66-31.97c.455 0 11.754-.12 64.34-.12h96.001a31.999 31.999 0 0 1 0 64.002h-96c-51.936 0-63.554.112-63.666.116h-.336zM693 363.018a31.999 31.999 0 0 1-22.863-54.382c.318-.325 8.23-8.395 45.412-45.578l67.882-67.885a31.999 31.999 0 1 1 45.263 45.256l-67.892 67.882c-31.02 31.023-41.644 41.76-44.241 44.393l-.697.723a31.909 31.909 0 0 1-22.864 9.59z' + ) + await page.waitForTimeout(1000) + await page.getByRole('menuitem', { name: '选项2' }).getByRole('radio').click() + await page.getByPlaceholder('请选择').click() + const light = page.getByRole('menuitem', { name: '选项2' }).getByRole('radio') + await expect(light).toHaveClass('tiny-radio is-checked') +}) diff --git a/examples/docs/resources/pc/demo/cascader/auto-load.spec.ts b/examples/docs/resources/pc/demo/cascader/auto-load.spec.ts new file mode 100644 index 000000000..2210083e3 --- /dev/null +++ b/examples/docs/resources/pc/demo/cascader/auto-load.spec.ts @@ -0,0 +1,18 @@ +import { test, expect } from '@playwright/test' + +test('动态加载', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('http://localhost:7130/pc/cascader/auto-load') + await page.locator('#preview').getByRole('img').nth(1).click() + const svg = page.locator('.tiny-cascader-node__postfix > .st0') + await expect(svg).toHaveAttribute( + 'd', + 'M7 21c.2 0 .5-.1.6-.2l9.9-8c.2-.2.4-.5.4-.8 0-.3-.1-.6-.4-.8L7.6 3.3c-.4-.4-1.1-.3-1.4.2-.4.4-.3 1.1.2 1.4l8.9 7.2-8.9 7.2c-.4.4-.5 1-.2 1.4.2.2.5.3.8.3z' + ) + await page.getByRole('menuitem', { name: '选项1' }).click() + const loadingSvg = page.getByRole('menuitem', { name: '选项1' }).locator('path') + await expect(loadingSvg).toHaveAttribute( + 'd', + 'M511.883 287.998h-.362a31.999 31.999 0 0 1-31.66-31.977v-.361c0-.105.117-11.723.117-63.659v-96a31.999 31.999 0 1 1 64.001 0v96c0 52.586-.112 63.882-.12 64.338a32.003 32.003 0 0 1-31.976 31.66zm.115 672A31.999 31.999 0 0 1 480 928v-96.38c0-51.61-.112-63.174-.115-63.286s0-.242 0-.361a31.999 31.999 0 0 1 63.998-.314c0 .455.119 11.711.119 64.034v96.307a31.999 31.999 0 0 1-32.003 32zM330.9 363.021a31.898 31.898 0 0 1-22.866-9.612c-.076-.076-8.208-8.37-44.932-45.095l-67.903-67.885a31.999 31.999 0 0 1 45.257-45.253l67.881 67.882c37.183 37.183 45.09 45.253 45.412 45.578A31.999 31.999 0 0 1 330.9 363.02zm475.238 475.094a31.901 31.901 0 0 1-22.628-9.375l-67.885-67.88c-36.724-36.725-45.018-44.86-45.098-44.94a31.999 31.999 0 0 1 44.777-45.73c.325.318 8.395 8.23 45.578 45.412l67.881 67.882a31.999 31.999 0 0 1-22.625 54.63zm-582.137 0a31.901 31.901 0 0 0 22.628-9.375l67.882-67.88c36.724-36.725 45.022-44.86 45.097-44.94a31.999 31.999 0 0 0-44.776-45.73c-.325.318-8.395 8.23-45.578 45.412l-67.881 67.885A31.999 31.999 0 0 0 224 838.115zm31.949-294.056h-.362c-.104 0-11.722-.116-63.658-.116H95.943a31.999 31.999 0 1 1 0-64.002h95.997c52.586 0 63.882.112 64.337.12a31.999 31.999 0 0 1 31.66 31.977v.361a32.003 32.003 0 0 1-31.988 31.66zm511.99 0a32.003 32.003 0 0 1-31.995-31.667v-.361a31.999 31.999 0 0 1 31.66-31.97c.455 0 11.754-.12 64.34-.12h96.001a31.999 31.999 0 0 1 0 64.002h-96c-51.936 0-63.554.112-63.666.116h-.336zM693 363.018a31.999 31.999 0 0 1-22.863-54.382c.318-.325 8.23-8.395 45.412-45.578l67.882-67.885a31.999 31.999 0 1 1 45.263 45.256l-67.892 67.882c-31.02 31.023-41.644 41.76-44.241 44.393l-.697.723a31.909 31.909 0 0 1-22.864 9.59z' + ) +}) diff --git a/examples/docs/resources/pc/demo/cascader/basic-usage.spec.ts b/examples/docs/resources/pc/demo/cascader/basic-usage.spec.ts new file mode 100644 index 000000000..d4f8c5512 --- /dev/null +++ b/examples/docs/resources/pc/demo/cascader/basic-usage.spec.ts @@ -0,0 +1,11 @@ +import { test, expect } from '@playwright/test' + +test('基本用法', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('http://localhost:7130/pc/cascader/basic-usage') + await page.getByPlaceholder('请选择').click() + const cascader = page.locator( + '.tiny-cascader-menu > .tiny-cascader-menu__wrap > .tiny-cascader-menu__list > .is-active > span' + ) + await expect(cascader).toHaveText('安装 CLI') +}) diff --git a/examples/docs/resources/pc/demo/cascader/check-strictly-multiple.spec.ts b/examples/docs/resources/pc/demo/cascader/check-strictly-multiple.spec.ts new file mode 100644 index 000000000..af6daf86d --- /dev/null +++ b/examples/docs/resources/pc/demo/cascader/check-strictly-multiple.spec.ts @@ -0,0 +1,13 @@ +import { test, expect } from '@playwright/test' + +test('多选选择任意一级选项', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('http://localhost:7130/pc/cascader/check-strictly-multiple') + await page.getByText('指南/安装指南/开发/引入组件').click() + await page.getByRole('menuitem', { name: '开发' }).locator('span').nth(1).click() + await page.getByRole('menuitem', { name: '安装' }).click() + const kaifa = page.getByRole('menuitem', { name: '开发' }).locator('span').nth(1) + const anzhuang = page.getByRole('menuitem', { name: '安装' }).locator('span').nth(1) + await expect(kaifa).toHaveCSS('background-color', 'rgb(94, 124, 224)') + await expect(anzhuang).toHaveCSS('background-color', 'rgb(94, 124, 224)') +}) diff --git a/examples/docs/resources/pc/demo/cascader/check-strictly.spec.ts b/examples/docs/resources/pc/demo/cascader/check-strictly.spec.ts new file mode 100644 index 000000000..932ba5acd --- /dev/null +++ b/examples/docs/resources/pc/demo/cascader/check-strictly.spec.ts @@ -0,0 +1,11 @@ +import { test, expect } from '@playwright/test' + +test('父子级不相关联', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('http://localhost:7130/pc/cascader/check-strictly') + await page.getByPlaceholder('请选择').click() + await page.getByRole('menuitem', { name: '开发' }).getByRole('radio').click() + await page.getByPlaceholder('请选择').click() + const light = page.getByRole('menuitem', { name: '开发' }).getByRole('radio') + await expect(light).toHaveClass('tiny-radio is-checked') +}) diff --git a/examples/docs/resources/pc/demo/cascader/clearable.spec.ts b/examples/docs/resources/pc/demo/cascader/clearable.spec.ts new file mode 100644 index 000000000..36f69ef29 --- /dev/null +++ b/examples/docs/resources/pc/demo/cascader/clearable.spec.ts @@ -0,0 +1,13 @@ +import { test, expect } from '@playwright/test' + +test('可清空', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('http://localhost:7130/pc/cascader/clearable') + const text = await page.locator('#preview').getByRole('textbox').inputValue() + await expect(text).toEqual('指南+安装+项目登记') + await page.locator('.tiny-input__suffix-inner > .tiny-svg').click() + const textClear = await page.locator('#preview').getByRole('textbox').inputValue() + await expect(textClear).toEqual('') + const medium = page.locator('.tiny-cascader--medium') + await expect(medium).toBeVisible() +}) diff --git a/examples/docs/resources/pc/demo/cascader/collapse-tags.spec.ts b/examples/docs/resources/pc/demo/cascader/collapse-tags.spec.ts new file mode 100644 index 000000000..96d6f1217 --- /dev/null +++ b/examples/docs/resources/pc/demo/cascader/collapse-tags.spec.ts @@ -0,0 +1,8 @@ +import { test, expect } from '@playwright/test' + +test('折叠展示 Tag', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('http://localhost:7130/pc/cascader/collapse-tags') + const tag = page.locator('span').filter({ hasText: '+ 2' }).first() + await expect(tag).toBeVisible() +}) diff --git a/examples/docs/resources/pc/demo/cascader/default-multiple.spec.ts b/examples/docs/resources/pc/demo/cascader/default-multiple.spec.ts new file mode 100644 index 000000000..1dc97f3cc --- /dev/null +++ b/examples/docs/resources/pc/demo/cascader/default-multiple.spec.ts @@ -0,0 +1,10 @@ +import { test, expect } from '@playwright/test' + +test('多选', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('http://localhost:7130/pc/cascader/default-multiple') + const multiple = page.locator('.tiny-cascader-multiple') + const multipleText = page.getByText('指南/安装/项目登记指南/安装/安装 CLI指南/开发/引入组件') + await expect(multiple).toBeVisible() + await expect(multipleText).toBeVisible() +}) diff --git a/examples/docs/resources/pc/demo/cascader/disabled-items.spec.ts b/examples/docs/resources/pc/demo/cascader/disabled-items.spec.ts new file mode 100644 index 000000000..b065d4c71 --- /dev/null +++ b/examples/docs/resources/pc/demo/cascader/disabled-items.spec.ts @@ -0,0 +1,11 @@ +import { test, expect } from '@playwright/test' + +test('禁用选项', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('http://localhost:7130/pc/cascader/disabled-items') + await page.getByPlaceholder('请选择').click() + const cascader = page.locator( + '.tiny-cascader-menu > .tiny-cascader-menu__wrap > .tiny-cascader-menu__list > .is-disabled' + ) + await expect(cascader).toBeVisible() +}) diff --git a/examples/docs/resources/pc/demo/cascader/events.spec.ts b/examples/docs/resources/pc/demo/cascader/events.spec.ts new file mode 100644 index 000000000..ece4e2503 --- /dev/null +++ b/examples/docs/resources/pc/demo/cascader/events.spec.ts @@ -0,0 +1,9 @@ +import { test, expect } from '@playwright/test' + +test('事件', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('http://localhost:7130/pc/cascader/events') + await page.getByPlaceholder('请选择').click() + await expect(page.getByText('当前触发了:visible-change 事件,当前状态为:true')).toBeVisible() + await expect(page.getByText('当前触发了:focus 事件')).toBeVisible() +}) diff --git a/examples/docs/resources/pc/demo/cascader/expand-trigger.spec.ts b/examples/docs/resources/pc/demo/cascader/expand-trigger.spec.ts new file mode 100644 index 000000000..efa7ca84f --- /dev/null +++ b/examples/docs/resources/pc/demo/cascader/expand-trigger.spec.ts @@ -0,0 +1,10 @@ +import { test, expect } from '@playwright/test' + +test('hover 触发子菜单', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('http://localhost:7130/pc/cascader/expand-trigger') + await page.getByPlaceholder('请选择').click() + await page.getByRole('menuitem', { name: '指南' }).hover() + const cascader = page.getByText('安装开发') + await expect(cascader).toBeVisible() +}) diff --git a/examples/docs/resources/pc/demo/cascader/filter-method.spec.ts b/examples/docs/resources/pc/demo/cascader/filter-method.spec.ts new file mode 100644 index 000000000..3b1f7b621 --- /dev/null +++ b/examples/docs/resources/pc/demo/cascader/filter-method.spec.ts @@ -0,0 +1,14 @@ +import { test, expect } from '@playwright/test' + +test('自定义搜索逻辑', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('http://localhost:7130/pc/cascader/filter-method') + await page.getByPlaceholder('试试搜索:安装').click() + await page.getByPlaceholder('试试搜索:安装').fill('安装') + await page + .getByRole('listitem') + .filter({ hasText: /^指南\/安装$/ }) + .click() + const text = await page.locator('#preview').getByRole('textbox').inputValue() + await expect(text).toEqual('指南/安装') +}) diff --git a/examples/docs/resources/pc/demo/cascader/filterable-multiple.spec.ts b/examples/docs/resources/pc/demo/cascader/filterable-multiple.spec.ts new file mode 100644 index 000000000..0ae0c010b --- /dev/null +++ b/examples/docs/resources/pc/demo/cascader/filterable-multiple.spec.ts @@ -0,0 +1,20 @@ +import { test, expect } from '@playwright/test' + +test('多选可搜索', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('http://localhost:7130/pc/cascader/filterable-multiple') + await page.getByPlaceholder('试试搜索:安装').nth(1).click() + await page.getByPlaceholder('试试搜索:安装').nth(1).fill('安装') + await page.waitForTimeout(1000) + const text = await page.locator('.tiny-cascader__suggestion-item') + await expect(text).toHaveText([ + '指南/安装/项目登记', + '指南/安装/环境准备', + '指南/安装/安装 CLI', + '指南/安装/创建项目' + ]) + await page.getByRole('listitem').filter({ hasText: '指南/安装/项目登记' }).click() + await page.getByRole('listitem').filter({ hasText: '指南/安装/环境准备' }).click() + await expect(page.locator('span').filter({ hasText: '指南/安装/项目登记' }).first()).toBeVisible() + await expect(page.locator('span').filter({ hasText: '指南/安装/环境准备' }).first()).toBeVisible() +}) diff --git a/examples/docs/resources/pc/demo/cascader/filterable.spec.ts b/examples/docs/resources/pc/demo/cascader/filterable.spec.ts new file mode 100644 index 000000000..1b945d0ff --- /dev/null +++ b/examples/docs/resources/pc/demo/cascader/filterable.spec.ts @@ -0,0 +1,16 @@ +import { test, expect } from '@playwright/test' + +test('可搜索', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('http://localhost:7130/pc/cascader/filterable') + await page.getByPlaceholder('试试搜索:安装').click() + await page.getByPlaceholder('试试搜索:安装').fill('安装') + await page.waitForTimeout(1000) + const text = await page.locator('.tiny-cascader__suggestion-item') + await expect(text).toHaveText([ + '指南/安装/项目登记', + '指南/安装/环境准备', + '指南/安装/安装 CLI', + '指南/安装/创建项目' + ]) +}) diff --git a/examples/docs/resources/pc/demo/cascader/props-children.spec.ts b/examples/docs/resources/pc/demo/cascader/props-children.spec.ts new file mode 100644 index 000000000..569e43715 --- /dev/null +++ b/examples/docs/resources/pc/demo/cascader/props-children.spec.ts @@ -0,0 +1,8 @@ +import { test, expect } from '@playwright/test' + +test('指定选项', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('http://localhost:7130/pc/cascader/props-children') + const text = await page.locator('#preview').getByRole('textbox').inputValue() + await expect(text).toEqual('指南/安装/安装 CLI') +}) diff --git a/examples/docs/resources/pc/demo/cascader/show-all-levels.spec.ts b/examples/docs/resources/pc/demo/cascader/show-all-levels.spec.ts new file mode 100644 index 000000000..78c92db16 --- /dev/null +++ b/examples/docs/resources/pc/demo/cascader/show-all-levels.spec.ts @@ -0,0 +1,10 @@ +import { test, expect } from '@playwright/test' + +test('仅显示最后一级', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('http://localhost:7130/pc/cascader/show-all-levels') + await page.getByPlaceholder('请选择').click() + await page.getByText('项目登记').click() + const text = await page.locator('#preview').getByRole('textbox').inputValue() + await expect(text).toEqual('项目登记') +}) diff --git a/examples/docs/resources/pc/demo/checkbox/basic-usage.spec.ts b/examples/docs/resources/pc/demo/checkbox/basic-usage.spec.ts new file mode 100644 index 000000000..d53a9e57d --- /dev/null +++ b/examples/docs/resources/pc/demo/checkbox/basic-usage.spec.ts @@ -0,0 +1,11 @@ +import { test, expect } from '@playwright/test'; + +test('基础用法', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()); + await page.goto('http://localhost:7130/pc/checkbox/basic-usage'); + const preview = page.locator('#preview'); + const checkbox = preview.locator('.tiny-checkbox'); + await expect(checkbox).toHaveClass(/is-checked/); + await checkbox.click(); + await expect(checkbox).not.toHaveClass(/is-checked/); +}) \ No newline at end of file diff --git a/examples/docs/resources/pc/demo/checkbox/button-check-box.spec.ts b/examples/docs/resources/pc/demo/checkbox/button-check-box.spec.ts new file mode 100644 index 000000000..bbb045921 --- /dev/null +++ b/examples/docs/resources/pc/demo/checkbox/button-check-box.spec.ts @@ -0,0 +1,12 @@ +import { test, expect } from '@playwright/test'; + +test('按钮形式的复选框未选中时', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()); + await page.goto('http://localhost:7130/pc/checkbox/button-chek-box'); + const preview = page.locator('#preview'); + const buttonCheck = preview.locator('.tiny-checkbox-button'); + await buttonCheck.click(); + await expect(buttonCheck).toHaveClass(/is-checked/); + await page.getByRole('button', { name: '获取文本' }).click(); + await expect(page.getByText(/真文本/)).toBeVisible(); + }) \ No newline at end of file diff --git a/examples/docs/resources/pc/demo/checkbox/checkbox-button-multiple.spec.ts b/examples/docs/resources/pc/demo/checkbox/checkbox-button-multiple.spec.ts new file mode 100644 index 000000000..312f3a780 --- /dev/null +++ b/examples/docs/resources/pc/demo/checkbox/checkbox-button-multiple.spec.ts @@ -0,0 +1,10 @@ +import { test, expect } from '@playwright/test'; + +test('多行按钮', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()); + await page.goto('http://localhost:7130/pc/checkbox/checkbox-button-multiple'); + const preview = page.locator('#preview'); + const checkbox = preview.locator('.tiny-checkbox-group > label'); + await checkbox.nth(2).click(); + await expect(checkbox.nth(2)).toHaveClass(/is-checked/); +}) \ No newline at end of file diff --git a/examples/docs/resources/pc/demo/checkbox/checkbox-button.spec.ts b/examples/docs/resources/pc/demo/checkbox/checkbox-button.spec.ts new file mode 100644 index 000000000..c1bb7e9a4 --- /dev/null +++ b/examples/docs/resources/pc/demo/checkbox/checkbox-button.spec.ts @@ -0,0 +1,23 @@ +import { test, expect } from '@playwright/test'; + +test('按钮形式的复选框选中时', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()); + await page.goto('http://localhost:7130/pc/checkbox/checkbox-button'); + const preview = page.locator('#preview'); + const buttonCheck = preview.locator('.tiny-checkbox-button'); + await expect(buttonCheck).toHaveClass(/is-checked/); + await expect(buttonCheck.locator('.tiny-checkbox-button__inner')).toHaveCSS('background-color', 'rgb(64, 158, 255)'); + await page.getByRole('button', { name: '获取文本' }).click(); + await expect(page.getByText(/真文本/)).toBeVisible(); +}) + +test('按钮形式的复选框未选中时', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()); + await page.goto('http://localhost:7130/pc/checkbox/checkbox-button'); + const preview = page.locator('#preview'); + const buttonCheck = preview.locator('.tiny-checkbox-button'); + await buttonCheck.click(); + await expect(buttonCheck).not.toHaveClass(/is-checked/); + await page.getByRole('button', { name: '获取文本' }).click(); + await expect(page.getByText(/假文本/)).toBeVisible(); + }) \ No newline at end of file diff --git a/examples/docs/resources/pc/demo/checkbox/checkbox-events.spec.ts b/examples/docs/resources/pc/demo/checkbox/checkbox-events.spec.ts new file mode 100644 index 000000000..8c83ac37d --- /dev/null +++ b/examples/docs/resources/pc/demo/checkbox/checkbox-events.spec.ts @@ -0,0 +1,13 @@ +import { test, expect } from '@playwright/test'; + +test('事件', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()); + await page.goto('http://localhost:7130/pc/checkbox/checkbox-events'); + const preview = page.locator('#preview'); + const checkbox = preview.locator('.tiny-checkbox-group > label'); + await checkbox.nth(1).click(); + await expect(page.getByText('当前选择:["复选框1","复选框2"]')).toBeVisible(); + await checkbox.nth(0).click(); + await checkbox.nth(1).click(); + await expect(page.getByText('当前选择:[]')).toBeVisible(); +}) \ No newline at end of file diff --git a/examples/docs/resources/pc/demo/checkbox/checkbox-group.spec.ts b/examples/docs/resources/pc/demo/checkbox/checkbox-group.spec.ts new file mode 100644 index 000000000..0c0e85248 --- /dev/null +++ b/examples/docs/resources/pc/demo/checkbox/checkbox-group.spec.ts @@ -0,0 +1,11 @@ +import { test, expect } from '@playwright/test'; + +test('复选框组和垂直复选框组', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()); + await page.goto('http://localhost:7130/pc/checkbox/checkbox-group'); + const preview = page.locator('#preview'); + const group = preview.locator('.tiny-checkbox-group'); + await group.first().getByText('复选框1').first().click(); + await group.first().getByText('复选框2').first().click(); + await expect(group.nth(1).locator('label').nth(1)).toHaveClass(/is-checked/); +}) \ No newline at end of file diff --git a/examples/docs/resources/pc/demo/checkbox/checkbox-slot.spec.ts b/examples/docs/resources/pc/demo/checkbox/checkbox-slot.spec.ts new file mode 100644 index 000000000..78c74f416 --- /dev/null +++ b/examples/docs/resources/pc/demo/checkbox/checkbox-slot.spec.ts @@ -0,0 +1,10 @@ +import { test, expect } from '@playwright/test'; + +test('插槽', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()); + await page.goto('http://localhost:7130/pc/checkbox/checkbox-slot'); + const preview = page.locator('#preview'); + const checkbox = preview.locator('.tiny-checkbox-group > label'); + await expect(checkbox.first().locator('.tiny-checkbox__label > span')).toHaveCSS('color', 'rgb(255, 0, 0)'); + await expect(checkbox.nth(1).locator('.tiny-checkbox__label > span')).toHaveCSS('color', 'rgb(0, 0, 255)'); +}) \ No newline at end of file diff --git a/examples/docs/resources/pc/demo/checkbox/checked.spec.ts b/examples/docs/resources/pc/demo/checkbox/checked.spec.ts new file mode 100644 index 000000000..ffe6d85c4 --- /dev/null +++ b/examples/docs/resources/pc/demo/checkbox/checked.spec.ts @@ -0,0 +1,11 @@ +import { test, expect } from '@playwright/test'; + +test('当前是否勾选', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()); + await page.goto('http://localhost:7130/pc/checkbox/checked'); + const preview = page.locator('#preview'); + const checkbox = preview.locator('.tiny-checkbox-group > label'); + await expect(checkbox.first()).toHaveClass(/is-checked/); + await expect(checkbox.nth(1)).toHaveClass(/is-disabled/); + await expect(checkbox.nth(2)).toHaveClass(/is-disabled is-checked/); +}) \ No newline at end of file diff --git a/examples/docs/resources/pc/demo/checkbox/content-overflow.spec.ts b/examples/docs/resources/pc/demo/checkbox/content-overflow.spec.ts new file mode 100644 index 000000000..c5d007c15 --- /dev/null +++ b/examples/docs/resources/pc/demo/checkbox/content-overflow.spec.ts @@ -0,0 +1,11 @@ +import { test, expect } from '@playwright/test'; + +test('内容超出时的提示信息', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()); + await page.goto('http://localhost:7130/pc/checkbox/content-overflow'); + const preview = page.locator('#preview'); + const label = preview.locator('.tiny-checkbox__label > div').first(); + await expect(label).toHaveClass(/content-overflow/); + await label.hover(); + await expect(preview.locator('.tiny-tooltip').filter({ hasText: '备选项1 提示文字 提示文字' })).toBeVisible(); +}) \ No newline at end of file diff --git a/examples/docs/resources/pc/demo/checkbox/dynamic-create-checkbox.spec.ts b/examples/docs/resources/pc/demo/checkbox/dynamic-create-checkbox.spec.ts new file mode 100644 index 000000000..4d2973be0 --- /dev/null +++ b/examples/docs/resources/pc/demo/checkbox/dynamic-create-checkbox.spec.ts @@ -0,0 +1,11 @@ +import { test, expect } from '@playwright/test'; + +test('动态生成复选框组', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()); + await page.goto('http://localhost:7130/pc/checkbox/dynamic-create-checkbox'); + const preview = page.locator('#preview'); + await preview.getByRole('checkbox', { name: '上海' }).filter({ hasText: '上海' }).click(); + await expect(page.getByText('当前选择:["北京","广州","上海"]')).toBeVisible(); + await preview.getByRole('checkbox', { name: '上海' }).filter({ hasText: '上海' }).click(); + await expect(page.getByText('当前选择:["北京","广州"]')).toBeVisible(); +}) \ No newline at end of file diff --git a/examples/docs/resources/pc/demo/checkbox/group-options.spec.ts b/examples/docs/resources/pc/demo/checkbox/group-options.spec.ts new file mode 100644 index 000000000..70b1d4122 --- /dev/null +++ b/examples/docs/resources/pc/demo/checkbox/group-options.spec.ts @@ -0,0 +1,9 @@ +import { test, expect } from '@playwright/test'; + +test('配置式复选框组', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()); + await page.goto('http://localhost:7130/pc/checkbox/group-options'); + const preview = page.locator('#preview'); + await preview.getByText('很好').click(); + await expect(page.locator('.tiny-modal__body').filter({ hasText: 'click' })).toBeVisible(); +}) \ No newline at end of file diff --git a/examples/docs/resources/pc/demo/checkbox/indeterminate.spec.ts b/examples/docs/resources/pc/demo/checkbox/indeterminate.spec.ts new file mode 100644 index 000000000..d3238a2aa --- /dev/null +++ b/examples/docs/resources/pc/demo/checkbox/indeterminate.spec.ts @@ -0,0 +1,25 @@ +import { test, expect } from '@playwright/test'; + +test('禁用', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()); + await page.goto('http://localhost:7130/pc/checkbox/indeterminate'); + const preview = page.locator('#preview'); + await preview.locator('.tiny-switch').click(); + const indeterminate = preview.locator('label').filter({ hasText: '全选' }).locator('span').first(); + await expect(indeterminate).toHaveClass(/is-disabled/); + await expect(page.locator('label').filter({ hasText: '北京' }).locator('span').first()).toHaveClass(/is-disabled/); + await expect(page.locator('label').filter({ hasText: '广州' }).locator('span').first()).toHaveClass(/is-disabled/); +}) + +test('全选、半选', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()); + await page.goto('http://localhost:7130/pc/checkbox/indeterminate'); + const preview = page.locator('#preview'); + const indeterminate = preview.locator('label').filter({ hasText: '全选' }).locator('span').first(); + await expect(indeterminate).toHaveClass(/is-indeterminate/); + await page.locator('label').filter({ hasText: '广州' }).locator('span').nth(1).click(); + await page.locator('label').filter({ hasText: '深圳' }).locator('span').nth(1).click(); + await expect(indeterminate).toHaveClass(/is-indeterminate/); + await page.locator('label').filter({ hasText: '上海' }).locator('span').nth(1).click(); + await expect(indeterminate).toHaveClass(/is-checked/); +}) \ No newline at end of file diff --git a/examples/docs/resources/pc/demo/checkbox/min-max.spec.ts b/examples/docs/resources/pc/demo/checkbox/min-max.spec.ts new file mode 100644 index 000000000..089add57e --- /dev/null +++ b/examples/docs/resources/pc/demo/checkbox/min-max.spec.ts @@ -0,0 +1,16 @@ +import { test, expect } from '@playwright/test'; + +test('可选数量限制', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()); + await page.goto('http://localhost:7130/pc/checkbox/min-max'); + const preview = page.locator('#preview'); + const labels = preview.locator('.tiny-checkbox-group > label'); + const disabledLabels = labels.locator('.is-disabled'); + const checkedLabels = labels.locator('.is-checked'); + await expect(disabledLabels).toHaveCount(2); + await expect(labels.locator('.is-checked.is-disabled')).toHaveCount(0); + await page.locator('label').filter({ hasText: '北京' }).locator('span').nth(1).click(); + await expect(disabledLabels).toHaveCount(1); + await expect(checkedLabels).toHaveCount(1); + await expect(labels.locator('.is-checked.is-disabled')).toHaveCount(1); +}); \ No newline at end of file diff --git a/examples/docs/resources/pc/demo/checkbox/text.spec.ts b/examples/docs/resources/pc/demo/checkbox/text.spec.ts new file mode 100644 index 000000000..0d0dd5597 --- /dev/null +++ b/examples/docs/resources/pc/demo/checkbox/text.spec.ts @@ -0,0 +1,10 @@ +import { test, expect } from '@playwright/test'; + +test('文本', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()); + await page.goto('http://localhost:7130/pc/checkbox/text'); + const preview = page.locator('#preview'); + await preview.locator('span').nth(2).click(); + await preview.getByRole('button', { name: '获取文本' }).click(); + await expect(page.locator('.tiny-modal').filter({ hasText: 'change 事件,当前选中的值为:真文本' })).toBeVisible(); +}) \ No newline at end of file diff --git a/examples/docs/resources/pc/demo/checkbox/vertical-checkbox.spec.ts b/examples/docs/resources/pc/demo/checkbox/vertical-checkbox.spec.ts new file mode 100644 index 000000000..9c092385f --- /dev/null +++ b/examples/docs/resources/pc/demo/checkbox/vertical-checkbox.spec.ts @@ -0,0 +1,25 @@ +import { test, expect } from '@playwright/test'; + +test('垂直布局', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()); + await page.goto('http://localhost:7130/pc/checkbox/vertical-checkbox'); + const preview = page.locator('#preview'); + const checkedLabelBJ = preview.getByRole('checkbox', { name: '北京' }).filter({ hasText: '北京' }) + await checkedLabelBJ.click(); + await expect(checkedLabelBJ).toHaveClass(/is-checked/); + const checkedLabelSH = preview.getByRole('checkbox', { name: '上海' }).filter({ hasText: '上海' }) + await checkedLabelSH.click(); + await expect(checkedLabelSH).not.toHaveClass(/is-checked/); + const checkedLabelGZ = preview.getByRole('checkbox', { name: '广州' }).filter({ hasText: '广州' }) + await checkedLabelGZ.click(); + await expect(checkedLabelGZ).toHaveClass(/is-checked/); + const checkedLabelSZ = preview.getByRole('checkbox', { name: '深圳' }).filter({ hasText: '深圳' }) + await checkedLabelSZ.click(); + await expect(checkedLabelSZ).toHaveClass(/is-checked/); + const parentWrapper = preview.locator('div.tiny-checkbox-group.is-vertical'); + await expect(parentWrapper).toHaveCSS('display', 'inline-block'); + await expect(checkedLabelBJ).toHaveCSS('display', 'block'); + await expect(checkedLabelSH).toHaveCSS('display', 'block'); + await expect(checkedLabelGZ).toHaveCSS('display', 'block'); + await expect(checkedLabelSZ).toHaveCSS('display', 'block'); +}) \ No newline at end of file diff --git a/examples/docs/resources/pc/demo/checkbox/with-border.spec.ts b/examples/docs/resources/pc/demo/checkbox/with-border.spec.ts new file mode 100644 index 000000000..0fbe6a197 --- /dev/null +++ b/examples/docs/resources/pc/demo/checkbox/with-border.spec.ts @@ -0,0 +1,26 @@ +import { test, expect } from '@playwright/test'; + +test('尺寸', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()); + await page.goto('http://localhost:7130/pc/checkbox/with-border'); + const checkedLabelGZ = page.getByRole('checkbox', { name: '广州' }).filter({ hasText: '广州' }); + // 点击第1个选项 + await checkedLabelGZ.first().click(); + await expect(checkedLabelGZ.first()).toHaveClass(/is-checked/); + let box = await checkedLabelGZ.first().boundingBox(); + // 判断高度是否符合 + await expect(box?.height).toBeCloseTo(42); + await checkedLabelGZ.nth(1).click(); + await expect(checkedLabelGZ.nth(1)).toHaveClass(/is-checked/); + box = await checkedLabelGZ.nth(1).boundingBox(); + await expect(box?.height).toBeCloseTo(36); + await checkedLabelGZ.nth(2).click(); + await expect(checkedLabelGZ.nth(2)).toHaveClass(/is-checked/); + box = await checkedLabelGZ.nth(2).boundingBox(); + await expect(box?.height).toBeCloseTo(30); + await checkedLabelGZ.nth(3).click(); + await expect(checkedLabelGZ.nth(3)).toHaveClass(/is-checked/); + box = await checkedLabelGZ.nth(3).boundingBox(); + await expect(Math.floor(box?.height || 24)).toBeCloseTo(24); + await expect(checkedLabelGZ.nth(4)).toHaveClass(/is-disabled/); +}) \ No newline at end of file diff --git a/examples/docs/resources/pc/demo/collapse/accordion.spec.ts b/examples/docs/resources/pc/demo/collapse/accordion.spec.ts new file mode 100644 index 000000000..747cdd57a --- /dev/null +++ b/examples/docs/resources/pc/demo/collapse/accordion.spec.ts @@ -0,0 +1,16 @@ +import { test, expect } from '@playwright/test' + +test('Collapse 手风琴模式', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('http://localhost:7130/pc/collapse/accordion') + + const header = page.locator('.tiny-collapse-item__header') + const content = page.locator('.tiny-collapse-item__wrap') + + // 内容折叠时点击标题展开,该项内容展开,其他内容折叠 + await expect(content.first()).not.toHaveCSS('display', 'none') + await header.nth(1).click() + await expect(header.nth(1)).toHaveClass(/is-active/) + await expect(content.nth(1)).not.toHaveCSS('display', 'none') + await expect(content.first()).toHaveCSS('display', 'none') +}) diff --git a/examples/docs/resources/pc/demo/collapse/basic-usage.spec.ts b/examples/docs/resources/pc/demo/collapse/basic-usage.spec.ts new file mode 100644 index 000000000..b38de720e --- /dev/null +++ b/examples/docs/resources/pc/demo/collapse/basic-usage.spec.ts @@ -0,0 +1,26 @@ +import { test, expect } from '@playwright/test' + +test('Collapse 基础用法', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('http://localhost:7130/pc/collapse/basic-usage') + + const header = page.locator('.tiny-collapse-item__header') + const content = page.locator('.tiny-collapse-item__wrap') + const arrow = page.locator('.tiny-collapse-item__arrow') + + // 内容折叠时点击标题展开,再次点击折叠 + await expect(content.nth(1)).toHaveCSS('display', 'none') + await header.nth(1).click() + await expect(header.nth(1)).toHaveClass(/is-active/) + await expect(content.nth(1)).not.toHaveCSS('display', 'none') + await header.nth(1).click() + await expect(header.nth(1)).not.toHaveClass(/is-active/) + await expect(content.nth(1)).toHaveCSS('display', 'none') + + // 内容展开时,标题箭头向上 + await expect(content.first()).not.toHaveCSS('display', 'none') + await expect(arrow.first()).toHaveCSS('transform', 'matrix(0, -1, 1, 0, 0, 0)') + await header.first().click() + await expect(content.first()).toHaveCSS('display', 'none') + await expect(arrow.first()).toHaveCSS('transform', 'matrix(0, 1, -1, 0, 0, 0)') +}) diff --git a/examples/docs/resources/pc/demo/collapse/block-close.spec.ts b/examples/docs/resources/pc/demo/collapse/block-close.spec.ts new file mode 100644 index 000000000..d3241b331 --- /dev/null +++ b/examples/docs/resources/pc/demo/collapse/block-close.spec.ts @@ -0,0 +1,18 @@ +import { test, expect } from '@playwright/test' + +test('Collapse 阻止折叠面板关闭事件', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('http://localhost:7130/pc/collapse/block-close') + + const modal = page.locator('.tiny-modal') + const header = page.locator('.tiny-collapse-item__header') + const content = page.locator('.tiny-collapse-item__wrap') + + // 点击标题,展开的内容不折叠 + await expect(header.first()).toHaveClass(/is-active/) + await expect(content.first()).not.toHaveCSS('display', 'none') + await header.first().click() + await expect(header.first()).toHaveClass(/is-active/) + await expect(modal).toHaveText(/阻止面板关闭/) + await expect(content.first()).not.toHaveCSS('display', 'none') +}) diff --git a/examples/docs/resources/pc/demo/collapse/collapse-events.spec.ts b/examples/docs/resources/pc/demo/collapse/collapse-events.spec.ts new file mode 100644 index 000000000..f1bd74382 --- /dev/null +++ b/examples/docs/resources/pc/demo/collapse/collapse-events.spec.ts @@ -0,0 +1,13 @@ +import { test, expect } from '@playwright/test' + +test('Collapse 折叠面板事件', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('http://localhost:7130/pc/collapse/collapse-events') + + const header = page.locator('.tiny-collapse-item__header') + const modal = page.locator('.tiny-modal') + + // 点击标题,事件执行 + await header.first().click() + await expect(modal).toBeVisible() +}) diff --git a/examples/docs/resources/pc/demo/collapse/custom-collapse-icon.spec.ts b/examples/docs/resources/pc/demo/collapse/custom-collapse-icon.spec.ts new file mode 100644 index 000000000..aee359ec9 --- /dev/null +++ b/examples/docs/resources/pc/demo/collapse/custom-collapse-icon.spec.ts @@ -0,0 +1,19 @@ +import { test, expect } from '@playwright/test' + +test('Collapse 自定义展开折叠图标', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('http://localhost:7130/pc/collapse/custom-collapse-icon') + + const header = page.locator('.tiny-collapse-item__header') + const content = page.locator('.tiny-collapse-item__wrap') + const customArrow = page.locator('.tiny-collapse-item__arrow').first() + + // 自定义图标,内容展开时,标题箭头向上 + await expect(customArrow.locator('svg')).toHaveClass(/icon-delta-right/) + await expect(content.first()).not.toHaveCSS('display', 'none') + await expect(customArrow).toHaveCSS('transform', 'matrix(0, -1, 1, 0, 0, 0)') + await header.first().click() + await expect(header.first()).not.toHaveClass(/is-active/) + await expect(content.first()).toHaveCSS('display', 'none') + await expect(customArrow).toHaveCSS('transform', 'matrix(0, 1, -1, 0, 0, 0)') +}) diff --git a/examples/docs/resources/pc/demo/collapse/custom-collapse-title.spec.ts b/examples/docs/resources/pc/demo/collapse/custom-collapse-title.spec.ts new file mode 100644 index 000000000..34dfdf47d --- /dev/null +++ b/examples/docs/resources/pc/demo/collapse/custom-collapse-title.spec.ts @@ -0,0 +1,10 @@ +import { test, expect } from '@playwright/test' + +test('Collapse 自定义面板标题', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('http://localhost:7130/pc/collapse/custom-collapse-title') + + const header = page.locator('.tiny-collapse-item__header') + await expect(header.first().locator('span')).toBeVisible() + await expect(header.nth(1).locator('div')).not.toHaveCount(0) +}) diff --git a/examples/docs/resources/pc/demo/collapse/dynamic-disable.spec.ts b/examples/docs/resources/pc/demo/collapse/dynamic-disable.spec.ts new file mode 100644 index 000000000..851908880 --- /dev/null +++ b/examples/docs/resources/pc/demo/collapse/dynamic-disable.spec.ts @@ -0,0 +1,15 @@ +import { test, expect } from '@playwright/test' + +test('Collapse 禁用状态', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('http://localhost:7130/pc/collapse/dynamic-disable') + + const disabledItem = page.locator('.tiny-collapse-item').nth(2) + const disabledHeader = page.locator('.tiny-collapse-item__header').nth(2) + const disabledContent = page.locator('.tiny-collapse-item__wrap').nth(2) + + await expect(disabledItem).toHaveClass(/is-disabled/) + await expect(disabledContent).toHaveCSS('display', 'none') + await disabledHeader.click() + await expect(disabledContent).toHaveCSS('display', 'none') +}) diff --git a/examples/docs/resources/pc/demo/collapse/nested-form.spec.ts b/examples/docs/resources/pc/demo/collapse/nested-form.spec.ts new file mode 100644 index 000000000..526324430 --- /dev/null +++ b/examples/docs/resources/pc/demo/collapse/nested-form.spec.ts @@ -0,0 +1,9 @@ +import { test, expect } from '@playwright/test' + +test('Collapse 嵌套表单', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('http://localhost:7130/pc/collapse/nested-form') + + const content = page.locator('.tiny-collapse-item__content') + await expect(content.locator('.tiny-form')).toBeVisible() +}) diff --git a/examples/docs/resources/pc/demo/collapse/nested-grid.spec.ts b/examples/docs/resources/pc/demo/collapse/nested-grid.spec.ts new file mode 100644 index 000000000..73e55daa6 --- /dev/null +++ b/examples/docs/resources/pc/demo/collapse/nested-grid.spec.ts @@ -0,0 +1,9 @@ +import { test, expect } from '@playwright/test' + +test('Collapse 嵌套表格', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('http://localhost:7130/pc/collapse/nested-grid') + + const content = page.locator('.tiny-collapse-item__content') + await expect(content.locator('.tiny-grid')).toBeVisible() +}) diff --git a/examples/docs/resources/pc/demo/company/basic-usage.spec.ts b/examples/docs/resources/pc/demo/company/basic-usage.spec.ts new file mode 100644 index 000000000..37dc0239c --- /dev/null +++ b/examples/docs/resources/pc/demo/company/basic-usage.spec.ts @@ -0,0 +1,25 @@ +import { test, expect } from '@playwright/test' + +test('基本用法', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).not.toBeNull()) + await page.goto('http://localhost:7130/pc/company/basic-usage') + + const select = page.getByPlaceholder('请选择') + const dropdown = page.locator('.tiny-select-dropdown.tiny-popper') + const icon = page.locator('#preview svg').nth(1) + const modal = page.locator('.tiny-modal') + const text = page.getByText('当前选中值:') + + await expect(select).toHaveCount(1) + await expect(text).toHaveCount(1) + await text.isVisible() + await expect(dropdown).not.toBeVisible() + + // 展开和收回下拉框测试 + await icon.click() + await expect(dropdown).toBeVisible() + await expect(modal.nth(0)).toHaveText('visible:true') + await icon.click() + await expect(dropdown).not.toBeVisible() + await expect(modal.nth(1)).toHaveText('visible:false') +}) diff --git a/examples/docs/resources/pc/demo/company/custom-service.spec.ts b/examples/docs/resources/pc/demo/company/custom-service.spec.ts new file mode 100644 index 000000000..315c8259f --- /dev/null +++ b/examples/docs/resources/pc/demo/company/custom-service.spec.ts @@ -0,0 +1,33 @@ +import { test, expect } from '@playwright/test' + +test('自定义服务', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).not.toBeNull()) + await page.goto('http://localhost:7130/pc/company/custom-service') + + const expand = page.locator('#preview svg').nth(1) + const clear = page.locator('#preview svg').nth(2) + const dropdownItems = page.locator('.tiny-option.tiny-select-dropdown__item') + const input = page.locator('#preview').getByPlaceholder('请输入') + const count = 2 + const companys = ['一', '二'] + const modal = page.locator('.tiny-modal') + + // 展开 + await expand.click() + await expect(dropdownItems).toHaveCount(count) + for (let i = 0; i < count; i++) { + await expect(dropdownItems.nth(i)).toHaveText(`公司${companys[i]}`) + } + + // 选择 + await dropdownItems.nth(0).click() + await expect(modal.nth(0)).toHaveText('change:0001') + await expect(input).toHaveValue('公司一') + await input.hover() + + // 清空 + await clear.click() + await expect(modal.nth(1)).toHaveText('change:') + await expect(modal.nth(2)).toHaveText('clear:触发了') + await expect(input).toHaveValue('') +}) diff --git a/examples/docs/resources/pc/demo/company/custom-service.vue b/examples/docs/resources/pc/demo/company/custom-service.vue index 41f7dbe93..84d69410e 100644 --- a/examples/docs/resources/pc/demo/company/custom-service.vue +++ b/examples/docs/resources/pc/demo/company/custom-service.vue @@ -1,9 +1,19 @@ diff --git a/examples/docs/resources/pc/demo/floatbar/operation-floatbar-item.spec.ts b/examples/docs/resources/pc/demo/floatbar/operation-floatbar-item.spec.ts new file mode 100644 index 000000000..cd6945841 --- /dev/null +++ b/examples/docs/resources/pc/demo/floatbar/operation-floatbar-item.spec.ts @@ -0,0 +1,15 @@ +import { test, expect } from '@playwright/test' + +test('操作浮动块内容', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('http://localhost:7130/pc/floatbar/operation-floatbar-item') + + const floatbar = page.locator('#preview .tiny-float-bar') + const item = floatbar.getByRole('listitem').filter({ hasText: 'custom-Add' }) + await page.getByRole('button', { name: '增加一项' }).click() + await expect(item).toBeVisible() + await page.getByRole('button', { name: '删除一项' }).click() + await expect(item).not.toBeVisible() + await page.getByRole('button', { name: '删除所有项' }).click() + await expect(floatbar.getByRole('listitem')).toHaveCount(0) +}) \ No newline at end of file diff --git a/examples/docs/resources/pc/demo/form/custom-validation-rule.spec.js b/examples/docs/resources/pc/demo/form/custom-validation-rule.spec.js new file mode 100644 index 000000000..139fc010b --- /dev/null +++ b/examples/docs/resources/pc/demo/form/custom-validation-rule.spec.js @@ -0,0 +1,93 @@ +import { test, expect } from '@playwright/test' + +test('测试有密码校验', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('http://localhost:7130/pc/form/custom-validation-rule') + + const preview = page.locator('#preview') + const form = preview.locator('.tiny-form') + const submitButton = form.getByRole('button', { name: '注册' }) + const username = form.locator('input[type="text"]') + const password = form.locator('input[type="password"]') + const usernameValid = page.getByText('表单项被校验后触发的事件,所校验字段为:username') + const passwordValid = page.getByText('表单项被校验后触发的事件,所校验字段为:password') + + // 校验提示出现 + await submitButton.click() + await expect(usernameValid).toBeVisible() + await expect(page.getByText('校验不通过!!')).toBeVisible() + await expect(passwordValid).toBeVisible() + await expect(preview.getByText('必填').first()).toBeVisible() + await expect(preview.getByText('必填').nth(1)).toBeVisible() + + const noValidUsername = '1' + const validUsername = '123' + const noValidPassword = '1' + const validPassword = 'Test1234' + await username.click() + await username.fill(noValidUsername) + await expect(preview.getByText('长度必须不小于2')).toBeVisible() + await username.fill(validUsername) + await expect(preview.getByText('长度必须不小于2')).not.toBeVisible() + await password.click() + await password.fill(noValidPassword) + await password.blur() + await expect(preview.getByText('最少八个字符,至少包含一个大写字母,一个小写字母和一个数字')).toBeVisible() + await password.click() + await password.fill(validPassword) + await password.blur() + await expect(preview.getByText('最少八个字符,至少包含一个大写字母,一个小写字母和一个数字')).not.toBeVisible() + // 检验提示不出现 + await submitButton.click() + await expect(page.getByText('校验不通过!!')).not.toBeVisible() + await expect(passwordValid).not.toBeVisible() + await expect(preview.getByText('必填').first()).not.toBeVisible() + await expect(preview.getByText('必填').nth(1)).not.toBeVisible() +}) + +test('测试清除密码校验', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('http://localhost:7130/pc/form/custom-validation-rule') + + const preview = page.locator('#preview') + const form = preview.locator('.tiny-form') + const cleanButton = form.getByRole('button', { name: '清除密码校验' }) + const submitButton = form.getByRole('button', { name: '注册' }) + const username = form.locator('input[type="text"]') + const password = form.locator('input[type="password"]') + const usernameValid = page.getByText('表单项被校验后触发的事件,所校验字段为:username') + const passwordValid = page.getByText('表单项被校验后触发的事件,所校验字段为:password') + + // 校验提示出现 + await cleanButton.click() + await submitButton.click() + await expect(usernameValid).toBeVisible() + await expect(page.getByText('校验不通过!!')).toBeVisible() + await expect(passwordValid).not.toBeVisible() + await expect(preview.getByText('必填').first()).toBeVisible() + await expect(preview.getByText('必填').nth(1)).not.toBeVisible() + + const noValidUsername = '1' + const validUsername = '123' + const noValidPassword = '1' + const validPassword = 'Test1234' + await username.click() + await username.fill(noValidUsername) + await expect(preview.getByText('长度必须不小于2')).toBeVisible() + await username.fill(validUsername) + await expect(preview.getByText('长度必须不小于2')).not.toBeVisible() + await password.click() + await password.fill(noValidPassword) + await password.blur() + await expect(preview.getByText('最少八个字符,至少包含一个大写字母,一个小写字母和一个数字')).not.toBeVisible() + await password.click() + await password.fill(validPassword) + await password.blur() + await expect(preview.getByText('最少八个字符,至少包含一个大写字母,一个小写字母和一个数字')).not.toBeVisible() + // 检验提示不出现 + await submitButton.click() + await expect(page.getByText('校验不通过!!')).not.toBeVisible() + await expect(passwordValid).not.toBeVisible() + await expect(preview.getByText('必填').first()).not.toBeVisible() + await expect(preview.getByText('必填').nth(1)).not.toBeVisible() +}) diff --git a/examples/docs/resources/pc/demo/form/custom-validation-rule.vue b/examples/docs/resources/pc/demo/form/custom-validation-rule.vue index 8b5882033..75a48dadc 100644 --- a/examples/docs/resources/pc/demo/form/custom-validation-rule.vue +++ b/examples/docs/resources/pc/demo/form/custom-validation-rule.vue @@ -17,8 +17,12 @@ - 注册 - 清除密码校验 + + 注册 + + + 清除密码校验 + diff --git a/examples/docs/resources/pc/demo/form/form-clear-validate.spec.js b/examples/docs/resources/pc/demo/form/form-clear-validate.spec.js new file mode 100644 index 000000000..58762fc98 --- /dev/null +++ b/examples/docs/resources/pc/demo/form/form-clear-validate.spec.js @@ -0,0 +1,29 @@ +import { test, expect } from '@playwright/test' + +test('测试移除校验是否成功', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('http://localhost:7130/pc/form/form-clear-validate') + + const preview = page.locator('#preview') + const form = preview.locator('.tiny-form') + const submitButton = form.getByRole('button', { name: '提交' }) + const cleanButton = form.getByRole('button', { name: '移除表单校验' }) + // 必填的tooltip提示 + const requiredTip = page.locator('.tiny-tooltip').getByText('必填') + // 日期校验tooltip提示 + const dateTip = page.locator('.tiny-tooltip').getByText('不符合规则的日期格式') + + await submitButton.click() + await expect(requiredTip.first()).toBeVisible() + await expect(requiredTip.nth(1)).toBeVisible() + await expect(requiredTip.nth(2)).toBeVisible() + await expect(requiredTip.nth(3)).toBeVisible() + await expect(dateTip).toBeVisible() + + await cleanButton.click() + await expect(requiredTip.first()).not.toBeVisible() + await expect(requiredTip.nth(1)).not.toBeVisible() + await expect(requiredTip.nth(2)).not.toBeVisible() + await expect(requiredTip.nth(3)).not.toBeVisible() + await expect(dateTip).not.toBeVisible() +}) diff --git a/examples/docs/resources/pc/demo/form/form-clear-validate.vue b/examples/docs/resources/pc/demo/form/form-clear-validate.vue index 7922307af..a6db9ed46 100644 --- a/examples/docs/resources/pc/demo/form/form-clear-validate.vue +++ b/examples/docs/resources/pc/demo/form/form-clear-validate.vue @@ -23,8 +23,12 @@ - 移除表单校验 - 提交 + + 移除表单校验 + + + 提交 + diff --git a/examples/docs/resources/pc/demo/form/form-disabled.spec.js b/examples/docs/resources/pc/demo/form/form-disabled.spec.js new file mode 100644 index 000000000..233423383 --- /dev/null +++ b/examples/docs/resources/pc/demo/form/form-disabled.spec.js @@ -0,0 +1,73 @@ +import { test, expect } from '@playwright/test' + +test('测试表单禁用', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('http://localhost:7130/pc/form/form-disabled') + + const preview = page.locator('#preview') + const form = preview.locator('.tiny-form') + const disabledButton = preview.getByRole('button', { name: '禁用表单' }) + const startButton = preview.getByRole('button', { name: '启用表单' }) + const formItem = form.locator('.tiny-form-item') + const slider = formItem.nth(18).locator('.tiny-slider__handle') + + // 设置视口宽高,否则滑动不在视口中则无法拖动 + await page.setViewportSize({ + width: 1400, + height: 1200 + }) + + await disabledButton.click() + await expect(formItem.first().locator('input')).toBeDisabled() + await expect(formItem.nth(1).locator('input')).toBeDisabled() + await expect(formItem.nth(2).locator('.tiny-numeric__input')).toHaveClass(/is-disabled/) + await expect(formItem.nth(3).locator('.tiny-switch')).toHaveClass(/tiny-switch-disabled/) + await expect(formItem.nth(4).locator('input').first()).toBeDisabled() + await expect(formItem.nth(5).locator('input').nth(1)).toBeDisabled() + await expect(formItem.nth(6).locator('input').first()).toBeDisabled() + await expect(formItem.nth(7).locator('input').first()).toBeDisabled() + await expect(formItem.nth(8).locator('input')).toBeDisabled() + await expect(formItem.nth(9).locator('input')).toBeDisabled() + await expect(formItem.nth(10).locator('input')).toBeDisabled() + await expect(formItem.nth(11).locator('textarea')).toBeDisabled() + await expect(formItem.nth(12).locator('input')).toBeDisabled() + await expect(formItem.nth(13).locator('button').first()).toHaveClass(/disabled/) + await expect(formItem.nth(14).locator('input')).toBeDisabled() + await expect(formItem.nth(15).locator('input').first()).toBeDisabled() + await expect(formItem.nth(17).locator('input').first()).toBeDisabled() + // 尝试拖到滑块,应是无法拖动状态 + const { x, y, height } = await slider.boundingBox() + await page.mouse.move(x, y + (height / 2)) + await page.mouse.down() + await page.mouse.move(x + 50, y + (height / 2)) + await page.mouse.up() + const { x: newX } = await slider.boundingBox() + expect(newX).toEqual(x) + + await startButton.click() + await expect(formItem.first().locator('input')).not.toBeDisabled() + await expect(formItem.nth(1).locator('input')).not.toBeDisabled() + await expect(formItem.nth(2).locator('.tiny-numeric__input')).not.toHaveClass(/is-disabled/) + await expect(formItem.nth(3).locator('.tiny-switch')).not.toHaveClass(/tiny-switch-disabled/) + await expect(formItem.nth(4).locator('input').first()).not.toBeDisabled() + await expect(formItem.nth(5).locator('input').nth(1)).not.toBeDisabled() + await expect(formItem.nth(6).locator('input').first()).not.toBeDisabled() + await expect(formItem.nth(7).locator('input').first()).not.toBeDisabled() + await expect(formItem.nth(8).locator('input')).not.toBeDisabled() + await expect(formItem.nth(9).locator('input')).not.toBeDisabled() + await expect(formItem.nth(10).locator('input')).not.toBeDisabled() + await expect(formItem.nth(11).locator('textarea')).not.toBeDisabled() + await expect(formItem.nth(12).locator('input')).not.toBeDisabled() + await expect(formItem.nth(13).locator('button').first()).not.toHaveClass(/disabled/) + await expect(formItem.nth(14).locator('input')).not.toBeDisabled() + await expect(formItem.nth(15).locator('input').first()).not.toBeDisabled() + await expect(formItem.nth(17).locator('input').first()).not.toBeDisabled() + // 尝试拖到滑块,应是可以拖动状态 + const sliderBox = await slider.boundingBox() + await page.mouse.move(sliderBox.x, sliderBox.y + (sliderBox.height / 2)) + await page.mouse.down() + await page.mouse.move(sliderBox.x + 50, sliderBox.y + (sliderBox.height / 2)) + await page.mouse.up() + const afterSliderBox = await slider.boundingBox() + expect(sliderBox.x).toBeLessThan(afterSliderBox.x) +}) diff --git a/examples/docs/resources/pc/demo/form/form-disabled.vue b/examples/docs/resources/pc/demo/form/form-disabled.vue index 74777ce37..94336d3cb 100644 --- a/examples/docs/resources/pc/demo/form/form-disabled.vue +++ b/examples/docs/resources/pc/demo/form/form-disabled.vue @@ -23,12 +23,18 @@ - + + 男 + - 复选框 - 复选框2 + + 复选框 + + + 复选框2 + @@ -55,7 +61,8 @@ - + + - 提交 + + 提交 + diff --git a/examples/docs/resources/pc/demo/form/form-in-row.spec.js b/examples/docs/resources/pc/demo/form/form-in-row.spec.js new file mode 100644 index 000000000..32028a815 --- /dev/null +++ b/examples/docs/resources/pc/demo/form/form-in-row.spec.js @@ -0,0 +1,31 @@ +import { test, expect } from '@playwright/test' + +test('测试行内表单', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('http://localhost:7130/pc/form/form-in-row') + + const preview = page.locator('#preview') + const form = preview.locator('.tiny-form') + const item1 = form.locator('.tiny-form-item').first() + const item2 = form.locator('.tiny-form-item').nth(1) + + // 测试单行情况 + await page.setViewportSize({ + width: 1400, + height: 700 + }) + await page.waitForTimeout(200) + let box1 = await item1.boundingBox() + let box2 = await item2.boundingBox() + expect(box1.y).toEqual(box2.y) + + // 测试换行情况 + await page.setViewportSize({ + width: 900, + height: 700 + }) + await page.waitForTimeout(200) + box1 = await item1.boundingBox() + box2 = await item2.boundingBox() + expect(box1.y).toBeLessThan(box2.y) +}) diff --git a/examples/docs/resources/pc/demo/form/form-in-row.vue b/examples/docs/resources/pc/demo/form/form-in-row.vue index 7ec95af22..a9ee7fec8 100644 --- a/examples/docs/resources/pc/demo/form/form-in-row.vue +++ b/examples/docs/resources/pc/demo/form/form-in-row.vue @@ -4,7 +4,9 @@ - + + 男 + diff --git a/examples/docs/resources/pc/demo/form/form-row-col.spec.js b/examples/docs/resources/pc/demo/form/form-row-col.spec.js new file mode 100644 index 000000000..61916c356 --- /dev/null +++ b/examples/docs/resources/pc/demo/form/form-row-col.spec.js @@ -0,0 +1,23 @@ +import { test, expect } from '@playwright/test' + +test('测试表单复杂布局', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('http://localhost:7130/pc/form/form-row-col') + + const preview = page.locator('#preview') + const form = preview.locator('.tiny-form') + const formItem = form.locator('.tiny-form-item') + + const item1Box = await formItem.first().boundingBox() + const item2Box = await formItem.nth(1).boundingBox() + const item3Box = await formItem.nth(2).boundingBox() + const item4Box = await formItem.nth(3).boundingBox() + const item5Box = await formItem.nth(4).boundingBox() + // 表单第一项和第二项在同一水平线且宽度相同 + expect(item1Box.y).toEqual(item2Box.y) + expect(item1Box.width).toEqual(item2Box.width) + // 表单第三项和第四项在同一水平线且宽度相同 + expect(item3Box.y).toEqual(item4Box.y) + expect(item3Box.width).toEqual(item4Box.width) + expect(item4Box.y).toBeLessThan(item5Box.y) +}) diff --git a/examples/docs/resources/pc/demo/form/form-row-col.vue b/examples/docs/resources/pc/demo/form/form-row-col.vue index 7c8f58f6d..571849746 100644 --- a/examples/docs/resources/pc/demo/form/form-row-col.vue +++ b/examples/docs/resources/pc/demo/form/form-row-col.vue @@ -35,7 +35,9 @@ - 提交 + + 提交 + diff --git a/examples/docs/resources/pc/demo/form/form-validation.spec.js b/examples/docs/resources/pc/demo/form/form-validation.spec.js new file mode 100644 index 000000000..4a91405eb --- /dev/null +++ b/examples/docs/resources/pc/demo/form/form-validation.spec.js @@ -0,0 +1,104 @@ +import { test, expect } from '@playwright/test' + +test('测试表单校验规则', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('http://localhost:7130/pc/form/form-validation') + + const preview = page.locator('#preview') + const form = preview.locator('.tiny-form') + + // 直接提交,查看是否出现检验提示 + await form.getByRole('button', { name: '提交' }).click() + await expect(page.getByRole('tooltip', { name: '必填' }).first()).toBeVisible() + await expect(page.getByRole('tooltip', { name: '不符合规则的日期格式' })).toBeVisible() + await expect(page.getByRole('tooltip', { name: '必填' }).nth(1)).toBeVisible() + await expect(page.getByRole('tooltip', { name: '必填' }).nth(2)).toBeVisible() + await expect(page.getByRole('tooltip', { name: '必填 2~11 之间的数字' })).toBeVisible() + await expect(page.getByRole('tooltip', { name: '必填1.1.1.1' })).toBeVisible() +}) + +test('测试表单输入变化和失焦是否出现校验', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('http://localhost:7130/pc/form/form-validation') + + const preview = page.locator('#preview') + const form = preview.locator('.tiny-form') + const formItem = form.locator('.tiny-form-item') + const requiredTip = page.getByRole('tooltip', { name: '必填' }) + + // 对长度有要求的检验 + const firstInput = formItem.first().locator('input') + await firstInput.click() + await firstInput.blur() + await expect(requiredTip.first()).toBeVisible() + await firstInput.fill('1') + await expect(requiredTip.first()).not.toBeVisible() + await expect(page.getByRole('tooltip', { name: '长度必须不小于2' })).toBeVisible() + await firstInput.fill('111') + await expect(page.getByRole('tooltip', { name: '长度必须不小于2' })).not.toBeVisible() + + // 日期选择器的校验 + const datePicker = form.locator('.tiny-date-editor').first().locator('input') + await datePicker.click() + // 点击第一项输入去触发失焦,调用blur事件不会将日期选择器收起 + await firstInput.click() + await expect(page.getByRole('tooltip', { name: '不符合规则的日期格式' })).toBeVisible() + await datePicker.click() + await page.locator('.tiny-date-picker').getByText('15').click() + await expect(page.getByRole('tooltip', { name: '不符合规则的日期格式' })).not.toBeVisible() + + // url输入框 + const urlInput = formItem.nth(2).locator('input') + const validUrl = 'https://test.com' + urlInput.fill('1111') + await expect(page.getByRole('tooltip', { name: '非法 URL 地址' })).toBeVisible() + urlInput.fill(validUrl) + await expect(page.getByRole('tooltip', { name: '非法 URL 地址' })).not.toBeVisible() + + // email输入框 + const emailInput = formItem.nth(4).locator('input') + const validEmail = '111@test.com' + emailInput.fill('1111') + await expect(page.getByRole('tooltip', { name: '非法邮件地址' })).toBeVisible() + emailInput.fill(validEmail) + await expect(page.getByRole('tooltip', { name: '非法邮件地址' })).not.toBeVisible() + + // 级联选择器 + const cascade = formItem.locator('.tiny-cascader input') + const cascadeSelect = page.locator('.tiny-cascader-dropdown') + await cascade.click() + await firstInput.click() + await expect(requiredTip.first()).toBeVisible() + await cascade.click() + await cascadeSelect.getByText('指南').click() + await cascadeSelect.getByText('安装').click() + await expect(requiredTip.first()).not.toBeVisible() + + // numeric输入 + const numeric = formItem.locator('.tiny-numeric').first() + const increase = numeric.locator('.tiny-numeric__increase') + await increase.click() + await expect(page.getByRole('tooltip', { name: '必填 2~11 之间的数字' })).toBeVisible() + await increase.click() + await expect(page.getByRole('tooltip', { name: '必填 2~11 之间的数字' })).not.toBeVisible() + + // ip输入 + const ipInput = formItem.locator('.tiny-ip-address input') + await ipInput.nth(0).fill('2') + await ipInput.nth(1).fill('2') + await ipInput.nth(2).fill('2') + await ipInput.nth(3).fill('2') + await expect(page.getByRole('tooltip', { name: '必填1.1.1.1' })).toBeVisible() + await ipInput.nth(0).fill('1') + await ipInput.nth(1).fill('1') + await ipInput.nth(2).fill('1') + await ipInput.nth(3).fill('1') + await expect(page.getByRole('tooltip', { name: '必填1.1.1.1' })).not.toBeVisible() + + // 提交成功 + const submitButton = form.getByRole('button', { name: '提交' }) + const successModal = page.locator('.tiny-modal__box').getByText('提交成功') + await formItem.locator('.tiny-radio').first().click() + await submitButton.click() + await expect(successModal).toBeVisible() +}) diff --git a/examples/docs/resources/pc/demo/form/form-validation.vue b/examples/docs/resources/pc/demo/form/form-validation.vue index 90dcbc223..d1550110d 100644 --- a/examples/docs/resources/pc/demo/form/form-validation.vue +++ b/examples/docs/resources/pc/demo/form/form-validation.vue @@ -20,8 +20,10 @@ - + @@ -111,7 +113,7 @@ export default { cascader: [{ required: true, message: '必填', trigger: 'blur' }], ip: [ { - validator: (rule, value, cb) => (value == '1.1.1.1' ? cb() : cb(new Error('必填1.1.1.1'))), + validator: (rule, value, cb) => (value === '1.1.1.1' ? cb() : cb(new Error('必填1.1.1.1'))), trigger: 'change' } ], diff --git a/examples/docs/resources/pc/demo/form/frequently-used-form.spec.js b/examples/docs/resources/pc/demo/form/frequently-used-form.spec.js new file mode 100644 index 000000000..5f1fdb65a --- /dev/null +++ b/examples/docs/resources/pc/demo/form/frequently-used-form.spec.js @@ -0,0 +1,47 @@ +import { test, expect } from '@playwright/test' + +test('测试基本表单', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('http://localhost:7130/pc/form/frequently-used-form') + + const preview = page.locator('#preview') + const numeric = preview.locator('.tiny-numeric') + const numericInput = numeric.locator('.tiny-numeric__input-inner') + const increaseIcon = numeric.locator('.tiny-numeric__increase') + const decreaseIcon = numeric.locator('.tiny-numeric__decrease') + + // 测试数字输入 + await increaseIcon.click() + await increaseIcon.click() + await expect(numericInput).toHaveValue('2') + await decreaseIcon.click() + await decreaseIcon.click() + await expect(numericInput).toHaveValue('0') + + // 日期选择器 + const datePicker = preview.getByRole('textbox').first() + await datePicker.click() + await page.getByRole('cell', { name: '15' }).getByText('15').click() + await expect(datePicker).toHaveValue(/15/) + + // 時間选择器 + const timePicker = preview.getByRole('textbox').nth(1) + await timePicker.click() + await page.getByRole('listitem').filter({ hasText: '00:30' }).click() + await expect(timePicker).toHaveValue('00:30') + + // 其他输入 + await preview.getByPlaceholder('click').hover() + await expect(page.getByRole('tooltip', { name: 'TinyUI Form Demo' })).toBeVisible() + await preview.getByPlaceholder('click').click() + await preview.getByPlaceholder('click').fill('123') + await preview.locator('textarea').click() + await preview.locator('textarea').fill('456') + + // 提交按钮 + const dialog = page.getByText('消息提示提交确认') + await preview.getByRole('button', { name: '提交' }).click() + await expect(dialog).toBeVisible() + await page.getByRole('button', { name: '确认' }).click() + await expect(dialog).not.toBeVisible() +}) diff --git a/examples/docs/resources/pc/demo/form/frequently-used-form.vue b/examples/docs/resources/pc/demo/form/frequently-used-form.vue index 4286ac826..e0c375491 100644 --- a/examples/docs/resources/pc/demo/form/frequently-used-form.vue +++ b/examples/docs/resources/pc/demo/form/frequently-used-form.vue @@ -5,7 +5,9 @@ - + + 男 + @@ -20,10 +22,13 @@ - + + - 提交 + + 提交 + diff --git a/examples/docs/resources/pc/demo/form/group-form.spec.js b/examples/docs/resources/pc/demo/form/group-form.spec.js new file mode 100644 index 000000000..98fbca4d7 --- /dev/null +++ b/examples/docs/resources/pc/demo/form/group-form.spec.js @@ -0,0 +1,20 @@ +import { test, expect } from '@playwright/test' + +test('测试分组表单', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('http://localhost:7130/pc/form/group-form') + + const preview = page.locator('#preview') + const form = preview.locator('.tiny-form') + const requiredTip = page.locator('.tiny-tooltip').getByText('必填') + const submitButton = preview.getByRole('button', { name: '确认' }) + + await expect(form).toHaveCount(2) + await submitButton.click() + await expect(requiredTip).toHaveCount(2) + await form.first().locator('input').first().fill('1111') + await form.nth(1).locator('input').first().fill('1111') + await submitButton.click() + await expect(requiredTip).toHaveCount(0) + await expect(page.locator('.tiny-modal__box').getByText('提交成功')).toBeVisible() +}) diff --git a/examples/docs/resources/pc/demo/form/group-form.vue b/examples/docs/resources/pc/demo/form/group-form.vue index 6a9d6545c..a76e65b7f 100644 --- a/examples/docs/resources/pc/demo/form/group-form.vue +++ b/examples/docs/resources/pc/demo/form/group-form.vue @@ -1,41 +1,57 @@ + \ No newline at end of file diff --git a/examples/docs/resources/pc/demo/modal/zIndex.spec.ts b/examples/docs/resources/pc/demo/modal/zIndex.spec.ts new file mode 100644 index 000000000..ec00c156c --- /dev/null +++ b/examples/docs/resources/pc/demo/modal/zIndex.spec.ts @@ -0,0 +1,10 @@ +import { test, expect } from '@playwright/test' + +test('自定义z-index', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('http://localhost:7130/pc/modal/zIndex') + + const modal = page.locator('.tiny-modal') + await page.getByRole('button', { name: 'zIndex的值为500' }).click() + await expect(modal).toHaveCSS('z-index', '500') +}) \ No newline at end of file diff --git a/examples/docs/resources/pc/demo/modal/zoom-event.spec.ts b/examples/docs/resources/pc/demo/modal/zoom-event.spec.ts new file mode 100644 index 000000000..4208add91 --- /dev/null +++ b/examples/docs/resources/pc/demo/modal/zoom-event.spec.ts @@ -0,0 +1,19 @@ +import { test, expect } from '@playwright/test' + +test('窗口缩放事件', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('http://localhost:7130/pc/modal/zoom-event') + + await page.getByRole('button', { name: '窗口缩放时触发事件' }).click() + const modal = page.locator('.tiny-modal__box') + + // 获取弹窗位置 + const { x, y } = await modal.boundingBox() + + // 开始拖动 + await page.mouse.move(x, y) + await page.mouse.down() + await page.mouse.move(x, y - 50) + await expect(page.locator('.tiny-modal.type__message')).toHaveText('窗口缩放时触发事件') + await page.mouse.up() +}) \ No newline at end of file diff --git a/examples/docs/resources/pc/demo/nav-menu/basic-usage.spec.ts b/examples/docs/resources/pc/demo/nav-menu/basic-usage.spec.ts new file mode 100644 index 000000000..2ba353cf9 --- /dev/null +++ b/examples/docs/resources/pc/demo/nav-menu/basic-usage.spec.ts @@ -0,0 +1,17 @@ +import { test, expect } from '@playwright/test'; + +test('基础用法', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()); + await page.goto('http://localhost:7130/pc/nav-menu/basic-usage'); + const preview = page.locator('#preview'); + const popMenu = preview.locator('.popmenu'); + const homePage = preview.getByText('首页'); + await homePage.click(); + await expect(homePage).toHaveCSS('border-bottom', /3px solid/); + const components = preview.getByText('组件'); + await components.hover(); + await expect(popMenu).toBeVisible(); + const showMore = preview.getByText('更多'); + await showMore.hover(); + await expect(popMenu).toBeVisible(); +}); \ No newline at end of file diff --git a/examples/docs/resources/pc/demo/nav-menu/before-skip-prevent.spec.ts b/examples/docs/resources/pc/demo/nav-menu/before-skip-prevent.spec.ts new file mode 100644 index 000000000..9e9f98aae --- /dev/null +++ b/examples/docs/resources/pc/demo/nav-menu/before-skip-prevent.spec.ts @@ -0,0 +1,16 @@ +import { test, expect } from '@playwright/test'; + +test('使用组件默认服务时,菜单跳转处理', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()); + await page.goto('http://localhost:7130/pc/nav-menu/before-skip-prevent'); + const preview = page.locator('#preview'); + const popMenu = preview.locator('.popmenu'); + const modal = page.locator('div').filter({ hasText: /prevent 事件/ }).first(); + await preview.getByText('首页').click(); + await expect(modal).toBeVisible(); + const components = preview.locator('a').filter({ hasText: '组件' }); + await components.hover(); + await expect(popMenu).toBeVisible(); + await components.click(); + await expect(modal).toBeVisible(); +}) \ No newline at end of file diff --git a/examples/docs/resources/pc/demo/nav-menu/before-skip-prevent.vue b/examples/docs/resources/pc/demo/nav-menu/before-skip-prevent.vue index 60feb66e8..6a9d1fc8e 100644 --- a/examples/docs/resources/pc/demo/nav-menu/before-skip-prevent.vue +++ b/examples/docs/resources/pc/demo/nav-menu/before-skip-prevent.vue @@ -1,6 +1,6 @@ diff --git a/examples/docs/resources/pc/demo/nav-menu/before-skip.spec.ts b/examples/docs/resources/pc/demo/nav-menu/before-skip.spec.ts new file mode 100644 index 000000000..cc20880c8 --- /dev/null +++ b/examples/docs/resources/pc/demo/nav-menu/before-skip.spec.ts @@ -0,0 +1,11 @@ +import { test, expect } from '@playwright/test'; + +test('菜单跳转处理', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()); + await page.goto('http://localhost:7130/pc/nav-menu/before-skip'); + const preview = page.locator('#preview'); + await preview.getByText('规范').click(); + await expect(page.locator('div').filter({ hasText: '当前跳转的菜单为:规范' }).first()).toBeVisible(); + await preview.getByText('案例').click(); + await expect(page.locator('div').filter({ hasText: '当前跳转的菜单为:案例' }).first()).toBeVisible(); +}) \ No newline at end of file diff --git a/examples/docs/resources/pc/demo/nav-menu/custom-service.spec.ts b/examples/docs/resources/pc/demo/nav-menu/custom-service.spec.ts new file mode 100644 index 000000000..49f0918cc --- /dev/null +++ b/examples/docs/resources/pc/demo/nav-menu/custom-service.spec.ts @@ -0,0 +1,12 @@ +import { test, expect } from '@playwright/test'; + +test('自定义服务', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()); + await page.goto('http://localhost:7130/pc/nav-menu/custom-service'); + const preview = page.locator('#preview'); + const guides = preview.getByText('指南'); + await guides.hover(); + await expect(preview.locator('.popmenu')).toBeVisible(); + await guides.click(); + await expect(guides).toHaveCSS('border-bottom', /3px solid/); +}) \ No newline at end of file diff --git a/examples/docs/resources/pc/demo/nav-menu/data-resource.spec.ts b/examples/docs/resources/pc/demo/nav-menu/data-resource.spec.ts new file mode 100644 index 000000000..2f25f5624 --- /dev/null +++ b/examples/docs/resources/pc/demo/nav-menu/data-resource.spec.ts @@ -0,0 +1,17 @@ +import { test, expect } from '@playwright/test'; + +test('数据源', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()); + await page.goto('http://localhost:7130/pc/nav-menu/data-resource'); + const preview = page.locator('#preview'); + const popMenu = preview.locator('.popmenu'); + const homePage = preview.getByText('首页'); + await homePage.click(); + await expect(homePage).toHaveCSS('border-bottom', /3px solid/); + const components = preview.getByText('组件'); + await components.hover(); + await expect(popMenu).toBeVisible(); + const showMore = preview.getByText('更多'); + await showMore.hover(); + await expect(popMenu).toBeVisible(); +}) \ No newline at end of file diff --git a/examples/docs/resources/pc/demo/nav-menu/overflow.spec.ts b/examples/docs/resources/pc/demo/nav-menu/overflow.spec.ts new file mode 100644 index 000000000..b7762ac86 --- /dev/null +++ b/examples/docs/resources/pc/demo/nav-menu/overflow.spec.ts @@ -0,0 +1,14 @@ +import { test, expect } from '@playwright/test'; + +test('显示策略', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()); + await page.goto('http://localhost:7130/pc/nav-menu/overflow'); + const preview = page.locator('#preview'); + const popMenu = preview.locator('.popmenu'); + await preview.locator('.more-button').hover(); + await expect(popMenu).toBeVisible(); + await preview.getByRole('listitem').filter({ hasText: '指南' }).nth(2).hover(); + await expect(popMenu.locator('.sub-menu')).toBeVisible(); + await preview.getByText('指南').first().hover(); + await expect(popMenu).toBeVisible(); +}) \ No newline at end of file diff --git a/examples/docs/resources/pc/demo/nav-menu/slot-logo.spec.ts b/examples/docs/resources/pc/demo/nav-menu/slot-logo.spec.ts new file mode 100644 index 000000000..bfbfa816c --- /dev/null +++ b/examples/docs/resources/pc/demo/nav-menu/slot-logo.spec.ts @@ -0,0 +1,8 @@ +import { test, expect } from '@playwright/test'; + +test('Logo 插槽', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()); + await page.goto('http://localhost:7130/pc/nav-menu/slot-logo'); + const preview = page.locator('#preview'); + await expect(preview.locator('.slot-logo svg')).toHaveCount(1); +}) \ No newline at end of file diff --git a/examples/docs/resources/pc/demo/nav-menu/slot-toolbar.spec.ts b/examples/docs/resources/pc/demo/nav-menu/slot-toolbar.spec.ts new file mode 100644 index 000000000..d05bfedd2 --- /dev/null +++ b/examples/docs/resources/pc/demo/nav-menu/slot-toolbar.spec.ts @@ -0,0 +1,8 @@ +import { test, expect } from '@playwright/test'; + +test('Toolbar 插槽', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()); + await page.goto('http://localhost:7130/pc/nav-menu/slot-toolbar'); + const preview = page.locator('#preview'); + await expect(preview.locator('.slot-toolbar svg')).toHaveCount(1); +}); \ No newline at end of file diff --git a/examples/docs/resources/pc/demo/notify/basic-usage.spec.ts b/examples/docs/resources/pc/demo/notify/basic-usage.spec.ts new file mode 100644 index 000000000..6e1a81587 --- /dev/null +++ b/examples/docs/resources/pc/demo/notify/basic-usage.spec.ts @@ -0,0 +1,15 @@ +import { test, expect } from '@playwright/test' + +test('基本用法', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('http://localhost:7130/pc/notify/basic-usage') + await page.getByRole('button', { name: '弹出提示框' }).click() + const status = page.locator('.tiny-notify__icon-status') + await expect(status).toBeVisible() + await expect(page.getByRole('heading', { name: '通知消息的标题' })).toBeVisible() + await expect( + page.getByText('通知消息的正文,通知消息的正文,通知消息的正文,通知消息的正文,通知消息的正文,通知消息的正文') + ).toBeVisible() + const close = page.locator('.tiny-notify__icon-close > .tiny-svg') + await expect(close).toBeVisible() +}) diff --git a/examples/docs/resources/pc/demo/notify/beforeClose.spec.ts b/examples/docs/resources/pc/demo/notify/beforeClose.spec.ts new file mode 100644 index 000000000..18cf9cb43 --- /dev/null +++ b/examples/docs/resources/pc/demo/notify/beforeClose.spec.ts @@ -0,0 +1,13 @@ +import { test, expect } from '@playwright/test' + +test('关闭通知框前触发的事件', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('http://localhost:7130/pc/notify/beforeClose') + await page.getByRole('button', { name: '关闭前的事件' }).click() + await page.locator('.tiny-notify__icon-close > .tiny-svg').click() + const cloEveNT = await page + .locator('div') + .filter({ hasText: '在通知框关闭前触发的事件,返回 false 可阻止关闭通知框' }) + .nth(1) + await expect(cloEveNT).toBeVisible() +}) diff --git a/examples/docs/resources/pc/demo/notify/closeIcon.spec.ts b/examples/docs/resources/pc/demo/notify/closeIcon.spec.ts new file mode 100644 index 000000000..5675bba65 --- /dev/null +++ b/examples/docs/resources/pc/demo/notify/closeIcon.spec.ts @@ -0,0 +1,12 @@ +import { test, expect } from '@playwright/test' + +test('自定义关闭图标', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('http://localhost:7130/pc/notify/closeIcon') + await page.getByRole('button', { name: '自定义关闭图标' }).click() + const svg = page.locator('.tiny-notify__icon-close > .tiny-svg > .st0') + await expect(svg).toHaveAttribute( + 'd', + 'M3 1h18c.9 0 2 1.1 2 2v18c0 .9-1 2-2 2H3c-.9 0-2-1.1-2-2V3c0-.9 1.1-2 2-2zm0 2v18h18V3H3zm13.8 4.2c.3.3.3.9 0 1.2L13.2 12l3.6 3.6c.3.3.3.9 0 1.2-.2.2-.4.2-.6.2-.2 0-.4-.1-.6-.2L12 13.2l-3.6 3.6c-.1.1-.4.2-.6.2s-.4-.1-.6-.2c-.3-.3-.3-.9 0-1.2l3.6-3.6-3.6-3.6c-.3-.3-.3-.9 0-1.2.3-.3.9-.3 1.2 0l3.6 3.6 3.6-3.6c.3-.3.8-.3 1.2 0z' + ) +}) diff --git a/examples/docs/resources/pc/demo/notify/debounceDelay.spec.ts b/examples/docs/resources/pc/demo/notify/debounceDelay.spec.ts new file mode 100644 index 000000000..775bd7ebc --- /dev/null +++ b/examples/docs/resources/pc/demo/notify/debounceDelay.spec.ts @@ -0,0 +1,16 @@ +import { test, expect } from '@playwright/test' + +test('配置防抖', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('http://localhost:7130/pc/notify/debounceDelay') + await page.getByRole('button', { name: 'Debounce' }).click() + await page.waitForTimeout(3000) + const db = page + .locator('div') + .filter({ + hasText: + '通知消息的标题通知消息的正文,通知消息的正文,通知消息的正文,通知消息的正文,通知消息的正文,通知消息的正文' + }) + .first() + await expect(db).toBeVisible +}) diff --git a/examples/docs/resources/pc/demo/notify/duration.spec.ts b/examples/docs/resources/pc/demo/notify/duration.spec.ts new file mode 100644 index 000000000..3fd411517 --- /dev/null +++ b/examples/docs/resources/pc/demo/notify/duration.spec.ts @@ -0,0 +1,20 @@ +import { test, expect } from '@playwright/test' + +test('自动关闭延时', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('http://localhost:7130/pc/notify/duration') + await page.getByRole('button', { name: '默认4500 ms后自动关闭提示框' }).click() + await page.waitForSelector('.tiny-notify') + await page.waitForTimeout(4500) + await page.waitForSelector('.tiny-notify', { state: 'hidden' }) + + await page.getByRole('button', { name: '500ms后自动关闭提示框' }).click() + await page.waitForSelector('.tiny-notify') + await page.waitForTimeout(500) + await page.waitForSelector('.tiny-notify', { state: 'hidden' }) + + await page.getByRole('button', { name: '5000ms后自动关闭提示框' }).click() + await page.waitForSelector('.tiny-notify') + await page.waitForTimeout(5000) + await page.waitForSelector('.tiny-notify', { state: 'hidden' }) +}) diff --git a/examples/docs/resources/pc/demo/notify/message.spec.ts b/examples/docs/resources/pc/demo/notify/message.spec.ts new file mode 100644 index 000000000..265a02f39 --- /dev/null +++ b/examples/docs/resources/pc/demo/notify/message.spec.ts @@ -0,0 +1,9 @@ +import { test, expect } from '@playwright/test' + +test('自定义内容', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('http://localhost:7130/pc/notify/message') + await page.getByRole('button', { name: '自定义内容' }).click() + const content = await page.getByRole('paragraph').filter({ hasText: '自定义内容' }) + await expect(content).toBeVisible() +}) diff --git a/examples/docs/resources/pc/demo/notify/onClose.spec.ts b/examples/docs/resources/pc/demo/notify/onClose.spec.ts new file mode 100644 index 000000000..66ce0f9af --- /dev/null +++ b/examples/docs/resources/pc/demo/notify/onClose.spec.ts @@ -0,0 +1,11 @@ +import { test, expect } from '@playwright/test' + +test('点击关闭按钮时触发事件', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('http://localhost:7130/pc/notify/close') + await page.getByRole('button', { name: '点击关闭按钮时触发事件' }).click() + const notify = page.locator('.tiny-notify') + await page.locator('.tiny-notify__icon-close').click() + const modal = page.locator('.tiny-modal__box') + await expect(modal).toBeVisible() +}) diff --git a/examples/docs/resources/pc/demo/notify/position.spec.ts b/examples/docs/resources/pc/demo/notify/position.spec.ts new file mode 100644 index 000000000..d24d2a148 --- /dev/null +++ b/examples/docs/resources/pc/demo/notify/position.spec.ts @@ -0,0 +1,13 @@ +import { test, expect } from '@playwright/test' + +test('显示位置', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('http://localhost:7130/pc/notify/position') + await page.getByRole('button', { name: '默认bottom-right' }).click() + await page.getByRole('button', { name: 'top-right' }).click() + const bottom = page.locator('.bottom-right') + const bottomBox = await bottom.boundingBox() + const top = page.locator('.top-right') + const topBox = await top.boundingBox() + expect(topBox.y).toBeLessThan(bottomBox.y) +}) diff --git a/examples/docs/resources/pc/demo/notify/showClose.spec.ts b/examples/docs/resources/pc/demo/notify/showClose.spec.ts new file mode 100644 index 000000000..e30db5861 --- /dev/null +++ b/examples/docs/resources/pc/demo/notify/showClose.spec.ts @@ -0,0 +1,9 @@ +import { test, expect } from '@playwright/test' + +test('不显示关闭按钮', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('http://localhost:7130/pc/notify/showClose') + await page.getByRole('button', { name: '不显示关闭按钮' }).click() + const close = page.locator('.tiny-notify__close-zone') + await expect(close).not.toBeVisible() +}) diff --git a/examples/docs/resources/pc/demo/notify/showIcon.spec.ts b/examples/docs/resources/pc/demo/notify/showIcon.spec.ts new file mode 100644 index 000000000..e546cf82a --- /dev/null +++ b/examples/docs/resources/pc/demo/notify/showIcon.spec.ts @@ -0,0 +1,9 @@ +import { test, expect } from '@playwright/test' + +test('不显示类型图标', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('http://localhost:7130/pc/notify/showIcon') + await page.getByRole('button', { name: '不显示类型图标' }).click() + const icon = page.locator('.tiny-notify__icon-zone') + await expect(icon).not.toBeVisible() +}) diff --git a/examples/docs/resources/pc/demo/notify/statusIcon.spec.ts b/examples/docs/resources/pc/demo/notify/statusIcon.spec.ts new file mode 100644 index 000000000..77f767695 --- /dev/null +++ b/examples/docs/resources/pc/demo/notify/statusIcon.spec.ts @@ -0,0 +1,9 @@ +import { test, expect } from '@playwright/test' + +test('自定义类型图标', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('http://localhost:7130/pc/notify/statusIcon') + await page.getByRole('button', { name: '自定义类型图标' }).click() + const close = page.locator('.tiny-notify__icon-status') + await expect(close).toBeVisible() +}) diff --git a/examples/docs/resources/pc/demo/notify/title.spec.ts b/examples/docs/resources/pc/demo/notify/title.spec.ts new file mode 100644 index 000000000..cbe7f1e9b --- /dev/null +++ b/examples/docs/resources/pc/demo/notify/title.spec.ts @@ -0,0 +1,9 @@ +import { test, expect } from '@playwright/test' + +test('标题', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('http://localhost:7130/pc/notify/title') + await page.getByRole('button', { name: '自定义标题' }).click() + const title = page.locator('.tiny-notify__title') + await expect(title).toBeVisible() +}) diff --git a/examples/docs/resources/pc/demo/notify/type.spec.ts b/examples/docs/resources/pc/demo/notify/type.spec.ts new file mode 100644 index 000000000..b7061fa08 --- /dev/null +++ b/examples/docs/resources/pc/demo/notify/type.spec.ts @@ -0,0 +1,21 @@ +import { test, expect } from '@playwright/test' + +test('消息类型', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('http://localhost:7130/pc/notify/type') + await page.getByRole('button', { name: 'info类型' }).click() + const info = page.locator('.tiny-notify--info') + await expect(info).toBeVisible() + + await page.getByRole('button', { name: 'success类型' }).click() + const success = page.locator('.tiny-notify--success') + await expect(success).toBeVisible() + + await page.getByRole('button', { name: 'error类型' }).click() + const error = page.locator('.tiny-notify--error') + await expect(error).toBeVisible() + + await page.getByRole('button', { name: 'warning类型' }).click() + const warning = page.locator('.tiny-notify--warning') + await expect(warning).toBeVisible() +}) diff --git a/examples/docs/resources/pc/demo/notify/verticalOffset.spec.ts b/examples/docs/resources/pc/demo/notify/verticalOffset.spec.ts new file mode 100644 index 000000000..4c297aaac --- /dev/null +++ b/examples/docs/resources/pc/demo/notify/verticalOffset.spec.ts @@ -0,0 +1,10 @@ +import { test, expect } from '@playwright/test' + +test('垂直方向偏离距离', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('http://localhost:7130/pc/notify/verticalOffset') + await page.getByRole('button', { name: '弹出提示框' }).click() + const notify = page.locator('.tiny-notify') + const offset = await notify.getAttribute('verticalOffset') + await expect(offset).toEqual('100') +}) diff --git a/examples/docs/resources/pc/demo/numeric/about-step.spec.ts b/examples/docs/resources/pc/demo/numeric/about-step.spec.ts new file mode 100644 index 000000000..edd01c15b --- /dev/null +++ b/examples/docs/resources/pc/demo/numeric/about-step.spec.ts @@ -0,0 +1,18 @@ +import { test, expect } from '@playwright/test' + +test('步长', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('http://localhost:7130/pc/numeric/about-step') + + const input = page.getByRole('spinbutton') + const increaseBtn = page.locator('#preview .tiny-numeric__increase') + const decreaseBtn = page.locator('#preview .tiny-numeric__decrease') + const value = Number(await input.inputValue()) + const step = 2 + await decreaseBtn.click() + const decreasedVal = Number(await input.inputValue()) + expect(value).toEqual(decreasedVal + step) + await increaseBtn.click() + const increasedVal = Number(await input.inputValue()) + expect(decreasedVal).toEqual(increasedVal - step) +}) \ No newline at end of file diff --git a/examples/docs/resources/pc/demo/numeric/allow-empty.spec.ts b/examples/docs/resources/pc/demo/numeric/allow-empty.spec.ts new file mode 100644 index 000000000..b329d3d1a --- /dev/null +++ b/examples/docs/resources/pc/demo/numeric/allow-empty.spec.ts @@ -0,0 +1,13 @@ +import { test, expect } from '@playwright/test' + +test('可清空特性', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('http://localhost:7130/pc/numeric/allow-empty') + + const input = page.getByRole('spinbutton') + await input.click() + await input.press('Backspace') + await page.locator('.rel').click() + const value = await input.inputValue() + expect(value).toEqual('') +}) \ No newline at end of file diff --git a/examples/docs/resources/pc/demo/numeric/basic-usage.spec.ts b/examples/docs/resources/pc/demo/numeric/basic-usage.spec.ts new file mode 100644 index 000000000..abb2aa082 --- /dev/null +++ b/examples/docs/resources/pc/demo/numeric/basic-usage.spec.ts @@ -0,0 +1,22 @@ +import { test, expect } from '@playwright/test' + +test('基本用法', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('http://localhost:7130/pc/numeric/basic-usage') + + const input = page.getByRole('spinbutton') + const increaseBtn = page.locator('#preview .tiny-numeric__increase') + const decreaseBtn = page.locator('#preview .tiny-numeric__decrease') + const value = Number(await input.inputValue()) + await increaseBtn.click() + const increasedVal = Number(await input.inputValue()) + expect(value).toEqual(increasedVal - 1) + + await decreaseBtn.click() + const decreasedVal = Number(await input.inputValue()) + expect(decreasedVal).toEqual(increasedVal - 1) + + await input.fill('10001') + const currentVal = await input.inputValue() + expect(currentVal).toEqual('10001') +}) \ No newline at end of file diff --git a/examples/docs/resources/pc/demo/numeric/blur-event.spec.ts b/examples/docs/resources/pc/demo/numeric/blur-event.spec.ts new file mode 100644 index 000000000..8f4ecf91a --- /dev/null +++ b/examples/docs/resources/pc/demo/numeric/blur-event.spec.ts @@ -0,0 +1,11 @@ +import { test, expect } from '@playwright/test' + +test('失焦事件', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('http://localhost:7130/pc/numeric/blur-event') + + const numeric = page.getByRole('spinbutton') + await numeric.focus() + await numeric.blur() + await expect(page.getByText('失焦事件', { exact: true })).toBeVisible() +}) \ No newline at end of file diff --git a/examples/docs/resources/pc/demo/numeric/calculate-according-to-num-of-goods.spec.ts b/examples/docs/resources/pc/demo/numeric/calculate-according-to-num-of-goods.spec.ts new file mode 100644 index 000000000..7a2972868 --- /dev/null +++ b/examples/docs/resources/pc/demo/numeric/calculate-according-to-num-of-goods.spec.ts @@ -0,0 +1,13 @@ +import { test, expect } from '@playwright/test' + +test('根据商品数量自动计算价格', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('http://localhost:7130/pc/numeric/calculate-according-to-num-of-goods') + + const numeric = page.getByPlaceholder('请输入商品数量') + const totalTxt = page.locator('#preview .content ~div ~div') + await numeric.click() + await numeric.fill('10') + await numeric.blur() + await expect(totalTxt).toContainText('100') +}) \ No newline at end of file diff --git a/examples/docs/resources/pc/demo/numeric/change-event.spec.ts b/examples/docs/resources/pc/demo/numeric/change-event.spec.ts new file mode 100644 index 000000000..2b93da944 --- /dev/null +++ b/examples/docs/resources/pc/demo/numeric/change-event.spec.ts @@ -0,0 +1,10 @@ +import { test, expect } from '@playwright/test' + +test('值改变事件', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('http://localhost:7130/pc/numeric/change-event') + + const increaseBtn = page.locator('.tiny-numeric__increase') + await increaseBtn.click() + await expect(page.getByText('新值:2,旧值:1')).toBeVisible() +}) \ No newline at end of file diff --git a/examples/docs/resources/pc/demo/numeric/controls-position.spec.ts b/examples/docs/resources/pc/demo/numeric/controls-position.spec.ts new file mode 100644 index 000000000..62a3e35ee --- /dev/null +++ b/examples/docs/resources/pc/demo/numeric/controls-position.spec.ts @@ -0,0 +1,16 @@ +import { test, expect } from '@playwright/test' + +test('控制按钮设置在右侧显示', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('http://localhost:7130/pc/numeric/controls-position') + + const numeric = page.locator('#preview .tiny-numeric') + const decreaseBtn = numeric.locator('.tiny-numeric__decrease') + const numericBox = await numeric.boundingBox() + const decreaseBtnBox = await decreaseBtn.boundingBox() + await expect(numeric).toHaveClass(/is-controls-right/) + // 判断按钮是否位于右侧 + expect(numericBox.x).toBeLessThan(decreaseBtnBox.x) + await decreaseBtn.click() + await numeric.locator('.tiny-numeric__increase').click() +}) \ No newline at end of file diff --git a/examples/docs/resources/pc/demo/numeric/controls.spec.ts b/examples/docs/resources/pc/demo/numeric/controls.spec.ts new file mode 100644 index 000000000..625bc8800 --- /dev/null +++ b/examples/docs/resources/pc/demo/numeric/controls.spec.ts @@ -0,0 +1,29 @@ +import { test, expect } from '@playwright/test' + +test.describe('属性设置', () => { + test('控制按钮的显示与隐藏', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('http://localhost:7130/pc/numeric/controls') + + const numeric = page.locator('#preview .tiny-numeric') + await expect(numeric).toHaveClass(/is-without-controls/) + await expect(numeric.locator('.tiny-numeric__decrease')).not.toBeVisible() + await expect(numeric.locator('.tiny-numeric__increase')).not.toBeVisible() + }) + + test('关联文字', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('http://localhost:7130/pc/numeric/controls') + + const numericInput = page.locator('#preview .tiny-numeric .tiny-numeric__input-inner') + await expect(numericInput).toHaveAttribute('aria-label', '关联文字') + }) + + test('name属性', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('http://localhost:7130/pc/numeric/controls') + + const numericInput = page.locator('#preview .tiny-numeric .tiny-numeric__input-inner') + await expect(numericInput).toHaveAttribute('name', 'name') + }) +}) diff --git a/examples/docs/resources/pc/demo/numeric/dynamic-disabled.spec.ts b/examples/docs/resources/pc/demo/numeric/dynamic-disabled.spec.ts new file mode 100644 index 000000000..ac6a9b9ac --- /dev/null +++ b/examples/docs/resources/pc/demo/numeric/dynamic-disabled.spec.ts @@ -0,0 +1,11 @@ +import { test, expect } from '@playwright/test' + +test('禁用', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('http://localhost:7130/pc/numeric/dynamic-disabled') + + const numeric = page.locator('#preview .tiny-numeric') + const numericInput = numeric.locator('.tiny-numeric__input-inner') + await expect(numeric).toHaveClass(/is-disabled/) + await expect(numericInput).toBeDisabled() +}) \ No newline at end of file diff --git a/examples/docs/resources/pc/demo/numeric/focus-event.spec.ts b/examples/docs/resources/pc/demo/numeric/focus-event.spec.ts new file mode 100644 index 000000000..064f79aab --- /dev/null +++ b/examples/docs/resources/pc/demo/numeric/focus-event.spec.ts @@ -0,0 +1,10 @@ +import { test, expect } from '@playwright/test' + +test('聚焦事件', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('http://localhost:7130/pc/numeric/focus-event') + + const numeric = page.getByRole('spinbutton') + await numeric.focus() + await expect(page.getByText('focus 事件', { exact: true })).toBeVisible() +}) \ No newline at end of file diff --git a/examples/docs/resources/pc/demo/numeric/max-min.spec.ts b/examples/docs/resources/pc/demo/numeric/max-min.spec.ts new file mode 100644 index 000000000..4ae096b67 --- /dev/null +++ b/examples/docs/resources/pc/demo/numeric/max-min.spec.ts @@ -0,0 +1,18 @@ +import { test, expect } from '@playwright/test' + +test('最值与数值循环', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('http://localhost:7130/pc/numeric/max-min') + + const input = page.getByRole('spinbutton') + const increaseBtn = page.locator('#preview .tiny-numeric__increase') + const decreaseBtn = page.locator('#preview .tiny-numeric__decrease') + const min = 0 + const max = 10 + await decreaseBtn.click() + const decreasedVal = Number(await input.inputValue()) + expect(decreasedVal).toEqual(max) + await increaseBtn.click() + const increasedVal = Number(await input.inputValue()) + expect(increasedVal).toEqual(min) +}) \ No newline at end of file diff --git a/examples/docs/resources/pc/demo/numeric/mouse-wheel.spec.ts b/examples/docs/resources/pc/demo/numeric/mouse-wheel.spec.ts new file mode 100644 index 000000000..d50f35329 --- /dev/null +++ b/examples/docs/resources/pc/demo/numeric/mouse-wheel.spec.ts @@ -0,0 +1,13 @@ +import { test, expect } from '@playwright/test' + +test('鼠标滚轮事件', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('http://localhost:7130/pc/numeric/mouse-wheel') + + const numeric = page.getByRole('spinbutton') + const initVal = Number(await numeric.inputValue()) + await numeric.click() + await page.mouse.wheel(0, -100) + const currentVal = Number(await numeric.inputValue()) + expect(currentVal).toBeLessThan(initVal) +}) \ No newline at end of file diff --git a/examples/docs/resources/pc/demo/numeric/numeric-size.spec.ts b/examples/docs/resources/pc/demo/numeric/numeric-size.spec.ts new file mode 100644 index 000000000..aae0680f1 --- /dev/null +++ b/examples/docs/resources/pc/demo/numeric/numeric-size.spec.ts @@ -0,0 +1,27 @@ +import { test, expect } from '@playwright/test' + +test('尺寸', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('http://localhost:7130/pc/numeric/numeric-size') + + // large尺寸 + const largeNumeric = page.locator('#preview .tiny-numeric').first() + await expect(largeNumeric).toHaveClass(/tiny-numeric--medium/) + await largeNumeric.getByRole('spinbutton').fill('123') + await largeNumeric.locator('.tiny-numeric__decrease').click() + await largeNumeric.locator('.tiny-numeric__increase').click() + + // small尺寸 + const smallNumeric = page.locator('#preview .tiny-numeric').nth(1) + await expect(smallNumeric).toHaveClass(/tiny-numeric--small/) + await smallNumeric.getByRole('spinbutton').fill('111') + await smallNumeric.locator('.tiny-numeric__decrease').click() + await smallNumeric.locator('.tiny-numeric__increase').click() + + // mini尺寸 + const miniNumeric = page.locator('#preview .tiny-numeric').nth(2) + await expect(miniNumeric).toHaveClass(/tiny-numeric--mini/) + await miniNumeric.getByRole('spinbutton').fill('100') + await miniNumeric.locator('.tiny-numeric__decrease').click() + await miniNumeric.locator('.tiny-numeric__increase').click() +}) \ No newline at end of file diff --git a/examples/docs/resources/pc/demo/numeric/precision.spec.ts b/examples/docs/resources/pc/demo/numeric/precision.spec.ts new file mode 100644 index 000000000..801a136c2 --- /dev/null +++ b/examples/docs/resources/pc/demo/numeric/precision.spec.ts @@ -0,0 +1,22 @@ +import { test, expect } from '@playwright/test' + +test('数值精度', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('http://localhost:7130/pc/numeric/precision') + + const numericInput = page.getByRole('spinbutton') + await numericInput.fill('2.2222') + await numericInput.blur() + let actualValue = await numericInput.inputValue() + expect(actualValue).toEqual('2.22') + + await numericInput.fill('8.88888') + await numericInput.blur() + actualValue = await numericInput.inputValue() + expect(actualValue).toEqual('8.89') + + await numericInput.fill('6.66') + await numericInput.blur() + actualValue = await numericInput.inputValue() + expect(actualValue).toEqual('6.66') +}) \ No newline at end of file diff --git a/examples/docs/resources/pc/demo/pager/basic-usage.spec.js b/examples/docs/resources/pc/demo/pager/basic-usage.spec.js index 747aad5be..d1ba5c62a 100644 --- a/examples/docs/resources/pc/demo/pager/basic-usage.spec.js +++ b/examples/docs/resources/pc/demo/pager/basic-usage.spec.js @@ -1,10 +1,46 @@ -import { test, expect } from '@playwright/test'; +import { test, expect } from '@playwright/test' -test('test', async ({ page }) => { - await page.goto('http://localhost:7130/pc/pager/basic-usage'); - await page.getByText('基本用法').nth(1).click(); - await page.getByText('2').nth(1).click(); - await page.getByText('5').first().click(); - await expect(page.getByText('5').first()).toHaveAttribute('class', 'is-active') - await expect(page.locator('//*[@id="preview"]/div[2]/div[2]/div[1]/button[2]')).toBeDisabled -}); \ No newline at end of file +test('测试分页基本用法', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('http://localhost:7130/pc/pager/basic-usage') + + const preview = page.locator('#preview') + const pager = preview.locator('.tiny-pager') + const getPrev = (parent) => parent.locator('.tiny-pager__btn-prev') + const getNext = (parent) => parent.locator('.tiny-pager__btn-next') + const isActive = /is-active/ + + // 第一个分页组件 + const firstPrev = getPrev(pager.first()) + const firstNext = getNext(pager.first()) + const firstPager = pager.first() + await expect(firstPager.locator('li').getByText('1')).toHaveClass(isActive) + await expect(firstPrev).toBeDisabled() + await expect(firstNext).not.toBeDisabled() + await firstPager.locator('li').getByText('5').click() + await expect(firstPager.locator('li').getByText('5')).toHaveClass(isActive) + await expect(firstPrev).not.toBeDisabled() + await expect(firstNext).toBeDisabled() + await firstPrev.click() + await expect(firstPager.locator('li').getByText('4')).toHaveClass(isActive) + await expect(firstPrev).not.toBeDisabled() + await expect(firstNext).not.toBeDisabled() + + // 第二个分页组件 + const secondPrev = getPrev(pager.nth(1)) + const secondNext = getNext(pager.nth(1)) + const secondPager = pager.nth(1) + await expect(secondPager.locator('li').first()).toHaveClass(isActive) + await expect(secondPager.locator('li').getByText('7')).not.toBeVisible() + await expect(secondPrev).toBeDisabled() + await expect(secondNext).not.toBeDisabled() + await secondPager.locator('li').getByText('10').click() + await expect(secondPager.locator('li').getByText('10')).toHaveClass(isActive) + await expect(secondPager.locator('li').getByText('7')).toBeVisible() + await expect(secondPrev).not.toBeDisabled() + await expect(secondNext).toBeDisabled() + await secondPrev.click() + await expect(secondPager.locator('li').getByText('9')).toHaveClass(isActive) + await expect(secondPrev).not.toBeDisabled() + await expect(secondNext).not.toBeDisabled() +}) diff --git a/examples/docs/resources/pc/demo/pager/before-page-change.spec.js b/examples/docs/resources/pc/demo/pager/before-page-change.spec.js index 68a317787..5a3314742 100644 --- a/examples/docs/resources/pc/demo/pager/before-page-change.spec.js +++ b/examples/docs/resources/pc/demo/pager/before-page-change.spec.js @@ -1,18 +1,37 @@ -import { test, expect } from '@playwright/test'; +import { test, expect } from '@playwright/test' -test('test', async ({ page }) => { - await page.goto('http://localhost:7130/pc/pager/before-page-change'); - await page.getByText('分页事件before-page-change').nth(1).click(); - await page.getByRole('textbox').nth(2).click(); - await page.getByRole('textbox').nth(2).fill('4'); - await page.getByRole('button', { name: '前往' }).click(); - await page.getByRole('button', { name: '确认' }).click(); - await page.getByRole('textbox').nth(2).click(); - await page.getByRole('textbox').nth(2).fill('9'); - await page.getByRole('button', { name: '前往' }).click(); - await page.getByRole('button', { name: '确认' }).click(); - await page.getByRole('textbox').nth(2).click(); - await page.getByRole('textbox').nth(2).fill('5'); - await page.getByRole('button', { name: '前往' }).click(); - await page.getByRole('button', { name: '取消' }).click(); -}); \ No newline at end of file +test('测试切换分页前时间', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('http://localhost:7130/pc/pager/before-page-change') + + const preview = page.locator('#preview') + const pager = preview.locator('.tiny-pager') + const prev = pager.locator('.tiny-pager__btn-prev') + const next = pager.locator('.tiny-pager__btn-next') + const tipModal = page.locator('.tiny-modal__box').filter({ hasText: '消息提示' }) + const confirmBtn = tipModal.getByRole('button', { name: '确认' }) + + await pager.locator('li').getByText('6').click() + await expect(tipModal).toBeVisible() + await confirmBtn.click() + await expect(tipModal).not.toBeVisible() + await next.click() + await expect(tipModal).toBeVisible() + await confirmBtn.click() + await expect(tipModal).not.toBeVisible() + await prev.click() + await expect(tipModal).toBeVisible() + await confirmBtn.click() + await expect(tipModal).not.toBeVisible() + await pager.locator('.tiny-pager__popover').click() + await page.locator('.tiny-pager__selector').getByText('50').click() + await expect(tipModal).toBeVisible() + await confirmBtn.click() + await expect(tipModal).not.toBeVisible() + await pager.locator('.tiny-pager__goto input').fill('100') + await page.waitForTimeout(200) + await pager.locator('.tiny-pager__goto input').press('Enter') + await expect(tipModal).toBeVisible() + await confirmBtn.click() + await expect(tipModal).not.toBeVisible() +}) diff --git a/examples/docs/resources/pc/demo/pager/current-page.spec.js b/examples/docs/resources/pc/demo/pager/current-page.spec.js index 5fbea3253..03929c58b 100644 --- a/examples/docs/resources/pc/demo/pager/current-page.spec.js +++ b/examples/docs/resources/pc/demo/pager/current-page.spec.js @@ -1,10 +1,25 @@ -import { test, expect } from '@playwright/test'; +import { test, expect } from '@playwright/test' -test('test', async ({ page }) => { - await page.goto('http://localhost:7130/pc/pager/current-page'); - await page.locator('div:nth-child(2) > .link-primary').click(); - await page.locator('#preview').getByText('1').click(); - await page.locator('#preview').getByText('5').click() - await expect(page.locator('#preview').getByText('5')).toHaveText('5') - await expect(page.locator('//*[@id="preview"]/div[2]/div[2]/button[2]')).toBeDisabled -}); \ No newline at end of file +test('测试设置当前页', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('http://localhost:7130/pc/pager/current-page') + + const preview = page.locator('#preview') + const pager = preview.locator('.tiny-pager') + const getPrev = (parent) => parent.locator('.tiny-pager__btn-prev') + const getNext = (parent) => parent.locator('.tiny-pager__btn-next') + const isActive = /is-active/ + const prev = getPrev(pager.first()) + const next = getNext(pager.first()) + await expect(pager.locator('li').getByText('2')).toHaveClass(isActive) + await expect(prev).not.toBeDisabled() + await expect(next).not.toBeDisabled() + await pager.locator('li').getByText('5').click() + await expect(pager.locator('li').getByText('5')).toHaveClass(isActive) + await expect(prev).not.toBeDisabled() + await expect(next).toBeDisabled() + await pager.locator('li').getByText('1').click() + await expect(pager.locator('li').getByText('1')).toHaveClass(isActive) + await expect(prev).toBeDisabled() + await expect(next).not.toBeDisabled() +}) diff --git a/examples/docs/resources/pc/demo/pager/custom-layout.spec.js b/examples/docs/resources/pc/demo/pager/custom-layout.spec.js index 944f3d5e9..c05902e3d 100644 --- a/examples/docs/resources/pc/demo/pager/custom-layout.spec.js +++ b/examples/docs/resources/pc/demo/pager/custom-layout.spec.js @@ -1,16 +1,27 @@ -import { test, expect } from '@playwright/test'; +import { test, expect } from '@playwright/test' -test('test', async ({ page }) => { - await page.goto('http://localhost:7130/pc/pager/custom-layout'); - await page.getByText('自定义分页布局').nth(1).click(); - await page.locator('#preview svg').nth(1).click(); - await page.getByRole('listitem', { name: '20' }).click(); - await page.locator('#preview').getByText('50').click(); - await expect(page.locator('#preview').getByText('50')).toHaveAttribute('class', 'is-active'); - await expect(page.locator('//*[@id="preview"]/div[2]/div[2]/button[2]')).toBeDisabled; - await page.locator('#preview svg').nth(1).click(); - await page.getByRole('listitem', { name: '50' }).click(); - await page.locator('#preview').getByText('20').click(); - await expect(page.locator('#preview').getByText('20')).toHaveAttribute('class', 'is-active') - await expect(page.locator('//*[@id="preview"]/div[2]/div[2]/button[2]')).toBeDisabled; -}); \ No newline at end of file +test('测试自定义分页布局', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('http://localhost:7130/pc/pager/custom-layout') + + const preview = page.locator('#preview') + const pager = preview.locator('.tiny-pager') + const prev = pager.locator('.tiny-pager__btn-prev') + const next = pager.locator('.tiny-pager__btn-next') + const slot = pager.getByText('我是插槽') + + await expect(slot).toBeVisible() + const pageSizeBox = await pager.locator('.tiny-pager__input').boundingBox() + const slotBox = await slot.boundingBox() + expect(pageSizeBox.x).toBeLessThan(slotBox.x) + const prevBox = await prev.boundingBox() + expect(slotBox.x).toBeLessThan(prevBox.x) + const pagesBox = await pager.locator('.tiny-pager__pages').boundingBox() + expect(prevBox.x).toBeLessThan(pagesBox.x) + const nextBox = await next.boundingBox() + expect(pagesBox.x).toBeLessThan(nextBox.x) + const gotoBox = await pager.locator('.tiny-pager__goto').boundingBox() + expect(nextBox.x).toBeLessThan(gotoBox.x) + const totalBox = await pager.locator('.tiny-pager__total').boundingBox() + expect(gotoBox.x).toBeLessThan(totalBox.x) +}) diff --git a/examples/docs/resources/pc/demo/pager/custom-next-prev-text.spec.js b/examples/docs/resources/pc/demo/pager/custom-next-prev-text.spec.js index 5b566f1c3..ae77dbd26 100644 --- a/examples/docs/resources/pc/demo/pager/custom-next-prev-text.spec.js +++ b/examples/docs/resources/pc/demo/pager/custom-next-prev-text.spec.js @@ -1,11 +1,14 @@ -import { test, expect } from '@playwright/test'; +import { test, expect } from '@playwright/test' -test('test', async ({ page }) => { - await page.goto('http://localhost:7130/pc/pager/hide-on-single-page'); - await page.getByText('自定义上下页按钮文本').click(); - await page.locator('#preview').getByText('2').click(); - await page.getByRole('button', { name: '上一页' }).click(); - await expect(page.getByRole('button', { name: '上一页' })).toHaveText('上一页') - await page.getByRole('button', { name: '下一页' }).click(); - await expect(page.getByRole('button', { name: '下一页' })).toHaveText('下一页') -}); \ No newline at end of file +test('自定义上下页按钮文本', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('http://localhost:7130/pc/pager/custom-next-prev-text') + + const preview = page.locator('#preview') + const pager = preview.locator('.tiny-pager') + const prev = pager.locator('.tiny-pager__btn-prev') + const next = pager.locator('.tiny-pager__btn-next') + + await expect(prev).toHaveText('上一页') + await expect(next).toHaveText('下一页') +}) diff --git a/examples/docs/resources/pc/demo/pager/hide-on-single-page.spec.js b/examples/docs/resources/pc/demo/pager/hide-on-single-page.spec.js index 3bf2e42cc..aeb86812c 100644 --- a/examples/docs/resources/pc/demo/pager/hide-on-single-page.spec.js +++ b/examples/docs/resources/pc/demo/pager/hide-on-single-page.spec.js @@ -1,10 +1,17 @@ -import { test, expect } from '@playwright/test'; +import { test, expect } from '@playwright/test' -test('test', async ({ page }) => { - await page.goto('http://localhost:7130/pc/pager/hide-on-single-page'); - await page.getByText('只有一页时隐藏分页').nth(2).click(); - await page.locator('#preview').getByText('1').click(); - await expect(page.locator('#preview').getByText('1')).toHaveAttribute('class', 'is-active') - await page.locator('#preview span').nth(1).click(); - await expect(page.locator('#preview').getByText('1')).toBeHidden(0); -}); \ No newline at end of file +test('只有一页时隐藏分页', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('http://localhost:7130/pc/pager/hide-on-single-page') + + const preview = page.locator('#preview') + const pager = preview.locator('.tiny-pager') + const prev = pager.locator('.tiny-pager__btn-prev') + const next = pager.locator('.tiny-pager__btn-next') + + await expect(prev).toBeDisabled() + await expect(next).toBeDisabled() + await expect(pager).toBeVisible() + await preview.locator('.tiny-switch').click() + await expect(pager).not.toBeVisible() +}) diff --git a/examples/docs/resources/pc/demo/pager/page-append-to-body.spec.js b/examples/docs/resources/pc/demo/pager/page-append-to-body.spec.js index b811fe154..4b1f597fd 100644 --- a/examples/docs/resources/pc/demo/pager/page-append-to-body.spec.js +++ b/examples/docs/resources/pc/demo/pager/page-append-to-body.spec.js @@ -1,8 +1,15 @@ -import { test, expect } from '@playwright/test'; +import { test, expect } from '@playwright/test' -test('test', async ({ page }) => { - await page.goto('http://localhost:7130/pc/pager/popper-append-to-body'); - await page.getByText('分页下拉框显示位置').nth(1).click(); - await page.locator('span').filter({ hasText: '51020304050100' }).locator('svg').click(); - await page.getByRole('listitem', { name: '5' }).first().click(); -}); \ No newline at end of file +test('分页下拉框显示位置', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('http://localhost:7130/pc/pager/popper-append-to-body') + + const preview = page.locator('#preview') + const pager = preview.locator('.tiny-pager') + const sizeSelect = pager.locator('.tiny-pager__selector') + + await pager.locator('.tiny-pager__input').click() + await expect(sizeSelect).toBeVisible() + await sizeSelect.getByText('100').click() + await expect(pager.locator('.tiny-pager__pages')).toHaveCount(1) +}) diff --git a/examples/docs/resources/pc/demo/pager/page-count.spec.js b/examples/docs/resources/pc/demo/pager/page-count.spec.js index af83953c8..801796bef 100644 --- a/examples/docs/resources/pc/demo/pager/page-count.spec.js +++ b/examples/docs/resources/pc/demo/pager/page-count.spec.js @@ -1,9 +1,12 @@ -import { test, expect } from '@playwright/test'; +import { test, expect } from '@playwright/test' -test('test', async ({ page }) => { - await page.goto('http://localhost:7130/pc/pager/pager-count'); - await page.getByText('页码按钮数量').nth(1).click(); - await page.locator('.is-active').click(); - await page.getByText('14').click(); - await page.locator('#preview').getByText('20').click(); -}); \ No newline at end of file +test('页码按钮数量', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('http://localhost:7130/pc/pager/page-count') + + const preview = page.locator('#preview') + const pager = preview.locator('.tiny-pager') + const pageItem = pager.locator('.tiny-pager__pages li') + + await expect(pageItem.last()).toHaveText('200') +}) diff --git a/examples/docs/resources/pc/demo/pager/page-size.spec.js b/examples/docs/resources/pc/demo/pager/page-size.spec.js index 04a3437fb..44ac899b4 100644 --- a/examples/docs/resources/pc/demo/pager/page-size.spec.js +++ b/examples/docs/resources/pc/demo/pager/page-size.spec.js @@ -1,14 +1,22 @@ -import { test, expect } from '@playwright/test'; +import { test, expect } from '@playwright/test' -test('test', async ({ page }) => { - await page.goto('http://localhost:7130/pc/pager/pager-count'); - await page.getByText('每页显示数量').click(); - await page.getByRole('listitem').filter({ hasText: '10' }).click(); - await expect(page.getByRole('listitem').filter({ hasText: '10' })).toHaveAttribute('class', 'is-active'); - await expect(page.locator('//*[@id="preview"]/div[2]/div[2]/button[2]')).toBeDisabled - await page.locator('span').filter({ hasText: '51020304050100' }).locator('path').click(); - await page.getByRole('listitem', { name: '10' }).first().click(); - await page.locator('#preview').getByText('5').click(); - await expect(page.locator('#preview').getByText('5')).toHaveAttribute('class', 'is-active') - await expect(page.locator('//*[@id="preview"]/div[2]/div[2]/button[2]')).toBeDisabled -}); \ No newline at end of file +test('每页显示数量', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('http://localhost:7130/pc/pager/page-size') + + const total = 50 + const initPageSize = 5 + const getPageCount = (pageSize) => String(Math.ceil(total / pageSize)) + const preview = page.locator('#preview') + const pager = preview.locator('.tiny-pager') + const sizeChange = pager.locator('.tiny-pager__input') + const sizeSelect = page.locator('.tiny-pager__selector') + const pageItem = pager.locator('.tiny-pager__pages li') + + await expect(pageItem.last()).toHaveText(getPageCount(initPageSize)) + await sizeChange.click() + await sizeSelect.getByText('20').click() + await expect(pageItem.last()).toHaveText(getPageCount(20)) + await sizeSelect.getByText('50').click() + await expect(pageItem.last()).toHaveText(getPageCount(50)) +}) diff --git a/examples/docs/resources/pc/demo/pager/pager-count.spec.js b/examples/docs/resources/pc/demo/pager/pager-count.spec.js index 1e495aba0..33a48d8aa 100644 --- a/examples/docs/resources/pc/demo/pager/pager-count.spec.js +++ b/examples/docs/resources/pc/demo/pager/pager-count.spec.js @@ -1,9 +1,12 @@ -import { test, expect } from '@playwright/test'; +import { test, expect } from '@playwright/test' -test('test', async ({ page }) => { - await page.goto('http://localhost:7130/pc/pager/pager-mode'); - await page.getByText('总页数').nth(2).click(); - await page.getByText('200').click(); - await expect(page.getByText('200')).toHaveText('200') - await expect(page.locator('button').nth(4)).toBeDisabled -}); \ No newline at end of file +test('页码按钮数量', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('http://localhost:7130/pc/pager/pager-count') + + const preview = page.locator('#preview') + const pager = preview.locator('.tiny-pager') + const pageItem = pager.locator('.tiny-pager__pages li') + + await expect(pageItem).toHaveCount(16) +}) diff --git a/examples/docs/resources/pc/demo/pager/pager-disabled.spec.js b/examples/docs/resources/pc/demo/pager/pager-disabled.spec.js new file mode 100644 index 000000000..79d40fc5d --- /dev/null +++ b/examples/docs/resources/pc/demo/pager/pager-disabled.spec.js @@ -0,0 +1,19 @@ +import { test, expect } from '@playwright/test' + +test('测试禁用状态', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('http://localhost:7130/pc/pager/pager-disabled') + + const preview = page.locator('#preview') + const pager = preview.locator('.tiny-pager').first() + const sizeChange = pager.locator('.tiny-pager__input > input') + const pageItem = pager.locator('.tiny-pager__pages li') + const prev = pager.locator('.tiny-pager__btn-prev') + const next = pager.locator('.tiny-pager__btn-next') + + await expect(sizeChange).toBeDisabled() + await expect(prev).toBeDisabled() + await expect(next).toBeDisabled() + await expect(pageItem.first()).toHaveCSS('cursor', 'not-allowed') + await expect(pageItem.last()).toHaveCSS('cursor', 'not-allowed') +}) diff --git a/examples/docs/resources/pc/demo/pager/pager-events-current-change.spec.js b/examples/docs/resources/pc/demo/pager/pager-events-current-change.spec.js index 7697356dc..c2d1ef362 100644 --- a/examples/docs/resources/pc/demo/pager/pager-events-current-change.spec.js +++ b/examples/docs/resources/pc/demo/pager/pager-events-current-change.spec.js @@ -1,8 +1,17 @@ -import { test, expect } from '@playwright/test'; +import { test, expect } from '@playwright/test' -test('test', async ({ page }) => { - await page.goto('http://localhost:7130/pc/pager/pager-events'); - await page.locator('.f12 > div:nth-child(9)').click(); - await page.getByText('6').click(); - await page.locator('div').filter({ hasText: 'current-change 事件,当前页: 6' }).nth(1).click(); -}); \ No newline at end of file +test('页码发生变化时触发事件', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('http://localhost:7130/pc/pager/pager-events-current-change') + + const preview = page.locator('#preview') + const pager = preview.locator('.tiny-pager') + const pageItem = pager.locator('.tiny-pager__pages li') + const modalBox = page.locator('.tiny-modal__box') + + await pageItem.last().click() + await expect(modalBox.filter({ hasText: 'current-change 事件,当前页: 10' })).toBeVisible() + await pageItem.first().click() + // 需匹配以1结尾 + await expect(modalBox.filter({ hasText: /current-change 事件,当前页: 1$/ })).toBeVisible() +}) diff --git a/examples/docs/resources/pc/demo/pager/pager-events-nextclick.spec.js b/examples/docs/resources/pc/demo/pager/pager-events-nextclick.spec.js index c4400b8bc..a5bde36ac 100644 --- a/examples/docs/resources/pc/demo/pager/pager-events-nextclick.spec.js +++ b/examples/docs/resources/pc/demo/pager/pager-events-nextclick.spec.js @@ -1,9 +1,20 @@ -import { test, expect } from '@playwright/test'; +import { test, expect } from '@playwright/test' -test('test', async ({ page }) => { - await page.goto('http://localhost:7130/pc/pager/pager-events-nextclick'); - await page.locator('.f12 > div:nth-child(11)').click(); - await page.getByRole('listitem').filter({ hasText: '3' }).click(); - await page.locator('button').nth(4).click(); - await page.getByText('next-click 事件,当前页: 4').click(); -}); \ No newline at end of file +test('分页事件next-click', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('http://localhost:7130/pc/pager/pager-events-nextclick') + + const preview = page.locator('#preview') + const pager = preview.locator('.tiny-pager') + const prev = pager.locator('.tiny-pager__btn-prev') + const next = pager.locator('.tiny-pager__btn-next') + const pageItem = pager.locator('.tiny-pager__pages li') + const modalBox = page.locator('.tiny-modal__box').filter({ hasText: 'next-click 事件' }) + + await pageItem.last().click() + await expect(modalBox).not.toBeVisible() + await prev.click() + await expect(modalBox).not.toBeVisible() + await next.click() + await expect(modalBox).toBeVisible() +}) diff --git a/examples/docs/resources/pc/demo/pager/pager-events-prev-click.spec.js b/examples/docs/resources/pc/demo/pager/pager-events-prev-click.spec.js index 2ad42c61a..6b431e88c 100644 --- a/examples/docs/resources/pc/demo/pager/pager-events-prev-click.spec.js +++ b/examples/docs/resources/pc/demo/pager/pager-events-prev-click.spec.js @@ -1,9 +1,20 @@ -import { test, expect } from '@playwright/test'; +import { test, expect } from '@playwright/test' -test('test', async ({ page }) => { - await page.goto('http://localhost:7130/pc/pager/pager-events-prev-click'); - await page.getByText('分页事件prev-click').nth(1).click(); - await page.getByText('6').click(); - await page.locator('button').nth(3).click(); - await page.getByText('prev-click 事件,当前页: 5').click(); -}); \ No newline at end of file +test('分页事件prev-click', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('http://localhost:7130/pc/pager/pager-events-prev-click') + + const preview = page.locator('#preview') + const pager = preview.locator('.tiny-pager') + const prev = pager.locator('.tiny-pager__btn-prev') + const next = pager.locator('.tiny-pager__btn-next') + const pageItem = pager.locator('.tiny-pager__pages li') + const modalBox = page.locator('.tiny-modal__box').filter({ hasText: 'prev-click 事件' }) + + await next.click() + await expect(modalBox).not.toBeVisible() + await pageItem.last().click() + await expect(modalBox).not.toBeVisible() + await prev.click() + await expect(modalBox).toBeVisible() +}) diff --git a/examples/docs/resources/pc/demo/pager/pager-events.spec.js b/examples/docs/resources/pc/demo/pager/pager-events.spec.js index 666f7bcb9..64c0621d1 100644 --- a/examples/docs/resources/pc/demo/pager/pager-events.spec.js +++ b/examples/docs/resources/pc/demo/pager/pager-events.spec.js @@ -1,9 +1,19 @@ -import { test, expect } from '@playwright/test'; +import { test, expect } from '@playwright/test' -test('test', async ({ page }) => { - await page.goto('http://localhost:7130/pc/pager/pager-events'); - await page.getByText('分页事件size-change').nth(1).click(); - await page.locator('.tiny-pager__input-btn > .tiny-svg').click(); - await page.getByRole('listitem', { name: '30' }).click(); - await page.getByText('size-change 事件,每页 30 条').click(); -}); \ No newline at end of file +test('分页事件size-change', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('http://localhost:7130/pc/pager/pager-events') + + const preview = page.locator('#preview') + const pager = preview.locator('.tiny-pager') + const sizeSelect = page.locator('.tiny-pager__selector') + const sizeChange = pager.locator('.tiny-pager__input') + const modalBox = page.locator('.tiny-modal__box') + + await sizeChange.click() + await sizeSelect.getByText('50').click() + await expect(modalBox.filter({ hasText: 'size-change 事件,每页 50 条' })).toBeVisible() + await sizeChange.click() + await sizeSelect.getByText('100').click() + await expect(modalBox.filter({ hasText: 'size-change 事件,每页 100 条' })).toBeVisible() +}) diff --git a/examples/docs/resources/pc/demo/pager/pager-in-grid.spec.js b/examples/docs/resources/pc/demo/pager/pager-in-grid.spec.js index 6ad384565..0e84a5c63 100644 --- a/examples/docs/resources/pc/demo/pager/pager-in-grid.spec.js +++ b/examples/docs/resources/pc/demo/pager/pager-in-grid.spec.js @@ -1,14 +1,16 @@ -import { test, expect } from '@playwright/test'; +import { test, expect } from '@playwright/test' -test('test', async ({ page }) => { - await page.goto('http://localhost:7130/pc/pager/custom-next-prev-text'); - await page.getByText('Grid 表格分页').click(); - await page.locator('span').filter({ hasText: '5102050' }).locator('svg').click(); - await page.getByRole('listitem', { name: '5' }).first().click(); - await page.getByRole('listitem').filter({ hasText: '4' }).click(); - await expect(page.locator('//*[@id="preview"]/div[2]/div[2]/div[2]/button[2]')).toBeDisabled - await page.locator('.tiny-pager__input-btn > .tiny-svg > .st0').click(); - await page.getByRole('listitem', { name: '10' }).click(); - await page.getByRole('listitem').filter({ hasText: '2' }).click(); - await expect(page.locator('//*[@id="preview"]/div[2]/div[2]/div[2]/button[2]')).toBeDisabled -}); \ No newline at end of file +test('测试表格分页', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('http://localhost:7130/pc/pager/pager-in-grid') + + const preview = page.locator('#preview') + const pager = preview.locator('.tiny-pager') + const next = pager.locator('.tiny-pager__btn-next') + const firstTableRow = preview.locator('.tiny-grid .tiny-grid-body__row').first() + + await next.click() + await expect(firstTableRow).toHaveText(/WSX科技YX公司/) + await next.click() + await expect(firstTableRow).toHaveText(/TIG管理YX公司/) +}) diff --git a/examples/docs/resources/pc/demo/pager/pager-mode-fixed.spec.js b/examples/docs/resources/pc/demo/pager/pager-mode-fixed.spec.js index bbda2c219..3b40e4d58 100644 --- a/examples/docs/resources/pc/demo/pager/pager-mode-fixed.spec.js +++ b/examples/docs/resources/pc/demo/pager/pager-mode-fixed.spec.js @@ -1,11 +1,19 @@ -import { test, expect } from '@playwright/test'; +import { test, expect } from '@playwright/test' -test('test', async ({ page }) => { - await page.goto('http://localhost:7130/pc/pager/basic-usage'); - await page.getByText('fixed 模式').click(); - await page.locator('#preview').getByText('1').first().click(); - await expect(page.locator('#preview').getByText('1').first()).toHaveAttribute('class', 'is-active') - await page.locator('#preview').getByText('10').click(); - await expect(page.locator('#preview').getByText('10')).toHaveAttribute('class', 'is-active') - await expect(page.locator('//*[@id="preview"]/div[2]/div[2]/div/button[2]')).toBeDisabled -}); \ No newline at end of file +test('分页fixed模式', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('http://localhost:7130/pc/pager/pager-mode-fixed') + + const preview = page.locator('#preview') + const pager = preview.locator('.tiny-pager') + const prev = pager.locator('.tiny-pager__btn-prev') + const next = pager.locator('.tiny-pager__btn-next') + + // fixed 模式只有上一页、页码和下一页 + await expect(prev).toBeVisible() + await expect(pager.locator('.tiny-pager__pages')).toBeVisible() + await expect(next).toBeVisible() + await expect(pager.locator('.tiny-pager__input')).not.toBeVisible() + await expect(pager.locator('.tiny-pager__goto')).not.toBeVisible() + await expect(pager.locator('.tiny-pager__total')).not.toBeVisible() +}) diff --git a/examples/docs/resources/pc/demo/pager/pager-mode-number.spec.js b/examples/docs/resources/pc/demo/pager/pager-mode-number.spec.js index a95f44b85..d0aea7b94 100644 --- a/examples/docs/resources/pc/demo/pager/pager-mode-number.spec.js +++ b/examples/docs/resources/pc/demo/pager/pager-mode-number.spec.js @@ -1,8 +1,18 @@ -import { test, expect } from '@playwright/test'; +import { test, expect } from '@playwright/test' -test('test', async ({ page }) => { - await page.goto('http://localhost:7130/pc/pager/current-page'); - await page.getByText('number 模式').click(); - await page.getByRole('listitem').filter({ hasText: '2' }).click(); - await expect(page.getByRole('listitem').filter({ hasText: '2' })).toHaveText('2') -}); \ No newline at end of file +test('分页number模式', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('http://localhost:7130/pc/pager/pager-mode-number') + + const preview = page.locator('#preview') + const pager = preview.locator('.tiny-pager') + const prev = pager.locator('.tiny-pager__btn-prev') + const next = pager.locator('.tiny-pager__btn-next') + + await expect(prev).toBeVisible() + await expect(pager.locator('.tiny-pager__pages')).toBeVisible() + await expect(next).toBeVisible() + await expect(pager.locator('.tiny-pager__input')).toBeVisible() + await expect(pager.locator('.tiny-pager__goto')).toBeVisible() + await expect(pager.locator('.tiny-pager__total')).toBeVisible() +}) diff --git a/examples/docs/resources/pc/demo/pager/pager-mode-simple.spec.js b/examples/docs/resources/pc/demo/pager/pager-mode-simple.spec.js index ae9dcfc30..65cdccfd9 100644 --- a/examples/docs/resources/pc/demo/pager/pager-mode-simple.spec.js +++ b/examples/docs/resources/pc/demo/pager/pager-mode-simple.spec.js @@ -1,21 +1,18 @@ -import { test, expect } from '@playwright/test'; +import { test, expect } from '@playwright/test' -test('test', async ({ page }) => { - await page.goto('http://localhost:7130/pc/pager/pager-mode-simple'); - await page.getByText('simple 模式').nth(1).click(); - await page.locator('.tiny-pager__input-btn').click(); - await page.getByRole('listitem', { name: '10' }).first().click(); - await page.locator('#preview').getByRole('listitem').click(); - await page.locator('button').nth(4).click(); - await page.locator('button').nth(4).click(); - await page.locator('button').nth(4).click(); - await page.locator('button').nth(4).click(); - await page.locator('button').nth(4).click(); - await page.locator('button').nth(4).click(); - await page.locator('button').nth(4).click(); - await page.locator('button').nth(4).click(); - await page.locator('button').nth(4).click(); - await page.getByRole('listitem').filter({ hasText: '10' }).click(); - await expect(page.getByRole('listitem').filter({ hasText: '10' })).toHaveAttribute('class', 'is-active') - await expect(page.locator('//*[@id="preview"]/div[2]/div[2]/div/button[2]')).toBeDisabled -}); \ No newline at end of file +test('分页simple模式', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('http://localhost:7130/pc/pager/pager-mode-simple') + + const preview = page.locator('#preview') + const pager = preview.locator('.tiny-pager') + const prev = pager.locator('.tiny-pager__btn-prev') + const next = pager.locator('.tiny-pager__btn-next') + + await expect(prev).toBeVisible() + await expect(pager.locator('.tiny-pager__pages')).toBeVisible() + await expect(next).toBeVisible() + await expect(pager.locator('.tiny-pager__input')).toBeVisible() + await expect(pager.locator('.tiny-pager__goto')).not.toBeVisible() + await expect(pager.locator('.tiny-pager__total')).toBeVisible() +}) diff --git a/examples/docs/resources/pc/demo/pager/pager-mode.spec.js b/examples/docs/resources/pc/demo/pager/pager-mode.spec.js index e9c176a97..6a228104f 100644 --- a/examples/docs/resources/pc/demo/pager/pager-mode.spec.js +++ b/examples/docs/resources/pc/demo/pager/pager-mode.spec.js @@ -1,20 +1,18 @@ -import { test, expect } from '@playwright/test'; +import { test, expect } from '@playwright/test' -test('test', async ({ page }) => { - await page.goto('http://localhost:7130/pc/pager/pager-mode'); - await page.getByRole('textbox').nth(1).click(); - await page.locator('.tiny-pager__input-btn').click(); - await page.getByRole('textbox').nth(2).click(); - await page.getByRole('textbox').nth(2).fill('6'); - await expect(page.locator('//*[@id="preview"]/div[2]/div[2]/div/button[2]')).not.toBeDisabled - await page.getByRole('button', { name: '前往' }).click(); - await page.getByRole('textbox').nth(2).click(); - await page.getByRole('textbox').nth(2).fill('10'); - await expect(page.locator('//*[@id="preview"]/div[2]/div[2]/div/button[2]')).not.toBeDisabled - await page.getByRole('button', { name: '前往' }).click(); - await page.getByRole('textbox').nth(2).click(); - await page.getByRole('textbox').nth(2).press('ArrowRight'); - await page.getByRole('textbox').nth(2).fill('12'); - await page.getByRole('button', { name: '前往' }).click(); - await expect(page.locator('#preview').getByRole('button').nth(1)).toBeDisabled -}); \ No newline at end of file +test('分页complete模式', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('http://localhost:7130/pc/pager/pager-mode') + + const preview = page.locator('#preview') + const pager = preview.locator('.tiny-pager') + const prev = pager.locator('.tiny-pager__btn-prev') + const next = pager.locator('.tiny-pager__btn-next') + + await expect(prev).toBeVisible() + await expect(pager.locator('.tiny-pager__pages')).toBeVisible() + await expect(next).toBeVisible() + await expect(pager.locator('.tiny-pager__input')).toBeVisible() + await expect(pager.locator('.tiny-pager__goto')).toBeVisible() + await expect(pager.locator('.tiny-pager__total')).toBeVisible() +}) diff --git a/examples/docs/resources/pc/demo/pager/pager-size.spec.js b/examples/docs/resources/pc/demo/pager/pager-size.spec.js new file mode 100644 index 000000000..c2806e13e --- /dev/null +++ b/examples/docs/resources/pc/demo/pager/pager-size.spec.js @@ -0,0 +1,11 @@ +import { test, expect } from '@playwright/test' + +test('分页尺寸', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('http://localhost:7130/pc/pager/pager-size') + + const preview = page.locator('#preview') + const pager = preview.locator('.tiny-pager.tiny-pager__number') + + await expect(pager.nth(1)).toHaveClass(/tiny-pager--mini/) +}) diff --git a/examples/docs/resources/pc/demo/pager/popper-class.spec.js b/examples/docs/resources/pc/demo/pager/popper-class.spec.js index 34becc0f7..13b253f34 100644 --- a/examples/docs/resources/pc/demo/pager/popper-class.spec.js +++ b/examples/docs/resources/pc/demo/pager/popper-class.spec.js @@ -1,9 +1,14 @@ -import { test, expect } from '@playwright/test'; +import { test, expect } from '@playwright/test' -test('test', async ({ page }) => { - await page.goto('http://localhost:7130/pc/pager/popper-class'); - await page.getByText('自定义分页下拉框的类名').nth(2).click(); - await page.locator('#preview svg').nth(1).click(); - await page.getByRole('listitem', { name: '5' }).first().click(); - await expect(page.locator('//div[@role="tooltip"]')).toHaveClass(/custom-pager/) -}); \ No newline at end of file +test('自定义分页下拉框的类名', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('http://localhost:7130/pc/pager/popper-class') + + const preview = page.locator('#preview') + const pager = preview.locator('.tiny-pager') + const sizeChange = pager.locator('.tiny-pager__input') + const sizeSelect = page.locator('.tiny-pager__selector') + + await sizeChange.click() + await expect(sizeSelect).toHaveClass(/custom-pager/) +}) diff --git a/examples/docs/resources/pc/demo/pop-upload/basic-usage.spec.ts b/examples/docs/resources/pc/demo/pop-upload/basic-usage.spec.ts new file mode 100644 index 000000000..64123b593 --- /dev/null +++ b/examples/docs/resources/pc/demo/pop-upload/basic-usage.spec.ts @@ -0,0 +1,43 @@ +import { test, expect } from '@playwright/test' +import exp from 'constants' + +test('PopUpload 基本用法', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('http://localhost:7130/pc/pop-upload/basic-usage') + + const preview = page.locator('#preview') + const modalAppearBtn = preview.getByRole('button', { name: '选择文件' }) + const modal = page.locator('.tiny-modal') + const selectFilesBtn = modal.getByRole('button', { name: '选择文件' }) + const uploadsBtn = modal.getByRole('button', { name: '开始上传' }) + const cancelBtn = modal.getByRole('button', { name: '取消' }) + const lists = modal.locator('.tiny-popupload__dialog-table-item') + const deleteIcon = lists.locator('.delIcon') + const path = require('node:path') + const currentPath = path.resolve(__dirname, '测试.jpg') + + // 点击选择文件按钮,上传弹窗弹出 + await modalAppearBtn.click() + await expect(modal).toBeVisible() + await expect(selectFilesBtn).toBeVisible() + + // 没有文件被选择时,开始上传按钮禁用 + await expect(lists).toHaveCount(0) + await expect(uploadsBtn).toBeDisabled() + + // 点击选择文件后,文件被选择,开始上传按钮启用 + const [fileChooser] = await Promise.all([page.waitForEvent('filechooser'), selectFilesBtn.click()]) + await fileChooser.setFiles(currentPath) + await expect(lists).toHaveCount(1) + await expect(uploadsBtn).not.toBeDisabled() + + // 文件被选择后,点击垃圾桶图标删除文件 + await expect(lists).toHaveCount(1) + await deleteIcon.click() + await expect(lists).toHaveCount(0) + await expect(uploadsBtn).toBeDisabled() + + // 点击取消按钮,上传弹窗消失 + await cancelBtn.click() + await expect(modal).not.toBeVisible() +}) diff --git a/examples/docs/resources/pc/demo/pop-upload/before-upload.spec.ts b/examples/docs/resources/pc/demo/pop-upload/before-upload.spec.ts new file mode 100644 index 000000000..b66e8ecc3 --- /dev/null +++ b/examples/docs/resources/pc/demo/pop-upload/before-upload.spec.ts @@ -0,0 +1,25 @@ +import { test, expect } from '@playwright/test' + +test('PopUpload 阻止上传文件', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('http://localhost:7130/pc/pop-upload/before-upload') + + const preview = page.locator('#preview') + const modalAppearBtn = preview.getByRole('button', { name: '选择文件' }) + const uploadModal = page.locator('.tiny-modal').nth(0) + const messageModal = page.locator('.tiny-modal').nth(1) + const selectFilesBtn = uploadModal.getByRole('button', { name: '选择文件' }) + const uploadsBtn = uploadModal.getByRole('button', { name: '开始上传' }) + const lists = uploadModal.locator('.tiny-popupload__dialog-table-item') + const path = require('node:path') + const currentPath = path.resolve(__dirname, '测试.jpg') + + await modalAppearBtn.click() + const [fileChooser] = await Promise.all([page.waitForEvent('filechooser'), selectFilesBtn.click()]) + await fileChooser.setFiles(currentPath) + await expect(lists).toHaveCount(1) + + // 点击开始上传文件按钮,信息提示弹窗出现 + await uploadsBtn.click() + await expect(messageModal).toBeVisible() +}) diff --git a/examples/docs/resources/pc/demo/pop-upload/custom-request-headers.spec.ts b/examples/docs/resources/pc/demo/pop-upload/custom-request-headers.spec.ts new file mode 100644 index 000000000..ab87ccffa --- /dev/null +++ b/examples/docs/resources/pc/demo/pop-upload/custom-request-headers.spec.ts @@ -0,0 +1,25 @@ +import { test, expect } from '@playwright/test' + +test('PopUpload 自定义请求头', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('http://localhost:7130/pc/pop-upload/custom-request-headers') + + const preview = page.locator('#preview') + const modalAppearBtn = preview.getByRole('button', { name: '选择文件' }) + const uploadModal = page.locator('.tiny-modal') + const selectFilesBtn = uploadModal.getByRole('button', { name: '选择文件' }) + const uploadsBtn = uploadModal.getByRole('button', { name: '开始上传' }) + const path = require('node:path') + const currentPath = path.resolve(__dirname, '测试.jpg') + + await modalAppearBtn.click() + const [fileChooser] = await Promise.all([page.waitForEvent('filechooser'), selectFilesBtn.click()]) + await fileChooser.setFiles(currentPath) + + // 获取请求头 + const [request] = await Promise.all([page.waitForEvent('request'), uploadsBtn.click()]) + const { authorization } = await request.headers() + + await expect(request.headers()).not.toBeNull() + await expect(authorization).toEqual('Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==') +}) diff --git a/examples/docs/resources/pc/demo/pop-upload/data.spec.ts b/examples/docs/resources/pc/demo/pop-upload/data.spec.ts new file mode 100644 index 000000000..449b3e447 --- /dev/null +++ b/examples/docs/resources/pc/demo/pop-upload/data.spec.ts @@ -0,0 +1,24 @@ +import { test, expect } from '@playwright/test' + +test('PopUpload 上传时附带的额外参数', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('http://localhost:7130/pc/pop-upload/data') + + const preview = page.locator('#preview') + const modalAppearBtn = preview.getByRole('button', { name: '选择文件' }) + const uploadModal = page.locator('.tiny-modal') + const selectFilesBtn = uploadModal.getByRole('button', { name: '选择文件' }) + const uploadsBtn = uploadModal.getByRole('button', { name: '开始上传' }) + const path = require('node:path') + const currentPath = path.resolve(__dirname, '测试.jpg') + + await modalAppearBtn.click() + const [fileChooser] = await Promise.all([page.waitForEvent('filechooser'), selectFilesBtn.click()]) + await fileChooser.setFiles(currentPath) + + // 获取请求体 + const [request] = await Promise.all([page.waitForEvent('request'), uploadsBtn.click()]) + const body = await request.postData() + + await expect(body).toBeNull() +}) diff --git a/examples/docs/resources/pc/demo/pop-upload/file-limit.spec.ts b/examples/docs/resources/pc/demo/pop-upload/file-limit.spec.ts new file mode 100644 index 000000000..c177ea9f0 --- /dev/null +++ b/examples/docs/resources/pc/demo/pop-upload/file-limit.spec.ts @@ -0,0 +1,32 @@ +import { test, expect } from '@playwright/test' + +test('PopUpload 最大上传文件数', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('http://localhost:7130/pc/pop-upload/file-limit') + + const preview = page.locator('#preview') + const modalAppearBtn = preview.getByRole('button', { name: '选择文件' }) + const uploadModal = page.locator('.tiny-modal').nth(0) + const alert = uploadModal.locator('.tiny-alert') + const selectFilesBtn = uploadModal.getByRole('button', { name: '选择批量文件' }) + const lists = uploadModal.locator('.tiny-popupload__dialog-table-item') + const path = require('node:path') + const path1= path.resolve(__dirname, '测试.jpg') + const path2 = path.resolve(__dirname, '测试.png') + const path3 = path.resolve(__dirname, '测试.svg') + const path4 = path.resolve(__dirname, '测试.svg') + + await modalAppearBtn.click() + await expect(alert.getByText('上传文件数限制为:3')).toBeVisible() + const [fileChooser] = await Promise.all([page.waitForEvent('filechooser'), selectFilesBtn.click()]) + await fileChooser.setFiles(path1) + await fileChooser.setFiles(path2) + await fileChooser.setFiles(path3) + await expect(lists).toHaveCount(3) + + await fileChooser.setFiles(path4) + await expect(lists).toHaveCount(3) + await expect(alert.getByText('上传文件数量超出限制,已取消该操作')).toBeVisible() + + +}) diff --git a/examples/docs/resources/pc/demo/pop-upload/file-type.spec.ts b/examples/docs/resources/pc/demo/pop-upload/file-type.spec.ts new file mode 100644 index 000000000..c80cf155c --- /dev/null +++ b/examples/docs/resources/pc/demo/pop-upload/file-type.spec.ts @@ -0,0 +1,28 @@ +import { test, expect } from '@playwright/test' + +test('PopUpload 可上传文件类型', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('http://localhost:7130/pc/pop-upload/file-type') + + const preview = page.locator('#preview') + const modalAppearBtn = preview.getByRole('button', { name: '选择文件' }) + const uploadModal = page.locator('.tiny-modal').nth(0) + const alert = uploadModal.locator('.tiny-alert') + const selectFilesBtn = uploadModal.getByRole('button', { name: '选择文件' }) + const uploadsBtn = uploadModal.getByRole('button', { name: '开始上传' }) + const lists = uploadModal.locator('.tiny-popupload__dialog-table-item') + const path = require('node:path') + const path1 = path.resolve(__dirname, '测试.jpg') + const path2 = path.resolve(__dirname, '测试.png') + const path3 = path.resolve(__dirname, '测试.svg') + + await modalAppearBtn.click() + await expect(alert.getByText('上传文件类型限制为:.png,.jpg')).toBeVisible() + const [fileChooser] = await Promise.all([page.waitForEvent('filechooser'), selectFilesBtn.click()]) + await fileChooser.setFiles(path1) + await fileChooser.setFiles(path2) + await fileChooser.setFiles(path3) + await expect(lists).toHaveCount(3) + await uploadsBtn.click() + await expect(alert.getByText('测试.svg:上传文件类型不匹配')).toBeVisible() +}) diff --git a/examples/docs/resources/pc/demo/pop-upload/fill-button-text.spec.ts b/examples/docs/resources/pc/demo/pop-upload/fill-button-text.spec.ts new file mode 100644 index 000000000..6838c0b5c --- /dev/null +++ b/examples/docs/resources/pc/demo/pop-upload/fill-button-text.spec.ts @@ -0,0 +1,41 @@ +import { test, expect } from '@playwright/test' +test.describe('PopUpload 自定义按钮的文本', () => { + + test('PopUpload 文件上传弹框中取消按钮的文本', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('http://localhost:7130/pc/pop-upload/fill-button-text1') + + const modalAppearBtn = page.getByRole('button', { name: '自定义按钮文本' }) + const modal = page.locator('.tiny-modal') + const cancelBtn = modal.getByRole('button', { name: '自定义取消按钮' }) + + await modalAppearBtn.click() + await expect(cancelBtn).toHaveText(/自定义取消按钮/) + }) + + test('PopUpload 文件上传弹框中提交按钮的文本', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('http://localhost:7130/pc/pop-upload/fill-button-text2') + + const modalAppearBtn = page.getByRole('button', { name: '自定义按钮文本' }) + const modal = page.locator('.tiny-modal') + const uploadsBtn = modal.getByRole('button', { name: '自定义提交按钮文本' }) + + await modalAppearBtn.click() + await expect(uploadsBtn).toHaveText(/自定义提交按钮文本/) + }) + + test('PopUpload 打开弹出框的按钮的文本', async ({ page }) => { + page.on('pageerror', (exception) => expect(exception).toBeNull()) + await page.goto('http://localhost:7130/pc/pop-upload/fill-button-text4') + + const modalAppearBtn = page.getByRole('button', { name: '自定义按钮文本' }) + const modal = page.locator('.tiny-modal') + + + await expect(modalAppearBtn).toHaveText(/自定义按钮文本/) + await modalAppearBtn.click() + await expect(modal).toBeVisible() + }) +}) + diff --git a/examples/docs/resources/pc/demo/pop-upload/fill-button-text.vue b/examples/docs/resources/pc/demo/pop-upload/fill-button-text.vue index 34a562fa1..8ed70fcc1 100644 --- a/examples/docs/resources/pc/demo/pop-upload/fill-button-text.vue +++ b/examples/docs/resources/pc/demo/pop-upload/fill-button-text.vue @@ -1,5 +1,6 @@