ep-lib-ts 1.0.64 → 1.0.65
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/basics/EpAvatar.vue.js +1 -54
- package/dist/components/basics/EpAvatar.vue.js.map +1 -1
- package/dist/components/basics/EpAvatar.vue2.js +54 -1
- package/dist/components/basics/EpAvatar.vue2.js.map +1 -1
- package/dist/components/basics/EpCard.vue.js +29 -40
- package/dist/components/basics/EpCard.vue.js.map +1 -1
- package/dist/components/basics/EpDivider.vue.js +1 -1
- package/dist/components/basics/EpDivider.vue.js.map +1 -1
- package/dist/components/basics/EpHoverCard.vue.js +13 -30
- package/dist/components/basics/EpHoverCard.vue.js.map +1 -1
- package/dist/components/basics/EpImg.vue.js +5 -3
- package/dist/components/basics/EpImg.vue.js.map +1 -1
- package/dist/components/basics/EpStackedList.vue.js +3 -3
- package/dist/components/basics/EpStackedList.vue.js.map +1 -1
- package/dist/components/basics/EpTable.vue.js +4 -4
- package/dist/components/basics/EpTable.vue.js.map +1 -1
- package/dist/components/educationals/EpBranchingScenario.vue.js +1 -1
- package/dist/components/educationals/EpBranchingScenario.vue2.js +1 -1
- package/dist/components/educationals/EpBranchingScenario.vue2.js.map +1 -1
- package/dist/components/educationals/EpEdu.vue.js +10 -6
- package/dist/components/educationals/EpEdu.vue.js.map +1 -1
- package/dist/components/educationals/EpObjective.vue.js +3 -3
- package/dist/components/educationals/EpObjective.vue.js.map +1 -1
- package/dist/components/educationals/EpReading.vue.js +36 -28
- package/dist/components/educationals/EpReading.vue.js.map +1 -1
- package/dist/components/educationals/EpResource.vue.js +1 -1
- package/dist/components/educationals/EpResource.vue.js.map +1 -1
- package/dist/components/educationals/EpSpecificObjective.vue.js +7 -8
- package/dist/components/educationals/EpSpecificObjective.vue.js.map +1 -1
- package/dist/components/forms/EpRadioSummative.vue2.js +1 -1
- package/dist/components/forms/EpRadioSummative.vue2.js.map +1 -1
- package/dist/components/interactions/EpAccordeon.vue.js +1 -1
- package/dist/components/interactions/EpAccordeon.vue2.js +3 -2
- package/dist/components/interactions/EpAccordeon.vue2.js.map +1 -1
- package/dist/components/interactions/EpContentSlider.vue.js +4 -4
- package/dist/components/interactions/EpContentSlider.vue.js.map +1 -1
- package/dist/components/interactions/EpQuestion.vue.js +1 -1
- package/dist/components/interactions/EpQuestion.vue.js.map +1 -1
- package/dist/components/interactions/EpSummativeTable.vue.js +2 -2
- package/dist/components/interactions/EpSummativeTable.vue.js.map +1 -1
- package/dist/components/medias/EpHierarchy.vue.js +1 -1
- package/dist/components/medias/EpHierarchy.vue2.js +2 -2
- package/dist/components/medias/EpHierarchy.vue2.js.map +1 -1
- package/dist/components/medias/EpSoftware.vue.js +1 -1
- package/dist/components/medias/EpSoftware.vue.js.map +1 -1
- package/dist/components/medias/EpTerm.vue.js +4 -4
- package/dist/components/medias/EpTerm.vue.js.map +1 -1
- package/dist/components/medias/EpWordDef.vue.js +6 -6
- package/dist/components/medias/EpWordDef.vue.js.map +1 -1
- package/dist/components/signages/EpAlert.vue.js +1 -1
- package/dist/components/signages/EpAlert.vue2.js +1 -1
- package/dist/components/signages/EpAlert.vue2.js.map +1 -1
- package/dist/components/signages/EpHeader.vue.js +6 -6
- package/dist/components/signages/EpHeader.vue.js.map +1 -1
- package/dist/components/signages/EpQuote.vue.js +4 -4
- package/dist/components/signages/EpQuote.vue.js.map +1 -1
- package/dist/components/tools/Details.vue2.js +2 -3
- package/dist/components/tools/Details.vue2.js.map +1 -1
- package/dist/components/tools/DisplayBox.vue.js +3 -1
- package/dist/components/tools/DisplayBox.vue.js.map +1 -1
- package/dist/components/tools/DisplayBox.vue2.js +2 -2
- package/dist/components/tools/DisplayBox.vue2.js.map +1 -1
- package/dist/components/tools/TextMedia.vue2.js +2 -2
- package/dist/components/tools/TextMedia.vue2.js.map +1 -1
- package/dist/components/tools/TwoColsMedia.vue2.js +2 -2
- package/dist/components/tools/TwoColsMedia.vue2.js.map +1 -1
- package/dist/composables/useIcons.js +1 -1
- package/dist/composables/useIcons.js.map +1 -1
- package/dist/styles.css +171 -103
- package/dist/types/Accordeon.d.ts +1 -5
- package/dist/types/Accordeon.js +21 -25
- package/dist/types/Accordeon.js.map +1 -1
- package/dist/types/Alert.d.ts +2 -2
- package/dist/types/Alert.js +34 -34
- package/dist/types/Alert.js.map +1 -1
- package/dist/types/Btn.d.ts +0 -5
- package/dist/types/Btn.js +21 -26
- package/dist/types/Btn.js.map +1 -1
- package/dist/types/Chip.d.ts +0 -4
- package/dist/types/Chip.js +14 -18
- package/dist/types/Chip.js.map +1 -1
- package/dist/types/Colors.d.ts +1 -1
- package/dist/types/Hover.d.ts +1 -1
- package/dist/types/Medias.d.ts +0 -1
- package/dist/types/Medias.js +0 -1
- package/dist/types/Medias.js.map +1 -1
- package/dist/types/Radio.d.ts +0 -1
- package/dist/types/Radio.js +0 -1
- package/dist/types/Radio.js.map +1 -1
- package/dist/types/StackedList.d.ts +1 -1
- package/dist/types/StackedList.js.map +1 -1
- package/dist/types/Switch.d.ts +0 -1
- package/dist/types/Switch.js +0 -1
- package/dist/types/Switch.js.map +1 -1
- package/dist/types/basics/EpCard.d.ts +3 -1
- package/dist/types/educationals/EpEdu.d.ts +1 -0
- package/dist/types/signages/EpBadge.d.ts +0 -1
- package/package.json +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import _sfc_main from "./EpAccordeon.vue2.js";
|
|
2
2
|
/* empty css */
|
|
3
3
|
import _export_sfc from "../../_virtual/_plugin-vue_export-helper.js";
|
|
4
|
-
const Comp = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-
|
|
4
|
+
const Comp = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-e4ec841e"]]);
|
|
5
5
|
export {
|
|
6
6
|
Comp as default
|
|
7
7
|
};
|
|
@@ -5,7 +5,7 @@ const _hoisted_1 = { class: "py-3" };
|
|
|
5
5
|
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
6
6
|
__name: "EpAccordeon",
|
|
7
7
|
props: {
|
|
8
|
-
type: { default: "
|
|
8
|
+
type: { default: "neutral" },
|
|
9
9
|
icon: {},
|
|
10
10
|
open: { type: Boolean, default: false },
|
|
11
11
|
outlined: { type: Boolean, default: false },
|
|
@@ -27,7 +27,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
27
27
|
return `flex justify-between items-center px-4 ${props.small ? "py-1" : "py-2"} cursor-pointer ${(_a = typeAccordeon[props.type]) == null ? void 0 : _a[isOutlined.value]}`;
|
|
28
28
|
});
|
|
29
29
|
const contentStyles = computed(() => {
|
|
30
|
-
|
|
30
|
+
const colorBorder = `ep-border-${props.type.toLocaleLowerCase()}`;
|
|
31
|
+
return `px-4 ep-surface-2 border border-t-0 ${showDiv.value ? colorBorder : "border-0"}`;
|
|
31
32
|
});
|
|
32
33
|
onMounted(() => {
|
|
33
34
|
var content = collapsible.value;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EpAccordeon.vue2.js","sources":["../../../src/components/interactions/EpAccordeon.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { ref, toRefs, onMounted, computed } from \"vue\";\nimport EpIcon from \"~/components/basics/EpIcon.vue\";\nimport { typeAccordeon } from \"~/types/Accordeon\";\nimport type { EpAccordeonProps } from \"~/types/interactions/EpAccordeon\";\n\nconst props = withDefaults(defineProps<EpAccordeonProps>(), {\n open: false,\n type: \"
|
|
1
|
+
{"version":3,"file":"EpAccordeon.vue2.js","sources":["../../../src/components/interactions/EpAccordeon.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { ref, toRefs, onMounted, computed } from \"vue\";\nimport EpIcon from \"~/components/basics/EpIcon.vue\";\nimport { typeAccordeon } from \"~/types/Accordeon\";\nimport type { EpAccordeonProps } from \"~/types/interactions/EpAccordeon\";\n\nconst props = withDefaults(defineProps<EpAccordeonProps>(), {\n open: false,\n type: \"neutral\",\n outlined: false,\n title: \"En savoir plus\",\n});\n\nconst showDiv = ref(props.open);\nconst collapsible = ref();\n\nconst isOutlined = computed(() => {\n if (props.outlined) {\n return \"outlined\";\n }\n return \"default\";\n});\n\nconst stylesHeader = computed(() => {\n return `flex justify-between items-center px-4 ${\n props.small ? \"py-1\" : \"py-2\"\n } cursor-pointer ${typeAccordeon[props.type]?.[isOutlined.value]}`;\n});\n\nconst contentStyles = computed(() => {\n const colorBorder = `ep-border-${props.type.toLocaleLowerCase()}`\n return `px-4 ep-surface-2 border border-t-0 ${\n showDiv.value ? colorBorder : \"border-0\"\n }`;\n});\n\nonMounted(() => {\n var content = collapsible.value;\n if (props.open) {\n content.style.maxHeight = content.scrollHeight + \"px\";\n }\n});\n\nfunction toggleDivVisibility() {\n showDiv.value = !showDiv.value;\n var content = collapsible.value;\n if (content.style.maxHeight) {\n content.style.maxHeight = null;\n } else {\n content.style.maxHeight = content.scrollHeight + \"px\";\n }\n //add transition\n if (!content.style.transition) {\n content.style.transition = \"max-height 0.2s ease-out\";\n }\n}\n\nconst { title, icon, small } = toRefs(props);\n</script>\n\n<template>\n <div>\n <div :class=\"stylesHeader\" @click=\"toggleDivVisibility\">\n <h3 :class=\"`${small ? 'text' : 'text-lg'} flex items-center`\">\n <EpIcon\n v-if=\"icon\"\n :icon-path=\"icon\"\n size=\"28\"\n extraClass=\"mr-2\"\n ></EpIcon\n >{{ title }}\n </h3>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke-width=\"1.5\"\n stroke=\"currentColor\"\n :class=\"`mx-4 my-3 h-6 w-6 transition-all duration-200 ${\n showDiv ? 'rotate-45' : ''\n }`\"\n >\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n d=\"M12 6v12m6-6H6\"\n />\n </svg>\n </div>\n <div ref=\"collapsible\" :class=\"`${contentStyles} ep-accordeon-content`\">\n <div class=\"py-3\">\n <slot />\n </div>\n </div>\n </div>\n</template>\n\n<style scoped>\n.ep-accordeon-content {\n max-height: 0;\n overflow: hidden;\n}\n</style>\n"],"names":["_createElementBlock","_createElementVNode","_unref","_createBlock","EpIcon","_normalizeClass","_renderSlot"],"mappings":";;;;;;;;;;;;;;;AAMA,UAAM,QAAQ;AAOd,UAAM,UAAU,IAAI,MAAM,IAAI;AAC9B,UAAM,cAAc,IAAA;AAEpB,UAAM,aAAa,SAAS,MAAM;AAChC,UAAI,MAAM,UAAU;AAClB,eAAO;AAAA,MACT;AACA,aAAO;AAAA,IACT,CAAC;AAED,UAAM,eAAe,SAAS,MAAM;;AAClC,aAAO,0CACL,MAAM,QAAQ,SAAS,MACzB,oBAAmB,mBAAc,MAAM,IAAI,MAAxB,mBAA4B,WAAW,MAAM;AAAA,IAClE,CAAC;AAED,UAAM,gBAAgB,SAAS,MAAM;AACnC,YAAM,cAAc,aAAa,MAAM,KAAK,mBAAmB;AAC/D,aAAO,uCACL,QAAQ,QAAQ,cAAc,UAChC;AAAA,IACF,CAAC;AAED,cAAU,MAAM;AACd,UAAI,UAAU,YAAY;AAC1B,UAAI,MAAM,MAAM;AACd,gBAAQ,MAAM,YAAY,QAAQ,eAAe;AAAA,MACnD;AAAA,IACF,CAAC;AAED,aAAS,sBAAsB;AAC7B,cAAQ,QAAQ,CAAC,QAAQ;AACzB,UAAI,UAAU,YAAY;AAC1B,UAAI,QAAQ,MAAM,WAAW;AAC3B,gBAAQ,MAAM,YAAY;AAAA,MAC5B,OAAO;AACL,gBAAQ,MAAM,YAAY,QAAQ,eAAe;AAAA,MACnD;AAEA,UAAI,CAAC,QAAQ,MAAM,YAAY;AAC7B,gBAAQ,MAAM,aAAa;AAAA,MAC7B;AAAA,IACF;AAEA,UAAM,EAAE,OAAO,MAAM,MAAA,IAAU,OAAO,KAAK;;0BAIzCA,mBAiCM,OAAA,MAAA;AAAA,QAhCJC,mBA0BM,OAAA;AAAA,UA1BA,sBAAO,aAAA,KAAY;AAAA,UAAG,SAAO;AAAA,QAAA;UACjCA,mBAQK,MAAA;AAAA,YARA,yBAAUC,MAAA,KAAA,IAAK,SAAA,SAAA,oBAAA;AAAA,UAAA;YAEVA,MAAA,IAAA,kBADRC,YAMCC,aAAA;AAAA;cAJE,aAAWF,MAAA,IAAA;AAAA,cACZ,MAAK;AAAA,cACL,YAAW;AAAA,YAAA;4CAETA,MAAA,KAAA,CAAK,GAAA,CAAA;AAAA,UAAA;wBAEXF,mBAeM,OAAA;AAAA,YAdJ,OAAM;AAAA,YACN,MAAK;AAAA,YACL,SAAQ;AAAA,YACR,gBAAa;AAAA,YACb,QAAO;AAAA,YACN,OAAKK,eAAA,iDAA8D,QAAA,QAAO,cAAA;;YAI3EJ,mBAIE,QAAA;AAAA,cAHA,kBAAe;AAAA,cACf,mBAAgB;AAAA,cAChB,GAAE;AAAA,YAAA;;;QAIRA,mBAIM,OAAA;AAAA,mBAJG;AAAA,UAAJ,KAAI;AAAA,UAAe,yBAAU,cAAA,KAAa,uBAAA;AAAA,QAAA;UAC7CA,mBAEM,OAFN,YAEM;AAAA,YADJK,WAAQ,KAAA,QAAA,WAAA,CAAA,GAAA,QAAA,IAAA;AAAA,UAAA;;;;;;"}
|
|
@@ -5,9 +5,9 @@ import { useRenderText } from "../../composables/useRenderText.js";
|
|
|
5
5
|
import { mdiArrowLeft, mdiArrowRight } from "@mdi/js";
|
|
6
6
|
import _sfc_main$1 from "../basics/EpIcon.vue.js";
|
|
7
7
|
import Comp from "../signages/EpSkeleton.vue.js";
|
|
8
|
-
const _hoisted_1 = { class: "relative h-[600px] flex flex-col p-6
|
|
8
|
+
const _hoisted_1 = { class: "relative h-[600px] flex flex-col p-6 ep-surface-2 w-full overflow-hidden rounded-lg shadow-xl" };
|
|
9
9
|
const _hoisted_2 = { class: "flex justify-between items-center pb-3 mb-3 border-b-2 border-gray-600 dark:border-gray-300" };
|
|
10
|
-
const _hoisted_3 = { class: "text-2xl font-bold text-primary" };
|
|
10
|
+
const _hoisted_3 = { class: "text-2xl font-bold ep-text-primary" };
|
|
11
11
|
const _hoisted_4 = {
|
|
12
12
|
key: 0,
|
|
13
13
|
class: "flex items-center space-x-3"
|
|
@@ -75,7 +75,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
75
75
|
if (currentSlide.value.component) {
|
|
76
76
|
const componentToLoad = useComponent((_a = currentSlide.value.component) == null ? void 0 : _a.type);
|
|
77
77
|
return defineAsyncComponent(
|
|
78
|
-
() => __variableDynamicImportRuntimeHelper(/* @__PURE__ */ Object.assign({ "../basics/EpAvatar.vue": () => import("../basics/EpAvatar.
|
|
78
|
+
() => __variableDynamicImportRuntimeHelper(/* @__PURE__ */ Object.assign({ "../basics/EpAvatar.vue": () => import("../basics/EpAvatar.vue.js"), "../basics/EpBadge.vue": () => import("../basics/EpBadge.vue.js"), "../basics/EpBtn.vue": () => import("../basics/EpBtn.vue2.js"), "../basics/EpCard.vue": () => import("../basics/EpCard.vue2.js"), "../basics/EpChip.vue": () => import("../basics/EpChip.vue2.js"), "../basics/EpDivider.vue": () => import("../basics/EpDivider.vue2.js"), "../basics/EpFlex.vue": () => import("../basics/EpFlex.vue2.js"), "../basics/EpHover.vue": () => import("../basics/EpHover.vue2.js"), "../basics/EpHoverCard.vue": () => import("../basics/EpHoverCard.vue2.js"), "../basics/EpIcon.vue": () => import("../basics/EpIcon.vue2.js"), "../basics/EpImg.vue": () => import("../basics/EpImg.vue2.js"), "../basics/EpImgCarousel.vue": () => import("../basics/EpImgCarousel.vue2.js"), "../basics/EpList.vue": () => import("../basics/EpList.vue.js"), "../basics/EpListItem.vue": () => import("../basics/EpListItem.vue2.js"), "../basics/EpSection.vue": () => import("../basics/EpSection.vue2.js"), "../basics/EpSectionCols.vue": () => import("../basics/EpSectionCols.vue2.js"), "../basics/EpSpinner.vue": () => import("../basics/EpSpinner.vue2.js"), "../basics/EpStackedList.vue": () => import("../basics/EpStackedList.vue2.js"), "../basics/EpTable.vue": () => import("../basics/EpTable.vue2.js"), "../basics/EpText.vue": () => import("../basics/EpText.vue2.js"), "../charts/EpBarChart.vue": () => import("../charts/EpBarChart.vue2.js"), "../charts/EpFunnelChart.vue": () => import("../charts/EpFunnelChart.vue2.js"), "../charts/EpLineChart.vue": () => import("../charts/EpLineChart.vue2.js"), "../charts/EpPieChart.vue": () => import("../charts/EpPieChart.vue2.js"), "../educationals/EpBranchingScenario.vue": () => import("../educationals/EpBranchingScenario.vue.js"), "../educationals/EpCodeblock.vue": () => import("../educationals/EpCodeblock.vue3.js"), "../educationals/EpConclusion.vue": () => import("../educationals/EpConclusion.vue2.js"), "../educationals/EpDescription.vue": () => import("../educationals/EpDescription.vue2.js"), "../educationals/EpDocument.vue": () => import("../educationals/EpDocument.vue2.js"), "../educationals/EpEdu.vue": () => import("../educationals/EpEdu.vue2.js"), "../educationals/EpInstructions.vue": () => import("../educationals/EpInstructions.vue2.js"), "../educationals/EpIntroduction.vue": () => import("../educationals/EpIntroduction.vue2.js"), "../educationals/EpObjective.vue": () => import("../educationals/EpObjective.vue2.js"), "../educationals/EpReading.vue": () => import("../educationals/EpReading.vue2.js"), "../educationals/EpResource.vue": () => import("../educationals/EpResource.vue2.js"), "../educationals/EpScope.vue": () => import("../educationals/EpScope.vue2.js"), "../educationals/EpSpecificObjective.vue": () => import("../educationals/EpSpecificObjective.vue2.js"), "../forms/EpCheckbox.vue": () => import("../forms/EpCheckbox.vue.js"), "../forms/EpInput.vue": () => import("../forms/EpInput.vue.js"), "../forms/EpRadio.vue": () => import("../forms/EpRadio.vue.js"), "../forms/EpRadioSummative.vue": () => import("../forms/EpRadioSummative.vue.js"), "../forms/EpSelect.vue": () => import("../forms/EpSelect.vue.js"), "../forms/EpSwitch.vue": () => import("../forms/EpSwitch.vue.js"), "../forms/EpTextarea.vue": () => import("../forms/EpTextarea.vue.js"), "../forms/EpToggle.vue": () => import("../forms/EpToggle.vue.js"), "./Ep360Image.vue": () => import("./Ep360Image.vue.js"), "./Ep360Video.vue": () => import("./Ep360Video.vue.js"), "./EpAccordeon.vue": () => import("./EpAccordeon.vue.js"), "./EpContentSlider.vue": () => import("./EpContentSlider.vue2.js"), "./EpDarkMode.vue": () => import("./EpDarkMode.vue2.js"), "./EpDraggable.vue": () => import("./EpDraggable.vue2.js"), "./EpHotSpot.vue": () => import("./EpHotSpot.vue2.js"), "./EpModal.vue": () => import("./EpModal.vue3.js"), "./EpQuestion.vue": () => import("./EpQuestion.vue2.js"), "./EpSummativeTable.vue": () => import("./EpSummativeTable.vue2.js"), "./EpSvgShow.vue": () => import("./EpSvgShow.vue2.js"), "./EpTabs.vue": () => import("./EpTabs.vue.js"), "./EpTooltip.vue": () => import("./EpTooltip.vue2.js"), "../medias/EpAudio.vue": () => import("../medias/EpAudio.vue2.js"), "../medias/EpCardLink.vue": () => import("../medias/EpCardLink.vue2.js"), "../medias/EpCarousel.vue": () => import("../medias/EpCarousel.vue2.js"), "../medias/EpHierarchy.vue": () => import("../medias/EpHierarchy.vue.js"), "../medias/EpIframe.vue": () => import("../medias/EpIframe.vue2.js"), "../medias/EpKatex.vue": () => import("../medias/EpKatex.vue.js"), "../medias/EpLink.vue": () => import("../medias/EpLink.vue2.js"), "../medias/EpLinkVersion.vue": () => import("../medias/EpLinkVersion.vue2.js"), "../medias/EpLottieSvg.vue": () => import("../medias/EpLottieSvg.vue2.js"), "../medias/EpSensibleImage.vue": () => import("../medias/EpSensibleImage.vue.js"), "../medias/EpSoftware.vue": () => import("../medias/EpSoftware.vue2.js"), "../medias/EpSvg.vue": () => import("../medias/EpSvg.vue2.js"), "../medias/EpTerm.vue": () => import("../medias/EpTerm.vue2.js"), "../medias/EpTimeLine.vue": () => import("../medias/EpTimeLine.vue.js"), "../medias/EpVideo.vue": () => import("../medias/EpVideo.vue2.js"), "../medias/EpVideoPanopto.vue": () => import("../medias/EpVideoPanopto.vue2.js"), "../medias/EpWordDef.vue": () => import("../medias/EpWordDef.vue2.js"), "../signages/EpAlert.vue": () => import("../signages/EpAlert.vue.js"), "../signages/EpBadge.vue": () => import("../signages/EpBadge.vue2.js"), "../signages/EpHeader.vue": () => import("../signages/EpHeader.vue2.js"), "../signages/EpNothing.vue": () => import("../signages/EpNothing.vue.js"), "../signages/EpQuote.vue": () => import("../signages/EpQuote.vue2.js"), "../signages/EpSkeleton.vue": () => import("../signages/EpSkeleton.vue.js"), "../tools/BgAudio.vue": () => import("../tools/BgAudio.vue.js"), "../tools/Details.vue": () => import("../tools/Details.vue.js"), "../tools/DisplayBox.vue": () => import("../tools/DisplayBox.vue.js"), "../tools/SvgFilter.vue": () => import("../tools/SvgFilter.vue.js"), "../tools/TextMedia.vue": () => import("../tools/TextMedia.vue.js"), "../tools/TimelineItem.vue": () => import("../tools/TimelineItem.vue.js"), "../tools/TwoColsMedia.vue": () => import("../tools/TwoColsMedia.vue.js") }), `../${componentToLoad.path}/${componentToLoad.name}.vue`, 3)
|
|
79
79
|
);
|
|
80
80
|
}
|
|
81
81
|
return null;
|
|
@@ -115,7 +115,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
115
115
|
onClick: ($event) => goTo(i),
|
|
116
116
|
class: normalizeClass([
|
|
117
117
|
"w-2 h-2 rounded-full cursor-pointer",
|
|
118
|
-
i === currentIndex.value ? "bg-primary" : "bg-
|
|
118
|
+
i === currentIndex.value ? "ep-bg-primary" : "ep-bg-neutral"
|
|
119
119
|
])
|
|
120
120
|
}, null, 10, _hoisted_6);
|
|
121
121
|
}), 128))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EpContentSlider.vue.js","sources":["../../../src/components/interactions/EpContentSlider.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport {\n ref,\n computed,\n defineAsyncComponent,\n type ComponentPublicInstance,\n} from \"vue\";\nimport { useComponent } from \"~/composables/useComponent\";\nimport { useRenderText } from \"~/composables/useRenderText\";\nimport { mdiArrowLeft, mdiArrowRight } from \"@mdi/js\";\nimport EpIcon from \"~/components/basics/EpIcon.vue\";\nimport EpSkeleton from \"~/components/signages/EpSkeleton.vue\";\nimport type { EpContentSliderProps } from \"~/types/interactions/EpContentSlider\";\n\nconst props = withDefaults(defineProps<EpContentSliderProps>(), {\n loading: \"...loading\",\n noData: \"No data available\",\n mediaPosition: \"left\",\n});\n\nconst currentIndex = ref(0);\nconst isLoading = ref(false);\nconst slideRefs = ref<(HTMLElement | null)[]>([]);\n\nconst currentSlide = computed(() => {\n if (!props.slides || props.slides.length === 0) {\n return {\n title: props.noData,\n img: \"\",\n uid: 2,\n content: \"\",\n component: null,\n };\n }\n return props.slides[currentIndex.value];\n});\n\nconst hasTextContent = computed(() => {\n const content = currentSlide.value.content;\n return content && content.trim().length > 0;\n});\n\nconst currentSlideMediaContent = computed(() => {\n if (currentSlide.value.img) {\n return defineAsyncComponent(() => import(\"../basics/EpImg.vue\"));\n }\n if (currentSlide.value.component) {\n const componentToLoad = useComponent(currentSlide.value.component?.type);\n return defineAsyncComponent(\n () => import(`../${componentToLoad.path}/${componentToLoad.name}.vue`)\n );\n }\n return null;\n});\n\nconst max = computed(() => currentIndex.value < props.slides.length - 1);\n\nconst next = async () => {\n isLoading.value = true;\n if (max.value) {\n currentIndex.value += 1;\n }\n isLoading.value = false;\n};\n\nconst prev = async () => {\n isLoading.value = true;\n if (currentIndex.value > 0) {\n currentIndex.value -= 1;\n }\n isLoading.value = false;\n};\n\nconst goTo = (index: number) => (currentIndex.value = index);\n\nconst updateSlideRefs = (\n el: Element | ComponentPublicInstance | null,\n index: number\n) => {\n if (el instanceof HTMLElement) {\n slideRefs.value[index] = el;\n } else {\n slideRefs.value[index] = null;\n }\n};\n</script>\n\n<template>\n <div\n class=\"relative h-[600px] flex flex-col p-6 bg-zinc-100 dark:bg-dark w-full overflow-hidden rounded-lg shadow-xl\"\n >\n <!-- Header section with navigation -->\n <div\n class=\"flex justify-between items-center pb-3 mb-3 border-b-2 border-gray-600 dark:border-gray-300\"\n >\n <h5 class=\"text-2xl font-bold text-primary\">{{ currentSlide.title }}</h5>\n <div class=\"flex items-center space-x-3\" v-if=\"props.slides.length\">\n <!-- Bullets -->\n <div class=\"flex space-x-2\">\n <span\n v-for=\"(_, i) in props.slides.length\"\n :key=\"`slide-index-${i}`\"\n @click=\"goTo(i)\"\n :class=\"[\n 'w-2 h-2 rounded-full cursor-pointer',\n i === currentIndex ? 'bg-primary' : 'bg-gray-400',\n ]\"\n />\n </div>\n\n <!-- Controls -->\n <div class=\"flex space-x-2\">\n <button class=\"nav-btn\" @click=\"prev\" :disabled=\"currentIndex === 0\">\n <EpIcon :icon-path=\"mdiArrowLeft\" size=\"24\" />\n </button>\n <button class=\"nav-btn\" @click=\"next\" :disabled=\"!max\">\n <EpIcon :icon-path=\"mdiArrowRight\" size=\"24\" />\n </button>\n </div>\n <span class=\"text-sm\"\n >{{ currentIndex + 1 }} / {{ props.slides.length }}</span\n >\n </div>\n </div>\n\n <!-- Slider content -->\n <div\n class=\"flex flex-grow items-center justify-center overflow-hidden mb-4\"\n >\n <transition name=\"slide-fade\" mode=\"out-in\">\n <div\n v-if=\"props.slides.length > 0\"\n :key=\"currentSlide.uid\"\n :ref=\"(el) => updateSlideRefs(el, currentIndex)\"\n :class=\"[\n 'flex w-full h-full gap-2',\n hasTextContent\n ? props.mediaPosition === 'left'\n ? 'flex-row'\n : 'flex-row-reverse'\n : 'justify-center',\n ]\"\n >\n <div\n v-if=\"isLoading\"\n class=\"flex items-center justify-center w-full h-full\"\n >\n <EpSkeleton\n :type=\"'rectangle'\"\n :height=\"100\"\n :width=\"100\"\n :loading=\"true\"\n />\n </div>\n\n <div\n v-else-if=\"!hasTextContent && !currentSlideMediaContent\"\n class=\"flex items-center justify-center w-full h-full\"\n >\n <EpSkeleton\n class=\"p-4\"\n :type=\"'rectangle'\"\n :height=\"150\"\n :width=\"150\"\n :loading=\"true\"\n />\n </div>\n\n <!-- Media content -->\n <div\n v-if=\"currentSlideMediaContent\"\n class=\"flex items-center justify-center p-2 md:w-1/2 w-full\"\n style=\"max-height: 100%\"\n >\n <!--condition is img-->\n <template v-if=\"currentSlide.img\">\n <component\n :is=\"currentSlideMediaContent\"\n :src=\"currentSlide.img\"\n cols=\"11\"\n class=\"max-h-full max-w-full object-contain\"\n :style=\"{\n height: 'auto',\n maxHeight: '100%',\n objectFit: 'contain',\n margin: 'auto',\n }\"\n ></component>\n </template>\n <template v-else-if=\"currentSlide.component\">\n <Suspense>\n <component\n :is=\"currentSlideMediaContent\"\n v-bind=\"{ ...currentSlide.component.data }\"\n cols=\"11\"\n class=\"max-h-full max-w-full object-contain\"\n :style=\"{\n height: 'auto',\n maxHeight: '100%',\n objectFit: 'contain',\n margin: 'auto',\n }\"\n >\n </component>\n <template #fallback>\n {{ loading }}\n </template>\n </Suspense>\n </template>\n </div>\n\n <!-- Text content -->\n <div\n v-if=\"hasTextContent\"\n class=\"flex-1 p-2 overflow-y-auto md:w-1/2 w-full\"\n >\n <div\n v-html=\"useRenderText(currentSlide.content)\"\n class=\"text-base leading-relaxed text-black dark:text-white\"\n ></div>\n </div>\n </div>\n </transition>\n </div>\n\n <!-- Progress bar -->\n <div class=\"mt-2 h-2 w-full bg-gray-300 rounded-full\">\n <div\n class=\"bg-primary h-full rounded-full transition-all duration-300\"\n :style=\"{\n width: ((currentIndex + 1) / props.slides.length) * 100 + '%',\n }\"\n />\n </div>\n </div>\n</template>\n"],"names":["_openBlock","_createElementBlock","_createElementVNode","_toDisplayString","_Fragment","_renderList","_normalizeClass","_createVNode","EpIcon","_unref","_Transition","EpSkeleton","_createBlock","_resolveDynamicComponent","_Suspense","loading","_mergeProps","_normalizeStyle"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"EpContentSlider.vue.js","sources":["../../../src/components/interactions/EpContentSlider.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport {\n ref,\n computed,\n defineAsyncComponent,\n type ComponentPublicInstance,\n} from \"vue\";\nimport { useComponent } from \"~/composables/useComponent\";\nimport { useRenderText } from \"~/composables/useRenderText\";\nimport { mdiArrowLeft, mdiArrowRight } from \"@mdi/js\";\nimport EpIcon from \"~/components/basics/EpIcon.vue\";\nimport EpSkeleton from \"~/components/signages/EpSkeleton.vue\";\nimport type { EpContentSliderProps } from \"~/types/interactions/EpContentSlider\";\n\nconst props = withDefaults(defineProps<EpContentSliderProps>(), {\n loading: \"...loading\",\n noData: \"No data available\",\n mediaPosition: \"left\",\n});\n\nconst currentIndex = ref(0);\nconst isLoading = ref(false);\nconst slideRefs = ref<(HTMLElement | null)[]>([]);\n\nconst currentSlide = computed(() => {\n if (!props.slides || props.slides.length === 0) {\n return {\n title: props.noData,\n img: \"\",\n uid: 2,\n content: \"\",\n component: null,\n };\n }\n return props.slides[currentIndex.value];\n});\n\nconst hasTextContent = computed(() => {\n const content = currentSlide.value.content;\n return content && content.trim().length > 0;\n});\n\nconst currentSlideMediaContent = computed(() => {\n if (currentSlide.value.img) {\n return defineAsyncComponent(() => import(\"../basics/EpImg.vue\"));\n }\n if (currentSlide.value.component) {\n const componentToLoad = useComponent(currentSlide.value.component?.type);\n return defineAsyncComponent(\n () => import(`../${componentToLoad.path}/${componentToLoad.name}.vue`)\n );\n }\n return null;\n});\n\nconst max = computed(() => currentIndex.value < props.slides.length - 1);\n\nconst next = async () => {\n isLoading.value = true;\n if (max.value) {\n currentIndex.value += 1;\n }\n isLoading.value = false;\n};\n\nconst prev = async () => {\n isLoading.value = true;\n if (currentIndex.value > 0) {\n currentIndex.value -= 1;\n }\n isLoading.value = false;\n};\n\nconst goTo = (index: number) => (currentIndex.value = index);\n\nconst updateSlideRefs = (\n el: Element | ComponentPublicInstance | null,\n index: number\n) => {\n if (el instanceof HTMLElement) {\n slideRefs.value[index] = el;\n } else {\n slideRefs.value[index] = null;\n }\n};\n</script>\n\n<template>\n <div\n class=\"relative h-[600px] flex flex-col p-6 ep-surface-2 w-full overflow-hidden rounded-lg shadow-xl\"\n >\n <!-- Header section with navigation -->\n <div\n class=\"flex justify-between items-center pb-3 mb-3 border-b-2 border-gray-600 dark:border-gray-300\"\n >\n <h5 class=\"text-2xl font-bold ep-text-primary\">{{ currentSlide.title }}</h5>\n <div class=\"flex items-center space-x-3\" v-if=\"props.slides.length\">\n <!-- Bullets -->\n <div class=\"flex space-x-2\">\n <span\n v-for=\"(_, i) in props.slides.length\"\n :key=\"`slide-index-${i}`\"\n @click=\"goTo(i)\"\n :class=\"[\n 'w-2 h-2 rounded-full cursor-pointer',\n i === currentIndex ? 'ep-bg-primary' : 'ep-bg-neutral',\n ]\"\n />\n </div>\n\n <!-- Controls -->\n <div class=\"flex space-x-2\">\n <button class=\"nav-btn\" @click=\"prev\" :disabled=\"currentIndex === 0\">\n <EpIcon :icon-path=\"mdiArrowLeft\" size=\"24\" />\n </button>\n <button class=\"nav-btn\" @click=\"next\" :disabled=\"!max\">\n <EpIcon :icon-path=\"mdiArrowRight\" size=\"24\" />\n </button>\n </div>\n <span class=\"text-sm\"\n >{{ currentIndex + 1 }} / {{ props.slides.length }}</span\n >\n </div>\n </div>\n\n <!-- Slider content -->\n <div\n class=\"flex flex-grow items-center justify-center overflow-hidden mb-4\"\n >\n <transition name=\"slide-fade\" mode=\"out-in\">\n <div\n v-if=\"props.slides.length > 0\"\n :key=\"currentSlide.uid\"\n :ref=\"(el) => updateSlideRefs(el, currentIndex)\"\n :class=\"[\n 'flex w-full h-full gap-2',\n hasTextContent\n ? props.mediaPosition === 'left'\n ? 'flex-row'\n : 'flex-row-reverse'\n : 'justify-center',\n ]\"\n >\n <div\n v-if=\"isLoading\"\n class=\"flex items-center justify-center w-full h-full\"\n >\n <EpSkeleton\n :type=\"'rectangle'\"\n :height=\"100\"\n :width=\"100\"\n :loading=\"true\"\n />\n </div>\n\n <div\n v-else-if=\"!hasTextContent && !currentSlideMediaContent\"\n class=\"flex items-center justify-center w-full h-full\"\n >\n <EpSkeleton\n class=\"p-4\"\n :type=\"'rectangle'\"\n :height=\"150\"\n :width=\"150\"\n :loading=\"true\"\n />\n </div>\n\n <!-- Media content -->\n <div\n v-if=\"currentSlideMediaContent\"\n class=\"flex items-center justify-center p-2 md:w-1/2 w-full\"\n style=\"max-height: 100%\"\n >\n <!--condition is img-->\n <template v-if=\"currentSlide.img\">\n <component\n :is=\"currentSlideMediaContent\"\n :src=\"currentSlide.img\"\n cols=\"11\"\n class=\"max-h-full max-w-full object-contain\"\n :style=\"{\n height: 'auto',\n maxHeight: '100%',\n objectFit: 'contain',\n margin: 'auto',\n }\"\n ></component>\n </template>\n <template v-else-if=\"currentSlide.component\">\n <Suspense>\n <component\n :is=\"currentSlideMediaContent\"\n v-bind=\"{ ...currentSlide.component.data }\"\n cols=\"11\"\n class=\"max-h-full max-w-full object-contain\"\n :style=\"{\n height: 'auto',\n maxHeight: '100%',\n objectFit: 'contain',\n margin: 'auto',\n }\"\n >\n </component>\n <template #fallback>\n {{ loading }}\n </template>\n </Suspense>\n </template>\n </div>\n\n <!-- Text content -->\n <div\n v-if=\"hasTextContent\"\n class=\"flex-1 p-2 overflow-y-auto md:w-1/2 w-full\"\n >\n <div\n v-html=\"useRenderText(currentSlide.content)\"\n class=\"text-base leading-relaxed text-black dark:text-white\"\n ></div>\n </div>\n </div>\n </transition>\n </div>\n\n <!-- Progress bar -->\n <div class=\"mt-2 h-2 w-full bg-gray-300 rounded-full\">\n <div\n class=\"bg-primary h-full rounded-full transition-all duration-300\"\n :style=\"{\n width: ((currentIndex + 1) / props.slides.length) * 100 + '%',\n }\"\n />\n </div>\n </div>\n</template>\n"],"names":["_openBlock","_createElementBlock","_createElementVNode","_toDisplayString","_Fragment","_renderList","_normalizeClass","_createVNode","EpIcon","_unref","_Transition","EpSkeleton","_createBlock","_resolveDynamicComponent","_Suspense","loading","_mergeProps","_normalizeStyle"],"mappings":"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"}
|
|
@@ -103,7 +103,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
103
103
|
return defineAsyncComponent(() => import("../signages/EpNothing.vue.js"));
|
|
104
104
|
}
|
|
105
105
|
return defineAsyncComponent(
|
|
106
|
-
() => __variableDynamicImportRuntimeHelper(/* @__PURE__ */ Object.assign({ "../basics/EpAvatar.vue": () => import("../basics/EpAvatar.
|
|
106
|
+
() => __variableDynamicImportRuntimeHelper(/* @__PURE__ */ Object.assign({ "../basics/EpAvatar.vue": () => import("../basics/EpAvatar.vue.js"), "../basics/EpBadge.vue": () => import("../basics/EpBadge.vue.js"), "../basics/EpBtn.vue": () => import("../basics/EpBtn.vue2.js"), "../basics/EpCard.vue": () => import("../basics/EpCard.vue2.js"), "../basics/EpChip.vue": () => import("../basics/EpChip.vue2.js"), "../basics/EpDivider.vue": () => import("../basics/EpDivider.vue2.js"), "../basics/EpFlex.vue": () => import("../basics/EpFlex.vue2.js"), "../basics/EpHover.vue": () => import("../basics/EpHover.vue2.js"), "../basics/EpHoverCard.vue": () => import("../basics/EpHoverCard.vue2.js"), "../basics/EpIcon.vue": () => import("../basics/EpIcon.vue2.js"), "../basics/EpImg.vue": () => import("../basics/EpImg.vue2.js"), "../basics/EpImgCarousel.vue": () => import("../basics/EpImgCarousel.vue2.js"), "../basics/EpList.vue": () => import("../basics/EpList.vue.js"), "../basics/EpListItem.vue": () => import("../basics/EpListItem.vue2.js"), "../basics/EpSection.vue": () => import("../basics/EpSection.vue2.js"), "../basics/EpSectionCols.vue": () => import("../basics/EpSectionCols.vue2.js"), "../basics/EpSpinner.vue": () => import("../basics/EpSpinner.vue2.js"), "../basics/EpStackedList.vue": () => import("../basics/EpStackedList.vue2.js"), "../basics/EpTable.vue": () => import("../basics/EpTable.vue2.js"), "../basics/EpText.vue": () => import("../basics/EpText.vue2.js"), "../charts/EpBarChart.vue": () => import("../charts/EpBarChart.vue2.js"), "../charts/EpFunnelChart.vue": () => import("../charts/EpFunnelChart.vue2.js"), "../charts/EpLineChart.vue": () => import("../charts/EpLineChart.vue2.js"), "../charts/EpPieChart.vue": () => import("../charts/EpPieChart.vue2.js"), "../educationals/EpBranchingScenario.vue": () => import("../educationals/EpBranchingScenario.vue.js"), "../educationals/EpCodeblock.vue": () => import("../educationals/EpCodeblock.vue3.js"), "../educationals/EpConclusion.vue": () => import("../educationals/EpConclusion.vue2.js"), "../educationals/EpDescription.vue": () => import("../educationals/EpDescription.vue2.js"), "../educationals/EpDocument.vue": () => import("../educationals/EpDocument.vue2.js"), "../educationals/EpEdu.vue": () => import("../educationals/EpEdu.vue2.js"), "../educationals/EpInstructions.vue": () => import("../educationals/EpInstructions.vue2.js"), "../educationals/EpIntroduction.vue": () => import("../educationals/EpIntroduction.vue2.js"), "../educationals/EpObjective.vue": () => import("../educationals/EpObjective.vue2.js"), "../educationals/EpReading.vue": () => import("../educationals/EpReading.vue2.js"), "../educationals/EpResource.vue": () => import("../educationals/EpResource.vue2.js"), "../educationals/EpScope.vue": () => import("../educationals/EpScope.vue2.js"), "../educationals/EpSpecificObjective.vue": () => import("../educationals/EpSpecificObjective.vue2.js"), "../forms/EpCheckbox.vue": () => import("../forms/EpCheckbox.vue.js"), "../forms/EpInput.vue": () => import("../forms/EpInput.vue.js"), "../forms/EpRadio.vue": () => import("../forms/EpRadio.vue.js"), "../forms/EpRadioSummative.vue": () => import("../forms/EpRadioSummative.vue.js"), "../forms/EpSelect.vue": () => import("../forms/EpSelect.vue.js"), "../forms/EpSwitch.vue": () => import("../forms/EpSwitch.vue.js"), "../forms/EpTextarea.vue": () => import("../forms/EpTextarea.vue.js"), "../forms/EpToggle.vue": () => import("../forms/EpToggle.vue.js"), "./Ep360Image.vue": () => import("./Ep360Image.vue.js"), "./Ep360Video.vue": () => import("./Ep360Video.vue.js"), "./EpAccordeon.vue": () => import("./EpAccordeon.vue.js"), "./EpContentSlider.vue": () => import("./EpContentSlider.vue2.js"), "./EpDarkMode.vue": () => import("./EpDarkMode.vue2.js"), "./EpDraggable.vue": () => import("./EpDraggable.vue2.js"), "./EpHotSpot.vue": () => import("./EpHotSpot.vue2.js"), "./EpModal.vue": () => import("./EpModal.vue3.js"), "./EpQuestion.vue": () => import("./EpQuestion.vue2.js"), "./EpSummativeTable.vue": () => import("./EpSummativeTable.vue2.js"), "./EpSvgShow.vue": () => import("./EpSvgShow.vue2.js"), "./EpTabs.vue": () => import("./EpTabs.vue.js"), "./EpTooltip.vue": () => import("./EpTooltip.vue2.js"), "../medias/EpAudio.vue": () => import("../medias/EpAudio.vue2.js"), "../medias/EpCardLink.vue": () => import("../medias/EpCardLink.vue2.js"), "../medias/EpCarousel.vue": () => import("../medias/EpCarousel.vue2.js"), "../medias/EpHierarchy.vue": () => import("../medias/EpHierarchy.vue.js"), "../medias/EpIframe.vue": () => import("../medias/EpIframe.vue2.js"), "../medias/EpKatex.vue": () => import("../medias/EpKatex.vue.js"), "../medias/EpLink.vue": () => import("../medias/EpLink.vue2.js"), "../medias/EpLinkVersion.vue": () => import("../medias/EpLinkVersion.vue2.js"), "../medias/EpLottieSvg.vue": () => import("../medias/EpLottieSvg.vue2.js"), "../medias/EpSensibleImage.vue": () => import("../medias/EpSensibleImage.vue.js"), "../medias/EpSoftware.vue": () => import("../medias/EpSoftware.vue2.js"), "../medias/EpSvg.vue": () => import("../medias/EpSvg.vue2.js"), "../medias/EpTerm.vue": () => import("../medias/EpTerm.vue2.js"), "../medias/EpTimeLine.vue": () => import("../medias/EpTimeLine.vue.js"), "../medias/EpVideo.vue": () => import("../medias/EpVideo.vue2.js"), "../medias/EpVideoPanopto.vue": () => import("../medias/EpVideoPanopto.vue2.js"), "../medias/EpWordDef.vue": () => import("../medias/EpWordDef.vue2.js"), "../signages/EpAlert.vue": () => import("../signages/EpAlert.vue.js"), "../signages/EpBadge.vue": () => import("../signages/EpBadge.vue2.js"), "../signages/EpHeader.vue": () => import("../signages/EpHeader.vue2.js"), "../signages/EpNothing.vue": () => import("../signages/EpNothing.vue.js"), "../signages/EpQuote.vue": () => import("../signages/EpQuote.vue2.js"), "../signages/EpSkeleton.vue": () => import("../signages/EpSkeleton.vue.js"), "../tools/BgAudio.vue": () => import("../tools/BgAudio.vue.js"), "../tools/Details.vue": () => import("../tools/Details.vue.js"), "../tools/DisplayBox.vue": () => import("../tools/DisplayBox.vue.js"), "../tools/SvgFilter.vue": () => import("../tools/SvgFilter.vue.js"), "../tools/TextMedia.vue": () => import("../tools/TextMedia.vue.js"), "../tools/TimelineItem.vue": () => import("../tools/TimelineItem.vue.js"), "../tools/TwoColsMedia.vue": () => import("../tools/TwoColsMedia.vue.js") }), `../${componentToLoad.path}/${componentToLoad.name}.vue`, 3)
|
|
107
107
|
);
|
|
108
108
|
};
|
|
109
109
|
const { title, hideIcon, question, src } = toRefs(props);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EpQuestion.vue.js","sources":["../../../src/components/interactions/EpQuestion.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { watch, ref, toRefs, computed, defineAsyncComponent } from \"vue\";\nimport EpEdu from \"~/components/educationals/EpEdu.vue\";\nimport { type Answer } from \"~/types/Answer\";\nimport { useRenderText } from \"~/composables/useRenderText\";\nimport { useComponent } from \"~/composables/useComponent\";\nimport { mdiHelpCircle } from \"@mdi/js\";\nimport EpImg from \"~/components/basics/EpImg.vue\";\nimport EpRadio from \"~/components/forms/EpRadio.vue\";\nimport EpBtn from \"~/components/basics/EpBtn.vue\";\nimport EpAlert from \"~/components/signages/EpAlert.vue\";\nimport type { EpQuestionProps } from \"~/types/interactions/EpQuestion\";\n\nconst props = withDefaults(defineProps<EpQuestionProps>(), {\n type: \"neutral\",\n hideIcon: false,\n shuffle: false,\n before: false,\n numeration: false,\n labelNoAnswer: \"Veuillez choisir une réponse\",\n labelAnswerBtn: \"Valider\",\n labelTryAgainBtn: \"Réessayer\",\n});\n\nconst renderText = computed(() => {\n if (!props.intentions) {\n return null;\n }\n return useRenderText(props.intentions);\n});\n\n//shuffle and list\nconst shuffleAnswers = computed(() => {\n const array = props.answers;\n if (props.shuffle) {\n for (let i = array.length - 1; i > 0; i--) {\n const j = Math.floor(Math.random() * (i + 1));\n const temp = array[i];\n array[i] = array[j];\n array[j] = temp;\n }\n }\n return array;\n});\n\nconst alphabet = [\"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\", \"I\", \"J\"];\nconst typeList = (index: number) => {\n if (props.numeration) {\n return alphabet[index];\n }\n return index + 1;\n};\n\n///user answer\nconst userAnswer = ref(\"\");\nconst answered = ref(false);\nconst valid = ref(true);\nconst response = ref<Answer>({\n type: \"warning\",\n text: \"no found\",\n component: null,\n feedback: \"\",\n});\nconst checkAnswer = () => {\n if (userAnswer.value === \"\") {\n valid.value = false;\n return;\n }\n const valuesAnswer = props.answers.find((x) => x.uid === userAnswer.value);\n if (!valuesAnswer) {\n return;\n }\n response.value = valuesAnswer!;\n answered.value = true;\n};\n\nconst reset = () => {\n answered.value = false;\n userAnswer.value = \"\";\n};\n\nwatch(userAnswer, (val) => {\n if (val !== \"\") {\n valid.value = true;\n }\n});\n\n//get Component asyncComponent\nconst getCompontent = (name: string | undefined) => {\n const componentToLoad = useComponent(name);\n //console.log(componentToLoad)\n if (componentToLoad.name === \"EpNothing\") {\n return defineAsyncComponent(() => import(\"../signages/EpNothing.vue\"));\n }\n return defineAsyncComponent(\n () => import(`../${componentToLoad.path}/${componentToLoad.name}.vue`)\n );\n};\n\n//returned values from props\nconst { title, intentions, hideIcon, question, src } = toRefs(props);\n</script>\n\n<template>\n <EpEdu\n :title=\"title\"\n :type=\"type\"\n :hideIcon=\"hideIcon\"\n :icon=\"mdiHelpCircle\"\n :label-intentions=\"labelIntentions\"\n >\n <template #intentions v-if=\"renderText\">\n <div v-html=\"renderText\" />\n </template>\n <template #content>\n <div class=\"mt-5\">\n <EpImg\n v-if=\"src && before\"\n :src=\"src\"\n :alt=\"`Image soutien à la question`\"\n cols=\"5\"\n />\n <div v-html=\"useRenderText(question)\" class=\"my-6\" />\n <EpImg\n v-if=\"src && !before\"\n :src=\"src\"\n :alt=\"`Image soutien à la question`\"\n cols=\"5\"\n />\n\n <div class=\"mb-6\">\n <ol class=\"no-list\">\n <li v-for=\"(answer, i) in shuffleAnswers\" :key=\"answer.uid\">\n <EpRadio\n :label=\"`${typeList(i)}. ${answer.text}`\"\n v-model=\"userAnswer\"\n :value=\"answer.uid\"\n :disabled=\"answered\"\n type=\"primary\"\n ></EpRadio>\n </li>\n </ol>\n <EpAlert type=\"error\" outlined noIcon v-if=\"!valid\">\n {{ labelNoAnswer }}\n </EpAlert>\n </div>\n\n <div v-if=\"answered\" class=\"mb-2\">\n <EpAlert :type=\"response.type\" outlined>\n <div v-html=\"useRenderText(response.feedback)\" />\n </EpAlert>\n\n <div v-if=\"response.component\" class=\"my-2\">\n <component\n :is=\"getCompontent(response.component.type)\"\n v-bind=\"{ ...response.component.data }\"\n ></component>\n </div>\n </div>\n\n <EpBtn\n type=\"primary\"\n @click=\"checkAnswer\"\n :disabled=\"answered\"\n outlined\n extraClass=\"mr-2\"\n >{{ labelAnswerBtn }}</EpBtn\n >\n <EpBtn type=\"primary\" v-if=\"answered\" @click=\"reset\" outlined>{{\n labelTryAgainBtn\n }}</EpBtn>\n </div>\n </template>\n <!-- <template #actions>\n <EpBtn :color=\"type=='base'?'text-gray-700':'text-white'\" :type=\"type\">[Repair btn style... to change]</EpBtn>\n </template> -->\n </EpEdu>\n</template>\n"],"names":["_createBlock","EpEdu","_unref","type","labelIntentions","_createElementVNode","before","EpImg","_openBlock","_createElementBlock","_Fragment","_renderList","_createVNode","EpRadio","EpAlert","labelNoAnswer","_resolveDynamicComponent","_normalizeProps","_guardReactiveProps","EpBtn","labelAnswerBtn","labelTryAgainBtn"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"EpQuestion.vue.js","sources":["../../../src/components/interactions/EpQuestion.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { watch, ref, toRefs, computed, defineAsyncComponent } from \"vue\";\nimport EpEdu from \"~/components/educationals/EpEdu.vue\";\nimport { type Answer } from \"~/types/Answer\";\nimport { useRenderText } from \"~/composables/useRenderText\";\nimport { useComponent } from \"~/composables/useComponent\";\nimport { mdiHelpCircle } from \"@mdi/js\";\nimport EpImg from \"~/components/basics/EpImg.vue\";\nimport EpRadio from \"~/components/forms/EpRadio.vue\";\nimport EpBtn from \"~/components/basics/EpBtn.vue\";\nimport EpAlert from \"~/components/signages/EpAlert.vue\";\nimport type { EpQuestionProps } from \"~/types/interactions/EpQuestion\";\n\nconst props = withDefaults(defineProps<EpQuestionProps>(), {\n type: \"neutral\",\n hideIcon: false,\n shuffle: false,\n before: false,\n numeration: false,\n labelNoAnswer: \"Veuillez choisir une réponse\",\n labelAnswerBtn: \"Valider\",\n labelTryAgainBtn: \"Réessayer\",\n});\n\nconst renderText = computed(() => {\n if (!props.intentions) {\n return null;\n }\n return useRenderText(props.intentions);\n});\n\n//shuffle and list\nconst shuffleAnswers = computed(() => {\n const array = props.answers;\n if (props.shuffle) {\n for (let i = array.length - 1; i > 0; i--) {\n const j = Math.floor(Math.random() * (i + 1));\n const temp = array[i];\n array[i] = array[j];\n array[j] = temp;\n }\n }\n return array;\n});\n\nconst alphabet = [\"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\", \"I\", \"J\"];\nconst typeList = (index: number) => {\n if (props.numeration) {\n return alphabet[index];\n }\n return index + 1;\n};\n\n///user answer\nconst userAnswer = ref(\"\");\nconst answered = ref(false);\nconst valid = ref(true);\nconst response = ref<Answer>({\n type: \"warning\",\n text: \"no found\",\n component: null,\n feedback: \"\",\n});\nconst checkAnswer = () => {\n if (userAnswer.value === \"\") {\n valid.value = false;\n return;\n }\n const valuesAnswer = props.answers.find((x) => x.uid === userAnswer.value);\n if (!valuesAnswer) {\n return;\n }\n response.value = valuesAnswer!;\n answered.value = true;\n};\n\nconst reset = () => {\n answered.value = false;\n userAnswer.value = \"\";\n};\n\nwatch(userAnswer, (val) => {\n if (val !== \"\") {\n valid.value = true;\n }\n});\n\n//get Component asyncComponent\nconst getCompontent = (name: string | undefined) => {\n const componentToLoad = useComponent(name);\n //console.log(componentToLoad)\n if (componentToLoad.name === \"EpNothing\") {\n return defineAsyncComponent(() => import(\"../signages/EpNothing.vue\"));\n }\n return defineAsyncComponent(\n () => import(`../${componentToLoad.path}/${componentToLoad.name}.vue`)\n );\n};\n\n//returned values from props\nconst { title, intentions, hideIcon, question, src } = toRefs(props);\n</script>\n\n<template>\n <EpEdu\n :title=\"title\"\n :type=\"type\"\n :hideIcon=\"hideIcon\"\n :icon=\"mdiHelpCircle\"\n :label-intentions=\"labelIntentions\"\n >\n <template #intentions v-if=\"renderText\">\n <div v-html=\"renderText\" />\n </template>\n <template #content>\n <div class=\"mt-5\">\n <EpImg\n v-if=\"src && before\"\n :src=\"src\"\n :alt=\"`Image soutien à la question`\"\n cols=\"5\"\n />\n <div v-html=\"useRenderText(question)\" class=\"my-6\" />\n <EpImg\n v-if=\"src && !before\"\n :src=\"src\"\n :alt=\"`Image soutien à la question`\"\n cols=\"5\"\n />\n\n <div class=\"mb-6\">\n <ol class=\"no-list\">\n <li v-for=\"(answer, i) in shuffleAnswers\" :key=\"answer.uid\">\n <EpRadio\n :label=\"`${typeList(i)}. ${answer.text}`\"\n v-model=\"userAnswer\"\n :value=\"answer.uid\"\n :disabled=\"answered\"\n type=\"primary\"\n ></EpRadio>\n </li>\n </ol>\n <EpAlert type=\"error\" outlined noIcon v-if=\"!valid\">\n {{ labelNoAnswer }}\n </EpAlert>\n </div>\n\n <div v-if=\"answered\" class=\"mb-2\">\n <EpAlert :type=\"response.type\" outlined>\n <div v-html=\"useRenderText(response.feedback)\" />\n </EpAlert>\n\n <div v-if=\"response.component\" class=\"my-2\">\n <component\n :is=\"getCompontent(response.component.type)\"\n v-bind=\"{ ...response.component.data }\"\n ></component>\n </div>\n </div>\n\n <EpBtn\n type=\"primary\"\n @click=\"checkAnswer\"\n :disabled=\"answered\"\n outlined\n extraClass=\"mr-2\"\n >{{ labelAnswerBtn }}</EpBtn\n >\n <EpBtn type=\"primary\" v-if=\"answered\" @click=\"reset\" outlined>{{\n labelTryAgainBtn\n }}</EpBtn>\n </div>\n </template>\n <!-- <template #actions>\n <EpBtn :color=\"type=='base'?'text-gray-700':'text-white'\" :type=\"type\">[Repair btn style... to change]</EpBtn>\n </template> -->\n </EpEdu>\n</template>\n"],"names":["_createBlock","EpEdu","_unref","type","labelIntentions","_createElementVNode","before","EpImg","_openBlock","_createElementBlock","_Fragment","_renderList","_createVNode","EpRadio","EpAlert","labelNoAnswer","_resolveDynamicComponent","_normalizeProps","_guardReactiveProps","EpBtn","labelAnswerBtn","labelTryAgainBtn"],"mappings":"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"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { defineComponent, ref, computed, createElementBlock, openBlock, createCommentVNode, createElementVNode, toDisplayString, Fragment, renderList, createVNode, createBlock } from "vue";
|
|
2
2
|
import _sfc_main$2 from "../basics/EpDivider.vue.js";
|
|
3
3
|
import _sfc_main$1 from "../forms/EpRadioSummative.vue2.js";
|
|
4
|
-
const _hoisted_1 = { class: "mt-4
|
|
4
|
+
const _hoisted_1 = { class: "mt-4 ep-surface-2 p-4" };
|
|
5
5
|
const _hoisted_2 = {
|
|
6
6
|
key: 0,
|
|
7
7
|
class: "text-xl font-semibold mb-6"
|
|
8
8
|
};
|
|
9
|
-
const _hoisted_3 = { class: "
|
|
9
|
+
const _hoisted_3 = { class: "py-2 rounded" };
|
|
10
10
|
const _hoisted_4 = { class: "flex flex-row flex-wrap gap-y-2 sm:gap-x-4" };
|
|
11
11
|
const _hoisted_5 = { class: "text-right pr-16" };
|
|
12
12
|
const _hoisted_6 = { class: "text-sm font-semibold uppercase" };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EpSummativeTable.vue.js","sources":["../../../src/components/interactions/EpSummativeTable.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { ref, computed } from \"vue\";\nimport EpDivider from \"~/components/basics/EpDivider.vue\";\nimport EpRadioSummative from \"~/components/forms/EpRadioSummative.vue\";\nimport type { EpSummativeTableProps } from \"~/types/interactions/EpSummativeTable\";\nconst totalValue = ref<number[]>([]);\n\nconst {\n title,\n questions,\n totalLabel = \"Total :\",\n} = defineProps<EpSummativeTableProps>();\n\nconst resultSummative = computed(() => {\n return totalValue.value.reduce(\n (total, currentvalue) => total + currentvalue,\n 0\n );\n});\n\n//cette function sera efface, en creant le nouveau editeur\nconst transformNumber = (value: string | number) => {\n const num = Number(value);\n if (isNaN(num)) {\n return 0;\n } else {\n return num;\n }\n};\n</script>\n\n<template>\n <div class=\"mt-4
|
|
1
|
+
{"version":3,"file":"EpSummativeTable.vue.js","sources":["../../../src/components/interactions/EpSummativeTable.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { ref, computed } from \"vue\";\nimport EpDivider from \"~/components/basics/EpDivider.vue\";\nimport EpRadioSummative from \"~/components/forms/EpRadioSummative.vue\";\nimport type { EpSummativeTableProps } from \"~/types/interactions/EpSummativeTable\";\nconst totalValue = ref<number[]>([]);\n\nconst {\n title,\n questions,\n totalLabel = \"Total :\",\n} = defineProps<EpSummativeTableProps>();\n\nconst resultSummative = computed(() => {\n return totalValue.value.reduce(\n (total, currentvalue) => total + currentvalue,\n 0\n );\n});\n\n//cette function sera efface, en creant le nouveau editeur\nconst transformNumber = (value: string | number) => {\n const num = Number(value);\n if (isNaN(num)) {\n return 0;\n } else {\n return num;\n }\n};\n</script>\n\n<template>\n <div class=\"mt-4 ep-surface-2 p-4\">\n <h4 v-if=\"title\" class=\"text-xl font-semibold mb-6\">{{ title }}</h4>\n <template v-for=\"(question, i) in questions\" :key=\"`item-question-${i}`\">\n <p class=\"py-2 rounded\">\n {{ question.label }}\n </p>\n <div class=\"flex flex-row flex-wrap gap-y-2 sm:gap-x-4\">\n <template\n v-for=\"(_option, j) in question.options\"\n :key=\"`option-question-${j}`\"\n >\n <EpRadioSummative\n :id=\"`option-${i}-${j}-${_option.uid}`\"\n :name=\"`option-${i}-${j}-${_option.uid}`\"\n :label=\"_option.label\"\n :value=\"transformNumber(_option.value)\"\n v-model=\"totalValue[i]\"\n >\n </EpRadioSummative>\n </template>\n </div>\n <EpDivider />\n </template>\n <div class=\"text-right pr-16\">\n <span class=\"text-sm font-semibold uppercase\"\n >{{ totalLabel }} {{ resultSummative }}</span\n >\n </div>\n </div>\n</template>\n"],"names":["_openBlock","_createElementBlock","title","_toDisplayString","_Fragment","_renderList","questions","_createElementVNode","_createBlock","EpRadioSummative","_createVNode","EpDivider","totalLabel"],"mappings":";;;;;;;;;;;;;;;;;;;;AAKA,UAAM,aAAa,IAAc,EAAE;AAQnC,UAAM,kBAAkB,SAAS,MAAM;AACrC,aAAO,WAAW,MAAM;AAAA,QACtB,CAAC,OAAO,iBAAiB,QAAQ;AAAA,QACjC;AAAA,MAAA;AAAA,IAEJ,CAAC;AAGD,UAAM,kBAAkB,CAAC,UAA2B;AAClD,YAAM,MAAM,OAAO,KAAK;AACxB,UAAI,MAAM,GAAG,GAAG;AACd,eAAO;AAAA,MACT,OAAO;AACL,eAAO;AAAA,MACT;AAAA,IACF;;AAIE,aAAAA,UAAA,GAAAC,mBA4BM,OA5BN,YA4BM;AAAA,QA3BMC,KAAAA,sBAAVD,mBAAoE,MAApE,YAAoEE,gBAAbD,KAAAA,KAAK,GAAA,CAAA;SAC5DF,UAAA,IAAA,GAAAC,mBAoBWG,UAAA,MAAAC,WApBuBC,KAAAA,WAAS,CAAzB,UAAU,MAAC;;kCAAuC,CAAC;AAAA,UAAA;YACnEC,mBAEI,KAFJ,YAEIJ,gBADC,SAAS,KAAK,GAAA,CAAA;AAAA,YAEnBI,mBAcM,OAdN,YAcM;AAAA,eAbJP,UAAA,IAAA,GAAAC,mBAYWG,2BAXc,SAAS,SAAO,CAA/B,SAAS,MAAC;oCAGlBI,YAOmBC,aAAA;AAAA,0CATM,CAAC;AAAA,kBAGvB,cAAc,CAAC,IAAI,CAAC,IAAI,QAAQ,GAAG;AAAA,kBACnC,gBAAgB,CAAC,IAAI,CAAC,IAAI,QAAQ,GAAG;AAAA,kBACrC,OAAO,QAAQ;AAAA,kBACf,OAAO,gBAAgB,QAAQ,KAAK;AAAA,kBAC5B,YAAA,WAAA,MAAW,CAAC;AAAA,kBAAZ,uBAAA,CAAA,WAAA,WAAA,MAAW,CAAC,IAAA;AAAA,gBAAA;;;YAK3BC,YAAaC,WAAA;AAAA,UAAA;;QAEfJ,mBAIM,OAJN,YAIM;AAAA,UAHJA,mBAEC,QAFD,YAECJ,gBADKS,eAAU,IAAG,sBAAI,gBAAA,KAAe,GAAA,CAAA;AAAA,QAAA;;;;;"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import _sfc_main from "./EpHierarchy.vue2.js";
|
|
2
2
|
/* empty css */
|
|
3
3
|
import _export_sfc from "../../_virtual/_plugin-vue_export-helper.js";
|
|
4
|
-
const Comp = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-
|
|
4
|
+
const Comp = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-819ce9ba"]]);
|
|
5
5
|
export {
|
|
6
6
|
Comp as default
|
|
7
7
|
};
|
|
@@ -19,7 +19,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
19
19
|
labelClose: { default: "fermer" },
|
|
20
20
|
isCluster: { type: Boolean, default: false },
|
|
21
21
|
colorPath: { default: "stroke-yellow-400" },
|
|
22
|
-
colorRect: { default: "fill-
|
|
22
|
+
colorRect: { default: "fill-red-400" }
|
|
23
23
|
},
|
|
24
24
|
setup(__props) {
|
|
25
25
|
const props = __props;
|
|
@@ -40,7 +40,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
40
40
|
currentNode.value = null;
|
|
41
41
|
};
|
|
42
42
|
const components = /* @__PURE__ */ Object.assign({
|
|
43
|
-
"../basics/EpAvatar.vue": () => import("../basics/EpAvatar.
|
|
43
|
+
"../basics/EpAvatar.vue": () => import("../basics/EpAvatar.vue.js"),
|
|
44
44
|
"../basics/EpBadge.vue": () => import("../basics/EpBadge.vue.js"),
|
|
45
45
|
"../basics/EpBtn.vue": () => import("../basics/EpBtn.vue2.js"),
|
|
46
46
|
"../basics/EpCard.vue": () => import("../basics/EpCard.vue2.js"),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EpHierarchy.vue2.js","sources":["../../../src/components/medias/EpHierarchy.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { ref, onMounted, computed, defineAsyncComponent } from \"vue\";\nimport {\n hierarchy,\n tree,\n cluster,\n type HierarchyPointLink,\n type HierarchyPointNode,\n} from \"d3-hierarchy\";\nimport * as d3 from \"d3-selection\";\nimport { linkVertical, linkHorizontal } from \"d3-shape\";\nimport * as d3Zoom from \"d3-zoom\";\nimport type { TreeNode } from \"~/types/Hierarchy\";\nimport type { NestedComponents } from \"~/types/Component\";\nimport { useComponent } from \"~/composables/useComponent\";\nimport EpModal from \"~/components/interactions/EpModal.vue\";\nimport EpBtn from \"~/components/basics/EpBtn.vue\";\nimport { useRenderText } from \"~/composables/useRenderText\";\nimport type { EpHierarchyProps } from \"~/types/medias/EpHierarchy\";\n\nconst props = withDefaults(defineProps<EpHierarchyProps>(), {\n labelClose: \"fermer\",\n maxWidth: 800,\n maxHeight: 600,\n isCluster: false,\n colorRect: \"fill-main-color-400\",\n colorPath: \"stroke-yellow-400\",\n});\n\nconst treeContainer = ref<HTMLDivElement | null>(null);\nconst treeWrapper = ref<HTMLDivElement | null>(null);\n\n/* control modal */\ntype ShowNode = {\n title: string;\n text?: string;\n component?: NestedComponents;\n};\n\nconst currentNode = ref<ShowNode | null>(null);\nconst showModal = ref(false);\n\nconst handleNodeClick = (node: TreeNode) => {\n currentNode.value = {\n title: node.name,\n text: node.text,\n component: node.component,\n };\n showModal.value = true;\n};\n\nconst closeModal = () => {\n showModal.value = false;\n currentNode.value = null;\n};\n//nested component\n\nconst components = import.meta.glob([\n \"./*.vue\", // all components in medias (same folder)\n \"../basics/*.vue\", // components/charts/\n \"../signages/*.vue\", // components/signages/\n]);\n\nconst currentRenderComponent = computed(() => {\n if (!currentNode.value || !currentNode.value.component) {\n return null;\n }\n\n const { path, name } = useComponent(currentNode.value.component.type);\n //console.log(path, name)\n let fullPath = \"\";\n if (path === \"medias\") {\n fullPath = `./${name}.vue`;\n } else {\n fullPath = `../${path}/${name}.vue`;\n }\n //console.log(fullPath)\n const loader = components[fullPath] as\n | (() => Promise<{ default: NestedComponents }>)\n | undefined;\n\n if (!loader) {\n console.warn(`Component not found: ${fullPath}`);\n return null; // or defineAsyncComponent(() => import('../fallbacks/EpNothing.vue'))\n }\n\n return defineAsyncComponent(loader);\n});\n\nonMounted(() => {\n if (!treeContainer.value) return;\n\n if (props.isCluster) {\n clusterView();\n } else {\n treeView();\n }\n});\n\nconst treeView = () => {\n const rectW = 130;\n const rectH = 40;\n const margin = { top: 40, right: 40, bottom: 40, left: 40 };\n\n const root = hierarchy<TreeNode>(props.nodes);\n //const totalLeafCount = root.leaves().length\n const width = Math.max(props.maxWidth);\n const height = props.maxHeight;\n\n const treeLayout = tree<TreeNode>().nodeSize([170, 100]); // [x spacing, y spacing]\n\n const treeData = treeLayout(root);\n\n const svg = d3\n .select(treeContainer.value)\n .append(\"svg\")\n .attr(\"width\", width)\n .attr(\"height\", height);\n\n const g = svg\n .append(\"g\")\n .attr(\"transform\", `translate(${margin.left}, ${margin.top})`);\n\n const zoom = d3Zoom\n .zoom<SVGSVGElement, unknown>()\n .scaleExtent([0.5, 2])\n .on(\"zoom\", (event) => {\n g.attr(\"transform\", event.transform);\n });\n\n svg.call(zoom);\n\n const centerX = width / 2 - treeData.x;\n const centerY = 30; //height / 2 - treeData.y\n const identity = (d3Zoom as any).zoomIdentity;\n svg.call(zoom.transform, identity.translate(centerX, centerY));\n\n // Links\n const linkPath = linkVertical<\n HierarchyPointLink<TreeNode>,\n HierarchyPointNode<TreeNode>\n >()\n .x((d) => d.x)\n .y((d) => d.y);\n\n g.selectAll(\"path.link\")\n .data(treeData.links())\n .enter()\n .append(\"path\")\n .attr(\"d\", (d) => linkPath(d))\n .attr(\"class\", (d) => {\n const link = d.target.data.active\n ? `${props.colorPath} stroke-2`\n : \"stroke-black dark:stroke-white\";\n return `${link} link fill-none`;\n });\n\n // Nodes\n const node = g\n .selectAll(\"g.node\")\n .data(treeData.descendants())\n .enter()\n .append(\"g\")\n .attr(\"class\", \"node\")\n .attr(\"transform\", (d) => `translate(${d.x}, ${d.y})`)\n .style(\"cursor\", (d) =>\n d.data.component || d.data.text ? \"pointer\" : \"default\"\n )\n .each(function (d) {\n if (d.data.component || d.data.text) {\n d3.select(this).on(\"click\", (_event) => handleNodeClick(d.data));\n }\n });\n //.style('cursor', 'pointer')\n //.on('click', (_event, d) => handleNodeClick(d.data))\n\n node.each(function (d) {\n const group = d3.select(this);\n\n // Append text temporarily\n const text = group\n .append(\"text\")\n .attr(\"class\", \"text-sm font-semibold fill-black dark:fill-white\")\n .attr(\"text-anchor\", \"middle\")\n .attr(\"x\", 0)\n .attr(\"y\", 0)\n .attr(\"dy\", \".35em\")\n .text(d.data.name);\n\n // Get bounding box to determine text size\n const bbox = (text.node() as SVGTextElement).getBBox();\n const paddingX = 10;\n const paddingY = 10;\n\n const width = bbox.width + paddingX * 2;\n const height = bbox.height + paddingY * 2;\n\n // Draw rect using text size\n group\n .insert(\"rect\", \"text\")\n .attr(\"class\", props.colorRect)\n .attr(\"x\", -width / 2)\n .attr(\"y\", -height / 2)\n .attr(\"width\", width)\n .attr(\"height\", height)\n .attr(\"rx\", 4)\n .attr(\"ry\", 4);\n });\n\n node\n .append(\"text\")\n .attr(\"x\", 0)\n .attr(\"y\", 0)\n .attr(\"dy\", \".35em\")\n .attr(\"class\", \"text-sm font-semibold fill-white dark:fill-black\")\n .attr(\"text-anchor\", \"middle\")\n .text((d) => d.data.name)\n .style(\"pointer-events\", \"none\");\n};\n\nconst clusterView = () => {\n const rectW = 130;\n const rectH = 40;\n const margin = { top: 40, right: 40, bottom: 40, left: 40 };\n\n const root = hierarchy<TreeNode>(props.nodes);\n //const totalLeafCount = root.leaves().length\n const width = Math.max(props.maxWidth);\n const height = props.maxHeight;\n\n const treeLayout = cluster<TreeNode>().nodeSize([130, 130]); // [x spacing, y spacing]\n\n const treeData = treeLayout(root);\n\n const svg = d3\n .select(treeContainer.value)\n .append(\"svg\")\n .attr(\"width\", width)\n .attr(\"height\", height);\n\n const g = svg\n .append(\"g\")\n .attr(\"transform\", `translate(${margin.left}, ${margin.top})`);\n\n const zoom = d3Zoom\n .zoom<SVGSVGElement, unknown>()\n .scaleExtent([0.1, 4])\n .on(\"zoom\", (event) => {\n g.attr(\"transform\", event.transform);\n });\n\n svg.call(zoom);\n\n const centerX = 30;\n const centerY = height / 2 - treeData.x;\n const identity = (d3Zoom as any).zoomIdentity;\n svg.call(zoom.transform, identity.translate(centerX, centerY));\n\n // Links\n const linkPath = linkHorizontal<\n HierarchyPointLink<TreeNode>,\n HierarchyPointNode<TreeNode>\n >()\n .x((d) => d.y)\n .y((d) => d.x);\n\n g.selectAll(\"path.link\")\n .data(treeData.links())\n .enter()\n .append(\"path\")\n .attr(\"d\", (d) => linkPath(d))\n .attr(\"class\", (d) => {\n const link = d.target.data.active\n ? `${props.colorPath} stroke-2`\n : \"stroke-black dark:stroke-white\";\n return `${link} link fill-none`;\n });\n\n // Nodes\n const node = g\n .selectAll(\"g.node\")\n .data(treeData.descendants())\n .enter()\n .append(\"g\")\n .attr(\"class\", \"node\")\n .attr(\"transform\", (d) => `translate(${d.y}, ${d.x})`)\n .style(\"cursor\", (d) =>\n d.data.component || d.data.text ? \"pointer\" : \"default\"\n )\n .each(function (d) {\n if (d.data.component || d.data.text) {\n d3.select(this).on(\"click\", (_event) => handleNodeClick(d.data));\n }\n });\n //.style('cursor', 'pointer')\n //.on('click', (_event, d) => handleNodeClick(d.data))\n\n node.each(function (d) {\n const group = d3.select(this);\n\n // Append text temporarily\n const text = group\n .append(\"text\")\n .attr(\"class\", \"text-sm font-semibold fill-black dark:fill-white\")\n .attr(\"text-anchor\", \"middle\")\n .attr(\"x\", 0)\n .attr(\"y\", 0)\n .attr(\"dy\", \".35em\")\n .text(d.data.name);\n\n // Get bounding box to determine text size\n const bbox = (text.node() as SVGTextElement).getBBox();\n const paddingX = 10;\n const paddingY = 10;\n\n const width = bbox.width + paddingX * 2;\n const height = bbox.height + paddingY * 2;\n\n // Draw rect using text size\n group\n .insert(\"rect\", \"text\")\n .attr(\"class\", props.colorRect)\n .attr(\"x\", -width / 2)\n .attr(\"y\", -height / 2)\n .attr(\"width\", width)\n .attr(\"height\", height)\n .attr(\"rx\", 4)\n .attr(\"ry\", 4);\n });\n\n node\n .append(\"text\")\n .attr(\"x\", 0)\n .attr(\"y\", 0)\n .attr(\"dy\", \".35em\")\n .attr(\"class\", \"text-sm font-semibold fill-white dark:fill-black\")\n .attr(\"text-anchor\", \"middle\")\n .text((d) => d.data.name)\n .style(\"pointer-events\", \"none\");\n};\n\nconst maxW = computed(() => {\n return `${props.maxWidth.toString()}px`;\n});\n\nconst maxH = computed(() => {\n return `${props.maxWidth.toString()}px`;\n});\n</script>\n\n<template>\n <div>\n <div\n ref=\"treeWrapper\"\n class=\"ep-tree-wrapper mx-auto\"\n :style=\"{ maxHeight: maxH, maxWidth: maxW }\"\n >\n <div ref=\"treeContainer\" class=\"ep-tree-container\" />\n </div>\n <EpModal v-model=\"showModal\" :title=\"currentNode.title\" v-if=\"currentNode\">\n <div v-if=\"currentNode.text\" v-html=\"useRenderText(currentNode.text)\" />\n <template v-if=\"currentRenderComponent && currentNode.component\">\n <component\n :is=\"currentRenderComponent\"\n v-bind=\"{ ...currentNode.component.data }\"\n />\n </template>\n <div class=\"flex justify-end\">\n <EpBtn @click=\"closeModal\" type=\"error\" outlined rounded>{{\n labelClose\n }}</EpBtn>\n </div>\n </EpModal>\n </div>\n</template>\n\n<style scoped>\n.ep-tree-wrapper {\n overflow: auto;\n border: 1px solid #ddd;\n}\n\n.ep-tree-container {\n width: 100%;\n overflow-x: auto;\n}\n</style>\n"],"names":["width","height","_createElementBlock","_createElementVNode","_normalizeStyle","_createBlock","EpModal","_unref","_openBlock","_resolveDynamicComponent","_normalizeProps","_mergeProps","_createVNode","EpBtn","labelClose"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"EpHierarchy.vue2.js","sources":["../../../src/components/medias/EpHierarchy.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { ref, onMounted, computed, defineAsyncComponent } from \"vue\";\nimport {\n hierarchy,\n tree,\n cluster,\n type HierarchyPointLink,\n type HierarchyPointNode,\n} from \"d3-hierarchy\";\nimport * as d3 from \"d3-selection\";\nimport { linkVertical, linkHorizontal } from \"d3-shape\";\nimport * as d3Zoom from \"d3-zoom\";\nimport type { TreeNode } from \"~/types/Hierarchy\";\nimport type { NestedComponents } from \"~/types/Component\";\nimport { useComponent } from \"~/composables/useComponent\";\nimport EpModal from \"~/components/interactions/EpModal.vue\";\nimport EpBtn from \"~/components/basics/EpBtn.vue\";\nimport { useRenderText } from \"~/composables/useRenderText\";\nimport type { EpHierarchyProps } from \"~/types/medias/EpHierarchy\";\n\nconst props = withDefaults(defineProps<EpHierarchyProps>(), {\n labelClose: \"fermer\",\n maxWidth: 800,\n maxHeight: 600,\n isCluster: false,\n colorRect: \"fill-red-400\",\n colorPath: \"stroke-yellow-400\",\n});\n\nconst treeContainer = ref<HTMLDivElement | null>(null);\nconst treeWrapper = ref<HTMLDivElement | null>(null);\n\n/* control modal */\ntype ShowNode = {\n title: string;\n text?: string;\n component?: NestedComponents;\n};\n\nconst currentNode = ref<ShowNode | null>(null);\nconst showModal = ref(false);\n\nconst handleNodeClick = (node: TreeNode) => {\n currentNode.value = {\n title: node.name,\n text: node.text,\n component: node.component,\n };\n showModal.value = true;\n};\n\nconst closeModal = () => {\n showModal.value = false;\n currentNode.value = null;\n};\n//nested component\n\nconst components = import.meta.glob([\n \"./*.vue\", // all components in medias (same folder)\n \"../basics/*.vue\", // components/charts/\n \"../signages/*.vue\", // components/signages/\n]);\n\nconst currentRenderComponent = computed(() => {\n if (!currentNode.value || !currentNode.value.component) {\n return null;\n }\n\n const { path, name } = useComponent(currentNode.value.component.type);\n //console.log(path, name)\n let fullPath = \"\";\n if (path === \"medias\") {\n fullPath = `./${name}.vue`;\n } else {\n fullPath = `../${path}/${name}.vue`;\n }\n //console.log(fullPath)\n const loader = components[fullPath] as\n | (() => Promise<{ default: NestedComponents }>)\n | undefined;\n\n if (!loader) {\n console.warn(`Component not found: ${fullPath}`);\n return null; // or defineAsyncComponent(() => import('../fallbacks/EpNothing.vue'))\n }\n\n return defineAsyncComponent(loader);\n});\n\nonMounted(() => {\n if (!treeContainer.value) return;\n\n if (props.isCluster) {\n clusterView();\n } else {\n treeView();\n }\n});\n\nconst treeView = () => {\n const rectW = 130;\n const rectH = 40;\n const margin = { top: 40, right: 40, bottom: 40, left: 40 };\n\n const root = hierarchy<TreeNode>(props.nodes);\n //const totalLeafCount = root.leaves().length\n const width = Math.max(props.maxWidth);\n const height = props.maxHeight;\n\n const treeLayout = tree<TreeNode>().nodeSize([170, 100]); // [x spacing, y spacing]\n\n const treeData = treeLayout(root);\n\n const svg = d3\n .select(treeContainer.value)\n .append(\"svg\")\n .attr(\"width\", width)\n .attr(\"height\", height);\n\n const g = svg\n .append(\"g\")\n .attr(\"transform\", `translate(${margin.left}, ${margin.top})`);\n\n const zoom = d3Zoom\n .zoom<SVGSVGElement, unknown>()\n .scaleExtent([0.5, 2])\n .on(\"zoom\", (event) => {\n g.attr(\"transform\", event.transform);\n });\n\n svg.call(zoom);\n\n const centerX = width / 2 - treeData.x;\n const centerY = 30; //height / 2 - treeData.y\n const identity = (d3Zoom as any).zoomIdentity;\n svg.call(zoom.transform, identity.translate(centerX, centerY));\n\n // Links\n const linkPath = linkVertical<\n HierarchyPointLink<TreeNode>,\n HierarchyPointNode<TreeNode>\n >()\n .x((d) => d.x)\n .y((d) => d.y);\n\n g.selectAll(\"path.link\")\n .data(treeData.links())\n .enter()\n .append(\"path\")\n .attr(\"d\", (d) => linkPath(d))\n .attr(\"class\", (d) => {\n const link = d.target.data.active\n ? `${props.colorPath} stroke-2`\n : \"stroke-black dark:stroke-white\";\n return `${link} link fill-none`;\n });\n\n // Nodes\n const node = g\n .selectAll(\"g.node\")\n .data(treeData.descendants())\n .enter()\n .append(\"g\")\n .attr(\"class\", \"node\")\n .attr(\"transform\", (d) => `translate(${d.x}, ${d.y})`)\n .style(\"cursor\", (d) =>\n d.data.component || d.data.text ? \"pointer\" : \"default\"\n )\n .each(function (d) {\n if (d.data.component || d.data.text) {\n d3.select(this).on(\"click\", (_event) => handleNodeClick(d.data));\n }\n });\n //.style('cursor', 'pointer')\n //.on('click', (_event, d) => handleNodeClick(d.data))\n\n node.each(function (d) {\n const group = d3.select(this);\n\n // Append text temporarily\n const text = group\n .append(\"text\")\n .attr(\"class\", \"text-sm font-semibold fill-black dark:fill-white\")\n .attr(\"text-anchor\", \"middle\")\n .attr(\"x\", 0)\n .attr(\"y\", 0)\n .attr(\"dy\", \".35em\")\n .text(d.data.name);\n\n // Get bounding box to determine text size\n const bbox = (text.node() as SVGTextElement).getBBox();\n const paddingX = 10;\n const paddingY = 10;\n\n const width = bbox.width + paddingX * 2;\n const height = bbox.height + paddingY * 2;\n\n // Draw rect using text size\n group\n .insert(\"rect\", \"text\")\n .attr(\"class\", props.colorRect)\n .attr(\"x\", -width / 2)\n .attr(\"y\", -height / 2)\n .attr(\"width\", width)\n .attr(\"height\", height)\n .attr(\"rx\", 4)\n .attr(\"ry\", 4);\n });\n\n node\n .append(\"text\")\n .attr(\"x\", 0)\n .attr(\"y\", 0)\n .attr(\"dy\", \".35em\")\n .attr(\"class\", \"text-sm font-semibold fill-white dark:fill-black\")\n .attr(\"text-anchor\", \"middle\")\n .text((d) => d.data.name)\n .style(\"pointer-events\", \"none\");\n};\n\nconst clusterView = () => {\n const rectW = 130;\n const rectH = 40;\n const margin = { top: 40, right: 40, bottom: 40, left: 40 };\n\n const root = hierarchy<TreeNode>(props.nodes);\n //const totalLeafCount = root.leaves().length\n const width = Math.max(props.maxWidth);\n const height = props.maxHeight;\n\n const treeLayout = cluster<TreeNode>().nodeSize([130, 130]); // [x spacing, y spacing]\n\n const treeData = treeLayout(root);\n\n const svg = d3\n .select(treeContainer.value)\n .append(\"svg\")\n .attr(\"width\", width)\n .attr(\"height\", height);\n\n const g = svg\n .append(\"g\")\n .attr(\"transform\", `translate(${margin.left}, ${margin.top})`);\n\n const zoom = d3Zoom\n .zoom<SVGSVGElement, unknown>()\n .scaleExtent([0.1, 4])\n .on(\"zoom\", (event) => {\n g.attr(\"transform\", event.transform);\n });\n\n svg.call(zoom);\n\n const centerX = 30;\n const centerY = height / 2 - treeData.x;\n const identity = (d3Zoom as any).zoomIdentity;\n svg.call(zoom.transform, identity.translate(centerX, centerY));\n\n // Links\n const linkPath = linkHorizontal<\n HierarchyPointLink<TreeNode>,\n HierarchyPointNode<TreeNode>\n >()\n .x((d) => d.y)\n .y((d) => d.x);\n\n g.selectAll(\"path.link\")\n .data(treeData.links())\n .enter()\n .append(\"path\")\n .attr(\"d\", (d) => linkPath(d))\n .attr(\"class\", (d) => {\n const link = d.target.data.active\n ? `${props.colorPath} stroke-2`\n : \"stroke-black dark:stroke-white\";\n return `${link} link fill-none`;\n });\n\n // Nodes\n const node = g\n .selectAll(\"g.node\")\n .data(treeData.descendants())\n .enter()\n .append(\"g\")\n .attr(\"class\", \"node\")\n .attr(\"transform\", (d) => `translate(${d.y}, ${d.x})`)\n .style(\"cursor\", (d) =>\n d.data.component || d.data.text ? \"pointer\" : \"default\"\n )\n .each(function (d) {\n if (d.data.component || d.data.text) {\n d3.select(this).on(\"click\", (_event) => handleNodeClick(d.data));\n }\n });\n //.style('cursor', 'pointer')\n //.on('click', (_event, d) => handleNodeClick(d.data))\n\n node.each(function (d) {\n const group = d3.select(this);\n\n // Append text temporarily\n const text = group\n .append(\"text\")\n .attr(\"class\", \"text-sm font-semibold fill-black dark:fill-white\")\n .attr(\"text-anchor\", \"middle\")\n .attr(\"x\", 0)\n .attr(\"y\", 0)\n .attr(\"dy\", \".35em\")\n .text(d.data.name);\n\n // Get bounding box to determine text size\n const bbox = (text.node() as SVGTextElement).getBBox();\n const paddingX = 10;\n const paddingY = 10;\n\n const width = bbox.width + paddingX * 2;\n const height = bbox.height + paddingY * 2;\n\n // Draw rect using text size\n group\n .insert(\"rect\", \"text\")\n .attr(\"class\", props.colorRect)\n .attr(\"x\", -width / 2)\n .attr(\"y\", -height / 2)\n .attr(\"width\", width)\n .attr(\"height\", height)\n .attr(\"rx\", 4)\n .attr(\"ry\", 4);\n });\n\n node\n .append(\"text\")\n .attr(\"x\", 0)\n .attr(\"y\", 0)\n .attr(\"dy\", \".35em\")\n .attr(\"class\", \"text-sm font-semibold fill-white dark:fill-black\")\n .attr(\"text-anchor\", \"middle\")\n .text((d) => d.data.name)\n .style(\"pointer-events\", \"none\");\n};\n\nconst maxW = computed(() => {\n return `${props.maxWidth.toString()}px`;\n});\n\nconst maxH = computed(() => {\n return `${props.maxWidth.toString()}px`;\n});\n</script>\n\n<template>\n <div>\n <div\n ref=\"treeWrapper\"\n class=\"ep-tree-wrapper mx-auto\"\n :style=\"{ maxHeight: maxH, maxWidth: maxW }\"\n >\n <div ref=\"treeContainer\" class=\"ep-tree-container\" />\n </div>\n <EpModal v-model=\"showModal\" :title=\"currentNode.title\" v-if=\"currentNode\">\n <div v-if=\"currentNode.text\" v-html=\"useRenderText(currentNode.text)\" />\n <template v-if=\"currentRenderComponent && currentNode.component\">\n <component\n :is=\"currentRenderComponent\"\n v-bind=\"{ ...currentNode.component.data }\"\n />\n </template>\n <div class=\"flex justify-end\">\n <EpBtn @click=\"closeModal\" type=\"error\" outlined rounded>{{\n labelClose\n }}</EpBtn>\n </div>\n </EpModal>\n </div>\n</template>\n\n<style scoped>\n.ep-tree-wrapper {\n overflow: auto;\n border: 1px solid #ddd;\n}\n\n.ep-tree-container {\n width: 100%;\n overflow-x: auto;\n}\n</style>\n"],"names":["width","height","_createElementBlock","_createElementVNode","_normalizeStyle","_createBlock","EpModal","_unref","_openBlock","_resolveDynamicComponent","_normalizeProps","_mergeProps","_createVNode","EpBtn","labelClose"],"mappings":"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"}
|
|
@@ -6,7 +6,7 @@ import _sfc_main$1 from "../educationals/EpEdu.vue.js";
|
|
|
6
6
|
import { useRenderText } from "../../composables/useRenderText.js";
|
|
7
7
|
import { mdiLaptop, mdiOpenInNew } from "@mdi/js";
|
|
8
8
|
const _hoisted_1 = ["innerHTML"];
|
|
9
|
-
const _hoisted_2 = { class: "flex flex-col items-center border rounded-lg
|
|
9
|
+
const _hoisted_2 = { class: "flex flex-col items-center border rounded-lg ep-surface-2 md:flex-row mt-2" };
|
|
10
10
|
const _hoisted_3 = ["src", "alt"];
|
|
11
11
|
const _hoisted_4 = {
|
|
12
12
|
key: 1,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EpSoftware.vue.js","sources":["../../../src/components/medias/EpSoftware.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { toRefs, computed } from \"vue\";\nimport EpIcon from \"~/components/basics/EpIcon.vue\";\nimport EpBtn from \"~/components/basics/EpBtn.vue\";\nimport EpChip from \"~/components/basics/EpChip.vue\";\nimport EpEdu from \"~/components/educationals/EpEdu.vue\";\nimport { useRenderText } from \"~/composables/useRenderText\";\nimport { mdiLaptop } from \"@mdi/js\";\nimport { mdiOpenInNew } from \"@mdi/js\";\nimport type { EpSoftwareProps } from \"~/types/medias/EpSoftware\";\n\nconst props = withDefaults(defineProps<EpSoftwareProps>(), {\n icon: \"mdiLaptop\",\n hideCover: false,\n intentions: \"\",\n cover: \"\",\n type: \"base\",\n hideIcon: false,\n labelAccess: \"Accéder au logiciel\",\n});\n\nconst old_image =\n \"https://live.staticflickr.com/4868/45940268562_c5f7fdd06b_q.jpg\";\n\nconst hasCover = computed(() => {\n if (props.cover === old_image || props.cover.trim().length === 0) {\n return false;\n }\n return true;\n});\n\nconst {\n title,\n intentions,\n cover,\n hideCover,\n version,\n labelCard,\n hideIcon,\n mandateLevel,\n url,\n} = toRefs(props);\n</script>\n\n<template>\n <EpEdu\n :title=\"labelCard\"\n :labelIntentions=\"labelIntentions\"\n :icon=\"mdiLaptop\"\n flat\n :type=\"type\"\n :hideIcon=\"hideIcon\"\n :mandateLevel=\"mandateLevel\"\n >\n <template #intentions v-if=\"intentions\">\n <div v-html=\"useRenderText(intentions)\" />\n </template>\n <template #content>\n <div\n class=\"flex flex-col items-center border rounded-lg
|
|
1
|
+
{"version":3,"file":"EpSoftware.vue.js","sources":["../../../src/components/medias/EpSoftware.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { toRefs, computed } from \"vue\";\nimport EpIcon from \"~/components/basics/EpIcon.vue\";\nimport EpBtn from \"~/components/basics/EpBtn.vue\";\nimport EpChip from \"~/components/basics/EpChip.vue\";\nimport EpEdu from \"~/components/educationals/EpEdu.vue\";\nimport { useRenderText } from \"~/composables/useRenderText\";\nimport { mdiLaptop } from \"@mdi/js\";\nimport { mdiOpenInNew } from \"@mdi/js\";\nimport type { EpSoftwareProps } from \"~/types/medias/EpSoftware\";\n\nconst props = withDefaults(defineProps<EpSoftwareProps>(), {\n icon: \"mdiLaptop\",\n hideCover: false,\n intentions: \"\",\n cover: \"\",\n type: \"base\",\n hideIcon: false,\n labelAccess: \"Accéder au logiciel\",\n});\n\nconst old_image =\n \"https://live.staticflickr.com/4868/45940268562_c5f7fdd06b_q.jpg\";\n\nconst hasCover = computed(() => {\n if (props.cover === old_image || props.cover.trim().length === 0) {\n return false;\n }\n return true;\n});\n\nconst {\n title,\n intentions,\n cover,\n hideCover,\n version,\n labelCard,\n hideIcon,\n mandateLevel,\n url,\n} = toRefs(props);\n</script>\n\n<template>\n <EpEdu\n :title=\"labelCard\"\n :labelIntentions=\"labelIntentions\"\n :icon=\"mdiLaptop\"\n flat\n :type=\"type\"\n :hideIcon=\"hideIcon\"\n :mandateLevel=\"mandateLevel\"\n >\n <template #intentions v-if=\"intentions\">\n <div v-html=\"useRenderText(intentions)\" />\n </template>\n <template #content>\n <div\n class=\"flex flex-col items-center border rounded-lg ep-surface-2 md:flex-row mt-2\"\n >\n <template v-if=\"!hideCover\">\n <img\n v-if=\"hasCover\"\n class=\"h-24 w-full rounded-t-lg object-cover md:h-auto md:w-24 md:rounded-none md:rounded-l-lg\"\n :src=\"cover\"\n :alt=\"`image de la lecture ${title}`\"\n />\n <div\n v-else\n class=\"h-96 w-full rounded-t-lg md:h-auto md:w-56 md:rounded-none md:rounded-l-lg flex justify-center items-center text-base-dark dark:text-white\"\n >\n <EpIcon :icon-path=\"mdiLaptop\" size=\"95\" />\n </div>\n </template>\n <div class=\"w-full\">\n <div class=\"w-full px-5\">\n <div class=\"flex justify-between items-center rounded-t-md p-2\">\n <h4>\n {{ title }}\n <EpChip size=\"small\" type=\"primary\" v-if=\"version\">{{\n version\n }}</EpChip>\n </h4>\n <EpBtn\n v-if=\"url\"\n rounded\n type=\"primary\"\n :prependIcon=\"mdiOpenInNew\"\n :href=\"url\"\n >{{ labelAccess }}</EpBtn\n >\n </div>\n </div>\n </div>\n </div>\n </template>\n <template #actions></template>\n </EpEdu>\n</template>\n"],"names":["_createBlock","EpEdu","_unref","labelIntentions","type","_createElementVNode","_createElementBlock","_Fragment","_openBlock","_createVNode","EpIcon","_createTextVNode","_toDisplayString","EpChip","EpBtn","labelAccess"],"mappings":";;;;;;;;;;;;;;;;;AAqBA,MAAM,YACJ;;;;;;;;;;;;;;;;;;AAXF,UAAM,QAAQ;AAad,UAAM,WAAW,SAAS,MAAM;AAC9B,UAAI,MAAM,UAAU,aAAa,MAAM,MAAM,KAAA,EAAO,WAAW,GAAG;AAChE,eAAO;AAAA,MACT;AACA,aAAO;AAAA,IACT,CAAC;AAED,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA,IACE,OAAO,KAAK;;0BAIdA,YAqDQC,aAAA;AAAA,QApDL,OAAOC,MAAA,SAAA;AAAA,QACP,iBAAiBC,KAAAA;AAAAA,QACjB,MAAMD,MAAA,SAAA;AAAA,QACP,MAAA;AAAA,QACC,MAAME,KAAAA;AAAAA,QACN,UAAUF,MAAA,QAAA;AAAA,QACV,cAAcA,MAAA,YAAA;AAAA,MAAA;QAKJ,iBACT,MAqCM;AAAA,UArCNG,mBAqCM,OArCN,YAqCM;AAAA,aAlCaH,MAAA,SAAA,kBAAjBI,mBAaWC,UAAA,EAAA,KAAA,KAAA;AAAA,cAXD,SAAA,sBADRD,mBAKE,OAAA;AAAA;gBAHA,OAAM;AAAA,gBACL,KAAKJ,MAAA,KAAA;AAAA,gBACL,4BAA4BA,MAAA,KAAA,CAAK;AAAA,cAAA,4BAEpCM,UAAA,GAAAF,mBAKM,OALN,YAKM;AAAA,gBADJG,YAA2CC,aAAA;AAAA,kBAAlC,aAAWR,MAAA,SAAA;AAAA,kBAAW,MAAK;AAAA,gBAAA;;;YAGxCG,mBAmBM,OAnBN,YAmBM;AAAA,cAlBJA,mBAiBM,OAjBN,YAiBM;AAAA,gBAhBJA,mBAeM,OAfN,YAeM;AAAA,kBAdJA,mBAKK,MAAA,MAAA;AAAA,oBAJAM,gBAAAC,gBAAAV,MAAA,KAAA,CAAK,IAAG,KACX,CAAA;AAAA,oBAA0CA,MAAA,OAAA,kBAA1CF,YAEWa,aAAA;AAAA;sBAFH,MAAK;AAAA,sBAAQ,MAAK;AAAA,oBAAA;uCAAyB,MAEjD;AAAA,wDADAX,MAAA,OAAA,CAAO,GAAA,CAAA;AAAA,sBAAA;;;;kBAIHA,MAAA,GAAA,kBADRF,YAOCc,aAAA;AAAA;oBALC,SAAA;AAAA,oBACA,MAAK;AAAA,oBACJ,aAAaZ,MAAA,YAAA;AAAA,oBACb,MAAMA,MAAA,GAAA;AAAA,kBAAA;qCACN,MAAiB;AAAA,sDAAda,KAAAA,WAAW,GAAA,CAAA;AAAA,oBAAA;;;;;;;;QAOhB,iBAAX,MAA8B,EAAA;AAAA;;QA3CFb,MAAA,UAAA;gBAAjB;AAAA,sBACT,MAA0C;AAAA,YAA1CG,mBAA0C,OAAA;AAAA,cAArC,WAAQH,MAAA,aAAA,EAAcA,MAAA,UAAA,CAAU;AAAA,YAAA;;;;;;;;"}
|
|
@@ -7,7 +7,7 @@ import _sfc_main$2 from "../interactions/EpModal.vue.js";
|
|
|
7
7
|
/* empty css */
|
|
8
8
|
import _sfc_main$3 from "../basics/EpDivider.vue.js";
|
|
9
9
|
import _sfc_main$5 from "../basics/EpBtn.vue.js";
|
|
10
|
-
const _hoisted_1 = { class: "relative
|
|
10
|
+
const _hoisted_1 = { class: "relative" };
|
|
11
11
|
const _hoisted_2 = { class: "mb-2 flex items-center justify-between" };
|
|
12
12
|
const _hoisted_3 = { class: "font-bold text-2xl" };
|
|
13
13
|
const _hoisted_4 = { class: "text-sm font-light text-error italic" };
|
|
@@ -16,7 +16,7 @@ const _hoisted_5 = {
|
|
|
16
16
|
class: "text-xs"
|
|
17
17
|
};
|
|
18
18
|
const _hoisted_6 = { class: "mb-4 flex items-center justify-between" };
|
|
19
|
-
const _hoisted_7 = { class: "text-primary font-bold" };
|
|
19
|
+
const _hoisted_7 = { class: "ep-text-primary font-bold" };
|
|
20
20
|
const _hoisted_8 = {
|
|
21
21
|
key: 0,
|
|
22
22
|
class: "text-xs"
|
|
@@ -97,9 +97,9 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
97
97
|
return openBlock(), createElementBlock(Fragment, null, [
|
|
98
98
|
createElementVNode("span", {
|
|
99
99
|
onClick: toggleModal,
|
|
100
|
-
class: "cursor-pointer
|
|
100
|
+
class: "cursor-pointer ep-surface-2 ring-1 ep-ring-primary ring-inset ep-hover-bg-primary ep-btn-text-primary-outline ep-hover-btn-text-primary-outline px-2 py-1 m-1 rounded group overflow-hidden relative"
|
|
101
101
|
}, [
|
|
102
|
-
_cache[2] || (_cache[2] = createElementVNode("span", { class: "absolute top-0 left-0 flex w-full h-0 mb-0 transition-all duration-300 ease-out transform translate-y-0
|
|
102
|
+
_cache[2] || (_cache[2] = createElementVNode("span", { class: "absolute top-0 left-0 flex w-full h-0 mb-0 transition-all duration-300 ease-out transform translate-y-0 group-hover:h-full opacity-90" }, null, -1)),
|
|
103
103
|
createElementVNode("span", _hoisted_1, [
|
|
104
104
|
createTextVNode(toDisplayString(_ctx.word) + " ", 1),
|
|
105
105
|
createVNode(_sfc_main$1, {
|