@snabcentr/client-ui 1.7.0 → 1.8.1

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

Potentially problematic release.


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

@@ -12,9 +12,9 @@ import { HttpErrorResponse } from '@angular/common/http';
12
12
  import * as i3 from '@angular/forms';
13
13
  import { FormGroupDirective, FormGroup, FormControl, Validators, NgControl, FormArray, FormsModule, ReactiveFormsModule } from '@angular/forms';
14
14
  import * as i6 from '@taiga-ui/cdk';
15
- import { tuiControlValue, tuiIsFalsy, tuiIsPresent, tuiMarkControlAsTouchedAndValidate, AbstractTuiControl, tuiCreateToken, TuiLetModule, TuiRepeatTimesModule, TUI_IS_MOBILE, tuiPure, AbstractTuiNullableControl, TuiDay, TuiDayRange, TuiMonth, TuiDestroyService, ALWAYS_TRUE_HANDLER } from '@taiga-ui/cdk';
15
+ import { tuiControlValue, tuiIsFalsy, tuiIsPresent, tuiMarkControlAsTouchedAndValidate, AbstractTuiControl, tuiCreateToken, TuiLetModule, TuiRepeatTimesModule, TUI_IS_MOBILE, tuiPure, AbstractTuiNullableControl, TuiDay, TuiDayRange, TuiMonth, TuiDestroyService, TuiHoveredModule, ALWAYS_TRUE_HANDLER } from '@taiga-ui/cdk';
16
16
  import * as i4$1 from '@taiga-ui/kit';
17
- import { TuiAccordionItemComponent, TuiAccordionModule, TuiElasticContainerModule, TuiInputModule, TuiFieldErrorPipeModule, TuiComboBoxModule, TuiDataListWrapperModule, TuiFilterByInputPipeModule, TuiStringifyContentPipeModule, TuiInputPhoneModule, TuiSelectModule, TuiCarouselModule, TuiInputPasswordModule, TuiCheckboxModule, TuiCheckboxLabeledModule, TuiStepperModule, TUI_NUMBER_VALUE_TRANSFORMER, TuiInputNumberComponent, TuiIslandModule, TuiInputNumberModule, TuiHighlightModule, TuiTreeService, TuiTreeItemContentComponent, TUI_TREE_START, TUI_TREE_CONTENT, TUI_TREE_LOADING, TUI_TREE_LOADER, TuiTreeModule } from '@taiga-ui/kit';
17
+ import { TuiAccordionItemComponent, TuiAccordionModule, TuiElasticContainerModule, TuiInputModule, TuiFieldErrorPipeModule, TuiComboBoxModule, TuiDataListWrapperModule, TuiFilterByInputPipeModule, TuiStringifyContentPipeModule, TuiInputPhoneModule, TuiSelectModule, TuiCarouselModule, TuiInputPasswordModule, TuiCheckboxModule, TuiCheckboxLabeledModule, TuiStepperModule, TUI_NUMBER_VALUE_TRANSFORMER, TuiInputNumberComponent, TuiIslandModule, TuiInputNumberModule, TuiHighlightModule, TuiTreeService, TuiTreeItemContentComponent, TUI_TREE_START, TUI_TREE_CONTENT, TUI_TREE_LOADING, TUI_TREE_LOADER, TuiTreeModule, TuiAvatarModule } from '@taiga-ui/kit';
18
18
  import * as i6$1 from '@maskito/angular';
19
19
  import { MaskitoModule } from '@maskito/angular';
20
20
  import { __decorate } from 'tslib';
@@ -1733,6 +1733,53 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
1733
1733
  type: Input
1734
1734
  }] } });
1735
1735
 
