{"version":3,"file":"sebgroup-green-angular-src-v-angular-modal.mjs","sources":["../../../../libs/angular/src/v-angular/modal/modal.globals.ts","../../../../libs/angular/src/v-angular/modal/dialog/dialog.component.ts","../../../../libs/angular/src/v-angular/modal/dialog/dialog.component.html","../../../../libs/angular/src/v-angular/modal/fold-out/keyboard-key.enum.ts","../../../../libs/angular/src/v-angular/modal/fold-out/fold-out.component.ts","../../../../libs/angular/src/v-angular/modal/fold-out/fold-out.component.html","../../../../libs/angular/src/v-angular/modal/fold-out/fold-out.directive.ts","../../../../libs/angular/src/v-angular/modal/slide-out/slide-out.component.ts","../../../../libs/angular/src/v-angular/modal/slide-out/slide-out.component.html","../../../../libs/angular/src/v-angular/modal/modal.module.ts","../../../../libs/angular/src/v-angular/modal/sebgroup-green-angular-src-v-angular-modal.ts"],"sourcesContent":["// We must force tsc to interpret this file as a module, resolves\n// \"Augmentations for the global scope can only be directly nested in external modules or ambient module declarations.\"\nexport {}\n\ndeclare global {\n  interface Window {\n    /** Counter for unique identifiers */\n    nggv: {\n      ids: { [namespace: string]: number; default: number }\n      nextId: (namespace?: string) => string\n    }\n  }\n}\n\n;(() => {\n  // Make sure there is an incremental ID each component can use\n  if (typeof window !== 'undefined' && !window.nggv) {\n    window.nggv = {\n      ids: { default: -1 },\n      nextId(namespace = 'default'): string {\n        let id = this.ids[namespace] || 0\n        if (typeof this.ids[namespace] === 'number') id++\n        this.ids[namespace] = id\n        return namespace === 'default'\n          ? `nggv-${id}`\n          : `nggv-${namespace}-${id}`\n      },\n    }\n  }\n})()\n","import {\n  ConfigurableFocusTrap,\n  ConfigurableFocusTrapFactory,\n} from '@angular/cdk/a11y'\nimport {\n  Component,\n  ElementRef,\n  EventEmitter,\n  HostBinding,\n  HostListener,\n  Input,\n  OnDestroy,\n  OnInit,\n  Output,\n  Renderer2,\n  ViewChild,\n} from '@angular/core'\n\nimport { DialogButtons } from '../modal.types'\n\nexport interface DialogEvent<T = any> {\n  original: Event | undefined\n  payload: T | undefined\n}\n\n@Component({\n    selector: 'nggv-dialog',\n    templateUrl: './dialog.component.html',\n    styleUrls: ['./dialog.component.scss'],\n    exportAs: 'dialog',\n    standalone: false\n})\nexport class NggvDialogComponent implements OnInit, OnDestroy {\n  private configurableFocusTrap: ConfigurableFocusTrap\n\n  @ViewChild('dialog') dialogRef: ElementRef | undefined\n\n  /** Special property used for selecting DOM elements during automated UI testing. */\n  @HostBinding('attr.data-thook') @Input() thook: string | null | undefined =\n    'dialog'\n  /** @internal */\n  @HostBinding('class.gds-modal-dialog') baseClass = true\n  /** @internal Defines the default visibility state of the dialog. */\n  private _shown = false\n  @Input() set shown(value: boolean) {\n    this._shown = value\n    this.enableFocusTrap()\n    if (value) {\n      this.hideOverflow()\n    } else {\n      this.resetOverflow()\n    }\n  }\n  get shown() {\n    return this._shown\n  }\n\n  /** @internal */\n  @HostBinding('attr.aria-hidden') get ariaHidden() {\n    return !this.shown\n  }\n  /** Defines the default visibility state of the dialog. */\n  @Input() initiallyShown = false\n  /** Sets modal heading. Will be translated (using transloco) if the string matches a cms key. */\n  @Input() heading!: string\n  /**\n   * Sets modal title. Will be translated (using transloco) if the string matches a cms key.\n   * @deprecated - use heading instead.\n   */\n  @Input() title = 'Attention'\n  /** Sets content body and can contain html code. The content body can also be set by nesting children to the dialog tag. */\n  @Input() content?: string\n  /** Defines if dialog should close on action. */\n  @Input() autoClose = true\n  /** An array of event payloads that will be added to every click context menu item click. */\n  @Input() payload: any = {}\n\n  @Input() dialogTitleId!: string\n  /** Pass the null if you don't want dialog body to be announced by the screen reader */\n  @Input() dialogBodyId!: string | null\n  /** It gives an ability for parent component to control if modal should be closed on esc button click. */\n  @Input() closeModalOnEscape = true\n  /** Aria label for the Close button with \"X\" icon, in the header */\n  @Input() closeButtonAriaLabel?: string\n\n  _buttons: DialogButtons | undefined\n  /** Buttons are defined as a key-value pair where key is one of \"positive|neutral|negative\" and value is the button label. */\n  @Input() set buttons(buttons: DialogButtons) {\n    this._buttons = buttons\n  }\n  // /** @internal */\n  // closeIcon = faTimes\n\n  @Output() nggvCloseEvent = new EventEmitter<DialogEvent>()\n  @Output() nggvPositiveEvent = new EventEmitter<DialogEvent>()\n  @Output() nggvNeutralEvent = new EventEmitter<DialogEvent>()\n  @Output() nggvNegativeEvent = new EventEmitter<DialogEvent>()\n  @Output() nggvDangerEvent = new EventEmitter<DialogEvent>()\n\n  protected _previous: HTMLElement | undefined\n  protected _firstFocusable: HTMLElement | undefined\n  protected _lastFocusable: HTMLElement | undefined\n\n  constructor(\n    private renderer: Renderer2,\n    private ref: ElementRef<HTMLElement>,\n    private configurableFocusTrapFactory: ConfigurableFocusTrapFactory,\n  ) {\n    this.configurableFocusTrap = this.configurableFocusTrapFactory.create(\n      this.ref.nativeElement,\n    )\n  }\n\n  ngOnInit() {\n    this.dialogTitleId =\n      this.dialogTitleId ?? 'gds-dialog-title-' + window.nggv?.nextId()\n    if (this.dialogBodyId !== null) {\n      this.dialogBodyId =\n        this.dialogBodyId ?? 'gds-dialog-body-' + window.nggv?.nextId()\n    }\n\n    this._shown = this.initiallyShown\n    if (this.shown) this._limitFocusable()\n  }\n\n  public onAction(event: Event, action: string) {\n    event.preventDefault()\n    const emitEvent = {\n      original: event,\n      payload: this.payload,\n    }\n    switch (action) {\n      case 'positive':\n        this.nggvPositiveEvent.emit(emitEvent)\n        break\n      case 'neutral':\n        this.nggvNeutralEvent.emit(emitEvent)\n        break\n      case 'negative':\n        this.nggvNegativeEvent.emit(emitEvent)\n        break\n      case 'danger':\n        this.nggvDangerEvent.emit(emitEvent)\n        break\n      // case 'close' is handled by if-statement below with call to this.close()\n    }\n    if (this.autoClose) this.close(event, 'action')\n  }\n\n  open(opener?: HTMLElement) {\n    this._shown = true\n    this._previous = opener || (document.activeElement as HTMLElement)\n\n    this.enableFocusTrap()\n    this.hideOverflow()\n    this._limitFocusable()\n    return true\n  }\n\n  protected _limitFocusable() {\n    window.setTimeout(() => {\n      if (!this.dialogRef) return\n      const focusable = this.dialogRef.nativeElement.querySelectorAll(\n        'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])',\n      )\n      this._firstFocusable = focusable[0]\n      this._lastFocusable = focusable[focusable.length - 1]\n      if (this._firstFocusable) this._firstFocusable.focus()\n    })\n  }\n\n  @HostListener('click', ['$event', '\"host\"'])\n  @HostListener('document:keydown.escape', ['$event'])\n  close(event?: Event, initiator?: string) {\n    if (initiator === 'host' && event instanceof MouseEvent) return\n    // prevent modal from closing on esc button click when closeModalOnEscape is set to false\n    if (!this.closeModalOnEscape) return\n    if (this.shown) {\n      const emitEvent = {\n        original: event,\n        payload: this.payload,\n      }\n      this.nggvCloseEvent.emit(emitEvent)\n    }\n\n    this.resetOverflow()\n    this.disableFocusTrap()\n\n    this._shown = false\n    window.setTimeout(() => {\n      if (this._previous) this._previous.focus()\n      this._previous = undefined\n    })\n  }\n\n  @HostListener('keydown', ['$event'])\n  focusTrap(event: KeyboardEvent) {\n    if (event.key !== 'Tab') return\n    if (event.shiftKey) {\n      // shift + tab\n      if (\n        this._lastFocusable &&\n        document.activeElement === this._firstFocusable\n      ) {\n        this._lastFocusable.focus()\n        event.preventDefault()\n      }\n    } else {\n      // tab\n      if (\n        this._firstFocusable &&\n        document.activeElement === this._lastFocusable\n      ) {\n        this._firstFocusable.focus()\n        event.preventDefault()\n      }\n    }\n  }\n\n  // to prevent background scrolling when modal is open\n  private hideOverflow(): void {\n    this.renderer.setStyle(document.body, 'overflow', 'hidden')\n  }\n\n  private resetOverflow(): void {\n    this.renderer.removeStyle(document.body, 'overflow')\n  }\n\n  private enableFocusTrap() {\n    if (this.configurableFocusTrap) {\n      this.configurableFocusTrap.enabled = true\n      this.configurableFocusTrap.focusInitialElementWhenReady()\n    }\n  }\n\n  private disableFocusTrap() {\n    if (this.configurableFocusTrap) {\n      this.configurableFocusTrap.enabled = false\n    }\n  }\n\n  ngOnDestroy(): void {\n    this.configurableFocusTrap?.destroy()\n  }\n}\n","<ng-container *ngIf=\"shown\">\n  <div class=\"modal-dialog__wrapper\" [class.-active]=\"shown\">\n    <div\n      class=\"modal-dialog__container\"\n      *transloco=\"let t\"\n      #dialog\n      role=\"dialog\"\n      aria-dialog=\"true\"\n      [attr.aria-labelledby]=\"dialogTitleId\"\n      [attr.aria-describedby]=\"dialogBodyId\"\n    >\n      <header class=\"modal-dialog__heading\">\n        <h3 [attr.id]=\"dialogTitleId\">{{ t(heading || title || '') }}</h3>\n        <button\n          data-thook=\"dialog-close\"\n          (click)=\"onAction($event, 'close')\"\n          (keydown.enter)=\"onAction($event, 'close')\"\n          [attr.aria-label]=\"closeButtonAriaLabel\"\n          class=\"gds-close\"\n        >\n          <i></i>\n        </button>\n      </header>\n      <section class=\"modal-dialog__body\" [attr.id]=\"dialogBodyId\">\n        <div [innerHtml]=\"content\"></div>\n        <ng-content></ng-content>\n      </section>\n      <footer class=\"modal-dialog__actions\">\n        <button\n          class=\"danger-confirm\"\n          type=\"reset\"\n          [attr.data-thook]=\"'dialog-' + (_buttons?.negative || 'negative')\"\n          (click)=\"onAction($event, 'negative')\"\n          (keydown.enter)=\"onAction($event, 'negative')\"\n          *ngIf=\"_buttons && _buttons.negative\"\n        >\n          {{ t(_buttons.negative) }}\n        </button>\n        <button\n          class=\"secondary\"\n          type=\"button\"\n          [attr.data-thook]=\"'dialog-' + (_buttons?.neutral || 'neutral')\"\n          (click)=\"onAction($event, 'neutral')\"\n          (keydown.enter)=\"onAction($event, 'neutral')\"\n          *ngIf=\"_buttons && _buttons.neutral\"\n        >\n          {{ t(_buttons.neutral) }}\n        </button>\n        <button\n          class=\"danger\"\n          type=\"submit\"\n          [attr.data-thook]=\"'dialog-' + (_buttons?.danger || 'danger')\"\n          (click)=\"onAction($event, 'danger')\"\n          (keydown.enter)=\"onAction($event, 'danger')\"\n          *ngIf=\"_buttons && _buttons.danger\"\n        >\n          {{ t(_buttons.danger) }}\n        </button>\n        <button\n          class=\"submit\"\n          type=\"submit\"\n          [attr.data-thook]=\"'dialog-' + (_buttons?.positive || 'positive')\"\n          (click)=\"onAction($event, 'positive')\"\n          (keydown.enter)=\"onAction($event, 'positive')\"\n          *ngIf=\"_buttons && _buttons.positive\"\n        >\n          {{ t(_buttons.positive) }}\n        </button>\n      </footer>\n    </div>\n    <div class=\"nggv-backdrop\"></div>\n  </div>\n</ng-container>\n","export enum KeyboardKey {\n  Escape = 'Escape',\n  Space = 'Space',\n  Enter = 'Enter',\n  ArrowUp = 'ArrowUp',\n  ArrowDown = 'ArrowDown',\n  Tab = 'Tab',\n}\n","import '@sebgroup/green-core/components/icon/icons/dot-grid-one-horizontal.js'\n\nimport {\n  AfterViewInit,\n  Component,\n  ElementRef,\n  EventEmitter,\n  HostBinding,\n  Input,\n  OnDestroy,\n  Output,\n  ViewChild,\n} from '@angular/core'\nimport { fromEvent, Subscription } from 'rxjs'\nimport { filter, takeWhile } from 'rxjs/operators'\n\nimport { KeyboardKey } from './keyboard-key.enum'\n\n@Component({\n    selector: 'nggv-fold-out',\n    templateUrl: './fold-out.component.html',\n    styleUrls: ['./fold-out.component.scss'],\n    standalone: false\n})\nexport class NggvFoldOutComponent implements OnDestroy, AfterViewInit {\n  /** Special property used for selecting DOM elements during automated UI testing. */\n  @HostBinding('attr.data-thook') @Input() thook: string | null | undefined =\n    'fold-out'\n\n  @ViewChild('foldout', { read: ElementRef }) inputRef?: ElementRef\n  @ViewChild('childrenContainer') container?: ElementRef\n\n  /** Aligns the dropdown list with the buttons right or left side */\n  @Input() alignOptions!: 'left' | 'right'\n  /** Option to show text with action button */\n  @Input() text?: string\n  /** Aria label for the fold-out button */\n  @Input() ariaLabel?: string\n  /** Sets the width property of the list. Default = fit-content */\n  @Input() listWidth: 'fit-content' | 'max-content' | 'min-content' | 'auto' =\n    'fit-content'\n  /** Emits when the children container collapses, for components with change detection strategy \"OnPush\" */\n  @Output() actionEmitter = new EventEmitter<void>()\n\n  /** @internal */\n  protected shown = false\n\n  private activeIndex = -1\n  private firstArrowClick = true\n  private ariaFocusAttributeName = 'aria-focus'\n  private blurAllElements = (): void => this.children.forEach(this.blurElement)\n  private blurElement = (element: HTMLElement): void =>\n    element.setAttribute(this.ariaFocusAttributeName, 'false')\n  private focusElement = (element: HTMLElement): void =>\n    element.setAttribute(this.ariaFocusAttributeName, 'true')\n  private getChildIndex = (element: HTMLElement | undefined): number =>\n    element ? this.children.indexOf(element) : -1\n\n  private onClickSubscription: Subscription | undefined\n  private onKeyUpSubscription: Subscription | undefined\n\n  private get children() {\n    return Array.from(\n      (this.container?.nativeElement as HTMLElement).children ?? [],\n    ) as HTMLElement[]\n  }\n\n  private get lastChild(): HTMLElement | undefined {\n    return this.children[this.children.length - 1] || undefined\n  }\n\n  private get focusedElement(): HTMLElement | undefined {\n    return this.children[this.activeIndex] || undefined\n  }\n\n  ngAfterViewInit(): void {\n    this.blurAllElements()\n  }\n\n  ngOnDestroy(): void {\n    this.onClickSubscription?.unsubscribe()\n    this.onKeyUpSubscription?.unsubscribe()\n  }\n\n  /** Toggle display of the option list */\n  toggleVisibility(): void {\n    this.setVisibility(!this.shown)\n  }\n\n  setVisibility(setVisibility = true): void {\n    if (this.shown === setVisibility) {\n      return\n    }\n\n    this.resetChildren()\n    this.shown = setVisibility\n\n    if (this.shown) {\n      this.subscribeToOutsideClickEvent()\n      this.subscribeToKeyDownEvent()\n    } else {\n      this.onClickSubscription?.unsubscribe()\n      this.onKeyUpSubscription?.unsubscribe()\n      this.actionEmitter.emit()\n    }\n  }\n\n  /**\n   * Closes the fold-out on click outside.\n   */\n  private subscribeToOutsideClickEvent(): void {\n    this.onClickSubscription = fromEvent(document, 'click')\n      .pipe(takeWhile(() => this.shown))\n      .subscribe({\n        next: (event: Event) => {\n          if (\n            this.shown &&\n            !this.inputRef?.nativeElement.contains(event.target)\n          ) {\n            this.setVisibility(false)\n          }\n        },\n      })\n  }\n\n  private subscribeToKeyDownEvent(): void {\n    if (!this.children.length) {\n      return\n    }\n\n    this.onKeyUpSubscription = fromEvent<KeyboardEvent>(document, 'keydown')\n      .pipe(\n        takeWhile(() => this.shown),\n        filter((event) =>\n          Object.values(KeyboardKey).includes(event.code as KeyboardKey),\n        ),\n      )\n      .subscribe((event) => {\n        event.preventDefault()\n        event.stopPropagation()\n        this.onKeyDown(event)\n      })\n  }\n\n  private onKeyDown(event: KeyboardEvent): void {\n    switch (event.code) {\n      case KeyboardKey.Escape:\n      case KeyboardKey.Tab:\n        this.setVisibility(false)\n        break\n      case KeyboardKey.Enter:\n      case KeyboardKey.Space:\n        this.takeAction()\n        break\n      case KeyboardKey.ArrowUp:\n        this.handleArrowUpClick()\n        break\n      case KeyboardKey.ArrowDown:\n        this.handleArrowDownClick()\n        break\n    }\n  }\n\n  private handleArrowUpClick(): void {\n    this.activeIndex = this.firstArrowClick\n      ? this.getChildIndex(this.lastChild)\n      : this.activeIndex === 0\n        ? this.getChildIndex(this.lastChild)\n        : this.activeIndex - 1\n\n    this.firstArrowClick = false\n    this.handleFocus()\n  }\n\n  private handleArrowDownClick(): void {\n    this.activeIndex = this.firstArrowClick\n      ? 0\n      : (this.activeIndex + 1) % this.children.length\n    this.firstArrowClick = false\n    this.handleFocus()\n  }\n\n  private handleFocus(): void {\n    this.blurAllElements()\n    this.focusElement(this.children[this.activeIndex])\n  }\n\n  private takeAction(): void {\n    if (this.focusedElement) {\n      this.focusedElement.click()\n    }\n\n    this.setVisibility(false)\n  }\n\n  private resetChildren(): void {\n    this.blurAllElements()\n    this.activeIndex = -1\n    this.firstArrowClick = true\n  }\n}\n","<div #foldout>\n  <button\n    data-thook=\"fold-out-toggle\"\n    class=\"fold-out-button\"\n    [ngClass]=\"{ 'no-text': !text }\"\n    (click)=\"toggleVisibility()\"\n    [attr.aria-expanded]=\"shown\"\n    [attr.aria-label]=\"ariaLabel\"\n  >\n    <ng-container *ngTemplateOutlet=\"text ? withText : default\"> </ng-container>\n  </button>\n  <div\n    #childrenContainer\n    class=\"nggv-fold-out__popover\"\n    [ngClass]=\"{\n      'flex-right': alignOptions === 'right',\n      'list-width-fit-content': listWidth === 'fit-content',\n      'list-width-max-content': listWidth === 'max-content',\n      'list-width-min-content': listWidth === 'min-content',\n      'list-width-auto': listWidth === 'auto',\n    }\"\n    [class.nggv-fold-out__popover-expanded]=\"shown\"\n    (click)=\"toggleVisibility()\"\n  >\n    <ng-content></ng-content>\n  </div>\n</div>\n\n<ng-template #withText>\n  {{ text }}\n  <gds-icon-dot-grid-one-horizontal\n    width=\"24\"\n    height=\"24\"\n    *nggCoreElement\n  ></gds-icon-dot-grid-one-horizontal>\n</ng-template>\n\n<ng-template #default>\n  <gds-icon-dot-grid-one-horizontal\n    width=\"24\"\n    height=\"24\"\n    *nggCoreElement\n  ></gds-icon-dot-grid-one-horizontal>\n  <ng-template></ng-template\n></ng-template>\n","import { Directive, HostBinding } from '@angular/core'\n\n@Directive({\n    selector: '[nggvOption]',\n    standalone: false\n})\nexport class NggvFoldOutOptionDirective {\n  @HostBinding('class.nggv-field-dropdown__options__label') baseClass = true\n}\n","import {\n  animate,\n  group,\n  query,\n  style,\n  transition,\n  trigger,\n} from '@angular/animations'\nimport {\n  Component,\n  ElementRef,\n  EventEmitter,\n  HostListener,\n  Input,\n  OnInit,\n  Output,\n  Renderer2,\n  ViewChild,\n} from '@angular/core'\n\nimport { DialogButtons } from '../modal.types'\n\n/** Modal slide-out component based on vanilla pattern library design.\n * The modal title can be set using the @Input heading, and will automatically be translated if\n * the string matches a cms key.\n * Content can be injected into the body of the slide-out by either setting the @Input content to any type of\n * markdown, or using content projection (adding content between the `nggv-slideout-modal`-start and end tag).\n * If the content needs to stretch outside the normal padded area, add the attribute `slot=\"outside-content\"` to the\n * projected content main element.\n * Test hooks:\n * The modal hook defaults to 'slideout' but is customizeable.\n * The closing button can be selected using 'slideout-close'.\n * The backdrop is selectable using 'slideout-backdrop'.\n */\n@Component({\n    selector: 'nggv-slideout-modal',\n    templateUrl: './slide-out.component.html',\n    styleUrls: ['./slide-out.component.scss'],\n    animations: [\n        trigger('modalAnimation', [\n            transition(':enter', [\n                query('.gds-slide-out', style({ transform: 'translateX(100%)' }), {\n                    optional: true,\n                }),\n                query('.gds-backdrop, [role=dialog]', style({ opacity: '0' }), {\n                    optional: true,\n                }),\n                group([\n                    query('.gds-slide-out', animate('350ms cubic-bezier(0.33, 1, 0.68, 1)', style({ transform: 'translateX(0)' })), { optional: true }),\n                    query('.gds-backdrop, [role=dialog]', animate('350ms cubic-bezier(0.33, 1, 0.68, 1)', style({ opacity: '1' })), { optional: true }),\n                ]),\n            ]),\n            transition(':leave', [\n                query('.gds-slide-out', style({ transform: 'translateX(0)' }), {\n                    optional: true,\n                }),\n                group([\n                    query('.gds-slide-out', animate('350ms cubic-bezier(0.33, 1, 0.68, 1)', style({ transform: 'translateX(100%)' })), { optional: true }),\n                    query('.gds-backdrop, [role=dialog]', animate('350ms cubic-bezier(0.33, 1, 0.68, 1)', style({ opacity: '0' })), { optional: true }),\n                ]),\n            ]),\n        ]),\n    ],\n    standalone: false\n})\nexport class NggvSlideOutComponent implements OnInit {\n  /** @internal */\n  @ViewChild('slideOut') slideOutRef: ElementRef | undefined\n\n  /** Sets from which side the modal should open. */\n  @Input() side: 'left' | 'right' = 'right'\n  /** Defines the default visibility state of the slide-out. */\n  private _shown = false\n  @Input() set shown(value: boolean) {\n    this._shown = value\n    if (value) {\n      this.hideOverflow()\n    } else {\n      this.resetOverflow()\n    }\n  }\n  get shown() {\n    return this._shown\n  }\n  /** Defines the default visibility state of the modal. */\n  @Input() initiallyShown = false\n  /** Sets modal heading. Will be translated (using transloco) if the string matches a cms key. */\n  @Input() heading!: string\n  /**\n   * Sets modal title. Will be translated (using transloco) if the string matches a cms key.\n   * @deprecated - use @Input() heading instead.\n   */\n  @Input() title!: string\n  /** Sets content body of the modal and can contain html code. The content body can also be set by nesting children to the modal tag. */\n  @Input() content?: string\n  /** Sets whether it is possible to close the modal from the top right corner. */\n  @Input() closable = true\n  /** Sets whether it is possible to close the modal by clicking outside the modal area (on the backdrop). */\n  @Input() closableOutside = true\n  /** Allows the modal content to decide the width of the modal. */\n  @Input() autoWidth = false\n\n  /** Special property used for selecting DOM elements during automated UI testing. */\n  @Input() thook = 'slideout'\n\n  /** Aria label for the Close button with \"X\" icon, in the header */\n  @Input() closeButtonAriaLabel?: string\n\n  /** @internal */\n  get fromLeft(): boolean {\n    return this.side === 'left'\n  }\n\n  // /** @internal */\n  // closeIcon = faTimes;\n\n  _buttons: DialogButtons | undefined\n  /** Buttons are defined as a key-value pair where key is one of \"positive|neutral|negative\" and value is the button label. */\n  @Input() set buttons(buttons: DialogButtons) {\n    this._buttons = buttons\n  }\n\n  /** Will emit true on closing event. */\n  @Output() nggvCloseEvent = new EventEmitter<boolean>()\n  @Output() nggvPositiveEvent = new EventEmitter<void>()\n  @Output() nggvNeutralEvent = new EventEmitter<void>()\n  @Output() nggvNegativeEvent = new EventEmitter<void>()\n\n  private previous: HTMLElement | undefined\n  private firstFocusable: HTMLElement | undefined\n  private lastFocusable: HTMLElement | undefined\n\n  constructor(\n    private host: ElementRef,\n    private renderer: Renderer2,\n  ) {\n    // appends methods for opening and closing modal to native element\n    this.host.nativeElement.open = this.open.bind(this)\n    this.host.nativeElement.close = this.close.bind(this)\n  }\n\n  ngOnInit() {\n    this._shown = this.initiallyShown\n    if (this.shown) this.limitFocusable()\n  }\n\n  public onAction(event: Event, action: string) {\n    event.preventDefault()\n    switch (action) {\n      case 'positive':\n        this.nggvPositiveEvent.emit()\n        break\n      case 'neutral':\n        this.nggvNeutralEvent.emit()\n        break\n      case 'negative':\n        this.nggvNegativeEvent.emit()\n        break\n    }\n    this.close(event, 'action')\n  }\n\n  /**\n   * Called on a modal element. Opens the modal and sets focus to the last focusable element in the modal.\n   *\n   * @param opener - reference to last focused element before opening modal\n   * @returns - true\n   */\n  open(opener?: HTMLElement): boolean {\n    this._shown = true\n    this.previous = opener || (document.activeElement as HTMLElement)\n    this.hideOverflow()\n    this.limitFocusable()\n    return true\n  }\n\n  /**\n   * Called on a modal element. Closes the modal and emits a `nggvCloseEvent`. Sets focus to the lats focused element if an element was sent in to open function.\n   *\n   * @param event\n   * @param initiator\n   */\n  @HostListener('click', ['$event', '\"host\"'])\n  @HostListener('document:keydown.escape', ['$event'])\n  close(event?: Event, initiator?: string): void {\n    let closableOutside = true\n\n    if (\n      initiator === 'host' &&\n      event instanceof MouseEvent &&\n      event.target !== event.currentTarget\n    )\n      return\n\n    if (\n      this.slideOutRef &&\n      !this.slideOutRef.nativeElement.contains(event?.target) &&\n      !this.closableOutside\n    ) {\n      closableOutside = false\n    }\n\n    if (closableOutside) {\n      this.resetOverflow()\n    }\n\n    if (this.shown && this.closable && closableOutside) {\n      this.nggvCloseEvent.emit(this.shown)\n      this.shown = false\n      window.setTimeout(() => {\n        if (this.previous) this.previous.focus()\n        this.previous = undefined\n      })\n    }\n  }\n\n  /** @internal */\n  @HostListener('keydown', ['$event'])\n  focusTrap(event: KeyboardEvent) {\n    if (event.key !== 'Tab') return\n    if (event.shiftKey) {\n      // shift + tab\n      if (\n        this.lastFocusable &&\n        document.activeElement === this.firstFocusable\n      ) {\n        this.lastFocusable.focus()\n        event.preventDefault()\n      }\n    } else {\n      // tab\n      if (\n        this.firstFocusable &&\n        document.activeElement === this.lastFocusable\n      ) {\n        this.firstFocusable.focus()\n        event.preventDefault()\n      }\n    }\n  }\n\n  private limitFocusable() {\n    window.setTimeout(() => {\n      if (!this.slideOutRef) return\n      const focusable = this.slideOutRef.nativeElement.querySelectorAll(\n        'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])',\n      )\n      this.firstFocusable = focusable[0]\n      this.lastFocusable = focusable[focusable.length - 1]\n      if (this.firstFocusable) this.firstFocusable.focus()\n    })\n  }\n\n  private hideOverflow(): void {\n    this.renderer.setStyle(document.body, 'overflow', 'hidden')\n  }\n\n  private resetOverflow(): void {\n    this.renderer.removeStyle(document.body, 'overflow')\n  }\n}\n","<ng-container *ngIf=\"shown\">\n  <div\n    [ngClass]=\"{\n      'gds-slide-out--left': fromLeft,\n      'gds-slide-out--right': !fromLeft,\n    }\"\n    *transloco=\"let t\"\n    [class.-active]=\"shown\"\n    [attr.data-thook]=\"thook\"\n    [attr.aria-hidden]=\"!shown\"\n    [@modalAnimation]\n  >\n    <div\n      #slideOut\n      class=\"gds-slide-out\"\n      [class.auto-width]=\"autoWidth\"\n      [class.entered]=\"shown\"\n      role=\"dialog\"\n      aria-modal=\"true\"\n      aria-labelledby=\"gds-modal-title\"\n      aria-describedby=\"gds-modal-body\"\n    >\n      <header class=\"gds-slide-out__header\">\n        <h3 id=\"gds-modal-title\">\n          {{ heading || title || '' }}\n        </h3>\n        <button\n          data-testid=\"modal-close-button\"\n          class=\"gds-close nggv-modal-slideout__close\"\n          (click)=\"close($event, 'action')\"\n          [attr.aria-label]=\"closeButtonAriaLabel\"\n        >\n          <i></i>\n        </button>\n      </header>\n\n      <section id=\"modal-body\">\n        <div class=\"gds-slide-out__content hide-if-empty\">\n          <div *ngIf=\"content\" [innerHtml]=\"content\"></div>\n          <ng-content></ng-content>\n        </div>\n        <ng-content select=\"[slot='outside-content']\"></ng-content>\n      </section>\n\n      <footer class=\"modal-dialog__actions\">\n        <button\n          class=\"danger\"\n          type=\"reset\"\n          [attr.data-thook]=\"'dialog-' + (_buttons?.negative || 'negative')\"\n          (click)=\"onAction($event, 'negative')\"\n          (keydown.enter)=\"onAction($event, 'negative')\"\n          *ngIf=\"_buttons && _buttons.negative\"\n        >\n          {{ t(_buttons.negative) }}\n        </button>\n\n        <button\n          class=\"secondary\"\n          type=\"button\"\n          [attr.data-thook]=\"'dialog-' + (_buttons?.neutral || 'neutral')\"\n          (click)=\"onAction($event, 'neutral')\"\n          (keydown.enter)=\"onAction($event, 'neutral')\"\n          *ngIf=\"_buttons && _buttons.neutral\"\n        >\n          {{ t(_buttons.neutral) }}\n        </button>\n\n        <button\n          class=\"primary\"\n          type=\"submit\"\n          [attr.data-thook]=\"'dialog-' + (_buttons?.positive || 'positive')\"\n          (click)=\"onAction($event, 'positive')\"\n          (keydown.enter)=\"onAction($event, 'positive')\"\n          *ngIf=\"_buttons && _buttons.positive\"\n        >\n          {{ t(_buttons.positive) }}\n        </button>\n      </footer>\n    </div>\n\n    <div\n      class=\"nggv-backdrop\"\n      data-thook=\"slideout-backdrop\"\n      (click)=\"close()\"\n    ></div>\n  </div>\n</ng-container>\n","import './modal.globals'\n\nimport { CommonModule } from '@angular/common'\nimport { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'\n\nimport { NggCoreWrapperModule } from '@sebgroup/green-angular/src/lib/shared'\nimport { NggvButtonModule } from '@sebgroup/green-angular/src/v-angular/button'\nimport { NggvI18nModule } from '@sebgroup/green-angular/src/v-angular/i18n'\nimport { NggvDialogComponent } from './dialog/dialog.component'\nimport { NggvFoldOutComponent } from './fold-out/fold-out.component'\nimport { NggvFoldOutOptionDirective } from './fold-out/fold-out.directive'\nimport { NggvSlideOutComponent } from './slide-out/slide-out.component'\n\n@NgModule({\n  imports: [\n    CommonModule,\n    NggvButtonModule,\n    NggvI18nModule,\n    NggCoreWrapperModule,\n  ],\n  declarations: [\n    NggvDialogComponent,\n    NggvSlideOutComponent,\n    NggvFoldOutComponent,\n    NggvFoldOutOptionDirective,\n  ],\n  exports: [\n    NggvDialogComponent,\n    NggvSlideOutComponent,\n    NggvFoldOutComponent,\n    NggvFoldOutOptionDirective,\n  ],\n  schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NggvModalModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2","i1"],"mappings":"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"}