@taiga-ui/core 2.25.0 → 2.26.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/bundles/taiga-ui-core-components-hints-host.umd.js +15 -8
  2. package/bundles/taiga-ui-core-components-hints-host.umd.js.map +1 -1
  3. package/bundles/taiga-ui-core-components-hints-host.umd.min.js +2 -2
  4. package/bundles/taiga-ui-core-components-hints-host.umd.min.js.map +1 -1
  5. package/bundles/taiga-ui-core-components-link.umd.js +5 -4
  6. package/bundles/taiga-ui-core-components-link.umd.js.map +1 -1
  7. package/bundles/taiga-ui-core-components-link.umd.min.js +2 -2
  8. package/bundles/taiga-ui-core-components-link.umd.min.js.map +1 -1
  9. package/bundles/taiga-ui-core-constants.umd.js +1 -1
  10. package/bundles/taiga-ui-core-constants.umd.js.map +1 -1
  11. package/bundles/taiga-ui-core-constants.umd.min.js +1 -1
  12. package/bundles/taiga-ui-core-constants.umd.min.js.map +1 -1
  13. package/components/hints-host/hint-box/hint-box.component.d.ts +4 -2
  14. package/components/hints-host/taiga-ui-core-components-hints-host.metadata.json +1 -1
  15. package/components/link/link.component.d.ts +1 -0
  16. package/components/link/taiga-ui-core-components-link.metadata.json +1 -1
  17. package/constants/taiga-ui-core-constants.metadata.json +1 -1
  18. package/constants/version.d.ts +1 -1
  19. package/esm2015/components/hints-host/hint-box/hint-box.component.js +10 -6
  20. package/esm2015/components/link/link.component.js +5 -3
  21. package/esm2015/constants/version.js +2 -2
  22. package/esm5/components/hints-host/hint-box/hint-box.component.js +14 -6
  23. package/esm5/components/link/link.component.js +5 -3
  24. package/esm5/constants/version.js +2 -2
  25. package/fesm2015/taiga-ui-core-components-hints-host.js +9 -6
  26. package/fesm2015/taiga-ui-core-components-hints-host.js.map +1 -1
  27. package/fesm2015/taiga-ui-core-components-link.js +4 -2
  28. package/fesm2015/taiga-ui-core-components-link.js.map +1 -1
  29. package/fesm2015/taiga-ui-core-constants.js +1 -1
  30. package/fesm2015/taiga-ui-core-constants.js.map +1 -1
  31. package/fesm5/taiga-ui-core-components-hints-host.js +13 -6
  32. package/fesm5/taiga-ui-core-components-hints-host.js.map +1 -1
  33. package/fesm5/taiga-ui-core-components-link.js +4 -2
  34. package/fesm5/taiga-ui-core-components-link.js.map +1 -1
  35. package/fesm5/taiga-ui-core-constants.js +1 -1
  36. package/fesm5/taiga-ui-core-constants.js.map +1 -1
  37. package/package.json +5 -3
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-core-components-hints-host.js","sources":["ng://@taiga-ui/core/components/hints-host/hints-host.component.ts","ng://@taiga-ui/core/components/hints-host/hint-box/hint-box.component.ts","ng://@taiga-ui/core/components/hints-host/hint-box/hint-box.module.ts","ng://@taiga-ui/core/components/hints-host/hints-host.module.ts","ng://@taiga-ui/core/components/hints-host/taiga-ui-core-components-hints-host.ts"],"sourcesContent":["import {AnimationOptions} from '@angular/animations';\nimport {ChangeDetectionStrategy, Component, ElementRef, Inject} from '@angular/core';\nimport {AbstractTuiHint} from '@taiga-ui/core/abstract';\nimport {tuiFadeIn} from '@taiga-ui/core/animations';\nimport {TuiHintDirective} from '@taiga-ui/core/directives/hint';\nimport {TuiHintService} from '@taiga-ui/core/services';\nimport {TUI_ANIMATION_OPTIONS} from '@taiga-ui/core/tokens';\n\n@Component({\n selector: 'tui-hints-host',\n templateUrl: './hints-host.template.html',\n styleUrls: ['./hints-host.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [tuiFadeIn],\n host: {\n 'aria-live': 'polite',\n },\n})\nexport class TuiHintsHostComponent {\n readonly animation = {\n value: '',\n ...this.options,\n } as const;\n\n constructor(\n @Inject(TUI_ANIMATION_OPTIONS) private readonly options: AnimationOptions,\n @Inject(ElementRef) private readonly elementRef: ElementRef<HTMLElement>,\n @Inject(TuiHintService) readonly hints$: TuiHintService,\n ) {}\n\n get clientRect(): ClientRect {\n return this.elementRef.nativeElement.getBoundingClientRect();\n }\n\n onHovered(hovered: boolean, directive: AbstractTuiHint) {\n if (directive instanceof TuiHintDirective) {\n directive.componentHovered$.next(hovered);\n }\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostBinding,\n Inject,\n Input,\n NgZone,\n ViewChild,\n} from '@angular/core';\nimport {ANIMATION_FRAME, WINDOW} from '@ng-web-apis/common';\nimport {px, TUI_IS_MOBILE, TuiDestroyService, tuiPure, tuiZonefree} from '@taiga-ui/cdk';\nimport {AbstractTuiHint} from '@taiga-ui/core/abstract';\nimport {TuiPointerHintDirective} from '@taiga-ui/core/directives/pointer-hint';\nimport {TuiDirection, TuiHintModeT} from '@taiga-ui/core/types';\nimport {Observable} from 'rxjs';\nimport {takeUntil} from 'rxjs/operators';\n\nimport {TuiHintsHostComponent} from '../hints-host.component';\n\nconst SPACE = 8;\nconst BORDER_WIDTH = 1;\nconst LEFT_PADDING = 16;\nconst TOP_PADDING = 12;\nconst ARROW_SIZE = 8;\nconst ARROW_OFFSET = 16;\nconst ARROWHEAD_OFFSET = ARROW_OFFSET + (ARROW_SIZE * Math.sqrt(2)) / 2;\nconst reverseDirectionsVertical: {[key in TuiDirection]: TuiDirection} = {\n 'top-left': 'bottom-left',\n 'top-right': 'bottom-right',\n 'bottom-left': 'top-left',\n 'bottom-right': 'top-right',\n left: 'right',\n right: 'left',\n};\nconst reverseDirectionsHorizontal: {[key in TuiDirection]: TuiDirection} = {\n 'top-left': 'top-right',\n 'top-right': 'top-left',\n 'bottom-left': 'bottom-right',\n 'bottom-right': 'bottom-left',\n left: 'right',\n right: 'left',\n};\n\n// TODO: consider abstracting UI and move to CDK, split hint and overflow\n// Ambient type cannot be used without dynamic https://github.com/angular/angular/issues/23395\n// @dynamic\n@Component({\n selector: 'tui-hint-box[hint]',\n templateUrl: './hint-box.template.html',\n styleUrls: ['./hint-box.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [TuiDestroyService],\n})\nexport class TuiHintBoxComponent {\n @Input()\n hint!: AbstractTuiHint;\n\n @ViewChild('arrow')\n private readonly arrow?: ElementRef<HTMLElement>;\n\n constructor(\n @Inject(ANIMATION_FRAME) animationFrame$: Observable<number>,\n @Inject(TuiDestroyService) destroy$: Observable<void>,\n @Inject(NgZone) ngZone: NgZone,\n @Inject(ElementRef) private readonly elementRef: ElementRef<HTMLElement>,\n @Inject(WINDOW) private readonly windowRef: Window,\n @Inject(TUI_IS_MOBILE) readonly isMobile: boolean,\n @Inject(TuiHintsHostComponent)\n private readonly hintsHost: TuiHintsHostComponent,\n ) {\n animationFrame$.pipe(tuiZonefree(ngZone), takeUntil(destroy$)).subscribe(() => {\n this.calculatePosition();\n });\n }\n\n @tuiPure\n @HostBinding('class._untouchable')\n get isUntouchable(): boolean {\n return this.hint instanceof TuiPointerHintDirective;\n }\n\n @HostBinding('attr.data-mode')\n get mode(): TuiHintModeT | null {\n return this.hint.mode;\n }\n\n /**\n * Calculates wrapper position.\n * Styles are set directly to avoid visual shake of element\n */\n private calculatePosition() {\n if (this.mode !== 'overflow') {\n this.calculateCoordinates();\n } else {\n this.setOverflowStyles();\n }\n }\n\n private calculateCoordinates() {\n if (this.isMobile) {\n this.calculateMobileCoordinates();\n\n return;\n }\n\n const hostRect = this.hint.getElementClientRect();\n const portalRect = this.hintsHost.clientRect;\n const tooltip = this.elementRef.nativeElement;\n const {style} = tooltip;\n const tooltipRect = tooltip.getBoundingClientRect();\n const isHostLong = hostRect.width > ARROWHEAD_OFFSET * 2;\n const directions: TuiDirection[] = [\n 'left',\n 'right',\n 'bottom-left',\n 'bottom-right',\n 'top-left',\n 'top-right',\n ];\n\n let top = 0;\n let left = 0;\n let {direction} = this.hint;\n\n const horizontalTop =\n hostRect.top + hostRect.height / 2 - tooltipRect.height / 2 - portalRect.top;\n const horizontalLeft =\n hostRect.left - tooltipRect.width - SPACE - portalRect.left;\n const horizontalRight = hostRect.left + hostRect.width + SPACE - portalRect.left;\n const verticalBottom = hostRect.bottom + SPACE - portalRect.top;\n const verticalTop = hostRect.top - tooltipRect.height - SPACE - portalRect.top;\n const verticalRight = isHostLong\n ? hostRect.left - portalRect.left\n : hostRect.left + hostRect.width / 2 - ARROWHEAD_OFFSET - portalRect.left;\n const verticalLeft = isHostLong\n ? hostRect.left - tooltipRect.width + hostRect.width - portalRect.left\n : hostRect.left -\n tooltipRect.width +\n hostRect.width / 2 +\n ARROWHEAD_OFFSET -\n portalRect.left;\n\n directions.splice(directions.indexOf(direction), 1);\n\n while (true) {\n switch (direction) {\n case 'left':\n top = horizontalTop;\n left = horizontalLeft;\n break;\n case 'right':\n top = horizontalTop;\n left = horizontalRight;\n break;\n case 'top-right':\n top = verticalTop;\n left = verticalRight;\n break;\n case 'top-left':\n top = verticalTop;\n left = verticalLeft;\n break;\n case 'bottom-right':\n top = verticalBottom;\n left = verticalRight;\n break;\n case 'bottom-left':\n top = verticalBottom;\n left = verticalLeft;\n break;\n }\n\n const verticalFit =\n top + portalRect.top > SPACE &&\n top + tooltipRect.height + SPACE + portalRect.top <\n this.windowRef.innerHeight;\n const horizontalFit =\n left > SPACE &&\n left + tooltipRect.width + SPACE + portalRect.left < portalRect.width;\n\n if (directions.length === 0 || (verticalFit && horizontalFit)) {\n break;\n }\n\n direction = verticalFit\n ? reverseDirectionsHorizontal[direction]\n : reverseDirectionsVertical[direction];\n direction =\n directions.splice(directions.indexOf(direction), 1)[0] || direction;\n }\n\n style.top = px(top);\n style.left = px(left);\n\n tooltip.setAttribute('data-tui-host-direction', direction);\n }\n\n private calculateMobileCoordinates() {\n const hostRect = this.hint.getElementClientRect();\n const portalRect = this.hintsHost.clientRect;\n const tooltip = this.elementRef.nativeElement;\n const {style} = tooltip;\n const tooltipRect = tooltip.getBoundingClientRect();\n const verticalTop = hostRect.top - tooltipRect.height - SPACE - portalRect.top;\n const verticalBottom = hostRect.bottom + SPACE - portalRect.top;\n const verticalTopFit =\n verticalTop + portalRect.top > SPACE &&\n hostRect.top < this.windowRef.innerHeight;\n const verticalBottomFit =\n hostRect.bottom > 0 &&\n hostRect.bottom + 2 * SPACE + tooltipRect.height < this.windowRef.innerHeight;\n const direction =\n (this.hint.direction.includes('top') && verticalTopFit) || !verticalBottomFit\n ? 'top'\n : 'bottom';\n const attemptedLeft =\n portalRect.left + hostRect.left + hostRect.width / 2 - tooltipRect.width / 2;\n const left = Math.max(\n attemptedLeft + tooltipRect.width + SPACE > portalRect.right\n ? portalRect.right - SPACE - tooltipRect.width\n : attemptedLeft,\n SPACE * 2,\n );\n\n style.left = px(left);\n style.top = direction === 'top' ? px(verticalTop) : px(verticalBottom);\n\n if (this.arrow) {\n this.arrow.nativeElement.style.left = px(\n hostRect.left <= SPACE * 2 && hostRect.width > ARROW_OFFSET * 2\n ? ARROW_OFFSET\n : hostRect.left + hostRect.width / 2 - left - ARROW_SIZE / 2,\n );\n }\n\n tooltip.setAttribute('data-tui-host-direction', direction);\n }\n\n private setOverflowStyles() {\n const hostRect = this.hint.getElementClientRect();\n const {style} = this.elementRef.nativeElement;\n\n style.top = px(hostRect.top - window.innerHeight - TOP_PADDING - BORDER_WIDTH);\n style.left = px(hostRect.left - LEFT_PADDING - BORDER_WIDTH);\n style.width = px(hostRect.width + LEFT_PADDING * 2 + BORDER_WIDTH * 2);\n }\n}\n","import {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\n\nimport {TuiHintBoxComponent} from './hint-box.component';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [TuiHintBoxComponent],\n exports: [TuiHintBoxComponent],\n})\nexport class TuiHintBoxModule {}\n","import {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {TuiActiveZoneModule, TuiHoveredModule} from '@taiga-ui/cdk';\nimport {PolymorpheusModule} from '@tinkoff/ng-polymorpheus';\n\nimport {TuiHintBoxModule} from './hint-box/hint-box.module';\nimport {TuiHintsHostComponent} from './hints-host.component';\n\n@NgModule({\n imports: [\n CommonModule,\n PolymorpheusModule,\n TuiHoveredModule,\n TuiHintBoxModule,\n TuiActiveZoneModule,\n ],\n declarations: [TuiHintsHostComponent],\n exports: [TuiHintsHostComponent],\n entryComponents: [TuiHintsHostComponent],\n})\nexport class TuiHintsHostModule {}\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-hints-host.js","sources":["ng://@taiga-ui/core/components/hints-host/hints-host.component.ts","ng://@taiga-ui/core/components/hints-host/hint-box/hint-box.component.ts","ng://@taiga-ui/core/components/hints-host/hint-box/hint-box.module.ts","ng://@taiga-ui/core/components/hints-host/hints-host.module.ts","ng://@taiga-ui/core/components/hints-host/taiga-ui-core-components-hints-host.ts"],"sourcesContent":["import {AnimationOptions} from '@angular/animations';\nimport {ChangeDetectionStrategy, Component, ElementRef, Inject} from '@angular/core';\nimport {AbstractTuiHint} from '@taiga-ui/core/abstract';\nimport {tuiFadeIn} from '@taiga-ui/core/animations';\nimport {TuiHintDirective} from '@taiga-ui/core/directives/hint';\nimport {TuiHintService} from '@taiga-ui/core/services';\nimport {TUI_ANIMATION_OPTIONS} from '@taiga-ui/core/tokens';\n\n@Component({\n selector: 'tui-hints-host',\n templateUrl: './hints-host.template.html',\n styleUrls: ['./hints-host.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [tuiFadeIn],\n host: {\n 'aria-live': 'polite',\n },\n})\nexport class TuiHintsHostComponent {\n readonly animation = {\n value: '',\n ...this.options,\n } as const;\n\n constructor(\n @Inject(TUI_ANIMATION_OPTIONS) private readonly options: AnimationOptions,\n @Inject(ElementRef) private readonly elementRef: ElementRef<HTMLElement>,\n @Inject(TuiHintService) readonly hints$: TuiHintService,\n ) {}\n\n get clientRect(): ClientRect {\n return this.elementRef.nativeElement.getBoundingClientRect();\n }\n\n onHovered(hovered: boolean, directive: AbstractTuiHint) {\n if (directive instanceof TuiHintDirective) {\n directive.componentHovered$.next(hovered);\n }\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostBinding,\n Inject,\n Input,\n NgZone,\n ViewChild,\n} from '@angular/core';\nimport {ANIMATION_FRAME, WINDOW} from '@ng-web-apis/common';\nimport {px, TuiDestroyService, tuiPure, tuiZonefree} from '@taiga-ui/cdk';\nimport {AbstractTuiHint} from '@taiga-ui/core/abstract';\nimport {TuiPointerHintDirective} from '@taiga-ui/core/directives/pointer-hint';\nimport {TuiMedia} from '@taiga-ui/core/interfaces';\nimport {TUI_MEDIA} from '@taiga-ui/core/tokens';\nimport {TuiDirection, TuiHintModeT} from '@taiga-ui/core/types';\nimport {Observable} from 'rxjs';\nimport {takeUntil} from 'rxjs/operators';\n\nimport {TuiHintsHostComponent} from '../hints-host.component';\n\nconst SPACE = 8;\nconst BORDER_WIDTH = 1;\nconst LEFT_PADDING = 16;\nconst TOP_PADDING = 12;\nconst ARROW_SIZE = 8;\nconst ARROW_OFFSET = 16;\nconst ARROWHEAD_OFFSET = ARROW_OFFSET + (ARROW_SIZE * Math.sqrt(2)) / 2;\nconst reverseDirectionsVertical: {[key in TuiDirection]: TuiDirection} = {\n 'top-left': 'bottom-left',\n 'top-right': 'bottom-right',\n 'bottom-left': 'top-left',\n 'bottom-right': 'top-right',\n left: 'right',\n right: 'left',\n};\nconst reverseDirectionsHorizontal: {[key in TuiDirection]: TuiDirection} = {\n 'top-left': 'top-right',\n 'top-right': 'top-left',\n 'bottom-left': 'bottom-right',\n 'bottom-right': 'bottom-left',\n left: 'right',\n right: 'left',\n};\n\n// TODO: consider abstracting UI and move to CDK, split hint and overflow\n// Ambient type cannot be used without dynamic https://github.com/angular/angular/issues/23395\n// @dynamic\n@Component({\n selector: 'tui-hint-box[hint]',\n templateUrl: './hint-box.template.html',\n styleUrls: ['./hint-box.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [TuiDestroyService],\n})\nexport class TuiHintBoxComponent {\n @Input()\n hint!: AbstractTuiHint;\n\n @ViewChild('arrow')\n private readonly arrow?: ElementRef<HTMLElement>;\n\n constructor(\n @Inject(ANIMATION_FRAME) animationFrame$: Observable<number>,\n @Inject(TuiDestroyService) destroy$: Observable<void>,\n @Inject(NgZone) ngZone: NgZone,\n @Inject(ElementRef) private readonly elementRef: ElementRef<HTMLElement>,\n @Inject(WINDOW) private readonly windowRef: Window,\n @Inject(TUI_MEDIA) private readonly media: TuiMedia,\n @Inject(TuiHintsHostComponent)\n private readonly hintsHost: TuiHintsHostComponent,\n ) {\n animationFrame$.pipe(tuiZonefree(ngZone), takeUntil(destroy$)).subscribe(() => {\n this.calculatePosition();\n });\n }\n\n @tuiPure\n @HostBinding('class._untouchable')\n get isUntouchable(): boolean {\n return this.hint instanceof TuiPointerHintDirective;\n }\n\n @HostBinding('attr.data-mode')\n get mode(): TuiHintModeT | null {\n return this.hint.mode;\n }\n\n get isMobile(): boolean {\n return this.windowRef.innerWidth <= this.media.mobile;\n }\n\n /**\n * Calculates wrapper position.\n * Styles are set directly to avoid visual shake of element\n */\n private calculatePosition() {\n if (this.mode !== 'overflow') {\n this.calculateCoordinates();\n } else {\n this.setOverflowStyles();\n }\n }\n\n private calculateCoordinates() {\n if (this.isMobile) {\n this.calculateMobileCoordinates();\n\n return;\n }\n\n const hostRect = this.hint.getElementClientRect();\n const portalRect = this.hintsHost.clientRect;\n const tooltip = this.elementRef.nativeElement;\n const {style} = tooltip;\n const tooltipRect = tooltip.getBoundingClientRect();\n const isHostLong = hostRect.width > ARROWHEAD_OFFSET * 2;\n const directions: TuiDirection[] = [\n 'left',\n 'right',\n 'bottom-left',\n 'bottom-right',\n 'top-left',\n 'top-right',\n ];\n\n let top = 0;\n let left = 0;\n let {direction} = this.hint;\n\n const horizontalTop =\n hostRect.top + hostRect.height / 2 - tooltipRect.height / 2 - portalRect.top;\n const horizontalLeft =\n hostRect.left - tooltipRect.width - SPACE - portalRect.left;\n const horizontalRight = hostRect.left + hostRect.width + SPACE - portalRect.left;\n const verticalBottom = hostRect.bottom + SPACE - portalRect.top;\n const verticalTop = hostRect.top - tooltipRect.height - SPACE - portalRect.top;\n const verticalRight = isHostLong\n ? hostRect.left - portalRect.left\n : hostRect.left + hostRect.width / 2 - ARROWHEAD_OFFSET - portalRect.left;\n const verticalLeft = isHostLong\n ? hostRect.left - tooltipRect.width + hostRect.width - portalRect.left\n : hostRect.left -\n tooltipRect.width +\n hostRect.width / 2 +\n ARROWHEAD_OFFSET -\n portalRect.left;\n\n directions.splice(directions.indexOf(direction), 1);\n\n while (true) {\n switch (direction) {\n case 'left':\n top = horizontalTop;\n left = horizontalLeft;\n break;\n case 'right':\n top = horizontalTop;\n left = horizontalRight;\n break;\n case 'top-right':\n top = verticalTop;\n left = verticalRight;\n break;\n case 'top-left':\n top = verticalTop;\n left = verticalLeft;\n break;\n case 'bottom-right':\n top = verticalBottom;\n left = verticalRight;\n break;\n case 'bottom-left':\n top = verticalBottom;\n left = verticalLeft;\n break;\n }\n\n const verticalFit =\n top + portalRect.top > SPACE &&\n top + tooltipRect.height + SPACE + portalRect.top <\n this.windowRef.innerHeight;\n const horizontalFit =\n left > SPACE &&\n left + tooltipRect.width + SPACE + portalRect.left < portalRect.width;\n\n if (directions.length === 0 || (verticalFit && horizontalFit)) {\n break;\n }\n\n direction = verticalFit\n ? reverseDirectionsHorizontal[direction]\n : reverseDirectionsVertical[direction];\n direction =\n directions.splice(directions.indexOf(direction), 1)[0] || direction;\n }\n\n style.top = px(top);\n style.left = px(left);\n\n tooltip.setAttribute('data-tui-host-direction', direction);\n }\n\n private calculateMobileCoordinates() {\n const hostRect = this.hint.getElementClientRect();\n const portalRect = this.hintsHost.clientRect;\n const tooltip = this.elementRef.nativeElement;\n const {style} = tooltip;\n const tooltipRect = tooltip.getBoundingClientRect();\n const verticalTop = hostRect.top - tooltipRect.height - SPACE - portalRect.top;\n const verticalBottom = hostRect.bottom + SPACE - portalRect.top;\n const verticalTopFit =\n verticalTop + portalRect.top > SPACE &&\n hostRect.top < this.windowRef.innerHeight;\n const verticalBottomFit =\n hostRect.bottom > 0 &&\n hostRect.bottom + 2 * SPACE + tooltipRect.height < this.windowRef.innerHeight;\n const direction =\n (this.hint.direction.includes('top') && verticalTopFit) || !verticalBottomFit\n ? 'top'\n : 'bottom';\n const attemptedLeft =\n portalRect.left + hostRect.left + hostRect.width / 2 - tooltipRect.width / 2;\n const left = Math.max(\n attemptedLeft + tooltipRect.width + SPACE > portalRect.right\n ? portalRect.right - SPACE - tooltipRect.width\n : attemptedLeft,\n SPACE * 2,\n );\n\n style.left = px(left);\n style.top = direction === 'top' ? px(verticalTop) : px(verticalBottom);\n\n if (this.arrow) {\n this.arrow.nativeElement.style.left = px(\n hostRect.left <= SPACE * 2 && hostRect.width > ARROW_OFFSET * 2\n ? ARROW_OFFSET\n : hostRect.left + hostRect.width / 2 - left - ARROW_SIZE / 2,\n );\n }\n\n tooltip.setAttribute('data-tui-host-direction', direction);\n }\n\n private setOverflowStyles() {\n const hostRect = this.hint.getElementClientRect();\n const {style} = this.elementRef.nativeElement;\n\n style.top = px(hostRect.top - window.innerHeight - TOP_PADDING - BORDER_WIDTH);\n style.left = px(hostRect.left - LEFT_PADDING - BORDER_WIDTH);\n style.width = px(hostRect.width + LEFT_PADDING * 2 + BORDER_WIDTH * 2);\n }\n}\n","import {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\n\nimport {TuiHintBoxComponent} from './hint-box.component';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [TuiHintBoxComponent],\n exports: [TuiHintBoxComponent],\n})\nexport class TuiHintBoxModule {}\n","import {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {TuiActiveZoneModule, TuiHoveredModule} from '@taiga-ui/cdk';\nimport {PolymorpheusModule} from '@tinkoff/ng-polymorpheus';\n\nimport {TuiHintBoxModule} from './hint-box/hint-box.module';\nimport {TuiHintsHostComponent} from './hints-host.component';\n\n@NgModule({\n imports: [\n CommonModule,\n PolymorpheusModule,\n TuiHoveredModule,\n TuiHintBoxModule,\n TuiActiveZoneModule,\n ],\n declarations: [TuiHintsHostComponent],\n exports: [TuiHintsHostComponent],\n entryComponents: [TuiHintsHostComponent],\n})\nexport class TuiHintsHostModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,9 +1,10 @@
1
1
  import { __decorate, __param } from 'tslib';
