@taiga-ui/core 4.52.0-canary.932d3ef → 4.52.0-canary.9471234
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 +6 -8
- package/components/error/error.d.ts +4 -0
- package/components/error/error.directive.d.ts +19 -0
- package/components/error/error.pipe.d.ts +10 -0
- package/components/error/index.d.ts +3 -0
- 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 +4 -6
- 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/select-like.directive.d.ts +1 -0
- package/components/textfield/textfield-icon.d.ts +3 -3
- 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 -35
- 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 +2 -3
- package/directives/button-x/button-x.directive.d.ts +6 -0
- package/directives/button-x/index.d.ts +1 -0
- 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/icons/icons.bindings.d.ts +5 -0
- package/directives/icons/index.d.ts +1 -0
- package/directives/index.d.ts +1 -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 +141 -41
- 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 +113 -282
- package/fesm2022/taiga-ui-core-components-data-list.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-error.mjs +109 -24
- 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 +100 -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 +19 -38
- 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 +22 -55
- package/fesm2022/taiga-ui-core-components-root.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-scrollbar.mjs +71 -85
- 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 +160 -458
- 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-button-x.mjs +51 -0
- package/fesm2022/taiga-ui-core-directives-button-x.mjs.map +1 -0
- 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 +21 -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 +1 -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 +159 -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} +245 -410
- package/fesm2022/taiga-ui-core-portals-dropdown.mjs.map +1 -0
- package/fesm2022/taiga-ui-core-portals-hint.mjs +552 -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 +16 -80
- package/fesm2022/taiga-ui-core-services.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-tokens.mjs +56 -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 +65 -19
- 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 +51 -68
- 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-close.directive.d.ts +15 -0
- package/portals/dropdown/dropdown-content.directive.d.ts +9 -0
- package/{directives → portals}/dropdown/dropdown-context.directive.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 +29 -0
- package/{directives → portals}/dropdown/dropdown-options.directive.d.ts +1 -5
- package/{directives → portals}/dropdown/dropdown-position-sided.directive.d.ts +3 -3
- package/{directives → portals}/dropdown/dropdown-position.directive.d.ts +6 -6
- 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 +2 -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/portals/hint/hint-options.directive.d.ts +17 -0
- package/{directives → portals}/hint/hint-overflow.directive.d.ts +2 -2
- package/{directives → portals}/hint/hint-position.directive.d.ts +7 -8
- package/{directives → portals}/hint/hint-unstyled.component.d.ts +2 -7
- package/portals/hint/hint.component.d.ts +29 -0
- package/{directives → portals}/hint/hint.d.ts +1 -2
- 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 -22
- package/styles/components/icon.less +11 -0
- package/styles/components/icons.less +4 -3
- package/styles/components/label.less +3 -12
- package/styles/components/link.less +9 -24
- package/styles/components/notification.less +31 -65
- package/styles/components/textfield.less +130 -211
- package/styles/components/title.less +8 -8
- package/styles/mixins/appearance.less +11 -26
- package/styles/mixins/appearance.scss +9 -24
- package/styles/mixins/date-picker.less +1 -1
- package/styles/mixins/mixins.less +0 -6
- package/styles/mixins/mixins.scss +0 -6
- 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 +26 -27
- package/styles/theme/appearance.less +0 -1
- package/styles/theme/variables.less +16 -19
- package/styles/variables/media.less +13 -18
- package/styles/variables/media.scss +13 -13
- 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 +2 -4
- package/tokens/number-format.d.ts +2 -3
- package/tokens/validation-errors.d.ts +4 -0
- package/types/direction.d.ts +1 -1
- 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 +2 -1
- package/utils/miscellaneous/provide-taiga.d.ts +13 -0
- 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/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-options.directive.d.ts +0 -36
- 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 -195
- package/fesm2022/taiga-ui-core-components-dialog.mjs.map +0 -1
- package/fesm2022/taiga-ui-core-components-fullscreen.mjs +0 -66
- 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-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.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,42 +1,41 @@
|
|
|
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';
|
|
7
7
|
import * as i2 from '@taiga-ui/cdk/directives/animated';
|
|
8
8
|
import { TuiAnimated } from '@taiga-ui/cdk/directives/animated';
|
|
9
|
-
import { tuiInjectElement, tuiGetActualTarget, tuiPointToClientRect, tuiIsElement,
|
|
9
|
+
import { tuiInjectElement, tuiGetActualTarget, tuiPointToClientRect, tuiIsElement, tuiIsElementEditable, tuiIsHTMLElement, 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,
|
|
17
|
+
import { BehaviorSubject, Subject, distinctUntilChanged, throttleTime, takeWhile, map, merge, filter, EMPTY, switchMap, delay, startWith, takeUntil, fromEvent, of, tap, share, combineLatest } from 'rxjs';
|
|
18
18
|
import { coerceArray } from '@angular/cdk/coercion';
|
|
19
|
-
import { tuiZonefreeScheduler, tuiTypedFromEvent,
|
|
20
|
-
import {
|
|
21
|
-
import {
|
|
22
|
-
import {
|
|
23
|
-
import {
|
|
24
|
-
import {
|
|
25
|
-
import {
|
|
19
|
+
import { tuiZonefreeScheduler, tuiTypedFromEvent, tuiZoneOptimized, tuiIfMap, tuiCloseWatcher, tuiStopPropagation } from '@taiga-ui/cdk/observables';
|
|
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';
|
|
25
|
+
import { WA_IS_TOUCH } from '@ng-web-apis/platform';
|
|
26
26
|
import * as i1$1 from '@taiga-ui/cdk/directives/obscured';
|
|
27
27
|
import { TuiObscured } from '@taiga-ui/cdk/directives/obscured';
|
|
28
|
-
import {
|
|
29
|
-
import { tuiIsEditingKey, tuiOverrideOptions as tuiOverrideOptions$1 } from '@taiga-ui/core/utils/miscellaneous';
|
|
28
|
+
import { tuiIsFocusable, tuiGetClosestFocusable, tuiIsFocusedIn, tuiGetFocused } from '@taiga-ui/cdk/utils/focus';
|
|
30
29
|
|
|
31
30
|
class TuiDropdownDriver extends BehaviorSubject {
|
|
32
31
|
constructor() {
|
|
33
32
|
super(false);
|
|
34
33
|
this.type = 'dropdown';
|
|
35
34
|
}
|
|
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.
|
|
35
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiDropdownDriver, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
36
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiDropdownDriver }); }
|
|
38
37
|
}
|
|
39
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
38
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiDropdownDriver, decorators: [{
|
|
40
39
|
type: Injectable
|
|
41
40
|
}], ctorParameters: () => [] });
|
|
42
41
|
class TuiDropdownDriverDirective extends TuiDriverDirective {
|
|
@@ -44,14 +43,11 @@ class TuiDropdownDriverDirective extends TuiDriverDirective {
|
|
|
44
43
|
super(...arguments);
|
|
45
44
|
this.type = 'dropdown';
|
|
46
45
|
}
|
|
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.
|
|
46
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiDropdownDriverDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
47
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.17", type: TuiDropdownDriverDirective, isStandalone: true, usesInheritance: true, ngImport: i0 }); }
|
|
49
48
|
}
|
|
50
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
51
|
-
type: Directive
|
|
52
|
-
args: [{
|
|
53
|
-
standalone: true,
|
|
54
|
-
}]
|
|
49
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiDropdownDriverDirective, decorators: [{
|
|
50
|
+
type: Directive
|
|
55
51
|
}] });
|
|
56
52
|
|
|
57
53
|
/**
|
|
@@ -62,20 +58,8 @@ const TUI_DROPDOWN_COMPONENT = new InjectionToken(ngDevMode ? 'TUI_DROPDOWN_COMP
|
|
|
62
58
|
});
|
|
63
59
|
const TUI_DROPDOWN_CONTEXT = new InjectionToken(ngDevMode ? 'TUI_DROPDOWN_CONTEXT' : '');
|
|
64
60
|
|
|
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
61
|
const TUI_DROPDOWN_DEFAULT_OPTIONS = {
|
|
78
|
-
align: '
|
|
62
|
+
align: 'start',
|
|
79
63
|
direction: null,
|
|
80
64
|
limitWidth: 'auto',
|
|
81
65
|
maxHeight: 400,
|
|
@@ -83,9 +67,6 @@ const TUI_DROPDOWN_DEFAULT_OPTIONS = {
|
|
|
83
67
|
offset: 4,
|
|
84
68
|
appearance: '',
|
|
85
69
|
};
|
|
86
|
-
/**
|
|
87
|
-
* Default parameters for dropdown directive
|
|
88
|
-
*/
|
|
89
70
|
const TUI_DROPDOWN_OPTIONS = new InjectionToken(ngDevMode ? 'TUI_DROPDOWN_OPTIONS' : '', {
|
|
90
71
|
factory: () => TUI_DROPDOWN_DEFAULT_OPTIONS,
|
|
91
72
|
});
|
|
@@ -108,38 +89,25 @@ class TuiDropdownOptionsDirective {
|
|
|
108
89
|
this.maxHeight = this.options.maxHeight;
|
|
109
90
|
this.offset = this.options.offset;
|
|
110
91
|
}
|
|
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.
|
|
92
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiDropdownOptionsDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
93
|
+
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
94
|
}
|
|
114
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
95
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiDropdownOptionsDirective, decorators: [{
|
|
115
96
|
type: Directive,
|
|
116
97
|
args: [{
|
|
117
|
-
standalone: true,
|
|
118
98
|
selector: '[tuiDropdownAlign], [tuiDropdownAppearance], [tuiDropdownDirection], [tuiDropdownLimitWidth], [tuiDropdownMinHeight], [tuiDropdownMaxHeight], [tuiDropdownOffset]',
|
|
99
|
+
inputs: [
|
|
100
|
+
'align: tuiDropdownAlign',
|
|
101
|
+
'appearance: tuiDropdownAppearance',
|
|
102
|
+
'direction: tuiDropdownDirection',
|
|
103
|
+
'limitWidth: tuiDropdownLimitWidth',
|
|
104
|
+
'minHeight: tuiDropdownMinHeight',
|
|
105
|
+
'maxHeight: tuiDropdownMaxHeight',
|
|
106
|
+
'offset: tuiDropdownOffset',
|
|
107
|
+
],
|
|
119
108
|
providers: [tuiProvide(TUI_DROPDOWN_OPTIONS, TuiDropdownOptionsDirective)],
|
|
120
109
|
}]
|
|
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
|
-
}] } });
|
|
110
|
+
}] });
|
|
143
111
|
|
|
144
112
|
class TuiDropdownPosition extends TuiPositionAccessor {
|
|
145
113
|
constructor() {
|
|
@@ -147,18 +115,16 @@ class TuiDropdownPosition extends TuiPositionAccessor {
|
|
|
147
115
|
this.el = tuiInjectElement();
|
|
148
116
|
this.options = inject(TUI_DROPDOWN_OPTIONS);
|
|
149
117
|
this.viewport = inject(TUI_VIEWPORT);
|
|
150
|
-
this.
|
|
118
|
+
this.direction = new Subject();
|
|
151
119
|
this.type = 'dropdown';
|
|
152
|
-
this.accessor = tuiFallbackAccessor('dropdown')(inject(TuiRectAccessor
|
|
153
|
-
|
|
154
|
-
emitDirection(direction) {
|
|
155
|
-
this.directionChange.emit(direction);
|
|
120
|
+
this.accessor = tuiFallbackAccessor('dropdown')(inject(TuiRectAccessor, { optional: true }), { getClientRect: () => this.el.getBoundingClientRect() });
|
|
121
|
+
this.tuiDropdownDirectionChange = outputFromObservable(this.direction.pipe(distinctUntilChanged()));
|
|
156
122
|
}
|
|
157
123
|
getPosition({ width, height }) {
|
|
158
124
|
if (!width && !height) {
|
|
159
125
|
this.previous = undefined;
|
|
160
126
|
}
|
|
161
|
-
const hostRect = this.accessor
|
|
127
|
+
const hostRect = this.accessor.getClientRect();
|
|
162
128
|
const viewportRect = this.viewport.getClientRect();
|
|
163
129
|
const { minHeight, direction, offset, limitWidth } = this.options;
|
|
164
130
|
const align = this.getAlign(this.options.align);
|
|
@@ -188,42 +154,38 @@ class TuiDropdownPosition extends TuiPositionAccessor {
|
|
|
188
154
|
const better = available.top > available.bottom ? 'top' : 'bottom';
|
|
189
155
|
if ((available[previous] > minHeight && direction) ||
|
|
190
156
|
available[previous] > height) {
|
|
191
|
-
this.
|
|
192
|
-
return [position[
|
|
157
|
+
this.direction.next(previous);
|
|
158
|
+
return [position[align], position[previous]];
|
|
193
159
|
}
|
|
194
160
|
this.previous = better;
|
|
195
|
-
this.
|
|
196
|
-
return [position[
|
|
161
|
+
this.direction.next(better);
|
|
162
|
+
return [position[align], position[better]];
|
|
197
163
|
}
|
|
198
164
|
getAlign(align) {
|
|
199
165
|
const rtl = this.el.matches('[dir="rtl"] :scope');
|
|
200
|
-
if (rtl && align === '
|
|
166
|
+
if (rtl && align === 'start') {
|
|
201
167
|
return 'right';
|
|
202
168
|
}
|
|
203
|
-
|
|
169
|
+
if (rtl && align === 'end') {
|
|
170
|
+
return 'left';
|
|
171
|
+
}
|
|
172
|
+
if (align === 'center') {
|
|
173
|
+
return 'center';
|
|
174
|
+
}
|
|
175
|
+
return align === 'end' ? 'right' : 'left';
|
|
204
176
|
}
|
|
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.
|
|
177
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiDropdownPosition, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
178
|
+
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
179
|
}
|
|
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: [] } });
|
|
180
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiDropdownPosition, decorators: [{
|
|
181
|
+
type: Directive
|
|
182
|
+
}] });
|
|
220
183
|
|
|
221
184
|
class TuiDropdownDirective {
|
|
222
185
|
constructor() {
|
|
223
186
|
this.refresh$ = new Subject();
|
|
224
|
-
this.service = inject(
|
|
187
|
+
this.service = inject(TuiPopupService);
|
|
225
188
|
this.cdr = inject(ChangeDetectorRef);
|
|
226
|
-
// TODO: think of a better solution later
|
|
227
189
|
this.drivers = coerceArray(inject(TuiDropdownDriver, { self: true, optional: true }));
|
|
228
190
|
this.sub = this.refresh$
|
|
229
191
|
.pipe(throttleTime(0, tuiZonefreeScheduler()), takeUntilDestroyed())
|
|
@@ -231,33 +193,25 @@ class TuiDropdownDirective {
|
|
|
231
193
|
this.ref()?.changeDetectorRef.detectChanges();
|
|
232
194
|
this.ref()?.changeDetectorRef.markForCheck();
|
|
233
195
|
});
|
|
196
|
+
this.autoClose = effect(() => {
|
|
197
|
+
if (!this.content()) {
|
|
198
|
+
this.toggle(false);
|
|
199
|
+
}
|
|
200
|
+
});
|
|
201
|
+
this.ref = signal(null);
|
|
234
202
|
this.el = tuiInjectElement();
|
|
235
203
|
this.type = 'dropdown';
|
|
236
204
|
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
|
-
}
|
|
205
|
+
this.tuiDropdown = input();
|
|
206
|
+
this.content = computed((content = this.tuiDropdown()) => {
|
|
207
|
+
return content instanceof TemplateRef
|
|
208
|
+
? new PolymorpheusTemplate(content, this.cdr)
|
|
209
|
+
: content;
|
|
210
|
+
});
|
|
249
211
|
}
|
|
250
212
|
get position() {
|
|
251
213
|
return tuiCheckFixedPosition(this.el) ? 'fixed' : 'absolute';
|
|
252
214
|
}
|
|
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
215
|
ngAfterViewChecked() {
|
|
262
216
|
this.refresh$.next();
|
|
263
217
|
}
|
|
@@ -269,32 +223,25 @@ class TuiDropdownDirective {
|
|
|
269
223
|
}
|
|
270
224
|
toggle(show) {
|
|
271
225
|
const ref = this.ref();
|
|
272
|
-
if (show && this.
|
|
226
|
+
if (show && this.content() && !ref) {
|
|
273
227
|
this.ref.set(this.service.add(this.component));
|
|
274
228
|
}
|
|
275
229
|
else if (!show && ref) {
|
|
276
230
|
this.ref.set(null);
|
|
277
|
-
|
|
231
|
+
ref.destroy();
|
|
278
232
|
}
|
|
279
|
-
this.drivers.forEach((driver) => driver?.next(show));
|
|
280
233
|
// TODO: Remove in v5, only needed in Angular 16
|
|
281
234
|
this.cdr.markForCheck();
|
|
235
|
+
this.drivers.forEach((driver) => driver?.next(show));
|
|
282
236
|
}
|
|
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 }); }
|
|
237
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiDropdownDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
238
|
+
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
239
|
}
|
|
289
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
240
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiDropdownDirective, decorators: [{
|
|
290
241
|
type: Directive,
|
|
291
242
|
args: [{
|
|
292
|
-
standalone: true,
|
|
293
243
|
selector: '[tuiDropdown]:not(ng-container):not(ng-template)',
|
|
294
|
-
providers: [
|
|
295
|
-
tuiAsRectAccessor(TuiDropdownDirective),
|
|
296
|
-
tuiAsVehicle(TuiDropdownDirective),
|
|
297
|
-
],
|
|
244
|
+
providers: [tuiAsVehicle(TuiDropdownDirective)],
|
|
298
245
|
exportAs: 'tuiDropdown',
|
|
299
246
|
hostDirectives: [
|
|
300
247
|
TuiDropdownDriverDirective,
|
|
@@ -307,9 +254,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
307
254
|
'[class.tui-dropdown-open]': 'ref()',
|
|
308
255
|
},
|
|
309
256
|
}]
|
|
310
|
-
}]
|
|
311
|
-
type: Input
|
|
312
|
-
}] } });
|
|
257
|
+
}] });
|
|
313
258
|
|
|
314
259
|
/**
|
|
315
260
|
* @description:
|
|
@@ -323,7 +268,7 @@ class TuiDropdownComponent {
|
|
|
323
268
|
this.viewport = inject(TUI_VIEWPORT);
|
|
324
269
|
this.vvs = inject(TuiVisualViewportService);
|
|
325
270
|
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((
|
|
271
|
+
!!this.directive.el.getBoundingClientRect().height), map((v) => (this.position === 'fixed' ? this.vvs.correct(v) : v)), map((point) => this.getStyles(...point)), takeUntilDestroyed());
|
|
327
272
|
this.options = inject(TUI_DROPDOWN_OPTIONS);
|
|
328
273
|
this.directive = inject(TuiDropdownDirective);
|
|
329
274
|
this.context = inject(TUI_DROPDOWN_CONTEXT, { optional: true });
|
|
@@ -362,69 +307,83 @@ class TuiDropdownComponent {
|
|
|
362
307
|
maxWidth: tuiPx(Math.round(viewport.width) - 16), // 8px min gap from each side
|
|
363
308
|
};
|
|
364
309
|
}
|
|
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.
|
|
310
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiDropdownComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
311
|
+
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
312
|
TuiPositionService,
|
|
368
313
|
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.
|
|
314
|
+
tuiRectAccessorFor('dropdown', forwardRef(() => TuiDropdownDirective)),
|
|
315
|
+
], 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
316
|
}
|
|
372
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
317
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiDropdownComponent, decorators: [{
|
|
373
318
|
type: Component,
|
|
374
319
|
args: [{ selector: 'tui-dropdown', imports: [PolymorpheusOutlet, TuiScrollbar], changeDetection: ChangeDetectionStrategy.Default, providers: [
|
|
375
320
|
TuiPositionService,
|
|
376
321
|
tuiPositionAccessorFor('dropdown', TuiDropdownPosition),
|
|
377
|
-
tuiRectAccessorFor('dropdown', TuiDropdownDirective),
|
|
322
|
+
tuiRectAccessorFor('dropdown', forwardRef(() => TuiDropdownDirective)),
|
|
378
323
|
], hostDirectives: [TuiActiveZone, TuiAnimated], host: {
|
|
379
324
|
'[attr.data-appearance]': 'options.appearance',
|
|
380
325
|
'[attr.tuiTheme]': 'theme()',
|
|
381
|
-
}, template: "<tui-scrollbar class=\"t-scroll\">\n <div\n *polymorpheusOutlet=\"directive.
|
|
326
|
+
}, 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
327
|
}] });
|
|
383
328
|
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
329
|
+
class TuiDropdownContent {
|
|
330
|
+
constructor() {
|
|
331
|
+
this.directive = inject(TuiDropdownDirective);
|
|
332
|
+
tuiSetSignal(this.directive.tuiDropdown, inject(TemplateRef));
|
|
333
|
+
if (isPlatformBrowser(inject(PLATFORM_ID)) &&
|
|
334
|
+
this.directive.el.matches(':focus-within')) {
|
|
335
|
+
this.directive.toggle(true);
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
ngOnDestroy() {
|
|
339
|
+
tuiSetSignal(this.directive.tuiDropdown, null);
|
|
340
|
+
}
|
|
341
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiDropdownContent, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
342
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.17", type: TuiDropdownContent, isStandalone: true, selector: "ng-template[tuiDropdown]", ngImport: i0 }); }
|
|
387
343
|
}
|
|
344
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiDropdownContent, decorators: [{
|
|
345
|
+
type: Directive,
|
|
346
|
+
args: [{
|
|
347
|
+
selector: 'ng-template[tuiDropdown]',
|
|
348
|
+
}]
|
|
349
|
+
}], ctorParameters: () => [] });
|
|
350
|
+
|
|
388
351
|
class TuiDropdownContext extends TuiRectAccessor {
|
|
389
352
|
constructor() {
|
|
390
353
|
super(...arguments);
|
|
391
|
-
this.isTouch = inject(
|
|
354
|
+
this.isTouch = inject(WA_IS_TOUCH);
|
|
392
355
|
this.currentRect = EMPTY_CLIENT_RECT;
|
|
393
356
|
this.userSelect = computed(() => (this.isTouch() ? 'none' : null));
|
|
394
357
|
this.activeZone = inject(TuiActiveZone);
|
|
395
358
|
this.driver = inject(TuiDropdownDriver);
|
|
396
359
|
this.doc = inject(DOCUMENT);
|
|
397
|
-
this.sub = merge(tuiTypedFromEvent(this.doc, 'pointerdown'), tuiTypedFromEvent(this.doc, 'contextmenu', { capture: true }))
|
|
398
|
-
.pipe(
|
|
399
|
-
.
|
|
360
|
+
this.sub = merge(tuiTypedFromEvent(this.doc, 'pointerdown'), tuiTypedFromEvent(this.doc, 'keydown').pipe(filter(({ key }) => key === 'Escape')), tuiTypedFromEvent(this.doc, 'contextmenu', { capture: true }))
|
|
361
|
+
.pipe(filter((event) => this.driver.value &&
|
|
362
|
+
!this.activeZone.contains(tuiGetActualTarget(event))), tuiZoneOptimized(), takeUntilDestroyed())
|
|
363
|
+
.subscribe(() => {
|
|
364
|
+
this.driver.next(false);
|
|
365
|
+
this.currentRect = EMPTY_CLIENT_RECT;
|
|
366
|
+
});
|
|
400
367
|
this.type = 'dropdown';
|
|
401
368
|
}
|
|
402
369
|
getClientRect() {
|
|
403
370
|
return this.currentRect;
|
|
404
371
|
}
|
|
405
|
-
closeDropdown(_event) {
|
|
406
|
-
this.driver.next(false);
|
|
407
|
-
this.currentRect = EMPTY_CLIENT_RECT;
|
|
408
|
-
}
|
|
409
372
|
onContextMenu(x, y) {
|
|
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: { "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),
|
|
418
381
|
tuiAsRectAccessor(TuiDropdownContext),
|
|
419
382
|
], usesInheritance: true, ngImport: i0 }); }
|
|
420
383
|
}
|
|
421
|
-
|
|
422
|
-
shouldCall(activeZoneFilter)
|
|
423
|
-
], TuiDropdownContext.prototype, "closeDropdown", null);
|
|
424
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiDropdownContext, decorators: [{
|
|
384
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiDropdownContext, decorators: [{
|
|
425
385
|
type: Directive,
|
|
426
386
|
args: [{
|
|
427
|
-
standalone: true,
|
|
428
387
|
selector: '[tuiDropdownContext]',
|
|
429
388
|
providers: [
|
|
430
389
|
TuiActiveZone,
|
|
@@ -436,11 +395,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
436
395
|
'[style.user-select]': 'userSelect()',
|
|
437
396
|
'[style.-webkit-user-select]': 'userSelect()',
|
|
438
397
|
'[style.-webkit-touch-callout]': 'userSelect()',
|
|
439
|
-
'(document:keydown.esc)': 'closeDropdown()',
|
|
440
398
|
'(longtap)': 'onContextMenu($event.detail.clientX, $event.detail.clientY)',
|
|
441
399
|
},
|
|
442
400
|
}]
|
|
443
|
-
}]
|
|
401
|
+
}] });
|
|
444
402
|
|
|
445
403
|
/** Default values for hint options */
|
|
446
404
|
const TUI_DROPDOWN_HOVER_DEFAULT_OPTIONS = {
|
|
@@ -450,48 +408,58 @@ const TUI_DROPDOWN_HOVER_DEFAULT_OPTIONS = {
|
|
|
450
408
|
/**
|
|
451
409
|
* Default parameters for dropdown hover directive
|
|
452
410
|
*/
|
|
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
|
-
}
|
|
411
|
+
const [TUI_DROPDOWN_HOVER_OPTIONS, tuiDropdownHoverOptionsProvider] = tuiCreateOptions(TUI_DROPDOWN_HOVER_DEFAULT_OPTIONS);
|
|
459
412
|
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
this.
|
|
467
|
-
|
|
468
|
-
|
|
413
|
+
class TuiDropdownClose {
|
|
414
|
+
constructor() {
|
|
415
|
+
this.el = tuiInjectElement();
|
|
416
|
+
this.ref = inject(TuiDropdownDirective).ref;
|
|
417
|
+
this.open = inject(TuiDropdownOpen);
|
|
418
|
+
this.obscured = inject(TuiObscured);
|
|
419
|
+
this.activeZone = inject(TuiActiveZone);
|
|
420
|
+
this.tuiDropdownClose = outputFromObservable(merge(inject(TuiDropdownDriver).pipe(tuiIfMap(() => merge(tuiCloseWatcher(), this.obscured.tuiObscured$.pipe(filter(Boolean)), this.activeZone.tuiActiveZoneChange.pipe(filter((a) => !a)), tuiTypedFromEvent(this.el, 'focusin').pipe(filter((event) => !this.open.host.contains(tuiGetActualTarget(event)) ||
|
|
421
|
+
!this.ref()))))),
|
|
422
|
+
// @ts-ignore
|
|
423
|
+
typeof CloseWatcher === 'undefined'
|
|
424
|
+
? tuiTypedFromEvent(inject(DOCUMENT), 'keydown', { capture: true }).pipe(filter(({ key }) => key === 'Escape' &&
|
|
425
|
+
this.open.open() &&
|
|
426
|
+
!this.ref()?.location.nativeElement?.nextElementSibling), tuiStopPropagation())
|
|
427
|
+
: EMPTY));
|
|
428
|
+
}
|
|
429
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiDropdownClose, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
430
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.17", type: TuiDropdownClose, isStandalone: true, outputs: { tuiDropdownClose: "tuiDropdownClose" }, ngImport: i0 }); }
|
|
469
431
|
}
|
|
432
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiDropdownClose, decorators: [{
|
|
433
|
+
type: Directive
|
|
434
|
+
}] });
|
|
435
|
+
|
|
470
436
|
class TuiDropdownOpen {
|
|
471
437
|
constructor() {
|
|
438
|
+
this.dropdownHost = contentChild('tuiDropdownHost', {
|
|
439
|
+
descendants: true,
|
|
440
|
+
read: ElementRef,
|
|
441
|
+
});
|
|
472
442
|
this.directive = inject(TuiDropdownDirective);
|
|
473
443
|
this.el = tuiInjectElement();
|
|
474
444
|
this.obscured = inject(TuiObscured);
|
|
475
|
-
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
445
|
this.driver = inject(TuiDropdownDriver);
|
|
482
|
-
this.
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
this.
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
446
|
+
this.dropdown = computed(() => this.directive.ref()?.location.nativeElement);
|
|
447
|
+
this.enabled = input(true, { alias: 'tuiDropdownEnabled' });
|
|
448
|
+
this.open = model(false, { alias: 'tuiDropdownOpen' });
|
|
449
|
+
this.driveEffect = effect(() => this.drive(this.open()));
|
|
450
|
+
this.syncSub = this.driver
|
|
451
|
+
.pipe(filter((open) => open !== this.open()), takeUntilDestroyed())
|
|
452
|
+
.subscribe((open) => this.update(open));
|
|
453
|
+
this.keydownSub = tuiTypedFromEvent(inject(DOCUMENT), 'keydown')
|
|
454
|
+
.pipe(takeUntilDestroyed())
|
|
455
|
+
.subscribe((event) => this.onKeydown(event));
|
|
491
456
|
}
|
|
492
|
-
|
|
493
|
-
this.
|
|
494
|
-
|
|
457
|
+
get host() {
|
|
458
|
+
const initial = this.dropdownHost()?.nativeElement || this.el;
|
|
459
|
+
const focusable = tuiIsFocusable(initial)
|
|
460
|
+
? initial
|
|
461
|
+
: tuiGetClosestFocusable({ initial, root: this.el });
|
|
462
|
+
return this.dropdownHost()?.nativeElement || focusable || this.el;
|
|
495
463
|
}
|
|
496
464
|
toggle(open) {
|
|
497
465
|
if (this.focused && !open) {
|
|
@@ -499,25 +467,27 @@ class TuiDropdownOpen {
|
|
|
499
467
|
}
|
|
500
468
|
this.update(open);
|
|
501
469
|
}
|
|
502
|
-
onEsc(event) {
|
|
503
|
-
event.preventDefault();
|
|
504
|
-
this.toggle(false);
|
|
505
|
-
}
|
|
506
470
|
onClick(target) {
|
|
507
471
|
if (!this.editable && this.host.contains(target)) {
|
|
508
|
-
this.update(!this.
|
|
472
|
+
this.update(!this.open());
|
|
509
473
|
}
|
|
510
474
|
}
|
|
511
475
|
onArrow(event, up) {
|
|
512
476
|
if (!tuiIsElement(event.target) ||
|
|
513
477
|
!this.host.contains(event.target) ||
|
|
514
|
-
!this.
|
|
515
|
-
!this.directive.
|
|
478
|
+
!this.enabled() ||
|
|
479
|
+
!this.directive.content()) {
|
|
516
480
|
return;
|
|
517
481
|
}
|
|
518
482
|
event.preventDefault();
|
|
519
483
|
this.focusDropdown(up);
|
|
520
484
|
}
|
|
485
|
+
get editable() {
|
|
486
|
+
return tuiIsElementEditable(this.host);
|
|
487
|
+
}
|
|
488
|
+
get focused() {
|
|
489
|
+
return tuiIsFocusedIn(this.host) || tuiIsFocusedIn(this.dropdown());
|
|
490
|
+
}
|
|
521
491
|
onKeydown(event) {
|
|
522
492
|
const target = tuiGetActualTarget(event);
|
|
523
493
|
if (!event.defaultPrevented &&
|
|
@@ -529,29 +499,15 @@ class TuiDropdownOpen {
|
|
|
529
499
|
this.host.focus({ preventScroll: true });
|
|
530
500
|
}
|
|
531
501
|
}
|
|
532
|
-
get host() {
|
|
533
|
-
const initial = this.dropdownHost?.nativeElement || this.el;
|
|
534
|
-
const focusable = tuiIsNativeKeyboardFocusable(initial)
|
|
535
|
-
? initial
|
|
536
|
-
: tuiGetClosestFocusable({ initial, root: this.el });
|
|
537
|
-
return this.dropdownHost?.nativeElement || focusable || this.el;
|
|
538
|
-
}
|
|
539
|
-
get editable() {
|
|
540
|
-
return tuiIsElementEditable(this.host);
|
|
541
|
-
}
|
|
542
|
-
get focused() {
|
|
543
|
-
return tuiIsNativeFocusedIn(this.host) || tuiIsNativeFocusedIn(this.dropdown());
|
|
544
|
-
}
|
|
545
502
|
update(open) {
|
|
546
|
-
if (open && !this.
|
|
503
|
+
if (open && !this.enabled()) {
|
|
547
504
|
return this.drive();
|
|
548
505
|
}
|
|
549
|
-
this.
|
|
550
|
-
this.tuiDropdownOpenChange.emit(open);
|
|
506
|
+
this.open.set(open);
|
|
551
507
|
this.drive();
|
|
552
508
|
}
|
|
553
|
-
drive(open =
|
|
554
|
-
this.obscured.tuiObscuredEnabled
|
|
509
|
+
drive(open = this.open() && this.enabled()) {
|
|
510
|
+
tuiSetSignal(this.obscured.tuiObscuredEnabled, open);
|
|
555
511
|
this.driver.next(open);
|
|
556
512
|
}
|
|
557
513
|
focusDropdown(previous) {
|
|
@@ -567,20 +523,20 @@ class TuiDropdownOpen {
|
|
|
567
523
|
child.remove();
|
|
568
524
|
focusable?.focus();
|
|
569
525
|
}
|
|
570
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
571
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "
|
|
526
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiDropdownOpen, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
527
|
+
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)", "tuiActiveZoneChange": "0", "tuiDropdownClose": "toggle(false)" } }, providers: [TuiDropdownDriver, tuiAsDriver(TuiDropdownDriver)], queries: [{ propertyName: "dropdownHost", first: true, predicate: ["tuiDropdownHost"], descendants: true, read: ElementRef, isSignal: true }], hostDirectives: [{ directive: i1$1.TuiObscured }, { directive: TuiDropdownClose, outputs: ["tuiDropdownClose", "tuiDropdownClose"] }, { directive: i1.TuiActiveZone, inputs: ["tuiActiveZoneParent", "tuiActiveZoneParent"], outputs: ["tuiActiveZoneChange", "tuiActiveZoneChange"] }], ngImport: i0 }); }
|
|
572
528
|
}
|
|
573
|
-
|
|
574
|
-
shouldCall(shouldClose)
|
|
575
|
-
], TuiDropdownOpen.prototype, "onEsc", null);
|
|
576
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiDropdownOpen, decorators: [{
|
|
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,
|
|
536
|
+
{
|
|
537
|
+
directive: TuiDropdownClose,
|
|
538
|
+
outputs: ['tuiDropdownClose'],
|
|
539
|
+
},
|
|
584
540
|
{
|
|
585
541
|
directive: TuiActiveZone,
|
|
586
542
|
inputs: ['tuiActiveZoneParent'],
|
|
@@ -591,43 +547,37 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
591
547
|
'(click)': 'onClick($event.target)',
|
|
592
548
|
'(keydown.arrowDown)': 'onArrow($event, false)',
|
|
593
549
|
'(keydown.arrowUp)': 'onArrow($event, true)',
|
|
594
|
-
'(document:keydown.zoneless.capture)': 'onEsc($event)',
|
|
595
|
-
'(document:keydown.zoneless)': 'onKeydown($event)',
|
|
596
550
|
// TODO: Necessary because startWith(false) + distinctUntilChanged() in TuiActiveZone, think of better solution
|
|
597
551
|
'(tuiActiveZoneChange)': '0',
|
|
552
|
+
'(tuiDropdownClose)': 'toggle(false)',
|
|
598
553
|
},
|
|
599
554
|
}]
|
|
600
|
-
}]
|
|
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: [] } });
|
|
555
|
+
}] });
|
|
610
556
|
|
|
611
557
|
class TuiDropdownHover extends TuiDriver {
|
|
612
558
|
constructor() {
|
|
613
559
|
super((subscriber) => this.stream$.subscribe(subscriber));
|
|
560
|
+
this.dropdownHost = contentChild('tuiDropdownHost', {
|
|
561
|
+
descendants: true,
|
|
562
|
+
read: ElementRef,
|
|
563
|
+
});
|
|
564
|
+
this.hovered = false;
|
|
614
565
|
this.el = tuiInjectElement();
|
|
615
566
|
this.doc = inject(DOCUMENT);
|
|
616
567
|
this.options = inject(TUI_DROPDOWN_HOVER_OPTIONS);
|
|
617
568
|
this.activeZone = inject(TuiActiveZone);
|
|
618
569
|
this.open = inject(TuiDropdownOpen, { optional: true });
|
|
570
|
+
this.stream$ = merge(
|
|
619
571
|
/**
|
|
620
572
|
* Dropdown can be removed not only via click/touch –
|
|
621
573
|
* swipe on mobile devices removes dropdown sheet without triggering new mouseover / mouseout events.
|
|
622
574
|
*/
|
|
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) => {
|
|
575
|
+
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
576
|
this.hovered = hovered;
|
|
626
577
|
this.open?.toggle(hovered);
|
|
627
578
|
}), share());
|
|
628
|
-
this.
|
|
629
|
-
this.
|
|
630
|
-
this.hovered = false;
|
|
579
|
+
this.tuiDropdownShowDelay = input(this.options.showDelay);
|
|
580
|
+
this.tuiDropdownHideDelay = input(this.options.hideDelay);
|
|
631
581
|
this.type = 'dropdown';
|
|
632
582
|
}
|
|
633
583
|
onClick(event) {
|
|
@@ -636,115 +586,43 @@ class TuiDropdownHover extends TuiDriver {
|
|
|
636
586
|
}
|
|
637
587
|
}
|
|
638
588
|
isHovered(element) {
|
|
639
|
-
const host = this.dropdownHost?.nativeElement || this.el;
|
|
589
|
+
const host = this.dropdownHost()?.nativeElement || this.el;
|
|
640
590
|
const hovered = host.contains(element);
|
|
641
591
|
const child = !this.el.contains(element) && this.activeZone.contains(element);
|
|
642
592
|
return hovered || child;
|
|
643
593
|
}
|
|
644
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
645
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "
|
|
594
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiDropdownHover, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
595
|
+
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
596
|
}
|
|
647
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
597
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiDropdownHover, decorators: [{
|
|
648
598
|
type: Directive,
|
|
649
599
|
args: [{
|
|
650
|
-
standalone: true,
|
|
651
600
|
selector: '[tuiDropdownHover]',
|
|
652
601
|
providers: [TuiActiveZone, tuiAsDriver(TuiDropdownHover)],
|
|
653
602
|
host: {
|
|
654
603
|
'(click.capture)': 'onClick($event)',
|
|
655
604
|
},
|
|
656
605
|
}]
|
|
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
|
-
}] } });
|
|
606
|
+
}], ctorParameters: () => [] });
|
|
667
607
|
|
|
668
608
|
class TuiDropdownManual {
|
|
669
609
|
constructor() {
|
|
670
610
|
this.driver = inject(TuiDropdownDriver);
|
|
671
|
-
this.tuiDropdownManual = false;
|
|
611
|
+
this.tuiDropdownManual = input(false);
|
|
672
612
|
}
|
|
673
613
|
ngOnChanges() {
|
|
674
|
-
this.driver.next(!!this.tuiDropdownManual);
|
|
614
|
+
this.driver.next(!!this.tuiDropdownManual());
|
|
675
615
|
}
|
|
676
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
677
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "
|
|
616
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiDropdownManual, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
617
|
+
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
618
|
}
|
|
679
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
619
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiDropdownManual, decorators: [{
|
|
680
620
|
type: Directive,
|
|
681
621
|
args: [{
|
|
682
|
-
standalone: true,
|
|
683
622
|
selector: '[tuiDropdownManual]',
|
|
684
623
|
providers: [TuiDropdownDriver, tuiAsDriver(TuiDropdownDriver)],
|
|
685
624
|
}]
|
|
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
|
-
}] } });
|
|
625
|
+
}] });
|
|
748
626
|
|
|
749
627
|
class TuiDropdownPositionSided extends TuiPositionAccessor {
|
|
750
628
|
constructor() {
|
|
@@ -753,12 +631,12 @@ class TuiDropdownPositionSided extends TuiPositionAccessor {
|
|
|
753
631
|
this.viewport = inject(TUI_VIEWPORT);
|
|
754
632
|
this.vertical = inject(TuiDropdownPosition);
|
|
755
633
|
this.previous = this.options.direction || 'bottom';
|
|
756
|
-
this.tuiDropdownSided = '';
|
|
757
|
-
this.tuiDropdownSidedOffset = 4;
|
|
634
|
+
this.tuiDropdownSided = input('');
|
|
635
|
+
this.tuiDropdownSidedOffset = input(4);
|
|
758
636
|
this.type = 'dropdown';
|
|
759
637
|
}
|
|
760
638
|
getPosition(rect) {
|
|
761
|
-
if (this.tuiDropdownSided === false) {
|
|
639
|
+
if (this.tuiDropdownSided() === false) {
|
|
762
640
|
return this.vertical.getPosition(rect);
|
|
763
641
|
}
|
|
764
642
|
const { height, width } = rect;
|
|
@@ -774,38 +652,33 @@ class TuiDropdownPositionSided extends TuiPositionAccessor {
|
|
|
774
652
|
bottom: viewport.bottom - hostRect.top,
|
|
775
653
|
};
|
|
776
654
|
const position = {
|
|
777
|
-
top: hostRect.bottom - height + this.tuiDropdownSidedOffset + 1, // 1 for border
|
|
655
|
+
top: hostRect.bottom - height + this.tuiDropdownSidedOffset() + 1, // 1 for border
|
|
778
656
|
left: hostRect.left - width - offset,
|
|
779
657
|
right: hostRect.right + offset,
|
|
780
|
-
bottom: hostRect.top - this.tuiDropdownSidedOffset - 1, // 1 for border
|
|
658
|
+
bottom: hostRect.top - this.tuiDropdownSidedOffset() - 1, // 1 for border
|
|
781
659
|
};
|
|
782
660
|
const better = available.top > available.bottom ? 'top' : 'bottom';
|
|
783
661
|
const maxLeft = available.left > available.right ? position.left : position.right;
|
|
784
662
|
const left = available[align] > width ? position[align] : maxLeft;
|
|
785
663
|
if ((available[this.previous] > height && direction) ||
|
|
786
664
|
this.previous === better) {
|
|
787
|
-
this.vertical.
|
|
788
|
-
return [position[this.previous]
|
|
665
|
+
this.vertical.direction.next(this.previous);
|
|
666
|
+
return [left, position[this.previous]];
|
|
789
667
|
}
|
|
790
668
|
this.previous = better;
|
|
791
|
-
this.vertical.
|
|
792
|
-
return [position[better]
|
|
669
|
+
this.vertical.direction.next(better);
|
|
670
|
+
return [left, position[better]];
|
|
793
671
|
}
|
|
794
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
795
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "
|
|
672
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiDropdownPositionSided, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
673
|
+
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
674
|
}
|
|
797
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
675
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiDropdownPositionSided, decorators: [{
|
|
798
676
|
type: Directive,
|
|
799
677
|
args: [{
|
|
800
|
-
standalone: true,
|
|
801
678
|
selector: '[tuiDropdownSided]',
|
|
802
679
|
providers: [TuiDropdownPosition, tuiAsPositionAccessor(TuiDropdownPositionSided)],
|
|
803
680
|
}]
|
|
804
|
-
}]
|
|
805
|
-
type: Input
|
|
806
|
-
}], tuiDropdownSidedOffset: [{
|
|
807
|
-
type: Input
|
|
808
|
-
}] } });
|
|
681
|
+
}] });
|
|
809
682
|
|
|
810
683
|
class TuiDropdownSelection extends TuiDriver {
|
|
811
684
|
constructor() {
|
|
@@ -814,9 +687,9 @@ class TuiDropdownSelection extends TuiDriver {
|
|
|
814
687
|
this.vcr = inject(ViewContainerRef);
|
|
815
688
|
this.dropdown = inject(TuiDropdownDirective);
|
|
816
689
|
this.el = tuiInjectElement();
|
|
817
|
-
this.handler
|
|
690
|
+
this.handler = computed((visible = this.tuiDropdownSelection()) => tuiIsString(visible) ? TUI_TRUE_HANDLER : visible);
|
|
818
691
|
this.stream$ = combineLatest([
|
|
819
|
-
this.handler
|
|
692
|
+
toObservable(this.handler),
|
|
820
693
|
inject(TUI_SELECTION_STREAM).pipe(map(() => this.getRange()), filter((range) => this.isValid(range)), distinctUntilChanged((x, y) => x.startOffset === y.startOffset &&
|
|
821
694
|
x.endOffset === y.endOffset &&
|
|
822
695
|
x.commonAncestorContainer === y.commonAncestorContainer)),
|
|
@@ -828,17 +701,15 @@ class TuiDropdownSelection extends TuiDriver {
|
|
|
828
701
|
: this.range;
|
|
829
702
|
return (contained && handler(this.range)) || this.inDropdown(range);
|
|
830
703
|
}));
|
|
831
|
-
this.range = inject(
|
|
832
|
-
|
|
704
|
+
this.range = isPlatformBrowser(inject(PLATFORM_ID))
|
|
705
|
+
? new Range()
|
|
706
|
+
: {};
|
|
833
707
|
this.type = 'dropdown';
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
if (!tuiIsString(visible)) {
|
|
837
|
-
this.handler$.next(visible);
|
|
838
|
-
}
|
|
708
|
+
this.tuiDropdownSelection = input('');
|
|
709
|
+
this.tuiDropdownSelectionPosition = input('selection');
|
|
839
710
|
}
|
|
840
711
|
getClientRect() {
|
|
841
|
-
switch (this.
|
|
712
|
+
switch (this.tuiDropdownSelectionPosition()) {
|
|
842
713
|
case 'tag': {
|
|
843
714
|
const { commonAncestorContainer } = this.range;
|
|
844
715
|
const element = tuiIsElement(commonAncestorContainer)
|
|
@@ -863,7 +734,7 @@ class TuiDropdownSelection extends TuiDriver {
|
|
|
863
734
|
return this.el.querySelector('tui-textfield .t-ghost') || this.el;
|
|
864
735
|
}
|
|
865
736
|
getRange() {
|
|
866
|
-
const active =
|
|
737
|
+
const active = tuiGetFocused(this.doc);
|
|
867
738
|
const selection = this.doc.getSelection();
|
|
868
739
|
const range = active && tuiIsTextfield(active) && this.el.contains(active)
|
|
869
740
|
? this.veryVerySadInputFix(active)
|
|
@@ -929,28 +800,22 @@ class TuiDropdownSelection extends TuiDriver {
|
|
|
929
800
|
this.ghost = ghost;
|
|
930
801
|
return ghost;
|
|
931
802
|
}
|
|
932
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
933
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "
|
|
803
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiDropdownSelection, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
804
|
+
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
805
|
tuiAsDriver(TuiDropdownSelection),
|
|
935
806
|
tuiAsRectAccessor(TuiDropdownSelection),
|
|
936
807
|
], usesInheritance: true, ngImport: i0 }); }
|
|
937
808
|
}
|
|
938
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
809
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiDropdownSelection, decorators: [{
|
|
939
810
|
type: Directive,
|
|
940
811
|
args: [{
|
|
941
|
-
standalone: true,
|
|
942
812
|
selector: '[tuiDropdownSelection]',
|
|
943
813
|
providers: [
|
|
944
814
|
tuiAsDriver(TuiDropdownSelection),
|
|
945
815
|
tuiAsRectAccessor(TuiDropdownSelection),
|
|
946
816
|
],
|
|
947
817
|
}]
|
|
948
|
-
}], ctorParameters: () => []
|
|
949
|
-
type: Input,
|
|
950
|
-
args: ['tuiDropdownSelectionPosition']
|
|
951
|
-
}], tuiDropdownSelection: [{
|
|
952
|
-
type: Input
|
|
953
|
-
}] } });
|
|
818
|
+
}], ctorParameters: () => [] });
|
|
954
819
|
|
|
955
820
|
const TuiDropdown = [
|
|
956
821
|
TuiDropdownOptionsDirective,
|
|
@@ -958,10 +823,9 @@ const TuiDropdown = [
|
|
|
958
823
|
TuiDropdownDirective,
|
|
959
824
|
TuiDropdownComponent,
|
|
960
825
|
TuiDropdownOpen,
|
|
961
|
-
TuiDropdownOpenLegacy,
|
|
962
|
-
TuiDropdownPortal,
|
|
963
826
|
TuiDropdownManual,
|
|
964
827
|
TuiDropdownHover,
|
|
828
|
+
TuiDropdownContent,
|
|
965
829
|
TuiDropdownContext,
|
|
966
830
|
TuiDropdownPosition,
|
|
967
831
|
TuiDropdownPositionSided,
|
|
@@ -972,28 +836,20 @@ function tuiDropdown(value) {
|
|
|
972
836
|
return tuiDirectiveBinding(TuiDropdownDirective, 'tuiDropdown', value, {});
|
|
973
837
|
}
|
|
974
838
|
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;
|
|
839
|
+
return tuiDirectiveBinding(TuiDropdownOpen, 'enabled', value, {});
|
|
983
840
|
}
|
|
984
841
|
|
|
985
842
|
class TuiDropdownFixed {
|
|
986
843
|
constructor() {
|
|
987
|
-
const override = tuiOverrideOptions
|
|
844
|
+
const override = tuiOverrideOptions({ limitWidth: 'fixed' }, TUI_DROPDOWN_DEFAULT_OPTIONS);
|
|
988
845
|
override(inject(TUI_DROPDOWN_OPTIONS, { self: true, optional: true }), null);
|
|
989
846
|
}
|
|
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.
|
|
847
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiDropdownFixed, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
848
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.17", type: TuiDropdownFixed, isStandalone: true, providers: [tuiDropdownOptionsProvider({})], ngImport: i0 }); }
|
|
992
849
|
}
|
|
993
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
850
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiDropdownFixed, decorators: [{
|
|
994
851
|
type: Directive,
|
|
995
852
|
args: [{
|
|
996
|
-
standalone: true,
|
|
997
853
|
providers: [tuiDropdownOptionsProvider({})],
|
|
998
854
|
}]
|
|
999
855
|
}], ctorParameters: () => [] });
|
|
@@ -1005,41 +861,20 @@ class TuiDropdownAuto {
|
|
|
1005
861
|
*/
|
|
1006
862
|
inject(TUI_DROPDOWN_OPTIONS).limitWidth = 'auto';
|
|
1007
863
|
}
|
|
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.
|
|
864
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiDropdownAuto, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
865
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.17", type: TuiDropdownAuto, isStandalone: true, ngImport: i0 }); }
|
|
1010
866
|
}
|
|
1011
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
1012
|
-
type: Directive
|
|
1013
|
-
args: [{ standalone: true }]
|
|
867
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiDropdownAuto, decorators: [{
|
|
868
|
+
type: Directive
|
|
1014
869
|
}], ctorParameters: () => [] });
|
|
1015
870
|
|
|
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
871
|
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.
|
|
872
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiWithDropdownOpen, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
873
|
+
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
874
|
}
|
|
1039
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
875
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiWithDropdownOpen, decorators: [{
|
|
1040
876
|
type: Directive,
|
|
1041
877
|
args: [{
|
|
1042
|
-
standalone: true,
|
|
1043
878
|
hostDirectives: [
|
|
1044
879
|
{
|
|
1045
880
|
directive: TuiDropdownOpen,
|
|
@@ -1054,5 +889,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
1054
889
|
* Generated bundle index. Do not edit.
|
|
1055
890
|
*/
|
|
1056
891
|
|
|
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-
|
|
892
|
+
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, TuiDropdownClose, TuiDropdownComponent, TuiDropdownContent, TuiDropdownContext, TuiDropdownDirective, TuiDropdownDriver, TuiDropdownDriverDirective, TuiDropdownFixed, TuiDropdownHover, TuiDropdownManual, TuiDropdownOpen, TuiDropdownOptionsDirective, TuiDropdownPosition, TuiDropdownPositionSided, TuiDropdownSelection, TuiWithDropdownOpen, tuiDropdown, tuiDropdownEnabled, tuiDropdownHoverOptionsProvider, tuiDropdownOptionsProvider };
|
|
893
|
+
//# sourceMappingURL=taiga-ui-core-portals-dropdown.mjs.map
|