@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
  /**
@@ -292,11 +288,9 @@ class ScSignInFormByPhoneComponent {
292
288
  * Инициализирует экземпляр класса {@link ScSignInFormByPhoneComponent}.
293
289
  *
294
290
  * @param authService Сервис аутентификации.
295
- * @param userMetrikaService Сервис для сбора метрик о действиях пользователей.
296
291
  */
297
- constructor(authService, userMetrikaService) {
292
+ constructor(authService) {
298
293
  this.authService = authService;
299
- this.userMetrikaService = userMetrikaService;
300
294
  /**
301
295
  * Наличие кода подтверждения у пользователя.
302
296
  */
@@ -330,22 +324,13 @@ class ScSignInFormByPhoneComponent {
330
324
  */
331
325
  this.loading$ = this.request$.pipe(map(tuiIsFalsy));
332
326
  }
333
- /** @inheritDoc */
334
- ngOnInit() {
335
- this.userMetrikaService.emitUserMetrikaEvent({
336
- target: ScUserMetrikaGoalsEnum.signInShow,
337
- params: {
338
- type: 'phone',
339
- },
340
- });
341
- }
342
327
  }
343
- 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 });
328
+ ScSignInFormByPhoneComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScSignInFormByPhoneComponent, deps: [{ token: i1.ScAuthService }], target: i0.ɵɵFactoryTarget.Component });
344
329
  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 });
345
330
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScSignInFormByPhoneComponent, decorators: [{
346
331
  type: Component,
347
332
  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" }]
348
- }], ctorParameters: function () { return [{ type: i1.ScAuthService }, { type: i1.ScUserMetrikaService }]; } });
333
+ }], ctorParameters: function () { return [{ type: i1.ScAuthService }]; } });
349
334
 
350
335
  /**
351
336
  * Компонент аутентификации по адресу электронной почты и паролю.
@@ -355,11 +340,9 @@ class ScSignInFormByEmailComponent {
355
340
  * Инициализирует экземпляр класса {@link ScSignInFormByEmailComponent}.
356
341
  *
357
342
  * @param authService Сервис аутентификации.
358
- * @param userMetrikaService Сервис для сбора метрик о действиях пользователей.
359
343
  */
360
- constructor(authService, userMetrikaService) {
344
+ constructor(authService) {
361
345
  this.authService = authService;
362
- this.userMetrikaService = userMetrikaService;
363
346
  /**
364
347
  * Группа полей ввода для формы «Вход на сайт».
365
348
  */
@@ -393,22 +376,13 @@ class ScSignInFormByEmailComponent {
393
376
  */
394
377
  this.forgotPassword = new EventEmitter();
395
378
  }
396
- /** @inheritDoc */
397
- ngOnInit() {
398
- this.userMetrikaService.emitUserMetrikaEvent({
399
- target: ScUserMetrikaGoalsEnum.signInShow,
400
- params: {
401
- type: 'email',
402
- },
403
- });
404
- }
405
379
  }
406
- 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 });
380
+ ScSignInFormByEmailComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScSignInFormByEmailComponent, deps: [{ token: i1.ScAuthService }], target: i0.ɵɵFactoryTarget.Component });
407
381
  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 });
408
382
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScSignInFormByEmailComponent, decorators: [{
409
383
  type: Component,
410
384
  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" }]
411
- }], ctorParameters: function () { return [{ type: i1.ScAuthService }, { type: i1.ScUserMetrikaService }]; }, propDecorators: { forgotPassword: [{
385
+ }], ctorParameters: function () { return [{ type: i1.ScAuthService }]; }, propDecorators: { forgotPassword: [{
412
386
  type: Output
413
387
  }] } });
414
388
 
