@taiga-ui/legacy 4.9.0 → 4.11.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 (136) hide show
  1. package/classes/control.d.ts +1 -1
  2. package/components/combo-box/combo-box.component.d.ts +2 -1
  3. package/components/input-phone/input-phone.component.d.ts +2 -1
  4. package/components/input-phone-international/input-phone-international.component.d.ts +2 -1
  5. package/components/input-tag/input-tag.component.d.ts +2 -1
  6. package/components/input-time/input-time.component.d.ts +2 -1
  7. package/components/multi-select/multi-select.component.d.ts +6 -1
  8. package/components/select/select.component.d.ts +2 -1
  9. package/esm2022/classes/control.mjs +5 -5
  10. package/esm2022/components/arrow/arrow.component.mjs +3 -4
  11. package/esm2022/components/color-selector/color-edit/color-edit.component.mjs +3 -5
  12. package/esm2022/components/color-selector/color-picker/color-picker.component.mjs +3 -5
  13. package/esm2022/components/color-selector/color-selector.component.mjs +3 -5
  14. package/esm2022/components/color-selector/flat-picker/flat-picker.component.mjs +3 -5
  15. package/esm2022/components/color-selector/linear-multi-picker/linear-multi-picker.component.mjs +2 -3
  16. package/esm2022/components/color-selector/linear-picker/linear-picker.component.mjs +3 -5
  17. package/esm2022/components/color-selector/palette/palette.component.mjs +3 -5
  18. package/esm2022/components/combo-box/combo-box.component.mjs +11 -13
  19. package/esm2022/components/input/input.component.mjs +6 -8
  20. package/esm2022/components/input-color/input-color.component.mjs +3 -4
  21. package/esm2022/components/input-copy/input-copy.component.mjs +4 -5
  22. package/esm2022/components/input-date/input-date.component.mjs +4 -5
  23. package/esm2022/components/input-date-multi/input-date-multi.component.mjs +4 -5
  24. package/esm2022/components/input-date-range/input-date-range.component.mjs +4 -5
  25. package/esm2022/components/input-date-time/input-date-time.component.mjs +4 -5
  26. package/esm2022/components/input-date-time/input-date-time.directive.mjs +2 -2
  27. package/esm2022/components/input-month/input-month.component.mjs +4 -5
  28. package/esm2022/components/input-month-range/input-month-range.component.mjs +4 -5
  29. package/esm2022/components/input-number/input-number.component.mjs +4 -5
  30. package/esm2022/components/input-password/input-password.component.mjs +4 -5
  31. package/esm2022/components/input-phone/input-phone.component.mjs +10 -12
  32. package/esm2022/components/input-phone-international/input-phone-international.component.mjs +11 -12
  33. package/esm2022/components/input-range/input-range.component.mjs +4 -5
  34. package/esm2022/components/input-slider/input-slider.component.mjs +4 -5
  35. package/esm2022/components/input-tag/input-tag.component.mjs +22 -20
  36. package/esm2022/components/input-time/input-time.component.mjs +14 -15
  37. package/esm2022/components/input-time/native-time/native-time.component.mjs +2 -3
  38. package/esm2022/components/input-year/input-year.component.mjs +4 -5
  39. package/esm2022/components/multi-select/multi-select-group/multi-select-group.component.mjs +2 -3
  40. package/esm2022/components/multi-select/multi-select.component.mjs +42 -15
  41. package/esm2022/components/multi-select/native-multi-select/native-multi-select-group.component.mjs +2 -3
  42. package/esm2022/components/multi-select/native-multi-select/native-multi-select.component.mjs +2 -3
  43. package/esm2022/components/multi-select-option/multi-select-option.component.mjs +3 -5
  44. package/esm2022/components/primitive-textfield/primitive-textfield.component.mjs +4 -5
  45. package/esm2022/components/primitive-textfield/textfield/textfield.component.mjs +2 -3
  46. package/esm2022/components/primitive-textfield/value-decoration/value-decoration.component.mjs +2 -3
  47. package/esm2022/components/select/native-select/native-select-group.component.mjs +2 -3
  48. package/esm2022/components/select/native-select/native-select.component.mjs +2 -3
  49. package/esm2022/components/select/select.component.mjs +11 -13
  50. package/esm2022/components/select-option/select-option.component.mjs +3 -5
  51. package/esm2022/components/sheet/components/sheet/sheet.component.mjs +2 -3
  52. package/esm2022/components/sheet/components/sheet-bar/sheet-bar.component.mjs +3 -5
  53. package/esm2022/components/sheet/components/sheet-heading/sheet-heading.component.mjs +3 -5
  54. package/esm2022/components/sheet/components/sheets-host/sheets-host.component.mjs +3 -5
  55. package/esm2022/components/svg/svg.component.mjs +3 -5
  56. package/esm2022/components/table-bar/table-bar.component.mjs +2 -3
  57. package/esm2022/components/table-bar/table-bars-host.component.mjs +3 -5
  58. package/esm2022/components/tag/tag.component.mjs +4 -5
  59. package/esm2022/components/textarea/textarea.component.mjs +4 -5
  60. package/esm2022/components/tooltip/tooltip.component.mjs +3 -4
  61. package/esm2022/tokens/is-apple.mjs +3 -3
  62. package/esm2022/utils/is-apple.mjs +3 -6
  63. package/fesm2022/taiga-ui-legacy-classes.mjs +4 -4
  64. package/fesm2022/taiga-ui-legacy-classes.mjs.map +1 -1
  65. package/fesm2022/taiga-ui-legacy-components-arrow.mjs +2 -3
  66. package/fesm2022/taiga-ui-legacy-components-arrow.mjs.map +1 -1
  67. package/fesm2022/taiga-ui-legacy-components-color-selector.mjs +13 -26
  68. package/fesm2022/taiga-ui-legacy-components-color-selector.mjs.map +1 -1
  69. package/fesm2022/taiga-ui-legacy-components-combo-box.mjs +13 -15
  70. package/fesm2022/taiga-ui-legacy-components-combo-box.mjs.map +1 -1
  71. package/fesm2022/taiga-ui-legacy-components-input-color.mjs +2 -3
  72. package/fesm2022/taiga-ui-legacy-components-input-color.mjs.map +1 -1
  73. package/fesm2022/taiga-ui-legacy-components-input-copy.mjs +3 -4
  74. package/fesm2022/taiga-ui-legacy-components-input-copy.mjs.map +1 -1
  75. package/fesm2022/taiga-ui-legacy-components-input-date-multi.mjs +3 -4
  76. package/fesm2022/taiga-ui-legacy-components-input-date-multi.mjs.map +1 -1
  77. package/fesm2022/taiga-ui-legacy-components-input-date-range.mjs +3 -4
  78. package/fesm2022/taiga-ui-legacy-components-input-date-range.mjs.map +1 -1
  79. package/fesm2022/taiga-ui-legacy-components-input-date-time.mjs +4 -5
  80. package/fesm2022/taiga-ui-legacy-components-input-date-time.mjs.map +1 -1
  81. package/fesm2022/taiga-ui-legacy-components-input-date.mjs +3 -4
  82. package/fesm2022/taiga-ui-legacy-components-input-date.mjs.map +1 -1
  83. package/fesm2022/taiga-ui-legacy-components-input-month-range.mjs +3 -4
  84. package/fesm2022/taiga-ui-legacy-components-input-month-range.mjs.map +1 -1
  85. package/fesm2022/taiga-ui-legacy-components-input-month.mjs +3 -4
  86. package/fesm2022/taiga-ui-legacy-components-input-month.mjs.map +1 -1
  87. package/fesm2022/taiga-ui-legacy-components-input-number.mjs +3 -4
  88. package/fesm2022/taiga-ui-legacy-components-input-number.mjs.map +1 -1
  89. package/fesm2022/taiga-ui-legacy-components-input-password.mjs +3 -4
  90. package/fesm2022/taiga-ui-legacy-components-input-password.mjs.map +1 -1
  91. package/fesm2022/taiga-ui-legacy-components-input-phone-international.mjs +10 -11
  92. package/fesm2022/taiga-ui-legacy-components-input-phone-international.mjs.map +1 -1
  93. package/fesm2022/taiga-ui-legacy-components-input-phone.mjs +12 -14
  94. package/fesm2022/taiga-ui-legacy-components-input-phone.mjs.map +1 -1
  95. package/fesm2022/taiga-ui-legacy-components-input-range.mjs +3 -4
  96. package/fesm2022/taiga-ui-legacy-components-input-range.mjs.map +1 -1
  97. package/fesm2022/taiga-ui-legacy-components-input-slider.mjs +3 -4
  98. package/fesm2022/taiga-ui-legacy-components-input-slider.mjs.map +1 -1
  99. package/fesm2022/taiga-ui-legacy-components-input-tag.mjs +23 -21
  100. package/fesm2022/taiga-ui-legacy-components-input-tag.mjs.map +1 -1
  101. package/fesm2022/taiga-ui-legacy-components-input-time.mjs +18 -21
  102. package/fesm2022/taiga-ui-legacy-components-input-time.mjs.map +1 -1
  103. package/fesm2022/taiga-ui-legacy-components-input-year.mjs +3 -4
  104. package/fesm2022/taiga-ui-legacy-components-input-year.mjs.map +1 -1
  105. package/fesm2022/taiga-ui-legacy-components-input.mjs +5 -7
  106. package/fesm2022/taiga-ui-legacy-components-input.mjs.map +1 -1
  107. package/fesm2022/taiga-ui-legacy-components-multi-select-option.mjs +2 -4
  108. package/fesm2022/taiga-ui-legacy-components-multi-select-option.mjs.map +1 -1
  109. package/fesm2022/taiga-ui-legacy-components-multi-select.mjs +51 -27
  110. package/fesm2022/taiga-ui-legacy-components-multi-select.mjs.map +1 -1
  111. package/fesm2022/taiga-ui-legacy-components-primitive-textfield.mjs +5 -8
  112. package/fesm2022/taiga-ui-legacy-components-primitive-textfield.mjs.map +1 -1
  113. package/fesm2022/taiga-ui-legacy-components-select-option.mjs +2 -4
  114. package/fesm2022/taiga-ui-legacy-components-select-option.mjs.map +1 -1
  115. package/fesm2022/taiga-ui-legacy-components-select.mjs +10 -14
  116. package/fesm2022/taiga-ui-legacy-components-select.mjs.map +1 -1
  117. package/fesm2022/taiga-ui-legacy-components-sheet.mjs +7 -14
  118. package/fesm2022/taiga-ui-legacy-components-sheet.mjs.map +1 -1
  119. package/fesm2022/taiga-ui-legacy-components-svg.mjs +2 -4
  120. package/fesm2022/taiga-ui-legacy-components-svg.mjs.map +1 -1
  121. package/fesm2022/taiga-ui-legacy-components-table-bar.mjs +3 -6
  122. package/fesm2022/taiga-ui-legacy-components-table-bar.mjs.map +1 -1
  123. package/fesm2022/taiga-ui-legacy-components-tag.mjs +3 -4
  124. package/fesm2022/taiga-ui-legacy-components-tag.mjs.map +1 -1
  125. package/fesm2022/taiga-ui-legacy-components-textarea.mjs +3 -4
  126. package/fesm2022/taiga-ui-legacy-components-textarea.mjs.map +1 -1
  127. package/fesm2022/taiga-ui-legacy-components-tooltip.mjs +2 -3
  128. package/fesm2022/taiga-ui-legacy-components-tooltip.mjs.map +1 -1
  129. package/fesm2022/taiga-ui-legacy-tokens.mjs +2 -2
  130. package/fesm2022/taiga-ui-legacy-tokens.mjs.map +1 -1
  131. package/fesm2022/taiga-ui-legacy-utils.mjs +2 -5
  132. package/fesm2022/taiga-ui-legacy-utils.mjs.map +1 -1
  133. package/package.json +25 -25
  134. package/styles/mixins/textfield.less +5 -1
  135. package/utils/icons-path-factory.d.ts +1 -1
  136. package/utils/is-apple.d.ts +2 -1
