ep-lib-ts 1.1.13 → 1.1.14
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/EpBtn.vue.js +2 -2
- package/dist/components/basics/EpBtn.vue.js.map +1 -1
- package/dist/components/basics/EpChip.vue.js +2 -2
- package/dist/components/basics/EpChip.vue.js.map +1 -1
- package/dist/components/basics/EpHover.vue.js +1 -1
- package/dist/components/basics/EpHover.vue.js.map +1 -1
- package/dist/components/basics/EpHoverCard.vue.js +6 -6
- package/dist/components/basics/EpHoverCard.vue.js.map +1 -1
- package/dist/components/basics/EpImg.vue.js +8 -8
- package/dist/components/basics/EpImg.vue.js.map +1 -1
- package/dist/components/basics/EpImgCarousel.vue.js +8 -8
- package/dist/components/basics/EpImgCarousel.vue.js.map +1 -1
- package/dist/components/basics/EpSection.vue.js +25 -25
- package/dist/components/basics/EpSection.vue.js.map +1 -1
- package/dist/components/basics/EpSectionCols.vue.js +29 -29
- package/dist/components/basics/EpSectionCols.vue.js.map +1 -1
- package/dist/components/basics/EpSpinner.vue.js +5 -5
- package/dist/components/basics/EpSpinner.vue.js.map +1 -1
- package/dist/components/basics/EpStackedList.vue.js +4 -4
- package/dist/components/basics/EpStackedList.vue.js.map +1 -1
- package/dist/components/charts/EpBarChart.vue.js +3 -3
- package/dist/components/charts/EpBarChart.vue.js.map +1 -1
- package/dist/components/charts/EpFunnelChart.vue.js +4 -4
- package/dist/components/charts/EpFunnelChart.vue.js.map +1 -1
- package/dist/components/charts/EpLineChart.vue.js +3 -3
- package/dist/components/charts/EpLineChart.vue.js.map +1 -1
- package/dist/components/charts/EpPieChart.vue.js +4 -4
- package/dist/components/charts/EpPieChart.vue.js.map +1 -1
- package/dist/components/educationals/EpBranchingScenario.vue2.js +19 -19
- package/dist/components/educationals/EpBranchingScenario.vue2.js.map +1 -1
- package/dist/components/educationals/EpCodeblock.vue.js +1 -1
- package/dist/components/educationals/EpCodeblock.vue.js.map +1 -1
- package/dist/components/educationals/EpConclusion.vue.js +3 -3
- package/dist/components/educationals/EpConclusion.vue.js.map +1 -1
- package/dist/components/educationals/EpDescription.vue.js +1 -1
- package/dist/components/educationals/EpDocument.vue.js +4 -4
- package/dist/components/educationals/EpDocument.vue.js.map +1 -1
- package/dist/components/educationals/EpEdu.vue.js +4 -4
- package/dist/components/educationals/EpEdu.vue.js.map +1 -1
- package/dist/components/educationals/EpFillBlanks.vue.js +1 -1
- package/dist/components/educationals/EpFillBlanks.vue.js.map +1 -1
- package/dist/components/educationals/EpInstructions.vue.js +1 -1
- package/dist/components/educationals/EpIntroduction.vue.js +6 -6
- package/dist/components/educationals/EpIntroduction.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 +3 -3
- package/dist/components/educationals/EpReading.vue.js.map +1 -1
- package/dist/components/educationals/EpResource.vue.js +3 -3
- package/dist/components/educationals/EpResource.vue.js.map +1 -1
- package/dist/components/educationals/EpScope.vue.js +2 -2
- package/dist/components/educationals/EpScope.vue.js.map +1 -1
- package/dist/components/educationals/EpSegmentedBox.vue.js +1 -1
- package/dist/components/educationals/EpSegmentedBox.vue.js.map +1 -1
- package/dist/components/educationals/EpSpecificObjective.vue.js +10 -10
- package/dist/components/educationals/EpSpecificObjective.vue.js.map +1 -1
- package/dist/components/forms/EpSelect.vue.js +3 -3
- package/dist/components/forms/EpSelect.vue.js.map +1 -1
- package/dist/components/forms/EpTextarea.vue2.js +1 -1
- package/dist/components/forms/EpTextarea.vue2.js.map +1 -1
- package/dist/components/forms/EpToggle.vue2.js +1 -1
- package/dist/components/forms/EpToggle.vue2.js.map +1 -1
- package/dist/components/interactions/EpAccordeon.vue2.js +1 -1
- package/dist/components/interactions/EpAccordeon.vue2.js.map +1 -1
- package/dist/components/interactions/EpAssociation.vue.js +13 -14
- package/dist/components/interactions/EpAssociation.vue.js.map +1 -1
- package/dist/components/interactions/EpContentSlider.vue.js +2 -2
- package/dist/components/interactions/EpContentSlider.vue.js.map +1 -1
- package/dist/components/interactions/EpFlipCard.vue2.js +17 -17
- package/dist/components/interactions/EpFlipCard.vue2.js.map +1 -1
- package/dist/components/interactions/EpHotSpot.vue.js +1 -1
- package/dist/components/interactions/EpHotSpot.vue.js.map +1 -1
- package/dist/components/interactions/EpImageCompare.vue.js +6 -6
- package/dist/components/interactions/EpImageCompare.vue.js.map +1 -1
- package/dist/components/interactions/EpModal.vue.js +4 -4
- package/dist/components/interactions/EpModal.vue.js.map +1 -1
- package/dist/components/interactions/EpQuestion.vue.js +8 -8
- package/dist/components/interactions/EpQuestion.vue.js.map +1 -1
- package/dist/components/interactions/EpSummativeTable.vue.js +3 -3
- package/dist/components/interactions/EpSummativeTable.vue.js.map +1 -1
- package/dist/components/interactions/EpTooltip.vue.js +1 -1
- package/dist/components/interactions/EpTooltip.vue.js.map +1 -1
- package/dist/components/medias/EpAudio.vue.js +3 -3
- package/dist/components/medias/EpAudio.vue.js.map +1 -1
- package/dist/components/medias/EpCardLink.vue.js +16 -16
- package/dist/components/medias/EpCardLink.vue.js.map +1 -1
- package/dist/components/medias/EpCarousel.vue.js +10 -10
- package/dist/components/medias/EpCarousel.vue.js.map +1 -1
- package/dist/components/medias/EpHierarchy.vue2.js +1 -1
- package/dist/components/medias/EpHierarchy.vue2.js.map +1 -1
- package/dist/components/medias/EpIframe.vue.js +3 -3
- package/dist/components/medias/EpIframe.vue.js.map +1 -1
- package/dist/components/medias/EpKatex.vue2.js +4 -4
- package/dist/components/medias/EpKatex.vue2.js.map +1 -1
- package/dist/components/medias/EpLink.vue.js +2 -2
- package/dist/components/medias/EpLink.vue.js.map +1 -1
- package/dist/components/medias/EpLinkVersion.vue.js +1 -1
- package/dist/components/medias/EpLinkVersion.vue.js.map +1 -1
- package/dist/components/medias/EpLottieSvg.vue.js +8 -8
- package/dist/components/medias/EpLottieSvg.vue.js.map +1 -1
- package/dist/components/medias/EpSensibleImage.vue2.js +18 -18
- package/dist/components/medias/EpSensibleImage.vue2.js.map +1 -1
- package/dist/components/medias/EpSoftware.vue.js +3 -3
- package/dist/components/medias/EpSoftware.vue.js.map +1 -1
- package/dist/components/medias/EpSvg.vue.js +4 -4
- package/dist/components/medias/EpSvg.vue.js.map +1 -1
- package/dist/components/medias/EpTerm.vue.js +6 -6
- package/dist/components/medias/EpTerm.vue.js.map +1 -1
- package/dist/components/medias/EpVideo.vue.js +2 -2
- package/dist/components/medias/EpVideo.vue.js.map +1 -1
- package/dist/components/medias/EpVideoPanopto.vue.js +3 -3
- package/dist/components/medias/EpVideoPanopto.vue.js.map +1 -1
- package/dist/components/medias/EpWordDef.vue.js +39 -39
- package/dist/components/medias/EpWordDef.vue.js.map +1 -1
- package/dist/components/signages/EpAlert.vue2.js +1 -1
- package/dist/components/signages/EpHeader.vue.js +22 -22
- package/dist/components/signages/EpHeader.vue.js.map +1 -1
- package/dist/components/signages/EpQuote.vue.js +1 -1
- package/dist/components/signages/EpSkeleton.vue2.js +1 -1
- package/dist/components/tools/AssociationNode.vue2.js +8 -8
- package/dist/components/tools/AssociationNode.vue2.js.map +1 -1
- package/dist/components/tools/AsyncKatexRender.vue2.js +1 -1
- package/dist/components/tools/AsyncKatexRender.vue2.js.map +1 -1
- package/dist/components/tools/Details.vue.js +1 -56
- package/dist/components/tools/Details.vue.js.map +1 -1
- package/dist/components/tools/Details.vue2.js +56 -1
- package/dist/components/tools/Details.vue2.js.map +1 -1
- package/dist/components/tools/RenderTextNode.vue.js +1 -19
- package/dist/components/tools/RenderTextNode.vue.js.map +1 -1
- package/dist/components/tools/RenderTextNode.vue2.js +19 -1
- package/dist/components/tools/RenderTextNode.vue2.js.map +1 -1
- package/dist/components/tools/SegmentedBox.vue2.js +3 -3
- package/dist/components/tools/SegmentedBox.vue2.js.map +1 -1
- package/dist/components/tools/TextMedia.vue.js +1 -50
- package/dist/components/tools/TextMedia.vue.js.map +1 -1
- package/dist/components/tools/TextMedia.vue2.js +50 -1
- package/dist/components/tools/TextMedia.vue2.js.map +1 -1
- package/dist/components/tools/TimelineItem.vue2.js +1 -1
- package/dist/components/tools/TwoColsMedia.vue2.js +4 -4
- package/dist/components/tools/TwoColsMedia.vue2.js.map +1 -1
- package/dist/style.css +81 -81
- package/package.json +40 -43
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EpBranchingScenario.vue2.js","sources":["../../../src/components/educationals/EpBranchingScenario.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { ref, computed, watchEffect } 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 labelBtnFinish: \"Fin du scénario\",\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 path.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 === 1) {\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 isTheLastOne.value = false\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 isTheLastOne.value = false\n};\n\nconst isTheLastOne = ref(false)\n\nconst nextSlide = (option: TreeNode) => {\n //currentSlide.value++\n path.value.push(option);\n //console.log(option)\n if (option.children && option.children.length > 0 && !isTheLastOne.value) {\n currentOption.value = option; // drill into next level\n } else {\n //currentOption.value = null; // reached the end (leaf node)\n isTheLastOne.value = true\n currentOption.value = option\n }\n \n};\n\nconst finish = () => {\n currentOption.value = null\n userPath.value = convertOptionToTreeNode(props.decisionTree, path.value); \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 label: option.label ?? \"\",\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\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 <h2 class=\"font-semibold text-xl text-center\" v-if=\"currentOption\">{{ currentOption.name }}</h2>\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 flex-col\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 flex-col\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 <template v-if=\"isTheLastOne\">\n <EpBtn\n rounded\n type=\"primary\"\n class=\"flex-1 min-w-[120px] sm:min-w-[160px] max-w-xs\"\n @click=\"finish\"\n >\n {{labelBtnFinish}}\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 <template v-if=\"i !== 0\">\n <div class=\"mb-2\">\n <Details\n :content=\"path[i-1].text ?? ''\"\n :title=\"item.name\"\n :media=\"path[i-1].component\"\n />\n </div>\n </template>\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 :max-width=\"2000\"\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","_toDisplayString","_openBlock","_createVNode","EpBtn","EpIcon","_unref","TextMedia","_Fragment","_createBlock","_createTextVNode","_normalizeClass","_renderList","Details","_a","EpModal","EpHierarchy"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"EpBranchingScenario.vue2.js","sources":["../../../src/components/educationals/EpBranchingScenario.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { ref, computed, watchEffect } 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 labelBtnFinish: \"Fin du scénario\",\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 path.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 === 1) {\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 isTheLastOne.value = false\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 isTheLastOne.value = false\n};\n\nconst isTheLastOne = ref(false)\n\nconst nextSlide = (option: TreeNode) => {\n //currentSlide.value++\n path.value.push(option);\n //console.log(option)\n if (option.children && option.children.length > 0 && !isTheLastOne.value) {\n currentOption.value = option; // drill into next level\n } else {\n //currentOption.value = null; // reached the end (leaf node)\n isTheLastOne.value = true\n currentOption.value = option\n }\n \n};\n\nconst finish = () => {\n currentOption.value = null\n userPath.value = convertOptionToTreeNode(props.decisionTree, path.value); \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 label: option.label ?? \"\",\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\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 <h2 class=\"font-semibold text-xl text-center\" v-if=\"currentOption\">{{ currentOption.name }}</h2>\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 flex-col\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 flex-col\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 <template v-if=\"isTheLastOne\">\n <EpBtn\n rounded\n type=\"primary\"\n class=\"flex-1 min-w-[120px] sm:min-w-[160px] max-w-xs\"\n @click=\"finish\"\n >\n {{labelBtnFinish}}\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 <template v-if=\"i !== 0\">\n <div class=\"mb-2\">\n <Details\n :content=\"path[i-1].text ?? ''\"\n :title=\"item.name\"\n :media=\"path[i-1].component\"\n />\n </div>\n </template>\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 :max-width=\"2000\"\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","labelBtnFinish","labelFinish","_normalizeClass","generalFeedback","labelYourPath","_renderList","Details","_a","labelShowFullPath","EpModal","EpHierarchy","labelClose","labelRestart"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAaA,UAAM,QAAQ;AAcd,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;AAC5B,WAAK,QAAQ,CAAC,MAAM,YAAY;AAAA,IAClC;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;AACtB,qBAAa,QAAQ;AAAA,MACvB,OAAO;AACL,sBAAc,QAAQ,MAAM;AAAA,MAC9B;AAAA,IACF;AAGA,UAAM,UAAU,MAAM;AAEpB,oBAAc,QAAQ;AACtB,yBAAmB,QAAQ;AAC3B,WAAK,QAAQ,CAAA;AACb,mBAAa,QAAQ;AAAA,IACvB;AAEA,UAAM,eAAe,IAAI,KAAK;AAE9B,UAAM,YAAY,CAAC,WAAqB;AAEtC,WAAK,MAAM,KAAK,MAAM;AAEtB,UAAI,OAAO,YAAY,OAAO,SAAS,SAAS,KAAK,CAAC,aAAa,OAAO;AACxE,sBAAc,QAAQ;AAAA,MACxB,OAAO;AAEL,qBAAa,QAAQ;AACrB,sBAAc,QAAQ;AAAA,MACxB;AAAA,IAEF;AAEA,UAAM,SAAS,MAAM;AACjB,oBAAc,QAAQ;AACtB,eAAS,QAAQ,wBAAwB,MAAM,cAAc,KAAK,KAAK;AAAA,IAC3E;AAGA,aAAS,wBAAwB,QAAkBA,OAA4B;;AAC7E,YAAM,WAAWA,MAAK,SAAS,MAAM;AACrC,aAAO;AAAA,QACL,MAAM,OAAO;AAAA,QACb,QAAO,YAAO,UAAP,YAAgB;AAAA,QACvB,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;;;0BAKEC,mBAsJM,OAAA,MAAA;AAAA,QArJJC,mBAoJM,OAAA;AAAA,UAnJJ,OAAM;AAAA,UACL,6DAA8CC,KAAAA,SAAO;AAAA,QAAA;UAMtDD,mBAcM,OAdN,YAcM;AAAA,YAbJA,mBAA2D,MAA3D,YAA2DE,gBAAbC,KAAAA,KAAK,GAAA,CAAA;AAAA,YACC,cAAA,SAApDC,UAAA,GAAAL,mBAAgG,MAAhG,YAAgGG,gBAA1B,cAAA,MAAc,IAAI,GAAA,CAAA;YAC7E,cAAA,SAAXE,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,mBA0HM,OAAA,MAAA;AAAA,YAxHO,mBAAA,SAAXI,UAAA,GAAAL,mBAYM,OAZN,YAYM;AAAA,cAXJM,YAKEK,aAAA;AAAA,gBAJC,OAAMC,UAAAA,uBAAAA,YAAkB;AAAA,gBACxB,OAAOC,KAAAA;AAAAA,gBACP,MAAMC,KAAAA;AAAAA,gBACP,YAAA;AAAA,cAAA;cAEFb,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,mBAqCM,OArCN,YAqCM;AAAA,cApCJC,mBAmCM,OAAA;AAAA,gBAnCA,yBAAUO,KAAAA,mBAAmB,QAAA;AAAA,cAAA;gBACjCF,YAKEK,aAAA;AAAA,kBAJC,OAAM,mBAAA,MAAc,SAAd,YAAkB;AAAA,kBACxB,OAAO,cAAA,MAAc;AAAA,kBACrB,MAAM,cAAA,MAAc;AAAA,kBACrB,YAAA;AAAA,gBAAA;gBAGFV,mBA0BM,OA1BN,YA0BM;AAAA,mBAvBJI,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;;;;kBAGF,aAAA,sBACdc,YAOQV,aAAA;AAAA;oBANN,SAAA;AAAA,oBACA,MAAK;AAAA,oBACL,OAAM;AAAA,oBACL,SAAO;AAAA,kBAAA;qCAER,MAAkB;AAAA,sDAAhBY,KAAAA,cAAc,GAAA,CAAA;AAAA,oBAAA;;;;;gCAS5BnB,mBA8DM,OAAA,YAAA;AAAA,cA1DJC,mBAAoE,MAApE,YAAoEE,gBAAnBiB,KAAAA,WAAW,GAAA,CAAA;AAAA,cAC5DnB,mBAkDM,OAAA;AAAA,gBAjDH,OAAKoB,eAAA,oBAAqCC,KAAAA,kBAAe,kBAAA;;gBAI1DrB,mBAsCM,OAtCN,aAsCM;AAAA,kBArCJA,mBAAuD,MAAvD,aAAuDE,gBAArBoB,KAAAA,aAAa,GAAA,CAAA;AAAA,kBAC/CtB,mBAYM,OAZN,aAYM;AAAA,qBAXJI,UAAA,IAAA,GAAAL,mBAUWgB,UAAA,MAAAQ,WAVmB,KAAA,OAAI,CAAhB,MAAM,MAAC;;;4CAAgC,CAAC;AAAA,sBAAA;wBACxC,MAAC,KACfnB,UAAA,GAAAL,mBAMM,OANN,aAMM;AAAA,0BALJM,YAIEmB,aAAA;AAAA,4BAHC,UAASC,MAAA,KAAA,MAAK,OAAK,SAAV,OAAAA,MAAc;AAAA,4BACvB,OAAO,KAAK;AAAA,4BACZ,OAAO,KAAA,MAAK,OAAK;AAAA,0BAAA;;;;;kBAM5BzB,mBAIM,OAJN,aAIM;AAAA,oBAHJK,YAEUC,aAAA;AAAA,sBAFH,MAAK;AAAA,sBAAO,SAAA;AAAA,sBAAS,+CAAO,SAAA,QAAQ;AAAA,oBAAA;uCAAS,MAElD;AAAA,wDADAoB,KAAAA,iBAAiB,GAAA,CAAA;AAAA,sBAAA;;;;kBAGN,SAAA,sBAAfV,YAiBUW,aAAA;AAAA;gCAjBwB,SAAA;AAAA,iFAAA,SAAQ,QAAA;AAAA,kBAAA;qCACxC,MAME;AAAA,sBANFtB,YAMEuB,MAAA;AAAA,wBALC,aAAW;AAAA,wBACX,OAAO,SAAA;AAAA,wBACP,cAAY,MAAM;AAAA,wBAClB,cAAY,MAAM;AAAA,wBAClB,cAAY,MAAM;AAAA,sBAAA;sBAErB5B,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,4DAAbuB,KAAAA,UAAU,GAAA,CAAA;AAAA,0BAAA;;;;;;;;gBAMdR,KAAAA,mBADRjB,UAAA,GAAAL,mBAKM,OALN,aAKM;AAAA,kBADJC,mBAA+C,OAAA;AAAA,oBAA1C,WAAQS,MAAA,aAAA,EAAcY,KAAAA,eAAe;AAAA,kBAAA;;;cAI9CrB,mBAIM,OAJN,aAIM;AAAA,gBAHJK,YAEUC,aAAA;AAAA,kBAFH,SAAA;AAAA,kBAAQ,MAAK;AAAA,kBAAW,SAAO;AAAA,gBAAA;mCAAS,MAE7C;AAAA,oDADAwB,KAAAA,YAAY,GAAA,CAAA;AAAA,kBAAA;;;;;;;;;;;"}
|
|
@@ -33,7 +33,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
33
33
|
return props.theme;
|
|
34
34
|
});
|
|
35
35
|
return (_ctx, _cache) => {
|
|
36
|
-
return !
|
|
36
|
+
return !_ctx.compact ? (openBlock(), createBlock(unref(VCodeBlock), {
|
|
37
37
|
key: 0,
|
|
38
38
|
code: code.value,
|
|
39
39
|
highlightjs: "",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EpCodeblock.vue.js","sources":["../../../src/components/educationals/EpCodeblock.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport VCodeBlock from \"@wdns/vue-code-block\";\nimport { defaultOption } from \"~/types/Codeblock\";\nimport EpAccordeon from \"~/components/interactions/EpAccordeon.vue\";\nimport { computed } from \"vue\";\nimport { ref } from \"vue\";\nimport type { EpCodeblockProps } from \"~/types/educationals/EpCodeblock\";\n\nconst props = withDefaults(defineProps<EpCodeblockProps>(), {\n code: \"\",\n label: \"\",\n lang: \"javascript\",\n theme: defaultOption,\n compact: false,\n});\n\nconst renderTitle = computed(() => {\n if (!props.title) {\n return \"En savoir plus\";\n }\n return props.title;\n});\n\nconst code = computed(() => {\n return ref(props.code);\n});\nconst label = computed(() => {\n return props.label;\n});\nconst lang = computed(() => {\n return props.lang;\n});\nconst theme = computed(() => {\n return props.theme;\n});\n</script>\n\n<template>\n <VCodeBlock\n :code=\"code\"\n highlightjs\n :label=\"label\"\n :lang=\"lang\"\n :theme=\"theme\"\n v-if=\"!compact\"\n />\n\n <EpAccordeon outlined :title=\"renderTitle\" v-else>\n <VCodeBlock\n :code=\"code\"\n highlightjs\n :label=\"label\"\n :lang=\"lang\"\n :theme=\"theme\"\n />\n </EpAccordeon>\n</template>\n<style>\npre {\n white-space: break-spaces;\n}\n</style>\n"],"names":["_createBlock","_unref","EpAccordeon","_createVNode"],"mappings":";;;;;;;;;;;;;;;AAQA,UAAM,QAAQ;AAQd,UAAM,cAAc,SAAS,MAAM;AACjC,UAAI,CAAC,MAAM,OAAO;AAChB,eAAO;AAAA,MACT;AACA,aAAO,MAAM;AAAA,IACf,CAAC;AAED,UAAM,OAAO,SAAS,MAAM;AAC1B,aAAO,IAAI,MAAM,IAAI;AAAA,IACvB,CAAC;AACD,UAAM,QAAQ,SAAS,MAAM;AAC3B,aAAO,MAAM;AAAA,IACf,CAAC;AACD,UAAM,OAAO,SAAS,MAAM;AAC1B,aAAO,MAAM;AAAA,IACf,CAAC;AACD,UAAM,QAAQ,SAAS,MAAM;AAC3B,aAAO,MAAM;AAAA,IACf,CAAC;;
|
|
1
|
+
{"version":3,"file":"EpCodeblock.vue.js","sources":["../../../src/components/educationals/EpCodeblock.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport VCodeBlock from \"@wdns/vue-code-block\";\nimport { defaultOption } from \"~/types/Codeblock\";\nimport EpAccordeon from \"~/components/interactions/EpAccordeon.vue\";\nimport { computed } from \"vue\";\nimport { ref } from \"vue\";\nimport type { EpCodeblockProps } from \"~/types/educationals/EpCodeblock\";\n\nconst props = withDefaults(defineProps<EpCodeblockProps>(), {\n code: \"\",\n label: \"\",\n lang: \"javascript\",\n theme: defaultOption,\n compact: false,\n});\n\nconst renderTitle = computed(() => {\n if (!props.title) {\n return \"En savoir plus\";\n }\n return props.title;\n});\n\nconst code = computed(() => {\n return ref(props.code);\n});\nconst label = computed(() => {\n return props.label;\n});\nconst lang = computed(() => {\n return props.lang;\n});\nconst theme = computed(() => {\n return props.theme;\n});\n</script>\n\n<template>\n <VCodeBlock\n :code=\"code\"\n highlightjs\n :label=\"label\"\n :lang=\"lang\"\n :theme=\"theme\"\n v-if=\"!compact\"\n />\n\n <EpAccordeon outlined :title=\"renderTitle\" v-else>\n <VCodeBlock\n :code=\"code\"\n highlightjs\n :label=\"label\"\n :lang=\"lang\"\n :theme=\"theme\"\n />\n </EpAccordeon>\n</template>\n<style>\npre {\n white-space: break-spaces;\n}\n</style>\n"],"names":["compact","_createBlock","_unref","EpAccordeon","_createVNode"],"mappings":";;;;;;;;;;;;;;;AAQA,UAAM,QAAQ;AAQd,UAAM,cAAc,SAAS,MAAM;AACjC,UAAI,CAAC,MAAM,OAAO;AAChB,eAAO;AAAA,MACT;AACA,aAAO,MAAM;AAAA,IACf,CAAC;AAED,UAAM,OAAO,SAAS,MAAM;AAC1B,aAAO,IAAI,MAAM,IAAI;AAAA,IACvB,CAAC;AACD,UAAM,QAAQ,SAAS,MAAM;AAC3B,aAAO,MAAM;AAAA,IACf,CAAC;AACD,UAAM,OAAO,SAAS,MAAM;AAC1B,aAAO,MAAM;AAAA,IACf,CAAC;AACD,UAAM,QAAQ,SAAS,MAAM;AAC3B,aAAO,MAAM;AAAA,IACf,CAAC;;cAUUA,KAAAA,wBANTC,YAOEC,MAAA,UAAA,GAAA;AAAA;QANC,MAAM,KAAA;AAAA,QACP,aAAA;AAAA,QACC,OAAO,MAAA;AAAA,QACP,MAAM,KAAA;AAAA,QACN,OAAO,MAAA;AAAA,MAAA,iEAIVD,YAQcE,MAAA;AAAA;QARD,UAAA;AAAA,QAAU,OAAO,YAAA;AAAA,MAAA;yBAC5B,MAME;AAAA,UANFC,YAMEF,MAAA,UAAA,GAAA;AAAA,YALC,MAAM,KAAA;AAAA,YACP,aAAA;AAAA,YACC,OAAO,MAAA;AAAA,YACP,MAAM,KAAA;AAAA,YACN,OAAO,MAAA;AAAA,UAAA;;;;;;;"}
|
|
@@ -3,7 +3,7 @@ import _sfc_main$4 from "../basics/EpIcon.vue.js";
|
|
|
3
3
|
import _sfc_main$2 from "../interactions/EpModal.vue.js";
|
|
4
4
|
/* empty css */
|
|
5
5
|
import _sfc_main$1 from "../basics/EpBtn.vue.js";
|
|
6
|
-
import _sfc_main$3 from "../tools/RenderTextNode.
|
|
6
|
+
import _sfc_main$3 from "../tools/RenderTextNode.vue2.js";
|
|
7
7
|
const _hoisted_1 = { class: "lg:col-span-8 lg:mt-0 lg:border-l dark:border-gray-700 lg:pl-4" };
|
|
8
8
|
const _hoisted_2 = { class: "py-2" };
|
|
9
9
|
const _hoisted_3 = {
|
|
@@ -63,7 +63,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
63
63
|
createElementVNode("div", _hoisted_2, [
|
|
64
64
|
unref(subtitle) ? (openBlock(), createElementBlock("h3", _hoisted_3, toDisplayString(unref(subtitle)), 1)) : createCommentVNode("", true),
|
|
65
65
|
createElementVNode("div", null, [
|
|
66
|
-
createVNode(_sfc_main$3, { content:
|
|
66
|
+
createVNode(_sfc_main$3, { content: _ctx.content }, null, 8, ["content"])
|
|
67
67
|
])
|
|
68
68
|
])
|
|
69
69
|
])
|
|
@@ -85,7 +85,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
85
85
|
createElementVNode("div", _hoisted_8, [
|
|
86
86
|
unref(subtitle) ? (openBlock(), createElementBlock("h3", _hoisted_9, toDisplayString(unref(subtitle)), 1)) : createCommentVNode("", true),
|
|
87
87
|
createElementVNode("div", null, [
|
|
88
|
-
createVNode(_sfc_main$3, { content:
|
|
88
|
+
createVNode(_sfc_main$3, { content: _ctx.content }, null, 8, ["content"])
|
|
89
89
|
])
|
|
90
90
|
])
|
|
91
91
|
])
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EpConclusion.vue.js","sources":["../../../src/components/educationals/EpConclusion.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { toRefs } from \"vue\";\nimport { ref } from \"vue\";\nimport EpIcon from \"~/components/basics/EpIcon.vue\";\nimport EpModal from \"~/components/interactions/EpModal.vue\";\nimport EpBtn from \"~/components/basics/EpBtn.vue\";\nimport type { EpConclusionProps } from \"~/types/educationals/EpConclusion\";\nimport RenderTextNode from \"~/components/tools/RenderTextNode.vue\";\nconst props = withDefaults(defineProps<EpConclusionProps>(), {\n modal: true,\n title: \"Conclusion\",\n btnType: \"base\",\n btnRounded: true,\n btnOutlined: true,\n});\nconst { title, icon, subtitle, modal, btnType, btnRounded, btnOutlined } = toRefs(props);\n\nconst showDefaultModal = ref(false);\n\n\n</script>\n<template>\n <div>\n <EpBtn\n v-if=\"modal\"\n :btnType=\"btnType\"\n :rounded=\"btnRounded\"\n :outlined=\"btnOutlined\"\n @click=\"showDefaultModal = true\"\n >\n {{ title }}\n </EpBtn>\n <EpModal v-if=\"modal\" v-model=\"showDefaultModal\" :title=\"title\">\n <div\n class=\"lg:col-span-8 lg:mt-0 lg:border-l dark:border-gray-700 lg:pl-4\"\n >\n <div class=\"py-2\">\n <h3\n v-if=\"subtitle\"\n class=\"text-base font-semibold leading-7 \"\n >\n {{ subtitle }}\n </h3>\n <div>\n <RenderTextNode :content=\"content\" />\n </div>\n </div>\n </div>\n </EpModal>\n <div v-else class=\"mt-6 lg:col-span-5 lg:mt-0 lg:flex lg:items-center w-full\">\n <div class=\"lg:col-span-2\">\n <h2\n class=\"text-pretty text-3xl font-semibold tracking-tight sm:text-xl pr-4\"\n >\n <EpIcon v-if=\"icon\" :icon-path=\"icon\" size=\"28\" extraClass=\"mr-2\" />\n {{ title }}\n </h2>\n </div>\n <div\n class=\"lg:col-span-8 lg:mt-0 lg:border-l dark:border-gray-700 lg:pl-4\"\n >\n <div class=\"py-2\">\n <h3\n v-if=\"subtitle\"\n class=\"text-base font-semibold leading-7\"\n >\n {{ subtitle }}\n </h3>\n <div>\n <RenderTextNode :content=\"content\" />\n </div>\n </div>\n </div>\n </div>\n </div>\n</template>\n"],"names":["_createElementBlock","_unref","_createBlock","EpBtn","EpModal","_createElementVNode","_toDisplayString","_createVNode","RenderTextNode","_openBlock","EpIcon","_createTextVNode"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQA,UAAM,QAAQ;AAOd,UAAM,EAAE,OAAO,MAAM,UAAU,OAAO,SAAS,YAAY,YAAA,IAAgB,OAAO,KAAK;AAEvF,UAAM,mBAAmB,IAAI,KAAK;;0BAKhCA,mBAoDM,OAAA,MAAA;AAAA,QAlDIC,MAAA,KAAA,kBADRC,YAQQC,aAAA;AAAA;UANL,SAASF,MAAA,OAAA;AAAA,UACT,SAASA,MAAA,UAAA;AAAA,UACT,UAAUA,MAAA,WAAA;AAAA,UACV,+CAAO,iBAAA,QAAgB;AAAA,QAAA;2BAExB,MAAW;AAAA,4CAARA,MAAA,KAAA,CAAK,GAAA,CAAA;AAAA,UAAA;;;QAEKA,MAAA,KAAA,kBAAfC,YAgBUE,aAAA;AAAA;sBAhBqB,iBAAA;AAAA,uEAAA,iBAAgB,QAAA;AAAA,UAAG,OAAOH,MAAA,KAAA;AAAA,QAAA;2BACvD,MAcM;AAAA,YAdNI,mBAcM,OAdN,YAcM;AAAA,cAXJA,mBAUM,OAVN,YAUM;AAAA,gBARIJ,MAAA,QAAA,kBADRD,mBAKK,MALL,YAKKM,gBADAL,MAAA,QAAA,CAAQ,GAAA,CAAA;gBAEbI,mBAEM,OAAA,MAAA;AAAA,kBADHE,YAAqCC,aAAA,EAApB,
|
|
1
|
+
{"version":3,"file":"EpConclusion.vue.js","sources":["../../../src/components/educationals/EpConclusion.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { toRefs } from \"vue\";\nimport { ref } from \"vue\";\nimport EpIcon from \"~/components/basics/EpIcon.vue\";\nimport EpModal from \"~/components/interactions/EpModal.vue\";\nimport EpBtn from \"~/components/basics/EpBtn.vue\";\nimport type { EpConclusionProps } from \"~/types/educationals/EpConclusion\";\nimport RenderTextNode from \"~/components/tools/RenderTextNode.vue\";\nconst props = withDefaults(defineProps<EpConclusionProps>(), {\n modal: true,\n title: \"Conclusion\",\n btnType: \"base\",\n btnRounded: true,\n btnOutlined: true,\n});\nconst { title, icon, subtitle, modal, btnType, btnRounded, btnOutlined } = toRefs(props);\n\nconst showDefaultModal = ref(false);\n\n\n</script>\n<template>\n <div>\n <EpBtn\n v-if=\"modal\"\n :btnType=\"btnType\"\n :rounded=\"btnRounded\"\n :outlined=\"btnOutlined\"\n @click=\"showDefaultModal = true\"\n >\n {{ title }}\n </EpBtn>\n <EpModal v-if=\"modal\" v-model=\"showDefaultModal\" :title=\"title\">\n <div\n class=\"lg:col-span-8 lg:mt-0 lg:border-l dark:border-gray-700 lg:pl-4\"\n >\n <div class=\"py-2\">\n <h3\n v-if=\"subtitle\"\n class=\"text-base font-semibold leading-7 \"\n >\n {{ subtitle }}\n </h3>\n <div>\n <RenderTextNode :content=\"content\" />\n </div>\n </div>\n </div>\n </EpModal>\n <div v-else class=\"mt-6 lg:col-span-5 lg:mt-0 lg:flex lg:items-center w-full\">\n <div class=\"lg:col-span-2\">\n <h2\n class=\"text-pretty text-3xl font-semibold tracking-tight sm:text-xl pr-4\"\n >\n <EpIcon v-if=\"icon\" :icon-path=\"icon\" size=\"28\" extraClass=\"mr-2\" />\n {{ title }}\n </h2>\n </div>\n <div\n class=\"lg:col-span-8 lg:mt-0 lg:border-l dark:border-gray-700 lg:pl-4\"\n >\n <div class=\"py-2\">\n <h3\n v-if=\"subtitle\"\n class=\"text-base font-semibold leading-7\"\n >\n {{ subtitle }}\n </h3>\n <div>\n <RenderTextNode :content=\"content\" />\n </div>\n </div>\n </div>\n </div>\n </div>\n</template>\n"],"names":["_createElementBlock","_unref","_createBlock","EpBtn","EpModal","_createElementVNode","_toDisplayString","_createVNode","RenderTextNode","content","_openBlock","EpIcon","_createTextVNode"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQA,UAAM,QAAQ;AAOd,UAAM,EAAE,OAAO,MAAM,UAAU,OAAO,SAAS,YAAY,YAAA,IAAgB,OAAO,KAAK;AAEvF,UAAM,mBAAmB,IAAI,KAAK;;0BAKhCA,mBAoDM,OAAA,MAAA;AAAA,QAlDIC,MAAA,KAAA,kBADRC,YAQQC,aAAA;AAAA;UANL,SAASF,MAAA,OAAA;AAAA,UACT,SAASA,MAAA,UAAA;AAAA,UACT,UAAUA,MAAA,WAAA;AAAA,UACV,+CAAO,iBAAA,QAAgB;AAAA,QAAA;2BAExB,MAAW;AAAA,4CAARA,MAAA,KAAA,CAAK,GAAA,CAAA;AAAA,UAAA;;;QAEKA,MAAA,KAAA,kBAAfC,YAgBUE,aAAA;AAAA;sBAhBqB,iBAAA;AAAA,uEAAA,iBAAgB,QAAA;AAAA,UAAG,OAAOH,MAAA,KAAA;AAAA,QAAA;2BACvD,MAcM;AAAA,YAdNI,mBAcM,OAdN,YAcM;AAAA,cAXJA,mBAUM,OAVN,YAUM;AAAA,gBARIJ,MAAA,QAAA,kBADRD,mBAKK,MALL,YAKKM,gBADAL,MAAA,QAAA,CAAQ,GAAA,CAAA;gBAEbI,mBAEM,OAAA,MAAA;AAAA,kBADHE,YAAqCC,aAAA,EAApB,SAASC,KAAAA,QAAAA,GAAO,MAAA,GAAA,CAAA,SAAA,CAAA;AAAA,gBAAA;;;;;2CAK1CC,aAAAV,mBAwBM,OAxBN,YAwBM;AAAA,UAvBJK,mBAOM,OAPN,YAOM;AAAA,YANJA,mBAKK,MALL,YAKK;AAAA,cAFWJ,MAAA,IAAA,kBAAdC,YAAoES,aAAA;AAAA;gBAA/C,aAAWV,MAAA,IAAA;AAAA,gBAAM,MAAK;AAAA,gBAAK,YAAW;AAAA,cAAA;cAASW,gBAAA,sBACjEX,MAAA,KAAA,CAAK,GAAA,CAAA;AAAA,YAAA;;UAGZI,mBAcM,OAdN,YAcM;AAAA,YAXJA,mBAUM,OAVN,YAUM;AAAA,cARIJ,MAAA,QAAA,kBADRD,mBAKK,MALL,YAKKM,gBADAL,MAAA,QAAA,CAAQ,GAAA,CAAA;cAEbI,mBAEM,OAAA,MAAA;AAAA,gBADHE,YAAqCC,aAAA,EAApB,SAASC,KAAAA,QAAAA,GAAO,MAAA,GAAA,CAAA,SAAA,CAAA;AAAA,cAAA;;;;;;;;"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { defineComponent, toRefs, createElementBlock, openBlock, createElementVNode, createBlock, createCommentVNode, createTextVNode, unref, toDisplayString, createVNode } from "vue";
|
|
2
2
|
import _sfc_main$1 from "../basics/EpIcon.vue.js";
|
|
3
|
-
import _sfc_main$2 from "../tools/RenderTextNode.
|
|
3
|
+
import _sfc_main$2 from "../tools/RenderTextNode.vue2.js";
|
|
4
4
|
const _hoisted_1 = { class: "lg:grid lg:grid-cols-12 lg:gap-8" };
|
|
5
5
|
const _hoisted_2 = { class: "lg:col-span-2" };
|
|
6
6
|
const _hoisted_3 = { class: "text-pretty text-3xl font-semibold tracking-tight sm:text-xl" };
|
|
@@ -91,14 +91,14 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
91
91
|
createElementVNode("div", {
|
|
92
92
|
class: normalizeClass(`py-6 flex-1 ${unref(hideIcon) ? "px-6" : "pr-2"}`)
|
|
93
93
|
}, [
|
|
94
|
-
|
|
95
|
-
|
|
94
|
+
_ctx.title ? (openBlock(), createElementBlock("h4", _hoisted_7, toDisplayString(_ctx.title), 1)) : createCommentVNode("", true),
|
|
95
|
+
_ctx.description ? (openBlock(), createElementBlock("div", {
|
|
96
96
|
key: 1,
|
|
97
97
|
class: "mb-3",
|
|
98
|
-
innerHTML: unref(useRenderText)(
|
|
98
|
+
innerHTML: unref(useRenderText)(_ctx.description)
|
|
99
99
|
}, null, 8, _hoisted_8)) : createCommentVNode("", true),
|
|
100
100
|
createVNode(_sfc_main$3, {
|
|
101
|
-
href:
|
|
101
|
+
href: _ctx.url,
|
|
102
102
|
block: "",
|
|
103
103
|
type: "primary",
|
|
104
104
|
rounded: "",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EpDocument.vue.js","sources":["../../../src/components/educationals/EpDocument.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { toRefs, computed } from \"vue\";\nimport EpCard from \"~/components/basics/EpCard.vue\";\nimport EpIcon from \"~/components/basics/EpIcon.vue\";\nimport { mdiFile } from \"@mdi/js\";\nimport { mdiArrowCollapseDown } from \"@mdi/js\";\nimport { mdiOpenInNew } from \"@mdi/js\";\nimport EpBtn from \"~/components/basics/EpBtn.vue\";\nimport { useRenderText } from \"~/composables/useRenderText\";\nimport type { EpDocumentProps } from \"~/types/educationals/EpDocument\";\n\nconst props = withDefaults(defineProps<EpDocumentProps>(), {\n src: null,\n hideIcon: false,\n labelDownload: \"Télécharger\",\n labelOpen: \"Ouvrir\",\n});\n\nconst fileDownloadExtensions = [\n \"doc\",\n \"docx\",\n \"xls\",\n \"xlsx\",\n \"ppt\",\n \"pptx\",\n \"rtf\",\n \"odt\",\n \"ods\",\n \"odp\",\n];\n\nconst getExtension = (url: string): string => {\n const queryRemoved = url.split(\"?\")[0];\n const parts = queryRemoved.split(\".\");\n return parts.length > 1 ? parts.pop()!.toLowerCase() : \"\";\n};\n\nconst shouldDownload = computed(() => {\n const ext = getExtension(props.url);\n return fileDownloadExtensions.includes(ext);\n});\n\nconst iconBtn = computed(() => {\n return shouldDownload.value ? mdiArrowCollapseDown : mdiOpenInNew;\n});\n\nconst label = computed(() => {\n return shouldDownload.value ? props.labelDownload : props.labelOpen;\n});\n\nconst renderIcon = computed(() => {\n return props.icon ? props.icon : mdiFile;\n});\n\nconst { src, hideIcon } = toRefs(props);\n</script>\n\n<template>\n <div class=\"w-5/6 mx-auto\">\n <EpCard>\n <div :class=\"`md:flex md:flex-wrap rounded-md`\">\n <div class=\"w-1/5 mr-6\" v-if=\"src\">\n <img\n :class=\"`md:w-full md:h-full md:object-cover rounded-md`\"\n :src=\"src\"\n alt=\"Image of quote\"\n />\n </div>\n <div\n class=\"flex items-center justify-center px-7\"\n v-else-if=\"!hideIcon\"\n >\n <div class=\"text-base dark:text-white'\">\n <EpIcon\n :size=\"60\"\n :icon-path=\"renderIcon\"\n extra-class=\"dark:text-white\"\n />\n </div>\n </div>\n <div :class=\"`py-6 flex-1 ${hideIcon ? 'px-6' : 'pr-2'}`\">\n <h4 class=\"text-2xl font-semibold mb-4\" v-if=\"title\">{{ title }}</h4>\n <div\n class=\"mb-3\"\n v-if=\"description\"\n v-html=\"useRenderText(description)\"\n />\n <EpBtn\n :href=\"url\"\n block\n type=\"primary\"\n rounded\n :prepend-icon=\"iconBtn\"\n >\n {{ label }}\n </EpBtn>\n </div>\n </div>\n </EpCard>\n </div>\n</template>\n"],"names":["_openBlock","_createElementBlock","_createVNode","EpCard","_createElementVNode","_unref","EpIcon","_toDisplayString","EpBtn"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAWA,UAAM,QAAQ;AAOd,UAAM,yBAAyB;AAAA,MAC7B;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAGF,UAAM,eAAe,CAAC,QAAwB;AAC5C,YAAM,eAAe,IAAI,MAAM,GAAG,EAAE,CAAC;AACrC,YAAM,QAAQ,aAAa,MAAM,GAAG;AACpC,aAAO,MAAM,SAAS,IAAI,MAAM,IAAA,EAAO,gBAAgB;AAAA,IACzD;AAEA,UAAM,iBAAiB,SAAS,MAAM;AACpC,YAAM,MAAM,aAAa,MAAM,GAAG;AAClC,aAAO,uBAAuB,SAAS,GAAG;AAAA,IAC5C,CAAC;AAED,UAAM,UAAU,SAAS,MAAM;AAC7B,aAAO,eAAe,QAAQ,uBAAuB;AAAA,IACvD,CAAC;AAED,UAAM,QAAQ,SAAS,MAAM;AAC3B,aAAO,eAAe,QAAQ,MAAM,gBAAgB,MAAM;AAAA,IAC5D,CAAC;AAED,UAAM,aAAa,SAAS,MAAM;AAChC,aAAO,MAAM,OAAO,MAAM,OAAO;AAAA,IACnC,CAAC;AAED,UAAM,EAAE,KAAK,aAAa,OAAO,KAAK;;AAIpC,aAAAA,UAAA,GAAAC,mBAyCM,OAzCN,YAyCM;AAAA,QAxCJC,YAuCSC,aAAA,MAAA;AAAA,2BAtCP,MAqCM;AAAA,YArCNC,mBAqCM,OArCN,YAqCM;AAAA,cApC0BC,MAAA,GAAA,KAA9BL,aAAAC,mBAMM,OANN,YAMM;AAAA,gBALJG,mBAIE,OAAA;AAAA,kBAHC,sBAAO,gDAAgD;AAAA,kBACvD,KAAKC,MAAA,GAAA;AAAA,kBACN,KAAI;AAAA,gBAAA;qBAKMA,MAAA,QAAA,KAFdL,UAAA,GAAAC,mBAWM,OAXN,YAWM;AAAA,gBAPJG,mBAMM,OANN,YAMM;AAAA,kBALJF,YAIEI,aAAA;AAAA,oBAHC,MAAM;AAAA,oBACN,aAAW,WAAA;AAAA,oBACZ,eAAY;AAAA,kBAAA;;;cAIlBF,mBAgBM,OAAA;AAAA,gBAhBA,qCAAsBC,MAAA,QAAA,IAAQ,SAAA,MAAA,EAAA;AAAA,cAAA;
|
|
1
|
+
{"version":3,"file":"EpDocument.vue.js","sources":["../../../src/components/educationals/EpDocument.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { toRefs, computed } from \"vue\";\nimport EpCard from \"~/components/basics/EpCard.vue\";\nimport EpIcon from \"~/components/basics/EpIcon.vue\";\nimport { mdiFile } from \"@mdi/js\";\nimport { mdiArrowCollapseDown } from \"@mdi/js\";\nimport { mdiOpenInNew } from \"@mdi/js\";\nimport EpBtn from \"~/components/basics/EpBtn.vue\";\nimport { useRenderText } from \"~/composables/useRenderText\";\nimport type { EpDocumentProps } from \"~/types/educationals/EpDocument\";\n\nconst props = withDefaults(defineProps<EpDocumentProps>(), {\n src: null,\n hideIcon: false,\n labelDownload: \"Télécharger\",\n labelOpen: \"Ouvrir\",\n});\n\nconst fileDownloadExtensions = [\n \"doc\",\n \"docx\",\n \"xls\",\n \"xlsx\",\n \"ppt\",\n \"pptx\",\n \"rtf\",\n \"odt\",\n \"ods\",\n \"odp\",\n];\n\nconst getExtension = (url: string): string => {\n const queryRemoved = url.split(\"?\")[0];\n const parts = queryRemoved.split(\".\");\n return parts.length > 1 ? parts.pop()!.toLowerCase() : \"\";\n};\n\nconst shouldDownload = computed(() => {\n const ext = getExtension(props.url);\n return fileDownloadExtensions.includes(ext);\n});\n\nconst iconBtn = computed(() => {\n return shouldDownload.value ? mdiArrowCollapseDown : mdiOpenInNew;\n});\n\nconst label = computed(() => {\n return shouldDownload.value ? props.labelDownload : props.labelOpen;\n});\n\nconst renderIcon = computed(() => {\n return props.icon ? props.icon : mdiFile;\n});\n\nconst { src, hideIcon } = toRefs(props);\n</script>\n\n<template>\n <div class=\"w-5/6 mx-auto\">\n <EpCard>\n <div :class=\"`md:flex md:flex-wrap rounded-md`\">\n <div class=\"w-1/5 mr-6\" v-if=\"src\">\n <img\n :class=\"`md:w-full md:h-full md:object-cover rounded-md`\"\n :src=\"src\"\n alt=\"Image of quote\"\n />\n </div>\n <div\n class=\"flex items-center justify-center px-7\"\n v-else-if=\"!hideIcon\"\n >\n <div class=\"text-base dark:text-white'\">\n <EpIcon\n :size=\"60\"\n :icon-path=\"renderIcon\"\n extra-class=\"dark:text-white\"\n />\n </div>\n </div>\n <div :class=\"`py-6 flex-1 ${hideIcon ? 'px-6' : 'pr-2'}`\">\n <h4 class=\"text-2xl font-semibold mb-4\" v-if=\"title\">{{ title }}</h4>\n <div\n class=\"mb-3\"\n v-if=\"description\"\n v-html=\"useRenderText(description)\"\n />\n <EpBtn\n :href=\"url\"\n block\n type=\"primary\"\n rounded\n :prepend-icon=\"iconBtn\"\n >\n {{ label }}\n </EpBtn>\n </div>\n </div>\n </EpCard>\n </div>\n</template>\n"],"names":["_openBlock","_createElementBlock","_createVNode","EpCard","_createElementVNode","_unref","EpIcon","title","_toDisplayString","description","EpBtn","url"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAWA,UAAM,QAAQ;AAOd,UAAM,yBAAyB;AAAA,MAC7B;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAGF,UAAM,eAAe,CAAC,QAAwB;AAC5C,YAAM,eAAe,IAAI,MAAM,GAAG,EAAE,CAAC;AACrC,YAAM,QAAQ,aAAa,MAAM,GAAG;AACpC,aAAO,MAAM,SAAS,IAAI,MAAM,IAAA,EAAO,gBAAgB;AAAA,IACzD;AAEA,UAAM,iBAAiB,SAAS,MAAM;AACpC,YAAM,MAAM,aAAa,MAAM,GAAG;AAClC,aAAO,uBAAuB,SAAS,GAAG;AAAA,IAC5C,CAAC;AAED,UAAM,UAAU,SAAS,MAAM;AAC7B,aAAO,eAAe,QAAQ,uBAAuB;AAAA,IACvD,CAAC;AAED,UAAM,QAAQ,SAAS,MAAM;AAC3B,aAAO,eAAe,QAAQ,MAAM,gBAAgB,MAAM;AAAA,IAC5D,CAAC;AAED,UAAM,aAAa,SAAS,MAAM;AAChC,aAAO,MAAM,OAAO,MAAM,OAAO;AAAA,IACnC,CAAC;AAED,UAAM,EAAE,KAAK,aAAa,OAAO,KAAK;;AAIpC,aAAAA,UAAA,GAAAC,mBAyCM,OAzCN,YAyCM;AAAA,QAxCJC,YAuCSC,aAAA,MAAA;AAAA,2BAtCP,MAqCM;AAAA,YArCNC,mBAqCM,OArCN,YAqCM;AAAA,cApC0BC,MAAA,GAAA,KAA9BL,aAAAC,mBAMM,OANN,YAMM;AAAA,gBALJG,mBAIE,OAAA;AAAA,kBAHC,sBAAO,gDAAgD;AAAA,kBACvD,KAAKC,MAAA,GAAA;AAAA,kBACN,KAAI;AAAA,gBAAA;qBAKMA,MAAA,QAAA,KAFdL,UAAA,GAAAC,mBAWM,OAXN,YAWM;AAAA,gBAPJG,mBAMM,OANN,YAMM;AAAA,kBALJF,YAIEI,aAAA;AAAA,oBAHC,MAAM;AAAA,oBACN,aAAW,WAAA;AAAA,oBACZ,eAAY;AAAA,kBAAA;;;cAIlBF,mBAgBM,OAAA;AAAA,gBAhBA,qCAAsBC,MAAA,QAAA,IAAQ,SAAA,MAAA,EAAA;AAAA,cAAA;gBACYE,KAAAA,sBAA9CN,mBAAqE,MAArE,YAAqEO,gBAAbD,KAAAA,KAAK,GAAA,CAAA;gBAGrDE,KAAAA,4BAFRR,mBAIE,OAAA;AAAA;kBAHA,OAAM;AAAA,kBAEN,WAAQI,MAAA,aAAA,EAAcI,KAAAA,WAAW;AAAA,gBAAA;gBAEnCP,YAQQQ,aAAA;AAAA,kBAPL,MAAMC,KAAAA;AAAAA,kBACP,OAAA;AAAA,kBACA,MAAK;AAAA,kBACL,SAAA;AAAA,kBACC,gBAAc,QAAA;AAAA,gBAAA;mCAEf,MAAW;AAAA,oDAAR,MAAA,KAAK,GAAA,CAAA;AAAA,kBAAA;;;;;;;;;;;;"}
|
|
@@ -78,7 +78,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
78
78
|
return openBlock(), createElementBlock("div", {
|
|
79
79
|
class: normalizeClass(`${containerStyle.value} ${bgColor.value}`)
|
|
80
80
|
}, [
|
|
81
|
-
unref(title) ||
|
|
81
|
+
unref(title) || _ctx.mandateLevel ? (openBlock(), createElementBlock("div", {
|
|
82
82
|
key: 0,
|
|
83
83
|
class: normalizeClass(`${topBarStyle.value} ${paddingTopStyle.value}`)
|
|
84
84
|
}, [
|
|
@@ -91,16 +91,16 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
91
91
|
}, null, 8, ["iconPath"])) : createCommentVNode("", true),
|
|
92
92
|
createElementVNode("span", _hoisted_1, toDisplayString(unref(title)), 1)
|
|
93
93
|
]),
|
|
94
|
-
|
|
94
|
+
_ctx.mandateLevel ? (openBlock(), createBlock(_sfc_main$2, {
|
|
95
95
|
key: 0,
|
|
96
|
-
mandateLevel:
|
|
96
|
+
mandateLevel: _ctx.mandateLevel
|
|
97
97
|
}, null, 8, ["mandateLevel"])) : createCommentVNode("", true)
|
|
98
98
|
], 2)) : createCommentVNode("", true),
|
|
99
99
|
createElementVNode("div", {
|
|
100
100
|
class: normalizeClass(`${boxPaddingStyle.value} `)
|
|
101
101
|
}, [
|
|
102
102
|
hasIntentions.value ? (openBlock(), createElementBlock("div", _hoisted_2, [
|
|
103
|
-
|
|
103
|
+
_ctx.labelIntentions ? (openBlock(), createElementBlock("h4", _hoisted_3, toDisplayString(_ctx.labelIntentions), 1)) : createCommentVNode("", true),
|
|
104
104
|
renderSlot(_ctx.$slots, "intentions"),
|
|
105
105
|
createVNode(_sfc_main$3)
|
|
106
106
|
])) : createCommentVNode("", true),
|
|
@@ -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 ? 'bg-surface-2 dark:bg-surface-2-dark rounded p-4' : ''\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","_createElementVNode","_createBlock","EpIcon","_toDisplayString","EpScope","_openBlock","_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,oDAAoD;AAAA,IAC3E,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,
|
|
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 rounded p-4' : ''\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,oDAAoD;AAAA,IAC3E,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;;;;;"}
|
|
@@ -94,7 +94,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
94
94
|
};
|
|
95
95
|
return (_ctx, _cache) => {
|
|
96
96
|
return openBlock(), createElementBlock("div", _hoisted_1, [
|
|
97
|
-
|
|
97
|
+
_ctx.title ? (openBlock(), createElementBlock("h3", _hoisted_2, toDisplayString(_ctx.title), 1)) : createCommentVNode("", true),
|
|
98
98
|
createElementVNode("div", null, [
|
|
99
99
|
(openBlock(true), createElementBlock(Fragment, null, renderList(renderText.value, (node, i) => {
|
|
100
100
|
return openBlock(), createBlock(resolveDynamicComponent(node), { key: i });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EpFillBlanks.vue.js","sources":["../../../src/components/educationals/EpFillBlanks.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, h, type VNode, reactive } from \"vue\";\nimport { isHtml } from \"~/composables/isHtml\";\nimport { useRenderText } from \"~/composables/useRenderText\";\nimport type { EpFillBlanksProps } from \"~/types/educationals/EpFillBlanks\";\nimport EpSelect from \"../forms/EpSelect.vue\";\n\n\nconst props = withDefaults(defineProps<EpFillBlanksProps>(), {});\n\nconst values = reactive<Record<string, any>>({});\nconst refsMap = reactive<Record<string, any>>({});\n\nfunction parseHtmlToVNodes(html: string): (VNode | string)[] {\n const container = document.createElement(\"div\");\n container.innerHTML = html;\n\n const nodes: (VNode | string)[] = [];\n\n container.childNodes.forEach((node) => {\n if (node.nodeType === 3) {\n // Text node\n const text = node.textContent;\n \n if (text && text.replace(/\\s/g, '').length > 0) nodes.push(text);\n } else if (node.nodeType === 1) {\n const el = node as HTMLElement;\n\n // Select part\n if(el.classList.contains(\"ep-select\")){\n const id = el.getAttribute(\"data-id\");\n if(id !== null) {\n const selectProps = props.selects.filter((item) => item.id == id);\n if(selectProps.length > 0) {\n nodes.push(\n h(\n \"div\",\n { \n style: \"display:inline-block; border-width: 2px; border-radius: 7px; min-width: 150px; margin: 3px;\", \n id,\n ref: (el) => {\n if (el) refsMap[id] = el;\n }\n },\n h(EpSelect, {\n block: false,\n options: selectProps[0].options,\n modelValue: values[id],\n 'onUpdate:modelValue': (val) => {\n values[id] = val;\n }\n })\n )\n );\n }\n }\n return;\n }\n\n nodes.push(\n h(\n el.tagName.toLowerCase(),\n getElementAttrs(el),\n parseHtmlToVNodes(el.innerHTML) \n )\n );\n }\n });\n\n return nodes;\n}\n\nconst renderText = computed(() => {\n if (!props.content) return [h(\"div\")];\n if (!isHtml(props.content)) {\n return [h(\"div\", { innerHTML: useRenderText(props.content) })];\n }\n\n const formatted = useRenderText(props.content)\n\n return parseHtmlToVNodes(`<div> ${formatted} </div>`);\n});\n\n\n//get attributes from element html \nfunction getElementAttrs(el: HTMLElement): Record<string, any> {\n const attrs: Record<string, any> = {};\n\n for (const attr of Array.from(el.attributes)) {\n attrs[attr.name] = attr.value;\n }\n\n if (el.tagName.toLowerCase() === \"a\") {\n attrs.target = \"_blank\";\n attrs.rel = \"noopener noreferrer\";\n }\n\n return attrs;\n}\n\nconst validate = () => {\n props.selects.forEach((select) => {\n refsMap[select.id].style.borderColor = (values[select.id] == select.correctValue) ? 'green' : 'red';\n })\n}\n\n</script>\n\n<template>\n <div class=\"px-2\">\n <h3 v-if=\"title\" class=\"font-bold text-center my-2 text-xl\">{{ title }}</h3>\n <div>\n <component :is=\"node\" v-for=\"(node, i) in renderText\" :key=\"i\" />\n </div>\n <div class=\"flex items-center justify-around\">\n <button\n class=\"bg-blue-500 text-white px-3 py-2 m-2 rounded-md text-center\"\n @click=\"validate\"\n >\n Valider\n </button>\n </div>\n </div>\n</template>\n"],"names":["el","EpSelect","_openBlock","_createElementBlock","_toDisplayString","_createElementVNode","_Fragment","_renderList","_createBlock","_resolveDynamicComponent"],"mappings":";;;;;;;;;;;;;;;;;AAQA,UAAM,QAAQ;AAEd,UAAM,SAAS,SAA8B,EAAE;AAC/C,UAAM,UAAU,SAA8B,EAAE;AAEhD,aAAS,kBAAkB,MAAkC;AAC3D,YAAM,YAAY,SAAS,cAAc,KAAK;AAC9C,gBAAU,YAAY;AAEtB,YAAM,QAA4B,CAAA;AAElC,gBAAU,WAAW,QAAQ,CAAC,SAAS;AACrC,YAAI,KAAK,aAAa,GAAG;AAEtB,gBAAM,OAAO,KAAK;AAEnB,cAAI,QAAQ,KAAK,QAAQ,OAAO,EAAE,EAAE,SAAS,EAAG,OAAM,KAAK,IAAI;AAAA,QACjE,WAAW,KAAK,aAAa,GAAG;AAC9B,gBAAM,KAAK;AAGX,cAAG,GAAG,UAAU,SAAS,WAAW,GAAE;AACpC,kBAAM,KAAK,GAAG,aAAa,SAAS;AACpC,gBAAG,OAAO,MAAM;AACd,oBAAM,cAAc,MAAM,QAAQ,OAAO,CAAC,SAAS,KAAK,MAAM,EAAE;AAChE,kBAAG,YAAY,SAAS,GAAG;AACvB,sBAAM;AAAA,kBACJ;AAAA,oBACI;AAAA,oBACA;AAAA,sBACI,OAAO;AAAA,sBACP;AAAA,sBACA,KAAK,CAACA,QAAO;AACT,4BAAIA,IAAI,SAAQ,EAAE,IAAIA;AAAAA,sBAC1B;AAAA,oBAAA;AAAA,oBAEJ,EAAEC,aAAU;AAAA,sBACR,OAAO;AAAA,sBACP,SAAS,YAAY,CAAC,EAAE;AAAA,sBACxB,YAAY,OAAO,EAAE;AAAA,sBACrB,uBAAuB,CAAC,QAAQ;AAC5B,+BAAO,EAAE,IAAI;AAAA,sBACjB;AAAA,oBAAA,CACH;AAAA,kBAAA;AAAA,gBACL;AAAA,cAEN;AAAA,YACF;AACA;AAAA,UACF;AAEA,gBAAM;AAAA,YACJ;AAAA,cACE,GAAG,QAAQ,YAAA;AAAA,cACX,gBAAgB,EAAE;AAAA,cAClB,kBAAkB,GAAG,SAAS;AAAA,YAAA;AAAA,UAChC;AAAA,QAEJ;AAAA,MACF,CAAC;AAED,aAAO;AAAA,IACT;AAEA,UAAM,aAAa,SAAS,MAAM;AAChC,UAAI,CAAC,MAAM,gBAAgB,CAAC,EAAE,KAAK,CAAC;AACpC,UAAI,CAAC,OAAO,MAAM,OAAO,GAAG;AAC1B,eAAO,CAAC,EAAE,OAAO,EAAE,WAAW,cAAc,MAAM,OAAO,EAAA,CAAG,CAAC;AAAA,MAC/D;AAEA,YAAM,YAAY,cAAc,MAAM,OAAO;AAE7C,aAAO,kBAAkB,SAAS,SAAS,SAAS;AAAA,IACtD,CAAC;AAID,aAAS,gBAAgB,IAAsC;AAC7D,YAAM,QAA6B,CAAA;AAEnC,iBAAW,QAAQ,MAAM,KAAK,GAAG,UAAU,GAAG;AAC5C,cAAM,KAAK,IAAI,IAAI,KAAK;AAAA,MAC1B;AAEA,UAAI,GAAG,QAAQ,YAAA,MAAkB,KAAK;AACpC,cAAM,SAAS;AACf,cAAM,MAAM;AAAA,MACd;AAEA,aAAO;AAAA,IACT;AAEA,UAAM,WAAW,MAAM;AACnB,YAAM,QAAQ,QAAQ,CAAC,WAAW;AAC9B,gBAAQ,OAAO,EAAE,EAAE,MAAM,cAAe,OAAO,OAAO,EAAE,KAAK,OAAO,eAAgB,UAAU;AAAA,MAClG,CAAC;AAAA,IACL;;AAKI,aAAAC,UAAA,GAAAC,mBAaM,OAbN,YAaM;AAAA,
|
|
1
|
+
{"version":3,"file":"EpFillBlanks.vue.js","sources":["../../../src/components/educationals/EpFillBlanks.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, h, type VNode, reactive } from \"vue\";\nimport { isHtml } from \"~/composables/isHtml\";\nimport { useRenderText } from \"~/composables/useRenderText\";\nimport type { EpFillBlanksProps } from \"~/types/educationals/EpFillBlanks\";\nimport EpSelect from \"../forms/EpSelect.vue\";\n\n\nconst props = withDefaults(defineProps<EpFillBlanksProps>(), {});\n\nconst values = reactive<Record<string, any>>({});\nconst refsMap = reactive<Record<string, any>>({});\n\nfunction parseHtmlToVNodes(html: string): (VNode | string)[] {\n const container = document.createElement(\"div\");\n container.innerHTML = html;\n\n const nodes: (VNode | string)[] = [];\n\n container.childNodes.forEach((node) => {\n if (node.nodeType === 3) {\n // Text node\n const text = node.textContent;\n \n if (text && text.replace(/\\s/g, '').length > 0) nodes.push(text);\n } else if (node.nodeType === 1) {\n const el = node as HTMLElement;\n\n // Select part\n if(el.classList.contains(\"ep-select\")){\n const id = el.getAttribute(\"data-id\");\n if(id !== null) {\n const selectProps = props.selects.filter((item) => item.id == id);\n if(selectProps.length > 0) {\n nodes.push(\n h(\n \"div\",\n { \n style: \"display:inline-block; border-width: 2px; border-radius: 7px; min-width: 150px; margin: 3px;\", \n id,\n ref: (el) => {\n if (el) refsMap[id] = el;\n }\n },\n h(EpSelect, {\n block: false,\n options: selectProps[0].options,\n modelValue: values[id],\n 'onUpdate:modelValue': (val) => {\n values[id] = val;\n }\n })\n )\n );\n }\n }\n return;\n }\n\n nodes.push(\n h(\n el.tagName.toLowerCase(),\n getElementAttrs(el),\n parseHtmlToVNodes(el.innerHTML) \n )\n );\n }\n });\n\n return nodes;\n}\n\nconst renderText = computed(() => {\n if (!props.content) return [h(\"div\")];\n if (!isHtml(props.content)) {\n return [h(\"div\", { innerHTML: useRenderText(props.content) })];\n }\n\n const formatted = useRenderText(props.content)\n\n return parseHtmlToVNodes(`<div> ${formatted} </div>`);\n});\n\n\n//get attributes from element html \nfunction getElementAttrs(el: HTMLElement): Record<string, any> {\n const attrs: Record<string, any> = {};\n\n for (const attr of Array.from(el.attributes)) {\n attrs[attr.name] = attr.value;\n }\n\n if (el.tagName.toLowerCase() === \"a\") {\n attrs.target = \"_blank\";\n attrs.rel = \"noopener noreferrer\";\n }\n\n return attrs;\n}\n\nconst validate = () => {\n props.selects.forEach((select) => {\n refsMap[select.id].style.borderColor = (values[select.id] == select.correctValue) ? 'green' : 'red';\n })\n}\n\n</script>\n\n<template>\n <div class=\"px-2\">\n <h3 v-if=\"title\" class=\"font-bold text-center my-2 text-xl\">{{ title }}</h3>\n <div>\n <component :is=\"node\" v-for=\"(node, i) in renderText\" :key=\"i\" />\n </div>\n <div class=\"flex items-center justify-around\">\n <button\n class=\"bg-blue-500 text-white px-3 py-2 m-2 rounded-md text-center\"\n @click=\"validate\"\n >\n Valider\n </button>\n </div>\n </div>\n</template>\n"],"names":["el","EpSelect","_openBlock","_createElementBlock","title","_toDisplayString","_createElementVNode","_Fragment","_renderList","_createBlock","_resolveDynamicComponent"],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@ import { defineComponent, toRefs, createElementBlock, openBlock, createElementVN
|
|
|
2
2
|
import _sfc_main$1 from "../basics/EpIcon.vue.js";
|
|
3
3
|
import Comp from "../interactions/EpAccordeon.vue.js";
|
|
4
4
|
import _sfc_main$3 from "../basics/EpImg.vue.js";
|
|
5
|
-
import _sfc_main$2 from "../tools/RenderTextNode.
|
|
5
|
+
import _sfc_main$2 from "../tools/RenderTextNode.vue2.js";
|
|
6
6
|
const _hoisted_1 = { class: "lg:grid lg:grid-cols-12 lg:gap-8" };
|
|
7
7
|
const _hoisted_2 = { class: "lg:col-span-2" };
|
|
8
8
|
const _hoisted_3 = { class: "text-pretty text-3xl font-semibold tracking-tight sm:text-xl" };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { defineComponent, createElementBlock, openBlock, createElementVNode, createBlock, createCommentVNode, createTextVNode, toDisplayString, createVNode } from "vue";
|
|
2
2
|
import _sfc_main$1 from "../basics/EpIcon.vue.js";
|
|
3
|
-
import _sfc_main$2 from "../tools/RenderTextNode.
|
|
3
|
+
import _sfc_main$2 from "../tools/RenderTextNode.vue2.js";
|
|
4
4
|
const _hoisted_1 = { class: "lg:grid lg:grid-cols-12 lg:gap-8" };
|
|
5
5
|
const _hoisted_2 = { class: "lg:col-span-2" };
|
|
6
6
|
const _hoisted_3 = { class: "text-pretty text-3xl font-semibold tracking-tight sm:text-xl" };
|
|
@@ -23,20 +23,20 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
23
23
|
return openBlock(), createElementBlock("div", _hoisted_1, [
|
|
24
24
|
createElementVNode("div", _hoisted_2, [
|
|
25
25
|
createElementVNode("h2", _hoisted_3, [
|
|
26
|
-
|
|
26
|
+
_ctx.icon ? (openBlock(), createBlock(_sfc_main$1, {
|
|
27
27
|
key: 0,
|
|
28
|
-
"icon-path":
|
|
28
|
+
"icon-path": _ctx.icon,
|
|
29
29
|
size: "28",
|
|
30
30
|
extraClass: "mr-2"
|
|
31
31
|
}, null, 8, ["icon-path"])) : createCommentVNode("", true),
|
|
32
|
-
createTextVNode(" " + toDisplayString(
|
|
32
|
+
createTextVNode(" " + toDisplayString(_ctx.title), 1)
|
|
33
33
|
])
|
|
34
34
|
]),
|
|
35
35
|
createElementVNode("div", _hoisted_4, [
|
|
36
36
|
createElementVNode("div", _hoisted_5, [
|
|
37
|
-
|
|
37
|
+
_ctx.subtitle ? (openBlock(), createElementBlock("h3", _hoisted_6, toDisplayString(_ctx.subtitle), 1)) : createCommentVNode("", true),
|
|
38
38
|
createElementVNode("div", null, [
|
|
39
|
-
createVNode(_sfc_main$2, { content:
|
|
39
|
+
createVNode(_sfc_main$2, { content: _ctx.content }, null, 8, ["content"])
|
|
40
40
|
])
|
|
41
41
|
])
|
|
42
42
|
])
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EpIntroduction.vue.js","sources":["../../../src/components/educationals/EpIntroduction.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport EpIcon from \"~/components/basics/EpIcon.vue\";\nimport type { EpIntroductionProps } from \"~/types/educationals/EpIntroduction\";\nimport RenderTextNode from \"~/components/tools/RenderTextNode.vue\";\nconst {\n title = \"Introduction\",\n icon,\n subtitle,\n content,\n} = defineProps<EpIntroductionProps>();\n\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 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 <h3\n v-if=\"subtitle\"\n class=\"text-base font-semibold leading-7\"\n >\n {{ subtitle }}\n </h3>\n <div>\n <RenderTextNode :content=\"content\" />\n </div>\n </div>\n </div>\n </div>\n</template>\n"],"names":["_openBlock","_createElementBlock","_createElementVNode","_createBlock","EpIcon","_createTextVNode","_toDisplayString","_createVNode","RenderTextNode"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAaE,aAAAA,UAAA,GAAAC,mBAsBM,OAtBN,YAsBM;AAAA,QArBJC,mBAOM,OAPN,YAOM;AAAA,UANJA,mBAKK,MALL,YAKK;AAAA,
|
|
1
|
+
{"version":3,"file":"EpIntroduction.vue.js","sources":["../../../src/components/educationals/EpIntroduction.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport EpIcon from \"~/components/basics/EpIcon.vue\";\nimport type { EpIntroductionProps } from \"~/types/educationals/EpIntroduction\";\nimport RenderTextNode from \"~/components/tools/RenderTextNode.vue\";\nconst {\n title = \"Introduction\",\n icon,\n subtitle,\n content,\n} = defineProps<EpIntroductionProps>();\n\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 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 <h3\n v-if=\"subtitle\"\n class=\"text-base font-semibold leading-7\"\n >\n {{ subtitle }}\n </h3>\n <div>\n <RenderTextNode :content=\"content\" />\n </div>\n </div>\n </div>\n </div>\n</template>\n"],"names":["_openBlock","_createElementBlock","_createElementVNode","icon","_createBlock","EpIcon","_createTextVNode","title","subtitle","_toDisplayString","_createVNode","RenderTextNode","content"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAaE,aAAAA,UAAA,GAAAC,mBAsBM,OAtBN,YAsBM;AAAA,QArBJC,mBAOM,OAPN,YAOM;AAAA,UANJA,mBAKK,MALL,YAKK;AAAA,YAFWC,KAAAA,qBAAdC,YAAoEC,aAAA;AAAA;cAA/C,aAAWF,KAAAA;AAAAA,cAAM,MAAK;AAAA,cAAK,YAAW;AAAA,YAAA;YAASG,gBAAA,sBACjEC,KAAAA,KAAK,GAAA,CAAA;AAAA,UAAA;;QAGZL,mBAYM,OAZN,YAYM;AAAA,UAXJA,mBAUM,OAVN,YAUM;AAAA,YARIM,KAAAA,yBADRP,mBAKK,MALL,YAKKQ,gBADAD,KAAAA,QAAQ,GAAA,CAAA;YAEbN,mBAEM,OAAA,MAAA;AAAA,cADLQ,YAAqCC,aAAA,EAApB,SAASC,KAAAA,QAAAA,GAAO,MAAA,GAAA,CAAA,SAAA,CAAA;AAAA,YAAA;;;;;;;"}
|
|
@@ -14,7 +14,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
14
14
|
return (_ctx, _cache) => {
|
|
15
15
|
return openBlock(), createElementBlock("div", {
|
|
16
16
|
class: normalizeClass(`border-l-8
|
|
17
|
-
${
|
|
17
|
+
${_ctx.color}
|
|
18
18
|
p-4
|
|
19
19
|
my-3
|
|
20
20
|
transition
|
|
@@ -30,9 +30,9 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
30
30
|
dark:hover:outline-gray-700`)
|
|
31
31
|
}, [
|
|
32
32
|
createElementVNode("div", _hoisted_1, [
|
|
33
|
-
createElementVNode("div", _hoisted_2, toDisplayString(
|
|
33
|
+
createElementVNode("div", _hoisted_2, toDisplayString(_ctx.nameApproach), 1),
|
|
34
34
|
createElementVNode("div", _hoisted_3, [
|
|
35
|
-
createElementVNode("h4", _hoisted_4, toDisplayString(
|
|
35
|
+
createElementVNode("h4", _hoisted_4, toDisplayString(_ctx.title), 1),
|
|
36
36
|
renderSlot(_ctx.$slots, "default")
|
|
37
37
|
])
|
|
38
38
|
])
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EpObjective.vue.js","sources":["../../../src/components/educationals/EpObjective.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { EpObjectiveProps } from \"~/types/educationals/EpObjective\";\n\nconst {\n color = \"border-gray\",\n nameApproach,\n title,\n} = defineProps<EpObjectiveProps>();\n</script>\n\n<template>\n <div\n :class=\"`border-l-8\n ${color} \n p-4 \n my-3 \n transition \n duration-200 \n ease-in-out \n outline-primary \n focus-within:outline \n focus-within:outline-1 \n outline-offset-4 \n hover:outline \n hover:outline-1 \n hover:outline-gray-200 \n dark:hover:outline-gray-700`\"\n >\n <!-- mobile: stacked, lg+: row with divider -->\n <div class=\"flex flex-col gap-y-2 lg:flex-row lg:divide-x lg:gap-x-4\">\n <div class=\"w-full lg:w-32 lg:flex-none\">\n {{ nameApproach }}\n </div>\n <div class=\"flex-1 lg:pl-4\">\n <h4 class=\"font-medium mb-1\">{{ title }}</h4>\n <slot />\n </div>\n </div>\n </div>\n</template>\n"],"names":["_createElementBlock","_normalizeClass","_createElementVNode","_toDisplayString","_renderSlot"],"mappings":";;;;;;;;;;;;;;0BAWEA,mBA2BM,OAAA;AAAA,QA1BH,OAAKC,eAAA;AAAA,
|
|
1
|
+
{"version":3,"file":"EpObjective.vue.js","sources":["../../../src/components/educationals/EpObjective.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport type { EpObjectiveProps } from \"~/types/educationals/EpObjective\";\n\nconst {\n color = \"border-gray\",\n nameApproach,\n title,\n} = defineProps<EpObjectiveProps>();\n</script>\n\n<template>\n <div\n :class=\"`border-l-8\n ${color} \n p-4 \n my-3 \n transition \n duration-200 \n ease-in-out \n outline-primary \n focus-within:outline \n focus-within:outline-1 \n outline-offset-4 \n hover:outline \n hover:outline-1 \n hover:outline-gray-200 \n dark:hover:outline-gray-700`\"\n >\n <!-- mobile: stacked, lg+: row with divider -->\n <div class=\"flex flex-col gap-y-2 lg:flex-row lg:divide-x lg:gap-x-4\">\n <div class=\"w-full lg:w-32 lg:flex-none\">\n {{ nameApproach }}\n </div>\n <div class=\"flex-1 lg:pl-4\">\n <h4 class=\"font-medium mb-1\">{{ title }}</h4>\n <slot />\n </div>\n </div>\n </div>\n</template>\n"],"names":["_createElementBlock","_normalizeClass","color","_createElementVNode","_toDisplayString","nameApproach","title","_renderSlot"],"mappings":";;;;;;;;;;;;;;0BAWEA,mBA2BM,OAAA;AAAA,QA1BH,OAAKC,eAAA;AAAA,MAAoBC,KAAAA,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;QAiB/BC,mBAQM,OARN,YAQM;AAAA,UAPJA,mBAEM,OAFN,YAEMC,gBADDC,KAAAA,YAAY,GAAA,CAAA;AAAA,UAEjBF,mBAGM,OAHN,YAGM;AAAA,YAFJA,mBAA6C,MAA7C,YAA6CC,gBAAbE,KAAAA,KAAK,GAAA,CAAA;AAAA,YACrCC,WAAQ,KAAA,QAAA,SAAA;AAAA,UAAA;;;;;;"}
|
|
@@ -144,7 +144,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
144
144
|
}
|
|
145
145
|
};
|
|
146
146
|
return (_ctx, _cache) => {
|
|
147
|
-
return !
|
|
147
|
+
return !_ctx.compact ? (openBlock(), createElementBlock("div", _hoisted_1, [
|
|
148
148
|
!unref(hideCover) ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
|
|
149
149
|
hasCover.value ? (openBlock(), createElementBlock("div", _hoisted_2, [
|
|
150
150
|
createElementVNode("img", {
|
|
@@ -166,7 +166,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
166
166
|
icon: unref(mdiBookOpenVariant),
|
|
167
167
|
flat: "",
|
|
168
168
|
type: unref(type),
|
|
169
|
-
hideIcon:
|
|
169
|
+
hideIcon: _ctx.hideIcon,
|
|
170
170
|
mandateLevel: unref(mandateLevel),
|
|
171
171
|
card: ""
|
|
172
172
|
}, createSlots({
|
|
@@ -239,7 +239,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
239
239
|
icon: unref(mdiBookOpenVariant),
|
|
240
240
|
flat: "",
|
|
241
241
|
type: unref(type),
|
|
242
|
-
hideIcon:
|
|
242
|
+
hideIcon: _ctx.hideIcon
|
|
243
243
|
}, createSlots({
|
|
244
244
|
content: withCtx(() => [
|
|
245
245
|
createElementVNode("div", _hoisted_20, [
|
|
@@ -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 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":["_openBlock","_createElementBlock","_unref","_Fragment","_createElementVNode","_createVNode","EpIcon","EpEdu","_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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"}
|