@snabcentr/client-ui 0.11.4 → 0.14.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.component.d.ts +8 -4
- package/banner/sc-banner.component.d.ts +7 -3
- package/cart/cart-item-mobile/sc-cart-item-mobile.component.d.ts +1 -1
- package/contacts/add-contragent-bank-account-dialog/sc-add-contragent-bank-account-dialog.component.d.ts +47 -0
- package/contacts/index.d.ts +2 -0
- package/contacts/new-contragent-bank-account-form/sc-new-contragent-bank-account-form.component.d.ts +55 -0
- package/contacts/sc-contacts.module.d.ts +11 -5
- package/contragents/contragents-accordion/contragents-accordion-item/sc-contragents-accordion-item.component.d.ts +2 -3
- package/contragents/contragents-accordion/sc-contragents-accordion.component.d.ts +1 -1
- package/esm2020/accordion/sc-accordion-content.directive.mjs +2 -2
- package/esm2020/accordion/sc-accordion.component.mjs +1 -1
- package/esm2020/accordion/sc-accordion.module.mjs +2 -2
- package/esm2020/auth/constants/phone-approve-code-mask.mjs +2 -2
- package/esm2020/auth/sc-auth.module.mjs +3 -3
- package/esm2020/auth/sc-sign-in-form/sc-sign-in-form-by-email/sc-sign-in-form-by-email.component.mjs +2 -2
- package/esm2020/auth/sc-sign-in-form/sc-sign-in-form-by-phone/sc-sign-in-form-by-phone.component.mjs +2 -2
- package/esm2020/auth/sc-sign-in-form/sc-sign-in-form.component.mjs +14 -5
- package/esm2020/banner/sc-banner.component.mjs +17 -8
- package/esm2020/banner/sc-banner.module.mjs +2 -2
- package/esm2020/cart/cart-item-mobile/sc-cart-item-mobile.component.mjs +2 -2
- package/esm2020/cart/sc-cart.module.mjs +3 -3
- package/esm2020/catalog/categories-list/sc-categories-list.component.mjs +1 -1
- package/esm2020/catalog/category-card/sc-category-card.component.mjs +2 -2
- package/esm2020/catalog/input-quantity/sc-input-quantity.component.mjs +3 -3
- package/esm2020/catalog/price-card/sc-price-card.component.mjs +1 -1
- package/esm2020/catalog/price-history/sc-chart-option.mjs +18 -18
- package/esm2020/catalog/price-history/sc-lang-RU.mjs +25 -25
- package/esm2020/catalog/price-history/sc-price-history.component.mjs +2 -2
- package/esm2020/catalog/price-list-pagination/sc-price-list-pagination.component.mjs +1 -1
- package/esm2020/catalog/price-warehouse-stock/sc-price-warehouse-stock.component.mjs +1 -1
- package/esm2020/catalog/sc-catalog.module.mjs +5 -5
- package/esm2020/catalog/sc-favorite-btn/sc-favorite-btn.component.mjs +1 -1
- package/esm2020/contacts/add-contragent-bank-account-dialog/sc-add-contragent-bank-account-dialog.component.mjs +72 -0
- package/esm2020/contacts/contacts-accordion/sc-contacts-accordion.component.mjs +1 -1
- package/esm2020/contacts/index.mjs +3 -1
- package/esm2020/contacts/new-contragent-bank-account-form/sc-new-contragent-bank-account-form.component.mjs +61 -0
- package/esm2020/contacts/sc-contacts.module.mjs +75 -7
- package/esm2020/contragents/contragents-accordion/contragents-accordion-item/sc-contragents-accordion-item.component.mjs +3 -3
- package/esm2020/contragents/contragents-accordion/sc-contragents-accordion.component.mjs +3 -3
- package/esm2020/contragents/sc-contragents.module.mjs +2 -2
- package/esm2020/delivery-address/delivery-address-accordion/delivery-address-accordion-item/sc-delivery-address-accordion-item.component.mjs +1 -1
- package/esm2020/delivery-address/delivery-address-accordion/sc-delivery-address-accordion.component.mjs +1 -1
- package/esm2020/delivery-address/sc-delivery-address.module.mjs +2 -2
- package/esm2020/files/directives/tree-top.directive.mjs +8 -8
- package/esm2020/files/directives/tree.directive.mjs +2 -2
- package/esm2020/files/file-tree-item/file-tree-item.component.mjs +2 -2
- package/esm2020/files/files-and-documents.component.mjs +6 -6
- package/esm2020/files/files-and-documents.module.mjs +2 -2
- package/esm2020/files/services/tree-icon.service.mjs +3 -3
- package/esm2020/files/services/tree-loader.service.mjs +2 -2
- package/esm2020/form-fields/addresses-selection-field/sc-addresses-selection-field.component.mjs +21 -16
- package/esm2020/form-fields/form-fields.module.mjs +4 -4
- package/esm2020/form-fields/suggestion-field/sc-suggestion-field.component.mjs +5 -5
- package/esm2020/helpers/sc-px-converter.mjs +2 -2
- package/esm2020/helpers/sc-units-helper.mjs +2 -2
- package/esm2020/icons/sc-client-ui-icons-name.mjs +2 -2
- package/esm2020/masks/index.mjs +4 -0
- package/esm2020/masks/sc-account-number-mask.mjs +7 -0
- package/esm2020/masks/sc-bic-mask.mjs +7 -0
- package/esm2020/masks/sc-correspondent-account-mask.mjs +7 -0
- package/esm2020/news/news-card/sc-news-card.component.mjs +1 -1
- package/esm2020/news/news-card-skeleton/sc-news-card-skeleton.component.mjs +1 -1
- package/esm2020/news/sc-news.module.mjs +2 -2
- package/esm2020/order/index.mjs +2 -1
- package/esm2020/order/order-item-mobile/order-item-mobile.component.mjs +1 -1
- package/esm2020/order/sc-order.module.mjs +8 -6
- package/esm2020/order/sc-payment-status/sc-payment-status.component.mjs +35 -0
- package/esm2020/profile/sc-profile-accordions-content/sc-profile-accordions-content.component.mjs +9 -3
- package/esm2020/profile/sc-profile.module.mjs +3 -3
- package/esm2020/providers/productsPagination.mjs +11 -10
- package/esm2020/providers/scUserProviders.mjs +3 -3
- package/esm2020/share-button/sc-share-button.component.mjs +1 -1
- package/esm2020/share-button/sc-share-button.module.mjs +2 -2
- package/esm2020/tokens/sc-linear-values-token.mjs +2 -2
- package/esm2020/user/reset-user-password/sc-reset-user-password.component.mjs +5 -5
- package/esm2020/user/sc-user.module.mjs +3 -3
- package/esm2020/user/update-user-info-dialog/sc-update-user-info-dialog.component.mjs +4 -4
- package/esm2020/user/user-phone-approve-dialog/sc-user-phone-approve-dialog.component.mjs +3 -3
- package/esm2020/validators/index.mjs +3 -1
- package/esm2020/validators/scBicValidator.mjs +7 -0
- package/esm2020/validators/scCorrespondentAccountValidator.mjs +7 -0
- package/esm2020/validators/scPasswordConfirmMatchingValidator.mjs +8 -9
- package/esm2020/verification/sc-verification.module.mjs +3 -3
- package/esm2020/verification/verification-phone-check-form/sc-verification-phone-check-form.component.mjs +7 -7
- package/fesm2015/snabcentr-client-ui.mjs +878 -609
- package/fesm2015/snabcentr-client-ui.mjs.map +1 -1
- package/fesm2020/snabcentr-client-ui.mjs +875 -609
- package/fesm2020/snabcentr-client-ui.mjs.map +1 -1
- package/files/services/tree-icon.service.d.ts +2 -2
- package/form-fields/addresses-selection-field/sc-addresses-selection-field.component.d.ts +1 -1
- package/masks/index.d.ts +3 -0
- package/masks/sc-account-number-mask.d.ts +5 -0
- package/masks/sc-bic-mask.d.ts +5 -0
- package/masks/sc-correspondent-account-mask.d.ts +5 -0
- package/order/index.d.ts +1 -0
- package/order/sc-order.module.d.ts +6 -4
- package/order/sc-payment-status/sc-payment-status.component.d.ts +25 -0
- package/package.json +1 -1
- package/profile/sc-profile-accordions-content/sc-profile-accordions-content.component.d.ts +5 -1
- package/providers/productsPagination.d.ts +3 -3
- package/styles/tailwind/tailwind.scss +55 -8
- package/validators/index.d.ts +2 -0
- package/validators/scBicValidator.d.ts +5 -0
- package/validators/scCorrespondentAccountValidator.d.ts +5 -0
- package/validators/scPasswordConfirmMatchingValidator.d.ts +2 -1
@@ -1,23 +1,23 @@
|
|
1
1
|
import * as i0 from '@angular/core';
|
2
|
-
import { EventEmitter, Component, ChangeDetectionStrategy, Inject, Input, Output, NgModule, Directive, HostBinding, ContentChild, Injectable, ElementRef, ContentChildren, ViewChild, HostListener, ChangeDetectorRef, Optional, Self, inject, InjectionToken,
|
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, combineLatest, throwError } from 'rxjs';
|
2
|
+
import { EventEmitter, Component, ChangeDetectionStrategy, Inject, Input, Output, NgModule, Directive, HostBinding, ContentChild, Injectable, ElementRef, ContentChildren, ViewChild, HostListener, ChangeDetectorRef, Optional, Self, inject, InjectionToken, SkipSelf, forwardRef } from '@angular/core';
|
5
3
|
import * as i1 from '@snabcentr/client-core';
|
6
|
-
import { SC_URLS, SC_PATH_IMAGE_NOT_FOUND, ScCatalogService, ScCartService, ScAuthService, ScIconTypesEnum, ScUserService
|
4
|
+
import { ScUserMetrikaGoalsEnum, SC_URLS, SC_PATH_IMAGE_NOT_FOUND, ScCatalogService, ScCartService, ScAuthService, ScISuggestionType, 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
8
|
import { CommonModule, formatDate } from '@angular/common';
|
9
9
|
import * as i4 from '@taiga-ui/core';
|
10
|
-
import { TuiTextfieldControllerModule, TuiLinkModule, TuiButtonModule, TuiLabelModule, TuiModeModule, TuiErrorModule, TuiLoaderModule, tuiFadeIn, tuiFormatNumber, TuiSvgModule, TuiHintModule, TuiFormatNumberPipeModule, TuiNotificationModule, TuiFormatPhonePipeModule
|
10
|
+
import { TuiTextfieldControllerModule, TuiLinkModule, TuiButtonModule, TuiLabelModule, TuiModeModule, TuiErrorModule, TuiLoaderModule, tuiFadeIn, tuiFormatNumber, 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 } from '@angular/forms';
|
13
13
|
import * as i5 from '@taiga-ui/cdk';
|
14
14
|
import { tuiControlValue, tuiIsFalsy, TuiLetModule, tuiCreateToken, AbstractTuiNullableControl, TUI_IS_MOBILE, tuiIsPresent, TuiDestroyService, TuiRepeatTimesModule, tuiMarkControlAsTouchedAndValidate, ALWAYS_TRUE_HANDLER, tuiPure } from '@taiga-ui/cdk';
|
15
|
-
import * as
|
16
|
-
import { TuiInputPasswordModule, TuiInputModule, TuiFieldErrorPipeModule, TuiInputPhoneModule, TuiAccordionModule, TuiElasticContainerModule, TuiCarouselModule, TUI_NUMBER_VALUE_TRANSFORMER, TuiInputNumberComponent, TuiIslandModule, TuiInputNumberModule,
|
15
|
+
import * as i6 from '@taiga-ui/kit';
|
16
|
+
import { TuiInputPasswordModule, TuiInputModule, TuiFieldErrorPipeModule, TuiInputPhoneModule, TuiAccordionModule, TuiElasticContainerModule, TuiCarouselModule, TUI_NUMBER_VALUE_TRANSFORMER, TuiInputNumberComponent, TuiIslandModule, TuiInputNumberModule, 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 i7 from '@maskito/angular';
|
18
18
|
import { MaskitoModule } from '@maskito/angular';
|
19
19
|
import * as i2$1 from '@tinkoff/ng-polymorpheus';
|
20
|
-
import { PolymorpheusTemplate, PolymorpheusModule,
|
20
|
+
import { PolymorpheusTemplate, PolymorpheusModule, POLYMORPHEUS_CONTEXT, PolymorpheusComponent } from '@tinkoff/ng-polymorpheus';
|
21
21
|
import { __decorate } from 'tslib';
|
22
22
|
import { untilDestroyed, UntilDestroy } from '@ngneat/until-destroy';
|
23
23
|
import * as i8 from '@ng-web-apis/intersection-observer';
|
@@ -35,6 +35,8 @@ import * as echarts from 'echarts/core';
|
|
35
35
|
import { LineChart } from 'echarts/charts';
|
36
36
|
import { TitleComponent, TooltipComponent, GridComponent } from 'echarts/components';
|
37
37
|
import { SVGRenderer } from 'echarts/renderers';
|
38
|
+
import * as i3$1 from '@taiga-ui/layout';
|
39
|
+
import { TuiBlockStatusModule } from '@taiga-ui/layout';
|
38
40
|
|
39
41
|
/**
|
40
42
|
* Перечисление типов аутентификации.
|
@@ -55,7 +57,7 @@ var AuthMethod;
|
|
55
57
|
* Маска поля ввода кода подтверждения телефона.
|
56
58
|
*/
|
57
59
|
const verificationCodeMask = {
|
58
|
-
mask: /^\d{0,6}
|
60
|
+
mask: /^\d{0,6}$/
|
59
61
|
};
|
60
62
|
|
61
63
|
/**
|
@@ -113,7 +115,7 @@ class ScVerificationPhoneCheckFormComponent {
|
|
113
115
|
this.reloadTimer$.next(seconds);
|
114
116
|
}
|
115
117
|
else {
|
116
|
-
this.phoneControl.setErrors({ serverResponse: (_b = (_a = errorResponse === null || errorResponse === void 0 ? void 0 : errorResponse.errors) === null || _a === void 0 ? void 0 : _a[
|
118
|
+
this.phoneControl.setErrors({ serverResponse: (_b = (_a = errorResponse === null || errorResponse === void 0 ? void 0 : errorResponse.errors) === null || _a === void 0 ? void 0 : _a['phone']) !== null && _b !== void 0 ? _b : [errorResponse.message] });
|
117
119
|
}
|
118
120
|
return of(false);
|
119
121
|
}), finalize(() => this.setHaveCode(true)), startWith(true))), startWith(false), share());
|
@@ -171,8 +173,8 @@ class ScVerificationPhoneCheckFormComponent {
|
|
171
173
|
if (this.shouldBeBusy !== result.isBusy) {
|
172
174
|
this.phoneControl.setErrors({
|
173
175
|
serverResponse: [
|
174
|
-
result.isBusy ? 'Пользователь с таким номером телефона уже существует' : 'Пользователя с таким номером телефона не существует'
|
175
|
-
]
|
176
|
+
result.isBusy ? 'Пользователь с таким номером телефона уже существует' : 'Пользователя с таким номером телефона не существует'
|
177
|
+
]
|
176
178
|
});
|
177
179
|
this.phoneControl.markAsTouched();
|
178
180
|
return false;
|
@@ -182,8 +184,8 @@ class ScVerificationPhoneCheckFormComponent {
|
|
182
184
|
serverResponse: [
|
183
185
|
result.isConfirmed
|
184
186
|
? 'Телефон уже подтверждён'
|
185
|
-
: 'Номер телефона не подтверждён или вход по нему невозможен. Обратитесь к вашему персональному менеджеру или войдите с использованием e-mail и пароля.'
|
186
|
-
]
|
187
|
+
: 'Номер телефона не подтверждён или вход по нему невозможен. Обратитесь к вашему персональному менеджеру или войдите с использованием e-mail и пароля.'
|
188
|
+
]
|
187
189
|
});
|
188
190
|
this.phoneControl.markAsTouched();
|
189
191
|
return false;
|
@@ -192,7 +194,7 @@ class ScVerificationPhoneCheckFormComponent {
|
|
192
194
|
}), catchError((error) => {
|
193
195
|
var _a, _b;
|
194
196
|
const errorResponse = error.error;
|
195
|
-
this.phoneControl.setErrors({ serverResponse: (_b = (_a = errorResponse === null || errorResponse === void 0 ? void 0 : errorResponse.errors) === null || _a === void 0 ? void 0 : _a[
|
197
|
+
this.phoneControl.setErrors({ serverResponse: (_b = (_a = errorResponse === null || errorResponse === void 0 ? void 0 : errorResponse.errors) === null || _a === void 0 ? void 0 : _a['phone']) !== null && _b !== void 0 ? _b : [errorResponse.message] });
|
196
198
|
return of(false);
|
197
199
|
}), startWith(null));
|
198
200
|
}
|
@@ -212,7 +214,7 @@ class ScVerificationPhoneCheckFormComponent {
|
|
212
214
|
}
|
213
215
|
}
|
214
216
|
ScVerificationPhoneCheckFormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScVerificationPhoneCheckFormComponent, deps: [{ token: i1.ScVerificationService }, { token: FormGroupDirective }], target: i0.ɵɵFactoryTarget.Component });
|
215
|
-
ScVerificationPhoneCheckFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ScVerificationPhoneCheckFormComponent, selector: "sc-verification-phone-check-form", inputs: { showCodeFields: "showCodeFields", readOnly: "readOnly", shouldBeBusy: "shouldBeBusy", shouldBeConfirmed: "shouldBeConfirmed", haveCode: "haveCode" }, outputs: { haveCodeChange: "haveCodeChange" }, ngImport: i0, template: "<form [formGroup]=\"form\" *tuiLet=\"(loadingApproveCode$ | async) as loadingApproveCode\" class=\"flex flex-col gap-3\">\n <label tuiLabel=\"\u041D\u043E\u043C\u0435\u0440 \u0442\u0435\u043B\u0435\u0444\u043E\u043D\u0430\">\n <tui-input-phone formControlName=\"phone\" [readOnly]=\"readOnly\" [tuiTextfieldCustomContent]=\"checkingPhone\">\n \u041D\u043E\u043C\u0435\u0440 \u0442\u0435\u043B\u0435\u0444\u043E\u043D\u0430\n <input tuiTextfield autocomplete=\"phone\" />\n </tui-input-phone>\n <tui-error formControlName=\"phone\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <ng-container *ngIf=\"showCodeFields && form.enabled\">\n <label *ngIf=\"loadingApproveCode === false && haveCode\" tuiLabel=\"\u041A\u043E\u0434 \u0438\u0437 \u0421\u041C\u0421\">\n <tui-input formControlName=\"verificationCode\">\n \u041A\u043E\u0434 \u0438\u0437 \u0421\u041C\u0421\n <input tuiTextfield [maskito]=\"verificationCodeMask\" autocomplete=\"new-password\" />\n </tui-input>\n <tui-error formControlName=\"verificationCode\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n\n <div *tuiLet=\"!!loadingApproveCode as loadingApproveCode\" class=\"flex gap-4 justify-center\">\n <button\n *ngIf=\"!haveCode\"\n tuiButton\n (click)=\"onSendCode.next()\"\n [disabled]=\"loadingApproveCode || !!!(phoneCheck$ | async) || phoneControl.invalid\"\n [showLoader]=\"loadingApproveCode\"\n icon=\"scIconLogIn\"\n >\n \u041F\u043E\u043B\u0443\u0447\u0438\u0442\u044C \u043A\u043E\u0434\n </button>\n <button *ngIf=\"!loadingApproveCode && !haveCode\" tuiLink [pseudo]=\"true\" [disabled]=\"!!!(phoneCheck$ | async) || phoneControl.invalid\" (click)=\"setHaveCode(true)\">\n \u0423 \u043C\u0435\u043D\u044F \u0435\u0441\u0442\u044C \u043A\u043E\u0434\n </button>\n\n <ng-container *tuiLet=\"timer$ | async as timer\">\n <tui-loader *ngIf=\"haveCode\" [showLoader]=\"loadingApproveCode\">\n <button tuiLink [pseudo]=\"true\" [disabled]=\"loadingApproveCode || timer\" (click)=\"onSendCode.next()\">\n \u041F\u043E\u0432\u0442\u043E\u0440\u043D\u043E \u043E\u0442\u043F\u0440\u0430\u0432\u0438\u0442\u044C \u043A\u043E\u0434\n <ng-container *ngIf=\"timer\" class=\"!text-tui-base-08\">(\u0447\u0435\u0440\u0435\u0437 {{ timer }})</ng-container>\n </button>\n </tui-loader>\n </ng-container>\n </div>\n </ng-container>\n</form>\n\n<ng-template #checkingPhone>\n <tui-loader *ngIf=\"!!!(phoneCheck$ | async) && phoneControl.valid\" class=\"w-4 h-4\"> </tui-loader>\n</ng-template>\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.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.TuiTextfieldComponent, selector: "input[tuiTextfield], textarea[tuiTextfield]" }, { kind: "component", type:
|
217
|
+
ScVerificationPhoneCheckFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ScVerificationPhoneCheckFormComponent, selector: "sc-verification-phone-check-form", inputs: { showCodeFields: "showCodeFields", readOnly: "readOnly", shouldBeBusy: "shouldBeBusy", shouldBeConfirmed: "shouldBeConfirmed", haveCode: "haveCode" }, outputs: { haveCodeChange: "haveCodeChange" }, ngImport: i0, template: "<form [formGroup]=\"form\" *tuiLet=\"(loadingApproveCode$ | async) as loadingApproveCode\" class=\"flex flex-col gap-3\">\n <label tuiLabel=\"\u041D\u043E\u043C\u0435\u0440 \u0442\u0435\u043B\u0435\u0444\u043E\u043D\u0430\">\n <tui-input-phone formControlName=\"phone\" [readOnly]=\"readOnly\" [tuiTextfieldCustomContent]=\"checkingPhone\">\n \u041D\u043E\u043C\u0435\u0440 \u0442\u0435\u043B\u0435\u0444\u043E\u043D\u0430\n <input tuiTextfield autocomplete=\"phone\" />\n </tui-input-phone>\n <tui-error formControlName=\"phone\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <ng-container *ngIf=\"showCodeFields && form.enabled\">\n <label *ngIf=\"loadingApproveCode === false && haveCode\" tuiLabel=\"\u041A\u043E\u0434 \u0438\u0437 \u0421\u041C\u0421\">\n <tui-input formControlName=\"verificationCode\">\n \u041A\u043E\u0434 \u0438\u0437 \u0421\u041C\u0421\n <input tuiTextfield [maskito]=\"verificationCodeMask\" autocomplete=\"new-password\" />\n </tui-input>\n <tui-error formControlName=\"verificationCode\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n\n <div *tuiLet=\"!!loadingApproveCode as loadingApproveCode\" class=\"flex gap-4 justify-center\">\n <button\n *ngIf=\"!haveCode\"\n tuiButton\n (click)=\"onSendCode.next()\"\n [disabled]=\"loadingApproveCode || !!!(phoneCheck$ | async) || phoneControl.invalid\"\n [showLoader]=\"loadingApproveCode\"\n icon=\"scIconLogIn\"\n >\n \u041F\u043E\u043B\u0443\u0447\u0438\u0442\u044C \u043A\u043E\u0434\n </button>\n <button *ngIf=\"!loadingApproveCode && !haveCode\" tuiLink [pseudo]=\"true\" [disabled]=\"!!!(phoneCheck$ | async) || phoneControl.invalid\" (click)=\"setHaveCode(true)\">\n \u0423 \u043C\u0435\u043D\u044F \u0435\u0441\u0442\u044C \u043A\u043E\u0434\n </button>\n\n <ng-container *tuiLet=\"timer$ | async as timer\">\n <tui-loader *ngIf=\"haveCode\" [showLoader]=\"loadingApproveCode\">\n <button tuiLink [pseudo]=\"true\" [disabled]=\"loadingApproveCode || timer\" (click)=\"onSendCode.next()\">\n \u041F\u043E\u0432\u0442\u043E\u0440\u043D\u043E \u043E\u0442\u043F\u0440\u0430\u0432\u0438\u0442\u044C \u043A\u043E\u0434\n <ng-container *ngIf=\"timer\" class=\"!text-tui-base-08\">(\u0447\u0435\u0440\u0435\u0437 {{ timer }})</ng-container>\n </button>\n </tui-loader>\n </ng-container>\n </div>\n </ng-container>\n</form>\n\n<ng-template #checkingPhone>\n <tui-loader *ngIf=\"!!!(phoneCheck$ | async) && phoneControl.valid\" class=\"w-4 h-4\"> </tui-loader>\n</ng-template>\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.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.TuiTextfieldComponent, selector: "input[tuiTextfield], textarea[tuiTextfield]" }, { kind: "component", type: i6.TuiInputComponent, selector: "tui-input" }, { kind: "directive", type: i6.TuiInputDirective, selector: "tui-input" }, { kind: "directive", type: i4.TuiTextfieldCustomContentDirective, selector: "[tuiTextfieldCustomContent]", inputs: ["tuiTextfieldCustomContent"] }, { 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: "directive", type: i5.TuiLetDirective, selector: "[tuiLet]", inputs: ["tuiLet"] }, { kind: "component", type: i4.TuiLoaderComponent, selector: "tui-loader", inputs: ["size", "inheritColor", "overlay", "textContent", "showLoader"] }, { kind: "component", type: i6.TuiInputPhoneComponent, selector: "tui-input-phone", inputs: ["countryCode", "phoneMaskAfterCountryCode", "allowText", "search"], outputs: ["searchChange"] }, { kind: "directive", type: i6.TuiInputPhoneDirective, selector: "tui-input-phone" }, { kind: "directive", type: i7.MaskitoDirective, selector: "[maskito]", inputs: ["maskito", "maskitoElement"] }, { kind: "directive", type: i7.MaskitoCva, selector: "input[maskito], textarea[maskito]", inputs: ["maskito"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i6.TuiFieldErrorPipe, name: "tuiFieldError" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
216
218
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScVerificationPhoneCheckFormComponent, decorators: [{
|
217
219
|
type: Component,
|
218
220
|
args: [{ selector: 'sc-verification-phone-check-form', changeDetection: ChangeDetectionStrategy.OnPush, template: "<form [formGroup]=\"form\" *tuiLet=\"(loadingApproveCode$ | async) as loadingApproveCode\" class=\"flex flex-col gap-3\">\n <label tuiLabel=\"\u041D\u043E\u043C\u0435\u0440 \u0442\u0435\u043B\u0435\u0444\u043E\u043D\u0430\">\n <tui-input-phone formControlName=\"phone\" [readOnly]=\"readOnly\" [tuiTextfieldCustomContent]=\"checkingPhone\">\n \u041D\u043E\u043C\u0435\u0440 \u0442\u0435\u043B\u0435\u0444\u043E\u043D\u0430\n <input tuiTextfield autocomplete=\"phone\" />\n </tui-input-phone>\n <tui-error formControlName=\"phone\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <ng-container *ngIf=\"showCodeFields && form.enabled\">\n <label *ngIf=\"loadingApproveCode === false && haveCode\" tuiLabel=\"\u041A\u043E\u0434 \u0438\u0437 \u0421\u041C\u0421\">\n <tui-input formControlName=\"verificationCode\">\n \u041A\u043E\u0434 \u0438\u0437 \u0421\u041C\u0421\n <input tuiTextfield [maskito]=\"verificationCodeMask\" autocomplete=\"new-password\" />\n </tui-input>\n <tui-error formControlName=\"verificationCode\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n\n <div *tuiLet=\"!!loadingApproveCode as loadingApproveCode\" class=\"flex gap-4 justify-center\">\n <button\n *ngIf=\"!haveCode\"\n tuiButton\n (click)=\"onSendCode.next()\"\n [disabled]=\"loadingApproveCode || !!!(phoneCheck$ | async) || phoneControl.invalid\"\n [showLoader]=\"loadingApproveCode\"\n icon=\"scIconLogIn\"\n >\n \u041F\u043E\u043B\u0443\u0447\u0438\u0442\u044C \u043A\u043E\u0434\n </button>\n <button *ngIf=\"!loadingApproveCode && !haveCode\" tuiLink [pseudo]=\"true\" [disabled]=\"!!!(phoneCheck$ | async) || phoneControl.invalid\" (click)=\"setHaveCode(true)\">\n \u0423 \u043C\u0435\u043D\u044F \u0435\u0441\u0442\u044C \u043A\u043E\u0434\n </button>\n\n <ng-container *tuiLet=\"timer$ | async as timer\">\n <tui-loader *ngIf=\"haveCode\" [showLoader]=\"loadingApproveCode\">\n <button tuiLink [pseudo]=\"true\" [disabled]=\"loadingApproveCode || timer\" (click)=\"onSendCode.next()\">\n \u041F\u043E\u0432\u0442\u043E\u0440\u043D\u043E \u043E\u0442\u043F\u0440\u0430\u0432\u0438\u0442\u044C \u043A\u043E\u0434\n <ng-container *ngIf=\"timer\" class=\"!text-tui-base-08\">(\u0447\u0435\u0440\u0435\u0437 {{ timer }})</ng-container>\n </button>\n </tui-loader>\n </ng-container>\n </div>\n </ng-container>\n</form>\n\n<ng-template #checkingPhone>\n <tui-loader *ngIf=\"!!!(phoneCheck$ | async) && phoneControl.valid\" class=\"w-4 h-4\"> </tui-loader>\n</ng-template>\n" }]
|
@@ -256,7 +258,7 @@ class ScSignInFormByPhoneComponent {
|
|
256
258
|
*/
|
257
259
|
this.form = new FormGroup({
|
258
260
|
phone: new FormControl(null, [Validators.required, Validators.minLength(12)]),
|
259
|
-
verificationCode: new FormControl(null, [Validators.required, Validators.minLength(6)])
|
261
|
+
verificationCode: new FormControl(null, [Validators.required, Validators.minLength(6)])
|
260
262
|
});
|
261
263
|
/**
|
262
264
|
* {@link Subject} события отправки формы.
|
@@ -305,7 +307,7 @@ class ScSignInFormByEmailComponent {
|
|
305
307
|
*/
|
306
308
|
this.formByEmail = new FormGroup({
|
307
309
|
login: new FormControl(null, [Validators.required, Validators.email]),
|
308
|
-
password: new FormControl(null, Validators.required)
|
310
|
+
password: new FormControl(null, Validators.required)
|
309
311
|
});
|
310
312
|
/**
|
311
313
|
* {@link Subject} события отправки формы.
|
@@ -336,7 +338,7 @@ class ScSignInFormByEmailComponent {
|
|
336
338
|
}
|
337
339
|
}
|
338
340
|
ScSignInFormByEmailComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScSignInFormByEmailComponent, deps: [{ token: i1.ScAuthService }], target: i0.ɵɵFactoryTarget.Component });
|
339
|
-
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:
|
341
|
+
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: i6.TuiInputPasswordComponent, selector: "tui-input-password" }, { kind: "directive", type: i6.TuiInputPasswordDirective, selector: "tui-input-password" }, { kind: "component", type: i4.TuiTextfieldComponent, selector: "input[tuiTextfield], textarea[tuiTextfield]" }, { kind: "component", type: i6.TuiInputComponent, selector: "tui-input" }, { kind: "directive", type: i6.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: i6.TuiFieldErrorPipe, name: "tuiFieldError" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
340
342
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScSignInFormByEmailComponent, decorators: [{
|
341
343
|
type: Component,
|
342
344
|
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" }]
|
@@ -352,9 +354,11 @@ class ScSignInFormComponent {
|
|
352
354
|
* Инициализирует экземпляр класса {@link ScSignInFormComponent}.
|
353
355
|
*
|
354
356
|
* @param authService Сервис аутентификации.
|
357
|
+
* @param userMetrikaService Сервис для сбора метрик о действиях пользователей.
|
355
358
|
*/
|
356
|
-
constructor(authService) {
|
359
|
+
constructor(authService, userMetrikaService) {
|
357
360
|
this.authService = authService;
|
361
|
+
this.userMetrikaService = userMetrikaService;
|
358
362
|
/**
|
359
363
|
* Выбранный способ аутентификации.
|
360
364
|
*/
|
@@ -376,6 +380,12 @@ class ScSignInFormComponent {
|
|
376
380
|
*/
|
377
381
|
this.successAuth = this.authService.getAuthChange().pipe(filter((state) => state));
|
378
382
|
}
|
383
|
+
/** @inheritDoc */
|
384
|
+
ngOnInit() {
|
385
|
+
this.userMetrikaService.emitUserMetrikaEvent({
|
386
|
+
target: ScUserMetrikaGoalsEnum.signInShow
|
387
|
+
});
|
388
|
+
}
|
379
389
|
/**
|
380
390
|
* Осуществляет переключение способов аутентификации.
|
381
391
|
*
|
@@ -391,12 +401,12 @@ class ScSignInFormComponent {
|
|
391
401
|
this.forgotPassword.emit();
|
392
402
|
}
|
393
403
|
}
|
394
|
-
ScSignInFormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScSignInFormComponent, deps: [{ token: i1.ScAuthService }], target: i0.ɵɵFactoryTarget.Component });
|
404
|
+
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 });
|
395
405
|
ScSignInFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ScSignInFormComponent, selector: "sc-sign-in-form", inputs: { authMethod: "authMethod" }, outputs: { forgotPassword: "forgotPassword", signUp: "signUp", successAuth: "successAuth" }, ngImport: i0, template: "<div class=\"flex justify-center mb-4\">\n <button\n tuiButton\n [tuiMode]=\"authMethod === 'by_phone' ? null : 'onLight'\"\n [appearance]=\"authMethod === 'by_phone' ? 'primary' : 'secondary'\"\n (click)=\"switchAuth(method.byPhone)\"\n class=\"tui-space_right-3 tui-space_bottom-3 !font-bold\"\n >\n \u041F\u043E \u0442\u0435\u043B\u0435\u0444\u043E\u043D\u0443\n </button>\n\n <button\n tuiButton\n [tuiMode]=\"authMethod === 'by_email' ? null : 'onLight'\"\n [appearance]=\"authMethod === 'by_email' ? 'primary' : 'secondary'\"\n (click)=\"switchAuth(method.byEmail)\"\n class=\"tui-space_left-3 tui-space_bottom-3 !font-bold\"\n >\n \u041F\u043E e-mail\n </button>\n</div>\n\n<sc-sign-in-form-by-email *ngIf=\"authMethod === 'by_email'\" (forgotPassword)=\"onForgotPassword()\"></sc-sign-in-form-by-email>\n\n<sc-sign-in-form-by-phone [class.hidden]=\"authMethod !== 'by_phone'\"></sc-sign-in-form-by-phone>\n\n<div class=\"flex flex-col gap-4 items-center\">\n <span class=\"font-medium text-tui-text-02\">\u0415\u0449\u0435 \u043D\u0435 \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043E\u0432\u0430\u043D\u044B?</span>\n <button tuiButton tuiMode=\"onLight\" (click)=\"signUp.emit()\" type=\"button\" icon=\"scIconAddProfile\" appearance=\"secondary\">\u0417\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043E\u0432\u0430\u0442\u044C\u0441\u044F</button>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.TuiButtonComponent, selector: "button[tuiButton], button[tuiIconButton], a[tuiButton], a[tuiIconButton]", inputs: ["appearance", "disabled", "icon", "iconRight", "shape", "showLoader", "size"] }, { kind: "directive", type: i4.TuiModeDirective, selector: "[tuiMode]", inputs: ["tuiMode"] }, { kind: "component", type: ScSignInFormByPhoneComponent, selector: "sc-sign-in-form-by-phone" }, { kind: "component", type: ScSignInFormByEmailComponent, selector: "sc-sign-in-form-by-email", outputs: ["forgotPassword"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
396
406
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScSignInFormComponent, decorators: [{
|
397
407
|
type: Component,
|
398
408
|
args: [{ selector: 'sc-sign-in-form', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"flex justify-center mb-4\">\n <button\n tuiButton\n [tuiMode]=\"authMethod === 'by_phone' ? null : 'onLight'\"\n [appearance]=\"authMethod === 'by_phone' ? 'primary' : 'secondary'\"\n (click)=\"switchAuth(method.byPhone)\"\n class=\"tui-space_right-3 tui-space_bottom-3 !font-bold\"\n >\n \u041F\u043E \u0442\u0435\u043B\u0435\u0444\u043E\u043D\u0443\n </button>\n\n <button\n tuiButton\n [tuiMode]=\"authMethod === 'by_email' ? null : 'onLight'\"\n [appearance]=\"authMethod === 'by_email' ? 'primary' : 'secondary'\"\n (click)=\"switchAuth(method.byEmail)\"\n class=\"tui-space_left-3 tui-space_bottom-3 !font-bold\"\n >\n \u041F\u043E e-mail\n </button>\n</div>\n\n<sc-sign-in-form-by-email *ngIf=\"authMethod === 'by_email'\" (forgotPassword)=\"onForgotPassword()\"></sc-sign-in-form-by-email>\n\n<sc-sign-in-form-by-phone [class.hidden]=\"authMethod !== 'by_phone'\"></sc-sign-in-form-by-phone>\n\n<div class=\"flex flex-col gap-4 items-center\">\n <span class=\"font-medium text-tui-text-02\">\u0415\u0449\u0435 \u043D\u0435 \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043E\u0432\u0430\u043D\u044B?</span>\n <button tuiButton tuiMode=\"onLight\" (click)=\"signUp.emit()\" type=\"button\" icon=\"scIconAddProfile\" appearance=\"secondary\">\u0417\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043E\u0432\u0430\u0442\u044C\u0441\u044F</button>\n</div>\n" }]
|
399
|
-
}], ctorParameters: function () { return [{ type: i1.ScAuthService }]; }, propDecorators: { authMethod: [{
|
409
|
+
}], ctorParameters: function () { return [{ type: i1.ScAuthService }, { type: i1.ScUserMetrikaService }]; }, propDecorators: { authMethod: [{
|
400
410
|
type: Input
|
401
411
|
}], forgotPassword: [{
|
402
412
|
type: Output
|
@@ -463,10 +473,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
463
473
|
TuiLetModule,
|
464
474
|
TuiLoaderModule,
|
465
475
|
TuiInputPhoneModule,
|
466
|
-
MaskitoModule
|
476
|
+
MaskitoModule
|
467
477
|
],
|
468
478
|
exports: [ScVerificationPhoneCheckFormComponent],
|
469
|
-
declarations: [ScVerificationPhoneCheckFormComponent]
|
479
|
+
declarations: [ScVerificationPhoneCheckFormComponent]
|
470
480
|
}]
|
471
481
|
}] });
|
472
482
|
|
@@ -531,9 +541,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
531
541
|
TuiLoaderModule,
|
532
542
|
TuiInputPhoneModule,
|
533
543
|
MaskitoModule,
|
534
|
-
ScVerificationModule
|
544
|
+
ScVerificationModule
|
535
545
|
],
|
536
|
-
exports: [ScSignInFormComponent, ScSignInFormByPhoneComponent, ScSignInFormByEmailComponent]
|
546
|
+
exports: [ScSignInFormComponent, ScSignInFormByPhoneComponent, ScSignInFormByEmailComponent]
|
537
547
|
}]
|
538
548
|
}] });
|
539
549
|
|
@@ -547,7 +557,7 @@ ScAccordionContentDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.
|
|
547
557
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScAccordionContentDirective, decorators: [{
|
548
558
|
type: Directive,
|
549
559
|
args: [{
|
550
|
-
selector: 'ng-template[scAccordionContent]'
|
560
|
+
selector: 'ng-template[scAccordionContent]'
|
551
561
|
}]
|
552
562
|
}] });
|
553
563
|
|
@@ -587,7 +597,7 @@ class ScAccordionComponent {
|
|
587
597
|
}
|
588
598
|
}
|
589
599
|
ScAccordionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScAccordionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
590
|
-
ScAccordionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ScAccordionComponent, selector: "sc-accordion", inputs: { showAddButton: "showAddButton", showDeleteButton: "showDeleteButton", showArrow: "showArrow", open: "open", size: "size" }, outputs: { addButtonClick: "addButtonClick", deleteButtonClick: "deleteButtonClick" }, host: { properties: { "class._has-add-button": "this.showAddButton", "class._has-delete-button": "this.showDeleteButton", "class._has-arrow": "this.showArrow", "attr.data-size": "this.size" } }, queries: [{ propertyName: "content", first: true, predicate: ScAccordionContentDirective, descendants: true }], ngImport: i0, template: "<tui-accordion [rounded]=\"false\">\n <tui-accordion-item [size]=\"size\" [borders]=\"null\" [showArrow]=\"showArrow\" [open]=\"open\">\n <div class=\"flex grow justify-between\">\n <div class=\"font-bold self-center\">\n <ng-content></ng-content>\n </div>\n <div *ngIf=\"showAddButton || showDeleteButton\" class=\"flex\">\n <ng-container *ngIf=\"showDeleteButton\">\n <button tuiIconButton size=\"m\" type=\"button\" icon=\"tuiIconTrash2Large\" appearance=\"flat\" (click)=\"$event.stopPropagation(); deleteButtonClick.emit()\"></button>\n </ng-container>\n <ng-container *ngIf=\"showAddButton\">\n <button\n tuiIconButton\n size=\"m\"\n type=\"button\"\n icon=\"tuiIconPlusLarge\"\n tuiMode=\"onLight\"\n appearance=\"flat\"\n (click)=\"$event.stopPropagation(); addButtonClick.emit()\"\n ></button>\n </ng-container>\n </div>\n </div>\n <ng-template tuiAccordionItemContent>\n <tui-elastic-container *ngIf=\"content\">\n <ng-container *polymorpheusOutlet=\"content as text\">\n {{ text }}\n </ng-container>\n </tui-elastic-container>\n </ng-template>\n </tui-accordion-item>\n</tui-accordion>\n", styles: ["::ng-deep tui-accordion-item>.t-wrapper .t-header{border-radius:.75rem;flex-direction:row-reverse;min-height:var(--tui-height-m);font:var(--tui-font-text-m);padding:0 .5rem 0 1rem;gap:.75rem;background:var(--tui-base-02)}:host[data-size=s] ::ng-deep tui-accordion-item>.t-wrapper .t-header{padding:0 .5rem 0 1rem;font:var(--tui-font-text-s)}:host._has-arrow ::ng-deep tui-accordion-item>.t-wrapper .t-header{padding-left:.75rem}:host._has-add-button ::ng-deep tui-accordion-item>.t-wrapper .t-header,:host._has-delete-button ::ng-deep tui-accordion-item>.t-wrapper .t-header{padding-right:0}::ng-deep tui-accordion-item>.t-wrapper .t-header_hoverable:hover:not([data-mode]){background:var(--tui-base-03)!important}::ng-deep tui-accordion-item>.t-wrapper .t-header .t-icon{color:#000}:host:hover:not([data-mode]) ::ng-deep tui-accordion-item>.t-wrapper .t-header .t-icon{color:#000}::ng-deep tui-accordion-item>.t-wrapper .t-title{white-space:normal}:host._has-arrow ::ng-deep tui-accordion-item>.t-wrapper .t-title{margin-right:0}::ng-deep tui-accordion-item>.t-wrapper tui-expand>.t-wrapper>.t-content{padding-inline:0!important;padding-block:1rem}:host._has-arrow ::ng-deep tui-accordion-item>.t-wrapper tui-expand>.t-wrapper>.t-content,:host[data-size=s]:host._has-arrow ::ng-deep tui-accordion-item>.t-wrapper tui-expand>.t-wrapper>.t-content{padding-left:1rem!important}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.PolymorpheusOutletDirective, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }, { 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:
|
600
|
+
ScAccordionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ScAccordionComponent, selector: "sc-accordion", inputs: { showAddButton: "showAddButton", showDeleteButton: "showDeleteButton", showArrow: "showArrow", open: "open", size: "size" }, outputs: { addButtonClick: "addButtonClick", deleteButtonClick: "deleteButtonClick" }, host: { properties: { "class._has-add-button": "this.showAddButton", "class._has-delete-button": "this.showDeleteButton", "class._has-arrow": "this.showArrow", "attr.data-size": "this.size" } }, queries: [{ propertyName: "content", first: true, predicate: ScAccordionContentDirective, descendants: true }], ngImport: i0, template: "<tui-accordion [rounded]=\"false\">\n <tui-accordion-item [size]=\"size\" [borders]=\"null\" [showArrow]=\"showArrow\" [open]=\"open\">\n <div class=\"flex grow justify-between\">\n <div class=\"font-bold self-center\">\n <ng-content></ng-content>\n </div>\n <div *ngIf=\"showAddButton || showDeleteButton\" class=\"flex\">\n <ng-container *ngIf=\"showDeleteButton\">\n <button tuiIconButton size=\"m\" type=\"button\" icon=\"tuiIconTrash2Large\" appearance=\"flat\" (click)=\"$event.stopPropagation(); deleteButtonClick.emit()\"></button>\n </ng-container>\n <ng-container *ngIf=\"showAddButton\">\n <button\n tuiIconButton\n size=\"m\"\n type=\"button\"\n icon=\"tuiIconPlusLarge\"\n tuiMode=\"onLight\"\n appearance=\"flat\"\n (click)=\"$event.stopPropagation(); addButtonClick.emit()\"\n ></button>\n </ng-container>\n </div>\n </div>\n <ng-template tuiAccordionItemContent>\n <tui-elastic-container *ngIf=\"content\">\n <ng-container *polymorpheusOutlet=\"content as text\">\n {{ text }}\n </ng-container>\n </tui-elastic-container>\n </ng-template>\n </tui-accordion-item>\n</tui-accordion>\n", styles: ["::ng-deep tui-accordion-item>.t-wrapper .t-header{border-radius:.75rem;flex-direction:row-reverse;min-height:var(--tui-height-m);font:var(--tui-font-text-m);padding:0 .5rem 0 1rem;gap:.75rem;background:var(--tui-base-02)}:host[data-size=s] ::ng-deep tui-accordion-item>.t-wrapper .t-header{padding:0 .5rem 0 1rem;font:var(--tui-font-text-s)}:host._has-arrow ::ng-deep tui-accordion-item>.t-wrapper .t-header{padding-left:.75rem}:host._has-add-button ::ng-deep tui-accordion-item>.t-wrapper .t-header,:host._has-delete-button ::ng-deep tui-accordion-item>.t-wrapper .t-header{padding-right:0}::ng-deep tui-accordion-item>.t-wrapper .t-header_hoverable:hover:not([data-mode]){background:var(--tui-base-03)!important}::ng-deep tui-accordion-item>.t-wrapper .t-header .t-icon{color:#000}:host:hover:not([data-mode]) ::ng-deep tui-accordion-item>.t-wrapper .t-header .t-icon{color:#000}::ng-deep tui-accordion-item>.t-wrapper .t-title{white-space:normal}:host._has-arrow ::ng-deep tui-accordion-item>.t-wrapper .t-title{margin-right:0}::ng-deep tui-accordion-item>.t-wrapper tui-expand>.t-wrapper>.t-content{padding-inline:0!important;padding-block:1rem}:host._has-arrow ::ng-deep tui-accordion-item>.t-wrapper tui-expand>.t-wrapper>.t-content,:host[data-size=s]:host._has-arrow ::ng-deep tui-accordion-item>.t-wrapper tui-expand>.t-wrapper>.t-content{padding-left:1rem!important}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.PolymorpheusOutletDirective, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }, { 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: i6.TuiAccordionComponent, selector: "tui-accordion", inputs: ["closeOthers", "rounded"] }, { kind: "component", type: i6.TuiAccordionItemComponent, selector: "tui-accordion-item", inputs: ["noPadding", "showArrow", "borders", "size", "disabled", "disableHover", "open", "async"], outputs: ["openChange"] }, { kind: "directive", type: i6.TuiAccordionItemContentDirective, selector: "ng-template[tuiAccordionItemContent]" }, { kind: "directive", type: i4.TuiModeDirective, selector: "[tuiMode]", inputs: ["tuiMode"] }, { kind: "component", type: i6.TuiElasticContainerComponent, selector: "tui-elastic-container" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
591
601
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScAccordionComponent, decorators: [{
|
592
602
|
type: Component,
|
593
603
|
args: [{ selector: 'sc-accordion', changeDetection: ChangeDetectionStrategy.OnPush, template: "<tui-accordion [rounded]=\"false\">\n <tui-accordion-item [size]=\"size\" [borders]=\"null\" [showArrow]=\"showArrow\" [open]=\"open\">\n <div class=\"flex grow justify-between\">\n <div class=\"font-bold self-center\">\n <ng-content></ng-content>\n </div>\n <div *ngIf=\"showAddButton || showDeleteButton\" class=\"flex\">\n <ng-container *ngIf=\"showDeleteButton\">\n <button tuiIconButton size=\"m\" type=\"button\" icon=\"tuiIconTrash2Large\" appearance=\"flat\" (click)=\"$event.stopPropagation(); deleteButtonClick.emit()\"></button>\n </ng-container>\n <ng-container *ngIf=\"showAddButton\">\n <button\n tuiIconButton\n size=\"m\"\n type=\"button\"\n icon=\"tuiIconPlusLarge\"\n tuiMode=\"onLight\"\n appearance=\"flat\"\n (click)=\"$event.stopPropagation(); addButtonClick.emit()\"\n ></button>\n </ng-container>\n </div>\n </div>\n <ng-template tuiAccordionItemContent>\n <tui-elastic-container *ngIf=\"content\">\n <ng-container *polymorpheusOutlet=\"content as text\">\n {{ text }}\n </ng-container>\n </tui-elastic-container>\n </ng-template>\n </tui-accordion-item>\n</tui-accordion>\n", styles: ["::ng-deep tui-accordion-item>.t-wrapper .t-header{border-radius:.75rem;flex-direction:row-reverse;min-height:var(--tui-height-m);font:var(--tui-font-text-m);padding:0 .5rem 0 1rem;gap:.75rem;background:var(--tui-base-02)}:host[data-size=s] ::ng-deep tui-accordion-item>.t-wrapper .t-header{padding:0 .5rem 0 1rem;font:var(--tui-font-text-s)}:host._has-arrow ::ng-deep tui-accordion-item>.t-wrapper .t-header{padding-left:.75rem}:host._has-add-button ::ng-deep tui-accordion-item>.t-wrapper .t-header,:host._has-delete-button ::ng-deep tui-accordion-item>.t-wrapper .t-header{padding-right:0}::ng-deep tui-accordion-item>.t-wrapper .t-header_hoverable:hover:not([data-mode]){background:var(--tui-base-03)!important}::ng-deep tui-accordion-item>.t-wrapper .t-header .t-icon{color:#000}:host:hover:not([data-mode]) ::ng-deep tui-accordion-item>.t-wrapper .t-header .t-icon{color:#000}::ng-deep tui-accordion-item>.t-wrapper .t-title{white-space:normal}:host._has-arrow ::ng-deep tui-accordion-item>.t-wrapper .t-title{margin-right:0}::ng-deep tui-accordion-item>.t-wrapper tui-expand>.t-wrapper>.t-content{padding-inline:0!important;padding-block:1rem}:host._has-arrow ::ng-deep tui-accordion-item>.t-wrapper tui-expand>.t-wrapper>.t-content,:host[data-size=s]:host._has-arrow ::ng-deep tui-accordion-item>.t-wrapper tui-expand>.t-wrapper>.t-content{padding-left:1rem!important}\n"] }]
|
@@ -635,7 +645,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
635
645
|
args: [{
|
636
646
|
declarations: [ScAccordionComponent, ScAccordionContentDirective],
|
637
647
|
imports: [CommonModule, PolymorpheusModule, TuiButtonModule, TuiAccordionModule, TuiModeModule, TuiElasticContainerModule],
|
638
|
-
exports: [ScAccordionComponent, ScAccordionContentDirective]
|
648
|
+
exports: [ScAccordionComponent, ScAccordionContentDirective]
|
639
649
|
}]
|
640
650
|
}] });
|
641
651
|
|
@@ -660,7 +670,7 @@ ScPxConverter.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", versio
|
|
660
670
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScPxConverter, decorators: [{
|
661
671
|
type: Injectable,
|
662
672
|
args: [{
|
663
|
-
providedIn: 'root'
|
673
|
+
providedIn: 'root'
|
664
674
|
}]
|
665
675
|
}] });
|
666
676
|
|
@@ -673,14 +683,18 @@ let ScBannerComponent = class ScBannerComponent {
|
|
673
683
|
*
|
674
684
|
* @param cdr Объект для работы с обнаружением изменений.
|
675
685
|
* @param bannerService Сервис для работы с баннерами.
|
676
|
-
* @param
|
686
|
+
* @param entries$
|
687
|
+
* @param element
|
688
|
+
* @param pxConverter Экземпляр класса-помощника для конвертации пикселей.
|
689
|
+
* @param userMetrikaService Сервис для сбора метрик о действиях пользователей.
|
677
690
|
*/
|
678
|
-
constructor(cdr, bannerService, entries$, element, pxConverter) {
|
691
|
+
constructor(cdr, bannerService, entries$, element, pxConverter, userMetrikaService) {
|
679
692
|
this.cdr = cdr;
|
680
693
|
this.bannerService = bannerService;
|
681
694
|
this.entries$ = entries$;
|
682
695
|
this.element = element;
|
683
696
|
this.pxConverter = pxConverter;
|
697
|
+
this.userMetrikaService = userMetrikaService;
|
684
698
|
/**
|
685
699
|
* Признак, что необходимо показывать кнопки навигации.
|
686
700
|
*/
|
@@ -723,7 +737,7 @@ let ScBannerComponent = class ScBannerComponent {
|
|
723
737
|
this.banners$ = this.bannerService.banners$.pipe(map((banners) => banners.filter((banner) => banner.location === this.bannerLocation).reverse()), tap((banners) => {
|
724
738
|
if (banners.length) {
|
725
739
|
if (this.resizable) {
|
726
|
-
this.width =
|
740
|
+
this.width = '100%';
|
727
741
|
}
|
728
742
|
else {
|
729
743
|
this.height = `${this.pxConverter.pxToRem(banners[0].height)}rem`;
|
@@ -776,7 +790,7 @@ let ScBannerComponent = class ScBannerComponent {
|
|
776
790
|
.pipe(filter((toggle) => toggle), switchMap(() => interval(this.playerInterval).pipe(takeUntil(this.toggleTimer$))), filter(() => { var _a, _b; return !this.disabled && (((_b = (_a = this.banners) === null || _a === void 0 ? void 0 : _a[this.currentBannerId]) === null || _b === void 0 ? void 0 : _b.mediaType) === 'image' || this.showPlayBtn); }), untilDestroyed(this))
|
777
791
|
.subscribe(() => this.onNextBanner());
|
778
792
|
// Отслеживание пересечения компонента с экраном пользователя.
|
779
|
-
// Если баннера не находится в поле видимости пользователя, то он перестаёт
|
793
|
+
// Если баннера не находится в поле видимости пользователя, то он перестаёт переключаться, а видео останавливается.
|
780
794
|
this.entries$.pipe(map((entries) => entries.find((item) => item.target === this.element.nativeElement))).subscribe((entry) => {
|
781
795
|
this.toggleTimer$.next(!!(entry === null || entry === void 0 ? void 0 : entry.isIntersecting));
|
782
796
|
});
|
@@ -813,13 +827,17 @@ let ScBannerComponent = class ScBannerComponent {
|
|
813
827
|
* @param banner Баннер, по ссылке которого совершён переход.
|
814
828
|
*/
|
815
829
|
onClick(banner) {
|
830
|
+
this.userMetrikaService.emitUserMetrikaEvent({
|
831
|
+
target: ScUserMetrikaGoalsEnum.bannerClick,
|
832
|
+
params: { banner_id: banner.id }
|
833
|
+
});
|
816
834
|
if (banner.url) {
|
817
835
|
this.clickBannerEvent.emit(banner);
|
818
836
|
}
|
819
837
|
}
|
820
838
|
};
|
821
|
-
ScBannerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScBannerComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.ScBannerService }, { token: IntersectionObserverService }, { token: ElementRef }, { token: ScPxConverter }], target: i0.ɵɵFactoryTarget.Component });
|
822
|
-
ScBannerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ScBannerComponent, selector: "sc-banner", inputs: { navigateButton: "navigateButton", playerInterval: "playerInterval", disabled: "disabled", bannerLocation: "bannerLocation", resizable: "resizable" }, outputs: { loadBannersEvent: "loadBannersEvent", clickBannerEvent: "clickBannerEvent" }, host: { listeners: { "mouseenter": "mouseEnterHandler()", "mouseleave": "mouseLeaveHandler()" }, properties: { "class.!hidden": "this.isHidden", "style.height": "this.height", "style.width": "this.width", "style.aspect-ratio": "this.aspectRatio" } }, providers: [IntersectionObserverService], queries: [{ propertyName: "bannersListRef", predicate: ["banner"] }], viewQueries: [{ propertyName: "videoRef", first: true, predicate: ["videoPlayer"], descendants: true }], ngImport: i0, template: "<ng-container *tuiLet=\"banners$ | async\">\n <tui-carousel class=\"bg-white w-full h-full shadow-sc-2 rounded-xl overflow-hidden\" [(index)]=\"currentBannerId\">\n <ng-container *ngFor=\"let banner of banners; let index = index\">\n <a\n *tuiItem\n (click)=\"onClick(banner)\"\n [style.aspect-ratio]=\"aspectRatio\"\n [attr.href]=\"banner.url ? banner.url : null\"\n target=\"_blank\"\n [title]=\"banner.title\"\n class=\"relative\"\n >\n <ng-container [ngSwitch]=\"banner.mediaType\">\n <ng-container *ngSwitchCase=\"'video'\">\n <video\n #videoPlayer\n (suspend)=\"showPlayBtn = true\"\n (play)=\"showPlayBtn = false\"\n [src]=\"banner.mediaFile\"\n (ended)=\"onEndedVideo()\"\n (mouseover)=\"videoPlayer.pause()\"\n (mouseout)=\"videoPlayer.play()\"\n class=\"object-cover h-full\"\n muted\n autoplay\n ></video>\n <button\n *ngIf=\"showPlayBtn\"\n tuiIconButton\n [@tuiFadeIn]=\"200\"\n matRipple\n (click)=\"$event.preventDefault(); videoPlayer.play()\"\n size=\"s\"\n appearance=\"secondary\"\n class=\"!absolute left-8 bottom-4\"\n >\n <i class=\"icon-refresh text-black\"></i>\n </button>\n </ng-container>\n\n <img *ngSwitchCase=\"'image'\" [src]=\"banner.mediaFile\" alt=\"\u0411\u0430\u043D\u043D\u0435\u0440\" class=\"object-cover h-full\" />\n </ng-container>\n </a>\n </ng-container>\n <ng-container *ngFor=\"let item of bannersListRef\">\n <div *tuiItem [style.height]=\"height\" [style.width]=\"width\" [style.aspect-ratio]=\"aspectRatio\" class=\"overflow-hidden\">\n <ng-container [ngTemplateOutlet]=\"item\"></ng-container>\n </div>\n </ng-container>\n </tui-carousel>\n</ng-container>\n<div *ngIf=\"navigateButton && !disabled && this.banners && (this.bannersListRef.length + this.banners.length) > 1\" tuiMode=\"onLight\" class=\"flex items-center\">\n <button tuiIconButton icon=\"tuiIconChevronLeftLarge\" size=\"m\" shape=\"rounded\" appearance=\"flat\" (click)=\"onPreviousBanner()\" class=\"!absolute left-2\"></button>\n <button tuiIconButton icon=\"tuiIconChevronRightLarge\" size=\"m\" shape=\"rounded\" appearance=\"flat\" (click)=\"onNextBanner()\" class=\"!absolute right-2\"></button>\n</div>\n", styles: [":host{--tui-carousel-padding: 0;display:flex;position:relative}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { 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: i5$1.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "component", type:
|
839
|
+
ScBannerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScBannerComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.ScBannerService }, { token: IntersectionObserverService }, { token: ElementRef }, { token: ScPxConverter }, { token: i1.ScUserMetrikaService }], target: i0.ɵɵFactoryTarget.Component });
|
840
|
+
ScBannerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ScBannerComponent, selector: "sc-banner", inputs: { navigateButton: "navigateButton", playerInterval: "playerInterval", disabled: "disabled", bannerLocation: "bannerLocation", resizable: "resizable" }, outputs: { loadBannersEvent: "loadBannersEvent", clickBannerEvent: "clickBannerEvent" }, host: { listeners: { "mouseenter": "mouseEnterHandler()", "mouseleave": "mouseLeaveHandler()" }, properties: { "class.!hidden": "this.isHidden", "style.height": "this.height", "style.width": "this.width", "style.aspect-ratio": "this.aspectRatio" } }, providers: [IntersectionObserverService], queries: [{ propertyName: "bannersListRef", predicate: ["banner"] }], viewQueries: [{ propertyName: "videoRef", first: true, predicate: ["videoPlayer"], descendants: true }], ngImport: i0, template: "<ng-container *tuiLet=\"banners$ | async\">\n <tui-carousel class=\"bg-white w-full h-full shadow-sc-2 rounded-xl overflow-hidden\" [(index)]=\"currentBannerId\">\n <ng-container *ngFor=\"let banner of banners; let index = index\">\n <a\n *tuiItem\n (click)=\"onClick(banner)\"\n [style.aspect-ratio]=\"aspectRatio\"\n [attr.href]=\"banner.url ? banner.url : null\"\n target=\"_blank\"\n [title]=\"banner.title\"\n class=\"relative\"\n >\n <ng-container [ngSwitch]=\"banner.mediaType\">\n <ng-container *ngSwitchCase=\"'video'\">\n <video\n #videoPlayer\n (suspend)=\"showPlayBtn = true\"\n (play)=\"showPlayBtn = false\"\n [src]=\"banner.mediaFile\"\n (ended)=\"onEndedVideo()\"\n (mouseover)=\"videoPlayer.pause()\"\n (mouseout)=\"videoPlayer.play()\"\n class=\"object-cover h-full\"\n muted\n autoplay\n ></video>\n <button\n *ngIf=\"showPlayBtn\"\n tuiIconButton\n [@tuiFadeIn]=\"200\"\n matRipple\n (click)=\"$event.preventDefault(); videoPlayer.play()\"\n size=\"s\"\n appearance=\"secondary\"\n class=\"!absolute left-8 bottom-4\"\n >\n <i class=\"icon-refresh text-black\"></i>\n </button>\n </ng-container>\n\n <img *ngSwitchCase=\"'image'\" [src]=\"banner.mediaFile\" alt=\"\u0411\u0430\u043D\u043D\u0435\u0440\" class=\"object-cover h-full\" />\n </ng-container>\n </a>\n </ng-container>\n <ng-container *ngFor=\"let item of bannersListRef\">\n <div *tuiItem [style.height]=\"height\" [style.width]=\"width\" [style.aspect-ratio]=\"aspectRatio\" class=\"overflow-hidden\">\n <ng-container [ngTemplateOutlet]=\"item\"></ng-container>\n </div>\n </ng-container>\n </tui-carousel>\n</ng-container>\n<div *ngIf=\"navigateButton && !disabled && this.banners && (this.bannersListRef.length + this.banners.length) > 1\" tuiMode=\"onLight\" class=\"flex items-center\">\n <button tuiIconButton icon=\"tuiIconChevronLeftLarge\" size=\"m\" shape=\"rounded\" appearance=\"flat\" (click)=\"onPreviousBanner()\" class=\"!absolute left-2\"></button>\n <button tuiIconButton icon=\"tuiIconChevronRightLarge\" size=\"m\" shape=\"rounded\" appearance=\"flat\" (click)=\"onNextBanner()\" class=\"!absolute right-2\"></button>\n</div>\n", styles: [":host{--tui-carousel-padding: 0;display:flex;position:relative}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { 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: i5$1.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "component", type: i6.TuiCarouselComponent, selector: "tui-carousel", inputs: ["draggable", "itemsCount", "index"], outputs: ["indexChange"] }, { kind: "directive", type: i6.TuiCarouselDirective, selector: "tui-carousel", inputs: ["duration", "index"] }, { kind: "directive", type: i5.TuiItemDirective, selector: "[tuiItem]" }, { kind: "directive", type: i4.TuiModeDirective, selector: "[tuiMode]", inputs: ["tuiMode"] }, { kind: "directive", type: i5.TuiLetDirective, selector: "[tuiLet]", inputs: ["tuiLet"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], animations: [tuiFadeIn], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
823
841
|
ScBannerComponent = __decorate([
|
824
842
|
UntilDestroy({ checkProperties: true })
|
825
843
|
], ScBannerComponent);
|
@@ -833,7 +851,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
833
851
|
}] }, { type: i0.ElementRef, decorators: [{
|
834
852
|
type: Inject,
|
835
853
|
args: [ElementRef]
|
836
|
-
}] }, { type: ScPxConverter }];
|
854
|
+
}] }, { type: ScPxConverter }, { type: i1.ScUserMetrikaService }];
|
837
855
|
}, propDecorators: { navigateButton: [{
|
838
856
|
type: Input
|
839
857
|
}], playerInterval: [{
|
@@ -887,14 +905,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
887
905
|
args: [{
|
888
906
|
declarations: [ScBannerComponent],
|
889
907
|
imports: [CommonModule, RouterModule, TuiButtonModule, MatRippleModule, TuiCarouselModule, TuiModeModule, TuiLoaderModule, IntersectionObserverModule, TuiLetModule],
|
890
|
-
exports: [ScBannerComponent]
|
908
|
+
exports: [ScBannerComponent]
|
891
909
|
}]
|
892
910
|
}] });
|
893
911
|
|
894
912
|
/**
|
895
913
|
* Единицы измерения линейной величины по умолчанию.
|
896
914
|
*/
|
897
|
-
const SC_LINEAR_VALUES = ['пог.м.', 'м.',
|
915
|
+
const SC_LINEAR_VALUES = ['пог.м.', 'м.', 'м2'];
|
898
916
|
/**
|
899
917
|
* Токен единиц измерения линейной величины по умолчанию.
|
900
918
|
*/
|
@@ -934,7 +952,7 @@ UnitsHelper.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version:
|
|
934
952
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: UnitsHelper, decorators: [{
|
935
953
|
type: Injectable,
|
936
954
|
args: [{
|
937
|
-
providedIn: 'root'
|
955
|
+
providedIn: 'root'
|
938
956
|
}]
|
939
957
|
}], ctorParameters: function () {
|
940
958
|
return [{ type: undefined, decorators: [{
|
@@ -943,6 +961,37 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
943
961
|
}] }];
|
944
962
|
} });
|
945
963
|
|
964
|
+
/**
|
965
|
+
* Проверяет БИК.
|
966
|
+
*/
|
967
|
+
const scBicValidator = ({ value }) => {
|
968
|
+
return !value || /^0[1,4]\d{7}$/.test(value) ? null : { bic: true };
|
969
|
+
};
|
970
|
+
|
971
|
+
/**
|
972
|
+
* Проверяет корреспондентский счет.
|
973
|
+
*/
|
974
|
+
const scCorrespondentAccountValidator = ({ value }) => {
|
975
|
+
return !value || /^[3,4]01\d{17}$|^03\d{18}$/.test(value) ? null : { correspondentAccount: true };
|
976
|
+
};
|
977
|
+
|
978
|
+
/**
|
979
|
+
* Проверяет повторный ввод пароля на эквивалентность паролю.
|
980
|
+
*
|
981
|
+
* @param passwordKey Ключ поля ввода пароля.
|
982
|
+
* @param passwordKey Ключ поля повторного ввода пароля.
|
983
|
+
*/
|
984
|
+
function scPasswordConfirmMatchingValidator(passwordKey, passwordConfirmKey) {
|
985
|
+
return (control) => {
|
986
|
+
const passwordInput = control.get(passwordKey);
|
987
|
+
const passwordConfirmInput = control.get(passwordConfirmKey);
|
988
|
+
if (!passwordInput || !passwordConfirmInput || passwordInput.invalid || passwordConfirmInput.invalid || !passwordInput.value || !passwordConfirmInput.value) {
|
989
|
+
return null;
|
990
|
+
}
|
991
|
+
return (passwordInput === null || passwordInput === void 0 ? void 0 : passwordInput.value) !== (passwordConfirmInput === null || passwordConfirmInput === void 0 ? void 0 : passwordConfirmInput.value) ? { passwordNotEquivalent: true } : null;
|
992
|
+
};
|
993
|
+
}
|
994
|
+
|
946
995
|
/**
|
947
996
|
* Проверяет кратность значения.
|
948
997
|
*
|
@@ -1057,7 +1106,7 @@ class ScInputQuantityComponent extends AbstractTuiNullableControl {
|
|
1057
1106
|
}
|
1058
1107
|
}
|
1059
1108
|
ScInputQuantityComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScInputQuantityComponent, deps: [{ token: NgControl, optional: true, self: true }, { token: ChangeDetectorRef }, { token: TUI_NUMBER_VALUE_TRANSFORMER, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
1060
|
-
ScInputQuantityComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ScInputQuantityComponent, selector: "sc-input-quantity", inputs: { step: "step", showLoader: "showLoader", showCross: "showCross", appearance: "appearance", isDisabled: "isDisabled", size: "size" }, outputs: { clickClearEvent: "clickClearEvent" }, host: { listeners: { "keydown.arrowDown": "onArrow(-step)", "keydown.arrowUp": "onArrow(step)" }, properties: { "attr.data-appearance": "this.appearance", "attr.data-disabled": "this.isDisabled", "attr.data-size": "this.size" } }, viewQueries: [{ propertyName: "numberInput", first: true, predicate: TuiInputNumberComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<tui-loader *ngIf=\"formControl\" class=\"w-full\" [overlay]=\"true\" [showLoader]=\"showLoader\" [size]=\"size\">\n <div class=\"flex items-center text-center gap-1\">\n <div class=\"field-with-button flex grow rounded-xl\">\n <button\n tuiIconButton\n tuiMode=\"onLight\"\n [appearance]=\"appearance\"\n [disabled]=\"!numberInput.canDecrement\"\n [focusable]=\"false\"\n [size]=\"size\"\n (click.prevent)=\"decrement()\"\n (mousedown.prevent)=\"numberInput.nativeFocusableElement?.focus()\"\n >\n <tui-svg src=\"tuiIconMinusLarge\"></tui-svg>\n </button>\n <tui-input-number\n #numberInput\n [formControl]=\"formControl\"\n [tuiHint]=\"([] | tuiFieldError | async )?.message\"\n [tuiTextfieldLabelOutside]=\"true\"\n [min]=\"step\"\n [tuiTextfieldSize]=\"size\"\n [required]=\"true\"\n [style.text-align]=\"'center'\"\n [style.font-weight]=\"700\"\n class=\"grow\"\n >\n </tui-input-number>\n <button\n tuiIconButton\n tuiMode=\"onLight\"\n [appearance]=\"appearance\"\n [size]=\"size\"\n [disabled]=\"!numberInput.canIncrement\"\n [focusable]=\"false\"\n (click.prevent)=\"incident()\"\n (mousedown.prevent)=\"numberInput.nativeFocusableElement?.focus()\"\n >\n <tui-svg src=\"tuiIconPlusLarge\"></tui-svg>\n </button>\n </div>\n <button\n *ngIf=\"showCross\"\n tuiIconButton\n tuiMode=\"onLight\"\n [appearance]=\"appearance\"\n [size]=\"size\"\n [disabled]=\"!numberInput.canIncrement\"\n [focusable]=\"false\"\n (click.prevent)=\"clear()\"\n (mousedown.prevent)=\"numberInput.nativeFocusableElement?.focus()\"\n >\n <tui-svg src=\"tuiIconCloseLarge\"></tui-svg>\n </button>\n </div>\n</tui-loader>\n", styles: [":host [data-size=l]{--tui-height-l: var(--tui-height-m);--tui-font-text-m: bold .875rem/1.25rem var(--tui-font-text);--tui-padding-l: 0}:host [data-size=m]{--tui-height-m: var(--tui-height-s);--tui-font-text-s: bold .75rem/1rem var(--tui-font-text);--tui-padding-m: 0}:host [data-size=m] tui-svg{font-size:12px!important}:host [data-size=s]{--tui-height-s: var(--tui-height-xs);--tui-font-text-s: bold .75rem/1rem var(--tui-font-text);--tui-padding-s: 0}:host [data-size=s] tui-svg{font-size:12px!important}:host[data-disabled=true]{pointer-events:none;opacity:var(--tui-disabled-opacity)}:host[data-appearance=secondary] .field-with-button{background-color:var(--tui-base-01);box-shadow:inset 0 0 0 .0625rem var(--tui-base-03)}:host[data-appearance=primary] .field-with-button{background-color:var(--tui-warning-bg)}:host .field-with-button:has(._invalid){background-color:var(--tui-error-bg)}\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: "component", type: i4.TuiSvgComponent, selector: "tui-svg", inputs: ["src"] }, { kind: "component", type:
|
1109
|
+
ScInputQuantityComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ScInputQuantityComponent, selector: "sc-input-quantity", inputs: { step: "step", showLoader: "showLoader", showCross: "showCross", appearance: "appearance", isDisabled: "isDisabled", size: "size" }, outputs: { clickClearEvent: "clickClearEvent" }, host: { listeners: { "keydown.arrowDown": "onArrow(-step)", "keydown.arrowUp": "onArrow(step)" }, properties: { "attr.data-appearance": "this.appearance", "attr.data-disabled": "this.isDisabled", "attr.data-size": "this.size" } }, viewQueries: [{ propertyName: "numberInput", first: true, predicate: TuiInputNumberComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<tui-loader *ngIf=\"formControl\" class=\"w-full\" [overlay]=\"true\" [showLoader]=\"showLoader\" [size]=\"size\">\n <div class=\"flex items-center text-center gap-1\">\n <div class=\"field-with-button flex grow rounded-xl\">\n <button\n tuiIconButton\n tuiMode=\"onLight\"\n [appearance]=\"appearance\"\n [disabled]=\"!numberInput.canDecrement\"\n [focusable]=\"false\"\n [size]=\"size\"\n (click.prevent)=\"decrement()\"\n (mousedown.prevent)=\"numberInput.nativeFocusableElement?.focus()\"\n >\n <tui-svg src=\"tuiIconMinusLarge\"></tui-svg>\n </button>\n <tui-input-number\n #numberInput\n [formControl]=\"formControl\"\n [tuiHint]=\"([] | tuiFieldError | async )?.message\"\n [tuiTextfieldLabelOutside]=\"true\"\n [min]=\"step\"\n [tuiTextfieldSize]=\"size\"\n [required]=\"true\"\n [style.text-align]=\"'center'\"\n [style.font-weight]=\"700\"\n class=\"grow\"\n >\n </tui-input-number>\n <button\n tuiIconButton\n tuiMode=\"onLight\"\n [appearance]=\"appearance\"\n [size]=\"size\"\n [disabled]=\"!numberInput.canIncrement\"\n [focusable]=\"false\"\n (click.prevent)=\"incident()\"\n (mousedown.prevent)=\"numberInput.nativeFocusableElement?.focus()\"\n >\n <tui-svg src=\"tuiIconPlusLarge\"></tui-svg>\n </button>\n </div>\n <button\n *ngIf=\"showCross\"\n tuiIconButton\n tuiMode=\"onLight\"\n [appearance]=\"appearance\"\n [size]=\"size\"\n [disabled]=\"!numberInput.canIncrement\"\n [focusable]=\"false\"\n (click.prevent)=\"clear()\"\n (mousedown.prevent)=\"numberInput.nativeFocusableElement?.focus()\"\n >\n <tui-svg src=\"tuiIconCloseLarge\"></tui-svg>\n </button>\n </div>\n</tui-loader>\n", styles: [":host [data-size=l]{--tui-height-l: var(--tui-height-m);--tui-font-text-m: bold .875rem/1.25rem var(--tui-font-text);--tui-padding-l: 0}:host [data-size=m]{--tui-height-m: var(--tui-height-s);--tui-font-text-s: bold .75rem/1rem var(--tui-font-text);--tui-padding-m: 0}:host [data-size=m] tui-svg{font-size:12px!important}:host [data-size=s]{--tui-height-s: var(--tui-height-xs);--tui-font-text-s: bold .75rem/1rem var(--tui-font-text);--tui-padding-s: 0}:host [data-size=s] tui-svg{font-size:12px!important}:host[data-disabled=true]{pointer-events:none;opacity:var(--tui-disabled-opacity)}:host[data-appearance=secondary] .field-with-button{background-color:var(--tui-base-01);box-shadow:inset 0 0 0 .0625rem var(--tui-base-03)}:host[data-appearance=primary] .field-with-button{background-color:var(--tui-warning-bg)}:host .field-with-button:has(._invalid){background-color:var(--tui-error-bg)}\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: "component", type: i4.TuiSvgComponent, selector: "tui-svg", inputs: ["src"] }, { kind: "component", type: i6.TuiInputNumberComponent, selector: "tui-input-number", inputs: ["min", "max", "decimal", "precision", "step", "prefix", "postfix"] }, { kind: "directive", type: i6.TuiInputNumberDirective, selector: "tui-input-number" }, { kind: "directive", type: i4.TuiTextfieldLabelOutsideDirective, selector: "[tuiTextfieldLabelOutside]", inputs: ["tuiTextfieldLabelOutside"] }, { kind: "directive", type: i4.TuiTextfieldSizeDirective, selector: "[tuiTextfieldSize]", inputs: ["tuiTextfieldSize"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.TuiHintDirective, selector: "[tuiHint]:not(ng-container)", inputs: ["tuiHint", "tuiHintContext", "tuiHintAppearance"] }, { kind: "directive", type: i4.TuiHintDriverDirective, selector: "[tuiHint]" }, { kind: "directive", type: i4.TuiHintHoverDirective, selector: "[tuiHint]:not(ng-container)", inputs: ["tuiHintShowDelay", "tuiHintHideDelay"], exportAs: ["tuiHintHover"] }, { kind: "directive", type: i4.TuiHintPositionDirective, selector: "[tuiHint]:not([tuiHintCustomPosition])", inputs: ["tuiHintDirection"] }, { kind: "directive", type: i4.TuiModeDirective, selector: "[tuiMode]", inputs: ["tuiMode"] }, { kind: "component", type: i4.TuiLoaderComponent, selector: "tui-loader", inputs: ["size", "inheritColor", "overlay", "textContent", "showLoader"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i6.TuiFieldErrorPipe, name: "tuiFieldError" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
1061
1110
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScInputQuantityComponent, decorators: [{
|
1062
1111
|
type: Component,
|
1063
1112
|
args: [{ selector: 'sc-input-quantity', changeDetection: ChangeDetectionStrategy.OnPush, template: "<tui-loader *ngIf=\"formControl\" class=\"w-full\" [overlay]=\"true\" [showLoader]=\"showLoader\" [size]=\"size\">\n <div class=\"flex items-center text-center gap-1\">\n <div class=\"field-with-button flex grow rounded-xl\">\n <button\n tuiIconButton\n tuiMode=\"onLight\"\n [appearance]=\"appearance\"\n [disabled]=\"!numberInput.canDecrement\"\n [focusable]=\"false\"\n [size]=\"size\"\n (click.prevent)=\"decrement()\"\n (mousedown.prevent)=\"numberInput.nativeFocusableElement?.focus()\"\n >\n <tui-svg src=\"tuiIconMinusLarge\"></tui-svg>\n </button>\n <tui-input-number\n #numberInput\n [formControl]=\"formControl\"\n [tuiHint]=\"([] | tuiFieldError | async )?.message\"\n [tuiTextfieldLabelOutside]=\"true\"\n [min]=\"step\"\n [tuiTextfieldSize]=\"size\"\n [required]=\"true\"\n [style.text-align]=\"'center'\"\n [style.font-weight]=\"700\"\n class=\"grow\"\n >\n </tui-input-number>\n <button\n tuiIconButton\n tuiMode=\"onLight\"\n [appearance]=\"appearance\"\n [size]=\"size\"\n [disabled]=\"!numberInput.canIncrement\"\n [focusable]=\"false\"\n (click.prevent)=\"incident()\"\n (mousedown.prevent)=\"numberInput.nativeFocusableElement?.focus()\"\n >\n <tui-svg src=\"tuiIconPlusLarge\"></tui-svg>\n </button>\n </div>\n <button\n *ngIf=\"showCross\"\n tuiIconButton\n tuiMode=\"onLight\"\n [appearance]=\"appearance\"\n [size]=\"size\"\n [disabled]=\"!numberInput.canIncrement\"\n [focusable]=\"false\"\n (click.prevent)=\"clear()\"\n (mousedown.prevent)=\"numberInput.nativeFocusableElement?.focus()\"\n >\n <tui-svg src=\"tuiIconCloseLarge\"></tui-svg>\n </button>\n </div>\n</tui-loader>\n", styles: [":host [data-size=l]{--tui-height-l: var(--tui-height-m);--tui-font-text-m: bold .875rem/1.25rem var(--tui-font-text);--tui-padding-l: 0}:host [data-size=m]{--tui-height-m: var(--tui-height-s);--tui-font-text-s: bold .75rem/1rem var(--tui-font-text);--tui-padding-m: 0}:host [data-size=m] tui-svg{font-size:12px!important}:host [data-size=s]{--tui-height-s: var(--tui-height-xs);--tui-font-text-s: bold .75rem/1rem var(--tui-font-text);--tui-padding-s: 0}:host [data-size=s] tui-svg{font-size:12px!important}:host[data-disabled=true]{pointer-events:none;opacity:var(--tui-disabled-opacity)}:host[data-appearance=secondary] .field-with-button{background-color:var(--tui-base-01);box-shadow:inset 0 0 0 .0625rem var(--tui-base-03)}:host[data-appearance=primary] .field-with-button{background-color:var(--tui-warning-bg)}:host .field-with-button:has(._invalid){background-color:var(--tui-error-bg)}\n"] }]
|
@@ -1160,7 +1209,7 @@ class ScCartItemMobileComponent {
|
|
1160
1209
|
/**
|
1161
1210
|
* Инициирует экземпляр класса {@link ScCartItemMobileComponent}.
|
1162
1211
|
*
|
1163
|
-
* @param unitsHelper
|
1212
|
+
* @param unitsHelper Экземпляр класса-помощника для работы со значениями единиц измерения товара.
|
1164
1213
|
* @param previewDialogService Сервис диалогового окна предварительного просмотра.
|
1165
1214
|
* @param urls Список ссылок на разделы backend'a.
|
1166
1215
|
* @param pathImageNotFound Путь до изображения 'Товар не найден'.
|
@@ -1628,7 +1677,7 @@ const scChartOption = {
|
|
1628
1677
|
top: 12,
|
1629
1678
|
left: 64,
|
1630
1679
|
right: 0,
|
1631
|
-
bottom: 24
|
1680
|
+
bottom: 24
|
1632
1681
|
},
|
1633
1682
|
tooltip: {
|
1634
1683
|
trigger: 'axis',
|
@@ -1646,43 +1695,43 @@ const scChartOption = {
|
|
1646
1695
|
},
|
1647
1696
|
axisPointer: {
|
1648
1697
|
animation: false,
|
1649
|
-
type: 'cross'
|
1698
|
+
type: 'cross'
|
1650
1699
|
},
|
1651
1700
|
textStyle: {
|
1652
|
-
fontFamily: 'Roboto, "Helvetica Neue", sans-serif'
|
1653
|
-
}
|
1701
|
+
fontFamily: 'Roboto, "Helvetica Neue", sans-serif'
|
1702
|
+
}
|
1654
1703
|
},
|
1655
1704
|
xAxis: {
|
1656
1705
|
type: 'time',
|
1657
1706
|
splitLine: {
|
1658
|
-
show: false
|
1707
|
+
show: false
|
1659
1708
|
},
|
1660
1709
|
axisLine: {
|
1661
|
-
show: false
|
1710
|
+
show: false
|
1662
1711
|
},
|
1663
1712
|
axisTick: {
|
1664
|
-
show: false
|
1713
|
+
show: false
|
1665
1714
|
},
|
1666
1715
|
axisLabel: {
|
1667
|
-
hideOverlap: true
|
1716
|
+
hideOverlap: true
|
1668
1717
|
},
|
1669
|
-
boundaryGap: ['3%', '3%']
|
1718
|
+
boundaryGap: ['3%', '3%']
|
1670
1719
|
},
|
1671
1720
|
yAxis: {
|
1672
1721
|
splitLine: {
|
1673
|
-
show: false
|
1722
|
+
show: false
|
1674
1723
|
},
|
1675
1724
|
axisLine: {
|
1676
|
-
show: false
|
1725
|
+
show: false
|
1677
1726
|
},
|
1678
1727
|
axisTick: {
|
1679
|
-
show: false
|
1728
|
+
show: false
|
1680
1729
|
},
|
1681
1730
|
axisLabel: {
|
1682
|
-
formatter: (value) => tuiFormatNumber(value)
|
1731
|
+
formatter: (value) => tuiFormatNumber(value)
|
1683
1732
|
},
|
1684
1733
|
type: 'value',
|
1685
|
-
boundaryGap: [0, '100%']
|
1734
|
+
boundaryGap: [0, '100%']
|
1686
1735
|
},
|
1687
1736
|
series: {
|
1688
1737
|
name: 'История цены',
|
@@ -1690,9 +1739,9 @@ const scChartOption = {
|
|
1690
1739
|
showSymbol: false,
|
1691
1740
|
symbolSize: 12,
|
1692
1741
|
itemStyle: {
|
1693
|
-
color: '#ffcc40'
|
1694
|
-
}
|
1695
|
-
}
|
1742
|
+
color: '#ffcc40'
|
1743
|
+
}
|
1744
|
+
}
|
1696
1745
|
};
|
1697
1746
|
|
1698
1747
|
/**
|
@@ -1782,7 +1831,7 @@ class ScPriceHistoryComponent {
|
|
1782
1831
|
pushDataItem(value, date, nextDate) {
|
1783
1832
|
this.data.push({
|
1784
1833
|
name: date.toString(),
|
1785
|
-
value: [date, value, nextDate]
|
1834
|
+
value: [date, value, nextDate]
|
1786
1835
|
});
|
1787
1836
|
}
|
1788
1837
|
}
|
@@ -1800,23 +1849,24 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
1800
1849
|
*/
|
1801
1850
|
const SC_PRODUCT_PAGINATION_DEFAULT_OPTIONS = {
|
1802
1851
|
perPage: 20,
|
1803
|
-
page: 0
|
1852
|
+
page: 0
|
1804
1853
|
};
|
1805
1854
|
/**
|
1806
|
-
* Токен значений пагинации списка товаров категории по умолчанию.
|
1855
|
+
* Токен значений пагинации списка товаров в категории по умолчанию.
|
1807
1856
|
*/
|
1808
1857
|
const SC_PRODUCT_PAGINATION_OPTIONS = tuiCreateToken(SC_PRODUCT_PAGINATION_DEFAULT_OPTIONS);
|
1809
1858
|
/**
|
1810
|
-
* {@link Subject} параметров пагинации списка товаров категории.
|
1859
|
+
* {@link Subject} параметров пагинации списка товаров в категории.
|
1811
1860
|
*/
|
1812
1861
|
const paginationParams$ = new Subject();
|
1813
1862
|
/**
|
1814
|
-
* Токен {@link Subject} параметров пагинации списка товаров категории для получения их из вне.
|
1863
|
+
* Токен {@link Subject} параметров пагинации списка товаров в категории для получения их из вне.
|
1815
1864
|
*/
|
1816
1865
|
const SC_PRODUCT_PAGINATION_PARAMS = tuiCreateToken(paginationParams$);
|
1817
1866
|
/**
|
1818
|
-
* Фабрика создания потока данных о товарах категории
|
1867
|
+
* Фабрика создания потока данных о товарах категории с пагинацией, включая данные о количестве этих товаров в корзине.
|
1819
1868
|
*
|
1869
|
+
* @param paramMap Данные о параметрах запроса.
|
1820
1870
|
* @param catalogService Сервис для работы с каталогом.
|
1821
1871
|
* @param cartService Сервис для работы с корзиной.
|
1822
1872
|
* @param authService Сервис для работы с аутентификации пользователей.
|
@@ -1874,18 +1924,18 @@ const SC_PRODUCT_PAGINATION_CHANGE_PROVIDERS = [
|
|
1874
1924
|
{
|
1875
1925
|
provide: SC_PRODUCT_PAGINATION_CHANGE_INFO,
|
1876
1926
|
deps: [ActivatedRoute, ScCatalogService, ScCartService, ScAuthService, TuiDestroyService],
|
1877
|
-
useFactory: productsPaginationChangeFactory
|
1927
|
+
useFactory: productsPaginationChangeFactory
|
1878
1928
|
},
|
1879
1929
|
{
|
1880
1930
|
provide: SC_NEXT_PAGE_PAGINATION_CHANGE_INFO,
|
1881
1931
|
deps: [Router, SC_NEXT_PAGE_PAGINATION_CLICK, SC_PRODUCT_PAGINATION_CHANGE_INFO, TuiDestroyService],
|
1882
|
-
useFactory: nextPagePaginationChangeFactory
|
1932
|
+
useFactory: nextPagePaginationChangeFactory
|
1883
1933
|
},
|
1884
1934
|
{
|
1885
1935
|
provide: SC_LOADING_PAGINATION_CHANGE_INFO,
|
1886
1936
|
deps: [SC_PRODUCT_PAGINATION_CHANGE_INFO, TuiDestroyService],
|
1887
|
-
useFactory: loadingPaginationFactory
|
1888
|
-
}
|
1937
|
+
useFactory: loadingPaginationFactory
|
1938
|
+
}
|
1889
1939
|
];
|
1890
1940
|
|
1891
1941
|
/**
|
@@ -1930,13 +1980,13 @@ var scLangRU = {
|
|
1930
1980
|
month: ['Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь'],
|
1931
1981
|
monthAbbr: ['Янв', 'Фев', 'Мар', 'Апр', 'Май', 'Июн', 'Июл', 'Авг', 'Сен', 'Окт', 'Ноя', 'Дек'],
|
1932
1982
|
dayOfWeek: ['Воскресенье', 'Понедельник', 'Вторник', 'Среда', 'Четверг', 'Пятница', 'Суббота'],
|
1933
|
-
dayOfWeekAbbr: ['вс', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб']
|
1983
|
+
dayOfWeekAbbr: ['вс', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб']
|
1934
1984
|
},
|
1935
1985
|
legend: {
|
1936
1986
|
selector: {
|
1937
1987
|
all: 'Всё',
|
1938
|
-
inverse: 'Обратить'
|
1939
|
-
}
|
1988
|
+
inverse: 'Обратить'
|
1989
|
+
}
|
1940
1990
|
},
|
1941
1991
|
toolbox: {
|
1942
1992
|
brush: {
|
@@ -1946,34 +1996,34 @@ var scLangRU = {
|
|
1946
1996
|
lineX: 'Горизонтальное выделение',
|
1947
1997
|
lineY: 'Вертикальное выделение',
|
1948
1998
|
keep: 'Оставить выбранное',
|
1949
|
-
clear: 'Очистить выбранное'
|
1950
|
-
}
|
1999
|
+
clear: 'Очистить выбранное'
|
2000
|
+
}
|
1951
2001
|
},
|
1952
2002
|
dataView: {
|
1953
2003
|
title: 'Данные',
|
1954
|
-
lang: ['Данные', 'Закрыть', 'Обновить']
|
2004
|
+
lang: ['Данные', 'Закрыть', 'Обновить']
|
1955
2005
|
},
|
1956
2006
|
dataZoom: {
|
1957
2007
|
title: {
|
1958
2008
|
zoom: 'Увеличить',
|
1959
|
-
back: 'Сбросить увеличение'
|
1960
|
-
}
|
2009
|
+
back: 'Сбросить увеличение'
|
2010
|
+
}
|
1961
2011
|
},
|
1962
2012
|
magicType: {
|
1963
2013
|
title: {
|
1964
2014
|
line: 'Переключиться на линейный график',
|
1965
2015
|
bar: 'Переключиться на столбчатую диаграмму',
|
1966
2016
|
stack: 'Стопка',
|
1967
|
-
tiled: 'Плитка'
|
1968
|
-
}
|
2017
|
+
tiled: 'Плитка'
|
2018
|
+
}
|
1969
2019
|
},
|
1970
2020
|
restore: {
|
1971
|
-
title: 'Восстановить'
|
2021
|
+
title: 'Восстановить'
|
1972
2022
|
},
|
1973
2023
|
saveAsImage: {
|
1974
2024
|
title: 'Сохранить картинку',
|
1975
|
-
lang: ['Правый клик, чтобы сохранить картинку']
|
1976
|
-
}
|
2025
|
+
lang: ['Правый клик, чтобы сохранить картинку']
|
2026
|
+
}
|
1977
2027
|
},
|
1978
2028
|
series: {
|
1979
2029
|
typeNames: {
|
@@ -1998,19 +2048,19 @@ var scLangRU = {
|
|
1998
2048
|
gauge: 'Шкала',
|
1999
2049
|
pictorialBar: 'Столбец-картинка',
|
2000
2050
|
themeRiver: 'Тематическая река',
|
2001
|
-
sunburst: 'Солнечные лучи'
|
2002
|
-
}
|
2051
|
+
sunburst: 'Солнечные лучи'
|
2052
|
+
}
|
2003
2053
|
},
|
2004
2054
|
aria: {
|
2005
2055
|
general: {
|
2006
2056
|
withTitle: 'Это график, показывающий "{title}"',
|
2007
|
-
withoutTitle: 'Это график'
|
2057
|
+
withoutTitle: 'Это график'
|
2008
2058
|
},
|
2009
2059
|
series: {
|
2010
2060
|
single: {
|
2011
2061
|
prefix: '',
|
2012
2062
|
withName: ' с типом {seriesType} и именем {seriesName}.',
|
2013
|
-
withoutName: ' с типом {seriesType}.'
|
2063
|
+
withoutName: ' с типом {seriesType}.'
|
2014
2064
|
},
|
2015
2065
|
multiple: {
|
2016
2066
|
prefix: '. Он состоит из {seriesCount} серий.',
|
@@ -2018,9 +2068,9 @@ var scLangRU = {
|
|
2018
2068
|
withoutName: ' Серия {seriesId} имеет тип {seriesType}.',
|
2019
2069
|
separator: {
|
2020
2070
|
middle: '',
|
2021
|
-
end: ''
|
2022
|
-
}
|
2023
|
-
}
|
2071
|
+
end: ''
|
2072
|
+
}
|
2073
|
+
}
|
2024
2074
|
},
|
2025
2075
|
data: {
|
2026
2076
|
allData: 'Данные таковы: ',
|
@@ -2029,10 +2079,10 @@ var scLangRU = {
|
|
2029
2079
|
withoutName: '{value}',
|
2030
2080
|
separator: {
|
2031
2081
|
middle: ', ',
|
2032
|
-
end: '. '
|
2033
|
-
}
|
2034
|
-
}
|
2035
|
-
}
|
2082
|
+
end: '. '
|
2083
|
+
}
|
2084
|
+
}
|
2085
|
+
}
|
2036
2086
|
};
|
2037
2087
|
|
2038
2088
|
echarts.registerLocale('RU', scLangRU);
|
@@ -2104,7 +2154,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
2104
2154
|
ScPriceCardComponent,
|
2105
2155
|
ScPriceWarehouseStockComponent,
|
2106
2156
|
ScPriceHistoryComponent,
|
2107
|
-
ScCategoriesListComponent
|
2157
|
+
ScCategoriesListComponent
|
2108
2158
|
],
|
2109
2159
|
exports: [
|
2110
2160
|
ScPriceListPaginationComponent,
|
@@ -2114,7 +2164,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
2114
2164
|
ScPriceCardComponent,
|
2115
2165
|
ScPriceWarehouseStockComponent,
|
2116
2166
|
ScPriceHistoryComponent,
|
2117
|
-
ScCategoriesListComponent
|
2167
|
+
ScCategoriesListComponent
|
2118
2168
|
],
|
2119
2169
|
imports: [
|
2120
2170
|
CommonModule,
|
@@ -2135,8 +2185,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
2135
2185
|
TuiElasticContainerModule,
|
2136
2186
|
NgxEchartsModule.forRoot({ echarts }),
|
2137
2187
|
TuiLetModule,
|
2138
|
-
TuiRepeatTimesModule
|
2139
|
-
]
|
2188
|
+
TuiRepeatTimesModule
|
2189
|
+
]
|
2140
2190
|
}]
|
2141
2191
|
}] });
|
2142
2192
|
|
@@ -2190,8 +2240,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
2190
2240
|
FormsModule,
|
2191
2241
|
ReactiveFormsModule,
|
2192
2242
|
TuiPreviewModule,
|
2193
|
-
PolymorpheusModule
|
2194
|
-
]
|
2243
|
+
PolymorpheusModule
|
2244
|
+
]
|
2195
2245
|
}]
|
2196
2246
|
}] });
|
2197
2247
|
|
@@ -2254,10 +2304,10 @@ class ScContragentsAccordionItemComponent {
|
|
2254
2304
|
}
|
2255
2305
|
}
|
2256
2306
|
ScContragentsAccordionItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScContragentsAccordionItemComponent, deps: [{ token: i1.ScContragentService }], target: i0.ɵɵFactoryTarget.Component });
|
2257
|
-
ScContragentsAccordionItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ScContragentsAccordionItemComponent, selector: "sc-contragents-accordion-item", inputs: { contragent: "contragent" }, outputs: { addBankAccountsClick: "addBankAccountsClick", editBankAccountsContragentClick: "editBankAccountsContragentClick", editContragentClick: "editContragentClick" }, ngImport: i0, template: "<sc-accordion [showAddButton]=\"false\">\n {{ contragent.name }}\n <span *ngIf=\"$any(contragent).inn as inn\">\u0418\u041D\u041D: {{ inn }}</span>\n\n <ng-template scAccordionContent>\n <div class=\"flex flex-col gap-2\">\n <div class=\"flex gap-2\">\n <div class=\"flex flex-col gap-2 grow\">\n {{ contragent.name }}\n <span *ngIf=\"$any(contragent).inn as inn\">\u0418\u041D\u041D: {{ inn }}</span>\n <span *ngIf=\"$any(contragent).kpp as kpp\">\u041A\u041F\u041F: {{ kpp }}</span>\n </div>\n <button\n tuiIconButton\n size=\"m\"\n type=\"button\"\n icon=\"tuiIconEdit3Large\"\n tuiMode=\"onLight\"\n appearance=\"flat\"\n (click)=\"$event.stopPropagation(); editContragentClick.emit()\"\n ></button>\n </div>\n\n <sc-accordion (addButtonClick)=\"addBankAccountsClick.emit()\">\n \u0411\u0430\u043D\u043A\u043E\u0432\u0441\u043A\u0438\u0435 \u0440\u0435\u043A\u0432\u0438\u0437\u0438\u0442\u044B\n <ng-template scAccordionContent>\n <tui-loader *tuiLet=\"bankAccounts$ | async as bankAccounts\" [overlay]=\"true\" [showLoader]=\"bankAccounts === null\">\n <div class=\"flex flex-col gap-2\">\n <ng-container *ngIf=\"!bankAccounts || bankAccounts.length; else bankAccountsNotExist\">\n <div *ngFor=\"let bankAccount of bankAccounts\" class=\"flex gap-2 border-b border-tui-base-03\">\n <div class=\"flex flex-col gap-2 grow\">\n <span>\u0411\u0430\u043D\u043A: {{ bankAccount.bankName }}</span>\n <span>\u0411\u0418\u041A: {{ bankAccount.bic }}</span>\n <span>\u0420/\u0441\u0447\u0451\u0442: {{ bankAccount.accountNumber }}</span>\n <span>\u041A\u043E\u0440/\u0441\u0447\u0451\u0442: {{ bankAccount.correspondentAccount }}</span>\n <span>\u0412\u0430\u043B\u044E\u0442\u0430: {{ bankAccount.currency.name }}</span>\n </div>\n <div class=\"flex flex-col md:flex-row gap-4\">\n <button\n tuiIconButton\n size=\"m\"\n type=\"button\"\n icon=\"tuiIconEdit3Large\"\n tuiMode=\"onLight\"\n appearance=\"flat\"\n (click)=\"$event.stopPropagation();\"\n ></button>\n\n <button\n tuiIconButton\n size=\"m\"\n type=\"button\"\n icon=\"tuiIconTrash2Large\"\n tuiMode=\"onLight\"\n appearance=\"flat\"\n (click)=\"$event.stopPropagation();\"\n ></button>\n </div>\n </div>\n </ng-container>\n\n <ng-template #bankAccountsNotExist>\n <tui-notification size=\"l\">\n <div class=\"flex flex-wrap gap-2 font-medium\">\n \u0423 \u043A\u043E\u043D\u0442\u0440\u0430\u0433\u0435\u043D\u0442\u0430 <span class=\"font-bold\">{{ contragent.name }}</span> \u043D\u0435 \u0443\u043A\u0430\u0437\u0430\u043D\u044B \u0431\u0430\u043D\u043A\u043E\u0432\u0441\u043A\u0438\u0435 \u0440\u0435\u043A\u0432\u0438\u0437\u0438\u0442\u044B.\n <button tuiButton size=\"s\" icon=\"tuiIconPlusLarge\" (click)=\"addBankAccountsClick.emit()\">\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C</button>\n </div>\n </tui-notification>\n </ng-template>\n </div>\n </tui-loader>\n </ng-template>\n </sc-accordion>\n <sc-contacts-accordion *ngIf=\"contacts$\" [contacts$]=\"contacts$\"></sc-contacts-accordion>\n </div>\n </ng-template>\n</sc-accordion>\n", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ScAccordionComponent, selector: "sc-accordion", inputs: ["showAddButton", "showDeleteButton", "showArrow", "open", "size"], outputs: ["addButtonClick", "deleteButtonClick"] }, { kind: "directive", type: ScAccordionContentDirective, selector: "ng-template[scAccordionContent]" }, { 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: i4.TuiLoaderComponent, selector: "tui-loader", inputs: ["size", "inheritColor", "overlay", "textContent", "showLoader"] }, { kind: "directive", type: i5.TuiLetDirective, selector: "[tuiLet]", inputs: ["tuiLet"] }, { kind: "component", type: i4.TuiNotificationComponent, selector: "tui-notification", inputs: ["hasIcon", "icon", "status", "size", "hideClose"], outputs: ["close"] }, { kind: "component", type: ScContactsAccordionComponent, selector: "sc-contacts-accordion", inputs: ["contacts$"], outputs: ["addContactClick", "editContactClick"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
2307
|
+
ScContragentsAccordionItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ScContragentsAccordionItemComponent, selector: "sc-contragents-accordion-item", inputs: { contragent: "contragent" }, outputs: { addBankAccountsClick: "addBankAccountsClick", editBankAccountsContragentClick: "editBankAccountsContragentClick", editContragentClick: "editContragentClick" }, ngImport: i0, template: "<sc-accordion [showAddButton]=\"false\">\n {{ contragent.name }}\n <span *ngIf=\"$any(contragent).inn as inn\">\u0418\u041D\u041D: {{ inn }}</span>\n\n <ng-template scAccordionContent>\n <div class=\"flex flex-col gap-2\">\n <div class=\"flex gap-2\">\n <div class=\"flex flex-col gap-2 grow\">\n {{ contragent.name }}\n <span *ngIf=\"$any(contragent).inn as inn\">\u0418\u041D\u041D: {{ inn }}</span>\n <span *ngIf=\"$any(contragent).kpp as kpp\">\u041A\u041F\u041F: {{ kpp }}</span>\n </div>\n <button\n tuiIconButton\n size=\"m\"\n type=\"button\"\n icon=\"tuiIconEdit3Large\"\n tuiMode=\"onLight\"\n appearance=\"flat\"\n (click)=\"$event.stopPropagation(); editContragentClick.emit()\"\n ></button>\n </div>\n\n <sc-accordion (addButtonClick)=\"addBankAccountsClick.emit(contragent.id)\">\n \u0411\u0430\u043D\u043A\u043E\u0432\u0441\u043A\u0438\u0435 \u0440\u0435\u043A\u0432\u0438\u0437\u0438\u0442\u044B\n <ng-template scAccordionContent>\n <tui-loader *tuiLet=\"bankAccounts$ | async as bankAccounts\" [overlay]=\"true\" [showLoader]=\"bankAccounts === null\">\n <div class=\"flex flex-col gap-2\">\n <ng-container *ngIf=\"!bankAccounts || bankAccounts.length; else bankAccountsNotExist\">\n <div *ngFor=\"let bankAccount of bankAccounts\" class=\"flex gap-2 border-b border-tui-base-03\">\n <div class=\"flex flex-col gap-2 grow\">\n <span>\u0411\u0430\u043D\u043A: {{ bankAccount.bankName }}</span>\n <span>\u0411\u0418\u041A: {{ bankAccount.bic }}</span>\n <span>\u0420/\u0441\u0447\u0451\u0442: {{ bankAccount.accountNumber }}</span>\n <span>\u041A\u043E\u0440/\u0441\u0447\u0451\u0442: {{ bankAccount.correspondentAccount }}</span>\n <span>\u0412\u0430\u043B\u044E\u0442\u0430: {{ bankAccount.currency.name }}</span>\n </div>\n <div class=\"flex flex-col md:flex-row gap-4\">\n <button\n tuiIconButton\n size=\"m\"\n type=\"button\"\n icon=\"tuiIconEdit3Large\"\n tuiMode=\"onLight\"\n appearance=\"flat\"\n (click)=\"$event.stopPropagation();\"\n ></button>\n\n <button\n tuiIconButton\n size=\"m\"\n type=\"button\"\n icon=\"tuiIconTrash2Large\"\n tuiMode=\"onLight\"\n appearance=\"flat\"\n (click)=\"$event.stopPropagation();\"\n ></button>\n </div>\n </div>\n </ng-container>\n\n <ng-template #bankAccountsNotExist>\n <tui-notification size=\"l\">\n <div class=\"flex flex-wrap gap-2 font-medium\">\n \u0423 \u043A\u043E\u043D\u0442\u0440\u0430\u0433\u0435\u043D\u0442\u0430 <span class=\"font-bold\">{{ contragent.name }}</span> \u043D\u0435 \u0443\u043A\u0430\u0437\u0430\u043D\u044B \u0431\u0430\u043D\u043A\u043E\u0432\u0441\u043A\u0438\u0435 \u0440\u0435\u043A\u0432\u0438\u0437\u0438\u0442\u044B.\n <button tuiButton size=\"s\" icon=\"tuiIconPlusLarge\" (click)=\"addBankAccountsClick.emit(contragent.id)\">\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C</button>\n </div>\n </tui-notification>\n </ng-template>\n </div>\n </tui-loader>\n </ng-template>\n </sc-accordion>\n <sc-contacts-accordion *ngIf=\"contacts$\" [contacts$]=\"contacts$\"></sc-contacts-accordion>\n </div>\n </ng-template>\n</sc-accordion>\n", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ScAccordionComponent, selector: "sc-accordion", inputs: ["showAddButton", "showDeleteButton", "showArrow", "open", "size"], outputs: ["addButtonClick", "deleteButtonClick"] }, { kind: "directive", type: ScAccordionContentDirective, selector: "ng-template[scAccordionContent]" }, { 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: i4.TuiLoaderComponent, selector: "tui-loader", inputs: ["size", "inheritColor", "overlay", "textContent", "showLoader"] }, { kind: "directive", type: i5.TuiLetDirective, selector: "[tuiLet]", inputs: ["tuiLet"] }, { kind: "component", type: i4.TuiNotificationComponent, selector: "tui-notification", inputs: ["hasIcon", "icon", "status", "size", "hideClose"], outputs: ["close"] }, { kind: "component", type: ScContactsAccordionComponent, selector: "sc-contacts-accordion", inputs: ["contacts$"], outputs: ["addContactClick", "editContactClick"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
2258
2308
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScContragentsAccordionItemComponent, decorators: [{
|
2259
2309
|
type: Component,
|
2260
|
-
args: [{ selector: 'sc-contragents-accordion-item', changeDetection: ChangeDetectionStrategy.OnPush, template: "<sc-accordion [showAddButton]=\"false\">\n {{ contragent.name }}\n <span *ngIf=\"$any(contragent).inn as inn\">\u0418\u041D\u041D: {{ inn }}</span>\n\n <ng-template scAccordionContent>\n <div class=\"flex flex-col gap-2\">\n <div class=\"flex gap-2\">\n <div class=\"flex flex-col gap-2 grow\">\n {{ contragent.name }}\n <span *ngIf=\"$any(contragent).inn as inn\">\u0418\u041D\u041D: {{ inn }}</span>\n <span *ngIf=\"$any(contragent).kpp as kpp\">\u041A\u041F\u041F: {{ kpp }}</span>\n </div>\n <button\n tuiIconButton\n size=\"m\"\n type=\"button\"\n icon=\"tuiIconEdit3Large\"\n tuiMode=\"onLight\"\n appearance=\"flat\"\n (click)=\"$event.stopPropagation(); editContragentClick.emit()\"\n ></button>\n </div>\n\n <sc-accordion (addButtonClick)=\"addBankAccountsClick.emit()\">\n \u0411\u0430\u043D\u043A\u043E\u0432\u0441\u043A\u0438\u0435 \u0440\u0435\u043A\u0432\u0438\u0437\u0438\u0442\u044B\n <ng-template scAccordionContent>\n <tui-loader *tuiLet=\"bankAccounts$ | async as bankAccounts\" [overlay]=\"true\" [showLoader]=\"bankAccounts === null\">\n <div class=\"flex flex-col gap-2\">\n <ng-container *ngIf=\"!bankAccounts || bankAccounts.length; else bankAccountsNotExist\">\n <div *ngFor=\"let bankAccount of bankAccounts\" class=\"flex gap-2 border-b border-tui-base-03\">\n <div class=\"flex flex-col gap-2 grow\">\n <span>\u0411\u0430\u043D\u043A: {{ bankAccount.bankName }}</span>\n <span>\u0411\u0418\u041A: {{ bankAccount.bic }}</span>\n <span>\u0420/\u0441\u0447\u0451\u0442: {{ bankAccount.accountNumber }}</span>\n <span>\u041A\u043E\u0440/\u0441\u0447\u0451\u0442: {{ bankAccount.correspondentAccount }}</span>\n <span>\u0412\u0430\u043B\u044E\u0442\u0430: {{ bankAccount.currency.name }}</span>\n </div>\n <div class=\"flex flex-col md:flex-row gap-4\">\n <button\n tuiIconButton\n size=\"m\"\n type=\"button\"\n icon=\"tuiIconEdit3Large\"\n tuiMode=\"onLight\"\n appearance=\"flat\"\n (click)=\"$event.stopPropagation();\"\n ></button>\n\n <button\n tuiIconButton\n size=\"m\"\n type=\"button\"\n icon=\"tuiIconTrash2Large\"\n tuiMode=\"onLight\"\n appearance=\"flat\"\n (click)=\"$event.stopPropagation();\"\n ></button>\n </div>\n </div>\n </ng-container>\n\n <ng-template #bankAccountsNotExist>\n <tui-notification size=\"l\">\n <div class=\"flex flex-wrap gap-2 font-medium\">\n \u0423 \u043A\u043E\u043D\u0442\u0440\u0430\u0433\u0435\u043D\u0442\u0430 <span class=\"font-bold\">{{ contragent.name }}</span> \u043D\u0435 \u0443\u043A\u0430\u0437\u0430\u043D\u044B \u0431\u0430\u043D\u043A\u043E\u0432\u0441\u043A\u0438\u0435 \u0440\u0435\u043A\u0432\u0438\u0437\u0438\u0442\u044B.\n <button tuiButton size=\"s\" icon=\"tuiIconPlusLarge\" (click)=\"addBankAccountsClick.emit()\">\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C</button>\n </div>\n </tui-notification>\n </ng-template>\n </div>\n </tui-loader>\n </ng-template>\n </sc-accordion>\n <sc-contacts-accordion *ngIf=\"contacts$\" [contacts$]=\"contacts$\"></sc-contacts-accordion>\n </div>\n </ng-template>\n</sc-accordion>\n" }]
|
2310
|
+
args: [{ selector: 'sc-contragents-accordion-item', changeDetection: ChangeDetectionStrategy.OnPush, template: "<sc-accordion [showAddButton]=\"false\">\n {{ contragent.name }}\n <span *ngIf=\"$any(contragent).inn as inn\">\u0418\u041D\u041D: {{ inn }}</span>\n\n <ng-template scAccordionContent>\n <div class=\"flex flex-col gap-2\">\n <div class=\"flex gap-2\">\n <div class=\"flex flex-col gap-2 grow\">\n {{ contragent.name }}\n <span *ngIf=\"$any(contragent).inn as inn\">\u0418\u041D\u041D: {{ inn }}</span>\n <span *ngIf=\"$any(contragent).kpp as kpp\">\u041A\u041F\u041F: {{ kpp }}</span>\n </div>\n <button\n tuiIconButton\n size=\"m\"\n type=\"button\"\n icon=\"tuiIconEdit3Large\"\n tuiMode=\"onLight\"\n appearance=\"flat\"\n (click)=\"$event.stopPropagation(); editContragentClick.emit()\"\n ></button>\n </div>\n\n <sc-accordion (addButtonClick)=\"addBankAccountsClick.emit(contragent.id)\">\n \u0411\u0430\u043D\u043A\u043E\u0432\u0441\u043A\u0438\u0435 \u0440\u0435\u043A\u0432\u0438\u0437\u0438\u0442\u044B\n <ng-template scAccordionContent>\n <tui-loader *tuiLet=\"bankAccounts$ | async as bankAccounts\" [overlay]=\"true\" [showLoader]=\"bankAccounts === null\">\n <div class=\"flex flex-col gap-2\">\n <ng-container *ngIf=\"!bankAccounts || bankAccounts.length; else bankAccountsNotExist\">\n <div *ngFor=\"let bankAccount of bankAccounts\" class=\"flex gap-2 border-b border-tui-base-03\">\n <div class=\"flex flex-col gap-2 grow\">\n <span>\u0411\u0430\u043D\u043A: {{ bankAccount.bankName }}</span>\n <span>\u0411\u0418\u041A: {{ bankAccount.bic }}</span>\n <span>\u0420/\u0441\u0447\u0451\u0442: {{ bankAccount.accountNumber }}</span>\n <span>\u041A\u043E\u0440/\u0441\u0447\u0451\u0442: {{ bankAccount.correspondentAccount }}</span>\n <span>\u0412\u0430\u043B\u044E\u0442\u0430: {{ bankAccount.currency.name }}</span>\n </div>\n <div class=\"flex flex-col md:flex-row gap-4\">\n <button\n tuiIconButton\n size=\"m\"\n type=\"button\"\n icon=\"tuiIconEdit3Large\"\n tuiMode=\"onLight\"\n appearance=\"flat\"\n (click)=\"$event.stopPropagation();\"\n ></button>\n\n <button\n tuiIconButton\n size=\"m\"\n type=\"button\"\n icon=\"tuiIconTrash2Large\"\n tuiMode=\"onLight\"\n appearance=\"flat\"\n (click)=\"$event.stopPropagation();\"\n ></button>\n </div>\n </div>\n </ng-container>\n\n <ng-template #bankAccountsNotExist>\n <tui-notification size=\"l\">\n <div class=\"flex flex-wrap gap-2 font-medium\">\n \u0423 \u043A\u043E\u043D\u0442\u0440\u0430\u0433\u0435\u043D\u0442\u0430 <span class=\"font-bold\">{{ contragent.name }}</span> \u043D\u0435 \u0443\u043A\u0430\u0437\u0430\u043D\u044B \u0431\u0430\u043D\u043A\u043E\u0432\u0441\u043A\u0438\u0435 \u0440\u0435\u043A\u0432\u0438\u0437\u0438\u0442\u044B.\n <button tuiButton size=\"s\" icon=\"tuiIconPlusLarge\" (click)=\"addBankAccountsClick.emit(contragent.id)\">\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C</button>\n </div>\n </tui-notification>\n </ng-template>\n </div>\n </tui-loader>\n </ng-template>\n </sc-accordion>\n <sc-contacts-accordion *ngIf=\"contacts$\" [contacts$]=\"contacts$\"></sc-contacts-accordion>\n </div>\n </ng-template>\n</sc-accordion>\n" }]
|
2261
2311
|
}], ctorParameters: function () { return [{ type: i1.ScContragentService }]; }, propDecorators: { contragent: [{
|
2262
2312
|
type: Input
|
2263
2313
|
}], addBankAccountsClick: [{
|
@@ -2302,10 +2352,10 @@ class ScContragentsAccordionComponent {
|
|
2302
2352
|
}
|
2303
2353
|
}
|
2304
2354
|
ScContragentsAccordionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScContragentsAccordionComponent, deps: [{ token: i1.ScContragentService }], target: i0.ɵɵFactoryTarget.Component });
|
2305
|
-
ScContragentsAccordionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ScContragentsAccordionComponent, selector: "sc-contragents-accordion", outputs: { addContragentClick: "addContragentClick", editBankAccountsContragentClick: "editBankAccountsContragentClick", addBankAccountsClick: "addBankAccountsClick", editContragentClick: "editContragentClick" }, ngImport: i0, template: "<sc-accordion (addButtonClick)=\"addContragentClick.emit()\">\n \u041A\u043E\u043D\u0442\u0440\u0430\u0433\u0435\u043D\u0442\u044B\n <ng-template scAccordionContent>\n <tui-loader *tuiLet=\"contragents$ | async as contragents\" [overlay]=\"true\" [showLoader]=\"contragents === null\">\n <div class=\"flex flex-col gap-2\">\n <ng-container *ngIf=\"!contragents || contragents.length; else contragentsNotExist\">\n <sc-contragents-accordion-item\n *ngFor=\"let contragent of contragents\"\n [contragent]=\"contragent\"\n (addBankAccountsClick)=\"addBankAccountsClick.emit()\"\n (editContragentClick)=\"editContragentClick.emit()\"\n (editBankAccountsContragentClick)=\"editBankAccountsContragentClick.emit()\"\n ></sc-contragents-accordion-item>\n </ng-container>\n\n <ng-template #contragentsNotExist>\n <tui-notification size=\"l\">\n <div class=\"flex flex-wrap gap-2 font-medium\">\n \u041A\u043E\u043D\u0442\u0440\u0430\u0433\u0435\u043D\u0442\u044B \u043D\u0435 \u0443\u043A\u0430\u0437\u0430\u043D\u044B.\n <button tuiButton size=\"s\" icon=\"tuiIconPlusLarge\" (click)=\"addContragentClick.emit()\">\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C</button>\n </div>\n </tui-notification>\n </ng-template>\n </div>\n </tui-loader>\n </ng-template>\n</sc-accordion>\n", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ScAccordionComponent, selector: "sc-accordion", inputs: ["showAddButton", "showDeleteButton", "showArrow", "open", "size"], outputs: ["addButtonClick", "deleteButtonClick"] }, { kind: "directive", type: ScAccordionContentDirective, selector: "ng-template[scAccordionContent]" }, { 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.TuiLoaderComponent, selector: "tui-loader", inputs: ["size", "inheritColor", "overlay", "textContent", "showLoader"] }, { kind: "directive", type: i5.TuiLetDirective, selector: "[tuiLet]", inputs: ["tuiLet"] }, { kind: "component", type: i4.TuiNotificationComponent, selector: "tui-notification", inputs: ["hasIcon", "icon", "status", "size", "hideClose"], outputs: ["close"] }, { kind: "component", type: ScContragentsAccordionItemComponent, selector: "sc-contragents-accordion-item", inputs: ["contragent"], outputs: ["addBankAccountsClick", "editBankAccountsContragentClick", "editContragentClick"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
2355
|
+
ScContragentsAccordionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ScContragentsAccordionComponent, selector: "sc-contragents-accordion", outputs: { addContragentClick: "addContragentClick", editBankAccountsContragentClick: "editBankAccountsContragentClick", addBankAccountsClick: "addBankAccountsClick", editContragentClick: "editContragentClick" }, ngImport: i0, template: "<sc-accordion (addButtonClick)=\"addContragentClick.emit()\">\n \u041A\u043E\u043D\u0442\u0440\u0430\u0433\u0435\u043D\u0442\u044B\n <ng-template scAccordionContent>\n <tui-loader *tuiLet=\"contragents$ | async as contragents\" [overlay]=\"true\" [showLoader]=\"contragents === null\">\n <div class=\"flex flex-col gap-2\">\n <ng-container *ngIf=\"!contragents || contragents.length; else contragentsNotExist\">\n <sc-contragents-accordion-item\n *ngFor=\"let contragent of contragents\"\n [contragent]=\"contragent\"\n (addBankAccountsClick)=\"addBankAccountsClick.emit($event)\"\n (editContragentClick)=\"editContragentClick.emit()\"\n (editBankAccountsContragentClick)=\"editBankAccountsContragentClick.emit()\"\n ></sc-contragents-accordion-item>\n </ng-container>\n\n <ng-template #contragentsNotExist>\n <tui-notification size=\"l\">\n <div class=\"flex flex-wrap gap-2 font-medium\">\n \u041A\u043E\u043D\u0442\u0440\u0430\u0433\u0435\u043D\u0442\u044B \u043D\u0435 \u0443\u043A\u0430\u0437\u0430\u043D\u044B.\n <button tuiButton size=\"s\" icon=\"tuiIconPlusLarge\" (click)=\"addContragentClick.emit()\">\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C</button>\n </div>\n </tui-notification>\n </ng-template>\n </div>\n </tui-loader>\n </ng-template>\n</sc-accordion>\n", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ScAccordionComponent, selector: "sc-accordion", inputs: ["showAddButton", "showDeleteButton", "showArrow", "open", "size"], outputs: ["addButtonClick", "deleteButtonClick"] }, { kind: "directive", type: ScAccordionContentDirective, selector: "ng-template[scAccordionContent]" }, { 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.TuiLoaderComponent, selector: "tui-loader", inputs: ["size", "inheritColor", "overlay", "textContent", "showLoader"] }, { kind: "directive", type: i5.TuiLetDirective, selector: "[tuiLet]", inputs: ["tuiLet"] }, { kind: "component", type: i4.TuiNotificationComponent, selector: "tui-notification", inputs: ["hasIcon", "icon", "status", "size", "hideClose"], outputs: ["close"] }, { kind: "component", type: ScContragentsAccordionItemComponent, selector: "sc-contragents-accordion-item", inputs: ["contragent"], outputs: ["addBankAccountsClick", "editBankAccountsContragentClick", "editContragentClick"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
2306
2356
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScContragentsAccordionComponent, decorators: [{
|
2307
2357
|
type: Component,
|
2308
|
-
args: [{ selector: 'sc-contragents-accordion', changeDetection: ChangeDetectionStrategy.OnPush, template: "<sc-accordion (addButtonClick)=\"addContragentClick.emit()\">\n \u041A\u043E\u043D\u0442\u0440\u0430\u0433\u0435\u043D\u0442\u044B\n <ng-template scAccordionContent>\n <tui-loader *tuiLet=\"contragents$ | async as contragents\" [overlay]=\"true\" [showLoader]=\"contragents === null\">\n <div class=\"flex flex-col gap-2\">\n <ng-container *ngIf=\"!contragents || contragents.length; else contragentsNotExist\">\n <sc-contragents-accordion-item\n *ngFor=\"let contragent of contragents\"\n [contragent]=\"contragent\"\n (addBankAccountsClick)=\"addBankAccountsClick.emit()\"\n (editContragentClick)=\"editContragentClick.emit()\"\n (editBankAccountsContragentClick)=\"editBankAccountsContragentClick.emit()\"\n ></sc-contragents-accordion-item>\n </ng-container>\n\n <ng-template #contragentsNotExist>\n <tui-notification size=\"l\">\n <div class=\"flex flex-wrap gap-2 font-medium\">\n \u041A\u043E\u043D\u0442\u0440\u0430\u0433\u0435\u043D\u0442\u044B \u043D\u0435 \u0443\u043A\u0430\u0437\u0430\u043D\u044B.\n <button tuiButton size=\"s\" icon=\"tuiIconPlusLarge\" (click)=\"addContragentClick.emit()\">\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C</button>\n </div>\n </tui-notification>\n </ng-template>\n </div>\n </tui-loader>\n </ng-template>\n</sc-accordion>\n" }]
|
2358
|
+
args: [{ selector: 'sc-contragents-accordion', changeDetection: ChangeDetectionStrategy.OnPush, template: "<sc-accordion (addButtonClick)=\"addContragentClick.emit()\">\n \u041A\u043E\u043D\u0442\u0440\u0430\u0433\u0435\u043D\u0442\u044B\n <ng-template scAccordionContent>\n <tui-loader *tuiLet=\"contragents$ | async as contragents\" [overlay]=\"true\" [showLoader]=\"contragents === null\">\n <div class=\"flex flex-col gap-2\">\n <ng-container *ngIf=\"!contragents || contragents.length; else contragentsNotExist\">\n <sc-contragents-accordion-item\n *ngFor=\"let contragent of contragents\"\n [contragent]=\"contragent\"\n (addBankAccountsClick)=\"addBankAccountsClick.emit($event)\"\n (editContragentClick)=\"editContragentClick.emit()\"\n (editBankAccountsContragentClick)=\"editBankAccountsContragentClick.emit()\"\n ></sc-contragents-accordion-item>\n </ng-container>\n\n <ng-template #contragentsNotExist>\n <tui-notification size=\"l\">\n <div class=\"flex flex-wrap gap-2 font-medium\">\n \u041A\u043E\u043D\u0442\u0440\u0430\u0433\u0435\u043D\u0442\u044B \u043D\u0435 \u0443\u043A\u0430\u0437\u0430\u043D\u044B.\n <button tuiButton size=\"s\" icon=\"tuiIconPlusLarge\" (click)=\"addContragentClick.emit()\">\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C</button>\n </div>\n </tui-notification>\n </ng-template>\n </div>\n </tui-loader>\n </ng-template>\n</sc-accordion>\n" }]
|
2309
2359
|
}], ctorParameters: function () { return [{ type: i1.ScContragentService }]; }, propDecorators: { addContragentClick: [{
|
2310
2360
|
type: Output
|
2311
2361
|
}], editBankAccountsContragentClick: [{
|
@@ -2317,149 +2367,631 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
2317
2367
|
}] } });
|
2318
2368
|
|
2319
2369
|
/**
|
2320
|
-
*
|
2370
|
+
* Маска поля ввода номера счета.
|
2321
2371
|
*/
|
2322
|
-
|
2323
|
-
}
|
2324
|
-
|
2325
|
-
ScContactsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: ScContactsModule, declarations: [ScContactsAccordionComponent], imports: [CommonModule, ScAccordionModule, TuiButtonModule, TuiModeModule, TuiLoaderModule, TuiLetModule, TuiNotificationModule, TuiLinkModule, TuiFormatPhonePipeModule], exports: [ScContactsAccordionComponent] });
|
2326
|
-
ScContactsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScContactsModule, imports: [CommonModule, ScAccordionModule, TuiButtonModule, TuiModeModule, TuiLoaderModule, TuiLetModule, TuiNotificationModule, TuiLinkModule, TuiFormatPhonePipeModule] });
|
2327
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScContactsModule, decorators: [{
|
2328
|
-
type: NgModule,
|
2329
|
-
args: [{
|
2330
|
-
declarations: [ScContactsAccordionComponent],
|
2331
|
-
imports: [CommonModule, ScAccordionModule, TuiButtonModule, TuiModeModule, TuiLoaderModule, TuiLetModule, TuiNotificationModule, TuiLinkModule, TuiFormatPhonePipeModule],
|
2332
|
-
exports: [ScContactsAccordionComponent],
|
2333
|
-
}]
|
2334
|
-
}] });
|
2372
|
+
const scAccountNumberMask = {
|
2373
|
+
mask: /^\d{0,20}$/
|
2374
|
+
};
|
2335
2375
|
|
2336
2376
|
/**
|
2337
|
-
*
|
2377
|
+
* Маска поля ввода БИК.
|
2338
2378
|
*/
|
2339
|
-
|
2340
|
-
}
|
2341
|
-
|
2342
|
-
ScContragentsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: ScContragentsModule, declarations: [ScContragentsAccordionComponent, ScContragentsAccordionItemComponent], imports: [CommonModule, ScAccordionModule, TuiButtonModule, TuiModeModule, TuiLoaderModule, TuiLetModule, TuiNotificationModule, ScContactsModule], exports: [ScContragentsAccordionComponent] });
|
2343
|
-
ScContragentsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScContragentsModule, imports: [CommonModule, ScAccordionModule, TuiButtonModule, TuiModeModule, TuiLoaderModule, TuiLetModule, TuiNotificationModule, ScContactsModule] });
|
2344
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScContragentsModule, decorators: [{
|
2345
|
-
type: NgModule,
|
2346
|
-
args: [{
|
2347
|
-
declarations: [ScContragentsAccordionComponent, ScContragentsAccordionItemComponent],
|
2348
|
-
imports: [CommonModule, ScAccordionModule, TuiButtonModule, TuiModeModule, TuiLoaderModule, TuiLetModule, TuiNotificationModule, ScContactsModule],
|
2349
|
-
exports: [ScContragentsAccordionComponent],
|
2350
|
-
}]
|
2351
|
-
}] });
|
2379
|
+
const scBicMask = {
|
2380
|
+
mask: /^\d{0,9}$/
|
2381
|
+
};
|
2352
2382
|
|
2353
2383
|
/**
|
2354
|
-
*
|
2384
|
+
* Маска поля ввода номера корреспондентского счета.
|
2355
2385
|
*/
|
2356
|
-
|
2386
|
+
const scCorrespondentAccount = {
|
2387
|
+
mask: /^\d{0,20}$/
|
2388
|
+
};
|
2389
|
+
|
2390
|
+
/**
|
2391
|
+
* Компонент подсказок для поля ввода.
|
2392
|
+
*/
|
2393
|
+
class ScSuggestionFieldComponent {
|
2357
2394
|
/**
|
2358
|
-
* Инициализирует экземпляр класса {@link
|
2395
|
+
* Инициализирует экземпляр класса {@link ScSuggestionFieldComponent}.
|
2359
2396
|
*
|
2360
|
-
* @param
|
2397
|
+
* @param control Контрол поля ввода.
|
2398
|
+
* @param suggestionService Сервис работы с API подсказок.
|
2361
2399
|
*/
|
2362
|
-
constructor(
|
2363
|
-
this.
|
2400
|
+
constructor(control, suggestionService) {
|
2401
|
+
this.control = control;
|
2402
|
+
this.suggestionService = suggestionService;
|
2364
2403
|
/**
|
2365
|
-
*
|
2404
|
+
* Тип подсказок.
|
2366
2405
|
*/
|
2367
|
-
this.
|
2406
|
+
this.type = ScISuggestionType.fio;
|
2407
|
+
/**
|
2408
|
+
* Перечисление типов подсказок.
|
2409
|
+
*/
|
2410
|
+
this.suggestionType = ScISuggestionType;
|
2368
2411
|
}
|
2369
2412
|
/** @inheritDoc */
|
2370
2413
|
ngOnInit() {
|
2371
|
-
|
2414
|
+
const request$ = tuiControlValue(this.control).pipe(debounceTime(300), filter(tuiIsPresent), map((term) => term.trim()), filter((term) => term.length >= 3), switchMap((term) => this.suggestionService.getData(term, this.type).pipe(startWith(null))), catchError((error) => {
|
2415
|
+
const errorResponse = error.error;
|
2416
|
+
if (this.control.control) {
|
2417
|
+
tuiMarkControlAsTouchedAndValidate(this.control.control);
|
2418
|
+
this.control.control.setErrors({
|
2419
|
+
serverResponse: [errorResponse.message || 'Ошибка сервера: пожалуйста, перезагрузите страницу и/или выполните запрос позже.']
|
2420
|
+
});
|
2421
|
+
}
|
2422
|
+
return throwError(() => of([]));
|
2423
|
+
}), share());
|
2424
|
+
this.suggestions$ = request$ === null || request$ === void 0 ? void 0 : request$.pipe(filter(tuiIsPresent), startWith(null));
|
2425
|
+
this.loading$ = request$.pipe(map(tuiIsFalsy));
|
2426
|
+
}
|
2427
|
+
/**
|
2428
|
+
* Заполнение полей основе выбранной подсказки.
|
2429
|
+
*
|
2430
|
+
* @param suggestion Объект подсказки.
|
2431
|
+
*/
|
2432
|
+
onSelected(suggestion) {
|
2433
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
2434
|
+
switch (this.type) {
|
2435
|
+
case ScISuggestionType.fio:
|
2436
|
+
if ('fio' in suggestion) {
|
2437
|
+
(_a = this.control.control) === null || _a === void 0 ? void 0 : _a.patchValue(suggestion.fio);
|
2438
|
+
}
|
2439
|
+
break;
|
2440
|
+
case ScISuggestionType.address:
|
2441
|
+
if ('addressString' in suggestion) {
|
2442
|
+
(_b = this.control.control) === null || _b === void 0 ? void 0 : _b.patchValue(suggestion.addressString, { emitEvent: false });
|
2443
|
+
}
|
2444
|
+
break;
|
2445
|
+
case ScISuggestionType.bank:
|
2446
|
+
if ('inn' in suggestion && 'bic' in suggestion) {
|
2447
|
+
(_d = (_c = this.control.control) === null || _c === void 0 ? void 0 : _c.parent) === null || _d === void 0 ? void 0 : _d.patchValue({
|
2448
|
+
bankName: suggestion.name,
|
2449
|
+
bic: suggestion.bic,
|
2450
|
+
correspondentAccount: suggestion.correspondentAccount
|
2451
|
+
}, { emitEvent: false });
|
2452
|
+
}
|
2453
|
+
break;
|
2454
|
+
case ScISuggestionType.organization:
|
2455
|
+
if ('inn' in suggestion && !('bic' in suggestion)) {
|
2456
|
+
(_f = (_e = this.control.control) === null || _e === void 0 ? void 0 : _e.parent) === null || _f === void 0 ? void 0 : _f.patchValue({
|
2457
|
+
name: suggestion.name,
|
2458
|
+
inn: suggestion.inn,
|
2459
|
+
kpp: suggestion.kpp,
|
2460
|
+
okpo: suggestion.okpo,
|
2461
|
+
directorName: suggestion.directorName,
|
2462
|
+
directorPosition: suggestion.directorPosition,
|
2463
|
+
legalAddress: suggestion.legalAddress,
|
2464
|
+
postalAddress: suggestion.postalAddress,
|
2465
|
+
actualAddress: suggestion.actualAddress
|
2466
|
+
}, { emitEvent: false });
|
2467
|
+
}
|
2468
|
+
break;
|
2469
|
+
case ScISuggestionType.email:
|
2470
|
+
if ('email' in suggestion) {
|
2471
|
+
(_g = this.control.control) === null || _g === void 0 ? void 0 : _g.patchValue(suggestion.email, { emitEvent: false });
|
2472
|
+
}
|
2473
|
+
break;
|
2474
|
+
}
|
2372
2475
|
}
|
2373
2476
|
}
|
2374
|
-
|
2375
|
-
|
2376
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type:
|
2477
|
+
ScSuggestionFieldComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScSuggestionFieldComponent, deps: [{ token: NgControl, skipSelf: true }, { token: i1.ScSuggestionService }], target: i0.ɵɵFactoryTarget.Component });
|
2478
|
+
ScSuggestionFieldComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ScSuggestionFieldComponent, selector: "sc-suggestion-field", inputs: { type: "type" }, ngImport: i0, template: "<tui-loader size=\"m\" [overlay]=\"true\" [showLoader]=\"!!(loading$ | async)\">\n <tui-data-list *tuiLet=\"suggestions$ | async as options\">\n <button *ngFor=\"let option of options\" tuiOption (click)=\"onSelected(option)\" class=\"flex-col !items-start\">\n <ng-container *tuiLet=\"$any(option) as option\">\n <ng-container [ngSwitch]=\"type\">\n <ng-container *ngSwitchCase=\"suggestionType.fio\">\n <span class=\"text-tui-link\">{{ option.fio }}</span>\n </ng-container>\n <ng-container *ngSwitchCase=\"suggestionType.organization\">\n <span class=\"text-tui-link\">\n {{ option.name }}\n <span class=\"ml-2 text-tui-text-02\">\u0438\u043D\u043D: {{ option.inn }}</span>\n </span>\n <span class=\"text-tui-text-02\">{{ option?.legalAddress }}</span>\n </ng-container>\n <ng-container *ngSwitchCase=\"suggestionType.bank\">\n <span class=\"text-tui-link\">{{ option.name }}</span>\n <span class=\"text-tui-text-02\">{{ option.bic }}</span>\n </ng-container>\n <ng-container *ngSwitchCase=\"suggestionType.email\">\n <span class=\"text-tui-link\">{{ option.email }}</span>\n </ng-container>\n <ng-container *ngSwitchCase=\"suggestionType.address\">\n <span class=\"text-tui-link\">{{ option.addressString }}</span>\n </ng-container>\n </ng-container>\n </ng-container>\n </button>\n </tui-data-list>\n</tui-loader>\n", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i5.TuiLetDirective, selector: "[tuiLet]", inputs: ["tuiLet"] }, { kind: "component", type: i4.TuiDataListComponent, selector: "tui-data-list", inputs: ["role", "emptyContent", "size"] }, { kind: "component", type: i4.TuiOptionComponent, selector: "button[tuiOption], a[tuiOption]", inputs: ["size", "role", "disabled", "value"] }, { kind: "component", type: i4.TuiLoaderComponent, selector: "tui-loader", inputs: ["size", "inheritColor", "overlay", "textContent", "showLoader"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }] });
|
2479
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScSuggestionFieldComponent, decorators: [{
|
2377
2480
|
type: Component,
|
2378
|
-
args: [{ selector: 'sc-
|
2379
|
-
}], ctorParameters: function () {
|
2481
|
+
args: [{ selector: 'sc-suggestion-field', template: "<tui-loader size=\"m\" [overlay]=\"true\" [showLoader]=\"!!(loading$ | async)\">\n <tui-data-list *tuiLet=\"suggestions$ | async as options\">\n <button *ngFor=\"let option of options\" tuiOption (click)=\"onSelected(option)\" class=\"flex-col !items-start\">\n <ng-container *tuiLet=\"$any(option) as option\">\n <ng-container [ngSwitch]=\"type\">\n <ng-container *ngSwitchCase=\"suggestionType.fio\">\n <span class=\"text-tui-link\">{{ option.fio }}</span>\n </ng-container>\n <ng-container *ngSwitchCase=\"suggestionType.organization\">\n <span class=\"text-tui-link\">\n {{ option.name }}\n <span class=\"ml-2 text-tui-text-02\">\u0438\u043D\u043D: {{ option.inn }}</span>\n </span>\n <span class=\"text-tui-text-02\">{{ option?.legalAddress }}</span>\n </ng-container>\n <ng-container *ngSwitchCase=\"suggestionType.bank\">\n <span class=\"text-tui-link\">{{ option.name }}</span>\n <span class=\"text-tui-text-02\">{{ option.bic }}</span>\n </ng-container>\n <ng-container *ngSwitchCase=\"suggestionType.email\">\n <span class=\"text-tui-link\">{{ option.email }}</span>\n </ng-container>\n <ng-container *ngSwitchCase=\"suggestionType.address\">\n <span class=\"text-tui-link\">{{ option.addressString }}</span>\n </ng-container>\n </ng-container>\n </ng-container>\n </button>\n </tui-data-list>\n</tui-loader>\n" }]
|
2482
|
+
}], ctorParameters: function () {
|
2483
|
+
return [{ type: i3.NgControl, decorators: [{
|
2484
|
+
type: SkipSelf
|
2485
|
+
}, {
|
2486
|
+
type: Inject,
|
2487
|
+
args: [NgControl]
|
2488
|
+
}] }, { type: i1.ScSuggestionService }];
|
2489
|
+
}, propDecorators: { type: [{
|
2380
2490
|
type: Input
|
2381
|
-
}], editDeliveryAddressClick: [{
|
2382
|
-
type: Output
|
2383
2491
|
}] } });
|
2384
2492
|
|
2385
2493
|
/**
|
2386
|
-
* Компонент
|
2494
|
+
* Компонент формы банковских реквизитов.
|
2387
2495
|
*/
|
2388
|
-
class
|
2496
|
+
class ScNewContragentBankAccountsFormComponent {
|
2389
2497
|
/**
|
2390
|
-
* Инициализирует экземпляр класса {@link
|
2498
|
+
* Инициализирует экземпляр класса {@link ScContragentBankAccountsFormComponent}.
|
2391
2499
|
*
|
2392
|
-
* @param
|
2500
|
+
* @param referencesService Сервис справочников.
|
2393
2501
|
*/
|
2394
|
-
constructor(
|
2395
|
-
this.
|
2502
|
+
constructor(referencesService) {
|
2503
|
+
this.referencesService = referencesService;
|
2396
2504
|
/**
|
2397
|
-
*
|
2505
|
+
* Перечисление типов подсказок.
|
2398
2506
|
*/
|
2399
|
-
this.
|
2507
|
+
this.suggestionType = ScISuggestionType;
|
2400
2508
|
/**
|
2401
|
-
*
|
2509
|
+
* Маска поля ввода БИК.
|
2402
2510
|
*/
|
2403
|
-
this.
|
2511
|
+
this.bicMask = scBicMask;
|
2512
|
+
/**
|
2513
|
+
* Маска поля ввода номера счета.
|
2514
|
+
*/
|
2515
|
+
this.accountNumberMask = scAccountNumberMask;
|
2516
|
+
/**
|
2517
|
+
* Маска поля ввода номера корреспондентского счета.
|
2518
|
+
*/
|
2519
|
+
this.correspondentAccount = scCorrespondentAccount;
|
2520
|
+
/**
|
2521
|
+
* {@link Observable} списка валют.
|
2522
|
+
*/
|
2523
|
+
this.currencies$ = this.referencesService.currencies$;
|
2524
|
+
}
|
2525
|
+
/**
|
2526
|
+
* Возвращает {@link Observable} валюты по идентификатору.
|
2527
|
+
*
|
2528
|
+
* @param currencyId Идентификатор валюты.
|
2529
|
+
*/
|
2530
|
+
getCurrencyById$(currencyId) {
|
2531
|
+
return this.referencesService.getCurrencyById$(currencyId);
|
2404
2532
|
}
|
2405
2533
|
}
|
2406
|
-
|
2407
|
-
|
2408
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type:
|
2534
|
+
ScNewContragentBankAccountsFormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScNewContragentBankAccountsFormComponent, deps: [{ token: i1.ScReferencesService }], target: i0.ɵɵFactoryTarget.Component });
|
2535
|
+
ScNewContragentBankAccountsFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ScNewContragentBankAccountsFormComponent, selector: "sc-new-contragent-bank-account-form", inputs: { form: "form" }, ngImport: i0, template: "<div [formGroup]=\"form\" class=\"flex flex-col gap-3\">\n <label tuiLabel=\"\u041D\u0430\u0438\u043C\u0435\u043D\u043E\u0432\u0430\u043D\u0438\u0435 \u0431\u0430\u043D\u043A\u0430\">\n <tui-input formControlName=\"bankName\">\n \u041D\u0430\u0438\u043C\u0435\u043D\u043E\u0432\u0430\u043D\u0438\u0435 \u0431\u0430\u043D\u043A\u0430\n <sc-suggestion-field *tuiDataList [type]=\"suggestionType.bank\"></sc-suggestion-field>\n </tui-input>\n <tui-error formControlName=\"bankName\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <label tuiLabel=\"\u0411\u0418\u041A\">\n <tui-input formControlName=\"bic\">\n \u0411\u0418\u041A\n <input tuiTextfield [maskito]=\"bicMask\" autocomplete=\"bic\" />\n <sc-suggestion-field *tuiDataList [type]=\"suggestionType.bank\"></sc-suggestion-field>\n </tui-input>\n <tui-error formControlName=\"bic\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <label tuiLabel=\"\u041D\u043E\u043C\u0435\u0440 \u0441\u0447\u0435\u0442\u0430\">\n <tui-input formControlName=\"accountNumber\">\n \u041D\u043E\u043C\u0435\u0440 \u0441\u0447\u0435\u0442\u0430\n <input tuiTextfield [maskito]=\"accountNumberMask\" autocomplete=\"accountNumber\" />\n </tui-input>\n <tui-error formControlName=\"accountNumber\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <label tuiLabel=\"\u041A\u043E\u0440\u0440\u0435\u0441\u043F\u043E\u043D\u0434\u0435\u043D\u0442\u0441\u043A\u0438\u0439 \u0441\u0447\u0435\u0442\">\n <tui-input formControlName=\"correspondentAccount\">\n \u041A\u043E\u0440\u0440\u0435\u0441\u043F\u043E\u043D\u0434\u0435\u043D\u0442\u0441\u043A\u0438\u0439 \u0441\u0447\u0435\u0442\n <input tuiTextfield [maskito]=\"correspondentAccount\" autocomplete=\"correspondentAccount\" />\n </tui-input>\n <tui-error formControlName=\"correspondentAccount\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <label tuiLabel=\"\u0412\u0430\u043B\u044E\u0442\u0430 \u0440\u0430\u0441\u0447\u0451\u0442\u043E\u0432\">\n <tui-select formControlName=\"currencyId\" [valueContent]=\"currencyContent\">\n \u0412\u0430\u043B\u044E\u0442\u0430 \u0440\u0430\u0441\u0447\u0451\u0442\u043E\u0432\n <tui-data-list *tuiDataList>\n <button *ngFor=\"let item of currencies$ | async; let index = index\" tuiOption [value]=\"item.id\">{{ item.name }} ({{ item.symbol }})</button>\n </tui-data-list>\n </tui-select>\n <ng-template #currencyContent let-data>\n <div>{{ (getCurrencyById$(data) | async)?.name }}</div>\n </ng-template>\n <tui-error formControlName=\"currencyId\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { 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: ScSuggestionFieldComponent, selector: "sc-suggestion-field", inputs: ["type"] }, { kind: "directive", type: i7.MaskitoDirective, selector: "[maskito]", inputs: ["maskito", "maskitoElement"] }, { kind: "directive", type: i7.MaskitoCva, selector: "input[maskito], textarea[maskito]", inputs: ["maskito"] }, { kind: "component", type: i6.TuiSelectComponent, selector: "tui-select", inputs: ["stringify", "identityMatcher", "valueContent"] }, { kind: "directive", type: i6.TuiSelectDirective, selector: "tui-select" }, { kind: "component", type: i4.TuiTextfieldComponent, selector: "input[tuiTextfield], textarea[tuiTextfield]" }, { kind: "component", type: i4.TuiDataListComponent, selector: "tui-data-list", inputs: ["role", "emptyContent", "size"] }, { kind: "component", type: i4.TuiOptionComponent, selector: "button[tuiOption], a[tuiOption]", inputs: ["size", "role", "disabled", "value"] }, { kind: "directive", type: i4.TuiDataListDirective, selector: "ng-template[tuiDataList]" }, { kind: "component", type: i4.TuiLabelComponent, selector: "label[tuiLabel]", inputs: ["tuiLabel", "context"] }, { kind: "component", type: i6.TuiInputComponent, selector: "tui-input" }, { kind: "directive", type: i6.TuiInputDirective, selector: "tui-input" }, { kind: "component", type: i4.TuiErrorComponent, selector: "tui-error", inputs: ["error"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i6.TuiFieldErrorPipe, name: "tuiFieldError" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
2536
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScNewContragentBankAccountsFormComponent, decorators: [{
|
2409
2537
|
type: Component,
|
2410
|
-
args: [{ selector: 'sc-
|
2411
|
-
}], ctorParameters: function () { return [{ type: i1.
|
2412
|
-
type:
|
2538
|
+
args: [{ selector: 'sc-new-contragent-bank-account-form', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div [formGroup]=\"form\" class=\"flex flex-col gap-3\">\n <label tuiLabel=\"\u041D\u0430\u0438\u043C\u0435\u043D\u043E\u0432\u0430\u043D\u0438\u0435 \u0431\u0430\u043D\u043A\u0430\">\n <tui-input formControlName=\"bankName\">\n \u041D\u0430\u0438\u043C\u0435\u043D\u043E\u0432\u0430\u043D\u0438\u0435 \u0431\u0430\u043D\u043A\u0430\n <sc-suggestion-field *tuiDataList [type]=\"suggestionType.bank\"></sc-suggestion-field>\n </tui-input>\n <tui-error formControlName=\"bankName\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <label tuiLabel=\"\u0411\u0418\u041A\">\n <tui-input formControlName=\"bic\">\n \u0411\u0418\u041A\n <input tuiTextfield [maskito]=\"bicMask\" autocomplete=\"bic\" />\n <sc-suggestion-field *tuiDataList [type]=\"suggestionType.bank\"></sc-suggestion-field>\n </tui-input>\n <tui-error formControlName=\"bic\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <label tuiLabel=\"\u041D\u043E\u043C\u0435\u0440 \u0441\u0447\u0435\u0442\u0430\">\n <tui-input formControlName=\"accountNumber\">\n \u041D\u043E\u043C\u0435\u0440 \u0441\u0447\u0435\u0442\u0430\n <input tuiTextfield [maskito]=\"accountNumberMask\" autocomplete=\"accountNumber\" />\n </tui-input>\n <tui-error formControlName=\"accountNumber\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <label tuiLabel=\"\u041A\u043E\u0440\u0440\u0435\u0441\u043F\u043E\u043D\u0434\u0435\u043D\u0442\u0441\u043A\u0438\u0439 \u0441\u0447\u0435\u0442\">\n <tui-input formControlName=\"correspondentAccount\">\n \u041A\u043E\u0440\u0440\u0435\u0441\u043F\u043E\u043D\u0434\u0435\u043D\u0442\u0441\u043A\u0438\u0439 \u0441\u0447\u0435\u0442\n <input tuiTextfield [maskito]=\"correspondentAccount\" autocomplete=\"correspondentAccount\" />\n </tui-input>\n <tui-error formControlName=\"correspondentAccount\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <label tuiLabel=\"\u0412\u0430\u043B\u044E\u0442\u0430 \u0440\u0430\u0441\u0447\u0451\u0442\u043E\u0432\">\n <tui-select formControlName=\"currencyId\" [valueContent]=\"currencyContent\">\n \u0412\u0430\u043B\u044E\u0442\u0430 \u0440\u0430\u0441\u0447\u0451\u0442\u043E\u0432\n <tui-data-list *tuiDataList>\n <button *ngFor=\"let item of currencies$ | async; let index = index\" tuiOption [value]=\"item.id\">{{ item.name }} ({{ item.symbol }})</button>\n </tui-data-list>\n </tui-select>\n <ng-template #currencyContent let-data>\n <div>{{ (getCurrencyById$(data) | async)?.name }}</div>\n </ng-template>\n <tui-error formControlName=\"currencyId\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n</div>\n" }]
|
2539
|
+
}], ctorParameters: function () { return [{ type: i1.ScReferencesService }]; }, propDecorators: { form: [{
|
2540
|
+
type: Input
|
2413
2541
|
}] } });
|
2414
2542
|
|
2415
2543
|
/**
|
2416
|
-
*
|
2417
|
-
*/
|
2418
|
-
class ScDeliveryAddressModule {
|
2419
|
-
}
|
2420
|
-
ScDeliveryAddressModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScDeliveryAddressModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
2421
|
-
ScDeliveryAddressModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: ScDeliveryAddressModule, declarations: [ScDeliveryAddressAccordionComponent, ScDeliveryAddressAccordionItemComponent], imports: [CommonModule, ScAccordionModule, TuiButtonModule, TuiModeModule, TuiLoaderModule, TuiLetModule, TuiNotificationModule, ScContactsModule], exports: [ScDeliveryAddressAccordionComponent] });
|
2422
|
-
ScDeliveryAddressModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScDeliveryAddressModule, imports: [CommonModule, ScAccordionModule, TuiButtonModule, TuiModeModule, TuiLoaderModule, TuiLetModule, TuiNotificationModule, ScContactsModule] });
|
2423
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScDeliveryAddressModule, decorators: [{
|
2424
|
-
type: NgModule,
|
2425
|
-
args: [{
|
2426
|
-
declarations: [ScDeliveryAddressAccordionComponent, ScDeliveryAddressAccordionItemComponent],
|
2427
|
-
imports: [CommonModule, ScAccordionModule, TuiButtonModule, TuiModeModule, TuiLoaderModule, TuiLetModule, TuiNotificationModule, ScContactsModule],
|
2428
|
-
exports: [ScDeliveryAddressAccordionComponent],
|
2429
|
-
}]
|
2430
|
-
}] });
|
2431
|
-
|
2432
|
-
/**
|
2433
|
-
* Сервис работающий с значками элементов дерева.
|
2544
|
+
* Компонент поля ввода страны/региона/города.
|
2434
2545
|
*/
|
2435
|
-
class
|
2546
|
+
let ScAddressesSelectionFieldComponent = class ScAddressesSelectionFieldComponent {
|
2436
2547
|
/**
|
2437
|
-
*
|
2548
|
+
* Инициализирует экземпляр класса {@link ScAddressesSelectionFieldComponent}.
|
2438
2549
|
*
|
2439
|
-
* @param
|
2440
|
-
* @
|
2550
|
+
* @param formGroupDirective Директива c `FormGroup` из DOM.
|
2551
|
+
* @param locationsService Сервис для получения списков стран, регионов, городов.
|
2441
2552
|
*/
|
2442
|
-
|
2443
|
-
|
2444
|
-
|
2445
|
-
|
2446
|
-
|
2447
|
-
|
2448
|
-
|
2449
|
-
|
2450
|
-
|
2451
|
-
|
2452
|
-
|
2453
|
-
|
2454
|
-
|
2455
|
-
|
2553
|
+
constructor(formGroupDirective, locationsService) {
|
2554
|
+
this.formGroupDirective = formGroupDirective;
|
2555
|
+
this.locationsService = locationsService;
|
2556
|
+
/**
|
2557
|
+
* FormControl для поля страны.
|
2558
|
+
*/
|
2559
|
+
this.countryControl = new FormControl({
|
2560
|
+
id: 3159,
|
2561
|
+
name: 'Россия'
|
2562
|
+
}, Validators.required);
|
2563
|
+
/**
|
2564
|
+
* FormControl для поля региона.
|
2565
|
+
*/
|
2566
|
+
this.regionControl = new FormControl(null, Validators.required);
|
2567
|
+
/**
|
2568
|
+
* FormControl для поля города.
|
2569
|
+
*/
|
2570
|
+
this.cityControl = new FormControl(null, Validators.required);
|
2571
|
+
/**
|
2572
|
+
* {@link Observable} изменения списка стран.
|
2573
|
+
*/
|
2574
|
+
this.countries$ = this.locationsService.getCountries$().pipe(share(), startWith(null));
|
2575
|
+
/**
|
2576
|
+
* {@link Observable} изменения списка регионов.
|
2577
|
+
*/
|
2578
|
+
this.regions$ = tuiControlValue(this.countryControl).pipe(filter(tuiIsPresent), switchMap((country) => this.locationsService.getRegions$(country.id).pipe(startWith(null))), share());
|
2579
|
+
/**
|
2580
|
+
* {@link Observable} изменения списка городов.
|
2581
|
+
*/
|
2582
|
+
this.cities$ = combineLatest({
|
2583
|
+
country: tuiControlValue(this.countryControl),
|
2584
|
+
region: tuiControlValue(this.regionControl)
|
2585
|
+
}).pipe(debounceTime(0), switchMap(({ country, region }) => country && region ? this.locationsService.getCities$(country.id, region.id).pipe(startWith(null)) : of([])), share());
|
2586
|
+
/**
|
2587
|
+
* Функция преобразования объекта сортировки в значение, отображаемое в поле ввода.
|
2588
|
+
*
|
2589
|
+
* @param item Выбранный объект выпадающего списка.
|
2590
|
+
*/
|
2591
|
+
this.stringify = (item) => `${item.name}`;
|
2592
|
+
}
|
2593
|
+
/**
|
2594
|
+
* `FormControl` поля идентификатора города.
|
2595
|
+
*/
|
2596
|
+
get cityIdControl() {
|
2597
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
2598
|
+
return this.formGroupDirective.form.get('cityId');
|
2599
|
+
}
|
2600
|
+
/** @inheritDoc */
|
2601
|
+
ngOnInit() {
|
2602
|
+
var _a;
|
2603
|
+
if (this.cityIdControl.valid) {
|
2604
|
+
this.locationsService
|
2605
|
+
.getUserCity$(Number((_a = this.cityIdControl) === null || _a === void 0 ? void 0 : _a.value))
|
2606
|
+
.pipe(untilDestroyed(this))
|
2607
|
+
.subscribe((city) => {
|
2608
|
+
var _a, _b, _c;
|
2609
|
+
this.countryControl.patchValue((_b = (_a = city === null || city === void 0 ? void 0 : city.region) === null || _a === void 0 ? void 0 : _a.country) !== null && _b !== void 0 ? _b : null);
|
2610
|
+
this.regionControl.patchValue((_c = city === null || city === void 0 ? void 0 : city.region) !== null && _c !== void 0 ? _c : null);
|
2611
|
+
this.cityControl.patchValue(city);
|
2612
|
+
});
|
2613
|
+
}
|
2614
|
+
this.countryControl.valueChanges.pipe(untilDestroyed(this)).subscribe((country) => {
|
2615
|
+
this.regionControl.reset(null);
|
2616
|
+
this.cityControl.reset(null);
|
2617
|
+
country ? this.regionControl.enable() : this.regionControl.disable();
|
2618
|
+
this.cityControl.disable();
|
2619
|
+
});
|
2620
|
+
this.regionControl.valueChanges.pipe(untilDestroyed(this)).subscribe((region) => {
|
2621
|
+
this.cityControl.reset(null);
|
2622
|
+
this.cityIdControl.reset(null);
|
2623
|
+
region ? this.cityControl.enable() : this.cityControl.disable();
|
2624
|
+
});
|
2625
|
+
}
|
2626
|
+
/**
|
2627
|
+
* Заполнение полей банковских реквизитов на основе выбранной подсказки.
|
2628
|
+
*
|
2629
|
+
* @param suggestion Объект подсказки по банку.
|
2630
|
+
*/
|
2631
|
+
onSelectedCity(city) {
|
2632
|
+
var _a;
|
2633
|
+
if (this.cityIdControl) {
|
2634
|
+
this.cityIdControl.setValue((_a = city === null || city === void 0 ? void 0 : city.id.toString()) !== null && _a !== void 0 ? _a : null);
|
2635
|
+
tuiMarkControlAsTouchedAndValidate(this.cityIdControl);
|
2636
|
+
}
|
2637
|
+
}
|
2638
|
+
};
|
2639
|
+
ScAddressesSelectionFieldComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScAddressesSelectionFieldComponent, deps: [{ token: FormGroupDirective, skipSelf: true }, { token: i1.ScLocationsService }], target: i0.ɵɵFactoryTarget.Component });
|
2640
|
+
ScAddressesSelectionFieldComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ScAddressesSelectionFieldComponent, selector: "sc-addresses-selection-field", ngImport: i0, template: "<div class=\"flex flex-col sm:flex-row gap-4 items-start\">\n <!-- TODO: \u041E\u0442\u043A\u0440\u044B\u0442\u044C \u043F\u043E\u043B\u0435 \u0432\u044B\u0431\u043E\u0440\u0430 \u0441\u0442\u0440\u0430\u043D\u044B \u043F\u0440\u0438 \u0434\u043E\u0431\u0430\u0432\u043B\u0435\u043D\u0438\u0438 \u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E\u0441\u0442\u0438 \u0432\u044B\u0431\u043E\u0440\u0430 \u0441\u0442\u0440\u0430\u043D\u044B \u0434\u043B\u044F \u043A\u043B\u0438\u0435\u043D\u0442\u0430. -->\n <!-- <label tuiLabel=\"\u0421\u0442\u0440\u0430\u043D\u0430\" class=\"w-full\">\n <tui-combo-box *tuiLet=\"countries$ | async as countries\" [formControl]=\"countryControl\" [stringify]=\"stringify\">\n \u0421\u0442\u0440\u0430\u043D\u0430\n <input tuiTextfield autocomplete=\"new-password\" />\n <tui-data-list-wrapper *tuiDataList [itemContent]=\"stringify | tuiStringifyContent\" [items]=\"countries | tuiFilterByInputWith: stringify\"></tui-data-list-wrapper>\n </tui-combo-box>\n <tui-error [formControl]=\"countryControl\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label> -->\n <!-- TODO: [TASK:9383]: \u0414\u043E\u0440\u0430\u0431\u043E\u0442\u0430\u0442\u044C \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442 \u0432\u044B\u0431\u043E\u0440\u0430 \u0433\u043E\u0440\u043E\u0434\u0430, \u043A\u0430\u043A \u043D\u0430 \u043F\u043E\u0440\u0442\u0430\u043B\u0435 -->\n <label tuiLabel=\"\u0420\u0435\u0433\u0438\u043E\u043D\" class=\"w-full\">\n <tui-combo-box *tuiLet=\"regions$ | async as regions\" [formControl]=\"regionControl\" [stringify]=\"stringify\">\n \u0420\u0435\u0433\u0438\u043E\u043D\n <input tuiTextfield autocapitalize=\"off\" autocomplete=\"off\" autocorrect=\"off\" />\n <tui-data-list-wrapper *tuiDataList [itemContent]=\"stringify | tuiStringifyContent\" [items]=\"regions | tuiFilterByInputWith: stringify\"></tui-data-list-wrapper>\n </tui-combo-box>\n <tui-error [formControl]=\"regionControl\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <label tuiLabel=\"\u0413\u043E\u0440\u043E\u0434\" class=\"w-full\">\n <tui-combo-box *tuiLet=\"cities$ | async as cities\" [formControl]=\"cityControl\" [stringify]=\"stringify\" (ngModelChange)=\"onSelectedCity($event)\">\n \u0413\u043E\u0440\u043E\u0434\n <input tuiTextfield autocapitalize=\"off\" autocomplete=\"off\" autocorrect=\"off\" />\n <tui-data-list-wrapper *tuiDataList [itemContent]=\"stringify | tuiStringifyContent\" [items]=\"cities | tuiFilterByInputWith: stringify\"></tui-data-list-wrapper>\n </tui-combo-box>\n <tui-error [formControl]=\"cityIdControl\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n <tui-error *ngIf=\"cityIdControl.untouched\" [formControl]=\"cityControl\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i4.TuiTextfieldComponent, selector: "input[tuiTextfield], textarea[tuiTextfield]" }, { kind: "component", type: i4.TuiLabelComponent, selector: "label[tuiLabel]", inputs: ["tuiLabel", "context"] }, { kind: "directive", type: i5.TuiLetDirective, selector: "[tuiLet]", inputs: ["tuiLet"] }, { kind: "component", type: i4.TuiErrorComponent, selector: "tui-error", inputs: ["error"] }, { kind: "directive", type: i4.TuiDataListDirective, selector: "ng-template[tuiDataList]" }, { kind: "component", type: i6.TuiComboBoxComponent, selector: "tui-combo-box", inputs: ["stringify", "strictMatcher", "identityMatcher", "valueContent", "strict", "search"], outputs: ["searchChange"] }, { kind: "directive", type: i6.TuiComboBoxDirective, selector: "tui-combo-box" }, { kind: "component", type: i6.TuiDataListWrapperComponent, selector: "tui-data-list-wrapper:not([labels])", inputs: ["items"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i6.TuiFieldErrorPipe, name: "tuiFieldError" }, { kind: "pipe", type: i6.TuiFilterByInputWithPipe, name: "tuiFilterByInputWith" }, { kind: "pipe", type: i6.TuiStringifyContentPipe, name: "tuiStringifyContent" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
2641
|
+
ScAddressesSelectionFieldComponent = __decorate([
|
2642
|
+
UntilDestroy({ checkProperties: true })
|
2643
|
+
], ScAddressesSelectionFieldComponent);
|
2644
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScAddressesSelectionFieldComponent, decorators: [{
|
2645
|
+
type: Component,
|
2646
|
+
args: [{ selector: 'sc-addresses-selection-field', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"flex flex-col sm:flex-row gap-4 items-start\">\n <!-- TODO: \u041E\u0442\u043A\u0440\u044B\u0442\u044C \u043F\u043E\u043B\u0435 \u0432\u044B\u0431\u043E\u0440\u0430 \u0441\u0442\u0440\u0430\u043D\u044B \u043F\u0440\u0438 \u0434\u043E\u0431\u0430\u0432\u043B\u0435\u043D\u0438\u0438 \u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E\u0441\u0442\u0438 \u0432\u044B\u0431\u043E\u0440\u0430 \u0441\u0442\u0440\u0430\u043D\u044B \u0434\u043B\u044F \u043A\u043B\u0438\u0435\u043D\u0442\u0430. -->\n <!-- <label tuiLabel=\"\u0421\u0442\u0440\u0430\u043D\u0430\" class=\"w-full\">\n <tui-combo-box *tuiLet=\"countries$ | async as countries\" [formControl]=\"countryControl\" [stringify]=\"stringify\">\n \u0421\u0442\u0440\u0430\u043D\u0430\n <input tuiTextfield autocomplete=\"new-password\" />\n <tui-data-list-wrapper *tuiDataList [itemContent]=\"stringify | tuiStringifyContent\" [items]=\"countries | tuiFilterByInputWith: stringify\"></tui-data-list-wrapper>\n </tui-combo-box>\n <tui-error [formControl]=\"countryControl\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label> -->\n <!-- TODO: [TASK:9383]: \u0414\u043E\u0440\u0430\u0431\u043E\u0442\u0430\u0442\u044C \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442 \u0432\u044B\u0431\u043E\u0440\u0430 \u0433\u043E\u0440\u043E\u0434\u0430, \u043A\u0430\u043A \u043D\u0430 \u043F\u043E\u0440\u0442\u0430\u043B\u0435 -->\n <label tuiLabel=\"\u0420\u0435\u0433\u0438\u043E\u043D\" class=\"w-full\">\n <tui-combo-box *tuiLet=\"regions$ | async as regions\" [formControl]=\"regionControl\" [stringify]=\"stringify\">\n \u0420\u0435\u0433\u0438\u043E\u043D\n <input tuiTextfield autocapitalize=\"off\" autocomplete=\"off\" autocorrect=\"off\" />\n <tui-data-list-wrapper *tuiDataList [itemContent]=\"stringify | tuiStringifyContent\" [items]=\"regions | tuiFilterByInputWith: stringify\"></tui-data-list-wrapper>\n </tui-combo-box>\n <tui-error [formControl]=\"regionControl\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <label tuiLabel=\"\u0413\u043E\u0440\u043E\u0434\" class=\"w-full\">\n <tui-combo-box *tuiLet=\"cities$ | async as cities\" [formControl]=\"cityControl\" [stringify]=\"stringify\" (ngModelChange)=\"onSelectedCity($event)\">\n \u0413\u043E\u0440\u043E\u0434\n <input tuiTextfield autocapitalize=\"off\" autocomplete=\"off\" autocorrect=\"off\" />\n <tui-data-list-wrapper *tuiDataList [itemContent]=\"stringify | tuiStringifyContent\" [items]=\"cities | tuiFilterByInputWith: stringify\"></tui-data-list-wrapper>\n </tui-combo-box>\n <tui-error [formControl]=\"cityIdControl\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n <tui-error *ngIf=\"cityIdControl.untouched\" [formControl]=\"cityControl\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n</div>\n" }]
|
2647
|
+
}], ctorParameters: function () {
|
2648
|
+
return [{ type: i3.FormGroupDirective, decorators: [{
|
2649
|
+
type: SkipSelf
|
2650
|
+
}, {
|
2651
|
+
type: Inject,
|
2652
|
+
args: [FormGroupDirective]
|
2653
|
+
}] }, { type: i1.ScLocationsService }];
|
2654
|
+
} });
|
2655
|
+
|
2656
|
+
/**
|
2657
|
+
* Модуль полей ввода.
|
2658
|
+
*/
|
2659
|
+
class ScFormFieldsModule {
|
2660
|
+
}
|
2661
|
+
ScFormFieldsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScFormFieldsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
2662
|
+
ScFormFieldsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: ScFormFieldsModule, declarations: [ScAddressesSelectionFieldComponent, ScSuggestionFieldComponent], imports: [CommonModule,
|
2663
|
+
FormsModule,
|
2664
|
+
ReactiveFormsModule,
|
2665
|
+
TuiInputModule,
|
2666
|
+
TuiTextfieldControllerModule,
|
2667
|
+
TuiLabelModule,
|
2668
|
+
TuiLetModule,
|
2669
|
+
TuiFieldErrorPipeModule,
|
2670
|
+
TuiErrorModule,
|
2671
|
+
TuiDataListModule,
|
2672
|
+
TuiLoaderModule,
|
2673
|
+
TuiComboBoxModule,
|
2674
|
+
TuiDataListWrapperModule,
|
2675
|
+
TuiFilterByInputPipeModule,
|
2676
|
+
TuiStringifyContentPipeModule,
|
2677
|
+
TuiInputPhoneModule,
|
2678
|
+
TuiButtonModule,
|
2679
|
+
MaskitoModule], exports: [ScAddressesSelectionFieldComponent, ScSuggestionFieldComponent] });
|
2680
|
+
ScFormFieldsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScFormFieldsModule, imports: [CommonModule,
|
2681
|
+
FormsModule,
|
2682
|
+
ReactiveFormsModule,
|
2683
|
+
TuiInputModule,
|
2684
|
+
TuiTextfieldControllerModule,
|
2685
|
+
TuiLabelModule,
|
2686
|
+
TuiLetModule,
|
2687
|
+
TuiFieldErrorPipeModule,
|
2688
|
+
TuiErrorModule,
|
2689
|
+
TuiDataListModule,
|
2690
|
+
TuiLoaderModule,
|
2691
|
+
TuiComboBoxModule,
|
2692
|
+
TuiDataListWrapperModule,
|
2693
|
+
TuiFilterByInputPipeModule,
|
2694
|
+
TuiStringifyContentPipeModule,
|
2695
|
+
TuiInputPhoneModule,
|
2696
|
+
TuiButtonModule,
|
2697
|
+
MaskitoModule] });
|
2698
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScFormFieldsModule, decorators: [{
|
2699
|
+
type: NgModule,
|
2700
|
+
args: [{
|
2701
|
+
declarations: [ScAddressesSelectionFieldComponent, ScSuggestionFieldComponent],
|
2702
|
+
imports: [
|
2703
|
+
CommonModule,
|
2704
|
+
FormsModule,
|
2705
|
+
ReactiveFormsModule,
|
2706
|
+
TuiInputModule,
|
2707
|
+
TuiTextfieldControllerModule,
|
2708
|
+
TuiLabelModule,
|
2709
|
+
TuiLetModule,
|
2710
|
+
TuiFieldErrorPipeModule,
|
2711
|
+
TuiErrorModule,
|
2712
|
+
TuiDataListModule,
|
2713
|
+
TuiLoaderModule,
|
2714
|
+
TuiComboBoxModule,
|
2715
|
+
TuiDataListWrapperModule,
|
2716
|
+
TuiFilterByInputPipeModule,
|
2717
|
+
TuiStringifyContentPipeModule,
|
2718
|
+
TuiInputPhoneModule,
|
2719
|
+
TuiButtonModule,
|
2720
|
+
MaskitoModule
|
2721
|
+
],
|
2722
|
+
exports: [ScAddressesSelectionFieldComponent, ScSuggestionFieldComponent]
|
2723
|
+
}]
|
2724
|
+
}] });
|
2725
|
+
|
2726
|
+
/**
|
2727
|
+
* Компонент формы создания нового банковского счета контрагента.
|
2728
|
+
*/
|
2729
|
+
class ScAddContragentBankAccountsDialogComponent {
|
2730
|
+
/**
|
2731
|
+
* Инициализирует экземпляр класса {@link ScAddContragentBankAccountsFormComponent}.
|
2732
|
+
*
|
2733
|
+
* @param contragentService Сервис работы с контрагентами.
|
2734
|
+
* @param context Контекст диалогового окна, в котором открыт компонент.
|
2735
|
+
*/
|
2736
|
+
constructor(contragentService, context) {
|
2737
|
+
this.contragentService = contragentService;
|
2738
|
+
this.context = context;
|
2739
|
+
/**
|
2740
|
+
* Группа с полем банковских реквизитов.
|
2741
|
+
*/
|
2742
|
+
this.form = new FormGroup({
|
2743
|
+
bankName: new FormControl(null, Validators.required),
|
2744
|
+
bic: new FormControl(null, [Validators.required, Validators.minLength(9), scBicValidator]),
|
2745
|
+
accountNumber: new FormControl(null, [Validators.required, Validators.minLength(20)]),
|
2746
|
+
correspondentAccount: new FormControl(null, [Validators.required, Validators.minLength(20), scCorrespondentAccountValidator]),
|
2747
|
+
currencyId: new FormControl(null, Validators.required)
|
2748
|
+
});
|
2749
|
+
/**
|
2750
|
+
* {@link Subject} события отправки формы.
|
2751
|
+
*/
|
2752
|
+
this.onSubmit = new Subject();
|
2753
|
+
/**
|
2754
|
+
* {@link Observable} запроса данных аутентификации.
|
2755
|
+
*/
|
2756
|
+
this.request$ = this.onSubmit.pipe(map(() => this.form.value), tap((i) => console.log(i)), filter((value) => this.form.valid), switchMap((value) => {
|
2757
|
+
console.log(this.context.data.contragentId);
|
2758
|
+
return this.contragentService.createContragentBankAccount$(this.context.data.contragentId, value).pipe(tap((bankAccount) => { var _a; return (_a = this.context) === null || _a === void 0 ? void 0 : _a.completeWith(bankAccount); }), catchError((error) => {
|
2759
|
+
var _a;
|
2760
|
+
tuiMarkControlAsTouchedAndValidate(this.form);
|
2761
|
+
const errorResponse = error.error;
|
2762
|
+
for (const key in errorResponse.errors) {
|
2763
|
+
(_a = this.form.get(key)) === null || _a === void 0 ? void 0 : _a.setErrors({ serverResponse: errorResponse.errors[`${key}`] });
|
2764
|
+
}
|
2765
|
+
if (!errorResponse.errors && errorResponse.message) {
|
2766
|
+
this.form.setErrors({ serverResponse: [errorResponse.message] });
|
2767
|
+
}
|
2768
|
+
return of({});
|
2769
|
+
}), startWith(null));
|
2770
|
+
}), share());
|
2771
|
+
/**
|
2772
|
+
* {@link Observable} изменения состояния загрузки данных аутентификации по номеру телефона.
|
2773
|
+
*/
|
2774
|
+
this.loading$ = this.request$.pipe(map(tuiIsFalsy));
|
2775
|
+
}
|
2776
|
+
}
|
2777
|
+
ScAddContragentBankAccountsDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScAddContragentBankAccountsDialogComponent, deps: [{ token: i1.ScContragentService }, { token: POLYMORPHEUS_CONTEXT }], target: i0.ɵɵFactoryTarget.Component });
|
2778
|
+
ScAddContragentBankAccountsDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ScAddContragentBankAccountsDialogComponent, selector: "sc-add-contragent-bank-account-dialog", ngImport: i0, template: "<form [formGroup]=\"form\" (ngSubmit)=\"onSubmit.next()\" class=\"flex flex-col gap-3\">\n <sc-new-contragent-bank-account-form [form]=\"form\"></sc-new-contragent-bank-account-form>\n <div class=\"flex gap-4 justify-center\">\n <button tuiButton (click)=\"context.$implicit.complete()\" type=\"button\" icon=\"tuiIconXLarge\" appearance=\"secondary\">\u041E\u0442\u043C\u0435\u043D\u0430</button>\n <button tuiButton tuiMode=\"onLight\" [disabled]=\"form.invalid\" [showLoader]=\"!!(loading$ | async)\" type=\"submit\" icon=\"scIconSave\">\u0421\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C</button>\n </div>\n</form>", dependencies: [{ 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: i4.TuiModeDirective, selector: "[tuiMode]", inputs: ["tuiMode"] }, { kind: "component", type: ScNewContragentBankAccountsFormComponent, selector: "sc-new-contragent-bank-account-form", inputs: ["form"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
2779
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScAddContragentBankAccountsDialogComponent, decorators: [{
|
2780
|
+
type: Component,
|
2781
|
+
args: [{ selector: 'sc-add-contragent-bank-account-dialog', changeDetection: ChangeDetectionStrategy.OnPush, template: "<form [formGroup]=\"form\" (ngSubmit)=\"onSubmit.next()\" class=\"flex flex-col gap-3\">\n <sc-new-contragent-bank-account-form [form]=\"form\"></sc-new-contragent-bank-account-form>\n <div class=\"flex gap-4 justify-center\">\n <button tuiButton (click)=\"context.$implicit.complete()\" type=\"button\" icon=\"tuiIconXLarge\" appearance=\"secondary\">\u041E\u0442\u043C\u0435\u043D\u0430</button>\n <button tuiButton tuiMode=\"onLight\" [disabled]=\"form.invalid\" [showLoader]=\"!!(loading$ | async)\" type=\"submit\" icon=\"scIconSave\">\u0421\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C</button>\n </div>\n</form>" }]
|
2782
|
+
}], ctorParameters: function () {
|
2783
|
+
return [{ type: i1.ScContragentService }, { type: undefined, decorators: [{
|
2784
|
+
type: Inject,
|
2785
|
+
args: [POLYMORPHEUS_CONTEXT]
|
2786
|
+
}] }];
|
2787
|
+
} });
|
2788
|
+
|
2789
|
+
/**
|
2790
|
+
* Модуль контактных лиц.
|
2791
|
+
*/
|
2792
|
+
class ScContactsModule {
|
2793
|
+
}
|
2794
|
+
ScContactsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScContactsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
2795
|
+
ScContactsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: ScContactsModule, declarations: [ScContactsAccordionComponent, ScNewContragentBankAccountsFormComponent, ScAddContragentBankAccountsDialogComponent], imports: [CommonModule,
|
2796
|
+
FormsModule,
|
2797
|
+
ReactiveFormsModule,
|
2798
|
+
ScAccordionModule,
|
2799
|
+
TuiButtonModule,
|
2800
|
+
TuiModeModule,
|
2801
|
+
TuiLoaderModule,
|
2802
|
+
TuiLetModule,
|
2803
|
+
TuiNotificationModule,
|
2804
|
+
TuiLinkModule,
|
2805
|
+
TuiFormatPhonePipeModule,
|
2806
|
+
ScFormFieldsModule,
|
2807
|
+
MaskitoModule,
|
2808
|
+
TuiFieldErrorPipeModule,
|
2809
|
+
TuiSelectModule,
|
2810
|
+
TuiDataListModule,
|
2811
|
+
TuiDataListWrapperModule,
|
2812
|
+
TuiLabelModule,
|
2813
|
+
TuiInputModule,
|
2814
|
+
TuiInputPhoneModule,
|
2815
|
+
TuiErrorModule], exports: [ScContactsAccordionComponent, ScNewContragentBankAccountsFormComponent, ScAddContragentBankAccountsDialogComponent] });
|
2816
|
+
ScContactsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScContactsModule, imports: [CommonModule,
|
2817
|
+
FormsModule,
|
2818
|
+
ReactiveFormsModule,
|
2819
|
+
ScAccordionModule,
|
2820
|
+
TuiButtonModule,
|
2821
|
+
TuiModeModule,
|
2822
|
+
TuiLoaderModule,
|
2823
|
+
TuiLetModule,
|
2824
|
+
TuiNotificationModule,
|
2825
|
+
TuiLinkModule,
|
2826
|
+
TuiFormatPhonePipeModule,
|
2827
|
+
ScFormFieldsModule,
|
2828
|
+
MaskitoModule,
|
2829
|
+
TuiFieldErrorPipeModule,
|
2830
|
+
TuiSelectModule,
|
2831
|
+
TuiDataListModule,
|
2832
|
+
TuiDataListWrapperModule,
|
2833
|
+
TuiLabelModule,
|
2834
|
+
TuiInputModule,
|
2835
|
+
TuiInputPhoneModule,
|
2836
|
+
TuiErrorModule] });
|
2837
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScContactsModule, decorators: [{
|
2838
|
+
type: NgModule,
|
2839
|
+
args: [{
|
2840
|
+
declarations: [ScContactsAccordionComponent, ScNewContragentBankAccountsFormComponent, ScAddContragentBankAccountsDialogComponent],
|
2841
|
+
imports: [
|
2842
|
+
CommonModule,
|
2843
|
+
FormsModule,
|
2844
|
+
ReactiveFormsModule,
|
2845
|
+
ScAccordionModule,
|
2846
|
+
TuiButtonModule,
|
2847
|
+
TuiModeModule,
|
2848
|
+
TuiLoaderModule,
|
2849
|
+
TuiLetModule,
|
2850
|
+
TuiNotificationModule,
|
2851
|
+
TuiLinkModule,
|
2852
|
+
TuiFormatPhonePipeModule,
|
2853
|
+
ScFormFieldsModule,
|
2854
|
+
MaskitoModule,
|
2855
|
+
TuiFieldErrorPipeModule,
|
2856
|
+
TuiSelectModule,
|
2857
|
+
TuiDataListModule,
|
2858
|
+
TuiDataListWrapperModule,
|
2859
|
+
TuiLabelModule,
|
2860
|
+
TuiInputModule,
|
2861
|
+
TuiInputPhoneModule,
|
2862
|
+
TuiErrorModule
|
2863
|
+
],
|
2864
|
+
exports: [ScContactsAccordionComponent, ScNewContragentBankAccountsFormComponent, ScAddContragentBankAccountsDialogComponent]
|
2865
|
+
}]
|
2866
|
+
}] });
|
2867
|
+
|
2868
|
+
/**
|
2869
|
+
* Модуль для отображение контента разделами, с возможностью скрывать и отображать содержимое.
|
2870
|
+
*/
|
2871
|
+
class ScContragentsModule {
|
2872
|
+
}
|
2873
|
+
ScContragentsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScContragentsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
2874
|
+
ScContragentsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: ScContragentsModule, declarations: [ScContragentsAccordionComponent, ScContragentsAccordionItemComponent], imports: [CommonModule, ScAccordionModule, TuiButtonModule, TuiModeModule, TuiLoaderModule, TuiLetModule, TuiNotificationModule, ScContactsModule], exports: [ScContragentsAccordionComponent] });
|
2875
|
+
ScContragentsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScContragentsModule, imports: [CommonModule, ScAccordionModule, TuiButtonModule, TuiModeModule, TuiLoaderModule, TuiLetModule, TuiNotificationModule, ScContactsModule] });
|
2876
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScContragentsModule, decorators: [{
|
2877
|
+
type: NgModule,
|
2878
|
+
args: [{
|
2879
|
+
declarations: [ScContragentsAccordionComponent, ScContragentsAccordionItemComponent],
|
2880
|
+
imports: [CommonModule, ScAccordionModule, TuiButtonModule, TuiModeModule, TuiLoaderModule, TuiLetModule, TuiNotificationModule, ScContactsModule],
|
2881
|
+
exports: [ScContragentsAccordionComponent]
|
2882
|
+
}]
|
2883
|
+
}] });
|
2884
|
+
|
2885
|
+
/**
|
2886
|
+
* Компонент адреса доставки.
|
2887
|
+
*/
|
2888
|
+
class ScDeliveryAddressAccordionItemComponent {
|
2889
|
+
/**
|
2890
|
+
* Инициализирует экземпляр класса {@link ScDeliveryAddressAccordionItemComponent}.
|
2891
|
+
*
|
2892
|
+
* @param deliveryAddressService Сервис работы с адресами доставки.
|
2893
|
+
*/
|
2894
|
+
constructor(deliveryAddressService) {
|
2895
|
+
this.deliveryAddressService = deliveryAddressService;
|
2896
|
+
/**
|
2897
|
+
* Событие нажатия на кнопку редактирования контрагента.
|
2898
|
+
*/
|
2899
|
+
this.editDeliveryAddressClick = new EventEmitter();
|
2900
|
+
}
|
2901
|
+
/** @inheritDoc */
|
2902
|
+
ngOnInit() {
|
2903
|
+
this.contacts$ = this.deliveryAddressService.getDeliveryAddressContacts$(this.deliveryAddress.id);
|
2904
|
+
}
|
2905
|
+
}
|
2906
|
+
ScDeliveryAddressAccordionItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScDeliveryAddressAccordionItemComponent, deps: [{ token: i1.ScDeliveryAddressService }], target: i0.ɵɵFactoryTarget.Component });
|
2907
|
+
ScDeliveryAddressAccordionItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ScDeliveryAddressAccordionItemComponent, selector: "sc-delivery-address-accordion-item", inputs: { deliveryAddress: "deliveryAddress" }, outputs: { editDeliveryAddressClick: "editDeliveryAddressClick" }, ngImport: i0, template: "<sc-accordion [showAddButton]=\"false\">\n {{ deliveryAddress.address }}\n\n <ng-template scAccordionContent>\n <div class=\"flex flex-col gap-2\">\n <div class=\"flex gap-2\">\n <div class=\"flex flex-col gap-2 grow\">\n <span> \u0410\u0434\u0440\u0435\u0441: {{ deliveryAddress.address }} </span>\n <span *ngIf=\"deliveryAddress.comment\"> \u041A\u043E\u043C\u043C\u0435\u043D\u0442\u0430\u0440\u0438\u0439: {{ deliveryAddress.comment }} </span>\n </div>\n <button tuiIconButton size=\"m\" type=\"button\" icon=\"tuiIconEdit3Large\" tuiMode=\"onLight\" appearance=\"flat\" (click)=\"$event.stopPropagation();\"></button>\n </div>\n\n <sc-contacts-accordion *ngIf=\"contacts$\" [contacts$]=\"contacts$\"></sc-contacts-accordion>\n </div>\n </ng-template>\n</sc-accordion>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ScAccordionComponent, selector: "sc-accordion", inputs: ["showAddButton", "showDeleteButton", "showArrow", "open", "size"], outputs: ["addButtonClick", "deleteButtonClick"] }, { kind: "directive", type: ScAccordionContentDirective, selector: "ng-template[scAccordionContent]" }, { 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: ScContactsAccordionComponent, selector: "sc-contacts-accordion", inputs: ["contacts$"], outputs: ["addContactClick", "editContactClick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
2908
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScDeliveryAddressAccordionItemComponent, decorators: [{
|
2909
|
+
type: Component,
|
2910
|
+
args: [{ selector: 'sc-delivery-address-accordion-item', changeDetection: ChangeDetectionStrategy.OnPush, template: "<sc-accordion [showAddButton]=\"false\">\n {{ deliveryAddress.address }}\n\n <ng-template scAccordionContent>\n <div class=\"flex flex-col gap-2\">\n <div class=\"flex gap-2\">\n <div class=\"flex flex-col gap-2 grow\">\n <span> \u0410\u0434\u0440\u0435\u0441: {{ deliveryAddress.address }} </span>\n <span *ngIf=\"deliveryAddress.comment\"> \u041A\u043E\u043C\u043C\u0435\u043D\u0442\u0430\u0440\u0438\u0439: {{ deliveryAddress.comment }} </span>\n </div>\n <button tuiIconButton size=\"m\" type=\"button\" icon=\"tuiIconEdit3Large\" tuiMode=\"onLight\" appearance=\"flat\" (click)=\"$event.stopPropagation();\"></button>\n </div>\n\n <sc-contacts-accordion *ngIf=\"contacts$\" [contacts$]=\"contacts$\"></sc-contacts-accordion>\n </div>\n </ng-template>\n</sc-accordion>\n" }]
|
2911
|
+
}], ctorParameters: function () { return [{ type: i1.ScDeliveryAddressService }]; }, propDecorators: { deliveryAddress: [{
|
2912
|
+
type: Input
|
2913
|
+
}], editDeliveryAddressClick: [{
|
2914
|
+
type: Output
|
2915
|
+
}] } });
|
2916
|
+
|
2917
|
+
/**
|
2918
|
+
* Компонент адресов доставки.
|
2919
|
+
*/
|
2920
|
+
class ScDeliveryAddressAccordionComponent {
|
2921
|
+
/**
|
2922
|
+
* Инициализирует экземпляр класса {@link ScDeliveryAddressAccordionComponent}.
|
2923
|
+
*
|
2924
|
+
* @param deliveryAddressService Сервис работы с адресами доставки.
|
2925
|
+
*/
|
2926
|
+
constructor(deliveryAddressService) {
|
2927
|
+
this.deliveryAddressService = deliveryAddressService;
|
2928
|
+
/**
|
2929
|
+
* {@link Observable} данных адресов доставки.
|
2930
|
+
*/
|
2931
|
+
this.deliveryAddress$ = this.deliveryAddressService.deliveryAddresses$;
|
2932
|
+
/**
|
2933
|
+
* Событие нажатия на кнопку добавления адреса доставки клиента.
|
2934
|
+
*/
|
2935
|
+
this.addDeliveryAddressClick = new EventEmitter();
|
2936
|
+
}
|
2937
|
+
}
|
2938
|
+
ScDeliveryAddressAccordionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScDeliveryAddressAccordionComponent, deps: [{ token: i1.ScDeliveryAddressService }], target: i0.ɵɵFactoryTarget.Component });
|
2939
|
+
ScDeliveryAddressAccordionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ScDeliveryAddressAccordionComponent, selector: "sc-delivery-address-accordion", outputs: { addDeliveryAddressClick: "addDeliveryAddressClick" }, ngImport: i0, template: "<sc-accordion (addButtonClick)=\"addDeliveryAddressClick.emit()\">\n \u0410\u0434\u0440\u0435\u0441\u0430 \u0434\u043E\u0441\u0442\u0430\u0432\u043A\u0438\n <ng-template scAccordionContent>\n <tui-loader *tuiLet=\"deliveryAddress$ | async as deliveryAddress\" [overlay]=\"true\" [showLoader]=\"deliveryAddress === null\">\n <div class=\"flex flex-col gap-2\">\n <ng-container *ngIf=\"!deliveryAddress || deliveryAddress.length; else contragentsNotExist\">\n <sc-delivery-address-accordion-item *ngFor=\"let address of deliveryAddress\" [deliveryAddress]=\"address\"></sc-delivery-address-accordion-item>\n </ng-container>\n\n <ng-template #contragentsNotExist>\n <tui-notification size=\"l\">\n <div class=\"flex flex-wrap gap-2 font-medium\">\n \u0410\u0434\u0440\u0435\u0441\u0430 \u0434\u043E\u0441\u0442\u0430\u0432\u043A\u0438 \u043D\u0435 \u0443\u043A\u0430\u0437\u0430\u043D\u044B.\n <button tuiButton size=\"s\" icon=\"tuiIconPlusLarge\" (click)=\"addDeliveryAddressClick.emit()\">\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C</button>\n </div>\n </tui-notification>\n </ng-template>\n </div>\n </tui-loader>\n </ng-template>\n</sc-accordion>\n", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ScAccordionComponent, selector: "sc-accordion", inputs: ["showAddButton", "showDeleteButton", "showArrow", "open", "size"], outputs: ["addButtonClick", "deleteButtonClick"] }, { kind: "directive", type: ScAccordionContentDirective, selector: "ng-template[scAccordionContent]" }, { 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.TuiLoaderComponent, selector: "tui-loader", inputs: ["size", "inheritColor", "overlay", "textContent", "showLoader"] }, { kind: "directive", type: i5.TuiLetDirective, selector: "[tuiLet]", inputs: ["tuiLet"] }, { kind: "component", type: i4.TuiNotificationComponent, selector: "tui-notification", inputs: ["hasIcon", "icon", "status", "size", "hideClose"], outputs: ["close"] }, { kind: "component", type: ScDeliveryAddressAccordionItemComponent, selector: "sc-delivery-address-accordion-item", inputs: ["deliveryAddress"], outputs: ["editDeliveryAddressClick"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
2940
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScDeliveryAddressAccordionComponent, decorators: [{
|
2941
|
+
type: Component,
|
2942
|
+
args: [{ selector: 'sc-delivery-address-accordion', changeDetection: ChangeDetectionStrategy.OnPush, template: "<sc-accordion (addButtonClick)=\"addDeliveryAddressClick.emit()\">\n \u0410\u0434\u0440\u0435\u0441\u0430 \u0434\u043E\u0441\u0442\u0430\u0432\u043A\u0438\n <ng-template scAccordionContent>\n <tui-loader *tuiLet=\"deliveryAddress$ | async as deliveryAddress\" [overlay]=\"true\" [showLoader]=\"deliveryAddress === null\">\n <div class=\"flex flex-col gap-2\">\n <ng-container *ngIf=\"!deliveryAddress || deliveryAddress.length; else contragentsNotExist\">\n <sc-delivery-address-accordion-item *ngFor=\"let address of deliveryAddress\" [deliveryAddress]=\"address\"></sc-delivery-address-accordion-item>\n </ng-container>\n\n <ng-template #contragentsNotExist>\n <tui-notification size=\"l\">\n <div class=\"flex flex-wrap gap-2 font-medium\">\n \u0410\u0434\u0440\u0435\u0441\u0430 \u0434\u043E\u0441\u0442\u0430\u0432\u043A\u0438 \u043D\u0435 \u0443\u043A\u0430\u0437\u0430\u043D\u044B.\n <button tuiButton size=\"s\" icon=\"tuiIconPlusLarge\" (click)=\"addDeliveryAddressClick.emit()\">\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C</button>\n </div>\n </tui-notification>\n </ng-template>\n </div>\n </tui-loader>\n </ng-template>\n</sc-accordion>\n" }]
|
2943
|
+
}], ctorParameters: function () { return [{ type: i1.ScDeliveryAddressService }]; }, propDecorators: { addDeliveryAddressClick: [{
|
2944
|
+
type: Output
|
2945
|
+
}] } });
|
2946
|
+
|
2947
|
+
/**
|
2948
|
+
* Модуль для отображение адресов доставки разделами, с возможностью скрывать и отображать содержимое.
|
2949
|
+
*/
|
2950
|
+
class ScDeliveryAddressModule {
|
2951
|
+
}
|
2952
|
+
ScDeliveryAddressModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScDeliveryAddressModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
2953
|
+
ScDeliveryAddressModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: ScDeliveryAddressModule, declarations: [ScDeliveryAddressAccordionComponent, ScDeliveryAddressAccordionItemComponent], imports: [CommonModule, ScAccordionModule, TuiButtonModule, TuiModeModule, TuiLoaderModule, TuiLetModule, TuiNotificationModule, ScContactsModule], exports: [ScDeliveryAddressAccordionComponent] });
|
2954
|
+
ScDeliveryAddressModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScDeliveryAddressModule, imports: [CommonModule, ScAccordionModule, TuiButtonModule, TuiModeModule, TuiLoaderModule, TuiLetModule, TuiNotificationModule, ScContactsModule] });
|
2955
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScDeliveryAddressModule, decorators: [{
|
2956
|
+
type: NgModule,
|
2957
|
+
args: [{
|
2958
|
+
declarations: [ScDeliveryAddressAccordionComponent, ScDeliveryAddressAccordionItemComponent],
|
2959
|
+
imports: [CommonModule, ScAccordionModule, TuiButtonModule, TuiModeModule, TuiLoaderModule, TuiLetModule, TuiNotificationModule, ScContactsModule],
|
2960
|
+
exports: [ScDeliveryAddressAccordionComponent]
|
2961
|
+
}]
|
2962
|
+
}] });
|
2963
|
+
|
2964
|
+
/**
|
2965
|
+
* Сервис работающий с значками элементов дерева.
|
2966
|
+
*/
|
2967
|
+
class TreeIconService {
|
2968
|
+
/**
|
2969
|
+
* Назначает значок элементу дерева в зависимости от типа файла.
|
2970
|
+
*
|
2971
|
+
* @param info Объект пришедших данных о файле.
|
2972
|
+
* @returns Возвращает название значка в виде строки.
|
2973
|
+
*/
|
2974
|
+
getIconName(info) {
|
2975
|
+
switch (info.icon) {
|
2976
|
+
case ScIconTypesEnum.iconImage:
|
2977
|
+
return 'tuiIconImageLarge';
|
2978
|
+
case ScIconTypesEnum.iconPdfFile:
|
2979
|
+
return 'scIconPdfFile';
|
2980
|
+
case ScIconTypesEnum.iconWordFile:
|
2981
|
+
return 'scIconWordFile';
|
2982
|
+
case ScIconTypesEnum.iconExcelFile:
|
2983
|
+
return 'scIconExcelFile';
|
2984
|
+
case ScIconTypesEnum.iconFolder:
|
2985
|
+
return 'scIconFolder';
|
2986
|
+
default:
|
2987
|
+
return 'scIconFile';
|
2456
2988
|
}
|
2457
2989
|
}
|
2458
2990
|
/**
|
2459
2991
|
* Проверяет на признак наличия дочерних элементов.
|
2460
2992
|
*
|
2461
2993
|
* @param info Объект пришедших данных о файле.
|
2462
|
-
* @returns Возвращает true при наличии дочерних элементов и false при их
|
2994
|
+
* @returns Возвращает true при наличии дочерних элементов и false при их отсутствии.
|
2463
2995
|
*/
|
2464
2996
|
hasChildren(info) {
|
2465
2997
|
return info.type === 'dir';
|
@@ -2470,7 +3002,7 @@ TreeIconService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", vers
|
|
2470
3002
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TreeIconService, decorators: [{
|
2471
3003
|
type: Injectable,
|
2472
3004
|
args: [{
|
2473
|
-
providedIn: 'root'
|
3005
|
+
providedIn: 'root'
|
2474
3006
|
}]
|
2475
3007
|
}] });
|
2476
3008
|
|
@@ -2519,7 +3051,7 @@ class TreeLoaderService {
|
|
2519
3051
|
hasChildren: this.iconService.hasChildren(item),
|
2520
3052
|
createdAt: item.createdAt,
|
2521
3053
|
id: item.id,
|
2522
|
-
link: item.link
|
3054
|
+
link: item.link
|
2523
3055
|
}))));
|
2524
3056
|
}
|
2525
3057
|
}
|
@@ -2561,16 +3093,16 @@ class TreeDirective {
|
|
2561
3093
|
this.service.loadChildren(node);
|
2562
3094
|
}
|
2563
3095
|
}
|
2564
|
-
TreeDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TreeDirective, deps: [{ token:
|
3096
|
+
TreeDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TreeDirective, deps: [{ token: i6.TuiTreeService }], target: i0.ɵɵFactoryTarget.Directive });
|
2565
3097
|
TreeDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.3.0", type: TreeDirective, selector: "[scTree]", providers: [TuiTreeService], exportAs: ["scTree"], ngImport: i0 });
|
2566
3098
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TreeDirective, decorators: [{
|
2567
3099
|
type: Directive,
|
2568
3100
|
args: [{
|
2569
3101
|
selector: '[scTree]',
|
2570
3102
|
exportAs: 'scTree',
|
2571
|
-
providers: [TuiTreeService]
|
3103
|
+
providers: [TuiTreeService]
|
2572
3104
|
}]
|
2573
|
-
}], ctorParameters: function () { return [{ type:
|
3105
|
+
}], ctorParameters: function () { return [{ type: i6.TuiTreeService }]; } });
|
2574
3106
|
|
2575
3107
|
/**
|
2576
3108
|
* Компонент для удаления стандартного значка элемента дерева.
|
@@ -2582,7 +3114,7 @@ FileTreeItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0",
|
|
2582
3114
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FileTreeItemComponent, decorators: [{
|
2583
3115
|
type: Component,
|
2584
3116
|
args: [{ selector: 'sc-file-tree-item', changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
2585
|
-
'(click)':
|
3117
|
+
'(click)': 'onClick()'
|
2586
3118
|
}, template: "<ng-container [ngTemplateOutlet]=\"context.template\"></ng-container>\n", styles: [":host{position:relative;min-height:var(--tui-height-s);display:flex;align-items:center;padding:.5rem;margin:.5rem 0;border-radius:12px;background:var(--tui-base-03)}:host._expandable:hover{cursor:pointer;background:var(--tui-base-03)}tui-svg{position:relative;background:inherit;z-index:1}\n"] }]
|
2587
3119
|
}] });
|
2588
3120
|
|
@@ -2602,12 +3134,12 @@ TreeTopDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version
|
|
2602
3134
|
TreeTopDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.3.0", type: TreeTopDirective, selector: "[scTopNodeText]", inputs: { text: ["scTopNodeText", "text"], icon: ["scTopNodeIcon", "icon"], link: ["scTopNodeLink", "link"], hasChildren: ["scTopNodeChilds", "hasChildren"], id: ["scTopNodeParent", "id"], createdAt: ["scTopNodeDate", "createdAt"] }, providers: [
|
2603
3135
|
{
|
2604
3136
|
provide: TUI_TREE_START,
|
2605
|
-
useExisting: forwardRef(() => TreeTopDirective)
|
3137
|
+
useExisting: forwardRef(() => TreeTopDirective)
|
2606
3138
|
},
|
2607
3139
|
{
|
2608
3140
|
provide: TUI_TREE_CONTENT,
|
2609
|
-
useValue: new PolymorpheusComponent(FileTreeItemComponent)
|
2610
|
-
}
|
3141
|
+
useValue: new PolymorpheusComponent(FileTreeItemComponent)
|
3142
|
+
}
|
2611
3143
|
], ngImport: i0 });
|
2612
3144
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TreeTopDirective, decorators: [{
|
2613
3145
|
type: Directive,
|
@@ -2616,13 +3148,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
2616
3148
|
providers: [
|
2617
3149
|
{
|
2618
3150
|
provide: TUI_TREE_START,
|
2619
|
-
useExisting: forwardRef(() => TreeTopDirective)
|
3151
|
+
useExisting: forwardRef(() => TreeTopDirective)
|
2620
3152
|
},
|
2621
3153
|
{
|
2622
3154
|
provide: TUI_TREE_CONTENT,
|
2623
|
-
useValue: new PolymorpheusComponent(FileTreeItemComponent)
|
2624
|
-
}
|
2625
|
-
]
|
3155
|
+
useValue: new PolymorpheusComponent(FileTreeItemComponent)
|
3156
|
+
}
|
3157
|
+
]
|
2626
3158
|
}]
|
2627
3159
|
}], propDecorators: { text: [{
|
2628
3160
|
type: Input,
|
@@ -2668,7 +3200,7 @@ class FilesAndDocumentsComponent {
|
|
2668
3200
|
hasChildren: this.iconService.hasChildren(item),
|
2669
3201
|
createdAt: item.createdAt,
|
2670
3202
|
id: item.id,
|
2671
|
-
link: item.link
|
3203
|
+
link: item.link
|
2672
3204
|
}))));
|
2673
3205
|
}
|
2674
3206
|
}
|
@@ -2676,16 +3208,16 @@ FilesAndDocumentsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0
|
|
2676
3208
|
FilesAndDocumentsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: FilesAndDocumentsComponent, selector: "sc-files-and-documents", providers: [
|
2677
3209
|
{
|
2678
3210
|
provide: TUI_TREE_LOADER,
|
2679
|
-
useClass: TreeLoaderService
|
2680
|
-
}
|
2681
|
-
], ngImport: i0, template: "<ng-container *ngIf=\"data$ | async as data; else skeleton\">\n <tui-tree\n *ngFor=\"let node of data\"\n #tree=\"scTree\"\n scTree\n [scTopNodeText]=\"node.text\"\n [scTopNodeIcon]=\"node.icon\"\n [scTopNodeLink]=\"node.link\"\n [scTopNodeChilds]=\"node.hasChildren\"\n [scTopNodeParent]=\"node.id\"\n [scTopNodeDate]=\"node.createdAt\"\n [childrenHandler]=\"tree.childrenHandler\"\n [content]=\"content\"\n [map]=\"tree.map\"\n [tuiTreeController]=\"false\"\n [value]=\"tree.service.data$ | async\"\n (toggled)=\"tree.onToggled($event)\"\n class=\"overflow-hidden\"\n ></tui-tree>\n</ng-container>\n\n<ng-template #content let-item>\n <tui-loader *ngIf=\"item === loading; else text\" class=\"w-8 my-4\"></tui-loader>\n <ng-template #text>\n <tui-svg [src]=\"item.icon\" class=\"tui-space_right-2\"></tui-svg>\n <a tuiLink [pseudo]=\"true\" *ngIf=\"item.link\" href=\"{{ item.link }}\" class=\"grow\">{{ item.text }}</a>\n <p *ngIf=\"!item.link\" class=\"grow\">{{ item.text }}</p>\n <p>{{ item.createdAt }}</p>\n </ng-template>\n</ng-template>\n\n<ng-template #skeleton>\n <div class=\"flex flex-col gap-2\">\n <div *ngFor=\"let _ of [].constructor(7)\" class=\"flex items-center gap-2\">\n <div class=\"tui-skeleton h-6 w-6\"></div>\n <div class=\"tui-skeleton h-4 w-40\"></div>\n </div>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type:
|
3211
|
+
useClass: TreeLoaderService
|
3212
|
+
}
|
3213
|
+
], ngImport: i0, template: "<ng-container *ngIf=\"data$ | async as data; else skeleton\">\n <tui-tree\n *ngFor=\"let node of data\"\n #tree=\"scTree\"\n scTree\n [scTopNodeText]=\"node.text\"\n [scTopNodeIcon]=\"node.icon\"\n [scTopNodeLink]=\"node.link\"\n [scTopNodeChilds]=\"node.hasChildren\"\n [scTopNodeParent]=\"node.id\"\n [scTopNodeDate]=\"node.createdAt\"\n [childrenHandler]=\"tree.childrenHandler\"\n [content]=\"content\"\n [map]=\"tree.map\"\n [tuiTreeController]=\"false\"\n [value]=\"tree.service.data$ | async\"\n (toggled)=\"tree.onToggled($event)\"\n class=\"overflow-hidden\"\n ></tui-tree>\n</ng-container>\n\n<ng-template #content let-item>\n <tui-loader *ngIf=\"item === loading; else text\" class=\"w-8 my-4\"></tui-loader>\n <ng-template #text>\n <tui-svg [src]=\"item.icon\" class=\"tui-space_right-2\"></tui-svg>\n <a tuiLink [pseudo]=\"true\" *ngIf=\"item.link\" href=\"{{ item.link }}\" class=\"grow\">{{ item.text }}</a>\n <p *ngIf=\"!item.link\" class=\"grow\">{{ item.text }}</p>\n <p>{{ item.createdAt }}</p>\n </ng-template>\n</ng-template>\n\n<ng-template #skeleton>\n <div class=\"flex flex-col gap-2\">\n <div *ngFor=\"let _ of [].constructor(7)\" class=\"flex items-center gap-2\">\n <div class=\"tui-skeleton h-6 w-6\"></div>\n <div class=\"tui-skeleton h-4 w-40\"></div>\n </div>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.TuiTreeComponent, selector: "tui-tree[value]", inputs: ["value", "trackBy", "content"] }, { kind: "directive", type: i6.TuiTreeChildrenDirective, selector: "tui-tree[childrenHandler]", inputs: ["childrenHandler"] }, { kind: "directive", type: i6.TuiTreeControllerDirective, selector: "[tuiTreeController][map]", inputs: ["tuiTreeController", "map"], outputs: ["toggled"], exportAs: ["tuiTreeController"] }, { kind: "component", type: i4.TuiSvgComponent, selector: "tui-svg", inputs: ["src"] }, { kind: "component", type: i4.TuiLoaderComponent, selector: "tui-loader", inputs: ["size", "inheritColor", "overlay", "textContent", "showLoader"] }, { kind: "component", type: i4.TuiLinkComponent, selector: "a[tuiLink], button[tuiLink]", inputs: ["pseudo", "icon", "iconAlign", "iconRotated", "mode"], exportAs: ["tuiLink"] }, { kind: "directive", type: TreeDirective, selector: "[scTree]", exportAs: ["scTree"] }, { kind: "directive", type: TreeTopDirective, selector: "[scTopNodeText]", inputs: ["scTopNodeText", "scTopNodeIcon", "scTopNodeLink", "scTopNodeChilds", "scTopNodeParent", "scTopNodeDate"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
2682
3214
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FilesAndDocumentsComponent, decorators: [{
|
2683
3215
|
type: Component,
|
2684
3216
|
args: [{ selector: 'sc-files-and-documents', changeDetection: ChangeDetectionStrategy.OnPush, providers: [
|
2685
3217
|
{
|
2686
3218
|
provide: TUI_TREE_LOADER,
|
2687
|
-
useClass: TreeLoaderService
|
2688
|
-
}
|
3219
|
+
useClass: TreeLoaderService
|
3220
|
+
}
|
2689
3221
|
], template: "<ng-container *ngIf=\"data$ | async as data; else skeleton\">\n <tui-tree\n *ngFor=\"let node of data\"\n #tree=\"scTree\"\n scTree\n [scTopNodeText]=\"node.text\"\n [scTopNodeIcon]=\"node.icon\"\n [scTopNodeLink]=\"node.link\"\n [scTopNodeChilds]=\"node.hasChildren\"\n [scTopNodeParent]=\"node.id\"\n [scTopNodeDate]=\"node.createdAt\"\n [childrenHandler]=\"tree.childrenHandler\"\n [content]=\"content\"\n [map]=\"tree.map\"\n [tuiTreeController]=\"false\"\n [value]=\"tree.service.data$ | async\"\n (toggled)=\"tree.onToggled($event)\"\n class=\"overflow-hidden\"\n ></tui-tree>\n</ng-container>\n\n<ng-template #content let-item>\n <tui-loader *ngIf=\"item === loading; else text\" class=\"w-8 my-4\"></tui-loader>\n <ng-template #text>\n <tui-svg [src]=\"item.icon\" class=\"tui-space_right-2\"></tui-svg>\n <a tuiLink [pseudo]=\"true\" *ngIf=\"item.link\" href=\"{{ item.link }}\" class=\"grow\">{{ item.text }}</a>\n <p *ngIf=\"!item.link\" class=\"grow\">{{ item.text }}</p>\n <p>{{ item.createdAt }}</p>\n </ng-template>\n</ng-template>\n\n<ng-template #skeleton>\n <div class=\"flex flex-col gap-2\">\n <div *ngFor=\"let _ of [].constructor(7)\" class=\"flex items-center gap-2\">\n <div class=\"tui-skeleton h-6 w-6\"></div>\n <div class=\"tui-skeleton h-4 w-40\"></div>\n </div>\n </div>\n</ng-template>\n" }]
|
2690
3222
|
}], ctorParameters: function () {
|
2691
3223
|
return [{ type: undefined, decorators: [{
|
@@ -2707,7 +3239,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
2707
3239
|
args: [{
|
2708
3240
|
imports: [CommonModule, TuiTreeModule, TuiSvgModule, TuiLoaderModule, TuiLinkModule],
|
2709
3241
|
declarations: [FilesAndDocumentsComponent, TreeDirective, TreeTopDirective, FileTreeItemComponent],
|
2710
|
-
exports: [FilesAndDocumentsComponent]
|
3242
|
+
exports: [FilesAndDocumentsComponent]
|
2711
3243
|
}]
|
2712
3244
|
}] });
|
2713
3245
|
|
@@ -2799,7 +3331,7 @@ const scClientUiIconsName = [
|
|
2799
3331
|
'scIconArrowLargeEnd',
|
2800
3332
|
'scIconArrowForward',
|
2801
3333
|
'scIconApplication',
|
2802
|
-
'scIconAddProfile'
|
3334
|
+
'scIconAddProfile'
|
2803
3335
|
];
|
2804
3336
|
|
2805
3337
|
/**
|
@@ -2895,7 +3427,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
2895
3427
|
args: [{
|
2896
3428
|
declarations: [ScShareButtonComponent],
|
2897
3429
|
imports: [CommonModule, TuiButtonModule],
|
2898
|
-
exports: [ScShareButtonComponent]
|
3430
|
+
exports: [ScShareButtonComponent]
|
2899
3431
|
}]
|
2900
3432
|
}] });
|
2901
3433
|
|
@@ -2912,7 +3444,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
2912
3444
|
args: [{
|
2913
3445
|
declarations: [ScNewsCardComponent, ScNewsCardSkeletonComponent],
|
2914
3446
|
imports: [CommonModule, RouterModule, ScShareButtonModule],
|
2915
|
-
exports: [ScNewsCardComponent, ScNewsCardSkeletonComponent]
|
3447
|
+
exports: [ScNewsCardComponent, ScNewsCardSkeletonComponent]
|
2916
3448
|
}]
|
2917
3449
|
}] });
|
2918
3450
|
|
@@ -2990,327 +3522,128 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
2990
3522
|
type: Output
|
2991
3523
|
}] } });
|
2992
3524
|
|
2993
|
-
/**
|
2994
|
-
*
|
2995
|
-
*/
|
2996
|
-
class
|
2997
|
-
|
2998
|
-
|
2999
|
-
|
3000
|
-
|
3001
|
-
|
3002
|
-
|
3003
|
-
|
3004
|
-
|
3005
|
-
|
3006
|
-
imports: [CommonModule, TuiLinkModule, TuiButtonModule, TuiModeModule, TuiSvgModule, ScCatalogModule],
|
3007
|
-
}]
|
3008
|
-
}] });
|
3009
|
-
|
3010
|
-
/**
|
3011
|
-
* Токен потока данных о текущем пользователе.
|
3012
|
-
*/
|
3013
|
-
const SC_USER_INFO = new InjectionToken('A stream with current user information');
|
3014
|
-
/**
|
3015
|
-
* Фабрика создания потока данных о текущем пользователе.
|
3016
|
-
*
|
3017
|
-
* @param userService Сервис информации о пользователе.
|
3018
|
-
* @param destroy$ Сервис завершения {@link Observable} через `takeUntil`.
|
3019
|
-
*/
|
3020
|
-
function scUserFactory(userService, destroy$) {
|
3021
|
-
//TODO: TASK[#7615] Отслеживать выполнение запроса изменения информации о пользователе после доработки snabcentr-core-lib.
|
3022
|
-
return userService.getUserChange$().pipe(takeUntil(destroy$));
|
3023
|
-
}
|
3024
|
-
/**
|
3025
|
-
* Провайдер потока данных о текущем пользователе.
|
3026
|
-
*/
|
3027
|
-
const SC_USER_PROVIDERS = [
|
3028
|
-
TuiDestroyService,
|
3029
|
-
{
|
3030
|
-
provide: SC_USER_INFO,
|
3031
|
-
deps: [ScUserService, TuiDestroyService],
|
3032
|
-
useFactory: scUserFactory,
|
3033
|
-
},
|
3034
|
-
];
|
3035
|
-
|
3036
|
-
/**
|
3037
|
-
* Проверяет повторный ввод пароля на эквивалентность паролю.
|
3038
|
-
*
|
3039
|
-
* @param passwordKey Ключ поля ввода пароля.
|
3040
|
-
*/
|
3041
|
-
function scPasswordConfirmMatchingValidator(passwordKey) {
|
3042
|
-
return ({ value, parent }) => {
|
3043
|
-
if (!parent || !value) {
|
3044
|
-
return null;
|
3045
|
-
}
|
3046
|
-
const passwordInput = parent.get(passwordKey);
|
3047
|
-
if (passwordInput && passwordInput.value) {
|
3048
|
-
return value !== passwordInput.value ? { passwordNotEquivalent: true } : null;
|
3049
|
-
}
|
3050
|
-
return null;
|
3051
|
-
};
|
3052
|
-
}
|
3053
|
-
|
3054
|
-
/**
|
3055
|
-
* Компонент смены пароля пользователя.
|
3056
|
-
*/
|
3057
|
-
class ScResetUserPasswordComponent {
|
3058
|
-
/**
|
3059
|
-
* Инициализирует экземпляр класса {@link ScResetUserPasswordComponent}.
|
3060
|
-
*
|
3061
|
-
* @param userService Сервис информации о пользователе.
|
3062
|
-
*/
|
3063
|
-
constructor(userService) {
|
3064
|
-
this.userService = userService;
|
3065
|
-
/**
|
3066
|
-
* Форма для изменения пароля пользователя.
|
3067
|
-
*/
|
3068
|
-
this.form = new FormGroup({
|
3069
|
-
currentPassword: new FormControl(null, Validators.required),
|
3070
|
-
newPassword: new FormControl(null, [Validators.required, Validators.minLength(8)]),
|
3071
|
-
newPasswordConfirm: new FormControl(null, [Validators.required, Validators.minLength(8), scPasswordConfirmMatchingValidator('newPassword')]),
|
3072
|
-
});
|
3073
|
-
/**
|
3074
|
-
* {@link Subject} события отправки формы.
|
3075
|
-
*/
|
3076
|
-
this.onSubmit = new Subject();
|
3077
|
-
/**
|
3078
|
-
* {@link Observable} запроса данных аутентификации.
|
3079
|
-
*/
|
3080
|
-
this.request$ = this.onSubmit.pipe(filter(() => this.form.valid), map(() => this.form.value), switchMap((value) => this.userService.updateUserInfo$(value).pipe(catchError((error) => {
|
3081
|
-
var _a;
|
3082
|
-
const errorResponse = error.error;
|
3083
|
-
for (const key in errorResponse.errors) {
|
3084
|
-
(_a = this.form.get(key)) === null || _a === void 0 ? void 0 : _a.setErrors({ serverResponse: errorResponse.errors[`${key}`] });
|
3085
|
-
}
|
3086
|
-
if (!errorResponse.errors && errorResponse.message) {
|
3087
|
-
this.form.setErrors({ serverResponse: [errorResponse.message] });
|
3088
|
-
}
|
3089
|
-
return of(void {});
|
3090
|
-
}), startWith(null))), share());
|
3091
|
-
/**
|
3092
|
-
* {@link Observable} изменения состояния загрузки данных аутентификации по email.
|
3093
|
-
*/
|
3094
|
-
this.loading$ = this.request$.pipe(map(tuiIsFalsy));
|
3095
|
-
}
|
3096
|
-
}
|
3097
|
-
ScResetUserPasswordComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScResetUserPasswordComponent, deps: [{ token: i1.ScUserService }], target: i0.ɵɵFactoryTarget.Component });
|
3098
|
-
ScResetUserPasswordComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ScResetUserPasswordComponent, selector: "sc-reset-user-password", ngImport: i0, template: "<form [formGroup]=\"form\" (ngSubmit)=\"onSubmit.next()\" class=\"flex flex-col md:flex-row gap-4 p-1\">\n <div class=\"flex flex-col items-start gap-2 md:flex-row md:gap-4 md:flex-grow justify-between\">\n <label tuiLabel=\"\u0421\u0442\u0430\u0440\u044B\u0439 \u043F\u0430\u0440\u043E\u043B\u044C\" class=\"flex w-full\">\n <tui-input-password formControlName=\"currentPassword\">\n \u0421\u0442\u0430\u0440\u044B\u0439 \u043F\u0430\u0440\u043E\u043B\u044C\n <input tuiTextfield autocomplete=\"current-password\" />\n </tui-input-password>\n <tui-error formControlName=\"currentPassword\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <label tuiLabel=\"\u041F\u0440\u0438\u0434\u0443\u043C\u0430\u0439\u0442\u0435 \u043D\u043E\u0432\u044B\u0439 \u043F\u0430\u0440\u043E\u043B\u044C\" class=\"flex w-full\">\n <tui-input-password formControlName=\"newPassword\">\n \u041F\u0440\u0438\u0434\u0443\u043C\u0430\u0439\u0442\u0435 \u043D\u043E\u0432\u044B\u0439 \u043F\u0430\u0440\u043E\u043B\u044C\n <input tuiTextfield autocomplete=\"new-password\" />\n </tui-input-password>\n <tui-error formControlName=\"newPassword\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <label tuiLabel=\"\u041F\u043E\u0432\u0442\u043E\u0440\u0438\u0442\u0435 \u043D\u043E\u0432\u044B\u0439 \u043F\u0430\u0440\u043E\u043B\u044C\" class=\"flex w-full\">\n <tui-input-password formControlName=\"newPasswordConfirm\">\n \u041F\u043E\u0432\u0442\u043E\u0440\u0438\u0442\u0435 \u043D\u043E\u0432\u044B\u0439 \u043F\u0430\u0440\u043E\u043B\u044C\n <input tuiTextfield autocomplete=\"new-password\" />\n </tui-input-password>\n <tui-error formControlName=\"newPasswordConfirm\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n </div>\n <button\n *tuiLet=\"!!(loading$ | async) as loading\"\n tuiButton\n [showLoader]=\"loading\"\n type=\"submit\"\n [disabled]=\"form.invalid || loading\"\n icon=\"scIconSave\"\n class=\"md:mt-6 font-medium\"\n >\n \u0421\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C\n </button>\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: i3$1.TuiInputPasswordComponent, selector: "tui-input-password" }, { kind: "directive", type: i3$1.TuiInputPasswordDirective, selector: "tui-input-password" }, { kind: "component", type: i4.TuiTextfieldComponent, selector: "input[tuiTextfield], textarea[tuiTextfield]" }, { 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.TuiErrorComponent, selector: "tui-error", inputs: ["error"] }, { kind: "component", type: i4.TuiLabelComponent, selector: "label[tuiLabel]", inputs: ["tuiLabel", "context"] }, { kind: "directive", type: i5.TuiLetDirective, selector: "[tuiLet]", inputs: ["tuiLet"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i3$1.TuiFieldErrorPipe, name: "tuiFieldError" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
3099
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScResetUserPasswordComponent, decorators: [{
|
3100
|
-
type: Component,
|
3101
|
-
args: [{ selector: 'sc-reset-user-password', changeDetection: ChangeDetectionStrategy.OnPush, template: "<form [formGroup]=\"form\" (ngSubmit)=\"onSubmit.next()\" class=\"flex flex-col md:flex-row gap-4 p-1\">\n <div class=\"flex flex-col items-start gap-2 md:flex-row md:gap-4 md:flex-grow justify-between\">\n <label tuiLabel=\"\u0421\u0442\u0430\u0440\u044B\u0439 \u043F\u0430\u0440\u043E\u043B\u044C\" class=\"flex w-full\">\n <tui-input-password formControlName=\"currentPassword\">\n \u0421\u0442\u0430\u0440\u044B\u0439 \u043F\u0430\u0440\u043E\u043B\u044C\n <input tuiTextfield autocomplete=\"current-password\" />\n </tui-input-password>\n <tui-error formControlName=\"currentPassword\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <label tuiLabel=\"\u041F\u0440\u0438\u0434\u0443\u043C\u0430\u0439\u0442\u0435 \u043D\u043E\u0432\u044B\u0439 \u043F\u0430\u0440\u043E\u043B\u044C\" class=\"flex w-full\">\n <tui-input-password formControlName=\"newPassword\">\n \u041F\u0440\u0438\u0434\u0443\u043C\u0430\u0439\u0442\u0435 \u043D\u043E\u0432\u044B\u0439 \u043F\u0430\u0440\u043E\u043B\u044C\n <input tuiTextfield autocomplete=\"new-password\" />\n </tui-input-password>\n <tui-error formControlName=\"newPassword\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <label tuiLabel=\"\u041F\u043E\u0432\u0442\u043E\u0440\u0438\u0442\u0435 \u043D\u043E\u0432\u044B\u0439 \u043F\u0430\u0440\u043E\u043B\u044C\" class=\"flex w-full\">\n <tui-input-password formControlName=\"newPasswordConfirm\">\n \u041F\u043E\u0432\u0442\u043E\u0440\u0438\u0442\u0435 \u043D\u043E\u0432\u044B\u0439 \u043F\u0430\u0440\u043E\u043B\u044C\n <input tuiTextfield autocomplete=\"new-password\" />\n </tui-input-password>\n <tui-error formControlName=\"newPasswordConfirm\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n </div>\n <button\n *tuiLet=\"!!(loading$ | async) as loading\"\n tuiButton\n [showLoader]=\"loading\"\n type=\"submit\"\n [disabled]=\"form.invalid || loading\"\n icon=\"scIconSave\"\n class=\"md:mt-6 font-medium\"\n >\n \u0421\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C\n </button>\n</form>\n" }]
|
3102
|
-
}], ctorParameters: function () { return [{ type: i1.ScUserService }]; } });
|
3103
|
-
|
3104
|
-
/**
|
3105
|
-
* Компонент поля ввода страны/региона/города.
|
3106
|
-
*/
|
3107
|
-
let ScAddressesSelectionFieldComponent = class ScAddressesSelectionFieldComponent {
|
3108
|
-
/**
|
3109
|
-
* Инициализирует экземпляр класса {@link BankSuggestionFieldsComponent}.
|
3110
|
-
*
|
3111
|
-
* @param formGroupDirective Директива c `FormGroup` из DOM.
|
3112
|
-
* @param locationsService Сервис для получения списков стран, регионов, городов.
|
3113
|
-
*/
|
3114
|
-
constructor(formGroupDirective, locationsService) {
|
3115
|
-
this.formGroupDirective = formGroupDirective;
|
3116
|
-
this.locationsService = locationsService;
|
3117
|
-
/**
|
3118
|
-
* FormControl для поля страны.
|
3119
|
-
*/
|
3120
|
-
this.countryControl = new FormControl({
|
3121
|
-
id: 3159,
|
3122
|
-
name: 'Россия',
|
3123
|
-
}, Validators.required);
|
3124
|
-
/**
|
3125
|
-
* FormControl для поля региона.
|
3126
|
-
*/
|
3127
|
-
this.regionControl = new FormControl(null, Validators.required);
|
3128
|
-
/**
|
3129
|
-
* FormControl для поля города.
|
3130
|
-
*/
|
3131
|
-
this.cityControl = new FormControl(null, Validators.required);
|
3132
|
-
/**
|
3133
|
-
* {@link Observable} изменения списка стран.
|
3134
|
-
*/
|
3135
|
-
this.countries$ = this.locationsService.getCountries$().pipe(share(), startWith(null));
|
3136
|
-
/**
|
3137
|
-
* {@link Observable} изменения списка регионов.
|
3138
|
-
*/
|
3139
|
-
this.regions$ = tuiControlValue(this.countryControl).pipe(filter(tuiIsPresent), switchMap((country) => this.locationsService.getRegions$(country.id).pipe(startWith(null))));
|
3140
|
-
/**
|
3141
|
-
* {@link Observable} изменения списка городов.
|
3142
|
-
*/
|
3143
|
-
this.cities$ = combineLatest({
|
3144
|
-
country: tuiControlValue(this.countryControl).pipe(tap((country) => (country ? this.regionControl.enable() : this.regionControl.disable())), tap(() => {
|
3145
|
-
this.regionControl.reset(null);
|
3146
|
-
this.cityControl.reset(null);
|
3147
|
-
this.cityControl.disable();
|
3148
|
-
})),
|
3149
|
-
region: tuiControlValue(this.regionControl).pipe(tap(() => {
|
3150
|
-
this.cityControl.reset(null);
|
3151
|
-
this.cityIdControl.reset(null);
|
3152
|
-
}), tap((region) => (region ? this.cityControl.enable() : this.cityControl.disable()))),
|
3153
|
-
}).pipe(debounceTime(0), switchMap(({ country, region }) => country && region ? this.locationsService.getCities$(country.id, region.id).pipe(startWith(null)) : of([])), share());
|
3154
|
-
/**
|
3155
|
-
* Функция преобразования объекта сортировки в значение, отображаемое в поле ввода.
|
3156
|
-
*
|
3157
|
-
* @param item Выбранный объект выпадающего списка.
|
3158
|
-
*/
|
3159
|
-
this.stringify = (item) => `${item.name}`;
|
3160
|
-
}
|
3161
|
-
/**
|
3162
|
-
* `FormControl` поля идентификатора города.
|
3163
|
-
*/
|
3164
|
-
get cityIdControl() {
|
3165
|
-
return this.formGroupDirective.form.get('cityId');
|
3166
|
-
}
|
3167
|
-
/** @inheritDoc */
|
3168
|
-
ngOnInit() {
|
3169
|
-
var _a;
|
3170
|
-
if (this.cityIdControl && this.cityIdControl.valid) {
|
3171
|
-
this.locationsService
|
3172
|
-
.getUserCity$(Number((_a = this.cityIdControl) === null || _a === void 0 ? void 0 : _a.value))
|
3173
|
-
.pipe(filter((city) => { var _a, _b; return ((_b = (_a = city === null || city === void 0 ? void 0 : city.region) === null || _a === void 0 ? void 0 : _a.country) === null || _b === void 0 ? void 0 : _b.id) === 3159; }), untilDestroyed(this))
|
3174
|
-
.subscribe((city) => {
|
3175
|
-
var _a, _b, _c;
|
3176
|
-
this.countryControl.patchValue((_b = (_a = city === null || city === void 0 ? void 0 : city.region) === null || _a === void 0 ? void 0 : _a.country) !== null && _b !== void 0 ? _b : null);
|
3177
|
-
this.regionControl.patchValue((_c = city === null || city === void 0 ? void 0 : city.region) !== null && _c !== void 0 ? _c : null);
|
3178
|
-
this.cityControl.patchValue(city);
|
3179
|
-
});
|
3180
|
-
}
|
3181
|
-
}
|
3182
|
-
/**
|
3183
|
-
* Заполнение полей банковских реквизитов на основе выбранной подсказки.
|
3184
|
-
*
|
3185
|
-
* @param suggestion Объект подсказки по банку.
|
3186
|
-
*/
|
3187
|
-
onSelectedCity(city) {
|
3188
|
-
var _a;
|
3189
|
-
if (this.cityIdControl) {
|
3190
|
-
this.cityIdControl.setValue((_a = city === null || city === void 0 ? void 0 : city.id.toString()) !== null && _a !== void 0 ? _a : null);
|
3191
|
-
tuiMarkControlAsTouchedAndValidate(this.cityIdControl);
|
3192
|
-
}
|
3525
|
+
/**
|
3526
|
+
* Компонент статуса оплаты заказа.
|
3527
|
+
*/
|
3528
|
+
class ScPaymentStatusComponent {
|
3529
|
+
constructor() {
|
3530
|
+
/**
|
3531
|
+
* Событие нажатия на кнопку "Вернуться к списку заказов".
|
3532
|
+
*/
|
3533
|
+
this.backToOrdersClick = new EventEmitter();
|
3534
|
+
/**
|
3535
|
+
* Событие нажатия на кнопку "На главную".
|
3536
|
+
*/
|
3537
|
+
this.backToOrderClick = new EventEmitter();
|
3193
3538
|
}
|
3194
|
-
}
|
3195
|
-
|
3196
|
-
|
3197
|
-
|
3198
|
-
UntilDestroy({ checkProperties: true })
|
3199
|
-
], ScAddressesSelectionFieldComponent);
|
3200
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScAddressesSelectionFieldComponent, decorators: [{
|
3539
|
+
}
|
3540
|
+
ScPaymentStatusComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScPaymentStatusComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
3541
|
+
ScPaymentStatusComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ScPaymentStatusComponent, selector: "sc-payment-status", inputs: { status: "status", orderId: "orderId" }, outputs: { backToOrdersClick: "backToOrdersClick", backToOrderClick: "backToOrderClick" }, ngImport: i0, template: "<ng-container *ngIf=\"status && orderId; else failed\">\n <ng-container [ngSwitch]=\"status\">\n <tui-block-status *ngSwitchCase=\"'success'\">\n <tui-svg src=\"tuiIconCheckCircleLarge\" tuiSlot=\"top\" class=\"scale-[3] !h-20 !text-green-500\"></tui-svg>\n <h4>\u0421\u043F\u0430\u0441\u0438\u0431\u043E!</h4>\n <br />\n <div class=\"font-bold\">\u0412\u0430\u0448 \u0437\u0430\u043A\u0430\u0437 \u0443\u0441\u043F\u0435\u0448\u043D\u043E \u043E\u043F\u043B\u0430\u0447\u0435\u043D. \u041C\u044B \u0441\u0432\u044F\u0436\u0435\u043C\u0441\u044F \u0441 \u0432\u0430\u043C\u0438 \u0432 \u0431\u043B\u0438\u0436\u0430\u0439\u0448\u0435\u0435 \u0432\u0440\u0435\u043C\u044F.</div>\n <br />\n <div class=\"font-bold\">\n \u041D\u043E\u043C\u0435\u0440 \u0432\u0430\u0448\u0435\u0433\u043E \u0437\u0430\u043A\u0430\u0437\u0430: <a tuiLink [pseudo]=\"true\" (click)=\"backToOrderClick.emit()\">{{orderId}}</a>\n </div>\n\n <button tuiButton (click)=\"backToOrdersClick.emit()\">\u0412\u0435\u0440\u043D\u0443\u0442\u044C\u0441\u044F \u043A \u0437\u0430\u043A\u0430\u0437\u0430\u043C</button>\n </tui-block-status>\n <tui-block-status *ngSwitchCase=\"'error'\">\n <tui-svg src=\"tuiIconXCircleLarge\" class=\"scale-[3] !h-20 !text-red-500\" tuiSlot=\"top\"></tui-svg>\n <h4>\u041E\u043F\u043B\u0430\u0442\u0430 \u043D\u0435 \u043F\u0440\u043E\u0448\u043B\u0430!</h4>\n <br />\n <div class=\"font-bold\">\u041F\u0440\u0438 \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u043A\u0435 \u043F\u043B\u0430\u0442\u0435\u0436\u0430 \u043F\u0440\u043E\u0438\u0437\u043E\u0448\u043B\u0430 \u043E\u0448\u0438\u0431\u043A\u0430.</div>\n <button tuiButton tuiItem (click)=\"backToOrderClick.emit()\">\u0412\u0435\u0440\u043D\u0443\u0442\u044C\u0441\u044F \u043A \u0437\u0430\u043A\u0430\u0437\u0443</button>\n </tui-block-status>\n </ng-container>\n</ng-container>\n\n<ng-template #failed>\n <tui-block-status>\n <tui-svg src=\"tuiIconInfoLarge\" class=\"scale-[3] !h-20 !text-yellow-500\" tuiSlot=\"top\"></tui-svg>\n <h4>\u0427\u0442\u043E-\u0442\u043E \u043F\u043E\u0448\u043B\u043E \u043D\u0435 \u0442\u0430\u043A!</h4>\n <button tuiButton tuiItem (click)=\"backToOrdersClick.emit()\">\u0412\u0435\u0440\u043D\u0443\u0442\u044C\u0441\u044F \u043A \u0437\u0430\u043A\u0430\u0437\u0430\u043C</button>\n </tui-block-status>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: i4.TuiLinkComponent, selector: "a[tuiLink], button[tuiLink]", inputs: ["pseudo", "icon", "iconAlign", "iconRotated", "mode"], exportAs: ["tuiLink"] }, { kind: "component", type: i4.TuiButtonComponent, selector: "button[tuiButton], button[tuiIconButton], a[tuiButton], a[tuiIconButton]", inputs: ["appearance", "disabled", "icon", "iconRight", "shape", "showLoader", "size"] }, { kind: "component", type: i4.TuiSvgComponent, selector: "tui-svg", inputs: ["src"] }, { kind: "component", type: i3$1.TuiBlockStatusComponent, selector: "tui-block-status", inputs: ["card"] }, { kind: "directive", type: i3$1.TuiBlockStatusDirective, selector: "[tuiSlot]", inputs: ["tuiSlot"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
3542
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScPaymentStatusComponent, decorators: [{
|
3201
3543
|
type: Component,
|
3202
|
-
args: [{ selector: 'sc-
|
3203
|
-
}],
|
3204
|
-
|
3205
|
-
|
3206
|
-
|
3207
|
-
|
3208
|
-
|
3209
|
-
|
3210
|
-
|
3544
|
+
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" }]
|
3545
|
+
}], propDecorators: { status: [{
|
3546
|
+
type: Input
|
3547
|
+
}], orderId: [{
|
3548
|
+
type: Input
|
3549
|
+
}], backToOrdersClick: [{
|
3550
|
+
type: Output
|
3551
|
+
}], backToOrderClick: [{
|
3552
|
+
type: Output
|
3553
|
+
}] } });
|
3211
3554
|
|
3212
3555
|
/**
|
3213
|
-
*
|
3556
|
+
* Модуль заказов.
|
3214
3557
|
*/
|
3215
|
-
class
|
3558
|
+
class ScOrderModule {
|
3559
|
+
}
|
3560
|
+
ScOrderModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScOrderModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
3561
|
+
ScOrderModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: ScOrderModule, declarations: [ScOrderItemMobileComponent, ScPaymentStatusComponent], imports: [CommonModule, TuiLinkModule, TuiButtonModule, TuiModeModule, TuiSvgModule, TuiBlockStatusModule, ScCatalogModule], exports: [ScOrderItemMobileComponent, ScPaymentStatusComponent] });
|
3562
|
+
ScOrderModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScOrderModule, imports: [CommonModule, TuiLinkModule, TuiButtonModule, TuiModeModule, TuiSvgModule, TuiBlockStatusModule, ScCatalogModule] });
|
3563
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScOrderModule, decorators: [{
|
3564
|
+
type: NgModule,
|
3565
|
+
args: [{
|
3566
|
+
declarations: [ScOrderItemMobileComponent, ScPaymentStatusComponent],
|
3567
|
+
exports: [ScOrderItemMobileComponent, ScPaymentStatusComponent],
|
3568
|
+
imports: [CommonModule, TuiLinkModule, TuiButtonModule, TuiModeModule, TuiSvgModule, TuiBlockStatusModule, ScCatalogModule]
|
3569
|
+
}]
|
3570
|
+
}] });
|
3571
|
+
|
3572
|
+
/**
|
3573
|
+
* Токен потока данных о текущем пользователе.
|
3574
|
+
*/
|
3575
|
+
const SC_USER_INFO = new InjectionToken('A stream with current user information');
|
3576
|
+
/**
|
3577
|
+
* Фабрика создания потока данных о текущем пользователе.
|
3578
|
+
*
|
3579
|
+
* @param userService Сервис информации о пользователе.
|
3580
|
+
* @param destroy$ Сервис завершения {@link Observable} через `takeUntil`.
|
3581
|
+
*/
|
3582
|
+
function scUserFactory(userService, destroy$) {
|
3583
|
+
//TODO: TASK[#7615] Отслеживать выполнение запроса изменения информации о пользователе после доработки snabcentr-core-lib.
|
3584
|
+
return userService.getUserChange$().pipe(takeUntil(destroy$));
|
3585
|
+
}
|
3586
|
+
/**
|
3587
|
+
* Провайдер потока данных о текущем пользователе.
|
3588
|
+
*/
|
3589
|
+
const SC_USER_PROVIDERS = [
|
3590
|
+
TuiDestroyService,
|
3591
|
+
{
|
3592
|
+
provide: SC_USER_INFO,
|
3593
|
+
deps: [ScUserService, TuiDestroyService],
|
3594
|
+
useFactory: scUserFactory
|
3595
|
+
}
|
3596
|
+
];
|
3597
|
+
|
3598
|
+
/**
|
3599
|
+
* Компонент смены пароля пользователя.
|
3600
|
+
*/
|
3601
|
+
class ScResetUserPasswordComponent {
|
3216
3602
|
/**
|
3217
|
-
* Инициализирует экземпляр класса {@link
|
3603
|
+
* Инициализирует экземпляр класса {@link ScResetUserPasswordComponent}.
|
3218
3604
|
*
|
3219
|
-
* @param
|
3220
|
-
* @param suggestionService Сервис работы с API подсказок.
|
3605
|
+
* @param userService Сервис информации о пользователе.
|
3221
3606
|
*/
|
3222
|
-
constructor(
|
3223
|
-
this.
|
3224
|
-
this.suggestionService = suggestionService;
|
3607
|
+
constructor(userService) {
|
3608
|
+
this.userService = userService;
|
3225
3609
|
/**
|
3226
|
-
*
|
3610
|
+
* Форма для изменения пароля пользователя.
|
3227
3611
|
*/
|
3228
|
-
this.
|
3612
|
+
this.form = new FormGroup({
|
3613
|
+
currentPassword: new FormControl(null, Validators.required),
|
3614
|
+
newPassword: new FormControl(null, [Validators.required, Validators.minLength(8)]),
|
3615
|
+
newPasswordConfirm: new FormControl(null, [Validators.required, Validators.minLength(8)])
|
3616
|
+
}, { validators: scPasswordConfirmMatchingValidator('newPassword', 'newPasswordConfirm') });
|
3229
3617
|
/**
|
3230
|
-
*
|
3618
|
+
* {@link Subject} события отправки формы.
|
3231
3619
|
*/
|
3232
|
-
this.
|
3233
|
-
|
3234
|
-
|
3235
|
-
|
3236
|
-
|
3620
|
+
this.onSubmit = new Subject();
|
3621
|
+
/**
|
3622
|
+
* {@link Observable} запроса данных аутентификации.
|
3623
|
+
*/
|
3624
|
+
this.request$ = this.onSubmit.pipe(filter(() => this.form.valid), map(() => this.form.value), switchMap((value) => this.userService.updateUserInfo$(value).pipe(catchError((error) => {
|
3625
|
+
var _a;
|
3237
3626
|
const errorResponse = error.error;
|
3238
|
-
|
3239
|
-
|
3240
|
-
this.control.control.setErrors({
|
3241
|
-
serverResponse: [errorResponse.message || `Ошибка сервера: пожалуйста, перезагрузите страницу и/или выполните запрос позже.`],
|
3242
|
-
});
|
3627
|
+
for (const key in errorResponse.errors) {
|
3628
|
+
(_a = this.form.get(key)) === null || _a === void 0 ? void 0 : _a.setErrors({ serverResponse: errorResponse.errors[`${key}`] });
|
3243
3629
|
}
|
3244
|
-
|
3245
|
-
|
3246
|
-
|
3247
|
-
|
3248
|
-
|
3249
|
-
|
3250
|
-
|
3251
|
-
|
3252
|
-
|
3253
|
-
*/
|
3254
|
-
onSelected(suggestion) {
|
3255
|
-
var _a, _b, _c, _d, _e, _f, _g;
|
3256
|
-
switch (this.type) {
|
3257
|
-
case ScISuggestionType.fio:
|
3258
|
-
if ('fio' in suggestion) {
|
3259
|
-
(_a = this.control.control) === null || _a === void 0 ? void 0 : _a.patchValue(suggestion.fio);
|
3260
|
-
}
|
3261
|
-
break;
|
3262
|
-
case ScISuggestionType.address:
|
3263
|
-
if ('addressString' in suggestion) {
|
3264
|
-
(_b = this.control.control) === null || _b === void 0 ? void 0 : _b.patchValue(suggestion.addressString, { emitEvent: false });
|
3265
|
-
}
|
3266
|
-
break;
|
3267
|
-
case ScISuggestionType.bank:
|
3268
|
-
if ('inn' in suggestion && 'bic' in suggestion) {
|
3269
|
-
(_d = (_c = this.control.control) === null || _c === void 0 ? void 0 : _c.parent) === null || _d === void 0 ? void 0 : _d.patchValue({
|
3270
|
-
bankName: suggestion.name,
|
3271
|
-
bic: suggestion.bic,
|
3272
|
-
correspondentAccount: suggestion.correspondentAccount,
|
3273
|
-
}, { emitEvent: false });
|
3274
|
-
}
|
3275
|
-
break;
|
3276
|
-
case ScISuggestionType.organization:
|
3277
|
-
if ('inn' in suggestion && !('bic' in suggestion)) {
|
3278
|
-
(_f = (_e = this.control.control) === null || _e === void 0 ? void 0 : _e.parent) === null || _f === void 0 ? void 0 : _f.patchValue({
|
3279
|
-
name: suggestion.name,
|
3280
|
-
inn: suggestion.inn,
|
3281
|
-
kpp: suggestion.kpp,
|
3282
|
-
okpo: suggestion.okpo,
|
3283
|
-
directorName: suggestion.directorName,
|
3284
|
-
directorPosition: suggestion.directorPosition,
|
3285
|
-
legalAddress: suggestion.legalAddress,
|
3286
|
-
postalAddress: suggestion.postalAddress,
|
3287
|
-
actualAddress: suggestion.actualAddress,
|
3288
|
-
}, { emitEvent: false });
|
3289
|
-
}
|
3290
|
-
break;
|
3291
|
-
case ScISuggestionType.email:
|
3292
|
-
if ('email' in suggestion) {
|
3293
|
-
(_g = this.control.control) === null || _g === void 0 ? void 0 : _g.patchValue(suggestion.email, { emitEvent: false });
|
3294
|
-
}
|
3295
|
-
break;
|
3296
|
-
}
|
3630
|
+
if (!errorResponse.errors && errorResponse.message) {
|
3631
|
+
this.form.setErrors({ serverResponse: [errorResponse.message] });
|
3632
|
+
}
|
3633
|
+
return of(void {});
|
3634
|
+
}), startWith(null))), share());
|
3635
|
+
/**
|
3636
|
+
* {@link Observable} изменения состояния загрузки данных аутентификации по email.
|
3637
|
+
*/
|
3638
|
+
this.loading$ = this.request$.pipe(map(tuiIsFalsy));
|
3297
3639
|
}
|
3298
3640
|
}
|
3299
|
-
|
3300
|
-
|
3301
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type:
|
3641
|
+
ScResetUserPasswordComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScResetUserPasswordComponent, deps: [{ token: i1.ScUserService }], target: i0.ɵɵFactoryTarget.Component });
|
3642
|
+
ScResetUserPasswordComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ScResetUserPasswordComponent, selector: "sc-reset-user-password", ngImport: i0, template: "<form [formGroup]=\"form\" (ngSubmit)=\"onSubmit.next()\" class=\"flex flex-col lg:flex-row gap-4 p-1\">\n <div class=\"grid grid-rows-3 gap-2 lg:grid-cols-3 lg:grid-rows-1 lg:gap-4 lg:flex-grow\">\n <label tuiLabel=\"\u0421\u0442\u0430\u0440\u044B\u0439 \u043F\u0430\u0440\u043E\u043B\u044C\">\n <tui-input-password formControlName=\"currentPassword\">\n \u0421\u0442\u0430\u0440\u044B\u0439 \u043F\u0430\u0440\u043E\u043B\u044C\n <input tuiTextfield autocomplete=\"new-password\" />\n </tui-input-password>\n <tui-error formControlName=\"currentPassword\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <label tuiLabel=\"\u041F\u0440\u0438\u0434\u0443\u043C\u0430\u0439\u0442\u0435 \u043D\u043E\u0432\u044B\u0439 \u043F\u0430\u0440\u043E\u043B\u044C\">\n <tui-input-password [pseudoInvalid]=\"form.hasError('passwordNotEquivalent')\" formControlName=\"newPassword\">\n \u041F\u0440\u0438\u0434\u0443\u043C\u0430\u0439\u0442\u0435 \u043D\u043E\u0432\u044B\u0439 \u043F\u0430\u0440\u043E\u043B\u044C\n <input tuiTextfield autocomplete=\"new-password\" />\n </tui-input-password>\n <tui-error formControlName=\"newPassword\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <label tuiLabel=\"\u041F\u043E\u0432\u0442\u043E\u0440\u0438\u0442\u0435 \u043D\u043E\u0432\u044B\u0439 \u043F\u0430\u0440\u043E\u043B\u044C\">\n <tui-input-password [pseudoInvalid]=\"form.hasError('passwordNotEquivalent')\" formControlName=\"newPasswordConfirm\">\n \u041F\u043E\u0432\u0442\u043E\u0440\u0438\u0442\u0435 \u043D\u043E\u0432\u044B\u0439 \u043F\u0430\u0440\u043E\u043B\u044C\n <input tuiTextfield autocomplete=\"new-password\" />\n </tui-input-password>\n <tui-error formControlName=\"newPasswordConfirm\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <tui-error class=\"lg:!hidden\" [formGroup]=\"form\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </div>\n <button\n *tuiLet=\"!!(loading$ | async) as loading\"\n tuiButton\n [showLoader]=\"loading\"\n type=\"submit\"\n [disabled]=\"form.invalid || loading\"\n icon=\"scIconSave\"\n class=\"self-center lg:mt-6 font-medium\"\n >\n \u0421\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C\n </button>\n</form>\n<tui-error class=\"!hidden lg:!block\" [formGroup]=\"form\" [error]=\"[] | tuiFieldError | async\"></tui-error>\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: i6.TuiInputPasswordComponent, selector: "tui-input-password" }, { kind: "directive", type: i6.TuiInputPasswordDirective, selector: "tui-input-password" }, { kind: "component", type: i4.TuiTextfieldComponent, selector: "input[tuiTextfield], textarea[tuiTextfield]" }, { 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.TuiErrorComponent, selector: "tui-error", inputs: ["error"] }, { kind: "component", type: i4.TuiLabelComponent, selector: "label[tuiLabel]", inputs: ["tuiLabel", "context"] }, { kind: "directive", type: i5.TuiLetDirective, selector: "[tuiLet]", inputs: ["tuiLet"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i6.TuiFieldErrorPipe, name: "tuiFieldError" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
3643
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScResetUserPasswordComponent, decorators: [{
|
3302
3644
|
type: Component,
|
3303
|
-
args: [{ selector: 'sc-
|
3304
|
-
}], ctorParameters: function () {
|
3305
|
-
return [{ type: i3.NgControl, decorators: [{
|
3306
|
-
type: SkipSelf
|
3307
|
-
}, {
|
3308
|
-
type: Inject,
|
3309
|
-
args: [NgControl]
|
3310
|
-
}] }, { type: i1.ScSuggestionService }];
|
3311
|
-
}, propDecorators: { type: [{
|
3312
|
-
type: Input
|
3313
|
-
}] } });
|
3645
|
+
args: [{ selector: 'sc-reset-user-password', changeDetection: ChangeDetectionStrategy.OnPush, template: "<form [formGroup]=\"form\" (ngSubmit)=\"onSubmit.next()\" class=\"flex flex-col lg:flex-row gap-4 p-1\">\n <div class=\"grid grid-rows-3 gap-2 lg:grid-cols-3 lg:grid-rows-1 lg:gap-4 lg:flex-grow\">\n <label tuiLabel=\"\u0421\u0442\u0430\u0440\u044B\u0439 \u043F\u0430\u0440\u043E\u043B\u044C\">\n <tui-input-password formControlName=\"currentPassword\">\n \u0421\u0442\u0430\u0440\u044B\u0439 \u043F\u0430\u0440\u043E\u043B\u044C\n <input tuiTextfield autocomplete=\"new-password\" />\n </tui-input-password>\n <tui-error formControlName=\"currentPassword\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <label tuiLabel=\"\u041F\u0440\u0438\u0434\u0443\u043C\u0430\u0439\u0442\u0435 \u043D\u043E\u0432\u044B\u0439 \u043F\u0430\u0440\u043E\u043B\u044C\">\n <tui-input-password [pseudoInvalid]=\"form.hasError('passwordNotEquivalent')\" formControlName=\"newPassword\">\n \u041F\u0440\u0438\u0434\u0443\u043C\u0430\u0439\u0442\u0435 \u043D\u043E\u0432\u044B\u0439 \u043F\u0430\u0440\u043E\u043B\u044C\n <input tuiTextfield autocomplete=\"new-password\" />\n </tui-input-password>\n <tui-error formControlName=\"newPassword\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <label tuiLabel=\"\u041F\u043E\u0432\u0442\u043E\u0440\u0438\u0442\u0435 \u043D\u043E\u0432\u044B\u0439 \u043F\u0430\u0440\u043E\u043B\u044C\">\n <tui-input-password [pseudoInvalid]=\"form.hasError('passwordNotEquivalent')\" formControlName=\"newPasswordConfirm\">\n \u041F\u043E\u0432\u0442\u043E\u0440\u0438\u0442\u0435 \u043D\u043E\u0432\u044B\u0439 \u043F\u0430\u0440\u043E\u043B\u044C\n <input tuiTextfield autocomplete=\"new-password\" />\n </tui-input-password>\n <tui-error formControlName=\"newPasswordConfirm\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <tui-error class=\"lg:!hidden\" [formGroup]=\"form\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </div>\n <button\n *tuiLet=\"!!(loading$ | async) as loading\"\n tuiButton\n [showLoader]=\"loading\"\n type=\"submit\"\n [disabled]=\"form.invalid || loading\"\n icon=\"scIconSave\"\n class=\"self-center lg:mt-6 font-medium\"\n >\n \u0421\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C\n </button>\n</form>\n<tui-error class=\"!hidden lg:!block\" [formGroup]=\"form\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n" }]
|
3646
|
+
}], ctorParameters: function () { return [{ type: i1.ScUserService }]; } });
|
3314
3647
|
|
3315
3648
|
/**
|
3316
3649
|
* Диалоговое окно изменения данных пользователя.
|
@@ -3340,7 +3673,7 @@ class ScUpdateUserInfoDialogComponent {
|
|
3340
3673
|
phone: new FormControl(null, [Validators.required, Validators.minLength(12)]),
|
3341
3674
|
verificationCode: new FormControl(null, [Validators.required, Validators.minLength(6)]),
|
3342
3675
|
cityId: new FormControl(null, Validators.required),
|
3343
|
-
getNews: new FormControl(false)
|
3676
|
+
getNews: new FormControl(false)
|
3344
3677
|
});
|
3345
3678
|
/**
|
3346
3679
|
* Сигнал нажатия на кнопку "Отмена".
|
@@ -3377,12 +3710,12 @@ class ScUpdateUserInfoDialogComponent {
|
|
3377
3710
|
email: user.contacts.email.value,
|
3378
3711
|
phone: user.contacts.phone.value,
|
3379
3712
|
cityId: user.city,
|
3380
|
-
getNews: user.getNews
|
3713
|
+
getNews: user.getNews
|
3381
3714
|
}, { emitEvent: false }));
|
3382
3715
|
}
|
3383
3716
|
}
|
3384
3717
|
ScUpdateUserInfoDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScUpdateUserInfoDialogComponent, deps: [{ token: SC_USER_INFO }, { token: i1.ScUserService }, { token: POLYMORPHEUS_CONTEXT, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
3385
|
-
ScUpdateUserInfoDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ScUpdateUserInfoDialogComponent, selector: "sc-update-user-info-dialog", outputs: { cancelButtonClick: "cancelButtonClick", successUpdateDate: "successUpdateDate" }, providers: [SC_USER_PROVIDERS], ngImport: i0, template: "<form [formGroup]=\"form\" *ngIf=\"user$ | async as user\" (ngSubmit)=\"onSubmit.next()\" class=\"flex flex-col gap-4\">\n <label [tuiLabel]=\"user.isOrg ? '\u041D\u0430\u0437\u0432\u0430\u043D\u0438\u0435 \u043E\u0440\u0433\u0430\u043D\u0438\u0437\u0430\u0446\u0438\u0438 \u0438\u043B\u0438 \u0418\u041F' : '\u0424.\u0418.\u041E.'\">\n <tui-input formControlName=\"name\">\n {{ user.isOrg ? '\u041D\u0430\u0437\u0432\u0430\u043D\u0438\u0435 \u043E\u0440\u0433\u0430\u043D\u0438\u0437\u0430\u0446\u0438\u0438 \u0438\u043B\u0438 \u0418\u041F' : '\u0424.\u0418.\u041E.' }}\n <ng-container *ngIf=\"user.isOrg\">\n <sc-suggestion-field *tuiDataList [type]=\"suggestionType.organization\"></sc-suggestion-field>\n </ng-container>\n </tui-input>\n <tui-error formControlName=\"name\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <sc-verification-phone-check-form\n *tuiLet=\"user.contacts.phone.value === form.value.phone as phoneIsChange\"\n [showCodeFields]=\"!phoneIsChange\"\n [shouldBeBusy]=\"phoneIsChange\"\n class=\"w-full\"\n ></sc-verification-phone-check-form>\n <label tuiLabel=\"\u0410\u0434\u0440\u0435\u0441 \u044D\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u043D\u043E\u0439 \u043F\u043E\u0447\u0442\u044B\" class=\"w-full\">\n <tui-input formControlName=\"email\">\n \u0410\u0434\u0440\u0435\u0441 \u044D\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u043D\u043E\u0439 \u043F\u043E\u0447\u0442\u044B\n <sc-suggestion-field *tuiDataList [type]=\"suggestionType.email\"></sc-suggestion-field>\n </tui-input>\n <tui-error formControlName=\"email\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <sc-addresses-selection-field></sc-addresses-selection-field>\n <tui-checkbox-labeled formControlName=\"getNews\" class=\"w-full\"> \u042F \u0445\u043E\u0447\u0443 \u043F\u043E\u043B\u0443\u0447\u0430\u0442\u044C \u0440\u0430\u0441\u0441\u044B\u043B\u043A\u0443 \u0421\u043D\u0430\u0431\u0446\u0435\u043D\u0442\u0440 \u043E \u0441\u043A\u0438\u0434\u043A\u0430\u0445 \u0438 \u043D\u043E\u0432\u043E\u0441\u0442\u044F\u0445 \u043F\u043E \u044D\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u043D\u043E\u0439 \u043F\u043E\u0447\u0442\u0435. </tui-checkbox-labeled>\n <div class=\"flex gap-4 justify-center\">\n <button tuiButton (click)=\"context ? context.$implicit.complete() : cancelButtonClick.emit()\" type=\"button\" icon=\"tuiIconXLarge\" appearance=\"secondary\">\u041E\u0442\u043C\u0435\u043D\u0430</button>\n <button tuiButton tuiMode=\"onLight\" [disabled]=\"form.invalid\" [showLoader]=\"!!(loading$ | async)\" type=\"submit\" icon=\"scIconSave\">\u0421\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C</button>\n </div>\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.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.TuiButtonComponent, selector: "button[tuiButton], button[tuiIconButton], a[tuiButton], a[tuiIconButton]", inputs: ["appearance", "disabled", "icon", "iconRight", "shape", "showLoader", "size"] }, { kind: "component", type: i4.TuiErrorComponent, selector: "tui-error", inputs: ["error"] }, { kind: "component", type: i4.TuiLabelComponent, selector: "label[tuiLabel]", inputs: ["tuiLabel", "context"] }, { kind: "directive", type: i5.TuiLetDirective, selector: "[tuiLet]", inputs: ["tuiLet"] }, { kind: "component", type: ScVerificationPhoneCheckFormComponent, selector: "sc-verification-phone-check-form", inputs: ["showCodeFields", "readOnly", "shouldBeBusy", "shouldBeConfirmed", "haveCode"], outputs: ["haveCodeChange"] }, { kind: "component", type: ScAddressesSelectionFieldComponent, selector: "sc-addresses-selection-field" }, { kind: "component", type: ScSuggestionFieldComponent, selector: "sc-suggestion-field", inputs: ["type"] }, { kind: "component", type:
|
3718
|
+
ScUpdateUserInfoDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ScUpdateUserInfoDialogComponent, selector: "sc-update-user-info-dialog", outputs: { cancelButtonClick: "cancelButtonClick", successUpdateDate: "successUpdateDate" }, providers: [SC_USER_PROVIDERS], ngImport: i0, template: "<form [formGroup]=\"form\" *ngIf=\"user$ | async as user\" (ngSubmit)=\"onSubmit.next()\" class=\"flex flex-col gap-4\">\n <label [tuiLabel]=\"user.isOrg ? '\u041D\u0430\u0437\u0432\u0430\u043D\u0438\u0435 \u043E\u0440\u0433\u0430\u043D\u0438\u0437\u0430\u0446\u0438\u0438 \u0438\u043B\u0438 \u0418\u041F' : '\u0424.\u0418.\u041E.'\">\n <tui-input formControlName=\"name\">\n {{ user.isOrg ? '\u041D\u0430\u0437\u0432\u0430\u043D\u0438\u0435 \u043E\u0440\u0433\u0430\u043D\u0438\u0437\u0430\u0446\u0438\u0438 \u0438\u043B\u0438 \u0418\u041F' : '\u0424.\u0418.\u041E.' }}\n <ng-container *ngIf=\"user.isOrg\">\n <sc-suggestion-field *tuiDataList [type]=\"suggestionType.organization\"></sc-suggestion-field>\n </ng-container>\n </tui-input>\n <tui-error formControlName=\"name\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <sc-verification-phone-check-form\n *tuiLet=\"user.contacts.phone.value === form.value.phone as phoneIsChange\"\n [showCodeFields]=\"!phoneIsChange\"\n [shouldBeBusy]=\"phoneIsChange\"\n class=\"w-full\"\n ></sc-verification-phone-check-form>\n <label tuiLabel=\"\u0410\u0434\u0440\u0435\u0441 \u044D\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u043D\u043E\u0439 \u043F\u043E\u0447\u0442\u044B\" class=\"w-full\">\n <tui-input formControlName=\"email\">\n \u0410\u0434\u0440\u0435\u0441 \u044D\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u043D\u043E\u0439 \u043F\u043E\u0447\u0442\u044B\n <sc-suggestion-field *tuiDataList [type]=\"suggestionType.email\"></sc-suggestion-field>\n </tui-input>\n <tui-error formControlName=\"email\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <sc-addresses-selection-field></sc-addresses-selection-field>\n <tui-checkbox-labeled formControlName=\"getNews\" class=\"w-full\"> \u042F \u0445\u043E\u0447\u0443 \u043F\u043E\u043B\u0443\u0447\u0430\u0442\u044C \u0440\u0430\u0441\u0441\u044B\u043B\u043A\u0443 \u0421\u043D\u0430\u0431\u0446\u0435\u043D\u0442\u0440 \u043E \u0441\u043A\u0438\u0434\u043A\u0430\u0445 \u0438 \u043D\u043E\u0432\u043E\u0441\u0442\u044F\u0445 \u043F\u043E \u044D\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u043D\u043E\u0439 \u043F\u043E\u0447\u0442\u0435. </tui-checkbox-labeled>\n <div class=\"flex gap-4 justify-center\">\n <button tuiButton (click)=\"context ? context.$implicit.complete() : cancelButtonClick.emit()\" type=\"button\" icon=\"tuiIconXLarge\" appearance=\"secondary\">\u041E\u0442\u043C\u0435\u043D\u0430</button>\n <button tuiButton tuiMode=\"onLight\" [disabled]=\"form.invalid\" [showLoader]=\"!!(loading$ | async)\" type=\"submit\" icon=\"scIconSave\">\u0421\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C</button>\n </div>\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.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.TuiButtonComponent, selector: "button[tuiButton], button[tuiIconButton], a[tuiButton], a[tuiIconButton]", inputs: ["appearance", "disabled", "icon", "iconRight", "shape", "showLoader", "size"] }, { kind: "component", type: i4.TuiErrorComponent, selector: "tui-error", inputs: ["error"] }, { kind: "component", type: i4.TuiLabelComponent, selector: "label[tuiLabel]", inputs: ["tuiLabel", "context"] }, { kind: "directive", type: i5.TuiLetDirective, selector: "[tuiLet]", inputs: ["tuiLet"] }, { kind: "component", type: ScVerificationPhoneCheckFormComponent, selector: "sc-verification-phone-check-form", inputs: ["showCodeFields", "readOnly", "shouldBeBusy", "shouldBeConfirmed", "haveCode"], outputs: ["haveCodeChange"] }, { kind: "component", type: ScAddressesSelectionFieldComponent, selector: "sc-addresses-selection-field" }, { kind: "component", type: ScSuggestionFieldComponent, selector: "sc-suggestion-field", inputs: ["type"] }, { kind: "component", type: i6.TuiInputComponent, selector: "tui-input" }, { kind: "directive", type: i6.TuiInputDirective, selector: "tui-input" }, { kind: "component", type: i6.TuiCheckboxLabeledComponent, selector: "tui-checkbox-labeled", inputs: ["size"] }, { kind: "directive", type: i4.TuiDataListDirective, selector: "ng-template[tuiDataList]" }, { kind: "directive", type: i4.TuiModeDirective, selector: "[tuiMode]", inputs: ["tuiMode"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i6.TuiFieldErrorPipe, name: "tuiFieldError" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
3386
3719
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScUpdateUserInfoDialogComponent, decorators: [{
|
3387
3720
|
type: Component,
|
3388
3721
|
args: [{ selector: 'sc-update-user-info-dialog', providers: [SC_USER_PROVIDERS], changeDetection: ChangeDetectionStrategy.OnPush, template: "<form [formGroup]=\"form\" *ngIf=\"user$ | async as user\" (ngSubmit)=\"onSubmit.next()\" class=\"flex flex-col gap-4\">\n <label [tuiLabel]=\"user.isOrg ? '\u041D\u0430\u0437\u0432\u0430\u043D\u0438\u0435 \u043E\u0440\u0433\u0430\u043D\u0438\u0437\u0430\u0446\u0438\u0438 \u0438\u043B\u0438 \u0418\u041F' : '\u0424.\u0418.\u041E.'\">\n <tui-input formControlName=\"name\">\n {{ user.isOrg ? '\u041D\u0430\u0437\u0432\u0430\u043D\u0438\u0435 \u043E\u0440\u0433\u0430\u043D\u0438\u0437\u0430\u0446\u0438\u0438 \u0438\u043B\u0438 \u0418\u041F' : '\u0424.\u0418.\u041E.' }}\n <ng-container *ngIf=\"user.isOrg\">\n <sc-suggestion-field *tuiDataList [type]=\"suggestionType.organization\"></sc-suggestion-field>\n </ng-container>\n </tui-input>\n <tui-error formControlName=\"name\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <sc-verification-phone-check-form\n *tuiLet=\"user.contacts.phone.value === form.value.phone as phoneIsChange\"\n [showCodeFields]=\"!phoneIsChange\"\n [shouldBeBusy]=\"phoneIsChange\"\n class=\"w-full\"\n ></sc-verification-phone-check-form>\n <label tuiLabel=\"\u0410\u0434\u0440\u0435\u0441 \u044D\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u043D\u043E\u0439 \u043F\u043E\u0447\u0442\u044B\" class=\"w-full\">\n <tui-input formControlName=\"email\">\n \u0410\u0434\u0440\u0435\u0441 \u044D\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u043D\u043E\u0439 \u043F\u043E\u0447\u0442\u044B\n <sc-suggestion-field *tuiDataList [type]=\"suggestionType.email\"></sc-suggestion-field>\n </tui-input>\n <tui-error formControlName=\"email\" [error]=\"[] | tuiFieldError | async\"></tui-error>\n </label>\n <sc-addresses-selection-field></sc-addresses-selection-field>\n <tui-checkbox-labeled formControlName=\"getNews\" class=\"w-full\"> \u042F \u0445\u043E\u0447\u0443 \u043F\u043E\u043B\u0443\u0447\u0430\u0442\u044C \u0440\u0430\u0441\u0441\u044B\u043B\u043A\u0443 \u0421\u043D\u0430\u0431\u0446\u0435\u043D\u0442\u0440 \u043E \u0441\u043A\u0438\u0434\u043A\u0430\u0445 \u0438 \u043D\u043E\u0432\u043E\u0441\u0442\u044F\u0445 \u043F\u043E \u044D\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u043D\u043E\u0439 \u043F\u043E\u0447\u0442\u0435. </tui-checkbox-labeled>\n <div class=\"flex gap-4 justify-center\">\n <button tuiButton (click)=\"context ? context.$implicit.complete() : cancelButtonClick.emit()\" type=\"button\" icon=\"tuiIconXLarge\" appearance=\"secondary\">\u041E\u0442\u043C\u0435\u043D\u0430</button>\n <button tuiButton tuiMode=\"onLight\" [disabled]=\"form.invalid\" [showLoader]=\"!!(loading$ | async)\" type=\"submit\" icon=\"scIconSave\">\u0421\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C</button>\n </div>\n</form>\n" }]
|
@@ -3428,7 +3761,7 @@ let ScUserPhoneApproveDialogComponent = class ScUserPhoneApproveDialogComponent
|
|
3428
3761
|
*/
|
3429
3762
|
this.form = new FormGroup({
|
3430
3763
|
phone: new FormControl(null, [Validators.required, Validators.minLength(12)]),
|
3431
|
-
verificationCode: new FormControl(null, [Validators.required, Validators.minLength(6)])
|
3764
|
+
verificationCode: new FormControl(null, [Validators.required, Validators.minLength(6)])
|
3432
3765
|
});
|
3433
3766
|
/**
|
3434
3767
|
* {@link Subject} события отправки формы.
|
@@ -3454,7 +3787,7 @@ let ScUserPhoneApproveDialogComponent = class ScUserPhoneApproveDialogComponent
|
|
3454
3787
|
this.loading$ = this.request$.pipe(map(tuiIsFalsy));
|
3455
3788
|
this.user$.pipe(untilDestroyed(this)).subscribe((user) => {
|
3456
3789
|
this.form.patchValue({
|
3457
|
-
phone: user.contacts.phone.value
|
3790
|
+
phone: user.contacts.phone.value
|
3458
3791
|
});
|
3459
3792
|
});
|
3460
3793
|
}
|
@@ -3479,76 +3812,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
3479
3812
|
}] }];
|
3480
3813
|
} });
|
3481
3814
|
|
3482
|
-
/**
|
3483
|
-
* Модуль полей ввода.
|
3484
|
-
*/
|
3485
|
-
class ScFormFieldsModule {
|
3486
|
-
}
|
3487
|
-
ScFormFieldsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScFormFieldsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
3488
|
-
ScFormFieldsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: ScFormFieldsModule, declarations: [ScAddressesSelectionFieldComponent, ScSuggestionFieldComponent], imports: [CommonModule,
|
3489
|
-
FormsModule,
|
3490
|
-
ReactiveFormsModule,
|
3491
|
-
TuiInputModule,
|
3492
|
-
TuiTextfieldControllerModule,
|
3493
|
-
TuiLabelModule,
|
3494
|
-
TuiLetModule,
|
3495
|
-
TuiFieldErrorPipeModule,
|
3496
|
-
TuiErrorModule,
|
3497
|
-
TuiDataListModule,
|
3498
|
-
TuiLoaderModule,
|
3499
|
-
TuiComboBoxModule,
|
3500
|
-
TuiDataListWrapperModule,
|
3501
|
-
TuiFilterByInputPipeModule,
|
3502
|
-
TuiStringifyContentPipeModule,
|
3503
|
-
TuiInputPhoneModule,
|
3504
|
-
TuiButtonModule,
|
3505
|
-
MaskitoModule], exports: [ScAddressesSelectionFieldComponent, ScSuggestionFieldComponent] });
|
3506
|
-
ScFormFieldsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScFormFieldsModule, imports: [CommonModule,
|
3507
|
-
FormsModule,
|
3508
|
-
ReactiveFormsModule,
|
3509
|
-
TuiInputModule,
|
3510
|
-
TuiTextfieldControllerModule,
|
3511
|
-
TuiLabelModule,
|
3512
|
-
TuiLetModule,
|
3513
|
-
TuiFieldErrorPipeModule,
|
3514
|
-
TuiErrorModule,
|
3515
|
-
TuiDataListModule,
|
3516
|
-
TuiLoaderModule,
|
3517
|
-
TuiComboBoxModule,
|
3518
|
-
TuiDataListWrapperModule,
|
3519
|
-
TuiFilterByInputPipeModule,
|
3520
|
-
TuiStringifyContentPipeModule,
|
3521
|
-
TuiInputPhoneModule,
|
3522
|
-
TuiButtonModule,
|
3523
|
-
MaskitoModule] });
|
3524
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScFormFieldsModule, decorators: [{
|
3525
|
-
type: NgModule,
|
3526
|
-
args: [{
|
3527
|
-
declarations: [ScAddressesSelectionFieldComponent, ScSuggestionFieldComponent],
|
3528
|
-
imports: [
|
3529
|
-
CommonModule,
|
3530
|
-
FormsModule,
|
3531
|
-
ReactiveFormsModule,
|
3532
|
-
TuiInputModule,
|
3533
|
-
TuiTextfieldControllerModule,
|
3534
|
-
TuiLabelModule,
|
3535
|
-
TuiLetModule,
|
3536
|
-
TuiFieldErrorPipeModule,
|
3537
|
-
TuiErrorModule,
|
3538
|
-
TuiDataListModule,
|
3539
|
-
TuiLoaderModule,
|
3540
|
-
TuiComboBoxModule,
|
3541
|
-
TuiDataListWrapperModule,
|
3542
|
-
TuiFilterByInputPipeModule,
|
3543
|
-
TuiStringifyContentPipeModule,
|
3544
|
-
TuiInputPhoneModule,
|
3545
|
-
TuiButtonModule,
|
3546
|
-
MaskitoModule,
|
3547
|
-
],
|
3548
|
-
exports: [ScAddressesSelectionFieldComponent, ScSuggestionFieldComponent],
|
3549
|
-
}]
|
3550
|
-
}] });
|
3551
|
-
|
3552
3815
|
/**
|
3553
3816
|
* Модуль компонентов пользователя.
|
3554
3817
|
*/
|
@@ -3619,9 +3882,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
3619
3882
|
TuiCheckboxLabeledModule,
|
3620
3883
|
TuiDataListModule,
|
3621
3884
|
TuiSelectModule,
|
3622
|
-
TuiModeModule
|
3885
|
+
TuiModeModule
|
3623
3886
|
],
|
3624
|
-
exports: [ScResetUserPasswordComponent, ScUpdateUserInfoDialogComponent, ScUserPhoneApproveDialogComponent]
|
3887
|
+
exports: [ScResetUserPasswordComponent, ScUpdateUserInfoDialogComponent, ScUserPhoneApproveDialogComponent]
|
3625
3888
|
}]
|
3626
3889
|
}] });
|
3627
3890
|
|
@@ -3682,6 +3945,10 @@ class ScProfileAccordionsContentComponent {
|
|
3682
3945
|
* Событие нажатия на кнопку добавления контрагента.
|
3683
3946
|
*/
|
3684
3947
|
this.addContragentClick = new EventEmitter();
|
3948
|
+
/**
|
3949
|
+
* Событие нажатия на кнопку добавления банковского счёта контрагенту.
|
3950
|
+
*/
|
3951
|
+
this.addContragentBankAccountsClick = new EventEmitter();
|
3685
3952
|
/**
|
3686
3953
|
* Событие нажатия на кнопку добавления адреса доставки клиента.
|
3687
3954
|
*/
|
@@ -3697,13 +3964,13 @@ class ScProfileAccordionsContentComponent {
|
|
3697
3964
|
}
|
3698
3965
|
}
|
3699
3966
|
ScProfileAccordionsContentComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScProfileAccordionsContentComponent, deps: [{ token: SC_USER_INFO }, { token: i1.ScLocationsService }, { token: i1.ScUserService }, { token: i1.ScVerificationService }], target: i0.ɵɵFactoryTarget.Component });
|
3700
|
-
ScProfileAccordionsContentComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ScProfileAccordionsContentComponent, selector: "sc-profile-accordions-content", outputs: { editProfileClick: "editProfileClick", approvePhoneClick: "approvePhoneClick", addContragentClick: "addContragentClick", addDeliveryAddressClick: "addDeliveryAddressClick" }, providers: [SC_USER_PROVIDERS], ngImport: i0, template: "<div class=\"flex flex-col gap-4\">\n <sc-accordion [showArrow]=\"false\" [showAddButton]=\"false\" [open]=\"true\">\n \u041E\u0431\u0449\u0438\u0435 \u0434\u0430\u043D\u043D\u044B\u0435\n <ng-template scAccordionContent>\n <tui-loader *tuiLet=\"user$ | async as user\" [overlay]=\"true\" [showLoader]=\"user === null\">\n <div class=\"flex gap-2 pl-4\">\n <div *ngIf=\"user\" class=\"flex flex-col flex-grow gap-2\">\n <span class=\"font-medium\">{{ user.name }}</span>\n <div *ngIf=\"user.city && (getUserCity$(user.city) | async) as city\" class=\"flex items-center gap-1\">\n <tui-svg src=\"tuiIconMapPin\"></tui-svg>\n <div class=\"flex flex-wrap\">\n <span>\u0433. {{ city.name }}, </span>\n <span *ngIf=\"city.region\">{{ city.region.name }}</span>\n </div>\n </div>\n <div class=\"flex flex-wrap gap-2\">\n <a\n tuiLink\n tuiMode=\"onLight\"\n icon=\"tuiIconPhone\"\n iconAlign=\"left\"\n [pseudo]=\"true\"\n href=\"tel:{{ user.contacts.phone.value}}\"\n >{{ user.contacts.phone.value | tuiFormatPhone }}</a\n >\n <span *ngIf=\"!user.contacts.phone.isApproved\" class=\"text-tui-text-03\">\n (\u0422\u0435\u043B\u0435\u0444\u043E\u043D \u043D\u0435 \u043F\u043E\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043D. <button tuiLink [pseudo]=\"true\" (click)=\"approvePhoneClick.emit()\">\u041F\u043E\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044C</button>)\n </span>\n </div>\n <div *tuiLet=\"!!(isSendApproveEmail$ | async) as isSendApproveEmail\" class=\"flex flex-wrap gap-x-2\">\n <a tuiLink tuiMode=\"onLight\" icon=\"tuiIconMail\" iconAlign=\"left\" [pseudo]=\"true\" href=\"mailto:{{ user.contacts.email.value }}\">\n {{ user.contacts.email.value }}\n </a>\n <span *ngIf=\"!isSendApproveEmail && !user.contacts.email.isApproved\" class=\"text-tui-text-03 inline-flex flex-wrap gap-1\">\n E-mail \u043D\u0435 \u043F\u043E\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043D.\n <tui-loader [showLoader]=\"!!(approveEmailLoading$ | async)\" [overlay]=\"true\">\n <button tuiLink [pseudo]=\"true\" (click)=\"onSendApproveEmail.next(user.contacts.email.value)\">\u041F\u043E\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044C</button>\n </tui-loader>\n </span>\n <span *ngIf=\"isSendApproveEmail\" class=\"text-tui-success-fill\" @tuiFadeIn>\n \u041F\u0438\u0441\u044C\u043C\u043E \u0434\u043B\u044F \u043F\u043E\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043D\u0438\u044F \u0443\u0441\u043F\u0435\u0448\u043D\u043E \u043E\u0442\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u043E. \u041F\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435 \u043F\u043E \u0441\u0441\u044B\u043B\u043A\u0435 \u0432 \u043F\u0438\u0441\u044C\u043C\u0435 \u0438 \u043E\u0431\u043D\u043E\u0432\u0438\u0442\u0435 \u044D\u0442\u0443 \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u0443.\n </span>\n </div>\n <tui-loader [showLoader]=\"!!(getNewsLoading$ | async)\" [overlay]=\"true\">\n <tui-checkbox-labeled size=\"m\" class=\"w-full\" [formControl]=\"getNewsControl\" [ngModel]=\"user.getNews\">\n \u042F \u0445\u043E\u0447\u0443 \u043F\u043E\u043B\u0443\u0447\u0430\u0442\u044C \u0440\u0430\u0441\u0441\u044B\u043B\u043A\u0443 \u0421\u043D\u0430\u0431\u0446\u0435\u043D\u0442\u0440 \u043E \u0441\u043A\u0438\u0434\u043A\u0430\u0445 \u0438 \u043D\u043E\u0432\u043E\u0441\u0442\u044F\u0445 \u043F\u043E \u044D\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u043D\u043E\u0439 \u043F\u043E\u0447\u0442\u0435.\n </tui-checkbox-labeled>\n </tui-loader>\n </div>\n\n <button tuiIconButton size=\"m\" type=\"button\" icon=\"tuiIconEdit3Large\" tuiMode=\"onLight\" appearance=\"flat\" (click)=\"editProfileClick.emit()\"></button>\n </div>\n </tui-loader>\n </ng-template>\n </sc-accordion>\n <sc-contragents-accordion (addContragentClick)=\"addContragentClick.emit()\"></sc-contragents-accordion>\n <sc-delivery-address-accordion (addDeliveryAddressClick)=\"addDeliveryAddressClick.emit()\"></sc-delivery-address-accordion>\n <sc-accordion [showArrow]=\"false\" [showAddButton]=\"false\">\n \u0418\u0437\u043C\u0435\u043D\u0438\u0442\u044C \u043F\u0430\u0440\u043E\u043B\u044C\n <ng-template scAccordionContent>\n <sc-reset-user-password></sc-reset-user-password>\n </ng-template>\n </sc-accordion>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ScResetUserPasswordComponent, selector: "sc-reset-user-password" }, { kind: "component", type: ScAccordionComponent, selector: "sc-accordion", inputs: ["showAddButton", "showDeleteButton", "showArrow", "open", "size"], outputs: ["addButtonClick", "deleteButtonClick"] }, { kind: "directive", type: ScAccordionContentDirective, selector: "ng-template[scAccordionContent]" }, { kind: "component", type: ScContragentsAccordionComponent, selector: "sc-contragents-accordion", outputs: ["addContragentClick", "editBankAccountsContragentClick", "addBankAccountsClick", "editContragentClick"] }, { kind: "component", type: ScDeliveryAddressAccordionComponent, selector: "sc-delivery-address-accordion", outputs: ["addDeliveryAddressClick"] }, { kind: "component", type: i4.TuiLoaderComponent, selector: "tui-loader", inputs: ["size", "inheritColor", "overlay", "textContent", "showLoader"] }, { kind: "directive", type: i5.TuiLetDirective, selector: "[tuiLet]", inputs: ["tuiLet"] }, { kind: "component", type: i4.TuiLinkComponent, selector: "a[tuiLink], button[tuiLink]", inputs: ["pseudo", "icon", "iconAlign", "iconRotated", "mode"], exportAs: ["tuiLink"] }, { kind: "directive", type: i4.TuiModeDirective, selector: "[tuiMode]", inputs: ["tuiMode"] }, { kind: "component", type:
|
3967
|
+
ScProfileAccordionsContentComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ScProfileAccordionsContentComponent, selector: "sc-profile-accordions-content", outputs: { editProfileClick: "editProfileClick", approvePhoneClick: "approvePhoneClick", addContragentClick: "addContragentClick", addContragentBankAccountsClick: "addContragentBankAccountsClick", addDeliveryAddressClick: "addDeliveryAddressClick" }, providers: [SC_USER_PROVIDERS], ngImport: i0, template: "<div class=\"flex flex-col gap-4\">\n <sc-accordion [showArrow]=\"false\" [showAddButton]=\"false\" [open]=\"true\">\n \u041E\u0431\u0449\u0438\u0435 \u0434\u0430\u043D\u043D\u044B\u0435\n <ng-template scAccordionContent>\n <tui-loader *tuiLet=\"user$ | async as user\" [overlay]=\"true\" [showLoader]=\"user === null\">\n <div class=\"flex gap-2 pl-4\">\n <div *ngIf=\"user\" class=\"flex flex-col flex-grow gap-2\">\n <span class=\"font-medium\">{{ user.name }}</span>\n <div *ngIf=\"user.city && (getUserCity$(user.city) | async) as city\" class=\"flex items-center gap-1\">\n <tui-svg src=\"tuiIconMapPin\"></tui-svg>\n <div class=\"flex flex-wrap\">\n <span>\u0433. {{ city.name }}, </span>\n <span *ngIf=\"city.region\">{{ city.region.name }}</span>\n </div>\n </div>\n <div class=\"flex flex-wrap gap-2\">\n <a\n tuiLink\n tuiMode=\"onLight\"\n icon=\"tuiIconPhone\"\n iconAlign=\"left\"\n [pseudo]=\"true\"\n href=\"tel:{{ user.contacts.phone.value}}\"\n >{{ user.contacts.phone.value | tuiFormatPhone }}</a\n >\n <span *ngIf=\"!user.contacts.phone.isApproved\" class=\"text-tui-text-03\">\n (\u0422\u0435\u043B\u0435\u0444\u043E\u043D \u043D\u0435 \u043F\u043E\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043D. <button tuiLink [pseudo]=\"true\" (click)=\"approvePhoneClick.emit()\">\u041F\u043E\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044C</button>)\n </span>\n </div>\n <div *tuiLet=\"!!(isSendApproveEmail$ | async) as isSendApproveEmail\" class=\"flex flex-wrap gap-x-2\">\n <a tuiLink tuiMode=\"onLight\" icon=\"tuiIconMail\" iconAlign=\"left\" [pseudo]=\"true\" href=\"mailto:{{ user.contacts.email.value }}\">\n {{ user.contacts.email.value }}\n </a>\n <span *ngIf=\"!isSendApproveEmail && !user.contacts.email.isApproved\" class=\"text-tui-text-03 inline-flex flex-wrap gap-1\">\n E-mail \u043D\u0435 \u043F\u043E\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043D.\n <tui-loader [showLoader]=\"!!(approveEmailLoading$ | async)\" [overlay]=\"true\">\n <button tuiLink [pseudo]=\"true\" (click)=\"onSendApproveEmail.next(user.contacts.email.value)\">\u041F\u043E\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044C</button>\n </tui-loader>\n </span>\n <span *ngIf=\"isSendApproveEmail\" class=\"text-tui-success-fill\" @tuiFadeIn>\n \u041F\u0438\u0441\u044C\u043C\u043E \u0434\u043B\u044F \u043F\u043E\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043D\u0438\u044F \u0443\u0441\u043F\u0435\u0448\u043D\u043E \u043E\u0442\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u043E. \u041F\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435 \u043F\u043E \u0441\u0441\u044B\u043B\u043A\u0435 \u0432 \u043F\u0438\u0441\u044C\u043C\u0435 \u0438 \u043E\u0431\u043D\u043E\u0432\u0438\u0442\u0435 \u044D\u0442\u0443 \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u0443.\n </span>\n </div>\n <tui-loader [showLoader]=\"!!(getNewsLoading$ | async)\" [overlay]=\"true\">\n <tui-checkbox-labeled size=\"m\" class=\"w-full\" [formControl]=\"getNewsControl\" [ngModel]=\"user.getNews\">\n \u042F \u0445\u043E\u0447\u0443 \u043F\u043E\u043B\u0443\u0447\u0430\u0442\u044C \u0440\u0430\u0441\u0441\u044B\u043B\u043A\u0443 \u0421\u043D\u0430\u0431\u0446\u0435\u043D\u0442\u0440 \u043E \u0441\u043A\u0438\u0434\u043A\u0430\u0445 \u0438 \u043D\u043E\u0432\u043E\u0441\u0442\u044F\u0445 \u043F\u043E \u044D\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u043D\u043E\u0439 \u043F\u043E\u0447\u0442\u0435.\n </tui-checkbox-labeled>\n </tui-loader>\n </div>\n\n <button tuiIconButton size=\"m\" type=\"button\" icon=\"tuiIconEdit3Large\" tuiMode=\"onLight\" appearance=\"flat\" (click)=\"editProfileClick.emit()\"></button>\n </div>\n </tui-loader>\n </ng-template>\n </sc-accordion>\n <sc-contragents-accordion (addContragentClick)=\"addContragentClick.emit()\" (addBankAccountsClick)=\"addContragentBankAccountsClick.emit($event)\"></sc-contragents-accordion>\n <sc-delivery-address-accordion (addDeliveryAddressClick)=\"addDeliveryAddressClick.emit()\"></sc-delivery-address-accordion>\n <sc-accordion [showArrow]=\"false\" [showAddButton]=\"false\">\n \u0418\u0437\u043C\u0435\u043D\u0438\u0442\u044C \u043F\u0430\u0440\u043E\u043B\u044C\n <ng-template scAccordionContent>\n <sc-reset-user-password></sc-reset-user-password>\n </ng-template>\n </sc-accordion>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ScResetUserPasswordComponent, selector: "sc-reset-user-password" }, { kind: "component", type: ScAccordionComponent, selector: "sc-accordion", inputs: ["showAddButton", "showDeleteButton", "showArrow", "open", "size"], outputs: ["addButtonClick", "deleteButtonClick"] }, { kind: "directive", type: ScAccordionContentDirective, selector: "ng-template[scAccordionContent]" }, { kind: "component", type: ScContragentsAccordionComponent, selector: "sc-contragents-accordion", outputs: ["addContragentClick", "editBankAccountsContragentClick", "addBankAccountsClick", "editContragentClick"] }, { kind: "component", type: ScDeliveryAddressAccordionComponent, selector: "sc-delivery-address-accordion", outputs: ["addDeliveryAddressClick"] }, { kind: "component", type: i4.TuiLoaderComponent, selector: "tui-loader", inputs: ["size", "inheritColor", "overlay", "textContent", "showLoader"] }, { kind: "directive", type: i5.TuiLetDirective, selector: "[tuiLet]", inputs: ["tuiLet"] }, { kind: "component", type: i4.TuiLinkComponent, selector: "a[tuiLink], button[tuiLink]", inputs: ["pseudo", "icon", "iconAlign", "iconRotated", "mode"], exportAs: ["tuiLink"] }, { kind: "directive", type: i4.TuiModeDirective, selector: "[tuiMode]", inputs: ["tuiMode"] }, { kind: "component", type: i6.TuiCheckboxLabeledComponent, selector: "tui-checkbox-labeled", inputs: ["size"] }, { kind: "component", type: i4.TuiSvgComponent, selector: "tui-svg", inputs: ["src"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], 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: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.TuiFormatPhonePipe, name: "tuiFormatPhone" }], animations: [tuiFadeIn], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
3701
3968
|
__decorate([
|
3702
3969
|
tuiPure // TODO: TASK[#7615] Удалить поле рефакторинга сервиса работы с пользователем.
|
3703
3970
|
], ScProfileAccordionsContentComponent.prototype, "getUserCity$", null);
|
3704
3971
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScProfileAccordionsContentComponent, decorators: [{
|
3705
3972
|
type: Component,
|
3706
|
-
args: [{ selector: 'sc-profile-accordions-content', providers: [SC_USER_PROVIDERS], animations: [tuiFadeIn], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"flex flex-col gap-4\">\n <sc-accordion [showArrow]=\"false\" [showAddButton]=\"false\" [open]=\"true\">\n \u041E\u0431\u0449\u0438\u0435 \u0434\u0430\u043D\u043D\u044B\u0435\n <ng-template scAccordionContent>\n <tui-loader *tuiLet=\"user$ | async as user\" [overlay]=\"true\" [showLoader]=\"user === null\">\n <div class=\"flex gap-2 pl-4\">\n <div *ngIf=\"user\" class=\"flex flex-col flex-grow gap-2\">\n <span class=\"font-medium\">{{ user.name }}</span>\n <div *ngIf=\"user.city && (getUserCity$(user.city) | async) as city\" class=\"flex items-center gap-1\">\n <tui-svg src=\"tuiIconMapPin\"></tui-svg>\n <div class=\"flex flex-wrap\">\n <span>\u0433. {{ city.name }}, </span>\n <span *ngIf=\"city.region\">{{ city.region.name }}</span>\n </div>\n </div>\n <div class=\"flex flex-wrap gap-2\">\n <a\n tuiLink\n tuiMode=\"onLight\"\n icon=\"tuiIconPhone\"\n iconAlign=\"left\"\n [pseudo]=\"true\"\n href=\"tel:{{ user.contacts.phone.value}}\"\n >{{ user.contacts.phone.value | tuiFormatPhone }}</a\n >\n <span *ngIf=\"!user.contacts.phone.isApproved\" class=\"text-tui-text-03\">\n (\u0422\u0435\u043B\u0435\u0444\u043E\u043D \u043D\u0435 \u043F\u043E\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043D. <button tuiLink [pseudo]=\"true\" (click)=\"approvePhoneClick.emit()\">\u041F\u043E\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044C</button>)\n </span>\n </div>\n <div *tuiLet=\"!!(isSendApproveEmail$ | async) as isSendApproveEmail\" class=\"flex flex-wrap gap-x-2\">\n <a tuiLink tuiMode=\"onLight\" icon=\"tuiIconMail\" iconAlign=\"left\" [pseudo]=\"true\" href=\"mailto:{{ user.contacts.email.value }}\">\n {{ user.contacts.email.value }}\n </a>\n <span *ngIf=\"!isSendApproveEmail && !user.contacts.email.isApproved\" class=\"text-tui-text-03 inline-flex flex-wrap gap-1\">\n E-mail \u043D\u0435 \u043F\u043E\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043D.\n <tui-loader [showLoader]=\"!!(approveEmailLoading$ | async)\" [overlay]=\"true\">\n <button tuiLink [pseudo]=\"true\" (click)=\"onSendApproveEmail.next(user.contacts.email.value)\">\u041F\u043E\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044C</button>\n </tui-loader>\n </span>\n <span *ngIf=\"isSendApproveEmail\" class=\"text-tui-success-fill\" @tuiFadeIn>\n \u041F\u0438\u0441\u044C\u043C\u043E \u0434\u043B\u044F \u043F\u043E\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043D\u0438\u044F \u0443\u0441\u043F\u0435\u0448\u043D\u043E \u043E\u0442\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u043E. \u041F\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435 \u043F\u043E \u0441\u0441\u044B\u043B\u043A\u0435 \u0432 \u043F\u0438\u0441\u044C\u043C\u0435 \u0438 \u043E\u0431\u043D\u043E\u0432\u0438\u0442\u0435 \u044D\u0442\u0443 \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u0443.\n </span>\n </div>\n <tui-loader [showLoader]=\"!!(getNewsLoading$ | async)\" [overlay]=\"true\">\n <tui-checkbox-labeled size=\"m\" class=\"w-full\" [formControl]=\"getNewsControl\" [ngModel]=\"user.getNews\">\n \u042F \u0445\u043E\u0447\u0443 \u043F\u043E\u043B\u0443\u0447\u0430\u0442\u044C \u0440\u0430\u0441\u0441\u044B\u043B\u043A\u0443 \u0421\u043D\u0430\u0431\u0446\u0435\u043D\u0442\u0440 \u043E \u0441\u043A\u0438\u0434\u043A\u0430\u0445 \u0438 \u043D\u043E\u0432\u043E\u0441\u0442\u044F\u0445 \u043F\u043E \u044D\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u043D\u043E\u0439 \u043F\u043E\u0447\u0442\u0435.\n </tui-checkbox-labeled>\n </tui-loader>\n </div>\n\n <button tuiIconButton size=\"m\" type=\"button\" icon=\"tuiIconEdit3Large\" tuiMode=\"onLight\" appearance=\"flat\" (click)=\"editProfileClick.emit()\"></button>\n </div>\n </tui-loader>\n </ng-template>\n </sc-accordion>\n <sc-contragents-accordion (addContragentClick)=\"addContragentClick.emit()\"></sc-contragents-accordion>\n <sc-delivery-address-accordion (addDeliveryAddressClick)=\"addDeliveryAddressClick.emit()\"></sc-delivery-address-accordion>\n <sc-accordion [showArrow]=\"false\" [showAddButton]=\"false\">\n \u0418\u0437\u043C\u0435\u043D\u0438\u0442\u044C \u043F\u0430\u0440\u043E\u043B\u044C\n <ng-template scAccordionContent>\n <sc-reset-user-password></sc-reset-user-password>\n </ng-template>\n </sc-accordion>\n</div>\n" }]
|
3973
|
+
args: [{ selector: 'sc-profile-accordions-content', providers: [SC_USER_PROVIDERS], animations: [tuiFadeIn], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"flex flex-col gap-4\">\n <sc-accordion [showArrow]=\"false\" [showAddButton]=\"false\" [open]=\"true\">\n \u041E\u0431\u0449\u0438\u0435 \u0434\u0430\u043D\u043D\u044B\u0435\n <ng-template scAccordionContent>\n <tui-loader *tuiLet=\"user$ | async as user\" [overlay]=\"true\" [showLoader]=\"user === null\">\n <div class=\"flex gap-2 pl-4\">\n <div *ngIf=\"user\" class=\"flex flex-col flex-grow gap-2\">\n <span class=\"font-medium\">{{ user.name }}</span>\n <div *ngIf=\"user.city && (getUserCity$(user.city) | async) as city\" class=\"flex items-center gap-1\">\n <tui-svg src=\"tuiIconMapPin\"></tui-svg>\n <div class=\"flex flex-wrap\">\n <span>\u0433. {{ city.name }}, </span>\n <span *ngIf=\"city.region\">{{ city.region.name }}</span>\n </div>\n </div>\n <div class=\"flex flex-wrap gap-2\">\n <a\n tuiLink\n tuiMode=\"onLight\"\n icon=\"tuiIconPhone\"\n iconAlign=\"left\"\n [pseudo]=\"true\"\n href=\"tel:{{ user.contacts.phone.value}}\"\n >{{ user.contacts.phone.value | tuiFormatPhone }}</a\n >\n <span *ngIf=\"!user.contacts.phone.isApproved\" class=\"text-tui-text-03\">\n (\u0422\u0435\u043B\u0435\u0444\u043E\u043D \u043D\u0435 \u043F\u043E\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043D. <button tuiLink [pseudo]=\"true\" (click)=\"approvePhoneClick.emit()\">\u041F\u043E\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044C</button>)\n </span>\n </div>\n <div *tuiLet=\"!!(isSendApproveEmail$ | async) as isSendApproveEmail\" class=\"flex flex-wrap gap-x-2\">\n <a tuiLink tuiMode=\"onLight\" icon=\"tuiIconMail\" iconAlign=\"left\" [pseudo]=\"true\" href=\"mailto:{{ user.contacts.email.value }}\">\n {{ user.contacts.email.value }}\n </a>\n <span *ngIf=\"!isSendApproveEmail && !user.contacts.email.isApproved\" class=\"text-tui-text-03 inline-flex flex-wrap gap-1\">\n E-mail \u043D\u0435 \u043F\u043E\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043D.\n <tui-loader [showLoader]=\"!!(approveEmailLoading$ | async)\" [overlay]=\"true\">\n <button tuiLink [pseudo]=\"true\" (click)=\"onSendApproveEmail.next(user.contacts.email.value)\">\u041F\u043E\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044C</button>\n </tui-loader>\n </span>\n <span *ngIf=\"isSendApproveEmail\" class=\"text-tui-success-fill\" @tuiFadeIn>\n \u041F\u0438\u0441\u044C\u043C\u043E \u0434\u043B\u044F \u043F\u043E\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043D\u0438\u044F \u0443\u0441\u043F\u0435\u0448\u043D\u043E \u043E\u0442\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u043E. \u041F\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435 \u043F\u043E \u0441\u0441\u044B\u043B\u043A\u0435 \u0432 \u043F\u0438\u0441\u044C\u043C\u0435 \u0438 \u043E\u0431\u043D\u043E\u0432\u0438\u0442\u0435 \u044D\u0442\u0443 \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u0443.\n </span>\n </div>\n <tui-loader [showLoader]=\"!!(getNewsLoading$ | async)\" [overlay]=\"true\">\n <tui-checkbox-labeled size=\"m\" class=\"w-full\" [formControl]=\"getNewsControl\" [ngModel]=\"user.getNews\">\n \u042F \u0445\u043E\u0447\u0443 \u043F\u043E\u043B\u0443\u0447\u0430\u0442\u044C \u0440\u0430\u0441\u0441\u044B\u043B\u043A\u0443 \u0421\u043D\u0430\u0431\u0446\u0435\u043D\u0442\u0440 \u043E \u0441\u043A\u0438\u0434\u043A\u0430\u0445 \u0438 \u043D\u043E\u0432\u043E\u0441\u0442\u044F\u0445 \u043F\u043E \u044D\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u043D\u043E\u0439 \u043F\u043E\u0447\u0442\u0435.\n </tui-checkbox-labeled>\n </tui-loader>\n </div>\n\n <button tuiIconButton size=\"m\" type=\"button\" icon=\"tuiIconEdit3Large\" tuiMode=\"onLight\" appearance=\"flat\" (click)=\"editProfileClick.emit()\"></button>\n </div>\n </tui-loader>\n </ng-template>\n </sc-accordion>\n <sc-contragents-accordion (addContragentClick)=\"addContragentClick.emit()\" (addBankAccountsClick)=\"addContragentBankAccountsClick.emit($event)\"></sc-contragents-accordion>\n <sc-delivery-address-accordion (addDeliveryAddressClick)=\"addDeliveryAddressClick.emit()\"></sc-delivery-address-accordion>\n <sc-accordion [showArrow]=\"false\" [showAddButton]=\"false\">\n \u0418\u0437\u043C\u0435\u043D\u0438\u0442\u044C \u043F\u0430\u0440\u043E\u043B\u044C\n <ng-template scAccordionContent>\n <sc-reset-user-password></sc-reset-user-password>\n </ng-template>\n </sc-accordion>\n</div>\n" }]
|
3707
3974
|
}], ctorParameters: function () {
|
3708
3975
|
return [{ type: i10.Observable, decorators: [{
|
3709
3976
|
type: Inject,
|
@@ -3715,6 +3982,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
3715
3982
|
type: Output
|
3716
3983
|
}], addContragentClick: [{
|
3717
3984
|
type: Output
|
3985
|
+
}], addContragentBankAccountsClick: [{
|
3986
|
+
type: Output
|
3718
3987
|
}], addDeliveryAddressClick: [{
|
3719
3988
|
type: Output
|
3720
3989
|
}], getUserCity$: [] } });
|
@@ -3777,9 +4046,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
3777
4046
|
FormsModule,
|
3778
4047
|
ReactiveFormsModule,
|
3779
4048
|
TuiLoaderModule,
|
3780
|
-
TuiButtonModule
|
4049
|
+
TuiButtonModule
|
3781
4050
|
],
|
3782
|
-
exports: [ScProfileAccordionsContentComponent]
|
4051
|
+
exports: [ScProfileAccordionsContentComponent]
|
3783
4052
|
}]
|
3784
4053
|
}] });
|
3785
4054
|
|
@@ -3791,5 +4060,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
3791
4060
|
* Generated bundle index. Do not edit.
|
3792
4061
|
*/
|
3793
4062
|
|
3794
|
-
export { AuthMethod, FilesAndDocumentsComponent, FilesAndDocumentsModule, SC_LINEAR_VALUES, SC_LINEAR_VALUES_TOKEN, SC_LOADING_PAGINATION_CHANGE_INFO, SC_NEXT_PAGE_PAGINATION_CHANGE_INFO, SC_NEXT_PAGE_PAGINATION_CLICK, SC_PRODUCT_PAGINATION_CHANGE_INFO, SC_PRODUCT_PAGINATION_CHANGE_PROVIDERS, SC_PRODUCT_PAGINATION_DEFAULT_OPTIONS, SC_PRODUCT_PAGINATION_OPTIONS, SC_PRODUCT_PAGINATION_PARAMS, SC_USER_INFO, SC_USER_PROVIDERS, ScAccordionComponent, ScAccordionContentDirective, ScAccordionModule, ScAuthModule, ScBannerComponent, ScBannerModule, ScCartItemMobileComponent, ScCartModule, ScCatalogModule, ScCategoriesListComponent, ScCategoryCardComponent, ScContactsAccordionComponent, ScContactsModule, ScContragentsAccordionComponent, ScContragentsAccordionItemComponent, ScContragentsModule, ScDeliveryAddressAccordionComponent, ScDeliveryAddressAccordionItemComponent, ScDeliveryAddressModule, ScFavoriteBtnComponent, ScInputQuantityComponent, ScNewsCardComponent, ScNewsCardSkeletonComponent, ScNewsModule, ScOrderItemMobileComponent, ScOrderModule, ScPriceCardComponent, ScPriceHistoryComponent, ScPriceListPaginationComponent, ScPriceWarehouseStockComponent, ScProfileAccordionsContentComponent, ScProfileModule, ScResetUserPasswordComponent, ScShareButtonComponent, ScShareButtonModule, ScSignInFormByEmailComponent, ScSignInFormByPhoneComponent, ScSignInFormComponent, ScUpdateUserInfoDialogComponent, ScUserModule, ScUserPhoneApproveDialogComponent, ScVerificationModule, ScVerificationPhoneCheckFormComponent, TreeDirective, TreeIconService, TreeLoaderService, TreeTopDirective, nextPageClickEvent, paginationParams$, scClientUiIconsName, scPasswordConfirmMatchingValidator, scUserFactory, stepValidator, verificationCodeMask };
|
4063
|
+
export { AuthMethod, FilesAndDocumentsComponent, FilesAndDocumentsModule, SC_LINEAR_VALUES, SC_LINEAR_VALUES_TOKEN, SC_LOADING_PAGINATION_CHANGE_INFO, SC_NEXT_PAGE_PAGINATION_CHANGE_INFO, SC_NEXT_PAGE_PAGINATION_CLICK, SC_PRODUCT_PAGINATION_CHANGE_INFO, SC_PRODUCT_PAGINATION_CHANGE_PROVIDERS, SC_PRODUCT_PAGINATION_DEFAULT_OPTIONS, SC_PRODUCT_PAGINATION_OPTIONS, SC_PRODUCT_PAGINATION_PARAMS, SC_USER_INFO, SC_USER_PROVIDERS, ScAccordionComponent, ScAccordionContentDirective, ScAccordionModule, ScAddContragentBankAccountsDialogComponent, ScAuthModule, ScBannerComponent, ScBannerModule, ScCartItemMobileComponent, ScCartModule, ScCatalogModule, ScCategoriesListComponent, ScCategoryCardComponent, ScContactsAccordionComponent, ScContactsModule, ScContragentsAccordionComponent, ScContragentsAccordionItemComponent, ScContragentsModule, ScDeliveryAddressAccordionComponent, ScDeliveryAddressAccordionItemComponent, ScDeliveryAddressModule, ScFavoriteBtnComponent, ScInputQuantityComponent, ScNewContragentBankAccountsFormComponent, ScNewsCardComponent, ScNewsCardSkeletonComponent, ScNewsModule, ScOrderItemMobileComponent, ScOrderModule, ScPaymentStatusComponent, ScPriceCardComponent, ScPriceHistoryComponent, ScPriceListPaginationComponent, ScPriceWarehouseStockComponent, ScProfileAccordionsContentComponent, ScProfileModule, ScResetUserPasswordComponent, ScShareButtonComponent, ScShareButtonModule, ScSignInFormByEmailComponent, ScSignInFormByPhoneComponent, ScSignInFormComponent, ScUpdateUserInfoDialogComponent, ScUserModule, ScUserPhoneApproveDialogComponent, ScVerificationModule, ScVerificationPhoneCheckFormComponent, TreeDirective, TreeIconService, TreeLoaderService, TreeTopDirective, nextPageClickEvent, paginationParams$, scBicValidator, scClientUiIconsName, scCorrespondentAccountValidator, scPasswordConfirmMatchingValidator, scUserFactory, stepValidator, verificationCodeMask };
|
3795
4064
|
//# sourceMappingURL=snabcentr-client-ui.mjs.map
|