@deepfuture/dui-components 0.0.11 → 0.0.13

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 (250) hide show
  1. package/README.md +191 -0
  2. package/_deprecated/center/center.js +2 -2
  3. package/_deprecated/center/index.d.ts +3 -1
  4. package/_deprecated/center/index.js +3 -1
  5. package/_deprecated/hstack/hstack.js +79 -33
  6. package/_deprecated/hstack/index.d.ts +3 -1
  7. package/_deprecated/hstack/index.js +3 -1
  8. package/_deprecated/page-inset/index.d.ts +3 -1
  9. package/_deprecated/page-inset/index.js +3 -1
  10. package/_deprecated/page-inset/page-inset.js +104 -56
  11. package/_deprecated/vstack/index.d.ts +3 -1
  12. package/_deprecated/vstack/index.js +3 -1
  13. package/_deprecated/vstack/vstack.js +61 -19
  14. package/accordion/accordion-item.js +217 -147
  15. package/accordion/accordion.js +214 -149
  16. package/accordion/index.d.ts +5 -2
  17. package/accordion/index.js +5 -2
  18. package/alert-dialog/alert-dialog-close.js +2 -2
  19. package/alert-dialog/alert-dialog-popup.js +230 -166
  20. package/alert-dialog/alert-dialog-trigger.js +2 -2
  21. package/alert-dialog/alert-dialog.js +128 -73
  22. package/alert-dialog/index.d.ts +9 -4
  23. package/alert-dialog/index.js +9 -4
  24. package/avatar/avatar.js +175 -115
  25. package/avatar/index.d.ts +3 -1
  26. package/avatar/index.js +3 -1
  27. package/badge/badge.js +2 -2
  28. package/badge/index.d.ts +3 -1
  29. package/badge/index.js +3 -1
  30. package/breadcrumb/breadcrumb-ellipsis.js +2 -2
  31. package/breadcrumb/breadcrumb-item.js +2 -2
  32. package/breadcrumb/breadcrumb-link.js +2 -2
  33. package/breadcrumb/breadcrumb-page.js +2 -2
  34. package/breadcrumb/breadcrumb-separator.js +2 -2
  35. package/breadcrumb/breadcrumb.js +2 -2
  36. package/breadcrumb/index.d.ts +13 -6
  37. package/breadcrumb/index.js +13 -6
  38. package/button/button.js +109 -65
  39. package/button/index.d.ts +3 -1
  40. package/button/index.js +3 -1
  41. package/calendar/calendar.js +368 -290
  42. package/calendar/index.d.ts +3 -1
  43. package/calendar/index.js +3 -1
  44. package/checkbox/checkbox-group.js +146 -87
  45. package/checkbox/checkbox.js +232 -167
  46. package/checkbox/index.d.ts +5 -2
  47. package/checkbox/index.js +5 -2
  48. package/collapsible/collapsible.js +210 -132
  49. package/collapsible/index.d.ts +3 -1
  50. package/collapsible/index.js +3 -1
  51. package/combobox/combobox.js +318 -252
  52. package/combobox/index.d.ts +3 -1
  53. package/combobox/index.js +3 -1
  54. package/command/command-empty.js +67 -25
  55. package/command/command-group.js +87 -47
  56. package/command/command-input.js +84 -44
  57. package/command/command-item.js +168 -124
  58. package/command/command-list.js +60 -18
  59. package/command/command-separator.js +2 -2
  60. package/command/command-shortcut.js +2 -2
  61. package/command/command.js +297 -232
  62. package/command/index.d.ts +17 -8
  63. package/command/index.js +17 -8
  64. package/data-table/data-table.js +225 -153
  65. package/data-table/index.d.ts +3 -1
  66. package/data-table/index.js +3 -1
  67. package/dialog/dialog-close.js +2 -2
  68. package/dialog/dialog-popup.js +247 -181
  69. package/dialog/dialog-trigger.js +2 -2
  70. package/dialog/dialog.js +128 -73
  71. package/dialog/index.d.ts +9 -4
  72. package/dialog/index.js +9 -4
  73. package/dropzone/dropzone.js +310 -249
  74. package/dropzone/index.d.ts +3 -1
  75. package/dropzone/index.js +3 -1
  76. package/icon/icon.js +2 -2
  77. package/icon/index.d.ts +3 -1
  78. package/icon/index.js +3 -1
  79. package/input/index.d.ts +3 -1
  80. package/input/index.js +3 -1
  81. package/input/input.js +204 -143
  82. package/link/index.d.ts +3 -1
  83. package/link/index.js +3 -1
  84. package/link/link.js +62 -24
  85. package/menu/index.d.ts +5 -2
  86. package/menu/index.js +5 -2
  87. package/menu/menu-item.js +66 -24
  88. package/menu/menu.js +189 -136
  89. package/menubar/index.d.ts +3 -1
  90. package/menubar/index.js +3 -1
  91. package/menubar/menubar.js +142 -91
  92. package/number-field/index.d.ts +3 -1
  93. package/number-field/index.js +3 -1
  94. package/number-field/number-field.js +277 -204
  95. package/package.json +5 -4
  96. package/popover/index.d.ts +9 -4
  97. package/popover/index.js +9 -4
  98. package/popover/popover-close.js +2 -2
  99. package/popover/popover-popup.js +126 -76
  100. package/popover/popover-trigger.js +2 -2
  101. package/popover/popover.js +181 -120
  102. package/portal/index.d.ts +3 -1
  103. package/portal/index.js +3 -1
  104. package/portal/portal.js +128 -86
  105. package/preview-card/index.d.ts +7 -3
  106. package/preview-card/index.js +7 -3
  107. package/preview-card/preview-card-popup.js +114 -66
  108. package/preview-card/preview-card-trigger.js +2 -2
  109. package/preview-card/preview-card.js +211 -142
  110. package/progress/index.d.ts +3 -1
  111. package/progress/index.js +3 -1
  112. package/progress/progress.js +91 -45
  113. package/radio/index.d.ts +5 -2
  114. package/radio/index.js +5 -2
  115. package/radio/radio-group.js +153 -90
  116. package/radio/radio.js +137 -94
  117. package/scroll-area/index.d.ts +3 -1
  118. package/scroll-area/index.js +3 -1
  119. package/scroll-area/scroll-area.js +382 -276
  120. package/select/index.d.ts +3 -1
  121. package/select/index.js +3 -1
  122. package/select/select.js +260 -203
  123. package/separator/index.d.ts +3 -1
  124. package/separator/index.js +3 -1
  125. package/separator/separator.js +60 -18
  126. package/sidebar/index.d.ts +27 -13
  127. package/sidebar/index.js +32 -13
  128. package/sidebar/sidebar-content.js +2 -2
  129. package/sidebar/sidebar-footer.js +2 -2
  130. package/sidebar/sidebar-group-label.js +2 -2
  131. package/sidebar/sidebar-group.js +2 -2
  132. package/sidebar/sidebar-header.js +2 -2
  133. package/sidebar/sidebar-inset.js +2 -2
  134. package/sidebar/sidebar-menu-button.js +118 -74
  135. package/sidebar/sidebar-menu-item.js +2 -2
  136. package/sidebar/sidebar-menu.js +2 -2
  137. package/sidebar/sidebar-provider.js +202 -129
  138. package/sidebar/sidebar-separator.js +2 -2
  139. package/sidebar/sidebar-trigger.js +2 -2
  140. package/sidebar/sidebar.js +150 -85
  141. package/slider/index.d.ts +3 -1
  142. package/slider/index.js +3 -1
  143. package/slider/slider.js +217 -159
  144. package/spinner/index.d.ts +3 -1
  145. package/spinner/index.js +3 -1
  146. package/spinner/spinner.js +70 -28
  147. package/switch/index.d.ts +3 -1
  148. package/switch/index.js +3 -1
  149. package/switch/switch.js +174 -111
  150. package/tabs/index.d.ts +11 -5
  151. package/tabs/index.js +11 -5
  152. package/tabs/tab.js +89 -47
  153. package/tabs/tabs-indicator.js +2 -2
  154. package/tabs/tabs-list.js +92 -54
  155. package/tabs/tabs-panel.js +90 -44
  156. package/tabs/tabs.js +130 -71
  157. package/textarea/index.d.ts +3 -1
  158. package/textarea/index.js +3 -1
  159. package/textarea/textarea.js +153 -95
  160. package/toggle/index.d.ts +5 -2
  161. package/toggle/index.js +5 -2
  162. package/toggle/toggle-group.js +184 -125
  163. package/toggle/toggle.js +131 -76
  164. package/toolbar/index.d.ts +3 -1
  165. package/toolbar/index.js +3 -1
  166. package/toolbar/toolbar.js +79 -33
  167. package/tooltip/index.d.ts +7 -3
  168. package/tooltip/index.js +7 -3
  169. package/tooltip/tooltip-popup.js +108 -60
  170. package/tooltip/tooltip-trigger.js +93 -55
  171. package/tooltip/tooltip.js +225 -154
  172. package/trunc/index.d.ts +3 -1
  173. package/trunc/index.js +3 -1
  174. package/trunc/trunc.js +78 -34
  175. package/accordion/register.d.ts +0 -1
  176. package/accordion/register.js +0 -8
  177. package/alert-dialog/register.d.ts +0 -1
  178. package/alert-dialog/register.js +0 -16
  179. package/avatar/register.d.ts +0 -1
  180. package/avatar/register.js +0 -4
  181. package/badge/register.d.ts +0 -1
  182. package/badge/register.js +0 -4
  183. package/breadcrumb/register.d.ts +0 -1
  184. package/breadcrumb/register.js +0 -14
  185. package/button/register.d.ts +0 -1
  186. package/button/register.js +0 -4
  187. package/calendar/register.d.ts +0 -1
  188. package/calendar/register.js +0 -4
  189. package/checkbox/register.d.ts +0 -1
  190. package/checkbox/register.js +0 -8
  191. package/collapsible/register.d.ts +0 -1
  192. package/collapsible/register.js +0 -4
  193. package/combobox/register.d.ts +0 -1
  194. package/combobox/register.js +0 -4
  195. package/command/register.d.ts +0 -1
  196. package/command/register.js +0 -22
  197. package/data-table/register.d.ts +0 -1
  198. package/data-table/register.js +0 -4
  199. package/dialog/register.d.ts +0 -1
  200. package/dialog/register.js +0 -16
  201. package/dropzone/register.d.ts +0 -1
  202. package/dropzone/register.js +0 -4
  203. package/icon/register.d.ts +0 -1
  204. package/icon/register.js +0 -4
  205. package/input/register.d.ts +0 -1
  206. package/input/register.js +0 -4
  207. package/link/register.d.ts +0 -1
  208. package/link/register.js +0 -4
  209. package/menu/register.d.ts +0 -1
  210. package/menu/register.js +0 -8
  211. package/menubar/register.d.ts +0 -1
  212. package/menubar/register.js +0 -4
  213. package/number-field/register.d.ts +0 -1
  214. package/number-field/register.js +0 -4
  215. package/popover/register.d.ts +0 -1
  216. package/popover/register.js +0 -16
  217. package/portal/register.d.ts +0 -1
  218. package/portal/register.js +0 -4
  219. package/preview-card/register.d.ts +0 -1
  220. package/preview-card/register.js +0 -12
  221. package/progress/register.d.ts +0 -1
  222. package/progress/register.js +0 -4
  223. package/radio/register.d.ts +0 -1
  224. package/radio/register.js +0 -8
  225. package/scroll-area/register.d.ts +0 -1
  226. package/scroll-area/register.js +0 -4
  227. package/select/register.d.ts +0 -1
  228. package/select/register.js +0 -4
  229. package/separator/register.d.ts +0 -1
  230. package/separator/register.js +0 -4
  231. package/sidebar/register.d.ts +0 -1
  232. package/sidebar/register.js +0 -52
  233. package/slider/register.d.ts +0 -1
  234. package/slider/register.js +0 -4
  235. package/spinner/register.d.ts +0 -1
  236. package/spinner/register.js +0 -4
  237. package/switch/register.d.ts +0 -1
  238. package/switch/register.js +0 -4
  239. package/tabs/register.d.ts +0 -1
  240. package/tabs/register.js +0 -10
  241. package/textarea/register.d.ts +0 -1
  242. package/textarea/register.js +0 -4
  243. package/toggle/register.d.ts +0 -1
  244. package/toggle/register.js +0 -8
  245. package/toolbar/register.d.ts +0 -1
  246. package/toolbar/register.js +0 -4
  247. package/tooltip/register.d.ts +0 -1
  248. package/tooltip/register.js +0 -12
  249. package/trunc/register.d.ts +0 -1
  250. package/trunc/register.js +0 -4