@@ -420,9 +394,11 @@ class ScSignInFormComponent {
420
394
  * Инициализирует экземпляр класса {@link ScSignInFormComponent}.
421
395
  *
422
396
  * @param authService Сервис аутентификации.
397
+ * @param userMetrikaService Сервис для сбора метрик о действиях пользователей.
423
398
  */
424
- constructor(authService) {
399
+ constructor(authService, userMetrikaService) {
425
400
  this.authService = authService;
401
+ this.userMetrikaService = userMetrikaService;
426
402
  /**
427
403
  * Выбранный способ аутентификации.
428
404
  */
@@ -444,6 +420,15 @@ class ScSignInFormComponent {
444
420
  */
445
421
  this.successAuth = this.authService.getAuthChange().pipe(filter((state) => state));
446
422
  }
423
+ /** @inheritDoc */
424
+ ngOnInit() {
425
+ this.userMetrikaService.emitUserMetrikaEvent({
426
+ target: ScUserMetrikaGoalsEnum.signInShow,
427
+ params: {
428
+ type: this.authMethod,
429
+ },
430
+ });
431
+ }
447
432
  /**
448
433
  * Осуществляет переключение способов аутентификации.
449
434
  *
@@ -451,6 +436,12 @@ class ScSignInFormComponent {
451
436
  */
452
437
  switchAuth(authMethod) {
453
438
  this.authMethod = authMethod;
439
+ this.userMetrikaService.emitUserMetrikaEvent({
440
+ target: ScUserMetrikaGoalsEnum.signInShow,
441
+ params: {
442
+ type: authMethod,
443
+ },
444
+ });
454
445
  }
455
446
  /**
456
447
  * Обрабатывает нажатие на кнопку "Забыли пароль" и выдает сигнал об этом.
@@ -459,12 +450,12 @@ class ScSignInFormComponent {
459
450
  this.forgotPassword.emit();
460
451
  }
461
452
  }
462
- ScSignInFormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScSignInFormComponent, deps: [{ token: i1.ScAuthService }], target: i0.ɵɵFactoryTarget.Component });
463
- 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 });
453
+ 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 });
454
+ 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 });
464
455
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScSignInFormComponent, decorators: [{
465
456
  type: Component,
466
- 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" }]
467
- }], ctorParameters: function () { return [{ type: i1.ScAuthService }]; }, propDecorators: { authMethod: [{
457
+ 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" }]
458
+ }], ctorParameters: function () { return [{ type: i1.ScAuthService }, { type: i1.ScUserMetrikaService }]; }, propDecorators: { authMethod: [{
468
459
  type: Input
469
460
  }], forgotPassword: [{
470
461
  type: Output
@@ -896,7 +887,9 @@ let ScBannerComponent = class ScBannerComponent {
896
887
  onClick(banner) {
897
888
  this.userMetrikaService.emitUserMetrikaEvent({
898
889
  target: ScUserMetrikaGoalsEnum.bannerClick,
899
- params: { banner_id: banner.id },
890
+ params: {
891
+ banner_id: banner.id,
892
+ },
900
893
  });
901
894
  if (banner.url) {
902
895
  this.clickBannerEvent.emit(banner);
@@ -1755,185 +1748,107 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
1755
1748
  args: ['attr.data-size']
1756
1749
  }] } });
1757
1750
 
1758
- /**
1759
- * Настройки отрисовки графика.
1760
- *
1761
- * @see [Документация](https://echarts.apache.org/en/option.html#title)
1762
- */
1763
- const scChartOption = {
1764
- grid: {
1765
- top: 12,
1766
- left: 64,
1767
- right: 0,
1768
- bottom: 24
1769
- },
1770
- tooltip: {
1771
- trigger: 'axis',
1772
- formatter: (params) => {
1773
- const data = Array.isArray(params) ? params[0].data : params.data;
1774
- const date = new Date(data.value[0]);
1775
- const nextDate = new Date(data.value[2]);
1776
- return `
1777
- <div class="text-center text-black">
1778
- <span class="font-bold">${data.value[1]} ₽</span>
1779
- </br>
1780
- <span class="text-xs">${formatDate(date, 'dd.MM', 'en')} - ${formatDate(nextDate, 'dd.MM', 'en')}</span>
1781
- </div>
1782
- `;
1783
- },
1784
- axisPointer: {
1785
- animation: false,
1786
- type: 'cross'
1787
- },
1788
- textStyle: {
1789
- fontFamily: 'Roboto, "Helvetica Neue", sans-serif'
1790
- }
1791
- },
1792
- xAxis: {
1793
- type: 'time',
1794
- splitLine: {
1795
- show: false
1796
- },
1797
- axisLine: {
1798
- show: false
1799
- },
1800
- axisTick: {
1801
- show: false
1802
- },
1803
- axisLabel: {
1804
- hideOverlap: true
1805
- },
1806
- boundaryGap: ['3%', '3%']
1807
- },
1808
- yAxis: {
1809
- splitLine: {
1810
- show: false
1811
- },
1812
- axisLine: {
1813
- show: false
1814
- },
1815
- axisTick: {
1816
- show: false
1817
- },
1818
- axisLabel: {
1819
- formatter: (value) => tuiFormatNumber(value)
1820
- },
1821
- type: 'value',
1822
- boundaryGap: [0, '100%']
1823
- },
1824
- series: {
1825
- name: 'История цены',
1826
- type: 'line',
1827
- showSymbol: false,
1828
- symbolSize: 12,
1829
- itemStyle: {
1830
- color: '#ffcc40'
1831
- }
1832
- }
1833
- };
1834
-
1835
1751
  /**
1836
1752
  * График истории цен товара или услуги.
1837
- * TODO: TASK[#7482] Перепроверить возможность использования TuiLineDaysChart.
1838
1753
  */
1839
1754
  class ScPriceHistoryComponent {
1840
1755
  /**
1841
1756
  * Инициализирует экземпляр класса {@link ScPriceHistoryComponent}.
1842
1757
  *
1843
- * @param cdr Объект для работы с обнаружением изменений.
1758
+ * @param catalogService Сервис для работы с каталогом.
1759
+ * @param months$ Перечисление месяцев.
1760
+ * @param context Контекст диалогового окна, в котором открыт компонент.
1844
1761
  */
1845
- constructor(cdr) {
1846
- this.cdr = cdr;
1847
- /**
1848
- * Настройки графика.
1849
- */
1850
- this.initOption = { locale: 'RU' };
1762
+ constructor(catalogService, months$, context) {
1763
+ this.catalogService = catalogService;
1764
+ this.months$ = months$;
1765
+ this.context = context;
1851
1766
  /**
1852
- * Параметры отрисовки графика истории цены.
1767
+ * {@link Observable} функция для преобразования значения number в строку в подсказке по оси X.
1853
1768
  */
1854
- this.chartOption = scChartOption;
1769
+ this.xStringify$ = this.months$.pipe(map((months) => ({ month, day }) =>
1770
+ // eslint-disable-next-line security/detect-object-injection
1771
+ `${months[month]}, ${day}`));
1855
1772
  /**
1856
- * Данные об истории цены на товар или услугу.
1773
+ * Функция для преобразования значения number в строку в подсказке по оси Y.
1774
+ *
1775
+ * @param value Значение оси Y.
1857
1776
  */
1858
- this.data = [];
1777
+ this.yStringify = (value) => `${value.toLocaleString('ru-RU')} ₽`;
1778
+ if (context) {
1779
+ this.product = context.data.product;
1780
+ }
1859
1781
  }
1860
1782
  /** @inheritDoc */
1861
1783
  ngOnInit() {
1862
- if (this.chartOption.series && !Array.isArray(this.chartOption.series)) {
1863
- this.chartOption.series.data = [];
1864
- }
1865
- Object.keys(this.history)
1866
- .map((key) => {
1867
- // ? Можно избежать переведя даты в api в формат ECMAScript® 2023: https://tc39.es/ecma262/#sec-date-time-string-format
1868
- const dataString = key.split('.').reverse();
1869
- const data = new Date(+dataString[0], +dataString[1] - 1, +dataString[2]);
1870
- return { data: data, cost: this.history[String(key)].cost };
1871
- })
1872
- .sort((a, b) => +a.data - +b.data)
1873
- .forEach((item, index, array) => {
1874
- let nextDate;
1875
- // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
1876
- if (array[index + 1]?.data) {
1877
- nextDate = new Date(array[index + 1]?.data);
1878
- nextDate.setDate(nextDate.getDate() - 1);
1879
- }
1880
- else {
1881
- nextDate = new Date();
1882
- }
1883
- this.pushDataItem(item.cost, item.data, nextDate);
1884
- });
1885
- // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
1886
- if (this.eChartsInstance) {
1887
- this.setChartData();
1888
- }
1784
+ this.history$ = this.catalogService.getPriceHistory$(this.product).pipe(map((history) => Object.keys(history)
1785
+ .map((item) => [TuiDay.normalizeParse(item, 'DMY'), history[String(item)].cost])
1786
+ .sort((a, b) => (a[0] > b[0] ? 1 : -1))), shareReplay({ bufferSize: 1, refCount: true }), filter((history) => history.length > 1));
1787
+ this.priceInfo$ = this.history$.pipe(map((history) => history.map((item) => item[1])), map((values) => ({
1788
+ min: Math.min(...values),
1789
+ max: Math.max(...values),
1790
+ })));
1791
+ this.range$ = this.history$.pipe(map((value) => ({ from: value.at(0)?.[0], to: value.at(-1)?.[0] })), filter((range) => !!range.from && !!range.to), map((range) => {
1792
+ return new TuiDayRange(range.from, range.to);
1793
+ }));
1889
1794
  }
1890
1795
  /**
1891
- * Перехватчик жизненного цикла {@link ECharts}, который вызывается при его инициализации.
1796
+ * Вычисляет подписи даты к оси X.
1892
1797
  *
1893
- * @param eChartsInstance Экземпляр {@link ECharts}.
1894
- */
1895
- // eslint-disable-next-line unicorn/prevent-abbreviations
1896
- onChartInit(eChartsInstance) {
1897
- this.eChartsInstance = eChartsInstance;
1898
- if (this.data.length > 0) {
1899
- this.setChartData();
1900
- }
1901
- }
1902
- /**
1903
- * Устанавливает новые данные {@link ScPriceHistoryComponent.eChartsInstance}.
1798
+ * @param param0 {@link TuiDayRange} Временной промежуток истории цен.
1799
+ * @param param0.from {@link TuiDay} Дата начала истории цен.
1800
+ * @param param0.to {@link TuiDay} Дата конца истории цен.
1904
1801
  */
1905
- setChartData() {
1906
- if (this.chartOption.series && !Array.isArray(this.chartOption.series)) {
1907
- this.maxPrice = Math.max(...this.data.map((item) => item.value[1]));
1908
- this.minPrice = Math.min(...this.data.map((item) => item.value[1]));
1909
- this.chartOption.series.data = this.data;
1910
- this.eChartsInstance.clear();
1911
- this.eChartsInstance.setOption(this.chartOption, true, true);
1912
- this.cdr.markForCheck();
1913
- }
1802
+ computeLabels$({ from, to }) {
1803
+ return this.months$.pipe(map((months) => Array.from({ length: TuiMonth.lengthBetween(from, to) + 1 }, (_, index) => months[from.append({ month: index }).month])));
1914
1804
  }
1915
1805
  /**
1916
- * Добавляет значение цены товара в массив истории цен.
1806
+ * Вычисляет данные для отображения на графике.
1917
1807
  *
1918
- * @param value Цена товара или услуги.
1919
- * @param date Дата установки цены.
1920
- * @param nextDate Следующая дата установки цены.
1808
+ * @param param0 {@link TuiDayRange} Временной промежуток истории цен.
1809
+ * @param param0.from {@link TuiDay} Дата начала истории цен.
1810
+ * @param param0.to {@link TuiDay} Дата конца истории цен.
1811
+ * @param history История цен.
1921
1812
  */
1922
- pushDataItem(value, date, nextDate) {
1923
- this.data.push({
1924
- name: date.toString(),
1925
- value: [date, value, nextDate],
1926
- });
1813
+ computeValue({ from, to }, history) {
1814
+ return (Array.from({ length: TuiDay.lengthBetween(from, to) + 1 })
1815
+ .fill(0)
1816
+ // eslint-disable-next-line unicorn/no-array-reduce
1817
+ .reduce((array, _, index) => {
1818
+ const data = from.append({ day: index });
1819
+ return [
1820
+ ...array,
1821
+ [
1822
+ data,
1823
+ (history.find((valueHistory, indexHistory, arrayHistory) => data.daySame(valueHistory[0]) || data.dayBefore(arrayHistory[indexHistory + 1][0])) ??
1824
+ history[0])[1],
1825
+ ],
1826
+ ];
1827
+ }, []));
1927
1828
  }
1928
1829
  }
1929
- ScPriceHistoryComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScPriceHistoryComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
1930
- 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 });
1830
+ 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 });
1831
+ 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 });
1832
+ __decorate([
1833
+ tuiPure
1834
+ ], ScPriceHistoryComponent.prototype, "computeLabels$", null);
1835
+ __decorate([
1836
+ tuiPure
1837
+ ], ScPriceHistoryComponent.prototype, "computeValue", null);
1931
1838
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScPriceHistoryComponent, decorators: [{
1932
1839
  type: Component,
1933
- 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" }]
1934
- }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { history: [{
1840
+ 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" }]
1841
+ }], ctorParameters: function () { return [{ type: i1.ScCatalogService }, { type: i10.Observable, decorators: [{
1842
+ type: Inject,
1843
+ args: [TUI_MONTHS]
1844
+ }] }, { type: undefined, decorators: [{
1845
+ type: Optional
1846
+ }, {
1847
+ type: Inject,
1848
+ args: [POLYMORPHEUS_CONTEXT]
1849
+ }] }]; }, propDecorators: { product: [{
1935
1850
  type: Input
1936
- }] } });
1851
+ }], computeLabels$: [], computeValue: [] } });
1937
1852
 
