@taiga-ui/core 4.3.0 → 4.4.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 (49) hide show
  1. package/components/icon/icon.component.d.ts +5 -4
  2. package/components/scrollbar/scrollbar.component.d.ts +2 -1
  3. package/components/textfield/textfield.component.d.ts +1 -0
  4. package/esm2022/components/calendar/calendar-sheet.component.mjs +3 -3
  5. package/esm2022/components/icon/icon.component.mjs +17 -23
  6. package/esm2022/components/notification/notification.options.mjs +2 -2
  7. package/esm2022/components/root/root.component.mjs +1 -1
  8. package/esm2022/components/scrollbar/scrollbar.component.mjs +12 -11
  9. package/esm2022/components/scrollbar/scrollbar.directive.mjs +7 -5
  10. package/esm2022/components/textfield/textfield.component.mjs +6 -3
  11. package/esm2022/directives/icons/icons.directive.mjs +2 -2
  12. package/esm2022/pipes/month/month.pipe.mjs +2 -2
  13. package/esm2022/services/breakpoint.service.mjs +2 -2
  14. package/esm2022/services/dark-theme.service.mjs +4 -1
  15. package/esm2022/tokens/dark-mode.mjs +40 -0
  16. package/esm2022/tokens/icon-resolver.mjs +12 -10
  17. package/esm2022/tokens/icons.mjs +8 -4
  18. package/esm2022/tokens/index.mjs +2 -1
  19. package/esm2022/utils/format/number-to-string-without-exp.mjs +2 -2
  20. package/fesm2022/taiga-ui-core-components-calendar.mjs +2 -2
  21. package/fesm2022/taiga-ui-core-components-calendar.mjs.map +1 -1
  22. package/fesm2022/taiga-ui-core-components-icon.mjs +16 -22
  23. package/fesm2022/taiga-ui-core-components-icon.mjs.map +1 -1
  24. package/fesm2022/taiga-ui-core-components-notification.mjs +1 -1
  25. package/fesm2022/taiga-ui-core-components-notification.mjs.map +1 -1
  26. package/fesm2022/taiga-ui-core-components-root.mjs +1 -1
  27. package/fesm2022/taiga-ui-core-components-scrollbar.mjs +17 -14
  28. package/fesm2022/taiga-ui-core-components-scrollbar.mjs.map +1 -1
  29. package/fesm2022/taiga-ui-core-components-textfield.mjs +5 -2
  30. package/fesm2022/taiga-ui-core-components-textfield.mjs.map +1 -1
  31. package/fesm2022/taiga-ui-core-directives-icons.mjs +2 -2
  32. package/fesm2022/taiga-ui-core-directives-icons.mjs.map +1 -1
  33. package/fesm2022/taiga-ui-core-pipes-month.mjs +1 -1
  34. package/fesm2022/taiga-ui-core-pipes-month.mjs.map +1 -1
  35. package/fesm2022/taiga-ui-core-services.mjs +4 -1
  36. package/fesm2022/taiga-ui-core-services.mjs.map +1 -1
  37. package/fesm2022/taiga-ui-core-tokens.mjs +57 -15
  38. package/fesm2022/taiga-ui-core-tokens.mjs.map +1 -1
  39. package/fesm2022/taiga-ui-core-utils-format.mjs +1 -1
  40. package/fesm2022/taiga-ui-core-utils-format.mjs.map +1 -1
  41. package/package.json +111 -111
  42. package/services/dark-theme.service.d.ts +3 -0
  43. package/styles/components/icon.less +1 -1
  44. package/styles/components/icons.less +1 -0
  45. package/styles/components/textfield.less +1 -0
  46. package/tokens/dark-mode.d.ts +6 -0
  47. package/tokens/icon-resolver.d.ts +4 -0
  48. package/tokens/icons.d.ts +4 -0
  49. package/tokens/index.d.ts +1 -0
