finpro
Version:
10 lines (9 loc) • 2.15 kB
JavaScript
import{a as u}from"./chunk-JA3VZI2D.js";import{a as l,b as o,g as a,j as m}from"./chunk-GBPY57YZ.js";import{a as i}from"./chunk-NZ3RGSR6.js";var d=l`:host{display:block;position:relative;background:var(--fp-color-primary-background);border:solid 2px var(--fp-color-primary);border-radius:var(--fp-border-radius-s);padding:var(--fp-size-s) 0;overflow:auto;overscroll-behavior:none}::slotted(fp-divider){--spacing:var(--fp-size-s)}`,c=d;var n=class extends u{static get styles(){return[c]}connectedCallback(){super.connectedCallback(),this.setAttribute("role","menu")}handleClick(e){let r=e.target.closest("fp-menu-item");!r||r.disabled||r.type==="checkbox"&&(r.checked=!r.checked)}handleKeyDown(e){if(e.key==="Enter"){let t=this.getCurrentItem();e.preventDefault(),t==null||t.click()}if(e.key===" "&&e.preventDefault(),["ArrowDown","ArrowUp","Home","End"].includes(e.key)){let t=this.getAllItems(),r=this.getCurrentItem(),s=r?t.indexOf(r):0;t.length>0&&(e.preventDefault(),e.key==="ArrowDown"?s++:e.key==="ArrowUp"?s--:e.key==="Home"?s=0:e.key==="End"&&(s=t.length-1),s<0&&(s=t.length-1),s>t.length-1&&(s=0),this.setCurrentItem(t[s]),t[s].focus())}}handleMouseDown(e){let t=e.target;this.isMenuItem(t)&&this.setCurrentItem(t)}handleSlotChange(){let e=this.getAllItems();e.length>0&&this.setCurrentItem(e[0])}isMenuItem(e){var t;return e.tagName.toLowerCase()==="fp-menu-item"||["menuitem","menuitemcheckbox","menuitemradio"].includes((t=e.getAttribute("role"))!=null?t:"")}getAllItems(){return[...this.defaultSlot.assignedElements({flatten:!0})].filter(e=>!(e.inert||!this.isMenuItem(e)))}getCurrentItem(){return this.getAllItems().find(e=>e.getAttribute("tabindex")==="0")}setCurrentItem(e){this.getAllItems().forEach(r=>{r.setAttribute("tabindex",r===e?"0":"-1")})}render(){return o`
<slot
@slotchange=${this.handleSlotChange}
@click=${this.handleClick}
@keydown=${this.handleKeyDown}
@mousedown=${this.handleMouseDown}
></slot>
`}};i([m("slot")],n.prototype,"defaultSlot",2),n=i([a("fp-menu")],n);export{n as a};
//# sourceMappingURL=chunk-2M45HVY7.js.map