@opentiny/vue-docs 3.26.7 → 3.27.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 +13 -0
- package/demos/apis/calendar-view.js +12 -0
- package/demos/apis/color-picker.js +16 -0
- package/demos/apis/color-select-panel.js +14 -0
- package/demos/apis/config-provider.js +2 -1
- package/demos/apis/date-picker.js +52 -0
- package/demos/apis/dialog-box.js +16 -4
- package/demos/apis/drawer.js +22 -0
- package/demos/apis/exception.js +43 -27
- package/demos/apis/grid.js +38 -3
- package/demos/apis/guide.js +14 -0
- package/demos/apis/pager.js +3 -3
- package/demos/apis/query-builder.js +346 -1
- package/demos/apis/select.js +41 -0
- package/demos/apis/space.js +99 -0
- package/demos/apis/steps.js +15 -0
- package/demos/apis/time-picker.js +28 -0
- package/demos/apis/time-select.js +30 -0
- package/demos/apis/tree-menu.js +14 -0
- package/demos/mobile-first/app/calendar-view/basic-usage.vue +1 -1
- package/demos/mobile-first/app/exception/webdoc/exception.js +4 -4
- package/demos/mobile-first/app/load-list/webdoc/load-list.en.md +1 -1
- package/demos/mobile-first/app/space/basic-usage-composition-api.vue +41 -0
- package/demos/mobile-first/app/space/basic-usage.spec.ts +37 -0
- package/demos/mobile-first/app/space/basic-usage.vue +37 -0
- package/demos/mobile-first/app/space/space-align-composition-api.vue +37 -0
- package/demos/mobile-first/app/space/space-align.spec.ts +24 -0
- package/demos/mobile-first/app/space/space-align.vue +37 -0
- package/demos/mobile-first/app/space/space-direction-composition-api.vue +32 -0
- package/demos/mobile-first/app/space/space-direction.spec.ts +17 -0
- package/demos/mobile-first/app/space/space-direction.vue +32 -0
- package/demos/mobile-first/app/space/space-justify-composition-api.vue +44 -0
- package/demos/mobile-first/app/space/space-justify.spec.ts +18 -0
- package/demos/mobile-first/app/space/space-justify.vue +39 -0
- package/demos/mobile-first/app/space/space-order-composition-api.vue +14 -0
- package/demos/mobile-first/app/space/space-order.spec.ts +13 -0
- package/demos/mobile-first/app/space/space-order.vue +14 -0
- package/demos/mobile-first/app/space/space-size-composition-api.vue +39 -0
- package/demos/mobile-first/app/space/space-size.spec.ts +37 -0
- package/demos/mobile-first/app/space/space-size.vue +39 -0
- package/demos/mobile-first/app/space/space-wrap-composition-api.vue +31 -0
- package/demos/mobile-first/app/space/space-wrap.spec.ts +25 -0
- package/demos/mobile-first/app/space/space-wrap.vue +31 -0
- package/demos/mobile-first/app/space/webdoc/space.cn.md +9 -0
- package/demos/mobile-first/app/space/webdoc/space.en.md +9 -0
- package/demos/mobile-first/app/space/webdoc/space.js +98 -0
- package/demos/mobile-first/menus.js +3 -1
- package/demos/pc/app/calendar-view/basic-usage-composition-api.vue +1 -1
- package/demos/pc/app/calendar-view/basic-usage.vue +1 -1
- package/demos/pc/app/carousel/webdoc/carousel.js +2 -1
- package/demos/pc/app/color-picker/linear-gradient-composition-api.vue +20 -0
- package/demos/pc/app/color-picker/linear-gradient.spec.ts +10 -0
- package/demos/pc/app/color-picker/linear-gradient.vue +28 -0
- package/demos/pc/app/color-picker/webdoc/color-picker.js +27 -0
- package/demos/pc/app/color-select-panel/linear-gradient-composition-api.vue +38 -0
- package/demos/pc/app/color-select-panel/linear-gradient.spec.ts +71 -0
- package/demos/pc/app/color-select-panel/linear-gradient.vue +45 -0
- package/demos/pc/app/color-select-panel/webdoc/color-select-panel.js +12 -0
- package/demos/pc/app/config-provider/webdoc/config-provider.js +2 -1
- package/demos/pc/app/date-panel/basic-usage.vue +19 -8
- package/demos/pc/app/date-panel/custom-weeks.vue +19 -9
- package/demos/pc/app/date-panel/disabled-date.vue +29 -19
- package/demos/pc/app/date-panel/event.vue +38 -31
- package/demos/pc/app/date-panel/format.vue +15 -5
- package/demos/pc/app/date-panel/readonly.vue +19 -8
- package/demos/pc/app/date-panel/shortcuts.vue +182 -176
- package/demos/pc/app/date-panel/unlink-panels.vue +15 -5
- package/demos/pc/app/date-picker/now-composition-api.vue +4 -1
- package/demos/pc/app/date-picker/now.vue +6 -2
- package/demos/pc/app/date-picker/slot-composition-api.vue +112 -0
- package/demos/pc/app/date-picker/slot.spec.ts +41 -0
- package/demos/pc/app/date-picker/slot.vue +119 -0
- package/demos/pc/app/date-picker/webdoc/date-picker.js +12 -0
- package/demos/pc/app/dialog-box/before-close-composition-api.vue +65 -0
- package/demos/pc/app/dialog-box/before-close.spec.ts +6 -0
- package/demos/pc/app/dialog-box/before-close.vue +71 -0
- package/demos/pc/app/dialog-box/webdoc/dialog-box.js +16 -0
- package/demos/pc/app/dialog-select/nest-tree-single.spec.ts +4 -7
- package/demos/pc/app/drawer/webdoc/drawer.js +2 -1
- package/demos/pc/app/exception/basic-usage-composition-api.vue +15 -0
- package/demos/pc/app/exception/basic-usage.vue +21 -0
- package/demos/pc/app/exception/button-text-composition-api.vue +13 -0
- package/demos/pc/app/exception/button-text.vue +21 -0
- package/demos/pc/app/exception/component-page-composition-api.vue +44 -0
- package/demos/pc/app/exception/component-page.vue +55 -0
- package/demos/pc/app/exception/page-empty-composition-api.vue +7 -0
- package/demos/pc/app/exception/page-empty.vue +13 -0
- package/demos/pc/app/exception/slot-composition-api.vue +29 -0
- package/demos/pc/app/exception/slot.vue +23 -0
- package/demos/pc/app/exception/sub-message-composition-api.vue +7 -0
- package/demos/pc/app/exception/sub-message.vue +13 -0
- package/demos/pc/app/exception/webdoc/exception.cn.md +5 -0
- package/demos/pc/app/exception/webdoc/exception.en.md +5 -0
- package/demos/pc/app/exception/webdoc/exception.js +84 -0
- package/demos/pc/app/grid/custom/default-customs-composition-api.vue +66 -0
- package/demos/pc/app/grid/custom/default-customs.spec.ts +9 -0
- package/demos/pc/app/grid/custom/default-customs.vue +75 -0
- package/demos/pc/app/grid/mouse-keyboard/mouse-config-hover-composition-api.vue +70 -0
- package/demos/pc/app/grid/mouse-keyboard/mouse-config-hover.vue +79 -0
- package/demos/pc/app/grid/validation/highlight-error-composition-api.vue +183 -0
- package/demos/pc/app/grid/validation/highlight-error.vue +192 -0
- package/demos/pc/app/grid/webdoc/grid-custom.js +11 -0
- package/demos/pc/app/grid/webdoc/grid-editor.js +2 -2
- package/demos/pc/app/grid/webdoc/grid-mouse-keyboard.js +9 -0
- package/demos/pc/app/grid/webdoc/grid-validation.js +9 -0
- package/demos/pc/app/guide/mask-composition-api.vue +31 -0
- package/demos/pc/app/guide/mask.spec.ts +13 -0
- package/demos/pc/app/guide/mask.vue +41 -0
- package/demos/pc/app/guide/webdoc/guide.js +12 -0
- package/demos/pc/app/input/resize.spec.ts +1 -1
- package/demos/pc/app/notify/manual-close-composition-api.vue +9 -11
- package/demos/pc/app/notify/manual-close.spec.ts +1 -1
- package/demos/pc/app/notify/manual-close.vue +9 -11
- package/demos/pc/app/notify/verticalOffset.spec.ts +3 -1
- package/demos/pc/app/query-builder/handle.vue +558 -0
- package/demos/pc/app/query-builder/limit.vue +555 -0
- package/demos/pc/app/query-builder/webdoc/query-builder.js +29 -1
- package/demos/pc/app/radio/dynamic-disable.vue +1 -1
- package/demos/pc/app/space/basic-usage-composition-api.vue +41 -0
- package/demos/pc/app/space/basic-usage.spec.ts +37 -0
- package/demos/pc/app/space/basic-usage.vue +37 -0
- package/demos/pc/app/space/space-align-composition-api.vue +37 -0
- package/demos/pc/app/space/space-align.spec.ts +24 -0
- package/demos/pc/app/space/space-align.vue +37 -0
- package/demos/pc/app/space/space-direction-composition-api.vue +32 -0
- package/demos/pc/app/space/space-direction.spec.ts +17 -0
- package/demos/pc/app/space/space-direction.vue +32 -0
- package/demos/pc/app/space/space-justify-composition-api.vue +44 -0
- package/demos/pc/app/space/space-justify.spec.ts +18 -0
- package/demos/pc/app/space/space-justify.vue +39 -0
- package/demos/pc/app/space/space-order-composition-api.vue +14 -0
- package/demos/pc/app/space/space-order.spec.ts +13 -0
- package/demos/pc/app/space/space-order.vue +14 -0
- package/demos/pc/app/space/space-size-composition-api.vue +39 -0
- package/demos/pc/app/space/space-size.spec.ts +37 -0
- package/demos/pc/app/space/space-size.vue +39 -0
- package/demos/pc/app/space/space-wrap-composition-api.vue +31 -0
- package/demos/pc/app/space/space-wrap.spec.ts +25 -0
- package/demos/pc/app/space/space-wrap.vue +31 -0
- package/demos/pc/app/space/webdoc/space.cn.md +9 -0
- package/demos/pc/app/space/webdoc/space.en.md +9 -0
- package/demos/pc/app/space/webdoc/space.js +98 -0
- package/demos/pc/app/steps/slot-icon-composition-api.vue +46 -0
- package/demos/pc/app/steps/slot-icon.vue +54 -0
- package/demos/pc/app/steps/webdoc/steps.js +12 -0
- package/demos/pc/app/tree-menu/events-composition-api.vue +4 -0
- package/demos/pc/app/tree-menu/events.vue +4 -0
- package/demos/pc/app/tree-menu/webdoc/tree-menu.js +2 -2
- package/demos/pc/app/tree-menu/with-icon-composition-api.vue +149 -24
- package/demos/pc/app/tree-menu/with-icon.spec.ts +1 -1
- package/demos/pc/app/tree-menu/with-icon.vue +149 -24
- package/demos/pc/menus.js +16 -0
- package/demos/pc/webdoc/changelog.md +209 -177
- package/env/.env.saas +1 -1
- package/env/.env.saaspages +9 -0
- package/package.json +20 -19
- package/playground/App.vue +2 -2
- package/src/App.vue +2 -1
- package/src/components/anchor.vue +20 -74
- package/src/const.ts +2 -0
- package/src/main.js +2 -5
- package/src/menus.js +2 -1
- package/src/tools/docsearch.js +3 -2
- package/src/tools/useTemplateMode.js +2 -1
- package/src/tools/useTheme.js +2 -2
- package/src/views/components-doc/cmp-config.js +2 -1
- package/src/views/components-doc/common.vue +76 -12
- /package/demos/pc/app/user/{nodata-text-composition-api.vue → no-data-text-composition-api.vue} +0 -0
- /package/demos/pc/app/user/{nodata-text.vue → no-data-text.vue} +0 -0
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
export default {
|
|
2
|
+
column: '2',
|
|
3
|
+
owner: '',
|
|
4
|
+
demos: [
|
|
5
|
+
{
|
|
6
|
+
demoId: 'basic-space',
|
|
7
|
+
name: {
|
|
8
|
+
'zh-CN': '基本用法',
|
|
9
|
+
'en-US': 'Basic Usage'
|
|
10
|
+
},
|
|
11
|
+
desc: {
|
|
12
|
+
'zh-CN': '<p>默认采用横向布局(row),自动为插槽内容添加间距。</p>',
|
|
13
|
+
'en-US': '<p>Uses horizontal layout (row) by default, automatically adding spacing between slot content.</p>'
|
|
14
|
+
},
|
|
15
|
+
codeFiles: ['basic-usage.vue']
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
demoId: 'space-size',
|
|
19
|
+
name: {
|
|
20
|
+
'zh-CN': '间距尺寸',
|
|
21
|
+
'en-US': 'Spacing Size'
|
|
22
|
+
},
|
|
23
|
+
desc: {
|
|
24
|
+
'zh-CN':
|
|
25
|
+
'<p>通过 <code>size</code> 属性设置间距大小,支持 small、medium、large 预定义值或自定义数值/数组。</p>',
|
|
26
|
+
'en-US':
|
|
27
|
+
'<p>Use the <code>size</code> prop to set spacing size. Supports predefined values (small, medium, large) or custom values/arrays.</p>'
|
|
28
|
+
},
|
|
29
|
+
codeFiles: ['space-size.vue']
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
demoId: 'space-direction',
|
|
33
|
+
name: {
|
|
34
|
+
'zh-CN': '排列方向',
|
|
35
|
+
'en-US': 'Layout Direction'
|
|
36
|
+
},
|
|
37
|
+
desc: {
|
|
38
|
+
'zh-CN': '<p>通过 <code>direction</code> 属性设置布局方向,支持 row(横向)或 column(纵向)。</p>',
|
|
39
|
+
'en-US':
|
|
40
|
+
'<p>Use the <code>direction</code> prop to set layout direction: row (horizontal) or column (vertical).</p>'
|
|
41
|
+
},
|
|
42
|
+
codeFiles: ['space-direction.vue']
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
demoId: 'space-wrap',
|
|
46
|
+
name: {
|
|
47
|
+
'zh-CN': '换行显示',
|
|
48
|
+
'en-US': 'Content Wrapping'
|
|
49
|
+
},
|
|
50
|
+
desc: {
|
|
51
|
+
'zh-CN': '<p>通过 <code>wrap</code> 属性控制子项内容是否换行显示。</p>',
|
|
52
|
+
'en-US': '<p>Use the <code>wrap</code> prop to control whether child items wrap to multiple lines.</p>'
|
|
53
|
+
},
|
|
54
|
+
codeFiles: ['space-wrap.vue']
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
demoId: 'space-align',
|
|
58
|
+
name: {
|
|
59
|
+
'zh-CN': '交叉轴对齐',
|
|
60
|
+
'en-US': 'Cross Axis Alignment'
|
|
61
|
+
},
|
|
62
|
+
desc: {
|
|
63
|
+
'zh-CN': '<p>通过 <code>align</code> 属性设置交叉轴对齐方式,支持 start、center、end、baseline 等值。</p>',
|
|
64
|
+
'en-US':
|
|
65
|
+
'<p>Use the <code>align</code> prop to define alignment on the cross axis, supporting values like start, center, end, and baseline.</p>'
|
|
66
|
+
},
|
|
67
|
+
codeFiles: ['space-align.vue']
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
demoId: 'space-justify',
|
|
71
|
+
name: {
|
|
72
|
+
'zh-CN': '主轴对齐',
|
|
73
|
+
'en-US': 'Main Axis Justification'
|
|
74
|
+
},
|
|
75
|
+
desc: {
|
|
76
|
+
'zh-CN':
|
|
77
|
+
'<p>通过 <code>justify</code> 属性设置主轴对齐方式,支持 start、center、end、space-between、space-around、space-evenly。</p>',
|
|
78
|
+
'en-US':
|
|
79
|
+
'<p>Use the <code>justify</code> prop to set main axis alignment, supporting start, center, end, space-between, space-around, and space-evenly.</p>'
|
|
80
|
+
},
|
|
81
|
+
codeFiles: ['space-justify.vue']
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
demoId: 'space-order',
|
|
85
|
+
name: {
|
|
86
|
+
'zh-CN': '自定义排序',
|
|
87
|
+
'en-US': 'Custom Ordering'
|
|
88
|
+
},
|
|
89
|
+
desc: {
|
|
90
|
+
'zh-CN':
|
|
91
|
+
'<p>通过 <code>order</code> 属性传入 key 数组来自定义子元素的渲染顺序,未设置 key 的子元素将自动排列在最后。</p>',
|
|
92
|
+
'en-US':
|
|
93
|
+
'<p>Use the <code>order</code> prop with an array of keys to customize the rendering order of child elements. Children without defined keys are automatically arranged at the end.</p>'
|
|
94
|
+
},
|
|
95
|
+
codeFiles: ['space-order.vue']
|
|
96
|
+
}
|
|
97
|
+
]
|
|
98
|
+
}
|
|
@@ -133,7 +133,9 @@ export const cmpMenus = [
|
|
|
133
133
|
{ name: 'Amount', nameCn: '金额', key: 'amount' },
|
|
134
134
|
{ name: 'currency', nameCn: '币种', key: 'currency' },
|
|
135
135
|
{ name: 'CalendarView', nameCn: '日历', key: 'calendar-view' },
|
|
136
|
-
{ name: 'FloatingButton', nameCn: '悬浮按钮', key: 'floating-button' }
|
|
136
|
+
{ name: 'FloatingButton', nameCn: '悬浮按钮', key: 'floating-button' },
|
|
137
|
+
{ name: 'Divider', nameCn: '分割线', key: 'divider' },
|
|
138
|
+
{ name: 'Space', nameCn: '间距', key: 'space' }
|
|
137
139
|
]
|
|
138
140
|
}
|
|
139
141
|
]
|
|
@@ -97,7 +97,8 @@ export default {
|
|
|
97
97
|
'zh-CN': '<p>通过配置 <code>type</code> 属性为<code>vertical</code>即可实现纵向轮播。</p>\n',
|
|
98
98
|
'en-US': '<p>Set <code>type</code> to vertical to implement <code>vertical</code> rotation. </p>\n'
|
|
99
99
|
},
|
|
100
|
-
codeFiles: ['up-down-carousel.vue']
|
|
100
|
+
codeFiles: ['up-down-carousel.vue'],
|
|
101
|
+
hideSaas: true
|
|
101
102
|
},
|
|
102
103
|
{
|
|
103
104
|
demoId: 'show-title',
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div>
|
|
3
|
+
<tiny-color-picker v-model="color" color-mode="linear-gradient" @confirm="onConfirm" />
|
|
4
|
+
</div>
|
|
5
|
+
</template>
|
|
6
|
+
|
|
7
|
+
<script setup>
|
|
8
|
+
import { TinyColorPicker, TinyNotify } from '@opentiny/vue'
|
|
9
|
+
import { ref } from 'vue'
|
|
10
|
+
|
|
11
|
+
const color = ref('linear-gradient(90deg, #66ADFF 21%,#00FEF1 100%)')
|
|
12
|
+
const onConfirm = () => {
|
|
13
|
+
TinyNotify({
|
|
14
|
+
type: 'success',
|
|
15
|
+
position: 'top-right',
|
|
16
|
+
title: '用户点击了选择',
|
|
17
|
+
message: color.value
|
|
18
|
+
})
|
|
19
|
+
}
|
|
20
|
+
</script>
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { test, expect } from '@playwright/test'
|
|
2
|
+
|
|
3
|
+
test('渐变', async ({ page }) => {
|
|
4
|
+
page.on('pageerror', (exception) => expect(exception).toBeNull())
|
|
5
|
+
await page.goto('color-picker#color-mode')
|
|
6
|
+
await page.locator('.tiny-color-picker > .tiny-color-picker__inner').click()
|
|
7
|
+
await page.getByRole('button', { name: '确定' }).click()
|
|
8
|
+
await expect(page.locator('body')).toContainText('linear-gradient(90deg, #66ADFF 21%,#00FEF1 100%)')
|
|
9
|
+
await page.locator('.tiny-notify__icon-close > .tiny-svg').click()
|
|
10
|
+
})
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div>
|
|
3
|
+
<tiny-color-picker v-model="color" color-mode="linear-gradient" @confirm="onConfirm" />
|
|
4
|
+
</div>
|
|
5
|
+
</template>
|
|
6
|
+
|
|
7
|
+
<script>
|
|
8
|
+
import { TinyColorPicker, TinyNotify } from '@opentiny/vue'
|
|
9
|
+
import { ref } from 'vue'
|
|
10
|
+
|
|
11
|
+
export default {
|
|
12
|
+
components: {
|
|
13
|
+
TinyColorPicker
|
|
14
|
+
},
|
|
15
|
+
setup() {
|
|
16
|
+
const color = ref('linear-gradient(90deg, #66ADFF 21%,#00FEF1 100%)')
|
|
17
|
+
const onConfirm = () => {
|
|
18
|
+
TinyNotify({
|
|
19
|
+
type: 'success',
|
|
20
|
+
position: 'top-right',
|
|
21
|
+
title: '用户点击了选择',
|
|
22
|
+
message: color.value
|
|
23
|
+
})
|
|
24
|
+
}
|
|
25
|
+
return { onConfirm, color }
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
</script>
|
|
@@ -121,6 +121,20 @@ export default {
|
|
|
121
121
|
'en-US': ''
|
|
122
122
|
},
|
|
123
123
|
codeFiles: ['format.vue']
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
demoId: 'color-mode',
|
|
127
|
+
name: {
|
|
128
|
+
'zh-CN': '颜色模式',
|
|
129
|
+
'en-US': 'color mode'
|
|
130
|
+
},
|
|
131
|
+
desc: {
|
|
132
|
+
'zh-CN':
|
|
133
|
+
'通过设置 <code>color-mode</code> 属性切换颜色模式。支持 <code>monochrome</code>(单色) 和 <code>linear-gradient</code>(线性渐变) 两种模式。',
|
|
134
|
+
'en-US':
|
|
135
|
+
'Set the <code>color-mode</code> attribute to switch color modes. Supports <code>monochrome</code> and <code>linear-gradient</code> modes.'
|
|
136
|
+
},
|
|
137
|
+
codeFiles: ['linear-gradient.vue']
|
|
124
138
|
}
|
|
125
139
|
],
|
|
126
140
|
features: [
|
|
@@ -214,6 +228,19 @@ export default {
|
|
|
214
228
|
},
|
|
215
229
|
apis: ['change'],
|
|
216
230
|
demos: ['events']
|
|
231
|
+
},
|
|
232
|
+
{
|
|
233
|
+
id: 'color-mode',
|
|
234
|
+
name: '颜色模式',
|
|
235
|
+
support: {
|
|
236
|
+
value: true
|
|
237
|
+
},
|
|
238
|
+
description: '通过 color-mode 属性来定义是否启用线性渐变',
|
|
239
|
+
cloud: {
|
|
240
|
+
value: false
|
|
241
|
+
},
|
|
242
|
+
apis: ['color-mode'],
|
|
243
|
+
demos: ['color-mode']
|
|
217
244
|
}
|
|
218
245
|
]
|
|
219
246
|
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
<script lang="ts" setup>
|
|
2
|
+
import { TinyColorSelectPanel, TinyButton } from '@opentiny/vue'
|
|
3
|
+
import { ref } from 'vue'
|
|
4
|
+
|
|
5
|
+
const color = ref('linear-gradient(120deg, hsla(334, 80%, 40%, 0.32) 0%,#F48FA2FF 96%)')
|
|
6
|
+
const visible = ref(false)
|
|
7
|
+
const history = ref(['linear-gradient(120deg, hsla(201, 80%, 40%, 0.32) 0%,#8FF2F4FF 96%)'])
|
|
8
|
+
const predefineColor = ref(['#66ccff'])
|
|
9
|
+
const changeVisible = () => {
|
|
10
|
+
visible.value = !visible.value
|
|
11
|
+
}
|
|
12
|
+
const onConfirm = () => {
|
|
13
|
+
hidden()
|
|
14
|
+
}
|
|
15
|
+
const hidden = () => {
|
|
16
|
+
visible.value = false
|
|
17
|
+
}
|
|
18
|
+
</script>
|
|
19
|
+
|
|
20
|
+
<template>
|
|
21
|
+
<div>
|
|
22
|
+
<tiny-button @click="changeVisible">Show Color select panel</tiny-button>
|
|
23
|
+
<div style="position: relative">
|
|
24
|
+
<tiny-color-select-panel
|
|
25
|
+
alpha
|
|
26
|
+
color-mode="linear-gradient"
|
|
27
|
+
v-model="color"
|
|
28
|
+
:visible="visible"
|
|
29
|
+
@confirm="onConfirm"
|
|
30
|
+
@cancel="hidden"
|
|
31
|
+
enable-predefine-color
|
|
32
|
+
:predefine="predefineColor"
|
|
33
|
+
enable-history
|
|
34
|
+
:history="history"
|
|
35
|
+
/>
|
|
36
|
+
</div>
|
|
37
|
+
</div>
|
|
38
|
+
</template>
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { expect, test } from '@playwright/test'
|
|
2
|
+
|
|
3
|
+
test('线性渐变', async ({ page }) => {
|
|
4
|
+
await page.goto('color-select-panel#linear-gradient')
|
|
5
|
+
await page.locator('#linear-gradient').getByRole('button', { name: 'Show Color select panel' }).click()
|
|
6
|
+
expect(await page.locator('.tiny-color-select-panel__linear-gradient__thumb').count()).toBe(2)
|
|
7
|
+
await page.locator('.tiny-color-select-panel__linear-gradient__thumb').first().click()
|
|
8
|
+
await page.locator('.tiny-color-select-panel__linear-gradient').click()
|
|
9
|
+
await page.locator('.tiny-color-select-panel__linear-gradient > div:nth-child(2)').click()
|
|
10
|
+
})
|
|
11
|
+
|
|
12
|
+
test('线性渐变 (历史记录)', async ({ page }) => {
|
|
13
|
+
await page.goto('color-select-panel#linear-gradient')
|
|
14
|
+
await page.locator('#linear-gradient').getByRole('button', { name: 'Show Color select panel' }).click()
|
|
15
|
+
await expect(page.locator('.tiny-color-select-panel__history__color-block')).toBeVisible()
|
|
16
|
+
await expect(page.getByLabel('示例', { exact: true }).getByRole('textbox')).toHaveValue(
|
|
17
|
+
'linear-gradient(120deg, hsla(334, 80%, 40%, 0.32) 0%,#F48FA2FF 96%)'
|
|
18
|
+
)
|
|
19
|
+
await page.locator('.tiny-color-select-panel__history__color-block').click()
|
|
20
|
+
await expect(page.getByLabel('示例', { exact: true }).getByRole('textbox')).toHaveValue(
|
|
21
|
+
'linear-gradient(120deg, hsla(201, 80%, 40%, 0.32) 0%,#8FF2F4FF 96%)'
|
|
22
|
+
)
|
|
23
|
+
await page.getByRole('button', { name: '取消' }).click()
|
|
24
|
+
await page.locator('#linear-gradient').getByRole('button', { name: 'Show Color select panel' }).click()
|
|
25
|
+
await expect(page.getByLabel('示例', { exact: true }).getByRole('textbox')).toHaveValue(
|
|
26
|
+
'linear-gradient(120deg, hsla(334, 80%, 40%, 0.32) 0%,#F48FA2FF 96%)'
|
|
27
|
+
)
|
|
28
|
+
await page.locator('.tiny-color-select-panel__inner__hue-select').click()
|
|
29
|
+
await page.getByRole('button', { name: '确定' }).click()
|
|
30
|
+
await page.locator('#linear-gradient').getByRole('button', { name: 'Show Color select panel' }).click()
|
|
31
|
+
await page.locator('.tiny-color-select-panel__history__color-block').first().click()
|
|
32
|
+
await expect(page.getByLabel('示例', { exact: true }).getByRole('textbox')).toHaveValue(
|
|
33
|
+
'linear-gradient(120deg, hsla(201, 80%, 40%, 0.32) 0%,#8FF2F4FF 96%)'
|
|
34
|
+
)
|
|
35
|
+
await page.getByRole('button', { name: '确定' }).click()
|
|
36
|
+
await page.locator('#linear-gradient').getByRole('button', { name: 'Show Color select panel' }).click()
|
|
37
|
+
await expect(page.getByLabel('示例', { exact: true }).getByRole('textbox')).toHaveValue(
|
|
38
|
+
'linear-gradient(120deg, hsla(201, 80%, 40%, 0.32) 0%,#8FF2F4FF 96%)'
|
|
39
|
+
)
|
|
40
|
+
await page.getByRole('button', { name: '确定' }).click()
|
|
41
|
+
})
|
|
42
|
+
|
|
43
|
+
test('线性渐变 (预定义颜色)', async ({ page }) => {
|
|
44
|
+
await page.goto('color-select-panel#linear-gradient')
|
|
45
|
+
|
|
46
|
+
await page.locator('#linear-gradient').getByRole('button', { name: 'Show Color select panel' }).click()
|
|
47
|
+
await expect(page.getByLabel('示例', { exact: true }).getByRole('textbox')).toHaveValue(
|
|
48
|
+
'linear-gradient(120deg, hsla(334, 80%, 40%, 0.32) 0%,#F48FA2FF 96%)'
|
|
49
|
+
)
|
|
50
|
+
await page.locator('.tiny-color-select-panel__predefine__color-block').click()
|
|
51
|
+
await expect(page.getByLabel('示例', { exact: true }).getByRole('textbox')).toHaveValue(
|
|
52
|
+
'linear-gradient(180deg, #FFFFFFFF 0%,#66CCFFFF 100%)'
|
|
53
|
+
)
|
|
54
|
+
await page.getByRole('button', { name: '确定' }).click()
|
|
55
|
+
await page.locator('#linear-gradient').getByRole('button', { name: 'Show Color select panel' }).click()
|
|
56
|
+
await page.locator('.tiny-color-select-panel__history__color-block').first().click()
|
|
57
|
+
await expect(page.getByLabel('示例', { exact: true }).getByRole('textbox')).toHaveValue(
|
|
58
|
+
'linear-gradient(120deg, hsla(201, 80%, 40%, 0.32) 0%,#8FF2F4FF 96%)'
|
|
59
|
+
)
|
|
60
|
+
await page.locator('.tiny-color-select-panel__history > div:nth-child(2)').click()
|
|
61
|
+
await expect(page.getByLabel('示例', { exact: true }).getByRole('textbox')).toHaveValue(
|
|
62
|
+
'linear-gradient(180deg, #FFFFFFFF 0%,#66CCFFFF 100%)'
|
|
63
|
+
)
|
|
64
|
+
await page.locator('.tiny-color-select-panel__history__color-block').first().click()
|
|
65
|
+
await page.getByRole('button', { name: '确定' }).click()
|
|
66
|
+
await page.locator('#linear-gradient').getByRole('button', { name: 'Show Color select panel' }).click()
|
|
67
|
+
await expect(page.getByLabel('示例', { exact: true }).getByRole('textbox')).toHaveValue(
|
|
68
|
+
'linear-gradient(120deg, hsla(201, 80%, 40%, 0.32) 0%,#8FF2F4FF 96%)'
|
|
69
|
+
)
|
|
70
|
+
await page.getByRole('button', { name: '确定' }).click()
|
|
71
|
+
})
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { defineComponent } from 'vue'
|
|
3
|
+
import { ref } from 'vue'
|
|
4
|
+
import { TinyButton, TinyColorSelectPanel } from '@opentiny/vue'
|
|
5
|
+
|
|
6
|
+
export default defineComponent({
|
|
7
|
+
components: { TinyButton, TinyColorSelectPanel },
|
|
8
|
+
setup() {
|
|
9
|
+
const color = ref('linear-gradient(120deg, hsla(334, 80%, 40%, 0.32) 0%,#F48FA2FF 96%)')
|
|
10
|
+
const visible = ref(false)
|
|
11
|
+
const history = ref(['linear-gradient(120deg, hsla(201, 80%, 40%, 0.32) 0%,#8FF2F4FF 96%)'])
|
|
12
|
+
const predefineColor = ref(['#66ccff'])
|
|
13
|
+
const changeVisible = () => {
|
|
14
|
+
visible.value = !visible.value
|
|
15
|
+
}
|
|
16
|
+
const onConfirm = () => {
|
|
17
|
+
hidden()
|
|
18
|
+
}
|
|
19
|
+
const hidden = () => {
|
|
20
|
+
visible.value = false
|
|
21
|
+
}
|
|
22
|
+
return { color, visible, history, predefineColor, changeVisible, onConfirm, hidden }
|
|
23
|
+
}
|
|
24
|
+
})
|
|
25
|
+
</script>
|
|
26
|
+
|
|
27
|
+
<template>
|
|
28
|
+
<div>
|
|
29
|
+
<tiny-button @click="changeVisible">Show Color select panel</tiny-button>
|
|
30
|
+
<div style="position: relative">
|
|
31
|
+
<tiny-color-select-panel
|
|
32
|
+
alpha
|
|
33
|
+
color-mode="linear-gradient"
|
|
34
|
+
v-model="color"
|
|
35
|
+
:visible="visible"
|
|
36
|
+
@confirm="onConfirm"
|
|
37
|
+
@cancel="hidden"
|
|
38
|
+
enable-predefine-color
|
|
39
|
+
:predefine="predefineColor"
|
|
40
|
+
enable-history
|
|
41
|
+
:history="history"
|
|
42
|
+
/>
|
|
43
|
+
</div>
|
|
44
|
+
</div>
|
|
45
|
+
</template>
|
|
@@ -16,6 +16,18 @@ export default {
|
|
|
16
16
|
},
|
|
17
17
|
codeFiles: ['base.vue']
|
|
18
18
|
},
|
|
19
|
+
{
|
|
20
|
+
demoId: 'linear-gradient',
|
|
21
|
+
name: {
|
|
22
|
+
'zh-CN': '线性渐变',
|
|
23
|
+
'en-US': 'Linear Gradient'
|
|
24
|
+
},
|
|
25
|
+
desc: {
|
|
26
|
+
'zh-CN': '通过<code>color-mode</code>设置显示色彩选择的色彩模式。',
|
|
27
|
+
'en-US': 'Set the color mode for display color selection through<code>color mode</code>.'
|
|
28
|
+
},
|
|
29
|
+
codeFiles: ['linear-gradient.vue']
|
|
30
|
+
},
|
|
19
31
|
{
|
|
20
32
|
demoId: 'alpha',
|
|
21
33
|
name: {
|
|
@@ -54,7 +54,8 @@ export default {
|
|
|
54
54
|
'zh-CN': '可通过<code>theme</code>属性设置自定义主题色常量。',
|
|
55
55
|
'en-US': 'You can use the <code>theme</code> property to set a custom theme color constant.'
|
|
56
56
|
},
|
|
57
|
-
codeFiles: ['theme.vue']
|
|
57
|
+
codeFiles: ['theme.vue'],
|
|
58
|
+
hideSaas: true // 当环境变量为tiny-vue-saas时隐藏该属性
|
|
58
59
|
}
|
|
59
60
|
],
|
|
60
61
|
features: [
|
|
@@ -15,16 +15,27 @@
|
|
|
15
15
|
</div>
|
|
16
16
|
</template>
|
|
17
17
|
|
|
18
|
-
<script
|
|
19
|
-
import { ref } from 'vue'
|
|
18
|
+
<script>
|
|
20
19
|
import { TinyDatePanel, TinyDateRange, TinyMonthRange, TinyYearRange } from '@opentiny/vue'
|
|
21
20
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
21
|
+
export default {
|
|
22
|
+
components: {
|
|
23
|
+
TinyDatePanel,
|
|
24
|
+
TinyDateRange,
|
|
25
|
+
TinyMonthRange,
|
|
26
|
+
TinyYearRange
|
|
27
|
+
},
|
|
28
|
+
data() {
|
|
29
|
+
return {
|
|
30
|
+
value: '2025-01-15',
|
|
31
|
+
month: '2025-01',
|
|
32
|
+
year: '2025',
|
|
33
|
+
value1: ['2025-01-15', '2025-02-15'],
|
|
34
|
+
value2: ['2024-03', '2025-02'],
|
|
35
|
+
value3: ['2024', '2028']
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
28
39
|
</script>
|
|
29
40
|
|
|
30
41
|
<style scoped lang="less">
|
|
@@ -18,17 +18,27 @@
|
|
|
18
18
|
</div>
|
|
19
19
|
</template>
|
|
20
20
|
|
|
21
|
-
<script
|
|
22
|
-
import { ref } from 'vue'
|
|
21
|
+
<script>
|
|
23
22
|
import { TinyDatePanel, TinyDateRange } from '@opentiny/vue'
|
|
24
23
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
24
|
+
export default {
|
|
25
|
+
components: {
|
|
26
|
+
TinyDatePanel,
|
|
27
|
+
TinyDateRange
|
|
28
|
+
},
|
|
29
|
+
data() {
|
|
30
|
+
return {
|
|
31
|
+
value: '2025-01-15',
|
|
32
|
+
value1: ['2025-01-15', '2025-02-15'],
|
|
33
|
+
eachWeekFirstDay: []
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
methods: {
|
|
37
|
+
formatWeeks(customWeeks, weekFirstDays) {
|
|
38
|
+
this.eachWeekFirstDay = weekFirstDays
|
|
39
|
+
return customWeeks + 'w'
|
|
40
|
+
}
|
|
41
|
+
}
|
|
32
42
|
}
|
|
33
43
|
</script>
|
|
34
44
|
|
|
@@ -15,27 +15,37 @@
|
|
|
15
15
|
</div>
|
|
16
16
|
</template>
|
|
17
17
|
|
|
18
|
-
<script
|
|
19
|
-
import { ref } from 'vue'
|
|
18
|
+
<script>
|
|
20
19
|
import { TinyDatePanel, TinyDateRange, TinyMonthRange, TinyYearRange } from '@opentiny/vue'
|
|
21
20
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
21
|
+
export default {
|
|
22
|
+
components: {
|
|
23
|
+
TinyDatePanel,
|
|
24
|
+
TinyDateRange,
|
|
25
|
+
TinyMonthRange,
|
|
26
|
+
TinyYearRange
|
|
27
|
+
},
|
|
28
|
+
data() {
|
|
29
|
+
return {
|
|
30
|
+
value: '2025-01-15',
|
|
31
|
+
month: '2025-06',
|
|
32
|
+
year: '2025',
|
|
33
|
+
value1: ['2025-01-15', '2025-02-15'],
|
|
34
|
+
value2: ['2024-03', '2025-02'],
|
|
35
|
+
value3: ['2024', '2028']
|
|
36
|
+
}
|
|
37
|
+
},
|
|
38
|
+
methods: {
|
|
39
|
+
disabledDate(val) {
|
|
40
|
+
return val.getFullYear() < 2025
|
|
41
|
+
},
|
|
42
|
+
disabledDate1(val) {
|
|
43
|
+
return (val.getFullYear() < 2025 && val.getMonth() < 1) || val.getFullYear() < 2024
|
|
44
|
+
},
|
|
45
|
+
disabledDate2(val) {
|
|
46
|
+
return val.getFullYear() < 2024
|
|
47
|
+
}
|
|
48
|
+
}
|
|
39
49
|
}
|
|
40
50
|
</script>
|
|
41
51
|
|
|
@@ -15,39 +15,46 @@
|
|
|
15
15
|
</div>
|
|
16
16
|
</template>
|
|
17
17
|
|
|
18
|
-
<script
|
|
19
|
-
import { ref } from 'vue'
|
|
18
|
+
<script>
|
|
20
19
|
import { TinyDatePanel, TinyDateRange, TinyMonthRange, TinyYearRange, TinyModal } from '@opentiny/vue'
|
|
21
20
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
21
|
+
export default {
|
|
22
|
+
components: {
|
|
23
|
+
TinyDatePanel,
|
|
24
|
+
TinyDateRange,
|
|
25
|
+
TinyMonthRange,
|
|
26
|
+
TinyYearRange
|
|
27
|
+
},
|
|
28
|
+
data() {
|
|
29
|
+
return {
|
|
30
|
+
value: '2025-01-15',
|
|
31
|
+
month: '2025-01',
|
|
32
|
+
year: '2025',
|
|
33
|
+
value1: ['2025-01-15', '2025-02-15'],
|
|
34
|
+
value2: ['2024-03', '2025-02'],
|
|
35
|
+
value3: ['2024', '2028']
|
|
36
|
+
}
|
|
37
|
+
},
|
|
38
|
+
methods: {
|
|
39
|
+
handleSelectChange(value) {
|
|
40
|
+
TinyModal.message({ message: '触发 面板选中 事件,组件绑定值为:' + value, status: 'info' })
|
|
41
|
+
},
|
|
42
|
+
handleSelectChangeMonth(value) {
|
|
43
|
+
TinyModal.message({ message: '触发 月份面板选中 事件,组件绑定值为:' + value, status: 'info' })
|
|
44
|
+
},
|
|
45
|
+
handleSelectChangeYear(value) {
|
|
46
|
+
TinyModal.message({ message: '触发 年份面板选中 事件,组件绑定值为:' + value, status: 'info' })
|
|
47
|
+
},
|
|
48
|
+
handleSelectChange1(value) {
|
|
49
|
+
TinyModal.message({ message: '触发 区间面板选中 事件,组件绑定值为:' + value, status: 'info' })
|
|
50
|
+
},
|
|
51
|
+
handleSelectChange2(value) {
|
|
52
|
+
TinyModal.message({ message: '触发 月份区间面板选中 事件,组件绑定值为:' + value, status: 'info' })
|
|
53
|
+
},
|
|
54
|
+
handleSelectChange3(value) {
|
|
55
|
+
TinyModal.message({ message: '触发 年份区间面板选中 事件,组件绑定值为:' + value, status: 'info' })
|
|
56
|
+
}
|
|
57
|
+
}
|
|
51
58
|
}
|
|
52
59
|
</script>
|
|
53
60
|
|