ep-lib-ts 1.0.24 → 1.0.25
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/BgAudio-C21gFmz8.js +4 -0
- package/dist/DisplayBox-DBh7Hhph.js +4 -0
- package/dist/EpAlert-D-zMyvRE.js +4 -0
- package/dist/EpAudio-BtIwqGml.js +4 -0
- package/dist/EpBadge-B2awUIcq.js +4 -0
- package/dist/EpBarChart-DdtGHQRl.js +4 -0
- package/dist/EpBtn-B19o0gbu.js +4 -0
- package/dist/EpCard-CWUId8IW.js +4 -0
- package/dist/EpChip-mm1-4B2m.js +4 -0
- package/dist/EpConclusion-BPOft6az.js +4 -0
- package/dist/EpContentSlider-pA8yf2jT.js +4 -0
- package/dist/EpDarkmode-BlwcoTdn.js +48 -0
- package/dist/EpDescription-Ba-790o4.js +4 -0
- package/dist/EpDivider-CQ0RM-Mt.js +4 -0
- package/dist/EpEdu-J91AnZD4.js +4 -0
- package/dist/EpFlex-Cr46qON0.js +4 -0
- package/dist/EpFunnelChart-DRbfA526.js +4 -0
- package/dist/EpHeader-CeZqdY8n.js +4 -0
- package/dist/{EpHover-jrnI89yN.js → EpHover-Cnw6YiYS.js} +1 -1
- package/dist/EpIcon-CBgBujCm.js +4 -0
- package/dist/EpIframe-RCjTDoKV.js +4 -0
- package/dist/EpImg-dH243otk.js +4 -0
- package/dist/{EpInput-DzvG0ONW.js → EpInput-DAyuFWpr.js} +22 -22
- package/dist/EpInstructions-D-65EQz0.js +4 -0
- package/dist/EpIntroduction-CgsiV1Mm.js +4 -0
- package/dist/EpLineChart-C9j9T9ly.js +4 -0
- package/dist/EpLink-rWrvqG9B.js +4 -0
- package/dist/EpLinkVersion-DkQLQvVB.js +4 -0
- package/dist/{EpList-_qae9uHP.js → EpList-CDiR3ovP.js} +1 -1
- package/dist/EpModal-DRHJ2bt2.js +4 -0
- package/dist/{EpNothing-CDSj0X4K.js → EpNothing-CHQxn2H-.js} +1 -1
- package/dist/EpObjective-BFGu3uDN.js +4 -0
- package/dist/EpPieChart-CRGfKivL.js +4 -0
- package/dist/EpQuestion-sZMfnLJ-.js +4 -0
- package/dist/EpQuote-CUH6udWz.js +4 -0
- package/dist/EpRadio-CBTg9VeC.js +4 -0
- package/dist/EpRadioSummative-BsSUhpZ7.js +4 -0
- package/dist/EpReading-DI8CZ2ZT.js +4 -0
- package/dist/EpResource-lrazza8e.js +4 -0
- package/dist/EpScope-BmbljNMA.js +4 -0
- package/dist/EpSection-DkQWAzym.js +4 -0
- package/dist/EpSelect-FIb6SyJU.js +32 -0
- package/dist/EpSkeleton-DlqLcdZG.js +4 -0
- package/dist/EpSoftware-BohS7y_l.js +4 -0
- package/dist/EpSpecificObjective-B6NBJkNv.js +4 -0
- package/dist/EpSpinner-BqvIFAVk.js +4 -0
- package/dist/EpSummativeTable-CdKSNbD1.js +4 -0
- package/dist/EpSvg-BaqIbued.js +4 -0
- package/dist/EpTable-CAk0M_e2.js +4 -0
- package/dist/EpTerm-BrtpeLPE.js +4 -0
- package/dist/EpText-C_j3Miwj.js +4 -0
- package/dist/EpTimeLine-BRyC_JnR.js +4 -0
- package/dist/EpVideo-xbSP2Dii.js +4 -0
- package/dist/EpVideoPanopto-RP-_gREt.js +4 -0
- package/dist/EpWordDef-BZghV5B3.js +4 -0
- package/dist/components/basics/EpChip.vue.d.ts +1 -1
- package/dist/components/basics/EpIcon.vue.d.ts +1 -1
- package/dist/components/charts/EpFunnelChart.vue.d.ts +1 -1
- package/dist/components/charts/EpPieChart.vue.d.ts +1 -1
- package/dist/components/educationals/EpConclusion.vue.d.ts +39 -0
- package/dist/components/educationals/EpDescription.vue.d.ts +39 -0
- package/dist/components/educationals/EpInstructions.vue.d.ts +36 -0
- package/dist/components/educationals/EpIntroduction.vue.d.ts +39 -0
- package/dist/components/educationals/EpObjective.vue.d.ts +39 -0
- package/dist/components/educationals/EpSpecificObjective.vue.d.ts +40 -0
- package/dist/components/forms/EpSelect.vue.d.ts +15 -86
- package/dist/components/interactions/EpAccordeon.vue.d.ts +1 -0
- package/dist/components/interactions/EpContentSlider.vue.d.ts +4 -0
- package/dist/components/signages/EpSkeleton.vue.d.ts +6 -2
- package/dist/ep-lib-ts.js +46 -40
- package/dist/ep-lib-ts.umd.cjs +70 -52
- package/dist/{index-nKuHdZUR.js → index-BwSapiyo.js} +4684 -4402
- package/dist/index.d.ts +7 -1
- package/dist/style.css +1 -1
- package/dist/types/Answer.d.ts +17 -0
- package/package.json +2 -2
- package/src/components/basics/EpFlex.vue +1 -0
- package/src/components/basics/EpSection.vue +5 -9
- package/src/components/educationals/EpConclusion.vue +38 -0
- package/src/components/educationals/EpDescription.vue +38 -0
- package/src/components/educationals/EpInstructions.vue +48 -0
- package/src/components/educationals/EpIntroduction.vue +38 -0
- package/src/components/educationals/EpObjective.vue +41 -0
- package/src/components/educationals/EpReading.vue +1 -1
- package/src/components/educationals/EpSpecificObjective.vue +42 -0
- package/src/components/forms/EpSelect.vue +18 -154
- package/src/components/interactions/EpAccordeon.vue +5 -4
- package/src/components/interactions/EpContentSlider.vue +132 -97
- package/src/components/interactions/EpDarkmode.vue +22 -40
- package/src/components/signages/EpSkeleton.vue +8 -4
- package/dist/BgAudio-BjiZt_j3.js +0 -4
- package/dist/DisplayBox-DZa_LWHr.js +0 -4
- package/dist/EpAlert-CIOmWSIc.js +0 -4
- package/dist/EpAudio-B3cP0yQP.js +0 -4
- package/dist/EpBadge-Rn_GnxQe.js +0 -4
- package/dist/EpBarChart-D3XffoUi.js +0 -4
- package/dist/EpBtn-DHEEdI-A.js +0 -4
- package/dist/EpCard-CKZOUaVF.js +0 -4
- package/dist/EpChip-ClMvRgwG.js +0 -4
- package/dist/EpContentSlider-BPQRgnys.js +0 -4
- package/dist/EpDarkmode-4w7onxHI.js +0 -26
- package/dist/EpDivider-CAdkeSwX.js +0 -4
- package/dist/EpEdu-Ccx2WVen.js +0 -4
- package/dist/EpFlex-BObUghJr.js +0 -4
- package/dist/EpFunnelChart-Pe4XXTya.js +0 -4
- package/dist/EpHeader-DvJyyMGC.js +0 -4
- package/dist/EpIcon-BfZrj1D0.js +0 -4
- package/dist/EpIframe-DpKYSJNh.js +0 -4
- package/dist/EpImg-B_oxNdE8.js +0 -4
- package/dist/EpLineChart-D1McKT4Z.js +0 -4
- package/dist/EpLink-Bad9NyI9.js +0 -4
- package/dist/EpLinkVersion-on-9nSh-.js +0 -4
- package/dist/EpModal-Ca6mOjLn.js +0 -4
- package/dist/EpPieChart-Bl-OovwP.js +0 -4
- package/dist/EpQuestion-_cynbj44.js +0 -4
- package/dist/EpQuote-DSGsPnu9.js +0 -4
- package/dist/EpRadio-BCYQ80gI.js +0 -4
- package/dist/EpRadioSummative-KuZyk9G2.js +0 -4
- package/dist/EpReading-BZJk9RUD.js +0 -4
- package/dist/EpResource-MAdgbl2P.js +0 -4
- package/dist/EpScope-C2BEnXHN.js +0 -4
- package/dist/EpSection-DIbMpikL.js +0 -4
- package/dist/EpSelect-afhma1pl.js +0 -43
- package/dist/EpSkeleton-DdosLRVb.js +0 -4
- package/dist/EpSoftware-DpNVZY3o.js +0 -4
- package/dist/EpSpinner-9KW8OFR4.js +0 -4
- package/dist/EpSummativeTable-CXjHg8Dh.js +0 -4
- package/dist/EpSvg-Dnr8vgDv.js +0 -4
- package/dist/EpTable-BRt9Ps0H.js +0 -4
- package/dist/EpTerm-B3bSXeXd.js +0 -4
- package/dist/EpText-CB8XAfzb.js +0 -4
- package/dist/EpTimeLine-BUxl5jo5.js +0 -4
- package/dist/EpVideo-DxEYZmn1.js +0 -4
- package/dist/EpVideoPanopto-BtGdfGz9.js +0 -4
- package/dist/EpWordDef-DUa6sNjb.js +0 -4
package/dist/index.d.ts
CHANGED
|
@@ -18,6 +18,12 @@ import { default as EpEdu } from './components/educationals/EpEdu.vue';
|
|
|
18
18
|
import { default as EpReading } from './components/educationals/EpReading.vue';
|
|
19
19
|
import { default as EpResource } from './components/educationals/EpResource.vue';
|
|
20
20
|
import { default as EpScope } from './components/educationals/EpScope.vue';
|
|
21
|
+
import { default as EpObjective } from './components/educationals/EpObjective.vue';
|
|
22
|
+
import { default as EpSpecificObjective } from './components/educationals/EpSpecificObjective.vue';
|
|
23
|
+
import { default as EpIntroduction } from './components/educationals/EpIntroduction.vue';
|
|
24
|
+
import { default as EpInstructions } from './components/educationals/EpInstructions.vue';
|
|
25
|
+
import { default as EpDescription } from './components/educationals/EpDescription.vue';
|
|
26
|
+
import { default as EpConclusion } from './components/educationals/EpConclusion.vue';
|
|
21
27
|
import { default as EpAccordeon } from './components/interactions/EpAccordeon.vue';
|
|
22
28
|
import { default as EpContentSlider } from './components/interactions/EpContentSlider.vue';
|
|
23
29
|
import { default as EpModal } from './components/interactions/EpModal.vue';
|
|
@@ -42,4 +48,4 @@ import { default as EpHeader } from './components/signages/EpHeader.vue';
|
|
|
42
48
|
import { default as EpQuote } from './components/signages/EpQuote.vue';
|
|
43
49
|
import { default as EpSkeleton } from './components/signages/EpSkeleton.vue';
|
|
44
50
|
|
|
45
|
-
export { EpBadge, EpBtn, EpCard, EpChip, EpDivider, EpFlex, EpIcon, EpImg, EpSection, EpSpinner, EpTable, EpBarChart, EpLineChart, EpPieChart, EpFunnelChart, EpText, EpEdu, EpReading, EpResource, EpScope, EpAccordeon, EpContentSlider, EpModal, EpQuestion, EpTabs, EpAudio, EpCarousel, EpIframe, EpKatex, EpLink, EpLinkVersion, EpSoftware, EpSvg, EpTerm, EpTimeLine, EpVideo, EpVideoPanopto, EpAlert, EpHeader, EpQuote, EpSkeleton, EpWordDef, EpSummativeTable };
|
|
51
|
+
export { EpBadge, EpBtn, EpCard, EpChip, EpDivider, EpFlex, EpIcon, EpImg, EpSection, EpSpinner, EpTable, EpBarChart, EpLineChart, EpPieChart, EpFunnelChart, EpText, EpEdu, EpReading, EpResource, EpScope, EpAccordeon, EpContentSlider, EpModal, EpQuestion, EpTabs, EpAudio, EpCarousel, EpIframe, EpKatex, EpLink, EpLinkVersion, EpSoftware, EpSvg, EpTerm, EpTimeLine, EpVideo, EpVideoPanopto, EpAlert, EpHeader, EpQuote, EpSkeleton, EpWordDef, EpSummativeTable, EpObjective, EpSpecificObjective, EpIntroduction, EpInstructions, EpDescription, EpConclusion };
|
package/dist/style.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
.content[data-v-
|
|
1
|
+
.content[data-v-3a321611]{max-height:0;overflow:hidden}.modal-mask{position:fixed;z-index:9998;top:0;left:0;width:100%;height:100%;background-color:#00000080;display:flex;transition:opacity .3s ease}.modal-container{margin:auto;max-height:95%;transition:all .3s ease;z-index:9999}.modal-header h3{margin-top:0;color:#42b983}.modal-body{margin:20px 0}.modal-default-button{float:right}.modal-enter-from,.modal-leave-to{opacity:0}.modal-enter-from .modal-container,.modal-leave-to .modal-container{transform:scale(1.1)}.custom_index{z-index:9999;position:absolute;right:12rem}.shape{height:var(--57a4c52c);width:var(--32b5e5ba)}.v-enter-active[data-v-a9b3f460],.v-leave-active[data-v-a9b3f460]{transition:opacity .5s ease}.v-enter-from[data-v-a9b3f460],.v-leave-to[data-v-a9b3f460]{opacity:0}.katex[data-v-a5d595cd]{font-size:1.6em}.content[data-v-713dbd30]{max-height:0;overflow:hidden}.list-enter-active,.list-leave-active{transition:all .5s ease}.list-enter-from,.list-leave-to{opacity:0;transform:translate(30px)}.arrow-light-top:before{content:" ";position:absolute;top:100%;left:50%;margin-left:-5px;border-width:5px;border-style:solid;border-color:rgba(0,0,0,.2) transparent transparent transparent}.arrow-dark-top:before{content:" ";position:absolute;top:100%;left:50%;margin-left:-5px;border-width:5px;border-style:solid;border-color:black transparent transparent transparent}.arrow-light-bottom:before{content:"";position:absolute;display:inline-block;left:50%;bottom:100%;border-right:7px solid transparent;border-bottom:7px solid #eee;border-left:7px solid transparent;border-bottom-color:#0003}.arrow-dark-bottom:before{content:"";position:absolute;display:inline-block;left:50%;bottom:100%;border-right:7px solid transparent;border-bottom:7px solid black;border-left:7px solid transparent;border-bottom-color:black transparent transparent transparent}.arrow-light-left:before{position:absolute;display:inline-block;left:100%;top:50%;content:"";margin-right:0;border-top:5px solid transparent;border-left:5px solid #eee;border-bottom:5px solid transparent;border-left-color:#0003}.arrow-dark-left:before{position:absolute;display:inline-block;left:100%;top:50%;content:"";margin-right:0;border-top:5px solid transparent;border-left:5px solid black;border-bottom:5px solid transparent;border-left-color:black transparent transparent transparent}.arrow-light-right:before{position:absolute;display:inline-block;right:100%;top:50%;content:"";margin-right:0;border-top:5px solid transparent;border-right:5px solid #eee;border-bottom:5px solid transparent;border-right-color:#0003}.arrow-dark-right:before{position:absolute;display:inline-block;right:100%;top:50%;content:"";margin-right:0;border-top:5px solid transparent;border-right:5px solid black;border-bottom:5px solid transparent;border-right-color:black transparent transparent transparent}
|
package/dist/types/Answer.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { TypeAlert } from './Alert';
|
|
2
|
+
import { MediaVariants } from './Medias';
|
|
2
3
|
|
|
3
4
|
interface ContentComponent {
|
|
4
5
|
type?: string;
|
|
@@ -13,4 +14,20 @@ export interface Answer {
|
|
|
13
14
|
uid?: string;
|
|
14
15
|
component?: ContentComponent | null;
|
|
15
16
|
}
|
|
17
|
+
export interface Question {
|
|
18
|
+
title?: string;
|
|
19
|
+
intentions?: string;
|
|
20
|
+
labelIntentions?: string;
|
|
21
|
+
hideIcon?: boolean;
|
|
22
|
+
type?: MediaVariants;
|
|
23
|
+
question: string;
|
|
24
|
+
answers: Answer[];
|
|
25
|
+
shuffle?: boolean;
|
|
26
|
+
before?: boolean;
|
|
27
|
+
numeration?: boolean;
|
|
28
|
+
src?: string | null;
|
|
29
|
+
labelNoAnswer?: string;
|
|
30
|
+
labelAnswerBtn?: string;
|
|
31
|
+
labelTryAgainBtn?: string;
|
|
32
|
+
}
|
|
16
33
|
export {};
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ep-lib-ts",
|
|
3
3
|
"private": false,
|
|
4
|
-
"version": "1.0.
|
|
4
|
+
"version": "1.0.25",
|
|
5
5
|
"files": [
|
|
6
6
|
"dist",
|
|
7
7
|
"src/components/"
|
|
@@ -51,7 +51,7 @@
|
|
|
51
51
|
"typescript": "^5.6.2",
|
|
52
52
|
"vite": "^5.4.5",
|
|
53
53
|
"vite-plugin-dts": "^3.9.0",
|
|
54
|
-
"vue-tsc": "^2.1.
|
|
54
|
+
"vue-tsc": "^2.1.10"
|
|
55
55
|
},
|
|
56
56
|
"peerDependencies": {
|
|
57
57
|
"vue": "^3.2.45"
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
2
|
import { toRefs } from "vue";
|
|
3
|
+
import { useColorMode } from '@vueuse/core';
|
|
3
4
|
// import EpCard from "../basics/EpCard.vue";
|
|
4
5
|
// import EpDivider from "../basics/EpDivider.vue";
|
|
5
6
|
// import EpIcon from "../basics/EpIcon.vue";
|
|
@@ -25,8 +26,6 @@ interface Props {
|
|
|
25
26
|
synchrone?: boolean;
|
|
26
27
|
}
|
|
27
28
|
|
|
28
|
-
// type, taxonomyLevel, courseCode, courseTitle, title, subtitle, height, src, color, synchrone
|
|
29
|
-
|
|
30
29
|
const props = withDefaults(defineProps<Props>(), {
|
|
31
30
|
title: null,
|
|
32
31
|
icon: null,
|
|
@@ -34,12 +33,11 @@ const props = withDefaults(defineProps<Props>(), {
|
|
|
34
33
|
});
|
|
35
34
|
|
|
36
35
|
const { title, color, src } = toRefs(props);
|
|
36
|
+
const mode = useColorMode();
|
|
37
37
|
</script>
|
|
38
38
|
|
|
39
39
|
<template>
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
<section class="EpSection">
|
|
40
|
+
<section :class="{'bg-gray-800 text-white': mode === 'dark', 'bg-white text-black': mode === 'light'}" class="EpSection">
|
|
43
41
|
<div class="relative items-center w-full">
|
|
44
42
|
<div class="w-full mx-auto text-left">
|
|
45
43
|
<div class="relative flex-col items-center m-auto align-middle">
|
|
@@ -55,9 +53,7 @@ const { title, color, src } = toRefs(props);
|
|
|
55
53
|
<div class="flex flex-col space-y-20 lg:mt-0">
|
|
56
54
|
<div class="border-b">
|
|
57
55
|
<div>
|
|
58
|
-
<p
|
|
59
|
-
class="text-2xl font-medium tracking-tight text-black sm:text-4xl"
|
|
60
|
-
>
|
|
56
|
+
<p class="text-2xl font-medium tracking-tight">
|
|
61
57
|
{{ title }}
|
|
62
58
|
</p>
|
|
63
59
|
<p>
|
|
@@ -74,6 +70,7 @@ const { title, color, src } = toRefs(props);
|
|
|
74
70
|
</div>
|
|
75
71
|
</div>
|
|
76
72
|
</section>
|
|
73
|
+
</template>
|
|
77
74
|
|
|
78
75
|
<!-- <section class="h-screen flex flex-col justify-end">
|
|
79
76
|
<div
|
|
@@ -241,4 +238,3 @@ const { title, color, src } = toRefs(props);
|
|
|
241
238
|
</div>
|
|
242
239
|
</div>
|
|
243
240
|
</div> -->
|
|
244
|
-
</template>
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import { toRefs } from "vue";
|
|
3
|
+
import EpIcon from "../basics/EpIcon.vue";
|
|
4
|
+
|
|
5
|
+
interface Props {
|
|
6
|
+
icon?: string | null;
|
|
7
|
+
title?: string | null;
|
|
8
|
+
subtitle? :string | null;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
const props = withDefaults(defineProps<Props>(), {
|
|
12
|
+
title: "Conclusion",
|
|
13
|
+
});
|
|
14
|
+
const { title, icon, subtitle } = toRefs(props);
|
|
15
|
+
</script>
|
|
16
|
+
<template>
|
|
17
|
+
<div class="lg:grid lg:grid-cols-12 lg:gap-8">
|
|
18
|
+
<div class="lg:col-span-2">
|
|
19
|
+
<h2
|
|
20
|
+
class="text-pretty text-3xl font-semibold tracking-tight text-gray-900 dark:text-gray-100 sm:text-xl"
|
|
21
|
+
>
|
|
22
|
+
<EpIcon v-if="icon" :icon-path="icon" size="28" extraClass="mr-2"></EpIcon>
|
|
23
|
+
{{ title }}
|
|
24
|
+
</h2>
|
|
25
|
+
</div>
|
|
26
|
+
<div class="mt-10 lg:col-span-8 lg:mt-0 lg:border-l dark:border-gray-700 lg:pl-4">
|
|
27
|
+
<div class="py-2">
|
|
28
|
+
<h3 v-if="subtitle" class="text-base font-semibold leading-7 text-gray-900 dark:text-gray-100">
|
|
29
|
+
{{subtitle}}
|
|
30
|
+
</h3>
|
|
31
|
+
<div class="text-gray-600 dark:text-gray-300">
|
|
32
|
+
<slot></slot>
|
|
33
|
+
</div>
|
|
34
|
+
</div>
|
|
35
|
+
</div>
|
|
36
|
+
</div>
|
|
37
|
+
</template>
|
|
38
|
+
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import { toRefs } from "vue";
|
|
3
|
+
import EpIcon from "../basics/EpIcon.vue";
|
|
4
|
+
|
|
5
|
+
interface Props {
|
|
6
|
+
icon?: string | null;
|
|
7
|
+
title?: string | null;
|
|
8
|
+
subtitle? :string | null;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
const props = withDefaults(defineProps<Props>(), {
|
|
12
|
+
title: "Description",
|
|
13
|
+
});
|
|
14
|
+
const { title, icon, subtitle } = toRefs(props);
|
|
15
|
+
</script>
|
|
16
|
+
<template>
|
|
17
|
+
<div class="lg:grid lg:grid-cols-12 lg:gap-8">
|
|
18
|
+
<div class="lg:col-span-2">
|
|
19
|
+
<h2
|
|
20
|
+
class="text-pretty text-3xl font-semibold tracking-tight text-gray-900 dark:text-gray-100 sm:text-xl"
|
|
21
|
+
>
|
|
22
|
+
<EpIcon v-if="icon" :icon-path="icon" size="28" extraClass="mr-2"></EpIcon>
|
|
23
|
+
{{ title }}
|
|
24
|
+
</h2>
|
|
25
|
+
</div>
|
|
26
|
+
<div class="mt-10 lg:col-span-8 lg:mt-0 lg:border-l dark:border-gray-700 lg:pl-4">
|
|
27
|
+
<div class="py-2">
|
|
28
|
+
<h3 v-if="subtitle" class="text-base font-semibold leading-7 text-gray-900 dark:text-gray-100">
|
|
29
|
+
{{subtitle}}
|
|
30
|
+
</h3>
|
|
31
|
+
<div class="text-gray-600 dark:text-gray-300">
|
|
32
|
+
<slot></slot>
|
|
33
|
+
</div>
|
|
34
|
+
</div>
|
|
35
|
+
</div>
|
|
36
|
+
</div>
|
|
37
|
+
</template>
|
|
38
|
+
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import { toRefs } from "vue";
|
|
3
|
+
import EpIcon from "../basics/EpIcon.vue";
|
|
4
|
+
import EpAccordeon from "../interactions/EpAccordeon.vue";
|
|
5
|
+
|
|
6
|
+
type Instructions = {
|
|
7
|
+
uid:string;
|
|
8
|
+
title:string;
|
|
9
|
+
content:string;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
interface Props {
|
|
13
|
+
icon?: string | null;
|
|
14
|
+
title?: string | null;
|
|
15
|
+
subtitle? :string | null;
|
|
16
|
+
instructions:Instructions[];
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
const props = withDefaults(defineProps<Props>(), {
|
|
20
|
+
title: "Consignes",
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
const { title, icon, subtitle } = toRefs(props);
|
|
24
|
+
|
|
25
|
+
</script>
|
|
26
|
+
<template>
|
|
27
|
+
<div class="lg:grid lg:grid-cols-12 lg:gap-8">
|
|
28
|
+
<div class="lg:col-span-2">
|
|
29
|
+
<h2
|
|
30
|
+
class="text-pretty text-3xl font-semibold tracking-tight text-gray-900 dark:text-gray-100 sm:text-xl"
|
|
31
|
+
>
|
|
32
|
+
<EpIcon v-if="icon" :icon-path="icon" size="28" extraClass="mr-2"></EpIcon>
|
|
33
|
+
{{ title }}
|
|
34
|
+
</h2>
|
|
35
|
+
</div>
|
|
36
|
+
<div class="mt-10 lg:col-span-8 lg:mt-0 lg:border-l dark:border-gray-700 lg:pl-4">
|
|
37
|
+
<div class="py-2">
|
|
38
|
+
<template v-for="instruction in instructions" :key="`instruction-${instruction.uid}`">
|
|
39
|
+
<EpAccordeon small outlined :title="instruction.title">
|
|
40
|
+
<div v-html="instruction.content"></div>
|
|
41
|
+
</EpAccordeon>
|
|
42
|
+
</template>
|
|
43
|
+
|
|
44
|
+
</div>
|
|
45
|
+
</div>
|
|
46
|
+
</div>
|
|
47
|
+
</template>
|
|
48
|
+
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import { toRefs } from "vue";
|
|
3
|
+
import EpIcon from "../basics/EpIcon.vue";
|
|
4
|
+
|
|
5
|
+
interface Props {
|
|
6
|
+
icon?: string | null;
|
|
7
|
+
title?: string | null;
|
|
8
|
+
subtitle? :string | null;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
const props = withDefaults(defineProps<Props>(), {
|
|
12
|
+
title: "Introduction",
|
|
13
|
+
});
|
|
14
|
+
const { title, icon, subtitle } = toRefs(props);
|
|
15
|
+
</script>
|
|
16
|
+
<template>
|
|
17
|
+
<div class="lg:grid lg:grid-cols-12 lg:gap-8">
|
|
18
|
+
<div class="lg:col-span-2">
|
|
19
|
+
<h2
|
|
20
|
+
class="text-pretty text-3xl font-semibold tracking-tight text-gray-900 dark:text-gray-100 sm:text-xl"
|
|
21
|
+
>
|
|
22
|
+
<EpIcon v-if="icon" :icon-path="icon" size="28" extraClass="mr-2"></EpIcon>
|
|
23
|
+
{{ title }}
|
|
24
|
+
</h2>
|
|
25
|
+
</div>
|
|
26
|
+
<div class="mt-10 lg:col-span-8 lg:mt-0 lg:border-l dark:border-gray-700 lg:pl-4">
|
|
27
|
+
<div class="py-2">
|
|
28
|
+
<h3 v-if="subtitle" class="text-base font-semibold leading-7 text-gray-900 dark:text-gray-100">
|
|
29
|
+
{{subtitle}}
|
|
30
|
+
</h3>
|
|
31
|
+
<div class="text-gray-600 dark:text-gray-300">
|
|
32
|
+
<slot></slot>
|
|
33
|
+
</div>
|
|
34
|
+
</div>
|
|
35
|
+
</div>
|
|
36
|
+
</div>
|
|
37
|
+
</template>
|
|
38
|
+
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
|
|
3
|
+
interface Props {
|
|
4
|
+
nameApproach?:string | null;
|
|
5
|
+
title?:string|null;
|
|
6
|
+
color?:`border-${string}`;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
const props = withDefaults(defineProps<Props>(),{
|
|
10
|
+
color:'border-gray'
|
|
11
|
+
})
|
|
12
|
+
|
|
13
|
+
</script>
|
|
14
|
+
|
|
15
|
+
<template>
|
|
16
|
+
<div :class="`border-l-8
|
|
17
|
+
${color}
|
|
18
|
+
p-4
|
|
19
|
+
my-3
|
|
20
|
+
transition
|
|
21
|
+
duration-200
|
|
22
|
+
ease-in-out
|
|
23
|
+
outline-primary
|
|
24
|
+
focus-within:outline
|
|
25
|
+
focus-within:outline-1
|
|
26
|
+
outline-offset-4
|
|
27
|
+
hover:outline
|
|
28
|
+
hover:outline-1
|
|
29
|
+
hover:outline-gray-200
|
|
30
|
+
dark:hover:outline-gray-700`">
|
|
31
|
+
<div class="flex flex-row divide-x gap-x-4">
|
|
32
|
+
<div class="w-32">
|
|
33
|
+
{{ nameApproach }}
|
|
34
|
+
</div>
|
|
35
|
+
<div class="flex-1 pl-4">
|
|
36
|
+
<h4 class="font-medium mb-1">{{ title }}</h4>
|
|
37
|
+
<slot></slot>
|
|
38
|
+
</div>
|
|
39
|
+
</div>
|
|
40
|
+
</div>
|
|
41
|
+
</template>
|
|
@@ -182,7 +182,7 @@ const errorImg = (event:Event)=>{
|
|
|
182
182
|
<template v-if="!hideCover">
|
|
183
183
|
<img
|
|
184
184
|
v-if="hasCover"
|
|
185
|
-
class="object-cover h-96 w-full rounded-t-lg
|
|
185
|
+
class="object-cover h-96 w-full rounded-t-lg md:h-auto md:w-56 md:rounded-none md:rounded-l-lg "
|
|
186
186
|
:src="cover"
|
|
187
187
|
:alt="`image de la lecture ${title}`"
|
|
188
188
|
@error="errorImg"
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import { computed } from "vue";
|
|
3
|
+
interface Props {
|
|
4
|
+
label?: string | null;
|
|
5
|
+
title?: string | null;
|
|
6
|
+
color?: `border-${string}`;
|
|
7
|
+
tab?: boolean;
|
|
8
|
+
content?: string | null;
|
|
9
|
+
bg?: boolean;
|
|
10
|
+
border?: boolean;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
const props = withDefaults(defineProps<Props>(), {
|
|
14
|
+
color: "border-gray",
|
|
15
|
+
tab: false,
|
|
16
|
+
border: false,
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
const styles = computed(() => {
|
|
20
|
+
return `
|
|
21
|
+
${props.tab ? "border-l-8" : ""}
|
|
22
|
+
${props.bg ? "bg-gray-50 dark:border-gray-50 dark:text-dark" : ""}
|
|
23
|
+
${props.border ? "ring-1 dark:ring-gray-50" : ""}
|
|
24
|
+
`;
|
|
25
|
+
});
|
|
26
|
+
</script>
|
|
27
|
+
<template>
|
|
28
|
+
<div :class="`${styles} rounded-lg ring-gray-900/5 p-4`">
|
|
29
|
+
<dl class="flex flex-nowrap gap-x-4">
|
|
30
|
+
<div v-if="label" class="flex-none self-center">
|
|
31
|
+
<div
|
|
32
|
+
class="inline-flex items-center rounded-md px-2 py-1 text-xs font-medium text-primary-700 ring-1 ring-inset ring-primary-600/20"
|
|
33
|
+
>
|
|
34
|
+
{{ label }}
|
|
35
|
+
</div>
|
|
36
|
+
</div>
|
|
37
|
+
<div class="flex-auto">
|
|
38
|
+
<dd :class="`mt-1 text-base font-base text-gray-900 ${bg?'dark:text-dark':'dark:text-gray-300'}`">{{ content }}</dd>
|
|
39
|
+
</div>
|
|
40
|
+
</dl>
|
|
41
|
+
</div>
|
|
42
|
+
</template>
|
|
@@ -1,163 +1,27 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
|
+
import { defineProps } from 'vue';
|
|
2
3
|
|
|
3
|
-
|
|
4
|
-
import { mdiLockOutline } from "@mdi/js";
|
|
4
|
+
type Option = { text: string; value: string };
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
type?:
|
|
11
|
-
| "text"
|
|
12
|
-
| "email"
|
|
13
|
-
| "url"
|
|
14
|
-
| "password"
|
|
15
|
-
| "number"
|
|
16
|
-
| "date"
|
|
17
|
-
| "search"
|
|
18
|
-
| "tel"
|
|
19
|
-
| "time";
|
|
20
|
-
placeholder?: string;
|
|
21
|
-
iconPath?: string;
|
|
22
|
-
iconSize?: string;
|
|
23
|
-
disabled?: boolean;
|
|
24
|
-
readonly?: boolean;
|
|
25
|
-
labels?:{
|
|
26
|
-
option?:string;
|
|
27
|
-
vanderpoel?:string;
|
|
28
|
-
vanaert?:string;
|
|
29
|
-
pogacar?:string;
|
|
30
|
-
evenepoel?:string;
|
|
31
|
-
meilleur?:string;
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
const props = withDefaults(defineProps<Props>(), {
|
|
36
|
-
id: "0",
|
|
37
|
-
label: "label",
|
|
38
|
-
modelValue: "",
|
|
39
|
-
type: "text",
|
|
40
|
-
placeholder: "",
|
|
41
|
-
iconPath: "",
|
|
42
|
-
iconSize: "",
|
|
43
|
-
disabled: false,
|
|
44
|
-
labels:()=>{
|
|
45
|
-
return {
|
|
46
|
-
option:"Choisissez une option",
|
|
47
|
-
vanderpoel:"Van Der Poel",
|
|
48
|
-
vanaert:"Van Aert",
|
|
49
|
-
pogacar:"Pogacar",
|
|
50
|
-
evenepoel:"Evenepoel",
|
|
51
|
-
meilleur:"Quel est le meilleur cycliste"
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
});
|
|
6
|
+
const props = defineProps<{
|
|
7
|
+
options: Option[];
|
|
8
|
+
modelValue: string;
|
|
9
|
+
}>();
|
|
55
10
|
|
|
11
|
+
const model = defineModel()
|
|
56
12
|
|
|
57
13
|
</script>
|
|
58
14
|
|
|
59
15
|
<template>
|
|
60
|
-
<div class="
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
py-2.5
|
|
72
|
-
font-sans
|
|
73
|
-
text-sm
|
|
74
|
-
font-normal
|
|
75
|
-
text-blue-gray-700
|
|
76
|
-
outline
|
|
77
|
-
outline-0
|
|
78
|
-
transition-all
|
|
79
|
-
placeholder-shown:border
|
|
80
|
-
placeholder-shown:border-blue-gray-200
|
|
81
|
-
placeholder-shown:border-t-blue-gray-200
|
|
82
|
-
empty:!bg-red-500
|
|
83
|
-
focus:border-2
|
|
84
|
-
focus:border-blue-500
|
|
85
|
-
focus:border-t-transparent
|
|
86
|
-
focus:outline-4
|
|
87
|
-
placeholder-shown:outline-0
|
|
88
|
-
disabled:border-0
|
|
89
|
-
disabled:cursor-not-allowed
|
|
90
|
-
disabled:bg-neutral-200
|
|
91
|
-
focus:ring-0
|
|
92
|
-
">
|
|
93
|
-
<option value="option">{{labels.option}}</option>
|
|
94
|
-
<option value="vanderpoel">{{labels.vanderpoel}}</option>
|
|
95
|
-
<option value="vanaert">{{labels.vanaert}}</option>
|
|
96
|
-
<option value="pogacar">{{labels.pogacar}}</option>
|
|
97
|
-
<option value="evenepoel">{{labels.evenepoel}}</option>
|
|
98
|
-
</select>
|
|
99
|
-
<label class="before:content[' ']
|
|
100
|
-
after:content[' ']
|
|
101
|
-
pointer-events-none
|
|
102
|
-
absolute
|
|
103
|
-
left-0
|
|
104
|
-
border-red-500
|
|
105
|
-
-top-1.5
|
|
106
|
-
flex
|
|
107
|
-
h-full
|
|
108
|
-
w-full
|
|
109
|
-
select-none
|
|
110
|
-
text-[11px]
|
|
111
|
-
font-normal
|
|
112
|
-
leading-tight
|
|
113
|
-
text-blue-gray-400
|
|
114
|
-
transition-all
|
|
115
|
-
before:pointer-events-none
|
|
116
|
-
before:mt-[6.5px]
|
|
117
|
-
before:mr-1
|
|
118
|
-
before:box-border
|
|
119
|
-
before:block
|
|
120
|
-
before:h-1.5
|
|
121
|
-
before:w-2.5
|
|
122
|
-
before:rounded-tl-md
|
|
123
|
-
before:border-t
|
|
124
|
-
before:border-l
|
|
125
|
-
before:border-blue-gray-200
|
|
126
|
-
before:transition-all
|
|
127
|
-
after:pointer-events-none
|
|
128
|
-
after:mt-[6.5px]
|
|
129
|
-
after:ml-1
|
|
130
|
-
after:box-border
|
|
131
|
-
after:block
|
|
132
|
-
after:h-1.5
|
|
133
|
-
after:w-2.5
|
|
134
|
-
after:flex-grow
|
|
135
|
-
after:rounded-tr-md
|
|
136
|
-
after:border-t
|
|
137
|
-
after:border-r
|
|
138
|
-
after:border-blue-gray-200
|
|
139
|
-
after:transition-all
|
|
140
|
-
peer-placeholder-shown:text-sm
|
|
141
|
-
peer-placeholder-shown:leading-[3.75]
|
|
142
|
-
peer-placeholder-shown:text-blue-gray-500
|
|
143
|
-
peer-placeholder-shown:before:border-transparent
|
|
144
|
-
peer-placeholder-shown:after:border-transparent
|
|
145
|
-
peer-focus:text-[11px]
|
|
146
|
-
peer-focus:leading-tight
|
|
147
|
-
peer-focus:text-blue-500
|
|
148
|
-
peer-focus:before:border-t-2
|
|
149
|
-
peer-focus:before:border-l-2
|
|
150
|
-
peer-focus:before:border-blue-500
|
|
151
|
-
peer-focus:after:border-t-2
|
|
152
|
-
peer-focus:after:border-r-2
|
|
153
|
-
peer-focus:after:border-blue-500
|
|
154
|
-
peer-disabled:text-transparent
|
|
155
|
-
peer-disabled:before:border-transparent
|
|
156
|
-
peer-disabled:after:border-transparent
|
|
157
|
-
peer-disabled:peer-placeholder-shown:text-blue-gray-500
|
|
158
|
-
">
|
|
159
|
-
{{labels.meilleur}}
|
|
160
|
-
</label>
|
|
161
|
-
<EpBadge :iconPath="mdiLockOutline" />
|
|
162
|
-
</div>
|
|
16
|
+
<div class="w-full max-w-xs">
|
|
17
|
+
<label class="block text-sm font-medium text-gray-700 mb-1">Select Theme:</label>
|
|
18
|
+
<select
|
|
19
|
+
v-model="model"
|
|
20
|
+
class="block w-full bg-white border border-gray-300 rounded-md shadow-sm py-2 px-3 focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 sm:text-sm"
|
|
21
|
+
>
|
|
22
|
+
<option v-for="option in options" :key="option.value" :value="option.value">
|
|
23
|
+
{{ option.text }}
|
|
24
|
+
</option>
|
|
25
|
+
</select>
|
|
26
|
+
</div>
|
|
163
27
|
</template>
|
|
@@ -10,6 +10,7 @@ interface Props {
|
|
|
10
10
|
open?: boolean;
|
|
11
11
|
outlined?:boolean;
|
|
12
12
|
title?:string | null
|
|
13
|
+
small?:boolean;
|
|
13
14
|
}
|
|
14
15
|
|
|
15
16
|
const props = withDefaults(defineProps<Props>(), {
|
|
@@ -31,7 +32,7 @@ const isOutlined = computed(()=>{
|
|
|
31
32
|
})
|
|
32
33
|
|
|
33
34
|
const stylesHeader = computed(()=>{
|
|
34
|
-
return `flex justify-between items-center px-4 py-2 cursor-pointer ${typeAccordeon[props.type]?.[isOutlined.value]}`
|
|
35
|
+
return `flex justify-between items-center px-4 ${props.small?'py-1':'py-2'} cursor-pointer ${typeAccordeon[props.type]?.[isOutlined.value]}`
|
|
35
36
|
})
|
|
36
37
|
|
|
37
38
|
const contentStyles = computed(()=>{
|
|
@@ -60,20 +61,20 @@ function toggleDivVisibility() {
|
|
|
60
61
|
}
|
|
61
62
|
|
|
62
63
|
|
|
63
|
-
const {title, icon } = toRefs(props)
|
|
64
|
+
const {title, icon, small } = toRefs(props)
|
|
64
65
|
</script>
|
|
65
66
|
|
|
66
67
|
<template>
|
|
67
68
|
<div>
|
|
68
69
|
<div :class="stylesHeader" @click="toggleDivVisibility">
|
|
69
|
-
<h3 class="text-lg flex items-center"><EpIcon v-if="icon" :icon-path="icon" size="28" extraClass="mr-2"></EpIcon>{{ title }}</h3>
|
|
70
|
+
<h3 :class="`${small?'text':'text-lg'} flex items-center`"><EpIcon v-if="icon" :icon-path="icon" size="28" extraClass="mr-2"></EpIcon>{{ title }}</h3>
|
|
70
71
|
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor"
|
|
71
72
|
:class="`mx-4 my-3 h-6 w-6 transition-all duration-200 ${showDiv ? 'rotate-45' : ''}`">
|
|
72
73
|
<path stroke-linecap="round" stroke-linejoin="round" d="M12 6v12m6-6H6" />
|
|
73
74
|
</svg>
|
|
74
75
|
</div>
|
|
75
76
|
<div ref="collapsible" :class="`${contentStyles} content`">
|
|
76
|
-
<div class="py-
|
|
77
|
+
<div class="py-3">
|
|
77
78
|
|
|
78
79
|
<slot></slot>
|
|
79
80
|
|