@eclipse-docks/core 0.7.122 → 0.7.125

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 (58) hide show
  1. package/dist/api/index.js +4 -4
  2. package/dist/{api-N5AbUtyH.js → api-CTU-FxEv.js} +35 -21
  3. package/dist/api-CTU-FxEv.js.map +1 -0
  4. package/dist/components/command.d.ts +2 -2
  5. package/dist/components/command.d.ts.map +1 -1
  6. package/dist/components/fastviews.d.ts +1 -1
  7. package/dist/components/fastviews.d.ts.map +1 -1
  8. package/dist/components/filebrowser.d.ts +3 -1
  9. package/dist/components/filebrowser.d.ts.map +1 -1
  10. package/dist/core/commandregistry.d.ts +2 -2
  11. package/dist/core/commandregistry.d.ts.map +1 -1
  12. package/dist/core/dropdown-menu-utils.d.ts +9 -0
  13. package/dist/core/dropdown-menu-utils.d.ts.map +1 -0
  14. package/dist/core/toast.d.ts.map +1 -1
  15. package/dist/externals/webawesome.d.ts.map +1 -1
  16. package/dist/externals/webawesome.js +1 -1
  17. package/dist/fs-access-CzOh5ot8.js +2 -0
  18. package/dist/{fs-access-D-fDaJ8V.js → fs-access-DTXPsV1W.js} +2 -2
  19. package/dist/{fs-access-D-fDaJ8V.js.map → fs-access-DTXPsV1W.js.map} +1 -1
  20. package/dist/index.js +4 -4
  21. package/dist/parts/contextmenu.d.ts +5 -4
  22. package/dist/parts/contextmenu.d.ts.map +1 -1
  23. package/dist/parts/index.js +1 -1
  24. package/dist/parts/tabs.d.ts +2 -2
  25. package/dist/parts/tabs.d.ts.map +1 -1
  26. package/dist/parts/toolbar.d.ts +2 -1
  27. package/dist/parts/toolbar.d.ts.map +1 -1
  28. package/dist/{parts-BvITdiV3.js → parts-BRaXx8PD.js} +95 -46
  29. package/dist/parts-BRaXx8PD.js.map +1 -0
  30. package/dist/{webawesome-CJyhVNu_.js → webawesome-Y1_HnKa_.js} +11 -1
  31. package/dist/{webawesome-CJyhVNu_.js.map → webawesome-Y1_HnKa_.js.map} +1 -1
  32. package/dist/{widget-DFbJNLqB.js → widget-DbLusgAH.js} +21 -27
  33. package/dist/widget-DbLusgAH.js.map +1 -0
  34. package/dist/widgets/index.js +1 -1
  35. package/dist/{widgets-CuO5lmjL.js → widgets-DnnSZhsi.js} +2 -2
  36. package/dist/{widgets-CuO5lmjL.js.map → widgets-DnnSZhsi.js.map} +1 -1
  37. package/package.json +5 -6
  38. package/src/components/command.ts +23 -9
  39. package/src/components/extensions.ts +2 -2
  40. package/src/components/fastviews.ts +1 -1
  41. package/src/components/filebrowser.ts +25 -10
  42. package/src/components/language-selector.ts +1 -1
  43. package/src/components/layout-switcher.ts +2 -2
  44. package/src/components/part-name.ts +1 -1
  45. package/src/core/commandregistry.ts +2 -2
  46. package/src/core/dropdown-menu-utils.ts +39 -0
  47. package/src/core/toast.ts +31 -8
  48. package/src/externals/webawesome.ts +10 -0
  49. package/src/layouts/standard-layout.ts +2 -2
  50. package/src/parts/contextmenu.ts +35 -9
  51. package/src/parts/part.ts +2 -2
  52. package/src/parts/tabs.ts +10 -10
  53. package/src/parts/toolbar.ts +5 -3
  54. package/src/vite-env.d.ts +0 -14
  55. package/dist/api-N5AbUtyH.js.map +0 -1
  56. package/dist/fs-access-CnQJX8W1.js +0 -2
  57. package/dist/parts-BvITdiV3.js.map +0 -1
  58. package/dist/widget-DFbJNLqB.js.map +0 -1
