@snabcentr/client-ui 0.17.4 → 0.19.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (23) hide show
  1. package/auth/sc-sign-in-form/sc-sign-in-form-by-email/sc-sign-in-form-by-email.component.d.ts +4 -8
  2. package/auth/sc-sign-in-form/sc-sign-in-form-by-phone/sc-sign-in-form-by-phone.component.d.ts +3 -8
  3. package/auth/sc-sign-in-form/sc-sign-in-form.component.d.ts +8 -4
  4. package/catalog/price-history/sc-price-history.component.d.ts +44 -43
  5. package/catalog/sc-catalog.module.d.ts +3 -3
  6. package/esm2020/auth/sc-sign-in-form/sc-sign-in-form-by-email/sc-sign-in-form-by-email.component.mjs +4 -16
  7. package/esm2020/auth/sc-sign-in-form/sc-sign-in-form-by-phone/sc-sign-in-form-by-phone.component.mjs +4 -16
  8. package/esm2020/auth/sc-sign-in-form/sc-sign-in-form.component.mjs +24 -6
  9. package/esm2020/banner/sc-banner.component.mjs +4 -2
  10. package/esm2020/catalog/price-history/sc-price-history.component.mjs +85 -79
  11. package/esm2020/catalog/sc-catalog.module.mjs +12 -15
  12. package/fesm2015/snabcentr-client-ui.mjs +125 -321
  13. package/fesm2015/snabcentr-client-ui.mjs.map +1 -1
  14. package/fesm2020/snabcentr-client-ui.mjs +123 -320
  15. package/fesm2020/snabcentr-client-ui.mjs.map +1 -1
  16. package/package.json +3 -5
  17. package/styles/tailwind/tailwind.scss +0 -24
  18. package/catalog/price-history/sc-chart-option.d.ts +0 -7
  19. package/catalog/price-history/sc-i-chart-data-item.d.ts +0 -13
  20. package/catalog/price-history/sc-lang-ru.d.ts +0 -115
  21. package/esm2020/catalog/price-history/sc-chart-option.mjs +0 -79
  22. package/esm2020/catalog/price-history/sc-i-chart-data-item.mjs +0 -2
  23. package/esm2020/catalog/price-history/sc-lang-ru.mjs +0 -115
@@ -1,17 +1,17 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { EventEmitter, Component, ChangeDetectionStrategy, Inject, Input, Output, NgModule, Directive, HostBinding, ContentChild, ViewChild, Injectable, ElementRef, ContentChildren, HostListener, ChangeDetectorRef, Optional, Self, inject, InjectionToken, SkipSelf, forwardRef } from '@angular/core';
3
- import * as i10 from 'rxjs';
4
- import { Subject, filter, map, switchMap, tap, catchError, of, finalize, startWith, share, timer, scan, takeWhile, endWith, distinctUntilChanged, shareReplay, interval, takeUntil, skip, debounceTime, merge, throwError, combineLatest } from 'rxjs';
5
3
  import * as i1 from '@snabcentr/client-core';
6
4
  import { ScUserMetrikaGoalsEnum, SC_URLS, SC_PATH_IMAGE_NOT_FOUND, SEARCH_TERM, SEARCH_TERM_PROVIDERS, ScCatalogService, ScCartService, ScAuthService, ScISuggestionType, ScOpfList, ScIconTypesEnum, ScUserService } from '@snabcentr/client-core';
5
+ import * as i10 from 'rxjs';
6
+ import { Subject, filter, map, switchMap, tap, catchError, of, finalize, startWith, share, timer, scan, takeWhile, endWith, distinctUntilChanged, shareReplay, interval, takeUntil, skip, debounceTime, merge, throwError, combineLatest } from 'rxjs';
7
7
  import * as i2 from '@angular/common';
8
- import { CommonModule, formatDate } from '@angular/common';
8
+ import { CommonModule } from '@angular/common';
9
9
  import * as i4 from '@taiga-ui/core';
10
- import { TuiTextfieldControllerModule, TuiLinkModule, TuiButtonModule, TuiLabelModule, TuiModeModule, TuiErrorModule, TuiLoaderModule, tuiFadeIn, tuiFormatNumber, TuiSvgModule, TuiHintModule, TuiFormatNumberPipeModule, TuiDataListModule, TuiNotificationModule, TuiFormatPhonePipeModule } from '@taiga-ui/core';
10
+ import { TuiTextfieldControllerModule, TuiLinkModule, TuiButtonModule, TuiLabelModule, TuiModeModule, TuiErrorModule, TuiLoaderModule, tuiFadeIn, TUI_MONTHS, TuiSvgModule, TuiHintModule, TuiFormatNumberPipeModule, TuiDataListModule, TuiNotificationModule, TuiFormatPhonePipeModule } from '@taiga-ui/core';
11
11
  import * as i3 from '@angular/forms';
12
12
  import { FormGroupDirective, FormGroup, FormControl, Validators, FormsModule, ReactiveFormsModule, NgControl, FormArray } from '@angular/forms';
13
13
  import * as i6 from '@taiga-ui/cdk';
14
- import { tuiControlValue, tuiIsFalsy, TuiLetModule, tuiCreateToken, AbstractTuiNullableControl, TUI_IS_MOBILE, tuiPure, tuiIsPresent, TuiDestroyService, TuiRepeatTimesModule, tuiMarkControlAsTouchedAndValidate, ALWAYS_TRUE_HANDLER } from '@taiga-ui/cdk';
14
+ import { tuiControlValue, tuiIsFalsy, TuiLetModule, tuiCreateToken, AbstractTuiNullableControl, TUI_IS_MOBILE, tuiPure, TuiDay, TuiDayRange, TuiMonth, tuiIsPresent, TuiDestroyService, TuiRepeatTimesModule, tuiMarkControlAsTouchedAndValidate, ALWAYS_TRUE_HANDLER } from '@taiga-ui/cdk';
15
15
  import * as i4$1 from '@taiga-ui/kit';
16
16
  import { TuiInputPasswordModule, TuiInputModule, TuiFieldErrorPipeModule, TuiInputPhoneModule, TuiAccordionItemComponent, TuiAccordionModule, TuiElasticContainerModule, TuiCarouselModule, TUI_NUMBER_VALUE_TRANSFORMER, TuiInputNumberComponent, TuiIslandModule, TuiInputNumberModule, TuiHighlightModule, TuiCarouselComponent, TuiComboBoxModule, TuiDataListWrapperModule, TuiFilterByInputPipeModule, TuiStringifyContentPipeModule, TuiSelectModule, TuiTreeService, TuiTreeItemContentComponent, TUI_TREE_START, TUI_TREE_CONTENT, TUI_TREE_LOADING, TUI_TREE_LOADER, TuiTreeModule, TuiCheckboxModule, TuiCheckboxLabeledModule } from '@taiga-ui/kit';
17
17
  import * as i6$1 from '@maskito/angular';
@@ -27,14 +27,10 @@ import * as i7$1 from '@taiga-ui/addon-preview';
27
27
  import { TuiPreviewDialogService, TuiPreviewModule } from '@taiga-ui/addon-preview';
28
28
  import * as i9 from '@taiga-ui/addon-commerce';
29
29
  import { TuiCurrencyPipeModule } from '@taiga-ui/addon-commerce';
30
- import * as i2$2 from 'ngx-echarts';
31
- import { NgxEchartsModule } from 'ngx-echarts';
32
- import { LineChart } from 'echarts/charts';
33
- import { TitleComponent, TooltipComponent, GridComponent } from 'echarts/components';
34
- import * as echarts from 'echarts/core';
35
- import { SVGRenderer } from 'echarts/renderers';
30
+ import * as i3$1 from '@taiga-ui/addon-charts';
31
+ import { TuiLineDaysChartModule, TuiAxesModule } from '@taiga-ui/addon-charts';
36
32
  import { HttpErrorResponse } from '@angular/common/http';
37
- import * as i3$1 from '@taiga-ui/layout';
33
+ import * as i3$2 from '@taiga-ui/layout';
38
34
  import { TuiBlockStatusModule } from '@taiga-ui/layout';
39
35
 
40
36
  /**
@@ -298,11 +294,9 @@ class ScSignInFormByPhoneComponent {
298
294
  * Инициализирует экземпляр класса {@link ScSignInFormByPhoneComponent}.
299
295
  *
300
296
  * @param authService Сервис аутентификации.
301
- * @param userMetrikaService Сервис для сбора метрик о действиях пользователей.
302
297
  */
