@taiga-ui/kit 5.17.0-canary.f91031d → 5.18.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 (88) hide show
  1. package/components/accordion/accordion.component.d.ts +3 -2
  2. package/components/accordion/accordion.directive.d.ts +2 -1
  3. package/components/input-phone/utils/complete-phone-insertion-preprocessor.d.ts +1 -1
  4. package/fesm2022/taiga-ui-kit-components-accordion.mjs +11 -4
  5. package/fesm2022/taiga-ui-kit-components-accordion.mjs.map +1 -1
  6. package/fesm2022/taiga-ui-kit-components-avatar.mjs +9 -9
  7. package/fesm2022/taiga-ui-kit-components-avatar.mjs.map +1 -1
  8. package/fesm2022/taiga-ui-kit-components-badge.mjs +2 -2
  9. package/fesm2022/taiga-ui-kit-components-badge.mjs.map +1 -1
  10. package/fesm2022/taiga-ui-kit-components-block.mjs +2 -2
  11. package/fesm2022/taiga-ui-kit-components-block.mjs.map +1 -1
  12. package/fesm2022/taiga-ui-kit-components-chip.mjs +2 -2
  13. package/fesm2022/taiga-ui-kit-components-chip.mjs.map +1 -1
  14. package/fesm2022/taiga-ui-kit-components-comment.mjs +3 -3
  15. package/fesm2022/taiga-ui-kit-components-comment.mjs.map +1 -1
  16. package/fesm2022/taiga-ui-kit-components-compass.mjs +2 -2
  17. package/fesm2022/taiga-ui-kit-components-compass.mjs.map +1 -1
  18. package/fesm2022/taiga-ui-kit-components-copy.mjs +2 -2
  19. package/fesm2022/taiga-ui-kit-components-copy.mjs.map +1 -1
  20. package/fesm2022/taiga-ui-kit-components-files.mjs +5 -5
  21. package/fesm2022/taiga-ui-kit-components-files.mjs.map +1 -1
  22. package/fesm2022/taiga-ui-kit-components-input-color.mjs +2 -2
  23. package/fesm2022/taiga-ui-kit-components-input-color.mjs.map +1 -1
  24. package/fesm2022/taiga-ui-kit-components-input-date-time.mjs +3 -3
  25. package/fesm2022/taiga-ui-kit-components-input-date-time.mjs.map +1 -1
  26. package/fesm2022/taiga-ui-kit-components-input-date.mjs +4 -4
  27. package/fesm2022/taiga-ui-kit-components-input-date.mjs.map +1 -1
  28. package/fesm2022/taiga-ui-kit-components-input-inline.mjs +2 -2
  29. package/fesm2022/taiga-ui-kit-components-input-inline.mjs.map +1 -1
  30. package/fesm2022/taiga-ui-kit-components-input-month.mjs +4 -4
  31. package/fesm2022/taiga-ui-kit-components-input-month.mjs.map +1 -1
  32. package/fesm2022/taiga-ui-kit-components-input-number.mjs +3 -3
  33. package/fesm2022/taiga-ui-kit-components-input-number.mjs.map +1 -1
  34. package/fesm2022/taiga-ui-kit-components-input-phone-international.mjs +2 -2
  35. package/fesm2022/taiga-ui-kit-components-input-phone-international.mjs.map +1 -1
  36. package/fesm2022/taiga-ui-kit-components-input-phone.mjs +10 -6
  37. package/fesm2022/taiga-ui-kit-components-input-phone.mjs.map +1 -1
  38. package/fesm2022/taiga-ui-kit-components-input-pin.mjs +3 -3
  39. package/fesm2022/taiga-ui-kit-components-input-pin.mjs.map +1 -1
  40. package/fesm2022/taiga-ui-kit-components-input-slider.mjs +2 -2
  41. package/fesm2022/taiga-ui-kit-components-input-slider.mjs.map +1 -1
  42. package/fesm2022/taiga-ui-kit-components-input-time.mjs +3 -3
  43. package/fesm2022/taiga-ui-kit-components-input-time.mjs.map +1 -1
  44. package/fesm2022/taiga-ui-kit-components-like.mjs +2 -2
  45. package/fesm2022/taiga-ui-kit-components-like.mjs.map +1 -1
  46. package/fesm2022/taiga-ui-kit-components-message.mjs +2 -2
  47. package/fesm2022/taiga-ui-kit-components-message.mjs.map +1 -1
  48. package/fesm2022/taiga-ui-kit-components-pin.mjs +3 -3
  49. package/fesm2022/taiga-ui-kit-components-pin.mjs.map +1 -1
  50. package/fesm2022/taiga-ui-kit-components-preview.mjs +3 -3
  51. package/fesm2022/taiga-ui-kit-components-preview.mjs.map +1 -1
  52. package/fesm2022/taiga-ui-kit-components-progress.mjs +6 -6
  53. package/fesm2022/taiga-ui-kit-components-progress.mjs.map +1 -1
  54. package/fesm2022/taiga-ui-kit-components-radio-list.mjs +2 -2
  55. package/fesm2022/taiga-ui-kit-components-radio-list.mjs.map +1 -1
  56. package/fesm2022/taiga-ui-kit-components-segmented.mjs +3 -3
  57. package/fesm2022/taiga-ui-kit-components-segmented.mjs.map +1 -1
  58. package/fesm2022/taiga-ui-kit-components-shrink-wrap.mjs +2 -2
  59. package/fesm2022/taiga-ui-kit-components-shrink-wrap.mjs.map +1 -1
  60. package/fesm2022/taiga-ui-kit-components-status.mjs +3 -3
  61. package/fesm2022/taiga-ui-kit-components-status.mjs.map +1 -1
  62. package/fesm2022/taiga-ui-kit-components-switch.mjs +2 -2
  63. package/fesm2022/taiga-ui-kit-components-switch.mjs.map +1 -1
  64. package/fesm2022/taiga-ui-kit-components-tabs.mjs +3 -3
  65. package/fesm2022/taiga-ui-kit-components-tabs.mjs.map +1 -1
  66. package/fesm2022/taiga-ui-kit-components-textarea.mjs +3 -3
  67. package/fesm2022/taiga-ui-kit-components-textarea.mjs.map +1 -1
  68. package/fesm2022/taiga-ui-kit-components-tiles.mjs +4 -4
  69. package/fesm2022/taiga-ui-kit-components-tiles.mjs.map +1 -1
  70. package/fesm2022/taiga-ui-kit-components-toast.mjs +2 -2
  71. package/fesm2022/taiga-ui-kit-components-toast.mjs.map +1 -1
  72. package/fesm2022/taiga-ui-kit-directives-button-group.mjs +3 -3
  73. package/fesm2022/taiga-ui-kit-directives-button-group.mjs.map +1 -1
  74. package/fesm2022/taiga-ui-kit-directives-chevron.mjs +2 -2
  75. package/fesm2022/taiga-ui-kit-directives-chevron.mjs.map +1 -1
  76. package/fesm2022/taiga-ui-kit-directives-connected.mjs +3 -3
  77. package/fesm2022/taiga-ui-kit-directives-connected.mjs.map +1 -1
  78. package/fesm2022/taiga-ui-kit-directives-fade.mjs +3 -3
  79. package/fesm2022/taiga-ui-kit-directives-fade.mjs.map +1 -1
  80. package/fesm2022/taiga-ui-kit-directives-sensitive.mjs +3 -3
  81. package/fesm2022/taiga-ui-kit-directives-sensitive.mjs.map +1 -1
  82. package/fesm2022/taiga-ui-kit-directives-shimmer.mjs +2 -2
  83. package/fesm2022/taiga-ui-kit-directives-shimmer.mjs.map +1 -1
  84. package/fesm2022/taiga-ui-kit-directives-skeleton.mjs +3 -3
  85. package/fesm2022/taiga-ui-kit-directives-skeleton.mjs.map +1 -1
  86. package/fesm2022/taiga-ui-kit-directives-tooltip.mjs +2 -2
  87. package/fesm2022/taiga-ui-kit-directives-tooltip.mjs.map +1 -1
  88. package/package.json +29 -29
@@ -82,7 +82,7 @@ class TuiInputPhoneInternationalContent {
82
82
  this.host.masked.set(maskitoTransform(this.host.value() || tuiGetCallingCode(code, this.host.metadata()), this.host.mask() || MASKITO_DEFAULT_OPTIONS));
83
83
  }
