@snabcentr/client-ui 0.17.4 → 0.19.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of @snabcentr/client-ui might be problematic. Click here for more details.
- 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
|
/**
|
@@ -292,11 +288,9 @@ class ScSignInFormByPhoneComponent {
|
|
292
288
|
* Инициализирует экземпляр класса {@link ScSignInFormByPhoneComponent}.
|
293
289
|
*
|
294
290
|
* @param authService Сервис аутентификации.
|
295
|
-
* @param userMetrikaService Сервис для сбора метрик о действиях пользователей.
|
296
291
|
*/
|
297
|
-
constructor(authService
|
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 }
|
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 }
|
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
|
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 }
|
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 }
|
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
|
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
|
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: {
|
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
|
1758
|
+
* @param catalogService Сервис для работы с каталогом.
|
1759
|
+
* @param months$ Перечисление месяцев.
|
1760
|
+
* @param context Контекст диалогового окна, в котором открыт компонент.
|
1844
1761
|
*/
|
1845
|
-
constructor(
|
1846
|
-
this.
|
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.
|
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.
|
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
|
-
|
1863
|
-
|
1864
|
-
|
1865
|
-
|
1866
|
-
.
|
1867
|
-
|
1868
|
-
|
1869
|
-
|
1870
|
-
return
|
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
|
-
*
|
1796
|
+
* Вычисляет подписи даты к оси X.
|
1892
1797
|
*
|
1893
|
-
* @param
|
1894
|
-
|
1895
|
-
|
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
|
-
|
1906
|
-
|
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
|
1919
|
-
* @param
|
1920
|
-
* @param
|
1808
|
+
* @param param0 {@link TuiDayRange} Временной промежуток истории цен.
|
1809
|
+
* @param param0.from {@link TuiDay} Дата начала истории цен.
|
1810
|
+
* @param param0.to {@link TuiDay} Дата конца истории цен.
|
1811
|
+
* @param history История цен.
|
1921
1812
|
*/
|
1922
|
-
|
1923
|
-
|
1924
|
-
|
1925
|
-
|
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:
|
1930
|
-
ScPriceHistoryComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ScPriceHistoryComponent, selector: "sc-price-history", inputs: {
|
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 <
|
1934
|
-
}], ctorParameters: function () { return [{ type:
|
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,
|
2007
|
+
TuiElasticContainerModule,
|
2008
|
+
TuiLetModule,
|
2210
2009
|
TuiRepeatTimesModule,
|
2211
|
-
TuiHighlightModule
|
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$
|
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" }]
|