@@ -18,13 +18,11 @@ class TuiMultiSelectOptionComponent extends TuiSelectOptionComponent {
18
18
  this.value.some((item) => this.matcher(item, value)));
19
19
  }
20
20
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiMultiSelectOptionComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
21
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiMultiSelectOptionComponent, selector: "tui-multi-select-option", host: { attributes: { "ngSkipHydration": "true" } }, usesInheritance: true, ngImport: i0, template: "<input\n tuiCheckbox\n type=\"checkbox\"\n class=\"t-checkbox\"\n [checked]=\"selected$ | async\"\n [size]=\"size\"\n/>\n<ng-container [ngTemplateOutlet]=\"context.$implicit\" />\n", styles: ["@keyframes retrigger{0%{left:1px}to{left:2px}}:host{display:flex;flex:1;align-items:center;animation:retrigger 1s;overflow:hidden}.t-checkbox{margin-right:.75rem}\n"], dependencies: [{ kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.TuiCheckbox, selector: "input[type=\"checkbox\"][tuiCheckbox]", inputs: ["size"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
21
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiMultiSelectOptionComponent, selector: "tui-multi-select-option", usesInheritance: true, ngImport: i0, template: "<input\n tuiCheckbox\n type=\"checkbox\"\n class=\"t-checkbox\"\n [checked]=\"selected$ | async\"\n [size]=\"size\"\n/>\n<ng-container [ngTemplateOutlet]=\"context.$implicit\" />\n", styles: ["@keyframes retrigger{0%{left:1px}to{left:2px}}:host{display:flex;flex:1;align-items:center;animation:retrigger 1s;overflow:hidden}.t-checkbox{margin-right:.75rem}\n"], dependencies: [{ kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.TuiCheckbox, selector: "input[type=\"checkbox\"][tuiCheckbox]", inputs: ["size"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
22
22
  }
23
23
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiMultiSelectOptionComponent, decorators: [{
24
24
  type: Component,
25
- args: [{ standalone: false, selector: 'tui-multi-select-option', changeDetection: ChangeDetectionStrategy.OnPush, host: {
26
- ngSkipHydration: 'true',
27
- }, template: "<input\n tuiCheckbox\n type=\"checkbox\"\n class=\"t-checkbox\"\n [checked]=\"selected$ | async\"\n [size]=\"size\"\n/>\n<ng-container [ngTemplateOutlet]=\"context.$implicit\" />\n", styles: ["@keyframes retrigger{0%{left:1px}to{left:2px}}:host{display:flex;flex:1;align-items:center;animation:retrigger 1s;overflow:hidden}.t-checkbox{margin-right:.75rem}\n"] }]
25
+ args: [{ standalone: false, selector: 'tui-multi-select-option', changeDetection: ChangeDetectionStrategy.OnPush, template: "<input\n tuiCheckbox\n type=\"checkbox\"\n class=\"t-checkbox\"\n [checked]=\"selected$ | async\"\n [size]=\"size\"\n/>\n<ng-container [ngTemplateOutlet]=\"context.$implicit\" />\n", styles: ["@keyframes retrigger{0%{left:1px}to{left:2px}}:host{display:flex;flex:1;align-items:center;animation:retrigger 1s;overflow:hidden}.t-checkbox{margin-right:.75rem}\n"] }]
28
26
  }] });
29
27
 
30
28
  class TuiMultiSelectOptionModule {
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-legacy-components-multi-select-option.mjs","sources":["../../../projects/legacy/components/multi-select-option/multi-select-option.component.ts","../../../projects/legacy/components/multi-select-option/multi-select-option.template.html","../../../projects/legacy/components/multi-select-option/multi-select-option.module.ts","../../../projects/legacy/components/multi-select-option/taiga-ui-legacy-components-multi-select-option.ts"],"sourcesContent":["import {ChangeDetectionStrategy, Component} from '@angular/core';\nimport {tuiIsPresent} from '@taiga-ui/cdk/utils/miscellaneous';\nimport type {TuiSizeS} from '@taiga-ui/core/types';\nimport {TuiSelectOptionComponent} from '@taiga-ui/legacy/components/select-option';\n\n@Component({\n standalone: false,\n selector: 'tui-multi-select-option',\n templateUrl: './multi-select-option.template.html',\n styleUrls: ['./multi-select-option.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n ngSkipHydration: 'true',\n },\n})\nexport class TuiMultiSelectOptionComponent<\n T extends any[],\n> extends TuiSelectOptionComponent<T> {\n protected get size(): TuiSizeS {\n return this.dataList?.size === 'l' ? 'm' : 's';\n }\n\n protected override get selected(): boolean {\n const {value} = this.option;\n\n return (\n tuiIsPresent(value) &&\n tuiIsPresent(this.value) &&\n this.value.some((item) => this.matcher(item, value))\n );\n }\n}\n","<input\n tuiCheckbox\n type=\"checkbox\"\n class=\"t-checkbox\"\n [checked]=\"selected$ | async\"\n [size]=\"size\"\n/>\n<ng-container [ngTemplateOutlet]=\"context.$implicit\" />\n","import {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {TuiCheckbox} from '@taiga-ui/kit/components/checkbox';\n\nimport {TuiMultiSelectOptionComponent} from './multi-select-option.component';\n\n@NgModule({\n imports: [CommonModule, TuiCheckbox],\n declarations: [TuiMultiSelectOptionComponent],\n exports: [TuiMultiSelectOptionComponent],\n})\nexport class TuiMultiSelectOptionModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;AAKA,MAUa,6BAEX,SAAQ,wBAA2B,CAAA;AACjC,IAAA,IAAc,IAAI,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,QAAQ,EAAE,IAAI,KAAK,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;KAClD;AAED,IAAA,IAAuB,QAAQ,GAAA;AAC3B,QAAA,MAAM,EAAC,KAAK,EAAC,GAAG,IAAI,CAAC,MAAM,CAAC;AAE5B,QAAA,QACI,YAAY,CAAC,KAAK,CAAC;AACnB,YAAA,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;YACxB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EACtD;KACL;+GAfQ,6BAA6B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA7B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,6BAA6B,2ICf1C,qMAQA,EAAA,MAAA,EAAA,CAAA,sKAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,uCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;4FDOa,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAVzC,SAAS;AACM,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,YACP,yBAAyB,EAAA,eAAA,EAGlB,uBAAuB,CAAC,MAAM,EACzC,IAAA,EAAA;AACF,wBAAA,eAAe,EAAE,MAAM;AAC1B,qBAAA,EAAA,QAAA,EAAA,qMAAA,EAAA,MAAA,EAAA,CAAA,sKAAA,CAAA,EAAA,CAAA;;;AEPL,MAKa,0BAA0B,CAAA;+GAA1B,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,0BAA0B,iBAHpB,6BAA6B,CAAA,EAAA,OAAA,EAAA,CADlC,YAAY,EAAE,WAAW,aAEzB,6BAA6B,CAAA,EAAA,CAAA,CAAA,EAAA;gHAE9B,0BAA0B,EAAA,OAAA,EAAA,CAJzB,YAAY,EAAE,WAAW,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAI1B,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBALtC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,WAAW,CAAC;oBACpC,YAAY,EAAE,CAAC,6BAA6B,CAAC;oBAC7C,OAAO,EAAE,CAAC,6BAA6B,CAAC;AAC3C,iBAAA,CAAA;;;ACVD;;AAEG;;;;"}
1
+ {"version":3,"file":"taiga-ui-legacy-components-multi-select-option.mjs","sources":["../../../projects/legacy/components/multi-select-option/multi-select-option.component.ts","../../../projects/legacy/components/multi-select-option/multi-select-option.template.html","../../../projects/legacy/components/multi-select-option/multi-select-option.module.ts","../../../projects/legacy/components/multi-select-option/taiga-ui-legacy-components-multi-select-option.ts"],"sourcesContent":["import {ChangeDetectionStrategy, Component} from '@angular/core';\nimport {tuiIsPresent} from '@taiga-ui/cdk/utils/miscellaneous';\nimport type {TuiSizeS} from '@taiga-ui/core/types';\nimport {TuiSelectOptionComponent} from '@taiga-ui/legacy/components/select-option';\n\n@Component({\n standalone: false,\n selector: 'tui-multi-select-option',\n templateUrl: './multi-select-option.template.html',\n styleUrls: ['./multi-select-option.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TuiMultiSelectOptionComponent<\n T extends any[],\n> extends TuiSelectOptionComponent<T> {\n protected get size(): TuiSizeS {\n return this.dataList?.size === 'l' ? 'm' : 's';\n }\n\n protected override get selected(): boolean {\n const {value} = this.option;\n\n return (\n tuiIsPresent(value) &&\n tuiIsPresent(this.value) &&\n this.value.some((item) => this.matcher(item, value))\n );\n }\n}\n","<input\n tuiCheckbox\n type=\"checkbox\"\n class=\"t-checkbox\"\n [checked]=\"selected$ | async\"\n [size]=\"size\"\n/>\n<ng-container [ngTemplateOutlet]=\"context.$implicit\" />\n","import {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {TuiCheckbox} from '@taiga-ui/kit/components/checkbox';\n\nimport {TuiMultiSelectOptionComponent} from './multi-select-option.component';\n\n@NgModule({\n imports: [CommonModule, TuiCheckbox],\n declarations: [TuiMultiSelectOptionComponent],\n exports: [TuiMultiSelectOptionComponent],\n})\nexport class TuiMultiSelectOptionModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;AAKA,MAOa,6BAEX,SAAQ,wBAA2B,CAAA;AACjC,IAAA,IAAc,IAAI,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,QAAQ,EAAE,IAAI,KAAK,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;KAClD;AAED,IAAA,IAAuB,QAAQ,GAAA;AAC3B,QAAA,MAAM,EAAC,KAAK,EAAC,GAAG,IAAI,CAAC,MAAM,CAAC;AAE5B,QAAA,QACI,YAAY,CAAC,KAAK,CAAC;AACnB,YAAA,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;YACxB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EACtD;KACL;+GAfQ,6BAA6B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA7B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,6BAA6B,sFCZ1C,qMAQA,EAAA,MAAA,EAAA,CAAA,sKAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,uCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;4FDIa,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAPzC,SAAS;AACM,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,KAAK,EACP,QAAA,EAAA,yBAAyB,EAGlB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,qMAAA,EAAA,MAAA,EAAA,CAAA,sKAAA,CAAA,EAAA,CAAA;;;AEJnD,MAKa,0BAA0B,CAAA;+GAA1B,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,0BAA0B,iBAHpB,6BAA6B,CAAA,EAAA,OAAA,EAAA,CADlC,YAAY,EAAE,WAAW,aAEzB,6BAA6B,CAAA,EAAA,CAAA,CAAA,EAAA;gHAE9B,0BAA0B,EAAA,OAAA,EAAA,CAJzB,YAAY,EAAE,WAAW,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAI1B,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBALtC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,WAAW,CAAC;oBACpC,YAAY,EAAE,CAAC,6BAA6B,CAAC;oBAC7C,OAAO,EAAE,CAAC,6BAA6B,CAAC;AAC3C,iBAAA,CAAA;;;ACVD;;AAEG;;;;"}
@@ -5,33 +5,33 @@ import { tuiCreateToken, tuiProvideOptions, tuiIsString, tuiArrayToggle, tuiPure
5
5
  import { tuiIsFlat } from '@taiga-ui/kit/utils';
6
6
  import { TUI_TRUE_HANDLER, EMPTY_ARRAY, EMPTY_QUERY, TUI_DEFAULT_IDENTITY_MATCHER, EMPTY_FUNCTION } from '@taiga-ui/cdk/constants';
7
7
  import { TUI_IS_MOBILE } from '@taiga-ui/cdk/tokens';
8
+ import { tuiGetClipboardDataText } from '@taiga-ui/cdk/utils/dom';
8
9
  import { tuiIsNativeFocused } from '@taiga-ui/cdk/utils/focus';
9
10
  import * as i2$2 from '@taiga-ui/core/components/data-list';
10
11
  import { tuiAsDataListHost, TUI_DATA_LIST_ACCESSOR, TuiDataListDirective, TUI_DATA_LIST_HOST, TuiOption, tuiAsOptionContent, tuiAsDataList, TuiDataList } from '@taiga-ui/core/components/data-list';
11
- import * as i1$1 from '@taiga-ui/core/directives/dropdown';
12
- import { TuiDropdownOpen, TuiDropdown } from '@taiga-ui/core/directives/dropdown';
12
+ import * as i1 from '@taiga-ui/core/directives/dropdown';
13
+ import { TuiDropdownOpen, TuiDropdownFixed, TuiDropdown } from '@taiga-ui/core/directives/dropdown';
13
14
  import { TUI_ITEMS_HANDLERS, TUI_MULTI_SELECT_TEXTS } from '@taiga-ui/kit/tokens';
14
15
  import { AbstractTuiNativeSelect, AbstractTuiMultipleControl, TuiStringifiableItem, tuiAsControl, AbstractTuiTextfieldHost } from '@taiga-ui/legacy/classes';
15
16
  import { TUI_ARROW_MODE, TuiArrowComponent } from '@taiga-ui/legacy/components/arrow';
16
- import * as i5 from '@taiga-ui/legacy/components/input-tag';
17
- import { TuiInputTagComponent, TuiInputTagModule } from '@taiga-ui/legacy/components/input-tag';
18
- import * as i4 from '@taiga-ui/legacy/directives';
17
+ import * as i6 from '@taiga-ui/legacy/components/input-tag';
18
+ import { TUI_INPUT_TAG_OPTIONS, TuiInputTagComponent, TuiInputTagModule } from '@taiga-ui/legacy/components/input-tag';
19
+ import * as i5 from '@taiga-ui/legacy/directives';
19
20
  import { TUI_TEXTFIELD_WATCHED_CONTROLLER, TEXTFIELD_CONTROLLER_PROVIDER, TuiWrapperModule, TuiTextfieldControllerModule, TuiLegacyDropdownOpenMonitorDirective } from '@taiga-ui/legacy/directives';
20
21
  import { tuiAsFocusableItemAccessor, tuiAsTextfieldHost } from '@taiga-ui/legacy/tokens';
21
- import { FIXED_DROPDOWN_CONTROLLER_PROVIDER } from '@taiga-ui/legacy/utils';
22
- import * as i1 from '@angular/common';
22
+ import * as i1$1 from '@angular/common';
23
23
  import { CommonModule } from '@angular/common';
24
24
  import * as i2 from '@angular/forms';
25
25
  import { NgControl, NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';
26
- import * as i3 from '@taiga-ui/polymorpheus';
26
+ import * as i4 from '@taiga-ui/polymorpheus';
27
27
  import { PolymorpheusComponent, PolymorpheusOutlet, PolymorpheusTemplate } from '@taiga-ui/polymorpheus';
28
- import * as i6 from '@taiga-ui/cdk/pipes/mapper';
28
+ import * as i6$1 from '@taiga-ui/cdk/pipes/mapper';
29
29
  import { TuiMapperPipe } from '@taiga-ui/cdk/pipes/mapper';
30
30
  import * as i2$1 from '@taiga-ui/cdk/directives/let';
31
31
  import { TuiLet } from '@taiga-ui/cdk/directives/let';
32
- import * as i3$1 from '@taiga-ui/core/components/link';
32
+ import * as i3 from '@taiga-ui/core/components/link';
33
33
  import { TuiLink } from '@taiga-ui/core/components/link';
34
- import * as i3$2 from '@taiga-ui/kit/components/data-list-wrapper';
34
+ import * as i3$1 from '@taiga-ui/kit/components/data-list-wrapper';
35
35
  import { TuiDataListWrapper } from '@taiga-ui/kit/components/data-list-wrapper';
36
36
  import * as i7 from '@taiga-ui/kit/pipes/stringify-content';
37
37
  import { TuiStringifyContentPipe } from '@taiga-ui/kit/pipes/stringify-content';
@@ -73,6 +73,7 @@ class TuiMultiSelectComponent extends AbstractTuiMultipleControl {
73
73
  this.arrowMode = inject(TUI_ARROW_MODE);
74
74
  this.itemsHandlers = inject(TUI_ITEMS_HANDLERS);
75
75
  this.options = inject(TUI_MULTI_SELECT_OPTIONS);
76
+ this.inputTagOptions = inject(TUI_INPUT_TAG_OPTIONS);
76
77
  this.open = false;
77
78
  this.controller = inject(TUI_TEXTFIELD_WATCHED_CONTROLLER);
78
79
  this.isMobile = inject(TUI_IS_MOBILE);
@@ -164,6 +165,26 @@ class TuiMultiSelectComponent extends AbstractTuiMultipleControl {
164
165
  this.value = options[0] ? tuiArrayToggle(value, options[0]) : value;
165
166
  this.updateSearch(null);
166
167
  }
168
+ onKeyDown(event) {
169
+ if (event.key === this.inputTagOptions.separator) {
170
+ this.onEnter(event);
171
+ }
172
+ }
173
+ onPaste(event) {
174
+ const pasted = tuiGetClipboardDataText(event);
175
+ const tags = pasted
176
+ .split(this.inputTagOptions.separator)
177
+ .map((tag) => tag.trim());
178
+ const options = this.accessor?.getOptions() ?? [];
179
+ const separator = tuiIsString(this.inputTagOptions.separator)
180
+ ? this.inputTagOptions.separator
181
+ : ',';
182
+ const matches = options?.filter((option) => tags.includes(this.stringify(option))) ?? [];
183
+ const matchingStrings = matches.map((v) => String(v));
184
+ const invalid = tags.filter((value) => !matchingStrings.includes(value));
185
+ this.value = this.filterValue([...this.value, ...matches]);
186
+ this.updateSearch(invalid.length ? invalid.join(separator) : null);
187
+ }
167
188
  onClick({ nativeFocusableElement }) {
168
189
  if (this.interactive &&
169
190
  nativeFocusableElement &&
@@ -177,6 +198,13 @@ class TuiMultiSelectComponent extends AbstractTuiMultipleControl {
177
198
  onActiveZone(active) {
178
199
  this.updateFocused(active);
179
200
  }
201
+ filterValue(value) {
202
+ const seen = new Set();
203
+ return value
204
+ .reverse()
205
+ .filter((item) => item && !seen.has(item) && seen.add(item))
206
+ .reverse();
207
+ }
180
208
  updateSearch(search) {
181
209
  if (this.search === search) {
182
210
  return;
@@ -185,12 +213,12 @@ class TuiMultiSelectComponent extends AbstractTuiMultipleControl {
185
213
  this.searchChange.emit(search);
186
214
  }
187
215
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiMultiSelectComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
188
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiMultiSelectComponent, selector: "tui-multi-select", inputs: { stringify: "stringify", identityMatcher: "identityMatcher", search: "search", placeholder: "placeholder", editable: "editable", disabledItemHandler: "disabledItemHandler", valueContent: "valueContent", tagValidator: "tagValidator", rows: "rows", autoColor: "autoColor" }, outputs: { searchChange: "searchChange" }, host: { attributes: { "ngSkipHydration": "true" }, properties: { "attr.data-size": "size", "class._editable": "editable", "class._expandable": "rows > 1" } }, providers: [
216
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiMultiSelectComponent, selector: "tui-multi-select", inputs: { stringify: "stringify", identityMatcher: "identityMatcher", search: "search", placeholder: "placeholder", editable: "editable", disabledItemHandler: "disabledItemHandler", valueContent: "valueContent", tagValidator: "tagValidator", rows: "rows", autoColor: "autoColor" }, outputs: { searchChange: "searchChange" }, host: { properties: { "attr.data-size": "size", "class._editable": "editable", "class._expandable": "rows > 1" } }, providers: [
189
217
  tuiAsFocusableItemAccessor(TuiMultiSelectComponent),
190
218
  tuiAsControl(TuiMultiSelectComponent),
191
219
  tuiAsDataListHost(TuiMultiSelectComponent),
192
220
  TEXTFIELD_CONTROLLER_PROVIDER,
193
- ], queries: [{ propertyName: "accessor", first: true, predicate: TUI_DATA_LIST_ACCESSOR, descendants: true }, { propertyName: "nativeSelect", first: true, predicate: AbstractTuiNativeMultiSelect, descendants: true, static: true }, { propertyName: "datalist", first: true, predicate: TuiDataListDirective, descendants: true, read: TemplateRef }], viewQueries: [{ propertyName: "dropdown", first: true, predicate: TuiDropdownOpen, descendants: true }, { propertyName: "input", first: true, predicate: TuiInputTagComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div\n tuiDropdownOpenMonitor\n class=\"t-hosted\"\n [tuiDropdown]=\"datalist || ''\"\n [tuiDropdownEnabled]=\"interactive && !nativeDropdownMode\"\n [(tuiDropdownOpen)]=\"open\"\n (tuiActiveZoneChange)=\"onActiveZone($event)\"\n>\n <tui-input-tag\n #inputTag\n automation-id=\"tui-multi-select__input\"\n class=\"t-input\"\n [autoColor]=\"autoColor\"\n [disabled]=\"disabled\"\n [disabledItemHandler]=\"disabledItemHandler | tuiMapper: disabledItemHandlerWrapper\"\n [editable]=\"false\"\n [inputHidden]=\"!editable\"\n [nativeId]=\"nativeId\"\n [ngModel]=\"computedValue | tuiMapper: valueMapper : stringify\"\n [ngModelOptions]=\"{standalone: true}\"\n [placeholder]=\"placeholder\"\n [pseudoFocus]=\"computedFocused\"\n [pseudoHover]=\"pseudoHover\"\n [pseudoInvalid]=\"computedInvalid\"\n [pseudoOpen]=\"open\"\n [readOnly]=\"readOnly\"\n [removable]=\"!nativeDropdownMode\"\n [rows]=\"rows\"\n [search]=\"searchOrSpace\"\n [tagValidator]=\"tagValidator | tuiMapper: disabledItemHandlerWrapper\"\n [tuiTextfieldIcon]=\"arrow ? icon : ''\"\n (click.prevent)=\"onClick(inputTag)\"\n (keydown.enter)=\"onEnter($event)\"\n (keydown.space)=\"onSpace($event)\"\n (ngModelChange)=\"onInput($event)\"\n (searchChange)=\"onSearch($event)\"\n >\n <ng-content />\n <ng-template #select>\n <ng-content\n *ngIf=\"isMobile\"\n select=\"select\"\n />\n </ng-template>\n\n <ng-container\n *ngTemplateOutlet=\"select\"\n ngProjectAs=\"select\"\n />\n\n <div\n *ngIf=\"computedGroup\"\n ngProjectAs=\"tuiContent\"\n class=\"t-content\"\n [class.t-content_fullsize]=\"inputTag.labelOutside\"\n >\n <span\n *polymorpheusOutlet=\"valueContent as text; context: {$implicit: value}\"\n class=\"t-primitive\"\n >\n {{ text }}\n </span>\n </div>\n </tui-input-tag>\n\n <ng-template #icon>\n <div\n appearance=\"icon\"\n automation-id=\"tui-multi-select__arrow\"\n tuiWrapper\n class=\"t-arrow\"\n [class.t-arrow_native-dropdown]=\"nativeDropdownMode\"\n (mousedown.prevent.silent)=\"(0)\"\n >\n <ng-container *polymorpheusOutlet=\"arrow as text\">\n {{ text }}\n </ng-container>\n </div>\n </ng-template>\n</div>\n", styles: [":host{position:relative;display:block;border-radius:var(--tui-radius-m)}:host._disabled{pointer-events:none}.t-hosted{display:block;border-radius:inherit}.t-input{border-radius:inherit}:host:not(._editable):not(._readonly) .t-input{cursor:pointer}.t-content{display:flex;align-items:center;pointer-events:none;box-sizing:border-box}.t-primitive{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.t-arrow{pointer-events:auto;cursor:pointer}.t-arrow_native-dropdown{pointer-events:none}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { 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: i3.PolymorpheusOutlet, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }, { kind: "directive", type: i4.TuiWrapperDirective, selector: "[tuiWrapper]", inputs: ["disabled", "readOnly", "hover", "active", "focus", "invalid", "appearance"] }, { kind: "component", type: i5.TuiInputTagComponent, selector: "tui-input-tag", inputs: ["separator", "search", "editable", "tagValidator", "rows", "inputHidden", "uniqueTags", "autoColor", "maxLength", "placeholder", "removable", "pseudoOpen", "disabledItemHandler", "pseudoFocused"], outputs: ["searchChange"] }, { kind: "directive", type: i1$1.TuiDropdownDirective, selector: "[tuiDropdown]:not(ng-container):not(ng-template)", inputs: ["tuiDropdown"], exportAs: ["tuiDropdown"] }, { kind: "directive", type: i1$1.TuiDropdownOpen, selector: "[tuiDropdown][tuiDropdownOpen],[tuiDropdown][tuiDropdownOpenChange]", inputs: ["tuiDropdownEnabled", "tuiDropdownOpen"], outputs: ["tuiDropdownOpenChange"] }, { kind: "directive", type: i4.TuiTextfieldIconDirective, selector: "[tuiTextfieldIcon]", inputs: ["tuiTextfieldIcon"] }, { kind: "directive", type: i4.TuiLegacyDropdownOpenMonitorDirective, selector: "[tuiDropdownOpenMonitor]" }, { kind: "pipe", type: i6.TuiMapperPipe, name: "tuiMapper" }], viewProviders: [FIXED_DROPDOWN_CONTROLLER_PROVIDER], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
221
+ ], queries: [{ propertyName: "accessor", first: true, predicate: TUI_DATA_LIST_ACCESSOR, descendants: true }, { propertyName: "nativeSelect", first: true, predicate: AbstractTuiNativeMultiSelect, descendants: true, static: true }, { propertyName: "datalist", first: true, predicate: TuiDataListDirective, descendants: true, read: TemplateRef }], viewQueries: [{ propertyName: "dropdown", first: true, predicate: TuiDropdownOpen, descendants: true }, { propertyName: "input", first: true, predicate: TuiInputTagComponent, descendants: true }], usesInheritance: true, hostDirectives: [{ directive: i1.TuiDropdownFixed }], ngImport: i0, template: "<div\n tuiDropdownOpenMonitor\n class=\"t-hosted\"\n [tuiDropdown]=\"datalist || ''\"\n [tuiDropdownEnabled]=\"interactive && !nativeDropdownMode\"\n [(tuiDropdownOpen)]=\"open\"\n (tuiActiveZoneChange)=\"onActiveZone($event)\"\n>\n <tui-input-tag\n #inputTag\n automation-id=\"tui-multi-select__input\"\n class=\"t-input\"\n [autoColor]=\"autoColor\"\n [disabled]=\"disabled\"\n [disabledItemHandler]=\"disabledItemHandler | tuiMapper: disabledItemHandlerWrapper\"\n [editable]=\"false\"\n [inputHidden]=\"!editable\"\n [nativeId]=\"nativeId\"\n [ngModel]=\"computedValue | tuiMapper: valueMapper : stringify\"\n [ngModelOptions]=\"{standalone: true}\"\n [placeholder]=\"placeholder\"\n [pseudoFocus]=\"computedFocused\"\n [pseudoHover]=\"pseudoHover\"\n [pseudoInvalid]=\"computedInvalid\"\n [pseudoOpen]=\"open\"\n [readOnly]=\"readOnly\"\n [removable]=\"!nativeDropdownMode\"\n [rows]=\"rows\"\n [search]=\"searchOrSpace\"\n [tagValidator]=\"tagValidator | tuiMapper: disabledItemHandlerWrapper\"\n [tuiTextfieldIcon]=\"arrow ? icon : ''\"\n (click.prevent)=\"onClick(inputTag)\"\n (keydown.enter)=\"onEnter($event)\"\n (keydown.space)=\"onSpace($event)\"\n (keydown)=\"onKeyDown($event)\"\n (ngModelChange)=\"onInput($event)\"\n (paste.capture.stop.prevent)=\"onPaste($event)\"\n (searchChange)=\"onSearch($event)\"\n >\n <ng-content />\n <ng-template #select>\n <ng-content\n *ngIf=\"isMobile\"\n select=\"select\"\n />\n </ng-template>\n\n <ng-container\n *ngTemplateOutlet=\"select\"\n ngProjectAs=\"select\"\n />\n\n <div\n *ngIf=\"computedGroup\"\n ngProjectAs=\"tuiContent\"\n class=\"t-content\"\n [class.t-content_fullsize]=\"inputTag.labelOutside\"\n >\n <span\n *polymorpheusOutlet=\"valueContent as text; context: {$implicit: value}\"\n class=\"t-primitive\"\n >\n {{ text }}\n </span>\n </div>\n </tui-input-tag>\n\n <ng-template #icon>\n <div\n appearance=\"icon\"\n automation-id=\"tui-multi-select__arrow\"\n tuiWrapper\n class=\"t-arrow\"\n [class.t-arrow_native-dropdown]=\"nativeDropdownMode\"\n (mousedown.prevent.silent)=\"(0)\"\n >\n <ng-container *polymorpheusOutlet=\"arrow as text\">\n {{ text }}\n </ng-container>\n </div>\n </ng-template>\n</div>\n", styles: [":host{position:relative;display:block;border-radius:var(--tui-radius-m)}:host._disabled,:host :host-context(*:disabled){pointer-events:none}.t-hosted{display:block;border-radius:inherit}.t-input{border-radius:inherit}:host:not(._editable):not(._readonly) .t-input{cursor:pointer}.t-content{display:flex;align-items:center;pointer-events:none;box-sizing:border-box}.t-primitive{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.t-arrow{pointer-events:auto;cursor:pointer}.t-arrow_native-dropdown{pointer-events:none}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { 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: i4.PolymorpheusOutlet, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }, { kind: "directive", type: i5.TuiWrapperDirective, selector: "[tuiWrapper]", inputs: ["disabled", "readOnly", "hover", "active", "focus", "invalid", "appearance"] }, { kind: "component", type: i6.TuiInputTagComponent, selector: "tui-input-tag", inputs: ["separator", "search", "editable", "tagValidator", "rows", "inputHidden", "uniqueTags", "autoColor", "maxLength", "placeholder", "removable", "pseudoOpen", "disabledItemHandler", "pseudoFocused"], outputs: ["searchChange"] }, { kind: "directive", type: i1.TuiDropdownDirective, selector: "[tuiDropdown]:not(ng-container):not(ng-template)", inputs: ["tuiDropdown"], exportAs: ["tuiDropdown"] }, { kind: "directive", type: i1.TuiDropdownOpen, selector: "[tuiDropdown][tuiDropdownOpen],[tuiDropdown][tuiDropdownOpenChange]", inputs: ["tuiDropdownEnabled", "tuiDropdownOpen"], outputs: ["tuiDropdownOpenChange"] }, { kind: "directive", type: i5.TuiTextfieldIconDirective, selector: "[tuiTextfieldIcon]", inputs: ["tuiTextfieldIcon"] }, { kind: "directive", type: i5.TuiLegacyDropdownOpenMonitorDirective, selector: "[tuiDropdownOpenMonitor]" }, { kind: "pipe", type: i6$1.TuiMapperPipe, name: "tuiMapper" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
194
222
  }
195
223
  __decorate([
196
224
  tuiPure
@@ -202,12 +230,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
202
230
  tuiAsControl(TuiMultiSelectComponent),
203
231
  tuiAsDataListHost(TuiMultiSelectComponent),
204
232
  TEXTFIELD_CONTROLLER_PROVIDER,
205
- ], viewProviders: [FIXED_DROPDOWN_CONTROLLER_PROVIDER], host: {
206
- ngSkipHydration: 'true',
233
+ ], hostDirectives: [TuiDropdownFixed], host: {
207
234
  '[attr.data-size]': 'size',
208
235
  '[class._editable]': 'editable',
209
236
  '[class._expandable]': 'rows > 1',
210
- }, template: "<div\n tuiDropdownOpenMonitor\n class=\"t-hosted\"\n [tuiDropdown]=\"datalist || ''\"\n [tuiDropdownEnabled]=\"interactive && !nativeDropdownMode\"\n [(tuiDropdownOpen)]=\"open\"\n (tuiActiveZoneChange)=\"onActiveZone($event)\"\n>\n <tui-input-tag\n #inputTag\n automation-id=\"tui-multi-select__input\"\n class=\"t-input\"\n [autoColor]=\"autoColor\"\n [disabled]=\"disabled\"\n [disabledItemHandler]=\"disabledItemHandler | tuiMapper: disabledItemHandlerWrapper\"\n [editable]=\"false\"\n [inputHidden]=\"!editable\"\n [nativeId]=\"nativeId\"\n [ngModel]=\"computedValue | tuiMapper: valueMapper : stringify\"\n [ngModelOptions]=\"{standalone: true}\"\n [placeholder]=\"placeholder\"\n [pseudoFocus]=\"computedFocused\"\n [pseudoHover]=\"pseudoHover\"\n [pseudoInvalid]=\"computedInvalid\"\n [pseudoOpen]=\"open\"\n [readOnly]=\"readOnly\"\n [removable]=\"!nativeDropdownMode\"\n [rows]=\"rows\"\n [search]=\"searchOrSpace\"\n [tagValidator]=\"tagValidator | tuiMapper: disabledItemHandlerWrapper\"\n [tuiTextfieldIcon]=\"arrow ? icon : ''\"\n (click.prevent)=\"onClick(inputTag)\"\n (keydown.enter)=\"onEnter($event)\"\n (keydown.space)=\"onSpace($event)\"\n (ngModelChange)=\"onInput($event)\"\n (searchChange)=\"onSearch($event)\"\n >\n <ng-content />\n <ng-template #select>\n <ng-content\n *ngIf=\"isMobile\"\n select=\"select\"\n />\n </ng-template>\n\n <ng-container\n *ngTemplateOutlet=\"select\"\n ngProjectAs=\"select\"\n />\n\n <div\n *ngIf=\"computedGroup\"\n ngProjectAs=\"tuiContent\"\n class=\"t-content\"\n [class.t-content_fullsize]=\"inputTag.labelOutside\"\n >\n <span\n *polymorpheusOutlet=\"valueContent as text; context: {$implicit: value}\"\n class=\"t-primitive\"\n >\n {{ text }}\n </span>\n </div>\n </tui-input-tag>\n\n <ng-template #icon>\n <div\n appearance=\"icon\"\n automation-id=\"tui-multi-select__arrow\"\n tuiWrapper\n class=\"t-arrow\"\n [class.t-arrow_native-dropdown]=\"nativeDropdownMode\"\n (mousedown.prevent.silent)=\"(0)\"\n >\n <ng-container *polymorpheusOutlet=\"arrow as text\">\n {{ text }}\n </ng-container>\n </div>\n </ng-template>\n</div>\n", styles: [":host{position:relative;display:block;border-radius:var(--tui-radius-m)}:host._disabled{pointer-events:none}.t-hosted{display:block;border-radius:inherit}.t-input{border-radius:inherit}:host:not(._editable):not(._readonly) .t-input{cursor:pointer}.t-content{display:flex;align-items:center;pointer-events:none;box-sizing:border-box}.t-primitive{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.t-arrow{pointer-events:auto;cursor:pointer}.t-arrow_native-dropdown{pointer-events:none}\n"] }]
237
+ }, template: "<div\n tuiDropdownOpenMonitor\n class=\"t-hosted\"\n [tuiDropdown]=\"datalist || ''\"\n [tuiDropdownEnabled]=\"interactive && !nativeDropdownMode\"\n [(tuiDropdownOpen)]=\"open\"\n (tuiActiveZoneChange)=\"onActiveZone($event)\"\n>\n <tui-input-tag\n #inputTag\n automation-id=\"tui-multi-select__input\"\n class=\"t-input\"\n [autoColor]=\"autoColor\"\n [disabled]=\"disabled\"\n [disabledItemHandler]=\"disabledItemHandler | tuiMapper: disabledItemHandlerWrapper\"\n [editable]=\"false\"\n [inputHidden]=\"!editable\"\n [nativeId]=\"nativeId\"\n [ngModel]=\"computedValue | tuiMapper: valueMapper : stringify\"\n [ngModelOptions]=\"{standalone: true}\"\n [placeholder]=\"placeholder\"\n [pseudoFocus]=\"computedFocused\"\n [pseudoHover]=\"pseudoHover\"\n [pseudoInvalid]=\"computedInvalid\"\n [pseudoOpen]=\"open\"\n [readOnly]=\"readOnly\"\n [removable]=\"!nativeDropdownMode\"\n [rows]=\"rows\"\n [search]=\"searchOrSpace\"\n [tagValidator]=\"tagValidator | tuiMapper: disabledItemHandlerWrapper\"\n [tuiTextfieldIcon]=\"arrow ? icon : ''\"\n (click.prevent)=\"onClick(inputTag)\"\n (keydown.enter)=\"onEnter($event)\"\n (keydown.space)=\"onSpace($event)\"\n (keydown)=\"onKeyDown($event)\"\n (ngModelChange)=\"onInput($event)\"\n (paste.capture.stop.prevent)=\"onPaste($event)\"\n (searchChange)=\"onSearch($event)\"\n >\n <ng-content />\n <ng-template #select>\n <ng-content\n *ngIf=\"isMobile\"\n select=\"select\"\n />\n </ng-template>\n\n <ng-container\n *ngTemplateOutlet=\"select\"\n ngProjectAs=\"select\"\n />\n\n <div\n *ngIf=\"computedGroup\"\n ngProjectAs=\"tuiContent\"\n class=\"t-content\"\n [class.t-content_fullsize]=\"inputTag.labelOutside\"\n >\n <span\n *polymorpheusOutlet=\"valueContent as text; context: {$implicit: value}\"\n class=\"t-primitive\"\n >\n {{ text }}\n </span>\n </div>\n </tui-input-tag>\n\n <ng-template #icon>\n <div\n appearance=\"icon\"\n automation-id=\"tui-multi-select__arrow\"\n tuiWrapper\n class=\"t-arrow\"\n [class.t-arrow_native-dropdown]=\"nativeDropdownMode\"\n (mousedown.prevent.silent)=\"(0)\"\n >\n <ng-container *polymorpheusOutlet=\"arrow as text\">\n {{ text }}\n </ng-container>\n </div>\n </ng-template>\n</div>\n", styles: [":host{position:relative;display:block;border-radius:var(--tui-radius-m)}:host._disabled,:host :host-context(*:disabled){pointer-events:none}.t-hosted{display:block;border-radius:inherit}.t-input{border-radius:inherit}:host:not(._editable):not(._readonly) .t-input{cursor:pointer}.t-content{display:flex;align-items:center;pointer-events:none;box-sizing:border-box}.t-primitive{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.t-arrow{pointer-events:auto;cursor:pointer}.t-arrow_native-dropdown{pointer-events:none}\n"] }]
211
238
  }], propDecorators: { accessor: [{
212
239
  type: ContentChild,
213
240
  args: [TUI_DATA_LIST_ACCESSOR]
@@ -363,7 +390,7 @@ class TuiMultiSelectGroupComponent {
363
390
  return items.map(({ value }) => value).filter(tuiIsPresent);
364
391
  }
365
392
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiMultiSelectGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
366
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiMultiSelectGroupComponent, selector: "tui-opt-group[tuiMultiSelectGroup]", inputs: { label: "label" }, host: { attributes: { "ngSkipHydration": "true" }, properties: { "class._label": "label" } }, queries: [{ propertyName: "options", predicate: TuiOption }], ngImport: i0, template: "<span\n *tuiLet=\"value$ | async as value\"\n class=\"t-wrapper\"\n>\n <span class=\"t-label\">{{ label }}</span>\n <button\n *ngIf=\"label && !(empty$ | async)\"\n tuiLink\n type=\"button\"\n class=\"t-button\"\n [disabled]=\"!!(disabled$ | async)\"\n (click)=\"onClick(value)\"\n >\n {{ (multiSelectTexts$ | async)?.[value ? 'none' : 'all'] }}\n </button>\n</span>\n<ng-content />\n", styles: [":host._label:before{display:none}:host:not(:first-of-type) .t-label:not(:empty){padding-top:1.25rem}:host:not(:first-of-type) .t-button{margin-top:1.25rem}.t-wrapper{display:flex;align-items:flex-start}.t-label:not(:empty){flex:1;padding:.75rem 1rem .25rem .625rem}.t-button{margin:.75rem 1rem 0 auto}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.TuiLet, selector: "[tuiLet]", inputs: ["tuiLet"] }, { kind: "directive", type: i3$1.TuiLink, selector: "a[tuiLink], button[tuiLink]", inputs: ["pseudo"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
393
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiMultiSelectGroupComponent, selector: "tui-opt-group[tuiMultiSelectGroup]", inputs: { label: "label" }, host: { properties: { "class._label": "label" } }, queries: [{ propertyName: "options", predicate: TuiOption }], ngImport: i0, template: "<span\n *tuiLet=\"value$ | async as value\"\n class=\"t-wrapper\"\n>\n <span class=\"t-label\">{{ label }}</span>\n <button\n *ngIf=\"label && !(empty$ | async)\"\n tuiLink\n type=\"button\"\n class=\"t-button\"\n [disabled]=\"!!(disabled$ | async)\"\n (click)=\"onClick(value)\"\n >\n {{ (multiSelectTexts$ | async)?.[value ? 'none' : 'all'] }}\n </button>\n</span>\n<ng-content />\n", styles: [":host._label:before{display:none}:host:not(:first-of-type) .t-label:not(:empty){padding-top:1.25rem}:host:not(:first-of-type) .t-button{margin-top:1.25rem}.t-wrapper{display:flex;align-items:flex-start}.t-label:not(:empty){flex:1;padding:.75rem 1rem .25rem .625rem}.t-button{margin:.75rem 1rem 0 auto}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.TuiLet, selector: "[tuiLet]", inputs: ["tuiLet"] }, { kind: "directive", type: i3.TuiLink, selector: "a[tuiLink], button[tuiLink]", inputs: ["pseudo"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
367
394
  }
368
395
  __decorate([
369
396
  tuiPure
@@ -386,7 +413,6 @@ __decorate([
386
413
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiMultiSelectGroupComponent, decorators: [{
387
414
  type: Component,
388
415
  args: [{ standalone: false, selector: 'tui-opt-group[tuiMultiSelectGroup]', changeDetection: ChangeDetectionStrategy.OnPush, host: {
389
- ngSkipHydration: 'true',
390
416
  '[class._label]': 'label',
391
417
  }, template: "<span\n *tuiLet=\"value$ | async as value\"\n class=\"t-wrapper\"\n>\n <span class=\"t-label\">{{ label }}</span>\n <button\n *ngIf=\"label && !(empty$ | async)\"\n tuiLink\n type=\"button\"\n class=\"t-button\"\n [disabled]=\"!!(disabled$ | async)\"\n (click)=\"onClick(value)\"\n >\n {{ (multiSelectTexts$ | async)?.[value ? 'none' : 'all'] }}\n </button>\n</span>\n<ng-content />\n", styles: [":host._label:before{display:none}:host:not(:first-of-type) .t-label:not(:empty){padding-top:1.25rem}:host:not(:first-of-type) .t-button{margin-top:1.25rem}.t-wrapper{display:flex;align-items:flex-start}.t-label:not(:empty){flex:1;padding:.75rem 1rem .25rem .625rem}.t-button{margin:.75rem 1rem 0 auto}\n"] }]
392
418
  }], propDecorators: { options: [{
@@ -463,7 +489,7 @@ class TuiNativeMultiSelectComponent extends AbstractTuiNativeMultiSelect {
463
489
  this.host.onSelectionChange(value);
464
490
  }
465
491
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiNativeMultiSelectComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
466
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiNativeMultiSelectComponent, selector: "select[multiple][tuiSelect]:not([labels])", inputs: { items: "items" }, host: { attributes: { "ngSkipHydration": "true" }, listeners: { "change": "onValueChange($event.target.selectedOptions)", "click.stop.silent": "0", "mousedown.stop.silent": "0" }, properties: { "attr.aria-invalid": "host.invalid", "disabled": "host.disabled || control.readOnly", "tabIndex": "host.focusable ? 0 : -1" } }, providers: [
492
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiNativeMultiSelectComponent, selector: "select[multiple][tuiSelect]:not([labels])", inputs: { items: "items" }, host: { listeners: { "change": "onValueChange($event.target.selectedOptions)", "click.stop.silent": "0", "mousedown.stop.silent": "0" }, properties: { "attr.aria-invalid": "host.invalid", "disabled": "host.disabled || control.readOnly", "tabIndex": "host.focusable ? 0 : -1" } }, providers: [
467
493
  tuiAsDataList(TuiNativeMultiSelectComponent),
468
494
  tuiProvide(AbstractTuiNativeMultiSelect, TuiNativeMultiSelectComponent),
469
495
  {
@@ -471,7 +497,7 @@ class TuiNativeMultiSelectComponent extends AbstractTuiNativeMultiSelect {
471
497
  deps: [TuiNativeMultiSelectComponent],
472
498
  useFactory: ({ datalist }) => datalist,
473
499
  },
474
- ], usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"control.control?.valueChanges | async\" />\n\n<tui-data-list-wrapper\n *tuiDataList\n tuiMultiSelectGroup\n [disabledItemHandler]=\"disabledItemHandler || host.disableItemHandler\"\n [itemContent]=\"stringify | tuiStringifyContent\"\n [items]=\"items\"\n/>\n<option\n *ngFor=\"let option of items\"\n [disabled]=\"disabledItemHandler ? disabledItemHandler(option) : host.disableItemHandler(option)\"\n [selected]=\"option | tuiMapper: selectedMapper : control.value\"\n [value]=\"stringify(option)\"\n>\n {{ stringify(option) }}\n</option>\n", styles: [":host{position:absolute;top:0;left:0;inline-size:100%;block-size:100%;opacity:0}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2$2.TuiDataListDirective, selector: "ng-template[tuiDataList]" }, { kind: "component", type: i3$2.TuiDataListWrapperComponent, selector: "tui-data-list-wrapper:not([labels])", inputs: ["items", "disabledItemHandler", "emptyContent", "size", "itemContent"], outputs: ["itemClick"] }, { kind: "directive", type: TuiMultiSelectGroupDirective, selector: "[tuiMultiSelectGroup]" }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i6.TuiMapperPipe, name: "tuiMapper" }, { kind: "pipe", type: i7.TuiStringifyContentPipe, name: "tuiStringifyContent" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
500
+ ], usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"control.control?.valueChanges | async\" />\n\n<tui-data-list-wrapper\n *tuiDataList\n tuiMultiSelectGroup\n [disabledItemHandler]=\"disabledItemHandler || host.disableItemHandler\"\n [itemContent]=\"stringify | tuiStringifyContent\"\n [items]=\"items\"\n/>\n<option\n *ngFor=\"let option of items\"\n [disabled]=\"disabledItemHandler ? disabledItemHandler(option) : host.disableItemHandler(option)\"\n [selected]=\"option | tuiMapper: selectedMapper : control.value\"\n [value]=\"stringify(option)\"\n>\n {{ stringify(option) }}\n</option>\n", styles: [":host{position:absolute;top:0;left:0;inline-size:100%;block-size:100%;opacity:0}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2$2.TuiDataListDirective, selector: "ng-template[tuiDataList]" }, { kind: "component", type: i3$1.TuiDataListWrapperComponent, selector: "tui-data-list-wrapper:not([labels])", inputs: ["items", "disabledItemHandler", "emptyContent", "size", "itemContent"], outputs: ["itemClick"] }, { kind: "directive", type: TuiMultiSelectGroupDirective, selector: "[tuiMultiSelectGroup]" }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i6$1.TuiMapperPipe, name: "tuiMapper" }, { kind: "pipe", type: i7.TuiStringifyContentPipe, name: "tuiStringifyContent" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
475
501
  }
476
502
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiNativeMultiSelectComponent, decorators: [{
477
503
  type: Component,
@@ -484,7 +510,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
484
510
  useFactory: ({ datalist }) => datalist,
485
511
  },
486
512
  ], host: {
487
- ngSkipHydration: 'true',
488
513
  '[attr.aria-invalid]': 'host.invalid',
489
514
  '[disabled]': 'host.disabled || control.readOnly',
490
515
  '[tabIndex]': 'host.focusable ? 0 : -1',
@@ -509,7 +534,7 @@ class TuiNativeMultiSelectGroupComponent extends AbstractTuiNativeMultiSelect {
509
534
  this.host.onSelectionChange(value);
510
535
  }
511
536
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiNativeMultiSelectGroupComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
512
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiNativeMultiSelectGroupComponent, selector: "select[multiple][tuiSelect][labels]", inputs: { items: "items", labels: "labels" }, host: { attributes: { "ngSkipHydration": "true" }, listeners: { "change": "onValueChange($event.target.selectedOptions)", "click.stop.silent": "0", "mousedown.stop.silent": "0" }, properties: { "attr.aria-invalid": "host.invalid", "disabled": "host.disabled || control.readOnly", "tabIndex": "host.focusable ? 0 : -1" } }, providers: [
537
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiNativeMultiSelectGroupComponent, selector: "select[multiple][tuiSelect][labels]", inputs: { items: "items", labels: "labels" }, host: { listeners: { "change": "onValueChange($event.target.selectedOptions)", "click.stop.silent": "0", "mousedown.stop.silent": "0" }, properties: { "attr.aria-invalid": "host.invalid", "disabled": "host.disabled || control.readOnly", "tabIndex": "host.focusable ? 0 : -1" } }, providers: [
513
538
  tuiAsDataList(TuiNativeMultiSelectGroupComponent),
514
539
  tuiProvide(AbstractTuiNativeMultiSelect, TuiNativeMultiSelectGroupComponent),
515
540
  {
@@ -517,7 +542,7 @@ class TuiNativeMultiSelectGroupComponent extends AbstractTuiNativeMultiSelect {
517
542
  deps: [TuiNativeMultiSelectGroupComponent],
518
543
  useFactory: ({ datalist }) => datalist,
519
544
  },
520
- ], usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"control.control?.valueChanges | async\" />\n\n<tui-data-list-wrapper\n *tuiDataList\n tuiMultiSelectGroup\n [disabledItemHandler]=\"disabledItemHandler || host.disableItemHandler\"\n [itemContent]=\"stringify | tuiStringifyContent\"\n [items]=\"items\"\n [labels]=\"labels\"\n/>\n<optgroup\n *ngFor=\"let group of items; let index = index\"\n [label]=\"labels[index]\"\n>\n <option\n *ngFor=\"let option of group\"\n [disabled]=\"disabledItemHandler ? disabledItemHandler(option) : host.disableItemHandler(option)\"\n [selected]=\"option | tuiMapper: selectedMapper : control.value\"\n [value]=\"stringify(option)\"\n >\n {{ stringify(option) }}\n </option>\n</optgroup>\n", styles: [":host{position:absolute;top:0;left:0;inline-size:100%;block-size:100%;opacity:0}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2$2.TuiDataListDirective, selector: "ng-template[tuiDataList]" }, { kind: "component", type: i3$2.TuiDataListGroupWrapperComponent, selector: "tui-data-list-wrapper[labels]", inputs: ["labels"] }, { kind: "directive", type: TuiMultiSelectGroupDirective, selector: "[tuiMultiSelectGroup]" }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i6.TuiMapperPipe, name: "tuiMapper" }, { kind: "pipe", type: i7.TuiStringifyContentPipe, name: "tuiStringifyContent" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
545
+ ], usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"control.control?.valueChanges | async\" />\n\n<tui-data-list-wrapper\n *tuiDataList\n tuiMultiSelectGroup\n [disabledItemHandler]=\"disabledItemHandler || host.disableItemHandler\"\n [itemContent]=\"stringify | tuiStringifyContent\"\n [items]=\"items\"\n [labels]=\"labels\"\n/>\n<optgroup\n *ngFor=\"let group of items; let index = index\"\n [label]=\"labels[index]\"\n>\n <option\n *ngFor=\"let option of group\"\n [disabled]=\"disabledItemHandler ? disabledItemHandler(option) : host.disableItemHandler(option)\"\n [selected]=\"option | tuiMapper: selectedMapper : control.value\"\n [value]=\"stringify(option)\"\n >\n {{ stringify(option) }}\n </option>\n</optgroup>\n", styles: [":host{position:absolute;top:0;left:0;inline-size:100%;block-size:100%;opacity:0}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2$2.TuiDataListDirective, selector: "ng-template[tuiDataList]" }, { kind: "component", type: i3$1.TuiDataListGroupWrapperComponent, selector: "tui-data-list-wrapper[labels]", inputs: ["labels"] }, { kind: "directive", type: TuiMultiSelectGroupDirective, selector: "[tuiMultiSelectGroup]" }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i6$1.TuiMapperPipe, name: "tuiMapper" }, { kind: "pipe", type: i7.TuiStringifyContentPipe, name: "tuiStringifyContent" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
521
546
  }
522
547
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiNativeMultiSelectGroupComponent, decorators: [{
523
548
  type: Component,
@@ -530,7 +555,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
530
555
  useFactory: ({ datalist }) => datalist,
531
556
  },
532
557
  ], host: {
533
- ngSkipHydration: 'true',
534
558
  '[attr.aria-invalid]': 'host.invalid',
535
559
  '[disabled]': 'host.disabled || control.readOnly',
536
560
  '[tabIndex]': 'host.focusable ? 0 : -1',
@@ -566,20 +590,20 @@ class TuiMultiSelectModule {
566
590
  TuiLink,
567
591
  TuiTextfieldControllerModule,
568
592
  TuiStringifyContentPipe,
569
- TuiLegacyDropdownOpenMonitorDirective, i1$1.TuiDropdownOptionsDirective, i1$1.TuiDropdownDriverDirective, i1$1.TuiDropdownDirective, i1$1.TuiDropdownComponent, i1$1.TuiDropdownOpen, i1$1.TuiDropdownOpenLegacy, i1$1.TuiDropdownPortal, i1$1.TuiDropdownManual, i1$1.TuiDropdownHover, i1$1.TuiDropdownContext, i1$1.TuiDropdownPosition, i1$1.TuiDropdownPositionSided, i1$1.TuiDropdownSelection, i2$2.TuiDataListComponent, i2$2.TuiDataListDirective, i2$2.TuiOption, i2$2.TuiOptGroup, i3$2.TuiDataListWrapperComponent, i3$2.TuiDataListGroupWrapperComponent, i2$2.TuiDataListDirective], exports: [TuiMultiSelectComponent,
593
+ TuiLegacyDropdownOpenMonitorDirective, i1.TuiDropdownOptionsDirective, i1.TuiDropdownDriverDirective, i1.TuiDropdownDirective, i1.TuiDropdownComponent, i1.TuiDropdownOpen, i1.TuiDropdownOpenLegacy, i1.TuiDropdownPortal, i1.TuiDropdownManual, i1.TuiDropdownHover, i1.TuiDropdownContext, i1.TuiDropdownPosition, i1.TuiDropdownPositionSided, i1.TuiDropdownSelection, i2$2.TuiDataListComponent, i2$2.TuiDataListDirective, i2$2.TuiOption, i2$2.TuiOptGroup, i3$1.TuiDataListWrapperComponent, i3$1.TuiDataListGroupWrapperComponent, i2$2.TuiDataListDirective], exports: [TuiMultiSelectComponent,
570
594
  TuiMultiSelectGroupComponent,
571
595
  TuiMultiSelectGroupDirective,
572
596
  TuiHideSelectedPipe,
573
597
  TuiMultiSelectDirective,
574
598
  TuiNativeMultiSelectComponent,
575
- TuiNativeMultiSelectGroupComponent, i1$1.TuiDropdownOptionsDirective, i1$1.TuiDropdownDriverDirective, i1$1.TuiDropdownDirective, i1$1.TuiDropdownComponent, i1$1.TuiDropdownOpen, i1$1.TuiDropdownOpenLegacy, i1$1.TuiDropdownPortal, i1$1.TuiDropdownManual, i1$1.TuiDropdownHover, i1$1.TuiDropdownContext, i1$1.TuiDropdownPosition, i1$1.TuiDropdownPositionSided, i1$1.TuiDropdownSelection, i2$2.TuiDataListComponent, i2$2.TuiDataListDirective, i2$2.TuiOption, i2$2.TuiOptGroup, i3$2.TuiDataListWrapperComponent, i3$2.TuiDataListGroupWrapperComponent, i2$2.TuiDataListDirective] }); }
599
+ TuiNativeMultiSelectGroupComponent, i1.TuiDropdownOptionsDirective, i1.TuiDropdownDriverDirective, i1.TuiDropdownDirective, i1.TuiDropdownComponent, i1.TuiDropdownOpen, i1.TuiDropdownOpenLegacy, i1.TuiDropdownPortal, i1.TuiDropdownManual, i1.TuiDropdownHover, i1.TuiDropdownContext, i1.TuiDropdownPosition, i1.TuiDropdownPositionSided, i1.TuiDropdownSelection, i2$2.TuiDataListComponent, i2$2.TuiDataListDirective, i2$2.TuiOption, i2$2.TuiOptGroup, i3$1.TuiDataListWrapperComponent, i3$1.TuiDataListGroupWrapperComponent, i2$2.TuiDataListDirective] }); }
576
600
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiMultiSelectModule, imports: [CommonModule,
577
601
  FormsModule,
578
602
  TuiWrapperModule,
579
603
  TuiArrowComponent,
580
604
  TuiInputTagModule,
581
605
  TuiMultiSelectOptionModule,
582
- TuiTextfieldControllerModule, i1$1.TuiDropdownComponent, i2$2.TuiDataListComponent, i2$2.TuiOption, i3$2.TuiDataListWrapperComponent, i3$2.TuiDataListGroupWrapperComponent] }); }
606
+ TuiTextfieldControllerModule, i1.TuiDropdownComponent, i2$2.TuiDataListComponent, i2$2.TuiOption, i3$1.TuiDataListWrapperComponent, i3$1.TuiDataListGroupWrapperComponent] }); }
583
607
  }
584
608
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiMultiSelectModule, decorators: [{
585
609
  type: NgModule,