@taiga-ui/kit 4.45.0 → 4.46.0-canary.96d3049

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 (75) hide show
  1. package/components/badged-content/badged-content.component.d.ts +5 -1
  2. package/components/combo-box/combo-box.directive.d.ts +0 -1
  3. package/components/index.d.ts +2 -0
  4. package/components/input-chip/input-chip.directive.d.ts +5 -3
  5. package/components/input-date/date-filler.d.ts +2 -0
  6. package/components/input-date/index.d.ts +1 -0
  7. package/components/input-date/input-date.directive.d.ts +14 -10
  8. package/components/input-date-multi/index.d.ts +2 -0
  9. package/components/input-date-multi/input-date-multi.d.ts +4 -0
  10. package/components/input-date-multi/input-date-multi.directive.d.ts +30 -0
  11. package/components/input-date-range/input-date-range.directive.d.ts +1 -1
  12. package/components/input-date-time/index.d.ts +4 -0
  13. package/components/input-date-time/input-date-time.component.d.ts +13 -0
  14. package/components/input-date-time/input-date-time.d.ts +4 -0
  15. package/components/input-date-time/input-date-time.directive.d.ts +37 -0
  16. package/components/input-date-time/input-date-time.options.d.ts +18 -0
  17. package/components/input-time/input-time.component.d.ts +12 -3
  18. package/esm2022/components/avatar/avatar.component.mjs +3 -3
  19. package/esm2022/components/badged-content/badged-content.component.mjs +14 -3
  20. package/esm2022/components/button-loading/button-loading.component.mjs +2 -1
  21. package/esm2022/components/combo-box/combo-box.directive.mjs +4 -10
  22. package/esm2022/components/index.mjs +3 -1
  23. package/esm2022/components/input-chip/input-chip.directive.mjs +3 -3
  24. package/esm2022/components/input-date/date-filler.mjs +20 -0
  25. package/esm2022/components/input-date/index.mjs +2 -1
  26. package/esm2022/components/input-date/input-date.directive.mjs +32 -32
  27. package/esm2022/components/input-date-multi/index.mjs +3 -0
  28. package/esm2022/components/input-date-multi/input-date-multi.directive.mjs +129 -0
  29. package/esm2022/components/input-date-multi/input-date-multi.mjs +9 -0
  30. package/esm2022/components/input-date-multi/taiga-ui-kit-components-input-date-multi.mjs +5 -0
  31. package/esm2022/components/input-date-range/input-date-range.directive.mjs +5 -5
  32. package/esm2022/components/input-date-time/index.mjs +5 -0
  33. package/esm2022/components/input-date-time/input-date-time.component.mjs +34 -0
  34. package/esm2022/components/input-date-time/input-date-time.directive.mjs +174 -0
  35. package/esm2022/components/input-date-time/input-date-time.mjs +9 -0
  36. package/esm2022/components/input-date-time/input-date-time.options.mjs +20 -0
  37. package/esm2022/components/input-date-time/taiga-ui-kit-components-input-date-time.mjs +5 -0
  38. package/esm2022/components/input-time/input-time.component.mjs +44 -26
  39. package/esm2022/components/input-time/input-time.directive.mjs +7 -2
  40. package/esm2022/components/pager/pager.component.mjs +3 -3
  41. package/esm2022/components/status/status.directive.mjs +2 -2
  42. package/esm2022/components/textarea/textarea.component.mjs +3 -2
  43. package/esm2022/directives/lazy-loading/lazy-loading.directive.mjs +2 -1
  44. package/fesm2022/taiga-ui-kit-components-avatar.mjs +2 -2
  45. package/fesm2022/taiga-ui-kit-components-avatar.mjs.map +1 -1
  46. package/fesm2022/taiga-ui-kit-components-badged-content.mjs +13 -2
  47. package/fesm2022/taiga-ui-kit-components-badged-content.mjs.map +1 -1
  48. package/fesm2022/taiga-ui-kit-components-button-loading.mjs +1 -0
  49. package/fesm2022/taiga-ui-kit-components-button-loading.mjs.map +1 -1
  50. package/fesm2022/taiga-ui-kit-components-combo-box.mjs +3 -9
  51. package/fesm2022/taiga-ui-kit-components-combo-box.mjs.map +1 -1
  52. package/fesm2022/taiga-ui-kit-components-input-chip.mjs +3 -3
  53. package/fesm2022/taiga-ui-kit-components-input-chip.mjs.map +1 -1
  54. package/fesm2022/taiga-ui-kit-components-input-date-multi.mjs +141 -0
  55. package/fesm2022/taiga-ui-kit-components-input-date-multi.mjs.map +1 -0
  56. package/fesm2022/taiga-ui-kit-components-input-date-range.mjs +4 -4
  57. package/fesm2022/taiga-ui-kit-components-input-date-range.mjs.map +1 -1
  58. package/fesm2022/taiga-ui-kit-components-input-date-time.mjs +230 -0
  59. package/fesm2022/taiga-ui-kit-components-input-date-time.mjs.map +1 -0
  60. package/fesm2022/taiga-ui-kit-components-input-date.mjs +52 -37
  61. package/fesm2022/taiga-ui-kit-components-input-date.mjs.map +1 -1
  62. package/fesm2022/taiga-ui-kit-components-input-time.mjs +48 -26
  63. package/fesm2022/taiga-ui-kit-components-input-time.mjs.map +1 -1
  64. package/fesm2022/taiga-ui-kit-components-pager.mjs +2 -2
  65. package/fesm2022/taiga-ui-kit-components-pager.mjs.map +1 -1
  66. package/fesm2022/taiga-ui-kit-components-status.mjs +2 -2
  67. package/fesm2022/taiga-ui-kit-components-status.mjs.map +1 -1
  68. package/fesm2022/taiga-ui-kit-components-textarea.mjs +2 -1
  69. package/fesm2022/taiga-ui-kit-components-textarea.mjs.map +1 -1
  70. package/fesm2022/taiga-ui-kit-components.mjs +2 -0
  71. package/fesm2022/taiga-ui-kit-components.mjs.map +1 -1
  72. package/fesm2022/taiga-ui-kit-directives-lazy-loading.mjs +1 -0
  73. package/fesm2022/taiga-ui-kit-directives-lazy-loading.mjs.map +1 -1
  74. package/package.json +26 -14
  75. package/styles/components/status.less +1 -4
@@ -2,7 +2,6 @@ import * as i0 from '@angular/core';
2
2
  import { inject, signal, isSignal, computed, effect, untracked, Directive, Input } from '@angular/core';
3
3
  import { TuiControl, tuiAsControl } from '@taiga-ui/cdk/classes';
4
4
  import { TUI_STRICT_MATCHER, TUI_ALLOW_SIGNAL_WRITES } from '@taiga-ui/cdk/constants';
5
- import { tuiInjectElement } from '@taiga-ui/cdk/utils/dom';
6
5
  import { tuiAsOptionContent } from '@taiga-ui/core/components/data-list';
7
6
  import * as i1 from '@taiga-ui/core/components/textfield';
8
7
  import { TuiTextfieldComponent, TuiTextfieldDirective, tuiInjectAuxiliary, tuiAsTextfieldAccessor, TuiWithTextfield } from '@taiga-ui/core/components/textfield';
@@ -13,7 +12,6 @@ import { TuiSelectOption } from '@taiga-ui/kit/components/select';
13
12
  class TuiComboBox extends TuiControl {
14
13
  constructor() {
15
14
  super(...arguments);
16
- this.el = tuiInjectElement();
17
15
  this.host = inject(TuiTextfieldComponent);
18
16
  this.textfield = inject(TuiTextfieldDirective);
19
17
  this.open = tuiDropdownOpen();
@@ -49,7 +47,7 @@ class TuiComboBox extends TuiControl {
49
47
  }
50
48
  }, TUI_ALLOW_SIGNAL_WRITES);
