carbon-components-angular
Version:
Next generation components
1 lines • 22.3 kB
Source Map (JSON)
{"version":3,"file":"carbon-components-angular-popover.mjs","sources":["../../src/popover/popover.directive.ts","../../src/popover/popover-content.component.ts","../../src/popover/popover.module.ts","../../src/popover/carbon-components-angular-popover.ts"],"sourcesContent":["import {\n\tAfterViewInit,\n\tChangeDetectorRef,\n\tDirective,\n\tElementRef,\n\tEventEmitter,\n\tHostBinding,\n\tInput,\n\tNgZone,\n\tOnChanges,\n\tOnDestroy,\n\tOutput,\n\tRenderer2,\n\tSimpleChanges\n} from \"@angular/core\";\nimport {\n\tarrow,\n\tautoUpdate,\n\tcomputePosition,\n\tflip,\n\toffset,\n\tPlacement\n} from \"@floating-ui/dom\";\n\n// Deprecated popover alignments\ntype oldPlacement = \"top-left\"\n\t| \"top-right\"\n\t| \"bottom-left\"\n\t| \"bottom-right\"\n\t| \"left-bottom\"\n\t| \"left-top\"\n\t| \"right-bottom\"\n\t| \"right-top\";\n\n@Directive({\n\tselector: \"[cdsPopover], [ibmPopover]\"\n})\nexport class PopoverContainer implements AfterViewInit, OnChanges, OnDestroy {\n\t/**\n\t * Set alignment of popover\n\t * As of v5, `oldPlacements` are now deprecated in favor of Placements\n\t *\n\t * When `autoAlign` is set to `true`, alignment may change for best placement\n\t */\n\t@Input() set align(alignment: oldPlacement | Placement) {\n\t\t// If alignment is not passed, the default value will be `undefined`.\n\t\tif (!alignment) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst previousAlignment = this._align;\n\t\tswitch (alignment) {\n\t\t\tcase \"top-left\":\n\t\t\t\tthis._align = \"top-start\";\n\t\t\t\tbreak;\n\t\t\tcase \"top-right\":\n\t\t\t\tthis._align = \"top-end\";\n\t\t\t\tbreak;\n\t\t\tcase \"bottom-left\":\n\t\t\t\tthis._align = \"bottom-start\";\n\t\t\t\tbreak;\n\t\t\tcase \"bottom-right\":\n\t\t\t\tthis._align = \"bottom-end\";\n\t\t\t\tbreak;\n\t\t\tcase \"left-top\":\n\t\t\t\tthis._align = \"left-start\";\n\t\t\t\tbreak;\n\t\t\tcase \"left-bottom\":\n\t\t\t\tthis._align = \"left-end\";\n\t\t\t\tbreak;\n\t\t\tcase \"right-top\":\n\t\t\t\tthis._align = \"right-start\";\n\t\t\t\tbreak;\n\t\t\tcase \"right-bottom\":\n\t\t\t\tthis._align = \"right-end\";\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthis._align = alignment as Placement;\n\t\t\t\tbreak;\n\t\t}\n\t\tthis.updateAlignmentClass(this._align, previousAlignment);\n\t}\n\n\t_align: Placement = \"bottom\";\n\treadonly alignmentClassPrefix = \"cds--popover--\";\n\n\t/**\n\t * Emits an event when the dialog is closed\n\t */\n\t@Output() onClose: EventEmitter<Event> = new EventEmitter();\n\t/**\n\t * Emits an event when the dialog is opened\n\t */\n\t@Output() onOpen: EventEmitter<Event> = new EventEmitter();\n\t/**\n\t * Emits an event when the state of `isOpen` changes. Allows `isOpen` to be double bound\n\t */\n\t@Output() isOpenChange = new EventEmitter<boolean>();\n\t/**\n\t * Show caret at the alignment position\n\t */\n\t@HostBinding(\"class.cds--popover--caret\") @Input() caret = true;\n\t/**\n\t * Enable drop shadow around the popover container\n\t */\n\t@HostBinding(\"class.cds--popover--drop-shadow\") @Input() dropShadow = true;\n\t/**\n\t * Enable high contrast for popover container\n\t */\n\t@HostBinding(\"class.cds--popover--high-contrast\") @Input() highContrast = false;\n\t/**\n\t * **Experimental**: Use floating-ui to position the tooltip\n\t * This is not toggleable - should be assigned once\n\t */\n\t@HostBinding(\"class.cds--popover--auto-align\") @Input() autoAlign = false;\n\t@HostBinding(\"class.cds--popover-container\") containerClass = true;\n\t@Input() @HostBinding(\"class.cds--popover--open\") isOpen = false;\n\n\tprotected popoverContentRef: HTMLElement;\n\tprotected caretRef: HTMLElement;\n\tprotected caretOffset: number;\n\tprotected caretHeight: number;\n\tprotected unmountFloatingElement: Function;\n\n\tconstructor(\n\t\tprotected elementRef: ElementRef,\n\t\tprotected ngZone: NgZone,\n\t\tprotected renderer: Renderer2,\n\t\tprotected changeDetectorRef: ChangeDetectorRef\n\t) {}\n\n\t/**\n\t * Handles emitting open/close event\n\t * @param open - Is the popover container open\n\t * @param event - Event\n\t */\n\thandleChange(open: boolean, event?: Event) {\n\t\t// We only emit the event when parameter has an event to keep existing behavior\n\t\tif ((this.isOpen !== open) && event) {\n\t\t\tthis.isOpenChange.emit(open);\n\t\t}\n\n\t\tif (open) {\n\t\t\tif (event) {\n\t\t\t\tthis.onOpen.emit(event);\n\t\t\t}\n\n\t\t\t// when auto alignment is enabled, use auto update to set the placement for the element\n\t\t\tif (this.autoAlign) {\n\t\t\t\tif (this.caretRef) {\n\t\t\t\t\t// Get caret offset/height property\n\t\t\t\t\t// Getting computed styles once every open, otherwise expensive.\n\t\t\t\t\tconst computedStyle = getComputedStyle(this.caretRef);\n\t\t\t\t\tconst offset = computedStyle.getPropertyValue(\"--cds-popover-offset\");\n\t\t\t\t\tconst height = computedStyle.getPropertyValue(\"--cds-popover-caret-height\");\n\t\t\t\t\tthis.caretOffset = (offset?.includes(\"px\") ? Number(offset.split(\"px\", 1)[0]) : Number(offset.split(\"rem\", 1)[0]) * 16) || 10;\n\t\t\t\t\tthis.caretHeight = (height?.includes(\"px\") ? Number(height.split(\"px\", 1)[0]) : Number(height.split(\"rem\", 1)[0]) * 16) || 6;\n\t\t\t\t}\n\t\t\t\tif (this.elementRef.nativeElement && this.popoverContentRef) {\n\t\t\t\t\tthis.unmountFloatingElement = autoUpdate(\n\t\t\t\t\t\tthis.elementRef.nativeElement,\n\t\t\t\t\t\tthis.popoverContentRef,\n\t\t\t\t\t\tthis.recomputePosition.bind(this)\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tthis.cleanUp();\n\t\t\tif (event) {\n\t\t\t\tthis.onClose.emit(event);\n\t\t\t}\n\t\t}\n\t\tthis.isOpen = open;\n\t\tthis.changeDetectorRef.markForCheck();\n\t}\n\n\troundByDPR(value) {\n\t\tconst dpr = window.devicePixelRatio || 1;\n\t\treturn Math.round(value * dpr) / dpr;\n\t}\n\n\t/**\n\t * Compute position of tooltip when autoAlign is enabled\n\t */\n\trecomputePosition() {\n\t\t// Run outside of angular zone to avoid unnecessary change detection and rely on floating-ui\n\t\tthis.ngZone.runOutsideAngular(async () => {\n\t\t\tconst { x, y, placement, middlewareData } = await computePosition(\n\t\t\t\tthis.elementRef.nativeElement,\n\t\t\t\tthis.popoverContentRef,\n\t\t\t\t{\n\t\t\t\t\tplacement: this._align,\n\t\t\t\t\tstrategy: \"fixed\",\n\t\t\t\t\tmiddleware: [\n\t\t\t\t\t\toffset(this.caretOffset),\n\t\t\t\t\t\tflip({ fallbackAxisSideDirection: \"start\" }),\n\t\t\t\t\t\tarrow({ element: this.caretRef })\n\t\t\t\t\t]\n\t\t\t\t});\n\n\t\t\tconst previousAlignment = this._align;\n\t\t\tthis._align = placement;\n\t\t\tthis.updateAlignmentClass(this._align, previousAlignment);\n\n\t\t\t// Using CSSOM to manipulate CSS to avoid content security policy inline-src\n\t\t\t// https://github.com/w3c/webappsec-csp/issues/212\n\t\t\tObject.assign(this.popoverContentRef.style, {\n\t\t\t\tposition: \"fixed\",\n\t\t\t\ttop: \"0\",\n\t\t\t\tleft: \"0\",\n\t\t\t\t// Using transform instead of top/left position to improve performance\n\t\t\t\ttransform: `translate(${this.roundByDPR(x)}px,${this.roundByDPR(y)}px)`\n\t\t\t});\n\n\t\t\tif (middlewareData.arrow) {\n\t\t\t\tconst { x: arrowX, y: arrowY } = middlewareData.arrow;\n\n\t\t\t\tconst staticSide = {\n\t\t\t\t\ttop: \"bottom\",\n\t\t\t\t\tright: \"left\",\n\t\t\t\t\tbottom: \"top\",\n\t\t\t\t\tleft: \"right\"\n\t\t\t\t}[placement.split(\"-\")[0]];\n\n\t\t\t\tthis.caretRef.style.left = arrowX != null ? `${arrowX}px` : \"\";\n\t\t\t\tthis.caretRef.style.top = arrowY != null ? `${arrowY}px` : \"\";\n\t\t\t\tthis.caretRef.style.right = \"\";\n\t\t\t\tthis.caretRef.style.bottom = \"\";\n\n\t\t\t\tif (staticSide) {\n\t\t\t\t\tthis.caretRef.style[staticSide] = `${-this.caretHeight}px`;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\t/**\n\t * Close the popover and reopen it with updated values without emitting an event\n\t * @param changes\n\t */\n\tngOnChanges(changes: SimpleChanges): void {\n\t\t// Close and reopen the popover, handle alignment/programmatic open/close\n\t\tconst originalState = this.isOpen;\n\t\tthis.handleChange(false);\n\n\t\t// Ignore first change since content is not initialized\n\t\tif (changes.autoAlign && !changes.autoAlign.firstChange) {\n\t\t\t// Reset the inline styles\n\t\t\tthis.popoverContentRef = this.elementRef.nativeElement.querySelector(\".cds--popover-content\");\n\t\t\tthis.popoverContentRef.setAttribute(\"style\", \"\");\n\t\t\tthis.caretRef = this.elementRef.nativeElement.querySelector(\"span.cds--popover-caret\");\n\t\t}\n\n\t\tthis.handleChange(originalState);\n\t}\n\n\t/**\n\t * Handle initialization of element\n\t */\n\tngAfterViewInit(): void {\n\t\tthis.initializeReferences();\n\t}\n\n\tinitializeReferences(): void {\n\t\tthis.updateAlignmentClass(this._align);\n\n\t\t// Initialize html references since they will not change and are required for popover components\n\t\tthis.popoverContentRef = this.elementRef.nativeElement.querySelector(\".cds--popover-content\");\n\t\tthis.caretRef = this.elementRef.nativeElement.querySelector(\"span.cds--popover-caret\");\n\n\t\t// Handle initial isOpen\n\t\tthis.handleChange(this.isOpen);\n\t}\n\n\t/**\n\t * Clean up\n\t */\n\tngOnDestroy(): void {\n\t\tthis.cleanUp();\n\t}\n\n\t/**\n\t * Clean up `autoUpdate` if auto alignment is enabled\n\t */\n\tcleanUp() {\n\t\tif (this.unmountFloatingElement) {\n\t\t\tthis.unmountFloatingElement();\n\t\t}\n\t\tthis.unmountFloatingElement = undefined;\n\t}\n\n\t/**\n\t * Replace existing previous alignment class with new\n\t * @param previousAlignment\n\t */\n\tupdateAlignmentClass(newAlignment: string, previousAlignment?: string) {\n\t\tif (this.elementRef.nativeElement && previousAlignment !== newAlignment) {\n\t\t\tconst regexp = new RegExp(\"right|top|left|bottom\");\n\t\t\t// Since we are constantly switching, it's safer to delete all matching class names\n\t\t\tthis.elementRef.nativeElement.classList.forEach(className => {\n\t\t\t\tif (regexp.test(className)) {\n\t\t\t\t\tthis.renderer.removeClass(this.elementRef.nativeElement, `${className}`);\n\t\t\t\t}\n\t\t\t});\n\t\t\tthis.renderer.addClass(this.elementRef.nativeElement, `${this.alignmentClassPrefix}${newAlignment}`);\n\t\t}\n\t}\n}\n","import {\n\tComponent,\n\tHostBinding,\n\tViewChild,\n\tElementRef,\n\tAfterViewInit,\n\tChangeDetectorRef\n} from \"@angular/core\";\n\n/**\n * [See demo](../../?path=/story/components-popover--basic)\n */\n@Component({\n\tselector: \"cds-popover-content, ibm-popover-content\",\n\ttemplate: `\n\t\t<span class=\"cds--popover-content\" #content>\n\t\t\t<div>\n\t\t\t\t<ng-content></ng-content>\n\t\t\t</div>\n\t\t\t<span *ngIf=\"autoAlign\" class=\"cds--popover-caret cds--popover--auto-align\"></span>\n\t\t</span>\n\t\t<span *ngIf=\"!autoAlign\" class=\"cds--popover-caret\"></span>\n\t`\n})\nexport class PopoverContent implements AfterViewInit {\n\t@HostBinding(\"class.cds--popover\") popoverClass = true;\n\t@ViewChild(\"content\") popoverContent: ElementRef;\n\tautoAlign = false;\n\n\tconstructor(private changeDetectorRef: ChangeDetectorRef) {}\n\n\tngAfterViewInit(): void {\n\t\tif (this.popoverContent) {\n\t\t\t// Check we are in a popover with autoAlign enabled\n\t\t\tthis.autoAlign = !!this.popoverContent.nativeElement.closest(\".cds--popover--auto-align\");\n\t\t\t// Run change detection manually to resolve ExpressionHasChanged\n\t\t\tthis.changeDetectorRef.detectChanges();\n\t\t}\n\t}\n}\n","import { NgModule } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\n\nimport { PopoverContainer } from \"./popover.directive\";\nimport { PopoverContent } from \"./popover-content.component\";\n\n@NgModule({\n\tdeclarations: [\n\t\tPopoverContainer,\n\t\tPopoverContent\n\t],\n\texports: [\n\t\tPopoverContainer,\n\t\tPopoverContent\n\t],\n\timports: [CommonModule]\n})\nexport class PopoverModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}