{"version":3,"file":"ngx-formly-material-select.mjs","sources":["../../../../src/ui/material/select/src/select.type.ts","../../../../src/ui/material/select/src/select.config.ts","../../../../src/ui/material/select/src/select.module.ts","../../../../src/ui/material/select/src/ngx-formly-material-select.ts"],"sourcesContent":["import { Component, ChangeDetectionStrategy, Type, ViewChild } from '@angular/core';\nimport { MatSelect, MatSelectChange } from '@angular/material/select';\nimport { FieldTypeConfig, FormlyFieldConfig, ɵobserve as observe } from '@ngx-formly/core';\nimport { FieldType, FormlyFieldProps } from '@ngx-formly/material/form-field';\nimport { FormlyFieldSelectProps } from '@ngx-formly/core/select';\n\ninterface SelectProps extends FormlyFieldProps, FormlyFieldSelectProps {\n  multiple?: boolean;\n  selectAllOption?: string;\n  disableOptionCentering?: boolean;\n  typeaheadDebounceInterval?: number;\n  compareWith?: (o1: any, o2: any) => boolean;\n  panelClass?: string;\n}\n\nexport interface FormlySelectFieldConfig extends FormlyFieldConfig<SelectProps> {\n  type: 'select' | Type<FormlyFieldSelect>;\n}\n\n@Component({\n  selector: 'formly-field-mat-select',\n  template: `\n    <ng-template #selectAll let-selectOptions=\"selectOptions\">\n      <mat-option (click)=\"toggleSelectAll(selectOptions)\">\n        <mat-pseudo-checkbox class=\"mat-option-pseudo-checkbox\" [state]=\"getSelectAllState(selectOptions)\">\n        </mat-pseudo-checkbox>\n        {{ props.selectAllOption }}\n      </mat-option>\n    </ng-template>\n\n    <mat-select\n      [id]=\"id\"\n      [formControl]=\"formControl\"\n      [formlyAttributes]=\"field\"\n      [placeholder]=\"props.placeholder\"\n      [tabIndex]=\"props.tabindex\"\n      [required]=\"required\"\n      [compareWith]=\"props.compareWith\"\n      [multiple]=\"props.multiple\"\n      (selectionChange)=\"change($event)\"\n      [errorStateMatcher]=\"errorStateMatcher\"\n      [aria-label]=\"_getAriaLabel()\"\n      [aria-labelledby]=\"_getAriaLabelledby()\"\n      [disableOptionCentering]=\"props.disableOptionCentering\"\n      [typeaheadDebounceInterval]=\"props.typeaheadDebounceInterval\"\n      [panelClass]=\"props.panelClass\"\n    >\n      @if (props.options | formlySelectOptions: field | async; as selectOptions) {\n        @if (props.multiple && props.selectAllOption) {\n          <ng-container [ngTemplateOutlet]=\"selectAll\" [ngTemplateOutletContext]=\"{ selectOptions: selectOptions }\">\n          </ng-container>\n        }\n        @for (item of selectOptions; track $index) {\n          @if (item.group) {\n            <mat-optgroup [label]=\"item.label\">\n              @for (child of item.group; track $index) {\n                <mat-option [value]=\"child.value\" [disabled]=\"child.disabled\">\n                  {{ child.label }}\n                </mat-option>\n              }\n            </mat-optgroup>\n          } @else {\n            <mat-option [value]=\"item.value\" [disabled]=\"item.disabled\">{{ item.label }}</mat-option>\n          }\n        }\n      }\n    </mat-select>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FormlyFieldSelect extends FieldType<FieldTypeConfig<SelectProps>> {\n  @ViewChild(MatSelect, { static: true }) set select(select: any) {\n    observe(select, ['_parentFormField', '_textField'], ({ currentValue }) => {\n      if (currentValue) {\n        select._preferredOverlayOrigin = select._parentFormField.getConnectedOverlayOrigin();\n      }\n    });\n  }\n  override defaultOptions = {\n    props: {\n      compareWith(o1: any, o2: any) {\n        return o1 === o2;\n      },\n    },\n  };\n\n  private selectAllValue!: { options: any; value: any[] };\n\n  getSelectAllState(options: any[]) {\n    if (this.empty || this.value.length === 0) {\n      return null;\n    }\n\n    return this.value.length !== this.getSelectAllValue(options).length ? 'indeterminate' : 'checked';\n  }\n\n  toggleSelectAll(options: any[]) {\n    const selectAllValue = this.getSelectAllValue(options);\n    this.formControl.markAsDirty();\n    this.formControl.setValue(!this.value || this.value.length !== selectAllValue.length ? selectAllValue : []);\n  }\n\n  change($event: MatSelectChange) {\n    this.props.change?.(this.field, $event);\n  }\n\n  _getAriaLabelledby() {\n    if (this.props.attributes?.['aria-labelledby']) {\n      return this.props.attributes['aria-labelledby'] as string;\n    }\n\n    return this.formField?._labelId;\n  }\n\n  _getAriaLabel() {\n    return this.props.attributes?.['aria-label'] as string;\n  }\n\n  private getSelectAllValue(options: any[]) {\n    if (!this.selectAllValue || options !== this.selectAllValue.options) {\n      const flatOptions: any[] = [];\n      options.forEach((o) => (o.group ? flatOptions.push(...o.group) : flatOptions.push(o)));\n\n      this.selectAllValue = {\n        options,\n        value: flatOptions.filter((o) => !o.disabled).map((o) => o.value),\n      };\n    }\n\n    return this.selectAllValue.value;\n  }\n}\n","import { ConfigOption } from '@ngx-formly/core';\nimport { FormlyFieldSelect } from './select.type';\n\nexport function withFormlyFieldSelect(): ConfigOption {\n  return {\n    types: [\n      {\n        name: 'select',\n        component: FormlyFieldSelect,\n        wrappers: ['form-field'],\n      },\n      { name: 'enum', extends: 'select' },\n    ],\n  };\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { FormlyModule } from '@ngx-formly/core';\nimport { FormlySelectModule } from '@ngx-formly/core/select';\n\nimport { FormlyMatFormFieldModule } from '@ngx-formly/material/form-field';\nimport { MatSelectModule } from '@angular/material/select';\n\nimport { FormlyFieldSelect } from './select.type';\nimport { MatPseudoCheckboxModule } from '@angular/material/core';\nimport { withFormlyFieldSelect } from './select.config';\n\n@NgModule({\n  declarations: [FormlyFieldSelect],\n  imports: [\n    CommonModule,\n    ReactiveFormsModule,\n    MatSelectModule,\n    MatPseudoCheckboxModule,\n\n    FormlyMatFormFieldModule,\n    FormlySelectModule,\n    FormlyModule.forChild(withFormlyFieldSelect()),\n  ],\n})\nexport class FormlyMatSelectModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["observe","i1"],"mappings":"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"}