@limetech/lime-elements 37.32.3 → 37.32.5

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.
Files changed (23) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/dist/cjs/limel-dock-button.cjs.entry.js +2 -2
  3. package/dist/cjs/limel-dock-button.cjs.entry.js.map +1 -1
  4. package/dist/cjs/limel-prosemirror-adapter.cjs.entry.js +2 -2
  5. package/dist/cjs/limel-prosemirror-adapter.cjs.entry.js.map +1 -1
  6. package/dist/collection/components/dock/dock-button/dock-button.css +3 -0
  7. package/dist/collection/components/dock/dock-button/dock-button.js +1 -1
  8. package/dist/collection/components/dock/dock-button/dock-button.js.map +1 -1
  9. package/dist/collection/components/text-editor/prosemirror-adapter/prosemirror-adapter.css +8 -1
  10. package/dist/collection/components/text-editor/prosemirror-adapter/prosemirror-adapter.js +1 -1
  11. package/dist/collection/components/text-editor/prosemirror-adapter/prosemirror-adapter.js.map +1 -1
  12. package/dist/esm/limel-dock-button.entry.js +2 -2
  13. package/dist/esm/limel-dock-button.entry.js.map +1 -1
  14. package/dist/esm/limel-prosemirror-adapter.entry.js +2 -2
  15. package/dist/esm/limel-prosemirror-adapter.entry.js.map +1 -1
  16. package/dist/lime-elements/lime-elements.esm.js +1 -1
  17. package/dist/lime-elements/{p-a59595ad.entry.js → p-30f1fe5a.entry.js} +2 -2
  18. package/dist/lime-elements/{p-a59595ad.entry.js.map → p-30f1fe5a.entry.js.map} +1 -1
  19. package/dist/lime-elements/p-5983b027.entry.js +2 -0
  20. package/dist/lime-elements/p-5983b027.entry.js.map +1 -0
  21. package/package.json +1 -1
  22. package/dist/lime-elements/p-16c3a81a.entry.js +0 -2
  23. package/dist/lime-elements/p-16c3a81a.entry.js.map +0 -1
