@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
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div>
|
|
3
|
+
<tiny-grid
|
|
4
|
+
ref="grid"
|
|
5
|
+
:data="tableData"
|
|
6
|
+
seq-serial
|
|
7
|
+
:edit-config="{ trigger: 'click', mode: 'row', showStatus: true, blurOutside }"
|
|
8
|
+
>
|
|
9
|
+
<tiny-grid-column type="index" width="60"></tiny-grid-column>
|
|
10
|
+
<tiny-grid-column
|
|
11
|
+
field="name"
|
|
12
|
+
title="名称"
|
|
13
|
+
width="500"
|
|
14
|
+
:show-icon="false"
|
|
15
|
+
:editor="{ component: 'input', autoselect: true }"
|
|
16
|
+
></tiny-grid-column>
|
|
17
|
+
<tiny-grid-column
|
|
18
|
+
field="area"
|
|
19
|
+
title="区域"
|
|
20
|
+
width="500"
|
|
21
|
+
:show-icon="false"
|
|
22
|
+
:editor="{ component: 'select', options }"
|
|
23
|
+
></tiny-grid-column>
|
|
24
|
+
<tiny-grid-column
|
|
25
|
+
field="address"
|
|
26
|
+
title="地址"
|
|
27
|
+
width="500"
|
|
28
|
+
:show-icon="false"
|
|
29
|
+
:editor="{ component: 'input', autoselect: true }"
|
|
30
|
+
></tiny-grid-column>
|
|
31
|
+
<tiny-grid-column
|
|
32
|
+
field="introduction"
|
|
33
|
+
title="公司简介"
|
|
34
|
+
width="500"
|
|
35
|
+
:show-icon="false"
|
|
36
|
+
:editor="{ component: 'input', autoselect: true }"
|
|
37
|
+
show-overflow="ellipsis"
|
|
38
|
+
></tiny-grid-column>
|
|
39
|
+
</tiny-grid>
|
|
40
|
+
</div>
|
|
41
|
+
</template>
|
|
42
|
+
|
|
43
|
+
<script setup>
|
|
44
|
+
import { TinyGrid, TinyGridColumn } from '@opentiny/vue'
|
|
45
|
+
import { ref } from 'vue'
|
|
46
|
+
|
|
47
|
+
const options = ref([
|
|
48
|
+
{ label: '华北区', value: '华北区' },
|
|
49
|
+
{ label: '华东区', value: '华东区' },
|
|
50
|
+
{ label: '华南区', value: '华南区' }
|
|
51
|
+
])
|
|
52
|
+
const tableData = ref([
|
|
53
|
+
{
|
|
54
|
+
id: '1',
|
|
55
|
+
name: 'GFD 科技 YX 公司',
|
|
56
|
+
area: '华东区',
|
|
57
|
+
address: '福州',
|
|
58
|
+
introduction: '公司技术和研发实力雄厚,是国家 863 项目的参与者,并被政府认定为“高新技术企业”。'
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
id: '2',
|
|
62
|
+
name: 'WWWW 科技 YX 公司',
|
|
63
|
+
area: '华南区',
|
|
64
|
+
address: '深圳福田区',
|
|
65
|
+
introduction: '公司技术和研发实力雄厚,是国家 863 项目的参与者,并被政府认定为“高新技术企业”。'
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
id: '3',
|
|
69
|
+
name: 'RFV 有限责任公司',
|
|
70
|
+
area: '华南区',
|
|
71
|
+
address: '中山市',
|
|
72
|
+
introduction: '公司技术和研发实力雄厚,是国家 863 项目的参与者,并被政府认定为“高新技术企业”。'
|
|
73
|
+
}
|
|
74
|
+
])
|
|
75
|
+
|
|
76
|
+
function blurOutside({ cell, event, $table }) {
|
|
77
|
+
const { getEventTargetNode, $el } = $table
|
|
78
|
+
const isClickRow = getEventTargetNode(event, $el, 'tiny-grid-body__row').flag
|
|
79
|
+
return isClickRow || isScrollBar(event, $el)
|
|
80
|
+
}
|
|
81
|
+
function isScrollBar(event, tableElm) {
|
|
82
|
+
const element = event.target
|
|
83
|
+
|
|
84
|
+
// 判断是否表格body
|
|
85
|
+
if (element !== tableElm.querySelector('.tiny-grid__body-wrapper')) {
|
|
86
|
+
return false
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
const rect = element.getBoundingClientRect()
|
|
90
|
+
const clickX = event.clientX
|
|
91
|
+
const clickY = event.clientY
|
|
92
|
+
// 检查垂直滚动条
|
|
93
|
+
if (element.scrollHeight > element.clientHeight) {
|
|
94
|
+
const scrollbarWidth = element.offsetWidth - element.clientWidth
|
|
95
|
+
if (clickX >= rect.right - scrollbarWidth && clickX <= rect.right) {
|
|
96
|
+
return true // 点击了垂直滚动条
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
// 检查水平滚动条
|
|
101
|
+
if (element.scrollWidth > element.clientWidth) {
|
|
102
|
+
const scrollbarHeight = element.offsetHeight - element.clientHeight
|
|
103
|
+
if (clickY >= rect.bottom - scrollbarHeight && clickY <= rect.bottom) {
|
|
104
|
+
return true // 点击了水平滚动条
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
return false
|
|
109
|
+
}
|
|
110
|
+
</script>
|
|
111
|
+
|
|
112
|
+
<style scoped>
|
|
113
|
+
.title {
|
|
114
|
+
font-size: 16px;
|
|
115
|
+
padding: 15px;
|
|
116
|
+
font-weight: bolder;
|
|
117
|
+
color: var(--tv-color-text, #191919);
|
|
118
|
+
}
|
|
119
|
+
</style>
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { test, expect } from '@playwright/test'
|
|
2
|
+
|
|
3
|
+
test('行编辑滚动不失焦', async ({ page }) => {
|
|
4
|
+
page.on('pageerror', (exception) => expect(exception).toBeNull())
|
|
5
|
+
|
|
6
|
+
await page.goto('grid-edit#scrollbar-not-blur')
|
|
7
|
+
page.setViewportSize({
|
|
8
|
+
width: 1400,
|
|
9
|
+
height: 1200
|
|
10
|
+
})
|
|
11
|
+
|
|
12
|
+
const demo = page.locator('#scrollbar-not-blur')
|
|
13
|
+
// 单元格编辑
|
|
14
|
+
await demo.getByRole('cell', { name: 'GFD 科技 YX 公司' }).first().click()
|
|
15
|
+
await expect(demo.locator('.tiny-grid-default-input').first()).toBeVisible()
|
|
16
|
+
|
|
17
|
+
// 点击滚动条
|
|
18
|
+
const bodyWrapper = demo.locator('.tiny-grid__body-wrapper')
|
|
19
|
+
const { x, y, height } = await bodyWrapper.boundingBox()
|
|
20
|
+
await page.mouse.move(x + 10, y + height - 3)
|
|
21
|
+
await page.waitForTimeout(200)
|
|
22
|
+
await page.mouse.down()
|
|
23
|
+
await page.waitForTimeout(200)
|
|
24
|
+
await page.mouse.move(x + 200, y + height - 3)
|
|
25
|
+
await page.waitForTimeout(200)
|
|
26
|
+
await page.mouse.up()
|
|
27
|
+
await expect(demo.locator('.tiny-grid-default-input').first()).toBeVisible()
|
|
28
|
+
})
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div>
|
|
3
|
+
<tiny-grid
|
|
4
|
+
ref="grid"
|
|
5
|
+
:data="tableData"
|
|
6
|
+
seq-serial
|
|
7
|
+
:edit-config="{ trigger: 'click', mode: 'row', showStatus: true, blurOutside }"
|
|
8
|
+
>
|
|
9
|
+
<tiny-grid-column type="index" width="60"></tiny-grid-column>
|
|
10
|
+
<tiny-grid-column
|
|
11
|
+
field="name"
|
|
12
|
+
title="名称"
|
|
13
|
+
width="500"
|
|
14
|
+
:show-icon="false"
|
|
15
|
+
:editor="{ component: 'input', autoselect: true }"
|
|
16
|
+
></tiny-grid-column>
|
|
17
|
+
<tiny-grid-column
|
|
18
|
+
field="area"
|
|
19
|
+
title="区域"
|
|
20
|
+
width="500"
|
|
21
|
+
:show-icon="false"
|
|
22
|
+
:editor="{ component: 'select', options }"
|
|
23
|
+
></tiny-grid-column>
|
|
24
|
+
<tiny-grid-column
|
|
25
|
+
field="address"
|
|
26
|
+
title="地址"
|
|
27
|
+
width="500"
|
|
28
|
+
:show-icon="false"
|
|
29
|
+
:editor="{ component: 'input', autoselect: true }"
|
|
30
|
+
></tiny-grid-column>
|
|
31
|
+
<tiny-grid-column
|
|
32
|
+
field="introduction"
|
|
33
|
+
title="公司简介"
|
|
34
|
+
width="500"
|
|
35
|
+
:show-icon="false"
|
|
36
|
+
:editor="{ component: 'input', autoselect: true }"
|
|
37
|
+
show-overflow="ellipsis"
|
|
38
|
+
></tiny-grid-column>
|
|
39
|
+
</tiny-grid>
|
|
40
|
+
</div>
|
|
41
|
+
</template>
|
|
42
|
+
|
|
43
|
+
<script>
|
|
44
|
+
import { TinyGrid, TinyGridColumn } from '@opentiny/vue'
|
|
45
|
+
|
|
46
|
+
export default {
|
|
47
|
+
components: {
|
|
48
|
+
TinyGrid,
|
|
49
|
+
TinyGridColumn
|
|
50
|
+
},
|
|
51
|
+
data() {
|
|
52
|
+
return {
|
|
53
|
+
options: [
|
|
54
|
+
{ label: '华北区', value: '华北区' },
|
|
55
|
+
{ label: '华东区', value: '华东区' },
|
|
56
|
+
{ label: '华南区', value: '华南区' }
|
|
57
|
+
],
|
|
58
|
+
tableData: [
|
|
59
|
+
{
|
|
60
|
+
id: '1',
|
|
61
|
+
name: 'GFD 科技 YX 公司',
|
|
62
|
+
area: '华东区',
|
|
63
|
+
address: '福州',
|
|
64
|
+
introduction: '公司技术和研发实力雄厚,是国家 863 项目的参与者,并被政府认定为“高新技术企业”。'
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
id: '2',
|
|
68
|
+
name: 'WWWW 科技 YX 公司',
|
|
69
|
+
area: '华南区',
|
|
70
|
+
address: '深圳福田区',
|
|
71
|
+
introduction: '公司技术和研发实力雄厚,是国家 863 项目的参与者,并被政府认定为“高新技术企业”。'
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
id: '3',
|
|
75
|
+
name: 'RFV 有限责任公司',
|
|
76
|
+
area: '华南区',
|
|
77
|
+
address: '中山市',
|
|
78
|
+
introduction: '公司技术和研发实力雄厚,是国家 863 项目的参与者,并被政府认定为“高新技术企业”。'
|
|
79
|
+
}
|
|
80
|
+
]
|
|
81
|
+
}
|
|
82
|
+
},
|
|
83
|
+
methods: {
|
|
84
|
+
blurOutside({ cell, event, $table }) {
|
|
85
|
+
const { getEventTargetNode, $el } = $table
|
|
86
|
+
const isClickRow = getEventTargetNode(event, $el, 'tiny-grid-body__row').flag
|
|
87
|
+
return isClickRow || this.isScrollBar(event, $el)
|
|
88
|
+
},
|
|
89
|
+
isScrollBar(event, tableElm) {
|
|
90
|
+
const element = event.target
|
|
91
|
+
|
|
92
|
+
// 判断是否表格body
|
|
93
|
+
if (element !== tableElm.querySelector('.tiny-grid__body-wrapper')) {
|
|
94
|
+
return false
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
const rect = element.getBoundingClientRect()
|
|
98
|
+
const clickX = event.clientX
|
|
99
|
+
const clickY = event.clientY
|
|
100
|
+
// 检查垂直滚动条
|
|
101
|
+
if (element.scrollHeight > element.clientHeight) {
|
|
102
|
+
const scrollbarWidth = element.offsetWidth - element.clientWidth
|
|
103
|
+
if (clickX >= rect.right - scrollbarWidth && clickX <= rect.right) {
|
|
104
|
+
return true // 点击了垂直滚动条
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
// 检查水平滚动条
|
|
109
|
+
if (element.scrollWidth > element.clientWidth) {
|
|
110
|
+
const scrollbarHeight = element.offsetHeight - element.clientHeight
|
|
111
|
+
if (clickY >= rect.bottom - scrollbarHeight && clickY <= rect.bottom) {
|
|
112
|
+
return true // 点击了水平滚动条
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
return false
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
</script>
|
|
121
|
+
|
|
122
|
+
<style scoped>
|
|
123
|
+
.title {
|
|
124
|
+
font-size: 16px;
|
|
125
|
+
padding: 15px;
|
|
126
|
+
font-weight: bolder;
|
|
127
|
+
color: var(--tv-color-text, #191919);
|
|
128
|
+
}
|
|
129
|
+
</style>
|
|
@@ -3,6 +3,11 @@ 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-editor#editor-custom-edit')
|
|
6
|
-
|
|
7
|
-
await expect(
|
|
6
|
+
const demo = page.locator('#editor-custom-edit')
|
|
7
|
+
await expect(
|
|
8
|
+
demo.locator('.tiny-grid-body__row').nth(0).locator('td').nth(1).locator('.tiny-input__inner')
|
|
9
|
+
).toBeVisible()
|
|
10
|
+
await expect(
|
|
11
|
+
demo.locator('.tiny-grid-body__row').nth(1).locator('td').nth(1).locator('.tiny-input__inner')
|
|
12
|
+
).toBeVisible()
|
|
8
13
|
})
|
|
@@ -8,5 +8,5 @@ test('固定居中', async ({ page }) => {
|
|
|
8
8
|
await expect(page.getByText('暂无数据').first()).toBeVisible()
|
|
9
9
|
|
|
10
10
|
// 判断是否居中
|
|
11
|
-
await expect(page.locator('.
|
|
11
|
+
await expect(page.locator('.tiny-grid__empty-block')).toHaveCSS('justify-content', 'center')
|
|
12
12
|
})
|
|
@@ -15,5 +15,5 @@ test('工具栏点击事件', async ({ page }) => {
|
|
|
15
15
|
|
|
16
16
|
await page.getByRole('button', { name: '删除', exact: true }).click()
|
|
17
17
|
|
|
18
|
-
await expect(page.locator('.tiny-grid-body__row')).toHaveCount(6)
|
|
18
|
+
await expect(page.locator('.tiny-grid-body__row:visible')).toHaveCount(6)
|
|
19
19
|
})
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div>
|
|
3
|
+
<tiny-grid ref="expandGridRef" :data="tableData" @toggle-expand-change="handleExpand">
|
|
4
|
+
<tiny-grid-column type="index" width="60"></tiny-grid-column>
|
|
5
|
+
<tiny-grid-column type="expand" width="120">
|
|
6
|
+
<template #expand-trigger="{ row, $table }">
|
|
7
|
+
<tiny-button>{{ $table.hasRowExpand(row) ? '收起' : '展开' }}</tiny-button>
|
|
8
|
+
</template>
|
|
9
|
+
<template #default="data">
|
|
10
|
+
<ul>
|
|
11
|
+
<li>
|
|
12
|
+
<span>公司名称:</span>
|
|
13
|
+
<span>{{ data.row.name }}</span>
|
|
14
|
+
</li>
|
|
15
|
+
<li>
|
|
16
|
+
<span>区域:</span>
|
|
17
|
+
<span>{{ data.row.area }}</span>
|
|
18
|
+
</li>
|
|
19
|
+
<li>
|
|
20
|
+
<span>员工数:</span>
|
|
21
|
+
<span>{{ data.row.employees }}</span>
|
|
22
|
+
</li>
|
|
23
|
+
<li>
|
|
24
|
+
<span>公司简介:</span>
|
|
25
|
+
<span>{{ data.row.introduction }}</span>
|
|
26
|
+
</li>
|
|
27
|
+
</ul>
|
|
28
|
+
</template>
|
|
29
|
+
</tiny-grid-column>
|
|
30
|
+
<tiny-grid-column field="name" title="公司名称"></tiny-grid-column>
|
|
31
|
+
<tiny-grid-column field="area" title="区域"></tiny-grid-column>
|
|
32
|
+
<tiny-grid-column field="employees" title="员工数"></tiny-grid-column>
|
|
33
|
+
</tiny-grid>
|
|
34
|
+
</div>
|
|
35
|
+
</template>
|
|
36
|
+
|
|
37
|
+
<script setup lang="jsx">
|
|
38
|
+
import { ref } from 'vue'
|
|
39
|
+
import { TinyGrid, TinyGridColumn, TinyModal, TinyButton } from '@opentiny/vue'
|
|
40
|
+
|
|
41
|
+
const tableData = ref([
|
|
42
|
+
{
|
|
43
|
+
id: '1',
|
|
44
|
+
pid: '0',
|
|
45
|
+
name: 'GFD 科技 YX 公司',
|
|
46
|
+
area: '华东区',
|
|
47
|
+
employees: '800',
|
|
48
|
+
introduction: '公司技术和研发实力雄厚,是国家 863 项目的参与者,并被政府认定为“高新技术企业”。'
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
id: '2',
|
|
52
|
+
pid: '0',
|
|
53
|
+
name: 'WWWW 科技 YX 公司',
|
|
54
|
+
area: '华南区',
|
|
55
|
+
employees: '500',
|
|
56
|
+
introduction: '公司技术和研发实力雄厚,是国家 863 项目的参与者,并被政府认定为“高新技术企业”。'
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
id: '4',
|
|
60
|
+
pid: '0',
|
|
61
|
+
name: 'TGBYX 公司',
|
|
62
|
+
area: '华南区',
|
|
63
|
+
employees: '360',
|
|
64
|
+
introduction: '公司技术和研发实力雄厚,是国家 863 项目的参与者,并被政府认定为“高新技术企业”。'
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
id: '7',
|
|
68
|
+
pid: '0',
|
|
69
|
+
name: '康康物业 YX 公司',
|
|
70
|
+
area: '华南区',
|
|
71
|
+
employees: '400',
|
|
72
|
+
introduction: '公司技术和研发实力雄厚,是国家 863 项目的参与者,并被政府认定为“高新技术企业”。'
|
|
73
|
+
}
|
|
74
|
+
])
|
|
75
|
+
const expandGridRef = ref()
|
|
76
|
+
|
|
77
|
+
function handleExpand({ row, rowIndex }) {
|
|
78
|
+
if (expandGridRef.value.hasRowExpand(row)) {
|
|
79
|
+
TinyModal.message({
|
|
80
|
+
message: `当前展开行:${JSON.stringify(rowIndex + 1)}`,
|
|
81
|
+
status: 'info'
|
|
82
|
+
})
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
</script>
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { test, expect } from '@playwright/test'
|
|
2
|
+
|
|
3
|
+
test('检查当前行是否展开', async ({ page }) => {
|
|
4
|
+
page.on('pageerror', (exception) => expect(exception).toBeNull())
|
|
5
|
+
await page.goto('grid-expand#expand-trigger-slot')
|
|
6
|
+
await page.locator('#expand-trigger-slot .tiny-grid-body__row').first().locator('.tiny-button').click()
|
|
7
|
+
await expect(page.locator('div').filter({ hasText: '当前展开行:1' }).nth(1)).toBeVisible()
|
|
8
|
+
await expect(page.locator('.tiny-grid-body__expanded-cell')).toHaveText(
|
|
9
|
+
'公司名称:GFD 科技 YX 公司区域:华东区员工数:800公司简介:公司技术和研发实力雄厚,是国家 863 项目的参与者,并被政府认定为“高新技术企业”。'
|
|
10
|
+
)
|
|
11
|
+
})
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div>
|
|
3
|
+
<tiny-grid ref="expandGrid" :data="tableData" @toggle-expand-change="handleExpand">
|
|
4
|
+
<tiny-grid-column type="index" width="60"></tiny-grid-column>
|
|
5
|
+
<tiny-grid-column type="expand" width="120">
|
|
6
|
+
<template #expand-trigger="{ row, $table }">
|
|
7
|
+
<tiny-button>{{ $table.hasRowExpand(row) ? '收起' : '展开' }}</tiny-button>
|
|
8
|
+
</template>
|
|
9
|
+
<template #default="data">
|
|
10
|
+
<ul>
|
|
11
|
+
<li>
|
|
12
|
+
<span>公司名称:</span>
|
|
13
|
+
<span>{{ data.row.name }}</span>
|
|
14
|
+
</li>
|
|
15
|
+
<li>
|
|
16
|
+
<span>区域:</span>
|
|
17
|
+
<span>{{ data.row.area }}</span>
|
|
18
|
+
</li>
|
|
19
|
+
<li>
|
|
20
|
+
<span>员工数:</span>
|
|
21
|
+
<span>{{ data.row.employees }}</span>
|
|
22
|
+
</li>
|
|
23
|
+
<li>
|
|
24
|
+
<span>公司简介:</span>
|
|
25
|
+
<span>{{ data.row.introduction }}</span>
|
|
26
|
+
</li>
|
|
27
|
+
</ul>
|
|
28
|
+
</template>
|
|
29
|
+
</tiny-grid-column>
|
|
30
|
+
<tiny-grid-column field="name" title="公司名称"></tiny-grid-column>
|
|
31
|
+
<tiny-grid-column field="area" title="区域"></tiny-grid-column>
|
|
32
|
+
<tiny-grid-column field="employees" title="员工数"></tiny-grid-column>
|
|
33
|
+
</tiny-grid>
|
|
34
|
+
</div>
|
|
35
|
+
</template>
|
|
36
|
+
|
|
37
|
+
<script lang="jsx">
|
|
38
|
+
import { TinyGrid, TinyGridColumn, TinyModal, TinyButton } from '@opentiny/vue'
|
|
39
|
+
|
|
40
|
+
export default {
|
|
41
|
+
components: {
|
|
42
|
+
TinyGrid,
|
|
43
|
+
TinyGridColumn,
|
|
44
|
+
TinyButton
|
|
45
|
+
},
|
|
46
|
+
data() {
|
|
47
|
+
return {
|
|
48
|
+
tableData: [
|
|
49
|
+
{
|
|
50
|
+
id: '1',
|
|
51
|
+
pid: '0',
|
|
52
|
+
name: 'GFD 科技 YX 公司',
|
|
53
|
+
area: '华东区',
|
|
54
|
+
employees: '800',
|
|
55
|
+
introduction: '公司技术和研发实力雄厚,是国家 863 项目的参与者,并被政府认定为“高新技术企业”。'
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
id: '2',
|
|
59
|
+
pid: '0',
|
|
60
|
+
name: 'WWWW 科技 YX 公司',
|
|
61
|
+
area: '华南区',
|
|
62
|
+
employees: '500',
|
|
63
|
+
introduction: '公司技术和研发实力雄厚,是国家 863 项目的参与者,并被政府认定为“高新技术企业”。'
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
id: '4',
|
|
67
|
+
pid: '0',
|
|
68
|
+
name: 'TGBYX 公司',
|
|
69
|
+
area: '华南区',
|
|
70
|
+
employees: '360',
|
|
71
|
+
introduction: '公司技术和研发实力雄厚,是国家 863 项目的参与者,并被政府认定为“高新技术企业”。'
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
id: '7',
|
|
75
|
+
pid: '0',
|
|
76
|
+
name: '康康物业 YX 公司',
|
|
77
|
+
area: '华南区',
|
|
78
|
+
employees: '400',
|
|
79
|
+
introduction: '公司技术和研发实力雄厚,是国家 863 项目的参与者,并被政府认定为“高新技术企业”。'
|
|
80
|
+
}
|
|
81
|
+
]
|
|
82
|
+
}
|
|
83
|
+
},
|
|
84
|
+
methods: {
|
|
85
|
+
handleExpand({ row, rowIndex }) {
|
|
86
|
+
if (this.$refs.expandGrid.hasRowExpand(row)) {
|
|
87
|
+
TinyModal.message({
|
|
88
|
+
message: `当前展开行:${JSON.stringify(rowIndex + 1)}`,
|
|
89
|
+
status: 'info'
|
|
90
|
+
})
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
</script>
|
|
@@ -2,6 +2,10 @@ import { test, expect } from '@playwright/test'
|
|
|
2
2
|
|
|
3
3
|
test('设置指定展开行', async ({ page }) => {
|
|
4
4
|
page.on('pageerror', (exception) => expect(exception).toBeNull())
|
|
5
|
+
await page.setViewportSize({
|
|
6
|
+
width: 1400,
|
|
7
|
+
height: 2500
|
|
8
|
+
})
|
|
5
9
|
await page.goto('grid-expand#expand-set-row-expansion')
|
|
6
10
|
await page.getByRole('button', { name: '展开指定行' }).click()
|
|
7
11
|
await expect(page.getByText('GFD 科技 YX 公司')).toHaveCount(2)
|
|
@@ -4,9 +4,9 @@ test('列筛选规则', async ({ page }) => {
|
|
|
4
4
|
page.on('pageerror', (exception) => expect(exception).toBeNull())
|
|
5
5
|
await page.goto('grid-filter#filter-custom-filter')
|
|
6
6
|
await page.getByRole('cell', { name: '名称' }).getByRole('img').click()
|
|
7
|
-
await page.
|
|
8
|
-
await page.
|
|
9
|
-
await page.
|
|
7
|
+
await page.locator('.tiny-grid__filter-wrapper.filter__active input').click()
|
|
8
|
+
await page.locator('.tiny-grid__filter-wrapper.filter__active input').press('CapsLock')
|
|
9
|
+
await page.locator('.tiny-grid__filter-wrapper.filter__active input').fill('WWW')
|
|
10
10
|
await page.getByRole('button', { name: 'confirm' }).click()
|
|
11
11
|
await expect(page.getByRole('cell', { name: 'WWW 科技 YX 公司' })).toBeVisible()
|
|
12
12
|
})
|
|
@@ -103,6 +103,9 @@ const tableData = ref([
|
|
|
103
103
|
}
|
|
104
104
|
])
|
|
105
105
|
const cityFilter = ref({
|
|
106
|
+
attrs: {
|
|
107
|
+
id: 'city-filter'
|
|
108
|
+
},
|
|
106
109
|
multi: true,
|
|
107
110
|
enumable: true,
|
|
108
111
|
defaultFilter: false,
|
|
@@ -110,6 +113,9 @@ const cityFilter = ref({
|
|
|
110
113
|
values: filteData
|
|
111
114
|
})
|
|
112
115
|
const nameFilter = ref({
|
|
116
|
+
attrs: {
|
|
117
|
+
id: 'name-filter'
|
|
118
|
+
},
|
|
113
119
|
multi: true,
|
|
114
120
|
enumable: true,
|
|
115
121
|
defaultFilter: false,
|
|
@@ -110,6 +110,9 @@ export default {
|
|
|
110
110
|
}
|
|
111
111
|
],
|
|
112
112
|
cityFilter: {
|
|
113
|
+
attrs: {
|
|
114
|
+
id: 'city-filter' // 给根节点设置id
|
|
115
|
+
},
|
|
113
116
|
multi: true,
|
|
114
117
|
enumable: true,
|
|
115
118
|
defaultFilter: false,
|
|
@@ -117,6 +120,9 @@ export default {
|
|
|
117
120
|
values: filteData
|
|
118
121
|
},
|
|
119
122
|
nameFilter: {
|
|
123
|
+
attrs: {
|
|
124
|
+
id: 'name-filter'
|
|
125
|
+
},
|
|
120
126
|
multi: true,
|
|
121
127
|
enumable: true,
|
|
122
128
|
defaultFilter: false,
|
|
@@ -7,5 +7,5 @@ test('输入过滤的默认选项', async ({ page }) => {
|
|
|
7
7
|
await page.getByRole('spinbutton').click()
|
|
8
8
|
await page.getByRole('spinbutton').fill('800')
|
|
9
9
|
await page.getByRole('button', { name: '确定' }).click()
|
|
10
|
-
await expect(page.locator('.tiny-grid-body__row')).toHaveCount(2)
|
|
10
|
+
await expect(page.locator('.tiny-grid-body__row:visible')).toHaveCount(2)
|
|
11
11
|
})
|
|
@@ -7,5 +7,5 @@ test('服务端过滤', async ({ page }) => {
|
|
|
7
7
|
await page.getByRole('cell', { name: '城市' }).getByRole('img').first().click()
|
|
8
8
|
await page.locator('li').filter({ hasText: '深圳' }).click()
|
|
9
9
|
await page.getByRole('button', { name: '确定' }).click()
|
|
10
|
-
await expect(page.locator('.tiny-grid-body__row')).toHaveCount(2)
|
|
10
|
+
await expect(page.locator('.tiny-grid-body__row:visible')).toHaveCount(2)
|
|
11
11
|
})
|
|
@@ -6,11 +6,12 @@ test('简化版筛选面板 - 单选/多选菜单', async ({ page }) => {
|
|
|
6
6
|
await page.getByRole('cell', { name: '公司名称' }).getByRole('img').click()
|
|
7
7
|
|
|
8
8
|
// 筛选面板搜索功能
|
|
9
|
-
|
|
10
|
-
await
|
|
9
|
+
const filterInput = page.locator('.tiny-grid__filter-wrapper.filter__active input')
|
|
10
|
+
await filterInput.click()
|
|
11
|
+
await filterInput.fill('a')
|
|
11
12
|
await expect(page.getByRole('listitem').filter({ hasText: '暂无数据' })).toBeVisible()
|
|
12
|
-
await
|
|
13
|
-
await
|
|
13
|
+
await filterInput.click()
|
|
14
|
+
await filterInput.fill('')
|
|
14
15
|
await page.getByTitle('GFD 科技 YX 公司').click()
|
|
15
16
|
await page.getByTitle('WWW 科技 YX 公司').click()
|
|
16
17
|
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
<tiny-grid height="300" :data="tableData" :show-overflow="true">
|
|
3
3
|
<tiny-grid-column type="index" width="60"></tiny-grid-column>
|
|
4
4
|
<tiny-grid-column type="selection" width="60"></tiny-grid-column>
|
|
5
|
-
<tiny-grid-column field="name" title="公司名称" width="
|
|
6
|
-
<tiny-grid-column field="employees" title="员工数" width="
|
|
7
|
-
<tiny-grid-column field="createdDate" title="创建日期" width="
|
|
8
|
-
<tiny-grid-column field="city" title="城市右冻结" width="
|
|
5
|
+
<tiny-grid-column field="name" title="公司名称" width="600"></tiny-grid-column>
|
|
6
|
+
<tiny-grid-column field="employees" title="员工数" width="600"></tiny-grid-column>
|
|
7
|
+
<tiny-grid-column field="createdDate" title="创建日期" width="600"></tiny-grid-column>
|
|
8
|
+
<tiny-grid-column field="city" title="城市右冻结" width="600" fixed="right"></tiny-grid-column>
|
|
9
9
|
</tiny-grid>
|
|
10
10
|
</template>
|
|
11
11
|
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
<tiny-grid height="300" :data="tableData" :show-overflow="true">
|
|
3
3
|
<tiny-grid-column type="index" width="60"></tiny-grid-column>
|
|
4
4
|
<tiny-grid-column type="selection" width="60"></tiny-grid-column>
|
|
5
|
-
<tiny-grid-column field="name" title="公司名称" width="
|
|
6
|
-
<tiny-grid-column field="employees" title="员工数" width="
|
|
7
|
-
<tiny-grid-column field="createdDate" title="创建日期" width="
|
|
8
|
-
<tiny-grid-column field="city" title="城市右冻结" width="
|
|
5
|
+
<tiny-grid-column field="name" title="公司名称" width="600"></tiny-grid-column>
|
|
6
|
+
<tiny-grid-column field="employees" title="员工数" width="600"></tiny-grid-column>
|
|
7
|
+
<tiny-grid-column field="createdDate" title="创建日期" width="600"></tiny-grid-column>
|
|
8
|
+
<tiny-grid-column field="city" title="城市右冻结" width="600" fixed="right"></tiny-grid-column>
|
|
9
9
|
</tiny-grid>
|
|
10
10
|
</template>
|
|
11
11
|
|
|
@@ -3,7 +3,6 @@ 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-footer#footer-footer-summation-empty')
|
|
6
|
-
await expect(page.getByRole('row', { name: '平均 0' }).getByRole('cell', { name: '0' })).toBeVisible()
|
|
7
6
|
await page.getByRole('button', { name: '加载数据' }).click()
|
|
8
7
|
await expect(page.getByRole('cell', { name: '663' })).toBeVisible()
|
|
9
8
|
})
|