package/menu/menu.js CHANGED
@@ -1,5 +1,44 @@
1
1
  /** Ported from original DUI: deep-future-app/app/client/components/dui/menu */
2
+ var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
3
+ function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
4
+ var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
5
+ var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
6
+ var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
7
+ var _, done = false;
8
+ for (var i = decorators.length - 1; i >= 0; i--) {
9
+ var context = {};
10
+ for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
11
+ for (var p in contextIn.access) context.access[p] = contextIn.access[p];
12
+ context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
13
+ var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
14
+ if (kind === "accessor") {
15
+ if (result === void 0) continue;
16
+ if (result === null || typeof result !== "object") throw new TypeError("Object expected");
17
+ if (_ = accept(result.get)) descriptor.get = _;
18
+ if (_ = accept(result.set)) descriptor.set = _;
19
+ if (_ = accept(result.init)) initializers.unshift(_);
20
+ }
21
+ else if (_ = accept(result)) {
22
+ if (kind === "field") initializers.unshift(_);
23
+ else descriptor[key] = _;
24
+ }
25
+ }
26
+ if (target) Object.defineProperty(target, contextIn.name, descriptor);
27
+ done = true;
28
+ };
29
+ var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
30
+ var useValue = arguments.length > 2;
31
+ for (var i = 0; i < initializers.length; i++) {
32
+ value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
33
+ }
34
+ return useValue ? value : void 0;
35
+ };
36
+ var __setFunctionName = (this && this.__setFunctionName) || function (f, name, prefix) {
37
+ if (typeof name === "symbol") name = name.description ? "[".concat(name.description, "]") : "";
38
+ return Object.defineProperty(f, "name", { configurable: true, value: prefix ? "".concat(prefix, " ", name) : name });
39
+ };
2
40
  import { css, html, LitElement } from "lit";
