firefly-portal-web 1.0.0
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/README.md +132 -0
- package/dist-lib/Empower-789f2826.mjs +94 -0
- package/dist-lib/Empower-789f2826.mjs.map +1 -0
- package/dist-lib/Empower.vue_vue_type_script_setup_true_lang-c454e7a0.mjs +134 -0
- package/dist-lib/Empower.vue_vue_type_script_setup_true_lang-c454e7a0.mjs.map +1 -0
- package/dist-lib/Field-40d74a96.mjs +94 -0
- package/dist-lib/Field-40d74a96.mjs.map +1 -0
- package/dist-lib/Field.vue_vue_type_script_setup_true_lang-e1964a74.mjs +148 -0
- package/dist-lib/Field.vue_vue_type_script_setup_true_lang-e1964a74.mjs.map +1 -0
- package/dist-lib/FieldForm-a5d4038b.mjs +93 -0
- package/dist-lib/FieldForm-a5d4038b.mjs.map +1 -0
- package/dist-lib/FieldForm.vue_vue_type_script_setup_true_lang-f92c7e23.mjs +160 -0
- package/dist-lib/FieldForm.vue_vue_type_script_setup_true_lang-f92c7e23.mjs.map +1 -0
- package/dist-lib/Form-06ee1b64.mjs +97 -0
- package/dist-lib/Form-06ee1b64.mjs.map +1 -0
- package/dist-lib/Form-15a7f801.mjs +95 -0
- package/dist-lib/Form-15a7f801.mjs.map +1 -0
- package/dist-lib/Form-465fe45d.mjs +237 -0
- package/dist-lib/Form-465fe45d.mjs.map +1 -0
- package/dist-lib/Form-6e6a6a0d.mjs +94 -0
- package/dist-lib/Form-6e6a6a0d.mjs.map +1 -0
- package/dist-lib/Form-a61f1446.mjs +93 -0
- package/dist-lib/Form-a61f1446.mjs.map +1 -0
- package/dist-lib/Form-aeafea39.mjs +93 -0
- package/dist-lib/Form-aeafea39.mjs.map +1 -0
- package/dist-lib/Form-b0b8b1f3.mjs +94 -0
- package/dist-lib/Form-b0b8b1f3.mjs.map +1 -0
- package/dist-lib/Form-b2915cd3.mjs +95 -0
- package/dist-lib/Form-b2915cd3.mjs.map +1 -0
- package/dist-lib/Form-b2ce5535.mjs +93 -0
- package/dist-lib/Form-b2ce5535.mjs.map +1 -0
- package/dist-lib/Form-ca6e92bd.mjs +421 -0
- package/dist-lib/Form-ca6e92bd.mjs.map +1 -0
- package/dist-lib/Form.vue_vue_type_script_setup_true_lang-039f5c88.mjs +101 -0
- package/dist-lib/Form.vue_vue_type_script_setup_true_lang-039f5c88.mjs.map +1 -0
- package/dist-lib/Form.vue_vue_type_script_setup_true_lang-1883a047.mjs +91 -0
- package/dist-lib/Form.vue_vue_type_script_setup_true_lang-1883a047.mjs.map +1 -0
- package/dist-lib/Form.vue_vue_type_script_setup_true_lang-5fbc0f96.mjs +302 -0
- package/dist-lib/Form.vue_vue_type_script_setup_true_lang-5fbc0f96.mjs.map +1 -0
- package/dist-lib/Form.vue_vue_type_script_setup_true_lang-61497691.mjs +181 -0
- package/dist-lib/Form.vue_vue_type_script_setup_true_lang-61497691.mjs.map +1 -0
- package/dist-lib/Form.vue_vue_type_script_setup_true_lang-69cc4bfc.mjs +94 -0
- package/dist-lib/Form.vue_vue_type_script_setup_true_lang-69cc4bfc.mjs.map +1 -0
- package/dist-lib/Form.vue_vue_type_script_setup_true_lang-a3d7f865.mjs +263 -0
- package/dist-lib/Form.vue_vue_type_script_setup_true_lang-a3d7f865.mjs.map +1 -0
- package/dist-lib/Form.vue_vue_type_script_setup_true_lang-ae83b1bb.mjs +104 -0
- package/dist-lib/Form.vue_vue_type_script_setup_true_lang-ae83b1bb.mjs.map +1 -0
- package/dist-lib/Form.vue_vue_type_style_index_0_lang-f240a568.mjs +838 -0
- package/dist-lib/Form.vue_vue_type_style_index_0_lang-f240a568.mjs.map +1 -0
- package/dist-lib/Info-e9cb4268.mjs +747 -0
- package/dist-lib/Info-e9cb4268.mjs.map +1 -0
- package/dist-lib/Log-b1cc7014.mjs +94 -0
- package/dist-lib/Log-b1cc7014.mjs.map +1 -0
- package/dist-lib/Log.vue_vue_type_script_setup_true_lang-0ba0615b.mjs +93 -0
- package/dist-lib/Log.vue_vue_type_script_setup_true_lang-0ba0615b.mjs.map +1 -0
- package/dist-lib/Login-fc04d844.mjs +109 -0
- package/dist-lib/Login-fc04d844.mjs.map +1 -0
- package/dist-lib/LoginForm-eafdf0bc.mjs +93 -0
- package/dist-lib/LoginForm-eafdf0bc.mjs.map +1 -0
- package/dist-lib/LoginForm.vue_vue_type_script_setup_true_lang-2a241386.mjs +202 -0
- package/dist-lib/LoginForm.vue_vue_type_script_setup_true_lang-2a241386.mjs.map +1 -0
- package/dist-lib/PageExplainModal-efbb4616.mjs +140 -0
- package/dist-lib/PageExplainModal-efbb4616.mjs.map +1 -0
- package/dist-lib/Preview-531e9361.mjs +93 -0
- package/dist-lib/Preview-531e9361.mjs.map +1 -0
- package/dist-lib/Preview-6086e84b.mjs +93 -0
- package/dist-lib/Preview-6086e84b.mjs.map +1 -0
- package/dist-lib/Preview.vue_vue_type_script_setup_true_lang-0013b21d.mjs +137 -0
- package/dist-lib/Preview.vue_vue_type_script_setup_true_lang-0013b21d.mjs.map +1 -0
- package/dist-lib/Preview.vue_vue_type_script_setup_true_lang-815bfd98.mjs +67 -0
- package/dist-lib/Preview.vue_vue_type_script_setup_true_lang-815bfd98.mjs.map +1 -0
- package/dist-lib/TableAction-fcabc30c.mjs +114 -0
- package/dist-lib/TableAction-fcabc30c.mjs.map +1 -0
- package/dist-lib/UserSelect-4e259116.mjs +94 -0
- package/dist-lib/UserSelect-4e259116.mjs.map +1 -0
- package/dist-lib/UserSelect.vue_vue_type_script_setup_true_lang-aa25c5fc.mjs +282 -0
- package/dist-lib/UserSelect.vue_vue_type_script_setup_true_lang-aa25c5fc.mjs.map +1 -0
- package/dist-lib/cdn/socials/dingtalk.png +0 -0
- package/dist-lib/cdn/socials/feishu.png +0 -0
- package/dist-lib/cdn/socials/gitHub.png +0 -0
- package/dist-lib/cdn/socials/qq.png +0 -0
- package/dist-lib/cdn/socials/wechat_open.png +0 -0
- package/dist-lib/cdn/socials/wxWork.png +0 -0
- package/dist-lib/commonFields-5ff2332b.mjs +24 -0
- package/dist-lib/commonFields-5ff2332b.mjs.map +1 -0
- package/dist-lib/css/fonts/ym/iconfont.css +2419 -0
- package/dist-lib/css/fonts/ym/iconfont.ttf +0 -0
- package/dist-lib/css/fonts/ym/iconfont.woff +0 -0
- package/dist-lib/css/fonts/ym/iconfont.woff2 +0 -0
- package/dist-lib/css/fonts/ym-custom/iconfont.css +7203 -0
- package/dist-lib/css/fonts/ym-custom/iconfont.ttf +0 -0
- package/dist-lib/css/fonts/ym-custom/iconfont.woff +0 -0
- package/dist-lib/css/fonts/ym-custom/iconfont.woff2 +0 -0
- package/dist-lib/css/index.css +135 -0
- package/dist-lib/css/print-lock.css +352 -0
- package/dist-lib/emtryImg-85b013aa.mjs +5 -0
- package/dist-lib/emtryImg-85b013aa.mjs.map +1 -0
- package/dist-lib/en_US-6b59f0a7.mjs +774 -0
- package/dist-lib/en_US-6b59f0a7.mjs.map +1 -0
- package/dist-lib/favicon.ico +0 -0
- package/dist-lib/firefly-portal-preview.css +1 -0
- package/dist-lib/firefly-portal-preview.d.ts +82 -0
- package/dist-lib/firefly-portal-preview.es.js +92 -0
- package/dist-lib/firefly-portal-preview.es.js.map +1 -0
- package/dist-lib/firefly-portal-preview.umd.js +79 -0
- package/dist-lib/firefly-portal-preview.umd.js.map +1 -0
- package/dist-lib/formValidate-33d5595a.mjs +68 -0
- package/dist-lib/formValidate-33d5595a.mjs.map +1 -0
- package/dist-lib/index-1a090e82.mjs +173 -0
- package/dist-lib/index-1a090e82.mjs.map +1 -0
- package/dist-lib/index-28ba2ea1.mjs +154 -0
- package/dist-lib/index-28ba2ea1.mjs.map +1 -0
- package/dist-lib/index-29f92d0d.mjs +130 -0
- package/dist-lib/index-29f92d0d.mjs.map +1 -0
- package/dist-lib/index-2c2c19d4.mjs +160 -0
- package/dist-lib/index-2c2c19d4.mjs.map +1 -0
- package/dist-lib/index-2f898c1f.mjs +103 -0
- package/dist-lib/index-2f898c1f.mjs.map +1 -0
- package/dist-lib/index-3462ba0d.mjs +139 -0
- package/dist-lib/index-3462ba0d.mjs.map +1 -0
- package/dist-lib/index-3ebbb3a9.mjs +97 -0
- package/dist-lib/index-3ebbb3a9.mjs.map +1 -0
- package/dist-lib/index-436ec82c.mjs +145 -0
- package/dist-lib/index-436ec82c.mjs.map +1 -0
- package/dist-lib/index-44e8def1.mjs +267 -0
- package/dist-lib/index-44e8def1.mjs.map +1 -0
- package/dist-lib/index-47596f01.mjs +144 -0
- package/dist-lib/index-47596f01.mjs.map +1 -0
- package/dist-lib/index-5888a3a4.mjs +226 -0
- package/dist-lib/index-5888a3a4.mjs.map +1 -0
- package/dist-lib/index-58fb457c.mjs +179 -0
- package/dist-lib/index-58fb457c.mjs.map +1 -0
- package/dist-lib/index-5b8b1ba9.mjs +119766 -0
- package/dist-lib/index-5b8b1ba9.mjs.map +1 -0
- package/dist-lib/index-687fd3de.mjs +396 -0
- package/dist-lib/index-687fd3de.mjs.map +1 -0
- package/dist-lib/index-6eca8dab.mjs +135 -0
- package/dist-lib/index-6eca8dab.mjs.map +1 -0
- package/dist-lib/index-73df4468.mjs +187 -0
- package/dist-lib/index-73df4468.mjs.map +1 -0
- package/dist-lib/index-7ae97180.mjs +597 -0
- package/dist-lib/index-7ae97180.mjs.map +1 -0
- package/dist-lib/index-8374b2f2.mjs +354 -0
- package/dist-lib/index-8374b2f2.mjs.map +1 -0
- package/dist-lib/index-89a27c27.mjs +255 -0
- package/dist-lib/index-89a27c27.mjs.map +1 -0
- package/dist-lib/index-9263cd45.mjs +482 -0
- package/dist-lib/index-9263cd45.mjs.map +1 -0
- package/dist-lib/index-934ca5d0.mjs +93 -0
- package/dist-lib/index-934ca5d0.mjs.map +1 -0
- package/dist-lib/index-97081729.mjs +269 -0
- package/dist-lib/index-97081729.mjs.map +1 -0
- package/dist-lib/index-9dec931e.mjs +145 -0
- package/dist-lib/index-9dec931e.mjs.map +1 -0
- package/dist-lib/index-9fc40c89.mjs +298 -0
- package/dist-lib/index-9fc40c89.mjs.map +1 -0
- package/dist-lib/index-a57664c9.mjs +204 -0
- package/dist-lib/index-a57664c9.mjs.map +1 -0
- package/dist-lib/index-a83288bf.mjs +180 -0
- package/dist-lib/index-a83288bf.mjs.map +1 -0
- package/dist-lib/index-adf15a9e.mjs +392 -0
- package/dist-lib/index-adf15a9e.mjs.map +1 -0
- package/dist-lib/index-b5b20206.mjs +617 -0
- package/dist-lib/index-b5b20206.mjs.map +1 -0
- package/dist-lib/index-b6f446cf.mjs +92 -0
- package/dist-lib/index-b6f446cf.mjs.map +1 -0
- package/dist-lib/index-b9e3947c.mjs +156 -0
- package/dist-lib/index-b9e3947c.mjs.map +1 -0
- package/dist-lib/index-bde150fa.mjs +261 -0
- package/dist-lib/index-bde150fa.mjs.map +1 -0
- package/dist-lib/index-be097ef0.mjs +188 -0
- package/dist-lib/index-be097ef0.mjs.map +1 -0
- package/dist-lib/index-bff033bc.mjs +563 -0
- package/dist-lib/index-bff033bc.mjs.map +1 -0
- package/dist-lib/index-c4d74c6c.mjs +258 -0
- package/dist-lib/index-c4d74c6c.mjs.map +1 -0
- package/dist-lib/index-c708e214.mjs +96 -0
- package/dist-lib/index-c708e214.mjs.map +1 -0
- package/dist-lib/index-d936d570.mjs +191 -0
- package/dist-lib/index-d936d570.mjs.map +1 -0
- package/dist-lib/index-da857153.mjs +223 -0
- package/dist-lib/index-da857153.mjs.map +1 -0
- package/dist-lib/index.vue_vue_type_script_setup_true_lang-0eb8f454.mjs +136 -0
- package/dist-lib/index.vue_vue_type_script_setup_true_lang-0eb8f454.mjs.map +1 -0
- package/dist-lib/index.vue_vue_type_script_setup_true_lang-10a915e2.mjs +137 -0
- package/dist-lib/index.vue_vue_type_script_setup_true_lang-10a915e2.mjs.map +1 -0
- package/dist-lib/index.vue_vue_type_script_setup_true_lang-570dd942.mjs +131 -0
- package/dist-lib/index.vue_vue_type_script_setup_true_lang-570dd942.mjs.map +1 -0
- package/dist-lib/interfaceOauth-bb8e782e.mjs +40 -0
- package/dist-lib/interfaceOauth-bb8e782e.mjs.map +1 -0
- package/dist-lib/preview-e588e33c.mjs +194 -0
- package/dist-lib/preview-e588e33c.mjs.map +1 -0
- package/dist-lib/resource/emoji/100.gif +0 -0
- package/dist-lib/resource/emoji/101.gif +0 -0
- package/dist-lib/resource/emoji/102.gif +0 -0
- package/dist-lib/resource/emoji/103.gif +0 -0
- package/dist-lib/resource/emoji/104.gif +0 -0
- package/dist-lib/resource/emoji/105.gif +0 -0
- package/dist-lib/resource/emoji/106.gif +0 -0
- package/dist-lib/resource/emoji/107.gif +0 -0
- package/dist-lib/resource/emoji/108.gif +0 -0
- package/dist-lib/resource/emoji/109.gif +0 -0
- package/dist-lib/resource/emoji/110.gif +0 -0
- package/dist-lib/resource/emoji/111.gif +0 -0
- package/dist-lib/resource/emoji/112.gif +0 -0
- package/dist-lib/resource/emoji/113.gif +0 -0
- package/dist-lib/resource/emoji/114.gif +0 -0
- package/dist-lib/resource/emoji/115.gif +0 -0
- package/dist-lib/resource/emoji/116.gif +0 -0
- package/dist-lib/resource/emoji/117.gif +0 -0
- package/dist-lib/resource/emoji/118.gif +0 -0
- package/dist-lib/resource/emoji/119.gif +0 -0
- package/dist-lib/resource/emoji/120.gif +0 -0
- package/dist-lib/resource/emoji/121.gif +0 -0
- package/dist-lib/resource/emoji/122.gif +0 -0
- package/dist-lib/resource/emoji/123.gif +0 -0
- package/dist-lib/resource/emoji/124.gif +0 -0
- package/dist-lib/resource/emoji/125.gif +0 -0
- package/dist-lib/resource/emoji/126.gif +0 -0
- package/dist-lib/resource/emoji/127.gif +0 -0
- package/dist-lib/resource/emoji/128.gif +0 -0
- package/dist-lib/resource/emoji/129.gif +0 -0
- package/dist-lib/resource/emoji/130.gif +0 -0
- package/dist-lib/resource/emoji/131.gif +0 -0
- package/dist-lib/resource/emoji/132.gif +0 -0
- package/dist-lib/resource/emoji/133.gif +0 -0
- package/dist-lib/resource/emoji/134.gif +0 -0
- package/dist-lib/resource/emoji/135.gif +0 -0
- package/dist-lib/resource/emoji/136.gif +0 -0
- package/dist-lib/resource/emoji/137.gif +0 -0
- package/dist-lib/resource/emoji/138.gif +0 -0
- package/dist-lib/resource/emoji/139.gif +0 -0
- package/dist-lib/resource/emoji/140.gif +0 -0
- package/dist-lib/resource/emoji/141.gif +0 -0
- package/dist-lib/resource/emoji/142.gif +0 -0
- package/dist-lib/resource/emoji/143.gif +0 -0
- package/dist-lib/resource/emoji/144.gif +0 -0
- package/dist-lib/resource/emoji/145.gif +0 -0
- package/dist-lib/resource/emoji/146.gif +0 -0
- package/dist-lib/resource/emoji/147.gif +0 -0
- package/dist-lib/resource/emoji/148.gif +0 -0
- package/dist-lib/resource/emoji/149.gif +0 -0
- package/dist-lib/resource/emoji/150.gif +0 -0
- package/dist-lib/resource/emoji/151.gif +0 -0
- package/dist-lib/resource/emoji/152.gif +0 -0
- package/dist-lib/resource/emoji/153.gif +0 -0
- package/dist-lib/resource/emoji/154.gif +0 -0
- package/dist-lib/resource/emoji/155.gif +0 -0
- package/dist-lib/resource/emoji/156.gif +0 -0
- package/dist-lib/resource/emoji/157.gif +0 -0
- package/dist-lib/resource/emoji/158.gif +0 -0
- package/dist-lib/resource/emoji/159.gif +0 -0
- package/dist-lib/resource/emoji/160.gif +0 -0
- package/dist-lib/resource/emoji/161.gif +0 -0
- package/dist-lib/resource/emoji/162.gif +0 -0
- package/dist-lib/resource/emoji/163.gif +0 -0
- package/dist-lib/resource/emoji/164.gif +0 -0
- package/dist-lib/resource/emoji/165.gif +0 -0
- package/dist-lib/resource/emoji/166.gif +0 -0
- package/dist-lib/resource/emoji/167.gif +0 -0
- package/dist-lib/resource/emoji/168.gif +0 -0
- package/dist-lib/resource/emoji/169.gif +0 -0
- package/dist-lib/resource/emoji/170.gif +0 -0
- package/dist-lib/resource/emoji/171.gif +0 -0
- package/dist-lib/resource/emoji/172.gif +0 -0
- package/dist-lib/resource/emoji/173.gif +0 -0
- package/dist-lib/resource/emoji/174.gif +0 -0
- package/dist-lib/resource/emoji/175.gif +0 -0
- package/dist-lib/resource/emoji/176.gif +0 -0
- package/dist-lib/resource/emoji/177.gif +0 -0
- package/dist-lib/resource/emoji/178.gif +0 -0
- package/dist-lib/resource/emoji/179.gif +0 -0
- package/dist-lib/resource/emoji/180.gif +0 -0
- package/dist-lib/resource/emoji/181.gif +0 -0
- package/dist-lib/resource/emoji/182.gif +0 -0
- package/dist-lib/resource/emoji/183.gif +0 -0
- package/dist-lib/resource/emoji/184.gif +0 -0
- package/dist-lib/resource/emoji/185.gif +0 -0
- package/dist-lib/resource/emoji/186.gif +0 -0
- package/dist-lib/resource/emoji/187.gif +0 -0
- package/dist-lib/resource/emoji/188.gif +0 -0
- package/dist-lib/resource/emoji/189.gif +0 -0
- package/dist-lib/resource/emoji/190.gif +0 -0
- package/dist-lib/resource/emoji/191.gif +0 -0
- package/dist-lib/resource/emoji/192.gif +0 -0
- package/dist-lib/resource/emoji/193.gif +0 -0
- package/dist-lib/resource/emoji/194.gif +0 -0
- package/dist-lib/resource/emoji/195.gif +0 -0
- package/dist-lib/resource/emoji/196.gif +0 -0
- package/dist-lib/resource/emoji/197.gif +0 -0
- package/dist-lib/resource/emoji/198.gif +0 -0
- package/dist-lib/resource/emoji/199.gif +0 -0
- package/dist-lib/resource/emoji/200.png +0 -0
- package/dist-lib/resource/emoji/201.png +0 -0
- package/dist-lib/resource/emoji/202.png +0 -0
- package/dist-lib/resource/emoji/203.png +0 -0
- package/dist-lib/resource/emoji/204.png +0 -0
- package/dist-lib/resource/emoji/205.png +0 -0
- package/dist-lib/resource/emoji/206.png +0 -0
- package/dist-lib/resource/emoji/207.png +0 -0
- package/dist-lib/resource/emoji/208.png +0 -0
- package/dist-lib/resource/emoji/209.png +0 -0
- package/dist-lib/resource/emoji/210.png +0 -0
- package/dist-lib/resource/emoji/211.png +0 -0
- package/dist-lib/resource/emoji/212.png +0 -0
- package/dist-lib/resource/emoji/213.png +0 -0
- package/dist-lib/resource/emoji/214.png +0 -0
- package/dist-lib/resource/emoji/215.png +0 -0
- package/dist-lib/resource/emoji/216.png +0 -0
- package/dist-lib/resource/emoji/217.png +0 -0
- package/dist-lib/resource/emoji/218.png +0 -0
- package/dist-lib/resource/emoji/219.png +0 -0
- package/dist-lib/resource/img/logo.png +0 -0
- package/dist-lib/resource/img/pwa-192x192.png +0 -0
- package/dist-lib/resource/img/pwa-512x512.png +0 -0
- package/dist-lib/resource/tinymce/langs/en.js +419 -0
- package/dist-lib/resource/tinymce/langs/zh_CN.js +389 -0
- package/dist-lib/resource/tinymce/skins/ui/oxide/content.inline.min.css +7 -0
- package/dist-lib/resource/tinymce/skins/ui/oxide/content.min.css +7 -0
- package/dist-lib/resource/tinymce/skins/ui/oxide/content.mobile.min.css +7 -0
- package/dist-lib/resource/tinymce/skins/ui/oxide/fonts/tinymce-mobile.woff +0 -0
- package/dist-lib/resource/tinymce/skins/ui/oxide/skin.min.css +7 -0
- package/dist-lib/resource/tinymce/skins/ui/oxide/skin.mobile.min.css +7 -0
- package/dist-lib/resource/tinymce/skins/ui/oxide/skin.shadowdom.min.css +7 -0
- package/dist-lib/resource/tinymce/skins/ui/oxide-dark/content.inline.min.css +7 -0
- package/dist-lib/resource/tinymce/skins/ui/oxide-dark/content.min.css +7 -0
- package/dist-lib/resource/tinymce/skins/ui/oxide-dark/content.mobile.min.css +7 -0
- package/dist-lib/resource/tinymce/skins/ui/oxide-dark/skin.min.css +7 -0
- package/dist-lib/resource/tinymce/skins/ui/oxide-dark/skin.mobile.min.css +7 -0
- package/dist-lib/resource/tinymce/skins/ui/oxide-dark/skin.shadowdom.min.css +7 -0
- package/dist-lib/useCommon-36969e5f.mjs +110 -0
- package/dist-lib/useCommon-36969e5f.mjs.map +1 -0
- package/dist-lib/useECharts-bb3ba984.mjs +77 -0
- package/dist-lib/useECharts-bb3ba984.mjs.map +1 -0
- package/dist-lib/useTable-99fc521a.mjs +172 -0
- package/dist-lib/useTable-99fc521a.mjs.map +1 -0
- package/dist-lib/zh_CN-5eabc04b.mjs +772 -0
- package/dist-lib/zh_CN-5eabc04b.mjs.map +1 -0
- package/dist-lib/zh_TW-ef5c69c0.mjs +774 -0
- package/dist-lib/zh_TW-ef5c69c0.mjs.map +1 -0
- package/package.json +247 -0
- package/src/components/PortalPreview/__tests__/index.spec.ts +258 -0
- package/src/components/PortalPreview/fonts/ym/iconfont.css +2419 -0
- package/src/components/PortalPreview/fonts/ym/iconfont.ttf +0 -0
- package/src/components/PortalPreview/fonts/ym/iconfont.woff +0 -0
- package/src/components/PortalPreview/fonts/ym/iconfont.woff2 +0 -0
- package/src/components/PortalPreview/fonts/ym-custom/iconfont.css +7203 -0
- package/src/components/PortalPreview/fonts/ym-custom/iconfont.ttf +0 -0
- package/src/components/PortalPreview/fonts/ym-custom/iconfont.woff +0 -0
- package/src/components/PortalPreview/fonts/ym-custom/iconfont.woff2 +0 -0
- package/src/components/PortalPreview/index.ts +31 -0
- package/src/components/PortalPreview/index.vue +329 -0
- package/src/components/PortalPreview/style/overrides.css +15 -0
- package/src/components/PortalPreview/types.ts +61 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zh_TW-ef5c69c0.mjs","sources":["../src/locales/lang/zh_TW.ts"],"sourcesContent":["import antdLocale from 'ant-design-vue/es/locale/zh_TW';\r\nimport zhTWCustomLocale from './zh_TW.json';\r\n\r\n(antdLocale as any).Calendar.timePickerLocale.rangePlaceholder = ['開始時間', '結束時間'];\r\n\r\nexport default {\r\n message: {\r\n ...zhTWCustomLocale,\r\n antdLocale,\r\n },\r\n};\r\n"],"names":["antdLocale","zh_TW","zhTWCustomLocale"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGCA,EAAmB,SAAS,iBAAiB,mBAAmB,CAAC,QAAQ,MAAM;AAEhF,MAAeC,IAAA;AAAA,EACb,SAAS;AAAA,IACP,GAAGC;AAAA,IACH,YAAAF;AAAA,EACF;AACF;"}
|
package/package.json
ADDED
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "firefly-portal-web",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "",
|
|
5
|
+
"author": {
|
|
6
|
+
"name": "karrylee",
|
|
7
|
+
"email": "karrylee@msi.com",
|
|
8
|
+
"url": "https://gitlab.msic.com.cn/firefly-group/firefly-portal-web.git"
|
|
9
|
+
},
|
|
10
|
+
"homepage": "https://gitlab.msic.com.cn/firefly-group/firefly-portal-web.git",
|
|
11
|
+
"scripts": {
|
|
12
|
+
"commit": "czg",
|
|
13
|
+
"bootstrap": "pnpm install --registry=https://registry.npmmirror.com",
|
|
14
|
+
"serve": "npm run dev",
|
|
15
|
+
"dev": "vite --mode native",
|
|
16
|
+
"build": "cross-env NODE_ENV=development NODE_OPTIONS=--max-old-space-size=8192 vite build --mode development && esno ./build/script/postBuild.ts",
|
|
17
|
+
"build:test": "cross-env NODE_ENV=test NODE_OPTIONS=--max-old-space-size=8192 vite build --mode test && esno ./build/script/postBuild.ts",
|
|
18
|
+
"build:prod": "cross-env NODE_ENV=production NODE_OPTIONS=--max-old-space-size=8192 vite build --mode production && esno ./build/script/postBuild.ts",
|
|
19
|
+
"build:no-cache": "pnpm clean:cache && npm run build",
|
|
20
|
+
"report": "cross-env REPORT=true npm run build",
|
|
21
|
+
"type:check": "vue-tsc --noEmit --skipLibCheck",
|
|
22
|
+
"preview": "npm run build && vite preview",
|
|
23
|
+
"preview:dist": "vite preview",
|
|
24
|
+
"log": "conventional-changelog -p angular -i CHANGELOG.md -s",
|
|
25
|
+
"clean:cache": "rimraf node_modules/.cache/ && rimraf node_modules/.vite",
|
|
26
|
+
"clean:lib": "rimraf node_modules",
|
|
27
|
+
"lint:eslint": "eslint --cache --max-warnings 0 \"{src,mock}/**/*.{vue,ts,tsx}\" --fix",
|
|
28
|
+
"lint:prettier": "prettier --write \"src/**/*.{js,json,tsx,css,less,scss,vue,html,md}\"",
|
|
29
|
+
"lint:stylelint": "stylelint --cache --fix \"**/*.{vue,less,postcss,css,scss}\" --cache --cache-location node_modules/.cache/stylelint/",
|
|
30
|
+
"lint:lint-staged": "lint-staged",
|
|
31
|
+
"reinstall": "rimraf pnpm-lock.yaml && rimraf package.lock.json && rimraf node_modules && npm run bootstrap",
|
|
32
|
+
"gen:icon": "esno ./build/generate/icon/index.ts",
|
|
33
|
+
"build:lib": "cross-env NODE_ENV=production vite build --mode production --config vite.config.lib.ts"
|
|
34
|
+
},
|
|
35
|
+
"exports": {
|
|
36
|
+
".": {
|
|
37
|
+
"import": "./dist-lib/firefly-portal-preview.es.js",
|
|
38
|
+
"require": "./dist-lib/firefly-portal-preview.umd.js",
|
|
39
|
+
"types": "./dist-lib/firefly-portal-preview.d.ts"
|
|
40
|
+
},
|
|
41
|
+
"./style": "./dist-lib/firefly-portal-preview.css",
|
|
42
|
+
"./types": "./dist-lib/firefly-portal-preview.d.ts"
|
|
43
|
+
},
|
|
44
|
+
"files": [
|
|
45
|
+
"dist-lib",
|
|
46
|
+
"src/components/PortalPreview"
|
|
47
|
+
],
|
|
48
|
+
"peerDependencies": {
|
|
49
|
+
"ant-design-vue": "^4.2.3",
|
|
50
|
+
"axios": "^1.4.0",
|
|
51
|
+
"dayjs": "^1.11.7",
|
|
52
|
+
"echarts": "^5.4.2",
|
|
53
|
+
"element-plus": "^2.14.0",
|
|
54
|
+
"firefly-plus-components": "^3.0.45",
|
|
55
|
+
"lodash-es": "^4.17.21",
|
|
56
|
+
"pinia": "^2.1.3",
|
|
57
|
+
"vue": "^3.4.27",
|
|
58
|
+
"vue-router": "^4.3.2"
|
|
59
|
+
},
|
|
60
|
+
"lint-staged": {
|
|
61
|
+
"*.{js,jsx,ts,tsx}": [
|
|
62
|
+
"eslint --fix",
|
|
63
|
+
"prettier --write"
|
|
64
|
+
],
|
|
65
|
+
"{!(package)*.json,*.code-snippets,.!(browserslist)*rc}": [
|
|
66
|
+
"prettier --write--parser json"
|
|
67
|
+
],
|
|
68
|
+
"package.json": [
|
|
69
|
+
"prettier --write"
|
|
70
|
+
],
|
|
71
|
+
"*.vue": [
|
|
72
|
+
"eslint --fix",
|
|
73
|
+
"prettier --write",
|
|
74
|
+
"stylelint --fix"
|
|
75
|
+
],
|
|
76
|
+
"*.{scss,less,styl,html}": [
|
|
77
|
+
"stylelint --fix",
|
|
78
|
+
"prettier --write"
|
|
79
|
+
],
|
|
80
|
+
"*.md": [
|
|
81
|
+
"prettier --write"
|
|
82
|
+
]
|
|
83
|
+
},
|
|
84
|
+
"config": {
|
|
85
|
+
"commitizen": {
|
|
86
|
+
"path": "node_modules/cz-git"
|
|
87
|
+
}
|
|
88
|
+
},
|
|
89
|
+
"dependencies": {
|
|
90
|
+
"@amap/amap-jsapi-loader": "^1.0.1",
|
|
91
|
+
"@ant-design/colors": "^7.1.0",
|
|
92
|
+
"@ant-design/icons-vue": "^7.0.1",
|
|
93
|
+
"@element-plus/icons-vue": "^2.3.1",
|
|
94
|
+
"@firefly-plus/icons-vue": "^1.1.40",
|
|
95
|
+
"@fontsource/noto-sans-jp": "^5.2.5",
|
|
96
|
+
"@fontsource/noto-sans-kr": "^5.2.5",
|
|
97
|
+
"@fontsource/noto-sans-sc": "^5.2.6",
|
|
98
|
+
"@fontsource/noto-sans-tc": "^5.2.6",
|
|
99
|
+
"@fullcalendar/core": "^6.1.14",
|
|
100
|
+
"@fullcalendar/daygrid": "^6.1.14",
|
|
101
|
+
"@fullcalendar/interaction": "^6.1.14",
|
|
102
|
+
"@fullcalendar/timegrid": "^6.1.14",
|
|
103
|
+
"@fullcalendar/vue3": "^6.1.14",
|
|
104
|
+
"@iconify/iconify": "^3.1.0",
|
|
105
|
+
"@logicflow/core": "^1.2.1",
|
|
106
|
+
"@logicflow/extension": "^1.2.1",
|
|
107
|
+
"@vue/runtime-core": "^3.4.27",
|
|
108
|
+
"@vue/shared": "^3.4.27",
|
|
109
|
+
"@vueuse/core": "^10.1.2",
|
|
110
|
+
"@vueuse/shared": "^10.1.2",
|
|
111
|
+
"@zxcvbn-ts/core": "^2.2.1",
|
|
112
|
+
"ant-design-vue": "^4.2.3",
|
|
113
|
+
"axios": "^1.4.0",
|
|
114
|
+
"bpmn-js": "16.3.2",
|
|
115
|
+
"bpmn-js-properties-panel": "5.7.0",
|
|
116
|
+
"camunda-bpmn-moddle": "6.1.2",
|
|
117
|
+
"codemirror": "^5.65.12",
|
|
118
|
+
"cron-parser": "^4.8.1",
|
|
119
|
+
"cropperjs": "^1.5.13",
|
|
120
|
+
"crypto-js": "^4.1.1",
|
|
121
|
+
"dayjs": "^1.11.7",
|
|
122
|
+
"diagram-js": "11.9.1",
|
|
123
|
+
"diagram-js-minimap": "4.1.0",
|
|
124
|
+
"echarts": "^5.4.2",
|
|
125
|
+
"echarts-stat": "^1.2.0",
|
|
126
|
+
"element-plus": "^2.14.0",
|
|
127
|
+
"firefly-plus-components": "^3.0.45",
|
|
128
|
+
"inherits-browser": "^0.1.0",
|
|
129
|
+
"intro.js": "^7.0.1",
|
|
130
|
+
"jsbarcode": "^3.11.5",
|
|
131
|
+
"lodash-es": "^4.17.21",
|
|
132
|
+
"min-dash": "^4.2.1",
|
|
133
|
+
"min-dom": "^4.1.0",
|
|
134
|
+
"monaco-editor": "^0.38.0",
|
|
135
|
+
"nprogress": "^0.2.0",
|
|
136
|
+
"path-to-regexp": "^6.2.1",
|
|
137
|
+
"pinia": "^2.1.3",
|
|
138
|
+
"postcss-import": "16.1.0",
|
|
139
|
+
"print-js": "^1.6.0",
|
|
140
|
+
"qrcode": "^1.5.1",
|
|
141
|
+
"qs": "^6.11.1",
|
|
142
|
+
"reconnecting-websocket": "^4.4.0",
|
|
143
|
+
"resize-observer-polyfill": "^1.5.1",
|
|
144
|
+
"showdown": "^2.1.0",
|
|
145
|
+
"sortablejs": "^1.15.0",
|
|
146
|
+
"spark-md5": "^3.0.2",
|
|
147
|
+
"tailwindcss": "3.4.17",
|
|
148
|
+
"terser": "^5.14.2",
|
|
149
|
+
"tiny-svg": "^3.0.1",
|
|
150
|
+
"tinymce": "^5.10.7",
|
|
151
|
+
"uuid": "^11.0.4",
|
|
152
|
+
"v-code-diff": "^1.12.0",
|
|
153
|
+
"vditor": "^3.9.1",
|
|
154
|
+
"vue": "^3.4.27",
|
|
155
|
+
"vue-grid-layout": "^3.0.0-beta1",
|
|
156
|
+
"vue-i18n": "^9.13.1",
|
|
157
|
+
"vue-json-pretty": "^2.2.4",
|
|
158
|
+
"vue-plugin-hiprint": "0.0.57-beta24",
|
|
159
|
+
"vue-router": "^4.3.2",
|
|
160
|
+
"vue-simple-uploader": "1.0.0",
|
|
161
|
+
"vue-types": "^5.1.2",
|
|
162
|
+
"vue3-draggable-resizable": "^1.6.5",
|
|
163
|
+
"vue3-tree-org": "^4.2.2",
|
|
164
|
+
"vuedraggable": "^4.1.0",
|
|
165
|
+
"xlsx": "^0.18.5"
|
|
166
|
+
},
|
|
167
|
+
"devDependencies": {
|
|
168
|
+
"@commitlint/cli": "^17.6.3",
|
|
169
|
+
"@commitlint/config-conventional": "^17.6.3",
|
|
170
|
+
"@iconify/json": "^2.2.43",
|
|
171
|
+
"@purge-icons/generated": "^0.9.0",
|
|
172
|
+
"@rys-fe/vite-plugin-theme": "^0.8.6",
|
|
173
|
+
"@types/codemirror": "^5.60.7",
|
|
174
|
+
"@types/crypto-js": "^4.1.1",
|
|
175
|
+
"@types/fs-extra": "^11.0.1",
|
|
176
|
+
"@types/inquirer": "^8.2.6",
|
|
177
|
+
"@types/intro.js": "^5.1.1",
|
|
178
|
+
"@types/js-cookie": "^3.0.6",
|
|
179
|
+
"@types/lodash-es": "^4.17.7",
|
|
180
|
+
"@types/node": "^18.15.11",
|
|
181
|
+
"@types/nprogress": "^0.2.0",
|
|
182
|
+
"@types/qrcode": "^1.5.0",
|
|
183
|
+
"@types/qs": "^6.9.7",
|
|
184
|
+
"@types/showdown": "^2.0.0",
|
|
185
|
+
"@types/sortablejs": "^1.15.1",
|
|
186
|
+
"@typescript-eslint/eslint-plugin": "^5.57.0",
|
|
187
|
+
"@typescript-eslint/parser": "^5.57.0",
|
|
188
|
+
"@vitejs/plugin-vue": "^4.2.3",
|
|
189
|
+
"@vitejs/plugin-vue-jsx": "^3.0.1",
|
|
190
|
+
"@vue/compiler-sfc": "^3.4.27",
|
|
191
|
+
"@vue/test-utils": "^2.4.5",
|
|
192
|
+
"autoprefixer": "^10.4.14",
|
|
193
|
+
"conventional-changelog-cli": "^2.2.2",
|
|
194
|
+
"cross-env": "^7.0.3",
|
|
195
|
+
"cz-git": "^1.6.1",
|
|
196
|
+
"czg": "^1.6.1",
|
|
197
|
+
"dotenv": "^16.0.3",
|
|
198
|
+
"eslint": "^8.37.0",
|
|
199
|
+
"eslint-config-prettier": "^8.8.0",
|
|
200
|
+
"eslint-plugin-prettier": "^4.2.1",
|
|
201
|
+
"eslint-plugin-vue": "^9.10.0",
|
|
202
|
+
"esno": "^0.16.3",
|
|
203
|
+
"fs-extra": "^11.1.1",
|
|
204
|
+
"happy-dom": "^13.10.1",
|
|
205
|
+
"inquirer": "^9.1.5",
|
|
206
|
+
"jquery": "^3.7.1",
|
|
207
|
+
"js-cookie": "^3.0.5",
|
|
208
|
+
"less": "^4.1.3",
|
|
209
|
+
"lint-staged": "13.2.0",
|
|
210
|
+
"npm-run-all": "^4.1.5",
|
|
211
|
+
"picocolors": "^1.0.0",
|
|
212
|
+
"postcss": "^8.4.21",
|
|
213
|
+
"postcss-html": "^1.5.0",
|
|
214
|
+
"postcss-less": "^6.0.0",
|
|
215
|
+
"prettier": "^2.8.8",
|
|
216
|
+
"rimraf": "^4.4.1",
|
|
217
|
+
"rollup": "^3.7.4",
|
|
218
|
+
"rollup-plugin-visualizer": "^5.9.0",
|
|
219
|
+
"stylelint": "^15.4.0",
|
|
220
|
+
"stylelint-config-prettier": "^9.0.3",
|
|
221
|
+
"stylelint-config-recommended": "^11.0.0",
|
|
222
|
+
"stylelint-config-recommended-vue": "^1.4.0",
|
|
223
|
+
"stylelint-config-standard": "^32.0.0",
|
|
224
|
+
"stylelint-order": "^6.0.3",
|
|
225
|
+
"ts-node": "^10.9.1",
|
|
226
|
+
"typescript": "^5.4.5",
|
|
227
|
+
"vite": "^4.5.3",
|
|
228
|
+
"vite-plugin-cdn-import": "^0.3.5",
|
|
229
|
+
"vite-plugin-compression": "^0.5.1",
|
|
230
|
+
"vite-plugin-html": "^3.2.0",
|
|
231
|
+
"vite-plugin-mkcert": "^1.10.1",
|
|
232
|
+
"vite-plugin-purge-icons": "^0.9.2",
|
|
233
|
+
"vite-plugin-pwa": "^0.14.0",
|
|
234
|
+
"vite-plugin-style-import": "^2.0.0",
|
|
235
|
+
"vite-plugin-svg-icons": "^2.0.1",
|
|
236
|
+
"vite-plugin-vue-inspector": "^5.3.1",
|
|
237
|
+
"vite-plugin-vue-setup-extend": "^0.4.0",
|
|
238
|
+
"vite-plugin-windicss": "1.8.10",
|
|
239
|
+
"vitest": "^1.6.1",
|
|
240
|
+
"vue-eslint-parser": "^9.1.1",
|
|
241
|
+
"vue-tsc": "^2.0.19"
|
|
242
|
+
},
|
|
243
|
+
"engines": {
|
|
244
|
+
"node": ">=16.15.0",
|
|
245
|
+
"pnpm": ">=8.1.0"
|
|
246
|
+
}
|
|
247
|
+
}
|
|
@@ -0,0 +1,258 @@
|
|
|
1
|
+
import { describe, it, expect, vi, beforeEach, afterEach, nextTick } from 'vitest';
|
|
2
|
+
import { mount } from '@vue/test-utils';
|
|
3
|
+
|
|
4
|
+
// Hoisted mock functions - must be defined before vi.mock calls
|
|
5
|
+
const mockGetWorkbench = vi.hoisted(() => vi.fn());
|
|
6
|
+
const mockGetAdminWorkbench = vi.hoisted(() => vi.fn());
|
|
7
|
+
const mockGetPageHome = vi.hoisted(() => vi.fn());
|
|
8
|
+
const mockPortalAccessRecordAdd = vi.hoisted(() => vi.fn());
|
|
9
|
+
|
|
10
|
+
// Mock child components
|
|
11
|
+
vi.mock('@/components/VisualPortal/Design/index.vue', () => ({
|
|
12
|
+
default: {
|
|
13
|
+
name: 'PortalDesign',
|
|
14
|
+
template: '<div class="portal-design-mock" />',
|
|
15
|
+
},
|
|
16
|
+
}));
|
|
17
|
+
|
|
18
|
+
vi.mock('@/components/VisualPortal/Design/components/Preview.vue', () => ({
|
|
19
|
+
default: {
|
|
20
|
+
name: 'Preview',
|
|
21
|
+
template: '<div class="preview-mock" />',
|
|
22
|
+
props: ['isHome'],
|
|
23
|
+
},
|
|
24
|
+
}));
|
|
25
|
+
|
|
26
|
+
vi.mock('@/components/CommonModal', () => ({
|
|
27
|
+
PreviewModal: {
|
|
28
|
+
name: 'PreviewModal',
|
|
29
|
+
template: '<div class="preview-modal-mock" />',
|
|
30
|
+
},
|
|
31
|
+
}));
|
|
32
|
+
|
|
33
|
+
// Mock useModal composable - returns [registerFn, { openModal }]
|
|
34
|
+
vi.mock('@/components/Modal', () => ({
|
|
35
|
+
useModal: () => [vi.fn(), { openModal: vi.fn() }],
|
|
36
|
+
}));
|
|
37
|
+
|
|
38
|
+
// Mock API module
|
|
39
|
+
vi.mock('@/api/newApi/newApi', () => ({
|
|
40
|
+
getPageHome: mockGetPageHome,
|
|
41
|
+
getWorkbench: mockGetWorkbench,
|
|
42
|
+
getAdminWorkbench: mockGetAdminWorkbench,
|
|
43
|
+
portalAccessRecordAdd: mockPortalAccessRecordAdd,
|
|
44
|
+
}));
|
|
45
|
+
|
|
46
|
+
// Import component AFTER mocks are set up
|
|
47
|
+
import PortalPreview from '@/components/PortalPreview/index.vue';
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Helper to flush pending microtasks/promises
|
|
51
|
+
*/
|
|
52
|
+
function flushPromises() {
|
|
53
|
+
return new Promise((resolve) => setTimeout(resolve, 0));
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
describe('PortalPreview', () => {
|
|
57
|
+
let wrapper: ReturnType<typeof mount>;
|
|
58
|
+
|
|
59
|
+
beforeEach(() => {
|
|
60
|
+
vi.clearAllMocks();
|
|
61
|
+
// Default mock implementations
|
|
62
|
+
mockGetWorkbench.mockResolvedValue({ data: {} });
|
|
63
|
+
mockGetAdminWorkbench.mockResolvedValue({ data: {} });
|
|
64
|
+
mockGetPageHome.mockResolvedValue({ data: {} });
|
|
65
|
+
mockPortalAccessRecordAdd.mockResolvedValue({ data: {} });
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
afterEach(() => {
|
|
69
|
+
if (wrapper) {
|
|
70
|
+
wrapper.unmount();
|
|
71
|
+
}
|
|
72
|
+
vi.restoreAllMocks();
|
|
73
|
+
});
|
|
74
|
+
|
|
75
|
+
describe('rendering', () => {
|
|
76
|
+
it('should render without errors', () => {
|
|
77
|
+
wrapper = mount(PortalPreview, {});
|
|
78
|
+
expect(wrapper.exists()).toBe(true);
|
|
79
|
+
});
|
|
80
|
+
|
|
81
|
+
it('should render child components', () => {
|
|
82
|
+
wrapper = mount(PortalPreview, {});
|
|
83
|
+
expect(wrapper.find('.portal-design-mock').exists()).toBe(true);
|
|
84
|
+
expect(wrapper.find('.preview-mock').exists()).toBe(true);
|
|
85
|
+
expect(wrapper.find('.preview-modal-mock').exists()).toBe(true);
|
|
86
|
+
});
|
|
87
|
+
});
|
|
88
|
+
|
|
89
|
+
describe('props', () => {
|
|
90
|
+
it('should use data prop directly when provided and emit load', async () => {
|
|
91
|
+
const testData = { layout: [], formData: '{"key":"value"}' };
|
|
92
|
+
wrapper = mount(PortalPreview, {
|
|
93
|
+
props: { data: testData },
|
|
94
|
+
});
|
|
95
|
+
|
|
96
|
+
await nextTick();
|
|
97
|
+
expect(wrapper.emitted('load')).toBeTruthy();
|
|
98
|
+
expect(wrapper.emitted('load')![0][0]).toEqual(testData);
|
|
99
|
+
});
|
|
100
|
+
|
|
101
|
+
it('should reflect isPreviewMode prop through computed isHome', async () => {
|
|
102
|
+
wrapper = mount(PortalPreview, {
|
|
103
|
+
props: { isPreviewMode: true },
|
|
104
|
+
});
|
|
105
|
+
await nextTick();
|
|
106
|
+
const previewComponent = wrapper.findComponent({ name: 'Preview' });
|
|
107
|
+
expect(previewComponent.props('isHome')).toBe(true);
|
|
108
|
+
});
|
|
109
|
+
|
|
110
|
+
it('should pass isHome=false when isPreviewMode is false', async () => {
|
|
111
|
+
wrapper = mount(PortalPreview, {
|
|
112
|
+
props: { isPreviewMode: false },
|
|
113
|
+
});
|
|
114
|
+
await nextTick();
|
|
115
|
+
const previewComponent = wrapper.findComponent({ name: 'Preview' });
|
|
116
|
+
expect(previewComponent.props('isHome')).toBe(false);
|
|
117
|
+
});
|
|
118
|
+
});
|
|
119
|
+
|
|
120
|
+
describe('events', () => {
|
|
121
|
+
it('should emit load event with parsed data when API returns formData', async () => {
|
|
122
|
+
const testData = { layout: [{ component: 'HText' }] };
|
|
123
|
+
// parseFormData expects: data.formData -> JSON.parse -> { formData: parsedData }
|
|
124
|
+
mockGetWorkbench.mockResolvedValue({
|
|
125
|
+
data: { formData: JSON.stringify({ formData: testData }) },
|
|
126
|
+
});
|
|
127
|
+
|
|
128
|
+
wrapper = mount(PortalPreview, {});
|
|
129
|
+
await nextTick();
|
|
130
|
+
await flushPromises();
|
|
131
|
+
await flushPromises();
|
|
132
|
+
|
|
133
|
+
expect(mockGetWorkbench).toHaveBeenCalled();
|
|
134
|
+
expect(wrapper.emitted('load')).toBeTruthy();
|
|
135
|
+
const loadData = wrapper.emitted('load')![0][0] as any;
|
|
136
|
+
expect(loadData.layout).toEqual(testData.layout);
|
|
137
|
+
});
|
|
138
|
+
|
|
139
|
+
it('should emit error event when getWorkbench fails', async () => {
|
|
140
|
+
mockGetWorkbench.mockRejectedValue(new Error('API Error'));
|
|
141
|
+
|
|
142
|
+
wrapper = mount(PortalPreview, {});
|
|
143
|
+
await nextTick();
|
|
144
|
+
await flushPromises();
|
|
145
|
+
|
|
146
|
+
expect(wrapper.emitted('error')).toBeTruthy();
|
|
147
|
+
const errorArg = wrapper.emitted('error')![0][0] as Error;
|
|
148
|
+
expect(errorArg.message).toBe('API Error');
|
|
149
|
+
});
|
|
150
|
+
|
|
151
|
+
it('should not emit reload without child interaction', async () => {
|
|
152
|
+
wrapper = mount(PortalPreview, {
|
|
153
|
+
props: { data: { layout: [] } },
|
|
154
|
+
});
|
|
155
|
+
await nextTick();
|
|
156
|
+
expect(wrapper.emitted('reload')).toBeUndefined();
|
|
157
|
+
});
|
|
158
|
+
});
|
|
159
|
+
|
|
160
|
+
describe('collectData prop', () => {
|
|
161
|
+
it('should not call portalAccessRecordAdd when collectData is false', async () => {
|
|
162
|
+
wrapper = mount(PortalPreview, {
|
|
163
|
+
props: { collectData: false },
|
|
164
|
+
});
|
|
165
|
+
await nextTick();
|
|
166
|
+
await flushPromises();
|
|
167
|
+
expect(mockPortalAccessRecordAdd).not.toHaveBeenCalled();
|
|
168
|
+
});
|
|
169
|
+
|
|
170
|
+
it('should call portalAccessRecordAdd when collectData is true', async () => {
|
|
171
|
+
wrapper = mount(PortalPreview, {
|
|
172
|
+
props: { collectData: true },
|
|
173
|
+
});
|
|
174
|
+
await nextTick();
|
|
175
|
+
await flushPromises();
|
|
176
|
+
expect(mockPortalAccessRecordAdd).toHaveBeenCalled();
|
|
177
|
+
});
|
|
178
|
+
});
|
|
179
|
+
|
|
180
|
+
describe('listenMessage prop', () => {
|
|
181
|
+
it('should add message event listener when listenMessage is true', () => {
|
|
182
|
+
const addSpy = vi.spyOn(window, 'addEventListener');
|
|
183
|
+
wrapper = mount(PortalPreview, {
|
|
184
|
+
props: { listenMessage: true },
|
|
185
|
+
});
|
|
186
|
+
expect(addSpy).toHaveBeenCalledWith('message', expect.any(Function), false);
|
|
187
|
+
});
|
|
188
|
+
|
|
189
|
+
it('should not add message event listener when listenMessage is false', () => {
|
|
190
|
+
const addSpy = vi.spyOn(window, 'addEventListener');
|
|
191
|
+
wrapper = mount(PortalPreview, {
|
|
192
|
+
props: { listenMessage: false },
|
|
193
|
+
});
|
|
194
|
+
expect(addSpy).not.toHaveBeenCalledWith('message', expect.any(Function), false);
|
|
195
|
+
});
|
|
196
|
+
|
|
197
|
+
it('should remove message event listener on unmount when listenMessage was true', () => {
|
|
198
|
+
const removeSpy = vi.spyOn(window, 'removeEventListener');
|
|
199
|
+
wrapper = mount(PortalPreview, {
|
|
200
|
+
props: { listenMessage: true },
|
|
201
|
+
});
|
|
202
|
+
wrapper.unmount();
|
|
203
|
+
expect(removeSpy).toHaveBeenCalledWith('message', expect.any(Function), false);
|
|
204
|
+
});
|
|
205
|
+
|
|
206
|
+
it('should ignore messages when listenMessage is false (no errors)', async () => {
|
|
207
|
+
wrapper = mount(PortalPreview, {
|
|
208
|
+
props: { listenMessage: false },
|
|
209
|
+
});
|
|
210
|
+
await nextTick();
|
|
211
|
+
|
|
212
|
+
const messageEvent = new MessageEvent('message', {
|
|
213
|
+
data: {
|
|
214
|
+
type: 'msic',
|
|
215
|
+
data: JSON.stringify({ isRefresh: true }),
|
|
216
|
+
},
|
|
217
|
+
});
|
|
218
|
+
expect(() => window.dispatchEvent(messageEvent)).not.toThrow();
|
|
219
|
+
});
|
|
220
|
+
});
|
|
221
|
+
|
|
222
|
+
describe('data prop watcher', () => {
|
|
223
|
+
it('should emit load when data prop changes', async () => {
|
|
224
|
+
wrapper = mount(PortalPreview, {
|
|
225
|
+
props: { data: undefined },
|
|
226
|
+
});
|
|
227
|
+
|
|
228
|
+
// Wait for onMounted -> initData -> getWorkbench resolution
|
|
229
|
+
await flushPromises();
|
|
230
|
+
await flushPromises();
|
|
231
|
+
|
|
232
|
+
const newData = { layout: [{ component: 'HText' }] };
|
|
233
|
+
await wrapper.setProps({ data: newData });
|
|
234
|
+
await nextTick();
|
|
235
|
+
await flushPromises();
|
|
236
|
+
|
|
237
|
+
const loadEvents = wrapper.emitted('load');
|
|
238
|
+
expect(loadEvents).toBeTruthy();
|
|
239
|
+
const lastEvent = loadEvents![loadEvents!.length - 1][0];
|
|
240
|
+
expect(lastEvent).toEqual(newData);
|
|
241
|
+
});
|
|
242
|
+
});
|
|
243
|
+
|
|
244
|
+
describe('fallbackRedirect prop', () => {
|
|
245
|
+
it('should not redirect on error when fallbackRedirect is empty', async () => {
|
|
246
|
+
mockGetWorkbench.mockRejectedValue(new Error('API Error'));
|
|
247
|
+
const openSpy = vi.spyOn(window, 'open');
|
|
248
|
+
|
|
249
|
+
wrapper = mount(PortalPreview, {
|
|
250
|
+
props: { fallbackRedirect: '' },
|
|
251
|
+
});
|
|
252
|
+
await nextTick();
|
|
253
|
+
await flushPromises();
|
|
254
|
+
|
|
255
|
+
expect(openSpy).not.toHaveBeenCalled();
|
|
256
|
+
});
|
|
257
|
+
});
|
|
258
|
+
});
|