{"version":3,"file":"laserfiche-lf-ui-components-shared.mjs","sources":["../../../projects/ui-components/shared/enums.ts","../../../projects/ui-components/shared/lf-breadcrumbs/lf-breadcrumbs-types.ts","../../../projects/ui-components/shared/lf-breadcrumbs/lf-breadcrumbs.component.ts","../../../projects/ui-components/shared/lf-breadcrumbs/lf-breadcrumbs.component.html","../../../projects/ui-components/shared/lf-breadcrumbs/lf-breadcrumbs.module.ts","../../../projects/ui-components/shared/lf-breadcrumbs/lf-breadcrumbs-public-api.ts","../../../projects/ui-components/shared/lf-toolbar/lf-toolbar.component.ts","../../../projects/ui-components/shared/lf-toolbar/lf-toolbar.component.html","../../../projects/ui-components/shared/lf-toolbar/lf-toolbar.module.ts","../../../projects/ui-components/shared/lf-toolbar/lf-toolbar-public-api.ts","../../../projects/ui-components/shared/LfSelectable.ts","../../../projects/ui-components/shared/lf-shared-public-api.ts","../../../projects/ui-components/shared/laserfiche-lf-ui-components-shared.ts"],"sourcesContent":["// Copyright (c) Laserfiche.\r\n// Licensed under the MIT License. See LICENSE in the project root for license information.\r\n\r\nexport enum FieldType {\r\n  DateTime = 'DateTime',\r\n  Blob = 'Blob',\r\n  Date = 'Date',\r\n  ShortInteger = 'ShortInteger',\r\n  LongInteger = 'LongInteger',\r\n  List = 'List',\r\n  Number = 'Number',\r\n  String = 'String',\r\n  Time = 'Time',\r\n}\r\n\r\n/** FieldFormat copied from Web Access */\r\nexport enum FieldFormat {\r\n  None = 'None',\r\n  ShortDate = 'ShortDate',\r\n  LongDate = 'LongDate',\r\n  ShortDateTime = 'ShortDateTime',\r\n  LongDateTime = 'LongDateTime',\r\n  ShortTime = 'ShortTime',\r\n  LongTime = 'LongTime',\r\n  GeneralNumber = 'GeneralNumber',\r\n  Currency = 'Currency',\r\n  Percent = 'Percent',\r\n  Scientific = 'Scientific',\r\n  Custom = 'Custom',\r\n}\r\n\r\nexport enum RedirectBehavior {\r\n  Replace = 'Replace',\r\n  Popup = 'Popup',\r\n  None = 'None'\r\n}\r\n\r\nexport enum LoginState {\r\n  LoggingIn = 'LoggingIn', // starting OAuth flow, previous state: LoggedOut, LoggedIn\r\n  LoggedIn = 'LoggedIn',  // have tokens, previous state: LoggingIn\r\n  LoggingOut = 'LoggingOut', // do have tokens, but getting rid of them, previous state: LoggedIn\r\n  LoggedOut = 'LoggedOut' // don't have tokens, previous state: LoggingOut, LoggingIn\r\n}\r\n\r\nexport enum LoginMode {\r\n  'Button' = 'Button',\r\n  'Menu' = 'Menu'\r\n}\r\n","// Copyright (c) Laserfiche.\r\n// Licensed under the MIT License. See LICENSE in the project root for license information.\r\n\r\nexport interface LfBreadcrumb {\r\n    name: string;\r\n    id: string;\r\n}\r\n","// Copyright (c) Laserfiche.\r\n// Licensed under the MIT License. See LICENSE in the project root for license information.\r\n\r\nimport { Component, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core';\r\nimport { LfBreadcrumb } from './lf-breadcrumbs-types';\r\n\r\n@Component({\r\n  selector: 'lf-breadcrumbs-component',\r\n  templateUrl: './lf-breadcrumbs.component.html',\r\n  styleUrls: ['./lf-breadcrumbs.component.css']\r\n})\r\nexport class LfBreadcrumbsComponent {\r\n  @Input() breadcrumbs: LfBreadcrumb[] = [];\r\n\r\n  @Output() breadcrumbSelected = new EventEmitter<LfBreadcrumb | undefined>();\r\n  @Output() breadcrumbClicked = new EventEmitter<{\r\n    selected: LfBreadcrumb;\r\n    breadcrumbs: LfBreadcrumb[];\r\n  }>();\r\n\r\n  /** @internal */\r\n  @ViewChild('dropdownMenuButton') dropdownMenuButton!: ElementRef<HTMLButtonElement>;\r\n\r\n  /** @internal */\r\n  constructor() { }\r\n\r\n  /** @internal */\r\n  onBreadcrumbSelected(node: LfBreadcrumb): void {\r\n    this.breadcrumbSelected.emit(node);\r\n    let crumbId = -1;\r\n    for(let idx = 0; idx < this.breadcrumbs.length; idx++) {\r\n      if (this.breadcrumbs[idx].id === node.id) {\r\n        crumbId = idx;\r\n        break;\r\n      }\r\n    }\r\n    if (crumbId === -1) {\r\n      return;\r\n    }\r\n    const newBreadcrumbs = this.breadcrumbs.slice(crumbId);\r\n    this.breadcrumbClicked.emit({breadcrumbs: newBreadcrumbs, selected: node});\r\n  }\r\n\r\n  /** @internal */\r\n  onDropdownMenuSelected() {\r\n    setTimeout(() => this.dropdownMenuButton.nativeElement.focus());\r\n  }\r\n}\r\n","<!--Copyright (c) Laserfiche.\r\nLicensed under the MIT License. See LICENSE in the project root for license information.-->\r\n\r\n<div class=\"lf-breadcrumbs-container\">\r\n  <div *ngIf=\"breadcrumbs?.length > 1\" class=\"breadcrumbs-dropdown-container\">\r\n      <mat-button-toggle-group class=\"breadcrumb-split-button-group\" hideSingleSelectionIndicator>\r\n          <mat-button-toggle class=\"breadcrumb-clickable-parent lf-button primary-button breadcrumb-split-button\"\r\n              [ngClass]=\"{'single-selectable': breadcrumbs.length===2}\"\r\n              (click)=\"onBreadcrumbSelected(breadcrumbs[1])\"\r\n              (keydown.enter)=\"onBreadcrumbSelected(breadcrumbs[1])\"\r\n              (keydown.space)=\"onBreadcrumbSelected(breadcrumbs[1])\"\r\n              [title]=\"breadcrumbs[1]?.name\">\r\n              {{breadcrumbs[1]?.name}}\r\n          </mat-button-toggle>\r\n          <mat-button-toggle class=\"breadcrumb-select breadcrumb-split-button\" *ngIf=\"breadcrumbs?.length > 2\"\r\n              value=\"breadcrumbDropdownMenu\" (change)=\"onDropdownMenuSelected()\" tabindex=\"-1\">\r\n              <button #dropdownMenuButton mat-icon-button [matMenuTriggerFor]=\"breadcrumbDropdownMenu\"\r\n                (click)=\"$event.stopPropagation()\" tabindex=\"0\">\r\n                <span class=\"material-icons breadcrumb-split-button-icon\">\r\n                  arrow_drop_down\r\n                </span>\r\n              </button>\r\n          </mat-button-toggle>\r\n      </mat-button-toggle-group>\r\n\r\n      <mat-menu #breadcrumbDropdownMenu=\"matMenu\" xPosition=\"before\">\r\n          <button class=\"lf-menu-item folder-dropdown\" mat-menu-item *ngFor=\"let breadcrumbOption of breadcrumbs.slice(1)\"\r\n              title=\"{{breadcrumbOption?.name}}\" (click)=\"onBreadcrumbSelected(breadcrumbOption)\">\r\n              {{breadcrumbOption?.name}}</button>\r\n      </mat-menu>\r\n  </div>\r\n  <span *ngIf=\"breadcrumbs?.length > 1\" class=\"material-icons breadcrumb-arrow_right\" id=\"arrow-right\">\r\n      keyboard_arrow_right\r\n    </span>\r\n  <span *ngIf=\"breadcrumbs?.length > 0\" class=\"breadcrumb-parent\" title=\"{{breadcrumbs[0]?.name}}\">\r\n      {{breadcrumbs[0]?.name}}\r\n  </span>\r\n</div>\r\n","// Copyright (c) Laserfiche.\r\n// Licensed under the MIT License. See LICENSE in the project root for license information.\r\n\r\nimport { Injector, NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { LfBreadcrumbsComponent } from './lf-breadcrumbs.component';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\r\nimport { createCustomElement } from '@angular/elements';\r\n\r\n@NgModule({\r\n  declarations: [\r\n    LfBreadcrumbsComponent\r\n  ],\r\n  imports: [\r\n    CommonModule,\r\n    MatMenuModule,\r\n    MatButtonToggleModule\r\n  ],\r\n  exports: [\r\n    LfBreadcrumbsComponent\r\n  ]\r\n})\r\nexport class LfBreadcrumbsModule {\r\n  /** @internal */\r\n  constructor(/** @internal */ injector: Injector) {\r\n    const breadcrumbsElementName: string = 'lf-breadcrumbs';\r\n    if (window.customElements && !customElements.get(breadcrumbsElementName)) {\r\n      const breadcrumbsElement = createCustomElement(LfBreadcrumbsComponent, { injector });\r\n      customElements.define(breadcrumbsElementName, breadcrumbsElement);\r\n    }\r\n  }\r\n}\r\n","// Copyright (c) Laserfiche.\r\n// Licensed under the MIT License. See LICENSE in the project root for license information.\r\n\r\nexport * from './lf-breadcrumbs-types';\r\nexport * from './lf-breadcrumbs.component';\r\nexport * from './lf-breadcrumbs.module';\r\n","// Copyright (c) Laserfiche.\r\n// Licensed under the MIT License. See LICENSE in the project root for license information.\r\n\r\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'lf-toolbar-component',\r\n  templateUrl: './lf-toolbar.component.html',\r\n  styleUrls: ['./lf-toolbar.component.css']\r\n})\r\nexport class LfToolbarComponent {\r\n\r\n  // TODO: if there is not enough room for displayed options, put everything in dropdown\r\n  @Input() displayed_options: ToolbarOption[] = [];\r\n  @Input() dropdown_options: ToolbarOption[] = [];\r\n  @Output() optionSelected: EventEmitter<ToolbarOption> = new EventEmitter<ToolbarOption>();\r\n\r\n  /** @internal */\r\n  constructor() {}\r\n\r\n  /** @internal */\r\n  onClickButton(option: ToolbarOption): void {\r\n    this.optionSelected.emit(option);\r\n  }\r\n\r\n  /** @internal */\r\n  getIcons(option: ToolbarOption): string[] {\r\n    if (!option.icon) {\r\n      return [];\r\n    }\r\n    if (typeof (option.icon) === 'string') {\r\n      return [option.icon];\r\n    }\r\n    else {\r\n      return option.icon;\r\n    }\r\n  }\r\n}\r\n\r\nexport interface ToolbarOption {\r\n  name: string;\r\n  disabled: boolean;\r\n  icon?: string[] | string;\r\n  children?: ToolbarOption[];\r\n  tag?: any;\r\n}\r\n","<!--Copyright (c) Laserfiche.\r\nLicensed under the MIT License. See LICENSE in the project root for license information.-->\r\n\r\n<div class=\"lf-toolbar-container\">\r\n  <span\r\n    [matTooltip]=\"displayedOption.name\"\r\n    matTooltipClass=\"lf-web-client-tooltip\"\r\n    class=\"lf-toolbar-expanded-button-span\"\r\n    *ngFor=\"let displayedOption of displayed_options\"\r\n  >\r\n    <button class=\"lf-toolbar-button\" [disabled]=\"displayedOption.disabled\" (click)=\"onClickButton(displayedOption)\">\r\n      <img\r\n        *ngFor=\"let icon of getIcons(displayedOption)\"\r\n        [src]=\"icon\"\r\n        [alt]=\"displayedOption.name\"\r\n        class=\"lf-toolbar-button-icon\"\r\n      />\r\n    </button>\r\n  </span>\r\n  <button\r\n    *ngIf=\"dropdown_options && dropdown_options.length > 0\"\r\n    class=\"lf-toolbar-button\"\r\n    [matMenuTriggerFor]=\"compactButtonMenu\"\r\n  >\r\n    <span class=\"material-icons lf-toolbar-dropdown-button-icon\"> more_vert </span>\r\n  </button>\r\n  <mat-menu #compactButtonMenu=\"matMenu\" class=\"lf-dropdown-menu\">\r\n    <button\r\n      [disabled]=\"dropdownOption.disabled\"\r\n      class=\"lf-dropdown-menu-option\"\r\n      *ngFor=\"let dropdownOption of dropdown_options\"\r\n      mat-menu-item\r\n      (click)=\"onClickButton(dropdownOption)\"\r\n    >\r\n      {{ dropdownOption.name }}\r\n    </button>\r\n  </mat-menu>\r\n</div>\r\n","// Copyright (c) Laserfiche.\r\n// Licensed under the MIT License. See LICENSE in the project root for license information.\r\n\r\nimport { Injector, NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { LfToolbarComponent } from './lf-toolbar.component';\r\nimport { createCustomElement } from '@angular/elements';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\n\r\n@NgModule({\r\n  declarations: [\r\n    LfToolbarComponent\r\n  ],\r\n  imports: [\r\n    CommonModule,\r\n    MatMenuModule,\r\n    MatTooltipModule\r\n  ]\r\n})\r\nexport class LfToolbarModule {\r\n    /** @internal */\r\n    constructor(\r\n      /** @internal */ injector: Injector\r\n    ) {  \r\n      const toolbarElementName: string = 'lf-toolbar';\r\n      if (window.customElements && !customElements.get(toolbarElementName)) {\r\n        const toolbarElement = createCustomElement(LfToolbarComponent, { injector });\r\n        customElements.define(toolbarElementName, toolbarElement);\r\n      }\r\n  \r\n    }\r\n}\r\n","// Copyright (c) Laserfiche.\r\n// Licensed under the MIT License. See LICENSE in the project root for license information.\r\n\r\nexport * from './lf-toolbar.component';\r\n\r\nexport * from './lf-toolbar.module';\r\n","// Copyright (c) Laserfiche.\r\n// Licensed under the MIT License. See LICENSE in the project root for license information.\r\n\r\n/**\r\n * @internal\r\n */\r\nexport interface ItemWithId {\r\n  id: string;\r\n  attributes?: Map<string, PropertyValue>;\r\n}\r\n\r\nexport interface PropertyValue {\r\n  value?: string | Date | number;\r\n  displayValue?: string;\r\n}\r\n\r\n/**\r\n * @internal\r\n */\r\nexport interface ILfSelectable {\r\n  value: ItemWithId;\r\n  isSelectable: boolean;\r\n  isSelected: boolean;\r\n}\r\n\r\n/**\r\n * @internal\r\n */\r\nexport class Selectable {\r\n  multiSelectable: boolean = false;\r\n\r\n  get selectedItems(): ILfSelectable[] {\r\n    return [...this.allSelected.values()];\r\n  }\r\n\r\n  callback?: () => Promise<ILfSelectable[] | undefined>;\r\n\r\n  private lastSelectedIndex: number = 0;\r\n  private selectedItemsIndices: number[] = [];\r\n\r\n  allSelected: Map<string, ILfSelectable> = new Map<string, ILfSelectable>();\r\n\r\n  clearSelectedValues(list: ILfSelectable[], clearCached?: boolean) {\r\n    this.clearAllSelectedItems(list, clearCached);\r\n  }\r\n\r\n  async setSelectedNodesAsync(\r\n    selected: Map<string, ILfSelectable>,\r\n    list: ILfSelectable[],\r\n    maxFetchIterations: number,\r\n    lastCheckedIdx: number = 0\r\n  ) {\r\n    for (let index = 0; index < list.length; index++) {\r\n      const selectableItem = list[index];\r\n      const wantToSelect = selected.has(selectableItem.value.id) || this.allSelected.has(selectableItem.value.id);\r\n      if (wantToSelect) {\r\n        if (selectableItem.isSelectable) {\r\n          const findValue = this.selectedItemsIndices.find((value) => value === index + lastCheckedIdx);\r\n          if (!findValue) {\r\n            this.selectedItemsIndices.push(index + lastCheckedIdx);\r\n          }\r\n          this.allSelected.set(selectableItem.value.id, selectableItem);\r\n          selectableItem.isSelected = true;\r\n          selected.delete(selectableItem.value.id);\r\n        }\r\n      }\r\n    }\r\n    lastCheckedIdx += list.length;\r\n    if (selected.size > 0) {\r\n      if (this.callback) {\r\n        if (maxFetchIterations > 0) {\r\n          --maxFetchIterations;\r\n          const value = await this.callback();\r\n          if (!value || value.length === 0) {\r\n            return;\r\n          }\r\n          await this.setSelectedNodesAsync(selected, value, maxFetchIterations, lastCheckedIdx);\r\n        } else {\r\n          console.debug('MaxFetchIterations reached. Not all nodes selected');\r\n        }\r\n      }\r\n    } else {\r\n      return;\r\n    }\r\n  }\r\n\r\n  onItemClicked(\r\n    event: MouseEvent | KeyboardEvent,\r\n    item: ILfSelectable,\r\n    list: ILfSelectable[],\r\n    allowMultiple: boolean = false,\r\n    onlyAdd: boolean = false\r\n  ) {\r\n    if (!item.isSelectable) {\r\n      if (event.ctrlKey || event.shiftKey) {\r\n        return;\r\n      }\r\n      this.clearAllSelectedItems(list);\r\n      this.lastSelectedIndex = 0;\r\n      return;\r\n    }\r\n    const itemIndex = list.findIndex((selectable) => selectable.value.id === item.value.id);\r\n    if (!this.multiSelectable) {\r\n      this.clearAllSelectedItems(list);\r\n      const itemInList = list[itemIndex];\r\n      if (itemInList.isSelectable) {\r\n        this.addSelectedItem(item, itemIndex);\r\n        this.lastSelectedIndex = itemIndex;\r\n      }\r\n      return;\r\n    }\r\n    if (event?.ctrlKey && event?.shiftKey) {\r\n      onlyAdd = true;\r\n    }\r\n    if ((event?.ctrlKey && !event.shiftKey) || (!event?.ctrlKey && !event?.shiftKey && allowMultiple)) {\r\n      const itemInList = list[itemIndex];\r\n      if (itemInList.isSelected) {\r\n        this.unselectItem(list, itemInList);\r\n      } else {\r\n        if (itemInList.isSelectable) {\r\n          this.addSelectedItem(item, itemIndex);\r\n          this.lastSelectedIndex = itemIndex;\r\n        }\r\n      }\r\n    } else if (event.shiftKey) {\r\n      const lower = this.lastSelectedIndex <= itemIndex ? this.lastSelectedIndex : itemIndex;\r\n      const upper = this.lastSelectedIndex > itemIndex ? this.lastSelectedIndex : itemIndex;\r\n      if (!onlyAdd) {\r\n        this.clearAllSelectedItems(list);\r\n      }\r\n\r\n      for (let i = lower; i <= upper; i++) {\r\n        const value = list[i];\r\n        if (value.isSelectable && !value.isSelected) {\r\n          this.addSelectedItem(value, i);\r\n        }\r\n      }\r\n    } else if (!allowMultiple) {\r\n      this.clearAllSelectedItems(list);\r\n      const itemInList = list[itemIndex];\r\n      if (itemInList.isSelectable) {\r\n        this.addSelectedItem(itemInList, itemIndex);\r\n        this.lastSelectedIndex = itemIndex;\r\n      }\r\n    }\r\n  }\r\n\r\n  /** @internal */\r\n  private unselectItem(list: ILfSelectable[], itemInList: ILfSelectable) {\r\n    const indexIndex = this.selectedItemsIndices.findIndex(\r\n      (selectable) => list[selectable].value.id === itemInList.value.id\r\n    );\r\n\r\n    this.selectedItemsIndices.splice(indexIndex, 1);\r\n    this.allSelected.delete(itemInList.value.id);\r\n    itemInList.isSelected = false;\r\n  }\r\n\r\n  /** @internal */\r\n  private clearAllSelectedItems(list: ILfSelectable[], clearAll: boolean = true) {\r\n    this.selectedItemsIndices.forEach((val) => {\r\n      if (list[val]) {\r\n        list[val].isSelected = false;\r\n      }\r\n    });\r\n    this.selectedItemsIndices = [];\r\n    if (clearAll) {\r\n      this.allSelected.clear();\r\n    }\r\n  }\r\n\r\n  /** @internal */\r\n  private addSelectedItem(itemInList: ILfSelectable, itemIndex: number) {\r\n    if (!itemInList.isSelectable) {\r\n      return;\r\n    }\r\n    itemInList.isSelected = true;\r\n    this.selectedItemsIndices.push(itemIndex);\r\n    this.allSelected.set(itemInList.value.id, itemInList);\r\n  }\r\n}\r\n","// Copyright (c) Laserfiche.\r\n// Licensed under the MIT License. See LICENSE in the project root for license information.\r\n\r\nexport * from './enums';\r\nexport * from './lf-breadcrumbs/lf-breadcrumbs-public-api';\r\nexport * from './lf-toolbar/lf-toolbar-public-api';\r\nexport * from './LfSelectable';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './lf-shared-public-api';\n"],"names":["i3"],"mappings":"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"}