{"version":3,"file":"moxa-formoxa-mx-table-inline.mjs","sources":["../../../../libs/formoxa/mx-table-inline/src/lib/components/mx-table-inline-tooltip.component.ts","../../../../libs/formoxa/mx-table-inline/src/lib/directives/mx-table-inline-input.directive.ts","../../../../libs/formoxa/mx-table-inline/src/lib/directives/mx-table-inline-select.directive.ts","../../../../libs/formoxa/mx-table-inline/src/lib/directives/mx-table-inline-form-field.directive.ts","../../../../libs/formoxa/mx-table-inline/src/lib/components/mx-table-inline-demo.component.ts","../../../../libs/formoxa/mx-table-inline/src/moxa-formoxa-mx-table-inline.ts"],"sourcesContent":["import { Component, Input } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\n@Component({\n  selector: 'mx-table-inline-tooltip',\n  imports: [MatIconModule, MatTooltipModule],\n  template: ` <mat-icon svgIcon=\"icon:error\" [matTooltip]=\"tooltip\" matTooltipPosition=\"above\"></mat-icon> `,\n  host: { class: 'mx-table-inline-tooltip' }\n})\nexport class MxTableInlineTooltipComponent {\n  @Input() tooltip: string = '';\n}\n","import {\n  AfterViewInit,\n  ComponentRef,\n  DestroyRef,\n  Directive,\n  DOCUMENT,\n  ElementRef,\n  inject,\n  input,\n  OnDestroy,\n  OnInit,\n  Renderer2,\n  ViewContainerRef\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormControl, NgControl } from '@angular/forms';\nimport { MxTableInlineTooltipComponent } from '../components/mx-table-inline-tooltip.component';\n\n@Directive({\n  selector: 'input[mxTableInlineInput]',\n  standalone: true\n})\nexport class MxTableInlineInputDirective implements OnInit, AfterViewInit, OnDestroy {\n  readonly errorMessage = input('Invalid input');\n  readonly errorMessages = input<Record<string, string>>({});\n\n  private document = inject(DOCUMENT);\n  private renderer = inject(Renderer2);\n  private elRef = inject(ElementRef<HTMLInputElement>);\n  private vcr = inject(ViewContainerRef);\n  private ngControl = inject(NgControl, { optional: true });\n  private destroy$ = inject(DestroyRef);\n\n  private wrapperEl: HTMLElement | null = null;\n  private tooltipRef: ComponentRef<MxTableInlineTooltipComponent> | null = null;\n\n  ngOnInit() {\n    this.setupWrapper();\n  }\n\n  ngAfterViewInit() {\n    // Setup form control listener after view init to ensure FormControlName is resolved\n    setTimeout(() => this.setupFormControlListener());\n  }\n\n  ngOnDestroy() {\n    this.hideError();\n  }\n\n  private setupWrapper(): void {\n    const inputEl = this.elRef.nativeElement;\n    const parentEl = inputEl.parentElement;\n\n    if (!parentEl) return;\n\n    // Create wrapper div\n    this.wrapperEl = this.document.createElement('div');\n    this.wrapperEl.classList.add('mx-table-inline-input');\n\n    // Insert wrapper before the input element\n    this.renderer.insertBefore(parentEl, this.wrapperEl, inputEl);\n    // Move input into the wrapper\n    this.renderer.appendChild(this.wrapperEl, inputEl);\n  }\n\n  private setupFormControlListener(): void {\n    const formControl = this.getFormControl();\n    if (!formControl) return;\n\n    // Initial update\n    this.updateErrorState();\n\n    // Listen to status changes\n    formControl.statusChanges.pipe(takeUntilDestroyed(this.destroy$)).subscribe(() => {\n      this.updateErrorState();\n    });\n  }\n\n  private updateErrorState(): void {\n    const formControl = this.getFormControl();\n    if (!formControl || !this.wrapperEl) return;\n\n    const hasError = formControl.invalid && (formControl.dirty || formControl.touched);\n\n    if (hasError) {\n      this.showError();\n      // Update tooltip message if tooltip already exists\n      if (this.tooltipRef) {\n        this.tooltipRef.instance.tooltip = this.getErrorMessage();\n      }\n    } else {\n      this.hideError();\n    }\n  }\n\n  private showError(): void {\n    if (this.tooltipRef || !this.wrapperEl) return;\n\n    // Create tooltip component\n    this.tooltipRef = this.vcr.createComponent(MxTableInlineTooltipComponent);\n    this.tooltipRef.instance.tooltip = this.getErrorMessage();\n\n    this.renderer.appendChild(this.wrapperEl, this.tooltipRef.location.nativeElement);\n  }\n\n  private hideError(): void {\n    if (this.tooltipRef) {\n      this.tooltipRef.destroy();\n      this.tooltipRef = null;\n    }\n  }\n\n  private getFormControl(): FormControl | null {\n    return (this.ngControl?.control as FormControl) || null;\n  }\n\n  private getErrorMessage(): string {\n    const formControl = this.getFormControl();\n    const errors = formControl?.errors;\n    if (!errors) return this.errorMessage();\n\n    const firstErrorKey = Object.keys(errors)[0];\n    const error = errors[firstErrorKey];\n    // 1. Check if error has a custom message property\n    if (error && typeof error === 'object' && error.message) {\n      return error.message;\n    }\n\n    // 2. Check if there's a custom error message for this error type\n    const customMessages = this.errorMessages();\n    if (customMessages[firstErrorKey]) {\n      return customMessages[firstErrorKey];\n    }\n\n    // 3. Check for global custom messages by error type\n    if (customMessages['*']) {\n      return customMessages['*'];\n    }\n\n    // 4. If no custom message, return the error key with some details\n    if (typeof error === 'object') {\n      return `${firstErrorKey}: ${JSON.stringify(error)}`;\n    }\n\n    // 5. For boolean errors (like required: true)\n    return `${firstErrorKey}: ${error}`;\n  }\n}\n","import {\n  AfterViewInit,\n  ComponentRef,\n  DestroyRef,\n  Directive,\n  ElementRef,\n  inject,\n  input,\n  OnInit,\n  Renderer2,\n  ViewContainerRef\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormControl, NgControl } from '@angular/forms';\nimport { MxTableInlineTooltipComponent } from '../components/mx-table-inline-tooltip.component';\n\n@Directive({\n  selector: 'mat-select[mxTableInlineSelect]',\n  standalone: true\n})\nexport class MxTableInlineSelectDirective implements OnInit, AfterViewInit {\n  readonly errorMessage = input('Invalid selection');\n  readonly errorMessages = input<Record<string, string>>({});\n\n  private renderer = inject(Renderer2);\n  private elRef = inject(ElementRef<HTMLElement>);\n  private vcr = inject(ViewContainerRef);\n  private ngControl = inject(NgControl, { optional: true });\n  private destroy$ = inject(DestroyRef);\n\n  private wrapperEl: HTMLElement | null = null;\n  private tooltipRef: ComponentRef<MxTableInlineTooltipComponent> | null = null;\n\n  ngOnInit() {\n    this.setupWrapper();\n  }\n\n  ngAfterViewInit() {\n    // Setup form control listener after view init to ensure FormControlName is resolved\n    setTimeout(() => this.setupFormControlListener());\n  }\n\n  ngOnDestroy() {\n    this.hideError();\n  }\n\n  private setupWrapper(): void {\n    const selectEl = this.elRef.nativeElement;\n    const selectTriggerEl = selectEl.children[0] as HTMLElement;\n\n    if (!selectTriggerEl) return;\n\n    selectTriggerEl.classList.add('mx-table-inline-select');\n    this.wrapperEl = selectTriggerEl;\n  }\n\n  private setupFormControlListener(): void {\n    const formControl = this.getFormControl();\n    if (!formControl) return;\n\n    // Listen to status changes\n    formControl.statusChanges.pipe(takeUntilDestroyed(this.destroy$)).subscribe(() => {\n      this.updateErrorState();\n    });\n\n    // Initial update\n    this.updateErrorState();\n  }\n\n  private updateErrorState(): void {\n    const formControl = this.getFormControl();\n    if (!formControl || !this.wrapperEl) return;\n\n    const hasError = formControl.invalid && (formControl.dirty || formControl.touched);\n    if (hasError) {\n      this.showError();\n      // Update tooltip message if tooltip already exists\n      if (this.tooltipRef) {\n        this.tooltipRef.instance.tooltip = this.getErrorMessage();\n      }\n    } else {\n      this.hideError();\n    }\n  }\n\n  private showError(): void {\n    if (this.tooltipRef || !this.wrapperEl) return;\n\n    // Create tooltip component\n    this.tooltipRef = this.vcr.createComponent(MxTableInlineTooltipComponent);\n    this.tooltipRef.instance.tooltip = this.getErrorMessage();\n\n    // Insert as second child (after first child, before any existing second child)\n    const secondChild = this.wrapperEl.children[1]; // Get the second child if it exists\n    if (secondChild) {\n      // Insert before the second child\n      this.renderer.insertBefore(this.wrapperEl, this.tooltipRef.location.nativeElement, secondChild);\n    } else {\n      // If no second child exists, append normally\n      this.renderer.appendChild(this.wrapperEl, this.tooltipRef.location.nativeElement);\n    }\n  }\n\n  private hideError(): void {\n    if (this.tooltipRef) {\n      this.tooltipRef.destroy();\n      this.tooltipRef = null;\n    }\n  }\n\n  private getFormControl(): FormControl | null {\n    return (this.ngControl?.control as FormControl) || null;\n  }\n\n  private getErrorMessage(): string {\n    const formControl = this.getFormControl();\n    const errors = formControl?.errors;\n    if (!errors) return this.errorMessage();\n\n    const firstErrorKey = Object.keys(errors)[0];\n    const error = errors[firstErrorKey];\n    // 1. Check if error has a custom message property\n    if (error && typeof error === 'object' && error.message) {\n      return error.message;\n    }\n\n    // 2. Check if there's a custom error message for this error type\n    const customMessages = this.errorMessages();\n    if (customMessages[firstErrorKey]) {\n      return customMessages[firstErrorKey];\n    }\n\n    // 3. Check for global custom messages by error type\n    if (customMessages['*']) {\n      return customMessages['*'];\n    }\n\n    // 4. If no custom message, return the error key with some details\n    if (typeof error === 'object') {\n      return `${firstErrorKey}: ${JSON.stringify(error)}`;\n    }\n\n    // 5. For boolean errors (like required: true)\n    return `${firstErrorKey}: ${error}`;\n  }\n}\n","import { Directive, ElementRef, inject, OnInit, Renderer2 } from '@angular/core';\n\n@Directive({\n  selector: 'mat-form-field[mxTableInlineFormField]',\n  standalone: true\n})\nexport class MxTableInlineFormFieldDirective implements OnInit {\n  private renderer = inject(Renderer2);\n  private elRef = inject(ElementRef<HTMLElement>);\n\n  ngOnInit() {\n    this.applyFormFieldDense();\n  }\n\n  /**\n   * @description 和 `mxFormField` 指令相同，使用 dense 樣式\n   * @see {libs/formoxa/mx-form-field/src/lib/directives/mx-form-field.directive.ts}\n   */\n  private applyFormFieldDense(): void {\n    const formFieldEl = this.elRef.nativeElement;\n    this.renderer.addClass(formFieldEl, 'mx-form-field-dense');\n  }\n}\n","import { JsonPipe } from '@angular/common';\nimport { Component, inject } from '@angular/core';\nimport { FormArray, FormBuilder, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\nimport { MatTableDataSource, MatTableModule } from '@angular/material/table';\nimport { MxTableComponent } from '@moxa/formoxa/mx-table';\nimport { MxTableInlineFormFieldDirective } from '../directives/mx-table-inline-form-field.directive';\nimport { MxTableInlineInputDirective } from '../directives/mx-table-inline-input.directive';\nimport { MxTableInlineSelectDirective } from '../directives/mx-table-inline-select.directive';\n\nexport interface DeviceItem {\n  id: number;\n  deviceName: string;\n  ipAddress: string;\n  status: 'online' | 'offline' | 'maintenance';\n  location: string;\n  description: string;\n}\n\n@Component({\n  selector: 'mx-table-inline-demo',\n  standalone: true,\n  imports: [\n    ReactiveFormsModule,\n    MatFormFieldModule,\n    MatInputModule,\n    MatSelectModule,\n    MatButtonModule,\n    MatIconModule,\n    MatSnackBarModule,\n    MatTableModule,\n    MxTableComponent,\n    MxTableInlineFormFieldDirective,\n    MxTableInlineInputDirective,\n    MxTableInlineSelectDirective,\n    JsonPipe\n  ],\n  template: `\n    <div class=\"demo-container\">\n      <h3>MxTable with Inline Editing Demo</h3>\n\n      <form [formGroup]=\"deviceForm\">\n        <mx-table [isLoading]=\"false\" [isDataEmpty]=\"devices.length === 0\">\n          <table mat-table [dataSource]=\"dataSource\" class=\"mx-table\" mx-table-body formArrayName=\"devices\">\n            <!-- Device Name Column -->\n            <ng-container matColumnDef=\"deviceName\">\n              <th mat-header-cell *matHeaderCellDef>Device Name</th>\n              <td mat-cell *matCellDef=\"let element; let i = index\" [formGroupName]=\"i\">\n                <mat-form-field mxTableInlineFormField>\n                  <input\n                    matInput\n                    mxTableInlineInput\n                    formControlName=\"deviceName\"\n                    placeholder=\"Enter device name\"\n                    [errorMessages]=\"deviceNameErrorMessages\"\n                  />\n                </mat-form-field>\n              </td>\n            </ng-container>\n\n            <!-- IP Address Column -->\n            <ng-container matColumnDef=\"ipAddress\">\n              <th mat-header-cell *matHeaderCellDef>IP Address</th>\n              <td mat-cell *matCellDef=\"let element; let i = index\" [formGroupName]=\"i\">\n                <mat-form-field mxTableInlineFormField>\n                  <input\n                    matInput\n                    mxTableInlineInput\n                    formControlName=\"ipAddress\"\n                    placeholder=\"192.168.1.1\"\n                    [errorMessages]=\"ipAddressErrorMessages\"\n                  />\n                </mat-form-field>\n              </td>\n            </ng-container>\n\n            <!-- Status Column -->\n            <ng-container matColumnDef=\"status\">\n              <th mat-header-cell *matHeaderCellDef>Status</th>\n              <td mat-cell *matCellDef=\"let element; let i = index\" [formGroupName]=\"i\">\n                <mat-form-field mxTableInlineFormField>\n                  <mat-select\n                    formControlName=\"status\"\n                    mxTableInlineSelect\n                    placeholder=\"Select status\"\n                    [errorMessages]=\"statusErrorMessages\"\n                  >\n                    <mat-option value=\"\">--Select Status--</mat-option>\n                    <mat-option value=\"online\">Online</mat-option>\n                    <mat-option value=\"offline\">Offline</mat-option>\n                    <mat-option value=\"maintenance\">Maintenance</mat-option>\n                  </mat-select>\n                </mat-form-field>\n              </td>\n            </ng-container>\n\n            <!-- Location Column -->\n            <ng-container matColumnDef=\"location\">\n              <th mat-header-cell *matHeaderCellDef>Location</th>\n              <td mat-cell *matCellDef=\"let element; let i = index\" [formGroupName]=\"i\">\n                <mat-form-field mxTableInlineFormField>\n                  <input\n                    matInput\n                    mxTableInlineInput\n                    formControlName=\"location\"\n                    placeholder=\"Enter location\"\n                    [errorMessages]=\"locationErrorMessages\"\n                  />\n                </mat-form-field>\n              </td>\n            </ng-container>\n\n            <!-- Description Column -->\n            <ng-container matColumnDef=\"description\">\n              <th mat-header-cell *matHeaderCellDef>Description</th>\n              <td mat-cell *matCellDef=\"let element; let i = index\" [formGroupName]=\"i\">\n                <mat-form-field mxTableInlineFormField>\n                  <input matInput mxTableInlineInput formControlName=\"description\" placeholder=\"Enter description\" />\n                </mat-form-field>\n              </td>\n            </ng-container>\n\n            <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n            <tr mat-row *matRowDef=\"let row; columns: displayedColumns\" class=\"device-row\"></tr>\n          </table>\n\n          <div mx-table-body-empty>\n            <span>No devices configured. Click </span>\n            <button mat-button type=\"button\" (click)=\"addDevice()\">Add Device</button>\n            <span> to create the first device.</span>\n          </div>\n        </mx-table>\n      </form>\n\n      <div class=\"form-debug\" style=\"margin-top: 20px;\">\n        <h4>Form Status</h4>\n        <p><strong>Valid:</strong> {{ deviceForm.valid }}</p>\n        <p><strong>Touched:</strong> {{ deviceForm.touched }}</p>\n        <p><strong>Errors:</strong></p>\n        <pre>{{ getFormErrors() | json }}</pre>\n      </div>\n    </div>\n  `,\n  styles: [\n    `\n      .demo-container {\n        padding: 16px;\n      }\n      .mx-table {\n        width: 100%;\n        min-width: 800px;\n        border: 1px solid #e0e0e0;\n      }\n      .mx-table .mat-mdc-form-field {\n        width: 100%;\n      }\n      .mx-table .mat-mdc-cell {\n        text-align: center;\n        vertical-align: middle;\n      }\n\n      .form-debug {\n        background-color: #f5f5f5;\n        padding: 16px;\n        border-radius: 4px;\n        font-size: 12px;\n      }\n\n      .form-debug pre {\n        background-color: white;\n        padding: 8px;\n        border-radius: 4px;\n        max-height: 200px;\n        overflow-y: auto;\n      }\n    `\n  ]\n})\nexport class MxTableInlineDemoComponent {\n  private fb = inject(FormBuilder);\n\n  deviceForm: FormGroup;\n  displayedColumns: string[] = ['deviceName', 'ipAddress', 'status', 'location', 'description'];\n  dataSource = new MatTableDataSource<FormGroup>();\n\n  // Custom error messages for different field types\n  deviceNameErrorMessages = {\n    required: 'Device name is required',\n    minlength: 'Device name must be at least 3 characters'\n  };\n\n  ipAddressErrorMessages = {\n    required: 'IP address is required',\n    pattern: 'Please enter a valid IP address format (e.g., 192.168.1.1)'\n  };\n\n  statusErrorMessages = {\n    required: 'Please select a device status'\n  };\n\n  locationErrorMessages = {\n    required: 'Device location is required'\n  };\n\n  devices: DeviceItem[] = [\n    {\n      id: 1,\n      deviceName: 'Router-01',\n      ipAddress: '192.168.1.1',\n      status: 'online',\n      location: 'Server Room A',\n      description: 'Main network router'\n    },\n    {\n      id: 2,\n      deviceName: '',\n      ipAddress: '192.168.1.2',\n      status: '' as any,\n      location: '',\n      description: 'Core network switch'\n    }\n  ];\n\n  constructor() {\n    this.deviceForm = this.fb.group({\n      devices: this.fb.array([])\n    });\n\n    this.initializeFormArray();\n  }\n\n  ngAfterViewInit() {\n    this.deviceForm.markAllAsTouched();\n  }\n\n  get deviceFormArray(): FormArray {\n    return this.deviceForm.get('devices') as FormArray;\n  }\n\n  private initializeFormArray(): void {\n    const deviceFormGroups = this.devices.map((device) => this.createDeviceFormGroup(device));\n    const deviceFormArray = this.fb.array(deviceFormGroups);\n    this.deviceForm.setControl('devices', deviceFormArray);\n\n    // Update dataSource for mat-table\n    this.dataSource.data = deviceFormGroups;\n  }\n\n  private createDeviceFormGroup(device?: DeviceItem): FormGroup {\n    return this.fb.group({\n      id: [device?.id || Date.now()],\n      deviceName: [device?.deviceName || '', [Validators.required, Validators.minLength(3)]],\n      ipAddress: [\n        device?.ipAddress || '',\n        [Validators.required, Validators.pattern(/^(?:[0-9]{1,3}\\.){3}[0-9]{1,3}$/)]\n      ],\n      status: [device?.status || '', [Validators.required]],\n      location: [device?.location || '', [Validators.required]],\n      description: [device?.description || '']\n    });\n  }\n\n  addDevice(): void {\n    const newDeviceGroup = this.createDeviceFormGroup();\n    this.deviceFormArray.push(newDeviceGroup);\n\n    // Add to devices array for display\n    this.devices.push({\n      id: Date.now(),\n      deviceName: '',\n      ipAddress: '',\n      status: 'offline',\n      location: '',\n      description: ''\n    });\n\n    // Update dataSource\n    this.dataSource.data = [...this.deviceFormArray.controls] as FormGroup[];\n\n    // Show notification if snackBar is available\n    // this.snackBar.open('New device added', 'Close', { duration: 2000 });\n  }\n\n  getFormErrors(): any {\n    const errors: any = {};\n\n    this.deviceFormArray.controls.forEach((control, index) => {\n      const deviceErrors: any = {};\n      const group = control as FormGroup;\n      Object.keys(group.controls).forEach((key) => {\n        const fieldControl = group.get(key);\n        if (fieldControl && fieldControl.errors) {\n          deviceErrors[key] = fieldControl.errors;\n        }\n      });\n\n      if (Object.keys(deviceErrors).length > 0) {\n        errors[`device_${index}`] = deviceErrors;\n      }\n    });\n\n    return errors;\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2"],"mappings":"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"}