41
+ import { state } from "lit/decorators.js";
3
42
  import { base } from "@deepfuture/dui-core/base";
4
43
  import { FloatingPortalController } from "@deepfuture/dui-core/floating-portal-controller";
5
44
  import { DuiMenuItem } from "./menu-item.js";
@@ -39,31 +78,43 @@ const portalPopupStyles = [
39
78
  * @slot trigger - The element that opens the menu on click.
40
79
  * @slot default - `dui-menu-item` children rendered inside the popup.
41
80
  */
42
- export class DuiMenu extends LitElement {
43
- static { this.tagName = "dui-menu"; }
44
- static { this.styles = [base, hostStyles, componentStyles]; }
45
- #highlightedIndex_accessor_storage = -1;
46
- get #highlightedIndex() { return this.#highlightedIndex_accessor_storage; }
47
- set #highlightedIndex(value) { this.#highlightedIndex_accessor_storage = value; }
48
- #getTriggerElement = () => {
49
- const slot = this.shadowRoot?.querySelector('slot[name="trigger"]');
50
- return slot?.assignedElements()?.[0];
51
- };
52
- #popup = new FloatingPortalController(this, {
53
- getAnchor: () => this.#getTriggerElement() ?? this,
54
- matchWidth: false,
55
- styles: portalPopupStyles,
56
- contentContainer: ".Menu",
57
- contentSelector: "dui-menu-item",
58
- onOpen: () => {
59
- this.#highlightedIndex = -1;
60
- this.#getTriggerElement()?.setAttribute("data-open", "");
61
- },
62
- onClose: () => {
63
- this.#highlightedIndex = -1;
64
- this.#getTriggerElement()?.removeAttribute("data-open");
65
- },
66
- renderPopup: (portal) => html `
81
+ let DuiMenu = (() => {
82
+ let _classSuper = LitElement;
83
+ let _private_highlightedIndex_decorators;
84
+ let _private_highlightedIndex_initializers = [];
85
+ let _private_highlightedIndex_extraInitializers = [];
86
+ let _private_highlightedIndex_descriptor;
87
+ return class DuiMenu extends _classSuper {
88
+ static {
89
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
90
+ _private_highlightedIndex_decorators = [state()];
91
+ __esDecorate(this, _private_highlightedIndex_descriptor = { get: __setFunctionName(function () { return this.#highlightedIndex_accessor_storage; }, "#highlightedIndex", "get"), set: __setFunctionName(function (value) { this.#highlightedIndex_accessor_storage = value; }, "#highlightedIndex", "set") }, _private_highlightedIndex_decorators, { kind: "accessor", name: "#highlightedIndex", static: false, private: true, access: { has: obj => #highlightedIndex in obj, get: obj => obj.#highlightedIndex, set: (obj, value) => { obj.#highlightedIndex = value; } }, metadata: _metadata }, _private_highlightedIndex_initializers, _private_highlightedIndex_extraInitializers);
92
+ if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
93
+ }
94
+ static tagName = "dui-menu";
95
+ static styles = [base, hostStyles, componentStyles];
96
+ #highlightedIndex_accessor_storage = __runInitializers(this, _private_highlightedIndex_initializers, -1);
97
+ get #highlightedIndex() { return _private_highlightedIndex_descriptor.get.call(this); }
98
+ set #highlightedIndex(value) { return _private_highlightedIndex_descriptor.set.call(this, value); }
99
+ #getTriggerElement = (__runInitializers(this, _private_highlightedIndex_extraInitializers), () => {
100
+ const slot = this.shadowRoot?.querySelector('slot[name="trigger"]');
101
+ return slot?.assignedElements()?.[0];
102
+ });
103
+ #popup = new FloatingPortalController(this, {
104
+ getAnchor: () => this.#getTriggerElement() ?? this,
105
+ matchWidth: false,
106
+ styles: portalPopupStyles,
107
+ contentContainer: ".Menu",
108
+ contentSelector: "dui-menu-item",
109
+ onOpen: () => {
110
+ this.#highlightedIndex = -1;
111
+ this.#getTriggerElement()?.setAttribute("data-open", "");
112
+ },
113
+ onClose: () => {
114
+ this.#highlightedIndex = -1;
115
+ this.#getTriggerElement()?.removeAttribute("data-open");
116
+ },
117
+ renderPopup: (portal) => html `
67
118
  <div
68
119
  class="Popup"
69
120
  ?data-starting-style="${portal.isStarting}"
@@ -78,130 +129,130 @@ export class DuiMenu extends LitElement {
78
129
  ></div>
79
130
  </div>
80
131
  `,
81
- });
82
- #menuId = `menu-${crypto.randomUUID().slice(0, 8)}`;
83
- get #items() {
84
- const container = this.#popup.renderRoot?.querySelector(".Menu") ?? this;
85
- return [...container.querySelectorAll("dui-menu-item")];
86
- }
87
- updated() {
88
- const items = this.#items;
89
- for (let i = 0; i < items.length; i++) {
90
- if (i === this.#highlightedIndex) {
91
- items[i].setAttribute("data-highlighted", "");
92
- }
93
- else {
94
- items[i].removeAttribute("data-highlighted");
95
- }
96
- }
97
- }
98
- #togglePopup() {
99
- if (this.#popup.isOpen) {
100
- this.#popup.close();
101
- }
102
- else {
103
- this.#popup.open();
132
+ });
133
+ #menuId = `menu-${crypto.randomUUID().slice(0, 8)}`;
134
+ get #items() {
135
+ const container = this.#popup.renderRoot?.querySelector(".Menu") ?? this;
136
+ return [...container.querySelectorAll("dui-menu-item")];
104
137
  }
105
- }
106
- #onTriggerClick = (event) => {
107
- event.stopPropagation();
108
- event.preventDefault();
109
- this.#togglePopup();
110
- };
111
- #onItemSlotClick = (event) => {
112
- const item = event
113
- .composedPath()
114
- .find((el) => el instanceof HTMLElement && el.matches(DuiMenuItem.tagName));
115
- if (item && !item.disabled) {
116
- this.#popup.close();
117
- }
118
- };
119
- #onKeyDown = (event) => {
120
- const items = this.#items;
121
- switch (event.key) {
122
- case "ArrowDown": {
123
- event.preventDefault();
124
- if (!this.#popup.isOpen) {
125
- this.#popup.open();
138
+ updated() {
139
+ const items = this.#items;
140
+ for (let i = 0; i < items.length; i++) {
141
+ if (i === this.#highlightedIndex) {
142
+ items[i].setAttribute("data-highlighted", "");
126
143
  }
127
144
  else {
128
- let next = this.#highlightedIndex + 1;
129
- while (next < items.length && items[next]?.disabled)
130
- next++;
131
- if (next < items.length)
132
- this.#highlightedIndex = next;
145
+ items[i].removeAttribute("data-highlighted");
133
146
  }
134
- break;
135
147
  }
136
- case "ArrowUp": {
137
- event.preventDefault();
138
- if (!this.#popup.isOpen) {
139
- this.#popup.open();
140
- }
141
- else {
142
- let prev = this.#highlightedIndex - 1;
143
- while (prev >= 0 && items[prev]?.disabled)
144
- prev--;
145
- if (prev >= 0)
146
- this.#highlightedIndex = prev;
147
- }
148
- break;
148
+ }
149
+ #togglePopup() {
150
+ if (this.#popup.isOpen) {
151
+ this.#popup.close();
152
+ }
153
+ else {
154
+ this.#popup.open();
149
155
  }
150
- case "Home":
151
- if (this.#popup.isOpen) {
156
+ }
157
+ #onTriggerClick = (event) => {
158
+ event.stopPropagation();
159
+ event.preventDefault();
160
+ this.#togglePopup();
161
+ };
162
+ #onItemSlotClick = (event) => {
163
+ const item = event
164
+ .composedPath()
165
+ .find((el) => el instanceof HTMLElement && el.matches(DuiMenuItem.tagName));
166
+ if (item && !item.disabled) {
167
+ this.#popup.close();
168
+ }
169
+ };
170
+ #onKeyDown = (event) => {
171
+ const items = this.#items;
172
+ switch (event.key) {
173
+ case "ArrowDown": {
152
174
  event.preventDefault();
153
- const firstEnabled = items.findIndex((item) => !item.disabled);
154
- if (firstEnabled >= 0)
155
- this.#highlightedIndex = firstEnabled;
175
+ if (!this.#popup.isOpen) {
176
+ this.#popup.open();
177
+ }
178
+ else {
179
+ let next = this.#highlightedIndex + 1;
180
+ while (next < items.length && items[next]?.disabled)
181
+ next++;
182
+ if (next < items.length)
183
+ this.#highlightedIndex = next;
184
+ }
185
+ break;
156
186
  }
157
- break;
158
- case "End":
159
- if (this.#popup.isOpen) {
187
+ case "ArrowUp": {
160
188
  event.preventDefault();
161
- for (let i = items.length - 1; i >= 0; i--) {
162
- if (!items[i]?.disabled) {
163
- this.#highlightedIndex = i;
164
- break;
189
+ if (!this.#popup.isOpen) {
190
+ this.#popup.open();
191
+ }
192
+ else {
193
+ let prev = this.#highlightedIndex - 1;
194
+ while (prev >= 0 && items[prev]?.disabled)
195
+ prev--;
196
+ if (prev >= 0)
197
+ this.#highlightedIndex = prev;
198
+ }
199
+ break;
200
+ }
201
+ case "Home":
202
+ if (this.#popup.isOpen) {
203
+ event.preventDefault();
204
+ const firstEnabled = items.findIndex((item) => !item.disabled);
205
+ if (firstEnabled >= 0)
206
+ this.#highlightedIndex = firstEnabled;
207
+ }
208
+ break;
209
+ case "End":
210
+ if (this.#popup.isOpen) {
211
+ event.preventDefault();
212
+ for (let i = items.length - 1; i >= 0; i--) {
213
+ if (!items[i]?.disabled) {
214
+ this.#highlightedIndex = i;
215
+ break;
216
+ }
217
+ }
218
+ }
219
+ break;
220
+ case "Enter":
221
+ case " ": {
222
+ if (this.#popup.isOpen && this.#highlightedIndex >= 0) {
223
+ event.preventDefault();
224
+ const item = items[this.#highlightedIndex];
225
+ if (item && !item.disabled) {
226
+ item.click();
227
+ this.#popup.close();
165
228
  }
166
229
  }
230
+ else if (!this.#popup.isOpen) {
231
+ event.preventDefault();
232
+ this.#popup.open();
233
+ }
234
+ break;
167
235
  }
168
- break;
169
- case "Enter":
170
- case " ": {
171
- if (this.#popup.isOpen && this.#highlightedIndex >= 0) {
172
- event.preventDefault();
173
- const item = items[this.#highlightedIndex];
174
- if (item && !item.disabled) {
175
- item.click();
236
+ case "Escape":
237
+ if (this.#popup.isOpen) {
238
+ event.preventDefault();
176
239
  this.#popup.close();
177
240
  }
178
- }
179
- else if (!this.#popup.isOpen) {
180
- event.preventDefault();
181
- this.#popup.open();
182
- }
183
- break;
241
+ break;
242
+ case "Tab":
243
+ if (this.#popup.isOpen) {
244
+ this.#popup.close();
245
+ }
246
+ break;
184
247
  }
185
- case "Escape":
186
- if (this.#popup.isOpen) {
187
- event.preventDefault();
188
- this.#popup.close();
189
- }
190
- break;
191
- case "Tab":
192
- if (this.#popup.isOpen) {
193
- this.#popup.close();
194
- }
195
- break;
196
- }
197
- };
198
- #onMenuMouseMove = () => {
199
- if (this.#highlightedIndex >= 0) {
200
- this.#highlightedIndex = -1;
201
- }
202
- };
203
- render() {
204
- return html `
248
+ };
249
+ #onMenuMouseMove = () => {
250
+ if (this.#highlightedIndex >= 0) {
251
+ this.#highlightedIndex = -1;
252
+ }
253
+ };
254
+ render() {
255
+ return html `
205
256
  <div
206
257
  class="Trigger"
207
258
  aria-haspopup="menu"
@@ -213,5 +264,7 @@ export class DuiMenu extends LitElement {
213
264
  <slot name="trigger"></slot>
214
265
  </div>
215
266
  `;
216
- }
217
- }
267
+ }
268
+ };
269
+ })();
270
+ export { DuiMenu };
@@ -1,2 +1,4 @@
1
- export { DuiMenubar } from "./menubar.js";
1
+ import { DuiMenubar } from "./menubar.js";
2
+ export { DuiMenubar };
2
3
  export type { MenubarContext } from "./menubar-context.js";