@@ -0,0 +1,2 @@
1
+ import{r as t,c as e,h as o}from"./p-443111b3.js";import{c as i}from"./p-3ccdc4a3.js";const r='@charset "UTF-8";.button{all:unset;isolation:isolate;position:relative;transition:color 0.2s ease, background-color 0.2s ease, box-shadow 0.2s ease, transform 0.1s ease-out;cursor:pointer;color:var(--limel-dock-item-text-color);background-color:var(--dock-background-color);box-sizing:border-box;display:flex;align-items:center;width:100%;height:var(--dock-item-height);border-radius:0.375rem;font-size:0.875rem;padding:0 0.5rem;min-width:var(--dock-item-height)}.button:hover{color:var(--mdc-theme-on-surface);background-color:var(--lime-elevated-surface-background-color);box-shadow:var(--button-shadow-hovered)}.button:active{background-color:var(--mdc-theme-surface);box-shadow:var(--button-shadow-inset-pressed);transform:translate3d(0, 0.05rem, 0)}.button:focus{outline:none}.button:focus-visible{outline:none;box-shadow:var(--shadow-depth-8-focused)}.button:hover{z-index:1}.button.selected{color:var(--limel-dock-item-text-color--selected);background-color:var(--dock-item-background-color--selected, rgb(var(--contrast-200)));box-shadow:var(--button-shadow-inset)}.button.selected:focus-visible{box-shadow:var(--button-shadow-inset), var(--shadow-depth-8-focused)}.button.selected .icon{color:var(--limel-dock-item-text--selected)}limel-popover{display:grid;grid-template-columns:100%}limel-popover button[slot=trigger][aria-expanded=true]{box-shadow:var(--button-shadow-inset)}.text{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;padding-left:0.5rem;padding-right:0.75rem}.icon{flex-shrink:0;width:calc(var(--dock-item-height) - 1rem);height:calc(var(--dock-item-height) - 1rem);color:var(--dock-item-icon-color, var(--limel-dock-item-text-color))}limel-badge{position:absolute;top:-0.125rem;right:-0.125rem}.icon{position:relative}.icon:before{text-align:center;pointer-events:none;position:absolute;inset:0;background-color:var(--dock-background-color, rgb(var(--contrast-100)));background-position:center;background-repeat:no-repeat;background-size:contain;background-image:var(--limel-custom-home-icon);content:var(--limel-custom-home-icon-enabler)}.button.selected .icon:before{background-color:var(--dock-item-background-color--selected, rgb(var(--contrast-200)))}';const s=class{constructor(r){t(this,r);this.itemSelected=e(this,"itemSelected",7);this.menuOpen=e(this,"menuOpen",7);this.close=e(this,"close",7);this.renderNotification=()=>{if(this.item.badge!==undefined){return o("limel-badge",{label:this.item.badge})}};this.openPopover=t=>{t.stopPropagation();this.isOpen=true;this.menuOpen.emit(this.item)};this.setCustomComponentElement=t=>{this.customComponentElement=t};this.onPopoverClose=()=>{this.isOpen=false;this.close.emit()};this.handleClick=t=>{t.stopPropagation();this.itemSelected.emit(this.item)};this.focusCustomComponentElement=()=>{var t,e,o;if((e=(t=this.customComponentElement)===null||t===void 0?void 0:t.shadowRoot)===null||e===void 0?void 0:e.delegatesFocus){(o=this.customComponentElement)===null||o===void 0?void 0:o.focus()}};this.getOpenDirection=()=>{if(this.useMobileLayout){return"top"}return"right"};this.item=undefined;this.expanded=false;this.useMobileLayout=false;this.isOpen=false;this.tooltipId=i()}render(){var t,e;if((e=(t=this.item)===null||t===void 0?void 0:t.dockMenu)===null||e===void 0?void 0:e.componentName){return this.renderPopover()}return this.renderButton(this.handleClick)}openWatcher(){if(!this.isOpen){return}const t=new IntersectionObserver(this.focusCustomComponentElement);t.observe(this.customComponentElement)}renderPopover(){var t;const e=(t=this.item)===null||t===void 0?void 0:t.dockMenu.componentName;return o("limel-popover",{openDirection:this.useMobileLayout?"top":"right-start",open:this.isOpen||this.item.dockMenu.menuOpen,onClose:this.onPopoverClose},this.renderButton(this.openPopover,"trigger"),o(e,Object.assign({ref:this.setCustomComponentElement},this.item.dockMenu.props||{},{onClose:this.onPopoverClose})))}renderButton(t,e){var i;return o("button",{slot:e,tabindex:"0",id:this.tooltipId,type:"button",class:{button:true,selected:(i=this.item)===null||i===void 0?void 0:i.selected},onClick:t,"aria-live":"polite"},this.renderIcon(),this.renderLabel(),this.renderTooltip(),this.renderNotification())}renderIcon(){if(!this.item.icon){return}return o("limel-icon",{name:this.item.icon,class:"icon"})}renderLabel(){if(this.expanded){return o("span",{class:"text"},this.item.label)}}renderTooltip(){if(!this.expanded&&this.item.label){return o("limel-tooltip",{elementId:this.tooltipId,label:this.item.label,helperLabel:this.item.helperLabel,openDirection:this.getOpenDirection()})}if(this.expanded&&this.item.helperLabel){return o("limel-tooltip",{elementId:this.tooltipId,label:this.item.helperLabel,openDirection:this.getOpenDirection()})}}static get watchers(){return{isOpen:["openWatcher"]}}};s.style=r;export{s as limel_dock_button};
2
+ //# sourceMappingURL=p-5983b027.entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["dockButtonCss","DockButton","constructor","hostRef","this","renderNotification","item","badge","undefined","h","label","openPopover","event","stopPropagation","isOpen","menuOpen","emit","setCustomComponentElement","element","customComponentElement","onPopoverClose","close","handleClick","itemSelected","focusCustomComponentElement","_b","_a","shadowRoot","delegatesFocus","_c","focus","getOpenDirection","useMobileLayout","tooltipId","createRandomString","render","dockMenu","componentName","renderPopover","renderButton","openWatcher","observer","IntersectionObserver","observe","CustomComponent","openDirection","open","onClose","Object","assign","ref","props","slot","tabindex","id","type","class","button","selected","onClick","renderIcon","renderLabel","renderTooltip","icon","name","expanded","elementId","helperLabel"],"sources":["./src/components/dock/dock-button/dock-button.scss?tag=limel-dock-button","./src/components/dock/dock-button/dock-button.tsx"],"sourcesContent":["@use '../../../style/mixins';\n@use '../../../style/functions';\n@use '../../../style/internal/variables';\n\n.button {\n all: unset;\n isolation: isolate;\n position: relative;\n\n @include mixins.is-flat-inset-clickable(\n $color: var(--limel-dock-item-text-color),\n $background-color: var(--dock-background-color)\n );\n @include mixins.visualize-keyboard-focus;\n\n box-sizing: border-box;\n display: flex;\n align-items: center;\n\n width: 100%;\n height: var(--dock-item-height);\n\n border-radius: functions.pxToRem(6);\n font-size: functions.pxToRem(14);\n padding: 0 0.5rem;\n min-width: var(--dock-item-height);\n\n &:hover {\n z-index: 1;\n }\n\n &.selected {\n color: var(--limel-dock-item-text-color--selected);\n background-color: var(\n --dock-item-background-color--selected,\n rgb(var(--contrast-200))\n );\n\n box-shadow: var(--button-shadow-inset);\n\n &:focus-visible {\n box-shadow: var(--button-shadow-inset),\n var(--shadow-depth-8-focused);\n }\n\n .icon {\n color: var(--limel-dock-item-text--selected);\n }\n }\n}\n\nlimel-popover {\n // makes buttons that are wrapped in a popover become fullwidth\n display: grid;\n grid-template-columns: 100%;\n\n button[slot='trigger'][aria-expanded='true'] {\n box-shadow: var(--button-shadow-inset);\n }\n}\n\n.text {\n @include mixins.truncate-text();\n padding-left: 0.5rem;\n padding-right: 0.75rem;\n}\n\n.icon {\n flex-shrink: 0;\n width: calc(var(--dock-item-height) - 1rem);\n height: calc(var(--dock-item-height) - 1rem);\n color: var(--dock-item-icon-color, var(--limel-dock-item-text-color));\n}\n\nlimel-badge {\n position: absolute;\n top: -0.125rem;\n right: -0.125rem;\n}\n\n// 👇 Below is a hidden and private hack\n// only for usage in Lime CRM components.\n// It enables our customers to override\n// the default Home icon, using an external URL\n// or an SVG code.\n.icon {\n position: relative;\n\n &:before {\n text-align: center;\n pointer-events: none;\n position: absolute;\n inset: 0;\n background: {\n color: var(--dock-background-color, rgb(var(--contrast-100)));\n position: center;\n repeat: no-repeat;\n size: contain;\n image: var(--limel-custom-home-icon);\n }\n // Since `content` defaults to `undefined`\n // no pseudo element will be rendered, unless\n // the consumer defines something.\n content: var(--limel-custom-home-icon-enabler);\n\n .button.selected & {\n background-color: var(\n --dock-item-background-color--selected,\n rgb(var(--contrast-200))\n );\n }\n }\n}\n","import {\n Component,\n Event,\n EventEmitter,\n h,\n Prop,\n State,\n Watch,\n} from '@stencil/core';\nimport { DockItem } from '../dock.types';\nimport { createRandomString } from '../../../util/random-string';\n\n/**\n * @private\n */\n@Component({\n tag: 'limel-dock-button',\n shadow: false,\n styleUrl: 'dock-button.scss',\n})\nexport class DockButton {\n /**\n * Item that is placed in the dock.\n */\n @Prop()\n public item!: DockItem;\n\n /**\n * When the dock is expanded or collapsed, dock items\n * show labels and tooltips as suitable for the layout.\n */\n @Prop({ reflect: true })\n public expanded? = false;\n\n /**\n * When dock is using mobile layout, dock items\n * show labels and tooltips as suitable for the layout.\n */\n @Prop({ reflect: true })\n public useMobileLayout? = false;\n\n /**\n * Fired when a dock item has been selected from the dock.\n */\n @Event()\n public itemSelected: EventEmitter<DockItem>;\n\n /**\n * Fired when a dock menu is opened.\n */\n @Event()\n public menuOpen: EventEmitter<DockItem>;\n\n /**\n * Indicated whether the popover that renders a component is open.\n */\n @State()\n private isOpen = false;\n\n /**\n * Fired when the popover is closed.\n */\n @Event()\n public close: EventEmitter<void>;\n\n private tooltipId: string;\n private customComponentElement: HTMLElement;\n\n constructor() {\n this.tooltipId = createRandomString();\n }\n\n public render() {\n if (this.item?.dockMenu?.componentName) {\n return this.renderPopover();\n }\n\n return this.renderButton(this.handleClick);\n }\n\n @Watch('isOpen')\n protected openWatcher() {\n if (!this.isOpen) {\n return;\n }\n\n const observer = new IntersectionObserver(\n this.focusCustomComponentElement,\n );\n observer.observe(this.customComponentElement);\n }\n\n private renderPopover() {\n const CustomComponent = this.item?.dockMenu.componentName;\n\n return (\n <limel-popover\n openDirection={this.useMobileLayout ? 'top' : 'right-start'}\n open={this.isOpen || this.item.dockMenu.menuOpen}\n onClose={this.onPopoverClose}\n >\n {this.renderButton(this.openPopover, 'trigger')}\n <CustomComponent\n ref={this.setCustomComponentElement}\n {...(this.item.dockMenu.props || {})}\n onClose={this.onPopoverClose}\n />\n </limel-popover>\n );\n }\n\n private renderButton(\n handleClick: (event: MouseEvent) => void,\n slot?: string,\n ) {\n return (\n <button\n slot={slot}\n tabindex=\"0\"\n id={this.tooltipId}\n type=\"button\"\n class={{\n button: true,\n selected: this.item?.selected,\n }}\n onClick={handleClick}\n aria-live=\"polite\"\n >\n {this.renderIcon()}\n {this.renderLabel()}\n {this.renderTooltip()}\n {this.renderNotification()}\n </button>\n );\n }\n\n private renderNotification = () => {\n if (this.item.badge !== undefined) {\n return <limel-badge label={this.item.badge} />;\n }\n };\n\n private openPopover = (event: MouseEvent) => {\n event.stopPropagation();\n this.isOpen = true;\n this.menuOpen.emit(this.item);\n };\n\n private setCustomComponentElement = (element: HTMLElement) => {\n this.customComponentElement = element;\n };\n\n private onPopoverClose = () => {\n this.isOpen = false;\n this.close.emit();\n };\n\n private handleClick = (event: MouseEvent) => {\n event.stopPropagation();\n this.itemSelected.emit(this.item);\n };\n\n private renderIcon() {\n if (!this.item.icon) {\n return;\n }\n\n return <limel-icon name={this.item.icon} class=\"icon\" />;\n }\n\n private renderLabel() {\n if (this.expanded) {\n return <span class=\"text\">{this.item.label}</span>;\n }\n }\n\n private renderTooltip() {\n if (!this.expanded && this.item.label) {\n return (\n <limel-tooltip\n elementId={this.tooltipId}\n label={this.item.label}\n helperLabel={this.item.helperLabel}\n openDirection={this.getOpenDirection()}\n />\n );\n }\n\n if (this.expanded && this.item.helperLabel) {\n return (\n <limel-tooltip\n elementId={this.tooltipId}\n label={this.item.helperLabel}\n openDirection={this.getOpenDirection()}\n />\n );\n }\n }\n\n private focusCustomComponentElement = () => {\n if (this.customComponentElement?.shadowRoot?.delegatesFocus) {\n this.customComponentElement?.focus();\n }\n };\n\n private getOpenDirection = () => {\n if (this.useMobileLayout) {\n return 'top';\n }\n\n return 'right';\n };\n}\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@limetech/lime-elements",
3
- "version": "37.32.3",
3
+ "version": "37.32.5",
4
4
  "description": "Lime Elements",