51
49
  this.blurEffect = effect(() => {
52
- const incomplete = untracked(() => this.strict() && !this.value());
50
+ const incomplete = untracked(() => this.strict() && this.value() === null);
53
51
  if (!this.host.focused() && incomplete) {
54
52
  this.textfield.value.set('');
55
53
  }
@@ -64,11 +62,7 @@ class TuiComboBox extends TuiControl {
64
62
  this.matcher.set(x);
65
63
  }
66
64
  setValue(value) {
67
- const stringified = this.stringify(value);
68
- if (stringified !== this.textfield.value()) {
69
- this.textfield.value.set(stringified);
70
- setTimeout((end = stringified.length) => this.el.setSelectionRange(end, end));
71
- }
65
+ this.textfield.setValue(value);
72
66
  this.onChange(value);
73
67
  if (!value) {
74
68
  this.toggleDropdown(true);
@@ -95,7 +89,7 @@ class TuiComboBox extends TuiControl {
95
89
  }
96
90
  }
97
91
  stringify(value) {
98
- return value ? this.itemsHandlers.stringify()(value) : '';
92
+ return value != null ? this.itemsHandlers.stringify()(value) : '';
99
93
  }
100
94
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiComboBox, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
101
95
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: TuiComboBox, isStandalone: true, selector: "input[tuiComboBox]", inputs: { strictSetter: ["strict", "strictSetter"], matcherSetter: ["matcher", "matcherSetter"] }, host: { listeners: { "click": "toggleDropdown()", "input": "toggleDropdown(true)", "keydown.enter": "keydownEnter($event)" }, properties: { "disabled": "disabled()" } }, providers: [
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-kit-components-combo-box.mjs","sources":["../../../projects/kit/components/combo-box/combo-box.directive.ts","../../../projects/kit/components/combo-box/taiga-ui-kit-components-combo-box.ts"],"sourcesContent":["import {\n computed,\n Directive,\n effect,\n inject,\n Input,\n isSignal,\n signal,\n untracked,\n} from '@angular/core';\nimport {tuiAsControl, TuiControl} from '@taiga-ui/cdk/classes';\nimport {TUI_ALLOW_SIGNAL_WRITES, TUI_STRICT_MATCHER} from '@taiga-ui/cdk/constants';\nimport type {TuiStringMatcher} from '@taiga-ui/cdk/types';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport type {TuiDataListAccessor} from '@taiga-ui/core/components/data-list';\nimport {tuiAsOptionContent} from '@taiga-ui/core/components/data-list';\nimport type {TuiTextfieldAccessor} from '@taiga-ui/core/components/textfield';\nimport {\n tuiAsTextfieldAccessor,\n tuiInjectAuxiliary,\n TuiTextfieldComponent,\n TuiTextfieldDirective,\n TuiWithTextfield,\n} from '@taiga-ui/core/components/textfield';\nimport {\n TuiDropdownDirective,\n tuiDropdownEnabled,\n tuiDropdownOpen,\n} from '@taiga-ui/core/directives/dropdown';\nimport type {TuiItemsHandlers} from '@taiga-ui/core/directives/items-handlers';\nimport {TUI_ITEMS_HANDLERS} from '@taiga-ui/core/directives/items-handlers';\nimport {TuiSelectOption} from '@taiga-ui/kit/components/select';\n\n@Directive({\n standalone: true,\n selector: 'input[tuiComboBox]',\n providers: [\n tuiAsOptionContent(TuiSelectOption),\n tuiAsTextfieldAccessor(TuiComboBox),\n tuiAsControl(TuiComboBox),\n ],\n hostDirectives: [TuiWithTextfield],\n host: {\n '[disabled]': 'disabled()',\n '(click)': 'toggleDropdown()',\n '(input)': 'toggleDropdown(true)',\n '(keydown.enter)': 'keydownEnter($event)',\n },\n})\nexport class TuiComboBox<T>\n extends TuiControl<T | string | null>\n implements TuiTextfieldAccessor<T>\n{\n private readonly el = tuiInjectElement<HTMLInputElement>();\n private readonly host: TuiTextfieldComponent<T> = inject(TuiTextfieldComponent);\n private readonly textfield: TuiTextfieldDirective<T> = inject(TuiTextfieldDirective);\n private readonly open = tuiDropdownOpen();\n private readonly dropdownEnabled = tuiDropdownEnabled(this.interactive);\n private readonly dropdown = inject(TuiDropdownDirective);\n private readonly itemsHandlers: TuiItemsHandlers<T | string> =\n inject(TUI_ITEMS_HANDLERS);\n\n private readonly matcher = signal<TuiStringMatcher<T> | null>(TUI_STRICT_MATCHER);\n private readonly strict = signal(true);\n private readonly datalist = tuiInjectAuxiliary<TuiDataListAccessor<T>>(\n (x) => x !== this && 'options' in x && isSignal(x.options),\n );\n\n private readonly options = computed(\n () =>\n this.datalist()\n ?.options?.() // TODO(v5): remove optional call `?.()`\n .filter((x) => !this.itemsHandlers.disabledItemHandler()(x)) ?? [],\n );\n\n protected readonly nonStrictValueEffect = effect(() => {\n if (\n !this.options().length &&\n !this.strict() &&\n this.stringify(this.value()) !== this.textfield.value()\n ) {\n this.onChange(this.textfield.value() || null);\n }\n }, TUI_ALLOW_SIGNAL_WRITES);\n\n protected readonly matchingEffect = effect(() => {\n const options = this.options();\n const matcher = this.matcher();\n\n if (!options.length || !matcher) {\n return;\n }\n\n const textfieldValue = this.textfield.value();\n const selectedOption =\n options.find((x) =>\n matcher(x, textfieldValue, this.itemsHandlers.stringify()),\n ) ?? null;\n const stringified = this.stringify(selectedOption);\n const fallback = this.strict() || !textfieldValue ? null : textfieldValue;\n\n this.onChange(selectedOption ?? fallback);\n\n if (stringified && stringified !== textfieldValue) {\n this.textfield.value.set(stringified);\n }\n }, TUI_ALLOW_SIGNAL_WRITES);\n\n protected readonly blurEffect = effect(() => {\n const incomplete = untracked(() => this.strict() && !this.value());\n\n if (!this.host.focused() && incomplete) {\n this.textfield.value.set('');\n }\n }, TUI_ALLOW_SIGNAL_WRITES);\n\n // TODO(v5): use signal input\n @Input('strict')\n public set strictSetter(x: boolean) {\n this.strict.set(x);\n }\n\n // TODO(v5): use signal input\n @Input('matcher')\n public set matcherSetter(x: TuiStringMatcher<T> | null) {\n this.matcher.set(x);\n }\n\n public setValue(value: T | null): void {\n const stringified = this.stringify(value);\n\n if (stringified !== this.textfield.value()) {\n this.textfield.value.set(stringified);\n setTimeout((end = stringified.length) => this.el.setSelectionRange(end, end));\n }\n\n this.onChange(value);\n\n if (!value) {\n this.toggleDropdown(true);\n }\n }\n\n public override writeValue(value: T | string | null): void {\n super.writeValue(value);\n this.textfield.value.set(this.stringify(value));\n }\n\n protected toggleDropdown(open = !this.open()): void {\n if (this.dropdownEnabled() && this.dropdown._content()) {\n this.open.set(open);\n }\n }\n\n protected keydownEnter(event: KeyboardEvent): void {\n if (!this.open()) {\n return;\n }\n\n event.preventDefault();\n\n const options = this.options();\n\n if (options.length === 1 && options[0]) {\n this.setValue(options[0]);\n this.toggleDropdown(false);\n }\n }\n\n private stringify(value: T | string | null): string {\n return value ? this.itemsHandlers.stringify()(value) : '';\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;;AAiCA,MAgBa,WACT,SAAQ,UAA6B,CAAA;AAjBzC,IAAA,WAAA,GAAA;;QAoBqB,IAAE,CAAA,EAAA,GAAG,gBAAgB,EAAoB,CAAC;AAC1C,QAAA,IAAA,CAAA,IAAI,GAA6B,MAAM,CAAC,qBAAqB,CAAC,CAAC;AAC/D,QAAA,IAAA,CAAA,SAAS,GAA6B,MAAM,CAAC,qBAAqB,CAAC,CAAC;QACpE,IAAI,CAAA,IAAA,GAAG,eAAe,EAAE,CAAC;AACzB,QAAA,IAAA,CAAA,eAAe,GAAG,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AACvD,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAC;AACxC,QAAA,IAAA,CAAA,aAAa,GAC1B,MAAM,CAAC,kBAAkB,CAAC,CAAC;AAEd,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAA6B,kBAAkB,CAAC,CAAC;AACjE,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QACtB,IAAQ,CAAA,QAAA,GAAG,kBAAkB,CAC1C,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,SAAS,IAAI,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAC7D,CAAC;QAEe,IAAO,CAAA,OAAA,GAAG,QAAQ,CAC/B,MACI,IAAI,CAAC,QAAQ,EAAE;AACX,cAAE,OAAO,IAAI;aACZ,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAC7E,CAAC;AAEiB,QAAA,IAAA,CAAA,oBAAoB,GAAG,MAAM,CAAC,MAAK;AAClD,YAAA,IACI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM;gBACtB,CAAC,IAAI,CAAC,MAAM,EAAE;AACd,gBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,EACzD;AACE,gBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,CAAC;AACjD,aAAA;SACJ,EAAE,uBAAuB,CAAC,CAAC;AAET,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,MAAK;AAC5C,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;AAC/B,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;AAE/B,YAAA,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE;gBAC7B,OAAO;AACV,aAAA;YAED,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;YAC9C,MAAM,cAAc,GAChB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KACX,OAAO,CAAC,CAAC,EAAE,cAAc,EAAE,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC,CAC7D,IAAI,IAAI,CAAC;YACd,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;AACnD,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,cAAc,GAAG,IAAI,GAAG,cAAc,CAAC;AAE1E,YAAA,IAAI,CAAC,QAAQ,CAAC,cAAc,IAAI,QAAQ,CAAC,CAAC;AAE1C,YAAA,IAAI,WAAW,IAAI,WAAW,KAAK,cAAc,EAAE;gBAC/C,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;AACzC,aAAA;SACJ,EAAE,uBAAuB,CAAC,CAAC;AAET,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,MAAK;AACxC,YAAA,MAAM,UAAU,GAAG,SAAS,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;YAEnE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,UAAU,EAAE;gBACpC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAChC,aAAA;SACJ,EAAE,uBAAuB,CAAC,CAAC;AA0D/B,KAAA;;IAvDG,IACW,YAAY,CAAC,CAAU,EAAA;AAC9B,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;KACtB;;IAGD,IACW,aAAa,CAAC,CAA6B,EAAA;AAClD,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;KACvB;AAEM,IAAA,QAAQ,CAAC,KAAe,EAAA;QAC3B,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAE1C,IAAI,WAAW,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE;YACxC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YACtC,UAAU,CAAC,CAAC,GAAG,GAAG,WAAW,CAAC,MAAM,KAAK,IAAI,CAAC,EAAE,CAAC,iBAAiB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AACjF,SAAA;AAED,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAErB,IAAI,CAAC,KAAK,EAAE;AACR,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;AAC7B,SAAA;KACJ;AAEe,IAAA,UAAU,CAAC,KAAwB,EAAA;AAC/C,QAAA,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AACxB,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;KACnD;AAES,IAAA,cAAc,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,EAAA;QACxC,IAAI,IAAI,CAAC,eAAe,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE;AACpD,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACvB,SAAA;KACJ;AAES,IAAA,YAAY,CAAC,KAAoB,EAAA;AACvC,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE;YACd,OAAO;AACV,SAAA;QAED,KAAK,CAAC,cAAc,EAAE,CAAC;AAEvB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QAE/B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE;YACpC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1B,YAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;AAC9B,SAAA;KACJ;AAEO,IAAA,SAAS,CAAC,KAAwB,EAAA;AACtC,QAAA,OAAO,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;KAC7D;+GA1HQ,WAAW,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAX,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,WAAW,EAbT,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,CAAA,QAAA,EAAA,cAAA,CAAA,EAAA,aAAA,EAAA,CAAA,SAAA,EAAA,eAAA,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,sBAAA,EAAA,eAAA,EAAA,sBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,EAAA,SAAA,EAAA;YACP,kBAAkB,CAAC,eAAe,CAAC;YACnC,sBAAsB,CAAC,WAAW,CAAC;YACnC,YAAY,CAAC,WAAW,CAAC;AAC5B,SAAA,EAAA,eAAA,EAAA,IAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;4FASQ,WAAW,EAAA,UAAA,EAAA,CAAA;kBAhBvB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,SAAS,EAAE;wBACP,kBAAkB,CAAC,eAAe,CAAC;AACnC,wBAAA,sBAAsB,CAAa,WAAA,CAAA;AACnC,wBAAA,YAAY,CAAa,WAAA,CAAA;AAC5B,qBAAA;oBACD,cAAc,EAAE,CAAC,gBAAgB,CAAC;AAClC,oBAAA,IAAI,EAAE;AACF,wBAAA,YAAY,EAAE,YAAY;AAC1B,wBAAA,SAAS,EAAE,kBAAkB;AAC7B,wBAAA,SAAS,EAAE,sBAAsB;AACjC,wBAAA,iBAAiB,EAAE,sBAAsB;AAC5C,qBAAA;AACJ,iBAAA,CAAA;8BAsEc,YAAY,EAAA,CAAA;sBADtB,KAAK;uBAAC,QAAQ,CAAA;gBAOJ,aAAa,EAAA,CAAA;sBADvB,KAAK;uBAAC,SAAS,CAAA;;;AC3HpB;;AAEG;;;;"}
1
+ {"version":3,"file":"taiga-ui-kit-components-combo-box.mjs","sources":["../../../projects/kit/components/combo-box/combo-box.directive.ts","../../../projects/kit/components/combo-box/taiga-ui-kit-components-combo-box.ts"],"sourcesContent":["import {\n computed,\n Directive,\n effect,\n inject,\n Input,\n isSignal,\n signal,\n untracked,\n} from '@angular/core';\nimport {tuiAsControl, TuiControl} from '@taiga-ui/cdk/classes';\nimport {TUI_ALLOW_SIGNAL_WRITES, TUI_STRICT_MATCHER} from '@taiga-ui/cdk/constants';\nimport type {TuiStringMatcher} from '@taiga-ui/cdk/types';\nimport type {TuiDataListAccessor} from '@taiga-ui/core/components/data-list';\nimport {tuiAsOptionContent} from '@taiga-ui/core/components/data-list';\nimport type {TuiTextfieldAccessor} from '@taiga-ui/core/components/textfield';\nimport {\n tuiAsTextfieldAccessor,\n tuiInjectAuxiliary,\n TuiTextfieldComponent,\n TuiTextfieldDirective,\n TuiWithTextfield,\n} from '@taiga-ui/core/components/textfield';\nimport {\n TuiDropdownDirective,\n tuiDropdownEnabled,\n tuiDropdownOpen,\n} from '@taiga-ui/core/directives/dropdown';\nimport type {TuiItemsHandlers} from '@taiga-ui/core/directives/items-handlers';\nimport {TUI_ITEMS_HANDLERS} from '@taiga-ui/core/directives/items-handlers';\nimport {TuiSelectOption} from '@taiga-ui/kit/components/select';\n\n@Directive({\n standalone: true,\n selector: 'input[tuiComboBox]',\n providers: [\n tuiAsOptionContent(TuiSelectOption),\n tuiAsTextfieldAccessor(TuiComboBox),\n tuiAsControl(TuiComboBox),\n ],\n hostDirectives: [TuiWithTextfield],\n host: {\n '[disabled]': 'disabled()',\n '(click)': 'toggleDropdown()',\n '(input)': 'toggleDropdown(true)',\n '(keydown.enter)': 'keydownEnter($event)',\n },\n})\nexport class TuiComboBox<T>\n extends TuiControl<T | string | null>\n implements TuiTextfieldAccessor<T>\n{\n private readonly host: TuiTextfieldComponent<T> = inject(TuiTextfieldComponent);\n private readonly textfield: TuiTextfieldDirective<T> = inject(TuiTextfieldDirective);\n private readonly open = tuiDropdownOpen();\n private readonly dropdownEnabled = tuiDropdownEnabled(this.interactive);\n private readonly dropdown = inject(TuiDropdownDirective);\n private readonly itemsHandlers: TuiItemsHandlers<T | string> =\n inject(TUI_ITEMS_HANDLERS);\n\n private readonly matcher = signal<TuiStringMatcher<T> | null>(TUI_STRICT_MATCHER);\n private readonly strict = signal(true);\n private readonly datalist = tuiInjectAuxiliary<TuiDataListAccessor<T>>(\n (x) => x !== this && 'options' in x && isSignal(x.options),\n );\n\n private readonly options = computed(\n () =>\n this.datalist()\n ?.options?.() // TODO(v5): remove optional call `?.()`\n .filter((x) => !this.itemsHandlers.disabledItemHandler()(x)) ?? [],\n );\n\n protected readonly nonStrictValueEffect = effect(() => {\n if (\n !this.options().length &&\n !this.strict() &&\n this.stringify(this.value()) !== this.textfield.value()\n ) {\n this.onChange(this.textfield.value() || null);\n }\n }, TUI_ALLOW_SIGNAL_WRITES);\n\n protected readonly matchingEffect = effect(() => {\n const options = this.options();\n const matcher = this.matcher();\n\n if (!options.length || !matcher) {\n return;\n }\n\n const textfieldValue = this.textfield.value();\n const selectedOption =\n options.find((x) =>\n matcher(x, textfieldValue, this.itemsHandlers.stringify()),\n ) ?? null;\n const stringified = this.stringify(selectedOption);\n const fallback = this.strict() || !textfieldValue ? null : textfieldValue;\n\n this.onChange(selectedOption ?? fallback);\n\n if (stringified && stringified !== textfieldValue) {\n this.textfield.value.set(stringified);\n }\n }, TUI_ALLOW_SIGNAL_WRITES);\n\n protected readonly blurEffect = effect(() => {\n const incomplete = untracked(() => this.strict() && this.value() === null);\n\n if (!this.host.focused() && incomplete) {\n this.textfield.value.set('');\n }\n }, TUI_ALLOW_SIGNAL_WRITES);\n\n // TODO(v5): use signal input\n @Input('strict')\n public set strictSetter(x: boolean) {\n this.strict.set(x);\n }\n\n // TODO(v5): use signal input\n @Input('matcher')\n public set matcherSetter(x: TuiStringMatcher<T> | null) {\n this.matcher.set(x);\n }\n\n public setValue(value: T | null): void {\n this.textfield.setValue(value);\n this.onChange(value);\n\n if (!value) {\n this.toggleDropdown(true);\n }\n }\n\n public override writeValue(value: T | string | null): void {\n super.writeValue(value);\n this.textfield.value.set(this.stringify(value));\n }\n\n protected toggleDropdown(open = !this.open()): void {\n if (this.dropdownEnabled() && this.dropdown._content()) {\n this.open.set(open);\n }\n }\n\n protected keydownEnter(event: KeyboardEvent): void {\n if (!this.open()) {\n return;\n }\n\n event.preventDefault();\n\n const options = this.options();\n\n if (options.length === 1 && options[0]) {\n this.setValue(options[0]);\n this.toggleDropdown(false);\n }\n }\n\n private stringify(value: T | string | null): string {\n return value != null ? this.itemsHandlers.stringify()(value) : '';\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;AAgCA,MAgBa,WACT,SAAQ,UAA6B,CAAA;AAjBzC,IAAA,WAAA,GAAA;;AAoBqB,QAAA,IAAA,CAAA,IAAI,GAA6B,MAAM,CAAC,qBAAqB,CAAC,CAAC;AAC/D,QAAA,IAAA,CAAA,SAAS,GAA6B,MAAM,CAAC,qBAAqB,CAAC,CAAC;QACpE,IAAI,CAAA,IAAA,GAAG,eAAe,EAAE,CAAC;AACzB,QAAA,IAAA,CAAA,eAAe,GAAG,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AACvD,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAC;AACxC,QAAA,IAAA,CAAA,aAAa,GAC1B,MAAM,CAAC,kBAAkB,CAAC,CAAC;AAEd,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAA6B,kBAAkB,CAAC,CAAC;AACjE,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QACtB,IAAQ,CAAA,QAAA,GAAG,kBAAkB,CAC1C,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,SAAS,IAAI,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAC7D,CAAC;QAEe,IAAO,CAAA,OAAA,GAAG,QAAQ,CAC/B,MACI,IAAI,CAAC,QAAQ,EAAE;AACX,cAAE,OAAO,IAAI;aACZ,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAC7E,CAAC;AAEiB,QAAA,IAAA,CAAA,oBAAoB,GAAG,MAAM,CAAC,MAAK;AAClD,YAAA,IACI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM;gBACtB,CAAC,IAAI,CAAC,MAAM,EAAE;AACd,gBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,EACzD;AACE,gBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,CAAC;AACjD,aAAA;SACJ,EAAE,uBAAuB,CAAC,CAAC;AAET,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,MAAK;AAC5C,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;AAC/B,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;AAE/B,YAAA,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE;gBAC7B,OAAO;AACV,aAAA;YAED,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;YAC9C,MAAM,cAAc,GAChB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KACX,OAAO,CAAC,CAAC,EAAE,cAAc,EAAE,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC,CAC7D,IAAI,IAAI,CAAC;YACd,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;AACnD,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,cAAc,GAAG,IAAI,GAAG,cAAc,CAAC;AAE1E,YAAA,IAAI,CAAC,QAAQ,CAAC,cAAc,IAAI,QAAQ,CAAC,CAAC;AAE1C,YAAA,IAAI,WAAW,IAAI,WAAW,KAAK,cAAc,EAAE;gBAC/C,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;AACzC,aAAA;SACJ,EAAE,uBAAuB,CAAC,CAAC;AAET,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,MAAK;AACxC,YAAA,MAAM,UAAU,GAAG,SAAS,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE,KAAK,IAAI,CAAC,CAAC;YAE3E,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,UAAU,EAAE;gBACpC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAChC,aAAA;SACJ,EAAE,uBAAuB,CAAC,CAAC;AAoD/B,KAAA;;IAjDG,IACW,YAAY,CAAC,CAAU,EAAA;AAC9B,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;KACtB;;IAGD,IACW,aAAa,CAAC,CAA6B,EAAA;AAClD,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;KACvB;AAEM,IAAA,QAAQ,CAAC,KAAe,EAAA;AAC3B,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC/B,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAErB,IAAI,CAAC,KAAK,EAAE;AACR,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;AAC7B,SAAA;KACJ;AAEe,IAAA,UAAU,CAAC,KAAwB,EAAA;AAC/C,QAAA,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AACxB,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;KACnD;AAES,IAAA,cAAc,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,EAAA;QACxC,IAAI,IAAI,CAAC,eAAe,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE;AACpD,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACvB,SAAA;KACJ;AAES,IAAA,YAAY,CAAC,KAAoB,EAAA;AACvC,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE;YACd,OAAO;AACV,SAAA;QAED,KAAK,CAAC,cAAc,EAAE,CAAC;AAEvB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QAE/B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE;YACpC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1B,YAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;AAC9B,SAAA;KACJ;AAEO,IAAA,SAAS,CAAC,KAAwB,EAAA;AACtC,QAAA,OAAO,KAAK,IAAI,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;KACrE;+GAnHQ,WAAW,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAX,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,WAAW,EAbT,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,CAAA,QAAA,EAAA,cAAA,CAAA,EAAA,aAAA,EAAA,CAAA,SAAA,EAAA,eAAA,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,sBAAA,EAAA,eAAA,EAAA,sBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,EAAA,SAAA,EAAA;YACP,kBAAkB,CAAC,eAAe,CAAC;YACnC,sBAAsB,CAAC,WAAW,CAAC;YACnC,YAAY,CAAC,WAAW,CAAC;AAC5B,SAAA,EAAA,eAAA,EAAA,IAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;4FASQ,WAAW,EAAA,UAAA,EAAA,CAAA;kBAhBvB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,SAAS,EAAE;wBACP,kBAAkB,CAAC,eAAe,CAAC;AACnC,wBAAA,sBAAsB,CAAa,WAAA,CAAA;AACnC,wBAAA,YAAY,CAAa,WAAA,CAAA;AAC5B,qBAAA;oBACD,cAAc,EAAE,CAAC,gBAAgB,CAAC;AAClC,oBAAA,IAAI,EAAE;AACF,wBAAA,YAAY,EAAE,YAAY;AAC1B,wBAAA,SAAS,EAAE,kBAAkB;AAC7B,wBAAA,SAAS,EAAE,sBAAsB;AACjC,wBAAA,iBAAiB,EAAE,sBAAsB;AAC5C,qBAAA;AACJ,iBAAA,CAAA;8BAqEc,YAAY,EAAA,CAAA;sBADtB,KAAK;uBAAC,QAAQ,CAAA;gBAOJ,aAAa,EAAA,CAAA;sBADvB,KAAK;uBAAC,SAAS,CAAA;;;ACzHpB;;AAEG;;;;"}
@@ -22,7 +22,7 @@ import { TuiActiveZone } from '@taiga-ui/cdk/directives/active-zone';
22
22
  import * as i1$1 from '@taiga-ui/cdk/directives/native-validator';
23
23
  import { TuiNativeValidator } from '@taiga-ui/cdk/directives/native-validator';
24
24
  import { tuiInjectElement, tuiGetClipboardDataText } from '@taiga-ui/cdk/utils/dom';
25
- import { tuiDropdownOpen, TuiDropdownDirective, TuiDropdownOpen } from '@taiga-ui/core/directives/dropdown';
25
+ import { TuiDropdownDirective, tuiDropdownOpen, TuiDropdownOpen } from '@taiga-ui/core/directives/dropdown';
26
26
  import { filter } from 'rxjs';
27
27
  import { tuiCreateOptions } from '@taiga-ui/cdk/utils/di';
28
28
 
@@ -116,12 +116,12 @@ const [TUI_INPUT_CHIP_OPTIONS, tuiInputChipOptionsProvider] = tuiCreateOptions(T
116
116
  class TuiInputChipDirective extends TuiControl {
117
117
  constructor() {
118
118
  super(...arguments);
119
- this.handlers = inject(TUI_ITEMS_HANDLERS);
120
119
  this.options = inject(TUI_INPUT_CHIP_OPTIONS);
121
120
  this.mobile = inject(TUI_IS_MOBILE);
121
+ this.dropdown = inject(TuiDropdownDirective);
122
122
  this.textfield = inject(TuiTextfieldMultiComponent);
123
123
  this.open = tuiDropdownOpen();
124
- this.dropdown = inject(TuiDropdownDirective);
124
+ this.handlers = inject(TUI_ITEMS_HANDLERS);
125
125
  this.enabled = tuiDirectiveBinding(TuiDropdownOpen, 'tuiDropdownEnabled', this.interactive, {});
126
126
  this.sub = inject(TuiActiveZone)
127
127
  .tuiActiveZoneChange.pipe(filter((active) => !active && !this.el.matches('select')), takeUntilDestroyed())
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-kit-components-input-chip.mjs","sources":["../../../projects/kit/components/input-chip/input-chip.component.ts","../../../projects/kit/components/input-chip/input-chip.template.html","../../../projects/kit/components/input-chip/input-chip.options.ts","../../../projects/kit/components/input-chip/input-chip.directive.ts","../../../projects/kit/components/input-chip/input-chip.ts","../../../projects/kit/components/input-chip/taiga-ui-kit-components-input-chip.ts"],"sourcesContent":["import {NgIf} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n inject,\n Input,\n signal,\n ViewChild,\n} from '@angular/core';\nimport {FormsModule, ReactiveFormsModule} from '@angular/forms';\nimport {TUI_IS_MOBILE} from '@taiga-ui/cdk/tokens';\nimport type {TuiContext} from '@taiga-ui/cdk/types';\nimport {tuiDirectiveBinding, tuiIsString} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TuiButton} from '@taiga-ui/core/components/button';\nimport type {TuiTextfieldItem} from '@taiga-ui/core/components/textfield';\nimport {\n TUI_TEXTFIELD_OPTIONS,\n TuiTextfieldComponent,\n} from '@taiga-ui/core/components/textfield';\nimport {TuiAppearance} from '@taiga-ui/core/directives/appearance';\nimport {TuiHintDirective, TuiHintOverflow} from '@taiga-ui/core/directives/hint';\nimport type {TuiItemsHandlers} from '@taiga-ui/core/directives/items-handlers';\nimport {TUI_ITEMS_HANDLERS} from '@taiga-ui/core/directives/items-handlers';\nimport {TuiChip} from '@taiga-ui/kit/components/chip';\nimport {TuiFade} from '@taiga-ui/kit/directives/fade';\nimport {tuiInjectValue} from '@taiga-ui/kit/utils';\nimport {injectContext} from '@taiga-ui/polymorpheus';\n\n@Component({\n standalone: true,\n selector: 'tui-input-chip',\n imports: [\n FormsModule,\n NgIf,\n ReactiveFormsModule,\n TuiButton,\n TuiChip,\n TuiFade,\n TuiHintOverflow,\n ],\n templateUrl: './input-chip.template.html',\n styleUrls: ['./input-chip.styles.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [TuiChip],\n host: {\n tuiChip: '',\n class: 'tui-interactive',\n '[class._edit]': 'editing()',\n '[attr.tabIndex]': 'disabled() ? null : -1',\n '(click)': 'editing() && $event.stopPropagation()',\n '(keydown.backspace.prevent)': 'delete()',\n '(keydown.enter.prevent)': 'edit()',\n '(dblclick)': 'edit()',\n },\n})\nexport class TuiInputChipComponent<T> {\n @ViewChild(TuiChip, {read: ElementRef})\n private readonly input?: ElementRef<HTMLInputElement>;\n\n private readonly options = inject(TUI_TEXTFIELD_OPTIONS);\n private readonly context = injectContext<TuiContext<TuiTextfieldItem<T>>>();\n private readonly value = tuiInjectValue<readonly T[]>();\n\n protected readonly mobile = inject(TUI_IS_MOBILE);\n protected readonly internal = signal(this.context.$implicit.item);\n protected readonly editing = signal(false);\n protected readonly hint = inject(TuiHintDirective, {self: true, optional: true});\n protected readonly handlers: TuiItemsHandlers<T> = inject(TUI_ITEMS_HANDLERS);\n protected readonly textfield = inject(TuiTextfieldComponent);\n\n protected readonly disabled = tuiDirectiveBinding(\n TuiAppearance,\n 'tuiAppearanceState',\n computed(() =>\n this.handlers.disabledItemHandler()(this.context.$implicit.item)\n ? 'disabled'\n : null,\n ),\n );\n\n protected readonly size = tuiDirectiveBinding(\n TuiChip,\n 'size',\n computed(() => (this.options.size() === 'l' ? 's' : 'xs')),\n );\n\n @Input()\n public editable = true;\n\n protected get index(): number {\n return this.context.$implicit.index;\n }\n\n protected delete(): void {\n this.textfield.cva?.onChange(this.value().filter((_, i) => i !== this.index));\n\n if (!this.mobile) {\n this.textfield.input?.nativeElement.focus({preventScroll: true});\n }\n }\n\n protected save(): void {\n if (!this.internal()) {\n this.delete();\n } else if (this.handlers.disabledItemHandler()(this.internal())) {\n return;\n }\n\n const value = this.value().map((item, index) =>\n index === this.index ? this.internal() : item,\n );\n\n this.textfield.cva?.onChange(value);\n this.editing.set(false);\n this.textfield.input?.nativeElement.focus({preventScroll: true});\n }\n\n protected cancel(): void {\n this.editing.set(false);\n this.internal.set(this.context.$implicit.item);\n }\n\n protected edit(): void {\n if (\n !this.editable ||\n !this.textfield.cva?.interactive() ||\n !tuiIsString(this.internal())\n ) {\n return;\n }\n\n this.editing.set(true);\n setTimeout(() => this.input?.nativeElement.focus());\n }\n}\n","<input\n appearance=\"\"\n enterkeyhint=\"enter\"\n tuiChip\n class=\"t-input\"\n [disabled]=\"!editing()\"\n [ngModel]=\"internal()\"\n [ngModelOptions]=\"{standalone: true}\"\n (blur)=\"cancel()\"\n (keydown.enter)=\"save()\"\n (keydown.esc)=\"cancel()\"\n (keydown.stop)=\"(0)\"\n (ngModelChange)=\"internal.set($event)\"\n/>\n<div\n tuiFade\n tuiFadeOffset=\"0.5rem\"\n class=\"t-text\"\n [tuiHintOverflow]=\"hint?.content() ? null : handlers.stringify()(internal())\"\n (mousedown.prevent.zoneless)=\"(0)\"\n>\n {{ handlers.stringify()(internal()) }}\n</div>\n<button\n *ngIf=\"textfield.cva?.interactive() && !editing() && !disabled()\"\n iconStart=\"@tui.x\"\n tabIndex=\"-1\"\n tuiIconButton\n type=\"button\"\n (click.stop)=\"delete()\"\n (pointerdown.prevent.stop.zoneless)=\"(0)\"\n>\n Remove\n</button>\n","import {tuiCreateOptions} from '@taiga-ui/cdk/utils/di';\n\nexport interface TuiInputChipOptions {\n readonly separator: RegExp | string;\n readonly unique: boolean;\n}\n\nexport const TUI_INPUT_CHIP_DEFAULT_OPTIONS: TuiInputChipOptions = {\n separator: ',',\n unique: true,\n};\n\nexport const [TUI_INPUT_CHIP_OPTIONS, tuiInputChipOptionsProvider] = tuiCreateOptions(\n TUI_INPUT_CHIP_DEFAULT_OPTIONS,\n);\n","import {Directive, inject, Input} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {tuiAsControl, TuiControl} from '@taiga-ui/cdk/classes';\nimport {TuiActiveZone} from '@taiga-ui/cdk/directives/active-zone';\nimport {TuiNativeValidator} from '@taiga-ui/cdk/directives/native-validator';\nimport {TUI_IS_MOBILE, tuiFallbackValueProvider} from '@taiga-ui/cdk/tokens';\nimport {tuiGetClipboardDataText, tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {tuiDirectiveBinding} from '@taiga-ui/cdk/utils/miscellaneous';\nimport type {TuiTextfieldAccessor} from '@taiga-ui/core/components/textfield';\nimport {\n tuiAsTextfieldAccessor,\n TuiTextfieldBase,\n TuiTextfieldMultiComponent,\n} from '@taiga-ui/core/components/textfield';\nimport {\n TuiDropdownDirective,\n TuiDropdownOpen,\n tuiDropdownOpen,\n} from '@taiga-ui/core/directives/dropdown';\nimport type {TuiItemsHandlers} from '@taiga-ui/core/directives/items-handlers';\nimport {TUI_ITEMS_HANDLERS} from '@taiga-ui/core/directives/items-handlers';\nimport {filter} from 'rxjs';\n\nimport {TUI_INPUT_CHIP_OPTIONS} from './input-chip.options';\n\n@Directive({\n standalone: true,\n selector: 'input[tuiInputChip]',\n providers: [\n tuiAsControl(TuiInputChipDirective),\n tuiFallbackValueProvider([]),\n tuiAsTextfieldAccessor(TuiInputChipDirective),\n ],\n hostDirectives: [\n TuiNativeValidator,\n {\n directive: TuiTextfieldBase,\n inputs: ['invalid', 'focused', 'readOnly', 'state'],\n },\n ],\n host: {\n enterkeyhint: 'enter',\n '[disabled]': 'disabled()',\n '(keydown.enter.prevent)': 'onEnter()',\n '(keydown.zoneless)': 'onBackspace($event.key)',\n '(input)': 'onInput()',\n '(paste.prevent)': 'onPaste($event)',\n '(drop.prevent)': 'onPaste($event)',\n },\n})\nexport class TuiInputChipDirective<T>\n extends TuiControl<T[]>\n implements TuiTextfieldAccessor<T[]>\n{\n private readonly handlers: TuiItemsHandlers<T> = inject(TUI_ITEMS_HANDLERS);\n private readonly options = inject(TUI_INPUT_CHIP_OPTIONS);\n private readonly mobile = inject(TUI_IS_MOBILE);\n private readonly textfield = inject(TuiTextfieldMultiComponent);\n private readonly open = tuiDropdownOpen();\n private readonly dropdown = inject(TuiDropdownDirective);\n\n protected readonly enabled = tuiDirectiveBinding(\n TuiDropdownOpen,\n 'tuiDropdownEnabled',\n this.interactive,\n {},\n );\n\n protected readonly sub = inject(TuiActiveZone)\n .tuiActiveZoneChange.pipe(\n filter((active) => !active && !this.el.matches('select')),\n takeUntilDestroyed(),\n )\n .subscribe(() => {\n this.onEnter();\n this.textfield.value.set('');\n });\n\n @Input()\n public separator = this.options.separator;\n\n @Input()\n public unique = this.options.unique;\n\n public readonly el = tuiInjectElement<HTMLInputElement>();\n\n public setValue(value: T[]): void {\n this.textfield.value.set('');\n this.onChange(\n this.unique ? Array.from(new Set(value.reverse())).reverse() : value,\n );\n }\n\n protected onEnter(): void {\n const value = this.textfield.value().trim();\n const items: any[] = this.separator ? value.split(this.separator) : [value];\n const valid = items.filter(\n (item) => item && !this.handlers.disabledItemHandler()(item),\n );\n\n if (!value || !valid.length) {\n return;\n }\n\n this.setValue([...this.value(), ...valid]);\n this.scrollTo();\n }\n\n protected onInput(): void {\n this.open.set(!!this.dropdown.content);\n\n if (this.separator && this.textfield.value().match(this.separator)) {\n this.onEnter();\n } else {\n this.scrollTo();\n }\n }\n\n protected onPaste(event: ClipboardEvent | DragEvent): void {\n const value =\n 'dataTransfer' in event\n ? event.dataTransfer?.getData('text/plain') || ''\n : tuiGetClipboardDataText(event);\n\n this.textfield.value.set(value);\n this.onEnter();\n }\n\n protected onBackspace(key: string): void {\n // (keydown.backspace) doesn't emit event on empty input in ios safari\n if (\n key === 'Backspace' &&\n !this.textfield.value() &&\n this.interactive() &&\n (this.mobile || !this.textfield.item)\n ) {\n this.onChange(this.value().slice(0, -1));\n }\n }\n\n protected scrollTo(): void {\n const sign = this.textfield.el.matches('[dir=\"rtl\"] :scope') ? -1 : 1;\n\n // Allow change detection to run and add new tag to DOM\n setTimeout(() => {\n this.textfield.el.scrollTo({\n left: sign * Number.MAX_SAFE_INTEGER,\n top: Number.MAX_SAFE_INTEGER,\n });\n });\n }\n}\n","import {TuiInputChipComponent} from './input-chip.component';\nimport {TuiInputChipDirective} from './input-chip.directive';\n\nexport const TuiInputChip = [TuiInputChipDirective, TuiInputChipComponent] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2"],"mappings":"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"}
1
+ {"version":3,"file":"taiga-ui-kit-components-input-chip.mjs","sources":["../../../projects/kit/components/input-chip/input-chip.component.ts","../../../projects/kit/components/input-chip/input-chip.template.html","../../../projects/kit/components/input-chip/input-chip.options.ts","../../../projects/kit/components/input-chip/input-chip.directive.ts","../../../projects/kit/components/input-chip/input-chip.ts","../../../projects/kit/components/input-chip/taiga-ui-kit-components-input-chip.ts"],"sourcesContent":["import {NgIf} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n inject,\n Input,\n signal,\n ViewChild,\n} from '@angular/core';\nimport {FormsModule, ReactiveFormsModule} from '@angular/forms';\nimport {TUI_IS_MOBILE} from '@taiga-ui/cdk/tokens';\nimport type {TuiContext} from '@taiga-ui/cdk/types';\nimport {tuiDirectiveBinding, tuiIsString} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TuiButton} from '@taiga-ui/core/components/button';\nimport type {TuiTextfieldItem} from '@taiga-ui/core/components/textfield';\nimport {\n TUI_TEXTFIELD_OPTIONS,\n TuiTextfieldComponent,\n} from '@taiga-ui/core/components/textfield';\nimport {TuiAppearance} from '@taiga-ui/core/directives/appearance';\nimport {TuiHintDirective, TuiHintOverflow} from '@taiga-ui/core/directives/hint';\nimport type {TuiItemsHandlers} from '@taiga-ui/core/directives/items-handlers';\nimport {TUI_ITEMS_HANDLERS} from '@taiga-ui/core/directives/items-handlers';\nimport {TuiChip} from '@taiga-ui/kit/components/chip';\nimport {TuiFade} from '@taiga-ui/kit/directives/fade';\nimport {tuiInjectValue} from '@taiga-ui/kit/utils';\nimport {injectContext} from '@taiga-ui/polymorpheus';\n\n@Component({\n standalone: true,\n selector: 'tui-input-chip',\n imports: [\n FormsModule,\n NgIf,\n ReactiveFormsModule,\n TuiButton,\n TuiChip,\n TuiFade,\n TuiHintOverflow,\n ],\n templateUrl: './input-chip.template.html',\n styleUrls: ['./input-chip.styles.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [TuiChip],\n host: {\n tuiChip: '',\n class: 'tui-interactive',\n '[class._edit]': 'editing()',\n '[attr.tabIndex]': 'disabled() ? null : -1',\n '(click)': 'editing() && $event.stopPropagation()',\n '(keydown.backspace.prevent)': 'delete()',\n '(keydown.enter.prevent)': 'edit()',\n '(dblclick)': 'edit()',\n },\n})\nexport class TuiInputChipComponent<T> {\n @ViewChild(TuiChip, {read: ElementRef})\n private readonly input?: ElementRef<HTMLInputElement>;\n\n private readonly options = inject(TUI_TEXTFIELD_OPTIONS);\n private readonly context = injectContext<TuiContext<TuiTextfieldItem<T>>>();\n private readonly value = tuiInjectValue<readonly T[]>();\n\n protected readonly mobile = inject(TUI_IS_MOBILE);\n protected readonly internal = signal(this.context.$implicit.item);\n protected readonly editing = signal(false);\n protected readonly hint = inject(TuiHintDirective, {self: true, optional: true});\n protected readonly handlers: TuiItemsHandlers<T> = inject(TUI_ITEMS_HANDLERS);\n protected readonly textfield = inject(TuiTextfieldComponent);\n\n protected readonly disabled = tuiDirectiveBinding(\n TuiAppearance,\n 'tuiAppearanceState',\n computed(() =>\n this.handlers.disabledItemHandler()(this.context.$implicit.item)\n ? 'disabled'\n : null,\n ),\n );\n\n protected readonly size = tuiDirectiveBinding(\n TuiChip,\n 'size',\n computed(() => (this.options.size() === 'l' ? 's' : 'xs')),\n );\n\n @Input()\n public editable = true;\n\n protected get index(): number {\n return this.context.$implicit.index;\n }\n\n protected delete(): void {\n this.textfield.cva?.onChange(this.value().filter((_, i) => i !== this.index));\n\n if (!this.mobile) {\n this.textfield.input?.nativeElement.focus({preventScroll: true});\n }\n }\n\n protected save(): void {\n if (!this.internal()) {\n this.delete();\n } else if (this.handlers.disabledItemHandler()(this.internal())) {\n return;\n }\n\n const value = this.value().map((item, index) =>\n index === this.index ? this.internal() : item,\n );\n\n this.textfield.cva?.onChange(value);\n this.editing.set(false);\n this.textfield.input?.nativeElement.focus({preventScroll: true});\n }\n\n protected cancel(): void {\n this.editing.set(false);\n this.internal.set(this.context.$implicit.item);\n }\n\n protected edit(): void {\n if (\n !this.editable ||\n !this.textfield.cva?.interactive() ||\n !tuiIsString(this.internal())\n ) {\n return;\n }\n\n this.editing.set(true);\n setTimeout(() => this.input?.nativeElement.focus());\n }\n}\n","<input\n appearance=\"\"\n enterkeyhint=\"enter\"\n tuiChip\n class=\"t-input\"\n [disabled]=\"!editing()\"\n [ngModel]=\"internal()\"\n [ngModelOptions]=\"{standalone: true}\"\n (blur)=\"cancel()\"\n (keydown.enter)=\"save()\"\n (keydown.esc)=\"cancel()\"\n (keydown.stop)=\"(0)\"\n (ngModelChange)=\"internal.set($event)\"\n/>\n<div\n tuiFade\n tuiFadeOffset=\"0.5rem\"\n class=\"t-text\"\n [tuiHintOverflow]=\"hint?.content() ? null : handlers.stringify()(internal())\"\n (mousedown.prevent.zoneless)=\"(0)\"\n>\n {{ handlers.stringify()(internal()) }}\n</div>\n<button\n *ngIf=\"textfield.cva?.interactive() && !editing() && !disabled()\"\n iconStart=\"@tui.x\"\n tabIndex=\"-1\"\n tuiIconButton\n type=\"button\"\n (click.stop)=\"delete()\"\n (pointerdown.prevent.stop.zoneless)=\"(0)\"\n>\n Remove\n</button>\n","import {tuiCreateOptions} from '@taiga-ui/cdk/utils/di';\n\nexport interface TuiInputChipOptions {\n readonly separator: RegExp | string;\n readonly unique: boolean;\n}\n\nexport const TUI_INPUT_CHIP_DEFAULT_OPTIONS: TuiInputChipOptions = {\n separator: ',',\n unique: true,\n};\n\nexport const [TUI_INPUT_CHIP_OPTIONS, tuiInputChipOptionsProvider] = tuiCreateOptions(\n TUI_INPUT_CHIP_DEFAULT_OPTIONS,\n);\n","import {Directive, inject, Input} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {tuiAsControl, TuiControl} from '@taiga-ui/cdk/classes';\nimport {TuiActiveZone} from '@taiga-ui/cdk/directives/active-zone';\nimport {TuiNativeValidator} from '@taiga-ui/cdk/directives/native-validator';\nimport {TUI_IS_MOBILE, tuiFallbackValueProvider} from '@taiga-ui/cdk/tokens';\nimport {tuiGetClipboardDataText, tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {tuiDirectiveBinding} from '@taiga-ui/cdk/utils/miscellaneous';\nimport type {TuiTextfieldAccessor} from '@taiga-ui/core/components/textfield';\nimport {\n tuiAsTextfieldAccessor,\n TuiTextfieldBase,\n TuiTextfieldMultiComponent,\n} from '@taiga-ui/core/components/textfield';\nimport {\n TuiDropdownDirective,\n TuiDropdownOpen,\n tuiDropdownOpen,\n} from '@taiga-ui/core/directives/dropdown';\nimport type {TuiItemsHandlers} from '@taiga-ui/core/directives/items-handlers';\nimport {TUI_ITEMS_HANDLERS} from '@taiga-ui/core/directives/items-handlers';\nimport {filter} from 'rxjs';\n\nimport {TUI_INPUT_CHIP_OPTIONS} from './input-chip.options';\n\n@Directive({\n standalone: true,\n selector: 'input[tuiInputChip]',\n providers: [\n tuiAsControl(TuiInputChipDirective),\n tuiFallbackValueProvider([]),\n tuiAsTextfieldAccessor(TuiInputChipDirective),\n ],\n hostDirectives: [\n TuiNativeValidator,\n {\n directive: TuiTextfieldBase,\n inputs: ['invalid', 'focused', 'readOnly', 'state'],\n },\n ],\n host: {\n enterkeyhint: 'enter',\n '[disabled]': 'disabled()',\n '(keydown.enter.prevent)': 'onEnter()',\n '(keydown.zoneless)': 'onBackspace($event.key)',\n '(input)': 'onInput()',\n '(paste.prevent)': 'onPaste($event)',\n '(drop.prevent)': 'onPaste($event)',\n },\n})\nexport class TuiInputChipDirective<T>\n extends TuiControl<T[]>\n implements TuiTextfieldAccessor<T[]>\n{\n private readonly options = inject(TUI_INPUT_CHIP_OPTIONS);\n private readonly mobile = inject(TUI_IS_MOBILE);\n private readonly dropdown = inject(TuiDropdownDirective);\n\n protected readonly textfield = inject(TuiTextfieldMultiComponent);\n protected readonly open = tuiDropdownOpen();\n protected readonly handlers: TuiItemsHandlers<T> = inject(TUI_ITEMS_HANDLERS);\n protected readonly enabled = tuiDirectiveBinding(\n TuiDropdownOpen,\n 'tuiDropdownEnabled',\n this.interactive,\n {},\n );\n\n protected readonly sub = inject(TuiActiveZone)\n .tuiActiveZoneChange.pipe(\n filter((active) => !active && !this.el.matches('select')),\n takeUntilDestroyed(),\n )\n .subscribe(() => {\n this.onEnter();\n this.textfield.value.set('');\n });\n\n @Input()\n public separator = this.options.separator;\n\n @Input()\n public unique = this.options.unique;\n\n public readonly el = tuiInjectElement<HTMLInputElement>();\n\n public setValue(value: T[]): void {\n this.textfield.value.set('');\n this.onChange(\n this.unique ? Array.from(new Set(value.reverse())).reverse() : value,\n );\n }\n\n protected onEnter(): void {\n const value = this.textfield.value().trim();\n const items: any[] = this.separator ? value.split(this.separator) : [value];\n const valid = items.filter(\n (item) => item && !this.handlers.disabledItemHandler()(item),\n );\n\n if (!value || !valid.length) {\n return;\n }\n\n this.setValue([...this.value(), ...valid]);\n this.scrollTo();\n }\n\n protected onInput(): void {\n this.open.set(!!this.dropdown.content);\n\n if (this.separator && this.textfield.value().match(this.separator)) {\n this.onEnter();\n } else {\n this.scrollTo();\n }\n }\n\n protected onPaste(event: ClipboardEvent | DragEvent): void {\n const value =\n 'dataTransfer' in event\n ? event.dataTransfer?.getData('text/plain') || ''\n : tuiGetClipboardDataText(event);\n\n this.textfield.value.set(value);\n this.onEnter();\n }\n\n protected onBackspace(key: string): void {\n // (keydown.backspace) doesn't emit event on empty input in ios safari\n if (\n key === 'Backspace' &&\n !this.textfield.value() &&\n this.interactive() &&\n (this.mobile || !this.textfield.item)\n ) {\n this.onChange(this.value().slice(0, -1));\n }\n }\n\n protected scrollTo(): void {\n const sign = this.textfield.el.matches('[dir=\"rtl\"] :scope') ? -1 : 1;\n\n // Allow change detection to run and add new tag to DOM\n setTimeout(() => {\n this.textfield.el.scrollTo({\n left: sign * Number.MAX_SAFE_INTEGER,\n top: Number.MAX_SAFE_INTEGER,\n });\n });\n }\n}\n","import {TuiInputChipComponent} from './input-chip.component';\nimport {TuiInputChipDirective} from './input-chip.directive';\n\nexport const TuiInputChip = [TuiInputChipDirective, TuiInputChipComponent] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2"],"mappings":"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"}
@@ -0,0 +1,141 @@
1
+ import { TuiCalendar } from '@taiga-ui/core/components/calendar';
2
+ import { TuiInputChipDirective, TuiInputChipComponent } from '@taiga-ui/kit/components/input-chip';
3
+ import * as i0 from '@angular/core';
4
+ import { inject, computed, effect, signal, Directive, Input } from '@angular/core';
5
+ import { toSignal } from '@angular/core/rxjs-interop';
6
+ import * as i3 from '@maskito/angular';
7
+ import { MaskitoDirective } from '@maskito/angular';
8
+ import { maskitoDateOptionsGenerator } from '@maskito/kit';
9
+ import { tuiAsControl } from '@taiga-ui/cdk/classes';
10
+ import { TUI_ALLOW_SIGNAL_WRITES } from '@taiga-ui/cdk/constants';
11
+ import { TuiMonth, DATE_FILLER_LENGTH, TuiDay } from '@taiga-ui/cdk/date-time';
12
+ import * as i1 from '@taiga-ui/cdk/directives/native-validator';
13
+ import { TuiNativeValidator } from '@taiga-ui/cdk/directives/native-validator';
14
+ import { tuiFallbackValueProvider } from '@taiga-ui/cdk/tokens';
15
+ import * as i4 from '@taiga-ui/core/components/textfield';
16
+ import { tuiTextfieldIconBinding, tuiInjectAuxiliary, tuiAsTextfieldAccessor, TuiTextfieldBase } from '@taiga-ui/core/components/textfield';
17
+ import * as i2 from '@taiga-ui/core/directives/dropdown';
18
+ import { TuiDropdownAuto } from '@taiga-ui/core/directives/dropdown';
19
+ import { TUI_DATE_FORMAT, TUI_DEFAULT_DATE_FORMAT } from '@taiga-ui/core/tokens';
20
+ import { TUI_INPUT_DATE_OPTIONS_NEW, TUI_DATE_ADAPTER } from '@taiga-ui/kit/components/input-date';
21
+ import { tuiMaskito } from '@taiga-ui/kit/utils';
22
+
23
+ class TuiInputDateMultiDirective extends TuiInputChipDirective {
24
+ constructor() {
25
+ super(...arguments);
26
+ this.dateOptions = inject(TUI_INPUT_DATE_OPTIONS_NEW);
27
+ this.icon = tuiTextfieldIconBinding(TUI_INPUT_DATE_OPTIONS_NEW);
28
+ this.stringify = this.handlers.stringify.set((item) => item.toString(this.format().mode, this.format().separator));
29
+ this.mask = tuiMaskito(computed(() => maskitoDateOptionsGenerator({
30
+ separator: this.format().separator,
31
+ mode: TUI_DATE_ADAPTER[this.format().mode],
32
+ min: this.min().toLocalNativeDate(),
33
+ max: this.max().toLocalNativeDate(),
34
+ })));
35
+ this.format = toSignal(inject(TUI_DATE_FORMAT), {
36
+ initialValue: TUI_DEFAULT_DATE_FORMAT,
37
+ });
38
+ this.calendarIn = effect(() => {
39
+ if (this.calendar()) {
40
+ this.processCalendar(this.calendar());
41
+ }
42
+ }, TUI_ALLOW_SIGNAL_WRITES);
43
+ this.calendarOut = effect((onCleanup) => {
44
+ const subscription = this.calendar()?.dayClick.subscribe((day) => {
45
+ this.updateValue(day);
46
+ });
47
+ onCleanup(() => subscription?.unsubscribe());
48
+ });
49
+ this.min = signal(this.dateOptions.min);
50
+ this.max = signal(this.dateOptions.max);
51
+ this.calendar = tuiInjectAuxiliary((x) => x instanceof TuiCalendar);
52
+ }
53
+ set minSetter(min) {
54
+ this.min.set(min || this.dateOptions.min);
55
+ }
56
+ set maxSetter(max) {
57
+ this.max.set(max || this.dateOptions.max);
58
+ }
59
+ clear() {
60
+ this.onChange([]);
61
+ this.open.set(this.interactive());
62
+ }
63
+ processCalendar(calendar) {
64
+ calendar.value = this.value();
65
+ calendar.min = this.min();
66
+ calendar.max = this.max();
67
+ calendar.month =
68
+ this.value()?.[this.value().length - 1] ?? TuiMonth.currentLocal();
69
+ }
70
+ onClick() {
71
+ this.open.update((open) => !open);
72
+ }
73
+ onValueChange(value) {
74
+ const newValue = value.length === DATE_FILLER_LENGTH
75
+ ? TuiDay.normalizeParse(value, this.format().mode)
76
+ : null;
77
+ if (newValue && !this.handlers.disabledItemHandler()(newValue)) {
78
+ this.updateValue(newValue);
79
+ }
80
+ }
81
+ onEnter() {
82
+ this.onValueChange(this.textfield.value().trim());
83
+ this.scrollTo();
84
+ }
85
+ updateValue(day) {
86
+ const exist = this.value().find((x) => x.daySame(day));
87
+ const newValue = exist
88
+ ? this.value().filter((x) => !x.daySame(day))
89
+ : this.value().concat(day);
90
+ this.setValue(newValue);
91
+ }
92
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiInputDateMultiDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
93
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: TuiInputDateMultiDirective, isStandalone: true, selector: "input[tuiInputDateMulti]", inputs: { minSetter: ["min", "minSetter"], maxSetter: ["max", "maxSetter"] }, host: { listeners: { "keydown.enter.prevent": "0" } }, providers: [
94
+ tuiAsControl(TuiInputDateMultiDirective),
95
+ tuiFallbackValueProvider([]),
96
+ tuiAsTextfieldAccessor(TuiInputDateMultiDirective),
97
+ ], usesInheritance: true, hostDirectives: [{ directive: i1.TuiNativeValidator }, { directive: i2.TuiDropdownAuto }, { directive: i3.MaskitoDirective }, { directive: i4.TuiTextfieldBase, inputs: ["invalid", "invalid", "focused", "focused", "readOnly", "readOnly", "state", "state"] }], ngImport: i0 }); }
98
+ }
99
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiInputDateMultiDirective, decorators: [{
100
+ type: Directive,
101
+ args: [{
102
+ standalone: true,
103
+ selector: 'input[tuiInputDateMulti]',
104
+ providers: [
105
+ tuiAsControl(TuiInputDateMultiDirective),
106
+ tuiFallbackValueProvider([]),
107
+ tuiAsTextfieldAccessor(TuiInputDateMultiDirective),
108
+ ],
109
+ hostDirectives: [
110
+ TuiNativeValidator,
111
+ TuiDropdownAuto,
112
+ MaskitoDirective,
113
+ {
114
+ directive: TuiTextfieldBase,
115
+ inputs: ['invalid', 'focused', 'readOnly', 'state'],
116
+ },
117
+ ],
118
+ host: {
119
+ '(keydown.enter.prevent)': '0',
120
+ },
121
+ }]
122
+ }], propDecorators: { minSetter: [{
123
+ type: Input,
124
+ args: ['min']
125
+ }], maxSetter: [{
126
+ type: Input,
127
+ args: ['max']
128
+ }] } });
129
+
130
+ const TuiInputDateMulti = [
131
+ TuiInputDateMultiDirective,
132
+ TuiCalendar,
133
+ TuiInputChipComponent,
134
+ ];
135
+
136
+ /**
137
+ * Generated bundle index. Do not edit.
138
+ */
139
+
140
+ export { TuiInputDateMulti, TuiInputDateMultiDirective };
141
+ //# sourceMappingURL=taiga-ui-kit-components-input-date-multi.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"taiga-ui-kit-components-input-date-multi.mjs","sources":["../../../projects/kit/components/input-date-multi/input-date-multi.directive.ts","../../../projects/kit/components/input-date-multi/input-date-multi.ts","../../../projects/kit/components/input-date-multi/taiga-ui-kit-components-input-date-multi.ts"],"sourcesContent":["import {computed, Directive, effect, inject, Input, signal} from '@angular/core';\nimport {toSignal} from '@angular/core/rxjs-interop';\nimport {MaskitoDirective} from '@maskito/angular';\nimport {maskitoDateOptionsGenerator} from '@maskito/kit';\nimport {tuiAsControl} from '@taiga-ui/cdk/classes';\nimport {TUI_ALLOW_SIGNAL_WRITES} from '@taiga-ui/cdk/constants';\nimport {DATE_FILLER_LENGTH, TuiDay, TuiMonth} from '@taiga-ui/cdk/date-time';\nimport {TuiNativeValidator} from '@taiga-ui/cdk/directives/native-validator';\nimport {tuiFallbackValueProvider} from '@taiga-ui/cdk/tokens';\nimport {TuiCalendar} from '@taiga-ui/core/components/calendar';\nimport {\n tuiAsTextfieldAccessor,\n tuiInjectAuxiliary,\n TuiTextfieldBase,\n tuiTextfieldIconBinding,\n} from '@taiga-ui/core/components/textfield';\nimport {TuiDropdownAuto} from '@taiga-ui/core/directives/dropdown';\nimport {TUI_DATE_FORMAT, TUI_DEFAULT_DATE_FORMAT} from '@taiga-ui/core/tokens';\nimport {TuiInputChipDirective} from '@taiga-ui/kit/components/input-chip';\nimport {\n TUI_DATE_ADAPTER,\n TUI_INPUT_DATE_OPTIONS_NEW,\n} from '@taiga-ui/kit/components/input-date';\nimport {tuiMaskito} from '@taiga-ui/kit/utils';\n\n@Directive({\n standalone: true,\n selector: 'input[tuiInputDateMulti]',\n providers: [\n tuiAsControl(TuiInputDateMultiDirective),\n tuiFallbackValueProvider([]),\n tuiAsTextfieldAccessor(TuiInputDateMultiDirective),\n ],\n hostDirectives: [\n TuiNativeValidator,\n TuiDropdownAuto,\n MaskitoDirective,\n {\n directive: TuiTextfieldBase,\n inputs: ['invalid', 'focused', 'readOnly', 'state'],\n },\n ],\n host: {\n '(keydown.enter.prevent)': '0',\n },\n})\nexport class TuiInputDateMultiDirective extends TuiInputChipDirective<TuiDay> {\n private readonly dateOptions = inject(TUI_INPUT_DATE_OPTIONS_NEW);\n\n protected readonly icon = tuiTextfieldIconBinding(TUI_INPUT_DATE_OPTIONS_NEW);\n protected readonly stringify = this.handlers.stringify.set((item) =>\n item.toString(this.format().mode, this.format().separator),\n );\n\n protected readonly mask = tuiMaskito(\n computed(() =>\n maskitoDateOptionsGenerator({\n separator: this.format().separator,\n mode: TUI_DATE_ADAPTER[this.format().mode],\n min: this.min().toLocalNativeDate(),\n max: this.max().toLocalNativeDate(),\n }),\n ),\n );\n\n protected readonly format = toSignal(inject(TUI_DATE_FORMAT), {\n initialValue: TUI_DEFAULT_DATE_FORMAT,\n });\n\n protected readonly calendarIn = effect(() => {\n if (this.calendar()) {\n this.processCalendar(this.calendar()!);\n }\n }, TUI_ALLOW_SIGNAL_WRITES);\n\n protected readonly calendarOut = effect((onCleanup) => {\n const subscription = this.calendar()?.dayClick.subscribe((day) => {\n this.updateValue(day);\n });\n\n onCleanup(() => subscription?.unsubscribe());\n });\n\n public readonly min = signal(this.dateOptions.min);\n public readonly max = signal(this.dateOptions.max);\n\n public readonly calendar = tuiInjectAuxiliary<TuiCalendar>(\n (x) => x instanceof TuiCalendar,\n );\n\n @Input('min')\n public set minSetter(min: TuiDay | null) {\n this.min.set(min || this.dateOptions.min);\n }\n\n @Input('max')\n public set maxSetter(max: TuiDay | null) {\n this.max.set(max || this.dateOptions.max);\n }\n\n protected clear(): void {\n this.onChange([]);\n this.open.set(this.interactive());\n }\n\n protected processCalendar(calendar: TuiCalendar): void {\n calendar.value = this.value();\n calendar.min = this.min();\n calendar.max = this.max();\n calendar.month =\n this.value()?.[this.value().length - 1] ?? TuiMonth.currentLocal();\n }\n\n protected onClick(): void {\n this.open.update((open) => !open);\n }\n\n protected onValueChange(value: string): void {\n const newValue =\n value.length === DATE_FILLER_LENGTH\n ? TuiDay.normalizeParse(value, this.format().mode)\n : null;\n\n if (newValue && !this.handlers.disabledItemHandler()(newValue)) {\n this.updateValue(newValue);\n }\n }\n\n protected override onEnter(): void {\n this.onValueChange(this.textfield.value().trim());\n this.scrollTo();\n }\n\n private updateValue(day: TuiDay): void {\n const exist = this.value().find((x) => x.daySame(day));\n const newValue = exist\n ? this.value().filter((x) => !x.daySame(day))\n : this.value().concat(day);\n\n this.setValue(newValue);\n }\n}\n","import {TuiCalendar} from '@taiga-ui/core/components/calendar';\nimport {TuiInputChipComponent} from '@taiga-ui/kit/components/input-chip';\n\nimport {TuiInputDateMultiDirective} from './input-date-multi.directive';\n\nexport const TuiInputDateMulti = [\n TuiInputDateMultiDirective,\n TuiCalendar,\n TuiInputChipComponent,\n];\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -6,13 +6,13 @@ import { MaskitoDirective } from '@maskito/angular';
6
6
  import { maskitoDateRangeOptionsGenerator } from '@maskito/kit';
7
7
  import { TUI_IDENTITY_VALUE_TRANSFORMER, tuiAsControl, tuiValueTransformerFrom } from '@taiga-ui/cdk/classes';
8
8
  import { RANGE_SEPARATOR_CHAR, DATE_RANGE_FILLER_LENGTH, TuiDayRange } from '@taiga-ui/cdk/date-time';
9
- import { tuiProvideOptions, tuiDirectiveBinding, tuiProvide } from '@taiga-ui/cdk/utils/miscellaneous';
9
+ import { tuiProvideOptions, tuiProvide } from '@taiga-ui/cdk/utils/miscellaneous';
10
10
  import * as i1 from '@taiga-ui/core/components/textfield';
11
- import { TuiTextfieldComponent, TuiWithTextfield } from '@taiga-ui/core/components/textfield';
11
+ import { TuiWithTextfield } from '@taiga-ui/core/components/textfield';
12
12
  import * as i2 from '@taiga-ui/core/directives/dropdown';
13
13
  import { TuiDropdownAuto } from '@taiga-ui/core/directives/dropdown';
14
14
  import { TUI_ITEMS_HANDLERS } from '@taiga-ui/core/directives/items-handlers';
15
- import { TUI_INPUT_DATE_OPTIONS_NEW, TUI_INPUT_DATE_DEFAULT_OPTIONS_NEW, TuiInputDateBase, TUI_DATE_ADAPTER } from '@taiga-ui/kit/components/input-date';
15
+ import { TUI_INPUT_DATE_OPTIONS_NEW, TUI_INPUT_DATE_DEFAULT_OPTIONS_NEW, TuiInputDateBase, tuiWithDateFiller, TUI_DATE_ADAPTER } from '@taiga-ui/kit/components/input-date';
16
16
  import { tuiMaskito } from '@taiga-ui/kit/utils';
17
17
 
18
18
  const TUI_INPUT_DATE_RANGE_OPTIONS = new InjectionToken(ngDevMode ? 'TUI_INPUT_DATE_RANGE_OPTIONS' : '', {
@@ -27,7 +27,7 @@ class TuiInputDateRangeDirective extends TuiInputDateBase {
27
27
  constructor() {
28
28
  super(...arguments);
29
29
  this.identity = inject(TUI_ITEMS_HANDLERS).identityMatcher.set((a, b) => a.daySame(b));
30
- this.rangeFiller = tuiDirectiveBinding(TuiTextfieldComponent, 'fillerSetter', computed((filler = this.filler()) => `${filler}${RANGE_SEPARATOR_CHAR}${filler}`), {});
30
+ this.filler = tuiWithDateFiller((filler) => `${filler}${RANGE_SEPARATOR_CHAR}${filler}`);
31
31
  this.mask = tuiMaskito(computed(() => maskitoDateRangeOptionsGenerator({
32
32
  dateSeparator: this.format().separator,
33
33
  mode: TUI_DATE_ADAPTER[this.format().mode],
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-kit-components-input-date-range.mjs","sources":["../../../projects/kit/components/input-date-range/input-date-range.options.ts","../../../projects/kit/components/input-date-range/input-date-range.directive.ts","../../../projects/kit/components/input-date-range/input-date-range.ts","../../../projects/kit/components/input-date-range/taiga-ui-kit-components-input-date-range.ts"],"sourcesContent":["import type {FactoryProvider} from '@angular/core';\nimport {inject, InjectionToken} from '@angular/core';\nimport type {TuiValueTransformer} from '@taiga-ui/cdk/classes';\nimport {TUI_IDENTITY_VALUE_TRANSFORMER} from '@taiga-ui/cdk/classes';\nimport type {TuiDayRange} from '@taiga-ui/cdk/date-time';\nimport {tuiProvideOptions} from '@taiga-ui/cdk/utils/miscellaneous';\nimport type {TuiInputDateOptionsNew} from '@taiga-ui/kit/components/input-date';\nimport {\n TUI_INPUT_DATE_DEFAULT_OPTIONS_NEW,\n TUI_INPUT_DATE_OPTIONS_NEW,\n} from '@taiga-ui/kit/components/input-date';\n\nexport interface TuiInputDateRangeOptions\n extends Omit<TuiInputDateOptionsNew, 'valueTransformer'> {\n readonly valueTransformer: TuiValueTransformer<TuiDayRange | null, any>;\n}\n\nexport const TUI_INPUT_DATE_RANGE_OPTIONS = new InjectionToken<TuiInputDateRangeOptions>(\n ngDevMode ? 'TUI_INPUT_DATE_RANGE_OPTIONS' : '',\n {\n factory: () => ({\n ...inject(TUI_INPUT_DATE_OPTIONS_NEW),\n valueTransformer: TUI_IDENTITY_VALUE_TRANSFORMER,\n }),\n },\n);\n\nexport const tuiInputDateRangeOptionsProvider = (\n options: Partial<TuiInputDateRangeOptions>,\n): FactoryProvider =>\n tuiProvideOptions(\n TUI_INPUT_DATE_RANGE_OPTIONS,\n options,\n TUI_INPUT_DATE_DEFAULT_OPTIONS_NEW,\n );\n","import {computed, Directive, inject, Input, signal} from '@angular/core';\nimport {MaskitoDirective} from '@maskito/angular';\nimport {maskitoDateRangeOptionsGenerator} from '@maskito/kit';\nimport {tuiAsControl, tuiValueTransformerFrom} from '@taiga-ui/cdk/classes';\nimport type {TuiDayLike} from '@taiga-ui/cdk/date-time';\nimport {\n DATE_RANGE_FILLER_LENGTH,\n RANGE_SEPARATOR_CHAR,\n TuiDayRange,\n} from '@taiga-ui/cdk/date-time';\nimport {tuiDirectiveBinding, tuiProvide} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {\n TuiTextfieldComponent,\n TuiWithTextfield,\n} from '@taiga-ui/core/components/textfield';\nimport {TuiDropdownAuto} from '@taiga-ui/core/directives/dropdown';\nimport type {TuiItemsHandlers} from '@taiga-ui/core/directives/items-handlers';\nimport {TUI_ITEMS_HANDLERS} from '@taiga-ui/core/directives/items-handlers';\nimport type {TuiCalendarRange} from '@taiga-ui/kit/components/calendar-range';\nimport {\n TUI_DATE_ADAPTER,\n TUI_INPUT_DATE_OPTIONS_NEW,\n TuiInputDateBase,\n} from '@taiga-ui/kit/components/input-date';\nimport {tuiMaskito} from '@taiga-ui/kit/utils';\n\nimport {TUI_INPUT_DATE_RANGE_OPTIONS} from './input-date-range.options';\n\n@Directive({\n standalone: true,\n selector: 'input[tuiInputDateRange]',\n providers: [\n // TODO: Add SelectOption after data-list in calendar-range is refactored\n tuiAsControl(TuiInputDateRangeDirective),\n tuiValueTransformerFrom(TUI_INPUT_DATE_RANGE_OPTIONS),\n tuiProvide(TUI_INPUT_DATE_OPTIONS_NEW, TUI_INPUT_DATE_RANGE_OPTIONS),\n ],\n hostDirectives: [TuiWithTextfield, TuiDropdownAuto, MaskitoDirective],\n})\nexport class TuiInputDateRangeDirective extends TuiInputDateBase<TuiDayRange> {\n protected readonly identity = inject<TuiItemsHandlers<TuiDayRange>>(\n TUI_ITEMS_HANDLERS,\n ).identityMatcher.set((a, b) => a.daySame(b));\n\n protected readonly rangeFiller = tuiDirectiveBinding(\n TuiTextfieldComponent,\n 'fillerSetter',\n computed((filler = this.filler()) => `${filler}${RANGE_SEPARATOR_CHAR}${filler}`),\n {},\n );\n\n protected override readonly mask = tuiMaskito(\n computed(() =>\n maskitoDateRangeOptionsGenerator({\n dateSeparator: this.format().separator,\n mode: TUI_DATE_ADAPTER[this.format().mode],\n min: this.min().toLocalNativeDate(),\n max: this.max().toLocalNativeDate(),\n minLength: this.minLength() || {},\n maxLength: this.maxLength() || {},\n }),\n ),\n );\n\n public readonly minLength = signal<TuiDayLike | null>(null);\n public readonly maxLength = signal<TuiDayLike | null>(null);\n\n @Input('minLength')\n public set minLengthSetter(minLength: TuiDayLike | null) {\n this.minLength.set(minLength);\n }\n\n @Input('maxLength')\n public set maxLengthSetter(maxLength: TuiDayLike | null) {\n this.maxLength.set(maxLength);\n }\n\n protected override processCalendar(calendar: TuiCalendarRange): void {\n super.processCalendar(calendar);\n\n calendar.minLength = this.minLength();\n calendar.maxLength = this.maxLength();\n }\n\n protected override onValueChange(value: string): void {\n this.control?.control?.updateValueAndValidity({emitEvent: false});\n this.onChange(\n value.length === DATE_RANGE_FILLER_LENGTH\n ? TuiDayRange.normalizeParse(value, this.format().mode)\n : null,\n );\n }\n}\n","import {TuiCalendarRange} from '@taiga-ui/kit/components/calendar-range';\n\nimport {TuiInputDateRangeDirective} from './input-date-range.directive';\n\nexport const TuiInputDateRange = [TuiInputDateRangeDirective, TuiCalendarRange] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAiBa,MAAA,4BAA4B,GAAG,IAAI,cAAc,CAC1D,SAAS,GAAG,8BAA8B,GAAG,EAAE,EAC/C;AACI,IAAA,OAAO,EAAE,OAAO;QACZ,GAAG,MAAM,CAAC,0BAA0B,CAAC;AACrC,QAAA,gBAAgB,EAAE,8BAA8B;KACnD,CAAC;AACL,CAAA,EACH;AAEW,MAAA,gCAAgC,GAAG,CAC5C,OAA0C,KAE1C,iBAAiB,CACb,4BAA4B,EAC5B,OAAO,EACP,kCAAkC;;ACL1C,MAWa,0BAA2B,SAAQ,gBAA6B,CAAA;AAX7E,IAAA,WAAA,GAAA;;QAYuB,IAAQ,CAAA,QAAA,GAAG,MAAM,CAChC,kBAAkB,CACrB,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAE3B,QAAA,IAAA,CAAA,WAAW,GAAG,mBAAmB,CAChD,qBAAqB,EACrB,cAAc,EACd,QAAQ,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,CAAG,EAAA,MAAM,CAAG,EAAA,oBAAoB,CAAG,EAAA,MAAM,CAAE,CAAA,CAAC,EACjF,EAAE,CACL,CAAC;QAE0B,IAAI,CAAA,IAAA,GAAG,UAAU,CACzC,QAAQ,CAAC,MACL,gCAAgC,CAAC;AAC7B,YAAA,aAAa,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,SAAS;YACtC,IAAI,EAAE,gBAAgB,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC;AAC1C,YAAA,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,iBAAiB,EAAE;AACnC,YAAA,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,iBAAiB,EAAE;AACnC,YAAA,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE;AACjC,YAAA,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE;SACpC,CAAC,CACL,CACJ,CAAC;AAEc,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAoB,IAAI,CAAC,CAAC;AAC5C,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAoB,IAAI,CAAC,CAAC;AA2B/D,KAAA;IAzBG,IACW,eAAe,CAAC,SAA4B,EAAA;AACnD,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;KACjC;IAED,IACW,eAAe,CAAC,SAA4B,EAAA;AACnD,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;KACjC;AAEkB,IAAA,eAAe,CAAC,QAA0B,EAAA;AACzD,QAAA,KAAK,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;AAEhC,QAAA,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;AACtC,QAAA,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;KACzC;AAEkB,IAAA,aAAa,CAAC,KAAa,EAAA;AAC1C,QAAA,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,sBAAsB,CAAC,EAAC,SAAS,EAAE,KAAK,EAAC,CAAC,CAAC;AAClE,QAAA,IAAI,CAAC,QAAQ,CACT,KAAK,CAAC,MAAM,KAAK,wBAAwB;AACrC,cAAE,WAAW,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC;cACrD,IAAI,CACb,CAAC;KACL;+GApDQ,0BAA0B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,0BAA0B,EARxB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,EAAA,eAAA,EAAA,CAAA,WAAA,EAAA,iBAAA,CAAA,EAAA,eAAA,EAAA,CAAA,WAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,SAAA,EAAA;;YAEP,YAAY,CAAC,0BAA0B,CAAC;YACxC,uBAAuB,CAAC,4BAA4B,CAAC;AACrD,YAAA,UAAU,CAAC,0BAA0B,EAAE,4BAA4B,CAAC;AACvE,SAAA,EAAA,eAAA,EAAA,IAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,SAAA,EAAA,EAAA,CAAA,eAAA,EAAA,EAAA,EAAA,SAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;4FAGQ,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAXtC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,0BAA0B;AACpC,oBAAA,SAAS,EAAE;;AAEP,wBAAA,YAAY,CAA4B,0BAAA,CAAA;wBACxC,uBAAuB,CAAC,4BAA4B,CAAC;AACrD,wBAAA,UAAU,CAAC,0BAA0B,EAAE,4BAA4B,CAAC;AACvE,qBAAA;AACD,oBAAA,cAAc,EAAE,CAAC,gBAAgB,EAAE,eAAe,EAAE,gBAAgB,CAAC;AACxE,iBAAA,CAAA;8BA8Bc,eAAe,EAAA,CAAA;sBADzB,KAAK;uBAAC,WAAW,CAAA;gBAMP,eAAe,EAAA,CAAA;sBADzB,KAAK;uBAAC,WAAW,CAAA;;;MCpET,iBAAiB,GAAG,CAAC,0BAA0B,EAAE,gBAAgB;;ACJ9E;;AAEG;;;;"}
1
+ {"version":3,"file":"taiga-ui-kit-components-input-date-range.mjs","sources":["../../../projects/kit/components/input-date-range/input-date-range.options.ts","../../../projects/kit/components/input-date-range/input-date-range.directive.ts","../../../projects/kit/components/input-date-range/input-date-range.ts","../../../projects/kit/components/input-date-range/taiga-ui-kit-components-input-date-range.ts"],"sourcesContent":["import type {FactoryProvider} from '@angular/core';\nimport {inject, InjectionToken} from '@angular/core';\nimport type {TuiValueTransformer} from '@taiga-ui/cdk/classes';\nimport {TUI_IDENTITY_VALUE_TRANSFORMER} from '@taiga-ui/cdk/classes';\nimport type {TuiDayRange} from '@taiga-ui/cdk/date-time';\nimport {tuiProvideOptions} from '@taiga-ui/cdk/utils/miscellaneous';\nimport type {TuiInputDateOptionsNew} from '@taiga-ui/kit/components/input-date';\nimport {\n TUI_INPUT_DATE_DEFAULT_OPTIONS_NEW,\n TUI_INPUT_DATE_OPTIONS_NEW,\n} from '@taiga-ui/kit/components/input-date';\n\nexport interface TuiInputDateRangeOptions\n extends Omit<TuiInputDateOptionsNew, 'valueTransformer'> {\n readonly valueTransformer: TuiValueTransformer<TuiDayRange | null, any>;\n}\n\nexport const TUI_INPUT_DATE_RANGE_OPTIONS = new InjectionToken<TuiInputDateRangeOptions>(\n ngDevMode ? 'TUI_INPUT_DATE_RANGE_OPTIONS' : '',\n {\n factory: () => ({\n ...inject(TUI_INPUT_DATE_OPTIONS_NEW),\n valueTransformer: TUI_IDENTITY_VALUE_TRANSFORMER,\n }),\n },\n);\n\nexport const tuiInputDateRangeOptionsProvider = (\n options: Partial<TuiInputDateRangeOptions>,\n): FactoryProvider =>\n tuiProvideOptions(\n TUI_INPUT_DATE_RANGE_OPTIONS,\n options,\n TUI_INPUT_DATE_DEFAULT_OPTIONS_NEW,\n );\n","import {computed, Directive, inject, Input, signal} from '@angular/core';\nimport {MaskitoDirective} from '@maskito/angular';\nimport {maskitoDateRangeOptionsGenerator} from '@maskito/kit';\nimport {tuiAsControl, tuiValueTransformerFrom} from '@taiga-ui/cdk/classes';\nimport type {TuiDayLike} from '@taiga-ui/cdk/date-time';\nimport {\n DATE_RANGE_FILLER_LENGTH,\n RANGE_SEPARATOR_CHAR,\n TuiDayRange,\n} from '@taiga-ui/cdk/date-time';\nimport {tuiProvide} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TuiWithTextfield} from '@taiga-ui/core/components/textfield';\nimport {TuiDropdownAuto} from '@taiga-ui/core/directives/dropdown';\nimport type {TuiItemsHandlers} from '@taiga-ui/core/directives/items-handlers';\nimport {TUI_ITEMS_HANDLERS} from '@taiga-ui/core/directives/items-handlers';\nimport type {TuiCalendarRange} from '@taiga-ui/kit/components/calendar-range';\nimport {\n TUI_DATE_ADAPTER,\n TUI_INPUT_DATE_OPTIONS_NEW,\n TuiInputDateBase,\n tuiWithDateFiller,\n} from '@taiga-ui/kit/components/input-date';\nimport {tuiMaskito} from '@taiga-ui/kit/utils';\n\nimport {TUI_INPUT_DATE_RANGE_OPTIONS} from './input-date-range.options';\n\n@Directive({\n standalone: true,\n selector: 'input[tuiInputDateRange]',\n providers: [\n // TODO: Add SelectOption after data-list in calendar-range is refactored\n tuiAsControl(TuiInputDateRangeDirective),\n tuiValueTransformerFrom(TUI_INPUT_DATE_RANGE_OPTIONS),\n tuiProvide(TUI_INPUT_DATE_OPTIONS_NEW, TUI_INPUT_DATE_RANGE_OPTIONS),\n ],\n hostDirectives: [TuiWithTextfield, TuiDropdownAuto, MaskitoDirective],\n})\nexport class TuiInputDateRangeDirective extends TuiInputDateBase<TuiDayRange> {\n protected readonly identity = inject<TuiItemsHandlers<TuiDayRange>>(\n TUI_ITEMS_HANDLERS,\n ).identityMatcher.set((a, b) => a.daySame(b));\n\n protected override readonly filler = tuiWithDateFiller(\n (filler) => `${filler}${RANGE_SEPARATOR_CHAR}${filler}`,\n );\n\n protected readonly mask = tuiMaskito(\n computed(() =>\n maskitoDateRangeOptionsGenerator({\n dateSeparator: this.format().separator,\n mode: TUI_DATE_ADAPTER[this.format().mode],\n min: this.min().toLocalNativeDate(),\n max: this.max().toLocalNativeDate(),\n minLength: this.minLength() || {},\n maxLength: this.maxLength() || {},\n }),\n ),\n );\n\n public readonly minLength = signal<TuiDayLike | null>(null);\n public readonly maxLength = signal<TuiDayLike | null>(null);\n\n @Input('minLength')\n public set minLengthSetter(minLength: TuiDayLike | null) {\n this.minLength.set(minLength);\n }\n\n @Input('maxLength')\n public set maxLengthSetter(maxLength: TuiDayLike | null) {\n this.maxLength.set(maxLength);\n }\n\n protected override processCalendar(calendar: TuiCalendarRange): void {\n super.processCalendar(calendar);\n\n calendar.minLength = this.minLength();\n calendar.maxLength = this.maxLength();\n }\n\n protected override onValueChange(value: string): void {\n this.control?.control?.updateValueAndValidity({emitEvent: false});\n this.onChange(\n value.length === DATE_RANGE_FILLER_LENGTH\n ? TuiDayRange.normalizeParse(value, this.format().mode)\n : null,\n );\n }\n}\n","import {TuiCalendarRange} from '@taiga-ui/kit/components/calendar-range';\n\nimport {TuiInputDateRangeDirective} from './input-date-range.directive';\n\nexport const TuiInputDateRange = [TuiInputDateRangeDirective, TuiCalendarRange] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}