4
+ export declare const menubarFamily: (typeof DuiMenubar)[];
package/menubar/index.js CHANGED
@@ -1 +1,3 @@
1
- export { DuiMenubar } from "./menubar.js";
1
+ import { DuiMenubar } from "./menubar.js";
2
+ export { DuiMenubar };
3
+ export const menubarFamily = [DuiMenubar];
@@ -1,8 +1,40 @@
1
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
- return c > 3 && r && Object.defineProperty(target, key, r), r;
1
+ var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
2
+ function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
3
+ var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
4
+ var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
5
+ var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
6
+ var _, done = false;
7
+ for (var i = decorators.length - 1; i >= 0; i--) {
8
+ var context = {};
9
+ for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
10
+ for (var p in contextIn.access) context.access[p] = contextIn.access[p];
11
+ context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
12
+ var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
13
+ if (kind === "accessor") {
14
+ if (result === void 0) continue;
15
+ if (result === null || typeof result !== "object") throw new TypeError("Object expected");
16
+ if (_ = accept(result.get)) descriptor.get = _;
17
+ if (_ = accept(result.set)) descriptor.set = _;
18
+ if (_ = accept(result.init)) initializers.unshift(_);
19
+ }
20
+ else if (_ = accept(result)) {
21
+ if (kind === "field") initializers.unshift(_);
22
+ else descriptor[key] = _;
23
+ }
24
+ }
25
+ if (target) Object.defineProperty(target, contextIn.name, descriptor);
26
+ done = true;
27
+ };
28
+ var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
29
+ var useValue = arguments.length > 2;
30
+ for (var i = 0; i < initializers.length; i++) {
31
+ value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
32
+ }
33
+ return useValue ? value : void 0;
34
+ };
35
+ var __setFunctionName = (this && this.__setFunctionName) || function (f, name, prefix) {
36
+ if (typeof name === "symbol") name = name.description ? "[".concat(name.description, "]") : "";
37
+ return Object.defineProperty(f, "name", { configurable: true, value: prefix ? "".concat(prefix, " ", name) : name });
6
38
  };
