@scania/tegel
Version:
Tegel Design System
55 lines (51 loc) • 6.47 kB
JavaScript
import { r as registerInstance, h, H as Host, a as getElement } from './index-9xxNGlso.js';
const sideMenuDropdownListItemCss = () => `:host{display:block;box-sizing:border-box;height:48px;width:100%}:host .component{height:100%;width:100%}:host .component ::slotted(a),:host .component ::slotted(button){all:unset;box-sizing:border-box;border-right:1px solid var(--tds-nav-item-border-color);display:flex;align-items:center;height:100%;padding:0 24px;width:100%;font:var(--tds-detail-02);letter-spacing:var(--tds-detail-02-ls);background-color:var(--tds-header-nav-item-dropdown-opened-background);color:var(--tds-header-nav-item-dropdown-opened-color);border:none}:host .component ::slotted(a:hover),:host .component ::slotted(button:hover){background-color:var(--tds-sidebar-item-state-hover);cursor:pointer;position:relative}:host .component ::slotted(a:hover)::before,:host .component ::slotted(button:hover)::before{content:"";position:absolute;top:0;left:0;width:4px;height:100%;background-color:var(--tds-side-menu-item-hover-indicator)}:host .component ::slotted(a:hover:focus-visible),:host .component ::slotted(button:hover:focus-visible){background-color:var(--tds-sidebar-item-state-hover);cursor:pointer;position:relative}:host .component ::slotted(a:hover:focus-visible)::before,:host .component ::slotted(button:hover:focus-visible)::before{content:"";position:absolute;top:3px;left:3px;width:4px;height:calc(100% - 6px);background-color:var(--tds-side-menu-item-hover-indicator)}:host .component ::slotted(a:active),:host .component ::slotted(button:active){background-color:var(--tds-sidemenu-item-state-active) !important;cursor:pointer;position:relative}:host .component ::slotted(a:active)::before,:host .component ::slotted(button:active)::before{content:"";position:absolute;top:0;left:0;width:4px;height:100%;background-color:var(--tds-side-menu-item-pressed-indicator)}:host .component ::slotted(a:active:focus-visible),:host .component ::slotted(button:active:focus-visible){background-color:var(--tds-sidemenu-item-state-active) !important;cursor:pointer;position:relative}:host .component ::slotted(a:active:focus-visible)::before,:host .component ::slotted(button:active:focus-visible)::before{content:"";position:absolute;top:3px;left:3px;width:4px;height:calc(100% - 6px);background-color:var(--tds-side-menu-item-pressed-indicator)}:host .component ::slotted(a:focus-visible){outline:2px solid var(--tds-focus-outline-color);box-shadow:inset 0 0 0 3px var(--tds-white);outline-offset:-2px;z-index:1}:host .component.component-selected ::slotted(a),:host .component.component-selected ::slotted(button){background-color:var(--tds-header-nav-item-dropdown-opened-background-selected);position:relative}:host .component.component-selected ::slotted(a)::before,:host .component.component-selected ::slotted(button)::before{content:"";position:absolute;top:0;left:0;width:4px;height:100%;background-color:var(--tds-sidebar-side-menu-single-subitem-selected-border-color)}:host .component.component-selected ::slotted(a:focus-visible),:host .component.component-selected ::slotted(button:focus-visible){background-color:var(--tds-header-nav-item-dropdown-opened-background-selected);position:relative}:host .component.component-selected ::slotted(a:focus-visible)::before,:host .component.component-selected ::slotted(button:focus-visible)::before{content:"";position:absolute;top:3px;left:3px;width:4px;height:calc(100% - 6px);background-color:var(--tds-sidebar-side-menu-single-subitem-selected-border-color)}:host .component.component-dropdown-has-icon:not(.component-collapsed) ::slotted(a),:host .component.component-dropdown-has-icon:not(.component-collapsed) ::slotted(button){padding:16px 48px 16px 58px}:host .component.component-dropdown-has-user:not(.component-collapsed) ::slotted(a),:host .component.component-dropdown-has-user:not(.component-collapsed) ::slotted(button){padding:16px 48px 16px 64px}`;
const TdsSideMenuDropdownListItem = class {
constructor(hostRef) {
registerInstance(this, hostRef);
/** If the item should appear selected. */
this.selected = false;
this.dropdownHasIcon = false;
this.dropdownHasUser = false;
this.collapsed = false;
}
collapseSideMenuEventHandler(event) {
this.collapsed = event.detail.collapsed;
}
connectedCallback() {
var _a;
this.sideMenuEl = this.host.closest('tds-side-menu');
this.collapsed = !!((_a = this.sideMenuEl) === null || _a === void 0 ? void 0 : _a.collapsed);
}
componentDidLoad() {
var _a, _b;
const dropdownEl = this.host.closest('tds-side-menu-dropdown');
let hasUserMenu = null;
let dropdownBtnIconSlotEl = null;
if (dropdownEl) {
hasUserMenu = dropdownEl.querySelector('tds-side-menu-user');
dropdownBtnIconSlotEl = (_a = dropdownEl.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('slot[name="icon"]');
}
const btnIconSlottedEls = dropdownBtnIconSlotEl === null || dropdownBtnIconSlotEl === void 0 ? void 0 : dropdownBtnIconSlotEl.assignedElements();
const hasBtnIcon = btnIconSlottedEls ? (btnIconSlottedEls === null || btnIconSlottedEls === void 0 ? void 0 : btnIconSlottedEls.length) > 0 : false;
const btnIconIsUserImage = ((_b = btnIconSlottedEls === null || btnIconSlottedEls === void 0 ? void 0 : btnIconSlottedEls[0]) === null || _b === void 0 ? void 0 : _b.tagName.toLowerCase()) === 'tds-side-menu-user-image';
if (hasBtnIcon && !btnIconIsUserImage) {
this.dropdownHasIcon = true;
}
if (hasUserMenu) {
this.dropdownHasUser = true;
}
}
render() {
return (h(Host, { key: '10ccf22f0df6b2087d787cfc9afb95058da1f6a5', role: "listitem" }, h("div", { key: 'c99acea35abc14f96fc9bf8b084f6667a466bdcc', class: {
'component': true,
'component-selected': this.selected,
'component-dropdown-has-icon': this.dropdownHasIcon,
'component-dropdown-has-user': this.dropdownHasUser,
'component-collapsed': this.collapsed,
} }, h("slot", { key: 'e3dda9165b5fa9d7583032bd9b71d2cf6cbd74f1' }))));
}
get host() { return getElement(this); }
};
TdsSideMenuDropdownListItem.style = sideMenuDropdownListItemCss();
export { TdsSideMenuDropdownListItem as tds_side_menu_dropdown_list_item };