@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,90 @@
|
|
|
1
|
+
import { onBeforeUnmount, ref } from "vue";
|
|
2
|
+
import { combine } from "@atlaskit/pragmatic-drag-and-drop/combine";
|
|
3
|
+
import {
|
|
4
|
+
draggable,
|
|
5
|
+
dropTargetForElements
|
|
6
|
+
} from "@atlaskit/pragmatic-drag-and-drop/element/adapter";
|
|
7
|
+
import {
|
|
8
|
+
attachClosestEdge,
|
|
9
|
+
extractClosestEdge
|
|
10
|
+
} from "@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge";
|
|
11
|
+
const SOURCE_KIND = "shwfed-tab";
|
|
12
|
+
export function useTabReorder(options) {
|
|
13
|
+
const indicator = ref(null);
|
|
14
|
+
const dragging = ref(null);
|
|
15
|
+
const regs = /* @__PURE__ */ new Map();
|
|
16
|
+
function rewire(path, reg) {
|
|
17
|
+
reg.cleanup?.();
|
|
18
|
+
if (!reg.el) {
|
|
19
|
+
reg.cleanup = null;
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
const el = reg.el;
|
|
23
|
+
reg.cleanup = combine(
|
|
24
|
+
draggable({
|
|
25
|
+
element: el,
|
|
26
|
+
getInitialData: () => ({ kind: SOURCE_KIND, path }),
|
|
27
|
+
onDragStart: () => {
|
|
28
|
+
dragging.value = path;
|
|
29
|
+
},
|
|
30
|
+
onDrop: () => {
|
|
31
|
+
dragging.value = null;
|
|
32
|
+
if (indicator.value) indicator.value = null;
|
|
33
|
+
}
|
|
34
|
+
}),
|
|
35
|
+
dropTargetForElements({
|
|
36
|
+
element: el,
|
|
37
|
+
canDrop: ({ source }) => source.data.kind === SOURCE_KIND && source.data.path !== path,
|
|
38
|
+
getIsSticky: () => true,
|
|
39
|
+
getData: ({ input, element }) => attachClosestEdge(
|
|
40
|
+
{ kind: `${SOURCE_KIND}-target`, path },
|
|
41
|
+
{ input, element, allowedEdges: ["left", "right"] }
|
|
42
|
+
),
|
|
43
|
+
onDrag: ({ self }) => {
|
|
44
|
+
const edge = extractClosestEdge(self.data);
|
|
45
|
+
if (edge === "left" || edge === "right") indicator.value = { path, edge };
|
|
46
|
+
else if (indicator.value?.path === path) indicator.value = null;
|
|
47
|
+
},
|
|
48
|
+
onDragLeave: () => {
|
|
49
|
+
if (indicator.value?.path === path) indicator.value = null;
|
|
50
|
+
},
|
|
51
|
+
onDrop: ({ source, self }) => {
|
|
52
|
+
indicator.value = null;
|
|
53
|
+
const edge = extractClosestEdge(self.data);
|
|
54
|
+
const sourcePath = typeof source.data.path === "string" ? source.data.path : null;
|
|
55
|
+
if ((edge === "left" || edge === "right") && sourcePath && sourcePath !== path) {
|
|
56
|
+
options.onReorder(sourcePath, path, edge);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
})
|
|
60
|
+
);
|
|
61
|
+
}
|
|
62
|
+
function setTab(path, el) {
|
|
63
|
+
let reg = regs.get(path);
|
|
64
|
+
if (!reg) {
|
|
65
|
+
reg = { el: null, cleanup: null };
|
|
66
|
+
regs.set(path, reg);
|
|
67
|
+
}
|
|
68
|
+
if (reg.el === el) return;
|
|
69
|
+
reg.el = el;
|
|
70
|
+
rewire(path, reg);
|
|
71
|
+
if (!reg.el && !reg.cleanup) {
|
|
72
|
+
regs.delete(path);
|
|
73
|
+
if (indicator.value?.path === path) indicator.value = null;
|
|
74
|
+
if (dragging.value === path) dragging.value = null;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
function edgeFor(path) {
|
|
78
|
+
return indicator.value?.path === path ? indicator.value.edge : null;
|
|
79
|
+
}
|
|
80
|
+
function isDragging(path) {
|
|
81
|
+
return dragging.value === path;
|
|
82
|
+
}
|
|
83
|
+
onBeforeUnmount(() => {
|
|
84
|
+
for (const reg of regs.values()) reg.cleanup?.();
|
|
85
|
+
regs.clear();
|
|
86
|
+
indicator.value = null;
|
|
87
|
+
dragging.value = null;
|
|
88
|
+
});
|
|
89
|
+
return { setTab, edgeFor, isDragging };
|
|
90
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { type Ref } from 'vue';
|
|
2
|
+
import { type ReorderInstruction } from '../../share/reorder.js';
|
|
3
|
+
import type { Tab } from './types.js';
|
|
4
|
+
/**
|
|
5
|
+
* The app-level tab store — a client singleton (per the module's "runtime
|
|
6
|
+
* singletons, not Nuxt injections" direction). Holds the open tabs (persisted to
|
|
7
|
+
* `sessionStorage` so they survive a refresh but die with the browser tab) and
|
|
8
|
+
* the resolved title logic.
|
|
9
|
+
*
|
|
10
|
+
* Deliberately framework-free: it never touches the router. Mutations that imply
|
|
11
|
+
* a navigation RETURN the `fullPath` the caller should navigate to (or `null`
|
|
12
|
+
* when no navigation is needed); the `ShwfedTabs` strip performs the actual
|
|
13
|
+
* `navigateTo`. This keeps the store trivially unit-testable and lets other
|
|
14
|
+
* call sites (the page `close` operation) reuse it without a router in scope.
|
|
15
|
+
*/
|
|
16
|
+
export interface TabStore {
|
|
17
|
+
tabs: Ref<Tab[]>;
|
|
18
|
+
activePath: Ref<string | null>;
|
|
19
|
+
/** Ensure a tab for `path` exists and mark it active (route-change driven). */
|
|
20
|
+
openOrFocus: (path: string, fullPath: string) => void;
|
|
21
|
+
/** Remove a tab; returns the fullPath to navigate to when the active tab was closed. */
|
|
22
|
+
close: (path: string, home?: string) => string | null;
|
|
23
|
+
/** Keep only `path` (and pinned tabs); returns a nav target if the active tab was closed. */
|
|
24
|
+
closeOthers: (path: string) => string | null;
|
|
25
|
+
/** Close non-pinned tabs to the right of `path`; returns a nav target if active was closed. */
|
|
26
|
+
closeToRight: (path: string) => string | null;
|
|
27
|
+
reorder: (sourcePath: string, targetPath: string, instruction: ReorderInstruction) => void;
|
|
28
|
+
/**
|
|
29
|
+
* Title precedence: page title (by path) → nav label (query-specific by
|
|
30
|
+
* fullPath, else by path) → raw path. Takes the tab so the title can reflect
|
|
31
|
+
* the current query variant while identity stays path-only.
|
|
32
|
+
*/
|
|
33
|
+
resolveTitle: (tab: {
|
|
34
|
+
path: string;
|
|
35
|
+
fullPath: string;
|
|
36
|
+
}, locale: string) => string;
|
|
37
|
+
hasTab: (path: string) => boolean;
|
|
38
|
+
}
|
|
39
|
+
export declare function createTabStore(storageKey: string): TabStore;
|
|
40
|
+
/**
|
|
41
|
+
* Access the shared tab store. Created once, in a detached effect scope so its
|
|
42
|
+
* `sessionStorage` reactivity is not disposed when the first component that
|
|
43
|
+
* touched it unmounts. `storageKey` only takes effect on first creation (there
|
|
44
|
+
* is one strip per app).
|
|
45
|
+
*/
|
|
46
|
+
export declare function useTabStore(storageKey?: string): TabStore;
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { effectScope, ref } from "vue";
|
|
2
|
+
import { useSessionStorage } from "@vueuse/core";
|
|
3
|
+
import { getLocalizedText } from "../../share/locale.js";
|
|
4
|
+
import { readNavLabel } from "../../utils/nav-registry.js";
|
|
5
|
+
import { readPageTitle } from "../../utils/page-title-registry.js";
|
|
6
|
+
import { applyReorder } from "../../share/reorder.js";
|
|
7
|
+
export function createTabStore(storageKey) {
|
|
8
|
+
const tabs = useSessionStorage(storageKey, []);
|
|
9
|
+
const activePath = ref(null);
|
|
10
|
+
function indexOf(path) {
|
|
11
|
+
return tabs.value.findIndex((t) => t.path === path);
|
|
12
|
+
}
|
|
13
|
+
function openOrFocus(path, fullPath) {
|
|
14
|
+
const existing = tabs.value.find((t) => t.path === path);
|
|
15
|
+
if (existing) {
|
|
16
|
+
if (existing.fullPath !== fullPath) {
|
|
17
|
+
tabs.value = tabs.value.map((t) => t.path === path ? { ...t, fullPath } : t);
|
|
18
|
+
}
|
|
19
|
+
} else {
|
|
20
|
+
tabs.value = [...tabs.value, { path, fullPath }];
|
|
21
|
+
}
|
|
22
|
+
activePath.value = path;
|
|
23
|
+
}
|
|
24
|
+
function close(path, home) {
|
|
25
|
+
const idx = indexOf(path);
|
|
26
|
+
if (idx < 0) return null;
|
|
27
|
+
const target = tabs.value[idx];
|
|
28
|
+
if (!target || target.pinned) return null;
|
|
29
|
+
const wasActive = activePath.value === path;
|
|
30
|
+
const next = tabs.value.slice(0, idx).concat(tabs.value.slice(idx + 1));
|
|
31
|
+
tabs.value = next;
|
|
32
|
+
if (!wasActive) return null;
|
|
33
|
+
const neighbor = next[idx] ?? next[idx - 1] ?? null;
|
|
34
|
+
if (neighbor) {
|
|
35
|
+
activePath.value = neighbor.path;
|
|
36
|
+
return neighbor.fullPath;
|
|
37
|
+
}
|
|
38
|
+
activePath.value = null;
|
|
39
|
+
return home ?? null;
|
|
40
|
+
}
|
|
41
|
+
function closeOthers(path) {
|
|
42
|
+
tabs.value = tabs.value.filter((t) => t.pinned || t.path === path);
|
|
43
|
+
if (activePath.value === path) return null;
|
|
44
|
+
const target = tabs.value.find((t) => t.path === path);
|
|
45
|
+
if (target) {
|
|
46
|
+
activePath.value = path;
|
|
47
|
+
return target.fullPath;
|
|
48
|
+
}
|
|
49
|
+
return null;
|
|
50
|
+
}
|
|
51
|
+
function closeToRight(path) {
|
|
52
|
+
const idx = indexOf(path);
|
|
53
|
+
if (idx < 0) return null;
|
|
54
|
+
const removed = new Set(
|
|
55
|
+
tabs.value.slice(idx + 1).filter((t) => !t.pinned).map((t) => t.path)
|
|
56
|
+
);
|
|
57
|
+
if (removed.size === 0) return null;
|
|
58
|
+
tabs.value = tabs.value.filter((t) => !removed.has(t.path));
|
|
59
|
+
if (activePath.value && removed.has(activePath.value)) {
|
|
60
|
+
activePath.value = path;
|
|
61
|
+
return tabs.value.find((t) => t.path === path)?.fullPath ?? null;
|
|
62
|
+
}
|
|
63
|
+
return null;
|
|
64
|
+
}
|
|
65
|
+
function reorder(sourcePath, targetPath, instruction) {
|
|
66
|
+
const src = indexOf(sourcePath);
|
|
67
|
+
const tgt = indexOf(targetPath);
|
|
68
|
+
if (src < 0 || tgt < 0) return;
|
|
69
|
+
const next = applyReorder(tabs.value, src, tgt, instruction);
|
|
70
|
+
if (next !== tabs.value) tabs.value = next;
|
|
71
|
+
}
|
|
72
|
+
function resolveTitle(tab, locale) {
|
|
73
|
+
const fromPage = getLocalizedText(readPageTitle(tab.path), locale);
|
|
74
|
+
if (fromPage) return fromPage;
|
|
75
|
+
const fromNav = readNavLabel(tab.fullPath, tab.path)?.label;
|
|
76
|
+
if (fromNav) return fromNav;
|
|
77
|
+
return tab.path;
|
|
78
|
+
}
|
|
79
|
+
function hasTab(path) {
|
|
80
|
+
return indexOf(path) >= 0;
|
|
81
|
+
}
|
|
82
|
+
return {
|
|
83
|
+
tabs,
|
|
84
|
+
activePath,
|
|
85
|
+
openOrFocus,
|
|
86
|
+
close,
|
|
87
|
+
closeOthers,
|
|
88
|
+
closeToRight,
|
|
89
|
+
reorder,
|
|
90
|
+
resolveTitle,
|
|
91
|
+
hasTab
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
let singleton = null;
|
|
95
|
+
export function useTabStore(storageKey = "shwfed:tabs") {
|
|
96
|
+
if (!singleton) {
|
|
97
|
+
const scope = effectScope(true);
|
|
98
|
+
singleton = scope.run(() => createTabStore(storageKey));
|
|
99
|
+
}
|
|
100
|
+
return singleton;
|
|
101
|
+
}
|
|
@@ -28,8 +28,8 @@ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {},
|
|
|
28
28
|
"onUpdate:modelValue"?: ((args_0: Date | undefined) => any) | undefined;
|
|
29
29
|
}>, {
|
|
30
30
|
size: "sm" | "md" | "lg";
|
|
31
|
-
clearIcon: string;
|
|
32
31
|
clearable: boolean;
|
|
32
|
+
clearIcon: string;
|
|
33
33
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
34
34
|
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
35
35
|
declare const _default: typeof __VLS_export;
|
|
@@ -28,8 +28,8 @@ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {},
|
|
|
28
28
|
"onUpdate:modelValue"?: ((args_0: Date | undefined) => any) | undefined;
|
|
29
29
|
}>, {
|
|
30
30
|
size: "sm" | "md" | "lg";
|
|
31
|
-
clearIcon: string;
|
|
32
31
|
clearable: boolean;
|
|
32
|
+
clearIcon: string;
|
|
33
33
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
34
34
|
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
35
35
|
declare const _default: typeof __VLS_export;
|
|
@@ -22,8 +22,8 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {
|
|
|
22
22
|
size: "sm" | "md" | "lg";
|
|
23
23
|
granularity: "hour" | "minute" | "second";
|
|
24
24
|
hourCycle: 12 | 24;
|
|
25
|
-
clearIcon: string;
|
|
26
25
|
clearable: boolean;
|
|
26
|
+
clearIcon: string;
|
|
27
27
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
28
28
|
declare const _default: typeof __VLS_export;
|
|
29
29
|
export default _default;
|
|
@@ -22,8 +22,8 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {
|
|
|
22
22
|
size: "sm" | "md" | "lg";
|
|
23
23
|
granularity: "hour" | "minute" | "second";
|
|
24
24
|
hourCycle: 12 | 24;
|
|
25
|
-
clearIcon: string;
|
|
26
25
|
clearable: boolean;
|
|
26
|
+
clearIcon: string;
|
|
27
27
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
28
28
|
declare const _default: typeof __VLS_export;
|
|
29
29
|
export default _default;
|
|
@@ -29,8 +29,8 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {
|
|
|
29
29
|
"onUpdate:endValue"?: ((args_0: Date | undefined) => any) | undefined;
|
|
30
30
|
}>, {
|
|
31
31
|
size: "sm" | "md" | "lg";
|
|
32
|
-
clearIcon: string;
|
|
33
32
|
clearable: boolean;
|
|
33
|
+
clearIcon: string;
|
|
34
34
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
35
35
|
declare const _default: typeof __VLS_export;
|
|
36
36
|
export default _default;
|
|
@@ -29,8 +29,8 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {
|
|
|
29
29
|
"onUpdate:endValue"?: ((args_0: Date | undefined) => any) | undefined;
|
|
30
30
|
}>, {
|
|
31
31
|
size: "sm" | "md" | "lg";
|
|
32
|
-
clearIcon: string;
|
|
33
32
|
clearable: boolean;
|
|
33
|
+
clearIcon: string;
|
|
34
34
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
35
35
|
declare const _default: typeof __VLS_export;
|
|
36
36
|
export default _default;
|
|
@@ -26,9 +26,9 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {
|
|
|
26
26
|
size: "sm" | "md" | "lg";
|
|
27
27
|
granularity: "hour" | "minute" | "second";
|
|
28
28
|
hourCycle: 12 | 24;
|
|
29
|
-
rangeSeparatorIcon: string;
|
|
30
|
-
clearIcon: string;
|
|
31
29
|
clearable: boolean;
|
|
30
|
+
clearIcon: string;
|
|
31
|
+
rangeSeparatorIcon: string;
|
|
32
32
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
33
33
|
declare const _default: typeof __VLS_export;
|
|
34
34
|
export default _default;
|
|
@@ -26,9 +26,9 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {
|
|
|
26
26
|
size: "sm" | "md" | "lg";
|
|
27
27
|
granularity: "hour" | "minute" | "second";
|
|
28
28
|
hourCycle: 12 | 24;
|
|
29
|
-
rangeSeparatorIcon: string;
|
|
30
|
-
clearIcon: string;
|
|
31
29
|
clearable: boolean;
|
|
30
|
+
clearIcon: string;
|
|
31
|
+
rangeSeparatorIcon: string;
|
|
32
32
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
33
33
|
declare const _default: typeof __VLS_export;
|
|
34
34
|
export default _default;
|
|
@@ -14,7 +14,7 @@ const props = defineProps({
|
|
|
14
14
|
data-slot="sidebar-menu-action"
|
|
15
15
|
data-sidebar="menu-action"
|
|
16
16
|
:class="cn(
|
|
17
|
-
'text-zinc-500 absolute top-1/2 right-0.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-hidden transition-transform [&>svg]:size-4 [&>svg]:shrink-0 cursor-
|
|
17
|
+
'text-zinc-500 absolute top-1/2 right-0.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-hidden transition-transform [&>svg]:size-4 [&>svg]:shrink-0 cursor-default',
|
|
18
18
|
'after:absolute after:-inset-2 md:after:hidden',
|
|
19
19
|
'peer-data-[size=sm]/menu-button:top-1',
|
|
20
20
|
'peer-data-[size=default]/menu-button:top-1.5',
|
|
@@ -24,11 +24,11 @@ export { default as SidebarSeparator } from "./SidebarSeparator.vue";
|
|
|
24
24
|
export { default as SidebarTrigger } from "./SidebarTrigger.vue";
|
|
25
25
|
export { useSidebar } from "./utils.js";
|
|
26
26
|
export const sidebarMenuButtonVariants = cva(
|
|
27
|
-
"peer/menu-button cursor-
|
|
27
|
+
"peer/menu-button cursor-default flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm outline-hidden transition-[width,height,padding,color] duration-180 hover:bg-zinc-100 hover:text-zinc-900 active:bg-zinc-100 active:text-zinc-900 disabled:pointer-events-none disabled:opacity-50 group-has-[>[data-sidebar=menu-action]]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-[color-mix(in_srgb,var(--primary)_10%,white)] data-[active=true]:text-(--primary) data-[active=true]:font-mediumdata-[state=open]:hover:bg-zinc-100 data-[state=open]:hover:text-zinc-900 group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0",
|
|
28
28
|
{
|
|
29
29
|
variants: {
|
|
30
30
|
variant: {
|
|
31
|
-
default: "
|
|
31
|
+
default: "text-zinc-800",
|
|
32
32
|
outline: "bg-white shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-zinc-100 hover:text-zinc-900 hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]"
|
|
33
33
|
},
|
|
34
34
|
size: {
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export function applyReorder(items, sourceIndex, targetIndex, position) {
|
|
2
|
+
if (sourceIndex === targetIndex) return items;
|
|
3
|
+
if (sourceIndex < 0 || sourceIndex >= items.length) return items;
|
|
4
|
+
if (targetIndex < 0 || targetIndex >= items.length) return items;
|
|
5
|
+
let insertIdx = targetIndex + (position === "reorder-below" ? 1 : 0);
|
|
6
|
+
if (sourceIndex < targetIndex) insertIdx -= 1;
|
|
7
|
+
if (insertIdx === sourceIndex) return items;
|
|
8
|
+
const next = items.slice();
|
|
9
|
+
const [moved] = next.splice(sourceIndex, 1);
|
|
10
|
+
next.splice(insertIdx, 0, moved);
|
|
11
|
+
return next;
|
|
12
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Route → nav-label index, published by the sidebar and read by the tab strip.
|
|
3
|
+
* A client singleton (not a Nuxt injection). This is title source #2 in the
|
|
4
|
+
* tab-title precedence chain (page title → nav label → raw path).
|
|
5
|
+
*
|
|
6
|
+
* Two indexes so a tab title can be QUERY-AWARE while tab identity stays
|
|
7
|
+
* path-only: `fullMap` keys by the node's exact route (path + query, hash
|
|
8
|
+
* stripped) so `/orders?status=open` and `/orders?status=closed` resolve to
|
|
9
|
+
* their own labels; `pathMap` keys by path (first-wins) as the fallback for a
|
|
10
|
+
* location that matches no exact node route. The sidebar owns the whole map
|
|
11
|
+
* (one nav per app), so publishing wholesale-replaces both.
|
|
12
|
+
*/
|
|
13
|
+
export interface NavLabel {
|
|
14
|
+
label: string;
|
|
15
|
+
icon?: string;
|
|
16
|
+
}
|
|
17
|
+
export declare function publishNavLabels(full: Map<string, NavLabel>, path: Map<string, NavLabel>): void;
|
|
18
|
+
export declare function clearNavLabels(): void;
|
|
19
|
+
export declare function readNavLabel(fullPath: string, path: string): NavLabel | undefined;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { ref } from "vue";
|
|
2
|
+
const fullMap = ref(/* @__PURE__ */ new Map());
|
|
3
|
+
const pathMap = ref(/* @__PURE__ */ new Map());
|
|
4
|
+
export function publishNavLabels(full, path) {
|
|
5
|
+
fullMap.value = new Map(full);
|
|
6
|
+
pathMap.value = new Map(path);
|
|
7
|
+
}
|
|
8
|
+
export function clearNavLabels() {
|
|
9
|
+
if (fullMap.value.size > 0) fullMap.value = /* @__PURE__ */ new Map();
|
|
10
|
+
if (pathMap.value.size > 0) pathMap.value = /* @__PURE__ */ new Map();
|
|
11
|
+
}
|
|
12
|
+
export function readNavLabel(fullPath, path) {
|
|
13
|
+
return fullMap.value.get(fullPath.split("#")[0] ?? fullPath) ?? pathMap.value.get(path);
|
|
14
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { ref } from "vue";
|
|
2
|
+
const registry = ref(/* @__PURE__ */ new Map());
|
|
3
|
+
export function publishPageTitle(path, title) {
|
|
4
|
+
const next = new Map(registry.value);
|
|
5
|
+
if (title && title.length > 0) next.set(path, title);
|
|
6
|
+
else next.delete(path);
|
|
7
|
+
registry.value = next;
|
|
8
|
+
}
|
|
9
|
+
export function readPageTitle(path) {
|
|
10
|
+
return registry.value.get(path);
|
|
11
|
+
}
|
|
@@ -8,11 +8,11 @@ When modifying this library, keep both `CLAUDE.md` and `PROMPT.md` in sync with
|
|
|
8
8
|
|
|
9
9
|
## Key Modifications
|
|
10
10
|
|
|
11
|
-
`int` and `uint` types have been removed in favor of a unified `number` type backed by `Decimal` (arbitrary-precision arithmetic via BigInt). All numeric literals, arithmetic results, and size/index returns are `Decimal` instances. The `int()`, `uint()`, and `double()` conversion functions
|
|
11
|
+
`int` and `uint` types have been removed in favor of a unified `number` type backed by `Decimal` (arbitrary-precision arithmetic via BigInt). All numeric literals, arithmetic results, and size/index returns are `Decimal` instances. The `int()`, `uint()`, and `double()` conversion functions have been **removed entirely** (calling them is an unknown-function error), the CEL `u`/`U` uint-literal suffix (`123u`, `0xFFu`) is a parse error, and the protobufjs field mapping emits `number` for all numeric/enum fields. Explicit rounding lives in the `math` namespace (`math-builtins.ts`, registered like `JSON`): `math.trunc` / `math.floor` / `math.ceil` / `math.round` (ties away from zero, cel-go style) / `math.abs`, plus `math.min` / `math.max` in `(number, number)` and `(list<number>)` overloads (empty list throws). All are exact — implemented on `Decimal`'s BigInt representation (`decimal.ts` `toInteger`), never via a float round-trip.
|
|
12
12
|
|
|
13
|
-
`google.protobuf.Timestamp` and `google.protobuf.Duration` have been removed. Replaced with a `Date` type backed by `TZDate` from `@date-fns/tz`, constructed via `date(string)` or `date(number)` (a Unix timestamp — the seconds-vs-milliseconds unit is auto-detected by magnitude: values `< 1e11` are read as seconds, the rest as milliseconds).
|
|
13
|
+
`google.protobuf.Timestamp` and `google.protobuf.Duration` have been removed. Replaced with a `Date` type backed by `TZDate` from `@date-fns/tz`, constructed via `date(string)` or `date(number)` (a Unix timestamp — the seconds-vs-milliseconds unit is auto-detected by magnitude: values `< 1e11` are read as seconds, the rest as milliseconds). Two-argument forms `date(string, tz)` / `date(number, tz)` anchor an explicit zone (IANA name or fixed offset, validated eagerly via `Intl`): an offset-less wall-clock string (`"2024-06-15T09:00"`, matched by `WALL_CLOCK_STRING`) is interpreted *in that zone* through the TZDate component constructor — NOT via `new TZDate(string, tz)`, whose string path parses machine-local and uses the zone for rendering only — while strings with an explicit offset keep their instant. `Date.tz(string)` re-renders the same instant in another zone. Date manipulation uses date-fns functions, all table-driven through a shared `pickUnit` lookup with a uniform trailing-`s` plural tolerance: `startOf` / `endOf` (`minute` / `hour` / `day` / `week` / `month` / `year`), `offset` and `diff` (`millisecond` … `year`), `set` and the `Date.get(string): number` accessor (`millisecond` … `year`, `month` 1-based, plus `weekday` on `get`, ISO 1 = Monday … 7 = Sunday), and `format`. `Date.diff(Date, string): number` returns the signed, truncated-toward-zero distance between two dates — the receiver is the minuend (`a.diff(b, unit)` = `a − b`, mirroring date-fns `differenceInX(left, right)`); there is no `Date − Date` operator and no duration type, so this is the way to measure elapsed time. Conversions: `number(Date)` is the epoch-millisecond timestamp (round-trips through `date(number)`), `string(Date)` is ISO 8601 rendered with the date's own zone offset.
|
|
14
14
|
|
|
15
|
-
A `range()` built-in has been added (not from upstream) — `range(number, number)`, `range(number, number, number)` and `range(Date, Date, string)`. It builds an end-exclusive list; the direction follows the operands (counts down when `start > end`); `step` is a positive magnitude; the date unit is `
|
|
15
|
+
A `range()` built-in has been added (not from upstream) — `range(number, number)`, `range(number, number, number)` and `range(Date, Date, string)`. It builds an end-exclusive list; the direction follows the operands (counts down when `start > end`); `step` is a positive magnitude; the date unit is `second` / `minute` / `hour` / `day` / `week` / `month` / `year` (plural tolerated). Output length is capped at 100000.
|
|
16
16
|
|
|
17
17
|
A `list.enumerate(): list<map<string, dyn>>` receiver method has been added (not from upstream, in `functions.ts` beside `list.size()`) — pairs each element with its 0-based index as a plain `{index, value}` record (CEL has no tuple type). It is a plain function, not a macro (no variable binding); the index is a `Decimal` so it stays a CEL `number` for downstream arithmetic. Receiver `list` resolves to `list<dyn>`, so it matches any list.
|
|
18
18
|
|
|
@@ -24,7 +24,7 @@ A `string.replace(string, string): string` / `string.replace(string, string, num
|
|
|
24
24
|
|
|
25
25
|
The `homogeneousAggregateLiterals` and `enableOptionalTypes` environment options have been removed. Aggregate data structures (lists, maps) are always heterogeneous — mixed-type literals are inferred as `list<dyn>` or `map<dyn, dyn>`. Optional types (`.?`, `[?]`, `optional.*` helpers) are always enabled.
|
|
26
26
|
|
|
27
|
-
The custom `Optional` class has been replaced with Effect's `Option` type (`import { Option } from 'effect'`). Internal helpers `optionalOf(value)` and `optionalValue(opt)` in `optional.js` handle the CEL-specific semantics (treating `undefined` as `None`, throwing `EvaluationError` on missing value access). The optional surface is `optional.of(A): optional<A>` (the lift / `pure`), `optional.none()`, `optional.hasValue()`, `optional.value()`, `optional.or(optional)`, `optional.orValue(value)`, plus `optional<A>.flatMap(var, body): optional<B>` (monadic bind)
|
|
27
|
+
The custom `Optional` class has been replaced with Effect's `Option` type (`import { Option } from 'effect'`). Internal helpers `optionalOf(value)` and `optionalValue(opt)` in `optional.js` handle the CEL-specific semantics (treating `undefined` as `None`, throwing `EvaluationError` on missing value access). The optional surface is `optional.of(A): optional<A>` (the lift / `pure` — `of(null)` is `Some(null)`), `optional.ofNullable(A): optional<A>` (the null-tolerant lift, Java-style — `null` becomes `None`), `optional.none()`, `optional.hasValue()`, `optional.value()`, `optional.or(optional)`, `optional.orValue(value)`, plus `optional<A>.flatMap(var, body): optional<B>` (monadic bind), `optional<A>.map(var, body): optional<B>` (the Functor `fmap`), `optional<A>.zip(other, x, y, body): optional<C>` (the applicative `liftA2` / `zipWith`), `optional<A>.filter(var, predicate): optional<A>` (Rust `Option::filter` / Haskell `mfilter`), and the folds `optional<A>.exists(var, predicate): bool` (predicate on `Some`, `false` on `None` — Rust `is_some_and`) and `optional<A>.all(var, predicate): bool` (predicate on `Some`, vacuously `true` on `None` — Scala `forall`) — all local additions (not from upstream). All are variable-binding macros (registered with `ast` arg types so the unbound args stay unevaluated): on `Some` they bind the value(s) and evaluate `body`; on `None` they short-circuit without touching `body`. `flatMap`'s body must itself yield an `optional`; `map`'s body is a plain value that gets re-wrapped in `Some`; `filter` / `exists` / `all` predicates must be `bool` (enforced at type-check when static, at runtime via `invalid_condition_type` otherwise). `map` is the derived `o.flatMap(v, optional.of(body))` promoted to a first-class macro. `zip` is the flattened `a.flatMap(x, b.map(y, body))`: it type-checks `other` in the outer ctx, binds `x` then `y` under two chained overlays, re-wraps the plain body in `Some`, and short-circuits to `None` if either side is `None` (a `None` receiver skips evaluating `other`). Because CEL has no tuple type the transform is fused (there is no useful `optional<pair>` to return), so `zip` is `zipWith`, not Rust/Scala's pair-building `Option.zip`. The short-circuit makes `zip` observationally monadic — harmless for `optional` (a `None` carries no payload) but it would not generalise to an error-accumulating applicative. An `optional.none()` receiver/argument carries a `param` element type; the shared `bindOptionalValueType` helper (exported from `optional.ts`) binds it as `dyn` so a boolean body still type-checks — every binding macro (`map` / `flatMap` / `zip` / `filter` / `exists` / `all`) goes through it (leaking the `param` into the iteration variable was a real bug in `map` / `flatMap`, regression-tested in `optional-extras.test.ts`). `zip` lives in `optional.ts` beside `flatMap`; the two-variable binding is why it is not folded into the shared `map` expander. NOTE: `map`, `filter`, `all`, and `exists` are **registered in `macros.ts`**, not here — the parser resolves a macro by name before types are known, so the optional variants and the list-comprehension variants must share one expander per name that dispatches on the receiver type at type-check (an `optional` receiver → optional semantics; `list`/`map` → comprehension; a `dyn` receiver is deferred to a runtime `Option.isOption` check). `exists_one` and `find` stay list-only.
|
|
28
28
|
|
|
29
29
|
An `http` built-in has been added (`http-builtins.ts`, `http-builder.ts`) — not from upstream. It registers the `http` constant and the `http` / `HttpRequest` types on `globalRegistry`, so `http.get(url).header(...).body(...)` expressions type-check and evaluate in every `Environment`. A CEL expression only builds an `HttpRequestBuilder` — a pure description of a request; it never issues one. The terminal methods `.json()`, `.file()`, and `.fileOrJson()` are dispatched by the host on the returned builder (none is a CEL method), so expression evaluation stays free of IO. `.fileOrJson()` branches on the response `Content-Type`: a JSON media type (`application/json` or a `+json` suffix) is parsed and returned as `{ _tag: 'json', json }`; anything else is returned as `{ _tag: 'file', file }`. Note the `Fetch` service itself `ensureOk`s (both `FetchLive` and the mock layer), so a non-2xx fails at `Fetch.fetch` before the branch and this only ever distinguishes 2xx bodies — i.e. the HTTP-200-with-error-envelope case. The download operation uses it so a backend that answers a download with a JSON error envelope (commonly `{ code: -1 }` on a 200) is classified rather than saved as the file. Endpoints must be absolute URLs — there is no base-URL resolution. Depends on `fx-fetch`. The host can register process-wide default headers via `HttpRequestBuilder.setDefaultHeader(name, valueOrGetter)` / `clearDefaultHeader(name)`; they are merged in at `#buildRequest()` time, with case-insensitive precedence to an explicit `.header(...)` on the builder. A getter that returns `null` / `undefined` / `''` skips the header for that request, so the host can source values from live refs (e.g. the active i18n locale for `Accept-Language`) without baking in stale snapshots. `.query` accepts `(string, string)` / `(string, number)`, the optional-valued `(string, optional<string>)` / `(string, optional<number>)` (a `None`, e.g. an absent `.?` field, drops the param rather than emitting `key=`; `Some` appends it via the string/number coercion), and the record-splat `(dyn)`.
|
|
30
30
|
|
|
@@ -47,11 +47,12 @@ lib/
|
|
|
47
47
|
├── operators.ts — Binary/unary operator implementations
|
|
48
48
|
├── overloads.ts — Operator overload definitions
|
|
49
49
|
├── functions.ts — Built-in functions + Date type (TZDate)
|
|
50
|
-
├── macros.ts — map (list comprehension
|
|
50
|
+
├── macros.ts — map / filter / all / exists (each dispatching list comprehension vs optional receiver), exists_one, find, has, cel.bind
|
|
51
51
|
├── http-builtins.ts — `http` constant + http/HttpRequest types (local addition)
|
|
52
52
|
├── http-builder.ts — `HttpRequestBuilder` — what an http.* expression returns
|
|
53
53
|
├── json-builtins.ts — `JSON` constant + `JSON.parse` / `JSON.stringify` (local addition)
|
|
54
54
|
├── form-builtins.ts — `form(map): FormData` global + `FormData` type (local addition)
|
|
55
|
+
├── math-builtins.ts — `math` namespace: trunc / floor / ceil / round / abs / min / max (local addition)
|
|
55
56
|
├── decimal.ts — Decimal class (arbitrary precision)
|
|
56
57
|
├── optional.ts — Optional type support (uses Effect Option)
|
|
57
58
|
├── serialize.ts — AST back to CEL string
|