@taiga-ui/kit 4.33.0-canary.a0e1504 → 4.34.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/components/floating-container/floating-container.directive.d.ts +7 -0
  2. package/components/floating-container/index.d.ts +1 -0
  3. package/components/index.d.ts +1 -0
  4. package/components/input-slider/input-slider.d.ts +2 -1
  5. package/components/range/range-change.directive.d.ts +0 -7
  6. package/components/slider/slider.component.d.ts +6 -3
  7. package/components/textarea/textarea.component.d.ts +2 -3
  8. package/components/textarea/textarea.options.d.ts +6 -8
  9. package/directives/textarea-limit/textarea-limit.directive.d.ts +7 -7
  10. package/esm2022/components/breadcrumbs/breadcrumbs.component.mjs +3 -3
  11. package/esm2022/components/carousel/carousel.component.mjs +2 -2
  12. package/esm2022/components/floating-container/floating-container.directive.mjs +37 -0
  13. package/esm2022/components/floating-container/index.mjs +2 -0
  14. package/esm2022/components/floating-container/taiga-ui-kit-components-floating-container.mjs +5 -0
  15. package/esm2022/components/index.mjs +2 -1
  16. package/esm2022/components/input-number/input-number.directive.mjs +4 -4
  17. package/esm2022/components/input-number/step/input-number-step.component.mjs +4 -4
  18. package/esm2022/components/input-slider/input-slider.mjs +8 -3
  19. package/esm2022/components/line-clamp/line-clamp.component.mjs +3 -3
  20. package/esm2022/components/range/range-change.directive.mjs +11 -15
  21. package/esm2022/components/slider/slider.component.mjs +48 -17
  22. package/esm2022/components/textarea/textarea.component.mjs +2 -2
  23. package/esm2022/components/textarea/textarea.options.mjs +2 -1
  24. package/esm2022/directives/textarea-limit/textarea-limit.directive.mjs +20 -21
  25. package/fesm2022/taiga-ui-kit-components-breadcrumbs.mjs +2 -2
  26. package/fesm2022/taiga-ui-kit-components-breadcrumbs.mjs.map +1 -1
  27. package/fesm2022/taiga-ui-kit-components-carousel.mjs +1 -1
  28. package/fesm2022/taiga-ui-kit-components-carousel.mjs.map +1 -1
  29. package/fesm2022/taiga-ui-kit-components-floating-container.mjs +43 -0
  30. package/fesm2022/taiga-ui-kit-components-floating-container.mjs.map +1 -0
  31. package/fesm2022/taiga-ui-kit-components-input-number.mjs +6 -6
  32. package/fesm2022/taiga-ui-kit-components-input-number.mjs.map +1 -1
  33. package/fesm2022/taiga-ui-kit-components-input-slider.mjs +7 -2
  34. package/fesm2022/taiga-ui-kit-components-input-slider.mjs.map +1 -1
  35. package/fesm2022/taiga-ui-kit-components-line-clamp.mjs +2 -2
  36. package/fesm2022/taiga-ui-kit-components-line-clamp.mjs.map +1 -1
  37. package/fesm2022/taiga-ui-kit-components-range.mjs +10 -14
  38. package/fesm2022/taiga-ui-kit-components-range.mjs.map +1 -1
  39. package/fesm2022/taiga-ui-kit-components-slider.mjs +45 -16
  40. package/fesm2022/taiga-ui-kit-components-slider.mjs.map +1 -1
  41. package/fesm2022/taiga-ui-kit-components-textarea.mjs +2 -1
  42. package/fesm2022/taiga-ui-kit-components-textarea.mjs.map +1 -1
  43. package/fesm2022/taiga-ui-kit-components.mjs +1 -0
  44. package/fesm2022/taiga-ui-kit-components.mjs.map +1 -1
  45. package/fesm2022/taiga-ui-kit-directives-textarea-limit.mjs +19 -20
  46. package/fesm2022/taiga-ui-kit-directives-textarea-limit.mjs.map +1 -1
  47. package/package.json +26 -20
@@ -1,11 +1,10 @@
1
- import { ChangeDetectionStrategy, Component, Directive, inject, INJECTOR, Injector, Input, signal, ViewContainerRef, } from '@angular/core';
1
+ import { ChangeDetectionStrategy, Component, Directive, inject, Input, signal, ViewContainerRef, } from '@angular/core';
2
2
  import { NG_VALIDATORS, Validators } from '@angular/forms';
3
- import { tuiCreateToken, tuiProvide } from '@taiga-ui/cdk/utils/miscellaneous';
3
+ import { tuiProvide } from '@taiga-ui/cdk/utils/miscellaneous';
4
4
  import { TUI_TEXTFIELD_OPTIONS, TuiTextfieldComponent, } from '@taiga-ui/core/components/textfield';
5
- import { TuiTextarea } from '@taiga-ui/kit/components/textarea';
5
+ import { tuiTextareaOptionsProvider } from '@taiga-ui/kit/components/textarea';
6
6
  import { injectContext, PolymorpheusComponent } from '@taiga-ui/polymorpheus';
7
7
  import * as i0 from "@angular/core";
8
- const LIMIT = tuiCreateToken(signal(0));
9
8
  class TuiTextareaLimitComponent {
10
9
  constructor() {
11
10
  this.limit = inject(TuiTextareaLimit).limit;
@@ -38,13 +37,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
38
37
  }] });
39
38
  class TuiTextareaCounterComponent {
40
39
  constructor() {
41
- this.textfield = inject(TuiTextfieldComponent);
42
- this.limit = inject(LIMIT);
40
+ this.limit = signal(0);
43
41
  this.length = signal(0);
44
42
  }
45
- ngDoCheck() {
46
- this.length.set(this.textfield.input?.nativeElement.value.length || 0);
47
- }
48
43
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiTextareaCounterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
49
44
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiTextareaCounterComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: '{{ length() }} / {{ limit() }}', isInline: true, styles: [":host{z-index:1;inline-size:100%;order:2;text-align:end;pointer-events:none;padding-bottom:.75rem;font:var(--tui-font-text-ui-xs);color:var(--tui-text-secondary)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
50
45
  }
@@ -56,26 +51,27 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
56
51
  const COMPONENT = new PolymorpheusComponent(TuiTextareaLimitComponent);
57
52
  class TuiTextareaLimit {
58
53
  constructor() {
54
+ this.textfield = inject(TuiTextfieldComponent);
55
+ this.ref = inject(ViewContainerRef).createComponent(TuiTextareaCounterComponent);
59
56
  this.size = inject(TUI_TEXTFIELD_OPTIONS).size;
60
57
  this.limit = signal(0);
61
- const injector = Injector.create({
62
- parent: inject(INJECTOR),
63
- providers: [{ provide: LIMIT, useValue: this.limit }],
64
- });
65
- inject(TuiTextarea).content = COMPONENT;
66
- inject(ViewContainerRef)
67
- .createComponent(TuiTextareaCounterComponent, { injector })
68
- .changeDetectorRef.detectChanges();
69
58
  }
70
59
  // TODO: Use signal inputs in v5
71
60
  set limitSetter(limit) {
72
61
  this.limit.set(limit);
73
62
  }
63
+ ngDoCheck() {
64
+ this.ref.instance.length.set(this.textfield.value().length);
65
+ this.ref.instance.limit.set(this.limit());
66
+ }
74
67
  validate(control) {
75
68
  return Validators.maxLength(this.limit())(control);
76
69
  }
77
70
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiTextareaLimit, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
78
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: TuiTextareaLimit, isStandalone: true, selector: "[tuiTextarea][limit]", inputs: { limitSetter: ["limit", "limitSetter"] }, host: { properties: { "style.border-block-end-width.rem": "size() === \"l\" ? 1.875 : 1.75" } }, providers: [tuiProvide(NG_VALIDATORS, TuiTextareaLimit, true)], ngImport: i0 }); }
71
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: TuiTextareaLimit, isStandalone: true, selector: "[tuiTextarea][limit]", inputs: { limitSetter: ["limit", "limitSetter"] }, host: { properties: { "style.border-block-end-width.rem": "size() === \"l\" ? 1.875 : 1.75" } }, providers: [
72
+ tuiProvide(NG_VALIDATORS, TuiTextareaLimit, true),
73
+ tuiTextareaOptionsProvider({ content: COMPONENT }),
74
+ ], ngImport: i0 }); }
79
75
  }
80
76
  export { TuiTextareaLimit };
81
77
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiTextareaLimit, decorators: [{
@@ -83,13 +79,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
83
79
  args: [{
84
80
  standalone: true,
85
81
  selector: '[tuiTextarea][limit]',
86
- providers: [tuiProvide(NG_VALIDATORS, TuiTextareaLimit, true)],
82
+ providers: [
83
+ tuiProvide(NG_VALIDATORS, TuiTextareaLimit, true),
84
+ tuiTextareaOptionsProvider({ content: COMPONENT }),
85
+ ],
87
86
  host: {
88
87
  '[style.border-block-end-width.rem]': 'size() === "l" ? 1.875 : 1.75',
89
88
  },
90
89
  }]
91
- }], ctorParameters: function () { return []; }, propDecorators: { limitSetter: [{
90
+ }], propDecorators: { limitSetter: [{
92
91
  type: Input,
93
92
  args: ['limit']
94
93
  }] } });
