diff --git a/packages/survey-vue3-ui/example/package.json b/packages/survey-vue3-ui/example/package.json
index 2cca8d44ef..4c8ecd5ce1 100644
--- a/packages/survey-vue3-ui/example/package.json
+++ b/packages/survey-vue3-ui/example/package.json
@@ -3,7 +3,7 @@
"version": "0.0.0",
"private": true,
"scripts": {
- "dev": "vite",
+ "dev": "vite --force",
"build": "run-p type-check build-only",
"preview": "vite preview --host 0.0.0.0 --port 8080",
"build-only": "vite build",
diff --git a/packages/survey-vue3-ui/example/src/components/example/Example.vue b/packages/survey-vue3-ui/example/src/components/example/Example.vue
index db646a0e13..6929937a5a 100644
--- a/packages/survey-vue3-ui/example/src/components/example/Example.vue
+++ b/packages/survey-vue3-ui/example/src/components/example/Example.vue
@@ -1,14 +1,17 @@
diff --git a/packages/survey-vue3-ui/example/src/components/test/TestCommon.vue b/packages/survey-vue3-ui/example/src/components/test/TestCommon.vue
index 9125b10fcf..1e57e61fd0 100644
--- a/packages/survey-vue3-ui/example/src/components/test/TestCommon.vue
+++ b/packages/survey-vue3-ui/example/src/components/test/TestCommon.vue
@@ -2,6 +2,7 @@
import { SurveyModel } from "survey-core";
import * as Survey from "survey-core"
import "survey-core/survey.i18n";
+import { SurveyComponent, PopupSurveyComponent } from "survey-vue3-ui";
import { shallowRef } from "vue";
const survey = shallowRef();
const isPopup = shallowRef();
diff --git a/packages/survey-vue3-ui/example/src/components/test/test-custom-components/Item.vue b/packages/survey-vue3-ui/example/src/components/test/test-custom-components/Item.vue
index 84428a3ff2..8922464536 100644
--- a/packages/survey-vue3-ui/example/src/components/test/test-custom-components/Item.vue
+++ b/packages/survey-vue3-ui/example/src/components/test/test-custom-components/Item.vue
@@ -1,11 +1,12 @@
-
+
{{ item.title }}
\ No newline at end of file
diff --git a/packages/survey-vue3-ui/example/src/components/test/test-custom-components/ItemContent.vue b/packages/survey-vue3-ui/example/src/components/test/test-custom-components/ItemContent.vue
index 37c65d46ae..4d3e5bf05e 100644
--- a/packages/survey-vue3-ui/example/src/components/test/test-custom-components/ItemContent.vue
+++ b/packages/survey-vue3-ui/example/src/components/test/test-custom-components/ItemContent.vue
@@ -1,10 +1,11 @@
-
-
+
+
\ No newline at end of file
diff --git a/packages/survey-vue3-ui/example/src/main.ts b/packages/survey-vue3-ui/example/src/main.ts
index 5d9c4415eb..1b74957322 100644
--- a/packages/survey-vue3-ui/example/src/main.ts
+++ b/packages/survey-vue3-ui/example/src/main.ts
@@ -1,4 +1,4 @@
-import { surveyPlugin } from "survey-vue3-ui";
+import { ComponentFactory } from "survey-vue3-ui";
import { createApp } from 'vue'
import Action from "./components/test/test-custom-components/Action.vue"
@@ -7,14 +7,11 @@ import ItemContent from "./components/test/test-custom-components/ItemContent.vu
import App from './App.vue'
import router from './router'
-const app = createApp(App)
-app.use(surveyPlugin);
-
-
-app.component("svc-custom-action", Action);
-app.component("new-item", Item);
-app.component("new-item-content", ItemContent);
+ComponentFactory.Instance.registerComponent("svc-custom-action", Action);
+ComponentFactory.Instance.registerComponent("new-item", Item);
+ComponentFactory.Instance.registerComponent("new-item-content", ItemContent);
+const app = createApp(App)
app.use(router)
app.mount('#app')
diff --git a/packages/survey-vue3-ui/example/vite.config.ts b/packages/survey-vue3-ui/example/vite.config.ts
index f7eb119cb8..7453708e37 100644
--- a/packages/survey-vue3-ui/example/vite.config.ts
+++ b/packages/survey-vue3-ui/example/vite.config.ts
@@ -4,15 +4,29 @@ import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
// https://vitejs.dev/config/
-export default defineConfig({
- plugins: [
- vue(),
- ],
- resolve: {
- preserveSymlinks: true,
- alias: {
- '@': fileURLToPath(new URL('./src', import.meta.url)),
- "survey-core": fileURLToPath(new URL('./node_modules/survey-core', import.meta.url)),
+export default defineConfig(({ command }) => {
+ return {
+ plugins: [
+ vue(),
+ ],
+ server: {
+ watch: {
+ ignored: ["survey-vue3-ui"].map((m) => `!**/node_modules/${m}/**`)
+ }
+ },
+ build: {
+ commonjsOptions: { exclude: ["survey-core"] },
+ },
+ optimizeDeps: {
+ exclude: ["survey-vue3-ui"],
+ include: ["survey-core", "survey-core/survey.i18n", "survey-core/plugins/bootstrap-integration", "survey-core/plugins/bootstrap-material-integration" ]
+ },
+ resolve: {
+ preserveSymlinks: command == "serve" ? false : true,
+ alias: {
+ '@': fileURLToPath(new URL('./src', import.meta.url)),
+ "survey-core": fileURLToPath(new URL('./node_modules/survey-core', import.meta.url)),
+ }
}
}
})
diff --git a/packages/survey-vue3-ui/package.json b/packages/survey-vue3-ui/package.json
index 04aec23d3b..25959dc7ff 100644
--- a/packages/survey-vue3-ui/package.json
+++ b/packages/survey-vue3-ui/package.json
@@ -10,11 +10,14 @@
"build": "vite build && npm run build:types",
"build:dev": "vite build --mode development",
"build:types": "vue-tsc --project tsconfig.types.json --emitDeclarationOnly",
+ "serve:example:dev": "npm run dev --prefix ./example",
+ "serve:example:prod": "npm run preview --prefix ./example",
+ "build:example:prod": "npm run build --prefix ./example",
"type-check": "vue-tsc --project tsconfig.types.json --noEmit",
"test": "vitest --no-threads tests/*.spec.ts",
"test:single": "vitest --no-watch --no-threads tests/*.spec.ts",
"release": "commit-and-tag-version --message \"Release: %s [azurepipelines skip]\" ",
- "lint": "eslint . --ext .vue,.js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --fix --ignore-path .gitignore"
+ "lint": "eslint ./src ./tests --ext .vue,.js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --fix --ignore-path .gitignore"
},
"devDependencies": {
"@babel/types": "^7.20.2",
@@ -40,4 +43,4 @@
"vue": "3.4.19",
"vue-tsc": "^1.0.8"
}
-}
+}
\ No newline at end of file
diff --git a/packages/survey-vue3-ui/src/BooleanCheckbox.vue b/packages/survey-vue3-ui/src/BooleanCheckbox.vue
index 356cfffe21..9f3d3e6b7f 100644
--- a/packages/survey-vue3-ui/src/BooleanCheckbox.vue
+++ b/packages/survey-vue3-ui/src/BooleanCheckbox.vue
@@ -31,16 +31,18 @@
:id="question.labelRenderedAriaID"
:class="question.cssClasses.checkboxControlLabel"
>
-
-
+
+ >
-
+
diff --git a/packages/survey-vue3-ui/src/FileVideo.vue b/packages/survey-vue3-ui/src/FileVideo.vue
index 456b030d9c..0ee7e153c2 100644
--- a/packages/survey-vue3-ui/src/FileVideo.vue
+++ b/packages/survey-vue3-ui/src/FileVideo.vue
@@ -1,17 +1,27 @@
-
-
+
+
-
+
diff --git a/packages/survey-vue3-ui/src/Header.vue b/packages/survey-vue3-ui/src/Header.vue
index 4e081c4768..8e3c32798e 100644
--- a/packages/survey-vue3-ui/src/Header.vue
+++ b/packages/survey-vue3-ui/src/Header.vue
@@ -1,31 +1,38 @@
\ No newline at end of file
+
diff --git a/packages/survey-vue3-ui/src/MatrixDropdown.vue b/packages/survey-vue3-ui/src/MatrixDropdown.vue
index 2498c0c35f..278ac34455 100644
--- a/packages/survey-vue3-ui/src/MatrixDropdown.vue
+++ b/packages/survey-vue3-ui/src/MatrixDropdown.vue
@@ -1,8 +1,9 @@
-
+
diff --git a/packages/survey-vue3-ui/src/Survey.vue b/packages/survey-vue3-ui/src/Survey.vue
index 334bdbc03b..dc3ca54a27 100644
--- a/packages/survey-vue3-ui/src/Survey.vue
+++ b/packages/survey-vue3-ui/src/Survey.vue
@@ -2,12 +2,16 @@
-
+
-
+
diff --git a/packages/survey-vue3-ui/src/Tagbox.vue b/packages/survey-vue3-ui/src/Tagbox.vue
index 45976cc6c1..4481197d86 100644
--- a/packages/survey-vue3-ui/src/Tagbox.vue
+++ b/packages/survey-vue3-ui/src/Tagbox.vue
@@ -1,11 +1,16 @@
-
-
+
+
+
diff --git a/packages/survey-vue3-ui/src/components/QuestionError.vue b/packages/survey-vue3-ui/src/components/QuestionError.vue
index 7ccf940b98..5bbbecc2a5 100644
--- a/packages/survey-vue3-ui/src/components/QuestionError.vue
+++ b/packages/survey-vue3-ui/src/components/QuestionError.vue
@@ -1,28 +1,25 @@
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/packages/survey-vue3-ui/src/components/file/FilePreview.vue b/packages/survey-vue3-ui/src/components/file/FilePreview.vue
index f7263ab18c..6c89e99138 100644
--- a/packages/survey-vue3-ui/src/components/file/FilePreview.vue
+++ b/packages/survey-vue3-ui/src/components/file/FilePreview.vue
@@ -33,12 +33,13 @@
}"
alt="File preview"
/>
-
+ >
{{
question.removeFileCaption
}}
-
+ >
import type { QuestionFileModel } from "survey-core";
+import SvComponent from "@/SvComponent.vue";
defineProps<{ question: QuestionFileModel }>();
diff --git a/packages/survey-vue3-ui/src/components/header/Header.vue b/packages/survey-vue3-ui/src/components/header/Header.vue
index 64f9c794f6..2affbb0d82 100644
--- a/packages/survey-vue3-ui/src/components/header/Header.vue
+++ b/packages/survey-vue3-ui/src/components/header/Header.vue
@@ -1,5 +1,9 @@
-
+
diff --git a/packages/survey-vue3-ui/src/components/list/List.vue b/packages/survey-vue3-ui/src/components/list/List.vue
index a12a43829d..c41e2dedae 100644
--- a/packages/survey-vue3-ui/src/components/list/List.vue
+++ b/packages/survey-vue3-ui/src/components/list/List.vue
@@ -2,7 +2,12 @@
@@ -54,18 +60,20 @@
}
"
>
-
-
+
diff --git a/packages/survey-vue3-ui/src/components/rating/RatingDropdownItem.vue b/packages/survey-vue3-ui/src/components/rating/RatingDropdownItem.vue
index cf3bb04f37..db9be2c4d0 100644
--- a/packages/survey-vue3-ui/src/components/rating/RatingDropdownItem.vue
+++ b/packages/survey-vue3-ui/src/components/rating/RatingDropdownItem.vue
@@ -2,12 +2,13 @@
diff --git a/packages/survey-vue3-ui/src/components/title/TitleElement.vue b/packages/survey-vue3-ui/src/components/title/TitleElement.vue
index 2c84184e08..fa00711539 100644
--- a/packages/survey-vue3-ui/src/components/title/TitleElement.vue
+++ b/packages/survey-vue3-ui/src/components/title/TitleElement.vue
@@ -1,7 +1,7 @@
-
-
+
+ >