@dereekb/dbx-form 13.4.1 → 13.5.0
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/dereekb-dbx-form-calendar.mjs +310 -98
- package/fesm2022/dereekb-dbx-form-calendar.mjs.map +1 -1
- package/fesm2022/dereekb-dbx-form-mapbox.mjs +33 -21
- package/fesm2022/dereekb-dbx-form-mapbox.mjs.map +1 -1
- package/fesm2022/dereekb-dbx-form-quiz.mjs +81 -64
- package/fesm2022/dereekb-dbx-form-quiz.mjs.map +1 -1
- package/fesm2022/dereekb-dbx-form.mjs +613 -400
- package/fesm2022/dereekb-dbx-form.mjs.map +1 -1
- package/lib/extension/_extension.scss +0 -13
- package/lib/extension/calendar/_calendar.scss +0 -19
- package/lib/form/_form.scss +0 -19
- package/lib/formly/_formly.scss +0 -19
- package/lib/formly/field/_field.scss +0 -6
- package/lib/formly/field/checklist/_checklist.scss +0 -24
- package/lib/formly/field/component/_component.scss +0 -19
- package/lib/formly/field/selection/_selection.scss +0 -4
- package/lib/formly/field/selection/list/_list.scss +0 -19
- package/lib/formly/field/selection/pickable/_pickable.scss +0 -19
- package/lib/formly/field/selection/searchable/_searchable.scss +0 -19
- package/lib/formly/field/selection/sourceselect/_sourceselect.scss +0 -19
- package/lib/formly/field/texteditor/_texteditor.scss +10 -40
- package/lib/formly/field/value/_value.scss +0 -6
- package/lib/formly/field/value/array/_array.scss +3 -32
- package/lib/formly/field/value/boolean/_boolean.scss +0 -19
- package/lib/formly/field/value/date/_date.scss +1 -24
- package/lib/formly/field/value/number/_number.scss +0 -18
- package/lib/formly/field/value/phone/_phone.scss +4 -35
- package/lib/formly/field/value/text/_text.scss +0 -19
- package/lib/formly/field/wrapper/_wrapper.scss +0 -19
- package/lib/formly/form/_form.scss +0 -19
- package/lib/layout/_layout.scss +0 -19
- package/lib/style/_all-typography.scss +0 -13
- package/lib/style/_theming.scss +1 -200
- package/package.json +16 -16
- package/types/dereekb-dbx-form-calendar.d.ts +208 -0
- package/types/dereekb-dbx-form-mapbox.d.ts +12 -0
- package/types/dereekb-dbx-form-quiz.d.ts +17 -0
- package/types/dereekb-dbx-form.d.ts +401 -91
|
@@ -72,6 +72,9 @@ class QuizStore extends ComponentStore {
|
|
|
72
72
|
/**
|
|
73
73
|
* Returns a reactive observable of the answer for a given question, looked up by id, index, or the current question.
|
|
74
74
|
*
|
|
75
|
+
* @param lookupInput - Lookup criteria specifying which question's answer to retrieve
|
|
76
|
+
* @returns An observable that emits the current answer for the specified question, or undefined if not answered
|
|
77
|
+
*
|
|
75
78
|
* @example
|
|
76
79
|
* ```ts
|
|
77
80
|
* // By current question:
|
|
@@ -79,6 +82,8 @@ class QuizStore extends ComponentStore {
|
|
|
79
82
|
* // By question id:
|
|
80
83
|
* store.answerForQuestion({ id: 'q1' }).subscribe(answer => console.log(answer));
|
|
81
84
|
* ```
|
|
85
|
+
*
|
|
86
|
+
* @param lookupInput - Lookup criteria specifying which question's answer to retrieve
|
|
82
87
|
*/
|
|
83
88
|
answerForQuestion(lookupInput) {
|
|
84
89
|
return asObservable(lookupInput).pipe(switchMap((lookup) => {
|
|
@@ -130,10 +135,10 @@ class QuizStore extends ComponentStore {
|
|
|
130
135
|
goToPreviousQuestion = this.updater((state) => advanceQuestionOnState(state, -1));
|
|
131
136
|
setLockQuizNavigation = this.updater((state, lockQuizNavigation) => ({ ...state, lockQuizNavigation }));
|
|
132
137
|
setSubmittedQuiz = this.updater((state, submittedQuiz) => ({ ...state, submittedQuiz }));
|
|
133
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
134
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
138
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: QuizStore, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
139
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: QuizStore });
|
|
135
140
|
}
|
|
136
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
141
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: QuizStore, decorators: [{
|
|
137
142
|
type: Injectable
|
|
138
143
|
}], ctorParameters: () => [] });
|
|
139
144
|
function computeAdvanceIndexOnState(state, advancement) {
|
|
@@ -188,7 +193,7 @@ function restartQuizToFirstQuestionOnState(state) {
|
|
|
188
193
|
}
|
|
189
194
|
function setQuizOnState(state, quiz) {
|
|
190
195
|
let questionMap = undefined;
|
|
191
|
-
const currentAnswers =
|
|
196
|
+
const currentAnswers = [...state.answers.values()];
|
|
192
197
|
if (quiz?.questions) {
|
|
193
198
|
questionMap = new Map(quiz.questions.map((question) => [question.id, question]));
|
|
194
199
|
}
|
|
@@ -250,6 +255,8 @@ class QuizQuestionAccessor {
|
|
|
250
255
|
/**
|
|
251
256
|
* Provides QuizQuestionAccessor bound to the current question in QuizStore.
|
|
252
257
|
*
|
|
258
|
+
* @returns An Angular provider that binds QuizQuestionAccessor to the current quiz question
|
|
259
|
+
*
|
|
253
260
|
* @usage
|
|
254
261
|
* ```typescript
|
|
255
262
|
* @Component({
|
|
@@ -288,19 +295,19 @@ function provideCurrentQuestionQuizQuestionAccessor() {
|
|
|
288
295
|
*/
|
|
289
296
|
class QuizComponent {
|
|
290
297
|
quizStore = inject(QuizStore);
|
|
291
|
-
quiz = input.required(...(ngDevMode ? [{ debugName: "quiz" }] : []));
|
|
298
|
+
quiz = input.required(...(ngDevMode ? [{ debugName: "quiz" }] : /* istanbul ignore next */ []));
|
|
292
299
|
keysFilter = ['Enter', 'ArrowLeft', 'ArrowRight'];
|
|
293
300
|
quizEffect = effect(() => {
|
|
294
301
|
const quiz = this.quiz();
|
|
295
302
|
this.quizStore.setQuiz(quiz);
|
|
296
|
-
}, { ...(ngDevMode ? { debugName: "quizEffect" } : {}), allowSignalWrites: true });
|
|
303
|
+
}, { ...(ngDevMode ? { debugName: "quizEffect" } : /* istanbul ignore next */ {}), allowSignalWrites: true });
|
|
297
304
|
quiz$ = toObservable(this.quiz);
|
|
298
|
-
quizTitleSignal = computed(() => this.quiz()?.titleDetails.title, ...(ngDevMode ? [{ debugName: "quizTitleSignal" }] : []));
|
|
305
|
+
quizTitleSignal = computed(() => this.quiz()?.titleDetails.title, ...(ngDevMode ? [{ debugName: "quizTitleSignal" }] : /* istanbul ignore next */ []));
|
|
299
306
|
currentQuestionSignal = toSignal(this.quizStore.currentQuestion$);
|
|
300
307
|
questionTitleSignal = computed(() => {
|
|
301
308
|
const currentQuestion = this.currentQuestionSignal();
|
|
302
309
|
return currentQuestion ? `Question ${currentQuestion.index + 1}` : '';
|
|
303
|
-
}, ...(ngDevMode ? [{ debugName: "questionTitleSignal" }] : []));
|
|
310
|
+
}, ...(ngDevMode ? [{ debugName: "questionTitleSignal" }] : /* istanbul ignore next */ []));
|
|
304
311
|
startedQuiz$ = this.quizStore.startedQuiz$;
|
|
305
312
|
currentQuestion$ = this.quizStore.currentQuestion$;
|
|
306
313
|
canGoToPreviousQuestionSignal = toSignal(this.quizStore.canGoToPreviousQuestion$, { initialValue: false });
|
|
@@ -336,11 +343,11 @@ class QuizComponent {
|
|
|
336
343
|
}
|
|
337
344
|
}));
|
|
338
345
|
viewConfigSignal = toSignal(this.viewConfig$, { initialValue: { state: 'init' } });
|
|
339
|
-
viewStateSignal = computed(() => this.viewConfigSignal()?.state ?? 'init', ...(ngDevMode ? [{ debugName: "viewStateSignal" }] : []));
|
|
340
|
-
preQuizComponentConfigSignal = computed(() => this.viewConfigSignal()?.preQuizComponent, ...(ngDevMode ? [{ debugName: "preQuizComponentConfigSignal" }] : []));
|
|
341
|
-
questionComponentConfigSignal = computed(() => this.viewConfigSignal()?.questionComponent, ...(ngDevMode ? [{ debugName: "questionComponentConfigSignal" }] : []));
|
|
342
|
-
answerComponentConfigSignal = computed(() => this.viewConfigSignal()?.answerComponent, ...(ngDevMode ? [{ debugName: "answerComponentConfigSignal" }] : []));
|
|
343
|
-
resultsComponentConfigSignal = computed(() => this.viewConfigSignal()?.resultsComponent, ...(ngDevMode ? [{ debugName: "resultsComponentConfigSignal" }] : []));
|
|
346
|
+
viewStateSignal = computed(() => this.viewConfigSignal()?.state ?? 'init', ...(ngDevMode ? [{ debugName: "viewStateSignal" }] : /* istanbul ignore next */ []));
|
|
347
|
+
preQuizComponentConfigSignal = computed(() => this.viewConfigSignal()?.preQuizComponent, ...(ngDevMode ? [{ debugName: "preQuizComponentConfigSignal" }] : /* istanbul ignore next */ []));
|
|
348
|
+
questionComponentConfigSignal = computed(() => this.viewConfigSignal()?.questionComponent, ...(ngDevMode ? [{ debugName: "questionComponentConfigSignal" }] : /* istanbul ignore next */ []));
|
|
349
|
+
answerComponentConfigSignal = computed(() => this.viewConfigSignal()?.answerComponent, ...(ngDevMode ? [{ debugName: "answerComponentConfigSignal" }] : /* istanbul ignore next */ []));
|
|
350
|
+
resultsComponentConfigSignal = computed(() => this.viewConfigSignal()?.resultsComponent, ...(ngDevMode ? [{ debugName: "resultsComponentConfigSignal" }] : /* istanbul ignore next */ []));
|
|
344
351
|
handleKeyDown(event) {
|
|
345
352
|
const code = event.code;
|
|
346
353
|
switch (code) {
|
|
@@ -368,10 +375,10 @@ class QuizComponent {
|
|
|
368
375
|
clickNextQuestion() {
|
|
369
376
|
this.quizStore.goToNextQuestion();
|
|
370
377
|
}
|
|
371
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
372
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.
|
|
378
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: QuizComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
379
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.3", type: QuizComponent, isStandalone: true, selector: "dbx-quiz", inputs: { quiz: { classPropertyName: "quiz", publicName: "quiz", isSignal: true, isRequired: true, transformFunction: null } }, providers: [QuizStore, provideCurrentQuestionQuizQuestionAccessor()], ngImport: i0, template: "<div class=\"dbx-quiz\" (dbxWindowKeyDownListener)=\"handleKeyDown($event)\" [dbxWindowKeyDownFilter]=\"keysFilter\">\n @switch (viewStateSignal()) {\n @case ('pre-quiz') {\n <ng-container *ngTemplateOutlet=\"preQuizTemplate\"></ng-container>\n }\n @case ('quiz') {\n <ng-container *ngTemplateOutlet=\"quizTemplate\"></ng-container>\n }\n @case ('post-quiz') {\n <ng-container *ngTemplateOutlet=\"postQuizTemplate\"></ng-container>\n }\n }\n</div>\n\n<!-- Pre-Quiz -->\n<ng-template #preQuizTemplate>\n <div class=\"dbx-quiz-pre-quiz\">\n <dbx-injection [config]=\"preQuizComponentConfigSignal()\"></dbx-injection>\n </div>\n</ng-template>\n\n<!-- Quiz -->\n<ng-template #quizTemplate>\n <div class=\"dbx-quiz-quiz\">\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n <div class=\"dbx-quiz-question dbx-pb3\">\n <h4 class=\"dbx-quiz-question-title\">{{ questionTitleSignal() }}</h4>\n <dbx-injection [config]=\"questionComponentConfigSignal()\"></dbx-injection>\n </div>\n <div class=\"dbx-quiz-answer dbx-pt3\">\n <dbx-injection [config]=\"answerComponentConfigSignal()\"></dbx-injection>\n </div>\n </div>\n</ng-template>\n\n<!-- Post-Quiz -->\n<ng-template #postQuizTemplate>\n <div class=\"dbx-quiz-post-quiz\">\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n <dbx-injection [config]=\"resultsComponentConfigSignal()\"></dbx-injection>\n </div>\n</ng-template>\n\n<!-- Header Template -->\n<ng-template #headerTemplate>\n <div class=\"dbx-quiz-header\">\n <div class=\"dbx-flex-group\">\n <dbx-button [disabled]=\"!canGoToPreviousQuestionSignal()\" icon=\"arrow_back\" (buttonClick)=\"clickPreviousQuestion()\"></dbx-button>\n <span class=\"spacer\"></span>\n <span class=\"mat-h2\">{{ quizTitleSignal() }}</span>\n <span class=\"spacer\"></span>\n <dbx-button [disabled]=\"!canGoToNextQuestionSignal()\" icon=\"arrow_forward\" (buttonClick)=\"clickNextQuestion()\"></dbx-button>\n </div>\n </div>\n</ng-template>\n", dependencies: [{ kind: "component", type: DbxInjectionComponent, selector: "dbx-injection, [dbxInjection], [dbx-injection]", inputs: ["config", "template"] }, { kind: "ngmodule", type: DbxButtonModule }, { kind: "component", type: i1.DbxButtonComponent, selector: "dbx-button", inputs: ["bar", "type", "buttonStyle", "color", "spinnerColor", "customButtonColor", "customTextColor", "customSpinnerColor", "basic", "tonal", "raised", "stroked", "flat", "iconOnly", "fab", "allowClickPropagation", "mode"] }, { kind: "directive", type: DbxWindowKeyDownListenerDirective, selector: "[dbxWindowKeyDownListener]", inputs: ["dbxWindowKeyDownEnabled", "dbxWindowKeyDownFilter"], outputs: ["dbxWindowKeyDownListener"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
|
|
373
380
|
}
|
|
374
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
381
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: QuizComponent, decorators: [{
|
|
375
382
|
type: Component,
|
|
376
383
|
args: [{ selector: 'dbx-quiz', imports: [DbxInjectionComponent, DbxButtonModule, DbxWindowKeyDownListenerDirective, NgTemplateOutlet], providers: [QuizStore, provideCurrentQuestionQuizQuestionAccessor()], standalone: true, template: "<div class=\"dbx-quiz\" (dbxWindowKeyDownListener)=\"handleKeyDown($event)\" [dbxWindowKeyDownFilter]=\"keysFilter\">\n @switch (viewStateSignal()) {\n @case ('pre-quiz') {\n <ng-container *ngTemplateOutlet=\"preQuizTemplate\"></ng-container>\n }\n @case ('quiz') {\n <ng-container *ngTemplateOutlet=\"quizTemplate\"></ng-container>\n }\n @case ('post-quiz') {\n <ng-container *ngTemplateOutlet=\"postQuizTemplate\"></ng-container>\n }\n }\n</div>\n\n<!-- Pre-Quiz -->\n<ng-template #preQuizTemplate>\n <div class=\"dbx-quiz-pre-quiz\">\n <dbx-injection [config]=\"preQuizComponentConfigSignal()\"></dbx-injection>\n </div>\n</ng-template>\n\n<!-- Quiz -->\n<ng-template #quizTemplate>\n <div class=\"dbx-quiz-quiz\">\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n <div class=\"dbx-quiz-question dbx-pb3\">\n <h4 class=\"dbx-quiz-question-title\">{{ questionTitleSignal() }}</h4>\n <dbx-injection [config]=\"questionComponentConfigSignal()\"></dbx-injection>\n </div>\n <div class=\"dbx-quiz-answer dbx-pt3\">\n <dbx-injection [config]=\"answerComponentConfigSignal()\"></dbx-injection>\n </div>\n </div>\n</ng-template>\n\n<!-- Post-Quiz -->\n<ng-template #postQuizTemplate>\n <div class=\"dbx-quiz-post-quiz\">\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n <dbx-injection [config]=\"resultsComponentConfigSignal()\"></dbx-injection>\n </div>\n</ng-template>\n\n<!-- Header Template -->\n<ng-template #headerTemplate>\n <div class=\"dbx-quiz-header\">\n <div class=\"dbx-flex-group\">\n <dbx-button [disabled]=\"!canGoToPreviousQuestionSignal()\" icon=\"arrow_back\" (buttonClick)=\"clickPreviousQuestion()\"></dbx-button>\n <span class=\"spacer\"></span>\n <span class=\"mat-h2\">{{ quizTitleSignal() }}</span>\n <span class=\"spacer\"></span>\n <dbx-button [disabled]=\"!canGoToNextQuestionSignal()\" icon=\"arrow_forward\" (buttonClick)=\"clickNextQuestion()\"></dbx-button>\n </div>\n </div>\n</ng-template>\n" }]
|
|
377
384
|
}], propDecorators: { quiz: [{ type: i0.Input, args: [{ isSignal: true, alias: "quiz", required: true }] }] } });
|
|
@@ -394,9 +401,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
|
|
|
394
401
|
*/
|
|
395
402
|
class QuizAnswerNumberComponent {
|
|
396
403
|
questionAccessor = inject(QuizQuestionAccessor);
|
|
397
|
-
config = model(...(ngDevMode ? [undefined, { debugName: "config" }] : []));
|
|
404
|
+
config = model(...(ngDevMode ? [undefined, { debugName: "config" }] : /* istanbul ignore next */ []));
|
|
398
405
|
currentAnswerSignal = toSignal(this.questionAccessor.answer$);
|
|
399
|
-
currentAnswerValueSignal = computed(() => this.currentAnswerSignal()?.data, ...(ngDevMode ? [{ debugName: "currentAnswerValueSignal" }] : []));
|
|
406
|
+
currentAnswerValueSignal = computed(() => this.currentAnswerSignal()?.data, ...(ngDevMode ? [{ debugName: "currentAnswerValueSignal" }] : /* istanbul ignore next */ []));
|
|
400
407
|
choicesSignal = computed(() => {
|
|
401
408
|
const { range: inputRange, numbers: inputNumbers, preset } = this.config() ?? { preset: 'oneToFive' };
|
|
402
409
|
const currentAnswer = this.currentAnswerValueSignal();
|
|
@@ -433,11 +440,11 @@ class QuizAnswerNumberComponent {
|
|
|
433
440
|
};
|
|
434
441
|
});
|
|
435
442
|
return choices;
|
|
436
|
-
}, ...(ngDevMode ? [{ debugName: "choicesSignal" }] : []));
|
|
443
|
+
}, ...(ngDevMode ? [{ debugName: "choicesSignal" }] : /* istanbul ignore next */ []));
|
|
437
444
|
relevantKeysSignal = computed(() => {
|
|
438
445
|
const choices = this.choicesSignal();
|
|
439
446
|
return choices.map((choice) => choice.number.toString());
|
|
440
|
-
}, ...(ngDevMode ? [{ debugName: "relevantKeysSignal" }] : []));
|
|
447
|
+
}, ...(ngDevMode ? [{ debugName: "relevantKeysSignal" }] : /* istanbul ignore next */ []));
|
|
441
448
|
clickedAnswer(answer) {
|
|
442
449
|
this.questionAccessor.setAnswer(answer);
|
|
443
450
|
}
|
|
@@ -447,10 +454,10 @@ class QuizAnswerNumberComponent {
|
|
|
447
454
|
this.clickedAnswer(number);
|
|
448
455
|
}
|
|
449
456
|
}
|
|
450
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
451
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.
|
|
457
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: QuizAnswerNumberComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
458
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.3", type: QuizAnswerNumberComponent, isStandalone: true, selector: "ng-component", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { config: "configChange" }, ngImport: i0, template: "<div class=\"dbx-quiz-answer-number\" (dbxWindowKeyDownListener)=\"handleKeyDown($event)\" [dbxWindowKeyDownFilter]=\"relevantKeysSignal()\">\n <div class=\"dbx-quiz-answer-number-buttons dbx-button-wrap-group\">\n @for (choice of choicesSignal(); track choice.number) {\n <dbx-button [color]=\"choice.selected ? 'accent' : 'primary'\" [raised]=\"true\" (buttonClick)=\"clickedAnswer(choice.number)\">{{ choice.number }}</dbx-button>\n }\n </div>\n</div>\n", dependencies: [{ kind: "ngmodule", type: DbxButtonModule }, { kind: "component", type: i1.DbxButtonComponent, selector: "dbx-button", inputs: ["bar", "type", "buttonStyle", "color", "spinnerColor", "customButtonColor", "customTextColor", "customSpinnerColor", "basic", "tonal", "raised", "stroked", "flat", "iconOnly", "fab", "allowClickPropagation", "mode"] }, { kind: "directive", type: DbxWindowKeyDownListenerDirective, selector: "[dbxWindowKeyDownListener]", inputs: ["dbxWindowKeyDownEnabled", "dbxWindowKeyDownFilter"], outputs: ["dbxWindowKeyDownListener"] }] });
|
|
452
459
|
}
|
|
453
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
460
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: QuizAnswerNumberComponent, decorators: [{
|
|
454
461
|
type: Component,
|
|
455
462
|
args: [{ imports: [DbxButtonModule, DbxWindowKeyDownListenerDirective], standalone: true, template: "<div class=\"dbx-quiz-answer-number\" (dbxWindowKeyDownListener)=\"handleKeyDown($event)\" [dbxWindowKeyDownFilter]=\"relevantKeysSignal()\">\n <div class=\"dbx-quiz-answer-number-buttons dbx-button-wrap-group\">\n @for (choice of choicesSignal(); track choice.number) {\n <dbx-button [color]=\"choice.selected ? 'accent' : 'primary'\" [raised]=\"true\" (buttonClick)=\"clickedAnswer(choice.number)\">{{ choice.number }}</dbx-button>\n }\n </div>\n</div>\n" }]
|
|
456
463
|
}], propDecorators: { config: [{ type: i0.Input, args: [{ isSignal: true, alias: "config", required: false }] }, { type: i0.Output, args: ["configChange"] }] } });
|
|
@@ -477,9 +484,9 @@ const MULTIPLE_CHOICE_LETTERS = `abcdefghijklmnopqrstuvwxyz`;
|
|
|
477
484
|
*/
|
|
478
485
|
class QuizAnswerMultipleChoiceComponent {
|
|
479
486
|
questionAccessor = inject(QuizQuestionAccessor);
|
|
480
|
-
config = model(...(ngDevMode ? [undefined, { debugName: "config" }] : []));
|
|
487
|
+
config = model(...(ngDevMode ? [undefined, { debugName: "config" }] : /* istanbul ignore next */ []));
|
|
481
488
|
currentAnswerSignal = toSignal(this.questionAccessor.answer$);
|
|
482
|
-
currentAnswerValueSignal = computed(() => this.currentAnswerSignal()?.data, ...(ngDevMode ? [{ debugName: "currentAnswerValueSignal" }] : []));
|
|
489
|
+
currentAnswerValueSignal = computed(() => this.currentAnswerSignal()?.data, ...(ngDevMode ? [{ debugName: "currentAnswerValueSignal" }] : /* istanbul ignore next */ []));
|
|
483
490
|
choicesSignal = computed(() => {
|
|
484
491
|
const config = this.config();
|
|
485
492
|
const currentAnswer = this.currentAnswerValueSignal();
|
|
@@ -495,7 +502,7 @@ class QuizAnswerMultipleChoiceComponent {
|
|
|
495
502
|
};
|
|
496
503
|
});
|
|
497
504
|
return choices;
|
|
498
|
-
}, ...(ngDevMode ? [{ debugName: "choicesSignal" }] : []));
|
|
505
|
+
}, ...(ngDevMode ? [{ debugName: "choicesSignal" }] : /* istanbul ignore next */ []));
|
|
499
506
|
relevantKeysSignal = computed(() => {
|
|
500
507
|
const answersCount = this.config()?.answerText.length ?? 0;
|
|
501
508
|
const relevantKeys = [];
|
|
@@ -505,7 +512,7 @@ class QuizAnswerMultipleChoiceComponent {
|
|
|
505
512
|
relevantKeys.push(answerLetter);
|
|
506
513
|
}
|
|
507
514
|
return relevantKeys;
|
|
508
|
-
}, ...(ngDevMode ? [{ debugName: "relevantKeysSignal" }] : []));
|
|
515
|
+
}, ...(ngDevMode ? [{ debugName: "relevantKeysSignal" }] : /* istanbul ignore next */ []));
|
|
509
516
|
clickedAnswer(answer) {
|
|
510
517
|
this.questionAccessor.setAnswer(answer);
|
|
511
518
|
}
|
|
@@ -519,10 +526,10 @@ class QuizAnswerMultipleChoiceComponent {
|
|
|
519
526
|
}
|
|
520
527
|
}
|
|
521
528
|
}
|
|
522
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
523
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.
|
|
529
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: QuizAnswerMultipleChoiceComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
530
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.3", type: QuizAnswerMultipleChoiceComponent, isStandalone: true, selector: "ng-component", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { config: "configChange" }, ngImport: i0, template: "<div class=\"dbx-quiz-answer-multiplechoice\" (dbxWindowKeyDownListener)=\"handleKeyDown($event)\" [dbxWindowKeyDownFilter]=\"relevantKeysSignal()\">\n <div class=\"dbx-quiz-answer-multiplechoice-buttons dbx-button-column dbx-button-wide\">\n @for (choice of choicesSignal(); track choice.letter) {\n <dbx-button class=\"dbx-w100\" [color]=\"choice.selected ? 'accent' : 'primary'\" [raised]=\"true\" (buttonClick)=\"clickedAnswer(choice)\">\n <div class=\"dbx-quiz-answer-multiplechoice-button-content\">\n <span class=\"dbx-quiz-answer-multiplechoice-button-letter\">{{ choice.letter }})</span>\n <span class=\"dbx-quiz-answer-multiplechoice-button-text\">{{ choice.text }}</span>\n </div>\n </dbx-button>\n }\n </div>\n</div>\n", dependencies: [{ kind: "ngmodule", type: DbxButtonModule }, { kind: "component", type: i1.DbxButtonComponent, selector: "dbx-button", inputs: ["bar", "type", "buttonStyle", "color", "spinnerColor", "customButtonColor", "customTextColor", "customSpinnerColor", "basic", "tonal", "raised", "stroked", "flat", "iconOnly", "fab", "allowClickPropagation", "mode"] }, { kind: "directive", type: DbxWindowKeyDownListenerDirective, selector: "[dbxWindowKeyDownListener]", inputs: ["dbxWindowKeyDownEnabled", "dbxWindowKeyDownFilter"], outputs: ["dbxWindowKeyDownListener"] }] });
|
|
524
531
|
}
|
|
525
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
532
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: QuizAnswerMultipleChoiceComponent, decorators: [{
|
|
526
533
|
type: Component,
|
|
527
534
|
args: [{ imports: [DbxButtonModule, DbxWindowKeyDownListenerDirective], standalone: true, template: "<div class=\"dbx-quiz-answer-multiplechoice\" (dbxWindowKeyDownListener)=\"handleKeyDown($event)\" [dbxWindowKeyDownFilter]=\"relevantKeysSignal()\">\n <div class=\"dbx-quiz-answer-multiplechoice-buttons dbx-button-column dbx-button-wide\">\n @for (choice of choicesSignal(); track choice.letter) {\n <dbx-button class=\"dbx-w100\" [color]=\"choice.selected ? 'accent' : 'primary'\" [raised]=\"true\" (buttonClick)=\"clickedAnswer(choice)\">\n <div class=\"dbx-quiz-answer-multiplechoice-button-content\">\n <span class=\"dbx-quiz-answer-multiplechoice-button-letter\">{{ choice.letter }})</span>\n <span class=\"dbx-quiz-answer-multiplechoice-button-text\">{{ choice.text }}</span>\n </div>\n </dbx-button>\n }\n </div>\n</div>\n" }]
|
|
528
535
|
}], propDecorators: { config: [{ type: i0.Input, args: [{ isSignal: true, alias: "config", required: false }] }, { type: i0.Output, args: ["configChange"] }] } });
|
|
@@ -545,7 +552,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
|
|
|
545
552
|
*/
|
|
546
553
|
class QuizPreQuizIntroComponent {
|
|
547
554
|
quizStore = inject(QuizStore);
|
|
548
|
-
config = model(...(ngDevMode ? [undefined, { debugName: "config" }] : []));
|
|
555
|
+
config = model(...(ngDevMode ? [undefined, { debugName: "config" }] : /* istanbul ignore next */ []));
|
|
549
556
|
quizTitleDetailsSignal = toSignal(this.quizStore.titleDetails$);
|
|
550
557
|
configSignal = computed(() => {
|
|
551
558
|
const config = this.config();
|
|
@@ -555,14 +562,14 @@ class QuizPreQuizIntroComponent {
|
|
|
555
562
|
subtitle: config?.subtitle ?? titleDetails?.subtitle,
|
|
556
563
|
description: config?.description ?? titleDetails?.description
|
|
557
564
|
};
|
|
558
|
-
}, ...(ngDevMode ? [{ debugName: "configSignal" }] : []));
|
|
559
|
-
titleSignal = computed(() => this.configSignal()?.title, ...(ngDevMode ? [{ debugName: "titleSignal" }] : []));
|
|
560
|
-
subtitleSignal = computed(() => this.configSignal()?.subtitle, ...(ngDevMode ? [{ debugName: "subtitleSignal" }] : []));
|
|
561
|
-
descriptionSignal = computed(() => this.configSignal()?.description, ...(ngDevMode ? [{ debugName: "descriptionSignal" }] : []));
|
|
562
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
563
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.
|
|
565
|
+
}, ...(ngDevMode ? [{ debugName: "configSignal" }] : /* istanbul ignore next */ []));
|
|
566
|
+
titleSignal = computed(() => this.configSignal()?.title, ...(ngDevMode ? [{ debugName: "titleSignal" }] : /* istanbul ignore next */ []));
|
|
567
|
+
subtitleSignal = computed(() => this.configSignal()?.subtitle, ...(ngDevMode ? [{ debugName: "subtitleSignal" }] : /* istanbul ignore next */ []));
|
|
568
|
+
descriptionSignal = computed(() => this.configSignal()?.description, ...(ngDevMode ? [{ debugName: "descriptionSignal" }] : /* istanbul ignore next */ []));
|
|
569
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: QuizPreQuizIntroComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
570
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.3", type: QuizPreQuizIntroComponent, isStandalone: true, selector: "ng-component", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { config: "configChange" }, ngImport: i0, template: "<div>\n <div>\n <h1>{{ titleSignal() }}</h1>\n <h2>{{ subtitleSignal() }}</h2>\n <p>{{ descriptionSignal() }}</p>\n </div>\n <div>\n <dbx-button [raised]=\"true\" (buttonClick)=\"quizStore.startQuiz()\" text=\"Start Quiz\"></dbx-button>\n </div>\n</div>\n", dependencies: [{ kind: "ngmodule", type: DbxButtonModule }, { kind: "component", type: i1.DbxButtonComponent, selector: "dbx-button", inputs: ["bar", "type", "buttonStyle", "color", "spinnerColor", "customButtonColor", "customTextColor", "customSpinnerColor", "basic", "tonal", "raised", "stroked", "flat", "iconOnly", "fab", "allowClickPropagation", "mode"] }] });
|
|
564
571
|
}
|
|
565
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
572
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: QuizPreQuizIntroComponent, decorators: [{
|
|
566
573
|
type: Component,
|
|
567
574
|
args: [{ imports: [DbxButtonModule], standalone: true, template: "<div>\n <div>\n <h1>{{ titleSignal() }}</h1>\n <h2>{{ subtitleSignal() }}</h2>\n <p>{{ descriptionSignal() }}</p>\n </div>\n <div>\n <dbx-button [raised]=\"true\" (buttonClick)=\"quizStore.startQuiz()\" text=\"Start Quiz\"></dbx-button>\n </div>\n</div>\n" }]
|
|
568
575
|
}], propDecorators: { config: [{ type: i0.Input, args: [{ isSignal: true, alias: "config", required: false }] }, { type: i0.Output, args: ["configChange"] }] } });
|
|
@@ -583,14 +590,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
|
|
|
583
590
|
* ```
|
|
584
591
|
*/
|
|
585
592
|
class QuizQuestionTextComponent {
|
|
586
|
-
config = model(...(ngDevMode ? [undefined, { debugName: "config" }] : []));
|
|
587
|
-
promptSignal = computed(() => this.config()?.prompt, ...(ngDevMode ? [{ debugName: "promptSignal" }] : []));
|
|
588
|
-
textSignal = computed(() => this.config()?.text, ...(ngDevMode ? [{ debugName: "textSignal" }] : []));
|
|
589
|
-
guidanceSignal = computed(() => this.config()?.guidance, ...(ngDevMode ? [{ debugName: "guidanceSignal" }] : []));
|
|
590
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
591
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.
|
|
593
|
+
config = model(...(ngDevMode ? [undefined, { debugName: "config" }] : /* istanbul ignore next */ []));
|
|
594
|
+
promptSignal = computed(() => this.config()?.prompt, ...(ngDevMode ? [{ debugName: "promptSignal" }] : /* istanbul ignore next */ []));
|
|
595
|
+
textSignal = computed(() => this.config()?.text, ...(ngDevMode ? [{ debugName: "textSignal" }] : /* istanbul ignore next */ []));
|
|
596
|
+
guidanceSignal = computed(() => this.config()?.guidance, ...(ngDevMode ? [{ debugName: "guidanceSignal" }] : /* istanbul ignore next */ []));
|
|
597
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: QuizQuestionTextComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
598
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.3", type: QuizQuestionTextComponent, isStandalone: true, selector: "ng-component", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { config: "configChange" }, ngImport: i0, template: "<div class=\"dbx-quiz-question-text\">\n <div class=\"dbx-quiz-question-text-content\">\n @if (promptSignal() !== null) {\n <div class=\"dbx-hint dbx-pb3\">{{ promptSignal() }}</div>\n }\n <div class=\"dbx-pb3\">{{ textSignal() }}</div>\n @if (guidanceSignal() !== null) {\n <div class=\"dbx-small dbx-hint\">{{ guidanceSignal() }}</div>\n }\n </div>\n</div>\n" });
|
|
592
599
|
}
|
|
593
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
600
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: QuizQuestionTextComponent, decorators: [{
|
|
594
601
|
type: Component,
|
|
595
602
|
args: [{ standalone: true, template: "<div class=\"dbx-quiz-question-text\">\n <div class=\"dbx-quiz-question-text-content\">\n @if (promptSignal() !== null) {\n <div class=\"dbx-hint dbx-pb3\">{{ promptSignal() }}</div>\n }\n <div class=\"dbx-pb3\">{{ textSignal() }}</div>\n @if (guidanceSignal() !== null) {\n <div class=\"dbx-small dbx-hint\">{{ guidanceSignal() }}</div>\n }\n </div>\n</div>\n" }]
|
|
596
603
|
}], propDecorators: { config: [{ type: i0.Input, args: [{ isSignal: true, alias: "config", required: false }] }, { type: i0.Output, args: ["configChange"] }] } });
|
|
@@ -619,8 +626,8 @@ class DbxQuizPostQuizComponent {
|
|
|
619
626
|
else {
|
|
620
627
|
return 'presubmit';
|
|
621
628
|
}
|
|
622
|
-
}, ...(ngDevMode ? [{ debugName: "stateSignal" }] : []));
|
|
623
|
-
handleSubmitQuiz = input(...(ngDevMode ? [undefined, { debugName: "handleSubmitQuiz" }] : []));
|
|
629
|
+
}, ...(ngDevMode ? [{ debugName: "stateSignal" }] : /* istanbul ignore next */ []));
|
|
630
|
+
handleSubmitQuiz = input(...(ngDevMode ? [undefined, { debugName: "handleSubmitQuiz" }] : /* istanbul ignore next */ []));
|
|
624
631
|
handleSubmitQuizButton = (_, context) => {
|
|
625
632
|
this.quizStore.setLockQuizNavigation(true);
|
|
626
633
|
const handler = this.handleSubmitQuiz();
|
|
@@ -634,10 +641,10 @@ class DbxQuizPostQuizComponent {
|
|
|
634
641
|
handleSubmitQuizSuccess = () => {
|
|
635
642
|
this.quizStore.setSubmittedQuiz(true);
|
|
636
643
|
};
|
|
637
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
638
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.
|
|
644
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxQuizPostQuizComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
645
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.3", type: DbxQuizPostQuizComponent, isStandalone: true, selector: "dbx-quiz-post-quiz", inputs: { handleSubmitQuiz: { classPropertyName: "handleSubmitQuiz", publicName: "handleSubmitQuiz", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div class=\"dbx-post-quiz text-center\">\n <h3>Quiz Completed</h3>\n <div>\n <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n @if (stateSignal() === 'presubmit') {\n <ng-container *ngTemplateOutlet=\"preSubmitTemplate\"></ng-container>\n } @else {\n <ng-container *ngTemplateOutlet=\"postSubmitTemplate\"></ng-container>\n }\n </div>\n</div>\n\n<!-- Pre-Submit -->\n<ng-template #preSubmitTemplate>\n <ng-content select=\"[presubmit]\"></ng-content>\n @if (handleSubmitQuiz()) {\n <div class=\"dbx-post-quiz-submit\">\n <div dbxAction dbxActionLogger dbxActionValue dbxActionSnackbarError [dbxActionHandler]=\"handleSubmitQuizButton\" [dbxActionSuccessHandler]=\"handleSubmitQuizSuccess\">\n <dbx-button [disabled]=\"quizSubmittedSignal()\" [raised]=\"true\" dbxActionButton>Submit Quiz</dbx-button>\n </div>\n </div>\n }\n</ng-template>\n\n<!-- Post-Submit -->\n<ng-template #postSubmitTemplate>\n <ng-content select=\"[postsubmit]\"></ng-content>\n</ng-template>\n\n<!-- Content -->\n<ng-template #contentTemplate>\n <ng-content></ng-content>\n</ng-template>\n", dependencies: [{ kind: "ngmodule", type: DbxButtonModule }, { kind: "directive", type: i1$1.DbxActionButtonDirective, selector: "[dbxActionButton]" }, { kind: "component", type: i1.DbxButtonComponent, selector: "dbx-button", inputs: ["bar", "type", "buttonStyle", "color", "spinnerColor", "customButtonColor", "customTextColor", "customSpinnerColor", "basic", "tonal", "raised", "stroked", "flat", "iconOnly", "fab", "allowClickPropagation", "mode"] }, { kind: "ngmodule", type: DbxActionModule }, { kind: "directive", type: i1$1.DbxActionDirective, selector: "dbx-action,[dbxAction]", exportAs: ["action", "dbxAction"] }, { kind: "directive", type: i1$1.DbxActionHandlerDirective, selector: "[dbxActionHandler]", inputs: ["dbxActionHandler"] }, { kind: "directive", type: i1$1.DbxActionValueDirective, selector: "dbxActionValue,[dbxActionValue]", inputs: ["dbxActionValue"] }, { kind: "directive", type: i1$1.DbxActionContextLoggerDirective, selector: "[dbxActionLogger],[dbxActionContextLogger]" }, { kind: "directive", type: i1$1.DbxActionSuccessHandlerDirective, selector: "[dbxActionSuccessHandler]", inputs: ["dbxActionSuccessHandler"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
|
|
639
646
|
}
|
|
640
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
647
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxQuizPostQuizComponent, decorators: [{
|
|
641
648
|
type: Component,
|
|
642
649
|
args: [{ selector: 'dbx-quiz-post-quiz', imports: [DbxButtonModule, DbxActionModule, NgTemplateOutlet], standalone: true, template: "<div class=\"dbx-post-quiz text-center\">\n <h3>Quiz Completed</h3>\n <div>\n <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n @if (stateSignal() === 'presubmit') {\n <ng-container *ngTemplateOutlet=\"preSubmitTemplate\"></ng-container>\n } @else {\n <ng-container *ngTemplateOutlet=\"postSubmitTemplate\"></ng-container>\n }\n </div>\n</div>\n\n<!-- Pre-Submit -->\n<ng-template #preSubmitTemplate>\n <ng-content select=\"[presubmit]\"></ng-content>\n @if (handleSubmitQuiz()) {\n <div class=\"dbx-post-quiz-submit\">\n <div dbxAction dbxActionLogger dbxActionValue dbxActionSnackbarError [dbxActionHandler]=\"handleSubmitQuizButton\" [dbxActionSuccessHandler]=\"handleSubmitQuizSuccess\">\n <dbx-button [disabled]=\"quizSubmittedSignal()\" [raised]=\"true\" dbxActionButton>Submit Quiz</dbx-button>\n </div>\n </div>\n }\n</ng-template>\n\n<!-- Post-Submit -->\n<ng-template #postSubmitTemplate>\n <ng-content select=\"[postsubmit]\"></ng-content>\n</ng-template>\n\n<!-- Content -->\n<ng-template #contentTemplate>\n <ng-content></ng-content>\n</ng-template>\n" }]
|
|
643
650
|
}], propDecorators: { handleSubmitQuiz: [{ type: i0.Input, args: [{ isSignal: true, alias: "handleSubmitQuiz", required: false }] }] } });
|
|
@@ -652,21 +659,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
|
|
|
652
659
|
*/
|
|
653
660
|
class DbxQuizResetButtonComponent {
|
|
654
661
|
quizStore = inject(QuizStore);
|
|
655
|
-
buttonText = input(`Restart Quiz`, ...(ngDevMode ? [{ debugName: "buttonText" }] : []));
|
|
662
|
+
buttonText = input(`Restart Quiz`, ...(ngDevMode ? [{ debugName: "buttonText" }] : /* istanbul ignore next */ []));
|
|
656
663
|
handleResetQuizButton = (_, context) => {
|
|
657
664
|
this.quizStore.restartQuizToFirstQuestion();
|
|
658
665
|
context.success();
|
|
659
666
|
};
|
|
660
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
661
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.
|
|
667
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxQuizResetButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
668
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.3", type: DbxQuizResetButtonComponent, isStandalone: true, selector: "dbx-quiz-reset-button", inputs: { buttonText: { classPropertyName: "buttonText", publicName: "buttonText", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
|
|
662
669
|
<div class="dbx-quiz-reset-button">
|
|
663
670
|
<div dbxAction dbxActionLogger dbxActionValue dbxActionSnackbarError [dbxActionHandler]="handleResetQuizButton">
|
|
664
671
|
<dbx-button [raised]="true" [text]="buttonText()" dbxActionButton></dbx-button>
|
|
665
672
|
</div>
|
|
666
673
|
</div>
|
|
667
|
-
`, isInline: true, dependencies: [{ kind: "ngmodule", type: DbxButtonModule }, { kind: "directive", type: i1$1.DbxActionButtonDirective, selector: "[dbxActionButton]" }, { kind: "component", type: i1.DbxButtonComponent, selector: "dbx-button", inputs: ["bar", "type", "buttonStyle", "color", "spinnerColor", "customButtonColor", "customTextColor", "customSpinnerColor", "basic", "tonal", "raised", "stroked", "flat", "iconOnly", "fab", "mode"] }, { kind: "ngmodule", type: DbxActionModule }, { kind: "directive", type: i1$1.DbxActionDirective, selector: "dbx-action,[dbxAction]", exportAs: ["action", "dbxAction"] }, { kind: "directive", type: i1$1.DbxActionHandlerDirective, selector: "[dbxActionHandler]", inputs: ["dbxActionHandler"] }, { kind: "directive", type: i1$1.DbxActionValueDirective, selector: "dbxActionValue,[dbxActionValue]", inputs: ["dbxActionValue"] }, { kind: "directive", type: i1$1.DbxActionContextLoggerDirective, selector: "[dbxActionLogger],[dbxActionContextLogger]" }] });
|
|
674
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: DbxButtonModule }, { kind: "directive", type: i1$1.DbxActionButtonDirective, selector: "[dbxActionButton]" }, { kind: "component", type: i1.DbxButtonComponent, selector: "dbx-button", inputs: ["bar", "type", "buttonStyle", "color", "spinnerColor", "customButtonColor", "customTextColor", "customSpinnerColor", "basic", "tonal", "raised", "stroked", "flat", "iconOnly", "fab", "allowClickPropagation", "mode"] }, { kind: "ngmodule", type: DbxActionModule }, { kind: "directive", type: i1$1.DbxActionDirective, selector: "dbx-action,[dbxAction]", exportAs: ["action", "dbxAction"] }, { kind: "directive", type: i1$1.DbxActionHandlerDirective, selector: "[dbxActionHandler]", inputs: ["dbxActionHandler"] }, { kind: "directive", type: i1$1.DbxActionValueDirective, selector: "dbxActionValue,[dbxActionValue]", inputs: ["dbxActionValue"] }, { kind: "directive", type: i1$1.DbxActionContextLoggerDirective, selector: "[dbxActionLogger],[dbxActionContextLogger]" }] });
|
|
668
675
|
}
|
|
669
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
676
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxQuizResetButtonComponent, decorators: [{
|
|
670
677
|
type: Component,
|
|
671
678
|
args: [{
|
|
672
679
|
selector: 'dbx-quiz-reset-button',
|
|
@@ -691,14 +698,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
|
|
|
691
698
|
* ```
|
|
692
699
|
*/
|
|
693
700
|
class DbxQuizScoreComponent {
|
|
694
|
-
input = input(...(ngDevMode ? [undefined, { debugName: "input" }] : []));
|
|
695
|
-
scoreSignal = computed(() => this.input()?.score, ...(ngDevMode ? [{ debugName: "scoreSignal" }] : []));
|
|
696
|
-
maxScoreSignal = computed(() => this.input()?.maxScore, ...(ngDevMode ? [{ debugName: "maxScoreSignal" }] : []));
|
|
697
|
-
feedbackTextSignal = computed(() => this.input()?.feedbackText ?? '', ...(ngDevMode ? [{ debugName: "feedbackTextSignal" }] : []));
|
|
698
|
-
subtitleSignal = computed(() => this.input()?.subtitle, ...(ngDevMode ? [{ debugName: "subtitleSignal" }] : []));
|
|
699
|
-
showRetakeButtonSignal = computed(() => this.input()?.showRetakeButton, ...(ngDevMode ? [{ debugName: "showRetakeButtonSignal" }] : []));
|
|
700
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
701
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.
|
|
701
|
+
input = input(...(ngDevMode ? [undefined, { debugName: "input" }] : /* istanbul ignore next */ []));
|
|
702
|
+
scoreSignal = computed(() => this.input()?.score, ...(ngDevMode ? [{ debugName: "scoreSignal" }] : /* istanbul ignore next */ []));
|
|
703
|
+
maxScoreSignal = computed(() => this.input()?.maxScore, ...(ngDevMode ? [{ debugName: "maxScoreSignal" }] : /* istanbul ignore next */ []));
|
|
704
|
+
feedbackTextSignal = computed(() => this.input()?.feedbackText ?? '', ...(ngDevMode ? [{ debugName: "feedbackTextSignal" }] : /* istanbul ignore next */ []));
|
|
705
|
+
subtitleSignal = computed(() => this.input()?.subtitle, ...(ngDevMode ? [{ debugName: "subtitleSignal" }] : /* istanbul ignore next */ []));
|
|
706
|
+
showRetakeButtonSignal = computed(() => this.input()?.showRetakeButton, ...(ngDevMode ? [{ debugName: "showRetakeButtonSignal" }] : /* istanbul ignore next */ []));
|
|
707
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxQuizScoreComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
708
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.3", type: DbxQuizScoreComponent, isStandalone: true, selector: "dbx-quiz-score", inputs: { input: { classPropertyName: "input", publicName: "input", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
|
|
702
709
|
<div class="dbx-quiz-score">
|
|
703
710
|
<h3 class="dbx-quiz-score-score">{{ scoreSignal() }}/{{ maxScoreSignal() }}</h3>
|
|
704
711
|
<p class="dbx-quiz-score-text">{{ feedbackTextSignal() }}</p>
|
|
@@ -711,7 +718,7 @@ class DbxQuizScoreComponent {
|
|
|
711
718
|
</div>
|
|
712
719
|
`, isInline: true, dependencies: [{ kind: "component", type: DbxQuizResetButtonComponent, selector: "dbx-quiz-reset-button", inputs: ["buttonText"] }] });
|
|
713
720
|
}
|
|
714
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
721
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxQuizScoreComponent, decorators: [{
|
|
715
722
|
type: Component,
|
|
716
723
|
args: [{
|
|
717
724
|
selector: 'dbx-quiz-score',
|
|
@@ -735,11 +742,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
|
|
|
735
742
|
/**
|
|
736
743
|
* Creates a Likert scale question config with agreement prompt (Strongly Disagree to Strongly Agree).
|
|
737
744
|
*
|
|
745
|
+
* @param text - The statement to rate agreement on
|
|
746
|
+
* @returns A quiz question config with an agreement-based prompt and guidance text
|
|
747
|
+
*
|
|
738
748
|
* @example
|
|
739
749
|
* ```ts
|
|
740
750
|
* instance.config.set(quizAgreementPrompt('I feel confident leading under pressure.'));
|
|
741
751
|
* // { prompt: 'Please rate how much you agree...', text: '...', guidance: '1 = Strongly Disagree, 5 = Strongly Agree' }
|
|
742
752
|
* ```
|
|
753
|
+
*
|
|
754
|
+
* @param text - The statement to rate agreement on
|
|
743
755
|
*/
|
|
744
756
|
function quizAgreementPrompt(text) {
|
|
745
757
|
return {
|
|
@@ -751,11 +763,16 @@ function quizAgreementPrompt(text) {
|
|
|
751
763
|
/**
|
|
752
764
|
* Creates a Likert scale question config with frequency prompt (Never to Always).
|
|
753
765
|
*
|
|
766
|
+
* @param text - The statement to rate frequency on
|
|
767
|
+
* @returns A quiz question config with a frequency-based prompt and guidance text
|
|
768
|
+
*
|
|
754
769
|
* @example
|
|
755
770
|
* ```ts
|
|
756
771
|
* instance.config.set(quizFrequencyPrompt('I break vague direction into first steps.'));
|
|
757
772
|
* // { prompt: 'Please rate how much you agree...', text: '...', guidance: '1 = Never, 5 = Always' }
|
|
758
773
|
* ```
|
|
774
|
+
*
|
|
775
|
+
* @param text - The statement to rate frequency on
|
|
759
776
|
*/
|
|
760
777
|
function quizFrequencyPrompt(text) {
|
|
761
778
|
return {
|