303
- constructor(authService, userMetrikaService) {
298
+ constructor(authService) {
304
299
  this.authService = authService;
305
- this.userMetrikaService = userMetrikaService;
306
300
  /**
307
301
  * Наличие кода подтверждения у пользователя.
308
302
  */
@@ -337,22 +331,13 @@ class ScSignInFormByPhoneComponent {
337
331
  */
338
332
  this.loading$ = this.request$.pipe(map(tuiIsFalsy));
339
333
  }
340
- /** @inheritDoc */
341
- ngOnInit() {
342
- this.userMetrikaService.emitUserMetrikaEvent({
343
- target: ScUserMetrikaGoalsEnum.signInShow,
344
- params: {
345
- type: 'phone',
346
- },
347
- });
348
- }
349
334
  }
350
- ScSignInFormByPhoneComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScSignInFormByPhoneComponent, deps: [{ token: i1.ScAuthService }, { token: i1.ScUserMetrikaService }], target: i0.ɵɵFactoryTarget.Component });
335
+ ScSignInFormByPhoneComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScSignInFormByPhoneComponent, deps: [{ token: i1.ScAuthService }], target: i0.ɵɵFactoryTarget.Component });
351
336
  ScSignInFormByPhoneComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ScSignInFormByPhoneComponent, selector: "sc-sign-in-form-by-phone", ngImport: i0, template: "<form [formGroup]=\"form\" *tuiLet=\"!!(loading$ | async) as loading\" (ngSubmit)=\"onSubmit.next()\" class=\"flex flex-col gap-4 items-center mb-4\">\n <sc-verification-phone-check-form [(haveCode)]=\"haveCode\" [shouldBeBusy]=\"true\" [shouldBeConfirmed]=\"true\" class=\"w-full\"></sc-verification-phone-check-form>\n <button *ngIf=\"haveCode\" tuiButton type=\"submit\" [showLoader]=\"loading\" [disabled]=\"form.invalid || loading\" icon=\"scIconLogIn\">\u0412\u043E\u0439\u0442\u0438</button>\n</form>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i4.TuiButtonComponent, selector: "button[tuiButton], button[tuiIconButton], a[tuiButton], a[tuiIconButton]", inputs: ["appearance", "disabled", "icon", "iconRight", "shape", "showLoader", "size"] }, { kind: "directive", type: i6.TuiLetDirective, selector: "[tuiLet]", inputs: ["tuiLet"] }, { kind: "component", type: ScVerificationPhoneCheckFormComponent, selector: "sc-verification-phone-check-form", inputs: ["showCodeFields", "readOnly", "shouldBeBusy", "shouldBeConfirmed", "haveCode"], outputs: ["haveCodeChange"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
352
337
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScSignInFormByPhoneComponent, decorators: [{
353
338
  type: Component,
354
339
  args: [{ selector: 'sc-sign-in-form-by-phone', changeDetection: ChangeDetectionStrategy.OnPush, template: "<form [formGroup]=\"form\" *tuiLet=\"!!(loading$ | async) as loading\" (ngSubmit)=\"onSubmit.next()\" class=\"flex flex-col gap-4 items-center mb-4\">\n <sc-verification-phone-check-form [(haveCode)]=\"haveCode\" [shouldBeBusy]=\"true\" [shouldBeConfirmed]=\"true\" class=\"w-full\"></sc-verification-phone-check-form>\n <button *ngIf=\"haveCode\" tuiButton type=\"submit\" [showLoader]=\"loading\" [disabled]=\"form.invalid || loading\" icon=\"scIconLogIn\">\u0412\u043E\u0439\u0442\u0438</button>\n</form>\n" }]
355
- }], ctorParameters: function () { return [{ type: i1.ScAuthService }, { type: i1.ScUserMetrikaService }]; } });
340
+ }], ctorParameters: function () { return [{ type: i1.ScAuthService }]; } });
356
341
 
357
342
  /**
358
343
  * Компонент аутентификации по адресу электронной почты и паролю.
@@ -362,11 +347,9 @@ class ScSignInFormByEmailComponent {
362
347
  * Инициализирует экземпляр класса {@link ScSignInFormByEmailComponent}.
363
348
  *
364
349
  * @param authService Сервис аутентификации.
365
- * @param userMetrikaService Сервис для сбора метрик о действиях пользователей.
366
350
  */
