@taiga-ui/core 4.93.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.
- package/components/button/button.directive.d.ts +1 -1
- package/directives/dropdown/dropdown-context.directive.d.ts +1 -0
- package/directives/dropdown/dropdown-hover.directive.d.ts +1 -0
- package/directives/hint/hint-hover.directive.d.ts +1 -0
- package/directives/hint/hint.component.d.ts +1 -1
- package/esm2022/components/button/button.directive.mjs +2 -2
- package/esm2022/components/data-list/data-list.component.mjs +3 -3
- package/esm2022/components/icon/icon.component.mjs +2 -2
- package/esm2022/components/label/label.directive.mjs +3 -3
- package/esm2022/components/link/link.directive.mjs +3 -3
- package/esm2022/components/notification/notification.directive.mjs +3 -3
- package/esm2022/components/root/root.component.mjs +3 -3
- package/esm2022/components/textfield/textfield-multi/textfield-multi.component.mjs +3 -3
- package/esm2022/components/textfield/textfield.component.mjs +3 -3
- package/esm2022/directives/appearance/appearance.directive.mjs +3 -3
- package/esm2022/directives/dropdown/dropdown-context.directive.mjs +7 -4
- package/esm2022/directives/dropdown/dropdown-hover.directive.mjs +22 -9
- package/esm2022/directives/dropdown/dropdown.component.mjs +2 -2
- package/esm2022/directives/group/group.directive.mjs +3 -3
- package/esm2022/directives/hint/hint-hover.directive.mjs +10 -3
- package/esm2022/directives/hint/hint.component.mjs +4 -4
- package/esm2022/directives/icons/icons.directive.mjs +3 -3
- package/esm2022/directives/title/title.directive.mjs +3 -3
- package/fesm2022/taiga-ui-core-components-button.mjs +2 -2
- package/fesm2022/taiga-ui-core-components-data-list.mjs +3 -3
- package/fesm2022/taiga-ui-core-components-icon.mjs +2 -2
- package/fesm2022/taiga-ui-core-components-label.mjs +3 -3
- package/fesm2022/taiga-ui-core-components-link.mjs +3 -3
- package/fesm2022/taiga-ui-core-components-notification.mjs +3 -3
- package/fesm2022/taiga-ui-core-components-root.mjs +2 -2
- package/fesm2022/taiga-ui-core-components-root.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-textfield.mjs +6 -6
- package/fesm2022/taiga-ui-core-directives-appearance.mjs +3 -3
- package/fesm2022/taiga-ui-core-directives-dropdown.mjs +28 -12
- package/fesm2022/taiga-ui-core-directives-dropdown.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-directives-group.mjs +3 -3
- package/fesm2022/taiga-ui-core-directives-hint.mjs +12 -5
- package/fesm2022/taiga-ui-core-directives-hint.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-directives-icons.mjs +3 -3
- package/fesm2022/taiga-ui-core-directives-title.mjs +3 -3
- package/package.json +15 -15
- package/styles/components/textfield.less +1 -1
- 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.
|
|
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.
|
|
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.
|
|
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
|
|
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';
|
|
@@ -421,7 +421,7 @@ class TuiDropdownComponent {
|
|
|
421
421
|
TuiPositionService,
|
|
422
422
|
tuiPositionAccessorFor('dropdown', TuiDropdownPosition),
|
|
423
423
|
tuiRectAccessorFor('dropdown', TuiDropdownDirective),
|
|
424
|
-
], hostDirectives: [{ directive: i1.TuiActiveZone }, { directive: i2.TuiAnimated }], ngImport: i0, template: "<tui-scrollbar class=\"t-scroll\">\n <div\n *polymorpheusOutlet=\"directive._content() as text; context: {$implicit: close}\"\n class=\"t-primitive\"\n >\n {{ text }}\n </div>\n</tui-scrollbar>\n", styles: [":host{position:absolute;display:flex;box-shadow:var(--tui-shadow-medium);color:var(--tui-text-primary);background:var(--tui-background-elevation-
|
|
424
|
+
], hostDirectives: [{ directive: i1.TuiActiveZone }, { directive: i2.TuiAnimated }], ngImport: i0, template: "<tui-scrollbar class=\"t-scroll\">\n <div\n *polymorpheusOutlet=\"directive._content() as text; context: {$implicit: close}\"\n class=\"t-primitive\"\n >\n {{ text }}\n </div>\n</tui-scrollbar>\n", styles: [":host{position:absolute;display:flex;box-shadow:var(--tui-shadow-medium);color:var(--tui-text-primary);background:var(--tui-background-elevation-1);border-radius:var(--tui-radius-m);overflow:hidden;border:1px solid var(--tui-border-normal);box-sizing:border-box;isolation:isolate;pointer-events:auto;--tui-from: translateY(-1rem)}:host.tui-enter,:host.tui-leave{animation-name:tuiFade,tuiSlide}:host:not([style*=top]){visibility:hidden}.t-scroll{flex-grow:1;max-inline-size:100%;inline-size:-webkit-max-content;inline-size:max-content;overscroll-behavior:none}.t-primitive{padding:1rem}\n"], dependencies: [{ kind: "directive", type: PolymorpheusOutlet, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }, { kind: "component", type: TuiScrollbar, selector: "tui-scrollbar", inputs: ["hidden"] }], changeDetection: i0.ChangeDetectionStrategy.Default }); }
|
|
425
425
|
}
|
|
426
426
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiDropdownComponent, decorators: [{
|
|
427
427
|
type: Component,
|
|
@@ -432,7 +432,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
432
432
|
], hostDirectives: [TuiActiveZone, TuiAnimated], host: {
|
|
433
433
|
'[attr.data-appearance]': 'options.appearance',
|
|
434
434
|
'[attr.tuiTheme]': 'theme()',
|
|
435
|
-
}, template: "<tui-scrollbar class=\"t-scroll\">\n <div\n *polymorpheusOutlet=\"directive._content() as text; context: {$implicit: close}\"\n class=\"t-primitive\"\n >\n {{ text }}\n </div>\n</tui-scrollbar>\n", styles: [":host{position:absolute;display:flex;box-shadow:var(--tui-shadow-medium);color:var(--tui-text-primary);background:var(--tui-background-elevation-
|
|
435
|
+
}, template: "<tui-scrollbar class=\"t-scroll\">\n <div\n *polymorpheusOutlet=\"directive._content() as text; context: {$implicit: close}\"\n class=\"t-primitive\"\n >\n {{ text }}\n </div>\n</tui-scrollbar>\n", styles: [":host{position:absolute;display:flex;box-shadow:var(--tui-shadow-medium);color:var(--tui-text-primary);background:var(--tui-background-elevation-1);border-radius:var(--tui-radius-m);overflow:hidden;border:1px solid var(--tui-border-normal);box-sizing:border-box;isolation:isolate;pointer-events:auto;--tui-from: translateY(-1rem)}:host.tui-enter,:host.tui-leave{animation-name:tuiFade,tuiSlide}:host:not([style*=top]){visibility:hidden}.t-scroll{flex-grow:1;max-inline-size:100%;inline-size:-webkit-max-content;inline-size:max-content;overscroll-behavior:none}.t-primitive{padding:1rem}\n"] }]
|
|
436
436
|
}] });
|
|
437
437
|
|
|
438
438
|
class TuiDropdownContext extends TuiRectAccessor {
|
|
@@ -440,6 +440,7 @@ class TuiDropdownContext extends TuiRectAccessor {
|
|
|
440
440
|
super(...arguments);
|
|
441
441
|
this.zone = inject(NgZone);
|
|
442
442
|
this.isTouch = inject(TUI_IS_TOUCH);
|
|
443
|
+
this.el = tuiInjectElement();
|
|
443
444
|
this.currentRect = EMPTY_CLIENT_RECT;
|
|
444
445
|
this.userSelect = computed(() => (this.isTouch() ? 'none' : null));
|
|
445
446
|
this.activeZone = inject(TuiActiveZone);
|
|
@@ -454,8 +455,10 @@ class TuiDropdownContext extends TuiRectAccessor {
|
|
|
454
455
|
return this.currentRect;
|
|
455
456
|
}
|
|
456
457
|
closeDropdown(event) {
|
|
457
|
-
|
|
458
|
-
|
|
458
|
+
const target = event ? tuiGetActualTarget(event) : null;
|
|
459
|
+
if (!target ||
|
|
460
|
+
(this.driver.value &&
|
|
461
|
+
(!this.activeZone.contains(target) || this.el.contains(target)))) {
|
|
459
462
|
this.zone.run(() => {
|
|
460
463
|
this.driver.next(false);
|
|
461
464
|
this.currentRect = EMPTY_CLIENT_RECT;
|
|
@@ -682,10 +685,9 @@ class TuiDropdownHover extends TuiDriver {
|
|
|
682
685
|
* swipe on mobile devices removes dropdown sheet without triggering new mouseover / mouseout events.
|
|
683
686
|
*/
|
|
684
687
|
this.dropdownExternalRemoval$ = toObservable(inject(TuiDropdownDirective).ref).pipe(filter((x) => !x && this.hovered));
|
|
685
|
-
this.stream$ =
|
|
686
|
-
this.
|
|
687
|
-
|
|
688
|
-
}), share());
|
|
688
|
+
this.stream$ = isPlatformBrowser(inject(PLATFORM_ID))
|
|
689
|
+
? this.createStream()
|
|
690
|
+
: NEVER;
|
|
689
691
|
this.showDelay = this.options.showDelay;
|
|
690
692
|
this.hideDelay = this.options.hideDelay;
|
|
691
693
|
this.hovered = false;
|
|
@@ -702,6 +704,20 @@ class TuiDropdownHover extends TuiDriver {
|
|
|
702
704
|
const child = !this.el.contains(element) && this.activeZone.contains(element);
|
|
703
705
|
return hovered || child;
|
|
704
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
|
+
}
|
|
705
721
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiDropdownHover, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
706
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 }); }
|
|
707
723
|
}
|