UNPKG

@limetech/lime-elements

Version:
1 lines 12.4 kB
import{r as t,c as i,h as e,H as o,a as r}from"./p-DBTJNfo7.js";import{t as s}from"./p-DVRaJQvC.js";import{i as a}from"./p-CrvUOVvg.js";import{c as n}from"./p-JbKhhoXs.js";import{m as l,r as c}from"./p-BgTwPGeH.js";import{b as h,d,g as b}from"./p-CgNJbSP4.js";const m=class{constructor(o){t(this,o),this.itemSelected=i(this,"itemSelected"),this.actions=[],this.language=document.documentElement.lang,this.collapsible=!1,this.overflowCutoff=this.actions.length,this.actionBarIsShrunk=!1,this.hasRendered=!1,this.isFirstIntersectionCheck=!0,this.actionBarItems=[],this.renderActionBarItem=(t,i)=>e("limel-action-bar-item",{item:t,onSelect:this.handleSelect,isVisible:this.isVisible(i),role:"gridcell"}),this.renderOverflowMenu=t=>{if(!(this.actions.length-this.overflowCutoff))return;const i={name:"more",color:"rgb(var(--contrast-1000))",title:this.getTranslation("action-bar.actions")};return e("limel-action-bar-overflow-menu",{openDirection:this.openDirection,items:t,onSelect:this.handleSelect,role:"gridcell",overFlowIcon:this.actionBarIsShrunk?i:void 0})},this.handleCollapseExpandClick=()=>{this.actionBarIsShrunk=!this.actionBarIsShrunk},this.handleSelect=t=>{t.stopPropagation(),a(t.detail)&&this.itemSelected.emit(t.detail)},this.getTranslation=t=>s.get(t,this.language),this.handleIntersection=t=>{const i=t.filter((t=>t.isIntersecting)),e=t.filter((t=>!t.isIntersecting));this.overflowCutoff=this.isFirstIntersectionCheck?i.length:this.overflowCutoff+i.length-e.length,this.isFirstIntersectionCheck=!1}}connectedCallback(){this.hasRendered&&this.createIntersectionObserver()}componentDidRender(){var t;this.haveItemsChanged()&&(null===(t=this.intersectionObserver)||void 0===t||t.disconnect(),this.createIntersectionObserver())}disconnectedCallback(){var t;null===(t=this.intersectionObserver)||void 0===t||t.disconnect(),this.intersectionObserver=void 0,this.actionBarItems=[]}render(){this.hasRendered=!0;let t=[];return this.actions.length>0&&(t=this.actions.slice(this.overflowCutoff)),e(o,{key:"f81d3acb912e7191889f7b8e4462c6e1a1db692b","aria-label":this.accessibleLabel,class:{"is-full-width":"fullWidth"===this.layout,"is-floating":"floating"===this.layout,"is-shrunk":this.actionBarIsShrunk&&this.collapsible,"can-be-shrunk":!!this.collapsible},role:"grid"},e("div",{key:"d6d96d43a7dd278f1f65033b070213cd1c6b963e",class:"items",role:"rowgroup"},this.actions.map(this.renderActionBarItem)),this.renderOverflowMenu(t),this.renderCollapseExpandButton())}renderCollapseExpandButton(){if(this.collapsible&&!(this.actions.length<=1))return e("button",{class:{"expand-shrink":!0},"aria-label":this.tooltipLabel,type:"button",onClick:this.handleCollapseExpandClick},e("limel-icon",{name:"double_left",id:"tooltip-expand-shrink-button"}),e("limel-tooltip",{label:this.tooltipLabel,elementId:"tooltip-expand-shrink-button"}))}isVisible(t){return t<this.overflowCutoff}get tooltipLabel(){let t="action-bar.collapse";return this.actionBarIsShrunk&&(t="action-bar.expand"),this.getTranslation(t)}createIntersectionObserver(){const t={root:this.host.shadowRoot.querySelector(".items"),rootMargin:"0px",threshold:1};this.overflowCutoff=this.actions.length,this.isFirstIntersectionCheck=!0,this.actionBarItems=[],this.intersectionObserver=new IntersectionObserver(this.handleIntersection,t);for(const t of this.host.shadowRoot.querySelectorAll("limel-action-bar-item"))this.observe(t)}observe(t){this.intersectionObserver.observe(t),this.actionBarItems.push(t)}haveItemsChanged(){const t=this.actionBarItems.some((t=>!this.host.shadowRoot.contains(t))),i=[...this.host.shadowRoot.querySelectorAll("limel-action-bar-item")].some((t=>!this.actionBarItems.includes(t)));return t||i}get host(){return r(this)}};m.style='@charset "UTF-8";:host(limel-action-bar){--action-bar-item-height:2rem;--limel-action-bar-item-text-color:var( --action-bar-item-text-color, rgb(var(--contrast-1100)) );box-sizing:border-box;display:inline-flex;align-items:center;padding:0.125rem 0.25rem;max-width:100%;border-radius:var(--action-bar-border-radius);background-color:var(--action-bar-background-color, rgb(var(--contrast-100)));transition:max-width 0.3s ease}:host(limel-action-bar),.items{gap:0.25rem}@media (pointer: coarse){:host(limel-action-bar),.items{gap:0.5rem}}.items{display:inline-flex;max-width:100%;min-width:0}:host(limel-action-bar.is-shrunk) .items{opacity:0}:host(limel-action-bar:not(.is-shrunk)) .items{opacity:1}:host(limel-action-bar.is-full-width){width:100%}:host(limel-action-bar.is-floating){--action-bar-border-radius:100vw;border:1px solid rgb(var(--contrast-400));padding-right:0.125rem;padding-left:0.125rem;max-width:calc(100% - 2rem);box-shadow:var(--shadow-depth-16), var(--shadow-depth-8)}:host(limel-action-bar.is-shrunk){max-width:5rem;transition:max-width 0.3s ease-in-out}:host(limel-action-bar.is-shrunk) .expand-shrink{transition:transform 0.3s ease;transform:rotateY(180deg)}:host(limel-action-bar:not(.is-shrunk)){max-width:100%;transition:max-width 0.3s ease-in-out}:host(limel-action-bar:not(.is-shrunk)) .expand-shrink{transition:transform 0.3s ease;transform:rotateY(0deg)}:host(limel-action-bar.can-be-shrunk.is-full-width) .expand-shrink{margin-left:auto}.expand-shrink{all:unset;box-sizing:border-box;border-radius:50%;transition:color var(--limel-clickable-transition-speed, 0.4s) ease, background-color var(--limel-clickable-transition-speed, 0.4s) ease, box-shadow var(--limel-clickable-transform-speed, 0.4s) ease, transform var(--limel-clickable-transform-speed, 0.4s) var(--limel-clickable-transform-timing-function, ease);cursor:pointer;color:var(--limel-theme-on-surface-color);background-color:transparent}.expand-shrink:hover,.expand-shrink:focus,.expand-shrink:focus-visible{will-change:color, background-color, box-shadow, transform}.expand-shrink:hover,.expand-shrink:focus-visible{transform:translate3d(0, 0.01rem, 0);color:var(--limel-theme-on-surface-color);background-color:var(--lime-elevated-surface-background-color)}.expand-shrink:hover{box-shadow:var(--button-shadow-hovered)}.expand-shrink:active{--limel-clickable-transform-timing-function:cubic-bezier( 0.83, -0.15, 0.49, 1.16 );transform:translate3d(0, 0.05rem, 0);box-shadow:var(--button-shadow-pressed)}.expand-shrink:hover,.expand-shrink:active{--limel-clickable-transition-speed:0.2s;--limel-clickable-transform-speed:0.16s}.expand-shrink:focus{outline:none}.expand-shrink:focus-visible{outline:none;box-shadow:var(--shadow-depth-8-focused)}.expand-shrink{display:flex;justify-content:center;align-items:center}.expand-shrink limel-icon{width:1.5rem;height:1.5rem;padding:0.125rem;color:var(--action-bar-shrink-icon-color, rgb(var(--contrast-1000)))}';const u=class{constructor(e){t(this,e),this.select=i(this,"select"),this.isVisible=!0,this.selected=!1,this.handleClick=t=>{t.stopPropagation(),this.select.emit(this.item)},this.tooltipId=n()}componentWillLoad(){l(this.host)}componentDidLoad(){this.triggerIconColorWarning()}disconnectedCallback(){c(this.host)}render(){return!this.isItem(this.item)&&this.item.separator?e("hr",null):e("button",{id:this.tooltipId,type:"button",onClick:this.handleClick,disabled:this.isDisabled(),class:{"is-selected":this.isItem(this.item)&&this.item.selected}},this.renderIcon(),this.renderLabel(),this.renderTooltip())}isItem(t){return!("separator"in t)}isDisabled(){return!(!this.isItem(this.item)||!this.item.disabled)||!this.isVisible||void 0}renderIcon(){if((!this.isItem(this.item)||this.item.icon)&&"icon"in this.item){const t=b(this.item.icon),i=h(this.item.icon,this.item.iconColor),o=d(this.item.icon);return e("limel-icon",{name:t,"aria-label":o,"aria-hidden":o?null:"true",style:{"--action-bar-item-icon-color":`${i}`}})}}renderLabel(){if(this.isItem(this.item)&&!this.item.iconOnly)return e("span",{class:"text"},this.item.text)}renderTooltip(){if(this.isItem(this.item))return e("limel-tooltip",{elementId:this.tooltipId,label:this.getTooltipLabel(this.item),helperLabel:this.item.commandText})}getTooltipLabel(t){const i=d(t.icon),e=t.text;return i&&e?`${i} ${e}`:e}triggerIconColorWarning(){this.isItem(this.item)&&this.item.iconColor&&console.warn("The `iconColor` prop is deprecated now! Use the new `Icon` interface and instead of `iconColor: 'color-name'` write `icon {name: 'icon-name', color: 'color-name'}`.")}get host(){return r(this)}};u.style='@charset "UTF-8";limel-action-bar-item{transition:opacity 0.2s ease-in-out;position:relative;display:flex;align-items:center}limel-action-bar-item:not([is-visible]){opacity:0;pointer-events:none}button{all:unset}button:not([disabled]){transition:color var(--limel-clickable-transition-speed, 0.4s) ease, background-color var(--limel-clickable-transition-speed, 0.4s) ease, box-shadow var(--limel-clickable-transform-speed, 0.4s) ease, transform var(--limel-clickable-transform-speed, 0.4s) var(--limel-clickable-transform-timing-function, ease);cursor:pointer;color:var(--limel-action-bar-item-text-color);background-color:var(--action-bar-background-color)}button:not([disabled]):hover,button:not([disabled]):focus,button:not([disabled]):focus-visible{will-change:color, background-color, box-shadow, transform}button:not([disabled]):hover,button:not([disabled]):focus-visible{transform:translate3d(0, -0.04rem, 0);color:var(--limel-action-bar-item-text-color);background-color:var(--action-bar-background-color)}button:not([disabled]):hover{box-shadow:var(--button-shadow-hovered)}button:not([disabled]):active{--limel-clickable-transform-timing-function:cubic-bezier( 0.83, -0.15, 0.49, 1.16 );transform:translate3d(0, 0.05rem, 0);background-color:var(--action-bar-background-color);box-shadow:var(--button-shadow-inset-pressed)}button:not([disabled]):hover,button:not([disabled]):active{--limel-clickable-transition-speed:0.2s;--limel-clickable-transform-speed:0.16s}button:not([disabled]):focus{outline:none}button:not([disabled]):focus-visible{outline:none;box-shadow:var(--shadow-depth-8-focused)}button{box-sizing:border-box;display:flex;align-items:center;justify-content:center;gap:0.25rem;width:100%;min-width:var(--action-bar-item-height);max-width:var(--action-bar-item-max-width, 10rem);height:var(--action-bar-item-height);color:var(--limel-action-bar-item-text-color);border-radius:var(--action-bar-item-height);font-size:var(--limel-theme-default-font-size);padding:0 0.25rem}button:has(.text){padding:0 0.5rem}button[disabled]{opacity:0.4}button.is-selected:not(:hover){box-shadow:var(--button-shadow-inset)}button.is-selected{color:var(--lime-primary-color, var(--limel-theme-primary-color)) !important}.text{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;padding:0 0.25rem}limel-icon{flex-shrink:0;width:calc(var(--action-bar-item-height) - 0.75rem);height:calc(var(--action-bar-item-height) - 0.75rem);color:var(--action-bar-item-icon-color, var(--limel-action-bar-item-text-color))}hr{all:unset;width:1px;height:1.5rem;border-radius:var(--action-bar-item-height);background-color:var(--limel-action-bar-item-text-color);opacity:0.2}@media (pointer: fine){hr{margin-right:0.5rem;margin-left:0.5rem}}limel-menu{--notification-badge-background-color:rgb(var(--contrast-600));--notification-badge-text-color:rgb(var(--contrast-1200))}limel-menu[open] button{box-shadow:var(--button-shadow-inset)}button[slot=trigger]{animation:fade-in ease-out 0.25s;font-size:0.75rem;font-weight:bold;transform:translate3d(0, 0, 0)}@keyframes fade-in{0%{scale:0.8;opacity:0}100%{scale:1;opacity:1}}';const p=class{constructor(o){t(this,o),this.select=i(this,"select"),this.openDirection="bottom-end",this.getOverflowTriggerContent=()=>{if(this.overFlowIcon){const{color:t,name:i,title:o}=this.overFlowIcon;return e("limel-icon",{style:{color:t},name:i,"aria-label":o})}return`+${this.numberOfMenuItems}`},this.handleSelect=t=>{t.stopPropagation(),this.select.emit(t.detail)}}render(){return e(o,{key:"5a993a11b77a6b9c268444ea6903df602ae832ea"},e("limel-menu",{key:"bb6c54b88d20dc54ad86099e67facbd2656d6a9f",openDirection:this.openDirection,items:this.items,onSelect:this.handleSelect},e("button",{key:"618587121d8dfd16b5e495ab53b251be42d98f01",type:"button",slot:"trigger"},this.getOverflowTriggerContent())))}get numberOfMenuItems(){return this.items.filter((t=>this.isMenuItem(t))).length}isMenuItem(t){return!("separator"in t)}};export{m as limel_action_bar,u as limel_action_bar_item,p as limel_action_bar_overflow_menu}