@ecored-sena/base-kit 0.0.1

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.
Files changed (67) hide show
  1. package/README.md +1 -0
  2. package/package.json +49 -0
  3. package/plugin/components/AccordionRED.vue +78 -0
  4. package/plugin/components/AcordionA.vue +78 -0
  5. package/plugin/components/Audio.vue +20 -0
  6. package/plugin/components/BannerHero.vue +104 -0
  7. package/plugin/components/CarouselCard.vue +70 -0
  8. package/plugin/components/CarouselRED.vue +65 -0
  9. package/plugin/components/Complementario.vue +81 -0
  10. package/plugin/components/Creditos.vue +101 -0
  11. package/plugin/components/Dialogo.vue +30 -0
  12. package/plugin/components/DialogoActividad.vue +274 -0
  13. package/plugin/components/DialogoBurbuja.vue +46 -0
  14. package/plugin/components/DialogoChat.vue +88 -0
  15. package/plugin/components/Footer.vue +42 -0
  16. package/plugin/components/GlobalComponents.js +39 -0
  17. package/plugin/components/Glosario.vue +100 -0
  18. package/plugin/components/ImagenInfografica.vue +100 -0
  19. package/plugin/components/ImagenInfograficaB.vue +68 -0
  20. package/plugin/components/Inicio.vue +128 -0
  21. package/plugin/components/LineaTiempoA.vue +30 -0
  22. package/plugin/components/LineaTiempoB.vue +36 -0
  23. package/plugin/components/LineaTiempoC.vue +95 -0
  24. package/plugin/components/LineaTiempoD.vue +51 -0
  25. package/plugin/components/LineaTiempoE.vue +25 -0
  26. package/plugin/components/ModalA.vue +22 -0
  27. package/plugin/components/PasosA.vue +59 -0
  28. package/plugin/components/PasosB.vue +90 -0
  29. package/plugin/components/Referencias.vue +45 -0
  30. package/plugin/components/ScrollHorizontal.vue +105 -0
  31. package/plugin/components/Separador.vue +12 -0
  32. package/plugin/components/SlyderA.vue +65 -0
  33. package/plugin/components/SlyderB.vue +48 -0
  34. package/plugin/components/SlyderC.vue +53 -0
  35. package/plugin/components/SlyderD.vue +50 -0
  36. package/plugin/components/SlyderE.vue +58 -0
  37. package/plugin/components/SlyderF.vue +141 -0
  38. package/plugin/components/TabsA.vue +44 -0
  39. package/plugin/components/TabsB.vue +40 -0
  40. package/plugin/components/TabsC.vue +39 -0
  41. package/plugin/components/TarjetaAudio.vue +65 -0
  42. package/plugin/components/TimeLineRED.vue +51 -0
  43. package/plugin/components/actividad/ActividadController.vue +34 -0
  44. package/plugin/components/actividad/actividadCompletar/ActividadCompletar.vue +283 -0
  45. package/plugin/components/actividad/actividadCompletar/ActividadCompletarFooter.vue +63 -0
  46. package/plugin/components/actividad/actividadCompletar/ActividadParrafo.vue +218 -0
  47. package/plugin/components/actividad/actividadCompletar/ActividadResultados.vue +215 -0
  48. package/plugin/components/actividad/actividadCuestionario/Actividad.vue +222 -0
  49. package/plugin/components/actividad/actividadCuestionario/ActividadBarraAvance.vue +116 -0
  50. package/plugin/components/actividad/actividadCuestionario/ActividadPregunta.vue +146 -0
  51. package/plugin/components/actividad/actividadCuestionario/ActividadResultados.vue +215 -0
  52. package/plugin/components/audioMixins.js +73 -0
  53. package/plugin/components/componentSlotMixins.js +87 -0
  54. package/plugin/components/dialogoMixins.js +28 -0
  55. package/plugin/components/globalMixins.js +11 -0
  56. package/plugin/components/plantilla/Accesibilidad.vue +101 -0
  57. package/plugin/components/plantilla/AsideMenu.vue +242 -0
  58. package/plugin/components/plantilla/BannerInterno.vue +66 -0
  59. package/plugin/components/plantilla/BannerPrincipal.vue +104 -0
  60. package/plugin/components/plantilla/BarraAvance.vue +379 -0
  61. package/plugin/components/plantilla/Curso.vue +12 -0
  62. package/plugin/components/plantilla/Footer.vue +42 -0
  63. package/plugin/components/plantilla/Header.vue +152 -0
  64. package/plugin/components/plantilla/ScrollHorizontal.vue +105 -0
  65. package/plugin/components/plantillaMixins.js +34 -0
  66. package/plugin/components/slyderMixins.js +18 -0
  67. package/plugin/plugin.js +49 -0