5
5
  "author": "Lime Technologies",
6
6
  "license": "Apache-2.0",
@@ -1,2 +0,0 @@
1
- import{r as t,c as e,h as o}from"./p-443111b3.js";import{c as i}from"./p-3ccdc4a3.js";const r='@charset "UTF-8";.button{all:unset;isolation:isolate;position:relative;transition:color 0.2s ease, background-color 0.2s ease, box-shadow 0.2s ease, transform 0.1s ease-out;cursor:pointer;color:var(--limel-dock-item-text-color);background-color:var(--dock-background-color);box-sizing:border-box;display:flex;align-items:center;width:100%;height:var(--dock-item-height);border-radius:0.375rem;font-size:0.875rem;padding:0 0.5rem;min-width:var(--dock-item-height)}.button:hover{color:var(--mdc-theme-on-surface);background-color:var(--lime-elevated-surface-background-color);box-shadow:var(--button-shadow-hovered)}.button:active{background-color:var(--mdc-theme-surface);box-shadow:var(--button-shadow-inset-pressed);transform:translate3d(0, 0.05rem, 0)}.button:focus{outline:none}.button:focus-visible{outline:none;box-shadow:var(--shadow-depth-8-focused)}.button:hover{z-index:1}.button.selected{color:var(--limel-dock-item-text-color--selected);background-color:var(--dock-item-background-color--selected, rgb(var(--contrast-200)));box-shadow:var(--button-shadow-inset)}.button.selected:focus-visible{box-shadow:var(--button-shadow-inset), var(--shadow-depth-8-focused)}.button.selected .icon{color:var(--limel-dock-item-text--selected)}limel-popover{display:grid;grid-template-columns:100%}.text{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;padding-left:0.5rem;padding-right:0.75rem}.icon{flex-shrink:0;width:calc(var(--dock-item-height) - 1rem);height:calc(var(--dock-item-height) - 1rem);color:var(--dock-item-icon-color, var(--limel-dock-item-text-color))}limel-badge{position:absolute;top:-0.125rem;right:-0.125rem}.icon{position:relative}.icon:before{text-align:center;pointer-events:none;position:absolute;inset:0;background-color:var(--dock-background-color, rgb(var(--contrast-100)));background-position:center;background-repeat:no-repeat;background-size:contain;background-image:var(--limel-custom-home-icon);content:var(--limel-custom-home-icon-enabler)}.button.selected .icon:before{background-color:var(--dock-item-background-color--selected, rgb(var(--contrast-200)))}';const s=class{constructor(r){t(this,r);this.itemSelected=e(this,"itemSelected",7);this.menuOpen=e(this,"menuOpen",7);this.close=e(this,"close",7);this.renderNotification=()=>{if(this.item.badge!==undefined){return o("limel-badge",{label:this.item.badge})}};this.openPopover=t=>{t.stopPropagation();this.isOpen=true;this.menuOpen.emit(this.item)};this.setCustomComponentElement=t=>{this.customComponentElement=t};this.onPopoverClose=()=>{this.isOpen=false;this.close.emit()};this.handleClick=t=>{t.stopPropagation();this.itemSelected.emit(this.item)};this.focusCustomComponentElement=()=>{var t,e,o;if((e=(t=this.customComponentElement)===null||t===void 0?void 0:t.shadowRoot)===null||e===void 0?void 0:e.delegatesFocus){(o=this.customComponentElement)===null||o===void 0?void 0:o.focus()}};this.getOpenDirection=()=>{if(this.useMobileLayout){return"top"}return"right"};this.item=undefined;this.expanded=false;this.useMobileLayout=false;this.isOpen=false;this.tooltipId=i()}render(){var t,e;if((e=(t=this.item)===null||t===void 0?void 0:t.dockMenu)===null||e===void 0?void 0:e.componentName){return this.renderPopover()}return this.renderButton(this.handleClick)}openWatcher(){if(!this.isOpen){return}const t=new IntersectionObserver(this.focusCustomComponentElement);t.observe(this.customComponentElement)}renderPopover(){var t;const e=(t=this.item)===null||t===void 0?void 0:t.dockMenu.componentName;return o("limel-popover",{openDirection:this.useMobileLayout?"top":"right",open:this.isOpen||this.item.dockMenu.menuOpen,onClose:this.onPopoverClose},this.renderButton(this.openPopover,"trigger"),o(e,Object.assign({ref:this.setCustomComponentElement},this.item.dockMenu.props||{},{onClose:this.onPopoverClose})))}renderButton(t,e){var i;return o("button",{slot:e,tabindex:"0",id:this.tooltipId,type:"button",class:{button:true,selected:(i=this.item)===null||i===void 0?void 0:i.selected},onClick:t,"aria-live":"polite"},this.renderIcon(),this.renderLabel(),this.renderTooltip(),this.renderNotification())}renderIcon(){if(!this.item.icon){return}return o("limel-icon",{name:this.item.icon,class:"icon"})}renderLabel(){if(this.expanded){return o("span",{class:"text"},this.item.label)}}renderTooltip(){if(!this.expanded&&this.item.label){return o("limel-tooltip",{elementId:this.tooltipId,label:this.item.label,helperLabel:this.item.helperLabel,openDirection:this.getOpenDirection()})}if(this.expanded&&this.item.helperLabel){return o("limel-tooltip",{elementId:this.tooltipId,label:this.item.helperLabel,openDirection:this.getOpenDirection()})}}static get watchers(){return{isOpen:["openWatcher"]}}};s.style=r;export{s as limel_dock_button};
2
- //# sourceMappingURL=p-16c3a81a.entry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["dockButtonCss","DockButton","constructor","hostRef","this","renderNotification","item","badge","undefined","h","label","openPopover","event","stopPropagation","isOpen","menuOpen","emit","setCustomComponentElement","element","customComponentElement","onPopoverClose","close","handleClick","itemSelected","focusCustomComponentElement","_b","_a","shadowRoot","delegatesFocus","_c","focus","getOpenDirection","useMobileLayout","tooltipId","createRandomString","render","dockMenu","componentName","renderPopover","renderButton","openWatcher","observer","IntersectionObserver","observe","CustomComponent","openDirection","open","onClose","Object","assign","ref","props","slot","tabindex","id","type","class","button","selected","onClick","renderIcon","renderLabel","renderTooltip","icon","name","expanded","elementId","helperLabel"],"sources":["./src/components/dock/dock-button/dock-button.scss?tag=limel-dock-button","./src/components/dock/dock-button/dock-button.tsx"],"sourcesContent":["@use '../../../style/mixins';\n@use '../../../style/functions';\n@use '../../../style/internal/variables';\n\n.button {\n all: unset;\n isolation: isolate;\n position: relative;\n\n @include mixins.is-flat-inset-clickable(\n $color: var(--limel-dock-item-text-color),\n $background-color: var(--dock-background-color)\n );\n @include mixins.visualize-keyboard-focus;\n\n box-sizing: border-box;\n display: flex;\n align-items: center;\n\n width: 100%;\n height: var(--dock-item-height);\n\n border-radius: functions.pxToRem(6);\n font-size: functions.pxToRem(14);\n padding: 0 0.5rem;\n min-width: var(--dock-item-height);\n\n &:hover {\n z-index: 1;\n }\n\n &.selected {\n color: var(--limel-dock-item-text-color--selected);\n background-color: var(\n --dock-item-background-color--selected,\n rgb(var(--contrast-200))\n );\n\n box-shadow: var(--button-shadow-inset);\n\n &:focus-visible {\n box-shadow: var(--button-shadow-inset),\n var(--shadow-depth-8-focused);\n }\n\n .icon {\n color: var(--limel-dock-item-text--selected);\n }\n }\n}\n\nlimel-popover {\n // makes buttons that are wrapped in a popover become fullwidth\n display: grid;\n grid-template-columns: 100%;\n}\n\n.text {\n @include mixins.truncate-text();\n padding-left: 0.5rem;\n padding-right: 0.75rem;\n}\n\n.icon {\n flex-shrink: 0;\n width: calc(var(--dock-item-height) - 1rem);\n height: calc(var(--dock-item-height) - 1rem);\n color: var(--dock-item-icon-color, var(--limel-dock-item-text-color));\n}\n\nlimel-badge {\n position: absolute;\n top: -0.125rem;\n right: -0.125rem;\n}\n\n// 👇 Below is a hidden and private hack\n// only for usage in Lime CRM components.\n// It enables our customers to override\n// the default Home icon, using an external URL\n// or an SVG code.\n.icon {\n position: relative;\n\n &:before {\n text-align: center;\n pointer-events: none;\n position: absolute;\n inset: 0;\n background: {\n color: var(--dock-background-color, rgb(var(--contrast-100)));\n position: center;\n repeat: no-repeat;\n size: contain;\n image: var(--limel-custom-home-icon);\n }\n // Since `content` defaults to `undefined`\n // no pseudo element will be rendered, unless\n // the consumer defines something.\n content: var(--limel-custom-home-icon-enabler);\n\n .button.selected & {\n background-color: var(\n --dock-item-background-color--selected,\n rgb(var(--contrast-200))\n );\n }\n }\n}\n","import {\n Component,\n Event,\n EventEmitter,\n h,\n Prop,\n State,\n Watch,\n} from '@stencil/core';\nimport { DockItem } from '../dock.types';\nimport { createRandomString } from '../../../util/random-string';\n\n/**\n * @private\n */\n@Component({\n tag: 'limel-dock-button',\n shadow: false,\n styleUrl: 'dock-button.scss',\n})\nexport class DockButton {\n /**\n * Item that is placed in the dock.\n */\n @Prop()\n public item!: DockItem;\n\n /**\n * When the dock is expanded or collapsed, dock items\n * show labels and tooltips as suitable for the layout.\n */\n @Prop({ reflect: true })\n public expanded? = false;\n\n /**\n * When dock is using mobile layout, dock items\n * show labels and tooltips as suitable for the layout.\n */\n @Prop({ reflect: true })\n public useMobileLayout? = false;\n\n /**\n * Fired when a dock item has been selected from the dock.\n */\n @Event()\n public itemSelected: EventEmitter<DockItem>;\n\n /**\n * Fired when a dock menu is opened.\n */\n @Event()\n public menuOpen: EventEmitter<DockItem>;\n\n /**\n * Indicated whether the popover that renders a component is open.\n */\n @State()\n private isOpen = false;\n\n /**\n * Fired when the popover is closed.\n */\n @Event()\n public close: EventEmitter<void>;\n\n private tooltipId: string;\n private customComponentElement: HTMLElement;\n\n constructor() {\n this.tooltipId = createRandomString();\n }\n\n public render() {\n if (this.item?.dockMenu?.componentName) {\n return this.renderPopover();\n }\n\n return this.renderButton(this.handleClick);\n }\n\n @Watch('isOpen')\n protected openWatcher() {\n if (!this.isOpen) {\n return;\n }\n\n const observer = new IntersectionObserver(\n this.focusCustomComponentElement,\n );\n observer.observe(this.customComponentElement);\n }\n\n private renderPopover() {\n const CustomComponent = this.item?.dockMenu.componentName;\n\n return (\n <limel-popover\n openDirection={this.useMobileLayout ? 'top' : 'right'}\n open={this.isOpen || this.item.dockMenu.menuOpen}\n onClose={this.onPopoverClose}\n >\n {this.renderButton(this.openPopover, 'trigger')}\n <CustomComponent\n ref={this.setCustomComponentElement}\n {...(this.item.dockMenu.props || {})}\n onClose={this.onPopoverClose}\n />\n </limel-popover>\n );\n }\n\n private renderButton(\n handleClick: (event: MouseEvent) => void,\n slot?: string,\n ) {\n return (\n <button\n slot={slot}\n tabindex=\"0\"\n id={this.tooltipId}\n type=\"button\"\n class={{\n button: true,\n selected: this.item?.selected,\n }}\n onClick={handleClick}\n aria-live=\"polite\"\n >\n {this.renderIcon()}\n {this.renderLabel()}\n {this.renderTooltip()}\n {this.renderNotification()}\n </button>\n );\n }\n\n private renderNotification = () => {\n if (this.item.badge !== undefined) {\n return <limel-badge label={this.item.badge} />;\n }\n };\n\n private openPopover = (event: MouseEvent) => {\n event.stopPropagation();\n this.isOpen = true;\n this.menuOpen.emit(this.item);\n };\n\n private setCustomComponentElement = (element: HTMLElement) => {\n this.customComponentElement = element;\n };\n\n private onPopoverClose = () => {\n this.isOpen = false;\n this.close.emit();\n };\n\n private handleClick = (event: MouseEvent) => {\n event.stopPropagation();\n this.itemSelected.emit(this.item);\n };\n\n private renderIcon() {\n if (!this.item.icon) {\n return;\n }\n\n return <limel-icon name={this.item.icon} class=\"icon\" />;\n }\n\n private renderLabel() {\n if (this.expanded) {\n return <span class=\"text\">{this.item.label}</span>;\n }\n }\n\n private renderTooltip() {\n if (!this.expanded && this.item.label) {\n return (\n <limel-tooltip\n elementId={this.tooltipId}\n label={this.item.label}\n helperLabel={this.item.helperLabel}\n openDirection={this.getOpenDirection()}\n />\n );\n }\n\n if (this.expanded && this.item.helperLabel) {\n return (\n <limel-tooltip\n elementId={this.tooltipId}\n label={this.item.helperLabel}\n openDirection={this.getOpenDirection()}\n />\n );\n }\n }\n\n private focusCustomComponentElement = () => {\n if (this.customComponentElement?.shadowRoot?.delegatesFocus) {\n this.customComponentElement?.focus();\n }\n };\n\n private getOpenDirection = () => {\n if (this.useMobileLayout) {\n return 'top';\n }\n\n return 'right';\n };\n}\n"],"mappings":"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"}