wj-elements 0.7.7 → 0.8.0
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/animations.js +28 -51
- package/dist/animations.js.map +1 -1
- package/dist/base-path.js +19 -31
- package/dist/base-path.js.map +1 -1
- package/dist/custom-elements.json +11504 -11499
- package/dist/dark.css +1 -302
- package/dist/date.js +16 -36
- package/dist/date.js.map +1 -1
- package/dist/element-utils.js +20 -81
- package/dist/element-utils.js.map +1 -1
- package/dist/event.js +49 -165
- package/dist/event.js.map +1 -1
- package/dist/form-associated-element-BjeJn7j8.js +101 -0
- package/dist/{form-associated-element-DEQ4y-jn.js.map → form-associated-element-BjeJn7j8.js.map} +1 -1
- package/dist/icon-DmsqtDpL.js +102 -0
- package/dist/{icon-CReYMzAK.js.map → icon-DmsqtDpL.js.map} +1 -1
- package/dist/light.css +1 -731
- package/dist/localize.js +36 -111
- package/dist/localize.js.map +1 -1
- package/dist/packages/wje-accordion-item/accordion-item.element.d.ts +3 -2
- package/dist/permissions.js +14 -41
- package/dist/permissions.js.map +1 -1
- package/dist/popup.element-CbkhthPP.js +806 -0
- package/dist/{popup.element-CwXvVFK7.js.map → popup.element-CbkhthPP.js.map} +1 -1
- package/dist/router-links-CNsJ-elb.js +105 -0
- package/dist/{router-links-wjqCnncc.js.map → router-links-CNsJ-elb.js.map} +1 -1
- package/dist/skeleton.css +1 -197
- package/dist/styles.css +1 -866
- package/dist/universal-service.js +48 -109
- package/dist/universal-service.js.map +1 -1
- package/dist/utils.js +11 -18
- package/dist/utils.js.map +1 -1
- package/dist/web-types.json +760 -760
- package/dist/wje-accordion-item.js +33 -106
- package/dist/wje-accordion-item.js.map +1 -1
- package/dist/wje-accordion.js +19 -84
- package/dist/wje-accordion.js.map +1 -1
- package/dist/wje-animation.js +37 -4258
- package/dist/wje-animation.js.map +1 -1
- package/dist/wje-aside.js +9 -34
- package/dist/wje-aside.js.map +1 -1
- package/dist/wje-avatar.js +36 -126
- package/dist/wje-avatar.js.map +1 -1
- package/dist/wje-badge.js +10 -52
- package/dist/wje-badge.js.map +1 -1
- package/dist/wje-breadcrumb.js +205 -672
- package/dist/wje-breadcrumb.js.map +1 -1
- package/dist/wje-breadcrumbs.js +177 -633
- package/dist/wje-breadcrumbs.js.map +1 -1
- package/dist/wje-button-group.js +48 -153
- package/dist/wje-button-group.js.map +1 -1
- package/dist/wje-button.js +92 -413
- package/dist/wje-button.js.map +1 -1
- package/dist/wje-card-content.js +7 -30
- package/dist/wje-card-content.js.map +1 -1
- package/dist/wje-card-controls.js +7 -30
- package/dist/wje-card-controls.js.map +1 -1
- package/dist/wje-card-header.js +7 -30
- package/dist/wje-card-header.js.map +1 -1
- package/dist/wje-card-subtitle.js +7 -34
- package/dist/wje-card-subtitle.js.map +1 -1
- package/dist/wje-card-title.js +7 -34
- package/dist/wje-card-title.js.map +1 -1
- package/dist/wje-card.js +15 -71
- package/dist/wje-card.js.map +1 -1
- package/dist/wje-carousel-item.js +12 -56
- package/dist/wje-carousel-item.js.map +1 -1
- package/dist/wje-carousel.js +154 -509
- package/dist/wje-carousel.js.map +1 -1
- package/dist/wje-checkbox.js +50 -227
- package/dist/wje-checkbox.js.map +1 -1
- package/dist/wje-chip.js +43 -160
- package/dist/wje-chip.js.map +1 -1
- package/dist/wje-col.js +7 -20
- package/dist/wje-col.js.map +1 -1
- package/dist/wje-color-picker.js +445 -1464
- package/dist/wje-color-picker.js.map +1 -1
- package/dist/wje-container.js +9 -35
- package/dist/wje-container.js.map +1 -1
- package/dist/wje-copy-button.js +64 -204
- package/dist/wje-copy-button.js.map +1 -1
- package/dist/wje-dialog.js +85 -553
- package/dist/wje-dialog.js.map +1 -1
- package/dist/wje-divider.js +7 -34
- package/dist/wje-divider.js.map +1 -1
- package/dist/wje-dropdown.js +78 -305
- package/dist/wje-dropdown.js.map +1 -1
- package/dist/wje-element.js +191 -700
- package/dist/wje-element.js.map +1 -1
- package/dist/wje-file-upload-item.js +51 -156
- package/dist/wje-file-upload-item.js.map +1 -1
- package/dist/wje-file-upload.js +181 -619
- package/dist/wje-file-upload.js.map +1 -1
- package/dist/wje-footer.js +7 -31
- package/dist/wje-footer.js.map +1 -1
- package/dist/wje-form.js +7 -32
- package/dist/wje-form.js.map +1 -1
- package/dist/wje-format-digital.js +26 -118
- package/dist/wje-format-digital.js.map +1 -1
- package/dist/wje-grid.js +7 -33
- package/dist/wje-grid.js.map +1 -1
- package/dist/wje-header.js +9 -35
- package/dist/wje-header.js.map +1 -1
- package/dist/wje-icon-library.js +12 -18
- package/dist/wje-icon-library.js.map +1 -1
- package/dist/wje-icon-picker.js +65 -320
- package/dist/wje-icon-picker.js.map +1 -1
- package/dist/wje-icon.js +1 -1
- package/dist/wje-img-comparer.js +37 -114
- package/dist/wje-img-comparer.js.map +1 -1
- package/dist/wje-img.js +50 -198
- package/dist/wje-img.js.map +1 -1
- package/dist/wje-infinite-scroll.js +94 -346
- package/dist/wje-infinite-scroll.js.map +1 -1
- package/dist/wje-input-file.js +23 -84
- package/dist/wje-input-file.js.map +1 -1
- package/dist/wje-input.js +78 -392
- package/dist/wje-input.js.map +1 -1
- package/dist/wje-item.js +11 -64
- package/dist/wje-item.js.map +1 -1
- package/dist/wje-kanban.js +124 -401
- package/dist/wje-kanban.js.map +1 -1
- package/dist/wje-label.js +9 -32
- package/dist/wje-label.js.map +1 -1
- package/dist/wje-level-indicator.js +38 -157
- package/dist/wje-level-indicator.js.map +1 -1
- package/dist/wje-list.js +10 -40
- package/dist/wje-list.js.map +1 -1
- package/dist/wje-main.js +7 -31
- package/dist/wje-main.js.map +1 -1
- package/dist/wje-masonry.js +66 -211
- package/dist/wje-masonry.js.map +1 -1
- package/dist/wje-master.js +45 -161
- package/dist/wje-master.js.map +1 -1
- package/dist/wje-menu-button.js +10 -38
- package/dist/wje-menu-button.js.map +1 -1
- package/dist/wje-menu-item.js +127 -577
- package/dist/wje-menu-item.js.map +1 -1
- package/dist/wje-menu-label.js +9 -35
- package/dist/wje-menu-label.js.map +1 -1
- package/dist/wje-menu.js +14 -49
- package/dist/wje-menu.js.map +1 -1
- package/dist/wje-option.js +48 -279
- package/dist/wje-option.js.map +1 -1
- package/dist/wje-options.js +130 -384
- package/dist/wje-options.js.map +1 -1
- package/dist/wje-orgchart-group.js +16 -52
- package/dist/wje-orgchart-group.js.map +1 -1
- package/dist/wje-orgchart-item.js +24 -93
- package/dist/wje-orgchart-item.js.map +1 -1
- package/dist/wje-orgchart.js +18 -68
- package/dist/wje-orgchart.js.map +1 -1
- package/dist/wje-pagination.js +113 -397
- package/dist/wje-pagination.js.map +1 -1
- package/dist/wje-popup.js +3 -3
- package/dist/wje-popup.js.map +1 -1
- package/dist/wje-progress-bar.js +53 -205
- package/dist/wje-progress-bar.js.map +1 -1
- package/dist/wje-qr-code.js +398 -2980
- package/dist/wje-qr-code.js.map +1 -1
- package/dist/wje-radio-group.js +52 -190
- package/dist/wje-radio-group.js.map +1 -1
- package/dist/wje-radio.js +24 -118
- package/dist/wje-radio.js.map +1 -1
- package/dist/wje-rate.js +62 -266
- package/dist/wje-rate.js.map +1 -1
- package/dist/wje-relative-time.js +24 -99
- package/dist/wje-relative-time.js.map +1 -1
- package/dist/wje-reorder-dropzone.js +9 -31
- package/dist/wje-reorder-dropzone.js.map +1 -1
- package/dist/wje-reorder-handle.js +67 -204
- package/dist/wje-reorder-handle.js.map +1 -1
- package/dist/wje-reorder-item.js +14 -44
- package/dist/wje-reorder-item.js.map +1 -1
- package/dist/wje-reorder.js +61 -246
- package/dist/wje-reorder.js.map +1 -1
- package/dist/wje-route.js +6 -24
- package/dist/wje-route.js.map +1 -1
- package/dist/wje-router-link.js +11 -39
- package/dist/wje-router-link.js.map +1 -1
- package/dist/wje-router-outlet.js +76 -172
- package/dist/wje-router-outlet.js.map +1 -1
- package/dist/wje-routerx.js +537 -1331
- package/dist/wje-routerx.js.map +1 -1
- package/dist/wje-row.js +9 -31
- package/dist/wje-row.js.map +1 -1
- package/dist/wje-select.js +326 -1152
- package/dist/wje-select.js.map +1 -1
- package/dist/wje-slider.js +44 -225
- package/dist/wje-slider.js.map +1 -1
- package/dist/wje-sliding-container.js +295 -1319
- package/dist/wje-sliding-container.js.map +1 -1
- package/dist/wje-split-view.js +35 -121
- package/dist/wje-split-view.js.map +1 -1
- package/dist/wje-status.js +14 -45
- package/dist/wje-status.js.map +1 -1
- package/dist/wje-step.js +9 -32
- package/dist/wje-step.js.map +1 -1
- package/dist/wje-stepper.js +109 -357
- package/dist/wje-stepper.js.map +1 -1
- package/dist/wje-store.js +67 -360
- package/dist/wje-store.js.map +1 -1
- package/dist/wje-tab-group.js +85 -314
- package/dist/wje-tab-group.js.map +1 -1
- package/dist/wje-tab-panel.js +7 -28
- package/dist/wje-tab-panel.js.map +1 -1
- package/dist/wje-tab.js +21 -198
- package/dist/wje-tab.js.map +1 -1
- package/dist/wje-textarea.js +64 -264
- package/dist/wje-textarea.js.map +1 -1
- package/dist/wje-thumbnail.js +10 -51
- package/dist/wje-thumbnail.js.map +1 -1
- package/dist/wje-toast.js +127 -632
- package/dist/wje-toast.js.map +1 -1
- package/dist/wje-toggle.js +52 -177
- package/dist/wje-toggle.js.map +1 -1
- package/dist/wje-toolbar-action.js +128 -456
- package/dist/wje-toolbar-action.js.map +1 -1
- package/dist/wje-toolbar.js +75 -270
- package/dist/wje-toolbar.js.map +1 -1
- package/dist/wje-tooltip.js +50 -161
- package/dist/wje-tooltip.js.map +1 -1
- package/dist/wje-tree-item.js +70 -301
- package/dist/wje-tree-item.js.map +1 -1
- package/dist/wje-tree.js +145 -489
- package/dist/wje-tree.js.map +1 -1
- package/dist/wje-visually-hidden.js +7 -34
- package/dist/wje-visually-hidden.js.map +1 -1
- package/package.json +3 -2
- package/dist/form-associated-element-DEQ4y-jn.js +0 -245
- package/dist/icon-CReYMzAK.js +0 -245
- package/dist/popup.element-CwXvVFK7.js +0 -2133
- package/dist/router-links-wjqCnncc.js +0 -156
package/dist/wje-breadcrumbs.js
CHANGED
|
@@ -1,724 +1,268 @@
|
|
|
1
1
|
var __defProp = Object.defineProperty;
|
|
2
2
|
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
3
3
|
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
4
|
-
import
|
|
5
|
-
const
|
|
6
|
-
const
|
|
7
|
-
const MOBILE_COLLAPSED_VARIANTS = /* @__PURE__ */ new Set(["text", "back", "parent-title", "menu-title", "sheet"]);
|
|
8
|
-
const _Breadcrumbs = class _Breadcrumbs extends WJElement {
|
|
9
|
-
/**
|
|
10
|
-
* Breadcrumbs constructor method.
|
|
11
|
-
* @class
|
|
12
|
-
*/
|
|
4
|
+
import e from "./wje-element.js";
|
|
5
|
+
const t = "data-wje-breadcrumbs-item", i = /* @__PURE__ */ new Set(["text", "back", "parent-title", "menu-title", "sheet"]);
|
|
6
|
+
const _r = class _r extends e {
|
|
13
7
|
constructor() {
|
|
14
8
|
super();
|
|
15
|
-
/**
|
|
16
|
-
* Class name for the Breadcrumbs element.
|
|
17
|
-
* @type {string}
|
|
18
|
-
*/
|
|
19
9
|
__publicField(this, "className", "Breadcrumbs");
|
|
20
|
-
this.last = false;
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
this._hasItemsValue =
|
|
25
|
-
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* Sets data-driven breadcrumb items.
|
|
29
|
-
* @param {Array|string|null|undefined} value Breadcrumb items or a JSON string.
|
|
30
|
-
*/
|
|
31
|
-
set items(value) {
|
|
32
|
-
const records = this.normalizeItems(value);
|
|
33
|
-
this._hasItemsValue = true;
|
|
34
|
-
this._items = records.map((record) => record.item);
|
|
35
|
-
this._itemRecords = records;
|
|
36
|
-
this.syncItems(records);
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* Gets data-driven breadcrumb items.
|
|
40
|
-
* @returns {Array}
|
|
41
|
-
*/
|
|
10
|
+
this.last = false, this._isCollapsedByBreakpoint = null, this._items = [], this._itemRecords = [], this._hasItemsValue = false, this.handleManagedItemClick = (e2) => this.dispatchManagedItemClick(e2);
|
|
11
|
+
}
|
|
12
|
+
set items(e2) {
|
|
13
|
+
const t2 = this.normalizeItems(e2);
|
|
14
|
+
this._hasItemsValue = true, this._items = t2.map((e3) => e3.item), this._itemRecords = t2, this.syncItems(t2);
|
|
15
|
+
}
|
|
42
16
|
get items() {
|
|
43
17
|
return this._items;
|
|
44
18
|
}
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
*/
|
|
49
|
-
set variant(value) {
|
|
50
|
-
this.setAttribute("variant", value);
|
|
51
|
-
}
|
|
52
|
-
/**
|
|
53
|
-
* Get variant attribute for the Breadcrumbs element.
|
|
54
|
-
* @returns {string}
|
|
55
|
-
*/
|
|
19
|
+
set variant(e2) {
|
|
20
|
+
this.setAttribute("variant", e2);
|
|
21
|
+
}
|
|
56
22
|
get variant() {
|
|
57
23
|
return this.getAttribute("variant") || "button";
|
|
58
24
|
}
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
*/
|
|
63
|
-
set collapsedVariant(value) {
|
|
64
|
-
if (value) this.setAttribute("collapsed-variant", value);
|
|
65
|
-
else this.removeAttribute("collapsed-variant");
|
|
66
|
-
}
|
|
67
|
-
/**
|
|
68
|
-
* Get the collapsed indicator variant.
|
|
69
|
-
* @returns {string}
|
|
70
|
-
*/
|
|
25
|
+
set collapsedVariant(e2) {
|
|
26
|
+
e2 ? this.setAttribute("collapsed-variant", e2) : this.removeAttribute("collapsed-variant");
|
|
27
|
+
}
|
|
71
28
|
get collapsedVariant() {
|
|
72
29
|
return this.getAttribute("collapsed-variant") || this.variant;
|
|
73
30
|
}
|
|
74
|
-
/**
|
|
75
|
-
* Gets the collapsed indicator variant as a normalized token.
|
|
76
|
-
* @returns {string}
|
|
77
|
-
*/
|
|
78
31
|
get normalizedCollapsedVariant() {
|
|
79
32
|
return String(this.collapsedVariant || "").trim().toLowerCase();
|
|
80
33
|
}
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
*/
|
|
85
|
-
set breakpoint(value) {
|
|
86
|
-
if (value) this.setAttribute("breakpoint", value);
|
|
87
|
-
else this.removeAttribute("breakpoint");
|
|
88
|
-
}
|
|
89
|
-
/**
|
|
90
|
-
* Gets the collapse breakpoint token or value.
|
|
91
|
-
* @returns {string}
|
|
92
|
-
*/
|
|
34
|
+
set breakpoint(e2) {
|
|
35
|
+
e2 ? this.setAttribute("breakpoint", e2) : this.removeAttribute("breakpoint");
|
|
36
|
+
}
|
|
93
37
|
get breakpoint() {
|
|
94
38
|
return this.getAttribute("breakpoint") || "";
|
|
95
39
|
}
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
*/
|
|
100
|
-
set breakpointCollapse(value) {
|
|
101
|
-
if (value) this.setAttribute("breakpoint-collapse", value);
|
|
102
|
-
else this.removeAttribute("breakpoint-collapse");
|
|
103
|
-
}
|
|
104
|
-
/**
|
|
105
|
-
* Gets the collapse behavior used below the configured breakpoint.
|
|
106
|
-
* @returns {string}
|
|
107
|
-
*/
|
|
40
|
+
set breakpointCollapse(e2) {
|
|
41
|
+
e2 ? this.setAttribute("breakpoint-collapse", e2) : this.removeAttribute("breakpoint-collapse");
|
|
42
|
+
}
|
|
108
43
|
get breakpointCollapse() {
|
|
109
44
|
return (this.getAttribute("breakpoint-collapse") || "items").toLowerCase();
|
|
110
45
|
}
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
*/
|
|
115
|
-
set breakpointCollapseIcon(value) {
|
|
116
|
-
if (value) this.setAttribute("breakpoint-collapse-icon", value);
|
|
117
|
-
else this.removeAttribute("breakpoint-collapse-icon");
|
|
118
|
-
}
|
|
119
|
-
/**
|
|
120
|
-
* Gets the icon used by the default breakpoint menu trigger.
|
|
121
|
-
* @returns {string}
|
|
122
|
-
*/
|
|
46
|
+
set breakpointCollapseIcon(e2) {
|
|
47
|
+
e2 ? this.setAttribute("breakpoint-collapse-icon", e2) : this.removeAttribute("breakpoint-collapse-icon");
|
|
48
|
+
}
|
|
123
49
|
get breakpointCollapseIcon() {
|
|
124
50
|
return this.getAttribute("breakpoint-collapse-icon") || "";
|
|
125
51
|
}
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
*/
|
|
130
|
-
set maxItems(value) {
|
|
131
|
-
this.setAttribute("max-items", value || 0);
|
|
132
|
-
}
|
|
133
|
-
/**
|
|
134
|
-
* Get items before collapse attribute.
|
|
135
|
-
* @returns {number}
|
|
136
|
-
*/
|
|
52
|
+
set maxItems(e2) {
|
|
53
|
+
this.setAttribute("max-items", e2 || 0);
|
|
54
|
+
}
|
|
137
55
|
get maxItems() {
|
|
138
56
|
return +this.getAttribute("max-items");
|
|
139
57
|
}
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
*/
|
|
144
|
-
set itemsBeforeCollapse(value) {
|
|
145
|
-
this.setAttribute("items-before-collapse", value || 1);
|
|
146
|
-
}
|
|
147
|
-
/**
|
|
148
|
-
* Get items before collapse attribute.
|
|
149
|
-
* @returns {number}
|
|
150
|
-
*/
|
|
58
|
+
set itemsBeforeCollapse(e2) {
|
|
59
|
+
this.setAttribute("items-before-collapse", e2 || 1);
|
|
60
|
+
}
|
|
151
61
|
get itemsBeforeCollapse() {
|
|
152
62
|
return +this.getAttribute("items-before-collapse") || 1;
|
|
153
63
|
}
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
*/
|
|
158
|
-
set itemsAfterCollapse(value) {
|
|
159
|
-
this.setAttribute("items-after-collapse", value || 1);
|
|
160
|
-
}
|
|
161
|
-
/**
|
|
162
|
-
* Get items after collapse attribute.
|
|
163
|
-
* @returns {number}
|
|
164
|
-
*/
|
|
64
|
+
set itemsAfterCollapse(e2) {
|
|
65
|
+
this.setAttribute("items-after-collapse", e2 || 1);
|
|
66
|
+
}
|
|
165
67
|
get itemsAfterCollapse() {
|
|
166
|
-
if (this.hasAttribute("items-after-collapse"))
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
return derivedItemsAfterCollapse > 0 ? derivedItemsAfterCollapse : 1;
|
|
171
|
-
}
|
|
172
|
-
/**
|
|
173
|
-
* Get CSS stylesheet for the Breadcrumbs element.
|
|
174
|
-
* @static
|
|
175
|
-
* @returns {object} styles - The CSS styles
|
|
176
|
-
*/
|
|
68
|
+
if (this.hasAttribute("items-after-collapse")) return +this.getAttribute("items-after-collapse") || 1;
|
|
69
|
+
const e2 = this.maxItems - this.itemsBeforeCollapse - 1;
|
|
70
|
+
return e2 > 0 ? e2 : 1;
|
|
71
|
+
}
|
|
177
72
|
static get cssStyleSheet() {
|
|
178
|
-
return
|
|
73
|
+
return ":host{--wje-breadcrumbs-breakpoint-sm: 576px;--wje-breadcrumbs-breakpoint-md: 768px;--wje-breadcrumbs-breakpoint-lg: 992px;--wje-breadcrumbs-breakpoint-xl: 1200px;--wje-breadcrumbs-breakpoint-2xl: 1450px;--wje-breadcrumbs-breakpoint-xxl: 1450px;display:flex;flex-wrap:nowrap;align-items:center;min-width:0;overflow:hidden}";
|
|
179
74
|
}
|
|
180
|
-
/**
|
|
181
|
-
* Get observed attributes for the Breadcrumb element.
|
|
182
|
-
* @static
|
|
183
|
-
* @returns {Array<string>} - The observed attributes array for the Breadcrumb element.
|
|
184
|
-
*/
|
|
185
75
|
static get observedAttributes() {
|
|
186
|
-
return [
|
|
187
|
-
|
|
188
|
-
"breakpoint-collapse",
|
|
189
|
-
"max-items",
|
|
190
|
-
"items-before-collapse",
|
|
191
|
-
"items-after-collapse",
|
|
192
|
-
"collapsed-variant",
|
|
193
|
-
"breakpoint-collapse-icon",
|
|
194
|
-
"variant",
|
|
195
|
-
"aria-label",
|
|
196
|
-
"aria-labelledby"
|
|
197
|
-
];
|
|
198
|
-
}
|
|
199
|
-
/**
|
|
200
|
-
* Setup attributes for the Breadcrumbs element.
|
|
201
|
-
*/
|
|
76
|
+
return ["breakpoint", "breakpoint-collapse", "max-items", "items-before-collapse", "items-after-collapse", "collapsed-variant", "breakpoint-collapse-icon", "variant", "aria-label", "aria-labelledby"];
|
|
77
|
+
}
|
|
202
78
|
setupAttributes() {
|
|
203
|
-
this.isShadowRoot = "open";
|
|
204
|
-
this.syncAria();
|
|
205
|
-
this.upgradeProperty("items");
|
|
206
|
-
if (!this._hasItemsValue && this.hasAttribute("items")) {
|
|
207
|
-
this.items = this.getAttribute("items");
|
|
208
|
-
}
|
|
79
|
+
this.isShadowRoot = "open", this.syncAria(), this.upgradeProperty("items"), !this._hasItemsValue && this.hasAttribute("items") && (this.items = this.getAttribute("items"));
|
|
209
80
|
}
|
|
210
|
-
|
|
211
|
-
* Handles attribute changes that affect light-DOM breadcrumb indicators.
|
|
212
|
-
* @param {string} name Updated attribute.
|
|
213
|
-
* @param {string|null} oldValue Previous value.
|
|
214
|
-
* @param {string|null} newValue Next value.
|
|
215
|
-
*/
|
|
216
|
-
attributeChangedCallback(name, oldValue, newValue) {
|
|
81
|
+
attributeChangedCallback(e2, t2, i2) {
|
|
217
82
|
var _a;
|
|
218
|
-
|
|
219
|
-
(_a = super.attributeChangedCallback) == null ? void 0 : _a.call(this, name, oldValue, newValue);
|
|
220
|
-
if (name === "aria-label" || name === "aria-labelledby") {
|
|
221
|
-
this.syncAria();
|
|
222
|
-
}
|
|
223
|
-
if (name === "collapsed-variant" || name === "variant" || name === "breakpoint-collapse" || name === "breakpoint-collapse-icon") {
|
|
224
|
-
this.updateCollapse();
|
|
225
|
-
this.refreshCollapsedIndicators();
|
|
226
|
-
}
|
|
83
|
+
t2 !== i2 && ((_a = super.attributeChangedCallback) == null ? void 0 : _a.call(this, e2, t2, i2), "aria-label" !== e2 && "aria-labelledby" !== e2 || this.syncAria(), "collapsed-variant" !== e2 && "variant" !== e2 && "breakpoint-collapse" !== e2 && "breakpoint-collapse-icon" !== e2 || (this.updateCollapse(), this.refreshCollapsedIndicators()));
|
|
227
84
|
}
|
|
228
|
-
/**
|
|
229
|
-
* Syncs host navigation semantics while preserving user-provided names.
|
|
230
|
-
*/
|
|
231
85
|
syncAria() {
|
|
232
86
|
this.setAriaState({ role: "navigation" });
|
|
233
|
-
const
|
|
234
|
-
|
|
235
|
-
if (!label && !hasLabelledBy) {
|
|
236
|
-
this.setAriaState({ label: "Breadcrumb" });
|
|
237
|
-
} else if (hasLabelledBy && label === "Breadcrumb") {
|
|
238
|
-
this.removeAttribute("aria-label");
|
|
239
|
-
}
|
|
87
|
+
const e2 = this.getAttribute("aria-label"), t2 = this.hasAttribute("aria-labelledby");
|
|
88
|
+
e2 || t2 ? t2 && "Breadcrumb" === e2 && this.removeAttribute("aria-label") : this.setAriaState({ label: "Breadcrumb" });
|
|
240
89
|
}
|
|
241
|
-
/**
|
|
242
|
-
* Draw method for the Breadcrumbs element.
|
|
243
|
-
* @returns {object} fragment - The document fragment
|
|
244
|
-
*/
|
|
245
90
|
draw() {
|
|
246
|
-
let
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
this.defaultSlot = element;
|
|
250
|
-
return fragment;
|
|
251
|
-
}
|
|
252
|
-
/**
|
|
253
|
-
* Updates the breadcrumb elements after they are drawn on the page.
|
|
254
|
-
* It manages attributes on breadcrumb items and handles the logic for collapsing breadcrumbs
|
|
255
|
-
* if the total exceeds the specified maximum items.
|
|
256
|
-
* @returns {void} This method does not return a value.
|
|
257
|
-
*/
|
|
91
|
+
let e2 = document.createDocumentFragment(), t2 = document.createElement("slot");
|
|
92
|
+
return e2.appendChild(t2), this.defaultSlot = t2, e2;
|
|
93
|
+
}
|
|
258
94
|
afterDraw() {
|
|
259
95
|
var _a;
|
|
260
|
-
this.onSlotChange = () => this.updateCollapse();
|
|
261
|
-
(_a = this.defaultSlot) == null ? void 0 : _a.addEventListener("slotchange", this.onSlotChange);
|
|
262
|
-
this.addEventListener("click", this.handleManagedItemClick);
|
|
263
|
-
this.handleResize = () => this.handleBreakpointResize();
|
|
264
|
-
if (this.getBreakpointWidth()) {
|
|
265
|
-
window.addEventListener("resize", this.handleResize);
|
|
266
|
-
}
|
|
267
|
-
if (this._itemRecords.length > 0 && this.getManagedBreadcrumbs().length === 0) {
|
|
268
|
-
this.syncItems(this._itemRecords);
|
|
269
|
-
}
|
|
270
|
-
this.updateCollapse();
|
|
96
|
+
this.onSlotChange = () => this.updateCollapse(), (_a = this.defaultSlot) == null ? void 0 : _a.addEventListener("slotchange", this.onSlotChange), this.addEventListener("click", this.handleManagedItemClick), this.handleResize = () => this.handleBreakpointResize(), this.getBreakpointWidth() && window.addEventListener("resize", this.handleResize), this._itemRecords.length > 0 && 0 === this.getManagedBreadcrumbs().length && this.syncItems(this._itemRecords), this.updateCollapse();
|
|
271
97
|
}
|
|
272
|
-
/**
|
|
273
|
-
* Removes listeners after disconnect.
|
|
274
|
-
*/
|
|
275
98
|
afterDisconnect() {
|
|
276
99
|
var _a;
|
|
277
|
-
(_a = this.defaultSlot) == null ? void 0 : _a.removeEventListener("slotchange", this.onSlotChange);
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
this
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
this[property] = value;
|
|
291
|
-
}
|
|
292
|
-
/**
|
|
293
|
-
* Normalizes incoming item data for keyed DOM diffing.
|
|
294
|
-
* @param {Array|string|null|undefined} value Breadcrumb item data.
|
|
295
|
-
* @returns {Array<object>}
|
|
296
|
-
*/
|
|
297
|
-
normalizeItems(value) {
|
|
298
|
-
let items = value;
|
|
299
|
-
if (typeof items === "string") {
|
|
300
|
-
try {
|
|
301
|
-
items = JSON.parse(items);
|
|
302
|
-
} catch (e) {
|
|
303
|
-
console.warn("Invalid JSON passed to wje-breadcrumbs.items", e);
|
|
304
|
-
items = [];
|
|
305
|
-
}
|
|
306
|
-
}
|
|
307
|
-
if (items === null || items === void 0) return [];
|
|
308
|
-
if (!Array.isArray(items)) {
|
|
309
|
-
console.warn("wje-breadcrumbs.items expects an array.");
|
|
310
|
-
return [];
|
|
100
|
+
(_a = this.defaultSlot) == null ? void 0 : _a.removeEventListener("slotchange", this.onSlotChange), this.removeEventListener("click", this.handleManagedItemClick), window.removeEventListener("resize", this.handleResize), this._isCollapsedByBreakpoint = null;
|
|
101
|
+
}
|
|
102
|
+
upgradeProperty(e2) {
|
|
103
|
+
if (!Object.prototype.hasOwnProperty.call(this, e2)) return;
|
|
104
|
+
const t2 = this[e2];
|
|
105
|
+
delete this[e2], this[e2] = t2;
|
|
106
|
+
}
|
|
107
|
+
normalizeItems(e2) {
|
|
108
|
+
let t2 = e2;
|
|
109
|
+
if ("string" == typeof t2) try {
|
|
110
|
+
t2 = JSON.parse(t2);
|
|
111
|
+
} catch (e3) {
|
|
112
|
+
console.warn("Invalid JSON passed to wje-breadcrumbs.items", e3), t2 = [];
|
|
311
113
|
}
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
label: source.label === null || source.label === void 0 ? "" : String(source.label),
|
|
333
|
-
href: source.href === null || source.href === void 0 ? null : String(source.href),
|
|
334
|
-
icon: source.icon === null || source.icon === void 0 || source.icon === "" ? null : String(source.icon),
|
|
335
|
-
title: source.title === null || source.title === void 0 ? null : String(source.title),
|
|
336
|
-
disabled: source.disabled === true || source.disabled === "" || source.disabled === "true" || source.disabled === 1 || source.disabled === "1"
|
|
337
|
-
};
|
|
338
|
-
}
|
|
339
|
-
/**
|
|
340
|
-
* Resolves a stable key for an item.
|
|
341
|
-
* @param {object} item Normalized source object used to resolve the key.
|
|
342
|
-
* @param {number} index Fallback position used when the item has no id.
|
|
343
|
-
* @param {Set<string>} usedKeys Keys that have already been assigned during this update.
|
|
344
|
-
* @returns {string}
|
|
345
|
-
*/
|
|
346
|
-
getItemKey(item, index, usedKeys) {
|
|
347
|
-
const baseKey = item.id === null || item.id === void 0 ? String(index) : String(item.id);
|
|
348
|
-
let key = baseKey;
|
|
349
|
-
let suffix = 1;
|
|
350
|
-
while (usedKeys.has(key)) {
|
|
351
|
-
key = `${baseKey}:${suffix}`;
|
|
352
|
-
suffix += 1;
|
|
353
|
-
}
|
|
354
|
-
usedKeys.add(key);
|
|
355
|
-
return key;
|
|
356
|
-
}
|
|
357
|
-
/**
|
|
358
|
-
* Incrementally synchronizes data-driven items into light DOM breadcrumbs.
|
|
359
|
-
* @param {Array<object>} records Normalized records for the next breadcrumb trail.
|
|
360
|
-
*/
|
|
361
|
-
syncItems(records) {
|
|
362
|
-
const managed = this.getManagedBreadcrumbs();
|
|
363
|
-
const managedByKey = new Map(managed.map((breadcrumb) => [breadcrumb.__wjeBreadcrumbKey || breadcrumb.getAttribute(MANAGED_ITEM_ATTRIBUTE), breadcrumb]));
|
|
364
|
-
const nextKeys = new Set(records.map((record) => record.key));
|
|
365
|
-
managed.forEach((breadcrumb) => {
|
|
366
|
-
const key = breadcrumb.__wjeBreadcrumbKey || breadcrumb.getAttribute(MANAGED_ITEM_ATTRIBUTE);
|
|
367
|
-
if (!nextKeys.has(key)) {
|
|
368
|
-
breadcrumb.remove();
|
|
369
|
-
}
|
|
370
|
-
});
|
|
371
|
-
let referenceNode = this.firstChild;
|
|
372
|
-
records.forEach((record, index) => {
|
|
373
|
-
let breadcrumb = managedByKey.get(record.key);
|
|
374
|
-
const signature = this.getItemStructureSignature(record);
|
|
375
|
-
if (breadcrumb && breadcrumb.__wjeBreadcrumbSignature !== signature) {
|
|
376
|
-
const previousBreadcrumb = breadcrumb;
|
|
377
|
-
const replacement = this.createItemElement(record, index);
|
|
378
|
-
breadcrumb.replaceWith(replacement);
|
|
379
|
-
breadcrumb = replacement;
|
|
380
|
-
if (referenceNode === previousBreadcrumb) referenceNode = breadcrumb;
|
|
381
|
-
} else if (!breadcrumb) {
|
|
382
|
-
breadcrumb = this.createItemElement(record, index);
|
|
383
|
-
} else {
|
|
384
|
-
this.updateItemElement(breadcrumb, record, index);
|
|
385
|
-
}
|
|
386
|
-
if (breadcrumb !== referenceNode) {
|
|
387
|
-
this.insertBefore(breadcrumb, referenceNode);
|
|
388
|
-
}
|
|
389
|
-
referenceNode = breadcrumb.nextSibling;
|
|
114
|
+
if (null == t2) return [];
|
|
115
|
+
if (!Array.isArray(t2)) return console.warn("wje-breadcrumbs.items expects an array."), [];
|
|
116
|
+
const i2 = /* @__PURE__ */ new Set();
|
|
117
|
+
return t2.map((e3, t3) => this.normalizeItem(e3, t3, i2));
|
|
118
|
+
}
|
|
119
|
+
normalizeItem(e2, t2, i2) {
|
|
120
|
+
const r2 = null !== e2 && "object" == typeof e2 ? e2 : { id: t2, label: null == e2 ? "" : String(e2) };
|
|
121
|
+
return { item: r2, key: this.getItemKey(r2, t2, i2), index: t2, label: null === r2.label || void 0 === r2.label ? "" : String(r2.label), href: null === r2.href || void 0 === r2.href ? null : String(r2.href), icon: null === r2.icon || void 0 === r2.icon || "" === r2.icon ? null : String(r2.icon), title: null === r2.title || void 0 === r2.title ? null : String(r2.title), disabled: true === r2.disabled || "" === r2.disabled || "true" === r2.disabled || 1 === r2.disabled || "1" === r2.disabled };
|
|
122
|
+
}
|
|
123
|
+
getItemKey(e2, t2, i2) {
|
|
124
|
+
const r2 = null === e2.id || void 0 === e2.id ? String(t2) : String(e2.id);
|
|
125
|
+
let s = r2, a = 1;
|
|
126
|
+
for (; i2.has(s); ) s = `${r2}:${a}`, a += 1;
|
|
127
|
+
return i2.add(s), s;
|
|
128
|
+
}
|
|
129
|
+
syncItems(e2) {
|
|
130
|
+
const i2 = this.getManagedBreadcrumbs(), r2 = new Map(i2.map((e3) => [e3.__wjeBreadcrumbKey || e3.getAttribute(t), e3])), s = new Set(e2.map((e3) => e3.key));
|
|
131
|
+
i2.forEach((e3) => {
|
|
132
|
+
const i3 = e3.__wjeBreadcrumbKey || e3.getAttribute(t);
|
|
133
|
+
s.has(i3) || e3.remove();
|
|
390
134
|
});
|
|
391
|
-
this.
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
* @param {HTMLElement} element Element receiving the synchronized attribute.
|
|
428
|
-
* @param {string} name Attribute to add, update, or remove.
|
|
429
|
-
* @param {string|null|undefined} value Next serialized value for the attribute.
|
|
430
|
-
*/
|
|
431
|
-
syncItemAttribute(element, name, value) {
|
|
432
|
-
if (value === null || value === void 0 || value === false) {
|
|
433
|
-
if (element.hasAttribute(name)) element.removeAttribute(name);
|
|
434
|
-
return;
|
|
435
|
-
}
|
|
436
|
-
const normalizedValue = String(value);
|
|
437
|
-
if (element.getAttribute(name) !== normalizedValue) {
|
|
438
|
-
element.setAttribute(name, normalizedValue);
|
|
439
|
-
}
|
|
440
|
-
}
|
|
441
|
-
/**
|
|
442
|
-
* Synchronizes a boolean attribute.
|
|
443
|
-
* @param {HTMLElement} element Element receiving the boolean attribute.
|
|
444
|
-
* @param {string} name Boolean attribute to toggle.
|
|
445
|
-
* @param {boolean} isEnabled Whether the attribute should be present.
|
|
446
|
-
*/
|
|
447
|
-
syncBooleanItemAttribute(element, name, isEnabled) {
|
|
448
|
-
if (isEnabled && !element.hasAttribute(name)) {
|
|
449
|
-
element.setAttribute(name, "");
|
|
450
|
-
}
|
|
451
|
-
if (!isEnabled && element.hasAttribute(name)) {
|
|
452
|
-
element.removeAttribute(name);
|
|
453
|
-
}
|
|
454
|
-
}
|
|
455
|
-
/**
|
|
456
|
-
* Synchronizes slotted icon and text nodes for a managed breadcrumb.
|
|
457
|
-
* @param {HTMLElement} breadcrumb Breadcrumb element.
|
|
458
|
-
* @param {object} record Normalized item record.
|
|
459
|
-
*/
|
|
460
|
-
syncItemContent(breadcrumb, record) {
|
|
461
|
-
let icon = breadcrumb.__wjeBreadcrumbIcon;
|
|
462
|
-
if (record.icon) {
|
|
463
|
-
if (!icon || icon.parentElement !== breadcrumb) {
|
|
464
|
-
icon = document.createElement("wje-icon");
|
|
465
|
-
icon.setAttribute("slot", "start");
|
|
466
|
-
breadcrumb.insertBefore(icon, breadcrumb.firstChild);
|
|
467
|
-
breadcrumb.__wjeBreadcrumbIcon = icon;
|
|
468
|
-
}
|
|
469
|
-
if (icon.getAttribute("name") !== record.icon) {
|
|
470
|
-
icon.setAttribute("name", record.icon);
|
|
471
|
-
}
|
|
472
|
-
} else if (icon) {
|
|
473
|
-
icon.remove();
|
|
474
|
-
breadcrumb.__wjeBreadcrumbIcon = null;
|
|
475
|
-
}
|
|
476
|
-
let labelNode = breadcrumb.__wjeBreadcrumbLabelNode;
|
|
477
|
-
if (!labelNode || labelNode.parentNode !== breadcrumb) {
|
|
478
|
-
labelNode = document.createTextNode("");
|
|
479
|
-
breadcrumb.appendChild(labelNode);
|
|
480
|
-
breadcrumb.__wjeBreadcrumbLabelNode = labelNode;
|
|
481
|
-
}
|
|
482
|
-
if (labelNode.textContent !== record.label) {
|
|
483
|
-
labelNode.textContent = record.label;
|
|
484
|
-
}
|
|
485
|
-
}
|
|
486
|
-
/**
|
|
487
|
-
* Returns a small signature for structural changes that need item replacement.
|
|
488
|
-
* @param {object} record Normalized item record.
|
|
489
|
-
* @returns {string}
|
|
490
|
-
*/
|
|
491
|
-
getItemStructureSignature(record) {
|
|
492
|
-
return `icon:${record.icon ? "1" : "0"}`;
|
|
493
|
-
}
|
|
494
|
-
/**
|
|
495
|
-
* Dispatches the data-driven item click event.
|
|
496
|
-
* @param {MouseEvent} e Original click event.
|
|
497
|
-
*/
|
|
498
|
-
dispatchManagedItemClick(e) {
|
|
135
|
+
let a = this.firstChild;
|
|
136
|
+
e2.forEach((e3, t2) => {
|
|
137
|
+
let i3 = r2.get(e3.key);
|
|
138
|
+
const s2 = this.getItemStructureSignature(e3);
|
|
139
|
+
if (i3 && i3.__wjeBreadcrumbSignature !== s2) {
|
|
140
|
+
const r3 = i3, s3 = this.createItemElement(e3, t2);
|
|
141
|
+
i3.replaceWith(s3), i3 = s3, a === r3 && (a = i3);
|
|
142
|
+
} else i3 ? this.updateItemElement(i3, e3, t2) : i3 = this.createItemElement(e3, t2);
|
|
143
|
+
i3 !== a && this.insertBefore(i3, a), a = i3.nextSibling;
|
|
144
|
+
}), this.updateCollapse();
|
|
145
|
+
}
|
|
146
|
+
createItemElement(e2, t2) {
|
|
147
|
+
const i2 = document.createElement("wje-breadcrumb");
|
|
148
|
+
return this.updateItemElement(i2, e2, t2), i2;
|
|
149
|
+
}
|
|
150
|
+
updateItemElement(e2, i2, r2) {
|
|
151
|
+
e2.__wjeBreadcrumbManaged = true, e2.__wjeBreadcrumbItem = i2.item, e2.__wjeBreadcrumbIndex = r2, e2.__wjeBreadcrumbKey = i2.key, e2.__wjeBreadcrumbSignature = this.getItemStructureSignature(i2), e2.getAttribute(t) !== i2.key && e2.setAttribute(t, i2.key), this.syncItemAttribute(e2, "href", i2.href), this.syncItemAttribute(e2, "title", i2.title), this.syncItemAttribute(e2, "aria-label", i2.label || null), this.syncBooleanItemAttribute(e2, "disabled", i2.disabled), this.syncItemContent(e2, i2);
|
|
152
|
+
}
|
|
153
|
+
syncItemAttribute(e2, t2, i2) {
|
|
154
|
+
if (null == i2 || false === i2) return void (e2.hasAttribute(t2) && e2.removeAttribute(t2));
|
|
155
|
+
const r2 = String(i2);
|
|
156
|
+
e2.getAttribute(t2) !== r2 && e2.setAttribute(t2, r2);
|
|
157
|
+
}
|
|
158
|
+
syncBooleanItemAttribute(e2, t2, i2) {
|
|
159
|
+
i2 && !e2.hasAttribute(t2) && e2.setAttribute(t2, ""), !i2 && e2.hasAttribute(t2) && e2.removeAttribute(t2);
|
|
160
|
+
}
|
|
161
|
+
syncItemContent(e2, t2) {
|
|
162
|
+
let i2 = e2.__wjeBreadcrumbIcon;
|
|
163
|
+
t2.icon ? (i2 && i2.parentElement === e2 || (i2 = document.createElement("wje-icon"), i2.setAttribute("slot", "start"), e2.insertBefore(i2, e2.firstChild), e2.__wjeBreadcrumbIcon = i2), i2.getAttribute("name") !== t2.icon && i2.setAttribute("name", t2.icon)) : i2 && (i2.remove(), e2.__wjeBreadcrumbIcon = null);
|
|
164
|
+
let r2 = e2.__wjeBreadcrumbLabelNode;
|
|
165
|
+
r2 && r2.parentNode === e2 || (r2 = document.createTextNode(""), e2.appendChild(r2), e2.__wjeBreadcrumbLabelNode = r2), r2.textContent !== t2.label && (r2.textContent = t2.label);
|
|
166
|
+
}
|
|
167
|
+
getItemStructureSignature(e2) {
|
|
168
|
+
return "icon:" + (e2.icon ? "1" : "0");
|
|
169
|
+
}
|
|
170
|
+
dispatchManagedItemClick(e2) {
|
|
499
171
|
var _a;
|
|
500
|
-
const
|
|
501
|
-
if (!
|
|
502
|
-
const
|
|
503
|
-
if ((
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
const itemClickEvent = new CustomEvent("wje-breadcrumbs:item-click", {
|
|
510
|
-
detail: {
|
|
511
|
-
item,
|
|
512
|
-
index: breadcrumb.__wjeBreadcrumbIndex,
|
|
513
|
-
originalEvent: e
|
|
514
|
-
},
|
|
515
|
-
bubbles: true,
|
|
516
|
-
composed: true,
|
|
517
|
-
cancelable: true
|
|
518
|
-
});
|
|
519
|
-
const shouldContinue = this.dispatchEvent(itemClickEvent);
|
|
520
|
-
if (!shouldContinue) {
|
|
521
|
-
e.preventDefault();
|
|
522
|
-
}
|
|
523
|
-
}
|
|
524
|
-
/**
|
|
525
|
-
* Finds the managed breadcrumb that originated an event.
|
|
526
|
-
* @param {Event} e Event whose composed path should be inspected.
|
|
527
|
-
* @returns {HTMLElement|null}
|
|
528
|
-
*/
|
|
529
|
-
getManagedBreadcrumbFromEvent(e) {
|
|
530
|
-
const path = typeof e.composedPath === "function" ? e.composedPath() : [];
|
|
531
|
-
return path.find((node) => {
|
|
172
|
+
const t2 = this.getManagedBreadcrumbFromEvent(e2);
|
|
173
|
+
if (!t2) return;
|
|
174
|
+
const i2 = t2.__wjeBreadcrumbItem;
|
|
175
|
+
if ((i2 == null ? void 0 : i2.disabled) || t2.hasAttribute("disabled")) return e2.preventDefault(), e2.stopPropagation(), void ((_a = e2.stopImmediatePropagation) == null ? void 0 : _a.call(e2));
|
|
176
|
+
const r2 = new CustomEvent("wje-breadcrumbs:item-click", { detail: { item: i2, index: t2.__wjeBreadcrumbIndex, originalEvent: e2 }, bubbles: true, composed: true, cancelable: true });
|
|
177
|
+
this.dispatchEvent(r2) || e2.preventDefault();
|
|
178
|
+
}
|
|
179
|
+
getManagedBreadcrumbFromEvent(e2) {
|
|
180
|
+
return ("function" == typeof e2.composedPath ? e2.composedPath() : []).find((e3) => {
|
|
532
181
|
var _a;
|
|
533
|
-
return (
|
|
182
|
+
return (e3 == null ? void 0 : e3.nodeType) === Node.ELEMENT_NODE && "wje-breadcrumb" === ((_a = e3.tagName) == null ? void 0 : _a.toLowerCase()) && e3.parentElement === this && e3.hasAttribute(t);
|
|
534
183
|
}) || null;
|
|
535
184
|
}
|
|
536
|
-
/**
|
|
537
|
-
* Reacts to viewport resize only when the breakpoint mode actually changes.
|
|
538
|
-
* @returns {void}
|
|
539
|
-
*/
|
|
540
185
|
handleBreakpointResize() {
|
|
541
186
|
if (!this.getBreakpointWidth()) return;
|
|
542
|
-
const
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
}
|
|
546
|
-
/**
|
|
547
|
-
* Recalculates breadcrumb collapse state.
|
|
548
|
-
* @returns {void}
|
|
549
|
-
*/
|
|
187
|
+
const e2 = this.shouldApplyBreakpointCollapse();
|
|
188
|
+
this._isCollapsedByBreakpoint !== e2 && this.updateCollapse();
|
|
189
|
+
}
|
|
550
190
|
updateCollapse() {
|
|
551
|
-
let
|
|
552
|
-
if (
|
|
191
|
+
let e2 = this.getBreadcrumbs();
|
|
192
|
+
if (0 === e2.length) return;
|
|
553
193
|
this._isCollapsedByBreakpoint = this.shouldApplyBreakpointCollapse();
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
const
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
this.syncManagedAttribute(breadcrumb, "show-collapsed-indicator", index === indicatorIndex);
|
|
569
|
-
this.syncManagedAttribute(breadcrumb, "mobile-collapsed-indicator", false);
|
|
570
|
-
const isCollapsed = shouldCollapse && index >= collapseStart && index < collapseEnd;
|
|
571
|
-
this.syncManagedAttribute(breadcrumb, "collapsed", isCollapsed);
|
|
572
|
-
if (!isCollapsed && breadcrumb.classList.contains("collapsed")) {
|
|
573
|
-
breadcrumb.classList.remove("collapsed");
|
|
574
|
-
}
|
|
575
|
-
});
|
|
576
|
-
this.refreshCollapsedIndicators();
|
|
577
|
-
}
|
|
578
|
-
/**
|
|
579
|
-
* Collapses the whole breadcrumb trail into a single menu indicator.
|
|
580
|
-
* @param {Array<Element>} breadcrumbs Breadcrumb items.
|
|
581
|
-
*/
|
|
582
|
-
applyMenuCollapse(breadcrumbs) {
|
|
583
|
-
const lastIndex = breadcrumbs.length - 1;
|
|
584
|
-
const usesMobileVariant = this.usesMobileCollapsedVariant();
|
|
585
|
-
breadcrumbs.forEach((breadcrumb, index) => {
|
|
586
|
-
const isIndicator = index === 0;
|
|
587
|
-
this.syncManagedAttribute(breadcrumb, "last", index === lastIndex);
|
|
588
|
-
this.syncManagedAttribute(breadcrumb, "show-collapsed-indicator", isIndicator);
|
|
589
|
-
this.syncManagedAttribute(breadcrumb, "collapsed", true);
|
|
590
|
-
this.syncManagedAttribute(breadcrumb, "mobile-collapsed-indicator", isIndicator && usesMobileVariant);
|
|
591
|
-
if (isIndicator) {
|
|
592
|
-
breadcrumb.classList.remove("collapsed");
|
|
593
|
-
}
|
|
594
|
-
});
|
|
595
|
-
this.refreshCollapsedIndicators();
|
|
194
|
+
if (this.isBreakpointMenuCollapseActive() && (e2.length > 1 || this.usesMobileCollapsedVariant())) return void this.applyMenuCollapse(e2);
|
|
195
|
+
const t2 = this.itemsAfterCollapse, i2 = ("menu" === this.breakpointCollapse || this._isCollapsedByBreakpoint) && this.maxItems > 0 && e2.length > this.maxItems && this.itemsBeforeCollapse + t2 + 1 <= this.maxItems, r2 = e2.length - 1, s = i2 ? this.itemsBeforeCollapse : -1, a = this.itemsBeforeCollapse, l = e2.length - t2;
|
|
196
|
+
e2.forEach((e3, t3) => {
|
|
197
|
+
this.syncManagedAttribute(e3, "last", t3 === r2), this.syncManagedAttribute(e3, "show-collapsed-indicator", t3 === s), this.syncManagedAttribute(e3, "mobile-collapsed-indicator", false);
|
|
198
|
+
const n = i2 && t3 >= a && t3 < l;
|
|
199
|
+
this.syncManagedAttribute(e3, "collapsed", n), !n && e3.classList.contains("collapsed") && e3.classList.remove("collapsed");
|
|
200
|
+
}), this.refreshCollapsedIndicators();
|
|
201
|
+
}
|
|
202
|
+
applyMenuCollapse(e2) {
|
|
203
|
+
const t2 = e2.length - 1, i2 = this.usesMobileCollapsedVariant();
|
|
204
|
+
e2.forEach((e3, r2) => {
|
|
205
|
+
const s = 0 === r2;
|
|
206
|
+
this.syncManagedAttribute(e3, "last", r2 === t2), this.syncManagedAttribute(e3, "show-collapsed-indicator", s), this.syncManagedAttribute(e3, "collapsed", true), this.syncManagedAttribute(e3, "mobile-collapsed-indicator", s && i2), s && e3.classList.remove("collapsed");
|
|
207
|
+
}), this.refreshCollapsedIndicators();
|
|
596
208
|
}
|
|
597
|
-
/**
|
|
598
|
-
* Returns whether the active breakpoint mode should move the full trail into one menu.
|
|
599
|
-
* @returns {boolean}
|
|
600
|
-
*/
|
|
601
209
|
isBreakpointMenuCollapseActive() {
|
|
602
|
-
return Boolean(
|
|
603
|
-
|
|
604
|
-
);
|
|
605
|
-
}
|
|
606
|
-
/**
|
|
607
|
-
* Returns whether the active collapsed variant is one of the mobile compact layouts.
|
|
608
|
-
* @returns {boolean}
|
|
609
|
-
*/
|
|
210
|
+
return Boolean(this.getBreakpointWidth() && this._isCollapsedByBreakpoint && "menu" === this.breakpointCollapse);
|
|
211
|
+
}
|
|
610
212
|
usesMobileCollapsedVariant() {
|
|
611
|
-
return
|
|
612
|
-
}
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
*/
|
|
617
|
-
resetCollapseState(breadcrumbs = this.getBreadcrumbs()) {
|
|
618
|
-
breadcrumbs.forEach((breadcrumb) => {
|
|
619
|
-
breadcrumb.removeAttribute("collapsed");
|
|
620
|
-
breadcrumb.removeAttribute("show-collapsed-indicator");
|
|
621
|
-
breadcrumb.removeAttribute("mobile-collapsed-indicator");
|
|
622
|
-
breadcrumb.removeAttribute("last");
|
|
623
|
-
breadcrumb.classList.remove("collapsed");
|
|
213
|
+
return i.has(this.normalizedCollapsedVariant);
|
|
214
|
+
}
|
|
215
|
+
resetCollapseState(e2 = this.getBreadcrumbs()) {
|
|
216
|
+
e2.forEach((e3) => {
|
|
217
|
+
e3.removeAttribute("collapsed"), e3.removeAttribute("show-collapsed-indicator"), e3.removeAttribute("mobile-collapsed-indicator"), e3.removeAttribute("last"), e3.classList.remove("collapsed");
|
|
624
218
|
});
|
|
625
219
|
}
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
* @param {boolean} isEnabled Whether the attribute should be present.
|
|
631
|
-
*/
|
|
632
|
-
syncManagedAttribute(element, name, isEnabled) {
|
|
633
|
-
if (!element) return;
|
|
634
|
-
const hasAttribute = element.hasAttribute(name);
|
|
635
|
-
if (isEnabled && !hasAttribute) {
|
|
636
|
-
element.setAttribute(name, true);
|
|
637
|
-
}
|
|
638
|
-
if (!isEnabled && hasAttribute) {
|
|
639
|
-
element.removeAttribute(name);
|
|
640
|
-
}
|
|
220
|
+
syncManagedAttribute(e2, t2, i2) {
|
|
221
|
+
if (!e2) return;
|
|
222
|
+
const r2 = e2.hasAttribute(t2);
|
|
223
|
+
i2 && !r2 && e2.setAttribute(t2, true), !i2 && r2 && e2.removeAttribute(t2);
|
|
641
224
|
}
|
|
642
|
-
/**
|
|
643
|
-
* Redraws active collapsed indicators when parent-only rendering inputs change.
|
|
644
|
-
*/
|
|
645
225
|
refreshCollapsedIndicators() {
|
|
646
|
-
this.getBreadcrumbs().filter((
|
|
226
|
+
this.getBreadcrumbs().filter((e2) => e2.hasAttribute("show-collapsed-indicator")).forEach((e2) => {
|
|
647
227
|
var _a;
|
|
648
|
-
return (_a =
|
|
228
|
+
return (_a = e2.refresh) == null ? void 0 : _a.call(e2);
|
|
649
229
|
});
|
|
650
230
|
}
|
|
651
|
-
/**
|
|
652
|
-
* Returns whether collapse rules should currently be applied.
|
|
653
|
-
* @returns {boolean}
|
|
654
|
-
*/
|
|
655
231
|
shouldApplyBreakpointCollapse() {
|
|
656
|
-
const
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
}
|
|
660
|
-
/**
|
|
661
|
-
* Resolves the configured breakpoint to a pixel width.
|
|
662
|
-
* @returns {number|null}
|
|
663
|
-
*/
|
|
232
|
+
const e2 = this.getBreakpointWidth();
|
|
233
|
+
return !e2 || window.innerWidth < e2;
|
|
234
|
+
}
|
|
664
235
|
getBreakpointWidth() {
|
|
665
236
|
if (!this.breakpoint) return null;
|
|
666
|
-
const
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
const cssNumber = parseFloat(cssValue);
|
|
671
|
-
if (Number.isFinite(cssNumber)) return cssNumber;
|
|
672
|
-
}
|
|
673
|
-
if (Number.isFinite(namedBreakpoint)) {
|
|
674
|
-
return namedBreakpoint;
|
|
237
|
+
const e2 = this.breakpoint.trim().toLowerCase(), t2 = getComputedStyle(this).getPropertyValue(`--wje-breadcrumbs-breakpoint-${e2}`).trim(), i2 = _r.BREAKPOINTS[e2];
|
|
238
|
+
if (t2) {
|
|
239
|
+
const e3 = parseFloat(t2);
|
|
240
|
+
if (Number.isFinite(e3)) return e3;
|
|
675
241
|
}
|
|
676
|
-
|
|
677
|
-
|
|
242
|
+
if (Number.isFinite(i2)) return i2;
|
|
243
|
+
const s = parseFloat(e2);
|
|
244
|
+
return Number.isFinite(s) ? s : null;
|
|
678
245
|
}
|
|
679
|
-
/**
|
|
680
|
-
* Returns the custom trigger element configured for breakpoint menu collapse.
|
|
681
|
-
* @returns {Element|null}
|
|
682
|
-
*/
|
|
683
246
|
getBreakpointCollapseTrigger() {
|
|
684
|
-
return Array.from(this.children).find((
|
|
247
|
+
return Array.from(this.children).find((e2) => {
|
|
685
248
|
var _a;
|
|
686
|
-
return ((_a =
|
|
249
|
+
return "breakpoint-collapse-trigger" === ((_a = e2.getAttribute) == null ? void 0 : _a.call(e2, "slot"));
|
|
687
250
|
}) || null;
|
|
688
251
|
}
|
|
689
|
-
/**
|
|
690
|
-
* Retrieves all breadcrumb elements within the current instance.
|
|
691
|
-
* @returns {Array<Element>} An array of breadcrumb elements (`wje-breadcrumb`) found within the instance. Returns an empty array if no breadcrumbs are found.
|
|
692
|
-
*/
|
|
693
252
|
getBreadcrumbs() {
|
|
694
253
|
return Array.from(this.querySelectorAll("wje-breadcrumb")) || [];
|
|
695
254
|
}
|
|
696
|
-
/**
|
|
697
|
-
* Retrieves breadcrumbs managed by the items property.
|
|
698
|
-
* @returns {Array<Element>}
|
|
699
|
-
*/
|
|
700
255
|
getManagedBreadcrumbs() {
|
|
701
|
-
return Array.from(this.querySelectorAll(`wje-breadcrumb[${
|
|
256
|
+
return Array.from(this.querySelectorAll(`wje-breadcrumb[${t}]`)) || [];
|
|
702
257
|
}
|
|
703
|
-
/**
|
|
704
|
-
* Retrieves all breadcrumb elements that have the 'collapsed' attribute.
|
|
705
|
-
* @returns {Array<Element>} An array of DOM elements representing breadcrumbs with the 'collapsed' attribute.
|
|
706
|
-
*/
|
|
707
258
|
getBreadcrumbsCollapsed() {
|
|
708
259
|
return Array.from(this.querySelectorAll("wje-breadcrumb[collapsed]")) || [];
|
|
709
260
|
}
|
|
710
261
|
};
|
|
711
|
-
__publicField(
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
lg: 992,
|
|
715
|
-
xl: 1200,
|
|
716
|
-
"2xl": 1450,
|
|
717
|
-
xxl: 1450
|
|
718
|
-
});
|
|
719
|
-
let Breadcrumbs = _Breadcrumbs;
|
|
720
|
-
Breadcrumbs.define("wje-breadcrumbs", Breadcrumbs);
|
|
262
|
+
__publicField(_r, "BREAKPOINTS", { sm: 576, md: 768, lg: 992, xl: 1200, "2xl": 1450, xxl: 1450 });
|
|
263
|
+
let r = _r;
|
|
264
|
+
r.define("wje-breadcrumbs", r);
|
|
721
265
|
export {
|
|
722
|
-
|
|
266
|
+
r as default
|
|
723
267
|
};
|
|
724
268
|
//# sourceMappingURL=wje-breadcrumbs.js.map
|