1736
+ /* eslint-disable class-methods-use-this */
1737
+ /**
1738
+ * Пайп для форматирования номера телефона.
1739
+ *
1740
+ * Если переданный номер телефона валиден, он будет отформатирован с использованием метода `formatPhoneNumber` сервиса `ScPhoneService`.
1741
+ * Если номер невалиден, возвращается исходное значение.
1742
+ */
1743
+ class ScFormatePhonePipe {
1744
+ /**
1745
+ * Преобразует строковое значение номера телефона.
1746
+ *
1747
+ * @param value Строка, содержащая номер телефона.
1748
+ * @returns Отформатированный номер телефона, если он валиден, или исходное значение, если он невалиден.
1749
+ */
1750
+ transform(value) {
1751
+ if (ScPhoneService.isValidPhoneNumber(value)) {
1752
+ return ScPhoneService.formatPhoneNumber(value);
1753
+ }
1754
+ return value; // Возвращаем оригинальный номер, если он невалиден
1755
+ }
1756
+ }
1757
+ ScFormatePhonePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScFormatePhonePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
1758
+ ScFormatePhonePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: ScFormatePhonePipe, isStandalone: true, name: "scFormatePhone" });
1759
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScFormatePhonePipe, decorators: [{
1760
+ type: Pipe,
1761
+ args: [{
1762
+ standalone: true,
1763
+ name: 'scFormatePhone',
1764
+ }]
1765
+ }] });
1766
+
1767
+ /**
1768
+ * Модуль валидации значения номера телефона.
1769
+ */
1770
+ class ScTelLinkModule {
1771
+ }
1772
+ ScTelLinkModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScTelLinkModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1773
+ ScTelLinkModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: ScTelLinkModule, imports: [ScFormatePhonePipe, ScTelLinkDirective], exports: [ScFormatePhonePipe, ScTelLinkDirective] });
1774
+ ScTelLinkModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScTelLinkModule });
1775
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScTelLinkModule, decorators: [{
1776
+ type: NgModule,
1777
+ args: [{
1778
+ imports: [ScFormatePhonePipe, ScTelLinkDirective],
1779
+ exports: [ScFormatePhonePipe, ScTelLinkDirective],
1780
+ }]
1781
+ }] });
1782
+
1736
1783
  /**
1737
1784
  * Компонент QR кода.
1738
1785
  */
@@ -1935,37 +1982,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
1935
1982
  }]
1936
1983
  }] });
1937
1984
 
1938
- /* eslint-disable class-methods-use-this */
1939
- /**
1940
- * Пайп для форматирования номера телефона.
1941
- *
1942
- * Если переданный номер телефона валиден, он будет отформатирован с использованием метода `formatPhoneNumber` сервиса `ScPhoneService`.
1943
- * Если номер невалиден, возвращается исходное значение.
1944
- */
1945
- class ScFormatePhonePipe {
1946
- /**
1947
- * Преобразует строковое значение номера телефона.
1948
- *
1949
- * @param value Строка, содержащая номер телефона.
1950
- * @returns Отформатированный номер телефона, если он валиден, или исходное значение, если он невалиден.
1951
- */
1952
- transform(value) {
1953
- if (ScPhoneService.isValidPhoneNumber(value)) {
1954
- return ScPhoneService.formatPhoneNumber(value);
1955
- }
1956
- return value; // Возвращаем оригинальный номер, если он невалиден
1957
- }
1958
- }
1959
- ScFormatePhonePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScFormatePhonePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
1960
- ScFormatePhonePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: ScFormatePhonePipe, isStandalone: true, name: "scFormatePhone" });
1961
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScFormatePhonePipe, decorators: [{
1962
- type: Pipe,
1963
- args: [{
1964
- standalone: true,
1965
- name: 'scFormatePhone',
1966
- }]
1967
- }] });
1968
-
1969
1985
  /* eslint-disable no-restricted-syntax,@typescript-eslint/unbound-method */
