-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathp-509ab169.entry.js
5 lines (5 loc) · 5.93 KB
/
p-509ab169.entry.js
1
2
3
4
5
/*!
* Built by BASIS
* Copyright BASIS International Ltd.
*/
import{r as t,c as s,a as i,h as e,g as o}from"./p-0e3693b5.js";import{g as h}from"./p-dc076e70.js";import{o as n,f as d,P as a}from"./p-5618954f.js";const r=class{constructor(i){t(this,i),this.openedEvent=s(this,"dwc-popover-opened",7),this.closedEvent=s(this,"dwc-popover-closed",7),this.cancelEvent=s(this,"dwc-popover-canceled",7),this.arrow=!0,this.disabled=!1,this.distance=2,this.opened=!1,this.openWidth="",this.openHeight="",this.placement="bottom-end",this.skidding=0,this.togglable=!0,this.toggleOnClick=!0,this.toggleOnEnter=!0,this.toggleOnArrow=!0,this.type=void 0}onOpenedChanged(){this.opened?this.open():this.close()}onWidthAndHeightChange(){this.updatePopoverStyle()}onProperOptionsChanged(){this.popper&&this.popper.setOptions({placement:this.placement,modifiers:[n(this.skidding,this.distance),d()]})}connectedCallback(){this.handleDocumentKeyDown=this.handleDocumentKeyDown.bind(this),this.handleDocumentMouseDown=this.handleDocumentMouseDown.bind(this),this.handleHandlerClick=this.handleHandlerClick.bind(this),this.handleHandlerKeyDown=this.handleHandlerKeyDown.bind(this),this.handleHandlerKeyUp=this.handleHandlerKeyUp.bind(this)}componentDidLoad(){window.MutationObserver&&(this.mutationObserver=new MutationObserver((()=>{this.updateHandlerAccessible()})),this.mutationObserver.observe(this.el,{childList:!0,subtree:!0})),this.popper=new a(this.$handler,this.$positioner,{strategy:"absolute",placement:this.placement,moveTo:document.body,restoreTo:this.el,transitionedElement:this.$popover,modifiers:[n(this.skidding,this.distance),d()]}),this.opened&&this.open(),this.updateHandlerAccessible()}disconnectedCallback(){this.close(),this.popper&&this.popper.destroy(),this.mutationObserver&&this.mutationObserver.disconnect()}async open(){return this.doOpen(!1)}async close(){return this.doClose(!1)}async toggle(){return this.doToggle(!1)}async reposition(){this.isOpened&&this.popper&&this.popper.forceUpdate()}async getPositionerElement(){return new Promise((t=>{t(this.$positioner)}))}async doOpen(t=!0){this.disabled||!this.popper||this.isOpened||(document.addEventListener("keydown",this.handleDocumentKeyDown),document.addEventListener("mousedown",this.handleDocumentMouseDown),await this.popper.open(),this.updatePopoverStyle(),this.isOpened=!0,this.opened=!0,t&&this.openedEvent.emit())}async doClose(t=!0){!this.disabled&&this.popper&&this.isOpened&&(document.removeEventListener("keydown",this.handleDocumentKeyDown),document.removeEventListener("mousedown",this.handleDocumentMouseDown),await this.popper.close(),this.isOpened=!1,this.opened=!1,this.focusHandler(),t&&this.closedEvent.emit())}async doToggle(t=!0){this.opened?await this.doClose(t):await this.doOpen(t)}focusHandler(){const t=this.$handler.querySelector("[slot]");t&&("function"==typeof t.setFocus?t.setFocus():"function"==typeof t.focus&&t.focus())}updateHandlerAccessible(){i((()=>{const t=this.$handler.querySelector("[slot]");if(t){const s=h(t);s&&(s.setAttribute("aria-haspopup","true"),s.setAttribute("aria-expanded",this.opened?"true":"false"))}}))}async updatePopoverStyle(){if(!this.$popover)return;const t=this.$popover;t.style.maxHeight=this.openHeight?this.openHeight:t.style.getPropertyValue("--dwc-popover-max-height"),t.style.setProperty("--dwc-popover-open-height",t.style.maxHeight),this.openWidth&&(t.style.width=this.openWidth,t.style.setProperty("--dwc-popover-open-width",t.style.width)),this.reposition()}handleDocumentKeyDown(t){if(this.togglable)return"Escape"===t.key?(this.cancelEvent.emit(),this.doClose(),void this.focusHandler()):void("Tab"!==t.key||this.opened||setTimeout((()=>{var t;const s=this.el.getRootNode()instanceof ShadowRoot?null===(t=document.activeElement.shadowRoot)||void 0===t?void 0:t.activeElement:document.activeElement;(null==s?void 0:s.closest(this.el.tagName.toLowerCase()))!==this.el&&this.doClose()})))}handleDocumentMouseDown(t){if(!this.togglable)return;const s=t.composedPath();s.includes(this.$handler)||s.includes(this.$popover)||this.doToggle()}handleHandlerClick(t){0!==t.detail&&this.togglable&&this.toggleOnClick&&this.doToggle()}async handleHandlerKeyDown(t){if(this.togglable)return"Escape"===t.key?(this.cancelEvent.emit(),this.focusHandler(),void this.doClose()):["Enter"].includes(t.key)&&this.toggleOnEnter||["ArrowDown","ArrowUp"].includes(t.key)&&this.toggleOnArrow?(t.preventDefault(),void this.doToggle()):void 0}handleHandlerKeyUp(t){this.togglable&&" "===t.key&&t.preventDefault()}render(){return e("div",{key:"035318bf6324b05cb25feb43b4a9e5d8716db16e",class:{"dwc-popover-control":!0,"dwc-popover-control--opened":this.opened}},e("div",{key:"2cf3b90ca5d4fde2a0784991deb6219d6acc8015",class:"dwc-popover-control__handler",ref:t=>this.$handler=t,onClick:this.handleHandlerClick,onKeyDown:this.handleHandlerKeyDown,onKeyUp:this.handleHandlerKeyUp},e("slot",{key:"1a93657302f970acb2c08a25e24b320f841403b2",name:"handler"})),e("div",{key:"f29a4f43adf9026b484ba53fd90d83dc4bb105dd",ref:t=>this.$positioner=t,class:"dwc-positioner dwc-positioner--popover","data-popover-for":this.type,hidden:!0},this.arrow&&e("div",{key:"3c598b53fc37b4a05d1c1799b0bc1d6e25a08879",class:"dwc-popper-arrow","data-popper-arrow":!0}),e("div",{key:"4845faeb24344186bcfb6a97430cd1e2934661bc",ref:t=>this.$popover=t,class:{"dwc-popper":!0,"dwc-popper--popover":!0}},e("slot",{key:"008414c0adee0e4ea00ace3f937d8fe8ada85c32"}))))}get el(){return o(this)}static get watchers(){return{opened:["onOpenedChanged"],openWidth:["onWidthAndHeightChange"],openHeight:["onWidthAndHeightChange"],distance:["onProperOptionsChanged"],placement:["onProperOptionsChanged"],skidding:["onProperOptionsChanged"]}}};r.style=".sc-dwc-popover-h{box-sizing:border-box;display:inline-block;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-tap-highlight-color:transparent;text-size-adjust:100%}.sc-dwc-popover-h *.sc-dwc-popover,.sc-dwc-popover-h *.sc-dwc-popover::before,.sc-dwc-popover-h *.sc-dwc-popover::after{box-sizing:inherit}";export{r as dwc_popover}