Skip to content

Commit eaeb932

Browse files
authored
feat: modify the resource file loading mode and add postcss plugin configuration. (#3615)
1 parent 6b27c30 commit eaeb932

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

41 files changed

+768
-73
lines changed

examples/docs/newsrc/resourceMobileFirst.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
import { cmpMenus } from '../../sites/demos/mobile-first/menus.js'
22

3-
export const demoStr = import.meta.glob('../../sites/demos/mobile-first/app/**/*.vue', { eager: false, as: 'raw' })
3+
export const demoStr = import.meta.glob('../../sites/demos/mobile-first/app/**/*.vue', {
4+
eager: false,
5+
query: '?raw',
6+
import: 'default'
7+
})
48
export const demoVue = import.meta.glob('../../sites/demos/mobile-first/app/**/*.vue', { eager: false })
59

610
// demos配置

examples/docs/newsrc/resourcePc.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,11 @@
55
// 同web-doc的菜单资源
66
import { cmpMenus } from '../../sites/demos/pc/menus.js'
77

8-
export const demoStr = import.meta.glob('../../sites/demos/pc/app/**/*.vue', { eager: false, as: 'raw' })
8+
export const demoStr = import.meta.glob('../../sites/demos/pc/app/**/*.vue', {
9+
eager: false,
10+
query: '?raw',
11+
import: 'default'
12+
})
913
export const demoVue = import.meta.glob('../../sites/demos/pc/app/**/*.vue', { eager: false })
1014

1115
// demos配置

examples/sites/demos/apis/numeric.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -460,13 +460,13 @@ export default {
460460
},
461461
{
462462
name: 'input',
463-
type: 'Function(value)',
463+
type: '(event: InputEvent) => void',
464464
defaultValue: '',
465465
desc: {
466466
'zh-CN': '输入值时触发事件',
467-
'en-US': ''
467+
'en-US': 'Trigger event when input value is entered '
468468
},
469-
mode: ['mobile-first'],
469+
mode: ['pc', 'mobile-first'],
470470
mfDemo: ''
471471
}
472472
],

examples/sites/demos/apis/split.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,17 @@ export default {
8686
mode: ['pc'],
8787
pcDemo: 'three-areas'
8888
},
89+
{
90+
name: 'trigger-simple',
91+
type: 'boolean',
92+
defaultValue: 'false',
93+
desc: {
94+
'zh-CN': '是否启用简易模式',
95+
'en-US': 'Whether to enable simplified mode.'
96+
},
97+
mode: ['pc'],
98+
pcDemo: 'trigger-simple'
99+
},
89100
{
90101
name: 'border',
91102
type: 'boolean',

examples/sites/demos/apis/time-line.js

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -199,6 +199,17 @@ export default {
199199
mode: ['mobile-first'],
200200
mfDemo: 'sub-field'
201201
},
202+
{
203+
name: 'text-position',
204+
type: 'string',
205+
defaultValue: '',
206+
desc: {
207+
'zh-CN': `节点文案位置。默认名称和时间分别展示在图标上下方;可选值:'right',只有名称展示名称在右方`,
208+
'en-US': `Node copy position. The default name and time are displayed above and below the icon, respectively; optional value: 'right', where only the name is displayed on the right side. `
209+
},
210+
mode: ['pc'],
211+
pcDemo: 'text-position'
212+
},
202213
{
203214
name: 'time-field',
204215
type: 'string',
@@ -249,6 +260,15 @@ export default {
249260
],
250261
methods: [],
251262
slots: [
263+
{
264+
name: 'default',
265+
desc: {
266+
'zh-CN': '组件默认插槽。组件显示为插槽内容',
267+
'en-US': 'Component default slot. The component displays as the slot content. '
268+
},
269+
mode: ['pc'],
270+
pcDemo: 'slot-default'
271+
},
252272
{
253273
name: 'bottom',
254274
desc: {
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
})
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
})
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
})
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
})
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
<template>
2+
<div>
3+
<tiny-numeric v-model="value" @input="onInput"></tiny-numeric>
4+
<div>
5+
input事件触发了:<span class="count">{{ inputCount }}</span> 次
6+
</div>
7+
</div>
8+
</template>
9+
10+
<script setup lang="ts">
11+
import { ref } from 'vue'
12+
13+
import { TinyModal, TinyNumeric } from '@opentiny/vue'
14+
15+
const value = ref(1)
16+
const inputCount = ref(0)
17+
18+
const onInput = (event: InputEvent) => {
19+
const currentValue = (event.target as HTMLInputElement).value
20+
TinyModal.message({
21+
message: `新值: ${currentValue}`,
22+
status: 'info'
23+
})
24+
inputCount.value++
25+
}
26+
</script>

0 commit comments

Comments
 (0)