7
39
  import { css, html, LitElement } from "lit";
8
40
  import { property, state } from "lit/decorators.js";
@@ -34,85 +66,112 @@ const styles = css `
34
66
  * @slot - `dui-menu` children.
35
67
  * @csspart root - The menubar container.
36
68
  */
37
- export class DuiMenubar extends LitElement {
38
- static { this.tagName = "dui-menubar"; }
39
- static { this.styles = [base, styles]; }
40
- #loop_accessor_storage = true;
41
- get loop() { return this.#loop_accessor_storage; }
42
- set loop(value) { this.#loop_accessor_storage = value; }
43
- #orientation_accessor_storage = "horizontal";
44
- get orientation() { return this.#orientation_accessor_storage; }
45
- set orientation(value) { this.#orientation_accessor_storage = value; }
46
- #activeMenuId_accessor_storage = null;
47
- get #activeMenuId() { return this.#activeMenuId_accessor_storage; }
48
- set #activeMenuId(value) { this.#activeMenuId_accessor_storage = value; }
49
- #getMenus() {
50
- return [...this.querySelectorAll("dui-menu")];
51
- }
52
- #openMenu = (id) => {
53
- this.#activeMenuId = id;
54
- };
55
- #closeAll = () => {
56
- this.#activeMenuId = null;
57
- };
58
- #navigateToMenu = (direction) => {
59
- const menus = this.#getMenus();
60
- if (menus.length === 0)
61
- return;
62
- const currentIndex = menus.findIndex((m) => m.getAttribute("data-menubar-id") === this.#activeMenuId);
63
- let nextIndex;
64
- if (direction === "next") {
65
- nextIndex = currentIndex + 1;
66
- if (nextIndex >= menus.length) {
67
- nextIndex = this.loop ? 0 : menus.length - 1;
68
- }
69
+ let DuiMenubar = (() => {
70
+ let _classSuper = LitElement;
71
+ let _loop_decorators;
72
+ let _loop_initializers = [];
73
+ let _loop_extraInitializers = [];
74
+ let _orientation_decorators;
75
+ let _orientation_initializers = [];
76
+ let _orientation_extraInitializers = [];
77
+ let _private_activeMenuId_decorators;
78
+ let _private_activeMenuId_initializers = [];
79
+ let _private_activeMenuId_extraInitializers = [];
80
+ let _private_activeMenuId_descriptor;
81
+ let __ctx_decorators;
82
+ let __ctx_initializers = [];
83
+ let __ctx_extraInitializers = [];
84
+ return class DuiMenubar extends _classSuper {
85
+ static {
86
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
87
+ _loop_decorators = [property({ type: Boolean })];
88
+ _orientation_decorators = [property({ reflect: true })];
89
+ _private_activeMenuId_decorators = [state()];
90
+ __ctx_decorators = [provide({ context: menubarContext }), state()];
91
+ __esDecorate(this, null, _loop_decorators, { kind: "accessor", name: "loop", static: false, private: false, access: { has: obj => "loop" in obj, get: obj => obj.loop, set: (obj, value) => { obj.loop = value; } }, metadata: _metadata }, _loop_initializers, _loop_extraInitializers);
92
+ __esDecorate(this, null, _orientation_decorators, { kind: "accessor", name: "orientation", static: false, private: false, access: { has: obj => "orientation" in obj, get: obj => obj.orientation, set: (obj, value) => { obj.orientation = value; } }, metadata: _metadata }, _orientation_initializers, _orientation_extraInitializers);
93
+ __esDecorate(this, _private_activeMenuId_descriptor = { get: __setFunctionName(function () { return this.#activeMenuId_accessor_storage; }, "#activeMenuId", "get"), set: __setFunctionName(function (value) { this.#activeMenuId_accessor_storage = value; }, "#activeMenuId", "set") }, _private_activeMenuId_decorators, { kind: "accessor", name: "#activeMenuId", static: false, private: true, access: { has: obj => #activeMenuId in obj, get: obj => obj.#activeMenuId, set: (obj, value) => { obj.#activeMenuId = value; } }, metadata: _metadata }, _private_activeMenuId_initializers, _private_activeMenuId_extraInitializers);
94
+ __esDecorate(this, null, __ctx_decorators, { kind: "accessor", name: "_ctx", static: false, private: false, access: { has: obj => "_ctx" in obj, get: obj => obj._ctx, set: (obj, value) => { obj._ctx = value; } }, metadata: _metadata }, __ctx_initializers, __ctx_extraInitializers);
95
+ if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
69
96
  }
70
- else {
71
- nextIndex = currentIndex - 1;
72
- if (nextIndex < 0) {
73
- nextIndex = this.loop ? menus.length - 1 : 0;
74
- }
75
- }
76
- const nextMenu = menus[nextIndex];
77
- if (!nextMenu)
78
- return;
79
- const nextId = nextMenu.getAttribute("data-menubar-id");
80
- if (nextId) {
81
- this.#activeMenuId = nextId;
97
+ static tagName = "dui-menubar";
98
+ static styles = [base, styles];
99
+ #loop_accessor_storage = __runInitializers(this, _loop_initializers, true);
100
+ get loop() { return this.#loop_accessor_storage; }
101
+ set loop(value) { this.#loop_accessor_storage = value; }
102
+ #orientation_accessor_storage = (__runInitializers(this, _loop_extraInitializers), __runInitializers(this, _orientation_initializers, "horizontal"));
103
+ get orientation() { return this.#orientation_accessor_storage; }
104
+ set orientation(value) { this.#orientation_accessor_storage = value; }
105
+ #activeMenuId_accessor_storage = (__runInitializers(this, _orientation_extraInitializers), __runInitializers(this, _private_activeMenuId_initializers, null));
106
+ get #activeMenuId() { return _private_activeMenuId_descriptor.get.call(this); }
107
+ set #activeMenuId(value) { return _private_activeMenuId_descriptor.set.call(this, value); }
108
+ #getMenus() {
109
+ return [...this.querySelectorAll("dui-menu")];
82
110
  }
83
- // Focus the trigger of the next menu
84
- const trigger = nextMenu.querySelector('[slot="trigger"]');
85
- trigger?.focus();
86
- };
87
- #_ctx_accessor_storage = this.#buildContext();
88
- get _ctx() { return this.#_ctx_accessor_storage; }
89
- set _ctx(value) { this.#_ctx_accessor_storage = value; }
90
- #buildContext() {
91
- return {
92
- activeMenuId: this.#activeMenuId,
93
- openMenu: this.#openMenu,
94
- closeAll: this.#closeAll,
95
- navigateToMenu: this.#navigateToMenu,
111
+ #openMenu = (__runInitializers(this, _private_activeMenuId_extraInitializers), (id) => {
112
+ this.#activeMenuId = id;
113
+ });
114
+ #closeAll = () => {
115
+ this.#activeMenuId = null;
96
116
  };
97
- }
98
- willUpdate() {
99
- this._ctx = this.#buildContext();
100
- }
101
- #onKeyDown = (e) => {
102
- const isHorizontal = this.orientation === "horizontal";
103
- const nextKey = isHorizontal ? "ArrowRight" : "ArrowDown";
104
- const prevKey = isHorizontal ? "ArrowLeft" : "ArrowUp";
105
- if (e.key === nextKey) {
106
- e.preventDefault();
107
- this.#navigateToMenu("next");
117
+ #navigateToMenu = (direction) => {
118
+ const menus = this.#getMenus();
119
+ if (menus.length === 0)
120
+ return;
121
+ const currentIndex = menus.findIndex((m) => m.getAttribute("data-menubar-id") === this.#activeMenuId);
122
+ let nextIndex;
123
+ if (direction === "next") {
124
+ nextIndex = currentIndex + 1;
125
+ if (nextIndex >= menus.length) {
126
+ nextIndex = this.loop ? 0 : menus.length - 1;
127
+ }
128
+ }
129
+ else {
130
+ nextIndex = currentIndex - 1;
131
+ if (nextIndex < 0) {
132
+ nextIndex = this.loop ? menus.length - 1 : 0;
133
+ }
134
+ }
135
+ const nextMenu = menus[nextIndex];
136
+ if (!nextMenu)
137
+ return;
138
+ const nextId = nextMenu.getAttribute("data-menubar-id");
139
+ if (nextId) {
140
+ this.#activeMenuId = nextId;
141
+ }
142
+ // Focus the trigger of the next menu
143
+ const trigger = nextMenu.querySelector('[slot="trigger"]');
144
+ trigger?.focus();
145
+ };
146
+ #_ctx_accessor_storage = __runInitializers(this, __ctx_initializers, this.#buildContext());
147
+ get _ctx() { return this.#_ctx_accessor_storage; }
148
+ set _ctx(value) { this.#_ctx_accessor_storage = value; }
149
+ #buildContext() {
150
+ return {
151
+ activeMenuId: this.#activeMenuId,
152
+ openMenu: this.#openMenu,
153
+ closeAll: this.#closeAll,
154
+ navigateToMenu: this.#navigateToMenu,
155
+ };
108
156
  }
109
- else if (e.key === prevKey) {
110
- e.preventDefault();
111
- this.#navigateToMenu("prev");
157
+ willUpdate() {
158
+ this._ctx = this.#buildContext();
112
159
  }
113
- };
114
- render() {
115
- return html `
160
+ #onKeyDown = (__runInitializers(this, __ctx_extraInitializers), (e) => {
161
+ const isHorizontal = this.orientation === "horizontal";
162
+ const nextKey = isHorizontal ? "ArrowRight" : "ArrowDown";
163
+ const prevKey = isHorizontal ? "ArrowLeft" : "ArrowUp";
164
+ if (e.key === nextKey) {
165
+ e.preventDefault();
166
+ this.#navigateToMenu("next");
167
+ }
168
+ else if (e.key === prevKey) {
169
+ e.preventDefault();
170
+ this.#navigateToMenu("prev");
171
+ }
172
+ });
173
+ render() {
174
+ return html `
116
175
  <div
117
176
  part="root"
118
177
  role="menubar"
@@ -122,15 +181,7 @@ export class DuiMenubar extends LitElement {
122
181
  <slot></slot>
123
182
  </div>
124
183
  `;
125
- }
126
- }
127
- __decorate([
128
- property({ type: Boolean })
129
- ], DuiMenubar.prototype, "loop", null);
130
- __decorate([
131
- property({ reflect: true })
132
- ], DuiMenubar.prototype, "orientation", null);
133
- __decorate([
134
- provide({ context: menubarContext }),
135
- state()
136
- ], DuiMenubar.prototype, "_ctx", null);
184
+ }
185
+ };
186
+ })();
187
+ export { DuiMenubar };
@@ -1 +1,3 @@
1
- export { DuiNumberField, valueChangeEvent } from "./number-field.js";
1
+ import { DuiNumberField, valueChangeEvent } from "./number-field.js";
2
+ export { DuiNumberField, valueChangeEvent };
3
+ export declare const numberFieldFamily: (typeof DuiNumberField)[];
@@ -1 +1,3 @@
1
- export { DuiNumberField, valueChangeEvent } from "./number-field.js";
1
+ import { DuiNumberField, valueChangeEvent } from "./number-field.js";
2
+ export { DuiNumberField, valueChangeEvent };
3
+ export const numberFieldFamily = [DuiNumberField];