@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.
- package/auth/sc-sign-in-form/sc-sign-in-form-by-email/sc-sign-in-form-by-email.component.d.ts +4 -8
- package/auth/sc-sign-in-form/sc-sign-in-form-by-phone/sc-sign-in-form-by-phone.component.d.ts +3 -8
- package/auth/sc-sign-in-form/sc-sign-in-form.component.d.ts +8 -4
- package/catalog/price-history/sc-price-history.component.d.ts +44 -43
- package/catalog/sc-catalog.module.d.ts +3 -3
- package/esm2020/auth/sc-sign-in-form/sc-sign-in-form-by-email/sc-sign-in-form-by-email.component.mjs +4 -16
- package/esm2020/auth/sc-sign-in-form/sc-sign-in-form-by-phone/sc-sign-in-form-by-phone.component.mjs +4 -16
- package/esm2020/auth/sc-sign-in-form/sc-sign-in-form.component.mjs +24 -6
- package/esm2020/banner/sc-banner.component.mjs +4 -2
- package/esm2020/catalog/price-history/sc-price-history.component.mjs +85 -79
- package/esm2020/catalog/sc-catalog.module.mjs +12 -15
- package/fesm2015/snabcentr-client-ui.mjs +125 -321
- package/fesm2015/snabcentr-client-ui.mjs.map +1 -1
- package/fesm2020/snabcentr-client-ui.mjs +123 -320
- package/fesm2020/snabcentr-client-ui.mjs.map +1 -1
- package/package.json +3 -5
- package/styles/tailwind/tailwind.scss +0 -24
- package/catalog/price-history/sc-chart-option.d.ts +0 -7
- package/catalog/price-history/sc-i-chart-data-item.d.ts +0 -13
- package/catalog/price-history/sc-lang-ru.d.ts +0 -115
- package/esm2020/catalog/price-history/sc-chart-option.mjs +0 -79
- package/esm2020/catalog/price-history/sc-i-chart-data-item.mjs +0 -2
- 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
|
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,
|
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
|
31
|
-
import {
|
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$
|
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
|
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 }
|
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 }
|
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
|
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 }
|
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 }
|
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
|
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
|
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: {
|
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
|
1792
|
+
* @param catalogService Сервис для работы с каталогом.
|
1793
|
+
* @param months$ Перечисление месяцев.
|
1794
|
+
* @param context Контекст диалогового окна, в котором открыт компонент.
|
1878
1795
|
*/
|
1879
|
-
constructor(
|
1880
|
-
this.
|
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.
|
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.
|
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
|
-
|
1897
|
-
|
1898
|
-
|
1899
|
-
|
1900
|
-
.
|
1901
|
-
|
1902
|
-
|
1903
|
-
|
1904
|
-
return
|
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
|
-
*
|
1830
|
+
* Вычисляет подписи даты к оси X.
|
1927
1831
|
*
|
1928
|
-
* @param
|
1929
|
-
|
1930
|
-
|
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
|
-
|
1941
|
-
|
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
|
1954
|
-
* @param
|
1955
|
-
* @param
|
1842
|
+
* @param param0 {@link TuiDayRange} Временной промежуток истории цен.
|
1843
|
+
* @param param0.from {@link TuiDay} Дата начала истории цен.
|
1844
|
+
* @param param0.to {@link TuiDay} Дата конца истории цен.
|
1845
|
+
* @param history История цен.
|
1956
1846
|
*/
|
1957
|
-
|
1958
|
-
|
1959
|
-
|
1960
|
-
|
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:
|
1965
|
-
ScPriceHistoryComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ScPriceHistoryComponent, selector: "sc-price-history", inputs: {
|
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 <
|
1969
|
-
}], ctorParameters: function () {
|
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,
|
2045
|
+
TuiElasticContainerModule,
|
2046
|
+
TuiLetModule,
|
2247
2047
|
TuiRepeatTimesModule,
|
2248
|
-
TuiHighlightModule
|
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$
|
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" }]
|