wj-elements 0.7.6 → 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.
Files changed (234) hide show
  1. package/dist/animations.js +28 -51
  2. package/dist/animations.js.map +1 -1
  3. package/dist/base-path.js +19 -31
  4. package/dist/base-path.js.map +1 -1
  5. package/dist/custom-elements.json +9053 -9048
  6. package/dist/dark.css +1 -302
  7. package/dist/date.js +16 -36
  8. package/dist/date.js.map +1 -1
  9. package/dist/element-utils.js +20 -81
  10. package/dist/element-utils.js.map +1 -1
  11. package/dist/event.js +49 -165
  12. package/dist/event.js.map +1 -1
  13. package/dist/form-associated-element-BjeJn7j8.js +101 -0
  14. package/dist/{form-associated-element-DEQ4y-jn.js.map → form-associated-element-BjeJn7j8.js.map} +1 -1
  15. package/dist/icon-DmsqtDpL.js +102 -0
  16. package/dist/{icon-CReYMzAK.js.map → icon-DmsqtDpL.js.map} +1 -1
  17. package/dist/light.css +1 -731
  18. package/dist/localize.js +36 -111
  19. package/dist/localize.js.map +1 -1
  20. package/dist/packages/wje-accordion-item/accordion-item.element.d.ts +3 -2
  21. package/dist/packages/wje-img/img.element.d.ts +4 -4
  22. package/dist/permissions.js +14 -41
  23. package/dist/permissions.js.map +1 -1
  24. package/dist/popup.element-CbkhthPP.js +806 -0
  25. package/dist/{popup.element-CwXvVFK7.js.map → popup.element-CbkhthPP.js.map} +1 -1
  26. package/dist/router-links-CNsJ-elb.js +105 -0
  27. package/dist/{router-links-wjqCnncc.js.map → router-links-CNsJ-elb.js.map} +1 -1
  28. package/dist/skeleton.css +1 -197
  29. package/dist/styles.css +1 -866
  30. package/dist/universal-service.js +48 -109
  31. package/dist/universal-service.js.map +1 -1
  32. package/dist/utils.js +11 -18
  33. package/dist/utils.js.map +1 -1
  34. package/dist/web-types.json +698 -698
  35. package/dist/wje-accordion-item.js +33 -106
  36. package/dist/wje-accordion-item.js.map +1 -1
  37. package/dist/wje-accordion.js +19 -84
  38. package/dist/wje-accordion.js.map +1 -1
  39. package/dist/wje-animation.js +37 -4258
  40. package/dist/wje-animation.js.map +1 -1
  41. package/dist/wje-aside.js +9 -34
  42. package/dist/wje-aside.js.map +1 -1
  43. package/dist/wje-avatar.js +36 -126
  44. package/dist/wje-avatar.js.map +1 -1
  45. package/dist/wje-badge.js +10 -52
  46. package/dist/wje-badge.js.map +1 -1
  47. package/dist/wje-breadcrumb.js +205 -668
  48. package/dist/wje-breadcrumb.js.map +1 -1
  49. package/dist/wje-breadcrumbs.js +177 -633
  50. package/dist/wje-breadcrumbs.js.map +1 -1
  51. package/dist/wje-button-group.js +48 -153
  52. package/dist/wje-button-group.js.map +1 -1
  53. package/dist/wje-button.js +92 -413
  54. package/dist/wje-button.js.map +1 -1
  55. package/dist/wje-card-content.js +7 -30
  56. package/dist/wje-card-content.js.map +1 -1
  57. package/dist/wje-card-controls.js +7 -30
  58. package/dist/wje-card-controls.js.map +1 -1
  59. package/dist/wje-card-header.js +7 -30
  60. package/dist/wje-card-header.js.map +1 -1
  61. package/dist/wje-card-subtitle.js +7 -34
  62. package/dist/wje-card-subtitle.js.map +1 -1
  63. package/dist/wje-card-title.js +7 -34
  64. package/dist/wje-card-title.js.map +1 -1
  65. package/dist/wje-card.js +15 -71
  66. package/dist/wje-card.js.map +1 -1
  67. package/dist/wje-carousel-item.js +12 -56
  68. package/dist/wje-carousel-item.js.map +1 -1
  69. package/dist/wje-carousel.js +154 -509
  70. package/dist/wje-carousel.js.map +1 -1
  71. package/dist/wje-checkbox.js +50 -227
  72. package/dist/wje-checkbox.js.map +1 -1
  73. package/dist/wje-chip.js +43 -160
  74. package/dist/wje-chip.js.map +1 -1
  75. package/dist/wje-col.js +7 -20
  76. package/dist/wje-col.js.map +1 -1
  77. package/dist/wje-color-picker.js +445 -1464
  78. package/dist/wje-color-picker.js.map +1 -1
  79. package/dist/wje-container.js +9 -35
  80. package/dist/wje-container.js.map +1 -1
  81. package/dist/wje-copy-button.js +64 -204
  82. package/dist/wje-copy-button.js.map +1 -1
  83. package/dist/wje-dialog.js +85 -553
  84. package/dist/wje-dialog.js.map +1 -1
  85. package/dist/wje-divider.js +7 -34
  86. package/dist/wje-divider.js.map +1 -1
  87. package/dist/wje-dropdown.js +78 -305
  88. package/dist/wje-dropdown.js.map +1 -1
  89. package/dist/wje-element.js +191 -700
  90. package/dist/wje-element.js.map +1 -1
  91. package/dist/wje-file-upload-item.js +51 -156
  92. package/dist/wje-file-upload-item.js.map +1 -1
  93. package/dist/wje-file-upload.js +181 -619
  94. package/dist/wje-file-upload.js.map +1 -1
  95. package/dist/wje-footer.js +7 -31
  96. package/dist/wje-footer.js.map +1 -1
  97. package/dist/wje-form.js +7 -32
  98. package/dist/wje-form.js.map +1 -1
  99. package/dist/wje-format-digital.js +26 -118
  100. package/dist/wje-format-digital.js.map +1 -1
  101. package/dist/wje-grid.js +7 -33
  102. package/dist/wje-grid.js.map +1 -1
  103. package/dist/wje-header.js +9 -35
  104. package/dist/wje-header.js.map +1 -1
  105. package/dist/wje-icon-library.js +12 -18
  106. package/dist/wje-icon-library.js.map +1 -1
  107. package/dist/wje-icon-picker.js +65 -320
  108. package/dist/wje-icon-picker.js.map +1 -1
  109. package/dist/wje-icon.js +1 -1
  110. package/dist/wje-img-comparer.js +37 -114
  111. package/dist/wje-img-comparer.js.map +1 -1
  112. package/dist/wje-img.js +50 -197
  113. package/dist/wje-img.js.map +1 -1
  114. package/dist/wje-infinite-scroll.js +94 -346
  115. package/dist/wje-infinite-scroll.js.map +1 -1
  116. package/dist/wje-input-file.js +23 -84
  117. package/dist/wje-input-file.js.map +1 -1
  118. package/dist/wje-input.js +78 -392
  119. package/dist/wje-input.js.map +1 -1
  120. package/dist/wje-item.js +11 -64
  121. package/dist/wje-item.js.map +1 -1
  122. package/dist/wje-kanban.js +124 -401
  123. package/dist/wje-kanban.js.map +1 -1
  124. package/dist/wje-label.js +9 -32
  125. package/dist/wje-label.js.map +1 -1
  126. package/dist/wje-level-indicator.js +38 -157
  127. package/dist/wje-level-indicator.js.map +1 -1
  128. package/dist/wje-list.js +10 -40
  129. package/dist/wje-list.js.map +1 -1
  130. package/dist/wje-main.js +7 -31
  131. package/dist/wje-main.js.map +1 -1
  132. package/dist/wje-masonry.js +66 -211
  133. package/dist/wje-masonry.js.map +1 -1
  134. package/dist/wje-master.js +45 -161
  135. package/dist/wje-master.js.map +1 -1
  136. package/dist/wje-menu-button.js +10 -38
  137. package/dist/wje-menu-button.js.map +1 -1
  138. package/dist/wje-menu-item.js +127 -577
  139. package/dist/wje-menu-item.js.map +1 -1
  140. package/dist/wje-menu-label.js +9 -35
  141. package/dist/wje-menu-label.js.map +1 -1
  142. package/dist/wje-menu.js +14 -49
  143. package/dist/wje-menu.js.map +1 -1
  144. package/dist/wje-option.js +48 -279
  145. package/dist/wje-option.js.map +1 -1
  146. package/dist/wje-options.js +130 -384
  147. package/dist/wje-options.js.map +1 -1
  148. package/dist/wje-orgchart-group.js +16 -52
  149. package/dist/wje-orgchart-group.js.map +1 -1
  150. package/dist/wje-orgchart-item.js +24 -93
  151. package/dist/wje-orgchart-item.js.map +1 -1
  152. package/dist/wje-orgchart.js +18 -68
  153. package/dist/wje-orgchart.js.map +1 -1
  154. package/dist/wje-pagination.js +113 -397
  155. package/dist/wje-pagination.js.map +1 -1
  156. package/dist/wje-popup.js +3 -3
  157. package/dist/wje-popup.js.map +1 -1
  158. package/dist/wje-progress-bar.js +53 -205
  159. package/dist/wje-progress-bar.js.map +1 -1
  160. package/dist/wje-qr-code.js +398 -2980
  161. package/dist/wje-qr-code.js.map +1 -1
  162. package/dist/wje-radio-group.js +52 -190
  163. package/dist/wje-radio-group.js.map +1 -1
  164. package/dist/wje-radio.js +24 -118
  165. package/dist/wje-radio.js.map +1 -1
  166. package/dist/wje-rate.js +62 -266
  167. package/dist/wje-rate.js.map +1 -1
  168. package/dist/wje-relative-time.js +24 -99
  169. package/dist/wje-relative-time.js.map +1 -1
  170. package/dist/wje-reorder-dropzone.js +9 -31
  171. package/dist/wje-reorder-dropzone.js.map +1 -1
  172. package/dist/wje-reorder-handle.js +67 -204
  173. package/dist/wje-reorder-handle.js.map +1 -1
  174. package/dist/wje-reorder-item.js +14 -44
  175. package/dist/wje-reorder-item.js.map +1 -1
  176. package/dist/wje-reorder.js +61 -246
  177. package/dist/wje-reorder.js.map +1 -1
  178. package/dist/wje-route.js +6 -24
  179. package/dist/wje-route.js.map +1 -1
  180. package/dist/wje-router-link.js +11 -39
  181. package/dist/wje-router-link.js.map +1 -1
  182. package/dist/wje-router-outlet.js +76 -172
  183. package/dist/wje-router-outlet.js.map +1 -1
  184. package/dist/wje-routerx.js +537 -1331
  185. package/dist/wje-routerx.js.map +1 -1
  186. package/dist/wje-row.js +9 -31
  187. package/dist/wje-row.js.map +1 -1
  188. package/dist/wje-select.js +326 -1152
  189. package/dist/wje-select.js.map +1 -1
  190. package/dist/wje-slider.js +44 -225
  191. package/dist/wje-slider.js.map +1 -1
  192. package/dist/wje-sliding-container.js +295 -1319
  193. package/dist/wje-sliding-container.js.map +1 -1
  194. package/dist/wje-split-view.js +35 -121
  195. package/dist/wje-split-view.js.map +1 -1
  196. package/dist/wje-status.js +14 -45
  197. package/dist/wje-status.js.map +1 -1
  198. package/dist/wje-step.js +9 -32
  199. package/dist/wje-step.js.map +1 -1
  200. package/dist/wje-stepper.js +109 -357
  201. package/dist/wje-stepper.js.map +1 -1
  202. package/dist/wje-store.js +67 -360
  203. package/dist/wje-store.js.map +1 -1
  204. package/dist/wje-tab-group.js +85 -314
  205. package/dist/wje-tab-group.js.map +1 -1
  206. package/dist/wje-tab-panel.js +7 -28
  207. package/dist/wje-tab-panel.js.map +1 -1
  208. package/dist/wje-tab.js +21 -198
  209. package/dist/wje-tab.js.map +1 -1
  210. package/dist/wje-textarea.js +64 -264
  211. package/dist/wje-textarea.js.map +1 -1
  212. package/dist/wje-thumbnail.js +10 -51
  213. package/dist/wje-thumbnail.js.map +1 -1
  214. package/dist/wje-toast.js +127 -632
  215. package/dist/wje-toast.js.map +1 -1
  216. package/dist/wje-toggle.js +52 -177
  217. package/dist/wje-toggle.js.map +1 -1
  218. package/dist/wje-toolbar-action.js +128 -456
  219. package/dist/wje-toolbar-action.js.map +1 -1
  220. package/dist/wje-toolbar.js +75 -270
  221. package/dist/wje-toolbar.js.map +1 -1
  222. package/dist/wje-tooltip.js +50 -161
  223. package/dist/wje-tooltip.js.map +1 -1
  224. package/dist/wje-tree-item.js +70 -301
  225. package/dist/wje-tree-item.js.map +1 -1
  226. package/dist/wje-tree.js +145 -489
  227. package/dist/wje-tree.js.map +1 -1
  228. package/dist/wje-visually-hidden.js +7 -34
  229. package/dist/wje-visually-hidden.js.map +1 -1
  230. package/package.json +4 -2
  231. package/dist/form-associated-element-DEQ4y-jn.js +0 -245
  232. package/dist/icon-CReYMzAK.js +0 -245
  233. package/dist/popup.element-CwXvVFK7.js +0 -2133
  234. package/dist/router-links-wjqCnncc.js +0 -156
