@shwfed/config 2.12.4 → 2.12.6
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/dist/module.json +1 -1
- package/dist/module.mjs +5 -0
- package/dist/runtime/components/actions/buttons/2026-05-11/com.shwfed.actions.button.modal.layout/runtime.vue +9 -2
- package/dist/runtime/components/actions/buttons/2026-05-11/com.shwfed.actions.button.modal.layout/schema.d.ts +8 -2
- package/dist/runtime/components/actions/buttons/2026-05-11/com.shwfed.actions.button.modal.layout/schema.js +3 -3
- package/dist/runtime/components/actions/components/group.vue +3 -1
- package/dist/runtime/components/actions/schema.d.ts +16 -4
- package/dist/runtime/components/actions/schema.js +5 -5
- package/dist/runtime/components/config/blocks/2026-05-06/com.shwfed.block.table/config.d.vue.ts +68 -68
- package/dist/runtime/components/config/blocks/2026-05-06/com.shwfed.block.table/config.vue.d.ts +68 -68
- package/dist/runtime/components/config/blocks/2026-05-06/com.shwfed.block.table/runtime.d.vue.ts +68 -68
- package/dist/runtime/components/config/blocks/2026-05-06/com.shwfed.block.table/runtime.vue.d.ts +68 -68
- package/dist/runtime/components/config/blocks/2026-05-06/com.shwfed.block.table/schema.d.ts +34 -34
- package/dist/runtime/components/config/footer.d.vue.ts +4 -0
- package/dist/runtime/components/config/footer.vue +25 -12
- package/dist/runtime/components/config/footer.vue.d.ts +4 -0
- package/dist/runtime/components/config/history-picker.d.vue.ts +15 -0
- package/dist/runtime/components/config/history-picker.vue +155 -0
- package/dist/runtime/components/config/history-picker.vue.d.ts +15 -0
- package/dist/runtime/components/config/index.d.vue.ts +4 -0
- package/dist/runtime/components/config/index.vue +31 -4
- package/dist/runtime/components/config/index.vue.d.ts +4 -0
- package/dist/runtime/components/form/fields/2026-04-22/com.shwfed.form.field.text/runtime.vue +5 -3
- package/dist/runtime/components/form/fields/2026-04-22/com.shwfed.form.field.text/schema.d.ts +8 -2
- package/dist/runtime/components/form/fields/2026-04-22/com.shwfed.form.field.text/schema.js +2 -2
- package/dist/runtime/components/form/fields/2026-04-22/com.shwfed.form.field.textarea/runtime.vue +5 -3
- package/dist/runtime/components/form/fields/2026-04-22/com.shwfed.form.field.textarea/schema.d.ts +8 -2
- package/dist/runtime/components/form/fields/2026-04-22/com.shwfed.form.field.textarea/schema.js +2 -2
- package/dist/runtime/components/form/fields/2026-04-24/com.shwfed.form.field.combobox.single/runtime.vue +4 -3
- package/dist/runtime/components/form/fields/2026-04-24/com.shwfed.form.field.combobox.single/schema.d.ts +8 -2
- package/dist/runtime/components/form/fields/2026-04-24/com.shwfed.form.field.combobox.single/schema.js +1 -1
- package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.date/runtime.vue +5 -3
- package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.date/schema.d.ts +8 -2
- package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.date/schema.js +2 -2
- package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.daterange/config.d.vue.ts +6 -6
- package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.daterange/config.vue.d.ts +6 -6
- package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.daterange/runtime.vue +5 -3
- package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.daterange/schema.d.ts +8 -2
- package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.daterange/schema.js +2 -2
- package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.datetime/config.d.vue.ts +2 -2
- package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.datetime/config.vue.d.ts +2 -2
- package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.datetime/runtime.vue +5 -3
- package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.datetime/schema.d.ts +8 -2
- package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.datetime/schema.js +2 -2
- package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.datetimerange/config.d.vue.ts +8 -8
- package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.datetimerange/config.vue.d.ts +8 -8
- package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.datetimerange/runtime.vue +5 -3
- package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.datetimerange/schema.d.ts +8 -2
- package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.datetimerange/schema.js +2 -2
- package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.time/config.d.vue.ts +2 -2
- package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.time/config.vue.d.ts +2 -2
- package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.time/runtime.vue +5 -3
- package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.time/schema.d.ts +8 -2
- package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.time/schema.js +2 -2
- package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.timerange/config.d.vue.ts +4 -4
- package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.timerange/config.vue.d.ts +4 -4
- package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.timerange/runtime.vue +5 -3
- package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.timerange/schema.d.ts +8 -2
- package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.timerange/schema.js +2 -2
- package/dist/runtime/components/form/fields/2026-04-28/com.shwfed.form.field.number/config.d.vue.ts +2 -2
- package/dist/runtime/components/form/fields/2026-04-28/com.shwfed.form.field.number/config.vue.d.ts +2 -2
- package/dist/runtime/components/form/fields/2026-04-28/com.shwfed.form.field.number/runtime.vue +5 -3
- package/dist/runtime/components/form/fields/2026-04-28/com.shwfed.form.field.number/schema.d.ts +8 -2
- package/dist/runtime/components/form/fields/2026-04-28/com.shwfed.form.field.number/schema.js +2 -2
- package/dist/runtime/components/form/fields/2026-04-28/com.shwfed.form.field.numberrange/config.d.vue.ts +2 -2
- package/dist/runtime/components/form/fields/2026-04-28/com.shwfed.form.field.numberrange/config.vue.d.ts +2 -2
- package/dist/runtime/components/form/fields/2026-04-28/com.shwfed.form.field.numberrange/runtime.vue +5 -3
- package/dist/runtime/components/form/fields/2026-04-28/com.shwfed.form.field.numberrange/schema.d.ts +8 -2
- package/dist/runtime/components/form/fields/2026-04-28/com.shwfed.form.field.numberrange/schema.js +2 -2
- package/dist/runtime/components/form/fields/2026-04-28/com.shwfed.form.field.switch/runtime.vue +5 -3
- package/dist/runtime/components/form/fields/2026-04-28/com.shwfed.form.field.switch/schema.d.ts +8 -2
- package/dist/runtime/components/form/fields/2026-04-28/com.shwfed.form.field.switch/schema.js +2 -2
- package/dist/runtime/components/form/fields/2026-04-29/com.shwfed.form.field.combobox.single/runtime.vue +4 -3
- package/dist/runtime/components/form/fields/2026-04-29/com.shwfed.form.field.combobox.single/schema.d.ts +8 -2
- package/dist/runtime/components/form/fields/2026-04-29/com.shwfed.form.field.combobox.single/schema.js +1 -1
- package/dist/runtime/components/form/fields/2026-05-12/com.shwfed.form.field.upload/runtime.vue +5 -3
- package/dist/runtime/components/form/fields/2026-05-12/com.shwfed.form.field.upload/schema.d.ts +8 -2
- package/dist/runtime/components/form/fields/2026-05-12/com.shwfed.form.field.upload/schema.js +1 -1
- package/dist/runtime/components/form/fields/2026-05-13/com.shwfed.form.field.combobox.single.remote/runtime.vue +4 -3
- package/dist/runtime/components/form/fields/2026-05-13/com.shwfed.form.field.combobox.single.remote/schema.d.ts +8 -2
- package/dist/runtime/components/form/fields/2026-05-13/com.shwfed.form.field.combobox.single.remote/schema.js +1 -1
- package/dist/runtime/components/form/fields/2026-05-13/com.shwfed.form.field.list/config.d.vue.ts +2 -2
- package/dist/runtime/components/form/fields/2026-05-13/com.shwfed.form.field.list/config.vue.d.ts +2 -2
- package/dist/runtime/components/form/fields/2026-05-13/com.shwfed.form.field.list/runtime.vue +5 -3
- package/dist/runtime/components/form/fields/2026-05-13/com.shwfed.form.field.list/schema.d.ts +9 -3
- package/dist/runtime/components/form/fields/2026-05-13/com.shwfed.form.field.list/schema.js +2 -2
- package/dist/runtime/components/form/fields/2026-05-17/com.shwfed.form.field.checkbox.group/runtime.vue +4 -3
- package/dist/runtime/components/form/fields/2026-05-17/com.shwfed.form.field.checkbox.group/schema.d.ts +8 -2
- package/dist/runtime/components/form/fields/2026-05-17/com.shwfed.form.field.checkbox.group/schema.js +1 -1
- package/dist/runtime/components/form/fields/2026-05-17/com.shwfed.form.field.radio.group/runtime.vue +4 -3
- package/dist/runtime/components/form/fields/2026-05-17/com.shwfed.form.field.radio.group/schema.d.ts +8 -2
- package/dist/runtime/components/form/fields/2026-05-17/com.shwfed.form.field.radio.group/schema.js +1 -1
- package/dist/runtime/components/form/fields/2026-05-18/com.shwfed.form.field.table/runtime.vue +5 -3
- package/dist/runtime/components/form/fields/2026-05-18/com.shwfed.form.field.table/schema.d.ts +8 -2
- package/dist/runtime/components/form/fields/2026-05-18/com.shwfed.form.field.table/schema.js +2 -1
- package/dist/runtime/components/form/fields/2026-05-23/com.shwfed.form.field.tree.multi/config.d.vue.ts +18 -18
- package/dist/runtime/components/form/fields/2026-05-23/com.shwfed.form.field.tree.multi/config.vue.d.ts +18 -18
- package/dist/runtime/components/form/fields/2026-05-23/com.shwfed.form.field.tree.multi/runtime.vue +4 -3
- package/dist/runtime/components/form/fields/2026-05-23/com.shwfed.form.field.tree.multi/schema.d.ts +8 -2
- package/dist/runtime/components/form/fields/2026-05-23/com.shwfed.form.field.tree.multi/schema.js +1 -1
- package/dist/runtime/components/form/fields/2026-05-24/com.shwfed.form.field.month/runtime.vue +5 -3
- package/dist/runtime/components/form/fields/2026-05-24/com.shwfed.form.field.month/schema.d.ts +8 -2
- package/dist/runtime/components/form/fields/2026-05-24/com.shwfed.form.field.month/schema.js +2 -2
- package/dist/runtime/components/form/fields/2026-05-24/com.shwfed.form.field.monthrange/config.d.vue.ts +6 -6
- package/dist/runtime/components/form/fields/2026-05-24/com.shwfed.form.field.monthrange/config.vue.d.ts +6 -6
- package/dist/runtime/components/form/fields/2026-05-24/com.shwfed.form.field.monthrange/runtime.vue +5 -3
- package/dist/runtime/components/form/fields/2026-05-24/com.shwfed.form.field.monthrange/schema.d.ts +8 -2
- package/dist/runtime/components/form/fields/2026-05-24/com.shwfed.form.field.monthrange/schema.js +2 -2
- package/dist/runtime/components/form/fields/2026-05-25/com.shwfed.form.field.combobox.multi/runtime.vue +4 -3
- package/dist/runtime/components/form/fields/2026-05-25/com.shwfed.form.field.combobox.multi/schema.d.ts +8 -2
- package/dist/runtime/components/form/fields/2026-05-25/com.shwfed.form.field.combobox.multi/schema.js +1 -1
- package/dist/runtime/components/form/fields/2026-05-26/com.shwfed.form.field.tree.combobox.multi/config.d.vue.ts +18 -18
- package/dist/runtime/components/form/fields/2026-05-26/com.shwfed.form.field.tree.combobox.multi/config.vue.d.ts +18 -18
- package/dist/runtime/components/form/fields/2026-05-26/com.shwfed.form.field.tree.combobox.multi/runtime.vue +4 -3
- package/dist/runtime/components/form/fields/2026-05-26/com.shwfed.form.field.tree.combobox.multi/schema.d.ts +8 -2
- package/dist/runtime/components/form/fields/2026-05-26/com.shwfed.form.field.tree.combobox.multi/schema.js +1 -1
- package/dist/runtime/components/form/fields/2026-05-26/com.shwfed.form.field.tree.combobox.single/config.d.vue.ts +18 -18
- package/dist/runtime/components/form/fields/2026-05-26/com.shwfed.form.field.tree.combobox.single/config.vue.d.ts +18 -18
- package/dist/runtime/components/form/fields/2026-05-26/com.shwfed.form.field.tree.combobox.single/runtime.vue +4 -3
- package/dist/runtime/components/form/fields/2026-05-26/com.shwfed.form.field.tree.combobox.single/schema.d.ts +8 -2
- package/dist/runtime/components/form/fields/2026-05-26/com.shwfed.form.field.tree.combobox.single/schema.js +1 -1
- package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.combobox.multi/runtime.vue +4 -3
- package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.combobox.multi/schema.d.ts +8 -2
- package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.combobox.multi/schema.js +1 -1
- package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.combobox.single/runtime.vue +4 -3
- package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.combobox.single/schema.d.ts +8 -2
- package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.combobox.single/schema.js +1 -1
- package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.combobox.multi/config.d.vue.ts +18 -18
- package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.combobox.multi/config.vue.d.ts +18 -18
- package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.combobox.multi/runtime.vue +4 -3
- package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.combobox.multi/schema.d.ts +8 -2
- package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.combobox.multi/schema.js +1 -1
- package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.combobox.single/config.d.vue.ts +18 -18
- package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.combobox.single/config.vue.d.ts +18 -18
- package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.combobox.single/runtime.vue +4 -3
- package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.combobox.single/schema.d.ts +8 -2
- package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.combobox.single/schema.js +1 -1
- package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.multi/config.d.vue.ts +18 -18
- package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.multi/config.vue.d.ts +18 -18
- package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.multi/runtime.vue +4 -3
- package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.multi/schema.d.ts +8 -2
- package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.multi/schema.js +1 -1
- package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.single/config.d.vue.ts +18 -18
- package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.single/config.vue.d.ts +18 -18
- package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.single/runtime.vue +4 -3
- package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.single/schema.d.ts +8 -2
- package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.single/schema.js +1 -1
- package/dist/runtime/components/form/fields/2026-06-09/com.shwfed.form.field.upload/runtime.vue +5 -3
- package/dist/runtime/components/form/fields/2026-06-09/com.shwfed.form.field.upload/schema.d.ts +8 -2
- package/dist/runtime/components/form/fields/2026-06-09/com.shwfed.form.field.upload/schema.js +1 -1
- package/dist/runtime/components/form/fields/2026-06-14/com.shwfed.form.field.combobox.multi/runtime.vue +5 -3
- package/dist/runtime/components/form/fields/2026-06-14/com.shwfed.form.field.combobox.multi/schema.d.ts +8 -2
- package/dist/runtime/components/form/fields/2026-06-14/com.shwfed.form.field.combobox.multi/schema.js +1 -1
- package/dist/runtime/components/form/fields/2026-06-14/com.shwfed.form.field.combobox.single/runtime.vue +4 -3
- package/dist/runtime/components/form/fields/2026-06-14/com.shwfed.form.field.combobox.single/schema.d.ts +8 -2
- package/dist/runtime/components/form/fields/2026-06-14/com.shwfed.form.field.combobox.single/schema.js +1 -1
- package/dist/runtime/components/sidebar/index.d.vue.ts +22 -3
- package/dist/runtime/components/sidebar/index.vue +66 -5
- package/dist/runtime/components/sidebar/index.vue.d.ts +22 -3
- package/dist/runtime/components/sidebar/node.d.vue.ts +1 -1
- package/dist/runtime/components/sidebar/node.vue +33 -13
- package/dist/runtime/components/sidebar/node.vue.d.ts +1 -1
- package/dist/runtime/components/sidebar/tree.vue +113 -83
- package/dist/runtime/components/sidebar/types.d.ts +8 -0
- package/dist/runtime/components/sidebar/types.js +1 -0
- package/dist/runtime/components/table/columns/2026-05-24/com.shwfed.table.column.combobox-single.remote.options-remote/config.d.vue.ts +2 -2
- package/dist/runtime/components/table/columns/2026-05-24/com.shwfed.table.column.combobox-single.remote.options-remote/config.vue.d.ts +2 -2
- package/dist/runtime/components/table/columns/2026-05-24/com.shwfed.table.column.combobox-single.remote.options-static/config.d.vue.ts +2 -2
- package/dist/runtime/components/table/columns/2026-05-24/com.shwfed.table.column.combobox-single.remote.options-static/config.vue.d.ts +2 -2
- package/dist/runtime/components/table/columns/2026-05-25/com.shwfed.table.column.combobox-multi.remote.options-remote/config.d.vue.ts +2 -2
- package/dist/runtime/components/table/columns/2026-05-25/com.shwfed.table.column.combobox-multi.remote.options-remote/config.vue.d.ts +2 -2
- package/dist/runtime/components/table/columns/2026-05-25/com.shwfed.table.column.combobox-multi.remote.options-static/config.d.vue.ts +2 -2
- package/dist/runtime/components/table/columns/2026-05-25/com.shwfed.table.column.combobox-multi.remote.options-static/config.vue.d.ts +2 -2
- package/dist/runtime/components/table/columns/2026-05-26/com.shwfed.table.column.combobox-multi.remote/config.d.vue.ts +2 -2
- package/dist/runtime/components/table/columns/2026-05-26/com.shwfed.table.column.combobox-multi.remote/config.vue.d.ts +2 -2
- package/dist/runtime/components/table/columns/2026-05-26/com.shwfed.table.column.combobox-single.remote/config.d.vue.ts +2 -2
- package/dist/runtime/components/table/columns/2026-05-26/com.shwfed.table.column.combobox-single.remote/config.vue.d.ts +2 -2
- package/dist/runtime/components/table/columns/2026-05-27/com.shwfed.table.column.tree-combobox-multi/config.d.vue.ts +2 -2
- package/dist/runtime/components/table/columns/2026-05-27/com.shwfed.table.column.tree-combobox-multi/config.vue.d.ts +2 -2
- package/dist/runtime/components/table/columns/2026-05-27/com.shwfed.table.column.tree-combobox-single/config.d.vue.ts +2 -2
- package/dist/runtime/components/table/columns/2026-05-27/com.shwfed.table.column.tree-combobox-single/config.vue.d.ts +2 -2
- package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.combobox-multi/config.d.vue.ts +2 -2
- package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.combobox-multi/config.vue.d.ts +2 -2
- package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.combobox-single/config.d.vue.ts +2 -2
- package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.combobox-single/config.vue.d.ts +2 -2
- package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.tree-combobox-multi/config.d.vue.ts +2 -2
- package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.tree-combobox-multi/config.vue.d.ts +2 -2
- package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.tree-combobox-single/config.d.vue.ts +2 -2
- package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.tree-combobox-single/config.vue.d.ts +2 -2
- package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.combobox-multi/config.d.vue.ts +2 -2
- package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.combobox-multi/config.vue +224 -133
- package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.combobox-multi/config.vue.d.ts +2 -2
- package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.combobox-single/config.d.vue.ts +2 -2
- package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.combobox-single/config.vue +224 -133
- package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.combobox-single/config.vue.d.ts +2 -2
- package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.tree-combobox-multi/config.d.vue.ts +2 -2
- package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.tree-combobox-multi/config.vue.d.ts +2 -2
- package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.tree-combobox-single/config.d.vue.ts +2 -2
- package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.tree-combobox-single/config.vue.d.ts +2 -2
- package/dist/runtime/components/table/customization.d.vue.ts +15 -0
- package/dist/runtime/components/table/customization.vue +633 -0
- package/dist/runtime/components/table/customization.vue.d.ts +15 -0
- package/dist/runtime/components/table/index.vue +69 -6
- package/dist/runtime/components/table/schema.d.ts +68 -68
- package/dist/runtime/components/table/utils/customization.d.ts +158 -0
- package/dist/runtime/components/table/utils/customization.js +315 -0
- package/dist/runtime/components/table/utils/row-reorder.d.ts +3 -2
- package/dist/runtime/components/table/utils/row-reorder.js +1 -12
- package/dist/runtime/components/tabs/index.d.vue.ts +9 -0
- package/dist/runtime/components/tabs/index.vue +92 -0
- package/dist/runtime/components/tabs/index.vue.d.ts +9 -0
- package/dist/runtime/components/tabs/tab.d.vue.ts +22 -0
- package/dist/runtime/components/tabs/tab.vue +85 -0
- package/dist/runtime/components/tabs/tab.vue.d.ts +22 -0
- package/dist/runtime/components/tabs/types.d.ts +19 -0
- package/dist/runtime/components/tabs/types.js +0 -0
- package/dist/runtime/components/tabs/use-reorder.d.ts +10 -0
- package/dist/runtime/components/tabs/use-reorder.js +90 -0
- package/dist/runtime/components/tabs/use-tabs.d.ts +46 -0
- package/dist/runtime/components/tabs/use-tabs.js +101 -0
- package/dist/runtime/components/ui/date-picker/DatePickerInput.d.vue.ts +1 -1
- package/dist/runtime/components/ui/date-picker/DatePickerInput.vue.d.ts +1 -1
- package/dist/runtime/components/ui/date-picker/DatePickerTimeInput.d.vue.ts +1 -1
- package/dist/runtime/components/ui/date-picker/DatePickerTimeInput.vue.d.ts +1 -1
- package/dist/runtime/components/ui/date-range-picker/DateRangePickerInput.d.vue.ts +1 -1
- package/dist/runtime/components/ui/date-range-picker/DateRangePickerInput.vue.d.ts +1 -1
- package/dist/runtime/components/ui/date-range-picker/DateRangePickerTimeInput.d.vue.ts +2 -2
- package/dist/runtime/components/ui/date-range-picker/DateRangePickerTimeInput.vue.d.ts +2 -2
- package/dist/runtime/components/ui/sidebar/SidebarMenuAction.vue +1 -1
- package/dist/runtime/components/ui/sidebar/index.js +2 -2
- package/dist/runtime/share/reorder.d.ts +2 -0
- package/dist/runtime/share/reorder.js +12 -0
- package/dist/runtime/utils/nav-registry.d.ts +19 -0
- package/dist/runtime/utils/nav-registry.js +14 -0
- package/dist/runtime/utils/page-title-registry.d.ts +3 -0
- package/dist/runtime/utils/page-title-registry.js +11 -0
- package/dist/runtime/vendor/cel-js/CLAUDE.md +6 -5
- package/dist/runtime/vendor/cel-js/PROMPT.md +97 -19
- package/dist/runtime/vendor/cel-js/lib/decimal.d.ts +4 -0
- package/dist/runtime/vendor/cel-js/lib/decimal.js +35 -0
- package/dist/runtime/vendor/cel-js/lib/evaluator.js +2 -0
- package/dist/runtime/vendor/cel-js/lib/functions.js +107 -134
- package/dist/runtime/vendor/cel-js/lib/macros.js +125 -16
- package/dist/runtime/vendor/cel-js/lib/math-builtins.d.ts +2 -0
- package/dist/runtime/vendor/cel-js/lib/math-builtins.js +39 -0
- package/dist/runtime/vendor/cel-js/lib/optional.d.ts +4 -0
- package/dist/runtime/vendor/cel-js/lib/optional.js +73 -21
- package/dist/runtime/vendor/cel-js/lib/parser.js +2 -6
- package/dist/runtime/vendor/cel-js/lib/registry.js +2 -2
- package/package.json +1 -1
|
@@ -0,0 +1,633 @@
|
|
|
1
|
+
<script setup>
|
|
2
|
+
import { Icon } from "@iconify/vue";
|
|
3
|
+
import { computed, ref } from "vue";
|
|
4
|
+
import { useI18n } from "vue-i18n";
|
|
5
|
+
import { getLocalizedText } from "../../share/locale";
|
|
6
|
+
import {
|
|
7
|
+
useTreeDnd
|
|
8
|
+
} from "../../composables/useTreeDnd";
|
|
9
|
+
import ResponsiveModal from "../modal.vue";
|
|
10
|
+
import {
|
|
11
|
+
AlertDialog,
|
|
12
|
+
AlertDialogAction,
|
|
13
|
+
AlertDialogCancel,
|
|
14
|
+
AlertDialogContent,
|
|
15
|
+
AlertDialogDescription,
|
|
16
|
+
AlertDialogFooter,
|
|
17
|
+
AlertDialogHeader,
|
|
18
|
+
AlertDialogTitle
|
|
19
|
+
} from "../ui/alert-dialog";
|
|
20
|
+
import { Button } from "../ui/button";
|
|
21
|
+
import { Separator } from "../ui/separator";
|
|
22
|
+
import { findColumn as findColumnEntry } from "./utils/resolve";
|
|
23
|
+
import { type as SELECT_COLUMN_TYPE } from "./columns/2026-04-14/com.shwfed.table.column.select/schema";
|
|
24
|
+
import { type as DRAG_HANDLE_COLUMN_TYPE } from "./columns/2026-05-21/com.shwfed.table.column.drag-handle/schema";
|
|
25
|
+
import {
|
|
26
|
+
applyRowDrop,
|
|
27
|
+
applyZoneDrop,
|
|
28
|
+
bandOf as bandOfBands,
|
|
29
|
+
bandOfGroup as bandOfGroupBands,
|
|
30
|
+
groupVisibleMembers as groupVisibleMembersBands,
|
|
31
|
+
weaveLockedColumns,
|
|
32
|
+
weldGroups
|
|
33
|
+
} from "./utils/customization";
|
|
34
|
+
defineOptions({ name: "ShwfedTableCustomization" });
|
|
35
|
+
const props = defineProps({
|
|
36
|
+
config: { type: Object, required: true },
|
|
37
|
+
tableApi: { type: Object, required: true }
|
|
38
|
+
});
|
|
39
|
+
const emit = defineEmits(["confirm", "reset"]);
|
|
40
|
+
const { t, locale } = useI18n({
|
|
41
|
+
inheritLocale: true,
|
|
42
|
+
messages: {
|
|
43
|
+
zh: {
|
|
44
|
+
"trigger": "\u81EA\u5B9A\u4E49\u8868\u683C",
|
|
45
|
+
"title": "\u8868\u683C\u8BBE\u7F6E",
|
|
46
|
+
"visible-pane": "\u663E\u793A\u5217",
|
|
47
|
+
"hidden-pane": "\u9690\u85CF\u5217",
|
|
48
|
+
"pinned-left": "\u56FA\u5B9A\u5728\u5DE6\u4FA7",
|
|
49
|
+
"pinned-right": "\u56FA\u5B9A\u5728\u53F3\u4FA7",
|
|
50
|
+
"pin-left-zone": "\u56FA\u5B9A\u5230\u5DE6\u4FA7",
|
|
51
|
+
"pin-right-zone": "\u56FA\u5B9A\u5230\u53F3\u4FA7",
|
|
52
|
+
"hide-hint": "\u62D6\u62FD\u5230\u6B64\u5904\u9690\u85CF",
|
|
53
|
+
"group-fallback": "\u5217\u5206\u7EC4",
|
|
54
|
+
"reset": "\u6062\u590D\u9ED8\u8BA4",
|
|
55
|
+
"reset-confirm-title": "\u6062\u590D\u9ED8\u8BA4\u8BBE\u7F6E\uFF1F",
|
|
56
|
+
"reset-confirm-body": "\u5C06\u653E\u5F03\u4F60\u5BF9\u672C\u8868\u683C\u7684\u6240\u6709\u81EA\u5B9A\u4E49\uFF08\u5217\u7684\u663E\u793A\u3001\u987A\u5E8F\u4E0E\u56FA\u5B9A\uFF09\uFF0C\u6062\u590D\u4E3A\u9ED8\u8BA4\u8BBE\u7F6E\u3002",
|
|
57
|
+
"cancel": "\u53D6\u6D88",
|
|
58
|
+
"confirm": "\u786E\u8BA4"
|
|
59
|
+
},
|
|
60
|
+
en: {
|
|
61
|
+
"trigger": "Customize table",
|
|
62
|
+
"title": "Table settings",
|
|
63
|
+
"visible-pane": "Visible columns",
|
|
64
|
+
"hidden-pane": "Hidden columns",
|
|
65
|
+
"pinned-left": "Pinned left",
|
|
66
|
+
"pinned-right": "Pinned right",
|
|
67
|
+
"pin-left-zone": "Pin to left",
|
|
68
|
+
"pin-right-zone": "Pin to right",
|
|
69
|
+
"hide-hint": "Drag here to hide",
|
|
70
|
+
"group-fallback": "Group",
|
|
71
|
+
"reset": "Reset to default",
|
|
72
|
+
"reset-confirm-title": "Reset to default?",
|
|
73
|
+
"reset-confirm-body": "This discards all your customizations to this table (column visibility, order, and pinning) and restores the default settings.",
|
|
74
|
+
"cancel": "Cancel",
|
|
75
|
+
"confirm": "Confirm"
|
|
76
|
+
},
|
|
77
|
+
ja: {
|
|
78
|
+
"trigger": "\u30C6\u30FC\u30D6\u30EB\u3092\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA",
|
|
79
|
+
"title": "\u30C6\u30FC\u30D6\u30EB\u8A2D\u5B9A",
|
|
80
|
+
"visible-pane": "\u8868\u793A\u4E2D\u306E\u5217",
|
|
81
|
+
"hidden-pane": "\u975E\u8868\u793A\u306E\u5217",
|
|
82
|
+
"pinned-left": "\u5DE6\u306B\u56FA\u5B9A\u4E2D",
|
|
83
|
+
"pinned-right": "\u53F3\u306B\u56FA\u5B9A\u4E2D",
|
|
84
|
+
"pin-left-zone": "\u5DE6\u306B\u56FA\u5B9A",
|
|
85
|
+
"pin-right-zone": "\u53F3\u306B\u56FA\u5B9A",
|
|
86
|
+
"hide-hint": "\u3053\u3053\u306B\u30C9\u30E9\u30C3\u30B0\u3057\u3066\u975E\u8868\u793A",
|
|
87
|
+
"group-fallback": "\u30B0\u30EB\u30FC\u30D7",
|
|
88
|
+
"reset": "\u30C7\u30D5\u30A9\u30EB\u30C8\u306B\u623B\u3059",
|
|
89
|
+
"reset-confirm-title": "\u30C7\u30D5\u30A9\u30EB\u30C8\u306B\u623B\u3057\u307E\u3059\u304B\uFF1F",
|
|
90
|
+
"reset-confirm-body": "\u3053\u306E\u30C6\u30FC\u30D6\u30EB\u306E\u3059\u3079\u3066\u306E\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA\uFF08\u5217\u306E\u8868\u793A\u30FB\u9806\u5E8F\u30FB\u56FA\u5B9A\uFF09\u3092\u7834\u68C4\u3057\u3001\u30C7\u30D5\u30A9\u30EB\u30C8\u8A2D\u5B9A\u306B\u623B\u3057\u307E\u3059\u3002",
|
|
91
|
+
"cancel": "\u30AD\u30E3\u30F3\u30BB\u30EB",
|
|
92
|
+
"confirm": "\u78BA\u8A8D"
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
});
|
|
96
|
+
const LOCKED_TYPES = /* @__PURE__ */ new Set([SELECT_COLUMN_TYPE, DRAG_HANDLE_COLUMN_TYPE]);
|
|
97
|
+
const columnById = computed(() => new Map(props.config.columns.map((c) => [c.id, c])));
|
|
98
|
+
const lockedIds = computed(() => new Set(
|
|
99
|
+
props.config.columns.filter((c) => LOCKED_TYPES.has(c.type)).map((c) => c.id)
|
|
100
|
+
));
|
|
101
|
+
function columnTypeLabel(id) {
|
|
102
|
+
const column = columnById.value.get(id);
|
|
103
|
+
if (!column) return "";
|
|
104
|
+
return findColumnEntry(column.type, column.compatibilityDate)?.metadata.name ?? column.type;
|
|
105
|
+
}
|
|
106
|
+
function columnLabel(id) {
|
|
107
|
+
const column = columnById.value.get(id);
|
|
108
|
+
const title = column ? getLocalizedText(column.title, locale.value) : void 0;
|
|
109
|
+
return title && title.length > 0 ? title : columnTypeLabel(id);
|
|
110
|
+
}
|
|
111
|
+
const groupById = computed(() => new Map(props.config.groups.map((g) => [g.id, g])));
|
|
112
|
+
function memberGroupId(id) {
|
|
113
|
+
const gid = columnById.value.get(id)?.groupId;
|
|
114
|
+
return gid && groupById.value.has(gid) ? gid : void 0;
|
|
115
|
+
}
|
|
116
|
+
function groupLabel(groupId) {
|
|
117
|
+
const title = getLocalizedText(
|
|
118
|
+
groupById.value.get(groupId)?.title,
|
|
119
|
+
locale.value
|
|
120
|
+
);
|
|
121
|
+
return title && title.length > 0 ? title : t("group-fallback");
|
|
122
|
+
}
|
|
123
|
+
function currentLeafOrder() {
|
|
124
|
+
const liveIds = props.config.columns.map((c) => c.id);
|
|
125
|
+
const liveSet = new Set(liveIds);
|
|
126
|
+
const ordered = props.tableApi.getState().columnOrder.filter((id) => liveSet.has(id));
|
|
127
|
+
const mentioned = new Set(ordered);
|
|
128
|
+
return [...ordered, ...liveIds.filter((id) => !mentioned.has(id))];
|
|
129
|
+
}
|
|
130
|
+
const open = ref(false);
|
|
131
|
+
const confirmResetOpen = ref(false);
|
|
132
|
+
const draft = ref({ left: [], main: [], right: [], hidden: [] });
|
|
133
|
+
function buildDraft() {
|
|
134
|
+
const state = props.tableApi.getState();
|
|
135
|
+
const customizable = currentLeafOrder().filter((id) => columnById.value.has(id) && !lockedIds.value.has(id));
|
|
136
|
+
const pinnedLeft = new Set(state.columnPinning.left ?? []);
|
|
137
|
+
const pinnedRight = new Set(state.columnPinning.right ?? []);
|
|
138
|
+
const next = { left: [], main: [], right: [], hidden: [] };
|
|
139
|
+
for (const id of customizable) {
|
|
140
|
+
if (state.columnVisibility[id] === false) next.hidden.push(id);
|
|
141
|
+
else if (pinnedLeft.has(id)) next.left.push(id);
|
|
142
|
+
else if (pinnedRight.has(id)) next.right.push(id);
|
|
143
|
+
else next.main.push(id);
|
|
144
|
+
}
|
|
145
|
+
draft.value = weldGroups(next, groupOf);
|
|
146
|
+
}
|
|
147
|
+
function onOpenChange(next) {
|
|
148
|
+
if (next) buildDraft();
|
|
149
|
+
open.value = next;
|
|
150
|
+
}
|
|
151
|
+
const groupOf = memberGroupId;
|
|
152
|
+
const bandOf = (id) => bandOfBands(draft.value, id);
|
|
153
|
+
const bandOfGroup = (groupId) => bandOfGroupBands(draft.value, groupOf, groupId);
|
|
154
|
+
const groupVisibleMembers = (groupId) => groupVisibleMembersBands(draft.value, groupOf, groupId);
|
|
155
|
+
const COLUMN_KIND = "table-customization-column";
|
|
156
|
+
const GROUP_KIND = "table-customization-group";
|
|
157
|
+
const ZONE_PIN_LEFT = "pin-left-zone";
|
|
158
|
+
const ZONE_PIN_RIGHT = "pin-right-zone";
|
|
159
|
+
const ZONE_MAIN = "main-zone";
|
|
160
|
+
const ZONE_HIDDEN = "hidden-zone";
|
|
161
|
+
function onRowDrop(e) {
|
|
162
|
+
const { source, target, instruction } = e;
|
|
163
|
+
if (instruction !== "reorder-above" && instruction !== "reorder-below") return;
|
|
164
|
+
draft.value = weldGroups(applyRowDrop(draft.value, groupOf, {
|
|
165
|
+
sourceKind: source.kind === GROUP_KIND ? "group" : "column",
|
|
166
|
+
sourceId: source.id,
|
|
167
|
+
sourceGroupId: typeof source.data.groupId === "string" ? source.data.groupId : void 0,
|
|
168
|
+
targetKind: target.kind === GROUP_KIND ? "group" : "column",
|
|
169
|
+
targetId: target.id,
|
|
170
|
+
before: instruction === "reorder-above"
|
|
171
|
+
}), groupOf);
|
|
172
|
+
}
|
|
173
|
+
function onZoneDrop(e) {
|
|
174
|
+
const band = e.zoneId === ZONE_PIN_LEFT ? "left" : e.zoneId === ZONE_PIN_RIGHT ? "right" : e.zoneId === ZONE_MAIN ? "main" : e.zoneId === ZONE_HIDDEN ? "hidden" : void 0;
|
|
175
|
+
if (!band) return;
|
|
176
|
+
draft.value = weldGroups(applyZoneDrop(draft.value, groupOf, {
|
|
177
|
+
sourceKind: e.source.kind === GROUP_KIND ? "group" : "column",
|
|
178
|
+
sourceId: e.source.id,
|
|
179
|
+
band
|
|
180
|
+
}), groupOf);
|
|
181
|
+
}
|
|
182
|
+
const dnd = useTreeDnd({ onRowDrop, onZoneDrop });
|
|
183
|
+
const pickDragHandle = (el) => el.querySelector(".drag-handle");
|
|
184
|
+
const STRUCTURAL_BLOCK = ["make-child", "reparent"];
|
|
185
|
+
function groupRowConfig(groupId) {
|
|
186
|
+
return {
|
|
187
|
+
kind: GROUP_KIND,
|
|
188
|
+
data: { band: bandOfGroup(groupId) },
|
|
189
|
+
canDrop: (src) => {
|
|
190
|
+
if (src.kind === GROUP_KIND) return src.id !== groupId;
|
|
191
|
+
return src.kind === COLUMN_KIND && !src.data.groupId;
|
|
192
|
+
},
|
|
193
|
+
blockInstructions: (src) => {
|
|
194
|
+
const block = [...STRUCTURAL_BLOCK];
|
|
195
|
+
if (src.kind === GROUP_KIND && src.id === groupId) {
|
|
196
|
+
block.push("reorder-above", "reorder-below");
|
|
197
|
+
}
|
|
198
|
+
return block;
|
|
199
|
+
},
|
|
200
|
+
dragHandle: pickDragHandle
|
|
201
|
+
};
|
|
202
|
+
}
|
|
203
|
+
function memberRowConfig(columnId, groupId) {
|
|
204
|
+
return {
|
|
205
|
+
kind: COLUMN_KIND,
|
|
206
|
+
data: { groupId, band: bandOf(columnId) },
|
|
207
|
+
// Members only accept SIBLINGS of the same group — this is what confines a
|
|
208
|
+
// member's drag to intra-group reorder (and un-hide back into the run).
|
|
209
|
+
canDrop: (src) => src.kind === COLUMN_KIND && src.data.groupId === groupId && src.id !== columnId,
|
|
210
|
+
blockInstructions: (src) => {
|
|
211
|
+
const block = [...STRUCTURAL_BLOCK];
|
|
212
|
+
if (src.id === columnId) block.push("reorder-above", "reorder-below");
|
|
213
|
+
return block;
|
|
214
|
+
},
|
|
215
|
+
dragHandle: pickDragHandle
|
|
216
|
+
};
|
|
217
|
+
}
|
|
218
|
+
function standaloneRowConfig(columnId) {
|
|
219
|
+
return {
|
|
220
|
+
kind: COLUMN_KIND,
|
|
221
|
+
data: { groupId: void 0, band: bandOf(columnId) },
|
|
222
|
+
canDrop: (src) => {
|
|
223
|
+
if (src.kind === GROUP_KIND) return true;
|
|
224
|
+
return src.kind === COLUMN_KIND && !src.data.groupId && src.id !== columnId;
|
|
225
|
+
},
|
|
226
|
+
blockInstructions: (src) => {
|
|
227
|
+
const block = [...STRUCTURAL_BLOCK];
|
|
228
|
+
if (src.id === columnId) block.push("reorder-above", "reorder-below");
|
|
229
|
+
return block;
|
|
230
|
+
},
|
|
231
|
+
dragHandle: pickDragHandle
|
|
232
|
+
};
|
|
233
|
+
}
|
|
234
|
+
function hiddenRowConfig(columnId) {
|
|
235
|
+
return {
|
|
236
|
+
kind: COLUMN_KIND,
|
|
237
|
+
data: { groupId: memberGroupId(columnId), band: "hidden" },
|
|
238
|
+
canDrop: () => false,
|
|
239
|
+
dragHandle: pickDragHandle
|
|
240
|
+
};
|
|
241
|
+
}
|
|
242
|
+
function hiddenGroupRowConfig() {
|
|
243
|
+
return {
|
|
244
|
+
kind: GROUP_KIND,
|
|
245
|
+
data: { band: "hidden" },
|
|
246
|
+
canDrop: () => false,
|
|
247
|
+
dragHandle: pickDragHandle
|
|
248
|
+
};
|
|
249
|
+
}
|
|
250
|
+
function pinZoneConfig(side) {
|
|
251
|
+
return {
|
|
252
|
+
canDrop: (src) => {
|
|
253
|
+
if (src.kind === GROUP_KIND) return bandOfGroup(src.id) !== side;
|
|
254
|
+
const gid = typeof src.data.groupId === "string" ? src.data.groupId : void 0;
|
|
255
|
+
if (gid) return bandOf(src.id) === "hidden" && bandOfGroup(gid) === void 0;
|
|
256
|
+
return bandOf(src.id) !== side;
|
|
257
|
+
}
|
|
258
|
+
};
|
|
259
|
+
}
|
|
260
|
+
function mainZoneConfig() {
|
|
261
|
+
return {
|
|
262
|
+
canDrop: (src) => {
|
|
263
|
+
if (src.kind === GROUP_KIND) return bandOfGroup(src.id) !== "main";
|
|
264
|
+
const gid = typeof src.data.groupId === "string" ? src.data.groupId : void 0;
|
|
265
|
+
if (gid) return bandOf(src.id) === "hidden" && bandOfGroup(gid) === void 0;
|
|
266
|
+
return true;
|
|
267
|
+
}
|
|
268
|
+
};
|
|
269
|
+
}
|
|
270
|
+
function hiddenZoneConfig() {
|
|
271
|
+
return {
|
|
272
|
+
canDrop: (src) => src.kind === GROUP_KIND ? groupVisibleMembers(src.id).length > 0 : bandOf(src.id) !== "hidden"
|
|
273
|
+
};
|
|
274
|
+
}
|
|
275
|
+
function bandEntries(band) {
|
|
276
|
+
const out = [];
|
|
277
|
+
let lastGid;
|
|
278
|
+
for (const id of draft.value[band]) {
|
|
279
|
+
const gid = memberGroupId(id);
|
|
280
|
+
if (gid) {
|
|
281
|
+
if (gid !== lastGid) out.push({ kind: "group", key: `g-${band}-${gid}`, groupId: gid });
|
|
282
|
+
out.push({ kind: "member", key: `c-${id}`, columnId: id, groupId: gid });
|
|
283
|
+
} else {
|
|
284
|
+
out.push({ kind: "column", key: `c-${id}`, columnId: id });
|
|
285
|
+
}
|
|
286
|
+
lastGid = gid;
|
|
287
|
+
}
|
|
288
|
+
return out;
|
|
289
|
+
}
|
|
290
|
+
const visibleEntries = computed(() => {
|
|
291
|
+
const left = bandEntries("left");
|
|
292
|
+
const main = bandEntries("main");
|
|
293
|
+
const right = bandEntries("right");
|
|
294
|
+
const out = [];
|
|
295
|
+
if (left.length > 0) {
|
|
296
|
+
out.push({ kind: "caption", key: "cap-left", text: t("pinned-left") });
|
|
297
|
+
out.push(...left);
|
|
298
|
+
}
|
|
299
|
+
if (left.length > 0 && (main.length > 0 || right.length > 0)) {
|
|
300
|
+
out.push({ kind: "separator", key: "sep-left" });
|
|
301
|
+
}
|
|
302
|
+
out.push(...main);
|
|
303
|
+
if (right.length > 0) {
|
|
304
|
+
if (left.length > 0 || main.length > 0) {
|
|
305
|
+
out.push({ kind: "separator", key: "sep-right" });
|
|
306
|
+
}
|
|
307
|
+
out.push({ kind: "caption", key: "cap-right", text: t("pinned-right") });
|
|
308
|
+
out.push(...right);
|
|
309
|
+
}
|
|
310
|
+
return out;
|
|
311
|
+
});
|
|
312
|
+
const hiddenEntries = computed(() => {
|
|
313
|
+
const out = [];
|
|
314
|
+
let lastGid;
|
|
315
|
+
for (const id of draft.value.hidden) {
|
|
316
|
+
const gid = memberGroupId(id);
|
|
317
|
+
if (gid && bandOfGroup(gid) === void 0) {
|
|
318
|
+
if (gid !== lastGid) out.push({ kind: "group", key: `hg-${gid}`, groupId: gid });
|
|
319
|
+
out.push({ kind: "member", key: `c-${id}`, columnId: id, groupId: gid });
|
|
320
|
+
lastGid = gid;
|
|
321
|
+
} else {
|
|
322
|
+
out.push({ kind: "column", key: `c-${id}`, columnId: id });
|
|
323
|
+
lastGid = void 0;
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
return out;
|
|
327
|
+
});
|
|
328
|
+
function onConfirm(close) {
|
|
329
|
+
const state = props.tableApi.getState();
|
|
330
|
+
const columnVisibility = {};
|
|
331
|
+
for (const band of ["left", "main", "right"]) {
|
|
332
|
+
for (const id of draft.value[band]) columnVisibility[id] = true;
|
|
333
|
+
}
|
|
334
|
+
for (const id of draft.value.hidden) columnVisibility[id] = false;
|
|
335
|
+
const columnOrder = weaveLockedColumns(
|
|
336
|
+
currentLeafOrder(),
|
|
337
|
+
lockedIds.value,
|
|
338
|
+
[...draft.value.left, ...draft.value.main, ...draft.value.right, ...draft.value.hidden]
|
|
339
|
+
);
|
|
340
|
+
const left = state.columnPinning.left?.filter((id) => lockedIds.value.has(id)) ?? [];
|
|
341
|
+
const right = state.columnPinning.right?.filter((id) => lockedIds.value.has(id)) ?? [];
|
|
342
|
+
left.push(...draft.value.left);
|
|
343
|
+
right.push(...draft.value.right);
|
|
344
|
+
emit("confirm", { columnVisibility, columnOrder, columnPinning: { left, right } });
|
|
345
|
+
close();
|
|
346
|
+
}
|
|
347
|
+
function onResetConfirmed(close) {
|
|
348
|
+
confirmResetOpen.value = false;
|
|
349
|
+
emit("reset");
|
|
350
|
+
close();
|
|
351
|
+
}
|
|
352
|
+
</script>
|
|
353
|
+
|
|
354
|
+
<template>
|
|
355
|
+
<ResponsiveModal
|
|
356
|
+
:open="open"
|
|
357
|
+
content-width="40rem"
|
|
358
|
+
@update:open="onOpenChange"
|
|
359
|
+
>
|
|
360
|
+
<template #trigger>
|
|
361
|
+
<button
|
|
362
|
+
type="button"
|
|
363
|
+
:aria-label="t('trigger')"
|
|
364
|
+
:title="t('trigger')"
|
|
365
|
+
:class="[
|
|
366
|
+
'absolute right-0.5 top-1 z-20 flex size-6 items-center justify-center rounded',
|
|
367
|
+
'text-zinc-600 opacity-30 hover:opacity-60 transition-opacity duration-180 cursor-pointer'
|
|
368
|
+
]"
|
|
369
|
+
>
|
|
370
|
+
<Icon
|
|
371
|
+
icon="fluent:table-settings-20-regular"
|
|
372
|
+
class="size-4"
|
|
373
|
+
/>
|
|
374
|
+
</button>
|
|
375
|
+
</template>
|
|
376
|
+
|
|
377
|
+
<template #title>
|
|
378
|
+
{{ t("title") }}
|
|
379
|
+
</template>
|
|
380
|
+
|
|
381
|
+
<div class="grid grid-cols-2 gap-4 text-sm">
|
|
382
|
+
<!-- Visible columns, banded by pin side -->
|
|
383
|
+
<section
|
|
384
|
+
class="flex min-h-48 flex-col gap-0.5"
|
|
385
|
+
data-slot="table-customization-visible"
|
|
386
|
+
>
|
|
387
|
+
<h4 class="pb-1 text-xs font-medium text-zinc-500">
|
|
388
|
+
{{ t("visible-pane") }}
|
|
389
|
+
</h4>
|
|
390
|
+
|
|
391
|
+
<div
|
|
392
|
+
v-if="draft.left.length === 0"
|
|
393
|
+
:ref="dnd.zoneRef(ZONE_PIN_LEFT, pinZoneConfig('left'))"
|
|
394
|
+
class="pin-zone"
|
|
395
|
+
:data-active="dnd.isZoneActive(ZONE_PIN_LEFT) ? 'true' : void 0"
|
|
396
|
+
>
|
|
397
|
+
<Icon
|
|
398
|
+
icon="fluent:pin-20-regular"
|
|
399
|
+
class="size-3.5"
|
|
400
|
+
/>
|
|
401
|
+
<span>{{ t("pin-left-zone") }}</span>
|
|
402
|
+
</div>
|
|
403
|
+
|
|
404
|
+
<template
|
|
405
|
+
v-for="entry in visibleEntries"
|
|
406
|
+
:key="entry.key"
|
|
407
|
+
>
|
|
408
|
+
<p
|
|
409
|
+
v-if="entry.kind === 'caption'"
|
|
410
|
+
class="band-caption"
|
|
411
|
+
>
|
|
412
|
+
{{ entry.text }}
|
|
413
|
+
</p>
|
|
414
|
+
|
|
415
|
+
<Separator
|
|
416
|
+
v-else-if="entry.kind === 'separator'"
|
|
417
|
+
class="my-1"
|
|
418
|
+
/>
|
|
419
|
+
|
|
420
|
+
<!-- Group header: the drag handle moves / pins the whole block. -->
|
|
421
|
+
<div
|
|
422
|
+
v-else-if="entry.kind === 'group'"
|
|
423
|
+
:ref="dnd.rowRef(entry.groupId, groupRowConfig(entry.groupId))"
|
|
424
|
+
class="row group-row"
|
|
425
|
+
data-slot="table-customization-group"
|
|
426
|
+
:data-instruction="dnd.instructionFor(entry.groupId) ?? void 0"
|
|
427
|
+
>
|
|
428
|
+
<Icon
|
|
429
|
+
icon="fluent:re-order-dots-vertical-20-filled"
|
|
430
|
+
class="drag-handle size-4 shrink-0 cursor-grab text-zinc-300"
|
|
431
|
+
/>
|
|
432
|
+
<Icon
|
|
433
|
+
icon="fluent:folder-20-regular"
|
|
434
|
+
class="size-4 shrink-0 text-zinc-400"
|
|
435
|
+
/>
|
|
436
|
+
<span class="flex-1 truncate">{{ groupLabel(entry.groupId) }}</span>
|
|
437
|
+
</div>
|
|
438
|
+
|
|
439
|
+
<!-- Grouped member: reorders among siblings or drags to hidden. -->
|
|
440
|
+
<div
|
|
441
|
+
v-else-if="entry.kind === 'member'"
|
|
442
|
+
:ref="dnd.rowRef(entry.columnId, memberRowConfig(entry.columnId, entry.groupId))"
|
|
443
|
+
class="row member-row"
|
|
444
|
+
data-slot="table-customization-column"
|
|
445
|
+
:data-instruction="dnd.instructionFor(entry.columnId) ?? void 0"
|
|
446
|
+
>
|
|
447
|
+
<Icon
|
|
448
|
+
icon="fluent:re-order-dots-vertical-20-filled"
|
|
449
|
+
class="drag-handle size-4 shrink-0 cursor-grab text-zinc-300"
|
|
450
|
+
/>
|
|
451
|
+
<span class="flex-1 truncate">{{ columnLabel(entry.columnId) }}</span>
|
|
452
|
+
</div>
|
|
453
|
+
|
|
454
|
+
<!-- Ungrouped column. -->
|
|
455
|
+
<div
|
|
456
|
+
v-else
|
|
457
|
+
:ref="dnd.rowRef(entry.columnId, standaloneRowConfig(entry.columnId))"
|
|
458
|
+
class="row"
|
|
459
|
+
data-slot="table-customization-column"
|
|
460
|
+
:data-instruction="dnd.instructionFor(entry.columnId) ?? void 0"
|
|
461
|
+
>
|
|
462
|
+
<Icon
|
|
463
|
+
icon="fluent:re-order-dots-vertical-20-filled"
|
|
464
|
+
class="drag-handle size-4 shrink-0 cursor-grab text-zinc-300"
|
|
465
|
+
/>
|
|
466
|
+
<span class="flex-1 truncate">{{ columnLabel(entry.columnId) }}</span>
|
|
467
|
+
</div>
|
|
468
|
+
</template>
|
|
469
|
+
|
|
470
|
+
<div
|
|
471
|
+
v-if="draft.right.length === 0"
|
|
472
|
+
:ref="dnd.zoneRef(ZONE_PIN_RIGHT, pinZoneConfig('right'))"
|
|
473
|
+
class="pin-zone"
|
|
474
|
+
:data-active="dnd.isZoneActive(ZONE_PIN_RIGHT) ? 'true' : void 0"
|
|
475
|
+
>
|
|
476
|
+
<Icon
|
|
477
|
+
icon="fluent:pin-20-regular"
|
|
478
|
+
class="size-3.5"
|
|
479
|
+
/>
|
|
480
|
+
<span>{{ t("pin-right-zone") }}</span>
|
|
481
|
+
</div>
|
|
482
|
+
|
|
483
|
+
<!-- Empty-space catcher: dropping here appends to the main band. -->
|
|
484
|
+
<div
|
|
485
|
+
:ref="dnd.zoneRef(ZONE_MAIN, mainZoneConfig())"
|
|
486
|
+
class="filler-zone"
|
|
487
|
+
:data-active="dnd.isZoneActive(ZONE_MAIN) ? 'true' : void 0"
|
|
488
|
+
/>
|
|
489
|
+
</section>
|
|
490
|
+
|
|
491
|
+
<!-- Hidden columns — separated from the visible pane by a hairline rule
|
|
492
|
+
rather than a boxed border, so the two lists read as one surface. -->
|
|
493
|
+
<section
|
|
494
|
+
class="flex min-h-48 flex-col gap-0.5 border-l border-zinc-100 pl-4"
|
|
495
|
+
data-slot="table-customization-hidden"
|
|
496
|
+
>
|
|
497
|
+
<h4 class="pb-1 text-xs font-medium text-zinc-500">
|
|
498
|
+
{{ t("hidden-pane") }}
|
|
499
|
+
</h4>
|
|
500
|
+
|
|
501
|
+
<template
|
|
502
|
+
v-for="entry in hiddenEntries"
|
|
503
|
+
:key="entry.key"
|
|
504
|
+
>
|
|
505
|
+
<!-- Fully-hidden group: its folder header drags the whole group
|
|
506
|
+
back to a visible band. -->
|
|
507
|
+
<div
|
|
508
|
+
v-if="entry.kind === 'group'"
|
|
509
|
+
:ref="dnd.rowRef(entry.groupId, hiddenGroupRowConfig())"
|
|
510
|
+
class="row group-row text-zinc-400"
|
|
511
|
+
data-slot="table-customization-group"
|
|
512
|
+
>
|
|
513
|
+
<Icon
|
|
514
|
+
icon="fluent:re-order-dots-vertical-20-filled"
|
|
515
|
+
class="drag-handle size-4 shrink-0 cursor-grab text-zinc-300"
|
|
516
|
+
/>
|
|
517
|
+
<Icon
|
|
518
|
+
icon="fluent:folder-20-regular"
|
|
519
|
+
class="size-4 shrink-0 text-zinc-400"
|
|
520
|
+
/>
|
|
521
|
+
<span class="flex-1 truncate">{{ groupLabel(entry.groupId) }}</span>
|
|
522
|
+
</div>
|
|
523
|
+
|
|
524
|
+
<!-- Member of a fully-hidden group: still individually revivable. -->
|
|
525
|
+
<div
|
|
526
|
+
v-else-if="entry.kind === 'member'"
|
|
527
|
+
:ref="dnd.rowRef(entry.columnId, hiddenRowConfig(entry.columnId))"
|
|
528
|
+
class="row member-row text-zinc-400"
|
|
529
|
+
data-slot="table-customization-column"
|
|
530
|
+
>
|
|
531
|
+
<Icon
|
|
532
|
+
icon="fluent:re-order-dots-vertical-20-filled"
|
|
533
|
+
class="drag-handle size-4 shrink-0 cursor-grab text-zinc-300"
|
|
534
|
+
/>
|
|
535
|
+
<span class="flex-1 truncate">{{ columnLabel(entry.columnId) }}</span>
|
|
536
|
+
</div>
|
|
537
|
+
|
|
538
|
+
<!-- Standalone hidden column (or a member whose group is still
|
|
539
|
+
partly visible). -->
|
|
540
|
+
<div
|
|
541
|
+
v-else-if="entry.kind === 'column'"
|
|
542
|
+
:ref="dnd.rowRef(entry.columnId, hiddenRowConfig(entry.columnId))"
|
|
543
|
+
class="row text-zinc-400"
|
|
544
|
+
data-slot="table-customization-column"
|
|
545
|
+
>
|
|
546
|
+
<Icon
|
|
547
|
+
icon="fluent:re-order-dots-vertical-20-filled"
|
|
548
|
+
class="drag-handle size-4 shrink-0 cursor-grab text-zinc-300"
|
|
549
|
+
/>
|
|
550
|
+
<span class="flex-1 truncate">{{ columnLabel(entry.columnId) }}</span>
|
|
551
|
+
</div>
|
|
552
|
+
</template>
|
|
553
|
+
|
|
554
|
+
<!-- Empty-space catcher: dropping here hides the column (or, for a
|
|
555
|
+
group header, its whole member run). -->
|
|
556
|
+
<div
|
|
557
|
+
:ref="dnd.zoneRef(ZONE_HIDDEN, hiddenZoneConfig())"
|
|
558
|
+
class="filler-zone flex items-center justify-center text-xs text-zinc-300"
|
|
559
|
+
:data-active="dnd.isZoneActive(ZONE_HIDDEN) ? 'true' : void 0"
|
|
560
|
+
>
|
|
561
|
+
<span v-if="draft.hidden.length === 0">{{ t("hide-hint") }}</span>
|
|
562
|
+
</div>
|
|
563
|
+
</section>
|
|
564
|
+
</div>
|
|
565
|
+
|
|
566
|
+
<template #footer="{ close }">
|
|
567
|
+
<div class="flex w-full items-center gap-2">
|
|
568
|
+
<Button
|
|
569
|
+
variant="ghost"
|
|
570
|
+
size="sm"
|
|
571
|
+
class="mr-auto text-zinc-500"
|
|
572
|
+
data-slot="table-customization-reset"
|
|
573
|
+
@click="confirmResetOpen = true"
|
|
574
|
+
>
|
|
575
|
+
<Icon icon="fluent:arrow-reset-20-regular" />
|
|
576
|
+
{{ t("reset") }}
|
|
577
|
+
</Button>
|
|
578
|
+
<Button
|
|
579
|
+
size="sm"
|
|
580
|
+
@click="close()"
|
|
581
|
+
>
|
|
582
|
+
<Icon icon="fluent:dismiss-20-regular" />
|
|
583
|
+
{{ t("cancel") }}
|
|
584
|
+
</Button>
|
|
585
|
+
<Button
|
|
586
|
+
variant="primary"
|
|
587
|
+
size="sm"
|
|
588
|
+
data-slot="table-customization-confirm"
|
|
589
|
+
@click="onConfirm(close)"
|
|
590
|
+
>
|
|
591
|
+
<Icon icon="fluent:checkmark-20-regular" />
|
|
592
|
+
{{ t("confirm") }}
|
|
593
|
+
</Button>
|
|
594
|
+
|
|
595
|
+
<!-- 恢复默认 is a wipe of the user's arrangement, so confirm first. On
|
|
596
|
+
confirm we reset AND close the whole modal (see `onResetConfirmed`). -->
|
|
597
|
+
<AlertDialog
|
|
598
|
+
:open="confirmResetOpen"
|
|
599
|
+
@update:open="(o) => {
|
|
600
|
+
confirmResetOpen = o;
|
|
601
|
+
}"
|
|
602
|
+
>
|
|
603
|
+
<AlertDialogContent>
|
|
604
|
+
<AlertDialogHeader>
|
|
605
|
+
<AlertDialogTitle>{{ t("reset-confirm-title") }}</AlertDialogTitle>
|
|
606
|
+
<AlertDialogDescription>{{ t("reset-confirm-body") }}</AlertDialogDescription>
|
|
607
|
+
</AlertDialogHeader>
|
|
608
|
+
<AlertDialogFooter>
|
|
609
|
+
<AlertDialogCancel
|
|
610
|
+
data-slot="table-customization-reset-cancel"
|
|
611
|
+
@click="confirmResetOpen = false"
|
|
612
|
+
>
|
|
613
|
+
<Icon icon="fluent:dismiss-20-regular" />
|
|
614
|
+
{{ t("cancel") }}
|
|
615
|
+
</AlertDialogCancel>
|
|
616
|
+
<AlertDialogAction
|
|
617
|
+
data-slot="table-customization-reset-confirm"
|
|
618
|
+
@click="onResetConfirmed(close)"
|
|
619
|
+
>
|
|
620
|
+
<Icon icon="fluent:arrow-reset-20-regular" />
|
|
621
|
+
{{ t("reset") }}
|
|
622
|
+
</AlertDialogAction>
|
|
623
|
+
</AlertDialogFooter>
|
|
624
|
+
</AlertDialogContent>
|
|
625
|
+
</AlertDialog>
|
|
626
|
+
</div>
|
|
627
|
+
</template>
|
|
628
|
+
</ResponsiveModal>
|
|
629
|
+
</template>
|
|
630
|
+
|
|
631
|
+
<style scoped>
|
|
632
|
+
.row{align-items:center;border-radius:.25rem;display:flex;font-size:.875rem;gap:.375rem;padding-block:.375rem;padding-inline:.5rem;position:relative;transition:background-color .1s ease;-webkit-user-select:none;-moz-user-select:none;user-select:none}.row:hover{background:#fafafa}.group-row{color:#52525b;font-weight:500}.member-row{padding-left:1.75rem}[data-instruction=reorder-above]:before,[data-instruction=reorder-below]:after{background:var(--primary,#2563eb);content:"";height:2px;left:.5rem;pointer-events:none;position:absolute;right:.5rem;z-index:1}[data-instruction=reorder-above]:before{top:-1px}[data-instruction=reorder-below]:after{bottom:-1px}.band-caption{color:#a1a1aa;font-size:.625rem;font-weight:500;letter-spacing:.04em;padding:.125rem .5rem;text-transform:uppercase}.pin-zone{align-items:center;border-radius:.25rem;color:transparent;display:flex;font-size:.75rem;gap:.25rem;height:.5rem;justify-content:center;margin:.125rem 0;pointer-events:auto;transition:height .12s ease,color .12s ease,background-color .12s ease}.pin-zone>*{pointer-events:none}.pin-zone[data-active=true]{background-color:color-mix(in srgb,var(--primary,#2563eb) 8%,#fff);color:var(--primary,#2563eb);height:1.75rem}.filler-zone{border-radius:.25rem;flex:1 1 auto;min-height:2rem;transition:background-color .12s ease}.filler-zone>*{pointer-events:none}.filler-zone[data-active=true]{background-color:color-mix(in srgb,var(--primary,#2563eb) 8%,#fff)}
|
|
633
|
+
</style>
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { Table } from '@tanstack/vue-table';
|
|
2
|
+
import type { TableConfigValue } from './schema.js';
|
|
3
|
+
type __VLS_Props = {
|
|
4
|
+
config: TableConfigValue;
|
|
5
|
+
tableApi: Table<unknown>;
|
|
6
|
+
};
|
|
7
|
+
declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
8
|
+
reset: () => any;
|
|
9
|
+
confirm: (payload: Required<Pick<Partial<Omit<import("./utils/customization.js").TableCustomizationSnapshot, "v">>, "columnVisibility" | "columnOrder" | "columnPinning">>) => any;
|
|
10
|
+
}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
|
|
11
|
+
onReset?: (() => any) | undefined;
|
|
12
|
+
onConfirm?: ((payload: Required<Pick<Partial<Omit<import("./utils/customization.js").TableCustomizationSnapshot, "v">>, "columnVisibility" | "columnOrder" | "columnPinning">>) => any) | undefined;
|
|
13
|
+
}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
14
|
+
declare const _default: typeof __VLS_export;
|
|
15
|
+
export default _default;
|