@snabcentr/client-ui 4.14.8 → 4.14.20

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.
Files changed (64) hide show
  1. package/esm2022/feedback/feedback-form/sc-feedback-form.component.mjs +21 -11
  2. package/esm2022/order/draft/sc-draft.component.mjs +15 -12
  3. package/esm2022/order/index.mjs +4 -3
  4. package/esm2022/order/models/sc-i-cart-items-by-direction.mjs +22 -0
  5. package/esm2022/order/order-direction-items/sc-order-direction-items.component.mjs +39 -0
  6. package/esm2022/order/order-form/sc-order-form.component.mjs +18 -6
  7. package/esm2022/order/order-items-list/sc-order-items-list.component.mjs +4 -3
  8. package/esm2022/order/order-items-list-by-directions/sc-order-items-list-by-directions.component.mjs +75 -0
  9. package/esm2022/providers/cleanup-recaptcha-artifacts.mjs +30 -0
  10. package/esm2022/providers/index.mjs +2 -1
  11. package/esm2022/public-api.mjs +1 -2
  12. package/esm2022/samples/sc-sample.module.mjs +10 -3
  13. package/esm2022/services/index.mjs +1 -2
  14. package/feedback/feedback-form/sc-feedback-form.component.d.ts +1 -1
  15. package/fesm2022/snabcentr-client-ui.mjs +168 -415
  16. package/fesm2022/snabcentr-client-ui.mjs.map +1 -1
  17. package/order/draft/sc-draft.component.d.ts +8 -5
  18. package/order/index.d.ts +3 -2
  19. package/order/models/sc-i-cart-items-by-direction.d.ts +25 -0
  20. package/order/{new-order-items/sc-new-order-items.component.d.ts → order-direction-items/sc-order-direction-items.component.d.ts} +5 -5
  21. package/order/order-form/sc-order-form.component.d.ts +11 -2
  22. package/order/order-items-list/sc-order-items-list.component.d.ts +1 -0
  23. package/order/order-items-list-by-directions/sc-order-items-list-by-directions.component.d.ts +58 -0
  24. package/package.json +3 -2
  25. package/providers/cleanup-recaptcha-artifacts.d.ts +7 -0
  26. package/providers/index.d.ts +1 -0
  27. package/public-api.d.ts +0 -1
  28. package/release_notes.tmp +1 -1
  29. package/samples/sc-sample.module.d.ts +2 -1
  30. package/services/index.d.ts +0 -1
  31. package/styles/tailwind/tailwind.scss +2 -44
  32. package/esm2022/order/new-order-items/sc-new-order-items.component.mjs +0 -39
  33. package/esm2022/order/order-items-list-with-actions/sc-order-items-list-with-actions.component.mjs +0 -53
  34. package/esm2022/services/sc-scripts.service.mjs +0 -106
  35. package/esm2022/smart-captcha/index.mjs +0 -5
  36. package/esm2022/smart-captcha/interfaces/index.mjs +0 -6
  37. package/esm2022/smart-captcha/interfaces/sc-smart-captcha-api.mjs +0 -2
  38. package/esm2022/smart-captcha/interfaces/sc-smart-captcha-event.mjs +0 -2
  39. package/esm2022/smart-captcha/interfaces/sc-smart-captcha-language.mjs +0 -2
  40. package/esm2022/smart-captcha/interfaces/sc-smart-captcha-render-params.mjs +0 -2
  41. package/esm2022/smart-captcha/interfaces/sc-smart-captcha-settings.mjs +0 -2
  42. package/esm2022/smart-captcha/interfaces/sc-smart-captcha-window.mjs +0 -2
  43. package/esm2022/smart-captcha/sc-smart-captcha.component.mjs +0 -167
  44. package/esm2022/smart-captcha/services/index.mjs +0 -2
  45. package/esm2022/smart-captcha/services/sc-smart-captcha-loader.service.mjs +0 -87
  46. package/esm2022/smart-captcha/tokens/index.mjs +0 -3
  47. package/esm2022/smart-captcha/tokens/sc-smart-captcha-load-timeout.token.mjs +0 -8
  48. package/esm2022/smart-captcha/tokens/sc-smart-captcha-settings.token.mjs +0 -6
  49. package/order/order-items-list-with-actions/sc-order-items-list-with-actions.component.d.ts +0 -37
  50. package/services/sc-scripts.service.d.ts +0 -51
  51. package/smart-captcha/index.d.ts +0 -4
  52. package/smart-captcha/interfaces/index.d.ts +0 -5
  53. package/smart-captcha/interfaces/sc-smart-captcha-api.d.ts +0 -36
  54. package/smart-captcha/interfaces/sc-smart-captcha-event.d.ts +0 -4
  55. package/smart-captcha/interfaces/sc-smart-captcha-language.d.ts +0 -4
  56. package/smart-captcha/interfaces/sc-smart-captcha-render-params.d.ts +0 -16
  57. package/smart-captcha/interfaces/sc-smart-captcha-settings.d.ts +0 -16
  58. package/smart-captcha/interfaces/sc-smart-captcha-window.d.ts +0 -14
  59. package/smart-captcha/sc-smart-captcha.component.d.ts +0 -92
  60. package/smart-captcha/services/index.d.ts +0 -1
  61. package/smart-captcha/services/sc-smart-captcha-loader.service.d.ts +0 -50
  62. package/smart-captcha/tokens/index.d.ts +0 -2
  63. package/smart-captcha/tokens/sc-smart-captcha-load-timeout.token.d.ts +0 -5
  64. package/smart-captcha/tokens/sc-smart-captcha-settings.token.d.ts +0 -6
@@ -1,5 +1,6 @@
1
1
  import { OnInit } from '@angular/core';
2
2
  import { ScOrderDraft } from '@snabcentr/client-core';
3
+ import { ScOrderItemsByDirection } from '../models/sc-i-cart-items-by-direction';
3
4
  import * as i0 from "@angular/core";
4
5
  /**
5
6
  * Компонент страницы черновика заказа (аналог корзины для одного черновика).
@@ -22,9 +23,9 @@ export declare class ScDraftComponent implements OnInit {
22
23
  */
23
24
  readonly draft: import("@angular/core").ModelSignal<ScOrderDraft | null>;
24
25
  /**
25
- * Идентификаторы позиций черновика, выбранных для оформления заказа.
26
+ * Идентификаторы выбранных позиций.
26
27
  */
27
- protected readonly selectedItemsIds: import("@angular/core").WritableSignal<string[]>;
28
+ readonly selectedItemsIds: import("@angular/core").ModelSignal<string[]>;
28
29
  /**
29
30
  * Источник события удаления или отмены заказа.
30
31
  */
@@ -48,13 +49,15 @@ export declare class ScDraftComponent implements OnInit {
48
49
  /** @inheritDoc */
49
50
  ngOnInit(): void;
50
51
  /**
51
- * Переход к оформлению заказа из выбранных позиций.
52
+ * Переход к оформлению заказа по выбранному направлению продаж.
53
+ *
54
+ * @param direction Группа позиций по направлению продаж.
52
55
  */
53
- protected goToNewOrder(): void;
56
+ protected goToNewOrder(direction: ScOrderItemsByDirection): void;
54
57
  /**
55
58
  * Удаляет черновик и перенаправляет к списку черновиков.
56
59
  */
57
60
  protected clearDraft(): void;
58
61
  static ɵfac: i0.ɵɵFactoryDeclaration<ScDraftComponent, never>;
59
- static ɵcmp: i0.ɵɵComponentDeclaration<ScDraftComponent, "sc-draft", never, { "draft": { "alias": "draft"; "required": false; "isSignal": true; }; }, { "draft": "draftChange"; "deleteEvent": "deleteEvent"; }, never, never, true, never>;
62
+ static ɵcmp: i0.ɵɵComponentDeclaration<ScDraftComponent, "sc-draft", never, { "draft": { "alias": "draft"; "required": false; "isSignal": true; }; "selectedItemsIds": { "alias": "selectedItemsIds"; "required": false; "isSignal": true; }; }, { "draft": "draftChange"; "selectedItemsIds": "selectedItemsIdsChange"; "deleteEvent": "deleteEvent"; }, never, never, true, never>;
60
63
  }
