@taiga-ui/core 4.94.0 → 4.95.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 (33) hide show
  1. package/components/button/button.directive.d.ts +1 -1
  2. package/directives/dropdown/dropdown-hover.directive.d.ts +1 -0
  3. package/esm2022/components/button/button.directive.mjs +2 -2
  4. package/esm2022/components/data-list/data-list.component.mjs +3 -3
  5. package/esm2022/components/icon/icon.component.mjs +2 -2
  6. package/esm2022/components/label/label.directive.mjs +3 -3
  7. package/esm2022/components/link/link.directive.mjs +3 -3
  8. package/esm2022/components/notification/notification.directive.mjs +3 -3
  9. package/esm2022/components/root/root.component.mjs +3 -3
  10. package/esm2022/components/textfield/textfield-multi/textfield-multi.component.mjs +3 -3
  11. package/esm2022/components/textfield/textfield.component.mjs +3 -3
  12. package/esm2022/directives/appearance/appearance.directive.mjs +3 -3
  13. package/esm2022/directives/dropdown/dropdown-hover.directive.mjs +22 -9
  14. package/esm2022/directives/group/group.directive.mjs +3 -3
  15. package/esm2022/directives/icons/icons.directive.mjs +3 -3
  16. package/esm2022/directives/title/title.directive.mjs +3 -3
  17. package/fesm2022/taiga-ui-core-components-button.mjs +2 -2
  18. package/fesm2022/taiga-ui-core-components-data-list.mjs +3 -3
  19. package/fesm2022/taiga-ui-core-components-icon.mjs +2 -2
  20. package/fesm2022/taiga-ui-core-components-label.mjs +3 -3
  21. package/fesm2022/taiga-ui-core-components-link.mjs +3 -3
  22. package/fesm2022/taiga-ui-core-components-notification.mjs +3 -3
  23. package/fesm2022/taiga-ui-core-components-root.mjs +2 -2
  24. package/fesm2022/taiga-ui-core-components-root.mjs.map +1 -1
  25. package/fesm2022/taiga-ui-core-components-textfield.mjs +6 -6
  26. package/fesm2022/taiga-ui-core-directives-appearance.mjs +3 -3
  27. package/fesm2022/taiga-ui-core-directives-dropdown.mjs +21 -8
  28. package/fesm2022/taiga-ui-core-directives-dropdown.mjs.map +1 -1
  29. package/fesm2022/taiga-ui-core-directives-group.mjs +3 -3
  30. package/fesm2022/taiga-ui-core-directives-icons.mjs +3 -3
  31. package/fesm2022/taiga-ui-core-directives-title.mjs +3 -3
  32. package/package.json +3 -3
  33. package/styles/variables/version.less +1 -1
