@touchpoll/tp-survey 0.0.50 → 0.0.52

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.
@@ -4,7 +4,7 @@ import { isPlatformServer, KeyValuePipe, isPlatformBrowser, DOCUMENT, NgTemplate
4
4
  import * as i1 from '@angular/platform-browser';
5
5
  import * as i2 from '@angular/material/icon';
6
6
  import { MatIcon } from '@angular/material/icon';
7
- import { filter, tap, debounceTime, Subject, BehaviorSubject, mergeMap, from, concatMap, of, delay, distinctUntilChanged, merge } from 'rxjs';
7
+ import { filter, tap, debounceTime, Subject, BehaviorSubject, mergeMap, from, concatMap, of, delay, distinctUntilChanged, merge, delayWhen, timer } from 'rxjs';
8
8
  import { map } from 'rxjs/operators';
9
9
  import { takeUntilDestroyed, toSignal, toObservable } from '@angular/core/rxjs-interop';
10
10
  import { MatButton } from '@angular/material/button';
@@ -2481,9 +2481,22 @@ class SurveyPlayComponent {
2481
2481
  * кнопка далее нужно проверять при показе вопроса и при изменении ответа. При показе она может быть доступна сразу(например info).
2482
2482
  * Кнопка доступна если ответ корректно заполнен(questionIsComplete) и это не eqEND вопрос
2483
2483
  * */
2484
- this.nextButtonAvailable = toSignal(merge(this.#core.on(SurveyEvents.seQuestionAnswersChange).pipe(map(data => data.question)), this.#core.on(SurveyEvents.seQuestionShow).pipe(map(data => data))).pipe(
2485
- //вопрос должен быть не eqEND и не eqLANG(для них кнопки далее быть не должно) + вопрос должен быть заполнен или его можно пропустить(указано в настройках)
2486
- map(question => !([QuestionsType.eqEND, QuestionsType.eqLANG].includes(question.QuestionType)) && (this.#core.questionIsComplete(question.QuestionGuid) || question.CanSkip)), delay(1)), { initialValue: false });
2484
+ this.nextButtonAvailable = toSignal(merge(this.#core.on(SurveyEvents.seQuestionAnswersChange).pipe(map(data => data.question)), this.#core.on(SurveyEvents.seQuestionShow).pipe(map(data => data))).pipe(map(question => {
2485
+ //вопрос должен быть не eqEND и не eqLANG(для них кнопки далее быть не должно) + вопрос должен быть заполнен или его можно пропустить(указано в настройках)
2486
+ const isAvailable = !([QuestionsType.eqEND, QuestionsType.eqLANG].includes(question.QuestionType)) && (this.#core.questionIsComplete(question.QuestionGuid) || question.CanSkip);
2487
+ //в настройках вопроса можно указать задержку перед активацией кнопки Далее
2488
+ let delayInSettings = isNaN(Number(question.BtnNextDelaySec)) ? 1 : Number(question.BtnNextDelaySec);
2489
+ //но если isAvailable не равно true(может быть undefined или false) то кнопка "не активируется" сразу
2490
+ if (!(isAvailable === true)) {
2491
+ delayInSettings = 1;
2492
+ }
2493
+ //уберём отрицательные и нулевые значения, если они случайно попали в настройки
2494
+ delayInSettings = Math.max(1, delayInSettings);
2495
+ return {
2496
+ isAvailable,
2497
+ delay: delayInSettings
2498
+ };
2499
+ }), delayWhen(params => timer(params.delay)), map(res => res.isAvailable)), { initialValue: false });
2487
2500
  //кнопку Назад можно показывать если в настройках указали ShowBtnBack и это не eqEND вопрос
2488
2501
  this.backButtonAvailable = toSignal(this.#core.on(SurveyEvents.seQuestionShow).pipe(filter(question => !!question), map((question) => question.QuestionNum > 1 && question.ShowBtnBack && question.QuestionType !== QuestionsType.eqEND && question.QuestionType !== QuestionsType.eqLANG), delay(1)));
2489
2502
  this.#core.on(SurveyEvents.seSurveyEnd).pipe(takeUntilDestroyed(this.#destroyRef)).subscribe({
@@ -2638,5 +2651,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.7", ngImpor
2638
2651
  * Generated bundle index. Do not edit.
2639
2652
  */
2640
2653
 
2641
- export { AdditionalAnswerType, BASE_HEIGHT, BASE_WIDTH, LOGIC_FUNC_TEXT, MISSING_VALUE, QuestionsType, ResultativeStatus, SurveyEvents, SurveyPlayComponent, SurveyQuestionPreviewComponent, TP_SURVEY_CONFIGURATION, TpSurveyModule, VIDEO_EXTENSION_LIST, ValidStatus, ViewModel, executeLogicExpression };
2654
+ export { AdditionalAnswerType, Answer, BASE_HEIGHT, BASE_WIDTH, LOGIC_FUNC_TEXT, MISSING_VALUE, QuestionsType, ResultativeStatus, SurveyEvents, SurveyPlayComponent, SurveyQuestionPreviewComponent, TP_SURVEY_CONFIGURATION, TpSurveyModule, VIDEO_EXTENSION_LIST, ValidStatus, ViewModel, executeLogicExpression };
2642
2655
  //# sourceMappingURL=touchpoll-tp-survey.mjs.map