{"version":3,"file":"moxa-formoxa-mx-progress-bar.mjs","sources":["../../../../libs/formoxa/mx-progress-bar/src/lib/components/mx-progress-bar.component.ts","../../../../libs/formoxa/mx-progress-bar/src/moxa-formoxa-mx-progress-bar.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\n\n@Component({\n  selector: 'mx-progress-bar',\n  standalone: true,\n  imports: [MatIconModule],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  styleUrls: ['./mx-progress-bar.component.scss'],\n  template: `\n    <div\n      class=\"mx-progress-bar\"\n      [class.mx-progress-bar--success]=\"isSuccess()\"\n      [class.mx-progress-bar--error]=\"isError()\"\n    >\n      <div class=\"mx-progress-bar__text\">\n        @if (isError()) {\n          <span>{{ errorText() }}</span>\n          <mat-icon svgIcon=\"icon:cancel\" class=\"mx-progress-bar__status-icon\"></mat-icon>\n        } @else if (isSuccess()) {\n          <span>{{ completedText() }}</span>\n          <mat-icon svgIcon=\"icon:check_circle\" class=\"mx-progress-bar__status-icon\"></mat-icon>\n        } @else {\n          <span>{{ progressText() }}</span>\n        }\n      </div>\n      <div class=\"mx-progress-bar__progress-container\">\n        <div class=\"mx-progress-bar__fill\" [style.width.%]=\"progress()\"></div>\n      </div>\n      @if (isError()) {\n        @if (errorMessage()) {\n          <div class=\"mx-progress-bar__error-message\">{{ errorMessage() }}</div>\n        }\n      } @else {\n        <div class=\"mx-progress-bar__percentage\">{{ progress() }}%</div>\n      }\n    </div>\n  `\n})\nexport class MxProgressBarComponent {\n  /**\n   * Progress value between 0 and 100\n   */\n  progress = input(0, {\n    transform: (value: number | string) => {\n      const numValue = typeof value === 'string' ? parseFloat(value) : value;\n      if (typeof numValue !== 'number' || isNaN(numValue)) return 0;\n      return Math.max(0, Math.min(100, numValue));\n    }\n  });\n\n  /**\n   * Text displayed during progress\n   */\n  progressText = input<string>('Processing...');\n\n  /**\n   * Text displayed when progress reaches 100%\n   */\n  completedText = input<string>('Complete');\n\n  /**\n   * Status of the progress bar. Use 'success' or 'error' to indicate the final state.\n   */\n  status = input<'success' | 'error' | null>(null);\n\n  /**\n   * Text displayed when status is 'error'\n   */\n  errorText = input<string>('Failed');\n\n  /**\n   * Optional message displayed below the progress bar when status is 'error'\n   */\n  errorMessage = input<string>('');\n\n  protected readonly isError = computed(() => this.status() === 'error');\n\n  protected readonly isSuccess = computed(\n    () => this.status() === 'success' || (this.progress() >= 100 && !this.isError())\n  );\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}