{"version":3,"file":"toolbox-components.mjs","sources":["../../../projects/toolbox/components/base.component.ts","../../../projects/toolbox/components/search/search.component.ts","../../../projects/toolbox/components/region-badge/region-badge.component.ts","../../../projects/toolbox/components/row-buttons/row-action-buttons.component.ts","../../../projects/toolbox/components/multi-checkbox/multi-checkbox.component.ts","../../../projects/toolbox/components/multi-checkbox/multi-checkbox.component.html","../../../projects/toolbox/components/toolbox-components.ts"],"sourcesContent":["import { signal } from \"@angular/core\";\r\nimport { EMPTY, Observable, of } from \"rxjs\";\r\nimport { catchError, finalize } from \"rxjs/operators\";\r\n\r\nimport { TbxError } from \"@lacera/ngx-toolbox/http\";\r\n\r\n/** Displays error messages for the specified control. */\r\nexport abstract class TbxBaseComponent\r\n{\r\n  /** Gets or sets a value indicating whether we're displaying in delete mode. */\r\n  public deleteMode = false;\r\n\r\n  /** Indicates the component is busy with some operation. */\r\n  public busy = signal( true );\r\n\r\n  /** Gets or sets the title of the page. */\r\n  public pageTitle = \"\";\r\n\r\n  /** General error message used to display on the component. */\r\n  public errorMessage = signal( \"\" );\r\n\r\n  /** The actual error received during the pipe. */\r\n  public error: TbxError | null = null;\r\n\r\n  /**\r\n   * Pipes in to the given stream to catch errors and store them in the\r\n   * {@link errorMessage} and {@link error} base variables.\r\n   * @param source The stream to pipe in to.\r\n   * @returns The result of observable or rethrows the caught error.\r\n   */\r\n  protected pipe$<T>( source: Observable<T> ): Observable<T>\r\n  {\r\n    this.resetState();\r\n\r\n    return source\r\n      .pipe(\r\n        catchError( error =>\r\n        {\r\n          setTimeout( () =>\r\n          {\r\n            this.errorMessage.set( error.message ?? error ?? \"\" );\r\n            this.error = error;\r\n          } );\r\n\r\n          return EMPTY;\r\n        } ),\r\n        finalize( () => this.busy.set( false ) ) );\r\n  }\r\n\r\n  /**\r\n   * Handles errors encountered during an observable stream.\r\n   * @param error The error received through the stream.\r\n   * @param message An optional message to prepend to the error message.\r\n   * @param showOriginalError Indicates to show the original message (the optional\r\n   * message must be provided).\r\n   * @returns The error once it has been logged.\r\n   */\r\n  protected handleError<T>(\r\n    error: TbxError,\r\n    message?: string,\r\n    showOriginalError = true ): Observable<T | null>\r\n  {\r\n    let msg = message;\r\n\r\n    if( showOriginalError )\r\n    {\r\n      msg = error.message;\r\n    }\r\n\r\n    if( message != null && showOriginalError )\r\n    {\r\n      msg = `${message} - ${msg}`;\r\n    }\r\n\r\n    this.errorMessage.set( msg ?? \"\" );\r\n    this.busy.set( false );\r\n\r\n    return of( null );\r\n  }\r\n\r\n  /** Resets the error and success messages and other state properties. */\r\n  protected resetState(): void\r\n  {\r\n    this.errorMessage.set( \"\" );\r\n    this.error = null;\r\n    this.busy.set( true );\r\n  }\r\n}\r\n","import {\r\n  Component,\r\n  input,\r\n  output,\r\n  ChangeDetectionStrategy,\r\n  ElementRef,\r\n  ViewChild\r\n} from \"@angular/core\";\r\n\r\nimport { debounceTime, distinctUntilChanged, Subject } from \"rxjs\";\r\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\";\r\n\r\n@Component( {\r\n  selector: \"tbx-search-input\",\r\n  standalone: true,\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  styles: `\r\n    .search\r\n    {\r\n      min-width : 14rem;\r\n    }\r\n  `,\r\n  template: `\r\n    <div class=\"input-group search\">\r\n      @if (showSearchIcon()) {\r\n        <div class=\"input-group-text\">\r\n          <i [class]=\"searchIconClass()\"></i>\r\n        </div>\r\n      }\r\n      <input class=\"form-control\"\r\n             id=\"searchInput\"\r\n             type=\"text\"\r\n             #searchInput\r\n             [value]=\"initialValue()\"\r\n             [placeholder]=\"placeholder()\"\r\n             (keyup)=\"onKeyUp($event)\"\r\n      />\r\n      @if (showClearButton()) {\r\n        <button [class]=\"clearButtonClass()\"\r\n                type=\"button\"\r\n                (click)=\"reset()\">\r\n          <i class=\"fa-solid fa-ban text-secondary\"></i>\r\n        </button>\r\n      }\r\n    </div>\r\n  `\r\n} )\r\nexport class TbxSearchComponent {\r\n  @ViewChild( \"searchInput\", { static: true } )\r\n  public inputRef!: ElementRef;\r\n\r\n  public initialValue = input<string>( \"\" );\r\n  public placeholder = input<string>( \"\" );\r\n  public clearButtonClass = input( \"btn btn-light border\" );\r\n  public searchIconClass = input( \"fa fa-magnifying-glass text-secondary\" );\r\n  public debounceTime = input<number>( 300 );\r\n  public showSearchIcon = input<boolean>( true );\r\n  public showClearButton = input<boolean>( true );\r\n\r\n  public search = output<string>();\r\n\r\n  private searchSubject = new Subject<string>();\r\n\r\n  public constructor() {\r\n    this.searchSubject\r\n        .pipe(\r\n          debounceTime( this.debounceTime() ),\r\n          distinctUntilChanged(),\r\n          takeUntilDestroyed()\r\n        )\r\n        .subscribe( searchValue => this.search.emit( searchValue ) );\r\n  }\r\n\r\n  public onKeyUp( event: Event ): void {\r\n    const el = event.target as HTMLInputElement;\r\n    this.searchSubject.next( el.value );\r\n  }\r\n\r\n  public reset(): void {\r\n    this.searchSubject.next( \"\" );\r\n    this.inputRef.nativeElement.value = \"\";\r\n  }\r\n}\r\n","import { Component, input } from \"@angular/core\";\r\nimport { UpperCasePipe } from \"@angular/common\";\r\n\r\n@Component( {\r\n  selector: \"tbx-region-badge\",\r\n  imports: [UpperCasePipe],\r\n  template: `\r\n    <span class=\"logo-region badge\"\r\n          [class.text-bg-success]=\"region() == 37\"\r\n          [class.text-bg-warning]=\"region() == 55\"\r\n          [class.text-bg-danger]=\"region() != 37 && region() != 55\">\r\n          {{ label() | uppercase }}\r\n    </span>\r\n  `\r\n} )\r\nexport class TbxRegionBadgeComponent {\r\n  /** The region number to display (37=prod, 55=dev, etc.) */\r\n  public readonly region = input<number>( 37 );\r\n\r\n  /** The region short label. */\r\n  public readonly label = input<string>( \"PROD\" );\r\n}\r\n","import { Component, input, output } from \"@angular/core\";\r\n\r\n/**\r\n * Displays the standard action group of buttons. This can be used in a table row\r\n * for an item, or anywhere. It only shows buttons and not links. To use links\r\n * and buttons, use TbxRowActionsComponent or TbxRowButtonsComponent in\r\n * @lacera/ngx-toolbox/table.\r\n */\r\n@Component( {\r\n  selector: \"tbx-row-action-buttons\",\r\n  imports: [],\r\n  template: `\r\n    <div class=\"btn-group action-group\">\r\n      @if (showEdit()) {\r\n        <button [class]=\"buttonClass()\"\r\n                type=\"button\"\r\n                title=\"Edit\"\r\n                (click)=\"editClick.emit()\">\r\n          <i [class]=\"editIcon()\"></i>\r\n        </button>\r\n      }\r\n\r\n      @if (showUndo()) {\r\n        <button [class]=\"buttonClass()\"\r\n                title=\"Undo\"\r\n                type=\"button\"\r\n                (click)=\"undoClick.emit()\">\r\n          <i [class]=\"undoIcon()\"></i>\r\n        </button>\r\n      }\r\n\r\n      @if (showDelete()) {\r\n        <button [class]=\"buttonClass()\"\r\n                type=\"button\"\r\n                title=\"Delete\"\r\n                (click)=\"deleteClick.emit()\">\r\n          <i [class]=\"deleteIcon()\"></i>\r\n        </button>\r\n      }\r\n    </div>\r\n  `\r\n} )\r\nexport class TbxRowActionButtonsComponent {\r\n\r\n  public readonly showEdit = input( true );\r\n  public readonly showDelete = input( true );\r\n  public readonly showUndo = input( false );\r\n\r\n  /** The class to apply to the buttons (defaults to 'btn btn-sm btn-light'). */\r\n  public readonly buttonClass = input( \"btn btn-sm btn-light\" );\r\n\r\n  public readonly editIcon = input( \"fa fa-edit\" );\r\n  public readonly deleteIcon = input( \"text-danger fa fa-trash\" );\r\n  public readonly undoIcon = input( \"fa fa-undo\" );\r\n\r\n  public readonly editClick = output();\r\n  public readonly undoClick = output();\r\n  public readonly deleteClick = output();\r\n}\r\n","import { Component, input, output } from \"@angular/core\";\r\nimport { TbxMultiCheckboxItem } from \"./multi-checkbox.model\";\r\n\r\n@Component( {\r\n  selector: \"tbx-multi-checkbox\",\r\n  imports: [],\r\n  templateUrl: \"./multi-checkbox.component.html\",\r\n  styleUrl: \"./multi-checkbox.component.scss\"\r\n} )\r\nexport class MultiCheckboxComponent {\r\n  public readonly items = input<TbxMultiCheckboxItem[]>( [] );\r\n\r\n  /**\r\n   * The CSS classes to apply to the 'container' element (defaults to\r\n   *  'form-control p-0 overflow-auto').\r\n   */\r\n  public readonly containerClass = input<string>( \"form-control p-0 overflow-auto\" );\r\n\r\n  /**\r\n   * The CSS classes to apply to the 'ul' element (defaults to\r\n   *  'list-group list-group-flush').\r\n   */\r\n  public readonly listClass = input<string>( \"list-group list-group-flush\" );\r\n\r\n  /**\r\n   * The CSS classes to apply to the 'li' element (defaults to 'list-group-item').\r\n   */\r\n  public readonly itemClass = input<string>( \"list-group-item\" );\r\n\r\n  /**\r\n   * The CSS classes to apply to the container div inside the 'li' element\r\n   *  (defaults to 'd-flex align-items-center px-2 py-1').\r\n   */\r\n  public readonly itemContainerClass =\r\n    input<string>( \"d-flex align-items-center px-2 py-1\" );\r\n\r\n  /**\r\n   * The CSS classes to apply to the 'input' control (defaults to\r\n   *  'form-check-label').\r\n   */\r\n  public readonly labelClass = input<string>( \"form-check-label\" );\r\n\r\n  /**\r\n   * The CSS classes to apply to the 'input' control (defaults to\r\n   *  'form-check-input me-1').\r\n   */\r\n  public readonly inputClass = input<string>( \"form-check-input me-1\" );\r\n\r\n  /**\r\n   * The CSS classes to apply to the 'img> control if an image is provided\r\n   * (defaults to 'rounded-circle me-1').\r\n   */\r\n  public readonly imageClass = input<string>( \"rounded-circle me-1\" );\r\n\r\n  /**\r\n   * The maximum height of the container in pixels (defaults to none: 0 to\r\n   * take as much space as needed).\r\n   */\r\n  public readonly maxHeight = input<number | undefined>( undefined );\r\n\r\n  public readonly selectChange = output<TbxMultiCheckboxItem[]>();\r\n\r\n  protected checkboxChange( id: unknown, event: Event ): void {\r\n    const checked = ( event.target as HTMLInputElement ).checked;\r\n    const item = this.items().find( i => i.id === id );\r\n\r\n    if( item ) {\r\n      item.checked = checked;\r\n      this.selectChange.emit( this.items().filter( i => i.checked ) );\r\n    }\r\n  }\r\n}\r\n","<div [class]=\"containerClass()\" [style.msx-height.px]=\"maxHeight()\">\r\n  <ul [class]=\"listClass()\">\r\n    @for (item of items(); track item.id) {\r\n      <div [class]=\"itemContainerClass()\">\r\n        <li [class]=\"itemClass()\"\r\n            [title]=\"item.description\">\r\n          <input [class]=\"inputClass()\"\r\n                 type=\"checkbox\"\r\n                 [id]=\"item.id\"\r\n                 [checked]=\"item.checked\"\r\n                 (change)=\"checkboxChange(item.id, $event)\">\r\n          @if (item.imageUrl) {\r\n            <img [class]=\"imageClass()\"\r\n                 [src]=\"item.imageUrl\"\r\n                 [alt]=\"item.description\"\r\n                 [width]=\"item.imageWidth\"\r\n                 [height]=\"item.imageHeight\">\r\n          }\r\n          <label [class]=\"labelClass()\" [for]=\"item.id\">\r\n            {{ item.title }}\r\n          </label>\r\n        </li>\r\n      </div>\r\n    }\r\n  </ul>\r\n</div>\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}