@api-client/ui 0.5.41 → 0.5.42

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@api-client/ui",
3
- "version": "0.5.41",
3
+ "version": "0.5.42",
4
4
  "description": "Internal UI component library for the API Client ecosystem.",
5
5
  "license": "UNLICENSED",
6
6
  "main": "build/src/index.js",
@@ -435,6 +435,7 @@ export class ContextualMenu<S = unknown> extends EventTarget {
435
435
  if (!this.currentMenu) {
436
436
  return
437
437
  }
438
+ const trigger = { ...this.triggerInfo } as MenuTriggerInfo
438
439
  ;(this.triggerInfo as MenuTriggerInfo).target.removeAttribute('active')
439
440
  this.triggerInfo = undefined
440
441
  const { workspace } = this
@@ -445,6 +446,25 @@ export class ContextualMenu<S = unknown> extends EventTarget {
445
446
  }
446
447
  this.currentMenu.removeEventListener('trigger', this.menuTriggerHandler as EventListener)
447
448
  this.currentMenu = undefined
449
+ this.afterClose(trigger)
450
+ }
451
+
452
+ protected afterClose(trigger: MenuTriggerInfo): void {
453
+ const { afterClose } = this.options
454
+ if (!afterClose) {
455
+ return
456
+ }
457
+ const context: MenuContext = {
458
+ store: this.store,
459
+ target: trigger.target || this.workspace,
460
+ root: this.workspace,
461
+ customData: trigger.customData,
462
+ }
463
+ try {
464
+ afterClose(context)
465
+ } catch {
466
+ // ...
467
+ }
448
468
  }
449
469
 
450
470
  /**
@@ -22,6 +22,10 @@ export interface MenuOptions {
22
22
  * before the menu is rendered.
23
23
  */
24
24
  beforeRender?: (ctx: MenuContext) => void
25
+ /**
26
+ * Called after the menu is closed.
27
+ */
28
+ afterClose?: (ctx: MenuContext) => void
25
29
  }
26
30
 
27
31
  export interface MenuPoint {