package/order/index.d.ts CHANGED
@@ -1,11 +1,12 @@
1
1
  export * from './directives';
2
2
  export * from './models/i-new-order-form';
3
- export * from './new-order-items/sc-new-order-items.component';
3
+ export * from './models/sc-i-cart-items-by-direction';
4
+ export * from './order-direction-items/sc-order-direction-items.component';
4
5
  export * from './order-form/sc-order-form.config';
5
6
  export * from './order-form/sc-order-form.component';
6
7
  export * from './order-item/sc-order-item.component';
7
8
  export * from './order-items-list/sc-order-items-list.component';
8
- export * from './order-items-list-with-actions/sc-order-items-list-with-actions.component';
9
+ export * from './order-items-list-by-directions/sc-order-items-list-by-directions.component';
9
10
  export * from './order-items-list-by-stock/sc-order-items-list-by-stock.component';
10
11
  export * from './draft/sc-draft.component';
11
12
  export * from './sc-payment-status/sc-payment-status.component';
@@ -0,0 +1,25 @@
1
+ import { ScISalesDirection, ScOrderItem } from '@snabcentr/client-core';
2
+ /**
3
+ * Группа позиций заказа по направлению продаж.
4
+ */
5
+ export declare class ScOrderItemsByDirection {
6
+ /**
7
+ * Направление продаж или undefined для позиций без направления.
8
+ */
9
+ readonly direction: ScISalesDirection;
10
+ /**
11
+ * Список позиций заказа в данной группе.
12
+ */
13
+ readonly items: ScOrderItem[];
14
+ /**
15
+ * @param direction Направление продаж.
16
+ * @param allItems Все элементы заказа.
17
+ */
18
+ constructor(direction: ScISalesDirection, allItems: readonly ScOrderItem[]);
19
+ /**
20
+ * Получает список позиций заказа по идентификаторам.
21
+ *
22
+ * @param itemsIds Идентификаторы позиций.
23
+ */
24
+ getItemsByIds(itemsIds: string[]): ScOrderItem[];
25
+ }
@@ -1,11 +1,11 @@
1
1
  import { ScOrderItem } from '@snabcentr/client-core';
2
2
  import * as i0 from "@angular/core";
3
3
  /**
4
- * Список товаров оформляемого заказа с выбором позиций.
4
+ * Список товаров заказа по направлению продаж с выбором позиций для оформления.
5
5
  */
