@dataclouder/ngx-lessons 0.0.31 → 0.0.32
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/fesm2022/dataclouder-ngx-lessons.mjs +4 -5
- package/fesm2022/dataclouder-ngx-lessons.mjs.map +1 -1
- package/lib/components/dc-lessons/dc-lesson-editor/dc-lesson-editor.component.d.ts +1 -1
- package/package.json +1 -1
- package/src/lib/components/dc-lessons/dc-lesson-card/dc-lesson-card.component.html +0 -40
- package/src/lib/components/dc-lessons/dc-lesson-card/dc-lesson-card.component.scss +0 -120
- package/src/lib/components/dc-lessons/dc-lesson-card/dc-lesson-card.component.ts +0 -82
- package/src/lib/components/dc-lessons/dc-lesson-component-adder/dc-lesson-component-adder.component.css +0 -1
- package/src/lib/components/dc-lessons/dc-lesson-component-adder/dc-lesson-component-adder.component.html +0 -46
- package/src/lib/components/dc-lessons/dc-lesson-component-adder/dc-lesson-component-adder.component.ts +0 -52
- package/src/lib/components/dc-lessons/dc-lesson-editor/dc-lesson-editor.component.css +0 -90
- package/src/lib/components/dc-lessons/dc-lesson-editor/dc-lesson-editor.component.html +0 -67
- package/src/lib/components/dc-lessons/dc-lesson-editor/dc-lesson-editor.component.scss +0 -0
- package/src/lib/components/dc-lessons/dc-lesson-editor/dc-lesson-editor.component.ts +0 -356
- package/src/lib/components/dc-lessons/dc-lesson-metadata-editor/dc-lesson-metadata-editor.component.css +0 -1
- package/src/lib/components/dc-lessons/dc-lesson-metadata-editor/dc-lesson-metadata-editor.component.html +0 -72
- package/src/lib/components/dc-lessons/dc-lesson-metadata-editor/dc-lesson-metadata-editor.component.ts +0 -60
- package/src/lib/components/dc-lessons/dc-lesson-renderer/dc-lesson-renderer.component.html +0 -23
- package/src/lib/components/dc-lessons/dc-lesson-renderer/dc-lesson-renderer.component.scss +0 -3
- package/src/lib/components/dc-lessons/dc-lesson-renderer/dc-lesson-renderer.component.ts +0 -332
- package/src/lib/components/dc-lessons/lesson-form/lesson-form.component.html +0 -5
- package/src/lib/components/dc-lessons/lesson-form/lesson-form.component.scss +0 -3
- package/src/lib/components/dc-lessons/lesson-form/lesson-form.component.ts +0 -14
- package/src/lib/components/dc-lessons/lesson-list/dc-lesson-list.component.html +0 -30
- package/src/lib/components/dc-lessons/lesson-list/dc-lesson-list.component.scss +0 -17
- package/src/lib/components/dc-lessons/lesson-list/dc-lesson-list.component.ts +0 -170
- package/src/lib/components/dc-lessons/lessons.component.ts +0 -10
- package/src/lib/components/lesson-mini-components/components/ComponentBuilder.ts +0 -82
- package/src/lib/components/lesson-mini-components/components/ComponentWithForm.ts +0 -25
- package/src/lib/components/lesson-mini-components/components/lesson-dynamic.component.ts +0 -13
- package/src/lib/components/lesson-mini-components/components/lessons.clases.ts +0 -220
- package/src/lib/components/lesson-mini-components/components/selector/selector-builder/selector-builder.component.html +0 -62
- package/src/lib/components/lesson-mini-components/components/selector/selector-builder/selector-builder.component.scss +0 -15
- package/src/lib/components/lesson-mini-components/components/selector/selector-builder/selector-builder.component.ts +0 -70
- package/src/lib/components/lesson-mini-components/components/selector/selector.component.html +0 -1
- package/src/lib/components/lesson-mini-components/components/selector/selector.component.scss +0 -12
- package/src/lib/components/lesson-mini-components/components/selector/selector.component.spec.ts +0 -25
- package/src/lib/components/lesson-mini-components/components/selector/selector.component.ts +0 -47
- package/src/lib/components/lesson-mini-components/components/speaker/speaker-builder/speaker-builder.component.html +0 -13
- package/src/lib/components/lesson-mini-components/components/speaker/speaker-builder/speaker-builder.component.scss +0 -0
- package/src/lib/components/lesson-mini-components/components/speaker/speaker-builder/speaker-builder.component.ts +0 -40
- package/src/lib/components/lesson-mini-components/components/speaker/speaker.component.html +0 -9
- package/src/lib/components/lesson-mini-components/components/speaker/speaker.component.scss +0 -3
- package/src/lib/components/lesson-mini-components/components/speaker/speaker.component.ts +0 -33
- package/src/lib/components/lesson-mini-components/components/text-writer/text-writer-buider/text-writer-buider.component.html +0 -24
- package/src/lib/components/lesson-mini-components/components/text-writer/text-writer-buider/text-writer-buider.component.scss +0 -15
- package/src/lib/components/lesson-mini-components/components/text-writer/text-writer-buider/text-writer-buider.component.spec.ts +0 -25
- package/src/lib/components/lesson-mini-components/components/text-writer/text-writer-buider/text-writer-buider.component.ts +0 -29
- package/src/lib/components/lesson-mini-components/components/text-writer/text-writer.component.html +0 -4
- package/src/lib/components/lesson-mini-components/components/text-writer/text-writer.component.scss +0 -8
- package/src/lib/components/lesson-mini-components/components/text-writer/text-writer.component.spec.ts +0 -25
- package/src/lib/components/lesson-mini-components/components/text-writer/text-writer.component.ts +0 -61
- package/src/lib/components/lesson-mini-components/components/translationSwitcher/translationSwitcher.component.css +0 -3
- package/src/lib/components/lesson-mini-components/components/translationSwitcher/translationSwitcher.component.html +0 -9
- package/src/lib/components/lesson-mini-components/components/translationSwitcher/translationSwitcher.component.ts +0 -32
- package/src/lib/components/lesson-mini-components/components/translationSwitcher/translationSwitcherBuilder/translationSwitcherBuilder.component.css +0 -3
- package/src/lib/components/lesson-mini-components/components/translationSwitcher/translationSwitcherBuilder/translationSwitcherBuilder.component.html +0 -28
- package/src/lib/components/lesson-mini-components/components/translationSwitcher/translationSwitcherBuilder/translationSwitcherBuilder.component.ts +0 -30
- package/src/lib/components/lesson-mini-components/components/verb-summary/verb-summary-builder/verb-summary-builder.component.html +0 -18
- package/src/lib/components/lesson-mini-components/components/verb-summary/verb-summary-builder/verb-summary-builder.component.scss +0 -3
- package/src/lib/components/lesson-mini-components/components/verb-summary/verb-summary-builder/verb-summary-builder.component.spec.ts +0 -25
- package/src/lib/components/lesson-mini-components/components/verb-summary/verb-summary-builder/verb-summary-builder.component.ts +0 -25
- package/src/lib/components/lesson-mini-components/components/verb-summary/verb-summary.component.html +0 -15
- package/src/lib/components/lesson-mini-components/components/verb-summary/verb-summary.component.scss +0 -27
- package/src/lib/components/lesson-mini-components/components/verb-summary/verb-summary.component.spec.ts +0 -25
- package/src/lib/components/lesson-mini-components/components/verb-summary/verb-summary.component.ts +0 -46
- package/src/lib/components/lesson-mini-components/components/word-summary/word-summary-builder/word-summary-builder.component.html +0 -19
- package/src/lib/components/lesson-mini-components/components/word-summary/word-summary-builder/word-summary-builder.component.scss +0 -0
- package/src/lib/components/lesson-mini-components/components/word-summary/word-summary-builder/word-summary-builder.component.ts +0 -27
- package/src/lib/components/lesson-mini-components/components/word-summary/word-summary.component.html +0 -14
- package/src/lib/components/lesson-mini-components/components/word-summary/word-summary.component.scss +0 -22
- package/src/lib/components/lesson-mini-components/components/word-summary/word-summary.component.ts +0 -51
- package/src/lib/models/lessons.pipes.ts +0 -38
- package/src/lib/models/models.ts +0 -92
- package/src/lib/models/notion.models.ts +0 -43
- package/src/lib/services/lesson-ai.service.ts +0 -103
- package/src/lib/services/lesson-notion.service.ts +0 -161
- package/src/lib/services/lesson-utils.service.ts +0 -181
- package/src/public-api.ts +0 -25
|
@@ -12,7 +12,7 @@ export declare class DCLessonEditorComponent {
|
|
|
12
12
|
lesson: import("@angular/core").WritableSignal<ILesson>;
|
|
13
13
|
isCropperVisible: import("@angular/core").WritableSignal<boolean>;
|
|
14
14
|
isLoadingLesson: import("@angular/core").WritableSignal<boolean>;
|
|
15
|
-
|
|
15
|
+
coverImageUrl: import("@angular/core").Signal<string>;
|
|
16
16
|
readonly dynamicComponentsArray: import("@angular/core").Signal<DynamicContentComponent[]>;
|
|
17
17
|
components: {
|
|
18
18
|
[key: string]: ComponentRef<LessonComponentInterface>;
|
package/package.json
CHANGED
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
<div class="card-container">
|
|
2
|
-
@if(showOptions){
|
|
3
|
-
<p-speeddial
|
|
4
|
-
class="dial-button"
|
|
5
|
-
[model]="items"
|
|
6
|
-
[radius]="70"
|
|
7
|
-
type="quarter-circle"
|
|
8
|
-
direction="down-left"
|
|
9
|
-
[buttonProps]="{ severity: 'primary', rounded: true, outlined: true, raised: true }" />
|
|
10
|
-
}
|
|
11
|
-
<p-card>
|
|
12
|
-
<div class="lesson-card">
|
|
13
|
-
<div class="photo">
|
|
14
|
-
<img [src]="coverUrl" alt="" />
|
|
15
|
-
</div>
|
|
16
|
-
|
|
17
|
-
<span class="date">{{ lesson.createdDate | date : 'dd/MM/yyyy' }}</span>
|
|
18
|
-
|
|
19
|
-
<div class="description">
|
|
20
|
-
<h1>{{ lesson.title }}</h1>
|
|
21
|
-
<p>{{ lesson.description }}</p>
|
|
22
|
-
<div class="card-footer">
|
|
23
|
-
<div class="status-tags">
|
|
24
|
-
<span class="level-tag">Nivel {{ lesson.level }}</span>
|
|
25
|
-
@if (lesson.taken?.status == 'passed') {
|
|
26
|
-
<span class="status-tag success">Tomada</span>
|
|
27
|
-
}
|
|
28
|
-
@if (lesson.taken?.status == 'failed') {
|
|
29
|
-
<span class="status-tag danger">Fallida</span>
|
|
30
|
-
}
|
|
31
|
-
</div>
|
|
32
|
-
|
|
33
|
-
<div class="actions">
|
|
34
|
-
<p-button label="Tomar lección" (onClick)="eventCard(eventType.Select)" severity="primary"> </p-button>
|
|
35
|
-
</div>
|
|
36
|
-
</div>
|
|
37
|
-
</div>
|
|
38
|
-
</div>
|
|
39
|
-
</p-card>
|
|
40
|
-
</div>
|
|
@@ -1,120 +0,0 @@
|
|
|
1
|
-
.card-container {
|
|
2
|
-
position: relative;
|
|
3
|
-
margin-bottom: 20px;
|
|
4
|
-
margin-left: 10px;
|
|
5
|
-
}
|
|
6
|
-
|
|
7
|
-
.dial-button {
|
|
8
|
-
position: absolute;
|
|
9
|
-
top: 10px;
|
|
10
|
-
right: 20px;
|
|
11
|
-
z-index: 10;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
.lesson-card {
|
|
15
|
-
// position: relative;
|
|
16
|
-
border-radius: 0.5rem;
|
|
17
|
-
height: 100%;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
.lesson-card .photo {
|
|
21
|
-
position: absolute;
|
|
22
|
-
top: 0;
|
|
23
|
-
left: 0;
|
|
24
|
-
right: 0;
|
|
25
|
-
bottom: 0;
|
|
26
|
-
z-index: 1;
|
|
27
|
-
|
|
28
|
-
img {
|
|
29
|
-
width: 100%;
|
|
30
|
-
height: 100%;
|
|
31
|
-
object-fit: cover;
|
|
32
|
-
object-position: center;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
/* Alternative: Add a dark overlay */
|
|
36
|
-
&::after {
|
|
37
|
-
content: '';
|
|
38
|
-
position: absolute;
|
|
39
|
-
top: 0;
|
|
40
|
-
left: 0;
|
|
41
|
-
width: 100%;
|
|
42
|
-
height: 100%;
|
|
43
|
-
background: linear-gradient(to bottom, rgb(0, 0, 0) 50%, var(--p-primary-color) 100%);
|
|
44
|
-
opacity: 0.4;
|
|
45
|
-
z-index: 2;
|
|
46
|
-
pointer-events: none; /* Allows clicks to pass through */
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
.description {
|
|
51
|
-
position: relative;
|
|
52
|
-
z-index: 2;
|
|
53
|
-
color: white;
|
|
54
|
-
// background: linear-gradient(to bottom, rgba(0, 0, 0, 0.4) 0%, rgba(0, 0, 0, 0.8) 100%);
|
|
55
|
-
height: 100%;
|
|
56
|
-
display: flex;
|
|
57
|
-
flex-direction: column;
|
|
58
|
-
|
|
59
|
-
h1 {
|
|
60
|
-
margin-top: 0;
|
|
61
|
-
margin-bottom: 0.5rem;
|
|
62
|
-
font-size: 1.5rem;
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
p {
|
|
66
|
-
margin-bottom: 1rem;
|
|
67
|
-
flex-grow: 1;
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
.date {
|
|
72
|
-
position: absolute;
|
|
73
|
-
top: 1rem;
|
|
74
|
-
left: 1rem;
|
|
75
|
-
z-index: 3;
|
|
76
|
-
background-color: rgba(0, 0, 0, 0.7);
|
|
77
|
-
color: white;
|
|
78
|
-
padding: 0.3rem 0.6rem;
|
|
79
|
-
border-radius: 0.25rem;
|
|
80
|
-
font-size: 0.8rem;
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
.card-footer {
|
|
84
|
-
display: flex;
|
|
85
|
-
justify-content: space-between;
|
|
86
|
-
align-items: center;
|
|
87
|
-
margin-top: auto;
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
.status-tags {
|
|
91
|
-
display: flex;
|
|
92
|
-
gap: 0.5rem;
|
|
93
|
-
|
|
94
|
-
.level-tag,
|
|
95
|
-
.status-tag {
|
|
96
|
-
padding: 0.3rem 0.6rem;
|
|
97
|
-
border-radius: 0.25rem;
|
|
98
|
-
font-size: 0.8rem;
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
.level-tag {
|
|
102
|
-
background-color: rgba(255, 255, 255, 0.2);
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
.status-tag {
|
|
106
|
-
&.success {
|
|
107
|
-
background-color: rgba(40, 167, 69, 0.7);
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
&.danger {
|
|
111
|
-
background-color: rgba(220, 53, 69, 0.7);
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
.actions {
|
|
117
|
-
::ng-deep .p-button {
|
|
118
|
-
font-size: 0.9rem;
|
|
119
|
-
}
|
|
120
|
-
}
|
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';
|
|
2
|
-
import { DatePipe } from '@angular/common';
|
|
3
|
-
|
|
4
|
-
import { ButtonModule } from 'primeng/button';
|
|
5
|
-
import { PopoverModule } from 'primeng/popover';
|
|
6
|
-
|
|
7
|
-
import { SpeedDialModule } from 'primeng/speeddial';
|
|
8
|
-
import { MenuItem } from 'primeng/api';
|
|
9
|
-
import { CardModule } from 'primeng/card';
|
|
10
|
-
|
|
11
|
-
import { ILesson, ILessonWithTaken } from '../../lesson-mini-components/components/lessons.clases';
|
|
12
|
-
import { OnActionEvent } from '@dataclouder/ngx-core';
|
|
13
|
-
|
|
14
|
-
enum EventCard {
|
|
15
|
-
Edit = 'edit',
|
|
16
|
-
Delete = 'delete',
|
|
17
|
-
Select = 'select',
|
|
18
|
-
Qr = 'qr',
|
|
19
|
-
}
|
|
20
|
-
@Component({
|
|
21
|
-
selector: 'dc-lesson-card',
|
|
22
|
-
templateUrl: './dc-lesson-card.component.html',
|
|
23
|
-
styleUrls: ['./dc-lesson-card.component.scss'],
|
|
24
|
-
standalone: true,
|
|
25
|
-
imports: [DatePipe, ButtonModule, PopoverModule, SpeedDialModule, CardModule],
|
|
26
|
-
})
|
|
27
|
-
export class DcLessonCardComponent implements OnInit {
|
|
28
|
-
@Input() lesson: ILessonWithTaken | ILesson | any;
|
|
29
|
-
@Input() showOptions: boolean = true;
|
|
30
|
-
|
|
31
|
-
@Output() onAction: EventEmitter<OnActionEvent> = new EventEmitter();
|
|
32
|
-
|
|
33
|
-
public coverUrl: string = 'assets/background/default-background.webp';
|
|
34
|
-
public eventType = EventCard;
|
|
35
|
-
|
|
36
|
-
public items: MenuItem[] = [
|
|
37
|
-
{
|
|
38
|
-
label: 'Editar',
|
|
39
|
-
icon: 'pi pi-pencil',
|
|
40
|
-
command: () => {
|
|
41
|
-
this.eventCard(EventCard.Edit);
|
|
42
|
-
},
|
|
43
|
-
},
|
|
44
|
-
{
|
|
45
|
-
label: 'Eliminar',
|
|
46
|
-
icon: 'pi pi-trash',
|
|
47
|
-
command: () => {
|
|
48
|
-
this.eventCard(EventCard.Delete);
|
|
49
|
-
},
|
|
50
|
-
},
|
|
51
|
-
{
|
|
52
|
-
label: 'Tomar lección',
|
|
53
|
-
icon: 'pi pi-play',
|
|
54
|
-
command: () => {
|
|
55
|
-
this.eventCard(EventCard.Select);
|
|
56
|
-
},
|
|
57
|
-
},
|
|
58
|
-
];
|
|
59
|
-
|
|
60
|
-
ngOnInit() {
|
|
61
|
-
if (this.lesson?.media?.images![0]?.url) {
|
|
62
|
-
this.coverUrl = this.lesson.media.images[0].url;
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
public eventCard(eventType: EventCard) {
|
|
67
|
-
switch (eventType) {
|
|
68
|
-
case EventCard.Edit:
|
|
69
|
-
this.onAction.emit({ action: 'edit', item: this.lesson });
|
|
70
|
-
break;
|
|
71
|
-
case EventCard.Delete:
|
|
72
|
-
this.onAction.emit({ action: 'delete', item: this.lesson });
|
|
73
|
-
break;
|
|
74
|
-
case EventCard.Select:
|
|
75
|
-
this.onAction.emit({ action: 'select', item: this.lesson });
|
|
76
|
-
break;
|
|
77
|
-
case EventCard.Qr:
|
|
78
|
-
this.onAction.emit({ action: 'qr', item: this.lesson });
|
|
79
|
-
break;
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
/* Add any specific styles for the component adder here if needed */
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
<span>Componentes: </span>
|
|
2
|
-
<div style="display: flex; gap: 10px; flex-wrap: wrap">
|
|
3
|
-
<p-button
|
|
4
|
-
severity="info"
|
|
5
|
-
(click)="openComponentBuilder(lessonComponentEnum.Selector)"
|
|
6
|
-
pTooltip="Agrega un selector con multiples opciones"
|
|
7
|
-
tooltipPosition="bottom">
|
|
8
|
-
Selector
|
|
9
|
-
</p-button>
|
|
10
|
-
<p-button
|
|
11
|
-
severity="info"
|
|
12
|
-
(click)="openComponentBuilder(lessonComponentEnum.Speaker)"
|
|
13
|
-
pTooltip="Para que una palabra o frase sea reproducible"
|
|
14
|
-
tooltipPosition="bottom">
|
|
15
|
-
Speaker
|
|
16
|
-
</p-button>
|
|
17
|
-
<p-button
|
|
18
|
-
severity="info"
|
|
19
|
-
(click)="openComponentBuilder(lessonComponentEnum.TextWriter)"
|
|
20
|
-
pTooltip="Escribe una respuesta en un cuadro de texto"
|
|
21
|
-
tooltipPosition="bottom">
|
|
22
|
-
Text
|
|
23
|
-
</p-button>
|
|
24
|
-
<p-button
|
|
25
|
-
severity="info"
|
|
26
|
-
(click)="openComponentBuilder(lessonComponentEnum.VerbSummary)"
|
|
27
|
-
pTooltip="Muestra la información de un verbo"
|
|
28
|
-
tooltipPosition="bottom">
|
|
29
|
-
Verb
|
|
30
|
-
</p-button>
|
|
31
|
-
<p-button
|
|
32
|
-
severity="info"
|
|
33
|
-
(click)="openComponentBuilder(lessonComponentEnum.WordSummary)"
|
|
34
|
-
pTooltip="Muestra la información de una palabra"
|
|
35
|
-
tooltipPosition="bottom">
|
|
36
|
-
Palabra
|
|
37
|
-
</p-button>
|
|
38
|
-
<p-button
|
|
39
|
-
severity="info"
|
|
40
|
-
(click)="openComponentBuilder(lessonComponentEnum.TranslationSwitcher)"
|
|
41
|
-
pTooltip="Muestra el texto pero al pica cambia de idioma"
|
|
42
|
-
tooltipPosition="bottom">
|
|
43
|
-
Traducción
|
|
44
|
-
</p-button>
|
|
45
|
-
<!-- Add other buttons here if needed, following the same pattern -->
|
|
46
|
-
</div>
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
import { Component, EventEmitter, Output, inject } from '@angular/core'; // Added inject
|
|
2
|
-
import { CommonModule } from '@angular/common';
|
|
3
|
-
// PrimeNG
|
|
4
|
-
import { ButtonModule } from 'primeng/button';
|
|
5
|
-
import { TooltipModule } from 'primeng/tooltip';
|
|
6
|
-
import { DialogService, DynamicDialogRef } from 'primeng/dynamicdialog'; // Added DialogService, DynamicDialogRef
|
|
7
|
-
// Dataclouder
|
|
8
|
-
import { TOAST_ALERTS_TOKEN, ToastAlertsAbstractService } from '@dataclouder/ngx-core'; // Added Toast imports
|
|
9
|
-
// Project specific
|
|
10
|
-
import { LessonComponentEnum, LessonComponentBuilders } from '../../lesson-mini-components/components/lessons.clases'; // Added LessonComponentBuilders
|
|
11
|
-
|
|
12
|
-
@Component({
|
|
13
|
-
selector: 'dc-lesson-component-adder',
|
|
14
|
-
standalone: true,
|
|
15
|
-
imports: [CommonModule, ButtonModule, TooltipModule],
|
|
16
|
-
templateUrl: './dc-lesson-component-adder.component.html',
|
|
17
|
-
styleUrls: ['./dc-lesson-component-adder.component.css'],
|
|
18
|
-
providers: [DialogService], // Provide DialogService here
|
|
19
|
-
})
|
|
20
|
-
export class DCLessonComponentAdderComponent {
|
|
21
|
-
// Services
|
|
22
|
-
#dialogService = inject(DialogService);
|
|
23
|
-
#toastService = inject(TOAST_ALERTS_TOKEN);
|
|
24
|
-
|
|
25
|
-
@Output() componentAdded = new EventEmitter<any>(); // Changed Output name and type
|
|
26
|
-
|
|
27
|
-
// Expose enum to the template
|
|
28
|
-
public lessonComponentEnum = LessonComponentEnum;
|
|
29
|
-
|
|
30
|
-
// Moved logic from DCLessonEditorComponent
|
|
31
|
-
public openComponentBuilder(type: LessonComponentEnum): void {
|
|
32
|
-
const componentToBuild = LessonComponentBuilders[type];
|
|
33
|
-
if (!componentToBuild) {
|
|
34
|
-
console.error(`No component builder found for type: ${type}`);
|
|
35
|
-
this.#toastService.error({ title: 'Error', subtitle: `Componente desconocido: ${type}` });
|
|
36
|
-
return;
|
|
37
|
-
}
|
|
38
|
-
const dialogRef: DynamicDialogRef = this.#dialogService.open(componentToBuild, {
|
|
39
|
-
width: '80vw',
|
|
40
|
-
header: 'Agregar componente',
|
|
41
|
-
closable: true,
|
|
42
|
-
});
|
|
43
|
-
|
|
44
|
-
// Handle the result and emit the new event
|
|
45
|
-
dialogRef.onClose.subscribe((result) => {
|
|
46
|
-
if (result) {
|
|
47
|
-
console.log('Component builder closed:', result);
|
|
48
|
-
this.componentAdded.emit(result); // Emit the result when dialog closes successfully
|
|
49
|
-
}
|
|
50
|
-
});
|
|
51
|
-
}
|
|
52
|
-
}
|
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
.btn {
|
|
2
|
-
padding: 0.5rem 1rem;
|
|
3
|
-
border-radius: 4px;
|
|
4
|
-
border: 1px solid transparent;
|
|
5
|
-
cursor: pointer;
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
.btn-primary {
|
|
9
|
-
background-color: #007bff;
|
|
10
|
-
color: white;
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
.btn-outline-primary {
|
|
14
|
-
border-color: #007bff;
|
|
15
|
-
color: #007bff;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
.btn-secondary {
|
|
19
|
-
background-color: #6c757d;
|
|
20
|
-
color: white;
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
.btn-outline-secondary {
|
|
24
|
-
border-color: #6c757d;
|
|
25
|
-
color: #6c757d;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
.btn-rounded {
|
|
29
|
-
border-radius: 50%;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
.form-control {
|
|
33
|
-
padding: 0.375rem 0.75rem;
|
|
34
|
-
border: 1px solid #ced4da;
|
|
35
|
-
border-radius: 0.25rem;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
.splitter {
|
|
39
|
-
display: flex;
|
|
40
|
-
gap: 1rem;
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
.splitter-panel {
|
|
44
|
-
flex: 1;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
.checkbox-container {
|
|
48
|
-
display: inline-flex;
|
|
49
|
-
align-items: center;
|
|
50
|
-
gap: 0.5rem;
|
|
51
|
-
cursor: pointer;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
.mr-2 {
|
|
55
|
-
margin-right: 0.5rem;
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
.header-cover {
|
|
59
|
-
width: 100%;
|
|
60
|
-
height: 250px;
|
|
61
|
-
background-position: center;
|
|
62
|
-
background-repeat: no-repeat;
|
|
63
|
-
background-size: cover;
|
|
64
|
-
position: relative;
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
.float-button {
|
|
68
|
-
position: fixed;
|
|
69
|
-
bottom: 3.5rem;
|
|
70
|
-
right: 2rem;
|
|
71
|
-
z-index: 1000;
|
|
72
|
-
display: flex;
|
|
73
|
-
gap: 1px;
|
|
74
|
-
:host ::ng-deep .p-button {
|
|
75
|
-
width: 4rem;
|
|
76
|
-
height: 4rem;
|
|
77
|
-
border-radius: 50%;
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
.text-editor {
|
|
82
|
-
width: -webkit-fill-available;
|
|
83
|
-
overflow-y: auto;
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
:host ::ng-deep .p-inputtext{
|
|
88
|
-
background: rgba(255, 255, 255, 0.2);
|
|
89
|
-
|
|
90
|
-
}
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
<div style="position: relative; margin-bottom: 20px">
|
|
2
|
-
<div class="header-cover" [style.background-image]="coverBackground()"></div>
|
|
3
|
-
|
|
4
|
-
<dc-cropper-modal
|
|
5
|
-
style="position: absolute; top: 10px; left: 20px"
|
|
6
|
-
[buttonLabel]="'Carga una portada'"
|
|
7
|
-
[imgStorageSettings]="coverStorageSettings"
|
|
8
|
-
(imageUploaded)="onImageUploaded($event)"></dc-cropper-modal>
|
|
9
|
-
</div>
|
|
10
|
-
|
|
11
|
-
<br />
|
|
12
|
-
|
|
13
|
-
<!-- Lesson Metadata Editor -->
|
|
14
|
-
<dc-lesson-metadata-editor
|
|
15
|
-
[lesson]="lesson"
|
|
16
|
-
[isLoadingLesson]="isLoadingLesson"
|
|
17
|
-
(saveRequest)="saveLesson()"
|
|
18
|
-
(importNotionRequest)="importFromNotion()"
|
|
19
|
-
(improveNotionRequest)="improveNotionWithAI()"
|
|
20
|
-
(generateAIRequest)="generateByAI()"
|
|
21
|
-
(propertyChange)="updateLessonProperty($event.property, $event.value)">
|
|
22
|
-
</dc-lesson-metadata-editor>
|
|
23
|
-
|
|
24
|
-
<hr />
|
|
25
|
-
|
|
26
|
-
<!-- Component Adder -->
|
|
27
|
-
<dc-lesson-component-adder (componentAdded)="onComponentAdded($event)"></dc-lesson-component-adder>
|
|
28
|
-
|
|
29
|
-
<!-- Display Added Components -->
|
|
30
|
-
<div class="added-components-list" style="margin-top: 15px; margin-bottom: 15px">
|
|
31
|
-
<h4>Componentes Agregados:</h4>
|
|
32
|
-
@if (dynamicComponentsArray().length > 0) {
|
|
33
|
-
<ul>
|
|
34
|
-
@for (comp of dynamicComponentsArray(); track comp.id) {
|
|
35
|
-
<li>ID: {{ comp.id }} - Tipo: {{ comp.component }}<button pButton icon="pi pi-info" (click)="showComponentDetails(comp)"></button></li>
|
|
36
|
-
}
|
|
37
|
-
</ul>
|
|
38
|
-
} @else {
|
|
39
|
-
<p>Aún no se han agregado componentes.</p>
|
|
40
|
-
}
|
|
41
|
-
</div>
|
|
42
|
-
|
|
43
|
-
<hr />
|
|
44
|
-
|
|
45
|
-
<!-- Text Editor and Renderer -->
|
|
46
|
-
<p-splitter [style]="{ height: '80vh' }" styleClass="mb-8">
|
|
47
|
-
<ng-template pTemplate>
|
|
48
|
-
<ckeditor
|
|
49
|
-
(keydown.control.s)="saveLesson($event)"
|
|
50
|
-
class="text-editor"
|
|
51
|
-
[editor]="editor"
|
|
52
|
-
[ngModel]="lesson()?.textCoded"
|
|
53
|
-
(ngModelChange)="updateLessonProperty('textCoded', $event)">
|
|
54
|
-
</ckeditor>
|
|
55
|
-
</ng-template>
|
|
56
|
-
|
|
57
|
-
<ng-template pTemplate>
|
|
58
|
-
<dc-lesson-renderer class="text-editor" [lessonInput]="lesson()" [test]="true"></dc-lesson-renderer>
|
|
59
|
-
</ng-template>
|
|
60
|
-
</p-splitter>
|
|
61
|
-
|
|
62
|
-
<div class="float-button">
|
|
63
|
-
<!-- Removed p-speeddial -->
|
|
64
|
-
<p-button icon="pi pi-save" (click)="saveLesson()" severity="primary" [rounded]="true" [raised]="true" pTooltip="Guardar (Ctrl + S)"> </p-button>
|
|
65
|
-
</div>
|
|
66
|
-
|
|
67
|
-
<hr />
|
|
File without changes
|