84
84
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: TuiInputPhoneInternationalContent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
85
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.25", type: TuiInputPhoneInternationalContent, isStandalone: true, selector: "tui-input-phone-international-content", host: { attributes: { "data-tui-version": "5.17.0-canary.f91031d" } }, viewQueries: [{ propertyName: "list", predicate: TuiOption, descendants: true, read: ElementRef, isSignal: true }], ngImport: i0, template: "<button\n appearance=\"textfield\"\n tabindex=\"-1\"\n tuiButton\n tuiChevron\n type=\"button\"\n class=\"t-ipi-select\"\n [attr.data-mode]=\"host.mode()\"\n [class.t-ipi-select_readonly]=\"host.readOnly()\"\n [disabled]=\"host.disabled()\"\n [size]=\"size()\"\n [tuiAppearanceFocus]=\"host.open()\"\n (click.prevent)=\"host.interactive() && host.open.set(!host.open())\"\n (pointerdown.stop)=\"(0)\"\n>\n <img\n class=\"t-ipi-flag\"\n [alt]=\"names()[host.countryIsoCode()]\"\n [class.t-ipi-flag_small]=\"size() === 's'\"\n [src]=\"host.countryIsoCode() | tuiFlag\"\n />\n</button>\n<ng-template #filter>\n <div class=\"t-ipi-search\">\n <tui-textfield\n [iconStart]=\"icons.search\"\n [tuiTextfieldSize]=\"size() === 's' ? 's' : 'm'\"\n >\n <input\n autocomplete=\"off\"\n tuiInput\n type=\"text\"\n [ngModel]=\"host.search()\"\n [ngModelOptions]=\"{standalone: true}\"\n [placeholder]=\"label()\"\n [tuiAutoFocus]=\"!ios\"\n (keydown.arrowDown)=\"list()[0]?.nativeElement?.focus()\"\n (ngModelChange)=\"host.search.set($event)\"\n />\n </tui-textfield>\n </div>\n</ng-template>\n<ng-container *tuiDropdown>\n @if (host.countrySearch()) {\n <ng-container *ngTemplateOutlet=\"filter\" />\n }\n <tui-data-list class=\"t-ipi-options\">\n @for (item of filtered(); track item.iso) {\n <button\n tuiOption\n type=\"button\"\n (click)=\"onItemClick(item.iso)\"\n >\n <img\n alt=\"\"\n class=\"t-ipi-flag\"\n [class.t-ipi-flag_small]=\"size() === 's'\"\n [src]=\"item.iso | tuiFlag\"\n />\n <span tuiTitle>{{ item.name }}</span>\n <span class=\"t-ipi-code\">{{ item.code }}</span>\n </button>\n }\n </tui-data-list>\n</ng-container>\n", styles: ["tui-input-phone-international-content:where(*[data-tui-version=\"5.17.0-canary.f91031d\"]){display:contents;border-radius:inherit}[tuiInputPhoneInternational][tuiInputPhoneInternational]:where(*[data-tui-version=\"5.17.0-canary.f91031d\"]){inset-inline-start:var(--t-offset);border-top-left-radius:0;border-bottom-left-radius:0;inline-size:calc(100% - var(--t-offset))}[tuiInputPhoneInternational][tuiInputPhoneInternational]:where(*[data-tui-version=\"5.17.0-canary.f91031d\"])+[tuiLabel][tuiLabel]{padding-inline-start:var(--t-offset)}tui-textfield[data-size=s]:where(*[data-tui-version=\"5.17.0-canary.f91031d\"]){--t-offset: 4.125rem}tui-textfield[data-size=s]:where(*[data-tui-version=\"5.17.0-canary.f91031d\"]) .t-ipi-flag{margin:0 .1875rem}tui-textfield[data-size=m]:where(*[data-tui-version=\"5.17.0-canary.f91031d\"]){--t-offset: 4.875rem}tui-textfield[data-size=m]:where(*[data-tui-version=\"5.17.0-canary.f91031d\"]) .t-ipi-flag{margin:0 -.1875rem}tui-textfield[data-size=l]:where(*[data-tui-version=\"5.17.0-canary.f91031d\"]){--t-offset: 5.25rem}tui-textfield[data-size=l]:where(*[data-tui-version=\"5.17.0-canary.f91031d\"]) .t-ipi-flag{margin:0 -.1875rem}[data-tui-version=\"5.17.0-canary.f91031d\"] .t-ipi-select{position:absolute;inset-inline-start:0;border-radius:inherit;border-top-right-radius:0;border-bottom-right-radius:0}[data-tui-version=\"5.17.0-canary.f91031d\"] .t-ipi-select_readonly{pointer-events:none}[data-tui-version=\"5.17.0-canary.f91031d\"] .t-ipi-flag{inline-size:1.75rem;block-size:1.75rem;border-radius:100%}[data-tui-version=\"5.17.0-canary.f91031d\"] .t-ipi-flag_small{inline-size:1.25rem;block-size:1.25rem}[data-tui-version=\"5.17.0-canary.f91031d\"] .t-ipi-code{color:var(--tui-text-secondary)}[data-tui-version=\"5.17.0-canary.f91031d\"] .t-ipi-search{position:sticky;z-index:1;inset-block-start:0;background:var(--tui-background-elevation-3);padding:.375rem .375rem 0}@supports (-webkit-touch-callout: none){[data-tui-version=\"5.17.0-canary.f91031d\"] .t-ipi-search input:focus{animation:tuiPreventIOSScroll 1ms}}@keyframes tuiPreventIOSScroll{0%{opacity:0}to{opacity:1}}[data-tui-version=\"5.17.0-canary.f91031d\"] tui-dropdown-mobile .t-ipi-search,[data-tui-version=\"5.17.0-canary.f91031d\"] tui-sheet-dialog .t-ipi-search{background:var(--tui-background-elevation-1)}[data-tui-version=\"5.17.0-canary.f91031d\"] tui-dropdown-mobile .t-ipi-options:not(:first-child),[data-tui-version=\"5.17.0-canary.f91031d\"] tui-sheet-dialog .t-ipi-options:not(:first-child){min-block-size:calc(100 * var(--tui-viewport-vh) - 8.75rem)}[data-tui-version=\"5.17.0-canary.f91031d\"] tui-sheet-dialog .t-ipi-search{inset-block-start:4.5rem;padding-inline-start:0;padding-inline-end:0}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: TuiAutoFocus, selector: "[tuiAutoFocus]", inputs: ["tuiAutoFocus"] }, { kind: "directive", type: TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "directive", type: TuiChevron, selector: "[tuiChevron]", inputs: ["tuiChevron"] }, { kind: "component", type: i2.TuiDataListComponent, selector: "tui-data-list", inputs: ["emptyContent", "size"] }, { kind: "directive", type: i2.TuiOption, selector: "button[tuiOption], a[tuiOption], label[tuiOption]", inputs: ["disabled"] }, { kind: "directive", type: TuiDropdownContent, selector: "ng-template[tuiDropdown]" }, { kind: "pipe", type: TuiFlagPipe, name: "tuiFlag" }, { kind: "component", type: i3.TuiTextfieldComponent, selector: "tui-textfield:not([multi])", inputs: ["content", "filler"] }, { kind: "directive", type: i3.TuiTextfieldOptionsDirective, selector: "[tuiTextfieldAppearance],[tuiTextfieldSize],[tuiTextfieldCleaner]", inputs: ["tuiTextfieldAppearance", "tuiTextfieldSize", "tuiTextfieldCleaner"] }, { kind: "directive", type: i4.TuiInputDirective, selector: "input[tuiInput]", inputs: ["readOnly", "invalid", "focused", "state"] }, { kind: "directive", type: TuiTitle, selector: "[tuiTitle]", inputs: ["tuiTitle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
85
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.25", type: TuiInputPhoneInternationalContent, isStandalone: true, selector: "tui-input-phone-international-content", host: { attributes: { "data-tui-version": "5.18.0" } }, viewQueries: [{ propertyName: "list", predicate: TuiOption, descendants: true, read: ElementRef, isSignal: true }], ngImport: i0, template: "<button\n appearance=\"textfield\"\n tabindex=\"-1\"\n tuiButton\n tuiChevron\n type=\"button\"\n class=\"t-ipi-select\"\n [attr.data-mode]=\"host.mode()\"\n [class.t-ipi-select_readonly]=\"host.readOnly()\"\n [disabled]=\"host.disabled()\"\n [size]=\"size()\"\n [tuiAppearanceFocus]=\"host.open()\"\n (click.prevent)=\"host.interactive() && host.open.set(!host.open())\"\n (pointerdown.stop)=\"(0)\"\n>\n <img\n class=\"t-ipi-flag\"\n [alt]=\"names()[host.countryIsoCode()]\"\n [class.t-ipi-flag_small]=\"size() === 's'\"\n [src]=\"host.countryIsoCode() | tuiFlag\"\n />\n</button>\n<ng-template #filter>\n <div class=\"t-ipi-search\">\n <tui-textfield\n [iconStart]=\"icons.search\"\n [tuiTextfieldSize]=\"size() === 's' ? 's' : 'm'\"\n >\n <input\n autocomplete=\"off\"\n tuiInput\n type=\"text\"\n [ngModel]=\"host.search()\"\n [ngModelOptions]=\"{standalone: true}\"\n [placeholder]=\"label()\"\n [tuiAutoFocus]=\"!ios\"\n (keydown.arrowDown)=\"list()[0]?.nativeElement?.focus()\"\n (ngModelChange)=\"host.search.set($event)\"\n />\n </tui-textfield>\n </div>\n</ng-template>\n<ng-container *tuiDropdown>\n @if (host.countrySearch()) {\n <ng-container *ngTemplateOutlet=\"filter\" />\n }\n <tui-data-list class=\"t-ipi-options\">\n @for (item of filtered(); track item.iso) {\n <button\n tuiOption\n type=\"button\"\n (click)=\"onItemClick(item.iso)\"\n >\n <img\n alt=\"\"\n class=\"t-ipi-flag\"\n [class.t-ipi-flag_small]=\"size() === 's'\"\n [src]=\"item.iso | tuiFlag\"\n />\n <span tuiTitle>{{ item.name }}</span>\n <span class=\"t-ipi-code\">{{ item.code }}</span>\n </button>\n }\n </tui-data-list>\n</ng-container>\n", styles: ["tui-input-phone-international-content:where(*[data-tui-version=\"5.18.0\"]){display:contents;border-radius:inherit}[tuiInputPhoneInternational][tuiInputPhoneInternational]:where(*[data-tui-version=\"5.18.0\"]){inset-inline-start:var(--t-offset);border-top-left-radius:0;border-bottom-left-radius:0;inline-size:calc(100% - var(--t-offset))}[tuiInputPhoneInternational][tuiInputPhoneInternational]:where(*[data-tui-version=\"5.18.0\"])+[tuiLabel][tuiLabel]{padding-inline-start:var(--t-offset)}tui-textfield[data-size=s]:where(*[data-tui-version=\"5.18.0\"]){--t-offset: 4.125rem}tui-textfield[data-size=s]:where(*[data-tui-version=\"5.18.0\"]) .t-ipi-flag{margin:0 .1875rem}tui-textfield[data-size=m]:where(*[data-tui-version=\"5.18.0\"]){--t-offset: 4.875rem}tui-textfield[data-size=m]:where(*[data-tui-version=\"5.18.0\"]) .t-ipi-flag{margin:0 -.1875rem}tui-textfield[data-size=l]:where(*[data-tui-version=\"5.18.0\"]){--t-offset: 5.25rem}tui-textfield[data-size=l]:where(*[data-tui-version=\"5.18.0\"]) .t-ipi-flag{margin:0 -.1875rem}[data-tui-version=\"5.18.0\"] .t-ipi-select{position:absolute;inset-inline-start:0;border-radius:inherit;border-top-right-radius:0;border-bottom-right-radius:0}[data-tui-version=\"5.18.0\"] .t-ipi-select_readonly{pointer-events:none}[data-tui-version=\"5.18.0\"] .t-ipi-flag{inline-size:1.75rem;block-size:1.75rem;border-radius:100%}[data-tui-version=\"5.18.0\"] .t-ipi-flag_small{inline-size:1.25rem;block-size:1.25rem}[data-tui-version=\"5.18.0\"] .t-ipi-code{color:var(--tui-text-secondary)}[data-tui-version=\"5.18.0\"] .t-ipi-search{position:sticky;z-index:1;inset-block-start:0;background:var(--tui-background-elevation-3);padding:.375rem .375rem 0}@supports (-webkit-touch-callout: none){[data-tui-version=\"5.18.0\"] .t-ipi-search input:focus{animation:tuiPreventIOSScroll 1ms}}@keyframes tuiPreventIOSScroll{0%{opacity:0}to{opacity:1}}[data-tui-version=\"5.18.0\"] tui-dropdown-mobile .t-ipi-search,[data-tui-version=\"5.18.0\"] tui-sheet-dialog .t-ipi-search{background:var(--tui-background-elevation-1)}[data-tui-version=\"5.18.0\"] tui-dropdown-mobile .t-ipi-options:not(:first-child),[data-tui-version=\"5.18.0\"] tui-sheet-dialog .t-ipi-options:not(:first-child){min-block-size:calc(100 * var(--tui-viewport-vh) - 8.75rem)}[data-tui-version=\"5.18.0\"] tui-sheet-dialog .t-ipi-search{inset-block-start:4.5rem;padding-inline-start:0;padding-inline-end:0}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: TuiAutoFocus, selector: "[tuiAutoFocus]", inputs: ["tuiAutoFocus"] }, { kind: "directive", type: TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "directive", type: TuiChevron, selector: "[tuiChevron]", inputs: ["tuiChevron"] }, { kind: "component", type: i2.TuiDataListComponent, selector: "tui-data-list", inputs: ["emptyContent", "size"] }, { kind: "directive", type: i2.TuiOption, selector: "button[tuiOption], a[tuiOption], label[tuiOption]", inputs: ["disabled"] }, { kind: "directive", type: TuiDropdownContent, selector: "ng-template[tuiDropdown]" }, { kind: "pipe", type: TuiFlagPipe, name: "tuiFlag" }, { kind: "component", type: i3.TuiTextfieldComponent, selector: "tui-textfield:not([multi])", inputs: ["content", "filler"] }, { kind: "directive", type: i3.TuiTextfieldOptionsDirective, selector: "[tuiTextfieldAppearance],[tuiTextfieldSize],[tuiTextfieldCleaner]", inputs: ["tuiTextfieldAppearance", "tuiTextfieldSize", "tuiTextfieldCleaner"] }, { kind: "directive", type: i4.TuiInputDirective, selector: "input[tuiInput]", inputs: ["readOnly", "invalid", "focused", "state"] }, { kind: "directive", type: TuiTitle, selector: "[tuiTitle]", inputs: ["tuiTitle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
86
86
  }
87
87
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: TuiInputPhoneInternationalContent, decorators: [{
88
88
  type: Component,
@@ -99,7 +99,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImpo
99
99
  TuiOption,
100
100
  TuiTextfield,
101
101
  TuiTitle,
102
- ], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: { 'data-tui-version': TUI_VERSION }, template: "<button\n appearance=\"textfield\"\n tabindex=\"-1\"\n tuiButton\n tuiChevron\n type=\"button\"\n class=\"t-ipi-select\"\n [attr.data-mode]=\"host.mode()\"\n [class.t-ipi-select_readonly]=\"host.readOnly()\"\n [disabled]=\"host.disabled()\"\n [size]=\"size()\"\n [tuiAppearanceFocus]=\"host.open()\"\n (click.prevent)=\"host.interactive() && host.open.set(!host.open())\"\n (pointerdown.stop)=\"(0)\"\n>\n <img\n class=\"t-ipi-flag\"\n [alt]=\"names()[host.countryIsoCode()]\"\n [class.t-ipi-flag_small]=\"size() === 's'\"\n [src]=\"host.countryIsoCode() | tuiFlag\"\n />\n</button>\n<ng-template #filter>\n <div class=\"t-ipi-search\">\n <tui-textfield\n [iconStart]=\"icons.search\"\n [tuiTextfieldSize]=\"size() === 's' ? 's' : 'm'\"\n >\n <input\n autocomplete=\"off\"\n tuiInput\n type=\"text\"\n [ngModel]=\"host.search()\"\n [ngModelOptions]=\"{standalone: true}\"\n [placeholder]=\"label()\"\n [tuiAutoFocus]=\"!ios\"\n (keydown.arrowDown)=\"list()[0]?.nativeElement?.focus()\"\n (ngModelChange)=\"host.search.set($event)\"\n />\n </tui-textfield>\n </div>\n</ng-template>\n<ng-container *tuiDropdown>\n @if (host.countrySearch()) {\n <ng-container *ngTemplateOutlet=\"filter\" />\n }\n <tui-data-list class=\"t-ipi-options\">\n @for (item of filtered(); track item.iso) {\n <button\n tuiOption\n type=\"button\"\n (click)=\"onItemClick(item.iso)\"\n >\n <img\n alt=\"\"\n class=\"t-ipi-flag\"\n [class.t-ipi-flag_small]=\"size() === 's'\"\n [src]=\"item.iso | tuiFlag\"\n />\n <span tuiTitle>{{ item.name }}</span>\n <span class=\"t-ipi-code\">{{ item.code }}</span>\n </button>\n }\n </tui-data-list>\n</ng-container>\n", styles: ["tui-input-phone-international-content:where(*[data-tui-version=\"5.17.0-canary.f91031d\"]){display:contents;border-radius:inherit}[tuiInputPhoneInternational][tuiInputPhoneInternational]:where(*[data-tui-version=\"5.17.0-canary.f91031d\"]){inset-inline-start:var(--t-offset);border-top-left-radius:0;border-bottom-left-radius:0;inline-size:calc(100% - var(--t-offset))}[tuiInputPhoneInternational][tuiInputPhoneInternational]:where(*[data-tui-version=\"5.17.0-canary.f91031d\"])+[tuiLabel][tuiLabel]{padding-inline-start:var(--t-offset)}tui-textfield[data-size=s]:where(*[data-tui-version=\"5.17.0-canary.f91031d\"]){--t-offset: 4.125rem}tui-textfield[data-size=s]:where(*[data-tui-version=\"5.17.0-canary.f91031d\"]) .t-ipi-flag{margin:0 .1875rem}tui-textfield[data-size=m]:where(*[data-tui-version=\"5.17.0-canary.f91031d\"]){--t-offset: 4.875rem}tui-textfield[data-size=m]:where(*[data-tui-version=\"5.17.0-canary.f91031d\"]) .t-ipi-flag{margin:0 -.1875rem}tui-textfield[data-size=l]:where(*[data-tui-version=\"5.17.0-canary.f91031d\"]){--t-offset: 5.25rem}tui-textfield[data-size=l]:where(*[data-tui-version=\"5.17.0-canary.f91031d\"]) .t-ipi-flag{margin:0 -.1875rem}[data-tui-version=\"5.17.0-canary.f91031d\"] .t-ipi-select{position:absolute;inset-inline-start:0;border-radius:inherit;border-top-right-radius:0;border-bottom-right-radius:0}[data-tui-version=\"5.17.0-canary.f91031d\"] .t-ipi-select_readonly{pointer-events:none}[data-tui-version=\"5.17.0-canary.f91031d\"] .t-ipi-flag{inline-size:1.75rem;block-size:1.75rem;border-radius:100%}[data-tui-version=\"5.17.0-canary.f91031d\"] .t-ipi-flag_small{inline-size:1.25rem;block-size:1.25rem}[data-tui-version=\"5.17.0-canary.f91031d\"] .t-ipi-code{color:var(--tui-text-secondary)}[data-tui-version=\"5.17.0-canary.f91031d\"] .t-ipi-search{position:sticky;z-index:1;inset-block-start:0;background:var(--tui-background-elevation-3);padding:.375rem .375rem 0}@supports (-webkit-touch-callout: none){[data-tui-version=\"5.17.0-canary.f91031d\"] .t-ipi-search input:focus{animation:tuiPreventIOSScroll 1ms}}@keyframes tuiPreventIOSScroll{0%{opacity:0}to{opacity:1}}[data-tui-version=\"5.17.0-canary.f91031d\"] tui-dropdown-mobile .t-ipi-search,[data-tui-version=\"5.17.0-canary.f91031d\"] tui-sheet-dialog .t-ipi-search{background:var(--tui-background-elevation-1)}[data-tui-version=\"5.17.0-canary.f91031d\"] tui-dropdown-mobile .t-ipi-options:not(:first-child),[data-tui-version=\"5.17.0-canary.f91031d\"] tui-sheet-dialog .t-ipi-options:not(:first-child){min-block-size:calc(100 * var(--tui-viewport-vh) - 8.75rem)}[data-tui-version=\"5.17.0-canary.f91031d\"] tui-sheet-dialog .t-ipi-search{inset-block-start:4.5rem;padding-inline-start:0;padding-inline-end:0}\n"] }]
102
+ ], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: { 'data-tui-version': TUI_VERSION }, template: "<button\n appearance=\"textfield\"\n tabindex=\"-1\"\n tuiButton\n tuiChevron\n type=\"button\"\n class=\"t-ipi-select\"\n [attr.data-mode]=\"host.mode()\"\n [class.t-ipi-select_readonly]=\"host.readOnly()\"\n [disabled]=\"host.disabled()\"\n [size]=\"size()\"\n [tuiAppearanceFocus]=\"host.open()\"\n (click.prevent)=\"host.interactive() && host.open.set(!host.open())\"\n (pointerdown.stop)=\"(0)\"\n>\n <img\n class=\"t-ipi-flag\"\n [alt]=\"names()[host.countryIsoCode()]\"\n [class.t-ipi-flag_small]=\"size() === 's'\"\n [src]=\"host.countryIsoCode() | tuiFlag\"\n />\n</button>\n<ng-template #filter>\n <div class=\"t-ipi-search\">\n <tui-textfield\n [iconStart]=\"icons.search\"\n [tuiTextfieldSize]=\"size() === 's' ? 's' : 'm'\"\n >\n <input\n autocomplete=\"off\"\n tuiInput\n type=\"text\"\n [ngModel]=\"host.search()\"\n [ngModelOptions]=\"{standalone: true}\"\n [placeholder]=\"label()\"\n [tuiAutoFocus]=\"!ios\"\n (keydown.arrowDown)=\"list()[0]?.nativeElement?.focus()\"\n (ngModelChange)=\"host.search.set($event)\"\n />\n </tui-textfield>\n </div>\n</ng-template>\n<ng-container *tuiDropdown>\n @if (host.countrySearch()) {\n <ng-container *ngTemplateOutlet=\"filter\" />\n }\n <tui-data-list class=\"t-ipi-options\">\n @for (item of filtered(); track item.iso) {\n <button\n tuiOption\n type=\"button\"\n (click)=\"onItemClick(item.iso)\"\n >\n <img\n alt=\"\"\n class=\"t-ipi-flag\"\n [class.t-ipi-flag_small]=\"size() === 's'\"\n [src]=\"item.iso | tuiFlag\"\n />\n <span tuiTitle>{{ item.name }}</span>\n <span class=\"t-ipi-code\">{{ item.code }}</span>\n </button>\n }\n </tui-data-list>\n</ng-container>\n", styles: ["tui-input-phone-international-content:where(*[data-tui-version=\"5.18.0\"]){display:contents;border-radius:inherit}[tuiInputPhoneInternational][tuiInputPhoneInternational]:where(*[data-tui-version=\"5.18.0\"]){inset-inline-start:var(--t-offset);border-top-left-radius:0;border-bottom-left-radius:0;inline-size:calc(100% - var(--t-offset))}[tuiInputPhoneInternational][tuiInputPhoneInternational]:where(*[data-tui-version=\"5.18.0\"])+[tuiLabel][tuiLabel]{padding-inline-start:var(--t-offset)}tui-textfield[data-size=s]:where(*[data-tui-version=\"5.18.0\"]){--t-offset: 4.125rem}tui-textfield[data-size=s]:where(*[data-tui-version=\"5.18.0\"]) .t-ipi-flag{margin:0 .1875rem}tui-textfield[data-size=m]:where(*[data-tui-version=\"5.18.0\"]){--t-offset: 4.875rem}tui-textfield[data-size=m]:where(*[data-tui-version=\"5.18.0\"]) .t-ipi-flag{margin:0 -.1875rem}tui-textfield[data-size=l]:where(*[data-tui-version=\"5.18.0\"]){--t-offset: 5.25rem}tui-textfield[data-size=l]:where(*[data-tui-version=\"5.18.0\"]) .t-ipi-flag{margin:0 -.1875rem}[data-tui-version=\"5.18.0\"] .t-ipi-select{position:absolute;inset-inline-start:0;border-radius:inherit;border-top-right-radius:0;border-bottom-right-radius:0}[data-tui-version=\"5.18.0\"] .t-ipi-select_readonly{pointer-events:none}[data-tui-version=\"5.18.0\"] .t-ipi-flag{inline-size:1.75rem;block-size:1.75rem;border-radius:100%}[data-tui-version=\"5.18.0\"] .t-ipi-flag_small{inline-size:1.25rem;block-size:1.25rem}[data-tui-version=\"5.18.0\"] .t-ipi-code{color:var(--tui-text-secondary)}[data-tui-version=\"5.18.0\"] .t-ipi-search{position:sticky;z-index:1;inset-block-start:0;background:var(--tui-background-elevation-3);padding:.375rem .375rem 0}@supports (-webkit-touch-callout: none){[data-tui-version=\"5.18.0\"] .t-ipi-search input:focus{animation:tuiPreventIOSScroll 1ms}}@keyframes tuiPreventIOSScroll{0%{opacity:0}to{opacity:1}}[data-tui-version=\"5.18.0\"] tui-dropdown-mobile .t-ipi-search,[data-tui-version=\"5.18.0\"] tui-sheet-dialog .t-ipi-search{background:var(--tui-background-elevation-1)}[data-tui-version=\"5.18.0\"] tui-dropdown-mobile .t-ipi-options:not(:first-child),[data-tui-version=\"5.18.0\"] tui-sheet-dialog .t-ipi-options:not(:first-child){min-block-size:calc(100 * var(--tui-viewport-vh) - 8.75rem)}[data-tui-version=\"5.18.0\"] tui-sheet-dialog .t-ipi-search{inset-block-start:4.5rem;padding-inline-start:0;padding-inline-end:0}\n"] }]
103
103
  }] });