@@ -0,0 +1,68 @@
1
+ <template lang="pug">
2
+ .img-infografica-b(
3
+ :class="{'img-infografica-b--open': selectedItem}"
4
+ )
5
+ .img-infografica-b__img(:ref="'img-ref-'+mainId")
6
+ slot(name="imagen")
7
+ .img-infografica-b__content(v-if="elements.length")
8
+ .img-infografica-b__item(
9
+ v-for="(item, index) in elements"
10
+ :key="'img-infografica-b-btn-'+item.id"
11
+ :style="[{top: item.y},{left: item.x}]"
12
+ @click="selected = item.id"
13
+ )
14
+ .indicador--click(v-if="showIndicator && firstElement.id === item.id")
15
+ .img-infografica-b__item__tooltip
16
+ span.text-small(v-html="item.tooltip")
17
+ .img-infografica-b__item__dot
18
+ .img-infografica-b__item__numero(v-if="item.hasOwnProperty('numero')") {{item.numero}}
19
+ .img-infografica-b__item__numero(v-else)
20
+ i.fas.fa-plus
21
+
22
+ .img-infografica-b__modal.p-3.p-md-4.p-xl-5(v-if="selectedItem" :style="getImageHeight()")
23
+ .img-infografica-b__modal__btn-cerrar(@click="selected = 0")
24
+ i.fas.fa-times
25
+ .img-infografica-b__modal__contenido(v-child="selectedItem.elm")
26
+
27
+ .hidden-slot
28
+ slot
29
+ </template>
30
+
31
+ <script>
32
+ import componentSlotMixins from './componentSlotMixins'
33
+ export default {
34
+ name: 'ImagenInfograficaB',
35
+ mixins: [componentSlotMixins],
36
+ data: () => ({
37
+ firstSelection: false,
38
+ showIndicator: true,
39
+ }),
40
+ computed: {
41
+ selectedItem() {
42
+ return this.elements.find(element => element.id === this.selected)
43
+ },
44
+ firstElement() {
45
+ return this.elements.length && this.elements[0]
46
+ },
47
+ },
48
+ watch: {
49
+ selected() {
50
+ if (this.showIndicator) {
51
+ this.showIndicator = false
52
+ }
53
+ },
54
+ },
55
+ methods: {
56
+ getImageHeight() {
57
+ const imgElement = this.$refs['img-ref-' + this.mainId]
58
+ if (imgElement) {
59
+ return {
60
+ 'min-height': imgElement.clientHeight + 'px',
61
+ }
62
+ }
63
+ },
64
+ },
65
+ }
66
+ </script>
67
+
68
+ <style lang="sass"></style>
@@ -0,0 +1,128 @@
1
+ <template lang="pug">
2
+ section.inicio
3
+ BannerHero.mb-5
4
+
5
+ //- Desarrollo de contenidos
6
+ #contenidos.container.tarjeta.tarjeta__template--azul-claro.px-3.py-4.px-sm-5.pb-sm-5.mb-5
7
+ .titulo__template--a.mb-4
8
+ h3 Desarrollo<br>de contenidos
9
+
10
+ .tarjeta--blanca.p-3.p-sm-4
11
+ .desarrollo-contenidos
12
+ router-link.desarrollo-contenidos__item(
13
+ v-for="item of desarrolloContenidosData"
14
+ :key="'desarrollo-'+item.nombreRuta"
15
+ :to="{name: item.nombreRuta}"
16
+ )
17
+ .desarrollo-contenidos__item__texto
18
+ span.desarrollo-contenidos__item__icono(v-if="item.hasOwnProperty('numero')" ) {{item.numero}}
19
+ i.desarrollo-contenidos__item__icono(v-else :class="item.icono")
20
+ span(v-html="item.titulo")
21
+
22
+ a.boton--sm
23
+ span.d-none.d-md-block Ver contenido
24
+ span.d-md-none Ver
25
+
26
+ .container.tarjeta.tarjeta__template--azul-claro.creditos-inicio.px-3.py-4.px-sm-5
27
+
28
+ .creditos-inicio__container(v-if="creditosInicio")
29
+ .creditos-inicio__item(v-for="(row, index) in creditosInicio")
30
+ .row
31
+ .creditos-inicio__titulo.col-md-3.col-lg-2.mb-3.mb-md-0
32
+ h5.mb-0(v-html="row.titulo")
33
+
34
+ .creditos-inicio__imagenes.col
35
+ img(v-for="imagen in row.contenido" :src="imagen")
36
+ hr(v-if="index != creditosInicio.length -1")
37
+
38
+ .text-center(v-else)
39
+ img.d-inline-block.mb-2(src="@/assets/logos/logo-sena.svg" style="width: 100px")
40
+ h5.mb-0 Ecosistema de recursos educativos digitales
41
+ Footer
42
+
43
+
44
+ </template>
45
+ <script>
46
+ export default {
47
+ name: 'Inicio',
48
+ computed: {
49
+ menuPrincipalData() {
50
+ return this.$config.menuPrincipal
51
+ },
52
+ creditosInicio() {
53
+ return this.$config.creditosInicio
54
+ },
55
+ desarrolloContenidosData() {
56
+ const allMenuData = [
57
+ ...this.menuPrincipalData.menu,
58
+ ...this.menuPrincipalData.subMenu,
59
+ ]
60
+ return allMenuData.filter(item => item.desarrolloContenidos)
61
+ },
62
+ },
63
+ }
64
+ </script>
65
+
66
+ <style lang="sass">
67
+ .inicio
68
+ .footer
69
+ border-radius: 0 !important
70
+ .resultados-aprendizaje
71
+ &__item
72
+ margin-bottom: 20px
73
+ &:last-child
74
+ margin-bottom: 0
75
+
76
+ .desarrollo-contenidos
77
+ &__item
78
+ display: flex
79
+ align-items: center
80
+ justify-content: space-between
81
+ margin-bottom: 25px
82
+ padding: 5px
83
+ border-radius: $base-border-radius
84
+
85
+ &__texto
86
+ display: flex
87
+ align-items: center
88
+ color: $color-sistema-texto
89
+
90
+ &__icono
91
+ display: block
92
+ background-color: $color-sistema-g
93
+ font-size: 20px
94
+ font-weight: $base-black-font-weight
95
+ text-align: center
96
+ padding: 10px
97
+ line-height: 1em
98
+ width: 40px
99
+ margin-right: 15px
100
+
101
+ &:last-child
102
+ margin-bottom: 0
103
+
104
+ &:hover
105
+ background-color: $color-sistema-g
106
+ font-weight: $base-black-font-weight
107
+ color: $color-sistema-a
108
+
109
+ .creditos-inicio
110
+ border-bottom-left-radius: 0 !important
111
+ border-bottom-right-radius: 0 !important
112
+ &__container
113
+ hr
114
+ margin: 15px 0
115
+ &__titulo
116
+ display: flex
117
+ align-items: center
118
+ &__item
119
+ &__imagenes
120
+ display: flex
121
+ flex-wrap: wrap
122
+ img
123
+ width: auto
124
+ max-height: 60px
125
+ margin-right: 15px
126
+ margin-top: 5px
127
+ margin-bottom: 5px
128
+ </style>
@@ -0,0 +1,30 @@
1
+ <template lang="pug">
2
+ .linea-tiempo-a
3
+ .linea-tiempo-a__row(
4
+ v-for="(item,index) of datos"
5
+ :ref="'linea-tiempo-item-'+index"
6
+ )
7
+ .linea-tiempo-a__content
8
+ .linea-tiempo-a__text
9
+ h3.mb-2(v-html="item.titulo")
10
+ span(v-html="item.texto")
11
+
12
+ .linea-tiempo-a__content
13
+ .linea-tiempo-a__icon
14
+ .linea-tiempo-a__icon__container
15
+ span.h4(v-html="item.ano")
16
+ </template>
17
+
18
+ <script>
19
+ export default {
20
+ name: 'LineaTiempoA',
21
+ props: {
22
+ datos: {
23
+ type: Array,
24
+ default: () => [],
25
+ },
26
+ },
27
+ }
28
+ </script>
29
+
30
+ <style lang="sass"></style>
@@ -0,0 +1,36 @@
1
+ <template lang="pug">
2
+ .linea-tiempo-b.py-5
3
+ .linea-tiempo-b__line-row.row
4
+ .col-5.d-none.d-md-block
5
+ .col-3.col-md-2
6
+ .linea-tiempo-b__line
7
+ .col-9.col-md-5
8
+
9
+ .linea-tiempo-b__row.row.align-items-center(
10
+ v-for="(item,index) of datos"
11
+ :ref="'linea-tiempo-item-'+index"
12
+ )
13
+ .col-5.d-none.d-md-block
14
+ .col-3.col-md-2
15
+ .linea-tiempo-b__icon
16
+ img(:src="item.icono")
17
+ .col-9.col-md-5
18
+ .linea-tiempo-b__content
19
+ h3.mb-2(v-html="item.titulo")
20
+ span(v-html="item.texto")
21
+
22
+ </template>
23
+
24
+ <script>
25
+ export default {
26
+ name: 'LineaTiempoB',
27
+ props: {
28
+ datos: {
29
+ type: Array,
30
+ default: () => [],
31
+ },
32
+ },
33
+ }
34
+ </script>
35
+
36
+ <style lang="sass"></style>
@@ -0,0 +1,95 @@
1
+ <template lang="pug">
2
+ .linea-tiempo-c
3
+ .row.flex-nowrap.mx-0.linea-tiempo-c__header.mb-4
4
+ .col-2.col-sm-auto.px-0.me-sm-3
5
+ .linea-tiempo-c__header__btn--left(@click="selected = leftBtnId")
6
+ i.fas.fa-angle-left
7
+ .col-8.col-sm.px-0
8
+ .row.mx-0.flex-nowrap.linea-tiempo-c__header__items
9
+ ScrollHorizontal(
10
+ v-if="elements.length"
11
+ :selectedId="'ltc-header-' + (selected -1)"
12
+ )
13
+ .col-6.col-sm-4.px-0.linea-tiempo-c__header__item(
14
+ v-for="(elm,index) of elements"
15
+ :key="'ltc-header-key-'+elm.id"
16
+ :id="'ltc-header-' +elm.id"
17
+ :class="itemClasses(elm.id)"
18
+ @click="selected = elm.id"
19
+ @mouseover="mostrarIndicador = mostrarIndicador && index >= 1 ? false : mostrarIndicador"
20
+ )
21
+ .indicador__container(v-if="mostrarIndicador && index === 1")
22
+ .indicador--click.indicador--sm
23
+ span.linea-tiempo-c__header__item__year(v-html="elm.titulo" :class="{'text-small' : textSmall }")
24
+ .linea-tiempo-c__header__item__line-container
25
+ .linea-tiempo-c__header__item__dot
26
+ .col-2.col-sm-auto.px-0.ms-sm-3.d-flex.justify-content-end
27
+ .linea-tiempo-c__header__btn--right(@click="selected = rightBtnId")
28
+ i.fas.fa-angle-right
29
+
30
+ .linea-tiempo-c__content
31
+ ScrollHorizontal(
32
+ v-if="elements.length"
33
+ :selectedId="'ltc-content-' + selected"
34
+ item-full-width
35
+ )
36
+ .linea-tiempo-c__content__item(
37
+ v-for="item in elements"
38
+ :key="'ltc-content-key-'+item.id"
39
+ :id="'ltc-content-'+item.id"
40
+ v-child="item.elm"
41
+ )
42
+ .hidden-slot
43
+ slot
44
+ </template>
45
+
46
+ <script>
47
+ import componentSlotMixins from './componentSlotMixins'
48
+ import ScrollHorizontal from './ScrollHorizontal'
49
+ export default {
50
+ name: 'LineaTiempoC',
51
+ components: { ScrollHorizontal },
52
+ mixins: [componentSlotMixins],
53
+ props: {
54
+ textSmall: {
55
+ type: Boolean,
56
+ },
57
+ },
58
+ data: () => ({
59
+ headerSelected: 0,
60
+ mostrarIndicador: true,
61
+ }),
62
+ computed: {
63
+ leftBtnId() {
64
+ return this.selected - 1 === this.mainId
65
+ ? this.selected
66
+ : this.selected - 1
67
+ },
68
+ rightBtnId() {
69
+ return this.selected + 1 ===
70
+ this.elements[this.elements.length - 1].id + 1
71
+ ? this.selected
72
+ : this.selected + 1
73
+ },
74
+ },
75
+ watch: {
76
+ elements(newVal, oldVal) {
77
+ if (!oldVal.length && newVal.length) {
78
+ this.headerSelected = newVal[0].id
79
+ }
80
+ },
81
+ },
82
+ methods: {
83
+ itemClasses(id) {
84
+ return [
85
+ { 'linea-tiempo-c__header__item--active': id === this.selected },
86
+ { 'linea-tiempo-c__header__item--before': id < this.selected },
87
+ this.elements.length > 6 ? 'col-lg-2' : 'col-lg',
88
+ this.elements.length >= 4 ? 'col-md-3' : 'col-md',
89
+ ]
90
+ },
91
+ },
92
+ }
93
+ </script>
94
+
95
+ <style lang="sass"></style>
@@ -0,0 +1,51 @@
1
+ <template lang="pug">
2
+ .linea-tiempo-d
3
+ .linea-tiempo-d__item.row(
4
+ v-for="(item, index) in elements"
5
+ :key="'linea-tiempo-d-key-'+item.id"
6
+ :class="{'linea-tiempo-d__item--selected' : selected === item.id}"
7
+ )
8
+ .col-auto.linea-tiempo-d__item__col-number
9
+ .linea-tiempo-d__item__number.tarjeta.tarjeta--gris(
10
+ :class="[,{'px-3' : item.numero.length > 1}]"
11
+ @click="selected = item.id"
12
+ @mouseover="mostrarIndicador = mostrarIndicador && index >= 1 ? false : mostrarIndicador"
13
+ )
14
+ .indicador__container(v-if="mostrarIndicador && index === 1")
15
+ .indicador--click
16
+ span(v-html="item.numero")
17
+ .linea-tiempo-d__item__dots(
18
+ v-if="index < elements.length -1"
19
+ )
20
+
21
+ .col(:class="{'mb-4' : index < elements.length -1}")
22
+ .linea-tiempo-d__item__content.tarjeta.tarjeta--gris
23
+ .linea-tiempo-d__item__content__title.px-3(
24
+ @click="selected = item.id"
25
+ @mouseover="mostrarIndicador = mostrarIndicador && index >= 1 ? false : mostrarIndicador"
26
+ )
27
+ span(v-html="item.titulo")
28
+ .linea-tiempo-d__item__content__slot(
29
+ :style="{ height: rendered && selected === item.id ? getActiveHeight(item.id) : 0 } "
30
+ )
31
+ .p-3.pt-0(:ref="item.id" v-child="item.elm" )
32
+
33
+ .hidden-slot
34
+ slot
35
+ </template>
36
+
37
+ <script>
38
+ import componentSlotMixins from './componentSlotMixins'
39
+ export default {
40
+ name: 'LineaTiempoD',
41
+ mixins: [componentSlotMixins],
42
+ data: () => ({
43
+ mostrarIndicador: true,
44
+ }),
45
+ computed: {},
46
+ watch: {},
47
+ methods: {},
48
+ }
49
+ </script>
50
+
51
+ <style lang="sass"></style>
@@ -0,0 +1,25 @@
1
+ <template lang="pug">
2
+ .linea-tiempo-e
3
+ .linea-tiempo-e__item(
4
+ v-for="(item, index) in elements"
5
+ :key="'linea-tiempo-e-key-'+item.id"
6
+ )
7
+ .linea-tiempo-e__item__header
8
+ h3.mb-1 {{item.titulo}}
9
+ p.mb-0(v-if="item.hasOwnProperty('subtitulo')") {{item.subtitulo}}
10
+ .linea-tiempo-e__item__body(v-child="item.elm")
11
+
12
+ .hidden-slot
13
+ slot
14
+
15
+ </template>
16
+
17
+ <script>
18
+ import componentSlotMixins from './componentSlotMixins'
19
+ export default {
20
+ name: 'LineaTiempoE',
21
+ mixins: [componentSlotMixins],
22
+ }
23
+ </script>
24
+
25
+ <style lang="sass"></style>
@@ -0,0 +1,22 @@
1
+ <template lang="pug">
2
+ .modal-a(:class="{'modal-a--abierto' : abrirModal}")
3
+ .modal-a__fondo(@click="$emit('update:abrir-modal', false)")
4
+ .modal-a__content.p-5
5
+ .modal-a__close-btn(@click="$emit('update:abrir-modal', false)")
6
+ i.fas.fa-times
7
+ slot
8
+ </template>
9
+
10
+ <script>
11
+ export default {
12
+ name: 'ModalA',
13
+ props: {
14
+ abrirModal: {
15
+ type: Boolean,
16
+ default: true,
17
+ },
18
+ },
19
+ }
20
+ </script>
21
+
22
+ <style lang="sass"></style>
@@ -0,0 +1,59 @@
1
+ <template lang="pug">
2
+ .pasos-a
3
+ .pasos-a__item(v-if="elements.length" v-for="(item, index) in elements")
4
+ .row.align-items-center.d-flex(
5
+ :class="!isEven(index) && 'flex-row-reverse'"
6
+ )
7
+ .col-3.col-sm-2.col-lg-1.pasos-a__numero.text-center.d-inline-flex.justify-content-center.align-items-center(
8
+ :class="getClass(index)"
9
+ )
10
+ .pasos-a__circle
11
+ .h2(v-if="tipo === 'n'") {{index + 1}}
12
+ .h2(v-else-if="tipo === 'l'") {{abecedario[index]}}
13
+ .col.py-3(v-child="item.elm" :class="!isEven(index) && 'text-end'")
14
+ .col-1
15
+
16
+ .row.pasos-a__linea(v-if="index + 1 != elements.length")
17
+ .col-3.col-sm-2.col-lg-1.pasos-a__linea__esquina
18
+ .pasos-a__linea__esquina__linea.top-right(v-if="isEven(index)")
19
+ .pasos-a__linea__esquina__linea.right-bottom(v-else)
20
+ .col-6.col-sm-8.col-lg-10
21
+ .hor-line
22
+ .col-3.col-sm-2.col-lg-1.pasos-a__linea__esquina
23
+ .pasos-a__linea__esquina__linea.left-bottom(v-if="isEven(index)")
24
+ .pasos-a__linea__esquina__linea.top-left(v-else)
25
+
26
+ .hidden-slot
27
+ slot
28
+ </template>
29
+
30
+ <script>
31
+ import componentSlotMixins from './componentSlotMixins'
32
+ export default {
33
+ name: 'PasosA',
34
+ mixins: [componentSlotMixins],
35
+ props: {
36
+ tipo: {
37
+ type: String,
38
+ default: 'n',
39
+ },
40
+ },
41
+ data: () => ({
42
+ abecedario: 'ABCDEFGHIJKLMNÑOPQRSTUVWXYZ',
43
+ }),
44
+ methods: {
45
+ getClass(idx) {
46
+ return idx === 0
47
+ ? 'bottom'
48
+ : idx + 1 === this.elements.length
49
+ ? 'top'
50
+ : 'full'
51
+ },
52
+ isEven(idx) {
53
+ return idx % 2 === 0
54
+ },
55
+ },
56
+ }
57
+ </script>
58
+
59
+ <style lang="sass"></style>
@@ -0,0 +1,90 @@
1
+ <template lang="pug">
2
+ .pasos-b
3
+ .row.flex-nowrap.mx-0.pasos-b__header.mb-4
4
+ .col-2.col-sm-auto.px-0.me-sm-3
5
+ .pasos-b__header__btn--left(@click="selected = leftBtnId")
6
+ i.fas.fa-angle-left
7
+ .col-8.col-sm.px-0
8
+ .row.mx-0.flex-nowrap.pasos-b__header__items
9
+ ScrollHorizontal(
10
+ v-if="elements.length"
11
+ :selectedId="'pb-header-' + (selected -1)"
12
+ )
13
+ .col-6.col-sm-4.px-0.pasos-b__header__item(
14
+ v-for="(elm,index) of elements"
15
+ :key="'pb-header-key-'+elm.id"
16
+ :id="'pb-header-' +elm.id"
17
+ :class="itemClasses(elm.id)"
18
+ )
19
+ .pasos-b__header__item__line-container
20
+ .pasos-b__header__item__dot
21
+ span.text-bold {{index +1}}
22
+ i.fas.fa-check
23
+ .pasos-b__header__item__tittle.px-2.text-small(v-html="elm.titulo")
24
+ .col-2.col-sm-auto.px-0.ms-sm-3.d-flex.justify-content-end
25
+ .pasos-b__header__btn--right(@click="selected = rightBtnId" @mouseover="mostrarIndicador = false")
26
+ i.fas.fa-angle-right
27
+ .indicador__container.indicador--left(v-if="mostrarIndicador")
28
+ .indicador--click
29
+
30
+ .linea-tiempo-c__content
31
+ ScrollHorizontal(
32
+ v-if="elements.length"
33
+ :selectedId="'pb-content-' + selected"
34
+ item-full-width
35
+ )
36
+ .linea-tiempo-c__content__item(
37
+ v-for="item in elements"
38
+ :key="'pb-content-key-'+item.id"
39
+ :id="'pb-content-'+item.id"
40
+ v-child="item.elm"
41
+ )
42
+ .hidden-slot
43
+ slot
44
+ </template>
45
+
46
+ <script>
47
+ import ScrollHorizontal from './ScrollHorizontal'
48
+ import componentSlotMixins from './componentSlotMixins'
49
+ export default {
50
+ name: 'PasosB',
51
+ components: { ScrollHorizontal },
52
+ mixins: [componentSlotMixins],
53
+ data: () => ({
54
+ headerSelected: 0,
55
+ mostrarIndicador: true,
56
+ }),
57
+ computed: {
58
+ leftBtnId() {
59
+ return this.selected - 1 === this.mainId
60
+ ? this.selected
61
+ : this.selected - 1
62
+ },
63
+ rightBtnId() {
64
+ return this.selected + 1 ===
65
+ this.elements[this.elements.length - 1].id + 1
66
+ ? this.selected
67
+ : this.selected + 1
68
+ },
69
+ },
70
+ watch: {
71
+ elements(newVal, oldVal) {
72
+ if (!oldVal.length && newVal.length) {
73
+ this.headerSelected = newVal[0].id
74
+ }
75
+ },
76
+ },
77
+ methods: {
78
+ itemClasses(id) {
79
+ return [
80
+ { 'pasos-b__header__item--active': id === this.selected },
81
+ { 'pasos-b__header__item--before': id < this.selected },
82
+ this.elements.length > 6 ? 'col-lg-2' : 'col-lg',
83
+ this.elements.length >= 4 ? 'col-md-3' : 'col-md',
84
+ ]
85
+ },
86
+ },
87
+ }
88
+ </script>
89
+
90
+ <style lang="sass"></style>
@@ -0,0 +1,45 @@
1
+ <template lang="pug">
2
+ .curso-main-container.referencias
3
+ BannerInterno(icono="fas fa-book" titulo="Referencias bibliográficas")
4
+ .container.tarjeta.tarjeta--blanca.p-4.p-md-5.mb-5
5
+ .referencias__item(v-for="ref in orderedData" :key="ref.link")
6
+ span(v-html="ref.referencia")
7
+ a.ms-1(v-if="ref.link" :href="ref.link" target="_blank")
8
+ span(v-html="ref.link")
9
+ i.ms-1.fas.fa-external-link-alt
10
+ hr.my-3
11
+ </template>
12
+ <script>
13
+ import plantillaMixins from './plantillaMixins'
14
+ export default {
15
+ name: 'Referencias',
16
+ mixins: [plantillaMixins],
17
+ computed: {
18
+ referenciasData() {
19
+ return this.$config.referencias
20
+ },
21
+ orderedData() {
22
+ const ArrayOrdered = [...this.referenciasData].sort((a, b) => {
23
+ const afl = this.quitarAcentos(a.referencia.split(' ')[0].toLowerCase())
24
+ const bfl = this.quitarAcentos(b.referencia.split(' ')[0].toLowerCase())
25
+ if (afl < bfl) return -1
26
+ if (afl > bfl) return 1
27
+ return 0
28
+ })
29
+ return ArrayOrdered
30
+ },
31
+ },
32
+ }
33
+ </script>
34
+
35
+ <style lang="sass">
36
+ .referencias
37
+ &__item
38
+ &:last-child
39
+ hr
40
+ display: none
41
+ a
42
+ color: $blue
43
+ text-decoration: underline
44
+ overflow-wrap: break-word
45
+ </style>