@quandis/qbo4.ui 4.0.1-CI-20241107-011209 → 4.0.1-CI-20241108-204652
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.
- package/package.json +2 -1
- package/scss/qbo.scss +456 -92
- package/src/qbo/qbo-menu.d.ts +17 -15
- package/src/qbo/qbo-menu.js +88 -115
- package/src/qbo/qbo-menu.ts +95 -120
- package/src/qbo/qbo-popover.d.ts +13 -17
- package/src/qbo/qbo-popover.js +64 -75
- package/src/qbo/qbo-popover.ts +78 -52
- package/src/qbo/styles.js +2 -2
- package/src/qbo/styles.ts +2 -2
- package/wwwroot/css/qbo.css +436 -90
- package/wwwroot/css/qbo.css.map +1 -1
- package/wwwroot/css/qbo.min.css +1 -1
- package/wwwroot/css/qboui.css +438 -90
- package/wwwroot/css/qboui.css.map +1 -1
- package/wwwroot/css/qboui.min.css +1 -1
- package/wwwroot/favicon.ico +0 -0
- package/wwwroot/images/qbo-logo-new.svg +25 -0
- package/wwwroot/js/esm/qbo4.ui.js +2586 -7857
- package/wwwroot/js/esm/qbo4.ui.min.js +35 -48
- package/wwwroot/js/esm/qbo4.ui.min.js.LICENSE.txt +0 -6
- package/wwwroot/js/esm/qbo4.ui.min.js.map +1 -1
- package/wwwroot/js/qbo4.ui.js +2593 -7918
- package/wwwroot/js/qbo4.ui.min.js +43 -56
- package/wwwroot/js/qbo4.ui.min.js.LICENSE.txt +0 -6
- package/wwwroot/js/qbo4.ui.min.js.map +1 -1
package/src/qbo/qbo-menu.js
CHANGED
|
@@ -7,144 +7,117 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
7
7
|
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
8
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
9
|
};
|
|
10
|
-
import { LitElement, html, css } from
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
|
|
10
|
+
import { LitElement, html, css } from "lit";
|
|
11
|
+
import { property, query, state } from "lit/decorators.js";
|
|
12
|
+
import { computePosition, shift, flip } from "@floating-ui/dom";
|
|
13
|
+
export class QboMenu extends LitElement {
|
|
14
14
|
constructor() {
|
|
15
15
|
super(...arguments);
|
|
16
|
-
|
|
17
|
-
this.
|
|
18
|
-
|
|
19
|
-
this.
|
|
20
|
-
this.
|
|
16
|
+
// Define the placement property with type `string`
|
|
17
|
+
this.placement = "bottom-start";
|
|
18
|
+
// Internal state to control menu visibility
|
|
19
|
+
this.isOpen = false;
|
|
20
|
+
this.middleware = [flip(), shift()];
|
|
21
|
+
this.handleMenuOpen = (event) => {
|
|
21
22
|
event.preventDefault();
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
23
|
+
event.stopPropagation();
|
|
24
|
+
const customEvent = event;
|
|
25
|
+
if (customEvent.detail.menu !== this && this.isOpen) {
|
|
26
|
+
this.closeMenu();
|
|
25
27
|
}
|
|
26
28
|
};
|
|
27
|
-
this.
|
|
28
|
-
|
|
29
|
-
|
|
29
|
+
this.handleOutsideClick = (event) => {
|
|
30
|
+
const customEvent = event;
|
|
31
|
+
const target = customEvent.target;
|
|
32
|
+
if (target !== this && !this.contains(target)) {
|
|
33
|
+
this.closeMenu();
|
|
30
34
|
}
|
|
31
35
|
};
|
|
32
|
-
this.
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
36
|
+
this.toggleMenu = (event) => {
|
|
37
|
+
if (event.target instanceof HTMLElement
|
|
38
|
+
|| event.target instanceof SVGElement
|
|
39
|
+
|| event.target instanceof SVGUseElement) {
|
|
40
|
+
let toggleMenu = true;
|
|
41
|
+
let parent = event.target.parentElement;
|
|
42
|
+
while (toggleMenu && parent) {
|
|
43
|
+
if (parent instanceof HTMLElement && parent.tagName.toLowerCase() == 'aside')
|
|
44
|
+
toggleMenu = false;
|
|
45
|
+
else
|
|
46
|
+
parent = parent.parentElement;
|
|
47
|
+
}
|
|
48
|
+
if (toggleMenu) {
|
|
49
|
+
this.isOpen = !this.isOpen;
|
|
50
|
+
this.menuContainer.classList.toggle("open", this.isOpen);
|
|
51
|
+
if (this.isOpen) {
|
|
52
|
+
this.updateMenuPosition();
|
|
53
|
+
document.dispatchEvent(new CustomEvent("qbo-menu-open", {
|
|
54
|
+
bubbles: true,
|
|
55
|
+
composed: true,
|
|
56
|
+
detail: { menu: this },
|
|
57
|
+
}));
|
|
58
|
+
}
|
|
59
|
+
}
|
|
37
60
|
}
|
|
38
61
|
};
|
|
39
62
|
}
|
|
40
|
-
static { this.styles =
|
|
41
|
-
:host {
|
|
42
|
-
display: block;
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
.toggle-btn {
|
|
46
|
-
width: 100%;
|
|
47
|
-
background: none;
|
|
48
|
-
border: none;
|
|
49
|
-
font-size: 1.5rem;
|
|
50
|
-
cursor: pointer;
|
|
51
|
-
text-align: left;
|
|
52
|
-
}
|
|
53
|
-
`]; }
|
|
54
|
-
toggleSidebar() {
|
|
55
|
-
this.expanded = !this.expanded;
|
|
56
|
-
}
|
|
63
|
+
static { this.styles = css ``; }
|
|
57
64
|
connectedCallback() {
|
|
58
65
|
super.connectedCallback();
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
document.addEventListener('click', this.hideContextMenu);
|
|
62
|
-
this.contextParent?.addEventListener('contextmenu', this.showContextMenu);
|
|
63
|
-
break;
|
|
64
|
-
case 'side':
|
|
65
|
-
this.renderRoot.addEventListener('click', this.toggleSideMenu);
|
|
66
|
-
break;
|
|
67
|
-
}
|
|
66
|
+
// document.addEventListener("click", this.handleOutsideClick.bind);
|
|
67
|
+
document.addEventListener("qbo-menu-open", this.handleMenuOpen.bind(this));
|
|
68
68
|
}
|
|
69
69
|
disconnectedCallback() {
|
|
70
70
|
super.disconnectedCallback();
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
document.removeEventListener('click', this.hideContextMenu);
|
|
75
|
-
break;
|
|
76
|
-
case 'side':
|
|
77
|
-
this.renderRoot.removeEventListener('click', this.toggleSideMenu);
|
|
78
|
-
break;
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
xcreateRenderRoot() {
|
|
82
|
-
return this; // : super.createRenderRoot();
|
|
71
|
+
// document.removeEventListener("click", this.handleOutsideClick);
|
|
72
|
+
document.removeEventListener("qbo-menu-open", this.handleMenuOpen);
|
|
73
|
+
this.triggerButton.removeEventListener("click", this.toggleMenu);
|
|
83
74
|
}
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
this.
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
x = viewportWidth - menuWidth;
|
|
97
|
-
}
|
|
98
|
-
if (y + menuHeight > viewportHeight) {
|
|
99
|
-
y = viewportHeight - menuHeight;
|
|
100
|
-
}
|
|
101
|
-
console.log(`mouse event: ${event.clientX} x ${event.clientY} ; ${x} x ${y}`);
|
|
102
|
-
this.style.left = x + 'px';
|
|
103
|
-
this.style.top = y + 'px';
|
|
75
|
+
firstUpdated(changes) {
|
|
76
|
+
super.firstUpdated(changes);
|
|
77
|
+
this.triggerButton =
|
|
78
|
+
this.querySelector("*[data-trigger]") ||
|
|
79
|
+
this.querySelector("button") ||
|
|
80
|
+
this.parentElement;
|
|
81
|
+
this.menuContainer =
|
|
82
|
+
this.querySelector("*[data-content]") ||
|
|
83
|
+
this.querySelector("aside") ||
|
|
84
|
+
this.querySelector("menu");
|
|
85
|
+
if (this.triggerButton != null)
|
|
86
|
+
this.triggerButton.addEventListener("click", this.toggleMenu);
|
|
104
87
|
}
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
(() => {
|
|
109
|
-
const rootNode = this.getRootNode();
|
|
110
|
-
if (rootNode instanceof ShadowRoot || rootNode instanceof Document) {
|
|
111
|
-
return rootNode.querySelector(this.target);
|
|
112
|
-
}
|
|
113
|
-
return null;
|
|
114
|
-
})() ||
|
|
115
|
-
document.querySelector(this.target) ||
|
|
116
|
-
document);
|
|
117
|
-
}
|
|
118
|
-
else {
|
|
119
|
-
return this.parentElement;
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
context() {
|
|
123
|
-
return html `${this.expanded ? html `<slot></slot>` : ''}`;
|
|
88
|
+
closeMenu() {
|
|
89
|
+
this.isOpen = false;
|
|
90
|
+
this.menuContainer.classList.remove("open");
|
|
124
91
|
}
|
|
125
|
-
|
|
126
|
-
|
|
92
|
+
async updateMenuPosition() {
|
|
93
|
+
const { x, y } = await computePosition(this.triggerButton, this.menuContainer, {
|
|
94
|
+
placement: this.placement,
|
|
95
|
+
middleware: this.middleware,
|
|
96
|
+
});
|
|
97
|
+
Object.assign(this.menuContainer.style, {
|
|
98
|
+
left: `${x}px`,
|
|
99
|
+
top: `${y}px`,
|
|
100
|
+
});
|
|
127
101
|
}
|
|
128
102
|
render() {
|
|
129
|
-
|
|
130
|
-
case 'side': return this.side();
|
|
131
|
-
case 'context': return this.context();
|
|
132
|
-
}
|
|
103
|
+
return html `<slot></slot>`;
|
|
133
104
|
}
|
|
134
|
-
}
|
|
105
|
+
}
|
|
135
106
|
__decorate([
|
|
136
107
|
property({ type: String }),
|
|
137
108
|
__metadata("design:type", String)
|
|
138
|
-
], QboMenu.prototype, "
|
|
139
|
-
__decorate([
|
|
140
|
-
property({ type: Boolean }),
|
|
141
|
-
__metadata("design:type", Boolean)
|
|
142
|
-
], QboMenu.prototype, "expanded", void 0);
|
|
109
|
+
], QboMenu.prototype, "placement", void 0);
|
|
143
110
|
__decorate([
|
|
144
|
-
|
|
111
|
+
state(),
|
|
145
112
|
__metadata("design:type", Object)
|
|
146
|
-
], QboMenu.prototype, "
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
113
|
+
], QboMenu.prototype, "isOpen", void 0);
|
|
114
|
+
__decorate([
|
|
115
|
+
query("slot"),
|
|
116
|
+
__metadata("design:type", HTMLSlotElement)
|
|
117
|
+
], QboMenu.prototype, "slotElement", void 0);
|
|
118
|
+
__decorate([
|
|
119
|
+
query('slot[name="menu"]'),
|
|
120
|
+
__metadata("design:type", HTMLSlotElement)
|
|
121
|
+
], QboMenu.prototype, "menuSlotElement", void 0);
|
|
122
|
+
if (!customElements.get("qbo-menu"))
|
|
123
|
+
customElements.define("qbo-menu", QboMenu);
|
package/src/qbo/qbo-menu.ts
CHANGED
|
@@ -1,151 +1,126 @@
|
|
|
1
|
-
import { LitElement, html, css } from
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
1
|
+
import { LitElement, PropertyValues, html, css, PropertyValueMap } from "lit";
|
|
2
|
+
import { property, query, state } from "lit/decorators.js";
|
|
3
|
+
import { computePosition, Placement, shift, flip } from "@floating-ui/dom";
|
|
4
4
|
|
|
5
|
-
@customElement('qbo-menu')
|
|
6
5
|
export class QboMenu extends LitElement {
|
|
7
|
-
|
|
6
|
+
// Define the placement property with type `string`
|
|
8
7
|
@property({ type: String })
|
|
9
|
-
|
|
8
|
+
placement: Placement = "bottom-start";
|
|
10
9
|
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
// Internal state to control menu visibility
|
|
11
|
+
@state() private isOpen = false;
|
|
13
12
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
}
|
|
13
|
+
// Query to find the trigger button and menu container in the shadow DOM
|
|
14
|
+
@query("slot") private slotElement!: HTMLSlotElement;
|
|
15
|
+
@query('slot[name="menu"]') private menuSlotElement!: HTMLSlotElement;
|
|
18
16
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
border: none;
|
|
23
|
-
font-size: 1.5rem;
|
|
24
|
-
cursor: pointer;
|
|
25
|
-
text-align: left;
|
|
26
|
-
}
|
|
27
|
-
`];
|
|
17
|
+
private triggerButton!: HTMLElement;
|
|
18
|
+
private menuContainer!: HTMLElement;
|
|
19
|
+
private middleware = [flip(), shift()];
|
|
28
20
|
|
|
29
|
-
|
|
30
|
-
this.expanded = !this.expanded;
|
|
31
|
-
}
|
|
21
|
+
static styles = css``;
|
|
32
22
|
|
|
33
23
|
connectedCallback() {
|
|
34
24
|
super.connectedCallback();
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
document.addEventListener('click', this.hideContextMenu);
|
|
38
|
-
this.contextParent?.addEventListener('contextmenu', this.showContextMenu);
|
|
39
|
-
break;
|
|
40
|
-
case 'side':
|
|
41
|
-
this.renderRoot.addEventListener('click', this.toggleSideMenu);
|
|
42
|
-
break;
|
|
43
|
-
}
|
|
25
|
+
// document.addEventListener("click", this.handleOutsideClick.bind);
|
|
26
|
+
document.addEventListener("qbo-menu-open", this.handleMenuOpen.bind(this));
|
|
44
27
|
}
|
|
45
28
|
|
|
46
29
|
disconnectedCallback() {
|
|
47
30
|
super.disconnectedCallback();
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
document.removeEventListener('click', this.hideContextMenu);
|
|
52
|
-
break;
|
|
53
|
-
case 'side':
|
|
54
|
-
this.renderRoot.removeEventListener('click', this.toggleSideMenu);
|
|
55
|
-
break;
|
|
56
|
-
}
|
|
31
|
+
// document.removeEventListener("click", this.handleOutsideClick);
|
|
32
|
+
document.removeEventListener("qbo-menu-open", this.handleMenuOpen);
|
|
33
|
+
this.triggerButton.removeEventListener("click", this.toggleMenu);
|
|
57
34
|
}
|
|
58
35
|
|
|
59
|
-
|
|
60
|
-
@property({ type: String })
|
|
61
|
-
target = '';
|
|
62
|
-
|
|
63
|
-
xcreateRenderRoot() {
|
|
64
|
-
return this; // : super.createRenderRoot();
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
private showContextMenu = (event: Event) => {
|
|
36
|
+
handleMenuOpen = (event: Event) => {
|
|
68
37
|
event.preventDefault();
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
38
|
+
event.stopPropagation();
|
|
39
|
+
const customEvent = event as CustomEvent;
|
|
40
|
+
if (customEvent.detail.menu !== this && this.isOpen) {
|
|
41
|
+
this.closeMenu();
|
|
72
42
|
}
|
|
73
|
-
}
|
|
43
|
+
};
|
|
74
44
|
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
45
|
+
handleOutsideClick = (event: Event) => {
|
|
46
|
+
const customEvent = event as PointerEvent;
|
|
47
|
+
const target = customEvent.target as HTMLElement;
|
|
48
|
+
if (target !== this && !this.contains(target)) {
|
|
49
|
+
this.closeMenu();
|
|
78
50
|
}
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
firstUpdated(changes: PropertyValues) {
|
|
54
|
+
super.firstUpdated(changes);
|
|
55
|
+
|
|
56
|
+
this.triggerButton =
|
|
57
|
+
this.querySelector("*[data-trigger]") ||
|
|
58
|
+
(this.querySelector("button") as HTMLElement) ||
|
|
59
|
+
this.parentElement;
|
|
60
|
+
this.menuContainer =
|
|
61
|
+
this.querySelector("*[data-content]") ||
|
|
62
|
+
this.querySelector("aside") ||
|
|
63
|
+
(this.querySelector("menu") as HTMLElement);
|
|
64
|
+
|
|
65
|
+
if (this.triggerButton != null)
|
|
66
|
+
this.triggerButton.addEventListener("click", this.toggleMenu);
|
|
79
67
|
}
|
|
80
68
|
|
|
81
|
-
|
|
82
|
-
event.
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
get contextParent(): HTMLElement | Document | null {
|
|
110
|
-
if (this.target) {
|
|
111
|
-
return (
|
|
112
|
-
this.closest(this.target) as HTMLElement ||
|
|
113
|
-
(() => {
|
|
114
|
-
const rootNode = this.getRootNode();
|
|
115
|
-
if (rootNode instanceof ShadowRoot || rootNode instanceof Document) {
|
|
116
|
-
return rootNode.querySelector(this.target);
|
|
117
|
-
}
|
|
118
|
-
return null;
|
|
119
|
-
})() ||
|
|
120
|
-
document.querySelector(this.target) ||
|
|
121
|
-
document
|
|
122
|
-
);
|
|
123
|
-
} else {
|
|
124
|
-
return this.parentElement;
|
|
69
|
+
toggleMenu = (event: Event) => {
|
|
70
|
+
if (event.target instanceof HTMLElement
|
|
71
|
+
|| event.target instanceof SVGElement
|
|
72
|
+
|| event.target instanceof SVGUseElement) {
|
|
73
|
+
let toggleMenu = true;
|
|
74
|
+
let parent = event.target.parentElement;
|
|
75
|
+
while (toggleMenu && parent) {
|
|
76
|
+
if (parent instanceof HTMLElement && parent.tagName.toLowerCase() == 'aside')
|
|
77
|
+
toggleMenu = false;
|
|
78
|
+
else
|
|
79
|
+
parent = parent.parentElement;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
if (toggleMenu) {
|
|
83
|
+
this.isOpen = !this.isOpen;
|
|
84
|
+
this.menuContainer.classList.toggle("open", this.isOpen);
|
|
85
|
+
|
|
86
|
+
if (this.isOpen) {
|
|
87
|
+
this.updateMenuPosition();
|
|
88
|
+
document.dispatchEvent(
|
|
89
|
+
new CustomEvent("qbo-menu-open", {
|
|
90
|
+
bubbles: true,
|
|
91
|
+
composed: true,
|
|
92
|
+
detail: { menu: this },
|
|
93
|
+
})
|
|
94
|
+
);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
125
97
|
}
|
|
126
|
-
}
|
|
98
|
+
};
|
|
127
99
|
|
|
128
|
-
|
|
129
|
-
|
|
100
|
+
closeMenu() {
|
|
101
|
+
this.isOpen = false;
|
|
102
|
+
this.menuContainer.classList.remove("open");
|
|
130
103
|
}
|
|
131
104
|
|
|
132
|
-
|
|
133
|
-
const
|
|
134
|
-
|
|
135
|
-
this.
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
105
|
+
private async updateMenuPosition() {
|
|
106
|
+
const { x, y } = await computePosition(
|
|
107
|
+
this.triggerButton,
|
|
108
|
+
this.menuContainer,
|
|
109
|
+
{
|
|
110
|
+
placement: this.placement as Placement | undefined,
|
|
111
|
+
middleware: this.middleware,
|
|
112
|
+
}
|
|
113
|
+
);
|
|
114
|
+
|
|
115
|
+
Object.assign(this.menuContainer.style, {
|
|
116
|
+
left: `${x}px`,
|
|
117
|
+
top: `${y}px`,
|
|
118
|
+
});
|
|
143
119
|
}
|
|
144
120
|
|
|
145
121
|
render() {
|
|
146
|
-
|
|
147
|
-
case 'side': return this.side();
|
|
148
|
-
case 'context': return this.context();
|
|
149
|
-
}
|
|
122
|
+
return html`<slot></slot>`;
|
|
150
123
|
}
|
|
151
124
|
}
|
|
125
|
+
|
|
126
|
+
if (!customElements.get("qbo-menu")) customElements.define("qbo-menu", QboMenu);
|
package/src/qbo/qbo-popover.d.ts
CHANGED
|
@@ -1,21 +1,17 @@
|
|
|
1
|
-
import { PropertyValues } from
|
|
2
|
-
import {
|
|
3
|
-
export declare class QboPopover extends
|
|
4
|
-
|
|
5
|
-
contentStyle: string;
|
|
6
|
-
containerAtt: string;
|
|
7
|
-
containerValue: string;
|
|
8
|
-
defaultContent: string;
|
|
9
|
-
htmlAtt: string;
|
|
10
|
-
htmlValue: string;
|
|
11
|
-
placementAtt: string;
|
|
12
|
-
placementValue: string;
|
|
1
|
+
import { LitElement, PropertyValues } from "lit";
|
|
2
|
+
import { Placement } from "@floating-ui/dom";
|
|
3
|
+
export declare class QboPopover extends LitElement {
|
|
4
|
+
placement: Placement;
|
|
13
5
|
selector: string;
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
6
|
+
private isOpen;
|
|
7
|
+
private triggerElement;
|
|
8
|
+
private middleware;
|
|
9
|
+
private setPosition;
|
|
18
10
|
connectedCallback(): void;
|
|
19
|
-
|
|
11
|
+
disconnectedCallback(): void;
|
|
12
|
+
firstUpdated(changes: PropertyValues): void;
|
|
13
|
+
handleMenuOpen: (event: Event) => void;
|
|
14
|
+
toggleMenu: (event: Event) => void;
|
|
15
|
+
closeMenu(): void;
|
|
20
16
|
render(): import("lit-html").TemplateResult<1>;
|
|
21
17
|
}
|