@@ -1,534 +1,206 @@
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 WJElement from "./wje-element.js";
5
- const styles = "/*\n[ WJ Toolbar Action ]\n*/\n\n:host {\n --wje-toolbar-action-breakpoint-sm: 576px;\n --wje-toolbar-action-breakpoint-md: 768px;\n --wje-toolbar-action-breakpoint-lg: 992px;\n --wje-toolbar-action-breakpoint-xl: 1200px;\n --wje-toolbar-action-breakpoint-2xl: 1450px;\n --wje-toolbar-action-breakpoint-xxl: 1450px;\n\n .native-toolbar-action {\n display: flex;\n align-items: center;\n gap: var(--wje-toolbar-action-gap);\n }\n\n .toolbar-action-more {\n flex: 0 0 auto;\n }\n}\n";
6
- const _ToolbarAction = class _ToolbarAction extends WJElement {
7
- /**
8
- * Creates an instance of ToolbarAction.
9
- */
4
+ import e from "./wje-element.js";
5
+ const _t = class _t extends e {
10
6
  constructor() {
11
7
  super();
12
- /**
13
- * The class name for the component.
14
- * @type {string}
15
- */
16
8
  __publicField(this, "className", "ToolbarAction");
17
- this._managedHiddenActions = /* @__PURE__ */ new WeakSet();
18
- this._isCollapsedByBreakpoint = null;
19
- this._managedOverflowNodes = /* @__PURE__ */ new WeakSet();
20
- this._overflowRetryFrame = null;
21
- this._applyOverflowFrame = null;
22
- this._observedDropdown = null;
23
- }
24
- /**
25
- * Returns the CSS stylesheet for the component.
26
- * @static
27
- * @returns {CSSStyleSheet} The CSS stylesheet
28
- */
9
+ this._managedHiddenActions = /* @__PURE__ */ new WeakSet(), this._isCollapsedByBreakpoint = null, this._managedOverflowNodes = /* @__PURE__ */ new WeakSet(), this._overflowRetryFrame = null, this._applyOverflowFrame = null, this._observedDropdown = null;
10
+ }
29
11
  static get cssStyleSheet() {
30
- return styles;
12
+ return ":host{--wje-toolbar-action-breakpoint-sm: 576px;--wje-toolbar-action-breakpoint-md: 768px;--wje-toolbar-action-breakpoint-lg: 992px;--wje-toolbar-action-breakpoint-xl: 1200px;--wje-toolbar-action-breakpoint-2xl: 1450px;--wje-toolbar-action-breakpoint-xxl: 1450px}:host .native-toolbar-action{display:flex;align-items:center;gap:var(--wje-toolbar-action-gap)}:host .toolbar-action-more{flex:0 0 auto}";
31
13
  }
32
- /**
33
- * Returns the list of observed attributes.
34
- * @static
35
- * @returns {Array} An empty array
36
- */
37
14
  static get observedAttributes() {
38
15
  return ["breakpoint", "max-items", "visible-items"];
39
16
  }
40
- /**
41
- * Sets the collapse breakpoint token or value.
42
- * @param {string} value Breakpoint token or CSS size.
43
- */
44
- set breakpoint(value) {
45
- if (value) this.setAttribute("breakpoint", value);
46
- else this.removeAttribute("breakpoint");
47
- }
48
- /**
49
- * Gets the collapse breakpoint token or value.
50
- * @returns {string}
51
- */
17
+ set breakpoint(e2) {
18
+ e2 ? this.setAttribute("breakpoint", e2) : this.removeAttribute("breakpoint");
19
+ }
52
20
  get breakpoint() {
53
21
  return this.getAttribute("breakpoint") || "";
54
22
  }
55
- /**
56
- * Sets the maximum number of visible actions.
57
- * @param {number|string} value The maximum number of visible actions.
58
- */
59
- set maxItems(value) {
60
- this.setAttribute("max-items", value || 0);
61
- }
62
- /**
63
- * Gets the maximum number of visible actions.
64
- * @returns {number}
65
- */
23
+ set maxItems(e2) {
24
+ this.setAttribute("max-items", e2 || 0);
25
+ }
66
26
  get maxItems() {
67
27
  return +this.getAttribute("max-items") || 0;
68
28
  }
69
- /**
70
- * Sets the responsive visible action count.
71
- * @param {number|string} value The visible action count.
72
- */
73
- set visibleItems(value) {
74
- if (value === null || value === void 0 || value === "") {
75
- this.removeAttribute("visible-items");
76
- return;
77
- }
78
- this.setAttribute("visible-items", value);
29
+ set visibleItems(e2) {
30
+ null != e2 && "" !== e2 ? this.setAttribute("visible-items", e2) : this.removeAttribute("visible-items");
79
31
  }
80
- /**
81
- * Gets the responsive visible action count.
82
- * @returns {number|null}
83
- */
84
32
  get visibleItems() {
85
33
  if (!this.hasAttribute("visible-items")) return null;
86
- const value = +this.getAttribute("visible-items");
87
- return Number.isFinite(value) ? value : null;
34
+ const e2 = +this.getAttribute("visible-items");
35
+ return Number.isFinite(e2) ? e2 : null;
88
36
  }
89
- /**
90
- * Sets up the attributes for the component.
91
- */
92
37
  setupAttributes() {
93
38
  this.isShadowRoot = "open";
94
39
  }
95
- /**
96
- * Draws the component for the toolbar action.
97
- * @returns {object} Document fragment
98
- */
99
40
  draw() {
100
- let fragment = document.createDocumentFragment();
101
- let slot = document.createElement("slot");
102
- let element = document.createElement("div");
103
- element.setAttribute("part", "native");
104
- element.classList.add("native-toolbar-action");
105
- let dropdown = document.createElement("wje-dropdown");
106
- dropdown.setAttribute("placement", "bottom-end");
107
- dropdown.setAttribute("collapsible", "");
108
- dropdown.classList.add("toolbar-action-more");
109
- dropdown.hidden = true;
110
- let trigger = document.createElement("wje-button");
111
- trigger.setAttribute("slot", "trigger");
112
- trigger.setAttribute("fill", "link");
113
- trigger.setAttribute("aria-label", "Show more actions");
114
- trigger.innerHTML = '<wje-icon name="dots"></wje-icon>';
115
- let menu = document.createElement("wje-menu");
116
- menu.setAttribute("variant", "context");
117
- dropdown.append(trigger, menu);
118
- element.appendChild(slot);
119
- element.appendChild(dropdown);
120
- fragment.appendChild(element);
121
- this.defaultSlot = slot;
122
- this.native = element;
123
- this.moreDropdown = dropdown;
124
- this.moreMenu = menu;
125
- return fragment;
126
- }
127
- /**
128
- * Applies the current visible action limit after the component is drawn.
129
- */
41
+ let e2 = document.createDocumentFragment(), t2 = document.createElement("slot"), i = document.createElement("div");
42
+ i.setAttribute("part", "native"), i.classList.add("native-toolbar-action");
43
+ let o = document.createElement("wje-dropdown");
44
+ o.setAttribute("placement", "bottom-end"), o.setAttribute("collapsible", ""), o.classList.add("toolbar-action-more"), o.hidden = true;
45
+ let r = document.createElement("wje-button");
46
+ r.setAttribute("slot", "trigger"), r.setAttribute("fill", "link"), r.setAttribute("label", "Show more actions"), r.innerHTML = '<wje-icon name="dots"></wje-icon>';
47
+ let n = document.createElement("wje-menu");
48
+ return n.setAttribute("variant", "context"), o.append(r, n), i.appendChild(t2), i.appendChild(o), e2.appendChild(i), this.defaultSlot = t2, this.native = i, this.moreDropdown = o, this.moreMenu = n, e2;
49
+ }
130
50
  afterDraw() {
131
51
  var _a;
132
52
  this.onSlotChange = () => {
133
- this.observeExistingDropdown();
134
- this.scheduleOverflow();
135
- };
136
- (_a = this.defaultSlot) == null ? void 0 : _a.addEventListener("slotchange", this.onSlotChange);
137
- this.handleResize = () => this.handleBreakpointResize();
138
- if (this.getBreakpointWidth()) {
139
- window.addEventListener("resize", this.handleResize);
140
- }
141
- this.observeExistingDropdown();
142
- this.scheduleOverflow(true);
53
+ this.observeExistingDropdown(), this.scheduleOverflow();
54
+ }, (_a = this.defaultSlot) == null ? void 0 : _a.addEventListener("slotchange", this.onSlotChange), this.handleResize = () => this.handleBreakpointResize(), this.getBreakpointWidth() && window.addEventListener("resize", this.handleResize), this.observeExistingDropdown(), this.scheduleOverflow(true);
143
55
  }