1970
1986
  /**
1971
1987
  * Компонент формы создания нового контактного лица.
@@ -5117,6 +5133,162 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
5117
5133
  }]
5118
5134
  }] });
5119
5135
 
5136
+ /* eslint-disable @typescript-eslint/unbound-method */
5137
+ /**
5138
+ * Компонент формы запроса бесплатного образца.
5139
+ */
5140
+ class ScAskToSampleFormComponent {
5141
+ constructor() {
5142
+ /**
5143
+ * Группа полей ввода для формы «Пожелания и предложения по улучшению сайта».
5144
+ */
5145
+ this.form = new FormGroup({
5146
+ name: new FormControl(null, [Validators.required, Validators.minLength(3)]),
5147
+ phone: new FormControl(null, [Validators.required, Validators.minLength(12)]),
5148
+ email: new FormControl(null, [Validators.required, Validators.email]),
5149
+ });
5150
+ /**
5151
+ * Перечисление типов подсказок.
5152
+ */
5153
+ this.suggestionType = ScISuggestionType;
5154
+ }
5155
+ }
5156
+ ScAskToSampleFormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScAskToSampleFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
5157
+ ScAskToSampleFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ScAskToSampleFormComponent, selector: "sc-ask-to-sample-form", ngImport: i0, template: "<form\n [formGroup]=\"form\"\n class=\"flex flex-col justify-between gap-4\"\n>\n <label tuiLabel=\"\u0424\u0418\u041E\">\n <tui-input formControlName=\"name\"> \u0418\u0432\u0430\u043D\u043E\u0432 \u0418\u0432\u0430\u043D \u0418\u0432\u0430\u043D\u043E\u0432\u0438\u0447 </tui-input>\n <tui-error\n formControlName=\"name\"\n [error]=\"[] | tuiFieldError | async\"\n ></tui-error>\n </label>\n <label tuiLabel=\"\u0422\u0435\u043B\u0435\u0444\u043E\u043D\">\n <tui-input-phone formControlName=\"phone\"> \u0422\u0435\u043B\u0435\u0444\u043E\u043D </tui-input-phone>\n <tui-error\n formControlName=\"phone\"\n [error]=\"[] | tuiFieldError | async\"\n ></tui-error>\n </label>\n <label\n tuiLabel=\"\u0410\u0434\u0440\u0435\u0441 \u044D\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u043D\u043E\u0439 \u043F\u043E\u0447\u0442\u044B\"\n class=\"w-full\"\n >\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\n *tuiDataList\n [type]=\"suggestionType.email\"\n ></sc-suggestion-field>\n </tui-input>\n <tui-error\n formControlName=\"email\"\n [error]=\"[] | tuiFieldError | async\"\n ></tui-error>\n </label>\n <button\n tuiButton\n [disabled]=\"form.invalid\"\n type=\"submit\"\n icon=\"scIconSend\"\n class=\"self-center\"\n >\n \u041E\u0441\u0442\u0430\u0432\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: i4.TuiErrorComponent, selector: "tui-error", inputs: ["error"] }, { kind: "component", type: ScSuggestionFieldComponent, selector: "sc-suggestion-field", inputs: ["type"], outputs: ["selectedClick"] }, { kind: "component", type: i4$1.TuiInputComponent, selector: "tui-input" }, { kind: "directive", type: i4$1.TuiInputDirective, selector: "tui-input" }, { kind: "component", type: i4$1.TuiInputPhoneComponent, selector: "tui-input-phone", inputs: ["countryCode", "phoneMaskAfterCountryCode", "allowText", "search"], outputs: ["searchChange"] }, { kind: "directive", type: i4$1.TuiInputPhoneDirective, selector: "tui-input-phone" }, { 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: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i4$1.TuiFieldErrorPipe, name: "tuiFieldError" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
5158
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScAskToSampleFormComponent, decorators: [{
5159
+ type: Component,
5160
+ args: [{ selector: 'sc-ask-to-sample-form', changeDetection: ChangeDetectionStrategy.OnPush, template: "<form\n [formGroup]=\"form\"\n class=\"flex flex-col justify-between gap-4\"\n>\n <label tuiLabel=\"\u0424\u0418\u041E\">\n <tui-input formControlName=\"name\"> \u0418\u0432\u0430\u043D\u043E\u0432 \u0418\u0432\u0430\u043D \u0418\u0432\u0430\u043D\u043E\u0432\u0438\u0447 </tui-input>\n <tui-error\n formControlName=\"name\"\n [error]=\"[] | tuiFieldError | async\"\n ></tui-error>\n </label>\n <label tuiLabel=\"\u0422\u0435\u043B\u0435\u0444\u043E\u043D\">\n <tui-input-phone formControlName=\"phone\"> \u0422\u0435\u043B\u0435\u0444\u043E\u043D </tui-input-phone>\n <tui-error\n formControlName=\"phone\"\n [error]=\"[] | tuiFieldError | async\"\n ></tui-error>\n </label>\n <label\n tuiLabel=\"\u0410\u0434\u0440\u0435\u0441 \u044D\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u043D\u043E\u0439 \u043F\u043E\u0447\u0442\u044B\"\n class=\"w-full\"\n >\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\n *tuiDataList\n [type]=\"suggestionType.email\"\n ></sc-suggestion-field>\n </tui-input>\n <tui-error\n formControlName=\"email\"\n [error]=\"[] | tuiFieldError | async\"\n ></tui-error>\n </label>\n <button\n tuiButton\n [disabled]=\"form.invalid\"\n type=\"submit\"\n icon=\"scIconSend\"\n class=\"self-center\"\n >\n \u041E\u0441\u0442\u0430\u0432\u0438\u0442\u044C\n </button>\n</form>\n" }]
5161
+ }] });
5162
+
5163
+ /**
5164
+ * Компонент представления образцов товара.
5165
+ */
5166
+ class ScPreviewSampleComponent {
5167
+ constructor() {
5168
+ /**
5169
+ * Индекс элемента в галерее.
5170
+ */
5171
+ this.index = 0;
5172
+ /**
5173
+ * {@link EventEmitter} изменения индекса элемента в галерее.
5174
+ */
5175
+ this.indexChange = new EventEmitter();
5176
+ /**
5177
+ * Признак, что необходимо отображать переключатели на карусели.
5178
+ */
5179
+ this.isShowCarouselSwitches = !inject(TUI_IS_MOBILE);
5180
+ /**
5181
+ * Признак, что при горизонтальном отображении компонент должен быть развёрнут.
5182
+ */
5183
+ this.isReverse = false;
5184
+ /**
5185
+ * {@link Observable} изменения индекса элемента в галерее для автоматического переключения по таймеру.
5186
+ */
5187
+ this.indexChangeInterval = this.indexChange.pipe(startWith(0), filter(() => Boolean(this.sample.items && this.sample.items.length > 1)), switchMap(() => interval(5000).pipe()), map(() => this.sample.items?.length), filter(tuiIsPresent), tap((itemsLength) => {
5188
+ this.onChangeIndex((this.index + 1) % itemsLength);
5189
+ }));
5190
+ }
5191
+ /**
5192
+ * Переключает на предыдущее изображение в галерее.
5193
+ */
5194
+ onPrevious() {
5195
+ if (this.sample.items?.length) {
5196
+ // eslint-disable-next-line unicorn/explicit-length-check
5197
+ this.onChangeIndex((this.index || this.sample.items.length) - 1);
5198
+ }
5199
+ }
5200
+ /**
5201
+ * Переключает на следующее изображение в галерее.
5202
+ */
5203
+ onNext() {
5204
+ if (this.sample.items?.length) {
5205
+ this.onChangeIndex((this.index + 1) % this.sample.items.length);
5206
+ }
5207
+ }
5208
+ /**
5209
+ * Обработчик изменения индекса элемента в галерее.
5210
+ *
5211
+ * @param index Индекс элемента в галерее.
5212
+ */
5213
+ onChangeIndex(index) {
5214
+ if (index !== this.index) {
5215
+ this.index = index;
5216
+ this.indexChange.emit(index);
5217
+ }
5218
+ }
5219
+ }
5220
+ ScPreviewSampleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScPreviewSampleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
5221
+ ScPreviewSampleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ScPreviewSampleComponent, selector: "sc-preview-sample", inputs: { index: "index", sample: "sample", isShowCarouselSwitches: "isShowCarouselSwitches", isReverse: "isReverse" }, outputs: { indexChange: "indexChange" }, ngImport: i0, template: "<div\n *tuiLet=\"sample.items && sample.items.length > 1 as isShownSwitches\"\n class=\"mb-4 flex flex-col-reverse gap-4 md:mb-0 md:flex-row md:gap-8\"\n [class.md:!flex-row-reverse]=\"isReverse\"\n>\n <div class=\"flex max-w-96 flex-1 flex-col justify-center self-center md:max-w-none md:gap-4\">\n <div class=\"flex w-full flex-col gap-3 md:gap-4 md:px-8\">\n <div class=\"text-body-l-bold\">{{ sample.title }}</div>\n <div>{{ sample.description }}</div>\n <div\n *ngIf=\"isShownSwitches\"\n class=\"flex gap-4\"\n >\n <tui-avatar\n *ngFor=\"let item of sample.items; let itemIndex = index\"\n (tuiHoveredChange)=\"onChangeIndex(itemIndex)\"\n [avatarUrl]=\"item.buttonImageUrl\"\n [class.active]=\"index === itemIndex\"\n ></tui-avatar>\n </div>\n <img\n *ngIf=\"sample.descriptionImageUrl\"\n [src]=\"sample.descriptionImageUrl\"\n alt=\"\u041A\u043E\u043D\u0441\u0442\u0440\u0443\u043A\u0446\u0438\u044F \u043E\u0431\u0440\u0430\u0437\u0446\u0430 {{ sample.title }}\"\n class=\"w-fit\"\n />\n <div\n *ngIf=\"sample.actions && sample.actions.length\"\n class=\"flex flex-wrap gap-3 md:gap-4\"\n >\n <button\n *ngFor=\"let action of sample.actions\"\n tuiButton\n (click)=\"action.handler()\"\n [icon]=\"action.icon\"\n appearance=\"secondary\"\n >\n {{ action.label }}\n </button>\n </div>\n </div>\n </div>\n\n <div class=\"relative h-[19em] flex-1 overflow-hidden rounded-xl shadow-tui-shadow md:h-96 lg:h-[28rem]\">\n <button\n *ngIf=\"isShownSwitches && isShowCarouselSwitches\"\n tuiIconButton\n (click)=\"onPrevious()\"\n icon=\"tuiIconChevronLeftLarge\"\n appearance=\"icon\"\n class=\"!absolute left-0 top-1/2 z-10 ml-2 -translate-y-1/2\"\n ></button>\n\n <tui-carousel\n *tuiLet=\"indexChangeInterval | async\"\n [(index)]=\"index\"\n class=\"h-[19em] w-full md:h-96 lg:h-[28rem]\"\n >\n <ng-container *ngFor=\"let item of sample.items\">\n <div\n *tuiItem\n [style.backgroundImage]=\"'url(' + item.carouselItemImage + ')'\"\n class=\"h-[19em] w-full bg-cover bg-right md:h-96 lg:h-[28rem]\"\n ></div>\n </ng-container>\n </tui-carousel>\n <button\n *ngIf=\"isShownSwitches && isShowCarouselSwitches\"\n tuiIconButton\n (click)=\"onNext()\"\n icon=\"tuiIconChevronRightLarge\"\n appearance=\"icon\"\n class=\"!absolute right-0 top-1/2 z-10 mr-2 -translate-y-1/2\"\n ></button>\n </div>\n</div>\n", styles: [":host{--tui-carousel-padding: 0}tui-avatar.active{--tw-ring-color: var(--tui-primary);--tw-ring-offset-width: 2px;--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 rgba(0, 0, 0, 0))}\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: i4$1.TuiCarouselComponent, selector: "tui-carousel", inputs: ["draggable", "itemsCount", "index"], outputs: ["indexChange"] }, { kind: "directive", type: i4$1.TuiCarouselDirective, selector: "tui-carousel", inputs: ["duration", "index"] }, { kind: "directive", type: i6.TuiItemDirective, selector: "[tuiItem]" }, { kind: "component", type: i4$1.TuiAvatarComponent, selector: "tui-avatar", inputs: ["size", "avatarUrl", "text", "fallback", "autoColor", "rounded"] }, { kind: "directive", type: i6.TuiHoveredDirective, selector: "[tuiHoveredChange]", outputs: ["tuiHoveredChange"] }, { kind: "directive", type: i6.TuiLetDirective, selector: "[tuiLet]", inputs: ["tuiLet"] }, { 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" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
5222
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScPreviewSampleComponent, decorators: [{
5223
+ type: Component,
5224
+ args: [{ selector: 'sc-preview-sample', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n *tuiLet=\"sample.items && sample.items.length > 1 as isShownSwitches\"\n class=\"mb-4 flex flex-col-reverse gap-4 md:mb-0 md:flex-row md:gap-8\"\n [class.md:!flex-row-reverse]=\"isReverse\"\n>\n <div class=\"flex max-w-96 flex-1 flex-col justify-center self-center md:max-w-none md:gap-4\">\n <div class=\"flex w-full flex-col gap-3 md:gap-4 md:px-8\">\n <div class=\"text-body-l-bold\">{{ sample.title }}</div>\n <div>{{ sample.description }}</div>\n <div\n *ngIf=\"isShownSwitches\"\n class=\"flex gap-4\"\n >\n <tui-avatar\n *ngFor=\"let item of sample.items; let itemIndex = index\"\n (tuiHoveredChange)=\"onChangeIndex(itemIndex)\"\n [avatarUrl]=\"item.buttonImageUrl\"\n [class.active]=\"index === itemIndex\"\n ></tui-avatar>\n </div>\n <img\n *ngIf=\"sample.descriptionImageUrl\"\n [src]=\"sample.descriptionImageUrl\"\n alt=\"\u041A\u043E\u043D\u0441\u0442\u0440\u0443\u043A\u0446\u0438\u044F \u043E\u0431\u0440\u0430\u0437\u0446\u0430 {{ sample.title }}\"\n class=\"w-fit\"\n />\n <div\n *ngIf=\"sample.actions && sample.actions.length\"\n class=\"flex flex-wrap gap-3 md:gap-4\"\n >\n <button\n *ngFor=\"let action of sample.actions\"\n tuiButton\n (click)=\"action.handler()\"\n [icon]=\"action.icon\"\n appearance=\"secondary\"\n >\n {{ action.label }}\n </button>\n </div>\n </div>\n </div>\n\n <div class=\"relative h-[19em] flex-1 overflow-hidden rounded-xl shadow-tui-shadow md:h-96 lg:h-[28rem]\">\n <button\n *ngIf=\"isShownSwitches && isShowCarouselSwitches\"\n tuiIconButton\n (click)=\"onPrevious()\"\n icon=\"tuiIconChevronLeftLarge\"\n appearance=\"icon\"\n class=\"!absolute left-0 top-1/2 z-10 ml-2 -translate-y-1/2\"\n ></button>\n\n <tui-carousel\n *tuiLet=\"indexChangeInterval | async\"\n [(index)]=\"index\"\n class=\"h-[19em] w-full md:h-96 lg:h-[28rem]\"\n >\n <ng-container *ngFor=\"let item of sample.items\">\n <div\n *tuiItem\n [style.backgroundImage]=\"'url(' + item.carouselItemImage + ')'\"\n class=\"h-[19em] w-full bg-cover bg-right md:h-96 lg:h-[28rem]\"\n ></div>\n </ng-container>\n </tui-carousel>\n <button\n *ngIf=\"isShownSwitches && isShowCarouselSwitches\"\n tuiIconButton\n (click)=\"onNext()\"\n icon=\"tuiIconChevronRightLarge\"\n appearance=\"icon\"\n class=\"!absolute right-0 top-1/2 z-10 mr-2 -translate-y-1/2\"\n ></button>\n </div>\n</div>\n", styles: [":host{--tui-carousel-padding: 0}tui-avatar.active{--tw-ring-color: var(--tui-primary);--tw-ring-offset-width: 2px;--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 rgba(0, 0, 0, 0))}\n"] }]
5225
+ }], propDecorators: { index: [{
5226
+ type: Input
5227
+ }], indexChange: [{
5228
+ type: Output
5229
+ }], sample: [{
5230
+ type: Input
5231
+ }], isShowCarouselSwitches: [{
5232
+ type: Input
5233
+ }], isReverse: [{
5234
+ type: Input
5235
+ }] } });
5236
+
5237
+ /**
5238
+ * Модуль представления образцов товара.
5239
+ */
5240
+ class ScPreviewSampleModule {
5241
+ }
5242
+ ScPreviewSampleModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScPreviewSampleModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
5243
+ ScPreviewSampleModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: ScPreviewSampleModule, declarations: [ScPreviewSampleComponent, ScAskToSampleFormComponent], imports: [CommonModule,
5244
+ ReactiveFormsModule,
5245
+ TuiErrorModule,
5246
+ TuiFieldErrorPipeModule,
5247
+ ScFormFieldsModule,
5248
+ TuiInputModule,
5249
+ TuiInputPhoneModule,
5250
+ TuiCarouselModule,
5251
+ TuiAvatarModule,
5252
+ TuiHoveredModule,
5253
+ TuiLetModule,
5254
+ TuiButtonModule,
5255
+ TuiLabelModule], exports: [ScPreviewSampleComponent, ScAskToSampleFormComponent] });
5256
+ ScPreviewSampleModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScPreviewSampleModule, imports: [CommonModule,
5257
+ ReactiveFormsModule,
5258
+ TuiErrorModule,
5259
+ TuiFieldErrorPipeModule,
5260
+ ScFormFieldsModule,
5261
+ TuiInputModule,
5262
+ TuiInputPhoneModule,
5263
+ TuiCarouselModule,
5264
+ TuiAvatarModule,
5265
+ TuiHoveredModule,
5266
+ TuiLetModule,
5267
+ TuiButtonModule,
5268
+ TuiLabelModule] });
5269
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScPreviewSampleModule, decorators: [{
5270
+ type: NgModule,
5271
+ args: [{
5272
+ declarations: [ScPreviewSampleComponent, ScAskToSampleFormComponent],
5273
+ imports: [
5274
+ CommonModule,
5275
+ ReactiveFormsModule,
5276
+ TuiErrorModule,
5277
+ TuiFieldErrorPipeModule,
5278
+ ScFormFieldsModule,
5279
+ TuiInputModule,
5280
+ TuiInputPhoneModule,
5281
+ TuiCarouselModule,
5282
+ TuiAvatarModule,
5283
+ TuiHoveredModule,
5284
+ TuiLetModule,
5285
+ TuiButtonModule,
5286
+ TuiLabelModule,
5287
+ ],
5288
+ exports: [ScPreviewSampleComponent, ScAskToSampleFormComponent],
5289
+ }]
5290
+ }] });
5291
+
5120
5292
  /**
5121
5293
  * Токен потока данных о текущем пользователе.
5122
5294
  */
