{"version":3,"file":"c8y-ngx-components-operations-device-selector.mjs","sources":["../../operations/device-selector/device-selector.component.ts","../../operations/device-selector/device-selector.component.html","../../operations/device-selector/device-selector.module.ts","../../operations/device-selector/c8y-ngx-components-operations-device-selector.ts"],"sourcesContent":["import {\n  Component,\n  EventEmitter,\n  Input,\n  OnDestroy,\n  OnInit,\n  Output,\n  ViewChild\n} from '@angular/core';\nimport {\n  Column,\n  DATA_GRID_CONFIGURATION_CONTEXT,\n  DATA_GRID_CONFIGURATION_STRATEGY,\n  FilteringActionType,\n  UserPreferencesConfigurationStrategy,\n  UserPreferencesGridConfigContext,\n  ProductExperienceDirective,\n  C8yTranslatePipe\n} from '@c8y/ngx-components';\nimport {\n  AlarmsDeviceGridColumn,\n  DeviceGridComponent,\n  GroupDeviceGridColumn,\n  ModelDeviceGridColumn,\n  NameDeviceGridColumn,\n  RegistrationDateDeviceGridColumn,\n  StatusDeviceGridColumn,\n  TypeDeviceGridColumn\n} from '@c8y/ngx-components/device-grid';\nimport { Observable, Subject } from 'rxjs';\nimport { distinctUntilChanged, takeUntil } from 'rxjs/operators';\n\nconst GRID_CONFIG_KEY = 'device-grid-bulk';\n@Component({\n  selector: 'c8y-device-selector',\n  templateUrl: 'device-selector.component.html',\n  providers: [\n    {\n      provide: DATA_GRID_CONFIGURATION_STRATEGY,\n      useClass: UserPreferencesConfigurationStrategy\n    },\n    {\n      provide: DATA_GRID_CONFIGURATION_CONTEXT,\n      useValue: DeviceSelectorComponent.GRID_CONFIG_CONTEXT\n    }\n  ],\n  imports: [DeviceGridComponent, ProductExperienceDirective, C8yTranslatePipe]\n})\nexport class DeviceSelectorComponent implements OnInit, OnDestroy {\n  static readonly GRID_CONFIG_CONTEXT: UserPreferencesGridConfigContext = {\n    key: GRID_CONFIG_KEY,\n    configFilter: {\n      filter: false\n    }\n  };\n\n  @ViewChild(DeviceGridComponent, { static: true })\n  deviceGrid: DeviceGridComponent;\n\n  @Input()\n  deviceTypes: Observable<string[]>;\n\n  typeColumn: Column = new TypeDeviceGridColumn();\n\n  @Output()\n  onDeviceQueryStringChange: EventEmitter<string> = new EventEmitter<string>();\n\n  columns: Column[] = [\n    new StatusDeviceGridColumn(),\n    new NameDeviceGridColumn(),\n    this.typeColumn,\n    new ModelDeviceGridColumn(),\n    new GroupDeviceGridColumn(),\n    new RegistrationDateDeviceGridColumn(),\n    new AlarmsDeviceGridColumn()\n  ];\n\n  private unsubscribe$: Subject<boolean> = new Subject();\n\n  ngOnInit(): void {\n    if (this.deviceTypes) {\n      this.deviceTypes\n        .pipe(distinctUntilChanged(), takeUntil(this.unsubscribe$))\n        .subscribe((types: string[]) => {\n          // there is a concurrency issue when updateFiltering is called before the columns have actually been passed into the grid\n          // so we are already updating the typeColumn here additionally so in case updateFiltering has no affect, the type column is still correctly filtered\n          // \"Dynamic group created for bulk operation should be invisible\" cypress tests of configurationUpdateBulkOperation.cy.ts started failing otherwise\n          this.typeColumn.externalFilterQuery = { types };\n\n          this.deviceGrid.updateFiltering([this.typeColumn.name], {\n            type:\n              types && types.length\n                ? FilteringActionType.ApplyFilter\n                : FilteringActionType.ResetFilter,\n            payload: types\n              ? {\n                  filteringModifier: {\n                    externalFilterQuery: {\n                      types\n                    }\n                  }\n                }\n              : undefined\n          });\n        });\n    }\n  }\n\n  ngOnDestroy(): void {\n    this.unsubscribe$.next(true);\n    this.unsubscribe$.complete();\n  }\n}\n","<c8y-device-grid\n  [title]=\"'Target devices' | translate\"\n  [columns]=\"columns\"\n  [infiniteScroll]=\"'auto'\"\n  [showSearch]=\"false\"\n  (onDeviceQueryStringChange)=\"onDeviceQueryStringChange.emit($event)\"\n  c8yProductExperience\n  [actionName]=\"'bulkOperations'\"\n></c8y-device-grid>\n","import { NgModule } from '@angular/core';\nimport { DeviceSelectorComponent } from './device-selector.component';\n\n/**\n * This module provides a component for selecting devices based on filters.\n */\n@NgModule({\n  imports: [DeviceSelectorComponent],\n  exports: [DeviceSelectorComponent]\n})\nexport class DeviceSelectorModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}