@@ -18,11 +18,11 @@ function tuiAppearanceOptionsProvider(token) {
18
18
 
19
19
  class TuiAppearanceStyles {
20
20
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiAppearanceStyles, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
21
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiAppearanceStyles, isStandalone: true, selector: "ng-component", exportAs: ["tui-appearance-4.94.0"], ngImport: i0, template: '', isInline: true, styles: ["[tuiAppearanceV=\"4.94.0\"]{transition-property:all;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;position:relative;-webkit-appearance:none;appearance:none;outline:.125rem solid transparent;outline-offset:-.125rem;transition-property:color,background-color,opacity,box-shadow,border-color,border-radius,filter}[tuiAppearanceV=\"4.94.0\"]:before,[tuiAppearanceV=\"4.94.0\"]:after{transition-duration:inherit;transition-timing-function:ease-in-out}[tuiAppearanceV=\"4.94.0\"]:focus-visible:not([data-focus=false]){outline-color:var(--tui-border-focus)}[tuiAppearanceV=\"4.94.0\"][data-focus=true]{outline-color:var(--tui-border-focus)}[tuiAppearanceV=\"4.94.0\"][tuiWrapper]:not(._focused):has(:focus-visible){outline-color:var(--tui-border-focus)}[tuiAppearanceV=\"4.94.0\"][tuiWrapper]._focused._focused{outline-color:var(--tui-border-focus)}[tuiAppearanceV=\"4.94.0\"]:disabled:not([data-state]),[tuiAppearanceV=\"4.94.0\"][data-state=disabled]{cursor:initial;opacity:var(--tui-disabled-opacity)}[tuiAppearanceV=\"4.94.0\"][tuiWrapper]:disabled:not([data-state]),[tuiAppearanceV=\"4.94.0\"][tuiWrapper][data-state=disabled]{cursor:initial;opacity:var(--tui-disabled-opacity)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
21
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiAppearanceStyles, isStandalone: true, selector: "ng-component", exportAs: ["tui-appearance-4.95.0"], ngImport: i0, template: '', isInline: true, styles: ["[tuiAppearanceV=\"4.95.0\"]{transition-property:all;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;position:relative;-webkit-appearance:none;appearance:none;outline:.125rem solid transparent;outline-offset:-.125rem;transition-property:color,background-color,opacity,box-shadow,border-color,border-radius,filter}[tuiAppearanceV=\"4.95.0\"]:before,[tuiAppearanceV=\"4.95.0\"]:after{transition-duration:inherit;transition-timing-function:ease-in-out}[tuiAppearanceV=\"4.95.0\"]:focus-visible:not([data-focus=false]){outline-color:var(--tui-border-focus)}[tuiAppearanceV=\"4.95.0\"][data-focus=true]{outline-color:var(--tui-border-focus)}[tuiAppearanceV=\"4.95.0\"][tuiWrapper]:not(._focused):has(:focus-visible){outline-color:var(--tui-border-focus)}[tuiAppearanceV=\"4.95.0\"][tuiWrapper]._focused._focused{outline-color:var(--tui-border-focus)}[tuiAppearanceV=\"4.95.0\"]:disabled:not([data-state]),[tuiAppearanceV=\"4.95.0\"][data-state=disabled]{cursor:initial;opacity:var(--tui-disabled-opacity)}[tuiAppearanceV=\"4.95.0\"][tuiWrapper]:disabled:not([data-state]),[tuiAppearanceV=\"4.95.0\"][tuiWrapper][data-state=disabled]{cursor:initial;opacity:var(--tui-disabled-opacity)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
22
22
  }
23
23
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiAppearanceStyles, decorators: [{
24
24
  type: Component,
25
- args: [{ standalone: true, template: '', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, exportAs: `tui-appearance-${TUI_VERSION}`, styles: ["[tuiAppearanceV=\"4.94.0\"]{transition-property:all;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;position:relative;-webkit-appearance:none;appearance:none;outline:.125rem solid transparent;outline-offset:-.125rem;transition-property:color,background-color,opacity,box-shadow,border-color,border-radius,filter}[tuiAppearanceV=\"4.94.0\"]:before,[tuiAppearanceV=\"4.94.0\"]:after{transition-duration:inherit;transition-timing-function:ease-in-out}[tuiAppearanceV=\"4.94.0\"]:focus-visible:not([data-focus=false]){outline-color:var(--tui-border-focus)}[tuiAppearanceV=\"4.94.0\"][data-focus=true]{outline-color:var(--tui-border-focus)}[tuiAppearanceV=\"4.94.0\"][tuiWrapper]:not(._focused):has(:focus-visible){outline-color:var(--tui-border-focus)}[tuiAppearanceV=\"4.94.0\"][tuiWrapper]._focused._focused{outline-color:var(--tui-border-focus)}[tuiAppearanceV=\"4.94.0\"]:disabled:not([data-state]),[tuiAppearanceV=\"4.94.0\"][data-state=disabled]{cursor:initial;opacity:var(--tui-disabled-opacity)}[tuiAppearanceV=\"4.94.0\"][tuiWrapper]:disabled:not([data-state]),[tuiAppearanceV=\"4.94.0\"][tuiWrapper][data-state=disabled]{cursor:initial;opacity:var(--tui-disabled-opacity)}\n"] }]
25
+ args: [{ standalone: true, template: '', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, exportAs: `tui-appearance-${TUI_VERSION}`, styles: ["[tuiAppearanceV=\"4.95.0\"]{transition-property:all;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;position:relative;-webkit-appearance:none;appearance:none;outline:.125rem solid transparent;outline-offset:-.125rem;transition-property:color,background-color,opacity,box-shadow,border-color,border-radius,filter}[tuiAppearanceV=\"4.95.0\"]:before,[tuiAppearanceV=\"4.95.0\"]:after{transition-duration:inherit;transition-timing-function:ease-in-out}[tuiAppearanceV=\"4.95.0\"]:focus-visible:not([data-focus=false]){outline-color:var(--tui-border-focus)}[tuiAppearanceV=\"4.95.0\"][data-focus=true]{outline-color:var(--tui-border-focus)}[tuiAppearanceV=\"4.95.0\"][tuiWrapper]:not(._focused):has(:focus-visible){outline-color:var(--tui-border-focus)}[tuiAppearanceV=\"4.95.0\"][tuiWrapper]._focused._focused{outline-color:var(--tui-border-focus)}[tuiAppearanceV=\"4.95.0\"]:disabled:not([data-state]),[tuiAppearanceV=\"4.95.0\"][data-state=disabled]{cursor:initial;opacity:var(--tui-disabled-opacity)}[tuiAppearanceV=\"4.95.0\"][tuiWrapper]:disabled:not([data-state]),[tuiAppearanceV=\"4.95.0\"][tuiWrapper][data-state=disabled]{cursor:initial;opacity:var(--tui-disabled-opacity)}\n"] }]
26
26
  }] });
27
27
  class TuiAppearance {
28
28
  constructor() {
@@ -58,7 +58,7 @@ class TuiAppearance {
58
58
  this.mode.set(mode);
59
59
  }
60
60
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiAppearance, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
61
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: TuiAppearance, isStandalone: true, selector: "[tuiAppearance]", inputs: { tuiAppearance: "tuiAppearance", tuiAppearanceState: "tuiAppearanceState", tuiAppearanceFocus: "tuiAppearanceFocus", tuiAppearanceMode: "tuiAppearanceMode" }, host: { attributes: { "tuiAppearance": "", "tuiAppearanceV": "4.94.0" }, properties: { "attr.data-appearance": "appearance()", "attr.data-state": "state()", "attr.data-focus": "focus()", "attr.data-mode": "modes()" } }, hostDirectives: [{ directive: i1.TuiTransitioned }], ngImport: i0 }); }
61
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: TuiAppearance, isStandalone: true, selector: "[tuiAppearance]", inputs: { tuiAppearance: "tuiAppearance", tuiAppearanceState: "tuiAppearanceState", tuiAppearanceFocus: "tuiAppearanceFocus", tuiAppearanceMode: "tuiAppearanceMode" }, host: { attributes: { "tuiAppearance": "", "tuiAppearanceV": "4.95.0" }, properties: { "attr.data-appearance": "appearance()", "attr.data-state": "state()", "attr.data-focus": "focus()", "attr.data-mode": "modes()" } }, hostDirectives: [{ directive: i1.TuiTransitioned }], ngImport: i0 }); }
62
62
  }