104
104
 
105
105
  const NOT_FORM_CONTROL_SYMBOLS = /[^+\d]/g;
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-kit-components-input-phone-international.mjs","sources":["../../../projects/kit/components/input-phone-international/input-phone-international.options.ts","../../../projects/kit/components/input-phone-international/input-phone-international-content.component.ts","../../../projects/kit/components/input-phone-international/input-phone-international-content.template.html","../../../projects/kit/components/input-phone-international/input-phone-international.component.ts","../../../projects/kit/components/input-phone-international/input-phone-international.ts","../../../projects/kit/components/input-phone-international/taiga-ui-kit-components-input-phone-international.ts"],"sourcesContent":["import {tuiCreateOptions} from '@taiga-ui/cdk/utils/di';\nimport {type TuiCountryIsoCode} from '@taiga-ui/i18n/types';\nimport {type MetadataJson} from 'libphonenumber-js/core';\nimport {type Observable, of} from 'rxjs';\n\nexport interface TuiInputPhoneInternationalOptions {\n readonly countries: readonly TuiCountryIsoCode[];\n readonly countrySearch: boolean;\n readonly countryIsoCode: TuiCountryIsoCode;\n readonly metadata: Observable<MetadataJson> | Promise<MetadataJson>;\n readonly separator: string;\n}\n\nexport const TUI_INPUT_PHONE_INTERNATIONAL_DEFAULT_OPTIONS: TuiInputPhoneInternationalOptions =\n {\n countries: [],\n countrySearch: false,\n countryIsoCode: 'RU',\n metadata: of({\n version: 4,\n countries: {},\n country_calling_codes: {},\n nonGeographic: {},\n }),\n separator: '-',\n };\n\n/**\n * Default parameters for input phone international component\n */\nexport const [\n TUI_INPUT_PHONE_INTERNATIONAL_OPTIONS,\n tuiInputPhoneInternationalOptionsProvider,\n] = tuiCreateOptions(TUI_INPUT_PHONE_INTERNATIONAL_DEFAULT_OPTIONS);\n","import {NgTemplateOutlet} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n inject,\n viewChildren,\n ViewEncapsulation,\n} from '@angular/core';\nimport {FormsModule} from '@angular/forms';\nimport {MASKITO_DEFAULT_OPTIONS, maskitoTransform} from '@maskito/core';\nimport {WA_IS_IOS} from '@ng-web-apis/platform';\nimport {TUI_DEFAULT_MATCHER, TUI_VERSION} from '@taiga-ui/cdk/constants';\nimport {TuiAutoFocus} from '@taiga-ui/cdk/directives/auto-focus';\nimport {TuiButton} from '@taiga-ui/core/components/button';\nimport {TuiDataList, TuiOption} from '@taiga-ui/core/components/data-list';\nimport {TuiInput} from '@taiga-ui/core/components/input';\nimport {TUI_TEXTFIELD_OPTIONS, TuiTextfield} from '@taiga-ui/core/components/textfield';\nimport {TuiTitle} from '@taiga-ui/core/components/title';\nimport {TuiDropdownContent} from '@taiga-ui/core/portals/dropdown';\nimport {TUI_COMMON_ICONS} from '@taiga-ui/core/tokens';\nimport {type TuiCountryIsoCode} from '@taiga-ui/i18n/types';\nimport {TuiChevron} from '@taiga-ui/kit/directives/chevron';\nimport {TuiFlagPipe} from '@taiga-ui/kit/pipes/flag';\nimport {TUI_COUNTRIES, TUI_INTERNATIONAL_SEARCH} from '@taiga-ui/kit/tokens';\n\nimport {\n tuiGetCallingCode,\n TuiInputPhoneInternationalComponent,\n} from './input-phone-international.component';\n\n@Component({\n selector: 'tui-input-phone-international-content',\n imports: [\n FormsModule,\n NgTemplateOutlet,\n TuiAutoFocus,\n TuiButton,\n TuiChevron,\n TuiDataList,\n TuiDropdownContent,\n TuiFlagPipe,\n TuiInput,\n TuiOption,\n TuiTextfield,\n TuiTitle,\n ],\n templateUrl: './input-phone-international-content.template.html',\n styles: `\n [data-tui-version='${TUI_VERSION}'] {\n @import './input-phone-international.style.less';\n }\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {'data-tui-version': TUI_VERSION},\n})\nexport class TuiInputPhoneInternationalContent {\n protected readonly host = inject(TuiInputPhoneInternationalComponent);\n protected readonly list = viewChildren(TuiOption, {read: ElementRef});\n protected readonly ios = inject(WA_IS_IOS);\n protected readonly icons = inject(TUI_COMMON_ICONS);\n protected readonly label = inject(TUI_INTERNATIONAL_SEARCH);\n protected readonly names = inject(TUI_COUNTRIES);\n protected readonly size = inject(TUI_TEXTFIELD_OPTIONS).size;\n\n protected readonly filtered = computed(() => {\n const metadata = this.host.metadata();\n\n return this.host\n .countries()\n .map((iso) => ({\n iso,\n name: this.names()[iso] || '',\n code: tuiGetCallingCode(iso, metadata),\n }))\n .filter(({name, code}) =>\n TUI_DEFAULT_MATCHER(`${name}${code}`, this.host.search()),\n );\n });\n\n protected onItemClick(code: TuiCountryIsoCode): void {\n this.host.el.focus();\n this.host.open.set(false);\n this.host.countryIsoCode.set(code);\n this.host.search.set('');\n this.host.masked.set(\n maskitoTransform(\n this.host.value() || tuiGetCallingCode(code, this.host.metadata()),\n this.host.mask() || MASKITO_DEFAULT_OPTIONS,\n ),\n );\n }\n}\n","<button\n appearance=\"textfield\"\n tabindex=\"-1\"\n tuiButton\n tuiChevron\n type=\"button\"\n class=\"t-ipi-select\"\n [attr.data-mode]=\"host.mode()\"\n [class.t-ipi-select_readonly]=\"host.readOnly()\"\n [disabled]=\"host.disabled()\"\n [size]=\"size()\"\n [tuiAppearanceFocus]=\"host.open()\"\n (click.prevent)=\"host.interactive() && host.open.set(!host.open())\"\n (pointerdown.stop)=\"(0)\"\n>\n <img\n class=\"t-ipi-flag\"\n [alt]=\"names()[host.countryIsoCode()]\"\n [class.t-ipi-flag_small]=\"size() === 's'\"\n [src]=\"host.countryIsoCode() | tuiFlag\"\n />\n</button>\n<ng-template #filter>\n <div class=\"t-ipi-search\">\n <tui-textfield\n [iconStart]=\"icons.search\"\n [tuiTextfieldSize]=\"size() === 's' ? 's' : 'm'\"\n >\n <input\n autocomplete=\"off\"\n tuiInput\n type=\"text\"\n [ngModel]=\"host.search()\"\n [ngModelOptions]=\"{standalone: true}\"\n [placeholder]=\"label()\"\n [tuiAutoFocus]=\"!ios\"\n (keydown.arrowDown)=\"list()[0]?.nativeElement?.focus()\"\n (ngModelChange)=\"host.search.set($event)\"\n />\n </tui-textfield>\n </div>\n</ng-template>\n<ng-container *tuiDropdown>\n @if (host.countrySearch()) {\n <ng-container *ngTemplateOutlet=\"filter\" />\n }\n <tui-data-list class=\"t-ipi-options\">\n @for (item of filtered(); track item.iso) {\n <button\n tuiOption\n type=\"button\"\n (click)=\"onItemClick(item.iso)\"\n >\n <img\n alt=\"\"\n class=\"t-ipi-flag\"\n [class.t-ipi-flag_small]=\"size() === 's'\"\n [src]=\"item.iso | tuiFlag\"\n />\n <span tuiTitle>{{ item.name }}</span>\n <span class=\"t-ipi-code\">{{ item.code }}</span>\n </button>\n }\n </tui-data-list>\n</ng-container>\n","import {computed, Directive, effect, inject, input, model, signal} from '@angular/core';\nimport {takeUntilDestroyed, toSignal} from '@angular/core/rxjs-interop';\nimport {MaskitoDirective} from '@maskito/angular';\nimport {\n MASKITO_DEFAULT_OPTIONS,\n maskitoInitialCalibrationPlugin,\n type MaskitoOptions,\n maskitoTransform,\n} from '@maskito/core';\nimport {maskitoGetCountryFromNumber, maskitoPhone} from '@maskito/phone';\nimport {WA_IS_IOS} from '@ng-web-apis/platform';\nimport {tuiAsControl, TuiControl} from '@taiga-ui/cdk/classes';\nimport {CHAR_PLUS} from '@taiga-ui/cdk/constants';\nimport {TuiActiveZone} from '@taiga-ui/cdk/directives/active-zone';\nimport {tuiAutoFocusOptionsProvider} from '@taiga-ui/cdk/directives/auto-focus';\nimport {tuiFallbackValueProvider} from '@taiga-ui/cdk/tokens';\nimport {tuiInjectElement, tuiIsInputEvent, tuiValue} from '@taiga-ui/cdk/utils/dom';\nimport {TuiWithInput} from '@taiga-ui/core/components/input';\nimport {\n tuiAsTextfieldContent,\n TuiTextfieldContent,\n} from '@taiga-ui/core/components/textfield';\nimport {tuiDropdownEnabled, TuiDropdownOpen} from '@taiga-ui/core/portals/dropdown';\nimport {type TuiCountryIsoCode} from '@taiga-ui/i18n/types';\nimport {TuiAppearanceProxy} from '@taiga-ui/kit/directives/appearance-proxy';\nimport {tuiMaskito} from '@taiga-ui/kit/utils';\nimport {\n getCountryCallingCode,\n type MetadataJson,\n validatePhoneNumberLength,\n} from 'libphonenumber-js/core';\nimport {filter, from} from 'rxjs';\n\nimport {TUI_INPUT_PHONE_INTERNATIONAL_OPTIONS} from './input-phone-international.options';\nimport {TuiInputPhoneInternationalContent} from './input-phone-international-content.component';\n\nconst NOT_FORM_CONTROL_SYMBOLS = /[^+\\d]/g;\n\n@Directive({\n selector: 'input[tuiInputPhoneInternational]',\n providers: [\n tuiAsControl(TuiInputPhoneInternationalComponent),\n tuiFallbackValueProvider(''),\n tuiAutoFocusOptionsProvider({preventScroll: true}),\n tuiAsTextfieldContent(() => TuiInputPhoneInternationalContent),\n ],\n hostDirectives: [\n MaskitoDirective,\n TuiWithInput,\n TuiAppearanceProxy,\n TuiTextfieldContent,\n ],\n host: {\n type: 'tel',\n '[attr.inputmode]': '!ios && open() ? \"none\" : null',\n '[disabled]': 'disabled()',\n '(beforeinput.capture)': 'onPaste($event)',\n '(click)': 'open.set(false)',\n '(input)': 'masked.set($event.target.value)',\n },\n})\n// TODO(v6): rename to TuiInputPhoneInternationalDirective\nexport class TuiInputPhoneInternationalComponent extends TuiControl<string> {\n private readonly options = inject(TUI_INPUT_PHONE_INTERNATIONAL_OPTIONS);\n\n public readonly el = tuiInjectElement<HTMLInputElement>();\n\n protected readonly ios = inject(WA_IS_IOS);\n protected readonly dropdownEnabled = tuiDropdownEnabled(this.interactive);\n\n public readonly masked = tuiValue(this.el);\n\n public readonly mask = tuiMaskito(\n computed(() => this.computeMask(this.countryIsoCode(), this.metadata())),\n );\n\n protected readonly change = effect(() => this.onChange(this.unmask(this.masked())));\n\n protected readonly $ = inject(TuiActiveZone)\n .tuiActiveZoneChange.pipe(\n filter(() => !this.readOnly()),\n takeUntilDestroyed(),\n )\n .subscribe((active) => {\n const prefix = `${tuiGetCallingCode(this.countryIsoCode(), this.metadata())} `;\n\n this.search.set('');\n this.masked.update((value) => {\n const fallback = active ? value || prefix : value;\n\n return value === prefix ? '' : fallback;\n });\n });\n\n public readonly metadata = toSignal(from(this.options.metadata));\n public readonly open = inject(TuiDropdownOpen).open;\n public readonly search = signal('');\n public readonly countrySearch = input(this.options.countrySearch);\n public readonly countryIsoCode = model(this.options.countryIsoCode);\n public readonly countries = input(this.options.countries);\n\n public override writeValue(unmasked: string | null): void {\n const code = this.getCountryCode(unmasked ?? '');\n\n if (code) {\n this.countryIsoCode.set(code);\n }\n\n super.writeValue(unmasked);\n this.masked.set(\n maskitoTransform(this.value() ?? '', this.mask() || MASKITO_DEFAULT_OPTIONS),\n );\n }\n\n protected onPaste(event: Event): void {\n const data = tuiIsInputEvent(event) && event.data;\n\n if (\n !data ||\n (!event.inputType.includes('Drop') && !event.inputType.includes('Paste'))\n ) {\n return;\n }\n\n const code = this.getCountryCode(data);\n\n if (code) {\n this.countryIsoCode.set(code);\n }\n }\n\n private computeMask(\n countryIsoCode: TuiCountryIsoCode,\n metadata?: MetadataJson,\n ): MaskitoOptions {\n if (!metadata) {\n return MASKITO_DEFAULT_OPTIONS;\n }\n\n const {plugins, ...options} = maskitoPhone({\n countryIsoCode,\n metadata,\n separator: this.options.separator,\n });\n\n return {\n ...options,\n plugins: [...plugins, maskitoInitialCalibrationPlugin()],\n };\n }\n\n private unmask(maskedValue: string): string {\n const value = maskedValue.replaceAll(NOT_FORM_CONTROL_SYMBOLS, '');\n const code = tuiGetCallingCode(this.countryIsoCode(), this.metadata());\n\n return value === code ? '' : value;\n }\n\n private getCountryCode(value: string): TuiCountryIsoCode | null {\n const metadata = this.metadata();\n const phone = value.startsWith(CHAR_PLUS) ? value : `${CHAR_PLUS}${value}`;\n\n return metadata && validatePhoneNumberLength(phone, metadata) !== 'TOO_SHORT'\n ? (maskitoGetCountryFromNumber(phone, metadata) ?? null)\n : null;\n }\n}\n\nexport function tuiGetCallingCode(\n iso: TuiCountryIsoCode,\n metadata?: MetadataJson | null,\n): string {\n return metadata ? `${CHAR_PLUS}${getCountryCallingCode(iso, metadata)}` : '';\n}\n","import {TuiLabel} from '@taiga-ui/core/components/label';\nimport {\n TuiTextfieldComponent,\n TuiTextfieldOptionsDirective,\n} from '@taiga-ui/core/components/textfield';\nimport {TuiDropdownContent} from '@taiga-ui/core/portals/dropdown';\n\nimport {TuiInputPhoneInternationalComponent} from './input-phone-international.component';\n\nexport const TuiInputPhoneInternational = [\n TuiInputPhoneInternationalComponent,\n TuiLabel,\n TuiTextfieldComponent,\n TuiTextfieldOptionsDirective,\n TuiDropdownContent,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2","i3","i4"],"mappings":"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"}
1
+ {"version":3,"file":"taiga-ui-kit-components-input-phone-international.mjs","sources":["../../../projects/kit/components/input-phone-international/input-phone-international.options.ts","../../../projects/kit/components/input-phone-international/input-phone-international-content.component.ts","../../../projects/kit/components/input-phone-international/input-phone-international-content.template.html","../../../projects/kit/components/input-phone-international/input-phone-international.component.ts","../../../projects/kit/components/input-phone-international/input-phone-international.ts","../../../projects/kit/components/input-phone-international/taiga-ui-kit-components-input-phone-international.ts"],"sourcesContent":["import {tuiCreateOptions} from '@taiga-ui/cdk/utils/di';\nimport {type TuiCountryIsoCode} from '@taiga-ui/i18n/types';\nimport {type MetadataJson} from 'libphonenumber-js/core';\nimport {type Observable, of} from 'rxjs';\n\nexport interface TuiInputPhoneInternationalOptions {\n readonly countries: readonly TuiCountryIsoCode[];\n readonly countrySearch: boolean;\n readonly countryIsoCode: TuiCountryIsoCode;\n readonly metadata: Observable<MetadataJson> | Promise<MetadataJson>;\n readonly separator: string;\n}\n\nexport const TUI_INPUT_PHONE_INTERNATIONAL_DEFAULT_OPTIONS: TuiInputPhoneInternationalOptions =\n {\n countries: [],\n countrySearch: false,\n countryIsoCode: 'RU',\n metadata: of({\n version: 4,\n countries: {},\n country_calling_codes: {},\n nonGeographic: {},\n }),\n separator: '-',\n };\n\n/**\n * Default parameters for input phone international component\n */\nexport const [\n TUI_INPUT_PHONE_INTERNATIONAL_OPTIONS,\n tuiInputPhoneInternationalOptionsProvider,\n] = tuiCreateOptions(TUI_INPUT_PHONE_INTERNATIONAL_DEFAULT_OPTIONS);\n","import {NgTemplateOutlet} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n inject,\n viewChildren,\n ViewEncapsulation,\n} from '@angular/core';\nimport {FormsModule} from '@angular/forms';\nimport {MASKITO_DEFAULT_OPTIONS, maskitoTransform} from '@maskito/core';\nimport {WA_IS_IOS} from '@ng-web-apis/platform';\nimport {TUI_DEFAULT_MATCHER, TUI_VERSION} from '@taiga-ui/cdk/constants';\nimport {TuiAutoFocus} from '@taiga-ui/cdk/directives/auto-focus';\nimport {TuiButton} from '@taiga-ui/core/components/button';\nimport {TuiDataList, TuiOption} from '@taiga-ui/core/components/data-list';\nimport {TuiInput} from '@taiga-ui/core/components/input';\nimport {TUI_TEXTFIELD_OPTIONS, TuiTextfield} from '@taiga-ui/core/components/textfield';\nimport {TuiTitle} from '@taiga-ui/core/components/title';\nimport {TuiDropdownContent} from '@taiga-ui/core/portals/dropdown';\nimport {TUI_COMMON_ICONS} from '@taiga-ui/core/tokens';\nimport {type TuiCountryIsoCode} from '@taiga-ui/i18n/types';\nimport {TuiChevron} from '@taiga-ui/kit/directives/chevron';\nimport {TuiFlagPipe} from '@taiga-ui/kit/pipes/flag';\nimport {TUI_COUNTRIES, TUI_INTERNATIONAL_SEARCH} from '@taiga-ui/kit/tokens';\n\nimport {\n tuiGetCallingCode,\n TuiInputPhoneInternationalComponent,\n} from './input-phone-international.component';\n\n@Component({\n selector: 'tui-input-phone-international-content',\n imports: [\n FormsModule,\n NgTemplateOutlet,\n TuiAutoFocus,\n TuiButton,\n TuiChevron,\n TuiDataList,\n TuiDropdownContent,\n TuiFlagPipe,\n TuiInput,\n TuiOption,\n TuiTextfield,\n TuiTitle,\n ],\n templateUrl: './input-phone-international-content.template.html',\n styles: `\n [data-tui-version='${TUI_VERSION}'] {\n @import './input-phone-international.style.less';\n }\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {'data-tui-version': TUI_VERSION},\n})\nexport class TuiInputPhoneInternationalContent {\n protected readonly host = inject(TuiInputPhoneInternationalComponent);\n protected readonly list = viewChildren(TuiOption, {read: ElementRef});\n protected readonly ios = inject(WA_IS_IOS);\n protected readonly icons = inject(TUI_COMMON_ICONS);\n protected readonly label = inject(TUI_INTERNATIONAL_SEARCH);\n protected readonly names = inject(TUI_COUNTRIES);\n protected readonly size = inject(TUI_TEXTFIELD_OPTIONS).size;\n\n protected readonly filtered = computed(() => {\n const metadata = this.host.metadata();\n\n return this.host\n .countries()\n .map((iso) => ({\n iso,\n name: this.names()[iso] || '',\n code: tuiGetCallingCode(iso, metadata),\n }))\n .filter(({name, code}) =>\n TUI_DEFAULT_MATCHER(`${name}${code}`, this.host.search()),\n );\n });\n\n protected onItemClick(code: TuiCountryIsoCode): void {\n this.host.el.focus();\n this.host.open.set(false);\n this.host.countryIsoCode.set(code);\n this.host.search.set('');\n this.host.masked.set(\n maskitoTransform(\n this.host.value() || tuiGetCallingCode(code, this.host.metadata()),\n this.host.mask() || MASKITO_DEFAULT_OPTIONS,\n ),\n );\n }\n}\n","<button\n appearance=\"textfield\"\n tabindex=\"-1\"\n tuiButton\n tuiChevron\n type=\"button\"\n class=\"t-ipi-select\"\n [attr.data-mode]=\"host.mode()\"\n [class.t-ipi-select_readonly]=\"host.readOnly()\"\n [disabled]=\"host.disabled()\"\n [size]=\"size()\"\n [tuiAppearanceFocus]=\"host.open()\"\n (click.prevent)=\"host.interactive() && host.open.set(!host.open())\"\n (pointerdown.stop)=\"(0)\"\n>\n <img\n class=\"t-ipi-flag\"\n [alt]=\"names()[host.countryIsoCode()]\"\n [class.t-ipi-flag_small]=\"size() === 's'\"\n [src]=\"host.countryIsoCode() | tuiFlag\"\n />\n</button>\n<ng-template #filter>\n <div class=\"t-ipi-search\">\n <tui-textfield\n [iconStart]=\"icons.search\"\n [tuiTextfieldSize]=\"size() === 's' ? 's' : 'm'\"\n >\n <input\n autocomplete=\"off\"\n tuiInput\n type=\"text\"\n [ngModel]=\"host.search()\"\n [ngModelOptions]=\"{standalone: true}\"\n [placeholder]=\"label()\"\n [tuiAutoFocus]=\"!ios\"\n (keydown.arrowDown)=\"list()[0]?.nativeElement?.focus()\"\n (ngModelChange)=\"host.search.set($event)\"\n />\n </tui-textfield>\n </div>\n</ng-template>\n<ng-container *tuiDropdown>\n @if (host.countrySearch()) {\n <ng-container *ngTemplateOutlet=\"filter\" />\n }\n <tui-data-list class=\"t-ipi-options\">\n @for (item of filtered(); track item.iso) {\n <button\n tuiOption\n type=\"button\"\n (click)=\"onItemClick(item.iso)\"\n >\n <img\n alt=\"\"\n class=\"t-ipi-flag\"\n [class.t-ipi-flag_small]=\"size() === 's'\"\n [src]=\"item.iso | tuiFlag\"\n />\n <span tuiTitle>{{ item.name }}</span>\n <span class=\"t-ipi-code\">{{ item.code }}</span>\n </button>\n }\n </tui-data-list>\n</ng-container>\n","import {computed, Directive, effect, inject, input, model, signal} from '@angular/core';\nimport {takeUntilDestroyed, toSignal} from '@angular/core/rxjs-interop';\nimport {MaskitoDirective} from '@maskito/angular';\nimport {\n MASKITO_DEFAULT_OPTIONS,\n maskitoInitialCalibrationPlugin,\n type MaskitoOptions,\n maskitoTransform,\n} from '@maskito/core';\nimport {maskitoGetCountryFromNumber, maskitoPhone} from '@maskito/phone';\nimport {WA_IS_IOS} from '@ng-web-apis/platform';\nimport {tuiAsControl, TuiControl} from '@taiga-ui/cdk/classes';\nimport {CHAR_PLUS} from '@taiga-ui/cdk/constants';\nimport {TuiActiveZone} from '@taiga-ui/cdk/directives/active-zone';\nimport {tuiAutoFocusOptionsProvider} from '@taiga-ui/cdk/directives/auto-focus';\nimport {tuiFallbackValueProvider} from '@taiga-ui/cdk/tokens';\nimport {tuiInjectElement, tuiIsInputEvent, tuiValue} from '@taiga-ui/cdk/utils/dom';\nimport {TuiWithInput} from '@taiga-ui/core/components/input';\nimport {\n tuiAsTextfieldContent,\n TuiTextfieldContent,\n} from '@taiga-ui/core/components/textfield';\nimport {tuiDropdownEnabled, TuiDropdownOpen} from '@taiga-ui/core/portals/dropdown';\nimport {type TuiCountryIsoCode} from '@taiga-ui/i18n/types';\nimport {TuiAppearanceProxy} from '@taiga-ui/kit/directives/appearance-proxy';\nimport {tuiMaskito} from '@taiga-ui/kit/utils';\nimport {\n getCountryCallingCode,\n type MetadataJson,\n validatePhoneNumberLength,\n} from 'libphonenumber-js/core';\nimport {filter, from} from 'rxjs';\n\nimport {TUI_INPUT_PHONE_INTERNATIONAL_OPTIONS} from './input-phone-international.options';\nimport {TuiInputPhoneInternationalContent} from './input-phone-international-content.component';\n\nconst NOT_FORM_CONTROL_SYMBOLS = /[^+\\d]/g;\n\n@Directive({\n selector: 'input[tuiInputPhoneInternational]',\n providers: [\n tuiAsControl(TuiInputPhoneInternationalComponent),\n tuiFallbackValueProvider(''),\n tuiAutoFocusOptionsProvider({preventScroll: true}),\n tuiAsTextfieldContent(() => TuiInputPhoneInternationalContent),\n ],\n hostDirectives: [\n MaskitoDirective,\n TuiWithInput,\n TuiAppearanceProxy,\n TuiTextfieldContent,\n ],\n host: {\n type: 'tel',\n '[attr.inputmode]': '!ios && open() ? \"none\" : null',\n '[disabled]': 'disabled()',\n '(beforeinput.capture)': 'onPaste($event)',\n '(click)': 'open.set(false)',\n '(input)': 'masked.set($event.target.value)',\n },\n})\n// TODO(v6): rename to TuiInputPhoneInternationalDirective\nexport class TuiInputPhoneInternationalComponent extends TuiControl<string> {\n private readonly options = inject(TUI_INPUT_PHONE_INTERNATIONAL_OPTIONS);\n\n public readonly el = tuiInjectElement<HTMLInputElement>();\n\n protected readonly ios = inject(WA_IS_IOS);\n protected readonly dropdownEnabled = tuiDropdownEnabled(this.interactive);\n\n public readonly masked = tuiValue(this.el);\n\n public readonly mask = tuiMaskito(\n computed(() => this.computeMask(this.countryIsoCode(), this.metadata())),\n );\n\n protected readonly change = effect(() => this.onChange(this.unmask(this.masked())));\n\n protected readonly $ = inject(TuiActiveZone)\n .tuiActiveZoneChange.pipe(\n filter(() => !this.readOnly()),\n takeUntilDestroyed(),\n )\n .subscribe((active) => {\n const prefix = `${tuiGetCallingCode(this.countryIsoCode(), this.metadata())} `;\n\n this.search.set('');\n this.masked.update((value) => {\n const fallback = active ? value || prefix : value;\n\n return value === prefix ? '' : fallback;\n });\n });\n\n public readonly metadata = toSignal(from(this.options.metadata));\n public readonly open = inject(TuiDropdownOpen).open;\n public readonly search = signal('');\n public readonly countrySearch = input(this.options.countrySearch);\n public readonly countryIsoCode = model(this.options.countryIsoCode);\n public readonly countries = input(this.options.countries);\n\n public override writeValue(unmasked: string | null): void {\n const code = this.getCountryCode(unmasked ?? '');\n\n if (code) {\n this.countryIsoCode.set(code);\n }\n\n super.writeValue(unmasked);\n this.masked.set(\n maskitoTransform(this.value() ?? '', this.mask() || MASKITO_DEFAULT_OPTIONS),\n );\n }\n\n protected onPaste(event: Event): void {\n const data = tuiIsInputEvent(event) && event.data;\n\n if (\n !data ||\n (!event.inputType.includes('Drop') && !event.inputType.includes('Paste'))\n ) {\n return;\n }\n\n const code = this.getCountryCode(data);\n\n if (code) {\n this.countryIsoCode.set(code);\n }\n }\n\n private computeMask(\n countryIsoCode: TuiCountryIsoCode,\n metadata?: MetadataJson,\n ): MaskitoOptions {\n if (!metadata) {\n return MASKITO_DEFAULT_OPTIONS;\n }\n\n const {plugins, ...options} = maskitoPhone({\n countryIsoCode,\n metadata,\n separator: this.options.separator,\n });\n\n return {\n ...options,\n plugins: [...plugins, maskitoInitialCalibrationPlugin()],\n };\n }\n\n private unmask(maskedValue: string): string {\n const value = maskedValue.replaceAll(NOT_FORM_CONTROL_SYMBOLS, '');\n const code = tuiGetCallingCode(this.countryIsoCode(), this.metadata());\n\n return value === code ? '' : value;\n }\n\n private getCountryCode(value: string): TuiCountryIsoCode | null {\n const metadata = this.metadata();\n const phone = value.startsWith(CHAR_PLUS) ? value : `${CHAR_PLUS}${value}`;\n\n return metadata && validatePhoneNumberLength(phone, metadata) !== 'TOO_SHORT'\n ? (maskitoGetCountryFromNumber(phone, metadata) ?? null)\n : null;\n }\n}\n\nexport function tuiGetCallingCode(\n iso: TuiCountryIsoCode,\n metadata?: MetadataJson | null,\n): string {\n return metadata ? `${CHAR_PLUS}${getCountryCallingCode(iso, metadata)}` : '';\n}\n","import {TuiLabel} from '@taiga-ui/core/components/label';\nimport {\n TuiTextfieldComponent,\n TuiTextfieldOptionsDirective,\n} from '@taiga-ui/core/components/textfield';\nimport {TuiDropdownContent} from '@taiga-ui/core/portals/dropdown';\n\nimport {TuiInputPhoneInternationalComponent} from './input-phone-international.component';\n\nexport const TuiInputPhoneInternational = [\n TuiInputPhoneInternationalComponent,\n TuiLabel,\n TuiTextfieldComponent,\n TuiTextfieldOptionsDirective,\n TuiDropdownContent,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2","i3","i4"],"mappings":"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"}
@@ -21,7 +21,7 @@ const TUI_INPUT_PHONE_DEFAULT_OPTIONS = {
21
21
  };