95
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dGFyZWEtbGltaXQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2RpcmVjdGl2ZXMvdGV4dGFyZWEtbGltaXQvdGV4dGFyZWEtbGltaXQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFNBQVMsRUFDVCxNQUFNLEVBQ04sUUFBUSxFQUNSLFFBQVEsRUFDUixLQUFLLEVBQ0wsTUFBTSxFQUNOLGdCQUFnQixHQUNuQixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUMsYUFBYSxFQUFFLFVBQVUsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRXpELE9BQU8sRUFBQyxjQUFjLEVBQUUsVUFBVSxFQUFDLE1BQU0sbUNBQW1DLENBQUM7QUFDN0UsT0FBTyxFQUNILHFCQUFxQixFQUNyQixxQkFBcUIsR0FDeEIsTUFBTSxxQ0FBcUMsQ0FBQztBQUM3QyxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sbUNBQW1DLENBQUM7QUFDOUQsT0FBTyxFQUFDLGFBQWEsRUFBRSxxQkFBcUIsRUFBQyxNQUFNLHdCQUF3QixDQUFDOztBQUU1RSxNQUFNLEtBQUssR0FBRyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFFeEMsTUFXYSx5QkFBeUI7SUFYdEM7UUFZdUIsVUFBSyxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUN2QyxZQUFPLEdBQUcsYUFBYSxFQUFzQixDQUFDO1FBQzlDLGVBQVUsR0FDekIsMktBQTJLLENBQUM7S0FDbkw7K0dBTFkseUJBQXlCO21HQUF6Qix5QkFBeUIsd0VBVHhCOzs7Ozs7S0FNVDs7U0FHUSx5QkFBeUI7NEZBQXpCLHlCQUF5QjtrQkFYckMsU0FBUzttQkFBQztvQkFDUCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFOzs7Ozs7S0FNVDtvQkFDRCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtpQkFDbEQ7O0FBUUQsTUFNYSwyQkFBMkI7SUFOeEM7UUFPcUIsY0FBUyxHQUFHLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBRXhDLFVBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdEIsV0FBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUt6QztJQUhVLFNBQVM7UUFDWixJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxhQUFhLENBQUMsS0FBSyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsQ0FBQztJQUMzRSxDQUFDOytHQVJRLDJCQUEyQjttR0FBM0IsMkJBQTJCLHdFQUoxQixnQ0FBZ0M7O1NBSWpDLDJCQUEyQjs0RkFBM0IsMkJBQTJCO2tCQU52QyxTQUFTO2lDQUNNLElBQUksWUFDTixnQ0FBZ0MsbUJBRXpCLHVCQUF1QixDQUFDLE1BQU07O0FBYW5ELE1BQU0sU0FBUyxHQUFHLElBQUkscUJBQXFCLENBQUMseUJBQXlCLENBQUMsQ0FBQztBQUV2RSxNQVFhLGdCQUFnQjtJQUl6QjtRQUhnQixTQUFJLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUMsSUFBSSxDQUFDO1FBQzFDLFVBQUssR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFHOUIsTUFBTSxRQUFRLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQztZQUM3QixNQUFNLEVBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQztZQUN4QixTQUFTLEVBQUUsQ0FBQyxFQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUMsQ0FBQztTQUN0RCxDQUFDLENBQUM7UUFFSCxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsT0FBTyxHQUFHLFNBQVMsQ0FBQztRQUN4QyxNQUFNLENBQUMsZ0JBQWdCLENBQUM7YUFDbkIsZUFBZSxDQUFDLDJCQUEyQixFQUFFLEVBQUMsUUFBUSxFQUFDLENBQUM7YUFDeEQsaUJBQWlCLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDM0MsQ0FBQztJQUVELGdDQUFnQztJQUNoQyxJQUNXLFdBQVcsQ0FBQyxLQUFhO1FBQ2hDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFTSxRQUFRLENBQUMsT0FBd0I7UUFDcEMsT0FBTyxVQUFVLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3ZELENBQUM7K0dBeEJRLGdCQUFnQjttR0FBaEIsZ0JBQWdCLHVOQUxkLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRSxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsQ0FBQzs7U0FLckQsZ0JBQWdCOzRGQUFoQixnQkFBZ0I7a0JBUjVCLFNBQVM7bUJBQUM7b0JBQ1AsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRSxzQkFBc0I7b0JBQ2hDLFNBQVMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxhQUFhLG9CQUFvQixJQUFJLENBQUMsQ0FBQztvQkFDOUQsSUFBSSxFQUFFO3dCQUNGLG9DQUFvQyxFQUFFLCtCQUErQjtxQkFDeEU7aUJBQ0o7MEVBbUJjLFdBQVc7c0JBRHJCLEtBQUs7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHtEb0NoZWNrfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ29tcG9uZW50LFxuICAgIERpcmVjdGl2ZSxcbiAgICBpbmplY3QsXG4gICAgSU5KRUNUT1IsXG4gICAgSW5qZWN0b3IsXG4gICAgSW5wdXQsXG4gICAgc2lnbmFsLFxuICAgIFZpZXdDb250YWluZXJSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHR5cGUge0Fic3RyYWN0Q29udHJvbCwgVmFsaWRhdGlvbkVycm9ycywgVmFsaWRhdG9yfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge05HX1ZBTElEQVRPUlMsIFZhbGlkYXRvcnN9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB0eXBlIHtUdWlDb250ZXh0fSBmcm9tICdAdGFpZ2EtdWkvY2RrL3R5cGVzJztcbmltcG9ydCB7dHVpQ3JlYXRlVG9rZW4sIHR1aVByb3ZpZGV9IGZyb20gJ0B0YWlnYS11aS9jZGsvdXRpbHMvbWlzY2VsbGFuZW91cyc7XG5pbXBvcnQge1xuICAgIFRVSV9URVhURklFTERfT1BUSU9OUyxcbiAgICBUdWlUZXh0ZmllbGRDb21wb25lbnQsXG59IGZyb20gJ0B0YWlnYS11aS9jb3JlL2NvbXBvbmVudHMvdGV4dGZpZWxkJztcbmltcG9ydCB7VHVpVGV4dGFyZWF9IGZyb20gJ0B0YWlnYS11aS9raXQvY29tcG9uZW50cy90ZXh0YXJlYSc7XG5pbXBvcnQge2luamVjdENvbnRleHQsIFBvbHltb3JwaGV1c0NvbXBvbmVudH0gZnJvbSAnQHRhaWdhLXVpL3BvbHltb3JwaGV1cyc7XG5cbmNvbnN0IExJTUlUID0gdHVpQ3JlYXRlVG9rZW4oc2lnbmFsKDApKTtcblxuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8c3BhbiBbdGV4dENvbnRlbnRdPVwiY29udGV4dC4kaW1wbGljaXQuc2xpY2UoMCwgbGltaXQoKSlcIj48L3NwYW4+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZF09XCJiYWNrZ3JvdW5kXCJcbiAgICAgICAgICAgIFt0ZXh0Q29udGVudF09XCJjb250ZXh0LiRpbXBsaWNpdC5zbGljZShsaW1pdCgpKVwiXG4gICAgICAgID48L3NwYW4+XG4gICAgYCxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgVHVpVGV4dGFyZWFMaW1pdENvbXBvbmVudCB7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGxpbWl0ID0gaW5qZWN0KFR1aVRleHRhcmVhTGltaXQpLmxpbWl0O1xuICAgIHByb3RlY3RlZCByZWFkb25seSBjb250ZXh0ID0gaW5qZWN0Q29udGV4dDxUdWlDb250ZXh0PHN0cmluZz4+KCk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGJhY2tncm91bmQgPVxuICAgICAgICAnbGluZWFyLWdyYWRpZW50KHRyYW5zcGFyZW50IDAuMTI1cmVtLCB2YXIoLS10dWktc3RhdHVzLW5lZ2F0aXZlLXBhbGUpIDAuMTI1cmVtLCB2YXIoLS10dWktc3RhdHVzLW5lZ2F0aXZlLXBhbGUpIGNhbGMoMTAwJSAtIDAuMTI1cmVtKSwgdHJhbnNwYXJlbnQgY2FsYygxMDAlIC0gMC4xMjVyZW0pKSc7XG59XG5cbkBDb21wb25lbnQoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgdGVtcGxhdGU6ICd7eyBsZW5ndGgoKSB9fSAvIHt7IGxpbWl0KCkgfX0nLFxuICAgIHN0eWxlVXJsczogWycuL3RleHRhcmVhLWxpbWl0LnN0eWxlLmxlc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgVHVpVGV4dGFyZWFDb3VudGVyQ29tcG9uZW50IGltcGxlbWVudHMgRG9DaGVjayB7XG4gICAgcHJpdmF0ZSByZWFkb25seSB0ZXh0ZmllbGQgPSBpbmplY3QoVHVpVGV4dGZpZWxkQ29tcG9uZW50KTtcblxuICAgIHByb3RlY3RlZCByZWFkb25seSBsaW1pdCA9IGluamVjdChMSU1JVCk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGxlbmd0aCA9IHNpZ25hbCgwKTtcblxuICAgIHB1YmxpYyBuZ0RvQ2hlY2soKTogdm9pZCB7XG4gICAgICAgIHRoaXMubGVuZ3RoLnNldCh0aGlzLnRleHRmaWVsZC5pbnB1dD8ubmF0aXZlRWxlbWVudC52YWx1ZS5sZW5ndGggfHwgMCk7XG4gICAgfVxufVxuXG5jb25zdCBDT01QT05FTlQgPSBuZXcgUG9seW1vcnBoZXVzQ29tcG9uZW50KFR1aVRleHRhcmVhTGltaXRDb21wb25lbnQpO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnW3R1aVRleHRhcmVhXVtsaW1pdF0nLFxuICAgIHByb3ZpZGVyczogW3R1aVByb3ZpZGUoTkdfVkFMSURBVE9SUywgVHVpVGV4dGFyZWFMaW1pdCwgdHJ1ZSldLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ1tzdHlsZS5ib3JkZXItYmxvY2stZW5kLXdpZHRoLnJlbV0nOiAnc2l6ZSgpID09PSBcImxcIiA/IDEuODc1IDogMS43NScsXG4gICAgfSxcbn0pXG5leHBvcnQgY2xhc3MgVHVpVGV4dGFyZWFMaW1pdCBpbXBsZW1lbnRzIFZhbGlkYXRvciB7XG4gICAgcHVibGljIHJlYWRvbmx5IHNpemUgPSBpbmplY3QoVFVJX1RFWFRGSUVMRF9PUFRJT05TKS5zaXplO1xuICAgIHB1YmxpYyByZWFkb25seSBsaW1pdCA9IHNpZ25hbCgwKTtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBjb25zdCBpbmplY3RvciA9IEluamVjdG9yLmNyZWF0ZSh7XG4gICAgICAgICAgICBwYXJlbnQ6IGluamVjdChJTkpFQ1RPUiksXG4gICAgICAgICAgICBwcm92aWRlcnM6IFt7cHJvdmlkZTogTElNSVQsIHVzZVZhbHVlOiB0aGlzLmxpbWl0fV0sXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGluamVjdChUdWlUZXh0YXJlYSkuY29udGVudCA9IENPTVBPTkVOVDtcbiAgICAgICAgaW5qZWN0KFZpZXdDb250YWluZXJSZWYpXG4gICAgICAgICAgICAuY3JlYXRlQ29tcG9uZW50KFR1aVRleHRhcmVhQ291bnRlckNvbXBvbmVudCwge2luamVjdG9yfSlcbiAgICAgICAgICAgIC5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgLy8gVE9ETzogVXNlIHNpZ25hbCBpbnB1dHMgaW4gdjVcbiAgICBASW5wdXQoJ2xpbWl0JylcbiAgICBwdWJsaWMgc2V0IGxpbWl0U2V0dGVyKGxpbWl0OiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5saW1pdC5zZXQobGltaXQpO1xuICAgIH1cblxuICAgIHB1YmxpYyB2YWxpZGF0ZShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiBWYWxpZGF0b3JzLm1heExlbmd0aCh0aGlzLmxpbWl0KCkpKGNvbnRyb2wpO1xuICAgIH1cbn1cbiJdfQ==
94
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dGFyZWEtbGltaXQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2RpcmVjdGl2ZXMvdGV4dGFyZWEtbGltaXQvdGV4dGFyZWEtbGltaXQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFNBQVMsRUFDVCxNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFDTixnQkFBZ0IsR0FDbkIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFDLGFBQWEsRUFBRSxVQUFVLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUV6RCxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sbUNBQW1DLENBQUM7QUFDN0QsT0FBTyxFQUNILHFCQUFxQixFQUNyQixxQkFBcUIsR0FDeEIsTUFBTSxxQ0FBcUMsQ0FBQztBQUM3QyxPQUFPLEVBQUMsMEJBQTBCLEVBQUMsTUFBTSxtQ0FBbUMsQ0FBQztBQUM3RSxPQUFPLEVBQUMsYUFBYSxFQUFFLHFCQUFxQixFQUFDLE1BQU0sd0JBQXdCLENBQUM7O0FBRTVFLE1BV2EseUJBQXlCO0lBWHRDO1FBWXVCLFVBQUssR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDdkMsWUFBTyxHQUFHLGFBQWEsRUFBc0IsQ0FBQztRQUM5QyxlQUFVLEdBQ3pCLDJLQUEySyxDQUFDO0tBQ25MOytHQUxZLHlCQUF5QjttR0FBekIseUJBQXlCLHdFQVR4Qjs7Ozs7O0tBTVQ7O1NBR1EseUJBQXlCOzRGQUF6Qix5QkFBeUI7a0JBWHJDLFNBQVM7bUJBQUM7b0JBQ1AsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRTs7Ozs7O0tBTVQ7b0JBQ0QsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07aUJBQ2xEOztBQVFELE1BTWEsMkJBQTJCO0lBTnhDO1FBT29CLFVBQUssR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbEIsV0FBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUN0QzsrR0FIWSwyQkFBMkI7bUdBQTNCLDJCQUEyQix3RUFKMUIsZ0NBQWdDOztTQUlqQywyQkFBMkI7NEZBQTNCLDJCQUEyQjtrQkFOdkMsU0FBUztpQ0FDTSxJQUFJLFlBQ04sZ0NBQWdDLG1CQUV6Qix1QkFBdUIsQ0FBQyxNQUFNOztBQU9uRCxNQUFNLFNBQVMsR0FBRyxJQUFJLHFCQUFxQixDQUFDLHlCQUF5QixDQUFDLENBQUM7QUFFdkUsTUFXYSxnQkFBZ0I7SUFYN0I7UUFZcUIsY0FBUyxHQUFHLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQzFDLFFBQUcsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxlQUFlLENBQzNELDJCQUEyQixDQUM5QixDQUFDO1FBRWMsU0FBSSxHQUFHLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUMxQyxVQUFLLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBZ0JyQztJQWRHLGdDQUFnQztJQUNoQyxJQUNXLFdBQVcsQ0FBQyxLQUFhO1FBQ2hDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFTSxTQUFTO1FBQ1osSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzVELElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVNLFFBQVEsQ0FBQyxPQUF3QjtRQUNwQyxPQUFPLFVBQVUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDdkQsQ0FBQzsrR0F0QlEsZ0JBQWdCO21HQUFoQixnQkFBZ0IsdU5BUmQ7WUFDUCxVQUFVLENBQUMsYUFBYSxFQUFFLGdCQUFnQixFQUFFLElBQUksQ0FBQztZQUNqRCwwQkFBMEIsQ0FBQyxFQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUMsQ0FBQztTQUNuRDs7U0FLUSxnQkFBZ0I7NEZBQWhCLGdCQUFnQjtrQkFYNUIsU0FBUzttQkFBQztvQkFDUCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLHNCQUFzQjtvQkFDaEMsU0FBUyxFQUFFO3dCQUNQLFVBQVUsQ0FBQyxhQUFhLG9CQUFvQixJQUFJLENBQUM7d0JBQ2pELDBCQUEwQixDQUFDLEVBQUMsT0FBTyxFQUFFLFNBQVMsRUFBQyxDQUFDO3FCQUNuRDtvQkFDRCxJQUFJLEVBQUU7d0JBQ0Ysb0NBQW9DLEVBQUUsK0JBQStCO3FCQUN4RTtpQkFDSjs4QkFZYyxXQUFXO3NCQURyQixLQUFLO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7RG9DaGVja30gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENvbXBvbmVudCxcbiAgICBEaXJlY3RpdmUsXG4gICAgaW5qZWN0LFxuICAgIElucHV0LFxuICAgIHNpZ25hbCxcbiAgICBWaWV3Q29udGFpbmVyUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB0eXBlIHtBYnN0cmFjdENvbnRyb2wsIFZhbGlkYXRpb25FcnJvcnMsIFZhbGlkYXRvcn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtOR19WQUxJREFUT1JTLCBWYWxpZGF0b3JzfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgdHlwZSB7VHVpQ29udGV4dH0gZnJvbSAnQHRhaWdhLXVpL2Nkay90eXBlcyc7XG5pbXBvcnQge3R1aVByb3ZpZGV9IGZyb20gJ0B0YWlnYS11aS9jZGsvdXRpbHMvbWlzY2VsbGFuZW91cyc7XG5pbXBvcnQge1xuICAgIFRVSV9URVhURklFTERfT1BUSU9OUyxcbiAgICBUdWlUZXh0ZmllbGRDb21wb25lbnQsXG59IGZyb20gJ0B0YWlnYS11aS9jb3JlL2NvbXBvbmVudHMvdGV4dGZpZWxkJztcbmltcG9ydCB7dHVpVGV4dGFyZWFPcHRpb25zUHJvdmlkZXJ9IGZyb20gJ0B0YWlnYS11aS9raXQvY29tcG9uZW50cy90ZXh0YXJlYSc7XG5pbXBvcnQge2luamVjdENvbnRleHQsIFBvbHltb3JwaGV1c0NvbXBvbmVudH0gZnJvbSAnQHRhaWdhLXVpL3BvbHltb3JwaGV1cyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPHNwYW4gW3RleHRDb250ZW50XT1cImNvbnRleHQuJGltcGxpY2l0LnNsaWNlKDAsIGxpbWl0KCkpXCI+PC9zcGFuPlxuICAgICAgICA8c3BhblxuICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRdPVwiYmFja2dyb3VuZFwiXG4gICAgICAgICAgICBbdGV4dENvbnRlbnRdPVwiY29udGV4dC4kaW1wbGljaXQuc2xpY2UobGltaXQoKSlcIlxuICAgICAgICA+PC9zcGFuPlxuICAgIGAsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFR1aVRleHRhcmVhTGltaXRDb21wb25lbnQge1xuICAgIHByb3RlY3RlZCByZWFkb25seSBsaW1pdCA9IGluamVjdChUdWlUZXh0YXJlYUxpbWl0KS5saW1pdDtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgY29udGV4dCA9IGluamVjdENvbnRleHQ8VHVpQ29udGV4dDxzdHJpbmc+PigpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBiYWNrZ3JvdW5kID1cbiAgICAgICAgJ2xpbmVhci1ncmFkaWVudCh0cmFuc3BhcmVudCAwLjEyNXJlbSwgdmFyKC0tdHVpLXN0YXR1cy1uZWdhdGl2ZS1wYWxlKSAwLjEyNXJlbSwgdmFyKC0tdHVpLXN0YXR1cy1uZWdhdGl2ZS1wYWxlKSBjYWxjKDEwMCUgLSAwLjEyNXJlbSksIHRyYW5zcGFyZW50IGNhbGMoMTAwJSAtIDAuMTI1cmVtKSknO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHRlbXBsYXRlOiAne3sgbGVuZ3RoKCkgfX0gLyB7eyBsaW1pdCgpIH19JyxcbiAgICBzdHlsZVVybHM6IFsnLi90ZXh0YXJlYS1saW1pdC5zdHlsZS5sZXNzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFR1aVRleHRhcmVhQ291bnRlckNvbXBvbmVudCB7XG4gICAgcHVibGljIHJlYWRvbmx5IGxpbWl0ID0gc2lnbmFsKDApO1xuICAgIHB1YmxpYyByZWFkb25seSBsZW5ndGggPSBzaWduYWwoMCk7XG59XG5cbmNvbnN0IENPTVBPTkVOVCA9IG5ldyBQb2x5bW9ycGhldXNDb21wb25lbnQoVHVpVGV4dGFyZWFMaW1pdENvbXBvbmVudCk7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6ICdbdHVpVGV4dGFyZWFdW2xpbWl0XScsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHR1aVByb3ZpZGUoTkdfVkFMSURBVE9SUywgVHVpVGV4dGFyZWFMaW1pdCwgdHJ1ZSksXG4gICAgICAgIHR1aVRleHRhcmVhT3B0aW9uc1Byb3ZpZGVyKHtjb250ZW50OiBDT01QT05FTlR9KSxcbiAgICBdLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ1tzdHlsZS5ib3JkZXItYmxvY2stZW5kLXdpZHRoLnJlbV0nOiAnc2l6ZSgpID09PSBcImxcIiA/IDEuODc1IDogMS43NScsXG4gICAgfSxcbn0pXG5leHBvcnQgY2xhc3MgVHVpVGV4dGFyZWFMaW1pdCBpbXBsZW1lbnRzIFZhbGlkYXRvciwgRG9DaGVjayB7XG4gICAgcHJpdmF0ZSByZWFkb25seSB0ZXh0ZmllbGQgPSBpbmplY3QoVHVpVGV4dGZpZWxkQ29tcG9uZW50KTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJlZiA9IGluamVjdChWaWV3Q29udGFpbmVyUmVmKS5jcmVhdGVDb21wb25lbnQoXG4gICAgICAgIFR1aVRleHRhcmVhQ291bnRlckNvbXBvbmVudCxcbiAgICApO1xuXG4gICAgcHVibGljIHJlYWRvbmx5IHNpemUgPSBpbmplY3QoVFVJX1RFWFRGSUVMRF9PUFRJT05TKS5zaXplO1xuICAgIHB1YmxpYyByZWFkb25seSBsaW1pdCA9IHNpZ25hbCgwKTtcblxuICAgIC8vIFRPRE86IFVzZSBzaWduYWwgaW5wdXRzIGluIHY1XG4gICAgQElucHV0KCdsaW1pdCcpXG4gICAgcHVibGljIHNldCBsaW1pdFNldHRlcihsaW1pdDogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMubGltaXQuc2V0KGxpbWl0KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdEb0NoZWNrKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnJlZi5pbnN0YW5jZS5sZW5ndGguc2V0KHRoaXMudGV4dGZpZWxkLnZhbHVlKCkubGVuZ3RoKTtcbiAgICAgICAgdGhpcy5yZWYuaW5zdGFuY2UubGltaXQuc2V0KHRoaXMubGltaXQoKSk7XG4gICAgfVxuXG4gICAgcHVibGljIHZhbGlkYXRlKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIFZhbGlkYXRvcnMubWF4TGVuZ3RoKHRoaXMubGltaXQoKSkoY29udHJvbCk7XG4gICAgfVxufVxuIl19
@@ -48,7 +48,7 @@ class TuiBreadcrumbs {
48
48
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiBreadcrumbs, isStandalone: true, selector: "tui-breadcrumbs", inputs: { size: "size", itemsLimit: "itemsLimit" }, host: { properties: { "attr.data-size": "size" } }, providers: [
49
49
  tuiLinkOptionsProvider({ appearance: 'action-grayscale' }),
50
50
  tuiHintOptionsProvider({ direction: 'bottom' }),
51
- ], queries: [{ propertyName: "items", predicate: TuiItem, read: TemplateRef }], ngImport: i0, template: "<ng-container *ngIf=\"items.changes | async\" />\n<ng-container *ngIf=\"itemsLimit > 1; else plain\">\n <ng-container *ngIf=\"itemsLimit !== 2\">\n <ng-container [ngTemplateOutlet]=\"items.first\" />\n <ng-container [ngTemplateOutlet]=\"separator\" />\n </ng-container>\n <tui-items-with-more\n side=\"start\"\n [itemsLimit]=\"itemsLimit - 2\"\n [required]=\"items.length + offset - 2\"\n >\n <ng-container *ngFor=\"let item of items; let last = last\">\n <ng-container *ngIf=\"item !== items.first || itemsLimit === 2\">\n <ng-container *tuiItem>\n <ng-container [ngTemplateOutlet]=\"item\" />\n <ng-container\n *ngIf=\"!last\"\n [ngTemplateOutlet]=\"separator\"\n />\n </ng-container>\n </ng-container>\n </ng-container>\n <ng-template\n let-index\n tuiMore\n >\n <span class=\"t-more\">\n <button\n appearance=\"flat\"\n size=\"xs\"\n tuiDropdownOpen\n tuiIconButton\n type=\"button\"\n [iconStart]=\"icons.ellipsis\"\n [tuiDropdown]=\"dropdown\"\n >\n {{ more() }}\n </button>\n <ng-container [ngTemplateOutlet]=\"separator\" />\n </span>\n <ng-template #dropdown>\n <tui-data-list size=\"s\">\n <ng-container *ngFor=\"let item of items; let i = index\">\n <span\n *ngIf=\"i + offset && i <= index && item !== items.last\"\n tuiOption\n class=\"t-option\"\n >\n <ng-container [ngTemplateOutlet]=\"item\" />\n </span>\n </ng-container>\n </tui-data-list>\n </ng-template>\n </ng-template>\n </tui-items-with-more>\n</ng-container>\n<ng-template #separator>\n <tui-icon\n *ngIf=\"options.icon.length > 1; else char\"\n class=\"t-icon\"\n [icon]=\"options.icon\"\n />\n <ng-template #char>\n <span class=\"t-char\">{{ options.icon }}</span>\n </ng-template>\n</ng-template>\n<ng-template #plain>\n <ng-container *ngFor=\"let item of items; let last = last\">\n <ng-container [ngTemplateOutlet]=\"item\" />\n <ng-container\n *ngIf=\"!last\"\n [ngTemplateOutlet]=\"separator\"\n />\n </ng-container>\n</ng-template>\n", styles: [":host{display:flex;align-items:center;white-space:nowrap;color:var(--tui-text-secondary)}:host[data-size=m]{font:var(--tui-font-text-s);line-height:1.5rem;block-size:1.5rem}:host[data-size=l]{font:var(--tui-font-text-m);line-height:2.5rem;block-size:2.5rem}.t-more{display:flex;align-items:center}.t-option ::ng-deep>*{color:var(--tui-text-primary)!important;background:transparent!important}.t-icon{margin:0 .5rem;font-size:1rem}.t-char{margin:0 .375rem}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "component", type: i1.TuiDataListComponent, selector: "tui-data-list", inputs: ["emptyContent", "size"] }, { kind: "directive", type: i2.TuiDropdownDirective, selector: "[tuiDropdown]:not(ng-container):not(ng-template)", inputs: ["tuiDropdown"], exportAs: ["tuiDropdown"] }, { kind: "directive", type: i2.TuiDropdownOpen, selector: "[tuiDropdown][tuiDropdownOpen],[tuiDropdown][tuiDropdownOpenChange]", inputs: ["tuiDropdownEnabled", "tuiDropdownOpen"], outputs: ["tuiDropdownOpenChange"] }, { kind: "component", type: TuiIcon, selector: "tui-icon", inputs: ["icon", "background"] }, { kind: "component", type: i3.TuiItemsWithMoreComponent, selector: "tui-items-with-more", outputs: ["lastIndexChange"] }, { kind: "directive", type: i3.TuiMore, selector: "[tuiMore]" }, { kind: "directive", type: i4.TuiItem, selector: "[tuiItem]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
51
+ ], queries: [{ propertyName: "items", predicate: TuiItem, read: TemplateRef }], ngImport: i0, template: "<ng-container *ngIf=\"items.changes | async\" />\n<ng-container *ngIf=\"itemsLimit > 1; else plain\">\n <ng-container *ngIf=\"itemsLimit !== 2\">\n <ng-container [ngTemplateOutlet]=\"items.first\" />\n <ng-container [ngTemplateOutlet]=\"separator\" />\n </ng-container>\n <tui-items-with-more\n side=\"start\"\n [itemsLimit]=\"itemsLimit - 2\"\n [required]=\"items.length + offset - 2\"\n >\n <ng-container *ngFor=\"let item of items; let last = last\">\n <ng-container *ngIf=\"item !== items.first || itemsLimit === 2\">\n <ng-container *tuiItem>\n <ng-container [ngTemplateOutlet]=\"item\" />\n <ng-container\n *ngIf=\"!last\"\n [ngTemplateOutlet]=\"separator\"\n />\n </ng-container>\n </ng-container>\n </ng-container>\n <ng-template\n let-index\n tuiMore\n >\n <span class=\"t-more\">\n <button\n appearance=\"flat\"\n size=\"xs\"\n tuiDropdownOpen\n tuiIconButton\n type=\"button\"\n [iconStart]=\"icons.ellipsis\"\n [tuiDropdown]=\"dropdown\"\n >\n {{ more() }}\n </button>\n <ng-container [ngTemplateOutlet]=\"separator\" />\n </span>\n <ng-template #dropdown>\n <tui-data-list size=\"s\">\n <ng-container *ngFor=\"let item of items; let i = index\">\n <span\n *ngIf=\"i + offset && i <= index && item !== items.last\"\n tuiOption\n class=\"t-option\"\n >\n <ng-container [ngTemplateOutlet]=\"item\" />\n </span>\n </ng-container>\n </tui-data-list>\n </ng-template>\n </ng-template>\n </tui-items-with-more>\n</ng-container>\n<ng-template #separator>\n <tui-icon\n *ngIf=\"options.icon.length > 1; else char\"\n class=\"t-icon\"\n [icon]=\"options.icon\"\n />\n <ng-template #char>\n <span class=\"t-char\">{{ options.icon }}</span>\n </ng-template>\n</ng-template>\n<ng-template #plain>\n <ng-container *ngFor=\"let item of items; let last = last\">\n <ng-container [ngTemplateOutlet]=\"item\" />\n <ng-container\n *ngIf=\"!last\"\n [ngTemplateOutlet]=\"separator\"\n />\n </ng-container>\n</ng-template>\n", styles: [":host{display:flex;align-items:center;white-space:nowrap;color:var(--tui-text-secondary)}:host[data-size=m]{font:var(--tui-font-text-s);line-height:1.5rem;block-size:1.5rem}:host[data-size=l]{font:var(--tui-font-text-m);line-height:2.5rem;block-size:2.5rem}:host ::ng-deep [tuiLink]{text-decoration:none}.t-more{display:flex;align-items:center}.t-option ::ng-deep>*{color:var(--tui-text-primary)!important;background:transparent!important;text-decoration:none}.t-icon{margin:0 .5rem;font-size:1rem}.t-char{margin:0 .375rem}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "component", type: i1.TuiDataListComponent, selector: "tui-data-list", inputs: ["emptyContent", "size"] }, { kind: "directive", type: i2.TuiDropdownDirective, selector: "[tuiDropdown]:not(ng-container):not(ng-template)", inputs: ["tuiDropdown"], exportAs: ["tuiDropdown"] }, { kind: "directive", type: i2.TuiDropdownOpen, selector: "[tuiDropdown][tuiDropdownOpen],[tuiDropdown][tuiDropdownOpenChange]", inputs: ["tuiDropdownEnabled", "tuiDropdownOpen"], outputs: ["tuiDropdownOpenChange"] }, { kind: "component", type: TuiIcon, selector: "tui-icon", inputs: ["icon", "background"] }, { kind: "component", type: i3.TuiItemsWithMoreComponent, selector: "tui-items-with-more", outputs: ["lastIndexChange"] }, { kind: "directive", type: i3.TuiMore, selector: "[tuiMore]" }, { kind: "directive", type: i4.TuiItem, selector: "[tuiItem]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
52
52
  }
53
53
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiBreadcrumbs, decorators: [{
54
54
  type: Component,
@@ -67,7 +67,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
67
67
  tuiHintOptionsProvider({ direction: 'bottom' }),
68
68
  ], host: {
69
69
  '[attr.data-size]': 'size',
70
- }, template: "<ng-container *ngIf=\"items.changes | async\" />\n<ng-container *ngIf=\"itemsLimit > 1; else plain\">\n <ng-container *ngIf=\"itemsLimit !== 2\">\n <ng-container [ngTemplateOutlet]=\"items.first\" />\n <ng-container [ngTemplateOutlet]=\"separator\" />\n </ng-container>\n <tui-items-with-more\n side=\"start\"\n [itemsLimit]=\"itemsLimit - 2\"\n [required]=\"items.length + offset - 2\"\n >\n <ng-container *ngFor=\"let item of items; let last = last\">\n <ng-container *ngIf=\"item !== items.first || itemsLimit === 2\">\n <ng-container *tuiItem>\n <ng-container [ngTemplateOutlet]=\"item\" />\n <ng-container\n *ngIf=\"!last\"\n [ngTemplateOutlet]=\"separator\"\n />\n </ng-container>\n </ng-container>\n </ng-container>\n <ng-template\n let-index\n tuiMore\n >\n <span class=\"t-more\">\n <button\n appearance=\"flat\"\n size=\"xs\"\n tuiDropdownOpen\n tuiIconButton\n type=\"button\"\n [iconStart]=\"icons.ellipsis\"\n [tuiDropdown]=\"dropdown\"\n >\n {{ more() }}\n </button>\n <ng-container [ngTemplateOutlet]=\"separator\" />\n </span>\n <ng-template #dropdown>\n <tui-data-list size=\"s\">\n <ng-container *ngFor=\"let item of items; let i = index\">\n <span\n *ngIf=\"i + offset && i <= index && item !== items.last\"\n tuiOption\n class=\"t-option\"\n >\n <ng-container [ngTemplateOutlet]=\"item\" />\n </span>\n </ng-container>\n </tui-data-list>\n </ng-template>\n </ng-template>\n </tui-items-with-more>\n</ng-container>\n<ng-template #separator>\n <tui-icon\n *ngIf=\"options.icon.length > 1; else char\"\n class=\"t-icon\"\n [icon]=\"options.icon\"\n />\n <ng-template #char>\n <span class=\"t-char\">{{ options.icon }}</span>\n </ng-template>\n</ng-template>\n<ng-template #plain>\n <ng-container *ngFor=\"let item of items; let last = last\">\n <ng-container [ngTemplateOutlet]=\"item\" />\n <ng-container\n *ngIf=\"!last\"\n [ngTemplateOutlet]=\"separator\"\n />\n </ng-container>\n</ng-template>\n", styles: [":host{display:flex;align-items:center;white-space:nowrap;color:var(--tui-text-secondary)}:host[data-size=m]{font:var(--tui-font-text-s);line-height:1.5rem;block-size:1.5rem}:host[data-size=l]{font:var(--tui-font-text-m);line-height:2.5rem;block-size:2.5rem}.t-more{display:flex;align-items:center}.t-option ::ng-deep>*{color:var(--tui-text-primary)!important;background:transparent!important}.t-icon{margin:0 .5rem;font-size:1rem}.t-char{margin:0 .375rem}\n"] }]
70
+ }, template: "<ng-container *ngIf=\"items.changes | async\" />\n<ng-container *ngIf=\"itemsLimit > 1; else plain\">\n <ng-container *ngIf=\"itemsLimit !== 2\">\n <ng-container [ngTemplateOutlet]=\"items.first\" />\n <ng-container [ngTemplateOutlet]=\"separator\" />\n </ng-container>\n <tui-items-with-more\n side=\"start\"\n [itemsLimit]=\"itemsLimit - 2\"\n [required]=\"items.length + offset - 2\"\n >\n <ng-container *ngFor=\"let item of items; let last = last\">\n <ng-container *ngIf=\"item !== items.first || itemsLimit === 2\">\n <ng-container *tuiItem>\n <ng-container [ngTemplateOutlet]=\"item\" />\n <ng-container\n *ngIf=\"!last\"\n [ngTemplateOutlet]=\"separator\"\n />\n </ng-container>\n </ng-container>\n </ng-container>\n <ng-template\n let-index\n tuiMore\n >\n <span class=\"t-more\">\n <button\n appearance=\"flat\"\n size=\"xs\"\n tuiDropdownOpen\n tuiIconButton\n type=\"button\"\n [iconStart]=\"icons.ellipsis\"\n [tuiDropdown]=\"dropdown\"\n >\n {{ more() }}\n </button>\n <ng-container [ngTemplateOutlet]=\"separator\" />\n </span>\n <ng-template #dropdown>\n <tui-data-list size=\"s\">\n <ng-container *ngFor=\"let item of items; let i = index\">\n <span\n *ngIf=\"i + offset && i <= index && item !== items.last\"\n tuiOption\n class=\"t-option\"\n >\n <ng-container [ngTemplateOutlet]=\"item\" />\n </span>\n </ng-container>\n </tui-data-list>\n </ng-template>\n </ng-template>\n </tui-items-with-more>\n</ng-container>\n<ng-template #separator>\n <tui-icon\n *ngIf=\"options.icon.length > 1; else char\"\n class=\"t-icon\"\n [icon]=\"options.icon\"\n />\n <ng-template #char>\n <span class=\"t-char\">{{ options.icon }}</span>\n </ng-template>\n</ng-template>\n<ng-template #plain>\n <ng-container *ngFor=\"let item of items; let last = last\">\n <ng-container [ngTemplateOutlet]=\"item\" />\n <ng-container\n *ngIf=\"!last\"\n [ngTemplateOutlet]=\"separator\"\n />\n </ng-container>\n</ng-template>\n", styles: [":host{display:flex;align-items:center;white-space:nowrap;color:var(--tui-text-secondary)}:host[data-size=m]{font:var(--tui-font-text-s);line-height:1.5rem;block-size:1.5rem}:host[data-size=l]{font:var(--tui-font-text-m);line-height:2.5rem;block-size:2.5rem}:host ::ng-deep [tuiLink]{text-decoration:none}.t-more{display:flex;align-items:center}.t-option ::ng-deep>*{color:var(--tui-text-primary)!important;background:transparent!important;text-decoration:none}.t-icon{margin:0 .5rem;font-size:1rem}.t-char{margin:0 .375rem}\n"] }]
71
71
  }], propDecorators: { items: [{
72
72
  type: ContentChildren,
73
73
  args: [TuiItem, { read: TemplateRef }]
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-kit-components-breadcrumbs.mjs","sources":["../../../projects/kit/components/breadcrumbs/breadcrumbs.options.ts","../../../projects/kit/components/breadcrumbs/breadcrumbs.component.ts","../../../projects/kit/components/breadcrumbs/breadcrumbs.template.html","../../../projects/kit/components/breadcrumbs/taiga-ui-kit-components-breadcrumbs.ts"],"sourcesContent":["import type {Provider} from '@angular/core';\nimport {tuiCreateToken, tuiProvideOptions} from '@taiga-ui/cdk/utils/miscellaneous';\nimport type {TuiSizeL} from '@taiga-ui/core/types';\n\nexport interface TuiBreadcrumbsOptions {\n readonly icon: string;\n readonly size: TuiSizeL;\n readonly itemsLimit: number;\n}\n\nexport const TUI_BREADCRUMBS_DEFAULT_OPTIONS: TuiBreadcrumbsOptions = {\n icon: '@tui.chevron-right',\n size: 'm',\n itemsLimit: 0,\n};\n\nexport const TUI_BREADCRUMBS_OPTIONS = tuiCreateToken(TUI_BREADCRUMBS_DEFAULT_OPTIONS);\n\nexport function tuiBreadcrumbsOptionsProvider(\n options: Partial<TuiBreadcrumbsOptions>,\n): Provider {\n return tuiProvideOptions(\n TUI_BREADCRUMBS_OPTIONS,\n options,\n TUI_BREADCRUMBS_DEFAULT_OPTIONS,\n );\n}\n","import {AsyncPipe, NgForOf, NgIf, NgTemplateOutlet} from '@angular/common';\nimport type {QueryList} from '@angular/core';\nimport {\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n inject,\n Input,\n TemplateRef,\n} from '@angular/core';\nimport {toSignal} from '@angular/core/rxjs-interop';\nimport {EMPTY_QUERY} from '@taiga-ui/cdk/constants';\nimport {TuiItem} from '@taiga-ui/cdk/directives/item';\nimport {TuiButton} from '@taiga-ui/core/components/button';\nimport {TuiDataList} from '@taiga-ui/core/components/data-list';\nimport {TuiIcon} from '@taiga-ui/core/components/icon';\nimport {tuiLinkOptionsProvider} from '@taiga-ui/core/components/link';\nimport {TuiDropdown} from '@taiga-ui/core/directives/dropdown';\nimport {tuiHintOptionsProvider} from '@taiga-ui/core/directives/hint';\nimport {TUI_COMMON_ICONS} from '@taiga-ui/core/tokens';\nimport {TuiItemsWithMore} from '@taiga-ui/kit/components/items-with-more';\nimport {TUI_MORE_WORD} from '@taiga-ui/kit/tokens';\n\nimport type {TuiBreadcrumbsOptions} from './breadcrumbs.options';\nimport {TUI_BREADCRUMBS_OPTIONS} from './breadcrumbs.options';\n\n@Component({\n standalone: true,\n selector: 'tui-breadcrumbs',\n imports: [\n AsyncPipe,\n NgForOf,\n NgIf,\n NgTemplateOutlet,\n TuiButton,\n TuiDataList,\n TuiDropdown,\n TuiIcon,\n TuiItemsWithMore,\n ],\n templateUrl: './breadcrumbs.template.html',\n styleUrls: ['./breadcrumbs.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n tuiLinkOptionsProvider({appearance: 'action-grayscale'}),\n tuiHintOptionsProvider({direction: 'bottom'}),\n ],\n host: {\n '[attr.data-size]': 'size',\n },\n})\nexport class TuiBreadcrumbs {\n @ContentChildren(TuiItem, {read: TemplateRef})\n protected readonly items: QueryList<TemplateRef<Record<string, unknown>>> =\n EMPTY_QUERY;\n\n protected readonly options = inject(TUI_BREADCRUMBS_OPTIONS);\n protected readonly icons = inject(TUI_COMMON_ICONS);\n protected readonly more = toSignal(inject(TUI_MORE_WORD), {initialValue: ''});\n\n @Input()\n public size: TuiBreadcrumbsOptions['size'] = this.options.size;\n\n @Input()\n public itemsLimit = this.options.itemsLimit;\n\n protected get limit(): number {\n return this.itemsLimit ? this.itemsLimit - 2 : Infinity;\n }\n\n protected get offset(): number {\n return this.itemsLimit === 2 ? 1 : 0;\n }\n}\n","<ng-container *ngIf=\"items.changes | async\" />\n<ng-container *ngIf=\"itemsLimit > 1; else plain\">\n <ng-container *ngIf=\"itemsLimit !== 2\">\n <ng-container [ngTemplateOutlet]=\"items.first\" />\n <ng-container [ngTemplateOutlet]=\"separator\" />\n </ng-container>\n <tui-items-with-more\n side=\"start\"\n [itemsLimit]=\"itemsLimit - 2\"\n [required]=\"items.length + offset - 2\"\n >\n <ng-container *ngFor=\"let item of items; let last = last\">\n <ng-container *ngIf=\"item !== items.first || itemsLimit === 2\">\n <ng-container *tuiItem>\n <ng-container [ngTemplateOutlet]=\"item\" />\n <ng-container\n *ngIf=\"!last\"\n [ngTemplateOutlet]=\"separator\"\n />\n </ng-container>\n </ng-container>\n </ng-container>\n <ng-template\n let-index\n tuiMore\n >\n <span class=\"t-more\">\n <button\n appearance=\"flat\"\n size=\"xs\"\n tuiDropdownOpen\n tuiIconButton\n type=\"button\"\n [iconStart]=\"icons.ellipsis\"\n [tuiDropdown]=\"dropdown\"\n >\n {{ more() }}\n </button>\n <ng-container [ngTemplateOutlet]=\"separator\" />\n </span>\n <ng-template #dropdown>\n <tui-data-list size=\"s\">\n <ng-container *ngFor=\"let item of items; let i = index\">\n <span\n *ngIf=\"i + offset && i <= index && item !== items.last\"\n tuiOption\n class=\"t-option\"\n >\n <ng-container [ngTemplateOutlet]=\"item\" />\n </span>\n </ng-container>\n </tui-data-list>\n </ng-template>\n </ng-template>\n </tui-items-with-more>\n</ng-container>\n<ng-template #separator>\n <tui-icon\n *ngIf=\"options.icon.length > 1; else char\"\n class=\"t-icon\"\n [icon]=\"options.icon\"\n />\n <ng-template #char>\n <span class=\"t-char\">{{ options.icon }}</span>\n </ng-template>\n</ng-template>\n<ng-template #plain>\n <ng-container *ngFor=\"let item of items; let last = last\">\n <ng-container [ngTemplateOutlet]=\"item\" />\n <ng-container\n *ngIf=\"!last\"\n [ngTemplateOutlet]=\"separator\"\n />\n </ng-container>\n</ng-template>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"taiga-ui-kit-components-breadcrumbs.mjs","sources":["../../../projects/kit/components/breadcrumbs/breadcrumbs.options.ts","../../../projects/kit/components/breadcrumbs/breadcrumbs.component.ts","../../../projects/kit/components/breadcrumbs/breadcrumbs.template.html","../../../projects/kit/components/breadcrumbs/taiga-ui-kit-components-breadcrumbs.ts"],"sourcesContent":["import type {Provider} from '@angular/core';\nimport {tuiCreateToken, tuiProvideOptions} from '@taiga-ui/cdk/utils/miscellaneous';\nimport type {TuiSizeL} from '@taiga-ui/core/types';\n\nexport interface TuiBreadcrumbsOptions {\n readonly icon: string;\n readonly size: TuiSizeL;\n readonly itemsLimit: number;\n}\n\nexport const TUI_BREADCRUMBS_DEFAULT_OPTIONS: TuiBreadcrumbsOptions = {\n icon: '@tui.chevron-right',\n size: 'm',\n itemsLimit: 0,\n};\n\nexport const TUI_BREADCRUMBS_OPTIONS = tuiCreateToken(TUI_BREADCRUMBS_DEFAULT_OPTIONS);\n\nexport function tuiBreadcrumbsOptionsProvider(\n options: Partial<TuiBreadcrumbsOptions>,\n): Provider {\n return tuiProvideOptions(\n TUI_BREADCRUMBS_OPTIONS,\n options,\n TUI_BREADCRUMBS_DEFAULT_OPTIONS,\n );\n}\n","import {AsyncPipe, NgForOf, NgIf, NgTemplateOutlet} from '@angular/common';\nimport type {QueryList} from '@angular/core';\nimport {\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n inject,\n Input,\n TemplateRef,\n} from '@angular/core';\nimport {toSignal} from '@angular/core/rxjs-interop';\nimport {EMPTY_QUERY} from '@taiga-ui/cdk/constants';\nimport {TuiItem} from '@taiga-ui/cdk/directives/item';\nimport {TuiButton} from '@taiga-ui/core/components/button';\nimport {TuiDataList} from '@taiga-ui/core/components/data-list';\nimport {TuiIcon} from '@taiga-ui/core/components/icon';\nimport {tuiLinkOptionsProvider} from '@taiga-ui/core/components/link';\nimport {TuiDropdown} from '@taiga-ui/core/directives/dropdown';\nimport {tuiHintOptionsProvider} from '@taiga-ui/core/directives/hint';\nimport {TUI_COMMON_ICONS} from '@taiga-ui/core/tokens';\nimport {TuiItemsWithMore} from '@taiga-ui/kit/components/items-with-more';\nimport {TUI_MORE_WORD} from '@taiga-ui/kit/tokens';\n\nimport type {TuiBreadcrumbsOptions} from './breadcrumbs.options';\nimport {TUI_BREADCRUMBS_OPTIONS} from './breadcrumbs.options';\n\n@Component({\n standalone: true,\n selector: 'tui-breadcrumbs',\n imports: [\n AsyncPipe,\n NgForOf,\n NgIf,\n NgTemplateOutlet,\n TuiButton,\n TuiDataList,\n TuiDropdown,\n TuiIcon,\n TuiItemsWithMore,\n ],\n templateUrl: './breadcrumbs.template.html',\n styleUrls: ['./breadcrumbs.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n tuiLinkOptionsProvider({appearance: 'action-grayscale'}),\n tuiHintOptionsProvider({direction: 'bottom'}),\n ],\n host: {\n '[attr.data-size]': 'size',\n },\n})\nexport class TuiBreadcrumbs {\n @ContentChildren(TuiItem, {read: TemplateRef})\n protected readonly items: QueryList<TemplateRef<Record<string, unknown>>> =\n EMPTY_QUERY;\n\n protected readonly options = inject(TUI_BREADCRUMBS_OPTIONS);\n protected readonly icons = inject(TUI_COMMON_ICONS);\n protected readonly more = toSignal(inject(TUI_MORE_WORD), {initialValue: ''});\n\n @Input()\n public size: TuiBreadcrumbsOptions['size'] = this.options.size;\n\n @Input()\n public itemsLimit = this.options.itemsLimit;\n\n protected get limit(): number {\n return this.itemsLimit ? this.itemsLimit - 2 : Infinity;\n }\n\n protected get offset(): number {\n return this.itemsLimit === 2 ? 1 : 0;\n }\n}\n","<ng-container *ngIf=\"items.changes | async\" />\n<ng-container *ngIf=\"itemsLimit > 1; else plain\">\n <ng-container *ngIf=\"itemsLimit !== 2\">\n <ng-container [ngTemplateOutlet]=\"items.first\" />\n <ng-container [ngTemplateOutlet]=\"separator\" />\n </ng-container>\n <tui-items-with-more\n side=\"start\"\n [itemsLimit]=\"itemsLimit - 2\"\n [required]=\"items.length + offset - 2\"\n >\n <ng-container *ngFor=\"let item of items; let last = last\">\n <ng-container *ngIf=\"item !== items.first || itemsLimit === 2\">\n <ng-container *tuiItem>\n <ng-container [ngTemplateOutlet]=\"item\" />\n <ng-container\n *ngIf=\"!last\"\n [ngTemplateOutlet]=\"separator\"\n />\n </ng-container>\n </ng-container>\n </ng-container>\n <ng-template\n let-index\n tuiMore\n >\n <span class=\"t-more\">\n <button\n appearance=\"flat\"\n size=\"xs\"\n tuiDropdownOpen\n tuiIconButton\n type=\"button\"\n [iconStart]=\"icons.ellipsis\"\n [tuiDropdown]=\"dropdown\"\n >\n {{ more() }}\n </button>\n <ng-container [ngTemplateOutlet]=\"separator\" />\n </span>\n <ng-template #dropdown>\n <tui-data-list size=\"s\">\n <ng-container *ngFor=\"let item of items; let i = index\">\n <span\n *ngIf=\"i + offset && i <= index && item !== items.last\"\n tuiOption\n class=\"t-option\"\n >\n <ng-container [ngTemplateOutlet]=\"item\" />\n </span>\n </ng-container>\n </tui-data-list>\n </ng-template>\n </ng-template>\n </tui-items-with-more>\n</ng-container>\n<ng-template #separator>\n <tui-icon\n *ngIf=\"options.icon.length > 1; else char\"\n class=\"t-icon\"\n [icon]=\"options.icon\"\n />\n <ng-template #char>\n <span class=\"t-char\">{{ options.icon }}</span>\n </ng-template>\n</ng-template>\n<ng-template #plain>\n <ng-container *ngFor=\"let item of items; let last = last\">\n <ng-container [ngTemplateOutlet]=\"item\" />\n <ng-container\n *ngIf=\"!last\"\n [ngTemplateOutlet]=\"separator\"\n />\n </ng-container>\n</ng-template>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -129,7 +129,7 @@ class TuiCarouselComponent {
129
129
  this.onShift();
130
130
  }
131
131
  isDisabled(index) {
132
- return index < this.index || index > this.index + this.itemsCount;
132
+ return index < this.index || index >= this.index + this.itemsCount;
133
133
  }
134
134
  onIntersection({ intersectionRatio }, index) {
135
135
  if (intersectionRatio && intersectionRatio >= 0.5 && !this.transitioned) {
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-kit-components-carousel.mjs","sources":["../../../projects/kit/components/carousel/carousel.directive.ts","../../../projects/kit/components/carousel/carousel-autoscroll.directive.ts","../../../projects/kit/components/carousel/carousel-scroll.directive.ts","../../../projects/kit/components/carousel/carousel.component.ts","../../../projects/kit/components/carousel/carousel.template.html","../../../projects/kit/components/carousel/carousel-buttons.directive.ts","../../../projects/kit/components/carousel/carousel.ts","../../../projects/kit/components/carousel/taiga-ui-kit-components-carousel.ts"],"sourcesContent":["import {isPlatformServer} from '@angular/common';\nimport {Directive, inject, Input, PLATFORM_ID} from '@angular/core';\nimport {WA_PAGE_VISIBILITY} from '@ng-web-apis/common';\nimport {TUI_FALSE_HANDLER, TUI_TRUE_HANDLER} from '@taiga-ui/cdk/constants';\nimport {tuiIfMap, tuiTypedFromEvent} from '@taiga-ui/cdk/observables';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {\n BehaviorSubject,\n combineLatest,\n EMPTY,\n interval,\n map,\n merge,\n Observable,\n} from 'rxjs';\n\n@Directive({\n standalone: true,\n})\nexport class TuiCarouselDirective extends Observable<unknown> {\n private readonly el = tuiInjectElement();\n private readonly platform = inject(PLATFORM_ID);\n private readonly visible$ = inject(WA_PAGE_VISIBILITY);\n private readonly duration$ = new BehaviorSubject(0);\n private readonly running$ = merge(\n tuiTypedFromEvent(this.el, 'mouseenter').pipe(map(TUI_FALSE_HANDLER)),\n tuiTypedFromEvent(this.el, 'touchstart').pipe(map(TUI_FALSE_HANDLER)),\n tuiTypedFromEvent(this.el, 'touchend').pipe(map(TUI_TRUE_HANDLER)),\n tuiTypedFromEvent(this.el, 'mouseleave').pipe(map(TUI_TRUE_HANDLER)),\n this.visible$,\n );\n\n private readonly output$ = isPlatformServer(this.platform)\n ? EMPTY\n : combineLatest([this.duration$, this.running$]).pipe(\n tuiIfMap(\n ([duration]) => interval(duration),\n (values) => values.every(Boolean),\n ),\n );\n\n constructor() {\n super((subscriber) => this.output$.subscribe(subscriber));\n }\n\n @Input()\n public set duration(duration: number) {\n this.duration$.next(Number.isNaN(duration) ? this.duration$.value : duration);\n }\n}\n","import {Directive, inject, Output} from '@angular/core';\n\nimport {TuiCarouselDirective} from './carousel.directive';\n\n@Directive({\n standalone: true,\n selector: '[tuiCarouselAutoscroll]',\n})\nexport class TuiCarouselAutoscroll {\n @Output()\n public readonly tuiCarouselAutoscroll = inject(TuiCarouselDirective);\n}\n","import {Directive, Output} from '@angular/core';\nimport {tuiTypedFromEvent, tuiZonefreeScheduler} from '@taiga-ui/cdk/observables';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {filter, map, tap, throttleTime} from 'rxjs';\n\n@Directive({\n standalone: true,\n selector: '[tuiCarouselScroll]',\n})\nexport class TuiCarouselScroll {\n private readonly el = tuiInjectElement();\n\n @Output()\n public readonly tuiCarouselScroll = tuiTypedFromEvent(this.el, 'wheel').pipe(\n filter(({deltaX}) => Math.abs(deltaX) > 20),\n throttleTime(500, tuiZonefreeScheduler()),\n map(({deltaX}) => Math.sign(deltaX)),\n tap(() => {\n // So we always have space to scroll and overflow-behavior saves us from back nav\n this.el.scrollLeft = 10;\n }),\n );\n}\n","import {AsyncPipe, NgForOf, NgIf, NgTemplateOutlet} from '@angular/common';\nimport type {QueryList} from '@angular/core';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n EventEmitter,\n inject,\n Input,\n Output,\n TemplateRef,\n} from '@angular/core';\nimport {WaIntersectionObserver} from '@ng-web-apis/intersection-observer';\nimport {EMPTY_QUERY} from '@taiga-ui/cdk/constants';\nimport {TuiItem} from '@taiga-ui/cdk/directives/item';\nimport {TuiPan} from '@taiga-ui/cdk/directives/pan';\nimport type {TuiSwipeDirection} from '@taiga-ui/cdk/directives/swipe';\nimport {TUI_SWIPE_OPTIONS, TuiSwipe} from '@taiga-ui/cdk/directives/swipe';\nimport {TUI_IS_MOBILE} from '@taiga-ui/cdk/tokens';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {tuiClamp} from '@taiga-ui/cdk/utils/math';\nimport {tuiPure} from '@taiga-ui/cdk/utils/miscellaneous';\n\nimport {TuiCarouselDirective} from './carousel.directive';\nimport {TuiCarouselAutoscroll} from './carousel-autoscroll.directive';\nimport {TuiCarouselScroll} from './carousel-scroll.directive';\n\n@Component({\n standalone: true,\n selector: 'tui-carousel',\n imports: [\n AsyncPipe,\n NgForOf,\n NgIf,\n NgTemplateOutlet,\n TuiCarouselAutoscroll,\n TuiCarouselScroll,\n TuiPan,\n TuiSwipe,\n WaIntersectionObserver,\n ],\n templateUrl: './carousel.template.html',\n styleUrls: ['./carousel.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{provide: TUI_SWIPE_OPTIONS, useValue: {timeout: 200, threshold: 30}}],\n hostDirectives: [\n {\n directive: TuiCarouselDirective,\n inputs: ['duration'],\n },\n ],\n host: {\n '[class._transitioned]': 'transitioned',\n '[class._draggable]': 'draggable',\n '(touchstart)': 'onTransitioned(false)',\n '(touchend)': 'onTransitioned(true)',\n '(mousedown)': 'onTransitioned(false)',\n '(document:mouseup.zoneless)': 'onTransitioned(true)',\n },\n})\nexport class TuiCarouselComponent {\n private readonly el = tuiInjectElement();\n private readonly cdr = inject(ChangeDetectorRef);\n private readonly isMobile = inject(TUI_IS_MOBILE);\n private readonly directive = inject(TuiCarouselDirective);\n private translate = 0;\n\n @ContentChildren(TuiItem, {read: TemplateRef})\n protected readonly items: QueryList<TemplateRef<Record<string, unknown>>> =\n EMPTY_QUERY;\n\n protected transitioned = true;\n\n protected index = 0;\n\n @Input()\n public draggable = false;\n\n @Input()\n public itemsCount = 1;\n\n @Output()\n public readonly indexChange = new EventEmitter<number>();\n\n @Output()\n public readonly shift = new EventEmitter<number>();\n\n @Input('index')\n public set indexSetter(index: number) {\n this.index = index;\n this.directive.duration = NaN;\n }\n\n public next(): void {\n if (this.items && this.index === this.items.length - this.itemsCount) {\n return;\n }\n\n this.updateIndex(this.index + 1);\n }\n\n public prev(): void {\n this.updateIndex(this.index - 1);\n }\n\n protected get transform(): string {\n return `translateX(${100 * this.x}%)`;\n }\n\n @tuiPure\n protected getStyle(itemsCount: number): Partial<CSSStyleDeclaration> {\n const percent = `${100 / itemsCount}%`;\n\n return {\n flexBasis: percent,\n minWidth: percent,\n maxWidth: percent,\n };\n }\n\n protected onTransitioned(transitioned: boolean): void {\n this.transitioned = transitioned;\n\n if (!transitioned) {\n this.translate = this.computedTranslate;\n }\n\n this.onShift();\n }\n\n protected isDisabled(index: number): boolean {\n return index < this.index || index > this.index + this.itemsCount;\n }\n\n protected onIntersection(\n {intersectionRatio}: IntersectionObserverEntry,\n index: number,\n ): void {\n if (intersectionRatio && intersectionRatio >= 0.5 && !this.transitioned) {\n this.updateIndex(this.index < index ? index - this.itemsCount + 1 : index);\n }\n }\n\n protected onScroll(delta: number): void {\n if (!this.isMobile) {\n if (delta > 0) {\n this.next();\n } else {\n this.prev();\n }\n }\n }\n\n protected onPan(x: number): void {\n if (!this.computedDraggable) {\n return;\n }\n\n const min = 1 - this.items.length / this.itemsCount;\n\n this.translate = tuiClamp(x / this.el.clientWidth + this.translate, min, 0);\n\n this.onShift();\n }\n\n protected onSwipe(direction: TuiSwipeDirection): void {\n if (direction === 'left') {\n this.next();\n } else if (direction === 'right') {\n this.prev();\n }\n }\n\n protected onAutoscroll(): void {\n this.updateIndex(this.index === this.items.length - 1 ? 0 : this.index + 1);\n }\n\n protected onShift(): void {\n this.shift.emit(Math.abs((this.x % 1) + 0.5) * 2);\n }\n\n private get x(): number {\n return this.transitioned ? this.computedTranslate : this.translate;\n }\n\n private get computedTranslate(): number {\n return -this.index / this.itemsCount;\n }\n\n private get computedDraggable(): boolean {\n return this.isMobile || this.draggable;\n }\n\n private updateIndex(index: number): void {\n this.index = tuiClamp(index, 0, this.items.length - 1);\n this.indexChange.emit(this.index);\n this.cdr.markForCheck();\n }\n}\n","<ng-container *ngIf=\"items.changes | async\" />\n<div\n class=\"t-scroller\"\n (tuiCarouselScroll)=\"onScroll($event)\"\n>\n <div\n waIntersectionObserver\n waIntersectionThreshold=\"0.5\"\n class=\"t-wrapper\"\n >\n <div\n class=\"t-items\"\n [style.transform]=\"transform\"\n (tuiCarouselAutoscroll)=\"onAutoscroll()\"\n (tuiPan)=\"onPan($event[0])\"\n (tuiSwipe)=\"onSwipe($event.direction)\"\n >\n <fieldset\n *ngFor=\"let item of items; let i = index\"\n class=\"t-item\"\n [disabled]=\"isDisabled(i)\"\n [style]=\"getStyle(itemsCount)\"\n (waIntersectionObservee)=\"$event[0] && onIntersection($event[0], i)\"\n >\n <ng-container [ngTemplateOutlet]=\"item\" />\n </fieldset>\n </div>\n </div>\n</div>\n","import {Directive} from '@angular/core';\nimport {tuiButtonOptionsProvider} from '@taiga-ui/core/components/button';\n\n@Directive({\n standalone: true,\n selector: '[tuiCarouselButtons]',\n providers: [\n tuiButtonOptionsProvider({\n appearance: 'secondary',\n size: 'm',\n }),\n ],\n})\nexport class TuiCarouselButtons {}\n","import {TuiItem} from '@taiga-ui/cdk/directives/item';\n\nimport {TuiCarouselComponent} from './carousel.component';\nimport {TuiCarouselDirective} from './carousel.directive';\nimport {TuiCarouselAutoscroll} from './carousel-autoscroll.directive';\nimport {TuiCarouselButtons} from './carousel-buttons.directive';\nimport {TuiCarouselScroll} from './carousel-scroll.directive';\n\nexport const TuiCarousel = [\n TuiItem,\n TuiCarouselComponent,\n TuiCarouselDirective,\n TuiCarouselAutoscroll,\n TuiCarouselButtons,\n TuiCarouselScroll,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.TuiCarouselDirective"],"mappings":"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"}
1
+ {"version":3,"file":"taiga-ui-kit-components-carousel.mjs","sources":["../../../projects/kit/components/carousel/carousel.directive.ts","../../../projects/kit/components/carousel/carousel-autoscroll.directive.ts","../../../projects/kit/components/carousel/carousel-scroll.directive.ts","../../../projects/kit/components/carousel/carousel.component.ts","../../../projects/kit/components/carousel/carousel.template.html","../../../projects/kit/components/carousel/carousel-buttons.directive.ts","../../../projects/kit/components/carousel/carousel.ts","../../../projects/kit/components/carousel/taiga-ui-kit-components-carousel.ts"],"sourcesContent":["import {isPlatformServer} from '@angular/common';\nimport {Directive, inject, Input, PLATFORM_ID} from '@angular/core';\nimport {WA_PAGE_VISIBILITY} from '@ng-web-apis/common';\nimport {TUI_FALSE_HANDLER, TUI_TRUE_HANDLER} from '@taiga-ui/cdk/constants';\nimport {tuiIfMap, tuiTypedFromEvent} from '@taiga-ui/cdk/observables';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {\n BehaviorSubject,\n combineLatest,\n EMPTY,\n interval,\n map,\n merge,\n Observable,\n} from 'rxjs';\n\n@Directive({\n standalone: true,\n})\nexport class TuiCarouselDirective extends Observable<unknown> {\n private readonly el = tuiInjectElement();\n private readonly platform = inject(PLATFORM_ID);\n private readonly visible$ = inject(WA_PAGE_VISIBILITY);\n private readonly duration$ = new BehaviorSubject(0);\n private readonly running$ = merge(\n tuiTypedFromEvent(this.el, 'mouseenter').pipe(map(TUI_FALSE_HANDLER)),\n tuiTypedFromEvent(this.el, 'touchstart').pipe(map(TUI_FALSE_HANDLER)),\n tuiTypedFromEvent(this.el, 'touchend').pipe(map(TUI_TRUE_HANDLER)),\n tuiTypedFromEvent(this.el, 'mouseleave').pipe(map(TUI_TRUE_HANDLER)),\n this.visible$,\n );\n\n private readonly output$ = isPlatformServer(this.platform)\n ? EMPTY\n : combineLatest([this.duration$, this.running$]).pipe(\n tuiIfMap(\n ([duration]) => interval(duration),\n (values) => values.every(Boolean),\n ),\n );\n\n constructor() {\n super((subscriber) => this.output$.subscribe(subscriber));\n }\n\n @Input()\n public set duration(duration: number) {\n this.duration$.next(Number.isNaN(duration) ? this.duration$.value : duration);\n }\n}\n","import {Directive, inject, Output} from '@angular/core';\n\nimport {TuiCarouselDirective} from './carousel.directive';\n\n@Directive({\n standalone: true,\n selector: '[tuiCarouselAutoscroll]',\n})\nexport class TuiCarouselAutoscroll {\n @Output()\n public readonly tuiCarouselAutoscroll = inject(TuiCarouselDirective);\n}\n","import {Directive, Output} from '@angular/core';\nimport {tuiTypedFromEvent, tuiZonefreeScheduler} from '@taiga-ui/cdk/observables';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {filter, map, tap, throttleTime} from 'rxjs';\n\n@Directive({\n standalone: true,\n selector: '[tuiCarouselScroll]',\n})\nexport class TuiCarouselScroll {\n private readonly el = tuiInjectElement();\n\n @Output()\n public readonly tuiCarouselScroll = tuiTypedFromEvent(this.el, 'wheel').pipe(\n filter(({deltaX}) => Math.abs(deltaX) > 20),\n throttleTime(500, tuiZonefreeScheduler()),\n map(({deltaX}) => Math.sign(deltaX)),\n tap(() => {\n // So we always have space to scroll and overflow-behavior saves us from back nav\n this.el.scrollLeft = 10;\n }),\n );\n}\n","import {AsyncPipe, NgForOf, NgIf, NgTemplateOutlet} from '@angular/common';\nimport type {QueryList} from '@angular/core';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n EventEmitter,\n inject,\n Input,\n Output,\n TemplateRef,\n} from '@angular/core';\nimport {WaIntersectionObserver} from '@ng-web-apis/intersection-observer';\nimport {EMPTY_QUERY} from '@taiga-ui/cdk/constants';\nimport {TuiItem} from '@taiga-ui/cdk/directives/item';\nimport {TuiPan} from '@taiga-ui/cdk/directives/pan';\nimport type {TuiSwipeDirection} from '@taiga-ui/cdk/directives/swipe';\nimport {TUI_SWIPE_OPTIONS, TuiSwipe} from '@taiga-ui/cdk/directives/swipe';\nimport {TUI_IS_MOBILE} from '@taiga-ui/cdk/tokens';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {tuiClamp} from '@taiga-ui/cdk/utils/math';\nimport {tuiPure} from '@taiga-ui/cdk/utils/miscellaneous';\n\nimport {TuiCarouselDirective} from './carousel.directive';\nimport {TuiCarouselAutoscroll} from './carousel-autoscroll.directive';\nimport {TuiCarouselScroll} from './carousel-scroll.directive';\n\n@Component({\n standalone: true,\n selector: 'tui-carousel',\n imports: [\n AsyncPipe,\n NgForOf,\n NgIf,\n NgTemplateOutlet,\n TuiCarouselAutoscroll,\n TuiCarouselScroll,\n TuiPan,\n TuiSwipe,\n WaIntersectionObserver,\n ],\n templateUrl: './carousel.template.html',\n styleUrls: ['./carousel.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{provide: TUI_SWIPE_OPTIONS, useValue: {timeout: 200, threshold: 30}}],\n hostDirectives: [\n {\n directive: TuiCarouselDirective,\n inputs: ['duration'],\n },\n ],\n host: {\n '[class._transitioned]': 'transitioned',\n '[class._draggable]': 'draggable',\n '(touchstart)': 'onTransitioned(false)',\n '(touchend)': 'onTransitioned(true)',\n '(mousedown)': 'onTransitioned(false)',\n '(document:mouseup.zoneless)': 'onTransitioned(true)',\n },\n})\nexport class TuiCarouselComponent {\n private readonly el = tuiInjectElement();\n private readonly cdr = inject(ChangeDetectorRef);\n private readonly isMobile = inject(TUI_IS_MOBILE);\n private readonly directive = inject(TuiCarouselDirective);\n private translate = 0;\n\n @ContentChildren(TuiItem, {read: TemplateRef})\n protected readonly items: QueryList<TemplateRef<Record<string, unknown>>> =\n EMPTY_QUERY;\n\n protected transitioned = true;\n\n protected index = 0;\n\n @Input()\n public draggable = false;\n\n @Input()\n public itemsCount = 1;\n\n @Output()\n public readonly indexChange = new EventEmitter<number>();\n\n @Output()\n public readonly shift = new EventEmitter<number>();\n\n @Input('index')\n public set indexSetter(index: number) {\n this.index = index;\n this.directive.duration = NaN;\n }\n\n public next(): void {\n if (this.items && this.index === this.items.length - this.itemsCount) {\n return;\n }\n\n this.updateIndex(this.index + 1);\n }\n\n public prev(): void {\n this.updateIndex(this.index - 1);\n }\n\n protected get transform(): string {\n return `translateX(${100 * this.x}%)`;\n }\n\n @tuiPure\n protected getStyle(itemsCount: number): Partial<CSSStyleDeclaration> {\n const percent = `${100 / itemsCount}%`;\n\n return {\n flexBasis: percent,\n minWidth: percent,\n maxWidth: percent,\n };\n }\n\n protected onTransitioned(transitioned: boolean): void {\n this.transitioned = transitioned;\n\n if (!transitioned) {\n this.translate = this.computedTranslate;\n }\n\n this.onShift();\n }\n\n protected isDisabled(index: number): boolean {\n return index < this.index || index >= this.index + this.itemsCount;\n }\n\n protected onIntersection(\n {intersectionRatio}: IntersectionObserverEntry,\n index: number,\n ): void {\n if (intersectionRatio && intersectionRatio >= 0.5 && !this.transitioned) {\n this.updateIndex(this.index < index ? index - this.itemsCount + 1 : index);\n }\n }\n\n protected onScroll(delta: number): void {\n if (!this.isMobile) {\n if (delta > 0) {\n this.next();\n } else {\n this.prev();\n }\n }\n }\n\n protected onPan(x: number): void {\n if (!this.computedDraggable) {\n return;\n }\n\n const min = 1 - this.items.length / this.itemsCount;\n\n this.translate = tuiClamp(x / this.el.clientWidth + this.translate, min, 0);\n\n this.onShift();\n }\n\n protected onSwipe(direction: TuiSwipeDirection): void {\n if (direction === 'left') {\n this.next();\n } else if (direction === 'right') {\n this.prev();\n }\n }\n\n protected onAutoscroll(): void {\n this.updateIndex(this.index === this.items.length - 1 ? 0 : this.index + 1);\n }\n\n protected onShift(): void {\n this.shift.emit(Math.abs((this.x % 1) + 0.5) * 2);\n }\n\n private get x(): number {\n return this.transitioned ? this.computedTranslate : this.translate;\n }\n\n private get computedTranslate(): number {\n return -this.index / this.itemsCount;\n }\n\n private get computedDraggable(): boolean {\n return this.isMobile || this.draggable;\n }\n\n private updateIndex(index: number): void {\n this.index = tuiClamp(index, 0, this.items.length - 1);\n this.indexChange.emit(this.index);\n this.cdr.markForCheck();\n }\n}\n","<ng-container *ngIf=\"items.changes | async\" />\n<div\n class=\"t-scroller\"\n (tuiCarouselScroll)=\"onScroll($event)\"\n>\n <div\n waIntersectionObserver\n waIntersectionThreshold=\"0.5\"\n class=\"t-wrapper\"\n >\n <div\n class=\"t-items\"\n [style.transform]=\"transform\"\n (tuiCarouselAutoscroll)=\"onAutoscroll()\"\n (tuiPan)=\"onPan($event[0])\"\n (tuiSwipe)=\"onSwipe($event.direction)\"\n >\n <fieldset\n *ngFor=\"let item of items; let i = index\"\n class=\"t-item\"\n [disabled]=\"isDisabled(i)\"\n [style]=\"getStyle(itemsCount)\"\n (waIntersectionObservee)=\"$event[0] && onIntersection($event[0], i)\"\n >\n <ng-container [ngTemplateOutlet]=\"item\" />\n </fieldset>\n </div>\n </div>\n</div>\n","import {Directive} from '@angular/core';\nimport {tuiButtonOptionsProvider} from '@taiga-ui/core/components/button';\n\n@Directive({\n standalone: true,\n selector: '[tuiCarouselButtons]',\n providers: [\n tuiButtonOptionsProvider({\n appearance: 'secondary',\n size: 'm',\n }),\n ],\n})\nexport class TuiCarouselButtons {}\n","import {TuiItem} from '@taiga-ui/cdk/directives/item';\n\nimport {TuiCarouselComponent} from './carousel.component';\nimport {TuiCarouselDirective} from './carousel.directive';\nimport {TuiCarouselAutoscroll} from './carousel-autoscroll.directive';\nimport {TuiCarouselButtons} from './carousel-buttons.directive';\nimport {TuiCarouselScroll} from './carousel-scroll.directive';\n\nexport const TuiCarousel = [\n TuiItem,\n TuiCarouselComponent,\n TuiCarouselDirective,\n TuiCarouselAutoscroll,\n TuiCarouselButtons,\n TuiCarouselScroll,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.TuiCarouselDirective"],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ import * as i0 from '@angular/core';
2
+ import { Component, ViewEncapsulation, ChangeDetectionStrategy, Directive, Input } from '@angular/core';
3
+ import { tuiWithStyles } from '@taiga-ui/cdk/utils/miscellaneous';
4
+
5
+ class TuiFloatingContainerStyles {
6
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiFloatingContainerStyles, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiFloatingContainerStyles, isStandalone: true, selector: "ng-component", host: { classAttribute: "tui-floating-container" }, ngImport: i0, template: '', isInline: true, styles: ["[tuiFloatingContainer]{transition-property:bottom;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;position:sticky;bottom:calc(100 * var(--tui-viewport-vh) - var(--tui-viewport-height) - var(--tui-viewport-y));z-index:1;margin-top:1rem;padding-bottom:calc(1rem + env(safe-area-inset-bottom));text-align:center;font:var(--tui-font-text-ui-s);color:var(--tui-text-secondary)}[tuiFloatingContainer],[tuiFloatingContainer]>tui-elastic-container>.t-wrapper{display:flex;flex-direction:column;gap:.5rem}[tuiFloatingContainer]>*,[tuiFloatingContainer]>tui-elastic-container>.t-wrapper>*{inline-size:100%}[tuiFloatingContainer]:has(>*:only-child:not(tui-elastic-container)),[tuiFloatingContainer]:has(*.ng-animating:first-child~.ng-animating:last-child){padding-bottom:calc(1.5rem + env(safe-area-inset-bottom))}[tuiFloatingContainer]:before{top:0;left:0;bottom:0;right:0;transition-property:background;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;content:\"\";position:absolute;left:-1rem;right:-1rem;z-index:-1;background:var(--t-background, var(--tui-background-elevation-1));-webkit-mask-image:linear-gradient(180deg,transparent,black 2.5rem);mask-image:linear-gradient(180deg,transparent,black 2.5rem)}tui-sheet-dialog [tuiFloatingContainer]{margin-bottom:calc(-1.5rem - env(safe-area-inset-bottom))}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
8
+ }
9
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiFloatingContainerStyles, decorators: [{
10
+ type: Component,
11
+ args: [{ standalone: true, template: '', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
12
+ class: 'tui-floating-container',
13
+ }, styles: ["[tuiFloatingContainer]{transition-property:bottom;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;position:sticky;bottom:calc(100 * var(--tui-viewport-vh) - var(--tui-viewport-height) - var(--tui-viewport-y));z-index:1;margin-top:1rem;padding-bottom:calc(1rem + env(safe-area-inset-bottom));text-align:center;font:var(--tui-font-text-ui-s);color:var(--tui-text-secondary)}[tuiFloatingContainer],[tuiFloatingContainer]>tui-elastic-container>.t-wrapper{display:flex;flex-direction:column;gap:.5rem}[tuiFloatingContainer]>*,[tuiFloatingContainer]>tui-elastic-container>.t-wrapper>*{inline-size:100%}[tuiFloatingContainer]:has(>*:only-child:not(tui-elastic-container)),[tuiFloatingContainer]:has(*.ng-animating:first-child~.ng-animating:last-child){padding-bottom:calc(1.5rem + env(safe-area-inset-bottom))}[tuiFloatingContainer]:before{top:0;left:0;bottom:0;right:0;transition-property:background;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;content:\"\";position:absolute;left:-1rem;right:-1rem;z-index:-1;background:var(--t-background, var(--tui-background-elevation-1));-webkit-mask-image:linear-gradient(180deg,transparent,black 2.5rem);mask-image:linear-gradient(180deg,transparent,black 2.5rem)}tui-sheet-dialog [tuiFloatingContainer]{margin-bottom:calc(-1.5rem - env(safe-area-inset-bottom))}\n"] }]
14
+ }] });
15
+ class TuiFloatingContainer {
16
+ constructor() {
17
+ this.nothing = tuiWithStyles(TuiFloatingContainerStyles);
18
+ this.background = '';
19
+ }
20
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiFloatingContainer, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
21
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: TuiFloatingContainer, isStandalone: true, selector: "[tuiFloatingContainer]", inputs: { background: ["tuiFloatingContainer", "background"] }, host: { attributes: { "tuiFloatingContainer": "" }, properties: { "style.--t-background": "background" } }, ngImport: i0 }); }
22
+ }
23
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiFloatingContainer, decorators: [{
24
+ type: Directive,
25
+ args: [{
26
+ standalone: true,
27
+ selector: '[tuiFloatingContainer]',
28
+ host: {
29
+ tuiFloatingContainer: '',
30
+ '[style.--t-background]': 'background',
31
+ },
32
+ }]
33
+ }], propDecorators: { background: [{
34
+ type: Input,
35
+ args: ['tuiFloatingContainer']
36
+ }] } });
37
+
38
+ /**
39
+ * Generated bundle index. Do not edit.
40
+ */
41
+
42
+ export { TuiFloatingContainer };
43
+ //# sourceMappingURL=taiga-ui-kit-components-floating-container.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"taiga-ui-kit-components-floating-container.mjs","sources":["../../../projects/kit/components/floating-container/floating-container.directive.ts","../../../projects/kit/components/floating-container/taiga-ui-kit-components-floating-container.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n Directive,\n Input,\n ViewEncapsulation,\n} from '@angular/core';\nimport {tuiWithStyles} from '@taiga-ui/cdk/utils/miscellaneous';\n\n@Component({\n standalone: true,\n template: '',\n styleUrls: ['./floating-container.less'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'tui-floating-container',\n },\n})\nclass TuiFloatingContainerStyles {}\n\n@Directive({\n standalone: true,\n selector: '[tuiFloatingContainer]',\n host: {\n tuiFloatingContainer: '',\n '[style.--t-background]': 'background',\n },\n})\nexport class TuiFloatingContainer {\n protected readonly nothing = tuiWithStyles(TuiFloatingContainerStyles);\n\n @Input('tuiFloatingContainer')\n public background = '';\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;AASA,MAUM,0BAA0B,CAAA;+GAA1B,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,0BAA0B,4HARlB,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,+1CAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;4FAQV,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAV/B,SAAS;iCACM,IAAI,EAAA,QAAA,EACN,EAAE,EAAA,aAAA,EAEG,iBAAiB,CAAC,IAAI,EACpB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EACzC,IAAA,EAAA;AACF,wBAAA,KAAK,EAAE,wBAAwB;AAClC,qBAAA,EAAA,MAAA,EAAA,CAAA,+1CAAA,CAAA,EAAA,CAAA;;AAIL,MAQa,oBAAoB,CAAA;AARjC,IAAA,WAAA,GAAA;AASuB,QAAA,IAAA,CAAA,OAAO,GAAG,aAAa,CAAC,0BAA0B,CAAC,CAAC;QAGhE,IAAU,CAAA,UAAA,GAAG,EAAE,CAAC;AAC1B,KAAA;+GALY,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,CAAA,sBAAA,EAAA,YAAA,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,sBAAA,EAAA,EAAA,EAAA,EAAA,UAAA,EAAA,EAAA,sBAAA,EAAA,YAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;4FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBARhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,wBAAwB;AAClC,oBAAA,IAAI,EAAE;AACF,wBAAA,oBAAoB,EAAE,EAAE;AACxB,wBAAA,wBAAwB,EAAE,YAAY;AACzC,qBAAA;AACJ,iBAAA,CAAA;8BAKU,UAAU,EAAA,CAAA;sBADhB,KAAK;uBAAC,sBAAsB,CAAA;;;AChCjC;;AAEG;;;;"}
@@ -79,14 +79,14 @@ class TuiInputNumberDirective extends TuiControl {
79
79
  const takeThousand = thousandSeparator.repeat(5).length;
80
80
  return DEFAULT_MAX_LENGTH + precision + takeThousand;
81
81
  });
82
- this.mask = tuiMaskito(computed(({ decimalMode, ...numberFormat } = this.numberFormat()) => this.computeMask({
82
+ this.mask = tuiMaskito(computed(({ decimalMode, ...numberFormat } = this.numberFormat(), maximumFractionDigits = this.precision()) => this.computeMask({
83
83
  ...numberFormat,
84
- precision: this.precision(),
84
+ maximumFractionDigits,
85
85
  min: this.min(),
86
86
  max: this.max(),
87
87
  prefix: this.prefix(),
88
88
  postfix: this.postfix(),
89
- decimalZeroPadding: decimalMode === 'always',
89
+ minimumFractionDigits: decimalMode === 'always' ? maximumFractionDigits : 0,
90
90
  })));
91
91
  this.min = signal(this.options.min);
92
92
  this.max = signal(this.options.max);
@@ -244,14 +244,14 @@ class TuiInputNumberStep {
244
244
  this.inputNumber.setValue(newValue);
245
245
  }
246
246
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiInputNumberStep, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
247
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiInputNumberStep, isStandalone: true, selector: "input[tuiInputNumber][step]", inputs: { stepSetter: ["step", "stepSetter"] }, host: { attributes: { "ngSkipHydration": "true" }, listeners: { "keydown.arrowDown": "onStep(-step())", "keydown.arrowUp": "onStep(step())" }, properties: { "class._with-buttons": "step()" } }, ngImport: i0, template: "<ng-container *tuiTextfieldContent>\n <section\n *ngIf=\"step()\"\n class=\"t-input-number-buttons\"\n >\n <button\n size=\"s\"\n tabindex=\"-1\"\n tuiIconButton\n type=\"button\"\n class=\"t-button\"\n [appearance]=\"textfieldOptions.appearance()\"\n [disabled]=\"!inputNumber.interactive() || inputNumber.value()! >= inputNumber.max()\"\n [iconStart]=\"options.icons.increase\"\n (click.prevent)=\"onStep(step())\"\n (mousedown.prevent)=\"element.focus()\"\n >\n +\n </button>\n\n <button\n size=\"s\"\n tabindex=\"-1\"\n tuiIconButton\n type=\"button\"\n class=\"t-button\"\n [appearance]=\"textfieldOptions.appearance()\"\n [disabled]=\"!inputNumber.interactive() || inputNumber.value()! <= inputNumber.min()\"\n [iconStart]=\"options.icons.decrease\"\n (click.prevent)=\"onStep(-step())\"\n (mousedown.prevent)=\"element.focus()\"\n >\n -\n </button>\n </section>\n</ng-container>\n", styles: [".t-input-number-buttons.t-input-number-buttons{position:absolute;right:0;display:flex;block-size:var(--t-height);flex-direction:column;gap:.125rem;border-radius:inherit}tui-textfield[data-size=s] .t-input-number-buttons.t-input-number-buttons{flex-direction:row-reverse}.t-input-number-buttons.t-input-number-buttons>*{flex:1 1 0;border-radius:0}.t-input-number-buttons.t-input-number-buttons>*:first-child{border-top-right-radius:inherit}.t-input-number-buttons.t-input-number-buttons>*:last-child{border-bottom-right-radius:inherit}tui-textfield[data-size=l] .t-input-number-buttons.t-input-number-buttons>*{inline-size:var(--tui-height-m)}tui-textfield[data-size=s] .t-input-number-buttons.t-input-number-buttons>*:first-child{border-top-right-radius:inherit;border-bottom-right-radius:inherit}tui-textfield[data-size=s] .t-input-number-buttons.t-input-number-buttons>*:last-child{border-radius:0}[tuiInputNumber]._with-buttons{border-top-right-radius:0;border-bottom-right-radius:0}tui-textfield[data-size=l]{--t-input-number-offset-end: calc(var(--tui-height-m) + .125rem)}tui-textfield[data-size=m]{--t-input-number-offset-end: calc(var(--tui-height-s) + .125rem)}tui-textfield[data-size=s]{--t-input-number-offset-end: calc(2 * var(--tui-height-s) + .25rem)}[tuiInputNumber]._with-buttons,[tuiInputNumber]._with-buttons~.t-template{inline-size:calc(100% - var(--t-input-number-offset-end))}[tuiInputNumber]._with-buttons~.t-content{margin-inline-end:var(--t-input-number-offset-end)}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "directive", type: TuiTextfieldContent, selector: "ng-template[tuiTextfieldContent]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
247
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiInputNumberStep, isStandalone: true, selector: "input[tuiInputNumber][step]", inputs: { stepSetter: ["step", "stepSetter"] }, host: { attributes: { "ngSkipHydration": "true" }, listeners: { "keydown.arrowDown.prevent": "onStep(-step())", "keydown.arrowUp.prevent": "onStep(step())" }, properties: { "class._with-buttons": "step()" } }, ngImport: i0, template: "<ng-container *tuiTextfieldContent>\n <section\n *ngIf=\"step()\"\n class=\"t-input-number-buttons\"\n >\n <button\n size=\"s\"\n tabindex=\"-1\"\n tuiIconButton\n type=\"button\"\n class=\"t-button\"\n [appearance]=\"textfieldOptions.appearance()\"\n [disabled]=\"!inputNumber.interactive() || inputNumber.value()! >= inputNumber.max()\"\n [iconStart]=\"options.icons.increase\"\n (click.prevent)=\"onStep(step())\"\n (mousedown.prevent)=\"element.focus()\"\n >\n +\n </button>\n\n <button\n size=\"s\"\n tabindex=\"-1\"\n tuiIconButton\n type=\"button\"\n class=\"t-button\"\n [appearance]=\"textfieldOptions.appearance()\"\n [disabled]=\"!inputNumber.interactive() || inputNumber.value()! <= inputNumber.min()\"\n [iconStart]=\"options.icons.decrease\"\n (click.prevent)=\"onStep(-step())\"\n (mousedown.prevent)=\"element.focus()\"\n >\n -\n </button>\n </section>\n</ng-container>\n", styles: [".t-input-number-buttons.t-input-number-buttons{position:absolute;right:0;display:flex;block-size:var(--t-height);flex-direction:column;gap:.125rem;border-radius:inherit}tui-textfield[data-size=s] .t-input-number-buttons.t-input-number-buttons{flex-direction:row-reverse}.t-input-number-buttons.t-input-number-buttons>*{flex:1 1 0;border-radius:0}.t-input-number-buttons.t-input-number-buttons>*:first-child{border-top-right-radius:inherit}.t-input-number-buttons.t-input-number-buttons>*:last-child{border-bottom-right-radius:inherit}tui-textfield[data-size=l] .t-input-number-buttons.t-input-number-buttons>*{inline-size:var(--tui-height-m)}tui-textfield[data-size=s] .t-input-number-buttons.t-input-number-buttons>*:first-child{border-top-right-radius:inherit;border-bottom-right-radius:inherit}tui-textfield[data-size=s] .t-input-number-buttons.t-input-number-buttons>*:last-child{border-radius:0}[tuiInputNumber]._with-buttons{border-top-right-radius:0;border-bottom-right-radius:0}tui-textfield[data-size=l]{--t-input-number-offset-end: calc(var(--tui-height-m) + .125rem)}tui-textfield[data-size=m]{--t-input-number-offset-end: calc(var(--tui-height-s) + .125rem)}tui-textfield[data-size=s]{--t-input-number-offset-end: calc(2 * var(--tui-height-s) + .25rem)}[tuiInputNumber]._with-buttons,[tuiInputNumber]._with-buttons~.t-template{inline-size:calc(100% - var(--t-input-number-offset-end))}[tuiInputNumber]._with-buttons~.t-content{margin-inline-end:var(--t-input-number-offset-end)}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "directive", type: TuiTextfieldContent, selector: "ng-template[tuiTextfieldContent]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
248
248
  }
249
249
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiInputNumberStep, decorators: [{
250
250
  type: Component,
251
251
  args: [{ standalone: true, selector: 'input[tuiInputNumber][step]', imports: [NgIf, TuiButton, TuiTextfieldContent], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
252
252
  ngSkipHydration: 'true',
253
- '(keydown.arrowDown)': 'onStep(-step())',
254
- '(keydown.arrowUp)': 'onStep(step())',
253
+ '(keydown.arrowDown.prevent)': 'onStep(-step())',
254
+ '(keydown.arrowUp.prevent)': 'onStep(step())',
255
255
  '[class._with-buttons]': 'step()',
256
256
  }, template: "<ng-container *tuiTextfieldContent>\n <section\n *ngIf=\"step()\"\n class=\"t-input-number-buttons\"\n >\n <button\n size=\"s\"\n tabindex=\"-1\"\n tuiIconButton\n type=\"button\"\n class=\"t-button\"\n [appearance]=\"textfieldOptions.appearance()\"\n [disabled]=\"!inputNumber.interactive() || inputNumber.value()! >= inputNumber.max()\"\n [iconStart]=\"options.icons.increase\"\n (click.prevent)=\"onStep(step())\"\n (mousedown.prevent)=\"element.focus()\"\n >\n +\n </button>\n\n <button\n size=\"s\"\n tabindex=\"-1\"\n tuiIconButton\n type=\"button\"\n class=\"t-button\"\n [appearance]=\"textfieldOptions.appearance()\"\n [disabled]=\"!inputNumber.interactive() || inputNumber.value()! <= inputNumber.min()\"\n [iconStart]=\"options.icons.decrease\"\n (click.prevent)=\"onStep(-step())\"\n (mousedown.prevent)=\"element.focus()\"\n >\n -\n </button>\n </section>\n</ng-container>\n", styles: [".t-input-number-buttons.t-input-number-buttons{position:absolute;right:0;display:flex;block-size:var(--t-height);flex-direction:column;gap:.125rem;border-radius:inherit}tui-textfield[data-size=s] .t-input-number-buttons.t-input-number-buttons{flex-direction:row-reverse}.t-input-number-buttons.t-input-number-buttons>*{flex:1 1 0;border-radius:0}.t-input-number-buttons.t-input-number-buttons>*:first-child{border-top-right-radius:inherit}.t-input-number-buttons.t-input-number-buttons>*:last-child{border-bottom-right-radius:inherit}tui-textfield[data-size=l] .t-input-number-buttons.t-input-number-buttons>*{inline-size:var(--tui-height-m)}tui-textfield[data-size=s] .t-input-number-buttons.t-input-number-buttons>*:first-child{border-top-right-radius:inherit;border-bottom-right-radius:inherit}tui-textfield[data-size=s] .t-input-number-buttons.t-input-number-buttons>*:last-child{border-radius:0}[tuiInputNumber]._with-buttons{border-top-right-radius:0;border-bottom-right-radius:0}tui-textfield[data-size=l]{--t-input-number-offset-end: calc(var(--tui-height-m) + .125rem)}tui-textfield[data-size=m]{--t-input-number-offset-end: calc(var(--tui-height-s) + .125rem)}tui-textfield[data-size=s]{--t-input-number-offset-end: calc(2 * var(--tui-height-s) + .25rem)}[tuiInputNumber]._with-buttons,[tuiInputNumber]._with-buttons~.t-template{inline-size:calc(100% - var(--t-input-number-offset-end))}[tuiInputNumber]._with-buttons~.t-content{margin-inline-end:var(--t-input-number-offset-end)}\n"] }]
257
257
  }], propDecorators: { stepSetter: [{