63
63
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiAppearance, decorators: [{
64
64
  type: Directive,
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Injectable, Directive, InjectionToken, Optional, Self, SkipSelf, inject, Input, EventEmitter, Output, effect, signal, ChangeDetectorRef, INJECTOR, TemplateRef, ElementRef, computed, Component, ChangeDetectionStrategy, NgZone, ContentChild, ViewContainerRef } from '@angular/core';
2
+ import { Injectable, Directive, InjectionToken, Optional, Self, SkipSelf, inject, Input, EventEmitter, Output, effect, signal, ChangeDetectorRef, INJECTOR, TemplateRef, ElementRef, computed, Component, ChangeDetectionStrategy, NgZone, ContentChild, PLATFORM_ID, ViewContainerRef } from '@angular/core';
3
3
  import { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';
4
4
  import { EMPTY_CLIENT_RECT, TUI_TRUE_HANDLER, CHAR_ZERO_WIDTH_SPACE, CHAR_NO_BREAK_SPACE } from '@taiga-ui/cdk/constants';
5
5
  import * as i1 from '@taiga-ui/cdk/directives/active-zone';
@@ -14,14 +14,14 @@ import { TuiScrollbar } from '@taiga-ui/core/components/scrollbar';
14
14
  import { TuiVisualViewportService, TuiPositionService } from '@taiga-ui/core/services';
15
15
  import { TUI_VIEWPORT, TUI_DARK_MODE, TUI_SELECTION_STREAM } from '@taiga-ui/core/tokens';
16
16
  import { PolymorpheusComponent, PolymorpheusTemplate, PolymorpheusOutlet } from '@taiga-ui/polymorpheus';
17
- import { BehaviorSubject, Subject, throttleTime, takeWhile, map, merge, filter, fromEvent, switchMap, delay, startWith, takeUntil, distinctUntilChanged, of, EMPTY, tap, share, combineLatest } from 'rxjs';
17
+ import { BehaviorSubject, Subject, throttleTime, takeWhile, map, merge, filter, fromEvent, NEVER, switchMap, delay, startWith, takeUntil, distinctUntilChanged, of, EMPTY, tap, share, combineLatest } from 'rxjs';
18
18
  import { coerceArray } from '@angular/cdk/coercion';
19
- import { tuiZonefreeScheduler, tuiTypedFromEvent, tuiZonefree, tuiIfMap, tuiCloseWatcher, tuiZonefull, tuiWatch, tuiZoneOptimized } from '@taiga-ui/cdk/observables';
19
+ import { tuiZonefreeScheduler, tuiTypedFromEvent, tuiZonefree, tuiIfMap, tuiCloseWatcher, tuiZonefull, tuiWatch } from '@taiga-ui/cdk/observables';
20
20
  import { tuiOverrideOptions, tuiCheckFixedPosition, tuiGetWordRange } from '@taiga-ui/core/utils';
21
21
  import { TuiPortalService, TuiPortals, tuiAsPortal } from '@taiga-ui/cdk/classes';
22
22
  import { __decorate } from 'tslib';
23
23
  import { TuiIdService } from '@taiga-ui/cdk/services';
24
- import { DOCUMENT } from '@angular/common';
24
+ import { DOCUMENT, isPlatformBrowser } from '@angular/common';
25
25
  import { TUI_IS_TOUCH, TUI_RANGE } from '@taiga-ui/cdk/tokens';
26
26
  import * as i1$1 from '@taiga-ui/cdk/directives/obscured';
27
27
  import { TuiObscured } from '@taiga-ui/cdk/directives/obscured';
@@ -685,10 +685,9 @@ class TuiDropdownHover extends TuiDriver {
685
685
  * swipe on mobile devices removes dropdown sheet without triggering new mouseover / mouseout events.
686
686
  */
687
687
  this.dropdownExternalRemoval$ = toObservable(inject(TuiDropdownDirective).ref).pipe(filter((x) => !x && this.hovered));
688
- this.stream$ = merge(this.dropdownExternalRemoval$.pipe(switchMap(() => tuiTypedFromEvent(this.doc, 'pointerdown').pipe(map(tuiGetActualTarget), delay(this.hideDelay), startWith(null), takeUntil(fromEvent(this.doc, 'mouseover'))))), tuiTypedFromEvent(this.doc, 'mouseover').pipe(map(tuiGetActualTarget)), tuiTypedFromEvent(this.doc, 'mouseout').pipe(map((e) => e.relatedTarget))).pipe(map((element) => tuiIsElement(element) && this.isHovered(element)), distinctUntilChanged(), switchMap((visible) => of(visible).pipe(delay(visible ? this.showDelay : this.hideDelay), takeUntil(this.open ? fromEvent(this.el, 'pointerdown') : EMPTY))), tuiZoneOptimized(), tap((hovered) => {
689
- this.hovered = hovered;
690
- this.open?.toggle(hovered);
691
- }), share());
688
+ this.stream$ = isPlatformBrowser(inject(PLATFORM_ID))
689
+ ? this.createStream()
690
+ : NEVER;
692
691
  this.showDelay = this.options.showDelay;
693
692
  this.hideDelay = this.options.hideDelay;
694
693
  this.hovered = false;
@@ -705,6 +704,20 @@ class TuiDropdownHover extends TuiDriver {
705
704
  const child = !this.el.contains(element) && this.activeZone.contains(element);
706
705
  return hovered || child;
707
706
  }
707
+ createStream() {
708
+ const root = this.el.getRootNode();
709
+ const mouseover$ = tuiTypedFromEvent(root, 'mouseover');
710
+ const mouseout$ = tuiTypedFromEvent(root, 'mouseout');
711
+ return merge(
712
+ /**
713
+ * Dropdown can be removed not only via click/touch –
714
+ * swipe on mobile devices removes dropdown sheet without triggering new mouseover / mouseout events.
715
+ */
716
+ this.dropdownExternalRemoval$.pipe(switchMap(() => tuiTypedFromEvent(this.doc, 'pointerdown').pipe(map(tuiGetActualTarget), delay(this.hideDelay), startWith(null), takeUntil(mouseover$)))), mouseover$.pipe(map(tuiGetActualTarget)), mouseout$.pipe(map((event) => event.relatedTarget))).pipe(map((element) => tuiIsElement(element) && this.isHovered(element)), distinctUntilChanged(), switchMap((visible) => of(visible).pipe(delay(visible ? this.showDelay : this.hideDelay), takeUntil(this.open ? fromEvent(this.el, 'pointerdown') : EMPTY))), tap((hovered) => {
717
+ this.hovered = hovered;
718
+ this.open?.toggle(hovered);
719
+ }), share());
720
+ }
708
721
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiDropdownHover, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
709
722
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: TuiDropdownHover, isStandalone: true, selector: "[tuiDropdownHover]", inputs: { showDelay: ["tuiDropdownShowDelay", "showDelay"], hideDelay: ["tuiDropdownHideDelay", "hideDelay"] }, host: { listeners: { "click.capture": "onClick($event)" } }, providers: [TuiActiveZone, tuiAsDriver(TuiDropdownHover)], queries: [{ propertyName: "dropdownHost", first: true, predicate: ["tuiDropdownHost"], descendants: true, read: ElementRef }], usesInheritance: true, ngImport: i0 }); }
710
723
  }