@@ -5415,22 +5587,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
5415
5587
  args: [POLYMORPHEUS_CONTEXT]
5416
5588
  }] }]; } });
5417
5589
 
5418
- /**
5419
- * Модуль валидации значения номера телефона.
5420
- */
5421
- class ScTelLinkModule {
5422
- }
5423
- ScTelLinkModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScTelLinkModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
5424
- ScTelLinkModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: ScTelLinkModule, imports: [ScFormatePhonePipe, ScTelLinkDirective], exports: [ScFormatePhonePipe, ScTelLinkDirective] });
5425
- ScTelLinkModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScTelLinkModule });
5426
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScTelLinkModule, decorators: [{
5427
- type: NgModule,
5428
- args: [{
5429
- imports: [ScFormatePhonePipe, ScTelLinkDirective],
5430
- exports: [ScFormatePhonePipe, ScTelLinkDirective],
5431
- }]
5432
- }] });
5433
-
5434
5590
  /**
5435
5591
  * Модуль компонентов пользователя.
5436
5592
  */
@@ -5744,5 +5900,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
5744
5900
  * Generated bundle index. Do not edit.
5745
5901
  */
5746
5902
 
5747
- export { AbstractScPriceCard, 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, ScAddContactDialogComponent, ScAddContragentBankAccountsDialogComponent, ScAddContragentDialogComponent, ScAddDeliveryAddressDialogComponent, ScAddressesSelectionFieldComponent, ScAuthModule, ScBannerComponent, ScBannerModule, ScBrandsListComponent, ScBrandsListModule, ScCartItemMobileComponent, ScCartModule, ScCatalogModule, ScCategoriesListComponent, ScCategoryCardComponent, ScContactsAccordionComponent, ScContactsModule, ScContragentsAccordionComponent, ScContragentsAccordionItemComponent, ScContragentsModule, ScDeliveryAddressAccordionComponent, ScDeliveryAddressAccordionItemComponent, ScDeliveryAddressModule, ScFavoriteBtnComponent, ScFormFieldsModule, ScFormatePhonePipe, ScInputQuantityComponent, ScNewContactFormComponent, ScNewContragentBankAccountsFormComponent, ScNewContragentFormComponent, ScNewsCardComponent, ScNewsCardSkeletonComponent, ScNewsModule, ScNextInputFocusDirective, ScNextInputFocusModule, ScOrderItemMobileComponent, ScOrderModule, ScPaymentStatusComponent, ScPriceCardComponent, ScPriceHistoryComponent, ScPriceListPaginationComponent, ScPriceWarehouseStockComponent, ScProfileAccordionsContentComponent, ScProfileModule, ScQRCodeDialogComponent, ScQRCodeModule, ScResetUserPasswordComponent, ScShareButtonComponent, ScShareButtonModule, ScSignInFormByEmailComponent, ScSignInFormByPhoneComponent, ScSignInFormComponent, ScSignUpFormComponent, ScSuggestionFieldComponent, ScTelLinkDirective, ScTerminalLinkDirective, ScUpdateUserInfoDialogComponent, ScUserManagersComponent, ScUserModule, ScUserPhoneApproveDialogComponent, ScVerificationModule, ScVerificationPhoneCheckFormComponent, TreeDirective, TreeIconService, TreeLoaderService, TreeTopDirective, nextPageClickEvent, paginationParams$, scBicValidator, scClientUiIconsName, scCorrespondentAccountValidator, scPasswordConfirmMatchingValidator, scUserFactory, stepValidator };
5903
+ export { AbstractScPriceCard, 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, ScAddContactDialogComponent, ScAddContragentBankAccountsDialogComponent, ScAddContragentDialogComponent, ScAddDeliveryAddressDialogComponent, ScAddressesSelectionFieldComponent, ScAskToSampleFormComponent, ScAuthModule, ScBannerComponent, ScBannerModule, ScBrandsListComponent, ScBrandsListModule, ScCartItemMobileComponent, ScCartModule, ScCatalogModule, ScCategoriesListComponent, ScCategoryCardComponent, ScContactsAccordionComponent, ScContactsModule, ScContragentsAccordionComponent, ScContragentsAccordionItemComponent, ScContragentsModule, ScDeliveryAddressAccordionComponent, ScDeliveryAddressAccordionItemComponent, ScDeliveryAddressModule, ScFavoriteBtnComponent, ScFormFieldsModule, ScFormatePhonePipe, ScInputQuantityComponent, ScNewContactFormComponent, ScNewContragentBankAccountsFormComponent, ScNewContragentFormComponent, ScNewsCardComponent, ScNewsCardSkeletonComponent, ScNewsModule, ScNextInputFocusDirective, ScNextInputFocusModule, ScOrderItemMobileComponent, ScOrderModule, ScPaymentStatusComponent, ScPreviewSampleComponent, ScPreviewSampleModule, ScPriceCardComponent, ScPriceHistoryComponent, ScPriceListPaginationComponent, ScPriceWarehouseStockComponent, ScProfileAccordionsContentComponent, ScProfileModule, ScQRCodeDialogComponent, ScQRCodeModule, ScResetUserPasswordComponent, ScShareButtonComponent, ScShareButtonModule, ScSignInFormByEmailComponent, ScSignInFormByPhoneComponent, ScSignInFormComponent, ScSignUpFormComponent, ScSuggestionFieldComponent, ScTelLinkDirective, ScTelLinkModule, ScTerminalLinkDirective, ScUpdateUserInfoDialogComponent, ScUserManagersComponent, ScUserModule, ScUserPhoneApproveDialogComponent, ScVerificationModule, ScVerificationPhoneCheckFormComponent, TreeDirective, TreeIconService, TreeLoaderService, TreeTopDirective, nextPageClickEvent, paginationParams$, scBicValidator, scClientUiIconsName, scCorrespondentAccountValidator, scPasswordConfirmMatchingValidator, scUserFactory, stepValidator };
5748
5904
  //# sourceMappingURL=snabcentr-client-ui.mjs.map