@taiga-ui/kit 4.2.0 → 4.3.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 (148) hide show
  1. package/components/carousel/carousel.component.d.ts +1 -1
  2. package/components/input-phone-international/input-phone-international.options.d.ts +1 -1
  3. package/components/segmented/segmented.directive.d.ts +2 -3
  4. package/components/slider/slider.component.d.ts +1 -1
  5. package/components/tiles/tile-handle.directive.d.ts +1 -1
  6. package/directives/button-select/button-select.directive.d.ts +12 -0
  7. package/directives/button-select/index.d.ts +1 -0
  8. package/directives/index.d.ts +1 -0
  9. package/esm2022/components/accordion/accordion-item.component.mjs +10 -19
  10. package/esm2022/components/avatar/avatar-labeled.component.mjs +3 -6
  11. package/esm2022/components/avatar/avatar-stack.component.mjs +6 -7
  12. package/esm2022/components/breadcrumbs/breadcrumbs.component.mjs +6 -7
  13. package/esm2022/components/button-loading/button-loading.component.mjs +3 -5
  14. package/esm2022/components/calendar-month/calendar-month.component.mjs +6 -7
  15. package/esm2022/components/calendar-range/calendar-range.component.mjs +5 -6
  16. package/esm2022/components/carousel/carousel.component.mjs +17 -28
  17. package/esm2022/components/checkbox/checkbox.options.mjs +3 -3
  18. package/esm2022/components/compass/compass.component.mjs +6 -7
  19. package/esm2022/components/elastic-container/elastic-container.component.mjs +8 -11
  20. package/esm2022/components/elastic-container/elastic-container.directive.mjs +2 -2
  21. package/esm2022/components/files/file/file.component.mjs +6 -7
  22. package/esm2022/components/files/input-files/input-files-validator.directive.mjs +6 -6
  23. package/esm2022/components/files/input-files/input-files.component.mjs +3 -5
  24. package/esm2022/components/filter/filter.component.mjs +6 -7
  25. package/esm2022/components/input-inline/input-inline.component.mjs +5 -6
  26. package/esm2022/components/input-phone-international/input-phone-international.component.mjs +3 -3
  27. package/esm2022/components/input-phone-international/input-phone-international.options.mjs +3 -3
  28. package/esm2022/components/items-with-more/items-with-more.service.mjs +2 -2
  29. package/esm2022/components/line-clamp/line-clamp-box.component.mjs +7 -8
  30. package/esm2022/components/line-clamp/line-clamp.component.mjs +5 -6
  31. package/esm2022/components/pagination/pagination.component.mjs +4 -12
  32. package/esm2022/components/pdf-viewer/pdf-viewer.component.mjs +4 -6
  33. package/esm2022/components/pin/pin.directive.mjs +6 -6
  34. package/esm2022/components/preview/pagination/preview-pagination.component.mjs +6 -9
  35. package/esm2022/components/progress/progress-bar/progress-bar.component.mjs +7 -10
  36. package/esm2022/components/progress/progress-bar/progress-color-segments.directive.mjs +2 -2
  37. package/esm2022/components/progress/progress-circle/progress-circle.component.mjs +8 -13
  38. package/esm2022/components/radio-list/radio-list.component.mjs +7 -10
  39. package/esm2022/components/range/range.component.mjs +8 -18
  40. package/esm2022/components/rating/rating.component.mjs +9 -19
  41. package/esm2022/components/segmented/segmented.component.mjs +8 -9
  42. package/esm2022/components/segmented/segmented.directive.mjs +17 -21
  43. package/esm2022/components/slider/helpers/slider-key-steps.directive.mjs +4 -8
  44. package/esm2022/components/slider/helpers/slider-readonly.directive.mjs +7 -9
  45. package/esm2022/components/slider/slider.component.mjs +8 -12
  46. package/esm2022/components/stepper/step.component.mjs +12 -23
  47. package/esm2022/components/stepper/stepper.component.mjs +12 -21
  48. package/esm2022/components/switch/switch.component.mjs +4 -6
  49. package/esm2022/components/tabs/tabs-horizontal.directive.mjs +7 -13
  50. package/esm2022/components/tabs/tabs-vertical.directive.mjs +8 -12
  51. package/esm2022/components/tabs/tabs.directive.mjs +7 -7
  52. package/esm2022/components/tiles/tile-handle.directive.mjs +15 -21
  53. package/esm2022/components/tiles/tile.component.mjs +9 -16
  54. package/esm2022/components/tiles/tiles.component.mjs +7 -10
  55. package/esm2022/components/tree/components/tree-item/tree-item.component.mjs +4 -6
  56. package/esm2022/components/tree/components/tree-item-content/tree-item-content.component.mjs +7 -8
  57. package/esm2022/directives/button-select/button-select.directive.mjs +41 -0
  58. package/esm2022/directives/button-select/index.mjs +2 -0
  59. package/esm2022/directives/button-select/taiga-ui-kit-directives-button-select.mjs +5 -0
  60. package/esm2022/directives/fade/fade.directive.mjs +11 -19
  61. package/esm2022/directives/fluid-typography/fluid-typography.directive.mjs +2 -2
  62. package/esm2022/directives/highlight/highlight.directive.mjs +2 -2
  63. package/esm2022/directives/index.mjs +2 -1
  64. package/esm2022/directives/lazy-loading/lazy-loading.directive.mjs +15 -20
  65. package/esm2022/directives/present/present.directive.mjs +4 -8
  66. package/esm2022/directives/sensitive/sensitive.directive.mjs +2 -2
  67. package/esm2022/directives/tooltip/tooltip.directive.mjs +7 -7
  68. package/fesm2022/taiga-ui-kit-components-accordion.mjs +9 -18
  69. package/fesm2022/taiga-ui-kit-components-accordion.mjs.map +1 -1
  70. package/fesm2022/taiga-ui-kit-components-avatar.mjs +6 -10
  71. package/fesm2022/taiga-ui-kit-components-avatar.mjs.map +1 -1
  72. package/fesm2022/taiga-ui-kit-components-breadcrumbs.mjs +5 -6
  73. package/fesm2022/taiga-ui-kit-components-breadcrumbs.mjs.map +1 -1
  74. package/fesm2022/taiga-ui-kit-components-button-loading.mjs +2 -4
  75. package/fesm2022/taiga-ui-kit-components-button-loading.mjs.map +1 -1
  76. package/fesm2022/taiga-ui-kit-components-calendar-month.mjs +5 -6
  77. package/fesm2022/taiga-ui-kit-components-calendar-month.mjs.map +1 -1
  78. package/fesm2022/taiga-ui-kit-components-calendar-range.mjs +4 -5
  79. package/fesm2022/taiga-ui-kit-components-calendar-range.mjs.map +1 -1
  80. package/fesm2022/taiga-ui-kit-components-carousel.mjs +16 -27
  81. package/fesm2022/taiga-ui-kit-components-carousel.mjs.map +1 -1
  82. package/fesm2022/taiga-ui-kit-components-checkbox.mjs +2 -2
  83. package/fesm2022/taiga-ui-kit-components-checkbox.mjs.map +1 -1
  84. package/fesm2022/taiga-ui-kit-components-compass.mjs +5 -6
  85. package/fesm2022/taiga-ui-kit-components-compass.mjs.map +1 -1
  86. package/fesm2022/taiga-ui-kit-components-elastic-container.mjs +8 -11
  87. package/fesm2022/taiga-ui-kit-components-elastic-container.mjs.map +1 -1
  88. package/fesm2022/taiga-ui-kit-components-files.mjs +10 -13
  89. package/fesm2022/taiga-ui-kit-components-files.mjs.map +1 -1
  90. package/fesm2022/taiga-ui-kit-components-filter.mjs +5 -6
  91. package/fesm2022/taiga-ui-kit-components-filter.mjs.map +1 -1
  92. package/fesm2022/taiga-ui-kit-components-input-inline.mjs +4 -5
  93. package/fesm2022/taiga-ui-kit-components-input-inline.mjs.map +1 -1
  94. package/fesm2022/taiga-ui-kit-components-input-phone-international.mjs +4 -4
  95. package/fesm2022/taiga-ui-kit-components-input-phone-international.mjs.map +1 -1
  96. package/fesm2022/taiga-ui-kit-components-items-with-more.mjs +1 -1
  97. package/fesm2022/taiga-ui-kit-components-items-with-more.mjs.map +1 -1
  98. package/fesm2022/taiga-ui-kit-components-line-clamp.mjs +9 -11
  99. package/fesm2022/taiga-ui-kit-components-line-clamp.mjs.map +1 -1
  100. package/fesm2022/taiga-ui-kit-components-pagination.mjs +3 -11
  101. package/fesm2022/taiga-ui-kit-components-pagination.mjs.map +1 -1
  102. package/fesm2022/taiga-ui-kit-components-pdf-viewer.mjs +3 -5
  103. package/fesm2022/taiga-ui-kit-components-pdf-viewer.mjs.map +1 -1
  104. package/fesm2022/taiga-ui-kit-components-pin.mjs +5 -5
  105. package/fesm2022/taiga-ui-kit-components-pin.mjs.map +1 -1
  106. package/fesm2022/taiga-ui-kit-components-preview.mjs +5 -8
  107. package/fesm2022/taiga-ui-kit-components-preview.mjs.map +1 -1
  108. package/fesm2022/taiga-ui-kit-components-progress.mjs +13 -21
  109. package/fesm2022/taiga-ui-kit-components-progress.mjs.map +1 -1
  110. package/fesm2022/taiga-ui-kit-components-radio-list.mjs +6 -9
  111. package/fesm2022/taiga-ui-kit-components-radio-list.mjs.map +1 -1
  112. package/fesm2022/taiga-ui-kit-components-range.mjs +7 -17
  113. package/fesm2022/taiga-ui-kit-components-range.mjs.map +1 -1
  114. package/fesm2022/taiga-ui-kit-components-rating.mjs +8 -18
  115. package/fesm2022/taiga-ui-kit-components-rating.mjs.map +1 -1
  116. package/fesm2022/taiga-ui-kit-components-segmented.mjs +22 -26
  117. package/fesm2022/taiga-ui-kit-components-segmented.mjs.map +1 -1
  118. package/fesm2022/taiga-ui-kit-components-slider.mjs +14 -24
  119. package/fesm2022/taiga-ui-kit-components-slider.mjs.map +1 -1
  120. package/fesm2022/taiga-ui-kit-components-stepper.mjs +21 -41
  121. package/fesm2022/taiga-ui-kit-components-stepper.mjs.map +1 -1
  122. package/fesm2022/taiga-ui-kit-components-switch.mjs +3 -5
  123. package/fesm2022/taiga-ui-kit-components-switch.mjs.map +1 -1
  124. package/fesm2022/taiga-ui-kit-components-tabs.mjs +17 -27
  125. package/fesm2022/taiga-ui-kit-components-tabs.mjs.map +1 -1
  126. package/fesm2022/taiga-ui-kit-components-tiles.mjs +26 -42
  127. package/fesm2022/taiga-ui-kit-components-tiles.mjs.map +1 -1
  128. package/fesm2022/taiga-ui-kit-components-tree.mjs +8 -11
  129. package/fesm2022/taiga-ui-kit-components-tree.mjs.map +1 -1
  130. package/fesm2022/taiga-ui-kit-directives-button-select.mjs +47 -0
  131. package/fesm2022/taiga-ui-kit-directives-button-select.mjs.map +1 -0
  132. package/fesm2022/taiga-ui-kit-directives-fade.mjs +10 -18
  133. package/fesm2022/taiga-ui-kit-directives-fade.mjs.map +1 -1
  134. package/fesm2022/taiga-ui-kit-directives-fluid-typography.mjs +1 -1
  135. package/fesm2022/taiga-ui-kit-directives-fluid-typography.mjs.map +1 -1
  136. package/fesm2022/taiga-ui-kit-directives-highlight.mjs +1 -1
  137. package/fesm2022/taiga-ui-kit-directives-highlight.mjs.map +1 -1
  138. package/fesm2022/taiga-ui-kit-directives-lazy-loading.mjs +14 -19
  139. package/fesm2022/taiga-ui-kit-directives-lazy-loading.mjs.map +1 -1
  140. package/fesm2022/taiga-ui-kit-directives-present.mjs +3 -7
  141. package/fesm2022/taiga-ui-kit-directives-present.mjs.map +1 -1
  142. package/fesm2022/taiga-ui-kit-directives-sensitive.mjs +1 -1
  143. package/fesm2022/taiga-ui-kit-directives-sensitive.mjs.map +1 -1
  144. package/fesm2022/taiga-ui-kit-directives-tooltip.mjs +6 -6
  145. package/fesm2022/taiga-ui-kit-directives-tooltip.mjs.map +1 -1
  146. package/fesm2022/taiga-ui-kit-directives.mjs +1 -0
  147. package/fesm2022/taiga-ui-kit-directives.mjs.map +1 -1
  148. package/package.json +14 -8
@@ -1,6 +1,6 @@
1
1
  import { NgForOf } from '@angular/common';
2
2
  import * as i0 from '@angular/core';
3
- import { computed, Component, ViewEncapsulation, ChangeDetectionStrategy, ViewChildren, Input, HostBinding, HostListener } from '@angular/core';
3
+ import { computed, Component, ViewEncapsulation, ChangeDetectionStrategy, ViewChildren, Input } from '@angular/core';
4
4
  import * as i2 from '@angular/forms';
5
5
  import { Validators, NgControl, FormsModule } from '@angular/forms';
6
6
  import { TuiControl, tuiAsControl } from '@taiga-ui/cdk/classes';
@@ -37,7 +37,7 @@ class TuiRadioList extends TuiControl {
37
37
  : this.identityMatcher(this.value(), item);
38
38
  }
