@ngbase/adk 0.1.1 → 0.1.3
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/a11y/accessibility-group.d.ts +2 -5
- package/accordion/accordion-item.d.ts +7 -1
- package/accordion/public-api.d.ts +1 -1
- package/autocomplete/autocomplete-input.d.ts +2 -4
- package/autocomplete/autocomplete.d.ts +13 -4
- package/avatar/avatar.d.ts +1 -1
- package/breadcrumb/breadcrumb.d.ts +2 -3
- package/breadcrumb/public-api.d.ts +1 -1
- package/carousel/carousel.d.ts +3 -3
- package/checkbox/checkbox.d.ts +11 -3
- package/checkbox/public-api.d.ts +1 -1
- package/chip/chip.d.ts +2 -2
- package/datepicker/calendar.d.ts +3 -3
- package/datepicker/datepicker-trigger.d.ts +22 -5
- package/datepicker/datepicker.d.ts +4 -3
- package/datepicker/time.d.ts +2 -2
- package/dialog/dialog.d.ts +1 -1
- package/drag/drag.d.ts +1 -2
- package/fesm2022/ngbase-adk-a11y.mjs +29 -26
- package/fesm2022/ngbase-adk-a11y.mjs.map +1 -1
- package/fesm2022/ngbase-adk-accordion.mjs +16 -3
- package/fesm2022/ngbase-adk-accordion.mjs.map +1 -1
- package/fesm2022/ngbase-adk-autocomplete.mjs +23 -52
- package/fesm2022/ngbase-adk-autocomplete.mjs.map +1 -1
- package/fesm2022/ngbase-adk-avatar.mjs +2 -2
- package/fesm2022/ngbase-adk-avatar.mjs.map +1 -1
- package/fesm2022/ngbase-adk-breadcrumb.mjs +2 -2
- package/fesm2022/ngbase-adk-breadcrumb.mjs.map +1 -1
- package/fesm2022/ngbase-adk-carousel.mjs +7 -7
- package/fesm2022/ngbase-adk-carousel.mjs.map +1 -1
- package/fesm2022/ngbase-adk-checkbox.mjs +8 -6
- package/fesm2022/ngbase-adk-checkbox.mjs.map +1 -1
- package/fesm2022/ngbase-adk-chip.mjs +4 -2
- package/fesm2022/ngbase-adk-chip.mjs.map +1 -1
- package/fesm2022/ngbase-adk-datepicker.mjs +187 -350
- package/fesm2022/ngbase-adk-datepicker.mjs.map +1 -1
- package/fesm2022/ngbase-adk-dialog.mjs +14 -15
- package/fesm2022/ngbase-adk-dialog.mjs.map +1 -1
- package/fesm2022/ngbase-adk-drag.mjs +1 -2
- package/fesm2022/ngbase-adk-drag.mjs.map +1 -1
- package/fesm2022/ngbase-adk-form-field.mjs +2 -156
- package/fesm2022/ngbase-adk-form-field.mjs.map +1 -1
- package/fesm2022/ngbase-adk-list.mjs +2 -2
- package/fesm2022/ngbase-adk-list.mjs.map +1 -1
- package/fesm2022/ngbase-adk-mask.mjs +5 -3
- package/fesm2022/ngbase-adk-mask.mjs.map +1 -1
- package/fesm2022/ngbase-adk-menu.mjs +34 -34
- package/fesm2022/ngbase-adk-menu.mjs.map +1 -1
- package/fesm2022/ngbase-adk-otp.mjs +164 -0
- package/fesm2022/ngbase-adk-otp.mjs.map +1 -0
- package/fesm2022/ngbase-adk-pagination.mjs +10 -67
- package/fesm2022/ngbase-adk-pagination.mjs.map +1 -1
- package/fesm2022/ngbase-adk-popover.mjs +434 -556
- package/fesm2022/ngbase-adk-popover.mjs.map +1 -1
- package/fesm2022/ngbase-adk-portal.mjs +5 -10
- package/fesm2022/ngbase-adk-portal.mjs.map +1 -1
- package/fesm2022/ngbase-adk-radio.mjs +8 -19
- package/fesm2022/ngbase-adk-radio.mjs.map +1 -1
- package/fesm2022/ngbase-adk-resizable.mjs +10 -43
- package/fesm2022/ngbase-adk-resizable.mjs.map +1 -1
- package/fesm2022/ngbase-adk-select.mjs +87 -185
- package/fesm2022/ngbase-adk-select.mjs.map +1 -1
- package/fesm2022/ngbase-adk-sheet.mjs +95 -0
- package/fesm2022/ngbase-adk-sheet.mjs.map +1 -0
- package/fesm2022/ngbase-adk-sidenav.mjs +2 -2
- package/fesm2022/ngbase-adk-sidenav.mjs.map +1 -1
- package/fesm2022/ngbase-adk-slider.mjs +12 -23
- package/fesm2022/ngbase-adk-slider.mjs.map +1 -1
- package/fesm2022/ngbase-adk-sonner.mjs +13 -63
- package/fesm2022/ngbase-adk-sonner.mjs.map +1 -1
- package/fesm2022/ngbase-adk-stepper.mjs +16 -114
- package/fesm2022/ngbase-adk-stepper.mjs.map +1 -1
- package/fesm2022/ngbase-adk-switch.mjs +2 -2
- package/fesm2022/ngbase-adk-switch.mjs.map +1 -1
- package/fesm2022/ngbase-adk-table.mjs +17 -35
- package/fesm2022/ngbase-adk-table.mjs.map +1 -1
- package/fesm2022/ngbase-adk-tabs.mjs +14 -94
- package/fesm2022/ngbase-adk-tabs.mjs.map +1 -1
- package/fesm2022/ngbase-adk-test.mjs +11 -1
- package/fesm2022/ngbase-adk-test.mjs.map +1 -1
- package/fesm2022/ngbase-adk-tooltip.mjs +49 -39
- package/fesm2022/ngbase-adk-tooltip.mjs.map +1 -1
- package/fesm2022/ngbase-adk-tour.mjs +3 -3
- package/fesm2022/ngbase-adk-tour.mjs.map +1 -1
- package/fesm2022/ngbase-adk-tree.mjs +11 -43
- package/fesm2022/ngbase-adk-tree.mjs.map +1 -1
- package/fesm2022/ngbase-adk-utils.mjs +12 -9
- package/fesm2022/ngbase-adk-utils.mjs.map +1 -1
- package/form-field/public-api.d.ts +0 -1
- package/mask/mask.d.ts +1 -2
- package/menu/menu-trigger.d.ts +3 -3
- package/menu/menu.d.ts +13 -7
- package/otp/index.d.ts +5 -0
- package/{form-field → otp}/otp.d.ts +1 -1
- package/otp/public-api.d.ts +1 -0
- package/package.json +27 -19
- package/pagination/pagination.d.ts +7 -3
- package/popover/base-popover.service.d.ts +1 -1
- package/popover/popover-arrow.ng.d.ts +34 -0
- package/popover/popover.d.ts +17 -7
- package/popover/popover.service.d.ts +5 -4
- package/popover/public-api.d.ts +1 -0
- package/popover/utils.d.ts +32 -48
- package/portal/dialog-ref.d.ts +0 -1
- package/portal/portal-base.service.d.ts +3 -3
- package/portal/portal-close.directive.d.ts +3 -2
- package/radio/radio.d.ts +5 -1
- package/resizable/resizable-group.d.ts +2 -2
- package/resizable/resizable.d.ts +2 -2
- package/select/option-group.d.ts +3 -3
- package/select/option.d.ts +1 -1
- package/select/select-base.d.ts +8 -6
- package/select/select.d.ts +6 -3
- package/sheet/index.d.ts +5 -0
- package/sheet/public-api.d.ts +2 -0
- package/sheet/sheet.d.ts +26 -0
- package/sheet/sheet.service.d.ts +13 -0
- package/sidenav/public-api.d.ts +1 -1
- package/sidenav/sidenav.d.ts +1 -1
- package/slider/public-api.d.ts +1 -1
- package/slider/slider.d.ts +6 -5
- package/sonner/sonner.d.ts +2 -1
- package/stepper/animation.d.ts +1 -1
- package/stepper/step.d.ts +1 -1
- package/stepper/stepper.d.ts +2 -2
- package/switch/switch.d.ts +1 -1
- package/table/body-row.d.ts +3 -3
- package/table/head-row.d.ts +3 -3
- package/table/table.d.ts +3 -3
- package/tabs/tab-group.d.ts +4 -4
- package/tabs/tab.d.ts +2 -2
- package/test/utils.d.ts +19 -3
- package/tooltip/public-api.d.ts +1 -1
- package/tooltip/tooltip.d.ts +5 -1
- package/tooltip/tooltip.directive.d.ts +1 -1
- package/tooltip/tooltip.service.d.ts +4 -2
- package/tour/tour.service.d.ts +3 -4
- package/tree/public-api.d.ts +2 -2
- package/tree/tree-node.d.ts +2 -2
- package/tree/tree.d.ts +2 -2
- package/utils/utils.d.ts +5 -4
- package/schematics/collection.json +0 -15
- package/schematics/components/files/accordion/accordion.ts.template +0 -55
- package/schematics/components/files/accordion/index.ts.template +0 -5
- package/schematics/components/files/alert/alert.ts.template +0 -62
- package/schematics/components/files/alert/index.ts.template +0 -1
- package/schematics/components/files/autocomplete/autocomplete.ts.template +0 -48
- package/schematics/components/files/autocomplete/index.ts.template +0 -5
- package/schematics/components/files/avatar/avatar.ts.template +0 -31
- package/schematics/components/files/avatar/index.ts.template +0 -1
- package/schematics/components/files/badge/badge.ts.template +0 -11
- package/schematics/components/files/badge/index.ts.template +0 -1
- package/schematics/components/files/breadcrumb/breadcrumb.ts.template +0 -49
- package/schematics/components/files/breadcrumb/index.ts.template +0 -1
- package/schematics/components/files/button/button.ts.template +0 -29
- package/schematics/components/files/button/index.ts.template +0 -5
- package/schematics/components/files/card/card.ts.template +0 -11
- package/schematics/components/files/card/index.ts.template +0 -5
- package/schematics/components/files/carousel/carousel.ts.template +0 -44
- package/schematics/components/files/carousel/index.ts.template +0 -1
- package/schematics/components/files/checkbox/checkbox.ts.template +0 -46
- package/schematics/components/files/checkbox/focus-style.directive.ts.template +0 -12
- package/schematics/components/files/checkbox/index.ts.template +0 -6
- package/schematics/components/files/chip/chip.ts.template +0 -36
- package/schematics/components/files/chip/index.ts.template +0 -1
- package/schematics/components/files/color-picker/color-picker.ts.template +0 -104
- package/schematics/components/files/color-picker/index.ts.template +0 -5
- package/schematics/components/files/command/command.ts.template +0 -82
- package/schematics/components/files/command/index.ts.template +0 -1
- package/schematics/components/files/datepicker/calendar.ts.template +0 -117
- package/schematics/components/files/datepicker/datepicker-trigger.ts.template +0 -27
- package/schematics/components/files/datepicker/datepicker.ts.template +0 -28
- package/schematics/components/files/datepicker/index.ts.template +0 -3
- package/schematics/components/files/datepicker/time.ts.template +0 -46
- package/schematics/components/files/dialog/dialog.ts.template +0 -89
- package/schematics/components/files/dialog/index.ts.template +0 -5
- package/schematics/components/files/drawer/drawer.ts.template +0 -104
- package/schematics/components/files/drawer/index.ts.template +0 -5
- package/schematics/components/files/form-field/index.ts.template +0 -7
- package/schematics/components/files/form-field/input-style.directive.ts.template +0 -11
- package/schematics/components/files/form-field/input.ts.template +0 -100
- package/schematics/components/files/form-field/otp.ts.template +0 -37
- package/schematics/components/files/hover-card/hover-card.ts.template +0 -13
- package/schematics/components/files/hover-card/index.ts.template +0 -5
- package/schematics/components/files/icon/icon.ts.template +0 -16
- package/schematics/components/files/icon/index.ts.template +0 -1
- package/schematics/components/files/inline-edit/index.ts.template +0 -1
- package/schematics/components/files/inline-edit/inline-edit.ts.template +0 -24
- package/schematics/components/files/keys/index.ts.template +0 -5
- package/schematics/components/files/keys/key.ts.template +0 -35
- package/schematics/components/files/list/index.ts.template +0 -5
- package/schematics/components/files/list/list.ts.template +0 -28
- package/schematics/components/files/mask/index.ts.template +0 -1
- package/schematics/components/files/mask/mask.ts.template +0 -8
- package/schematics/components/files/menu/context-menu.ts.template +0 -14
- package/schematics/components/files/menu/index.ts.template +0 -8
- package/schematics/components/files/menu/mention.ts.template +0 -14
- package/schematics/components/files/menu/menu.ts.template +0 -37
- package/schematics/components/files/menu/navigation-menu.ts.template +0 -8
- package/schematics/components/files/pagination/index.ts.template +0 -1
- package/schematics/components/files/pagination/pagination.ts.template +0 -71
- package/schematics/components/files/picasa/index.ts.template +0 -1
- package/schematics/components/files/picasa/picasa-base.component.ts.template +0 -80
- package/schematics/components/files/picasa/picasa.component.ts.template +0 -57
- package/schematics/components/files/picasa/picasa.directive.ts.template +0 -41
- package/schematics/components/files/picasa/picase.service.ts.template +0 -24
- package/schematics/components/files/popover/index.ts.template +0 -1
- package/schematics/components/files/popover/popover.ts.template +0 -87
- package/schematics/components/files/progress/index.ts.template +0 -5
- package/schematics/components/files/progress/progress.ts.template +0 -14
- package/schematics/components/files/radio/index.ts.template +0 -5
- package/schematics/components/files/radio/radio.ts.template +0 -40
- package/schematics/components/files/resizable/index.ts.template +0 -5
- package/schematics/components/files/resizable/resizable.ts.template +0 -56
- package/schematics/components/files/scroll-area/index.ts.template +0 -1
- package/schematics/components/files/scroll-area/scroll-area.ts.template +0 -40
- package/schematics/components/files/select/index.ts.template +0 -8
- package/schematics/components/files/select/list-selection.ts.template +0 -15
- package/schematics/components/files/select/option.ts.template +0 -34
- package/schematics/components/files/select/select-input.ts.template +0 -21
- package/schematics/components/files/select/select.ts.template +0 -96
- package/schematics/components/files/selectable/index.ts.template +0 -1
- package/schematics/components/files/selectable/selectable.ts.template +0 -34
- package/schematics/components/files/separator/index.ts.template +0 -5
- package/schematics/components/files/separator/separator.ts.template +0 -19
- package/schematics/components/files/sheet/index.ts.template +0 -5
- package/schematics/components/files/sheet/sheet.ts.template +0 -134
- package/schematics/components/files/sidenav/index.ts.template +0 -1
- package/schematics/components/files/sidenav/sidenav.ts.template +0 -48
- package/schematics/components/files/skeleton/index.ts.template +0 -1
- package/schematics/components/files/skeleton/skeleton.ts.template +0 -15
- package/schematics/components/files/slider/index.ts.template +0 -5
- package/schematics/components/files/slider/slider.ts.template +0 -42
- package/schematics/components/files/sonner/index.ts.template +0 -5
- package/schematics/components/files/sonner/sonner.ts.template +0 -58
- package/schematics/components/files/spinner/index.ts.template +0 -1
- package/schematics/components/files/spinner/spinner.ts.template +0 -79
- package/schematics/components/files/stepper/index.ts.template +0 -1
- package/schematics/components/files/stepper/stepper.ts.template +0 -88
- package/schematics/components/files/switch/index.ts.template +0 -5
- package/schematics/components/files/switch/switch.ts.template +0 -29
- package/schematics/components/files/table/body-cell.ts.template +0 -19
- package/schematics/components/files/table/body-row.ts.template +0 -21
- package/schematics/components/files/table/column.ts.template +0 -8
- package/schematics/components/files/table/head-cell.ts.template +0 -19
- package/schematics/components/files/table/head-row.ts.template +0 -27
- package/schematics/components/files/table/index.ts.template +0 -26
- package/schematics/components/files/table/table.ts.template +0 -20
- package/schematics/components/files/tabs/index.ts.template +0 -5
- package/schematics/components/files/tabs/tab.ts.template +0 -89
- package/schematics/components/files/theme/index.ts.template +0 -2
- package/schematics/components/files/theme/theme-button.component.ts.template +0 -26
- package/schematics/components/files/theme/theme.component.ts.template +0 -165
- package/schematics/components/files/theme/theme.service.ts.template +0 -44
- package/schematics/components/files/toggle/index.ts.template +0 -5
- package/schematics/components/files/toggle/toggle.ts.template +0 -13
- package/schematics/components/files/toggle-group/index.ts.template +0 -5
- package/schematics/components/files/toggle-group/toggle-group.ts.template +0 -25
- package/schematics/components/files/tooltip/index.ts.template +0 -5
- package/schematics/components/files/tooltip/tooltip.ts.template +0 -40
- package/schematics/components/files/tour/index.ts.template +0 -3
- package/schematics/components/files/tour/tour-step.ts.template +0 -8
- package/schematics/components/files/tour/tour.service.ts.template +0 -7
- package/schematics/components/files/tour/tour.ts.template +0 -8
- package/schematics/components/files/tree/index.ts.template +0 -1
- package/schematics/components/files/tree/tree.ts.template +0 -66
- package/schematics/components/index.d.ts +0 -3
- package/schematics/components/index.js +0 -17
- package/schematics/components/index.js.map +0 -1
- package/schematics/components/index.ts +0 -29
- package/schematics/components/schema.d.ts +0 -6
- package/schematics/components/schema.js +0 -3
- package/schematics/components/schema.js.map +0 -1
- package/schematics/components/schema.json +0 -137
- package/schematics/components/schema.ts +0 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngbase-adk-popover.mjs","sources":["../../../projects/adk/popover/base-popover.service.ts","../../../projects/adk/popover/utils.ts","../../../projects/adk/popover/popover.ts","../../../projects/adk/popover/popover.service.ts","../../../projects/adk/popover/popover-trigger.ts","../../../projects/adk/popover/public-api.ts","../../../projects/adk/popover/ngbase-adk-popover.ts"],"sourcesContent":["import { Type } from '@angular/core';\nimport { basePortal, DialogInput } from '@ngbase/adk/portal';\nimport { NgbPopover } from './popover';\nimport { PopoverOptions } from './popover.service';\n\nexport function basePopoverPortal<T>(component: Type<T>) {\n const NAME = 'popover';\n const base = basePortal(NAME, component);\n\n function open<T>(component: DialogInput<T>, options: PopoverOptions) {\n const { diaRef, parent, replace, childSignal } = base.open(\n component,\n (comp, opt) => {\n const compInst = comp.instance as NgbPopover;\n compInst.setOptions(opt as PopoverOptions);\n },\n options,\n );\n\n return {\n diaRef,\n events: (parent.instance as NgbPopover).events,\n parent: parent.instance,\n replace,\n childSignal,\n };\n }\n\n function closeAll() {\n base.closeAll();\n }\n return { open, closeAll };\n}\n","import { PopoverOptions, PopoverPosition } from './popover.service';\n\nconst positionSwap: Record<PopoverPosition, PopoverPosition> = {\n top: 'bottom',\n bottom: 'top',\n left: 'right',\n right: 'left',\n tl: 'bl',\n tr: 'br',\n bl: 'tl',\n br: 'tr',\n};\n\nexport interface Rect {\n top: number;\n left: number;\n width: number;\n height: number;\n}\n\nexport enum Position {\n Top = 'top',\n Bottom = 'bottom',\n Left = 'left',\n Right = 'right',\n TopLeft = 'tl',\n TopRight = 'tr',\n BottomLeft = 'bl',\n BottomRight = 'br',\n}\nexport interface ConfigObj {\n top: number;\n left: number;\n width: number;\n height: number;\n elWidth: number;\n elHeight: number;\n offset: number;\n priority: PopoverPosition;\n position: PopoverPosition;\n windowWidth: number;\n windowHeight: number;\n scrollWidth: number;\n}\n\nexport interface OverflowData {\n top: boolean;\n bottom: boolean;\n left: boolean;\n right: boolean;\n leftSide: boolean;\n rightSide: boolean;\n any: boolean;\n preferredHorizontal: 'left' | 'right' | undefined;\n preferredVertical: 'top' | 'bottom' | undefined;\n overflowAmount: {\n top: number;\n bottom: number;\n left: number;\n right: number;\n leftSide: number;\n rightSide: number;\n };\n}\n// Enums and Interfaces\n\nexport interface PositionResult {\n top: number;\n left: number;\n bottom?: number;\n right?: number;\n position: Position;\n maxHeight?: number;\n maxWidth?: number;\n}\n\nexport class PopoverPositioner {\n private overflow!: OverflowData;\n private elRect!: Rect;\n private offset = this.config.offset || 5;\n constructor(\n private config: PopoverOptions,\n private windowDimensions: { width: number; height: number },\n private scrollWidth: number,\n ) {}\n\n public calculatePosition(): PositionResult {\n const targetRect = this.getTargetRect();\n const elRect = this.getElementRect();\n this.elRect = elRect;\n const initialPosition = this.getInitialPosition(\n targetRect,\n elRect,\n (this.config.position as Position) || Position.Bottom,\n );\n const adjustedPosition = this.adjustForOverflow(initialPosition, targetRect, elRect);\n return this.finalizePosition(adjustedPosition, elRect);\n }\n\n private getTargetRect(): Rect {\n if (this.config.client) {\n const { x, y, w, h } = this.config.client;\n return { top: y, left: x, width: w, height: h };\n }\n const { top, left, width, height } = this.config.target.getBoundingClientRect();\n // return { top, left, width, height: Math.min(height, this.windowDimensions.height - top) };\n return { top, left, width, height };\n }\n\n private getElementRect(): Rect {\n const el = this.config.el!;\n return {\n top: 0,\n left: 0,\n width: el.clientWidth,\n height: el.clientHeight,\n };\n }\n\n private getInitialPosition(targetRect: Rect, elRect: Rect, position: Position): PositionResult {\n const coords = this.getCoordinatesForPosition(position, targetRect, elRect, this.offset);\n // coords.left = Math.max(0, coords.left);\n // coords.top = Math.max(0, coords.top);\n return { ...coords, position };\n }\n\n private getCoordinatesForPosition(\n position: Position,\n targetRect: Rect,\n elRect: Rect,\n offset: number,\n ): { top: number; left: number } {\n switch (position) {\n case Position.Top:\n return {\n top: targetRect.top - elRect.height - offset,\n left: targetRect.left + (targetRect.width - elRect.width) / 2,\n };\n case Position.Bottom:\n return {\n top: targetRect.top + targetRect.height + offset,\n left: targetRect.left + (targetRect.width - elRect.width) / 2,\n };\n case Position.Left:\n return { top: targetRect.top, left: targetRect.left - elRect.width - offset };\n case Position.Right:\n return { top: targetRect.top, left: targetRect.left + targetRect.width + offset };\n case Position.TopLeft:\n return { top: targetRect.top - elRect.height - offset, left: targetRect.left };\n case Position.TopRight:\n return {\n top: targetRect.top - elRect.height - offset,\n left: targetRect.left - (elRect.width - targetRect.width),\n };\n case Position.BottomLeft:\n return { top: targetRect.top + targetRect.height + offset, left: targetRect.left };\n case Position.BottomRight:\n return {\n top: targetRect.top + targetRect.height + offset,\n left: targetRect.left - (elRect.width - targetRect.width),\n };\n }\n }\n\n private adjustForOverflow(\n position: PositionResult,\n targetRect: Rect,\n elRect: Rect,\n ): PositionResult {\n const overflow = this.checkOverflow(position, elRect, targetRect);\n this.overflow = overflow;\n if (overflow.any) {\n const newPosition = this.getAlternativePosition(position.position, overflow);\n return this.getInitialPosition(targetRect, elRect, newPosition);\n }\n return position;\n }\n\n private checkOverflow(position: PositionResult, elRect: Rect, targetRect: Rect): OverflowData {\n // Calculate available space on all sides\n const topSpace = position.top;\n const bottomSpace = this.windowDimensions.height - position.top;\n const leftSpace = position.left;\n const rightSpace = this.windowDimensions.width - position.left;\n // Calculate overflow amounts (negative means no overflow)\n const topOverflow = -(targetRect.top - elRect.height);\n const bottomOverflow =\n targetRect.top + targetRect.height + elRect.height - this.windowDimensions.height;\n // const leftOverflow = -(position.left - (elRect.width - targetRect.width));\n const leftOverflow = -(targetRect.left + targetRect.width - elRect.width);\n const leftSideOverflow = -(targetRect.left - elRect.width);\n const rightOverflow = targetRect.left + elRect.width - this.windowDimensions.width;\n const rightSideOverflow = -(targetRect.left + targetRect.width - elRect.width);\n\n const isTop = topOverflow > 0;\n const isBottom = bottomOverflow > 0;\n const isLeft = leftOverflow > 0;\n const isRight = rightOverflow > 0;\n const isLeftSide = leftSideOverflow > 0;\n const isRightSide = rightSideOverflow > 0;\n\n let preferredHorizontal: 'left' | 'right' | undefined;\n let preferredVertical: 'top' | 'bottom' | undefined;\n // If both left and right overflow, determine which side has more space\n if (isLeft || isRight) {\n preferredHorizontal = leftOverflow > rightOverflow ? 'right' : 'left';\n } else if (isLeftSide || isRightSide) {\n preferredHorizontal = leftSideOverflow > rightSideOverflow ? 'right' : 'left';\n }\n\n // If both top and bottom overflow, determine which side has more space\n if (isTop || isBottom) {\n preferredVertical = topOverflow > bottomOverflow ? 'bottom' : 'top';\n }\n return {\n top: isTop,\n bottom: isBottom,\n left: isLeft,\n right: isRight,\n leftSide: isLeftSide,\n rightSide: isRightSide,\n any: isTop || isBottom || isLeft || isRight || isLeftSide || isRightSide,\n preferredHorizontal,\n preferredVertical,\n overflowAmount: {\n top: topOverflow,\n bottom: bottomOverflow,\n left: leftOverflow,\n right: rightOverflow,\n leftSide: leftSideOverflow,\n rightSide: rightSideOverflow,\n },\n };\n }\n\n getAlternativePosition(position: Position, overflow: OverflowData): Position {\n // if (overflow.top) {\n // if (position === Position.Top) {\n // return Position.Bottom;\n // }\n // }\n // if (\n // (overflow.preferredVertical === 'top' || !overflow.bottom) &&\n // (overflow.preferredHorizontal === 'left' || !overflow.right)\n // ) {\n // return Position.BottomRight;\n // }\n // if (\n // (overflow.preferredVertical === 'top' || !overflow.bottom) &&\n // (overflow.preferredHorizontal === 'right' || !overflow.left)\n // ) {\n // return Position.BottomLeft;\n // }\n // if (\n // (overflow.preferredVertical === 'bottom' || !overflow.top) &&\n // (overflow.preferredHorizontal === 'left' || !overflow.right)\n // ) {\n // return Position.TopRight;\n // }\n // if (\n // (overflow.preferredVertical === 'bottom' || !overflow.top) &&\n // (overflow.preferredHorizontal === 'right' || !overflow.left)\n // ) {\n // return Position.TopLeft;\n // }\n // if (overflow.bottom) {\n // if (position.includes('bottom')) {\n // return positionSwap[position] as Position;\n // } else if (position.includes('bl') && overflow.preferredVertical === 'top') {\n // return overflow.right && overflow.preferredHorizontal !== 'right'\n // ? Position.TopRight\n // : Position.TopLeft;\n // } else if (position.includes('bl') && overflow.preferredVertical === 'bottom') {\n // return overflow.right && overflow.preferredHorizontal !== 'right'\n // ? Position.BottomRight\n // : Position.BottomLeft;\n // }\n // }\n // if (overflow.left) {\n // if (position === Position.Left) {\n // return Position.Right;\n // }\n // if (overflow.preferredHorizontal === 'left' || !overflow.right) {\n // return overflow.bottom ? Position.TopLeft : Position.BottomLeft;\n // }\n // if (overflow.preferredHorizontal === 'right') {\n // return overflow.bottom ? Position.TopRight : Position.BottomRight;\n // }\n // }\n // if (overflow.right) {\n // if (position.includes('right')) {\n // return !overflow.left\n // ? Position.Left\n // : overflow.bottom && !overflow.left\n // ? (positionSwap[position] as Position)\n // : overflow.left && overflow.bottom\n // ? Position.Top\n // : Position.BottomRight;\n // } else if (position.includes('bl')) {\n // return overflow.bottom ? Position.TopRight : Position.BottomRight;\n // }\n // }\n // return position;\n if (!overflow.any) {\n return position;\n }\n\n // Simple mapping for opposite positions\n const opposites = {\n [Position.Top]: Position.Bottom,\n [Position.Bottom]: Position.Top,\n [Position.Left]: Position.Right,\n [Position.Right]: Position.Left,\n [Position.TopLeft]: Position.BottomRight,\n [Position.TopRight]: Position.BottomLeft,\n [Position.BottomLeft]: Position.TopRight,\n [Position.BottomRight]: Position.TopLeft,\n };\n\n // For cardinal positions (Top, Bottom, Left, Right)\n if ([Position.Top, Position.Bottom].includes(position)) {\n return (overflow.preferredVertical as any) || opposites[position];\n }\n\n if ([Position.Left, Position.Right].includes(position)) {\n return (overflow.preferredHorizontal as any) || opposites[position];\n }\n\n // For corner positions\n const isTop = position.includes('t');\n const isLeft = position.includes('l');\n\n const vertical = overflow.preferredVertical === 'top' ? 't' : 'b';\n const horizontal = overflow.preferredHorizontal === 'left' ? 'r' : 'l';\n\n // If current position overflows, use the preferred directions\n if (\n (isTop && overflow.top) ||\n (!isTop && overflow.bottom) ||\n (isLeft && overflow.left) ||\n (!isLeft && overflow.right) ||\n (horizontal === 'r' && overflow.right) ||\n (horizontal === 'l' && overflow.left)\n ) {\n switch (vertical + horizontal) {\n case 'tl':\n return Position.TopLeft;\n case 'tr':\n return Position.TopRight;\n case 'bl':\n return Position.BottomLeft;\n case 'br':\n return Position.BottomRight;\n default:\n return opposites[position];\n }\n }\n\n return position;\n }\n\n private finalizePosition(position: PositionResult, elRect: Rect): PositionResult {\n const { top, left } = position;\n const bottom = position.position.startsWith('t')\n ? this.windowDimensions.height - (top + elRect.height)\n : undefined;\n // this is required if tooltip is going outside of the screen horizontally\n // this has to be done only if the position is top or bottom\n let right: number | undefined;\n right =\n left + elRect.width > this.windowDimensions.width\n ? 0\n : position.position.endsWith('r')\n ? this.windowDimensions.width - (left + elRect.width) - this.scrollWidth\n : undefined;\n\n let overallOffset = this.getOverallOffset(position);\n let maxHeight: number | undefined;\n if (\n position.position.startsWith('t') &&\n this.overflow.overflowAmount.top > -overallOffset.vertical\n ) {\n maxHeight = this.elRect.height - this.overflow.overflowAmount.top - overallOffset.vertical;\n } else if (\n position.position.startsWith('b') &&\n this.overflow.overflowAmount.bottom > -overallOffset.vertical\n ) {\n maxHeight = this.elRect.height - this.overflow.overflowAmount.bottom - overallOffset.vertical;\n }\n\n let maxWidth: number | undefined;\n if (\n position.position.endsWith('l') &&\n this.overflow.overflowAmount.right > -overallOffset.horizontal\n ) {\n maxWidth = this.elRect.width - this.overflow.overflowAmount.right - overallOffset.horizontal;\n } else if (\n position.position.endsWith('r') &&\n this.overflow.overflowAmount.left > -overallOffset.horizontal\n ) {\n maxWidth = this.elRect.width - this.overflow.overflowAmount.left - overallOffset.horizontal;\n }\n return {\n // top: Math.max(0, Math.min(top, this.windowDimensions.height - (maxHeight || elRect.height))),\n top: Math.max(0, top),\n bottom,\n left: right ? 0 : Math.max(overallOffset.horizontal, left),\n right: right ? Math.max(overallOffset.horizontal, right) : undefined,\n position: position.position,\n maxHeight,\n maxWidth,\n };\n }\n\n private getOverallOffset(position: PositionResult) {\n const overallOffset = this.config.sideOffset ?? 0;\n const isHorizontal = position.position === 'left' || position.position === 'right';\n return {\n horizontal: overallOffset + (isHorizontal ? this.offset : 0),\n vertical: overallOffset + (isHorizontal ? 0 : this.offset),\n };\n }\n}\n\n// Main function to use the class\nexport function tooltipPosition(\n config: PopoverOptions,\n windowDimensions = {\n width: window.innerWidth,\n height: window.innerHeight,\n },\n scrollWidth = window.innerWidth - document.documentElement.clientWidth,\n): PositionResult {\n const positioner = new PopoverPositioner(config, windowDimensions, scrollWidth);\n return positioner.calculatePosition();\n}\n\n// export function tooltipPosition(config: OverlayConfig): {\n// top: number;\n// left: number;\n// bottom?: number;\n// right?: number;\n// position: DialogPosition;\n// } {\n// const { target, el, position: priority = 'bottom', offset = 5, client: clientXY = null } = config;\n// let position: DialogPosition = priority;\n// let { top, left, width, height } = target.getBoundingClientRect();\n// if (clientXY) {\n// top = clientXY.y;\n// left = clientXY.x;\n// width = clientXY.w;\n// height = clientXY.h;\n// }\n// const { clientWidth: elWidth, clientHeight: elHeight } = el!;\n\n// // we need to check whether the height of the target element is greater than the height then we need to adjust the height\n// if (height > window.innerHeight) {\n// height = window.innerHeight - top;\n// }\n\n// return tooltipPositionInternal({\n// top,\n// left,\n// width,\n// height,\n// elWidth,\n// elHeight,\n// offset,\n// priority,\n// position,\n// windowWidth: window.innerWidth,\n// windowHeight: window.innerHeight,\n// scrollWidth: window.innerWidth - document.documentElement.clientWidth,\n// });\n// }\n\n// export function tooltipPositionInternal(data: ConfigObj): {\n// top: number;\n// bottom?: number;\n// left: number;\n// right?: number;\n// position: DialogPosition;\n// } {\n// let { elHeight, position, windowHeight, windowWidth, offset, elWidth, scrollWidth } = data;\n\n// position = positionSwapBasedOnOverflow(data);\n\n// let { top: topPos, left: leftPos } = getTooltipCoordinates(position, data);\n\n// if (topPos <= 0) {\n// topPos = offset;\n// } else if (topPos + elHeight > windowHeight) {\n// topPos = windowHeight - elHeight - offset;\n// } else if (leftPos < 0) {\n// leftPos = 0;\n// }\n\n// const bottomPos = position.startsWith('t') ? windowHeight - (topPos + elHeight) : undefined;\n// const rightPos =\n// leftPos + elWidth > windowWidth\n// ? 0\n// : position.endsWith('r')\n// ? windowWidth - (leftPos + elWidth) - scrollWidth\n// : undefined;\n\n// return {\n// top: topPos,\n// bottom: bottomPos,\n// left: rightPos ? 0 : leftPos,\n// position,\n// right: rightPos,\n// };\n// }\n\n// function getTooltipCoordinates(\n// position: DialogPosition,\n// data: ConfigObj,\n// ): { top: number; left: number } {\n// const { top, left, width, height, elWidth, elHeight, offset } = data;\n// switch (position) {\n// case 'top':\n// return {\n// top: top - elHeight - offset,\n// left: left + (width - elWidth) / 2,\n// };\n// case 'bottom':\n// return { top: top + height + offset, left: left + (width - elWidth) / 2 };\n// case 'left':\n// return { top, left: left - elWidth - offset };\n// case 'right':\n// return { top, left: left + width + offset };\n// case 'tl':\n// return { top: top - elHeight - offset, left };\n// case 'tr':\n// return { top: top - elHeight - offset, left: left - (elWidth - width) };\n// case 'bl':\n// return { top: top + height + offset, left };\n// case 'br':\n// return { top: top + height + offset, left: left - (elWidth - width) };\n// default:\n// return {\n// top: top - elHeight - offset,\n// left: left + (width - elWidth) / 2,\n// };\n// }\n// }\n\n// // function to check the overflow sides for target and element\n// export function checkOverflow(data: ConfigObj) {\n// const isTop = data.top - data.elHeight < 0;\n// const isBottom = data.top + data.height + data.elHeight > data.windowHeight;\n// const isLeft = data.left - data.elWidth < 0;\n// const isRight = data.left + data.width + data.elWidth > data.windowWidth;\n\n// return { top: isTop, bottom: isBottom, left: isLeft, right: isRight };\n// }\n\n// // position swap based on the overflow and priority\n// function positionSwapBasedOnOverflow(data: ConfigObj): DialogPosition {\n// const {\n// bottom: bottomOverflow,\n// left: leftOverflow,\n// right: rightOverflow,\n// top: topOverflow,\n// } = checkOverflow(data);\n// const { priority } = data;\n\n// let position = priority;\n// if (topOverflow) {\n// if (position.includes('top')) {\n// position = positionSwap[position];\n// }\n// }\n// if (bottomOverflow) {\n// if (position.includes('bottom')) {\n// position = positionSwap[position];\n// } else if (position.includes('bl')) {\n// position = rightOverflow ? 'tr' : 'tl';\n// }\n// }\n// if (leftOverflow) {\n// if (position.includes('left')) {\n// position = positionSwap[position];\n// }\n// }\n// if (rightOverflow) {\n// if (position.includes('right')) {\n// position = !leftOverflow\n// ? 'left'\n// : bottomOverflow && !leftOverflow\n// ? positionSwap[position]\n// : leftOverflow && bottomOverflow\n// ? 'top'\n// : 'br';\n// } else if (position.includes('bl')) {\n// position = bottomOverflow ? 'tr' : 'br';\n// }\n// }\n// return position;\n// }\n","import { animate, state, style, transition, trigger } from '@angular/animations';\nimport {\n ChangeDetectionStrategy,\n Component,\n Directive,\n ElementRef,\n ViewContainerRef,\n afterNextRender,\n effect,\n inject,\n linkedSignal,\n signal,\n viewChild,\n} from '@angular/core';\nimport { FocusTrap } from '@ngbase/adk/a11y';\nimport { BaseDialog, NgbPortalClose } from '@ngbase/adk/portal';\nimport { createHostAnimation, disposals } from '@ngbase/adk/utils';\nimport { EMPTY, Observable, fromEvent, map, startWith, switchMap } from 'rxjs';\nimport { PopoverOptions, PopoverPosition } from './popover.service';\nimport { tooltipPosition } from './utils';\n\n@Directive({\n selector: '[ngbPopoverBackdrop]',\n hostDirectives: [FocusTrap],\n host: {\n '[style.clipPath]': 'popover.options().clipPath?.()',\n '[class]': 'popover.options().backdropClassName',\n '(click)': '!popover.options().disableClose && popover.close()',\n },\n})\nexport class NgbPopoverBackdrop {\n readonly popover = inject(NgbPopover);\n readonly focusTrap = inject(FocusTrap);\n\n constructor() {\n this.focusTrap._focusTrap = linkedSignal(() => this.popover.options().focusTrap ?? true);\n }\n}\n\n@Directive({\n selector: '[ngbPopoverMain]',\n host: {\n '[class]': 'popover.options().className',\n },\n})\nexport class NgbPopoverMain {\n readonly popover = inject(NgbPopover);\n}\n\n@Component({\n selector: 'ngb-popover',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgbPopoverBackdrop, NgbPopoverMain],\n template: ` <style>\n .popover-anchor {\n --action-angle: 180deg;\n --action-left: 50%;\n --action-top: -1rem;\n }\n .popover-anchor::before {\n content: '';\n position: absolute;\n width: 0;\n height: 0;\n border-style: solid;\n border-top: 0.8rem solid;\n @apply border-foreground;\n border-left: 0.5rem solid transparent;\n border-right: 0.5rem solid transparent;\n top: var(--action-top);\n left: var(--action-left);\n transform: translateX(-50%) rotate(var(--action-angle, 180deg));\n }\n </style>\n <div\n ngbPopoverMain\n [@slideInOutAnimation]\n class=\"{{\n 'menu-container pointer-events-auto fixed z-10 flex flex-col rounded-lg border bg-foreground shadow-md ' +\n (options().anchor ? 'popover-anchor ' : 'overflow-auto ')\n }}\"\n >\n <div class=\"flex flex-1 flex-col overflow-auto\">\n <ng-container #myDialog />\n </div>\n </div>\n @if (options().backdrop) {\n <div\n ngbPopoverBackdrop\n class=\"popover-backdrop pointer-events-auto fixed top-0 h-full w-full\"\n ></div>\n }`,\n host: {\n class:\n 'fixed top-0 left-0 w-full h-full pointer-events-none z-p flex items-center justify-center',\n '[@parentAnimation]': '',\n '(@parentAnimation.done)': 'animationDone()',\n },\n animations: [\n createHostAnimation(['@slideInOutAnimation']),\n trigger('slideInOutAnimation', [\n state('1', style({ transform: 'none', opacity: 1 })),\n state('void', style({ transform: 'translateY(-10px) scale(0.95)', opacity: 0 })),\n state('0', style({ transform: 'translateY(-10px) scale(0.95)', opacity: 0 })),\n transition('* => *', animate('100ms ease-out')),\n ]),\n ],\n})\nexport class NgbPopover extends BaseDialog {\n private readonly disposals = disposals();\n\n readonly myDialog = viewChild.required('myDialog', { read: ViewContainerRef });\n readonly container = viewChild.required<NgbPopoverMain, ElementRef<HTMLElement>>(NgbPopoverMain, {\n read: ElementRef,\n });\n readonly backdropElement = viewChild<NgbPopoverBackdrop, ElementRef<HTMLElement>>(\n NgbPopoverBackdrop,\n { read: ElementRef },\n );\n\n readonly options = signal<PopoverOptions>({} as PopoverOptions);\n private lastPosition: PopoverPosition = 'top';\n readonly scrolled = signal(0);\n\n readonly events: Observable<{ type: string; value: any }> = this._afterViewSource.pipe(\n switchMap(e => {\n const el = this.container()!.nativeElement;\n const mouseenter = fromEvent(el, 'mouseenter');\n const mouseleave = fromEvent(el, 'mouseleave');\n const event = mouseenter.pipe(\n switchMap(e =>\n mouseleave.pipe(\n map(x => ({ type: 'mouseleave', value: x })),\n startWith({ type: 'mouseenter', value: e }),\n ),\n ),\n );\n return e ? event : EMPTY;\n }),\n );\n\n constructor() {\n super();\n\n const dialog = effect(() => {\n this._afterViewSource.next(this.myDialog()!);\n dialog.destroy();\n });\n\n effect(cleanup => {\n const el = this.container()!.nativeElement;\n const options = this.options();\n const target = this.getTarget();\n if (options.anchor) {\n options.offset = 16;\n }\n this.lastPosition = options.position || 'bottom';\n // this.schedulePopoverUpdate(target, el);\n if (options.smoothScroll) {\n // target.scrollIntoView({ behavior: 'smooth', block: 'nearest' });\n\n // fromEvent(window, 'scroll')\n // .pipe(\n // startWith(1),\n // tap((x) => console.count('scroll 50')),\n // debounceTime(50),\n // take(1),\n // )\n // .subscribe(() => {});\n // fromEvent(window, 'scroll')\n // .pipe(\n // startWith(1),\n // tap((x) => console.count('scroll 10')),\n // debounceTime(10),\n // take(1),\n // )\n // .subscribe(() => {\n // this.scrolled.update((x) => x + 1);\n // this.schedulePopoverUpdate(target, el);\n // });\n scrollToElement(target).then(() => {\n this.scrolled.update(x => x + 1);\n this.schedulePopoverUpdate(target, el, options);\n });\n } else {\n this.schedulePopoverUpdate(target, el, options);\n }\n\n // TODO: remove this once we have multi cleanup support\n if (!options.backdrop) {\n window.addEventListener('scroll', this.scheduleUpdateDimension);\n cleanup(() => window.removeEventListener('scroll', this.scheduleUpdateDimension));\n }\n\n // observe the target element position change\n const resizeObserver = new ResizeObserver(() => {\n // console.log('resizeObserver');\n this.schedulePopoverUpdate(target, el, options);\n });\n resizeObserver.observe(target);\n cleanup(() => resizeObserver.disconnect());\n });\n }\n\n override getTarget(): HTMLElement {\n return this.target() || this.options().target;\n }\n\n private scheduleUpdateDimension = () => {\n this.disposals.afterNextRender(() => this.updateDimension());\n };\n\n private schedulePopoverUpdate(target: HTMLElement, el: HTMLElement, options: PopoverOptions) {\n // this.options().target = target;\n // if (options.backdrop) {\n // this.onOpen();\n // }\n if (options.width === 'target') {\n // update the width of the container to be the same as the target\n el.style.width = `${target.offsetWidth}px`;\n } else if (options.width === 'free') {\n el.style.minWidth = `${target.offsetWidth}px`;\n } else if (options.width) {\n el.style.width = options.width;\n }\n if (options.height) {\n el.style.height = options.height;\n }\n if (options.maxHeight) {\n el.style.maxHeight = options.maxHeight;\n }\n\n this.scheduleUpdateDimension();\n }\n\n private updateDimension() {\n const el = this.container()!.nativeElement;\n const target = this.getTarget();\n if (!target) {\n return;\n }\n const { top, bottom, left, right, position, maxHeight, maxWidth } = tooltipPosition({\n target,\n el,\n position: this.lastPosition,\n client: this.options().client,\n offset: this.options().offset,\n sideOffset: this.options().sideOffset,\n });\n // change the anchor position\n if (this.options().anchor) {\n this.updateAnchorPosition(position, el, target);\n }\n this.lastPosition = position;\n // we need to update the values directly instead of signal to avoid too many CD checks\n if (bottom) {\n el.style.bottom = `${bottom}px`;\n el.style.top = '';\n } else if (top) {\n el.style.top = `${top}px`;\n el.style.bottom = '';\n }\n if (right != undefined) {\n el.style.right = `${right}px`;\n el.style.left = '';\n } else {\n el.style.left = `${left}px`;\n el.style.right = '';\n }\n\n if (maxHeight) {\n el.style.maxHeight = `${maxHeight}px`;\n }\n if (maxWidth) {\n el.style.maxWidth = `${maxWidth}px`;\n }\n }\n\n private updateAnchorPosition(position: PopoverPosition, el: HTMLElement, target: HTMLElement) {\n let deg = '0deg';\n let anchorTop = '50%';\n let anchorLeft = '50%';\n const anchorWidth = 12.8;\n\n const thHeight = target.offsetHeight / 2;\n const thWidth = target.offsetWidth / 2;\n\n switch (position) {\n case 'top':\n case 'tl':\n case 'tr':\n anchorTop = '100%';\n break;\n case 'left':\n deg = '270deg';\n anchorLeft = `calc(100% + ${anchorWidth / 2}px)`;\n anchorTop = thHeight > el.clientHeight ? '50%' : `calc(${thHeight}px)`;\n break;\n case 'right':\n deg = '90deg';\n anchorLeft = `-${anchorWidth / 2}px`;\n anchorTop = thHeight > el.clientHeight ? '50%' : `calc(${thHeight}px)`;\n break;\n case 'bottom':\n case 'bl':\n case 'br':\n deg = '180deg';\n anchorTop = '-1rem';\n anchorLeft = thWidth > el.clientWidth ? '50%' : `calc(100% - ${thWidth}px)`;\n break;\n }\n\n el.style.setProperty('--action-angle', deg);\n el.style.setProperty('--action-left', anchorLeft);\n el.style.setProperty('--action-top', anchorTop);\n // console.log('updateAnchorPosition', position, deg);\n }\n\n override setOptions(options: PopoverOptions): void {\n // console.log('setOptions', options);\n this.options.set(options);\n }\n}\n\nfunction scrollToElement(target: HTMLElement) {\n return new Promise(resolve => {\n let lastPos: number;\n let currentPos = null;\n let samePosCount = 0;\n\n const checkIfScrollComplete = () => {\n currentPos = window.pageYOffset || document.documentElement.scrollTop;\n\n if (lastPos !== null && currentPos === lastPos) {\n samePosCount++;\n if (samePosCount > 2) {\n resolve(true);\n return;\n }\n } else {\n samePosCount = 0;\n lastPos = currentPos;\n }\n\n requestAnimationFrame(checkIfScrollComplete);\n };\n // scroll only if the target is not in the view\n // window.scrollTo({\n // top: target.offsetTop - 50,\n // behavior: 'smooth',\n // });\n target.scrollIntoView({ behavior: 'smooth', block: 'nearest' });\n requestAnimationFrame(checkIfScrollComplete);\n });\n}\n\n@Directive({\n selector: '[ngbPopoverClose]',\n hostDirectives: [{ directive: NgbPortalClose, inputs: ['ngbPortalClose: ngbPopoverClose'] }],\n})\nexport class NgbPopoverClose {}\n\nexport function providePopover(popover: typeof NgbPopover) {\n return { provide: NgbPopover, useExisting: popover };\n}\n","import { inject, InjectionToken, Signal, Type, WritableSignal } from '@angular/core';\nimport { DialogInput, DialogOptions, DialogRef } from '@ngbase/adk/portal';\nimport { Observable } from 'rxjs';\nimport { basePopoverPortal } from './base-popover.service';\nimport { NgbPopover } from './popover';\n\nexport type PopoverPosition = 'top' | 'bottom' | 'left' | 'right' | 'tl' | 'tr' | 'bl' | 'br';\n\nexport class PopoverOptions extends DialogOptions {\n target!: HTMLElement;\n el?: HTMLElement;\n position?: PopoverPosition;\n offset?: number;\n sideOffset?: number;\n client?: { x: number; y: number; w: number; h: number } | null;\n className?: string;\n backdropClassName?: string;\n clipPath?: Signal<string>;\n anchor?: boolean;\n smoothScroll?: boolean;\n}\n\nexport interface PopoverOpen<T> {\n diaRef: DialogRef<any>;\n events: Observable<{ type: string; value: any }>;\n parent: NgbPopover;\n replace: ((component: DialogInput<T>) => void) | undefined;\n childSignal: WritableSignal<any>;\n}\n\nconst POPOVER_TOKEN = new InjectionToken<Type<NgbPopover>>('POPOVER_TOKEN');\n\nexport type PopoverType = ReturnType<typeof ngbPopoverPortal>;\n\nexport function ngbPopoverPortal() {\n const popover = inject(POPOVER_TOKEN, { optional: true }) ?? NgbPopover;\n const base = basePopoverPortal(popover);\n\n function open<T>(component: DialogInput<T>, options: PopoverOptions): PopoverOpen<T> {\n return base.open(component, options);\n }\n\n return { open, closeAll: base.closeAll };\n}\n\nexport const registerNgbPopover = (popover: Type<NgbPopover>) => {\n return { provide: POPOVER_TOKEN, useValue: popover };\n};\n","import { Directive, ElementRef, TemplateRef, inject, input } from '@angular/core';\nimport { PopoverPosition, ngbPopoverPortal } from './popover.service';\n\n@Directive({\n selector: '[ngbPopoverTrigger]',\n exportAs: 'ngbPopoverTrigger',\n host: {\n '(click)': 'open()',\n },\n})\nexport class NgbPopoverTrigger {\n readonly popoverPortal = ngbPopoverPortal();\n readonly el = inject<ElementRef<HTMLElement>>(ElementRef);\n\n readonly ngbPopoverTrigger = input.required<TemplateRef<any>>();\n readonly ngbPopoverTriggerData = input();\n readonly options = input<{ position?: PopoverPosition; anchor?: boolean }>();\n\n private closeFn: VoidFunction = () => {};\n\n open() {\n const options = this.options();\n const { diaRef } = this.popoverPortal.open(this.ngbPopoverTrigger(), {\n target: this.el.nativeElement,\n anchor: options?.anchor,\n position: options?.position || 'top',\n data: this.ngbPopoverTriggerData(),\n });\n this.closeFn = diaRef.close;\n }\n\n close() {\n this.closeFn();\n }\n}\n","/*\n * Public API Surface of popover\n */\n\nexport * from './popover.service';\nexport * from './popover';\nexport * from './popover-trigger';\nexport * from './base-popover.service';\nexport { tooltipPosition } from './utils';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ngbase-adk-popover.mjs","sources":["../../../projects/adk/popover/base-popover.service.ts","../../../projects/adk/popover/utils.ts","../../../projects/adk/popover/popover-arrow.ng.ts","../../../projects/adk/popover/popover.ts","../../../projects/adk/popover/popover.service.ts","../../../projects/adk/popover/popover-trigger.ts","../../../projects/adk/popover/public-api.ts","../../../projects/adk/popover/ngbase-adk-popover.ts"],"sourcesContent":["import { Type } from '@angular/core';\nimport { basePortal, DialogInput } from '@ngbase/adk/portal';\nimport { NgbPopover } from './popover';\nimport { PopoverOptions } from './popover.service';\n\nexport function basePopoverPortal<T>(component: Type<T>) {\n const NAME = 'popover';\n const base = basePortal(NAME, component);\n\n function open<T>(component: DialogInput<T>, options: PopoverOptions) {\n const { diaRef, parent, replace, childSignal } = base.open(\n component,\n (comp, opt) => {\n const compInst = comp.instance as NgbPopover;\n compInst.setOptions(opt as PopoverOptions);\n },\n options,\n );\n\n return {\n diaRef,\n events: (parent.instance as NgbPopover).events,\n parent: parent.instance,\n replace,\n childSignal,\n };\n }\n\n function closeAll() {\n base.closeAll();\n }\n return { open, closeAll };\n}\n","export interface PopoverUtilConfig {\n offset?: number;\n sideOffset?: number;\n smoothScroll?: boolean;\n position?: Position | OverlayPosition;\n client?: { x: number; y: number; w: number; h: number } | null;\n target: HTMLElement;\n el?: HTMLElement;\n}\n\nexport interface Rect {\n top: number;\n left: number;\n width: number;\n height: number;\n}\n\nexport type OverlayPosition =\n | 'top'\n | 'bottom'\n | 'left'\n | 'right'\n | 'rs'\n | 're'\n | 'ls'\n | 'le'\n | 'tl'\n | 'tr'\n | 'bl'\n | 'br';\n\n// Main position enum with all supported positions\nexport enum Position {\n Top = 'top',\n Bottom = 'bottom',\n Left = 'left',\n Right = 'right',\n TopLeft = 'tl',\n TopRight = 'tr',\n BottomLeft = 'bl',\n BottomRight = 'br',\n RightStart = 'rs',\n RightEnd = 're',\n LeftStart = 'ls',\n LeftEnd = 'le',\n}\n\nexport interface PositionResult {\n top?: number;\n left?: number;\n bottom?: number;\n right?: number;\n position: Position;\n maxHeight?: number;\n maxWidth?: number;\n}\n\n// Position metadata - defines each position in terms of main axis, alignment, and coordinates calculation\ninterface PositionMeta {\n main: 'vertical' | 'horizontal';\n placement: 'before' | 'after';\n align: 'start' | 'center' | 'end';\n oppositePosition: Position;\n fallbacks: Position[];\n getCoords: (targetRect: Rect, elementRect: Rect, offset: number) => { top: number; left: number };\n}\n\n// Position metadata definitions\nconst POSITION_META: Record<Position, PositionMeta> = {\n [Position.Top]: {\n main: 'vertical',\n placement: 'before',\n align: 'center',\n oppositePosition: Position.Bottom,\n fallbacks: [Position.Bottom],\n getCoords: (target, element, offset) => ({\n top: target.top - element.height - offset,\n left: target.left + (target.width - element.width) / 2,\n }),\n },\n [Position.Bottom]: {\n main: 'vertical',\n placement: 'after',\n align: 'center',\n oppositePosition: Position.Top,\n fallbacks: [Position.Top, Position.Right, Position.Left],\n getCoords: (target, element, offset) => ({\n top: target.top + target.height + offset,\n left: target.left + (target.width - element.width) / 2,\n }),\n },\n [Position.Left]: {\n main: 'horizontal',\n placement: 'before',\n align: 'center',\n oppositePosition: Position.Right,\n fallbacks: [Position.Right, Position.Top, Position.Bottom],\n getCoords: (target, element, offset) => ({\n top: target.top + (target.height - element.height) / 2,\n left: target.left - element.width - offset,\n }),\n },\n [Position.Right]: {\n main: 'horizontal',\n placement: 'after',\n align: 'center',\n oppositePosition: Position.Left,\n fallbacks: [Position.Left, Position.Top, Position.Bottom],\n getCoords: (target, element, offset) => ({\n top: target.top + (target.height - element.height) / 2,\n left: target.left + target.width + offset,\n }),\n },\n [Position.TopLeft]: {\n main: 'vertical',\n placement: 'before',\n align: 'start',\n oppositePosition: Position.BottomLeft,\n fallbacks: [Position.BottomLeft, Position.TopRight, Position.BottomRight],\n getCoords: (target, element, offset) => ({\n top: target.top - element.height - offset,\n left: target.left,\n }),\n },\n [Position.TopRight]: {\n main: 'vertical',\n placement: 'before',\n align: 'end',\n oppositePosition: Position.BottomRight,\n fallbacks: [Position.BottomRight, Position.TopLeft, Position.BottomLeft],\n getCoords: (target, element, offset) => ({\n top: target.top - element.height - offset,\n left: target.left + target.width - element.width,\n }),\n },\n [Position.BottomLeft]: {\n main: 'vertical',\n placement: 'after',\n align: 'start',\n oppositePosition: Position.BottomRight,\n fallbacks: [Position.BottomRight, Position.TopLeft, Position.TopRight],\n getCoords: (target, element, offset) => ({\n top: target.top + target.height + offset,\n left: target.left,\n }),\n },\n [Position.BottomRight]: {\n main: 'vertical',\n placement: 'after',\n align: 'end',\n oppositePosition: Position.BottomLeft,\n fallbacks: [Position.BottomLeft, Position.TopRight, Position.TopLeft],\n getCoords: (target, element, offset) => ({\n top: target.top + target.height + offset,\n left: target.left + target.width - element.width,\n }),\n },\n [Position.RightStart]: {\n main: 'horizontal',\n placement: 'after',\n align: 'start',\n oppositePosition: Position.RightEnd,\n fallbacks: [Position.RightEnd, Position.LeftStart, Position.LeftEnd],\n getCoords: (target, element, offset) => ({\n top: target.top,\n left: target.left + target.width + offset,\n }),\n },\n [Position.RightEnd]: {\n main: 'horizontal',\n placement: 'after',\n align: 'end',\n oppositePosition: Position.LeftEnd,\n fallbacks: [Position.LeftEnd, Position.RightStart, Position.LeftStart],\n getCoords: (target, element, offset) => ({\n top: target.top + target.height - element.height,\n left: target.left + target.width + offset,\n }),\n },\n [Position.LeftStart]: {\n main: 'horizontal',\n placement: 'before',\n align: 'start',\n oppositePosition: Position.LeftEnd,\n fallbacks: [Position.LeftEnd, Position.RightStart, Position.RightEnd],\n getCoords: (target, element, offset) => ({\n top: target.top,\n left: target.left - element.width - offset,\n }),\n },\n [Position.LeftEnd]: {\n main: 'horizontal',\n placement: 'before',\n align: 'end',\n oppositePosition: Position.RightEnd,\n fallbacks: [Position.RightEnd, Position.LeftStart, Position.RightStart],\n getCoords: (target, element, offset) => ({\n top: target.top + target.height - element.height,\n left: target.left - element.width - offset,\n }),\n },\n};\n\nexport class PopoverPositioner {\n private offset: number;\n private sideOffset: number;\n private elementRect!: Rect;\n\n constructor(\n private config: PopoverUtilConfig,\n private windowDimensions: { width: number; height: number },\n private scrollWidth = 0,\n ) {\n this.offset = this.config.offset || 5;\n this.sideOffset = this.config.sideOffset || 0;\n }\n\n public calculatePosition(): PositionResult {\n const targetRect = this.getTargetRect();\n this.elementRect = this.getElementRect();\n\n // Get initial position or use bottom as default\n const initialPosition = (this.config.position as Position) || Position.Bottom;\n\n // Find best position\n const bestPosition = this.findBestPosition(initialPosition, targetRect);\n\n // Generate and finalize coordinates\n const coords = POSITION_META[bestPosition].getCoords(targetRect, this.elementRect, this.offset);\n return this.finalizePosition(coords, bestPosition, targetRect);\n }\n\n private getTargetRect(): Rect {\n if (this.config.client) {\n const { x, y, w, h } = this.config.client;\n return { top: y, left: x, width: w, height: h };\n }\n return this.config.target.getBoundingClientRect();\n }\n\n private getElementRect(): Rect {\n const el = this.config.el!;\n return {\n top: 0,\n left: 0,\n width: el.clientWidth,\n height: el.clientHeight,\n };\n }\n\n private findBestPosition(initialPosition: Position, targetRect: Rect): Position {\n // If the initial position works, use it\n if (!this.positionOverflows(initialPosition, targetRect)) {\n return initialPosition;\n }\n\n // Get available space in each direction\n const space = this.getAvailableSpace(targetRect);\n\n // Special handling for simple cases (e.g., choosing between top and bottom based on space)\n const meta = POSITION_META[initialPosition];\n\n // 1. Try the opposite position on the same axis (e.g., bottom for top)\n const opposite = meta.oppositePosition;\n if (!this.positionOverflows(opposite, targetRect)) {\n return opposite;\n }\n\n // 2. Try fallbacks in order\n for (const fallback of meta.fallbacks) {\n if (!this.positionOverflows(fallback, targetRect)) {\n return fallback;\n }\n }\n\n // 3. For vertical positions, prefer the side with more space\n if (meta.main === 'vertical') {\n const preferredVertical = space.top > space.bottom ? Position.Top : Position.Bottom;\n if (!this.positionOverflows(preferredVertical, targetRect)) {\n return preferredVertical;\n }\n }\n\n // 4. For horizontal positions, prefer the side with more space\n if (meta.main === 'horizontal') {\n const preferredHorizontal = space.left > space.right ? Position.Left : Position.Right;\n if (!this.positionOverflows(preferredHorizontal, targetRect)) {\n return preferredHorizontal;\n }\n }\n\n // 5. If all positions have issues, find the one with the best fit\n return this.getPositionWithLeastOverflow(initialPosition, targetRect);\n }\n\n private getAvailableSpace(targetRect: Rect): {\n top: number;\n right: number;\n bottom: number;\n left: number;\n } {\n return {\n top: targetRect.top,\n right: this.windowDimensions.width - (targetRect.left + targetRect.width),\n bottom: this.windowDimensions.height - (targetRect.top + targetRect.height),\n left: targetRect.left,\n };\n }\n\n private positionOverflows(position: Position, targetRect: Rect): boolean {\n const meta = POSITION_META[position];\n const element = this.elementRect;\n const coords = meta.getCoords(targetRect, element, this.offset);\n const { width: windowWidth, height: windowHeight } = this.windowDimensions;\n\n // Check boundaries and consider sideOffset\n return (\n coords.left < 0 ||\n coords.left + element.width + this.sideOffset > windowWidth ||\n coords.top < 0 ||\n coords.top + element.height + this.sideOffset > windowHeight\n );\n }\n\n private getOverflowAmount(position: Position, targetRect: Rect): number {\n const meta = POSITION_META[position];\n const element = this.elementRect;\n const coords = meta.getCoords(targetRect, element, this.offset);\n const { width: windowWidth, height: windowHeight } = this.windowDimensions;\n\n let amount = 0;\n\n // Calculate overflow for each edge\n if (coords.left < 0) amount += Math.abs(coords.left);\n if (coords.left + element.width > windowWidth)\n amount += coords.left + element.width - windowWidth;\n if (coords.top < 0) amount += Math.abs(coords.top);\n if (coords.top + element.height > windowHeight)\n amount += coords.top + element.height - windowHeight;\n\n return amount;\n }\n\n private getPositionWithLeastOverflow(initialPosition: Position, targetRect: Rect): Position {\n const positionsToCheck = [initialPosition, ...POSITION_META[initialPosition].fallbacks];\n\n let bestPosition = initialPosition;\n let leastOverflow = this.getOverflowAmount(initialPosition, targetRect);\n\n for (const position of positionsToCheck) {\n const overflow = this.getOverflowAmount(position, targetRect);\n if (overflow < leastOverflow) {\n leastOverflow = overflow;\n bestPosition = position;\n }\n }\n\n return bestPosition;\n }\n\n private finalizePosition(\n coords: { top: number; left: number },\n position: Position,\n targetRect: Rect,\n ): PositionResult {\n const { top, left } = coords;\n const element = this.elementRect;\n const { width: windowWidth, height: windowHeight } = this.windowDimensions;\n const meta = POSITION_META[position];\n\n // Calculate max dimensions\n let maxHeight: number | undefined;\n let maxWidth: number | undefined;\n\n // Set maxHeight if needed\n if (top - this.sideOffset < 0) {\n maxHeight = element.height + top - this.sideOffset;\n } else if (top + element.height + this.sideOffset > windowHeight) {\n maxHeight = element.height - (top + element.height + this.sideOffset - windowHeight);\n }\n\n // Set maxWidth if needed\n if (left + element.width + this.sideOffset > windowWidth) {\n maxWidth = windowWidth - left - this.sideOffset;\n }\n\n // Add sideOffset to maxHeight and maxWidth because the sideOffset is used for the maxHeight and maxWidth\n const h = maxHeight ? maxHeight + this.sideOffset : element.height;\n const w = maxWidth ? maxWidth + this.sideOffset : element.width;\n\n // Calculate adjusted coordinates\n let adjustedTop: number | undefined = Math.max(0, Math.min(top, windowHeight - h));\n let adjustedLeft = Math.max(0, Math.min(left, windowWidth - w));\n\n // Calculate bottom and right (for RTL support)\n let bottom: number | undefined;\n let right: number | undefined;\n\n // Set bottom if appropriate\n if (meta.main === 'vertical' && meta.placement === 'before') {\n bottom = windowHeight - (adjustedTop + h);\n adjustedTop = undefined;\n }\n\n // Set right if appropriate\n if (adjustedLeft + w > windowWidth) {\n adjustedLeft = 0;\n right = 0;\n } else if (\n meta.align === 'end' ||\n (meta.main === 'horizontal' && meta.placement === 'before')\n ) {\n right = windowWidth - (adjustedLeft + w) - this.scrollWidth;\n }\n\n return {\n top: adjustedTop,\n left: right !== undefined ? undefined : adjustedLeft,\n bottom,\n right,\n position,\n maxHeight: maxHeight && maxHeight > 0 ? maxHeight : undefined,\n maxWidth: maxWidth && maxWidth > 0 ? maxWidth : undefined,\n };\n }\n}\n\n// Main function to use the class\nexport function tooltipPosition(\n config: PopoverUtilConfig,\n windowDimensions = { width: window.innerWidth, height: window.innerHeight },\n scrollWidth = window.innerWidth - document.documentElement.clientWidth,\n): PositionResult {\n const positioner = new PopoverPositioner(config, windowDimensions, scrollWidth);\n return positioner.calculatePosition();\n}\n","import {\n Component,\n computed,\n ElementRef,\n inject,\n input,\n signal,\n WritableSignal,\n} from '@angular/core';\nimport { InjectionToken } from '@angular/core';\nimport { PopoverPosition } from './popover.service';\n\nexport class PopoverArrowTracker {\n top? = 0;\n left? = 0;\n right? = 0;\n bottom? = 0;\n target?: HTMLElement;\n position?: PopoverPosition;\n}\n\nexport const POPOVER_ARROW_TRACKER = new InjectionToken<{\n values: WritableSignal<PopoverArrowTracker>;\n}>('popoverArrowTracker');\n\nexport function providePopoverArrowTracker() {\n return {\n provide: POPOVER_ARROW_TRACKER,\n useFactory: () => ({ values: signal<PopoverArrowTracker>(new PopoverArrowTracker()) }),\n };\n}\n\n@Component({\n selector: '[ngbPopoverArrow]',\n template: `\n <ng-content />\n @if (anchor()) {\n <style>\n :host {\n --action-angle: 180deg;\n --action-left: 50%;\n --action-top: -1rem;\n }\n :host::before {\n content: '';\n position: absolute;\n width: 0;\n height: 0;\n border-style: solid;\n border-top: 0.5rem solid;\n @apply border-background;\n border-left: 0.45rem solid transparent;\n border-right: 0.45rem solid transparent;\n top: var(--action-top);\n left: var(--action-left);\n transform: translateX(-50%) rotate(var(--action-angle, 180deg));\n /* Add shadow to match the container shadow */\n /* filter: drop-shadow(0 4px 3px rgb(0 0 0 / 0.07)) drop-shadow(0 2px 2px rgb(0 0 0 / 0.06));\n z-index: -1; */\n }\n </style>\n }\n `,\n host: {\n '[style]': 'styles()',\n },\n})\nexport class NgbPopoverArrow {\n readonly arrowTracker = inject(POPOVER_ARROW_TRACKER);\n readonly anchor = input(false);\n readonly el = inject(ElementRef<HTMLElement>);\n readonly styles = computed(() => {\n const { target, position } = this.arrowTracker.values();\n if (target && position) {\n return this.updateAnchorPosition(position, target, this.el.nativeElement);\n }\n return {};\n });\n\n private updateAnchorPosition(position: PopoverPosition, target: HTMLElement, el: HTMLElement) {\n const { height, width, top } = el.getBoundingClientRect();\n const { height: tHeight, width: tWidth, top: tTop } = target.getBoundingClientRect();\n let deg = '0deg';\n let anchorTop = '50%';\n let anchorLeft = '50%';\n const anchorWidth = 8;\n\n const thHeight = tHeight / 2 - anchorWidth / 2;\n const thWidth = tWidth / 2;\n\n switch (position) {\n case 'top':\n case 'tl':\n case 'tr':\n anchorTop = '100%';\n break;\n case 'left':\n deg = '270deg';\n anchorLeft = `calc(100% + ${anchorWidth / 2}px)`;\n anchorTop =\n tHeight > height\n ? `calc(50% - ${anchorWidth / 2}px)`\n : `calc(${thHeight + (tTop - top)}px)`;\n break;\n case 'right':\n deg = '90deg';\n anchorLeft = `-${anchorWidth / 2}px`;\n anchorTop =\n tHeight > height\n ? `calc(50% - ${anchorWidth / 2}px)`\n : `calc(${thHeight + (tTop - top)}px)`;\n break;\n case 'bottom':\n case 'bl':\n case 'br':\n deg = '180deg';\n anchorTop = '-0.5rem';\n anchorLeft = thWidth > width ? '50%' : `calc(100% - ${thWidth}px)`;\n break;\n }\n\n return { '--action-angle': deg, '--action-left': anchorLeft, '--action-top': anchorTop };\n }\n}\n","import { animate, state, style, transition, trigger } from '@angular/animations';\nimport {\n Component,\n Directive,\n ElementRef,\n ViewContainerRef,\n effect,\n inject,\n input,\n linkedSignal,\n signal,\n viewChild,\n} from '@angular/core';\nimport { FocusTrap } from '@ngbase/adk/a11y';\nimport { BaseDialog, NgbPortalClose } from '@ngbase/adk/portal';\nimport { createHostAnimation, disposals } from '@ngbase/adk/utils';\nimport { EMPTY, Observable, fromEvent, map, startWith, switchMap } from 'rxjs';\nimport { PopoverOptions, PopoverPosition } from './popover.service';\nimport { tooltipPosition } from './utils';\nimport { POPOVER_ARROW_TRACKER, providePopoverArrowTracker } from './popover-arrow.ng';\n\n@Directive({\n selector: '[ngbPopoverBackdrop]',\n hostDirectives: [FocusTrap],\n host: {\n '[style.clipPath]': 'popover.options().clipPath?.()',\n '[class]': 'popover.options().backdropClassName',\n '(click)': '!popover.options().disableClose && popover.close()',\n },\n})\nexport class NgbPopoverBackdrop {\n readonly popover = inject(NgbPopover);\n readonly focusTrap = inject(FocusTrap);\n\n constructor() {\n this.focusTrap._focusTrap = linkedSignal(() => this.popover.options().focusTrap ?? true);\n }\n}\n\n@Directive({\n selector: '[ngbPopoverMain]',\n host: {\n '[class]': 'popover.options().className',\n },\n})\nexport class NgbPopoverMain {\n readonly popover = inject(NgbPopover);\n}\n\n@Component({\n selector: 'ngb-popover',\n template: '',\n host: {\n '[@parentAnimation]': '',\n '(@parentAnimation.done)': 'animationDone()',\n },\n animations: [\n createHostAnimation(['@slideInOutAnimation']),\n trigger('slideInOutAnimation', [\n state('1', style({ transform: 'none', opacity: 1 })),\n state('void', style({ transform: 'translateY(-10px) scale(0.95)', opacity: 0 })),\n state('0', style({ transform: 'translateY(-10px) scale(0.95)', opacity: 0 })),\n transition('* => *', animate('100ms ease-out')),\n ]),\n ],\n})\nexport class NgbPopover extends BaseDialog {\n readonly arrowTracker = inject(POPOVER_ARROW_TRACKER);\n private readonly disposals = disposals();\n\n readonly myDialog = viewChild.required('myDialog', { read: ViewContainerRef });\n readonly container = viewChild.required<NgbPopoverMain, ElementRef<HTMLElement>>(NgbPopoverMain, {\n read: ElementRef,\n });\n readonly backdropElement = viewChild<NgbPopoverBackdrop, ElementRef<HTMLElement>>(\n NgbPopoverBackdrop,\n { read: ElementRef },\n );\n\n readonly options = signal<PopoverOptions>({} as PopoverOptions);\n private lastPosition: PopoverPosition = 'top';\n readonly scrolled = signal(0);\n\n readonly events: Observable<{ type: string; value: any }> = this._afterViewSource.pipe(\n switchMap(e => {\n const el = this.container()!.nativeElement;\n const mouseenter = fromEvent(el, 'mouseenter');\n const mouseleave = fromEvent(el, 'mouseleave');\n const event = mouseenter.pipe(\n switchMap(e =>\n mouseleave.pipe(\n map(x => ({ type: 'mouseleave', value: x })),\n startWith({ type: 'mouseenter', value: e }),\n ),\n ),\n );\n return e ? event : EMPTY;\n }),\n );\n\n constructor() {\n super();\n\n const dialog = effect(() => {\n this._afterViewSource.next(this.myDialog()!);\n dialog.destroy();\n });\n\n effect(cleanup => {\n const el = this.container()!.nativeElement;\n const options = this.options();\n const target = this.getTarget();\n if (options.anchor) {\n options.offset = 16;\n }\n this.lastPosition = options.position || 'bottom';\n // this.schedulePopoverUpdate(target, el);\n if (options.smoothScroll) {\n // target.scrollIntoView({ behavior: 'smooth', block: 'nearest' });\n\n // fromEvent(window, 'scroll')\n // .pipe(\n // startWith(1),\n // tap((x) => console.count('scroll 50')),\n // debounceTime(50),\n // take(1),\n // )\n // .subscribe(() => {});\n // fromEvent(window, 'scroll')\n // .pipe(\n // startWith(1),\n // tap((x) => console.count('scroll 10')),\n // debounceTime(10),\n // take(1),\n // )\n // .subscribe(() => {\n // this.scrolled.update((x) => x + 1);\n // this.schedulePopoverUpdate(target, el);\n // });\n scrollToElement(target).then(() => {\n this.scrolled.update(x => x + 1);\n this.schedulePopoverUpdate(target, el, options);\n });\n } else {\n this.schedulePopoverUpdate(target, el, options);\n }\n\n // TODO: remove this once we have multi cleanup support\n if (!options.backdrop) {\n window.addEventListener('scroll', this.scheduleUpdateDimension);\n cleanup(() => window.removeEventListener('scroll', this.scheduleUpdateDimension));\n }\n\n // observe the target element position change\n const resizeObserver = new ResizeObserver(() => {\n // console.log('resizeObserver');\n this.schedulePopoverUpdate(target, el, options);\n });\n resizeObserver.observe(target);\n cleanup(() => resizeObserver.disconnect());\n });\n }\n\n override getTarget(): HTMLElement {\n return this.target() || this.options().target;\n }\n\n private scheduleUpdateDimension = () => {\n this.disposals.afterNextRender(() => this.updateDimension());\n };\n\n private schedulePopoverUpdate(target: HTMLElement, el: HTMLElement, options: PopoverOptions) {\n // this.options().target = target;\n // if (options.backdrop) {\n // this.onOpen();\n // }\n if (options.width === 'target') {\n // update the width of the container to be the same as the target\n el.style.width = `${target.offsetWidth}px`;\n } else if (options.width === 'free') {\n el.style.minWidth = `${target.offsetWidth}px`;\n } else if (options.width) {\n el.style.width = options.width;\n }\n if (options.height) {\n el.style.height = options.height;\n }\n if (options.maxHeight) {\n el.style.maxHeight = options.maxHeight;\n }\n\n this.scheduleUpdateDimension();\n }\n\n private updateDimension() {\n const el = this.container()!.nativeElement;\n const target = this.getTarget();\n if (!target) {\n return;\n }\n const { top, bottom, left, right, position, maxHeight, maxWidth } = tooltipPosition({\n target,\n el,\n position: this.lastPosition,\n client: this.options().client,\n offset: this.options().offset,\n sideOffset: this.options().sideOffset,\n });\n // change the anchor position\n // if (this.options().anchor) {\n // this.updateAnchorPosition(position, el, target);\n // }\n this.lastPosition = position;\n // we need to update the values directly instead of signal to avoid too many CD checks\n if (bottom !== undefined) {\n el.style.bottom = `${bottom}px`;\n el.style.top = '';\n } else {\n el.style.top = `${top}px`;\n el.style.bottom = '';\n }\n if (right != undefined) {\n el.style.right = `${right}px`;\n el.style.left = '';\n } else {\n el.style.left = `${left}px`;\n el.style.right = '';\n }\n\n if (maxHeight) {\n el.style.maxHeight = `${maxHeight}px`;\n }\n if (maxWidth) {\n el.style.maxWidth = `${maxWidth}px`;\n }\n this.arrowTracker.values.set({ top, bottom, left, right, target, position });\n }\n\n override setOptions(options: PopoverOptions): void {\n // console.log('setOptions', options);\n this.options.set(options);\n }\n}\n\nfunction scrollToElement(target: HTMLElement) {\n return new Promise(resolve => {\n let lastPos: number;\n let currentPos = null;\n let samePosCount = 0;\n\n const checkIfScrollComplete = () => {\n currentPos = window.pageYOffset || document.documentElement.scrollTop;\n\n if (lastPos !== null && currentPos === lastPos) {\n samePosCount++;\n if (samePosCount > 2) {\n resolve(true);\n return;\n }\n } else {\n samePosCount = 0;\n lastPos = currentPos;\n }\n\n requestAnimationFrame(checkIfScrollComplete);\n };\n // scroll only if the target is not in the view\n // window.scrollTo({\n // top: target.offsetTop - 50,\n // behavior: 'smooth',\n // });\n target.scrollIntoView({ behavior: 'smooth', block: 'nearest' });\n requestAnimationFrame(checkIfScrollComplete);\n });\n}\n\n@Directive({ selector: '[ngbPopoverClose]' })\nexport class NgbPopoverClose extends NgbPortalClose {\n readonly ngbPopoverClose = input();\n\n override close() {\n super.close(this.ngbPopoverClose());\n }\n}\n\nexport function aliasPopover(popover: typeof NgbPopover) {\n return [{ provide: NgbPopover, useExisting: popover }, providePopoverArrowTracker()];\n}\n","import { inject, InjectionToken, Signal, Type, WritableSignal } from '@angular/core';\nimport { DialogInput, DialogOptions, DialogRef } from '@ngbase/adk/portal';\nimport { Observable } from 'rxjs';\nimport { basePopoverPortal } from './base-popover.service';\nimport { NgbPopover } from './popover';\nimport { OverlayPosition, PopoverUtilConfig } from './utils';\n\nexport type PopoverPosition = OverlayPosition;\n\nexport class PopoverOptions extends DialogOptions implements PopoverUtilConfig {\n target!: HTMLElement;\n el?: HTMLElement;\n position?: PopoverPosition;\n offset?: number;\n sideOffset?: number;\n client?: { x: number; y: number; w: number; h: number } | null;\n className?: string;\n backdropClassName?: string;\n clipPath?: Signal<string>;\n anchor?: boolean;\n smoothScroll?: boolean;\n}\n\nexport interface PopoverOpen<T> {\n diaRef: DialogRef<any>;\n events: Observable<{ type: string; value: any }>;\n parent: NgbPopover;\n replace: ((component: DialogInput<T>) => void) | undefined;\n childSignal: WritableSignal<any>;\n}\n\nconst POPOVER_TOKEN = new InjectionToken<Type<NgbPopover>>('POPOVER_TOKEN');\n\nexport type PopoverType = ReturnType<typeof ngbPopoverPortal>;\n\nexport function ngbPopoverPortal() {\n const popover = inject(POPOVER_TOKEN, { optional: true }) ?? NgbPopover;\n const base = basePopoverPortal(popover);\n\n function open<T>(component: DialogInput<T>, options: PopoverOptions): PopoverOpen<T> {\n return base.open(component, options);\n }\n\n return { open, closeAll: base.closeAll };\n}\n\nexport const registerNgbPopover = (popover: typeof NgbPopover) => {\n return { provide: POPOVER_TOKEN, useValue: popover };\n};\n","import { Directive, ElementRef, TemplateRef, inject, input } from '@angular/core';\nimport { PopoverPosition, ngbPopoverPortal } from './popover.service';\n\n@Directive({\n selector: '[ngbPopoverTrigger]',\n exportAs: 'ngbPopoverTrigger',\n host: {\n '(click)': 'open()',\n },\n})\nexport class NgbPopoverTrigger {\n readonly popoverPortal = ngbPopoverPortal();\n readonly el = inject<ElementRef<HTMLElement>>(ElementRef);\n\n readonly ngbPopoverTrigger = input.required<TemplateRef<any>>();\n readonly ngbPopoverTriggerData = input();\n readonly options = input<{ position?: PopoverPosition; anchor?: boolean }>();\n\n private closeFn: VoidFunction = () => {};\n\n open() {\n const options = this.options();\n const { diaRef } = this.popoverPortal.open(this.ngbPopoverTrigger(), {\n target: this.el.nativeElement,\n anchor: options?.anchor,\n position: options?.position || 'top',\n data: this.ngbPopoverTriggerData(),\n });\n this.closeFn = diaRef.close;\n }\n\n close() {\n this.closeFn();\n }\n}\n","/*\n * Public API Surface of popover\n */\n\nexport * from './popover.service';\nexport * from './popover';\nexport * from './popover-trigger';\nexport * from './base-popover.service';\nexport * from './popover-arrow.ng';\nexport { tooltipPosition } from './utils';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -91,7 +91,6 @@ class DialogOptions {
|
|
|
91
91
|
this.backdropColor = true;
|
|
92
92
|
this.hideOverlay = false;
|
|
93
93
|
this.classNames = [];
|
|
94
|
-
this.overrideLowerDialog = false;
|
|
95
94
|
this.disableClose = false;
|
|
96
95
|
this.focusTrap = true;
|
|
97
96
|
}
|
|
@@ -117,8 +116,8 @@ class NgbPortalClose {
|
|
|
117
116
|
this.dialogRef = inject(DialogRef);
|
|
118
117
|
this.ngbPortalClose = input();
|
|
119
118
|
}
|
|
120
|
-
close() {
|
|
121
|
-
this.dialogRef.close(
|
|
119
|
+
close(data = this.ngbPortalClose()) {
|
|
120
|
+
this.dialogRef.close(data);
|
|
122
121
|
}
|
|
123
122
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbPortalClose, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
124
123
|
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.0.0", type: NgbPortalClose, isStandalone: true, selector: "[ngbPortalClose]", inputs: { ngbPortalClose: { classPropertyName: "ngbPortalClose", publicName: "ngbPortalClose", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "click": "close()" } }, ngImport: i0 }); }
|
|
@@ -231,11 +230,10 @@ function basePortal(name, baseComponent) {
|
|
|
231
230
|
sub?.();
|
|
232
231
|
}
|
|
233
232
|
let vwRef;
|
|
234
|
-
let child;
|
|
235
233
|
const parentInstance = parent.instance;
|
|
236
234
|
parentInstance.afterView.pipe(first()).subscribe(vcRef => {
|
|
237
235
|
vwRef = vcRef;
|
|
238
|
-
createChild(component, vcRef);
|
|
236
|
+
const child = createChild(component, vcRef);
|
|
239
237
|
// diaRef.onDestroy.subscribe(() => child.destroy());
|
|
240
238
|
diaRef.events.next('created');
|
|
241
239
|
childSignal.set(child);
|
|
@@ -249,16 +247,13 @@ function basePortal(name, baseComponent) {
|
|
|
249
247
|
function createChild(component, vcRef) {
|
|
250
248
|
// for template type
|
|
251
249
|
if (component instanceof TemplateRef) {
|
|
252
|
-
|
|
253
|
-
diaRef.events.next('created');
|
|
254
|
-
return;
|
|
250
|
+
return vcRef.createEmbeddedView(component, { $implicit: options.data, ...(Array.isArray(options.data) ? {} : options.data) }, { injector: parent.injector });
|
|
255
251
|
}
|
|
256
252
|
// for component type
|
|
257
|
-
|
|
253
|
+
return vcRef.createComponent(component, {
|
|
258
254
|
injector: parent.injector,
|
|
259
255
|
});
|
|
260
256
|
}
|
|
261
|
-
// parent.instance.
|
|
262
257
|
return { diaRef, parent, replace, childSignal };
|
|
263
258
|
}
|
|
264
259
|
function closeAll() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngbase-adk-portal.mjs","sources":["../../../projects/adk/portal/dialog-ref.ts","../../../projects/adk/portal/portal-close.directive.ts","../../../projects/adk/portal/portal.component.ts","../../../projects/adk/portal/portal.service.ts","../../../projects/adk/portal/portal-base.service.ts","../../../projects/adk/portal/public-api.ts","../../../projects/adk/portal/ngbase-adk-portal.ts"],"sourcesContent":["import { DOCUMENT } from '@angular/common';\nimport {\n ElementRef,\n InjectionToken,\n Injector,\n TemplateRef,\n Type,\n ViewContainerRef,\n inject,\n signal,\n} from '@angular/core';\nimport { BehaviorSubject, Subject, Subscription, filter, first } from 'rxjs';\n\nexport type DialogInput<T = any> = Type<T> | TemplateRef<any>;\n\nexport abstract class BaseDialog {\n dialogRef = inject(DialogRef);\n document = inject(DOCUMENT);\n el = inject(ElementRef);\n\n _afterViewSource = new BehaviorSubject<ViewContainerRef | null>(null);\n afterView = this._afterViewSource.asObservable().pipe(filter(Boolean));\n\n target = signal<HTMLElement | null>(null);\n\n // counter is required because we have start and end animation\n // so we need to wait for both to finish before destroying the dialog\n count = 0;\n private isFirst = true;\n private currentActiveElement = new WeakRef(this.document.activeElement as HTMLElement);\n\n constructor() {\n this.onOpen();\n }\n\n setOptions(_: DialogOptions): void {}\n\n close() {\n this.dialogRef.close();\n }\n\n animationDone = () => {\n this.count++;\n if (this.count === 2) {\n this.onClose();\n }\n };\n\n private onOpen() {\n // make the body not scrollable and add padding to the right\n // calculate the padding based on the scrollbar width\n this.isFirst = this.document.body.style.overflow !== 'hidden';\n if (this.isFirst) {\n const padding = window.innerWidth - this.document.body.clientWidth;\n this.document.body.style.paddingRight = `${padding}px`;\n this.document.body.style.overflow = 'hidden';\n }\n }\n\n getTarget(): HTMLElement {\n return this.target()!;\n }\n\n onClose = () => {\n if (this.isFirst) {\n this.document.body.style.paddingRight = '';\n this.document.body.style.overflow = '';\n }\n const target =\n this.dialogRef.options.afterFocusEl || this.getTarget() || this.currentActiveElement.deref();\n target?.focus();\n };\n}\n\nexport class DialogRef<T = any> {\n data = this.options.data;\n private backdropSub: Subscription | null = null;\n\n private onDestroySource = new Subject();\n onDestroy = this.onDestroySource.asObservable().pipe(first());\n\n private afterClosedSource = new Subject<any>();\n afterClosed = this.afterClosedSource.asObservable().pipe(first());\n\n events = new Subject<'created'>();\n\n constructor(\n public options: DialogOptions<T>,\n private destroyParent: VoidFunction,\n private closeAllFn: VoidFunction,\n private animation = true,\n ) {}\n\n close = (data?: any) => {\n this.afterClosedSource.next(data);\n // if (!this.animation) {\n this.destroy();\n // }\n };\n\n closeAll() {\n this.closeAllFn();\n }\n\n destroy() {\n this.backdropSub?.unsubscribe();\n this.afterClosedSource.complete();\n this.onDestroySource.next(false);\n this.destroyParent();\n // console.log('destroyed parent');\n }\n}\n\nexport class DialogTestingRef {\n close() {}\n}\n\nexport class DialogOptions<T = any> {\n backdrop? = true;\n backdropColor? = true;\n hideOverlay? = false;\n data?: T;\n // isSidePopup? = false;\n title?: string;\n fullWindow?: boolean;\n minWidth?: string;\n minHeight?: string;\n width?: string;\n height?: string;\n maxWidth?: string;\n maxHeight?: string;\n classNames?: string[] = [];\n header?: boolean;\n overrideLowerDialog?: boolean = false;\n disableClose? = false;\n ayId?: string;\n focusTrap? = true;\n afterFocusEl?: HTMLElement;\n}\n\nexport const DIALOG_INJ = new InjectionToken('dialogInj');\n\nexport function createInj(parent: Injector, data: any, diaRef: DialogRef) {\n return Injector.create({\n providers: [\n { provide: DIALOG_INJ, useValue: data },\n { provide: DialogRef, useValue: diaRef },\n ],\n parent,\n name: 'dialogInj',\n });\n}\n\nexport const DialogTestProviders = [\n { provide: DIALOG_INJ, useValue: {} },\n { provide: DialogRef, useValue: null },\n];\n","import { Directive, inject, input } from '@angular/core';\nimport { DialogRef } from './dialog-ref';\n\n@Directive({\n selector: '[ngbPortalClose]',\n host: {\n '(click)': 'close()',\n },\n})\nexport class NgbPortalClose {\n private readonly dialogRef = inject(DialogRef);\n readonly ngbPortalClose = input();\n\n close() {\n this.dialogRef.close(this.ngbPortalClose());\n }\n}\n","import { ChangeDetectionStrategy, Component, ViewContainerRef, viewChild } from '@angular/core';\n\n@Component({\n selector: 'ngb-portal',\n template: `<ng-container #myDialog />`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Portal {\n myDialog = viewChild('myDialog', { read: ViewContainerRef });\n}\n","import {\n Injectable,\n Injector,\n ApplicationRef,\n Type,\n ComponentRef,\n inject,\n EnvironmentInjector,\n createComponent,\n} from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { Portal } from './portal.component';\n\n@Injectable({ providedIn: 'root' })\nexport class PortalService {\n private mainContainer?: ComponentRef<Portal>;\n private document = inject(DOCUMENT);\n private appRef = inject(ApplicationRef);\n private environmentInjector = inject(EnvironmentInjector);\n\n private trackElements = new Map<string, ComponentRef<any>[]>();\n\n private componentCreator() {\n this.mainContainer ??= this.appendComponentToBody(Portal);\n return this.mainContainer!.instance.myDialog()!;\n }\n\n appendComponentToBody<T>(component: Type<T>) {\n // 1. Create a component reference from the component\n const componentRef = createComponent(component, {\n environmentInjector: this.environmentInjector,\n });\n\n // 2. append the component to the body\n this.document.body.appendChild(componentRef.location.nativeElement);\n\n // 3. Attach component to the appRef so that it's inside the ng component tree\n this.appRef.attachView(componentRef.hostView);\n return componentRef;\n }\n\n create<T>(component: Type<T>, injector: Injector, container: string) {\n const d = this.componentCreator().createComponent(component, { injector });\n if (!this.trackElements.has(container)) {\n this.trackElements.set(container, []);\n }\n this.trackElements.get(container)!.push(d);\n return d;\n }\n\n delete<T>(container: string, component: ComponentRef<T>) {\n component.destroy();\n const elements = this.trackElements.get(container);\n if (elements) {\n const index = elements.indexOf(component);\n elements.splice(index, 1);\n }\n }\n\n clear(container: string) {\n if (this.trackElements.has(container)) {\n const elements = this.trackElements.get(container);\n elements?.forEach(c => c.destroy());\n this.trackElements.delete(container);\n }\n }\n}\n","import {\n ComponentRef,\n EmbeddedViewRef,\n Injector,\n TemplateRef,\n Type,\n ViewContainerRef,\n inject,\n signal,\n} from '@angular/core';\nimport { keyMap } from '@ngbase/adk/keys';\nimport { first } from 'rxjs';\nimport { BaseDialog, DialogInput, DialogOptions, DialogRef, createInj } from './dialog-ref';\nimport { PortalService } from './portal.service';\n\nexport function basePortal<U>(name: string, baseComponent: Type<U>) {\n const NAME = name;\n const portal = inject(PortalService);\n const injector = inject(Injector);\n\n function updateBaseComponent(component: Type<U>) {\n baseComponent = component;\n }\n\n function open<T>(\n component?: DialogInput<T>,\n callback?: (comp: ComponentRef<U>, opt: DialogOptions) => void,\n opt?: DialogOptions,\n animation = true,\n parentComponent?: Type<U>,\n ) {\n const options = { ...new DialogOptions(), ...opt };\n const diaRef = new DialogRef(options, destroy, closeAll, animation);\n const childInjector = createInj(injector, options.data, diaRef);\n const parent = portal.create(parentComponent || baseComponent, childInjector, NAME);\n\n // set options\n callback?.(parent, options);\n\n // close on backdrop click\n let sub: () => void | undefined;\n const childSignal = signal<any>(undefined);\n\n if (component === undefined) {\n return { diaRef, parent, instance: null, childSignal };\n }\n\n // close on esc\n if (!options.disableClose) {\n sub = keyMap('esc', () => diaRef.close(), { injector, stop: true });\n }\n\n function destroy() {\n portal.delete(NAME, parent);\n sub?.();\n }\n\n let vwRef: ViewContainerRef;\n let child: ComponentRef<any> | EmbeddedViewRef<any>;\n const parentInstance = parent.instance as BaseDialog;\n\n parentInstance.afterView.pipe(first()).subscribe(vcRef => {\n vwRef = vcRef;\n createChild(component, vcRef);\n\n // diaRef.onDestroy.subscribe(() => child.destroy());\n diaRef.events.next('created');\n childSignal.set(child);\n });\n\n function replace(component: DialogInput<T>) {\n if (vwRef) {\n vwRef.clear();\n createChild(component, vwRef);\n }\n }\n\n function createChild(component: DialogInput<any>, vcRef: ViewContainerRef) {\n // for template type\n if (component instanceof TemplateRef) {\n child = vcRef.createEmbeddedView(\n component,\n { $implicit: options.data },\n { injector: parent.injector },\n );\n diaRef.events.next('created');\n return;\n }\n // for component type\n child = vcRef.createComponent(component, {\n injector: parent.injector,\n });\n }\n // parent.instance.\n\n return { diaRef, parent, replace, childSignal };\n }\n\n function closeAll() {\n portal.clear(NAME);\n }\n return { open, closeAll, updateBaseComponent };\n}\n","/*\n * Public API Surface of portal\n */\n\nexport * from './portal-close.directive';\nexport {\n BaseDialog,\n DIALOG_INJ,\n type DialogInput,\n DialogOptions,\n DialogRef,\n createInj,\n} from './dialog-ref';\nexport * from './portal-base.service';\nexport * from './portal.component';\nexport * from './portal.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ngbase-adk-portal.mjs","sources":["../../../projects/adk/portal/dialog-ref.ts","../../../projects/adk/portal/portal-close.directive.ts","../../../projects/adk/portal/portal.component.ts","../../../projects/adk/portal/portal.service.ts","../../../projects/adk/portal/portal-base.service.ts","../../../projects/adk/portal/public-api.ts","../../../projects/adk/portal/ngbase-adk-portal.ts"],"sourcesContent":["import { DOCUMENT } from '@angular/common';\nimport {\n ElementRef,\n InjectionToken,\n Injector,\n TemplateRef,\n Type,\n ViewContainerRef,\n inject,\n signal,\n} from '@angular/core';\nimport { BehaviorSubject, Subject, Subscription, filter, first } from 'rxjs';\n\nexport type DialogInput<T = any> = Type<T> | TemplateRef<any>;\n\nexport abstract class BaseDialog {\n dialogRef = inject(DialogRef);\n document = inject(DOCUMENT);\n el = inject(ElementRef);\n\n _afterViewSource = new BehaviorSubject<ViewContainerRef | null>(null);\n afterView = this._afterViewSource.asObservable().pipe(filter(Boolean));\n\n target = signal<HTMLElement | null>(null);\n\n // counter is required because we have start and end animation\n // so we need to wait for both to finish before destroying the dialog\n count = 0;\n private isFirst = true;\n private currentActiveElement = new WeakRef(this.document.activeElement as HTMLElement);\n\n constructor() {\n this.onOpen();\n }\n\n setOptions(_: DialogOptions): void {}\n\n close() {\n this.dialogRef.close();\n }\n\n animationDone = () => {\n this.count++;\n if (this.count === 2) {\n this.onClose();\n }\n };\n\n private onOpen() {\n // make the body not scrollable and add padding to the right\n // calculate the padding based on the scrollbar width\n this.isFirst = this.document.body.style.overflow !== 'hidden';\n if (this.isFirst) {\n const padding = window.innerWidth - this.document.body.clientWidth;\n this.document.body.style.paddingRight = `${padding}px`;\n this.document.body.style.overflow = 'hidden';\n }\n }\n\n getTarget(): HTMLElement {\n return this.target()!;\n }\n\n onClose = () => {\n if (this.isFirst) {\n this.document.body.style.paddingRight = '';\n this.document.body.style.overflow = '';\n }\n const target =\n this.dialogRef.options.afterFocusEl || this.getTarget() || this.currentActiveElement.deref();\n target?.focus();\n };\n}\n\nexport class DialogRef<T = any> {\n data = this.options.data;\n private backdropSub: Subscription | null = null;\n\n private onDestroySource = new Subject();\n onDestroy = this.onDestroySource.asObservable().pipe(first());\n\n private afterClosedSource = new Subject<any>();\n afterClosed = this.afterClosedSource.asObservable().pipe(first());\n\n events = new Subject<'created'>();\n\n constructor(\n public options: DialogOptions<T>,\n private destroyParent: VoidFunction,\n private closeAllFn: VoidFunction,\n private animation = true,\n ) {}\n\n close = (data?: any) => {\n this.afterClosedSource.next(data);\n // if (!this.animation) {\n this.destroy();\n // }\n };\n\n closeAll() {\n this.closeAllFn();\n }\n\n destroy() {\n this.backdropSub?.unsubscribe();\n this.afterClosedSource.complete();\n this.onDestroySource.next(false);\n this.destroyParent();\n // console.log('destroyed parent');\n }\n}\n\nexport class DialogTestingRef {\n close() {}\n}\n\nexport class DialogOptions<T = any> {\n backdrop? = true;\n backdropColor? = true;\n hideOverlay? = false;\n data?: T;\n // isSidePopup? = false;\n title?: string;\n fullWindow?: boolean;\n minWidth?: string;\n minHeight?: string;\n width?: string;\n height?: string;\n maxWidth?: string;\n maxHeight?: string;\n classNames?: string[] = [];\n header?: boolean;\n disableClose? = false;\n ayId?: string;\n focusTrap? = true;\n afterFocusEl?: HTMLElement;\n}\n\nexport const DIALOG_INJ = new InjectionToken('dialogInj');\n\nexport function createInj(parent: Injector, data: any, diaRef: DialogRef) {\n return Injector.create({\n providers: [\n { provide: DIALOG_INJ, useValue: data },\n { provide: DialogRef, useValue: diaRef },\n ],\n parent,\n name: 'dialogInj',\n });\n}\n\nexport const DialogTestProviders = [\n { provide: DIALOG_INJ, useValue: {} },\n { provide: DialogRef, useValue: null },\n];\n","import { Directive, inject, input } from '@angular/core';\nimport { DialogRef } from './dialog-ref';\n\n@Directive({\n selector: '[ngbPortalClose]',\n host: {\n '(click)': 'close()',\n },\n})\nexport class NgbPortalClose {\n readonly dialogRef = inject(DialogRef);\n readonly ngbPortalClose = input();\n\n close(data = this.ngbPortalClose()) {\n this.dialogRef.close(data);\n }\n}\n","import { ChangeDetectionStrategy, Component, ViewContainerRef, viewChild } from '@angular/core';\n\n@Component({\n selector: 'ngb-portal',\n template: `<ng-container #myDialog />`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Portal {\n myDialog = viewChild('myDialog', { read: ViewContainerRef });\n}\n","import {\n Injectable,\n Injector,\n ApplicationRef,\n Type,\n ComponentRef,\n inject,\n EnvironmentInjector,\n createComponent,\n} from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { Portal } from './portal.component';\n\n@Injectable({ providedIn: 'root' })\nexport class PortalService {\n private mainContainer?: ComponentRef<Portal>;\n private document = inject(DOCUMENT);\n private appRef = inject(ApplicationRef);\n private environmentInjector = inject(EnvironmentInjector);\n\n private trackElements = new Map<string, ComponentRef<any>[]>();\n\n private componentCreator() {\n this.mainContainer ??= this.appendComponentToBody(Portal);\n return this.mainContainer!.instance.myDialog()!;\n }\n\n appendComponentToBody<T>(component: Type<T>) {\n // 1. Create a component reference from the component\n const componentRef = createComponent(component, {\n environmentInjector: this.environmentInjector,\n });\n\n // 2. append the component to the body\n this.document.body.appendChild(componentRef.location.nativeElement);\n\n // 3. Attach component to the appRef so that it's inside the ng component tree\n this.appRef.attachView(componentRef.hostView);\n return componentRef;\n }\n\n create<T>(component: Type<T>, injector: Injector, container: string) {\n const d = this.componentCreator().createComponent(component, { injector });\n if (!this.trackElements.has(container)) {\n this.trackElements.set(container, []);\n }\n this.trackElements.get(container)!.push(d);\n return d;\n }\n\n delete<T>(container: string, component: ComponentRef<T>) {\n component.destroy();\n const elements = this.trackElements.get(container);\n if (elements) {\n const index = elements.indexOf(component);\n elements.splice(index, 1);\n }\n }\n\n clear(container: string) {\n if (this.trackElements.has(container)) {\n const elements = this.trackElements.get(container);\n elements?.forEach(c => c.destroy());\n this.trackElements.delete(container);\n }\n }\n}\n","import {\n ComponentRef,\n EmbeddedViewRef,\n Injector,\n TemplateRef,\n Type,\n ViewContainerRef,\n inject,\n signal,\n} from '@angular/core';\nimport { keyMap } from '@ngbase/adk/keys';\nimport { first } from 'rxjs';\nimport { BaseDialog, DialogInput, DialogOptions, DialogRef, createInj } from './dialog-ref';\nimport { PortalService } from './portal.service';\n\nexport function basePortal<U>(name: string, baseComponent: Type<U>) {\n const NAME = name;\n const portal = inject(PortalService);\n const injector = inject(Injector);\n\n function updateBaseComponent(component: Type<U>) {\n baseComponent = component;\n }\n\n function open<T>(\n component?: DialogInput<T>,\n callback?: (comp: ComponentRef<U>, opt: DialogOptions) => void,\n opt?: DialogOptions,\n animation = true,\n parentComponent?: Type<U>,\n ) {\n const options = { ...new DialogOptions(), ...opt };\n const diaRef = new DialogRef(options, destroy, closeAll, animation);\n const childInjector = createInj(injector, options.data, diaRef);\n const parent = portal.create(parentComponent || baseComponent, childInjector, NAME);\n\n // set options\n callback?.(parent, options);\n\n // close on backdrop click\n let sub: () => void | undefined;\n const childSignal = signal<ComponentRef<any> | EmbeddedViewRef<any> | undefined>(undefined);\n\n if (component === undefined) {\n return { diaRef, parent, instance: null, childSignal };\n }\n\n // close on esc\n if (!options.disableClose) {\n sub = keyMap('esc', () => diaRef.close(), { injector, stop: true });\n }\n\n function destroy() {\n portal.delete(NAME, parent);\n sub?.();\n }\n\n let vwRef: ViewContainerRef;\n const parentInstance = parent.instance as BaseDialog;\n\n parentInstance.afterView.pipe(first()).subscribe(vcRef => {\n vwRef = vcRef;\n const child = createChild(component, vcRef);\n\n // diaRef.onDestroy.subscribe(() => child.destroy());\n diaRef.events.next('created');\n childSignal.set(child);\n });\n\n function replace(component: DialogInput<T>) {\n if (vwRef) {\n vwRef.clear();\n createChild(component, vwRef);\n }\n }\n\n function createChild(component: DialogInput<any>, vcRef: ViewContainerRef) {\n // for template type\n if (component instanceof TemplateRef) {\n return vcRef.createEmbeddedView(\n component,\n { $implicit: options.data, ...(Array.isArray(options.data) ? {} : options.data) },\n { injector: parent.injector },\n );\n }\n // for component type\n return vcRef.createComponent(component, {\n injector: parent.injector,\n });\n }\n\n return { diaRef, parent, replace, childSignal };\n }\n\n function closeAll() {\n portal.clear(NAME);\n }\n return { open, closeAll, updateBaseComponent };\n}\n","/*\n * Public API Surface of portal\n */\n\nexport * from './portal-close.directive';\nexport {\n BaseDialog,\n DIALOG_INJ,\n type DialogInput,\n DialogOptions,\n DialogRef,\n createInj,\n} from './dialog-ref';\nexport * from './portal-base.service';\nexport * from './portal.component';\nexport * from './portal.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { inject, contentChildren, forwardRef, model, Directive,
|
|
2
|
+
import { inject, contentChildren, forwardRef, model, Directive, Component, ChangeDetectionStrategy, input, booleanAttribute, computed } from '@angular/core';
|
|
3
3
|
import * as i1 from '@ngbase/adk/a11y';
|
|
4
4
|
import { AccessibleGroup, AccessibleItem } from '@ngbase/adk/a11y';
|
|
5
5
|
import { uniqueId, provideValueAccessor } from '@ngbase/adk/utils';
|
|
@@ -34,12 +34,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImpor
|
|
|
34
34
|
type: Directive,
|
|
35
35
|
args: [{
|
|
36
36
|
selector: '[ngbRadioGroup]',
|
|
37
|
+
providers: [provideValueAccessor(NgbRadioGroup)],
|
|
38
|
+
hostDirectives: [AccessibleGroup],
|
|
37
39
|
host: {
|
|
38
40
|
class: 'ngb-radio-group',
|
|
39
41
|
role: 'radiogroup',
|
|
40
42
|
},
|
|
41
|
-
hostDirectives: [AccessibleGroup],
|
|
42
|
-
providers: [provideValueAccessor(NgbRadioGroup)],
|
|
43
43
|
}]
|
|
44
44
|
}], ctorParameters: () => [] });
|
|
45
45
|
|
|
@@ -47,7 +47,7 @@ class NgbRadioIndicator {
|
|
|
47
47
|
constructor() {
|
|
48
48
|
this.radio = inject(NgbRadio);
|
|
49
49
|
this.allyItem = inject(AccessibleItem);
|
|
50
|
-
this.disabled =
|
|
50
|
+
this.disabled = this.radio.disabled;
|
|
51
51
|
this.allyItem._ayId.set(this.radio.ayId);
|
|
52
52
|
this.allyItem._disabled = this.disabled;
|
|
53
53
|
}
|
|
@@ -95,27 +95,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImpor
|
|
|
95
95
|
type: Directive,
|
|
96
96
|
args: [{
|
|
97
97
|
selector: '[ngbRadio]',
|
|
98
|
-
// template: `
|
|
99
|
-
// <button
|
|
100
|
-
// ngbFocusStyle
|
|
101
|
-
// ngbRadioIndicator
|
|
102
|
-
// class="custom-radio relative flex h-4 w-4 flex-none items-center justify-center rounded-full border border-primary"
|
|
103
|
-
// [class]="disabled() ? 'border-muted' : 'border-primary'"
|
|
104
|
-
// >
|
|
105
|
-
// @if (checked()) {
|
|
106
|
-
// <div class="h-2 w-2 rounded-full" [class]="disabled() ? 'bg-muted' : 'bg-primary'"></div>
|
|
107
|
-
// }
|
|
108
|
-
// </button>
|
|
109
|
-
// <ng-content />
|
|
110
|
-
// `,
|
|
111
98
|
host: {
|
|
112
99
|
class: 'ngb-radio',
|
|
113
100
|
'(click)': '!disabled() && updateValue($event)',
|
|
114
101
|
'[attr.aria-disabled]': 'disabled()',
|
|
115
|
-
// '[class]': `disabled() ? 'opacity-60 cursor-not-allowed' : 'cursor-pointer'`,
|
|
116
102
|
},
|
|
117
103
|
}]
|
|
118
104
|
}] });
|
|
105
|
+
function aliasRadio(radio) {
|
|
106
|
+
return { provide: NgbRadio, useExisting: radio };
|
|
107
|
+
}
|
|
119
108
|
|
|
120
109
|
/*
|
|
121
110
|
* Public API Surface of radio
|
|
@@ -125,5 +114,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImpor
|
|
|
125
114
|
* Generated bundle index. Do not edit.
|
|
126
115
|
*/
|
|
127
116
|
|
|
128
|
-
export { NgbRadio, NgbRadioGroup, NgbRadioIndicator };
|
|
117
|
+
export { NgbRadio, NgbRadioGroup, NgbRadioIndicator, aliasRadio };
|
|
129
118
|
//# sourceMappingURL=ngbase-adk-radio.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngbase-adk-radio.mjs","sources":["../../../projects/adk/radio/radio-group.ts","../../../projects/adk/radio/radio.ts","../../../projects/adk/radio/public-api.ts","../../../projects/adk/radio/ngbase-adk-radio.ts"],"sourcesContent":["import { contentChildren, Directive, forwardRef, inject, model } from '@angular/core';\nimport { ControlValueAccessor } from '@angular/forms';\nimport { AccessibleGroup } from '@ngbase/adk/a11y';\nimport { provideValueAccessor, uniqueId } from '@ngbase/adk/utils';\nimport { NgbRadio } from './radio';\n\n@Directive({\n selector: '[ngbRadioGroup]',\n host: {\n class: 'ngb-radio-group',\n role: 'radiogroup',\n },\n
|
|
1
|
+
{"version":3,"file":"ngbase-adk-radio.mjs","sources":["../../../projects/adk/radio/radio-group.ts","../../../projects/adk/radio/radio.ts","../../../projects/adk/radio/public-api.ts","../../../projects/adk/radio/ngbase-adk-radio.ts"],"sourcesContent":["import { contentChildren, Directive, forwardRef, inject, model } from '@angular/core';\nimport { ControlValueAccessor } from '@angular/forms';\nimport { AccessibleGroup } from '@ngbase/adk/a11y';\nimport { provideValueAccessor, uniqueId } from '@ngbase/adk/utils';\nimport { NgbRadio } from './radio';\n\n@Directive({\n selector: '[ngbRadioGroup]',\n providers: [provideValueAccessor(NgbRadioGroup)],\n hostDirectives: [AccessibleGroup],\n host: {\n class: 'ngb-radio-group',\n role: 'radiogroup',\n },\n})\nexport class NgbRadioGroup implements ControlValueAccessor {\n readonly allyGroup = inject(AccessibleGroup);\n readonly radios = contentChildren(\n forwardRef(() => NgbRadio),\n { descendants: true },\n );\n readonly value = model<any>('');\n readonly ayId = uniqueId();\n onChange?: (value: any) => {};\n onTouched?: () => {};\n\n constructor() {\n this.allyGroup.ayId.set(this.ayId);\n this.allyGroup.clickable.set(true);\n }\n\n updateValue(value: any) {\n this.value.set(value);\n this.onChange?.(value);\n this.onTouched?.();\n }\n\n writeValue(value: any): void {\n this.value.set(value);\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n}\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n Directive,\n inject,\n input,\n} from '@angular/core';\nimport { AccessibleItem } from '@ngbase/adk/a11y';\nimport { NgbRadioGroup } from './radio-group';\n\n@Component({\n selector: '[ngbRadioIndicator]',\n exportAs: 'ngbRadioIndicator',\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [AccessibleItem],\n template: `\n @if (radio.checked()) {\n <ng-content />\n }\n `,\n host: {\n type: 'button',\n role: 'radio',\n '[attr.aria-checked]': 'radio.checked()',\n },\n})\nexport class NgbRadioIndicator {\n readonly radio = inject(NgbRadio);\n readonly allyItem = inject(AccessibleItem);\n readonly disabled = this.radio.disabled;\n\n constructor() {\n this.allyItem._ayId.set(this.radio.ayId);\n this.allyItem._disabled = this.disabled;\n }\n}\n\n@Directive({\n selector: '[ngbRadio]',\n host: {\n class: 'ngb-radio',\n '(click)': '!disabled() && updateValue($event)',\n '[attr.aria-disabled]': 'disabled()',\n },\n})\nexport class NgbRadio {\n readonly radio = inject(NgbRadioGroup);\n readonly value = input<any>();\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly checked = computed(() => this.value() === this.radio.value());\n readonly ayId = this.radio.ayId;\n\n updateValue() {\n this.radio.updateValue(this.value());\n }\n}\n\nexport function aliasRadio(radio: typeof NgbRadio) {\n return { provide: NgbRadio, useExisting: radio };\n}\n","/*\n * Public API Surface of radio\n */\n\nexport * from './radio';\nexport * from './radio-group';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|