{"version":3,"file":"tableau-ui-angular-menu.mjs","sources":["../../../projects/component-library/menu/src/menu.directive.ts","../../../projects/component-library/menu/src/attached-menu.directive.ts","../../../projects/component-library/menu/src/button-menu.directive.ts","../../../projects/component-library/menu/src/tableau-ui-menu.module.ts","../../../projects/component-library/menu/src/tableau-ui-angular-menu.ts"],"sourcesContent":["import type { ElementRef, ModelSignal, Signal, WritableSignal } from '@angular/core';\nimport { Directive, inject, input, model, output, signal, TemplateRef } from '@angular/core';\nimport type { DialogRef } from 'tableau-ui-angular/dialog';\nimport { DialogService, LocalStackOptions } from 'tableau-ui-angular/dialog';\n\n@Directive({\n  selector: 'ng-template[menu]',\n  standalone: false,\n  exportAs: 'menu',\n})\nexport class MenuDirective {\n  private readonly dialogService = inject(DialogService);\n  readonly template = inject<TemplateRef<unknown>>(TemplateRef);\n\n  // #region Inputs\n  /**\n   * The parent control to which the menu is attached to\n   * // nullable Signal type needs to be set explicitly -> ng-packagr strips nullability\n   */\n  readonly $parentControl: ModelSignal<ElementRef<HTMLElement> | undefined> = model<ElementRef<HTMLElement>>();\n\n  /**\n   * The CSS text to apply to the dropdown container\n   * @remarks\n   * Use this to apply height, maxHeight, etc. to the dropdown container\n   * @default '{}'\n   */\n  readonly $menuContainerCss = model<Record<string, string>>(\n    {\n      marginTop: '-1px',\n      background: 'var(--twc-color-base)',\n      borderColor: 'var(--twc-color-border-light)',\n      borderRadius: 'var(--twc-menu-border-radius)',\n      borderStyle: 'solid',\n      borderWidth: '1px',\n      boxShadow: 'var(--twc-dialog-box-shadow)',\n    },\n    {\n      alias: 'menuContainerCss',\n    },\n  );\n  // The default CSS text to apply to the dropdown container. This is used to set the default values for the menuContainerCss property.\n  private readonly defaultContainerCss: Record<string, string> = {\n    outline: 'none',\n    color: 'var(--twc-color-text)',\n    lineHeight: 'normal',\n    overFlowY: 'auto',\n    overFlowX: 'hidden',\n    userSelect: 'none',\n  };\n\n  /**\n   * The CSS text to apply to the backdrop container\n   * @remarks\n   * Use this to apply user-select: none, etc. to the backdrop container\n   * @default '{}'\n   */\n  readonly $backdropCss = model<Record<string, string>>(\n    {},\n    {\n      alias: 'backdropCss',\n    },\n  );\n\n  /**\n   * The minimum of the container\n   * @remarks\n   * Use 'parentWidth' to maintain the same width as the parent control\n   * Use any CSS width value (1rem, 12px, auto etc) to explicitly set width\n   * @default 'fit-content'\n   */\n  readonly $minWidth = input<string | 'parentWidth'>('auto', {\n    alias: 'minWidth',\n  });\n\n  /**\n   * The width of the container\n   * @remarks\n   * Use 'parentWidth' to maintain the same width as the parent control\n   * Use 'fit-content' to auto size the dropdown for the content\n   * Use any CSS width value (1rem, 12px, etc) to explicitly set width\n   * @default 'fit-content'\n   */\n  readonly $width = input<string | 'parentWidth'>('fit-content', {\n    alias: 'width',\n  });\n  /**\n   * The max width of the container\n   * @remarks\n   * Keep it undefined for default behavior\n   * Use any CSS width value (1rem, 12px, etc) to explicitly set maximum width\n   * @default 'undefined'\n   */\n  readonly $maxWidth = input<string | 'parentWidth'>('none', {\n    alias: 'maxWidth',\n  });\n\n  /**\n   * The minimum height of the container\n   * @remarks\n   * Use 'fit-content' to auto size the dropdown for the content\n   * Use any CSS height value (1rem, 12px, etc) to explicitly set height\n   * @default 'fit-content'\n   */\n  readonly $minHeight = input<string>('auto', {\n    alias: 'minHeight',\n  });\n\n  /**\n   * The height of the container\n   * @remarks\n   * Use 'fit-content' to auto size the dropdown for the content\n   * Use any CSS height value (1rem, 12px, etc) to explicitly set height\n   * @default 'fit-content'\n   */\n  readonly $height = input<string>('fit-content', {\n    alias: 'height',\n  });\n  /**\n   * The max height of the container\n   * @remarks\n   * Keep it undefined for default behavior\n   * Use any CSS height value (1rem, 12px, etc) to explicitly set maximum height\n   * @default 'undefined'\n   */\n  readonly $maxHeight = input<string>('auto', {\n    alias: 'maxHeight',\n  });\n\n  /**\n   * Close on backdrop click\n   * @remarks\n   * When true, the menu will close when the backdrop is clicked\n   * @default 'true'\n   */\n  readonly $closeOnBackdropClick = input(true, {\n    alias: 'closeOnBackdropClick',\n  });\n  /**\n   * Close on escape key press\n   * @remarks\n   * When true, the menu will close when the escape key is pressed\n   * @default 'true'\n   */\n  readonly $closeOnEscape = input(true, {\n    alias: 'closeOnEscape',\n  });\n\n  /**\n   * Trap focus within the menu\n   * @remarks\n   * When true, the focus will be trapped within the menu until it is closed\n   * @default 'true'\n   */\n  readonly $trapFocus = input(true, {\n    alias: 'trapFocus',\n  });\n  /**\n   * The location of the menu relative to the parent control\n   * @remarks\n   * The menu may be repositioned if page bounds are hit to the opposite side\n   * @default 'bottom'\n   */\n  readonly $menuLocation = input<'bottom' | 'left' | 'right' | 'top'>('bottom', {\n    alias: 'menuLocation',\n  });\n  // #endregion Inputs\n\n  // nullable Signal type needs to be set explicitly -> ng-packagr strips nullability\n  private readonly $_openDialog: WritableSignal<DialogRef | undefined> = signal<DialogRef | undefined>(undefined);\n  get $openDialog(): Signal<DialogRef | undefined> {\n    return this.$_openDialog;\n  }\n  readonly opened = output<DialogRef>();\n  readonly closed = output();\n\n  open(forceReOpen: boolean = false) {\n    const parentControl = this.$parentControl();\n    if (!parentControl) {\n      throw new Error('Parent control is not set. Please set the parent control before opening the menu.');\n    }\n    if (forceReOpen) {\n      this.$_openDialog()?.close();\n      this.$_openDialog.set(undefined);\n    }\n    if (this.$_openDialog()) {\n      return this.$_openDialog();\n    }\n    const ref = this.dialogService.openTemplateDialog(\n      this.template,\n      {\n        top: (_, actualHeight, parentRect) => {\n          switch (this.$menuLocation()) {\n            case 'top': {\n              const val = parentRect!.top - actualHeight;\n              if (val < 0 && parentRect!.bottom + actualHeight < window.innerHeight) {\n                return `${parentRect!.bottom}px`;\n              }\n              return `${parentRect!.top - actualHeight}px`;\n            }\n            case 'bottom': {\n              const val = parentRect!.bottom;\n              if (val + actualHeight > window.innerHeight && parentRect!.top - actualHeight > 0) {\n                return `${parentRect!.top - actualHeight}px`;\n              }\n              return `${val}px`;\n            }\n            case 'left':\n            case 'right': {\n              // the top parameter is the top parameter of the parent control by default\n              let { top } = parentRect!;\n              // if it is higher than the availale window\n              if (top + actualHeight > window.innerHeight) {\n                top = window.innerHeight - actualHeight;\n              }\n              top = Math.max(top, 0);\n              return `${top}px`;\n            }\n            default: {\n              throw new Error(`Invalid menu location: ${this.$menuLocation()}`);\n            }\n          }\n        },\n        left: (actualWidth, _, parentRect) => {\n          switch (this.$menuLocation()) {\n            case 'left': {\n              const val = parentRect!.left - actualWidth;\n              if (val < 0 && parentRect!.right + actualWidth < window.innerWidth) {\n                return `${parentRect!.right}px`;\n              }\n              return `${parentRect!.left - actualWidth}px`;\n            }\n            case 'right': {\n              const val = parentRect!.right;\n              if (val + actualWidth > window.innerWidth && parentRect!.left - actualWidth > 0) {\n                return `${parentRect!.left - actualWidth}px`;\n              }\n              return `${val}px`;\n            }\n            case 'top':\n            case 'bottom': {\n              // the left parameter is the left parameter of the parent control by default\n              let { left } = parentRect!;\n              // if it is wider than the availale window\n              if (left + actualWidth > window.innerWidth) {\n                left = window.innerWidth - actualWidth;\n              }\n              left = Math.max(left, 0);\n              return `${left}px`;\n            }\n            default: {\n              throw new Error(`Invalid menu location: ${this.$menuLocation()}`);\n            }\n          }\n        },\n\n        minWidth: parentRect => {\n          return this.$minWidth() === 'parentWidth' ? `${parentRect.width}px` : this.$minWidth();\n        },\n        width: parentRect => {\n          return this.$width() === 'parentWidth' ? `${parentRect.width}px` : this.$width();\n        },\n        maxWidth: parentRect => {\n          return this.$maxWidth() === 'parentWidth' ? `${parentRect.width}px` : this.$maxWidth();\n        },\n        closeOnBackdropClick: this.$closeOnBackdropClick(),\n        closeOnEscape: this.$closeOnEscape(),\n        trapFocus: this.$trapFocus(),\n        minHeight: this.$minHeight(),\n        height: this.$height(),\n        maxHeight: this.$maxHeight(),\n\n        containerCss: {\n          ...this.defaultContainerCss,\n          ...this.$menuContainerCss(),\n        },\n        backdropCss: this.$backdropCss(),\n      },\n      null,\n      new LocalStackOptions(parentControl.nativeElement),\n    );\n    ref.closed$.subscribe(() => {\n      if (this.$_openDialog() === ref) {\n        this.$_openDialog.set(undefined);\n        this.closed.emit();\n      }\n    });\n    this.$_openDialog.set(ref);\n    this.opened.emit(ref);\n    return ref;\n  }\n\n  close() {\n    this.$_openDialog()?.close();\n  }\n}\n","import { Directive, effect, ElementRef, inject, input } from '@angular/core';\nimport type { MenuDirective } from './menu.directive';\n\n@Directive({\n  selector: '[attachedMenu]',\n  standalone: false,\n})\nexport class AttachedMenuDirective {\n  private readonly el = inject<ElementRef<HTMLElement>>(ElementRef);\n  /**\n   * The menu that is attached to this directive.\n   */\n  readonly $menu = input.required<MenuDirective>({\n    alias: 'attachedMenu',\n  });\n\n  readonly $autoOpenClose = input(true, {\n    alias: 'autoOpenClose',\n  });\n\n  private readonly menuChanged = effect(() => {\n    this.$menu().$parentControl.set(this.el);\n  });\n  private readonly autoOpenCloseChanged = effect(() => {\n    const autoOpenClose = this.$autoOpenClose();\n    if (autoOpenClose) {\n      this.el.nativeElement.addEventListener('click', this.clickAction.bind(this));\n    } else {\n      this.el.nativeElement.removeEventListener('click', this.clickAction.bind(this));\n    }\n  });\n\n  private clickAction() {\n    this.$menu().open();\n  }\n}\n","import type { InputSignal, ModelSignal } from '@angular/core';\nimport { Directive, model } from '@angular/core';\nimport { MenuDirective } from './menu.directive';\n\n@Directive({\n  selector: 'ng-template[buttonMenu]',\n  standalone: false,\n  exportAs: 'buttonMenu',\n})\nexport class ButtonMenuDirective extends MenuDirective {\n  // #region Inputs\n  override readonly $menuContainerCss: ModelSignal<Record<string, string>> = model<Record<string, string>>(\n    {\n      pointerEvents: 'none',\n      marginTop: '-1px',\n      background: 'transparent',\n    },\n    {\n      alias: 'menuContainerCss',\n    },\n  );\n\n  override readonly $closeOnBackdropClick: InputSignal<boolean> = model(true, {\n    alias: 'closeOnBackdropClick',\n  });\n  override readonly $minWidth: ModelSignal<string | 'fit-content' | 'parentWidth'> = model('parentWidth', {\n    alias: 'minWidth',\n  });\n  override readonly $width: ModelSignal<string | 'fit-content' | 'parentWidth'> = model('fit-content', {\n    alias: 'width',\n  });\n\n  // #endregion Inputs\n}\n","import { NgModule } from '@angular/core';\nimport { TableauUiDialogModule } from 'tableau-ui-angular/dialog';\nimport { MenuDirective } from './menu.directive';\nimport { AttachedMenuDirective } from './attached-menu.directive';\nimport { ButtonMenuDirective } from './button-menu.directive';\n\n@NgModule({\n  imports: [TableauUiDialogModule],\n  declarations: [MenuDirective, AttachedMenuDirective, ButtonMenuDirective],\n  exports: [MenuDirective, AttachedMenuDirective, ButtonMenuDirective],\n})\nexport class TableauUiMenuModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}