@qxs-bns/components 0.0.89 → 0.0.90
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/es/_virtual/_commonjsHelpers.mjs +2 -0
- package/es/_virtual/_commonjsHelpers.mjs.map +1 -0
- package/es/_virtual/sortable.esm.mjs +2 -0
- package/es/_virtual/sortable.esm.mjs.map +1 -0
- package/es/_virtual/vuedraggable.umd.mjs +2 -0
- package/es/_virtual/vuedraggable.umd.mjs.map +1 -0
- package/es/_virtual/vuedraggable.umd2.mjs +2 -0
- package/es/_virtual/vuedraggable.umd2.mjs.map +1 -0
- package/es/index.mjs +1 -1
- package/es/index.mjs.map +1 -1
- package/es/node_modules/.pnpm/@iconify_vue@5.0.0_vue@3.5.18_typescript@5.9.2_/node_modules/@iconify/vue/dist/iconify.mjs +1 -1
- package/es/node_modules/.pnpm/@iconify_vue@5.0.0_vue@3.5.18_typescript@5.9.2_/node_modules/@iconify/vue/dist/iconify.mjs.map +1 -1
- package/es/node_modules/.pnpm/sortablejs@1.14.0/node_modules/sortablejs/modular/sortable.esm.mjs +8 -0
- package/es/node_modules/.pnpm/sortablejs@1.14.0/node_modules/sortablejs/modular/sortable.esm.mjs.map +1 -0
- package/es/node_modules/.pnpm/vuedraggable@4.1.0_vue@3.5.18_typescript@5.9.2_/node_modules/vuedraggable/dist/vuedraggable.umd.mjs +2 -0
- package/es/node_modules/.pnpm/vuedraggable@4.1.0_vue@3.5.18_typescript@5.9.2_/node_modules/vuedraggable/dist/vuedraggable.umd.mjs.map +1 -0
- package/es/package.json.mjs +1 -1
- package/es/src/alert/index.mjs +2 -0
- package/es/src/alert/index.mjs.map +1 -0
- package/es/src/alert/src/alert.mjs +2 -0
- package/es/src/alert/src/alert.mjs.map +1 -0
- package/es/src/components.mjs +1 -1
- package/es/src/data-chart/src/components/area.vue2.mjs +1 -1
- package/es/src/data-chart/src/components/area.vue2.mjs.map +1 -1
- package/es/src/data-chart/src/components/card.vue2.mjs +1 -1
- package/es/src/data-chart/src/components/card.vue2.mjs.map +1 -1
- package/es/src/data-chart/src/components/line.vue2.mjs +1 -1
- package/es/src/data-chart/src/components/line.vue2.mjs.map +1 -1
- package/es/src/data-chart/src/components/pie.vue2.mjs +1 -1
- package/es/src/data-chart/src/components/pie.vue2.mjs.map +1 -1
- package/es/src/data-chart/src/components/table.vue.mjs +1 -1
- package/es/src/data-chart/src/components/table.vue.mjs.map +1 -1
- package/es/src/data-chart/src/data-chart.vue.mjs +1 -1
- package/es/src/data-chart/src/data-chart.vue.mjs.map +1 -1
- package/es/src/data-chart/src/utils/config.mjs +1 -1
- package/es/src/data-chart/src/utils/config.mjs.map +1 -1
- package/es/src/data-chart/src/utils/safe-eval.mjs +1 -1
- package/es/src/data-chart/src/utils/safe-eval.mjs.map +1 -1
- package/es/src/data-chart/src/utils/useCharts.mjs +1 -1
- package/es/src/data-chart/src/utils/useCharts.mjs.map +1 -1
- package/es/src/dialog/src/dialog.mjs +2 -0
- package/es/src/dialog/src/dialog.mjs.map +1 -0
- package/es/src/feedback-plugin/index.mjs +2 -0
- package/es/src/feedback-plugin/index.mjs.map +1 -0
- package/es/src/file-upload/src/file-upload.vue.mjs +1 -1
- package/es/src/file-upload/src/file-upload.vue.mjs.map +1 -1
- package/es/src/file-upload/src/file-upload.vue2.mjs +1 -1
- package/es/src/file-upload/src/file-upload.vue2.mjs.map +1 -1
- package/es/src/file-upload/src/file-upload.vue3.mjs +2 -0
- package/es/src/file-upload/src/file-upload.vue3.mjs.map +1 -0
- package/es/src/image-upload/src/image-upload.vue.mjs +1 -1
- package/es/src/image-upload/src/image-upload.vue.mjs.map +1 -1
- package/es/src/image-upload/src/image-upload.vue2.mjs +1 -1
- package/es/src/image-upload/src/image-upload.vue2.mjs.map +1 -1
- package/es/src/image-upload/src/image-upload.vue3.mjs +2 -0
- package/es/src/image-upload/src/image-upload.vue3.mjs.map +1 -0
- package/es/src/make-installer.mjs +1 -1
- package/es/src/make-installer.mjs.map +1 -1
- package/es/src/message/src/message.mjs +2 -0
- package/es/src/message/src/message.mjs.map +1 -0
- package/es/src/subject-action/src/subject-action.vue.mjs +1 -1
- package/es/src/subject-action/src/subject-action.vue.mjs.map +1 -1
- package/es/src/subject-layout/src/subject-layout.vue.mjs +1 -1
- package/es/src/subject-layout/src/subject-layout.vue.mjs.map +1 -1
- package/es/src/subject-list/src/components/SubjectPageEnd.vue.mjs +1 -1
- package/es/src/subject-list/src/components/SubjectPageEnd.vue.mjs.map +1 -1
- package/es/src/subject-list/src/components/SubjectRichText.vue.mjs +1 -1
- package/es/src/subject-list/src/components/SubjectRichText.vue.mjs.map +1 -1
- package/es/src/subject-list/src/components/subject-blank-fill.vue.mjs +1 -1
- package/es/src/subject-list/src/components/subject-blank-fill.vue.mjs.map +1 -1
- package/es/src/subject-list/src/components/subject-scale.vue.mjs +1 -1
- package/es/src/subject-list/src/components/subject-scale.vue.mjs.map +1 -1
- package/es/src/subject-list/src/components/subject-single.vue.mjs +1 -1
- package/es/src/subject-list/src/components/subject-single.vue.mjs.map +1 -1
- package/es/src/subject-list/src/components/subject-text-fill.vue.mjs +1 -1
- package/es/src/subject-list/src/components/subject-text-fill.vue.mjs.map +1 -1
- package/es/src/subject-list/src/subject-list.vue.mjs +1 -1
- package/es/src/subject-list/src/subject-list.vue.mjs.map +1 -1
- package/es/src/tiny-mce-editor/src/tiny-mce-editor.vue.mjs +1 -1
- package/es/src/tiny-mce-editor/src/tiny-mce-editor.vue.mjs.map +1 -1
- package/es/src/ui/button/index.mjs +2 -0
- package/es/src/ui/button/index.mjs.map +1 -0
- package/es/src/ui/checkbox/index.mjs +2 -0
- package/es/src/ui/checkbox/index.mjs.map +1 -0
- package/es/src/ui/dialog/index.mjs +2 -0
- package/es/src/ui/dialog/index.mjs.map +1 -0
- package/es/src/ui/input/index.mjs +2 -0
- package/es/src/ui/input/index.mjs.map +1 -0
- package/es/src/ui/input-number/index.mjs +2 -0
- package/es/src/ui/input-number/index.mjs.map +1 -0
- package/es/src/ui/layout/index.mjs +2 -0
- package/es/src/ui/layout/index.mjs.map +1 -0
- package/es/src/ui/link/index.mjs +2 -0
- package/es/src/ui/link/index.mjs.map +1 -0
- package/es/src/ui/popover/index.mjs +2 -0
- package/es/src/ui/popover/index.mjs.map +1 -0
- package/es/src/ui/radio/index.mjs +2 -0
- package/es/src/ui/radio/index.mjs.map +1 -0
- package/es/src/ui/scrollbar/index.mjs +2 -0
- package/es/src/ui/scrollbar/index.mjs.map +1 -0
- package/es/src/ui/select/index.mjs +2 -0
- package/es/src/ui/select/index.mjs.map +1 -0
- package/es/src/ui/table/index.mjs +2 -0
- package/es/src/ui/table/index.mjs.map +1 -0
- package/es/src/ui/tag/index.mjs +2 -0
- package/es/src/ui/tag/index.mjs.map +1 -0
- package/lib/_virtual/_commonjsHelpers.cjs +2 -0
- package/lib/_virtual/_commonjsHelpers.cjs.map +1 -0
- package/lib/_virtual/sortable.esm.cjs +2 -0
- package/lib/_virtual/sortable.esm.cjs.map +1 -0
- package/lib/_virtual/vuedraggable.umd.cjs +2 -0
- package/lib/_virtual/vuedraggable.umd.cjs.map +1 -0
- package/lib/_virtual/vuedraggable.umd2.cjs +2 -0
- package/lib/_virtual/vuedraggable.umd2.cjs.map +1 -0
- package/lib/index.cjs +1 -1
- package/lib/index.cjs.map +1 -1
- package/lib/node_modules/.pnpm/@iconify_vue@5.0.0_vue@3.5.18_typescript@5.9.2_/node_modules/@iconify/vue/dist/iconify.cjs +1 -1
- package/lib/node_modules/.pnpm/@iconify_vue@5.0.0_vue@3.5.18_typescript@5.9.2_/node_modules/@iconify/vue/dist/iconify.cjs.map +1 -1
- package/lib/node_modules/.pnpm/sortablejs@1.14.0/node_modules/sortablejs/modular/sortable.esm.cjs +9 -0
- package/lib/node_modules/.pnpm/sortablejs@1.14.0/node_modules/sortablejs/modular/sortable.esm.cjs.map +1 -0
- package/lib/node_modules/.pnpm/vuedraggable@4.1.0_vue@3.5.18_typescript@5.9.2_/node_modules/vuedraggable/dist/vuedraggable.umd.cjs +2 -0
- package/lib/node_modules/.pnpm/vuedraggable@4.1.0_vue@3.5.18_typescript@5.9.2_/node_modules/vuedraggable/dist/vuedraggable.umd.cjs.map +1 -0
- package/lib/package.json.cjs +1 -1
- package/lib/src/alert/index.cjs +2 -0
- package/lib/src/alert/index.cjs.map +1 -0
- package/lib/src/alert/src/alert.cjs +2 -0
- package/lib/src/alert/src/alert.cjs.map +1 -0
- package/lib/src/components.cjs +1 -1
- package/lib/src/data-chart/src/components/area.vue2.cjs +1 -1
- package/lib/src/data-chart/src/components/area.vue2.cjs.map +1 -1
- package/lib/src/data-chart/src/components/card.vue2.cjs +1 -1
- package/lib/src/data-chart/src/components/card.vue2.cjs.map +1 -1
- package/lib/src/data-chart/src/components/line.vue2.cjs +1 -1
- package/lib/src/data-chart/src/components/line.vue2.cjs.map +1 -1
- package/lib/src/data-chart/src/components/pie.vue2.cjs +1 -1
- package/lib/src/data-chart/src/components/pie.vue2.cjs.map +1 -1
- package/lib/src/data-chart/src/components/table.vue.cjs +1 -1
- package/lib/src/data-chart/src/components/table.vue.cjs.map +1 -1
- package/lib/src/data-chart/src/data-chart.vue.cjs +1 -1
- package/lib/src/data-chart/src/data-chart.vue.cjs.map +1 -1
- package/lib/src/data-chart/src/utils/config.cjs +1 -1
- package/lib/src/data-chart/src/utils/config.cjs.map +1 -1
- package/lib/src/data-chart/src/utils/safe-eval.cjs +1 -1
- package/lib/src/data-chart/src/utils/safe-eval.cjs.map +1 -1
- package/lib/src/data-chart/src/utils/useCharts.cjs +1 -1
- package/lib/src/data-chart/src/utils/useCharts.cjs.map +1 -1
- package/lib/src/dialog/src/dialog.cjs +2 -0
- package/lib/src/dialog/src/dialog.cjs.map +1 -0
- package/lib/src/feedback-plugin/index.cjs +2 -0
- package/lib/src/feedback-plugin/index.cjs.map +1 -0
- package/lib/src/file-upload/src/file-upload.vue.cjs +1 -1
- package/lib/src/file-upload/src/file-upload.vue.cjs.map +1 -1
- package/lib/src/file-upload/src/file-upload.vue2.cjs +1 -1
- package/lib/src/file-upload/src/file-upload.vue2.cjs.map +1 -1
- package/lib/src/file-upload/src/file-upload.vue3.cjs +2 -0
- package/lib/src/file-upload/src/file-upload.vue3.cjs.map +1 -0
- package/lib/src/image-upload/src/image-upload.vue.cjs +1 -1
- package/lib/src/image-upload/src/image-upload.vue.cjs.map +1 -1
- package/lib/src/image-upload/src/image-upload.vue2.cjs +1 -1
- package/lib/src/image-upload/src/image-upload.vue2.cjs.map +1 -1
- package/lib/src/image-upload/src/image-upload.vue3.cjs +2 -0
- package/lib/src/image-upload/src/image-upload.vue3.cjs.map +1 -0
- package/lib/src/make-installer.cjs +1 -1
- package/lib/src/make-installer.cjs.map +1 -1
- package/lib/src/message/src/message.cjs +2 -0
- package/lib/src/message/src/message.cjs.map +1 -0
- package/lib/src/subject-action/src/subject-action.vue.cjs +1 -1
- package/lib/src/subject-action/src/subject-action.vue.cjs.map +1 -1
- package/lib/src/subject-layout/src/subject-layout.vue.cjs +1 -1
- package/lib/src/subject-layout/src/subject-layout.vue.cjs.map +1 -1
- package/lib/src/subject-list/src/components/SubjectPageEnd.vue.cjs +1 -1
- package/lib/src/subject-list/src/components/SubjectPageEnd.vue.cjs.map +1 -1
- package/lib/src/subject-list/src/components/SubjectRichText.vue.cjs +1 -1
- package/lib/src/subject-list/src/components/SubjectRichText.vue.cjs.map +1 -1
- package/lib/src/subject-list/src/components/subject-blank-fill.vue.cjs +1 -1
- package/lib/src/subject-list/src/components/subject-blank-fill.vue.cjs.map +1 -1
- package/lib/src/subject-list/src/components/subject-scale.vue.cjs +1 -1
- package/lib/src/subject-list/src/components/subject-scale.vue.cjs.map +1 -1
- package/lib/src/subject-list/src/components/subject-single.vue.cjs +1 -1
- package/lib/src/subject-list/src/components/subject-single.vue.cjs.map +1 -1
- package/lib/src/subject-list/src/components/subject-text-fill.vue.cjs +1 -1
- package/lib/src/subject-list/src/components/subject-text-fill.vue.cjs.map +1 -1
- package/lib/src/subject-list/src/subject-list.vue.cjs +1 -1
- package/lib/src/subject-list/src/subject-list.vue.cjs.map +1 -1
- package/lib/src/tiny-mce-editor/src/tiny-mce-editor.vue.cjs +1 -1
- package/lib/src/tiny-mce-editor/src/tiny-mce-editor.vue.cjs.map +1 -1
- package/lib/src/ui/button/index.cjs +2 -0
- package/lib/src/ui/button/index.cjs.map +1 -0
- package/lib/src/ui/checkbox/index.cjs +2 -0
- package/lib/src/ui/checkbox/index.cjs.map +1 -0
- package/lib/src/ui/dialog/index.cjs +2 -0
- package/lib/src/ui/dialog/index.cjs.map +1 -0
- package/lib/src/ui/input/index.cjs +2 -0
- package/lib/src/ui/input/index.cjs.map +1 -0
- package/lib/src/ui/input-number/index.cjs +2 -0
- package/lib/src/ui/input-number/index.cjs.map +1 -0
- package/lib/src/ui/layout/index.cjs +2 -0
- package/lib/src/ui/layout/index.cjs.map +1 -0
- package/lib/src/ui/link/index.cjs +2 -0
- package/lib/src/ui/link/index.cjs.map +1 -0
- package/lib/src/ui/popover/index.cjs +2 -0
- package/lib/src/ui/popover/index.cjs.map +1 -0
- package/lib/src/ui/radio/index.cjs +2 -0
- package/lib/src/ui/radio/index.cjs.map +1 -0
- package/lib/src/ui/scrollbar/index.cjs +2 -0
- package/lib/src/ui/scrollbar/index.cjs.map +1 -0
- package/lib/src/ui/select/index.cjs +2 -0
- package/lib/src/ui/select/index.cjs.map +1 -0
- package/lib/src/ui/table/index.cjs +2 -0
- package/lib/src/ui/table/index.cjs.map +1 -0
- package/lib/src/ui/tag/index.cjs +2 -0
- package/lib/src/ui/tag/index.cjs.map +1 -0
- package/package.json +3 -12
- package/theme-chalk/index.css +1 -1
- package/theme-chalk/index.scss +6 -2
- package/theme-chalk/src/common/qxs-components.css +1 -0
- package/theme-chalk/src/common/qxs-components.scss +4 -0
- package/theme-chalk/src/common/qxs-variables.css +1 -0
- package/theme-chalk/src/common/qxs-variables.scss +81 -0
- package/theme-chalk/src/dialog.css +1 -0
- package/theme-chalk/src/dialog.scss +122 -0
- package/theme-chalk/src/file-upload.css +0 -1
- package/theme-chalk/src/file-upload.scss +5 -32
- package/theme-chalk/src/fixed-action-bar.scss +1 -1
- package/theme-chalk/src/icon.scss +1 -1
- package/theme-chalk/src/image-upload.css +1 -1
- package/theme-chalk/src/image-upload.scss +22 -30
- package/theme-chalk/src/photo-crop-tool.scss +1 -1
- package/theme-chalk/src/subject-action.css +1 -1
- package/theme-chalk/src/subject-action.scss +45 -4
- package/theme-chalk/src/subject-layout.scss +1 -1
- package/theme-chalk/src/subject-list.css +1 -1
- package/theme-chalk/src/subject-list.scss +371 -93
- package/theme-chalk/src/subject-template.scss +1 -1
- package/theme-chalk/src/subject-type.css +1 -1
- package/theme-chalk/src/subject-type.scss +22 -12
- package/theme-chalk/src/tiny-mce-editor.scss +1 -1
- package/theme-chalk/src/ui/button.css +1 -0
- package/theme-chalk/src/ui/button.scss +173 -0
- package/theme-chalk/src/ui/input.css +1 -0
- package/theme-chalk/src/ui/input.scss +128 -0
- package/theme-chalk/src/ui/table.css +1 -0
- package/theme-chalk/src/ui/table.scss +166 -0
- package/types/src/alert/index.d.ts +66 -0
- package/types/src/alert/index.d.ts.map +1 -0
- package/types/src/alert/src/alert.d.ts +73 -0
- package/types/src/alert/src/alert.d.ts.map +1 -0
- package/types/src/components.d.ts +3 -0
- package/types/src/components.d.ts.map +1 -1
- package/types/src/data-chart/src/components/table.vue.d.ts.map +1 -1
- package/types/src/data-chart/src/utils/config.d.ts +4 -4
- package/types/src/dialog/index.d.ts +3 -0
- package/types/src/dialog/index.d.ts.map +1 -0
- package/types/src/dialog/src/dialog.d.ts +25 -0
- package/types/src/dialog/src/dialog.d.ts.map +1 -0
- package/types/src/feedback-plugin/index.d.ts +9 -0
- package/types/src/feedback-plugin/index.d.ts.map +1 -0
- package/types/src/file-upload/index.d.ts +16 -27
- package/types/src/file-upload/index.d.ts.map +1 -1
- package/types/src/file-upload/src/file-upload.vue.d.ts +27 -13
- package/types/src/file-upload/src/file-upload.vue.d.ts.map +1 -1
- package/types/src/icon/index.d.ts +3 -3
- package/types/src/icon/src/icon.d.ts +3 -3
- package/types/src/image-upload/index.d.ts +23 -44
- package/types/src/image-upload/index.d.ts.map +1 -1
- package/types/src/image-upload/src/image-upload.vue.d.ts +32 -42
- package/types/src/image-upload/src/image-upload.vue.d.ts.map +1 -1
- package/types/src/make-installer.d.ts +1 -4
- package/types/src/make-installer.d.ts.map +1 -1
- package/types/src/message/index.d.ts +3 -0
- package/types/src/message/index.d.ts.map +1 -0
- package/types/src/message/src/message.d.ts +21 -0
- package/types/src/message/src/message.d.ts.map +1 -0
- package/types/src/message/src/toaster.vue.d.ts +3 -0
- package/types/src/message/src/toaster.vue.d.ts.map +1 -0
- package/types/src/subject-action/src/subject-action.vue.d.ts.map +1 -1
- package/types/src/subject-layout/index.d.ts +2 -2
- package/types/src/subject-layout/src/subject-layout.vue.d.ts +2 -2
- package/types/src/subject-layout/src/subject-layout.vue.d.ts.map +1 -1
- package/types/src/subject-list/src/components/SubjectPageEnd.vue.d.ts +2 -2
- package/types/src/subject-list/src/components/SubjectRichText.vue.d.ts +2 -2
- package/types/src/subject-list/src/components/subject-blank-fill.vue.d.ts +2 -2
- package/types/src/subject-list/src/components/subject-blank-fill.vue.d.ts.map +1 -1
- package/types/src/subject-list/src/components/subject-scale.vue.d.ts +2 -2
- package/types/src/subject-list/src/components/subject-scale.vue.d.ts.map +1 -1
- package/types/src/subject-list/src/components/subject-single.vue.d.ts +2 -2
- package/types/src/subject-list/src/components/subject-single.vue.d.ts.map +1 -1
- package/types/src/subject-list/src/components/subject-text-fill.vue.d.ts +2 -2
- package/types/src/subject-list/src/components/subject-text-fill.vue.d.ts.map +1 -1
- package/types/src/subject-list/src/subject-list.vue.d.ts.map +1 -1
- package/types/src/ui/button/index.d.ts +96 -0
- package/types/src/ui/button/index.d.ts.map +1 -0
- package/types/src/ui/checkbox/index.d.ts +111 -0
- package/types/src/ui/checkbox/index.d.ts.map +1 -0
- package/types/src/ui/dialog/index.d.ts +134 -0
- package/types/src/ui/dialog/index.d.ts.map +1 -0
- package/types/src/ui/index.d.ts +16 -0
- package/types/src/ui/index.d.ts.map +1 -0
- package/types/src/ui/input/index.d.ts +132 -0
- package/types/src/ui/input/index.d.ts.map +1 -0
- package/types/src/ui/input-number/index.d.ts +106 -0
- package/types/src/ui/input-number/index.d.ts.map +1 -0
- package/types/src/ui/layout/index.d.ts +373 -0
- package/types/src/ui/layout/index.d.ts.map +1 -0
- package/types/src/ui/link/index.d.ts +57 -0
- package/types/src/ui/link/index.d.ts.map +1 -0
- package/types/src/ui/popover/index.d.ts +89 -0
- package/types/src/ui/popover/index.d.ts.map +1 -0
- package/types/src/ui/radio/index.d.ts +84 -0
- package/types/src/ui/radio/index.d.ts.map +1 -0
- package/types/src/ui/scrollbar/index.d.ts +35 -0
- package/types/src/ui/scrollbar/index.d.ts.map +1 -0
- package/types/src/ui/select/index.d.ts +113 -0
- package/types/src/ui/select/index.d.ts.map +1 -0
- package/types/src/ui/table/index.d.ts +152 -0
- package/types/src/ui/table/index.d.ts.map +1 -0
- package/types/src/ui/tag/index.d.ts +69 -0
- package/types/src/ui/tag/index.d.ts.map +1 -0
- package/types/tsconfig.tsbuildinfo +1 -1
- package/theme-chalk/src/common/element-plus-deps.css +0 -1
- package/theme-chalk/src/common/element-plus-deps.scss +0 -40
- package/theme-chalk/src/common/element-plus.css +0 -1
- package/theme-chalk/src/common/element-plus.scss +0 -606
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("vue"),t=require("@qxs-bns/hooks"),n=require("element-plus"),s=require("nanoid"),a=require("./components/subject-blank-fill.vue.cjs"),i=require("./components/subject-scale.vue.cjs"),o=require("./components/subject-single.vue.cjs"),l=require("./components/subject-text-fill.vue.cjs"),r=require("./components/SubjectPageEnd.vue.cjs"),c=require("./components/SubjectRichText.vue.cjs");const d={class:"subject-list-wrapper"};var u=e.defineComponent({name:"QxsSubjectList",__name:"subject-list",props:{subjectList:{type:Array,required:!0},isPreview:{type:Boolean,required:!0}},emits:["setRelation"],setup(u,{expose:p,emit:m}){const x=u,w=m,v=e.ref([]),y=e.useAttrs();p({addSubject:E,currentList:v,uploadExcel:function(e){v.value=v.value.concat(e)},addExam:function(e){let t=1;const n=[];e.forEach(e=>{const a={...e,customId:s.nanoid(),answerType:e.richTextContent?"rich_text":e.examTypeEnum,answers:e.answers?.map(e=>({...e,title:e.answer,answerId:e.examAnswerId,isCorrect:e.isCorrect}))||[],isSave:!1,isEdit:!0,isRealCanDel:!0,hasSet:!1};a.pageIndex>t&&(n.push({customId:s.nanoid(),answerType:"page_end",analysis:"",scaleQuestionList:[],isSave:!1,isEdit:!0,isRealCanDel:!0,hasSet:!1,examAnswerRelationType:0}),t=a.pageIndex),n.push(a)}),v.value=v.value.concat(n)},setAnswerRelation:function(e,t,n){const s=v.value.find(e=>e.customId===t);if(s){const t=s.answers?.find(e=>e.customAnswerId===n);t&&(t.answerRelations=e)}}});const f=e.computed(()=>{const e=v.value.filter(e=>"page_end"===e.answerType);return t=>{const n=e.findIndex(e=>e.customId===t);return-1!==n?n+1:0}});function h(){return e=>{let t=0,n=0;return v.value.forEach(s=>{"page_end"!==s.answerType&&(t++,e===s.customId&&(n=t))}),n-1}}function E(e,t=null,n=null){const a={customId:s.nanoid(),answerType:e,analysis:"",scaleQuestionList:[],isSave:!1,isEdit:!0,isRealCanDel:!0,hasSet:!1,examAnswerRelationType:n};null!==t?v.value.splice(t+1,0,a):v.value.push(a)}function k(e,t){if("up"===t&&e>0){const[t]=v.value.splice(e,1);v.value.splice(e-1,0,t)}else if("down"===t&&e<v.value.length-1){const[t]=v.value.splice(e,1);v.value.splice(e+1,0,t)}}function T(e,t){v.value[e]={...v.value[e],...t,isEdit:!1,examAnswerRelationType:t.examAnswerRelationType}}function S(e){v.value.splice(e,1),n.ElMessage.success("删除成功")}function A(e,t){w("setRelation",e,t)}e.watch(()=>x.subjectList,e=>{e&&(v.value=[...e])},{immediate:!0});const g=t.useNamespace("subject-list");return(t,n)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(e.unref(g).e("list-exam"))},[e.createElementVNode("div",d,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(v.value,(n,s)=>(e.openBlock(),e.createElementBlock("div",{key:n.customId,class:"subject-item"},[["single","multiple","sort"].includes(n.answerType)?(e.openBlock(),e.createBlock(o.default,e.mergeProps({key:0,ref_for:!0},e.unref(y),{"order-index":h()(n.customId),title:n.title,type:n.answerType,"exam-id":n.examId,"is-key":n.isKey,"is-save":!n.isRealCanDel,"custom-id":n.customId,"is-set":n.hasSet||!1,"answer-list":n.answers,analysis:n.analysis,"least-answer-count":n.leastAnswerCount,"is-edit":n.isEdit||!1,"show-action":!t.isPreview,"exam-expand":n.examExpand,"answer-check-type":n.answerCheckType,"exam-rich-text-content":n.examRichTextContent,"exam-answer-relation-type":n.examAnswerRelationType,onSetRelation:A,onMove:e=>k(s,e),onDelete:e=>S(s),onSave:e=>T(s,e),onEdit:e=>n.isEdit=!0,onAdd:(e,t)=>E(e,s,t)}),null,16,["order-index","title","type","exam-id","is-key","is-save","custom-id","is-set","answer-list","analysis","least-answer-count","is-edit","show-action","exam-expand","answer-check-type","exam-rich-text-content","exam-answer-relation-type","onMove","onDelete","onSave","onEdit","onAdd"])):"scale"===n.answerType?(e.openBlock(),e.createBlock(i.default,e.mergeProps({key:1,ref_for:!0},e.unref(y),{"order-index":h()(n.customId),title:n.title,"is-save":!n.isRealCanDel,"is-set":n.hasSet||!1,"answer-list":n.answers,analysis:n.analysis,"is-edit":n.isEdit||!1,"scale-question-list":n.scaleQuestionList,"show-action":!t.isPreview,"exam-rich-text-content":n.examRichTextContent,"exam-answer-relation-type":n.examAnswerRelationType,onMove:e=>k(s,e),onDelete:e=>S(s),onSave:e=>T(s,e),onEdit:e=>n.isEdit=!0,onAdd:e=>E(e,s,null)}),null,16,["order-index","title","is-save","is-set","answer-list","analysis","is-edit","scale-question-list","show-action","exam-rich-text-content","exam-answer-relation-type","onMove","onDelete","onSave","onEdit","onAdd"])):"blank_fill"===n.answerType?(e.openBlock(),e.createBlock(a.default,e.mergeProps({key:2,ref_for:!0},e.unref(y),{"order-index":h()(n.customId),title:n.title,"is-save":!n.isRealCanDel,"is-set":n.hasSet||!1,"answer-list":n.answers,analysis:n.analysis,"show-action":!t.isPreview,"is-edit":n.isEdit||!1,"exam-answer-setting-v-o":n.examAnswerSettingVO||{},"exam-rich-text-content":n.examRichTextContent,"exam-answer-relation-type":n.examAnswerRelationType,onMove:e=>k(s,e),onDelete:e=>S(s),onSave:e=>T(s,e),onEdit:e=>n.isEdit=!0,onAdd:e=>E(e,s,null)}),null,16,["order-index","title","is-save","is-set","answer-list","analysis","show-action","is-edit","exam-answer-setting-v-o","exam-rich-text-content","exam-answer-relation-type","onMove","onDelete","onSave","onEdit","onAdd"])):"text_fill"===n.answerType?(e.openBlock(),e.createBlock(l.default,e.mergeProps({key:3,ref_for:!0},e.unref(y),{"order-index":h()(n.customId),title:n.title,"is-save":!n.isRealCanDel,"is-set":n.hasSet||!1,"answer-list":n.answers,analysis:n.analysis,"show-action":!t.isPreview,"is-edit":n.isEdit||!1,"exam-expand":n.examExpand,"exam-answer-setting-v-o":n.examAnswerSettingVO||{},"exam-answer-relation-type":n.examAnswerRelationType,"exam-rich-text-content":n.examRichTextContent,onMove:e=>k(s,e),onDelete:e=>S(s),onSave:e=>T(s,e),onEdit:e=>n.isEdit=!0,onAdd:e=>E(e,s,null)}),null,16,["order-index","title","is-save","is-set","answer-list","analysis","show-action","is-edit","exam-expand","exam-answer-setting-v-o","exam-answer-relation-type","exam-rich-text-content","onMove","onDelete","onSave","onEdit","onAdd"])):"rich_text"===n.answerType?(e.openBlock(),e.createBlock(c.default,e.mergeProps({key:4,ref_for:!0},e.unref(y),{"order-index":h()(n.customId),"rich-text-content":n.richTextContent,"is-set":n.hasSet||!1,"is-save":!n.isRealCanDel,"is-edit":n.isEdit||!1,"show-action":!t.isPreview,"exam-answer-relation-type":n.examAnswerRelationType,onMove:e=>k(s,e),onDelete:e=>S(s),onSave:e=>T(s,e),onEdit:e=>n.isEdit=!0,onAdd:e=>E(e,s,null)}),null,16,["order-index","rich-text-content","is-set","is-save","is-edit","show-action","exam-answer-relation-type","onMove","onDelete","onSave","onEdit","onAdd"])):"page_end"===n.answerType?(e.openBlock(),e.createBlock(r.default,{key:s,"total-page":v.value.filter(e=>"page_end"===e.answerType).length,"current-page-index":f.value(n.customId),item:n,"is-edit":n.isEdit||!1,"is-set":n.hasSet||!1,"is-save":!n.isRealCanDel,"exam-answer-relation-type":n.examAnswerRelationType,onMove:e=>k(s,e),onDelete:e=>S(s),onSave:e=>T(s,e),onEdit:e=>n.isEdit=!0,onAdd:e=>E(e,s,null)},null,8,["total-page","current-page-index","item","is-edit","is-set","is-save","exam-answer-relation-type","onMove","onDelete","onSave","onEdit","onAdd"])):e.createCommentVNode("v-if",!0)]))),128))])],2))}});exports.default=u;
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("vue"),t=require("@qxs-bns/hooks"),s=require("nanoid"),n=require("../../../_virtual/vuedraggable.umd.cjs"),a=require("../../message/src/message.cjs"),i=require("../../ui/button/index.cjs");require("../../ui/input/index.cjs"),require("../../ui/radio/index.cjs"),require("../../ui/checkbox/index.cjs"),require("../../ui/link/index.cjs"),require("../../ui/tag/index.cjs"),require("../../ui/input-number/index.cjs"),require("../../ui/select/index.cjs"),require("../../ui/popover/index.cjs"),require("../../ui/layout/index.cjs"),require("../../ui/scrollbar/index.cjs"),require("../../ui/dialog/index.cjs"),require("../../ui/table/index.cjs"),require("../../icon/index.cjs");var o=require("./components/subject-blank-fill.vue.cjs"),l=require("./components/subject-scale.vue.cjs"),r=require("./components/subject-single.vue.cjs"),c=require("./components/subject-text-fill.vue.cjs"),d=require("./components/SubjectPageEnd.vue.cjs"),u=require("./components/SubjectRichText.vue.cjs");const m={class:"subject-list-wrapper"},x={key:0,class:"sort-mode-toggle"},p={key:1,class:"sort-list"},v={class:"sort-item"},w={class:"sort-index"},y={class:"sort-title"},h={class:"sort-type"},g={class:"subject-content"};var f=e.defineComponent({name:"QxsSubjectList",__name:"subject-list",props:{subjectList:{type:Array,required:!0},isPreview:{type:Boolean,required:!0}},emits:["setRelation"],setup(f,{expose:E,emit:k}){const j=f,C=k,T=e.ref([]),S=e.useAttrs();E({addSubject:A,currentList:T,uploadExcel:function(e){T.value=T.value.concat(e)},addExam:function(e){let t=1;const n=[];e.forEach(e=>{const a={...e,customId:s.nanoid(),answerType:e.richTextContent?"rich_text":e.examTypeEnum,answers:e.answers?.map(e=>({...e,title:e.answer,answerId:e.examAnswerId,isCorrect:e.isCorrect}))||[],isSave:!1,isEdit:!0,isRealCanDel:!0,hasSet:!1};a.pageIndex>t&&(n.push({customId:s.nanoid(),answerType:"page_end",analysis:"",scaleQuestionList:[],isSave:!1,isEdit:!0,isRealCanDel:!0,hasSet:!1,examAnswerRelationType:0}),t=a.pageIndex),n.push(a)}),T.value=T.value.concat(n)},setAnswerRelation:function(e,t,s){const n=T.value.find(e=>e.customId===t);if(n){const t=n.answers?.find(e=>e.customAnswerId===s);t&&(t.answerRelations=e)}}});const V=e.computed(()=>{const e=T.value.filter(e=>"page_end"===e.answerType);return t=>{const s=e.findIndex(e=>e.customId===t);return-1!==s?s+1:0}});function q(){return e=>{let t=0,s=0;return T.value.forEach(n=>{"page_end"!==n.answerType&&(t++,e===n.customId&&(s=t))}),s-1}}function A(e,t=null,n=null){const a={customId:s.nanoid(),answerType:e,analysis:"",scaleQuestionList:[],isSave:!1,isEdit:!0,isRealCanDel:!0,hasSet:!1,examAnswerRelationType:n,isKey:!1,answerCheckType:1};null!==t?T.value.splice(t+1,0,a):T.value.push(a)}function b(e,t){if("up"===t&&e>0){const[t]=T.value.splice(e,1);T.value.splice(e-1,0,t)}else if("down"===t&&e<T.value.length-1){const[t]=T.value.splice(e,1);T.value.splice(e+1,0,t)}}function B(e,t){T.value[e]={...T.value[e],...t,isEdit:!1,examAnswerRelationType:t.examAnswerRelationType}}function R(e){T.value.splice(e,1),a.QxsMessage.success("删除成功")}function _(e,t){C("setRelation",e,t)}e.watch(()=>j.subjectList,e=>{e&&(T.value=[...e])},{immediate:!0});const D=t.useNamespace("subject-list"),N=e.ref(!1);function I(){N.value=!N.value}return(t,s)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(e.unref(D).e("list-exam"))},[e.createElementVNode("div",m,[e.createCommentVNode(" 排序模式切换按钮 "),!t.isPreview&&T.value.length>1?(e.openBlock(),e.createElementBlock("div",x,[N.value?(e.openBlock(),e.createBlock(e.unref(i.QxsButton),{key:1,size:"small",type:"primary",onClick:I},{default:e.withCtx(()=>s[4]||(s[4]=[e.createTextVNode(" 完成排序 ",-1)])),_:1,__:[4]})):(e.openBlock(),e.createBlock(e.unref(i.QxsButton),{key:0,size:"small",onClick:I},{icon:e.withCtx(()=>s[2]||(s[2]=[e.createElementVNode("svg",{xmlns:"http://www.w3.org/2000/svg",width:"14",height:"14",viewBox:"0 0 24 24",fill:"currentColor"},[e.createElementVNode("path",{d:"M3 18h6v-2H3v2zM3 6v2h18V6H3zm0 7h12v-2H3v2z"})],-1)])),default:e.withCtx(()=>[s[3]||(s[3]=e.createTextVNode(" 排序 ",-1))]),_:1,__:[3]}))])):e.createCommentVNode("v-if",!0),e.createCommentVNode(" 排序模式:轻量列表 "),N.value?(e.openBlock(),e.createElementBlock("div",p,[e.createVNode(e.unref(n.default),{modelValue:T.value,"onUpdate:modelValue":s[0]||(s[0]=e=>T.value=e),"item-key":"customId","ghost-class":"sort-ghost","chosen-class":"sort-chosen","drag-class":"sort-drag",animation:200},{item:e.withCtx(({element:t,index:n})=>{return[e.createElementVNode("div",v,[s[5]||(s[5]=e.createElementVNode("div",{class:"sort-handle"},[e.createElementVNode("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"currentColor"},[e.createElementVNode("path",{d:"M11 18c0 1.1-.9 2-2 2s-2-.9-2-2 .9-2 2-2 2 .9 2 2zm-2-8c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0-6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm6 4c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"})])],-1)),e.createElementVNode("span",w,e.toDisplayString(n+1)+".",1),e.createElementVNode("span",y,e.toDisplayString(t.title||"未命名题目"),1),e.createElementVNode("span",h,e.toDisplayString((a=t.answerType,{single:"单选题",multiple:"多选题",sort:"排序题",blank_fill:"填空题",text_fill:"填空题",scale:"量表题",rich_text:"富文本",page_end:"分页符"}[a]||"未知类型")),1)])];var a}),_:1},8,["modelValue"])])):(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[e.createCommentVNode(" 正常模式:完整内容 "),e.createVNode(e.unref(n.default),{modelValue:T.value,"onUpdate:modelValue":s[1]||(s[1]=e=>T.value=e),"item-key":"customId",handle:".drag-handle",disabled:t.isPreview,"ghost-class":"ghost","chosen-class":"chosen","drag-class":"dragging"},{item:e.withCtx(({element:s,index:n})=>[e.createElementVNode("div",{class:e.normalizeClass(["subject-item",{"is-preview":t.isPreview}])},[e.createElementVNode("div",g,[["single","multiple","sort"].includes(s.answerType)?(e.openBlock(),e.createBlock(r.default,e.mergeProps({key:0},e.unref(S),{"order-index":q()(s.customId),title:s.title,type:s.answerType,"exam-id":s.examId,"is-key":s.isKey,"is-save":!s.isRealCanDel,"custom-id":s.customId,"is-set":s.hasSet||!1,"answer-list":s.answers,analysis:s.analysis,"least-answer-count":s.leastAnswerCount,"is-edit":s.isEdit||!1,"show-action":!t.isPreview,"exam-expand":s.examExpand,"answer-check-type":s.answerCheckType,"exam-rich-text-content":s.examRichTextContent,"exam-answer-relation-type":s.examAnswerRelationType,onSetRelation:_,onMove:e=>b(n,e),onDelete:e=>R(n),onSave:e=>B(n,e),onEdit:e=>s.isEdit=!0,onAdd:(e,t)=>A(e,n,t)}),null,16,["order-index","title","type","exam-id","is-key","is-save","custom-id","is-set","answer-list","analysis","least-answer-count","is-edit","show-action","exam-expand","answer-check-type","exam-rich-text-content","exam-answer-relation-type","onMove","onDelete","onSave","onEdit","onAdd"])):"scale"===s.answerType?(e.openBlock(),e.createBlock(l.default,e.mergeProps({key:1},e.unref(S),{"order-index":q()(s.customId),title:s.title,"is-save":!s.isRealCanDel,"is-set":s.hasSet||!1,"answer-list":s.answers,analysis:s.analysis,"is-edit":s.isEdit||!1,"scale-question-list":s.scaleQuestionList,"show-action":!t.isPreview,"exam-rich-text-content":s.examRichTextContent,"exam-answer-relation-type":s.examAnswerRelationType,onMove:e=>b(n,e),onDelete:e=>R(n),onSave:e=>B(n,e),onEdit:e=>s.isEdit=!0,onAdd:e=>A(e,n,null)}),null,16,["order-index","title","is-save","is-set","answer-list","analysis","is-edit","scale-question-list","show-action","exam-rich-text-content","exam-answer-relation-type","onMove","onDelete","onSave","onEdit","onAdd"])):"blank_fill"===s.answerType?(e.openBlock(),e.createBlock(o.default,e.mergeProps({key:2},e.unref(S),{"order-index":q()(s.customId),title:s.title,"is-save":!s.isRealCanDel,"is-set":s.hasSet||!1,"answer-list":s.answers,analysis:s.analysis,"show-action":!t.isPreview,"is-edit":s.isEdit||!1,"exam-answer-setting-v-o":s.examAnswerSettingVO||{},"exam-rich-text-content":s.examRichTextContent,"exam-answer-relation-type":s.examAnswerRelationType,onMove:e=>b(n,e),onDelete:e=>R(n),onSave:e=>B(n,e),onEdit:e=>s.isEdit=!0,onAdd:e=>A(e,n,null)}),null,16,["order-index","title","is-save","is-set","answer-list","analysis","show-action","is-edit","exam-answer-setting-v-o","exam-rich-text-content","exam-answer-relation-type","onMove","onDelete","onSave","onEdit","onAdd"])):"text_fill"===s.answerType?(e.openBlock(),e.createBlock(c.default,e.mergeProps({key:3},e.unref(S),{"order-index":q()(s.customId),title:s.title,"is-save":!s.isRealCanDel,"is-set":s.hasSet||!1,"answer-list":s.answers,analysis:s.analysis,"show-action":!t.isPreview,"is-edit":s.isEdit||!1,"exam-expand":s.examExpand,"exam-answer-setting-v-o":s.examAnswerSettingVO||{},"exam-answer-relation-type":s.examAnswerRelationType,"exam-rich-text-content":s.examRichTextContent,onMove:e=>b(n,e),onDelete:e=>R(n),onSave:e=>B(n,e),onEdit:e=>s.isEdit=!0,onAdd:e=>A(e,n,null)}),null,16,["order-index","title","is-save","is-set","answer-list","analysis","show-action","is-edit","exam-expand","exam-answer-setting-v-o","exam-answer-relation-type","exam-rich-text-content","onMove","onDelete","onSave","onEdit","onAdd"])):"rich_text"===s.answerType?(e.openBlock(),e.createBlock(u.default,e.mergeProps({key:4},e.unref(S),{"order-index":q()(s.customId),"rich-text-content":s.richTextContent,"is-set":s.hasSet||!1,"is-save":!s.isRealCanDel,"is-edit":s.isEdit||!1,"show-action":!t.isPreview,"exam-answer-relation-type":s.examAnswerRelationType,onMove:e=>b(n,e),onDelete:e=>R(n),onSave:e=>B(n,e),onEdit:e=>s.isEdit=!0,onAdd:e=>A(e,n,null)}),null,16,["order-index","rich-text-content","is-set","is-save","is-edit","show-action","exam-answer-relation-type","onMove","onDelete","onSave","onEdit","onAdd"])):"page_end"===s.answerType?(e.openBlock(),e.createBlock(d.default,{key:n,"total-page":T.value.filter(e=>"page_end"===e.answerType).length,"current-page-index":V.value(s.customId),item:s,"is-edit":s.isEdit||!1,"is-set":s.hasSet||!1,"is-save":!s.isRealCanDel,"exam-answer-relation-type":s.examAnswerRelationType,onMove:e=>b(n,e),onDelete:e=>R(n),onSave:e=>B(n,e),onEdit:e=>s.isEdit=!0,onAdd:e=>A(e,n,null)},null,8,["total-page","current-page-index","item","is-edit","is-set","is-save","exam-answer-relation-type","onMove","onDelete","onSave","onEdit","onAdd"])):e.createCommentVNode("v-if",!0)]),e.createCommentVNode(" 关闭 subject-content ")],2)]),_:1},8,["modelValue","disabled"])],64))])],2))}});exports.default=f;
|
|
2
2
|
//# sourceMappingURL=subject-list.vue.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subject-list.vue.cjs","sources":["../../../../../../packages/components/src/subject-list/src/subject-list.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { useNamespace } from '@qxs-bns/hooks'\nimport { ElMessage } from 'element-plus'\nimport { nanoid } from 'nanoid'\nimport { computed, ref, useAttrs, watch } from 'vue'\nimport SubjectBlankFill from './components/subject-blank-fill.vue'\nimport SubjectScale from './components/subject-scale.vue'\nimport SubjectSingle from './components/subject-single.vue'\nimport SubjectTextFill from './components/subject-text-fill.vue'\nimport SubjectPageEnd from './components/SubjectPageEnd.vue'\nimport SubjectRichText from './components/SubjectRichText.vue'\n\ndefineOptions({\n name: 'QxsSubjectList',\n})\n\nconst props = defineProps<{\n subjectList: any[]\n isPreview: boolean\n}>()\nconst emits = defineEmits(['setRelation'])\nconst currentList = ref([] as any)\nconst attrs = useAttrs()\n\ndefineExpose({\n addSubject,\n currentList,\n uploadExcel,\n addExam,\n setAnswerRelation,\n})\n\nfunction totalPageIndex() {\n return currentList.value.filter((v: any) => v.answerType === 'page_end').length\n}\n\nconst currentPageIndex = computed(() => {\n const currentPageList = currentList.value.filter((v: any) => v.answerType === 'page_end')\n return (currentId: string) => {\n const currentIndex = currentPageList.findIndex((c: any) => c.customId === currentId)\n return currentIndex !== -1 ? currentIndex + 1 : 0\n }\n})\n\nfunction currentIndex() {\n return (currentExamId: string) => {\n let current = 0\n let output = 0\n\n // 遍历 currentList,过滤掉分页器,并计算题目序号\n currentList.value.forEach((v: any) => {\n if (v.answerType !== 'page_end') { // 排除分页器\n current++\n if (currentExamId === v.customId) { // 匹配当前题目 ID\n output = current\n }\n }\n })\n\n return output - 1\n }\n}\n\nfunction addSubject(type: string, index: number | null = null, examAnswerRelationType: number | null = null) {\n const newSubject = {\n customId: nanoid(),\n answerType: type,\n analysis: '',\n scaleQuestionList: [],\n isSave: false,\n isEdit: true,\n isRealCanDel: true,\n hasSet: false,\n examAnswerRelationType,\n }\n\n if (index !== null) {\n currentList.value.splice(index + 1, 0, newSubject)\n }\n else {\n currentList.value.push(newSubject)\n }\n}\nfunction addExam(items: any[]) {\n let currentIndex = 1\n const newList: any[] = []\n\n items.forEach((v: any) => {\n // 创建新的题目对象\n const newItem = {\n ...v,\n customId: nanoid(),\n answerType: v.richTextContent ? 'rich_text' : v.examTypeEnum,\n answers: v.answers?.map((c: any) => ({\n ...c,\n title: c.answer,\n answerId: c.examAnswerId,\n isCorrect: c.isCorrect,\n })) || [],\n isSave: false,\n isEdit: true,\n isRealCanDel: true,\n hasSet: false,\n }\n\n // 如果当前题目的 pageIndex 和 currentIndex 不一致,则插入分页器\n if (newItem.pageIndex > currentIndex) {\n newList.push({\n customId: nanoid(),\n answerType: 'page_end',\n analysis: '',\n scaleQuestionList: [],\n isSave: false,\n isEdit: true,\n isRealCanDel: true,\n hasSet: false,\n examAnswerRelationType: 0,\n })\n currentIndex = newItem.pageIndex\n }\n\n // 将题目添加到 newList\n newList.push(newItem)\n })\n\n // 更新 currentList\n currentList.value = currentList.value.concat(newList)\n}\nfunction uploadExcel(list: any[]) {\n currentList.value = currentList.value.concat(list)\n}\n\nfunction move(index: number, type: 'up' | 'down') {\n if (type === 'up' && index > 0) {\n const [item] = currentList.value.splice(index, 1)\n currentList.value.splice(index - 1, 0, item)\n }\n else if (type === 'down' && index < currentList.value.length - 1) {\n const [item] = currentList.value.splice(index, 1)\n currentList.value.splice(index + 1, 0, item)\n }\n}\n\nfunction saveSubject(index: number, item: any) {\n currentList.value[index] = {\n ...currentList.value[index],\n ...item,\n isEdit: false,\n examAnswerRelationType: item.examAnswerRelationType,\n }\n}\n\nfunction deleteSubject(index: number) {\n currentList.value.splice(index, 1)\n ElMessage.success('删除成功')\n}\n\nfunction setRelation(customId: number, examAnswers: any) {\n emits('setRelation', customId, examAnswers)\n}\n\nfunction setAnswerRelation(answerRelations: any, customId: string, customAnswerId: string) {\n const targetItem = currentList.value.find((v: any) => v.customId === customId)\n if (targetItem) {\n const targetAnswer = targetItem.answers?.find((c: any) => c.customAnswerId === customAnswerId)\n if (targetAnswer) {\n targetAnswer.answerRelations = answerRelations\n }\n }\n}\n\nwatch(() => props.subjectList, (newList: any) => {\n if (newList) {\n currentList.value = [...newList]\n }\n}, { immediate: true })\n\nconst ns = useNamespace('subject-list')\n</script>\n\n<template>\n <div :class=\"ns.e('list-exam')\">\n <div class=\"subject-list-wrapper\">\n <div\n v-for=\"(item, index) in currentList\"\n :key=\"item.customId\"\n class=\"subject-item\"\n >\n <template v-if=\"['single', 'multiple', 'sort'].includes(item.answerType)\">\n <SubjectSingle\n v-bind=\"attrs\"\n :order-index=\"currentIndex()(item.customId)\"\n :title=\"item.title\"\n :type=\"item.answerType\"\n :exam-id=\"item.examId\"\n :is-key=\"item.isKey\"\n :is-save=\"!item.isRealCanDel\"\n :custom-id=\"item.customId\"\n :is-set=\"item.hasSet || false\"\n :answer-list=\"item.answers\"\n :analysis=\"item.analysis\"\n :least-answer-count=\"item.leastAnswerCount\"\n :is-edit=\"item.isEdit || false\"\n :show-action=\"!isPreview\"\n :exam-expand=\"item.examExpand\"\n :answer-check-type=\"item.answerCheckType\"\n :exam-rich-text-content=\"item.examRichTextContent\"\n :exam-answer-relation-type=\"item.examAnswerRelationType\"\n @set-relation=\"setRelation\"\n @move=\"(type: 'up' | 'down') => move(index, type)\"\n @delete=\"deleteSubject(index)\"\n @save=\"(item: any) => saveSubject(index, item)\"\n @edit=\"item.isEdit = true\"\n @add=\"(type: string, examAnswerRelationType: number) => addSubject(type, index, examAnswerRelationType)\"\n />\n </template>\n <SubjectScale\n v-else-if=\"item.answerType === 'scale'\"\n v-bind=\"attrs\"\n :order-index=\"currentIndex()(item.customId)\"\n :title=\"item.title\"\n :is-save=\"!item.isRealCanDel\"\n :is-set=\"item.hasSet || false\"\n :answer-list=\"item.answers\"\n :analysis=\"item.analysis\"\n :is-edit=\"item.isEdit || false\"\n :scale-question-list=\"item.scaleQuestionList\"\n :show-action=\"!isPreview\"\n :exam-rich-text-content=\"item.examRichTextContent\"\n :exam-answer-relation-type=\"item.examAnswerRelationType\"\n @move=\"(type: 'up' | 'down') => move(index, type)\"\n @delete=\"deleteSubject(index)\"\n @save=\"(item: any) => saveSubject(index, item)\"\n @edit=\"item.isEdit = true\"\n @add=\"(type: string) => addSubject(type, index, null)\"\n />\n <SubjectBlankFill\n v-else-if=\"item.answerType === 'blank_fill'\"\n v-bind=\"attrs\"\n :order-index=\"currentIndex()(item.customId)\"\n :title=\"item.title\"\n :is-save=\"!item.isRealCanDel\"\n :is-set=\"item.hasSet || false\"\n :answer-list=\"item.answers\"\n :analysis=\"item.analysis\"\n :show-action=\"!isPreview\"\n :is-edit=\"item.isEdit || false\"\n :exam-answer-setting-v-o=\"item.examAnswerSettingVO || {}\"\n :exam-rich-text-content=\"item.examRichTextContent\"\n :exam-answer-relation-type=\"item.examAnswerRelationType\"\n @move=\"(type: 'up' | 'down') => move(index, type)\"\n @delete=\"deleteSubject(index)\"\n @save=\"(item: any) => saveSubject(index, item)\"\n @edit=\"item.isEdit = true\"\n @add=\"(type: string) => addSubject(type, index, null)\"\n />\n <SubjectTextFill\n v-else-if=\"item.answerType === 'text_fill'\"\n v-bind=\"attrs\"\n :order-index=\"currentIndex()(item.customId)\"\n :title=\"item.title\"\n :is-save=\"!item.isRealCanDel\"\n :is-set=\"item.hasSet || false\"\n :answer-list=\"item.answers\"\n :analysis=\"item.analysis\"\n :show-action=\"!isPreview\"\n :is-edit=\"item.isEdit || false\"\n :exam-expand=\"item.examExpand\"\n :exam-answer-setting-v-o=\"item.examAnswerSettingVO || {}\"\n :exam-answer-relation-type=\"item.examAnswerRelationType\"\n :exam-rich-text-content=\"item.examRichTextContent\"\n @move=\"(type: 'up' | 'down') => move(index, type)\"\n @delete=\"deleteSubject(index)\"\n @save=\"(item: any) => saveSubject(index, item)\"\n @edit=\"item.isEdit = true\"\n @add=\"(type: string) => addSubject(type, index, null)\"\n />\n <SubjectRichText\n v-else-if=\"item.answerType === 'rich_text'\"\n v-bind=\"attrs\"\n :order-index=\"currentIndex()(item.customId)\"\n :rich-text-content=\"item.richTextContent\"\n :is-set=\"item.hasSet || false\"\n :is-save=\"!item.isRealCanDel\"\n :is-edit=\"item.isEdit || false\"\n :show-action=\"!isPreview\"\n :exam-answer-relation-type=\"item.examAnswerRelationType\"\n @move=\"(type: 'up' | 'down') => move(index, type)\"\n @delete=\"deleteSubject(index)\"\n @save=\"(item: any) => saveSubject(index, item)\"\n @edit=\"item.isEdit = true\"\n @add=\"(type: string) => addSubject(type, index, null)\"\n />\n <SubjectPageEnd\n v-else-if=\"item.answerType === 'page_end'\"\n :key=\"index\"\n :total-page=\"totalPageIndex()\"\n :current-page-index=\"currentPageIndex(item.customId)\"\n :item=\"item\"\n :is-edit=\"item.isEdit || false\"\n :is-set=\"item.hasSet || false\"\n :is-save=\"!item.isRealCanDel\"\n :exam-answer-relation-type=\"item.examAnswerRelationType\"\n @move=\"(type: 'up' | 'down') => move(index, type)\"\n @delete=\"deleteSubject(index)\"\n @save=\"(item: any) => saveSubject(index, item)\"\n @edit=\"item.isEdit = true\"\n @add=\"(type: string) => addSubject(type, index, null)\"\n />\n </div>\n </div>\n </div>\n</template>\n"],"names":["props","__props","emits","__emit","currentList","ref","attrs","useAttrs","__expose","addSubject","uploadExcel","list","value","concat","addExam","items","currentIndex","newList","forEach","v","newItem","customId","nanoid","answerType","richTextContent","examTypeEnum","answers","map","c","title","answer","answerId","examAnswerId","isCorrect","isSave","isEdit","isRealCanDel","hasSet","pageIndex","push","analysis","scaleQuestionList","examAnswerRelationType","setAnswerRelation","answerRelations","customAnswerId","targetItem","find","targetAnswer","currentPageIndex","computed","currentPageList","filter","currentId","findIndex","currentExamId","current","output","type","index","newSubject","splice","move","item","length","saveSubject","deleteSubject","ElMessage","success","setRelation","examAnswers","watch","subjectList","immediate","ns","useNamespace","_createElementBlock","class","_normalizeClass","_unref","e","_createElementVNode","_hoisted_1","_openBlock","_Fragment","_renderList","key","includes","_createBlock","SubjectSingle","_mergeProps","examId","isKey","leastAnswerCount","isPreview","examExpand","answerCheckType","examRichTextContent","onSetRelation","onMove","onDelete","$event","onSave","onEdit","onAdd","SubjectScale","SubjectBlankFill","examAnswerSettingVO","SubjectTextFill","SubjectRichText","SubjectPageEnd"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"subject-list.vue.cjs","sources":["../../../../../../packages/components/src/subject-list/src/subject-list.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { useNamespace } from '@qxs-bns/hooks'\nimport { nanoid } from 'nanoid'\nimport { computed, ref, useAttrs, watch } from 'vue'\nimport draggable from 'vuedraggable'\nimport { QxsMessage } from '../../message'\nimport { QxsButton } from '../../ui'\nimport SubjectBlankFill from './components/subject-blank-fill.vue'\nimport SubjectScale from './components/subject-scale.vue'\nimport SubjectSingle from './components/subject-single.vue'\nimport SubjectTextFill from './components/subject-text-fill.vue'\nimport SubjectPageEnd from './components/SubjectPageEnd.vue'\nimport SubjectRichText from './components/SubjectRichText.vue'\n\ndefineOptions({\n name: 'QxsSubjectList',\n})\n\nconst props = defineProps<{\n subjectList: any[]\n isPreview: boolean\n}>()\nconst emits = defineEmits(['setRelation'])\nconst currentList = ref([] as any)\nconst attrs = useAttrs()\n\ndefineExpose({\n addSubject,\n currentList,\n uploadExcel,\n addExam,\n setAnswerRelation,\n})\n\nfunction totalPageIndex() {\n return currentList.value.filter((v: any) => v.answerType === 'page_end').length\n}\n\nconst currentPageIndex = computed(() => {\n const currentPageList = currentList.value.filter((v: any) => v.answerType === 'page_end')\n return (currentId: string) => {\n const currentIndex = currentPageList.findIndex((c: any) => c.customId === currentId)\n return currentIndex !== -1 ? currentIndex + 1 : 0\n }\n})\n\nfunction currentIndex() {\n return (currentExamId: string) => {\n let current = 0\n let output = 0\n\n // 遍历 currentList,过滤掉分页器,并计算题目序号\n currentList.value.forEach((v: any) => {\n if (v.answerType !== 'page_end') { // 排除分页器\n current++\n if (currentExamId === v.customId) { // 匹配当前题目 ID\n output = current\n }\n }\n })\n\n return output - 1\n }\n}\n\nfunction addSubject(type: string, index: number | null = null, examAnswerRelationType: number | null = null) {\n const newSubject = {\n customId: nanoid(),\n answerType: type,\n analysis: '',\n scaleQuestionList: [],\n isSave: false,\n isEdit: true,\n isRealCanDel: true,\n hasSet: false,\n examAnswerRelationType,\n isKey: false,\n answerCheckType: 1,\n }\n\n if (index !== null) {\n currentList.value.splice(index + 1, 0, newSubject)\n }\n else {\n currentList.value.push(newSubject)\n }\n}\nfunction addExam(items: any[]) {\n let currentIndex = 1\n const newList: any[] = []\n\n items.forEach((v: any) => {\n // 创建新的题目对象\n const newItem = {\n ...v,\n customId: nanoid(),\n answerType: v.richTextContent ? 'rich_text' : v.examTypeEnum,\n answers: v.answers?.map((c: any) => ({\n ...c,\n title: c.answer,\n answerId: c.examAnswerId,\n isCorrect: c.isCorrect,\n })) || [],\n isSave: false,\n isEdit: true,\n isRealCanDel: true,\n hasSet: false,\n }\n\n // 如果当前题目的 pageIndex 和 currentIndex 不一致,则插入分页器\n if (newItem.pageIndex > currentIndex) {\n newList.push({\n customId: nanoid(),\n answerType: 'page_end',\n analysis: '',\n scaleQuestionList: [],\n isSave: false,\n isEdit: true,\n isRealCanDel: true,\n hasSet: false,\n examAnswerRelationType: 0,\n })\n currentIndex = newItem.pageIndex\n }\n\n // 将题目添加到 newList\n newList.push(newItem)\n })\n\n // 更新 currentList\n currentList.value = currentList.value.concat(newList)\n}\nfunction uploadExcel(list: any[]) {\n currentList.value = currentList.value.concat(list)\n}\n\nfunction move(index: number, type: 'up' | 'down') {\n if (type === 'up' && index > 0) {\n const [item] = currentList.value.splice(index, 1)\n currentList.value.splice(index - 1, 0, item)\n }\n else if (type === 'down' && index < currentList.value.length - 1) {\n const [item] = currentList.value.splice(index, 1)\n currentList.value.splice(index + 1, 0, item)\n }\n}\n\nfunction saveSubject(index: number, item: any) {\n currentList.value[index] = {\n ...currentList.value[index],\n ...item,\n isEdit: false,\n examAnswerRelationType: item.examAnswerRelationType,\n }\n}\n\nfunction deleteSubject(index: number) {\n currentList.value.splice(index, 1)\n QxsMessage.success('删除成功')\n}\n\nfunction setRelation(customId: number, examAnswers: any) {\n emits('setRelation', customId, examAnswers)\n}\n\nfunction setAnswerRelation(answerRelations: any, customId: string, customAnswerId: string) {\n const targetItem = currentList.value.find((v: any) => v.customId === customId)\n if (targetItem) {\n const targetAnswer = targetItem.answers?.find((c: any) => c.customAnswerId === customAnswerId)\n if (targetAnswer) {\n targetAnswer.answerRelations = answerRelations\n }\n }\n}\n\nwatch(() => props.subjectList, (newList: any) => {\n if (newList) {\n currentList.value = [...newList]\n }\n}, { immediate: true })\n\nconst ns = useNamespace('subject-list')\n\n// 排序模式\nconst sortMode = ref(false)\n\nfunction toggleSortMode() {\n sortMode.value = !sortMode.value\n}\n\nfunction getSubjectTypeLabel(type: string) {\n const typeMap: Record<string, string> = {\n single: '单选题',\n multiple: '多选题',\n sort: '排序题',\n blank_fill: '填空题',\n text_fill: '填空题',\n scale: '量表题',\n rich_text: '富文本',\n page_end: '分页符',\n }\n return typeMap[type] || '未知类型'\n}\n</script>\n\n<template>\n <div :class=\"ns.e('list-exam')\">\n <div class=\"subject-list-wrapper\">\n <!-- 排序模式切换按钮 -->\n <div\n v-if=\"!isPreview && currentList.length > 1\"\n class=\"sort-mode-toggle\"\n >\n <QxsButton\n v-if=\"!sortMode\"\n size=\"small\"\n @click=\"toggleSortMode\"\n >\n <template #icon>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n >\n <path d=\"M3 18h6v-2H3v2zM3 6v2h18V6H3zm0 7h12v-2H3v2z\" />\n </svg>\n </template>\n 排序\n </QxsButton>\n <QxsButton\n v-else\n size=\"small\"\n type=\"primary\"\n @click=\"toggleSortMode\"\n >\n 完成排序\n </QxsButton>\n </div>\n\n <!-- 排序模式:轻量列表 -->\n <div\n v-if=\"sortMode\"\n class=\"sort-list\"\n >\n <draggable\n v-model=\"currentList\"\n item-key=\"customId\"\n ghost-class=\"sort-ghost\"\n chosen-class=\"sort-chosen\"\n drag-class=\"sort-drag\"\n :animation=\"200\"\n >\n <template #item=\"{ element: item, index }\">\n <div class=\"sort-item\">\n <div class=\"sort-handle\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n >\n <path d=\"M11 18c0 1.1-.9 2-2 2s-2-.9-2-2 .9-2 2-2 2 .9 2 2zm-2-8c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0-6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm6 4c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z\" />\n </svg>\n </div>\n <span class=\"sort-index\">{{ index + 1 }}.</span>\n <span class=\"sort-title\">{{ item.title || '未命名题目' }}</span>\n <span class=\"sort-type\">{{ getSubjectTypeLabel(item.answerType) }}</span>\n </div>\n </template>\n </draggable>\n </div>\n\n <!-- 正常模式:完整内容 -->\n <template v-else>\n <draggable\n v-model=\"currentList\"\n item-key=\"customId\"\n handle=\".drag-handle\"\n :disabled=\"isPreview\"\n ghost-class=\"ghost\"\n chosen-class=\"chosen\"\n drag-class=\"dragging\"\n >\n <template #item=\"{ element: item, index }\">\n <div\n class=\"subject-item\"\n :class=\"{ 'is-preview': isPreview }\"\n >\n <div class=\"subject-content\">\n <template v-if=\"['single', 'multiple', 'sort'].includes(item.answerType)\">\n <SubjectSingle\n v-bind=\"attrs\"\n :order-index=\"currentIndex()(item.customId)\"\n :title=\"item.title\"\n :type=\"item.answerType\"\n :exam-id=\"item.examId\"\n :is-key=\"item.isKey\"\n :is-save=\"!item.isRealCanDel\"\n :custom-id=\"item.customId\"\n :is-set=\"item.hasSet || false\"\n :answer-list=\"item.answers\"\n :analysis=\"item.analysis\"\n :least-answer-count=\"item.leastAnswerCount\"\n :is-edit=\"item.isEdit || false\"\n :show-action=\"!isPreview\"\n :exam-expand=\"item.examExpand\"\n :answer-check-type=\"item.answerCheckType\"\n :exam-rich-text-content=\"item.examRichTextContent\"\n :exam-answer-relation-type=\"item.examAnswerRelationType\"\n @set-relation=\"setRelation\"\n @move=\"(type: 'up' | 'down') => move(index, type)\"\n @delete=\"deleteSubject(index)\"\n @save=\"(item: any) => saveSubject(index, item)\"\n @edit=\"item.isEdit = true\"\n @add=\"(type: string, examAnswerRelationType: number) => addSubject(type, index, examAnswerRelationType)\"\n />\n </template>\n <SubjectScale\n v-else-if=\"item.answerType === 'scale'\"\n v-bind=\"attrs\"\n :order-index=\"currentIndex()(item.customId)\"\n :title=\"item.title\"\n :is-save=\"!item.isRealCanDel\"\n :is-set=\"item.hasSet || false\"\n :answer-list=\"item.answers\"\n :analysis=\"item.analysis\"\n :is-edit=\"item.isEdit || false\"\n :scale-question-list=\"item.scaleQuestionList\"\n :show-action=\"!isPreview\"\n :exam-rich-text-content=\"item.examRichTextContent\"\n :exam-answer-relation-type=\"item.examAnswerRelationType\"\n @move=\"(type: 'up' | 'down') => move(index, type)\"\n @delete=\"deleteSubject(index)\"\n @save=\"(item: any) => saveSubject(index, item)\"\n @edit=\"item.isEdit = true\"\n @add=\"(type: string) => addSubject(type, index, null)\"\n />\n <SubjectBlankFill\n v-else-if=\"item.answerType === 'blank_fill'\"\n v-bind=\"attrs\"\n :order-index=\"currentIndex()(item.customId)\"\n :title=\"item.title\"\n :is-save=\"!item.isRealCanDel\"\n :is-set=\"item.hasSet || false\"\n :answer-list=\"item.answers\"\n :analysis=\"item.analysis\"\n :show-action=\"!isPreview\"\n :is-edit=\"item.isEdit || false\"\n :exam-answer-setting-v-o=\"item.examAnswerSettingVO || {}\"\n :exam-rich-text-content=\"item.examRichTextContent\"\n :exam-answer-relation-type=\"item.examAnswerRelationType\"\n @move=\"(type: 'up' | 'down') => move(index, type)\"\n @delete=\"deleteSubject(index)\"\n @save=\"(item: any) => saveSubject(index, item)\"\n @edit=\"item.isEdit = true\"\n @add=\"(type: string) => addSubject(type, index, null)\"\n />\n <SubjectTextFill\n v-else-if=\"item.answerType === 'text_fill'\"\n v-bind=\"attrs\"\n :order-index=\"currentIndex()(item.customId)\"\n :title=\"item.title\"\n :is-save=\"!item.isRealCanDel\"\n :is-set=\"item.hasSet || false\"\n :answer-list=\"item.answers\"\n :analysis=\"item.analysis\"\n :show-action=\"!isPreview\"\n :is-edit=\"item.isEdit || false\"\n :exam-expand=\"item.examExpand\"\n :exam-answer-setting-v-o=\"item.examAnswerSettingVO || {}\"\n :exam-answer-relation-type=\"item.examAnswerRelationType\"\n :exam-rich-text-content=\"item.examRichTextContent\"\n @move=\"(type: 'up' | 'down') => move(index, type)\"\n @delete=\"deleteSubject(index)\"\n @save=\"(item: any) => saveSubject(index, item)\"\n @edit=\"item.isEdit = true\"\n @add=\"(type: string) => addSubject(type, index, null)\"\n />\n <SubjectRichText\n v-else-if=\"item.answerType === 'rich_text'\"\n v-bind=\"attrs\"\n :order-index=\"currentIndex()(item.customId)\"\n :rich-text-content=\"item.richTextContent\"\n :is-set=\"item.hasSet || false\"\n :is-save=\"!item.isRealCanDel\"\n :is-edit=\"item.isEdit || false\"\n :show-action=\"!isPreview\"\n :exam-answer-relation-type=\"item.examAnswerRelationType\"\n @move=\"(type: 'up' | 'down') => move(index, type)\"\n @delete=\"deleteSubject(index)\"\n @save=\"(item: any) => saveSubject(index, item)\"\n @edit=\"item.isEdit = true\"\n @add=\"(type: string) => addSubject(type, index, null)\"\n />\n <SubjectPageEnd\n v-else-if=\"item.answerType === 'page_end'\"\n :key=\"index\"\n :total-page=\"totalPageIndex()\"\n :current-page-index=\"currentPageIndex(item.customId)\"\n :item=\"item\"\n :is-edit=\"item.isEdit || false\"\n :is-set=\"item.hasSet || false\"\n :is-save=\"!item.isRealCanDel\"\n :exam-answer-relation-type=\"item.examAnswerRelationType\"\n @move=\"(type: 'up' | 'down') => move(index, type)\"\n @delete=\"deleteSubject(index)\"\n @save=\"(item: any) => saveSubject(index, item)\"\n @edit=\"item.isEdit = true\"\n @add=\"(type: string) => addSubject(type, index, null)\"\n />\n </div> <!-- 关闭 subject-content -->\n </div>\n </template>\n </draggable>\n </template>\n </div>\n </div>\n</template>\n"],"names":["props","__props","emits","__emit","currentList","ref","attrs","useAttrs","__expose","addSubject","uploadExcel","list","value","concat","addExam","items","currentIndex","newList","forEach","v","newItem","customId","nanoid","answerType","richTextContent","examTypeEnum","answers","map","c","title","answer","answerId","examAnswerId","isCorrect","isSave","isEdit","isRealCanDel","hasSet","pageIndex","push","analysis","scaleQuestionList","examAnswerRelationType","setAnswerRelation","answerRelations","customAnswerId","targetItem","find","targetAnswer","currentPageIndex","computed","currentPageList","filter","currentId","findIndex","currentExamId","current","output","type","index","newSubject","isKey","answerCheckType","splice","move","item","length","saveSubject","deleteSubject","QxsMessage","success","setRelation","examAnswers","watch","subjectList","immediate","ns","useNamespace","sortMode","toggleSortMode","_createElementBlock","class","_normalizeClass","_unref","e","_createElementVNode","_hoisted_1","_createCommentVNode","isPreview","_openBlock","_hoisted_2","_createBlock","QxsButton","size","onClick","_cache","icon","xmlns","width","height","viewBox","fill","d","_hoisted_3","_createVNode","draggable","$event","animation","_withCtx","element","_hoisted_4","_hoisted_5","_toDisplayString","_hoisted_6","_hoisted_7","single","multiple","sort","blank_fill","text_fill","scale","rich_text","page_end","_Fragment","key","handle","disabled","_hoisted_8","includes","SubjectSingle","_mergeProps","examId","leastAnswerCount","examExpand","examRichTextContent","onSetRelation","onMove","onDelete","onSave","onEdit","onAdd","SubjectScale","SubjectBlankFill","examAnswerSettingVO","SubjectTextFill","SubjectRichText","SubjectPageEnd"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("vue"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("vue"),t=require("@qxs-bns/hooks"),i=require("lodash-es"),n=require("tinymce/tinymce");require("tinymce/themes/silver/theme"),require("tinymce/icons/default/icons"),require("tinymce/models/dom"),require("tinymce/plugins/autolink"),require("tinymce/plugins/autoresize"),require("tinymce/plugins/fullscreen"),require("tinymce/plugins/image"),require("tinymce/plugins/insertdatetime"),require("tinymce/plugins/link"),require("tinymce/plugins/lists"),require("tinymce/plugins/media"),require("tinymce/plugins/preview"),require("tinymce/plugins/table"),require("tinymce/plugins/wordcount"),require("tinymce/plugins/code"),require("tinymce/plugins/searchreplace"),require("tinymce/plugins/nonbreaking");const r=["id","name"];var a=e.defineComponent({name:"QxsTinyMceEditor",__name:"tiny-mce-editor",props:{modelValue:{type:String,required:!0,default:""},config:{type:Object,required:!1,default:()=>({})},assetsBasePath:{type:String,required:!1,default:""}},emits:["update:modelValue"],setup(a,{emit:l}){const u=l,s=t.useNamespace("tiny-mce-editor"),o=a.assetsBasePath||"node_modules/",c=e.shallowRef(null),m=e.ref(`tiny-mce-textarea-${Date.now()}-${Math.random().toString(36).substr(2,9)}`),d=e.computed({get:()=>a.modelValue,set(e){u("update:modelValue",e)}}),g={selector:`textarea#${m.value}`,promotion:!1,license_key:"gpl",elementpath:!1,language:"zh-Hans",language_url:`${o}tinymce/langs/zh-Hans.js`,skin_url:`${o}tinymce/skins/ui/oxide`,content_css:`${o}tinymce/skins/content/default/content.min.css`,min_height:300,max_height:700,plugins:"autolink autoresize fullscreen image insertdatetime link lists media preview table wordcount code searchreplace nonbreaking",toolbar:"undo redo | bold italic underline strikethrough | blocks | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | forecolor backcolor removeformat | link image media table insertdatetime searchreplace | preview code",branding:!1,autoresize:!0,menubar:!1,nonbreaking_force_tab:!0,toolbar_mode:"sliding",insertdatetime_formats:["%Y年%m月%d日","%H点%M分%S秒","%Y-%m-%d","%H:%M:%S"],setup:e=>{e.on("init",()=>{c.value=e,e.setContent(d.value)}),e.on("input change undo redo",()=>{d.value=e.getContent()}),a.config?.expandSetup?.(e)}},p=e.computed(()=>{const e=g;return a.config.images_upload_handler||("string"==typeof e.plugins?e.plugins=e.plugins.replace("image",""):Array.isArray(e.plugins)&&(e.plugins=e.plugins.filter(e=>"image"!==e))),i.merge(e,a.config)});return e.watch(()=>a.modelValue,e=>{try{c.value&&e!==c.value?.getContent()&&c.value.setContent(e)}catch(e){}}),e.onMounted(async()=>{"undefined"!=typeof window&&n.init(p.value)}),e.onBeforeUnmount(()=>{c.value&&(c.value.destroy(),c.value=null)}),(t,i)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(e.unref(s).e("tiny-mce"))},[e.createCommentVNode(" 使用动态生成的 id "),e.withDirectives(e.createElementVNode("textarea",{id:m.value,"onUpdate:modelValue":i[0]||(i[0]=e=>d.value=e),name:m.value},null,8,r),[[e.vModelText,d.value]])],2))}});exports.default=a;
|
|
2
2
|
//# sourceMappingURL=tiny-mce-editor.vue.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tiny-mce-editor.vue.cjs","sources":["../../../../../../packages/components/src/tiny-mce-editor/src/tiny-mce-editor.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { Editor, RawEditorOptions } from 'tinymce/tinymce'\nimport { useNamespace } from '@qxs-bns/hooks'\nimport { merge } from 'lodash-es'\nimport tinymce from 'tinymce/tinymce'\nimport { computed, onBeforeUnmount, onMounted, ref, shallowRef, watch } from 'vue'\n\n// 导入核心功能\nimport 'tinymce/themes/silver/theme'\nimport 'tinymce/icons/default/icons'\nimport 'tinymce/models/dom'\n\nimport 'tinymce/plugins/autolink'\nimport 'tinymce/plugins/autoresize'\nimport 'tinymce/plugins/fullscreen'\nimport 'tinymce/plugins/image'\nimport 'tinymce/plugins/insertdatetime'\nimport 'tinymce/plugins/link'\nimport 'tinymce/plugins/lists'\nimport 'tinymce/plugins/media'\nimport 'tinymce/plugins/preview'\nimport 'tinymce/plugins/table'\nimport 'tinymce/plugins/wordcount'\nimport 'tinymce/plugins/code'\nimport 'tinymce/plugins/searchreplace'\nimport 'tinymce/plugins/nonbreaking'\n// 导入语言包\n\ndefineOptions({\n name: 'QxsTinyMceEditor',\n})\n\nconst {\n modelValue = '',\n config = {},\n assetsBasePath = '',\n} = defineProps<{\n modelValue: string\n config?: RawEditorOptions & {\n expandSetup?: RawEditorOptions['setup']\n }\n assetsBasePath?: string\n}>()\n\nconst emit = defineEmits(['update:modelValue'])\n\nconst ns = useNamespace('tiny-mce-editor')\n\nconst colorScheme = 'light'\nconst basePath = assetsBasePath || 'node_modules/'\n// 存储编辑器实例的引用\nconst editorInstance = shallowRef<Editor | null>(null)\n// 生成唯一的 id\nconst uniqueId = ref(\n `tiny-mce-textarea-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`,\n)\n\nconst content = computed({\n get() {\n return modelValue\n },\n set(val) {\n emit('update:modelValue', val)\n },\n})\n\nconst defaultSetting: RawEditorOptions = {\n // 使用动态生成的 id\n selector: `textarea#${uniqueId.value}`,\n promotion: false, // 禁用推广信息\n license_key: 'gpl',\n elementpath: false,\n language: 'zh-Hans',\n language_url: `${basePath}tinymce/langs/zh-Hans.js`,\n skin_url: `${basePath}${\n colorScheme === 'light' ? 'tinymce/skins/ui/oxide' : 'tinymce/skins/ui/oxide-dark'\n }`,\n content_css: `${basePath}${\n colorScheme === 'light'\n ? 'tinymce/skins/content/default/content.min.css'\n : 'tinymce/skins/content/dark/content.min.css'\n }`,\n min_height: 300,\n max_height: 700,\n plugins:\n 'autolink autoresize fullscreen image insertdatetime link lists media preview table wordcount code searchreplace nonbreaking',\n toolbar:\n 'undo redo | bold italic underline strikethrough | blocks | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | forecolor backcolor removeformat | link image media table insertdatetime searchreplace | preview code',\n branding: false,\n autoresize: true,\n menubar: false,\n nonbreaking_force_tab: true,\n toolbar_mode: 'sliding',\n insertdatetime_formats: [\n '%Y年%m月%d日',\n '%H点%M分%S秒',\n '%Y-%m-%d',\n '%H:%M:%S',\n ],\n // https://www.tiny.cloud/docs/tinymce/6/file-image-upload/#images_upload_handler\n // images_upload_handler: async (blobInfo: any, progress: any) => {\n // // blobInfo, succFun, failFun, progress\n // const files = blobInfo.blob()\n // const formData = new FormData()\n // formData.append('image', files)\n\n // const { res, error } = await useApi({\n // // ...commonUrls.uploadImage,\n // params: {\n // bucketType: classify,\n // },\n // data: formData,\n // onUploadProgress: (e: any) => {\n // progress((e.loaded / e.total) * 100)\n // },\n // })\n // if (res) {\n // const { normal } = res\n // console.log('normal: ', res)\n // return normal\n // }\n // if (error) {\n // console.log(error.message)\n // return Promise.reject(error.message)\n // }\n // },\n setup: (editor: Editor) => {\n // 编辑器初始化完成后设置内容\n editor.on('init', () => {\n // 保存编辑器实例\n editorInstance.value = editor\n editor.setContent(content.value)\n })\n\n // 监听编辑器内容变化\n editor.on('input change undo redo', () => {\n content.value = editor.getContent()\n })\n\n config?.expandSetup?.(editor)\n },\n}\n\nconst initSetting = computed(() => {\n const dealDefaultSetting = defaultSetting\n if (!config.images_upload_handler) {\n // 删除 image 图片 plugin\n if (typeof dealDefaultSetting.plugins === 'string') {\n dealDefaultSetting.plugins = dealDefaultSetting.plugins.replace(\n 'image',\n '',\n )\n }\n else if (Array.isArray(dealDefaultSetting.plugins)) {\n dealDefaultSetting.plugins = dealDefaultSetting.plugins.filter(\n plugin => plugin !== 'image',\n )\n }\n }\n return merge(dealDefaultSetting, config)\n})\n\n// 监听 modelValue 的变化\nwatch(() => modelValue, (newVal) => {\n try {\n // 确保编辑器已初始化且内容确实发生变化\n if (editorInstance.value && newVal !== editorInstance.value?.getContent()) {\n editorInstance.value.setContent(newVal)\n }\n }\n catch (error) {\n console.error('设置编辑器内容时出错:', error)\n }\n})\n\nonMounted(async () => {\n if (typeof window !== 'undefined') {\n tinymce.init(initSetting.value)\n }\n})\n\n// 组件卸载时清理\nonBeforeUnmount(() => {\n if (editorInstance.value) {\n editorInstance.value.destroy()\n editorInstance.value = null\n }\n})\n</script>\n\n<template>\n <div :class=\"ns.e('tiny-mce')\">\n <!-- 使用动态生成的 id -->\n <textarea\n :id=\"uniqueId\"\n v-model=\"content\"\n :name=\"uniqueId\"\n />\n </div>\n</template>\n"],"names":["emit","__emit","ns","useNamespace","basePath","__props","assetsBasePath","editorInstance","shallowRef","uniqueId","ref","Date","now","Math","random","toString","substr","content","computed","get","modelValue","set","val","defaultSetting","selector","value","promotion","license_key","elementpath","language","language_url","skin_url","content_css","min_height","max_height","plugins","toolbar","branding","autoresize","menubar","nonbreaking_force_tab","toolbar_mode","insertdatetime_formats","setup","editor","on","setContent","getContent","config","expandSetup","initSetting","dealDefaultSetting","images_upload_handler","replace","Array","isArray","filter","plugin","merge","watch","newVal","error","
|
|
1
|
+
{"version":3,"file":"tiny-mce-editor.vue.cjs","sources":["../../../../../../packages/components/src/tiny-mce-editor/src/tiny-mce-editor.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { Editor, RawEditorOptions } from 'tinymce/tinymce'\nimport { useNamespace } from '@qxs-bns/hooks'\nimport { merge } from 'lodash-es'\nimport tinymce from 'tinymce/tinymce'\nimport { computed, onBeforeUnmount, onMounted, ref, shallowRef, watch } from 'vue'\n\n// 导入核心功能\nimport 'tinymce/themes/silver/theme'\nimport 'tinymce/icons/default/icons'\nimport 'tinymce/models/dom'\n\nimport 'tinymce/plugins/autolink'\nimport 'tinymce/plugins/autoresize'\nimport 'tinymce/plugins/fullscreen'\nimport 'tinymce/plugins/image'\nimport 'tinymce/plugins/insertdatetime'\nimport 'tinymce/plugins/link'\nimport 'tinymce/plugins/lists'\nimport 'tinymce/plugins/media'\nimport 'tinymce/plugins/preview'\nimport 'tinymce/plugins/table'\nimport 'tinymce/plugins/wordcount'\nimport 'tinymce/plugins/code'\nimport 'tinymce/plugins/searchreplace'\nimport 'tinymce/plugins/nonbreaking'\n// 导入语言包\n\ndefineOptions({\n name: 'QxsTinyMceEditor',\n})\n\nconst {\n modelValue = '',\n config = {},\n assetsBasePath = '',\n} = defineProps<{\n modelValue: string\n config?: RawEditorOptions & {\n expandSetup?: RawEditorOptions['setup']\n }\n assetsBasePath?: string\n}>()\n\nconst emit = defineEmits(['update:modelValue'])\n\nconst ns = useNamespace('tiny-mce-editor')\n\nconst colorScheme = 'light'\nconst basePath = assetsBasePath || 'node_modules/'\n// 存储编辑器实例的引用\nconst editorInstance = shallowRef<Editor | null>(null)\n// 生成唯一的 id\nconst uniqueId = ref(\n `tiny-mce-textarea-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`,\n)\n\nconst content = computed({\n get() {\n return modelValue\n },\n set(val) {\n emit('update:modelValue', val)\n },\n})\n\nconst defaultSetting: RawEditorOptions = {\n // 使用动态生成的 id\n selector: `textarea#${uniqueId.value}`,\n promotion: false, // 禁用推广信息\n license_key: 'gpl',\n elementpath: false,\n language: 'zh-Hans',\n language_url: `${basePath}tinymce/langs/zh-Hans.js`,\n skin_url: `${basePath}${\n colorScheme === 'light' ? 'tinymce/skins/ui/oxide' : 'tinymce/skins/ui/oxide-dark'\n }`,\n content_css: `${basePath}${\n colorScheme === 'light'\n ? 'tinymce/skins/content/default/content.min.css'\n : 'tinymce/skins/content/dark/content.min.css'\n }`,\n min_height: 300,\n max_height: 700,\n plugins:\n 'autolink autoresize fullscreen image insertdatetime link lists media preview table wordcount code searchreplace nonbreaking',\n toolbar:\n 'undo redo | bold italic underline strikethrough | blocks | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | forecolor backcolor removeformat | link image media table insertdatetime searchreplace | preview code',\n branding: false,\n autoresize: true,\n menubar: false,\n nonbreaking_force_tab: true,\n toolbar_mode: 'sliding',\n insertdatetime_formats: [\n '%Y年%m月%d日',\n '%H点%M分%S秒',\n '%Y-%m-%d',\n '%H:%M:%S',\n ],\n // https://www.tiny.cloud/docs/tinymce/6/file-image-upload/#images_upload_handler\n // images_upload_handler: async (blobInfo: any, progress: any) => {\n // // blobInfo, succFun, failFun, progress\n // const files = blobInfo.blob()\n // const formData = new FormData()\n // formData.append('image', files)\n\n // const { res, error } = await useApi({\n // // ...commonUrls.uploadImage,\n // params: {\n // bucketType: classify,\n // },\n // data: formData,\n // onUploadProgress: (e: any) => {\n // progress((e.loaded / e.total) * 100)\n // },\n // })\n // if (res) {\n // const { normal } = res\n // console.log('normal: ', res)\n // return normal\n // }\n // if (error) {\n // console.log(error.message)\n // return Promise.reject(error.message)\n // }\n // },\n setup: (editor: Editor) => {\n // 编辑器初始化完成后设置内容\n editor.on('init', () => {\n // 保存编辑器实例\n editorInstance.value = editor\n editor.setContent(content.value)\n })\n\n // 监听编辑器内容变化\n editor.on('input change undo redo', () => {\n content.value = editor.getContent()\n })\n\n config?.expandSetup?.(editor)\n },\n}\n\nconst initSetting = computed(() => {\n const dealDefaultSetting = defaultSetting\n if (!config.images_upload_handler) {\n // 删除 image 图片 plugin\n if (typeof dealDefaultSetting.plugins === 'string') {\n dealDefaultSetting.plugins = dealDefaultSetting.plugins.replace(\n 'image',\n '',\n )\n }\n else if (Array.isArray(dealDefaultSetting.plugins)) {\n dealDefaultSetting.plugins = dealDefaultSetting.plugins.filter(\n plugin => plugin !== 'image',\n )\n }\n }\n return merge(dealDefaultSetting, config)\n})\n\n// 监听 modelValue 的变化\nwatch(() => modelValue, (newVal) => {\n try {\n // 确保编辑器已初始化且内容确实发生变化\n if (editorInstance.value && newVal !== editorInstance.value?.getContent()) {\n editorInstance.value.setContent(newVal)\n }\n }\n catch (error) {\n console.error('设置编辑器内容时出错:', error)\n }\n})\n\nonMounted(async () => {\n if (typeof window !== 'undefined') {\n tinymce.init(initSetting.value)\n }\n})\n\n// 组件卸载时清理\nonBeforeUnmount(() => {\n if (editorInstance.value) {\n editorInstance.value.destroy()\n editorInstance.value = null\n }\n})\n</script>\n\n<template>\n <div :class=\"ns.e('tiny-mce')\">\n <!-- 使用动态生成的 id -->\n <textarea\n :id=\"uniqueId\"\n v-model=\"content\"\n :name=\"uniqueId\"\n />\n </div>\n</template>\n"],"names":["emit","__emit","ns","useNamespace","basePath","__props","assetsBasePath","editorInstance","shallowRef","uniqueId","ref","Date","now","Math","random","toString","substr","content","computed","get","modelValue","set","val","defaultSetting","selector","value","promotion","license_key","elementpath","language","language_url","skin_url","content_css","min_height","max_height","plugins","toolbar","branding","autoresize","menubar","nonbreaking_force_tab","toolbar_mode","insertdatetime_formats","setup","editor","on","setContent","getContent","config","expandSetup","initSetting","dealDefaultSetting","images_upload_handler","replace","Array","isArray","filter","plugin","merge","watch","newVal","error","onMounted","async","window","tinymce","init","onBeforeUnmount","destroy","_createElementBlock","class","_normalizeClass","_unref","e","_createCommentVNode","_createElementVNode","id","$event","name"],"mappings":"ujCA4CA,MAAMA,EAAOC,EAEPC,EAAKC,EAAAA,aAAa,mBAGlBC,EAAWC,EAAAC,gBAAkB,gBAE7BC,EAAiBC,EAAAA,WAA0B,MAE3CC,EAAWC,EAAAA,IACf,qBAAqBC,KAAKC,SAASC,KAAKC,SAASC,SAAS,IAAIC,OAAO,EAAG,MAGpEC,EAAUC,EAAAA,SAAS,CACvBC,IAAA,IACSd,EAAAe,WAET,GAAAC,CAAIC,GACFtB,EAAK,oBAAqBsB,EAC5B,IAGIC,EAAmC,CAEvCC,SAAU,YAAYf,EAASgB,QAC/BC,WAAW,EACXC,YAAa,MACbC,aAAa,EACbC,SAAU,UACVC,aAAc,GAAG1B,4BACjB2B,SAAU,GAAG3B,0BAGb4B,YAAa,GAAG5B,iDAKhB6B,WAAY,IACZC,WAAY,IACZC,QACE,8HACFC,QACE,oPACFC,UAAU,EACVC,YAAY,EACZC,SAAS,EACTC,uBAAuB,EACvBC,aAAc,UACdC,uBAAwB,CACtB,YACA,YACA,WACA,YA6BFC,MAAQC,IAENA,EAAOC,GAAG,OAAQ,KAEhBtC,EAAekB,MAAQmB,EACvBA,EAAOE,WAAW7B,EAAQQ,SAI5BmB,EAAOC,GAAG,yBAA0B,KAClC5B,EAAQQ,MAAQmB,EAAOG,eAGzB1C,EAAA2C,QAAQC,cAAcL,KAIpBM,EAAchC,EAAAA,SAAS,KAC3B,MAAMiC,EAAqB5B,EAe3B,OAdKlB,EAAA2C,OAAOI,wBAEgC,iBAA/BD,EAAmBhB,QAC5BgB,EAAmBhB,QAAUgB,EAAmBhB,QAAQkB,QACtD,QACA,IAGKC,MAAMC,QAAQJ,EAAmBhB,WACxCgB,EAAmBhB,QAAUgB,EAAmBhB,QAAQqB,UACjC,UAAXC,KAITC,QAAMP,EAAoB9C,EAAA2C,iBAInCW,EAAAA,MAAM,IAAMtD,EAAAe,WAAawC,IACvB,IAEMrD,EAAekB,OAASmC,IAAWrD,EAAekB,OAAOsB,cAC3DxC,EAAekB,MAAMqB,WAAWc,EAEpC,OACOC,GAEP,IAGFC,EAAAA,UAAUC,UACc,oBAAXC,QACTC,EAAQC,KAAKhB,EAAYzB,SAK7B0C,EAAAA,gBAAgB,KACV5D,EAAekB,QACjBlB,EAAekB,MAAM2C,UACrB7D,EAAekB,MAAQ,8BAMzB4C,EAAAA,mBAOM,MAAA,CAPAC,MAAKC,EAAAA,eAAEC,EAAAA,MAAAtE,GAAGuE,EAAC,eACfC,EAAAA,mBAAA,iCACAC,EAAAA,mBAIE,WAAA,CAHCC,GAAInE,EAAAgB,2CACIR,EAAOQ,MAAAoD,GACfC,KAAMrE,EAAAgB,gCADER,EAAAQ"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("vue");const t=e.defineComponent({name:"QxsButton",props:{type:{type:String,default:"default"},size:{type:String,default:"default"},disabled:{type:Boolean,default:!1},loading:{type:Boolean,default:!1},plain:{type:Boolean,default:!1},round:{type:Boolean,default:!1},circle:{type:Boolean,default:!1},nativeType:{type:String,default:"button"},icon:{type:[String,Object],default:""}},emits:["click"],setup(t,o){let{slots:l,emit:n}=o;const a=e=>{t.disabled||t.loading||n("click",e)};return()=>e.h("button",{class:["qxs-button",`qxs-button--${t.type}`,`qxs-button--${t.size}`,{"is-disabled":t.disabled,"is-loading":t.loading,"is-plain":t.plain,"is-round":t.round,"is-circle":t.circle}],disabled:t.disabled||t.loading,type:t.nativeType,onClick:a},[t.loading&&e.h("span",{class:"qxs-button__loading"},[e.h("svg",{class:"qxs-button__loading-icon",viewBox:"0 0 24 24"},[e.h("circle",{cx:"12",cy:"12",r:"10",stroke:"currentColor","stroke-width":"2",fill:"none","stroke-dasharray":"60","stroke-dashoffset":"20"})])]),l.default?.()])}});exports.QxsButton=t,exports.default=t;
|
|
2
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../../../../../packages/components/src/ui/button/index.ts"],"sourcesContent":["import { defineComponent, h, type PropType, type VNode } from 'vue'\n\nexport type ButtonType = 'primary' | 'success' | 'warning' | 'danger' | 'info' | 'default'\nexport type ButtonSize = 'large' | 'default' | 'small'\n\nexport const QxsButton = defineComponent({\n name: 'QxsButton',\n props: {\n type: { type: String as PropType<ButtonType>, default: 'default' },\n size: { type: String as PropType<ButtonSize>, default: 'default' },\n disabled: { type: Boolean, default: false },\n loading: { type: Boolean, default: false },\n plain: { type: Boolean, default: false },\n round: { type: Boolean, default: false },\n circle: { type: Boolean, default: false },\n nativeType: { type: String as PropType<'button' | 'submit' | 'reset'>, default: 'button' },\n icon: { type: [String, Object] as PropType<string | VNode>, default: '' },\n },\n emits: ['click'],\n setup(props, { slots, emit }) {\n const handleClick = (e: MouseEvent) => {\n if (!props.disabled && !props.loading) {\n emit('click', e)\n }\n }\n\n return () => h('button', {\n class: [\n 'qxs-button',\n `qxs-button--${props.type}`,\n `qxs-button--${props.size}`,\n {\n 'is-disabled': props.disabled,\n 'is-loading': props.loading,\n 'is-plain': props.plain,\n 'is-round': props.round,\n 'is-circle': props.circle,\n },\n ],\n disabled: props.disabled || props.loading,\n type: props.nativeType,\n onClick: handleClick,\n }, [\n props.loading && h('span', { class: 'qxs-button__loading' }, [\n h('svg', { class: 'qxs-button__loading-icon', viewBox: '0 0 24 24' }, [\n h('circle', { cx: '12', cy: '12', r: '10', stroke: 'currentColor', 'stroke-width': '2', fill: 'none', 'stroke-dasharray': '60', 'stroke-dashoffset': '20' }),\n ]),\n ]),\n slots.default?.(),\n ])\n },\n})\n\nexport default QxsButton\n"],"names":["QxsButton","defineComponent","name","props","type","String","default","size","disabled","Boolean","loading","plain","round","circle","nativeType","icon","Object","emits","setup","_ref","slots","emit","handleClick","e","h","class","onClick","viewBox","cx","cy","r","stroke","fill"],"mappings":"yFAKO,MAAMA,EAAYC,EAAAA,gBAAgB,CACvCC,KAAM,YACNC,MAAO,CACLC,KAAM,CAAEA,KAAMC,OAAgCC,QAAS,WACvDC,KAAM,CAAEH,KAAMC,OAAgCC,QAAS,WACvDE,SAAU,CAAEJ,KAAMK,QAASH,SAAS,GACpCI,QAAS,CAAEN,KAAMK,QAASH,SAAS,GACnCK,MAAO,CAAEP,KAAMK,QAASH,SAAS,GACjCM,MAAO,CAAER,KAAMK,QAASH,SAAS,GACjCO,OAAQ,CAAET,KAAMK,QAASH,SAAS,GAClCQ,WAAY,CAAEV,KAAMC,OAAmDC,QAAS,UAChFS,KAAM,CAAEX,KAAM,CAACC,OAAQW,QAAqCV,QAAS,KAEvEW,MAAO,CAAC,SACRC,KAAAA,CAAMf,EAAAgB,GAAwB,IAAjBC,MAAEA,EAAAC,KAAOA,GAAKF,EACzB,MAAMG,EAAeC,IACdpB,EAAMK,UAAaL,EAAMO,SAC5BW,EAAK,QAASE,IAIlB,MAAO,IAAMC,EAAAA,EAAE,SAAU,CACvBC,MAAO,CACL,aACA,eAAetB,EAAMC,OACrB,eAAeD,EAAMI,OACrB,CACE,cAAeJ,EAAMK,SACrB,aAAcL,EAAMO,QACpB,WAAYP,EAAMQ,MAClB,WAAYR,EAAMS,MAClB,YAAaT,EAAMU,SAGvBL,SAAUL,EAAMK,UAAYL,EAAMO,QAClCN,KAAMD,EAAMW,WACZY,QAASJ,GACR,CACDnB,EAAMO,SAAWc,EAAAA,EAAE,OAAQ,CAAEC,MAAO,uBAAyB,CAC3DD,EAAAA,EAAE,MAAO,CAAEC,MAAO,2BAA4BE,QAAS,aAAe,CACpEH,EAAAA,EAAE,SAAU,CAAEI,GAAI,KAAMC,GAAI,KAAMC,EAAG,KAAMC,OAAQ,eAAgB,eAAgB,IAAKC,KAAM,OAAQ,mBAAoB,KAAM,oBAAqB,WAGzJZ,EAAMd,aAEV"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("vue");const l=e.defineComponent({name:"QxsCheckbox",props:{modelValue:{type:[Boolean,String,Number,Array],default:!1},disabled:{type:Boolean,default:!1},label:{type:[String,Number,Boolean],default:""},indeterminate:{type:Boolean,default:!1},trueLabel:{type:[String,Number],default:void 0},falseLabel:{type:[String,Number],default:void 0}},emits:["update:modelValue","change"],setup(l,a){let{slots:t,emit:d}=a;const o=()=>Array.isArray(l.modelValue)?l.modelValue.includes(l.label):void 0!==l.trueLabel||void 0!==l.falseLabel?l.modelValue===l.trueLabel:Boolean(l.modelValue),s=e=>{if(l.disabled)return;const a=e.target.checked;if(Array.isArray(l.modelValue)){const e=[...l.modelValue];if(a)e.push(l.label);else{const a=e.indexOf(l.label);a>-1&&e.splice(a,1)}d("update:modelValue",e),d("change",e)}else if(void 0!==l.trueLabel||void 0!==l.falseLabel){const e=a?l.trueLabel:l.falseLabel;d("update:modelValue",e),d("change",e)}else d("update:modelValue",a),d("change",a)};return()=>e.h("label",{class:["qxs-checkbox",{"is-checked":o(),"is-disabled":l.disabled,"is-indeterminate":l.indeterminate}],style:{display:"inline-flex",alignItems:"center",cursor:l.disabled?"not-allowed":"pointer",marginRight:"12px"}},[e.h("input",{type:"checkbox",class:"qxs-checkbox__input",checked:o(),disabled:l.disabled,onChange:s,style:{marginRight:"8px",cursor:l.disabled?"not-allowed":"pointer"}}),(t.default?.()||l.label)&&e.h("span",{class:"qxs-checkbox__label",style:{fontSize:"14px",color:l.disabled?"var(--qxs-text-color-disabled, #c0c4cc)":void 0}},t.default?.()||l.label)])}}),a=e.defineComponent({name:"QxsCheckboxGroup",props:{modelValue:{type:Array,default:()=>[]},disabled:{type:Boolean,default:!1},min:{type:Number,default:void 0},max:{type:Number,default:void 0}},emits:["update:modelValue","change"],setup(l,a){let{slots:t}=a;return()=>e.h("div",{class:"qxs-checkbox-group",style:{display:"inline-flex",flexWrap:"wrap",gap:"8px"}},t.default?.())}});exports.QxsCheckbox=l,exports.QxsCheckboxGroup=a,exports.default=l;
|
|
2
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../../../../../packages/components/src/ui/checkbox/index.ts"],"sourcesContent":["import { defineComponent, h, type PropType } from 'vue'\n\nexport const QxsCheckbox = defineComponent({\n name: 'QxsCheckbox',\n props: {\n modelValue: { type: [Boolean, String, Number, Array] as PropType<boolean | string | number | any[]>, default: false },\n disabled: { type: Boolean, default: false },\n label: { type: [String, Number, Boolean], default: '' },\n indeterminate: { type: Boolean, default: false },\n trueLabel: { type: [String, Number], default: undefined },\n falseLabel: { type: [String, Number], default: undefined },\n },\n emits: ['update:modelValue', 'change'],\n setup(props, { slots, emit }) {\n const isChecked = () => {\n if (Array.isArray(props.modelValue)) {\n return props.modelValue.includes(props.label)\n }\n if (props.trueLabel !== undefined || props.falseLabel !== undefined) {\n return props.modelValue === props.trueLabel\n }\n return Boolean(props.modelValue)\n }\n\n const handleChange = (e: Event) => {\n if (props.disabled) return\n \n const checked = (e.target as HTMLInputElement).checked\n \n if (Array.isArray(props.modelValue)) {\n const value = [...props.modelValue]\n if (checked) {\n value.push(props.label)\n } else {\n const index = value.indexOf(props.label)\n if (index > -1) {\n value.splice(index, 1)\n }\n }\n emit('update:modelValue', value)\n emit('change', value)\n } else if (props.trueLabel !== undefined || props.falseLabel !== undefined) {\n const value = checked ? props.trueLabel : props.falseLabel\n emit('update:modelValue', value)\n emit('change', value)\n } else {\n emit('update:modelValue', checked)\n emit('change', checked)\n }\n }\n\n return () => h('label', {\n class: [\n 'qxs-checkbox',\n {\n 'is-checked': isChecked(),\n 'is-disabled': props.disabled,\n 'is-indeterminate': props.indeterminate,\n },\n ],\n style: {\n display: 'inline-flex',\n alignItems: 'center',\n cursor: props.disabled ? 'not-allowed' : 'pointer',\n marginRight: '12px',\n },\n }, [\n h('input', {\n type: 'checkbox',\n class: 'qxs-checkbox__input',\n checked: isChecked(),\n disabled: props.disabled,\n onChange: handleChange,\n style: {\n marginRight: '8px',\n cursor: props.disabled ? 'not-allowed' : 'pointer',\n },\n }),\n (slots.default?.() || props.label) && h('span', { \n class: 'qxs-checkbox__label',\n style: {\n fontSize: '14px',\n color: props.disabled ? 'var(--qxs-text-color-disabled, #c0c4cc)' : undefined,\n },\n }, slots.default?.() || props.label),\n ])\n },\n})\n\nexport const QxsCheckboxGroup = defineComponent({\n name: 'QxsCheckboxGroup',\n props: {\n modelValue: { type: Array as PropType<any[]>, default: () => [] },\n disabled: { type: Boolean, default: false },\n min: { type: Number, default: undefined },\n max: { type: Number, default: undefined },\n },\n emits: ['update:modelValue', 'change'],\n setup(_props, { slots }) {\n return () => h('div', { \n class: 'qxs-checkbox-group',\n style: {\n display: 'inline-flex',\n flexWrap: 'wrap',\n gap: '8px',\n },\n }, slots.default?.())\n },\n})\n\nexport default QxsCheckbox\n"],"names":["QxsCheckbox","defineComponent","name","props","modelValue","type","Boolean","String","Number","Array","default","disabled","label","indeterminate","trueLabel","falseLabel","emits","setup","_ref","slots","emit","isChecked","isArray","includes","handleChange","e","checked","target","value","push","index","indexOf","splice","h","class","style","display","alignItems","cursor","marginRight","onChange","fontSize","color","QxsCheckboxGroup","min","max","_props","_ref2","flexWrap","gap"],"mappings":"yFAEO,MAAMA,EAAcC,EAAAA,gBAAgB,CACzCC,KAAM,cACNC,MAAO,CACLC,WAAY,CAAEC,KAAM,CAACC,QAASC,OAAQC,OAAQC,OAAuDC,SAAS,GAC9GC,SAAU,CAAEN,KAAMC,QAASI,SAAS,GACpCE,MAAO,CAAEP,KAAM,CAACE,OAAQC,OAAQF,SAAUI,QAAS,IACnDG,cAAe,CAAER,KAAMC,QAASI,SAAS,GACzCI,UAAW,CAAET,KAAM,CAACE,OAAQC,QAASE,aAAS,GAC9CK,WAAY,CAAEV,KAAM,CAACE,OAAQC,QAASE,aAAS,IAEjDM,MAAO,CAAC,oBAAqB,UAC7BC,KAAAA,CAAMd,EAAAe,GAAwB,IAAjBC,MAAEA,EAAAC,KAAOA,GAAKF,EACzB,MAAMG,EAAYA,IACZZ,MAAMa,QAAQnB,EAAMC,YACfD,EAAMC,WAAWmB,SAASpB,EAAMS,YAEjB,IAApBT,EAAMW,gBAAgD,IAArBX,EAAMY,WAClCZ,EAAMC,aAAeD,EAAMW,UAE7BR,QAAQH,EAAMC,YAGjBoB,EAAgBC,IACpB,GAAItB,EAAMQ,SAAU,OAEpB,MAAMe,EAAWD,EAAEE,OAA4BD,QAE/C,GAAIjB,MAAMa,QAAQnB,EAAMC,YAAa,CACnC,MAAMwB,EAAQ,IAAIzB,EAAMC,YACxB,GAAIsB,EACFE,EAAMC,KAAK1B,EAAMS,WACZ,CACL,MAAMkB,EAAQF,EAAMG,QAAQ5B,EAAMS,OAC9BkB,GAAQ,GACVF,EAAMI,OAAOF,EAAO,EAExB,CACAV,EAAK,oBAAqBQ,GAC1BR,EAAK,SAAUQ,EACjB,cAA+B,IAApBzB,EAAMW,gBAAgD,IAArBX,EAAMY,WAA0B,CAC1E,MAAMa,EAAQF,EAAUvB,EAAMW,UAAYX,EAAMY,WAChDK,EAAK,oBAAqBQ,GAC1BR,EAAK,SAAUQ,EACjB,MACER,EAAK,oBAAqBM,GAC1BN,EAAK,SAAUM,IAInB,MAAO,IAAMO,EAAAA,EAAE,QAAS,CACtBC,MAAO,CACL,eACA,CACE,aAAcb,IACd,cAAelB,EAAMQ,SACrB,mBAAoBR,EAAMU,gBAG9BsB,MAAO,CACLC,QAAS,cACTC,WAAY,SACZC,OAAQnC,EAAMQ,SAAW,cAAgB,UACzC4B,YAAa,SAEd,CACDN,EAAAA,EAAE,QAAS,CACT5B,KAAM,WACN6B,MAAO,sBACPR,QAASL,IACTV,SAAUR,EAAMQ,SAChB6B,SAAUhB,EACVW,MAAO,CACLI,YAAa,MACbD,OAAQnC,EAAMQ,SAAW,cAAgB,cAG5CQ,EAAMT,aAAeP,EAAMS,QAAUqB,EAAAA,EAAE,OAAQ,CAC9CC,MAAO,sBACPC,MAAO,CACLM,SAAU,OACVC,MAAOvC,EAAMQ,SAAW,+CAA4C,IAErEQ,EAAMT,aAAeP,EAAMS,QAElC,IAGW+B,EAAmB1C,EAAAA,gBAAgB,CAC9CC,KAAM,mBACNC,MAAO,CACLC,WAAY,CAAEC,KAAMI,MAA0BC,QAASA,IAAM,IAC7DC,SAAU,CAAEN,KAAMC,QAASI,SAAS,GACpCkC,IAAK,CAAEvC,KAAMG,OAAQE,aAAS,GAC9BmC,IAAK,CAAExC,KAAMG,OAAQE,aAAS,IAEhCM,MAAO,CAAC,oBAAqB,UAC7BC,KAAAA,CAAM6B,EAAAC,GAAmB,IAAX5B,MAAEA,GAAM4B,EACpB,MAAO,IAAMd,EAAAA,EAAE,MAAO,CACpBC,MAAO,qBACPC,MAAO,CACLC,QAAS,cACTY,SAAU,OACVC,IAAK,QAEN9B,EAAMT,YACX"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("vue");const o=e.defineComponent({name:"QxsDialog",inheritAttrs:!1,props:{modelValue:{type:Boolean,required:!0},title:{type:String,default:""},width:{type:[String,Number],default:"50%"},showClose:{type:Boolean,default:!0},closeOnClickModal:{type:Boolean,default:!0},closeOnPressEscape:{type:Boolean,default:!0},destroyOnClose:{type:Boolean,default:!1},appendToBody:{type:Boolean,default:!0},lockScroll:{type:Boolean,default:!0},customClass:{type:String,default:""},top:{type:String,default:"15vh"},center:{type:Boolean,default:!1}},emits:["update:modelValue","open","close"],setup(o,l){let{emit:t,slots:s}=l;const a=e.ref(o.modelValue);e.watch(()=>o.modelValue,e=>{a.value=e,e?d():n()});const d=()=>{t("open"),o.lockScroll&&(document.body.style.overflow="hidden")},n=()=>{t("close"),t("update:modelValue",!1),o.lockScroll&&(document.body.style.overflow="")},r=()=>{o.closeOnClickModal&&n()},i=e=>{"Escape"===e.key&&o.closeOnPressEscape&&a.value&&n()};return e.onMounted(()=>{o.closeOnPressEscape&&document.addEventListener("keydown",i)}),e.onBeforeUnmount(()=>{document.removeEventListener("keydown",i),o.lockScroll&&(document.body.style.overflow="")}),()=>{if(o.destroyOnClose&&!a.value)return null;const l="number"==typeof o.width?`${o.width}px`:o.width,t=()=>a.value?e.h("div",{class:"qxs-dialog-container"},[e.h("div",{class:"qxs-overlay",onClick:r}),e.h("div",{class:["qxs-dialog__wrapper",o.center&&"qxs-dialog__wrapper--center"],onClick:e=>{e.target.classList.contains("qxs-dialog__wrapper")&&r()}},[e.h("div",{class:["qxs-dialog",o.customClass],style:{width:l,marginTop:o.center?"0":o.top},role:"dialog","aria-modal":"true","aria-label":o.title},[(s.header||o.title||o.showClose)&&e.h("div",{class:"qxs-dialog__header"},[s.header?s.header():e.h("span",{class:"qxs-dialog__title"},o.title),o.showClose&&e.h("button",{class:"qxs-dialog__close",type:"button","aria-label":"Close",onClick:n},"×")]),e.h("div",{class:"qxs-dialog__body"},s.default?.()),s.footer&&e.h("div",{class:"qxs-dialog__footer"},s.footer())])])]):null;return o.appendToBody?e.h(e.Teleport,{to:"body"},[t()]):t()}}});exports.QxsDialogComponent=o,exports.default=o;
|
|
2
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../../../../../packages/components/src/ui/dialog/index.ts"],"sourcesContent":["import { defineComponent, h, Teleport, ref, watch, onMounted, onBeforeUnmount, type PropType } from 'vue'\n\nexport interface QxsDialogProps {\n modelValue: boolean\n title?: string\n width?: string | number\n showClose?: boolean\n closeOnClickModal?: boolean\n closeOnPressEscape?: boolean\n destroyOnClose?: boolean\n appendToBody?: boolean\n lockScroll?: boolean\n customClass?: string\n top?: string\n center?: boolean\n}\n\nexport const QxsDialogComponent = defineComponent({\n name: 'QxsDialog',\n inheritAttrs: false,\n props: {\n modelValue: { type: Boolean, required: true },\n title: { type: String, default: '' },\n width: { type: [String, Number] as PropType<string | number>, default: '50%' },\n showClose: { type: Boolean, default: true },\n closeOnClickModal: { type: Boolean, default: true },\n closeOnPressEscape: { type: Boolean, default: true },\n destroyOnClose: { type: Boolean, default: false },\n appendToBody: { type: Boolean, default: true },\n lockScroll: { type: Boolean, default: true },\n customClass: { type: String, default: '' },\n top: { type: String, default: '15vh' },\n center: { type: Boolean, default: false },\n },\n emits: ['update:modelValue', 'open', 'close'],\n setup(props, { emit, slots }) {\n const visible = ref(props.modelValue)\n\n watch(() => props.modelValue, (val) => {\n visible.value = val\n if (val) {\n handleOpen()\n } else {\n handleClose()\n }\n })\n\n const handleOpen = () => {\n emit('open')\n if (props.lockScroll) {\n document.body.style.overflow = 'hidden'\n }\n }\n\n const handleClose = () => {\n emit('close')\n emit('update:modelValue', false)\n if (props.lockScroll) {\n document.body.style.overflow = ''\n }\n }\n\n const handleOverlayClick = () => {\n if (props.closeOnClickModal) {\n handleClose()\n }\n }\n\n const handleKeydown = (e: KeyboardEvent) => {\n if (e.key === 'Escape' && props.closeOnPressEscape && visible.value) {\n handleClose()\n }\n }\n\n onMounted(() => {\n if (props.closeOnPressEscape) {\n document.addEventListener('keydown', handleKeydown)\n }\n })\n\n onBeforeUnmount(() => {\n document.removeEventListener('keydown', handleKeydown)\n if (props.lockScroll) {\n document.body.style.overflow = ''\n }\n })\n\n return () => {\n if (props.destroyOnClose && !visible.value) {\n return null\n }\n\n const dialogWidth = typeof props.width === 'number' ? `${props.width}px` : props.width\n\n const renderDialog = () => {\n if (!visible.value) return null\n\n return h('div', { class: 'qxs-dialog-container' }, [\n h('div', { class: 'qxs-overlay', onClick: handleOverlayClick }),\n h('div', { \n class: ['qxs-dialog__wrapper', props.center && 'qxs-dialog__wrapper--center'], \n onClick: (e: MouseEvent) => {\n if ((e.target as HTMLElement).classList.contains('qxs-dialog__wrapper')) {\n handleOverlayClick()\n }\n } \n }, [\n h('div', { \n class: ['qxs-dialog', props.customClass], \n style: { \n width: dialogWidth, \n marginTop: props.center ? '0' : props.top \n }, \n role: 'dialog', \n 'aria-modal': 'true', \n 'aria-label': props.title \n }, [\n (slots.header || props.title || props.showClose) && h('div', { class: 'qxs-dialog__header' }, [\n slots.header ? slots.header() : h('span', { class: 'qxs-dialog__title' }, props.title),\n props.showClose && h('button', { \n class: 'qxs-dialog__close', \n type: 'button', \n 'aria-label': 'Close', \n onClick: handleClose \n }, '×'),\n ]),\n h('div', { class: 'qxs-dialog__body' }, slots.default?.()),\n slots.footer && h('div', { class: 'qxs-dialog__footer' }, slots.footer()),\n ]),\n ]),\n ])\n }\n\n if (props.appendToBody) {\n return h(Teleport, { to: 'body' }, [renderDialog()])\n }\n\n return renderDialog()\n }\n },\n})\n\nexport default QxsDialogComponent\n"],"names":["QxsDialogComponent","defineComponent","name","inheritAttrs","props","modelValue","type","Boolean","required","title","String","default","width","Number","showClose","closeOnClickModal","closeOnPressEscape","destroyOnClose","appendToBody","lockScroll","customClass","top","center","emits","setup","_ref","emit","slots","visible","ref","watch","val","value","handleOpen","handleClose","document","body","style","overflow","handleOverlayClick","handleKeydown","e","key","onMounted","addEventListener","onBeforeUnmount","removeEventListener","dialogWidth","renderDialog","h","class","onClick","target","classList","contains","marginTop","role","header","footer","Teleport","to"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("vue");const t=e.defineComponent({name:"QxsInput",props:{modelValue:{type:[String,Number],default:""},type:{type:String,default:"text"},placeholder:{type:String,default:""},disabled:{type:Boolean,default:!1},readonly:{type:Boolean,default:!1},clearable:{type:Boolean,default:!1},size:{type:String,default:"default"},maxlength:{type:Number,default:void 0},showWordLimit:{type:Boolean,default:!1},rows:{type:[Number,String],default:2},autosize:{type:[Boolean,Object],default:!1},resize:{type:String,default:"none"}},emits:["update:modelValue","input","change","focus","blur","clear"],setup(t,a){let{emit:l,slots:o}=a;const n=e.ref(),s=()=>"textarea"===t.type,u=e=>{const a=e.target.value;l("update:modelValue",a),l("input",a),s()&&t.autosize&&c()},r=e=>{l("change",e.target.value)},i=e=>{l("focus",e)},d=e=>{l("blur",e)},p=()=>{l("update:modelValue",""),l("clear")},c=()=>{if(!n.value)return;const e=n.value;e.style.height="auto";let a=0,l=1/0;if("object"==typeof t.autosize){const o=parseInt(getComputedStyle(e).lineHeight)||20,n=parseInt(getComputedStyle(e).paddingTop)+parseInt(getComputedStyle(e).paddingBottom)||0;a=(t.autosize.minRows||1)*o+n,l=t.autosize.maxRows?t.autosize.maxRows*o+n:1/0}const o=e.scrollHeight,s=Math.min(Math.max(o,a),l);e.style.height=`${s}px`};e.watch(()=>t.modelValue,()=>{s()&&t.autosize&&e.nextTick(c)});return()=>e.h("div",{class:s()?["qxs-textarea",`qxs-textarea--${t.size}`]:["qxs-input",`qxs-input--${t.size}`]},[o.prefix?.(),s()?e.h("textarea",{ref:n,class:"qxs-textarea__inner",value:t.modelValue,placeholder:t.placeholder,disabled:t.disabled,readonly:t.readonly,maxlength:t.maxlength,rows:t.rows,style:s()?{resize:t.resize}:{},onInput:u,onChange:r,onFocus:i,onBlur:d}):e.h("input",{class:"qxs-input__inner",type:t.type,value:t.modelValue,placeholder:t.placeholder,disabled:t.disabled,readonly:t.readonly,maxlength:t.maxlength,onInput:u,onChange:r,onFocus:i,onBlur:d}),!s()&&t.clearable&&t.modelValue&&!t.disabled&&e.h("span",{class:"qxs-input__clear",onClick:p},"×"),o.suffix?.(),t.showWordLimit&&t.maxlength&&e.h("span",{class:s()?"qxs-textarea__count":"qxs-input__count"},`${String(t.modelValue).length}/${t.maxlength}`)])}});exports.QxsInput=t,exports.default=t;
|
|
2
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../../../../../packages/components/src/ui/input/index.ts"],"sourcesContent":["import { defineComponent, h, ref, watch, nextTick, type CSSProperties } from 'vue'\n\nexport const QxsInput = defineComponent({\n name: 'QxsInput',\n props: {\n modelValue: { type: [String, Number], default: '' },\n type: { type: String, default: 'text' },\n placeholder: { type: String, default: '' },\n disabled: { type: Boolean, default: false },\n readonly: { type: Boolean, default: false },\n clearable: { type: Boolean, default: false },\n size: { type: String as () => 'large' | 'default' | 'small', default: 'default' },\n maxlength: { type: Number, default: undefined },\n showWordLimit: { type: Boolean, default: false },\n rows: { type: [Number, String], default: 2 },\n autosize: { type: [Boolean, Object] as unknown as () => boolean | { minRows?: number; maxRows?: number }, default: false },\n resize: { type: String as () => 'none' | 'both' | 'horizontal' | 'vertical', default: 'none' },\n },\n emits: ['update:modelValue', 'input', 'change', 'focus', 'blur', 'clear'],\n setup(props, { emit, slots }) {\n const textareaRef = ref<HTMLTextAreaElement>()\n const isTextarea = () => props.type === 'textarea'\n\n const handleInput = (e: Event) => {\n const value = (e.target as HTMLInputElement | HTMLTextAreaElement).value\n emit('update:modelValue', value)\n emit('input', value)\n if (isTextarea() && props.autosize) {\n adjustTextareaHeight()\n }\n }\n\n const handleChange = (e: Event) => {\n emit('change', (e.target as HTMLInputElement | HTMLTextAreaElement).value)\n }\n\n const handleFocus = (e: FocusEvent) => {\n emit('focus', e)\n }\n\n const handleBlur = (e: FocusEvent) => {\n emit('blur', e)\n }\n\n const handleClear = () => {\n emit('update:modelValue', '')\n emit('clear')\n }\n\n const adjustTextareaHeight = () => {\n if (!textareaRef.value) return\n\n const textarea = textareaRef.value\n textarea.style.height = 'auto'\n\n let minHeight = 0\n let maxHeight = Infinity\n\n if (typeof props.autosize === 'object') {\n const lineHeight = parseInt(getComputedStyle(textarea).lineHeight) || 20\n const paddingHeight = parseInt(getComputedStyle(textarea).paddingTop) + parseInt(getComputedStyle(textarea).paddingBottom) || 0\n minHeight = (props.autosize.minRows || 1) * lineHeight + paddingHeight\n maxHeight = props.autosize.maxRows ? props.autosize.maxRows * lineHeight + paddingHeight : Infinity\n }\n\n const scrollHeight = textarea.scrollHeight\n const newHeight = Math.min(Math.max(scrollHeight, minHeight), maxHeight)\n textarea.style.height = `${newHeight}px`\n }\n\n watch(() => props.modelValue, () => {\n if (isTextarea() && props.autosize) {\n nextTick(adjustTextareaHeight)\n }\n })\n\n const getContainerClass = () => {\n const classes = isTextarea() ? ['qxs-textarea', `qxs-textarea--${props.size}`] : ['qxs-input', `qxs-input--${props.size}`]\n return classes\n }\n\n const getInnerStyle = (): CSSProperties => {\n if (isTextarea()) {\n return {\n resize: props.resize,\n }\n }\n return {}\n }\n\n return () => h('div', { class: getContainerClass() }, [\n slots.prefix?.(),\n isTextarea()\n ? h('textarea', {\n ref: textareaRef,\n class: 'qxs-textarea__inner',\n value: props.modelValue,\n placeholder: props.placeholder,\n disabled: props.disabled,\n readonly: props.readonly,\n maxlength: props.maxlength,\n rows: props.rows,\n style: getInnerStyle(),\n onInput: handleInput,\n onChange: handleChange,\n onFocus: handleFocus,\n onBlur: handleBlur,\n })\n : h('input', {\n class: 'qxs-input__inner',\n type: props.type,\n value: props.modelValue,\n placeholder: props.placeholder,\n disabled: props.disabled,\n readonly: props.readonly,\n maxlength: props.maxlength,\n onInput: handleInput,\n onChange: handleChange,\n onFocus: handleFocus,\n onBlur: handleBlur,\n }),\n !isTextarea() && props.clearable && props.modelValue && !props.disabled && h('span', {\n class: 'qxs-input__clear',\n onClick: handleClear,\n }, '×'),\n slots.suffix?.(),\n props.showWordLimit && props.maxlength && h('span', {\n class: isTextarea() ? 'qxs-textarea__count' : 'qxs-input__count',\n }, `${String(props.modelValue).length}/${props.maxlength}`),\n ])\n },\n})\n\nexport default QxsInput\n"],"names":["QxsInput","defineComponent","name","props","modelValue","type","String","Number","default","placeholder","disabled","Boolean","readonly","clearable","size","maxlength","showWordLimit","rows","autosize","Object","resize","emits","setup","_ref","emit","slots","textareaRef","ref","isTextarea","handleInput","e","value","target","adjustTextareaHeight","handleChange","handleFocus","handleBlur","handleClear","textarea","style","height","minHeight","maxHeight","Infinity","lineHeight","parseInt","getComputedStyle","paddingHeight","paddingTop","paddingBottom","minRows","maxRows","scrollHeight","newHeight","Math","min","max","watch","nextTick","h","class","prefix","onInput","onChange","onFocus","onBlur","onClick","suffix","length"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("vue");const l=e.defineComponent({name:"QxsInputNumber",props:{modelValue:{type:Number,default:0},min:{type:Number,default:-1/0},max:{type:Number,default:1/0},step:{type:Number,default:1},precision:{type:Number,default:void 0},disabled:{type:Boolean,default:!1},readonly:{type:Boolean,default:!1},controls:{type:Boolean,default:!0},size:{type:String,default:"default"},placeholder:{type:String,default:""}},emits:["update:modelValue","change","focus","blur","input"],setup(l,t){let{emit:o}=t;const a=e.ref(),r=e.ref(null),d=e.computed(()=>{if(null!==r.value)return r.value;let e=l.modelValue;return void 0!==l.precision&&"number"==typeof e&&(e=Number.parseFloat(e.toFixed(l.precision))),e}),n=e.computed(()=>l.modelValue<=l.min),u=e.computed(()=>l.modelValue>=l.max),i=e=>void 0===l.precision?e:Number.parseFloat(e.toFixed(l.precision)),s=()=>{if(l.disabled||l.readonly||u.value)return;const e=i(l.modelValue+l.step),t=Math.min(e,l.max);o("update:modelValue",t),o("change",t,l.modelValue)},p=()=>{if(l.disabled||l.readonly||n.value)return;const e=i(l.modelValue-l.step),t=Math.max(e,l.min);o("update:modelValue",t),o("change",t,l.modelValue)},c=e=>{const l=e.target.value;r.value=l,o("input",l)},b=e=>{const t=e.target.value;let a=""===t?0:Number(t);Number.isNaN(a)||(void 0!==l.precision&&(a=i(a)),a=Math.max(l.min,Math.min(l.max,a)),o("update:modelValue",a),o("change",a,l.modelValue)),r.value=null},m=e=>{o("focus",e)},x=e=>{o("blur",e),r.value=null},f=e.computed(()=>"large"===l.size?"40px":"small"===l.size?"24px":"32px");return()=>e.h("div",{class:["qxs-input-number",`qxs-input-number--${l.size}`,{"is-disabled":l.disabled,"is-controls":l.controls}],style:{display:"inline-flex",alignItems:"center",position:"relative"}},[l.controls&&e.h("button",{class:["qxs-input-number__decrease",{"is-disabled":n.value||l.disabled}],disabled:n.value||l.disabled,onClick:p,style:{width:f.value,height:f.value,border:"1px solid var(--qxs-border-color, #dcdfe6)",borderRight:"none",background:"var(--qxs-fill-color-blank, #fff)",cursor:n.value||l.disabled?"not-allowed":"pointer",display:"flex",alignItems:"center",justifyContent:"center",fontSize:"14px",borderRadius:"4px 0 0 4px"}},"−"),e.h("input",{ref:a,class:"qxs-input-number__inner",type:"text",value:d.value,placeholder:l.placeholder,disabled:l.disabled,readonly:l.readonly,onInput:c,onChange:b,onFocus:m,onBlur:x,style:{width:l.controls?`calc(100% - ${f.value} * 2)`:"100%",height:f.value,padding:"0 12px",border:"1px solid var(--qxs-border-color, #dcdfe6)",borderLeft:l.controls?"none":void 0,borderRight:l.controls?"none":void 0,outline:"none",textAlign:"center",fontSize:"large"===l.size?"14px":"small"===l.size?"12px":"13px",borderRadius:l.controls?"0":"4px"}}),l.controls&&e.h("button",{class:["qxs-input-number__increase",{"is-disabled":u.value||l.disabled}],disabled:u.value||l.disabled,onClick:s,style:{width:f.value,height:f.value,border:"1px solid var(--qxs-border-color, #dcdfe6)",borderLeft:"none",background:"var(--qxs-fill-color-blank, #fff)",cursor:u.value||l.disabled?"not-allowed":"pointer",display:"flex",alignItems:"center",justifyContent:"center",fontSize:"14px",borderRadius:"0 4px 4px 0"}},"+")])}});exports.QxsInputNumber=l,exports.default=l;
|
|
2
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../../../../../packages/components/src/ui/input-number/index.ts"],"sourcesContent":["import { defineComponent, h, ref, computed, type PropType } from 'vue'\n\nexport type InputNumberSize = 'large' | 'default' | 'small'\n\nexport const QxsInputNumber = defineComponent({\n name: 'QxsInputNumber',\n props: {\n modelValue: { type: Number, default: 0 },\n min: { type: Number, default: -Infinity },\n max: { type: Number, default: Infinity },\n step: { type: Number, default: 1 },\n precision: { type: Number, default: undefined },\n disabled: { type: Boolean, default: false },\n readonly: { type: Boolean, default: false },\n controls: { type: Boolean, default: true },\n size: { type: String as PropType<InputNumberSize>, default: 'default' },\n placeholder: { type: String, default: '' },\n },\n emits: ['update:modelValue', 'change', 'focus', 'blur', 'input'],\n setup(props, { emit }) {\n const inputRef = ref<HTMLInputElement>()\n const userInput = ref<string | null>(null)\n\n const displayValue = computed(() => {\n if (userInput.value !== null) {\n return userInput.value\n }\n \n let value = props.modelValue\n if (props.precision !== undefined && typeof value === 'number') {\n value = Number.parseFloat(value.toFixed(props.precision))\n }\n return value\n })\n\n const minDisabled = computed(() => {\n return props.modelValue <= props.min\n })\n\n const maxDisabled = computed(() => {\n return props.modelValue >= props.max\n })\n\n const toPrecision = (num: number) => {\n if (props.precision === undefined) return num\n return Number.parseFloat(num.toFixed(props.precision))\n }\n\n const increase = () => {\n if (props.disabled || props.readonly || maxDisabled.value) return\n const newValue = toPrecision(props.modelValue + props.step)\n const value = Math.min(newValue, props.max)\n emit('update:modelValue', value)\n emit('change', value, props.modelValue)\n }\n\n const decrease = () => {\n if (props.disabled || props.readonly || minDisabled.value) return\n const newValue = toPrecision(props.modelValue - props.step)\n const value = Math.max(newValue, props.min)\n emit('update:modelValue', value)\n emit('change', value, props.modelValue)\n }\n\n const handleInput = (e: Event) => {\n const value = (e.target as HTMLInputElement).value\n userInput.value = value\n emit('input', value)\n }\n\n const handleChange = (e: Event) => {\n const value = (e.target as HTMLInputElement).value\n let newValue = value === '' ? 0 : Number(value)\n \n if (Number.isNaN(newValue)) {\n userInput.value = null\n return\n }\n\n if (props.precision !== undefined) {\n newValue = toPrecision(newValue)\n }\n\n newValue = Math.max(props.min, Math.min(props.max, newValue))\n \n emit('update:modelValue', newValue)\n emit('change', newValue, props.modelValue)\n userInput.value = null\n }\n\n const handleFocus = (e: FocusEvent) => {\n emit('focus', e)\n }\n\n const handleBlur = (e: FocusEvent) => {\n emit('blur', e)\n userInput.value = null\n }\n\n const buttonSize = computed(() => {\n return props.size === 'large' ? '40px' : props.size === 'small' ? '24px' : '32px'\n })\n\n return () => h('div', {\n class: [\n 'qxs-input-number',\n `qxs-input-number--${props.size}`,\n {\n 'is-disabled': props.disabled,\n 'is-controls': props.controls,\n },\n ],\n style: {\n display: 'inline-flex',\n alignItems: 'center',\n position: 'relative',\n },\n }, [\n props.controls && h('button', {\n class: ['qxs-input-number__decrease', { 'is-disabled': minDisabled.value || props.disabled }],\n disabled: minDisabled.value || props.disabled,\n onClick: decrease,\n style: {\n width: buttonSize.value,\n height: buttonSize.value,\n border: '1px solid var(--qxs-border-color, #dcdfe6)',\n borderRight: 'none',\n background: 'var(--qxs-fill-color-blank, #fff)',\n cursor: minDisabled.value || props.disabled ? 'not-allowed' : 'pointer',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n fontSize: '14px',\n borderRadius: '4px 0 0 4px',\n },\n }, '−'),\n h('input', {\n ref: inputRef,\n class: 'qxs-input-number__inner',\n type: 'text',\n value: displayValue.value,\n placeholder: props.placeholder,\n disabled: props.disabled,\n readonly: props.readonly,\n onInput: handleInput,\n onChange: handleChange,\n onFocus: handleFocus,\n onBlur: handleBlur,\n style: {\n width: props.controls ? `calc(100% - ${buttonSize.value} * 2)` : '100%',\n height: buttonSize.value,\n padding: '0 12px',\n border: '1px solid var(--qxs-border-color, #dcdfe6)',\n borderLeft: props.controls ? 'none' : undefined,\n borderRight: props.controls ? 'none' : undefined,\n outline: 'none',\n textAlign: 'center',\n fontSize: props.size === 'large' ? '14px' : props.size === 'small' ? '12px' : '13px',\n borderRadius: props.controls ? '0' : '4px',\n },\n }),\n props.controls && h('button', {\n class: ['qxs-input-number__increase', { 'is-disabled': maxDisabled.value || props.disabled }],\n disabled: maxDisabled.value || props.disabled,\n onClick: increase,\n style: {\n width: buttonSize.value,\n height: buttonSize.value,\n border: '1px solid var(--qxs-border-color, #dcdfe6)',\n borderLeft: 'none',\n background: 'var(--qxs-fill-color-blank, #fff)',\n cursor: maxDisabled.value || props.disabled ? 'not-allowed' : 'pointer',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n fontSize: '14px',\n borderRadius: '0 4px 4px 0',\n },\n }, '+'),\n ])\n },\n})\n\nexport default QxsInputNumber\n"],"names":["QxsInputNumber","defineComponent","name","props","modelValue","type","Number","default","min","Infinity","max","step","precision","disabled","Boolean","readonly","controls","size","String","placeholder","emits","setup","_ref","emit","inputRef","ref","userInput","displayValue","computed","value","parseFloat","toFixed","minDisabled","maxDisabled","toPrecision","num","increase","newValue","Math","decrease","handleInput","e","target","handleChange","isNaN","handleFocus","handleBlur","buttonSize","h","class","style","display","alignItems","position","onClick","width","height","border","borderRight","background","cursor","justifyContent","fontSize","borderRadius","onInput","onChange","onFocus","onBlur","padding","borderLeft","outline","textAlign"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var e=require("vue");const t=Symbol("QxsRow"),s=e.defineComponent({name:"QxsRow",props:{gutter:{type:Number,default:0},justify:{type:String,default:"start"},align:{type:String,default:"top"},tag:{type:String,default:"div"}},setup(s,l){let{slots:p}=l;e.provide(t,{gutter:e.computed(()=>s.gutter)});const u={display:"flex",flexWrap:"wrap",justifyContent:{start:"flex-start",end:"flex-end",center:"center","space-around":"space-around","space-between":"space-between","space-evenly":"space-evenly"}[s.justify],alignItems:{top:"flex-start",middle:"center",bottom:"flex-end"}[s.align]};return s.gutter&&(u.marginLeft=-s.gutter/2+"px",u.marginRight=-s.gutter/2+"px"),()=>e.h(s.tag,{class:"qxs-row",style:u},p.default?.())}}),l=e.defineComponent({name:"QxsCol",props:{span:{type:Number,default:24},offset:{type:Number,default:0},push:{type:Number,default:0},pull:{type:Number,default:0},tag:{type:String,default:"div"},xs:{type:[Number,Object],default:void 0},sm:{type:[Number,Object],default:void 0},md:{type:[Number,Object],default:void 0},lg:{type:[Number,Object],default:void 0},xl:{type:[Number,Object],default:void 0}},setup(s,l){let{slots:p}=l;const u=e.inject(t,null),a=u?.gutter.value||0,r={boxSizing:"border-box"};a&&(r.paddingLeft=a/2+"px",r.paddingRight=a/2+"px");const o=100/24*s.span;return r.maxWidth=`${o}%`,r.flex=`0 0 ${o}%`,s.offset&&(r.marginLeft=100/24*s.offset+"%"),s.push&&(r.position="relative",r.left=100/24*s.push+"%"),s.pull&&(r.position="relative",r.right=100/24*s.pull+"%"),()=>e.h(s.tag,{class:["qxs-col",`qxs-col-${s.span}`,s.offset&&`qxs-col-offset-${s.offset}`,s.push&&`qxs-col-push-${s.push}`,s.pull&&`qxs-col-pull-${s.pull}`],style:r},p.default?.())}});exports.QxsCol=l,exports.QxsRow=s;
|
|
2
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../../../../../packages/components/src/ui/layout/index.ts"],"sourcesContent":["import { defineComponent, h, provide, inject, computed, type PropType, type InjectionKey, type Ref, type CSSProperties } from 'vue'\n\nexport type RowJustify = 'start' | 'end' | 'center' | 'space-around' | 'space-between' | 'space-evenly'\nexport type RowAlign = 'top' | 'middle' | 'bottom'\n\ninterface RowContext {\n gutter: Ref<number>\n}\n\nconst ROW_INJECTION_KEY: InjectionKey<RowContext> = Symbol('QxsRow')\n\nexport const QxsRow = defineComponent({\n name: 'QxsRow',\n props: {\n gutter: { type: Number, default: 0 },\n justify: { type: String as PropType<RowJustify>, default: 'start' },\n align: { type: String as PropType<RowAlign>, default: 'top' },\n tag: { type: String, default: 'div' },\n },\n setup(props, { slots }) {\n provide(ROW_INJECTION_KEY, {\n gutter: computed(() => props.gutter),\n })\n\n const justifyMap: Record<RowJustify, string> = {\n 'start': 'flex-start',\n 'end': 'flex-end',\n 'center': 'center',\n 'space-around': 'space-around',\n 'space-between': 'space-between',\n 'space-evenly': 'space-evenly',\n }\n\n const alignMap: Record<RowAlign, string> = {\n 'top': 'flex-start',\n 'middle': 'center',\n 'bottom': 'flex-end',\n }\n\n const rowStyle: CSSProperties = {\n display: 'flex',\n flexWrap: 'wrap',\n justifyContent: justifyMap[props.justify],\n alignItems: alignMap[props.align],\n }\n\n if (props.gutter) {\n rowStyle.marginLeft = `${-props.gutter / 2}px`\n rowStyle.marginRight = `${-props.gutter / 2}px`\n }\n\n return () => h(props.tag, {\n class: 'qxs-row',\n style: rowStyle,\n }, slots.default?.())\n },\n})\n\nexport const QxsCol = defineComponent({\n name: 'QxsCol',\n props: {\n span: { type: Number, default: 24 },\n offset: { type: Number, default: 0 },\n push: { type: Number, default: 0 },\n pull: { type: Number, default: 0 },\n tag: { type: String, default: 'div' },\n xs: { type: [Number, Object] as PropType<number | { span?: number; offset?: number }>, default: undefined },\n sm: { type: [Number, Object] as PropType<number | { span?: number; offset?: number }>, default: undefined },\n md: { type: [Number, Object] as PropType<number | { span?: number; offset?: number }>, default: undefined },\n lg: { type: [Number, Object] as PropType<number | { span?: number; offset?: number }>, default: undefined },\n xl: { type: [Number, Object] as PropType<number | { span?: number; offset?: number }>, default: undefined },\n },\n setup(props, { slots }) {\n const row = inject(ROW_INJECTION_KEY, null)\n\n const gutter = row?.gutter.value || 0\n\n const colStyle: CSSProperties = {\n boxSizing: 'border-box',\n }\n\n if (gutter) {\n colStyle.paddingLeft = `${gutter / 2}px`\n colStyle.paddingRight = `${gutter / 2}px`\n }\n\n const spanWidth = (100 / 24) * props.span\n colStyle.maxWidth = `${spanWidth}%`\n colStyle.flex = `0 0 ${spanWidth}%`\n\n if (props.offset) {\n colStyle.marginLeft = `${(100 / 24) * props.offset}%`\n }\n\n if (props.push) {\n colStyle.position = 'relative'\n colStyle.left = `${(100 / 24) * props.push}%`\n }\n\n if (props.pull) {\n colStyle.position = 'relative'\n colStyle.right = `${(100 / 24) * props.pull}%`\n }\n\n return () => h(props.tag, {\n class: [\n 'qxs-col',\n `qxs-col-${props.span}`,\n props.offset && `qxs-col-offset-${props.offset}`,\n props.push && `qxs-col-push-${props.push}`,\n props.pull && `qxs-col-pull-${props.pull}`,\n ],\n style: colStyle,\n }, slots.default?.())\n },\n})\n\nexport default { QxsRow, QxsCol }\n"],"names":["ROW_INJECTION_KEY","Symbol","QxsRow","defineComponent","name","props","gutter","type","Number","default","justify","String","align","tag","setup","_ref","slots","provide","computed","rowStyle","display","flexWrap","justifyContent","start","end","center","alignItems","top","middle","bottom","marginLeft","marginRight","h","class","style","QxsCol","span","offset","push","pull","xs","Object","sm","md","lg","xl","_ref2","row","inject","value","colStyle","boxSizing","paddingLeft","paddingRight","spanWidth","maxWidth","flex","position","left","right"],"mappings":"kCASA,MAAMA,EAA8CC,OAAO,UAE9CC,EAASC,EAAAA,gBAAgB,CACpCC,KAAM,SACNC,MAAO,CACLC,OAAQ,CAAEC,KAAMC,OAAQC,QAAS,GACjCC,QAAS,CAAEH,KAAMI,OAAgCF,QAAS,SAC1DG,MAAO,CAAEL,KAAMI,OAA8BF,QAAS,OACtDI,IAAK,CAAEN,KAAMI,OAAQF,QAAS,QAEhCK,KAAAA,CAAMT,EAAAU,GAAkB,IAAXC,MAAEA,GAAMD,EACnBE,EAAAA,QAAQjB,EAAmB,CACzBM,OAAQY,EAAAA,SAAS,IAAMb,EAAMC,UAG/B,MAeMa,EAA0B,CAC9BC,QAAS,OACTC,SAAU,OACVC,eAlB6C,CAC7CC,MAAS,aACTC,IAAO,WACPC,OAAU,SACV,eAAgB,eAChB,gBAAiB,gBACjB,eAAgB,gBAYWpB,EAAMK,SACjCgB,WAVyC,CACzCC,IAAO,aACPC,OAAU,SACVC,OAAU,YAOWxB,EAAMO,QAQ7B,OALIP,EAAMC,SACRa,EAASW,YAAiBzB,EAAMC,OAAS,EAAnB,KACtBa,EAASY,aAAkB1B,EAAMC,OAAS,EAAnB,MAGlB,IAAM0B,EAAAA,EAAE3B,EAAMQ,IAAK,CACxBoB,MAAO,UACPC,MAAOf,GACNH,EAAMP,YACX,IAGW0B,EAAShC,EAAAA,gBAAgB,CACpCC,KAAM,SACNC,MAAO,CACL+B,KAAM,CAAE7B,KAAMC,OAAQC,QAAS,IAC/B4B,OAAQ,CAAE9B,KAAMC,OAAQC,QAAS,GACjC6B,KAAM,CAAE/B,KAAMC,OAAQC,QAAS,GAC/B8B,KAAM,CAAEhC,KAAMC,OAAQC,QAAS,GAC/BI,IAAK,CAAEN,KAAMI,OAAQF,QAAS,OAC9B+B,GAAI,CAAEjC,KAAM,CAACC,OAAQiC,QAAkEhC,aAAS,GAChGiC,GAAI,CAAEnC,KAAM,CAACC,OAAQiC,QAAkEhC,aAAS,GAChGkC,GAAI,CAAEpC,KAAM,CAACC,OAAQiC,QAAkEhC,aAAS,GAChGmC,GAAI,CAAErC,KAAM,CAACC,OAAQiC,QAAkEhC,aAAS,GAChGoC,GAAI,CAAEtC,KAAM,CAACC,OAAQiC,QAAkEhC,aAAS,IAElGK,KAAAA,CAAMT,EAAAyC,GAAkB,IAAX9B,MAAEA,GAAM8B,EACnB,MAAMC,EAAMC,EAAAA,OAAOhD,EAAmB,MAEhCM,EAASyC,GAAKzC,OAAO2C,OAAS,EAE9BC,EAA0B,CAC9BC,UAAW,cAGT7C,IACF4C,EAASE,YAAiB9C,EAAS,EAAZ,KACvB4C,EAASG,aAAkB/C,EAAS,EAAZ,MAG1B,MAAMgD,EAAa,IAAM,GAAMjD,EAAM+B,KAkBrC,OAjBAc,EAASK,SAAW,GAAGD,KACvBJ,EAASM,KAAO,OAAOF,KAEnBjD,EAAMgC,SACRa,EAASpB,WAAiB,IAAM,GAAMzB,EAAMgC,OAAtB,KAGpBhC,EAAMiC,OACRY,EAASO,SAAW,WACpBP,EAASQ,KAAW,IAAM,GAAMrD,EAAMiC,KAAtB,KAGdjC,EAAMkC,OACRW,EAASO,SAAW,WACpBP,EAASS,MAAY,IAAM,GAAMtD,EAAMkC,KAAtB,KAGZ,IAAMP,EAAAA,EAAE3B,EAAMQ,IAAK,CACxBoB,MAAO,CACL,UACA,WAAW5B,EAAM+B,OACjB/B,EAAMgC,QAAU,kBAAkBhC,EAAMgC,SACxChC,EAAMiC,MAAQ,gBAAgBjC,EAAMiC,OACpCjC,EAAMkC,MAAQ,gBAAgBlC,EAAMkC,QAEtCL,MAAOgB,GACNlC,EAAMP,YACX"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("vue");const t=e.defineComponent({name:"QxsLink",props:{type:{type:String,default:"default"},href:{type:String,default:""},target:{type:String,default:"_self"},disabled:{type:Boolean,default:!1},underline:{type:Boolean,default:!0}},emits:["click"],setup(t,l){let{slots:d,emit:i}=l;const r=e=>{t.disabled?e.preventDefault():(t.href||e.preventDefault(),i("click",e))};return()=>e.h("a",{class:["qxs-link",`qxs-link--${t.type}`,{"is-disabled":t.disabled,"is-underline":t.underline}],href:t.disabled?void 0:t.href,target:t.disabled?void 0:t.target,onClick:r,style:{cursor:t.disabled?"not-allowed":"pointer",textDecoration:t.underline?"underline":"none",opacity:t.disabled?"0.5":"1",color:t.disabled?"var(--qxs-text-color-disabled, #c0c4cc)":void 0}},d.default?.())}});exports.QxsLink=t,exports.default=t;
|
|
2
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../../../../../packages/components/src/ui/link/index.ts"],"sourcesContent":["import { defineComponent, h, type PropType } from 'vue'\n\nexport type LinkType = 'primary' | 'success' | 'warning' | 'danger' | 'info' | 'default'\n\nexport const QxsLink = defineComponent({\n name: 'QxsLink',\n props: {\n type: { type: String as PropType<LinkType>, default: 'default' },\n href: { type: String, default: '' },\n target: { type: String as PropType<'_blank' | '_self' | '_parent' | '_top'>, default: '_self' },\n disabled: { type: Boolean, default: false },\n underline: { type: Boolean, default: true },\n },\n emits: ['click'],\n setup(props, { slots, emit }) {\n const handleClick = (e: MouseEvent) => {\n if (props.disabled) {\n e.preventDefault()\n return\n }\n if (!props.href) {\n e.preventDefault()\n }\n emit('click', e)\n }\n\n return () => h('a', {\n class: [\n 'qxs-link',\n `qxs-link--${props.type}`,\n {\n 'is-disabled': props.disabled,\n 'is-underline': props.underline,\n },\n ],\n href: props.disabled ? undefined : props.href,\n target: props.disabled ? undefined : props.target,\n onClick: handleClick,\n style: {\n cursor: props.disabled ? 'not-allowed' : 'pointer',\n textDecoration: props.underline ? 'underline' : 'none',\n opacity: props.disabled ? '0.5' : '1',\n color: props.disabled ? 'var(--qxs-text-color-disabled, #c0c4cc)' : undefined,\n },\n }, slots.default?.())\n },\n})\n\nexport default QxsLink\n"],"names":["QxsLink","defineComponent","name","props","type","String","default","href","target","disabled","Boolean","underline","emits","setup","_ref","slots","emit","handleClick","e","preventDefault","h","class","onClick","style","cursor","textDecoration","opacity","color"],"mappings":"yFAIO,MAAMA,EAAUC,EAAAA,gBAAgB,CACrCC,KAAM,UACNC,MAAO,CACLC,KAAM,CAAEA,KAAMC,OAA8BC,QAAS,WACrDC,KAAM,CAAEH,KAAMC,OAAQC,QAAS,IAC/BE,OAAQ,CAAEJ,KAAMC,OAA6DC,QAAS,SACtFG,SAAU,CAAEL,KAAMM,QAASJ,SAAS,GACpCK,UAAW,CAAEP,KAAMM,QAASJ,SAAS,IAEvCM,MAAO,CAAC,SACRC,KAAAA,CAAMV,EAAAW,GAAwB,IAAjBC,MAAEA,EAAAC,KAAOA,GAAKF,EACzB,MAAMG,EAAeC,IACff,EAAMM,SACRS,EAAEC,kBAGChB,EAAMI,MACTW,EAAEC,iBAEJH,EAAK,QAASE,KAGhB,MAAO,IAAME,EAAAA,EAAE,IAAK,CAClBC,MAAO,CACL,WACA,aAAalB,EAAMC,OACnB,CACE,cAAeD,EAAMM,SACrB,eAAgBN,EAAMQ,YAG1BJ,KAAMJ,EAAMM,cAAW,EAAYN,EAAMI,KACzCC,OAAQL,EAAMM,cAAW,EAAYN,EAAMK,OAC3Cc,QAASL,EACTM,MAAO,CACLC,OAAQrB,EAAMM,SAAW,cAAgB,UACzCgB,eAAgBtB,EAAMQ,UAAY,YAAc,OAChDe,QAASvB,EAAMM,SAAW,MAAQ,IAClCkB,MAAOxB,EAAMM,SAAW,+CAA4C,IAErEM,EAAMT,YACX"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("vue");const t=e.defineComponent({name:"QxsPopover",props:{content:{type:String,default:""},placement:{type:String,default:"bottom"},trigger:{type:String,default:"hover"},disabled:{type:Boolean,default:!1},width:{type:[String,Number],default:150},visible:{type:Boolean,default:void 0},offset:{type:Number,default:12},showArrow:{type:Boolean,default:!0}},emits:["update:visible","show","hide","after-enter","after-leave"],setup(t,o){let{slots:r,emit:i}=o;const l=e.ref(!1),n=e.ref(),a=e.ref();let s=null;const u=void 0!==t.visible,d=e.computed(()=>u?t.visible:l.value),p=()=>{t.disabled||(s&&(clearTimeout(s),s=null),u||(l.value=!0),i("update:visible",!0),i("show"))},c=()=>{s&&clearTimeout(s),s=setTimeout(()=>{u||(l.value=!1),i("update:visible",!1),i("hide")},200)},v=()=>{"hover"===t.trigger&&p()},f=()=>{"hover"===t.trigger&&c()},g=()=>{"click"===t.trigger&&(d.value?c():p())},b=()=>{"focus"===t.trigger&&p()},h=()=>{"focus"===t.trigger&&c()},m=()=>{"hover"===t.trigger&&s&&(clearTimeout(s),s=null)},x=()=>{"hover"===t.trigger&&c()},y=e=>{if("click"!==t.trigger)return;const o=e.target;n.value?.contains(o)||a.value?.contains(o)||c()};e.onMounted(()=>{"click"===t.trigger&&document.addEventListener("click",y)}),e.onBeforeUnmount(()=>{"click"===t.trigger&&document.removeEventListener("click",y),s&&clearTimeout(s)});return()=>e.h("div",{class:"qxs-popover",style:{display:"inline-block",position:"relative"}},[e.h("div",{ref:n,class:"qxs-popover__reference",onMouseenter:v,onMouseleave:f,onClick:g,onFocus:b,onBlur:h},r.reference?.()||r.default?.()),d.value&&e.h("div",{ref:a,class:["qxs-popover__popper",`qxs-popover__popper--${t.placement}`],style:{position:"absolute",zIndex:2e3,width:"number"==typeof t.width?`${t.width}px`:t.width,padding:"12px",backgroundColor:"var(--qxs-fill-color-blank, #fff)",border:"1px solid var(--qxs-border-color-light, #e4e7ed)",borderRadius:"4px",boxShadow:"0 2px 12px 0 rgba(0, 0, 0, 0.1)",fontSize:"14px",lineHeight:"1.4",wordBreak:"break-all"},onMouseenter:m,onMouseleave:x},r.default?.()||t.content)])}});exports.QxsPopover=t,exports.default=t;
|
|
2
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../../../../../packages/components/src/ui/popover/index.ts"],"sourcesContent":["import { computed, defineComponent, h, onBeforeUnmount, onMounted, ref, type PropType } from 'vue'\n\nexport type PopoverPlacement = 'top' | 'top-start' | 'top-end' | 'bottom' | 'bottom-start' | 'bottom-end' | 'left' | 'left-start' | 'left-end' | 'right' | 'right-start' | 'right-end'\nexport type PopoverTrigger = 'hover' | 'click' | 'focus' | 'manual'\n\nexport const QxsPopover = defineComponent({\n name: 'QxsPopover',\n props: {\n content: { type: String, default: '' },\n placement: { type: String as PropType<PopoverPlacement>, default: 'bottom' },\n trigger: { type: String as PropType<PopoverTrigger>, default: 'hover' },\n disabled: { type: Boolean, default: false },\n width: { type: [String, Number], default: 150 },\n visible: { type: Boolean, default: undefined },\n offset: { type: Number, default: 12 },\n showArrow: { type: Boolean, default: true },\n },\n emits: ['update:visible', 'show', 'hide', 'after-enter', 'after-leave'],\n setup(props, { slots, emit }) {\n const popoverVisible = ref(false)\n const referenceRef = ref<HTMLElement>()\n const popperRef = ref<HTMLElement>()\n let hideTimer: ReturnType<typeof setTimeout> | null = null\n\n const isControlled = props.visible !== undefined\n\n const currentVisible = computed(() => isControlled ? props.visible : popoverVisible.value)\n\n const show = () => {\n if (props.disabled)\n return\n if (hideTimer) {\n clearTimeout(hideTimer)\n hideTimer = null\n }\n if (!isControlled) {\n popoverVisible.value = true\n }\n emit('update:visible', true)\n emit('show')\n }\n\n const hide = () => {\n if (hideTimer) {\n clearTimeout(hideTimer)\n }\n hideTimer = setTimeout(() => {\n if (!isControlled) {\n popoverVisible.value = false\n }\n emit('update:visible', false)\n emit('hide')\n }, 200)\n }\n\n const handleReferenceMouseEnter = () => {\n if (props.trigger === 'hover') {\n show()\n }\n }\n\n const handleReferenceMouseLeave = () => {\n if (props.trigger === 'hover') {\n hide()\n }\n }\n\n const handleReferenceClick = () => {\n if (props.trigger === 'click') {\n if (currentVisible.value) {\n hide()\n }\n else {\n show()\n }\n }\n }\n\n const handleReferenceFocus = () => {\n if (props.trigger === 'focus') {\n show()\n }\n }\n\n const handleReferenceBlur = () => {\n if (props.trigger === 'focus') {\n hide()\n }\n }\n\n const handlePopperMouseEnter = () => {\n if (props.trigger === 'hover' && hideTimer) {\n clearTimeout(hideTimer)\n hideTimer = null\n }\n }\n\n const handlePopperMouseLeave = () => {\n if (props.trigger === 'hover') {\n hide()\n }\n }\n\n const handleClickOutside = (e: MouseEvent) => {\n if (props.trigger !== 'click')\n return\n const target = e.target as Node\n if (\n referenceRef.value?.contains(target)\n || popperRef.value?.contains(target)\n ) {\n return\n }\n hide()\n }\n\n onMounted(() => {\n if (props.trigger === 'click') {\n document.addEventListener('click', handleClickOutside)\n }\n })\n\n onBeforeUnmount(() => {\n if (props.trigger === 'click') {\n document.removeEventListener('click', handleClickOutside)\n }\n if (hideTimer) {\n clearTimeout(hideTimer)\n }\n })\n\n const getPopperStyle = () => {\n const width = typeof props.width === 'number' ? `${props.width}px` : props.width\n return {\n position: 'absolute' as const,\n zIndex: 2000,\n width,\n padding: '12px',\n backgroundColor: 'var(--qxs-fill-color-blank, #fff)',\n border: '1px solid var(--qxs-border-color-light, #e4e7ed)',\n borderRadius: '4px',\n boxShadow: '0 2px 12px 0 rgba(0, 0, 0, 0.1)',\n fontSize: '14px',\n lineHeight: '1.4',\n wordBreak: 'break-all' as const,\n }\n }\n\n return () => h('div', {\n class: 'qxs-popover',\n style: {\n display: 'inline-block',\n position: 'relative',\n },\n }, [\n h('div', {\n ref: referenceRef,\n class: 'qxs-popover__reference',\n onMouseenter: handleReferenceMouseEnter,\n onMouseleave: handleReferenceMouseLeave,\n onClick: handleReferenceClick,\n onFocus: handleReferenceFocus,\n onBlur: handleReferenceBlur,\n }, slots.reference?.() || slots.default?.()),\n currentVisible.value && h('div', {\n ref: popperRef,\n class: ['qxs-popover__popper', `qxs-popover__popper--${props.placement}`],\n style: getPopperStyle(),\n onMouseenter: handlePopperMouseEnter,\n onMouseleave: handlePopperMouseLeave,\n }, slots.default?.() || props.content),\n ])\n },\n})\n\nexport default QxsPopover\n"],"names":["QxsPopover","defineComponent","name","props","content","type","String","default","placement","trigger","disabled","Boolean","width","Number","visible","offset","showArrow","emits","setup","_ref","slots","emit","popoverVisible","ref","referenceRef","popperRef","hideTimer","isControlled","currentVisible","computed","value","show","clearTimeout","hide","setTimeout","handleReferenceMouseEnter","handleReferenceMouseLeave","handleReferenceClick","handleReferenceFocus","handleReferenceBlur","handlePopperMouseEnter","handlePopperMouseLeave","handleClickOutside","e","target","contains","onMounted","document","addEventListener","onBeforeUnmount","removeEventListener","h","class","style","display","position","onMouseenter","onMouseleave","onClick","onFocus","onBlur","reference","zIndex","padding","backgroundColor","border","borderRadius","boxShadow","fontSize","lineHeight","wordBreak"],"mappings":"yFAKO,MAAMA,EAAaC,EAAAA,gBAAgB,CACxCC,KAAM,aACNC,MAAO,CACLC,QAAS,CAAEC,KAAMC,OAAQC,QAAS,IAClCC,UAAW,CAAEH,KAAMC,OAAsCC,QAAS,UAClEE,QAAS,CAAEJ,KAAMC,OAAoCC,QAAS,SAC9DG,SAAU,CAAEL,KAAMM,QAASJ,SAAS,GACpCK,MAAO,CAAEP,KAAM,CAACC,OAAQO,QAASN,QAAS,KAC1CO,QAAS,CAAET,KAAMM,QAASJ,aAAS,GACnCQ,OAAQ,CAAEV,KAAMQ,OAAQN,QAAS,IACjCS,UAAW,CAAEX,KAAMM,QAASJ,SAAS,IAEvCU,MAAO,CAAC,iBAAkB,OAAQ,OAAQ,cAAe,eACzDC,KAAAA,CAAMf,EAAAgB,GAAwB,IAAjBC,MAAEA,EAAAC,KAAOA,GAAKF,EACzB,MAAMG,EAAiBC,EAAAA,KAAI,GACrBC,EAAeD,EAAAA,MACfE,EAAYF,EAAAA,MAClB,IAAIG,EAAkD,KAEtD,MAAMC,OAAiC,IAAlBxB,EAAMW,QAErBc,EAAiBC,EAAAA,SAAS,IAAMF,EAAexB,EAAMW,QAAUQ,EAAeQ,OAE9EC,EAAOA,KACP5B,EAAMO,WAENgB,IACFM,aAAaN,GACbA,EAAY,MAETC,IACHL,EAAeQ,OAAQ,GAEzBT,EAAK,kBAAkB,GACvBA,EAAK,UAGDY,EAAOA,KACPP,GACFM,aAAaN,GAEfA,EAAYQ,WAAW,KAChBP,IACHL,EAAeQ,OAAQ,GAEzBT,EAAK,kBAAkB,GACvBA,EAAK,SACJ,MAGCc,EAA4BA,KACV,UAAlBhC,EAAMM,SACRsB,KAIEK,EAA4BA,KACV,UAAlBjC,EAAMM,SACRwB,KAIEI,EAAuBA,KACL,UAAlBlC,EAAMM,UACJmB,EAAeE,MACjBG,IAGAF,MAKAO,EAAuBA,KACL,UAAlBnC,EAAMM,SACRsB,KAIEQ,EAAsBA,KACJ,UAAlBpC,EAAMM,SACRwB,KAIEO,EAAyBA,KACP,UAAlBrC,EAAMM,SAAuBiB,IAC/BM,aAAaN,GACbA,EAAY,OAIVe,EAAyBA,KACP,UAAlBtC,EAAMM,SACRwB,KAIES,EAAsBC,IAC1B,GAAsB,UAAlBxC,EAAMM,QACR,OACF,MAAMmC,EAASD,EAAEC,OAEfpB,EAAaM,OAAOe,SAASD,IAC1BnB,EAAUK,OAAOe,SAASD,IAI/BX,KAGFa,EAAAA,UAAU,KACc,UAAlB3C,EAAMM,SACRsC,SAASC,iBAAiB,QAASN,KAIvCO,EAAAA,gBAAgB,KACQ,UAAlB9C,EAAMM,SACRsC,SAASG,oBAAoB,QAASR,GAEpChB,GACFM,aAAaN,KAqBjB,MAAO,IAAMyB,EAAAA,EAAE,MAAO,CACpBC,MAAO,cACPC,MAAO,CACLC,QAAS,eACTC,SAAU,aAEX,CACDJ,EAAAA,EAAE,MAAO,CACP5B,IAAKC,EACL4B,MAAO,yBACPI,aAAcrB,EACdsB,aAAcrB,EACdsB,QAASrB,EACTsB,QAASrB,EACTsB,OAAQrB,GACPnB,EAAMyC,eAAiBzC,EAAMb,aAChCqB,EAAeE,OAASqB,EAAAA,EAAE,MAAO,CAC/B5B,IAAKE,EACL2B,MAAO,CAAC,sBAAuB,wBAAwBjD,EAAMK,aAC7D6C,MAlCK,CACLE,SAAU,WACVO,OAAQ,IACRlD,MAJmC,iBAAhBT,EAAMS,MAAqB,GAAGT,EAAMS,UAAYT,EAAMS,MAKzEmD,QAAS,OACTC,gBAAiB,oCACjBC,OAAQ,mDACRC,aAAc,MACdC,UAAW,kCACXC,SAAU,OACVC,WAAY,MACZC,UAAW,aAwBXd,aAAchB,EACdiB,aAAchB,GACbrB,EAAMb,aAAeJ,EAAMC,UAElC"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("vue");const l=Symbol("radioGroup"),a=e.defineComponent({name:"QxsRadio",props:{modelValue:{type:[String,Number,Boolean],default:""},label:{type:[String,Number,Boolean],default:""},disabled:{type:Boolean,default:!1},name:{type:String,default:""}},emits:["update:modelValue","change"],setup(a,t){let{slots:o,emit:d}=t;const s=e.inject(l,null),i=e.computed(()=>s?s.value===a.label:a.modelValue===a.label),n=()=>{a.disabled||(s?s.value=a.label:d("update:modelValue",a.label),d("change",a.label))};return()=>e.h("label",{class:["qxs-radio",{"is-checked":i.value,"is-disabled":a.disabled}],style:{display:"inline-flex",alignItems:"center",cursor:a.disabled?"not-allowed":"pointer",marginRight:"12px"}},[e.h("input",{type:"radio",class:"qxs-radio__input",value:a.label,checked:i.value,disabled:a.disabled,name:a.name,onChange:n,style:{marginRight:"8px",cursor:a.disabled?"not-allowed":"pointer"}}),e.h("span",{class:"qxs-radio__label",style:{fontSize:"14px",color:a.disabled?"var(--qxs-text-color-disabled, #c0c4cc)":void 0}},o.default?.()||a.label)])}}),t=e.defineComponent({name:"QxsRadioGroup",props:{modelValue:{type:[String,Number,Boolean],default:""},disabled:{type:Boolean,default:!1},name:{type:String,default:""}},emits:["update:modelValue","change"],setup(a,t){let{slots:o,emit:d}=t;const s=e.computed({get:()=>a.modelValue,set:e=>{d("update:modelValue",e),d("change",e)}});return e.provide(l,s),()=>e.h("div",{class:"qxs-radio-group",style:{display:"inline-flex",flexDirection:"column",gap:"12px"}},o.default?.())}});exports.QxsRadio=a,exports.QxsRadioGroup=t,exports.default=a;
|
|
2
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../../../../../packages/components/src/ui/radio/index.ts"],"sourcesContent":["import { defineComponent, h, computed, provide, inject, type PropType, type InjectionKey, type WritableComputedRef } from 'vue'\n\nconst radioGroupKey: InjectionKey<WritableComputedRef<string | number | boolean>> = Symbol('radioGroup')\n\nexport const QxsRadio = defineComponent({\n name: 'QxsRadio',\n props: {\n modelValue: { type: [String, Number, Boolean] as PropType<string | number | boolean>, default: '' },\n label: { type: [String, Number, Boolean] as PropType<string | number | boolean>, default: '' },\n disabled: { type: Boolean, default: false },\n name: { type: String, default: '' },\n },\n emits: ['update:modelValue', 'change'],\n setup(props, { slots, emit }) {\n const radioGroup = inject(radioGroupKey, null)\n \n const isChecked = computed(() => {\n if (radioGroup) {\n return radioGroup.value === props.label\n }\n return props.modelValue === props.label\n })\n \n const handleChange = () => {\n if (!props.disabled) {\n if (radioGroup) {\n radioGroup.value = props.label\n } else {\n emit('update:modelValue', props.label)\n }\n emit('change', props.label)\n }\n }\n\n return () => h('label', {\n class: ['qxs-radio', { 'is-checked': isChecked.value, 'is-disabled': props.disabled }],\n style: {\n display: 'inline-flex',\n alignItems: 'center',\n cursor: props.disabled ? 'not-allowed' : 'pointer',\n marginRight: '12px',\n },\n }, [\n h('input', {\n type: 'radio',\n class: 'qxs-radio__input',\n value: props.label,\n checked: isChecked.value,\n disabled: props.disabled,\n name: props.name,\n onChange: handleChange,\n style: {\n marginRight: '8px',\n cursor: props.disabled ? 'not-allowed' : 'pointer',\n },\n }),\n h('span', { \n class: 'qxs-radio__label',\n style: {\n fontSize: '14px',\n color: props.disabled ? 'var(--qxs-text-color-disabled, #c0c4cc)' : undefined,\n },\n }, slots.default?.() || props.label),\n ])\n },\n})\n\nexport const QxsRadioGroup = defineComponent({\n name: 'QxsRadioGroup',\n props: {\n modelValue: { type: [String, Number, Boolean] as PropType<string | number | boolean>, default: '' },\n disabled: { type: Boolean, default: false },\n name: { type: String, default: '' },\n },\n emits: ['update:modelValue', 'change'],\n setup(props, { slots, emit }) {\n const modelValue = computed({\n get: () => props.modelValue,\n set: (val) => {\n emit('update:modelValue', val)\n emit('change', val)\n }\n })\n \n provide(radioGroupKey, modelValue)\n \n return () => h('div', { \n class: 'qxs-radio-group',\n style: {\n display: 'inline-flex',\n flexDirection: 'column',\n gap: '12px',\n },\n }, slots.default?.())\n },\n})\n\nexport default QxsRadio\n"],"names":["radioGroupKey","Symbol","QxsRadio","defineComponent","name","props","modelValue","type","String","Number","Boolean","default","label","disabled","emits","setup","_ref","slots","emit","radioGroup","inject","isChecked","computed","value","handleChange","h","class","style","display","alignItems","cursor","marginRight","checked","onChange","fontSize","color","QxsRadioGroup","_ref2","get","set","val","provide","flexDirection","gap"],"mappings":"yFAEA,MAAMA,EAA8EC,OAAO,cAE9EC,EAAWC,EAAAA,gBAAgB,CACtCC,KAAM,WACNC,MAAO,CACLC,WAAY,CAAEC,KAAM,CAACC,OAAQC,OAAQC,SAAiDC,QAAS,IAC/FC,MAAO,CAAEL,KAAM,CAACC,OAAQC,OAAQC,SAAiDC,QAAS,IAC1FE,SAAU,CAAEN,KAAMG,QAASC,SAAS,GACpCP,KAAM,CAAEG,KAAMC,OAAQG,QAAS,KAEjCG,MAAO,CAAC,oBAAqB,UAC7BC,KAAAA,CAAMV,EAAAW,GAAwB,IAAjBC,MAAEA,EAAAC,KAAOA,GAAKF,EACzB,MAAMG,EAAaC,EAAAA,OAAOpB,EAAe,MAEnCqB,EAAYC,EAAAA,SAAS,IACrBH,EACKA,EAAWI,QAAUlB,EAAMO,MAE7BP,EAAMC,aAAeD,EAAMO,OAG9BY,EAAeA,KACdnB,EAAMQ,WACLM,EACFA,EAAWI,MAAQlB,EAAMO,MAEzBM,EAAK,oBAAqBb,EAAMO,OAElCM,EAAK,SAAUb,EAAMO,SAIzB,MAAO,IAAMa,EAAAA,EAAE,QAAS,CACtBC,MAAO,CAAC,YAAa,CAAE,aAAcL,EAAUE,MAAO,cAAelB,EAAMQ,WAC3Ec,MAAO,CACLC,QAAS,cACTC,WAAY,SACZC,OAAQzB,EAAMQ,SAAW,cAAgB,UACzCkB,YAAa,SAEd,CACDN,EAAAA,EAAE,QAAS,CACTlB,KAAM,QACNmB,MAAO,mBACPH,MAAOlB,EAAMO,MACboB,QAASX,EAAUE,MACnBV,SAAUR,EAAMQ,SAChBT,KAAMC,EAAMD,KACZ6B,SAAUT,EACVG,MAAO,CACLI,YAAa,MACbD,OAAQzB,EAAMQ,SAAW,cAAgB,aAG7CY,EAAAA,EAAE,OAAQ,CACRC,MAAO,mBACPC,MAAO,CACLO,SAAU,OACVC,MAAO9B,EAAMQ,SAAW,+CAA4C,IAErEI,EAAMN,aAAeN,EAAMO,QAElC,IAGWwB,EAAgBjC,EAAAA,gBAAgB,CAC3CC,KAAM,gBACNC,MAAO,CACLC,WAAY,CAAEC,KAAM,CAACC,OAAQC,OAAQC,SAAiDC,QAAS,IAC/FE,SAAU,CAAEN,KAAMG,QAASC,SAAS,GACpCP,KAAM,CAAEG,KAAMC,OAAQG,QAAS,KAEjCG,MAAO,CAAC,oBAAqB,UAC7BC,KAAAA,CAAMV,EAAAgC,GAAwB,IAAjBpB,MAAEA,EAAAC,KAAOA,GAAKmB,EACzB,MAAM/B,EAAagB,EAAAA,SAAS,CAC1BgB,IAAKA,IAAMjC,EAAMC,WACjBiC,IAAMC,IACJtB,EAAK,oBAAqBsB,GAC1BtB,EAAK,SAAUsB,MAMnB,OAFAC,EAAAA,QAAQzC,EAAeM,GAEhB,IAAMmB,EAAAA,EAAE,MAAO,CACpBC,MAAO,kBACPC,MAAO,CACLC,QAAS,cACTc,cAAe,SACfC,IAAK,SAEN1B,EAAMN,YACX"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var r=require("vue");const e=r.defineComponent({name:"QxsScrollbar",props:{height:{type:[String,Number],default:""},maxHeight:{type:[String,Number],default:""},always:{type:Boolean,default:!1}},setup(e,l){let{slots:a}=l;const t=r=>"number"==typeof r?`${r}px`:r,o={overflow:"auto",position:"relative"};e.height&&(o.height=t(e.height)),e.maxHeight&&(o.maxHeight=t(e.maxHeight));const s=`\n .qxs-scrollbar__wrapper::-webkit-scrollbar {\n width: 8px;\n height: 8px;\n }\n .qxs-scrollbar__wrapper::-webkit-scrollbar-thumb {\n background-color: rgba(144, 147, 153, 0.3);\n border-radius: 4px;\n }\n .qxs-scrollbar__wrapper::-webkit-scrollbar-thumb:hover {\n background-color: rgba(144, 147, 153, 0.5);\n }\n .qxs-scrollbar__wrapper::-webkit-scrollbar-track {\n background-color: transparent;\n }\n ${e.always?"":"\n .qxs-scrollbar__wrapper::-webkit-scrollbar {\n display: none;\n }\n .qxs-scrollbar__wrapper:hover::-webkit-scrollbar {\n display: block;\n }\n "}\n `;return()=>r.h("div",{class:"qxs-scrollbar",style:{position:"relative"}},[r.h("style",s),r.h("div",{class:"qxs-scrollbar__wrapper",style:o},a.default?.())])}});exports.QxsScrollbar=e,exports.default=e;
|
|
2
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../../../../../packages/components/src/ui/scrollbar/index.ts"],"sourcesContent":["import { defineComponent, h, type CSSProperties } from 'vue'\n\nexport const QxsScrollbar = defineComponent({\n name: 'QxsScrollbar',\n props: {\n height: { type: [String, Number], default: '' },\n maxHeight: { type: [String, Number], default: '' },\n always: { type: Boolean, default: false },\n },\n setup(props, { slots }) {\n const getHeight = (value: string | number) => {\n if (typeof value === 'number') return `${value}px`\n return value\n }\n\n const wrapperStyle: CSSProperties = {\n overflow: 'auto',\n position: 'relative',\n }\n\n if (props.height) {\n wrapperStyle.height = getHeight(props.height)\n }\n\n if (props.maxHeight) {\n wrapperStyle.maxHeight = getHeight(props.maxHeight)\n }\n\n const scrollbarStyles = `\n .qxs-scrollbar__wrapper::-webkit-scrollbar {\n width: 8px;\n height: 8px;\n }\n .qxs-scrollbar__wrapper::-webkit-scrollbar-thumb {\n background-color: rgba(144, 147, 153, 0.3);\n border-radius: 4px;\n }\n .qxs-scrollbar__wrapper::-webkit-scrollbar-thumb:hover {\n background-color: rgba(144, 147, 153, 0.5);\n }\n .qxs-scrollbar__wrapper::-webkit-scrollbar-track {\n background-color: transparent;\n }\n ${props.always ? '' : `\n .qxs-scrollbar__wrapper::-webkit-scrollbar {\n display: none;\n }\n .qxs-scrollbar__wrapper:hover::-webkit-scrollbar {\n display: block;\n }\n `}\n `\n\n return () => h('div', {\n class: 'qxs-scrollbar',\n style: { position: 'relative' },\n }, [\n h('style', scrollbarStyles),\n h('div', {\n class: 'qxs-scrollbar__wrapper',\n style: wrapperStyle,\n }, slots.default?.()),\n ])\n },\n})\n\nexport default QxsScrollbar\n"],"names":["QxsScrollbar","defineComponent","name","props","height","type","String","Number","default","maxHeight","always","Boolean","setup","_ref","slots","getHeight","value","wrapperStyle","overflow","position","scrollbarStyles","h","class","style"],"mappings":"yFAEO,MAAMA,EAAeC,EAAAA,gBAAgB,CAC1CC,KAAM,eACNC,MAAO,CACLC,OAAQ,CAAEC,KAAM,CAACC,OAAQC,QAASC,QAAS,IAC3CC,UAAW,CAAEJ,KAAM,CAACC,OAAQC,QAASC,QAAS,IAC9CE,OAAQ,CAAEL,KAAMM,QAASH,SAAS,IAEpCI,KAAAA,CAAMT,EAAAU,GAAkB,IAAXC,MAAEA,GAAMD,EACnB,MAAME,EAAaC,GACI,iBAAVA,EAA2B,GAAGA,MAClCA,EAGHC,EAA8B,CAClCC,SAAU,OACVC,SAAU,YAGRhB,EAAMC,SACRa,EAAab,OAASW,EAAUZ,EAAMC,SAGpCD,EAAMM,YACRQ,EAAaR,UAAYM,EAAUZ,EAAMM,YAG3C,MAAMW,EAAkB,ifAepBjB,EAAMO,OAAS,GAAK,gNAUxB,MAAO,IAAMW,EAAAA,EAAE,MAAO,CACpBC,MAAO,gBACPC,MAAO,CAAEJ,SAAU,aAClB,CACDE,EAAAA,EAAE,QAASD,GACXC,EAAAA,EAAE,MAAO,CACPC,MAAO,yBACPC,MAAON,GACNH,EAAMN,cAEb"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("vue");const l=Symbol("QxsSelect"),a=e.defineComponent({name:"QxsOption",props:{value:{type:[String,Number,Boolean,Object],required:!0},label:{type:String,default:""},disabled:{type:Boolean,default:!1}},setup(a,t){let{slots:o}=t;const s=e.inject(l);if(!s)return()=>null;s.registerOption(a.value,a.label||String(a.value));const r=e.computed(()=>s.multiple.value?Array.isArray(s.modelValue.value)&&s.modelValue.value.some(e=>e===a.value):s.modelValue.value===a.value),i=()=>{a.disabled||s.handleSelect(a.value,a.label||String(a.value))};return()=>e.h("div",{class:["qxs-option",{"is-selected":r.value,"is-disabled":a.disabled}],onClick:i,style:{padding:"4px 8px",cursor:a.disabled?"not-allowed":"pointer",backgroundColor:r.value?"rgba(61, 97, 227, 0.1)":"transparent",color:r.value?"var(--qxs-color-primary, #3D61E3)":a.disabled?"#c0c4cc":"#606266",fontSize:"14px",lineHeight:"1.25",borderRadius:"4px",fontWeight:r.value?"500":"400",marginBottom:"2px"},onMouseenter:e=>{a.disabled||(e.currentTarget.style.backgroundColor=r.value?"rgba(61, 97, 227, 0.1)":"#f5f7fa")},onMouseleave:e=>{a.disabled||(e.currentTarget.style.backgroundColor=r.value?"rgba(61, 97, 227, 0.1)":"transparent")}},o.default?.()||a.label)}}),t=e.defineComponent({name:"QxsSelect",props:{modelValue:{type:[String,Number,Boolean,Array,Object],default:""},disabled:{type:Boolean,default:!1},placeholder:{type:String,default:"请选择"},clearable:{type:Boolean,default:!1},multiple:{type:Boolean,default:!1},size:{type:String,default:"default"},filterable:{type:Boolean,default:!1}},emits:["update:modelValue","change","clear","visible-change","remove-tag","focus","blur"],setup(a,t){let{slots:o,emit:s}=t;const r=e.ref(!1),i=e.ref(""),n=e.ref(),d=e.ref([]),u=e.ref(new Map);e.watch(()=>a.modelValue,e=>{a.multiple&&Array.isArray(e)&&(d.value=e.map(e=>({value:e,label:u.value.get(e)||String(e)})))},{immediate:!0,deep:!0});const p=e.computed(()=>a.multiple&&Array.isArray(a.modelValue)?a.modelValue.length>0?`已选择 ${a.modelValue.length} 项`:"":i.value),c=e=>{e.stopPropagation(),a.multiple?(s("update:modelValue",[]),d.value=[]):(s("update:modelValue",""),i.value=""),s("clear")},x=()=>{a.disabled||(r.value=!r.value,s("visible-change",r.value))},f=e=>{s("focus",e)},g=e=>{s("blur",e)};e.provide(l,{modelValue:e.computed(()=>a.modelValue),multiple:e.computed(()=>a.multiple),handleSelect:(e,l)=>{if(a.multiple){const t=Array.isArray(a.modelValue)?[...a.modelValue]:[],o=t.findIndex(l=>l===e);if(o>-1){t.splice(o,1);const l=d.value.findIndex(l=>l.value===e);l>-1&&d.value.splice(l,1),s("remove-tag",e)}else t.push(e),d.value.push({value:e,label:l});s("update:modelValue",t),s("change",t)}else i.value=l,s("update:modelValue",e),s("change",e),r.value=!1},registerOption:(e,l)=>{u.value.set(e,l)}});const b=e.computed(()=>"large"===a.size?"40px":"small"===a.size?"24px":"32px");return()=>e.h("div",{class:["qxs-select",`qxs-select--${a.size}`,{"is-disabled":a.disabled,"is-focus":r.value}],style:{position:"relative",display:"inline-block",width:"100%"}},[e.h("div",{class:"qxs-select__wrapper",onClick:x,style:{position:"relative",cursor:a.disabled?"not-allowed":"pointer"}},[a.multiple?e.h("div",{class:"qxs-select__tags",style:{display:"flex",flexWrap:"wrap",gap:"4px",padding:"4px 30px 4px 8px",minHeight:b.value,border:"1px solid hsl(214.3 31.8% 91.4%)",borderRadius:"6px",backgroundColor:a.disabled?"hsl(210 40% 96.1%)":"#fff",cursor:a.disabled?"not-allowed":"pointer",alignItems:"center"}},[...d.value.map(l=>e.h("span",{class:"qxs-select__tag",style:{display:"inline-flex",alignItems:"center",gap:"2px",padding:"1px 6px",backgroundColor:"var(--qxs-color-primary, #3D61E3)",border:"none",borderRadius:"4px",fontSize:"12px",color:"#fff",fontWeight:"500",lineHeight:"1.2"}},[e.h("span",null,l.label),!a.disabled&&e.h("span",{class:"qxs-select__tag-close",onClick:e=>((e,l)=>{if(l.stopPropagation(),a.multiple){const l=Array.isArray(a.modelValue)?[...a.modelValue]:[],t=l.findIndex(l=>l===e);if(t>-1){l.splice(t,1);const a=d.value.findIndex(l=>l.value===e);a>-1&&d.value.splice(a,1),s("remove-tag",e),s("update:modelValue",l),s("change",l)}}})(l.value,e),style:{cursor:"pointer",display:"flex",alignItems:"center",justifyContent:"center",width:"12px",height:"12px",borderRadius:"50%",fontSize:"9px",color:"#fff",transition:"all 0.2s"},onMouseenter:e=>{e.currentTarget.style.backgroundColor="rgba(255, 255, 255, 0.2)"},onMouseleave:e=>{e.currentTarget.style.backgroundColor="transparent"}},"×")])),0===d.value.length&&e.h("span",{style:{color:"hsl(215 20.2% 65.1%)",fontSize:"14px"}},a.placeholder)]):e.h("input",{ref:n,class:"qxs-select__inner",type:"text",readonly:!a.filterable,value:p.value,placeholder:a.placeholder,disabled:a.disabled,onFocus:f,onBlur:g,style:{width:"100%",height:b.value,padding:"0 30px 0 12px",border:"1px solid hsl(214.3 31.8% 91.4%)",borderRadius:"6px",outline:"none",fontSize:"14px",backgroundColor:a.disabled?"hsl(210 40% 96.1%)":"#fff",cursor:a.disabled?"not-allowed":"pointer",transition:"border-color 0.2s"}}),e.h("span",{class:"qxs-select__suffix",style:{position:"absolute",right:"10px",top:"50%",transform:"translateY(-50%)",display:"flex",alignItems:"center",gap:"4px"}},[a.clearable&&p.value&&!a.disabled&&e.h("span",{class:"qxs-select__clear",onClick:c,style:{fontSize:"14px",cursor:"pointer"}},"×"),e.h("span",{class:"qxs-select__caret",style:{fontSize:"12px",transform:r.value?"rotate(180deg)":"rotate(0deg)",transition:"transform 0.3s"}},"▼")])]),r.value&&e.h("div",{class:"qxs-select__dropdown",style:{position:"absolute",top:"100%",left:"0",right:"0",marginTop:"4px",backgroundColor:"#fff",border:"1px solid hsl(214.3 31.8% 91.4%)",borderRadius:"6px",boxShadow:"0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1)",zIndex:2e3,maxHeight:"274px",overflowY:"auto",padding:"4px"}},o.default?.())])}});exports.QxsOption=a,exports.QxsSelect=t,exports.default=t;
|
|
2
|
+
//# sourceMappingURL=index.cjs.map
|