@@ -145,11 +145,14 @@ class TuiTextfieldComponent {
145
145
  get hasLabel() {
146
146
  return Boolean(this.label?.nativeElement?.childNodes.length);
147
147
  }
148
+ onResize(entry) {
149
+ this.side = entry[0]?.contentRect?.width || 0;
150
+ }
148
151
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiTextfieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
149
152
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiTextfieldComponent, isStandalone: true, selector: "tui-textfield", inputs: { filler: "filler", stringify: "stringify", content: "content" }, host: { properties: { "style.--t-side.px": "side", "attr.data-size": "options.size()", "class._with-label": "hasLabel", "class._disabled": "el?.nativeElement.disabled" } }, providers: [
150
153
  tuiAsDataListHost(TuiTextfieldComponent),
151
154
  tuiDropdownOptionsProvider({ limitWidth: 'fixed' }),
152
- ], queries: [{ propertyName: "directive", first: true, predicate: i0.forwardRef(function () { return TuiTextfieldDirective; }), descendants: true }, { propertyName: "label", first: true, predicate: i0.forwardRef(function () { return TuiLabel; }), descendants: true, read: ElementRef }, { propertyName: "control", first: true, predicate: NgControl, descendants: true }, { propertyName: "el", first: true, predicate: i0.forwardRef(function () { return TuiTextfieldDirective; }), descendants: true, read: ElementRef }], hostDirectives: [{ directive: i1.TuiNativeValidator }, { directive: i2.TuiDropdownDirective }, { directive: i2.TuiWithDropdownOpen }, { directive: TuiWithTextfieldDropdown }, { directive: i4.TuiWithIcons }], ngImport: i0, template: "<ng-content select=\"input\" />\n<ng-content select=\"select\" />\n<ng-content select=\"label\" />\n<span\n class=\"t-content\"\n (waResizeObserver)=\"side = $event[0].contentRect.width\"\n>\n <ng-content />\n <button\n *ngIf=\"options.cleaner()\"\n appearance=\"icon\"\n size=\"xs\"\n tabindex=\"-1\"\n tuiIconButton\n type=\"button\"\n class=\"t-clear\"\n [iconStart]=\"icons.close\"\n (click)=\"directive?.setValue('')\"\n (pointerdown.silent.prevent)=\"el?.nativeElement?.focus()\"\n ></button>\n <ng-content select=\"tui-icon\" />\n</span>\n<span class=\"t-template\">\n <ng-container *polymorpheusOutlet=\"content as text; context: {$implicit: control?.value}\">\n {{ text }}\n </ng-container>\n</span>\n<input\n *ngIf=\"showFiller\"\n aria-hidden=\"true\"\n disabled\n class=\"t-filler\"\n [value]=\"computedFiller\"\n/>\n", styles: ["tui-textfield{transition-property:color;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;--t-height: var(--tui-height-l);position:relative;display:flex;align-items:center;pointer-events:none;cursor:pointer;height:var(--t-height);color:var(--tui-text-tertiary);padding:0 var(--tui-padding-l);border-radius:var(--tui-radius-l);font:var(--tui-font-text-m);box-sizing:border-box}tui-textfield[style*=\"--t-icon-start:\"]{--t-left: 2.25rem}tui-textfield[style*=\"--t-icon-end:\"]{--t-right: 2.25rem}tui-textfield:before{margin-inline-end:.75rem}tui-textfield:after{margin-inline-start:.25rem}tui-textfield input,tui-textfield select{font:var(--tui-font-text-m)}tui-textfield[data-size=s]{--t-height: var(--tui-height-s);padding:0 var(--tui-padding-s);border-radius:var(--tui-radius-m);font:var(--tui-font-text-s)}tui-textfield[data-size=s][style*=\"--t-icon-start:\"]{--t-left: 1.25rem}tui-textfield[data-size=s][style*=\"--t-icon-end:\"]{--t-right: 1.25rem}tui-textfield[data-size=s]:before{margin:0 .5rem 0 -.125rem;font-size:1rem}tui-textfield[data-size=s]:after{margin:0 -.175rem 0 .25rem;font-size:1rem}tui-textfield[data-size=s] input,tui-textfield[data-size=s] select{font:var(--tui-font-text-s)}tui-textfield[data-size=s] .t-content{gap:0}tui-textfield[data-size=m]{--t-height: var(--tui-height-m);padding:0 var(--tui-padding-m);border-radius:var(--tui-radius-m);font:var(--tui-font-text-s)}tui-textfield[data-size=m][style*=\"--t-icon-start:\"]{--t-left: 1.75rem}tui-textfield[data-size=m][style*=\"--t-icon-end:\"]{--t-right: 1.75rem}tui-textfield[data-size=m]:before{margin:0 .375rem 0 -.125rem}tui-textfield[data-size=m]:after{margin:0 -.125rem 0 .375rem}tui-textfield[data-size=m] input,tui-textfield[data-size=m] select{font:var(--tui-font-text-s)}tui-textfield:hover{color:var(--tui-text-secondary)}tui-textfield:before{z-index:1}tui-textfield:has(:disabled:not(.t-filler,button,option)):before,tui-textfield:has(:disabled:not(.t-filler,button,option)):after,tui-textfield:has(:disabled:not(.t-filler,button,option)) .t-template{opacity:var(--tui-disabled-opacity)}tui-textfield._disabled:before,tui-textfield._disabled:after,tui-textfield._disabled .t-template{opacity:var(--tui-disabled-opacity)}tui-textfield:has(label:not(:empty)) .t-template,tui-textfield:has(label:not(:empty)) input,tui-textfield:has(label:not(:empty)) select{padding-top:calc(var(--t-height) / 3)}tui-textfield:has(label:not(:empty)) .t-template::placeholder,tui-textfield:has(label:not(:empty)) input::placeholder,tui-textfield:has(label:not(:empty)) select::placeholder,tui-textfield:has(label:not(:empty)) .t-template._empty,tui-textfield:has(label:not(:empty)) input._empty,tui-textfield:has(label:not(:empty)) select._empty{color:transparent}tui-textfield._with-label .t-template,tui-textfield._with-label input,tui-textfield._with-label select{padding-top:calc(var(--t-height) / 3)}tui-textfield._with-label .t-template::placeholder,tui-textfield._with-label input::placeholder,tui-textfield._with-label select::placeholder,tui-textfield._with-label .t-template._empty,tui-textfield._with-label input._empty,tui-textfield._with-label select._empty{color:transparent}tui-textfield .t-template,tui-textfield input:defined,tui-textfield select:defined{position:absolute;top:0;left:0;width:100%;height:100%;-webkit-appearance:none;appearance:none;box-sizing:border-box;border:none;border-inline-start:var(--t-left, 0) solid transparent!important;border-inline-end:calc(var(--t-right, var(--t-0, 0rem)) + var(--t-side)) solid transparent!important;border-radius:inherit;padding:inherit}tui-textfield input:defined,tui-textfield select:defined{pointer-events:auto;background:transparent no-repeat center right 1rem / 2rem;background-clip:border-box,padding-box}tui-textfield input:defined:read-only~.t-filler,tui-textfield select:defined:read-only~.t-filler{display:none}tui-textfield input:defined:disabled~label,tui-textfield select:defined:disabled~label,tui-textfield input:defined:disabled~.t-content,tui-textfield select:defined:disabled~.t-content{opacity:var(--tui-disabled-opacity)}tui-textfield input:defined:disabled~label [tuiTooltip],tui-textfield select:defined:disabled~label [tuiTooltip],tui-textfield input:defined:disabled~.t-content [tuiTooltip],tui-textfield select:defined:disabled~.t-content [tuiTooltip]{display:none}tui-textfield input:defined:not(._empty):not(:placeholder-shown)~label,tui-textfield select:defined:not(._empty):not(:placeholder-shown)~label{font-size:.83em;transform:translateY(-.7em)}tui-textfield input:defined:not(._empty):not(:placeholder-shown):not(:disabled)[data-mode=invalid]~label,tui-textfield select:defined:not(._empty):not(:placeholder-shown):not(:disabled)[data-mode=invalid]~label,tui-textfield input:defined:not(._empty):not(:placeholder-shown):invalid:not(:disabled):not([data-mode])~label,tui-textfield select:defined:not(._empty):not(:placeholder-shown):invalid:not(:disabled):not([data-mode])~label{color:var(--tui-text-negative)}tui-textfield input:defined:not(._empty):not(:placeholder-shown):not(:disabled):not([data-mode=readonly])~.t-content .t-clear,tui-textfield select:defined:not(._empty):not(:placeholder-shown):not(:disabled):not([data-mode=readonly])~.t-content .t-clear{display:flex}tui-textfield input:defined:not([data-mode=readonly]):focus-visible:not([data-focus=false])::placeholder,tui-textfield select:defined:not([data-mode=readonly]):focus-visible:not([data-focus=false])::placeholder,tui-textfield input:defined:not([data-mode=readonly]):focus-visible:not([data-focus=false])._empty,tui-textfield select:defined:not([data-mode=readonly]):focus-visible:not([data-focus=false])._empty{color:var(--tui-text-tertiary)}tui-textfield input:defined:not([data-mode=readonly]):focus-visible:not([data-focus=false])~label,tui-textfield select:defined:not([data-mode=readonly]):focus-visible:not([data-focus=false])~label{color:var(--tui-text-primary)!important;font-size:.83em;transform:translateY(-.7em)}tui-textfield input:defined:not([data-mode=readonly])[data-focus=true]::placeholder,tui-textfield select:defined:not([data-mode=readonly])[data-focus=true]::placeholder,tui-textfield input:defined:not([data-mode=readonly])[data-focus=true]._empty,tui-textfield select:defined:not([data-mode=readonly])[data-focus=true]._empty{color:var(--tui-text-tertiary)}tui-textfield input:defined:not([data-mode=readonly])[data-focus=true]~label,tui-textfield select:defined:not([data-mode=readonly])[data-focus=true]~label{color:var(--tui-text-primary)!important;font-size:.83em;transform:translateY(-.7em)}tui-textfield label:not([data-orientation=vertical]){transition-property:all;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;position:relative;display:block;flex:1;font-size:inherit}tui-textfield label:defined,tui-textfield input:defined::placeholder,tui-textfield select:defined._empty{color:var(--tui-text-secondary)}tui-textfield select:not([data-mode=readonly]){cursor:pointer}@supports (-webkit-touch-callout: none){tui-textfield input:defined._ios-fix,tui-textfield select:defined._ios-fix{position:fixed;left:1000rem}}tui-textfield button,tui-textfield a{pointer-events:auto}tui-textfield .t-content{display:flex;align-items:center;gap:.25rem;margin-inline-start:auto}tui-textfield .t-clear{display:none;pointer-events:auto}tui-textfield .t-filler:defined{pointer-events:none;background:none;color:var(--tui-text-tertiary);opacity:1}tui-textfield [tuiFluidTypography]{font-weight:700}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: WaResizeObserver, selector: "[waResizeObserver]", inputs: ["box"], outputs: ["waResizeObserver"] }, { kind: "directive", type: TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "directive", type: PolymorpheusOutlet, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
155
+ ], queries: [{ propertyName: "directive", first: true, predicate: i0.forwardRef(function () { return TuiTextfieldDirective; }), descendants: true }, { propertyName: "label", first: true, predicate: i0.forwardRef(function () { return TuiLabel; }), descendants: true, read: ElementRef }, { propertyName: "control", first: true, predicate: NgControl, descendants: true }, { propertyName: "el", first: true, predicate: i0.forwardRef(function () { return TuiTextfieldDirective; }), descendants: true, read: ElementRef }], hostDirectives: [{ directive: i1.TuiNativeValidator }, { directive: i2.TuiDropdownDirective }, { directive: i2.TuiWithDropdownOpen }, { directive: TuiWithTextfieldDropdown }, { directive: i4.TuiWithIcons }], ngImport: i0, template: "<ng-content select=\"input\" />\n<ng-content select=\"select\" />\n<ng-content select=\"label\" />\n<span\n class=\"t-content\"\n (waResizeObserver)=\"onResize($event)\"\n>\n <ng-content />\n <button\n *ngIf=\"options.cleaner()\"\n appearance=\"icon\"\n size=\"xs\"\n tabindex=\"-1\"\n tuiIconButton\n type=\"button\"\n class=\"t-clear\"\n [iconStart]=\"icons.close\"\n (click)=\"directive?.setValue('')\"\n (pointerdown.silent.prevent)=\"el?.nativeElement?.focus()\"\n ></button>\n <ng-content select=\"tui-icon\" />\n</span>\n<span class=\"t-template\">\n <ng-container *polymorpheusOutlet=\"content as text; context: {$implicit: control?.value}\">\n {{ text }}\n </ng-container>\n</span>\n<input\n *ngIf=\"showFiller\"\n aria-hidden=\"true\"\n disabled\n class=\"t-filler\"\n [value]=\"computedFiller\"\n/>\n", styles: ["tui-textfield{transition-property:color;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;--t-height: var(--tui-height-l);position:relative;display:flex;align-items:center;pointer-events:none;cursor:pointer;height:var(--t-height);color:var(--tui-text-tertiary);padding:0 var(--tui-padding-l);border-radius:var(--tui-radius-l);font:var(--tui-font-text-m);box-sizing:border-box}tui-textfield[style*=\"--t-icon-start:\"]{--t-left: 2.25rem}tui-textfield[style*=\"--t-icon-end:\"]{--t-right: 2.25rem}tui-textfield:before{margin-inline-end:.75rem}tui-textfield:after{margin-inline-start:.25rem}tui-textfield input,tui-textfield select{font:var(--tui-font-text-m)}tui-textfield[data-size=s]{--t-height: var(--tui-height-s);padding:0 var(--tui-padding-s);border-radius:var(--tui-radius-m);font:var(--tui-font-text-s)}tui-textfield[data-size=s][style*=\"--t-icon-start:\"]{--t-left: 1.25rem}tui-textfield[data-size=s][style*=\"--t-icon-end:\"]{--t-right: 1.25rem}tui-textfield[data-size=s]:before{margin:0 .5rem 0 -.125rem;font-size:1rem}tui-textfield[data-size=s]:after{margin:0 -.175rem 0 .25rem;font-size:1rem}tui-textfield[data-size=s] input,tui-textfield[data-size=s] select{font:var(--tui-font-text-s)}tui-textfield[data-size=s] .t-content{gap:0}tui-textfield[data-size=m]{--t-height: var(--tui-height-m);padding:0 var(--tui-padding-m);border-radius:var(--tui-radius-m);font:var(--tui-font-text-s)}tui-textfield[data-size=m][style*=\"--t-icon-start:\"]{--t-left: 1.75rem}tui-textfield[data-size=m][style*=\"--t-icon-end:\"]{--t-right: 1.75rem}tui-textfield[data-size=m]:before{margin:0 .375rem 0 -.125rem}tui-textfield[data-size=m]:after{margin:0 -.125rem 0 .375rem}tui-textfield[data-size=m] input,tui-textfield[data-size=m] select{font:var(--tui-font-text-s)}tui-textfield:hover{color:var(--tui-text-secondary)}tui-textfield:before{z-index:1}tui-textfield:has(:disabled:not(.t-filler,button,option)):before,tui-textfield:has(:disabled:not(.t-filler,button,option)):after,tui-textfield:has(:disabled:not(.t-filler,button,option)) .t-template{opacity:var(--tui-disabled-opacity)}tui-textfield._disabled:before,tui-textfield._disabled:after,tui-textfield._disabled .t-template{opacity:var(--tui-disabled-opacity)}tui-textfield:has(label:not(:empty)) .t-template,tui-textfield:has(label:not(:empty)) input,tui-textfield:has(label:not(:empty)) select{padding-top:calc(var(--t-height) / 3)}tui-textfield:has(label:not(:empty)) .t-template::placeholder,tui-textfield:has(label:not(:empty)) input::placeholder,tui-textfield:has(label:not(:empty)) select::placeholder,tui-textfield:has(label:not(:empty)) .t-template._empty,tui-textfield:has(label:not(:empty)) input._empty,tui-textfield:has(label:not(:empty)) select._empty{color:transparent}tui-textfield._with-label .t-template,tui-textfield._with-label input,tui-textfield._with-label select{padding-top:calc(var(--t-height) / 3)}tui-textfield._with-label .t-template::placeholder,tui-textfield._with-label input::placeholder,tui-textfield._with-label select::placeholder,tui-textfield._with-label .t-template._empty,tui-textfield._with-label input._empty,tui-textfield._with-label select._empty{color:transparent}tui-textfield .t-template,tui-textfield input:defined,tui-textfield select:defined{position:absolute;top:0;left:0;width:100%;height:100%;-webkit-appearance:none;appearance:none;box-sizing:border-box;border:none;border-inline-start:var(--t-left, 0) solid transparent!important;border-inline-end:calc(var(--t-right, var(--t-0, 0rem)) + var(--t-side)) solid transparent!important;border-radius:inherit;padding:inherit}tui-textfield input:defined,tui-textfield select:defined{pointer-events:auto;background:transparent no-repeat center right 1rem / 2rem;background-clip:border-box,padding-box}tui-textfield input:defined:read-only~.t-filler,tui-textfield select:defined:read-only~.t-filler{display:none}tui-textfield input:defined:disabled~label,tui-textfield select:defined:disabled~label,tui-textfield input:defined:disabled~.t-content,tui-textfield select:defined:disabled~.t-content{opacity:var(--tui-disabled-opacity)}tui-textfield input:defined:disabled~label [tuiTooltip],tui-textfield select:defined:disabled~label [tuiTooltip],tui-textfield input:defined:disabled~.t-content [tuiTooltip],tui-textfield select:defined:disabled~.t-content [tuiTooltip]{display:none}tui-textfield input:defined:not(._empty):not(:placeholder-shown)~label,tui-textfield select:defined:not(._empty):not(:placeholder-shown)~label{font-size:.83em;transform:translateY(-.7em)}tui-textfield input:defined:not(._empty):not(:placeholder-shown):not(:disabled)[data-mode=invalid]~label,tui-textfield select:defined:not(._empty):not(:placeholder-shown):not(:disabled)[data-mode=invalid]~label,tui-textfield input:defined:not(._empty):not(:placeholder-shown):invalid:not(:disabled):not([data-mode])~label,tui-textfield select:defined:not(._empty):not(:placeholder-shown):invalid:not(:disabled):not([data-mode])~label{color:var(--tui-text-negative)}tui-textfield input:defined:not(._empty):not(:placeholder-shown):not(:disabled):not([data-mode=readonly])~.t-content .t-clear,tui-textfield select:defined:not(._empty):not(:placeholder-shown):not(:disabled):not([data-mode=readonly])~.t-content .t-clear{display:flex}tui-textfield input:defined:not([data-mode=readonly]):focus-visible:not([data-focus=false])::placeholder,tui-textfield select:defined:not([data-mode=readonly]):focus-visible:not([data-focus=false])::placeholder,tui-textfield input:defined:not([data-mode=readonly]):focus-visible:not([data-focus=false])._empty,tui-textfield select:defined:not([data-mode=readonly]):focus-visible:not([data-focus=false])._empty{color:var(--tui-text-tertiary)}tui-textfield input:defined:not([data-mode=readonly]):focus-visible:not([data-focus=false])~label,tui-textfield select:defined:not([data-mode=readonly]):focus-visible:not([data-focus=false])~label{color:var(--tui-text-primary)!important;font-size:.83em;transform:translateY(-.7em)}tui-textfield input:defined:not([data-mode=readonly])[data-focus=true]::placeholder,tui-textfield select:defined:not([data-mode=readonly])[data-focus=true]::placeholder,tui-textfield input:defined:not([data-mode=readonly])[data-focus=true]._empty,tui-textfield select:defined:not([data-mode=readonly])[data-focus=true]._empty{color:var(--tui-text-tertiary)}tui-textfield input:defined:not([data-mode=readonly])[data-focus=true]~label,tui-textfield select:defined:not([data-mode=readonly])[data-focus=true]~label{color:var(--tui-text-primary)!important;font-size:.83em;transform:translateY(-.7em)}tui-textfield label:not([data-orientation=vertical]){transition-property:all;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;position:relative;display:block;flex:1;font-size:inherit}tui-textfield label:defined,tui-textfield input:defined::placeholder,tui-textfield select:defined._empty{color:var(--tui-text-secondary)}tui-textfield select:not([data-mode=readonly]){cursor:pointer}@supports (-webkit-touch-callout: none){tui-textfield input:defined._ios-fix,tui-textfield select:defined._ios-fix{position:fixed;left:1000rem}}tui-textfield button,tui-textfield a{pointer-events:auto}tui-textfield .t-content{display:flex;align-items:center;gap:.25rem;margin-inline-start:auto;isolation:isolate}tui-textfield .t-clear{display:none;pointer-events:auto}tui-textfield .t-filler:defined{pointer-events:none;background:none;color:var(--tui-text-tertiary);opacity:1}tui-textfield [tuiFluidTypography]{font-weight:700}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: WaResizeObserver, selector: "[waResizeObserver]", inputs: ["box"], outputs: ["waResizeObserver"] }, { kind: "directive", type: TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "directive", type: PolymorpheusOutlet, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
153
156
  }
154
157
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiTextfieldComponent, decorators: [{
155
158
  type: Component,
@@ -167,7 +170,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
167
170
  '[attr.data-size]': 'options.size()',
168
171
  '[class._with-label]': 'hasLabel',
169
172
  '[class._disabled]': 'el?.nativeElement.disabled',
170
- }, template: "<ng-content select=\"input\" />\n<ng-content select=\"select\" />\n<ng-content select=\"label\" />\n<span\n class=\"t-content\"\n (waResizeObserver)=\"side = $event[0].contentRect.width\"\n>\n <ng-content />\n <button\n *ngIf=\"options.cleaner()\"\n appearance=\"icon\"\n size=\"xs\"\n tabindex=\"-1\"\n tuiIconButton\n type=\"button\"\n class=\"t-clear\"\n [iconStart]=\"icons.close\"\n (click)=\"directive?.setValue('')\"\n (pointerdown.silent.prevent)=\"el?.nativeElement?.focus()\"\n ></button>\n <ng-content select=\"tui-icon\" />\n</span>\n<span class=\"t-template\">\n <ng-container *polymorpheusOutlet=\"content as text; context: {$implicit: control?.value}\">\n {{ text }}\n </ng-container>\n</span>\n<input\n *ngIf=\"showFiller\"\n aria-hidden=\"true\"\n disabled\n class=\"t-filler\"\n [value]=\"computedFiller\"\n/>\n", styles: ["tui-textfield{transition-property:color;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;--t-height: var(--tui-height-l);position:relative;display:flex;align-items:center;pointer-events:none;cursor:pointer;height:var(--t-height);color:var(--tui-text-tertiary);padding:0 var(--tui-padding-l);border-radius:var(--tui-radius-l);font:var(--tui-font-text-m);box-sizing:border-box}tui-textfield[style*=\"--t-icon-start:\"]{--t-left: 2.25rem}tui-textfield[style*=\"--t-icon-end:\"]{--t-right: 2.25rem}tui-textfield:before{margin-inline-end:.75rem}tui-textfield:after{margin-inline-start:.25rem}tui-textfield input,tui-textfield select{font:var(--tui-font-text-m)}tui-textfield[data-size=s]{--t-height: var(--tui-height-s);padding:0 var(--tui-padding-s);border-radius:var(--tui-radius-m);font:var(--tui-font-text-s)}tui-textfield[data-size=s][style*=\"--t-icon-start:\"]{--t-left: 1.25rem}tui-textfield[data-size=s][style*=\"--t-icon-end:\"]{--t-right: 1.25rem}tui-textfield[data-size=s]:before{margin:0 .5rem 0 -.125rem;font-size:1rem}tui-textfield[data-size=s]:after{margin:0 -.175rem 0 .25rem;font-size:1rem}tui-textfield[data-size=s] input,tui-textfield[data-size=s] select{font:var(--tui-font-text-s)}tui-textfield[data-size=s] .t-content{gap:0}tui-textfield[data-size=m]{--t-height: var(--tui-height-m);padding:0 var(--tui-padding-m);border-radius:var(--tui-radius-m);font:var(--tui-font-text-s)}tui-textfield[data-size=m][style*=\"--t-icon-start:\"]{--t-left: 1.75rem}tui-textfield[data-size=m][style*=\"--t-icon-end:\"]{--t-right: 1.75rem}tui-textfield[data-size=m]:before{margin:0 .375rem 0 -.125rem}tui-textfield[data-size=m]:after{margin:0 -.125rem 0 .375rem}tui-textfield[data-size=m] input,tui-textfield[data-size=m] select{font:var(--tui-font-text-s)}tui-textfield:hover{color:var(--tui-text-secondary)}tui-textfield:before{z-index:1}tui-textfield:has(:disabled:not(.t-filler,button,option)):before,tui-textfield:has(:disabled:not(.t-filler,button,option)):after,tui-textfield:has(:disabled:not(.t-filler,button,option)) .t-template{opacity:var(--tui-disabled-opacity)}tui-textfield._disabled:before,tui-textfield._disabled:after,tui-textfield._disabled .t-template{opacity:var(--tui-disabled-opacity)}tui-textfield:has(label:not(:empty)) .t-template,tui-textfield:has(label:not(:empty)) input,tui-textfield:has(label:not(:empty)) select{padding-top:calc(var(--t-height) / 3)}tui-textfield:has(label:not(:empty)) .t-template::placeholder,tui-textfield:has(label:not(:empty)) input::placeholder,tui-textfield:has(label:not(:empty)) select::placeholder,tui-textfield:has(label:not(:empty)) .t-template._empty,tui-textfield:has(label:not(:empty)) input._empty,tui-textfield:has(label:not(:empty)) select._empty{color:transparent}tui-textfield._with-label .t-template,tui-textfield._with-label input,tui-textfield._with-label select{padding-top:calc(var(--t-height) / 3)}tui-textfield._with-label .t-template::placeholder,tui-textfield._with-label input::placeholder,tui-textfield._with-label select::placeholder,tui-textfield._with-label .t-template._empty,tui-textfield._with-label input._empty,tui-textfield._with-label select._empty{color:transparent}tui-textfield .t-template,tui-textfield input:defined,tui-textfield select:defined{position:absolute;top:0;left:0;width:100%;height:100%;-webkit-appearance:none;appearance:none;box-sizing:border-box;border:none;border-inline-start:var(--t-left, 0) solid transparent!important;border-inline-end:calc(var(--t-right, var(--t-0, 0rem)) + var(--t-side)) solid transparent!important;border-radius:inherit;padding:inherit}tui-textfield input:defined,tui-textfield select:defined{pointer-events:auto;background:transparent no-repeat center right 1rem / 2rem;background-clip:border-box,padding-box}tui-textfield input:defined:read-only~.t-filler,tui-textfield select:defined:read-only~.t-filler{display:none}tui-textfield input:defined:disabled~label,tui-textfield select:defined:disabled~label,tui-textfield input:defined:disabled~.t-content,tui-textfield select:defined:disabled~.t-content{opacity:var(--tui-disabled-opacity)}tui-textfield input:defined:disabled~label [tuiTooltip],tui-textfield select:defined:disabled~label [tuiTooltip],tui-textfield input:defined:disabled~.t-content [tuiTooltip],tui-textfield select:defined:disabled~.t-content [tuiTooltip]{display:none}tui-textfield input:defined:not(._empty):not(:placeholder-shown)~label,tui-textfield select:defined:not(._empty):not(:placeholder-shown)~label{font-size:.83em;transform:translateY(-.7em)}tui-textfield input:defined:not(._empty):not(:placeholder-shown):not(:disabled)[data-mode=invalid]~label,tui-textfield select:defined:not(._empty):not(:placeholder-shown):not(:disabled)[data-mode=invalid]~label,tui-textfield input:defined:not(._empty):not(:placeholder-shown):invalid:not(:disabled):not([data-mode])~label,tui-textfield select:defined:not(._empty):not(:placeholder-shown):invalid:not(:disabled):not([data-mode])~label{color:var(--tui-text-negative)}tui-textfield input:defined:not(._empty):not(:placeholder-shown):not(:disabled):not([data-mode=readonly])~.t-content .t-clear,tui-textfield select:defined:not(._empty):not(:placeholder-shown):not(:disabled):not([data-mode=readonly])~.t-content .t-clear{display:flex}tui-textfield input:defined:not([data-mode=readonly]):focus-visible:not([data-focus=false])::placeholder,tui-textfield select:defined:not([data-mode=readonly]):focus-visible:not([data-focus=false])::placeholder,tui-textfield input:defined:not([data-mode=readonly]):focus-visible:not([data-focus=false])._empty,tui-textfield select:defined:not([data-mode=readonly]):focus-visible:not([data-focus=false])._empty{color:var(--tui-text-tertiary)}tui-textfield input:defined:not([data-mode=readonly]):focus-visible:not([data-focus=false])~label,tui-textfield select:defined:not([data-mode=readonly]):focus-visible:not([data-focus=false])~label{color:var(--tui-text-primary)!important;font-size:.83em;transform:translateY(-.7em)}tui-textfield input:defined:not([data-mode=readonly])[data-focus=true]::placeholder,tui-textfield select:defined:not([data-mode=readonly])[data-focus=true]::placeholder,tui-textfield input:defined:not([data-mode=readonly])[data-focus=true]._empty,tui-textfield select:defined:not([data-mode=readonly])[data-focus=true]._empty{color:var(--tui-text-tertiary)}tui-textfield input:defined:not([data-mode=readonly])[data-focus=true]~label,tui-textfield select:defined:not([data-mode=readonly])[data-focus=true]~label{color:var(--tui-text-primary)!important;font-size:.83em;transform:translateY(-.7em)}tui-textfield label:not([data-orientation=vertical]){transition-property:all;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;position:relative;display:block;flex:1;font-size:inherit}tui-textfield label:defined,tui-textfield input:defined::placeholder,tui-textfield select:defined._empty{color:var(--tui-text-secondary)}tui-textfield select:not([data-mode=readonly]){cursor:pointer}@supports (-webkit-touch-callout: none){tui-textfield input:defined._ios-fix,tui-textfield select:defined._ios-fix{position:fixed;left:1000rem}}tui-textfield button,tui-textfield a{pointer-events:auto}tui-textfield .t-content{display:flex;align-items:center;gap:.25rem;margin-inline-start:auto}tui-textfield .t-clear{display:none;pointer-events:auto}tui-textfield .t-filler:defined{pointer-events:none;background:none;color:var(--tui-text-tertiary);opacity:1}tui-textfield [tuiFluidTypography]{font-weight:700}\n"] }]
173
+ }, template: "<ng-content select=\"input\" />\n<ng-content select=\"select\" />\n<ng-content select=\"label\" />\n<span\n class=\"t-content\"\n (waResizeObserver)=\"onResize($event)\"\n>\n <ng-content />\n <button\n *ngIf=\"options.cleaner()\"\n appearance=\"icon\"\n size=\"xs\"\n tabindex=\"-1\"\n tuiIconButton\n type=\"button\"\n class=\"t-clear\"\n [iconStart]=\"icons.close\"\n (click)=\"directive?.setValue('')\"\n (pointerdown.silent.prevent)=\"el?.nativeElement?.focus()\"\n ></button>\n <ng-content select=\"tui-icon\" />\n</span>\n<span class=\"t-template\">\n <ng-container *polymorpheusOutlet=\"content as text; context: {$implicit: control?.value}\">\n {{ text }}\n </ng-container>\n</span>\n<input\n *ngIf=\"showFiller\"\n aria-hidden=\"true\"\n disabled\n class=\"t-filler\"\n [value]=\"computedFiller\"\n/>\n", styles: ["tui-textfield{transition-property:color;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;--t-height: var(--tui-height-l);position:relative;display:flex;align-items:center;pointer-events:none;cursor:pointer;height:var(--t-height);color:var(--tui-text-tertiary);padding:0 var(--tui-padding-l);border-radius:var(--tui-radius-l);font:var(--tui-font-text-m);box-sizing:border-box}tui-textfield[style*=\"--t-icon-start:\"]{--t-left: 2.25rem}tui-textfield[style*=\"--t-icon-end:\"]{--t-right: 2.25rem}tui-textfield:before{margin-inline-end:.75rem}tui-textfield:after{margin-inline-start:.25rem}tui-textfield input,tui-textfield select{font:var(--tui-font-text-m)}tui-textfield[data-size=s]{--t-height: var(--tui-height-s);padding:0 var(--tui-padding-s);border-radius:var(--tui-radius-m);font:var(--tui-font-text-s)}tui-textfield[data-size=s][style*=\"--t-icon-start:\"]{--t-left: 1.25rem}tui-textfield[data-size=s][style*=\"--t-icon-end:\"]{--t-right: 1.25rem}tui-textfield[data-size=s]:before{margin:0 .5rem 0 -.125rem;font-size:1rem}tui-textfield[data-size=s]:after{margin:0 -.175rem 0 .25rem;font-size:1rem}tui-textfield[data-size=s] input,tui-textfield[data-size=s] select{font:var(--tui-font-text-s)}tui-textfield[data-size=s] .t-content{gap:0}tui-textfield[data-size=m]{--t-height: var(--tui-height-m);padding:0 var(--tui-padding-m);border-radius:var(--tui-radius-m);font:var(--tui-font-text-s)}tui-textfield[data-size=m][style*=\"--t-icon-start:\"]{--t-left: 1.75rem}tui-textfield[data-size=m][style*=\"--t-icon-end:\"]{--t-right: 1.75rem}tui-textfield[data-size=m]:before{margin:0 .375rem 0 -.125rem}tui-textfield[data-size=m]:after{margin:0 -.125rem 0 .375rem}tui-textfield[data-size=m] input,tui-textfield[data-size=m] select{font:var(--tui-font-text-s)}tui-textfield:hover{color:var(--tui-text-secondary)}tui-textfield:before{z-index:1}tui-textfield:has(:disabled:not(.t-filler,button,option)):before,tui-textfield:has(:disabled:not(.t-filler,button,option)):after,tui-textfield:has(:disabled:not(.t-filler,button,option)) .t-template{opacity:var(--tui-disabled-opacity)}tui-textfield._disabled:before,tui-textfield._disabled:after,tui-textfield._disabled .t-template{opacity:var(--tui-disabled-opacity)}tui-textfield:has(label:not(:empty)) .t-template,tui-textfield:has(label:not(:empty)) input,tui-textfield:has(label:not(:empty)) select{padding-top:calc(var(--t-height) / 3)}tui-textfield:has(label:not(:empty)) .t-template::placeholder,tui-textfield:has(label:not(:empty)) input::placeholder,tui-textfield:has(label:not(:empty)) select::placeholder,tui-textfield:has(label:not(:empty)) .t-template._empty,tui-textfield:has(label:not(:empty)) input._empty,tui-textfield:has(label:not(:empty)) select._empty{color:transparent}tui-textfield._with-label .t-template,tui-textfield._with-label input,tui-textfield._with-label select{padding-top:calc(var(--t-height) / 3)}tui-textfield._with-label .t-template::placeholder,tui-textfield._with-label input::placeholder,tui-textfield._with-label select::placeholder,tui-textfield._with-label .t-template._empty,tui-textfield._with-label input._empty,tui-textfield._with-label select._empty{color:transparent}tui-textfield .t-template,tui-textfield input:defined,tui-textfield select:defined{position:absolute;top:0;left:0;width:100%;height:100%;-webkit-appearance:none;appearance:none;box-sizing:border-box;border:none;border-inline-start:var(--t-left, 0) solid transparent!important;border-inline-end:calc(var(--t-right, var(--t-0, 0rem)) + var(--t-side)) solid transparent!important;border-radius:inherit;padding:inherit}tui-textfield input:defined,tui-textfield select:defined{pointer-events:auto;background:transparent no-repeat center right 1rem / 2rem;background-clip:border-box,padding-box}tui-textfield input:defined:read-only~.t-filler,tui-textfield select:defined:read-only~.t-filler{display:none}tui-textfield input:defined:disabled~label,tui-textfield select:defined:disabled~label,tui-textfield input:defined:disabled~.t-content,tui-textfield select:defined:disabled~.t-content{opacity:var(--tui-disabled-opacity)}tui-textfield input:defined:disabled~label [tuiTooltip],tui-textfield select:defined:disabled~label [tuiTooltip],tui-textfield input:defined:disabled~.t-content [tuiTooltip],tui-textfield select:defined:disabled~.t-content [tuiTooltip]{display:none}tui-textfield input:defined:not(._empty):not(:placeholder-shown)~label,tui-textfield select:defined:not(._empty):not(:placeholder-shown)~label{font-size:.83em;transform:translateY(-.7em)}tui-textfield input:defined:not(._empty):not(:placeholder-shown):not(:disabled)[data-mode=invalid]~label,tui-textfield select:defined:not(._empty):not(:placeholder-shown):not(:disabled)[data-mode=invalid]~label,tui-textfield input:defined:not(._empty):not(:placeholder-shown):invalid:not(:disabled):not([data-mode])~label,tui-textfield select:defined:not(._empty):not(:placeholder-shown):invalid:not(:disabled):not([data-mode])~label{color:var(--tui-text-negative)}tui-textfield input:defined:not(._empty):not(:placeholder-shown):not(:disabled):not([data-mode=readonly])~.t-content .t-clear,tui-textfield select:defined:not(._empty):not(:placeholder-shown):not(:disabled):not([data-mode=readonly])~.t-content .t-clear{display:flex}tui-textfield input:defined:not([data-mode=readonly]):focus-visible:not([data-focus=false])::placeholder,tui-textfield select:defined:not([data-mode=readonly]):focus-visible:not([data-focus=false])::placeholder,tui-textfield input:defined:not([data-mode=readonly]):focus-visible:not([data-focus=false])._empty,tui-textfield select:defined:not([data-mode=readonly]):focus-visible:not([data-focus=false])._empty{color:var(--tui-text-tertiary)}tui-textfield input:defined:not([data-mode=readonly]):focus-visible:not([data-focus=false])~label,tui-textfield select:defined:not([data-mode=readonly]):focus-visible:not([data-focus=false])~label{color:var(--tui-text-primary)!important;font-size:.83em;transform:translateY(-.7em)}tui-textfield input:defined:not([data-mode=readonly])[data-focus=true]::placeholder,tui-textfield select:defined:not([data-mode=readonly])[data-focus=true]::placeholder,tui-textfield input:defined:not([data-mode=readonly])[data-focus=true]._empty,tui-textfield select:defined:not([data-mode=readonly])[data-focus=true]._empty{color:var(--tui-text-tertiary)}tui-textfield input:defined:not([data-mode=readonly])[data-focus=true]~label,tui-textfield select:defined:not([data-mode=readonly])[data-focus=true]~label{color:var(--tui-text-primary)!important;font-size:.83em;transform:translateY(-.7em)}tui-textfield label:not([data-orientation=vertical]){transition-property:all;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;position:relative;display:block;flex:1;font-size:inherit}tui-textfield label:defined,tui-textfield input:defined::placeholder,tui-textfield select:defined._empty{color:var(--tui-text-secondary)}tui-textfield select:not([data-mode=readonly]){cursor:pointer}@supports (-webkit-touch-callout: none){tui-textfield input:defined._ios-fix,tui-textfield select:defined._ios-fix{position:fixed;left:1000rem}}tui-textfield button,tui-textfield a{pointer-events:auto}tui-textfield .t-content{display:flex;align-items:center;gap:.25rem;margin-inline-start:auto;isolation:isolate}tui-textfield .t-clear{display:none;pointer-events:auto}tui-textfield .t-filler:defined{pointer-events:none;background:none;color:var(--tui-text-tertiary);opacity:1}tui-textfield [tuiFluidTypography]{font-weight:700}\n"] }]
171
174
  }], propDecorators: { directive: [{
172
175
  type: ContentChild,
173
176
  args: [forwardRef(() => TuiTextfieldDirective)]
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-core-components-textfield.mjs","sources":["../../../projects/core/components/textfield/textfield.options.ts","../../../projects/core/components/textfield/textfield-dropdown.directive.ts","../../../projects/core/components/textfield/textfield.component.ts","../../../projects/core/components/textfield/textfield.template.html","../../../projects/core/components/textfield/textfield.directive.ts","../../../projects/core/components/textfield/select.directive.ts","../../../projects/core/components/textfield/select.template.html","../../../projects/core/components/textfield/textfield.ts","../../../projects/core/components/textfield/taiga-ui-core-components-textfield.ts"],"sourcesContent":["import type {Provider, WritableSignal} from '@angular/core';\nimport {Directive, inject, Input, Optional, signal, SkipSelf} from '@angular/core';\nimport {tuiCreateToken, tuiProvide} from '@taiga-ui/cdk/utils/miscellaneous';\nimport type {TuiSizeL, TuiSizeS} from '@taiga-ui/core/types';\n\nconst DEFAULT = {\n appearance: 'textfield',\n size: 'l',\n cleaner: true,\n} as const;\n\nexport interface TuiTextfieldOptions {\n readonly appearance: WritableSignal<string>;\n readonly size: WritableSignal<TuiSizeL | TuiSizeS>;\n readonly cleaner: WritableSignal<boolean>;\n}\n\nexport const TUI_TEXTFIELD_OPTIONS = tuiCreateToken<TuiTextfieldOptions>({\n appearance: signal(DEFAULT.appearance),\n size: signal(DEFAULT.size),\n cleaner: signal(DEFAULT.cleaner),\n});\n\nexport function tuiTextfieldOptionsProvider(\n options: Partial<TuiTextfieldOptions>,\n): Provider {\n return {\n provide: TUI_TEXTFIELD_OPTIONS,\n deps: [[new Optional(), new SkipSelf(), TUI_TEXTFIELD_OPTIONS]],\n useFactory: (parent: TuiTextfieldOptions | null) => ({\n appearance: signal(parent?.appearance() ?? DEFAULT.appearance),\n size: signal(parent?.size() ?? DEFAULT.size),\n cleaner: signal(parent?.cleaner() ?? DEFAULT.cleaner),\n ...options,\n }),\n };\n}\n\n@Directive({\n standalone: true,\n selector: '[tuiTextfieldAppearance],[tuiTextfieldSize],[tuiTextfieldCleaner]',\n providers: [tuiProvide(TUI_TEXTFIELD_OPTIONS, TuiTextfieldOptionsDirective)],\n})\nexport class TuiTextfieldOptionsDirective implements TuiTextfieldOptions {\n private readonly options = inject(TUI_TEXTFIELD_OPTIONS, {skipSelf: true});\n\n // TODO: refactor to signal inputs after Angular update\n public appearance = signal(this.options.appearance());\n public size = signal(this.options.size());\n public cleaner = signal(this.options.cleaner());\n\n @Input()\n public set tuiTextfieldAppearance(appearance: string) {\n this.appearance.set(appearance);\n }\n\n @Input()\n public set tuiTextfieldSize(size: TuiSizeL | TuiSizeS) {\n this.size.set(size);\n }\n\n @Input()\n public set tuiTextfieldCleaner(enabled: boolean) {\n this.cleaner.set(enabled);\n }\n}\n","import {ContentChild, Directive, TemplateRef} from '@angular/core';\nimport {tuiDropdown} from '@taiga-ui/core/directives/dropdown';\nimport type {PolymorpheusContent} from '@taiga-ui/polymorpheus';\n\n@Directive({\n standalone: true,\n selector: 'ng-template[tuiTextfieldDropdown]',\n})\nexport class TuiTextfieldDropdownDirective {}\n\n@Directive({\n standalone: true,\n})\nexport class TuiWithTextfieldDropdown {\n private readonly dropdown = tuiDropdown(null);\n\n @ContentChild(TuiTextfieldDropdownDirective, {read: TemplateRef})\n protected set template(template: PolymorpheusContent) {\n this.dropdown.set(template);\n }\n}\n","import {NgIf} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n ContentChild,\n ElementRef,\n forwardRef,\n inject,\n Input,\n ViewEncapsulation,\n} from '@angular/core';\nimport {NgControl} from '@angular/forms';\nimport {WaResizeObserver} from '@ng-web-apis/resize-observer';\nimport {TuiNativeValidator} from '@taiga-ui/cdk/directives/native-validator';\nimport type {TuiContext, TuiStringHandler} from '@taiga-ui/cdk/types';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {tuiFocusedIn} from '@taiga-ui/cdk/utils/focus';\nimport {TuiButton} from '@taiga-ui/core/components/button';\nimport type {TuiDataListHost} from '@taiga-ui/core/components/data-list';\nimport {tuiAsDataListHost} from '@taiga-ui/core/components/data-list';\nimport {TuiLabel} from '@taiga-ui/core/components/label';\nimport {\n TuiDropdownDirective,\n tuiDropdownOpen,\n tuiDropdownOptionsProvider,\n TuiWithDropdownOpen,\n} from '@taiga-ui/core/directives/dropdown';\nimport {TuiWithIcons} from '@taiga-ui/core/directives/icons';\nimport {TUI_COMMON_ICONS} from '@taiga-ui/core/tokens';\nimport type {TuiSizeL, TuiSizeS} from '@taiga-ui/core/types';\nimport type {PolymorpheusContent} from '@taiga-ui/polymorpheus';\nimport {PolymorpheusOutlet} from '@taiga-ui/polymorpheus';\n\nimport {TuiTextfieldDirective} from './textfield.directive';\nimport {TUI_TEXTFIELD_OPTIONS} from './textfield.options';\nimport {TuiWithTextfieldDropdown} from './textfield-dropdown.directive';\n\n@Component({\n standalone: true,\n selector: 'tui-textfield',\n imports: [NgIf, WaResizeObserver, TuiButton, PolymorpheusOutlet],\n templateUrl: './textfield.template.html',\n styles: ['@import \"@taiga-ui/core/styles/components/textfield.less\";'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n tuiAsDataListHost(TuiTextfieldComponent),\n tuiDropdownOptionsProvider({limitWidth: 'fixed'}),\n ],\n hostDirectives: [\n TuiNativeValidator,\n TuiDropdownDirective,\n TuiWithDropdownOpen,\n TuiWithTextfieldDropdown,\n TuiWithIcons,\n ],\n host: {\n '[style.--t-side.px]': 'side',\n '[attr.data-size]': 'options.size()',\n '[class._with-label]': 'hasLabel',\n '[class._disabled]': 'el?.nativeElement.disabled',\n },\n})\nexport class TuiTextfieldComponent<T> implements TuiDataListHost<T> {\n private readonly open = tuiDropdownOpen();\n private readonly focusedIn = tuiFocusedIn(tuiInjectElement());\n\n @ContentChild(forwardRef(() => TuiTextfieldDirective))\n protected readonly directive?: TuiTextfieldDirective;\n\n @ContentChild(forwardRef(() => TuiLabel), {read: ElementRef})\n protected readonly label?: ElementRef<HTMLElement>;\n\n @ContentChild(NgControl)\n protected readonly control?: NgControl;\n\n protected side = 0;\n\n protected readonly options = inject(TUI_TEXTFIELD_OPTIONS);\n protected readonly icons = inject(TUI_COMMON_ICONS);\n\n @ContentChild(forwardRef(() => TuiTextfieldDirective), {read: ElementRef})\n public readonly el?: ElementRef<HTMLInputElement>;\n\n @Input()\n public filler = '';\n\n @Input()\n public stringify: TuiStringHandler<T> = String;\n\n @Input()\n public content: PolymorpheusContent<TuiContext<T>>;\n\n public readonly focused = computed(() => this.open() || this.focusedIn());\n\n public get id(): string {\n return this.el?.nativeElement.id || '';\n }\n\n public get size(): TuiSizeL | TuiSizeS {\n return this.options.size();\n }\n\n public handleOption(option: T): void {\n this.directive?.setValue(this.stringify(option));\n this.open.set(false);\n }\n\n protected get computedFiller(): string {\n const value = this.el?.nativeElement.value || '';\n const filler = value + this.filler.slice(value.length);\n\n return filler.length > value.length ? filler : '';\n }\n\n protected get showFiller(): boolean {\n return (\n this.focused() &&\n !!this.computedFiller &&\n (!!this.el?.nativeElement.value || !this.el?.nativeElement.placeholder)\n );\n }\n\n protected get hasLabel(): boolean {\n return Boolean(this.label?.nativeElement?.childNodes.length);\n }\n}\n","<ng-content select=\"input\" />\n<ng-content select=\"select\" />\n<ng-content select=\"label\" />\n<span\n class=\"t-content\"\n (waResizeObserver)=\"side = $event[0].contentRect.width\"\n>\n <ng-content />\n <button\n *ngIf=\"options.cleaner()\"\n appearance=\"icon\"\n size=\"xs\"\n tabindex=\"-1\"\n tuiIconButton\n type=\"button\"\n class=\"t-clear\"\n [iconStart]=\"icons.close\"\n (click)=\"directive?.setValue('')\"\n (pointerdown.silent.prevent)=\"el?.nativeElement?.focus()\"\n ></button>\n <ng-content select=\"tui-icon\" />\n</span>\n<span class=\"t-template\">\n <ng-container *polymorpheusOutlet=\"content as text; context: {$implicit: control?.value}\">\n {{ text }}\n </ng-container>\n</span>\n<input\n *ngIf=\"showFiller\"\n aria-hidden=\"true\"\n disabled\n class=\"t-filler\"\n [value]=\"computedFiller\"\n/>\n","import {computed, Directive, inject, Input, signal} from '@angular/core';\nimport {TuiNativeValidator} from '@taiga-ui/cdk/directives/native-validator';\nimport {TuiIdService} from '@taiga-ui/cdk/services';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {\n TuiAppearance,\n tuiAppearance,\n tuiAppearanceFocus,\n tuiAppearanceState,\n} from '@taiga-ui/core/directives/appearance';\nimport type {TuiInteractiveState} from '@taiga-ui/core/types';\n\nimport {TuiTextfieldComponent} from './textfield.component';\nimport {TUI_TEXTFIELD_OPTIONS} from './textfield.options';\n\n@Directive()\nexport class TuiTextfieldBase {\n // TODO: refactor to signal inputs after Angular update\n private readonly focused = signal<boolean | null>(null);\n\n protected readonly a = tuiAppearance(inject(TUI_TEXTFIELD_OPTIONS).appearance);\n protected readonly s = tuiAppearanceState(null);\n protected readonly f = tuiAppearanceFocus(\n computed(() => this.focused() || this.textfield.focused()),\n );\n\n protected readonly textfield = inject(TuiTextfieldComponent);\n protected readonly id = inject(TuiIdService).generate();\n protected readonly el = tuiInjectElement<HTMLInputElement>();\n\n @Input()\n public readOnly = false;\n\n @Input()\n public invalid: boolean | null = null;\n\n @Input('focused')\n public set focusedSetter(focused: boolean | null) {\n this.focused.set(focused);\n }\n\n @Input('state')\n public set stateSetter(state: TuiInteractiveState | null) {\n this.s.set(state);\n }\n\n public get mode(): string | null {\n if (this.readOnly) {\n return 'readonly';\n }\n\n if (this.invalid === false) {\n return 'valid';\n }\n\n if (this.invalid) {\n return 'invalid';\n }\n\n return null;\n }\n\n public setValue(value: string): void {\n this.el.value = value;\n this.el.dispatchEvent(new Event('input', {bubbles: true}));\n }\n}\n\n@Directive({\n standalone: true,\n selector: 'input[tuiTextfield]',\n hostDirectives: [TuiNativeValidator, TuiAppearance],\n host: {\n '[id]': 'el.id || id',\n '[readOnly]': 'readOnly',\n '[class._empty]': 'el.value === \"\"',\n '[attr.data-mode]': 'mode',\n '(input)': '0',\n '(focusin)': '0',\n '(focusout)': '0',\n },\n})\nexport class TuiTextfieldDirective extends TuiTextfieldBase {}\n","import {CommonModule} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, inject, Input} from '@angular/core';\nimport {NgControl} from '@angular/forms';\nimport {WA_NAVIGATOR} from '@ng-web-apis/common';\nimport {TuiNativeValidator} from '@taiga-ui/cdk/directives/native-validator';\nimport {tuiProvide} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TuiAppearance} from '@taiga-ui/core/directives/appearance';\n\nimport {TuiTextfieldBase, TuiTextfieldDirective} from './textfield.directive';\n\n@Component({\n standalone: true,\n selector: 'select[tuiTextfield]',\n imports: [CommonModule],\n templateUrl: './select.template.html',\n // We want this template to follow change detection to parent textfield.\n // eslint-disable-next-line @angular-eslint/prefer-on-push-component-change-detection\n changeDetection: ChangeDetectionStrategy.Default,\n providers: [tuiProvide(TuiTextfieldDirective, TuiSelect)],\n hostDirectives: [TuiNativeValidator, TuiAppearance],\n host: {\n '[id]': 'el.id || id',\n '[attr.data-mode]': 'mode',\n '[class._empty]': 'value === \"\"',\n '(input)': '0',\n '(focusin)': '0',\n '(focusout)': '0',\n '(keydown.space.prevent)': '0',\n '(keydown.enter.prevent)': '0',\n '(keydown.backspace)': 'setValue(\"\")',\n '(mousedown.prevent)': 'focus()',\n '(keydown.control.c)': 'onCopy()',\n '(keydown.meta.c)': 'onCopy()',\n },\n})\nexport class TuiSelect extends TuiTextfieldBase {\n private readonly nav = inject(WA_NAVIGATOR);\n private readonly control = inject(NgControl);\n\n @Input()\n public placeholder = '';\n\n public override setValue(value: string): void {\n this.control.control?.setValue(value);\n this.el.dispatchEvent(new Event('input', {bubbles: true}));\n }\n\n public focus(): void {\n this.el.classList.add('_ios-fix');\n this.el.focus();\n this.el.classList.remove('_ios-fix');\n }\n\n protected get value(): string {\n return this.textfield.stringify(this.control.value ?? '');\n }\n\n protected async onCopy(): Promise<void> {\n await this.nav.clipboard.writeText(this.value);\n }\n}\n","<option\n *ngIf=\"placeholder && !value; else selected\"\n disabled\n selected\n value=\"\"\n>\n {{ placeholder }}\n</option>\n<ng-template #selected>\n <option\n *ngFor=\"let item of [value]\"\n selected\n >\n {{ item }}\n </option>\n</ng-template>\n","import {TuiLabel} from '@taiga-ui/core/components/label';\n\nimport {TuiSelect} from './select.directive';\nimport {TuiTextfieldComponent} from './textfield.component';\nimport {TuiTextfieldDirective} from './textfield.directive';\nimport {TuiTextfieldOptionsDirective} from './textfield.options';\nimport {TuiTextfieldDropdownDirective} from './textfield-dropdown.directive';\n\nexport const TuiTextfield = [\n TuiLabel,\n TuiSelect,\n TuiTextfieldComponent,\n TuiTextfieldDirective,\n TuiTextfieldOptionsDirective,\n TuiTextfieldDropdownDirective,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i3.TuiWithTextfieldDropdown","i2"],"mappings":"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"}
1
+ {"version":3,"file":"taiga-ui-core-components-textfield.mjs","sources":["../../../projects/core/components/textfield/textfield.options.ts","../../../projects/core/components/textfield/textfield-dropdown.directive.ts","../../../projects/core/components/textfield/textfield.component.ts","../../../projects/core/components/textfield/textfield.template.html","../../../projects/core/components/textfield/textfield.directive.ts","../../../projects/core/components/textfield/select.directive.ts","../../../projects/core/components/textfield/select.template.html","../../../projects/core/components/textfield/textfield.ts","../../../projects/core/components/textfield/taiga-ui-core-components-textfield.ts"],"sourcesContent":["import type {Provider, WritableSignal} from '@angular/core';\nimport {Directive, inject, Input, Optional, signal, SkipSelf} from '@angular/core';\nimport {tuiCreateToken, tuiProvide} from '@taiga-ui/cdk/utils/miscellaneous';\nimport type {TuiSizeL, TuiSizeS} from '@taiga-ui/core/types';\n\nconst DEFAULT = {\n appearance: 'textfield',\n size: 'l',\n cleaner: true,\n} as const;\n\nexport interface TuiTextfieldOptions {\n readonly appearance: WritableSignal<string>;\n readonly size: WritableSignal<TuiSizeL | TuiSizeS>;\n readonly cleaner: WritableSignal<boolean>;\n}\n\nexport const TUI_TEXTFIELD_OPTIONS = tuiCreateToken<TuiTextfieldOptions>({\n appearance: signal(DEFAULT.appearance),\n size: signal(DEFAULT.size),\n cleaner: signal(DEFAULT.cleaner),\n});\n\nexport function tuiTextfieldOptionsProvider(\n options: Partial<TuiTextfieldOptions>,\n): Provider {\n return {\n provide: TUI_TEXTFIELD_OPTIONS,\n deps: [[new Optional(), new SkipSelf(), TUI_TEXTFIELD_OPTIONS]],\n useFactory: (parent: TuiTextfieldOptions | null) => ({\n appearance: signal(parent?.appearance() ?? DEFAULT.appearance),\n size: signal(parent?.size() ?? DEFAULT.size),\n cleaner: signal(parent?.cleaner() ?? DEFAULT.cleaner),\n ...options,\n }),\n };\n}\n\n@Directive({\n standalone: true,\n selector: '[tuiTextfieldAppearance],[tuiTextfieldSize],[tuiTextfieldCleaner]',\n providers: [tuiProvide(TUI_TEXTFIELD_OPTIONS, TuiTextfieldOptionsDirective)],\n})\nexport class TuiTextfieldOptionsDirective implements TuiTextfieldOptions {\n private readonly options = inject(TUI_TEXTFIELD_OPTIONS, {skipSelf: true});\n\n // TODO: refactor to signal inputs after Angular update\n public appearance = signal(this.options.appearance());\n public size = signal(this.options.size());\n public cleaner = signal(this.options.cleaner());\n\n @Input()\n public set tuiTextfieldAppearance(appearance: string) {\n this.appearance.set(appearance);\n }\n\n @Input()\n public set tuiTextfieldSize(size: TuiSizeL | TuiSizeS) {\n this.size.set(size);\n }\n\n @Input()\n public set tuiTextfieldCleaner(enabled: boolean) {\n this.cleaner.set(enabled);\n }\n}\n","import {ContentChild, Directive, TemplateRef} from '@angular/core';\nimport {tuiDropdown} from '@taiga-ui/core/directives/dropdown';\nimport type {PolymorpheusContent} from '@taiga-ui/polymorpheus';\n\n@Directive({\n standalone: true,\n selector: 'ng-template[tuiTextfieldDropdown]',\n})\nexport class TuiTextfieldDropdownDirective {}\n\n@Directive({\n standalone: true,\n})\nexport class TuiWithTextfieldDropdown {\n private readonly dropdown = tuiDropdown(null);\n\n @ContentChild(TuiTextfieldDropdownDirective, {read: TemplateRef})\n protected set template(template: PolymorpheusContent) {\n this.dropdown.set(template);\n }\n}\n","import {NgIf} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n ContentChild,\n ElementRef,\n forwardRef,\n inject,\n Input,\n ViewEncapsulation,\n} from '@angular/core';\nimport {NgControl} from '@angular/forms';\nimport {WaResizeObserver} from '@ng-web-apis/resize-observer';\nimport {TuiNativeValidator} from '@taiga-ui/cdk/directives/native-validator';\nimport type {TuiContext, TuiStringHandler} from '@taiga-ui/cdk/types';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {tuiFocusedIn} from '@taiga-ui/cdk/utils/focus';\nimport {TuiButton} from '@taiga-ui/core/components/button';\nimport type {TuiDataListHost} from '@taiga-ui/core/components/data-list';\nimport {tuiAsDataListHost} from '@taiga-ui/core/components/data-list';\nimport {TuiLabel} from '@taiga-ui/core/components/label';\nimport {\n TuiDropdownDirective,\n tuiDropdownOpen,\n tuiDropdownOptionsProvider,\n TuiWithDropdownOpen,\n} from '@taiga-ui/core/directives/dropdown';\nimport {TuiWithIcons} from '@taiga-ui/core/directives/icons';\nimport {TUI_COMMON_ICONS} from '@taiga-ui/core/tokens';\nimport type {TuiSizeL, TuiSizeS} from '@taiga-ui/core/types';\nimport type {PolymorpheusContent} from '@taiga-ui/polymorpheus';\nimport {PolymorpheusOutlet} from '@taiga-ui/polymorpheus';\n\nimport {TuiTextfieldDirective} from './textfield.directive';\nimport {TUI_TEXTFIELD_OPTIONS} from './textfield.options';\nimport {TuiWithTextfieldDropdown} from './textfield-dropdown.directive';\n\n@Component({\n standalone: true,\n selector: 'tui-textfield',\n imports: [NgIf, WaResizeObserver, TuiButton, PolymorpheusOutlet],\n templateUrl: './textfield.template.html',\n styles: ['@import \"@taiga-ui/core/styles/components/textfield.less\";'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n tuiAsDataListHost(TuiTextfieldComponent),\n tuiDropdownOptionsProvider({limitWidth: 'fixed'}),\n ],\n hostDirectives: [\n TuiNativeValidator,\n TuiDropdownDirective,\n TuiWithDropdownOpen,\n TuiWithTextfieldDropdown,\n TuiWithIcons,\n ],\n host: {\n '[style.--t-side.px]': 'side',\n '[attr.data-size]': 'options.size()',\n '[class._with-label]': 'hasLabel',\n '[class._disabled]': 'el?.nativeElement.disabled',\n },\n})\nexport class TuiTextfieldComponent<T> implements TuiDataListHost<T> {\n private readonly open = tuiDropdownOpen();\n private readonly focusedIn = tuiFocusedIn(tuiInjectElement());\n\n @ContentChild(forwardRef(() => TuiTextfieldDirective))\n protected readonly directive?: TuiTextfieldDirective;\n\n @ContentChild(forwardRef(() => TuiLabel), {read: ElementRef})\n protected readonly label?: ElementRef<HTMLElement>;\n\n @ContentChild(NgControl)\n protected readonly control?: NgControl;\n\n protected side = 0;\n\n protected readonly options = inject(TUI_TEXTFIELD_OPTIONS);\n protected readonly icons = inject(TUI_COMMON_ICONS);\n\n @ContentChild(forwardRef(() => TuiTextfieldDirective), {read: ElementRef})\n public readonly el?: ElementRef<HTMLInputElement>;\n\n @Input()\n public filler = '';\n\n @Input()\n public stringify: TuiStringHandler<T> = String;\n\n @Input()\n public content: PolymorpheusContent<TuiContext<T>>;\n\n public readonly focused = computed(() => this.open() || this.focusedIn());\n\n public get id(): string {\n return this.el?.nativeElement.id || '';\n }\n\n public get size(): TuiSizeL | TuiSizeS {\n return this.options.size();\n }\n\n public handleOption(option: T): void {\n this.directive?.setValue(this.stringify(option));\n this.open.set(false);\n }\n\n protected get computedFiller(): string {\n const value = this.el?.nativeElement.value || '';\n const filler = value + this.filler.slice(value.length);\n\n return filler.length > value.length ? filler : '';\n }\n\n protected get showFiller(): boolean {\n return (\n this.focused() &&\n !!this.computedFiller &&\n (!!this.el?.nativeElement.value || !this.el?.nativeElement.placeholder)\n );\n }\n\n protected get hasLabel(): boolean {\n return Boolean(this.label?.nativeElement?.childNodes.length);\n }\n\n protected onResize(entry: readonly ResizeObserverEntry[]): void {\n this.side = entry[0]?.contentRect?.width || 0;\n }\n}\n","<ng-content select=\"input\" />\n<ng-content select=\"select\" />\n<ng-content select=\"label\" />\n<span\n class=\"t-content\"\n (waResizeObserver)=\"onResize($event)\"\n>\n <ng-content />\n <button\n *ngIf=\"options.cleaner()\"\n appearance=\"icon\"\n size=\"xs\"\n tabindex=\"-1\"\n tuiIconButton\n type=\"button\"\n class=\"t-clear\"\n [iconStart]=\"icons.close\"\n (click)=\"directive?.setValue('')\"\n (pointerdown.silent.prevent)=\"el?.nativeElement?.focus()\"\n ></button>\n <ng-content select=\"tui-icon\" />\n</span>\n<span class=\"t-template\">\n <ng-container *polymorpheusOutlet=\"content as text; context: {$implicit: control?.value}\">\n {{ text }}\n </ng-container>\n</span>\n<input\n *ngIf=\"showFiller\"\n aria-hidden=\"true\"\n disabled\n class=\"t-filler\"\n [value]=\"computedFiller\"\n/>\n","import {computed, Directive, inject, Input, signal} from '@angular/core';\nimport {TuiNativeValidator} from '@taiga-ui/cdk/directives/native-validator';\nimport {TuiIdService} from '@taiga-ui/cdk/services';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {\n TuiAppearance,\n tuiAppearance,\n tuiAppearanceFocus,\n tuiAppearanceState,\n} from '@taiga-ui/core/directives/appearance';\nimport type {TuiInteractiveState} from '@taiga-ui/core/types';\n\nimport {TuiTextfieldComponent} from './textfield.component';\nimport {TUI_TEXTFIELD_OPTIONS} from './textfield.options';\n\n@Directive()\nexport class TuiTextfieldBase {\n // TODO: refactor to signal inputs after Angular update\n private readonly focused = signal<boolean | null>(null);\n\n protected readonly a = tuiAppearance(inject(TUI_TEXTFIELD_OPTIONS).appearance);\n protected readonly s = tuiAppearanceState(null);\n protected readonly f = tuiAppearanceFocus(\n computed(() => this.focused() || this.textfield.focused()),\n );\n\n protected readonly textfield = inject(TuiTextfieldComponent);\n protected readonly id = inject(TuiIdService).generate();\n protected readonly el = tuiInjectElement<HTMLInputElement>();\n\n @Input()\n public readOnly = false;\n\n @Input()\n public invalid: boolean | null = null;\n\n @Input('focused')\n public set focusedSetter(focused: boolean | null) {\n this.focused.set(focused);\n }\n\n @Input('state')\n public set stateSetter(state: TuiInteractiveState | null) {\n this.s.set(state);\n }\n\n public get mode(): string | null {\n if (this.readOnly) {\n return 'readonly';\n }\n\n if (this.invalid === false) {\n return 'valid';\n }\n\n if (this.invalid) {\n return 'invalid';\n }\n\n return null;\n }\n\n public setValue(value: string): void {\n this.el.value = value;\n this.el.dispatchEvent(new Event('input', {bubbles: true}));\n }\n}\n\n@Directive({\n standalone: true,\n selector: 'input[tuiTextfield]',\n hostDirectives: [TuiNativeValidator, TuiAppearance],\n host: {\n '[id]': 'el.id || id',\n '[readOnly]': 'readOnly',\n '[class._empty]': 'el.value === \"\"',\n '[attr.data-mode]': 'mode',\n '(input)': '0',\n '(focusin)': '0',\n '(focusout)': '0',\n },\n})\nexport class TuiTextfieldDirective extends TuiTextfieldBase {}\n","import {CommonModule} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, inject, Input} from '@angular/core';\nimport {NgControl} from '@angular/forms';\nimport {WA_NAVIGATOR} from '@ng-web-apis/common';\nimport {TuiNativeValidator} from '@taiga-ui/cdk/directives/native-validator';\nimport {tuiProvide} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TuiAppearance} from '@taiga-ui/core/directives/appearance';\n\nimport {TuiTextfieldBase, TuiTextfieldDirective} from './textfield.directive';\n\n@Component({\n standalone: true,\n selector: 'select[tuiTextfield]',\n imports: [CommonModule],\n templateUrl: './select.template.html',\n // We want this template to follow change detection to parent textfield.\n // eslint-disable-next-line @angular-eslint/prefer-on-push-component-change-detection\n changeDetection: ChangeDetectionStrategy.Default,\n providers: [tuiProvide(TuiTextfieldDirective, TuiSelect)],\n hostDirectives: [TuiNativeValidator, TuiAppearance],\n host: {\n '[id]': 'el.id || id',\n '[attr.data-mode]': 'mode',\n '[class._empty]': 'value === \"\"',\n '(input)': '0',\n '(focusin)': '0',\n '(focusout)': '0',\n '(keydown.space.prevent)': '0',\n '(keydown.enter.prevent)': '0',\n '(keydown.backspace)': 'setValue(\"\")',\n '(mousedown.prevent)': 'focus()',\n '(keydown.control.c)': 'onCopy()',\n '(keydown.meta.c)': 'onCopy()',\n },\n})\nexport class TuiSelect extends TuiTextfieldBase {\n private readonly nav = inject(WA_NAVIGATOR);\n private readonly control = inject(NgControl);\n\n @Input()\n public placeholder = '';\n\n public override setValue(value: string): void {\n this.control.control?.setValue(value);\n this.el.dispatchEvent(new Event('input', {bubbles: true}));\n }\n\n public focus(): void {\n this.el.classList.add('_ios-fix');\n this.el.focus();\n this.el.classList.remove('_ios-fix');\n }\n\n protected get value(): string {\n return this.textfield.stringify(this.control.value ?? '');\n }\n\n protected async onCopy(): Promise<void> {\n await this.nav.clipboard.writeText(this.value);\n }\n}\n","<option\n *ngIf=\"placeholder && !value; else selected\"\n disabled\n selected\n value=\"\"\n>\n {{ placeholder }}\n</option>\n<ng-template #selected>\n <option\n *ngFor=\"let item of [value]\"\n selected\n >\n {{ item }}\n </option>\n</ng-template>\n","import {TuiLabel} from '@taiga-ui/core/components/label';\n\nimport {TuiSelect} from './select.directive';\nimport {TuiTextfieldComponent} from './textfield.component';\nimport {TuiTextfieldDirective} from './textfield.directive';\nimport {TuiTextfieldOptionsDirective} from './textfield.options';\nimport {TuiTextfieldDropdownDirective} from './textfield-dropdown.directive';\n\nexport const TuiTextfield = [\n TuiLabel,\n TuiSelect,\n TuiTextfieldComponent,\n TuiTextfieldDirective,\n TuiTextfieldOptionsDirective,\n TuiTextfieldDropdownDirective,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i3.TuiWithTextfieldDropdown","i2"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAKA,MAAM,OAAO,GAAG;AACZ,IAAA,UAAU,EAAE,WAAW;AACvB,IAAA,IAAI,EAAE,GAAG;AACT,IAAA,OAAO,EAAE,IAAI;CACP,CAAC;AAQJ,MAAM,qBAAqB,GAAG,cAAc,CAAsB;AACrE,IAAA,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC;AACtC,IAAA,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;AAC1B,IAAA,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC;AACnC,CAAA,EAAE;AAEG,SAAU,2BAA2B,CACvC,OAAqC,EAAA;IAErC,OAAO;AACH,QAAA,OAAO,EAAE,qBAAqB;AAC9B,QAAA,IAAI,EAAE,CAAC,CAAC,IAAI,QAAQ,EAAE,EAAE,IAAI,QAAQ,EAAE,EAAE,qBAAqB,CAAC,CAAC;AAC/D,QAAA,UAAU,EAAE,CAAC,MAAkC,MAAM;YACjD,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,OAAO,CAAC,UAAU,CAAC;YAC9D,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,OAAO,CAAC,IAAI,CAAC;YAC5C,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,OAAO,CAAC,OAAO,CAAC;AACrD,YAAA,GAAG,OAAO;SACb,CAAC;KACL,CAAC;AACN,CAAC;AAED,MAKa,4BAA4B,CAAA;AALzC,IAAA,WAAA,GAAA;QAMqB,IAAO,CAAA,OAAA,GAAG,MAAM,CAAC,qBAAqB,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAC;;QAGpE,IAAU,CAAA,UAAA,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;QAC/C,IAAI,CAAA,IAAA,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QACnC,IAAO,CAAA,OAAA,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;AAgBnD,KAAA;IAdG,IACW,sBAAsB,CAAC,UAAkB,EAAA;AAChD,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;KACnC;IAED,IACW,gBAAgB,CAAC,IAAyB,EAAA;AACjD,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;KACvB;IAED,IACW,mBAAmB,CAAC,OAAgB,EAAA;AAC3C,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;KAC7B;+GArBQ,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAA5B,4BAA4B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mEAAA,EAAA,MAAA,EAAA,EAAA,sBAAA,EAAA,wBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,EAAA,SAAA,EAF1B,CAAC,UAAU,CAAC,qBAAqB,EAAE,4BAA4B,CAAC,CAAC,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;4FAEnE,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBALxC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,mEAAmE;AAC7E,oBAAA,SAAS,EAAE,CAAC,UAAU,CAAC,qBAAqB,+BAA+B,CAAC;AAC/E,iBAAA,CAAA;8BAUc,sBAAsB,EAAA,CAAA;sBADhC,KAAK;gBAMK,gBAAgB,EAAA,CAAA;sBAD1B,KAAK;gBAMK,mBAAmB,EAAA,CAAA;sBAD7B,KAAK;;;ACzDV,MAIa,6BAA6B,CAAA;+GAA7B,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAA7B,6BAA6B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mCAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;4FAA7B,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAJzC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,mCAAmC;AAChD,iBAAA,CAAA;;AAGD,MAGa,wBAAwB,CAAA;AAHrC,IAAA,WAAA,GAAA;AAIqB,QAAA,IAAA,CAAA,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;AAMjD,KAAA;IAJG,IACc,QAAQ,CAAC,QAA6B,EAAA;AAChD,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;KAC/B;+GANQ,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAAxB,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAGnB,6BAA6B,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAAS,WAAW,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;4FAHtD,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAHpC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,UAAU,EAAE,IAAI;AACnB,iBAAA,CAAA;8BAKiB,QAAQ,EAAA,CAAA;sBADrB,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,6BAA6B,EAAE,EAAC,IAAI,EAAE,WAAW,EAAC,CAAA;;;ACsBpE,MA0Ba,qBAAqB,CAAA;AA1BlC,IAAA,WAAA,GAAA;QA2BqB,IAAI,CAAA,IAAA,GAAG,eAAe,EAAE,CAAC;AACzB,QAAA,IAAA,CAAA,SAAS,GAAG,YAAY,CAAC,gBAAgB,EAAE,CAAC,CAAC;QAWpD,IAAI,CAAA,IAAA,GAAG,CAAC,CAAC;AAEA,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAC;AACxC,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;QAM7C,IAAM,CAAA,MAAA,GAAG,EAAE,CAAC;QAGZ,IAAS,CAAA,SAAA,GAAwB,MAAM,CAAC;AAK/B,QAAA,IAAA,CAAA,OAAO,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;AAqC7E,KAAA;AAnCG,IAAA,IAAW,EAAE,GAAA;QACT,OAAO,IAAI,CAAC,EAAE,EAAE,aAAa,CAAC,EAAE,IAAI,EAAE,CAAC;KAC1C;AAED,IAAA,IAAW,IAAI,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;KAC9B;AAEM,IAAA,YAAY,CAAC,MAAS,EAAA;AACzB,QAAA,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;AACjD,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;KACxB;AAED,IAAA,IAAc,cAAc,GAAA;QACxB,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,EAAE,aAAa,CAAC,KAAK,IAAI,EAAE,CAAC;AACjD,QAAA,MAAM,MAAM,GAAG,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AAEvD,QAAA,OAAO,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC;KACrD;AAED,IAAA,IAAc,UAAU,GAAA;AACpB,QAAA,QACI,IAAI,CAAC,OAAO,EAAE;YACd,CAAC,CAAC,IAAI,CAAC,cAAc;aACpB,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,aAAa,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,aAAa,CAAC,WAAW,CAAC,EACzE;KACL;AAED,IAAA,IAAc,QAAQ,GAAA;AAClB,QAAA,OAAO,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,aAAa,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;KAChE;AAES,IAAA,QAAQ,CAAC,KAAqC,EAAA;AACpD,QAAA,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,IAAI,CAAC,CAAC;KACjD;+GAlEQ,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,EAlBnB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,SAAA,EAAA,WAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,4BAAA,EAAA,EAAA,EAAA,SAAA,EAAA;YACP,iBAAiB,CAAC,qBAAqB,CAAC;AACxC,YAAA,0BAA0B,CAAC,EAAC,UAAU,EAAE,OAAO,EAAC,CAAC;SACpD,EAmB8B,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,EAAA,CAAA,UAAA,CAAA,YAAA,EAAA,OAAA,qBAAqB,+GAGrB,QAAQ,CAAA,EAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAAU,UAAU,EAG7C,EAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,SAAS,wGAQQ,qBAAqB,CAAA,EAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAAU,UAAU,EClF5E,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,EAAA,EAAA,SAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,EAAA,EAAA,SAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,EAAA,EAAA,SAAA,EAAAA,wBAAA,EAAA,EAAA,EAAA,SAAA,EAAA,EAAA,CAAA,YAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,i6BAkCA,2+ODOc,IAAI,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,gBAAgB,EAAE,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,SAAS,oIAAE,kBAAkB,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,2BAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;4FAuBtD,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBA1BjC,SAAS;iCACM,IAAI,EAAA,QAAA,EACN,eAAe,EAChB,OAAA,EAAA,CAAC,IAAI,EAAE,gBAAgB,EAAE,SAAS,EAAE,kBAAkB,CAAC,EAAA,aAAA,EAGjD,iBAAiB,CAAC,IAAI,mBACpB,uBAAuB,CAAC,MAAM,EACpC,SAAA,EAAA;AACP,wBAAA,iBAAiB,CAAuB,qBAAA,CAAA;AACxC,wBAAA,0BAA0B,CAAC,EAAC,UAAU,EAAE,OAAO,EAAC,CAAC;qBACpD,EACe,cAAA,EAAA;wBACZ,kBAAkB;wBAClB,oBAAoB;wBACpB,mBAAmB;wBACnB,wBAAwB;wBACxB,YAAY;qBACf,EACK,IAAA,EAAA;AACF,wBAAA,qBAAqB,EAAE,MAAM;AAC7B,wBAAA,kBAAkB,EAAE,gBAAgB;AACpC,wBAAA,qBAAqB,EAAE,UAAU;AACjC,wBAAA,mBAAmB,EAAE,4BAA4B;AACpD,qBAAA,EAAA,QAAA,EAAA,i6BAAA,EAAA,MAAA,EAAA,CAAA,m7OAAA,CAAA,EAAA,CAAA;8BAOkB,SAAS,EAAA,CAAA;sBAD3B,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,UAAU,CAAC,MAAM,qBAAqB,CAAC,CAAA;gBAIlC,KAAK,EAAA,CAAA;sBADvB,YAAY;uBAAC,UAAU,CAAC,MAAM,QAAQ,CAAC,EAAE,EAAC,IAAI,EAAE,UAAU,EAAC,CAAA;gBAIzC,OAAO,EAAA,CAAA;sBADzB,YAAY;uBAAC,SAAS,CAAA;gBASP,EAAE,EAAA,CAAA;sBADjB,YAAY;uBAAC,UAAU,CAAC,MAAM,qBAAqB,CAAC,EAAE,EAAC,IAAI,EAAE,UAAU,EAAC,CAAA;gBAIlE,MAAM,EAAA,CAAA;sBADZ,KAAK;gBAIC,SAAS,EAAA,CAAA;sBADf,KAAK;gBAIC,OAAO,EAAA,CAAA;sBADb,KAAK;;;AE5EV,MACa,gBAAgB,CAAA;AAD7B,IAAA,WAAA,GAAA;;AAGqB,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;QAErC,IAAC,CAAA,CAAA,GAAG,aAAa,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC,UAAU,CAAC,CAAC;AAC5D,QAAA,IAAA,CAAA,CAAC,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAC7B,IAAC,CAAA,CAAA,GAAG,kBAAkB,CACrC,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAC7D,CAAC;AAEiB,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAC;QAC1C,IAAE,CAAA,EAAA,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,QAAQ,EAAE,CAAC;QACrC,IAAE,CAAA,EAAA,GAAG,gBAAgB,EAAoB,CAAC;QAGtD,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;QAGjB,IAAO,CAAA,OAAA,GAAmB,IAAI,CAAC;AAgCzC,KAAA;IA9BG,IACW,aAAa,CAAC,OAAuB,EAAA;AAC5C,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;KAC7B;IAED,IACW,WAAW,CAAC,KAAiC,EAAA;AACpD,QAAA,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;KACrB;AAED,IAAA,IAAW,IAAI,GAAA;QACX,IAAI,IAAI,CAAC,QAAQ,EAAE;AACf,YAAA,OAAO,UAAU,CAAC;AACrB,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,OAAO,KAAK,KAAK,EAAE;AACxB,YAAA,OAAO,OAAO,CAAC;AAClB,SAAA;QAED,IAAI,IAAI,CAAC,OAAO,EAAE;AACd,YAAA,OAAO,SAAS,CAAC;AACpB,SAAA;AAED,QAAA,OAAO,IAAI,CAAC;KACf;AAEM,IAAA,QAAQ,CAAC,KAAa,EAAA;AACzB,QAAA,IAAI,CAAC,EAAE,CAAC,KAAK,GAAG,KAAK,CAAC;AACtB,QAAA,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,EAAC,OAAO,EAAE,IAAI,EAAC,CAAC,CAAC,CAAC;KAC9D;+GAjDQ,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAAhB,gBAAgB,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,SAAA,EAAA,eAAA,CAAA,EAAA,WAAA,EAAA,CAAA,OAAA,EAAA,aAAA,CAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;4FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAD5B,SAAS;8BAgBC,QAAQ,EAAA,CAAA;sBADd,KAAK;gBAIC,OAAO,EAAA,CAAA;sBADb,KAAK;gBAIK,aAAa,EAAA,CAAA;sBADvB,KAAK;uBAAC,SAAS,CAAA;gBAML,WAAW,EAAA,CAAA;sBADrB,KAAK;uBAAC,OAAO,CAAA;;AA2BlB,MAca,qBAAsB,SAAQ,gBAAgB,CAAA;+GAA9C,qBAAqB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,GAAA,EAAA,SAAA,EAAA,GAAA,EAAA,UAAA,EAAA,GAAA,EAAA,EAAA,UAAA,EAAA,EAAA,IAAA,EAAA,aAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,EAAA,EAAA,SAAA,EAAAC,IAAA,CAAA,aAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;4FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAdjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,cAAc,EAAE,CAAC,kBAAkB,EAAE,aAAa,CAAC;AACnD,oBAAA,IAAI,EAAE;AACF,wBAAA,MAAM,EAAE,aAAa;AACrB,wBAAA,YAAY,EAAE,UAAU;AACxB,wBAAA,gBAAgB,EAAE,iBAAiB;AACnC,wBAAA,kBAAkB,EAAE,MAAM;AAC1B,wBAAA,SAAS,EAAE,GAAG;AACd,wBAAA,WAAW,EAAE,GAAG;AAChB,wBAAA,YAAY,EAAE,GAAG;AACpB,qBAAA;AACJ,iBAAA,CAAA;;;ACvED,MAyBa,SAAU,SAAQ,gBAAgB,CAAA;AAzB/C,IAAA,WAAA,GAAA;;AA0BqB,QAAA,IAAA,CAAA,GAAG,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;AAC3B,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;QAGtC,IAAW,CAAA,WAAA,GAAG,EAAE,CAAC;AAoB3B,KAAA;AAlBmB,IAAA,QAAQ,CAAC,KAAa,EAAA;QAClC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;AACtC,QAAA,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,EAAC,OAAO,EAAE,IAAI,EAAC,CAAC,CAAC,CAAC;KAC9D;IAEM,KAAK,GAAA;QACR,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AAClC,QAAA,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;QAChB,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;KACxC;AAED,IAAA,IAAc,KAAK,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;KAC7D;AAES,IAAA,MAAM,MAAM,GAAA;AAClB,QAAA,MAAM,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAClD;+GAxBQ,SAAS,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAT,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,SAAS,EAjBP,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,GAAA,EAAA,SAAA,EAAA,GAAA,EAAA,UAAA,EAAA,GAAA,EAAA,uBAAA,EAAA,GAAA,EAAA,uBAAA,EAAA,GAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,EAAA,UAAA,EAAA,EAAA,IAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,SAAA,EAAA,CAAC,UAAU,CAAC,qBAAqB,EAAE,SAAS,CAAC,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,EAAA,EAAA,SAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EClB7D,0SAgBA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDHc,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,OAAA,EAAA,CAAA,CAAA,EAAA;;4FAsBb,SAAS,EAAA,UAAA,EAAA,CAAA;kBAzBrB,SAAS;iCACM,IAAI,EAAA,QAAA,EACN,sBAAsB,EACvB,OAAA,EAAA,CAAC,YAAY,CAAC,EAAA,eAAA,EAIN,uBAAuB,CAAC,OAAO,EAAA,SAAA,EACrC,CAAC,UAAU,CAAC,qBAAqB,EAAA,SAAA,CAAY,CAAC,EAAA,cAAA,EACzC,CAAC,kBAAkB,EAAE,aAAa,CAAC,EAC7C,IAAA,EAAA;AACF,wBAAA,MAAM,EAAE,aAAa;AACrB,wBAAA,kBAAkB,EAAE,MAAM;AAC1B,wBAAA,gBAAgB,EAAE,cAAc;AAChC,wBAAA,SAAS,EAAE,GAAG;AACd,wBAAA,WAAW,EAAE,GAAG;AAChB,wBAAA,YAAY,EAAE,GAAG;AACjB,wBAAA,yBAAyB,EAAE,GAAG;AAC9B,wBAAA,yBAAyB,EAAE,GAAG;AAC9B,wBAAA,qBAAqB,EAAE,cAAc;AACrC,wBAAA,qBAAqB,EAAE,SAAS;AAChC,wBAAA,qBAAqB,EAAE,UAAU;AACjC,wBAAA,kBAAkB,EAAE,UAAU;AACjC,qBAAA,EAAA,QAAA,EAAA,0SAAA,EAAA,CAAA;8BAOM,WAAW,EAAA,CAAA;sBADjB,KAAK;;;AE/BG,MAAA,YAAY,GAAG;IACxB,QAAQ;IACR,SAAS;IACT,qBAAqB;IACrB,qBAAqB;IACrB,4BAA4B;IAC5B,6BAA6B;;;ACdjC;;AAEG;;;;"}
@@ -5,13 +5,13 @@ import { tuiInjectIconResolver, TUI_ICON_START, TUI_ICON_END } from '@taiga-ui/c
5
5
 
6
6
  class TuiIconsStyles {
7
7
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiIconsStyles, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
8
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiIconsStyles, isStandalone: true, selector: "ng-component", host: { classAttribute: "tui-icons" }, ngImport: i0, template: '', isInline: true, styles: ["[tuiIcons]{--t-icon-start: none;--t-icon-end: none}[tuiIcons]:before,[tuiIcons]:after{content:\"\";display:var(--t-icon-start);width:1em;height:1em;font-size:1.5rem;flex-shrink:0;background:currentColor;-webkit-mask:var(--t-icon-start) no-repeat center / contain;mask:var(--t-icon-start) no-repeat center / contain}[tuiIcons]:after{display:var(--t-icon-end);-webkit-mask:var(--t-icon-end) no-repeat center / contain;mask:var(--t-icon-end) no-repeat center / contain}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
8
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiIconsStyles, isStandalone: true, selector: "ng-component", host: { classAttribute: "tui-icons" }, ngImport: i0, template: '', isInline: true, styles: ["[tuiIcons]{--t-icon-start: none;--t-icon-end: none}[tuiIcons]:before,[tuiIcons]:after{content:\"\";display:var(--t-icon-start);width:1em;height:1em;line-height:1em;font-size:1.5rem;flex-shrink:0;background:currentColor;-webkit-mask:var(--t-icon-start) no-repeat center / contain;mask:var(--t-icon-start) no-repeat center / contain}[tuiIcons]:after{display:var(--t-icon-end);-webkit-mask:var(--t-icon-end) no-repeat center / contain;mask:var(--t-icon-end) no-repeat center / contain}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
9
9
  }
10
10
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiIconsStyles, decorators: [{
11
11
  type: Component,
12
12
  args: [{ standalone: true, template: '', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
13
13
  class: 'tui-icons',
14
- }, styles: ["[tuiIcons]{--t-icon-start: none;--t-icon-end: none}[tuiIcons]:before,[tuiIcons]:after{content:\"\";display:var(--t-icon-start);width:1em;height:1em;font-size:1.5rem;flex-shrink:0;background:currentColor;-webkit-mask:var(--t-icon-start) no-repeat center / contain;mask:var(--t-icon-start) no-repeat center / contain}[tuiIcons]:after{display:var(--t-icon-end);-webkit-mask:var(--t-icon-end) no-repeat center / contain;mask:var(--t-icon-end) no-repeat center / contain}\n"] }]
14
+ }, styles: ["[tuiIcons]{--t-icon-start: none;--t-icon-end: none}[tuiIcons]:before,[tuiIcons]:after{content:\"\";display:var(--t-icon-start);width:1em;height:1em;line-height:1em;font-size:1.5rem;flex-shrink:0;background:currentColor;-webkit-mask:var(--t-icon-start) no-repeat center / contain;mask:var(--t-icon-start) no-repeat center / contain}[tuiIcons]:after{display:var(--t-icon-end);-webkit-mask:var(--t-icon-end) no-repeat center / contain;mask:var(--t-icon-end) no-repeat center / contain}\n"] }]
15
15
  }] });
16
16
  class TuiIcons {
17
17
  constructor() {
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-core-directives-icons.mjs","sources":["../../../projects/core/directives/icons/icons.directive.ts","../../../projects/core/directives/icons/with-icons.ts","../../../projects/core/directives/icons/taiga-ui-core-directives-icons.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n Directive,\n inject,\n Input,\n ViewEncapsulation,\n} from '@angular/core';\nimport type {TuiStringHandler} from '@taiga-ui/cdk/types';\nimport {tuiWithStyles} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TUI_ICON_END, TUI_ICON_START, tuiInjectIconResolver} from '@taiga-ui/core/tokens';\n\n@Component({\n standalone: true,\n template: '',\n styles: ['@import \"@taiga-ui/core/styles/components/icons.less\";'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'tui-icons',\n },\n})\nclass TuiIconsStyles {}\n\n@Directive({\n standalone: true,\n host: {\n tuiIcons: '',\n '[style.--t-icon-start]': 'iconStart ? \"url(\" + resolver(iconStart) + \")\" : null',\n '[style.--t-icon-end]': 'iconEnd ? \"url(\" + resolver(iconEnd) + \")\" : null',\n },\n})\nexport class TuiIcons {\n protected readonly nothing = tuiWithStyles(TuiIconsStyles);\n protected readonly resolver: TuiStringHandler<string> = tuiInjectIconResolver();\n\n @Input()\n public iconStart = inject(TUI_ICON_START, {self: true, optional: true}) || '';\n\n @Input()\n public iconEnd = inject(TUI_ICON_END, {self: true, optional: true}) || '';\n}\n","import {Directive} from '@angular/core';\n\nimport {TuiIcons} from './icons.directive';\n\n@Directive({\n standalone: true,\n hostDirectives: [\n {\n directive: TuiIcons,\n inputs: ['iconStart', 'iconEnd'],\n },\n ],\n})\nexport class TuiWithIcons {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.TuiIcons"],"mappings":"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"}
1
+ {"version":3,"file":"taiga-ui-core-directives-icons.mjs","sources":["../../../projects/core/directives/icons/icons.directive.ts","../../../projects/core/directives/icons/with-icons.ts","../../../projects/core/directives/icons/taiga-ui-core-directives-icons.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n Directive,\n inject,\n Input,\n ViewEncapsulation,\n} from '@angular/core';\nimport type {TuiStringHandler} from '@taiga-ui/cdk/types';\nimport {tuiWithStyles} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TUI_ICON_END, TUI_ICON_START, tuiInjectIconResolver} from '@taiga-ui/core/tokens';\n\n@Component({\n standalone: true,\n template: '',\n styles: ['@import \"@taiga-ui/core/styles/components/icons.less\";'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'tui-icons',\n },\n})\nclass TuiIconsStyles {}\n\n@Directive({\n standalone: true,\n host: {\n tuiIcons: '',\n '[style.--t-icon-start]': 'iconStart ? \"url(\" + resolver(iconStart) + \")\" : null',\n '[style.--t-icon-end]': 'iconEnd ? \"url(\" + resolver(iconEnd) + \")\" : null',\n },\n})\nexport class TuiIcons {\n protected readonly nothing = tuiWithStyles(TuiIconsStyles);\n protected readonly resolver: TuiStringHandler<string> = tuiInjectIconResolver();\n\n @Input()\n public iconStart = inject(TUI_ICON_START, {self: true, optional: true}) || '';\n\n @Input()\n public iconEnd = inject(TUI_ICON_END, {self: true, optional: true}) || '';\n}\n","import {Directive} from '@angular/core';\n\nimport {TuiIcons} from './icons.directive';\n\n@Directive({\n standalone: true,\n hostDirectives: [\n {\n directive: TuiIcons,\n inputs: ['iconStart', 'iconEnd'],\n },\n ],\n})\nexport class TuiWithIcons {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.TuiIcons"],"mappings":"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"}
@@ -8,7 +8,7 @@ class TuiMonthPipe {
8
8
  this.months$ = inject(TUI_MONTHS);
9
9
  }
10
10
  transform({ month }) {
11
- return this.months$.pipe(map((months) => months[month]));
11
+ return this.months$.pipe(map((months) => months[month] || months[0]));
12
12
  }
13
13
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiMonthPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
14
14
  static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: TuiMonthPipe, isStandalone: true, name: "tuiMonth" }); }
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-core-pipes-month.mjs","sources":["../../../projects/core/pipes/month/month.pipe.ts","../../../projects/core/pipes/month/taiga-ui-core-pipes-month.ts"],"sourcesContent":["import type {PipeTransform} from '@angular/core';\nimport {inject, Pipe} from '@angular/core';\nimport type {TuiMonth} from '@taiga-ui/cdk/date-time';\nimport {TUI_MONTHS} from '@taiga-ui/core/tokens';\nimport type {Observable} from 'rxjs';\nimport {map} from 'rxjs';\n\n@Pipe({\n standalone: true,\n name: 'tuiMonth',\n})\nexport class TuiMonthPipe implements PipeTransform {\n private readonly months$ = inject(TUI_MONTHS);\n\n public transform({month}: TuiMonth): Observable<string> {\n return this.months$.pipe(map((months) => months[month]));\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;AAOA,MAIa,YAAY,CAAA;AAJzB,IAAA,WAAA,GAAA;AAKqB,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;AAKjD,KAAA;IAHU,SAAS,CAAC,EAAC,KAAK,EAAW,EAAA;AAC9B,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;KAC5D;+GALQ,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;6GAAZ,YAAY,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,CAAA,EAAA;;4FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBAJxB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE,UAAU;AACnB,iBAAA,CAAA;;;ACVD;;AAEG;;;;"}
1
+ {"version":3,"file":"taiga-ui-core-pipes-month.mjs","sources":["../../../projects/core/pipes/month/month.pipe.ts","../../../projects/core/pipes/month/taiga-ui-core-pipes-month.ts"],"sourcesContent":["import type {PipeTransform} from '@angular/core';\nimport {inject, Pipe} from '@angular/core';\nimport type {TuiMonth} from '@taiga-ui/cdk/date-time';\nimport {TUI_MONTHS} from '@taiga-ui/core/tokens';\nimport type {Observable} from 'rxjs';\nimport {map} from 'rxjs';\n\n@Pipe({\n standalone: true,\n name: 'tuiMonth',\n})\nexport class TuiMonthPipe implements PipeTransform {\n private readonly months$ = inject(TUI_MONTHS);\n\n public transform({month}: TuiMonth): Observable<string> {\n return this.months$.pipe(map((months) => months[month] || months[0]));\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;AAOA,MAIa,YAAY,CAAA;AAJzB,IAAA,WAAA,GAAA;AAKqB,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;AAKjD,KAAA;IAHU,SAAS,CAAC,EAAC,KAAK,EAAW,EAAA;QAC9B,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KACzE;+GALQ,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;6GAAZ,YAAY,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,CAAA,EAAA;;4FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBAJxB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE,UAAU;AACnB,iBAAA,CAAA;;;ACVD;;AAEG;;;;"}
@@ -21,7 +21,7 @@ class TuiBreakpointService extends Observable {
21
21
  ...ret,
22
22
  [this.media[key]]: key,
23
23
  }), {});
24
- this.stream$ = inject(TUI_WINDOW_SIZE).pipe(map(({ width }) => this.sorted.find((size) => size > width)), map((key) => this.invert[key || this.sorted[this.sorted.length - 1]]), distinctUntilChanged(), tuiZoneOptimized(inject(NgZone)), shareReplay({ bufferSize: 1, refCount: true }));
24
+ this.stream$ = inject(TUI_WINDOW_SIZE).pipe(map(({ width }) => this.sorted.find((size) => size > width)), map((key) => this.invert[key || this.sorted[this.sorted.length - 1] || 0]), distinctUntilChanged(), tuiZoneOptimized(inject(NgZone)), shareReplay({ bufferSize: 1, refCount: true }));
25
25
  }
