@taiga-ui/core 2.61.0 → 2.62.2

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 (102) hide show
  1. package/bundles/taiga-ui-core-components-alert.umd.js +0 -1
  2. package/bundles/taiga-ui-core-components-alert.umd.js.map +1 -1
  3. package/bundles/taiga-ui-core-components-alert.umd.min.js.map +1 -1
  4. package/bundles/taiga-ui-core-components-button.umd.js +32 -15
  5. package/bundles/taiga-ui-core-components-button.umd.js.map +1 -1
  6. package/bundles/taiga-ui-core-components-button.umd.min.js +1 -1
  7. package/bundles/taiga-ui-core-components-button.umd.min.js.map +1 -1
  8. package/bundles/taiga-ui-core-components-notification.umd.js +1 -1
  9. package/bundles/taiga-ui-core-components-notification.umd.js.map +1 -1
  10. package/bundles/taiga-ui-core-components-notification.umd.min.js +1 -1
  11. package/bundles/taiga-ui-core-components-notification.umd.min.js.map +1 -1
  12. package/bundles/taiga-ui-core-components-primitive-textfield.umd.js +3 -3
  13. package/bundles/taiga-ui-core-components-primitive-textfield.umd.js.map +1 -1
  14. package/bundles/taiga-ui-core-components-primitive-textfield.umd.min.js +1 -1
  15. package/bundles/taiga-ui-core-components-primitive-textfield.umd.min.js.map +1 -1
  16. package/bundles/taiga-ui-core-components-scrollbar.umd.js.map +1 -1
  17. package/bundles/taiga-ui-core-components-scrollbar.umd.min.js.map +1 -1
  18. package/bundles/taiga-ui-core-pipes-format-date.umd.js +293 -0
  19. package/bundles/taiga-ui-core-pipes-format-date.umd.js.map +1 -0
  20. package/bundles/taiga-ui-core-pipes-format-date.umd.min.js +2 -0
  21. package/bundles/taiga-ui-core-pipes-format-date.umd.min.js.map +1 -0
  22. package/bundles/taiga-ui-core-pipes.umd.js +12 -4
  23. package/bundles/taiga-ui-core-pipes.umd.js.map +1 -1
  24. package/bundles/taiga-ui-core-pipes.umd.min.js +1 -1
  25. package/bundles/taiga-ui-core-services.umd.js +24 -0
  26. package/bundles/taiga-ui-core-services.umd.js.map +1 -1
  27. package/bundles/taiga-ui-core-services.umd.min.js +1 -1
  28. package/bundles/taiga-ui-core-services.umd.min.js.map +1 -1
  29. package/components/button/button.component.d.ts +7 -2
  30. package/components/button/taiga-ui-core-components-button.metadata.json +1 -1
  31. package/components/primitive-textfield/taiga-ui-core-components-primitive-textfield.metadata.json +1 -1
  32. package/components/scrollbar/scrollbar.component.d.ts +3 -1
  33. package/components/scrollbar/taiga-ui-core-components-scrollbar.metadata.json +1 -1
  34. package/constants/version.d.ts +1 -1
  35. package/esm2015/components/alert/alert.service.js +1 -2
  36. package/esm2015/components/button/button.component.js +29 -15
  37. package/esm2015/components/notification/notification.component.js +3 -3
  38. package/esm2015/components/primitive-textfield/primitive-textfield.component.js +1 -1
  39. package/esm2015/components/primitive-textfield/value-decoration/value-decoration.component.js +3 -3
  40. package/esm2015/components/scrollbar/scrollbar.component.js +5 -5
  41. package/esm2015/pipes/format-date/format-date.module.js +13 -0
  42. package/esm2015/pipes/format-date/format-date.pipe.js +22 -0
  43. package/esm2015/pipes/format-date/index.js +3 -0
  44. package/esm2015/pipes/format-date/taiga-ui-core-pipes-format-date.js +5 -0
  45. package/esm2015/pipes/index.js +2 -1
  46. package/esm2015/services/format-date.service.js +27 -0
  47. package/esm2015/services/index.js +2 -1
  48. package/esm5/components/alert/alert.service.js +1 -2
  49. package/esm5/components/button/button.component.js +33 -15
  50. package/esm5/components/notification/notification.component.js +3 -3
  51. package/esm5/components/primitive-textfield/primitive-textfield.component.js +1 -1
  52. package/esm5/components/primitive-textfield/value-decoration/value-decoration.component.js +3 -3
  53. package/esm5/components/scrollbar/scrollbar.component.js +5 -5
  54. package/esm5/pipes/format-date/format-date.module.js +16 -0
  55. package/esm5/pipes/format-date/format-date.pipe.js +23 -0
  56. package/esm5/pipes/format-date/index.js +3 -0
  57. package/esm5/pipes/format-date/taiga-ui-core-pipes-format-date.js +5 -0
  58. package/esm5/pipes/index.js +2 -1
  59. package/esm5/services/format-date.service.js +28 -0
  60. package/esm5/services/index.js +2 -1
  61. package/fesm2015/taiga-ui-core-components-alert.js +0 -1
  62. package/fesm2015/taiga-ui-core-components-alert.js.map +1 -1
  63. package/fesm2015/taiga-ui-core-components-button.js +28 -14
  64. package/fesm2015/taiga-ui-core-components-button.js.map +1 -1
  65. package/fesm2015/taiga-ui-core-components-notification.js +2 -2
  66. package/fesm2015/taiga-ui-core-components-notification.js.map +1 -1
  67. package/fesm2015/taiga-ui-core-components-primitive-textfield.js +3 -3
  68. package/fesm2015/taiga-ui-core-components-primitive-textfield.js.map +1 -1
  69. package/fesm2015/taiga-ui-core-components-scrollbar.js.map +1 -1
  70. package/fesm2015/taiga-ui-core-pipes-format-date.js +37 -0
  71. package/fesm2015/taiga-ui-core-pipes-format-date.js.map +1 -0
  72. package/fesm2015/taiga-ui-core-pipes.js +1 -0
  73. package/fesm2015/taiga-ui-core-pipes.js.map +1 -1
  74. package/fesm2015/taiga-ui-core-services.js +25 -3
  75. package/fesm2015/taiga-ui-core-services.js.map +1 -1
  76. package/fesm5/taiga-ui-core-components-alert.js +0 -1
  77. package/fesm5/taiga-ui-core-components-alert.js.map +1 -1
  78. package/fesm5/taiga-ui-core-components-button.js +32 -14
  79. package/fesm5/taiga-ui-core-components-button.js.map +1 -1
  80. package/fesm5/taiga-ui-core-components-notification.js +2 -2
  81. package/fesm5/taiga-ui-core-components-notification.js.map +1 -1
  82. package/fesm5/taiga-ui-core-components-primitive-textfield.js +3 -3
  83. package/fesm5/taiga-ui-core-components-primitive-textfield.js.map +1 -1
  84. package/fesm5/taiga-ui-core-components-scrollbar.js.map +1 -1
  85. package/fesm5/taiga-ui-core-pipes-format-date.js +41 -0
  86. package/fesm5/taiga-ui-core-pipes-format-date.js.map +1 -0
  87. package/fesm5/taiga-ui-core-pipes.js +1 -0
  88. package/fesm5/taiga-ui-core-pipes.js.map +1 -1
  89. package/fesm5/taiga-ui-core-services.js +27 -4
  90. package/fesm5/taiga-ui-core-services.js.map +1 -1
  91. package/package.json +4 -4
  92. package/pipes/format-date/format-date.module.d.ts +2 -0
  93. package/pipes/format-date/format-date.pipe.d.ts +8 -0
  94. package/pipes/format-date/index.d.ts +2 -0
  95. package/pipes/format-date/package.json +13 -0
  96. package/pipes/format-date/taiga-ui-core-pipes-format-date.d.ts +4 -0
  97. package/pipes/format-date/taiga-ui-core-pipes-format-date.metadata.json +1 -0
  98. package/pipes/index.d.ts +1 -0
  99. package/pipes/taiga-ui-core-pipes.metadata.json +1 -1
  100. package/services/format-date.service.d.ts +6 -0
  101. package/services/index.d.ts +1 -0
  102. package/services/taiga-ui-core-services.metadata.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-core-components-primitive-textfield.js","sources":["ng://@taiga-ui/core/components/primitive-textfield/primitive-textfield.providers.ts","ng://@taiga-ui/core/components/primitive-textfield/primitive-textfield-options.ts","ng://@taiga-ui/core/components/primitive-textfield/primitive-textfield.component.ts","ng://@taiga-ui/core/components/primitive-textfield/primitive-textfield.directive.ts","ng://@taiga-ui/core/components/primitive-textfield/textfield/textfield.component.ts","ng://@taiga-ui/core/components/primitive-textfield/value-decoration/value-decoration.component.ts","ng://@taiga-ui/core/components/primitive-textfield/primitive-textfield.module.ts","ng://@taiga-ui/core/components/primitive-textfield/taiga-ui-core-components-primitive-textfield.ts"],"sourcesContent":["import {forwardRef} from '@angular/core';\nimport {TUI_FOCUSABLE_ITEM_ACCESSOR} from '@taiga-ui/cdk';\nimport {HINT_CONTROLLER_PROVIDER} from '@taiga-ui/core/directives/hint-controller';\nimport {TEXTFIELD_CONTROLLER_PROVIDER} from '@taiga-ui/core/directives/textfield-controller';\nimport {MODE_PROVIDER} from '@taiga-ui/core/providers';\n\nimport {TuiPrimitiveTextfieldComponent} from './primitive-textfield.component';\n\nexport const TUI_PRIMITIVE_TEXTFIELD_PROVIDERS = [\n {\n provide: TUI_FOCUSABLE_ITEM_ACCESSOR,\n useExisting: forwardRef(() => TuiPrimitiveTextfieldComponent),\n },\n TEXTFIELD_CONTROLLER_PROVIDER,\n HINT_CONTROLLER_PROVIDER,\n MODE_PROVIDER,\n];\n","import {InjectionToken, ValueProvider} from '@angular/core';\nimport {TuiHorizontalDirection} from '@taiga-ui/core/types';\nimport {PolymorpheusContent} from '@tinkoff/ng-polymorpheus';\n\nexport interface TuiPrimitiveTextfieldOptions {\n readonly iconAlign: TuiHorizontalDirection;\n readonly iconCleaner: PolymorpheusContent;\n}\n\n// TODO: 3.0 remove in ivy compilation\nexport const TUI_PRIMITIVE_TEXTFIELD_ICON_CLEANER = `tuiIconCloseLarge`;\n\n/** Default values for primitive textfield options */\nexport const TUI_PRIMITIVE_TEXTFIELD_DEFAULT_OPTIONS: TuiPrimitiveTextfieldOptions = {\n iconAlign: `right`,\n iconCleaner: TUI_PRIMITIVE_TEXTFIELD_ICON_CLEANER,\n};\n\nexport const TUI_PRIMITIVE_TEXTFIELD_OPTIONS =\n new InjectionToken<TuiPrimitiveTextfieldOptions>(\n `Default parameters for primitive textfield component`,\n {\n factory: () => TUI_PRIMITIVE_TEXTFIELD_DEFAULT_OPTIONS,\n },\n );\n\nexport const tuiPrimitiveTextfieldOptionsProvider: (\n options: Partial<TuiPrimitiveTextfieldOptions>,\n) => ValueProvider = (options: Partial<TuiPrimitiveTextfieldOptions>) => ({\n provide: TUI_PRIMITIVE_TEXTFIELD_OPTIONS,\n useValue: {...TUI_PRIMITIVE_TEXTFIELD_DEFAULT_OPTIONS, ...options},\n});\n","import {\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n ElementRef,\n EventEmitter,\n HostBinding,\n HostListener,\n Inject,\n Input,\n Output,\n QueryList,\n ViewChild,\n} from '@angular/core';\nimport {\n AbstractTuiInteractive,\n isNativeFocusedIn,\n setNativeFocused,\n TuiContextWithImplicit,\n TuiCreditCardAutofillName,\n tuiDefaultProp,\n TuiFocusableElementAccessor,\n tuiPure,\n} from '@taiga-ui/cdk';\nimport {\n TUI_HINT_WATCHED_CONTROLLER,\n TuiHintControllerDirective,\n} from '@taiga-ui/core/directives/hint-controller';\nimport {\n TUI_TEXTFIELD_WATCHED_CONTROLLER,\n TuiTextfieldController,\n} from '@taiga-ui/core/directives/textfield-controller';\nimport {TUI_MODE, TUI_TEXTFIELD_APPEARANCE} from '@taiga-ui/core/tokens';\nimport {TuiBrightness, TuiSizeL, TuiSizeS} from '@taiga-ui/core/types';\nimport {getBorder} from '@taiga-ui/core/utils/miscellaneous';\nimport {PolymorpheusContent, PolymorpheusOutletComponent} from '@tinkoff/ng-polymorpheus';\nimport {fromEvent, Observable} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nimport {TUI_PRIMITIVE_TEXTFIELD_PROVIDERS} from './primitive-textfield.providers';\nimport {\n TUI_PRIMITIVE_TEXTFIELD_OPTIONS,\n TuiPrimitiveTextfieldOptions,\n} from './primitive-textfield-options';\n\nconst ICON_PADDING = 1.75;\nconst ICON_PADDING_S = 1.5;\n\n@Component({\n selector: `tui-primitive-textfield`,\n templateUrl: `./primitive-textfield.template.html`,\n styleUrls: [`./primitive-textfield.style.less`],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: TUI_PRIMITIVE_TEXTFIELD_PROVIDERS,\n host: {\n '($.data-mode.attr)': `mode$`,\n '[class._autofilled]': `autofilled`,\n '[class._label-outside]': `controller.labelOutside`,\n },\n})\nexport class TuiPrimitiveTextfieldComponent\n extends AbstractTuiInteractive\n implements TuiFocusableElementAccessor\n{\n @ViewChild(`focusableElement`)\n private readonly focusableElement?: ElementRef<HTMLInputElement>;\n\n @Input()\n @tuiDefaultProp()\n editable = true;\n\n @Input()\n @tuiDefaultProp()\n filler = ``;\n\n @Input()\n @tuiDefaultProp()\n iconAlign: TuiPrimitiveTextfieldOptions['iconAlign'] = this.options.iconAlign;\n\n // TODO: 3.0 Remove null\n @Input()\n @tuiDefaultProp()\n iconContent: PolymorpheusContent<TuiContextWithImplicit<TuiSizeS | TuiSizeL>> | null =\n null;\n\n @Input()\n @tuiDefaultProp()\n iconCleaner: TuiPrimitiveTextfieldOptions['iconCleaner'] = this.options.iconCleaner;\n\n @Input()\n @HostBinding(`class._readonly`)\n @tuiDefaultProp()\n readOnly = false;\n\n @Input()\n @tuiDefaultProp()\n invalid = false;\n\n @Input()\n @tuiDefaultProp()\n disabled = false;\n\n @Input()\n @tuiDefaultProp()\n prefix = ``;\n\n @Input()\n @tuiDefaultProp()\n postfix = ``;\n\n @Input()\n @tuiDefaultProp()\n value = ``;\n\n @Output()\n readonly valueChange = new EventEmitter<string>();\n\n /**\n * @deprecated TODO: 3.0 remove\n */\n @Output()\n readonly autofilledChange = new EventEmitter<boolean>();\n\n @ContentChildren(PolymorpheusOutletComponent)\n readonly content?: QueryList<unknown>;\n\n autofilled = false;\n\n constructor(\n @Inject(TUI_MODE) readonly mode$: Observable<TuiBrightness | null>,\n @Inject(TUI_TEXTFIELD_APPEARANCE) readonly appearance: string,\n @Inject(TUI_TEXTFIELD_WATCHED_CONTROLLER)\n readonly controller: TuiTextfieldController,\n @Inject(TUI_HINT_WATCHED_CONTROLLER)\n readonly hintController: TuiHintControllerDirective,\n @Inject(TUI_PRIMITIVE_TEXTFIELD_OPTIONS)\n readonly options: TuiPrimitiveTextfieldOptions,\n @Inject(ElementRef) private readonly elementRef: ElementRef<HTMLElement>,\n ) {\n super();\n }\n\n get nativeFocusableElement(): HTMLInputElement | null {\n if (this.computedDisabled || !this.focusableElement) {\n return null;\n }\n\n // TODO: 3.0 Refactor this after we drop built-in input element\n return (\n (this.focusableElement.nativeElement\n .previousElementSibling as HTMLInputElement | null) ||\n this.focusableElement.nativeElement\n );\n }\n\n get focused(): boolean {\n return isNativeFocusedIn(this.elementRef.nativeElement);\n }\n\n @HostBinding(`attr.data-size`)\n get size(): TuiSizeS | TuiSizeL {\n return this.controller.size;\n }\n\n @HostBinding(`class._invalid`)\n get computedInvalid(): boolean {\n return !this.readOnly && !this.disabled && this.invalid;\n }\n\n @HostBinding(`class._hidden`)\n get inputHidden(): boolean {\n return !!this.content?.length;\n }\n\n get hasValue(): boolean {\n return !!this.value;\n }\n\n get hasCleaner(): boolean {\n return (\n this.controller.cleaner && this.hasValue && !this.disabled && !this.readOnly\n );\n }\n\n get hasTooltip(): boolean {\n return !!this.hintController?.content && !this.disabled;\n }\n\n get hasCustomContent(): boolean {\n return !!this.controller.customContent;\n }\n\n get showOnlyPlaceholder(): boolean {\n return (\n this.focused &&\n this.placeholderVisible &&\n (this.size === `s` || (this.size === `m` && !this.placeholderRaisable))\n );\n }\n\n get placeholderVisible(): boolean {\n const hasDecor =\n this.controller.exampleText ||\n this.prefix ||\n this.postfix ||\n this.nativeFocusableElement?.placeholder;\n const showDecor = hasDecor && !this.readOnly && this.computedFocused;\n\n return !this.hasValue && !showDecor;\n }\n\n get hasPlaceholder(): boolean {\n return (\n !this.showOnlyPlaceholder &&\n (this.placeholderRaisable || this.placeholderVisible)\n );\n }\n\n get placeholderRaised(): boolean {\n return (\n this.placeholderRaisable &&\n ((this.computedFocused && !this.readOnly) || this.hasValue || this.autofilled)\n );\n }\n\n @HostBinding(`style.--border-start.rem`)\n get borderStart(): number {\n return this.iconAlignLeft ? this.iconPaddingLeft : 0;\n }\n\n @HostBinding(`style.--border-end.rem`)\n get borderEnd(): number {\n return getBorder(\n this.iconAlignRight,\n this.hasCleaner,\n this.hasTooltip,\n this.hasCustomContent,\n );\n }\n\n get iconAlignLeft(): boolean {\n return this.hasIcon && this.iconAlign === `left`;\n }\n\n get iconAlignRight(): boolean {\n return this.hasIcon && this.iconAlign === `right`;\n }\n\n // Safari expiration date autofill workaround\n get name(): 'ccexpiryyear' | null {\n return this.controller.autocomplete === TuiCreditCardAutofillName.CcExp\n ? `ccexpiryyear`\n : null;\n }\n\n get computedId(): string {\n return this.nativeFocusableElement?.id || ``;\n }\n\n @HostListener(`focusin`, [`true`])\n @HostListener(`focusout`, [`false`])\n onFocused(focused: boolean): void {\n this.updateFocused(focused);\n }\n\n @tuiPure\n getIndent$(element: HTMLElement): Observable<number> {\n return fromEvent(element, `scroll`).pipe(map(() => -1 * element.scrollLeft));\n }\n\n clear(): void {\n if (this.nativeFocusableElement) {\n this.nativeFocusableElement.value = ``;\n }\n\n this.updateValue(``);\n }\n\n onMouseDown(event: MouseEvent): void {\n const {nativeFocusableElement} = this;\n\n if (!nativeFocusableElement || event.target === nativeFocusableElement) {\n return;\n }\n\n event.preventDefault();\n setNativeFocused(nativeFocusableElement);\n }\n\n onModelChange(value: string): void {\n this.updateValue(value);\n }\n\n onHovered(hovered: boolean): void {\n this.updateHovered(hovered);\n }\n\n onAutofilled(autofilled: boolean): void {\n this.updateAutofilled(autofilled);\n }\n\n private get iconPaddingLeft(): number {\n return this.size === `s` ? ICON_PADDING_S : ICON_PADDING;\n }\n\n private get placeholderRaisable(): boolean {\n return this.size !== `s` && !this.controller.labelOutside;\n }\n\n private get hasIcon(): boolean {\n return !!this.iconContent;\n }\n\n private updateAutofilled(autofilled: boolean): void {\n if (this.autofilled === autofilled) {\n return;\n }\n\n this.autofilled = autofilled;\n this.autofilledChange.emit(autofilled);\n }\n\n private updateValue(value: string): void {\n this.value = value;\n this.valueChange.emit(value);\n }\n}\n","import {Directive, forwardRef, Inject} from '@angular/core';\nimport {AbstractTuiControl} from '@taiga-ui/cdk';\nimport {TuiAbstractTextfieldHost} from '@taiga-ui/core/abstract';\nimport {TUI_TEXTFIELD_HOST} from '@taiga-ui/core/tokens';\n\nimport {TuiPrimitiveTextfieldComponent} from './primitive-textfield.component';\n\n@Directive({\n selector: `tui-primitive-textfield`,\n providers: [\n {\n provide: TUI_TEXTFIELD_HOST,\n useExisting: forwardRef(() => TuiPrimitiveTextfieldDirective),\n },\n ],\n})\nexport class TuiPrimitiveTextfieldDirective extends TuiAbstractTextfieldHost<any> {\n constructor(\n @Inject(TuiPrimitiveTextfieldComponent)\n private readonly textfield: TuiPrimitiveTextfieldComponent,\n ) {\n /**\n * TuiPrimitiveTextfieldComponent satisfies all required parts of\n * AbstractTuiControl interface. A new interface is not introduced\n * so AbstractTuiControl is automatically injected for all other controls.\n */\n super(textfield as unknown as AbstractTuiControl<unknown>);\n }\n\n get readOnly(): boolean {\n return this.textfield.readOnly || !this.textfield.editable;\n }\n\n onValueChange(value: string): void {\n this.textfield.onModelChange(value);\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n DoCheck,\n ElementRef,\n HostBinding,\n Inject,\n} from '@angular/core';\nimport {TuiIdService} from '@taiga-ui/cdk';\nimport {\n TEXTFIELD_CONTROLLER_PROVIDER,\n TUI_DESCRIBED_BY_PROVIDERS,\n TUI_TEXTFIELD_WATCHED_CONTROLLER,\n TuiDescribedByDirective,\n TuiTextfieldController,\n} from '@taiga-ui/core/directives';\nimport {TuiTextfieldHost} from '@taiga-ui/core/interfaces';\nimport {TUI_TEXTFIELD_HOST} from '@taiga-ui/core/tokens';\n\n// @dynamic\n@Component({\n selector: `input[tuiTextfield], textarea[tuiTextfield]`,\n template: ``,\n providers: [\n TuiDescribedByDirective,\n TUI_DESCRIBED_BY_PROVIDERS,\n TEXTFIELD_CONTROLLER_PROVIDER,\n ],\n host: {\n type: `text`,\n '[attr.aria-placeholder]': `controller.exampleText`,\n '[attr.aria-invalid]': `host.invalid`,\n '[attr.disabled]': `host.disabled || null`,\n '[tabIndex]': `host.focusable ? 0 : -1`,\n '[readOnly]': `host.readOnly`,\n '[value]': `host.value`,\n '(input)': `host.onValueChange($event.target.value)`,\n },\n styleUrls: [`textfield.style.less`],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TuiTextfieldComponent implements DoCheck {\n constructor(\n @Inject(TUI_TEXTFIELD_HOST) readonly host: TuiTextfieldHost,\n @Inject(TUI_TEXTFIELD_WATCHED_CONTROLLER)\n readonly controller: TuiTextfieldController,\n @Inject(ElementRef) private readonly elementRef: ElementRef<HTMLInputElement>,\n @Inject(TuiDescribedByDirective)\n private readonly describedBy: TuiDescribedByDirective,\n @Inject(TuiIdService)\n private readonly idService: TuiIdService,\n ) {\n this.host.process(this.elementRef.nativeElement);\n }\n\n @HostBinding(`attr.aria-describedby`)\n get computedDescribedBy(): string | null {\n return this.describedBy.computedDescribedBy;\n }\n\n @HostBinding(`id`)\n get id(): string {\n return this.elementRef.nativeElement.id || this.idService.generate();\n }\n\n ngDoCheck(): void {\n this.describedBy.tuiDescribedBy = this.id;\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n DoCheck,\n ElementRef,\n HostBinding,\n HostListener,\n Inject,\n ViewChild,\n} from '@angular/core';\nimport {\n TUI_TEXTFIELD_WATCHED_CONTROLLER,\n TuiTextfieldController,\n} from '@taiga-ui/core/directives';\nimport {TuiAppearance} from '@taiga-ui/core/enums';\nimport {BehaviorSubject} from 'rxjs';\nimport {delay, distinctUntilChanged, filter, map} from 'rxjs/operators';\n\nimport {TuiPrimitiveTextfieldComponent} from '../primitive-textfield.component';\n\n@Component({\n selector: `tui-value-decoration`,\n templateUrl: `./value-decoration.template.html`,\n styleUrls: [`./value-decoration.style.less`],\n // It follows Change Detection of PrimitiveTextfield\n changeDetection: ChangeDetectionStrategy.Default,\n})\nexport class TuiValueDecorationComponent implements DoCheck {\n @ViewChild(`pre`, {read: ElementRef, static: true})\n private readonly pre?: ElementRef<HTMLElement>;\n\n private readonly prefix$ = new BehaviorSubject(``);\n\n readonly pre$ = this.prefix$.pipe(\n delay(0),\n filter(() => !!this.pre?.nativeElement.isConnected),\n distinctUntilChanged(),\n map(() => this.pre?.nativeElement.offsetWidth || 0),\n );\n\n constructor(\n @Inject(TuiPrimitiveTextfieldComponent)\n private readonly textfield: TuiPrimitiveTextfieldComponent,\n @Inject(TUI_TEXTFIELD_WATCHED_CONTROLLER)\n private readonly controller: TuiTextfieldController,\n ) {}\n\n @HostBinding(`class._table`)\n get isContextTable(): boolean {\n return this.textfield.appearance === TuiAppearance.Table;\n }\n\n get value(): string {\n return this.textfield.value;\n }\n\n get filler(): string {\n const {focused, placeholder, exampleText, value, textfield} = this;\n\n if (placeholder && exampleText) {\n return ``;\n }\n\n return focused ? exampleText || textfield.filler.slice(value.length) : ``;\n }\n\n get prefix(): string {\n return this.decorationsVisible ? this.textfield.prefix : ``;\n }\n\n get postfix(): string {\n return this.decorationsVisible ? this.computedPostfix : ``;\n }\n\n @HostListener(`animationstart`)\n ngDoCheck(): void {\n this.prefix$.next(this.prefix);\n }\n\n private get placeholder(): string {\n return this.textfield.nativeFocusableElement?.placeholder || ``;\n }\n\n private get exampleText(): string {\n const exampleText = this.controller.exampleText || this.placeholder;\n\n return !this.value && this.focused ? exampleText : ``;\n }\n\n private get decorationsVisible(): boolean {\n return !!this.value || this.focused;\n }\n\n private get focused(): boolean {\n return this.textfield.computedFocused && !this.textfield.readOnly;\n }\n\n private get computedPostfix(): string {\n return this.textfield.postfix && (this.filler || this.value)\n ? ` ${this.textfield.postfix}`\n : this.textfield.postfix;\n }\n}\n","import {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {FormsModule} from '@angular/forms';\nimport {\n TuiAutofilledModule,\n TuiFocusableModule,\n TuiHoveredModule,\n TuiInputModeModule,\n} from '@taiga-ui/cdk';\nimport {TuiSvgModule} from '@taiga-ui/core/components/svg';\nimport {TuiTooltipModule} from '@taiga-ui/core/components/tooltip';\nimport {TuiDescribedByModule} from '@taiga-ui/core/directives/described-by';\nimport {TuiMaskAccessorModule} from '@taiga-ui/core/directives/mask-accessor';\nimport {TuiWrapperModule} from '@taiga-ui/core/directives/wrapper';\nimport {PolymorpheusModule} from '@tinkoff/ng-polymorpheus';\n\nimport {TuiPrimitiveTextfieldComponent} from './primitive-textfield.component';\nimport {TuiPrimitiveTextfieldDirective} from './primitive-textfield.directive';\nimport {TuiTextfieldComponent} from './textfield/textfield.component';\nimport {TuiValueDecorationComponent} from './value-decoration/value-decoration.component';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n PolymorpheusModule,\n TuiMaskAccessorModule,\n TuiFocusableModule,\n TuiHoveredModule,\n TuiInputModeModule,\n TuiWrapperModule,\n TuiSvgModule,\n TuiTooltipModule,\n TuiAutofilledModule,\n TuiDescribedByModule,\n ],\n declarations: [\n TuiPrimitiveTextfieldComponent,\n TuiPrimitiveTextfieldDirective,\n TuiTextfieldComponent,\n TuiValueDecorationComponent,\n ],\n exports: [\n TuiPrimitiveTextfieldComponent,\n TuiPrimitiveTextfieldDirective,\n TuiTextfieldComponent,\n ],\n})\nexport class TuiPrimitiveTextfieldModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["TuiTextfieldController","TUI_TEXTFIELD_WATCHED_CONTROLLER","TEXTFIELD_CONTROLLER_PROVIDER"],"mappings":"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"}
