@opentiny/vue-docs 3.24.6 → 3.26.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/.stylelintrc.js +2 -2
- package/demos/apis/button.js +15 -0
- package/demos/apis/calendar-view.js +3 -2
- package/demos/apis/chart-demo.js +1 -1
- package/demos/apis/chart-docs.js +1 -1
- package/demos/apis/chart-events.js +1 -1
- package/demos/apis/chart-question.js +1 -1
- package/demos/apis/chart.js +1 -1
- package/demos/apis/form.js +3 -0
- package/demos/apis/grid.js +76 -16
- package/demos/apis/modal.js +1 -1
- package/demos/apis/numeric.js +3 -3
- package/demos/apis/search.js +28 -0
- package/demos/apis/slider-button.js +22 -0
- package/demos/apis/split.js +11 -0
- package/demos/apis/steps.js +3 -3
- package/demos/apis/tabs.js +12 -0
- package/demos/apis/time-line.js +20 -0
- package/demos/mobile-first/app/button/type.vue +1 -1
- package/demos/mobile-first/app/button/webdoc/button.js +2 -2
- package/demos/mobile-first/app/slider-button/basic-usage.vue +5 -5
- package/demos/mobile-first/app/slider-button/webdoc/slider-button.js +1 -1
- package/demos/mobile-first/app/steps/advanced-steps.vue +8 -1
- package/demos/mobile-first/menus.js +16 -9
- package/demos/pc/app/action-menu/basic-usage-composition-api.vue +1 -1
- package/demos/pc/app/action-menu/basic-usage.vue +1 -1
- package/demos/pc/app/action-menu/card-mode-composition-api.vue +1 -1
- package/demos/pc/app/action-menu/card-mode.vue +1 -1
- package/demos/pc/app/action-menu/disabled-composition-api.vue +2 -2
- package/demos/pc/app/action-menu/disabled.vue +2 -2
- package/demos/pc/app/action-menu/events-composition-api.vue +1 -1
- package/demos/pc/app/action-menu/events.vue +1 -1
- package/demos/pc/app/action-menu/icon-composition-api.vue +2 -2
- package/demos/pc/app/action-menu/icon.vue +2 -2
- package/demos/pc/app/action-menu/max-show-num-composition-api.vue +1 -1
- package/demos/pc/app/action-menu/max-show-num.vue +1 -1
- package/demos/pc/app/action-menu/more-text-composition-api.vue +1 -1
- package/demos/pc/app/action-menu/more-text.vue +1 -1
- package/demos/pc/app/action-menu/popper-class-composition-api.vue +1 -1
- package/demos/pc/app/action-menu/popper-class.vue +1 -1
- package/demos/pc/app/action-menu/slot-item-composition-api.vue +1 -1
- package/demos/pc/app/action-menu/slot-item.vue +1 -1
- package/demos/pc/app/action-menu/spacing-composition-api.vue +1 -1
- package/demos/pc/app/action-menu/spacing.vue +1 -1
- package/demos/pc/app/action-menu/text-field-composition-api.vue +1 -1
- package/demos/pc/app/action-menu/text-field.spec.ts +1 -1
- package/demos/pc/app/action-menu/text-field.vue +1 -1
- package/demos/pc/app/amount/custom-service.spec.js +4 -4
- package/demos/pc/app/base-select/slot-reference.spec.ts +1 -1
- package/demos/pc/app/button/icon-composition-api.vue +3 -1
- package/demos/pc/app/button/icon.vue +3 -1
- package/demos/pc/app/button/webdoc/button.js +3 -2
- package/demos/pc/app/calendar-view/calendar-mode-composition-api.vue +7 -1
- package/demos/pc/app/calendar-view/calendar-mode.spec.ts +3 -0
- package/demos/pc/app/calendar-view/calendar-mode.vue +7 -1
- package/demos/pc/app/carousel/webdoc/carousel.js +0 -18
- package/demos/pc/app/color-picker/alpha-composition-api.vue +1 -1
- package/demos/pc/app/color-picker/alpha.spec.ts +2 -2
- package/demos/pc/app/color-picker/alpha.vue +1 -1
- package/demos/pc/app/color-picker/base.spec.ts +2 -2
- package/demos/pc/app/color-picker/default-visible.spec.ts +1 -1
- package/demos/pc/app/color-picker/event-composition-api.vue +2 -2
- package/demos/pc/app/color-picker/event.spec.ts +4 -4
- package/demos/pc/app/color-picker/event.vue +1 -1
- package/demos/pc/app/color-picker/format.spec.ts +6 -6
- package/demos/pc/app/color-picker/history.spec.ts +1 -7
- package/demos/pc/app/color-picker/predefine.spec.ts +3 -10
- package/demos/pc/app/color-picker/size.spec.ts +4 -4
- package/demos/pc/app/color-select-panel/format.spec.ts +2 -8
- package/demos/pc/app/color-select-panel/history.spec.ts +0 -2
- package/demos/pc/app/color-select-panel/predefine.spec.ts +0 -3
- package/demos/pc/app/container/basic-usage-composition-api.vue +10 -10
- package/demos/pc/app/container/basic-usage.vue +10 -10
- package/demos/pc/app/container/custom-with-height-composition-api.vue +8 -8
- package/demos/pc/app/container/custom-with-height.vue +10 -10
- package/demos/pc/app/date-panel/custom-week.spec.ts +2 -2
- package/demos/pc/app/dialog-select/nest-grid-single.spec.ts +40 -0
- package/demos/pc/app/dialog-select/nest-tree-multi.spec.ts +53 -0
- package/demos/pc/app/dialog-select/nest-tree-single.spec.ts +25 -0
- package/demos/pc/app/dialog-select/set-selection.spec.ts +20 -0
- package/demos/pc/app/file-upload/before-upload-limit-composition-api.vue +1 -1
- package/demos/pc/app/file-upload/before-upload-limit.spec.ts +1 -1
- package/demos/pc/app/file-upload/before-upload-limit.vue +1 -1
- package/demos/pc/app/file-upload/custom-trigger-composition-api.vue +1 -1
- package/demos/pc/app/file-upload/custom-trigger.spec.ts +1 -1
- package/demos/pc/app/file-upload/custom-trigger.vue +1 -1
- package/demos/pc/app/file-upload/custom-upload-tip-composition-api.vue +1 -1
- package/demos/pc/app/file-upload/custom-upload-tip.vue +1 -1
- package/demos/pc/app/file-upload/form-validation-composition-api.vue +1 -1
- package/demos/pc/app/file-upload/form-validation.vue +1 -1
- package/demos/pc/app/file-upload/image-size-composition-api.vue +1 -1
- package/demos/pc/app/file-upload/image-size.spec.ts +1 -1
- package/demos/pc/app/file-upload/image-size.vue +1 -1
- package/demos/pc/app/file-upload/multiple-file-composition-api.vue +1 -1
- package/demos/pc/app/file-upload/multiple-file.spec.ts +1 -1
- package/demos/pc/app/file-upload/multiple-file.vue +1 -1
- package/demos/pc/app/file-upload/prevent-delete-file-composition-api.vue +1 -1
- package/demos/pc/app/file-upload/prevent-delete-file.vue +1 -1
- package/demos/pc/app/file-upload/upload-request-composition-api.vue +1 -1
- package/demos/pc/app/file-upload/upload-request.spec.ts +2 -2
- package/demos/pc/app/file-upload/upload-request.vue +1 -1
- package/demos/pc/app/grid/base/basic-usage-composition-api.vue +1 -17
- package/demos/pc/app/grid/custom/column-fixed.spec.js +2 -1
- package/demos/pc/app/grid/custom/page-size.spec.js +1 -1
- package/demos/pc/app/grid/data-source/auto-load.spec.js +0 -1
- package/demos/pc/app/grid/data-source/request-service.spec.js +1 -1
- package/demos/pc/app/grid/data-source/static-data.spec.js +1 -1
- package/demos/pc/app/grid/dynamically-columns/dynamically-columns.spec.js +2 -1
- package/demos/pc/app/grid/edit/scrollbar-not-blur-composition-api.vue +119 -0
- package/demos/pc/app/grid/edit/scrollbar-not-blur.spec.ts +28 -0
- package/demos/pc/app/grid/edit/scrollbar-not-blur.vue +129 -0
- package/demos/pc/app/grid/editor/custom-edit.spec.js +7 -2
- package/demos/pc/app/grid/empty/empty-data-iscenter.spec.js +1 -1
- package/demos/pc/app/grid/event/toolbar-button-click-event.spec.js +1 -1
- package/demos/pc/app/grid/expand/expand-trigger-slot-composition-api.vue +85 -0
- package/demos/pc/app/grid/expand/expand-trigger-slot.spec.ts +11 -0
- package/demos/pc/app/grid/expand/expand-trigger-slot.vue +95 -0
- package/demos/pc/app/grid/expand/set-row-expansion.spec.js +4 -0
- package/demos/pc/app/grid/filter/custom-filter.spec.js +3 -3
- package/demos/pc/app/grid/filter/default-filter-composition-api.vue +6 -0
- package/demos/pc/app/grid/filter/default-filter.vue +6 -0
- package/demos/pc/app/grid/filter/default-relation.spec.js +1 -1
- package/demos/pc/app/grid/filter/server-filter.spec.js +1 -1
- package/demos/pc/app/grid/filter/simple-filter.spec.ts +5 -4
- package/demos/pc/app/grid/fixed/right-fixed-composition-api.vue +4 -4
- package/demos/pc/app/grid/fixed/right-fixed.vue +4 -4
- package/demos/pc/app/grid/footer/footer-summation-empty.spec.js +0 -1
- package/demos/pc/app/grid/large-data/full-data-loading.spec.js +10 -3
- package/demos/pc/app/grid/large-data/virtual-rolling.spec.js +9 -2
- package/demos/pc/app/grid/mouse-keyboard/keyboard-navigation.spec.js +4 -1
- package/demos/pc/app/grid/renderer/inner-renderer-date-composition-api.vue +4 -3
- package/demos/pc/app/grid/renderer/inner-renderer-date.spec.js +2 -2
- package/demos/pc/app/grid/renderer/inner-renderer-date.vue +3 -3
- package/demos/pc/app/grid/renderer/inner-renderer.spec.js +4 -0
- package/demos/pc/app/grid/size/max-min-grid-height.spec.js +2 -2
- package/demos/pc/app/grid/slot/slot-conf-composition-api.vue +141 -0
- package/demos/pc/app/grid/slot/slot-conf.spec.js +12 -0
- package/demos/pc/app/grid/slot/slot-conf.vue +151 -0
- package/demos/pc/app/grid/sort/combinations-sort.spec.js +2 -2
- package/demos/pc/app/grid/webdoc/grid-edit.js +12 -0
- package/demos/pc/app/grid/webdoc/grid-empty.js +1 -1
- package/demos/pc/app/grid/webdoc/grid-expand.js +11 -0
- package/demos/pc/app/grid/webdoc/grid-slot.js +9 -0
- package/demos/pc/app/icon/iconGroups.js +8 -2
- package/demos/pc/app/input/basic-usage.spec.ts +1 -1
- package/demos/pc/app/loading/background.spec.ts +3 -1
- package/demos/pc/app/loading/custom-class.spec.ts +4 -2
- package/demos/pc/app/loading/fullscreen.spec.ts +6 -4
- package/demos/pc/app/loading/loading-tip-text.spec.ts +3 -1
- package/demos/pc/app/loading/size.spec.ts +5 -3
- package/demos/pc/app/locales/custom-service-composition-api.vue +3 -3
- package/demos/pc/app/locales/custom-service.spec.ts +1 -1
- package/demos/pc/app/locales/custom-service.vue +3 -3
- package/demos/pc/app/modal/basic-usage.spec.ts +2 -1
- package/demos/pc/app/modal/message-close.spec.ts +2 -2
- package/demos/pc/app/modal/message-id.spec.ts +2 -2
- package/demos/pc/app/modal/modal-fn-slots.spec.ts +5 -7
- package/demos/pc/app/modal/modal-header.spec.ts +2 -1
- package/demos/pc/app/numeric/input-event-composition-api.vue +26 -0
- package/demos/pc/app/numeric/input-event.spec.ts +15 -0
- package/demos/pc/app/numeric/input-event.vue +34 -0
- package/demos/pc/app/numeric/webdoc/numeric.js +12 -0
- package/demos/pc/app/pager/align-composition-api.vue +10 -13
- package/demos/pc/app/pager/align.spec.ts +8 -3
- package/demos/pc/app/pager/align.vue +11 -5
- package/demos/pc/app/pager/page-size-composition-api.vue +2 -2
- package/demos/pc/app/pager/page-size.spec.ts +1 -1
- package/demos/pc/app/pager/page-size.vue +2 -2
- package/demos/pc/app/pager/pager-in-grid-composition-api.vue +0 -1
- package/demos/pc/app/pager/pager-in-grid.vue +0 -1
- package/demos/pc/app/pager/popper-append-to-body-composition-api.vue +1 -7
- package/demos/pc/app/pager/popper-append-to-body.vue +1 -7
- package/demos/pc/app/pager/popper-class-composition-api.vue +1 -7
- package/demos/pc/app/pager/popper-class.vue +1 -7
- package/demos/pc/app/popeditor/conditions.spec.ts +1 -1
- package/demos/pc/app/popeditor/suggest.spec.ts +1 -1
- package/demos/pc/app/qr-code/icon-composition-api.vue +17 -3
- package/demos/pc/app/qr-code/icon.spec.ts +19 -0
- package/demos/pc/app/qr-code/icon.vue +25 -4
- package/demos/pc/app/qr-code/style-composition-api.vue +2 -9
- package/demos/pc/app/qr-code/style.spec.ts +18 -1
- package/demos/pc/app/qr-code/style.vue +11 -8
- package/demos/pc/app/query-builder/webdoc/query-builder.js +5 -3
- package/demos/pc/app/search/events.spec.ts +1 -1
- package/demos/pc/app/search/events.vue +9 -0
- package/demos/pc/app/search/slot-prefix-suffix.spec.ts +1 -1
- package/demos/pc/app/search/webdoc/search.js +12 -4
- package/demos/pc/app/select/nest-grid-remote.spec.ts +3 -3
- package/demos/pc/app/select/nest-grid.spec.ts +1 -1
- package/demos/pc/app/select/nest-radio-grid-much-data.spec.ts +5 -7
- package/demos/pc/app/tabs/basic-usage.spec.ts +2 -2
- package/demos/pc/app/tabs/header-only.vue +56 -0
- package/demos/pc/app/tabs/size.spec.ts +2 -2
- package/demos/pc/app/tabs/webdoc/tabs.js +12 -0
- package/demos/pc/app/time-line/slot-default-composition-api.vue +81 -0
- package/demos/pc/app/time-line/slot-default.spec.ts +13 -0
- package/demos/pc/app/time-line/slot-default.vue +95 -0
- package/demos/pc/app/time-line/webdoc/time-line.js +12 -0
- package/demos/pc/menus.js +20 -10
- package/demos/pc/webdoc/changelog-en.md +224 -197
- package/demos/pc/webdoc/changelog.md +167 -387
- package/demos/pc/webdoc/faq.md +14 -0
- package/demos/saas/menus.js +2 -14
- package/env/.env +3 -0
- package/package.json +25 -24
- package/playground/App.vue +2 -2
- package/postcss.config.cjs +1 -0
- package/src/App.vue +26 -59
- package/src/components/anchor.vue +5 -1
- package/src/components/demo.vue +18 -7
- package/src/components/design-token.vue +90 -0
- package/src/components/float-settings.vue +4 -23
- package/src/components/mcp-docs.vue +4 -26
- package/src/components/version-tip.vue +1 -1
- package/src/composable/useTinyRemoter.ts +176 -0
- package/src/composable/utils.ts +2 -166
- package/src/const.ts +6 -1
- package/src/i18n/en.json +2 -0
- package/src/i18n/es.json +47 -0
- package/src/i18n/index.js +24 -5
- package/src/i18n/pt.json +47 -0
- package/src/i18n/zh.json +2 -0
- package/src/main.js +17 -13
- package/src/{menus.jsx → menus.js} +0 -1
- package/src/router.js +3 -18
- package/src/tools/appData.js +6 -16
- package/src/tools/storage.js +5 -3
- package/src/tools/useApiMode.js +11 -3
- package/src/tools/useBulletin.jsx +9 -8
- package/src/tools/useStyleSettings.js +8 -0
- package/src/tools/useTemplateMode.js +5 -1
- package/src/tools/utils.js +32 -1
- package/src/views/components-doc/cmp-config.js +13 -1
- package/src/views/components-doc/common.vue +42 -15
- package/src/views/layout/layout.vue +5 -8
- package/src/views/overview.vue +1 -1
- package/tsconfig.node.json +2 -4
- package/src/components/MessageCard.vue +0 -117
- package/src/components/tiny-robot-chat.vue +0 -128
- package/src/composable/DifyModelProvider.ts +0 -65
- package/src/composable/useTinyRobot.ts +0 -167
- package/src/tools/useAllTaskFinish.ts +0 -0
- package/src/views/comprehensive/Demo.vue +0 -212
- package/src/views/comprehensive/index.vue +0 -380
- package/src/views/comprehensive/products.json +0 -98
- package/src/views/comprehensive/types/index.ts +0 -37
- package/src/views/remoter/index.vue +0 -63
- package/src/views/remoter/sound.vue +0 -349
- /package/demos/pc/app/grid/expand/{expand-config.spec.js → expand-config.spec.ts} +0 -0
|
@@ -68,27 +68,27 @@ export default {
|
|
|
68
68
|
}
|
|
69
69
|
|
|
70
70
|
.demo-container .tiny-container :deep(.tiny-container__header) {
|
|
71
|
-
background-color: var(--tv-color-info-bg-light);
|
|
72
|
-
border: 3px solid var(--tv-color-border-container);
|
|
73
|
-
color: var(--tv-color-info-text);
|
|
71
|
+
background-color: var(--tv-color-info-bg-light, #0067d1);
|
|
72
|
+
border: 3px solid var(--tv-color-border-container, #fff);
|
|
73
|
+
color: var(--tv-color-info-text, #fff);
|
|
74
74
|
line-height: 48px;
|
|
75
75
|
}
|
|
76
76
|
|
|
77
77
|
.demo-container .tiny-container :deep(.tiny-container__aside) {
|
|
78
|
-
background-color: var(--tv-color-error-bg-light);
|
|
79
|
-
border: 3px solid var(--tv-color-border-container);
|
|
80
|
-
color: var(--tv-color-error-text);
|
|
78
|
+
background-color: var(--tv-color-error-bg-light, #0067d180);
|
|
79
|
+
border: 3px solid var(--tv-color-border-container, #fff);
|
|
80
|
+
color: var(--tv-color-error-text, #fff);
|
|
81
81
|
}
|
|
82
82
|
|
|
83
83
|
.demo-container .tiny-container :deep(.tiny-container__main) {
|
|
84
|
-
background-color: var(--tv-color-warn-bg-light);
|
|
85
|
-
border: 3px solid var(--tv-color-border-container);
|
|
84
|
+
background-color: var(--tv-color-warn-bg-light, #0067d133);
|
|
85
|
+
border: 3px solid var(--tv-color-border-container, #fff);
|
|
86
86
|
color: var(--tv-color-warn-text);
|
|
87
87
|
}
|
|
88
88
|
|
|
89
89
|
.demo-container .tiny-container :deep(.tiny-container__footer) {
|
|
90
|
-
background-color: var(--tv-color-success-bg-light);
|
|
91
|
-
border: 3px solid var(--tv-color-border-container);
|
|
90
|
+
background-color: var(--tv-color-success-bg-light, #f0f7ff);
|
|
91
|
+
border: 3px solid var(--tv-color-border-container, #fff);
|
|
92
92
|
color: var(--tv-color-success-text);
|
|
93
93
|
}
|
|
94
94
|
.demo-center {
|
|
@@ -40,26 +40,26 @@ const headerHeight = ref(80)
|
|
|
40
40
|
}
|
|
41
41
|
|
|
42
42
|
.demo-container .tiny-container :deep(.tiny-container__header) {
|
|
43
|
-
background-color: var(--tv-color-info-bg-light);
|
|
44
|
-
border: 3px solid var(--tv-color-border-container);
|
|
43
|
+
background-color: var(--tv-color-info-bg-light, #0067d1);
|
|
44
|
+
border: 3px solid var(--tv-color-border-container, #fff);
|
|
45
45
|
color: var(--tv-color-info-text);
|
|
46
46
|
}
|
|
47
47
|
|
|
48
48
|
.demo-container .tiny-container :deep(.tiny-container__aside) {
|
|
49
|
-
background-color: var(--tv-color-error-bg-light);
|
|
50
|
-
border: 3px solid var(--tv-color-border-container);
|
|
49
|
+
background-color: var(--tv-color-error-bg-light, #0067d180);
|
|
50
|
+
border: 3px solid var(--tv-color-border-container, #fff);
|
|
51
51
|
color: var(--tv-color-error-text);
|
|
52
52
|
}
|
|
53
53
|
|
|
54
54
|
.demo-container .tiny-container :deep(.tiny-container__main) {
|
|
55
|
-
background-color: var(--tv-color-warn-bg-light);
|
|
56
|
-
border: 3px solid var(--tv-color-border-container);
|
|
55
|
+
background-color: var(--tv-color-warn-bg-light, #0067d133);
|
|
56
|
+
border: 3px solid var(--tv-color-border-container, #fff);
|
|
57
57
|
color: var(--tv-color-warn-text);
|
|
58
58
|
}
|
|
59
59
|
|
|
60
60
|
.demo-container .tiny-container :deep(.tiny-container__footer) {
|
|
61
|
-
background-color: var(--tv-color-success-bg-light);
|
|
62
|
-
border: 3px solid var(--tv-color-border-container);
|
|
61
|
+
background-color: var(--tv-color-success-bg-light, #f0f7ff);
|
|
62
|
+
border: 3px solid var(--tv-color-border-container, #fff);
|
|
63
63
|
color: var(--tv-color-success-text);
|
|
64
64
|
}
|
|
65
65
|
|
|
@@ -49,26 +49,26 @@ export default {
|
|
|
49
49
|
}
|
|
50
50
|
|
|
51
51
|
.demo-container .tiny-container :deep(.tiny-container__header) {
|
|
52
|
-
background-color: var(--tv-color-info-bg-light);
|
|
53
|
-
border: 3px solid var(--tv-color-border-container);
|
|
54
|
-
color: var(--tv-color-info-text);
|
|
52
|
+
background-color: var(--tv-color-info-bg-light, #0067d1);
|
|
53
|
+
border: 3px solid var(--tv-color-border-container, #fff);
|
|
54
|
+
color: var(--tv-color-info-text, #fff);
|
|
55
55
|
}
|
|
56
56
|
|
|
57
57
|
.demo-container .tiny-container :deep(.tiny-container__aside) {
|
|
58
|
-
background-color: var(--tv-color-error-bg-light);
|
|
59
|
-
border: 3px solid var(--tv-color-border-container);
|
|
60
|
-
color: var(--tv-color-error-text);
|
|
58
|
+
background-color: var(--tv-color-error-bg-light, #0067d180);
|
|
59
|
+
border: 3px solid var(--tv-color-border-container, #fff);
|
|
60
|
+
color: var(--tv-color-error-text, #fff);
|
|
61
61
|
}
|
|
62
62
|
|
|
63
63
|
.demo-container .tiny-container :deep(.tiny-container__main) {
|
|
64
|
-
background-color: var(--tv-color-warn-bg-light);
|
|
65
|
-
border: 3px solid var(--tv-color-border-container);
|
|
64
|
+
background-color: var(--tv-color-warn-bg-light, #0067d133);
|
|
65
|
+
border: 3px solid var(--tv-color-border-container, #fff);
|
|
66
66
|
color: var(--tv-color-warn-text);
|
|
67
67
|
}
|
|
68
68
|
|
|
69
69
|
.demo-container .tiny-container :deep(.tiny-container__footer) {
|
|
70
|
-
background-color: var(--tv-color-success-bg-light);
|
|
71
|
-
border: 3px solid var(--tv-color-border-container);
|
|
70
|
+
background-color: var(--tv-color-success-bg-light, #f0f7ff);
|
|
71
|
+
border: 3px solid var(--tv-color-border-container, #fff);
|
|
72
72
|
color: var(--tv-color-success-text);
|
|
73
73
|
}
|
|
74
74
|
|
|
@@ -24,7 +24,7 @@ test('[DatePanel] 测试周次序号', async ({ page }) => {
|
|
|
24
24
|
await page.locator('div:nth-child(2) > .tiny-date-range-picker__header > button:nth-child(2)').click()
|
|
25
25
|
await expect(page.getByText('12w')).toBeVisible()
|
|
26
26
|
|
|
27
|
-
await page.getByText('13').nth(1).click()
|
|
28
|
-
await page.getByText('17').nth(2).click()
|
|
27
|
+
await page.locator('#custom-weeks').getByText('13').nth(1).click()
|
|
28
|
+
await page.locator('#custom-weeks').getByText('17').nth(2).click()
|
|
29
29
|
await expect(page.locator('.value1')).toHaveText('[ "2025-02-13", "2025-02-17" ]')
|
|
30
30
|
})
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { test, expect } from '@playwright/test'
|
|
2
|
+
|
|
3
|
+
test('dialogSelect 表格单选', async ({ page }) => {
|
|
4
|
+
page.on('pageerror', (exception) => expect(exception).toBeNull())
|
|
5
|
+
await page.goto('dialog-select#nest-grid-single')
|
|
6
|
+
|
|
7
|
+
await page.locator('#nest-grid-single').getByRole('button', { name: '打开窗口' }).click()
|
|
8
|
+
|
|
9
|
+
await page.locator('.tiny-grid-body__row').first().waitFor()
|
|
10
|
+
let rows
|
|
11
|
+
rows = await page.locator('.tiny-grid-body__row').all()
|
|
12
|
+
for (const row of rows) {
|
|
13
|
+
const checked = await row.locator('input[type="radio"]').isChecked()
|
|
14
|
+
expect(checked).toBe(false)
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
await page.getByRole('row', { name: 'GFD 科技有限公司 福建 福州' }).locator('path').nth(1).click()
|
|
18
|
+
|
|
19
|
+
rows = await page.locator('.tiny-grid-body__row').all()
|
|
20
|
+
for (let i = 0; i < rows.length; i++) {
|
|
21
|
+
const checked = await rows[i].locator('input[type="radio"]').first().isChecked()
|
|
22
|
+
if (i === 0) {
|
|
23
|
+
expect(checked).toBe(true)
|
|
24
|
+
} else {
|
|
25
|
+
expect(checked).toBe(false)
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
await page.getByRole('row', { name: 'WWW 科技有限公司 广东 深圳' }).locator('path').nth(1).click()
|
|
30
|
+
|
|
31
|
+
rows = await page.locator('.tiny-grid-body__row').all()
|
|
32
|
+
for (let i = 0; i < rows.length; i++) {
|
|
33
|
+
const checked = await rows[i].locator('input[type="radio"]').first().isChecked()
|
|
34
|
+
if (i === 1) {
|
|
35
|
+
expect(checked).toBe(true)
|
|
36
|
+
} else {
|
|
37
|
+
expect(checked).toBe(false)
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
})
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { test, expect } from '@playwright/test'
|
|
2
|
+
|
|
3
|
+
test('dialogSelect 树多选', async ({ page }) => {
|
|
4
|
+
page.on('pageerror', (exception) => expect(exception).toBeNull())
|
|
5
|
+
await page.goto('dialog-select#nest-tree-multi')
|
|
6
|
+
await page.locator('#nest-tree-multi').getByRole('button', { name: '打开窗口', exact: true }).click()
|
|
7
|
+
|
|
8
|
+
const nodeContent = await page.locator('.tiny-tree-node__content-left label').nth(1)
|
|
9
|
+
|
|
10
|
+
const iconNode = await nodeContent.getAttribute('class')
|
|
11
|
+
|
|
12
|
+
expect(iconNode?.includes('tiny-radio')).toBe(false)
|
|
13
|
+
expect(iconNode?.includes('tiny-checkbox')).toBe(true)
|
|
14
|
+
|
|
15
|
+
let isChecked
|
|
16
|
+
|
|
17
|
+
isChecked = await page
|
|
18
|
+
.getByRole('treeitem', { name: '三级 9' })
|
|
19
|
+
.locator('.tiny-checkbox input[type="checkbox"]')
|
|
20
|
+
.isChecked()
|
|
21
|
+
expect(isChecked).toBeFalsy()
|
|
22
|
+
|
|
23
|
+
let current
|
|
24
|
+
current = await page.getByRole('treeitem', { name: '三级 9' }).locator('path').nth(1)
|
|
25
|
+
await current.click()
|
|
26
|
+
|
|
27
|
+
isChecked = await page
|
|
28
|
+
.getByRole('treeitem', { name: '三级 9' })
|
|
29
|
+
.locator('.tiny-checkbox input[type="checkbox"]')
|
|
30
|
+
.isChecked()
|
|
31
|
+
expect(isChecked).toBeTruthy()
|
|
32
|
+
|
|
33
|
+
await page
|
|
34
|
+
.locator('div')
|
|
35
|
+
.filter({ hasText: /^一级 1二级 4三级 8三级 9暂无数据$/ })
|
|
36
|
+
.getByRole('img')
|
|
37
|
+
.nth(3)
|
|
38
|
+
.click()
|
|
39
|
+
|
|
40
|
+
isChecked = await page
|
|
41
|
+
.getByRole('treeitem', { name: '三级 9' })
|
|
42
|
+
.locator('.tiny-checkbox input[type="checkbox"]')
|
|
43
|
+
.isChecked()
|
|
44
|
+
expect(isChecked).toBeFalsy()
|
|
45
|
+
|
|
46
|
+
await page.getByRole('treeitem', { name: '三级 9' }).locator('path').nth(1).click()
|
|
47
|
+
|
|
48
|
+
isChecked = await page
|
|
49
|
+
.getByRole('treeitem', { name: '三级 9' })
|
|
50
|
+
.locator('.tiny-checkbox input[type="checkbox"]')
|
|
51
|
+
.isChecked()
|
|
52
|
+
expect(isChecked).toBeTruthy()
|
|
53
|
+
})
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { test, expect } from '@playwright/test'
|
|
2
|
+
|
|
3
|
+
test('dialogSelect 树单选', async ({ page }) => {
|
|
4
|
+
page.on('pageerror', (exception) => expect(exception).toBeNull())
|
|
5
|
+
await page.goto('dialog-select#nest-tree-single')
|
|
6
|
+
await page.locator('#nest-tree-single').getByRole('button', { name: '打开窗口' }).click()
|
|
7
|
+
|
|
8
|
+
const nodeContent = await page.locator('.tiny-tree-node__content-left label').nth(1)
|
|
9
|
+
|
|
10
|
+
const iconNode = await nodeContent.getAttribute('class')
|
|
11
|
+
|
|
12
|
+
expect(iconNode?.includes('tiny-radio')).toBe(true)
|
|
13
|
+
expect(iconNode?.includes('tiny-checkbox')).toBe(false)
|
|
14
|
+
|
|
15
|
+
let current
|
|
16
|
+
current = await page.getByText('201一级')
|
|
17
|
+
await current.click()
|
|
18
|
+
expect(await current.locator('input[type="radio"]').isChecked()).toBe(true)
|
|
19
|
+
|
|
20
|
+
current = await page.getByRole('treeitem', { name: '二级 6' }).locator('label')
|
|
21
|
+
await current.click()
|
|
22
|
+
expect(await current.locator('input[type="radio"]').isChecked()).toBe(true)
|
|
23
|
+
current = await page.getByText('201一级')
|
|
24
|
+
expect(await current.locator('input[type="radio"]').isChecked()).toBe(false)
|
|
25
|
+
})
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { test, expect } from '@playwright/test'
|
|
2
|
+
|
|
3
|
+
test('dialogSelect 设置多选状态', async ({ page }) => {
|
|
4
|
+
page.on('pageerror', (exception) => expect(exception).toBeNull())
|
|
5
|
+
await page.goto('dialog-select#set-selection')
|
|
6
|
+
await page.locator('#set-selection').getByRole('button', { name: '打开窗口' }).click()
|
|
7
|
+
await page.getByRole('button', { name: 'Close' }).click()
|
|
8
|
+
await page.getByRole('button', { name: '切换第二行选中状态' }).click()
|
|
9
|
+
await page.locator('#set-selection').getByRole('button', { name: '打开窗口' }).click()
|
|
10
|
+
|
|
11
|
+
const trs = await page.locator('.tiny-grid table tbody tr').all()
|
|
12
|
+
for (let i = 0; i < trs.length; i++) {
|
|
13
|
+
const classes = await trs[i].getAttribute('class')
|
|
14
|
+
if (i === 1) {
|
|
15
|
+
expect(classes?.includes('row__selected')).toBeTruthy()
|
|
16
|
+
} else {
|
|
17
|
+
expect(classes?.includes('row__selected')).toBeFalsy()
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
})
|
|
@@ -9,7 +9,7 @@ test('定义上传前限制', async ({ page }) => {
|
|
|
9
9
|
page.on('pageerror', (exception) => expect(exception).toBeNull())
|
|
10
10
|
await page.goto('file-upload#before-upload-limit')
|
|
11
11
|
|
|
12
|
-
const upload = page.getByRole('button', { name: '
|
|
12
|
+
const upload = page.getByRole('button', { name: '点击上传' })
|
|
13
13
|
const modal = page.locator('.tiny-modal').nth(1)
|
|
14
14
|
const modalCancel = page.getByRole('button', { name: '取消' })
|
|
15
15
|
const lists = page.locator('.tiny-upload-list__item')
|
|
@@ -9,7 +9,7 @@ test('获取图片的原始尺寸', async ({ page }) => {
|
|
|
9
9
|
page.on('pageerror', (exception) => expect(exception).toBeNull())
|
|
10
10
|
await page.goto('file-upload#image-size')
|
|
11
11
|
|
|
12
|
-
const upload = page.getByRole('button', { name: '
|
|
12
|
+
const upload = page.getByRole('button', { name: '点击上传' })
|
|
13
13
|
const [fileChooser] = await Promise.all([page.waitForEvent('filechooser'), upload.click()])
|
|
14
14
|
const modal = page.locator('.tiny-modal')
|
|
15
15
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<tiny-file-upload accept="image/*" ref="upload" :action="action" :file-list="fileList" :before-upload="beforeUpload">
|
|
3
3
|
<template #trigger>
|
|
4
|
-
<tiny-button
|
|
4
|
+
<tiny-button>点击上传</tiny-button>
|
|
5
5
|
</template>
|
|
6
6
|
<template #tip>
|
|
7
7
|
<div class="tiny-upload__tip">只允许上传 image 类型文件</div>
|
|
@@ -9,7 +9,7 @@ test('文件多选', async ({ page }) => {
|
|
|
9
9
|
page.on('pageerror', (exception) => expect(exception).toBeNull())
|
|
10
10
|
await page.goto('file-upload#multiple-file')
|
|
11
11
|
|
|
12
|
-
const upload = page.getByRole('button', { name: '
|
|
12
|
+
const upload = page.getByRole('button', { name: '点击上传' })
|
|
13
13
|
const lists = page.locator('.tiny-upload-list__item')
|
|
14
14
|
const [fileChooser] = await Promise.all([page.waitForEvent('filechooser'), upload.click()])
|
|
15
15
|
const input = page.locator('.tiny-upload__input')
|
|
@@ -12,7 +12,7 @@ test.describe('设置上传请求', () => {
|
|
|
12
12
|
page.on('pageerror', (exception) => expect(exception).toBeNull())
|
|
13
13
|
await page.goto('file-upload#upload-request')
|
|
14
14
|
|
|
15
|
-
const upload = page.getByRole('button', { name: '
|
|
15
|
+
const upload = page.getByRole('button', { name: '点击上传' })
|
|
16
16
|
const [fileChooser] = await Promise.all([page.waitForEvent('filechooser'), upload.click()])
|
|
17
17
|
await fileChooser.setFiles(path1)
|
|
18
18
|
page.on('requestfailed', (request) => {
|
|
@@ -25,7 +25,7 @@ test.describe('设置上传请求', () => {
|
|
|
25
25
|
page.on('pageerror', (exception) => expect(exception).toBeNull())
|
|
26
26
|
await page.goto('file-upload#upload-request')
|
|
27
27
|
|
|
28
|
-
const upload = page.getByRole('button', { name: '
|
|
28
|
+
const upload = page.getByRole('button', { name: '点击上传' })
|
|
29
29
|
const [fileChooser] = await Promise.all([page.waitForEvent('filechooser'), upload.click()])
|
|
30
30
|
await fileChooser.setFiles(path1)
|
|
31
31
|
page.on('requestfailed', (request) => {
|
|
@@ -1,17 +1,6 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div>
|
|
3
|
-
<tiny-grid
|
|
4
|
-
:data="tableData"
|
|
5
|
-
:edit-config="{ trigger: 'click', mode: 'cell', showStatus: true }"
|
|
6
|
-
height="420px"
|
|
7
|
-
:tiny_mcp_config="{
|
|
8
|
-
server,
|
|
9
|
-
business: {
|
|
10
|
-
id: 'company-information',
|
|
11
|
-
description: '公司人员信息表'
|
|
12
|
-
}
|
|
13
|
-
}"
|
|
14
|
-
>
|
|
3
|
+
<tiny-grid :data="tableData" :edit-config="{ trigger: 'click', mode: 'cell', showStatus: true }" height="420px">
|
|
15
4
|
<tiny-grid-column type="index" width="60"></tiny-grid-column>
|
|
16
5
|
<tiny-grid-column type="selection" width="60"></tiny-grid-column>
|
|
17
6
|
<tiny-grid-column field="company" title="公司名称"></tiny-grid-column>
|
|
@@ -25,7 +14,6 @@
|
|
|
25
14
|
<script setup>
|
|
26
15
|
import { ref } from 'vue'
|
|
27
16
|
import { TinyGrid, TinyGridColumn } from '@opentiny/vue'
|
|
28
|
-
import { useNextServer } from '@opentiny/next-vue'
|
|
29
17
|
|
|
30
18
|
// 初始化表格数据
|
|
31
19
|
const _table = [
|
|
@@ -48,8 +36,4 @@ const _table = [
|
|
|
48
36
|
]
|
|
49
37
|
|
|
50
38
|
const tableData = ref(_table)
|
|
51
|
-
|
|
52
|
-
const { server } = useNextServer({
|
|
53
|
-
serverInfo: { name: 'company-information', version: '1.0.0' }
|
|
54
|
-
})
|
|
55
39
|
</script>
|
|
@@ -3,10 +3,11 @@ import { test, expect } from '@playwright/test'
|
|
|
3
3
|
test('列冻结', async ({ page }) => {
|
|
4
4
|
page.on('pageerror', (exception) => expect(exception).toBeNull())
|
|
5
5
|
const custom = page.locator('.tiny-grid-custom')
|
|
6
|
+
const demo = page.locator('#custom-column-fixed')
|
|
6
7
|
await page.goto('grid-custom#custom-column-fixed')
|
|
7
8
|
await page.locator('.tiny-grid-custom__setting-btn').click()
|
|
8
9
|
await custom.getByRole('row', { name: '员工数 ' }).getByTitle('未冻结').getByRole('img').click()
|
|
9
10
|
await custom.getByRole('row', { name: '员工数' }).getByTitle('左冻结').getByRole('img').click()
|
|
10
11
|
await page.getByRole('button', { name: '确定' }).click()
|
|
11
|
-
await expect(
|
|
12
|
+
await expect(demo.locator('.tiny-grid-header__row th').nth(3)).toHaveText(/员工数/)
|
|
12
13
|
})
|
|
@@ -9,5 +9,5 @@ test('分页条数', async ({ page }) => {
|
|
|
9
9
|
await page.getByText('其他设置', { exact: true }).click()
|
|
10
10
|
await page.locator('label').filter({ hasText: '5' }).locator('path').nth(1).click()
|
|
11
11
|
await page.getByRole('button', { name: '确定' }).click()
|
|
12
|
-
await expect(demo.locator('.tiny-grid-body__row')).toHaveCount(5)
|
|
12
|
+
await expect(demo.locator('.tiny-grid-body__row:visible')).toHaveCount(5)
|
|
13
13
|
})
|
|
@@ -4,7 +4,6 @@ test('自动加载数据', async ({ page }) => {
|
|
|
4
4
|
page.on('pageerror', (exception) => expect(exception).toBeNull())
|
|
5
5
|
await page.goto('grid-data-source#data-source-auto-load')
|
|
6
6
|
// 判断 auto-load 为 false 时不加载数据
|
|
7
|
-
await page.getByRole('paragraph').nth(1).click()
|
|
8
7
|
const demo = page.locator('#data-source-auto-load')
|
|
9
8
|
await expect(demo.getByText('暂无数据')).toHaveText('暂无数据')
|
|
10
9
|
})
|
|
@@ -14,5 +14,5 @@ test('绑定静态数据', async ({ page }) => {
|
|
|
14
14
|
|
|
15
15
|
// 改变 data 数据引用地址
|
|
16
16
|
await page.getByRole('button', { name: '改变 tableData 引用地址' }).click()
|
|
17
|
-
await expect(page.locator('.tiny-grid-body__row')).toHaveCount(2)
|
|
17
|
+
await expect(page.locator('.tiny-grid-body__row:visible')).toHaveCount(2)
|
|
18
18
|
})
|
|
@@ -3,7 +3,8 @@ import { test, expect } from '@playwright/test'
|
|
|
3
3
|
test('根据日期动态生成列', async ({ page }) => {
|
|
4
4
|
page.on('pageerror', (exception) => expect(exception).toBeNull())
|
|
5
5
|
await page.goto('grid-dynamically-columns#dynamically-columns-dynamically-columns')
|
|
6
|
-
|
|
6
|
+
const demo = page.locator('#dynamically-columns-dynamically-columns')
|
|
7
|
+
await demo.locator('.tiny-picker.tiny-date-container').click()
|
|
7
8
|
await page.getByText('12 月').first().click()
|
|
8
9
|
await page.getByText('2 月').nth(2).click()
|
|
9
10
|
await expect(page.getByRole('cell', { name: '12' }).first()).toBeVisible()
|