@snabcentr/client-ui 0.17.4 → 0.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of @snabcentr/client-ui might be problematic. Click here for more details.

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" }]