@touchpoll/tp-survey 0.0.23 → 0.0.25
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/touchpoll-tp-survey.mjs +202 -150
- package/fesm2022/touchpoll-tp-survey.mjs.map +1 -1
- package/lib/component/answer/answer.ms/answer.ms.component.d.ts +3 -3
- package/lib/component/answer/answer.sl/answer.sl.component.d.ts +3 -3
- package/lib/component/survey.play/survey.play.component.d.ts +2 -2
- package/lib/pipe/get.question.image.background.size/get.question.image.background.css.size.pipe.d.ts +12 -0
- package/lib/tp.survey.interface.d.ts +4 -4
- package/package.json +1 -3
- package/styles/platform/component/survey.checkbox.scss +5 -5
- package/styles/platform/component/survey.radio.button.scss +3 -3
- package/styles/platform/survey.mixins.desktop.scss +9 -9
- package/styles/platform/survey.mixins.tablet.scss +3 -3
- package/styles/survey.mixins.scss +4 -3
- package/styles/survey.themes.scss +5 -2
- package/styles/theme/azure.blue.scss +3 -2
- package/styles/theme/cyan.orange.scss +4 -2
- package/styles/theme/rose.red.scss +3 -2
- package/esm2022/lib/component/answer/answer.additional/answer.additional.component.mjs +0 -49
- package/esm2022/lib/component/answer/answer.additional/directive/additional.answer.caption.position/additional.answer.caption.position.directive.mjs +0 -61
- package/esm2022/lib/component/answer/answer.end/answer.end.component.mjs +0 -30
- package/esm2022/lib/component/answer/answer.info/answer.info.component.mjs +0 -30
- package/esm2022/lib/component/answer/answer.lang/answer.lang.component.mjs +0 -22
- package/esm2022/lib/component/answer/answer.master/answer.master.component.mjs +0 -57
- package/esm2022/lib/component/answer/answer.ms/answer.ms.component.mjs +0 -106
- package/esm2022/lib/component/answer/answer.od/answer.od.component.mjs +0 -39
- package/esm2022/lib/component/answer/answer.ol/answer.ol.component.mjs +0 -40
- package/esm2022/lib/component/answer/answer.sl/answer.sl.component.mjs +0 -131
- package/esm2022/lib/component/answer/answer.sl/pipe/as.form.array/as.form.array.pipe.mjs +0 -17
- package/esm2022/lib/component/answer/answer.sl/pipe/as.form.control/as.form.control.pipe.mjs +0 -17
- package/esm2022/lib/component/answer/answer.ss/answer.ss.component.mjs +0 -51
- package/esm2022/lib/component/answer/container.answer/container.answer.component.mjs +0 -319
- package/esm2022/lib/component/answer/container.answer/container.answer.validator.mjs +0 -130
- package/esm2022/lib/component/navigation.button/navigation.button.component.mjs +0 -21
- package/esm2022/lib/component/question.caption/question.caption.component.mjs +0 -15
- package/esm2022/lib/component/survey.play/survey.play.component.mjs +0 -126
- package/esm2022/lib/component/survey.question.preview/survey.question.preview.component.mjs +0 -60
- package/esm2022/lib/core/tp.servey.quota/tp.survey.quota.mjs +0 -105
- package/esm2022/lib/core/tp.survey.answer/tp.survey.answer.mjs +0 -27
- package/esm2022/lib/core/tp.survey.core/tp.survey.core.service.mjs +0 -455
- package/esm2022/lib/core/tp.survey.interview/tp.survey.interview.service.mjs +0 -68
- package/esm2022/lib/core/tp.survey.logic/tp.survey.logic.service.mjs +0 -42
- package/esm2022/lib/directive/alternatives.container/alternatives.container.directive.mjs +0 -130
- package/esm2022/lib/directive/focus.and.select/focus.and.select.directive.mjs +0 -27
- package/esm2022/lib/directive/survey.theme/survey.theme.directive.mjs +0 -53
- package/esm2022/lib/directive/update.font.size/update.font.size.directive.mjs +0 -28
- package/esm2022/lib/icons/default.icons/default.icons.mjs +0 -15
- package/esm2022/lib/icons/default.icons/default.icons.module.mjs +0 -31
- package/esm2022/lib/pipe/get.active.language/get.active.language.pipe.mjs +0 -17
- package/esm2022/lib/pipe/get.additional.value.by.value/get.additional.value.by.value.pipe.mjs +0 -18
- package/esm2022/lib/pipe/key.values/key.values.pipe.mjs +0 -20
- package/esm2022/lib/pipe/multi.lang.object.to.html/multi.lang.object.to.html.pipe.mjs +0 -48
- package/esm2022/lib/tp.survey.config.mjs +0 -8
- package/esm2022/lib/tp.survey.const.mjs +0 -28
- package/esm2022/lib/tp.survey.enum.mjs +0 -50
- package/esm2022/lib/tp.survey.interface.mjs +0 -2
- package/esm2022/lib/tp.survey.method.mjs +0 -5
- package/esm2022/lib/tp.survey.module.mjs +0 -27
- package/esm2022/lib/tp.survey.type.mjs +0 -2
- package/esm2022/public-api.mjs +0 -14
- package/esm2022/touchpoll-tp-survey.mjs +0 -5
|
@@ -1,130 +0,0 @@
|
|
|
1
|
-
import { MISSING_VALUE } from '../../../tp.survey.const';
|
|
2
|
-
export const answerDefaultValidator = () => {
|
|
3
|
-
return (control) => {
|
|
4
|
-
//ответ не число, такого быть не может, это ошибка
|
|
5
|
-
if ((control.value === null) || (control.value === MISSING_VALUE)) {
|
|
6
|
-
return { answerRequired: true };
|
|
7
|
-
}
|
|
8
|
-
//ошибок нет, всё корректно
|
|
9
|
-
return null;
|
|
10
|
-
};
|
|
11
|
-
};
|
|
12
|
-
export const answerODValidator = (minValue, maxValue) => (control) => {
|
|
13
|
-
//ответ не число, такого быть не может, это ошибка
|
|
14
|
-
if (!Number.isSafeInteger(control.value)) {
|
|
15
|
-
return { answerOdAnswerType: true };
|
|
16
|
-
}
|
|
17
|
-
//Нужно проверить 2 ситуации.
|
|
18
|
-
//1 В настройках вопроса указали minValue, тогда введённое число должно быть больше minValue.
|
|
19
|
-
//2 В настройках вопроса указали maxValue, тогда введённое число должно быть меньше maxValue.
|
|
20
|
-
//Если эти условия не выполняются, то это ошибка.
|
|
21
|
-
if ((Number.isSafeInteger(minValue) && control.value < minValue) || (Number.isSafeInteger(maxValue) && (maxValue ?? 0 > 0) && control.value > maxValue)) {
|
|
22
|
-
return { answerOdAnswerError: true };
|
|
23
|
-
}
|
|
24
|
-
//ошибок нет, всё корректно
|
|
25
|
-
return null;
|
|
26
|
-
};
|
|
27
|
-
export const answerOLValidator = (isPhoneNumber) => (control) => {
|
|
28
|
-
const text = typeof control.value !== 'string' ? '' : control.value.trim();
|
|
29
|
-
//Нужно чтобы в поле ввели хоть что-то.
|
|
30
|
-
if (text.length === 0) {
|
|
31
|
-
return { answerOlAnswerError: true };
|
|
32
|
-
}
|
|
33
|
-
if (isPhoneNumber) {
|
|
34
|
-
const res = text.length === 9 && !isNaN(Number(text));
|
|
35
|
-
if (!res) {
|
|
36
|
-
return { answerOlTelephoneFormatError: true };
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
//ошибок нет, всё корректно
|
|
40
|
-
return null;
|
|
41
|
-
};
|
|
42
|
-
export const answerSSValidator = () => (control) => {
|
|
43
|
-
//ответ не число, такого быть не может, это ошибка
|
|
44
|
-
if (!Number.isSafeInteger(control.value)) {
|
|
45
|
-
return { answerSsAnswerType: true };
|
|
46
|
-
}
|
|
47
|
-
//нет ответа
|
|
48
|
-
if (control.value < 0) {
|
|
49
|
-
return { answerMissing: true };
|
|
50
|
-
}
|
|
51
|
-
//ошибок нет, всё корректно
|
|
52
|
-
return null;
|
|
53
|
-
};
|
|
54
|
-
export const answerMSValidator = (visibleAlternativeCount, minCount = 1, maxCount = 0) => (control) => {
|
|
55
|
-
//visibleAlternativeCount - количество альтернатив на экране, если 0, то смысла показывать вопрос нет
|
|
56
|
-
//minCount - Минимальное количество ответов, которое может выбрать респондент, по умолчанию 1.
|
|
57
|
-
//maxCount - Максимальное количество ответов, которые может выбрать респондент. Если указано 0, количество не ограничено. По умолчанию 0
|
|
58
|
-
if (visibleAlternativeCount === 0) {
|
|
59
|
-
return null;
|
|
60
|
-
}
|
|
61
|
-
//ответ не массив, такого быть не может, это ошибка
|
|
62
|
-
if (!Array.isArray(control.value)) {
|
|
63
|
-
return { answerMsAnswerType: true };
|
|
64
|
-
}
|
|
65
|
-
//количество ответов
|
|
66
|
-
const count = control.value.length;
|
|
67
|
-
//проверяем minCount
|
|
68
|
-
if (count < minCount) {
|
|
69
|
-
return { answerMsMinCount: true };
|
|
70
|
-
}
|
|
71
|
-
//проверяем maxCount
|
|
72
|
-
if (maxCount > 0 && count > maxCount) {
|
|
73
|
-
return { answerMsMaxCount: true };
|
|
74
|
-
}
|
|
75
|
-
//ошибок нет, всё корректно
|
|
76
|
-
return null;
|
|
77
|
-
};
|
|
78
|
-
export const answerSlValidator = (required, minAnswersCount, sectionList) => (control) => {
|
|
79
|
-
//если ответы для каждой секции необязательны, ничего не проверяем и выходим.
|
|
80
|
-
if (!required) {
|
|
81
|
-
return null;
|
|
82
|
-
}
|
|
83
|
-
if (!control.value) {
|
|
84
|
-
return { answerMissing: true };
|
|
85
|
-
}
|
|
86
|
-
//если хоть 1 сессия не имеет значения(или количество выбранных альтернатив меньше minAnswersCount), тогда ответ на вопрос не полный.
|
|
87
|
-
const hasMissingAnswers = sectionList.some(section => {
|
|
88
|
-
const sectionAnswers = control.value[section.SectionGuid.toString()];
|
|
89
|
-
if (!sectionAnswers) {
|
|
90
|
-
return true;
|
|
91
|
-
}
|
|
92
|
-
else {
|
|
93
|
-
return Array.isArray(sectionAnswers) ? sectionAnswers.length === 0 || (minAnswersCount > 1 && sectionAnswers.length < minAnswersCount) : sectionAnswers === 0;
|
|
94
|
-
}
|
|
95
|
-
});
|
|
96
|
-
if (hasMissingAnswers) {
|
|
97
|
-
return { answerMissing: true };
|
|
98
|
-
}
|
|
99
|
-
//ошибок нет, всё корректно
|
|
100
|
-
return null;
|
|
101
|
-
};
|
|
102
|
-
export const additionalAnswerDefaultValidator = (required) => {
|
|
103
|
-
return (control) => {
|
|
104
|
-
if ((control.value === null || (typeof control.value === 'string' && control.value.trim().length === 0)) && required) {
|
|
105
|
-
return { additionalAnswerRequired: true };
|
|
106
|
-
}
|
|
107
|
-
//ошибок нет, всё корректно
|
|
108
|
-
return null;
|
|
109
|
-
};
|
|
110
|
-
};
|
|
111
|
-
export const additionalAnswerNumberValidator = (required, minValue, maxValue) => (control) => {
|
|
112
|
-
//ответ не обязательный, можно не контролировать
|
|
113
|
-
if (!required) {
|
|
114
|
-
return null;
|
|
115
|
-
}
|
|
116
|
-
//ответ не число, такого быть не может, это ошибка
|
|
117
|
-
if (!Number.isSafeInteger(control.value)) {
|
|
118
|
-
return { additionalAnswerType: true };
|
|
119
|
-
}
|
|
120
|
-
//Нужно проверить 2 ситуации.
|
|
121
|
-
//1 В настройках вопроса указали minValue, тогда введённое число должно быть больше minValue.
|
|
122
|
-
//2 В настройках вопроса указали maxValue, тогда введённое число должно быть меньше maxValue.
|
|
123
|
-
//Если эти условия не выполняются, то это ошибка.
|
|
124
|
-
if ((Number.isSafeInteger(minValue) && control.value < minValue) || (Number.isSafeInteger(maxValue) && control.value > maxValue)) {
|
|
125
|
-
return { answerOdAnswerError: true };
|
|
126
|
-
}
|
|
127
|
-
//ошибок нет, всё корректно
|
|
128
|
-
return null;
|
|
129
|
-
};
|
|
130
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFpbmVyLmFuc3dlci52YWxpZGF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cC5zdXJ2ZXkvc3JjL2xpYi9jb21wb25lbnQvYW5zd2VyL2NvbnRhaW5lci5hbnN3ZXIvY29udGFpbmVyLmFuc3dlci52YWxpZGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBR3ZELE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLEdBQWdCLEVBQUU7SUFDdEQsT0FBTyxDQUFDLE9BQXdCLEVBQWlDLEVBQUU7UUFDakUsa0RBQWtEO1FBQ2xELElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssS0FBSyxhQUFhLENBQUMsRUFBRyxDQUFDO1lBQ25FLE9BQU8sRUFBQyxjQUFjLEVBQUUsSUFBSSxFQUFDLENBQUE7UUFDL0IsQ0FBQztRQUVELDJCQUEyQjtRQUMzQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUMsQ0FBQztBQUNKLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLENBQUMsUUFBdUIsRUFBRSxRQUF1QixFQUFlLEVBQUUsQ0FBQyxDQUFDLE9BQXdCLEVBQStCLEVBQUU7SUFDNUosa0RBQWtEO0lBQ2xELElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3pDLE9BQU8sRUFBQyxrQkFBa0IsRUFBRSxJQUFJLEVBQUMsQ0FBQTtJQUNuQyxDQUFDO0lBQ0QsNkJBQTZCO0lBQzdCLDZGQUE2RjtJQUM3Riw2RkFBNkY7SUFDN0YsaURBQWlEO0lBQ2pELElBQUssQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxLQUFL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LG1CQUFtQixFQUFFLElBQUksRUFBQyxDQUFBO0lBQ3BDLENBQUM7SUFFRCwyQkFBMkI7SUFDM0IsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0Fic3RyYWN0Q29udHJvbCwgVmFsaWRhdG9yRm59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHtNSVNTSU5HX1ZBTFVFfSBmcm9tICcuLi8uLi8uLi90cC5zdXJ2ZXkuY29uc3QnO1xyXG5pbXBvcnQge0lkYlNlY3Rpb259IGZyb20gJy4uLy4uLy4uL3RwLnN1cnZleS5pbnRlcmZhY2UnO1xyXG5cclxuZXhwb3J0IGNvbnN0IGFuc3dlckRlZmF1bHRWYWxpZGF0b3IgPSAoKTogVmFsaWRhdG9yRm4gPT4ge1xyXG4gIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB8IG51bGwgPT4ge1xyXG4gICAgLy/QvtGC0LLQtdGCINC90LUg0YfQuNGB0LvQviwg0YLQsNC60L7Qs9C+INCx0YvRgtGMINC90LUg0LzQvtC20LXRgiwg0Y3RgtC+INC+0YjQuNCx0LrQsFxyXG4gICAgaWYgKChjb250cm9sLnZhbHVlID09PSBudWxsKSB8fCAoY29udHJvbC52YWx1ZSA9PT0gTUlTU0lOR19WQUxVRSkgKSB7XHJcbiAgICAgIHJldHVybiB7YW5zd2VyUmVxdWlyZWQ6IHRydWV9XHJcbiAgICB9XHJcblxyXG4gICAgLy/QvtGI0LjQsdC+0Log0L3QtdGCLCDQstGB0ZEg0LrQvtGA0YDQtdC60YLQvdC+XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9O1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGFuc3dlck9EVmFsaWRhdG9yID0gKG1pblZhbHVlOiBudW1iZXIgfCBudWxsLCBtYXhWYWx1ZTogbnVtYmVyIHwgbnVsbCk6IFZhbGlkYXRvckZuID0+IChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiB7W2tleTogc3RyaW5nXTogYW55fSB8IG51bGwgPT4ge1xyXG4gIC8v0L7RgtCy0LXRgiDQvdC1INGH0LjRgdC70L4sINGC0LDQutC+0LPQviDQsdGL0YLRjCDQvdC1INC80L7QttC10YIsINGN0YLQviDQvtGI0LjQsdC60LBcclxuICBpZiAoIU51bWJlci5pc1NhZmVJbnRlZ2VyKGNvbnRyb2wudmFsdWUpKSB7XHJcbiAgICByZXR1cm4ge2Fuc3dlck9kQW5zd2VyVHlwZTogdHJ1ZX1cclxuICB9XHJcbiAgLy/QndGD0LbQvdC+INC/0YDQvtCy0LXRgNC40YLRjCAyINGB0LjRgtGD0LDRhtC40LguXHJcbiAgLy8xINCSINC90LDRgdGC0YDQvtC50LrQsNGFINCy0L7Qv9GA0L7RgdCwINGD0LrQsNC30LDQu9C4IG1pblZhbHVlLCDRgtC+0LPQtNCwINCy0LLQtdC00ZHQvdC90L7QtSDRh9C40YHQu9C+INC00L7Qu9C20L3QviDQsdGL0YLRjCDQsdC+0LvRjNGI0LUgbWluVmFsdWUuXHJcbiAgLy8yINCSINC90LDRgdGC0YDQvtC50LrQsNGFINCy0L7Qv9GA0L7RgdCwINGD0LrQsNC30LDQu9C4IG1heFZhbHVlLCDRgtC+0LPQtNCwINCy0LLQtdC00ZHQvdC90L7QtSDRh9C40YHQu9C+INC00L7Qu9C20L3QviDQsdGL0YLRjCDQvNC10L3RjNGI0LUgbWF4VmFsdWUuXHJcbiAgLy/QldGB0LvQuCDRjdGC0Lgg0YPRgdC70L7QstC40Y8g0L3QtSDQstGL0L/QvtC70L3Rj9GO0YLRgdGPLCDRgtC+INGN0YLQviDQvtGI0LjQsdC60LAuXHJcbiAgaWYgKCAoTnVtYmVyLmlzU2FmZUludGVnZXIobWluVmFsdWUpICYmIGNvbnRyb2wudmFsdWUgPCBtaW5WYWx1ZSEpIHx8IChOdW1iZXIuaXNTYWZlSW50ZWdlcihtYXhWYWx1ZSkgJiYgKG1heFZhbHVlID8/IDAgPiAwKSAmJiBjb250cm9sLnZhbHVlID4gbWF4VmFsdWUhKSApICB7XHJcbiAgICByZXR1cm4ge2Fuc3dlck9kQW5zd2VyRXJyb3I6IHRydWV9XHJcbiAgfVxyXG5cclxuICAvL9C+0YjQuNCx0L7QuiDQvdC10YIsINCy0YHRkSDQutC+0YDRgNC10LrRgtC90L5cclxuICByZXR1cm4gbnVsbDtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBhbnN3ZXJPTFZhbGlkYXRvciA9IChpc1Bob25lTnVtYmVyOiBib29sZWFuKTogVmFsaWRhdG9yRm4gPT4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IHtba2V5OiBzdHJpbmddOiBhbnl9IHwgbnVsbCA9PiB7XHJcbiAgY29uc3QgdGV4dCA9IHR5cGVvZiBjb250cm9sLnZhbHVlICE9PSAnc3RyaW5nJyA/ICcnIDogY29udHJvbC52YWx1ZS50cmltKCk7XHJcbiAgLy/QndGD0LbQvdC+INGH0YLQvtCx0Ysg0LIg0L/QvtC70LUg0LLQstC10LvQuCDRhdC+0YLRjCDRh9GC0L4t0YLQvi5cclxuICBpZiAoIHRleHQubGVuZ3RoID09PSAwICkgIHtcclxuICAgIHJldHVybiB7YW5zd2VyT2xBbnN3ZXJFcnJvcjogdHJ1ZX1cclxuICB9XHJcblxyXG4gIGlmIChpc1Bob25lTnVtYmVyKSB7XHJcbiAgICBjb25zdCByZXMgPSB0ZXh0Lmxlbmd0aCA9PT0gOSAmJiAhaXNOYU4oTnVtYmVyKHRleHQpKTtcclxuICAgIGlmICghcmVzKSB7XHJcbiAgICAgIHJldHVybiB7YW5zd2VyT2xUZWxlcGhvbmVGb3JtYXRFcnJvcjogdHJ1ZX1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8v0L7RiNC40LHQvtC6INC90LXRgiwg0LLRgdGRINC60L7RgNGA0LXQutGC0L3QvlxyXG4gIHJldHVybiBudWxsO1xyXG59O1xyXG5cclxuXHJcbmV4cG9ydCBjb25zdCBhbnN3ZXJTU1ZhbGlkYXRvciA9ICgpOiBWYWxpZGF0b3JGbiA9PiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKToge1trZXk6IHN0cmluZ106IGFueX0gfCBudWxsID0+IHtcclxuICAvL9C+0YLQstC10YIg0L3QtSDRh9C40YHQu9C+LCDRgtCw0LrQvtCz0L4g0LHRi9GC0Ywg0L3QtSDQvNC+0LbQtdGCLCDRjdGC0L4g0L7RiNC40LHQutCwXHJcbiAgaWYgKCFOdW1iZXIuaXNTYWZlSW50ZWdlcihjb250cm9sLnZhbHVlKSkge1xyXG4gICAgcmV0dXJuIHthbnN3ZXJTc0Fuc3dlclR5cGU6IHRydWV9XHJcbiAgfVxyXG5cclxuICAvL9C90LXRgiDQvtGC0LLQtdGC0LBcclxuICBpZiAoY29udHJvbC52YWx1ZSA8IDApIHtcclxuICAgIHJldHVybiB7YW5zd2VyTWlzc2luZzogdHJ1ZX1cclxuICB9XHJcblxyXG4gIC8v0L7RiNC40LHQvtC6INC90LXRgiwg0LLRgdGRINC60L7RgNGA0LXQutGC0L3QvlxyXG4gIHJldHVybiBudWxsO1xyXG59O1xyXG5cclxuXHJcbmV4cG9ydCBjb25zdCBhbnN3ZXJNU1ZhbGlkYXRvciA9ICh2aXNpYmxlQWx0ZXJuYXRpdmVDb3VudDogbnVtYmVyLCBtaW5Db3VudDogbnVtYmVyID0gMSwgbWF4Q291bnQ6IG51bWJlciA9IDApOiBWYWxpZGF0b3JGbiA9PiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKToge1trZXk6IHN0cmluZ106IGFueX0gfCBudWxsID0+IHtcclxuICAvL3Zpc2libGVBbHRlcm5hdGl2ZUNvdW50IC0g0LrQvtC70LjRh9C10YHRgtCy0L4g0LDQu9GM0YLQtdGA0L3QsNGC0LjQsiDQvdCwINGN0LrRgNCw0L3QtSwg0LXRgdC70LggMCwg0YLQviDRgdC80YvRgdC70LAg0L/QvtC60LDQt9GL0LLQsNGC0Ywg0LLQvtC/0YDQvtGBINC90LXRglxyXG4gIC8vbWluQ291bnQgLSDQnNC40L3QuNC80LDQu9GM0L3QvtC1INC60L7Qu9C40YfQtdGB0YLQstC+INC+0YLQstC10YLQvtCyLCDQutC+0YLQvtGA0L7QtSDQvNC+0LbQtdGCINCy0YvQsdGA0LDRgtGMINGA0LXRgdC/0L7QvdC00LXQvdGCLCDQv9C+INGD0LzQvtC70YfQsNC90LjRjiAxLlxyXG4gIC8vbWF4Q291bnQgLSDQnNCw0LrRgdC40LzQsNC70YzQvdC+0LUg0LrQvtC70LjRh9C10YHRgtCy0L4g0L7RgtCy0LXRgtC+0LIsINC60L7RgtC+0YDRi9C1INC80L7QttC10YIg0LLRi9Cx0YDQsNGC0Ywg0YDQtdGB0L/QvtC90LTQtdC90YIuINCV0YHQu9C4INGD0LrQsNC30LDQvdC+IDAsINC60L7Qu9C40YfQtdGB0YLQstC+INC90LUg0L7Qs9GA0LDQvdC40YfQtdC90L4uINCf0L4g0YPQvNC+0LvRh9Cw0L3QuNGOIDBcclxuXHJcbiAgaWYgKHZpc2libGVBbHRlcm5hdGl2ZUNvdW50ID09PSAwKSB7XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIC8v0L7RgtCy0LXRgiDQvdC1INC80LDRgdGB0LjQsiwg0YLQsNC60L7Qs9C+INCx0YvRgtGMINC90LUg0LzQvtC20LXRgiwg0Y3RgtC+INC+0YjQuNCx0LrQsFxyXG4gIGlmICghQXJyYXkuaXNBcnJheShjb250cm9sLnZhbHVlKSkge1xyXG4gICAgcmV0dXJuIHthbnN3ZXJNc0Fuc3dlclR5cGU6IHRydWV9XHJcbiAgfVxyXG5cclxuICAvL9C60L7Qu9C40YfQtdGB0YLQstC+INC+0YLQstC10YLQvtCyXHJcbiAgY29uc3QgY291bnQgPSBjb250cm9sLnZhbHVlLmxlbmd0aDtcclxuXHJcbiAgLy/Qv9GA0L7QstC10YDRj9C10LwgbWluQ291bnRcclxuICBpZiAoY291bnQgPCBtaW5Db3VudCkge1xyXG4gICAgcmV0dXJuIHthbnN3ZXJNc01pbkNvdW50OiB0cnVlfVxyXG4gIH1cclxuXHJcbiAgLy/Qv9GA0L7QstC10YDRj9C10LwgbWF4Q291bnRcclxuICBpZiAobWF4Q291bnQgPiAwICYmIGNvdW50ID4gbWF4Q291bnQpIHtcclxuICAgIHJldHVybiB7YW5zd2VyTXNNYXhDb3VudDogdHJ1ZX1cclxuICB9XHJcblxyXG4gIC8v0L7RiNC40LHQvtC6INC90LXRgiwg0LLRgdGRINC60L7RgNGA0LXQutGC0L3QvlxyXG4gIHJldHVybiBudWxsO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGFuc3dlclNsVmFsaWRhdG9yID0gKHJlcXVpcmVkOiBib29sZWFuLCBtaW5BbnN3ZXJzQ291bnQ6IG51bWJlciwgc2VjdGlvbkxpc3Q6IEFycmF5PElkYlNlY3Rpb24+KTogVmFsaWRhdG9yRm4gPT4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IHtba2V5OiBzdHJpbmddOiBhbnl9IHwgbnVsbCA9PiB7XHJcbiAgLy/QtdGB0LvQuCDQvtGC0LLQtdGC0Ysg0LTQu9GPINC60LDQttC00L7QuSDRgdC10LrRhtC40Lgg0L3QtdC+0LHRj9C30LDRgtC10LvRjNC90YssINC90LjRh9C10LPQviDQvdC1INC/0YDQvtCy0LXRgNGP0LXQvCDQuCDQstGL0YXQvtC00LjQvC5cclxuICBpZiAoIXJlcXVpcmVkKSB7XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcbiAgaWYgKCFjb250cm9sLnZhbHVlKSB7XHJcbiAgICByZXR1cm4ge2Fuc3dlck1pc3Npbmc6IHRydWV9O1xyXG4gIH1cclxuXHJcbiAgLy/QtdGB0LvQuCDRhdC+0YLRjCAxINGB0LXRgdGB0LjRjyDQvdC1INC40LzQtdC10YIg0LfQvdCw0YfQtdC90LjRjyjQuNC70Lgg0LrQvtC70LjRh9C10YHRgtCy0L4g0LLRi9Cx0YDQsNC90L3Ri9GFINCw0LvRjNGC0LXRgNC90LDRgtC40LIg0LzQtdC90YzRiNC1IG1pbkFuc3dlcnNDb3VudCksINGC0L7Qs9C00LAg0L7RgtCy0LXRgiDQvdCwINCy0L7Qv9GA0L7RgSDQvdC1INC/0L7Qu9C90YvQuS5cclxuICBjb25zdCBoYXNNaXNzaW5nQW5zd2VycyA9IHNlY3Rpb25MaXN0LnNvbWUoc2VjdGlvbiA9PiB7XHJcbiAgICBjb25zdCBzZWN0aW9uQW5zd2VycyA9IGNvbnRyb2wudmFsdWVbc2VjdGlvbi5TZWN0aW9uR3VpZC50b1N0cmluZygpXTtcclxuICAgIGlmICghc2VjdGlvbkFuc3dlcnMpIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9IGVsc2V7XHJcbiAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KHNlY3Rpb25BbnN3ZXJzKSA/IHNlY3Rpb25BbnN3ZXJzLmxlbmd0aCA9PT0gMCB8fCAobWluQW5zd2Vyc0NvdW50ID4gMSAmJiBzZWN0aW9uQW5zd2Vycy5sZW5ndGggPCBtaW5BbnN3ZXJzQ291bnQpIDogc2VjdGlvbkFuc3dlcnMgPT09IDA7XHJcbiAgICB9XHJcbiAgfSk7XHJcbiAgaWYgKGhhc01pc3NpbmdBbnN3ZXJzKSB7XHJcbiAgICByZXR1cm4ge2Fuc3dlck1pc3Npbmc6IHRydWV9O1xyXG4gIH1cclxuXHJcbiAgLy/QvtGI0LjQsdC+0Log0L3QtdGCLCDQstGB0ZEg0LrQvtGA0YDQtdC60YLQvdC+XHJcbiAgcmV0dXJuIG51bGw7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgYWRkaXRpb25hbEFuc3dlckRlZmF1bHRWYWxpZGF0b3IgPSAocmVxdWlyZWQ6IGJvb2xlYW4pOiBWYWxpZGF0b3JGbiA9PiB7XHJcbiAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiB7IFtrZXk6IHN0cmluZ106IGFueSB9IHwgbnVsbCA9PiB7XHJcbiAgICBpZiAoICAoY29udHJvbC52YWx1ZSA9PT0gbnVsbCB8fCAodHlwZW9mIGNvbnRyb2wudmFsdWUgPT09ICdzdHJpbmcnICYmIGNvbnRyb2wudmFsdWUudHJpbSgpLmxlbmd0aCA9PT0gMCkpICYmIHJlcXVpcmVkKSB7XHJcbiAgICAgIHJldHVybiB7IGFkZGl0aW9uYWxBbnN3ZXJSZXF1aXJlZDogdHJ1ZX1cclxuICAgIH1cclxuICAgIC8v0L7RiNC40LHQvtC6INC90LXRgiwg0LLRgdGRINC60L7RgNGA0LXQutGC0L3QvlxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfTtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBhZGRpdGlvbmFsQW5zd2VyTnVtYmVyVmFsaWRhdG9yID0gKHJlcXVpcmVkOiBib29sZWFuLCBtaW5WYWx1ZTogbnVtYmVyIHwgbnVsbCwgbWF4VmFsdWU6IG51bWJlciB8IG51bGwpOiBWYWxpZGF0b3JGbiA9PiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKToge1trZXk6IHN0cmluZ106IGFueX0gfCBudWxsID0+IHtcclxuICAvL9C+0YLQstC10YIg0L3QtSDQvtCx0Y/Qt9Cw0YLQtdC70YzQvdGL0LksINC80L7QttC90L4g0L3QtSDQutC+0L3RgtGA0L7Qu9C40YDQvtCy0LDRgtGMXHJcbiAgaWYgKCFyZXF1aXJlZCkge1xyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICAvL9C+0YLQstC10YIg0L3QtSDRh9C40YHQu9C+LCDRgtCw0LrQvtCz0L4g0LHRi9GC0Ywg0L3QtSDQvNC+0LbQtdGCLCDRjdGC0L4g0L7RiNC40LHQutCwXHJcbiAgaWYgKCFOdW1iZXIuaXNTYWZlSW50ZWdlcihjb250cm9sLnZhbHVlKSkge1xyXG4gICAgcmV0dXJuIHthZGRpdGlvbmFsQW5zd2VyVHlwZTogdHJ1ZX1cclxuICB9XHJcblxyXG4gIC8v0J3Rg9C20L3QviDQv9GA0L7QstC10YDQuNGC0YwgMiDRgdC40YLRg9Cw0YbQuNC4LlxyXG4gIC8vMSDQkiDQvdCw0YHRgtGA0L7QudC60LDRhSDQstC+0L/RgNC+0YHQsCDRg9C60LDQt9Cw0LvQuCBtaW5WYWx1ZSwg0YLQvtCz0LTQsCDQstCy0LXQtNGR0L3QvdC+0LUg0YfQuNGB0LvQviDQtNC+0LvQttC90L4g0LHRi9GC0Ywg0LHQvtC70YzRiNC1IG1pblZhbHVlLlxyXG4gIC8vMiDQkiDQvdCw0YHRgtGA0L7QudC60LDRhSDQstC+0L/RgNC+0YHQsCDRg9C60LDQt9Cw0LvQuCBtYXhWYWx1ZSwg0YLQvtCz0LTQsCDQstCy0LXQtNGR0L3QvdC+0LUg0YfQuNGB0LvQviDQtNC+0LvQttC90L4g0LHRi9GC0Ywg0LzQtdC90YzRiNC1IG1heFZhbHVlLlxyXG4gIC8v0JXRgdC70Lgg0Y3RgtC4INGD0YHQu9C+0LLQuNGPINC90LUg0LLRi9C/0L7Qu9C90Y/RjtGC0YHRjywg0YLQviDRjdGC0L4g0L7RiNC40LHQutCwLlxyXG4gIGlmICggKE51bWJlci5pc1NhZmVJbnRlZ2VyKG1pblZhbHVlKSAmJiBjb250cm9sLnZhbHVlIDwgbWluVmFsdWUhKSB8fCAoTnVtYmVyLmlzU2FmZUludGVnZXIobWF4VmFsdWUpICYmIGNvbnRyb2wudmFsdWUgPiBtYXhWYWx1ZSEpICkgIHtcclxuICAgIHJldHVybiB7YW5zd2VyT2RBbnN3ZXJFcnJvcjogdHJ1ZX1cclxuICB9XHJcblxyXG4gIC8v0L7RiNC40LHQvtC6INC90LXRgiwg0LLRgdGRINC60L7RgNGA0LXQutGC0L3QvlxyXG4gIHJldHVybiBudWxsO1xyXG59O1xyXG4iXX0=
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';
|
|
2
|
-
import { MatButton } from '@angular/material/button';
|
|
3
|
-
import { MatIcon } from '@angular/material/icon';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
export class NavigationButtonComponent {
|
|
6
|
-
constructor() {
|
|
7
|
-
this.direction = input.required();
|
|
8
|
-
this.caption = input();
|
|
9
|
-
this.onClick = output();
|
|
10
|
-
}
|
|
11
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: NavigationButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
12
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.1", type: NavigationButtonComponent, isStandalone: true, selector: "tp-survey-navigation-button", inputs: { direction: { classPropertyName: "direction", publicName: "direction", isSignal: true, isRequired: true, transformFunction: null }, caption: { classPropertyName: "caption", publicName: "caption", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onClick: "onClick" }, ngImport: i0, template: "<button mat-flat-button (click)=\"onClick.emit(direction())\" class=\"navigation-button\">\r\n @if (direction() === 'back') {\r\n <mat-icon svgIcon=\"iconButtonBack\" aria-hidden=\"false\" class=\"navigation-button-icon\"/>\r\n }\r\n\r\n <span class=\"navigation-button-label\">{{ caption() }}</span>\r\n\r\n @if (direction() === 'next') {\r\n <mat-icon iconPositionEnd svgIcon=\"iconButtonNext\" aria-hidden=\"false\" class=\"navigation-button-icon\"/>\r\n }\r\n</button>\r\n\r\n", styles: ["mat-icon.navigation-button-icon{width:46px;height:46px}.navigation-button{width:130px}\n"], dependencies: [{ kind: "component", type: MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
13
|
-
}
|
|
14
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: NavigationButtonComponent, decorators: [{
|
|
15
|
-
type: Component,
|
|
16
|
-
args: [{ selector: 'tp-survey-navigation-button', standalone: true, imports: [
|
|
17
|
-
MatButton,
|
|
18
|
-
MatIcon
|
|
19
|
-
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<button mat-flat-button (click)=\"onClick.emit(direction())\" class=\"navigation-button\">\r\n @if (direction() === 'back') {\r\n <mat-icon svgIcon=\"iconButtonBack\" aria-hidden=\"false\" class=\"navigation-button-icon\"/>\r\n }\r\n\r\n <span class=\"navigation-button-label\">{{ caption() }}</span>\r\n\r\n @if (direction() === 'next') {\r\n <mat-icon iconPositionEnd svgIcon=\"iconButtonNext\" aria-hidden=\"false\" class=\"navigation-button-icon\"/>\r\n }\r\n</button>\r\n\r\n", styles: ["mat-icon.navigation-button-icon{width:46px;height:46px}.navigation-button{width:130px}\n"] }]
|
|
20
|
-
}] });
|
|
21
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdGlvbi5idXR0b24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHAuc3VydmV5L3NyYy9saWIvY29tcG9uZW50L25hdmlnYXRpb24uYnV0dG9uL25hdmlnYXRpb24uYnV0dG9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RwLnN1cnZleS9zcmMvbGliL2NvbXBvbmVudC9uYXZpZ2F0aW9uLmJ1dHRvbi9uYXZpZ2F0aW9uLmJ1dHRvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDaEYsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ25ELE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQzs7QUFjL0MsTUFBTSxPQUFPLHlCQUF5QjtJQVh0QztRQVlFLGNBQVMsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUE2QixDQUFBO1FBQ3ZELFlBQU8sR0FBRyxLQUFLLEVBQVUsQ0FBQztRQUMxQixZQUFPLEdBQUcsTUFBTSxFQUE2QixDQUFBO0tBQzlDOzhHQUpZLHlCQUF5QjtrR0FBekIseUJBQXlCLHFZQ2hCdEMsb2VBWUEsa0pESEksU0FBUyxpTEFDVCxPQUFPOzsyRkFNRSx5QkFBeUI7a0JBWHJDLFNBQVM7K0JBQ0UsNkJBQTZCLGNBQzNCLElBQUksV0FDUDt3QkFDUCxTQUFTO3dCQUNULE9BQU87cUJBQ1IsbUJBR2dCLHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGlucHV0LCBvdXRwdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge01hdEJ1dHRvbn0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcclxuaW1wb3J0IHtNYXRJY29ufSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcclxuaW1wb3J0IHtOYXZpZ2F0aW9uQnV0dG9uRGlyZWN0aW9ufSBmcm9tICcuLi8uLi90cC5zdXJ2ZXkudHlwZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3RwLXN1cnZleS1uYXZpZ2F0aW9uLWJ1dHRvbicsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBNYXRCdXR0b24sXHJcbiAgICBNYXRJY29uXHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vbmF2aWdhdGlvbi5idXR0b24uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9uYXZpZ2F0aW9uLmJ1dHRvbi5jb21wb25lbnQuc2NzcycsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcclxufSlcclxuZXhwb3J0IGNsYXNzIE5hdmlnYXRpb25CdXR0b25Db21wb25lbnQge1xyXG4gIGRpcmVjdGlvbiA9IGlucHV0LnJlcXVpcmVkPE5hdmlnYXRpb25CdXR0b25EaXJlY3Rpb24+KClcclxuICBjYXB0aW9uID0gaW5wdXQ8c3RyaW5nPigpO1xyXG4gIG9uQ2xpY2sgPSBvdXRwdXQ8TmF2aWdhdGlvbkJ1dHRvbkRpcmVjdGlvbj4oKVxyXG59XHJcblxyXG4iLCI8YnV0dG9uIG1hdC1mbGF0LWJ1dHRvbiAoY2xpY2spPVwib25DbGljay5lbWl0KGRpcmVjdGlvbigpKVwiIGNsYXNzPVwibmF2aWdhdGlvbi1idXR0b25cIj5cclxuIEBpZiAoZGlyZWN0aW9uKCkgPT09ICdiYWNrJykge1xyXG4gIDxtYXQtaWNvbiBzdmdJY29uPVwiaWNvbkJ1dHRvbkJhY2tcIiBhcmlhLWhpZGRlbj1cImZhbHNlXCIgY2xhc3M9XCJuYXZpZ2F0aW9uLWJ1dHRvbi1pY29uXCIvPlxyXG4gfVxyXG5cclxuIDxzcGFuIGNsYXNzPVwibmF2aWdhdGlvbi1idXR0b24tbGFiZWxcIj57eyBjYXB0aW9uKCkgfX08L3NwYW4+XHJcblxyXG4gQGlmIChkaXJlY3Rpb24oKSA9PT0gJ25leHQnKSB7XHJcbiAgPG1hdC1pY29uIGljb25Qb3NpdGlvbkVuZCBzdmdJY29uPVwiaWNvbkJ1dHRvbk5leHRcIiBhcmlhLWhpZGRlbj1cImZhbHNlXCIgY2xhc3M9XCJuYXZpZ2F0aW9uLWJ1dHRvbi1pY29uXCIvPlxyXG4gfVxyXG48L2J1dHRvbj5cclxuXHJcbiJdfQ==
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, input } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
export class QuestionCaptionComponent {
|
|
4
|
-
constructor() {
|
|
5
|
-
this.caption = input();
|
|
6
|
-
this.captionHelp = input();
|
|
7
|
-
}
|
|
8
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: QuestionCaptionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
9
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.0.1", type: QuestionCaptionComponent, isStandalone: true, selector: "tp-survey-question-caption", inputs: { caption: { classPropertyName: "caption", publicName: "caption", isSignal: true, isRequired: false, transformFunction: null }, captionHelp: { classPropertyName: "captionHelp", publicName: "captionHelp", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div class=\"container-main\">\r\n <div [innerHTML]= \"caption()\" class=\"question-caption-font survey-object-caption\"></div>\r\n <div [innerHTML]= \"captionHelp()\" class=\"question-caption-helper-font survey-object-caption\"></div>\r\n</div>\r\n", styles: [".container-main{display:flex;flex-flow:column nowrap;justify-content:center;align-items:center;gap:1em;width:100%;white-space:pre-wrap;line-height:1;box-sizing:border-box;padding:1em}.question-caption-font{font-size:1.2em;line-height:1.2;width:100%;text-align:center}.question-caption-helper-font{font-size:1.1em;font-style:italic;width:100%;text-align:center}:host-context(.tp-view-desktop) .container-main{max-width:896px;margin:0 auto}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
10
|
-
}
|
|
11
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: QuestionCaptionComponent, decorators: [{
|
|
12
|
-
type: Component,
|
|
13
|
-
args: [{ selector: 'tp-survey-question-caption', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, template: "<div class=\"container-main\">\r\n <div [innerHTML]= \"caption()\" class=\"question-caption-font survey-object-caption\"></div>\r\n <div [innerHTML]= \"captionHelp()\" class=\"question-caption-helper-font survey-object-caption\"></div>\r\n</div>\r\n", styles: [".container-main{display:flex;flex-flow:column nowrap;justify-content:center;align-items:center;gap:1em;width:100%;white-space:pre-wrap;line-height:1;box-sizing:border-box;padding:1em}.question-caption-font{font-size:1.2em;line-height:1.2;width:100%;text-align:center}.question-caption-helper-font{font-size:1.1em;font-style:italic;width:100%;text-align:center}:host-context(.tp-view-desktop) .container-main{max-width:896px;margin:0 auto}\n"] }]
|
|
14
|
-
}] });
|
|
15
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlc3Rpb24uY2FwdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cC5zdXJ2ZXkvc3JjL2xpYi9jb21wb25lbnQvcXVlc3Rpb24uY2FwdGlvbi9xdWVzdGlvbi5jYXB0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RwLnN1cnZleS9zcmMvbGliL2NvbXBvbmVudC9xdWVzdGlvbi5jYXB0aW9uL3F1ZXN0aW9uLmNhcHRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUMsTUFBTSxlQUFlLENBQUM7O0FBVXhFLE1BQU0sT0FBTyx3QkFBd0I7SUFQckM7UUFRRSxZQUFPLEdBQUcsS0FBSyxFQUFZLENBQUM7UUFDNUIsZ0JBQVcsR0FBRyxLQUFLLEVBQVksQ0FBQztLQUNqQzs4R0FIWSx3QkFBd0I7a0dBQXhCLHdCQUF3QiwwV0NWckMsMlBBSUE7OzJGRE1hLHdCQUF3QjtrQkFQcEMsU0FBUzsrQkFDRSw0QkFBNEIsbUJBR3JCLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsSUFBSSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgaW5wdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1NhZmVIdG1sfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAndHAtc3VydmV5LXF1ZXN0aW9uLWNhcHRpb24nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9xdWVzdGlvbi5jYXB0aW9uLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9xdWVzdGlvbi5jYXB0aW9uLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFF1ZXN0aW9uQ2FwdGlvbkNvbXBvbmVudCB7XHJcbiAgY2FwdGlvbiA9IGlucHV0PFNhZmVIdG1sPigpO1xyXG4gIGNhcHRpb25IZWxwID0gaW5wdXQ8U2FmZUh0bWw+KCk7XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImNvbnRhaW5lci1tYWluXCI+XHJcbiA8ZGl2IFtpbm5lckhUTUxdPSBcImNhcHRpb24oKVwiIGNsYXNzPVwicXVlc3Rpb24tY2FwdGlvbi1mb250IHN1cnZleS1vYmplY3QtY2FwdGlvblwiPjwvZGl2PlxyXG4gPGRpdiBbaW5uZXJIVE1MXT0gXCJjYXB0aW9uSGVscCgpXCIgY2xhc3M9XCJxdWVzdGlvbi1jYXB0aW9uLWhlbHBlci1mb250IHN1cnZleS1vYmplY3QtY2FwdGlvblwiPjwvZGl2PlxyXG48L2Rpdj5cclxuIl19
|