@taiga-ui/core 4.52.0-canary.9fae831 → 4.52.0-canary.a1004d6
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/button/button.directive.d.ts +2 -2
- package/components/calendar/calendar-sheet.component.d.ts +1 -1
- package/components/calendar/calendar-sheet.options.d.ts +1 -3
- package/{pipes/calendar-sheet → components/calendar}/calendar-sheet.pipe.d.ts +2 -2
- package/components/calendar/calendar-spin.component.d.ts +1 -0
- package/components/calendar/calendar-year.component.d.ts +1 -1
- package/components/calendar/calendar.options.d.ts +9 -0
- package/components/calendar/index.d.ts +3 -0
- package/{pipes/order-week-days → components/calendar}/order-week-days.pipe.d.ts +1 -1
- package/components/cell/cell.directive.d.ts +9 -0
- package/components/cell/cell.options.d.ts +6 -0
- package/components/cell/index.d.ts +2 -0
- package/components/data-list/data-list.component.d.ts +8 -12
- 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/error/error.component.d.ts +1 -1
- package/components/expand/expand.component.d.ts +9 -28
- package/components/expand/index.d.ts +0 -2
- package/components/icon/icon.component.d.ts +2 -2
- package/components/index.d.ts +3 -3
- package/components/input/index.d.ts +2 -0
- package/components/input/input.d.ts +5 -0
- package/components/input/input.directive.d.ts +29 -0
- package/components/label/label.directive.d.ts +1 -1
- package/components/link/index.d.ts +0 -1
- package/components/link/link.directive.d.ts +8 -6
- package/components/loader/loader.component.d.ts +7 -7
- 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 +7 -12
- 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 +2 -3
- package/components/scrollbar/scroll-into-view.directive.d.ts +3 -2
- package/components/scrollbar/scroll-ref.directive.d.ts +2 -0
- package/components/scrollbar/scrollbar.component.d.ts +1 -5
- package/components/scrollbar/scrollbar.directive.d.ts +2 -2
- package/components/spin-button/spin-button.component.d.ts +9 -10
- package/components/textfield/index.d.ts +1 -4
- package/components/textfield/textfield-multi/textfield-item.component.d.ts +3 -2
- package/components/textfield/textfield-multi/textfield-multi.component.d.ts +9 -15
- package/components/textfield/textfield.component.d.ts +20 -34
- package/components/textfield/textfield.d.ts +2 -4
- package/components/textfield/textfield.options.d.ts +8 -11
- package/{directives → components}/title/title.directive.d.ts +2 -3
- package/directives/appearance/appearance.directive.d.ts +1 -1
- package/directives/appearance/appearance.options.d.ts +1 -1
- 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/items-handlers/items-handlers.directive.d.ts +5 -9
- package/directives/items-handlers/items-handlers.tokens.d.ts +4 -4
- 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 +13 -20
- package/fesm2022/taiga-ui-core-components-button.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-calendar.mjs +140 -36
- package/fesm2022/taiga-ui-core-components-calendar.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-cell.mjs +45 -0
- package/fesm2022/taiga-ui-core-components-cell.mjs.map +1 -0
- package/fesm2022/taiga-ui-core-components-data-list.mjs +111 -280
- package/fesm2022/taiga-ui-core-components-data-list.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-error.mjs +14 -13
- package/fesm2022/taiga-ui-core-components-error.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-expand.mjs +33 -131
- package/fesm2022/taiga-ui-core-components-expand.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-icon.mjs +10 -11
- 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 +13 -18
- package/fesm2022/taiga-ui-core-components-label.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-link.mjs +16 -36
- package/fesm2022/taiga-ui-core-components-link.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-loader.mjs +16 -34
- package/fesm2022/taiga-ui-core-components-loader.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-notification.mjs +108 -68
- package/fesm2022/taiga-ui-core-components-notification.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-root.mjs +9 -25
- package/fesm2022/taiga-ui-core-components-root.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-scrollbar.mjs +68 -82
- package/fesm2022/taiga-ui-core-components-scrollbar.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-spin-button.mjs +18 -31
- package/fesm2022/taiga-ui-core-components-spin-button.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-textfield.mjs +120 -419
- package/fesm2022/taiga-ui-core-components-textfield.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-title.mjs +37 -0
- package/fesm2022/taiga-ui-core-components-title.mjs.map +1 -0
- package/fesm2022/taiga-ui-core-components.mjs +3 -3
- package/fesm2022/taiga-ui-core-directives-appearance.mjs +18 -21
- 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 +25 -40
- package/fesm2022/taiga-ui-core-directives-group.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-directives-icons.mjs +14 -17
- package/fesm2022/taiga-ui-core-directives-icons.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-directives-items-handlers.mjs +18 -42
- 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} +191 -359
- package/fesm2022/taiga-ui-core-portals-dropdown.mjs.map +1 -0
- package/fesm2022/taiga-ui-core-portals-hint.mjs +609 -0
- 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-portals-popup.mjs +56 -0
- 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 +15 -79
- package/fesm2022/taiga-ui-core-services.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-tokens.mjs +51 -64
- 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 +20 -20
- package/fesm2022/taiga-ui-core-utils-miscellaneous.mjs.map +1 -1
- package/fesm2022/taiga-ui-core.mjs +1 -1
- package/index.d.ts +1 -1
- package/package.json +71 -93
- package/pipes/format-number/format-number.pipe.d.ts +6 -4
- package/pipes/index.d.ts +0 -7
- package/portals/alert/alert.directive.d.ts +11 -0
- package/portals/alert/alert.service.d.ts +12 -0
- package/portals/alert/index.d.ts +2 -0
- package/portals/dialog/dialog.component.d.ts +14 -0
- package/portals/dialog/dialog.directive.d.ts +8 -0
- package/{components → portals}/dialog/dialog.factory.d.ts +1 -1
- package/portals/dialog/dialog.options.d.ts +25 -0
- package/{components/dialog/dialog-close.service.d.ts → portals/dialog/dialog.providers.d.ts} +2 -0
- package/portals/dialog/dialog.service.d.ts +10 -0
- package/portals/dialog/index.d.ts +6 -0
- package/portals/dropdown/dropdown-content.directive.d.ts +9 -0
- 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-options.directive.d.ts +0 -4
- 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 +2 -3
- package/{directives → portals}/dropdown/dropdown.directive.d.ts +6 -8
- package/{directives → portals}/dropdown/index.d.ts +1 -4
- package/{directives → portals}/hint/hint-describe.directive.d.ts +4 -6
- package/{directives → portals}/hint/hint-host.directive.d.ts +2 -2
- package/{directives → portals}/hint/hint-hover.directive.d.ts +3 -4
- package/{directives → portals}/hint/hint-manual.directive.d.ts +2 -2
- package/{directives → portals}/hint/hint-options.directive.d.ts +3 -3
- package/{directives → portals}/hint/hint-overflow.directive.d.ts +2 -2
- package/{directives → portals}/hint/hint-position.directive.d.ts +6 -7
- package/{directives → portals}/hint/hint-unstyled.component.d.ts +2 -7
- package/portals/hint/hint.component.d.ts +29 -0
- package/portals/hint/hint.directive.d.ts +24 -0
- package/{directives → portals}/hint/index.d.ts +0 -2
- package/portals/index.d.ts +6 -0
- package/portals/modal/index.d.ts +2 -0
- package/portals/modal/modal.component.d.ts +17 -0
- package/portals/modal/modal.service.d.ts +13 -0
- package/portals/popup/popup.directive.d.ts +12 -0
- package/{directives → portals}/popup/popup.service.d.ts +1 -1
- package/{directives → portals}/popup/popups.component.d.ts +2 -2
- package/services/index.d.ts +0 -3
- package/styles/components/appearance.less +5 -0
- package/styles/components/button.less +10 -20
- package/styles/components/icon.less +11 -0
- package/styles/components/icons.less +2 -1
- package/styles/components/label.less +3 -12
- package/styles/components/link.less +9 -24
- package/styles/components/notification.less +21 -22
- package/styles/components/textfield.less +129 -211
- package/styles/components/title.less +8 -8
- package/styles/mixins/appearance.less +10 -26
- package/styles/mixins/appearance.scss +8 -24
- package/styles/mixins/date-picker.less +1 -1
- package/styles/mixins/mixins.less +0 -5
- package/styles/mixins/mixins.scss +0 -5
- package/styles/mixins/picker.less +1 -1
- package/styles/mixins/picker.scss +1 -1
- package/styles/mixins/slider.less +25 -26
- package/styles/mixins/slider.scss +23 -22
- package/styles/taiga-ui-local.less +0 -1
- package/styles/taiga-ui-local.scss +0 -1
- package/styles/taiga-ui-theme.less +0 -1
- package/styles/theme/appearance/outline.less +9 -18
- package/styles/theme/appearance/primary.less +2 -4
- package/styles/theme/appearance/secondary.less +6 -14
- package/styles/theme/appearance/status.less +0 -4
- package/styles/theme/appearance/table.less +36 -35
- package/styles/theme/appearance/textfield.less +30 -27
- package/styles/theme/appearance.less +0 -1
- package/styles/theme/variables.less +16 -19
- package/tokens/breakpoint.d.ts +4 -0
- package/tokens/common-icons.d.ts +3 -3
- package/tokens/date-format.d.ts +2 -3
- package/tokens/i18n.d.ts +7 -7
- package/tokens/icon-resolver.d.ts +0 -4
- package/tokens/icons.d.ts +0 -4
- package/tokens/index.d.ts +1 -4
- package/tokens/number-format.d.ts +2 -3
- package/types/index.d.ts +0 -3
- 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/font-scaling.d.ts +2 -1
- package/utils/miscellaneous/get-duration.d.ts +2 -0
- package/utils/miscellaneous/index.d.ts +1 -1
- package/animations/animations.d.ts +0 -109
- package/animations/index.d.ts +0 -1
- package/components/alert/alert.component.d.ts +0 -15
- package/components/alert/alert.directive.d.ts +0 -7
- package/components/alert/alert.interfaces.d.ts +0 -12
- package/components/alert/alert.service.d.ts +0 -7
- package/components/alert/alert.tokens.d.ts +0 -12
- package/components/alert/alerts.component.d.ts +0 -12
- package/components/alert/index.d.ts +0 -6
- 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/dialog.component.d.ts +0 -20
- package/components/dialog/dialog.directive.d.ts +0 -7
- package/components/dialog/dialog.interfaces.d.ts +0 -34
- package/components/dialog/dialog.service.d.ts +0 -7
- package/components/dialog/dialog.tokens.d.ts +0 -15
- package/components/dialog/dialogs.component.d.ts +0 -8
- package/components/dialog/index.d.ts +0 -8
- package/components/expand/expand-content.directive.d.ts +0 -8
- package/components/expand/expand.d.ts +0 -6
- package/components/fullscreen/fullscreen.component.d.ts +0 -14
- package/components/fullscreen/index.d.ts +0 -1
- package/components/link/link.options.d.ts +0 -12
- package/components/textfield/select.directive.d.ts +0 -19
- package/components/textfield/textfield-dropdown.directive.d.ts +0 -16
- package/components/textfield/textfield.directive.d.ts +0 -38
- package/directives/dropdown/dropdown-open-legacy.directive.d.ts +0 -12
- package/directives/dropdown/dropdown-open.directive.d.ts +0 -33
- package/directives/dropdown/dropdown-portal.directive.d.ts +0 -14
- package/directives/dropdown/dropdown.service.d.ts +0 -6
- package/directives/dropdown/dropdowns.component.d.ts +0 -9
- package/directives/hint/hint.component.d.ts +0 -30
- package/directives/hint/hint.directive.d.ts +0 -26
- package/directives/hint/hint.service.d.ts +0 -13
- package/directives/hint/hints.component.d.ts +0 -12
- package/directives/popup/popup.directive.d.ts +0 -11
- package/directives/surface/index.d.ts +0 -1
- package/directives/surface/surface.directive.d.ts +0 -8
- package/fesm2022/taiga-ui-core-animations.mjs +0 -370
- package/fesm2022/taiga-ui-core-animations.mjs.map +0 -1
- package/fesm2022/taiga-ui-core-components-alert.mjs +0 -149
- package/fesm2022/taiga-ui-core-components-alert.mjs.map +0 -1
- package/fesm2022/taiga-ui-core-components-dialog.mjs +0 -229
- package/fesm2022/taiga-ui-core-components-dialog.mjs.map +0 -1
- package/fesm2022/taiga-ui-core-components-fullscreen.mjs +0 -77
- package/fesm2022/taiga-ui-core-components-fullscreen.mjs.map +0 -1
- package/fesm2022/taiga-ui-core-directives-dropdown.mjs.map +0 -1
- package/fesm2022/taiga-ui-core-directives-hint.mjs +0 -709
- package/fesm2022/taiga-ui-core-directives-hint.mjs.map +0 -1
- package/fesm2022/taiga-ui-core-directives-popup.mjs +0 -63
- package/fesm2022/taiga-ui-core-directives-popup.mjs.map +0 -1
- package/fesm2022/taiga-ui-core-directives-surface.mjs +0 -50
- package/fesm2022/taiga-ui-core-directives-surface.mjs.map +0 -1
- package/fesm2022/taiga-ui-core-directives-title.mjs +0 -43
- package/fesm2022/taiga-ui-core-directives-title.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 -29
- 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/breakpoint.service.d.ts +0 -16
- package/services/dark-theme.service.d.ts +0 -10
- package/services/format-date.service.d.ts +0 -8
- package/styles/mixins/wrapper.less +0 -64
- package/styles/mixins/wrapper.scss +0 -61
- package/styles/theme/appearance/opposite.less +0 -17
- package/styles/theme/wrapper.less +0 -211
- package/tokens/day-type-handler.d.ts +0 -7
- package/tokens/first-day-of-week.d.ts +0 -5
- package/tokens/scroll-ref.d.ts +0 -2
- package/tokens/spin-icons.d.ts +0 -6
- package/types/portal-item.d.ts +0 -9
- 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/{directives → components}/title/index.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.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-driver.directive.d.ts +0 -0
- /package/{directives → portals}/hint/hint-pointer.directive.d.ts +0 -0
- /package/{directives → portals}/hint/hint.d.ts +0 -0
- /package/{directives → portals}/hint/hint.providers.d.ts +0 -0
- /package/{directives → portals}/popup/index.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,
|
|
3
|
-
import { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';
|
|
2
|
+
import { Injectable, Directive, InjectionToken, Optional, Self, SkipSelf, inject, 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,35 +8,36 @@ 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 {
|
|
21
|
-
import {
|
|
20
|
+
import { TuiPopupService } from '@taiga-ui/core/portals/popup';
|
|
21
|
+
import { tuiCheckFixedPosition, tuiGetWordRange } from '@taiga-ui/core/utils/dom';
|
|
22
|
+
import { tuiProvide, tuiCreateOptions, tuiDirectiveBinding } from '@taiga-ui/cdk/utils/di';
|
|
23
|
+
import { tuiOverrideOptions, tuiIsEditingKey } from '@taiga-ui/core/utils/miscellaneous';
|
|
24
|
+
import { isPlatformBrowser, DOCUMENT } from '@angular/common';
|
|
22
25
|
import { __decorate } from 'tslib';
|
|
23
|
-
import {
|
|
24
|
-
import { TUI_IS_TOUCH, TUI_RANGE } from '@taiga-ui/cdk/tokens';
|
|
26
|
+
import { TUI_IS_TOUCH } from '@taiga-ui/cdk/tokens';
|
|
25
27
|
import { shouldCall } from '@taiga-ui/event-plugins';
|
|
26
28
|
import * as i1$1 from '@taiga-ui/cdk/directives/obscured';
|
|
27
29
|
import { TuiObscured } from '@taiga-ui/cdk/directives/obscured';
|
|
28
|
-
import {
|
|
29
|
-
import { tuiIsEditingKey, tuiOverrideOptions as tuiOverrideOptions$1 } from '@taiga-ui/core/utils/miscellaneous';
|
|
30
|
+
import { tuiIsFocusable, tuiGetClosestFocusable, tuiIsFocusedIn, tuiGetFocused } from '@taiga-ui/cdk/utils/focus';
|
|
30
31
|
|
|
31
32
|
class TuiDropdownDriver extends BehaviorSubject {
|
|
32
33
|
constructor() {
|
|
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.17", ngImport: i0, type: TuiDropdownDriver, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
38
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.17", 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.17", 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.17", ngImport: i0, type: TuiDropdownDriverDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
49
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.17", 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.17", ngImport: i0, type: TuiDropdownDriverDirective, decorators: [{
|
|
52
|
+
type: Directive
|
|
55
53
|
}] });
|
|
56
54
|
|
|
57
55
|
/**
|
|
@@ -62,18 +60,6 @@ const TUI_DROPDOWN_COMPONENT = new InjectionToken(ngDevMode ? 'TUI_DROPDOWN_COMP
|
|
|
62
60
|
});
|
|
63
61
|
const TUI_DROPDOWN_CONTEXT = new InjectionToken(ngDevMode ? 'TUI_DROPDOWN_CONTEXT' : '');
|
|
64
62
|
|
|
65
|
-
class TuiDropdownService extends TuiPortalService {
|
|
66
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiDropdownService, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
67
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiDropdownService, providedIn: 'root' }); }
|
|
68
|
-
}
|
|
69
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiDropdownService, decorators: [{
|
|
70
|
-
type: Injectable,
|
|
71
|
-
args: [{
|
|
72
|
-
providedIn: 'root',
|
|
73
|
-
}]
|
|
74
|
-
}] });
|
|
75
|
-
|
|
76
|
-
/** Default values for dropdown options */
|
|
77
63
|
const TUI_DROPDOWN_DEFAULT_OPTIONS = {
|
|
78
64
|
align: 'left',
|
|
79
65
|
direction: null,
|
|
@@ -83,9 +69,6 @@ const TUI_DROPDOWN_DEFAULT_OPTIONS = {
|
|
|
83
69
|
offset: 4,
|
|
84
70
|
appearance: '',
|
|
85
71
|
};
|
|
86
|
-
/**
|
|
87
|
-
* Default parameters for dropdown directive
|
|
88
|
-
*/
|
|
89
72
|
const TUI_DROPDOWN_OPTIONS = new InjectionToken(ngDevMode ? 'TUI_DROPDOWN_OPTIONS' : '', {
|
|
90
73
|
factory: () => TUI_DROPDOWN_DEFAULT_OPTIONS,
|
|
91
74
|
});
|
|
@@ -108,38 +91,25 @@ class TuiDropdownOptionsDirective {
|
|
|
108
91
|
this.maxHeight = this.options.maxHeight;
|
|
109
92
|
this.offset = this.options.offset;
|
|
110
93
|
}
|
|
111
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
112
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.
|
|
94
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiDropdownOptionsDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
95
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.17", 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 }); }
|
|
113
96
|
}
|
|
114
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
97
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiDropdownOptionsDirective, decorators: [{
|
|
115
98
|
type: Directive,
|
|
116
99
|
args: [{
|
|
117
|
-
standalone: true,
|
|
118
100
|
selector: '[tuiDropdownAlign], [tuiDropdownAppearance], [tuiDropdownDirection], [tuiDropdownLimitWidth], [tuiDropdownMinHeight], [tuiDropdownMaxHeight], [tuiDropdownOffset]',
|
|
101
|
+
inputs: [
|
|
102
|
+
'align: tuiDropdownAlign',
|
|
103
|
+
'appearance: tuiDropdownAppearance',
|
|
104
|
+
'direction: tuiDropdownDirection',
|
|
105
|
+
'limitWidth: tuiDropdownLimitWidth',
|
|
106
|
+
'minHeight: tuiDropdownMinHeight',
|
|
107
|
+
'maxHeight: tuiDropdownMaxHeight',
|
|
108
|
+
'offset: tuiDropdownOffset',
|
|
109
|
+
],
|
|
119
110
|
providers: [tuiProvide(TUI_DROPDOWN_OPTIONS, TuiDropdownOptionsDirective)],
|
|
120
111
|
}]
|
|
121
|
-
}]
|
|
122
|
-
type: Input,
|
|
123
|
-
args: ['tuiDropdownAlign']
|
|
124
|
-
}], appearance: [{
|
|
125
|
-
type: Input,
|
|
126
|
-
args: ['tuiDropdownAppearance']
|
|
127
|
-
}], direction: [{
|
|
128
|
-
type: Input,
|
|
129
|
-
args: ['tuiDropdownDirection']
|
|
130
|
-
}], limitWidth: [{
|
|
131
|
-
type: Input,
|
|
132
|
-
args: ['tuiDropdownLimitWidth']
|
|
133
|
-
}], minHeight: [{
|
|
134
|
-
type: Input,
|
|
135
|
-
args: ['tuiDropdownMinHeight']
|
|
136
|
-
}], maxHeight: [{
|
|
137
|
-
type: Input,
|
|
138
|
-
args: ['tuiDropdownMaxHeight']
|
|
139
|
-
}], offset: [{
|
|
140
|
-
type: Input,
|
|
141
|
-
args: ['tuiDropdownOffset']
|
|
142
|
-
}] } });
|
|
112
|
+
}] });
|
|
143
113
|
|
|
144
114
|
class TuiDropdownPosition extends TuiPositionAccessor {
|
|
145
115
|
constructor() {
|
|
@@ -147,18 +117,16 @@ class TuiDropdownPosition extends TuiPositionAccessor {
|
|
|
147
117
|
this.el = tuiInjectElement();
|
|
148
118
|
this.options = inject(TUI_DROPDOWN_OPTIONS);
|
|
149
119
|
this.viewport = inject(TUI_VIEWPORT);
|
|
150
|
-
this.
|
|
120
|
+
this.direction = new Subject();
|
|
151
121
|
this.type = 'dropdown';
|
|
152
|
-
this.accessor = tuiFallbackAccessor('dropdown')(inject(TuiRectAccessor
|
|
153
|
-
|
|
154
|
-
emitDirection(direction) {
|
|
155
|
-
this.directionChange.emit(direction);
|
|
122
|
+
this.accessor = tuiFallbackAccessor('dropdown')(inject(TuiRectAccessor, { optional: true }), { getClientRect: () => this.el.getBoundingClientRect() });
|
|
123
|
+
this.tuiDropdownDirectionChange = outputFromObservable(this.direction.pipe(distinctUntilChanged()));
|
|
156
124
|
}
|
|
157
125
|
getPosition({ width, height }) {
|
|
158
126
|
if (!width && !height) {
|
|
159
127
|
this.previous = undefined;
|
|
160
128
|
}
|
|
161
|
-
const hostRect = this.accessor
|
|
129
|
+
const hostRect = this.accessor.getClientRect();
|
|
162
130
|
const viewportRect = this.viewport.getClientRect();
|
|
163
131
|
const { minHeight, direction, offset, limitWidth } = this.options;
|
|
164
132
|
const align = this.getAlign(this.options.align);
|
|
@@ -188,12 +156,12 @@ class TuiDropdownPosition extends TuiPositionAccessor {
|
|
|
188
156
|
const better = available.top > available.bottom ? 'top' : 'bottom';
|
|
189
157
|
if ((available[previous] > minHeight && direction) ||
|
|
190
158
|
available[previous] > height) {
|
|
191
|
-
this.
|
|
192
|
-
return [position[
|
|
159
|
+
this.direction.next(previous);
|
|
160
|
+
return [position[align], position[previous]];
|
|
193
161
|
}
|
|
194
162
|
this.previous = better;
|
|
195
|
-
this.
|
|
196
|
-
return [position[
|
|
163
|
+
this.direction.next(better);
|
|
164
|
+
return [position[align], position[better]];
|
|
197
165
|
}
|
|
198
166
|
getAlign(align) {
|
|
199
167
|
const rtl = this.el.matches('[dir="rtl"] :scope');
|
|
@@ -202,28 +170,18 @@ class TuiDropdownPosition extends TuiPositionAccessor {
|
|
|
202
170
|
}
|
|
203
171
|
return rtl && align === 'right' ? 'left' : align;
|
|
204
172
|
}
|
|
205
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
206
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.
|
|
173
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiDropdownPosition, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
174
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.17", type: TuiDropdownPosition, isStandalone: true, outputs: { tuiDropdownDirectionChange: "tuiDropdownDirectionChange" }, usesInheritance: true, ngImport: i0 }); }
|
|
207
175
|
}
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
]
|
|
211
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiDropdownPosition, decorators: [{
|
|
212
|
-
type: Directive,
|
|
213
|
-
args: [{
|
|
214
|
-
standalone: true,
|
|
215
|
-
}]
|
|
216
|
-
}], propDecorators: { directionChange: [{
|
|
217
|
-
type: Output,
|
|
218
|
-
args: ['tuiDropdownDirectionChange']
|
|
219
|
-
}], emitDirection: [] } });
|
|
176
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiDropdownPosition, decorators: [{
|
|
177
|
+
type: Directive
|
|
178
|
+
}] });
|
|
220
179
|
|
|
221
180
|
class TuiDropdownDirective {
|
|
222
181
|
constructor() {
|
|
223
182
|
this.refresh$ = new Subject();
|
|
224
|
-
this.service = inject(
|
|
183
|
+
this.service = inject(TuiPopupService);
|
|
225
184
|
this.cdr = inject(ChangeDetectorRef);
|
|
226
|
-
// TODO: think of a better solution later
|
|
227
185
|
this.drivers = coerceArray(inject(TuiDropdownDriver, { self: true, optional: true }));
|
|
228
186
|
this.sub = this.refresh$
|
|
229
187
|
.pipe(throttleTime(0, tuiZonefreeScheduler()), takeUntilDestroyed())
|
|
@@ -231,33 +189,25 @@ class TuiDropdownDirective {
|
|
|
231
189
|
this.ref()?.changeDetectorRef.detectChanges();
|
|
232
190
|
this.ref()?.changeDetectorRef.markForCheck();
|
|
233
191
|
});
|
|
192
|
+
this.autoClose = effect(() => {
|
|
193
|
+
if (!this.content()) {
|
|
194
|
+
this.toggle(false);
|
|
195
|
+
}
|
|
196
|
+
});
|
|
197
|
+
this.ref = signal(null);
|
|
234
198
|
this.el = tuiInjectElement();
|
|
235
199
|
this.type = 'dropdown';
|
|
236
200
|
this.component = new PolymorpheusComponent(inject(TUI_DROPDOWN_COMPONENT), inject(INJECTOR));
|
|
237
|
-
this.
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
this._content.set(content instanceof TemplateRef
|
|
244
|
-
? new PolymorpheusTemplate(content, this.cdr)
|
|
245
|
-
: content);
|
|
246
|
-
if (!this._content()) {
|
|
247
|
-
this.toggle(false);
|
|
248
|
-
}
|
|
201
|
+
this.tuiDropdown = input();
|
|
202
|
+
this.content = computed((content = this.tuiDropdown()) => {
|
|
203
|
+
return content instanceof TemplateRef
|
|
204
|
+
? new PolymorpheusTemplate(content, this.cdr)
|
|
205
|
+
: content;
|
|
206
|
+
});
|
|
249
207
|
}
|
|
250
208
|
get position() {
|
|
251
209
|
return tuiCheckFixedPosition(this.el) ? 'fixed' : 'absolute';
|
|
252
210
|
}
|
|
253
|
-
// TODO(v5): delete
|
|
254
|
-
get content() {
|
|
255
|
-
return this._content();
|
|
256
|
-
}
|
|
257
|
-
// TODO(v5): delete
|
|
258
|
-
set content(x) {
|
|
259
|
-
this._content.set(x);
|
|
260
|
-
}
|
|
261
211
|
ngAfterViewChecked() {
|
|
262
212
|
this.refresh$.next();
|
|
263
213
|
}
|
|
@@ -269,32 +219,25 @@ class TuiDropdownDirective {
|
|
|
269
219
|
}
|
|
270
220
|
toggle(show) {
|
|
271
221
|
const ref = this.ref();
|
|
272
|
-
if (show && this.
|
|
222
|
+
if (show && this.content() && !ref) {
|
|
273
223
|
this.ref.set(this.service.add(this.component));
|
|
274
224
|
}
|
|
275
225
|
else if (!show && ref) {
|
|
276
226
|
this.ref.set(null);
|
|
277
|
-
|
|
227
|
+
ref.destroy();
|
|
278
228
|
}
|
|
279
|
-
this.drivers.forEach((driver) => driver?.next(show));
|
|
280
229
|
// TODO: Remove in v5, only needed in Angular 16
|
|
281
230
|
this.cdr.markForCheck();
|
|
231
|
+
this.drivers.forEach((driver) => driver?.next(show));
|
|
282
232
|
}
|
|
283
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
284
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "
|
|
285
|
-
tuiAsRectAccessor(TuiDropdownDirective),
|
|
286
|
-
tuiAsVehicle(TuiDropdownDirective),
|
|
287
|
-
], exportAs: ["tuiDropdown"], hostDirectives: [{ directive: TuiDropdownDriverDirective }, { directive: TuiDropdownPosition, outputs: ["tuiDropdownDirectionChange", "tuiDropdownDirectionChange"] }], ngImport: i0 }); }
|
|
233
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiDropdownDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
234
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.17", 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 }); }
|
|
288
235
|
}
|
|
289
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
236
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiDropdownDirective, decorators: [{
|
|
290
237
|
type: Directive,
|
|
291
238
|
args: [{
|
|
292
|
-
standalone: true,
|
|
293
239
|
selector: '[tuiDropdown]:not(ng-container):not(ng-template)',
|
|
294
|
-
providers: [
|
|
295
|
-
tuiAsRectAccessor(TuiDropdownDirective),
|
|
296
|
-
tuiAsVehicle(TuiDropdownDirective),
|
|
297
|
-
],
|
|
240
|
+
providers: [tuiAsVehicle(TuiDropdownDirective)],
|
|
298
241
|
exportAs: 'tuiDropdown',
|
|
299
242
|
hostDirectives: [
|
|
300
243
|
TuiDropdownDriverDirective,
|
|
@@ -307,9 +250,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
307
250
|
'[class.tui-dropdown-open]': 'ref()',
|
|
308
251
|
},
|
|
309
252
|
}]
|
|
310
|
-
}]
|
|
311
|
-
type: Input
|
|
312
|
-
}] } });
|
|
253
|
+
}] });
|
|
313
254
|
|
|
314
255
|
/**
|
|
315
256
|
* @description:
|
|
@@ -323,7 +264,7 @@ class TuiDropdownComponent {
|
|
|
323
264
|
this.viewport = inject(TUI_VIEWPORT);
|
|
324
265
|
this.vvs = inject(TuiVisualViewportService);
|
|
325
266
|
this.styles$ = inject(TuiPositionService).pipe(takeWhile(() => this.directive.el.isConnected &&
|
|
326
|
-
!!this.directive.el.getBoundingClientRect().height), map((v) => (this.position === 'fixed' ? this.vvs.correct(v) : v)), map((
|
|
267
|
+
!!this.directive.el.getBoundingClientRect().height), map((v) => (this.position === 'fixed' ? this.vvs.correct(v) : v)), map((point) => this.getStyles(...point)), takeUntilDestroyed());
|
|
327
268
|
this.options = inject(TUI_DROPDOWN_OPTIONS);
|
|
328
269
|
this.directive = inject(TuiDropdownDirective);
|
|
329
270
|
this.context = inject(TUI_DROPDOWN_CONTEXT, { optional: true });
|
|
@@ -362,25 +303,47 @@ class TuiDropdownComponent {
|
|
|
362
303
|
maxWidth: tuiPx(Math.round(viewport.width) - 16), // 8px min gap from each side
|
|
363
304
|
};
|
|
364
305
|
}
|
|
365
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
366
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.
|
|
306
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiDropdownComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
307
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.17", type: TuiDropdownComponent, isStandalone: true, selector: "tui-dropdown", host: { properties: { "attr.data-appearance": "options.appearance", "attr.tuiTheme": "theme()" } }, providers: [
|
|
367
308
|
TuiPositionService,
|
|
368
309
|
tuiPositionAccessorFor('dropdown', TuiDropdownPosition),
|
|
369
|
-
tuiRectAccessorFor('dropdown', TuiDropdownDirective),
|
|
370
|
-
], hostDirectives: [{ directive: i1.TuiActiveZone }, { directive: i2.TuiAnimated }], ngImport: i0, template: "<tui-scrollbar class=\"t-scroll\">\n <div\n *polymorpheusOutlet=\"directive.
|
|
310
|
+
tuiRectAccessorFor('dropdown', forwardRef(() => TuiDropdownDirective)),
|
|
311
|
+
], 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" }], changeDetection: i0.ChangeDetectionStrategy.Default }); }
|
|
371
312
|
}
|
|
372
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
313
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiDropdownComponent, decorators: [{
|
|
373
314
|
type: Component,
|
|
374
315
|
args: [{ selector: 'tui-dropdown', imports: [PolymorpheusOutlet, TuiScrollbar], changeDetection: ChangeDetectionStrategy.Default, providers: [
|
|
375
316
|
TuiPositionService,
|
|
376
317
|
tuiPositionAccessorFor('dropdown', TuiDropdownPosition),
|
|
377
|
-
tuiRectAccessorFor('dropdown', TuiDropdownDirective),
|
|
318
|
+
tuiRectAccessorFor('dropdown', forwardRef(() => TuiDropdownDirective)),
|
|
378
319
|
], hostDirectives: [TuiActiveZone, TuiAnimated], host: {
|
|
379
320
|
'[attr.data-appearance]': 'options.appearance',
|
|
380
321
|
'[attr.tuiTheme]': 'theme()',
|
|
381
|
-
}, template: "<tui-scrollbar class=\"t-scroll\">\n <div\n *polymorpheusOutlet=\"directive.
|
|
322
|
+
}, 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"] }]
|
|
382
323
|
}] });
|
|
383
324
|
|
|
325
|
+
class TuiDropdownContent {
|
|
326
|
+
constructor() {
|
|
327
|
+
this.directive = inject(TuiDropdownDirective);
|
|
328
|
+
tuiSetSignal(this.directive.tuiDropdown, inject(TemplateRef));
|
|
329
|
+
if (isPlatformBrowser(inject(PLATFORM_ID)) &&
|
|
330
|
+
this.directive.el.matches(':focus-within')) {
|
|
331
|
+
this.directive.toggle(true);
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
ngOnDestroy() {
|
|
335
|
+
tuiSetSignal(this.directive.tuiDropdown, null);
|
|
336
|
+
}
|
|
337
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiDropdownContent, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
338
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.17", type: TuiDropdownContent, isStandalone: true, selector: "ng-template[tuiDropdown]", ngImport: i0 }); }
|
|
339
|
+
}
|
|
340
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiDropdownContent, decorators: [{
|
|
341
|
+
type: Directive,
|
|
342
|
+
args: [{
|
|
343
|
+
selector: 'ng-template[tuiDropdown]',
|
|
344
|
+
}]
|
|
345
|
+
}], ctorParameters: () => [] });
|
|
346
|
+
|
|
384
347
|
function activeZoneFilter(event) {
|
|
385
348
|
return (!event ||
|
|
386
349
|
(this.driver.value && !this.activeZone.contains(tuiGetActualTarget(event))));
|
|
@@ -410,8 +373,8 @@ class TuiDropdownContext extends TuiRectAccessor {
|
|
|
410
373
|
this.currentRect = tuiPointToClientRect(x, y);
|
|
411
374
|
this.driver.next(true);
|
|
412
375
|
}
|
|
413
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
414
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.
|
|
376
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiDropdownContext, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
377
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.17", 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: [
|
|
415
378
|
TuiActiveZone,
|
|
416
379
|
TuiDropdownDriver,
|
|
417
380
|
tuiAsDriver(TuiDropdownDriver),
|
|
@@ -421,10 +384,9 @@ class TuiDropdownContext extends TuiRectAccessor {
|
|
|
421
384
|
__decorate([
|
|
422
385
|
shouldCall(activeZoneFilter)
|
|
423
386
|
], TuiDropdownContext.prototype, "closeDropdown", null);
|
|
424
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
387
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiDropdownContext, decorators: [{
|
|
425
388
|
type: Directive,
|
|
426
389
|
args: [{
|
|
427
|
-
standalone: true,
|
|
428
390
|
selector: '[tuiDropdownContext]',
|
|
429
391
|
providers: [
|
|
430
392
|
TuiActiveZone,
|
|
@@ -450,48 +412,40 @@ const TUI_DROPDOWN_HOVER_DEFAULT_OPTIONS = {
|
|
|
450
412
|
/**
|
|
451
413
|
* Default parameters for dropdown hover directive
|
|
452
414
|
*/
|
|
453
|
-
const TUI_DROPDOWN_HOVER_OPTIONS =
|
|
454
|
-
factory: () => TUI_DROPDOWN_HOVER_DEFAULT_OPTIONS,
|
|
455
|
-
});
|
|
456
|
-
function tuiDropdownHoverOptionsProvider(options) {
|
|
457
|
-
return tuiProvideOptions(TUI_DROPDOWN_HOVER_OPTIONS, options, TUI_DROPDOWN_HOVER_DEFAULT_OPTIONS);
|
|
458
|
-
}
|
|
415
|
+
const [TUI_DROPDOWN_HOVER_OPTIONS, tuiDropdownHoverOptionsProvider] = tuiCreateOptions(TUI_DROPDOWN_HOVER_DEFAULT_OPTIONS);
|
|
459
416
|
|
|
460
417
|
function shouldClose(event) {
|
|
461
418
|
return (
|
|
462
419
|
// @ts-ignore
|
|
463
420
|
typeof CloseWatcher === 'undefined' &&
|
|
464
|
-
// ?. for
|
|
421
|
+
// ?. for autofill events
|
|
465
422
|
event.key?.toLowerCase() === 'escape' &&
|
|
466
|
-
this.
|
|
467
|
-
|
|
423
|
+
this.enabled() &&
|
|
424
|
+
this.open() &&
|
|
468
425
|
!this['dropdown']()?.nextElementSibling);
|
|
469
426
|
}
|
|
470
427
|
class TuiDropdownOpen {
|
|
471
428
|
constructor() {
|
|
429
|
+
this.dropdownHost = contentChild('tuiDropdownHost', {
|
|
430
|
+
descendants: true,
|
|
431
|
+
read: ElementRef,
|
|
432
|
+
});
|
|
472
433
|
this.directive = inject(TuiDropdownDirective);
|
|
473
434
|
this.el = tuiInjectElement();
|
|
474
435
|
this.obscured = inject(TuiObscured);
|
|
475
436
|
this.activeZone = inject(TuiActiveZone);
|
|
476
|
-
this.dropdown = computed(() => this.directive.ref()?.location.nativeElement);
|
|
477
|
-
this.tuiDropdownEnabled = true;
|
|
478
|
-
this.tuiDropdownOpen = false;
|
|
479
|
-
this.tuiDropdownOpenChange = new EventEmitter();
|
|
480
|
-
// TODO: make it private when all legacy controls will be deleted from @taiga-ui/legacy (5.0)
|
|
481
437
|
this.driver = inject(TuiDropdownDriver);
|
|
482
|
-
this.
|
|
483
|
-
|
|
438
|
+
this.dropdown = computed(() => this.directive.ref()?.location.nativeElement);
|
|
439
|
+
this.enabled = input(true, { alias: 'tuiDropdownEnabled' });
|
|
440
|
+
this.open = model(false, { alias: 'tuiDropdownOpen' });
|
|
441
|
+
this.driveEffect = effect(() => this.drive(this.open()));
|
|
442
|
+
this.syncSub = this.driver
|
|
443
|
+
.pipe(filter((open) => open !== this.open()), takeUntilDestroyed())
|
|
444
|
+
.subscribe((open) => this.update(open));
|
|
445
|
+
this.closeSub = this.driver
|
|
446
|
+
.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)) ||
|
|
484
447
|
!this.directive.ref())))), tuiZonefull(), tuiWatch(), takeUntilDestroyed())
|
|
485
448
|
.subscribe(() => this.toggle(false));
|
|
486
|
-
this.sync = this.driver.pipe(takeUntilDestroyed()).subscribe((open) => {
|
|
487
|
-
if (open !== this.tuiDropdownOpen) {
|
|
488
|
-
this.update(open);
|
|
489
|
-
}
|
|
490
|
-
});
|
|
491
|
-
}
|
|
492
|
-
ngOnChanges() {
|
|
493
|
-
this.drive(!!this.tuiDropdownOpen);
|
|
494
|
-
this.tuiDropdownOpenChange.emit(!!this.tuiDropdownOpen);
|
|
495
449
|
}
|
|
496
450
|
toggle(open) {
|
|
497
451
|
if (this.focused && !open) {
|
|
@@ -505,14 +459,14 @@ class TuiDropdownOpen {
|
|
|
505
459
|
}
|
|
506
460
|
onClick(target) {
|
|
507
461
|
if (!this.editable && this.host.contains(target)) {
|
|
508
|
-
this.update(!this.
|
|
462
|
+
this.update(!this.open());
|
|
509
463
|
}
|
|
510
464
|
}
|
|
511
465
|
onArrow(event, up) {
|
|
512
466
|
if (!tuiIsElement(event.target) ||
|
|
513
467
|
!this.host.contains(event.target) ||
|
|
514
|
-
!this.
|
|
515
|
-
!this.directive.
|
|
468
|
+
!this.enabled() ||
|
|
469
|
+
!this.directive.content()) {
|
|
516
470
|
return;
|
|
517
471
|
}
|
|
518
472
|
event.preventDefault();
|
|
@@ -530,11 +484,11 @@ class TuiDropdownOpen {
|
|
|
530
484
|
}
|
|
531
485
|
}
|
|
532
486
|
get host() {
|
|
533
|
-
const initial = this.dropdownHost?.nativeElement || this.el;
|
|
534
|
-
const focusable =
|
|
487
|
+
const initial = this.dropdownHost()?.nativeElement || this.el;
|
|
488
|
+
const focusable = tuiIsFocusable(initial)
|
|
535
489
|
? initial
|
|
536
490
|
: tuiGetClosestFocusable({ initial, root: this.el });
|
|
537
|
-
return this.dropdownHost?.nativeElement || focusable || this.el;
|
|
491
|
+
return this.dropdownHost()?.nativeElement || focusable || this.el;
|
|
538
492
|
}
|
|
539
493
|
get editable() {
|
|
540
494
|
return tuiIsElementEditable(this.host);
|
|
@@ -543,15 +497,14 @@ class TuiDropdownOpen {
|
|
|
543
497
|
return tuiIsFocusedIn(this.host) || tuiIsFocusedIn(this.dropdown());
|
|
544
498
|
}
|
|
545
499
|
update(open) {
|
|
546
|
-
if (open && !this.
|
|
500
|
+
if (open && !this.enabled()) {
|
|
547
501
|
return this.drive();
|
|
548
502
|
}
|
|
549
|
-
this.
|
|
550
|
-
this.tuiDropdownOpenChange.emit(open);
|
|
503
|
+
this.open.set(open);
|
|
551
504
|
this.drive();
|
|
552
505
|
}
|
|
553
|
-
drive(open =
|
|
554
|
-
this.obscured.tuiObscuredEnabled
|
|
506
|
+
drive(open = this.open() && this.enabled()) {
|
|
507
|
+
tuiSetSignal(this.obscured.tuiObscuredEnabled, open);
|
|
555
508
|
this.driver.next(open);
|
|
556
509
|
}
|
|
557
510
|
focusDropdown(previous) {
|
|
@@ -567,17 +520,16 @@ class TuiDropdownOpen {
|
|
|
567
520
|
child.remove();
|
|
568
521
|
focusable?.focus();
|
|
569
522
|
}
|
|
570
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
571
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "
|
|
523
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiDropdownOpen, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
524
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "19.2.17", 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 }); }
|
|
572
525
|
}
|
|
573
526
|
__decorate([
|
|
574
527
|
shouldCall(shouldClose)
|
|
575
528
|
], TuiDropdownOpen.prototype, "onEsc", null);
|
|
576
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
529
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiDropdownOpen, decorators: [{
|
|
577
530
|
type: Directive,
|
|
578
531
|
args: [{
|
|
579
|
-
|
|
580
|
-
selector: '[tuiDropdown][tuiDropdownOpen],[tuiDropdown][tuiDropdownOpenChange]',
|
|
532
|
+
selector: '[tuiDropdown][tuiDropdownAuto],[tuiDropdown][tuiDropdownOpen],[tuiDropdown][tuiDropdownOpenChange]',
|
|
581
533
|
providers: [TuiDropdownDriver, tuiAsDriver(TuiDropdownDriver)],
|
|
582
534
|
hostDirectives: [
|
|
583
535
|
TuiObscured,
|
|
@@ -597,37 +549,32 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
597
549
|
'(tuiActiveZoneChange)': '0',
|
|
598
550
|
},
|
|
599
551
|
}]
|
|
600
|
-
}], propDecorators: {
|
|
601
|
-
type: ContentChild,
|
|
602
|
-
args: ['tuiDropdownHost', { descendants: true, read: ElementRef }]
|
|
603
|
-
}], tuiDropdownEnabled: [{
|
|
604
|
-
type: Input
|
|
605
|
-
}], tuiDropdownOpen: [{
|
|
606
|
-
type: Input
|
|
607
|
-
}], tuiDropdownOpenChange: [{
|
|
608
|
-
type: Output
|
|
609
|
-
}], onEsc: [] } });
|
|
552
|
+
}], propDecorators: { onEsc: [] } });
|
|
610
553
|
|
|
611
554
|
class TuiDropdownHover extends TuiDriver {
|
|
612
555
|
constructor() {
|
|
613
556
|
super((subscriber) => this.stream$.subscribe(subscriber));
|
|
557
|
+
this.dropdownHost = contentChild('tuiDropdownHost', {
|
|
558
|
+
descendants: true,
|
|
559
|
+
read: ElementRef,
|
|
560
|
+
});
|
|
561
|
+
this.hovered = false;
|
|
614
562
|
this.el = tuiInjectElement();
|
|
615
563
|
this.doc = inject(DOCUMENT);
|
|
616
564
|
this.options = inject(TUI_DROPDOWN_HOVER_OPTIONS);
|
|
617
565
|
this.activeZone = inject(TuiActiveZone);
|
|
618
566
|
this.open = inject(TuiDropdownOpen, { optional: true });
|
|
567
|
+
this.stream$ = merge(
|
|
619
568
|
/**
|
|
620
569
|
* Dropdown can be removed not only via click/touch –
|
|
621
570
|
* swipe on mobile devices removes dropdown sheet without triggering new mouseover / mouseout events.
|
|
622
571
|
*/
|
|
623
|
-
|
|
624
|
-
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) => {
|
|
572
|
+
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) => {
|
|
625
573
|
this.hovered = hovered;
|
|
626
574
|
this.open?.toggle(hovered);
|
|
627
575
|
}), share());
|
|
628
|
-
this.
|
|
629
|
-
this.
|
|
630
|
-
this.hovered = false;
|
|
576
|
+
this.tuiDropdownShowDelay = input(this.options.showDelay);
|
|
577
|
+
this.tuiDropdownHideDelay = input(this.options.hideDelay);
|
|
631
578
|
this.type = 'dropdown';
|
|
632
579
|
}
|
|
633
580
|
onClick(event) {
|
|
@@ -636,115 +583,43 @@ class TuiDropdownHover extends TuiDriver {
|
|
|
636
583
|
}
|
|
637
584
|
}
|
|
638
585
|
isHovered(element) {
|
|
639
|
-
const host = this.dropdownHost?.nativeElement || this.el;
|
|
586
|
+
const host = this.dropdownHost()?.nativeElement || this.el;
|
|
640
587
|
const hovered = host.contains(element);
|
|
641
588
|
const child = !this.el.contains(element) && this.activeZone.contains(element);
|
|
642
589
|
return hovered || child;
|
|
643
590
|
}
|
|
644
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
645
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "
|
|
591
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiDropdownHover, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
592
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "19.2.17", 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 }); }
|
|
646
593
|
}
|
|
647
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
594
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiDropdownHover, decorators: [{
|
|
648
595
|
type: Directive,
|
|
649
596
|
args: [{
|
|
650
|
-
standalone: true,
|
|
651
597
|
selector: '[tuiDropdownHover]',
|
|
652
598
|
providers: [TuiActiveZone, tuiAsDriver(TuiDropdownHover)],
|
|
653
599
|
host: {
|
|
654
600
|
'(click.capture)': 'onClick($event)',
|
|
655
601
|
},
|
|
656
602
|
}]
|
|
657
|
-
}], ctorParameters: () => []
|
|
658
|
-
type: ContentChild,
|
|
659
|
-
args: ['tuiDropdownHost', { descendants: true, read: ElementRef }]
|
|
660
|
-
}], showDelay: [{
|
|
661
|
-
type: Input,
|
|
662
|
-
args: ['tuiDropdownShowDelay']
|
|
663
|
-
}], hideDelay: [{
|
|
664
|
-
type: Input,
|
|
665
|
-
args: ['tuiDropdownHideDelay']
|
|
666
|
-
}] } });
|
|
603
|
+
}], ctorParameters: () => [] });
|
|
667
604
|
|
|
668
605
|
class TuiDropdownManual {
|
|
669
606
|
constructor() {
|
|
670
607
|
this.driver = inject(TuiDropdownDriver);
|
|
671
|
-
this.tuiDropdownManual = false;
|
|
608
|
+
this.tuiDropdownManual = input(false);
|
|
672
609
|
}
|
|
673
610
|
ngOnChanges() {
|
|
674
|
-
this.driver.next(!!this.tuiDropdownManual);
|
|
611
|
+
this.driver.next(!!this.tuiDropdownManual());
|
|
675
612
|
}
|
|
676
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
677
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "
|
|
613
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiDropdownManual, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
614
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.17", 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 }); }
|
|
678
615
|
}
|
|
679
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
616
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiDropdownManual, decorators: [{
|
|
680
617
|
type: Directive,
|
|
681
618
|
args: [{
|
|
682
|
-
standalone: true,
|
|
683
619
|
selector: '[tuiDropdownManual]',
|
|
684
620
|
providers: [TuiDropdownDriver, tuiAsDriver(TuiDropdownDriver)],
|
|
685
621
|
}]
|
|
686
|
-
}]
|
|
687
|
-
type: Input
|
|
688
|
-
}] } });
|
|
689
|
-
|
|
690
|
-
/**
|
|
691
|
-
* @deprecated TODO: remove in v.5 when legacy controls are dropped
|
|
692
|
-
*/
|
|
693
|
-
class TuiDropdownOpenLegacy {
|
|
694
|
-
constructor() {
|
|
695
|
-
this.openStateSub = new Subject();
|
|
696
|
-
this.tuiDropdownOpenChange = this.openStateSub.pipe(distinctUntilChanged());
|
|
697
|
-
}
|
|
698
|
-
set tuiDropdownOpen(open) {
|
|
699
|
-
this.emitOpenChange(open);
|
|
700
|
-
}
|
|
701
|
-
emitOpenChange(open) {
|
|
702
|
-
this.openStateSub.next(open);
|
|
703
|
-
}
|
|
704
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiDropdownOpenLegacy, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
705
|
-
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 }); }
|
|
706
|
-
}
|
|
707
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiDropdownOpenLegacy, decorators: [{
|
|
708
|
-
type: Directive,
|
|
709
|
-
args: [{
|
|
710
|
-
standalone: true,
|
|
711
|
-
selector: '[tuiDropdownOpen]:not([tuiDropdown]),[tuiDropdownOpenChange]:not([tuiDropdown])',
|
|
712
|
-
}]
|
|
713
|
-
}], propDecorators: { tuiDropdownOpenChange: [{
|
|
714
|
-
type: Output
|
|
715
|
-
}], tuiDropdownOpen: [{
|
|
716
|
-
type: Input
|
|
717
|
-
}] } });
|
|
718
|
-
|
|
719
|
-
/**
|
|
720
|
-
* @deprecated use {@link TuiPopup} directive instead
|
|
721
|
-
*/
|
|
722
|
-
class TuiDropdownPortal {
|
|
723
|
-
constructor() {
|
|
724
|
-
this.template = inject(TemplateRef);
|
|
725
|
-
this.service = inject(TuiDropdownService);
|
|
726
|
-
}
|
|
727
|
-
set tuiDropdown(show) {
|
|
728
|
-
this.viewRef?.destroy();
|
|
729
|
-
if (show) {
|
|
730
|
-
this.viewRef = this.service.addTemplate(this.template);
|
|
731
|
-
}
|
|
732
|
-
}
|
|
733
|
-
ngOnDestroy() {
|
|
734
|
-
this.viewRef?.destroy();
|
|
735
|
-
}
|
|
736
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiDropdownPortal, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
737
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.15", type: TuiDropdownPortal, isStandalone: true, selector: "ng-template[tuiDropdown]", inputs: { tuiDropdown: "tuiDropdown" }, ngImport: i0 }); }
|
|
738
|
-
}
|
|
739
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiDropdownPortal, decorators: [{
|
|
740
|
-
type: Directive,
|
|
741
|
-
args: [{
|
|
742
|
-
standalone: true,
|
|
743
|
-
selector: 'ng-template[tuiDropdown]',
|
|
744
|
-
}]
|
|
745
|
-
}], propDecorators: { tuiDropdown: [{
|
|
746
|
-
type: Input
|
|
747
|
-
}] } });
|
|
622
|
+
}] });
|
|
748
623
|
|
|
749
624
|
class TuiDropdownPositionSided extends TuiPositionAccessor {
|
|
750
625
|
constructor() {
|
|
@@ -753,12 +628,12 @@ class TuiDropdownPositionSided extends TuiPositionAccessor {
|
|
|
753
628
|
this.viewport = inject(TUI_VIEWPORT);
|
|
754
629
|
this.vertical = inject(TuiDropdownPosition);
|
|
755
630
|
this.previous = this.options.direction || 'bottom';
|
|
756
|
-
this.tuiDropdownSided = '';
|
|
757
|
-
this.tuiDropdownSidedOffset = 4;
|
|
631
|
+
this.tuiDropdownSided = input('');
|
|
632
|
+
this.tuiDropdownSidedOffset = input(4);
|
|
758
633
|
this.type = 'dropdown';
|
|
759
634
|
}
|
|
760
635
|
getPosition(rect) {
|
|
761
|
-
if (this.tuiDropdownSided === false) {
|
|
636
|
+
if (this.tuiDropdownSided() === false) {
|
|
762
637
|
return this.vertical.getPosition(rect);
|
|
763
638
|
}
|
|
764
639
|
const { height, width } = rect;
|
|
@@ -774,38 +649,33 @@ class TuiDropdownPositionSided extends TuiPositionAccessor {
|
|
|
774
649
|
bottom: viewport.bottom - hostRect.top,
|
|
775
650
|
};
|
|
776
651
|
const position = {
|
|
777
|
-
top: hostRect.bottom - height + this.tuiDropdownSidedOffset + 1, // 1 for border
|
|
652
|
+
top: hostRect.bottom - height + this.tuiDropdownSidedOffset() + 1, // 1 for border
|
|
778
653
|
left: hostRect.left - width - offset,
|
|
779
654
|
right: hostRect.right + offset,
|
|
780
|
-
bottom: hostRect.top - this.tuiDropdownSidedOffset - 1, // 1 for border
|
|
655
|
+
bottom: hostRect.top - this.tuiDropdownSidedOffset() - 1, // 1 for border
|
|
781
656
|
};
|
|
782
657
|
const better = available.top > available.bottom ? 'top' : 'bottom';
|
|
783
658
|
const maxLeft = available.left > available.right ? position.left : position.right;
|
|
784
659
|
const left = available[align] > width ? position[align] : maxLeft;
|
|
785
660
|
if ((available[this.previous] > height && direction) ||
|
|
786
661
|
this.previous === better) {
|
|
787
|
-
this.vertical.
|
|
788
|
-
return [position[this.previous]
|
|
662
|
+
this.vertical.direction.next(this.previous);
|
|
663
|
+
return [left, position[this.previous]];
|
|
789
664
|
}
|
|
790
665
|
this.previous = better;
|
|
791
|
-
this.vertical.
|
|
792
|
-
return [position[better]
|
|
666
|
+
this.vertical.direction.next(better);
|
|
667
|
+
return [left, position[better]];
|
|
793
668
|
}
|
|
794
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
795
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "
|
|
669
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiDropdownPositionSided, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
670
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.17", 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 }); }
|
|
796
671
|
}
|
|
797
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
672
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiDropdownPositionSided, decorators: [{
|
|
798
673
|
type: Directive,
|
|
799
674
|
args: [{
|
|
800
|
-
standalone: true,
|
|
801
675
|
selector: '[tuiDropdownSided]',
|
|
802
676
|
providers: [TuiDropdownPosition, tuiAsPositionAccessor(TuiDropdownPositionSided)],
|
|
803
677
|
}]
|
|
804
|
-
}]
|
|
805
|
-
type: Input
|
|
806
|
-
}], tuiDropdownSidedOffset: [{
|
|
807
|
-
type: Input
|
|
808
|
-
}] } });
|
|
678
|
+
}] });
|
|
809
679
|
|
|
810
680
|
class TuiDropdownSelection extends TuiDriver {
|
|
811
681
|
constructor() {
|
|
@@ -814,9 +684,9 @@ class TuiDropdownSelection extends TuiDriver {
|
|
|
814
684
|
this.vcr = inject(ViewContainerRef);
|
|
815
685
|
this.dropdown = inject(TuiDropdownDirective);
|
|
816
686
|
this.el = tuiInjectElement();
|
|
817
|
-
this.handler
|
|
687
|
+
this.handler = computed((visible = this.tuiDropdownSelection()) => tuiIsString(visible) ? TUI_TRUE_HANDLER : visible);
|
|
818
688
|
this.stream$ = combineLatest([
|
|
819
|
-
this.handler
|
|
689
|
+
toObservable(this.handler),
|
|
820
690
|
inject(TUI_SELECTION_STREAM).pipe(map(() => this.getRange()), filter((range) => this.isValid(range)), distinctUntilChanged((x, y) => x.startOffset === y.startOffset &&
|
|
821
691
|
x.endOffset === y.endOffset &&
|
|
822
692
|
x.commonAncestorContainer === y.commonAncestorContainer)),
|
|
@@ -828,17 +698,15 @@ class TuiDropdownSelection extends TuiDriver {
|
|
|
828
698
|
: this.range;
|
|
829
699
|
return (contained && handler(this.range)) || this.inDropdown(range);
|
|
830
700
|
}));
|
|
831
|
-
this.range = inject(
|
|
832
|
-
|
|
701
|
+
this.range = isPlatformBrowser(inject(PLATFORM_ID))
|
|
702
|
+
? new Range()
|
|
703
|
+
: {};
|
|
833
704
|
this.type = 'dropdown';
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
if (!tuiIsString(visible)) {
|
|
837
|
-
this.handler$.next(visible);
|
|
838
|
-
}
|
|
705
|
+
this.tuiDropdownSelection = input('');
|
|
706
|
+
this.tuiDropdownSelectionPosition = input('selection');
|
|
839
707
|
}
|
|
840
708
|
getClientRect() {
|
|
841
|
-
switch (this.
|
|
709
|
+
switch (this.tuiDropdownSelectionPosition()) {
|
|
842
710
|
case 'tag': {
|
|
843
711
|
const { commonAncestorContainer } = this.range;
|
|
844
712
|
const element = tuiIsElement(commonAncestorContainer)
|
|
@@ -929,28 +797,22 @@ class TuiDropdownSelection extends TuiDriver {
|
|
|
929
797
|
this.ghost = ghost;
|
|
930
798
|
return ghost;
|
|
931
799
|
}
|
|
932
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
933
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "
|
|
800
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiDropdownSelection, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
801
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.17", 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: [
|
|
934
802
|
tuiAsDriver(TuiDropdownSelection),
|
|
935
803
|
tuiAsRectAccessor(TuiDropdownSelection),
|
|
936
804
|
], usesInheritance: true, ngImport: i0 }); }
|
|
937
805
|
}
|
|
938
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
806
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiDropdownSelection, decorators: [{
|
|
939
807
|
type: Directive,
|
|
940
808
|
args: [{
|
|
941
|
-
standalone: true,
|
|
942
809
|
selector: '[tuiDropdownSelection]',
|
|
943
810
|
providers: [
|
|
944
811
|
tuiAsDriver(TuiDropdownSelection),
|
|
945
812
|
tuiAsRectAccessor(TuiDropdownSelection),
|
|
946
813
|
],
|
|
947
814
|
}]
|
|
948
|
-
}], ctorParameters: () => []
|
|
949
|
-
type: Input,
|
|
950
|
-
args: ['tuiDropdownSelectionPosition']
|
|
951
|
-
}], tuiDropdownSelection: [{
|
|
952
|
-
type: Input
|
|
953
|
-
}] } });
|
|
815
|
+
}], ctorParameters: () => [] });
|
|
954
816
|
|
|
955
817
|
const TuiDropdown = [
|
|
956
818
|
TuiDropdownOptionsDirective,
|
|
@@ -958,10 +820,9 @@ const TuiDropdown = [
|
|
|
958
820
|
TuiDropdownDirective,
|
|
959
821
|
TuiDropdownComponent,
|
|
960
822
|
TuiDropdownOpen,
|
|
961
|
-
TuiDropdownOpenLegacy,
|
|
962
|
-
TuiDropdownPortal,
|
|
963
823
|
TuiDropdownManual,
|
|
964
824
|
TuiDropdownHover,
|
|
825
|
+
TuiDropdownContent,
|
|
965
826
|
TuiDropdownContext,
|
|
966
827
|
TuiDropdownPosition,
|
|
967
828
|
TuiDropdownPositionSided,
|
|
@@ -972,28 +833,20 @@ function tuiDropdown(value) {
|
|
|
972
833
|
return tuiDirectiveBinding(TuiDropdownDirective, 'tuiDropdown', value, {});
|
|
973
834
|
}
|
|
974
835
|
function tuiDropdownEnabled(value) {
|
|
975
|
-
return tuiDirectiveBinding(TuiDropdownOpen, '
|
|
976
|
-
}
|
|
977
|
-
function tuiDropdownOpen() {
|
|
978
|
-
const open = tuiDirectiveBinding(TuiDropdownOpen, 'tuiDropdownOpen', false, {});
|
|
979
|
-
inject(TuiDropdownOpen)
|
|
980
|
-
.tuiDropdownOpenChange.pipe(takeUntilDestroyed())
|
|
981
|
-
.subscribe((value) => open.set(value));
|
|
982
|
-
return open;
|
|
836
|
+
return tuiDirectiveBinding(TuiDropdownOpen, 'enabled', value, {});
|
|
983
837
|
}
|
|
984
838
|
|
|
985
839
|
class TuiDropdownFixed {
|
|
986
840
|
constructor() {
|
|
987
|
-
const override = tuiOverrideOptions
|
|
841
|
+
const override = tuiOverrideOptions({ limitWidth: 'fixed' }, TUI_DROPDOWN_DEFAULT_OPTIONS);
|
|
988
842
|
override(inject(TUI_DROPDOWN_OPTIONS, { self: true, optional: true }), null);
|
|
989
843
|
}
|
|
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.
|
|
844
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiDropdownFixed, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
845
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.17", type: TuiDropdownFixed, isStandalone: true, providers: [tuiDropdownOptionsProvider({})], ngImport: i0 }); }
|
|
992
846
|
}
|
|
993
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
847
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiDropdownFixed, decorators: [{
|
|
994
848
|
type: Directive,
|
|
995
849
|
args: [{
|
|
996
|
-
standalone: true,
|
|
997
850
|
providers: [tuiDropdownOptionsProvider({})],
|
|
998
851
|
}]
|
|
999
852
|
}], ctorParameters: () => [] });
|
|
@@ -1005,41 +858,20 @@ class TuiDropdownAuto {
|
|
|
1005
858
|
*/
|
|
1006
859
|
inject(TUI_DROPDOWN_OPTIONS).limitWidth = 'auto';
|
|
1007
860
|
}
|
|
1008
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
1009
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.
|
|
861
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiDropdownAuto, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
862
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.17", type: TuiDropdownAuto, isStandalone: true, ngImport: i0 }); }
|
|
1010
863
|
}
|
|
1011
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
1012
|
-
type: Directive
|
|
1013
|
-
args: [{ standalone: true }]
|
|
864
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiDropdownAuto, decorators: [{
|
|
865
|
+
type: Directive
|
|
1014
866
|
}], ctorParameters: () => [] });
|
|
1015
867
|
|
|
1016
|
-
/**
|
|
1017
|
-
* Host element for dynamically created portals, for example using {@link TuiDropdownDirective}.
|
|
1018
|
-
*/
|
|
1019
|
-
class TuiDropdowns extends TuiPortals {
|
|
1020
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiDropdowns, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
1021
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: TuiDropdowns, isStandalone: true, selector: "tui-dropdowns", host: { styleAttribute: "position: absolute; width: 100%; top: 0" }, providers: [tuiAsPortal(TuiDropdownService)], usesInheritance: true, ngImport: i0, template: '<ng-container #viewContainer />', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
1022
|
-
}
|
|
1023
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiDropdowns, decorators: [{
|
|
1024
|
-
type: Component,
|
|
1025
|
-
args: [{
|
|
1026
|
-
standalone: true,
|
|
1027
|
-
selector: 'tui-dropdowns',
|
|
1028
|
-
template: '<ng-container #viewContainer />',
|
|
1029
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
1030
|
-
providers: [tuiAsPortal(TuiDropdownService)],
|
|
1031
|
-
host: { style: 'position: absolute; width: 100%; top: 0' },
|
|
1032
|
-
}]
|
|
1033
|
-
}] });
|
|
1034
|
-
|
|
1035
868
|
class TuiWithDropdownOpen {
|
|
1036
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
1037
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.
|
|
869
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiWithDropdownOpen, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
870
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.17", type: TuiWithDropdownOpen, isStandalone: true, hostDirectives: [{ directive: TuiDropdownOpen, inputs: ["tuiDropdownOpen", "open", "tuiDropdownEnabled", "tuiDropdownEnabled"], outputs: ["tuiDropdownOpenChange", "openChange"] }], ngImport: i0 }); }
|
|
1038
871
|
}
|
|
1039
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
872
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiWithDropdownOpen, decorators: [{
|
|
1040
873
|
type: Directive,
|
|
1041
874
|
args: [{
|
|
1042
|
-
standalone: true,
|
|
1043
875
|
hostDirectives: [
|
|
1044
876
|
{
|
|
1045
877
|
directive: TuiDropdownOpen,
|
|
@@ -1054,5 +886,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
1054
886
|
* Generated bundle index. Do not edit.
|
|
1055
887
|
*/
|
|
1056
888
|
|
|
1057
|
-
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, TuiDropdownContext, TuiDropdownDirective, TuiDropdownDriver, TuiDropdownDriverDirective, TuiDropdownFixed, TuiDropdownHover, TuiDropdownManual, TuiDropdownOpen,
|
|
1058
|
-
//# sourceMappingURL=taiga-ui-core-
|
|
889
|
+
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 };
|
|
890
|
+
//# sourceMappingURL=taiga-ui-core-portals-dropdown.mjs.map
|