1938
1853
  /**
1939
1854
  * Значения пагинации списка товаров категории по умолчанию.
@@ -2061,123 +1976,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
2061
1976
  type: Input
2062
1977
  }] } });
2063
1978
 
2064
- /**
2065
- * Language: Russian.
2066
- */
2067
- var scLangRU = {
2068
- time: {
2069
- month: ['Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь'],
2070
- monthAbbr: ['Янв', 'Фев', 'Мар', 'Апр', 'Май', 'Июн', 'Июл', 'Авг', 'Сен', 'Окт', 'Ноя', 'Дек'],
2071
- dayOfWeek: ['Воскресенье', 'Понедельник', 'Вторник', 'Среда', 'Четверг', 'Пятница', 'Суббота'],
2072
- dayOfWeekAbbr: ['вс', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'],
2073
- },
2074
- legend: {
2075
- selector: {
2076
- all: 'Всё',
2077
- inverse: 'Обратить',
2078
- },
2079
- },
2080
- toolbox: {
2081
- brush: {
2082
- title: {
2083
- rect: 'Выделить область',
2084
- polygon: 'Инструмент «Лассо»',
2085
- lineX: 'Горизонтальное выделение',
2086
- lineY: 'Вертикальное выделение',
2087
- keep: 'Оставить выбранное',
2088
- clear: 'Очистить выбранное',
2089
- },
2090
- },
2091
- dataView: {
2092
- title: 'Данные',
2093
- lang: ['Данные', 'Закрыть', 'Обновить'],
2094
- },
2095
- dataZoom: {
2096
- title: {
2097
- zoom: 'Увеличить',
2098
- back: 'Сбросить увеличение',
2099
- },
2100
- },
2101
- magicType: {
2102
- title: {
2103
- line: 'Переключиться на линейный график',
2104
- bar: 'Переключиться на столбчатую диаграмму',
2105
- stack: 'Стопка',
2106
- tiled: 'Плитка',
2107
- },
2108
- },
2109
- restore: {
2110
- title: 'Восстановить',
2111
- },
2112
- saveAsImage: {
2113
- title: 'Сохранить картинку',
2114
- lang: ['Правый клик, чтобы сохранить картинку'],
2115
- },
2116
- },
2117
- series: {
2118
- typeNames: {
2119
- pie: 'Круговая диаграмма',
2120
- bar: 'Столбчатая диаграмма',
2121
- line: 'Линейный график',
2122
- scatter: 'Точечная диаграмма',
2123
- effectScatter: 'Точечная диаграмма с волнами',
2124
- radar: 'Лепестковая диаграмма',
2125
- tree: 'Дерево',
2126
- treemap: 'Плоское дерево',
2127
- boxplot: 'Ящик с усами',
2128
- candlestick: 'Свечной график',
2129
- k: 'График К-линий',
2130
- heatmap: 'Тепловая карта',
2131
- map: 'Карта',
2132
- parallel: 'Диаграмма параллельных координат',
2133
- lines: 'Линейный граф',
2134
- graph: 'Граф отношений',
2135
- sankey: 'Диаграмма Санкей',
2136
- funnel: 'Воронкообразная диаграмма',
2137
- gauge: 'Шкала',
2138
- pictorialBar: 'Столбец-картинка',
2139
- themeRiver: 'Тематическая река',
2140
- sunburst: 'Солнечные лучи',
2141
- custom: '',
2142
- chart: '',
2143
- },
2144
- },
2145
- aria: {
2146
- general: {
2147
- withTitle: 'Это график, показывающий "{title}"',
2148
- withoutTitle: 'Это график',
2149
- },
2150
- series: {
2151
- single: {
2152
- prefix: '',
2153
- withName: ' с типом {seriesType} и именем {seriesName}.',
2154
- withoutName: ' с типом {seriesType}.',
2155
- },
2156
- multiple: {
2157
- prefix: '. Он состоит из {seriesCount} серий.',
2158
- withName: ' Серия {seriesId} имеет тип {seriesType} и показывает {seriesName}.',
2159
- withoutName: ' Серия {seriesId} имеет тип {seriesType}.',
2160
- separator: {
2161
- middle: '',
2162
- end: '',
2163
- },
2164
- },
2165
- },
2166
- data: {
2167
- allData: 'Данные таковы: ',
2168
- partialData: 'Первые {displayCnt} элементов: ',
2169
- withName: 'значение для {name} — {value}',
2170
- withoutName: '{value}',
2171
- separator: {
2172
- middle: ', ',
2173
- end: '. ',
2174
- },
2175
- },
2176
- },
2177
- };
2178
-
2179
- echarts.registerLocale('RU', scLangRU);
2180
- echarts.use([TitleComponent, TooltipComponent, GridComponent, LineChart, SVGRenderer]);
2181
1979
  /**
2182
1980
  * Модуль каталога.
2183
1981
  */
@@ -2206,9 +2004,12 @@ ScCatalogModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version
2206
2004
  TuiFieldErrorPipeModule,
2207
2005
  TuiLoaderModule,
2208
2006
  TuiLinkModule,
2209
- TuiElasticContainerModule, i2$2.NgxEchartsModule, TuiLetModule,
2007
+ TuiElasticContainerModule,
2008
+ TuiLetModule,
2210
2009
  TuiRepeatTimesModule,
2211
- TuiHighlightModule], exports: [ScPriceListPaginationComponent,
2010
+ TuiHighlightModule,
2011
+ TuiLineDaysChartModule,
2012
+ TuiAxesModule], exports: [ScPriceListPaginationComponent,
2212
2013
  ScCategoryCardComponent,
2213
2014
  ScFavoriteBtnComponent,
2214
2015
  ScInputQuantityComponent,
@@ -2232,10 +2033,11 @@ ScCatalogModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version
2232
2033
  TuiLoaderModule,
2233
2034
  TuiLinkModule,
2234
2035
  TuiElasticContainerModule,
2235
- NgxEchartsModule.forRoot({ echarts }),
2236
2036
  TuiLetModule,
2237
2037
  TuiRepeatTimesModule,
2238
- TuiHighlightModule] });
2038
+ TuiHighlightModule,
2039
+ TuiLineDaysChartModule,
2040
+ TuiAxesModule] });
2239
2041
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScCatalogModule, decorators: [{
2240
2042
  type: NgModule,
2241
2043
  args: [{
@@ -2276,10 +2078,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
2276
2078
  TuiLoaderModule,
2277
2079
  TuiLinkModule,
2278
2080
  TuiElasticContainerModule,
2279
- NgxEchartsModule.forRoot({ echarts }),
2280
2081
  TuiLetModule,
2281
2082
  TuiRepeatTimesModule,
2282
2083
  TuiHighlightModule,
2084
+ TuiLineDaysChartModule,
2085
+ TuiAxesModule,
2283
2086
  ],
2284
2087
  }]
2285
2088
  }] });
@@ -4391,7 +4194,7 @@ class ScPaymentStatusComponent {
4391
4194
  }
4392
4195
  }
4393
4196
  ScPaymentStatusComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScPaymentStatusComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
4394
- 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 });
4197
+ 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 });
4395
4198
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScPaymentStatusComponent, decorators: [{
4396
4199
  type: Component,
4397
4200
  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" }]