ep-lib-ts 1.0.68 → 1.0.69
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.vue2.js +2 -1
- package/dist/components/basics/EpAvatar.vue2.js.map +1 -1
- package/dist/components/basics/EpCard.vue.js +4 -4
- package/dist/components/basics/EpCard.vue.js.map +1 -1
- package/dist/components/basics/EpDivider.vue.js +4 -3
- package/dist/components/basics/EpDivider.vue.js.map +1 -1
- package/dist/components/basics/EpHoverCard.vue.js +2 -2
- package/dist/components/basics/EpHoverCard.vue.js.map +1 -1
- package/dist/components/basics/EpImg.vue.js +1 -1
- package/dist/components/basics/EpImg.vue.js.map +1 -1
- package/dist/components/basics/EpStackedList.vue.js +2 -2
- package/dist/components/basics/EpStackedList.vue.js.map +1 -1
- package/dist/components/basics/EpTable.vue.js +1 -1
- 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 +1 -1
- package/dist/components/educationals/EpEdu.vue.js.map +1 -1
- package/dist/components/educationals/EpInstructions.vue.js +6 -1
- package/dist/components/educationals/EpInstructions.vue.js.map +1 -1
- package/dist/components/educationals/EpReading.vue.js +1 -1
- 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 +40 -19
- package/dist/components/educationals/EpSpecificObjective.vue.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 +3 -3
- 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 +1 -1
- package/dist/components/interactions/EpSummativeTable.vue.js.map +1 -1
- package/dist/components/medias/EpAudio.vue.js +1 -1
- package/dist/components/medias/EpCarousel.vue.js +2 -2
- package/dist/components/medias/EpCarousel.vue.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 +2 -2
- package/dist/components/medias/EpTerm.vue.js.map +1 -1
- package/dist/components/medias/EpWordDef.vue.js +1 -1
- package/dist/components/medias/EpWordDef.vue.js.map +1 -1
- package/dist/components/signages/EpHeader.vue.js +3 -3
- package/dist/components/signages/EpHeader.vue.js.map +1 -1
- package/dist/components/tools/BgAudio.vue.js +52 -1
- package/dist/components/tools/BgAudio.vue.js.map +1 -1
- package/dist/components/tools/BgAudio.vue2.js +1 -52
- package/dist/components/tools/BgAudio.vue2.js.map +1 -1
- package/dist/components/tools/Details.vue2.js +1 -1
- package/dist/components/tools/Details.vue2.js.map +1 -1
- package/dist/components/tools/TextMedia.vue2.js +1 -1
- package/dist/components/tools/TextMedia.vue2.js.map +1 -1
- package/dist/components/tools/TimelineItem.vue.js +1 -1
- package/dist/components/tools/TimelineItem.vue2.js +1 -1
- package/dist/components/tools/TimelineItem.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/useColors.js +58 -0
- package/dist/composables/useColors.js.map +1 -0
- package/dist/style.css +147 -0
- package/dist/types/Accordeon.js +20 -20
- package/dist/types/Accordeon.js.map +1 -1
- package/dist/types/Alert.js +32 -32
- package/dist/types/Alert.js.map +1 -1
- package/dist/types/Btn.js +21 -21
- package/dist/types/Btn.js.map +1 -1
- package/dist/types/Chip.js +14 -14
- package/dist/types/Chip.js.map +1 -1
- package/dist/types/educationals/EpInstructions.d.ts +1 -0
- package/dist/types/educationals/EpSpecificObjective.d.ts +1 -1
- package/package.json +2 -4
- package/dist/styles.css +0 -655
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { defineComponent, computed, createElementBlock, openBlock, createCommentVNode, createElementVNode, normalizeClass, toDisplayString } from "vue";
|
|
2
2
|
import { typeAvatar } from "../../types/Avatar.js";
|
|
3
|
+
import useColors from "../../composables/useColors.js";
|
|
3
4
|
const _hoisted_1 = { key: 0 };
|
|
4
5
|
const _hoisted_2 = ["src", "alt"];
|
|
5
6
|
const _hoisted_3 = { key: 1 };
|
|
@@ -26,7 +27,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
26
27
|
return `${(_a = typeAvatar[style.value]) == null ? void 0 : _a[size.value]}`;
|
|
27
28
|
});
|
|
28
29
|
const bgcolor = computed(() => {
|
|
29
|
-
return
|
|
30
|
+
return useColors(props.color);
|
|
30
31
|
});
|
|
31
32
|
const final_name = computed(() => {
|
|
32
33
|
if (props.name.length > 2) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EpAvatar.vue2.js","sources":["../../../src/components/basics/EpAvatar.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from \"vue\";\nimport { typeAvatar } from \"~/types/Avatar\";\nimport type { EpAvatarProps } from \"~/types/basics/EpAvatar\";\n\n// define parameter and default valule\nconst props = withDefaults(defineProps<EpAvatarProps>(), {\n src: \"\",\n alt: \"\",\n color: \"primary\",\n size: \"small\",\n variant: \"circle\",\n name: \"\",\n});\n\nconst style = computed(() => {\n return props.variant;\n});\n\nconst size = computed(() => {\n return props.size;\n});\n\nconst final_style = computed(() => {\n return `${typeAvatar[style.value]?.[size.value]}`;\n});\n\nconst bgcolor = computed(() => {\n return
|
|
1
|
+
{"version":3,"file":"EpAvatar.vue2.js","sources":["../../../src/components/basics/EpAvatar.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from \"vue\";\nimport { typeAvatar } from \"~/types/Avatar\";\nimport type { EpAvatarProps } from \"~/types/basics/EpAvatar\";\nimport useColors from \"~/composables/useColors\";\n\n// define parameter and default valule\nconst props = withDefaults(defineProps<EpAvatarProps>(), {\n src: \"\",\n alt: \"\",\n color: \"primary\",\n size: \"small\",\n variant: \"circle\",\n name: \"\",\n});\n\nconst style = computed(() => {\n return props.variant;\n});\n\nconst size = computed(() => {\n return props.size;\n});\n\nconst final_style = computed(() => {\n return `${typeAvatar[style.value]?.[size.value]}`;\n});\n\nconst bgcolor = computed(() => {\n return useColors(props.color);\n});\n\nconst final_name = computed(() => {\n if (props.name.length > 2) {\n return props.name.slice(0, 2);\n } else {\n return props.name;\n }\n});\n</script>\n<template>\n <div>\n <div v-if=\"props.src != ''\">\n <img :src=\"props.src\" :alt=\"props.alt\" :class=\"`${final_style} `\" />\n </div>\n <div v-else-if=\"props.src == ''\">\n <div\n :class=\"`${final_style} ${bgcolor} justify-center font-bold text-white flex items-center`\"\n >\n {{ final_name }}\n </div>\n </div>\n </div>\n</template>\n"],"names":["_createElementBlock","_createElementVNode","_normalizeClass"],"mappings":";;;;;;;;;;;;;;;;;AAOA,UAAM,QAAQ;AASd,UAAM,QAAQ,SAAS,MAAM;AAC3B,aAAO,MAAM;AAAA,IACf,CAAC;AAED,UAAM,OAAO,SAAS,MAAM;AAC1B,aAAO,MAAM;AAAA,IACf,CAAC;AAED,UAAM,cAAc,SAAS,MAAM;;AACjC,aAAO,IAAG,gBAAW,MAAM,KAAK,MAAtB,mBAA0B,KAAK,MAAM;AAAA,IACjD,CAAC;AAED,UAAM,UAAU,SAAS,MAAM;AAC7B,aAAO,UAAU,MAAM,KAAK;AAAA,IAC9B,CAAC;AAED,UAAM,aAAa,SAAS,MAAM;AAChC,UAAI,MAAM,KAAK,SAAS,GAAG;AACzB,eAAO,MAAM,KAAK,MAAM,GAAG,CAAC;AAAA,MAC9B,OAAO;AACL,eAAO,MAAM;AAAA,MACf;AAAA,IACF,CAAC;;0BAGCA,mBAWM,OAAA,MAAA;AAAA,QAVO,MAAM,OAAG,mBAApBA,mBAEM,OAAA,YAAA;AAAA,UADJC,mBAAoE,OAAA;AAAA,YAA9D,KAAK,MAAM;AAAA,YAAM,KAAK,MAAM;AAAA,YAAM,yBAAU,YAAA,KAAW,GAAA;AAAA,UAAA;cAE/C,MAAM,OAAG,mBAAzBD,mBAMM,OAAA,YAAA;AAAA,UALJC,mBAIM,OAAA;AAAA,YAHH,OAAKC,eAAA,GAAK,YAAA,KAAW,KAAK,QAAA,KAAO,yDAAA;AAAA,UAAA,mBAE/B,WAAA,KAAU,GAAA,CAAA;AAAA,QAAA;;;;;"}
|
|
@@ -2,6 +2,7 @@ import { defineComponent, computed, toRefs, useSlots, createElementBlock, openBl
|
|
|
2
2
|
import _sfc_main$2 from "./EpIcon.vue.js";
|
|
3
3
|
import _sfc_main$1 from "../medias/EpSvg.vue.js";
|
|
4
4
|
import { density_style } from "../../types/Card.js";
|
|
5
|
+
import useColors from "../../composables/useColors.js";
|
|
5
6
|
const _hoisted_1 = ["src"];
|
|
6
7
|
const _hoisted_2 = {
|
|
7
8
|
key: 1,
|
|
@@ -41,14 +42,14 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
41
42
|
});
|
|
42
43
|
const borderBgStyle = computed(() => {
|
|
43
44
|
if (props.outlined) {
|
|
44
|
-
return `border
|
|
45
|
+
return `border ${useColors(props.bordercolor, "border")}`;
|
|
45
46
|
}
|
|
46
47
|
});
|
|
47
48
|
const bgColorStyle = computed(() => {
|
|
48
49
|
if (props.bgcolor !== "neutral") {
|
|
49
|
-
return
|
|
50
|
+
return `${useColors(props.bgcolor)} text-white`;
|
|
50
51
|
}
|
|
51
|
-
return `
|
|
52
|
+
return `bg-surface-2 dark:bg-surface-2-dark`;
|
|
52
53
|
});
|
|
53
54
|
const density_class = computed(() => {
|
|
54
55
|
return density_style[props.density];
|
|
@@ -64,7 +65,6 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
64
65
|
${bgColorStyle.value}
|
|
65
66
|
${linkStyle.value}
|
|
66
67
|
rounded-md
|
|
67
|
-
|
|
68
68
|
`;
|
|
69
69
|
});
|
|
70
70
|
const { title, subtitle, icon, src, svg } = toRefs(props);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EpCard.vue.js","sources":["../../../src/components/basics/EpCard.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { toRefs, computed, useSlots, type Slots } from \"vue\";\nimport EpIcon from \"~/components/basics/EpIcon.vue\";\nimport EpSvg from \"~/components/medias/EpSvg.vue\";\nimport { density_style } from \"~/types/Card\";\nimport type { EpCardProps } from \"~/types/basics/EpCard\";\n\nconst props = withDefaults(defineProps<EpCardProps>(), {\n title: null,\n subtitle: null,\n outlined: false,\n flat: false,\n icon: null,\n src: null,\n bordercolor:\"neutral\",\n bgcolor:\"neutral\",\n density: \"default\",\n maxWidth: \"max-w-full\",\n isLink: false,\n});\n\n//styles card\nconst shadowCard = computed(() => {\n return !props.flat ? \"shadow-lg\" : \"\";\n});\n\nconst borderBgStyle = computed(()=> {\n if(props.outlined) {\n return `border
|
|
1
|
+
{"version":3,"file":"EpCard.vue.js","sources":["../../../src/components/basics/EpCard.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { toRefs, computed, useSlots, type Slots } from \"vue\";\nimport EpIcon from \"~/components/basics/EpIcon.vue\";\nimport EpSvg from \"~/components/medias/EpSvg.vue\";\nimport { density_style } from \"~/types/Card\";\nimport type { EpCardProps } from \"~/types/basics/EpCard\";\nimport useColors from \"~/composables/useColors\";\n\nconst props = withDefaults(defineProps<EpCardProps>(), {\n title: null,\n subtitle: null,\n outlined: false,\n flat: false,\n icon: null,\n src: null,\n bordercolor:\"neutral\",\n bgcolor:\"neutral\",\n density: \"default\",\n maxWidth: \"max-w-full\",\n isLink: false,\n});\n\n//styles card\nconst shadowCard = computed(() => {\n return !props.flat ? \"shadow-lg\" : \"\";\n});\n\nconst borderBgStyle = computed(()=> {\n if(props.outlined) {\n return `border ${useColors(props.bordercolor, 'border')}`\n }\n})\n\nconst bgColorStyle = computed(()=> {\n if(props.bgcolor !== 'neutral') {\n return `${useColors(props.bgcolor)} text-white`\n }\n return `bg-surface-2 dark:bg-surface-2-dark`\n}) \n\n\nconst density_class = computed(() => {\n return density_style[props.density];\n});\n\nconst linkStyle = computed(()=> {\n return props.isLink ? \"cursor-pointer\" : \"\"\n})\n\nconst stylesCard = computed(() => {\n return `\n ${shadowCard.value} \n ${props.maxWidth} \n ${borderBgStyle.value}\n ${bgColorStyle.value}\n ${linkStyle.value}\n rounded-md\n `;\n});\n\nconst { title, subtitle, icon, src, svg } = toRefs(props);\n\nconst slots: Slots = useSlots();\n\nconst hasContent = computed(() => {\n return !!slots.default || !!props.title || !!props.subtitle || !!props.icon;\n});\n</script>\n<template>\n <div :class=\"`${stylesCard}`\">\n <img\n v-if=\"src\"\n :src=\"src\"\n :class=\"`w-full ${hasContent ? 'rounded-t-md' : 'rounded-md'}`\"\n alt=\"header card\"\n />\n <div v-if=\"!src && svg\" class=\"w-full rounded-t-md \">\n <EpSvg :content=\"svg\" />\n </div>\n\n <div :class=\"density_class\" v-if=\"hasContent\">\n <div\n v-if=\"title || subtitle || icon\"\n class=\"mb-2 flex items-center justify-between\"\n >\n <div>\n <h3 class=\"text-2xl font-bold dark:text-white\">{{ title }}</h3>\n <h4 :class=\"`text-xs dark:text-white`\">\n {{ subtitle }}\n </h4>\n </div>\n <div v-if=\"icon\">\n <EpIcon :icon-path=\"icon\" extra-class=\"dark:text-white\" />\n </div>\n </div>\n <slot name=\"card-header\" />\n <div class=\"dark:text-white\">\n <slot />\n </div>\n <div class=\"dark:text-white\">\n <slot name=\"card-actions\" />\n </div>\n </div>\n </div>\n</template>\n"],"names":["_createElementBlock","_unref","_openBlock","_createVNode","EpSvg","_createElementVNode","_toDisplayString","EpIcon","_renderSlot"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQA,UAAM,QAAQ;AAed,UAAM,aAAa,SAAS,MAAM;AAChC,aAAO,CAAC,MAAM,OAAO,cAAc;AAAA,IACrC,CAAC;AAED,UAAM,gBAAgB,SAAS,MAAK;AAClC,UAAG,MAAM,UAAU;AACjB,eAAO,UAAU,UAAU,MAAM,aAAa,QAAQ,CAAC;AAAA,MACzD;AAAA,IACF,CAAC;AAED,UAAM,eAAe,SAAS,MAAK;AACjC,UAAG,MAAM,YAAY,WAAW;AAC9B,eAAO,GAAG,UAAU,MAAM,OAAO,CAAC;AAAA,MACpC;AACA,aAAO;AAAA,IACT,CAAC;AAGD,UAAM,gBAAgB,SAAS,MAAM;AACnC,aAAO,cAAc,MAAM,OAAO;AAAA,IACpC,CAAC;AAED,UAAM,YAAY,SAAS,MAAK;AAC9B,aAAO,MAAM,SAAS,mBAAmB;AAAA,IAC3C,CAAC;AAED,UAAM,aAAa,SAAS,MAAM;AAChC,aAAO;AAAA,MACH,WAAW,KAAK;AAAA,MAChB,MAAM,QAAQ;AAAA,MACd,cAAc,KAAK;AAAA,MACnB,aAAa,KAAK;AAAA,MAClB,UAAU,KAAK;AAAA;AAAA;AAAA,IAGrB,CAAC;AAED,UAAM,EAAE,OAAO,UAAU,MAAM,KAAK,IAAA,IAAQ,OAAO,KAAK;AAExD,UAAM,QAAe,SAAA;AAErB,UAAM,aAAa,SAAS,MAAM;AAChC,aAAO,CAAC,CAAC,MAAM,WAAW,CAAC,CAAC,MAAM,SAAS,CAAC,CAAC,MAAM,YAAY,CAAC,CAAC,MAAM;AAAA,IACzE,CAAC;;0BAGCA,mBAkCM,OAAA;AAAA,QAlCA,yBAAU,WAAA,KAAU,EAAA;AAAA,MAAA;QAEhBC,MAAA,GAAA,kBADRD,mBAKE,OAAA;AAAA;UAHC,KAAKC,MAAA,GAAA;AAAA,UACL,gCAAiB,WAAA,QAAU,iBAAA,YAAA,EAAA;AAAA,UAC5B,KAAI;AAAA,QAAA;QAEM,CAAAA,MAAA,GAAA,KAAOA,MAAA,GAAA,KAAnBC,aAAAF,mBAEM,OAFN,YAEM;AAAA,UADJG,YAAwBC,aAAA,EAAhB,SAASH,MAAA,GAAA,EAAA,GAAG,MAAA,GAAA,CAAA,SAAA,CAAA;AAAA,QAAA;QAGY,WAAA,sBAAlCD,mBAsBM,OAAA;AAAA;UAtBA,sBAAO,cAAA,KAAa;AAAA,QAAA;UAEhBC,MAAA,KAAA,KAASA,MAAA,QAAA,KAAYA,MAAA,IAAA,KAD7BC,UAAA,GAAAF,mBAaM,OAbN,YAaM;AAAA,YATJK,mBAKM,OAAA,MAAA;AAAA,cAJJA,mBAA+D,MAA/D,YAA+DC,gBAAbL,MAAA,KAAA,CAAK,GAAA,CAAA;AAAA,cACvDI,mBAEK,MAFL,YAEKC,gBADAL,MAAA,QAAA,CAAQ,GAAA,CAAA;AAAA,YAAA;YAGJA,MAAA,IAAA,kBAAXD,mBAEM,OAAA,YAAA;AAAA,cADJG,YAA0DI,aAAA;AAAA,gBAAjD,aAAWN,MAAA,IAAA;AAAA,gBAAM,eAAY;AAAA,cAAA;;;UAG1CO,WAA2B,KAAA,QAAA,aAAA;AAAA,UAC3BH,mBAEM,OAFN,YAEM;AAAA,YADJG,WAAQ,KAAA,QAAA,SAAA;AAAA,UAAA;UAEVH,mBAEM,OAFN,YAEM;AAAA,YADJG,WAA4B,KAAA,QAAA,cAAA;AAAA,UAAA;;;;;;"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { defineComponent, computed, createElementBlock, openBlock, normalizeClass } from "vue";
|
|
2
|
+
import useColors from "../../composables/useColors.js";
|
|
2
3
|
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
3
4
|
__name: "EpDivider",
|
|
4
5
|
props: {
|
|
5
|
-
color: { default:
|
|
6
|
+
color: { default: "neutral" },
|
|
6
7
|
size: { default: "border" },
|
|
7
8
|
inset: { type: Boolean, default: false },
|
|
8
9
|
icon: { default: null },
|
|
@@ -12,9 +13,9 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
12
13
|
const props = __props;
|
|
13
14
|
const border = computed(() => {
|
|
14
15
|
if (props.color) {
|
|
15
|
-
return `${props.size} ${props.color}`;
|
|
16
|
+
return `${props.size} ${useColors(props.color)}`;
|
|
16
17
|
}
|
|
17
|
-
return `${props.size}
|
|
18
|
+
return `${props.size} border border-netural`;
|
|
18
19
|
});
|
|
19
20
|
const styles = computed(() => {
|
|
20
21
|
return `${border.value} ${props.inset ? "w-9/12 mx-auto" : "w-full"} ${props.margin}`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EpDivider.vue.js","sources":["../../../src/components/basics/EpDivider.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from \"vue\";\nimport type { EpDividerProps } from \"~/types/basics/EpDivider\";\n\nconst props = withDefaults(defineProps<EpDividerProps>(), {\n color:
|
|
1
|
+
{"version":3,"file":"EpDivider.vue.js","sources":["../../../src/components/basics/EpDivider.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from \"vue\";\nimport type { EpDividerProps } from \"~/types/basics/EpDivider\";\nimport useColors from \"~/composables/useColors\";\n\nconst props = withDefaults(defineProps<EpDividerProps>(), {\n color: \"neutral\",\n size: \"border\",\n inset: false,\n icon: null,\n margin: \"my-2\",\n});\n\nconst border = computed(() => {\n if (props.color) {\n return `${props.size} ${useColors(props.color)}`;\n }\n return `${props.size} border border-netural`;\n});\n\nconst styles = computed(() => {\n return `${border.value} ${props.inset ? \"w-9/12 mx-auto\" : \"w-full\"} ${\n props.margin\n }`;\n});\n</script>\n\n<template>\n <hr :class=\"`h-px ${styles}`\" />\n</template>\n"],"names":["_createElementBlock"],"mappings":";;;;;;;;;;;;AAKA,UAAM,QAAQ;AAQd,UAAM,SAAS,SAAS,MAAM;AAC5B,UAAI,MAAM,OAAO;AACf,eAAO,GAAG,MAAM,IAAI,IAAI,UAAU,MAAM,KAAK,CAAC;AAAA,MAChD;AACA,aAAO,GAAG,MAAM,IAAI;AAAA,IACtB,CAAC;AAED,UAAM,SAAS,SAAS,MAAM;AAC5B,aAAO,GAAG,OAAO,KAAK,IAAI,MAAM,QAAQ,mBAAmB,QAAQ,IACjE,MAAM,MACR;AAAA,IACF,CAAC;;0BAICA,mBAAgC,MAAA;AAAA,QAA3B,8BAAe,OAAA,KAAM,EAAA;AAAA,MAAA;;;;"}
|
|
@@ -39,7 +39,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
39
39
|
});
|
|
40
40
|
const borderColor = computed(() => {
|
|
41
41
|
if (props.outlined) {
|
|
42
|
-
return "border
|
|
42
|
+
return "border border-neutral dark:border-white";
|
|
43
43
|
}
|
|
44
44
|
return "";
|
|
45
45
|
});
|
|
@@ -52,7 +52,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
52
52
|
${borderColor.value}
|
|
53
53
|
${props.maxWidth}
|
|
54
54
|
rounded-md
|
|
55
|
-
|
|
55
|
+
bg-surface-2 dark:bg-surface-2-dark`;
|
|
56
56
|
});
|
|
57
57
|
const { title, subtitle, icon, src, hoverContent } = toRefs(props);
|
|
58
58
|
const slots = useSlots();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EpHoverCard.vue.js","sources":["../../../src/components/basics/EpHoverCard.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { computed, toRefs, useSlots, type Slots } from \"vue\";\nimport EpHover from \"~/components/basics/EpHover.vue\";\nimport EpIcon from \"~/components/basics//EpIcon.vue\";\nimport { density_style } from \"~/types/Card\";\nimport type { EpHoverCardProps } from \"~/types/basics/EpHoverCard\";\n\nconst props = withDefaults(defineProps<EpHoverCardProps>(), {\n title: null,\n subtitle: null,\n outlined: false,\n flat: false,\n icon: null,\n color: null,\n src: null,\n density: \"default\",\n maxWidth: \"max-w-xl\",\n hoverBg: \"\",\n hoverAnimation: \"translateY\",\n});\n\n//styles card\nconst shadowCard = computed(() => {\n return !props.flat ? \"shadow-lg\" : \"\";\n});\n\nconst borderColor = computed(() => {\n if (props.outlined) {\n return \"border
|
|
1
|
+
{"version":3,"file":"EpHoverCard.vue.js","sources":["../../../src/components/basics/EpHoverCard.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { computed, toRefs, useSlots, type Slots } from \"vue\";\nimport EpHover from \"~/components/basics/EpHover.vue\";\nimport EpIcon from \"~/components/basics//EpIcon.vue\";\nimport { density_style } from \"~/types/Card\";\nimport type { EpHoverCardProps } from \"~/types/basics/EpHoverCard\";\n\nconst props = withDefaults(defineProps<EpHoverCardProps>(), {\n title: null,\n subtitle: null,\n outlined: false,\n flat: false,\n icon: null,\n color: null,\n src: null,\n density: \"default\",\n maxWidth: \"max-w-xl\",\n hoverBg: \"\",\n hoverAnimation: \"translateY\",\n});\n\n//styles card\nconst shadowCard = computed(() => {\n return !props.flat ? \"shadow-lg\" : \"\";\n});\n\nconst borderColor = computed(() => {\n if (props.outlined) {\n return \"border border-neutral dark:border-white\";\n }\n return \"\";\n});\n\n\n\nconst density_class = computed(() => {\n return density_style[props.density];\n});\n\nconst stylesCard = computed(() => {\n return `\n ${shadowCard.value} \n ${borderColor.value} \n ${props.maxWidth} \n rounded-md \n bg-surface-2 dark:bg-surface-2-dark`;\n});\n\nconst { title, subtitle, icon, src, hoverContent } = toRefs(props);\n\nconst slots: Slots = useSlots();\n\nconst hasContent = computed(() => {\n return !!slots.default || !!props.title || !!props.subtitle;\n});\n</script>\n\n<template>\n <div :class=\"`${stylesCard} mx-auto`\">\n <EpHover\n :textColor=\"hoverColor\"\n :textSize=\"textSize\"\n :seeThrough=\"seeThrough\"\n :bgColor=\"hoverBg\"\n :animation=\"hoverAnimation\"\n :text=\"hoverContent\"\n v-if=\"src && hoverContent\"\n >\n <img\n :src=\"src\"\n :class=\"`w-full ${hasContent ? 'rounded-t-md' : 'rounded-md'}`\"\n alt=\"header card\"\n />\n </EpHover>\n <div :class=\"density_class\" v-if=\"hasContent\">\n <div\n v-if=\"title || subtitle\"\n class=\"mb-2 flex items-center justify-between\"\n >\n <div>\n <h3 class=\"text-2xl font-bold\">{{ title }}</h3>\n <h4 :class=\"`text-xs`\">\n {{ subtitle }}\n </h4>\n </div>\n <div v-if=\"icon\">\n <EpIcon :icon-path=\"icon\" />\n </div>\n </div>\n <slot name=\"card-header\" />\n <div>\n <slot />\n </div>\n <div class=\"max-w-4xl\">\n <slot name=\"card-actions\" />\n </div>\n </div>\n </div>\n</template>\n"],"names":["_createElementBlock","_unref","_createBlock","EpHover","hoverColor","textSize","seeThrough","hoverBg","hoverAnimation","_createElementVNode","_openBlock","_toDisplayString","_createVNode","EpIcon","_renderSlot"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOA,UAAM,QAAQ;AAed,UAAM,aAAa,SAAS,MAAM;AAChC,aAAO,CAAC,MAAM,OAAO,cAAc;AAAA,IACrC,CAAC;AAED,UAAM,cAAc,SAAS,MAAM;AACjC,UAAI,MAAM,UAAU;AAClB,eAAO;AAAA,MACT;AACA,aAAO;AAAA,IACT,CAAC;AAID,UAAM,gBAAgB,SAAS,MAAM;AACnC,aAAO,cAAc,MAAM,OAAO;AAAA,IACpC,CAAC;AAED,UAAM,aAAa,SAAS,MAAM;AAChC,aAAO;AAAA,MACH,WAAW,KAAK;AAAA,MAChB,YAAY,KAAK;AAAA,MACjB,MAAM,QAAQ;AAAA;AAAA;AAAA,IAGpB,CAAC;AAED,UAAM,EAAE,OAAO,UAAU,MAAM,KAAK,aAAA,IAAiB,OAAO,KAAK;AAEjE,UAAM,QAAe,SAAA;AAErB,UAAM,aAAa,SAAS,MAAM;AAChC,aAAO,CAAC,CAAC,MAAM,WAAW,CAAC,CAAC,MAAM,SAAS,CAAC,CAAC,MAAM;AAAA,IACrD,CAAC;;0BAICA,mBAuCM,OAAA;AAAA,QAvCA,yBAAU,WAAA,KAAU,UAAA;AAAA,MAAA;QAQhBC,MAAA,GAAA,KAAOA,MAAA,YAAA,kBAPfC,YAcUC,aAAA;AAAA;UAbP,WAAWC,KAAAA;AAAAA,UACX,UAAUC,KAAAA;AAAAA,UACV,YAAYC,KAAAA;AAAAA,UACZ,SAASC,KAAAA;AAAAA,UACT,WAAWC,KAAAA;AAAAA,UACX,MAAMP,MAAA,YAAA;AAAA,QAAA;2BAGP,MAIE;AAAA,YAJFQ,mBAIE,OAAA;AAAA,cAHC,KAAKR,MAAA,GAAA;AAAA,cACL,gCAAiB,WAAA,QAAU,iBAAA,YAAA,EAAA;AAAA,cAC5B,KAAI;AAAA,YAAA;;;;QAG0B,WAAA,sBAAlCD,mBAsBM,OAAA;AAAA;UAtBA,sBAAO,cAAA,KAAa;AAAA,QAAA;UAEhBC,MAAA,KAAA,KAASA,MAAA,QAAA,KADjBS,aAAAV,mBAaM,OAbN,YAaM;AAAA,YATJS,mBAKM,OAAA,MAAA;AAAA,cAJJA,mBAA+C,MAA/C,YAA+CE,gBAAbV,MAAA,KAAA,CAAK,GAAA,CAAA;AAAA,cACvCQ,mBAEK,MAFL,YAEKE,gBADAV,MAAA,QAAA,CAAQ,GAAA,CAAA;AAAA,YAAA;YAGJA,MAAA,IAAA,kBAAXD,mBAEM,OAAA,YAAA;AAAA,cADJY,YAA4BC,aAAA,EAAnB,aAAWZ,MAAA,IAAA,EAAA,GAAI,MAAA,GAAA,CAAA,WAAA,CAAA;AAAA,YAAA;;UAG5Ba,WAA2B,KAAA,QAAA,aAAA;AAAA,UAC3BL,mBAEM,OAAA,MAAA;AAAA,YADJK,WAAQ,KAAA,QAAA,SAAA;AAAA,UAAA;UAEVL,mBAEM,OAFN,YAEM;AAAA,YADJK,WAA4B,KAAA,QAAA,cAAA;AAAA,UAAA;;;;;;"}
|
|
@@ -103,7 +103,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
103
103
|
}, [
|
|
104
104
|
!unref(thumbnail) ? (openBlock(), createElementBlock("div", _hoisted_1, [
|
|
105
105
|
createElementVNode("div", {
|
|
106
|
-
class: normalizeClass(`mx-auto rounded-md overflow-hidden
|
|
106
|
+
class: normalizeClass(`mx-auto rounded-md overflow-hidden bg-surface-2 dark:bg-surface-2-dark shadow-md ${renderCols.value}`)
|
|
107
107
|
}, [
|
|
108
108
|
unref(isLoading) ? (openBlock(), createElementBlock("span", _hoisted_2, [
|
|
109
109
|
createVNode(_sfc_main$1, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EpImg.vue.js","sources":["../../../src/components/basics/EpImg.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { toRefs, ref, computed } from \"vue\";\nimport { sizeThumbnailStyle, cols_img } from \"~/types/Image\";\nimport { useImage } from \"@vueuse/core\";\nimport EpModal from \"~/components/interactions/EpModal.vue\";\nimport EpIcon from \"~/components/basics/EpIcon.vue\";\nimport EpBtn from \"~/components/basics/EpBtn.vue\";\nimport { mdiArrowExpandAll } from \"@mdi/js\";\nimport { mdiImage } from \"@mdi/js\";\nimport { mdiImageRemove } from \"@mdi/js\";\nimport { useRenderText } from \"~/composables/useRenderText\";\nimport type { EpImgProps } from \"~/types/basics/EpImg\";\n\nconst props = withDefaults(defineProps<EpImgProps>(), {\n alt: \"Image snfas\",\n cols: \"6\",\n thumbnail: false,\n noModal: false,\n sizeThumbnail: \"medium\",\n labelClose: \"Fermer\",\n labelRef: \"Référence\",\n labelRefLib: \"Référence bibliographique\",\n});\n\n// To access freely the image\nconst imgEl = ref<HTMLImageElement | null>(null);\n\ndefineExpose({ imgEl });\n\nconst renderCols = computed(() => {\n return cols_img[+props.cols];\n});\n\nconst renderBib = computed(() => {\n if (props.bib) {\n return useRenderText(props.bib);\n }\n return \"\";\n});\n\nconst showModal = ref<boolean>(false);\n\nconst toggleModal = (): void => {\n if (props.noModal) {\n return;\n }\n showModal.value = !showModal.value;\n};\n\nconst showBib = ref<boolean>(false);\n\nconst toggleBib = (): void => {\n showBib.value = !showBib.value;\n};\n\nconst styleSizeThumbnail = computed(() => {\n return sizeThumbnailStyle[props.sizeThumbnail];\n});\n\nconst { isLoading, error } = useImage({ src: props.src });\nconst { src, alt, title, caption, thumbnail, bib, sizeThumbnail } =\n toRefs(props);\n</script>\n\n<template>\n <div :class=\"thumbnail ? 'inline-block' : ''\">\n <div v-if=\"!thumbnail\" class=\"flex m-2\">\n <div\n :class=\"`mx-auto rounded-md overflow-hidden
|
|
1
|
+
{"version":3,"file":"EpImg.vue.js","sources":["../../../src/components/basics/EpImg.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { toRefs, ref, computed } from \"vue\";\nimport { sizeThumbnailStyle, cols_img } from \"~/types/Image\";\nimport { useImage } from \"@vueuse/core\";\nimport EpModal from \"~/components/interactions/EpModal.vue\";\nimport EpIcon from \"~/components/basics/EpIcon.vue\";\nimport EpBtn from \"~/components/basics/EpBtn.vue\";\nimport { mdiArrowExpandAll } from \"@mdi/js\";\nimport { mdiImage } from \"@mdi/js\";\nimport { mdiImageRemove } from \"@mdi/js\";\nimport { useRenderText } from \"~/composables/useRenderText\";\nimport type { EpImgProps } from \"~/types/basics/EpImg\";\n\nconst props = withDefaults(defineProps<EpImgProps>(), {\n alt: \"Image snfas\",\n cols: \"6\",\n thumbnail: false,\n noModal: false,\n sizeThumbnail: \"medium\",\n labelClose: \"Fermer\",\n labelRef: \"Référence\",\n labelRefLib: \"Référence bibliographique\",\n});\n\n// To access freely the image\nconst imgEl = ref<HTMLImageElement | null>(null);\n\ndefineExpose({ imgEl });\n\nconst renderCols = computed(() => {\n return cols_img[+props.cols];\n});\n\nconst renderBib = computed(() => {\n if (props.bib) {\n return useRenderText(props.bib);\n }\n return \"\";\n});\n\nconst showModal = ref<boolean>(false);\n\nconst toggleModal = (): void => {\n if (props.noModal) {\n return;\n }\n showModal.value = !showModal.value;\n};\n\nconst showBib = ref<boolean>(false);\n\nconst toggleBib = (): void => {\n showBib.value = !showBib.value;\n};\n\nconst styleSizeThumbnail = computed(() => {\n return sizeThumbnailStyle[props.sizeThumbnail];\n});\n\nconst { isLoading, error } = useImage({ src: props.src });\nconst { src, alt, title, caption, thumbnail, bib, sizeThumbnail } =\n toRefs(props);\n</script>\n\n<template>\n <div :class=\"thumbnail ? 'inline-block' : ''\">\n <div v-if=\"!thumbnail\" class=\"flex m-2\">\n <div\n :class=\"`mx-auto rounded-md overflow-hidden bg-surface-2 dark:bg-surface-2-dark shadow-md ${renderCols}`\"\n >\n <template v-if=\"isLoading\">\n <span class=\"text-gray-200\"\n ><EpIcon :icon-path=\"mdiImage\" size=\"250\"></EpIcon\n ></span>\n </template>\n <template v-else-if=\"error\">\n <span class=\"text-red-200\"\n ><EpIcon :icon-path=\"mdiImageRemove\" size=\"150\"></EpIcon\n ></span>\n </template>\n <template v-else>\n <div\n :class=\"`${\n !noModal ? 'cursor-pointer' : ''\n } dark:bg-white group relative`\"\n >\n <img\n class=\"object-cover object-center w-full\"\n :src=\"src\"\n :alt=\"alt\"\n @click=\"toggleModal\"\n ref=\"imgEl\"\n />\n <div\n v-if=\"!noModal\"\n class=\"absolute bottom-2 right-2 text-white text-center bg-black rounded opacity-0 transition-opacity duration-300 group-hover:opacity-50 cursor-pointer\"\n >\n <EpIcon size=\"28\" :icon-path=\"mdiArrowExpandAll\" />\n </div>\n </div>\n </template>\n <div\n class=\"px-4 py-2 dark:rounded-b-md\"\n v-if=\"title || caption || bib\"\n >\n <h2 class=\"text-2xl dark:text-white font-bold\">\n {{ title }}\n </h2>\n <p class=\"text-gray-500 dark:text-white text-sm mt-4\">\n {{ caption }}\n </p>\n <div class=\"text-right\" v-if=\"renderBib\">\n <EpBtn @click=\"toggleBib\" rounded size=\"small\" type=\"primary\">{{\n labelRef\n }}</EpBtn>\n </div>\n </div>\n </div>\n </div>\n <div v-if=\"thumbnail\" class=\"relative group inline-block m-2\">\n <img\n :class=\"`${styleSizeThumbnail} object-cover object-center group-hover:opacity-30 `\"\n :src=\"src\"\n :alt=\"alt\"\n ref=\"imgEl\"\n />\n <div\n :class=\"`absolute top-0 left-0 ${styleSizeThumbnail} bg-black opacity-0 transition-opacity duration-300 group-hover:opacity-30 cursor-pointer`\"\n @click=\"toggleModal\"\n >\n <div\n class=\"absolute top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2 text-white text-center\"\n >\n <EpIcon :icon-path=\"mdiArrowExpandAll\" />\n </div>\n </div>\n </div>\n <EpModal v-model=\"showModal\">\n <img\n class=\"object-cover object-center h-5/6 w-5/6 mx-auto dark:bg-white\"\n :src=\"src\"\n :alt=\"alt\"\n @click=\"toggleModal\"\n />\n <div class=\"px-4 py-2\" v-if=\"thumbnail\">\n <h2 class=\"text-2xl dark:text-white font-bold\">\n {{ title }}\n </h2>\n <p class=\"text-gray-500 dark:text-white text-sm mt-4\">\n {{ caption }}\n </p>\n <div class=\"text-gray-700 dark:text-white mt-4\" v-html=\"renderBib\" />\n </div>\n <!-- <div class=\"flex justify-end\"><EpBtn @click=\"toggleModal\" size=\"small\" type=\"error\" outlined>Fermer</EpBtn/> -->\n </EpModal>\n <EpModal v-model=\"showBib\" :title=\"labelRefLib\">\n <div class=\"text-gray-700 dark:text-white mt-4\" v-html=\"renderBib\" />\n <div class=\"flex justify-end\">\n <EpBtn @click=\"toggleBib\" size=\"small\" type=\"error\" outlined rounded>\n {{ labelClose }}\n </EpBtn>\n </div>\n </EpModal>\n </div>\n</template>\n"],"names":["_createElementBlock","_unref","_openBlock","_createElementVNode","_createVNode","EpIcon","_normalizeClass","noModal","_toDisplayString","EpBtn","labelRef","EpModal","labelRefLib","labelClose"],"mappings":"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"}
|
|
@@ -36,7 +36,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
36
36
|
const elementSpacing = computed(() => props.restricted ? "p-3" : "mx-6 py-4");
|
|
37
37
|
return (_ctx, _cache) => {
|
|
38
38
|
return openBlock(), createElementBlock("ul", {
|
|
39
|
-
class: normalizeClass(`${className.value} flex flex-col
|
|
39
|
+
class: normalizeClass(`${className.value} flex flex-col bg-surface-2 dark:bg-surface-2-dark lg:mx-28`)
|
|
40
40
|
}, [
|
|
41
41
|
(openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.elements, (elem) => {
|
|
42
42
|
return openBlock(), createElementBlock("li", {
|
|
@@ -50,7 +50,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
50
50
|
), {
|
|
51
51
|
default: withCtx(() => [
|
|
52
52
|
createElementVNode("div", {
|
|
53
|
-
class: normalizeClass(`${elementSpacing.value} ${elem.url ? "hover:bg-gray-200 dark:hover:bg-black" : ""} grid grid-cols-11 justify-items-center items-center
|
|
53
|
+
class: normalizeClass(`${elementSpacing.value} ${elem.url ? "hover:bg-gray-200 dark:hover:bg-black" : ""} grid grid-cols-11 justify-items-center items-center border-neutral`)
|
|
54
54
|
}, [
|
|
55
55
|
elem.avatar ? (openBlock(), createBlock(_sfc_main$1, mergeProps({
|
|
56
56
|
key: 0,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EpStackedList.vue.js","sources":["../../../src/components/basics/EpStackedList.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, defineAsyncComponent } from \"vue\";\nimport EpAvatar from \"~/components/basics/EpAvatar.vue\";\nimport EpIcon from \"~/components/basics/EpIcon.vue\";\nimport { useRenderText } from \"~/composables/useRenderText\";\n\n// Importing the necessary interfaces for the code\nimport { roundedType } from \"~/types/StackedList\";\nimport type { EpStackedListProps } from \"~/types/basics/EpStackedList\";\n\nconst props = withDefaults(defineProps<EpStackedListProps>(), {\n elements: () => [],\n avatarStyle: () => {\n return {\n size: \"middle\",\n };\n },\n border: true,\n rounded: \"small\",\n restricted: false,\n cropped: false,\n iconSize: 36,\n});\n\n// The style of the wrapper div\nconst className = computed(() => {\n const border = props.border === false ? \"border-0\" : \"border\";\n const rounded = roundedType[props.rounded ? props.rounded : \"small\"];\n const padding = props.restricted ? \"p-0\" : \"p-2\";\n return `${border} ${rounded} ${padding}`;\n});\n\n// The style of the list elements\nconst elementSpacing = computed(() => (props.restricted ? \"p-3\" : \"mx-6 py-4\"));\n\nconst elementGrid = (element: Record<string, any> | undefined) => {\n return element ? \"grid-cols-11\" : \"grid-cols-7\";\n};\n</script>\n\n<template>\n <ul\n :class=\"`${className} flex flex-col
|
|
1
|
+
{"version":3,"file":"EpStackedList.vue.js","sources":["../../../src/components/basics/EpStackedList.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, defineAsyncComponent } from \"vue\";\nimport EpAvatar from \"~/components/basics/EpAvatar.vue\";\nimport EpIcon from \"~/components/basics/EpIcon.vue\";\nimport { useRenderText } from \"~/composables/useRenderText\";\n\n// Importing the necessary interfaces for the code\nimport { roundedType } from \"~/types/StackedList\";\nimport type { EpStackedListProps } from \"~/types/basics/EpStackedList\";\n\nconst props = withDefaults(defineProps<EpStackedListProps>(), {\n elements: () => [],\n avatarStyle: () => {\n return {\n size: \"middle\",\n };\n },\n border: true,\n rounded: \"small\",\n restricted: false,\n cropped: false,\n iconSize: 36,\n});\n\n// The style of the wrapper div\nconst className = computed(() => {\n const border = props.border === false ? \"border-0\" : \"border\";\n const rounded = roundedType[props.rounded ? props.rounded : \"small\"];\n const padding = props.restricted ? \"p-0\" : \"p-2\";\n return `${border} ${rounded} ${padding}`;\n});\n\n// The style of the list elements\nconst elementSpacing = computed(() => (props.restricted ? \"p-3\" : \"mx-6 py-4\"));\n\nconst elementGrid = (element: Record<string, any> | undefined) => {\n return element ? \"grid-cols-11\" : \"grid-cols-7\";\n};\n</script>\n\n<template>\n <ul\n :class=\"`${className} flex flex-col bg-surface-2 dark:bg-surface-2-dark lg:mx-28`\"\n >\n <template v-for=\"elem in elements\" :key=\"elements.indexOf(elem)\">\n <li\n :class=\"`${elements.indexOf(elem) !== 0 ? 'border-t' : ''} list-none`\"\n >\n <component\n :is=\"elem.url ? 'a' : 'div'\"\n v-bind=\"\n elem.url\n ? { href: elem.url, target: '_blank', rel: 'noopener noreferrer' }\n : {}\n \"\n :class=\"`contents`\"\n >\n <div\n :class=\"`${elementSpacing} ${\n elem.url ? 'hover:bg-gray-200 dark:hover:bg-black' : ''\n } grid grid-cols-11 justify-items-center items-center border-neutral`\"\n >\n <EpAvatar\n v-if=\"elem.avatar\"\n :src=\"elem.avatar\"\n v-bind=\"avatarStyle\"\n class=\"col-span-2\"\n />\n <div class=\"col-span-5 justify-self-start\">\n <h3 class=\"font-semibold\">{{ elem.title }}</h3>\n <div\n :class=\"`${cropped ? 'line-clamp-3' : ''}`\"\n v-html=\"useRenderText(elem.description)\"\n />\n </div>\n <!--element icon-->\n <div\n v-if=\"elem.icon\"\n class=\"flex gap-2 items-center col-span-4 justify-self-auto\"\n >\n <EpIcon :icon-path=\"elem.icon\" :size=\"iconSize\" />\n </div>\n </div>\n </component>\n </li>\n </template>\n </ul>\n</template>\n"],"names":["_createElementBlock","_Fragment","_renderList","elements","_normalizeClass","_openBlock","_createBlock","_resolveDynamicComponent","_mergeProps","_createElementVNode","EpAvatar","avatarStyle","_toDisplayString","cropped","_unref","_createVNode","EpIcon","iconSize"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAUA,UAAM,QAAQ;AAed,UAAM,YAAY,SAAS,MAAM;AAC/B,YAAM,SAAS,MAAM,WAAW,QAAQ,aAAa;AACrD,YAAM,UAAU,YAAY,MAAM,UAAU,MAAM,UAAU,OAAO;AACnE,YAAM,UAAU,MAAM,aAAa,QAAQ;AAC3C,aAAO,GAAG,MAAM,IAAI,OAAO,IAAI,OAAO;AAAA,IACxC,CAAC;AAGD,UAAM,iBAAiB,SAAS,MAAO,MAAM,aAAa,QAAQ,WAAY;;0BAQ5EA,mBA6CK,MAAA;AAAA,QA5CF,yBAAU,UAAA,KAAS,8DAAA;AAAA,MAAA;0BAEpBA,mBAyCWC,UAAA,MAAAC,WAzCcC,KAAAA,UAAQ,CAAhB,SAAI;8BACnBH,mBAuCK,MAAA;AAAA,iBAxCkCG,KAAAA,SAAS,QAAQ,IAAI;AAAA,YAEzD,OAAKC,eAAA,GAAKD,KAAAA,SAAS,QAAQ,IAAI,MAAA,IAAA,aAAA,EAAA,YAAA;AAAA,UAAA;aAEhCE,UAAA,GAAAC,YAmCYC,wBAlCL,KAAK,oBADZC;AAAAA,cAmCY,EAAA,SAAA,KAAA;AAAA,cAjCW,KAAK,MAA4B,EAAA,MAAA,KAAK,KAAG,QAAA,UAAA,KAAA,sBAAA;cAK7D,EAAA,OAAO,WAAA;AAAA,YAAU,GAAA;AAAA,+BAElB,MAyBM;AAAA,gBAzBNC,mBAyBM,OAAA;AAAA,kBAxBH,yBAAU,eAAA,KAAc,IAAmB,KAAK,MAAG,0CAAA;;kBAK5C,KAAK,UADbJ,UAAA,GAAAC,YAKEI,aALFF,WAKE;AAAA;oBAHC,KAAK,KAAK;AAAA,kBAAA,sBACHG,KAAAA,aAAW,EACnB,OAAM,aAAA,CAAY,GAAA,MAAA,IAAA,CAAA,KAAA,CAAA;kBAEpBF,mBAMM,OANN,YAMM;AAAA,oBALJA,mBAA+C,MAA/C,YAA+CG,gBAAlB,KAAK,KAAK,GAAA,CAAA;AAAA,oBACvCH,mBAGE,OAAA;AAAA,sBAFC,yBAAUI,KAAAA,UAAO,iBAAA,EAAA,EAAA;AAAA,sBAClB,WAAQC,MAAA,aAAA,EAAc,KAAK,WAAW;AAAA,oBAAA;;kBAKlC,KAAK,QADbT,UAAA,GAAAL,mBAKM,OALN,YAKM;AAAA,oBADJe,YAAkDC,aAAA;AAAA,sBAAzC,aAAW,KAAK;AAAA,sBAAO,MAAMC,KAAAA;AAAAA,oBAAAA;;;;;;;;;;;;"}
|
|
@@ -3,7 +3,7 @@ import _sfc_main$1 from "./EpCard.vue.js";
|
|
|
3
3
|
const _hoisted_1 = { class: "min-w-full divide-y shadow" };
|
|
4
4
|
const _hoisted_2 = {
|
|
5
5
|
key: 0,
|
|
6
|
-
class: "
|
|
6
|
+
class: "bg-surface dark:bg-surface-dark"
|
|
7
7
|
};
|
|
8
8
|
const _hoisted_3 = { class: "divide-y" };
|
|
9
9
|
const styleTh = "px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider dark:text-white";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EpTable.vue.js","sources":["../../../src/components/basics/EpTable.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { toRefs } from \"vue\";\nimport EpCard from \"../basics/EpCard.vue\";\nimport type { EpTableProps } from \"~/types/basics/EpTable\";\n\nconst props = defineProps<EpTableProps>();\n\nconst { headers, arrayContent, title } = toRefs(props);\n\nconst styleTh =\n \"px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider dark:text-white\";\n</script>\n<template>\n <EpCard flat :title=\"title\">\n <table class=\"min-w-full divide-y shadow\">\n <thead class=\"
|
|
1
|
+
{"version":3,"file":"EpTable.vue.js","sources":["../../../src/components/basics/EpTable.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { toRefs } from \"vue\";\nimport EpCard from \"../basics/EpCard.vue\";\nimport type { EpTableProps } from \"~/types/basics/EpTable\";\n\nconst props = defineProps<EpTableProps>();\n\nconst { headers, arrayContent, title } = toRefs(props);\n\nconst styleTh =\n \"px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider dark:text-white\";\n</script>\n<template>\n <EpCard flat :title=\"title\">\n <table class=\"min-w-full divide-y shadow\">\n <thead class=\"bg-surface dark:bg-surface-dark\" v-if=\"headers\">\n <tr>\n <th\n v-for=\"(title, i) in headers\"\n :key=\"`th-${i}`\"\n scope=\"col\"\n :class=\"styleTh\"\n >\n {{ title }}\n </th>\n </tr>\n </thead>\n <tbody class=\"divide-y\">\n <tr\n v-for=\"(tr, i) in arrayContent\"\n :key=\"`tr-${i}`\"\n class=\"hover:bg-gray-200 dark:hover:bg-black\"\n >\n <td v-for=\"(value, j) in tr\" :key=\"`td-${i}-${j}`\" class=\"px-6 py-4\">\n {{ value }}\n </td>\n </tr>\n </tbody>\n </table>\n </EpCard>\n</template>\n"],"names":["_createBlock","EpCard","_unref","_createElementVNode","_openBlock","_createElementBlock","_Fragment","_renderList","title"],"mappings":";;;;;;;;AASA,MAAM,UACJ;;;;;;;;;AALF,UAAM,QAAQ;AAEd,UAAM,EAAE,SAAS,cAAc,MAAA,IAAU,OAAO,KAAK;;0BAMnDA,YA0BSC,aAAA;AAAA,QA1BD,MAAA;AAAA,QAAM,OAAOC,MAAA,KAAA;AAAA,MAAA;yBACnB,MAwBQ;AAAA,UAxBRC,mBAwBQ,SAxBR,YAwBQ;AAAA,YAvB+CD,MAAA,OAAA,KAArDE,aAAAC,mBAWQ,SAXR,YAWQ;AAAA,cAVNF,mBASK,MAAA,MAAA;AAAA,iBARHC,UAAA,IAAA,GAAAC,mBAOKC,UAAA,MAAAC,WANkBL,MAAA,OAAA,GAAO,CAApBM,QAAO,MAAC;sCADlBH,mBAOK,MAAA;AAAA,oBALF,WAAW,CAAC;AAAA,oBACb,OAAM;AAAA,oBACL,sBAAO,OAAO;AAAA,kBAAA,mBAEZG,MAAK,GAAA,CAAA;AAAA;;;YAIdL,mBAUQ,SAVR,YAUQ;AAAA,eATNC,UAAA,IAAA,GAAAC,mBAQKC,UAAA,MAAAC,WAPeL,MAAA,YAAA,GAAY,CAAtB,IAAI,MAAC;oCADfG,mBAQK,MAAA;AAAA,kBANF,WAAW,CAAC;AAAA,kBACb,OAAM;AAAA,gBAAA;mBAEND,UAAA,IAAA,GAAAC,mBAEKC,UAAA,MAAAC,WAFoB,IAAE,CAAf,OAAO,MAAC;wCAApBF,mBAEK,MAAA;AAAA,sBAFyB,KAAG,MAAQ,CAAC,IAAI,CAAC;AAAA,sBAAI,OAAM;AAAA,oBAAA,mBACpD,KAAK,GAAA,CAAA;AAAA;;;;;;;;;;;"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import _sfc_main from "./EpBranchingScenario.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-352aec5b"]]);
|
|
5
5
|
export {
|
|
6
6
|
Comp as default
|
|
7
7
|
};
|
|
@@ -126,7 +126,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
126
126
|
var _a, _b;
|
|
127
127
|
return openBlock(), createElementBlock("div", null, [
|
|
128
128
|
createElementVNode("div", {
|
|
129
|
-
class: "
|
|
129
|
+
class: "bg-surface-2 dark:bg-surface-2-dark rounded-md p-4 flex flex-col",
|
|
130
130
|
style: normalizeStyle({ minHeight: "500px", backgroundColor: _ctx.bgColor })
|
|
131
131
|
}, [
|
|
132
132
|
createElementVNode("div", _hoisted_1, [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EpBranchingScenario.vue2.js","sources":["../../../src/components/educationals/EpBranchingScenario.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { ref, computed } from \"vue\";\nimport { useRenderText } from \"~/composables/useRenderText\";\nimport type { TreeNode } from \"~/types/Hierarchy\";\nimport EpIcon from \"~/components/basics/EpIcon.vue\";\nimport Details from \"~/components/tools/Details.vue\";\nimport EpModal from \"~/components/interactions/EpModal.vue\";\nimport EpHierarchy from \"~/components/medias/EpHierarchy.vue\";\nimport EpBtn from \"../basics/EpBtn.vue\";\nimport { mdiArrowLeft } from \"@mdi/js\";\nimport TextMedia from \"~/components/tools/TextMedia.vue\";\nimport type { EpBranchingScenarioProps } from \"~/types/educationals/EpBranchingScenario\";\n\nconst props = withDefaults(defineProps<EpBranchingScenarioProps>(), {\n initialInstruction: null,\n transitionAnimation: \"fade\",\n labelFinish: \"Vous avez terminé le scénario!\",\n labelYourPath: \"Votre parcours\",\n labelShowFullPath: \"Voir le parcours au complet\",\n labelClose: \"Fermer\",\n labelRestart: \"Recommencer\",\n labelStart: \"Commencer\",\n colorRect: \"fill-main-color-400\",\n colorPath: \"stroke-yellow-400\",\n});\n\nconst showPath = ref(false);\nconst path = ref<TreeNode[]>([]);\nconst userPath = ref<TreeNode | null>(null);\nconst currentOption = ref<TreeNode | null>(null);\n\n// Manage the introductory part\nconst isIntroductoryPart = ref(true);\n\nconst start = () => {\n isIntroductoryPart.value = false;\n currentOption.value = props.decisionTree;\n};\n\nconst styleIntro = computed(() => {\n const noInstruction = !props.initialInstruction;\n const noMedia = !props.media;\n\n if (noInstruction && noMedia) {\n return \"pt-44\";\n }\n\n return \"\";\n});\n\n// Return function\nconst goToPrevious = () => {\n //if(notTheEnd.value){\n if (path.value.length === 0) {\n isIntroductoryPart.value = true;\n currentOption.value = null;\n return;\n }\n\n path.value.pop();\n // Get the previous option in the path\n const lastOption = path.value[path.value.length - 1];\n\n if (lastOption) {\n currentOption.value = lastOption;\n } else {\n currentOption.value = props.decisionTree;\n }\n};\n\n// Restart function\nconst restart = () => {\n //currentSlide.value = 0;\n currentOption.value = null;\n isIntroductoryPart.value = true;\n path.value = [];\n};\n\nconst nextSlide = (option: TreeNode) => {\n //currentSlide.value++\n path.value.push(option);\n if (option.children && option.children.length > 0) {\n currentOption.value = option; // drill into next level\n } else {\n currentOption.value = null; // reached the end (leaf node)\n userPath.value = convertOptionToTreeNode(props.decisionTree, path.value);\n }\n};\n\n//helper function\nfunction convertOptionToTreeNode(option: TreeNode, path: TreeNode[]): TreeNode {\n const isActive = path.includes(option);\n return {\n name: option.name,\n text: option.text,\n component: option.component,\n active: isActive,\n children: option.children?.map((child) =>\n convertOptionToTreeNode(child, path)\n ),\n };\n}\n</script>\n\n<template>\n <div>\n <div\n class=\"ep-surface-2 rounded-md p-4 flex flex-col\"\n :style=\"{ minHeight: '500px', backgroundColor: bgColor }\"\n >\n <!-- <div v-for=\"item in path\" :key=\"item.name\">\n <span class=\"text-xs\">{{ item.name }}</span>\n </div> -->\n <!-- Header (fixed at top of card) -->\n <div class=\"mb-2\">\n <h1 class=\"font-bold text-3xl text-center\">{{ title }}</h1>\n <div v-if=\"currentOption\" class=\"mt-2\">\n <EpBtn\n type=\"primary\"\n rounded\n size=\"small\"\n :extra-class=\"`${transitionAnimation}`\"\n @click=\"goToPrevious\"\n >\n <EpIcon :icon-path=\"mdiArrowLeft\" size=\"25\" />\n </EpBtn>\n </div>\n </div>\n\n <!-- Content Area -->\n <div>\n <!-- Introductory Part -->\n <div v-if=\"isIntroductoryPart\" class=\"w-full flex flex-col space-y-6\">\n <TextMedia\n :text=\"initialInstruction ?? ''\"\n :media=\"media\"\n :cols=\"initialTwoCols\"\n />\n <div :class=\"`justify-center flex ${styleIntro}`\">\n <EpBtn type=\"primary\" rounded @click=\"start\">{{\n labelStart\n }}</EpBtn>\n </div>\n </div>\n\n <!-- Slides -->\n <template v-else-if=\"currentOption && !isIntroductoryPart\">\n <div class=\"w-full\">\n <div :class=\"`${transitionAnimation} my-12`\">\n <TextMedia\n :text=\"currentOption.text ?? ''\"\n :media=\"currentOption.component\"\n :cols=\"currentOption.cols\"\n />\n\n <div\n :class=\"`w-full my-4 mx-4 flex flex-wrap gap-2 justify-center items-center`\"\n >\n <template\n v-for=\"(option, index) in currentOption.children\"\n :key=\"`option-${index}`\"\n >\n <EpBtn\n rounded\n type=\"primary\"\n class=\"flex-1 min-w-[120px] sm:min-w-[160px] max-w-xs\"\n @click=\"nextSlide(option)\"\n >\n {{ option.name }}\n </EpBtn>\n </template>\n </div>\n </div>\n </div>\n </template>\n\n <!--show path-->\n <div v-else>\n <!-- <template v-if=\"userPath\">\n <EpHierarchy :nodes=\"userPath\"/>\n </template> -->\n <h3 class=\"text-xl text-center font-semibold\">{{ labelFinish }}</h3>\n <div\n :class=\"`flex gap-6 mt-3 ${\n !generalFeedback ? 'w-3/6 mx-auto' : ''\n }`\"\n >\n <div class=\"w-full\">\n <h3 class=\"font-semibold mb-3\">{{ labelYourPath }}</h3>\n <div class=\"overflow-auto p-2\" :style=\"{ height: '200px' }\">\n <template v-for=\"(item, i) in path\" :key=\"`user-choice-${i}`\">\n <div class=\"mb-2\">\n <Details\n :content=\"item.text ?? ''\"\n :title=\"item.name\"\n :media=\"item.component\"\n />\n </div>\n </template>\n </div>\n <div class=\"flex justify-center mt-2\">\n <EpBtn type=\"info\" rounded @click=\"showPath = true\">{{\n labelShowFullPath\n }}</EpBtn>\n </div>\n <EpModal v-if=\"userPath\" v-model=\"showPath\">\n <EpHierarchy\n :nodes=\"userPath\"\n :is-cluster=\"props.isCluster\"\n :color-path=\"props.colorPath\"\n :color-rect=\"props.colorRect\"\n />\n <div class=\"flex justify-end mt-4\">\n <EpBtn\n @click=\"showPath = false\"\n type=\"error\"\n outlined\n rounded\n >{{ labelClose }}</EpBtn\n >\n </div>\n </EpModal>\n </div>\n <div\n v-if=\"generalFeedback\"\n class=\"flex w-full flex-col col-span-1 items-center px-4 border-l-2 border-gray-700 overflow-auto\"\n >\n <div v-html=\"useRenderText(generalFeedback)\" />\n </div>\n </div>\n\n <div class=\"flex justify-center mt-2\">\n <EpBtn rounded type=\"warning\" @click=\"restart\">{{\n labelRestart\n }}</EpBtn>\n </div>\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<style scoped>\n@keyframes fade {\n 0% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n }\n}\n\n@keyframes scale {\n 0% {\n transform: scale(0.5);\n opacity: 0;\n }\n 100% {\n transform: scale(1);\n opacity: 1;\n }\n}\n\n@keyframes slideY {\n 0% {\n transform: translateY(-100%);\n opacity: 0;\n }\n 100% {\n transform: translateY(0);\n opacity: 1;\n }\n}\n\n/* Transition animation */\n.fade {\n animation: fade 1s;\n}\n\n.scale {\n animation: scale 1s;\n}\n\n.slideY {\n animation: slideY 1s;\n}\n</style>\n"],"names":["path","_createElementBlock","_createElementVNode","bgColor","_toDisplayString","title","_openBlock","_createVNode","EpBtn","transitionAnimation","EpIcon","_unref","TextMedia","initialInstruction","media","initialTwoCols","labelStart","_Fragment","_createBlock","_createTextVNode","labelFinish","_normalizeClass","generalFeedback","labelYourPath","_renderList","Details","_a","labelShowFullPath","EpModal","EpHierarchy","labelClose","labelRestart"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAaA,UAAM,QAAQ;AAad,UAAM,WAAW,IAAI,KAAK;AAC1B,UAAM,OAAO,IAAgB,EAAE;AAC/B,UAAM,WAAW,IAAqB,IAAI;AAC1C,UAAM,gBAAgB,IAAqB,IAAI;AAG/C,UAAM,qBAAqB,IAAI,IAAI;AAEnC,UAAM,QAAQ,MAAM;AAClB,yBAAmB,QAAQ;AAC3B,oBAAc,QAAQ,MAAM;AAAA,IAC9B;AAEA,UAAM,aAAa,SAAS,MAAM;AAChC,YAAM,gBAAgB,CAAC,MAAM;AAC7B,YAAM,UAAU,CAAC,MAAM;AAEvB,UAAI,iBAAiB,SAAS;AAC5B,eAAO;AAAA,MACT;AAEA,aAAO;AAAA,IACT,CAAC;AAGD,UAAM,eAAe,MAAM;AAEzB,UAAI,KAAK,MAAM,WAAW,GAAG;AAC3B,2BAAmB,QAAQ;AAC3B,sBAAc,QAAQ;AACtB;AAAA,MACF;AAEA,WAAK,MAAM,IAAA;AAEX,YAAM,aAAa,KAAK,MAAM,KAAK,MAAM,SAAS,CAAC;AAEnD,UAAI,YAAY;AACd,sBAAc,QAAQ;AAAA,MACxB,OAAO;AACL,sBAAc,QAAQ,MAAM;AAAA,MAC9B;AAAA,IACF;AAGA,UAAM,UAAU,MAAM;AAEpB,oBAAc,QAAQ;AACtB,yBAAmB,QAAQ;AAC3B,WAAK,QAAQ,CAAA;AAAA,IACf;AAEA,UAAM,YAAY,CAAC,WAAqB;AAEtC,WAAK,MAAM,KAAK,MAAM;AACtB,UAAI,OAAO,YAAY,OAAO,SAAS,SAAS,GAAG;AACjD,sBAAc,QAAQ;AAAA,MACxB,OAAO;AACL,sBAAc,QAAQ;AACtB,iBAAS,QAAQ,wBAAwB,MAAM,cAAc,KAAK,KAAK;AAAA,MACzE;AAAA,IACF;AAGA,aAAS,wBAAwB,QAAkBA,OAA4B;;AAC7E,YAAM,WAAWA,MAAK,SAAS,MAAM;AACrC,aAAO;AAAA,QACL,MAAM,OAAO;AAAA,QACb,MAAM,OAAO;AAAA,QACb,WAAW,OAAO;AAAA,QAClB,QAAQ;AAAA,QACR,WAAU,YAAO,aAAP,mBAAiB;AAAA,UAAI,CAAC,UAC9B,wBAAwB,OAAOA,KAAI;AAAA;AAAA,MACrC;AAAA,IAEJ;;;0BAIEC,mBAsIM,OAAA,MAAA;AAAA,QArIJC,mBAoIM,OAAA;AAAA,UAnIJ,OAAM;AAAA,UACL,6DAA8CC,KAAAA,SAAO;AAAA,QAAA;UAMtDD,mBAaM,OAbN,YAaM;AAAA,YAZJA,mBAA2D,MAA3D,YAA2DE,gBAAbC,KAAAA,KAAK,GAAA,CAAA;AAAA,YACxC,cAAA,SAAXC,UAAA,GAAAL,mBAUM,OAVN,YAUM;AAAA,cATJM,YAQQC,aAAA;AAAA,gBAPN,MAAK;AAAA,gBACL,SAAA;AAAA,gBACA,MAAK;AAAA,gBACJ,kBAAgBC,KAAAA,mBAAmB;AAAA,gBACnC,SAAO;AAAA,cAAA;iCAER,MAA8C;AAAA,kBAA9CF,YAA8CG,aAAA;AAAA,oBAArC,aAAWC,MAAA,YAAA;AAAA,oBAAc,MAAK;AAAA,kBAAA;;;;;;UAM7CT,mBA2GM,OAAA,MAAA;AAAA,YAzGO,mBAAA,SAAXI,UAAA,GAAAL,mBAWM,OAXN,YAWM;AAAA,cAVJM,YAIEK,aAAA;AAAA,gBAHC,OAAMC,UAAAA,uBAAAA,YAAkB;AAAA,gBACxB,OAAOC,KAAAA;AAAAA,gBACP,MAAMC,KAAAA;AAAAA,cAAAA;cAETb,mBAIM,OAAA;AAAA,gBAJA,6CAA8B,WAAA,KAAU,EAAA;AAAA,cAAA;gBAC5CK,YAEUC,aAAA;AAAA,kBAFH,MAAK;AAAA,kBAAU,SAAA;AAAA,kBAAS,SAAO;AAAA,gBAAA;mCAAO,MAE3C;AAAA,oDADAQ,KAAAA,UAAU,GAAA,CAAA;AAAA,kBAAA;;;;kBAMK,cAAA,UAAkB,mBAAA,SACrCV,aAAAL,mBA0BM,OA1BN,YA0BM;AAAA,cAzBJC,mBAwBM,OAAA;AAAA,gBAxBA,yBAAUO,KAAAA,mBAAmB,QAAA;AAAA,cAAA;gBACjCF,YAIEK,aAAA;AAAA,kBAHC,OAAM,mBAAA,MAAc,SAAd,YAAkB;AAAA,kBACxB,OAAO,cAAA,MAAc;AAAA,kBACrB,MAAM,cAAA,MAAc;AAAA,gBAAA;gBAGvBV,mBAgBM,OAhBN,YAgBM;AAAA,mBAbJI,UAAA,IAAA,GAAAL,mBAYWgB,2BAXiB,cAAA,MAAc,UAAQ,CAAxC,QAAQ,UAAK;wCAGrBC,YAOQV,aAAA;AAAA,qCATQ,KAAK;AAAA,sBAGnB,SAAA;AAAA,sBACA,MAAK;AAAA,sBACL,OAAM;AAAA,sBACL,SAAK,CAAA,WAAE,UAAU,MAAM;AAAA,oBAAA;uCAExB,MAAiB;AAAA,wBAAdW,gBAAAf,gBAAA,OAAO,IAAI,GAAA,CAAA;AAAA,sBAAA;;;;;;gCAS1BH,mBA2DM,OAAA,YAAA;AAAA,cAvDJC,mBAAoE,MAApE,YAAoEE,gBAAnBgB,KAAAA,WAAW,GAAA,CAAA;AAAA,cAC5DlB,mBA+CM,OAAA;AAAA,gBA9CH,OAAKmB,eAAA,oBAAqCC,KAAAA,kBAAe,kBAAA;;gBAI1DpB,mBAmCM,OAnCN,YAmCM;AAAA,kBAlCJA,mBAAuD,MAAvD,aAAuDE,gBAArBmB,KAAAA,aAAa,GAAA,CAAA;AAAA,kBAC/CrB,mBAUM,OAVN,aAUM;AAAA,qBATJI,UAAA,IAAA,GAAAL,mBAQWgB,UAAA,MAAAO,WARmB,KAAA,OAAI,CAAhB,MAAM,MAAC;;0CACvBvB,mBAMM,OAAA;AAAA,4CAPiD,CAAC;AAAA,wBACnD,OAAM;AAAA,sBAAA;wBACTM,YAIEkB,aAAA;AAAA,0BAHC,UAASC,MAAA,KAAK,SAAL,OAAAA,MAAS;AAAA,0BAClB,OAAO,KAAK;AAAA,0BACZ,OAAO,KAAK;AAAA,wBAAA;;;;kBAKrBxB,mBAIM,OAJN,aAIM;AAAA,oBAHJK,YAEUC,aAAA;AAAA,sBAFH,MAAK;AAAA,sBAAO,SAAA;AAAA,sBAAS,+CAAO,SAAA,QAAQ;AAAA,oBAAA;uCAAS,MAElD;AAAA,wDADAmB,KAAAA,iBAAiB,GAAA,CAAA;AAAA,sBAAA;;;;kBAGN,SAAA,sBAAfT,YAgBUU,aAAA;AAAA;gCAhBwB,SAAA;AAAA,iFAAA,SAAQ,QAAA;AAAA,kBAAA;qCACxC,MAKE;AAAA,sBALFrB,YAKEsB,MAAA;AAAA,wBAJC,OAAO,SAAA;AAAA,wBACP,cAAY,MAAM;AAAA,wBAClB,cAAY,MAAM;AAAA,wBAClB,cAAY,MAAM;AAAA,sBAAA;sBAErB3B,mBAQM,OARN,aAQM;AAAA,wBAPJK,YAMCC,aAAA;AAAA,0BALE,+CAAO,SAAA,QAAQ;AAAA,0BAChB,MAAK;AAAA,0BACL,UAAA;AAAA,0BACA,SAAA;AAAA,wBAAA;2CACC,MAAgB;AAAA,4DAAbsB,KAAAA,UAAU,GAAA,CAAA;AAAA,0BAAA;;;;;;;;gBAMdR,KAAAA,mBADRhB,UAAA,GAAAL,mBAKM,OALN,aAKM;AAAA,kBADJC,mBAA+C,OAAA;AAAA,oBAA1C,WAAQS,MAAA,aAAA,EAAcW,KAAAA,eAAe;AAAA,kBAAA;;;cAI9CpB,mBAIM,OAJN,aAIM;AAAA,gBAHJK,YAEUC,aAAA;AAAA,kBAFH,SAAA;AAAA,kBAAQ,MAAK;AAAA,kBAAW,SAAO;AAAA,gBAAA;mCAAS,MAE7C;AAAA,oDADAuB,KAAAA,YAAY,GAAA,CAAA;AAAA,kBAAA;;;;;;;;;;;"}
|
|
1
|
+
{"version":3,"file":"EpBranchingScenario.vue2.js","sources":["../../../src/components/educationals/EpBranchingScenario.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { ref, computed } from \"vue\";\nimport { useRenderText } from \"~/composables/useRenderText\";\nimport type { TreeNode } from \"~/types/Hierarchy\";\nimport EpIcon from \"~/components/basics/EpIcon.vue\";\nimport Details from \"~/components/tools/Details.vue\";\nimport EpModal from \"~/components/interactions/EpModal.vue\";\nimport EpHierarchy from \"~/components/medias/EpHierarchy.vue\";\nimport EpBtn from \"../basics/EpBtn.vue\";\nimport { mdiArrowLeft } from \"@mdi/js\";\nimport TextMedia from \"~/components/tools/TextMedia.vue\";\nimport type { EpBranchingScenarioProps } from \"~/types/educationals/EpBranchingScenario\";\n\nconst props = withDefaults(defineProps<EpBranchingScenarioProps>(), {\n initialInstruction: null,\n transitionAnimation: \"fade\",\n labelFinish: \"Vous avez terminé le scénario!\",\n labelYourPath: \"Votre parcours\",\n labelShowFullPath: \"Voir le parcours au complet\",\n labelClose: \"Fermer\",\n labelRestart: \"Recommencer\",\n labelStart: \"Commencer\",\n colorRect: \"fill-main-color-400\",\n colorPath: \"stroke-yellow-400\",\n});\n\nconst showPath = ref(false);\nconst path = ref<TreeNode[]>([]);\nconst userPath = ref<TreeNode | null>(null);\nconst currentOption = ref<TreeNode | null>(null);\n\n// Manage the introductory part\nconst isIntroductoryPart = ref(true);\n\nconst start = () => {\n isIntroductoryPart.value = false;\n currentOption.value = props.decisionTree;\n};\n\nconst styleIntro = computed(() => {\n const noInstruction = !props.initialInstruction;\n const noMedia = !props.media;\n\n if (noInstruction && noMedia) {\n return \"pt-44\";\n }\n\n return \"\";\n});\n\n// Return function\nconst goToPrevious = () => {\n //if(notTheEnd.value){\n if (path.value.length === 0) {\n isIntroductoryPart.value = true;\n currentOption.value = null;\n return;\n }\n\n path.value.pop();\n // Get the previous option in the path\n const lastOption = path.value[path.value.length - 1];\n\n if (lastOption) {\n currentOption.value = lastOption;\n } else {\n currentOption.value = props.decisionTree;\n }\n};\n\n// Restart function\nconst restart = () => {\n //currentSlide.value = 0;\n currentOption.value = null;\n isIntroductoryPart.value = true;\n path.value = [];\n};\n\nconst nextSlide = (option: TreeNode) => {\n //currentSlide.value++\n path.value.push(option);\n if (option.children && option.children.length > 0) {\n currentOption.value = option; // drill into next level\n } else {\n currentOption.value = null; // reached the end (leaf node)\n userPath.value = convertOptionToTreeNode(props.decisionTree, path.value);\n }\n};\n\n//helper function\nfunction convertOptionToTreeNode(option: TreeNode, path: TreeNode[]): TreeNode {\n const isActive = path.includes(option);\n return {\n name: option.name,\n text: option.text,\n component: option.component,\n active: isActive,\n children: option.children?.map((child) =>\n convertOptionToTreeNode(child, path)\n ),\n };\n}\n</script>\n\n<template>\n <div>\n <div\n class=\"bg-surface-2 dark:bg-surface-2-dark rounded-md p-4 flex flex-col\"\n :style=\"{ minHeight: '500px', backgroundColor: bgColor }\"\n >\n <!-- <div v-for=\"item in path\" :key=\"item.name\">\n <span class=\"text-xs\">{{ item.name }}</span>\n </div> -->\n <!-- Header (fixed at top of card) -->\n <div class=\"mb-2\">\n <h1 class=\"font-bold text-3xl text-center\">{{ title }}</h1>\n <div v-if=\"currentOption\" class=\"mt-2\">\n <EpBtn\n type=\"primary\"\n rounded\n size=\"small\"\n :extra-class=\"`${transitionAnimation}`\"\n @click=\"goToPrevious\"\n >\n <EpIcon :icon-path=\"mdiArrowLeft\" size=\"25\" />\n </EpBtn>\n </div>\n </div>\n\n <!-- Content Area -->\n <div>\n <!-- Introductory Part -->\n <div v-if=\"isIntroductoryPart\" class=\"w-full flex flex-col space-y-6\">\n <TextMedia\n :text=\"initialInstruction ?? ''\"\n :media=\"media\"\n :cols=\"initialTwoCols\"\n />\n <div :class=\"`justify-center flex ${styleIntro}`\">\n <EpBtn type=\"primary\" rounded @click=\"start\">{{\n labelStart\n }}</EpBtn>\n </div>\n </div>\n\n <!-- Slides -->\n <template v-else-if=\"currentOption && !isIntroductoryPart\">\n <div class=\"w-full\">\n <div :class=\"`${transitionAnimation} my-12`\">\n <TextMedia\n :text=\"currentOption.text ?? ''\"\n :media=\"currentOption.component\"\n :cols=\"currentOption.cols\"\n />\n\n <div\n :class=\"`w-full my-4 mx-4 flex flex-wrap gap-2 justify-center items-center`\"\n >\n <template\n v-for=\"(option, index) in currentOption.children\"\n :key=\"`option-${index}`\"\n >\n <EpBtn\n rounded\n type=\"primary\"\n class=\"flex-1 min-w-[120px] sm:min-w-[160px] max-w-xs\"\n @click=\"nextSlide(option)\"\n >\n {{ option.name }}\n </EpBtn>\n </template>\n </div>\n </div>\n </div>\n </template>\n\n <!--show path-->\n <div v-else>\n <!-- <template v-if=\"userPath\">\n <EpHierarchy :nodes=\"userPath\"/>\n </template> -->\n <h3 class=\"text-xl text-center font-semibold\">{{ labelFinish }}</h3>\n <div\n :class=\"`flex gap-6 mt-3 ${\n !generalFeedback ? 'w-3/6 mx-auto' : ''\n }`\"\n >\n <div class=\"w-full\">\n <h3 class=\"font-semibold mb-3\">{{ labelYourPath }}</h3>\n <div class=\"overflow-auto p-2\" :style=\"{ height: '200px' }\">\n <template v-for=\"(item, i) in path\" :key=\"`user-choice-${i}`\">\n <div class=\"mb-2\">\n <Details\n :content=\"item.text ?? ''\"\n :title=\"item.name\"\n :media=\"item.component\"\n />\n </div>\n </template>\n </div>\n <div class=\"flex justify-center mt-2\">\n <EpBtn type=\"info\" rounded @click=\"showPath = true\">{{\n labelShowFullPath\n }}</EpBtn>\n </div>\n <EpModal v-if=\"userPath\" v-model=\"showPath\">\n <EpHierarchy\n :nodes=\"userPath\"\n :is-cluster=\"props.isCluster\"\n :color-path=\"props.colorPath\"\n :color-rect=\"props.colorRect\"\n />\n <div class=\"flex justify-end mt-4\">\n <EpBtn\n @click=\"showPath = false\"\n type=\"error\"\n outlined\n rounded\n >{{ labelClose }}</EpBtn\n >\n </div>\n </EpModal>\n </div>\n <div\n v-if=\"generalFeedback\"\n class=\"flex w-full flex-col col-span-1 items-center px-4 border-l-2 border-gray-700 overflow-auto\"\n >\n <div v-html=\"useRenderText(generalFeedback)\" />\n </div>\n </div>\n\n <div class=\"flex justify-center mt-2\">\n <EpBtn rounded type=\"warning\" @click=\"restart\">{{\n labelRestart\n }}</EpBtn>\n </div>\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<style scoped>\n@keyframes fade {\n 0% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n }\n}\n\n@keyframes scale {\n 0% {\n transform: scale(0.5);\n opacity: 0;\n }\n 100% {\n transform: scale(1);\n opacity: 1;\n }\n}\n\n@keyframes slideY {\n 0% {\n transform: translateY(-100%);\n opacity: 0;\n }\n 100% {\n transform: translateY(0);\n opacity: 1;\n }\n}\n\n/* Transition animation */\n.fade {\n animation: fade 1s;\n}\n\n.scale {\n animation: scale 1s;\n}\n\n.slideY {\n animation: slideY 1s;\n}\n</style>\n"],"names":["path","_createElementBlock","_createElementVNode","bgColor","_toDisplayString","title","_openBlock","_createVNode","EpBtn","transitionAnimation","EpIcon","_unref","TextMedia","initialInstruction","media","initialTwoCols","labelStart","_Fragment","_createBlock","_createTextVNode","labelFinish","_normalizeClass","generalFeedback","labelYourPath","_renderList","Details","_a","labelShowFullPath","EpModal","EpHierarchy","labelClose","labelRestart"],"mappings":"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"}
|
|
@@ -71,7 +71,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
71
71
|
return `flex flex-col justify-between`;
|
|
72
72
|
});
|
|
73
73
|
const bgColor = computed(() => {
|
|
74
|
-
return props.card ? "
|
|
74
|
+
return props.card ? "bg-surface-2 dark:bg-surface-2-dark" : "bg-surface dark:bg-surface-dark";
|
|
75
75
|
});
|
|
76
76
|
const { title, hideIcon } = toRefs(props);
|
|
77
77
|
return (_ctx, _cache) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EpEdu.vue.js","sources":["../../../src/components/educationals/EpEdu.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { toRefs, computed, useSlots, type SetupContext } from \"vue\";\nimport { mediaVariants } from \"~/types/Medias\";\nimport EpIcon from \"~/components/basics/EpIcon.vue\";\nimport EpDivider from \"~/components/basics/EpDivider.vue\";\nimport EpScope from \"~/components/educationals/EpScope.vue\";\nimport { mdiLeadPencil } from \"@mdi/js\";\nimport type { EpEduProps } from \"~/types/educationals/EpEdu\";\n\nconst props = withDefaults(defineProps<EpEduProps>(), {\n title: null,\n type: \"neutral\",\n hideIcon: false,\n flat: true,\n labelIntentions: \"\",\n card: false\n});\n\n//get slots\nconst slots: SetupContext[\"slots\"] = useSlots();\n\nconst hasIntentions = computed(() => {\n return slots.intentions ? true : false;\n});\n\nconst hasActions = computed(() => {\n return slots.actions ? true : false;\n});\n\nconst renderIcon = computed(() => {\n if (props.icon) {\n return props.icon;\n }\n return mdiLeadPencil;\n});\n\nconst topBarStyle = computed(() => {\n return `${mediaVariants[props.type]} text-left ${\n props.flat ? \"\" : \"rounded-t-md\"\n } flex justify-between items-center `;\n});\n\nconst bottomBarStyle = computed(() => {\n return `${mediaVariants[props.type]} text-right`;\n});\n\nconst paddingTopStyle = computed(() => {\n if (props.type != \"neutral\") {\n return `px-5 py-2`;\n }\n});\n\nconst paddingBottomStyle = computed(() => {\n if (props.type != \"neutral\") {\n return `pr-5`;\n }\n});\nconst boxPaddingStyle = computed(() => {\n if (props.type != \"neutral\") {\n return `px-5`;\n }\n});\n\nconst containerStyle = computed(() => {\n if (hasActions.value || hasIntentions.value || props.title) {\n return ` overflow-hidden ${\n props.flat ? \"\" : \"shadow-md\"\n } flex flex-col justify-start h-full`;\n }\n return `flex flex-col justify-between`;\n});\n\n\nconst bgColor = computed(()=> {\n return props.card ? '
|
|
1
|
+
{"version":3,"file":"EpEdu.vue.js","sources":["../../../src/components/educationals/EpEdu.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { toRefs, computed, useSlots, type SetupContext } from \"vue\";\nimport { mediaVariants } from \"~/types/Medias\";\nimport EpIcon from \"~/components/basics/EpIcon.vue\";\nimport EpDivider from \"~/components/basics/EpDivider.vue\";\nimport EpScope from \"~/components/educationals/EpScope.vue\";\nimport { mdiLeadPencil } from \"@mdi/js\";\nimport type { EpEduProps } from \"~/types/educationals/EpEdu\";\n\nconst props = withDefaults(defineProps<EpEduProps>(), {\n title: null,\n type: \"neutral\",\n hideIcon: false,\n flat: true,\n labelIntentions: \"\",\n card: false\n});\n\n//get slots\nconst slots: SetupContext[\"slots\"] = useSlots();\n\nconst hasIntentions = computed(() => {\n return slots.intentions ? true : false;\n});\n\nconst hasActions = computed(() => {\n return slots.actions ? true : false;\n});\n\nconst renderIcon = computed(() => {\n if (props.icon) {\n return props.icon;\n }\n return mdiLeadPencil;\n});\n\nconst topBarStyle = computed(() => {\n return `${mediaVariants[props.type]} text-left ${\n props.flat ? \"\" : \"rounded-t-md\"\n } flex justify-between items-center `;\n});\n\nconst bottomBarStyle = computed(() => {\n return `${mediaVariants[props.type]} text-right`;\n});\n\nconst paddingTopStyle = computed(() => {\n if (props.type != \"neutral\") {\n return `px-5 py-2`;\n }\n});\n\nconst paddingBottomStyle = computed(() => {\n if (props.type != \"neutral\") {\n return `pr-5`;\n }\n});\nconst boxPaddingStyle = computed(() => {\n if (props.type != \"neutral\") {\n return `px-5`;\n }\n});\n\nconst containerStyle = computed(() => {\n if (hasActions.value || hasIntentions.value || props.title) {\n return ` overflow-hidden ${\n props.flat ? \"\" : \"shadow-md\"\n } flex flex-col justify-start h-full`;\n }\n return `flex flex-col justify-between`;\n});\n\n\nconst bgColor = computed(()=> {\n return props.card ? 'bg-surface-2 dark:bg-surface-2-dark' : 'bg-surface dark:bg-surface-dark'\n})\n\n\n\nconst { title, hideIcon } = toRefs(props);\n</script>\n\n<template>\n <div :class=\"`${containerStyle} ${bgColor}`\">\n <div\n :class=\"`${topBarStyle} ${paddingTopStyle}`\"\n v-if=\"title || mandateLevel\"\n >\n <!-- <EpIcon :size=\"24\" :icon-path=\"mdiBookOpenVariant\"/> -->\n <h3>\n <EpIcon\n v-if=\"!hideIcon\"\n :iconPath=\"renderIcon\"\n size=\"24\"\n class=\"mr-2\"\n />\n <span class=\"font-bold align-middle\">{{ title }}</span>\n </h3>\n <EpScope v-if=\"mandateLevel\" :mandateLevel=\"mandateLevel\"></EpScope>\n </div>\n <div :class=\"`${boxPaddingStyle} `\">\n <div class=\"py-4\" v-if=\"hasIntentions\">\n <!-- <EpIcon :size=\"24\" :icon-path=\"mdiInformationOutline\"/> -->\n <h4\n v-if=\"labelIntentions\"\n class=\"font-light text-sm pb-1 tracking-wide\"\n >\n {{ labelIntentions }}\n </h4>\n <slot name=\"intentions\" />\n <EpDivider />\n </div>\n <div class=\"pt-2\">\n <slot name=\"content\" />\n </div>\n </div>\n <div\n :class=\"`${bottomBarStyle} ${paddingBottomStyle}`\"\n v-if=\"hasActions\"\n >\n <slot name=\"actions\" />\n </div>\n </div>\n</template>\n"],"names":["_createElementBlock","_normalizeClass","_unref","mandateLevel","_createElementVNode","_createBlock","EpIcon","_toDisplayString","EpScope","_openBlock","labelIntentions","_renderSlot","_createVNode","EpDivider"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASA,UAAM,QAAQ;AAUd,UAAM,QAA+B,SAAA;AAErC,UAAM,gBAAgB,SAAS,MAAM;AACnC,aAAO,MAAM,aAAa,OAAO;AAAA,IACnC,CAAC;AAED,UAAM,aAAa,SAAS,MAAM;AAChC,aAAO,MAAM,UAAU,OAAO;AAAA,IAChC,CAAC;AAED,UAAM,aAAa,SAAS,MAAM;AAChC,UAAI,MAAM,MAAM;AACd,eAAO,MAAM;AAAA,MACf;AACA,aAAO;AAAA,IACT,CAAC;AAED,UAAM,cAAc,SAAS,MAAM;AACjC,aAAO,GAAG,cAAc,MAAM,IAAI,CAAC,eACjC,MAAM,OAAO,KAAK,cACpB;AAAA,IACF,CAAC;AAED,UAAM,iBAAiB,SAAS,MAAM;AACpC,aAAO,GAAG,cAAc,MAAM,IAAI,CAAC;AAAA,IACrC,CAAC;AAED,UAAM,kBAAkB,SAAS,MAAM;AACrC,UAAI,MAAM,QAAQ,WAAW;AAC3B,eAAO;AAAA,MACT;AAAA,IACF,CAAC;AAED,UAAM,qBAAqB,SAAS,MAAM;AACxC,UAAI,MAAM,QAAQ,WAAW;AAC3B,eAAO;AAAA,MACT;AAAA,IACF,CAAC;AACD,UAAM,kBAAkB,SAAS,MAAM;AACrC,UAAI,MAAM,QAAQ,WAAW;AAC3B,eAAO;AAAA,MACT;AAAA,IACF,CAAC;AAED,UAAM,iBAAiB,SAAS,MAAM;AACpC,UAAI,WAAW,SAAS,cAAc,SAAS,MAAM,OAAO;AAC1D,eAAO,oBACL,MAAM,OAAO,KAAK,WACpB;AAAA,MACF;AACA,aAAO;AAAA,IACT,CAAC;AAGD,UAAM,UAAU,SAAS,MAAK;AAC3B,aAAO,MAAM,OAAO,wCAAwC;AAAA,IAC/D,CAAC;AAID,UAAM,EAAE,OAAO,aAAa,OAAO,KAAK;;0BAItCA,mBAuCM,OAAA;AAAA,QAvCA,OAAKC,eAAA,GAAK,eAAA,KAAc,IAAI,QAAA,KAAO,EAAA;AAAA,MAAA;QAG/BC,MAAA,KAAA,KAASC,KAAAA,6BAFjBH,mBAeM,OAAA;AAAA;UAdH,OAAKC,eAAA,GAAK,YAAA,KAAW,IAAI,gBAAA,KAAe,EAAA;AAAA,QAAA;UAIzCG,mBAQK,MAAA,MAAA;AAAA,aANMF,MAAA,QAAA,kBADTG,YAKEC,aAAA;AAAA;cAHC,UAAU,WAAA;AAAA,cACX,MAAK;AAAA,cACL,OAAM;AAAA,YAAA;YAERF,mBAAuD,QAAvD,YAAuDG,gBAAfL,MAAA,KAAA,CAAK,GAAA,CAAA;AAAA,UAAA;UAEhCC,KAAAA,6BAAfE,YAAoEG,aAAA;AAAA;YAAtC,cAAcL,KAAAA;AAAAA,UAAAA;;QAE9CC,mBAeM,OAAA;AAAA,UAfA,yBAAU,gBAAA,KAAe,GAAA;AAAA,QAAA;UACL,cAAA,SAAxBK,UAAA,GAAAT,mBAUM,OAVN,YAUM;AAAA,YAPIU,KAAAA,gCADRV,mBAKK,MALL,YAKKO,gBADAG,KAAAA,eAAe,GAAA,CAAA;YAEpBC,WAA0B,KAAA,QAAA,YAAA;AAAA,YAC1BC,YAAaC,WAAA;AAAA,UAAA;UAEfT,mBAEM,OAFN,YAEM;AAAA,YADJO,WAAuB,KAAA,QAAA,SAAA;AAAA,UAAA;;QAKnB,WAAA,sBAFRX,mBAKM,OAAA;AAAA;UAJH,OAAKC,eAAA,GAAK,eAAA,KAAc,IAAI,mBAAA,KAAkB,EAAA;AAAA,QAAA;UAG/CU,WAAuB,KAAA,QAAA,SAAA;AAAA,QAAA;;;;;"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { defineComponent, toRefs, createElementBlock, openBlock, createElementVNode, createBlock, createCommentVNode, createTextVNode, unref, toDisplayString, Fragment, renderList, withCtx } from "vue";
|
|
2
2
|
import _sfc_main$1 from "../basics/EpIcon.vue.js";
|
|
3
3
|
import Comp from "../interactions/EpAccordeon.vue.js";
|
|
4
|
+
import _sfc_main$2 from "../basics/EpImg.vue.js";
|
|
4
5
|
const _hoisted_1 = { class: "lg:grid lg:grid-cols-12 lg:gap-8" };
|
|
5
6
|
const _hoisted_2 = { class: "lg:col-span-2" };
|
|
6
7
|
const _hoisted_3 = { class: "text-pretty text-3xl font-semibold tracking-tight text-gray-900 dark:text-gray-100 sm:text-xl" };
|
|
@@ -44,7 +45,11 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
44
45
|
default: withCtx(() => [
|
|
45
46
|
createElementVNode("div", {
|
|
46
47
|
innerHTML: instruction.content
|
|
47
|
-
}, null, 8, _hoisted_6)
|
|
48
|
+
}, null, 8, _hoisted_6),
|
|
49
|
+
instruction.src ? (openBlock(), createBlock(_sfc_main$2, {
|
|
50
|
+
key: 0,
|
|
51
|
+
src: instruction.src
|
|
52
|
+
}, null, 8, ["src"])) : createCommentVNode("", true)
|
|
48
53
|
]),
|
|
49
54
|
_: 2
|
|
50
55
|
}, 1032, ["title", "open"]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EpInstructions.vue.js","sources":["../../../src/components/educationals/EpInstructions.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { toRefs } from \"vue\";\nimport EpIcon from \"~/components/basics/EpIcon.vue\";\nimport EpAccordeon from \"~/components/interactions/EpAccordeon.vue\";\nimport type { EpInstructionsProps } from \"~/types/educationals/EpInstructions\";\n\nconst props = withDefaults(defineProps<EpInstructionsProps>(), {\n title: \"Consignes\",\n});\n\nconst { title, icon } = toRefs(props);\n</script>\n<template>\n <div class=\"lg:grid lg:grid-cols-12 lg:gap-8\">\n <div class=\"lg:col-span-2\">\n <h2\n class=\"text-pretty text-3xl font-semibold tracking-tight text-gray-900 dark:text-gray-100 sm:text-xl\"\n >\n <EpIcon v-if=\"icon\" :icon-path=\"icon\" size=\"28\" extraClass=\"mr-2\" />\n {{ title }}\n </h2>\n </div>\n <div class=\"lg:col-span-8 lg:mt-0 lg:border-l dark:border-gray-700 lg:pl-4\">\n <div class=\"py-2\">\n <template\n v-for=\"instruction in instructions\"\n :key=\"`instruction-${instruction.uid}`\"\n >\n <EpAccordeon\n small\n outlined\n :title=\"instruction.title\"\n :open=\"instruction.open\"\n >\n <div v-html=\"instruction.content\" />\n </EpAccordeon>\n </template>\n </div>\n </div>\n </div>\n</template>\n"],"names":["_openBlock","_createElementBlock","_createElementVNode","_unref","_createBlock","EpIcon","_createTextVNode","_Fragment","_renderList","instructions","EpAccordeon"],"mappings":"
|
|
1
|
+
{"version":3,"file":"EpInstructions.vue.js","sources":["../../../src/components/educationals/EpInstructions.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { toRefs } from \"vue\";\nimport EpIcon from \"~/components/basics/EpIcon.vue\";\nimport EpAccordeon from \"~/components/interactions/EpAccordeon.vue\";\nimport type { EpInstructionsProps } from \"~/types/educationals/EpInstructions\";\nimport EpImg from \"../basics/EpImg.vue\";\n\nconst props = withDefaults(defineProps<EpInstructionsProps>(), {\n title: \"Consignes\",\n});\n\nconst { title, icon } = toRefs(props);\n</script>\n<template>\n <div class=\"lg:grid lg:grid-cols-12 lg:gap-8\">\n <div class=\"lg:col-span-2\">\n <h2\n class=\"text-pretty text-3xl font-semibold tracking-tight text-gray-900 dark:text-gray-100 sm:text-xl\"\n >\n <EpIcon v-if=\"icon\" :icon-path=\"icon\" size=\"28\" extraClass=\"mr-2\" />\n {{ title }}\n </h2>\n </div>\n <div class=\"lg:col-span-8 lg:mt-0 lg:border-l dark:border-gray-700 lg:pl-4\">\n <div class=\"py-2\">\n <template\n v-for=\"instruction in instructions\"\n :key=\"`instruction-${instruction.uid}`\"\n >\n <EpAccordeon\n small\n outlined\n :title=\"instruction.title\"\n :open=\"instruction.open\"\n >\n <div v-html=\"instruction.content\" />\n <EpImg v-if=\"instruction.src\" :src=\"instruction.src\" />\n </EpAccordeon>\n </template>\n </div>\n </div>\n </div>\n</template>\n"],"names":["_openBlock","_createElementBlock","_createElementVNode","_unref","_createBlock","EpIcon","_createTextVNode","_Fragment","_renderList","instructions","EpAccordeon","EpImg"],"mappings":";;;;;;;;;;;;;;;;;;;AAOA,UAAM,QAAQ;AAId,UAAM,EAAE,OAAO,SAAS,OAAO,KAAK;;AAGlC,aAAAA,UAAA,GAAAC,mBA2BM,OA3BN,YA2BM;AAAA,QA1BJC,mBAOM,OAPN,YAOM;AAAA,UANJA,mBAKK,MALL,YAKK;AAAA,YAFWC,MAAA,IAAA,kBAAdC,YAAoEC,aAAA;AAAA;cAA/C,aAAWF,MAAA,IAAA;AAAA,cAAM,MAAK;AAAA,cAAK,YAAW;AAAA,YAAA;YAASG,gBAAA,sBACjEH,MAAA,KAAA,CAAK,GAAA,CAAA;AAAA,UAAA;;QAGZD,mBAiBM,OAjBN,YAiBM;AAAA,UAhBJA,mBAeM,OAfN,YAeM;AAAA,8BAdJD,mBAaWM,UAAA,MAAAC,WAZaC,KAAAA,cAAY,CAA3B,gBAAW;kCAGlBL,YAQcM,MAAA;AAAA,gBAVO,KAAA,eAAA,YAAY,GAAG;AAAA,gBAGlC,OAAA;AAAA,gBACA,UAAA;AAAA,gBACC,OAAO,YAAY;AAAA,gBACnB,MAAM,YAAY;AAAA,cAAA;iCAEnB,MAAoC;AAAA,kBAApCR,mBAAoC,OAAA;AAAA,oBAA/B,WAAQ,YAAY;AAAA,kBAAA;kBACZ,YAAY,oBAAzBE,YAAuDO,aAAA;AAAA;oBAAxB,KAAK,YAAY;AAAA,kBAAA;;;;;;;;;;;"}
|
|
@@ -8,7 +8,7 @@ import { useRenderText } from "../../composables/useRenderText.js";
|
|
|
8
8
|
import { mdiBookOpenPageVariant, mdiBookOpenVariant, mdiOpenInNew, mdiBookmarkBox } from "@mdi/js";
|
|
9
9
|
const _hoisted_1 = {
|
|
10
10
|
key: 0,
|
|
11
|
-
class: "flex shadow-sm rounded-lg overflow-hidden
|
|
11
|
+
class: "flex shadow-sm rounded-lg overflow-hidden bg-surface-2 dark:bg-surface-2-dark md:flex-row"
|
|
12
12
|
};
|
|
13
13
|
const _hoisted_2 = {
|
|
14
14
|
key: 0,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EpReading.vue.js","sources":["../../../src/components/educationals/EpReading.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { ref, toRefs, computed } from \"vue\";\nimport EpIcon from \"~/components//basics/EpIcon.vue\";\nimport EpBtn from \"~/components//basics/EpBtn.vue\";\nimport DisplayBox from \"~/components/tools/DisplayBox.vue\";\nimport EpModal from \"~/components/interactions/EpModal.vue\";\nimport EpEdu from \"~/components/educationals/EpEdu.vue\";\nimport { useRenderText } from \"~/composables/useRenderText\";\nimport { mdiBookmarkBox } from \"@mdi/js\";\nimport { mdiBookOpenVariant } from \"@mdi/js\";\nimport { mdiBookOpenPageVariant } from \"@mdi/js\";\nimport { mdiOpenInNew } from \"@mdi/js\";\nimport type { EpReadingProps } from \"~/types/educationals/EpReading\";\n\nconst props = withDefaults(defineProps<EpReadingProps>(), {\n title: null,\n cover: \"\",\n icon: \"mdiBookmarkBox\",\n hideCover: false,\n compact: false,\n type: \"neutral\",\n hideIcon: false,\n labelIn: \"dans\",\n labelRead: \"Lire\",\n labelClose: \"Fermer\",\n labelDetails: \"détails\",\n labelCard: \"Lecture\",\n labelIntentions: \"Intentions de lecture\",\n});\n\nconst old_image =\n \"https://live.staticflickr.com/4868/45940268562_c5f7fdd06b_q.jpg\";\nconst bad_image =\n \"https://farm5.staticflickr.com/4868/45940268562_9452f09a61_o.png\";\n\nconst modalCompact = ref(false)\n\nconst hasCover = computed(() => {\n if (\n props.cover === old_image ||\n props.cover.trim().length === 0 ||\n props.cover === bad_image\n ) {\n return false;\n }\n return true;\n});\n\nconst hasDetails = computed(() => {\n if (props.author || props.editor || props.container || props.year) {\n return true;\n }\n return false;\n});\n\nconst {\n title,\n intentions,\n cover,\n hideCover,\n year,\n author,\n container,\n editor,\n pages,\n type,\n mandateLevel,\n url,\n labelIn,\n labelRead,\n labelClose,\n labelDetails,\n labelCard,\n labelIntentions,\n} = toRefs(props);\n\nconst errorImg = (event: Event) => {\n const imgElement = event.target as HTMLImageElement;\n if (imgElement.src) {\n imgElement.src =\n \"https://live.staticflickr.com/4868/45940268562_c5f7fdd06b_q.jpg\";\n }\n};\n</script>\n\n<template>\n <div\n class=\"flex shadow-sm rounded-lg overflow-hidden ep-surface-2 md:flex-row\"\n v-if=\"!compact\"\n >\n <template v-if=\"!hideCover\">\n <div\n v-if=\"hasCover\"\n class=\"h-96 mr-2 w-full rounded-t-lg md:h-auto md:w-56 md:rounded-none md:rounded-l-lg flex justify-center items-center text-gray-300\"\n >\n <img\n :src=\"cover\"\n :alt=\"`image de la lecture ${title}`\"\n @error=\"errorImg\"\n />\n </div>\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-gray-300 dark:bg-dark\"\n >\n <EpIcon :icon-path=\"mdiBookOpenPageVariant\" size=\"95\" />\n </div>\n </template>\n <div class=\"flex py-3 flex-col w-full\">\n <EpEdu\n :title=\"labelCard\"\n :labelIntentions=\"labelIntentions\"\n :icon=\"mdiBookOpenVariant\"\n flat\n :type=\"type\"\n :hideIcon=\"hideIcon\"\n :mandateLevel=\"mandateLevel\"\n card\n >\n <template #intentions v-if=\"intentions\">\n <div v-html=\"useRenderText(intentions)\" />\n </template>\n <template #content>\n <div class=\"w-full\">\n <h4\n :class=\"`text-xl font-semibold ${\n hasDetails || pages ? 'border-b' : ''\n }`\"\n >\n {{ title }}\n </h4>\n <div class=\"flex\">\n <div class=\"flex-1 py-2\" v-if=\"hasDetails\">\n <p class=\"font-medium\">\n <span class=\"font-bold mr-1\" v-if=\"author\">{{ author }}</span>\n <span v-if=\"year\">({{ year }})</span>\n <span v-if=\"year && editor\">, </span>\n <span v-if=\"editor\">{{ editor }}</span>\n </p>\n <p v-if=\"container\">\n <span class=\"text-sm italic pr-1\">{{ labelIn }}</span>\n <span class=\"\">{{ container }}</span>\n </p>\n </div>\n <div\n :class=\"`flex-1 pt-2 pb-2 ${hasDetails ? 'border-l pl-2' : ''}`\"\n v-if=\"pages\"\n >\n <EpIcon :size=\"24\" :icon-path=\"mdiBookmarkBox\" />\n <span class=\"pl-2 align-middle\">{{ pages }}</span>\n </div>\n </div>\n </div>\n </template>\n <template #actions>\n <EpBtn rounded text :href=\"url\" v-if=\"url\" type=\"primary\">\n <EpIcon :size=\"20\" :icon-path=\"mdiOpenInNew\" /> {{ labelRead }}\n </EpBtn>\n </template>\n </EpEdu>\n </div>\n </div>\n <!--compact mode-->\n <EpEdu\n :title=\"labelCard\"\n :labelIntentions=\"labelIntentions\"\n :icon=\"mdiBookOpenVariant\"\n flat\n :type=\"type\"\n :hideIcon=\"hideIcon\"\n v-else\n >\n <template #intentions v-if=\"intentions\">\n <div v-html=\"useRenderText(intentions)\" />\n </template>\n <template #content>\n <div class=\"flex flex-row justify-between\">\n <div class=\"p-5\">\n <span class=\"text-lg leading-6 font-semibold font-sans\">{{\n title\n }}</span>\n </div>\n <div class=\"flex\">\n <div class=\"p-5\">\n <EpBtn rounded text @click.stop=\"modalCompact = true\" type=\"primary\">\n {{ labelDetails }}\n </EpBtn>\n <EpModal v-model=\"modalCompact\" size=\"compact\">\n <div class=\"w-full\">\n <div\n class=\"flex flex-col md:flex-row\"\n >\n <template v-if=\"!hideCover\">\n <img\n v-if=\"hasCover\"\n class=\"object-cover h-96 w-full rounded-t-lg md:h-auto md:w-56 md:rounded-none md:rounded-l-lg\"\n :src=\"cover\"\n :alt=\"`image de la lecture ${title}`\"\n @error=\"errorImg\"\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\"\n >\n <EpIcon :icon-path=\"mdiBookOpenPageVariant\" size=\"95\" />\n </div>\n </template>\n <div class=\"flex flex-col justify-between w-full\">\n <div\n class=\"text-left px-5 py-2\"\n >\n <EpIcon :size=\"24\" :icon-path=\"mdiBookOpenVariant\" />\n <span class=\"pl-2 align-middle\">{{ labelCard }}</span>\n </div>\n <div class=\"w-full px-5\">\n <h4\n :class=\"`text-xl font-semibold py-4 ${\n hasDetails || pages ? 'border-b' : ''\n }`\"\n >\n {{ title }}\n </h4>\n <div class=\"flex\">\n <div class=\"flex-1 py-2\" v-if=\"hasDetails\">\n <p class=\"font-medium\">\n <span class=\"font-bold mr-2\" v-if=\"author\">{{\n author\n }}</span>\n <span v-if=\"year\"> ({{ year }})</span>\n <span v-if=\"year && editor\">, </span>\n <span v-if=\"editor\">{{ editor }}</span>\n </p>\n <p v-if=\"container\">\n <span class=\"text-sm italic pr-1\">{{\n labelIn\n }}</span>\n <span>{{ container }}</span>\n </p>\n </div>\n <div\n :class=\"`flex-1 pt-2 pb-2 ${\n hasDetails ? 'border-l pl-2' : ''\n }`\"\n v-if=\"pages\"\n >\n <EpIcon :size=\"24\" :icon-path=\"mdiBookmarkBox\" />\n <span class=\"pl-2 align-middle\">{{ pages }}</span>\n </div>\n </div>\n </div>\n <div\n class=\"text-right pr-5\"\n >\n <EpBtn rounded size=\"small\" @click.stop=\"modalCompact = false\" type=\"error\">\n {{ labelClose }}\n </EpBtn>\n </div>\n </div>\n </div>\n </div>\n \n </EpModal>\n </div>\n\n <div class=\"border-l p-5\">\n <EpBtn rounded text :href=\"url\" v-if=\"url\" type=\"primary\">\n <EpIcon :size=\"20\" :icon-path=\"mdiOpenInNew\" /> {{ labelRead }}\n </EpBtn>\n </div>\n </div>\n </div>\n </template>\n </EpEdu>\n</template>\n"],"names":["compact","_openBlock","_createElementBlock","_unref","_Fragment","_createElementVNode","_createVNode","EpIcon","EpEdu","hideIcon","_normalizeClass","_toDisplayString","_createBlock","EpBtn","_createTextVNode","EpModal"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"EpReading.vue.js","sources":["../../../src/components/educationals/EpReading.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { ref, toRefs, computed } from \"vue\";\nimport EpIcon from \"~/components//basics/EpIcon.vue\";\nimport EpBtn from \"~/components//basics/EpBtn.vue\";\nimport DisplayBox from \"~/components/tools/DisplayBox.vue\";\nimport EpModal from \"~/components/interactions/EpModal.vue\";\nimport EpEdu from \"~/components/educationals/EpEdu.vue\";\nimport { useRenderText } from \"~/composables/useRenderText\";\nimport { mdiBookmarkBox } from \"@mdi/js\";\nimport { mdiBookOpenVariant } from \"@mdi/js\";\nimport { mdiBookOpenPageVariant } from \"@mdi/js\";\nimport { mdiOpenInNew } from \"@mdi/js\";\nimport type { EpReadingProps } from \"~/types/educationals/EpReading\";\n\nconst props = withDefaults(defineProps<EpReadingProps>(), {\n title: null,\n cover: \"\",\n icon: \"mdiBookmarkBox\",\n hideCover: false,\n compact: false,\n type: \"neutral\",\n hideIcon: false,\n labelIn: \"dans\",\n labelRead: \"Lire\",\n labelClose: \"Fermer\",\n labelDetails: \"détails\",\n labelCard: \"Lecture\",\n labelIntentions: \"Intentions de lecture\",\n});\n\nconst old_image =\n \"https://live.staticflickr.com/4868/45940268562_c5f7fdd06b_q.jpg\";\nconst bad_image =\n \"https://farm5.staticflickr.com/4868/45940268562_9452f09a61_o.png\";\n\nconst modalCompact = ref(false)\n\nconst hasCover = computed(() => {\n if (\n props.cover === old_image ||\n props.cover.trim().length === 0 ||\n props.cover === bad_image\n ) {\n return false;\n }\n return true;\n});\n\nconst hasDetails = computed(() => {\n if (props.author || props.editor || props.container || props.year) {\n return true;\n }\n return false;\n});\n\nconst {\n title,\n intentions,\n cover,\n hideCover,\n year,\n author,\n container,\n editor,\n pages,\n type,\n mandateLevel,\n url,\n labelIn,\n labelRead,\n labelClose,\n labelDetails,\n labelCard,\n labelIntentions,\n} = toRefs(props);\n\nconst errorImg = (event: Event) => {\n const imgElement = event.target as HTMLImageElement;\n if (imgElement.src) {\n imgElement.src =\n \"https://live.staticflickr.com/4868/45940268562_c5f7fdd06b_q.jpg\";\n }\n};\n</script>\n\n<template>\n <div\n class=\"flex shadow-sm rounded-lg overflow-hidden bg-surface-2 dark:bg-surface-2-dark md:flex-row\"\n v-if=\"!compact\"\n >\n <template v-if=\"!hideCover\">\n <div\n v-if=\"hasCover\"\n class=\"h-96 mr-2 w-full rounded-t-lg md:h-auto md:w-56 md:rounded-none md:rounded-l-lg flex justify-center items-center text-gray-300\"\n >\n <img\n :src=\"cover\"\n :alt=\"`image de la lecture ${title}`\"\n @error=\"errorImg\"\n />\n </div>\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-gray-300 dark:bg-dark\"\n >\n <EpIcon :icon-path=\"mdiBookOpenPageVariant\" size=\"95\" />\n </div>\n </template>\n <div class=\"flex py-3 flex-col w-full\">\n <EpEdu\n :title=\"labelCard\"\n :labelIntentions=\"labelIntentions\"\n :icon=\"mdiBookOpenVariant\"\n flat\n :type=\"type\"\n :hideIcon=\"hideIcon\"\n :mandateLevel=\"mandateLevel\"\n card\n >\n <template #intentions v-if=\"intentions\">\n <div v-html=\"useRenderText(intentions)\" />\n </template>\n <template #content>\n <div class=\"w-full\">\n <h4\n :class=\"`text-xl font-semibold ${\n hasDetails || pages ? 'border-b' : ''\n }`\"\n >\n {{ title }}\n </h4>\n <div class=\"flex\">\n <div class=\"flex-1 py-2\" v-if=\"hasDetails\">\n <p class=\"font-medium\">\n <span class=\"font-bold mr-1\" v-if=\"author\">{{ author }}</span>\n <span v-if=\"year\">({{ year }})</span>\n <span v-if=\"year && editor\">, </span>\n <span v-if=\"editor\">{{ editor }}</span>\n </p>\n <p v-if=\"container\">\n <span class=\"text-sm italic pr-1\">{{ labelIn }}</span>\n <span class=\"\">{{ container }}</span>\n </p>\n </div>\n <div\n :class=\"`flex-1 pt-2 pb-2 ${hasDetails ? 'border-l pl-2' : ''}`\"\n v-if=\"pages\"\n >\n <EpIcon :size=\"24\" :icon-path=\"mdiBookmarkBox\" />\n <span class=\"pl-2 align-middle\">{{ pages }}</span>\n </div>\n </div>\n </div>\n </template>\n <template #actions>\n <EpBtn rounded text :href=\"url\" v-if=\"url\" type=\"primary\">\n <EpIcon :size=\"20\" :icon-path=\"mdiOpenInNew\" /> {{ labelRead }}\n </EpBtn>\n </template>\n </EpEdu>\n </div>\n </div>\n <!--compact mode-->\n <EpEdu\n :title=\"labelCard\"\n :labelIntentions=\"labelIntentions\"\n :icon=\"mdiBookOpenVariant\"\n flat\n :type=\"type\"\n :hideIcon=\"hideIcon\"\n v-else\n >\n <template #intentions v-if=\"intentions\">\n <div v-html=\"useRenderText(intentions)\" />\n </template>\n <template #content>\n <div class=\"flex flex-row justify-between\">\n <div class=\"p-5\">\n <span class=\"text-lg leading-6 font-semibold font-sans\">{{\n title\n }}</span>\n </div>\n <div class=\"flex\">\n <div class=\"p-5\">\n <EpBtn rounded text @click.stop=\"modalCompact = true\" type=\"primary\">\n {{ labelDetails }}\n </EpBtn>\n <EpModal v-model=\"modalCompact\" size=\"compact\">\n <div class=\"w-full\">\n <div\n class=\"flex flex-col md:flex-row\"\n >\n <template v-if=\"!hideCover\">\n <img\n v-if=\"hasCover\"\n class=\"object-cover h-96 w-full rounded-t-lg md:h-auto md:w-56 md:rounded-none md:rounded-l-lg\"\n :src=\"cover\"\n :alt=\"`image de la lecture ${title}`\"\n @error=\"errorImg\"\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\"\n >\n <EpIcon :icon-path=\"mdiBookOpenPageVariant\" size=\"95\" />\n </div>\n </template>\n <div class=\"flex flex-col justify-between w-full\">\n <div\n class=\"text-left px-5 py-2\"\n >\n <EpIcon :size=\"24\" :icon-path=\"mdiBookOpenVariant\" />\n <span class=\"pl-2 align-middle\">{{ labelCard }}</span>\n </div>\n <div class=\"w-full px-5\">\n <h4\n :class=\"`text-xl font-semibold py-4 ${\n hasDetails || pages ? 'border-b' : ''\n }`\"\n >\n {{ title }}\n </h4>\n <div class=\"flex\">\n <div class=\"flex-1 py-2\" v-if=\"hasDetails\">\n <p class=\"font-medium\">\n <span class=\"font-bold mr-2\" v-if=\"author\">{{\n author\n }}</span>\n <span v-if=\"year\"> ({{ year }})</span>\n <span v-if=\"year && editor\">, </span>\n <span v-if=\"editor\">{{ editor }}</span>\n </p>\n <p v-if=\"container\">\n <span class=\"text-sm italic pr-1\">{{\n labelIn\n }}</span>\n <span>{{ container }}</span>\n </p>\n </div>\n <div\n :class=\"`flex-1 pt-2 pb-2 ${\n hasDetails ? 'border-l pl-2' : ''\n }`\"\n v-if=\"pages\"\n >\n <EpIcon :size=\"24\" :icon-path=\"mdiBookmarkBox\" />\n <span class=\"pl-2 align-middle\">{{ pages }}</span>\n </div>\n </div>\n </div>\n <div\n class=\"text-right pr-5\"\n >\n <EpBtn rounded size=\"small\" @click.stop=\"modalCompact = false\" type=\"error\">\n {{ labelClose }}\n </EpBtn>\n </div>\n </div>\n </div>\n </div>\n \n </EpModal>\n </div>\n\n <div class=\"border-l p-5\">\n <EpBtn rounded text :href=\"url\" v-if=\"url\" type=\"primary\">\n <EpIcon :size=\"20\" :icon-path=\"mdiOpenInNew\" /> {{ labelRead }}\n </EpBtn>\n </div>\n </div>\n </div>\n </template>\n </EpEdu>\n</template>\n"],"names":["compact","_openBlock","_createElementBlock","_unref","_Fragment","_createElementVNode","_createVNode","EpIcon","EpEdu","hideIcon","_normalizeClass","_toDisplayString","_createBlock","EpBtn","_createTextVNode","EpModal"],"mappings":"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"}
|