2
2
  import { ElementRef, Inject, Input, HostBinding, Component, forwardRef, ChangeDetectionStrategy, NgModule } from '@angular/core';
3
- import { isNativeFocused, TuiFocusVisibleService, tuiDefaultProp, TUI_FOCUSABLE_ITEM_ACCESSOR, TuiDestroyService } from '@taiga-ui/cdk';
3
+ import { typedFromEvent, isNativeFocused, TuiFocusVisibleService, tuiDefaultProp, TUI_FOCUSABLE_ITEM_ACCESSOR, TuiDestroyService } from '@taiga-ui/cdk';
4
4
  import { MODE_PROVIDER } from '@taiga-ui/core/providers';
5
5
  import { TUI_MODE } from '@taiga-ui/core/tokens';
6
- import { Observable } from 'rxjs';
6
+ import { merge, Observable } from 'rxjs';
7
+ import { mapTo } from 'rxjs/operators';
7
8
  import { CommonModule } from '@angular/common';
8
9
  import { TuiSvgModule } from '@taiga-ui/core/components/svg';
9
10
 
@@ -19,6 +20,7 @@ let TuiLinkComponent = TuiLinkComponent_1 = class TuiLinkComponent {
19
20
  this.iconRotated = false;
20
21
  this.mode = null;
21
22
  this.focusVisible = false;
23
+ this.focusedChange = merge(typedFromEvent(this.elementRef.nativeElement, 'focusin').pipe(mapTo(true)), typedFromEvent(this.elementRef.nativeElement, 'focusout').pipe(mapTo(false)));
22
24
  focusVisible$.subscribe(visible => {
23
25
  this.focusVisible = visible;
24
26
  });
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-core-components-link.js","sources":["ng://@taiga-ui/core/components/link/link.component.ts","ng://@taiga-ui/core/components/link/link.module.ts","ng://@taiga-ui/core/components/link/taiga-ui-core-components-link.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n forwardRef,\n HostBinding,\n Inject,\n Input,\n} from '@angular/core';\nimport {\n isNativeFocused,\n TUI_FOCUSABLE_ITEM_ACCESSOR,\n tuiDefaultProp,\n TuiDestroyService,\n TuiFocusableElementAccessor,\n TuiFocusVisibleService,\n TuiNativeFocusableElement,\n} from '@taiga-ui/cdk';\nimport {MODE_PROVIDER} from '@taiga-ui/core/providers';\nimport {TUI_MODE} from '@taiga-ui/core/tokens';\nimport {TuiBrightness, TuiHorizontalDirection} from '@taiga-ui/core/types';\nimport {Observable} from 'rxjs';\n\n// @bad TODO: Think about extending Interactive\n@Component({\n selector: 'a[tuiLink], button[tuiLink]',\n templateUrl: './link.template.html',\n styleUrls: ['./link.style.less'],\n providers: [\n {\n provide: TUI_FOCUSABLE_ITEM_ACCESSOR,\n useExisting: forwardRef(() => TuiLinkComponent),\n },\n TuiFocusVisibleService,\n TuiDestroyService,\n MODE_PROVIDER,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n exportAs: 'tuiLink',\n host: {\n '($.data-mode.attr)': 'mode$',\n },\n})\nexport class TuiLinkComponent implements TuiFocusableElementAccessor {\n @Input()\n @HostBinding('class._pseudo')\n @tuiDefaultProp()\n pseudo = false;\n\n @Input()\n @tuiDefaultProp()\n icon: string | null = null;\n\n @Input()\n @tuiDefaultProp()\n iconAlign: TuiHorizontalDirection = 'right';\n\n @Input()\n @HostBinding('class._icon-rotated')\n @tuiDefaultProp()\n iconRotated = false;\n\n @Input()\n @HostBinding('attr.data-host-mode')\n @tuiDefaultProp()\n mode: 'positive' | 'negative' | null = null;\n\n @HostBinding('class._focus-visible')\n focusVisible = false;\n\n constructor(\n @Inject(ElementRef)\n private readonly elementRef: ElementRef<TuiNativeFocusableElement>,\n @Inject(TUI_MODE) readonly mode$: Observable<TuiBrightness | null>,\n @Inject(TuiFocusVisibleService)\n focusVisible$: TuiFocusVisibleService,\n ) {\n focusVisible$.subscribe(visible => {\n this.focusVisible = visible;\n });\n }\n\n get nativeFocusableElement(): TuiNativeFocusableElement {\n return this.elementRef.nativeElement;\n }\n\n get focused(): boolean {\n return isNativeFocused(this.nativeFocusableElement);\n }\n\n get hasIcon(): boolean {\n return this.icon !== null;\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","import {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {TuiSvgModule} from '@taiga-ui/core/components/svg';\n\nimport {TuiLinkComponent} from './link.component';\n\n@NgModule({\n imports: [CommonModule, TuiSvgModule],\n declarations: [TuiLinkComponent],\n exports: [TuiLinkComponent],\n})\nexport class TuiLinkModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;AAuBA;IAoBa,gBAAgB,wBAA7B,MAAa,gBAAgB;IA2BzB,YAEqB,UAAiD,EACvC,KAAuC,EAElE,aAAqC;QAHpB,eAAU,GAAV,UAAU,CAAuC;QACvC,UAAK,GAAL,KAAK,CAAkC;QA1BtE,WAAM,GAAG,KAAK,CAAC;QAIf,SAAI,GAAkB,IAAI,CAAC;QAI3B,cAAS,GAA2B,OAAO,CAAC;QAK5C,gBAAW,GAAG,KAAK,CAAC;QAKpB,SAAI,GAAmC,IAAI,CAAC;QAG5C,iBAAY,GAAG,KAAK,CAAC;QASjB,aAAa,CAAC,SAAS,CAAC,OAAO;YAC3B,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC;SAC/B,CAAC,CAAC;KACN;IAED,IAAI,sBAAsB;QACtB,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;KACxC;IAED,IAAI,OAAO;QACP,OAAO,eAAe,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;KACvD;IAED,IAAI,OAAO;QACP,OAAO,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC;KAC7B;IAED,IAAI,aAAa;QACb,OAAO,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,KAAK,MAAM,CAAC;KACpD;IAED,IAAI,cAAc;QACd,OAAO,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,KAAK,OAAO,CAAC;KACrD;EACJ;;YA7BoC,UAAU,uBADtC,MAAM,SAAC,UAAU;YAEgB,UAAU,uBAA3C,MAAM,SAAC,QAAQ;YAED,sBAAsB,uBADpC,MAAM,SAAC,sBAAsB;;AA3BlC;IAHC,KAAK,EAAE;IACP,WAAW,CAAC,eAAe,CAAC;IAC5B,cAAc,EAAE;gDACF;AAIf;IAFC,KAAK,EAAE;IACP,cAAc,EAAE;8CACU;AAI3B;IAFC,KAAK,EAAE;IACP,cAAc,EAAE;mDAC2B;AAK5C;IAHC,KAAK,EAAE;IACP,WAAW,CAAC,qBAAqB,CAAC;IAClC,cAAc,EAAE;qDACG;AAKpB;IAHC,KAAK,EAAE;IACP,WAAW,CAAC,qBAAqB,CAAC;IAClC,cAAc,EAAE;8CAC2B;AAG5C;IADC,WAAW,CAAC,sBAAsB,CAAC;sDACf;AAzBZ,gBAAgB;IAnB5B,SAAS,CAAC;QACP,QAAQ,EAAE,6BAA6B;QACvC,0PAAmC;QAEnC,SAAS,EAAE;YACP;gBACI,OAAO,EAAE,2BAA2B;gBACpC,WAAW,EAAE,UAAU,CAAC,MAAM,kBAAgB,CAAC;aAClD;YACD,sBAAsB;YACtB,iBAAiB;YACjB,aAAa;SAChB;QACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;QAC/C,QAAQ,EAAE,SAAS;QACnB,IAAI,EAAE;YACF,oBAAoB,EAAE,OAAO;SAChC;;KACJ,CAAC;IA6BO,WAAA,MAAM,CAAC,UAAU,CAAC,CAAA;IAElB,WAAA,MAAM,CAAC,QAAQ,CAAC,CAAA;IAChB,WAAA,MAAM,CAAC,sBAAsB,CAAC,CAAA;GA/B1B,gBAAgB,CA0D5B;;IC1FY,aAAa,GAA1B,MAAa,aAAa;EAAG;AAAhB,aAAa;IALzB,QAAQ,CAAC;QACN,OAAO,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC;QACrC,YAAY,EAAE,CAAC,gBAAgB,CAAC;QAChC,OAAO,EAAE,CAAC,gBAAgB,CAAC;KAC9B,CAAC;GACW,aAAa,CAAG;;ACX7B;;;;;;"}
1
+ {"version":3,"file":"taiga-ui-core-components-link.js","sources":["ng://@taiga-ui/core/components/link/link.component.ts","ng://@taiga-ui/core/components/link/link.module.ts","ng://@taiga-ui/core/components/link/taiga-ui-core-components-link.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n forwardRef,\n HostBinding,\n Inject,\n Input,\n} from '@angular/core';\nimport {\n isNativeFocused,\n TUI_FOCUSABLE_ITEM_ACCESSOR,\n tuiDefaultProp,\n TuiDestroyService,\n TuiFocusableElementAccessor,\n TuiFocusVisibleService,\n TuiNativeFocusableElement,\n typedFromEvent,\n} from '@taiga-ui/cdk';\nimport {MODE_PROVIDER} from '@taiga-ui/core/providers';\nimport {TUI_MODE} from '@taiga-ui/core/tokens';\nimport {TuiBrightness, TuiHorizontalDirection} from '@taiga-ui/core/types';\nimport {merge, Observable} from 'rxjs';\nimport {mapTo} from 'rxjs/operators';\n\n// @bad TODO: Think about extending Interactive\n@Component({\n selector: 'a[tuiLink], button[tuiLink]',\n templateUrl: './link.template.html',\n styleUrls: ['./link.style.less'],\n providers: [\n {\n provide: TUI_FOCUSABLE_ITEM_ACCESSOR,\n useExisting: forwardRef(() => TuiLinkComponent),\n },\n TuiFocusVisibleService,\n TuiDestroyService,\n MODE_PROVIDER,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n exportAs: 'tuiLink',\n host: {\n '($.data-mode.attr)': 'mode$',\n },\n})\nexport class TuiLinkComponent implements TuiFocusableElementAccessor {\n @Input()\n @HostBinding('class._pseudo')\n @tuiDefaultProp()\n pseudo = false;\n\n @Input()\n @tuiDefaultProp()\n icon: string | null = null;\n\n @Input()\n @tuiDefaultProp()\n iconAlign: TuiHorizontalDirection = 'right';\n\n @Input()\n @HostBinding('class._icon-rotated')\n @tuiDefaultProp()\n iconRotated = false;\n\n @Input()\n @HostBinding('attr.data-host-mode')\n @tuiDefaultProp()\n mode: 'positive' | 'negative' | null = null;\n\n @HostBinding('class._focus-visible')\n focusVisible = false;\n\n readonly focusedChange = merge(\n typedFromEvent(this.elementRef.nativeElement, 'focusin').pipe(mapTo(true)),\n typedFromEvent(this.elementRef.nativeElement, 'focusout').pipe(mapTo(false)),\n );\n\n constructor(\n @Inject(ElementRef)\n private readonly elementRef: ElementRef<TuiNativeFocusableElement>,\n @Inject(TUI_MODE) readonly mode$: Observable<TuiBrightness | null>,\n @Inject(TuiFocusVisibleService)\n focusVisible$: TuiFocusVisibleService,\n ) {\n focusVisible$.subscribe(visible => {\n this.focusVisible = visible;\n });\n }\n\n get nativeFocusableElement(): TuiNativeFocusableElement {\n return this.elementRef.nativeElement;\n }\n\n get focused(): boolean {\n return isNativeFocused(this.nativeFocusableElement);\n }\n\n get hasIcon(): boolean {\n return this.icon !== null;\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","import {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {TuiSvgModule} from '@taiga-ui/core/components/svg';\n\nimport {TuiLinkComponent} from './link.component';\n\n@NgModule({\n imports: [CommonModule, TuiSvgModule],\n declarations: [TuiLinkComponent],\n exports: [TuiLinkComponent],\n})\nexport class TuiLinkModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -63,7 +63,7 @@ const TUI_LAST_PUNCTUATION_MARK_REGEXP = /[.,\\/#!$%\\^&\\*;:{}=\\-_\`~()]$/;
63
63
  const TUI_LATIN_REGEXP = /[A-z]/;
64
64
  const TUI_LATIN_AND_NUMBERS_REGEXP = /[A-z|0-9]/;
65
65
 
66
- const VERSION = '2.25.0';
66
+ const VERSION = '2.26.0';
67
67
 
68
68
  /**
69
69
  * Generated bundle index. Do not edit.
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-core-constants.js","sources":["ng://@taiga-ui/core/constants/absolute-box-sizes.ts","ng://@taiga-ui/core/constants/decimal-symbols.ts","ng://@taiga-ui/core/constants/default-icons-path.ts","ng://@taiga-ui/core/constants/default-marker-handler.ts","ng://@taiga-ui/core/constants/editing-keys.ts","ng://@taiga-ui/core/constants/events.ts","ng://@taiga-ui/core/constants/mask-caret-trap.ts","ng://@taiga-ui/core/constants/media.ts","ng://@taiga-ui/core/constants/regexp.ts","ng://@taiga-ui/core/constants/version.ts","ng://@taiga-ui/core/constants/taiga-ui-core-constants.ts"],"sourcesContent":["export const DEFAULT_MARGIN = 4;\nexport const DEFAULT_MIN_HEIGHT = 80;\nexport const DEFAULT_MAX_HEIGHT = 400;\nexport const DEFAULT_MAX_WIDTH = 600;\n","export const TUI_DECIMAL_SYMBOLS: ReadonlyArray<string> = [',', '.'];\n","import {TuiStringHandler} from '@taiga-ui/cdk';\n\nexport const DEFAULT_ICONS_PATH: TuiStringHandler<string> = name =>\n name.includes('.svg#') ? name : `#${name}`;\n","import {EMPTY_ARRAY} from '@taiga-ui/cdk';\nimport {TuiMarkerHandler} from '@taiga-ui/core/types';\n\nexport const TUI_DEFAULT_MARKER_HANDLER: TuiMarkerHandler = () => EMPTY_ARRAY;\n","export const tuiEditingKeys: readonly string[] = [\n 'Spacebar',\n 'Backspace',\n 'Delete',\n 'ArrowLeft',\n 'ArrowRight',\n 'Left',\n 'Right',\n 'End',\n 'Home',\n];\n","/**\n * An event indicating that async data for expand has finished loading.\n * Dispatch to finish loading states for {@link TuiExpandComponent}.\n */\nexport const TUI_EXPAND_LOADED = 'tui-expand-loaded';\n\n/**\n * An event for scrolling an element into view within {@link TuiScrollbarComponent}.\n */\nexport const TUI_SCROLL_INTO_VIEW = 'tui-scroll-into-view';\n\n/**\n * An event to notify {@link TuiScrollbarComponent} that\n * it should control a nested element.\n */\nexport const TUI_SCROLLABLE = 'tui-scrollable';\n\n/**\n * An event indicating and error during icon loading in {@link TuiSvgComponent}.\n */\nexport const TUI_ICON_ERROR = 'tui-icon-error';\n","export const MASK_CARET_TRAP = '[]';\n","/**\n * Media constants are exact the same as css media breakpoints\n * @deprecated use TUI_MEDIA token\n */\nexport const MEDIA = {\n mobile: 320,\n tablet: 600,\n desktopSmall: 1024,\n desktopLarge: 1280,\n};\n","export const TUI_DIGIT_REGEXP = /\\d/;\nexport const TUI_NON_DIGIT_REGEXP = /\\D/;\nexport const TUI_NON_DIGITS_REGEXP = /\\D+/g;\nexport const TUI_LEADING_ZEROES_REGEXP = /^0+/;\nexport const TUI_LAST_PUNCTUATION_MARK_REGEXP = /[.,\\\\/#!$%\\\\^&\\\\*;:{}=\\\\-_\\`~()]$/;\nexport const TUI_LATIN_REGEXP = /[A-z]/;\nexport const TUI_LATIN_AND_NUMBERS_REGEXP = /[A-z|0-9]/;\n","export const VERSION = '2.25.0';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;MAAa,cAAc,GAAG,EAAE;MACnB,kBAAkB,GAAG,GAAG;MACxB,kBAAkB,GAAG,IAAI;MACzB,iBAAiB,GAAG;;MCHpB,mBAAmB,GAA0B,CAAC,GAAG,EAAE,GAAG;;MCEtD,kBAAkB,GAA6B,IAAI,IAC5D,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,IAAI,IAAI;;MCA/B,0BAA0B,GAAqB,MAAM;;MCHrD,cAAc,GAAsB;IAC7C,UAAU;IACV,WAAW;IACX,QAAQ;IACR,WAAW;IACX,YAAY;IACZ,MAAM;IACN,OAAO;IACP,KAAK;IACL,MAAM;;;ACTV;;;;MAIa,iBAAiB,GAAG,oBAAoB;AAErD;;;MAGa,oBAAoB,GAAG,uBAAuB;AAE3D;;;;MAIa,cAAc,GAAG,iBAAiB;AAE/C;;;MAGa,cAAc,GAAG;;MCpBjB,eAAe,GAAG;;ACA/B;;;;MAIa,KAAK,GAAG;IACjB,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,GAAG;IACX,YAAY,EAAE,IAAI;IAClB,YAAY,EAAE,IAAI;;;MCRT,gBAAgB,GAAG,KAAK;MACxB,oBAAoB,GAAG,KAAK;MAC5B,qBAAqB,GAAG,OAAO;MAC/B,yBAAyB,GAAG,MAAM;MAClC,gCAAgC,GAAG,oCAAoC;MACvE,gBAAgB,GAAG,QAAQ;MAC3B,4BAA4B,GAAG;;MCN/B,OAAO,GAAG;;ACAvB;;;;;;"}
1
+ {"version":3,"file":"taiga-ui-core-constants.js","sources":["ng://@taiga-ui/core/constants/absolute-box-sizes.ts","ng://@taiga-ui/core/constants/decimal-symbols.ts","ng://@taiga-ui/core/constants/default-icons-path.ts","ng://@taiga-ui/core/constants/default-marker-handler.ts","ng://@taiga-ui/core/constants/editing-keys.ts","ng://@taiga-ui/core/constants/events.ts","ng://@taiga-ui/core/constants/mask-caret-trap.ts","ng://@taiga-ui/core/constants/media.ts","ng://@taiga-ui/core/constants/regexp.ts","ng://@taiga-ui/core/constants/version.ts","ng://@taiga-ui/core/constants/taiga-ui-core-constants.ts"],"sourcesContent":["export const DEFAULT_MARGIN = 4;\nexport const DEFAULT_MIN_HEIGHT = 80;\nexport const DEFAULT_MAX_HEIGHT = 400;\nexport const DEFAULT_MAX_WIDTH = 600;\n","export const TUI_DECIMAL_SYMBOLS: ReadonlyArray<string> = [',', '.'];\n","import {TuiStringHandler} from '@taiga-ui/cdk';\n\nexport const DEFAULT_ICONS_PATH: TuiStringHandler<string> = name =>\n name.includes('.svg#') ? name : `#${name}`;\n","import {EMPTY_ARRAY} from '@taiga-ui/cdk';\nimport {TuiMarkerHandler} from '@taiga-ui/core/types';\n\nexport const TUI_DEFAULT_MARKER_HANDLER: TuiMarkerHandler = () => EMPTY_ARRAY;\n","export const tuiEditingKeys: readonly string[] = [\n 'Spacebar',\n 'Backspace',\n 'Delete',\n 'ArrowLeft',\n 'ArrowRight',\n 'Left',\n 'Right',\n 'End',\n 'Home',\n];\n","/**\n * An event indicating that async data for expand has finished loading.\n * Dispatch to finish loading states for {@link TuiExpandComponent}.\n */\nexport const TUI_EXPAND_LOADED = 'tui-expand-loaded';\n\n/**\n * An event for scrolling an element into view within {@link TuiScrollbarComponent}.\n */\nexport const TUI_SCROLL_INTO_VIEW = 'tui-scroll-into-view';\n\n/**\n * An event to notify {@link TuiScrollbarComponent} that\n * it should control a nested element.\n */\nexport const TUI_SCROLLABLE = 'tui-scrollable';\n\n/**\n * An event indicating and error during icon loading in {@link TuiSvgComponent}.\n */\nexport const TUI_ICON_ERROR = 'tui-icon-error';\n","export const MASK_CARET_TRAP = '[]';\n","/**\n * Media constants are exact the same as css media breakpoints\n * @deprecated use TUI_MEDIA token\n */\nexport const MEDIA = {\n mobile: 320,\n tablet: 600,\n desktopSmall: 1024,\n desktopLarge: 1280,\n};\n","export const TUI_DIGIT_REGEXP = /\\d/;\nexport const TUI_NON_DIGIT_REGEXP = /\\D/;\nexport const TUI_NON_DIGITS_REGEXP = /\\D+/g;\nexport const TUI_LEADING_ZEROES_REGEXP = /^0+/;\nexport const TUI_LAST_PUNCTUATION_MARK_REGEXP = /[.,\\\\/#!$%\\\\^&\\\\*;:{}=\\\\-_\\`~()]$/;\nexport const TUI_LATIN_REGEXP = /[A-z]/;\nexport const TUI_LATIN_AND_NUMBERS_REGEXP = /[A-z|0-9]/;\n","export const VERSION = '2.26.0';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;MAAa,cAAc,GAAG,EAAE;MACnB,kBAAkB,GAAG,GAAG;MACxB,kBAAkB,GAAG,IAAI;MACzB,iBAAiB,GAAG;;MCHpB,mBAAmB,GAA0B,CAAC,GAAG,EAAE,GAAG;;MCEtD,kBAAkB,GAA6B,IAAI,IAC5D,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,IAAI,IAAI;;MCA/B,0BAA0B,GAAqB,MAAM;;MCHrD,cAAc,GAAsB;IAC7C,UAAU;IACV,WAAW;IACX,QAAQ;IACR,WAAW;IACX,YAAY;IACZ,MAAM;IACN,OAAO;IACP,KAAK;IACL,MAAM;;;ACTV;;;;MAIa,iBAAiB,GAAG,oBAAoB;AAErD;;;MAGa,oBAAoB,GAAG,uBAAuB;AAE3D;;;;MAIa,cAAc,GAAG,iBAAiB;AAE/C;;;MAGa,cAAc,GAAG;;MCpBjB,eAAe,GAAG;;ACA/B;;;;MAIa,KAAK,GAAG;IACjB,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,GAAG;IACX,YAAY,EAAE,IAAI;IAClB,YAAY,EAAE,IAAI;;;MCRT,gBAAgB,GAAG,KAAK;MACxB,oBAAoB,GAAG,KAAK;MAC5B,qBAAqB,GAAG,OAAO;MAC/B,yBAAyB,GAAG,MAAM;MAClC,gCAAgC,GAAG,oCAAoC;MACvE,gBAAgB,GAAG,QAAQ;MAC3B,4BAA4B,GAAG;;MCN/B,OAAO,GAAG;;ACAvB;;;;;;"}
@@ -1,14 +1,14 @@
1
1
  import { __assign, __decorate, __param } from 'tslib';
2
2
  import { Inject, ElementRef, Component, ChangeDetectionStrategy, NgZone, Input, ViewChild, HostBinding, NgModule } from '@angular/core';
3
3
  import { ANIMATION_FRAME, WINDOW } from '@ng-web-apis/common';
4
- import { tuiZonefree, px, TuiDestroyService, TUI_IS_MOBILE, tuiPure, TuiHoveredModule, TuiActiveZoneModule } from '@taiga-ui/cdk';
4
+ import { tuiZonefree, px, TuiDestroyService, tuiPure, TuiHoveredModule, TuiActiveZoneModule } from '@taiga-ui/cdk';
5
5
  import { TuiPointerHintDirective } from '@taiga-ui/core/directives/pointer-hint';
6
+ import { TUI_ANIMATION_OPTIONS, TUI_MEDIA } from '@taiga-ui/core/tokens';
6
7
  import { Observable } from 'rxjs';
7
8
  import { takeUntil } from 'rxjs/operators';
8
9
  import { tuiFadeIn } from '@taiga-ui/core/animations';
9
10
  import { TuiHintDirective } from '@taiga-ui/core/directives/hint';
10
11
  import { TuiHintService } from '@taiga-ui/core/services';
11
- import { TUI_ANIMATION_OPTIONS } from '@taiga-ui/core/tokens';
12
12
  import { CommonModule } from '@angular/common';
13
13
  import { PolymorpheusModule } from '@tinkoff/ng-polymorpheus';
14
14
 
@@ -81,11 +81,11 @@ var reverseDirectionsHorizontal = {
81
81
  // Ambient type cannot be used without dynamic https://github.com/angular/angular/issues/23395
82
82
  // @dynamic
83
83
  var TuiHintBoxComponent = /** @class */ (function () {
84
- function TuiHintBoxComponent(animationFrame$, destroy$, ngZone, elementRef, windowRef, isMobile, hintsHost) {
84
+ function TuiHintBoxComponent(animationFrame$, destroy$, ngZone, elementRef, windowRef, media, hintsHost) {
85
85
  var _this = this;
86
86
  this.elementRef = elementRef;
87
87
  this.windowRef = windowRef;
88
- this.isMobile = isMobile;
88
+ this.media = media;
89
89
  this.hintsHost = hintsHost;
90
90
  animationFrame$.pipe(tuiZonefree(ngZone), takeUntil(destroy$)).subscribe(function () {
91
91
  _this.calculatePosition();
@@ -105,6 +105,13 @@ var TuiHintBoxComponent = /** @class */ (function () {
105
105
  enumerable: true,
106
106
  configurable: true
107
107
  });
108
+ Object.defineProperty(TuiHintBoxComponent.prototype, "isMobile", {
109
+ get: function () {
110
+ return this.windowRef.innerWidth <= this.media.mobile;
111
+ },
112
+ enumerable: true,
113
+ configurable: true
114
+ });
108
115
  /**
109
116
  * Calculates wrapper position.
110
117
  * Styles are set directly to avoid visual shake of element
@@ -241,7 +248,7 @@ var TuiHintBoxComponent = /** @class */ (function () {
241
248
  { type: NgZone, decorators: [{ type: Inject, args: [NgZone,] }] },
242
249
  { type: ElementRef, decorators: [{ type: Inject, args: [ElementRef,] }] },
243
250
  { type: Window, decorators: [{ type: Inject, args: [WINDOW,] }] },
244
- { type: Boolean, decorators: [{ type: Inject, args: [TUI_IS_MOBILE,] }] },
251
+ { type: undefined, decorators: [{ type: Inject, args: [TUI_MEDIA,] }] },
245
252
  { type: TuiHintsHostComponent, decorators: [{ type: Inject, args: [TuiHintsHostComponent,] }] }
246
253
  ]; };
247
254
  __decorate([
@@ -270,7 +277,7 @@ var TuiHintBoxComponent = /** @class */ (function () {
270
277
  __param(2, Inject(NgZone)),
271
278
  __param(3, Inject(ElementRef)),
272
279
  __param(4, Inject(WINDOW)),
273
- __param(5, Inject(TUI_IS_MOBILE)),
280
+ __param(5, Inject(TUI_MEDIA)),
274
281
  __param(6, Inject(TuiHintsHostComponent))
275
282
  ], TuiHintBoxComponent);
276
283
  return TuiHintBoxComponent;
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-core-components-hints-host.js","sources":["ng://@taiga-ui/core/components/hints-host/hints-host.component.ts","ng://@taiga-ui/core/components/hints-host/hint-box/hint-box.component.ts","ng://@taiga-ui/core/components/hints-host/hint-box/hint-box.module.ts","ng://@taiga-ui/core/components/hints-host/hints-host.module.ts","ng://@taiga-ui/core/components/hints-host/taiga-ui-core-components-hints-host.ts"],"sourcesContent":["import {AnimationOptions} from '@angular/animations';\nimport {ChangeDetectionStrategy, Component, ElementRef, Inject} from '@angular/core';\nimport {AbstractTuiHint} from '@taiga-ui/core/abstract';\nimport {tuiFadeIn} from '@taiga-ui/core/animations';\nimport {TuiHintDirective} from '@taiga-ui/core/directives/hint';\nimport {TuiHintService} from '@taiga-ui/core/services';\nimport {TUI_ANIMATION_OPTIONS} from '@taiga-ui/core/tokens';\n\n@Component({\n selector: 'tui-hints-host',\n templateUrl: './hints-host.template.html',\n styleUrls: ['./hints-host.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [tuiFadeIn],\n host: {\n 'aria-live': 'polite',\n },\n})\nexport class TuiHintsHostComponent {\n readonly animation = {\n value: '',\n ...this.options,\n } as const;\n\n constructor(\n @Inject(TUI_ANIMATION_OPTIONS) private readonly options: AnimationOptions,\n @Inject(ElementRef) private readonly elementRef: ElementRef<HTMLElement>,\n @Inject(TuiHintService) readonly hints$: TuiHintService,\n ) {}\n\n get clientRect(): ClientRect {\n return this.elementRef.nativeElement.getBoundingClientRect();\n }\n\n onHovered(hovered: boolean, directive: AbstractTuiHint) {\n if (directive instanceof TuiHintDirective) {\n directive.componentHovered$.next(hovered);\n }\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostBinding,\n Inject,\n Input,\n NgZone,\n ViewChild,\n} from '@angular/core';\nimport {ANIMATION_FRAME, WINDOW} from '@ng-web-apis/common';\nimport {px, TUI_IS_MOBILE, TuiDestroyService, tuiPure, tuiZonefree} from '@taiga-ui/cdk';\nimport {AbstractTuiHint} from '@taiga-ui/core/abstract';\nimport {TuiPointerHintDirective} from '@taiga-ui/core/directives/pointer-hint';\nimport {TuiDirection, TuiHintModeT} from '@taiga-ui/core/types';\nimport {Observable} from 'rxjs';\nimport {takeUntil} from 'rxjs/operators';\n\nimport {TuiHintsHostComponent} from '../hints-host.component';\n\nconst SPACE = 8;\nconst BORDER_WIDTH = 1;\nconst LEFT_PADDING = 16;\nconst TOP_PADDING = 12;\nconst ARROW_SIZE = 8;\nconst ARROW_OFFSET = 16;\nconst ARROWHEAD_OFFSET = ARROW_OFFSET + (ARROW_SIZE * Math.sqrt(2)) / 2;\nconst reverseDirectionsVertical: {[key in TuiDirection]: TuiDirection} = {\n 'top-left': 'bottom-left',\n 'top-right': 'bottom-right',\n 'bottom-left': 'top-left',\n 'bottom-right': 'top-right',\n left: 'right',\n right: 'left',\n};\nconst reverseDirectionsHorizontal: {[key in TuiDirection]: TuiDirection} = {\n 'top-left': 'top-right',\n 'top-right': 'top-left',\n 'bottom-left': 'bottom-right',\n 'bottom-right': 'bottom-left',\n left: 'right',\n right: 'left',\n};\n\n// TODO: consider abstracting UI and move to CDK, split hint and overflow\n// Ambient type cannot be used without dynamic https://github.com/angular/angular/issues/23395\n// @dynamic\n@Component({\n selector: 'tui-hint-box[hint]',\n templateUrl: './hint-box.template.html',\n styleUrls: ['./hint-box.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [TuiDestroyService],\n})\nexport class TuiHintBoxComponent {\n @Input()\n hint!: AbstractTuiHint;\n\n @ViewChild('arrow')\n private readonly arrow?: ElementRef<HTMLElement>;\n\n constructor(\n @Inject(ANIMATION_FRAME) animationFrame$: Observable<number>,\n @Inject(TuiDestroyService) destroy$: Observable<void>,\n @Inject(NgZone) ngZone: NgZone,\n @Inject(ElementRef) private readonly elementRef: ElementRef<HTMLElement>,\n @Inject(WINDOW) private readonly windowRef: Window,\n @Inject(TUI_IS_MOBILE) readonly isMobile: boolean,\n @Inject(TuiHintsHostComponent)\n private readonly hintsHost: TuiHintsHostComponent,\n ) {\n animationFrame$.pipe(tuiZonefree(ngZone), takeUntil(destroy$)).subscribe(() => {\n this.calculatePosition();\n });\n }\n\n @tuiPure\n @HostBinding('class._untouchable')\n get isUntouchable(): boolean {\n return this.hint instanceof TuiPointerHintDirective;\n }\n\n @HostBinding('attr.data-mode')\n get mode(): TuiHintModeT | null {\n return this.hint.mode;\n }\n\n /**\n * Calculates wrapper position.\n * Styles are set directly to avoid visual shake of element\n */\n private calculatePosition() {\n if (this.mode !== 'overflow') {\n this.calculateCoordinates();\n } else {\n this.setOverflowStyles();\n }\n }\n\n private calculateCoordinates() {\n if (this.isMobile) {\n this.calculateMobileCoordinates();\n\n return;\n }\n\n const hostRect = this.hint.getElementClientRect();\n const portalRect = this.hintsHost.clientRect;\n const tooltip = this.elementRef.nativeElement;\n const {style} = tooltip;\n const tooltipRect = tooltip.getBoundingClientRect();\n const isHostLong = hostRect.width > ARROWHEAD_OFFSET * 2;\n const directions: TuiDirection[] = [\n 'left',\n 'right',\n 'bottom-left',\n 'bottom-right',\n 'top-left',\n 'top-right',\n ];\n\n let top = 0;\n let left = 0;\n let {direction} = this.hint;\n\n const horizontalTop =\n hostRect.top + hostRect.height / 2 - tooltipRect.height / 2 - portalRect.top;\n const horizontalLeft =\n hostRect.left - tooltipRect.width - SPACE - portalRect.left;\n const horizontalRight = hostRect.left + hostRect.width + SPACE - portalRect.left;\n const verticalBottom = hostRect.bottom + SPACE - portalRect.top;\n const verticalTop = hostRect.top - tooltipRect.height - SPACE - portalRect.top;\n const verticalRight = isHostLong\n ? hostRect.left - portalRect.left\n : hostRect.left + hostRect.width / 2 - ARROWHEAD_OFFSET - portalRect.left;\n const verticalLeft = isHostLong\n ? hostRect.left - tooltipRect.width + hostRect.width - portalRect.left\n : hostRect.left -\n tooltipRect.width +\n hostRect.width / 2 +\n ARROWHEAD_OFFSET -\n portalRect.left;\n\n directions.splice(directions.indexOf(direction), 1);\n\n while (true) {\n switch (direction) {\n case 'left':\n top = horizontalTop;\n left = horizontalLeft;\n break;\n case 'right':\n top = horizontalTop;\n left = horizontalRight;\n break;\n case 'top-right':\n top = verticalTop;\n left = verticalRight;\n break;\n case 'top-left':\n top = verticalTop;\n left = verticalLeft;\n break;\n case 'bottom-right':\n top = verticalBottom;\n left = verticalRight;\n break;\n case 'bottom-left':\n top = verticalBottom;\n left = verticalLeft;\n break;\n }\n\n const verticalFit =\n top + portalRect.top > SPACE &&\n top + tooltipRect.height + SPACE + portalRect.top <\n this.windowRef.innerHeight;\n const horizontalFit =\n left > SPACE &&\n left + tooltipRect.width + SPACE + portalRect.left < portalRect.width;\n\n if (directions.length === 0 || (verticalFit && horizontalFit)) {\n break;\n }\n\n direction = verticalFit\n ? reverseDirectionsHorizontal[direction]\n : reverseDirectionsVertical[direction];\n direction =\n directions.splice(directions.indexOf(direction), 1)[0] || direction;\n }\n\n style.top = px(top);\n style.left = px(left);\n\n tooltip.setAttribute('data-tui-host-direction', direction);\n }\n\n private calculateMobileCoordinates() {\n const hostRect = this.hint.getElementClientRect();\n const portalRect = this.hintsHost.clientRect;\n const tooltip = this.elementRef.nativeElement;\n const {style} = tooltip;\n const tooltipRect = tooltip.getBoundingClientRect();\n const verticalTop = hostRect.top - tooltipRect.height - SPACE - portalRect.top;\n const verticalBottom = hostRect.bottom + SPACE - portalRect.top;\n const verticalTopFit =\n verticalTop + portalRect.top > SPACE &&\n hostRect.top < this.windowRef.innerHeight;\n const verticalBottomFit =\n hostRect.bottom > 0 &&\n hostRect.bottom + 2 * SPACE + tooltipRect.height < this.windowRef.innerHeight;\n const direction =\n (this.hint.direction.includes('top') && verticalTopFit) || !verticalBottomFit\n ? 'top'\n : 'bottom';\n const attemptedLeft =\n portalRect.left + hostRect.left + hostRect.width / 2 - tooltipRect.width / 2;\n const left = Math.max(\n attemptedLeft + tooltipRect.width + SPACE > portalRect.right\n ? portalRect.right - SPACE - tooltipRect.width\n : attemptedLeft,\n SPACE * 2,\n );\n\n style.left = px(left);\n style.top = direction === 'top' ? px(verticalTop) : px(verticalBottom);\n\n if (this.arrow) {\n this.arrow.nativeElement.style.left = px(\n hostRect.left <= SPACE * 2 && hostRect.width > ARROW_OFFSET * 2\n ? ARROW_OFFSET\n : hostRect.left + hostRect.width / 2 - left - ARROW_SIZE / 2,\n );\n }\n\n tooltip.setAttribute('data-tui-host-direction', direction);\n }\n\n private setOverflowStyles() {\n const hostRect = this.hint.getElementClientRect();\n const {style} = this.elementRef.nativeElement;\n\n style.top = px(hostRect.top - window.innerHeight - TOP_PADDING - BORDER_WIDTH);\n style.left = px(hostRect.left - LEFT_PADDING - BORDER_WIDTH);\n style.width = px(hostRect.width + LEFT_PADDING * 2 + BORDER_WIDTH * 2);\n }\n}\n","import {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\n\nimport {TuiHintBoxComponent} from './hint-box.component';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [TuiHintBoxComponent],\n exports: [TuiHintBoxComponent],\n})\nexport class TuiHintBoxModule {}\n","import {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {TuiActiveZoneModule, TuiHoveredModule} from '@taiga-ui/cdk';\nimport {PolymorpheusModule} from '@tinkoff/ng-polymorpheus';\n\nimport {TuiHintBoxModule} from './hint-box/hint-box.module';\nimport {TuiHintsHostComponent} from './hints-host.component';\n\n@NgModule({\n imports: [\n CommonModule,\n PolymorpheusModule,\n TuiHoveredModule,\n TuiHintBoxModule,\n TuiActiveZoneModule,\n ],\n declarations: [TuiHintsHostComponent],\n exports: [TuiHintsHostComponent],\n entryComponents: [TuiHintsHostComponent],\n})\nexport class TuiHintsHostModule {}\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-hints-host.js","sources":["ng://@taiga-ui/core/components/hints-host/hints-host.component.ts","ng://@taiga-ui/core/components/hints-host/hint-box/hint-box.component.ts","ng://@taiga-ui/core/components/hints-host/hint-box/hint-box.module.ts","ng://@taiga-ui/core/components/hints-host/hints-host.module.ts","ng://@taiga-ui/core/components/hints-host/taiga-ui-core-components-hints-host.ts"],"sourcesContent":["import {AnimationOptions} from '@angular/animations';\nimport {ChangeDetectionStrategy, Component, ElementRef, Inject} from '@angular/core';\nimport {AbstractTuiHint} from '@taiga-ui/core/abstract';\nimport {tuiFadeIn} from '@taiga-ui/core/animations';\nimport {TuiHintDirective} from '@taiga-ui/core/directives/hint';\nimport {TuiHintService} from '@taiga-ui/core/services';\nimport {TUI_ANIMATION_OPTIONS} from '@taiga-ui/core/tokens';\n\n@Component({\n selector: 'tui-hints-host',\n templateUrl: './hints-host.template.html',\n styleUrls: ['./hints-host.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [tuiFadeIn],\n host: {\n 'aria-live': 'polite',\n },\n})\nexport class TuiHintsHostComponent {\n readonly animation = {\n value: '',\n ...this.options,\n } as const;\n\n constructor(\n @Inject(TUI_ANIMATION_OPTIONS) private readonly options: AnimationOptions,\n @Inject(ElementRef) private readonly elementRef: ElementRef<HTMLElement>,\n @Inject(TuiHintService) readonly hints$: TuiHintService,\n ) {}\n\n get clientRect(): ClientRect {\n return this.elementRef.nativeElement.getBoundingClientRect();\n }\n\n onHovered(hovered: boolean, directive: AbstractTuiHint) {\n if (directive instanceof TuiHintDirective) {\n directive.componentHovered$.next(hovered);\n }\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostBinding,\n Inject,\n Input,\n NgZone,\n ViewChild,\n} from '@angular/core';\nimport {ANIMATION_FRAME, WINDOW} from '@ng-web-apis/common';\nimport {px, TuiDestroyService, tuiPure, tuiZonefree} from '@taiga-ui/cdk';\nimport {AbstractTuiHint} from '@taiga-ui/core/abstract';\nimport {TuiPointerHintDirective} from '@taiga-ui/core/directives/pointer-hint';\nimport {TuiMedia} from '@taiga-ui/core/interfaces';\nimport {TUI_MEDIA} from '@taiga-ui/core/tokens';\nimport {TuiDirection, TuiHintModeT} from '@taiga-ui/core/types';\nimport {Observable} from 'rxjs';\nimport {takeUntil} from 'rxjs/operators';\n\nimport {TuiHintsHostComponent} from '../hints-host.component';\n\nconst SPACE = 8;\nconst BORDER_WIDTH = 1;\nconst LEFT_PADDING = 16;\nconst TOP_PADDING = 12;\nconst ARROW_SIZE = 8;\nconst ARROW_OFFSET = 16;\nconst ARROWHEAD_OFFSET = ARROW_OFFSET + (ARROW_SIZE * Math.sqrt(2)) / 2;\nconst reverseDirectionsVertical: {[key in TuiDirection]: TuiDirection} = {\n 'top-left': 'bottom-left',\n 'top-right': 'bottom-right',\n 'bottom-left': 'top-left',\n 'bottom-right': 'top-right',\n left: 'right',\n right: 'left',\n};\nconst reverseDirectionsHorizontal: {[key in TuiDirection]: TuiDirection} = {\n 'top-left': 'top-right',\n 'top-right': 'top-left',\n 'bottom-left': 'bottom-right',\n 'bottom-right': 'bottom-left',\n left: 'right',\n right: 'left',\n};\n\n// TODO: consider abstracting UI and move to CDK, split hint and overflow\n// Ambient type cannot be used without dynamic https://github.com/angular/angular/issues/23395\n// @dynamic\n@Component({\n selector: 'tui-hint-box[hint]',\n templateUrl: './hint-box.template.html',\n styleUrls: ['./hint-box.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [TuiDestroyService],\n})\nexport class TuiHintBoxComponent {\n @Input()\n hint!: AbstractTuiHint;\n\n @ViewChild('arrow')\n private readonly arrow?: ElementRef<HTMLElement>;\n\n constructor(\n @Inject(ANIMATION_FRAME) animationFrame$: Observable<number>,\n @Inject(TuiDestroyService) destroy$: Observable<void>,\n @Inject(NgZone) ngZone: NgZone,\n @Inject(ElementRef) private readonly elementRef: ElementRef<HTMLElement>,\n @Inject(WINDOW) private readonly windowRef: Window,\n @Inject(TUI_MEDIA) private readonly media: TuiMedia,\n @Inject(TuiHintsHostComponent)\n private readonly hintsHost: TuiHintsHostComponent,\n ) {\n animationFrame$.pipe(tuiZonefree(ngZone), takeUntil(destroy$)).subscribe(() => {\n this.calculatePosition();\n });\n }\n\n @tuiPure\n @HostBinding('class._untouchable')\n get isUntouchable(): boolean {\n return this.hint instanceof TuiPointerHintDirective;\n }\n\n @HostBinding('attr.data-mode')\n get mode(): TuiHintModeT | null {\n return this.hint.mode;\n }\n\n get isMobile(): boolean {\n return this.windowRef.innerWidth <= this.media.mobile;\n }\n\n /**\n * Calculates wrapper position.\n * Styles are set directly to avoid visual shake of element\n */\n private calculatePosition() {\n if (this.mode !== 'overflow') {\n this.calculateCoordinates();\n } else {\n this.setOverflowStyles();\n }\n }\n\n private calculateCoordinates() {\n if (this.isMobile) {\n this.calculateMobileCoordinates();\n\n return;\n }\n\n const hostRect = this.hint.getElementClientRect();\n const portalRect = this.hintsHost.clientRect;\n const tooltip = this.elementRef.nativeElement;\n const {style} = tooltip;\n const tooltipRect = tooltip.getBoundingClientRect();\n const isHostLong = hostRect.width > ARROWHEAD_OFFSET * 2;\n const directions: TuiDirection[] = [\n 'left',\n 'right',\n 'bottom-left',\n 'bottom-right',\n 'top-left',\n 'top-right',\n ];\n\n let top = 0;\n let left = 0;\n let {direction} = this.hint;\n\n const horizontalTop =\n hostRect.top + hostRect.height / 2 - tooltipRect.height / 2 - portalRect.top;\n const horizontalLeft =\n hostRect.left - tooltipRect.width - SPACE - portalRect.left;\n const horizontalRight = hostRect.left + hostRect.width + SPACE - portalRect.left;\n const verticalBottom = hostRect.bottom + SPACE - portalRect.top;\n const verticalTop = hostRect.top - tooltipRect.height - SPACE - portalRect.top;\n const verticalRight = isHostLong\n ? hostRect.left - portalRect.left\n : hostRect.left + hostRect.width / 2 - ARROWHEAD_OFFSET - portalRect.left;\n const verticalLeft = isHostLong\n ? hostRect.left - tooltipRect.width + hostRect.width - portalRect.left\n : hostRect.left -\n tooltipRect.width +\n hostRect.width / 2 +\n ARROWHEAD_OFFSET -\n portalRect.left;\n\n directions.splice(directions.indexOf(direction), 1);\n\n while (true) {\n switch (direction) {\n case 'left':\n top = horizontalTop;\n left = horizontalLeft;\n break;\n case 'right':\n top = horizontalTop;\n left = horizontalRight;\n break;\n case 'top-right':\n top = verticalTop;\n left = verticalRight;\n break;\n case 'top-left':\n top = verticalTop;\n left = verticalLeft;\n break;\n case 'bottom-right':\n top = verticalBottom;\n left = verticalRight;\n break;\n case 'bottom-left':\n top = verticalBottom;\n left = verticalLeft;\n break;\n }\n\n const verticalFit =\n top + portalRect.top > SPACE &&\n top + tooltipRect.height + SPACE + portalRect.top <\n this.windowRef.innerHeight;\n const horizontalFit =\n left > SPACE &&\n left + tooltipRect.width + SPACE + portalRect.left < portalRect.width;\n\n if (directions.length === 0 || (verticalFit && horizontalFit)) {\n break;\n }\n\n direction = verticalFit\n ? reverseDirectionsHorizontal[direction]\n : reverseDirectionsVertical[direction];\n direction =\n directions.splice(directions.indexOf(direction), 1)[0] || direction;\n }\n\n style.top = px(top);\n style.left = px(left);\n\n tooltip.setAttribute('data-tui-host-direction', direction);\n }\n\n private calculateMobileCoordinates() {\n const hostRect = this.hint.getElementClientRect();\n const portalRect = this.hintsHost.clientRect;\n const tooltip = this.elementRef.nativeElement;\n const {style} = tooltip;\n const tooltipRect = tooltip.getBoundingClientRect();\n const verticalTop = hostRect.top - tooltipRect.height - SPACE - portalRect.top;\n const verticalBottom = hostRect.bottom + SPACE - portalRect.top;\n const verticalTopFit =\n verticalTop + portalRect.top > SPACE &&\n hostRect.top < this.windowRef.innerHeight;\n const verticalBottomFit =\n hostRect.bottom > 0 &&\n hostRect.bottom + 2 * SPACE + tooltipRect.height < this.windowRef.innerHeight;\n const direction =\n (this.hint.direction.includes('top') && verticalTopFit) || !verticalBottomFit\n ? 'top'\n : 'bottom';\n const attemptedLeft =\n portalRect.left + hostRect.left + hostRect.width / 2 - tooltipRect.width / 2;\n const left = Math.max(\n attemptedLeft + tooltipRect.width + SPACE > portalRect.right\n ? portalRect.right - SPACE - tooltipRect.width\n : attemptedLeft,\n SPACE * 2,\n );\n\n style.left = px(left);\n style.top = direction === 'top' ? px(verticalTop) : px(verticalBottom);\n\n if (this.arrow) {\n this.arrow.nativeElement.style.left = px(\n hostRect.left <= SPACE * 2 && hostRect.width > ARROW_OFFSET * 2\n ? ARROW_OFFSET\n : hostRect.left + hostRect.width / 2 - left - ARROW_SIZE / 2,\n );\n }\n\n tooltip.setAttribute('data-tui-host-direction', direction);\n }\n\n private setOverflowStyles() {\n const hostRect = this.hint.getElementClientRect();\n const {style} = this.elementRef.nativeElement;\n\n style.top = px(hostRect.top - window.innerHeight - TOP_PADDING - BORDER_WIDTH);\n style.left = px(hostRect.left - LEFT_PADDING - BORDER_WIDTH);\n style.width = px(hostRect.width + LEFT_PADDING * 2 + BORDER_WIDTH * 2);\n }\n}\n","import {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\n\nimport {TuiHintBoxComponent} from './hint-box.component';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [TuiHintBoxComponent],\n exports: [TuiHintBoxComponent],\n})\nexport class TuiHintBoxModule {}\n","import {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {TuiActiveZoneModule, TuiHoveredModule} from '@taiga-ui/cdk';\nimport {PolymorpheusModule} from '@tinkoff/ng-polymorpheus';\n\nimport {TuiHintBoxModule} from './hint-box/hint-box.module';\nimport {TuiHintsHostComponent} from './hints-host.component';\n\n@NgModule({\n imports: [\n CommonModule,\n PolymorpheusModule,\n TuiHoveredModule,\n TuiHintBoxModule,\n TuiActiveZoneModule,\n ],\n declarations: [TuiHintsHostComponent],\n exports: [TuiHintsHostComponent],\n entryComponents: [TuiHintsHostComponent],\n})\nexport class TuiHintsHostModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,9 +1,10 @@
1
1
  import { __decorate, __param } from 'tslib';
2
2
  import { ElementRef, Inject, Input, HostBinding, Component, forwardRef, ChangeDetectionStrategy, NgModule } from '@angular/core';
3
- import { isNativeFocused, TuiFocusVisibleService, tuiDefaultProp, TUI_FOCUSABLE_ITEM_ACCESSOR, TuiDestroyService } from '@taiga-ui/cdk';
3
+ import { typedFromEvent, isNativeFocused, TuiFocusVisibleService, tuiDefaultProp, TUI_FOCUSABLE_ITEM_ACCESSOR, TuiDestroyService } from '@taiga-ui/cdk';
4
4
  import { MODE_PROVIDER } from '@taiga-ui/core/providers';
5
5
  import { TUI_MODE } from '@taiga-ui/core/tokens';
6
- import { Observable } from 'rxjs';
6
+ import { merge, Observable } from 'rxjs';
7
+ import { mapTo } from 'rxjs/operators';
7
8
  import { CommonModule } from '@angular/common';
8
9
  import { TuiSvgModule } from '@taiga-ui/core/components/svg';
9
10
 
@@ -19,6 +20,7 @@ var TuiLinkComponent = /** @class */ (function () {
19
20
  this.iconRotated = false;
20
21
  this.mode = null;
21
22
  this.focusVisible = false;
23
+ this.focusedChange = merge(typedFromEvent(this.elementRef.nativeElement, 'focusin').pipe(mapTo(true)), typedFromEvent(this.elementRef.nativeElement, 'focusout').pipe(mapTo(false)));
22
24
  focusVisible$.subscribe(function (visible) {
23
25
  _this.focusVisible = visible;
24
26
  });
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-core-components-link.js","sources":["ng://@taiga-ui/core/components/link/link.component.ts","ng://@taiga-ui/core/components/link/link.module.ts","ng://@taiga-ui/core/components/link/taiga-ui-core-components-link.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n forwardRef,\n HostBinding,\n Inject,\n Input,\n} from '@angular/core';\nimport {\n isNativeFocused,\n TUI_FOCUSABLE_ITEM_ACCESSOR,\n tuiDefaultProp,\n TuiDestroyService,\n TuiFocusableElementAccessor,\n TuiFocusVisibleService,\n TuiNativeFocusableElement,\n} from '@taiga-ui/cdk';\nimport {MODE_PROVIDER} from '@taiga-ui/core/providers';\nimport {TUI_MODE} from '@taiga-ui/core/tokens';\nimport {TuiBrightness, TuiHorizontalDirection} from '@taiga-ui/core/types';\nimport {Observable} from 'rxjs';\n\n// @bad TODO: Think about extending Interactive\n@Component({\n selector: 'a[tuiLink], button[tuiLink]',\n templateUrl: './link.template.html',\n styleUrls: ['./link.style.less'],\n providers: [\n {\n provide: TUI_FOCUSABLE_ITEM_ACCESSOR,\n useExisting: forwardRef(() => TuiLinkComponent),\n },\n TuiFocusVisibleService,\n TuiDestroyService,\n MODE_PROVIDER,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n exportAs: 'tuiLink',\n host: {\n '($.data-mode.attr)': 'mode$',\n },\n})\nexport class TuiLinkComponent implements TuiFocusableElementAccessor {\n @Input()\n @HostBinding('class._pseudo')\n @tuiDefaultProp()\n pseudo = false;\n\n @Input()\n @tuiDefaultProp()\n icon: string | null = null;\n\n @Input()\n @tuiDefaultProp()\n iconAlign: TuiHorizontalDirection = 'right';\n\n @Input()\n @HostBinding('class._icon-rotated')\n @tuiDefaultProp()\n iconRotated = false;\n\n @Input()\n @HostBinding('attr.data-host-mode')\n @tuiDefaultProp()\n mode: 'positive' | 'negative' | null = null;\n\n @HostBinding('class._focus-visible')\n focusVisible = false;\n\n constructor(\n @Inject(ElementRef)\n private readonly elementRef: ElementRef<TuiNativeFocusableElement>,\n @Inject(TUI_MODE) readonly mode$: Observable<TuiBrightness | null>,\n @Inject(TuiFocusVisibleService)\n focusVisible$: TuiFocusVisibleService,\n ) {\n focusVisible$.subscribe(visible => {\n this.focusVisible = visible;\n });\n }\n\n get nativeFocusableElement(): TuiNativeFocusableElement {\n return this.elementRef.nativeElement;\n }\n\n get focused(): boolean {\n return isNativeFocused(this.nativeFocusableElement);\n }\n\n get hasIcon(): boolean {\n return this.icon !== null;\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","import {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {TuiSvgModule} from '@taiga-ui/core/components/svg';\n\nimport {TuiLinkComponent} from './link.component';\n\n@NgModule({\n imports: [CommonModule, TuiSvgModule],\n declarations: [TuiLinkComponent],\n exports: [TuiLinkComponent],\n})\nexport class TuiLinkModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;AAuBA;;IA+CI,0BAEqB,UAAiD,EACvC,KAAuC,EAElE,aAAqC;QALzC,iBAUC;QARoB,eAAU,GAAV,UAAU,CAAuC;QACvC,UAAK,GAAL,KAAK,CAAkC;QA1BtE,WAAM,GAAG,KAAK,CAAC;QAIf,SAAI,GAAkB,IAAI,CAAC;QAI3B,cAAS,GAA2B,OAAO,CAAC;QAK5C,gBAAW,GAAG,KAAK,CAAC;QAKpB,SAAI,GAAmC,IAAI,CAAC;QAG5C,iBAAY,GAAG,KAAK,CAAC;QASjB,aAAa,CAAC,SAAS,CAAC,UAAA,OAAO;YAC3B,KAAI,CAAC,YAAY,GAAG,OAAO,CAAC;SAC/B,CAAC,CAAC;KACN;yBArCQ,gBAAgB;IAuCzB,sBAAI,oDAAsB;aAA1B;YACI,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;SACxC;;;OAAA;IAED,sBAAI,qCAAO;aAAX;YACI,OAAO,eAAe,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;SACvD;;;OAAA;IAED,sBAAI,qCAAO;aAAX;YACI,OAAO,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC;SAC7B;;;OAAA;IAED,sBAAI,2CAAa;aAAjB;YACI,OAAO,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,KAAK,MAAM,CAAC;SACpD;;;OAAA;IAED,sBAAI,4CAAc;aAAlB;YACI,OAAO,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,KAAK,OAAO,CAAC;SACrD;;;OAAA;;;gBA5BgC,UAAU,uBADtC,MAAM,SAAC,UAAU;gBAEgB,UAAU,uBAA3C,MAAM,SAAC,QAAQ;gBAED,sBAAsB,uBADpC,MAAM,SAAC,sBAAsB;;IA3BlC;QAHC,KAAK,EAAE;QACP,WAAW,CAAC,eAAe,CAAC;QAC5B,cAAc,EAAE;oDACF;IAIf;QAFC,KAAK,EAAE;QACP,cAAc,EAAE;kDACU;IAI3B;QAFC,KAAK,EAAE;QACP,cAAc,EAAE;uDAC2B;IAK5C;QAHC,KAAK,EAAE;QACP,WAAW,CAAC,qBAAqB,CAAC;QAClC,cAAc,EAAE;yDACG;IAKpB;QAHC,KAAK,EAAE;QACP,WAAW,CAAC,qBAAqB,CAAC;QAClC,cAAc,EAAE;kDAC2B;IAG5C;QADC,WAAW,CAAC,sBAAsB,CAAC;0DACf;IAzBZ,gBAAgB;QAnB5B,SAAS,CAAC;YACP,QAAQ,EAAE,6BAA6B;YACvC,0PAAmC;YAEnC,SAAS,EAAE;gBACP;oBACI,OAAO,EAAE,2BAA2B;oBACpC,WAAW,EAAE,UAAU,CAAC,cAAM,OAAA,kBAAgB,GAAA,CAAC;iBAClD;gBACD,sBAAsB;gBACtB,iBAAiB;gBACjB,aAAa;aAChB;YACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;YAC/C,QAAQ,EAAE,SAAS;YACnB,IAAI,EAAE;gBACF,oBAAoB,EAAE,OAAO;aAChC;;SACJ,CAAC;QA6BO,WAAA,MAAM,CAAC,UAAU,CAAC,CAAA;QAElB,WAAA,MAAM,CAAC,QAAQ,CAAC,CAAA;QAChB,WAAA,MAAM,CAAC,sBAAsB,CAAC,CAAA;OA/B1B,gBAAgB,CA0D5B;IAAD,uBAAC;CA1DD;;;IChCA;KAA6B;IAAhB,aAAa;QALzB,QAAQ,CAAC;YACN,OAAO,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC;YACrC,YAAY,EAAE,CAAC,gBAAgB,CAAC;YAChC,OAAO,EAAE,CAAC,gBAAgB,CAAC;SAC9B,CAAC;OACW,aAAa,CAAG;IAAD,oBAAC;CAA7B;;ACXA;;;;;;"}
1
+ {"version":3,"file":"taiga-ui-core-components-link.js","sources":["ng://@taiga-ui/core/components/link/link.component.ts","ng://@taiga-ui/core/components/link/link.module.ts","ng://@taiga-ui/core/components/link/taiga-ui-core-components-link.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n forwardRef,\n HostBinding,\n Inject,\n Input,\n} from '@angular/core';\nimport {\n isNativeFocused,\n TUI_FOCUSABLE_ITEM_ACCESSOR,\n tuiDefaultProp,\n TuiDestroyService,\n TuiFocusableElementAccessor,\n TuiFocusVisibleService,\n TuiNativeFocusableElement,\n typedFromEvent,\n} from '@taiga-ui/cdk';\nimport {MODE_PROVIDER} from '@taiga-ui/core/providers';\nimport {TUI_MODE} from '@taiga-ui/core/tokens';\nimport {TuiBrightness, TuiHorizontalDirection} from '@taiga-ui/core/types';\nimport {merge, Observable} from 'rxjs';\nimport {mapTo} from 'rxjs/operators';\n\n// @bad TODO: Think about extending Interactive\n@Component({\n selector: 'a[tuiLink], button[tuiLink]',\n templateUrl: './link.template.html',\n styleUrls: ['./link.style.less'],\n providers: [\n {\n provide: TUI_FOCUSABLE_ITEM_ACCESSOR,\n useExisting: forwardRef(() => TuiLinkComponent),\n },\n TuiFocusVisibleService,\n TuiDestroyService,\n MODE_PROVIDER,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n exportAs: 'tuiLink',\n host: {\n '($.data-mode.attr)': 'mode$',\n },\n})\nexport class TuiLinkComponent implements TuiFocusableElementAccessor {\n @Input()\n @HostBinding('class._pseudo')\n @tuiDefaultProp()\n pseudo = false;\n\n @Input()\n @tuiDefaultProp()\n icon: string | null = null;\n\n @Input()\n @tuiDefaultProp()\n iconAlign: TuiHorizontalDirection = 'right';\n\n @Input()\n @HostBinding('class._icon-rotated')\n @tuiDefaultProp()\n iconRotated = false;\n\n @Input()\n @HostBinding('attr.data-host-mode')\n @tuiDefaultProp()\n mode: 'positive' | 'negative' | null = null;\n\n @HostBinding('class._focus-visible')\n focusVisible = false;\n\n readonly focusedChange = merge(\n typedFromEvent(this.elementRef.nativeElement, 'focusin').pipe(mapTo(true)),\n typedFromEvent(this.elementRef.nativeElement, 'focusout').pipe(mapTo(false)),\n );\n\n constructor(\n @Inject(ElementRef)\n private readonly elementRef: ElementRef<TuiNativeFocusableElement>,\n @Inject(TUI_MODE) readonly mode$: Observable<TuiBrightness | null>,\n @Inject(TuiFocusVisibleService)\n focusVisible$: TuiFocusVisibleService,\n ) {\n focusVisible$.subscribe(visible => {\n this.focusVisible = visible;\n });\n }\n\n get nativeFocusableElement(): TuiNativeFocusableElement {\n return this.elementRef.nativeElement;\n }\n\n get focused(): boolean {\n return isNativeFocused(this.nativeFocusableElement);\n }\n\n get hasIcon(): boolean {\n return this.icon !== null;\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","import {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {TuiSvgModule} from '@taiga-ui/core/components/svg';\n\nimport {TuiLinkComponent} from './link.component';\n\n@NgModule({\n imports: [CommonModule, TuiSvgModule],\n declarations: [TuiLinkComponent],\n exports: [TuiLinkComponent],\n})\nexport class TuiLinkModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -65,7 +65,7 @@ var TUI_LAST_PUNCTUATION_MARK_REGEXP = /[.,\\/#!$%\\^&\\*;:{}=\\-_\`~()]$/;
65
65
  var TUI_LATIN_REGEXP = /[A-z]/;
66
66
  var TUI_LATIN_AND_NUMBERS_REGEXP = /[A-z|0-9]/;
67
67
 
68
- var VERSION = '2.25.0';
68
+ var VERSION = '2.26.0';
69
69
 
70
70
  /**
71
71
  * Generated bundle index. Do not edit.
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-core-constants.js","sources":["ng://@taiga-ui/core/constants/absolute-box-sizes.ts","ng://@taiga-ui/core/constants/decimal-symbols.ts","ng://@taiga-ui/core/constants/default-icons-path.ts","ng://@taiga-ui/core/constants/default-marker-handler.ts","ng://@taiga-ui/core/constants/editing-keys.ts","ng://@taiga-ui/core/constants/events.ts","ng://@taiga-ui/core/constants/mask-caret-trap.ts","ng://@taiga-ui/core/constants/media.ts","ng://@taiga-ui/core/constants/regexp.ts","ng://@taiga-ui/core/constants/version.ts","ng://@taiga-ui/core/constants/taiga-ui-core-constants.ts"],"sourcesContent":["export const DEFAULT_MARGIN = 4;\nexport const DEFAULT_MIN_HEIGHT = 80;\nexport const DEFAULT_MAX_HEIGHT = 400;\nexport const DEFAULT_MAX_WIDTH = 600;\n","export const TUI_DECIMAL_SYMBOLS: ReadonlyArray<string> = [',', '.'];\n","import {TuiStringHandler} from '@taiga-ui/cdk';\n\nexport const DEFAULT_ICONS_PATH: TuiStringHandler<string> = name =>\n name.includes('.svg#') ? name : `#${name}`;\n","import {EMPTY_ARRAY} from '@taiga-ui/cdk';\nimport {TuiMarkerHandler} from '@taiga-ui/core/types';\n\nexport const TUI_DEFAULT_MARKER_HANDLER: TuiMarkerHandler = () => EMPTY_ARRAY;\n","export const tuiEditingKeys: readonly string[] = [\n 'Spacebar',\n 'Backspace',\n 'Delete',\n 'ArrowLeft',\n 'ArrowRight',\n 'Left',\n 'Right',\n 'End',\n 'Home',\n];\n","/**\n * An event indicating that async data for expand has finished loading.\n * Dispatch to finish loading states for {@link TuiExpandComponent}.\n */\nexport const TUI_EXPAND_LOADED = 'tui-expand-loaded';\n\n/**\n * An event for scrolling an element into view within {@link TuiScrollbarComponent}.\n */\nexport const TUI_SCROLL_INTO_VIEW = 'tui-scroll-into-view';\n\n/**\n * An event to notify {@link TuiScrollbarComponent} that\n * it should control a nested element.\n */\nexport const TUI_SCROLLABLE = 'tui-scrollable';\n\n/**\n * An event indicating and error during icon loading in {@link TuiSvgComponent}.\n */\nexport const TUI_ICON_ERROR = 'tui-icon-error';\n","export const MASK_CARET_TRAP = '[]';\n","/**\n * Media constants are exact the same as css media breakpoints\n * @deprecated use TUI_MEDIA token\n */\nexport const MEDIA = {\n mobile: 320,\n tablet: 600,\n desktopSmall: 1024,\n desktopLarge: 1280,\n};\n","export const TUI_DIGIT_REGEXP = /\\d/;\nexport const TUI_NON_DIGIT_REGEXP = /\\D/;\nexport const TUI_NON_DIGITS_REGEXP = /\\D+/g;\nexport const TUI_LEADING_ZEROES_REGEXP = /^0+/;\nexport const TUI_LAST_PUNCTUATION_MARK_REGEXP = /[.,\\\\/#!$%\\\\^&\\\\*;:{}=\\\\-_\\`~()]$/;\nexport const TUI_LATIN_REGEXP = /[A-z]/;\nexport const TUI_LATIN_AND_NUMBERS_REGEXP = /[A-z|0-9]/;\n","export const VERSION = '2.25.0';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;IAAa,cAAc,GAAG,EAAE;IACnB,kBAAkB,GAAG,GAAG;IACxB,kBAAkB,GAAG,IAAI;IACzB,iBAAiB,GAAG;;ICHpB,mBAAmB,GAA0B,CAAC,GAAG,EAAE,GAAG;;ICEtD,kBAAkB,GAA6B,UAAA,IAAI;IAC5D,OAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,MAAI,IAAM;AAA1C;;ICAS,0BAA0B,GAAqB,cAAM,OAAA,WAAW;;ICHhE,cAAc,GAAsB;IAC7C,UAAU;IACV,WAAW;IACX,QAAQ;IACR,WAAW;IACX,YAAY;IACZ,MAAM;IACN,OAAO;IACP,KAAK;IACL,MAAM;;;ACTV;;;;IAIa,iBAAiB,GAAG,oBAAoB;AAErD;;;IAGa,oBAAoB,GAAG,uBAAuB;AAE3D;;;;IAIa,cAAc,GAAG,iBAAiB;AAE/C;;;IAGa,cAAc,GAAG;;ICpBjB,eAAe,GAAG;;ACA/B;;;;IAIa,KAAK,GAAG;IACjB,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,GAAG;IACX,YAAY,EAAE,IAAI;IAClB,YAAY,EAAE,IAAI;;;ICRT,gBAAgB,GAAG,KAAK;IACxB,oBAAoB,GAAG,KAAK;IAC5B,qBAAqB,GAAG,OAAO;IAC/B,yBAAyB,GAAG,MAAM;IAClC,gCAAgC,GAAG,oCAAoC;IACvE,gBAAgB,GAAG,QAAQ;IAC3B,4BAA4B,GAAG;;ICN/B,OAAO,GAAG;;ACAvB;;;;;;"}
1
+ {"version":3,"file":"taiga-ui-core-constants.js","sources":["ng://@taiga-ui/core/constants/absolute-box-sizes.ts","ng://@taiga-ui/core/constants/decimal-symbols.ts","ng://@taiga-ui/core/constants/default-icons-path.ts","ng://@taiga-ui/core/constants/default-marker-handler.ts","ng://@taiga-ui/core/constants/editing-keys.ts","ng://@taiga-ui/core/constants/events.ts","ng://@taiga-ui/core/constants/mask-caret-trap.ts","ng://@taiga-ui/core/constants/media.ts","ng://@taiga-ui/core/constants/regexp.ts","ng://@taiga-ui/core/constants/version.ts","ng://@taiga-ui/core/constants/taiga-ui-core-constants.ts"],"sourcesContent":["export const DEFAULT_MARGIN = 4;\nexport const DEFAULT_MIN_HEIGHT = 80;\nexport const DEFAULT_MAX_HEIGHT = 400;\nexport const DEFAULT_MAX_WIDTH = 600;\n","export const TUI_DECIMAL_SYMBOLS: ReadonlyArray<string> = [',', '.'];\n","import {TuiStringHandler} from '@taiga-ui/cdk';\n\nexport const DEFAULT_ICONS_PATH: TuiStringHandler<string> = name =>\n name.includes('.svg#') ? name : `#${name}`;\n","import {EMPTY_ARRAY} from '@taiga-ui/cdk';\nimport {TuiMarkerHandler} from '@taiga-ui/core/types';\n\nexport const TUI_DEFAULT_MARKER_HANDLER: TuiMarkerHandler = () => EMPTY_ARRAY;\n","export const tuiEditingKeys: readonly string[] = [\n 'Spacebar',\n 'Backspace',\n 'Delete',\n 'ArrowLeft',\n 'ArrowRight',\n 'Left',\n 'Right',\n 'End',\n 'Home',\n];\n","/**\n * An event indicating that async data for expand has finished loading.\n * Dispatch to finish loading states for {@link TuiExpandComponent}.\n */\nexport const TUI_EXPAND_LOADED = 'tui-expand-loaded';\n\n/**\n * An event for scrolling an element into view within {@link TuiScrollbarComponent}.\n */\nexport const TUI_SCROLL_INTO_VIEW = 'tui-scroll-into-view';\n\n/**\n * An event to notify {@link TuiScrollbarComponent} that\n * it should control a nested element.\n */\nexport const TUI_SCROLLABLE = 'tui-scrollable';\n\n/**\n * An event indicating and error during icon loading in {@link TuiSvgComponent}.\n */\nexport const TUI_ICON_ERROR = 'tui-icon-error';\n","export const MASK_CARET_TRAP = '[]';\n","/**\n * Media constants are exact the same as css media breakpoints\n * @deprecated use TUI_MEDIA token\n */\nexport const MEDIA = {\n mobile: 320,\n tablet: 600,\n desktopSmall: 1024,\n desktopLarge: 1280,\n};\n","export const TUI_DIGIT_REGEXP = /\\d/;\nexport const TUI_NON_DIGIT_REGEXP = /\\D/;\nexport const TUI_NON_DIGITS_REGEXP = /\\D+/g;\nexport const TUI_LEADING_ZEROES_REGEXP = /^0+/;\nexport const TUI_LAST_PUNCTUATION_MARK_REGEXP = /[.,\\\\/#!$%\\\\^&\\\\*;:{}=\\\\-_\\`~()]$/;\nexport const TUI_LATIN_REGEXP = /[A-z]/;\nexport const TUI_LATIN_AND_NUMBERS_REGEXP = /[A-z|0-9]/;\n","export const VERSION = '2.26.0';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;IAAa,cAAc,GAAG,EAAE;IACnB,kBAAkB,GAAG,GAAG;IACxB,kBAAkB,GAAG,IAAI;IACzB,iBAAiB,GAAG;;ICHpB,mBAAmB,GAA0B,CAAC,GAAG,EAAE,GAAG;;ICEtD,kBAAkB,GAA6B,UAAA,IAAI;IAC5D,OAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,MAAI,IAAM;AAA1C;;ICAS,0BAA0B,GAAqB,cAAM,OAAA,WAAW;;ICHhE,cAAc,GAAsB;IAC7C,UAAU;IACV,WAAW;IACX,QAAQ;IACR,WAAW;IACX,YAAY;IACZ,MAAM;IACN,OAAO;IACP,KAAK;IACL,MAAM;;;ACTV;;;;IAIa,iBAAiB,GAAG,oBAAoB;AAErD;;;IAGa,oBAAoB,GAAG,uBAAuB;AAE3D;;;;IAIa,cAAc,GAAG,iBAAiB;AAE/C;;;IAGa,cAAc,GAAG;;ICpBjB,eAAe,GAAG;;ACA/B;;;;IAIa,KAAK,GAAG;IACjB,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,GAAG;IACX,YAAY,EAAE,IAAI;IAClB,YAAY,EAAE,IAAI;;;ICRT,gBAAgB,GAAG,KAAK;IACxB,oBAAoB,GAAG,KAAK;IAC5B,qBAAqB,GAAG,OAAO;IAC/B,yBAAyB,GAAG,MAAM;IAClC,gCAAgC,GAAG,oCAAoC;IACvE,gBAAgB,GAAG,QAAQ;IAC3B,4BAA4B,GAAG;;ICN/B,OAAO,GAAG;;ACAvB;;;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@taiga-ui/core",
3
- "version": "2.25.0",
3
+ "version": "2.26.0",
4
4
  "description": "Core library for creating Angular components and applications using Taiga UI",
5
5
  "keywords": [
6
6
  "angular",
@@ -16,17 +16,19 @@
16
16
  "homepage": "https://github.com/TinkoffCreditSystems/taiga-ui",
17
17
  "schematics": "./schematics/collection.json",
18
18
  "dependencies": {
19
- "@taiga-ui/i18n": "2.25.0",
19
+ "@taiga-ui/i18n": "2.26.0",
20
20
  "tslib": "^1.10.0"
21
21
  },
22
22
  "peerDependencies": {
23
- "@taiga-ui/cdk": "2.25.0",
23
+ "@taiga-ui/cdk": "2.26.0",
24
24
  "@angular/animations": ">=9.0.0",
25
25
  "@angular/common": ">=9.0.0",
26
26
  "@angular/core": ">=9.0.0",
27
27
  "@angular/forms": ">=9.0.0",
28
28
  "@angular/platform-browser": ">=9.0.0",
29
29
  "@angular/router": ">=9.0.0",
30
+ "@ng-web-apis/common": "1.12.1",
31
+ "@ng-web-apis/mutation-observer": "1.1.0",
30
32
  "@tinkoff/ng-event-plugins": ">=2.3.2",
31
33
  "@tinkoff/ng-polymorpheus": "3.1.12",
32
34
  "rxjs": ">=6.0.0"