@opentiny/vue-docs 3.27.1 → 3.28.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/demos/apis/base-select.js +2 -2
- package/demos/apis/chart-attributes-demo.js +4 -4
- package/demos/apis/chart-demo.js +4 -4
- package/demos/apis/chart-docs.js +4 -4
- package/demos/apis/chart-events.js +4 -4
- package/demos/apis/chart-question.js +4 -4
- package/demos/apis/chart.js +4 -4
- package/demos/apis/color-picker.js +1 -1
- package/demos/apis/color-select-panel.js +1 -1
- package/demos/apis/drawer.js +14 -0
- package/demos/apis/dropdown.js +6 -2
- package/demos/apis/grid-select.js +20 -21
- package/demos/apis/grid.js +1 -1
- package/demos/apis/modal.js +15 -1
- package/demos/apis/select-wrapper.js +1067 -0
- package/demos/apis/select.js +25 -13
- package/demos/apis/switch.js +15 -0
- package/demos/apis/time-line.js +14 -0
- package/demos/apis/tree-menu.js +7 -4
- package/demos/apis/tree-select.js +41 -0
- package/demos/mobile-first/app/base-select/all-text.vue +43 -0
- package/demos/mobile-first/app/base-select/allow-create.vue +51 -0
- package/demos/mobile-first/app/base-select/automatic-dropdown.vue +60 -0
- package/demos/mobile-first/app/base-select/basic-usage.vue +47 -0
- package/demos/mobile-first/app/base-select/binding-obj.vue +44 -0
- package/demos/mobile-first/app/base-select/cache-usage.vue +55 -0
- package/demos/mobile-first/app/base-select/clear-no-match-value.vue +52 -0
- package/demos/mobile-first/app/base-select/clearable.vue +34 -0
- package/demos/mobile-first/app/base-select/collapse-tags.vue +49 -0
- package/demos/mobile-first/app/base-select/copy-multi.vue +55 -0
- package/demos/mobile-first/app/base-select/copy-single.vue +158 -0
- package/demos/mobile-first/app/base-select/disabled.vue +107 -0
- package/demos/mobile-first/app/base-select/events.vue +112 -0
- package/demos/mobile-first/app/base-select/filter-method.vue +83 -0
- package/demos/mobile-first/app/base-select/filter-mode.vue +57 -0
- package/demos/mobile-first/app/base-select/hide-drop.vue +34 -0
- package/demos/mobile-first/app/base-select/is-drop-inherit-width.vue +49 -0
- package/demos/mobile-first/app/base-select/manual-focus-blur.vue +90 -0
- package/demos/mobile-first/app/base-select/map-field.vue +42 -0
- package/demos/mobile-first/app/base-select/memoize-usage.vue +66 -0
- package/demos/mobile-first/app/base-select/multiple-mix.vue +156 -0
- package/demos/mobile-first/app/base-select/multiple.vue +98 -0
- package/demos/mobile-first/app/base-select/native-properties.vue +34 -0
- package/demos/mobile-first/app/base-select/no-data-text.vue +40 -0
- package/demos/mobile-first/app/base-select/optimization.vue +55 -0
- package/demos/mobile-first/app/base-select/option-group.vue +105 -0
- package/demos/mobile-first/app/base-select/popup-style-position.vue +40 -0
- package/demos/mobile-first/app/base-select/remote-method.vue +286 -0
- package/demos/mobile-first/app/base-select/show-alloption.vue +34 -0
- package/demos/mobile-first/app/base-select/show-tip.vue +34 -0
- package/demos/mobile-first/app/base-select/size.vue +48 -0
- package/demos/mobile-first/app/base-select/slot-default.vue +95 -0
- package/demos/mobile-first/app/base-select/slot-empty.vue +41 -0
- package/demos/mobile-first/app/base-select/slot-footer.vue +45 -0
- package/demos/mobile-first/app/base-select/slot-label.vue +85 -0
- package/demos/mobile-first/app/base-select/slot-panel.vue +155 -0
- package/demos/mobile-first/app/base-select/slot-prefix.vue +39 -0
- package/demos/mobile-first/app/base-select/slot-reference.vue +41 -0
- package/demos/mobile-first/app/base-select/tag-type.vue +36 -0
- package/demos/mobile-first/app/base-select/webdoc/base-select.cn.md +7 -0
- package/demos/mobile-first/app/base-select/webdoc/base-select.en.md +7 -0
- package/demos/mobile-first/app/base-select/webdoc/base-select.js +590 -0
- package/demos/mobile-first/app/button/webdoc/button.js +2 -2
- package/demos/mobile-first/app/file-upload/show-title.vue +2 -3
- package/demos/mobile-first/app/grid-select/basic-usage.vue +70 -0
- package/demos/mobile-first/app/grid-select/config.vue +88 -0
- package/demos/mobile-first/app/grid-select/extra-query-params.vue +126 -0
- package/demos/mobile-first/app/grid-select/init-query.vue +124 -0
- package/demos/mobile-first/app/grid-select/radio-bigdata.vue +46 -0
- package/demos/mobile-first/app/grid-select/remote.vue +90 -0
- package/demos/mobile-first/app/grid-select/webdoc/grid-select.cn.md +7 -0
- package/demos/mobile-first/app/grid-select/webdoc/grid-select.en.md +8 -0
- package/demos/mobile-first/app/grid-select/webdoc/grid-select.js +92 -0
- package/demos/mobile-first/app/select-wrapper/all-text.vue +43 -0
- package/demos/mobile-first/app/select-wrapper/allow-create.vue +77 -0
- package/demos/mobile-first/app/select-wrapper/automatic-dropdown.vue +62 -0
- package/demos/mobile-first/app/select-wrapper/basic-usage.vue +47 -0
- package/demos/mobile-first/app/select-wrapper/binding-obj.vue +44 -0
- package/demos/mobile-first/app/select-wrapper/cache-usage.vue +49 -0
- package/demos/mobile-first/app/select-wrapper/clear-no-match-value.vue +54 -0
- package/demos/mobile-first/app/select-wrapper/clearable.vue +34 -0
- package/demos/mobile-first/app/select-wrapper/collapse-tags.vue +58 -0
- package/demos/mobile-first/app/select-wrapper/copy-multi.vue +77 -0
- package/demos/mobile-first/app/select-wrapper/copy-single.vue +157 -0
- package/demos/mobile-first/app/select-wrapper/disabled.vue +108 -0
- package/demos/mobile-first/app/select-wrapper/events.vue +112 -0
- package/demos/mobile-first/app/select-wrapper/extra-query-params.vue +157 -0
- package/demos/mobile-first/app/select-wrapper/filter-method.vue +85 -0
- package/demos/mobile-first/app/select-wrapper/filter-mode.vue +46 -0
- package/demos/mobile-first/app/select-wrapper/hide-drop.vue +34 -0
- package/demos/mobile-first/app/select-wrapper/init-label.vue +74 -0
- package/demos/mobile-first/app/select-wrapper/is-drop-inherit-width.vue +51 -0
- package/demos/mobile-first/app/select-wrapper/manual-focus-blur.vue +90 -0
- package/demos/mobile-first/app/select-wrapper/map-field.vue +68 -0
- package/demos/mobile-first/app/select-wrapper/memoize-usage.vue +66 -0
- package/demos/mobile-first/app/select-wrapper/multiple-mix.vue +84 -0
- package/demos/mobile-first/app/select-wrapper/multiple.vue +133 -0
- package/demos/mobile-first/app/select-wrapper/native-properties.vue +34 -0
- package/demos/mobile-first/app/select-wrapper/nest-grid-disable.vue +122 -0
- package/demos/mobile-first/app/select-wrapper/nest-grid-init-query.vue +129 -0
- package/demos/mobile-first/app/select-wrapper/nest-grid-remote.vue +144 -0
- package/demos/mobile-first/app/select-wrapper/nest-grid.vue +106 -0
- package/demos/mobile-first/app/select-wrapper/nest-radio-grid-much-data.vue +50 -0
- package/demos/mobile-first/app/select-wrapper/nest-tree.vue +164 -0
- package/demos/mobile-first/app/select-wrapper/no-data-text.vue +48 -0
- package/demos/mobile-first/app/select-wrapper/optimization.vue +59 -0
- package/demos/mobile-first/app/select-wrapper/option-group.vue +105 -0
- package/demos/mobile-first/app/select-wrapper/popup-style-position.vue +40 -0
- package/demos/mobile-first/app/select-wrapper/remote-method.vue +286 -0
- package/demos/mobile-first/app/select-wrapper/show-alloption.vue +34 -0
- package/demos/mobile-first/app/select-wrapper/show-tip.vue +28 -0
- package/demos/mobile-first/app/select-wrapper/size.vue +57 -0
- package/demos/mobile-first/app/select-wrapper/slot-default.vue +95 -0
- package/demos/mobile-first/app/select-wrapper/slot-empty.vue +44 -0
- package/demos/mobile-first/app/select-wrapper/slot-header-footer.vue +55 -0
- package/demos/mobile-first/app/select-wrapper/slot-label.vue +85 -0
- package/demos/mobile-first/app/select-wrapper/slot-prefix.vue +39 -0
- package/demos/mobile-first/app/select-wrapper/slot-reference.vue +41 -0
- package/demos/mobile-first/app/select-wrapper/tag-type.vue +36 -0
- package/demos/mobile-first/app/select-wrapper/webdoc/select-wrapper.cn.md +7 -0
- package/demos/mobile-first/app/select-wrapper/webdoc/select-wrapper.en.md +7 -0
- package/demos/mobile-first/app/select-wrapper/webdoc/select-wrapper.js +695 -0
- package/demos/mobile-first/app/space/space-size.vue +1 -1
- package/demos/mobile-first/app/tree-select/basic-usage.vue +63 -0
- package/demos/mobile-first/app/tree-select/collapse-tags.vue +77 -0
- package/demos/mobile-first/app/tree-select/copy.vue +77 -0
- package/demos/mobile-first/app/tree-select/disabled.vue +76 -0
- package/demos/mobile-first/app/tree-select/lazy.vue +59 -0
- package/demos/mobile-first/app/tree-select/map-field.vue +63 -0
- package/demos/mobile-first/app/tree-select/multiple.vue +63 -0
- package/demos/mobile-first/app/tree-select/native-properties.vue +69 -0
- package/demos/mobile-first/app/tree-select/panel-style.vue +80 -0
- package/demos/mobile-first/app/tree-select/reference-style.vue +79 -0
- package/demos/mobile-first/app/tree-select/size.vue +78 -0
- package/demos/mobile-first/app/tree-select/webdoc/tree-select.cn.md +7 -0
- package/demos/mobile-first/app/tree-select/webdoc/tree-select.en.md +7 -0
- package/demos/mobile-first/app/tree-select/webdoc/tree-select.js +220 -0
- package/demos/mobile-first/menus.js +14 -0
- package/demos/pc/app/amount/custom-service.spec.js +4 -4
- package/demos/pc/app/base-select/all-text.spec.ts +2 -2
- package/demos/pc/app/base-select/allow-create.spec.ts +3 -3
- package/demos/pc/app/base-select/automatic-dropdown.spec.ts +2 -2
- package/demos/pc/app/base-select/basic-usage.spec.ts +4 -4
- package/demos/pc/app/base-select/binding-obj.spec.ts +2 -2
- package/demos/pc/app/base-select/cache-usage.spec.ts +2 -2
- package/demos/pc/app/base-select/clearable.spec.ts +2 -2
- package/demos/pc/app/base-select/input-box-type.spec.ts +0 -2
- package/demos/pc/app/base-select/multiple.spec.ts +1 -1
- package/demos/pc/app/base-select/searchable.spec.ts +1 -1
- package/demos/pc/app/base-select/slot-reference.spec.ts +1 -1
- package/demos/pc/app/base-select/webdoc/base-select.js +3 -3
- package/demos/pc/app/checkbox/checkbox-disabled-composition-api.vue +10 -0
- package/demos/pc/app/checkbox/checkbox-disabled.spec.ts +22 -0
- package/demos/pc/app/checkbox/checkbox-disabled.vue +18 -0
- package/demos/pc/app/checkbox/vertical-checkbox.spec.ts +4 -4
- package/demos/pc/app/checkbox/webdoc/checkbox.js +13 -0
- package/demos/pc/app/color-picker/webdoc/color-picker.js +2 -2
- package/demos/pc/app/color-select-panel/format.spec.ts +3 -3
- package/demos/pc/app/country/fields.spec.js +1 -1
- package/demos/pc/app/currency/basic-usage.spec.ts +1 -1
- package/demos/pc/app/currency/custom-service.spec.ts +3 -3
- package/demos/pc/app/date-panel/shortcuts.vue +23 -23
- package/demos/pc/app/date-panel/unlink-panels.spec.ts +12 -8
- package/demos/pc/app/dept/custom-service.spec.ts +6 -6
- package/demos/pc/app/directives/webdoc/directives-auto-tip.js +2 -0
- package/demos/pc/app/drawer/close-on-press-escape-composition-api.vue +29 -0
- package/demos/pc/app/drawer/close-on-press-escape.spec.ts +19 -0
- package/demos/pc/app/drawer/close-on-press-escape.vue +38 -0
- package/demos/pc/app/drawer/webdoc/drawer.js +12 -0
- package/demos/pc/app/drop-roles/custom-service.spec.ts +1 -1
- package/demos/pc/app/drop-times/basic-usage.spec.ts +2 -2
- package/demos/pc/app/drop-times/start-end-step.spec.ts +1 -1
- package/demos/pc/app/dropdown/trigger-composition-api.vue +13 -0
- package/demos/pc/app/dropdown/trigger.spec.ts +13 -0
- package/demos/pc/app/dropdown/trigger.vue +13 -0
- package/demos/pc/app/dropdown/webdoc/dropdown.js +4 -4
- package/demos/pc/app/file-upload/upload-file-list-saas.spec.ts +0 -2
- package/demos/pc/app/form/basic-usage.spec.ts +2 -2
- package/demos/pc/app/form/custom-validation-string-length.vue +38 -0
- package/demos/pc/app/form/webdoc/form.js +12 -0
- package/demos/pc/app/grid/custom/column-simple.spec.js +2 -2
- package/demos/pc/app/grid/data-source/undefined-field-defalut-value-composition-api.vue +51 -0
- package/demos/pc/app/grid/data-source/undefined-field-defalut-value.spec.js +52 -0
- package/demos/pc/app/grid/data-source/undefined-field-defalut-value.vue +61 -0
- package/demos/pc/app/grid/editor/custom-editor-select-composition-api.vue +6 -1
- package/demos/pc/app/grid/editor/custom-editor-select.spec.js +5 -4
- package/demos/pc/app/grid/editor/custom-editor-select.vue +5 -1
- package/demos/pc/app/grid/editor/mutil-render.spec.js +4 -1
- package/demos/pc/app/grid/filter/server-filter-composition-api.vue +1 -1
- package/demos/pc/app/grid/filter/server-filter.vue +1 -1
- package/demos/pc/app/grid/webdoc/grid-data-source.js +12 -0
- package/demos/pc/app/grid-select/basic-usage-composition-api.vue +29 -1
- package/demos/pc/app/grid-select/basic-usage.vue +30 -1
- package/demos/pc/app/grid-select/config.spec.ts +24 -0
- package/demos/pc/app/grid-select/config.vue +1 -1
- package/demos/pc/app/grid-select/extra-query-params-composition-api.vue +110 -0
- package/demos/pc/app/grid-select/extra-query-params.spec.ts +21 -0
- package/demos/pc/app/grid-select/extra-query-params.vue +129 -0
- package/demos/pc/app/grid-select/init-query-composition-api.vue +119 -0
- package/demos/pc/app/grid-select/init-query.spec.ts +30 -0
- package/demos/pc/app/grid-select/init-query.vue +127 -0
- package/demos/pc/app/grid-select/radio-bigdata-composition-api.vue +44 -0
- package/demos/pc/app/grid-select/radio-bigdata.spec.ts +19 -0
- package/demos/pc/app/grid-select/radio-bigdata.vue +52 -0
- package/demos/pc/app/grid-select/remote.spec.ts +23 -0
- package/demos/pc/app/grid-select/remote.vue +2 -1
- package/demos/pc/app/grid-select/webdoc/grid-select.js +48 -29
- package/demos/pc/app/guide/basic-usage-composition-api.vue +4 -1
- package/demos/pc/app/guide/basic-usage.vue +4 -1
- package/demos/pc/app/guide/callback-composition-api.vue +1 -0
- package/demos/pc/app/guide/callback.vue +1 -0
- package/demos/pc/app/icon/advance-icons.js +412 -0
- package/demos/pc/app/icon/advance-usage-composition-api.vue +174 -0
- package/demos/pc/app/icon/advance-usage.vue +200 -0
- package/demos/pc/app/icon/webdoc/icon.js +20 -0
- package/demos/pc/app/modal/modal-header.vue +16 -2
- package/demos/pc/app/modal/webdoc/modal.js +7 -6
- package/demos/pc/app/query-builder/webdoc/query-builder.js +17 -14
- package/demos/pc/app/scroll-text/scroll-direction.spec.ts +4 -4
- package/demos/pc/app/select/allow-create.spec.ts +3 -3
- package/demos/pc/app/select/automatic-dropdown.spec.ts +2 -2
- package/demos/pc/app/select/basic-usage.spec.ts +3 -3
- package/demos/pc/app/select/binding-obj.spec.ts +2 -2
- package/demos/pc/app/select/cache-usage.spec.ts +2 -2
- package/demos/pc/app/select/clearable.spec.ts +1 -1
- package/demos/pc/app/select/webdoc/select.js +17 -11
- package/demos/pc/app/select-wrapper/all-text-composition-api.vue +35 -0
- package/demos/pc/app/select-wrapper/all-text.spec.ts +13 -0
- package/demos/pc/app/select-wrapper/all-text.vue +43 -0
- package/demos/pc/app/select-wrapper/allow-create-composition-api.vue +102 -0
- package/demos/pc/app/select-wrapper/allow-create.spec.ts +50 -0
- package/demos/pc/app/select-wrapper/allow-create.vue +112 -0
- package/demos/pc/app/select-wrapper/automatic-dropdown-composition-api.vue +54 -0
- package/demos/pc/app/select-wrapper/automatic-dropdown.spec.ts +31 -0
- package/demos/pc/app/select-wrapper/automatic-dropdown.vue +62 -0
- package/demos/pc/app/select-wrapper/basic-usage-composition-api.vue +38 -0
- package/demos/pc/app/select-wrapper/basic-usage.spec.ts +47 -0
- package/demos/pc/app/select-wrapper/basic-usage.vue +47 -0
- package/demos/pc/app/select-wrapper/binding-obj-composition-api.vue +35 -0
- package/demos/pc/app/select-wrapper/binding-obj.spec.ts +21 -0
- package/demos/pc/app/select-wrapper/binding-obj.vue +44 -0
- package/demos/pc/app/select-wrapper/cache-usage-composition-api.vue +39 -0
- package/demos/pc/app/select-wrapper/cache-usage.spec.ts +19 -0
- package/demos/pc/app/select-wrapper/cache-usage.vue +49 -0
- package/demos/pc/app/select-wrapper/clear-no-match-value-composition-api.vue +46 -0
- package/demos/pc/app/select-wrapper/clear-no-match-value.spec.ts +24 -0
- package/demos/pc/app/select-wrapper/clear-no-match-value.vue +54 -0
- package/demos/pc/app/select-wrapper/clearable-composition-api.vue +25 -0
- package/demos/pc/app/select-wrapper/clearable.spec.ts +21 -0
- package/demos/pc/app/select-wrapper/clearable.vue +34 -0
- package/demos/pc/app/select-wrapper/collapse-tags-composition-api.vue +54 -0
- package/demos/pc/app/select-wrapper/collapse-tags.spec.ts +32 -0
- package/demos/pc/app/select-wrapper/collapse-tags.vue +62 -0
- package/demos/pc/app/select-wrapper/copy-multi-composition-api.vue +66 -0
- package/demos/pc/app/select-wrapper/copy-multi.spec.ts +65 -0
- package/demos/pc/app/select-wrapper/copy-multi.vue +77 -0
- package/demos/pc/app/select-wrapper/copy-single-composition-api.vue +150 -0
- package/demos/pc/app/select-wrapper/copy-single.spec.ts +76 -0
- package/demos/pc/app/select-wrapper/copy-single.vue +157 -0
- package/demos/pc/app/select-wrapper/disabled-composition-api.vue +101 -0
- package/demos/pc/app/select-wrapper/disabled.spec.ts +88 -0
- package/demos/pc/app/select-wrapper/disabled.vue +108 -0
- package/demos/pc/app/select-wrapper/events-composition-api.vue +109 -0
- package/demos/pc/app/select-wrapper/events.spec.ts +72 -0
- package/demos/pc/app/select-wrapper/events.vue +112 -0
- package/demos/pc/app/select-wrapper/extra-query-params-composition-api.vue +155 -0
- package/demos/pc/app/select-wrapper/extra-query-params.vue +157 -0
- package/demos/pc/app/select-wrapper/filter-method-composition-api.vue +75 -0
- package/demos/pc/app/select-wrapper/filter-method.spec.ts +89 -0
- package/demos/pc/app/select-wrapper/filter-method.vue +85 -0
- package/demos/pc/app/select-wrapper/filter-mode-composition-api.vue +37 -0
- package/demos/pc/app/select-wrapper/filter-mode.vue +46 -0
- package/demos/pc/app/select-wrapper/hide-drop-composition-api.vue +25 -0
- package/demos/pc/app/select-wrapper/hide-drop.spec.ts +12 -0
- package/demos/pc/app/select-wrapper/hide-drop.vue +34 -0
- package/demos/pc/app/select-wrapper/init-label-composition-api.vue +57 -0
- package/demos/pc/app/select-wrapper/init-label.vue +65 -0
- package/demos/pc/app/select-wrapper/input-box-type-composition-api.vue +49 -0
- package/demos/pc/app/select-wrapper/input-box-type.spec.ts +71 -0
- package/demos/pc/app/select-wrapper/input-box-type.vue +58 -0
- package/demos/pc/app/select-wrapper/is-drop-inherit-width-composition-api.vue +42 -0
- package/demos/pc/app/select-wrapper/is-drop-inherit-width.spec.ts +34 -0
- package/demos/pc/app/select-wrapper/is-drop-inherit-width.vue +51 -0
- package/demos/pc/app/select-wrapper/manual-focus-blur-composition-api.vue +88 -0
- package/demos/pc/app/select-wrapper/manual-focus-blur.spec.ts +18 -0
- package/demos/pc/app/select-wrapper/manual-focus-blur.vue +90 -0
- package/demos/pc/app/select-wrapper/map-field-composition-api.vue +61 -0
- package/demos/pc/app/select-wrapper/map-field.spec.ts +60 -0
- package/demos/pc/app/select-wrapper/map-field.vue +68 -0
- package/demos/pc/app/select-wrapper/memoize-usage-composition-api.vue +52 -0
- package/demos/pc/app/select-wrapper/memoize-usage.spec.ts +19 -0
- package/demos/pc/app/select-wrapper/memoize-usage.vue +66 -0
- package/demos/pc/app/select-wrapper/multiple-composition-api.vue +139 -0
- package/demos/pc/app/select-wrapper/multiple-mix-composition-api.vue +75 -0
- package/demos/pc/app/select-wrapper/multiple-mix.vue +84 -0
- package/demos/pc/app/select-wrapper/multiple.spec.ts +52 -0
- package/demos/pc/app/select-wrapper/multiple.vue +146 -0
- package/demos/pc/app/select-wrapper/native-properties-composition-api.vue +25 -0
- package/demos/pc/app/select-wrapper/native-properties.spec.ts +16 -0
- package/demos/pc/app/select-wrapper/native-properties.vue +34 -0
- package/demos/pc/app/select-wrapper/nest-grid-composition-api.vue +99 -0
- package/demos/pc/app/select-wrapper/nest-grid-disable-composition-api.vue +88 -0
- package/demos/pc/app/select-wrapper/nest-grid-disable.spec.ts +41 -0
- package/demos/pc/app/select-wrapper/nest-grid-disable.vue +122 -0
- package/demos/pc/app/select-wrapper/nest-grid-init-query-composition-api.vue +122 -0
- package/demos/pc/app/select-wrapper/nest-grid-init-query.vue +129 -0
- package/demos/pc/app/select-wrapper/nest-grid-remote-composition-api.vue +127 -0
- package/demos/pc/app/select-wrapper/nest-grid-remote.spec.ts +136 -0
- package/demos/pc/app/select-wrapper/nest-grid-remote.vue +144 -0
- package/demos/pc/app/select-wrapper/nest-grid.spec.ts +95 -0
- package/demos/pc/app/select-wrapper/nest-grid.vue +106 -0
- package/demos/pc/app/select-wrapper/nest-radio-grid-much-data-composition-api.vue +43 -0
- package/demos/pc/app/select-wrapper/nest-radio-grid-much-data.spec.ts +35 -0
- package/demos/pc/app/select-wrapper/nest-radio-grid-much-data.vue +50 -0
- package/demos/pc/app/select-wrapper/nest-tree-composition-api.vue +97 -0
- package/demos/pc/app/select-wrapper/nest-tree.spec.ts +84 -0
- package/demos/pc/app/select-wrapper/nest-tree.vue +164 -0
- package/demos/pc/app/select-wrapper/no-data-text-composition-api.vue +39 -0
- package/demos/pc/app/select-wrapper/no-data-text.spec.ts +39 -0
- package/demos/pc/app/select-wrapper/no-data-text.vue +48 -0
- package/demos/pc/app/select-wrapper/optimization-composition-api.vue +50 -0
- package/demos/pc/app/select-wrapper/optimization.spec.ts +46 -0
- package/demos/pc/app/select-wrapper/optimization.vue +59 -0
- package/demos/pc/app/select-wrapper/option-group-composition-api.vue +96 -0
- package/demos/pc/app/select-wrapper/option-group.spec.ts +22 -0
- package/demos/pc/app/select-wrapper/option-group.vue +105 -0
- package/demos/pc/app/select-wrapper/popup-style-position-composition-api.vue +31 -0
- package/demos/pc/app/select-wrapper/popup-style-position.spec.ts +16 -0
- package/demos/pc/app/select-wrapper/popup-style-position.vue +40 -0
- package/demos/pc/app/select-wrapper/remote-method-composition-api.vue +283 -0
- package/demos/pc/app/select-wrapper/remote-method.spec.ts +68 -0
- package/demos/pc/app/select-wrapper/remote-method.vue +286 -0
- package/demos/pc/app/select-wrapper/searchable-composition-api.vue +46 -0
- package/demos/pc/app/select-wrapper/searchable.spec.ts +66 -0
- package/demos/pc/app/select-wrapper/searchable.vue +55 -0
- package/demos/pc/app/select-wrapper/show-alloption-composition-api.vue +25 -0
- package/demos/pc/app/select-wrapper/show-alloption.spec.ts +15 -0
- package/demos/pc/app/select-wrapper/show-alloption.vue +34 -0
- package/demos/pc/app/select-wrapper/show-tip-composition-api.vue +19 -0
- package/demos/pc/app/select-wrapper/show-tip.vue +28 -0
- package/demos/pc/app/select-wrapper/size-composition-api.vue +49 -0
- package/demos/pc/app/select-wrapper/size.spec.ts +61 -0
- package/demos/pc/app/select-wrapper/size.vue +57 -0
- package/demos/pc/app/select-wrapper/slot-default-composition-api.vue +86 -0
- package/demos/pc/app/select-wrapper/slot-default.spec.ts +18 -0
- package/demos/pc/app/select-wrapper/slot-default.vue +95 -0
- package/demos/pc/app/select-wrapper/slot-empty-composition-api.vue +35 -0
- package/demos/pc/app/select-wrapper/slot-empty.spec.ts +16 -0
- package/demos/pc/app/select-wrapper/slot-empty.vue +44 -0
- package/demos/pc/app/select-wrapper/slot-header-footer-composition-api.vue +45 -0
- package/demos/pc/app/select-wrapper/slot-header-footer.spec.ts +17 -0
- package/demos/pc/app/select-wrapper/slot-header-footer.vue +55 -0
- package/demos/pc/app/select-wrapper/slot-label-composition-api.vue +77 -0
- package/demos/pc/app/select-wrapper/slot-label.vue +85 -0
- package/demos/pc/app/select-wrapper/slot-prefix-composition-api.vue +31 -0
- package/demos/pc/app/select-wrapper/slot-prefix.spec.ts +18 -0
- package/demos/pc/app/select-wrapper/slot-prefix.vue +39 -0
- package/demos/pc/app/select-wrapper/slot-reference-composition-api.vue +33 -0
- package/demos/pc/app/select-wrapper/slot-reference.spec.ts +16 -0
- package/demos/pc/app/select-wrapper/slot-reference.vue +41 -0
- package/demos/pc/app/select-wrapper/tag-type-composition-api.vue +27 -0
- package/demos/pc/app/select-wrapper/tag-type.spec.ts +13 -0
- package/demos/pc/app/select-wrapper/tag-type.vue +36 -0
- package/demos/pc/app/select-wrapper/webdoc/select-wrapper.cn.md +7 -0
- package/demos/pc/app/select-wrapper/webdoc/select-wrapper.en.md +7 -0
- package/demos/pc/app/select-wrapper/webdoc/select-wrapper.js +721 -0
- package/demos/pc/app/space/space-size.vue +1 -1
- package/demos/pc/app/switch/webdoc/switch.js +12 -0
- package/demos/pc/app/switch/width-composition-api.vue +29 -0
- package/demos/pc/app/switch/width.spec.ts +17 -0
- package/demos/pc/app/switch/width.vue +35 -0
- package/demos/pc/app/tabs/header-only-composition-api.vue +56 -0
- package/demos/pc/app/tabs/header-only.vue +40 -29
- package/demos/pc/app/time-picker/picker-options.spec.ts +3 -4
- package/demos/pc/app/time-picker/step.spec.ts +2 -2
- package/demos/pc/app/transfer/basic-usage.spec.ts +4 -4
- package/demos/pc/app/tree/filter-view.spec.ts +1 -1
- package/demos/pc/app/tree-menu/clearable.spec.ts +1 -5
- package/demos/pc/app/tree-select/collapse-tags.vue +2 -18
- package/demos/pc/app/tree-select/lazy-composition-api.vue +51 -0
- package/demos/pc/app/tree-select/lazy-multiple-composition-api.vue +58 -0
- package/demos/pc/app/tree-select/lazy-multiple.vue +66 -0
- package/demos/pc/app/tree-select/lazy.vue +59 -0
- package/demos/pc/app/tree-select/webdoc/tree-select.js +14 -0
- package/demos/pc/app/user/custom-service.spec.ts +1 -1
- package/demos/pc/menus.js +19 -10
- package/demos/pc/webdoc/architecture.png +0 -0
- package/demos/pc/webdoc/import-components-en.md +4 -2
- package/demos/pc/webdoc/import-components.md +4 -2
- package/demos/pc/webdoc/installation-en.md +5 -3
- package/demos/pc/webdoc/installation.md +5 -3
- package/demos/pc/webdoc/introduce.md +64 -0
- package/demos/pc/webdoc/motion-configuration-en.md +183 -0
- package/demos/pc/webdoc/motion-configuration.md +183 -0
- package/demos/pc/webdoc/theme-en.md +7 -5
- package/demos/pc/webdoc/theme.md +12 -7
- package/demos/saas/menus.js +14 -1
- package/env/.env.saaspages +1 -1
- package/package.json +20 -20
- package/playground/App.vue +270 -84
- package/playground/assets/icon-layout-vertical.svg +4 -0
- package/playground/icons/Github.vue +14 -2
- package/playground/icons/Layout.vue +18 -0
- package/playground/icons/Reverse.vue +115 -0
- package/playground/icons/Set.vue +80 -0
- package/playground/icons/Share.vue +103 -8
- package/playground/icons/Vertical.vue +19 -0
- package/public/static/css/design-common.css +1 -0
- package/src/assets/custom-block.less +2 -2
- package/src/components/anchor.vue +2 -1
- package/src/components/api-docs.vue +2 -2
- package/src/components/async-highlight.vue +6 -0
- package/src/components/header.vue +19 -0
- package/src/views/components-doc/common.vue +20 -3
- package/src/views/overview.vue +1 -1
- package/demos/pc/app/grid-select/filter-composition-api.vue +0 -49
- package/demos/pc/app/grid-select/filter.vue +0 -57
- package/demos/pc/app/grid-select/multiple-composition-api.vue +0 -38
- package/demos/pc/app/grid-select/multiple.vue +0 -45
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<tiny-checkbox v-model="checked" name="tiny-checkbox" disabled>复选框</tiny-checkbox>
|
|
3
|
+
</template>
|
|
4
|
+
|
|
5
|
+
<script>
|
|
6
|
+
import { TinyCheckbox } from '@opentiny/vue'
|
|
7
|
+
|
|
8
|
+
export default {
|
|
9
|
+
components: {
|
|
10
|
+
TinyCheckbox
|
|
11
|
+
},
|
|
12
|
+
data() {
|
|
13
|
+
return {
|
|
14
|
+
checked: true
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
</script>
|
|
@@ -5,17 +5,17 @@ test('垂直布局', async ({ page }) => {
|
|
|
5
5
|
await page.goto('checkbox#vertical-checkbox')
|
|
6
6
|
|
|
7
7
|
const demo = page.locator('#vertical-checkbox')
|
|
8
|
-
const checkedLabelBJ = demo.getByRole('checkbox', { name: '北京' }).filter({ hasText: '北京' })
|
|
8
|
+
const checkedLabelBJ = demo.getByRole('checkbox', { name: '北京' }).filter({ hasText: '北京' }).first()
|
|
9
9
|
|
|
10
10
|
await checkedLabelBJ.click()
|
|
11
11
|
await expect(checkedLabelBJ).toHaveClass(/is-checked/)
|
|
12
|
-
const checkedLabelSH = demo.getByRole('checkbox', { name: '上海' }).filter({ hasText: '上海' })
|
|
12
|
+
const checkedLabelSH = demo.getByRole('checkbox', { name: '上海' }).filter({ hasText: '上海' }).first()
|
|
13
13
|
await checkedLabelSH.click()
|
|
14
14
|
await expect(checkedLabelSH).not.toHaveClass(/is-checked/)
|
|
15
|
-
const checkedLabelGZ = demo.getByRole('checkbox', { name: '广州' }).filter({ hasText: '广州' })
|
|
15
|
+
const checkedLabelGZ = demo.getByRole('checkbox', { name: '广州' }).filter({ hasText: '广州' }).first()
|
|
16
16
|
await checkedLabelGZ.click()
|
|
17
17
|
await expect(checkedLabelGZ).toHaveClass(/is-checked/)
|
|
18
|
-
const checkedLabelSZ = demo.getByRole('checkbox', { name: '深圳' }).filter({ hasText: '深圳' })
|
|
18
|
+
const checkedLabelSZ = demo.getByRole('checkbox', { name: '深圳' }).filter({ hasText: '深圳' }).first()
|
|
19
19
|
await checkedLabelSZ.click()
|
|
20
20
|
await expect(checkedLabelSZ).toHaveClass(/is-checked/)
|
|
21
21
|
const parentWrapper = page.getByLabel('checkbox-group').first()
|
|
@@ -16,6 +16,19 @@ export default {
|
|
|
16
16
|
},
|
|
17
17
|
codeFiles: ['basic-usage.vue']
|
|
18
18
|
},
|
|
19
|
+
// 禁用复选框
|
|
20
|
+
{
|
|
21
|
+
demoId: 'disabled',
|
|
22
|
+
name: {
|
|
23
|
+
'zh-CN': '禁用',
|
|
24
|
+
'en-US': 'Disabled'
|
|
25
|
+
},
|
|
26
|
+
desc: {
|
|
27
|
+
'zh-CN': '<p>通过 <code>disabled</code> 字段设置当前复选框是否为禁用状态。</p>',
|
|
28
|
+
'en-US': '<p>Set whether the current checkbox is disabled through the <code>disabled</code> field.</p>'
|
|
29
|
+
},
|
|
30
|
+
codeFiles: ['checkbox-disabled.vue']
|
|
31
|
+
},
|
|
19
32
|
{
|
|
20
33
|
demoId: 'checkbox-group',
|
|
21
34
|
name: {
|
|
@@ -46,11 +46,11 @@ export default {
|
|
|
46
46
|
{
|
|
47
47
|
demoId: 'enable-alpha',
|
|
48
48
|
name: {
|
|
49
|
-
'zh-CN': '
|
|
49
|
+
'zh-CN': '透明度',
|
|
50
50
|
'en-US': 'Alpha'
|
|
51
51
|
},
|
|
52
52
|
desc: {
|
|
53
|
-
'zh-CN': '<code
|
|
53
|
+
'zh-CN': '<code>透明度</code>选择。',
|
|
54
54
|
'en-US': '<code>Alpha</code>select.'
|
|
55
55
|
},
|
|
56
56
|
codeFiles: ['alpha.vue']
|
|
@@ -10,7 +10,7 @@ test('hex', async ({ page }) => {
|
|
|
10
10
|
page.on('pageerror', (exception) => expect(exception).toBeNull())
|
|
11
11
|
await page.goto('color-select-panel#format')
|
|
12
12
|
await page.getByRole('button', { name: 'Toggle' }).click()
|
|
13
|
-
await page.getByRole('
|
|
13
|
+
await page.getByRole('combobox', { name: '请选择' }).click()
|
|
14
14
|
await page.getByRole('list').getByText('hex').click()
|
|
15
15
|
await page.getByRole('button', { name: '确定' }).click()
|
|
16
16
|
await expect(page.locator('#format')).toContainText('颜色值:#66CCFF')
|
|
@@ -20,7 +20,7 @@ test('hsl 时应该为 hsl(xxx,xxx,xxx)', async ({ page }) => {
|
|
|
20
20
|
page.on('pageerror', (exception) => expect(exception).toBeNull())
|
|
21
21
|
await page.goto('color-select-panel#format')
|
|
22
22
|
await page.getByRole('button', { name: 'Toggle' }).click()
|
|
23
|
-
await page.getByRole('
|
|
23
|
+
await page.getByRole('combobox', { name: '请选择' }).click()
|
|
24
24
|
await page.getByRole('list').getByText('hsl').click()
|
|
25
25
|
})
|
|
26
26
|
|
|
@@ -28,7 +28,7 @@ test('hsv 时候应该为 hsv(xx,xx,xx)', async ({ page }) => {
|
|
|
28
28
|
page.on('pageerror', (exception) => expect(exception).toBeNull())
|
|
29
29
|
await page.goto('color-select-panel#format')
|
|
30
30
|
await page.getByRole('button', { name: 'Toggle' }).click()
|
|
31
|
-
await page.getByRole('
|
|
31
|
+
await page.getByRole('combobox', { name: '请选择' }).click()
|
|
32
32
|
await page.getByRole('list').getByText('hsv').click()
|
|
33
33
|
await page.getByRole('button', { name: '确定' }).click()
|
|
34
34
|
await expect(page.locator('#format')).toContainText('颜色值:hsv(199.99999999999997, 60%, 100%)')
|
|
@@ -5,7 +5,7 @@ test('自定义数据字段', async ({ page }) => {
|
|
|
5
5
|
await page.goto('country#fields')
|
|
6
6
|
|
|
7
7
|
const select = page.locator('.tiny-select')
|
|
8
|
-
const item = page.getByRole('
|
|
8
|
+
const item = page.getByRole('option').filter({ hasText: '中国' })
|
|
9
9
|
|
|
10
10
|
await select.click()
|
|
11
11
|
await item.click()
|
|
@@ -3,7 +3,7 @@ import { test, expect } from '@playwright/test'
|
|
|
3
3
|
test('基础用法', async ({ page }) => {
|
|
4
4
|
page.on('pageerror', (exception) => expect(exception).toBeNull())
|
|
5
5
|
await page.goto('currency#basic-usage')
|
|
6
|
-
await page.getByRole('
|
|
6
|
+
await page.getByRole('combobox', { name: '请选择' }).click()
|
|
7
7
|
const inputBox = page.locator('.tiny-input input').nth(1)
|
|
8
8
|
await expect(inputBox).toHaveAttribute('placeholder', 'VUV')
|
|
9
9
|
})
|
|
@@ -3,9 +3,9 @@ import { test, expect } from '@playwright/test'
|
|
|
3
3
|
test('自定义服务', async ({ page }) => {
|
|
4
4
|
page.on('pageerror', (exception) => expect(exception).toBeNull())
|
|
5
5
|
await page.goto('currency#custom-service')
|
|
6
|
-
await page.locator('#custom-service').getByRole('
|
|
6
|
+
await page.locator('#custom-service').getByRole('combobox').click()
|
|
7
7
|
await page.waitForTimeout(500)
|
|
8
|
-
await page.getByRole('
|
|
9
|
-
const inputBox = page.locator('#custom-service').getByRole('
|
|
8
|
+
await page.getByRole('option').filter({ hasText: 'USD' }).click()
|
|
9
|
+
const inputBox = page.locator('#custom-service').getByRole('combobox').first()
|
|
10
10
|
await expect(inputBox).toHaveValue('USD')
|
|
11
11
|
})
|
|
@@ -59,30 +59,30 @@ export default {
|
|
|
59
59
|
}
|
|
60
60
|
],
|
|
61
61
|
shortcutsMonth: [
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
}
|
|
69
|
-
},
|
|
70
|
-
{
|
|
71
|
-
text: '三个月前',
|
|
72
|
-
onClick(picker) {
|
|
73
|
-
const date = new Date()
|
|
74
|
-
date.setMonth(date.getMonth() - 3)
|
|
75
|
-
picker.$emit('pick', date)
|
|
76
|
-
}
|
|
77
|
-
},
|
|
78
|
-
{
|
|
79
|
-
text: '六个月前',
|
|
80
|
-
onClick(picker) {
|
|
81
|
-
const date = new Date()
|
|
82
|
-
date.setMonth(date.getMonth() - 6)
|
|
83
|
-
picker.$emit('pick', date)
|
|
84
|
-
}
|
|
62
|
+
{
|
|
63
|
+
text: '一个月前',
|
|
64
|
+
onClick(picker) {
|
|
65
|
+
const date = new Date()
|
|
66
|
+
date.setMonth(date.getMonth() - 1)
|
|
67
|
+
picker.$emit('pick', date)
|
|
85
68
|
}
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
text: '三个月前',
|
|
72
|
+
onClick(picker) {
|
|
73
|
+
const date = new Date()
|
|
74
|
+
date.setMonth(date.getMonth() - 3)
|
|
75
|
+
picker.$emit('pick', date)
|
|
76
|
+
}
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
text: '六个月前',
|
|
80
|
+
onClick(picker) {
|
|
81
|
+
const date = new Date()
|
|
82
|
+
date.setMonth(date.getMonth() - 6)
|
|
83
|
+
picker.$emit('pick', date)
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
86
|
],
|
|
87
87
|
shortcutsYear: [
|
|
88
88
|
{
|
|
@@ -7,15 +7,19 @@ test('[DatePanel] 测试范围选择取消面板联动', async ({ page }) => {
|
|
|
7
7
|
await page.locator('label').filter({ hasText: '单示例' }).click()
|
|
8
8
|
|
|
9
9
|
// dateRange
|
|
10
|
-
await page.locator('
|
|
11
|
-
await page.locator('
|
|
12
|
-
await page.
|
|
13
|
-
|
|
10
|
+
await page.locator('#unlink-panels').getByText('10', { exact: true }).first().click()
|
|
11
|
+
await page.locator('#unlink-panels').getByText('19').nth(1).click()
|
|
12
|
+
await expect(page.locator('.value-link')).toHaveText(`[
|
|
13
|
+
"2025-01-10",
|
|
14
|
+
"2025-02-19"
|
|
15
|
+
]`)
|
|
14
16
|
|
|
15
|
-
await page.locator('
|
|
16
|
-
await page.getByText('
|
|
17
|
-
await page.
|
|
18
|
-
|
|
17
|
+
await page.locator('#unlink-panels').getByText('14').nth(2).click()
|
|
18
|
+
await page.locator('#unlink-panels').getByText('19', { exact: true }).nth(3).click()
|
|
19
|
+
await expect(page.locator('.value-unlink')).toHaveText(`[
|
|
20
|
+
"2025-01-14",
|
|
21
|
+
"2025-02-19"
|
|
22
|
+
]`)
|
|
19
23
|
|
|
20
24
|
// monthRange
|
|
21
25
|
await page
|
|
@@ -10,21 +10,21 @@ test('自定义服务数据', async ({ page }) => {
|
|
|
10
10
|
await page
|
|
11
11
|
.locator('div')
|
|
12
12
|
.filter({ hasText: /^公司SZ 技术SZ 海洋网络天闻数媒贝托 SZ鼎桥通信$/ })
|
|
13
|
-
.getByRole('
|
|
13
|
+
.getByRole('combobox')
|
|
14
14
|
.click()
|
|
15
|
-
await page.getByRole('
|
|
15
|
+
await page.getByRole('option').filter({ hasText: 'SZ 技术' }).click()
|
|
16
16
|
await page
|
|
17
17
|
.locator('div')
|
|
18
18
|
.filter({ hasText: /^一级部门测试数据室 XX中国 XX 测试数据部测试数据 XX 管理部$/ })
|
|
19
|
-
.getByRole('
|
|
19
|
+
.getByRole('combobox')
|
|
20
20
|
.click()
|
|
21
|
-
await page.getByRole('
|
|
21
|
+
await page.getByRole('option').filter({ hasText: '测试数据室 XX' }).click()
|
|
22
22
|
await page
|
|
23
23
|
.locator('div')
|
|
24
24
|
.filter({ hasText: /^五级部门测试数据室 XX中国 XX 测试数据部测试数据 XX 管理部$/ })
|
|
25
|
-
.getByRole('
|
|
25
|
+
.getByRole('combobox')
|
|
26
26
|
.click()
|
|
27
|
-
await page.getByRole('
|
|
27
|
+
await page.getByRole('option').filter({ hasText: '测试数据室 XX' }).click()
|
|
28
28
|
await page.waitForTimeout(500)
|
|
29
29
|
await page.getByRole('button', { name: '确定' }).click()
|
|
30
30
|
// await page.waitForTimeout(500)
|
|
@@ -42,6 +42,7 @@ export default {
|
|
|
42
42
|
<li><code>content</code>属性,指定提示的内容,支持传入<code>string</code>,<code>VNode</code> 或<code>VNode 数组</code>。不传入值时,使用当前<code>Dom</code>元素的内容。 </li>
|
|
43
43
|
<li><code>effect</code> 属性,指定提示的效果,支持 <code>light</code> 和 <code>dark</code> ,默认是<code>light</code>亮色主题 </li>
|
|
44
44
|
<li><code>placement</code> 属性,指定提示的位置,默认值为<code>top</code> 。参见<code>tooltip</code> 组件的<code>placement</code> 属性。 </li>
|
|
45
|
+
<li><code>popperClass</code> 属性,设置弹出层的class,该属性在3.28 版本引入 。参见<code>tooltip</code> 组件的<code>popperClass</code> 属性。 </li>
|
|
45
46
|
</ul>
|
|
46
47
|
2、如果参数为 <code>false</code>,表示禁止自动提示。 <br>
|
|
47
48
|
`,
|
|
@@ -53,6 +54,7 @@ export default {
|
|
|
53
54
|
<li><code>content</code> property specifies the content of the prompt, which can be passed to <code>string</code>, <code>VNode</code>, or the <code>VNode array </code>. When no value is passed, the contents of the current <code>Dom</code> element are used. </li>
|
|
54
55
|
<li><code>effect</code> property, specify the effect of the prompt, support <code>light</code> and <code>dark</code>, default is <code>light</code> bright color theme </li>
|
|
55
56
|
<li><code>placement</code> property specifies the placement of the tip. The default value is <code>top</code>. See the <code>placement</code> property of the <code>tooltip</code> component. </li>
|
|
57
|
+
<li><code>popperClass</code> attribute, sets the class of the pop-up layer. See <code>tooltip</code> component's <code>popperClass</code> attribute. </li>
|
|
56
58
|
</ul>
|
|
57
59
|
2. If the parameter is <code>false</code>, the automatic prompt is disabled. <br>
|
|
58
60
|
`
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div>
|
|
3
|
+
<tiny-button @click="openDrawer" type="primary"> 抽屉组件 </tiny-button>
|
|
4
|
+
<tiny-drawer
|
|
5
|
+
title="标题"
|
|
6
|
+
:visible="visible"
|
|
7
|
+
@update:visible="visible = $event"
|
|
8
|
+
@confirm="confirm"
|
|
9
|
+
:close-on-press-escape="true"
|
|
10
|
+
>
|
|
11
|
+
<div>内容区域</div>
|
|
12
|
+
</tiny-drawer>
|
|
13
|
+
</div>
|
|
14
|
+
</template>
|
|
15
|
+
|
|
16
|
+
<script setup>
|
|
17
|
+
import { ref } from 'vue'
|
|
18
|
+
import { TinyDrawer, TinyButton } from '@opentiny/vue'
|
|
19
|
+
|
|
20
|
+
const visible = ref(false)
|
|
21
|
+
|
|
22
|
+
function openDrawer() {
|
|
23
|
+
visible.value = true
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
function confirm() {
|
|
27
|
+
visible.value = false
|
|
28
|
+
}
|
|
29
|
+
</script>
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { test, expect } from '@playwright/test'
|
|
2
|
+
|
|
3
|
+
test('按 Esc 键关闭 Drawer(close-on-press-escape)', async ({ page }) => {
|
|
4
|
+
page.on('pageerror', (exception) => expect(exception).toBeNull())
|
|
5
|
+
|
|
6
|
+
await page.goto('drawer#close-on-press-escape')
|
|
7
|
+
|
|
8
|
+
const drawer = page.locator('.tiny-drawer__main')
|
|
9
|
+
|
|
10
|
+
// 打开 Drawer(用文本更稳定)
|
|
11
|
+
await page.getByText('抽屉组件').click()
|
|
12
|
+
await expect(drawer).toBeVisible()
|
|
13
|
+
|
|
14
|
+
// 按 Esc
|
|
15
|
+
await page.keyboard.press('Escape')
|
|
16
|
+
|
|
17
|
+
// Drawer 关闭
|
|
18
|
+
await expect(drawer).toBeHidden()
|
|
19
|
+
})
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div>
|
|
3
|
+
<tiny-button @click="openDrawer" type="primary"> 抽屉组件 </tiny-button>
|
|
4
|
+
<tiny-drawer
|
|
5
|
+
title="标题"
|
|
6
|
+
:visible="visible"
|
|
7
|
+
@update:visible="visible = $event"
|
|
8
|
+
@confirm="confirm"
|
|
9
|
+
:close-on-press-escape="true"
|
|
10
|
+
>
|
|
11
|
+
<div>内容区域</div>
|
|
12
|
+
</tiny-drawer>
|
|
13
|
+
</div>
|
|
14
|
+
</template>
|
|
15
|
+
|
|
16
|
+
<script>
|
|
17
|
+
import { TinyDrawer, TinyButton } from '@opentiny/vue'
|
|
18
|
+
|
|
19
|
+
export default {
|
|
20
|
+
components: {
|
|
21
|
+
TinyDrawer,
|
|
22
|
+
TinyButton
|
|
23
|
+
},
|
|
24
|
+
data() {
|
|
25
|
+
return {
|
|
26
|
+
visible: false
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
methods: {
|
|
30
|
+
openDrawer() {
|
|
31
|
+
this.visible = true
|
|
32
|
+
},
|
|
33
|
+
confirm() {
|
|
34
|
+
this.visible = false
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
</script>
|
|
@@ -16,6 +16,18 @@ export default {
|
|
|
16
16
|
},
|
|
17
17
|
codeFiles: ['basic-usage.vue']
|
|
18
18
|
},
|
|
19
|
+
{
|
|
20
|
+
demoId: 'close-on-press-escape',
|
|
21
|
+
name: {
|
|
22
|
+
'zh-CN': '按下 ESC 关闭抽屉',
|
|
23
|
+
'en-US': ''
|
|
24
|
+
},
|
|
25
|
+
desc: {
|
|
26
|
+
'zh-CN': '<p>添加 <code>close-on-press-escape</code> 属性可以控制是否可以通过 ESC 关闭抽屉。</p>',
|
|
27
|
+
'en-US': ''
|
|
28
|
+
},
|
|
29
|
+
codeFiles: ['close-on-press-escape.vue']
|
|
30
|
+
},
|
|
19
31
|
{
|
|
20
32
|
demoId: 'use-through-method',
|
|
21
33
|
name: { 'zh-CN': '通过方法调用', 'en-US': 'Use through method' },
|
|
@@ -5,7 +5,7 @@ test('自定义服务', async ({ page }) => {
|
|
|
5
5
|
await page.goto('drop-roles#custom-service')
|
|
6
6
|
|
|
7
7
|
const input = page.locator('.tiny-select input')
|
|
8
|
-
const listItems = page.getByRole('
|
|
8
|
+
const listItems = page.getByRole('option')
|
|
9
9
|
const url = await page.evaluate(() => window.location.href)
|
|
10
10
|
const notify1 = page.locator('.tiny-notify').filter({
|
|
11
11
|
hasText: `切换后的角色是:001,根据角色发送请求的 URL 如下:${url}`
|
|
@@ -4,8 +4,8 @@ test('基本用法', async ({ page }) => {
|
|
|
4
4
|
page.on('pageerror', (exception) => expect(exception).toBeNull())
|
|
5
5
|
await page.goto('drop-times#basic-usage')
|
|
6
6
|
|
|
7
|
-
const droptimes = page.locator('#basic-usage').getByRole('
|
|
8
|
-
const option = page.getByRole('
|
|
7
|
+
const droptimes = page.locator('#basic-usage').getByRole('combobox', { name: '请选择' })
|
|
8
|
+
const option = page.getByRole('option').filter({ hasText: '01:00' })
|
|
9
9
|
|
|
10
10
|
await droptimes.click()
|
|
11
11
|
await droptimes.focus()
|
|
@@ -4,7 +4,7 @@ test('步长与时间区间', async ({ page }) => {
|
|
|
4
4
|
page.on('pageerror', (exception) => expect(exception).toBeNull())
|
|
5
5
|
await page.goto('drop-times#start-end-step')
|
|
6
6
|
|
|
7
|
-
const droptimes = page.locator('#start-end-step').getByRole('
|
|
7
|
+
const droptimes = page.locator('#start-end-step').getByRole('combobox', { name: '请选择' })
|
|
8
8
|
const option1 = page.locator('.tiny-select-dropdown__item').first()
|
|
9
9
|
const option2 = page.locator('.tiny-select-dropdown__item').nth(1)
|
|
10
10
|
const option3 = page.locator('.tiny-select-dropdown__item').last()
|
|
@@ -25,6 +25,19 @@
|
|
|
25
25
|
</tiny-dropdown-menu>
|
|
26
26
|
</template>
|
|
27
27
|
</tiny-dropdown>
|
|
28
|
+
|
|
29
|
+
<p>场景 3:设置右键触发下拉</p>
|
|
30
|
+
<tiny-dropdown trigger="contextmenu">
|
|
31
|
+
<template #dropdown>
|
|
32
|
+
<tiny-dropdown-menu>
|
|
33
|
+
<tiny-dropdown-item :icon="tinyIconPlus">黄金糕</tiny-dropdown-item>
|
|
34
|
+
<tiny-dropdown-item :icon="tinyIconPlusCircle">狮子头</tiny-dropdown-item>
|
|
35
|
+
<tiny-dropdown-item :icon="tinyIconPlusSquare">螺蛳粉</tiny-dropdown-item>
|
|
36
|
+
<tiny-dropdown-item :icon="tinyIconCheckedLinear">双皮奶</tiny-dropdown-item>
|
|
37
|
+
<tiny-dropdown-item :icon="tinyIconCheckedSur">蚵仔煎</tiny-dropdown-item>
|
|
38
|
+
</tiny-dropdown-menu>
|
|
39
|
+
</template>
|
|
40
|
+
</tiny-dropdown>
|
|
28
41
|
</div>
|
|
29
42
|
</template>
|
|
30
43
|
|
|
@@ -9,6 +9,7 @@ test('触发方式', async ({ page }) => {
|
|
|
9
9
|
const dropDownMenu = page.locator('body > .tiny-dropdown-menu')
|
|
10
10
|
const hoverTrigger = dropDown.first()
|
|
11
11
|
const clickTrigger = dropDown.nth(1)
|
|
12
|
+
const contextTrigger = dropDown.nth(2)
|
|
12
13
|
|
|
13
14
|
// hover
|
|
14
15
|
await page.waitForTimeout(2000)
|
|
@@ -20,4 +21,16 @@ test('触发方式', async ({ page }) => {
|
|
|
20
21
|
await expect(dropDownMenu.nth(1)).not.toBeVisible()
|
|
21
22
|
await clickTrigger.click()
|
|
22
23
|
await expect(dropDownMenu.nth(1)).toBeVisible()
|
|
24
|
+
|
|
25
|
+
// contextmenu
|
|
26
|
+
await page.waitForTimeout(2000)
|
|
27
|
+
await contextTrigger.hover()
|
|
28
|
+
await expect(dropDownMenu.nth(2)).not.toBeVisible()
|
|
29
|
+
|
|
30
|
+
// 右键触发
|
|
31
|
+
await contextTrigger.click({
|
|
32
|
+
button: 'right'
|
|
33
|
+
})
|
|
34
|
+
|
|
35
|
+
await expect(dropDownMenu.nth(2)).toBeVisible()
|
|
23
36
|
})
|
|
@@ -25,6 +25,19 @@
|
|
|
25
25
|
</tiny-dropdown-menu>
|
|
26
26
|
</template>
|
|
27
27
|
</tiny-dropdown>
|
|
28
|
+
|
|
29
|
+
<p>场景 3:设置右键触发下拉</p>
|
|
30
|
+
<tiny-dropdown trigger="contextmenu">
|
|
31
|
+
<template #dropdown>
|
|
32
|
+
<tiny-dropdown-menu>
|
|
33
|
+
<tiny-dropdown-item :icon="tinyIconPlus">黄金糕</tiny-dropdown-item>
|
|
34
|
+
<tiny-dropdown-item :icon="tinyIconPlusCircle">狮子头</tiny-dropdown-item>
|
|
35
|
+
<tiny-dropdown-item :icon="tinyIconPlusSquare">螺蛳粉</tiny-dropdown-item>
|
|
36
|
+
<tiny-dropdown-item :icon="tinyIconCheckedLinear">双皮奶</tiny-dropdown-item>
|
|
37
|
+
<tiny-dropdown-item :icon="tinyIconCheckedSur">蚵仔煎</tiny-dropdown-item>
|
|
38
|
+
</tiny-dropdown-menu>
|
|
39
|
+
</template>
|
|
40
|
+
</tiny-dropdown>
|
|
28
41
|
</div>
|
|
29
42
|
</template>
|
|
30
43
|
|
|
@@ -93,9 +93,9 @@ export default {
|
|
|
93
93
|
},
|
|
94
94
|
desc: {
|
|
95
95
|
'zh-CN':
|
|
96
|
-
'<p>通过 <code>trigger</code> 属性设置触发下拉的方式,默认为 <code>hover</code>。可选值为:<code>click</code> / <code>hover</code>
|
|
96
|
+
'<p>通过 <code>trigger</code> 属性设置触发下拉的方式,默认为 <code>hover</code>。可选值为:<code>click</code> / <code>hover</code> / <code>contextmenu</code>(3.28.0 起支持)。</p>\n',
|
|
97
97
|
'en-US':
|
|
98
|
-
'<p>
|
|
98
|
+
'<p>Use the <code>trigger</code> attribute to set how the dropdown is triggered. Default is <code>hover</code>. Optional values: <code>click</code> / <code>hover</code> / <code>contextmenu</code> (supported since 3.28.0).</p>\n'
|
|
99
99
|
},
|
|
100
100
|
codeFiles: ['trigger.vue']
|
|
101
101
|
},
|
|
@@ -108,7 +108,7 @@ export default {
|
|
|
108
108
|
desc: {
|
|
109
109
|
'zh-CN': '<p>通过 <code>visible</code> 属性手动控制下拉菜单显隐,优先级高于trigger。</p>\n',
|
|
110
110
|
'en-US':
|
|
111
|
-
'<p>Manually control the visibility of the dropdown menu through the<code>visible</code>attribute, with priority over trigger.</p>\n'
|
|
111
|
+
'<p>Manually control the visibility of the dropdown menu through the <code>visible</code>attribute, with priority over trigger.</p>\n'
|
|
112
112
|
},
|
|
113
113
|
codeFiles: ['visible.vue']
|
|
114
114
|
},
|
|
@@ -307,7 +307,7 @@ export default {
|
|
|
307
307
|
support: {
|
|
308
308
|
value: true
|
|
309
309
|
},
|
|
310
|
-
description: '
|
|
310
|
+
description: '支持点击、悬停以及右键(contextmenu,3.28.0 起支持)触发方式。',
|
|
311
311
|
cloud: {
|
|
312
312
|
value: true
|
|
313
313
|
},
|
|
@@ -5,10 +5,8 @@ test('SaaS 风格文件列表', async ({ page }) => {
|
|
|
5
5
|
await page.goto('file-upload#upload-file-list-saas')
|
|
6
6
|
|
|
7
7
|
const upload = page.getByRole('button', { name: '文件上传' })
|
|
8
|
-
const lists = page.locator('div').filter({ hasText: /^test2\.doc删除16\.84 MB$/ })
|
|
9
8
|
|
|
10
9
|
await upload.isVisible()
|
|
11
|
-
await expect(lists).toHaveCount(2)
|
|
12
10
|
await page
|
|
13
11
|
.locator('div')
|
|
14
12
|
.filter({ hasText: /^test3\.png删除60K\/200K$/ })
|
|
@@ -25,9 +25,9 @@ test('测试基本表单', async ({ page }) => {
|
|
|
25
25
|
await expect(datePicker).toHaveValue(/15/)
|
|
26
26
|
|
|
27
27
|
// 時間选择器
|
|
28
|
-
const timePicker = demo.getByRole('
|
|
28
|
+
const timePicker = demo.getByRole('combobox').nth(0)
|
|
29
29
|
await timePicker.click()
|
|
30
|
-
await page.getByRole('
|
|
30
|
+
await page.getByRole('option').filter({ hasText: '00:30' }).click()
|
|
31
31
|
await expect(timePicker).toHaveValue('00:30')
|
|
32
32
|
|
|
33
33
|
// 提交按钮
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class="demo-form">
|
|
3
|
+
<tiny-form :model="state" :rules="rules">
|
|
4
|
+
<tiny-form-item label="HTML" prop="value0">
|
|
5
|
+
<tiny-input :maxLength="3" v-model="state.value0"></tiny-input>
|
|
6
|
+
</tiny-form-item>
|
|
7
|
+
<tiny-form-item label="默认" prop="value1">
|
|
8
|
+
<tiny-input v-model="state.value1"></tiny-input>
|
|
9
|
+
</tiny-form-item>
|
|
10
|
+
<tiny-form-item label="自定义" prop="value2">
|
|
11
|
+
<tiny-input v-model="state.value2"></tiny-input>
|
|
12
|
+
</tiny-form-item>
|
|
13
|
+
</tiny-form>
|
|
14
|
+
</div>
|
|
15
|
+
</template>
|
|
16
|
+
|
|
17
|
+
<script setup>
|
|
18
|
+
import { reactive, ref } from 'vue'
|
|
19
|
+
|
|
20
|
+
import { Form as TinyForm, FormItem as TinyFormItem, Input as TinyInput } from '@opentiny/vue'
|
|
21
|
+
|
|
22
|
+
const state = reactive({
|
|
23
|
+
value0: '',
|
|
24
|
+
value1: '',
|
|
25
|
+
value2: ''
|
|
26
|
+
})
|
|
27
|
+
|
|
28
|
+
const rules = ref({
|
|
29
|
+
value1: [{ max: 3 }],
|
|
30
|
+
value2: [{ max: 3, regular: (val) => val.length }]
|
|
31
|
+
})
|
|
32
|
+
</script>
|
|
33
|
+
|
|
34
|
+
<style scoped>
|
|
35
|
+
.demo-form {
|
|
36
|
+
width: 380px;
|
|
37
|
+
}
|
|
38
|
+
</style>
|
|
@@ -121,6 +121,18 @@ export default {
|
|
|
121
121
|
},
|
|
122
122
|
codeFiles: ['custom-validation-rule.vue']
|
|
123
123
|
},
|
|
124
|
+
{
|
|
125
|
+
demoId: 'custom-validation-string-length',
|
|
126
|
+
name: {
|
|
127
|
+
'zh-CN': '自定义字符串长度',
|
|
128
|
+
'en-US': 'Custom String Length'
|
|
129
|
+
},
|
|
130
|
+
desc: {
|
|
131
|
+
'zh-CN': '<p>通过 <code>rules</code> 的 <code>regular</code> 进行自定义字符串长度(3.28.0版本新增)</p>',
|
|
132
|
+
'en-US': '<p>Customize string length using the <code>regular</code> method of <code>rules</code>. </p>'
|
|
133
|
+
},
|
|
134
|
+
codeFiles: ['custom-validation-string-length.vue']
|
|
135
|
+
},
|
|
124
136
|
{
|
|
125
137
|
demoId: 'validation-position',
|
|
126
138
|
name: {
|
|
@@ -4,10 +4,10 @@ test('简化版列设置测试', async ({ page }) => {
|
|
|
4
4
|
page.on('pageerror', (exception) => expect(exception).toBeNull())
|
|
5
5
|
await page.goto('grid-custom#custom-column-simple')
|
|
6
6
|
await page.locator('.tiny-select > div').click()
|
|
7
|
-
await page.
|
|
7
|
+
await page.locator('.tiny-option-label').filter({ hasText: '员工数' }).click()
|
|
8
8
|
const thHeader = page.locator('th.tiny-grid-header__column').nth(3)
|
|
9
9
|
await expect(thHeader).toContainText('地址')
|
|
10
|
-
await page.
|
|
10
|
+
await page.locator('.tiny-option-label').filter({ hasText: '名称' }).click()
|
|
11
11
|
const thHeader2 = page.locator('th.tiny-grid-header__column').nth(1)
|
|
12
12
|
|
|
13
13
|
await expect(thHeader2).toContainText('员工数')
|