@@ -134,7 +134,7 @@ export class DocksLanguageSelector extends DocksElement {
134
134
  return html`
135
135
  <wa-button
136
136
  appearance="plain"
137
- size="small"
137
+ size="s"
138
138
  title="Current language: ${languageName}"
139
139
  @click=${() => showLanguageSelectorDialog()}>
140
140
  ${icon('language')}
@@ -46,12 +46,12 @@ export class DocksLayoutSwitcher extends DocksElement {
46
46
  <wa-dropdown
47
47
  placement="bottom-end"
48
48
  distance="4"
49
- size="small"
49
+ size="s"
50
50
  @wa-select=${this.handleSelect}>
51
51
  <wa-button
52
52
  slot="trigger"
53
53
  appearance="plain"
54
- size="small"
54
+ size="s"
55
55
  with-caret
56
56
  title="Switch layout (current: ${layoutName})">
57
57
  <wa-icon name="table-cells" label="Layout"></wa-icon>
@@ -32,7 +32,7 @@ export class DocksPartName extends DocksElement {
32
32
  return html`
33
33
  <wa-button
34
34
  appearance="plain"
35
- size="small"
35
+ size="s"
36
36
  title="${t.ACTIVE_PART}">
37
37
  ${icon(partIcon, { label: 'Part', slot: 'start' })}
38
38
  ${getActivePartDisplayName()}
@@ -1,6 +1,6 @@
1
1
  import logger from "./logger";
2
2
  import { publish } from "./events";
3
- import { CommandContribution, Contribution, contributionRegistry } from "./contributionregistry";
3
+ import { CommandContribution, contributionRegistry } from "./contributionregistry";
4
4
  import { rootContext } from "./di";
5
5
  import { activePartSignal, activeEditorSignal } from "./appstate";
6
6
 
@@ -225,7 +225,7 @@ rootContext.put("commandRegistry", commandRegistry);
225
225
  export interface RegisterOptions {
226
226
  command: Command,
227
227
  handler?: Handler,
228
- contribution?: Contribution
228
+ contribution?: Omit<CommandContribution, 'command'>,
229
229
  }
230
230
 
231
231
  export const registerAll = (options: RegisterOptions) => {
@@ -0,0 +1,39 @@
1
+ type DropdownItemElement = HTMLElement & { submenuOpen?: boolean };
2
+
3
+ function visitElementTree(root: Node, visit: (element: Element) => void): void {
4
+ if (root instanceof Element) {
5
+ visit(root);
6
+ if (root.shadowRoot) {
7
+ visitElementTree(root.shadowRoot, visit);
8
+ }
9
+ for (const child of root.children) {
10
+ visitElementTree(child, visit);
11
+ }
12
+ } else if (root instanceof DocumentFragment) {
13
+ for (const child of root.children) {
14
+ visitElementTree(child, visit);
15
+ }
16
+ }
17
+ }
18
+
19
+ /** Collect wa-dropdown-item elements under a menu root, including shadow DOM. */
20
+ export function collectDropdownItems(root: Element): DropdownItemElement[] {
21
+ const items: DropdownItemElement[] = [];
22
+ visitElementTree(root, (element) => {
23
+ if (element.localName === "wa-dropdown-item") {
24
+ items.push(element as DropdownItemElement);
25
+ }
26
+ });
27
+ return items;
28
+ }
29
+
30
+ /** Close every open submenu except the one being activated. */
31
+ export function closeSiblingSubmenus(activeItem: Element, menuRoot: Element): void {
32
+ queueMicrotask(() => {
33
+ for (const item of collectDropdownItems(menuRoot)) {
34
+ if (item !== activeItem && item.submenuOpen) {
35
+ item.submenuOpen = false;
36
+ }
37
+ }
38
+ });
39
+ }
package/src/core/toast.ts CHANGED
@@ -1,27 +1,50 @@
1
- import Toastify from 'toastify-js';
2
- import 'toastify-js/src/toastify.css';
1
+ import '@awesome.me/webawesome/dist/components/toast/toast.js';
3
2
  import { createLogger } from './logger';
4
3
 
5
4
  const logger = createLogger('Toast');
6
5
 
7
6
  const DURATION = 4000;
8
- const BASE = { duration: DURATION, gravity: 'bottom' as const, position: 'right' as const, close: true };
9
7
 
10
- const show = (msg: string, style: { background: string; color: string }) => {
11
- Toastify({ ...BASE, text: msg, style }).showToast();
8
+ type ToastVariant = 'brand' | 'danger' | 'warning';
9
+
10
+ type WaToastElement = HTMLElement & {
11
+ placement: string;
12
+ create(
13
+ message: string,
14
+ options?: {
15
+ variant?: ToastVariant | 'neutral' | 'success';
16
+ duration?: number;
17
+ },
18
+ ): Promise<HTMLElement>;
19
+ };
20
+
21
+ let toastStack: WaToastElement | null = null;
22
+
23
+ function getToastStack(): WaToastElement {
24
+ if (!toastStack) {
25
+ toastStack = document.createElement('wa-toast') as WaToastElement;
26
+ toastStack.placement = 'bottom-end';
27
+ document.body.append(toastStack);
28
+ }
29
+ return toastStack;
30
+ }
31
+
32
+ const show = (msg: string, variant: ToastVariant) => {
33
+ if (typeof document === 'undefined' || !document.body) return;
34
+ void getToastStack().create(msg, { variant, duration: DURATION });
12
35
  };
13
36
 
14
37
  export const toastInfo = (msg: string) => {
15
38
  logger.info(msg);
16
- show(msg, { background: 'var(--wa-color-brand-50)', color: 'var(--wa-color-brand-on)' });
39
+ show(msg, 'brand');
17
40
  };
18
41
 
19
42
  export const toastError = (msg: string) => {
20
43
  logger.error(msg);
21
- show(msg, { background: 'var(--wa-color-danger-50)', color: 'var(--wa-color-danger-on)' });
44
+ show(msg, 'danger');
22
45
  };
23
46
 
24
47
  export const toastWarning = (msg: string) => {
25
48
  logger.warn(msg);
26
- show(msg, { background: 'var(--wa-color-warning-50)', color: 'var(--wa-color-warning-on)' });
49
+ show(msg, 'warning');
27
50
  };
@@ -1,4 +1,6 @@
1
1
  // unfortunately, webawesome has no all-in-one import, so we need to import each component individually
2
+ import '@awesome.me/webawesome/dist/components/accordion/accordion.js';
3
+ import '@awesome.me/webawesome/dist/components/accordion-item/accordion-item.js';
2
4
  import '@awesome.me/webawesome/dist/components/animated-image/animated-image.js';
3
5
  import '@awesome.me/webawesome/dist/components/animation/animation.js';
4
6
  import '@awesome.me/webawesome/dist/components/avatar/avatar.js';
@@ -12,6 +14,7 @@ import '@awesome.me/webawesome/dist/components/card/card.js';
12
14
  import '@awesome.me/webawesome/dist/components/carousel/carousel.js';
13
15
  import '@awesome.me/webawesome/dist/components/carousel-item/carousel-item.js';
14
16
  import '@awesome.me/webawesome/dist/components/checkbox/checkbox.js';
17
+ import '@awesome.me/webawesome/dist/components/checkbox-group/checkbox-group.js';
15
18
  import '@awesome.me/webawesome/dist/components/color-picker/color-picker.js';
16
19
  import '@awesome.me/webawesome/dist/components/comparison/comparison.js';
17
20
  import '@awesome.me/webawesome/dist/components/copy-button/copy-button.js';
@@ -28,11 +31,14 @@ import '@awesome.me/webawesome/dist/components/icon/icon.js';
28
31
  import '@awesome.me/webawesome/dist/components/include/include.js';
29
32
  import '@awesome.me/webawesome/dist/components/input/input.js';
30
33
  import '@awesome.me/webawesome/dist/components/intersection-observer/intersection-observer.js';
34
+ import '@awesome.me/webawesome/dist/components/known-date/known-date.js';
31
35
  import '@awesome.me/webawesome/dist/components/markdown/markdown.js';
32
36
  import '@awesome.me/webawesome/dist/components/mutation-observer/mutation-observer.js';
33
37
  import '@awesome.me/webawesome/dist/components/number-input/number-input.js';
34
38
  import '@awesome.me/webawesome/dist/components/option/option.js';
39
+ import '@awesome.me/webawesome/dist/components/otp-input/otp-input.js';
35
40
  import '@awesome.me/webawesome/dist/components/page/page.js';
41
+ import '@awesome.me/webawesome/dist/components/pagination/pagination.js';
36
42
  import '@awesome.me/webawesome/dist/components/popover/popover.js';
37
43
  import '@awesome.me/webawesome/dist/components/popup/popup.js';
38
44
  import '@awesome.me/webawesome/dist/components/progress-bar/progress-bar.js';
@@ -41,6 +47,7 @@ import '@awesome.me/webawesome/dist/components/qr-code/qr-code.js';
41
47
  import '@awesome.me/webawesome/dist/components/radio/radio.js';
42
48
  import '@awesome.me/webawesome/dist/components/radio-group/radio-group.js';
43
49
  import '@awesome.me/webawesome/dist/components/rating/rating.js';
50
+ import '@awesome.me/webawesome/dist/components/random-content/random-content.js';
44
51
  import '@awesome.me/webawesome/dist/components/relative-time/relative-time.js';
45
52
  import '@awesome.me/webawesome/dist/components/resize-observer/resize-observer.js';
46
53
  import '@awesome.me/webawesome/dist/components/scroller/scroller.js';
@@ -55,6 +62,9 @@ import '@awesome.me/webawesome/dist/components/tab-group/tab-group.js';
55
62
  import '@awesome.me/webawesome/dist/components/tab-panel/tab-panel.js';
56
63
  import '@awesome.me/webawesome/dist/components/tag/tag.js';
57
64
  import '@awesome.me/webawesome/dist/components/textarea/textarea.js';
65
+ import '@awesome.me/webawesome/dist/components/time-input/time-input.js';
66
+ import '@awesome.me/webawesome/dist/components/toast/toast.js';
67
+ import '@awesome.me/webawesome/dist/components/toast-item/toast-item.js';
58
68
  import '@awesome.me/webawesome/dist/components/tooltip/tooltip.js';
59
69
  import '@awesome.me/webawesome/dist/components/tree/tree.js';
60
70
  import '@awesome.me/webawesome/dist/components/tree-item/tree-item.js';
@@ -139,11 +139,11 @@ export class DocksStandardLayout extends DocksContainer {
139
139
  id="left-sidebar-split"
140
140
  orientation="vertical"
141
141
  sizes="50%, 50%">
142
- <docks-tabs id="${SIDEBAR_MAIN}" placement="start" icon-only with-toolbar item-size="large"></docks-tabs>
142
+ <docks-tabs id="${SIDEBAR_MAIN}" placement="start" icon-only with-toolbar item-size="l"></docks-tabs>
143
143
  <docks-tabs id="${SIDEBAR_MAIN_BOTTOM}" placement="start" icon-only></docks-tabs>
144
144
  </docks-resizable-grid>
145
145
  `
146
- : html`<docks-tabs id="${SIDEBAR_MAIN}" placement="start" icon-only with-toolbar item-size="large"></docks-tabs>`
146
+ : html`<docks-tabs id="${SIDEBAR_MAIN}" placement="start" icon-only with-toolbar item-size="l"></docks-tabs>`
147
147
  }
148
148
  `
149
149
  : nothing
@@ -13,6 +13,7 @@ import {
13
13
  } from "../core/contributionregistry";
14
14
  import {unsafeHTML} from "lit/directives/unsafe-html.js";
15
15
  import {subscribe} from "../core/events";
16
+ import {closeSiblingSubmenus} from "../core/dropdown-menu-utils";
16
17
  import {createRef, ref} from "lit/directives/ref.js";
17
18
  import '../components/command';
18
19
 
@@ -75,8 +76,8 @@ export class DocksContextMenu extends DocksElement {
75
76
  });
76
77
  }
77
78
 
78
- protected updated(changedProperties: Map<string, unknown>) {
79
- super.updated?.(changedProperties);
79
+ protected willUpdate(changedProperties: Map<string, unknown>) {
80
+ super.willUpdate?.(changedProperties);
80
81
  if (changedProperties.has('scopeTokens')) {
81
82
  this.refreshContributions();
82
83
  }
@@ -173,6 +174,14 @@ export class DocksContextMenu extends DocksElement {
173
174
  return element;
174
175
  }
175
176
 
177
+ private getHostPart(): (HTMLElement & { updateComplete: Promise<boolean> }) | null {
178
+ const root = this.getRootNode();
179
+ if (root instanceof ShadowRoot && root.host instanceof HTMLElement) {
180
+ return root.host as HTMLElement & { updateComplete: Promise<boolean> };
181
+ }
182
+ return null;
183
+ }
184
+
176
185
  /**
177
186
  * Triggers a click on the element under the cursor to update selection before showing context menu.
178
187
  */
@@ -196,21 +205,35 @@ export class DocksContextMenu extends DocksElement {
196
205
  }
197
206
  }
198
207
 
208
+ private handleSubmenuOpening = (event: Event): void => {
209
+ const dropdown = this.dropdownRef.value;
210
+ const activeItem = (event as CustomEvent<{ item?: Element }>).detail?.item;
211
+ if (!dropdown || !activeItem) return;
212
+ closeSiblingSubmenus(activeItem, dropdown);
213
+ };
214
+
199
215
  /** Opens the menu at `position`. Returns false when there is nothing to show (no thin empty panel). */
200
- public show(position: { x: number, y: number }, mouseEvent?: MouseEvent): boolean {
216
+ public async show(position: { x: number, y: number }, mouseEvent?: MouseEvent): Promise<boolean> {
201
217
  if (!this.hasMenuBody()) return false;
202
218
  if (mouseEvent) {
203
219
  this.triggerClickUnderCursor(mouseEvent);
220
+ await this.getHostPart()?.updateComplete;
204
221
  }
222
+
223
+ if (this.isOpen) {
224
+ this.isOpen = false;
225
+ await this.updateComplete;
226
+ }
227
+
205
228
  this.position = position;
206
229
  this.isOpen = true;
207
- this.updateComplete.then(() => {
208
- document.addEventListener('pointerdown', this.boundHandleDocumentPointerDown, { capture: true });
209
- });
230
+ await this.updateComplete;
231
+ document.addEventListener('pointerdown', this.boundHandleDocumentPointerDown, { capture: true });
210
232
  return true;
211
233
  }
212
234
 
213
235
  private onClose() {
236
+ if (!this.isOpen) return;
214
237
  this.isOpen = false;
215
238
  document.removeEventListener('pointerdown', this.boundHandleDocumentPointerDown, { capture: true });
216
239
  }
@@ -242,14 +265,13 @@ export class DocksContextMenu extends DocksElement {
242
265
  }
243
266
 
244
267
  render() {
245
- if (!this.isOpen) return nothing;
246
-
247
268
  const partContent = this.partContextMenuRenderer ? this.partContextMenuRenderer() : nothing;
248
269
 
249
270
  return html`
250
271
  <wa-dropdown
251
272
  ${ref(this.dropdownRef)}
252
273
  ?open=${this.isOpen}
274
+ @submenu-opening=${this.handleSubmenuOpening}
253
275
  @wa-after-hide=${this.onClose}>
254
276
 
255
277
  <div
@@ -281,9 +303,13 @@ export class DocksContextMenu extends DocksElement {
281
303
  }
282
304
 
283
305
  wa-dropdown {
284
- pointer-events: auto;
306
+ pointer-events: none;
285
307
  min-width: 200px;
286
308
  }
309
+
310
+ wa-dropdown:state(open) {
311
+ pointer-events: auto;
312
+ }
287
313
 
288
314
  wa-dropdown::part(menu) {
289
315
  min-width: 200px;
package/src/parts/part.ts CHANGED
@@ -145,10 +145,10 @@ export abstract class DocksPart extends DocksContainer {
145
145
  return contributionKey ? `contextmenu:${contributionKey}` : undefined;
146
146
  }
147
147
 
148
- private onContentContextMenu = (event: MouseEvent): void => {
148
+ private onContentContextMenu = async (event: MouseEvent): Promise<void> => {
149
149
  const contextMenu = this.renderRoot.querySelector('docks-contextmenu') as DocksContextMenu | null;
150
150
  if (!contextMenu) return;
151
- if (contextMenu.show({ x: event.clientX, y: event.clientY }, event)) {
151
+ if (await contextMenu.show({ x: event.clientX, y: event.clientY }, event)) {
152
152
  event.preventDefault();
153
153
  }
154
154
  };
package/src/parts/tabs.ts CHANGED
@@ -45,9 +45,9 @@ export class DocksTabs extends DocksContainer {
45
45
  @property({ type: Boolean, reflect: true, attribute: 'hide-tabs' })
46
46
  hideTabs: boolean = false;
47
47
 
48
- /** Tab and nav-toolbar control sizing (`small` | `medium` | `large`). */
48
+ /** Tab and nav-toolbar control sizing (`s` | `m` | `l`). */
49
49
  @property({ reflect: true, attribute: 'item-size' })
50
- itemSize: 'small' | 'medium' | 'large' = 'medium';
50
+ itemSize: 's' | 'm' | 'l' = 'm';
51
51
 
52
52
  /** Tab contributions for this container */
53
53
  @state()
@@ -549,12 +549,12 @@ export class DocksTabs extends DocksContainer {
549
549
  font-size: var(--wa-font-size-s);
550
550
  }
551
551
 
552
- :host([item-size="small"]) wa-tab::part(base) {
552
+ :host([item-size="s"]) wa-tab::part(base) {
553
553
  padding: 2px 0.375rem;
554
554
  font-size: var(--wa-font-size-xs);
555
555
  }
556
556
 
557
- :host([item-size="large"]) wa-tab::part(base) {
557
+ :host([item-size="l"]) wa-tab::part(base) {
558
558
  padding: var(--wa-space-s) 0.75rem;
559
559
  font-size: var(--wa-font-size-m);
560
560
  }
@@ -567,11 +567,11 @@ export class DocksTabs extends DocksContainer {
567
567
  padding: var(--wa-space-s);
568
568
  }
569
569
 
570
- :host([icon-only][item-size="small"]:is([placement="top"], [placement="bottom"])) wa-tab::part(base) {
570
+ :host([icon-only][item-size="s"]:is([placement="top"], [placement="bottom"])) wa-tab::part(base) {
571
571
  padding: var(--wa-space-xs);
572
572
  }
573
573
 
574
- :host([icon-only][item-size="large"]:is([placement="top"], [placement="bottom"])) wa-tab::part(base) {
574
+ :host([icon-only][item-size="l"]:is([placement="top"], [placement="bottom"])) wa-tab::part(base) {
575
575
  padding: var(--wa-space-m);
576
576
  }
577
577
 
@@ -580,11 +580,11 @@ export class DocksTabs extends DocksContainer {
580
580
  padding-block: var(--wa-space-s);
581
581
  }
582
582
 
583
- :host([icon-only][item-size="small"]:is([placement="start"], [placement="end"])) wa-tab::part(base) {
583
+ :host([icon-only][item-size="s"]:is([placement="start"], [placement="end"])) wa-tab::part(base) {
584
584
  padding-block: var(--wa-space-xs);
585
585
  }
586
586
 
587
- :host([icon-only][item-size="large"]:is([placement="start"], [placement="end"])) wa-tab::part(base) {
587
+ :host([icon-only][item-size="l"]:is([placement="start"], [placement="end"])) wa-tab::part(base) {
588
588
  padding-block: var(--wa-space-m);
589
589
  }
590
590
 
@@ -592,11 +592,11 @@ export class DocksTabs extends DocksContainer {
592
592
  font-size: var(--wa-font-size-l);
593
593
  }
594
594
 
595
- :host([icon-only][item-size="small"]) wa-tab wa-icon {
595
+ :host([icon-only][item-size="s"]) wa-tab wa-icon {
596
596
  font-size: var(--wa-font-size-m);
597
597
  }
598
598
 
599
- :host([icon-only][item-size="large"]) wa-tab wa-icon {
599
+ :host([icon-only][item-size="l"]) wa-tab wa-icon {
600
600
  font-size: var(--wa-font-size-xl);
601
601
  }
602
602
 
@@ -56,7 +56,7 @@ export class DocksToolbar extends DocksElement {
56
56
  align: "start" | "center" | "end" = "start";
57
57
 
58
58
  @property({reflect: true})
59
- size: "small" | "medium" | "large" = "small";
59
+ size: "s" | "m" | "l" = "s";
60
60
 
61
61
  @property({attribute: false})
62
62
  scopeTokens: string[] = [];
@@ -83,7 +83,6 @@ export class DocksToolbar extends DocksElement {
83
83
  const trimmed = toolbarItems.scrollWidth > toolbarItems.clientWidth;
84
84
  if (this.compact !== trimmed) {
85
85
  this.compact = trimmed;
86
- this.requestUpdate();
87
86
  }
88
87
  }
89
88
 
@@ -123,6 +122,10 @@ export class DocksToolbar extends DocksElement {
123
122
  updated(changedProperties: Map<string, unknown>) {
124
123
  super.updated?.(changedProperties);
125
124
  if (!this.compact) this.scheduleOverflowCheck();
125
+ }
126
+
127
+ protected willUpdate(changedProperties: Map<string, unknown>) {
128
+ super.willUpdate?.(changedProperties);
126
129
  if (changedProperties.has('scopeTokens')) {
127
130
  this.refreshContributions();
128
131
  }
@@ -145,7 +148,6 @@ export class DocksToolbar extends DocksElement {
145
148
  const shouldReload = this.matchesTarget(id, event.target);
146
149
  if (shouldReload) {
147
150
  this.refreshContributions();
148
- this.requestUpdate()
149
151
  }
150
152
  })
151
153
  }
package/src/vite-env.d.ts CHANGED
@@ -18,17 +18,3 @@ declare const __RESOLVED_PACKAGE_INFO__: {
18
18
  marketplaceCatalogUrls?: string[];
19
19
  } | undefined;
20
20
 
21
- declare module 'toastify-js' {
22
- interface ToastifyOptions {
23
- text?: string;
24
- duration?: number;
25
- gravity?: 'top' | 'bottom';
26
- position?: 'left' | 'center' | 'right';
27
- close?: boolean;
28
- style?: { background?: string };
29
- className?: string;
30
- }
31
- function Toastify(options: ToastifyOptions): { showToast(): void };
32
- export default Toastify;
33
- }
34
-