39
39
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiRadioList, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
40
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiRadioList, isStandalone: true, selector: "tui-radio-list", inputs: { items: "items", size: "size", identityMatcher: "identityMatcher", disabledItemHandler: "disabledItemHandler", itemContent: "itemContent" }, host: { listeners: { "focusout": "onFocusOut()" }, properties: { "attr.data-size": "this.size" } }, providers: [tuiAsControl(TuiRadioList)], viewQueries: [{ propertyName: "controls", predicate: NgControl, descendants: true }], usesInheritance: true, ngImport: i0, template: "<label\n *ngFor=\"let item of items; index as index\"\n class=\"t-item\"\n [class.t-item_disabled]=\"disabled() || disabledItemHandler(item)\"\n>\n <input\n tuiRadio\n type=\"radio\"\n [disabled]=\"disabled() || disabledItemHandler(item)\"\n [identityMatcher]=\"identityMatcher\"\n [name]=\"name\"\n [ngModel]=\"value()\"\n [ngModelOptions]=\"{standalone: true}\"\n [size]=\"size\"\n [tuiValidator]=\"validator()\"\n [value]=\"item\"\n (ngModelChange)=\"onChange($event)\"\n />\n <ng-container *polymorpheusOutlet=\"itemContent as text; context: {$implicit: item, active: itemIsActive(item)}\">\n {{ text }}\n </ng-container>\n</label>\n", styles: ["tui-radio-list{display:flex;flex-direction:column;align-items:flex-start;gap:.75rem 1.5rem;font:var(--tui-font-text-m)}tui-radio-list[data-size=s],tui-radio-list[data-size=s] [tuiTitle]{font:var(--tui-font-text-ui-s)}tui-radio-list[data-size=s] [tuiSubtitle],tui-radio-list[data-size=s] [tuiTitle] [tuiSubtitle]{font:var(--tui-font-text-xs)}tui-radio-list[data-size=s]>.t-item,tui-radio-list[data-size=s] [tuiTitle]>.t-item{gap:.5rem}tui-radio-list [tuiTitle]{font:var(--tui-font-text-m)}tui-radio-list [tuiSubtitle]{color:var(--tui-text-tertiary)}tui-radio-list>.t-item{display:flex;gap:.75rem}tui-radio-list>.t-item_disabled{opacity:var(--tui-disabled-opacity)}\n"], dependencies: [{ kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: i1.TuiRadioComponent, selector: "input[type=\"radio\"][tuiRadio]", inputs: ["size"] }, { kind: "directive", type: i1.TuiRadioDirective, selector: "input[type=\"radio\"][tuiRadio][identityMatcher]", inputs: ["identityMatcher"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: PolymorpheusOutlet, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }, { kind: "directive", type: TuiValidator, selector: "[tuiValidator]", inputs: ["tuiValidator"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
40
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiRadioList, isStandalone: true, selector: "tui-radio-list", inputs: { items: "items", size: "size", identityMatcher: "identityMatcher", disabledItemHandler: "disabledItemHandler", itemContent: "itemContent" }, host: { listeners: { "focusout": "onFocusOut()" }, properties: { "attr.data-size": "size" } }, providers: [tuiAsControl(TuiRadioList)], viewQueries: [{ propertyName: "controls", predicate: NgControl, descendants: true }], usesInheritance: true, ngImport: i0, template: "<label\n *ngFor=\"let item of items; index as index\"\n class=\"t-item\"\n [class.t-item_disabled]=\"disabled() || disabledItemHandler(item)\"\n>\n <input\n tuiRadio\n type=\"radio\"\n [disabled]=\"disabled() || disabledItemHandler(item)\"\n [identityMatcher]=\"identityMatcher\"\n [name]=\"name\"\n [ngModel]=\"value()\"\n [ngModelOptions]=\"{standalone: true}\"\n [size]=\"size\"\n [tuiValidator]=\"validator()\"\n [value]=\"item\"\n (ngModelChange)=\"onChange($event)\"\n />\n <ng-container *polymorpheusOutlet=\"itemContent as text; context: {$implicit: item, active: itemIsActive(item)}\">\n {{ text }}\n </ng-container>\n</label>\n", styles: ["tui-radio-list{display:flex;flex-direction:column;align-items:flex-start;gap:.75rem 1.5rem;font:var(--tui-font-text-m)}tui-radio-list[data-size=s],tui-radio-list[data-size=s] [tuiTitle]{font:var(--tui-font-text-ui-s)}tui-radio-list[data-size=s] [tuiSubtitle],tui-radio-list[data-size=s] [tuiTitle] [tuiSubtitle]{font:var(--tui-font-text-xs)}tui-radio-list[data-size=s]>.t-item,tui-radio-list[data-size=s] [tuiTitle]>.t-item{gap:.5rem}tui-radio-list [tuiTitle]{font:var(--tui-font-text-m)}tui-radio-list [tuiSubtitle]{color:var(--tui-text-tertiary)}tui-radio-list>.t-item{display:flex;gap:.75rem}tui-radio-list>.t-item_disabled{opacity:var(--tui-disabled-opacity)}\n"], dependencies: [{ kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: i1.TuiRadioComponent, selector: "input[type=\"radio\"][tuiRadio]", inputs: ["size"] }, { kind: "directive", type: i1.TuiRadioDirective, selector: "input[type=\"radio\"][tuiRadio][identityMatcher]", inputs: ["identityMatcher"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: PolymorpheusOutlet, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }, { kind: "directive", type: TuiValidator, selector: "[tuiValidator]", inputs: ["tuiValidator"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
41
41
  }
42
42
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiRadioList, decorators: [{
43
43
  type: Component,
@@ -48,7 +48,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
48
48
  PolymorpheusOutlet,
49
49
  PolymorpheusTemplate,
50
50
  TuiValidator,
51
- ], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [tuiAsControl(TuiRadioList)], template: "<label\n *ngFor=\"let item of items; index as index\"\n class=\"t-item\"\n [class.t-item_disabled]=\"disabled() || disabledItemHandler(item)\"\n>\n <input\n tuiRadio\n type=\"radio\"\n [disabled]=\"disabled() || disabledItemHandler(item)\"\n [identityMatcher]=\"identityMatcher\"\n [name]=\"name\"\n [ngModel]=\"value()\"\n [ngModelOptions]=\"{standalone: true}\"\n [size]=\"size\"\n [tuiValidator]=\"validator()\"\n [value]=\"item\"\n (ngModelChange)=\"onChange($event)\"\n />\n <ng-container *polymorpheusOutlet=\"itemContent as text; context: {$implicit: item, active: itemIsActive(item)}\">\n {{ text }}\n </ng-container>\n</label>\n", styles: ["tui-radio-list{display:flex;flex-direction:column;align-items:flex-start;gap:.75rem 1.5rem;font:var(--tui-font-text-m)}tui-radio-list[data-size=s],tui-radio-list[data-size=s] [tuiTitle]{font:var(--tui-font-text-ui-s)}tui-radio-list[data-size=s] [tuiSubtitle],tui-radio-list[data-size=s] [tuiTitle] [tuiSubtitle]{font:var(--tui-font-text-xs)}tui-radio-list[data-size=s]>.t-item,tui-radio-list[data-size=s] [tuiTitle]>.t-item{gap:.5rem}tui-radio-list [tuiTitle]{font:var(--tui-font-text-m)}tui-radio-list [tuiSubtitle]{color:var(--tui-text-tertiary)}tui-radio-list>.t-item{display:flex;gap:.75rem}tui-radio-list>.t-item_disabled{opacity:var(--tui-disabled-opacity)}\n"] }]
51
+ ], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [tuiAsControl(TuiRadioList)], host: {
52
+ '[attr.data-size]': 'size',
53
+ '(focusout)': 'onFocusOut()',
54
+ }, template: "<label\n *ngFor=\"let item of items; index as index\"\n class=\"t-item\"\n [class.t-item_disabled]=\"disabled() || disabledItemHandler(item)\"\n>\n <input\n tuiRadio\n type=\"radio\"\n [disabled]=\"disabled() || disabledItemHandler(item)\"\n [identityMatcher]=\"identityMatcher\"\n [name]=\"name\"\n [ngModel]=\"value()\"\n [ngModelOptions]=\"{standalone: true}\"\n [size]=\"size\"\n [tuiValidator]=\"validator()\"\n [value]=\"item\"\n (ngModelChange)=\"onChange($event)\"\n />\n <ng-container *polymorpheusOutlet=\"itemContent as text; context: {$implicit: item, active: itemIsActive(item)}\">\n {{ text }}\n </ng-container>\n</label>\n", styles: ["tui-radio-list{display:flex;flex-direction:column;align-items:flex-start;gap:.75rem 1.5rem;font:var(--tui-font-text-m)}tui-radio-list[data-size=s],tui-radio-list[data-size=s] [tuiTitle]{font:var(--tui-font-text-ui-s)}tui-radio-list[data-size=s] [tuiSubtitle],tui-radio-list[data-size=s] [tuiTitle] [tuiSubtitle]{font:var(--tui-font-text-xs)}tui-radio-list[data-size=s]>.t-item,tui-radio-list[data-size=s] [tuiTitle]>.t-item{gap:.5rem}tui-radio-list [tuiTitle]{font:var(--tui-font-text-m)}tui-radio-list [tuiSubtitle]{color:var(--tui-text-tertiary)}tui-radio-list>.t-item{display:flex;gap:.75rem}tui-radio-list>.t-item_disabled{opacity:var(--tui-disabled-opacity)}\n"] }]
52
55
  }], propDecorators: { controls: [{
53
56
  type: ViewChildren,
54
57
  args: [NgControl]
@@ -56,18 +59,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
56
59
  type: Input
57
60
  }], size: [{
58
61
  type: Input
59
- }, {
60
- type: HostBinding,
61
- args: ['attr.data-size']
62
62
  }], identityMatcher: [{
63
63
  type: Input
64
64
  }], disabledItemHandler: [{
65
65
  type: Input
66
66
  }], itemContent: [{
67
67
  type: Input
68
- }], onFocusOut: [{
69
- type: HostListener,
70
- args: ['focusout']
71
68
  }] } });
72
69
 
