wj-elements 0.1.136 → 0.1.137
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/dist/dark.css +223 -0
- package/dist/infinite-scroll.element-XVJukzjy.js +272 -0
- package/dist/infinite-scroll.element-XVJukzjy.js.map +1 -0
- package/dist/light.css +534 -0
- package/dist/list.element-Ce1vIm1O.js +50 -0
- package/dist/list.element-Ce1vIm1O.js.map +1 -0
- package/dist/localize.js +70 -0
- package/dist/localize.js.map +1 -0
- package/dist/popup.element-tyYxow0p.js +1623 -0
- package/dist/popup.element-tyYxow0p.js.map +1 -0
- package/dist/router-links-CJnOdbas.js +150 -0
- package/dist/router-links-CJnOdbas.js.map +1 -0
- package/dist/styles.css +849 -0
- package/dist/wje-accordion-item.js +113 -0
- package/dist/wje-accordion-item.js.map +1 -0
- package/dist/wje-accordion.js +122 -0
- package/dist/wje-accordion.js.map +1 -0
- package/dist/wje-animation.js +4326 -0
- package/dist/wje-animation.js.map +1 -0
- package/dist/wje-aside.js +55 -0
- package/dist/wje-aside.js.map +1 -0
- package/dist/wje-avatar.js +90 -0
- package/dist/wje-avatar.js.map +1 -0
- package/dist/wje-badge.js +71 -0
- package/dist/wje-badge.js.map +1 -0
- package/dist/wje-breadcrumb.js +195 -0
- package/dist/wje-breadcrumb.js.map +1 -0
- package/dist/wje-breadcrumbs.js +140 -0
- package/dist/wje-breadcrumbs.js.map +1 -0
- package/dist/wje-button-group.js +85 -0
- package/dist/wje-button-group.js.map +1 -0
- package/dist/wje-button.js +352 -0
- package/dist/wje-button.js.map +1 -0
- package/dist/wje-card-content.js +48 -0
- package/dist/wje-card-content.js.map +1 -0
- package/dist/wje-card-controls.js +48 -0
- package/dist/wje-card-controls.js.map +1 -0
- package/dist/wje-card-header.js +48 -0
- package/dist/wje-card-header.js.map +1 -0
- package/dist/wje-card-subtitle.js +55 -0
- package/dist/wje-card-subtitle.js.map +1 -0
- package/dist/wje-card-title.js +55 -0
- package/dist/wje-card-title.js.map +1 -0
- package/dist/wje-card.js +56 -0
- package/dist/wje-card.js.map +1 -0
- package/dist/wje-carousel-item.js +63 -0
- package/dist/wje-carousel-item.js.map +1 -0
- package/dist/wje-carousel.js +380 -0
- package/dist/wje-carousel.js.map +1 -0
- package/dist/wje-checkbox.js +540 -0
- package/dist/wje-checkbox.js.map +1 -0
- package/dist/wje-chip.js +76 -0
- package/dist/wje-chip.js.map +1 -0
- package/dist/wje-col.js +38 -0
- package/dist/wje-col.js.map +1 -0
- package/dist/wje-color-picker.js +1339 -0
- package/dist/wje-color-picker.js.map +1 -0
- package/dist/wje-container.js +56 -0
- package/dist/wje-container.js.map +1 -0
- package/dist/wje-copy-button.js +218 -0
- package/dist/wje-copy-button.js.map +1 -0
- package/dist/wje-dialog.js +249 -0
- package/dist/wje-dialog.js.map +1 -0
- package/dist/wje-divider.js +55 -0
- package/dist/wje-divider.js.map +1 -0
- package/dist/wje-dropdown.js +194 -0
- package/dist/wje-dropdown.js.map +1 -0
- package/dist/wje-element.js +967 -0
- package/dist/wje-element.js.map +1 -0
- package/dist/wje-fetchAndParseCSS.js +60 -0
- package/dist/wje-fetchAndParseCSS.js.map +1 -0
- package/dist/wje-file-upload-item.js +140 -0
- package/dist/wje-file-upload-item.js.map +1 -0
- package/dist/wje-file-upload.js +552 -0
- package/dist/wje-file-upload.js.map +1 -0
- package/dist/wje-footer.js +52 -0
- package/dist/wje-footer.js.map +1 -0
- package/dist/wje-form.js +53 -0
- package/dist/wje-form.js.map +1 -0
- package/dist/wje-format-digital.js +146 -0
- package/dist/wje-format-digital.js.map +1 -0
- package/dist/wje-grid.js +54 -0
- package/dist/wje-grid.js.map +1 -0
- package/dist/wje-header.js +56 -0
- package/dist/wje-header.js.map +1 -0
- package/dist/wje-icon-picker.js +349 -0
- package/dist/wje-icon-picker.js.map +1 -0
- package/dist/wje-icon.js +191 -0
- package/dist/wje-icon.js.map +1 -0
- package/dist/wje-img-comparer.js +131 -0
- package/dist/wje-img-comparer.js.map +1 -0
- package/dist/wje-img.js +80 -0
- package/dist/wje-img.js.map +1 -0
- package/dist/wje-infinite-scroll.js +6 -0
- package/dist/wje-infinite-scroll.js.map +1 -0
- package/dist/wje-input-file.js +111 -0
- package/dist/wje-input-file.js.map +1 -0
- package/dist/wje-input.js +452 -0
- package/dist/wje-input.js.map +1 -0
- package/dist/wje-item.js +88 -0
- package/dist/wje-item.js.map +1 -0
- package/dist/wje-kanban.js +462 -0
- package/dist/wje-kanban.js.map +1 -0
- package/dist/wje-label.js +53 -0
- package/dist/wje-label.js.map +1 -0
- package/dist/wje-list.js +6 -0
- package/dist/wje-list.js.map +1 -0
- package/dist/wje-main.js +52 -0
- package/dist/wje-main.js.map +1 -0
- package/dist/wje-masonry.js +267 -0
- package/dist/wje-masonry.js.map +1 -0
- package/dist/wje-master.js +687 -0
- package/dist/wje-master.js.map +1 -0
- package/dist/wje-menu-button.js +60 -0
- package/dist/wje-menu-button.js.map +1 -0
- package/dist/wje-menu-item.js +545 -0
- package/dist/wje-menu-item.js.map +1 -0
- package/dist/wje-menu-label.js +55 -0
- package/dist/wje-menu-label.js.map +1 -0
- package/dist/wje-menu.js +72 -0
- package/dist/wje-menu.js.map +1 -0
- package/dist/wje-option.js +112 -0
- package/dist/wje-option.js.map +1 -0
- package/dist/wje-options.js +355 -0
- package/dist/wje-options.js.map +1 -0
- package/dist/wje-orgchart-group.js +72 -0
- package/dist/wje-orgchart-group.js.map +1 -0
- package/dist/wje-orgchart-item.js +98 -0
- package/dist/wje-orgchart-item.js.map +1 -0
- package/dist/wje-orgchart.js +49 -0
- package/dist/wje-orgchart.js.map +1 -0
- package/dist/wje-popup.js +6 -0
- package/dist/wje-popup.js.map +1 -0
- package/dist/wje-progress-bar.js +213 -0
- package/dist/wje-progress-bar.js.map +1 -0
- package/dist/wje-qr-code.js +2892 -0
- package/dist/wje-qr-code.js.map +1 -0
- package/dist/wje-radio-group.js +228 -0
- package/dist/wje-radio-group.js.map +1 -0
- package/dist/wje-radio.js +106 -0
- package/dist/wje-radio.js.map +1 -0
- package/dist/wje-rate.js +300 -0
- package/dist/wje-rate.js.map +1 -0
- package/dist/wje-relative-time.js +115 -0
- package/dist/wje-relative-time.js.map +1 -0
- package/dist/wje-reorder-dropzone.js +49 -0
- package/dist/wje-reorder-dropzone.js.map +1 -0
- package/dist/wje-reorder-handle.js +218 -0
- package/dist/wje-reorder-handle.js.map +1 -0
- package/dist/wje-reorder-item.js +61 -0
- package/dist/wje-reorder-item.js.map +1 -0
- package/dist/wje-reorder.js +281 -0
- package/dist/wje-reorder.js.map +1 -0
- package/dist/wje-route.js +43 -0
- package/dist/wje-route.js.map +1 -0
- package/dist/wje-router-link.js +64 -0
- package/dist/wje-router-link.js.map +1 -0
- package/dist/wje-router-outlet.js +192 -0
- package/dist/wje-router-outlet.js.map +1 -0
- package/dist/wje-routerx.js +1437 -0
- package/dist/wje-routerx.js.map +1 -0
- package/dist/wje-row.js +49 -0
- package/dist/wje-row.js.map +1 -0
- package/dist/wje-select.js +630 -0
- package/dist/wje-select.js.map +1 -0
- package/dist/wje-slider.js +221 -0
- package/dist/wje-slider.js.map +1 -0
- package/dist/wje-sliding-container.js +474 -0
- package/dist/wje-sliding-container.js.map +1 -0
- package/dist/wje-split-view.js +153 -0
- package/dist/wje-split-view.js.map +1 -0
- package/dist/wje-status.js +61 -0
- package/dist/wje-status.js.map +1 -0
- package/dist/wje-step.js +50 -0
- package/dist/wje-step.js.map +1 -0
- package/dist/wje-stepper.js +231 -0
- package/dist/wje-stepper.js.map +1 -0
- package/dist/wje-store.js +401 -0
- package/dist/wje-store.js.map +1 -0
- package/dist/wje-tab-group.js +137 -0
- package/dist/wje-tab-group.js.map +1 -0
- package/dist/wje-tab-panel.js +46 -0
- package/dist/wje-tab-panel.js.map +1 -0
- package/dist/wje-tab.js +59 -0
- package/dist/wje-tab.js.map +1 -0
- package/dist/wje-textarea.js +373 -0
- package/dist/wje-textarea.js.map +1 -0
- package/dist/wje-thumbnail.js +54 -0
- package/dist/wje-thumbnail.js.map +1 -0
- package/dist/wje-toast.js +334 -0
- package/dist/wje-toast.js.map +1 -0
- package/dist/wje-toggle.js +125 -0
- package/dist/wje-toggle.js.map +1 -0
- package/dist/wje-toolbar-action.js +72 -0
- package/dist/wje-toolbar-action.js.map +1 -0
- package/dist/wje-toolbar.js +63 -0
- package/dist/wje-toolbar.js.map +1 -0
- package/dist/wje-tooltip.js +166 -0
- package/dist/wje-tooltip.js.map +1 -0
- package/dist/wje-visually-hidden.js +55 -0
- package/dist/wje-visually-hidden.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,545 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
3
|
+
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
4
|
+
import { b as bindRouterLinks } from "./router-links-CJnOdbas.js";
|
|
5
|
+
import WJElement, { WjElementUtils, event } from "./wje-element.js";
|
|
6
|
+
const styles = `/*
|
|
7
|
+
[ WJ Menu Item ]
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
:host {
|
|
11
|
+
--wje-menu-item-safe-triangle-cursor-x: 0;
|
|
12
|
+
--wje-menu-item-safe-triangle-cursor-y: 0;
|
|
13
|
+
--wje-menu-item-safe-triangle-submenu-start-x: 0;
|
|
14
|
+
--wje-menu-item-safe-triangle-submenu-start-y: 0;
|
|
15
|
+
--wje-menu-item-safe-triangle-submenu-end-x: 0;
|
|
16
|
+
--wje-menu-item-safe-triangle-submenu-end-y: 0;
|
|
17
|
+
|
|
18
|
+
display: block;
|
|
19
|
+
.native-menu-item {
|
|
20
|
+
background: var(--wje-menu-item-background);
|
|
21
|
+
position: relative;
|
|
22
|
+
display: flex;
|
|
23
|
+
flex-wrap: nowrap;
|
|
24
|
+
align-items: center;
|
|
25
|
+
justify-content: center;
|
|
26
|
+
color: var(--wje-menu-item-color);
|
|
27
|
+
padding-top: var(--wje-menu-item-padding-top);
|
|
28
|
+
padding-bottom: var(--wje-menu-item-padding-bottom);
|
|
29
|
+
transition: var(--wje-transition-fast) fill;
|
|
30
|
+
user-select: none;
|
|
31
|
+
white-space: nowrap;
|
|
32
|
+
cursor: pointer;
|
|
33
|
+
width: 100%;
|
|
34
|
+
|
|
35
|
+
&:hover {
|
|
36
|
+
color: var(--wje-menu-item-color-hover);
|
|
37
|
+
background: var(--wje-menu-item-background-hover);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
&:focus {
|
|
41
|
+
color: var(--wje-menu-item-color-focus);
|
|
42
|
+
background: var(--wje-menu-item-background-focus);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
&:active {
|
|
46
|
+
color: var(--wje-menu-item-color-active);
|
|
47
|
+
background: var(--wje-menu-item-background-active);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
.label {
|
|
51
|
+
flex: 1 1 auto;
|
|
52
|
+
display: inline-block;
|
|
53
|
+
text-overflow: ellipsis;
|
|
54
|
+
overflow: hidden;
|
|
55
|
+
line-height: normal;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
.check-icon {
|
|
59
|
+
flex: 0 0 auto;
|
|
60
|
+
display: var(--wje-menu-item-check-icon-display, flex);
|
|
61
|
+
align-items: center;
|
|
62
|
+
justify-content: center;
|
|
63
|
+
width: var(--wje-menu-item-check-icon-width, 1.5rem);
|
|
64
|
+
visibility: hidden;
|
|
65
|
+
|
|
66
|
+
&.checked {
|
|
67
|
+
visibility: visible;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
&.expanded-submenu {
|
|
72
|
+
color: var(--wje-menu-item-color-active);
|
|
73
|
+
background: var(--wje-menu-item-background-active);
|
|
74
|
+
|
|
75
|
+
&:hover {
|
|
76
|
+
color: var(--wje-menu-item-color-hover);
|
|
77
|
+
background: var(--wje-menu-item-background-hover);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
&::after {
|
|
81
|
+
content: '';
|
|
82
|
+
position: fixed;
|
|
83
|
+
z-index: 1;
|
|
84
|
+
top: 0;
|
|
85
|
+
right: 0;
|
|
86
|
+
bottom: 0;
|
|
87
|
+
left: 0;
|
|
88
|
+
clip-path: polygon(
|
|
89
|
+
var(--wje-menu-item-safe-triangle-cursor-x) var(--wje-menu-item-safe-triangle-cursor-y),
|
|
90
|
+
var(--wje-menu-item-safe-triangle-submenu-start-x)
|
|
91
|
+
var(--wje-menu-item-safe-triangle-submenu-start-y),
|
|
92
|
+
var(--wje-menu-item-safe-triangle-submenu-end-x) var(--wje-menu-item-safe-triangle-submenu-end-y)
|
|
93
|
+
);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
:host(.collapse) {
|
|
100
|
+
::slotted([slot='start']) {
|
|
101
|
+
margin: 0;
|
|
102
|
+
/*width: auto;*/
|
|
103
|
+
/*display: contents;*/
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
::slotted([slot='end']) {
|
|
107
|
+
display: none;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
.label,
|
|
111
|
+
.check-icon,
|
|
112
|
+
.submenu-icon {
|
|
113
|
+
display: none;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
.submenu-icon {
|
|
117
|
+
--wje-icon-size: 14px !important;
|
|
118
|
+
flex: 0 0 auto;
|
|
119
|
+
display: flex;
|
|
120
|
+
align-items: center;
|
|
121
|
+
justify-content: center;
|
|
122
|
+
width: 1.5rem;
|
|
123
|
+
visibility: var(--wje-menu-item-icon-visibility);
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
.has-submenu {
|
|
127
|
+
.submenu-icon {
|
|
128
|
+
--wje-menu-item-icon-visibility: visible;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
.submenu-icon.collapse {
|
|
133
|
+
flex: none;
|
|
134
|
+
/*right: 10px;*/
|
|
135
|
+
position: relative;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
:host(:focus-visible) {
|
|
139
|
+
outline: none;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
::slotted([slot='start']) {
|
|
143
|
+
flex: 0 0 auto;
|
|
144
|
+
display: flex;
|
|
145
|
+
align-items: center;
|
|
146
|
+
margin-inline-end: 0.5rem;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
::slotted([slot='end']) {
|
|
150
|
+
flex: 0 0 auto;
|
|
151
|
+
display: flex;
|
|
152
|
+
align-items: center;
|
|
153
|
+
margin-inline-start: 0.5rem;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
:host(.wje-menu-variant-nav) {
|
|
157
|
+
/*posun 2 a x urovne o 1 rem*/
|
|
158
|
+
::slotted([slot='submenu']) {
|
|
159
|
+
--wje-menu-border-width: 0 !important;
|
|
160
|
+
--wje-menu-margin-inline: 2rem 0 !important;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
/*:host {*/
|
|
165
|
+
/* ::slotted([slot="start"]) {*/
|
|
166
|
+
/* width: 1.5rem;*/
|
|
167
|
+
/* }*/
|
|
168
|
+
/*}*/
|
|
169
|
+
|
|
170
|
+
:host(.wje-menu-variant-context) {
|
|
171
|
+
display: block;
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
:host(.active) {
|
|
175
|
+
color: var(--wje-menu-item-color-active);
|
|
176
|
+
background: var(--wje-menu-item-background-active);
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
:host(.open) {
|
|
180
|
+
color: var(--wje-menu-item-color-active);
|
|
181
|
+
background: var(--wje-menu-item-background-active);
|
|
182
|
+
}
|
|
183
|
+
`;
|
|
184
|
+
class MenuItem extends WJElement {
|
|
185
|
+
/**
|
|
186
|
+
* Constructor for MenuItem class.
|
|
187
|
+
* @class
|
|
188
|
+
*/
|
|
189
|
+
constructor() {
|
|
190
|
+
super();
|
|
191
|
+
__publicField(this, "className", "MenuItem");
|
|
192
|
+
__publicField(this, "mouseenterHandler", (e) => {
|
|
193
|
+
if (this.collapse || this.variant === "CONTEXT" && this.hasSubmenu) {
|
|
194
|
+
if (this.hasAttribute("manual") || this.variant === "NAV" && this.collapse) return;
|
|
195
|
+
this.activateSubmenu(e);
|
|
196
|
+
e.stopPropagation();
|
|
197
|
+
this.showSubmenu();
|
|
198
|
+
}
|
|
199
|
+
});
|
|
200
|
+
/**
|
|
201
|
+
* Handles the click event on the MenuItem.
|
|
202
|
+
* @param {object} e
|
|
203
|
+
*/
|
|
204
|
+
__publicField(this, "clickHandler", (e) => {
|
|
205
|
+
switch (this.variant) {
|
|
206
|
+
case "NAV":
|
|
207
|
+
if (!this.collapse && this.hasSubmenu) {
|
|
208
|
+
this.submenuToggle(e);
|
|
209
|
+
this.hideSubmenu();
|
|
210
|
+
e.stopPropagation();
|
|
211
|
+
} else {
|
|
212
|
+
event.dispatchCustomEvent(this, "wje-menu-item:click");
|
|
213
|
+
event.dispatchCustomEvent(this, this.dialog);
|
|
214
|
+
}
|
|
215
|
+
break;
|
|
216
|
+
case "CONTEXT":
|
|
217
|
+
if (!this.collapse && this.hasSubmenu) {
|
|
218
|
+
let submenuElements = this.submenu.assignedElements({ flatten: true })[0];
|
|
219
|
+
if (submenuElements == null ? void 0 : submenuElements.hasAttribute("active")) {
|
|
220
|
+
this.shouldHideSubmenu(e);
|
|
221
|
+
} else {
|
|
222
|
+
this.activateSubmenu(e);
|
|
223
|
+
this.showSubmenu(e);
|
|
224
|
+
}
|
|
225
|
+
} else {
|
|
226
|
+
event.dispatchCustomEvent(this, "wje-menu-item:click");
|
|
227
|
+
event.dispatchCustomEvent(this, this.dialog);
|
|
228
|
+
}
|
|
229
|
+
break;
|
|
230
|
+
}
|
|
231
|
+
});
|
|
232
|
+
/**
|
|
233
|
+
* Checks if the submenu should be hidden based on the event.
|
|
234
|
+
* @param {Event} e The event object.
|
|
235
|
+
*/
|
|
236
|
+
__publicField(this, "shouldHideSubmenu", (e) => {
|
|
237
|
+
if (this.collapse || this.variant === "CONTEXT" && this.hasSubmenu) {
|
|
238
|
+
if (e.relatedTarget && this.contains(e.relatedTarget) || this.variant === "NAV" && !this.collapse) {
|
|
239
|
+
return;
|
|
240
|
+
}
|
|
241
|
+
this.deactivateSubmenu();
|
|
242
|
+
this.hideSubmenu();
|
|
243
|
+
}
|
|
244
|
+
});
|
|
245
|
+
/**
|
|
246
|
+
* Dispatches a mousemove event.
|
|
247
|
+
*/
|
|
248
|
+
__publicField(this, "dispatchMove", (e) => {
|
|
249
|
+
this.style.setProperty("--wje-menu-item-safe-triangle-cursor-x", `${e.clientX}px`);
|
|
250
|
+
this.style.setProperty("--wje-menu-item-safe-triangle-cursor-y", `${e.clientY}px`);
|
|
251
|
+
});
|
|
252
|
+
/**
|
|
253
|
+
* Dispatches a reposition event.
|
|
254
|
+
*/
|
|
255
|
+
__publicField(this, "dispatchReposition", (e) => {
|
|
256
|
+
if (this.submenu.assignedNodes().length === 0) return;
|
|
257
|
+
let submenu = this.submenu.assignedNodes()[0];
|
|
258
|
+
const { left, top, width, height } = submenu.getBoundingClientRect();
|
|
259
|
+
this.style.setProperty("--wje-menu-item-safe-triangle-submenu-start-x", `${left}px`);
|
|
260
|
+
this.style.setProperty("--wje-menu-item-safe-triangle-submenu-start-y", `${top}px`);
|
|
261
|
+
this.style.setProperty("--wje-menu-item-safe-triangle-submenu-end-x", `${left}px`);
|
|
262
|
+
this.style.setProperty("--wje-menu-item-safe-triangle-submenu-end-y", `${top + height}px`);
|
|
263
|
+
});
|
|
264
|
+
this._collapsible = false;
|
|
265
|
+
}
|
|
266
|
+
/**
|
|
267
|
+
* Getter for placement attribute.
|
|
268
|
+
* @returns {string} The placement attribute of the menu or "right-start" if it doesn't exist.
|
|
269
|
+
*/
|
|
270
|
+
get placement() {
|
|
271
|
+
let menu = this.querySelector("wje-menu");
|
|
272
|
+
if (menu == null ? void 0 : menu.hasAttribute("placement")) {
|
|
273
|
+
return menu.getAttribute("placement");
|
|
274
|
+
}
|
|
275
|
+
return "right-start";
|
|
276
|
+
}
|
|
277
|
+
/**
|
|
278
|
+
* Getter for offset attribute.
|
|
279
|
+
* @returns {string} The offset attribute of the menu or "0" if it doesn't exist.
|
|
280
|
+
*/
|
|
281
|
+
get offset() {
|
|
282
|
+
let menu = this.querySelector("wje-menu");
|
|
283
|
+
if (menu == null ? void 0 : menu.hasAttribute("offset")) {
|
|
284
|
+
return menu.getAttribute("offset");
|
|
285
|
+
}
|
|
286
|
+
return "0";
|
|
287
|
+
}
|
|
288
|
+
/**
|
|
289
|
+
* Getter for variant attribute.
|
|
290
|
+
* @returns {string} The variant attribute of the menu or "CONTEXT" if it doesn't exist.
|
|
291
|
+
*/
|
|
292
|
+
get variant() {
|
|
293
|
+
let menu = this.querySelector("wje-menu");
|
|
294
|
+
if ((menu == null ? void 0 : menu.hasAttribute("variant")) && !this.collapse) {
|
|
295
|
+
return menu.getAttribute("variant").toUpperCase();
|
|
296
|
+
}
|
|
297
|
+
return "CONTEXT";
|
|
298
|
+
}
|
|
299
|
+
/**
|
|
300
|
+
* Getter for collapse attribute.
|
|
301
|
+
* @returns {boolean} True if the closest parent has the collapse attribute, false otherwise.
|
|
302
|
+
*/
|
|
303
|
+
get collapse() {
|
|
304
|
+
if (this.closest("[collapse]")) return true;
|
|
305
|
+
return false;
|
|
306
|
+
}
|
|
307
|
+
/**
|
|
308
|
+
* Getter for cssStyleSheet.
|
|
309
|
+
* @returns {string} The styles imported from styles.css.
|
|
310
|
+
*/
|
|
311
|
+
static get cssStyleSheet() {
|
|
312
|
+
return styles;
|
|
313
|
+
}
|
|
314
|
+
/**
|
|
315
|
+
* Getter for observedAttributes.
|
|
316
|
+
* @returns {Array} An empty array as no attributes are being observed.
|
|
317
|
+
*/
|
|
318
|
+
static get observedAttributes() {
|
|
319
|
+
return [];
|
|
320
|
+
}
|
|
321
|
+
/**
|
|
322
|
+
* Sets up the attributes for the MenuItem element.
|
|
323
|
+
*/
|
|
324
|
+
setupAttributes() {
|
|
325
|
+
super.setupAttributes();
|
|
326
|
+
this.isShadowRoot = "open";
|
|
327
|
+
this.setAttribute("active-class", "open");
|
|
328
|
+
}
|
|
329
|
+
/**
|
|
330
|
+
* Removes the active attribute from the menu before drawing the MenuItem.
|
|
331
|
+
*/
|
|
332
|
+
beforeDraw() {
|
|
333
|
+
var _a;
|
|
334
|
+
(_a = this.querySelector("wje-menu")) == null ? void 0 : _a.removeAttribute("active");
|
|
335
|
+
}
|
|
336
|
+
/**
|
|
337
|
+
* Draws the MenuItem element and sets the variant and collapse attributes.
|
|
338
|
+
* @returns {DocumentFragment} The fragment to be appended to the MenuItem.
|
|
339
|
+
*/
|
|
340
|
+
draw() {
|
|
341
|
+
var _a, _b, _c;
|
|
342
|
+
this.hasSubmenu = WjElementUtils.hasSlot(this, "submenu");
|
|
343
|
+
let fragment = document.createDocumentFragment();
|
|
344
|
+
this.setAttribute("tabindex", "0");
|
|
345
|
+
this.classList.forEach((className) => {
|
|
346
|
+
if (className.startsWith("wje-menu-variant-")) {
|
|
347
|
+
this.classList.remove(className);
|
|
348
|
+
}
|
|
349
|
+
});
|
|
350
|
+
this.classList.remove("collapse");
|
|
351
|
+
this.classList.add("wje-menu-variant-" + this.variant.toLowerCase());
|
|
352
|
+
if (!this.collapse) {
|
|
353
|
+
(_a = this.querySelector("wje-menu")) == null ? void 0 : _a.setAttribute("variant", this.variant.toLowerCase());
|
|
354
|
+
} else if ((_b = this.parentElement) == null ? void 0 : _b.hasAttribute("collapse")) {
|
|
355
|
+
this.classList.add("collapse");
|
|
356
|
+
}
|
|
357
|
+
let native = document.createElement("div");
|
|
358
|
+
native.setAttribute("part", "native");
|
|
359
|
+
native.setAttribute("id", "anchor");
|
|
360
|
+
native.classList.add("native-menu-item");
|
|
361
|
+
let checkedIcon = document.createElement("span");
|
|
362
|
+
checkedIcon.setAttribute("part", "check");
|
|
363
|
+
checkedIcon.classList.add("check-icon");
|
|
364
|
+
checkedIcon.innerHTML = `<wje-icon name="check"></wje-icon>`;
|
|
365
|
+
if (this.hasAttribute("checked")) checkedIcon.classList.add("checked");
|
|
366
|
+
else checkedIcon.classList.remove("checked");
|
|
367
|
+
let start = document.createElement("slot");
|
|
368
|
+
start.name = "start";
|
|
369
|
+
let slot = document.createElement("slot");
|
|
370
|
+
slot.classList.add("label");
|
|
371
|
+
let end = document.createElement("slot");
|
|
372
|
+
end.setAttribute("part", "end");
|
|
373
|
+
end.name = "end";
|
|
374
|
+
let submenu = document.createElement("slot");
|
|
375
|
+
submenu.setAttribute("part", "submenu");
|
|
376
|
+
submenu.name = "submenu";
|
|
377
|
+
let submenuIconClass = this.collapse ? "collapse" : "expand";
|
|
378
|
+
let submenuIcon = document.createElement("span");
|
|
379
|
+
submenuIcon.setAttribute("part", "submenu-icon");
|
|
380
|
+
submenuIcon.classList.add("submenu-icon", submenuIconClass);
|
|
381
|
+
submenuIcon.innerHTML = this.collapse ? `<wje-icon name="chevron-down"></wje-icon>` : `<wje-icon name="chevron-right"></wje-icon>`;
|
|
382
|
+
if (this.hasSubmenu) native.classList.add("has-submenu");
|
|
383
|
+
else native.classList.remove("has-submenu");
|
|
384
|
+
native.appendChild(checkedIcon);
|
|
385
|
+
native.appendChild(start);
|
|
386
|
+
native.appendChild(slot);
|
|
387
|
+
native.appendChild(end);
|
|
388
|
+
native.appendChild(submenuIcon);
|
|
389
|
+
let isAppend = false;
|
|
390
|
+
if (
|
|
391
|
+
/*(this.collapse && this.variant === "NAV" && this.hasSubmenu) || */
|
|
392
|
+
this.variant === "CONTEXT" && this.hasSubmenu
|
|
393
|
+
) {
|
|
394
|
+
native.setAttribute("slot", "anchor");
|
|
395
|
+
let popup = document.createElement("wje-popup");
|
|
396
|
+
popup.setAttribute("anchor", "anchor");
|
|
397
|
+
popup.setAttribute("placement", this.placement);
|
|
398
|
+
popup.setAttribute("offset", this.offset);
|
|
399
|
+
popup.appendChild(native);
|
|
400
|
+
popup.appendChild(submenu);
|
|
401
|
+
this.popup = popup;
|
|
402
|
+
fragment.appendChild(popup);
|
|
403
|
+
isAppend = true;
|
|
404
|
+
}
|
|
405
|
+
if (((_c = this.parentElement) == null ? void 0 : _c.hasAttribute("collapse")) && !this.hasSubmenu) {
|
|
406
|
+
fragment.appendChild(this.collapseItem(native));
|
|
407
|
+
} else if (!isAppend) {
|
|
408
|
+
fragment.appendChild(native);
|
|
409
|
+
}
|
|
410
|
+
if (!this.collapse && this.variant === "NAV" || this.variant === "MEGAMENU" && this.hasSubmenu) {
|
|
411
|
+
fragment.appendChild(submenu);
|
|
412
|
+
}
|
|
413
|
+
this.native = native;
|
|
414
|
+
this.submenu = submenu;
|
|
415
|
+
return fragment;
|
|
416
|
+
}
|
|
417
|
+
/**
|
|
418
|
+
* Adds event listeners after drawing the MenuItem.
|
|
419
|
+
*/
|
|
420
|
+
afterDraw() {
|
|
421
|
+
this.unbindRouterLinks = bindRouterLinks(this.parentElement, { selector: false });
|
|
422
|
+
this.addEventListener("mousemove", this.dispatchMove);
|
|
423
|
+
this.addEventListener("wje-popup:reposition", this.dispatchReposition);
|
|
424
|
+
event.addListener(this, "mouseenter", null, this.mouseenterHandler);
|
|
425
|
+
event.addListener(this, "mouseleave", null, this.shouldHideSubmenu);
|
|
426
|
+
event.addListener(this, "focusout", null, this.shouldHideSubmenu);
|
|
427
|
+
event.addListener(this, "click", null, this.clickHandler);
|
|
428
|
+
}
|
|
429
|
+
/**
|
|
430
|
+
* Creates a tooltip for the MenuItem when it is collapsed.
|
|
431
|
+
* @param {HTMLElement} native The native MenuItem element.
|
|
432
|
+
* @returns {HTMLElement} The tooltip element.
|
|
433
|
+
*/
|
|
434
|
+
collapseItem(native) {
|
|
435
|
+
let tooltipStart = document.createElement("slot");
|
|
436
|
+
tooltipStart.setAttribute("slot", "start");
|
|
437
|
+
tooltipStart.setAttribute("name", "tooltip-start");
|
|
438
|
+
let tooltipEnd = document.createElement("slot");
|
|
439
|
+
tooltipEnd.setAttribute("slot", "end");
|
|
440
|
+
tooltipEnd.setAttribute("name", "tooltip-end");
|
|
441
|
+
let tooltip = document.createElement("wje-tooltip");
|
|
442
|
+
tooltip.setAttribute("content", this.getTextFromElement(this));
|
|
443
|
+
tooltip.setAttribute("placement", "right");
|
|
444
|
+
tooltip.setAttribute("offset", this.offset || "0");
|
|
445
|
+
tooltip.appendChild(tooltipStart);
|
|
446
|
+
tooltip.appendChild(tooltipEnd);
|
|
447
|
+
tooltip.appendChild(native);
|
|
448
|
+
return tooltip;
|
|
449
|
+
}
|
|
450
|
+
/**
|
|
451
|
+
* Shows the submenu of the MenuItem.
|
|
452
|
+
*/
|
|
453
|
+
showSubmenu() {
|
|
454
|
+
var _a;
|
|
455
|
+
this.tabIndex = -1;
|
|
456
|
+
if (this.hasSubmenu) {
|
|
457
|
+
(_a = this.popup) == null ? void 0 : _a.setAttribute("active", "");
|
|
458
|
+
this.classList.add("expanded-submenu");
|
|
459
|
+
this.native.classList.add("expanded-submenu");
|
|
460
|
+
}
|
|
461
|
+
}
|
|
462
|
+
/**
|
|
463
|
+
* Hides the submenu of the MenuItem.
|
|
464
|
+
*/
|
|
465
|
+
hideSubmenu() {
|
|
466
|
+
var _a;
|
|
467
|
+
this.tabIndex = 0;
|
|
468
|
+
if (this.hasSubmenu) {
|
|
469
|
+
(_a = this.popup) == null ? void 0 : _a.removeAttribute("active");
|
|
470
|
+
this.classList.remove("expanded-submenu");
|
|
471
|
+
this.native.classList.remove("expanded-submenu");
|
|
472
|
+
}
|
|
473
|
+
}
|
|
474
|
+
/**
|
|
475
|
+
* Toggles the active state of the submenu element.
|
|
476
|
+
* If the submenu is not active, it sets the "active" attribute.
|
|
477
|
+
* If the submenu is already active, it removes the "active" attribute.
|
|
478
|
+
* @param {Event} e The event object.
|
|
479
|
+
*/
|
|
480
|
+
submenuToggle(e) {
|
|
481
|
+
if (this.hasSubmenu) {
|
|
482
|
+
let submenuElements = this.submenu.assignedElements({ flatten: true })[0];
|
|
483
|
+
if (!submenuElements.hasAttribute("active")) {
|
|
484
|
+
submenuElements.setAttribute("active", "");
|
|
485
|
+
} else {
|
|
486
|
+
if (this === e.target) submenuElements.removeAttribute("active");
|
|
487
|
+
}
|
|
488
|
+
}
|
|
489
|
+
}
|
|
490
|
+
/**
|
|
491
|
+
* Deactivates the submenu by removing the "active" attribute.
|
|
492
|
+
*/
|
|
493
|
+
deactivateSubmenu() {
|
|
494
|
+
if (this.hasSubmenu) {
|
|
495
|
+
let submenuElements = this.submenu.assignedElements({ flatten: true })[0];
|
|
496
|
+
if (submenuElements.hasAttribute("active")) {
|
|
497
|
+
submenuElements.removeAttribute("active");
|
|
498
|
+
}
|
|
499
|
+
}
|
|
500
|
+
}
|
|
501
|
+
/**
|
|
502
|
+
* Activates the submenu of the menu item.
|
|
503
|
+
*/
|
|
504
|
+
activateSubmenu() {
|
|
505
|
+
if (this.hasSubmenu) {
|
|
506
|
+
let submenuElements = this.submenu.assignedElements({ flatten: true })[0];
|
|
507
|
+
if (!submenuElements.hasAttribute("active")) {
|
|
508
|
+
submenuElements.setAttribute("active", "");
|
|
509
|
+
}
|
|
510
|
+
}
|
|
511
|
+
}
|
|
512
|
+
/**
|
|
513
|
+
* Gets the text from the element and returns it.
|
|
514
|
+
*/
|
|
515
|
+
beforeDisconnect() {
|
|
516
|
+
var _a;
|
|
517
|
+
event.removeListener(this, "mousemove", null, this.dispatchMove);
|
|
518
|
+
event.removeListener(this, "wje-popup:reposition", null, this.dispatchReposition);
|
|
519
|
+
event.removeListener(this, "mouseenter", null, this.mouseenterHandler);
|
|
520
|
+
event.removeListener(this, "mouseleave", null, this.shouldHideSubmenu);
|
|
521
|
+
event.removeListener(this, "focusout", null, this.shouldHideSubmenu);
|
|
522
|
+
event.removeListener(this, "click", null, this.clickHandler);
|
|
523
|
+
this.context.innerHTML = "";
|
|
524
|
+
(_a = this.unbindRouterLinks) == null ? void 0 : _a.call(this);
|
|
525
|
+
}
|
|
526
|
+
/**
|
|
527
|
+
* Extracts and returns the concatenated text content from all text nodes within the specified element.
|
|
528
|
+
* @param {HTMLElement} element The HTML element from which to extract text content.
|
|
529
|
+
* @returns {string} The concatenated and trimmed text content from the element's text nodes.
|
|
530
|
+
*/
|
|
531
|
+
getTextFromElement(element) {
|
|
532
|
+
let text = "";
|
|
533
|
+
for (let node of element.childNodes) {
|
|
534
|
+
if (node.nodeType === Node.TEXT_NODE) {
|
|
535
|
+
text += node.textContent;
|
|
536
|
+
}
|
|
537
|
+
}
|
|
538
|
+
return text.trim();
|
|
539
|
+
}
|
|
540
|
+
}
|
|
541
|
+
MenuItem.define("wje-menu-item", MenuItem);
|
|
542
|
+
export {
|
|
543
|
+
MenuItem as default
|
|
544
|
+
};
|
|
545
|
+
//# sourceMappingURL=wje-menu-item.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wje-menu-item.js","sources":["../packages/wje-menu-item/menu-item.element.js","../packages/wje-menu-item/menu-item.js"],"sourcesContent":["import { bindRouterLinks } from 'slick-router/middlewares/router-links.js';\n\nimport { default as WJElement, event, WjElementUtils } from '../wje-element/element.js';\nimport styles from './styles/styles.css?inline';\n\n/**\n * `MenuItem` is a custom web component that represents a menu item.\n * @summary This element represents a menu item.\n * @documentation https://elements.webjet.sk/components/menu-item\n * @status stable\n * @augments {WJElement}\n * @csspart native - The native part of the menu item.\n * @csspart submenu - The submenu part of the menu item.\n * @slot - The default slot for the menu item.\n * @slot start - The slot for the start of the menu item.\n * @slot end - The slot for the end of the menu item.\n * @slot submenu - The slot for the submenu of the menu item.\n * @cssproperty [--wje-menu-item-color=var(--wje-color)] - Sets the text color of a menu item. Accepts any valid CSS color value.\n * @cssproperty [--wje-menu-item-background=transparent] - Defines the background color of a menu item. Default is `transparent`. Accepts any valid CSS color value.\n * @cssproperty [--wje-menu-item-color-hover=var(--wje-color-contrast-8)] - Specifies the text color of a menu item when hovered. Accepts any valid CSS color value.\n * @cssproperty [--wje-menu-item-background-hover=var(--wje-border-color)] - Sets the background color of a menu item when hovered. Accepts any valid CSS color value.\n * @cssproperty [--wje-menu-item-color-focus=var(--wje-color-contrast-8)] - Defines the text color of a menu item when focused. Accepts any valid CSS color value.\n * @cssproperty [--wje-menu-item-background-focus=var(--wje-border-color)] - Specifies the background color of a menu item when focused. Accepts any valid CSS color value.\n * @cssproperty [--wje-menu-item-color-active=var(--wje-color-contrast-8)] - Sets the text color of a menu item when active. Accepts any valid CSS color value.\n * @cssproperty [--wje-menu-item-background-active=var(--wje-border-color)] - Specifies the background color of a menu item when active. Accepts any valid CSS color value.\n * @cssproperty [--wje-menu-item-padding-top=.5rem] - Specifies the top padding inside a menu item. Accepts any valid CSS length value (e.g., `px`, `rem`).\n * @cssproperty [--wje-menu-item-padding-bottom=.5rem] - Specifies the bottom padding inside a menu item. Accepts any valid CSS length value (e.g., `px`, `rem`).\n * @cssproperty [--wje-menu-item-line-height=1.8rem] - Sets the line height for the text within a menu item. Accepts any valid CSS length value.\n * @cssproperty [--wje-menu-submenu-offset=0] - Determines the horizontal offset of a submenu relative to its parent. Accepts any valid CSS length value.\n * @cssproperty [--wje-menu-item-icon-visibility=hidden] - Controls the visibility of the icon in a menu item. Accepts `visible`, `hidden`, or `collapse`.\n * @cssproperty [--wje-menu-item-safe-triangle-cursor-x] - Specifies the x-coordinate of the cursor for the safe triangle area. Used for managing hover or focus transitions between menu items and submenus.\n * @cssproperty [--wje-menu-item-safe-triangle-cursor-y] - Specifies the y-coordinate of the cursor for the safe triangle area.\n * @cssproperty [--wje-menu-item-safe-triangle-submenu-start-x] - Defines the x-coordinate where the submenu's safe triangle starts. Helps prevent accidental submenu closing when navigating.\n * @cssproperty [--wje-menu-item-safe-triangle-submenu-start-y] - Defines the y-coordinate where the submenu's safe triangle starts.\n * @cssproperty [--wje-menu-item-safe-triangle-submenu-end-x] - Specifies the x-coordinate where the submenu's safe triangle ends.\n * @cssproperty [--wje-menu-item-safe-triangle-submenu-end-y] - Specifies the y-coordinate where the submenu's safe triangle ends.\n * @tag wje-menu-item\n */\nexport default class MenuItem extends WJElement {\n /**\n * Constructor for MenuItem class.\n * @class\n */\n constructor() {\n super();\n\n this._collapsible = false;\n }\n\n /**\n * Getter for placement attribute.\n * @returns {string} The placement attribute of the menu or \"right-start\" if it doesn't exist.\n */\n get placement() {\n let menu = this.querySelector('wje-menu');\n\n if (menu?.hasAttribute('placement')) {\n return menu.getAttribute('placement');\n }\n return 'right-start';\n }\n\n /**\n * Getter for offset attribute.\n * @returns {string} The offset attribute of the menu or \"0\" if it doesn't exist.\n */\n get offset() {\n let menu = this.querySelector('wje-menu');\n\n if (menu?.hasAttribute('offset')) {\n return menu.getAttribute('offset');\n }\n return '0';\n }\n\n /**\n * Getter for variant attribute.\n * @returns {string} The variant attribute of the menu or \"CONTEXT\" if it doesn't exist.\n */\n get variant() {\n let menu = this.querySelector('wje-menu');\n\n if (menu?.hasAttribute('variant') && !this.collapse) {\n return menu.getAttribute('variant').toUpperCase();\n }\n\n return 'CONTEXT';\n }\n\n /**\n * Getter for collapse attribute.\n * @returns {boolean} True if the closest parent has the collapse attribute, false otherwise.\n */\n get collapse() {\n if (this.closest('[collapse]')) return true;\n\n return false;\n }\n\n className = 'MenuItem';\n\n /**\n * Getter for cssStyleSheet.\n * @returns {string} The styles imported from styles.css.\n */\n static get cssStyleSheet() {\n return styles;\n }\n\n /**\n * Getter for observedAttributes.\n * @returns {Array} An empty array as no attributes are being observed.\n */\n static get observedAttributes() {\n return [];\n }\n\n /**\n * Sets up the attributes for the MenuItem element.\n */\n setupAttributes() {\n super.setupAttributes();\n this.isShadowRoot = 'open';\n this.setAttribute('active-class', 'open');\n }\n\n /**\n * Removes the active attribute from the menu before drawing the MenuItem.\n */\n beforeDraw() {\n this.querySelector('wje-menu')?.removeAttribute('active');\n }\n\n /**\n * Draws the MenuItem element and sets the variant and collapse attributes.\n * @returns {DocumentFragment} The fragment to be appended to the MenuItem.\n */\n draw() {\n this.hasSubmenu = WjElementUtils.hasSlot(this, 'submenu');\n\n let fragment = document.createDocumentFragment();\n\n this.setAttribute('tabindex', '0');\n\n this.classList.forEach((className) => {\n // Ak trieda začína na \"wje-menu-variant-\", odstráňte ju\n if (className.startsWith('wje-menu-variant-')) {\n this.classList.remove(className);\n }\n });\n\n this.classList.remove('collapse');\n this.classList.add('wje-menu-variant-' + this.variant.toLowerCase());\n\n if (!this.collapse) {\n this.querySelector('wje-menu')?.setAttribute('variant', this.variant.toLowerCase());\n } else if (this.parentElement?.hasAttribute('collapse')) {\n this.classList.add('collapse');\n }\n\n let native = document.createElement('div');\n native.setAttribute('part', 'native');\n native.setAttribute('id', 'anchor');\n native.classList.add('native-menu-item');\n\n // CHECKED - Icon\n let checkedIcon = document.createElement('span');\n checkedIcon.setAttribute('part', 'check');\n checkedIcon.classList.add('check-icon');\n checkedIcon.innerHTML = `<wje-icon name=\"check\"></wje-icon>`;\n\n if (this.hasAttribute('checked')) checkedIcon.classList.add('checked');\n else checkedIcon.classList.remove('checked');\n\n // SLOT - Start\n let start = document.createElement('slot');\n start.name = 'start';\n\n // SLOT\n let slot = document.createElement('slot');\n slot.classList.add('label');\n\n // SLOT - End\n let end = document.createElement('slot');\n end.setAttribute('part', 'end');\n end.name = 'end';\n\n // SLOT - Submenu\n let submenu = document.createElement('slot');\n submenu.setAttribute('part', 'submenu');\n submenu.name = 'submenu';\n\n // SUBMENU - Icon\n let submenuIconClass = this.collapse ? 'collapse' : 'expand';\n let submenuIcon = document.createElement('span');\n submenuIcon.setAttribute('part', 'submenu-icon');\n submenuIcon.classList.add('submenu-icon', submenuIconClass);\n submenuIcon.innerHTML = this.collapse\n ? `<wje-icon name=\"chevron-down\"></wje-icon>`\n : `<wje-icon name=\"chevron-right\"></wje-icon>`;\n\n if (this.hasSubmenu) native.classList.add('has-submenu');\n else native.classList.remove('has-submenu');\n\n native.appendChild(checkedIcon);\n native.appendChild(start);\n native.appendChild(slot);\n native.appendChild(end);\n native.appendChild(submenuIcon);\n\n let isAppend = false;\n // ak je variant typu CONTEXT zobrazime submenu ako popup\n if (\n /*(this.collapse && this.variant === \"NAV\" && this.hasSubmenu) || */ this.variant === 'CONTEXT' &&\n this.hasSubmenu\n ) {\n native.setAttribute('slot', 'anchor'); // pridame slot anchor pre popup\n\n let popup = document.createElement('wje-popup');\n popup.setAttribute('anchor', 'anchor');\n popup.setAttribute('placement', this.placement);\n popup.setAttribute('offset', this.offset);\n\n popup.appendChild(native);\n popup.appendChild(submenu);\n\n this.popup = popup;\n fragment.appendChild(popup);\n isAppend = true;\n }\n\n if (this.parentElement?.hasAttribute('collapse') && !this.hasSubmenu) {\n fragment.appendChild(this.collapseItem(native));\n } else if (!isAppend) {\n fragment.appendChild(native);\n }\n\n if ((!this.collapse && this.variant === 'NAV') || (this.variant === 'MEGAMENU' && this.hasSubmenu)) {\n fragment.appendChild(submenu);\n }\n\n this.native = native;\n this.submenu = submenu;\n\n return fragment;\n }\n\n /**\n * Adds event listeners after drawing the MenuItem.\n */\n afterDraw() {\n this.unbindRouterLinks = bindRouterLinks(this.parentElement, { selector: false });\n\n this.addEventListener('mousemove', this.dispatchMove);\n this.addEventListener('wje-popup:reposition', this.dispatchReposition);\n\n // Event na zobrazenie submenu\n event.addListener(this, 'mouseenter', null, this.mouseenterHandler);\n // Event na zrusenie zobrazenia submenu ked sa klikne mimo\n event.addListener(this, 'mouseleave', null, this.shouldHideSubmenu);\n // Event na zrusenie zobrazenia submenu ked sa klikne mimo\n event.addListener(this, 'focusout', null, this.shouldHideSubmenu);\n event.addListener(this, 'click', null, this.clickHandler);\n }\n\n mouseenterHandler = (e) => {\n if (this.collapse || (this.variant === 'CONTEXT' && this.hasSubmenu)) {\n if (this.hasAttribute('manual') || (this.variant === 'NAV' && this.collapse)) return;\n\n this.activateSubmenu(e);\n\n e.stopPropagation();\n\n this.showSubmenu();\n // this.focus();\n }\n };\n\n /**\n * Handles the click event on the MenuItem.\n * @param {object} e\n */\n clickHandler = (e) => {\n switch (this.variant) {\n case 'NAV':\n if (!this.collapse && this.hasSubmenu) {\n this.submenuToggle(e);\n this.hideSubmenu();\n e.stopPropagation();\n } else {\n event.dispatchCustomEvent(this, 'wje-menu-item:click');\n event.dispatchCustomEvent(this, this.dialog);\n }\n break;\n case 'CONTEXT':\n if (!this.collapse && this.hasSubmenu) {\n let submenuElements = this.submenu.assignedElements({ flatten: true })[0];\n if (submenuElements?.hasAttribute('active')) {\n this.shouldHideSubmenu(e);\n } else {\n this.activateSubmenu(e);\n this.showSubmenu(e);\n }\n } else {\n event.dispatchCustomEvent(this, 'wje-menu-item:click');\n event.dispatchCustomEvent(this, this.dialog);\n }\n\n break;\n }\n };\n\n /**\n * Checks if the submenu should be hidden based on the event.\n * @param {Event} e The event object.\n */\n shouldHideSubmenu = (e) => {\n if (this.collapse || (this.variant === 'CONTEXT' && this.hasSubmenu)) {\n if ((e.relatedTarget && this.contains(e.relatedTarget)) || (this.variant === 'NAV' && !this.collapse)) {\n return;\n }\n\n this.deactivateSubmenu();\n this.hideSubmenu();\n }\n };\n\n /**\n * Creates a tooltip for the MenuItem when it is collapsed.\n * @param {HTMLElement} native The native MenuItem element.\n * @returns {HTMLElement} The tooltip element.\n */\n collapseItem(native) {\n let tooltipStart = document.createElement('slot');\n tooltipStart.setAttribute('slot', 'start');\n tooltipStart.setAttribute('name', 'tooltip-start');\n\n let tooltipEnd = document.createElement('slot');\n tooltipEnd.setAttribute('slot', 'end');\n tooltipEnd.setAttribute('name', 'tooltip-end');\n\n let tooltip = document.createElement('wje-tooltip');\n tooltip.setAttribute('content', this.getTextFromElement(this));\n tooltip.setAttribute('placement', 'right');\n tooltip.setAttribute('offset', this.offset || '0');\n\n tooltip.appendChild(tooltipStart);\n tooltip.appendChild(tooltipEnd);\n tooltip.appendChild(native);\n\n return tooltip;\n }\n\n /**\n * Dispatches a mousemove event.\n */\n dispatchMove = (e) => {\n this.style.setProperty('--wje-menu-item-safe-triangle-cursor-x', `${e.clientX}px`);\n this.style.setProperty('--wje-menu-item-safe-triangle-cursor-y', `${e.clientY}px`);\n };\n\n /**\n * Dispatches a reposition event.\n */\n dispatchReposition = (e) => {\n // ak nemame submenu tak to ukoncime\n if (this.submenu.assignedNodes().length === 0) return;\n\n let submenu = this.submenu.assignedNodes()[0];\n const { left, top, width, height } = submenu.getBoundingClientRect();\n\n this.style.setProperty('--wje-menu-item-safe-triangle-submenu-start-x', `${left}px`);\n this.style.setProperty('--wje-menu-item-safe-triangle-submenu-start-y', `${top}px`);\n this.style.setProperty('--wje-menu-item-safe-triangle-submenu-end-x', `${left}px`);\n this.style.setProperty('--wje-menu-item-safe-triangle-submenu-end-y', `${top + height}px`);\n };\n\n /**\n * Shows the submenu of the MenuItem.\n */\n showSubmenu() {\n this.tabIndex = -1;\n if (this.hasSubmenu) {\n this.popup?.setAttribute('active', '');\n this.classList.add('expanded-submenu');\n this.native.classList.add('expanded-submenu');\n }\n }\n\n /**\n * Hides the submenu of the MenuItem.\n */\n hideSubmenu() {\n this.tabIndex = 0;\n if (this.hasSubmenu) {\n this.popup?.removeAttribute('active');\n this.classList.remove('expanded-submenu');\n this.native.classList.remove('expanded-submenu');\n }\n }\n\n /**\n * Toggles the active state of the submenu element.\n * If the submenu is not active, it sets the \"active\" attribute.\n * If the submenu is already active, it removes the \"active\" attribute.\n * @param {Event} e The event object.\n */\n submenuToggle(e) {\n if (this.hasSubmenu) {\n let submenuElements = this.submenu.assignedElements({ flatten: true })[0];\n if (!submenuElements.hasAttribute('active')) {\n submenuElements.setAttribute('active', '');\n } else {\n if (this === e.target) submenuElements.removeAttribute('active');\n }\n }\n }\n\n /**\n * Deactivates the submenu by removing the \"active\" attribute.\n */\n deactivateSubmenu() {\n if (this.hasSubmenu) {\n let submenuElements = this.submenu.assignedElements({ flatten: true })[0];\n if (submenuElements.hasAttribute('active')) {\n submenuElements.removeAttribute('active');\n }\n }\n }\n\n /**\n * Activates the submenu of the menu item.\n */\n activateSubmenu() {\n if (this.hasSubmenu) {\n let submenuElements = this.submenu.assignedElements({ flatten: true })[0];\n if (!submenuElements.hasAttribute('active')) {\n submenuElements.setAttribute('active', '');\n }\n }\n }\n\n /**\n * Gets the text from the element and returns it.\n */\n beforeDisconnect() {\n event.removeListener(this, 'mousemove', null, this.dispatchMove);\n event.removeListener(this, 'wje-popup:reposition', null, this.dispatchReposition);\n event.removeListener(this, 'mouseenter', null, this.mouseenterHandler);\n event.removeListener(this, 'mouseleave', null, this.shouldHideSubmenu);\n event.removeListener(this, 'focusout', null, this.shouldHideSubmenu);\n event.removeListener(this, 'click', null, this.clickHandler);\n\n this.context.innerHTML = '';\n this.unbindRouterLinks?.();\n }\n\n /**\n * Extracts and returns the concatenated text content from all text nodes within the specified element.\n * @param {HTMLElement} element The HTML element from which to extract text content.\n * @returns {string} The concatenated and trimmed text content from the element's text nodes.\n */\n getTextFromElement(element) {\n let text = '';\n for (let node of element.childNodes) {\n if (node.nodeType === Node.TEXT_NODE) {\n text += node.textContent;\n }\n }\n return text.trim();\n }\n}\n","import MenuItem from './menu-item.element.js';\n\nexport default MenuItem;\n\nMenuItem.define('wje-menu-item', MenuItem);\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
3
|
+
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
4
|
+
import WJElement, { WjElementUtils } from "./wje-element.js";
|
|
5
|
+
const styles = "/*\n[ Menu Label ]\n*/\n\n:host {\n --wje-letter-spacing: 0.025rem;\n --wje-menu-label-color: var(--wje-color-contrast-6);\n --wje-padding-top: 0;\n --wje-padding-bottom: 0;\n --wje-padding-start: 1.5rem;\n --wje-padding-end: 1.5rem;\n}\n\n.native-menu-label {\n font-size: var(--wje-menu-label-font-size);\n display: inline-block;\n font-weight: var(--wje-menu-label-weight);\n letter-spacing: var(--wje-letter-spacing);\n color: var(--wje-menu-label-color);\n padding: var(--wje-padding-top) var(--wje-padding-start) var(--wje-padding-bottom) var(--wje-padding-end);\n}\n";
|
|
6
|
+
class MenuLabel extends WJElement {
|
|
7
|
+
/**
|
|
8
|
+
* Creates an instance of MenuLabel.
|
|
9
|
+
* @class
|
|
10
|
+
*/
|
|
11
|
+
constructor() {
|
|
12
|
+
super();
|
|
13
|
+
__publicField(this, "className", "MenuLabel");
|
|
14
|
+
this.hasSubmenu = WjElementUtils.hasSlot(this, "submenu");
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Returns the CSS styles for the component.
|
|
18
|
+
* @static
|
|
19
|
+
* @returns {CSSStyleSheet}
|
|
20
|
+
*/
|
|
21
|
+
static get cssStyleSheet() {
|
|
22
|
+
return styles;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Returns the list of attributes to observe for changes.
|
|
26
|
+
* @static
|
|
27
|
+
* @returns {Array<string>}
|
|
28
|
+
*/
|
|
29
|
+
static get observedAttributes() {
|
|
30
|
+
return [];
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Sets up the attributes for the component.
|
|
34
|
+
*/
|
|
35
|
+
setupAttributes() {
|
|
36
|
+
this.isShadowRoot = "open";
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Draws the component for the menu label.
|
|
40
|
+
* @returns {DocumentFragment}
|
|
41
|
+
*/
|
|
42
|
+
draw() {
|
|
43
|
+
let fragment = document.createDocumentFragment();
|
|
44
|
+
let slot = document.createElement("slot");
|
|
45
|
+
slot.setAttribute("part", "native");
|
|
46
|
+
slot.classList.add("native-menu-label");
|
|
47
|
+
fragment.appendChild(slot);
|
|
48
|
+
return fragment;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
MenuLabel.define("wje-menu-label", MenuLabel);
|
|
52
|
+
export {
|
|
53
|
+
MenuLabel as default
|
|
54
|
+
};
|
|
55
|
+
//# sourceMappingURL=wje-menu-label.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wje-menu-label.js","sources":["../packages/wje-menu-label/menu-label.element.js","../packages/wje-menu-label/menu-label.js"],"sourcesContent":["import { default as WJElement, WjElementUtils } from '../wje-element/element.js';\nimport styles from './styles/styles.css?inline';\n\n/**\n * `MenuLabel` is a custom web component that represents a menu label.\n * @summary This element represents a menu label.\n * @documentation https://elements.webjet.sk/components/menu-label\n * @status stable\n * @augments {WJElement}\n * @csspart native - The native part of the menu label.\n * @slot - The default slot for the menu label.\n * @cssproperty [--wje-menu-label-font-size=.75rem] - Sets the font size of the menu label. Accepts any valid CSS length unit (e.g., `rem`, `px`, `em`).\n * @cssproperty [--wje-menu-label-weight=600] - Specifies the font weight of the menu label. Accepts values such as `normal`, `bold`, or numeric values (e.g., `400`, `600`).\n * @cssproperty [--wje-letter-spacing=.025rem] - Defines the spacing between letters in the menu label. Accepts any valid CSS length unit. Default value ensures slight spacing for improved readability.\n * @cssproperty [--wje-menu-label-color=var(--wje-color-contrast-6)] - Specifies the text color of the menu label. Accepts any valid CSS color value, including variables and named colors.\n * @cssproperty [--wje-padding-top=0] - Sets the top padding of the menu label. Accepts any valid CSS length value to control spacing above the label.\n * @cssproperty [--wje-padding-bottom=0] - Sets the bottom padding of the menu label. Accepts any valid CSS length value to control spacing below the label.\n * @cssproperty [--wje-padding-start=1.5rem] - Specifies the left padding of the menu label in left-to-right (LTR) layouts. In right-to-left (RTL) layouts, this becomes the right padding. Accepts any valid CSS length value.\n * @cssproperty [--wje-padding-end=1.5rem] - Specifies the right padding of the menu label in left-to-right (LTR) layouts. In right-to-left (RTL) layouts, this becomes the left padding. Accepts any valid CSS length value.\n * @tag wje-menu-label\n */\n\nexport default class MenuLabel extends WJElement {\n /**\n * Creates an instance of MenuLabel.\n * @class\n */\n constructor() {\n super();\n\n this.hasSubmenu = WjElementUtils.hasSlot(this, 'submenu');\n }\n\n className = 'MenuLabel';\n\n /**\n * Returns the CSS styles for the component.\n * @static\n * @returns {CSSStyleSheet}\n */\n static get cssStyleSheet() {\n return styles;\n }\n\n /**\n * Returns the list of attributes to observe for changes.\n * @static\n * @returns {Array<string>}\n */\n static get observedAttributes() {\n return [];\n }\n\n /**\n * Sets up the attributes for the component.\n */\n setupAttributes() {\n this.isShadowRoot = 'open';\n }\n\n /**\n * Draws the component for the menu label.\n * @returns {DocumentFragment}\n */\n draw() {\n let fragment = document.createDocumentFragment();\n\n // SLOT\n let slot = document.createElement('slot');\n slot.setAttribute('part', 'native');\n slot.classList.add('native-menu-label');\n\n fragment.appendChild(slot);\n\n return fragment;\n }\n}\n","import MenuLabel from './menu-label.element.js';\n\nexport default MenuLabel;\n\nMenuLabel.define('wje-menu-label', MenuLabel);\n"],"names":[],"mappings":";;;;;AAsBe,MAAM,kBAAkB,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA,EAK7C,cAAc;AACV,UAAO;AAKX,qCAAY;AAHR,SAAK,aAAa,eAAe,QAAQ,MAAM,SAAS;AAAA,EAChE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASI,WAAW,gBAAgB;AACvB,WAAO;AAAA,EACf;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOI,WAAW,qBAAqB;AAC5B,WAAO,CAAE;AAAA,EACjB;AAAA;AAAA;AAAA;AAAA,EAKI,kBAAkB;AACd,SAAK,eAAe;AAAA,EAC5B;AAAA;AAAA;AAAA;AAAA;AAAA,EAMI,OAAO;AACH,QAAI,WAAW,SAAS,uBAAwB;AAGhD,QAAI,OAAO,SAAS,cAAc,MAAM;AACxC,SAAK,aAAa,QAAQ,QAAQ;AAClC,SAAK,UAAU,IAAI,mBAAmB;AAEtC,aAAS,YAAY,IAAI;AAEzB,WAAO;AAAA,EACf;AACA;ACxEA,UAAU,OAAO,kBAAkB,SAAS;"}
|