144
- /**
145
- * Removes listeners after disconnect.
146
- */
147
56
  afterDisconnect() {
148
57
  var _a, _b;
149
- (_a = this.defaultSlot) == null ? void 0 : _a.removeEventListener("slotchange", this.onSlotChange);
150
- window.removeEventListener("resize", this.handleResize);
151
- this._isCollapsedByBreakpoint = null;
152
- if (this._overflowRetryFrame) {
153
- cancelAnimationFrame(this._overflowRetryFrame);
154
- this._overflowRetryFrame = null;
155
- }
156
- if (this._applyOverflowFrame) {
157
- cancelAnimationFrame(this._applyOverflowFrame);
158
- this._applyOverflowFrame = null;
159
- }
160
- (_b = this._dropdownObserver) == null ? void 0 : _b.disconnect();
161
- this._dropdownObserver = null;
162
- this._observedDropdown = null;
163
- }
164
- /**
165
- * Schedules overflow application after layout settles.
166
- * @param {boolean} [doubleFrame] Wait an extra frame for initial render/hydration.
167
- */
168
- scheduleOverflow(doubleFrame = false) {
169
- if (this._applyOverflowFrame) return;
170
- this._applyOverflowFrame = requestAnimationFrame(() => {
171
- this._applyOverflowFrame = null;
172
- if (doubleFrame) {
173
- this.scheduleOverflow(false);
174
- return;
175
- }
176
- this.applyOverflow();
177
- });
58
+ (_a = this.defaultSlot) == null ? void 0 : _a.removeEventListener("slotchange", this.onSlotChange), window.removeEventListener("resize", this.handleResize), this._isCollapsedByBreakpoint = null, this._overflowRetryFrame && (cancelAnimationFrame(this._overflowRetryFrame), this._overflowRetryFrame = null), this._applyOverflowFrame && (cancelAnimationFrame(this._applyOverflowFrame), this._applyOverflowFrame = null), (_b = this._dropdownObserver) == null ? void 0 : _b.disconnect(), this._dropdownObserver = null, this._observedDropdown = null;
59
+ }
60
+ scheduleOverflow(e2 = false) {
61
+ this._applyOverflowFrame || (this._applyOverflowFrame = requestAnimationFrame(() => {
62
+ this._applyOverflowFrame = null, e2 ? this.scheduleOverflow(false) : this.applyOverflow();
63
+ }));
178
64
  }
