{"version":3,"file":"moxa-formoxa-mx-table.mjs","sources":["../../../../libs/formoxa/mx-table/src/lib/directives/mx-table.directive.ts","../../../../libs/formoxa/mx-table/src/lib/services/mx-table-intl.service.ts","../../../../libs/formoxa/mx-table/src/lib/components/mx-table.component.ts","../../../../libs/formoxa/mx-table/src/lib/components/mx-table.component.html","../../../../libs/formoxa/mx-table/src/moxa-formoxa-mx-table.ts"],"sourcesContent":["import { Directive, Input, booleanAttribute } from '@angular/core';\n\n@Directive({\n  selector:\n    'th[mxTableThIsAccordion], th[mxTableThIsCheckbox], th[mxTableThIsRadio], th[mxTableThIsAction], td[mxTableTdIsAccordion], td[mxTableTdIsCheckbox], td[mxTableTdIsRadio], td[mxTableTdIsIndentation], tr[mxTableTrIsGroup], tr[mxTableTrIsChild], tr[mxTableTrIsCollopsed]',\n  standalone: true,\n  host: {\n    '[class.mx-table__th--accordion]': 'mxTableThIsAccordion',\n    '[class.mx-table__th--checkbox]': 'mxTableThIsCheckbox',\n    '[class.mx-table__th--radio]': 'mxTableThIsRadio',\n    '[class.mx-table__th--action]': 'mxTableThIsAction',\n    '[class.mx-table__td--accordion]': 'mxTableTdIsAccordion',\n    '[class.mx-table__td--checkbox]': 'mxTableTdIsCheckbox',\n    '[class.mx-table__td--radio]': 'mxTableTdIsRadio',\n    '[class.mx-table__td--indentation]': 'mxTableTdIsIndentation',\n    '[class.mx-table__tr--collopsed]': 'mxTableTrIsCollopsed',\n    '[class.mx-table__tr--group]': 'mxTableTrIsGroup',\n    '[class.mx-table__tr--child]': 'mxTableTrIsChild'\n  }\n})\nexport class MxTableDirective {\n  @Input({ transform: booleanAttribute }) mxTableThIsAccordion = false;\n  @Input({ transform: booleanAttribute }) mxTableThIsCheckbox = false;\n  @Input({ transform: booleanAttribute }) mxTableThIsRadio = false;\n  @Input({ transform: booleanAttribute }) mxTableThIsAction = false;\n  @Input({ transform: booleanAttribute }) mxTableTdIsAccordion = false;\n  @Input({ transform: booleanAttribute }) mxTableTdIsCheckbox = false;\n  @Input({ transform: booleanAttribute }) mxTableTdIsRadio = false;\n  @Input({ transform: booleanAttribute }) mxTableTdIsIndentation = false;\n  @Input({ transform: booleanAttribute }) mxTableTrIsGroup = false;\n  @Input({ transform: booleanAttribute }) mxTableTrIsChild = false;\n  @Input({ transform: booleanAttribute }) mxTableTrIsCollopsed = false;\n  constructor() {}\n}\n","import { Injectable, Optional, Provider, SkipSelf } from '@angular/core';\nimport { TranslationLabels, TranslationService } from '@moxa/formoxa/mx-shared';\n\nexport interface MxTableIntlLabels extends TranslationLabels {\n  selectedLabel: (selectedCount: number) => string;\n  selectAllLabel: (totalCount: number) => string;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class MxTableIntlService extends TranslationService<MxTableIntlLabels> {\n  defaultLabels: MxTableIntlLabels = {\n    selectedLabel: (selectedCount: number) => `${selectedCount} selected`,\n    selectAllLabel: (totalCount: number) => `Select all (${totalCount})`\n  };\n\n  constructor() {\n    super();\n    this.registerTranslations('en', this.defaultLabels);\n  }\n}\n\nexport function MX_TABLE_INTL_PROVIDER_FACTORY(parent: MxTableIntlService): MxTableIntlService {\n  return parent || new MxTableIntlService();\n}\n\nexport const MX_TABLE_INTL_PROVIDER: Provider = {\n  provide: MxTableIntlService,\n  useFactory: MX_TABLE_INTL_PROVIDER_FACTORY,\n  deps: [[new Optional(), new SkipSelf(), MxTableIntlService]]\n};\n","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  booleanAttribute,\n  computed,\n  inject,\n  input,\n  output,\n  signal,\n  viewChild\n} from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MxIconButtonDirective } from '@moxa/formoxa/mx-button';\nimport { MxLoadingDirective } from '@moxa/formoxa/mx-loading';\nimport { MxTableDirective } from '../directives';\nimport { MX_TABLE_INTL_PROVIDER, MxTableIntlService } from '../services/mx-table-intl.service';\nexport interface MxTableSelectionMode {\n  inSelectionMode: boolean;\n  selectedCount: number;\n  totalCount: number;\n  showSelectAll: boolean;\n}\n\n@Component({\n  selector: 'mx-table',\n  standalone: true,\n  templateUrl: './mx-table.component.html',\n  styleUrls: ['./mx-table.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [MxIconButtonDirective, MatButtonModule, MatIconModule],\n  providers: [MX_TABLE_INTL_PROVIDER],\n  hostDirectives: [\n    { directive: MxLoadingDirective, inputs: ['mxLoading: isLoading'] },\n    {\n      directive: MxTableDirective,\n      inputs: [\n        'mxTableThIsAccordion',\n        'mxTableThIsCheckbox',\n        'mxTableThIsAction',\n        'mxTableTdIsAccordion',\n        'mxTableTdIsCheckbox',\n        'mxTableThIsRadio',\n        'mxTableTdIsRadio',\n        'mxTableTdIsIndentation',\n        'mxTableTrIsGroup',\n        'mxTableTrIsChild',\n        'mxTableTrIsCollopsed'\n      ]\n    }\n  ]\n})\nexport class MxTableComponent implements AfterViewInit {\n  readonly intl = inject(MxTableIntlService);\n\n  readonly isLoading = input(false, { transform: booleanAttribute });\n  readonly isDataEmpty = input(false, { transform: booleanAttribute });\n  readonly isVerticalSticky = input(false, { transform: booleanAttribute });\n  readonly selectionMode = input<MxTableSelectionMode | null>(null);\n  readonly maxHeight = input<number>(500);\n\n  readonly selectAll = output<void>();\n  readonly clearSelection = output<void>();\n\n  readonly toolbarRef = viewChild.required<ElementRef>('toolbar');\n  readonly toolbarLeftRef = viewChild.required<ElementRef>('toolbarLeft');\n  readonly toolbarRightRef = viewChild.required<ElementRef>('toolbarRight');\n  readonly footerRef = viewChild.required<ElementRef>('footer');\n\n  readonly hideToolbar = signal(false);\n  readonly hideFooter = computed(() => this.footerRef()?.nativeElement.childElementCount === 0);\n  readonly tableBodyHeight = computed(() => {\n    if (this.isVerticalSticky()) {\n      const toolbarHeight = this.toolbarRef()?.nativeElement.offsetHeight ?? 0;\n      const footerHeight = this.footerRef()?.nativeElement.offsetHeight ?? 0;\n      return this.maxHeight() - (toolbarHeight + footerHeight) + 'px';\n    }\n    return 'auto';\n  });\n\n  readonly inSelectionMode = computed(() => this.selectionMode()?.inSelectionMode ?? false);\n  readonly selectedCount = computed(() => this.selectionMode()?.selectedCount ?? 0);\n  readonly totalCount = computed(() => this.selectionMode()?.totalCount ?? 0);\n  readonly showSelectAll = computed(\n    () =>\n      this.selectionMode() !== null && this.selectionMode()?.showSelectAll && this.selectedCount() < this.totalCount()\n  );\n\n  ngAfterViewInit(): void {\n    this.hideToolbar.set(\n      this.toolbarLeftRef()?.nativeElement.childElementCount === 0 &&\n        this.toolbarRightRef()?.nativeElement.childElementCount === 0\n    );\n  }\n}\n","<div class=\"mx-table__toolbar\" [class.hide]=\"hideToolbar()\" #toolbar>\n  <div class=\"mx-table__toolbar--left\" #toolbarLeft>\n    @if (inSelectionMode()) {\n      <div class=\"mx-table__toolbar-selection\">\n        <span class=\"gl-body-sm subtitle\">{{ intl.translate('selectedLabel', selectedCount()) }} </span>\n        @if (showSelectAll()) {\n          <button mat-button (click)=\"selectAll.emit()\">{{ intl.translate('selectAllLabel', totalCount()) }}</button>\n        }\n      </div>\n      <ng-content select=\"[mx-table-toolbar-left-selection-mode]\"></ng-content>\n    } @else {\n      <ng-content select=\"[mx-table-toolbar-left]\"></ng-content>\n    }\n  </div>\n  <div class=\"mx-table__toolbar--right\" #toolbarRight>\n    @if (inSelectionMode()) {\n      <button mat-icon-button mxIconButton mxIconButtonSize=\"sm\" (click)=\"clearSelection.emit()\">\n        <mat-icon svgIcon=\"icon:clear\"></mat-icon>\n      </button>\n    } @else {\n      <ng-content select=\"[mx-table-toolbar-right]\"></ng-content>\n    }\n  </div>\n</div>\n<div class=\"mx-table__body\" [style.max-height]=\"tableBodyHeight()\">\n  <ng-content select=\"[mx-table-body]\"></ng-content>\n  @if (isDataEmpty()) {\n    <div class=\"mx-table__body--empty\">\n      <ng-content select=\"[mx-table-body-empty]\"></ng-content>\n    </div>\n  }\n</div>\n<div class=\"mx-table__footer\" #footer [class.hide]=\"hideFooter()\">\n  <ng-content select=\"[mx-table-footer]\"></ng-content>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2.MxTableDirective"],"mappings":"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"}