6
- export declare class ScNewOrderItemsComponent {
6
+ export declare class ScOrderDirectionItemsComponent {
7
7
  /**
8
- * Товары заказа.
8
+ * Товары направления.
9
9
  */
10
10
  readonly items: import("@angular/core").InputSignal<ScOrderItem[]>;
11
11
  /**
@@ -24,6 +24,6 @@ export declare class ScNewOrderItemsComponent {
24
24
  * Изменение выбора позиций для оформления.
25
25
  */
26
26
  readonly selectedItemsIdsChange: import("@angular/core").OutputEmitterRef<string[]>;
27
- static ɵfac: i0.ɵɵFactoryDeclaration<ScNewOrderItemsComponent, never>;
28
- static ɵcmp: i0.ɵɵComponentDeclaration<ScNewOrderItemsComponent, "sc-new-order-items", never, { "items": { "alias": "items"; "required": true; "isSignal": true; }; "editable": { "alias": "editable"; "required": false; "isSignal": true; }; "selectable": { "alias": "selectable"; "required": false; "isSignal": true; }; "orderProcessingAcceptanceTime": { "alias": "orderProcessingAcceptanceTime"; "required": false; "isSignal": true; }; }, { "selectedItemsIdsChange": "selectedItemsIdsChange"; }, never, ["[footerActions]"], true, never>;
27
+ static ɵfac: i0.ɵɵFactoryDeclaration<ScOrderDirectionItemsComponent, never>;
28
+ static ɵcmp: i0.ɵɵComponentDeclaration<ScOrderDirectionItemsComponent, "sc-order-direction-items", never, { "items": { "alias": "items"; "required": true; "isSignal": true; }; "editable": { "alias": "editable"; "required": false; "isSignal": true; }; "selectable": { "alias": "selectable"; "required": false; "isSignal": true; }; "orderProcessingAcceptanceTime": { "alias": "orderProcessingAcceptanceTime"; "required": false; "isSignal": true; }; }, { "selectedItemsIdsChange": "selectedItemsIdsChange"; }, never, ["[footerActions]"], true, never>;
29
29
  }
@@ -15,10 +15,19 @@ type SelectType = ScIReferencesTypes<ScPaymentType, typeof ScPaymentType> | ScCo
15
15
  * Форма оформления заказа.
16
16
  */
17
17
  export declare class ScOrderFormComponent implements OnInit {
18
+ /**
19
+ * Идентификатор направления продаж заказа.
20
+ */
21
+ readonly directionId: import("@angular/core").InputSignal<number>;
18
22
  /**
19
23
  * Требовать подтверждённые контактные данные для оформления. Для черновика — `false`.
20
24
  */
21
25
  readonly enforceApprovedContacts: import("@angular/core").InputSignal<boolean>;
26
+ /**
27
+ * Сохранять и восстанавливать черновые данные формы по направлению (метаданные). Для черновика — `false`.
28
+ * Работает только если предоставлен токен {@link SC_ORDER_FORM_CONFIG}.
29
+ */
30
+ readonly persistMetadata: import("@angular/core").InputSignal<boolean>;
22
31
  /**
23
32
  * Событие отправки валидной формы оформления. Полезная нагрузка — сырые значения формы.
24
33
  */
@@ -226,7 +235,7 @@ export declare class ScOrderFormComponent implements OnInit {
226
235
  */
227
236
  private triggerUnconfirmedWarning;
228
237
  /**
229
- * Восстанавливает черновые данные формы из метаданных и инициализирует их сохранение, если предоставлен токен {@link SC_ORDER_FORM_CONFIG}.
238
+ * Восстанавливает черновые данные формы из метаданных и инициализирует их сохранение.
230
239
  */
231
240
  private initMetadata;
232
241
  /**
@@ -269,6 +278,6 @@ export declare class ScOrderFormComponent implements OnInit {
269
278
  */
270
279
  private onUploadFile;
271
280
  static ɵfac: i0.ɵɵFactoryDeclaration<ScOrderFormComponent, never>;
272
- static ɵcmp: i0.ɵɵComponentDeclaration<ScOrderFormComponent, "sc-order-form", never, { "enforceApprovedContacts": { "alias": "enforceApprovedContacts"; "required": false; "isSignal": true; }; }, { "orderSubmit": "orderSubmit"; }, never, never, true, never>;
281
+ static ɵcmp: i0.ɵɵComponentDeclaration<ScOrderFormComponent, "sc-order-form", never, { "directionId": { "alias": "directionId"; "required": true; "isSignal": true; }; "enforceApprovedContacts": { "alias": "enforceApprovedContacts"; "required": false; "isSignal": true; }; "persistMetadata": { "alias": "persistMetadata"; "required": false; "isSignal": true; }; }, { "orderSubmit": "orderSubmit"; }, never, never, true, never>;
273
282
  }
274
283
  export {};
@@ -5,6 +5,7 @@ import { ScOrderOptions } from '../directives/sc-order-options';
5
5
  import * as i0 from "@angular/core";
6
6
  /**
7
7
  * Компонент списка товаров корзины, заказа или черновика.
8
+ * Позиции разбиты.
8
9
  */
9
10
  export declare class ScOrderItemsListComponent {
10
11
  /**
@@ -0,0 +1,58 @@
1
+ import { ScOrderItem } from '@snabcentr/client-core';
2
+ import { ScOrderItemsByDirection } from '../models/sc-i-cart-items-by-direction';
3
+ import * as i0 from "@angular/core";
4
+ export declare class ScOrderItemsListByDirectionsComponent {
5
+ /**
6
+ * Внутренний сигнал списка элементов корзины (товаров).
7
+ */
8
+ readonly items: import("@angular/core").InputSignal<ScOrderItem[]>;
9
+ /**
10
+ * Включить выбор позиций чекбоксами.
11
+ */
12
+ readonly selectable: import("@angular/core").InputSignal<boolean>;
13
+ /**
14
+ * Включить редактирование позиций.
15
+ */
16
+ readonly editable: import("@angular/core").InputSignal<boolean>;
17
+ /**
18
+ * Включить отображение кнопки продолжения.
19
+ */
20
+ readonly showContinueButton: import("@angular/core").InputSignal<boolean>;
21
+ /**
22
+ * Текст кнопки продолжения.
23
+ */
24
+ readonly continueButtonText: import("@angular/core").InputSignal<{
25
+ title: string;
26
+ iconStart: string;
27
+ }>;
28
+ /**
29
+ * Событие клика на кнопку продолжения.
30
+ */
31
+ readonly continueClick: import("@angular/core").OutputEmitterRef<ScOrderItemsByDirection>;
32
+ /**
33
+ * Список направлений продаж из справочника.
34
+ */
35
+ private readonly directions;
36
+ /**
37
+ * Позиции корзины, сгруппированные по направлениям продаж.
38
+ * Если передан cartDirections, используется он, иначе группировка выполняется автоматически.
39
+ */
40
+ protected readonly itemsByDirections: import("@angular/core").Signal<ScOrderItemsByDirection[]>;
41
+ /**
42
+ * Позиции корзины, которые больше не предоставляются.
43
+ */
44
+ protected readonly nullItems: import("@angular/core").Signal<ScOrderItem[]>;
45
+ /**
46
+ * Выходные данные при изменении выбора позиций.
47
+ */
48
+ readonly selectedItemsIds: import("@angular/core").ModelSignal<string[]>;
49
+ /**
50
+ * Обработчик изменения выбора позиций.
51
+ *
52
+ * @param itemsIds Идентификаторы выбранных позиций.
53
+ * @param direction Направление продаж.
54
+ */
55
+ protected selectedItemsHandler(itemsIds: string[], direction: ScOrderItemsByDirection): void;
56
+ static ɵfac: i0.ɵɵFactoryDeclaration<ScOrderItemsListByDirectionsComponent, never>;
57
+ static ɵcmp: i0.ɵɵComponentDeclaration<ScOrderItemsListByDirectionsComponent, "sc-order-items-list-by-directions", never, { "items": { "alias": "items"; "required": true; "isSignal": true; }; "selectable": { "alias": "selectable"; "required": false; "isSignal": true; }; "editable": { "alias": "editable"; "required": false; "isSignal": true; }; "showContinueButton": { "alias": "showContinueButton"; "required": false; "isSignal": true; }; "continueButtonText": { "alias": "continueButtonText"; "required": false; "isSignal": true; }; "selectedItemsIds": { "alias": "selectedItemsIds"; "required": false; "isSignal": true; }; }, { "continueClick": "continueClick"; "selectedItemsIds": "selectedItemsIdsChange"; }, never, ["[footerActions]"], true, never>;
58
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@snabcentr/client-ui",
3
- "version": "4.14.8",
3
+ "version": "4.14.20",
4
4
  "author": "Snabcentr Ltd.",
5
5
  "repository": "https://gitlab.snabcentr.met/web/angular/snabcentr-client-ui-lib",
6
6
  "license": "Commercial",
@@ -16,7 +16,7 @@
16
16
  "@maskito/core": "^3.11.1",
17
17
  "@ng-web-apis/intersection-observer": "^4.14.0",
18
18
  "@ng-web-apis/common": "^4.14.0",
19
- "@snabcentr/client-core": "^3.23.4",
19
+ "@snabcentr/client-core": "^3.21.4",
20
20
  "@taiga-ui/addon-charts": "^4.66.0",
21
21
  "@taiga-ui/addon-commerce": "^4.66.0",
22
22
  "@taiga-ui/cdk": "^4.66.0",
@@ -31,6 +31,7 @@
31
31
  "@taiga-ui/experimental": "^4.66.0",
32
32
  "@taiga-ui/styles": "^4.66.0",
33
33
  "@tailwindcss/container-queries": "^0.1.1",
34
+ "ng-recaptcha-2": "^14.0.0",
34
35
  "angular8-yandex-maps": "^18.2.0",
35
36
  "date-fns": "^4.1.0",
36
37
  "libphonenumber-js": "^1.12.7",
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Освобождает ресурсы reCAPTCHA и удаляет осиротевшие iframe после смены маршрута.
3
+ *
4
+ * @param documentReference Объект документа.
5
+ * @param windowReference Объект окна браузера.
6
+ */
7
+ export declare function cleanupRecaptchaArtifacts(documentReference: Document, windowReference: Window): void;
@@ -14,3 +14,4 @@ export * from './sc-notify-when-in-stock-required-fields';
14
14
  export * from './sc-banner-duration';
15
15
  export * from './sc-debounce-time-default';
16
16
  export * from './sc-hidden-print-elements.token';
17
+ export * from './cleanup-recaptcha-artifacts';
package/public-api.d.ts CHANGED
@@ -29,7 +29,6 @@ export * from './providers';
29
29
  export * from './feedback';
30
30
  export * from './qrcode';
31
31
  export * from './share';
32
- export * from './smart-captcha';
33
32
  export * from './user';
34
33
  export * from './validators';
35
34
  export * from './verification';
package/release_notes.tmp CHANGED
@@ -1,4 +1,4 @@
1
- ## 4.14.8 (2026-10-09)
1
+ ## 4.14.20 (2026-10-09)
2
2
 
3
3
  No changes.
4
4
 
@@ -8,11 +8,12 @@ import * as i6 from "../form-fields/form-fields.module";
8
8
  import * as i7 from "@taiga-ui/legacy";
9
9
  import * as i8 from "@taiga-ui/cdk/directives/item";
10
10
  import * as i9 from "@taiga-ui/cdk";
11
+ import * as i10 from "ng-recaptcha-2";
11
12
  /**
12
13
  * Модуль представления образцов товара.
13
14
  */
14
15
  export declare class ScPreviewSampleModule {
15
16
  static ɵfac: i0.ɵɵFactoryDeclaration<ScPreviewSampleModule, never>;
16
- static ɵmod: i0.ɵɵNgModuleDeclaration<ScPreviewSampleModule, [typeof i1.ScPreviewSampleComponent], [typeof i2.CommonModule, typeof i3.ReactiveFormsModule, typeof i4.TuiError, typeof i5.TuiFieldErrorPipe, typeof i6.ScFormFieldsModule, typeof i7.TuiInputModule, typeof i7.TuiInputPhoneModule, typeof i8.TuiItem, typeof i5.TuiCarouselComponent, typeof i5.TuiCarouselDirective, typeof i5.TuiCarouselAutoscroll, typeof i5.TuiCarouselButtons, typeof i5.TuiCarouselScroll, typeof i5.TuiAvatar, typeof i9.TuiHovered, typeof i4.TuiButton, typeof i5.TuiButtonLoading, typeof i4.TuiLabel], [typeof i1.ScPreviewSampleComponent]>;
17
+ static ɵmod: i0.ɵɵNgModuleDeclaration<ScPreviewSampleModule, [typeof i1.ScPreviewSampleComponent], [typeof i2.CommonModule, typeof i3.ReactiveFormsModule, typeof i4.TuiError, typeof i5.TuiFieldErrorPipe, typeof i6.ScFormFieldsModule, typeof i7.TuiInputModule, typeof i7.TuiInputPhoneModule, typeof i8.TuiItem, typeof i5.TuiCarouselComponent, typeof i5.TuiCarouselDirective, typeof i5.TuiCarouselAutoscroll, typeof i5.TuiCarouselButtons, typeof i5.TuiCarouselScroll, typeof i5.TuiAvatar, typeof i9.TuiHovered, typeof i4.TuiButton, typeof i5.TuiButtonLoading, typeof i4.TuiLabel, typeof i10.RecaptchaFormsModule, typeof i10.RecaptchaModule], [typeof i1.ScPreviewSampleComponent]>;
17
18
  static ɵinj: i0.ɵɵInjectorDeclaration<ScPreviewSampleModule>;
18
19
  }
@@ -1,3 +1,2 @@
1
1
  export * from './sc-help-notification.service';
2
2
  export * from './print.service';
3
- export * from './sc-scripts.service';
@@ -554,40 +554,6 @@ video {
554
554
  display: none;
555
555
  }
556
556
 
557
- .container {
558
- width: 100%;
559
- }
560
-
561
- @media (min-width: 640px) {
562
- .container {
563
- max-width: 640px;
564
- }
565
- }
566
-
567
- @media (min-width: 768px) {
568
- .container {
569
- max-width: 768px;
570
- }
571
- }
572
-
573
- @media (min-width: 1024px) {
574
- .container {
575
- max-width: 1024px;
576
- }
577
- }
578
-
579
- @media (min-width: 1280px) {
580
- .container {
581
- max-width: 1280px;
582
- }
583
- }
584
-
585
- @media (min-width: 1536px) {
586
- .container {
587
- max-width: 1536px;
588
- }
589
- }
590
-
591
557
  .pointer-events-none {
592
558
  pointer-events: none;
593
559
  }
@@ -959,18 +925,14 @@ video {
959
925
  max-height: 0px !important;
960
926
  }
961
927
 
962
- .max-h-\[7\.5rem\] {
963
- max-height: 7.5rem;
928
+ .max-h-20 {
929
+ max-height: 5rem;
964
930
  }
965
931
 
966
932
  .min-h-8 {
967
933
  min-height: 2rem;
968
934
  }
969
935
 
970
- .min-h-\[7\.375rem\] {
971
- min-height: 7.375rem;
972
- }
973
-
974
936
  .\!w-auto {
975
937
  width: auto !important;
976
938
  }
@@ -1988,10 +1950,6 @@ video {
1988
1950
  flex-direction: row;
1989
1951
  }
1990
1952
 
1991
- .sm\:flex-wrap {
1992
- flex-wrap: wrap;
1993
- }
1994
-
1995
1953
  .sm\:flex-wrap-reverse {
1996
1954
  flex-wrap: wrap-reverse;
1997
1955
  }
@@ -1,39 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';
2
- import { RouterLink } from '@angular/router';
3
- import { TuiLink } from '@taiga-ui/core';
4
- import { ScOrderItemsListWithActionsComponent } from '../order-items-list-with-actions/sc-order-items-list-with-actions.component';
5
- import * as i0 from "@angular/core";
6
- /**
7
- * Список товаров оформляемого заказа с выбором позиций.
8
- */
9
- export class ScNewOrderItemsComponent {
10
- constructor() {
11
- /**
12
- * Товары заказа.
13
- */
14
- this.items = input.required();
15
- /**
16
- * Разрешить редактирование позиций (количество, удаление).
17
- */
18
- this.editable = input(false);
19
- /**
20
- * Включить выбор позиций чекбоксами.
21
- */
22
- this.selectable = input(true);
23
- /**
24
- * Время обработки и принятия заказов (из настроек окружения приложения).
25
- */
26
- this.orderProcessingAcceptanceTime = input('');
27
- /**
28
- * Изменение выбора позиций для оформления.
29
- */
30
- this.selectedItemsIdsChange = output();
31
- }
32
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScNewOrderItemsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
33
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.14", type: ScNewOrderItemsComponent, isStandalone: true, selector: "sc-new-order-items", inputs: { items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: true, transformFunction: null }, editable: { classPropertyName: "editable", publicName: "editable", isSignal: true, isRequired: false, transformFunction: null }, selectable: { classPropertyName: "selectable", publicName: "selectable", isSignal: true, isRequired: false, transformFunction: null }, orderProcessingAcceptanceTime: { classPropertyName: "orderProcessingAcceptanceTime", publicName: "orderProcessingAcceptanceTime", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selectedItemsIdsChange: "selectedItemsIdsChange" }, ngImport: i0, template: "<div class=\"flex flex-col gap-5\">\n <ul class=\"ml-4 list-disc text-tui-success-fill\">\n <li>\u0417\u0430\u044F\u0432\u043A\u0438 \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u044E\u0442\u0441\u044F \u043D\u0435 \u043F\u043E\u0437\u0434\u043D\u0435\u0435 {{ orderProcessingAcceptanceTime() }} \u043F\u043B\u0430\u043D\u0438\u0440\u0443\u0435\u043C\u043E\u0433\u043E \u0434\u043D\u044F \u043F\u043E\u0441\u0442\u0430\u0432\u043A\u0438.</li>\n <li>\u0417\u0430\u043A\u0430\u0437\u044B \u0441 \u0434\u043E\u0441\u0442\u0430\u0432\u043A\u043E\u0439 \u043D\u0430 \u043F\u043E\u043D\u0435\u0434\u0435\u043B\u044C\u043D\u0438\u043A \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u044E\u0442\u0441\u044F \u0434\u043E {{ orderProcessingAcceptanceTime() }} \u043F\u044F\u0442\u043D\u0438\u0446\u044B.</li>\n <li>\u0417\u0430\u043A\u0430\u0437\u044B, \u0441\u043E\u0437\u0434\u0430\u043D\u043D\u044B\u0435 \u043F\u043E\u0437\u0434\u043D\u0435\u0435 {{ orderProcessingAcceptanceTime() }} \u043F\u044F\u0442\u043D\u0438\u0446\u044B \u0438\u043B\u0438 \u0432 \u0441\u0443\u0431\u0431\u043E\u0442\u0443/\u0432\u043E\u0441\u043A\u0440\u0435\u0441\u0435\u043D\u044C\u0435 \u0431\u0443\u0434\u0443\u0442 \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u0430\u043D\u044B \u0432 \u0431\u0443\u0434\u043D\u0438\u0435 \u0434\u043D\u0438.</li>\n <li>\n \u0423\u043F\u0440\u0430\u0432\u043B\u044F\u0442\u044C \u0441\u043F\u0438\u0441\u043A\u043E\u043C \u043A\u043E\u043D\u0442\u0440\u0430\u0433\u0435\u043D\u0442\u043E\u0432 \u0432\u044B \u043C\u043E\u0436\u0435\u0442\u0435 \u0432\n <a\n tuiLink\n routerLink=\"/profile\"\n >\n \u043B\u0438\u0447\u043D\u043E\u043C \u043A\u0430\u0431\u0438\u043D\u0435\u0442\u0435\n </a>\n .\n </li>\n </ul>\n\n <div class=\"sub-title\">\u0421\u043E\u0441\u0442\u0430\u0432 \u0437\u0430\u043A\u0430\u0437\u0430</div>\n\n <sc-order-items-list-with-actions\n [items]=\"items()\"\n [editable]=\"editable()\"\n [selectable]=\"selectable()\"\n (selectedItemsIdsChange)=\"selectedItemsIdsChange.emit($event)\"\n >\n <ng-content\n select=\"[footerActions]\"\n ngProjectAs=\"[footerActions]\"\n />\n </sc-order-items-list-with-actions>\n</div>\n", dependencies: [{ kind: "component", type: ScOrderItemsListWithActionsComponent, selector: "sc-order-items-list-with-actions", inputs: ["items", "selectable", "editable", "selectedItemsIds"], outputs: ["selectedItemsIdsChange"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: TuiLink, selector: "a[tuiLink], button[tuiLink]", inputs: ["pseudo"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
34
- }
35
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScNewOrderItemsComponent, decorators: [{
36
- type: Component,
37
- args: [{ standalone: true, selector: 'sc-new-order-items', imports: [ScOrderItemsListWithActionsComponent, RouterLink, TuiLink], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"flex flex-col gap-5\">\n <ul class=\"ml-4 list-disc text-tui-success-fill\">\n <li>\u0417\u0430\u044F\u0432\u043A\u0438 \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u044E\u0442\u0441\u044F \u043D\u0435 \u043F\u043E\u0437\u0434\u043D\u0435\u0435 {{ orderProcessingAcceptanceTime() }} \u043F\u043B\u0430\u043D\u0438\u0440\u0443\u0435\u043C\u043E\u0433\u043E \u0434\u043D\u044F \u043F\u043E\u0441\u0442\u0430\u0432\u043A\u0438.</li>\n <li>\u0417\u0430\u043A\u0430\u0437\u044B \u0441 \u0434\u043E\u0441\u0442\u0430\u0432\u043A\u043E\u0439 \u043D\u0430 \u043F\u043E\u043D\u0435\u0434\u0435\u043B\u044C\u043D\u0438\u043A \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u044E\u0442\u0441\u044F \u0434\u043E {{ orderProcessingAcceptanceTime() }} \u043F\u044F\u0442\u043D\u0438\u0446\u044B.</li>\n <li>\u0417\u0430\u043A\u0430\u0437\u044B, \u0441\u043E\u0437\u0434\u0430\u043D\u043D\u044B\u0435 \u043F\u043E\u0437\u0434\u043D\u0435\u0435 {{ orderProcessingAcceptanceTime() }} \u043F\u044F\u0442\u043D\u0438\u0446\u044B \u0438\u043B\u0438 \u0432 \u0441\u0443\u0431\u0431\u043E\u0442\u0443/\u0432\u043E\u0441\u043A\u0440\u0435\u0441\u0435\u043D\u044C\u0435 \u0431\u0443\u0434\u0443\u0442 \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u0430\u043D\u044B \u0432 \u0431\u0443\u0434\u043D\u0438\u0435 \u0434\u043D\u0438.</li>\n <li>\n \u0423\u043F\u0440\u0430\u0432\u043B\u044F\u0442\u044C \u0441\u043F\u0438\u0441\u043A\u043E\u043C \u043A\u043E\u043D\u0442\u0440\u0430\u0433\u0435\u043D\u0442\u043E\u0432 \u0432\u044B \u043C\u043E\u0436\u0435\u0442\u0435 \u0432\n <a\n tuiLink\n routerLink=\"/profile\"\n >\n \u043B\u0438\u0447\u043D\u043E\u043C \u043A\u0430\u0431\u0438\u043D\u0435\u0442\u0435\n </a>\n .\n </li>\n </ul>\n\n <div class=\"sub-title\">\u0421\u043E\u0441\u0442\u0430\u0432 \u0437\u0430\u043A\u0430\u0437\u0430</div>\n\n <sc-order-items-list-with-actions\n [items]=\"items()\"\n [editable]=\"editable()\"\n [selectable]=\"selectable()\"\n (selectedItemsIdsChange)=\"selectedItemsIdsChange.emit($event)\"\n >\n <ng-content\n select=\"[footerActions]\"\n ngProjectAs=\"[footerActions]\"\n />\n </sc-order-items-list-with-actions>\n</div>\n" }]
38
- }] });
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtbmV3LW9yZGVyLWl0ZW1zLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9vcmRlci9uZXctb3JkZXItaXRlbXMvc2MtbmV3LW9yZGVyLWl0ZW1zLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9vcmRlci9uZXctb3JkZXItaXRlbXMvc2MtbmV3LW9yZGVyLWl0ZW1zLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFN0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXpDLE9BQU8sRUFBRSxvQ0FBb0MsRUFBRSxNQUFNLDZFQUE2RSxDQUFDOztBQUVuSTs7R0FFRztBQVFILE1BQU0sT0FBTyx3QkFBd0I7SUFQckM7UUFRSTs7V0FFRztRQUNhLFVBQUssR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFpQixDQUFDO1FBRXhEOztXQUVHO1FBQ2EsYUFBUSxHQUFHLEtBQUssQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUVqRDs7V0FFRztRQUNhLGVBQVUsR0FBRyxLQUFLLENBQVUsSUFBSSxDQUFDLENBQUM7UUFFbEQ7O1dBRUc7UUFDYSxrQ0FBNkIsR0FBRyxLQUFLLENBQVMsRUFBRSxDQUFDLENBQUM7UUFFbEU7O1dBRUc7UUFDYSwyQkFBc0IsR0FBRyxNQUFNLEVBQVksQ0FBQztLQUMvRDsrR0F6Qlksd0JBQXdCO21HQUF4Qix3QkFBd0Isd3RCQ2pCckMsc3pFQStCQSw0Q0RqQmMsb0NBQW9DLG1MQUFFLFVBQVUsb09BQUUsT0FBTzs7NEZBRzFELHdCQUF3QjtrQkFQcEMsU0FBUztpQ0FDTSxJQUFJLFlBQ04sb0JBQW9CLFdBRXJCLENBQUMsb0NBQW9DLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQyxtQkFDbkQsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGlucHV0LCBvdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlckxpbmsgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgU2NPcmRlckl0ZW0gfSBmcm9tICdAc25hYmNlbnRyL2NsaWVudC1jb3JlJztcbmltcG9ydCB7IFR1aUxpbmsgfSBmcm9tICdAdGFpZ2EtdWkvY29yZSc7XG5cbmltcG9ydCB7IFNjT3JkZXJJdGVtc0xpc3RXaXRoQWN0aW9uc0NvbXBvbmVudCB9IGZyb20gJy4uL29yZGVyLWl0ZW1zLWxpc3Qtd2l0aC1hY3Rpb25zL3NjLW9yZGVyLWl0ZW1zLWxpc3Qtd2l0aC1hY3Rpb25zLmNvbXBvbmVudCc7XG5cbi8qKlxuICog0KHQv9C40YHQvtC6INGC0L7QstCw0YDQvtCyINC+0YTQvtGA0LzQu9GP0LXQvNC+0LPQviDQt9Cw0LrQsNC30LAg0YEg0LLRi9Cx0L7RgNC+0Lwg0L/QvtC30LjRhtC40LkuXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6ICdzYy1uZXctb3JkZXItaXRlbXMnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9zYy1uZXctb3JkZXItaXRlbXMuY29tcG9uZW50Lmh0bWwnLFxuICAgIGltcG9ydHM6IFtTY09yZGVySXRlbXNMaXN0V2l0aEFjdGlvbnNDb21wb25lbnQsIFJvdXRlckxpbmssIFR1aUxpbmtdLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBTY05ld09yZGVySXRlbXNDb21wb25lbnQge1xuICAgIC8qKlxuICAgICAqINCi0L7QstCw0YDRiyDQt9Cw0LrQsNC30LAuXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IGl0ZW1zID0gaW5wdXQucmVxdWlyZWQ8U2NPcmRlckl0ZW1bXT4oKTtcblxuICAgIC8qKlxuICAgICAqINCg0LDQt9GA0LXRiNC40YLRjCDRgNC10LTQsNC60YLQuNGA0L7QstCw0L3QuNC1INC/0L7Qt9C40YbQuNC5ICjQutC+0LvQuNGH0LXRgdGC0LLQviwg0YPQtNCw0LvQtdC90LjQtSkuXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IGVkaXRhYmxlID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gICAgLyoqXG4gICAgICog0JLQutC70Y7Rh9C40YLRjCDQstGL0LHQvtGAINC/0L7Qt9C40YbQuNC5INGH0LXQutCx0L7QutGB0LDQvNC4LlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBzZWxlY3RhYmxlID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XG5cbiAgICAvKipcbiAgICAgKiDQktGA0LXQvNGPINC+0LHRgNCw0LHQvtGC0LrQuCDQuCDQv9GA0LjQvdGP0YLQuNGPINC30LDQutCw0LfQvtCyICjQuNC3INC90LDRgdGC0YDQvtC10Log0L7QutGA0YPQttC10L3QuNGPINC/0YDQuNC70L7QttC10L3QuNGPKS5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgb3JkZXJQcm9jZXNzaW5nQWNjZXB0YW5jZVRpbWUgPSBpbnB1dDxzdHJpbmc+KCcnKTtcblxuICAgIC8qKlxuICAgICAqINCY0LfQvNC10L3QtdC90LjQtSDQstGL0LHQvtGA0LAg0L/QvtC30LjRhtC40Lkg0LTQu9GPINC+0YTQvtGA0LzQu9C10L3QuNGPLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBzZWxlY3RlZEl0ZW1zSWRzQ2hhbmdlID0gb3V0cHV0PHN0cmluZ1tdPigpO1xufVxuIiwiPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgZ2FwLTVcIj5cbiAgICA8dWwgY2xhc3M9XCJtbC00IGxpc3QtZGlzYyB0ZXh0LXR1aS1zdWNjZXNzLWZpbGxcIj5cbiAgICAgICAgPGxpPtCX0LDRj9Cy0LrQuCDQv9GA0LjQvdC40LzQsNGO0YLRgdGPINC90LUg0L/QvtC30LTQvdC10LUge3sgb3JkZXJQcm9jZXNzaW5nQWNjZXB0YW5jZVRpbWUoKSB9fSDQv9C70LDQvdC40YDRg9C10LzQvtCz0L4g0LTQvdGPINC/0L7RgdGC0LDQstC60LguPC9saT5cbiAgICAgICAgPGxpPtCX0LDQutCw0LfRiyDRgSDQtNC+0YHRgtCw0LLQutC+0Lkg0L3QsCDQv9C+0L3QtdC00LXQu9GM0L3QuNC6INC/0YDQuNC90LjQvNCw0Y7RgtGB0Y8g0LTQviB7eyBvcmRlclByb2Nlc3NpbmdBY2NlcHRhbmNlVGltZSgpIH19INC/0Y/RgtC90LjRhtGLLjwvbGk+XG4gICAgICAgIDxsaT7Ql9Cw0LrQsNC30YssINGB0L7Qt9C00LDQvdC90YvQtSDQv9C+0LfQtNC90LXQtSB7eyBvcmRlclByb2Nlc3NpbmdBY2NlcHRhbmNlVGltZSgpIH19INC/0Y/RgtC90LjRhtGLINC40LvQuCDQsiDRgdGD0LHQsdC+0YLRgy/QstC+0YHQutGA0LXRgdC10L3RjNC1INCx0YPQtNGD0YIg0L7QsdGA0LDQsdC+0YLQsNC90Ysg0LIg0LHRg9C00L3QuNC1INC00L3QuC48L2xpPlxuICAgICAgICA8bGk+XG4gICAgICAgICAgICDQo9C/0YDQsNCy0LvRj9GC0Ywg0YHQv9C40YHQutC+0Lwg0LrQvtC90YLRgNCw0LPQtdC90YLQvtCyINCy0Ysg0LzQvtC20LXRgtC1INCyXG4gICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgIHR1aUxpbmtcbiAgICAgICAgICAgICAgICByb3V0ZXJMaW5rPVwiL3Byb2ZpbGVcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgINC70LjRh9C90L7QvCDQutCw0LHQuNC90LXRgtC1XG4gICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAuXG4gICAgICAgIDwvbGk+XG4gICAgPC91bD5cblxuICAgIDxkaXYgY2xhc3M9XCJzdWItdGl0bGVcIj7QodC+0YHRgtCw0LIg0LfQsNC60LDQt9CwPC9kaXY+XG5cbiAgICA8c2Mtb3JkZXItaXRlbXMtbGlzdC13aXRoLWFjdGlvbnNcbiAgICAgICAgW2l0ZW1zXT1cIml0ZW1zKClcIlxuICAgICAgICBbZWRpdGFibGVdPVwiZWRpdGFibGUoKVwiXG4gICAgICAgIFtzZWxlY3RhYmxlXT1cInNlbGVjdGFibGUoKVwiXG4gICAgICAgIChzZWxlY3RlZEl0ZW1zSWRzQ2hhbmdlKT1cInNlbGVjdGVkSXRlbXNJZHNDaGFuZ2UuZW1pdCgkZXZlbnQpXCJcbiAgICA+XG4gICAgICAgIDxuZy1jb250ZW50XG4gICAgICAgICAgICBzZWxlY3Q9XCJbZm9vdGVyQWN0aW9uc11cIlxuICAgICAgICAgICAgbmdQcm9qZWN0QXM9XCJbZm9vdGVyQWN0aW9uc11cIlxuICAgICAgICAvPlxuICAgIDwvc2Mtb3JkZXItaXRlbXMtbGlzdC13aXRoLWFjdGlvbnM+XG48L2Rpdj5cbiJdfQ==
@@ -1,53 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, computed, effect, input, model } from '@angular/core';
2
- import { ScOrderItemsListComponent } from '../order-items-list/sc-order-items-list.component';
3
- import * as i0 from "@angular/core";
4
- /**
5
- * Список позиций заказа с действиями и блоком позиций, которые больше не предоставляются.
6
- */
7
- export class ScOrderItemsListWithActionsComponent {
8
- /**
9
- * Инициализирует экземпляр класса {@link ScOrderItemsListWithActionsComponent}.
10
- */
11
- constructor() {
12
- /**
13
- * Товары заказа.
14
- */
15
- this.items = input.required();
16
- /**
17
- * Включить выбор позиций чекбоксами.
18
- */
19
- this.selectable = input(true);
20
- /**
21
- * Включить редактирование позиций.
22
- */
23
- this.editable = input(false);
24
- /**
25
- * Позиции, доступные для заказа.
26
- */
27
- this.availableItems = computed(() => this.items().filter((item) => !item.product.isNull && !item.product.isHidden));
28
- /**
29
- * Позиции корзины, которые больше не предоставляются.
30
- */
31
- this.nullItems = computed(() => this.items().filter((item) => item.product.isNull || item.product.isHidden));
32
- /**
33
- * Идентификаторы выбранных позиций.
34
- */
35
- this.selectedItemsIds = model([]);
36
- // Оставляет в выборе только доступные позиции: без них список выбора не отрисовывается и выбор не сбрасывает.
37
- effect(() => {
38
- const availableIds = new Set(this.availableItems().map((item) => item.id));
39
- const selectedItemsIds = this.selectedItemsIds();
40
- const actualIds = selectedItemsIds.filter((id) => availableIds.has(id));
41
- if (actualIds.length !== selectedItemsIds.length) {
42
- this.selectedItemsIds.set(actualIds);
43
- }
44
- }, { allowSignalWrites: true });
45
- }
46
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScOrderItemsListWithActionsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
47
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ScOrderItemsListWithActionsComponent, isStandalone: true, selector: "sc-order-items-list-with-actions", inputs: { items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: true, transformFunction: null }, selectable: { classPropertyName: "selectable", publicName: "selectable", isSignal: true, isRequired: false, transformFunction: null }, editable: { classPropertyName: "editable", publicName: "editable", isSignal: true, isRequired: false, transformFunction: null }, selectedItemsIds: { classPropertyName: "selectedItemsIds", publicName: "selectedItemsIds", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selectedItemsIds: "selectedItemsIdsChange" }, ngImport: i0, template: "<div class=\"flex flex-col gap-5\">\n <div class=\"flex flex-col gap-2.5\">\n @if (availableItems().length) {\n <sc-order-items-list\n [items]=\"availableItems()\"\n [selectable]=\"selectable()\"\n [editable]=\"editable()\"\n (selectedItemsIdsChange)=\"selectedItemsIds.set($event)\"\n />\n }\n\n <!-- \u0424\u0443\u0442\u0435\u0440 \u0441\u043F\u0438\u0441\u043A\u0430 \u0442\u043E\u0432\u0430\u0440\u043E\u0432. -->\n <div class=\"flex flex-col items-center sm:flex-row sm:items-start sm:flex-wrap-reverse grow gap-x-2.5 gap-y-4\">\n <ng-content select=\"[footerActions]\" />\n </div>\n </div>\n\n @if (nullItems().length) {\n <div class=\"flex flex-col gap-2.5\">\n <div class=\"text-base font-bold\">\u0422\u043E\u0432\u0430\u0440\u044B \u0438 \u0443\u0441\u043B\u0443\u0433\u0438, \u043A\u043E\u0442\u043E\u0440\u044B\u0435 \u0431\u043E\u043B\u044C\u0448\u0435 \u043D\u0435 \u043F\u0440\u0435\u0434\u043E\u0441\u0442\u0430\u0432\u043B\u044F\u044E\u0442\u0441\u044F.</div>\n\n <sc-order-items-list\n [items]=\"nullItems()\"\n [selectable]=\"false\"\n [editable]=\"editable()\"\n />\n </div>\n }\n</div>\n", dependencies: [{ kind: "component", type: ScOrderItemsListComponent, selector: "sc-order-items-list", inputs: ["selectable", "editable", "items"], outputs: ["selectedItemsIdsChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
48
- }
49
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScOrderItemsListWithActionsComponent, decorators: [{
50
- type: Component,
51
- args: [{ standalone: true, selector: 'sc-order-items-list-with-actions', imports: [ScOrderItemsListComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"flex flex-col gap-5\">\n <div class=\"flex flex-col gap-2.5\">\n @if (availableItems().length) {\n <sc-order-items-list\n [items]=\"availableItems()\"\n [selectable]=\"selectable()\"\n [editable]=\"editable()\"\n (selectedItemsIdsChange)=\"selectedItemsIds.set($event)\"\n />\n }\n\n <!-- \u0424\u0443\u0442\u0435\u0440 \u0441\u043F\u0438\u0441\u043A\u0430 \u0442\u043E\u0432\u0430\u0440\u043E\u0432. -->\n <div class=\"flex flex-col items-center sm:flex-row sm:items-start sm:flex-wrap-reverse grow gap-x-2.5 gap-y-4\">\n <ng-content select=\"[footerActions]\" />\n </div>\n </div>\n\n @if (nullItems().length) {\n <div class=\"flex flex-col gap-2.5\">\n <div class=\"text-base font-bold\">\u0422\u043E\u0432\u0430\u0440\u044B \u0438 \u0443\u0441\u043B\u0443\u0433\u0438, \u043A\u043E\u0442\u043E\u0440\u044B\u0435 \u0431\u043E\u043B\u044C\u0448\u0435 \u043D\u0435 \u043F\u0440\u0435\u0434\u043E\u0441\u0442\u0430\u0432\u043B\u044F\u044E\u0442\u0441\u044F.</div>\n\n <sc-order-items-list\n [items]=\"nullItems()\"\n [selectable]=\"false\"\n [editable]=\"editable()\"\n />\n </div>\n }\n</div>\n" }]
52
- }], ctorParameters: () => [] });
53
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Mtb3JkZXItaXRlbXMtbGlzdC13aXRoLWFjdGlvbnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL29yZGVyL29yZGVyLWl0ZW1zLWxpc3Qtd2l0aC1hY3Rpb25zL3NjLW9yZGVyLWl0ZW1zLWxpc3Qtd2l0aC1hY3Rpb25zLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9vcmRlci9vcmRlci1pdGVtcy1saXN0LXdpdGgtYWN0aW9ucy9zYy1vcmRlci1pdGVtcy1saXN0LXdpdGgtYWN0aW9ucy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUduRyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQzs7QUFFOUY7O0dBRUc7QUFRSCxNQUFNLE9BQU8sb0NBQW9DO0lBK0I3Qzs7T0FFRztJQUNIO1FBakNBOztXQUVHO1FBQ2EsVUFBSyxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQWlCLENBQUM7UUFFeEQ7O1dBRUc7UUFDYSxlQUFVLEdBQUcsS0FBSyxDQUFVLElBQUksQ0FBQyxDQUFDO1FBRWxEOztXQUVHO1FBQ2EsYUFBUSxHQUFHLEtBQUssQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUVqRDs7V0FFRztRQUNnQixtQkFBYyxHQUFHLFFBQVEsQ0FBZ0IsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUVqSjs7V0FFRztRQUNnQixjQUFTLEdBQUcsUUFBUSxDQUFnQixHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFFMUk7O1dBRUc7UUFDYSxxQkFBZ0IsR0FBRyxLQUFLLENBQVcsRUFBRSxDQUFDLENBQUM7UUFNbkQsOEdBQThHO1FBQzlHLE1BQU0sQ0FDRixHQUFHLEVBQUU7WUFDRCxNQUFNLFlBQVksR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUMzRSxNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ2pELE1BQU0sU0FBUyxHQUFHLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBRXhFLElBQUksU0FBUyxDQUFDLE1BQU0sS0FBSyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDL0MsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUN6QyxDQUFDO1FBQ0wsQ0FBQyxFQUNELEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxFQUFFLENBQzlCLENBQUM7SUFDTixDQUFDOytHQWhEUSxvQ0FBb0M7bUdBQXBDLG9DQUFvQyx5ckJDZmpELDh6Q0E2QkEsNENEakJjLHlCQUF5Qjs7NEZBRzFCLG9DQUFvQztrQkFQaEQsU0FBUztpQ0FDTSxJQUFJLFlBQ04sa0NBQWtDLFdBRW5DLENBQUMseUJBQXlCLENBQUMsbUJBQ25CLHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBjb21wdXRlZCwgZWZmZWN0LCBpbnB1dCwgbW9kZWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNjT3JkZXJJdGVtIH0gZnJvbSAnQHNuYWJjZW50ci9jbGllbnQtY29yZSc7XG5cbmltcG9ydCB7IFNjT3JkZXJJdGVtc0xpc3RDb21wb25lbnQgfSBmcm9tICcuLi9vcmRlci1pdGVtcy1saXN0L3NjLW9yZGVyLWl0ZW1zLWxpc3QuY29tcG9uZW50JztcblxuLyoqXG4gKiDQodC/0LjRgdC+0Log0L/QvtC30LjRhtC40Lkg0LfQsNC60LDQt9CwINGBINC00LXQudGB0YLQstC40Y/QvNC4INC4INCx0LvQvtC60L7QvCDQv9C+0LfQuNGG0LjQuSwg0LrQvtGC0L7RgNGL0LUg0LHQvtC70YzRiNC1INC90LUg0L/RgNC10LTQvtGB0YLQsNCy0LvRj9GO0YLRgdGPLlxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnc2Mtb3JkZXItaXRlbXMtbGlzdC13aXRoLWFjdGlvbnMnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9zYy1vcmRlci1pdGVtcy1saXN0LXdpdGgtYWN0aW9ucy5jb21wb25lbnQuaHRtbCcsXG4gICAgaW1wb3J0czogW1NjT3JkZXJJdGVtc0xpc3RDb21wb25lbnRdLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBTY09yZGVySXRlbXNMaXN0V2l0aEFjdGlvbnNDb21wb25lbnQge1xuICAgIC8qKlxuICAgICAqINCi0L7QstCw0YDRiyDQt9Cw0LrQsNC30LAuXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IGl0ZW1zID0gaW5wdXQucmVxdWlyZWQ8U2NPcmRlckl0ZW1bXT4oKTtcblxuICAgIC8qKlxuICAgICAqINCS0LrQu9GO0YfQuNGC0Ywg0LLRi9Cx0L7RgCDQv9C+0LfQuNGG0LjQuSDRh9C10LrQsdC+0LrRgdCw0LzQuC5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgc2VsZWN0YWJsZSA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xuXG4gICAgLyoqXG4gICAgICog0JLQutC70Y7Rh9C40YLRjCDRgNC10LTQsNC60YLQuNGA0L7QstCw0L3QuNC1INC/0L7Qt9C40YbQuNC5LlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBlZGl0YWJsZSA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcblxuICAgIC8qKlxuICAgICAqINCf0L7Qt9C40YbQuNC4LCDQtNC+0YHRgtGD0L/QvdGL0LUg0LTQu9GPINC30LDQutCw0LfQsC5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgYXZhaWxhYmxlSXRlbXMgPSBjb21wdXRlZDxTY09yZGVySXRlbVtdPigoKSA9PiB0aGlzLml0ZW1zKCkuZmlsdGVyKChpdGVtKSA9PiAhaXRlbS5wcm9kdWN0LmlzTnVsbCAmJiAhaXRlbS5wcm9kdWN0LmlzSGlkZGVuKSk7XG5cbiAgICAvKipcbiAgICAgKiDQn9C+0LfQuNGG0LjQuCDQutC+0YDQt9C40L3Riywg0LrQvtGC0L7RgNGL0LUg0LHQvtC70YzRiNC1INC90LUg0L/RgNC10LTQvtGB0YLQsNCy0LvRj9GO0YLRgdGPLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBudWxsSXRlbXMgPSBjb21wdXRlZDxTY09yZGVySXRlbVtdPigoKSA9PiB0aGlzLml0ZW1zKCkuZmlsdGVyKChpdGVtKSA9PiBpdGVtLnByb2R1Y3QuaXNOdWxsIHx8IGl0ZW0ucHJvZHVjdC5pc0hpZGRlbikpO1xuXG4gICAgLyoqXG4gICAgICog0JjQtNC10L3RgtC40YTQuNC60LDRgtC+0YDRiyDQstGL0LHRgNCw0L3QvdGL0YUg0L/QvtC30LjRhtC40LkuXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IHNlbGVjdGVkSXRlbXNJZHMgPSBtb2RlbDxzdHJpbmdbXT4oW10pO1xuXG4gICAgLyoqXG4gICAgICog0JjQvdC40YbQuNCw0LvQuNC30LjRgNGD0LXRgiDRjdC60LfQtdC80L/Qu9GP0YAg0LrQu9Cw0YHRgdCwIHtAbGluayBTY09yZGVySXRlbXNMaXN0V2l0aEFjdGlvbnNDb21wb25lbnR9LlxuICAgICAqL1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgLy8g0J7RgdGC0LDQstC70Y/QtdGCINCyINCy0YvQsdC+0YDQtSDRgtC+0LvRjNC60L4g0LTQvtGB0YLRg9C/0L3Ri9C1INC/0L7Qt9C40YbQuNC4OiDQsdC10Lcg0L3QuNGFINGB0L/QuNGB0L7QuiDQstGL0LHQvtGA0LAg0L3QtSDQvtGC0YDQuNGB0L7QstGL0LLQsNC10YLRgdGPINC4INCy0YvQsdC+0YAg0L3QtSDRgdCx0YDQsNGB0YvQstCw0LXRgi5cbiAgICAgICAgZWZmZWN0KFxuICAgICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGF2YWlsYWJsZUlkcyA9IG5ldyBTZXQodGhpcy5hdmFpbGFibGVJdGVtcygpLm1hcCgoaXRlbSkgPT4gaXRlbS5pZCkpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkSXRlbXNJZHMgPSB0aGlzLnNlbGVjdGVkSXRlbXNJZHMoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBhY3R1YWxJZHMgPSBzZWxlY3RlZEl0ZW1zSWRzLmZpbHRlcigoaWQpID0+IGF2YWlsYWJsZUlkcy5oYXMoaWQpKTtcblxuICAgICAgICAgICAgICAgIGlmIChhY3R1YWxJZHMubGVuZ3RoICE9PSBzZWxlY3RlZEl0ZW1zSWRzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXNJZHMuc2V0KGFjdHVhbElkcyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfVxuICAgICAgICApO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGdhcC01XCI+XG4gICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgZ2FwLTIuNVwiPlxuICAgICAgICBAaWYgKGF2YWlsYWJsZUl0ZW1zKCkubGVuZ3RoKSB7XG4gICAgICAgICAgICA8c2Mtb3JkZXItaXRlbXMtbGlzdFxuICAgICAgICAgICAgICAgIFtpdGVtc109XCJhdmFpbGFibGVJdGVtcygpXCJcbiAgICAgICAgICAgICAgICBbc2VsZWN0YWJsZV09XCJzZWxlY3RhYmxlKClcIlxuICAgICAgICAgICAgICAgIFtlZGl0YWJsZV09XCJlZGl0YWJsZSgpXCJcbiAgICAgICAgICAgICAgICAoc2VsZWN0ZWRJdGVtc0lkc0NoYW5nZSk9XCJzZWxlY3RlZEl0ZW1zSWRzLnNldCgkZXZlbnQpXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgIH1cblxuICAgICAgICA8IS0tINCk0YPRgtC10YAg0YHQv9C40YHQutCwINGC0L7QstCw0YDQvtCyLiAtLT5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgaXRlbXMtY2VudGVyIHNtOmZsZXgtcm93IHNtOml0ZW1zLXN0YXJ0IHNtOmZsZXgtd3JhcC1yZXZlcnNlIGdyb3cgZ2FwLXgtMi41IGdhcC15LTRcIj5cbiAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltmb290ZXJBY3Rpb25zXVwiIC8+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgQGlmIChudWxsSXRlbXMoKS5sZW5ndGgpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgZ2FwLTIuNVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtYmFzZSBmb250LWJvbGRcIj7QotC+0LLQsNGA0Ysg0Lgg0YPRgdC70YPQs9C4LCDQutC+0YLQvtGA0YvQtSDQsdC+0LvRjNGI0LUg0L3QtSDQv9GA0LXQtNC+0YHRgtCw0LLQu9GP0Y7RgtGB0Y8uPC9kaXY+XG5cbiAgICAgICAgICAgIDxzYy1vcmRlci1pdGVtcy1saXN0XG4gICAgICAgICAgICAgICAgW2l0ZW1zXT1cIm51bGxJdGVtcygpXCJcbiAgICAgICAgICAgICAgICBbc2VsZWN0YWJsZV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgW2VkaXRhYmxlXT1cImVkaXRhYmxlKClcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgfVxuPC9kaXY+XG4iXX0=