367
- constructor(authService, userMetrikaService) {
351
+ constructor(authService) {
368
352
  this.authService = authService;
369
- this.userMetrikaService = userMetrikaService;
370
353
  /**
371
354
  * Группа полей ввода для формы «Вход на сайт».
372
355
  */
@@ -401,22 +384,13 @@ class ScSignInFormByEmailComponent {
401
384
  */
402
385
  this.forgotPassword = new EventEmitter();
403
386
  }
404
- /** @inheritDoc */
405
- ngOnInit() {
406
- this.userMetrikaService.emitUserMetrikaEvent({
407
- target: ScUserMetrikaGoalsEnum.signInShow,
408
- params: {
409
- type: 'email',
410
- },
411
- });
412
- }
413
387
  }
414
- ScSignInFormByEmailComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScSignInFormByEmailComponent, deps: [{ token: i1.ScAuthService }, { token: i1.ScUserMetrikaService }], target: i0.ɵɵFactoryTarget.Component });
388
+ ScSignInFormByEmailComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScSignInFormByEmailComponent, deps: [{ token: i1.ScAuthService }], target: i0.ɵɵFactoryTarget.Component });
415
389
  ScSignInFormByEmailComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ScSignInFormByEmailComponent, selector: "sc-sign-in-form-by-email", outputs: { forgotPassword: "forgotPassword" }, ngImport: i0, template: "<form [formGroup]=\"formByEmail\" (ngSubmit)=\"onSubmit.next()\">\n <div class=\"flex flex-col gap-4 mb-8\">\n <label tuiLabel=\"\u0410\u0434\u0440\u0435\u0441 \u044D\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u043D\u043E\u0439 \u043F\u043E\u0447\u0442\u044B\">\n <tui-input formControlName=\"login\">\n \u0410\u0434\u0440\u0435\u0441 \u044D\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u043D\u043E\u0439 \u043F\u043E\u0447\u0442\u044B\n <input tuiTextfield autocomplete=\"email\" />\n </tui-input>\n <tui-error formControlName=\"login\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <label tuiLabel=\"\u041F\u0430\u0440\u043E\u043B\u044C\">\n <tui-input-password formControlName=\"password\">\n \u041F\u0430\u0440\u043E\u043B\u044C\n <input tuiTextfield autocomplete=\"current-password\" />\n </tui-input-password>\n <tui-error formControlName=\"password\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <tui-error [error]=\"[] | tuiFieldError | async\"></tui-error>\n </div>\n <div class=\"flex flex-col gap-4 items-center mb-4\">\n <a tuiLink [pseudo]=\"true\" (click)=\"forgotPassword.emit()\" class=\"text-base\">\u0417\u0430\u0431\u044B\u043B\u0438 \u043F\u0430\u0440\u043E\u043B\u044C?</a>\n <button tuiButton type=\"submit\" [showLoader]=\"!!(loadingEmailAuth$ | async)\" [disabled]=\"formByEmail.invalid || !!(loadingEmailAuth$ | async)\" icon=\"scIconLogIn\">\n \u0412\u043E\u0439\u0442\u0438\n </button>\n </div>\n</form>\n", dependencies: [{ kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i4$1.TuiInputPasswordComponent, selector: "tui-input-password" }, { kind: "directive", type: i4$1.TuiInputPasswordDirective, selector: "tui-input-password" }, { kind: "component", type: i4.TuiTextfieldComponent, selector: "input[tuiTextfield], textarea[tuiTextfield]" }, { kind: "component", type: i4$1.TuiInputComponent, selector: "tui-input" }, { kind: "directive", type: i4$1.TuiInputDirective, selector: "tui-input" }, { kind: "component", type: i4.TuiLinkComponent, selector: "a[tuiLink], button[tuiLink]", inputs: ["pseudo", "icon", "iconAlign", "iconRotated", "mode"], exportAs: ["tuiLink"] }, { kind: "component", type: i4.TuiButtonComponent, selector: "button[tuiButton], button[tuiIconButton], a[tuiButton], a[tuiIconButton]", inputs: ["appearance", "disabled", "icon", "iconRight", "shape", "showLoader", "size"] }, { kind: "component", type: i4.TuiLabelComponent, selector: "label[tuiLabel]", inputs: ["tuiLabel", "context"] }, { kind: "component", type: i4.TuiErrorComponent, selector: "tui-error", inputs: ["error"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i4$1.TuiFieldErrorPipe, name: "tuiFieldError" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
416
390
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScSignInFormByEmailComponent, decorators: [{
417
391
  type: Component,
418
392
  args: [{ selector: 'sc-sign-in-form-by-email', changeDetection: ChangeDetectionStrategy.OnPush, template: "<form [formGroup]=\"formByEmail\" (ngSubmit)=\"onSubmit.next()\">\n <div class=\"flex flex-col gap-4 mb-8\">\n <label tuiLabel=\"\u0410\u0434\u0440\u0435\u0441 \u044D\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u043D\u043E\u0439 \u043F\u043E\u0447\u0442\u044B\">\n <tui-input formControlName=\"login\">\n \u0410\u0434\u0440\u0435\u0441 \u044D\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u043D\u043E\u0439 \u043F\u043E\u0447\u0442\u044B\n <input tuiTextfield autocomplete=\"email\" />\n </tui-input>\n <tui-error formControlName=\"login\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <label tuiLabel=\"\u041F\u0430\u0440\u043E\u043B\u044C\">\n <tui-input-password formControlName=\"password\">\n \u041F\u0430\u0440\u043E\u043B\u044C\n <input tuiTextfield autocomplete=\"current-password\" />\n </tui-input-password>\n <tui-error formControlName=\"password\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <tui-error [error]=\"[] | tuiFieldError | async\"></tui-error>\n </div>\n <div class=\"flex flex-col gap-4 items-center mb-4\">\n <a tuiLink [pseudo]=\"true\" (click)=\"forgotPassword.emit()\" class=\"text-base\">\u0417\u0430\u0431\u044B\u043B\u0438 \u043F\u0430\u0440\u043E\u043B\u044C?</a>\n <button tuiButton type=\"submit\" [showLoader]=\"!!(loadingEmailAuth$ | async)\" [disabled]=\"formByEmail.invalid || !!(loadingEmailAuth$ | async)\" icon=\"scIconLogIn\">\n \u0412\u043E\u0439\u0442\u0438\n </button>\n </div>\n</form>\n" }]
419
- }], ctorParameters: function () { return [{ type: i1.ScAuthService }, { type: i1.ScUserMetrikaService }]; }, propDecorators: { forgotPassword: [{
393
+ }], ctorParameters: function () { return [{ type: i1.ScAuthService }]; }, propDecorators: { forgotPassword: [{
420
394
  type: Output
421
395
  }] } });
422
396
 
@@ -428,9 +402,11 @@ class ScSignInFormComponent {
428
402
  * Инициализирует экземпляр класса {@link ScSignInFormComponent}.
429
403
  *
430
404
  * @param authService Сервис аутентификации.
405
+ * @param userMetrikaService Сервис для сбора метрик о действиях пользователей.
431
406
  */
432
- constructor(authService) {
407
+ constructor(authService, userMetrikaService) {
433
408
  this.authService = authService;
409
+ this.userMetrikaService = userMetrikaService;
434
410
  /**
435
411
  * Выбранный способ аутентификации.
436
412
  */
@@ -452,6 +428,15 @@ class ScSignInFormComponent {
452
428
  */
453
429
  this.successAuth = this.authService.getAuthChange().pipe(filter((state) => state));
454
430
  }
431
+ /** @inheritDoc */
432
+ ngOnInit() {
433
+ this.userMetrikaService.emitUserMetrikaEvent({
434
+ target: ScUserMetrikaGoalsEnum.signInShow,
435
+ params: {
436
+ type: this.authMethod,
437
+ },
438
+ });
439
+ }
455
440
  /**
456
441
  * Осуществляет переключение способов аутентификации.
457
442
  *
@@ -459,6 +444,12 @@ class ScSignInFormComponent {
459
444
  */
460
445
  switchAuth(authMethod) {
461
446
  this.authMethod = authMethod;
447
+ this.userMetrikaService.emitUserMetrikaEvent({
448
+ target: ScUserMetrikaGoalsEnum.signInShow,
449
+ params: {
450
+ type: authMethod,
451
+ },
452
+ });
462
453
  }
463
454
  /**
464
455
  * Обрабатывает нажатие на кнопку "Забыли пароль" и выдает сигнал об этом.
@@ -467,12 +458,12 @@ class ScSignInFormComponent {
467
458
  this.forgotPassword.emit();
468
459
  }
469
460
  }
470
- ScSignInFormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScSignInFormComponent, deps: [{ token: i1.ScAuthService }], target: i0.ɵɵFactoryTarget.Component });
471
- ScSignInFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ScSignInFormComponent, selector: "sc-sign-in-form", inputs: { authMethod: "authMethod" }, outputs: { forgotPassword: "forgotPassword", signUp: "signUp", successAuth: "successAuth" }, ngImport: i0, template: "<div class=\"flex justify-center mb-4\">\n <button\n tuiButton\n [tuiMode]=\"authMethod === 'by_phone' ? null : 'onLight'\"\n [appearance]=\"authMethod === 'by_phone' ? 'primary' : 'secondary'\"\n (click)=\"switchAuth(method.byPhone)\"\n class=\"tui-space_right-3 tui-space_bottom-3 !font-bold\"\n >\n \u041F\u043E \u0442\u0435\u043B\u0435\u0444\u043E\u043D\u0443\n </button>\n\n <button\n tuiButton\n [tuiMode]=\"authMethod === 'by_email' ? null : 'onLight'\"\n [appearance]=\"authMethod === 'by_email' ? 'primary' : 'secondary'\"\n (click)=\"switchAuth(method.byEmail)\"\n class=\"tui-space_left-3 tui-space_bottom-3 !font-bold\"\n >\n \u041F\u043E e-mail\n </button>\n</div>\n\n<sc-sign-in-form-by-email *ngIf=\"authMethod === 'by_email'\" (forgotPassword)=\"onForgotPassword()\"></sc-sign-in-form-by-email>\n\n<sc-sign-in-form-by-phone [class.hidden]=\"authMethod !== 'by_phone'\"></sc-sign-in-form-by-phone>\n\n<div class=\"flex flex-col gap-4 items-center\">\n <span class=\"font-medium text-tui-text-02\">\u0415\u0449\u0435 \u043D\u0435 \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043E\u0432\u0430\u043D\u044B?</span>\n <button tuiButton tuiMode=\"onLight\" (click)=\"signUp.emit()\" type=\"button\" icon=\"scIconAddProfile\" appearance=\"secondary\">\u0417\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043E\u0432\u0430\u0442\u044C\u0441\u044F</button>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.TuiButtonComponent, selector: "button[tuiButton], button[tuiIconButton], a[tuiButton], a[tuiIconButton]", inputs: ["appearance", "disabled", "icon", "iconRight", "shape", "showLoader", "size"] }, { kind: "directive", type: i4.TuiModeDirective, selector: "[tuiMode]", inputs: ["tuiMode"] }, { kind: "component", type: ScSignInFormByPhoneComponent, selector: "sc-sign-in-form-by-phone" }, { kind: "component", type: ScSignInFormByEmailComponent, selector: "sc-sign-in-form-by-email", outputs: ["forgotPassword"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
461
+ ScSignInFormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScSignInFormComponent, deps: [{ token: i1.ScAuthService }, { token: i1.ScUserMetrikaService }], target: i0.ɵɵFactoryTarget.Component });
462
+ ScSignInFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ScSignInFormComponent, selector: "sc-sign-in-form", inputs: { authMethod: "authMethod" }, outputs: { forgotPassword: "forgotPassword", signUp: "signUp", successAuth: "successAuth" }, ngImport: i0, template: "<div class=\"mb-4 flex justify-center\">\n <button\n tuiButton\n [tuiMode]=\"authMethod === 'by_phone' ? null : 'onLight'\"\n [appearance]=\"authMethod === 'by_phone' ? 'primary' : 'secondary'\"\n (click)=\"switchAuth(method.byPhone)\"\n class=\"tui-space_right-3 tui-space_bottom-3 !font-bold\"\n >\n \u041F\u043E \u0442\u0435\u043B\u0435\u0444\u043E\u043D\u0443\n </button>\n\n <button\n tuiButton\n [tuiMode]=\"authMethod === 'by_email' ? null : 'onLight'\"\n [appearance]=\"authMethod === 'by_email' ? 'primary' : 'secondary'\"\n (click)=\"switchAuth(method.byEmail)\"\n class=\"tui-space_left-3 tui-space_bottom-3 !font-bold\"\n >\n \u041F\u043E e-mail\n </button>\n</div>\n\n<sc-sign-in-form-by-email\n *ngIf=\"authMethod === 'by_email'\"\n (forgotPassword)=\"onForgotPassword()\"\n></sc-sign-in-form-by-email>\n\n<sc-sign-in-form-by-phone [class.hidden]=\"authMethod !== 'by_phone'\"></sc-sign-in-form-by-phone>\n\n<div class=\"flex flex-col items-center gap-4\">\n <span class=\"font-medium text-tui-text-02\">\u0415\u0449\u0435 \u043D\u0435 \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043E\u0432\u0430\u043D\u044B?</span>\n <button\n tuiButton\n tuiMode=\"onLight\"\n (click)=\"signUp.emit()\"\n type=\"button\"\n icon=\"scIconAddProfile\"\n appearance=\"secondary\"\n >\n \u0417\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043E\u0432\u0430\u0442\u044C\u0441\u044F\n </button>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.TuiButtonComponent, selector: "button[tuiButton], button[tuiIconButton], a[tuiButton], a[tuiIconButton]", inputs: ["appearance", "disabled", "icon", "iconRight", "shape", "showLoader", "size"] }, { kind: "directive", type: i4.TuiModeDirective, selector: "[tuiMode]", inputs: ["tuiMode"] }, { kind: "component", type: ScSignInFormByPhoneComponent, selector: "sc-sign-in-form-by-phone" }, { kind: "component", type: ScSignInFormByEmailComponent, selector: "sc-sign-in-form-by-email", outputs: ["forgotPassword"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
472
463
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScSignInFormComponent, decorators: [{
473
464
  type: Component,
474
- args: [{ selector: 'sc-sign-in-form', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"flex justify-center mb-4\">\n <button\n tuiButton\n [tuiMode]=\"authMethod === 'by_phone' ? null : 'onLight'\"\n [appearance]=\"authMethod === 'by_phone' ? 'primary' : 'secondary'\"\n (click)=\"switchAuth(method.byPhone)\"\n class=\"tui-space_right-3 tui-space_bottom-3 !font-bold\"\n >\n \u041F\u043E \u0442\u0435\u043B\u0435\u0444\u043E\u043D\u0443\n </button>\n\n <button\n tuiButton\n [tuiMode]=\"authMethod === 'by_email' ? null : 'onLight'\"\n [appearance]=\"authMethod === 'by_email' ? 'primary' : 'secondary'\"\n (click)=\"switchAuth(method.byEmail)\"\n class=\"tui-space_left-3 tui-space_bottom-3 !font-bold\"\n >\n \u041F\u043E e-mail\n </button>\n</div>\n\n<sc-sign-in-form-by-email *ngIf=\"authMethod === 'by_email'\" (forgotPassword)=\"onForgotPassword()\"></sc-sign-in-form-by-email>\n\n<sc-sign-in-form-by-phone [class.hidden]=\"authMethod !== 'by_phone'\"></sc-sign-in-form-by-phone>\n\n<div class=\"flex flex-col gap-4 items-center\">\n <span class=\"font-medium text-tui-text-02\">\u0415\u0449\u0435 \u043D\u0435 \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043E\u0432\u0430\u043D\u044B?</span>\n <button tuiButton tuiMode=\"onLight\" (click)=\"signUp.emit()\" type=\"button\" icon=\"scIconAddProfile\" appearance=\"secondary\">\u0417\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043E\u0432\u0430\u0442\u044C\u0441\u044F</button>\n</div>\n" }]
475
- }], ctorParameters: function () { return [{ type: i1.ScAuthService }]; }, propDecorators: { authMethod: [{
465
+ args: [{ selector: 'sc-sign-in-form', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"mb-4 flex justify-center\">\n <button\n tuiButton\n [tuiMode]=\"authMethod === 'by_phone' ? null : 'onLight'\"\n [appearance]=\"authMethod === 'by_phone' ? 'primary' : 'secondary'\"\n (click)=\"switchAuth(method.byPhone)\"\n class=\"tui-space_right-3 tui-space_bottom-3 !font-bold\"\n >\n \u041F\u043E \u0442\u0435\u043B\u0435\u0444\u043E\u043D\u0443\n </button>\n\n <button\n tuiButton\n [tuiMode]=\"authMethod === 'by_email' ? null : 'onLight'\"\n [appearance]=\"authMethod === 'by_email' ? 'primary' : 'secondary'\"\n (click)=\"switchAuth(method.byEmail)\"\n class=\"tui-space_left-3 tui-space_bottom-3 !font-bold\"\n >\n \u041F\u043E e-mail\n </button>\n</div>\n\n<sc-sign-in-form-by-email\n *ngIf=\"authMethod === 'by_email'\"\n (forgotPassword)=\"onForgotPassword()\"\n></sc-sign-in-form-by-email>\n\n<sc-sign-in-form-by-phone [class.hidden]=\"authMethod !== 'by_phone'\"></sc-sign-in-form-by-phone>\n\n<div class=\"flex flex-col items-center gap-4\">\n <span class=\"font-medium text-tui-text-02\">\u0415\u0449\u0435 \u043D\u0435 \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043E\u0432\u0430\u043D\u044B?</span>\n <button\n tuiButton\n tuiMode=\"onLight\"\n (click)=\"signUp.emit()\"\n type=\"button\"\n icon=\"scIconAddProfile\"\n appearance=\"secondary\"\n >\n \u0417\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043E\u0432\u0430\u0442\u044C\u0441\u044F\n </button>\n</div>\n" }]
466
+ }], ctorParameters: function () { return [{ type: i1.ScAuthService }, { type: i1.ScUserMetrikaService }]; }, propDecorators: { authMethod: [{
476
467
  type: Input
477
468
  }], forgotPassword: [{
478
469
  type: Output
@@ -907,7 +898,9 @@ let ScBannerComponent = class ScBannerComponent {
907
898
  onClick(banner) {
908
899
  this.userMetrikaService.emitUserMetrikaEvent({
909
900
  target: ScUserMetrikaGoalsEnum.bannerClick,
910
- params: { banner_id: banner.id },
901
+ params: {
902
+ banner_id: banner.id,
903
+ },
911
904
  });
912
905
  if (banner.url) {
913
906
  this.clickBannerEvent.emit(banner);
@@ -1789,186 +1782,109 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
1789
1782
  args: ['attr.data-size']
1790
1783
  }] } });
1791
1784
 
1792
- /**
1793
- * Настройки отрисовки графика.
1794
- *
1795
- * @see [Документация](https://echarts.apache.org/en/option.html#title)
1796
- */
1797
- const scChartOption = {
1798
- grid: {
1799
- top: 12,
1800
- left: 64,
1801
- right: 0,
1802
- bottom: 24
1803
- },
1804
- tooltip: {
1805
- trigger: 'axis',
1806
- formatter: (params) => {
1807
- const data = Array.isArray(params) ? params[0].data : params.data;
1808
- const date = new Date(data.value[0]);
1809
- const nextDate = new Date(data.value[2]);
1810
- return `
1811
- <div class="text-center text-black">
1812
- <span class="font-bold">${data.value[1]} ₽</span>
1813
- </br>
1814
- <span class="text-xs">${formatDate(date, 'dd.MM', 'en')} - ${formatDate(nextDate, 'dd.MM', 'en')}</span>
1815
- </div>
1816
- `;
1817
- },
1818
- axisPointer: {
1819
- animation: false,
1820
- type: 'cross'
1821
- },
1822
- textStyle: {
1823
- fontFamily: 'Roboto, "Helvetica Neue", sans-serif'
1824
- }
1825
- },
1826
- xAxis: {
1827
- type: 'time',
1828
- splitLine: {
1829
- show: false
1830
- },
1831
- axisLine: {
1832
- show: false
1833
- },
1834
- axisTick: {
1835
- show: false
1836
- },
1837
- axisLabel: {
1838
- hideOverlap: true
1839
- },
1840
- boundaryGap: ['3%', '3%']
1841
- },
1842
- yAxis: {
1843
- splitLine: {
1844
- show: false
1845
- },
1846
- axisLine: {
1847
- show: false
1848
- },
1849
- axisTick: {
1850
- show: false
1851
- },
1852
- axisLabel: {
1853
- formatter: (value) => tuiFormatNumber(value)
1854
- },
1855
- type: 'value',
1856
- boundaryGap: [0, '100%']
1857
- },
1858
- series: {
1859
- name: 'История цены',
1860
- type: 'line',
1861
- showSymbol: false,
1862
- symbolSize: 12,
1863
- itemStyle: {
1864
- color: '#ffcc40'
1865
- }
1866
- }
1867
- };
1868
-
1869
1785
  /**
1870
1786
  * График истории цен товара или услуги.
1871
- * TODO: TASK[#7482] Перепроверить возможность использования TuiLineDaysChart.
1872
1787
  */
1873
1788
  class ScPriceHistoryComponent {
1874
1789
  /**
1875
1790
  * Инициализирует экземпляр класса {@link ScPriceHistoryComponent}.
1876
1791
  *
1877
- * @param cdr Объект для работы с обнаружением изменений.
1792
+ * @param catalogService Сервис для работы с каталогом.
1793
+ * @param months$ Перечисление месяцев.
1794
+ * @param context Контекст диалогового окна, в котором открыт компонент.
1878
1795
  */
1879
- constructor(cdr) {
1880
- this.cdr = cdr;
1881
- /**
1882
- * Настройки графика.
1883
- */
1884
- this.initOption = { locale: 'RU' };
1796
+ constructor(catalogService, months$, context) {
1797
+ this.catalogService = catalogService;
1798
+ this.months$ = months$;
1799
+ this.context = context;
1885
1800
  /**
1886
- * Параметры отрисовки графика истории цены.
1801
+ * {@link Observable} функция для преобразования значения number в строку в подсказке по оси X.
1887
1802
  */
1888
- this.chartOption = scChartOption;
1803
+ this.xStringify$ = this.months$.pipe(map((months) => ({ month, day }) =>
1804
+ // eslint-disable-next-line security/detect-object-injection
1805
+ `${months[month]}, ${day}`));
1889
1806
  /**
1890
- * Данные об истории цены на товар или услугу.
1807
+ * Функция для преобразования значения number в строку в подсказке по оси Y.
1808
+ *
1809
+ * @param value Значение оси Y.
1891
1810
  */
1892
- this.data = [];
1811
+ this.yStringify = (value) => `${value.toLocaleString('ru-RU')} ₽`;
1812
+ if (context) {
1813
+ this.product = context.data.product;
1814
+ }
1893
1815
  }
1894
1816
  /** @inheritDoc */
1895
1817
  ngOnInit() {
1896
- if (this.chartOption.series && !Array.isArray(this.chartOption.series)) {
1897
- this.chartOption.series.data = [];
1898
- }
1899
- Object.keys(this.history)
1900
- .map((key) => {
1901
- // ? Можно избежать переведя даты в api в формат ECMAScript® 2023: https://tc39.es/ecma262/#sec-date-time-string-format
1902
- const dataString = key.split('.').reverse();
1903
- const data = new Date(+dataString[0], +dataString[1] - 1, +dataString[2]);
1904
- return { data: data, cost: this.history[String(key)].cost };
1905
- })
1906
- .sort((a, b) => +a.data - +b.data)
1907
- .forEach((item, index, array) => {
1908
- var _a, _b;
1909
- let nextDate;
1910
- // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
1911
- if ((_a = array[index + 1]) === null || _a === void 0 ? void 0 : _a.data) {
1912
- nextDate = new Date((_b = array[index + 1]) === null || _b === void 0 ? void 0 : _b.data);
1913
- nextDate.setDate(nextDate.getDate() - 1);
1914
- }
1915
- else {
1916
- nextDate = new Date();
1917
- }
1918
- this.pushDataItem(item.cost, item.data, nextDate);
1919
- });
1920
- // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
1921
- if (this.eChartsInstance) {
1922
- this.setChartData();
1923
- }
1818
+ this.history$ = this.catalogService.getPriceHistory$(this.product).pipe(map((history) => Object.keys(history)
1819
+ .map((item) => [TuiDay.normalizeParse(item, 'DMY'), history[String(item)].cost])
1820
+ .sort((a, b) => (a[0] > b[0] ? 1 : -1))), shareReplay({ bufferSize: 1, refCount: true }), filter((history) => history.length > 1));
1821
+ this.priceInfo$ = this.history$.pipe(map((history) => history.map((item) => item[1])), map((values) => ({
1822
+ min: Math.min(...values),
1823
+ max: Math.max(...values),
1824
+ })));
1825
+ this.range$ = this.history$.pipe(map((value) => { var _a, _b; return ({ from: (_a = value.at(0)) === null || _a === void 0 ? void 0 : _a[0], to: (_b = value.at(-1)) === null || _b === void 0 ? void 0 : _b[0] }); }), filter((range) => !!range.from && !!range.to), map((range) => {
1826
+ return new TuiDayRange(range.from, range.to);
1827
+ }));
1924
1828
  }
1925
1829
  /**
1926
- * Перехватчик жизненного цикла {@link ECharts}, который вызывается при его инициализации.
1830
+ * Вычисляет подписи даты к оси X.
1927
1831
  *
1928
- * @param eChartsInstance Экземпляр {@link ECharts}.
1929
- */
1930
- // eslint-disable-next-line unicorn/prevent-abbreviations
1931
- onChartInit(eChartsInstance) {
1932
- this.eChartsInstance = eChartsInstance;
1933
- if (this.data.length > 0) {
1934
- this.setChartData();
1935
- }
1936
- }
1937
- /**
1938
- * Устанавливает новые данные {@link ScPriceHistoryComponent.eChartsInstance}.
1832
+ * @param param0 {@link TuiDayRange} Временной промежуток истории цен.
1833
+ * @param param0.from {@link TuiDay} Дата начала истории цен.
1834
+ * @param param0.to {@link TuiDay} Дата конца истории цен.
1939
1835
  */
1940
- setChartData() {
1941
- if (this.chartOption.series && !Array.isArray(this.chartOption.series)) {
1942
- this.maxPrice = Math.max(...this.data.map((item) => item.value[1]));
1943
- this.minPrice = Math.min(...this.data.map((item) => item.value[1]));
1944
- this.chartOption.series.data = this.data;
1945
- this.eChartsInstance.clear();
1946
- this.eChartsInstance.setOption(this.chartOption, true, true);
1947
- this.cdr.markForCheck();
1948
- }
1836
+ computeLabels$({ from, to }) {
1837
+ return this.months$.pipe(map((months) => Array.from({ length: TuiMonth.lengthBetween(from, to) + 1 }, (_, index) => months[from.append({ month: index }).month])));
1949
1838
  }
1950
1839
  /**
1951
- * Добавляет значение цены товара в массив истории цен.
1840
+ * Вычисляет данные для отображения на графике.
1952
1841
  *
1953
- * @param value Цена товара или услуги.
1954
- * @param date Дата установки цены.
1955
- * @param nextDate Следующая дата установки цены.
1842
+ * @param param0 {@link TuiDayRange} Временной промежуток истории цен.
1843
+ * @param param0.from {@link TuiDay} Дата начала истории цен.
1844
+ * @param param0.to {@link TuiDay} Дата конца истории цен.
1845
+ * @param history История цен.
1956
1846
  */
1957
- pushDataItem(value, date, nextDate) {
1958
- this.data.push({
1959
- name: date.toString(),
1960
- value: [date, value, nextDate],
1961
- });
1847
+ computeValue({ from, to }, history) {
1848
+ return (Array.from({ length: TuiDay.lengthBetween(from, to) + 1 })
1849
+ .fill(0)
1850
+ // eslint-disable-next-line unicorn/no-array-reduce
1851
+ .reduce((array, _, index) => {
1852
+ var _a;
1853
+ const data = from.append({ day: index });
1854
+ return [
1855
+ ...array,
1856
+ [
1857
+ data,
1858
+ ((_a = history.find((valueHistory, indexHistory, arrayHistory) => data.daySame(valueHistory[0]) || data.dayBefore(arrayHistory[indexHistory + 1][0]))) !== null && _a !== void 0 ? _a : history[0])[1],
1859
+ ],
1860
+ ];
1861
+ }, []));
1962
1862
  }
1963
1863
  }
1964
- ScPriceHistoryComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScPriceHistoryComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
1965
- ScPriceHistoryComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ScPriceHistoryComponent, selector: "sc-price-history", inputs: { history: "history" }, ngImport: i0, template: "<div class=\"flex flex-col items-center\">\n <div *ngIf=\"maxPrice && minPrice\" class=\"w-full font-bold text-end text-lg mb-1\">\u043E\u0442 {{ minPrice.toLocaleString() }} \u20BD \u0434\u043E {{ maxPrice.toLocaleString() }} \u20BD</div>\n <div class=\"relative w-full h-56\">\n <div class=\"h-48 bg-tui-base-02 mt-2 absolute rounded right-0 left-16\"></div>\n <div echarts [initOpts]=\"initOption\" (chartInit)=\"onChartInit($event)\" [options]=\"chartOption\" class=\"w-full !h-full touch-none\"></div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$2.NgxEchartsDirective, selector: "echarts, [echarts]", inputs: ["options", "theme", "loading", "initOpts", "merge", "autoResize", "loadingType", "loadingOpts"], outputs: ["chartInit", "optionsError", "chartClick", "chartDblClick", "chartMouseDown", "chartMouseMove", "chartMouseUp", "chartMouseOver", "chartMouseOut", "chartGlobalOut", "chartContextMenu", "chartLegendSelectChanged", "chartLegendSelected", "chartLegendUnselected", "chartLegendScroll", "chartDataZoom", "chartDataRangeSelected", "chartTimelineChanged", "chartTimelinePlayChanged", "chartRestore", "chartDataViewChanged", "chartMagicTypeChanged", "chartPieSelectChanged", "chartPieSelected", "chartPieUnselected", "chartMapSelectChanged", "chartMapSelected", "chartMapUnselected", "chartAxisAreaSelected", "chartFocusNodeAdjacency", "chartUnfocusNodeAdjacency", "chartBrush", "chartBrushEnd", "chartBrushSelected", "chartRendered", "chartFinished"], exportAs: ["echarts"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1864
+ ScPriceHistoryComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScPriceHistoryComponent, deps: [{ token: i1.ScCatalogService }, { token: TUI_MONTHS }, { token: POLYMORPHEUS_CONTEXT, optional: true }], target: i0.ɵɵFactoryTarget.Component });
1865
+ ScPriceHistoryComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ScPriceHistoryComponent, selector: "sc-price-history", inputs: { product: "product" }, ngImport: i0, template: "<div class=\"flex flex-col items-center\">\n <ng-container *ngIf=\"priceInfo$ | async as priceInfo; else isNotExist\">\n <div class=\"w-174 mb-1 text-end text-lg font-bold\">\u043E\u0442 {{ priceInfo.min.toLocaleString() }} \u20BD \u0434\u043E {{ priceInfo.max.toLocaleString() }} \u20BD</div>\n\n <ng-container *ngIf=\"history$ | async as history\">\n <div\n *ngIf=\"range$ | async as range\"\n class=\"relative h-56 w-full p-5 text-tui-primary\"\n >\n <tui-axes\n *ngIf=\"computeLabels$(range) | async as labels\"\n class=\"h-full\"\n [axisXLabels]=\"labels\"\n [horizontalLines]=\"4\"\n [verticalLines]=\"labels.length\"\n >\n <tui-line-days-chart\n class=\"chart\"\n [height]=\"priceInfo.max\"\n [smoothingFactor]=\"10\"\n [y]=\"priceInfo.min - (priceInfo.min * 1) / 4\"\n [value]=\"computeValue(range, history)\"\n [xStringify]=\"xStringify$ | async\"\n [yStringify]=\"yStringify\"\n [hintContent]=\"hint\"\n ></tui-line-days-chart>\n </tui-axes>\n </div>\n </ng-container>\n </ng-container>\n <ng-template #isNotExist>\n <p class=\"text-base font-bold\">\u0426\u0435\u043D\u0430 \u043D\u0430 \u0442\u043E\u0432\u0430\u0440 \u043D\u0435 \u0438\u0437\u043C\u0435\u043D\u044F\u043B\u0430\u0441\u044C</p>\n </ng-template>\n <ng-template\n #hint\n let-data\n >\n <div class=\"font-bold\">{{ data[1].toLocaleString() }} \u20BD</div>\n <div>{{ data[0] }}</div>\n </ng-template>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3$1.TuiLineDaysChartComponent, selector: "tui-line-days-chart", inputs: ["value", "y", "height", "smoothingFactor", "hintContent", "xStringify", "yStringify", "dots"] }, { kind: "component", type: i3$1.TuiAxesComponent, selector: "tui-axes", inputs: ["axisX", "axisXLabels", "axisY", "axisYInset", "axisYLabels", "axisYName", "axisYSecondaryInset", "axisYSecondaryLabels", "axisYSecondaryName", "horizontalLines", "horizontalLinesHandler", "verticalLines", "verticalLinesHandler"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1866
+ __decorate([
1867
+ tuiPure
1868
+ ], ScPriceHistoryComponent.prototype, "computeLabels$", null);
1869
+ __decorate([
1870
+ tuiPure
1871
+ ], ScPriceHistoryComponent.prototype, "computeValue", null);
1966
1872
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScPriceHistoryComponent, decorators: [{
1967
1873
  type: Component,
1968
- args: [{ selector: 'sc-price-history', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"flex flex-col items-center\">\n <div *ngIf=\"maxPrice && minPrice\" class=\"w-full font-bold text-end text-lg mb-1\">\u043E\u0442 {{ minPrice.toLocaleString() }} \u20BD \u0434\u043E {{ maxPrice.toLocaleString() }} \u20BD</div>\n <div class=\"relative w-full h-56\">\n <div class=\"h-48 bg-tui-base-02 mt-2 absolute rounded right-0 left-16\"></div>\n <div echarts [initOpts]=\"initOption\" (chartInit)=\"onChartInit($event)\" [options]=\"chartOption\" class=\"w-full !h-full touch-none\"></div>\n </div>\n</div>\n" }]
1969
- }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { history: [{
1874
+ args: [{ selector: 'sc-price-history', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"flex flex-col items-center\">\n <ng-container *ngIf=\"priceInfo$ | async as priceInfo; else isNotExist\">\n <div class=\"w-174 mb-1 text-end text-lg font-bold\">\u043E\u0442 {{ priceInfo.min.toLocaleString() }} \u20BD \u0434\u043E {{ priceInfo.max.toLocaleString() }} \u20BD</div>\n\n <ng-container *ngIf=\"history$ | async as history\">\n <div\n *ngIf=\"range$ | async as range\"\n class=\"relative h-56 w-full p-5 text-tui-primary\"\n >\n <tui-axes\n *ngIf=\"computeLabels$(range) | async as labels\"\n class=\"h-full\"\n [axisXLabels]=\"labels\"\n [horizontalLines]=\"4\"\n [verticalLines]=\"labels.length\"\n >\n <tui-line-days-chart\n class=\"chart\"\n [height]=\"priceInfo.max\"\n [smoothingFactor]=\"10\"\n [y]=\"priceInfo.min - (priceInfo.min * 1) / 4\"\n [value]=\"computeValue(range, history)\"\n [xStringify]=\"xStringify$ | async\"\n [yStringify]=\"yStringify\"\n [hintContent]=\"hint\"\n ></tui-line-days-chart>\n </tui-axes>\n </div>\n </ng-container>\n </ng-container>\n <ng-template #isNotExist>\n <p class=\"text-base font-bold\">\u0426\u0435\u043D\u0430 \u043D\u0430 \u0442\u043E\u0432\u0430\u0440 \u043D\u0435 \u0438\u0437\u043C\u0435\u043D\u044F\u043B\u0430\u0441\u044C</p>\n </ng-template>\n <ng-template\n #hint\n let-data\n >\n <div class=\"font-bold\">{{ data[1].toLocaleString() }} \u20BD</div>\n <div>{{ data[0] }}</div>\n </ng-template>\n</div>\n" }]
1875
+ }], ctorParameters: function () {
1876
+ return [{ type: i1.ScCatalogService }, { type: i10.Observable, decorators: [{
1877
+ type: Inject,
1878
+ args: [TUI_MONTHS]
1879
+ }] }, { type: undefined, decorators: [{
1880
+ type: Optional
1881
+ }, {
1882
+ type: Inject,
1883
+ args: [POLYMORPHEUS_CONTEXT]
1884
+ }] }];
1885
+ }, propDecorators: { product: [{
1970
1886
  type: Input
1971
- }] } });
1887
+ }], computeLabels$: [], computeValue: [] } });
1972
1888
 
1973
1889
  /**
1974
1890
  * Значения пагинации списка товаров категории по умолчанию.
@@ -2098,123 +2014,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
2098
2014
  type: Input
2099
2015
  }] } });
2100
2016
 
2101
- /**
2102
- * Language: Russian.
2103
- */
2104
- var scLangRU = {
2105
- time: {
2106
- month: ['Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь'],
2107
- monthAbbr: ['Янв', 'Фев', 'Мар', 'Апр', 'Май', 'Июн', 'Июл', 'Авг', 'Сен', 'Окт', 'Ноя', 'Дек'],
2108
- dayOfWeek: ['Воскресенье', 'Понедельник', 'Вторник', 'Среда', 'Четверг', 'Пятница', 'Суббота'],
2109
- dayOfWeekAbbr: ['вс', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'],
2110
- },
2111
- legend: {
2112
- selector: {
2113
- all: 'Всё',
2114
- inverse: 'Обратить',
2115
- },
2116
- },
2117
- toolbox: {
2118
- brush: {
2119
- title: {
2120
- rect: 'Выделить область',
2121
- polygon: 'Инструмент «Лассо»',
2122
- lineX: 'Горизонтальное выделение',
2123
- lineY: 'Вертикальное выделение',
2124
- keep: 'Оставить выбранное',
2125
- clear: 'Очистить выбранное',
2126
- },
2127
- },
2128
- dataView: {
2129
- title: 'Данные',
2130
- lang: ['Данные', 'Закрыть', 'Обновить'],
2131
- },
2132
- dataZoom: {
2133
- title: {
2134
- zoom: 'Увеличить',
2135
- back: 'Сбросить увеличение',
2136
- },
2137
- },
2138
- magicType: {
2139
- title: {
2140
- line: 'Переключиться на линейный график',
2141
- bar: 'Переключиться на столбчатую диаграмму',
2142
- stack: 'Стопка',
2143
- tiled: 'Плитка',
2144
- },
2145
- },
2146
- restore: {
2147
- title: 'Восстановить',
2148
- },
2149
- saveAsImage: {
2150
- title: 'Сохранить картинку',
2151
- lang: ['Правый клик, чтобы сохранить картинку'],
2152
- },
2153
- },
2154
- series: {
2155
- typeNames: {
2156
- pie: 'Круговая диаграмма',
2157
- bar: 'Столбчатая диаграмма',
2158
- line: 'Линейный график',
2159
- scatter: 'Точечная диаграмма',
2160
- effectScatter: 'Точечная диаграмма с волнами',
2161
- radar: 'Лепестковая диаграмма',
2162
- tree: 'Дерево',
2163
- treemap: 'Плоское дерево',
2164
- boxplot: 'Ящик с усами',
2165
- candlestick: 'Свечной график',
2166
- k: 'График К-линий',
2167
- heatmap: 'Тепловая карта',
2168
- map: 'Карта',
2169
- parallel: 'Диаграмма параллельных координат',
2170
- lines: 'Линейный граф',
2171
- graph: 'Граф отношений',
2172
- sankey: 'Диаграмма Санкей',
2173
- funnel: 'Воронкообразная диаграмма',
2174
- gauge: 'Шкала',
2175
- pictorialBar: 'Столбец-картинка',
2176
- themeRiver: 'Тематическая река',
2177
- sunburst: 'Солнечные лучи',
2178
- custom: '',
2179
- chart: '',
2180
- },
2181
- },
2182
- aria: {
2183
- general: {
2184
- withTitle: 'Это график, показывающий "{title}"',
2185
- withoutTitle: 'Это график',
2186
- },
2187
- series: {
2188
- single: {
2189
- prefix: '',
2190
- withName: ' с типом {seriesType} и именем {seriesName}.',
2191
- withoutName: ' с типом {seriesType}.',
2192
- },
2193
- multiple: {
2194
- prefix: '. Он состоит из {seriesCount} серий.',
2195
- withName: ' Серия {seriesId} имеет тип {seriesType} и показывает {seriesName}.',
2196
- withoutName: ' Серия {seriesId} имеет тип {seriesType}.',
2197
- separator: {
2198
- middle: '',
2199
- end: '',
2200
- },
2201
- },
2202
- },
2203
- data: {
2204
- allData: 'Данные таковы: ',
2205
- partialData: 'Первые {displayCnt} элементов: ',
2206
- withName: 'значение для {name} — {value}',
2207
- withoutName: '{value}',
2208
- separator: {
2209
- middle: ', ',
2210
- end: '. ',
2211
- },
2212
- },
2213
- },
2214
- };
2215
-
2216
- echarts.registerLocale('RU', scLangRU);
2217
- echarts.use([TitleComponent, TooltipComponent, GridComponent, LineChart, SVGRenderer]);
2218
2017
  /**
2219
2018
  * Модуль каталога.
2220
2019
  */
@@ -2243,9 +2042,12 @@ ScCatalogModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version
2243
2042
  TuiFieldErrorPipeModule,
2244
2043
  TuiLoaderModule,
2245
2044
  TuiLinkModule,
2246
- TuiElasticContainerModule, i2$2.NgxEchartsModule, TuiLetModule,
2045
+ TuiElasticContainerModule,
2046
+ TuiLetModule,
2247
2047
  TuiRepeatTimesModule,
2248
- TuiHighlightModule], exports: [ScPriceListPaginationComponent,
2048
+ TuiHighlightModule,
2049
+ TuiLineDaysChartModule,
2050
+ TuiAxesModule], exports: [ScPriceListPaginationComponent,
2249
2051
  ScCategoryCardComponent,
2250
2052
  ScFavoriteBtnComponent,
2251
2053
  ScInputQuantityComponent,
@@ -2269,10 +2071,11 @@ ScCatalogModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version
2269
2071
  TuiLoaderModule,
2270
2072
  TuiLinkModule,
2271
2073
  TuiElasticContainerModule,
2272
- NgxEchartsModule.forRoot({ echarts }),
2273
2074
  TuiLetModule,
2274
2075
  TuiRepeatTimesModule,
2275
- TuiHighlightModule] });
2076
+ TuiHighlightModule,
2077
+ TuiLineDaysChartModule,
2078
+ TuiAxesModule] });
2276
2079
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScCatalogModule, decorators: [{
2277
2080
  type: NgModule,
2278
2081
  args: [{
@@ -2313,10 +2116,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
2313
2116
  TuiLoaderModule,
2314
2117
  TuiLinkModule,
2315
2118
  TuiElasticContainerModule,
2316
- NgxEchartsModule.forRoot({ echarts }),
2317
2119
  TuiLetModule,
2318
2120
  TuiRepeatTimesModule,
2319
2121
  TuiHighlightModule,
2122
+ TuiLineDaysChartModule,
2123
+ TuiAxesModule,
2320
2124
  ],
2321
2125
  }]
2322
2126
  }] });