179
- /**
180
- * Returns the actions for the toolbar action.
181
- * @returns {Array<HTMLElement>} Managed toolbar actions.
182
- */
183
65
  getActions() {
184
- return this.getAssignedElements().filter(
185
- (element) => {
186
- var _a;
187
- return element.getAttribute("slot") !== "trigger" && (((_a = element.tagName) == null ? void 0 : _a.toLowerCase()) === "wje-button" || element.hasAttribute("data-toolbar-action"));
188
- }
189
- );
190
- }
191
- /**
192
- * Returns direct children assigned to the default slot.
193
- * @returns {Array<HTMLElement>}
194
- */
66
+ return this.getAssignedElements().filter((e2) => {
67
+ var _a;
68
+ return "trigger" !== e2.getAttribute("slot") && ("wje-button" === ((_a = e2.tagName) == null ? void 0 : _a.toLowerCase()) || e2.hasAttribute("data-toolbar-action"));
69
+ });
70
+ }
195
71
  getAssignedElements() {
196
72
  var _a, _b;
197
73
  return ((_b = (_a = this.defaultSlot) == null ? void 0 : _a.assignedElements) == null ? void 0 : _b.call(_a)) || Array.from(this.children);
198
74
  }
199
- /**
200
- * Returns an existing top-level dropdown if present.
201
- * @returns {HTMLElement|null}
202
- */
203
75
  getExistingDropdown() {
204
- return this.getAssignedElements().find((element) => {
76
+ return this.getAssignedElements().find((e2) => {
205
77
  var _a;
206
- return ((_a = element.tagName) == null ? void 0 : _a.toLowerCase()) === "wje-dropdown";
78
+ return "wje-dropdown" === ((_a = e2.tagName) == null ? void 0 : _a.toLowerCase());
207
79
  }) || null;
208
80
  }
209
- /**
210
- * Observes the external dropdown for late menu/content changes.
211
- */
212
81
  observeExistingDropdown() {
213
82
  var _a;
214
- const dropdown = this.getExistingDropdown();
215
- if (dropdown === this._observedDropdown) return;
216
- (_a = this._dropdownObserver) == null ? void 0 : _a.disconnect();
217
- this._dropdownObserver = null;
218
- this._observedDropdown = dropdown;
219
- if (!dropdown || typeof MutationObserver !== "function") return;
220
- this._dropdownObserver = new MutationObserver(() => this.scheduleOverflow());
221
- this._dropdownObserver.observe(dropdown, {
222
- childList: true,
223
- subtree: false
224
- });
83
+ const e2 = this.getExistingDropdown();
84
+ e2 !== this._observedDropdown && ((_a = this._dropdownObserver) == null ? void 0 : _a.disconnect(), this._dropdownObserver = null, this._observedDropdown = e2, e2 && "function" == typeof MutationObserver && (this._dropdownObserver = new MutationObserver(() => this.scheduleOverflow()), this._dropdownObserver.observe(e2, { childList: true, subtree: false })));
225
85
  }
226
- /**
227
- * Returns the dropdown that should receive overflow items.
228
- * @returns {HTMLElement}
229
- */
230
86
  getOverflowDropdown() {
231
87
  return this.getExistingDropdown() || this.moreDropdown;
232
88
  }
233
- /**
234
- * Returns the menu used for overflow items.
235
- * @returns {HTMLElement|null}
236
- */
237
89
  getOverflowMenu() {
238
- const existingDropdown = this.getExistingDropdown();
239
- if (existingDropdown) {
240
- return Array.from(existingDropdown.children).find((element) => {
241
- var _a;
242
- return ((_a = element.tagName) == null ? void 0 : _a.toLowerCase()) === "wje-menu";
243
- }) || null;
244
- }
245
- return this.moreMenu;
90
+ const e2 = this.getExistingDropdown();
91
+ return e2 ? Array.from(e2.children).find((e3) => {
92
+ var _a;
93
+ return "wje-menu" === ((_a = e3.tagName) == null ? void 0 : _a.toLowerCase());
94
+ }) || null : this.moreMenu;
246
95
  }
247
- /**
248
- * Gets the number of actions that should stay visible.
249
- * @returns {number}
250
- */
251
96
  getVisibleLimit() {
252
- const actions = this.getActions();
253
- if (this.isCollapsedByBreakpoint()) {
254
- return 0;
255
- }
256
- const maxItems = this.maxItems > 0 ? this.maxItems : actions.length;
257
- const visibleItems = this.visibleItems;
258
- const limit = visibleItems === null ? maxItems : Math.min(visibleItems, maxItems);
259
- return Math.max(0, Math.min(limit, actions.length));
260
- }
261
- /**
262
- * Returns whether the toolbar action should collapse based on the configured breakpoint.
263
- * @returns {boolean}
264
- */
97
+ const e2 = this.getActions();
98
+ if (this.isCollapsedByBreakpoint()) return 0;
99
+ const t2 = this.maxItems > 0 ? this.maxItems : e2.length, i = this.visibleItems, o = null === i ? t2 : Math.min(i, t2);
100
+ return Math.max(0, Math.min(o, e2.length));
101
+ }
265
102
  shouldCollapseByBreakpoint() {
266
- const breakpointWidth = this.getBreakpointWidth();
267
- if (!breakpointWidth) return false;
268
- return window.innerWidth < breakpointWidth;
269
- }
270
- /**
271
- * Returns the cached breakpoint collapse state.
272
- * @returns {boolean}
273
- */
103
+ const e2 = this.getBreakpointWidth();
104
+ return !!e2 && window.innerWidth < e2;
105
+ }
274
106
  isCollapsedByBreakpoint() {
275
- if (!this.getBreakpointWidth()) {
276
- this._isCollapsedByBreakpoint = false;
277
- return false;
278
- }
279
- const nextState = this.shouldCollapseByBreakpoint();
280
- this._isCollapsedByBreakpoint = nextState;
281
- return nextState;
282
- }
283
- /**
284
- * Reacts to viewport resize only when the breakpoint mode actually changes.
285
- * @returns {void}
286
- */
107
+ if (!this.getBreakpointWidth()) return this._isCollapsedByBreakpoint = false, false;
108
+ const e2 = this.shouldCollapseByBreakpoint();
109
+ return this._isCollapsedByBreakpoint = e2, e2;
110
+ }
287
111
  handleBreakpointResize() {
288
112
  if (!this.getBreakpointWidth()) return;
289
- const nextState = this.shouldCollapseByBreakpoint();
290
- if (this._isCollapsedByBreakpoint === nextState) return;
291
- this._isCollapsedByBreakpoint = nextState;
292
- this.scheduleOverflow();
293
- }
294
- /**
295
- * Resolves the configured breakpoint to a pixel width.
296
- * @returns {number|null}
297
- */
113
+ const e2 = this.shouldCollapseByBreakpoint();
114
+ this._isCollapsedByBreakpoint !== e2 && (this._isCollapsedByBreakpoint = e2, this.scheduleOverflow());
115
+ }
298
116
  getBreakpointWidth() {
299
117
  if (!this.breakpoint) return null;
300
- const token = this.breakpoint.trim().toLowerCase();
301
- const cssValue = getComputedStyle(this).getPropertyValue(`--wje-toolbar-action-breakpoint-${token}`).trim();
302
- const namedBreakpoint = _ToolbarAction.BREAKPOINTS[token];
303
- if (cssValue) {
304
- const cssNumber = parseFloat(cssValue);
305
- if (Number.isFinite(cssNumber)) return cssNumber;
118
+ const e2 = this.breakpoint.trim().toLowerCase(), i = getComputedStyle(this).getPropertyValue(`--wje-toolbar-action-breakpoint-${e2}`).trim(), o = _t.BREAKPOINTS[e2];
119
+ if (i) {
120
+ const e3 = parseFloat(i);
121
+ if (Number.isFinite(e3)) return e3;
306
122
  }
307
- if (Number.isFinite(namedBreakpoint)) {
308
- return namedBreakpoint;
309
- }
310
- const directNumber = parseFloat(token);
311
- return Number.isFinite(directNumber) ? directNumber : null;
123
+ if (Number.isFinite(o)) return o;
124
+ const r = parseFloat(e2);
125
+ return Number.isFinite(r) ? r : null;
312
126
  }
313
- /**
314
- * Updates visible actions and the overflow dropdown.
315
- * @returns {void}
316
- */
317
127
  applyOverflow() {
318
128
  var _a;
319
- const actions = this.getActions();
320
- const visibleLimit = this.getVisibleLimit();
321
- const overflowActions = actions.slice(visibleLimit);
322
- const existingDropdown = this.getExistingDropdown();
323
- const overflowMenu = this.getOverflowMenu();
324
- if (this._overflowRetryFrame) {
325
- cancelAnimationFrame(this._overflowRetryFrame);
326
- this._overflowRetryFrame = null;
327
- }
328
- this.restoreManagedActions(actions);
329
- this.restoreManagedOverflowContent();
330
- if (existingDropdown && overflowActions.length > 0 && !overflowMenu) {
331
- this._overflowRetryFrame = requestAnimationFrame(() => {
332
- this._overflowRetryFrame = null;
333
- this.scheduleOverflow();
334
- });
335
- return;
336
- }
337
- if (!existingDropdown) {
338
- (_a = this.moreMenu) == null ? void 0 : _a.replaceChildren();
339
- }
340
- overflowActions.forEach((action) => {
341
- action.hidden = true;
342
- action.style.display = "none";
343
- this._managedHiddenActions.add(action);
344
- });
345
- if (overflowMenu && existingDropdown && overflowActions.length > 0 && overflowMenu.children.length > 0) {
346
- overflowMenu.append(this.createOverflowDivider());
347
- }
348
- overflowActions.forEach((action) => {
349
- overflowMenu == null ? void 0 : overflowMenu.append(this.createMenuItem(action));
350
- });
351
- if (!existingDropdown && this.moreDropdown) {
352
- this.moreDropdown.hidden = overflowActions.length === 0;
353
- } else if (existingDropdown && this.moreDropdown) {
354
- this.moreDropdown.hidden = true;
355
- }
356
- }
357
- /**
358
- * Restores buttons hidden by this component.
359
- * @param {Array<HTMLElement>} actions Toolbar buttons.
360
- */
361
- restoreManagedActions(actions = this.getActions()) {
362
- actions.forEach((action) => {
363
- if (this._managedHiddenActions.has(action)) {
364
- action.hidden = false;
365
- action.style.removeProperty("display");
366
- this._managedHiddenActions.delete(action);
367
- }
129
+ const e2 = this.getActions(), t2 = this.getVisibleLimit(), i = e2.slice(t2), o = this.getExistingDropdown(), r = this.getOverflowMenu();
130
+ this._overflowRetryFrame && (cancelAnimationFrame(this._overflowRetryFrame), this._overflowRetryFrame = null), this.restoreManagedActions(e2), this.restoreManagedOverflowContent(), o && i.length > 0 && !r ? this._overflowRetryFrame = requestAnimationFrame(() => {
131
+ this._overflowRetryFrame = null, this.scheduleOverflow();
132
+ }) : (o || ((_a = this.moreMenu) == null ? void 0 : _a.replaceChildren()), i.forEach((e3) => {
133
+ e3.hidden = true, e3.style.display = "none", this._managedHiddenActions.add(e3);
134
+ }), r && o && i.length > 0 && r.children.length > 0 && r.append(this.createOverflowDivider()), i.forEach((e3) => {
135
+ r == null ? void 0 : r.append(this.createMenuItem(e3));
136
+ }), !o && this.moreDropdown ? this.moreDropdown.hidden = 0 === i.length : o && this.moreDropdown && (this.moreDropdown.hidden = true));
137
+ }
138
+ restoreManagedActions(e2 = this.getActions()) {
139
+ e2.forEach((e3) => {
140
+ this._managedHiddenActions.has(e3) && (e3.hidden = false, e3.style.removeProperty("display"), this._managedHiddenActions.delete(e3));
368
141
  });
369
142
  }
370
- /**
371
- * Removes overflow menu nodes that were previously injected by this component.
372
- */
373
143
  restoreManagedOverflowContent() {
374
- const dropdown = this.getExistingDropdown();
375
- if (!dropdown) return;
376
- const menu = this.getOverflowMenu();
377
- if (!menu) return;
378
- Array.from(menu.children).forEach((child) => {
379
- if (this._managedOverflowNodes.has(child)) {
380
- child.remove();
381
- this._managedOverflowNodes.delete(child);
382
- }
144
+ if (!this.getExistingDropdown()) return;
145
+ const e2 = this.getOverflowMenu();
146
+ e2 && Array.from(e2.children).forEach((e3) => {
147
+ this._managedOverflowNodes.has(e3) && (e3.remove(), this._managedOverflowNodes.delete(e3));
383
148
  });
384
149
  }
385
- /**
386
- * Creates a dropdown menu proxy for an overflowed button.
387
- * @param {HTMLElement} action The original action button.
388
- * @returns {HTMLElement}
389
- */
390
- createMenuItem(action) {
391
- let menuItem = document.createElement("wje-menu-item");
392
- menuItem.replaceChildren(...Array.from(action.childNodes).map((node) => this.cloneActionMenuNode(node)));
393
- const label = this.getActionLabel(action);
394
- if (!menuItem.textContent.trim() && label) {
395
- menuItem.append(document.createTextNode(label));
396
- }
397
- if (label) {
398
- menuItem.setAttribute("aria-label", label);
399
- }
400
- if (action.hasAttribute("disabled") || action.getAttribute("aria-disabled") === "true") {
401
- menuItem.setAttribute("disabled", "");
402
- }
403
- menuItem.addEventListener("wje-menu-item:click", (e) => this.handleMenuItemClick(e, action));
404
- menuItem.addEventListener("click", (e) => this.handleMenuItemClick(e, action));
405
- this._managedOverflowNodes.add(menuItem);
406
- return menuItem;
407
- }
408
- /**
409
- * Clones action content for menu usage and normalizes button icon slots.
410
- * @param {Node} node The source action child node.
411
- * @returns {Node}
412
- */
413
- cloneActionMenuNode(node) {
414
- const clone = node.cloneNode(true);
415
- if (clone.nodeType === Node.ELEMENT_NODE) {
416
- this.normalizeActionMenuIconSlot(clone);
417
- }
418
- return clone;
150
+ createMenuItem(e2) {
151
+ let t2 = document.createElement("wje-menu-item");
152
+ t2.replaceChildren(...Array.from(e2.childNodes).map((e3) => this.cloneActionMenuNode(e3)));
153
+ const i = this.getActionLabel(e2);
154
+ return !t2.textContent.trim() && i && t2.append(document.createTextNode(i)), i && t2.setAttribute("aria-label", i), (e2.hasAttribute("disabled") || "true" === e2.getAttribute("aria-disabled")) && t2.setAttribute("disabled", ""), t2.addEventListener("wje-menu-item:click", (t3) => this.handleMenuItemClick(t3, e2)), t2.addEventListener("click", (t3) => this.handleMenuItemClick(t3, e2)), this._managedOverflowNodes.add(t2), t2;
155
+ }
156
+ cloneActionMenuNode(e2) {
157
+ const t2 = e2.cloneNode(true);
158
+ return t2.nodeType === Node.ELEMENT_NODE && this.normalizeActionMenuIconSlot(t2), t2;
419
159
  }
420
- /**
421
- * Moves button-only icon slots to the menu item start slot.
422
- * @param {Element} element The cloned action content node.
423
- */
424
- normalizeActionMenuIconSlot(element) {
160
+ normalizeActionMenuIconSlot(e2) {
425
161
  var _a;
426
- if (((_a = element.tagName) == null ? void 0 : _a.toLowerCase()) !== "wje-icon") return;
427
- const slot = element.getAttribute("slot");
428
- if (!slot || slot === "icon-only") {
429
- element.setAttribute("slot", "start");
430
- }
162
+ if ("wje-icon" !== ((_a = e2.tagName) == null ? void 0 : _a.toLowerCase())) return;
163
+ const t2 = e2.getAttribute("slot");
164
+ t2 && "icon-only" !== t2 || e2.setAttribute("slot", "start");
431
165
  }
432
- /**
433
- * Resolves readable text for a toolbar action copied into an overflow menu.
434
- * @param {HTMLElement} action The original action element.
435
- * @returns {string}
436
- */
437
- getActionLabel(action) {
438
- if (!action) return "";
439
- const explicitLabel = ["aria-label", "title", "label", "data-label", "tooltip"].map((attr) => {
166
+ getActionLabel(e2) {
167
+ if (!e2) return "";
168
+ const t2 = ["aria-label", "title", "label", "data-label", "tooltip"].map((t3) => {
440
169
  var _a;
441
- return (_a = action.getAttribute(attr)) == null ? void 0 : _a.trim();
442
- }).find((value) => value && value !== "true");
443
- if (explicitLabel) return explicitLabel;
444
- return action.textContent.trim();
445
- }
446
- /**
447
- * Creates a divider separating existing dropdown actions from responsive overflow actions.
448
- * @returns {HTMLElement}
449
- */
170
+ return (_a = e2.getAttribute(t3)) == null ? void 0 : _a.trim();
171
+ }).find((e3) => e3 && "true" !== e3);
172
+ return t2 || e2.textContent.trim();
173
+ }
450
174
  createOverflowDivider() {
451
- const divider = document.createElement("wje-divider");
452
- this._managedOverflowNodes.add(divider);
453
- return divider;
454
- }
455
- /**
456
- * Forwards menu item activation to the original button.
457
- * @param {Event} e The menu event.
458
- * @param {HTMLElement} action The original action button.
459
- */
460
- handleMenuItemClick(e, action) {
175
+ const e2 = document.createElement("wje-divider");
176
+ return this._managedOverflowNodes.add(e2), e2;
177
+ }
178
+ handleMenuItemClick(e2, t2) {
461
179
  var _a;
462
- (_a = e.preventDefault) == null ? void 0 : _a.call(e);
463
- e.stopPropagation();
464
- if (!action || action.hasAttribute("disabled") || action.getAttribute("aria-disabled") === "true") return;
465
- action.click();
466
- }
467
- /**
468
- * Measures action widths while preserving current overflow state.
469
- * @returns {{count: number, widths: number[], gap: number, moreWidth: number, getWidthForCount: Function}}
470
- */
180
+ (_a = e2.preventDefault) == null ? void 0 : _a.call(e2), e2.stopPropagation(), t2 && !t2.hasAttribute("disabled") && "true" !== t2.getAttribute("aria-disabled") && t2.click();
181
+ }
471
182
  measureActionMetrics() {
472
- const actions = this.getActions();
473
- const hasExistingDropdown = !!this.getExistingDropdown();
474
- this.restoreManagedActions(actions);
475
- const widths = actions.map((action) => action.getBoundingClientRect().width);
476
- const style = this.native ? getComputedStyle(this.native) : null;
477
- const gap = style ? parseFloat(style.columnGap || style.gap || "0") || 0 : 0;
478
- const moreWidth = this.measureMoreWidth();
479
- this.applyOverflow();
480
- return {
481
- count: actions.length,
482
- widths,
483
- gap,
484
- moreWidth,
485
- getWidthForCount: (visibleCount) => {
486
- const count = Math.max(0, Math.min(visibleCount, actions.length));
487
- const overflowCount = actions.length - count;
488
- const visibleWidth = widths.slice(0, count).reduce((sum, width) => sum + width, 0);
489
- const visibleGaps = Math.max(count - 1, 0) * gap;
490
- const usesDropdown = hasExistingDropdown || overflowCount > 0;
491
- const moreGap = count > 0 && usesDropdown ? gap : 0;
492
- return visibleWidth + visibleGaps + (usesDropdown ? moreWidth + moreGap : 0);
493
- }
494
- };
495
- }
496
- /**
497
- * Measures the overflow dropdown trigger.
498
- * @returns {number}
499
- */
183
+ const e2 = this.getActions(), t2 = !!this.getExistingDropdown();
184
+ this.restoreManagedActions(e2);
185
+ const i = e2.map((e3) => e3.getBoundingClientRect().width), o = this.native ? getComputedStyle(this.native) : null, r = o && parseFloat(o.columnGap || o.gap || "0") || 0, n = this.measureMoreWidth();
186
+ return this.applyOverflow(), { count: e2.length, widths: i, gap: r, moreWidth: n, getWidthForCount: (o2) => {
187
+ const s = Math.max(0, Math.min(o2, e2.length)), a = e2.length - s, l = i.slice(0, s).reduce((e3, t3) => e3 + t3, 0), d = Math.max(s - 1, 0) * r, h = t2 || a > 0;
188
+ return l + d + (h ? n + (s > 0 && h ? r : 0) : 0);
189
+ } };
190
+ }
500
191
  measureMoreWidth() {
501
- const dropdown = this.getOverflowDropdown();
502
- if (!dropdown) return 48;
503
- const isInternalDropdown = dropdown === this.moreDropdown;
504
- const wasHidden = dropdown.hidden;
505
- const previousVisibility = dropdown.style.visibility;
506
- if (isInternalDropdown && wasHidden) {
507
- dropdown.hidden = false;
508
- dropdown.style.visibility = "hidden";
509
- }
510
- const width = dropdown.getBoundingClientRect().width || 48;
511
- if (isInternalDropdown && wasHidden) {
512
- dropdown.hidden = true;
513
- dropdown.style.visibility = previousVisibility;
514
- }
515
- if (dropdown === this.moreDropdown && this.getExistingDropdown()) {
516
- this.moreDropdown.hidden = true;
517
- }
518
- return width;
192
+ const e2 = this.getOverflowDropdown();
193
+ if (!e2) return 48;
194
+ const t2 = e2 === this.moreDropdown, i = e2.hidden, o = e2.style.visibility;
195
+ t2 && i && (e2.hidden = false, e2.style.visibility = "hidden");
196
+ const r = e2.getBoundingClientRect().width || 48;
197
+ return t2 && i && (e2.hidden = true, e2.style.visibility = o), e2 === this.moreDropdown && this.getExistingDropdown() && (this.moreDropdown.hidden = true), r;
519
198
  }
520
199
  };
521
- __publicField(_ToolbarAction, "BREAKPOINTS", {
522
- sm: 576,
523
- md: 768,
524
- lg: 992,
525
- xl: 1200,
526
- "2xl": 1450,
527
- xxl: 1450
528
- });
529
- let ToolbarAction = _ToolbarAction;
530
- ToolbarAction.define("wje-toolbar-action", ToolbarAction);
200
+ __publicField(_t, "BREAKPOINTS", { sm: 576, md: 768, lg: 992, xl: 1200, "2xl": 1450, xxl: 1450 });
201
+ let t = _t;
202
+ t.define("wje-toolbar-action", t);
531
203
  export {
532
- ToolbarAction as default
204
+ t as default
533
205
  };
534
206
  //# sourceMappingURL=wje-toolbar-action.js.map