Skip to content

Commit db0b73a

Browse files
committed
feat(dialog-select): 添加清空和删除事件支持,更新相关文档和示例代码
1 parent 4549429 commit db0b73a

File tree

7 files changed

+85
-7
lines changed

7 files changed

+85
-7
lines changed

examples/sites/demos/apis/dialog-select.js

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -374,6 +374,28 @@ export default {
374374
},
375375
mode: ['pc'],
376376
pcDemo: ''
377+
},
378+
{
379+
name: 'delete',
380+
type: '(row: IData) => void',
381+
defaultValue: '',
382+
desc: {
383+
'zh-CN': '使用表格展示数据时,已选栏的选项的删除事件',
384+
'en-US': 'The delete event of the selected column options when displaying data in a table'
385+
},
386+
mode: ['pc'],
387+
pcDemo: 'nest-grid-multi'
388+
},
389+
{
390+
name: 'clear',
391+
type: '() => void',
392+
defaultValue: '',
393+
desc: {
394+
'zh-CN': '使用表格展示数据时,已选栏的清空事件',
395+
'en-US': 'The clear event of the selected column when displaying data in a table'
396+
},
397+
mode: ['pc'],
398+
pcDemo: 'nest-grid-multi'
377399
}
378400
],
379401
methods: [

examples/sites/demos/pc/app/dialog-select/nest-grid-multi-composition-api.vue

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@
1919
@size-change="onSizeChange"
2020
@current-change="onCurrentChange"
2121
@change="onDialogSelectChange"
22+
@clear="onDialogSelectClear"
23+
@delete="onDialogSelectDelete"
2224
value-field="id"
2325
text-field="name"
2426
:main-height="240"
@@ -45,7 +47,7 @@
4547

4648
<script setup lang="ts">
4749
import { reactive, ref } from 'vue'
48-
import { TinyDialogSelect, TinyButton, TinySearch, TinySelect } from '@opentiny/vue'
50+
import { TinyDialogSelect, TinyButton, TinySearch, TinySelect, TinyModal } from '@opentiny/vue'
4951
import Sortable from 'sortablejs'
5052
5153
// 模拟服务侧数据
@@ -189,6 +191,21 @@ const onDialogSelectChange = (values, texts, selectedDatas) => {
189191
// 打印 change 回调数据,控制台查看
190192
console.log({ values, texts, selectedDatas })
191193
}
194+
195+
const onDialogSelectClear = () => {
196+
TinyModal.message({
197+
message: '清空成功',
198+
type: 'success'
199+
})
200+
}
201+
202+
const onDialogSelectDelete = (row) => {
203+
console.log('删除成功', row)
204+
TinyModal.message({
205+
message: '删除成功',
206+
type: 'success'
207+
})
208+
}
192209
</script>
193210

194211
<style scoped lang="less">
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
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-multi')
6+
const demo = page.locator('#nest-grid-multi')
7+
8+
await demo.getByRole('button', { name: '打开窗口' }).click()
9+
await page
10+
.locator('div')
11+
.filter({ hasText: /^GFD WSX $/ })
12+
.getByRole('img')
13+
.nth(1)
14+
.click()
15+
await expect(page.getByText('删除成功')).toBeVisible()
16+
await page.getByText('清空').click()
17+
await expect(page.getByText('清空成功')).toBeVisible()
18+
})

examples/sites/demos/pc/app/dialog-select/nest-grid-multi.vue

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@
1919
@size-change="onSizeChange"
2020
@current-change="onCurrentChange"
2121
@change="onDialogSelectChange"
22+
@clear="onDialogSelectClear"
23+
@delete="onDialogSelectDelete"
2224
value-field="id"
2325
text-field="name"
2426
:main-height="240"
@@ -44,7 +46,7 @@
4446
</template>
4547

4648
<script>
47-
import { TinyDialogSelect, TinyButton, TinySearch, TinySelect } from '@opentiny/vue'
49+
import { TinyDialogSelect, TinyButton, TinySearch, TinySelect, TinyModal } from '@opentiny/vue'
4850
import Sortable from 'sortablejs'
4951
5052
// 模拟服务侧数据
@@ -187,6 +189,19 @@ export default {
187189
onDialogSelectChange(values, texts, selectedDatas) {
188190
// 打印 change 回调数据,控制台查看
189191
console.log({ values, texts, selectedDatas })
192+
},
193+
onDialogSelectClear() {
194+
TinyModal.message({
195+
message: '清空成功',
196+
type: 'success'
197+
})
198+
},
199+
onDialogSelectDelete(row) {
200+
console.log('删除成功', row)
201+
TinyModal.message({
202+
message: '删除成功',
203+
type: 'success'
204+
})
190205
}
191206
}
192207
}

packages/renderless/src/dialog-select/index.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,7 @@ export const selectedBoxInit =
155155
}
156156

157157
export const selectedBoxClear =
158-
({ props, state, vm }) =>
158+
({ props, state, vm, emit }) =>
159159
() => {
160160
const { multi, popseletor } = props
161161

@@ -170,6 +170,8 @@ export const selectedBoxClear =
170170
state.selectedValues = []
171171
state.selectedDatas = []
172172
state.selectedChanged = true
173+
174+
emit('clear')
173175
}
174176

175177
export const setTreeSelection =
@@ -260,7 +262,7 @@ export const getSelection =
260262
state.selectedDatas
261263

262264
export const selectedBoxDelete =
263-
({ props, state, vm }) =>
265+
({ props, state, vm, emit }) =>
264266
({ option: row }) => {
265267
const { multi, popseletor } = props
266268

@@ -282,6 +284,8 @@ export const selectedBoxDelete =
282284
state.selectedDatas = [...state.selectedDatas.slice(0, index), ...state.selectedDatas.slice(index + 1)]
283285
state.selectedChanged = true
284286
}
287+
288+
emit('delete', row)
285289
}
286290

287291
export const selectedBoxDrag =

packages/renderless/src/dialog-select/vue.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -95,8 +95,8 @@ export const renderless = (props, { reactive, computed, watch }, { vm, nextTick,
9595
state,
9696
computedGridColumns: computedGridColumns(props),
9797
selectedBoxInit: selectedBoxInit({ props, vm, nextTick }),
98-
selectedBoxClear: selectedBoxClear({ props, state, vm }),
99-
selectedBoxDelete: selectedBoxDelete({ props, state, vm }),
98+
selectedBoxClear: selectedBoxClear({ props, state, vm, emit }),
99+
selectedBoxDelete: selectedBoxDelete({ props, state, vm, emit }),
100100
selectedBoxDrag: selectedBoxDrag({ props, state }),
101101
doMultiTreeFilter: doMultiTreeFilter({ props, state, nextTick, vm }),
102102
multiTreeFilterNode: multiTreeFilterNode(props),

packages/vue/src/dialog-select/src/pc.vue

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -192,7 +192,9 @@ export default defineComponent({
192192
'before-page-change',
193193
'change',
194194
// tiny 新增
195-
'resize'
195+
'resize',
196+
'clear',
197+
'delete'
196198
],
197199
props: [
198200
...props,

0 commit comments

Comments
 (0)