26
26
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiBreakpointService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
27
27
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiBreakpointService, providedIn: 'root' }); }
@@ -33,6 +33,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
33
33
  }]
34
34
  }], ctorParameters: function () { return []; } });
35
35
 
36
+ /**
37
+ * @deprecated use {@link TUI_DARK_MODE} instead
38
+ */
36
39
  class TuiDarkThemeService extends Observable {
37
40
  constructor() {
38
41
  const media = inject(WA_WINDOW).matchMedia('(prefers-color-scheme: dark)');
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-core-services.mjs","sources":["../../../projects/core/services/breakpoint.service.ts","../../../projects/core/services/dark-theme.service.ts","../../../projects/core/services/format-date.service.ts","../../../projects/core/services/position.service.ts","../../../projects/core/services/visual-viewport.service.ts","../../../projects/core/services/taiga-ui-core-services.ts"],"sourcesContent":["import {inject, Injectable, NgZone} from '@angular/core';\nimport {tuiZoneOptimized} from '@taiga-ui/cdk/observables';\nimport {TUI_WINDOW_SIZE} from '@taiga-ui/cdk/tokens';\nimport type {TuiMedia} from '@taiga-ui/core/tokens';\nimport {TUI_MEDIA} from '@taiga-ui/core/tokens';\nimport {distinctUntilChanged, map, Observable, shareReplay} from 'rxjs';\n\nexport type TuiBreakpointMediaKey = keyof Omit<TuiMedia, 'tablet'>;\n\n/**\n * Service to provide the current breakpoint based on Taiga UI's media queries\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class TuiBreakpointService extends Observable<TuiBreakpointMediaKey | null> {\n private readonly media = inject(TUI_MEDIA);\n private readonly sorted: number[] = Object.values(this.media).sort((a, b) => a - b);\n private readonly invert: Record<number, TuiBreakpointMediaKey> = Object.keys(\n this.media,\n ).reduce(\n (ret, key) => ({\n ...ret,\n [this.media[key as TuiBreakpointMediaKey]]: key,\n }),\n {},\n );\n\n private readonly stream$ = inject(TUI_WINDOW_SIZE).pipe(\n map(({width}) => this.sorted.find((size) => size > width)),\n map((key) => this.invert[key || this.sorted[this.sorted.length - 1]]),\n distinctUntilChanged(),\n tuiZoneOptimized(inject(NgZone)),\n shareReplay({bufferSize: 1, refCount: true}),\n );\n\n constructor() {\n super((subscriber) => this.stream$.subscribe(subscriber));\n }\n}\n","import {inject, Injectable} from '@angular/core';\nimport {WA_WINDOW} from '@ng-web-apis/common';\nimport {fromEvent, map, Observable, shareReplay, startWith} from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TuiDarkThemeService extends Observable<boolean> {\n constructor() {\n const media = inject(WA_WINDOW).matchMedia('(prefers-color-scheme: dark)');\n const media$ = fromEvent(media, 'change').pipe(\n startWith(null),\n map(() => media.matches),\n shareReplay({bufferSize: 1, refCount: true}),\n );\n\n super((subscriber) => media$.subscribe(subscriber));\n }\n}\n","import {inject, Injectable, LOCALE_ID} from '@angular/core';\nimport type {Observable} from 'rxjs';\nimport {of} from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TuiFormatDateService {\n protected readonly locale = inject(LOCALE_ID);\n\n public format(timestamp: number): Observable<string> {\n return of(\n new Date(timestamp).toLocaleTimeString(this.locale, {\n hour: 'numeric',\n minute: '2-digit',\n }),\n );\n }\n}\n","import {inject, Injectable, NgZone} from '@angular/core';\nimport {WA_ANIMATION_FRAME} from '@ng-web-apis/common';\nimport {EMPTY_CLIENT_RECT} from '@taiga-ui/cdk/constants';\nimport {tuiZonefree} from '@taiga-ui/cdk/observables';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {TuiPositionAccessor} from '@taiga-ui/core/classes';\nimport type {TuiPoint} from '@taiga-ui/core/types';\nimport {finalize, map, Observable, startWith} from 'rxjs';\n\n@Injectable()\nexport class TuiPositionService extends Observable<TuiPoint> {\n private readonly el = tuiInjectElement();\n private readonly accessor = inject(TuiPositionAccessor);\n\n constructor() {\n const animationFrame$ = inject(WA_ANIMATION_FRAME);\n const zone = inject(NgZone);\n\n super((subscriber) =>\n animationFrame$\n .pipe(\n startWith(null),\n map(() => this.accessor.getPosition(this.el.getBoundingClientRect())),\n tuiZonefree(zone),\n finalize(() => this.accessor.getPosition(EMPTY_CLIENT_RECT)),\n )\n .subscribe(subscriber),\n );\n }\n}\n","import {inject, Injectable} from '@angular/core';\nimport {WA_WINDOW} from '@ng-web-apis/common';\nimport {TUI_IS_WEBKIT} from '@taiga-ui/cdk/tokens';\nimport type {TuiPoint} from '@taiga-ui/core/types';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TuiVisualViewportService {\n private readonly isWebkit = inject(TUI_IS_WEBKIT);\n private readonly win = inject(WA_WINDOW);\n\n // https://bugs.webkit.org/show_bug.cgi?id=207089\n public correct(point: TuiPoint): TuiPoint {\n return this.isWebkit\n ? [\n point[0] + (this.win.visualViewport?.offsetTop ?? 0),\n point[1] + (this.win.visualViewport?.offsetLeft ?? 0),\n ]\n : point;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"taiga-ui-core-services.mjs","sources":["../../../projects/core/services/breakpoint.service.ts","../../../projects/core/services/dark-theme.service.ts","../../../projects/core/services/format-date.service.ts","../../../projects/core/services/position.service.ts","../../../projects/core/services/visual-viewport.service.ts","../../../projects/core/services/taiga-ui-core-services.ts"],"sourcesContent":["import {inject, Injectable, NgZone} from '@angular/core';\nimport {tuiZoneOptimized} from '@taiga-ui/cdk/observables';\nimport {TUI_WINDOW_SIZE} from '@taiga-ui/cdk/tokens';\nimport type {TuiMedia} from '@taiga-ui/core/tokens';\nimport {TUI_MEDIA} from '@taiga-ui/core/tokens';\nimport {distinctUntilChanged, map, Observable, shareReplay} from 'rxjs';\n\nexport type TuiBreakpointMediaKey = keyof Omit<TuiMedia, 'tablet'>;\n\n/**\n * Service to provide the current breakpoint based on Taiga UI's media queries\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class TuiBreakpointService extends Observable<TuiBreakpointMediaKey | null> {\n private readonly media = inject(TUI_MEDIA);\n private readonly sorted: number[] = Object.values(this.media).sort((a, b) => a - b);\n private readonly invert: Record<number, TuiBreakpointMediaKey> = Object.keys(\n this.media,\n ).reduce(\n (ret, key) => ({\n ...ret,\n [this.media[key as TuiBreakpointMediaKey]]: key,\n }),\n {},\n );\n\n private readonly stream$ = inject(TUI_WINDOW_SIZE).pipe(\n map(({width}) => this.sorted.find((size) => size > width)),\n map((key) => this.invert[key || this.sorted[this.sorted.length - 1] || 0]),\n distinctUntilChanged(),\n tuiZoneOptimized(inject(NgZone)),\n shareReplay({bufferSize: 1, refCount: true}),\n );\n\n constructor() {\n super((subscriber) => this.stream$.subscribe(subscriber));\n }\n}\n","import {inject, Injectable} from '@angular/core';\nimport {WA_WINDOW} from '@ng-web-apis/common';\nimport {fromEvent, map, Observable, shareReplay, startWith} from 'rxjs';\n\n/**\n * @deprecated use {@link TUI_DARK_MODE} instead\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class TuiDarkThemeService extends Observable<boolean> {\n constructor() {\n const media = inject(WA_WINDOW).matchMedia('(prefers-color-scheme: dark)');\n const media$ = fromEvent(media, 'change').pipe(\n startWith(null),\n map(() => media.matches),\n shareReplay({bufferSize: 1, refCount: true}),\n );\n\n super((subscriber) => media$.subscribe(subscriber));\n }\n}\n","import {inject, Injectable, LOCALE_ID} from '@angular/core';\nimport type {Observable} from 'rxjs';\nimport {of} from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TuiFormatDateService {\n protected readonly locale = inject(LOCALE_ID);\n\n public format(timestamp: number): Observable<string> {\n return of(\n new Date(timestamp).toLocaleTimeString(this.locale, {\n hour: 'numeric',\n minute: '2-digit',\n }),\n );\n }\n}\n","import {inject, Injectable, NgZone} from '@angular/core';\nimport {WA_ANIMATION_FRAME} from '@ng-web-apis/common';\nimport {EMPTY_CLIENT_RECT} from '@taiga-ui/cdk/constants';\nimport {tuiZonefree} from '@taiga-ui/cdk/observables';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {TuiPositionAccessor} from '@taiga-ui/core/classes';\nimport type {TuiPoint} from '@taiga-ui/core/types';\nimport {finalize, map, Observable, startWith} from 'rxjs';\n\n@Injectable()\nexport class TuiPositionService extends Observable<TuiPoint> {\n private readonly el = tuiInjectElement();\n private readonly accessor = inject(TuiPositionAccessor);\n\n constructor() {\n const animationFrame$ = inject(WA_ANIMATION_FRAME);\n const zone = inject(NgZone);\n\n super((subscriber) =>\n animationFrame$\n .pipe(\n startWith(null),\n map(() => this.accessor.getPosition(this.el.getBoundingClientRect())),\n tuiZonefree(zone),\n finalize(() => this.accessor.getPosition(EMPTY_CLIENT_RECT)),\n )\n .subscribe(subscriber),\n );\n }\n}\n","import {inject, Injectable} from '@angular/core';\nimport {WA_WINDOW} from '@ng-web-apis/common';\nimport {TUI_IS_WEBKIT} from '@taiga-ui/cdk/tokens';\nimport type {TuiPoint} from '@taiga-ui/core/types';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TuiVisualViewportService {\n private readonly isWebkit = inject(TUI_IS_WEBKIT);\n private readonly win = inject(WA_WINDOW);\n\n // https://bugs.webkit.org/show_bug.cgi?id=207089\n public correct(point: TuiPoint): TuiPoint {\n return this.isWebkit\n ? [\n point[0] + (this.win.visualViewport?.offsetTop ?? 0),\n point[1] + (this.win.visualViewport?.offsetLeft ?? 0),\n ]\n : point;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,12 +1,13 @@
1
- import { inject, Optional, SkipSelf, ElementRef } from '@angular/core';
1
+ import { inject, InjectionToken, signal, effect, Optional, SkipSelf, ElementRef } from '@angular/core';
2
2
  import { tuiCreateTokenFromFactory, tuiCreateToken, tuiProvideOptions, tuiProvide } from '@taiga-ui/cdk/utils/miscellaneous';
3
3
  import { DOCUMENT } from '@angular/common';
4
- import { of, map, merge, switchMap, takeUntil, share } from 'rxjs';
4
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
5
+ import { WA_LOCAL_STORAGE, WA_WINDOW } from '@ng-web-apis/common';
6
+ import { fromEvent, filter, of, map, merge, switchMap, takeUntil, share } from 'rxjs';
5
7
  import { TuiDayOfWeek } from '@taiga-ui/cdk/date-time';
6
8
  import { tuiExtractI18n } from '@taiga-ui/i18n/utils';
7
9
  import { CHAR_NO_BREAK_SPACE } from '@taiga-ui/cdk/constants';
8
10
  import { tuiTypedFromEvent } from '@taiga-ui/cdk/observables';
9
- import { WA_WINDOW } from '@ng-web-apis/common';
10
11
 
11
12
  const TUI_REDUCED_MOTION = tuiCreateTokenFromFactory(() => inject(DOCUMENT).defaultView?.matchMedia?.('(prefers-reduced-motion: reduce)')
12
13
  .matches ?? false);
@@ -35,6 +36,41 @@ function tuiCommonIconsProvider(icons) {
35
36
  return tuiProvideOptions(TUI_COMMON_ICONS, icons, COMMON_ICONS);
36
37
  }
37
38
 
39
+ const TUI_DARK_MODE_DEFAULT_KEY = 'tuiDark';
40
+ const TUI_DARK_MODE_KEY = tuiCreateToken(TUI_DARK_MODE_DEFAULT_KEY);
41
+ const TUI_DARK_MODE = new InjectionToken('', {
42
+ factory: () => {
43
+ let automatic = true;
44
+ const storage = inject(WA_LOCAL_STORAGE);
45
+ const key = inject(TUI_DARK_MODE_KEY);
46
+ const saved = storage.getItem(key);
47
+ const media = inject(WA_WINDOW).matchMedia('(prefers-color-scheme: dark)');
48
+ const result = signal(Boolean((saved && JSON.parse(saved)) ?? media.matches));
49
+ fromEvent(media, 'change')
50
+ .pipe(filter(() => !storage.getItem(key)), takeUntilDestroyed())
51
+ .subscribe(() => {
52
+ automatic = true;
53
+ result.set(media.matches);
54
+ });
55
+ effect(() => {
56
+ const value = String(result());
57
+ if (automatic) {
58
+ automatic = false;
59
+ }
60
+ else {
61
+ storage.setItem(key, value);
62
+ }
63
+ });
64
+ return Object.assign(result, {
65
+ reset: () => {
66
+ storage.removeItem(key);
67
+ automatic = true;
68
+ result.set(media.matches);
69
+ },
70
+ });
71
+ },
72
+ });
73
+
38
74
  const TUI_DEFAULT_DATE_FORMAT = {
39
75
  mode: 'DMY',
40
76
  separator: '.',
@@ -89,12 +125,16 @@ const TUI_SHORT_WEEK_DAYS = tuiCreateTokenFromFactory(tuiExtractI18n('shortWeekD
89
125
  const TUI_ICON_START = tuiCreateToken('');
90
126
  const TUI_ICON_END = tuiCreateToken('');
91
127
 
92
- const TUI_ICON_STARTS = tuiCreateToken({});
128
+ const TUI_ICON_REGISTRY = tuiCreateToken({});
129
+ /**
130
+ * @deprecated: use {@link TUI_ICON_REGISTRY}
131
+ */
132
+ const TUI_ICON_STARTS = TUI_ICON_REGISTRY;
93
133
  function tuiIconsProvider(icons) {
94
134
  return {
95
- provide: TUI_ICON_STARTS,
135
+ provide: TUI_ICON_REGISTRY,
96
136
  useFactory: () => ({
97
- ...(inject(TUI_ICON_STARTS, { skipSelf: true, optional: true }) || {}),
137
+ ...(inject(TUI_ICON_REGISTRY, { skipSelf: true, optional: true }) || {}),
98
138
  ...Object.fromEntries(Object.entries(icons).map(([key, value]) => [
99
139
  key,
100
140
  `data:image/svg+xml;charset=UTF-8,${encodeURIComponent(value)}`,
@@ -103,20 +143,22 @@ function tuiIconsProvider(icons) {
103
143
  };
104
144
  }
105
145
 
106
- const TUI_ICON_START_RESOLVER = tuiCreateTokenFromFactory(() => {
146
+ const TUI_ICON_RESOLVER = tuiCreateTokenFromFactory(() => {
107
147
  const path = inject(TUI_ASSETS_PATH);
108
- return (icon) => !icon || icon.includes('/')
109
- ? icon
110
- : `${path}/${icon.replace('@tui.', '').split('.').join('/')}.svg`;
148
+ return (icon) => `${path}/${icon.replace('@tui.', '').split('.').join('/')}.svg`;
111
149
  });
150
+ /**
151
+ * @deprecated use {@link TUI_ICON_RESOLVER}
152
+ */
153
+ const TUI_ICON_START_RESOLVER = TUI_ICON_RESOLVER;
112
154
  function tuiInjectIconResolver() {
113
- const icons = inject(TUI_ICON_STARTS);
114
- const resolver = inject(TUI_ICON_START_RESOLVER);
115
- return (icon) => icons[icon] || resolver(icon);
155
+ const icons = inject(TUI_ICON_REGISTRY);
156
+ const resolver = inject(TUI_ICON_RESOLVER);
157
+ return (icon) => (!icon || icon.includes('/') ? icon : icons[icon] || resolver(icon));
116
158
  }
117
159
  function tuiIconResolverProvider(useValue) {
118
160
  return {
119
- provide: TUI_ICON_START_RESOLVER,
161
+ provide: TUI_ICON_RESOLVER,
120
162
  useValue,
121
163
  };
122
164
  }
@@ -199,5 +241,5 @@ function tuiAsViewport(accessor) {
199
241
  * Generated bundle index. Do not edit.
200
242
  */
201
243
 
202
- export { TUI_ANIMATIONS_SPEED, TUI_ASSETS_PATH, TUI_CLOSE_WORD, TUI_COMMON_ICONS, TUI_DATE_FORMAT, TUI_DAY_TYPE_HANDLER, TUI_DEFAULT_DATE_FORMAT, TUI_DEFAULT_ERROR_MESSAGE, TUI_DEFAULT_NUMBER_FORMAT, TUI_FIRST_DAY_OF_WEEK, TUI_ICON_END, TUI_ICON_START, TUI_ICON_STARTS, TUI_ICON_START_RESOLVER, TUI_MEDIA, TUI_MONTHS, TUI_NOTHING_FOUND_MESSAGE, TUI_NUMBER_FORMAT, TUI_REDUCED_MOTION, TUI_SCROLL_REF, TUI_SELECTION_STREAM, TUI_SHORT_WEEK_DAYS, TUI_SPIN_ICONS, TUI_SPIN_TEXTS, TUI_THEME, TUI_VIEWPORT, tuiAsViewport, tuiAssetsPathProvider, tuiCommonIconsProvider, tuiDateFormatProvider, tuiIconResolverProvider, tuiIconsProvider, tuiInjectIconResolver, tuiNumberFormatProvider };
244
+ export { TUI_ANIMATIONS_SPEED, TUI_ASSETS_PATH, TUI_CLOSE_WORD, TUI_COMMON_ICONS, TUI_DARK_MODE, TUI_DARK_MODE_DEFAULT_KEY, TUI_DARK_MODE_KEY, TUI_DATE_FORMAT, TUI_DAY_TYPE_HANDLER, TUI_DEFAULT_DATE_FORMAT, TUI_DEFAULT_ERROR_MESSAGE, TUI_DEFAULT_NUMBER_FORMAT, TUI_FIRST_DAY_OF_WEEK, TUI_ICON_END, TUI_ICON_REGISTRY, TUI_ICON_RESOLVER, TUI_ICON_START, TUI_ICON_STARTS, TUI_ICON_START_RESOLVER, TUI_MEDIA, TUI_MONTHS, TUI_NOTHING_FOUND_MESSAGE, TUI_NUMBER_FORMAT, TUI_REDUCED_MOTION, TUI_SCROLL_REF, TUI_SELECTION_STREAM, TUI_SHORT_WEEK_DAYS, TUI_SPIN_ICONS, TUI_SPIN_TEXTS, TUI_THEME, TUI_VIEWPORT, tuiAsViewport, tuiAssetsPathProvider, tuiCommonIconsProvider, tuiDateFormatProvider, tuiIconResolverProvider, tuiIconsProvider, tuiInjectIconResolver, tuiNumberFormatProvider };
203
245
  //# sourceMappingURL=taiga-ui-core-tokens.mjs.map