{"version":3,"file":"obliczeniowo-elementary-buttons.mjs","sources":["../../../../projects/components/buttons/components/expand-button/expand-button.component.ts","../../../../projects/components/buttons/components/expand-button/expand-button.component.html","../../../../projects/components/buttons/directives/button.directive.ts","../../../../projects/components/buttons/directives/action.directive.ts","../../../../projects/components/buttons/buttons.module.ts","../../../../projects/components/buttons/components/progress-button/progress-button.component.ts","../../../../projects/components/buttons/components/progress-button/progress-button.component.html","../../../../projects/components/buttons/obliczeniowo-elementary-buttons.ts"],"sourcesContent":["import { Component, Input } from '@angular/core';\nimport { Animations } from '@obliczeniowo/elementary/animations';\n\n@Component({\n    selector: 'obl-expand-button',\n    templateUrl: './expand-button.component.html',\n    styleUrls: ['./expand-button.component.scss'],\n    animations: [\n        Animations.rotate180deg\n    ],\n    standalone: false\n})\nexport class ExpandButtonComponent {\n  @Input()\n  isOpen = false;\n}\n","<obl-icon\n  [width]=\"16\"\n  name=\"expand\"\n  [@openClose]=\"isOpen ? 'open' : 'closed'\"\n></obl-icon>\n","import {\n  ComponentRef,\n  Directive,\n  ElementRef,\n  HostBinding,\n  HostListener,\n  input,\n  Input,\n  Renderer2,\n  ViewContainerRef,\n} from '@angular/core';\nimport { IconComponent } from '@obliczeniowo/elementary/icons';\nimport { SpinnerComponent } from '@obliczeniowo/elementary/loading';\n\n/**\n * Set class for the button element\n *\n * Default class name is: 'obl-button' you cen extend it by using input oblButton\n * in such case the name of class will change to 'obl-button-'+this.oblButton\n *\n * You can use scss mixin to generate new set of styles:\n *\n * @example\n *\n * // in HTML\n *\n * <button oblButton=\"red\">Some button</button>\n *\n * // in global scss file style.scss\n *\n * @use \"node_modules/@obliczeniowo/elementary/styles/global.scss\" as *;\n *\n * @include button-styles(\"red\", #080808, black, red, white, #cc5d5d, white, gray);\n */\n@Directive({\n    selector: 'oblButton, [oblButton]',\n    exportAs: 'oblButton',\n    standalone: false\n})\nexport class ButtonDirective {\n  private _oblButton!: string;\n  private _spinner?: ComponentRef<SpinnerComponent>;\n  private _icon?: ComponentRef<IconComponent>;\n  private _name?: string;\n\n  get oblButton(): string {\n    return this._oblButton;\n  }\n\n  /**\n   * Let you set default class if no extended class is set\n   *\n   * if extended is set then you can generate your own styles class using mixin\n   *\n   * @example\n   * @use \"node_modules/@obliczeniowo/elementary/styles/buttons-styles.scss\" as *;\n   *\n   * @include button-styles(\"red\", #080808, black, red, white, #cc5d5d, white, gray);\n   */\n  @Input() set oblButton(value: string) {\n    this.renderer.removeClass(this.elementRef.nativeElement, this.class());\n    this._oblButton = value;\n    this.renderer.addClass(this.elementRef.nativeElement, this.class());\n  }\n\n  /**\n   * Name of icon to display inside of button, when no icon set then no icon to display\n   *\n   * When loading = true icon is removed and spinner is displayed\n   */\n  @Input() set icon(icon: string | undefined) {\n    const host = this.elementRef.nativeElement;\n    this._name = icon;\n    if (icon) {\n      if (!this._icon) {\n        this._icon = this.viewContainerRef.createComponent(IconComponent);\n      }\n      this._icon.setInput('name', icon);\n      this._icon.setInput('width', 'var(--obl-icon-width, 14px)');\n      if (host.firstChild) {\n        host.insertBefore(this._icon.location.nativeElement, host.firstChild);\n      } else {\n        host.appendChild(this._icon.location.nativeElement);\n      }\n    } else if (this._icon) {\n      host.removeChild(this._icon.location.nativeElement);\n    }\n  }\n\n  @Input() blockWhenLoading = true;\n\n  protected _loading?: boolean;\n\n  /**\n   * If loading is set to true then button is disabled and spinner is added as first child of button\n   *\n   * on loading = false spinner is removed and if icon is set then icon displayed on his place\n   */\n  @Input() set loading(loading: boolean) {\n    this._loading = loading;\n    const host = this.elementRef.nativeElement;\n    if (loading) {\n      if (!this._spinner) {\n        this._spinner = this.viewContainerRef.createComponent(SpinnerComponent);\n        if (host.innerText !== '') {\n          this._spinner.location.nativeElement.style.marginRight = '5px';\n        }\n      }\n      host.insertBefore(this._spinner.location.nativeElement, host.firstChild);\n      if (this._icon) {\n        host.removeChild(this._icon.location.nativeElement);\n      }\n      this.elementRef.nativeElement.disabled = true;\n    } else if (this._spinner) {\n      host.removeChild(this._spinner.location.nativeElement);\n      if (this._icon && this._name) {\n        host.insertBefore(this._icon.location.nativeElement, host.firstChild);\n      }\n      this.elementRef.nativeElement.disabled = undefined as any;\n    }\n  }\n\n  /** */\n  toggle = input<boolean>(false);\n  /** */\n  @HostBinding('class.selected')\n  @Input()\n  selected = false;\n\n  /**\n   * link to open when clicked\n   */\n  link = input<string>();\n\n  /**\n   * target option for link option only\n   */\n  target = input<string | '_self' | '_blank' | '_parent' | '_top'>('_self');\n\n  /**\n   * To handle disable state of button\n   */\n  @HostBinding('class.loading') get load() {\n    // !!this._loading to prevent change after update stuff\n    return !!this._loading && this.blockWhenLoading;\n  }\n\n  @HostListener('click', ['event']) clicked(event: MouseEvent) {\n    if (this._loading && this.blockWhenLoading) {\n      return;\n    }\n    if (this.link()) {\n      window.open(this.link(), this.target());\n    }\n    if (this.toggle()) {\n      this.selected = !this.selected;\n    }\n  }\n\n  constructor(\n    protected renderer: Renderer2,\n    protected elementRef: ElementRef<HTMLButtonElement>,\n    private readonly viewContainerRef: ViewContainerRef\n  ) {\n    renderer.addClass(elementRef.nativeElement, 'obl-button');\n  }\n\n  ngAfterViewInit() {\n    this.icon = this._name;\n    this.loading = !!this._loading;\n  }\n\n  protected class(prefix: string = 'obl-button'): string {\n    if (this.oblButton) {\n      return `${prefix}-${this.oblButton}`;\n    }\n    return prefix;\n  }\n}\n","import { Directive, ElementRef, HostListener, Input } from '@angular/core';\n\nimport { keys } from '@obliczeniowo/elementary/objects';\n\n@Directive({\n    selector: '[oblAction]',\n    standalone: false\n})\nexport class ActionDirective {\n  protected time: any;\n  protected dt: number = 0;\n  protected interval: number = 100;\n\n  protected element!: HTMLDivElement;\n  protected rect!: DOMRect;\n  protected offset!: { left: number; top: number };\n\n  @Input() set message(message: string) {\n    this.element.innerText = message;\n  };\n\n  @Input() animEnd?: () => void;\n\n  @Input() duration: number = 1000;\n\n  @HostListener('click', ['event']) clicked() {\n    const parent = this.ref.nativeElement;\n    if (!this.time && !parent.classList.contains('loading')) {\n      document.body.appendChild(this.element);\n      this.rect = parent.getBoundingClientRect();\n      this.offset = { left: parent.offsetLeft, top: parent.offsetTop };\n\n      this.element.style.top = `${this.offset.top - 30}px`;\n      let left = this.offset.left - (this.element.clientWidth - this.rect.width) / 2;\n      const dx = window.innerWidth - document.body.clientWidth;\n\n      if (left + this.element.clientWidth >= document.body.clientWidth - dx) {\n        left = document.body.clientWidth - 5 - this.element.clientWidth;\n      } else if (left < 0) {\n        left = 0;\n      }\n      this.element.style.left = `${left}px`;\n      this.time = setInterval(() => {\n        this.dt += this.interval;\n\n        this.element.style.opacity = `${1 - this.dt / this.duration}`;\n        this.element.style.top = `${this.offset.top - 30 - 50 * this.dt / this.duration}px`;\n        if (this.dt >= this.duration) {\n          // eslint-disable-next-line @typescript-eslint/prefer-optional-chain\n          this.animEnd && this.animEnd();\n          this.ngOnDestroy();\n        }\n      }, this.interval);\n    }\n  }\n\n  constructor(protected ref: ElementRef<HTMLElement>) {\n    this.element = document.createElement('div');\n    this.element.classList.add('animated-action');\n    const styles = {\n      padding: '5px 10px',\n      fontSize: '14px',\n      background: 'var(--default-background-color, white)',\n      color: 'var(--default-text-color, black)',\n      border: '1px solid gray',\n      borderRadius: '50px',\n      opacity: '1',\n      position: 'absolute',\n      width: 'fit-content'\n    };\n    keys(styles).forEach((key: any) => this.element.style[key] = (styles as any)[key]);\n  }\n\n  ngOnDestroy() {\n    if (this.time) {\n      clearInterval(this.time);\n      this.time = undefined;\n      this.dt = 0;\n      document.body.removeChild(this.element);\n    }\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { LoadingModule } from '@obliczeniowo/elementary/loading';\nimport { IconsModule } from '@obliczeniowo/elementary/icons';\n\nimport { ExpandButtonComponent } from './components/expand-button/expand-button.component';\nimport { ButtonDirective } from './directives/button.directive';\nimport { ActionDirective } from './directives/action.directive';\n\n@NgModule({\n  declarations: [\n    ExpandButtonComponent,\n    ButtonDirective,\n    ActionDirective\n  ],\n  imports: [\n    CommonModule,\n    IconsModule,\n    LoadingModule\n  ],\n  exports: [\n    ExpandButtonComponent,\n    ButtonDirective,\n    ActionDirective\n  ]\n})\nexport class ButtonsModule { }\n","import { Component, computed, HostBinding, input } from '@angular/core';\n\n@Component({\n    selector: 'button[obl-progress]',\n    imports: [],\n    templateUrl: './progress-button.component.html',\n    styleUrl: './progress-button.component.scss'\n})\nexport class ProgressButtonComponent {\n  /** if not undefined then display progress bar with % value */\n  progress = input<number>();\n\n  /** disable light effect */\n  light = input<boolean>(true);\n\n  real = computed(() => {\n    return Math.min(Math.max(0, this.progress() || 0), 100);\n  })\n\n  @HostBinding('attr.disabled') get disabled() {\n    return this.progress();\n  }\n\n  @HostBinding('class.obl-button') button = true;\n}\n","@if (progress() === undefined) {\n  <ng-content></ng-content>\n} @else {\n  <div class=\"progress\">\n    <div class=\"value\" [style.width.%]=\"real()\">\n      @if (light()) {\n        <div class=\"light\"></div>\n      }\n    </div>\n    <div class=\"value-text\">{{ real() }} %</div>\n  </div>\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}