@@ -4461,7 +4265,7 @@ class ScPaymentStatusComponent {
4461
4265
  }
4462
4266
  }
4463
4267
  ScPaymentStatusComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScPaymentStatusComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
4464
- ScPaymentStatusComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ScPaymentStatusComponent, selector: "sc-payment-status", inputs: { status: "status", orderId: "orderId" }, outputs: { backToOrdersClick: "backToOrdersClick", backToOrderClick: "backToOrderClick" }, ngImport: i0, template: "<ng-container *ngIf=\"status && orderId; else failed\">\n <ng-container [ngSwitch]=\"status\">\n <tui-block-status *ngSwitchCase=\"'success'\">\n <tui-svg src=\"tuiIconCheckCircleLarge\" tuiSlot=\"top\" class=\"scale-[3] !h-20 !text-green-500\"></tui-svg>\n <h4>\u0421\u043F\u0430\u0441\u0438\u0431\u043E!</h4>\n <br />\n <div class=\"font-bold\">\u0412\u0430\u0448 \u0437\u0430\u043A\u0430\u0437 \u0443\u0441\u043F\u0435\u0448\u043D\u043E \u043E\u043F\u043B\u0430\u0447\u0435\u043D. \u041C\u044B \u0441\u0432\u044F\u0436\u0435\u043C\u0441\u044F \u0441 \u0432\u0430\u043C\u0438 \u0432 \u0431\u043B\u0438\u0436\u0430\u0439\u0448\u0435\u0435 \u0432\u0440\u0435\u043C\u044F.</div>\n <br />\n <div class=\"font-bold\">\n \u041D\u043E\u043C\u0435\u0440 \u0432\u0430\u0448\u0435\u0433\u043E \u0437\u0430\u043A\u0430\u0437\u0430: <a tuiLink [pseudo]=\"true\" (click)=\"backToOrderClick.emit()\">{{orderId}}</a>\n </div>\n\n <button tuiButton (click)=\"backToOrdersClick.emit()\">\u0412\u0435\u0440\u043D\u0443\u0442\u044C\u0441\u044F \u043A \u0437\u0430\u043A\u0430\u0437\u0430\u043C</button>\n </tui-block-status>\n <tui-block-status *ngSwitchCase=\"'error'\">\n <tui-svg src=\"tuiIconXCircleLarge\" class=\"scale-[3] !h-20 !text-red-500\" tuiSlot=\"top\"></tui-svg>\n <h4>\u041E\u043F\u043B\u0430\u0442\u0430 \u043D\u0435 \u043F\u0440\u043E\u0448\u043B\u0430!</h4>\n <br />\n <div class=\"font-bold\">\u041F\u0440\u0438 \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u043A\u0435 \u043F\u043B\u0430\u0442\u0435\u0436\u0430 \u043F\u0440\u043E\u0438\u0437\u043E\u0448\u043B\u0430 \u043E\u0448\u0438\u0431\u043A\u0430.</div>\n <button tuiButton tuiItem (click)=\"backToOrderClick.emit()\">\u0412\u0435\u0440\u043D\u0443\u0442\u044C\u0441\u044F \u043A \u0437\u0430\u043A\u0430\u0437\u0443</button>\n </tui-block-status>\n </ng-container>\n</ng-container>\n\n<ng-template #failed>\n <tui-block-status>\n <tui-svg src=\"tuiIconInfoLarge\" class=\"scale-[3] !h-20 !text-yellow-500\" tuiSlot=\"top\"></tui-svg>\n <h4>\u0427\u0442\u043E-\u0442\u043E \u043F\u043E\u0448\u043B\u043E \u043D\u0435 \u0442\u0430\u043A!</h4>\n <button tuiButton tuiItem (click)=\"backToOrdersClick.emit()\">\u0412\u0435\u0440\u043D\u0443\u0442\u044C\u0441\u044F \u043A \u0437\u0430\u043A\u0430\u0437\u0430\u043C</button>\n </tui-block-status>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: i4.TuiLinkComponent, selector: "a[tuiLink], button[tuiLink]", inputs: ["pseudo", "icon", "iconAlign", "iconRotated", "mode"], exportAs: ["tuiLink"] }, { kind: "component", type: i4.TuiButtonComponent, selector: "button[tuiButton], button[tuiIconButton], a[tuiButton], a[tuiIconButton]", inputs: ["appearance", "disabled", "icon", "iconRight", "shape", "showLoader", "size"] }, { kind: "component", type: i4.TuiSvgComponent, selector: "tui-svg", inputs: ["src"] }, { kind: "component", type: i3$1.TuiBlockStatusComponent, selector: "tui-block-status", inputs: ["card"] }, { kind: "directive", type: i3$1.TuiBlockStatusDirective, selector: "[tuiSlot]", inputs: ["tuiSlot"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
4268
+ ScPaymentStatusComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ScPaymentStatusComponent, selector: "sc-payment-status", inputs: { status: "status", orderId: "orderId" }, outputs: { backToOrdersClick: "backToOrdersClick", backToOrderClick: "backToOrderClick" }, ngImport: i0, template: "<ng-container *ngIf=\"status && orderId; else failed\">\n <ng-container [ngSwitch]=\"status\">\n <tui-block-status *ngSwitchCase=\"'success'\">\n <tui-svg src=\"tuiIconCheckCircleLarge\" tuiSlot=\"top\" class=\"scale-[3] !h-20 !text-green-500\"></tui-svg>\n <h4>\u0421\u043F\u0430\u0441\u0438\u0431\u043E!</h4>\n <br />\n <div class=\"font-bold\">\u0412\u0430\u0448 \u0437\u0430\u043A\u0430\u0437 \u0443\u0441\u043F\u0435\u0448\u043D\u043E \u043E\u043F\u043B\u0430\u0447\u0435\u043D. \u041C\u044B \u0441\u0432\u044F\u0436\u0435\u043C\u0441\u044F \u0441 \u0432\u0430\u043C\u0438 \u0432 \u0431\u043B\u0438\u0436\u0430\u0439\u0448\u0435\u0435 \u0432\u0440\u0435\u043C\u044F.</div>\n <br />\n <div class=\"font-bold\">\n \u041D\u043E\u043C\u0435\u0440 \u0432\u0430\u0448\u0435\u0433\u043E \u0437\u0430\u043A\u0430\u0437\u0430: <a tuiLink [pseudo]=\"true\" (click)=\"backToOrderClick.emit()\">{{orderId}}</a>\n </div>\n\n <button tuiButton (click)=\"backToOrdersClick.emit()\">\u0412\u0435\u0440\u043D\u0443\u0442\u044C\u0441\u044F \u043A \u0437\u0430\u043A\u0430\u0437\u0430\u043C</button>\n </tui-block-status>\n <tui-block-status *ngSwitchCase=\"'error'\">\n <tui-svg src=\"tuiIconXCircleLarge\" class=\"scale-[3] !h-20 !text-red-500\" tuiSlot=\"top\"></tui-svg>\n <h4>\u041E\u043F\u043B\u0430\u0442\u0430 \u043D\u0435 \u043F\u0440\u043E\u0448\u043B\u0430!</h4>\n <br />\n <div class=\"font-bold\">\u041F\u0440\u0438 \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u043A\u0435 \u043F\u043B\u0430\u0442\u0435\u0436\u0430 \u043F\u0440\u043E\u0438\u0437\u043E\u0448\u043B\u0430 \u043E\u0448\u0438\u0431\u043A\u0430.</div>\n <button tuiButton tuiItem (click)=\"backToOrderClick.emit()\">\u0412\u0435\u0440\u043D\u0443\u0442\u044C\u0441\u044F \u043A \u0437\u0430\u043A\u0430\u0437\u0443</button>\n </tui-block-status>\n </ng-container>\n</ng-container>\n\n<ng-template #failed>\n <tui-block-status>\n <tui-svg src=\"tuiIconInfoLarge\" class=\"scale-[3] !h-20 !text-yellow-500\" tuiSlot=\"top\"></tui-svg>\n <h4>\u0427\u0442\u043E-\u0442\u043E \u043F\u043E\u0448\u043B\u043E \u043D\u0435 \u0442\u0430\u043A!</h4>\n <button tuiButton tuiItem (click)=\"backToOrdersClick.emit()\">\u0412\u0435\u0440\u043D\u0443\u0442\u044C\u0441\u044F \u043A \u0437\u0430\u043A\u0430\u0437\u0430\u043C</button>\n </tui-block-status>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: i4.TuiLinkComponent, selector: "a[tuiLink], button[tuiLink]", inputs: ["pseudo", "icon", "iconAlign", "iconRotated", "mode"], exportAs: ["tuiLink"] }, { kind: "component", type: i4.TuiButtonComponent, selector: "button[tuiButton], button[tuiIconButton], a[tuiButton], a[tuiIconButton]", inputs: ["appearance", "disabled", "icon", "iconRight", "shape", "showLoader", "size"] }, { kind: "component", type: i4.TuiSvgComponent, selector: "tui-svg", inputs: ["src"] }, { kind: "component", type: i3$2.TuiBlockStatusComponent, selector: "tui-block-status", inputs: ["card"] }, { kind: "directive", type: i3$2.TuiBlockStatusDirective, selector: "[tuiSlot]", inputs: ["tuiSlot"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
4465
4269
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScPaymentStatusComponent, decorators: [{
4466
4270
  type: Component,
4467
4271
  args: [{ selector: 'sc-payment-status', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"status && orderId; else failed\">\n <ng-container [ngSwitch]=\"status\">\n <tui-block-status *ngSwitchCase=\"'success'\">\n <tui-svg src=\"tuiIconCheckCircleLarge\" tuiSlot=\"top\" class=\"scale-[3] !h-20 !text-green-500\"></tui-svg>\n <h4>\u0421\u043F\u0430\u0441\u0438\u0431\u043E!</h4>\n <br />\n <div class=\"font-bold\">\u0412\u0430\u0448 \u0437\u0430\u043A\u0430\u0437 \u0443\u0441\u043F\u0435\u0448\u043D\u043E \u043E\u043F\u043B\u0430\u0447\u0435\u043D. \u041C\u044B \u0441\u0432\u044F\u0436\u0435\u043C\u0441\u044F \u0441 \u0432\u0430\u043C\u0438 \u0432 \u0431\u043B\u0438\u0436\u0430\u0439\u0448\u0435\u0435 \u0432\u0440\u0435\u043C\u044F.</div>\n <br />\n <div class=\"font-bold\">\n \u041D\u043E\u043C\u0435\u0440 \u0432\u0430\u0448\u0435\u0433\u043E \u0437\u0430\u043A\u0430\u0437\u0430: <a tuiLink [pseudo]=\"true\" (click)=\"backToOrderClick.emit()\">{{orderId}}</a>\n </div>\n\n <button tuiButton (click)=\"backToOrdersClick.emit()\">\u0412\u0435\u0440\u043D\u0443\u0442\u044C\u0441\u044F \u043A \u0437\u0430\u043A\u0430\u0437\u0430\u043C</button>\n </tui-block-status>\n <tui-block-status *ngSwitchCase=\"'error'\">\n <tui-svg src=\"tuiIconXCircleLarge\" class=\"scale-[3] !h-20 !text-red-500\" tuiSlot=\"top\"></tui-svg>\n <h4>\u041E\u043F\u043B\u0430\u0442\u0430 \u043D\u0435 \u043F\u0440\u043E\u0448\u043B\u0430!</h4>\n <br />\n <div class=\"font-bold\">\u041F\u0440\u0438 \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u043A\u0435 \u043F\u043B\u0430\u0442\u0435\u0436\u0430 \u043F\u0440\u043E\u0438\u0437\u043E\u0448\u043B\u0430 \u043E\u0448\u0438\u0431\u043A\u0430.</div>\n <button tuiButton tuiItem (click)=\"backToOrderClick.emit()\">\u0412\u0435\u0440\u043D\u0443\u0442\u044C\u0441\u044F \u043A \u0437\u0430\u043A\u0430\u0437\u0443</button>\n </tui-block-status>\n </ng-container>\n</ng-container>\n\n<ng-template #failed>\n <tui-block-status>\n <tui-svg src=\"tuiIconInfoLarge\" class=\"scale-[3] !h-20 !text-yellow-500\" tuiSlot=\"top\"></tui-svg>\n <h4>\u0427\u0442\u043E-\u0442\u043E \u043F\u043E\u0448\u043B\u043E \u043D\u0435 \u0442\u0430\u043A!</h4>\n <button tuiButton tuiItem (click)=\"backToOrdersClick.emit()\">\u0412\u0435\u0440\u043D\u0443\u0442\u044C\u0441\u044F \u043A \u0437\u0430\u043A\u0430\u0437\u0430\u043C</button>\n </tui-block-status>\n</ng-template>\n" }]