@taiga-ui/core 5.25.0 → 5.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.
- package/classes/accessors.d.ts +3 -0
- package/components/scrollbar/scrollbar.component.d.ts +2 -2
- package/fesm2022/taiga-ui-core-classes.mjs +1 -0
- package/fesm2022/taiga-ui-core-classes.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-button.mjs +2 -2
- package/fesm2022/taiga-ui-core-components-cell.mjs +3 -3
- package/fesm2022/taiga-ui-core-components-checkbox.mjs +2 -2
- package/fesm2022/taiga-ui-core-components-data-list.mjs +4 -4
- 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 +2 -2
- package/fesm2022/taiga-ui-core-components-notification.mjs +2 -2
- package/fesm2022/taiga-ui-core-components-radio.mjs +2 -2
- package/fesm2022/taiga-ui-core-components-root.mjs +1 -1
- package/fesm2022/taiga-ui-core-components-scrollbar.mjs +13 -12
- package/fesm2022/taiga-ui-core-components-scrollbar.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-textfield.mjs +4 -4
- package/fesm2022/taiga-ui-core-components-title.mjs +3 -3
- package/fesm2022/taiga-ui-core-directives-appearance.mjs +3 -3
- package/fesm2022/taiga-ui-core-directives-group.mjs +3 -3
- package/fesm2022/taiga-ui-core-directives-icons.mjs +3 -3
- package/fesm2022/taiga-ui-core-portals-alert.mjs +3 -3
- package/fesm2022/taiga-ui-core-portals-dialog.mjs +2 -2
- package/fesm2022/taiga-ui-core-portals-dropdown.mjs +270 -163
- package/fesm2022/taiga-ui-core-portals-dropdown.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-portals-hint.mjs +7 -21
- package/fesm2022/taiga-ui-core-portals-hint.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-portals-modal.mjs +3 -3
- package/fesm2022/taiga-ui-core-tokens.mjs +1 -1
- package/fesm2022/taiga-ui-core-tokens.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-utils-dom.mjs +21 -1
- package/fesm2022/taiga-ui-core-utils-dom.mjs.map +1 -1
- package/package.json +59 -59
- package/portals/dropdown/dropdown-anchored.directive.d.ts +4 -1
- package/portals/dropdown/dropdown-context.directive.d.ts +3 -4
- package/portals/dropdown/dropdown-position-sided.directive.d.ts +2 -0
- package/portals/dropdown/dropdown-position.directive.d.ts +2 -0
- package/portals/dropdown/dropdown-selection.directive.d.ts +1 -1
- package/portals/dropdown/dropdown.component.d.ts +10 -8
- package/portals/dropdown/dropdown.providers.d.ts +2 -3
- package/portals/hint/hint-pointer.directive.d.ts +1 -3
- package/utils/dom/anchor-delegate.d.ts +1 -0
- package/utils/dom/index.d.ts +1 -0
|
@@ -46,11 +46,11 @@ const TUI_NOTIFICATION_CONCURRENCY = new InjectionToken(ngDevMode ? 'TUI_NOTIFIC
|
|
|
46
46
|
|
|
47
47
|
class Styles {
|
|
48
48
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: Styles, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
49
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.25", type: Styles, isStandalone: true, selector: "ng-component", exportAs: ["tui-notification-5.
|
|
49
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.25", type: Styles, isStandalone: true, selector: "ng-component", exportAs: ["tui-notification-5.26.0"], ngImport: i0, template: '', isInline: true, styles: ["[tuiNotification]:where(*[data-tui-version=\"5.26.0\"]){-webkit-appearance:none;appearance:none;padding:0;border:0;background:none;font:inherit;line-height:inherit;position:relative;display:flow-root;max-block-size:100%;color:var(--tui-text-primary);padding:var(--t-offset) var(--tui-padding-l);font:var(--tui-typography-body-m);border-radius:var(--tui-radius-l);box-sizing:border-box;text-align:start;text-decoration:none;border-inline-start:var(--t-start) solid transparent;border-inline-end:var(--t-end) solid transparent;--t-offset: calc((var(--t-height) - var(--tui-lh)) / 2);--t-height: var(--tui-height-l);--t-start: 0;--t-end: 0}[tuiNotification]:where(*[data-tui-version=\"5.26.0\"]):is(a,button,select,textarea,input,label,.tui-interactive):not(:disabled){cursor:pointer}[tuiNotification]:where(*[data-tui-version=\"5.26.0\"])[data-icon-start]{--t-start: 2rem}[tuiNotification]:where(*[data-tui-version=\"5.26.0\"])[data-icon-end]{--t-end: 1.5rem}[tuiNotification]:where(*[data-tui-version=\"5.26.0\"]):before{position:absolute;inset-inline-start:-1rem;inset-block-start:calc((var(--t-offset) + var(--tui-lh)) * (1 - .15 * var(--t-zoom)));transform:translateY(-100%)}[tuiNotification]:where(*[data-tui-version=\"5.26.0\"]):after{position:absolute;top:50%;transform:translateY(-50%);inset-inline-end:-.5rem;font-size:1rem;margin:0;margin-inline-end:-.25rem;margin-inline-start:auto;color:var(--tui-text-tertiary)!important}[tuiNotification]:where(*[data-tui-version=\"5.26.0\"])[data-size=s]{padding:var(--t-offset) .5rem;font:var(--tui-typography-body-s);border-radius:var(--tui-radius-m);--t-height: var(--tui-height-s)}[tuiNotification]:where(*[data-tui-version=\"5.26.0\"])[data-size=s][data-icon-start]{--t-start: 1.5rem}[tuiNotification]:where(*[data-tui-version=\"5.26.0\"])[data-size=s]:before{inset-inline-start:calc(-1rem * (1 - .2 * var(--t-zoom)));inset-block-start:calc((var(--t-offset) + var(--tui-lh)) * (1 - .1 * var(--t-zoom)));font-size:1rem}[tuiNotification]:where(*[data-tui-version=\"5.26.0\"])[data-size=s]:after{inset-inline-end:-.875rem}[tuiNotification]:where(*[data-tui-version=\"5.26.0\"])[data-size=s] tui-icon{font-size:1rem}[tuiNotification]:where(*[data-tui-version=\"5.26.0\"])[data-size=s] [tuiTitle]{font:var(--tui-typography-body-s);font-weight:700}[tuiNotification]:where(*[data-tui-version=\"5.26.0\"])[data-size=s] [tuiSubtitle]{font:var(--tui-typography-body-s)}[tuiNotification]:where(*[data-tui-version=\"5.26.0\"])[data-size=s] [tuiSubtitle]+*{gap:1rem;margin:.375rem 0 .25rem}[tuiNotification]:where(*[data-tui-version=\"5.26.0\"])[data-size=s]>[tuiIconButton]{inset-block-start:0;inset-inline-end:0}[tuiNotification]:where(*[data-tui-version=\"5.26.0\"])[data-size=m]{padding:var(--t-offset) var(--tui-padding-m);font:var(--tui-typography-body-s);border-radius:var(--tui-radius-m);--t-height: var(--tui-height-m)}[tuiNotification]:where(*[data-tui-version=\"5.26.0\"])[data-size=m][data-icon-start]{--t-start: 1.625rem}[tuiNotification]:where(*[data-tui-version=\"5.26.0\"])[data-size=m]:before{inset-inline-start:-.875rem;font-size:1.25rem}[tuiNotification]:where(*[data-tui-version=\"5.26.0\"])[data-size=m]:after{inset-inline-end:-.75rem}[tuiNotification]:where(*[data-tui-version=\"5.26.0\"])[data-size=m] tui-icon{font-size:1.25rem}[tuiNotification]:where(*[data-tui-version=\"5.26.0\"])[data-size=m] [tuiTitle]{font:var(--tui-typography-ui-m);font-weight:700}[tuiNotification]:where(*[data-tui-version=\"5.26.0\"])[data-size=m] [tuiSubtitle]{font:var(--tui-typography-body-s)}[tuiNotification]:where(*[data-tui-version=\"5.26.0\"])[data-size=m] [tuiSubtitle]+*{gap:1rem;margin:.625rem 0 .25rem}[tuiNotification]:where(*[data-tui-version=\"5.26.0\"])[data-size=m]>[tuiIconButton]{inset-block-start:.375rem;inset-inline-end:.5rem}[tuiNotification]:where(*[data-tui-version=\"5.26.0\"]) [tuiTitle]{gap:.125rem;font:var(--tui-typography-ui-l);font-weight:700}[tuiNotification]:where(*[data-tui-version=\"5.26.0\"]) [tuiSubtitle]{font:var(--tui-typography-body-m)}[tuiNotification]:where(*[data-tui-version=\"5.26.0\"]) [tuiSubtitle]+*{display:flex;align-items:center;gap:1.25rem;margin-block-start:.625rem;font:var(--tui-typography-body-s)}[tuiNotification]:where(*[data-tui-version=\"5.26.0\"])>[tuiIconButton]{position:absolute;inset-block-start:.75rem;inset-inline-end:.75rem;box-shadow:none!important;background:transparent!important}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
50
50
|
}
|
|
51
51
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: Styles, decorators: [{
|
|
52
52
|
type: Component,
|
|
53
|
-
args: [{ template: '', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, exportAs: `tui-notification-${TUI_VERSION}`, styles: ["[tuiNotification]:where(*[data-tui-version=\"5.
|
|
53
|
+
args: [{ template: '', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, exportAs: `tui-notification-${TUI_VERSION}`, styles: ["[tuiNotification]:where(*[data-tui-version=\"5.26.0\"]){-webkit-appearance:none;appearance:none;padding:0;border:0;background:none;font:inherit;line-height:inherit;position:relative;display:flow-root;max-block-size:100%;color:var(--tui-text-primary);padding:var(--t-offset) var(--tui-padding-l);font:var(--tui-typography-body-m);border-radius:var(--tui-radius-l);box-sizing:border-box;text-align:start;text-decoration:none;border-inline-start:var(--t-start) solid transparent;border-inline-end:var(--t-end) solid transparent;--t-offset: calc((var(--t-height) - var(--tui-lh)) / 2);--t-height: var(--tui-height-l);--t-start: 0;--t-end: 0}[tuiNotification]:where(*[data-tui-version=\"5.26.0\"]):is(a,button,select,textarea,input,label,.tui-interactive):not(:disabled){cursor:pointer}[tuiNotification]:where(*[data-tui-version=\"5.26.0\"])[data-icon-start]{--t-start: 2rem}[tuiNotification]:where(*[data-tui-version=\"5.26.0\"])[data-icon-end]{--t-end: 1.5rem}[tuiNotification]:where(*[data-tui-version=\"5.26.0\"]):before{position:absolute;inset-inline-start:-1rem;inset-block-start:calc((var(--t-offset) + var(--tui-lh)) * (1 - .15 * var(--t-zoom)));transform:translateY(-100%)}[tuiNotification]:where(*[data-tui-version=\"5.26.0\"]):after{position:absolute;top:50%;transform:translateY(-50%);inset-inline-end:-.5rem;font-size:1rem;margin:0;margin-inline-end:-.25rem;margin-inline-start:auto;color:var(--tui-text-tertiary)!important}[tuiNotification]:where(*[data-tui-version=\"5.26.0\"])[data-size=s]{padding:var(--t-offset) .5rem;font:var(--tui-typography-body-s);border-radius:var(--tui-radius-m);--t-height: var(--tui-height-s)}[tuiNotification]:where(*[data-tui-version=\"5.26.0\"])[data-size=s][data-icon-start]{--t-start: 1.5rem}[tuiNotification]:where(*[data-tui-version=\"5.26.0\"])[data-size=s]:before{inset-inline-start:calc(-1rem * (1 - .2 * var(--t-zoom)));inset-block-start:calc((var(--t-offset) + var(--tui-lh)) * (1 - .1 * var(--t-zoom)));font-size:1rem}[tuiNotification]:where(*[data-tui-version=\"5.26.0\"])[data-size=s]:after{inset-inline-end:-.875rem}[tuiNotification]:where(*[data-tui-version=\"5.26.0\"])[data-size=s] tui-icon{font-size:1rem}[tuiNotification]:where(*[data-tui-version=\"5.26.0\"])[data-size=s] [tuiTitle]{font:var(--tui-typography-body-s);font-weight:700}[tuiNotification]:where(*[data-tui-version=\"5.26.0\"])[data-size=s] [tuiSubtitle]{font:var(--tui-typography-body-s)}[tuiNotification]:where(*[data-tui-version=\"5.26.0\"])[data-size=s] [tuiSubtitle]+*{gap:1rem;margin:.375rem 0 .25rem}[tuiNotification]:where(*[data-tui-version=\"5.26.0\"])[data-size=s]>[tuiIconButton]{inset-block-start:0;inset-inline-end:0}[tuiNotification]:where(*[data-tui-version=\"5.26.0\"])[data-size=m]{padding:var(--t-offset) var(--tui-padding-m);font:var(--tui-typography-body-s);border-radius:var(--tui-radius-m);--t-height: var(--tui-height-m)}[tuiNotification]:where(*[data-tui-version=\"5.26.0\"])[data-size=m][data-icon-start]{--t-start: 1.625rem}[tuiNotification]:where(*[data-tui-version=\"5.26.0\"])[data-size=m]:before{inset-inline-start:-.875rem;font-size:1.25rem}[tuiNotification]:where(*[data-tui-version=\"5.26.0\"])[data-size=m]:after{inset-inline-end:-.75rem}[tuiNotification]:where(*[data-tui-version=\"5.26.0\"])[data-size=m] tui-icon{font-size:1.25rem}[tuiNotification]:where(*[data-tui-version=\"5.26.0\"])[data-size=m] [tuiTitle]{font:var(--tui-typography-ui-m);font-weight:700}[tuiNotification]:where(*[data-tui-version=\"5.26.0\"])[data-size=m] [tuiSubtitle]{font:var(--tui-typography-body-s)}[tuiNotification]:where(*[data-tui-version=\"5.26.0\"])[data-size=m] [tuiSubtitle]+*{gap:1rem;margin:.625rem 0 .25rem}[tuiNotification]:where(*[data-tui-version=\"5.26.0\"])[data-size=m]>[tuiIconButton]{inset-block-start:.375rem;inset-inline-end:.5rem}[tuiNotification]:where(*[data-tui-version=\"5.26.0\"]) [tuiTitle]{gap:.125rem;font:var(--tui-typography-ui-l);font-weight:700}[tuiNotification]:where(*[data-tui-version=\"5.26.0\"]) [tuiSubtitle]{font:var(--tui-typography-body-m)}[tuiNotification]:where(*[data-tui-version=\"5.26.0\"]) [tuiSubtitle]+*{display:flex;align-items:center;gap:1.25rem;margin-block-start:.625rem;font:var(--tui-typography-body-s)}[tuiNotification]:where(*[data-tui-version=\"5.26.0\"])>[tuiIconButton]{position:absolute;inset-block-start:.75rem;inset-inline-end:.75rem;box-shadow:none!important;background:transparent!important}\n"] }]
|
|
54
54
|
}] });
|
|
55
55
|
class TuiNotificationDirective {
|
|
56
56
|
constructor() {
|
|
@@ -43,7 +43,7 @@ class TuiRadioComponent {
|
|
|
43
43
|
this.appearance.set(this.options.appearance(this.el));
|
|
44
44
|
}
|
|
45
45
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: TuiRadioComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
46
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.25", type: TuiRadioComponent, isStandalone: true, selector: "input[type=\"radio\"][tuiRadio]", inputs: { size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.data-size": "size()", "class._readonly": "!control", "disabled": "!control || control.disabled" } }, hostDirectives: [{ directive: i1.TuiAppearance, inputs: ["tuiAppearanceState", "tuiAppearanceState", "tuiAppearanceFocus", "tuiAppearanceFocus", "tuiAppearanceMode", "tuiAppearanceMode"] }, { directive: i2.TuiNativeValidator }], ngImport: i0, template: '', isInline: true, styles: ["[tuiRadio]:where(*[data-tui-version=\"5.
|
|
46
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.25", type: TuiRadioComponent, isStandalone: true, selector: "input[type=\"radio\"][tuiRadio]", inputs: { size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.data-size": "size()", "class._readonly": "!control", "disabled": "!control || control.disabled" } }, hostDirectives: [{ directive: i1.TuiAppearance, inputs: ["tuiAppearanceState", "tuiAppearanceState", "tuiAppearanceFocus", "tuiAppearanceFocus", "tuiAppearanceMode", "tuiAppearanceMode"] }, { directive: i2.TuiNativeValidator }], ngImport: i0, template: '', isInline: true, styles: ["[tuiRadio]:where(*[data-tui-version=\"5.26.0\"]){--t-size: 1.5rem;transition-property:background,box-shadow;transition-duration:calc(var(--tui-duration) / 2);transition-timing-function:var(--tui-curve-productive-standard);inline-size:var(--t-size);block-size:var(--t-size);cursor:pointer;margin:0;flex-shrink:0;border-radius:100%;color:var(--tui-text-primary-on-accent-1)}[tuiRadio]:where(*[data-tui-version=\"5.26.0\"]):disabled._readonly._readonly{opacity:1}[tuiRadio]:where(*[data-tui-version=\"5.26.0\"]):before{content:\"\";position:absolute;inset:0;margin:auto;border-radius:100%;background:currentColor;scale:0;transition-property:scale}[tuiRadio]:where(*[data-tui-version=\"5.26.0\"]):checked:before{scale:.5}[tuiRadio]:where(*[data-tui-version=\"5.26.0\"])[data-size=s]{--t-size: 1rem}[tuiRadio]:where(*[data-tui-version=\"5.26.0\"]):invalid:not([data-mode]),[tuiRadio]:where(*[data-tui-version=\"5.26.0\"])[data-mode~=invalid]{color:#fff}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
47
47
|
}
|
|
48
48
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: TuiRadioComponent, decorators: [{
|
|
49
49
|
type: Component,
|
|
@@ -57,7 +57,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImpo
|
|
|
57
57
|
'[attr.data-size]': 'size()',
|
|
58
58
|
'[class._readonly]': '!control',
|
|
59
59
|
'[disabled]': '!control || control.disabled',
|
|
60
|
-
}, styles: ["[tuiRadio]:where(*[data-tui-version=\"5.
|
|
60
|
+
}, styles: ["[tuiRadio]:where(*[data-tui-version=\"5.26.0\"]){--t-size: 1.5rem;transition-property:background,box-shadow;transition-duration:calc(var(--tui-duration) / 2);transition-timing-function:var(--tui-curve-productive-standard);inline-size:var(--t-size);block-size:var(--t-size);cursor:pointer;margin:0;flex-shrink:0;border-radius:100%;color:var(--tui-text-primary-on-accent-1)}[tuiRadio]:where(*[data-tui-version=\"5.26.0\"]):disabled._readonly._readonly{opacity:1}[tuiRadio]:where(*[data-tui-version=\"5.26.0\"]):before{content:\"\";position:absolute;inset:0;margin:auto;border-radius:100%;background:currentColor;scale:0;transition-property:scale}[tuiRadio]:where(*[data-tui-version=\"5.26.0\"]):checked:before{scale:.5}[tuiRadio]:where(*[data-tui-version=\"5.26.0\"])[data-size=s]{--t-size: 1rem}[tuiRadio]:where(*[data-tui-version=\"5.26.0\"]):invalid:not([data-mode]),[tuiRadio]:where(*[data-tui-version=\"5.26.0\"])[data-mode~=invalid]{color:#fff}\n"] }]
|
|
61
61
|
}] });
|
|
62
62
|
|
|
63
63
|
class TuiRadioDirective {
|
|
@@ -36,7 +36,7 @@ class TuiRoot {
|
|
|
36
36
|
: !this.child;
|
|
37
37
|
}
|
|
38
38
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: TuiRoot, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
39
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.25", type: TuiRoot, isStandalone: true, selector: "tui-root", host: { attributes: { "data-tui-version": "5.
|
|
39
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.25", type: TuiRoot, isStandalone: true, selector: "tui-root", host: { attributes: { "data-tui-version": "5.26.0" }, listeners: { "document:fullscreenchange": "top.set(parent)", "touchstart.passive.zoneless": "0" }, properties: { "class._mobile": "breakpoint() === \"mobile\"", "class.tui-liquid-glass": "liquidGlass", "style.--tui-duration.ms": "duration", "style.--tui-scroll-behavior": "reducedMotion ? \"auto\" : \"smooth\"" } }, hostDirectives: [{ directive: i1.TuiPlatform }, { directive: i2.TuiVisualViewport }, { directive: i3.TuiFontSize }], ngImport: i0, template: `
|
|
40
40
|
<div class="t-root-content"><ng-content /></div>
|
|
41
41
|
@if (top()) {
|
|
42
42
|
@if (scrollbars) {
|
|
@@ -23,11 +23,11 @@ const TUI_SCROLL_REF = new InjectionToken(ngDevMode ? 'TUI_SCROLL_REF' : '', {
|
|
|
23
23
|
});
|
|
24
24
|
class Styles {
|
|
25
25
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: Styles, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
26
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.25", type: Styles, isStandalone: true, selector: "ng-component", exportAs: ["tui-scroll-ref-5.
|
|
26
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.25", type: Styles, isStandalone: true, selector: "ng-component", exportAs: ["tui-scroll-ref-5.26.0"], ngImport: i0, template: '', isInline: true, styles: ["[tuiScrollRef]:where(*[data-tui-version=\"5.26.0\"]){timeline-scope:--t-scrollbar-y,--t-scrollbar-x;anchor-name:--t-scrollbar;anchor-scope:--t-scrollbar;scroll-timeline:--t-scrollbar-x x,--t-scrollbar-y y}[tuiScrollRef]:where(*[data-tui-version=\"5.26.0\"])[tuiScrollable]{timeline-scope:none}[tuiScrollRef]:where(*[data-tui-version=\"5.26.0\"]):not(._native){scrollbar-width:none}[tuiScrollRef]:where(*[data-tui-version=\"5.26.0\"]):not(._native)::-webkit-scrollbar,[tuiScrollRef]:where(*[data-tui-version=\"5.26.0\"]):not(._native)::-webkit-scrollbar-thumb{display:none}[tuiScrollRef]:where(*[data-tui-version=\"5.26.0\"]):where(cdk-virtual-scroll-viewport){display:flex}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
27
27
|
}
|
|
28
28
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: Styles, decorators: [{
|
|
29
29
|
type: Component,
|
|
30
|
-
args: [{ template: '', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, exportAs: `tui-scroll-ref-${TUI_VERSION}`, styles: ["[tuiScrollRef]:where(*[data-tui-version=\"5.
|
|
30
|
+
args: [{ template: '', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, exportAs: `tui-scroll-ref-${TUI_VERSION}`, styles: ["[tuiScrollRef]:where(*[data-tui-version=\"5.26.0\"]){timeline-scope:--t-scrollbar-y,--t-scrollbar-x;anchor-name:--t-scrollbar;anchor-scope:--t-scrollbar;scroll-timeline:--t-scrollbar-x x,--t-scrollbar-y y}[tuiScrollRef]:where(*[data-tui-version=\"5.26.0\"])[tuiScrollable]{timeline-scope:none}[tuiScrollRef]:where(*[data-tui-version=\"5.26.0\"]):not(._native){scrollbar-width:none}[tuiScrollRef]:where(*[data-tui-version=\"5.26.0\"]):not(._native)::-webkit-scrollbar,[tuiScrollRef]:where(*[data-tui-version=\"5.26.0\"]):not(._native)::-webkit-scrollbar-thumb{display:none}[tuiScrollRef]:where(*[data-tui-version=\"5.26.0\"]):where(cdk-virtual-scroll-viewport){display:flex}\n"] }]
|
|
31
31
|
}] });
|
|
32
32
|
class TuiScrollRef {
|
|
33
33
|
constructor() {
|
|
@@ -37,7 +37,7 @@ class TuiScrollRef {
|
|
|
37
37
|
this.options.mode === 'native';
|
|
38
38
|
}
|
|
39
39
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: TuiScrollRef, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
40
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.25", type: TuiScrollRef, isStandalone: true, selector: "[tuiScrollRef]", host: { attributes: { "data-tui-version": "5.
|
|
40
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.25", type: TuiScrollRef, isStandalone: true, selector: "[tuiScrollRef]", host: { attributes: { "data-tui-version": "5.26.0", "tuiScrollRef": "" }, properties: { "class._native": "native" } }, providers: [tuiProvide(TUI_SCROLL_REF, ElementRef)], ngImport: i0 }); }
|
|
41
41
|
}
|
|
42
42
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: TuiScrollRef, decorators: [{
|
|
43
43
|
type: Directive,
|
|
@@ -212,11 +212,11 @@ class TuiScrollControls {
|
|
|
212
212
|
this.scrollable?.getElementRef().nativeElement.prepend?.(this.el);
|
|
213
213
|
}
|
|
214
214
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: TuiScrollControls, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
215
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.25", type: TuiScrollControls, isStandalone: true, selector: "tui-scroll-controls", host: { properties: { "class._timeline": "timeline" } }, providers: [TuiScrollControlsService], ngImport: i0, template: "@if (!hidden) {\n @if (refresh$ | async; as bars) {\n @if (bars[0]) {\n <div\n tuiAnimated\n class=\"t-bar t-bar_vertical\"\n (mousedown.capture.prevent)=\"(0)\"\n >\n <div\n tuiScrollbar=\"vertical\"\n class=\"t-thumb\"\n ></div>\n </div>\n }\n @if (bars[1]) {\n <div\n tuiAnimated\n class=\"t-bar t-bar_horizontal\"\n (mousedown.capture.prevent)=\"(0)\"\n >\n <div\n tuiScrollbar=\"horizontal\"\n class=\"t-thumb\"\n ></div>\n </div>\n }\n }\n}\n", styles: ["@property --t-scroll-start{syntax: \"<number>\"; inherits: true; initial-value: 0;}@property --t-scroll-end{syntax: \"<number>\"; inherits: true; initial-value: 0;}@keyframes tuiScrollbarStart{0%{--t-scroll-start: 1}to{--t-scroll-start: 0}}@keyframes tuiScrollbarEnd{0%{--t-scroll-end: 0}to{--t-scroll-end: 1}}@keyframes tuiScrollbar{0%,to{--t-opacity: 1}}@keyframes tuiScrollbarX{0%,to{--t-events-x: auto}}@keyframes tuiScrollbarY{0%,to{--t-events-y: auto}}:host{position:sticky;z-index:1;display:block;inset-block-start:0;inset-inline-start:0;min-inline-size:calc(100% - 1px);min-block-size:calc(100% - 1px);max-inline-size:calc(100% - 1px);max-block-size:calc(100% - 1px);margin-inline-end:calc(-100% + 1px);pointer-events:none;overflow:hidden;color:var(--tui-text-primary);container-type:size;animation-name:tuiScrollbarX,tuiScrollbarY;animation-timeline:--t-scrollbar-x,--t-scrollbar-y;--t-events-y: none;--t-events-x: none}:host:not(._timeline){--t-events-y: auto;--t-events-x: auto}:host:not(._timeline) .t-thumb{--t-opacity: 1}::ng-deep [tuiScrollable]{scrollbar-width:none}::ng-deep [tuiScrollable]::-webkit-scrollbar,::ng-deep [tuiScrollable]::-webkit-scrollbar-thumb{display:none}.t-bar{position:absolute;inset-inline-end:0;inset-block:.25rem;inline-size:.875rem;pointer-events:var(--t-events-y)}.t-bar.tui-enter,.t-bar.tui-leave{animation-name:tuiFade}.t-bar_horizontal{writing-mode:vertical-lr;direction:ltr;pointer-events:var(--t-events-x)}:host-context([dir=\"rtl\"]) .t-bar_horizontal{writing-mode:vertical-rl}.t-bar_horizontal .t-thumb{animation-timeline:--t-scrollbar-x}.t-thumb{transition-property:all;transition-duration:calc(var(--tui-duration) / 2);transition-timing-function:var(--tui-curve-productive-standard);position:absolute;border-radius:6.25rem;border:.25rem solid transparent;cursor:pointer;-webkit-user-select:none;user-select:none;background:currentColor;background-clip:content-box;box-sizing:border-box;transition-property:width,height,opacity;inline-size:.75rem;min-block-size:1.25rem;inset-block-start:min(calc(100% - var(--t-scroll-start) * 100%),calc(100% - 1.25rem));inset-block-end:calc(100% - var(--t-scroll-end) * 100%);inset-inline-end:0;opacity:calc(.2 * var(--t-opacity));animation-name:tuiScrollbarStart,tuiScrollbarEnd,tuiScrollbar;animation-timing-function:linear;animation-timeline:--t-scrollbar-y;animation-range:0 calc(100% + 100cqb),calc(0% - 100cqb) 100%;animation-fill-mode:both;--t-opacity: 0}.t-thumb:hover{opacity:calc(.24 * var(--t-opacity))}.t-thumb:active{opacity:calc(.48 * var(--t-opacity))}.t-bar:hover .t-thumb,.t-bar .t-thumb:active{inline-size:.875rem}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: TuiAnimated, selector: "[tuiAnimated]" }, { kind: "directive", type: TuiScrollbarDirective, selector: "[tuiScrollbar]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
215
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.25", type: TuiScrollControls, isStandalone: true, selector: "tui-scroll-controls", host: { properties: { "class._timeline": "timeline" } }, providers: [TuiScrollControlsService], ngImport: i0, template: "@if (!hidden) {\n @if (refresh$ | async; as bars) {\n @if (bars[0]) {\n <div\n tuiAnimated\n class=\"t-bar t-bar_vertical\"\n (mousedown.capture.prevent)=\"(0)\"\n >\n <div\n tuiScrollbar=\"vertical\"\n class=\"t-thumb\"\n ></div>\n </div>\n }\n @if (bars[1]) {\n <div\n tuiAnimated\n class=\"t-bar t-bar_horizontal\"\n (mousedown.capture.prevent)=\"(0)\"\n >\n <div\n tuiScrollbar=\"horizontal\"\n class=\"t-thumb\"\n ></div>\n </div>\n }\n }\n}\n", styles: ["@property --t-scroll-start{syntax: \"<number>\"; inherits: true; initial-value: 0;}@property --t-scroll-end{syntax: \"<number>\"; inherits: true; initial-value: 0;}@keyframes tuiScrollbarStart{0%{--t-scroll-start: 1}to{--t-scroll-start: 0}}@keyframes tuiScrollbarEnd{0%{--t-scroll-end: 0}to{--t-scroll-end: 1}}@keyframes tuiScrollbar{0%,to{--t-opacity: 1}}@keyframes tuiScrollbarX{0%,to{--t-events-x: auto}}@keyframes tuiScrollbarY{0%,to{--t-events-y: auto}}:host{transition-property:opacity;transition-duration:var(--tui-duration, .3s);transition-timing-function:var(--tui-curve-productive-standard);position:sticky;z-index:1;display:block;inset-block-start:0;inset-inline-start:0;min-inline-size:calc(100% - 1px);min-block-size:calc(100% - 1px);max-inline-size:calc(100% - 1px);max-block-size:calc(100% - 1px);margin-inline-end:calc(-100% + 1px);pointer-events:none;overflow:hidden;color:var(--tui-text-primary);container-type:size;animation-name:tuiScrollbarX,tuiScrollbarY;animation-timeline:--t-scrollbar-x,--t-scrollbar-y;--t-events-y: none;--t-events-x: none}:host:not(._timeline){--t-events-y: auto;--t-events-x: auto}:host:not(._timeline) .t-thumb{--t-opacity: 1}::ng-deep [tuiScrollable]{scrollbar-width:none}::ng-deep [tuiScrollable]::-webkit-scrollbar,::ng-deep [tuiScrollable]::-webkit-scrollbar-thumb{display:none}.t-bar{position:absolute;inset-inline-end:0;inset-block:.25rem;inline-size:.875rem;pointer-events:var(--t-events-y)}.t-bar.tui-enter,.t-bar.tui-leave{animation-name:tuiFade}.t-bar_horizontal{writing-mode:vertical-lr;direction:ltr;pointer-events:var(--t-events-x)}:host-context([dir=\"rtl\"]) .t-bar_horizontal{writing-mode:vertical-rl}.t-bar_horizontal .t-thumb{animation-timeline:--t-scrollbar-x}.t-thumb{transition-property:all;transition-duration:calc(var(--tui-duration) / 2);transition-timing-function:var(--tui-curve-productive-standard);position:absolute;border-radius:6.25rem;border:.25rem solid transparent;cursor:pointer;-webkit-user-select:none;user-select:none;background:currentColor;background-clip:content-box;box-sizing:border-box;transition-property:width,height,opacity;inline-size:.75rem;min-block-size:1.25rem;inset-block-start:min(calc(100% - var(--t-scroll-start) * 100%),calc(100% - 1.25rem));inset-block-end:calc(100% - var(--t-scroll-end) * 100%);inset-inline-end:0;opacity:calc(.2 * var(--t-opacity));animation-name:tuiScrollbarStart,tuiScrollbarEnd,tuiScrollbar;animation-timing-function:linear;animation-timeline:--t-scrollbar-y;animation-range:0 calc(100% + 100cqb),calc(0% - 100cqb) 100%;animation-fill-mode:both;--t-opacity: 0}.t-thumb:hover{opacity:calc(.24 * var(--t-opacity))}.t-thumb:active{opacity:calc(.48 * var(--t-opacity))}.t-bar:hover .t-thumb,.t-bar .t-thumb:active{inline-size:.875rem}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: TuiAnimated, selector: "[tuiAnimated]" }, { kind: "directive", type: TuiScrollbarDirective, selector: "[tuiScrollbar]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
216
216
|
}
|
|
217
217
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: TuiScrollControls, decorators: [{
|
|
218
218
|
type: Component,
|
|
219
|
-
args: [{ selector: 'tui-scroll-controls', imports: [AsyncPipe, TuiAnimated, TuiScrollbarDirective], changeDetection: ChangeDetectionStrategy.OnPush, providers: [TuiScrollControlsService], host: { '[class._timeline]': 'timeline' }, template: "@if (!hidden) {\n @if (refresh$ | async; as bars) {\n @if (bars[0]) {\n <div\n tuiAnimated\n class=\"t-bar t-bar_vertical\"\n (mousedown.capture.prevent)=\"(0)\"\n >\n <div\n tuiScrollbar=\"vertical\"\n class=\"t-thumb\"\n ></div>\n </div>\n }\n @if (bars[1]) {\n <div\n tuiAnimated\n class=\"t-bar t-bar_horizontal\"\n (mousedown.capture.prevent)=\"(0)\"\n >\n <div\n tuiScrollbar=\"horizontal\"\n class=\"t-thumb\"\n ></div>\n </div>\n }\n }\n}\n", styles: ["@property --t-scroll-start{syntax: \"<number>\"; inherits: true; initial-value: 0;}@property --t-scroll-end{syntax: \"<number>\"; inherits: true; initial-value: 0;}@keyframes tuiScrollbarStart{0%{--t-scroll-start: 1}to{--t-scroll-start: 0}}@keyframes tuiScrollbarEnd{0%{--t-scroll-end: 0}to{--t-scroll-end: 1}}@keyframes tuiScrollbar{0%,to{--t-opacity: 1}}@keyframes tuiScrollbarX{0%,to{--t-events-x: auto}}@keyframes tuiScrollbarY{0%,to{--t-events-y: auto}}:host{position:sticky;z-index:1;display:block;inset-block-start:0;inset-inline-start:0;min-inline-size:calc(100% - 1px);min-block-size:calc(100% - 1px);max-inline-size:calc(100% - 1px);max-block-size:calc(100% - 1px);margin-inline-end:calc(-100% + 1px);pointer-events:none;overflow:hidden;color:var(--tui-text-primary);container-type:size;animation-name:tuiScrollbarX,tuiScrollbarY;animation-timeline:--t-scrollbar-x,--t-scrollbar-y;--t-events-y: none;--t-events-x: none}:host:not(._timeline){--t-events-y: auto;--t-events-x: auto}:host:not(._timeline) .t-thumb{--t-opacity: 1}::ng-deep [tuiScrollable]{scrollbar-width:none}::ng-deep [tuiScrollable]::-webkit-scrollbar,::ng-deep [tuiScrollable]::-webkit-scrollbar-thumb{display:none}.t-bar{position:absolute;inset-inline-end:0;inset-block:.25rem;inline-size:.875rem;pointer-events:var(--t-events-y)}.t-bar.tui-enter,.t-bar.tui-leave{animation-name:tuiFade}.t-bar_horizontal{writing-mode:vertical-lr;direction:ltr;pointer-events:var(--t-events-x)}:host-context([dir=\"rtl\"]) .t-bar_horizontal{writing-mode:vertical-rl}.t-bar_horizontal .t-thumb{animation-timeline:--t-scrollbar-x}.t-thumb{transition-property:all;transition-duration:calc(var(--tui-duration) / 2);transition-timing-function:var(--tui-curve-productive-standard);position:absolute;border-radius:6.25rem;border:.25rem solid transparent;cursor:pointer;-webkit-user-select:none;user-select:none;background:currentColor;background-clip:content-box;box-sizing:border-box;transition-property:width,height,opacity;inline-size:.75rem;min-block-size:1.25rem;inset-block-start:min(calc(100% - var(--t-scroll-start) * 100%),calc(100% - 1.25rem));inset-block-end:calc(100% - var(--t-scroll-end) * 100%);inset-inline-end:0;opacity:calc(.2 * var(--t-opacity));animation-name:tuiScrollbarStart,tuiScrollbarEnd,tuiScrollbar;animation-timing-function:linear;animation-timeline:--t-scrollbar-y;animation-range:0 calc(100% + 100cqb),calc(0% - 100cqb) 100%;animation-fill-mode:both;--t-opacity: 0}.t-thumb:hover{opacity:calc(.24 * var(--t-opacity))}.t-thumb:active{opacity:calc(.48 * var(--t-opacity))}.t-bar:hover .t-thumb,.t-bar .t-thumb:active{inline-size:.875rem}\n"] }]
|
|
219
|
+
args: [{ selector: 'tui-scroll-controls', imports: [AsyncPipe, TuiAnimated, TuiScrollbarDirective], changeDetection: ChangeDetectionStrategy.OnPush, providers: [TuiScrollControlsService], host: { '[class._timeline]': 'timeline' }, template: "@if (!hidden) {\n @if (refresh$ | async; as bars) {\n @if (bars[0]) {\n <div\n tuiAnimated\n class=\"t-bar t-bar_vertical\"\n (mousedown.capture.prevent)=\"(0)\"\n >\n <div\n tuiScrollbar=\"vertical\"\n class=\"t-thumb\"\n ></div>\n </div>\n }\n @if (bars[1]) {\n <div\n tuiAnimated\n class=\"t-bar t-bar_horizontal\"\n (mousedown.capture.prevent)=\"(0)\"\n >\n <div\n tuiScrollbar=\"horizontal\"\n class=\"t-thumb\"\n ></div>\n </div>\n }\n }\n}\n", styles: ["@property --t-scroll-start{syntax: \"<number>\"; inherits: true; initial-value: 0;}@property --t-scroll-end{syntax: \"<number>\"; inherits: true; initial-value: 0;}@keyframes tuiScrollbarStart{0%{--t-scroll-start: 1}to{--t-scroll-start: 0}}@keyframes tuiScrollbarEnd{0%{--t-scroll-end: 0}to{--t-scroll-end: 1}}@keyframes tuiScrollbar{0%,to{--t-opacity: 1}}@keyframes tuiScrollbarX{0%,to{--t-events-x: auto}}@keyframes tuiScrollbarY{0%,to{--t-events-y: auto}}:host{transition-property:opacity;transition-duration:var(--tui-duration, .3s);transition-timing-function:var(--tui-curve-productive-standard);position:sticky;z-index:1;display:block;inset-block-start:0;inset-inline-start:0;min-inline-size:calc(100% - 1px);min-block-size:calc(100% - 1px);max-inline-size:calc(100% - 1px);max-block-size:calc(100% - 1px);margin-inline-end:calc(-100% + 1px);pointer-events:none;overflow:hidden;color:var(--tui-text-primary);container-type:size;animation-name:tuiScrollbarX,tuiScrollbarY;animation-timeline:--t-scrollbar-x,--t-scrollbar-y;--t-events-y: none;--t-events-x: none}:host:not(._timeline){--t-events-y: auto;--t-events-x: auto}:host:not(._timeline) .t-thumb{--t-opacity: 1}::ng-deep [tuiScrollable]{scrollbar-width:none}::ng-deep [tuiScrollable]::-webkit-scrollbar,::ng-deep [tuiScrollable]::-webkit-scrollbar-thumb{display:none}.t-bar{position:absolute;inset-inline-end:0;inset-block:.25rem;inline-size:.875rem;pointer-events:var(--t-events-y)}.t-bar.tui-enter,.t-bar.tui-leave{animation-name:tuiFade}.t-bar_horizontal{writing-mode:vertical-lr;direction:ltr;pointer-events:var(--t-events-x)}:host-context([dir=\"rtl\"]) .t-bar_horizontal{writing-mode:vertical-rl}.t-bar_horizontal .t-thumb{animation-timeline:--t-scrollbar-x}.t-thumb{transition-property:all;transition-duration:calc(var(--tui-duration) / 2);transition-timing-function:var(--tui-curve-productive-standard);position:absolute;border-radius:6.25rem;border:.25rem solid transparent;cursor:pointer;-webkit-user-select:none;user-select:none;background:currentColor;background-clip:content-box;box-sizing:border-box;transition-property:width,height,opacity;inline-size:.75rem;min-block-size:1.25rem;inset-block-start:min(calc(100% - var(--t-scroll-start) * 100%),calc(100% - 1.25rem));inset-block-end:calc(100% - var(--t-scroll-end) * 100%);inset-inline-end:0;opacity:calc(.2 * var(--t-opacity));animation-name:tuiScrollbarStart,tuiScrollbarEnd,tuiScrollbar;animation-timing-function:linear;animation-timeline:--t-scrollbar-y;animation-range:0 calc(100% + 100cqb),calc(0% - 100cqb) 100%;animation-fill-mode:both;--t-opacity: 0}.t-thumb:hover{opacity:calc(.24 * var(--t-opacity))}.t-thumb:active{opacity:calc(.48 * var(--t-opacity))}.t-bar:hover .t-thumb,.t-bar .t-thumb:active{inline-size:.875rem}\n"] }]
|
|
220
220
|
}] });
|
|
221
221
|
|
|
222
222
|
/**
|
|
@@ -231,11 +231,11 @@ const TUI_SCROLLABLE = 'tui-scrollable';
|
|
|
231
231
|
class TuiScrollbar {
|
|
232
232
|
constructor() {
|
|
233
233
|
this.el = tuiInjectElement();
|
|
234
|
-
this.
|
|
234
|
+
this.mode = inject(TUI_SCROLLBAR_OPTIONS).mode;
|
|
235
235
|
this.browserScrollRef = new ElementRef(this.el);
|
|
236
236
|
}
|
|
237
237
|
get delegated() {
|
|
238
|
-
return this.scrollRef !== this.el || this.
|
|
238
|
+
return this.scrollRef !== this.el || this.mode === 'native';
|
|
239
239
|
}
|
|
240
240
|
get scrollRef() {
|
|
241
241
|
return this.browserScrollRef.nativeElement;
|
|
@@ -254,20 +254,20 @@ class TuiScrollbar {
|
|
|
254
254
|
this.scrollRef.scrollTo?.(scrollLeft, scrollTop);
|
|
255
255
|
}
|
|
256
256
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: TuiScrollbar, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
257
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.25", type: TuiScrollbar, isStandalone: true, selector: "tui-scrollbar", host: { listeners: { "tui-scrollable.stop": "scrollRef = $event.detail", "tui-scroll-into-view.stop": "scrollIntoView($event.detail)" }, properties: { "class._delegated": "delegated" } }, providers: [
|
|
257
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.25", type: TuiScrollbar, isStandalone: true, selector: "tui-scrollbar", host: { listeners: { "tui-scrollable.stop": "scrollRef = $event.detail", "tui-scroll-into-view.stop": "scrollIntoView($event.detail)" }, properties: { "class._delegated": "delegated", "class._hover": "mode === 'hover'" } }, providers: [
|
|
258
258
|
{
|
|
259
259
|
provide: TUI_SCROLL_REF,
|
|
260
260
|
useFactory: () => inject(TuiScrollbar).browserScrollRef,
|
|
261
261
|
},
|
|
262
262
|
], hostDirectives: [{ directive: TuiScrollRef }], ngImport: i0, template: `
|
|
263
|
-
<tui-scroll-controls
|
|
263
|
+
<tui-scroll-controls class="t-scrollbar" />
|
|
264
264
|
<div class="t-content"><ng-content /></div>
|
|
265
|
-
`, isInline: true, styles: [":host{position:relative;display:flex;max-block-size:100%;isolation:isolate;overflow:auto}:host
|
|
265
|
+
`, isInline: true, styles: [":host{position:relative;display:flex;max-block-size:100%;isolation:isolate;overflow:auto}:host._hover:not(:active)>.t-scrollbar{opacity:0}:host._hover:hover>.t-scrollbar{opacity:1}:host._delegated{scroll-timeline:none}:host._delegated .t-content{block-size:100%}.t-content{isolation:isolate;flex:1;flex-basis:auto;inline-size:100%;block-size:max-content}@supports (anchor-name: --t-scrollbar){.t-scrollbar{position:fixed;inset:anchor(top) anchor(right) anchor(bottom) anchor(left);position-anchor:--t-scrollbar;min-inline-size:0;min-block-size:0;margin:0}}\n"], dependencies: [{ kind: "component", type: TuiScrollControls, selector: "tui-scroll-controls" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
266
266
|
}
|
|
267
267
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: TuiScrollbar, decorators: [{
|
|
268
268
|
type: Component,
|
|
269
269
|
args: [{ selector: 'tui-scrollbar', imports: [TuiScrollControls], template: `
|
|
270
|
-
<tui-scroll-controls
|
|
270
|
+
<tui-scroll-controls class="t-scrollbar" />
|
|
271
271
|
<div class="t-content"><ng-content /></div>
|
|
272
272
|
`, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
|
|
273
273
|
{
|
|
@@ -276,9 +276,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImpo
|
|
|
276
276
|
},
|
|
277
277
|
], hostDirectives: [TuiScrollRef], host: {
|
|
278
278
|
'[class._delegated]': 'delegated',
|
|
279
|
+
'[class._hover]': "mode === 'hover'",
|
|
279
280
|
[`(${TUI_SCROLLABLE}.stop)`]: 'scrollRef = $event.detail',
|
|
280
281
|
[`(${TUI_SCROLL_INTO_VIEW}.stop)`]: 'scrollIntoView($event.detail)',
|
|
281
|
-
}, styles: [":host{position:relative;display:flex;max-block-size:100%;isolation:isolate;overflow:auto}:host
|
|
282
|
+
}, styles: [":host{position:relative;display:flex;max-block-size:100%;isolation:isolate;overflow:auto}:host._hover:not(:active)>.t-scrollbar{opacity:0}:host._hover:hover>.t-scrollbar{opacity:1}:host._delegated{scroll-timeline:none}:host._delegated .t-content{block-size:100%}.t-content{isolation:isolate;flex:1;flex-basis:auto;inline-size:100%;block-size:max-content}@supports (anchor-name: --t-scrollbar){.t-scrollbar{position:fixed;inset:anchor(top) anchor(right) anchor(bottom) anchor(left);position-anchor:--t-scrollbar;min-inline-size:0;min-block-size:0;margin:0}}\n"] }]
|
|
282
283
|
}] });
|
|
283
284
|
|
|
284
285
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"taiga-ui-core-components-scrollbar.mjs","sources":["../../../projects/core/components/scrollbar/scrollbar.options.ts","../../../projects/core/components/scrollbar/scroll-ref.directive.ts","../../../projects/core/components/scrollbar/scroll-controls.service.ts","../../../projects/core/components/scrollbar/scrollbar.service.ts","../../../projects/core/components/scrollbar/scrollbar-position.directive.ts","../../../projects/core/components/scrollbar/scrollbar.directive.ts","../../../projects/core/components/scrollbar/scroll-controls.component.ts","../../../projects/core/components/scrollbar/scroll-controls.template.html","../../../projects/core/components/scrollbar/scrollbar.component.ts","../../../projects/core/components/scrollbar/scroll-into-view.directive.ts","../../../projects/core/components/scrollbar/scrollable.directive.ts","../../../projects/core/components/scrollbar/taiga-ui-core-components-scrollbar.ts"],"sourcesContent":["import {tuiCreateOptions} from '@taiga-ui/cdk/utils/di';\n\nexport interface TuiScrollbarOptions {\n mode: 'always' | 'hidden' | 'hover' | 'native';\n}\n\nexport const TUI_DEFAULT_SCROLLBAR_OPTIONS: TuiScrollbarOptions = {mode: 'always'};\nexport const [TUI_SCROLLBAR_OPTIONS, tuiScrollbarOptionsProvider] = tuiCreateOptions(\n TUI_DEFAULT_SCROLLBAR_OPTIONS,\n);\n","import {DOCUMENT} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n Directive,\n ElementRef,\n inject,\n InjectionToken,\n ViewEncapsulation,\n} from '@angular/core';\nimport {WA_IS_IOS} from '@ng-web-apis/platform';\nimport {TUI_VERSION} from '@taiga-ui/cdk/constants';\nimport {tuiProvide} from '@taiga-ui/cdk/utils/di';\nimport {tuiWithStyles} from '@taiga-ui/cdk/utils/miscellaneous';\n\nimport {TUI_SCROLLBAR_OPTIONS} from './scrollbar.options';\n\nexport const SCROLL_REF_SELECTOR = '[tuiScrollRef]';\n\nexport const TUI_SCROLL_REF = new InjectionToken(ngDevMode ? 'TUI_SCROLL_REF' : '', {\n factory: () => new ElementRef(inject(DOCUMENT).documentElement),\n});\n\n@Component({\n template: '',\n styles: `\n [data-tui-version='${TUI_VERSION}'] {\n @import './scroll-ref.style.less';\n }\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n exportAs: `tui-scroll-ref-${TUI_VERSION}`,\n})\nclass Styles {}\n\n@Directive({\n selector: '[tuiScrollRef]',\n providers: [tuiProvide(TUI_SCROLL_REF, ElementRef)],\n host: {\n 'data-tui-version': TUI_VERSION,\n tuiScrollRef: '',\n '[class._native]': 'native',\n },\n})\nexport class TuiScrollRef {\n protected readonly nothing = tuiWithStyles(Styles);\n protected readonly options = inject(TUI_SCROLLBAR_OPTIONS);\n protected readonly native =\n (inject(WA_IS_IOS) && this.options.mode !== 'hidden') ||\n this.options.mode === 'native';\n}\n","import {inject, Injectable} from '@angular/core';\nimport {WA_ANIMATION_FRAME} from '@ng-web-apis/common';\nimport {tuiZonefreeScheduler, tuiZoneOptimized} from '@taiga-ui/cdk/observables';\nimport {distinctUntilChanged, map, Observable, startWith, throttleTime} from 'rxjs';\n\nimport {TUI_SCROLL_REF} from './scroll-ref.directive';\n\n@Injectable()\nexport class TuiScrollControlsService extends Observable<readonly [boolean, boolean]> {\n private readonly scrollRef = inject(TUI_SCROLL_REF);\n\n private readonly stream$ = inject(WA_ANIMATION_FRAME).pipe(\n throttleTime(300, tuiZonefreeScheduler()),\n map(() => this.scrollbars),\n startWith([false, false] as const),\n distinctUntilChanged((a, b) => a[0] === b[0] && a[1] === b[1]),\n tuiZoneOptimized(),\n );\n\n constructor() {\n super((subscriber) => this.stream$.subscribe(subscriber));\n }\n\n private get scrollbars(): [boolean, boolean] {\n const {clientHeight, scrollHeight, clientWidth, scrollWidth} =\n this.scrollRef.nativeElement;\n\n return [\n Math.ceil((clientHeight / scrollHeight) * 100) < 100,\n Math.ceil((clientWidth / scrollWidth) * 100) < 100,\n ];\n }\n}\n","import {inject, Injectable} from '@angular/core';\nimport {tuiTypedFromEvent, tuiZonefree} from '@taiga-ui/cdk/observables';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {filter, map, merge, Observable, switchMap, takeUntil} from 'rxjs';\n\nimport {TUI_SCROLL_REF} from './scroll-ref.directive';\n\n@Injectable()\nexport class TuiScrollbarService extends Observable<\n [number | undefined, number | undefined]\n> {\n private readonly el = tuiInjectElement();\n private readonly element = inject(TUI_SCROLL_REF).nativeElement;\n\n private readonly scroll$ = merge(\n tuiTypedFromEvent(this.el.parentElement!, 'mousedown').pipe(\n filter(({target}) => target !== this.el),\n map((event) => this.getScrolled(event, 0.5, 0.5)),\n ),\n tuiTypedFromEvent(this.el, 'mousedown').pipe(\n tuiZonefree(),\n switchMap((event) => {\n const {ownerDocument} = this.el;\n const rect = this.el.getBoundingClientRect();\n const vertical = getOffsetVertical(event, rect);\n const horizontal = getOffsetHorizontal(event, rect);\n\n return tuiTypedFromEvent(ownerDocument, 'mousemove').pipe(\n map((event) => this.getScrolled(event, vertical, horizontal)),\n takeUntil(tuiTypedFromEvent(ownerDocument, 'mouseup')),\n );\n }),\n ),\n );\n\n constructor() {\n super((subscriber) => this.scroll$.subscribe(subscriber));\n }\n\n private getScrolled(\n {clientY, clientX}: MouseEvent,\n offsetY: number,\n offsetX: number,\n ): [number | undefined, number | undefined] {\n const rect = this.el.parentElement!.getBoundingClientRect();\n const {top, left, right, width, height} = rect;\n const {offsetHeight, offsetWidth} = this.el;\n const rtl = this.el.matches('[dir=\"rtl\"] :scope');\n const inline = rtl ? right : left;\n const multiplier = rtl ? -1 : 1;\n const maxTop = this.element.scrollHeight - height;\n const maxLeft = this.element.scrollWidth - width;\n const y = (clientY - top - offsetHeight * offsetY) / (height - offsetHeight);\n\n const x =\n (clientX - inline - offsetWidth * offsetX * multiplier) /\n (width - offsetWidth);\n\n return [\n width > height ? undefined : maxTop * y,\n width > height ? maxLeft * x : undefined,\n ];\n }\n}\n\nfunction getOffsetVertical({clientY}: MouseEvent, {top, height}: DOMRect): number {\n return (clientY - top) / height;\n}\n\nfunction getOffsetHorizontal({clientX}: MouseEvent, {left, width}: DOMRect): number {\n return (clientX - left) / width;\n}\n","import {Directive, inject, input} from '@angular/core';\nimport {WA_ANIMATION_FRAME} from '@ng-web-apis/common';\nimport {\n tuiScrollFrom,\n tuiZonefree,\n tuiZonefreeScheduler,\n} from '@taiga-ui/cdk/observables';\nimport {map, merge, Observable, throttleTime} from 'rxjs';\n\nimport {TUI_SCROLL_REF} from './scroll-ref.directive';\n\nconst MIN_WIDTH = 24;\n\ninterface ComputedDimension {\n scrollTop: number;\n scrollHeight: number;\n clientHeight: number;\n scrollLeft: number;\n scrollWidth: number;\n clientWidth: number;\n}\n\n@Directive()\nexport class TuiScrollbarPosition extends Observable<Partial<CSSStyleDeclaration>> {\n private readonly scrollRef = inject(TUI_SCROLL_REF);\n\n private readonly stream$ = merge(\n inject(WA_ANIMATION_FRAME).pipe(throttleTime(100, tuiZonefreeScheduler())),\n tuiScrollFrom(this.el),\n ).pipe(\n tuiZonefree(),\n map(() => ({\n scrollTop: this.el.scrollTop,\n scrollHeight: this.el.scrollHeight,\n clientHeight: this.el.clientHeight,\n scrollLeft: this.el.scrollLeft,\n scrollWidth: this.el.scrollWidth,\n clientWidth: this.el.clientWidth,\n })),\n map((dimensions) => ({\n insetBlockStart: `${this.getThumb(dimensions) * 100}%`,\n blockSize: `${this.getView(dimensions) * 100}%`,\n })),\n );\n\n public readonly tuiScrollbar = input<'horizontal' | 'vertical'>('vertical');\n\n constructor() {\n super((subscriber) => this.stream$.subscribe(subscriber));\n }\n\n private get el(): HTMLElement {\n return this.scrollRef.nativeElement;\n }\n\n private getThumb(dimension: ComputedDimension): number {\n const compensation = this.getCompensation(dimension) || this.getView(dimension);\n\n return Math.abs(this.getScrolled(dimension) * (1 - compensation));\n }\n\n private getView(dimension: ComputedDimension): number {\n return this.tuiScrollbar() === 'vertical'\n ? Math.ceil((dimension.clientHeight / dimension.scrollHeight) * 100) / 100\n : Math.ceil((dimension.clientWidth / dimension.scrollWidth) * 100) / 100;\n }\n\n private getScrolled(dimension: ComputedDimension): number {\n return this.tuiScrollbar() === 'vertical'\n ? dimension.scrollTop / (dimension.scrollHeight - dimension.clientHeight)\n : dimension.scrollLeft / (dimension.scrollWidth - dimension.clientWidth);\n }\n\n private getCompensation(dimension: ComputedDimension): number {\n if (\n ((dimension.clientHeight * dimension.clientHeight) / dimension.scrollHeight >\n MIN_WIDTH &&\n this.tuiScrollbar() === 'vertical') ||\n ((dimension.clientWidth * dimension.clientWidth) / dimension.scrollWidth >\n MIN_WIDTH &&\n this.tuiScrollbar() === 'horizontal')\n ) {\n return 0;\n }\n\n return this.tuiScrollbar() === 'vertical'\n ? MIN_WIDTH / dimension.clientHeight\n : MIN_WIDTH / dimension.clientWidth;\n }\n}\n","import {Directive, inject} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {TUI_TIMELINE_SUPPORT} from '@taiga-ui/core/tokens';\n\nimport {TUI_SCROLL_REF} from './scroll-ref.directive';\nimport {TuiScrollbarService} from './scrollbar.service';\nimport {TuiScrollbarPosition} from './scrollbar-position.directive';\n\n@Directive({\n selector: '[tuiScrollbar]',\n providers: [TuiScrollbarService],\n hostDirectives: [{directive: TuiScrollbarPosition, inputs: ['tuiScrollbar']}],\n})\nexport class TuiScrollbarDirective {\n private readonly scrollRef = inject(TUI_SCROLL_REF);\n private readonly style = tuiInjectElement().style;\n\n protected readonly scrollSub = inject(TuiScrollbarService)\n .pipe(takeUntilDestroyed())\n .subscribe(([top, left]) => {\n this.scrollRef.nativeElement.scrollTo({top, left, behavior: 'instant'});\n });\n\n constructor() {\n if (!inject(TUI_TIMELINE_SUPPORT)) {\n inject(TuiScrollbarPosition)\n .pipe(takeUntilDestroyed())\n .subscribe((position) => Object.assign(this.style, position));\n }\n }\n}\n","import {CdkScrollable} from '@angular/cdk/scrolling';\nimport {AsyncPipe} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, inject, type OnInit} from '@angular/core';\nimport {WA_IS_IOS} from '@ng-web-apis/platform';\nimport {TuiAnimated} from '@taiga-ui/cdk/directives/animated';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {TUI_TIMELINE_SUPPORT} from '@taiga-ui/core/tokens';\nimport {type Observable, of} from 'rxjs';\n\nimport {TuiScrollControlsService} from './scroll-controls.service';\nimport {TuiScrollbarDirective} from './scrollbar.directive';\nimport {TUI_SCROLLBAR_OPTIONS} from './scrollbar.options';\n\n@Component({\n selector: 'tui-scroll-controls',\n imports: [AsyncPipe, TuiAnimated, TuiScrollbarDirective],\n templateUrl: './scroll-controls.template.html',\n styleUrl: './scroll-controls.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [TuiScrollControlsService],\n host: {'[class._timeline]': 'timeline'},\n})\nexport class TuiScrollControls implements OnInit {\n private readonly scrollable = inject(CdkScrollable, {optional: true, host: true});\n private readonly el = tuiInjectElement();\n\n protected readonly timeline = inject(TUI_TIMELINE_SUPPORT);\n protected readonly hidden =\n inject(WA_IS_IOS) ||\n ['hidden', 'native'].includes(inject(TUI_SCROLLBAR_OPTIONS).mode);\n\n protected readonly refresh$: Observable<readonly [boolean, boolean]> = this.timeline\n ? of([true, true] as const)\n : inject(TuiScrollControlsService);\n\n public ngOnInit(): void {\n this.scrollable?.getElementRef().nativeElement.prepend?.(this.el);\n }\n}\n","@if (!hidden) {\n @if (refresh$ | async; as bars) {\n @if (bars[0]) {\n <div\n tuiAnimated\n class=\"t-bar t-bar_vertical\"\n (mousedown.capture.prevent)=\"(0)\"\n >\n <div\n tuiScrollbar=\"vertical\"\n class=\"t-thumb\"\n ></div>\n </div>\n }\n @if (bars[1]) {\n <div\n tuiAnimated\n class=\"t-bar t-bar_horizontal\"\n (mousedown.capture.prevent)=\"(0)\"\n >\n <div\n tuiScrollbar=\"horizontal\"\n class=\"t-thumb\"\n ></div>\n </div>\n }\n }\n}\n","import {ChangeDetectionStrategy, Component, ElementRef, inject} from '@angular/core';\nimport {tuiGetElementOffset, tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\n\nimport {TuiScrollControls} from './scroll-controls.component';\nimport {TUI_SCROLL_REF, TuiScrollRef} from './scroll-ref.directive';\nimport {TUI_SCROLLBAR_OPTIONS} from './scrollbar.options';\n\n/**\n * An event for scrolling an element into view within {@link TuiScrollbar}.\n */\nexport const TUI_SCROLL_INTO_VIEW = 'tui-scroll-into-view';\n\n/**\n * An event to notify {@link TuiScrollbar} that\n * it should control a nested element.\n */\nexport const TUI_SCROLLABLE = 'tui-scrollable';\n\n@Component({\n selector: 'tui-scrollbar',\n imports: [TuiScrollControls],\n template: `\n <tui-scroll-controls [class.t-hover-mode]=\"options.mode === 'hover'\" />\n <div class=\"t-content\"><ng-content /></div>\n `,\n styleUrl: './scrollbar.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: TUI_SCROLL_REF,\n useFactory: () => inject(TuiScrollbar).browserScrollRef,\n },\n ],\n hostDirectives: [TuiScrollRef],\n host: {\n '[class._delegated]': 'delegated',\n [`(${TUI_SCROLLABLE}.stop)`]: 'scrollRef = $event.detail',\n [`(${TUI_SCROLL_INTO_VIEW}.stop)`]: 'scrollIntoView($event.detail)',\n },\n})\nexport class TuiScrollbar {\n private readonly el = tuiInjectElement();\n\n protected readonly options = inject(TUI_SCROLLBAR_OPTIONS);\n protected readonly browserScrollRef = new ElementRef(this.el);\n\n public get delegated(): boolean {\n return this.scrollRef !== this.el || this.options.mode === 'native';\n }\n\n protected get scrollRef(): HTMLElement {\n return this.browserScrollRef.nativeElement;\n }\n\n protected set scrollRef(element: HTMLElement) {\n this.browserScrollRef.nativeElement = element;\n }\n\n protected scrollIntoView(detail: HTMLElement): void {\n if (this.delegated) {\n return;\n }\n\n const {offsetHeight, offsetWidth} = detail;\n const {offsetTop, offsetLeft} = tuiGetElementOffset(this.scrollRef, detail);\n const scrollTop = offsetTop + offsetHeight / 2 - this.scrollRef.clientHeight / 2;\n const scrollLeft = offsetLeft + offsetWidth / 2 - this.scrollRef.clientWidth / 2;\n\n this.scrollRef.scrollTo?.(scrollLeft, scrollTop);\n }\n}\n","import {DestroyRef, Directive, effect, inject, input} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {timer} from 'rxjs';\n\nimport {TUI_SCROLL_INTO_VIEW} from './scrollbar.component';\n\n/**\n * Directive scrolls element into view inside tui-scrollbar\n */\n@Directive({selector: '[tuiScrollIntoView]'})\nexport class TuiScrollIntoView {\n private readonly el = tuiInjectElement();\n private readonly destroyRef = inject(DestroyRef);\n\n public readonly tuiScrollIntoView = input<boolean>();\n\n protected readonly dispatchEvent = effect(() => {\n const scroll = this.tuiScrollIntoView();\n\n if (!scroll) {\n return;\n }\n\n // Timeout is necessary in order to give element render cycle to get into its final spot\n // (for example if it is inside dropdown box which has to be positioned first)\n timer(0)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => {\n this.el.dispatchEvent(\n new CustomEvent<Element>(TUI_SCROLL_INTO_VIEW, {\n bubbles: true,\n detail: this.el,\n }),\n );\n });\n });\n}\n","import {Directive, type OnInit} from '@angular/core';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\n\nimport {TuiScrollRef} from './scroll-ref.directive';\nimport {TUI_SCROLLABLE} from './scrollbar.component';\n\n/**\n * @deprecated Use {@link TuiScrollRef} + {@link TuiScrollControls} instead\n * TODO: Drop in v6.0\n */\n@Directive({selector: '[tuiScrollable]', hostDirectives: [TuiScrollRef]})\nexport class TuiScrollable implements OnInit {\n private readonly el = tuiInjectElement();\n\n public ngOnInit(): void {\n this.el.dispatchEvent(\n new CustomEvent(TUI_SCROLLABLE, {bubbles: true, detail: this.el}),\n );\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.TuiScrollbarPosition","i1.TuiScrollRef"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"taiga-ui-core-components-scrollbar.mjs","sources":["../../../projects/core/components/scrollbar/scrollbar.options.ts","../../../projects/core/components/scrollbar/scroll-ref.directive.ts","../../../projects/core/components/scrollbar/scroll-controls.service.ts","../../../projects/core/components/scrollbar/scrollbar.service.ts","../../../projects/core/components/scrollbar/scrollbar-position.directive.ts","../../../projects/core/components/scrollbar/scrollbar.directive.ts","../../../projects/core/components/scrollbar/scroll-controls.component.ts","../../../projects/core/components/scrollbar/scroll-controls.template.html","../../../projects/core/components/scrollbar/scrollbar.component.ts","../../../projects/core/components/scrollbar/scroll-into-view.directive.ts","../../../projects/core/components/scrollbar/scrollable.directive.ts","../../../projects/core/components/scrollbar/taiga-ui-core-components-scrollbar.ts"],"sourcesContent":["import {tuiCreateOptions} from '@taiga-ui/cdk/utils/di';\n\nexport interface TuiScrollbarOptions {\n mode: 'always' | 'hidden' | 'hover' | 'native';\n}\n\nexport const TUI_DEFAULT_SCROLLBAR_OPTIONS: TuiScrollbarOptions = {mode: 'always'};\nexport const [TUI_SCROLLBAR_OPTIONS, tuiScrollbarOptionsProvider] = tuiCreateOptions(\n TUI_DEFAULT_SCROLLBAR_OPTIONS,\n);\n","import {DOCUMENT} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n Directive,\n ElementRef,\n inject,\n InjectionToken,\n ViewEncapsulation,\n} from '@angular/core';\nimport {WA_IS_IOS} from '@ng-web-apis/platform';\nimport {TUI_VERSION} from '@taiga-ui/cdk/constants';\nimport {tuiProvide} from '@taiga-ui/cdk/utils/di';\nimport {tuiWithStyles} from '@taiga-ui/cdk/utils/miscellaneous';\n\nimport {TUI_SCROLLBAR_OPTIONS} from './scrollbar.options';\n\nexport const SCROLL_REF_SELECTOR = '[tuiScrollRef]';\n\nexport const TUI_SCROLL_REF = new InjectionToken(ngDevMode ? 'TUI_SCROLL_REF' : '', {\n factory: () => new ElementRef(inject(DOCUMENT).documentElement),\n});\n\n@Component({\n template: '',\n styles: `\n [data-tui-version='${TUI_VERSION}'] {\n @import './scroll-ref.style.less';\n }\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n exportAs: `tui-scroll-ref-${TUI_VERSION}`,\n})\nclass Styles {}\n\n@Directive({\n selector: '[tuiScrollRef]',\n providers: [tuiProvide(TUI_SCROLL_REF, ElementRef)],\n host: {\n 'data-tui-version': TUI_VERSION,\n tuiScrollRef: '',\n '[class._native]': 'native',\n },\n})\nexport class TuiScrollRef {\n protected readonly nothing = tuiWithStyles(Styles);\n protected readonly options = inject(TUI_SCROLLBAR_OPTIONS);\n protected readonly native =\n (inject(WA_IS_IOS) && this.options.mode !== 'hidden') ||\n this.options.mode === 'native';\n}\n","import {inject, Injectable} from '@angular/core';\nimport {WA_ANIMATION_FRAME} from '@ng-web-apis/common';\nimport {tuiZonefreeScheduler, tuiZoneOptimized} from '@taiga-ui/cdk/observables';\nimport {distinctUntilChanged, map, Observable, startWith, throttleTime} from 'rxjs';\n\nimport {TUI_SCROLL_REF} from './scroll-ref.directive';\n\n@Injectable()\nexport class TuiScrollControlsService extends Observable<readonly [boolean, boolean]> {\n private readonly scrollRef = inject(TUI_SCROLL_REF);\n\n private readonly stream$ = inject(WA_ANIMATION_FRAME).pipe(\n throttleTime(300, tuiZonefreeScheduler()),\n map(() => this.scrollbars),\n startWith([false, false] as const),\n distinctUntilChanged((a, b) => a[0] === b[0] && a[1] === b[1]),\n tuiZoneOptimized(),\n );\n\n constructor() {\n super((subscriber) => this.stream$.subscribe(subscriber));\n }\n\n private get scrollbars(): [boolean, boolean] {\n const {clientHeight, scrollHeight, clientWidth, scrollWidth} =\n this.scrollRef.nativeElement;\n\n return [\n Math.ceil((clientHeight / scrollHeight) * 100) < 100,\n Math.ceil((clientWidth / scrollWidth) * 100) < 100,\n ];\n }\n}\n","import {inject, Injectable} from '@angular/core';\nimport {tuiTypedFromEvent, tuiZonefree} from '@taiga-ui/cdk/observables';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {filter, map, merge, Observable, switchMap, takeUntil} from 'rxjs';\n\nimport {TUI_SCROLL_REF} from './scroll-ref.directive';\n\n@Injectable()\nexport class TuiScrollbarService extends Observable<\n [number | undefined, number | undefined]\n> {\n private readonly el = tuiInjectElement();\n private readonly element = inject(TUI_SCROLL_REF).nativeElement;\n\n private readonly scroll$ = merge(\n tuiTypedFromEvent(this.el.parentElement!, 'mousedown').pipe(\n filter(({target}) => target !== this.el),\n map((event) => this.getScrolled(event, 0.5, 0.5)),\n ),\n tuiTypedFromEvent(this.el, 'mousedown').pipe(\n tuiZonefree(),\n switchMap((event) => {\n const {ownerDocument} = this.el;\n const rect = this.el.getBoundingClientRect();\n const vertical = getOffsetVertical(event, rect);\n const horizontal = getOffsetHorizontal(event, rect);\n\n return tuiTypedFromEvent(ownerDocument, 'mousemove').pipe(\n map((event) => this.getScrolled(event, vertical, horizontal)),\n takeUntil(tuiTypedFromEvent(ownerDocument, 'mouseup')),\n );\n }),\n ),\n );\n\n constructor() {\n super((subscriber) => this.scroll$.subscribe(subscriber));\n }\n\n private getScrolled(\n {clientY, clientX}: MouseEvent,\n offsetY: number,\n offsetX: number,\n ): [number | undefined, number | undefined] {\n const rect = this.el.parentElement!.getBoundingClientRect();\n const {top, left, right, width, height} = rect;\n const {offsetHeight, offsetWidth} = this.el;\n const rtl = this.el.matches('[dir=\"rtl\"] :scope');\n const inline = rtl ? right : left;\n const multiplier = rtl ? -1 : 1;\n const maxTop = this.element.scrollHeight - height;\n const maxLeft = this.element.scrollWidth - width;\n const y = (clientY - top - offsetHeight * offsetY) / (height - offsetHeight);\n\n const x =\n (clientX - inline - offsetWidth * offsetX * multiplier) /\n (width - offsetWidth);\n\n return [\n width > height ? undefined : maxTop * y,\n width > height ? maxLeft * x : undefined,\n ];\n }\n}\n\nfunction getOffsetVertical({clientY}: MouseEvent, {top, height}: DOMRect): number {\n return (clientY - top) / height;\n}\n\nfunction getOffsetHorizontal({clientX}: MouseEvent, {left, width}: DOMRect): number {\n return (clientX - left) / width;\n}\n","import {Directive, inject, input} from '@angular/core';\nimport {WA_ANIMATION_FRAME} from '@ng-web-apis/common';\nimport {\n tuiScrollFrom,\n tuiZonefree,\n tuiZonefreeScheduler,\n} from '@taiga-ui/cdk/observables';\nimport {map, merge, Observable, throttleTime} from 'rxjs';\n\nimport {TUI_SCROLL_REF} from './scroll-ref.directive';\n\nconst MIN_WIDTH = 24;\n\ninterface ComputedDimension {\n scrollTop: number;\n scrollHeight: number;\n clientHeight: number;\n scrollLeft: number;\n scrollWidth: number;\n clientWidth: number;\n}\n\n@Directive()\nexport class TuiScrollbarPosition extends Observable<Partial<CSSStyleDeclaration>> {\n private readonly scrollRef = inject(TUI_SCROLL_REF);\n\n private readonly stream$ = merge(\n inject(WA_ANIMATION_FRAME).pipe(throttleTime(100, tuiZonefreeScheduler())),\n tuiScrollFrom(this.el),\n ).pipe(\n tuiZonefree(),\n map(() => ({\n scrollTop: this.el.scrollTop,\n scrollHeight: this.el.scrollHeight,\n clientHeight: this.el.clientHeight,\n scrollLeft: this.el.scrollLeft,\n scrollWidth: this.el.scrollWidth,\n clientWidth: this.el.clientWidth,\n })),\n map((dimensions) => ({\n insetBlockStart: `${this.getThumb(dimensions) * 100}%`,\n blockSize: `${this.getView(dimensions) * 100}%`,\n })),\n );\n\n public readonly tuiScrollbar = input<'horizontal' | 'vertical'>('vertical');\n\n constructor() {\n super((subscriber) => this.stream$.subscribe(subscriber));\n }\n\n private get el(): HTMLElement {\n return this.scrollRef.nativeElement;\n }\n\n private getThumb(dimension: ComputedDimension): number {\n const compensation = this.getCompensation(dimension) || this.getView(dimension);\n\n return Math.abs(this.getScrolled(dimension) * (1 - compensation));\n }\n\n private getView(dimension: ComputedDimension): number {\n return this.tuiScrollbar() === 'vertical'\n ? Math.ceil((dimension.clientHeight / dimension.scrollHeight) * 100) / 100\n : Math.ceil((dimension.clientWidth / dimension.scrollWidth) * 100) / 100;\n }\n\n private getScrolled(dimension: ComputedDimension): number {\n return this.tuiScrollbar() === 'vertical'\n ? dimension.scrollTop / (dimension.scrollHeight - dimension.clientHeight)\n : dimension.scrollLeft / (dimension.scrollWidth - dimension.clientWidth);\n }\n\n private getCompensation(dimension: ComputedDimension): number {\n if (\n ((dimension.clientHeight * dimension.clientHeight) / dimension.scrollHeight >\n MIN_WIDTH &&\n this.tuiScrollbar() === 'vertical') ||\n ((dimension.clientWidth * dimension.clientWidth) / dimension.scrollWidth >\n MIN_WIDTH &&\n this.tuiScrollbar() === 'horizontal')\n ) {\n return 0;\n }\n\n return this.tuiScrollbar() === 'vertical'\n ? MIN_WIDTH / dimension.clientHeight\n : MIN_WIDTH / dimension.clientWidth;\n }\n}\n","import {Directive, inject} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {TUI_TIMELINE_SUPPORT} from '@taiga-ui/core/tokens';\n\nimport {TUI_SCROLL_REF} from './scroll-ref.directive';\nimport {TuiScrollbarService} from './scrollbar.service';\nimport {TuiScrollbarPosition} from './scrollbar-position.directive';\n\n@Directive({\n selector: '[tuiScrollbar]',\n providers: [TuiScrollbarService],\n hostDirectives: [{directive: TuiScrollbarPosition, inputs: ['tuiScrollbar']}],\n})\nexport class TuiScrollbarDirective {\n private readonly scrollRef = inject(TUI_SCROLL_REF);\n private readonly style = tuiInjectElement().style;\n\n protected readonly scrollSub = inject(TuiScrollbarService)\n .pipe(takeUntilDestroyed())\n .subscribe(([top, left]) => {\n this.scrollRef.nativeElement.scrollTo({top, left, behavior: 'instant'});\n });\n\n constructor() {\n if (!inject(TUI_TIMELINE_SUPPORT)) {\n inject(TuiScrollbarPosition)\n .pipe(takeUntilDestroyed())\n .subscribe((position) => Object.assign(this.style, position));\n }\n }\n}\n","import {CdkScrollable} from '@angular/cdk/scrolling';\nimport {AsyncPipe} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, inject, type OnInit} from '@angular/core';\nimport {WA_IS_IOS} from '@ng-web-apis/platform';\nimport {TuiAnimated} from '@taiga-ui/cdk/directives/animated';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {TUI_TIMELINE_SUPPORT} from '@taiga-ui/core/tokens';\nimport {type Observable, of} from 'rxjs';\n\nimport {TuiScrollControlsService} from './scroll-controls.service';\nimport {TuiScrollbarDirective} from './scrollbar.directive';\nimport {TUI_SCROLLBAR_OPTIONS} from './scrollbar.options';\n\n@Component({\n selector: 'tui-scroll-controls',\n imports: [AsyncPipe, TuiAnimated, TuiScrollbarDirective],\n templateUrl: './scroll-controls.template.html',\n styleUrl: './scroll-controls.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [TuiScrollControlsService],\n host: {'[class._timeline]': 'timeline'},\n})\nexport class TuiScrollControls implements OnInit {\n private readonly scrollable = inject(CdkScrollable, {optional: true, host: true});\n private readonly el = tuiInjectElement();\n\n protected readonly timeline = inject(TUI_TIMELINE_SUPPORT);\n protected readonly hidden =\n inject(WA_IS_IOS) ||\n ['hidden', 'native'].includes(inject(TUI_SCROLLBAR_OPTIONS).mode);\n\n protected readonly refresh$: Observable<readonly [boolean, boolean]> = this.timeline\n ? of([true, true] as const)\n : inject(TuiScrollControlsService);\n\n public ngOnInit(): void {\n this.scrollable?.getElementRef().nativeElement.prepend?.(this.el);\n }\n}\n","@if (!hidden) {\n @if (refresh$ | async; as bars) {\n @if (bars[0]) {\n <div\n tuiAnimated\n class=\"t-bar t-bar_vertical\"\n (mousedown.capture.prevent)=\"(0)\"\n >\n <div\n tuiScrollbar=\"vertical\"\n class=\"t-thumb\"\n ></div>\n </div>\n }\n @if (bars[1]) {\n <div\n tuiAnimated\n class=\"t-bar t-bar_horizontal\"\n (mousedown.capture.prevent)=\"(0)\"\n >\n <div\n tuiScrollbar=\"horizontal\"\n class=\"t-thumb\"\n ></div>\n </div>\n }\n }\n}\n","import {ChangeDetectionStrategy, Component, ElementRef, inject} from '@angular/core';\nimport {tuiGetElementOffset, tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\n\nimport {TuiScrollControls} from './scroll-controls.component';\nimport {TUI_SCROLL_REF, TuiScrollRef} from './scroll-ref.directive';\nimport {TUI_SCROLLBAR_OPTIONS} from './scrollbar.options';\n\n/**\n * An event for scrolling an element into view within {@link TuiScrollbar}.\n */\nexport const TUI_SCROLL_INTO_VIEW = 'tui-scroll-into-view';\n\n/**\n * An event to notify {@link TuiScrollbar} that\n * it should control a nested element.\n */\nexport const TUI_SCROLLABLE = 'tui-scrollable';\n\n@Component({\n selector: 'tui-scrollbar',\n imports: [TuiScrollControls],\n template: `\n <tui-scroll-controls class=\"t-scrollbar\" />\n <div class=\"t-content\"><ng-content /></div>\n `,\n styleUrl: './scrollbar.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: TUI_SCROLL_REF,\n useFactory: () => inject(TuiScrollbar).browserScrollRef,\n },\n ],\n hostDirectives: [TuiScrollRef],\n host: {\n '[class._delegated]': 'delegated',\n '[class._hover]': \"mode === 'hover'\",\n [`(${TUI_SCROLLABLE}.stop)`]: 'scrollRef = $event.detail',\n [`(${TUI_SCROLL_INTO_VIEW}.stop)`]: 'scrollIntoView($event.detail)',\n },\n})\nexport class TuiScrollbar {\n protected readonly el = tuiInjectElement();\n protected readonly mode = inject(TUI_SCROLLBAR_OPTIONS).mode;\n protected readonly browserScrollRef = new ElementRef(this.el);\n\n public get delegated(): boolean {\n return this.scrollRef !== this.el || this.mode === 'native';\n }\n\n protected get scrollRef(): HTMLElement {\n return this.browserScrollRef.nativeElement;\n }\n\n protected set scrollRef(element: HTMLElement) {\n this.browserScrollRef.nativeElement = element;\n }\n\n protected scrollIntoView(detail: HTMLElement): void {\n if (this.delegated) {\n return;\n }\n\n const {offsetHeight, offsetWidth} = detail;\n const {offsetTop, offsetLeft} = tuiGetElementOffset(this.scrollRef, detail);\n const scrollTop = offsetTop + offsetHeight / 2 - this.scrollRef.clientHeight / 2;\n const scrollLeft = offsetLeft + offsetWidth / 2 - this.scrollRef.clientWidth / 2;\n\n this.scrollRef.scrollTo?.(scrollLeft, scrollTop);\n }\n}\n","import {DestroyRef, Directive, effect, inject, input} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {timer} from 'rxjs';\n\nimport {TUI_SCROLL_INTO_VIEW} from './scrollbar.component';\n\n/**\n * Directive scrolls element into view inside tui-scrollbar\n */\n@Directive({selector: '[tuiScrollIntoView]'})\nexport class TuiScrollIntoView {\n private readonly el = tuiInjectElement();\n private readonly destroyRef = inject(DestroyRef);\n\n public readonly tuiScrollIntoView = input<boolean>();\n\n protected readonly dispatchEvent = effect(() => {\n const scroll = this.tuiScrollIntoView();\n\n if (!scroll) {\n return;\n }\n\n // Timeout is necessary in order to give element render cycle to get into its final spot\n // (for example if it is inside dropdown box which has to be positioned first)\n timer(0)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => {\n this.el.dispatchEvent(\n new CustomEvent<Element>(TUI_SCROLL_INTO_VIEW, {\n bubbles: true,\n detail: this.el,\n }),\n );\n });\n });\n}\n","import {Directive, type OnInit} from '@angular/core';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\n\nimport {TuiScrollRef} from './scroll-ref.directive';\nimport {TUI_SCROLLABLE} from './scrollbar.component';\n\n/**\n * @deprecated Use {@link TuiScrollRef} + {@link TuiScrollControls} instead\n * TODO: Drop in v6.0\n */\n@Directive({selector: '[tuiScrollable]', hostDirectives: [TuiScrollRef]})\nexport class TuiScrollable implements OnInit {\n private readonly el = tuiInjectElement();\n\n public ngOnInit(): void {\n this.el.dispatchEvent(\n new CustomEvent(TUI_SCROLLABLE, {bubbles: true, detail: this.el}),\n );\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.TuiScrollbarPosition","i1.TuiScrollRef"],"mappings":"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"}
|