22
22
  const [TUI_INPUT_PHONE_OPTIONS, tuiInputPhoneOptionsProvider] = tuiCreateOptions(TUI_INPUT_PHONE_DEFAULT_OPTIONS);
23
23
 
24
- const countDigits = (value) => value.replaceAll(/\D/g, '').length;
24
+ const countDigits = (value) => value.replaceAll(/[^#\d]+/g, '').length;
25
25
  /**
26
26
  * `InputPhone` component sets country code as non-removable prefix.
27
27
  * This prefix appears on focus and cannot be erased.
@@ -29,11 +29,15 @@ const countDigits = (value) => value.replaceAll(/\D/g, '').length;
29
29
  * and try to insert the whole string inside our `InputPhone` textfield.
30
30
  * This preprocessor helps to avoid country prefix duplication on paste/drop/autofill events.
31
31
  */
32
- function tuiCreateCompletePhoneInsertionPreprocessor(countryCode, phoneMaskAfterCountryCode) {
33
- const completePhoneLength = `${countryCode}${phoneMaskAfterCountryCode}`.replaceAll(/[^#\d]+/g, '').length;
34
- const trimCountryPrefix = (value) => countryCode === '+7'
35
- ? value.replace(/^\+?\s*7?\s?8?\s?/, '')
36
- : value.replace(new RegExp(String.raw `^(\+?\s*${countryCode.replace('+', '')}?)\s?`), '');
32
+ function tuiCreateCompletePhoneInsertionPreprocessor(countryCode, nationalPartTemplate) {
33
+ const completePhoneLength = countDigits(`${countryCode}${nationalPartTemplate}`);
34
+ const trimCountryPrefix = (value) => {
35
+ const trimmed = value.replace(new RegExp(String.raw `^(\+?\s*${countryCode.replace('+', '')}?)\s?`), '');
36
+ return countryCode === '+7' &&
37
+ countDigits(trimmed) > countDigits(nationalPartTemplate)
38
+ ? trimmed.replace(/^8\s?/, '')
39
+ : trimmed;
40
+ };
37
41
  return ({ elementState, data }) => {
38
42
  const { value, selection } = elementState;
39
43
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-kit-components-input-phone.mjs","sources":["../../../projects/kit/components/input-phone/input-phone.options.ts","../../../projects/kit/components/input-phone/utils/complete-phone-insertion-preprocessor.ts","../../../projects/kit/components/input-phone/utils/create-phone-mask-expression.ts","../../../projects/kit/components/input-phone/input-phone.directive.ts","../../../projects/kit/components/input-phone/input-phone.ts","../../../projects/kit/components/input-phone/taiga-ui-kit-components-input-phone.ts"],"sourcesContent":["import {\n TUI_IDENTITY_VALUE_TRANSFORMER,\n type TuiValueTransformer,\n} from '@taiga-ui/cdk/classes';\nimport {tuiCreateOptions} from '@taiga-ui/cdk/utils/di';\n\nexport interface TuiInputPhoneOptions {\n readonly allowText: boolean;\n readonly mask: string;\n readonly valueTransformer: TuiValueTransformer<string | null, any>;\n}\n\nexport const TUI_INPUT_PHONE_DEFAULT_OPTIONS: TuiInputPhoneOptions = {\n mask: '+1 ### ###-####',\n allowText: false,\n valueTransformer: TUI_IDENTITY_VALUE_TRANSFORMER,\n};\n\nexport const [TUI_INPUT_PHONE_OPTIONS, tuiInputPhoneOptionsProvider] = tuiCreateOptions(\n TUI_INPUT_PHONE_DEFAULT_OPTIONS,\n);\n","import {type MaskitoPreprocessor} from '@maskito/core';\n\nconst countDigits = (value: string): number => value.replaceAll(/\\D/g, '').length;\n\n/**\n * `InputPhone` component sets country code as non-removable prefix.\n * This prefix appears on focus and cannot be erased.\n * But users sometimes can copy complete phone number (from any different source)\n * and try to insert the whole string inside our `InputPhone` textfield.\n * This preprocessor helps to avoid country prefix duplication on paste/drop/autofill events.\n */\nexport function tuiCreateCompletePhoneInsertionPreprocessor(\n countryCode: string,\n phoneMaskAfterCountryCode: string,\n): MaskitoPreprocessor {\n const completePhoneLength = `${countryCode}${phoneMaskAfterCountryCode}`.replaceAll(\n /[^#\\d]+/g,\n '',\n ).length;\n\n const trimCountryPrefix = (value: string): string =>\n countryCode === '+7'\n ? value.replace(/^\\+?\\s*7?\\s?8?\\s?/, '')\n : value.replace(\n new RegExp(String.raw`^(\\+?\\s*${countryCode.replace('+', '')}?)\\s?`),\n '',\n );\n\n return ({elementState, data}) => {\n const {value, selection} = elementState;\n\n return {\n elementState: {\n selection,\n value:\n /**\n * The only possible case when `value` includes digits more\n * than mask expression allows – browser autofill.\n * It means that we are inside `input`-event\n * and mask are ready to reject \"extra\" characters.\n * We should cut leading country prefix to save trailing characters!\n */\n countDigits(value) > completePhoneLength\n ? trimCountryPrefix(value)\n : value,\n },\n data:\n countDigits(data) >= completePhoneLength || data.startsWith(countryCode)\n ? /**\n * User tries to insert/drop the complete phone number (with country prefix).\n * We should drop already existing non-removable prefix.\n */\n trimCountryPrefix(data)\n : data,\n };\n };\n}\n","/**\n * Create {@link https://maskito.dev/core-concepts/mask-expression pattern mask expression} for phone number\n *\n * @example\n * tuiCreatePhoneMaskExpression('+1', '(###) ###-####');\n */\nexport function tuiCreatePhoneMaskExpression(\n countryCode: string,\n phoneMaskAfterCountryCode: string,\n): Array<RegExp | string> {\n return [\n ...countryCode.split(''),\n ' ',\n ...phoneMaskAfterCountryCode\n .replaceAll(/[^#\\- ()]+/g, '')\n .split('')\n .map((item) => (item === '#' ? /\\d/ : item)),\n ];\n}\n","import {computed, Directive, effect, inject, input, untracked} from '@angular/core';\nimport {MaskitoDirective} from '@maskito/angular';\nimport {\n MASKITO_DEFAULT_OPTIONS,\n type MaskitoOptions,\n maskitoTransform,\n} from '@maskito/core';\nimport {maskitoCaretGuard, maskitoPrefixPostprocessorGenerator} from '@maskito/kit';\nimport {tuiAsControl, TuiControl, tuiValueTransformerFrom} from '@taiga-ui/cdk/classes';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {TuiInputDirective, TuiWithInput} from '@taiga-ui/core/components/input';\nimport {TuiTextfieldComponent} from '@taiga-ui/core/components/textfield';\nimport {tuiMaskito} from '@taiga-ui/kit/utils';\n\nimport {TUI_INPUT_PHONE_OPTIONS} from './input-phone.options';\nimport {tuiCreateCompletePhoneInsertionPreprocessor} from './utils/complete-phone-insertion-preprocessor';\nimport {tuiCreatePhoneMaskExpression} from './utils/create-phone-mask-expression';\n\nconst MASK_SYMBOLS = /[ \\-_()]/g;\n\nfunction isText(value: string): boolean {\n return Number.isNaN(Number.parseInt(value.replaceAll(MASK_SYMBOLS, ''), 10));\n}\n\n@Directive({\n selector: 'input[tuiInputPhone]',\n providers: [\n tuiAsControl(TuiInputPhoneDirective),\n tuiValueTransformerFrom(TUI_INPUT_PHONE_OPTIONS),\n ],\n hostDirectives: [TuiWithInput, MaskitoDirective],\n host: {\n type: 'tel',\n '[disabled]': 'disabled()',\n '[inputMode]': 'inputMode()',\n '(input)': 'onInput($event.target.value)',\n },\n})\nexport class TuiInputPhoneDirective extends TuiControl<string | null> {\n private readonly input = inject(TuiInputDirective);\n private readonly host: TuiTextfieldComponent<string> = inject(TuiTextfieldComponent);\n\n protected readonly options = inject(TUI_INPUT_PHONE_OPTIONS);\n protected readonly el = tuiInjectElement<HTMLInputElement>();\n protected readonly nonRemovablePrefix = computed(() => `${this.countryCode()} `);\n\n protected readonly inputMode = computed(() =>\n this.allowText() ? 'text' : 'numeric',\n );\n\n protected readonly valueEffect = effect(() => {\n const value = this.value();\n\n if (value) {\n this.input.value.set(maskitoTransform(value ?? '', this.maskito()));\n }\n });\n\n protected readonly blurEffect = effect(() => {\n const incomplete = untracked(() => !this.value());\n const prefix = incomplete && this.interactive() && !this.allowText();\n\n if (!this.host.focused() && incomplete) {\n this.input.value.set('');\n } else if (this.host.focused() && prefix) {\n this.input.value.set(untracked(this.nonRemovablePrefix));\n }\n });\n\n protected readonly countryCode = computed(() => extractCode(this.mask()));\n protected readonly phoneMask = computed(() => extractMask(this.mask()));\n\n protected readonly maskito = tuiMaskito(\n computed(() =>\n this.calculateMask(\n this.countryCode(),\n this.phoneMask(),\n this.nonRemovablePrefix(),\n this.allowText(),\n ),\n ),\n );\n\n public readonly allowText = input(this.options.allowText);\n public readonly mask = input(this.options.mask);\n\n protected onInput(value: string): void {\n if (!value && !this.allowText()) {\n this.input.value.set(this.nonRemovablePrefix());\n }\n\n const parsed = isText(value)\n ? value\n : value.replaceAll(MASK_SYMBOLS, '').slice(0, this.maxPhoneLength);\n\n this.onChange(parsed === this.countryCode() || isText(parsed) ? '' : parsed);\n }\n\n private get maxPhoneLength(): number {\n return (\n this.countryCode().length + this.phoneMask().replaceAll(/[^#]+/g, '').length\n );\n }\n\n private calculateMask(\n countryCode: string,\n phoneMaskAfterCountryCode: string,\n nonRemovablePrefix: string,\n allowText: boolean,\n ): MaskitoOptions {\n const mask = tuiCreatePhoneMaskExpression(countryCode, phoneMaskAfterCountryCode);\n\n const preprocessors = [\n tuiCreateCompletePhoneInsertionPreprocessor(\n countryCode,\n phoneMaskAfterCountryCode,\n ),\n ];\n\n return allowText\n ? {\n mask: ({value}) =>\n isText(value) && value !== '+'\n ? (MASKITO_DEFAULT_OPTIONS.mask as RegExp)\n : mask,\n preprocessors,\n }\n : {\n mask,\n preprocessors,\n postprocessors: [\n maskitoPrefixPostprocessorGenerator(nonRemovablePrefix),\n ],\n plugins: [\n maskitoCaretGuard((value, [from, to]) => [\n from === to ? nonRemovablePrefix.length : 0,\n value.length,\n ]),\n ],\n };\n }\n}\n\nfunction extractCode(mask: string): string {\n const match = /^(\\+\\d+)/.exec(mask);\n\n return match?.[1] || '';\n}\n\nfunction extractMask(mask: string): string {\n const match = /^\\+\\d+(\\D.*)?$/.exec(mask);\n\n return match?.[1]?.trim() || '';\n}\n","import {TuiLabel} from '@taiga-ui/core/components/label';\nimport {\n TuiTextfieldComponent,\n TuiTextfieldOptionsDirective,\n} from '@taiga-ui/core/components/textfield';\nimport {TuiDropdownContent} from '@taiga-ui/core/portals/dropdown';\n\nimport {TuiInputPhoneDirective} from './input-phone.directive';\n\nexport const TuiInputPhone = [\n TuiInputPhoneDirective,\n TuiLabel,\n TuiTextfieldComponent,\n TuiTextfieldOptionsDirective,\n TuiDropdownContent,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"taiga-ui-kit-components-input-phone.mjs","sources":["../../../projects/kit/components/input-phone/input-phone.options.ts","../../../projects/kit/components/input-phone/utils/complete-phone-insertion-preprocessor.ts","../../../projects/kit/components/input-phone/utils/create-phone-mask-expression.ts","../../../projects/kit/components/input-phone/input-phone.directive.ts","../../../projects/kit/components/input-phone/input-phone.ts","../../../projects/kit/components/input-phone/taiga-ui-kit-components-input-phone.ts"],"sourcesContent":["import {\n TUI_IDENTITY_VALUE_TRANSFORMER,\n type TuiValueTransformer,\n} from '@taiga-ui/cdk/classes';\nimport {tuiCreateOptions} from '@taiga-ui/cdk/utils/di';\n\nexport interface TuiInputPhoneOptions {\n readonly allowText: boolean;\n readonly mask: string;\n readonly valueTransformer: TuiValueTransformer<string | null, any>;\n}\n\nexport const TUI_INPUT_PHONE_DEFAULT_OPTIONS: TuiInputPhoneOptions = {\n mask: '+1 ### ###-####',\n allowText: false,\n valueTransformer: TUI_IDENTITY_VALUE_TRANSFORMER,\n};\n\nexport const [TUI_INPUT_PHONE_OPTIONS, tuiInputPhoneOptionsProvider] = tuiCreateOptions(\n TUI_INPUT_PHONE_DEFAULT_OPTIONS,\n);\n","import {type MaskitoPreprocessor} from '@maskito/core';\n\nconst countDigits = (value: string): number => value.replaceAll(/[^#\\d]+/g, '').length;\n\n/**\n * `InputPhone` component sets country code as non-removable prefix.\n * This prefix appears on focus and cannot be erased.\n * But users sometimes can copy complete phone number (from any different source)\n * and try to insert the whole string inside our `InputPhone` textfield.\n * This preprocessor helps to avoid country prefix duplication on paste/drop/autofill events.\n */\nexport function tuiCreateCompletePhoneInsertionPreprocessor(\n countryCode: string,\n nationalPartTemplate: string,\n): MaskitoPreprocessor {\n const completePhoneLength = countDigits(`${countryCode}${nationalPartTemplate}`);\n\n const trimCountryPrefix = (value: string): string => {\n const trimmed = value.replace(\n new RegExp(String.raw`^(\\+?\\s*${countryCode.replace('+', '')}?)\\s?`),\n '',\n );\n\n return countryCode === '+7' &&\n countDigits(trimmed) > countDigits(nationalPartTemplate)\n ? trimmed.replace(/^8\\s?/, '')\n : trimmed;\n };\n\n return ({elementState, data}) => {\n const {value, selection} = elementState;\n\n return {\n elementState: {\n selection,\n value:\n /**\n * The only possible case when `value` includes digits more\n * than mask expression allows – browser autofill.\n * It means that we are inside `input`-event\n * and mask are ready to reject \"extra\" characters.\n * We should cut leading country prefix to save trailing characters!\n */\n countDigits(value) > completePhoneLength\n ? trimCountryPrefix(value)\n : value,\n },\n data:\n countDigits(data) >= completePhoneLength || data.startsWith(countryCode)\n ? /**\n * User tries to insert/drop the complete phone number (with country prefix).\n * We should drop already existing non-removable prefix.\n */\n trimCountryPrefix(data)\n : data,\n };\n };\n}\n","/**\n * Create {@link https://maskito.dev/core-concepts/mask-expression pattern mask expression} for phone number\n *\n * @example\n * tuiCreatePhoneMaskExpression('+1', '(###) ###-####');\n */\nexport function tuiCreatePhoneMaskExpression(\n countryCode: string,\n phoneMaskAfterCountryCode: string,\n): Array<RegExp | string> {\n return [\n ...countryCode.split(''),\n ' ',\n ...phoneMaskAfterCountryCode\n .replaceAll(/[^#\\- ()]+/g, '')\n .split('')\n .map((item) => (item === '#' ? /\\d/ : item)),\n ];\n}\n","import {computed, Directive, effect, inject, input, untracked} from '@angular/core';\nimport {MaskitoDirective} from '@maskito/angular';\nimport {\n MASKITO_DEFAULT_OPTIONS,\n type MaskitoOptions,\n maskitoTransform,\n} from '@maskito/core';\nimport {maskitoCaretGuard, maskitoPrefixPostprocessorGenerator} from '@maskito/kit';\nimport {tuiAsControl, TuiControl, tuiValueTransformerFrom} from '@taiga-ui/cdk/classes';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {TuiInputDirective, TuiWithInput} from '@taiga-ui/core/components/input';\nimport {TuiTextfieldComponent} from '@taiga-ui/core/components/textfield';\nimport {tuiMaskito} from '@taiga-ui/kit/utils';\n\nimport {TUI_INPUT_PHONE_OPTIONS} from './input-phone.options';\nimport {tuiCreateCompletePhoneInsertionPreprocessor} from './utils/complete-phone-insertion-preprocessor';\nimport {tuiCreatePhoneMaskExpression} from './utils/create-phone-mask-expression';\n\nconst MASK_SYMBOLS = /[ \\-_()]/g;\n\nfunction isText(value: string): boolean {\n return Number.isNaN(Number.parseInt(value.replaceAll(MASK_SYMBOLS, ''), 10));\n}\n\n@Directive({\n selector: 'input[tuiInputPhone]',\n providers: [\n tuiAsControl(TuiInputPhoneDirective),\n tuiValueTransformerFrom(TUI_INPUT_PHONE_OPTIONS),\n ],\n hostDirectives: [TuiWithInput, MaskitoDirective],\n host: {\n type: 'tel',\n '[disabled]': 'disabled()',\n '[inputMode]': 'inputMode()',\n '(input)': 'onInput($event.target.value)',\n },\n})\nexport class TuiInputPhoneDirective extends TuiControl<string | null> {\n private readonly input = inject(TuiInputDirective);\n private readonly host: TuiTextfieldComponent<string> = inject(TuiTextfieldComponent);\n\n protected readonly options = inject(TUI_INPUT_PHONE_OPTIONS);\n protected readonly el = tuiInjectElement<HTMLInputElement>();\n protected readonly nonRemovablePrefix = computed(() => `${this.countryCode()} `);\n\n protected readonly inputMode = computed(() =>\n this.allowText() ? 'text' : 'numeric',\n );\n\n protected readonly valueEffect = effect(() => {\n const value = this.value();\n\n if (value) {\n this.input.value.set(maskitoTransform(value ?? '', this.maskito()));\n }\n });\n\n protected readonly blurEffect = effect(() => {\n const incomplete = untracked(() => !this.value());\n const prefix = incomplete && this.interactive() && !this.allowText();\n\n if (!this.host.focused() && incomplete) {\n this.input.value.set('');\n } else if (this.host.focused() && prefix) {\n this.input.value.set(untracked(this.nonRemovablePrefix));\n }\n });\n\n protected readonly countryCode = computed(() => extractCode(this.mask()));\n protected readonly phoneMask = computed(() => extractMask(this.mask()));\n\n protected readonly maskito = tuiMaskito(\n computed(() =>\n this.calculateMask(\n this.countryCode(),\n this.phoneMask(),\n this.nonRemovablePrefix(),\n this.allowText(),\n ),\n ),\n );\n\n public readonly allowText = input(this.options.allowText);\n public readonly mask = input(this.options.mask);\n\n protected onInput(value: string): void {\n if (!value && !this.allowText()) {\n this.input.value.set(this.nonRemovablePrefix());\n }\n\n const parsed = isText(value)\n ? value\n : value.replaceAll(MASK_SYMBOLS, '').slice(0, this.maxPhoneLength);\n\n this.onChange(parsed === this.countryCode() || isText(parsed) ? '' : parsed);\n }\n\n private get maxPhoneLength(): number {\n return (\n this.countryCode().length + this.phoneMask().replaceAll(/[^#]+/g, '').length\n );\n }\n\n private calculateMask(\n countryCode: string,\n phoneMaskAfterCountryCode: string,\n nonRemovablePrefix: string,\n allowText: boolean,\n ): MaskitoOptions {\n const mask = tuiCreatePhoneMaskExpression(countryCode, phoneMaskAfterCountryCode);\n\n const preprocessors = [\n tuiCreateCompletePhoneInsertionPreprocessor(\n countryCode,\n phoneMaskAfterCountryCode,\n ),\n ];\n\n return allowText\n ? {\n mask: ({value}) =>\n isText(value) && value !== '+'\n ? (MASKITO_DEFAULT_OPTIONS.mask as RegExp)\n : mask,\n preprocessors,\n }\n : {\n mask,\n preprocessors,\n postprocessors: [\n maskitoPrefixPostprocessorGenerator(nonRemovablePrefix),\n ],\n plugins: [\n maskitoCaretGuard((value, [from, to]) => [\n from === to ? nonRemovablePrefix.length : 0,\n value.length,\n ]),\n ],\n };\n }\n}\n\nfunction extractCode(mask: string): string {\n const match = /^(\\+\\d+)/.exec(mask);\n\n return match?.[1] || '';\n}\n\nfunction extractMask(mask: string): string {\n const match = /^\\+\\d+(\\D.*)?$/.exec(mask);\n\n return match?.[1]?.trim() || '';\n}\n","import {TuiLabel} from '@taiga-ui/core/components/label';\nimport {\n TuiTextfieldComponent,\n TuiTextfieldOptionsDirective,\n} from '@taiga-ui/core/components/textfield';\nimport {TuiDropdownContent} from '@taiga-ui/core/portals/dropdown';\n\nimport {TuiInputPhoneDirective} from './input-phone.directive';\n\nexport const TuiInputPhone = [\n TuiInputPhoneDirective,\n TuiLabel,\n TuiTextfieldComponent,\n TuiTextfieldOptionsDirective,\n TuiDropdownContent,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -21,11 +21,11 @@ class TuiInputPinContent {
21
21
  this.control = inject(NgControl);
22
22
  }
23
23
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: TuiInputPinContent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
24
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.25", type: TuiInputPinContent, isStandalone: true, selector: "tui-input-pin-content", host: { attributes: { "aria-hidden": "true", "data-tui-version": "5.17.0-canary.f91031d" } }, ngImport: i0, template: "@for (_ of '-'.repeat(pin.el.maxLength); track $index) {\n <label\n class=\"t-item\"\n [tuiAppearance]=\"appearance()\"\n [tuiAppearanceFocus]=\"pin.isFocused($index)\"\n [tuiAppearanceMode]=\"control.invalid && control.touched ? 'invalid' : null\"\n (pointerdown.prevent)=\"pin.onClick($index)\"\n >\n <span\n class=\"t-value\"\n [class.t-value_filled]=\"pin.value()[$index]\"\n [textContent]=\"pin.value()[$index] || pin.el.placeholder[$index]\"\n ></span>\n </label>\n}\n", styles: ["@keyframes blink{50%{opacity:0}}tui-input-pin-content:where(*[data-tui-version=\"5.17.0-canary.f91031d\"]){position:absolute;inset-block-start:0;inset-inline-start:0;inline-size:100%;block-size:100%;display:flex;gap:inherit;border-radius:inherit}tui-input-pin-content:where(*[data-tui-version=\"5.17.0-canary.f91031d\"]) .t-item{display:flex;flex:1;align-items:center;justify-content:center;border-radius:inherit;pointer-events:auto;cursor:text;margin-inline-start:.25rem}tui-input-pin-content:where(*[data-tui-version=\"5.17.0-canary.f91031d\"]) .t-item:first-child{pointer-events:none;margin:0}tui-input-pin-content:where(*[data-tui-version=\"5.17.0-canary.f91031d\"]) .t-item[data-focus=true] .t-value_filled{background:var(--tui-service-selection-background)}tui-input-pin-content:where(*[data-tui-version=\"5.17.0-canary.f91031d\"]) .t-item[data-focus=true] .t-value_filled:before{display:none}tui-input-pin-content:where(*[data-tui-version=\"5.17.0-canary.f91031d\"]) .t-item[data-focus=true] .t-value:before{content:\"\";block-size:1em;border-inline-start:1px solid var(--tui-text-primary);animation:blink 1s steps(1) infinite}tui-input-pin-content:where(*[data-tui-version=\"5.17.0-canary.f91031d\"]) .t-value{color:var(--tui-text-secondary)}tui-input-pin-content:where(*[data-tui-version=\"5.17.0-canary.f91031d\"]) .t-value_filled{color:var(--tui-text-primary)}input[tuiInputPin]:where(*[data-tui-version=\"5.17.0-canary.f91031d\"]){position:absolute;inset:0;color:transparent;background:transparent;border:none;outline:none;--t-caret-color: rgba(255, 255, 255, .01);caret-color:var(--t-caret-color)}input[tuiInputPin]:where(*[data-tui-version=\"5.17.0-canary.f91031d\"])::selection{background:transparent}input[tuiInputPin]:where(*[data-tui-version=\"5.17.0-canary.f91031d\"])::placeholder{color:transparent!important}input[tuiInputPin]:where(*[data-tui-version=\"5.17.0-canary.f91031d\"])+.t-content{gap:inherit!important}input[tuiInputPin]:where(*[data-tui-version=\"5.17.0-canary.f91031d\"])+.t-content [tuiButtonX]{display:none!important}[tuiTheme=dark] input[tuiInputPin]:where(*[data-tui-version=\"5.17.0-canary.f91031d\"]){--t-caret-color: rgba(50, 50, 50, .01)}\n"], dependencies: [{ kind: "directive", type: TuiAppearance, selector: "[tuiAppearance]", inputs: ["tuiAppearance", "tuiAppearanceState", "tuiAppearanceFocus", "tuiAppearanceMode"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
24
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.25", type: TuiInputPinContent, isStandalone: true, selector: "tui-input-pin-content", host: { attributes: { "aria-hidden": "true", "data-tui-version": "5.18.0" } }, ngImport: i0, template: "@for (_ of '-'.repeat(pin.el.maxLength); track $index) {\n <label\n class=\"t-item\"\n [tuiAppearance]=\"appearance()\"\n [tuiAppearanceFocus]=\"pin.isFocused($index)\"\n [tuiAppearanceMode]=\"control.invalid && control.touched ? 'invalid' : null\"\n (pointerdown.prevent)=\"pin.onClick($index)\"\n >\n <span\n class=\"t-value\"\n [class.t-value_filled]=\"pin.value()[$index]\"\n [textContent]=\"pin.value()[$index] || pin.el.placeholder[$index]\"\n ></span>\n </label>\n}\n", styles: ["@keyframes blink{50%{opacity:0}}tui-input-pin-content:where(*[data-tui-version=\"5.18.0\"]){position:absolute;inset-block-start:0;inset-inline-start:0;inline-size:100%;block-size:100%;display:flex;gap:inherit;border-radius:inherit}tui-input-pin-content:where(*[data-tui-version=\"5.18.0\"]) .t-item{display:flex;flex:1;align-items:center;justify-content:center;border-radius:inherit;pointer-events:auto;cursor:text;margin-inline-start:.25rem}tui-input-pin-content:where(*[data-tui-version=\"5.18.0\"]) .t-item:first-child{pointer-events:none;margin:0}tui-input-pin-content:where(*[data-tui-version=\"5.18.0\"]) .t-item[data-focus=true] .t-value_filled{background:var(--tui-service-selection-background)}tui-input-pin-content:where(*[data-tui-version=\"5.18.0\"]) .t-item[data-focus=true] .t-value_filled:before{display:none}tui-input-pin-content:where(*[data-tui-version=\"5.18.0\"]) .t-item[data-focus=true] .t-value:before{content:\"\";block-size:1em;border-inline-start:1px solid var(--tui-text-primary);animation:blink 1s steps(1) infinite}tui-input-pin-content:where(*[data-tui-version=\"5.18.0\"]) .t-value{color:var(--tui-text-secondary)}tui-input-pin-content:where(*[data-tui-version=\"5.18.0\"]) .t-value_filled{color:var(--tui-text-primary)}input[tuiInputPin]:where(*[data-tui-version=\"5.18.0\"]){position:absolute;inset:0;color:transparent;background:transparent;border:none;outline:none;--t-caret-color: rgba(255, 255, 255, .01);caret-color:var(--t-caret-color)}input[tuiInputPin]:where(*[data-tui-version=\"5.18.0\"])::selection{background:transparent}input[tuiInputPin]:where(*[data-tui-version=\"5.18.0\"])::placeholder{color:transparent!important}input[tuiInputPin]:where(*[data-tui-version=\"5.18.0\"])+.t-content{gap:inherit!important}input[tuiInputPin]:where(*[data-tui-version=\"5.18.0\"])+.t-content [tuiButtonX]{display:none!important}[tuiTheme=dark] input[tuiInputPin]:where(*[data-tui-version=\"5.18.0\"]){--t-caret-color: rgba(50, 50, 50, .01)}\n"], dependencies: [{ kind: "directive", type: TuiAppearance, selector: "[tuiAppearance]", inputs: ["tuiAppearance", "tuiAppearanceState", "tuiAppearanceFocus", "tuiAppearanceMode"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
25
25
  }
26
26
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: TuiInputPinContent, decorators: [{
27
27
  type: Component,
28
- args: [{ selector: 'tui-input-pin-content', imports: [TuiAppearance], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: { 'aria-hidden': 'true', 'data-tui-version': TUI_VERSION }, template: "@for (_ of '-'.repeat(pin.el.maxLength); track $index) {\n <label\n class=\"t-item\"\n [tuiAppearance]=\"appearance()\"\n [tuiAppearanceFocus]=\"pin.isFocused($index)\"\n [tuiAppearanceMode]=\"control.invalid && control.touched ? 'invalid' : null\"\n (pointerdown.prevent)=\"pin.onClick($index)\"\n >\n <span\n class=\"t-value\"\n [class.t-value_filled]=\"pin.value()[$index]\"\n [textContent]=\"pin.value()[$index] || pin.el.placeholder[$index]\"\n ></span>\n </label>\n}\n", styles: ["@keyframes blink{50%{opacity:0}}tui-input-pin-content:where(*[data-tui-version=\"5.17.0-canary.f91031d\"]){position:absolute;inset-block-start:0;inset-inline-start:0;inline-size:100%;block-size:100%;display:flex;gap:inherit;border-radius:inherit}tui-input-pin-content:where(*[data-tui-version=\"5.17.0-canary.f91031d\"]) .t-item{display:flex;flex:1;align-items:center;justify-content:center;border-radius:inherit;pointer-events:auto;cursor:text;margin-inline-start:.25rem}tui-input-pin-content:where(*[data-tui-version=\"5.17.0-canary.f91031d\"]) .t-item:first-child{pointer-events:none;margin:0}tui-input-pin-content:where(*[data-tui-version=\"5.17.0-canary.f91031d\"]) .t-item[data-focus=true] .t-value_filled{background:var(--tui-service-selection-background)}tui-input-pin-content:where(*[data-tui-version=\"5.17.0-canary.f91031d\"]) .t-item[data-focus=true] .t-value_filled:before{display:none}tui-input-pin-content:where(*[data-tui-version=\"5.17.0-canary.f91031d\"]) .t-item[data-focus=true] .t-value:before{content:\"\";block-size:1em;border-inline-start:1px solid var(--tui-text-primary);animation:blink 1s steps(1) infinite}tui-input-pin-content:where(*[data-tui-version=\"5.17.0-canary.f91031d\"]) .t-value{color:var(--tui-text-secondary)}tui-input-pin-content:where(*[data-tui-version=\"5.17.0-canary.f91031d\"]) .t-value_filled{color:var(--tui-text-primary)}input[tuiInputPin]:where(*[data-tui-version=\"5.17.0-canary.f91031d\"]){position:absolute;inset:0;color:transparent;background:transparent;border:none;outline:none;--t-caret-color: rgba(255, 255, 255, .01);caret-color:var(--t-caret-color)}input[tuiInputPin]:where(*[data-tui-version=\"5.17.0-canary.f91031d\"])::selection{background:transparent}input[tuiInputPin]:where(*[data-tui-version=\"5.17.0-canary.f91031d\"])::placeholder{color:transparent!important}input[tuiInputPin]:where(*[data-tui-version=\"5.17.0-canary.f91031d\"])+.t-content{gap:inherit!important}input[tuiInputPin]:where(*[data-tui-version=\"5.17.0-canary.f91031d\"])+.t-content [tuiButtonX]{display:none!important}[tuiTheme=dark] input[tuiInputPin]:where(*[data-tui-version=\"5.17.0-canary.f91031d\"]){--t-caret-color: rgba(50, 50, 50, .01)}\n"] }]
28
+ args: [{ selector: 'tui-input-pin-content', imports: [TuiAppearance], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: { 'aria-hidden': 'true', 'data-tui-version': TUI_VERSION }, template: "@for (_ of '-'.repeat(pin.el.maxLength); track $index) {\n <label\n class=\"t-item\"\n [tuiAppearance]=\"appearance()\"\n [tuiAppearanceFocus]=\"pin.isFocused($index)\"\n [tuiAppearanceMode]=\"control.invalid && control.touched ? 'invalid' : null\"\n (pointerdown.prevent)=\"pin.onClick($index)\"\n >\n <span\n class=\"t-value\"\n [class.t-value_filled]=\"pin.value()[$index]\"\n [textContent]=\"pin.value()[$index] || pin.el.placeholder[$index]\"\n ></span>\n </label>\n}\n", styles: ["@keyframes blink{50%{opacity:0}}tui-input-pin-content:where(*[data-tui-version=\"5.18.0\"]){position:absolute;inset-block-start:0;inset-inline-start:0;inline-size:100%;block-size:100%;display:flex;gap:inherit;border-radius:inherit}tui-input-pin-content:where(*[data-tui-version=\"5.18.0\"]) .t-item{display:flex;flex:1;align-items:center;justify-content:center;border-radius:inherit;pointer-events:auto;cursor:text;margin-inline-start:.25rem}tui-input-pin-content:where(*[data-tui-version=\"5.18.0\"]) .t-item:first-child{pointer-events:none;margin:0}tui-input-pin-content:where(*[data-tui-version=\"5.18.0\"]) .t-item[data-focus=true] .t-value_filled{background:var(--tui-service-selection-background)}tui-input-pin-content:where(*[data-tui-version=\"5.18.0\"]) .t-item[data-focus=true] .t-value_filled:before{display:none}tui-input-pin-content:where(*[data-tui-version=\"5.18.0\"]) .t-item[data-focus=true] .t-value:before{content:\"\";block-size:1em;border-inline-start:1px solid var(--tui-text-primary);animation:blink 1s steps(1) infinite}tui-input-pin-content:where(*[data-tui-version=\"5.18.0\"]) .t-value{color:var(--tui-text-secondary)}tui-input-pin-content:where(*[data-tui-version=\"5.18.0\"]) .t-value_filled{color:var(--tui-text-primary)}input[tuiInputPin]:where(*[data-tui-version=\"5.18.0\"]){position:absolute;inset:0;color:transparent;background:transparent;border:none;outline:none;--t-caret-color: rgba(255, 255, 255, .01);caret-color:var(--t-caret-color)}input[tuiInputPin]:where(*[data-tui-version=\"5.18.0\"])::selection{background:transparent}input[tuiInputPin]:where(*[data-tui-version=\"5.18.0\"])::placeholder{color:transparent!important}input[tuiInputPin]:where(*[data-tui-version=\"5.18.0\"])+.t-content{gap:inherit!important}input[tuiInputPin]:where(*[data-tui-version=\"5.18.0\"])+.t-content [tuiButtonX]{display:none!important}[tuiTheme=dark] input[tuiInputPin]:where(*[data-tui-version=\"5.18.0\"]){--t-caret-color: rgba(50, 50, 50, .01)}\n"] }]
29
29
  }] });
30
30
 
31
31
  // TODO(v6): rename to TuiInputPinDirective
@@ -58,7 +58,7 @@ class TuiInputPinComponent {
58
58
  return (this.focused() && (this.selectionStart() ?? this.el.selectionStart) === index);
59
59
  }
60
60
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: TuiInputPinComponent, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
61
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.25", type: TuiInputPinComponent, isStandalone: true, selector: "input[tuiInputPin]", inputs: { mask: { classPropertyName: "mask", publicName: "mask", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "data-tui-version": "5.17.0-canary.f91031d", "inputmode": "numeric", "maxlength": "4", "spellcheck": "false" }, listeners: { "pointerdown.prevent": "onClick(0)", "selectionchange": "onSelection()" } }, providers: [tuiAsTextfieldContent(() => TuiInputPinContent)], hostDirectives: [{ directive: i1.MaskitoDirective }, { directive: i2.TuiTextfieldContent }], ngImport: i0 }); }
61
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.25", type: TuiInputPinComponent, isStandalone: true, selector: "input[tuiInputPin]", inputs: { mask: { classPropertyName: "mask", publicName: "mask", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "data-tui-version": "5.18.0", "inputmode": "numeric", "maxlength": "4", "spellcheck": "false" }, listeners: { "pointerdown.prevent": "onClick(0)", "selectionchange": "onSelection()" } }, providers: [tuiAsTextfieldContent(() => TuiInputPinContent)], hostDirectives: [{ directive: i1.MaskitoDirective }, { directive: i2.TuiTextfieldContent }], ngImport: i0 }); }
62
62
  }
63
63
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: TuiInputPinComponent, decorators: [{
64
64
  type: Directive,
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-kit-components-input-pin.mjs","sources":["../../../projects/kit/components/input-pin/input-pin-content.component.ts","../../../projects/kit/components/input-pin/input-pin-content.template.html","../../../projects/kit/components/input-pin/input-pin.component.ts","../../../projects/kit/components/input-pin/input-pin.ts","../../../projects/kit/components/input-pin/taiga-ui-kit-components-input-pin.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n inject,\n ViewEncapsulation,\n} from '@angular/core';\nimport {NgControl} from '@angular/forms';\nimport {TUI_VERSION} from '@taiga-ui/cdk/constants';\nimport {TUI_TEXTFIELD_OPTIONS} from '@taiga-ui/core/components/textfield';\nimport {TuiAppearance} from '@taiga-ui/core/directives/appearance';\n\nimport {TuiInputPinComponent} from './input-pin.component';\n\n@Component({\n selector: 'tui-input-pin-content',\n imports: [TuiAppearance],\n templateUrl: './input-pin-content.template.html',\n styles: `\n [data-tui-version='${TUI_VERSION}'] {\n @import './input-pin.style.less';\n }\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {'aria-hidden': 'true', 'data-tui-version': TUI_VERSION},\n})\nexport class TuiInputPinContent {\n protected readonly pin = inject(TuiInputPinComponent);\n protected readonly appearance = inject(TUI_TEXTFIELD_OPTIONS).appearance;\n protected readonly control = inject(NgControl);\n}\n","@for (_ of '-'.repeat(pin.el.maxLength); track $index) {\n <label\n class=\"t-item\"\n [tuiAppearance]=\"appearance()\"\n [tuiAppearanceFocus]=\"pin.isFocused($index)\"\n [tuiAppearanceMode]=\"control.invalid && control.touched ? 'invalid' : null\"\n (pointerdown.prevent)=\"pin.onClick($index)\"\n >\n <span\n class=\"t-value\"\n [class.t-value_filled]=\"pin.value()[$index]\"\n [textContent]=\"pin.value()[$index] || pin.el.placeholder[$index]\"\n ></span>\n </label>\n}\n","import {computed, Directive, input, signal} from '@angular/core';\nimport {MaskitoDirective} from '@maskito/angular';\nimport {type MaskitoMask} from '@maskito/core';\nimport {TUI_VERSION} from '@taiga-ui/cdk/constants';\nimport {tuiInjectElement, tuiValue} from '@taiga-ui/cdk/utils/dom';\nimport {tuiFocusedIn} from '@taiga-ui/cdk/utils/focus';\nimport {tuiIsString} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {\n tuiAsTextfieldContent,\n TuiTextfieldContent,\n} from '@taiga-ui/core/components/textfield';\nimport {tuiMaskito} from '@taiga-ui/kit/utils';\n\nimport {TuiInputPinContent} from './input-pin-content.component';\n\n@Directive({\n selector: 'input[tuiInputPin]',\n providers: [tuiAsTextfieldContent(() => TuiInputPinContent)],\n hostDirectives: [MaskitoDirective, TuiTextfieldContent],\n host: {\n 'data-tui-version': TUI_VERSION,\n inputmode: 'numeric',\n maxlength: '4',\n spellcheck: 'false',\n '(pointerdown.prevent)': 'onClick(0)',\n '(selectionchange)': 'onSelection()',\n },\n})\n// TODO(v6): rename to TuiInputPinDirective\nexport class TuiInputPinComponent {\n private readonly selectionStart = signal<number | null>(null);\n\n public readonly el = tuiInjectElement<HTMLInputElement>();\n public readonly value = tuiValue(this.el);\n\n protected readonly focused = tuiFocusedIn(this.el);\n\n protected readonly maskito = tuiMaskito(\n computed(() => ({mask: this.mask(), overwriteMode: 'replace'})),\n );\n\n public readonly mask = input(/^\\d+$/, {\n transform: (mask: MaskitoMask | string): MaskitoMask =>\n tuiIsString(mask) ? new RegExp(mask) : mask,\n });\n\n public onClick(index: number): void {\n this.el.focus();\n this.el.setSelectionRange(index, index + 1);\n }\n\n public onSelection(): void {\n const {selectionStart, selectionEnd, maxLength, value} = this.el;\n\n if (selectionStart === maxLength) {\n this.el.setSelectionRange(maxLength - 1, maxLength - 1);\n } else if (!selectionStart && !selectionEnd && value) {\n this.el.setSelectionRange(0, 1);\n }\n\n this.selectionStart.set(this.el.selectionStart);\n }\n\n public isFocused(index: number): boolean {\n return (\n this.focused() && (this.selectionStart() ?? this.el.selectionStart) === index\n );\n }\n}\n","import {TuiLabel} from '@taiga-ui/core/components/label';\nimport {\n TuiTextfieldComponent,\n TuiTextfieldOptionsDirective,\n} from '@taiga-ui/core/components/textfield';\nimport {TuiDropdownContent} from '@taiga-ui/core/portals/dropdown';\n\nimport {TuiInputPinComponent} from './input-pin.component';\n\nexport const TuiInputPin = [\n TuiInputPinComponent,\n TuiLabel,\n TuiTextfieldComponent,\n TuiTextfieldOptionsDirective,\n TuiDropdownContent,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"taiga-ui-kit-components-input-pin.mjs","sources":["../../../projects/kit/components/input-pin/input-pin-content.component.ts","../../../projects/kit/components/input-pin/input-pin-content.template.html","../../../projects/kit/components/input-pin/input-pin.component.ts","../../../projects/kit/components/input-pin/input-pin.ts","../../../projects/kit/components/input-pin/taiga-ui-kit-components-input-pin.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n inject,\n ViewEncapsulation,\n} from '@angular/core';\nimport {NgControl} from '@angular/forms';\nimport {TUI_VERSION} from '@taiga-ui/cdk/constants';\nimport {TUI_TEXTFIELD_OPTIONS} from '@taiga-ui/core/components/textfield';\nimport {TuiAppearance} from '@taiga-ui/core/directives/appearance';\n\nimport {TuiInputPinComponent} from './input-pin.component';\n\n@Component({\n selector: 'tui-input-pin-content',\n imports: [TuiAppearance],\n templateUrl: './input-pin-content.template.html',\n styles: `\n [data-tui-version='${TUI_VERSION}'] {\n @import './input-pin.style.less';\n }\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {'aria-hidden': 'true', 'data-tui-version': TUI_VERSION},\n})\nexport class TuiInputPinContent {\n protected readonly pin = inject(TuiInputPinComponent);\n protected readonly appearance = inject(TUI_TEXTFIELD_OPTIONS).appearance;\n protected readonly control = inject(NgControl);\n}\n","@for (_ of '-'.repeat(pin.el.maxLength); track $index) {\n <label\n class=\"t-item\"\n [tuiAppearance]=\"appearance()\"\n [tuiAppearanceFocus]=\"pin.isFocused($index)\"\n [tuiAppearanceMode]=\"control.invalid && control.touched ? 'invalid' : null\"\n (pointerdown.prevent)=\"pin.onClick($index)\"\n >\n <span\n class=\"t-value\"\n [class.t-value_filled]=\"pin.value()[$index]\"\n [textContent]=\"pin.value()[$index] || pin.el.placeholder[$index]\"\n ></span>\n </label>\n}\n","import {computed, Directive, input, signal} from '@angular/core';\nimport {MaskitoDirective} from '@maskito/angular';\nimport {type MaskitoMask} from '@maskito/core';\nimport {TUI_VERSION} from '@taiga-ui/cdk/constants';\nimport {tuiInjectElement, tuiValue} from '@taiga-ui/cdk/utils/dom';\nimport {tuiFocusedIn} from '@taiga-ui/cdk/utils/focus';\nimport {tuiIsString} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {\n tuiAsTextfieldContent,\n TuiTextfieldContent,\n} from '@taiga-ui/core/components/textfield';\nimport {tuiMaskito} from '@taiga-ui/kit/utils';\n\nimport {TuiInputPinContent} from './input-pin-content.component';\n\n@Directive({\n selector: 'input[tuiInputPin]',\n providers: [tuiAsTextfieldContent(() => TuiInputPinContent)],\n hostDirectives: [MaskitoDirective, TuiTextfieldContent],\n host: {\n 'data-tui-version': TUI_VERSION,\n inputmode: 'numeric',\n maxlength: '4',\n spellcheck: 'false',\n '(pointerdown.prevent)': 'onClick(0)',\n '(selectionchange)': 'onSelection()',\n },\n})\n// TODO(v6): rename to TuiInputPinDirective\nexport class TuiInputPinComponent {\n private readonly selectionStart = signal<number | null>(null);\n\n public readonly el = tuiInjectElement<HTMLInputElement>();\n public readonly value = tuiValue(this.el);\n\n protected readonly focused = tuiFocusedIn(this.el);\n\n protected readonly maskito = tuiMaskito(\n computed(() => ({mask: this.mask(), overwriteMode: 'replace'})),\n );\n\n public readonly mask = input(/^\\d+$/, {\n transform: (mask: MaskitoMask | string): MaskitoMask =>\n tuiIsString(mask) ? new RegExp(mask) : mask,\n });\n\n public onClick(index: number): void {\n this.el.focus();\n this.el.setSelectionRange(index, index + 1);\n }\n\n public onSelection(): void {\n const {selectionStart, selectionEnd, maxLength, value} = this.el;\n\n if (selectionStart === maxLength) {\n this.el.setSelectionRange(maxLength - 1, maxLength - 1);\n } else if (!selectionStart && !selectionEnd && value) {\n this.el.setSelectionRange(0, 1);\n }\n\n this.selectionStart.set(this.el.selectionStart);\n }\n\n public isFocused(index: number): boolean {\n return (\n this.focused() && (this.selectionStart() ?? this.el.selectionStart) === index\n );\n }\n}\n","import {TuiLabel} from '@taiga-ui/core/components/label';\nimport {\n TuiTextfieldComponent,\n TuiTextfieldOptionsDirective,\n} from '@taiga-ui/core/components/textfield';\nimport {TuiDropdownContent} from '@taiga-ui/core/portals/dropdown';\n\nimport {TuiInputPinComponent} from './input-pin.component';\n\nexport const TuiInputPin = [\n TuiInputPinComponent,\n TuiLabel,\n TuiTextfieldComponent,\n TuiTextfieldOptionsDirective,\n TuiDropdownContent,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -16,11 +16,11 @@ import { fromEvent, tap, filter, switchMap } from 'rxjs';
16
16
 
17
17
  class Styles {
18
18
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: Styles, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
19
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.25", type: Styles, isStandalone: true, selector: "ng-component", exportAs: ["tui-input-slider-5.17.0-canary.f91031d"], ngImport: i0, template: '', isInline: true, styles: ["tui-textfield:where(*[data-tui-version=\"5.17.0-canary.f91031d\"]) [tuiInputSlider]~.t-content [tuiButtonX]{display:none!important}tui-textfield:where(*[data-tui-version=\"5.17.0-canary.f91031d\"]) [tuiInputSlider]~[tuiSlider]:disabled{display:none}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
19
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.25", type: Styles, isStandalone: true, selector: "ng-component", exportAs: ["tui-input-slider-5.18.0"], ngImport: i0, template: '', isInline: true, styles: ["tui-textfield:where(*[data-tui-version=\"5.18.0\"]) [tuiInputSlider]~.t-content [tuiButtonX]{display:none!important}tui-textfield:where(*[data-tui-version=\"5.18.0\"]) [tuiInputSlider]~[tuiSlider]:disabled{display:none}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
20
20
  }
21
21
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: Styles, decorators: [{
22
22
  type: Component,
23
- args: [{ template: '', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, exportAs: `tui-input-slider-${TUI_VERSION}`, styles: ["tui-textfield:where(*[data-tui-version=\"5.17.0-canary.f91031d\"]) [tuiInputSlider]~.t-content [tuiButtonX]{display:none!important}tui-textfield:where(*[data-tui-version=\"5.17.0-canary.f91031d\"]) [tuiInputSlider]~[tuiSlider]:disabled{display:none}\n"] }]
23
+ args: [{ template: '', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, exportAs: `tui-input-slider-${TUI_VERSION}`, styles: ["tui-textfield:where(*[data-tui-version=\"5.18.0\"]) [tuiInputSlider]~.t-content [tuiButtonX]{display:none!important}tui-textfield:where(*[data-tui-version=\"5.18.0\"]) [tuiInputSlider]~[tuiSlider]:disabled{display:none}\n"] }]
24
24
  }] });
25
25
  class TuiInputSliderDirective {
26
26
  constructor() {
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-kit-components-input-slider.mjs","sources":["../../../projects/kit/components/input-slider/input-slider.directive.ts","../../../projects/kit/components/input-slider/input-slider.ts","../../../projects/kit/components/input-slider/taiga-ui-kit-components-input-slider.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n computed,\n Directive,\n effect,\n inject,\n ViewEncapsulation,\n} from '@angular/core';\nimport {WA_IS_MOBILE} from '@ng-web-apis/platform';\nimport {TuiNonNullableValueTransformer, TuiValueTransformer} from '@taiga-ui/cdk/classes';\nimport {TUI_VERSION} from '@taiga-ui/cdk/constants';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {tuiClamp} from '@taiga-ui/cdk/utils/math';\nimport {tuiWithStyles} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TuiSliderComponent} from '@taiga-ui/core/components/slider';\nimport {tuiInjectAuxiliary} from '@taiga-ui/core/components/textfield';\nimport {\n TuiInputNumberDirective,\n tuiInputNumberOptionsProvider,\n TuiNumberMask,\n TuiQuantumValueTransformer,\n} from '@taiga-ui/kit/components/input-number';\nimport {filter, fromEvent, switchMap, tap} from 'rxjs';\n\n@Component({\n template: '',\n styles: `\n [data-tui-version='${TUI_VERSION}'] {\n @import './input-slider.styles.less';\n }\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n exportAs: `tui-input-slider-${TUI_VERSION}`,\n})\nclass Styles {}\n\n@Directive({\n selector: 'input[tuiInputSlider]',\n providers: [\n tuiInputNumberOptionsProvider({\n valueTransformer: new TuiNonNullableValueTransformer(),\n }),\n ],\n hostDirectives: [\n {\n directive: TuiInputNumberDirective,\n inputs: ['invalid', 'readOnly'],\n },\n {\n directive: TuiQuantumValueTransformer,\n inputs: ['quantum'],\n },\n ],\n host: {\n '(blur)': 'inputNumber.setValue(value() ?? null)',\n '(keydown.arrowDown)': 'onStep(-1)',\n '(keydown.arrowUp)': 'onStep(1)',\n },\n})\nexport class TuiInputSliderDirective {\n private readonly isMobile = inject(WA_IS_MOBILE);\n private readonly el = tuiInjectElement<HTMLInputElement>();\n\n private readonly slider = tuiInjectAuxiliary<TuiSliderComponent>(\n (x) => x instanceof TuiSliderComponent,\n );\n\n private readonly controlTransformer = inject<TuiValueTransformer<string, number>>(\n TuiValueTransformer,\n {self: true},\n );\n\n protected readonly nothing = tuiWithStyles(Styles);\n protected readonly mask = inject(TuiNumberMask, {self: true});\n protected readonly inputNumber = inject(TuiInputNumberDirective, {self: true});\n\n protected readonly value = computed(() =>\n this.controlTransformer.toControlValue(this.inputNumber.value()),\n );\n\n protected readonly textfieldToSliderSync = effect(() => {\n const slider = this.slider();\n\n if (!slider) {\n return;\n }\n\n if (slider.keySteps?.transformer()) {\n slider.keySteps?.setControlValue(this.value());\n } else {\n // Native <input type=\"range\" /> does not support BigInt\n slider.min = Number(this.mask.min());\n slider.max = Number(this.mask.max());\n slider.value = this.value();\n }\n\n slider.el.disabled = !this.inputNumber.interactive();\n });\n\n protected readonly sliderInit = effect((onCleanup) => {\n const slider = this.slider();\n\n if (!slider) {\n return;\n }\n\n slider.el.setAttribute('tabindex', '-1');\n\n if (slider.keySteps) {\n slider.keySteps.controlValue = this.value;\n }\n\n const subscription = fromEvent(slider.el, 'input')\n .pipe(\n tap(() =>\n this.inputNumber.setValue(\n slider.keySteps?.getControlValue() ?? slider.el.valueAsNumber,\n ),\n ),\n filter(() => !this.isMobile),\n switchMap(() =>\n fromEvent(this.el.ownerDocument, 'pointerup', {once: true}),\n ),\n )\n .subscribe(() => this.el.focus());\n\n onCleanup(() => subscription.unsubscribe());\n });\n\n protected onStep(coefficient: number): void {\n const slider = this.slider();\n\n if (slider && this.inputNumber.interactive()) {\n const newValue = tuiClamp(\n slider.keySteps?.takeStep(coefficient) ??\n slider.value + coefficient * slider.step,\n this.mask.min(),\n this.mask.max(),\n );\n\n this.inputNumber.setValue(newValue);\n }\n }\n}\n","import {TuiLabel} from '@taiga-ui/core/components/label';\nimport {\n TuiSliderComponent,\n TuiSliderKeySteps,\n TuiSliderKeyStepsBase,\n} from '@taiga-ui/core/components/slider';\nimport {\n TuiTextfieldComponent,\n TuiTextfieldOptionsDirective,\n} from '@taiga-ui/core/components/textfield';\nimport {TuiDropdownContent} from '@taiga-ui/core/portals/dropdown';\n\nimport {TuiInputSliderDirective} from './input-slider.directive';\n\nexport const TuiInputSlider = [\n TuiSliderComponent,\n TuiSliderKeyStepsBase,\n TuiSliderKeySteps,\n TuiInputSliderDirective,\n TuiLabel,\n TuiTextfieldComponent,\n TuiTextfieldOptionsDirective,\n TuiDropdownContent,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"taiga-ui-kit-components-input-slider.mjs","sources":["../../../projects/kit/components/input-slider/input-slider.directive.ts","../../../projects/kit/components/input-slider/input-slider.ts","../../../projects/kit/components/input-slider/taiga-ui-kit-components-input-slider.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n computed,\n Directive,\n effect,\n inject,\n ViewEncapsulation,\n} from '@angular/core';\nimport {WA_IS_MOBILE} from '@ng-web-apis/platform';\nimport {TuiNonNullableValueTransformer, TuiValueTransformer} from '@taiga-ui/cdk/classes';\nimport {TUI_VERSION} from '@taiga-ui/cdk/constants';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {tuiClamp} from '@taiga-ui/cdk/utils/math';\nimport {tuiWithStyles} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TuiSliderComponent} from '@taiga-ui/core/components/slider';\nimport {tuiInjectAuxiliary} from '@taiga-ui/core/components/textfield';\nimport {\n TuiInputNumberDirective,\n tuiInputNumberOptionsProvider,\n TuiNumberMask,\n TuiQuantumValueTransformer,\n} from '@taiga-ui/kit/components/input-number';\nimport {filter, fromEvent, switchMap, tap} from 'rxjs';\n\n@Component({\n template: '',\n styles: `\n [data-tui-version='${TUI_VERSION}'] {\n @import './input-slider.styles.less';\n }\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n exportAs: `tui-input-slider-${TUI_VERSION}`,\n})\nclass Styles {}\n\n@Directive({\n selector: 'input[tuiInputSlider]',\n providers: [\n tuiInputNumberOptionsProvider({\n valueTransformer: new TuiNonNullableValueTransformer(),\n }),\n ],\n hostDirectives: [\n {\n directive: TuiInputNumberDirective,\n inputs: ['invalid', 'readOnly'],\n },\n {\n directive: TuiQuantumValueTransformer,\n inputs: ['quantum'],\n },\n ],\n host: {\n '(blur)': 'inputNumber.setValue(value() ?? null)',\n '(keydown.arrowDown)': 'onStep(-1)',\n '(keydown.arrowUp)': 'onStep(1)',\n },\n})\nexport class TuiInputSliderDirective {\n private readonly isMobile = inject(WA_IS_MOBILE);\n private readonly el = tuiInjectElement<HTMLInputElement>();\n\n private readonly slider = tuiInjectAuxiliary<TuiSliderComponent>(\n (x) => x instanceof TuiSliderComponent,\n );\n\n private readonly controlTransformer = inject<TuiValueTransformer<string, number>>(\n TuiValueTransformer,\n {self: true},\n );\n\n protected readonly nothing = tuiWithStyles(Styles);\n protected readonly mask = inject(TuiNumberMask, {self: true});\n protected readonly inputNumber = inject(TuiInputNumberDirective, {self: true});\n\n protected readonly value = computed(() =>\n this.controlTransformer.toControlValue(this.inputNumber.value()),\n );\n\n protected readonly textfieldToSliderSync = effect(() => {\n const slider = this.slider();\n\n if (!slider) {\n return;\n }\n\n if (slider.keySteps?.transformer()) {\n slider.keySteps?.setControlValue(this.value());\n } else {\n // Native <input type=\"range\" /> does not support BigInt\n slider.min = Number(this.mask.min());\n slider.max = Number(this.mask.max());\n slider.value = this.value();\n }\n\n slider.el.disabled = !this.inputNumber.interactive();\n });\n\n protected readonly sliderInit = effect((onCleanup) => {\n const slider = this.slider();\n\n if (!slider) {\n return;\n }\n\n slider.el.setAttribute('tabindex', '-1');\n\n if (slider.keySteps) {\n slider.keySteps.controlValue = this.value;\n }\n\n const subscription = fromEvent(slider.el, 'input')\n .pipe(\n tap(() =>\n this.inputNumber.setValue(\n slider.keySteps?.getControlValue() ?? slider.el.valueAsNumber,\n ),\n ),\n filter(() => !this.isMobile),\n switchMap(() =>\n fromEvent(this.el.ownerDocument, 'pointerup', {once: true}),\n ),\n )\n .subscribe(() => this.el.focus());\n\n onCleanup(() => subscription.unsubscribe());\n });\n\n protected onStep(coefficient: number): void {\n const slider = this.slider();\n\n if (slider && this.inputNumber.interactive()) {\n const newValue = tuiClamp(\n slider.keySteps?.takeStep(coefficient) ??\n slider.value + coefficient * slider.step,\n this.mask.min(),\n this.mask.max(),\n );\n\n this.inputNumber.setValue(newValue);\n }\n }\n}\n","import {TuiLabel} from '@taiga-ui/core/components/label';\nimport {\n TuiSliderComponent,\n TuiSliderKeySteps,\n TuiSliderKeyStepsBase,\n} from '@taiga-ui/core/components/slider';\nimport {\n TuiTextfieldComponent,\n TuiTextfieldOptionsDirective,\n} from '@taiga-ui/core/components/textfield';\nimport {TuiDropdownContent} from '@taiga-ui/core/portals/dropdown';\n\nimport {TuiInputSliderDirective} from './input-slider.directive';\n\nexport const TuiInputSlider = [\n TuiSliderComponent,\n TuiSliderKeyStepsBase,\n TuiSliderKeySteps,\n TuiInputSliderDirective,\n TuiLabel,\n TuiTextfieldComponent,\n TuiTextfieldOptionsDirective,\n TuiDropdownContent,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -191,7 +191,7 @@ class TuiInputTimeContent {
191
191
  (change)="setValue($any($event.target).value)"
192
192
  />
193
193
  }
194
- `, isInline: true, styles: ["tui-textfield input[tuiInputTime]:where(*[data-tui-version=\"5.17.0-canary.f91031d\"])~.t-content input[type=time]{position:absolute;inset-inline-end:0;inset-inline-start:auto;inline-size:calc(var(--t-right) + var(--t-padding));opacity:0;margin:0;padding:0;pointer-events:auto}tui-textfield input[tuiInputTime]:where(*[data-tui-version=\"5.17.0-canary.f91031d\"])~.t-content input[type=time]::-webkit-calendar-picker-indicator{position:absolute;inset-block-start:0;inset-inline-start:0;inline-size:100%;block-size:100%}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
194
+ `, isInline: true, styles: ["tui-textfield input[tuiInputTime]:where(*[data-tui-version=\"5.18.0\"])~.t-content input[type=time]{position:absolute;inset-inline-end:0;inset-inline-start:auto;inline-size:calc(var(--t-right) + var(--t-padding));opacity:0;margin:0;padding:0;pointer-events:auto}tui-textfield input[tuiInputTime]:where(*[data-tui-version=\"5.18.0\"])~.t-content input[type=time]::-webkit-calendar-picker-indicator{position:absolute;inset-block-start:0;inset-inline-start:0;inline-size:100%;block-size:100%}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
195
195
  }
196
196
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: TuiInputTimeContent, decorators: [{
197
197
  type: Component,
@@ -205,7 +205,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImpo
205
205
  (change)="setValue($any($event.target).value)"
206
206
  />
207
207
  }
208
- `, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, styles: ["tui-textfield input[tuiInputTime]:where(*[data-tui-version=\"5.17.0-canary.f91031d\"])~.t-content input[type=time]{position:absolute;inset-inline-end:0;inset-inline-start:auto;inline-size:calc(var(--t-right) + var(--t-padding));opacity:0;margin:0;padding:0;pointer-events:auto}tui-textfield input[tuiInputTime]:where(*[data-tui-version=\"5.17.0-canary.f91031d\"])~.t-content input[type=time]::-webkit-calendar-picker-indicator{position:absolute;inset-block-start:0;inset-inline-start:0;inline-size:100%;block-size:100%}\n"] }]
208
+ `, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, styles: ["tui-textfield input[tuiInputTime]:where(*[data-tui-version=\"5.18.0\"])~.t-content input[type=time]{position:absolute;inset-inline-end:0;inset-inline-start:auto;inline-size:calc(var(--t-right) + var(--t-padding));opacity:0;margin:0;padding:0;pointer-events:auto}tui-textfield input[tuiInputTime]:where(*[data-tui-version=\"5.18.0\"])~.t-content input[type=time]::-webkit-calendar-picker-indicator{position:absolute;inset-block-start:0;inset-inline-start:0;inline-size:100%;block-size:100%}\n"] }]
209
209
  }] });
210
210
 
211
211
  class TuiNativeTimePicker {
@@ -240,7 +240,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImpo
240
240
  // TODO(v6): rename to TuiInputTimeDirective
241
241
  class TuiInputTimeComponent extends TuiNativeTimePicker {
242
242
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: TuiInputTimeComponent, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
243
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.25", type: TuiInputTimeComponent, isStandalone: true, selector: "input[tuiInputTime][type=\"time\"]", host: { attributes: { "data-tui-version": "5.17.0-canary.f91031d" } }, providers: [tuiAsTextfieldContent(() => TuiInputTimeContent)], usesInheritance: true, hostDirectives: [{ directive: i1$1.TuiWithNativePicker }, { directive: i1$1.TuiTextfieldContent }], ngImport: i0 }); }
243
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.25", type: TuiInputTimeComponent, isStandalone: true, selector: "input[tuiInputTime][type=\"time\"]", host: { attributes: { "data-tui-version": "5.18.0" } }, providers: [tuiAsTextfieldContent(() => TuiInputTimeContent)], usesInheritance: true, hostDirectives: [{ directive: i1$1.TuiWithNativePicker }, { directive: i1$1.TuiTextfieldContent }], ngImport: i0 }); }
244
244
  }
245
245
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: TuiInputTimeComponent, decorators: [{
246
246
  type: Directive,