1
+ {"version":3,"file":"taiga-ui-core-components-primitive-textfield.js","sources":["ng://@taiga-ui/core/components/primitive-textfield/primitive-textfield.providers.ts","ng://@taiga-ui/core/components/primitive-textfield/primitive-textfield-options.ts","ng://@taiga-ui/core/components/primitive-textfield/primitive-textfield.component.ts","ng://@taiga-ui/core/components/primitive-textfield/primitive-textfield.directive.ts","ng://@taiga-ui/core/components/primitive-textfield/textfield/textfield.component.ts","ng://@taiga-ui/core/components/primitive-textfield/value-decoration/value-decoration.component.ts","ng://@taiga-ui/core/components/primitive-textfield/primitive-textfield.module.ts","ng://@taiga-ui/core/components/primitive-textfield/taiga-ui-core-components-primitive-textfield.ts"],"sourcesContent":["import {forwardRef} from '@angular/core';\nimport {TUI_FOCUSABLE_ITEM_ACCESSOR} from '@taiga-ui/cdk';\nimport {HINT_CONTROLLER_PROVIDER} from '@taiga-ui/core/directives/hint-controller';\nimport {TEXTFIELD_CONTROLLER_PROVIDER} from '@taiga-ui/core/directives/textfield-controller';\nimport {MODE_PROVIDER} from '@taiga-ui/core/providers';\n\nimport {TuiPrimitiveTextfieldComponent} from './primitive-textfield.component';\n\nexport const TUI_PRIMITIVE_TEXTFIELD_PROVIDERS = [\n {\n provide: TUI_FOCUSABLE_ITEM_ACCESSOR,\n useExisting: forwardRef(() => TuiPrimitiveTextfieldComponent),\n },\n TEXTFIELD_CONTROLLER_PROVIDER,\n HINT_CONTROLLER_PROVIDER,\n MODE_PROVIDER,\n];\n","import {InjectionToken, ValueProvider} from '@angular/core';\nimport {TuiHorizontalDirection} from '@taiga-ui/core/types';\nimport {PolymorpheusContent} from '@tinkoff/ng-polymorpheus';\n\nexport interface TuiPrimitiveTextfieldOptions {\n readonly iconAlign: TuiHorizontalDirection;\n readonly iconCleaner: PolymorpheusContent;\n}\n\n// TODO: 3.0 remove in ivy compilation\nexport const TUI_PRIMITIVE_TEXTFIELD_ICON_CLEANER = `tuiIconCloseLarge`;\n\n/** Default values for primitive textfield options */\nexport const TUI_PRIMITIVE_TEXTFIELD_DEFAULT_OPTIONS: TuiPrimitiveTextfieldOptions = {\n iconAlign: `right`,\n iconCleaner: TUI_PRIMITIVE_TEXTFIELD_ICON_CLEANER,\n};\n\nexport const TUI_PRIMITIVE_TEXTFIELD_OPTIONS =\n new InjectionToken<TuiPrimitiveTextfieldOptions>(\n `Default parameters for primitive textfield component`,\n {\n factory: () => TUI_PRIMITIVE_TEXTFIELD_DEFAULT_OPTIONS,\n },\n );\n\nexport const tuiPrimitiveTextfieldOptionsProvider: (\n options: Partial<TuiPrimitiveTextfieldOptions>,\n) => ValueProvider = (options: Partial<TuiPrimitiveTextfieldOptions>) => ({\n provide: TUI_PRIMITIVE_TEXTFIELD_OPTIONS,\n useValue: {...TUI_PRIMITIVE_TEXTFIELD_DEFAULT_OPTIONS, ...options},\n});\n","import {\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n ElementRef,\n EventEmitter,\n HostBinding,\n HostListener,\n Inject,\n Input,\n Output,\n QueryList,\n ViewChild,\n} from '@angular/core';\nimport {\n AbstractTuiInteractive,\n isNativeFocusedIn,\n setNativeFocused,\n TuiContextWithImplicit,\n TuiCreditCardAutofillName,\n tuiDefaultProp,\n TuiFocusableElementAccessor,\n tuiPure,\n} from '@taiga-ui/cdk';\nimport {\n TUI_HINT_WATCHED_CONTROLLER,\n TuiHintControllerDirective,\n} from '@taiga-ui/core/directives/hint-controller';\nimport {\n TUI_TEXTFIELD_WATCHED_CONTROLLER,\n TuiTextfieldController,\n} from '@taiga-ui/core/directives/textfield-controller';\nimport {TUI_MODE, TUI_TEXTFIELD_APPEARANCE} from '@taiga-ui/core/tokens';\nimport {TuiBrightness, TuiSizeL, TuiSizeS} from '@taiga-ui/core/types';\nimport {getBorder} from '@taiga-ui/core/utils/miscellaneous';\nimport {PolymorpheusContent, PolymorpheusOutletComponent} from '@tinkoff/ng-polymorpheus';\nimport {fromEvent, Observable} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nimport {TUI_PRIMITIVE_TEXTFIELD_PROVIDERS} from './primitive-textfield.providers';\nimport {\n TUI_PRIMITIVE_TEXTFIELD_OPTIONS,\n TuiPrimitiveTextfieldOptions,\n} from './primitive-textfield-options';\n\nconst ICON_PADDING = 1.75;\nconst ICON_PADDING_S = 1.5;\n\n@Component({\n selector: `tui-primitive-textfield`,\n templateUrl: `./primitive-textfield.template.html`,\n styleUrls: [`./primitive-textfield.style.less`],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: TUI_PRIMITIVE_TEXTFIELD_PROVIDERS,\n host: {\n '($.data-mode.attr)': `mode$`,\n '[class._autofilled]': `autofilled`,\n '[class._label-outside]': `controller.labelOutside`,\n },\n})\nexport class TuiPrimitiveTextfieldComponent\n extends AbstractTuiInteractive\n implements TuiFocusableElementAccessor\n{\n @ViewChild(`focusableElement`)\n private readonly focusableElement?: ElementRef<HTMLInputElement>;\n\n @Input()\n @tuiDefaultProp()\n editable = true;\n\n @Input()\n @tuiDefaultProp()\n filler = ``;\n\n @Input()\n @tuiDefaultProp()\n iconAlign: TuiPrimitiveTextfieldOptions['iconAlign'] = this.options.iconAlign;\n\n // TODO: 3.0 Remove null\n @Input()\n @tuiDefaultProp()\n iconContent: PolymorpheusContent<TuiContextWithImplicit<TuiSizeS | TuiSizeL>> | null =\n null;\n\n @Input()\n @tuiDefaultProp()\n iconCleaner: TuiPrimitiveTextfieldOptions['iconCleaner'] = this.options.iconCleaner;\n\n @Input()\n @HostBinding(`class._readonly`)\n @tuiDefaultProp()\n readOnly = false;\n\n @Input()\n @tuiDefaultProp()\n invalid = false;\n\n @Input()\n @tuiDefaultProp()\n disabled = false;\n\n @Input()\n @tuiDefaultProp()\n prefix = ``;\n\n @Input()\n @tuiDefaultProp()\n postfix = ``;\n\n @Input()\n @tuiDefaultProp()\n value = ``;\n\n @Output()\n readonly valueChange = new EventEmitter<string>();\n\n /**\n * @deprecated TODO: 3.0 remove\n */\n @Output()\n readonly autofilledChange = new EventEmitter<boolean>();\n\n @ContentChildren(PolymorpheusOutletComponent)\n readonly content?: QueryList<unknown>;\n\n autofilled = false;\n\n constructor(\n @Inject(TUI_MODE) readonly mode$: Observable<TuiBrightness | null>,\n @Inject(TUI_TEXTFIELD_APPEARANCE) readonly appearance: string,\n @Inject(TUI_TEXTFIELD_WATCHED_CONTROLLER)\n readonly controller: TuiTextfieldController,\n @Inject(TUI_HINT_WATCHED_CONTROLLER)\n readonly hintController: TuiHintControllerDirective,\n @Inject(TUI_PRIMITIVE_TEXTFIELD_OPTIONS)\n readonly options: TuiPrimitiveTextfieldOptions,\n @Inject(ElementRef) private readonly elementRef: ElementRef<HTMLElement>,\n ) {\n super();\n }\n\n get nativeFocusableElement(): HTMLInputElement | null {\n if (this.computedDisabled || !this.focusableElement) {\n return null;\n }\n\n // TODO: 3.0 Refactor this after we drop built-in input element\n return (\n (this.focusableElement.nativeElement\n .previousElementSibling as HTMLInputElement | null) ||\n this.focusableElement.nativeElement\n );\n }\n\n get focused(): boolean {\n return isNativeFocusedIn(this.elementRef.nativeElement);\n }\n\n @HostBinding(`attr.data-size`)\n get size(): TuiSizeS | TuiSizeL {\n return this.controller.size;\n }\n\n @HostBinding(`class._invalid`)\n get computedInvalid(): boolean {\n return !this.readOnly && !this.disabled && this.invalid;\n }\n\n @HostBinding(`class._hidden`)\n get inputHidden(): boolean {\n return !!this.content?.length;\n }\n\n get hasValue(): boolean {\n return !!this.value;\n }\n\n get hasCleaner(): boolean {\n return (\n this.controller.cleaner && this.hasValue && !this.disabled && !this.readOnly\n );\n }\n\n get hasTooltip(): boolean {\n return !!this.hintController?.content && !this.disabled;\n }\n\n get hasCustomContent(): boolean {\n return !!this.controller.customContent;\n }\n\n get showOnlyPlaceholder(): boolean {\n return (\n this.focused &&\n this.placeholderVisible &&\n (this.size === `s` || (this.size === `m` && !this.placeholderRaisable))\n );\n }\n\n get placeholderVisible(): boolean {\n const hasDecor =\n this.controller.exampleText ||\n this.prefix ||\n this.postfix ||\n this.nativeFocusableElement?.placeholder;\n const showDecor = hasDecor && !this.readOnly && this.computedFocused;\n\n return !this.hasValue && !showDecor;\n }\n\n get hasPlaceholder(): boolean {\n return (\n !this.showOnlyPlaceholder &&\n (this.placeholderRaisable || this.placeholderVisible)\n );\n }\n\n get placeholderRaised(): boolean {\n return (\n this.placeholderRaisable &&\n ((this.computedFocused && !this.readOnly) || this.hasValue || this.autofilled)\n );\n }\n\n @HostBinding(`style.--border-start.rem`)\n get borderStart(): number {\n return this.iconAlignLeft ? this.iconPaddingLeft : 0;\n }\n\n @HostBinding(`style.--border-end.rem`)\n get borderEnd(): number {\n return getBorder(\n this.iconAlignRight,\n this.hasCleaner,\n this.hasTooltip,\n this.hasCustomContent,\n );\n }\n\n get iconAlignLeft(): boolean {\n return this.hasIcon && this.iconAlign === `left`;\n }\n\n get iconAlignRight(): boolean {\n return this.hasIcon && this.iconAlign === `right`;\n }\n\n // Safari expiration date autofill workaround\n get name(): 'ccexpiryyear' | null {\n return this.controller.autocomplete === TuiCreditCardAutofillName.CcExp\n ? `ccexpiryyear`\n : null;\n }\n\n get computedId(): string {\n return this.nativeFocusableElement?.id || ``;\n }\n\n @HostListener(`focusin`, [`true`])\n @HostListener(`focusout`, [`false`])\n onFocused(focused: boolean): void {\n this.updateFocused(focused);\n }\n\n @tuiPure\n getIndent$(element: HTMLElement): Observable<number> {\n return fromEvent(element, `scroll`).pipe(map(() => -1 * element.scrollLeft));\n }\n\n clear(): void {\n if (this.nativeFocusableElement) {\n this.nativeFocusableElement.value = ``;\n }\n\n this.updateValue(``);\n }\n\n onMouseDown(event: MouseEvent): void {\n const {nativeFocusableElement} = this;\n\n if (!nativeFocusableElement || event.target === nativeFocusableElement) {\n return;\n }\n\n event.preventDefault();\n setNativeFocused(nativeFocusableElement);\n }\n\n onModelChange(value: string): void {\n this.updateValue(value);\n }\n\n onHovered(hovered: boolean): void {\n this.updateHovered(hovered);\n }\n\n onAutofilled(autofilled: boolean): void {\n this.updateAutofilled(autofilled);\n }\n\n private get iconPaddingLeft(): number {\n return this.size === `s` ? ICON_PADDING_S : ICON_PADDING;\n }\n\n private get placeholderRaisable(): boolean {\n return this.size !== `s` && !this.controller.labelOutside;\n }\n\n private get hasIcon(): boolean {\n return !!this.iconContent;\n }\n\n private updateAutofilled(autofilled: boolean): void {\n if (this.autofilled === autofilled) {\n return;\n }\n\n this.autofilled = autofilled;\n this.autofilledChange.emit(autofilled);\n }\n\n private updateValue(value: string): void {\n this.value = value;\n this.valueChange.emit(value);\n }\n}\n","import {Directive, forwardRef, Inject} from '@angular/core';\nimport {AbstractTuiControl} from '@taiga-ui/cdk';\nimport {TuiAbstractTextfieldHost} from '@taiga-ui/core/abstract';\nimport {TUI_TEXTFIELD_HOST} from '@taiga-ui/core/tokens';\n\nimport {TuiPrimitiveTextfieldComponent} from './primitive-textfield.component';\n\n@Directive({\n selector: `tui-primitive-textfield`,\n providers: [\n {\n provide: TUI_TEXTFIELD_HOST,\n useExisting: forwardRef(() => TuiPrimitiveTextfieldDirective),\n },\n ],\n})\nexport class TuiPrimitiveTextfieldDirective extends TuiAbstractTextfieldHost<any> {\n constructor(\n @Inject(TuiPrimitiveTextfieldComponent)\n private readonly textfield: TuiPrimitiveTextfieldComponent,\n ) {\n /**\n * TuiPrimitiveTextfieldComponent satisfies all required parts of\n * AbstractTuiControl interface. A new interface is not introduced\n * so AbstractTuiControl is automatically injected for all other controls.\n */\n super(textfield as unknown as AbstractTuiControl<unknown>);\n }\n\n get readOnly(): boolean {\n return this.textfield.readOnly || !this.textfield.editable;\n }\n\n onValueChange(value: string): void {\n this.textfield.onModelChange(value);\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n DoCheck,\n ElementRef,\n HostBinding,\n Inject,\n} from '@angular/core';\nimport {TuiIdService} from '@taiga-ui/cdk';\nimport {\n TEXTFIELD_CONTROLLER_PROVIDER,\n TUI_DESCRIBED_BY_PROVIDERS,\n TUI_TEXTFIELD_WATCHED_CONTROLLER,\n TuiDescribedByDirective,\n TuiTextfieldController,\n} from '@taiga-ui/core/directives';\nimport {TuiTextfieldHost} from '@taiga-ui/core/interfaces';\nimport {TUI_TEXTFIELD_HOST} from '@taiga-ui/core/tokens';\n\n// @dynamic\n@Component({\n selector: `input[tuiTextfield], textarea[tuiTextfield]`,\n template: ``,\n providers: [\n TuiDescribedByDirective,\n TUI_DESCRIBED_BY_PROVIDERS,\n TEXTFIELD_CONTROLLER_PROVIDER,\n ],\n host: {\n type: `text`,\n '[attr.aria-placeholder]': `controller.exampleText`,\n '[attr.aria-invalid]': `host.invalid`,\n '[attr.disabled]': `host.disabled || null`,\n '[tabIndex]': `host.focusable ? 0 : -1`,\n '[readOnly]': `host.readOnly`,\n '[value]': `host.value`,\n '(input)': `host.onValueChange($event.target.value)`,\n },\n styleUrls: [`textfield.style.less`],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TuiTextfieldComponent implements DoCheck {\n constructor(\n @Inject(TUI_TEXTFIELD_HOST) readonly host: TuiTextfieldHost,\n @Inject(TUI_TEXTFIELD_WATCHED_CONTROLLER)\n readonly controller: TuiTextfieldController,\n @Inject(ElementRef) private readonly elementRef: ElementRef<HTMLInputElement>,\n @Inject(TuiDescribedByDirective)\n private readonly describedBy: TuiDescribedByDirective,\n @Inject(TuiIdService)\n private readonly idService: TuiIdService,\n ) {\n this.host.process(this.elementRef.nativeElement);\n }\n\n @HostBinding(`attr.aria-describedby`)\n get computedDescribedBy(): string | null {\n return this.describedBy.computedDescribedBy;\n }\n\n @HostBinding(`id`)\n get id(): string {\n return this.elementRef.nativeElement.id || this.idService.generate();\n }\n\n ngDoCheck(): void {\n this.describedBy.tuiDescribedBy = this.id;\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n DoCheck,\n ElementRef,\n HostBinding,\n HostListener,\n Inject,\n ViewChild,\n} from '@angular/core';\nimport {\n TUI_TEXTFIELD_WATCHED_CONTROLLER,\n TuiTextfieldController,\n} from '@taiga-ui/core/directives';\nimport {TuiAppearance} from '@taiga-ui/core/enums';\nimport {BehaviorSubject} from 'rxjs';\nimport {delay, distinctUntilChanged, filter, map} from 'rxjs/operators';\n\nimport {TuiPrimitiveTextfieldComponent} from '../primitive-textfield.component';\n\n@Component({\n selector: `tui-value-decoration`,\n templateUrl: `./value-decoration.template.html`,\n styleUrls: [`./value-decoration.style.less`],\n // It follows Change Detection of PrimitiveTextfield\n changeDetection: ChangeDetectionStrategy.Default,\n})\nexport class TuiValueDecorationComponent implements DoCheck {\n @ViewChild(`pre`, {read: ElementRef, static: true})\n private readonly pre?: ElementRef<HTMLElement>;\n\n private readonly prefix$ = new BehaviorSubject(``);\n\n readonly pre$ = this.prefix$.pipe(\n delay(0),\n filter(() => !!this.pre?.nativeElement.isConnected),\n distinctUntilChanged(),\n map(() => this.pre?.nativeElement.offsetWidth || 0),\n );\n\n constructor(\n @Inject(TuiPrimitiveTextfieldComponent)\n private readonly textfield: TuiPrimitiveTextfieldComponent,\n @Inject(TUI_TEXTFIELD_WATCHED_CONTROLLER)\n private readonly controller: TuiTextfieldController,\n ) {}\n\n @HostBinding(`class._table`)\n get isContextTable(): boolean {\n return this.textfield.appearance === TuiAppearance.Table;\n }\n\n get value(): string {\n return this.textfield.value;\n }\n\n get filler(): string {\n const {focused, placeholder, exampleText, value, textfield} = this;\n\n if (placeholder && exampleText) {\n return ``;\n }\n\n return focused ? exampleText || textfield.filler.slice(value.length) : ``;\n }\n\n get prefix(): string {\n return this.decorationsVisible ? this.textfield.prefix : ``;\n }\n\n get postfix(): string {\n return this.decorationsVisible ? this.computedPostfix : ``;\n }\n\n @HostListener(`animationstart`)\n ngDoCheck(): void {\n this.prefix$.next(this.prefix);\n }\n\n private get placeholder(): string {\n return this.textfield.nativeFocusableElement?.placeholder || ``;\n }\n\n private get exampleText(): string {\n const exampleText = this.controller.exampleText || this.placeholder;\n\n return !this.value && this.focused ? exampleText : ``;\n }\n\n private get decorationsVisible(): boolean {\n return !!this.value || this.focused;\n }\n\n private get focused(): boolean {\n return this.textfield.computedFocused && !this.textfield.readOnly;\n }\n\n private get computedPostfix(): string {\n return this.textfield.postfix && (this.filler || this.value)\n ? ` ${this.textfield.postfix}`\n : this.textfield.postfix;\n }\n}\n","import {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {FormsModule} from '@angular/forms';\nimport {\n TuiAutofilledModule,\n TuiFocusableModule,\n TuiHoveredModule,\n TuiInputModeModule,\n} from '@taiga-ui/cdk';\nimport {TuiSvgModule} from '@taiga-ui/core/components/svg';\nimport {TuiTooltipModule} from '@taiga-ui/core/components/tooltip';\nimport {TuiDescribedByModule} from '@taiga-ui/core/directives/described-by';\nimport {TuiMaskAccessorModule} from '@taiga-ui/core/directives/mask-accessor';\nimport {TuiWrapperModule} from '@taiga-ui/core/directives/wrapper';\nimport {PolymorpheusModule} from '@tinkoff/ng-polymorpheus';\n\nimport {TuiPrimitiveTextfieldComponent} from './primitive-textfield.component';\nimport {TuiPrimitiveTextfieldDirective} from './primitive-textfield.directive';\nimport {TuiTextfieldComponent} from './textfield/textfield.component';\nimport {TuiValueDecorationComponent} from './value-decoration/value-decoration.component';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n PolymorpheusModule,\n TuiMaskAccessorModule,\n TuiFocusableModule,\n TuiHoveredModule,\n TuiInputModeModule,\n TuiWrapperModule,\n TuiSvgModule,\n TuiTooltipModule,\n TuiAutofilledModule,\n TuiDescribedByModule,\n ],\n declarations: [\n TuiPrimitiveTextfieldComponent,\n TuiPrimitiveTextfieldDirective,\n TuiTextfieldComponent,\n TuiValueDecorationComponent,\n ],\n exports: [\n TuiPrimitiveTextfieldComponent,\n TuiPrimitiveTextfieldDirective,\n TuiTextfieldComponent,\n ],\n})\nexport class TuiPrimitiveTextfieldModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["TuiTextfieldController","TUI_TEXTFIELD_WATCHED_CONTROLLER","TEXTFIELD_CONTROLLER_PROVIDER"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-core-components-scrollbar.js","sources":["ng://@taiga-ui/core/components/scrollbar/scroll-ref.directive.ts","ng://@taiga-ui/core/components/scrollbar/scrollable.directive.ts","ng://@taiga-ui/core/components/scrollbar/scrollbar.component.ts","ng://@taiga-ui/core/components/scrollbar/scrollbar.module.ts","ng://@taiga-ui/core/components/scrollbar/taiga-ui-core-components-scrollbar.ts"],"sourcesContent":["import {Directive, ElementRef} from '@angular/core';\nimport {TUI_SCROLL_REF} from '@taiga-ui/core/tokens';\n\nexport const SCROLL_REF_SELECTOR = `[tuiScrollRef]`;\n\n@Directive({\n selector: SCROLL_REF_SELECTOR,\n providers: [\n {\n provide: TUI_SCROLL_REF,\n useExisting: ElementRef,\n },\n ],\n})\nexport class TuiScrollRefDirective {}\n","import {Directive, ElementRef, Inject, OnInit} from '@angular/core';\nimport {TUI_SCROLLABLE} from '@taiga-ui/core/constants';\n\n@Directive({\n selector: `[tuiScrollable]`,\n})\nexport class TuiScrollableDirective implements OnInit {\n constructor(\n @Inject(ElementRef) private readonly elementRef: ElementRef<HTMLElement>,\n ) {}\n\n ngOnInit(): void {\n this.elementRef.nativeElement.dispatchEvent(\n new CustomEvent(TUI_SCROLLABLE, {\n bubbles: true,\n detail: this.elementRef.nativeElement,\n }),\n );\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostBinding,\n HostListener,\n Inject,\n Input,\n} from '@angular/core';\nimport {CSS, USER_AGENT} from '@ng-web-apis/common';\nimport {getElementOffset, isFirefox, TUI_IS_IOS, tuiDefaultProp} from '@taiga-ui/cdk';\nimport {TUI_SCROLL_INTO_VIEW, TUI_SCROLLABLE} from '@taiga-ui/core/constants';\nimport {TUI_SCROLL_REF} from '@taiga-ui/core/tokens';\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport function scrollRefFactory({\n browserScrollRef,\n}: TuiScrollbarComponent): ElementRef<HTMLElement> {\n return browserScrollRef;\n}\n\n// @dynamic\n@Component({\n selector: `tui-scrollbar`,\n templateUrl: `./scrollbar.template.html`,\n styleUrls: [`./scrollbar.style.less`],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: TUI_SCROLL_REF,\n deps: [TuiScrollbarComponent],\n useFactory: scrollRefFactory,\n },\n ],\n})\nexport class TuiScrollbarComponent {\n private delegated = false;\n\n private readonly isLegacy: boolean =\n !this.cssRef.supports(`position`, `sticky`) ||\n (isFirefox(this.userAgent) && !this.cssRef.supports(`scrollbar-width`, `none`));\n\n @Input()\n @tuiDefaultProp()\n hidden = false;\n\n readonly browserScrollRef = new ElementRef(this.elementRef.nativeElement);\n\n constructor(\n @Inject(CSS) private readonly cssRef: any,\n @Inject(ElementRef) private readonly elementRef: ElementRef<HTMLElement>,\n @Inject(USER_AGENT) private readonly userAgent: string,\n @Inject(TUI_IS_IOS) private readonly isIos: boolean,\n ) {}\n\n get showScrollbars(): boolean {\n return !this.hidden && !this.isIos && (!this.isLegacy || this.delegated);\n }\n\n @HostBinding(`class._legacy`)\n get showNative(): boolean {\n return this.isLegacy && !this.hidden && !this.delegated;\n }\n\n @HostListener(`${TUI_SCROLLABLE}.stop`, [`$event.detail`])\n onScrollable(element: HTMLElement): void {\n this.delegated = true;\n this.browserScrollRef.nativeElement = element;\n }\n\n @HostListener(`${TUI_SCROLL_INTO_VIEW}.stop`, [`$event.detail`])\n scrollIntoView(detail: HTMLElement): void {\n if (this.delegated) {\n return;\n }\n\n const {nativeElement} = this.browserScrollRef;\n const {offsetTop, offsetLeft} = getElementOffset(nativeElement, detail);\n\n nativeElement.scrollTop =\n offsetTop + detail.offsetHeight / 2 - nativeElement.clientHeight / 2;\n nativeElement.scrollLeft =\n offsetLeft + detail.offsetWidth / 2 - nativeElement.clientWidth / 2;\n }\n}\n","import {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {TuiScrollControlsModule} from '@taiga-ui/core/components/scroll-controls';\n\nimport {TuiScrollRefDirective} from './scroll-ref.directive';\nimport {TuiScrollableDirective} from './scrollable.directive';\nimport {TuiScrollbarComponent} from './scrollbar.component';\n\n@NgModule({\n imports: [CommonModule, TuiScrollControlsModule],\n declarations: [TuiScrollbarComponent, TuiScrollRefDirective, TuiScrollableDirective],\n exports: [TuiScrollbarComponent, TuiScrollRefDirective, TuiScrollableDirective],\n})\nexport class TuiScrollbarModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"taiga-ui-core-components-scrollbar.js","sources":["ng://@taiga-ui/core/components/scrollbar/scroll-ref.directive.ts","ng://@taiga-ui/core/components/scrollbar/scrollable.directive.ts","ng://@taiga-ui/core/components/scrollbar/scrollbar.component.ts","ng://@taiga-ui/core/components/scrollbar/scrollbar.module.ts","ng://@taiga-ui/core/components/scrollbar/taiga-ui-core-components-scrollbar.ts"],"sourcesContent":["import {Directive, ElementRef} from '@angular/core';\nimport {TUI_SCROLL_REF} from '@taiga-ui/core/tokens';\n\nexport const SCROLL_REF_SELECTOR = `[tuiScrollRef]`;\n\n@Directive({\n selector: SCROLL_REF_SELECTOR,\n providers: [\n {\n provide: TUI_SCROLL_REF,\n useExisting: ElementRef,\n },\n ],\n})\nexport class TuiScrollRefDirective {}\n","import {Directive, ElementRef, Inject, OnInit} from '@angular/core';\nimport {TUI_SCROLLABLE} from '@taiga-ui/core/constants';\n\n@Directive({\n selector: `[tuiScrollable]`,\n})\nexport class TuiScrollableDirective implements OnInit {\n constructor(\n @Inject(ElementRef) private readonly elementRef: ElementRef<HTMLElement>,\n ) {}\n\n ngOnInit(): void {\n this.elementRef.nativeElement.dispatchEvent(\n new CustomEvent(TUI_SCROLLABLE, {\n bubbles: true,\n detail: this.elementRef.nativeElement,\n }),\n );\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostBinding,\n HostListener,\n Inject,\n Input,\n} from '@angular/core';\nimport {CSS as CSS_TOKEN, USER_AGENT} from '@ng-web-apis/common';\nimport {\n getElementOffset,\n isFirefox,\n TUI_IS_IOS,\n tuiDefaultProp,\n TuiInjectionTokenType,\n} from '@taiga-ui/cdk';\nimport {TUI_SCROLL_INTO_VIEW, TUI_SCROLLABLE} from '@taiga-ui/core/constants';\nimport {TUI_SCROLL_REF} from '@taiga-ui/core/tokens';\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport function scrollRefFactory({\n browserScrollRef,\n}: TuiScrollbarComponent): ElementRef<HTMLElement> {\n return browserScrollRef;\n}\n\n// @dynamic\n@Component({\n selector: `tui-scrollbar`,\n templateUrl: `./scrollbar.template.html`,\n styleUrls: [`./scrollbar.style.less`],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: TUI_SCROLL_REF,\n deps: [TuiScrollbarComponent],\n useFactory: scrollRefFactory,\n },\n ],\n})\nexport class TuiScrollbarComponent {\n private delegated = false;\n\n private readonly isLegacy: boolean =\n !this.cssRef.supports(`position`, `sticky`) ||\n (isFirefox(this.userAgent) && !this.cssRef.supports(`scrollbar-width`, `none`));\n\n @Input()\n @tuiDefaultProp()\n hidden = false;\n\n readonly browserScrollRef = new ElementRef(this.elementRef.nativeElement);\n\n constructor(\n @Inject(CSS_TOKEN)\n private readonly cssRef: TuiInjectionTokenType<typeof CSS_TOKEN>,\n @Inject(ElementRef) private readonly elementRef: ElementRef<HTMLElement>,\n @Inject(USER_AGENT) private readonly userAgent: string,\n @Inject(TUI_IS_IOS) private readonly isIos: boolean,\n ) {}\n\n get showScrollbars(): boolean {\n return !this.hidden && !this.isIos && (!this.isLegacy || this.delegated);\n }\n\n @HostBinding(`class._legacy`)\n get showNative(): boolean {\n return this.isLegacy && !this.hidden && !this.delegated;\n }\n\n @HostListener(`${TUI_SCROLLABLE}.stop`, [`$event.detail`])\n onScrollable(element: HTMLElement): void {\n this.delegated = true;\n this.browserScrollRef.nativeElement = element;\n }\n\n @HostListener(`${TUI_SCROLL_INTO_VIEW}.stop`, [`$event.detail`])\n scrollIntoView(detail: HTMLElement): void {\n if (this.delegated) {\n return;\n }\n\n const {nativeElement} = this.browserScrollRef;\n const {offsetTop, offsetLeft} = getElementOffset(nativeElement, detail);\n\n nativeElement.scrollTop =\n offsetTop + detail.offsetHeight / 2 - nativeElement.clientHeight / 2;\n nativeElement.scrollLeft =\n offsetLeft + detail.offsetWidth / 2 - nativeElement.clientWidth / 2;\n }\n}\n","import {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {TuiScrollControlsModule} from '@taiga-ui/core/components/scroll-controls';\n\nimport {TuiScrollRefDirective} from './scroll-ref.directive';\nimport {TuiScrollableDirective} from './scrollable.directive';\nimport {TuiScrollbarComponent} from './scrollbar.component';\n\n@NgModule({\n imports: [CommonModule, TuiScrollControlsModule],\n declarations: [TuiScrollbarComponent, TuiScrollRefDirective, TuiScrollableDirective],\n exports: [TuiScrollbarComponent, TuiScrollRefDirective, TuiScrollableDirective],\n})\nexport class TuiScrollbarModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["CSS_TOKEN"],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ import { __decorate, __param } from 'tslib';
2
+ import { Inject, Pipe, NgModule } from '@angular/core';
3
+ import { TuiFormatDateService } from '@taiga-ui/core/services';
4
+
5
+ var TuiFormatDatePipe = /** @class */ (function () {
6
+ function TuiFormatDatePipe(service) {
7
+ this.service = service;
8
+ }
9
+ TuiFormatDatePipe.prototype.transform = function (timestampOrDate) {
10
+ return this.service.format(timestampOrDate.valueOf());
11
+ };
12
+ TuiFormatDatePipe.ctorParameters = function () { return [
13
+ { type: TuiFormatDateService, decorators: [{ type: Inject, args: [TuiFormatDateService,] }] }
14
+ ]; };
15
+ TuiFormatDatePipe = __decorate([
16
+ Pipe({
17
+ name: "tuiFormatDate",
18
+ }),
19
+ __param(0, Inject(TuiFormatDateService))
20
+ ], TuiFormatDatePipe);
21
+ return TuiFormatDatePipe;
22
+ }());
23
+
24
+ var TuiFormatDatePipeModule = /** @class */ (function () {
25
+ function TuiFormatDatePipeModule() {
26
+ }
27
+ TuiFormatDatePipeModule = __decorate([
28
+ NgModule({
29
+ declarations: [TuiFormatDatePipe],
30
+ exports: [TuiFormatDatePipe],
31
+ })
32
+ ], TuiFormatDatePipeModule);
33
+ return TuiFormatDatePipeModule;
34
+ }());
35
+
36
+ /**
37
+ * Generated bundle index. Do not edit.
38
+ */
39
+
40
+ export { TuiFormatDatePipe, TuiFormatDatePipeModule };
41
+ //# sourceMappingURL=taiga-ui-core-pipes-format-date.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"taiga-ui-core-pipes-format-date.js","sources":["ng://@taiga-ui/core/pipes/format-date/format-date.pipe.ts","ng://@taiga-ui/core/pipes/format-date/format-date.module.ts","ng://@taiga-ui/core/pipes/format-date/taiga-ui-core-pipes-format-date.ts"],"sourcesContent":["import {Inject, Pipe, PipeTransform} from '@angular/core';\nimport {TuiFormatDateService} from '@taiga-ui/core/services';\nimport {Observable} from 'rxjs';\n\n@Pipe({\n name: `tuiFormatDate`,\n})\nexport class TuiFormatDatePipe implements PipeTransform {\n constructor(\n @Inject(TuiFormatDateService) private readonly service: TuiFormatDateService,\n ) {}\n\n transform(timestampOrDate: number | Date): Observable<string> {\n return this.service.format(timestampOrDate.valueOf());\n }\n}\n","import {NgModule} from '@angular/core';\n\nimport {TuiFormatDatePipe} from './format-date.pipe';\n\n@NgModule({\n declarations: [TuiFormatDatePipe],\n exports: [TuiFormatDatePipe],\n})\nexport class TuiFormatDatePipeModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;IAQI,2BACmD,OAA6B;QAA7B,YAAO,GAAP,OAAO,CAAsB;KAC5E;IAEJ,qCAAS,GAAT,UAAU,eAA8B;QACpC,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC,CAAC;KACzD;;gBAL2D,oBAAoB,uBAA3E,MAAM,SAAC,oBAAoB;;IAFvB,iBAAiB;QAH7B,IAAI,CAAC;YACF,IAAI,EAAE,eAAe;SACxB,CAAC;QAGO,WAAA,MAAM,CAAC,oBAAoB,CAAC,CAAA;OAFxB,iBAAiB,CAQ7B;IAAD,wBAAC;CARD;;;ICCA;KAAuC;IAA1B,uBAAuB;QAJnC,QAAQ,CAAC;YACN,YAAY,EAAE,CAAC,iBAAiB,CAAC;YACjC,OAAO,EAAE,CAAC,iBAAiB,CAAC;SAC/B,CAAC;OACW,uBAAuB,CAAG;IAAD,8BAAC;CAAvC;;ACRA;;;;;;"}
@@ -1,4 +1,5 @@
1
1
  export * from '@taiga-ui/core/pipes/calendar-sheet';
2
+ export * from '@taiga-ui/core/pipes/format-date';
2
3
  export * from '@taiga-ui/core/pipes/format-number';
3
4
  export * from '@taiga-ui/core/pipes/format-phone';
4
5
  export * from '@taiga-ui/core/pipes/month';
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-core-pipes.js","sources":["ng://@taiga-ui/core/pipes/taiga-ui-core-pipes.ts"],"sourcesContent":["/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;AAAA;;"}
1
+ {"version":3,"file":"taiga-ui-core-pipes.js","sources":["ng://@taiga-ui/core/pipes/taiga-ui-core-pipes.ts"],"sourcesContent":["/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;AAAA;;"}
@@ -1,6 +1,6 @@
1
- import { __extends, __spread, __decorate, __param, __assign } from 'tslib';
2
- import { ɵɵdefineInjectable, Injectable, Inject, ɵɵinject, Optional, NgZone, SecurityContext, Sanitizer } from '@angular/core';
3
- import { BehaviorSubject, fromEvent, Observable, EMPTY } from 'rxjs';
1
+ import { __decorate, __param, __extends, __spread, __assign } from 'tslib';
2
+ import { Inject, LOCALE_ID, ɵɵdefineInjectable, ɵɵinject, Injectable, Optional, NgZone, SecurityContext, Sanitizer } from '@angular/core';
3
+ import { of, BehaviorSubject, fromEvent, Observable, EMPTY } from 'rxjs';
4
4
  import { WINDOW, ANIMATION_FRAME } from '@ng-web-apis/common';
5
5
  import { startWith, map, share, distinctUntilChanged, takeUntil } from 'rxjs/operators';
6
6
  import { RouterLinkActive } from '@angular/router';
@@ -9,6 +9,29 @@ import { DomSanitizer } from '@angular/platform-browser';
9
9
  import { TUI_SANITIZER, TUI_ICONS } from '@taiga-ui/core/tokens';
10
10
  import { processIcon } from '@taiga-ui/core/utils/dom';
11
11
 
12
+ var TuiFormatDateService = /** @class */ (function () {
13
+ function TuiFormatDateService(locale) {
14
+ this.locale = locale;
15
+ }
16
+ TuiFormatDateService.prototype.format = function (timestamp) {
17
+ return of(new Date(timestamp).toLocaleTimeString(this.locale, {
18
+ hour: "numeric",
19
+ minute: "2-digit",
20
+ }));
21
+ };
22
+ TuiFormatDateService.ctorParameters = function () { return [
23
+ { type: String, decorators: [{ type: Inject, args: [LOCALE_ID,] }] }
24
+ ]; };
25
+ TuiFormatDateService.ɵprov = ɵɵdefineInjectable({ factory: function TuiFormatDateService_Factory() { return new TuiFormatDateService(ɵɵinject(LOCALE_ID)); }, token: TuiFormatDateService, providedIn: "root" });
26
+ TuiFormatDateService = __decorate([
27
+ Injectable({
28
+ providedIn: "root",
29
+ }),
30
+ __param(0, Inject(LOCALE_ID))
31
+ ], TuiFormatDateService);
32
+ return TuiFormatDateService;
33
+ }());
34
+
12
35
  /**
13
36
  * Service for displaying hints/tooltips
14
37
  */
@@ -180,5 +203,5 @@ var TuiSvgService = /** @class */ (function () {
180
203
  * Generated bundle index. Do not edit.
181
204
  */
182
205
 
183
- export { TuiHintService, TuiNightThemeService, TuiRouterLinkActiveService, TuiSvgService };
206
+ export { TuiFormatDateService, TuiHintService, TuiNightThemeService, TuiRouterLinkActiveService, TuiSvgService };
184
207
  //# sourceMappingURL=taiga-ui-core-services.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-core-services.js","sources":["ng://@taiga-ui/core/services/hint.service.ts","ng://@taiga-ui/core/services/night-theme.service.ts","ng://@taiga-ui/core/services/router-link-active.service.ts","ng://@taiga-ui/core/services/svg.service.ts","ng://@taiga-ui/core/services/taiga-ui-core-services.ts"],"sourcesContent":["import {Injectable} from '@angular/core';\nimport {BehaviorSubject} from 'rxjs';\n\n// TODO: 3.0 can it be removed? It prevented seps cycling before 2.0\ntype TuiHintDirective = any;\n\ntype AbstractTuiHint = any;\n\n/**\n * Service for displaying hints/tooltips\n */\n@Injectable({\n providedIn: `root`,\n})\nexport class TuiHintService extends BehaviorSubject<readonly AbstractTuiHint[]> {\n /**\n * TODO:\n * We need the following logic for desribedBy\n * move it into another service that can register hints and\n * manage it using TuiHintService inside\n */\n private directives: readonly TuiHintDirective[] = [];\n\n constructor() {\n super([]);\n }\n\n add(directive: AbstractTuiHint): void {\n this.next(this.value.concat(directive));\n }\n\n remove(directive: AbstractTuiHint): void {\n if (this.value.includes(directive)) {\n this.next(this.value.filter(hint => hint !== directive));\n }\n }\n\n register(directive: TuiHintDirective): void {\n this.directives = [...this.directives, directive];\n }\n\n unregister(directive: TuiHintDirective): void {\n this.remove(directive);\n this.directives = this.directives.filter(dir => dir !== directive);\n }\n\n showHintForId(id: string): void {\n const directive = this.findDirectiveWithHintId(id);\n\n if (directive) {\n this.add(directive);\n }\n }\n\n hideHintForId(id: string): void {\n const directive = this.findDirectiveWithHintId(id);\n\n if (directive) {\n this.remove(directive);\n }\n }\n\n private findDirectiveWithHintId(id: string): TuiHintDirective | undefined {\n return this.directives.find(directive => directive.tuiHintId === id);\n }\n}\n","import {Inject, Injectable} from '@angular/core';\nimport {WINDOW} from '@ng-web-apis/common';\nimport {fromEvent, Observable} from 'rxjs';\nimport {map, share, startWith} from 'rxjs/operators';\n\n// @dynamic\n@Injectable({\n providedIn: `root`,\n})\nexport class TuiNightThemeService extends Observable<boolean> {\n constructor(@Inject(WINDOW) windowRef: Window) {\n const media = windowRef.matchMedia(`(prefers-color-scheme: dark)`);\n const media$ = fromEvent(media, `change`).pipe(\n startWith(null),\n map(() => media.matches),\n share(),\n );\n\n super(subscriber => media$.subscribe(subscriber));\n }\n}\n","import {Inject, Injectable, NgZone, Optional} from '@angular/core';\nimport {RouterLinkActive} from '@angular/router';\nimport {ANIMATION_FRAME} from '@ng-web-apis/common';\nimport {TuiDestroyService, tuiZoneOptimized} from '@taiga-ui/cdk';\nimport {EMPTY, Observable} from 'rxjs';\nimport {distinctUntilChanged, map, takeUntil} from 'rxjs/operators';\n\n@Injectable()\nexport class TuiRouterLinkActiveService extends Observable<boolean> {\n constructor(\n @Optional()\n @Inject(RouterLinkActive)\n routerLinkActive: RouterLinkActive | null,\n @Inject(NgZone) ngZone: NgZone,\n @Inject(ANIMATION_FRAME) animationFrame$: Observable<number>,\n @Inject(TuiDestroyService) destroy$: TuiDestroyService,\n ) {\n const stream$ = routerLinkActive\n ? animationFrame$.pipe(\n map(() => routerLinkActive.isActive),\n distinctUntilChanged(),\n tuiZoneOptimized(ngZone),\n takeUntil(destroy$),\n )\n : EMPTY;\n\n super(subscriber => stream$.subscribe(subscriber));\n }\n}\n","import {Inject, Injectable, Optional, Sanitizer, SecurityContext} from '@angular/core';\nimport {DomSanitizer, SafeHtml} from '@angular/platform-browser';\nimport {tuiAssert} from '@taiga-ui/cdk';\nimport {TUI_ICONS, TUI_SANITIZER} from '@taiga-ui/core/tokens';\nimport {processIcon} from '@taiga-ui/core/utils/dom';\nimport {BehaviorSubject} from 'rxjs';\n\n/**\n * Service for reusing SVGs without inlining each instance\n */\n// @dynamic\n@Injectable({\n providedIn: `root`,\n})\nexport class TuiSvgService {\n private originals: Record<string, string> = {};\n\n readonly items$ = new BehaviorSubject<Map<string, SafeHtml>>(new Map());\n\n constructor(\n @Optional()\n @Inject(TUI_SANITIZER)\n private readonly tuiSanitizer: Sanitizer | null,\n @Inject(DomSanitizer) private readonly sanitizer: DomSanitizer,\n @Inject(TUI_ICONS) icons: Record<string, string>,\n ) {\n this.define(icons);\n }\n\n define(icons: Record<string, string>): void {\n const {value} = this.items$;\n\n Object.keys(icons).forEach(key => {\n this.defineIcon(key, icons[key], value);\n });\n\n this.items$.next(value);\n }\n\n getOriginal(name: string): string | null {\n return this.originals[name] || null;\n }\n\n private defineIcon(name: string, src: string, map: Map<string, SafeHtml>): void {\n if (map.has(name)) {\n return;\n }\n\n const parsed = this.parseSrc(name, src);\n\n if (!parsed) {\n tuiAssert.assert(false, `Unable to parse given SVG src`);\n\n return;\n }\n\n map.set(name, parsed);\n this.originals = {\n ...this.originals,\n [name]: src,\n };\n }\n\n private parseSrc(name: string, src: string): SafeHtml {\n return this.sanitize(processIcon(src, name));\n }\n\n private sanitize(src: string): SafeHtml {\n return this.sanitizer.bypassSecurityTrustHtml(\n (this.tuiSanitizer\n ? this.tuiSanitizer.sanitize(SecurityContext.HTML, src)\n : this.sanitizer.sanitize(SecurityContext.HTML, src)) || ``,\n );\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"taiga-ui-core-services.js","sources":["ng://@taiga-ui/core/services/format-date.service.ts","ng://@taiga-ui/core/services/hint.service.ts","ng://@taiga-ui/core/services/night-theme.service.ts","ng://@taiga-ui/core/services/router-link-active.service.ts","ng://@taiga-ui/core/services/svg.service.ts","ng://@taiga-ui/core/services/taiga-ui-core-services.ts"],"sourcesContent":["import {Inject, Injectable, LOCALE_ID} from '@angular/core';\nimport {Observable, of} from 'rxjs';\n\n@Injectable({\n providedIn: `root`,\n})\nexport class TuiFormatDateService {\n constructor(@Inject(LOCALE_ID) protected readonly locale: string) {}\n\n format(timestamp: number): Observable<string> {\n return of(\n new Date(timestamp).toLocaleTimeString(this.locale, {\n hour: `numeric`,\n minute: `2-digit`,\n }),\n );\n }\n}\n","import {Injectable} from '@angular/core';\nimport {BehaviorSubject} from 'rxjs';\n\n// TODO: 3.0 can it be removed? It prevented seps cycling before 2.0\ntype TuiHintDirective = any;\n\ntype AbstractTuiHint = any;\n\n/**\n * Service for displaying hints/tooltips\n */\n@Injectable({\n providedIn: `root`,\n})\nexport class TuiHintService extends BehaviorSubject<readonly AbstractTuiHint[]> {\n /**\n * TODO:\n * We need the following logic for desribedBy\n * move it into another service that can register hints and\n * manage it using TuiHintService inside\n */\n private directives: readonly TuiHintDirective[] = [];\n\n constructor() {\n super([]);\n }\n\n add(directive: AbstractTuiHint): void {\n this.next(this.value.concat(directive));\n }\n\n remove(directive: AbstractTuiHint): void {\n if (this.value.includes(directive)) {\n this.next(this.value.filter(hint => hint !== directive));\n }\n }\n\n register(directive: TuiHintDirective): void {\n this.directives = [...this.directives, directive];\n }\n\n unregister(directive: TuiHintDirective): void {\n this.remove(directive);\n this.directives = this.directives.filter(dir => dir !== directive);\n }\n\n showHintForId(id: string): void {\n const directive = this.findDirectiveWithHintId(id);\n\n if (directive) {\n this.add(directive);\n }\n }\n\n hideHintForId(id: string): void {\n const directive = this.findDirectiveWithHintId(id);\n\n if (directive) {\n this.remove(directive);\n }\n }\n\n private findDirectiveWithHintId(id: string): TuiHintDirective | undefined {\n return this.directives.find(directive => directive.tuiHintId === id);\n }\n}\n","import {Inject, Injectable} from '@angular/core';\nimport {WINDOW} from '@ng-web-apis/common';\nimport {fromEvent, Observable} from 'rxjs';\nimport {map, share, startWith} from 'rxjs/operators';\n\n// @dynamic\n@Injectable({\n providedIn: `root`,\n})\nexport class TuiNightThemeService extends Observable<boolean> {\n constructor(@Inject(WINDOW) windowRef: Window) {\n const media = windowRef.matchMedia(`(prefers-color-scheme: dark)`);\n const media$ = fromEvent(media, `change`).pipe(\n startWith(null),\n map(() => media.matches),\n share(),\n );\n\n super(subscriber => media$.subscribe(subscriber));\n }\n}\n","import {Inject, Injectable, NgZone, Optional} from '@angular/core';\nimport {RouterLinkActive} from '@angular/router';\nimport {ANIMATION_FRAME} from '@ng-web-apis/common';\nimport {TuiDestroyService, tuiZoneOptimized} from '@taiga-ui/cdk';\nimport {EMPTY, Observable} from 'rxjs';\nimport {distinctUntilChanged, map, takeUntil} from 'rxjs/operators';\n\n@Injectable()\nexport class TuiRouterLinkActiveService extends Observable<boolean> {\n constructor(\n @Optional()\n @Inject(RouterLinkActive)\n routerLinkActive: RouterLinkActive | null,\n @Inject(NgZone) ngZone: NgZone,\n @Inject(ANIMATION_FRAME) animationFrame$: Observable<number>,\n @Inject(TuiDestroyService) destroy$: TuiDestroyService,\n ) {\n const stream$ = routerLinkActive\n ? animationFrame$.pipe(\n map(() => routerLinkActive.isActive),\n distinctUntilChanged(),\n tuiZoneOptimized(ngZone),\n takeUntil(destroy$),\n )\n : EMPTY;\n\n super(subscriber => stream$.subscribe(subscriber));\n }\n}\n","import {Inject, Injectable, Optional, Sanitizer, SecurityContext} from '@angular/core';\nimport {DomSanitizer, SafeHtml} from '@angular/platform-browser';\nimport {tuiAssert} from '@taiga-ui/cdk';\nimport {TUI_ICONS, TUI_SANITIZER} from '@taiga-ui/core/tokens';\nimport {processIcon} from '@taiga-ui/core/utils/dom';\nimport {BehaviorSubject} from 'rxjs';\n\n/**\n * Service for reusing SVGs without inlining each instance\n */\n// @dynamic\n@Injectable({\n providedIn: `root`,\n})\nexport class TuiSvgService {\n private originals: Record<string, string> = {};\n\n readonly items$ = new BehaviorSubject<Map<string, SafeHtml>>(new Map());\n\n constructor(\n @Optional()\n @Inject(TUI_SANITIZER)\n private readonly tuiSanitizer: Sanitizer | null,\n @Inject(DomSanitizer) private readonly sanitizer: DomSanitizer,\n @Inject(TUI_ICONS) icons: Record<string, string>,\n ) {\n this.define(icons);\n }\n\n define(icons: Record<string, string>): void {\n const {value} = this.items$;\n\n Object.keys(icons).forEach(key => {\n this.defineIcon(key, icons[key], value);\n });\n\n this.items$.next(value);\n }\n\n getOriginal(name: string): string | null {\n return this.originals[name] || null;\n }\n\n private defineIcon(name: string, src: string, map: Map<string, SafeHtml>): void {\n if (map.has(name)) {\n return;\n }\n\n const parsed = this.parseSrc(name, src);\n\n if (!parsed) {\n tuiAssert.assert(false, `Unable to parse given SVG src`);\n\n return;\n }\n\n map.set(name, parsed);\n this.originals = {\n ...this.originals,\n [name]: src,\n };\n }\n\n private parseSrc(name: string, src: string): SafeHtml {\n return this.sanitize(processIcon(src, name));\n }\n\n private sanitize(src: string): SafeHtml {\n return this.sanitizer.bypassSecurityTrustHtml(\n (this.tuiSanitizer\n ? this.tuiSanitizer.sanitize(SecurityContext.HTML, src)\n : this.sanitizer.sanitize(SecurityContext.HTML, src)) || ``,\n );\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;;IAOI,8BAAkD,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;KAAI;IAEpE,qCAAM,GAAN,UAAO,SAAiB;QACpB,OAAO,EAAE,CACL,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,EAAE;YAChD,IAAI,EAAE,SAAS;YACf,MAAM,EAAE,SAAS;SACpB,CAAC,CACL,CAAC;KACL;;6CATY,MAAM,SAAC,SAAS;;;IADpB,oBAAoB;QAHhC,UAAU,CAAC;YACR,UAAU,EAAE,MAAM;SACrB,CAAC;QAEe,WAAA,MAAM,CAAC,SAAS,CAAC,CAAA;OADrB,oBAAoB,CAWhC;+BAjBD;CAMA;;ACEA;;;;IAMoC,kCAA2C;IAS3E;QAAA,YACI,kBAAM,EAAE,CAAC,SACZ;;;;;;;QAJO,gBAAU,GAAgC,EAAE,CAAC;;KAIpD;IAED,4BAAG,GAAH,UAAI,SAA0B;QAC1B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;KAC3C;IAED,+BAAM,GAAN,UAAO,SAA0B;QAC7B,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;YAChC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAA,IAAI,IAAI,OAAA,IAAI,KAAK,SAAS,GAAA,CAAC,CAAC,CAAC;SAC5D;KACJ;IAED,iCAAQ,GAAR,UAAS,SAA2B;QAChC,IAAI,CAAC,UAAU,YAAO,IAAI,CAAC,UAAU,GAAE,SAAS,EAAC,CAAC;KACrD;IAED,mCAAU,GAAV,UAAW,SAA2B;QAClC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACvB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,KAAK,SAAS,GAAA,CAAC,CAAC;KACtE;IAED,sCAAa,GAAb,UAAc,EAAU;QACpB,IAAM,SAAS,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;QAEnD,IAAI,SAAS,EAAE;YACX,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;SACvB;KACJ;IAED,sCAAa,GAAb,UAAc,EAAU;QACpB,IAAM,SAAS,GAAG,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;QAEnD,IAAI,SAAS,EAAE;YACX,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;SAC1B;KACJ;IAEO,gDAAuB,GAA/B,UAAgC,EAAU;QACtC,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAA,SAAS,IAAI,OAAA,SAAS,CAAC,SAAS,KAAK,EAAE,GAAA,CAAC,CAAC;KACxE;;IAlDQ,cAAc;QAH1B,UAAU,CAAC;YACR,UAAU,EAAE,MAAM;SACrB,CAAC;OACW,cAAc,CAmD1B;yBAjED;CAiEC,CAnDmC,eAAe;;ACTnD;;IAI0C,wCAAmB;IACzD,8BAA4B,SAAiB;QAA7C,iBASC;QARG,IAAM,KAAK,GAAG,SAAS,CAAC,UAAU,CAAC,8BAA8B,CAAC,CAAC;QACnE,IAAM,MAAM,GAAG,SAAS,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,IAAI,CAC1C,SAAS,CAAC,IAAI,CAAC,EACf,GAAG,CAAC,cAAM,OAAA,KAAK,CAAC,OAAO,GAAA,CAAC,EACxB,KAAK,EAAE,CACV,CAAC;QAEF,QAAA,kBAAM,UAAA,UAAU,IAAI,OAAA,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,GAAA,CAAC,SAAC;;KACrD;;gBATsC,MAAM,uBAAhC,MAAM,SAAC,MAAM;;;IADjB,oBAAoB;QAHhC,UAAU,CAAC;YACR,UAAU,EAAE,MAAM;SACrB,CAAC;QAEe,WAAA,MAAM,CAAC,MAAM,CAAC,CAAA;OADlB,oBAAoB,CAWhC;+BApBD;CAoBC,CAXyC,UAAU;;;ICDJ,8CAAmB;IAC/D,oCAGI,gBAAyC,EACzB,MAAc,EACL,eAAmC,EACjC,QAA2B;QAN1D,iBAkBC;QAVG,IAAM,OAAO,GAAG,gBAAgB;cAC1B,eAAe,CAAC,IAAI,CAChB,GAAG,CAAC,cAAM,OAAA,gBAAgB,CAAC,QAAQ,GAAA,CAAC,EACpC,oBAAoB,EAAE,EACtB,gBAAgB,CAAC,MAAM,CAAC,EACxB,SAAS,CAAC,QAAQ,CAAC,CACtB;cACD,KAAK,CAAC;QAEZ,QAAA,kBAAM,UAAA,UAAU,IAAI,OAAA,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC,GAAA,CAAC,SAAC;;KACtD;;gBAfqB,gBAAgB,uBAFjC,QAAQ,YACR,MAAM,SAAC,gBAAgB;gBAEA,MAAM,uBAA7B,MAAM,SAAC,MAAM;gBAC4B,UAAU,uBAAnD,MAAM,SAAC,eAAe;gBACc,iBAAiB,uBAArD,MAAM,SAAC,iBAAiB;;IAPpB,0BAA0B;QADtC,UAAU,EAAE;QAGJ,WAAA,QAAQ,EAAE,CAAA;QACV,WAAA,MAAM,CAAC,gBAAgB,CAAC,CAAA;QAExB,WAAA,MAAM,CAAC,MAAM,CAAC,CAAA;QACd,WAAA,MAAM,CAAC,eAAe,CAAC,CAAA;QACvB,WAAA,MAAM,CAAC,iBAAiB,CAAC,CAAA;OAPrB,0BAA0B,CAoBtC;IAAD,iCAAC;CAAA,CApB+C,UAAU;;ACD1D;;;AAGA;;IASI,uBAGqB,YAA8B,EACR,SAAuB,EAC3C,KAA6B;QAF/B,iBAAY,GAAZ,YAAY,CAAkB;QACR,cAAS,GAAT,SAAS,CAAc;QAR1D,cAAS,GAA2B,EAAE,CAAC;QAEtC,WAAM,GAAG,IAAI,eAAe,CAAwB,IAAI,GAAG,EAAE,CAAC,CAAC;QASpE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;KACtB;IAED,8BAAM,GAAN,UAAO,KAA6B;QAApC,iBAQC;QAPU,IAAA,yBAAK,CAAgB;QAE5B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,UAAA,GAAG;YAC1B,KAAI,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;SAC3C,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC3B;IAED,mCAAW,GAAX,UAAY,IAAY;QACpB,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;KACvC;IAEO,kCAAU,GAAlB,UAAmB,IAAY,EAAE,GAAW,EAAE,GAA0B;;QACpE,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;YACf,OAAO;SACV;QAED,IAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAExC,IAAI,CAAC,MAAM,EAAE;YACT,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,+BAA+B,CAAC,CAAC;YAEzD,OAAO;SACV;QAED,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACtB,IAAI,CAAC,SAAS,yBACP,IAAI,CAAC,SAAS,gBAChB,IAAI,IAAG,GAAG,MACd,CAAC;KACL;IAEO,gCAAQ,GAAhB,UAAiB,IAAY,EAAE,GAAW;QACtC,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;KAChD;IAEO,gCAAQ,GAAhB,UAAiB,GAAW;QACxB,OAAO,IAAI,CAAC,SAAS,CAAC,uBAAuB,CACzC,CAAC,IAAI,CAAC,YAAY;cACZ,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,EAAE,GAAG,CAAC;cACrD,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,EAAE,GAAG,CAAC,KAAK,EAAE,CAClE,CAAC;KACL;;gBAnDkC,SAAS,uBAFvC,QAAQ,YACR,MAAM,SAAC,aAAa;gBAE6B,YAAY,uBAA7D,MAAM,SAAC,YAAY;gDACnB,MAAM,SAAC,SAAS;;;IAVZ,aAAa;QAHzB,UAAU,CAAC;YACR,UAAU,EAAE,MAAM;SACrB,CAAC;QAOO,WAAA,QAAQ,EAAE,CAAA;QACV,WAAA,MAAM,CAAC,aAAa,CAAC,CAAA;QAErB,WAAA,MAAM,CAAC,YAAY,CAAC,CAAA;QACpB,WAAA,MAAM,CAAC,SAAS,CAAC,CAAA;OAVb,aAAa,CA4DzB;wBA1ED;CAcA;;ACdA;;;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@taiga-ui/core",
3
- "version": "2.61.0",
3
+ "version": "2.62.2",
4
4
  "description": "Core library for creating Angular components and applications using Taiga UI",
5
5
  "keywords": [
6
6
  "angular",
@@ -15,7 +15,7 @@
15
15
  "repository": "https://github.com/tinkoff/taiga-ui",
16
16
  "license": "Apache-2.0",
17
17
  "dependencies": {
18
- "@taiga-ui/i18n": "^2.61.0",
18
+ "@taiga-ui/i18n": "^2.62.2",
19
19
  "tslib": "^1.10.0"
20
20
  },
21
21
  "peerDependencies": {
@@ -27,8 +27,8 @@
27
27
  "@angular/router": ">=9.0.0",
28
28
  "@ng-web-apis/common": ">=1.12.1 < 2",
29
29
  "@ng-web-apis/mutation-observer": ">=1.1.0 < 2",
30
- "@taiga-ui/cdk": ">=2.61.0",
31
- "@taiga-ui/i18n": ">=2.61.0",
30
+ "@taiga-ui/cdk": ">=2.62.2",
31
+ "@taiga-ui/i18n": ">=2.62.2",
32
32
  "@tinkoff/ng-event-plugins": ">=2.3.2",
33
33
  "@tinkoff/ng-polymorpheus": ">=3.1.12 < 4",
34
34
  "rxjs": ">=6.0.0"
@@ -0,0 +1,2 @@
1
+ export declare class TuiFormatDatePipeModule {
2
+ }
@@ -0,0 +1,8 @@
1
+ import { PipeTransform } from '@angular/core';
2
+ import { TuiFormatDateService } from '@taiga-ui/core/services';
3
+ import { Observable } from 'rxjs';
4
+ export declare class TuiFormatDatePipe implements PipeTransform {
5
+ private readonly service;
6
+ constructor(service: TuiFormatDateService);
7
+ transform(timestampOrDate: number | Date): Observable<string>;
8
+ }
@@ -0,0 +1,2 @@
1
+ export * from './format-date.module';
2
+ export * from './format-date.pipe';
@@ -0,0 +1,13 @@
1
+ {
2
+ "main": "../../bundles/taiga-ui-core-pipes-format-date.umd.js",
3
+ "module": "../../fesm5/taiga-ui-core-pipes-format-date.js",
4
+ "es2015": "../../fesm2015/taiga-ui-core-pipes-format-date.js",
5
+ "esm5": "../../esm5/pipes/format-date/taiga-ui-core-pipes-format-date.js",
6
+ "esm2015": "../../esm2015/pipes/format-date/taiga-ui-core-pipes-format-date.js",
7
+ "fesm5": "../../fesm5/taiga-ui-core-pipes-format-date.js",
8
+ "fesm2015": "../../fesm2015/taiga-ui-core-pipes-format-date.js",
9
+ "typings": "taiga-ui-core-pipes-format-date.d.ts",
10
+ "metadata": "taiga-ui-core-pipes-format-date.metadata.json",
11
+ "sideEffects": false,
12
+ "name": "@taiga-ui/core/pipes/format-date"
13
+ }
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
@@ -0,0 +1 @@
1
+ {"__symbolic":"module","version":4,"metadata":{"TuiFormatDatePipeModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":4,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"TuiFormatDatePipe"}],"exports":[{"__symbolic":"reference","name":"TuiFormatDatePipe"}]}]}],"members":{}},"TuiFormatDatePipe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Pipe","line":4,"character":1},"arguments":[{"name":"tuiFormatDate"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":9,"character":9},"arguments":[{"__symbolic":"reference","module":"@taiga-ui/core/services","name":"TuiFormatDateService","line":9,"character":16}]}]],"parameters":[{"__symbolic":"reference","module":"@taiga-ui/core/services","name":"TuiFormatDateService","line":9,"character":64}]}],"transform":[{"__symbolic":"method"}]}}},"origins":{"TuiFormatDatePipeModule":"./format-date.module","TuiFormatDatePipe":"./format-date.pipe"},"importAs":"@taiga-ui/core/pipes/format-date"}
package/pipes/index.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  export * from '@taiga-ui/core/pipes/calendar-sheet';
2
+ export * from '@taiga-ui/core/pipes/format-date';
2
3
  export * from '@taiga-ui/core/pipes/format-number';
3
4
  export * from '@taiga-ui/core/pipes/format-phone';
4
5
  export * from '@taiga-ui/core/pipes/month';
@@ -1 +1 @@
1
- {"__symbolic":"module","version":4,"exports":[{"from":"@taiga-ui/core/pipes/calendar-sheet"},{"from":"@taiga-ui/core/pipes/format-number"},{"from":"@taiga-ui/core/pipes/format-phone"},{"from":"@taiga-ui/core/pipes/month"},{"from":"@taiga-ui/core/pipes/pluralize"}],"metadata":{},"origins":{},"importAs":"@taiga-ui/core/pipes"}
1
+ {"__symbolic":"module","version":4,"exports":[{"from":"@taiga-ui/core/pipes/calendar-sheet"},{"from":"@taiga-ui/core/pipes/format-date"},{"from":"@taiga-ui/core/pipes/format-number"},{"from":"@taiga-ui/core/pipes/format-phone"},{"from":"@taiga-ui/core/pipes/month"},{"from":"@taiga-ui/core/pipes/pluralize"}],"metadata":{},"origins":{},"importAs":"@taiga-ui/core/pipes"}
@@ -0,0 +1,6 @@
1
+ import { Observable } from 'rxjs';
2
+ export declare class TuiFormatDateService {
3
+ protected readonly locale: string;
4
+ constructor(locale: string);
5
+ format(timestamp: number): Observable<string>;
6
+ }
@@ -1,3 +1,4 @@
1
+ export * from './format-date.service';
1
2
  export * from './hint.service';
2
3
  export * from './night-theme.service';
3
4
  export * from './router-link-active.service';
@@ -1 +1 @@
1
- {"__symbolic":"module","version":4,"metadata":{"TuiHintService":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"rxjs","name":"BehaviorSubject","line":14,"character":36},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":11,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor"}],"add":[{"__symbolic":"method"}],"remove":[{"__symbolic":"method"}],"register":[{"__symbolic":"method"}],"unregister":[{"__symbolic":"method"}],"showHintForId":[{"__symbolic":"method"}],"hideHintForId":[{"__symbolic":"method"}],"findDirectiveWithHintId":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"TuiNightThemeService":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"rxjs","name":"Observable","line":9,"character":42},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":6,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":10,"character":17},"arguments":[{"__symbolic":"reference","module":"@ng-web-apis/common","name":"WINDOW","line":10,"character":24}]}]],"parameters":[{"__symbolic":"error","message":"Could not resolve type","line":10,"character":43,"context":{"typeName":"Window"},"module":"./night-theme.service"}]}]},"statics":{"ɵprov":{}}},"TuiRouterLinkActiveService":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"rxjs","name":"Observable","line":8,"character":48},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":7,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":10,"character":9}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":11,"character":9},"arguments":[{"__symbolic":"reference","module":"@angular/router","name":"RouterLinkActive","line":11,"character":16}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":13,"character":9},"arguments":[{"__symbolic":"reference","module":"@angular/core","name":"NgZone","line":13,"character":16}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":14,"character":9},"arguments":[{"__symbolic":"reference","module":"@ng-web-apis/common","name":"ANIMATION_FRAME","line":14,"character":16}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":15,"character":9},"arguments":[{"__symbolic":"reference","module":"@taiga-ui/cdk","name":"TuiDestroyService","line":15,"character":16}]}]],"parameters":[{"__symbolic":"reference","module":"@angular/router","name":"RouterLinkActive","line":12,"character":26},{"__symbolic":"reference","module":"@angular/core","name":"NgZone","line":13,"character":32},{"__symbolic":"reference","name":"Observable","module":"rxjs","arguments":[{"__symbolic":"reference","name":"number"}]},{"__symbolic":"reference","module":"@taiga-ui/cdk","name":"TuiDestroyService","line":15,"character":45}]}]}},"TuiSvgService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":11,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":20,"character":9}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":21,"character":9},"arguments":[{"__symbolic":"reference","module":"@taiga-ui/core/tokens","name":"TUI_SANITIZER","line":21,"character":16}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":23,"character":9},"arguments":[{"__symbolic":"reference","module":"@angular/platform-browser","name":"DomSanitizer","line":23,"character":16}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":24,"character":9},"arguments":[{"__symbolic":"reference","module":"@taiga-ui/core/tokens","name":"TUI_ICONS","line":24,"character":16}]}]],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"Sanitizer","line":22,"character":39},{"__symbolic":"reference","module":"@angular/platform-browser","name":"DomSanitizer","line":23,"character":58},{"__symbolic":"error","message":"Could not resolve type","line":24,"character":34,"context":{"typeName":"Record"},"module":"./svg.service"}]}],"define":[{"__symbolic":"method"}],"getOriginal":[{"__symbolic":"method"}],"defineIcon":[{"__symbolic":"method"}],"parseSrc":[{"__symbolic":"method"}],"sanitize":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}}},"origins":{"TuiHintService":"./hint.service","TuiNightThemeService":"./night-theme.service","TuiRouterLinkActiveService":"./router-link-active.service","TuiSvgService":"./svg.service"},"importAs":"@taiga-ui/core/services"}
1
+ {"__symbolic":"module","version":4,"metadata":{"TuiFormatDateService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":3,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":7,"character":17},"arguments":[{"__symbolic":"reference","module":"@angular/core","name":"LOCALE_ID","line":7,"character":24}]}]],"parameters":[{"__symbolic":"reference","name":"string"}]}],"format":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"TuiHintService":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"rxjs","name":"BehaviorSubject","line":14,"character":36},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":11,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor"}],"add":[{"__symbolic":"method"}],"remove":[{"__symbolic":"method"}],"register":[{"__symbolic":"method"}],"unregister":[{"__symbolic":"method"}],"showHintForId":[{"__symbolic":"method"}],"hideHintForId":[{"__symbolic":"method"}],"findDirectiveWithHintId":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"TuiNightThemeService":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"rxjs","name":"Observable","line":9,"character":42},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":6,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":10,"character":17},"arguments":[{"__symbolic":"reference","module":"@ng-web-apis/common","name":"WINDOW","line":10,"character":24}]}]],"parameters":[{"__symbolic":"error","message":"Could not resolve type","line":10,"character":43,"context":{"typeName":"Window"},"module":"./night-theme.service"}]}]},"statics":{"ɵprov":{}}},"TuiRouterLinkActiveService":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"rxjs","name":"Observable","line":8,"character":48},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":7,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":10,"character":9}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":11,"character":9},"arguments":[{"__symbolic":"reference","module":"@angular/router","name":"RouterLinkActive","line":11,"character":16}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":13,"character":9},"arguments":[{"__symbolic":"reference","module":"@angular/core","name":"NgZone","line":13,"character":16}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":14,"character":9},"arguments":[{"__symbolic":"reference","module":"@ng-web-apis/common","name":"ANIMATION_FRAME","line":14,"character":16}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":15,"character":9},"arguments":[{"__symbolic":"reference","module":"@taiga-ui/cdk","name":"TuiDestroyService","line":15,"character":16}]}]],"parameters":[{"__symbolic":"reference","module":"@angular/router","name":"RouterLinkActive","line":12,"character":26},{"__symbolic":"reference","module":"@angular/core","name":"NgZone","line":13,"character":32},{"__symbolic":"reference","name":"Observable","module":"rxjs","arguments":[{"__symbolic":"reference","name":"number"}]},{"__symbolic":"reference","module":"@taiga-ui/cdk","name":"TuiDestroyService","line":15,"character":45}]}]}},"TuiSvgService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":11,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":20,"character":9}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":21,"character":9},"arguments":[{"__symbolic":"reference","module":"@taiga-ui/core/tokens","name":"TUI_SANITIZER","line":21,"character":16}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":23,"character":9},"arguments":[{"__symbolic":"reference","module":"@angular/platform-browser","name":"DomSanitizer","line":23,"character":16}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":24,"character":9},"arguments":[{"__symbolic":"reference","module":"@taiga-ui/core/tokens","name":"TUI_ICONS","line":24,"character":16}]}]],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"Sanitizer","line":22,"character":39},{"__symbolic":"reference","module":"@angular/platform-browser","name":"DomSanitizer","line":23,"character":58},{"__symbolic":"error","message":"Could not resolve type","line":24,"character":34,"context":{"typeName":"Record"},"module":"./svg.service"}]}],"define":[{"__symbolic":"method"}],"getOriginal":[{"__symbolic":"method"}],"defineIcon":[{"__symbolic":"method"}],"parseSrc":[{"__symbolic":"method"}],"sanitize":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}}},"origins":{"TuiFormatDateService":"./format-date.service","TuiHintService":"./hint.service","TuiNightThemeService":"./night-theme.service","TuiRouterLinkActiveService":"./router-link-active.service","TuiSvgService":"./svg.service"},"importAs":"@taiga-ui/core/services"}