73
70
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-kit-components-radio-list.mjs","sources":["../../../projects/kit/components/radio-list/radio-list.component.ts","../../../projects/kit/components/radio-list/radio-list.template.html","../../../projects/kit/components/radio-list/taiga-ui-kit-components-radio-list.ts"],"sourcesContent":["import {NgForOf} from '@angular/common';\nimport type {QueryList} from '@angular/core';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n HostBinding,\n HostListener,\n Input,\n ViewChildren,\n ViewEncapsulation,\n} from '@angular/core';\nimport type {ValidatorFn} from '@angular/forms';\nimport {FormsModule, NgControl, Validators} from '@angular/forms';\nimport {tuiAsControl, TuiControl} from '@taiga-ui/cdk/classes';\nimport {\n EMPTY_QUERY,\n TUI_DEFAULT_IDENTITY_MATCHER,\n TUI_FALSE_HANDLER,\n} from '@taiga-ui/cdk/constants';\nimport {TuiValidator} from '@taiga-ui/cdk/directives/validator';\nimport type {TuiBooleanHandler, TuiIdentityMatcher} from '@taiga-ui/cdk/types';\nimport type {TuiSizeS, TuiValueContentContext} from '@taiga-ui/core/types';\nimport {TuiRadio} from '@taiga-ui/kit/components/radio';\nimport type {PolymorpheusContent} from '@taiga-ui/polymorpheus';\nimport {PolymorpheusOutlet, PolymorpheusTemplate} from '@taiga-ui/polymorpheus';\n\nconst ERROR: ValidatorFn = () => ({error: 'Invalid'});\n\n@Component({\n standalone: true,\n selector: 'tui-radio-list',\n imports: [\n NgForOf,\n TuiRadio,\n FormsModule,\n PolymorpheusOutlet,\n PolymorpheusTemplate,\n TuiValidator,\n ],\n templateUrl: './radio-list.template.html',\n styleUrls: ['./radio-list.style.less'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [tuiAsControl(TuiRadioList)],\n})\nexport class TuiRadioList<T> extends TuiControl<T> {\n @ViewChildren(NgControl)\n private readonly controls: QueryList<NgControl> = EMPTY_QUERY;\n\n protected validator = computed(() =>\n this.invalid() ? ERROR : Validators.nullValidator,\n );\n\n @Input()\n public items: readonly T[] = [];\n\n @Input()\n @HostBinding('attr.data-size')\n public size: TuiSizeS = 'm';\n\n @Input()\n public identityMatcher: TuiIdentityMatcher<T> = TUI_DEFAULT_IDENTITY_MATCHER;\n\n @Input()\n public disabledItemHandler: TuiBooleanHandler<T> = TUI_FALSE_HANDLER;\n\n @Input()\n public itemContent: PolymorpheusContent<TuiValueContentContext<T>> = ({$implicit}) =>\n String($implicit);\n\n protected get name(): string {\n return this.control.name?.toString() || '';\n }\n\n @HostListener('focusout')\n protected onFocusOut(): void {\n this.controls.forEach((control) => control.control?.markAsTouched());\n\n if (!this.touched()) {\n this.onTouched();\n }\n }\n\n protected itemIsActive(item: T): boolean {\n return this.value() === null\n ? item === null\n : this.identityMatcher(this.value(), item);\n }\n}\n","<label\n *ngFor=\"let item of items; index as index\"\n class=\"t-item\"\n [class.t-item_disabled]=\"disabled() || disabledItemHandler(item)\"\n>\n <input\n tuiRadio\n type=\"radio\"\n [disabled]=\"disabled() || disabledItemHandler(item)\"\n [identityMatcher]=\"identityMatcher\"\n [name]=\"name\"\n [ngModel]=\"value()\"\n [ngModelOptions]=\"{standalone: true}\"\n [size]=\"size\"\n [tuiValidator]=\"validator()\"\n [value]=\"item\"\n (ngModelChange)=\"onChange($event)\"\n />\n <ng-container *polymorpheusOutlet=\"itemContent as text; context: {$implicit: item, active: itemIsActive(item)}\">\n {{ text }}\n </ng-container>\n</label>\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-radio-list.mjs","sources":["../../../projects/kit/components/radio-list/radio-list.component.ts","../../../projects/kit/components/radio-list/radio-list.template.html","../../../projects/kit/components/radio-list/taiga-ui-kit-components-radio-list.ts"],"sourcesContent":["import {NgForOf} from '@angular/common';\nimport type {QueryList} from '@angular/core';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n Input,\n ViewChildren,\n ViewEncapsulation,\n} from '@angular/core';\nimport type {ValidatorFn} from '@angular/forms';\nimport {FormsModule, NgControl, Validators} from '@angular/forms';\nimport {tuiAsControl, TuiControl} from '@taiga-ui/cdk/classes';\nimport {\n EMPTY_QUERY,\n TUI_DEFAULT_IDENTITY_MATCHER,\n TUI_FALSE_HANDLER,\n} from '@taiga-ui/cdk/constants';\nimport {TuiValidator} from '@taiga-ui/cdk/directives/validator';\nimport type {TuiBooleanHandler, TuiIdentityMatcher} from '@taiga-ui/cdk/types';\nimport type {TuiSizeS, TuiValueContentContext} from '@taiga-ui/core/types';\nimport {TuiRadio} from '@taiga-ui/kit/components/radio';\nimport type {PolymorpheusContent} from '@taiga-ui/polymorpheus';\nimport {PolymorpheusOutlet, PolymorpheusTemplate} from '@taiga-ui/polymorpheus';\n\nconst ERROR: ValidatorFn = () => ({error: 'Invalid'});\n\n@Component({\n standalone: true,\n selector: 'tui-radio-list',\n imports: [\n NgForOf,\n TuiRadio,\n FormsModule,\n PolymorpheusOutlet,\n PolymorpheusTemplate,\n TuiValidator,\n ],\n templateUrl: './radio-list.template.html',\n styleUrls: ['./radio-list.style.less'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [tuiAsControl(TuiRadioList)],\n host: {\n '[attr.data-size]': 'size',\n '(focusout)': 'onFocusOut()',\n },\n})\nexport class TuiRadioList<T> extends TuiControl<T> {\n @ViewChildren(NgControl)\n private readonly controls: QueryList<NgControl> = EMPTY_QUERY;\n\n protected validator = computed(() =>\n this.invalid() ? ERROR : Validators.nullValidator,\n );\n\n @Input()\n public items: readonly T[] = [];\n\n @Input()\n public size: TuiSizeS = 'm';\n\n @Input()\n public identityMatcher: TuiIdentityMatcher<T> = TUI_DEFAULT_IDENTITY_MATCHER;\n\n @Input()\n public disabledItemHandler: TuiBooleanHandler<T> = TUI_FALSE_HANDLER;\n\n @Input()\n public itemContent: PolymorpheusContent<TuiValueContentContext<T>> = ({$implicit}) =>\n String($implicit);\n\n protected get name(): string {\n return this.control.name?.toString() || '';\n }\n\n protected onFocusOut(): void {\n this.controls.forEach((control) => control.control?.markAsTouched());\n\n if (!this.touched()) {\n this.onTouched();\n }\n }\n\n protected itemIsActive(item: T): boolean {\n return this.value() === null\n ? item === null\n : this.identityMatcher(this.value(), item);\n }\n}\n","<label\n *ngFor=\"let item of items; index as index\"\n class=\"t-item\"\n [class.t-item_disabled]=\"disabled() || disabledItemHandler(item)\"\n>\n <input\n tuiRadio\n type=\"radio\"\n [disabled]=\"disabled() || disabledItemHandler(item)\"\n [identityMatcher]=\"identityMatcher\"\n [name]=\"name\"\n [ngModel]=\"value()\"\n [ngModelOptions]=\"{standalone: true}\"\n [size]=\"size\"\n [tuiValidator]=\"validator()\"\n [value]=\"item\"\n (ngModelChange)=\"onChange($event)\"\n />\n <ng-container *polymorpheusOutlet=\"itemContent as text; context: {$implicit: item, active: itemIsActive(item)}\">\n {{ text }}\n </ng-container>\n</label>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { __decorate } from 'tslib';
2
2
  import * as i0 from '@angular/core';
3
- import { inject, EventEmitter, Directive, Output, signal, computed, ElementRef, Component, ChangeDetectionStrategy, Input, HostBinding, ViewChildren, HostListener } from '@angular/core';
3
+ import { inject, EventEmitter, Directive, Output, signal, computed, ElementRef, Component, ChangeDetectionStrategy, Input, ViewChildren } from '@angular/core';
4
4
  import * as i3 from '@angular/forms';
5
5
  import { FormsModule } from '@angular/forms';
6
6
  import { TuiControl } from '@taiga-ui/cdk/classes';
@@ -174,7 +174,7 @@ class TuiRange extends TuiControl {
174
174
  return tuiClamp(distance, this.margin, this.limit) === distance;
175
175
  }
176
176
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiRange, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
177
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiRange, isStandalone: true, selector: "tui-range", inputs: { min: "min", max: "max", step: "step", size: "size", segments: "segments", keySteps: "keySteps", focusable: "focusable", margin: "margin", limit: "limit" }, host: { listeners: { "focusout": "onTouched()", "keydown.arrowUp.prevent": "changeByStep(1,$event.target)", "keydown.arrowRight.prevent": "changeByStep(1,$event.target)", "keydown.arrowLeft.prevent": "changeByStep(-1,$event.target)", "keydown.arrowDown.prevent": "changeByStep(-1,$event.target)" }, properties: { "attr.tabindex": "-1", "attr.aria-disabled": "disabled()", "style.--left.%": "left()", "style.--right.%": "right()", "style.background": "options.trackColor", "class._disabled": "disabled()", "attr.data-size": "this.size" } }, providers: [tuiFallbackValueProvider([0, 0])], viewQueries: [{ propertyName: "slidersRefs", predicate: TuiSliderComponent, descendants: true, read: ElementRef }], usesInheritance: true, usesOnChanges: true, hostDirectives: [{ directive: TuiRangeChange, outputs: ["activeThumbChange", "activeThumbChange"] }], ngImport: i0, template: "<div\n class=\"t-track\"\n [style.--bg-size-ratio]=\"1 - segmentWidthRatio\"\n [style.--segment-width.%]=\"segmentWidthRatio * 100\"\n>\n <input\n automation-id=\"tui-range__left\"\n readonly\n step=\"any\"\n tuiSlider\n type=\"range\"\n class=\"t-thumb\"\n [disabled]=\"disabled()\"\n [keySteps]=\"computedKeySteps\"\n [max]=\"max\"\n [min]=\"min\"\n [ngModel]=\"value()[0]\"\n [ngModelOptions]=\"{standalone: true}\"\n [size]=\"size\"\n [tabIndex]=\"focusable ? 0 : -1\"\n />\n <input\n automation-id=\"tui-range__right\"\n readonly\n step=\"any\"\n tuiSlider\n type=\"range\"\n class=\"t-thumb\"\n [disabled]=\"disabled()\"\n [keySteps]=\"computedKeySteps\"\n [max]=\"max\"\n [min]=\"min\"\n [ngModel]=\"value()[1]\"\n [ngModelOptions]=\"{standalone: true}\"\n [size]=\"size\"\n [tabIndex]=\"focusable ? 0 : -1\"\n />\n</div>\n", styles: [":host{position:relative;display:block;height:.125rem;border-radius:var(--tui-radius-m);background:var(--tui-border-normal);cursor:pointer;outline:none;margin:.4375rem 0;touch-action:pan-x}:host:active{cursor:ew-resize}:host:after{content:\"\";position:absolute;top:-.4375rem;bottom:-.4375rem;width:100%}:host._disabled{opacity:var(--tui-disabled-opacity);pointer-events:none}:host[data-size=s] .t-track{position:relative;margin:0 .25rem;height:100%}:host[data-size=s] .t-track:before{content:\"\";position:absolute;top:0;left:max(calc(var(--left) - 1px),1px);right:max(var(--right),1px);height:100%;background:var(--tui-background-accent-1);margin:0 -.25rem}:host[data-size=s] .t-track:after{position:absolute;top:0;left:0;bottom:0;right:0;content:\"\";left:.125rem;right:.375rem;background-image:repeating-linear-gradient(to right,var(--tui-text-tertiary) 0 .25rem,transparent 0 calc(var(--segment-width) / var(--bg-size-ratio)));background-position-x:right;background-repeat:no-repeat;background-size:calc(100% * var(--bg-size-ratio))}:host[data-size=m] .t-track{position:relative;margin:0 .375rem;height:100%}:host[data-size=m] .t-track:before{content:\"\";position:absolute;top:0;left:max(calc(var(--left) - 1px),1px);right:max(var(--right),1px);height:100%;background:var(--tui-background-accent-1);margin:0 -.375rem}:host[data-size=m] .t-track:after{position:absolute;top:0;left:0;bottom:0;right:0;content:\"\";left:.25rem;right:.5rem;background-image:repeating-linear-gradient(to right,var(--tui-text-tertiary) 0 .25rem,transparent 0 calc(var(--segment-width) / var(--bg-size-ratio)));background-position-x:right;background-repeat:no-repeat;background-size:calc(100% * var(--bg-size-ratio))}.t-thumb{pointer-events:none;position:absolute;top:.0625rem;left:0;right:0;z-index:1;transform:translateY(-50%)}.t-thumb::-webkit-slider-thumb{pointer-events:all}.t-thumb::-moz-range-thumb{pointer-events:all}input[type=range].t-thumb::-webkit-slider-runnable-track{background:transparent}input[type=range].t-thumb::-moz-range-track{background:transparent}input[type=range].t-thumb::-moz-range-progress{background:transparent}input[type=range].t-thumb::-ms-track{background:transparent}input[type=range].t-thumb::-ms-fill-lower{background:transparent}.t-thumb:last-of-type{--tui-slider-thumb-transform: translateX(50%) translateX(1px)}.t-thumb:first-of-type{--tui-slider-thumb-transform: translateX(-50%) translateX(-1px)}:host._disabled .t-thumb{opacity:1}\n"], dependencies: [{ kind: "component", type: i2.TuiSliderComponent, selector: "input[type=range][tuiSlider]", inputs: ["size", "segments"] }, { kind: "directive", type: i2.TuiSliderKeySteps, selector: "input[tuiSlider][keySteps]", inputs: ["keySteps"] }, { kind: "directive", type: i2.TuiSliderReadonly, selector: "input[tuiSlider][readonly]", inputs: ["readonly"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.RangeValueAccessor, selector: "input[type=range][formControlName],input[type=range][formControl],input[type=range][ngModel]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
177
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiRange, isStandalone: true, selector: "tui-range", inputs: { min: "min", max: "max", step: "step", size: "size", segments: "segments", keySteps: "keySteps", focusable: "focusable", margin: "margin", limit: "limit" }, host: { listeners: { "focusout": "onTouched()", "keydown.arrowUp.prevent": "changeByStep(1, $event.target)", "keydown.arrowRight.prevent": "changeByStep(1, $event.target)", "keydown.arrowLeft.prevent": "changeByStep(-1, $event.target)", "keydown.arrowDown.prevent": "changeByStep(-1, $event.target)" }, properties: { "attr.data-size": "size", "attr.tabindex": "-1", "attr.aria-disabled": "disabled()", "style.--left.%": "left()", "style.--right.%": "right()", "style.background": "options.trackColor", "class._disabled": "disabled()" } }, providers: [tuiFallbackValueProvider([0, 0])], viewQueries: [{ propertyName: "slidersRefs", predicate: TuiSliderComponent, descendants: true, read: ElementRef }], usesInheritance: true, usesOnChanges: true, hostDirectives: [{ directive: TuiRangeChange, outputs: ["activeThumbChange", "activeThumbChange"] }], ngImport: i0, template: "<div\n class=\"t-track\"\n [style.--bg-size-ratio]=\"1 - segmentWidthRatio\"\n [style.--segment-width.%]=\"segmentWidthRatio * 100\"\n>\n <input\n automation-id=\"tui-range__left\"\n readonly\n step=\"any\"\n tuiSlider\n type=\"range\"\n class=\"t-thumb\"\n [disabled]=\"disabled()\"\n [keySteps]=\"computedKeySteps\"\n [max]=\"max\"\n [min]=\"min\"\n [ngModel]=\"value()[0]\"\n [ngModelOptions]=\"{standalone: true}\"\n [size]=\"size\"\n [tabIndex]=\"focusable ? 0 : -1\"\n />\n <input\n automation-id=\"tui-range__right\"\n readonly\n step=\"any\"\n tuiSlider\n type=\"range\"\n class=\"t-thumb\"\n [disabled]=\"disabled()\"\n [keySteps]=\"computedKeySteps\"\n [max]=\"max\"\n [min]=\"min\"\n [ngModel]=\"value()[1]\"\n [ngModelOptions]=\"{standalone: true}\"\n [size]=\"size\"\n [tabIndex]=\"focusable ? 0 : -1\"\n />\n</div>\n", styles: [":host{position:relative;display:block;height:.125rem;border-radius:var(--tui-radius-m);background:var(--tui-border-normal);cursor:pointer;outline:none;margin:.4375rem 0;touch-action:pan-x}:host:active{cursor:ew-resize}:host:after{content:\"\";position:absolute;top:-.4375rem;bottom:-.4375rem;width:100%}:host._disabled{opacity:var(--tui-disabled-opacity);pointer-events:none}:host[data-size=s] .t-track{position:relative;margin:0 .25rem;height:100%}:host[data-size=s] .t-track:before{content:\"\";position:absolute;top:0;left:max(calc(var(--left) - 1px),1px);right:max(var(--right),1px);height:100%;background:var(--tui-background-accent-1);margin:0 -.25rem}:host[data-size=s] .t-track:after{position:absolute;top:0;left:0;bottom:0;right:0;content:\"\";left:.125rem;right:.375rem;background-image:repeating-linear-gradient(to right,var(--tui-text-tertiary) 0 .25rem,transparent 0 calc(var(--segment-width) / var(--bg-size-ratio)));background-position-x:right;background-repeat:no-repeat;background-size:calc(100% * var(--bg-size-ratio))}:host[data-size=m] .t-track{position:relative;margin:0 .375rem;height:100%}:host[data-size=m] .t-track:before{content:\"\";position:absolute;top:0;left:max(calc(var(--left) - 1px),1px);right:max(var(--right),1px);height:100%;background:var(--tui-background-accent-1);margin:0 -.375rem}:host[data-size=m] .t-track:after{position:absolute;top:0;left:0;bottom:0;right:0;content:\"\";left:.25rem;right:.5rem;background-image:repeating-linear-gradient(to right,var(--tui-text-tertiary) 0 .25rem,transparent 0 calc(var(--segment-width) / var(--bg-size-ratio)));background-position-x:right;background-repeat:no-repeat;background-size:calc(100% * var(--bg-size-ratio))}.t-thumb{pointer-events:none;position:absolute;top:.0625rem;left:0;right:0;z-index:1;transform:translateY(-50%)}.t-thumb::-webkit-slider-thumb{pointer-events:all}.t-thumb::-moz-range-thumb{pointer-events:all}input[type=range].t-thumb::-webkit-slider-runnable-track{background:transparent}input[type=range].t-thumb::-moz-range-track{background:transparent}input[type=range].t-thumb::-moz-range-progress{background:transparent}input[type=range].t-thumb::-ms-track{background:transparent}input[type=range].t-thumb::-ms-fill-lower{background:transparent}.t-thumb:last-of-type{--tui-slider-thumb-transform: translateX(50%) translateX(1px)}.t-thumb:first-of-type{--tui-slider-thumb-transform: translateX(-50%) translateX(-1px)}:host._disabled .t-thumb{opacity:1}\n"], dependencies: [{ kind: "component", type: i2.TuiSliderComponent, selector: "input[type=range][tuiSlider]", inputs: ["size", "segments"] }, { kind: "directive", type: i2.TuiSliderKeySteps, selector: "input[tuiSlider][keySteps]", inputs: ["keySteps"] }, { kind: "directive", type: i2.TuiSliderReadonly, selector: "input[tuiSlider][readonly]", inputs: ["readonly"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.RangeValueAccessor, selector: "input[type=range][formControlName],input[type=range][formControl],input[type=range][ngModel]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
178
178
  }
179
179
  __decorate([
180
180
  tuiPure
@@ -187,6 +187,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
187
187
  outputs: ['activeThumbChange'],
188
188
  },
189
189
  ], host: {
190
+ '[attr.data-size]': 'size',
190
191
  '[attr.tabindex]': '-1',
191
192
  '[attr.aria-disabled]': 'disabled()',
192
193
  '[style.--left.%]': 'left()',
@@ -194,6 +195,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
194
195
  '[style.background]': 'options.trackColor',
195
196
  '[class._disabled]': 'disabled()',
196
197
  '(focusout)': 'onTouched()',
198
+ '(keydown.arrowUp.prevent)': 'changeByStep(1, $event.target)',
199
+ '(keydown.arrowRight.prevent)': 'changeByStep(1, $event.target)',
200
+ '(keydown.arrowLeft.prevent)': 'changeByStep(-1, $event.target)',
201
+ '(keydown.arrowDown.prevent)': 'changeByStep(-1, $event.target)',
197
202
  }, template: "<div\n class=\"t-track\"\n [style.--bg-size-ratio]=\"1 - segmentWidthRatio\"\n [style.--segment-width.%]=\"segmentWidthRatio * 100\"\n>\n <input\n automation-id=\"tui-range__left\"\n readonly\n step=\"any\"\n tuiSlider\n type=\"range\"\n class=\"t-thumb\"\n [disabled]=\"disabled()\"\n [keySteps]=\"computedKeySteps\"\n [max]=\"max\"\n [min]=\"min\"\n [ngModel]=\"value()[0]\"\n [ngModelOptions]=\"{standalone: true}\"\n [size]=\"size\"\n [tabIndex]=\"focusable ? 0 : -1\"\n />\n <input\n automation-id=\"tui-range__right\"\n readonly\n step=\"any\"\n tuiSlider\n type=\"range\"\n class=\"t-thumb\"\n [disabled]=\"disabled()\"\n [keySteps]=\"computedKeySteps\"\n [max]=\"max\"\n [min]=\"min\"\n [ngModel]=\"value()[1]\"\n [ngModelOptions]=\"{standalone: true}\"\n [size]=\"size\"\n [tabIndex]=\"focusable ? 0 : -1\"\n />\n</div>\n", styles: [":host{position:relative;display:block;height:.125rem;border-radius:var(--tui-radius-m);background:var(--tui-border-normal);cursor:pointer;outline:none;margin:.4375rem 0;touch-action:pan-x}:host:active{cursor:ew-resize}:host:after{content:\"\";position:absolute;top:-.4375rem;bottom:-.4375rem;width:100%}:host._disabled{opacity:var(--tui-disabled-opacity);pointer-events:none}:host[data-size=s] .t-track{position:relative;margin:0 .25rem;height:100%}:host[data-size=s] .t-track:before{content:\"\";position:absolute;top:0;left:max(calc(var(--left) - 1px),1px);right:max(var(--right),1px);height:100%;background:var(--tui-background-accent-1);margin:0 -.25rem}:host[data-size=s] .t-track:after{position:absolute;top:0;left:0;bottom:0;right:0;content:\"\";left:.125rem;right:.375rem;background-image:repeating-linear-gradient(to right,var(--tui-text-tertiary) 0 .25rem,transparent 0 calc(var(--segment-width) / var(--bg-size-ratio)));background-position-x:right;background-repeat:no-repeat;background-size:calc(100% * var(--bg-size-ratio))}:host[data-size=m] .t-track{position:relative;margin:0 .375rem;height:100%}:host[data-size=m] .t-track:before{content:\"\";position:absolute;top:0;left:max(calc(var(--left) - 1px),1px);right:max(var(--right),1px);height:100%;background:var(--tui-background-accent-1);margin:0 -.375rem}:host[data-size=m] .t-track:after{position:absolute;top:0;left:0;bottom:0;right:0;content:\"\";left:.25rem;right:.5rem;background-image:repeating-linear-gradient(to right,var(--tui-text-tertiary) 0 .25rem,transparent 0 calc(var(--segment-width) / var(--bg-size-ratio)));background-position-x:right;background-repeat:no-repeat;background-size:calc(100% * var(--bg-size-ratio))}.t-thumb{pointer-events:none;position:absolute;top:.0625rem;left:0;right:0;z-index:1;transform:translateY(-50%)}.t-thumb::-webkit-slider-thumb{pointer-events:all}.t-thumb::-moz-range-thumb{pointer-events:all}input[type=range].t-thumb::-webkit-slider-runnable-track{background:transparent}input[type=range].t-thumb::-moz-range-track{background:transparent}input[type=range].t-thumb::-moz-range-progress{background:transparent}input[type=range].t-thumb::-ms-track{background:transparent}input[type=range].t-thumb::-ms-fill-lower{background:transparent}.t-thumb:last-of-type{--tui-slider-thumb-transform: translateX(50%) translateX(1px)}.t-thumb:first-of-type{--tui-slider-thumb-transform: translateX(-50%) translateX(-1px)}:host._disabled .t-thumb{opacity:1}\n"] }]
198
203
  }], propDecorators: { min: [{
199
204
  type: Input
@@ -203,9 +208,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
203
208
  type: Input
204
209
  }], size: [{
205
210
  type: Input
206
- }, {
207
- type: HostBinding,
208
- args: ['attr.data-size']
209
211
  }], segments: [{
210
212
  type: Input
211
213
  }], keySteps: [{
@@ -219,18 +221,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
219
221
  }], slidersRefs: [{
220
222
  type: ViewChildren,
221
223
  args: [TuiSliderComponent, { read: ElementRef }]
222
- }], changeByStep: [{
223
- type: HostListener,
224
- args: ['keydown.arrowUp.prevent', ['1', '$event.target']]
225
- }, {
226
- type: HostListener,
227
- args: ['keydown.arrowRight.prevent', ['1', '$event.target']]
228
- }, {
229
- type: HostListener,
230
- args: ['keydown.arrowLeft.prevent', ['-1', '$event.target']]
231
- }, {
232
- type: HostListener,
233
- args: ['keydown.arrowDown.prevent', ['-1', '$event.target']]
234
224
  }], computePureKeySteps: [] } });
235
225
 
236
226
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-kit-components-range.mjs","sources":["../../../projects/kit/components/range/range-change.directive.ts","../../../projects/kit/components/range/range.component.ts","../../../projects/kit/components/range/range.template.html","../../../projects/kit/components/range/taiga-ui-kit-components-range.ts"],"sourcesContent":["import {DOCUMENT} from '@angular/common';\nimport {Directive, EventEmitter, inject, Output} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {tuiTypedFromEvent} from '@taiga-ui/cdk/observables';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {tuiClamp, tuiRound} from '@taiga-ui/cdk/utils/math';\nimport {TUI_FLOATING_PRECISION} from '@taiga-ui/kit/components/slider';\nimport {filter, map, merge, repeat, startWith, switchMap, takeUntil, tap} from 'rxjs';\n\nimport {TuiRange} from './range.component';\n\n@Directive({\n standalone: true,\n})\nexport class TuiRangeChange {\n private readonly doc = inject(DOCUMENT);\n private readonly el = tuiInjectElement();\n private readonly range = inject(TuiRange);\n\n /**\n * TODO replace with pointer events (when all supported browsers can handle them).\n * Don't forget to use setPointerCapture instead of listening all doc events\n */\n private readonly pointerDown$ = tuiTypedFromEvent(this.el, 'pointerdown', {\n passive: true,\n capture: true,\n });\n\n private readonly pointerMove$ = merge(\n tuiTypedFromEvent(this.doc, 'touchmove').pipe(\n filter(({touches}) => touches.length === 1),\n map(({touches}) => touches[0]),\n ),\n tuiTypedFromEvent(this.doc, 'mousemove'),\n );\n\n private readonly pointerUp$ = merge(\n tuiTypedFromEvent(this.doc, 'touchend', {passive: true}),\n tuiTypedFromEvent(this.doc, 'mouseup', {passive: true}),\n );\n\n @Output()\n public readonly activeThumbChange = new EventEmitter<'left' | 'right'>();\n\n constructor() {\n let activeThumb: 'left' | 'right';\n\n this.pointerDown$\n .pipe(\n tap(({clientX, target}) => {\n activeThumb = this.detectActiveThumb(clientX, target);\n this.activeThumbChange.emit(activeThumb);\n\n if (this.range.focusable) {\n this.el.focus();\n }\n }),\n switchMap((event) => this.pointerMove$.pipe(startWith(event))),\n map(({clientX}) => this.getFractionFromEvents(clientX)),\n takeUntil(this.pointerUp$),\n repeat(),\n takeUntilDestroyed(),\n )\n .subscribe((fraction) => {\n const value = this.range.toValue(fraction);\n\n this.range.processValue(value, activeThumb === 'right');\n });\n }\n\n private getFractionFromEvents(clickClientX: number): number {\n const hostRect = this.el.getBoundingClientRect();\n const value = clickClientX - hostRect.left;\n const total = hostRect.width;\n\n return tuiClamp(tuiRound(value / total, TUI_FLOATING_PRECISION), 0, 1);\n }\n\n private detectActiveThumb(\n clientX: number,\n target: EventTarget | null,\n ): 'left' | 'right' {\n const [leftSliderRef, rightSliderRef] = this.range.slidersRefs;\n\n switch (target) {\n case leftSliderRef.nativeElement:\n return 'left';\n case rightSliderRef.nativeElement:\n return 'right';\n default:\n return this.findNearestActiveThumb(clientX);\n }\n }\n\n private findNearestActiveThumb(clientX: number): 'left' | 'right' {\n const fraction = this.getFractionFromEvents(clientX);\n const deltaLeft = fraction * 100 - this.range.left();\n const deltaRight = fraction * 100 - 100 + this.range.right();\n\n return Math.abs(deltaLeft) > Math.abs(deltaRight) ||\n deltaRight > 0 ||\n (this.range.left() === 0 && this.range.right() === 100)\n ? 'right'\n : 'left';\n }\n}\n","import type {OnChanges, QueryList} from '@angular/core';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n HostBinding,\n HostListener,\n inject,\n Input,\n signal,\n ViewChildren,\n} from '@angular/core';\nimport {FormsModule} from '@angular/forms';\nimport {TuiControl} from '@taiga-ui/cdk/classes';\nimport {EMPTY_QUERY} from '@taiga-ui/cdk/constants';\nimport {tuiFallbackValueProvider} from '@taiga-ui/cdk/tokens';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {tuiClamp, tuiQuantize} from '@taiga-ui/cdk/utils/math';\nimport {tuiPure} from '@taiga-ui/cdk/utils/miscellaneous';\nimport type {TuiSizeS} from '@taiga-ui/core/types';\nimport type {TuiKeySteps} from '@taiga-ui/kit/components/slider';\nimport {\n TUI_SLIDER_OPTIONS,\n tuiKeyStepValueToPercentage,\n tuiPercentageToKeyStepValue,\n TuiSlider,\n TuiSliderComponent,\n} from '@taiga-ui/kit/components/slider';\n\nimport {TuiRangeChange} from './range-change.directive';\n\n@Component({\n standalone: true,\n selector: 'tui-range',\n imports: [TuiSlider, FormsModule],\n templateUrl: './range.template.html',\n styleUrls: ['./range.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [tuiFallbackValueProvider([0, 0])],\n hostDirectives: [\n {\n directive: TuiRangeChange,\n outputs: ['activeThumbChange'],\n },\n ],\n host: {\n '[attr.tabindex]': '-1',\n '[attr.aria-disabled]': 'disabled()',\n '[style.--left.%]': 'left()',\n '[style.--right.%]': 'right()',\n '[style.background]': 'options.trackColor',\n '[class._disabled]': 'disabled()',\n '(focusout)': 'onTouched()',\n },\n})\nexport class TuiRange extends TuiControl<[number, number]> implements OnChanges {\n // TODO: refactor to signal inputs after Angular update\n private readonly changes = signal(1);\n private readonly el = tuiInjectElement();\n\n protected readonly options = inject(TUI_SLIDER_OPTIONS);\n protected lastActiveThumb: 'left' | 'right' = 'right';\n\n @Input()\n public min = 0;\n\n @Input()\n public max = 100;\n\n @Input()\n public step = 1;\n\n @Input()\n @HostBinding('attr.data-size')\n public size: TuiSizeS = this.options.size;\n\n @Input()\n public segments = 1;\n\n @Input()\n public keySteps: TuiKeySteps | null = null;\n\n @Input()\n public focusable = true;\n\n @Input()\n public margin = 0;\n\n @Input()\n public limit = Infinity;\n\n @ViewChildren(TuiSliderComponent, {read: ElementRef})\n public readonly slidersRefs: QueryList<ElementRef<HTMLInputElement>> = EMPTY_QUERY;\n\n public readonly left = computed(() => this.toPercent(this.value()[0]));\n public readonly right = computed(() => 100 - this.toPercent(this.value()[1]));\n\n public ngOnChanges(): void {\n this.changes.set(this.changes() + 1);\n }\n\n public processValue(value: number, right: boolean): void {\n if (right) {\n this.updateEnd(value);\n } else {\n this.updateStart(value);\n }\n\n this.lastActiveThumb = right ? 'right' : 'left';\n }\n\n public toValue(fraction: number): number {\n return tuiPercentageToKeyStepValue(\n tuiClamp(tuiQuantize(fraction, this.fractionStep), 0, 1) * 100,\n this.computedKeySteps,\n );\n }\n\n protected get fractionStep(): number {\n return this.step / (this.max - this.min);\n }\n\n protected get computedKeySteps(): TuiKeySteps {\n return this.computePureKeySteps(this.keySteps, this.min, this.max);\n }\n\n protected get segmentWidthRatio(): number {\n return 1 / this.segments;\n }\n\n @HostListener('keydown.arrowUp.prevent', ['1', '$event.target'])\n @HostListener('keydown.arrowRight.prevent', ['1', '$event.target'])\n @HostListener('keydown.arrowLeft.prevent', ['-1', '$event.target'])\n @HostListener('keydown.arrowDown.prevent', ['-1', '$event.target'])\n protected changeByStep(coefficient: number, target: HTMLElement): void {\n const [sliderLeftRef, sliderRightRef] = this.slidersRefs;\n const leftThumbElement = sliderLeftRef.nativeElement;\n const rightThumbElement = sliderRightRef.nativeElement;\n\n const isRightThumb =\n target === this.el\n ? this.lastActiveThumb === 'right'\n : target === rightThumbElement;\n const activeThumbElement = isRightThumb ? rightThumbElement : leftThumbElement;\n const previousValue = isRightThumb ? this.value()[1] : this.value()[0];\n /** @bad TODO think about a solution without twice conversion */\n const previousFraction = this.toPercent(previousValue) / 100;\n const newFractionValue = previousFraction + coefficient * this.fractionStep;\n\n this.processValue(this.toValue(newFractionValue), isRightThumb);\n activeThumbElement?.focus();\n }\n\n protected toPercent(value: number): number {\n return (\n this.changes() && tuiKeyStepValueToPercentage(value, this.computedKeySteps)\n );\n }\n\n @tuiPure\n private computePureKeySteps(\n keySteps: TuiKeySteps | null,\n min: number,\n max: number,\n ): TuiKeySteps {\n return (\n keySteps || [\n [0, min],\n [100, max],\n ]\n );\n }\n\n private updateStart(value: number): void {\n const newValue = Math.min(value, this.value()[1]);\n const distance = this.value()[1] - newValue;\n\n if (!this.checkDistance(distance)) {\n return;\n }\n\n this.onChange([newValue, this.value()[1]]);\n }\n\n private updateEnd(value: number): void {\n const newValue = Math.max(value, this.value()[0]);\n const distance = newValue - this.value()[0];\n\n if (!this.checkDistance(distance)) {\n return;\n }\n\n this.onChange([this.value()[0], newValue]);\n }\n\n private checkDistance(distance: number): boolean {\n return tuiClamp(distance, this.margin, this.limit) === distance;\n }\n}\n","<div\n class=\"t-track\"\n [style.--bg-size-ratio]=\"1 - segmentWidthRatio\"\n [style.--segment-width.%]=\"segmentWidthRatio * 100\"\n>\n <input\n automation-id=\"tui-range__left\"\n readonly\n step=\"any\"\n tuiSlider\n type=\"range\"\n class=\"t-thumb\"\n [disabled]=\"disabled()\"\n [keySteps]=\"computedKeySteps\"\n [max]=\"max\"\n [min]=\"min\"\n [ngModel]=\"value()[0]\"\n [ngModelOptions]=\"{standalone: true}\"\n [size]=\"size\"\n [tabIndex]=\"focusable ? 0 : -1\"\n />\n <input\n automation-id=\"tui-range__right\"\n readonly\n step=\"any\"\n tuiSlider\n type=\"range\"\n class=\"t-thumb\"\n [disabled]=\"disabled()\"\n [keySteps]=\"computedKeySteps\"\n [max]=\"max\"\n [min]=\"min\"\n [ngModel]=\"value()[1]\"\n [ngModelOptions]=\"{standalone: true}\"\n [size]=\"size\"\n [tabIndex]=\"focusable ? 0 : -1\"\n />\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.TuiRangeChange"],"mappings":"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"}
1
+ {"version":3,"file":"taiga-ui-kit-components-range.mjs","sources":["../../../projects/kit/components/range/range-change.directive.ts","../../../projects/kit/components/range/range.component.ts","../../../projects/kit/components/range/range.template.html","../../../projects/kit/components/range/taiga-ui-kit-components-range.ts"],"sourcesContent":["import {DOCUMENT} from '@angular/common';\nimport {Directive, EventEmitter, inject, Output} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {tuiTypedFromEvent} from '@taiga-ui/cdk/observables';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {tuiClamp, tuiRound} from '@taiga-ui/cdk/utils/math';\nimport {TUI_FLOATING_PRECISION} from '@taiga-ui/kit/components/slider';\nimport {filter, map, merge, repeat, startWith, switchMap, takeUntil, tap} from 'rxjs';\n\nimport {TuiRange} from './range.component';\n\n@Directive({\n standalone: true,\n})\nexport class TuiRangeChange {\n private readonly doc = inject(DOCUMENT);\n private readonly el = tuiInjectElement();\n private readonly range = inject(TuiRange);\n\n /**\n * TODO replace with pointer events (when all supported browsers can handle them).\n * Don't forget to use setPointerCapture instead of listening all doc events\n */\n private readonly pointerDown$ = tuiTypedFromEvent(this.el, 'pointerdown', {\n passive: true,\n capture: true,\n });\n\n private readonly pointerMove$ = merge(\n tuiTypedFromEvent(this.doc, 'touchmove').pipe(\n filter(({touches}) => touches.length === 1),\n map(({touches}) => touches[0]),\n ),\n tuiTypedFromEvent(this.doc, 'mousemove'),\n );\n\n private readonly pointerUp$ = merge(\n tuiTypedFromEvent(this.doc, 'touchend', {passive: true}),\n tuiTypedFromEvent(this.doc, 'mouseup', {passive: true}),\n );\n\n @Output()\n public readonly activeThumbChange = new EventEmitter<'left' | 'right'>();\n\n constructor() {\n let activeThumb: 'left' | 'right';\n\n this.pointerDown$\n .pipe(\n tap(({clientX, target}) => {\n activeThumb = this.detectActiveThumb(clientX, target);\n this.activeThumbChange.emit(activeThumb);\n\n if (this.range.focusable) {\n this.el.focus();\n }\n }),\n switchMap((event) => this.pointerMove$.pipe(startWith(event))),\n map(({clientX}) => this.getFractionFromEvents(clientX)),\n takeUntil(this.pointerUp$),\n repeat(),\n takeUntilDestroyed(),\n )\n .subscribe((fraction) => {\n const value = this.range.toValue(fraction);\n\n this.range.processValue(value, activeThumb === 'right');\n });\n }\n\n private getFractionFromEvents(clickClientX: number): number {\n const hostRect = this.el.getBoundingClientRect();\n const value = clickClientX - hostRect.left;\n const total = hostRect.width;\n\n return tuiClamp(tuiRound(value / total, TUI_FLOATING_PRECISION), 0, 1);\n }\n\n private detectActiveThumb(\n clientX: number,\n target: EventTarget | null,\n ): 'left' | 'right' {\n const [leftSliderRef, rightSliderRef] = this.range.slidersRefs;\n\n switch (target) {\n case leftSliderRef.nativeElement:\n return 'left';\n case rightSliderRef.nativeElement:\n return 'right';\n default:\n return this.findNearestActiveThumb(clientX);\n }\n }\n\n private findNearestActiveThumb(clientX: number): 'left' | 'right' {\n const fraction = this.getFractionFromEvents(clientX);\n const deltaLeft = fraction * 100 - this.range.left();\n const deltaRight = fraction * 100 - 100 + this.range.right();\n\n return Math.abs(deltaLeft) > Math.abs(deltaRight) ||\n deltaRight > 0 ||\n (this.range.left() === 0 && this.range.right() === 100)\n ? 'right'\n : 'left';\n }\n}\n","import type {OnChanges, QueryList} from '@angular/core';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n inject,\n Input,\n signal,\n ViewChildren,\n} from '@angular/core';\nimport {FormsModule} from '@angular/forms';\nimport {TuiControl} from '@taiga-ui/cdk/classes';\nimport {EMPTY_QUERY} from '@taiga-ui/cdk/constants';\nimport {tuiFallbackValueProvider} from '@taiga-ui/cdk/tokens';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {tuiClamp, tuiQuantize} from '@taiga-ui/cdk/utils/math';\nimport {tuiPure} from '@taiga-ui/cdk/utils/miscellaneous';\nimport type {TuiSizeS} from '@taiga-ui/core/types';\nimport type {TuiKeySteps} from '@taiga-ui/kit/components/slider';\nimport {\n TUI_SLIDER_OPTIONS,\n tuiKeyStepValueToPercentage,\n tuiPercentageToKeyStepValue,\n TuiSlider,\n TuiSliderComponent,\n} from '@taiga-ui/kit/components/slider';\n\nimport {TuiRangeChange} from './range-change.directive';\n\n@Component({\n standalone: true,\n selector: 'tui-range',\n imports: [TuiSlider, FormsModule],\n templateUrl: './range.template.html',\n styleUrls: ['./range.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [tuiFallbackValueProvider([0, 0])],\n hostDirectives: [\n {\n directive: TuiRangeChange,\n outputs: ['activeThumbChange'],\n },\n ],\n host: {\n '[attr.data-size]': 'size',\n '[attr.tabindex]': '-1',\n '[attr.aria-disabled]': 'disabled()',\n '[style.--left.%]': 'left()',\n '[style.--right.%]': 'right()',\n '[style.background]': 'options.trackColor',\n '[class._disabled]': 'disabled()',\n '(focusout)': 'onTouched()',\n '(keydown.arrowUp.prevent)': 'changeByStep(1, $event.target)',\n '(keydown.arrowRight.prevent)': 'changeByStep(1, $event.target)',\n '(keydown.arrowLeft.prevent)': 'changeByStep(-1, $event.target)',\n '(keydown.arrowDown.prevent)': 'changeByStep(-1, $event.target)',\n },\n})\nexport class TuiRange extends TuiControl<[number, number]> implements OnChanges {\n // TODO: refactor to signal inputs after Angular update\n private readonly changes = signal(1);\n private readonly el = tuiInjectElement();\n\n protected readonly options = inject(TUI_SLIDER_OPTIONS);\n protected lastActiveThumb: 'left' | 'right' = 'right';\n\n @Input()\n public min = 0;\n\n @Input()\n public max = 100;\n\n @Input()\n public step = 1;\n\n @Input()\n public size: TuiSizeS = this.options.size;\n\n @Input()\n public segments = 1;\n\n @Input()\n public keySteps: TuiKeySteps | null = null;\n\n @Input()\n public focusable = true;\n\n @Input()\n public margin = 0;\n\n @Input()\n public limit = Infinity;\n\n @ViewChildren(TuiSliderComponent, {read: ElementRef})\n public readonly slidersRefs: QueryList<ElementRef<HTMLInputElement>> = EMPTY_QUERY;\n\n public readonly left = computed(() => this.toPercent(this.value()[0]));\n public readonly right = computed(() => 100 - this.toPercent(this.value()[1]));\n\n public ngOnChanges(): void {\n this.changes.set(this.changes() + 1);\n }\n\n public processValue(value: number, right: boolean): void {\n if (right) {\n this.updateEnd(value);\n } else {\n this.updateStart(value);\n }\n\n this.lastActiveThumb = right ? 'right' : 'left';\n }\n\n public toValue(fraction: number): number {\n return tuiPercentageToKeyStepValue(\n tuiClamp(tuiQuantize(fraction, this.fractionStep), 0, 1) * 100,\n this.computedKeySteps,\n );\n }\n\n protected get fractionStep(): number {\n return this.step / (this.max - this.min);\n }\n\n protected get computedKeySteps(): TuiKeySteps {\n return this.computePureKeySteps(this.keySteps, this.min, this.max);\n }\n\n protected get segmentWidthRatio(): number {\n return 1 / this.segments;\n }\n\n protected changeByStep(coefficient: number, target: HTMLElement): void {\n const [sliderLeftRef, sliderRightRef] = this.slidersRefs;\n const leftThumbElement = sliderLeftRef.nativeElement;\n const rightThumbElement = sliderRightRef.nativeElement;\n\n const isRightThumb =\n target === this.el\n ? this.lastActiveThumb === 'right'\n : target === rightThumbElement;\n const activeThumbElement = isRightThumb ? rightThumbElement : leftThumbElement;\n const previousValue = isRightThumb ? this.value()[1] : this.value()[0];\n /** @bad TODO think about a solution without twice conversion */\n const previousFraction = this.toPercent(previousValue) / 100;\n const newFractionValue = previousFraction + coefficient * this.fractionStep;\n\n this.processValue(this.toValue(newFractionValue), isRightThumb);\n activeThumbElement?.focus();\n }\n\n protected toPercent(value: number): number {\n return (\n this.changes() && tuiKeyStepValueToPercentage(value, this.computedKeySteps)\n );\n }\n\n @tuiPure\n private computePureKeySteps(\n keySteps: TuiKeySteps | null,\n min: number,\n max: number,\n ): TuiKeySteps {\n return (\n keySteps || [\n [0, min],\n [100, max],\n ]\n );\n }\n\n private updateStart(value: number): void {\n const newValue = Math.min(value, this.value()[1]);\n const distance = this.value()[1] - newValue;\n\n if (!this.checkDistance(distance)) {\n return;\n }\n\n this.onChange([newValue, this.value()[1]]);\n }\n\n private updateEnd(value: number): void {\n const newValue = Math.max(value, this.value()[0]);\n const distance = newValue - this.value()[0];\n\n if (!this.checkDistance(distance)) {\n return;\n }\n\n this.onChange([this.value()[0], newValue]);\n }\n\n private checkDistance(distance: number): boolean {\n return tuiClamp(distance, this.margin, this.limit) === distance;\n }\n}\n","<div\n class=\"t-track\"\n [style.--bg-size-ratio]=\"1 - segmentWidthRatio\"\n [style.--segment-width.%]=\"segmentWidthRatio * 100\"\n>\n <input\n automation-id=\"tui-range__left\"\n readonly\n step=\"any\"\n tuiSlider\n type=\"range\"\n class=\"t-thumb\"\n [disabled]=\"disabled()\"\n [keySteps]=\"computedKeySteps\"\n [max]=\"max\"\n [min]=\"min\"\n [ngModel]=\"value()[0]\"\n [ngModelOptions]=\"{standalone: true}\"\n [size]=\"size\"\n [tabIndex]=\"focusable ? 0 : -1\"\n />\n <input\n automation-id=\"tui-range__right\"\n readonly\n step=\"any\"\n tuiSlider\n type=\"range\"\n class=\"t-thumb\"\n [disabled]=\"disabled()\"\n [keySteps]=\"computedKeySteps\"\n [max]=\"max\"\n [min]=\"min\"\n [ngModel]=\"value()[1]\"\n [ngModelOptions]=\"{standalone: true}\"\n [size]=\"size\"\n [tabIndex]=\"focusable ? 0 : -1\"\n />\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.TuiRangeChange"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { CommonModule } from '@angular/common';
2
2
  import * as i0 from '@angular/core';
3
- import { inject, Component, ChangeDetectionStrategy, HostBinding, Input, HostListener } from '@angular/core';
3
+ import { inject, Component, ChangeDetectionStrategy, Input } from '@angular/core';
4
4
  import * as i1 from '@angular/forms';
5
5
  import { FormsModule } from '@angular/forms';
6
6
  import { TuiControl } from '@taiga-ui/cdk/classes';
@@ -53,33 +53,23 @@ class TuiRating extends TuiControl {
53
53
  : 0;
54
54
  }
55
55
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiRating, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
56
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiRating, isStandalone: true, selector: "tui-rating", inputs: { icon: "icon", max: "max" }, host: { listeners: { "keydown.capture": "onKeyDown($event)", "pointerdown": "onPointer(1)", "pointercancel": "onPointer(-1)", "document:pointerup": "onPointer(-1)" }, properties: { "class._disabled": "disabled()", "class._readonly": "readOnly()", "class._active": "this.active" } }, providers: [tuiFallbackValueProvider(0)], usesInheritance: true, ngImport: i0, template: "<input\n min=\"1\"\n type=\"range\"\n class=\"t-range\"\n [attr.aria-disabled]=\"readOnly()\"\n [disabled]=\"disabled()\"\n [max]=\"max\"\n [ngModel]=\"value()\"\n [ngModelOptions]=\"{standalone: true}\"\n (blur)=\"onTouched()\"\n (ngModelChange)=\"onChange($event)\"\n/>\n<div class=\"t-items\">\n <div\n *tuiRepeatTimes=\"let index of max\"\n class=\"t-item\"\n [class.t-item_active]=\"isActive(index)\"\n (pointerup)=\"onClick(max - index)\"\n >\n <tui-icon\n *polymorpheusOutlet=\"icon as src; context: {$implicit: max - index}\"\n class=\"t-icon t-icon_blank\"\n [class.t-icon_fraction]=\"isFraction(index)\"\n [icon]=\"src.toString()\"\n [style.--t-cut.%]=\"100 - getCut(index)\"\n />\n <tui-icon\n *polymorpheusOutlet=\"icon as src; context: {$implicit: max - index}\"\n class=\"t-icon\"\n [icon]=\"src.toString()\"\n [style.--t-cut.%]=\"getCut(index)\"\n />\n </div>\n</div>\n", styles: [":host{position:relative;display:block;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;min-width:-webkit-fit-content;min-width:-moz-fit-content;min-width:fit-content;font-size:1rem;color:var(--tui-chart-categorical-12);cursor:pointer;-webkit-user-select:none;user-select:none}:host._readonly{pointer-events:none}:host._disabled{pointer-events:none;opacity:var(--tui-disabled-opacity)}.t-range{position:absolute;top:0;left:0;width:100%;height:100%;opacity:0;box-sizing:border-box;padding:0 .75em;pointer-events:none}.t-range:focus-visible+.t-items{box-shadow:inset 0 0 0 .125rem var(--tui-border-focus)}.t-items{position:relative;display:flex;flex-direction:row-reverse}.t-items:hover .t-icon{clip-path:inset(0 0 0 0)}.t-items:hover .t-icon_blank{clip-path:inset(0 0 0 100%)}.t-item{position:relative;flex:1 0 0;color:var(--tui-text-tertiary);transition-property:color,transform;transition-duration:var(--tui-duration);transition-timing-function:ease-in-out,cubic-bezier(.35,1.5,.4,2.5)}.t-item:first-child{max-width:2.5em}.t-item:hover,.t-item:hover~.t-item,.t-items:not(:hover) .t-item_active{color:currentColor}.t-items:active .t-item:hover,.t-items:active .t-item:hover~.t-item{transform:scale(.85);transition-duration:var(--tui-duration),calc(var(--tui-duration) / 3);transition-timing-function:ease-in-out}.t-icon{transition-property:clip-path;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;width:2.5em;height:2.5em;font-size:inherit;clip-path:inset(0 var(--t-cut) 0 0)}.t-icon ::ng-deep>*{font-size:1rem}.t-icon_blank{position:absolute;top:0;left:0;display:none;color:var(--tui-text-tertiary);clip-path:inset(0 0 0 var(--t-cut))}.t-icon_fraction{display:block}@media (any-pointer: coarse){:host._active .t-item_active{transform:scale(.85);transition-timing-function:ease-in-out}.t-range{pointer-events:auto}.t-icon{transition:none}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.RangeValueAccessor, selector: "input[type=range][formControlName],input[type=range][formControl],input[type=range][ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: TuiIcon, selector: "tui-icon", inputs: ["icon", "background"] }, { kind: "directive", type: TuiRepeatTimes, selector: "[tuiRepeatTimes][tuiRepeatTimesOf]", inputs: ["tuiRepeatTimesOf"] }, { kind: "directive", type: PolymorpheusOutlet, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
56
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiRating, isStandalone: true, selector: "tui-rating", inputs: { icon: "icon", max: "max" }, host: { listeners: { "keydown.capture": "onKeyDown($event)", "pointerdown": "onPointer(1)", "pointercancel": "onPointer(-1)", "document:pointerup": "onPointer(-1)" }, properties: { "class._disabled": "disabled()", "class._readonly": "readOnly()", "class._active": "active" } }, providers: [tuiFallbackValueProvider(0)], usesInheritance: true, ngImport: i0, template: "<input\n min=\"1\"\n type=\"range\"\n class=\"t-range\"\n [attr.aria-disabled]=\"readOnly()\"\n [disabled]=\"disabled()\"\n [max]=\"max\"\n [ngModel]=\"value()\"\n [ngModelOptions]=\"{standalone: true}\"\n (blur)=\"onTouched()\"\n (ngModelChange)=\"onChange($event)\"\n/>\n<div class=\"t-items\">\n <div\n *tuiRepeatTimes=\"let index of max\"\n class=\"t-item\"\n [class.t-item_active]=\"isActive(index)\"\n (pointerup)=\"onClick(max - index)\"\n >\n <tui-icon\n *polymorpheusOutlet=\"icon as src; context: {$implicit: max - index}\"\n class=\"t-icon t-icon_blank\"\n [class.t-icon_fraction]=\"isFraction(index)\"\n [icon]=\"src.toString()\"\n [style.--t-cut.%]=\"100 - getCut(index)\"\n />\n <tui-icon\n *polymorpheusOutlet=\"icon as src; context: {$implicit: max - index}\"\n class=\"t-icon\"\n [icon]=\"src.toString()\"\n [style.--t-cut.%]=\"getCut(index)\"\n />\n </div>\n</div>\n", styles: [":host{position:relative;display:block;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;min-width:-webkit-fit-content;min-width:-moz-fit-content;min-width:fit-content;font-size:1rem;color:var(--tui-chart-categorical-12);cursor:pointer;-webkit-user-select:none;user-select:none}:host._readonly{pointer-events:none}:host._disabled{pointer-events:none;opacity:var(--tui-disabled-opacity)}.t-range{position:absolute;top:0;left:0;width:100%;height:100%;opacity:0;box-sizing:border-box;padding:0 .75em;pointer-events:none}.t-range:focus-visible+.t-items{box-shadow:inset 0 0 0 .125rem var(--tui-border-focus)}.t-items{position:relative;display:flex;flex-direction:row-reverse}.t-items:hover .t-icon{clip-path:inset(0 0 0 0)}.t-items:hover .t-icon_blank{clip-path:inset(0 0 0 100%)}.t-item{position:relative;flex:1 0 0;color:var(--tui-text-tertiary);transition-property:color,transform;transition-duration:var(--tui-duration);transition-timing-function:ease-in-out,cubic-bezier(.35,1.5,.4,2.5)}.t-item:first-child{max-width:2.5em}.t-item:hover,.t-item:hover~.t-item,.t-items:not(:hover) .t-item_active{color:currentColor}.t-items:active .t-item:hover,.t-items:active .t-item:hover~.t-item{transform:scale(.85);transition-duration:var(--tui-duration),calc(var(--tui-duration) / 3);transition-timing-function:ease-in-out}.t-icon{transition-property:clip-path;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;width:2.5em;height:2.5em;font-size:inherit;clip-path:inset(0 var(--t-cut) 0 0)}.t-icon ::ng-deep>*{font-size:1rem}.t-icon_blank{position:absolute;top:0;left:0;display:none;color:var(--tui-text-tertiary);clip-path:inset(0 0 0 var(--t-cut))}.t-icon_fraction{display:block}@media (any-pointer: coarse){:host._active .t-item_active{transform:scale(.85);transition-timing-function:ease-in-out}.t-range{pointer-events:auto}.t-icon{transition:none}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.RangeValueAccessor, selector: "input[type=range][formControlName],input[type=range][formControl],input[type=range][ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: TuiIcon, selector: "tui-icon", inputs: ["icon", "background"] }, { kind: "directive", type: TuiRepeatTimes, selector: "[tuiRepeatTimes][tuiRepeatTimesOf]", inputs: ["tuiRepeatTimesOf"] }, { kind: "directive", type: PolymorpheusOutlet, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
57
57
  }
58
58
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiRating, decorators: [{
59
59
  type: Component,
60
60
  args: [{ standalone: true, selector: 'tui-rating', imports: [CommonModule, FormsModule, TuiIcon, TuiRepeatTimes, PolymorpheusOutlet], changeDetection: ChangeDetectionStrategy.OnPush, providers: [tuiFallbackValueProvider(0)], host: {
61
61
  '[class._disabled]': 'disabled()',
62
62
  '[class._readonly]': 'readOnly()',
63
+ '[class._active]': 'active',
64
+ '(keydown.capture)': 'onKeyDown($event)',
65
+ '(pointerdown)': 'onPointer(1)',
66
+ '(pointercancel)': 'onPointer(-1)',
67
+ '(document:pointerup)': 'onPointer(-1)',
63
68
  }, template: "<input\n min=\"1\"\n type=\"range\"\n class=\"t-range\"\n [attr.aria-disabled]=\"readOnly()\"\n [disabled]=\"disabled()\"\n [max]=\"max\"\n [ngModel]=\"value()\"\n [ngModelOptions]=\"{standalone: true}\"\n (blur)=\"onTouched()\"\n (ngModelChange)=\"onChange($event)\"\n/>\n<div class=\"t-items\">\n <div\n *tuiRepeatTimes=\"let index of max\"\n class=\"t-item\"\n [class.t-item_active]=\"isActive(index)\"\n (pointerup)=\"onClick(max - index)\"\n >\n <tui-icon\n *polymorpheusOutlet=\"icon as src; context: {$implicit: max - index}\"\n class=\"t-icon t-icon_blank\"\n [class.t-icon_fraction]=\"isFraction(index)\"\n [icon]=\"src.toString()\"\n [style.--t-cut.%]=\"100 - getCut(index)\"\n />\n <tui-icon\n *polymorpheusOutlet=\"icon as src; context: {$implicit: max - index}\"\n class=\"t-icon\"\n [icon]=\"src.toString()\"\n [style.--t-cut.%]=\"getCut(index)\"\n />\n </div>\n</div>\n", styles: [":host{position:relative;display:block;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;min-width:-webkit-fit-content;min-width:-moz-fit-content;min-width:fit-content;font-size:1rem;color:var(--tui-chart-categorical-12);cursor:pointer;-webkit-user-select:none;user-select:none}:host._readonly{pointer-events:none}:host._disabled{pointer-events:none;opacity:var(--tui-disabled-opacity)}.t-range{position:absolute;top:0;left:0;width:100%;height:100%;opacity:0;box-sizing:border-box;padding:0 .75em;pointer-events:none}.t-range:focus-visible+.t-items{box-shadow:inset 0 0 0 .125rem var(--tui-border-focus)}.t-items{position:relative;display:flex;flex-direction:row-reverse}.t-items:hover .t-icon{clip-path:inset(0 0 0 0)}.t-items:hover .t-icon_blank{clip-path:inset(0 0 0 100%)}.t-item{position:relative;flex:1 0 0;color:var(--tui-text-tertiary);transition-property:color,transform;transition-duration:var(--tui-duration);transition-timing-function:ease-in-out,cubic-bezier(.35,1.5,.4,2.5)}.t-item:first-child{max-width:2.5em}.t-item:hover,.t-item:hover~.t-item,.t-items:not(:hover) .t-item_active{color:currentColor}.t-items:active .t-item:hover,.t-items:active .t-item:hover~.t-item{transform:scale(.85);transition-duration:var(--tui-duration),calc(var(--tui-duration) / 3);transition-timing-function:ease-in-out}.t-icon{transition-property:clip-path;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;width:2.5em;height:2.5em;font-size:inherit;clip-path:inset(0 var(--t-cut) 0 0)}.t-icon ::ng-deep>*{font-size:1rem}.t-icon_blank{position:absolute;top:0;left:0;display:none;color:var(--tui-text-tertiary);clip-path:inset(0 0 0 var(--t-cut))}.t-icon_fraction{display:block}@media (any-pointer: coarse){:host._active .t-item_active{transform:scale(.85);transition-timing-function:ease-in-out}.t-range{pointer-events:auto}.t-icon{transition:none}}\n"] }]
64
- }], propDecorators: { active: [{
65
- type: HostBinding,
66
- args: ['class._active']
67
- }], icon: [{
69
+ }], propDecorators: { icon: [{
68
70
  type: Input
69
71
  }], max: [{
70
72
  type: Input
71
- }], onKeyDown: [{
72
- type: HostListener,
73
- args: ['keydown.capture', ['$event']]
74
- }], onPointer: [{
75
- type: HostListener,
76
- args: ['pointerdown', ['1']]
77
- }, {
78
- type: HostListener,
79
- args: ['pointercancel', ['-1']]
80
- }, {
81
- type: HostListener,
82
- args: ['document:pointerup', ['-1']]
83
73
  }] } });
84
74
 
85
75
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-kit-components-rating.mjs","sources":["../../../projects/kit/components/rating/rating.options.ts","../../../projects/kit/components/rating/rating.component.ts","../../../projects/kit/components/rating/rating.template.html","../../../projects/kit/components/rating/taiga-ui-kit-components-rating.ts"],"sourcesContent":["import type {Provider} from '@angular/core';\nimport type {TuiContext} from '@taiga-ui/cdk/types';\nimport {tuiCreateToken, tuiProvideOptions} from '@taiga-ui/cdk/utils/miscellaneous';\nimport type {PolymorpheusContent} from '@taiga-ui/polymorpheus';\n\nexport interface TuiRatingOptions {\n readonly icon: PolymorpheusContent<TuiContext<number>>;\n readonly max: number;\n}\n\nexport const TUI_RATING_DEFAULT_OPTIONS: TuiRatingOptions = {\n icon: '@tui.star',\n max: 5,\n};\n\nexport const TUI_RATING_OPTIONS = tuiCreateToken(TUI_RATING_DEFAULT_OPTIONS);\n\nexport function tuiRatingOptionsProvider(options: Partial<TuiRatingOptions>): Provider {\n return tuiProvideOptions(TUI_RATING_OPTIONS, options, TUI_RATING_DEFAULT_OPTIONS);\n}\n","import {CommonModule} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n HostBinding,\n HostListener,\n inject,\n Input,\n} from '@angular/core';\nimport {FormsModule} from '@angular/forms';\nimport {TuiControl} from '@taiga-ui/cdk/classes';\nimport {TuiRepeatTimes} from '@taiga-ui/cdk/directives/repeat-times';\nimport {tuiFallbackValueProvider} from '@taiga-ui/cdk/tokens';\nimport {tuiClamp} from '@taiga-ui/cdk/utils/math';\nimport {TuiIcon} from '@taiga-ui/core/components/icon';\nimport {PolymorpheusOutlet} from '@taiga-ui/polymorpheus';\n\nimport type {TuiRatingOptions} from './rating.options';\nimport {TUI_RATING_OPTIONS} from './rating.options';\n\n@Component({\n standalone: true,\n selector: 'tui-rating',\n imports: [CommonModule, FormsModule, TuiIcon, TuiRepeatTimes, PolymorpheusOutlet],\n templateUrl: './rating.template.html',\n styleUrls: ['./rating.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [tuiFallbackValueProvider(0)],\n host: {\n '[class._disabled]': 'disabled()',\n '[class._readonly]': 'readOnly()',\n },\n})\nexport class TuiRating extends TuiControl<number> {\n private readonly options = inject(TUI_RATING_OPTIONS);\n\n @HostBinding('class._active')\n protected active = 0;\n\n @Input()\n public icon: TuiRatingOptions['icon'] = this.options.icon;\n\n @Input()\n public max = this.options.max;\n\n @HostListener('keydown.capture', ['$event'])\n protected onKeyDown(event: KeyboardEvent): void {\n if (this.readOnly()) {\n event.preventDefault();\n }\n }\n\n @HostListener('pointerdown', ['1'])\n @HostListener('pointercancel', ['-1'])\n @HostListener('document:pointerup', ['-1'])\n protected onPointer(delta: number): void {\n this.active = tuiClamp(this.active + delta, 0, 1);\n }\n\n protected onClick(value: number): void {\n if (this.active) {\n this.onChange(value);\n }\n }\n\n protected isActive(index: number): boolean {\n return Math.ceil(this.value()) >= this.max - index;\n }\n\n protected isFraction(index: number): boolean {\n return this.value() > this.max - index - 1 && this.value() < this.max - index;\n }\n\n protected getCut(index: number): number {\n return this.isFraction(index)\n ? 100 * Math.max(this.max - index - this.value(), 0)\n : 0;\n }\n}\n","<input\n min=\"1\"\n type=\"range\"\n class=\"t-range\"\n [attr.aria-disabled]=\"readOnly()\"\n [disabled]=\"disabled()\"\n [max]=\"max\"\n [ngModel]=\"value()\"\n [ngModelOptions]=\"{standalone: true}\"\n (blur)=\"onTouched()\"\n (ngModelChange)=\"onChange($event)\"\n/>\n<div class=\"t-items\">\n <div\n *tuiRepeatTimes=\"let index of max\"\n class=\"t-item\"\n [class.t-item_active]=\"isActive(index)\"\n (pointerup)=\"onClick(max - index)\"\n >\n <tui-icon\n *polymorpheusOutlet=\"icon as src; context: {$implicit: max - index}\"\n class=\"t-icon t-icon_blank\"\n [class.t-icon_fraction]=\"isFraction(index)\"\n [icon]=\"src.toString()\"\n [style.--t-cut.%]=\"100 - getCut(index)\"\n />\n <tui-icon\n *polymorpheusOutlet=\"icon as src; context: {$implicit: max - index}\"\n class=\"t-icon\"\n [icon]=\"src.toString()\"\n [style.--t-cut.%]=\"getCut(index)\"\n />\n </div>\n</div>\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-rating.mjs","sources":["../../../projects/kit/components/rating/rating.options.ts","../../../projects/kit/components/rating/rating.component.ts","../../../projects/kit/components/rating/rating.template.html","../../../projects/kit/components/rating/taiga-ui-kit-components-rating.ts"],"sourcesContent":["import type {Provider} from '@angular/core';\nimport type {TuiContext} from '@taiga-ui/cdk/types';\nimport {tuiCreateToken, tuiProvideOptions} from '@taiga-ui/cdk/utils/miscellaneous';\nimport type {PolymorpheusContent} from '@taiga-ui/polymorpheus';\n\nexport interface TuiRatingOptions {\n readonly icon: PolymorpheusContent<TuiContext<number>>;\n readonly max: number;\n}\n\nexport const TUI_RATING_DEFAULT_OPTIONS: TuiRatingOptions = {\n icon: '@tui.star',\n max: 5,\n};\n\nexport const TUI_RATING_OPTIONS = tuiCreateToken(TUI_RATING_DEFAULT_OPTIONS);\n\nexport function tuiRatingOptionsProvider(options: Partial<TuiRatingOptions>): Provider {\n return tuiProvideOptions(TUI_RATING_OPTIONS, options, TUI_RATING_DEFAULT_OPTIONS);\n}\n","import {CommonModule} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, inject, Input} from '@angular/core';\nimport {FormsModule} from '@angular/forms';\nimport {TuiControl} from '@taiga-ui/cdk/classes';\nimport {TuiRepeatTimes} from '@taiga-ui/cdk/directives/repeat-times';\nimport {tuiFallbackValueProvider} from '@taiga-ui/cdk/tokens';\nimport {tuiClamp} from '@taiga-ui/cdk/utils/math';\nimport {TuiIcon} from '@taiga-ui/core/components/icon';\nimport {PolymorpheusOutlet} from '@taiga-ui/polymorpheus';\n\nimport type {TuiRatingOptions} from './rating.options';\nimport {TUI_RATING_OPTIONS} from './rating.options';\n\n@Component({\n standalone: true,\n selector: 'tui-rating',\n imports: [CommonModule, FormsModule, TuiIcon, TuiRepeatTimes, PolymorpheusOutlet],\n templateUrl: './rating.template.html',\n styleUrls: ['./rating.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [tuiFallbackValueProvider(0)],\n host: {\n '[class._disabled]': 'disabled()',\n '[class._readonly]': 'readOnly()',\n '[class._active]': 'active',\n '(keydown.capture)': 'onKeyDown($event)',\n '(pointerdown)': 'onPointer(1)',\n '(pointercancel)': 'onPointer(-1)',\n '(document:pointerup)': 'onPointer(-1)',\n },\n})\nexport class TuiRating extends TuiControl<number> {\n private readonly options = inject(TUI_RATING_OPTIONS);\n\n protected active = 0;\n\n @Input()\n public icon: TuiRatingOptions['icon'] = this.options.icon;\n\n @Input()\n public max = this.options.max;\n\n protected onKeyDown(event: KeyboardEvent): void {\n if (this.readOnly()) {\n event.preventDefault();\n }\n }\n\n protected onPointer(delta: number): void {\n this.active = tuiClamp(this.active + delta, 0, 1);\n }\n\n protected onClick(value: number): void {\n if (this.active) {\n this.onChange(value);\n }\n }\n\n protected isActive(index: number): boolean {\n return Math.ceil(this.value()) >= this.max - index;\n }\n\n protected isFraction(index: number): boolean {\n return this.value() > this.max - index - 1 && this.value() < this.max - index;\n }\n\n protected getCut(index: number): number {\n return this.isFraction(index)\n ? 100 * Math.max(this.max - index - this.value(), 0)\n : 0;\n }\n}\n","<input\n min=\"1\"\n type=\"range\"\n class=\"t-range\"\n [attr.aria-disabled]=\"readOnly()\"\n [disabled]=\"disabled()\"\n [max]=\"max\"\n [ngModel]=\"value()\"\n [ngModelOptions]=\"{standalone: true}\"\n (blur)=\"onTouched()\"\n (ngModelChange)=\"onChange($event)\"\n/>\n<div class=\"t-items\">\n <div\n *tuiRepeatTimes=\"let index of max\"\n class=\"t-item\"\n [class.t-item_active]=\"isActive(index)\"\n (pointerup)=\"onClick(max - index)\"\n >\n <tui-icon\n *polymorpheusOutlet=\"icon as src; context: {$implicit: max - index}\"\n class=\"t-icon t-icon_blank\"\n [class.t-icon_fraction]=\"isFraction(index)\"\n [icon]=\"src.toString()\"\n [style.--t-cut.%]=\"100 - getCut(index)\"\n />\n <tui-icon\n *polymorpheusOutlet=\"icon as src; context: {$implicit: max - index}\"\n class=\"t-icon\"\n [icon]=\"src.toString()\"\n [style.--t-cut.%]=\"getCut(index)\"\n />\n </div>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,33 +1,30 @@
1
1
  import * as i0 from '@angular/core';
2
- import { inject, DestroyRef, PLATFORM_ID, ElementRef, Directive, ContentChildren, HostListener, NgZone, EventEmitter, Component, ViewEncapsulation, ChangeDetectionStrategy, Input, HostBinding, Output } from '@angular/core';
2
+ import { inject, ElementRef, Directive, ContentChildren, NgZone, EventEmitter, Component, ViewEncapsulation, ChangeDetectionStrategy, Input, Output } from '@angular/core';
3
3
  import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
4
4
  import { ResizeObserverService } from '@ng-web-apis/resize-observer';
5
- import { tuiQueryListChanges, tuiZonefree } from '@taiga-ui/cdk/observables';
5
+ import { tuiQueryListChanges, tuiControlValue, tuiZonefree } from '@taiga-ui/cdk/observables';
6
6
  import { tuiInjectElement, tuiIsHTMLElement } from '@taiga-ui/cdk/utils/dom';
7
7
  import { tuiPx } from '@taiga-ui/cdk/utils/miscellaneous';
8
8
  import { tuiBadgeNotificationOptionsProvider } from '@taiga-ui/kit/components/badge-notification';
9
- import { isPlatformBrowser } from '@angular/common';
10
- import { NgControl } from '@angular/forms';
9
+ import { NgControl, RadioControlValueAccessor } from '@angular/forms';
11
10
  import { RouterLinkActive } from '@angular/router';
12
11
  import { EMPTY_QUERY } from '@taiga-ui/cdk/constants';
13
- import { switchMap, merge, filter } from 'rxjs';
12
+ import { switchMap, map } from 'rxjs';
14
13
 
15
14
  class TuiSegmentedDirective {
16
15
  constructor() {
17
16
  this.controls = EMPTY_QUERY;
17
+ this.radios = EMPTY_QUERY;
18
18
  this.links = EMPTY_QUERY;
19
19
  this.elements = EMPTY_QUERY;
20
- this.destroyRef = inject(DestroyRef);
21
20
  this.component = inject(TuiSegmented);
22
21
  this.el = tuiInjectElement();
23
- // TODO: Debug prerender
24
- this.isBrowser = isPlatformBrowser(inject(PLATFORM_ID));
25
22
  }
26
23
  ngAfterContentInit() {
27
24
  tuiQueryListChanges(this.controls)
28
- .pipe(switchMap((controls) => merge(controls.map((c) => c.valueChanges))), filter(() => this.isBrowser), takeUntilDestroyed(this.destroyRef))
29
- .subscribe(() => {
30
- this.update(this.el.querySelector(':checked'));
25
+ .pipe(switchMap(() => tuiControlValue(this.controls.first)), map((value) => this.radios.toArray().findIndex((c) => c.value === value)))
26
+ .subscribe((index) => {
27
+ this.component.update(index);
31
28
  });
32
29
  }
33
30
  ngAfterContentChecked() {
@@ -36,10 +33,7 @@ class TuiSegmentedDirective {
36
33
  }
37
34
  }
38
35
  update(target) {
39
- const index = this.getIndex(target);
40
- if (index >= 0) {
41
- this.component.update(index);
42
- }
36
+ this.component.update(this.getIndex(target));
43
37
  }
44
38
  get linkIndex() {
45
39
  return this.links.toArray().findIndex((link) => link.isActive);
@@ -48,31 +42,34 @@ class TuiSegmentedDirective {
48
42
  return Array.from(this.el.children).findIndex((tab) => tab.contains(element));
49
43
  }
50
44
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiSegmentedDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
51
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: TuiSegmentedDirective, isStandalone: true, host: { listeners: { "click": "update($event.target)" } }, queries: [{ propertyName: "controls", predicate: NgControl, descendants: true }, { propertyName: "links", predicate: RouterLinkActive }, { propertyName: "elements", predicate: RouterLinkActive, read: ElementRef }], ngImport: i0 }); }
45
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: TuiSegmentedDirective, isStandalone: true, host: { listeners: { "click": "update($event.target)" } }, queries: [{ propertyName: "controls", predicate: NgControl, descendants: true }, { propertyName: "radios", predicate: RadioControlValueAccessor, descendants: true }, { propertyName: "links", predicate: RouterLinkActive }, { propertyName: "elements", predicate: RouterLinkActive, read: ElementRef }], ngImport: i0 }); }
52
46
  }
53
47
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiSegmentedDirective, decorators: [{
54
48
  type: Directive,
55
49
  args: [{
56
50
  standalone: true,
51
+ host: {
52
+ '(click)': 'update($event.target)',
53
+ },
57
54
  }]
58
55
  }], propDecorators: { controls: [{
59
56
  type: ContentChildren,
60
57
  args: [NgControl, { descendants: true }]
58
+ }], radios: [{
59
+ type: ContentChildren,
60
+ args: [RadioControlValueAccessor, { descendants: true }]
61
61
  }], links: [{
62
62
  type: ContentChildren,
63
63
  args: [RouterLinkActive]
64
64
  }], elements: [{
65
65
  type: ContentChildren,
66
66
  args: [RouterLinkActive, { read: ElementRef }]
67
- }], update: [{
68
- type: HostListener,
69
- args: ['click', ['$event.target']]
70
67
  }] } });
71
68
 
72
69
  class TuiSegmented {
73
70
  constructor() {
74
71
  this.el = tuiInjectElement();
75
- this.sub = inject(ResizeObserverService)
72
+ this.sub = inject(ResizeObserverService, { self: true })
76
73
  .pipe(tuiZonefree(inject(NgZone)), takeUntilDestroyed())
77
74
  .subscribe(() => this.refresh());
78
75
  this.size = 's';
@@ -83,7 +80,7 @@ class TuiSegmented {
83
80
  this.refresh();
84
81
  }
85
82
  update(activeItemIndex) {
86
- if (activeItemIndex === this.activeItemIndex) {
83
+ if (activeItemIndex === this.activeItemIndex || activeItemIndex < 0) {
87
84
  return;
88
85
  }
89
86
  this.activeItemIndex = activeItemIndex;
@@ -106,16 +103,15 @@ class TuiSegmented {
106
103
  this.el.style.setProperty('--t-width', tuiPx(this.width));
107
104
  }
108
105
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiSegmented, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
109
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiSegmented, isStandalone: true, selector: "tui-segmented", inputs: { size: "size", activeItemIndex: "activeItemIndex" }, outputs: { activeItemIndexChange: "activeItemIndexChange" }, host: { properties: { "attr.data-size": "this.size" } }, providers: [ResizeObserverService, tuiBadgeNotificationOptionsProvider({ size: 's' })], usesOnChanges: true, hostDirectives: [{ directive: TuiSegmentedDirective }], ngImport: i0, template: '<ng-content></ng-content>', isInline: true, styles: ["tui-segmented{position:relative;display:flex;box-sizing:border-box;isolation:isolate;color:var(--tui-background-neutral-1);border:.125rem solid transparent}tui-segmented[data-size=s]{--t-padding: .625rem;--t-gap: .5rem;--t-margin: -.125rem;height:var(--tui-height-s);font:var(--tui-font-text-s);border-radius:var(--tui-radius-s)}tui-segmented[data-size=s]>*:before,tui-segmented[data-size=s]>*:after,tui-segmented[data-size=s] tui-icon{font-size:1rem}tui-segmented[data-size=m]{--t-padding: .875rem;--t-gap: 1rem;--t-margin: -.375rem;height:var(--tui-height-m);font:var(--tui-font-text-m);border-radius:var(--tui-radius-s)}tui-segmented[data-size=l]{--t-padding: 1.125rem;--t-gap: 1rem;--t-margin: -.375rem;height:var(--tui-height-l);font:var(--tui-font-text-l);border-radius:var(--tui-radius-m);border-width:.25rem}tui-segmented[data-size=l]:after{box-shadow:0 0 0 .25rem}tui-segmented>a,tui-segmented>button,tui-segmented>label,tui-segmented>label>input:not([tuiRadio]){transition-property:color;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;-webkit-appearance:none;appearance:none;padding:0;border:0;background:none;font-size:inherit;line-height:inherit;text-decoration:none;position:relative;display:flex;align-items:center;justify-content:center;white-space:nowrap;gap:var(--t-gap);margin:0;padding:0 var(--t-padding);color:var(--tui-text-primary);overflow:hidden;cursor:pointer;font:inherit;border-radius:inherit}tui-segmented>a>*,tui-segmented>button>*,tui-segmented>label>*,tui-segmented>label>input:not([tuiRadio])>*,tui-segmented>a:before,tui-segmented>button:before,tui-segmented>label:before,tui-segmented>label>input:not([tuiRadio]):before,tui-segmented>a:after,tui-segmented>button:after,tui-segmented>label:after,tui-segmented>label>input:not([tuiRadio]):after{margin:0 var(--t-margin)}tui-segmented>a:focus-visible,tui-segmented>button:focus-visible,tui-segmented>label:focus-visible,tui-segmented>label>input:not([tuiRadio]):focus-visible{outline:.125rem solid var(--tui-border-focus);outline-offset:-.125rem}tui-segmented>label>input:not([tuiRadio]){position:absolute;top:0;left:0;width:100%;height:100%}tui-segmented:after{position:absolute;top:0;left:0;width:100%;height:100%;content:\"\";z-index:-1;border-radius:inherit;background:currentColor;box-shadow:0 0 0 .125rem}tui-segmented:before{transition-property:left,width;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;content:\"\";position:absolute;left:var(--t-left);height:100%;width:var(--t-width);border-radius:inherit;background:currentColor;color:var(--tui-background-base);box-shadow:0 .25rem 1.25rem #0000001a}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
106
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiSegmented, isStandalone: true, selector: "tui-segmented", inputs: { size: "size", activeItemIndex: "activeItemIndex" }, outputs: { activeItemIndexChange: "activeItemIndexChange" }, host: { properties: { "attr.data-size": "size" } }, providers: [ResizeObserverService, tuiBadgeNotificationOptionsProvider({ size: 's' })], usesOnChanges: true, hostDirectives: [{ directive: TuiSegmentedDirective }], ngImport: i0, template: '<ng-content />', isInline: true, styles: ["tui-segmented{position:relative;display:flex;box-sizing:border-box;isolation:isolate;color:var(--tui-background-neutral-1);border:.125rem solid transparent}tui-segmented[data-size=s]{--t-padding: .625rem;--t-gap: .5rem;--t-margin: -.125rem;height:var(--tui-height-s);font:var(--tui-font-text-s);border-radius:var(--tui-radius-s)}tui-segmented[data-size=s]>*:before,tui-segmented[data-size=s]>*:after,tui-segmented[data-size=s] tui-icon{font-size:1rem}tui-segmented[data-size=m]{--t-padding: .875rem;--t-gap: 1rem;--t-margin: -.375rem;height:var(--tui-height-m);font:var(--tui-font-text-m);border-radius:var(--tui-radius-s)}tui-segmented[data-size=l]{--t-padding: 1.125rem;--t-gap: 1rem;--t-margin: -.375rem;height:var(--tui-height-l);font:var(--tui-font-text-l);border-radius:var(--tui-radius-m);border-width:.25rem}tui-segmented[data-size=l]:after{box-shadow:0 0 0 .25rem}tui-segmented>a,tui-segmented>button,tui-segmented>label,tui-segmented>label>input:not([tuiRadio]){transition-property:color;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;-webkit-appearance:none;appearance:none;padding:0;border:0;background:none;font-size:inherit;line-height:inherit;text-decoration:none;position:relative;display:flex;align-items:center;justify-content:center;white-space:nowrap;gap:var(--t-gap);margin:0;padding:0 var(--t-padding);color:var(--tui-text-primary);overflow:hidden;cursor:pointer;font:inherit;border-radius:inherit}tui-segmented>a>*,tui-segmented>button>*,tui-segmented>label>*,tui-segmented>label>input:not([tuiRadio])>*,tui-segmented>a:before,tui-segmented>button:before,tui-segmented>label:before,tui-segmented>label>input:not([tuiRadio]):before,tui-segmented>a:after,tui-segmented>button:after,tui-segmented>label:after,tui-segmented>label>input:not([tuiRadio]):after{margin:0 var(--t-margin)}tui-segmented>a:focus-visible,tui-segmented>button:focus-visible,tui-segmented>label:focus-visible,tui-segmented>label>input:not([tuiRadio]):focus-visible{outline:.125rem solid var(--tui-border-focus);outline-offset:-.125rem}tui-segmented>label>input:not([tuiRadio]){position:absolute;top:0;left:0;width:100%;height:100%}tui-segmented:after{position:absolute;top:0;left:0;width:100%;height:100%;content:\"\";z-index:-1;border-radius:inherit;background:currentColor;box-shadow:0 0 0 .125rem}tui-segmented:before{transition-property:left,width;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;content:\"\";position:absolute;left:var(--t-left);height:100%;width:var(--t-width);border-radius:inherit;background:currentColor;color:var(--tui-background-base);box-shadow:0 .25rem 1.25rem #0000001a}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
110
107
  }
111
108
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiSegmented, decorators: [{
112
109
  type: Component,
113
- args: [{ standalone: true, selector: 'tui-segmented', template: '<ng-content></ng-content>', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [ResizeObserverService, tuiBadgeNotificationOptionsProvider({ size: 's' })], hostDirectives: [TuiSegmentedDirective], styles: ["tui-segmented{position:relative;display:flex;box-sizing:border-box;isolation:isolate;color:var(--tui-background-neutral-1);border:.125rem solid transparent}tui-segmented[data-size=s]{--t-padding: .625rem;--t-gap: .5rem;--t-margin: -.125rem;height:var(--tui-height-s);font:var(--tui-font-text-s);border-radius:var(--tui-radius-s)}tui-segmented[data-size=s]>*:before,tui-segmented[data-size=s]>*:after,tui-segmented[data-size=s] tui-icon{font-size:1rem}tui-segmented[data-size=m]{--t-padding: .875rem;--t-gap: 1rem;--t-margin: -.375rem;height:var(--tui-height-m);font:var(--tui-font-text-m);border-radius:var(--tui-radius-s)}tui-segmented[data-size=l]{--t-padding: 1.125rem;--t-gap: 1rem;--t-margin: -.375rem;height:var(--tui-height-l);font:var(--tui-font-text-l);border-radius:var(--tui-radius-m);border-width:.25rem}tui-segmented[data-size=l]:after{box-shadow:0 0 0 .25rem}tui-segmented>a,tui-segmented>button,tui-segmented>label,tui-segmented>label>input:not([tuiRadio]){transition-property:color;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;-webkit-appearance:none;appearance:none;padding:0;border:0;background:none;font-size:inherit;line-height:inherit;text-decoration:none;position:relative;display:flex;align-items:center;justify-content:center;white-space:nowrap;gap:var(--t-gap);margin:0;padding:0 var(--t-padding);color:var(--tui-text-primary);overflow:hidden;cursor:pointer;font:inherit;border-radius:inherit}tui-segmented>a>*,tui-segmented>button>*,tui-segmented>label>*,tui-segmented>label>input:not([tuiRadio])>*,tui-segmented>a:before,tui-segmented>button:before,tui-segmented>label:before,tui-segmented>label>input:not([tuiRadio]):before,tui-segmented>a:after,tui-segmented>button:after,tui-segmented>label:after,tui-segmented>label>input:not([tuiRadio]):after{margin:0 var(--t-margin)}tui-segmented>a:focus-visible,tui-segmented>button:focus-visible,tui-segmented>label:focus-visible,tui-segmented>label>input:not([tuiRadio]):focus-visible{outline:.125rem solid var(--tui-border-focus);outline-offset:-.125rem}tui-segmented>label>input:not([tuiRadio]){position:absolute;top:0;left:0;width:100%;height:100%}tui-segmented:after{position:absolute;top:0;left:0;width:100%;height:100%;content:\"\";z-index:-1;border-radius:inherit;background:currentColor;box-shadow:0 0 0 .125rem}tui-segmented:before{transition-property:left,width;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;content:\"\";position:absolute;left:var(--t-left);height:100%;width:var(--t-width);border-radius:inherit;background:currentColor;color:var(--tui-background-base);box-shadow:0 .25rem 1.25rem #0000001a}\n"] }]
110
+ args: [{ standalone: true, selector: 'tui-segmented', template: '<ng-content />', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [ResizeObserverService, tuiBadgeNotificationOptionsProvider({ size: 's' })], hostDirectives: [TuiSegmentedDirective], host: {
111
+ '[attr.data-size]': 'size',
112
+ }, styles: ["tui-segmented{position:relative;display:flex;box-sizing:border-box;isolation:isolate;color:var(--tui-background-neutral-1);border:.125rem solid transparent}tui-segmented[data-size=s]{--t-padding: .625rem;--t-gap: .5rem;--t-margin: -.125rem;height:var(--tui-height-s);font:var(--tui-font-text-s);border-radius:var(--tui-radius-s)}tui-segmented[data-size=s]>*:before,tui-segmented[data-size=s]>*:after,tui-segmented[data-size=s] tui-icon{font-size:1rem}tui-segmented[data-size=m]{--t-padding: .875rem;--t-gap: 1rem;--t-margin: -.375rem;height:var(--tui-height-m);font:var(--tui-font-text-m);border-radius:var(--tui-radius-s)}tui-segmented[data-size=l]{--t-padding: 1.125rem;--t-gap: 1rem;--t-margin: -.375rem;height:var(--tui-height-l);font:var(--tui-font-text-l);border-radius:var(--tui-radius-m);border-width:.25rem}tui-segmented[data-size=l]:after{box-shadow:0 0 0 .25rem}tui-segmented>a,tui-segmented>button,tui-segmented>label,tui-segmented>label>input:not([tuiRadio]){transition-property:color;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;-webkit-appearance:none;appearance:none;padding:0;border:0;background:none;font-size:inherit;line-height:inherit;text-decoration:none;position:relative;display:flex;align-items:center;justify-content:center;white-space:nowrap;gap:var(--t-gap);margin:0;padding:0 var(--t-padding);color:var(--tui-text-primary);overflow:hidden;cursor:pointer;font:inherit;border-radius:inherit}tui-segmented>a>*,tui-segmented>button>*,tui-segmented>label>*,tui-segmented>label>input:not([tuiRadio])>*,tui-segmented>a:before,tui-segmented>button:before,tui-segmented>label:before,tui-segmented>label>input:not([tuiRadio]):before,tui-segmented>a:after,tui-segmented>button:after,tui-segmented>label:after,tui-segmented>label>input:not([tuiRadio]):after{margin:0 var(--t-margin)}tui-segmented>a:focus-visible,tui-segmented>button:focus-visible,tui-segmented>label:focus-visible,tui-segmented>label>input:not([tuiRadio]):focus-visible{outline:.125rem solid var(--tui-border-focus);outline-offset:-.125rem}tui-segmented>label>input:not([tuiRadio]){position:absolute;top:0;left:0;width:100%;height:100%}tui-segmented:after{position:absolute;top:0;left:0;width:100%;height:100%;content:\"\";z-index:-1;border-radius:inherit;background:currentColor;box-shadow:0 0 0 .125rem}tui-segmented:before{transition-property:left,width;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;content:\"\";position:absolute;left:var(--t-left);height:100%;width:var(--t-width);border-radius:inherit;background:currentColor;color:var(--tui-background-base);box-shadow:0 .25rem 1.25rem #0000001a}\n"] }]
114
113
  }], propDecorators: { size: [{
115
114
  type: Input
116
- }, {
117
- type: HostBinding,
118
- args: ['attr.data-size']
119
115
  }], activeItemIndex: [{
120
116
  type: Input
121
117
  }], activeItemIndexChange: [{