@taiga-ui/core 4.52.0-canary.aaf153c → 4.52.0-canary.abf3e8c
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/README.md +1 -1
- package/classes/accessors.d.ts +2 -2
- package/components/calendar/calendar-sheet.options.d.ts +1 -3
- package/{pipes/calendar-sheet → components/calendar}/calendar-sheet.pipe.d.ts +1 -1
- package/components/calendar/calendar-spin.component.d.ts +1 -0
- package/components/calendar/calendar-year.component.d.ts +1 -1
- package/components/calendar/index.d.ts +2 -0
- package/components/data-list/data-list.component.d.ts +7 -11
- package/components/data-list/data-list.d.ts +3 -4
- package/components/data-list/data-list.tokens.d.ts +1 -23
- package/components/data-list/index.d.ts +3 -4
- package/components/data-list/opt-group.directive.d.ts +2 -2
- package/components/data-list/option-content.directive.d.ts +14 -0
- package/components/data-list/option-with-value.directive.d.ts +9 -0
- package/components/data-list/option.directive.d.ts +19 -0
- package/components/icon/icon.component.d.ts +2 -2
- package/components/index.d.ts +2 -4
- package/components/input/index.d.ts +2 -0
- package/components/input/input.d.ts +5 -0
- package/components/input/input.directive.d.ts +30 -0
- package/components/link/link.options.d.ts +1 -3
- package/components/loader/loader.options.d.ts +1 -3
- package/components/notification/index.d.ts +3 -0
- package/components/notification/notification.component.d.ts +14 -0
- package/components/notification/notification.d.ts +3 -0
- package/components/notification/notification.directive.d.ts +4 -5
- package/components/notification/notification.options.d.ts +10 -7
- package/components/notification/notification.service.d.ts +17 -0
- package/components/root/root.component.d.ts +1 -1
- package/components/scrollbar/scroll-into-view.directive.d.ts +3 -2
- package/components/scrollbar/scrollbar.component.d.ts +2 -2
- package/components/scrollbar/scrollbar.directive.d.ts +2 -2
- package/components/textfield/index.d.ts +0 -1
- package/components/textfield/textfield-multi/textfield-item.component.d.ts +3 -2
- package/components/textfield/textfield-multi/textfield-multi.component.d.ts +9 -13
- package/components/textfield/textfield.component.d.ts +23 -35
- package/components/textfield/textfield.d.ts +2 -3
- package/directives/date-format/date-format.directive.d.ts +3 -7
- package/directives/group/group.directive.d.ts +7 -7
- package/directives/group/group.options.d.ts +1 -3
- package/directives/index.d.ts +0 -5
- package/directives/number-format/number-format.directive.d.ts +3 -7
- package/fesm2022/taiga-ui-core-classes.mjs +9 -11
- package/fesm2022/taiga-ui-core-classes.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-button.mjs +6 -6
- package/fesm2022/taiga-ui-core-components-calendar.mjs +130 -31
- package/fesm2022/taiga-ui-core-components-calendar.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-cell.mjs +7 -7
- package/fesm2022/taiga-ui-core-components-cell.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-data-list.mjs +110 -279
- package/fesm2022/taiga-ui-core-components-data-list.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-error.mjs +11 -10
- package/fesm2022/taiga-ui-core-components-error.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-expand.mjs +3 -3
- package/fesm2022/taiga-ui-core-components-icon.mjs +9 -10
- package/fesm2022/taiga-ui-core-components-icon.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-input.mjs +103 -0
- package/fesm2022/taiga-ui-core-components-input.mjs.map +1 -0
- package/fesm2022/taiga-ui-core-components-label.mjs +6 -6
- package/fesm2022/taiga-ui-core-components-link.mjs +11 -15
- package/fesm2022/taiga-ui-core-components-link.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-loader.mjs +6 -11
- package/fesm2022/taiga-ui-core-components-loader.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-notification.mjs +95 -23
- package/fesm2022/taiga-ui-core-components-notification.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-root.mjs +8 -10
- package/fesm2022/taiga-ui-core-components-root.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-scrollbar.mjs +54 -63
- package/fesm2022/taiga-ui-core-components-scrollbar.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-spin-button.mjs +3 -3
- package/fesm2022/taiga-ui-core-components-textfield.mjs +101 -263
- package/fesm2022/taiga-ui-core-components-textfield.mjs.map +1 -1
- package/fesm2022/{taiga-ui-core-directives-title.mjs → taiga-ui-core-components-title.mjs} +7 -7
- package/fesm2022/{taiga-ui-core-directives-title.mjs.map → taiga-ui-core-components-title.mjs.map} +1 -1
- package/fesm2022/taiga-ui-core-components.mjs +2 -4
- package/fesm2022/taiga-ui-core-components.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-directives-appearance.mjs +15 -15
- package/fesm2022/taiga-ui-core-directives-appearance.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-directives-date-format.mjs +26 -20
- package/fesm2022/taiga-ui-core-directives-date-format.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-directives-group.mjs +22 -34
- package/fesm2022/taiga-ui-core-directives-group.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-directives-icons.mjs +11 -11
- package/fesm2022/taiga-ui-core-directives-icons.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-directives-items-handlers.mjs +10 -13
- package/fesm2022/taiga-ui-core-directives-items-handlers.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-directives-number-format.mjs +32 -20
- package/fesm2022/taiga-ui-core-directives-number-format.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-directives.mjs +0 -5
- package/fesm2022/taiga-ui-core-directives.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-pipes-format-number.mjs +21 -15
- package/fesm2022/taiga-ui-core-pipes-format-number.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-pipes.mjs +0 -7
- package/fesm2022/taiga-ui-core-pipes.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-portals-alert.mjs +73 -0
- package/fesm2022/taiga-ui-core-portals-alert.mjs.map +1 -0
- package/fesm2022/taiga-ui-core-portals-dialog.mjs +158 -0
- package/fesm2022/taiga-ui-core-portals-dialog.mjs.map +1 -0
- package/fesm2022/{taiga-ui-core-directives-dropdown.mjs → taiga-ui-core-portals-dropdown.mjs} +158 -273
- package/fesm2022/taiga-ui-core-portals-dropdown.mjs.map +1 -0
- package/fesm2022/{taiga-ui-core-directives-hint.mjs → taiga-ui-core-portals-hint.mjs} +54 -58
- package/fesm2022/taiga-ui-core-portals-hint.mjs.map +1 -0
- package/fesm2022/taiga-ui-core-portals-modal.mjs +89 -0
- package/fesm2022/taiga-ui-core-portals-modal.mjs.map +1 -0
- package/fesm2022/{taiga-ui-core-directives-popup.mjs → taiga-ui-core-portals-popup.mjs} +11 -11
- package/fesm2022/taiga-ui-core-portals-popup.mjs.map +1 -0
- package/fesm2022/taiga-ui-core-portals.mjs +11 -0
- package/fesm2022/taiga-ui-core-portals.mjs.map +1 -0
- package/fesm2022/taiga-ui-core-services.mjs +18 -38
- package/fesm2022/taiga-ui-core-services.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-tokens.mjs +22 -21
- package/fesm2022/taiga-ui-core-tokens.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-utils-format.mjs +1 -22
- package/fesm2022/taiga-ui-core-utils-format.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-utils-miscellaneous.mjs +7 -16
- package/fesm2022/taiga-ui-core-utils-miscellaneous.mjs.map +1 -1
- package/fesm2022/taiga-ui-core.mjs +1 -0
- package/fesm2022/taiga-ui-core.mjs.map +1 -1
- package/index.d.ts +1 -0
- package/package.json +68 -93
- package/pipes/format-number/format-number.pipe.d.ts +6 -4
- package/pipes/index.d.ts +0 -7
- package/{directives/notification/notification.directive.d.ts → portals/alert/alert.directive.d.ts} +3 -3
- package/{directives/notification/notification.service.d.ts → portals/alert/alert.service.d.ts} +3 -3
- package/portals/alert/index.d.ts +2 -0
- package/{components → portals}/dialog/dialog.component.d.ts +2 -3
- package/{components → portals}/dialog/dialog.options.d.ts +2 -3
- package/{components → portals}/dialog/dialog.providers.d.ts +1 -2
- package/{components → portals}/dialog/dialog.service.d.ts +1 -1
- package/{components → portals}/dialog/index.d.ts +0 -1
- package/{directives → portals}/dropdown/dropdown-hover.directive.d.ts +5 -10
- package/{directives → portals}/dropdown/dropdown-hover.options.d.ts +1 -3
- package/{directives → portals}/dropdown/dropdown-manual.directive.d.ts +2 -2
- package/portals/dropdown/dropdown-open.directive.d.ts +30 -0
- package/{directives → portals}/dropdown/dropdown-position-sided.directive.d.ts +3 -3
- package/{directives → portals}/dropdown/dropdown-position.directive.d.ts +5 -5
- package/{directives → portals}/dropdown/dropdown-selection.directive.d.ts +4 -5
- package/{directives → portals}/dropdown/dropdown.bindings.d.ts +0 -1
- package/{directives → portals}/dropdown/dropdown.d.ts +1 -2
- package/{directives → portals}/dropdown/dropdown.directive.d.ts +5 -6
- package/{directives → portals}/dropdown/index.d.ts +0 -1
- package/{directives → portals}/hint/hint-position.directive.d.ts +1 -1
- package/portals/index.d.ts +6 -0
- package/{components → portals}/modal/modal.component.d.ts +3 -3
- package/{components → portals}/modal/modal.service.d.ts +3 -3
- package/services/index.d.ts +0 -1
- package/styles/components/link.less +1 -0
- package/styles/components/textfield.less +10 -7
- package/styles/mixins/appearance.less +2 -2
- package/styles/mixins/mixins.less +0 -5
- package/styles/mixins/mixins.scss +0 -5
- package/styles/mixins/slider.scss +1 -2
- package/styles/theme/variables.less +2 -4
- package/tokens/common-icons.d.ts +1 -3
- package/tokens/date-format.d.ts +2 -3
- package/tokens/icons.d.ts +0 -4
- package/tokens/number-format.d.ts +2 -3
- package/types/index.d.ts +0 -2
- package/types/point.d.ts +1 -1
- package/types/size.d.ts +0 -11
- package/utils/format/index.d.ts +0 -1
- package/utils/miscellaneous/get-duration.d.ts +2 -0
- package/utils/miscellaneous/index.d.ts +1 -1
- package/components/alert/alert.component.d.ts +0 -14
- package/components/alert/alert.directive.d.ts +0 -8
- package/components/alert/alert.interfaces.d.ts +0 -13
- package/components/alert/alert.service.d.ts +0 -11
- package/components/alert/alert.tokens.d.ts +0 -6
- package/components/alert/index.d.ts +0 -5
- package/components/data-list/data-list.directive.d.ts +0 -7
- package/components/data-list/option/option-content.d.ts +0 -16
- package/components/data-list/option/option-legacy.component.d.ts +0 -24
- package/components/data-list/option/option.directive.d.ts +0 -27
- package/components/dialog/active-zone-adapter.directive.d.ts +0 -11
- package/components/dialog/dialogs.component.d.ts +0 -8
- package/components/header/header.directive.d.ts +0 -17
- package/components/header/index.d.ts +0 -1
- package/components/textfield/textfield.directive.d.ts +0 -35
- package/directives/dropdown/dropdown-open-legacy.directive.d.ts +0 -12
- package/directives/dropdown/dropdown-open.directive.d.ts +0 -33
- package/directives/notification/index.d.ts +0 -2
- package/fesm2022/taiga-ui-core-components-alert.mjs +0 -110
- package/fesm2022/taiga-ui-core-components-alert.mjs.map +0 -1
- package/fesm2022/taiga-ui-core-components-dialog.mjs +0 -227
- package/fesm2022/taiga-ui-core-components-dialog.mjs.map +0 -1
- package/fesm2022/taiga-ui-core-components-header.mjs +0 -42
- package/fesm2022/taiga-ui-core-components-header.mjs.map +0 -1
- package/fesm2022/taiga-ui-core-components-modal.mjs +0 -89
- package/fesm2022/taiga-ui-core-components-modal.mjs.map +0 -1
- package/fesm2022/taiga-ui-core-directives-dropdown.mjs.map +0 -1
- package/fesm2022/taiga-ui-core-directives-hint.mjs.map +0 -1
- package/fesm2022/taiga-ui-core-directives-notification.mjs +0 -73
- package/fesm2022/taiga-ui-core-directives-notification.mjs.map +0 -1
- package/fesm2022/taiga-ui-core-directives-popup.mjs.map +0 -1
- package/fesm2022/taiga-ui-core-pipes-auto-color.mjs +0 -25
- package/fesm2022/taiga-ui-core-pipes-auto-color.mjs.map +0 -1
- package/fesm2022/taiga-ui-core-pipes-calendar-sheet.mjs +0 -94
- package/fesm2022/taiga-ui-core-pipes-calendar-sheet.mjs.map +0 -1
- package/fesm2022/taiga-ui-core-pipes-flag.mjs +0 -32
- package/fesm2022/taiga-ui-core-pipes-flag.mjs.map +0 -1
- package/fesm2022/taiga-ui-core-pipes-format-date.mjs +0 -28
- package/fesm2022/taiga-ui-core-pipes-format-date.mjs.map +0 -1
- package/fesm2022/taiga-ui-core-pipes-initials.mjs +0 -29
- package/fesm2022/taiga-ui-core-pipes-initials.mjs.map +0 -1
- package/fesm2022/taiga-ui-core-pipes-month.mjs +0 -30
- package/fesm2022/taiga-ui-core-pipes-month.mjs.map +0 -1
- package/fesm2022/taiga-ui-core-pipes-order-week-days.mjs +0 -36
- package/fesm2022/taiga-ui-core-pipes-order-week-days.mjs.map +0 -1
- package/pipes/auto-color/auto-color.pipe.d.ts +0 -7
- package/pipes/auto-color/index.d.ts +0 -1
- package/pipes/calendar-sheet/index.d.ts +0 -1
- package/pipes/calendar-sheet/utils.d.ts +0 -20
- package/pipes/flag/flag.pipe.d.ts +0 -14
- package/pipes/flag/index.d.ts +0 -1
- package/pipes/format-date/format-date.pipe.d.ts +0 -9
- package/pipes/format-date/index.d.ts +0 -1
- package/pipes/initials/index.d.ts +0 -1
- package/pipes/initials/initials.pipe.d.ts +0 -7
- package/pipes/month/index.d.ts +0 -1
- package/pipes/month/month.pipe.d.ts +0 -10
- package/pipes/order-week-days/index.d.ts +0 -1
- package/services/format-date.service.d.ts +0 -8
- package/types/range-state.d.ts +0 -4
- package/types/value-content-context.d.ts +0 -4
- package/utils/format/string-hash-to-hsl.d.ts +0 -6
- package/utils/miscellaneous/to-animation-options.d.ts +0 -4
- /package/{pipes/order-week-days → components/calendar}/order-week-days.pipe.d.ts +0 -0
- /package/{directives → components}/title/index.d.ts +0 -0
- /package/{directives → components}/title/title.directive.d.ts +0 -0
- /package/{components → portals}/dialog/dialog.directive.d.ts +0 -0
- /package/{components → portals}/dialog/dialog.factory.d.ts +0 -0
- /package/{directives → portals}/dropdown/dropdown-content.directive.d.ts +0 -0
- /package/{directives → portals}/dropdown/dropdown-context.directive.d.ts +0 -0
- /package/{directives → portals}/dropdown/dropdown-limit-width.d.ts +0 -0
- /package/{directives → portals}/dropdown/dropdown-options.directive.d.ts +0 -0
- /package/{directives → portals}/dropdown/dropdown.component.d.ts +0 -0
- /package/{directives → portals}/dropdown/dropdown.driver.d.ts +0 -0
- /package/{directives → portals}/dropdown/dropdown.providers.d.ts +0 -0
- /package/{directives → portals}/dropdown/with-dropdown-open.directive.d.ts +0 -0
- /package/{directives → portals}/hint/hint-describe.directive.d.ts +0 -0
- /package/{directives → portals}/hint/hint-driver.directive.d.ts +0 -0
- /package/{directives → portals}/hint/hint-host.directive.d.ts +0 -0
- /package/{directives → portals}/hint/hint-hover.directive.d.ts +0 -0
- /package/{directives → portals}/hint/hint-manual.directive.d.ts +0 -0
- /package/{directives → portals}/hint/hint-options.directive.d.ts +0 -0
- /package/{directives → portals}/hint/hint-overflow.directive.d.ts +0 -0
- /package/{directives → portals}/hint/hint-pointer.directive.d.ts +0 -0
- /package/{directives → portals}/hint/hint-unstyled.component.d.ts +0 -0
- /package/{directives → portals}/hint/hint.component.d.ts +0 -0
- /package/{directives → portals}/hint/hint.d.ts +0 -0
- /package/{directives → portals}/hint/hint.directive.d.ts +0 -0
- /package/{directives → portals}/hint/hint.providers.d.ts +0 -0
- /package/{directives → portals}/hint/index.d.ts +0 -0
- /package/{components → portals}/modal/index.d.ts +0 -0
- /package/{directives → portals}/popup/index.d.ts +0 -0
- /package/{directives → portals}/popup/popup.directive.d.ts +0 -0
- /package/{directives → portals}/popup/popup.service.d.ts +0 -0
- /package/{directives → portals}/popup/popups.component.d.ts +0 -0
package/fesm2022/{taiga-ui-core-directives-dropdown.mjs → taiga-ui-core-portals-dropdown.mjs}
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { Injectable, Directive, InjectionToken, Optional, Self, SkipSelf, inject, Input,
|
|
3
|
-
import { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';
|
|
2
|
+
import { Injectable, Directive, InjectionToken, Optional, Self, SkipSelf, inject, Input, ChangeDetectorRef, effect, signal, INJECTOR, input, computed, TemplateRef, forwardRef, ChangeDetectionStrategy, Component, PLATFORM_ID, contentChild, ElementRef, model, ViewContainerRef } from '@angular/core';
|
|
3
|
+
import { outputFromObservable, 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';
|
|
6
6
|
import { TuiActiveZone } from '@taiga-ui/cdk/directives/active-zone';
|
|
@@ -8,24 +8,25 @@ import * as i2 from '@taiga-ui/cdk/directives/animated';
|
|
|
8
8
|
import { TuiAnimated } from '@taiga-ui/cdk/directives/animated';
|
|
9
9
|
import { tuiInjectElement, tuiGetActualTarget, tuiPointToClientRect, tuiIsElement, tuiIsHTMLElement, tuiIsElementEditable, tuiIsTextNode, tuiIsTextfield } from '@taiga-ui/cdk/utils/dom';
|
|
10
10
|
import { tuiClamp } from '@taiga-ui/cdk/utils/math';
|
|
11
|
-
import {
|
|
12
|
-
import { TuiDriverDirective, TuiPositionAccessor, tuiFallbackAccessor, TuiRectAccessor,
|
|
11
|
+
import { tuiPx, tuiSetSignal, tuiIsString } from '@taiga-ui/cdk/utils/miscellaneous';
|
|
12
|
+
import { TuiDriverDirective, TuiPositionAccessor, tuiFallbackAccessor, TuiRectAccessor, tuiAsVehicle, tuiPositionAccessorFor, tuiRectAccessorFor, tuiAsDriver, tuiAsRectAccessor, TuiDriver, tuiAsPositionAccessor } from '@taiga-ui/core/classes';
|
|
13
13
|
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,
|
|
17
|
+
import { BehaviorSubject, Subject, distinctUntilChanged, throttleTime, takeWhile, map, merge, filter, fromEvent, switchMap, delay, startWith, takeUntil, of, tap, share, combineLatest } from 'rxjs';
|
|
18
18
|
import { coerceArray } from '@angular/cdk/coercion';
|
|
19
19
|
import { tuiZonefreeScheduler, tuiTypedFromEvent, tuiZonefree, tuiIfMap, tuiCloseWatcher, tuiZonefull, tuiWatch, tuiZoneOptimized } from '@taiga-ui/cdk/observables';
|
|
20
|
-
import { TuiPopupService } from '@taiga-ui/core/
|
|
20
|
+
import { TuiPopupService } from '@taiga-ui/core/portals/popup';
|
|
21
21
|
import { tuiOverrideOptions, tuiCheckFixedPosition, tuiGetWordRange } from '@taiga-ui/core/utils';
|
|
22
|
-
import {
|
|
22
|
+
import { tuiProvide, tuiCreateOptions, tuiDirectiveBinding } from '@taiga-ui/cdk/utils/di';
|
|
23
23
|
import { isPlatformBrowser, DOCUMENT } from '@angular/common';
|
|
24
|
-
import {
|
|
24
|
+
import { __decorate } from 'tslib';
|
|
25
|
+
import { TUI_IS_TOUCH } from '@taiga-ui/cdk/tokens';
|
|
25
26
|
import { shouldCall } from '@taiga-ui/event-plugins';
|
|
26
27
|
import * as i1$1 from '@taiga-ui/cdk/directives/obscured';
|
|
27
28
|
import { TuiObscured } from '@taiga-ui/cdk/directives/obscured';
|
|
28
|
-
import {
|
|
29
|
+
import { tuiIsFocusable, tuiGetClosestFocusable, tuiIsFocusedIn, tuiGetFocused } from '@taiga-ui/cdk/utils/focus';
|
|
29
30
|
import { tuiIsEditingKey, tuiOverrideOptions as tuiOverrideOptions$1 } from '@taiga-ui/core/utils/miscellaneous';
|
|
30
31
|
|
|
31
32
|
class TuiDropdownDriver extends BehaviorSubject {
|
|
@@ -33,10 +34,10 @@ class TuiDropdownDriver extends BehaviorSubject {
|
|
|
33
34
|
super(false);
|
|
34
35
|
this.type = 'dropdown';
|
|
35
36
|
}
|
|
36
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
37
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.
|
|
37
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.16", ngImport: i0, type: TuiDropdownDriver, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
38
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.16", ngImport: i0, type: TuiDropdownDriver }); }
|
|
38
39
|
}
|
|
39
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
40
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.16", ngImport: i0, type: TuiDropdownDriver, decorators: [{
|
|
40
41
|
type: Injectable
|
|
41
42
|
}], ctorParameters: () => [] });
|
|
42
43
|
class TuiDropdownDriverDirective extends TuiDriverDirective {
|
|
@@ -44,14 +45,11 @@ class TuiDropdownDriverDirective extends TuiDriverDirective {
|
|
|
44
45
|
super(...arguments);
|
|
45
46
|
this.type = 'dropdown';
|
|
46
47
|
}
|
|
47
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
48
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.
|
|
48
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.16", ngImport: i0, type: TuiDropdownDriverDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
49
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.16", type: TuiDropdownDriverDirective, isStandalone: true, usesInheritance: true, ngImport: i0 }); }
|
|
49
50
|
}
|
|
50
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
51
|
-
type: Directive
|
|
52
|
-
args: [{
|
|
53
|
-
standalone: true,
|
|
54
|
-
}]
|
|
51
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.16", ngImport: i0, type: TuiDropdownDriverDirective, decorators: [{
|
|
52
|
+
type: Directive
|
|
55
53
|
}] });
|
|
56
54
|
|
|
57
55
|
/**
|
|
@@ -97,13 +95,12 @@ class TuiDropdownOptionsDirective {
|
|
|
97
95
|
this.maxHeight = this.options.maxHeight;
|
|
98
96
|
this.offset = this.options.offset;
|
|
99
97
|
}
|
|
100
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
101
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.
|
|
98
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.16", ngImport: i0, type: TuiDropdownOptionsDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
99
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.16", type: TuiDropdownOptionsDirective, isStandalone: true, selector: "[tuiDropdownAlign], [tuiDropdownAppearance], [tuiDropdownDirection], [tuiDropdownLimitWidth], [tuiDropdownMinHeight], [tuiDropdownMaxHeight], [tuiDropdownOffset]", inputs: { align: ["tuiDropdownAlign", "align"], appearance: ["tuiDropdownAppearance", "appearance"], direction: ["tuiDropdownDirection", "direction"], limitWidth: ["tuiDropdownLimitWidth", "limitWidth"], minHeight: ["tuiDropdownMinHeight", "minHeight"], maxHeight: ["tuiDropdownMaxHeight", "maxHeight"], offset: ["tuiDropdownOffset", "offset"] }, providers: [tuiProvide(TUI_DROPDOWN_OPTIONS, TuiDropdownOptionsDirective)], ngImport: i0 }); }
|
|
102
100
|
}
|
|
103
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
101
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.16", ngImport: i0, type: TuiDropdownOptionsDirective, decorators: [{
|
|
104
102
|
type: Directive,
|
|
105
103
|
args: [{
|
|
106
|
-
standalone: true,
|
|
107
104
|
selector: '[tuiDropdownAlign], [tuiDropdownAppearance], [tuiDropdownDirection], [tuiDropdownLimitWidth], [tuiDropdownMinHeight], [tuiDropdownMaxHeight], [tuiDropdownOffset]',
|
|
108
105
|
providers: [tuiProvide(TUI_DROPDOWN_OPTIONS, TuiDropdownOptionsDirective)],
|
|
109
106
|
}]
|
|
@@ -136,18 +133,16 @@ class TuiDropdownPosition extends TuiPositionAccessor {
|
|
|
136
133
|
this.el = tuiInjectElement();
|
|
137
134
|
this.options = inject(TUI_DROPDOWN_OPTIONS);
|
|
138
135
|
this.viewport = inject(TUI_VIEWPORT);
|
|
139
|
-
this.
|
|
136
|
+
this.direction = new Subject();
|
|
140
137
|
this.type = 'dropdown';
|
|
141
|
-
this.accessor = tuiFallbackAccessor('dropdown')(inject(TuiRectAccessor
|
|
142
|
-
|
|
143
|
-
emitDirection(direction) {
|
|
144
|
-
this.directionChange.emit(direction);
|
|
138
|
+
this.accessor = tuiFallbackAccessor('dropdown')(inject(TuiRectAccessor, { optional: true }), { getClientRect: () => this.el.getBoundingClientRect() });
|
|
139
|
+
this.tuiDropdownDirectionChange = outputFromObservable(this.direction.pipe(distinctUntilChanged()));
|
|
145
140
|
}
|
|
146
141
|
getPosition({ width, height }) {
|
|
147
142
|
if (!width && !height) {
|
|
148
143
|
this.previous = undefined;
|
|
149
144
|
}
|
|
150
|
-
const hostRect = this.accessor
|
|
145
|
+
const hostRect = this.accessor.getClientRect();
|
|
151
146
|
const viewportRect = this.viewport.getClientRect();
|
|
152
147
|
const { minHeight, direction, offset, limitWidth } = this.options;
|
|
153
148
|
const align = this.getAlign(this.options.align);
|
|
@@ -177,12 +172,12 @@ class TuiDropdownPosition extends TuiPositionAccessor {
|
|
|
177
172
|
const better = available.top > available.bottom ? 'top' : 'bottom';
|
|
178
173
|
if ((available[previous] > minHeight && direction) ||
|
|
179
174
|
available[previous] > height) {
|
|
180
|
-
this.
|
|
181
|
-
return [position[
|
|
175
|
+
this.direction.next(previous);
|
|
176
|
+
return [position[align], position[previous]];
|
|
182
177
|
}
|
|
183
178
|
this.previous = better;
|
|
184
|
-
this.
|
|
185
|
-
return [position[
|
|
179
|
+
this.direction.next(better);
|
|
180
|
+
return [position[align], position[better]];
|
|
186
181
|
}
|
|
187
182
|
getAlign(align) {
|
|
188
183
|
const rtl = this.el.matches('[dir="rtl"] :scope');
|
|
@@ -191,28 +186,18 @@ class TuiDropdownPosition extends TuiPositionAccessor {
|
|
|
191
186
|
}
|
|
192
187
|
return rtl && align === 'right' ? 'left' : align;
|
|
193
188
|
}
|
|
194
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
195
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.
|
|
189
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.16", ngImport: i0, type: TuiDropdownPosition, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
190
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.16", type: TuiDropdownPosition, isStandalone: true, outputs: { tuiDropdownDirectionChange: "tuiDropdownDirectionChange" }, usesInheritance: true, ngImport: i0 }); }
|
|
196
191
|
}
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
]
|
|
200
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiDropdownPosition, decorators: [{
|
|
201
|
-
type: Directive,
|
|
202
|
-
args: [{
|
|
203
|
-
standalone: true,
|
|
204
|
-
}]
|
|
205
|
-
}], propDecorators: { directionChange: [{
|
|
206
|
-
type: Output,
|
|
207
|
-
args: ['tuiDropdownDirectionChange']
|
|
208
|
-
}], emitDirection: [] } });
|
|
192
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.16", ngImport: i0, type: TuiDropdownPosition, decorators: [{
|
|
193
|
+
type: Directive
|
|
194
|
+
}] });
|
|
209
195
|
|
|
210
196
|
class TuiDropdownDirective {
|
|
211
197
|
constructor() {
|
|
212
198
|
this.refresh$ = new Subject();
|
|
213
199
|
this.service = inject(TuiPopupService);
|
|
214
200
|
this.cdr = inject(ChangeDetectorRef);
|
|
215
|
-
// TODO: think of a better solution later
|
|
216
201
|
this.drivers = coerceArray(inject(TuiDropdownDriver, { self: true, optional: true }));
|
|
217
202
|
this.sub = this.refresh$
|
|
218
203
|
.pipe(throttleTime(0, tuiZonefreeScheduler()), takeUntilDestroyed())
|
|
@@ -220,33 +205,25 @@ class TuiDropdownDirective {
|
|
|
220
205
|
this.ref()?.changeDetectorRef.detectChanges();
|
|
221
206
|
this.ref()?.changeDetectorRef.markForCheck();
|
|
222
207
|
});
|
|
208
|
+
this.autoClose = effect(() => {
|
|
209
|
+
if (!this.content()) {
|
|
210
|
+
this.toggle(false);
|
|
211
|
+
}
|
|
212
|
+
});
|
|
213
|
+
this.ref = signal(null);
|
|
223
214
|
this.el = tuiInjectElement();
|
|
224
215
|
this.type = 'dropdown';
|
|
225
216
|
this.component = new PolymorpheusComponent(inject(TUI_DROPDOWN_COMPONENT), inject(INJECTOR));
|
|
226
|
-
this.
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
this._content.set(content instanceof TemplateRef
|
|
233
|
-
? new PolymorpheusTemplate(content, this.cdr)
|
|
234
|
-
: content);
|
|
235
|
-
if (!this._content()) {
|
|
236
|
-
this.toggle(false);
|
|
237
|
-
}
|
|
217
|
+
this.tuiDropdown = input();
|
|
218
|
+
this.content = computed((content = this.tuiDropdown()) => {
|
|
219
|
+
return content instanceof TemplateRef
|
|
220
|
+
? new PolymorpheusTemplate(content, this.cdr)
|
|
221
|
+
: content;
|
|
222
|
+
});
|
|
238
223
|
}
|
|
239
224
|
get position() {
|
|
240
225
|
return tuiCheckFixedPosition(this.el) ? 'fixed' : 'absolute';
|
|
241
226
|
}
|
|
242
|
-
// TODO(v5): delete
|
|
243
|
-
get content() {
|
|
244
|
-
return this._content();
|
|
245
|
-
}
|
|
246
|
-
// TODO(v5): delete
|
|
247
|
-
set content(x) {
|
|
248
|
-
this._content.set(x);
|
|
249
|
-
}
|
|
250
227
|
ngAfterViewChecked() {
|
|
251
228
|
this.refresh$.next();
|
|
252
229
|
}
|
|
@@ -258,32 +235,25 @@ class TuiDropdownDirective {
|
|
|
258
235
|
}
|
|
259
236
|
toggle(show) {
|
|
260
237
|
const ref = this.ref();
|
|
261
|
-
if (show && this.
|
|
238
|
+
if (show && this.content() && !ref) {
|
|
262
239
|
this.ref.set(this.service.add(this.component));
|
|
263
240
|
}
|
|
264
241
|
else if (!show && ref) {
|
|
265
242
|
this.ref.set(null);
|
|
266
243
|
ref.destroy();
|
|
267
244
|
}
|
|
268
|
-
this.drivers.forEach((driver) => driver?.next(show));
|
|
269
245
|
// TODO: Remove in v5, only needed in Angular 16
|
|
270
246
|
this.cdr.markForCheck();
|
|
247
|
+
this.drivers.forEach((driver) => driver?.next(show));
|
|
271
248
|
}
|
|
272
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
273
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "
|
|
274
|
-
tuiAsRectAccessor(TuiDropdownDirective),
|
|
275
|
-
tuiAsVehicle(TuiDropdownDirective),
|
|
276
|
-
], exportAs: ["tuiDropdown"], hostDirectives: [{ directive: TuiDropdownDriverDirective }, { directive: TuiDropdownPosition, outputs: ["tuiDropdownDirectionChange", "tuiDropdownDirectionChange"] }], ngImport: i0 }); }
|
|
249
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.16", ngImport: i0, type: TuiDropdownDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
250
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.16", type: TuiDropdownDirective, isStandalone: true, selector: "[tuiDropdown]:not(ng-container):not(ng-template)", inputs: { tuiDropdown: { classPropertyName: "tuiDropdown", publicName: "tuiDropdown", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.tui-dropdown-open": "ref()" } }, providers: [tuiAsVehicle(TuiDropdownDirective)], exportAs: ["tuiDropdown"], hostDirectives: [{ directive: TuiDropdownDriverDirective }, { directive: TuiDropdownPosition, outputs: ["tuiDropdownDirectionChange", "tuiDropdownDirectionChange"] }], ngImport: i0 }); }
|
|
277
251
|
}
|
|
278
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
252
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.16", ngImport: i0, type: TuiDropdownDirective, decorators: [{
|
|
279
253
|
type: Directive,
|
|
280
254
|
args: [{
|
|
281
|
-
standalone: true,
|
|
282
255
|
selector: '[tuiDropdown]:not(ng-container):not(ng-template)',
|
|
283
|
-
providers: [
|
|
284
|
-
tuiAsRectAccessor(TuiDropdownDirective),
|
|
285
|
-
tuiAsVehicle(TuiDropdownDirective),
|
|
286
|
-
],
|
|
256
|
+
providers: [tuiAsVehicle(TuiDropdownDirective)],
|
|
287
257
|
exportAs: 'tuiDropdown',
|
|
288
258
|
hostDirectives: [
|
|
289
259
|
TuiDropdownDriverDirective,
|
|
@@ -296,9 +266,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
296
266
|
'[class.tui-dropdown-open]': 'ref()',
|
|
297
267
|
},
|
|
298
268
|
}]
|
|
299
|
-
}]
|
|
300
|
-
type: Input
|
|
301
|
-
}] } });
|
|
269
|
+
}] });
|
|
302
270
|
|
|
303
271
|
/**
|
|
304
272
|
* @description:
|
|
@@ -312,7 +280,7 @@ class TuiDropdownComponent {
|
|
|
312
280
|
this.viewport = inject(TUI_VIEWPORT);
|
|
313
281
|
this.vvs = inject(TuiVisualViewportService);
|
|
314
282
|
this.styles$ = inject(TuiPositionService).pipe(takeWhile(() => this.directive.el.isConnected &&
|
|
315
|
-
!!this.directive.el.getBoundingClientRect().height), map((v) => (this.position === 'fixed' ? this.vvs.correct(v) : v)), map((
|
|
283
|
+
!!this.directive.el.getBoundingClientRect().height), map((v) => (this.position === 'fixed' ? this.vvs.correct(v) : v)), map((point) => this.getStyles(...point)), takeUntilDestroyed());
|
|
316
284
|
this.options = inject(TUI_DROPDOWN_OPTIONS);
|
|
317
285
|
this.directive = inject(TuiDropdownDirective);
|
|
318
286
|
this.context = inject(TUI_DROPDOWN_CONTEXT, { optional: true });
|
|
@@ -351,44 +319,43 @@ class TuiDropdownComponent {
|
|
|
351
319
|
maxWidth: tuiPx(Math.round(viewport.width) - 16), // 8px min gap from each side
|
|
352
320
|
};
|
|
353
321
|
}
|
|
354
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
355
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.
|
|
322
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.16", ngImport: i0, type: TuiDropdownComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
323
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.16", type: TuiDropdownComponent, isStandalone: true, selector: "tui-dropdown", host: { properties: { "attr.data-appearance": "options.appearance", "attr.tuiTheme": "theme()" } }, providers: [
|
|
356
324
|
TuiPositionService,
|
|
357
325
|
tuiPositionAccessorFor('dropdown', TuiDropdownPosition),
|
|
358
|
-
tuiRectAccessorFor('dropdown', TuiDropdownDirective),
|
|
359
|
-
], hostDirectives: [{ directive: i1.TuiActiveZone }, { directive: i2.TuiAnimated }], ngImport: i0, template: "<tui-scrollbar class=\"t-scroll\">\n <div\n *polymorpheusOutlet=\"directive.
|
|
326
|
+
tuiRectAccessorFor('dropdown', forwardRef(() => TuiDropdownDirective)),
|
|
327
|
+
], 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-3);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: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 }); }
|
|
360
328
|
}
|
|
361
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
329
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.16", ngImport: i0, type: TuiDropdownComponent, decorators: [{
|
|
362
330
|
type: Component,
|
|
363
331
|
args: [{ selector: 'tui-dropdown', imports: [PolymorpheusOutlet, TuiScrollbar], changeDetection: ChangeDetectionStrategy.Default, providers: [
|
|
364
332
|
TuiPositionService,
|
|
365
333
|
tuiPositionAccessorFor('dropdown', TuiDropdownPosition),
|
|
366
|
-
tuiRectAccessorFor('dropdown', TuiDropdownDirective),
|
|
334
|
+
tuiRectAccessorFor('dropdown', forwardRef(() => TuiDropdownDirective)),
|
|
367
335
|
], hostDirectives: [TuiActiveZone, TuiAnimated], host: {
|
|
368
336
|
'[attr.data-appearance]': 'options.appearance',
|
|
369
337
|
'[attr.tuiTheme]': 'theme()',
|
|
370
|
-
}, template: "<tui-scrollbar class=\"t-scroll\">\n <div\n *polymorpheusOutlet=\"directive.
|
|
338
|
+
}, 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-3);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:max-content;overscroll-behavior:none}.t-primitive{padding:1rem}\n"] }]
|
|
371
339
|
}] });
|
|
372
340
|
|
|
373
341
|
class TuiDropdownContent {
|
|
374
342
|
constructor() {
|
|
375
343
|
this.directive = inject(TuiDropdownDirective);
|
|
376
|
-
this.directive.tuiDropdown
|
|
344
|
+
tuiSetSignal(this.directive.tuiDropdown, inject(TemplateRef));
|
|
377
345
|
if (isPlatformBrowser(inject(PLATFORM_ID)) &&
|
|
378
346
|
this.directive.el.matches(':focus-within')) {
|
|
379
347
|
this.directive.toggle(true);
|
|
380
348
|
}
|
|
381
349
|
}
|
|
382
350
|
ngOnDestroy() {
|
|
383
|
-
this.directive.tuiDropdown
|
|
351
|
+
tuiSetSignal(this.directive.tuiDropdown, null);
|
|
384
352
|
}
|
|
385
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
386
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.
|
|
353
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.16", ngImport: i0, type: TuiDropdownContent, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
354
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.16", type: TuiDropdownContent, isStandalone: true, selector: "ng-template[tuiDropdown]", ngImport: i0 }); }
|
|
387
355
|
}
|
|
388
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
356
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.16", ngImport: i0, type: TuiDropdownContent, decorators: [{
|
|
389
357
|
type: Directive,
|
|
390
358
|
args: [{
|
|
391
|
-
standalone: true,
|
|
392
359
|
selector: 'ng-template[tuiDropdown]',
|
|
393
360
|
}]
|
|
394
361
|
}], ctorParameters: () => [] });
|
|
@@ -422,8 +389,8 @@ class TuiDropdownContext extends TuiRectAccessor {
|
|
|
422
389
|
this.currentRect = tuiPointToClientRect(x, y);
|
|
423
390
|
this.driver.next(true);
|
|
424
391
|
}
|
|
425
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
426
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.
|
|
392
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.16", ngImport: i0, type: TuiDropdownContext, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
393
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.16", type: TuiDropdownContext, isStandalone: true, selector: "[tuiDropdownContext]", host: { listeners: { "document:keydown.esc": "closeDropdown()", "longtap": "onContextMenu($event.detail.clientX, $event.detail.clientY)" }, properties: { "style.user-select": "userSelect()", "style.-webkit-user-select": "userSelect()", "style.-webkit-touch-callout": "userSelect()" } }, providers: [
|
|
427
394
|
TuiActiveZone,
|
|
428
395
|
TuiDropdownDriver,
|
|
429
396
|
tuiAsDriver(TuiDropdownDriver),
|
|
@@ -433,10 +400,9 @@ class TuiDropdownContext extends TuiRectAccessor {
|
|
|
433
400
|
__decorate([
|
|
434
401
|
shouldCall(activeZoneFilter)
|
|
435
402
|
], TuiDropdownContext.prototype, "closeDropdown", null);
|
|
436
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
403
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.16", ngImport: i0, type: TuiDropdownContext, decorators: [{
|
|
437
404
|
type: Directive,
|
|
438
405
|
args: [{
|
|
439
|
-
standalone: true,
|
|
440
406
|
selector: '[tuiDropdownContext]',
|
|
441
407
|
providers: [
|
|
442
408
|
TuiActiveZone,
|
|
@@ -462,48 +428,40 @@ const TUI_DROPDOWN_HOVER_DEFAULT_OPTIONS = {
|
|
|
462
428
|
/**
|
|
463
429
|
* Default parameters for dropdown hover directive
|
|
464
430
|
*/
|
|
465
|
-
const TUI_DROPDOWN_HOVER_OPTIONS =
|
|
466
|
-
factory: () => TUI_DROPDOWN_HOVER_DEFAULT_OPTIONS,
|
|
467
|
-
});
|
|
468
|
-
function tuiDropdownHoverOptionsProvider(options) {
|
|
469
|
-
return tuiProvideOptions(TUI_DROPDOWN_HOVER_OPTIONS, options, TUI_DROPDOWN_HOVER_DEFAULT_OPTIONS);
|
|
470
|
-
}
|
|
431
|
+
const [TUI_DROPDOWN_HOVER_OPTIONS, tuiDropdownHoverOptionsProvider] = tuiCreateOptions(TUI_DROPDOWN_HOVER_DEFAULT_OPTIONS);
|
|
471
432
|
|
|
472
433
|
function shouldClose(event) {
|
|
473
434
|
return (
|
|
474
435
|
// @ts-ignore
|
|
475
436
|
typeof CloseWatcher === 'undefined' &&
|
|
476
|
-
// ?. for
|
|
437
|
+
// ?. for autofill events
|
|
477
438
|
event.key?.toLowerCase() === 'escape' &&
|
|
478
|
-
this.
|
|
479
|
-
|
|
439
|
+
this.enabled() &&
|
|
440
|
+
this.open() &&
|
|
480
441
|
!this['dropdown']()?.nextElementSibling);
|
|
481
442
|
}
|
|
482
443
|
class TuiDropdownOpen {
|
|
483
444
|
constructor() {
|
|
445
|
+
this.dropdownHost = contentChild('tuiDropdownHost', {
|
|
446
|
+
descendants: true,
|
|
447
|
+
read: ElementRef,
|
|
448
|
+
});
|
|
484
449
|
this.directive = inject(TuiDropdownDirective);
|
|
485
450
|
this.el = tuiInjectElement();
|
|
486
451
|
this.obscured = inject(TuiObscured);
|
|
487
452
|
this.activeZone = inject(TuiActiveZone);
|
|
488
|
-
this.dropdown = computed(() => this.directive.ref()?.location.nativeElement);
|
|
489
|
-
this.tuiDropdownEnabled = true;
|
|
490
|
-
this.tuiDropdownOpen = false;
|
|
491
|
-
this.tuiDropdownOpenChange = new EventEmitter();
|
|
492
|
-
// TODO: make it private when all legacy controls will be deleted from @taiga-ui/legacy (5.0)
|
|
493
453
|
this.driver = inject(TuiDropdownDriver);
|
|
494
|
-
this.
|
|
495
|
-
|
|
454
|
+
this.dropdown = computed(() => this.directive.ref()?.location.nativeElement);
|
|
455
|
+
this.enabled = input(true, { alias: 'tuiDropdownEnabled' });
|
|
456
|
+
this.open = model(false, { alias: 'tuiDropdownOpen' });
|
|
457
|
+
this.driveEffect = effect(() => this.drive(this.open()));
|
|
458
|
+
this.syncSub = this.driver
|
|
459
|
+
.pipe(filter((open) => open !== this.open()), takeUntilDestroyed())
|
|
460
|
+
.subscribe((open) => this.update(open));
|
|
461
|
+
this.closeSub = this.driver
|
|
462
|
+
.pipe(tuiIfMap(() => merge(tuiCloseWatcher(), this.obscured.tuiObscured$.pipe(filter(Boolean)), this.activeZone.tuiActiveZoneChange.pipe(filter((a) => !a)), fromEvent(this.el, 'focusin').pipe(filter((event) => !this.host.contains(tuiGetActualTarget(event)) ||
|
|
496
463
|
!this.directive.ref())))), tuiZonefull(), tuiWatch(), takeUntilDestroyed())
|
|
497
464
|
.subscribe(() => this.toggle(false));
|
|
498
|
-
this.sync = this.driver.pipe(takeUntilDestroyed()).subscribe((open) => {
|
|
499
|
-
if (open !== this.tuiDropdownOpen) {
|
|
500
|
-
this.update(open);
|
|
501
|
-
}
|
|
502
|
-
});
|
|
503
|
-
}
|
|
504
|
-
ngOnChanges() {
|
|
505
|
-
this.drive(!!this.tuiDropdownOpen);
|
|
506
|
-
this.tuiDropdownOpenChange.emit(!!this.tuiDropdownOpen);
|
|
507
465
|
}
|
|
508
466
|
toggle(open) {
|
|
509
467
|
if (this.focused && !open) {
|
|
@@ -517,14 +475,14 @@ class TuiDropdownOpen {
|
|
|
517
475
|
}
|
|
518
476
|
onClick(target) {
|
|
519
477
|
if (!this.editable && this.host.contains(target)) {
|
|
520
|
-
this.update(!this.
|
|
478
|
+
this.update(!this.open());
|
|
521
479
|
}
|
|
522
480
|
}
|
|
523
481
|
onArrow(event, up) {
|
|
524
482
|
if (!tuiIsElement(event.target) ||
|
|
525
483
|
!this.host.contains(event.target) ||
|
|
526
|
-
!this.
|
|
527
|
-
!this.directive.
|
|
484
|
+
!this.enabled() ||
|
|
485
|
+
!this.directive.content()) {
|
|
528
486
|
return;
|
|
529
487
|
}
|
|
530
488
|
event.preventDefault();
|
|
@@ -542,11 +500,11 @@ class TuiDropdownOpen {
|
|
|
542
500
|
}
|
|
543
501
|
}
|
|
544
502
|
get host() {
|
|
545
|
-
const initial = this.dropdownHost?.nativeElement || this.el;
|
|
546
|
-
const focusable =
|
|
503
|
+
const initial = this.dropdownHost()?.nativeElement || this.el;
|
|
504
|
+
const focusable = tuiIsFocusable(initial)
|
|
547
505
|
? initial
|
|
548
506
|
: tuiGetClosestFocusable({ initial, root: this.el });
|
|
549
|
-
return this.dropdownHost?.nativeElement || focusable || this.el;
|
|
507
|
+
return this.dropdownHost()?.nativeElement || focusable || this.el;
|
|
550
508
|
}
|
|
551
509
|
get editable() {
|
|
552
510
|
return tuiIsElementEditable(this.host);
|
|
@@ -555,15 +513,14 @@ class TuiDropdownOpen {
|
|
|
555
513
|
return tuiIsFocusedIn(this.host) || tuiIsFocusedIn(this.dropdown());
|
|
556
514
|
}
|
|
557
515
|
update(open) {
|
|
558
|
-
if (open && !this.
|
|
516
|
+
if (open && !this.enabled()) {
|
|
559
517
|
return this.drive();
|
|
560
518
|
}
|
|
561
|
-
this.
|
|
562
|
-
this.tuiDropdownOpenChange.emit(open);
|
|
519
|
+
this.open.set(open);
|
|
563
520
|
this.drive();
|
|
564
521
|
}
|
|
565
|
-
drive(open =
|
|
566
|
-
this.obscured.tuiObscuredEnabled
|
|
522
|
+
drive(open = this.open() && this.enabled()) {
|
|
523
|
+
tuiSetSignal(this.obscured.tuiObscuredEnabled, open);
|
|
567
524
|
this.driver.next(open);
|
|
568
525
|
}
|
|
569
526
|
focusDropdown(previous) {
|
|
@@ -579,17 +536,16 @@ class TuiDropdownOpen {
|
|
|
579
536
|
child.remove();
|
|
580
537
|
focusable?.focus();
|
|
581
538
|
}
|
|
582
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
583
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "
|
|
539
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.16", ngImport: i0, type: TuiDropdownOpen, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
540
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "19.2.16", type: TuiDropdownOpen, isStandalone: true, selector: "[tuiDropdown][tuiDropdownAuto],[tuiDropdown][tuiDropdownOpen],[tuiDropdown][tuiDropdownOpenChange]", inputs: { enabled: { classPropertyName: "enabled", publicName: "tuiDropdownEnabled", isSignal: true, isRequired: false, transformFunction: null }, open: { classPropertyName: "open", publicName: "tuiDropdownOpen", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { open: "tuiDropdownOpenChange" }, host: { listeners: { "click": "onClick($event.target)", "keydown.arrowDown": "onArrow($event, false)", "keydown.arrowUp": "onArrow($event, true)", "document:keydown.zoneless.capture": "onEsc($event)", "document:keydown.zoneless": "onKeydown($event)", "tuiActiveZoneChange": "0" } }, providers: [TuiDropdownDriver, tuiAsDriver(TuiDropdownDriver)], queries: [{ propertyName: "dropdownHost", first: true, predicate: ["tuiDropdownHost"], descendants: true, read: ElementRef, isSignal: true }], hostDirectives: [{ directive: i1$1.TuiObscured }, { directive: i1.TuiActiveZone, inputs: ["tuiActiveZoneParent", "tuiActiveZoneParent"], outputs: ["tuiActiveZoneChange", "tuiActiveZoneChange"] }], ngImport: i0 }); }
|
|
584
541
|
}
|
|
585
542
|
__decorate([
|
|
586
543
|
shouldCall(shouldClose)
|
|
587
544
|
], TuiDropdownOpen.prototype, "onEsc", null);
|
|
588
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
545
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.16", ngImport: i0, type: TuiDropdownOpen, decorators: [{
|
|
589
546
|
type: Directive,
|
|
590
547
|
args: [{
|
|
591
|
-
|
|
592
|
-
selector: '[tuiDropdown][tuiDropdownOpen],[tuiDropdown][tuiDropdownOpenChange]',
|
|
548
|
+
selector: '[tuiDropdown][tuiDropdownAuto],[tuiDropdown][tuiDropdownOpen],[tuiDropdown][tuiDropdownOpenChange]',
|
|
593
549
|
providers: [TuiDropdownDriver, tuiAsDriver(TuiDropdownDriver)],
|
|
594
550
|
hostDirectives: [
|
|
595
551
|
TuiObscured,
|
|
@@ -609,37 +565,32 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
609
565
|
'(tuiActiveZoneChange)': '0',
|
|
610
566
|
},
|
|
611
567
|
}]
|
|
612
|
-
}], propDecorators: {
|
|
613
|
-
type: ContentChild,
|
|
614
|
-
args: ['tuiDropdownHost', { descendants: true, read: ElementRef }]
|
|
615
|
-
}], tuiDropdownEnabled: [{
|
|
616
|
-
type: Input
|
|
617
|
-
}], tuiDropdownOpen: [{
|
|
618
|
-
type: Input
|
|
619
|
-
}], tuiDropdownOpenChange: [{
|
|
620
|
-
type: Output
|
|
621
|
-
}], onEsc: [] } });
|
|
568
|
+
}], propDecorators: { onEsc: [] } });
|
|
622
569
|
|
|
623
570
|
class TuiDropdownHover extends TuiDriver {
|
|
624
571
|
constructor() {
|
|
625
572
|
super((subscriber) => this.stream$.subscribe(subscriber));
|
|
573
|
+
this.dropdownHost = contentChild('tuiDropdownHost', {
|
|
574
|
+
descendants: true,
|
|
575
|
+
read: ElementRef,
|
|
576
|
+
});
|
|
577
|
+
this.hovered = false;
|
|
626
578
|
this.el = tuiInjectElement();
|
|
627
579
|
this.doc = inject(DOCUMENT);
|
|
628
580
|
this.options = inject(TUI_DROPDOWN_HOVER_OPTIONS);
|
|
629
581
|
this.activeZone = inject(TuiActiveZone);
|
|
630
582
|
this.open = inject(TuiDropdownOpen, { optional: true });
|
|
583
|
+
this.stream$ = merge(
|
|
631
584
|
/**
|
|
632
585
|
* Dropdown can be removed not only via click/touch –
|
|
633
586
|
* swipe on mobile devices removes dropdown sheet without triggering new mouseover / mouseout events.
|
|
634
587
|
*/
|
|
635
|
-
|
|
636
|
-
this.stream$ = merge(this.dropdownExternalRemoval$.pipe(switchMap(() => tuiTypedFromEvent(this.doc, 'pointerdown').pipe(map(tuiGetActualTarget), delay(this.hideDelay), startWith(null), takeUntil(fromEvent(this.doc, 'mouseover'))))), tuiTypedFromEvent(this.doc, 'mouseover').pipe(map(tuiGetActualTarget)), tuiTypedFromEvent(this.doc, 'mouseout').pipe(map((e) => e.relatedTarget))).pipe(map((element) => tuiIsElement(element) && this.isHovered(element)), distinctUntilChanged(), switchMap((v) => of(v).pipe(delay(v ? this.showDelay : this.hideDelay))), tuiZoneOptimized(), tap((hovered) => {
|
|
588
|
+
toObservable(inject(TuiDropdownDirective).ref).pipe(filter((x) => !x && this.hovered), switchMap(() => tuiTypedFromEvent(this.doc, 'pointerdown').pipe(map(tuiGetActualTarget), delay(this.tuiDropdownHideDelay()), startWith(null), takeUntil(fromEvent(this.doc, 'mouseover'))))), tuiTypedFromEvent(this.doc, 'mouseover').pipe(map(tuiGetActualTarget)), tuiTypedFromEvent(this.doc, 'mouseout').pipe(map((e) => e.relatedTarget))).pipe(map((element) => tuiIsElement(element) && this.isHovered(element)), distinctUntilChanged(), switchMap((v) => of(v).pipe(delay(v ? this.tuiDropdownShowDelay() : this.tuiDropdownHideDelay()))), tuiZoneOptimized(), tap((hovered) => {
|
|
637
589
|
this.hovered = hovered;
|
|
638
590
|
this.open?.toggle(hovered);
|
|
639
591
|
}), share());
|
|
640
|
-
this.
|
|
641
|
-
this.
|
|
642
|
-
this.hovered = false;
|
|
592
|
+
this.tuiDropdownShowDelay = input(this.options.showDelay);
|
|
593
|
+
this.tuiDropdownHideDelay = input(this.options.hideDelay);
|
|
643
594
|
this.type = 'dropdown';
|
|
644
595
|
}
|
|
645
596
|
onClick(event) {
|
|
@@ -648,85 +599,43 @@ class TuiDropdownHover extends TuiDriver {
|
|
|
648
599
|
}
|
|
649
600
|
}
|
|
650
601
|
isHovered(element) {
|
|
651
|
-
const host = this.dropdownHost?.nativeElement || this.el;
|
|
602
|
+
const host = this.dropdownHost()?.nativeElement || this.el;
|
|
652
603
|
const hovered = host.contains(element);
|
|
653
604
|
const child = !this.el.contains(element) && this.activeZone.contains(element);
|
|
654
605
|
return hovered || child;
|
|
655
606
|
}
|
|
656
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
657
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "
|
|
607
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.16", ngImport: i0, type: TuiDropdownHover, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
608
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "19.2.16", type: TuiDropdownHover, isStandalone: true, selector: "[tuiDropdownHover]", inputs: { tuiDropdownShowDelay: { classPropertyName: "tuiDropdownShowDelay", publicName: "tuiDropdownShowDelay", isSignal: true, isRequired: false, transformFunction: null }, tuiDropdownHideDelay: { classPropertyName: "tuiDropdownHideDelay", publicName: "tuiDropdownHideDelay", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "click.capture": "onClick($event)" } }, providers: [TuiActiveZone, tuiAsDriver(TuiDropdownHover)], queries: [{ propertyName: "dropdownHost", first: true, predicate: ["tuiDropdownHost"], descendants: true, read: ElementRef, isSignal: true }], usesInheritance: true, ngImport: i0 }); }
|
|
658
609
|
}
|
|
659
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
610
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.16", ngImport: i0, type: TuiDropdownHover, decorators: [{
|
|
660
611
|
type: Directive,
|
|
661
612
|
args: [{
|
|
662
|
-
standalone: true,
|
|
663
613
|
selector: '[tuiDropdownHover]',
|
|
664
614
|
providers: [TuiActiveZone, tuiAsDriver(TuiDropdownHover)],
|
|
665
615
|
host: {
|
|
666
616
|
'(click.capture)': 'onClick($event)',
|
|
667
617
|
},
|
|
668
618
|
}]
|
|
669
|
-
}], ctorParameters: () => []
|
|
670
|
-
type: ContentChild,
|
|
671
|
-
args: ['tuiDropdownHost', { descendants: true, read: ElementRef }]
|
|
672
|
-
}], showDelay: [{
|
|
673
|
-
type: Input,
|
|
674
|
-
args: ['tuiDropdownShowDelay']
|
|
675
|
-
}], hideDelay: [{
|
|
676
|
-
type: Input,
|
|
677
|
-
args: ['tuiDropdownHideDelay']
|
|
678
|
-
}] } });
|
|
619
|
+
}], ctorParameters: () => [] });
|
|
679
620
|
|
|
680
621
|
class TuiDropdownManual {
|
|
681
622
|
constructor() {
|
|
682
623
|
this.driver = inject(TuiDropdownDriver);
|
|
683
|
-
this.tuiDropdownManual = false;
|
|
624
|
+
this.tuiDropdownManual = input(false);
|
|
684
625
|
}
|
|
685
626
|
ngOnChanges() {
|
|
686
|
-
this.driver.next(!!this.tuiDropdownManual);
|
|
627
|
+
this.driver.next(!!this.tuiDropdownManual());
|
|
687
628
|
}
|
|
688
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
689
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "
|
|
629
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.16", ngImport: i0, type: TuiDropdownManual, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
630
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.16", type: TuiDropdownManual, isStandalone: true, selector: "[tuiDropdownManual]", inputs: { tuiDropdownManual: { classPropertyName: "tuiDropdownManual", publicName: "tuiDropdownManual", isSignal: true, isRequired: false, transformFunction: null } }, providers: [TuiDropdownDriver, tuiAsDriver(TuiDropdownDriver)], usesOnChanges: true, ngImport: i0 }); }
|
|
690
631
|
}
|
|
691
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
632
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.16", ngImport: i0, type: TuiDropdownManual, decorators: [{
|
|
692
633
|
type: Directive,
|
|
693
634
|
args: [{
|
|
694
|
-
standalone: true,
|
|
695
635
|
selector: '[tuiDropdownManual]',
|
|
696
636
|
providers: [TuiDropdownDriver, tuiAsDriver(TuiDropdownDriver)],
|
|
697
637
|
}]
|
|
698
|
-
}]
|
|
699
|
-
type: Input
|
|
700
|
-
}] } });
|
|
701
|
-
|
|
702
|
-
/**
|
|
703
|
-
* @deprecated TODO: remove in v.5 when legacy controls are dropped
|
|
704
|
-
*/
|
|
705
|
-
class TuiDropdownOpenLegacy {
|
|
706
|
-
constructor() {
|
|
707
|
-
this.openStateSub = new Subject();
|
|
708
|
-
this.tuiDropdownOpenChange = this.openStateSub.pipe(distinctUntilChanged());
|
|
709
|
-
}
|
|
710
|
-
set tuiDropdownOpen(open) {
|
|
711
|
-
this.emitOpenChange(open);
|
|
712
|
-
}
|
|
713
|
-
emitOpenChange(open) {
|
|
714
|
-
this.openStateSub.next(open);
|
|
715
|
-
}
|
|
716
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiDropdownOpenLegacy, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
717
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.15", type: TuiDropdownOpenLegacy, isStandalone: true, selector: "[tuiDropdownOpen]:not([tuiDropdown]),[tuiDropdownOpenChange]:not([tuiDropdown])", inputs: { tuiDropdownOpen: "tuiDropdownOpen" }, outputs: { tuiDropdownOpenChange: "tuiDropdownOpenChange" }, ngImport: i0 }); }
|
|
718
|
-
}
|
|
719
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiDropdownOpenLegacy, decorators: [{
|
|
720
|
-
type: Directive,
|
|
721
|
-
args: [{
|
|
722
|
-
standalone: true,
|
|
723
|
-
selector: '[tuiDropdownOpen]:not([tuiDropdown]),[tuiDropdownOpenChange]:not([tuiDropdown])',
|
|
724
|
-
}]
|
|
725
|
-
}], propDecorators: { tuiDropdownOpenChange: [{
|
|
726
|
-
type: Output
|
|
727
|
-
}], tuiDropdownOpen: [{
|
|
728
|
-
type: Input
|
|
729
|
-
}] } });
|
|
638
|
+
}] });
|
|
730
639
|
|
|
731
640
|
class TuiDropdownPositionSided extends TuiPositionAccessor {
|
|
732
641
|
constructor() {
|
|
@@ -735,12 +644,12 @@ class TuiDropdownPositionSided extends TuiPositionAccessor {
|
|
|
735
644
|
this.viewport = inject(TUI_VIEWPORT);
|
|
736
645
|
this.vertical = inject(TuiDropdownPosition);
|
|
737
646
|
this.previous = this.options.direction || 'bottom';
|
|
738
|
-
this.tuiDropdownSided = '';
|
|
739
|
-
this.tuiDropdownSidedOffset = 4;
|
|
647
|
+
this.tuiDropdownSided = input('');
|
|
648
|
+
this.tuiDropdownSidedOffset = input(4);
|
|
740
649
|
this.type = 'dropdown';
|
|
741
650
|
}
|
|
742
651
|
getPosition(rect) {
|
|
743
|
-
if (this.tuiDropdownSided === false) {
|
|
652
|
+
if (this.tuiDropdownSided() === false) {
|
|
744
653
|
return this.vertical.getPosition(rect);
|
|
745
654
|
}
|
|
746
655
|
const { height, width } = rect;
|
|
@@ -756,38 +665,33 @@ class TuiDropdownPositionSided extends TuiPositionAccessor {
|
|
|
756
665
|
bottom: viewport.bottom - hostRect.top,
|
|
757
666
|
};
|
|
758
667
|
const position = {
|
|
759
|
-
top: hostRect.bottom - height + this.tuiDropdownSidedOffset + 1, // 1 for border
|
|
668
|
+
top: hostRect.bottom - height + this.tuiDropdownSidedOffset() + 1, // 1 for border
|
|
760
669
|
left: hostRect.left - width - offset,
|
|
761
670
|
right: hostRect.right + offset,
|
|
762
|
-
bottom: hostRect.top - this.tuiDropdownSidedOffset - 1, // 1 for border
|
|
671
|
+
bottom: hostRect.top - this.tuiDropdownSidedOffset() - 1, // 1 for border
|
|
763
672
|
};
|
|
764
673
|
const better = available.top > available.bottom ? 'top' : 'bottom';
|
|
765
674
|
const maxLeft = available.left > available.right ? position.left : position.right;
|
|
766
675
|
const left = available[align] > width ? position[align] : maxLeft;
|
|
767
676
|
if ((available[this.previous] > height && direction) ||
|
|
768
677
|
this.previous === better) {
|
|
769
|
-
this.vertical.
|
|
770
|
-
return [position[this.previous]
|
|
678
|
+
this.vertical.direction.next(this.previous);
|
|
679
|
+
return [left, position[this.previous]];
|
|
771
680
|
}
|
|
772
681
|
this.previous = better;
|
|
773
|
-
this.vertical.
|
|
774
|
-
return [position[better]
|
|
682
|
+
this.vertical.direction.next(better);
|
|
683
|
+
return [left, position[better]];
|
|
775
684
|
}
|
|
776
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
777
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "
|
|
685
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.16", ngImport: i0, type: TuiDropdownPositionSided, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
686
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.16", type: TuiDropdownPositionSided, isStandalone: true, selector: "[tuiDropdownSided]", inputs: { tuiDropdownSided: { classPropertyName: "tuiDropdownSided", publicName: "tuiDropdownSided", isSignal: true, isRequired: false, transformFunction: null }, tuiDropdownSidedOffset: { classPropertyName: "tuiDropdownSidedOffset", publicName: "tuiDropdownSidedOffset", isSignal: true, isRequired: false, transformFunction: null } }, providers: [TuiDropdownPosition, tuiAsPositionAccessor(TuiDropdownPositionSided)], usesInheritance: true, ngImport: i0 }); }
|
|
778
687
|
}
|
|
779
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
688
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.16", ngImport: i0, type: TuiDropdownPositionSided, decorators: [{
|
|
780
689
|
type: Directive,
|
|
781
690
|
args: [{
|
|
782
|
-
standalone: true,
|
|
783
691
|
selector: '[tuiDropdownSided]',
|
|
784
692
|
providers: [TuiDropdownPosition, tuiAsPositionAccessor(TuiDropdownPositionSided)],
|
|
785
693
|
}]
|
|
786
|
-
}]
|
|
787
|
-
type: Input
|
|
788
|
-
}], tuiDropdownSidedOffset: [{
|
|
789
|
-
type: Input
|
|
790
|
-
}] } });
|
|
694
|
+
}] });
|
|
791
695
|
|
|
792
696
|
class TuiDropdownSelection extends TuiDriver {
|
|
793
697
|
constructor() {
|
|
@@ -796,9 +700,9 @@ class TuiDropdownSelection extends TuiDriver {
|
|
|
796
700
|
this.vcr = inject(ViewContainerRef);
|
|
797
701
|
this.dropdown = inject(TuiDropdownDirective);
|
|
798
702
|
this.el = tuiInjectElement();
|
|
799
|
-
this.handler
|
|
703
|
+
this.handler = computed((visible = this.tuiDropdownSelection()) => tuiIsString(visible) ? TUI_TRUE_HANDLER : visible);
|
|
800
704
|
this.stream$ = combineLatest([
|
|
801
|
-
this.handler
|
|
705
|
+
toObservable(this.handler),
|
|
802
706
|
inject(TUI_SELECTION_STREAM).pipe(map(() => this.getRange()), filter((range) => this.isValid(range)), distinctUntilChanged((x, y) => x.startOffset === y.startOffset &&
|
|
803
707
|
x.endOffset === y.endOffset &&
|
|
804
708
|
x.commonAncestorContainer === y.commonAncestorContainer)),
|
|
@@ -810,17 +714,15 @@ class TuiDropdownSelection extends TuiDriver {
|
|
|
810
714
|
: this.range;
|
|
811
715
|
return (contained && handler(this.range)) || this.inDropdown(range);
|
|
812
716
|
}));
|
|
813
|
-
this.range = inject(
|
|
814
|
-
|
|
717
|
+
this.range = isPlatformBrowser(inject(PLATFORM_ID))
|
|
718
|
+
? new Range()
|
|
719
|
+
: {};
|
|
815
720
|
this.type = 'dropdown';
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
if (!tuiIsString(visible)) {
|
|
819
|
-
this.handler$.next(visible);
|
|
820
|
-
}
|
|
721
|
+
this.tuiDropdownSelection = input('');
|
|
722
|
+
this.tuiDropdownSelectionPosition = input('selection');
|
|
821
723
|
}
|
|
822
724
|
getClientRect() {
|
|
823
|
-
switch (this.
|
|
725
|
+
switch (this.tuiDropdownSelectionPosition()) {
|
|
824
726
|
case 'tag': {
|
|
825
727
|
const { commonAncestorContainer } = this.range;
|
|
826
728
|
const element = tuiIsElement(commonAncestorContainer)
|
|
@@ -911,28 +813,22 @@ class TuiDropdownSelection extends TuiDriver {
|
|
|
911
813
|
this.ghost = ghost;
|
|
912
814
|
return ghost;
|
|
913
815
|
}
|
|
914
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
915
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "
|
|
816
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.16", ngImport: i0, type: TuiDropdownSelection, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
817
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.16", type: TuiDropdownSelection, isStandalone: true, selector: "[tuiDropdownSelection]", inputs: { tuiDropdownSelection: { classPropertyName: "tuiDropdownSelection", publicName: "tuiDropdownSelection", isSignal: true, isRequired: false, transformFunction: null }, tuiDropdownSelectionPosition: { classPropertyName: "tuiDropdownSelectionPosition", publicName: "tuiDropdownSelectionPosition", isSignal: true, isRequired: false, transformFunction: null } }, providers: [
|
|
916
818
|
tuiAsDriver(TuiDropdownSelection),
|
|
917
819
|
tuiAsRectAccessor(TuiDropdownSelection),
|
|
918
820
|
], usesInheritance: true, ngImport: i0 }); }
|
|
919
821
|
}
|
|
920
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
822
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.16", ngImport: i0, type: TuiDropdownSelection, decorators: [{
|
|
921
823
|
type: Directive,
|
|
922
824
|
args: [{
|
|
923
|
-
standalone: true,
|
|
924
825
|
selector: '[tuiDropdownSelection]',
|
|
925
826
|
providers: [
|
|
926
827
|
tuiAsDriver(TuiDropdownSelection),
|
|
927
828
|
tuiAsRectAccessor(TuiDropdownSelection),
|
|
928
829
|
],
|
|
929
830
|
}]
|
|
930
|
-
}], ctorParameters: () => []
|
|
931
|
-
type: Input,
|
|
932
|
-
args: ['tuiDropdownSelectionPosition']
|
|
933
|
-
}], tuiDropdownSelection: [{
|
|
934
|
-
type: Input
|
|
935
|
-
}] } });
|
|
831
|
+
}], ctorParameters: () => [] });
|
|
936
832
|
|
|
937
833
|
const TuiDropdown = [
|
|
938
834
|
TuiDropdownOptionsDirective,
|
|
@@ -940,7 +836,6 @@ const TuiDropdown = [
|
|
|
940
836
|
TuiDropdownDirective,
|
|
941
837
|
TuiDropdownComponent,
|
|
942
838
|
TuiDropdownOpen,
|
|
943
|
-
TuiDropdownOpenLegacy,
|
|
944
839
|
TuiDropdownManual,
|
|
945
840
|
TuiDropdownHover,
|
|
946
841
|
TuiDropdownContent,
|
|
@@ -954,14 +849,7 @@ function tuiDropdown(value) {
|
|
|
954
849
|
return tuiDirectiveBinding(TuiDropdownDirective, 'tuiDropdown', value, {});
|
|
955
850
|
}
|
|
956
851
|
function tuiDropdownEnabled(value) {
|
|
957
|
-
return tuiDirectiveBinding(TuiDropdownOpen, '
|
|
958
|
-
}
|
|
959
|
-
function tuiDropdownOpen() {
|
|
960
|
-
const open = tuiDirectiveBinding(TuiDropdownOpen, 'tuiDropdownOpen', false, {});
|
|
961
|
-
inject(TuiDropdownOpen)
|
|
962
|
-
.tuiDropdownOpenChange.pipe(takeUntilDestroyed())
|
|
963
|
-
.subscribe((value) => open.set(value));
|
|
964
|
-
return open;
|
|
852
|
+
return tuiDirectiveBinding(TuiDropdownOpen, 'enabled', value, {});
|
|
965
853
|
}
|
|
966
854
|
|
|
967
855
|
class TuiDropdownFixed {
|
|
@@ -969,13 +857,12 @@ class TuiDropdownFixed {
|
|
|
969
857
|
const override = tuiOverrideOptions$1({ limitWidth: 'fixed' }, TUI_DROPDOWN_DEFAULT_OPTIONS);
|
|
970
858
|
override(inject(TUI_DROPDOWN_OPTIONS, { self: true, optional: true }), null);
|
|
971
859
|
}
|
|
972
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
973
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.
|
|
860
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.16", ngImport: i0, type: TuiDropdownFixed, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
861
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.16", type: TuiDropdownFixed, isStandalone: true, providers: [tuiDropdownOptionsProvider({})], ngImport: i0 }); }
|
|
974
862
|
}
|
|
975
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
863
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.16", ngImport: i0, type: TuiDropdownFixed, decorators: [{
|
|
976
864
|
type: Directive,
|
|
977
865
|
args: [{
|
|
978
|
-
standalone: true,
|
|
979
866
|
providers: [tuiDropdownOptionsProvider({})],
|
|
980
867
|
}]
|
|
981
868
|
}], ctorParameters: () => [] });
|
|
@@ -987,22 +874,20 @@ class TuiDropdownAuto {
|
|
|
987
874
|
*/
|
|
988
875
|
inject(TUI_DROPDOWN_OPTIONS).limitWidth = 'auto';
|
|
989
876
|
}
|
|
990
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
991
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.
|
|
877
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.16", ngImport: i0, type: TuiDropdownAuto, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
878
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.16", type: TuiDropdownAuto, isStandalone: true, ngImport: i0 }); }
|
|
992
879
|
}
|
|
993
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
994
|
-
type: Directive
|
|
995
|
-
args: [{ standalone: true }]
|
|
880
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.16", ngImport: i0, type: TuiDropdownAuto, decorators: [{
|
|
881
|
+
type: Directive
|
|
996
882
|
}], ctorParameters: () => [] });
|
|
997
883
|
|
|
998
884
|
class TuiWithDropdownOpen {
|
|
999
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
1000
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.
|
|
885
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.16", ngImport: i0, type: TuiWithDropdownOpen, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
886
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.16", type: TuiWithDropdownOpen, isStandalone: true, hostDirectives: [{ directive: TuiDropdownOpen, inputs: ["tuiDropdownOpen", "open", "tuiDropdownEnabled", "tuiDropdownEnabled"], outputs: ["tuiDropdownOpenChange", "openChange"] }], ngImport: i0 }); }
|
|
1001
887
|
}
|
|
1002
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
888
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.16", ngImport: i0, type: TuiWithDropdownOpen, decorators: [{
|
|
1003
889
|
type: Directive,
|
|
1004
890
|
args: [{
|
|
1005
|
-
standalone: true,
|
|
1006
891
|
hostDirectives: [
|
|
1007
892
|
{
|
|
1008
893
|
directive: TuiDropdownOpen,
|
|
@@ -1017,5 +902,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
1017
902
|
* Generated bundle index. Do not edit.
|
|
1018
903
|
*/
|
|
1019
904
|
|
|
1020
|
-
export { TUI_DROPDOWN_COMPONENT, TUI_DROPDOWN_CONTEXT, TUI_DROPDOWN_DEFAULT_OPTIONS, TUI_DROPDOWN_HOVER_DEFAULT_OPTIONS, TUI_DROPDOWN_HOVER_OPTIONS, TUI_DROPDOWN_OPTIONS, TuiDropdown, TuiDropdownAuto, TuiDropdownComponent, TuiDropdownContent, TuiDropdownContext, TuiDropdownDirective, TuiDropdownDriver, TuiDropdownDriverDirective, TuiDropdownFixed, TuiDropdownHover, TuiDropdownManual, TuiDropdownOpen,
|
|
1021
|
-
//# sourceMappingURL=taiga-ui-core-
|
|
905
|
+
export { TUI_DROPDOWN_COMPONENT, TUI_DROPDOWN_CONTEXT, TUI_DROPDOWN_DEFAULT_OPTIONS, TUI_DROPDOWN_HOVER_DEFAULT_OPTIONS, TUI_DROPDOWN_HOVER_OPTIONS, TUI_DROPDOWN_OPTIONS, TuiDropdown, TuiDropdownAuto, TuiDropdownComponent, TuiDropdownContent, TuiDropdownContext, TuiDropdownDirective, TuiDropdownDriver, TuiDropdownDriverDirective, TuiDropdownFixed, TuiDropdownHover, TuiDropdownManual, TuiDropdownOpen, TuiDropdownOptionsDirective, TuiDropdownPosition, TuiDropdownPositionSided, TuiDropdownSelection, TuiWithDropdownOpen, tuiDropdown, tuiDropdownEnabled, tuiDropdownHoverOptionsProvider, tuiDropdownOptionsProvider };
|
|
906
|
+
//# sourceMappingURL=taiga-ui-core-portals-dropdown.mjs.map
|