@c8y/ngx-components 1023.71.1 → 1023.75.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (163) hide show
  1. package/asset-properties/index.d.ts +19 -1
  2. package/asset-properties/index.d.ts.map +1 -1
  3. package/cockpit-config/index.d.ts +4 -3
  4. package/cockpit-config/index.d.ts.map +1 -1
  5. package/context-dashboard/index.d.ts +202 -4
  6. package/context-dashboard/index.d.ts.map +1 -1
  7. package/datapoints-export-selector/index.d.ts +8 -1
  8. package/datapoints-export-selector/index.d.ts.map +1 -1
  9. package/device-profile/index.d.ts +8 -1
  10. package/device-profile/index.d.ts.map +1 -1
  11. package/events/cockpit/index.d.ts +6 -0
  12. package/events/cockpit/index.d.ts.map +1 -0
  13. package/events/devicemanagement/index.d.ts +6 -0
  14. package/events/devicemanagement/index.d.ts.map +1 -0
  15. package/events/events-timeline/index.d.ts +10 -10
  16. package/events/events-timeline/index.d.ts.map +1 -1
  17. package/events/index.d.ts +363 -5
  18. package/events/index.d.ts.map +1 -1
  19. package/fesm2022/c8y-ngx-components-alarm-event-selector.mjs +1 -1
  20. package/fesm2022/c8y-ngx-components-alarm-event-selector.mjs.map +1 -1
  21. package/fesm2022/c8y-ngx-components-alarms.mjs +1 -1
  22. package/fesm2022/c8y-ngx-components-alarms.mjs.map +1 -1
  23. package/fesm2022/c8y-ngx-components-asset-properties.mjs +2 -2
  24. package/fesm2022/c8y-ngx-components-asset-properties.mjs.map +1 -1
  25. package/fesm2022/c8y-ngx-components-auth-configuration.mjs +1 -1
  26. package/fesm2022/c8y-ngx-components-auth-configuration.mjs.map +1 -1
  27. package/fesm2022/c8y-ngx-components-branding-shared-lazy-add-branding-modal.mjs +1 -1
  28. package/fesm2022/c8y-ngx-components-branding-shared-lazy-add-branding-modal.mjs.map +1 -1
  29. package/fesm2022/c8y-ngx-components-branding-shared-lazy.mjs +2 -2
  30. package/fesm2022/c8y-ngx-components-branding-shared-lazy.mjs.map +1 -1
  31. package/fesm2022/c8y-ngx-components-cockpit-config.mjs +8 -11
  32. package/fesm2022/c8y-ngx-components-cockpit-config.mjs.map +1 -1
  33. package/fesm2022/{c8y-ngx-components-computed-asset-properties-alarm-count-config.component-CPLDClTp.mjs → c8y-ngx-components-computed-asset-properties-alarm-count-config.component-DX9Rgjgl.mjs} +2 -2
  34. package/fesm2022/{c8y-ngx-components-computed-asset-properties-alarm-count-config.component-CPLDClTp.mjs.map → c8y-ngx-components-computed-asset-properties-alarm-count-config.component-DX9Rgjgl.mjs.map} +1 -1
  35. package/fesm2022/{c8y-ngx-components-computed-asset-properties-c8y-ngx-components-computed-asset-properties-9be_iMQg.mjs → c8y-ngx-components-computed-asset-properties-c8y-ngx-components-computed-asset-properties-CRpLJ5H7.mjs} +8 -8
  36. package/fesm2022/{c8y-ngx-components-computed-asset-properties-c8y-ngx-components-computed-asset-properties-9be_iMQg.mjs.map → c8y-ngx-components-computed-asset-properties-c8y-ngx-components-computed-asset-properties-CRpLJ5H7.mjs.map} +1 -1
  37. package/fesm2022/{c8y-ngx-components-computed-asset-properties-configuration-snapshot-config.component-B2em01_W.mjs → c8y-ngx-components-computed-asset-properties-configuration-snapshot-config.component-2rDsrxcs.mjs} +2 -2
  38. package/fesm2022/{c8y-ngx-components-computed-asset-properties-configuration-snapshot-config.component-B2em01_W.mjs.map → c8y-ngx-components-computed-asset-properties-configuration-snapshot-config.component-2rDsrxcs.mjs.map} +1 -1
  39. package/fesm2022/{c8y-ngx-components-computed-asset-properties-event-count-config.component-CQuGa1RI.mjs → c8y-ngx-components-computed-asset-properties-event-count-config.component-BJNoqWZf.mjs} +2 -2
  40. package/fesm2022/{c8y-ngx-components-computed-asset-properties-event-count-config.component-CQuGa1RI.mjs.map → c8y-ngx-components-computed-asset-properties-event-count-config.component-BJNoqWZf.mjs.map} +1 -1
  41. package/fesm2022/{c8y-ngx-components-computed-asset-properties-fieldbus-item-status-config.component-CkmurxJv.mjs → c8y-ngx-components-computed-asset-properties-fieldbus-item-status-config.component-DYac6foX.mjs} +3 -3
  42. package/fesm2022/{c8y-ngx-components-computed-asset-properties-fieldbus-item-status-config.component-CkmurxJv.mjs.map → c8y-ngx-components-computed-asset-properties-fieldbus-item-status-config.component-DYac6foX.mjs.map} +1 -1
  43. package/fesm2022/{c8y-ngx-components-computed-asset-properties-last-measurement-config.component-CTK9zNUh.mjs → c8y-ngx-components-computed-asset-properties-last-measurement-config.component-3yTe6lIr.mjs} +3 -3
  44. package/fesm2022/{c8y-ngx-components-computed-asset-properties-last-measurement-config.component-CTK9zNUh.mjs.map → c8y-ngx-components-computed-asset-properties-last-measurement-config.component-3yTe6lIr.mjs.map} +1 -1
  45. package/fesm2022/c8y-ngx-components-computed-asset-properties.mjs +1 -1
  46. package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-appearance-settings.component-DsCDppJx.mjs → c8y-ngx-components-context-dashboard-dashboard-appearance-settings.component-C7yXSDYC.mjs} +3 -3
  47. package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-appearance-settings.component-DsCDppJx.mjs.map → c8y-ngx-components-context-dashboard-dashboard-appearance-settings.component-C7yXSDYC.mjs.map} +1 -1
  48. package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-general-settings.component-RdLW5nde.mjs → c8y-ngx-components-context-dashboard-dashboard-general-settings.component-w8N16Z3t.mjs} +4 -4
  49. package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-general-settings.component-RdLW5nde.mjs.map → c8y-ngx-components-context-dashboard-dashboard-general-settings.component-w8N16Z3t.mjs.map} +1 -1
  50. package/fesm2022/c8y-ngx-components-context-dashboard.mjs +561 -21
  51. package/fesm2022/c8y-ngx-components-context-dashboard.mjs.map +1 -1
  52. package/fesm2022/c8y-ngx-components-datapoint-explorer-view.mjs +2 -2
  53. package/fesm2022/c8y-ngx-components-datapoint-explorer-view.mjs.map +1 -1
  54. package/fesm2022/c8y-ngx-components-datapoint-library-details.mjs +1 -1
  55. package/fesm2022/c8y-ngx-components-datapoint-library-details.mjs.map +1 -1
  56. package/fesm2022/c8y-ngx-components-datapoint-selector.mjs +1 -1
  57. package/fesm2022/c8y-ngx-components-datapoint-selector.mjs.map +1 -1
  58. package/fesm2022/c8y-ngx-components-datapoints-export-selector.mjs +41 -8
  59. package/fesm2022/c8y-ngx-components-datapoints-export-selector.mjs.map +1 -1
  60. package/fesm2022/c8y-ngx-components-device-profile.mjs +38 -12
  61. package/fesm2022/c8y-ngx-components-device-profile.mjs.map +1 -1
  62. package/fesm2022/c8y-ngx-components-ecosystem-license-confirm.mjs +1 -1
  63. package/fesm2022/c8y-ngx-components-ecosystem-license-confirm.mjs.map +1 -1
  64. package/fesm2022/c8y-ngx-components-ecosystem-shared.mjs +1 -1
  65. package/fesm2022/c8y-ngx-components-ecosystem-shared.mjs.map +1 -1
  66. package/fesm2022/c8y-ngx-components-ecosystem.mjs +1 -1
  67. package/fesm2022/c8y-ngx-components-ecosystem.mjs.map +1 -1
  68. package/fesm2022/c8y-ngx-components-events-cockpit.mjs +54 -0
  69. package/fesm2022/c8y-ngx-components-events-cockpit.mjs.map +1 -0
  70. package/fesm2022/c8y-ngx-components-events-devicemanagement.mjs +79 -0
  71. package/fesm2022/c8y-ngx-components-events-devicemanagement.mjs.map +1 -0
  72. package/fesm2022/c8y-ngx-components-events-events-timeline.mjs +30 -23
  73. package/fesm2022/c8y-ngx-components-events-events-timeline.mjs.map +1 -1
  74. package/fesm2022/c8y-ngx-components-events.mjs +1080 -4
  75. package/fesm2022/c8y-ngx-components-events.mjs.map +1 -1
  76. package/fesm2022/c8y-ngx-components-file-preview.mjs +48 -41
  77. package/fesm2022/c8y-ngx-components-file-preview.mjs.map +1 -1
  78. package/fesm2022/c8y-ngx-components-files-repository.mjs +1 -1
  79. package/fesm2022/c8y-ngx-components-files-repository.mjs.map +1 -1
  80. package/fesm2022/c8y-ngx-components-global-context.mjs +68 -34
  81. package/fesm2022/c8y-ngx-components-global-context.mjs.map +1 -1
  82. package/fesm2022/c8y-ngx-components-interval-picker.mjs +3 -3
  83. package/fesm2022/c8y-ngx-components-interval-picker.mjs.map +1 -1
  84. package/fesm2022/c8y-ngx-components-location.mjs +1 -1
  85. package/fesm2022/c8y-ngx-components-location.mjs.map +1 -1
  86. package/fesm2022/c8y-ngx-components-operation-picker.mjs +1 -1
  87. package/fesm2022/c8y-ngx-components-operation-picker.mjs.map +1 -1
  88. package/fesm2022/c8y-ngx-components-operations-bulk-operation-scheduler.mjs +1 -1
  89. package/fesm2022/c8y-ngx-components-operations-bulk-operation-scheduler.mjs.map +1 -1
  90. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-device-profile.mjs +1 -1
  91. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-device-profile.mjs.map +1 -1
  92. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-software.mjs +1 -1
  93. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-software.mjs.map +1 -1
  94. package/fesm2022/c8y-ngx-components-protocol-lpwan.mjs +5 -5
  95. package/fesm2022/c8y-ngx-components-protocol-lpwan.mjs.map +1 -1
  96. package/fesm2022/c8y-ngx-components-protocol-opcua.mjs +2 -2
  97. package/fesm2022/c8y-ngx-components-protocol-opcua.mjs.map +1 -1
  98. package/fesm2022/c8y-ngx-components-remote-access-shared.mjs +1 -1
  99. package/fesm2022/c8y-ngx-components-remote-access-shared.mjs.map +1 -1
  100. package/fesm2022/c8y-ngx-components-remote-access-ssh-remote-access-ssh-endpoint-modal.mjs +1 -1
  101. package/fesm2022/c8y-ngx-components-remote-access-ssh-remote-access-ssh-endpoint-modal.mjs.map +1 -1
  102. package/fesm2022/c8y-ngx-components-remote-access-vnc-remote-access-vnc-endpoint-modal.mjs +1 -1
  103. package/fesm2022/c8y-ngx-components-remote-access-vnc-remote-access-vnc-endpoint-modal.mjs.map +1 -1
  104. package/fesm2022/c8y-ngx-components-remote-access-vnc-vnc-viewer.mjs +1 -1
  105. package/fesm2022/c8y-ngx-components-remote-access-vnc-vnc-viewer.mjs.map +1 -1
  106. package/fesm2022/c8y-ngx-components-repository-firmware.mjs +1 -1
  107. package/fesm2022/c8y-ngx-components-repository-firmware.mjs.map +1 -1
  108. package/fesm2022/c8y-ngx-components-static-assets-modal.mjs +1 -1
  109. package/fesm2022/c8y-ngx-components-static-assets-modal.mjs.map +1 -1
  110. package/fesm2022/c8y-ngx-components-time-context.mjs +1 -1
  111. package/fesm2022/c8y-ngx-components-time-context.mjs.map +1 -1
  112. package/fesm2022/c8y-ngx-components-translation-editor-lazy.mjs +1 -1
  113. package/fesm2022/c8y-ngx-components-translation-editor-lazy.mjs.map +1 -1
  114. package/fesm2022/c8y-ngx-components-widgets-definitions-event-list.mjs +39 -1
  115. package/fesm2022/c8y-ngx-components-widgets-definitions-event-list.mjs.map +1 -1
  116. package/fesm2022/c8y-ngx-components-widgets-definitions-html-widget.mjs +76 -4
  117. package/fesm2022/c8y-ngx-components-widgets-definitions-html-widget.mjs.map +1 -1
  118. package/fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs +1 -1
  119. package/fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs.map +1 -1
  120. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-graph.mjs +1 -1
  121. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-graph.mjs.map +1 -1
  122. package/fesm2022/c8y-ngx-components-widgets-implementations-events.mjs +236 -0
  123. package/fesm2022/c8y-ngx-components-widgets-implementations-events.mjs.map +1 -0
  124. package/fesm2022/c8y-ngx-components-widgets-implementations-html-widget.mjs +271 -31
  125. package/fesm2022/c8y-ngx-components-widgets-implementations-html-widget.mjs.map +1 -1
  126. package/fesm2022/c8y-ngx-components-widgets-implementations-image.mjs +1 -1
  127. package/fesm2022/c8y-ngx-components-widgets-implementations-image.mjs.map +1 -1
  128. package/fesm2022/c8y-ngx-components-widgets-implementations-info-gauge.mjs +1 -1
  129. package/fesm2022/c8y-ngx-components-widgets-implementations-info-gauge.mjs.map +1 -1
  130. package/fesm2022/c8y-ngx-components-widgets-implementations-kpi.mjs +1 -1
  131. package/fesm2022/c8y-ngx-components-widgets-implementations-kpi.mjs.map +1 -1
  132. package/fesm2022/c8y-ngx-components-widgets-implementations-linear-gauge.mjs +1 -1
  133. package/fesm2022/c8y-ngx-components-widgets-implementations-linear-gauge.mjs.map +1 -1
  134. package/fesm2022/c8y-ngx-components-widgets-implementations-map.mjs +1 -1
  135. package/fesm2022/c8y-ngx-components-widgets-implementations-map.mjs.map +1 -1
  136. package/fesm2022/c8y-ngx-components.mjs +248 -26
  137. package/fesm2022/c8y-ngx-components.mjs.map +1 -1
  138. package/file-preview/index.d.ts +7 -6
  139. package/file-preview/index.d.ts.map +1 -1
  140. package/global-context/index.d.ts +3 -0
  141. package/global-context/index.d.ts.map +1 -1
  142. package/index.d.ts +106 -11
  143. package/index.d.ts.map +1 -1
  144. package/locales/de.po +117 -3
  145. package/locales/es.po +117 -3
  146. package/locales/fr.po +117 -3
  147. package/locales/ja_JP.po +117 -3
  148. package/locales/ko.po +117 -3
  149. package/locales/locales.pot +117 -3
  150. package/locales/nl.po +117 -3
  151. package/locales/pl.po +117 -3
  152. package/locales/pt_BR.po +117 -3
  153. package/locales/zh_CN.po +117 -3
  154. package/locales/zh_TW.po +117 -3
  155. package/package.json +1 -1
  156. package/widgets/definitions/event-list/index.d.ts +44 -1
  157. package/widgets/definitions/event-list/index.d.ts.map +1 -1
  158. package/widgets/implementations/alarms/index.d.ts +2 -0
  159. package/widgets/implementations/alarms/index.d.ts.map +1 -1
  160. package/widgets/implementations/events/index.d.ts +89 -0
  161. package/widgets/implementations/events/index.d.ts.map +1 -0
  162. package/widgets/implementations/html-widget/index.d.ts +69 -9
  163. package/widgets/implementations/html-widget/index.d.ts.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"c8y-ngx-components-operations-bulk-operation-scheduler.mjs","sources":["../../operations/bulk-operation-scheduler/operation-scheduler.component.ts","../../operations/bulk-operation-scheduler/operation-scheduler.component.html","../../operations/bulk-operation-scheduler/bulk-operation-scheduler.module.ts","../../operations/bulk-operation-scheduler/c8y-ngx-components-operations-bulk-operation-scheduler.ts"],"sourcesContent":["import { Component, forwardRef, Input, OnDestroy, OnInit } from '@angular/core';\nimport {\n ControlValueAccessor,\n FormBuilder,\n FormControl,\n FormGroup,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator,\n Validators,\n FormsModule,\n ReactiveFormsModule\n} from '@angular/forms';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport {\n DateFormatService,\n OptionsService,\n C8yTranslateDirective,\n FormGroupComponent,\n RequiredInputPlaceholderDirective,\n MessagesComponent,\n MessageDirective,\n C8yTranslatePipe\n} from '@c8y/ngx-components';\nimport { isEmpty } from 'lodash-es';\nimport { Subscription } from 'rxjs';\nimport { throttleTime } from 'rxjs/operators';\nimport { OperationSchedule } from './operation-schedule.interface';\nimport { BsDatepickerInputDirective, BsDatepickerDirective } from 'ngx-bootstrap/datepicker';\nimport { TimepickerComponent } from 'ngx-bootstrap/timepicker';\n\n@Component({\n selector: 'c8y-operation-scheduler',\n templateUrl: 'operation-scheduler.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => OperationSchedulerComponent)\n },\n {\n provide: NG_VALIDATORS,\n multi: true,\n useExisting: forwardRef(() => OperationSchedulerComponent)\n }\n ],\n imports: [\n FormsModule,\n ReactiveFormsModule,\n C8yTranslateDirective,\n FormGroupComponent,\n RequiredInputPlaceholderDirective,\n BsDatepickerInputDirective,\n BsDatepickerDirective,\n MessagesComponent,\n MessageDirective,\n TimepickerComponent,\n C8yTranslatePipe\n ]\n})\nexport class OperationSchedulerComponent\n implements ControlValueAccessor, Validator, OnInit, OnDestroy\n{\n @Input('minutesAhead') set _minutesAhead(minutes: number) {\n if (minutes && minutes > this.MINUTES_AHEAD_DEFAULT) {\n this.minutesAhead = minutes;\n }\n }\n\n placeholder: string = gettext('Start date');\n fgOperationScheduler: FormGroup;\n minDate: Date;\n minDelay: number;\n maxDelay: number;\n delayErrors: ValidationErrors = null;\n pickerErrors: ValidationErrors = null;\n dateInputFormat: string;\n\n private readonly DELAY_SECONDS_DEFAULT: number = 1;\n private readonly MIN_DELAY_SECONDS_DEFAULT: number = 0.001;\n private readonly MAX_DELAY_SECONDS_DEFAULT: number = 3600;\n private readonly MINUTES_AHEAD_DEFAULT: number = 5;\n private isDelayInSeconds = true;\n private minutesAhead: number = this.MINUTES_AHEAD_DEFAULT;\n private readonly DELAY_KEY_CATEGORY = 'device-control';\n private readonly MAX_DELAY_KEY_NAME = 'bulkoperation.maxcreationramp';\n private readonly MIN_DELAY_KEY_NAME = 'bulkoperation.creationramp';\n private currentUnit = 'seconds';\n private delayInSeconds: number;\n private initialDate: Date;\n private subscription: Subscription;\n\n private onChange: (name) => void;\n private onTouched: () => void;\n private onValidatorChanged: () => void;\n\n constructor(\n private formBuilder: FormBuilder,\n private options: OptionsService,\n private dateFormatService: DateFormatService\n ) {}\n\n ngOnInit() {\n this.minDate = new Date();\n this.initialDate = new Date(\n this.minDate.setMinutes(this.minDate.getMinutes() + this.minutesAhead)\n );\n\n this.fgOperationScheduler = this.formBuilder.group({\n picker: ['', [Validators.required, this.dateValidation]],\n time: ['', [Validators.required, this.timeValidation]],\n delay: ['', [Validators.required]],\n unit: ['seconds']\n });\n\n this.fgOperationScheduler.patchValue({\n picker: this.initialDate,\n time: this.initialDate,\n delay: this.DELAY_SECONDS_DEFAULT\n });\n\n // Due to the validation of picker and time it could be possible that value changes\n // are emitted more than once. Therefore we throttle the emits.\n const valueChanges$ = this.fgOperationScheduler.valueChanges.pipe(throttleTime(100));\n this.subscription = valueChanges$.subscribe(data => {\n this.delayErrors = this.fgOperationScheduler.controls.delay.errors;\n this.pickerErrors = this.fgOperationScheduler.controls.picker.errors;\n this.convertDelayHandler(data.unit);\n this.emitData(data);\n });\n\n this.updateDelayValidation();\n this.dateInputFormat = this.dateFormatService.getDateFormat();\n }\n\n ngOnDestroy() {\n if (this.subscription && !this.subscription.closed) {\n this.subscription.unsubscribe();\n }\n }\n\n writeValue(value: OperationSchedule): void {\n if (value) {\n this.fgOperationScheduler.patchValue({\n picker: value.scheduledDate,\n time: value.scheduledDate,\n delay: value.delayInSeconds > 1 ? value.delayInSeconds : value.delayInSeconds * 1000,\n unit: value.delayInSeconds > 1 ? 'seconds' : 'milliseconds'\n });\n }\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n if (this.fgOperationScheduler?.disabled === isDisabled) {\n return;\n }\n isDisabled ? this.fgOperationScheduler.disable() : this.fgOperationScheduler.enable();\n }\n\n validate(): ValidationErrors {\n if (this.fgOperationScheduler.invalid) {\n return {\n ...this.fgOperationScheduler.controls.picker.errors,\n ...this.fgOperationScheduler.controls.time.errors,\n ...this.fgOperationScheduler.controls.delay.errors\n };\n }\n }\n\n registerOnValidatorChange(fn: any) {\n this.onValidatorChanged = fn;\n }\n\n markAsTouched(): void {\n if (this.onTouched) {\n this.onTouched();\n }\n }\n\n convertDelayHandler(unit: string) {\n if (this.currentUnit === unit) {\n return;\n }\n\n this.currentUnit = unit;\n\n this.convertDelay(this.currentUnit);\n\n // update validator on delay control to make sure that\n // switching from minutes to seconds or vice versa does not harm validation.\n this.fgOperationScheduler.controls.delay.setValidators([\n Validators.required,\n Validators.min(this.minDelay),\n Validators.max(this.maxDelay)\n ]);\n this.fgOperationScheduler.controls.delay.updateValueAndValidity();\n }\n\n emitData(data: { delayInSeconds: number; picker: Date; time?: Date; delay?: number }) {\n if (this.onValidatorChanged) {\n this.onValidatorChanged();\n }\n\n if (data.picker && data.time) {\n data.picker = this.combineDateAndTime(data.picker, data.time);\n }\n\n this.convertDelay(this.currentUnit);\n data.delayInSeconds = this.delayInSeconds;\n\n if (this.onChange) {\n this.onChange({\n delayInSeconds: data.delayInSeconds,\n scheduledDate: data.picker\n });\n }\n }\n\n private async updateDelayValidation() {\n const minSystem = await this.options.getSystemOption(\n this.DELAY_KEY_CATEGORY,\n this.MIN_DELAY_KEY_NAME\n );\n const maxSystem = await this.options.getSystemOption(\n this.DELAY_KEY_CATEGORY,\n this.MAX_DELAY_KEY_NAME\n );\n\n this.maxDelay = maxSystem ? Number(maxSystem) : this.MAX_DELAY_SECONDS_DEFAULT;\n this.minDelay = minSystem ? Number(minSystem) : this.MIN_DELAY_SECONDS_DEFAULT;\n\n this.fgOperationScheduler\n .get('delay')\n .setValidators([\n Validators.required,\n Validators.min(this.minDelay),\n Validators.max(this.maxDelay)\n ]);\n this.fgOperationScheduler.updateValueAndValidity();\n }\n\n private convertDelay(unit: string) {\n this.delayInSeconds = this.fgOperationScheduler.controls.delay.value;\n\n if (unit === 'seconds' && !this.isDelayInSeconds) {\n this.maxDelay = this.maxDelay / 1000;\n this.minDelay = this.minDelay / 1000;\n this.isDelayInSeconds = true;\n }\n\n if (unit === 'milliseconds') {\n this.delayInSeconds = this.fgOperationScheduler.controls.delay.value / 1000;\n if (this.isDelayInSeconds) {\n this.maxDelay = this.maxDelay * 1000;\n this.minDelay = this.minDelay * 1000;\n this.isDelayInSeconds = false;\n }\n }\n }\n\n private combineDateAndTime(date: Date, time: Date) {\n return new Date(\n date.getFullYear(),\n date.getMonth(),\n date.getDate(),\n time.getHours(),\n time.getMinutes()\n );\n }\n\n private dateValidation(fControl: FormControl) {\n if (fControl.value) {\n const date = fControl.value as Date;\n fControl.parent.get('time').setValue(date);\n return date >= new Date()\n ? null\n : {\n dateValidation: true\n };\n }\n return { dateValidation: true };\n }\n\n private timeValidation(fControl: FormControl) {\n if (fControl.value) {\n const date = fControl.value as Date;\n const result =\n date >= new Date()\n ? null\n : {\n dateValidation: true\n };\n\n const picker = fControl.parent.get('picker');\n\n if (result) {\n picker.setErrors(result);\n picker.markAsTouched();\n return result;\n }\n\n if (picker && picker.errors && picker.errors.dateValidation) {\n delete picker.errors.dateValidation;\n\n if (isEmpty(picker.errors)) {\n picker.setErrors(null);\n return result;\n }\n\n picker.setErrors(picker.errors);\n }\n return result;\n }\n return { dateValidation: true };\n }\n}\n","<div [formGroup]=\"fgOperationScheduler\">\n <div class=\"form-group\">\n <label translate>Start date</label>\n <div class=\"datetime-picker\">\n <c8y-form-group class=\"datepicker\">\n <input\n class=\"form-control\"\n placeholder=\"{{ placeholder | translate }}\"\n required\n formControlName=\"picker\"\n [bsConfig]=\"{ customTodayClass: 'today', dateInputFormat: dateInputFormat }\"\n [minDate]=\"minDate\"\n bsDatepicker\n (blur)=\"markAsTouched()\"\n />\n <c8y-messages>\n <c8y-message\n [name]=\"'dateValidation'\"\n [text]=\"'Select time in the future.' | translate\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n <timepicker\n class=\"form-group\"\n [showSpinners]=\"false\"\n [showMeridian]=\"false\"\n formControlName=\"time\"\n (blur)=\"markAsTouched()\"\n ></timepicker>\n </div>\n </div>\n <div class=\"form-group\">\n <c8y-form-group [hasError]=\"delayErrors\">\n <label translate>Delay</label>\n <div class=\"input-group\">\n <input\n class=\"form-control\"\n placeholder=\"{{ 'e.g.' | translate }} 15\"\n type=\"number\"\n required\n formControlName=\"delay\"\n (blur)=\"markAsTouched()\"\n />\n <div class=\"input-group-btn\">\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control m-r-sm-32 m-r-xs-56\"\n [attr.aria-label]=\"'Delay units' | translate\"\n formControlName=\"unit\"\n (blur)=\"markAsTouched()\"\n >\n <option\n value=\"seconds\"\n translate\n >\n Seconds\n </option>\n <option\n value=\"milliseconds\"\n translate\n >\n Milliseconds\n </option>\n </select>\n <span></span>\n </div>\n </div>\n </div>\n </c8y-form-group>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { CoreModule } from '@c8y/ngx-components';\nimport { BsDatepickerModule } from 'ngx-bootstrap/datepicker';\nimport { TimepickerModule } from 'ngx-bootstrap/timepicker';\nimport { OperationSchedulerComponent } from './operation-scheduler.component';\n\n/**\n * This module provides components for scheduling bulk operations.\n */\n@NgModule({\n imports: [\n CoreModule,\n ReactiveFormsModule,\n BsDatepickerModule.forRoot(),\n TimepickerModule.forRoot(),\n OperationSchedulerComponent\n ],\n providers: [],\n exports: [OperationSchedulerComponent]\n})\nexport class BulkOperationSchedulerModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2"],"mappings":"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"}
1
+ {"version":3,"file":"c8y-ngx-components-operations-bulk-operation-scheduler.mjs","sources":["../../operations/bulk-operation-scheduler/operation-scheduler.component.ts","../../operations/bulk-operation-scheduler/operation-scheduler.component.html","../../operations/bulk-operation-scheduler/bulk-operation-scheduler.module.ts","../../operations/bulk-operation-scheduler/c8y-ngx-components-operations-bulk-operation-scheduler.ts"],"sourcesContent":["import { Component, forwardRef, Input, OnDestroy, OnInit } from '@angular/core';\nimport {\n ControlValueAccessor,\n FormBuilder,\n FormControl,\n FormGroup,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator,\n Validators,\n FormsModule,\n ReactiveFormsModule\n} from '@angular/forms';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport {\n DateFormatService,\n OptionsService,\n C8yTranslateDirective,\n FormGroupComponent,\n RequiredInputPlaceholderDirective,\n MessagesComponent,\n MessageDirective,\n C8yTranslatePipe\n} from '@c8y/ngx-components';\nimport { isEmpty } from 'lodash-es';\nimport { Subscription } from 'rxjs';\nimport { throttleTime } from 'rxjs/operators';\nimport { OperationSchedule } from './operation-schedule.interface';\nimport { BsDatepickerInputDirective, BsDatepickerDirective } from 'ngx-bootstrap/datepicker';\nimport { TimepickerComponent } from 'ngx-bootstrap/timepicker';\n\n@Component({\n selector: 'c8y-operation-scheduler',\n templateUrl: 'operation-scheduler.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => OperationSchedulerComponent)\n },\n {\n provide: NG_VALIDATORS,\n multi: true,\n useExisting: forwardRef(() => OperationSchedulerComponent)\n }\n ],\n imports: [\n FormsModule,\n ReactiveFormsModule,\n C8yTranslateDirective,\n FormGroupComponent,\n RequiredInputPlaceholderDirective,\n BsDatepickerInputDirective,\n BsDatepickerDirective,\n MessagesComponent,\n MessageDirective,\n TimepickerComponent,\n C8yTranslatePipe\n ]\n})\nexport class OperationSchedulerComponent\n implements ControlValueAccessor, Validator, OnInit, OnDestroy\n{\n @Input('minutesAhead') set _minutesAhead(minutes: number) {\n if (minutes && minutes > this.MINUTES_AHEAD_DEFAULT) {\n this.minutesAhead = minutes;\n }\n }\n\n placeholder: string = gettext('Start date');\n fgOperationScheduler: FormGroup;\n minDate: Date;\n minDelay: number;\n maxDelay: number;\n delayErrors: ValidationErrors = null;\n pickerErrors: ValidationErrors = null;\n dateInputFormat: string;\n\n private readonly DELAY_SECONDS_DEFAULT: number = 1;\n private readonly MIN_DELAY_SECONDS_DEFAULT: number = 0.001;\n private readonly MAX_DELAY_SECONDS_DEFAULT: number = 3600;\n private readonly MINUTES_AHEAD_DEFAULT: number = 5;\n private isDelayInSeconds = true;\n private minutesAhead: number = this.MINUTES_AHEAD_DEFAULT;\n private readonly DELAY_KEY_CATEGORY = 'device-control';\n private readonly MAX_DELAY_KEY_NAME = 'bulkoperation.maxcreationramp';\n private readonly MIN_DELAY_KEY_NAME = 'bulkoperation.creationramp';\n private currentUnit = 'seconds';\n private delayInSeconds: number;\n private initialDate: Date;\n private subscription: Subscription;\n\n private onChange: (name) => void;\n private onTouched: () => void;\n private onValidatorChanged: () => void;\n\n constructor(\n private formBuilder: FormBuilder,\n private options: OptionsService,\n private dateFormatService: DateFormatService\n ) {}\n\n ngOnInit() {\n this.minDate = new Date();\n this.initialDate = new Date(\n this.minDate.setMinutes(this.minDate.getMinutes() + this.minutesAhead)\n );\n\n this.fgOperationScheduler = this.formBuilder.group({\n picker: ['', [Validators.required, this.dateValidation]],\n time: ['', [Validators.required, this.timeValidation]],\n delay: ['', [Validators.required]],\n unit: ['seconds']\n });\n\n this.fgOperationScheduler.patchValue({\n picker: this.initialDate,\n time: this.initialDate,\n delay: this.DELAY_SECONDS_DEFAULT\n });\n\n // Due to the validation of picker and time it could be possible that value changes\n // are emitted more than once. Therefore we throttle the emits.\n const valueChanges$ = this.fgOperationScheduler.valueChanges.pipe(throttleTime(100));\n this.subscription = valueChanges$.subscribe(data => {\n this.delayErrors = this.fgOperationScheduler.controls.delay.errors;\n this.pickerErrors = this.fgOperationScheduler.controls.picker.errors;\n this.convertDelayHandler(data.unit);\n this.emitData(data);\n });\n\n this.updateDelayValidation();\n this.dateInputFormat = this.dateFormatService.getDateFormat();\n }\n\n ngOnDestroy() {\n if (this.subscription && !this.subscription.closed) {\n this.subscription.unsubscribe();\n }\n }\n\n writeValue(value: OperationSchedule): void {\n if (value) {\n this.fgOperationScheduler.patchValue({\n picker: value.scheduledDate,\n time: value.scheduledDate,\n delay: value.delayInSeconds > 1 ? value.delayInSeconds : value.delayInSeconds * 1000,\n unit: value.delayInSeconds > 1 ? 'seconds' : 'milliseconds'\n });\n }\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n if (this.fgOperationScheduler?.disabled === isDisabled) {\n return;\n }\n isDisabled ? this.fgOperationScheduler.disable() : this.fgOperationScheduler.enable();\n }\n\n validate(): ValidationErrors {\n if (this.fgOperationScheduler.invalid) {\n return {\n ...this.fgOperationScheduler.controls.picker.errors,\n ...this.fgOperationScheduler.controls.time.errors,\n ...this.fgOperationScheduler.controls.delay.errors\n };\n }\n }\n\n registerOnValidatorChange(fn: any) {\n this.onValidatorChanged = fn;\n }\n\n markAsTouched(): void {\n if (this.onTouched) {\n this.onTouched();\n }\n }\n\n convertDelayHandler(unit: string) {\n if (this.currentUnit === unit) {\n return;\n }\n\n this.currentUnit = unit;\n\n this.convertDelay(this.currentUnit);\n\n // update validator on delay control to make sure that\n // switching from minutes to seconds or vice versa does not harm validation.\n this.fgOperationScheduler.controls.delay.setValidators([\n Validators.required,\n Validators.min(this.minDelay),\n Validators.max(this.maxDelay)\n ]);\n this.fgOperationScheduler.controls.delay.updateValueAndValidity();\n }\n\n emitData(data: { delayInSeconds: number; picker: Date; time?: Date; delay?: number }) {\n if (this.onValidatorChanged) {\n this.onValidatorChanged();\n }\n\n if (data.picker && data.time) {\n data.picker = this.combineDateAndTime(data.picker, data.time);\n }\n\n this.convertDelay(this.currentUnit);\n data.delayInSeconds = this.delayInSeconds;\n\n if (this.onChange) {\n this.onChange({\n delayInSeconds: data.delayInSeconds,\n scheduledDate: data.picker\n });\n }\n }\n\n private async updateDelayValidation() {\n const minSystem = await this.options.getSystemOption(\n this.DELAY_KEY_CATEGORY,\n this.MIN_DELAY_KEY_NAME\n );\n const maxSystem = await this.options.getSystemOption(\n this.DELAY_KEY_CATEGORY,\n this.MAX_DELAY_KEY_NAME\n );\n\n this.maxDelay = maxSystem ? Number(maxSystem) : this.MAX_DELAY_SECONDS_DEFAULT;\n this.minDelay = minSystem ? Number(minSystem) : this.MIN_DELAY_SECONDS_DEFAULT;\n\n this.fgOperationScheduler\n .get('delay')\n .setValidators([\n Validators.required,\n Validators.min(this.minDelay),\n Validators.max(this.maxDelay)\n ]);\n this.fgOperationScheduler.updateValueAndValidity();\n }\n\n private convertDelay(unit: string) {\n this.delayInSeconds = this.fgOperationScheduler.controls.delay.value;\n\n if (unit === 'seconds' && !this.isDelayInSeconds) {\n this.maxDelay = this.maxDelay / 1000;\n this.minDelay = this.minDelay / 1000;\n this.isDelayInSeconds = true;\n }\n\n if (unit === 'milliseconds') {\n this.delayInSeconds = this.fgOperationScheduler.controls.delay.value / 1000;\n if (this.isDelayInSeconds) {\n this.maxDelay = this.maxDelay * 1000;\n this.minDelay = this.minDelay * 1000;\n this.isDelayInSeconds = false;\n }\n }\n }\n\n private combineDateAndTime(date: Date, time: Date) {\n return new Date(\n date.getFullYear(),\n date.getMonth(),\n date.getDate(),\n time.getHours(),\n time.getMinutes()\n );\n }\n\n private dateValidation(fControl: FormControl) {\n if (fControl.value) {\n const date = fControl.value as Date;\n fControl.parent.get('time').setValue(date);\n return date >= new Date()\n ? null\n : {\n dateValidation: true\n };\n }\n return { dateValidation: true };\n }\n\n private timeValidation(fControl: FormControl) {\n if (fControl.value) {\n const date = fControl.value as Date;\n const result =\n date >= new Date()\n ? null\n : {\n dateValidation: true\n };\n\n const picker = fControl.parent.get('picker');\n\n if (result) {\n picker.setErrors(result);\n picker.markAsTouched();\n return result;\n }\n\n if (picker && picker.errors && picker.errors.dateValidation) {\n delete picker.errors.dateValidation;\n\n if (isEmpty(picker.errors)) {\n picker.setErrors(null);\n return result;\n }\n\n picker.setErrors(picker.errors);\n }\n return result;\n }\n return { dateValidation: true };\n }\n}\n","<div [formGroup]=\"fgOperationScheduler\">\n <div class=\"form-group\">\n <label translate>Start date</label>\n <div class=\"datetime-picker\">\n <c8y-form-group class=\"datepicker\">\n <input\n class=\"form-control\"\n placeholder=\"{{ placeholder | translate }}\"\n required\n formControlName=\"picker\"\n [bsConfig]=\"{ customTodayClass: 'today', dateInputFormat: dateInputFormat }\"\n [minDate]=\"minDate\"\n bsDatepicker\n (blur)=\"markAsTouched()\"\n />\n <c8y-messages>\n <c8y-message\n [name]=\"'dateValidation'\"\n [text]=\"'Select time in the future.' | translate\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n <timepicker\n class=\"form-group\"\n [showSpinners]=\"false\"\n [showMeridian]=\"false\"\n formControlName=\"time\"\n (blur)=\"markAsTouched()\"\n ></timepicker>\n </div>\n </div>\n <div class=\"form-group\">\n <c8y-form-group [hasError]=\"delayErrors\">\n <label translate>Delay</label>\n <div class=\"input-group\">\n <input\n class=\"form-control\"\n placeholder=\"{{ 'e.g.' | translate }} 15\"\n type=\"number\"\n required\n formControlName=\"delay\"\n (blur)=\"markAsTouched()\"\n />\n <div class=\"input-group-btn\">\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control m-r-sm-32 m-r-xs-56\"\n [attr.aria-label]=\"'Delay units' | translate\"\n formControlName=\"unit\"\n (blur)=\"markAsTouched()\"\n >\n <option\n value=\"seconds\"\n translate\n >\n Seconds\n </option>\n <option\n value=\"milliseconds\"\n translate\n >\n Milliseconds\n </option>\n </select>\n <span></span>\n </div>\n </div>\n </div>\n </c8y-form-group>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { CoreModule } from '@c8y/ngx-components';\nimport { BsDatepickerModule } from 'ngx-bootstrap/datepicker';\nimport { TimepickerModule } from 'ngx-bootstrap/timepicker';\nimport { OperationSchedulerComponent } from './operation-scheduler.component';\n\n/**\n * This module provides components for scheduling bulk operations.\n */\n@NgModule({\n imports: [\n CoreModule,\n ReactiveFormsModule,\n BsDatepickerModule.forRoot(),\n TimepickerModule.forRoot(),\n OperationSchedulerComponent\n ],\n providers: [],\n exports: [OperationSchedulerComponent]\n})\nexport class BulkOperationSchedulerModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2"],"mappings":"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"}
@@ -90,7 +90,7 @@ class SelectDeviceProfileStepComponent {
90
90
  return this.deviceProfileService.getDeviceProfiles(query);
91
91
  }
92
92
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: SelectDeviceProfileStepComponent, deps: [{ token: i1$1.DeviceProfileService }, { token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
93
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.18", type: SelectDeviceProfileStepComponent, isStandalone: true, selector: "c8y-select-device-profile-step", outputs: { deviceProfile: "deviceProfile" }, ngImport: i0, template: "<c8y-select-step-frame\n [header]=\"'Select device profile' | translate\"\n [noResults]=\"\n ((textFilter$ | async)?.length || (deviceType$ | async)?.length) &&\n (deviceProfile$ | async)?.data.length === 0\n \"\n>\n <div\n class=\"row\"\n filters\n >\n <div class=\"col-md-6 m-b-xs-8 m-b-sm-8\">\n <div class=\"input-group input-group-search\">\n <input\n class=\"form-control\"\n title=\"{{ 'Filter\u2026' | translate }}\"\n placeholder=\"{{ 'Filter\u2026' | translate }}\"\n type=\"search\"\n [ngModel]=\"textFilter$ | async\"\n (ngModelChange)=\"textFilter$.next($event)\"\n />\n <span class=\"input-group-addon\">\n <i\n c8yIcon=\"search\"\n *ngIf=\"(textFilter$ | async).length === 0\"\n ></i>\n <i\n class=\"text-muted\"\n c8yIcon=\"times\"\n *ngIf=\"(textFilter$ | async).length\"\n (click)=\"textFilter$.next('')\"\n ></i>\n </span>\n </div>\n </div>\n <div class=\"col-md-6 m-b-xs-8 m-b-sm-8\">\n <c8y-form-group class=\"m-0\">\n <c8y-typeahead\n placeholder=\"{{ 'Type to filter device types\u2026' | translate }}\"\n name=\"deviceType\"\n [(ngModel)]=\"selectedDeviceType\"\n (onSearch)=\"deviceType$.next($event)\"\n [allowFreeEntries]=\"false\"\n >\n <c8y-li\n class=\"p-l-8 p-r-8 c8y-list__item--link\"\n (click)=\"selectedDeviceType = { name: '' }; deviceType$.next('')\"\n >\n <span>{{ 'All device types' | translate }}</span>\n </c8y-li>\n <c8y-li\n class=\"p-l-8 p-r-8 c8y-list__item--link\"\n *ngFor=\"let deviceType of deviceTypes\"\n (click)=\"selectedDeviceType = deviceType; deviceType$.next(deviceType.name)\"\n [active]=\"selectedDeviceType === deviceType\"\n >\n <c8y-highlight\n [text]=\"deviceType.name\"\n [pattern]=\"deviceType$ | async\"\n ></c8y-highlight>\n </c8y-li>\n </c8y-typeahead>\n <c8y-messages>\n <c8y-message\n name=\"notExisting\"\n [text]=\"'Select one of the existing device types.' | translate\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n </div>\n </div>\n <c8y-li\n class=\"hidden-sm hidden-xs m-r-8 m-l-8\"\n header\n >\n <c8y-li-icon><i class=\"p-l-32 p-r-40\"></i></c8y-li-icon>\n <c8y-li-body class=\"content-flex-40\">\n <div class=\"col-5\">\n <span\n class=\"text-truncate\"\n title=\" {{ 'Name' | translate }} \"\n >\n {{ 'Name' | translate }}\n </span>\n </div>\n <div class=\"col-3\">\n <span\n class=\"text-truncate\"\n title=\"{{ 'Device type' | translate }}\"\n >\n {{ 'Device type' | translate }}\n </span>\n </div>\n </c8y-li-body>\n </c8y-li>\n <c8y-list-group list>\n <c8y-li *c8yFor=\"let deviceProfile of deviceProfile$ | async; loadMore: 'auto'\">\n <c8y-li-radio (onSelect)=\"selectDeviceProfile(deviceProfile)\"></c8y-li-radio>\n <c8y-li-icon>\n <i c8yIcon=\"c8y-device-profile\"></i>\n </c8y-li-icon>\n <c8y-li-body class=\"content-flex-40\">\n <div class=\"col-5 m-b-xs-8\">\n <div\n class=\"text-truncate\"\n title=\"{{ deviceProfile.name }}\"\n >\n {{ deviceProfile.name }}\n </div>\n </div>\n <div class=\"col-3 m-b-xs-8\">\n <div\n class=\"text-truncate\"\n title=\"{{ 'Device type' | translate }}: {{ getDeviceTypeTitle(deviceProfile) }}\"\n >\n <span\n class=\"text-label-small m-r-8 visible-xs visible-sm\"\n translate\n >\n Device type\n </span>\n <span *ngIf=\"deviceProfile.c8y_Filter?.type; else noType\">\n {{ deviceProfile.c8y_Filter?.type }}\n </span>\n <ng-template #noType>\n <small>\n <em\n class=\"text-muted\"\n translate\n >\n Undefined`device type`\n </em>\n </small>\n </ng-template>\n </div>\n </div>\n </c8y-li-body>\n </c8y-li>\n </c8y-list-group>\n</c8y-select-step-frame>\n", dependencies: [{ kind: "component", type: SelectStepFrameComponent, selector: "c8y-select-step-frame", inputs: ["header", "noResults"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "component", type: FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "component", type: TypeaheadComponent, selector: "c8y-typeahead", inputs: ["required", "maxlength", "disabled", "allowFreeEntries", "placeholder", "displayProperty", "icon", "name", "autoClose", "hideNew", "container", "selected", "title", "highlightFirstItem"], outputs: ["onSearch", "onIconClick"] }, { kind: "component", type: ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "highlighted", "emptyActions", "dense", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: HighlightComponent, selector: "c8y-highlight", inputs: ["pattern", "text", "elementClass", "shouldTrimPattern"] }, { kind: "component", type: MessagesComponent, selector: "c8y-messages", inputs: ["show", "defaults", "helpMessage"] }, { kind: "directive", type: MessageDirective, selector: "c8y-message", inputs: ["name", "text"] }, { kind: "component", type: ListItemIconComponent, selector: "c8y-list-item-icon, c8y-li-icon", inputs: ["icon", "status"] }, { kind: "component", type: ListItemBodyComponent, selector: "c8y-list-item-body, c8y-li-body", inputs: ["body"] }, { kind: "component", type: ListGroupComponent, selector: "c8y-list-group" }, { kind: "directive", type: ForOfDirective, selector: "[c8yFor]", inputs: ["c8yForOf", "c8yForLoadMore", "c8yForPipe", "c8yForNotFound", "c8yForMaxIterations", "c8yForLoadingTemplate", "c8yForLoadNextLabel", "c8yForLoadingLabel", "c8yForRealtime", "c8yForRealtimeOptions", "c8yForComparator", "c8yForEnableVirtualScroll", "c8yForVirtualScrollElementSize", "c8yForVirtualScrollStrategy", "c8yForVirtualScrollContainerHeight"], outputs: ["c8yForCount", "c8yForChange", "c8yForLoadMoreComponent"] }, { kind: "component", type: ListItemRadioComponent, selector: "c8y-list-item-radio, c8y-li-radio", inputs: ["selected", "name", "disabled", "value"], outputs: ["onSelect"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }] }); }
93
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.18", type: SelectDeviceProfileStepComponent, isStandalone: true, selector: "c8y-select-device-profile-step", outputs: { deviceProfile: "deviceProfile" }, ngImport: i0, template: "<c8y-select-step-frame\n [header]=\"'Select device profile' | translate\"\n [noResults]=\"\n ((textFilter$ | async)?.length || (deviceType$ | async)?.length) &&\n (deviceProfile$ | async)?.data.length === 0\n \"\n>\n <div\n class=\"row\"\n filters\n >\n <div class=\"col-md-6 m-b-xs-8 m-b-sm-8\">\n <div class=\"input-group input-group-search\">\n <input\n class=\"form-control\"\n title=\"{{ 'Filter\u2026' | translate }}\"\n placeholder=\"{{ 'Filter\u2026' | translate }}\"\n type=\"search\"\n [ngModel]=\"textFilter$ | async\"\n (ngModelChange)=\"textFilter$.next($event)\"\n />\n <span class=\"input-group-addon\">\n <i\n c8yIcon=\"search\"\n *ngIf=\"(textFilter$ | async).length === 0\"\n ></i>\n <i\n class=\"text-muted\"\n c8yIcon=\"times\"\n *ngIf=\"(textFilter$ | async).length\"\n (click)=\"textFilter$.next('')\"\n ></i>\n </span>\n </div>\n </div>\n <div class=\"col-md-6 m-b-xs-8 m-b-sm-8\">\n <c8y-form-group class=\"m-0\">\n <c8y-typeahead\n placeholder=\"{{ 'Type to filter device types\u2026' | translate }}\"\n name=\"deviceType\"\n [(ngModel)]=\"selectedDeviceType\"\n (onSearch)=\"deviceType$.next($event)\"\n [allowFreeEntries]=\"false\"\n >\n <c8y-li\n class=\"p-l-8 p-r-8 c8y-list__item--link\"\n (click)=\"selectedDeviceType = { name: '' }; deviceType$.next('')\"\n >\n <span>{{ 'All device types' | translate }}</span>\n </c8y-li>\n <c8y-li\n class=\"p-l-8 p-r-8 c8y-list__item--link\"\n *ngFor=\"let deviceType of deviceTypes\"\n (click)=\"selectedDeviceType = deviceType; deviceType$.next(deviceType.name)\"\n [active]=\"selectedDeviceType === deviceType\"\n >\n <c8y-highlight\n [text]=\"deviceType.name\"\n [pattern]=\"deviceType$ | async\"\n ></c8y-highlight>\n </c8y-li>\n </c8y-typeahead>\n <c8y-messages>\n <c8y-message\n name=\"notExisting\"\n [text]=\"'Select one of the existing device types.' | translate\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n </div>\n </div>\n <c8y-li\n class=\"hidden-sm hidden-xs m-r-8 m-l-8\"\n header\n >\n <c8y-li-icon><i class=\"p-l-32 p-r-40\"></i></c8y-li-icon>\n <c8y-li-body class=\"content-flex-40\">\n <div class=\"col-5\">\n <span\n class=\"text-truncate\"\n title=\" {{ 'Name' | translate }} \"\n >\n {{ 'Name' | translate }}\n </span>\n </div>\n <div class=\"col-3\">\n <span\n class=\"text-truncate\"\n title=\"{{ 'Device type' | translate }}\"\n >\n {{ 'Device type' | translate }}\n </span>\n </div>\n </c8y-li-body>\n </c8y-li>\n <c8y-list-group list>\n <c8y-li *c8yFor=\"let deviceProfile of deviceProfile$ | async; loadMore: 'auto'\">\n <c8y-li-radio (onSelect)=\"selectDeviceProfile(deviceProfile)\"></c8y-li-radio>\n <c8y-li-icon>\n <i c8yIcon=\"c8y-device-profile\"></i>\n </c8y-li-icon>\n <c8y-li-body class=\"content-flex-40\">\n <div class=\"col-5 m-b-xs-8\">\n <div\n class=\"text-truncate\"\n title=\"{{ deviceProfile.name }}\"\n >\n {{ deviceProfile.name }}\n </div>\n </div>\n <div class=\"col-3 m-b-xs-8\">\n <div\n class=\"text-truncate\"\n title=\"{{ 'Device type' | translate }}: {{ getDeviceTypeTitle(deviceProfile) }}\"\n >\n <span\n class=\"text-label-small m-r-8 visible-xs visible-sm\"\n translate\n >\n Device type\n </span>\n <span *ngIf=\"deviceProfile.c8y_Filter?.type; else noType\">\n {{ deviceProfile.c8y_Filter?.type }}\n </span>\n <ng-template #noType>\n <small>\n <em\n class=\"text-muted\"\n translate\n >\n Undefined`device type`\n </em>\n </small>\n </ng-template>\n </div>\n </div>\n </c8y-li-body>\n </c8y-li>\n </c8y-list-group>\n</c8y-select-step-frame>\n", dependencies: [{ kind: "component", type: SelectStepFrameComponent, selector: "c8y-select-step-frame", inputs: ["header", "noResults"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "component", type: FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "component", type: TypeaheadComponent, selector: "c8y-typeahead", inputs: ["required", "maxlength", "disabled", "allowFreeEntries", "placeholder", "displayProperty", "icon", "name", "autoClose", "hideNew", "container", "selected", "title", "highlightFirstItem"], outputs: ["onSearch", "onIconClick"] }, { kind: "component", type: ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "highlighted", "emptyActions", "dense", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: HighlightComponent, selector: "c8y-highlight", inputs: ["pattern", "text", "elementClass", "shouldTrimPattern"] }, { kind: "component", type: MessagesComponent, selector: "c8y-messages", inputs: ["show", "defaults", "helpMessage", "additionalMessages"] }, { kind: "directive", type: MessageDirective, selector: "c8y-message", inputs: ["name", "text"] }, { kind: "component", type: ListItemIconComponent, selector: "c8y-list-item-icon, c8y-li-icon", inputs: ["icon", "status"] }, { kind: "component", type: ListItemBodyComponent, selector: "c8y-list-item-body, c8y-li-body", inputs: ["body"] }, { kind: "component", type: ListGroupComponent, selector: "c8y-list-group" }, { kind: "directive", type: ForOfDirective, selector: "[c8yFor]", inputs: ["c8yForOf", "c8yForLoadMore", "c8yForPipe", "c8yForNotFound", "c8yForMaxIterations", "c8yForLoadingTemplate", "c8yForLoadNextLabel", "c8yForLoadingLabel", "c8yForRealtime", "c8yForRealtimeOptions", "c8yForComparator", "c8yForEnableVirtualScroll", "c8yForVirtualScrollElementSize", "c8yForVirtualScrollStrategy", "c8yForVirtualScrollContainerHeight"], outputs: ["c8yForCount", "c8yForChange", "c8yForLoadMoreComponent"] }, { kind: "component", type: ListItemRadioComponent, selector: "c8y-list-item-radio, c8y-li-radio", inputs: ["selected", "name", "disabled", "value"], outputs: ["onSelect"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }] }); }
94
94
  }
95
95
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: SelectDeviceProfileStepComponent, decorators: [{
96
96
  type: Component,
@@ -1 +1 @@
1
- {"version":3,"file":"c8y-ngx-components-operations-stepper-bulk-type-device-profile.mjs","sources":["../../operations/stepper-bulk-type-device-profile/confirm-device-profile-selection-step.component.ts","../../operations/stepper-bulk-type-device-profile/confirm-device-profile-selection-step.component.html","../../operations/stepper-bulk-type-device-profile/select-device-profile-step.component.ts","../../operations/stepper-bulk-type-device-profile/select-device-profile-step.component.html","../../operations/stepper-bulk-type-device-profile/stepper-bulk-type-device-profile.component.ts","../../operations/stepper-bulk-type-device-profile/stepper-bulk-type-device-profile.component.html","../../operations/stepper-bulk-type-device-profile/stepper-bulk-type-device-profile.module.ts","../../operations/stepper-bulk-type-device-profile/c8y-ngx-components-operations-stepper-bulk-type-device-profile.ts"],"sourcesContent":["import { Component, Input } from '@angular/core';\nimport { get } from 'lodash-es';\nimport { IManagedObject } from '@c8y/client';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport {\n ListGroupComponent,\n ListItemComponent,\n ListItemIconComponent,\n IconDirective,\n ListItemBodyComponent,\n C8yTranslateDirective,\n C8yTranslatePipe\n} from '@c8y/ngx-components';\nimport { TranslateService } from '@ngx-translate/core';\nimport {\n PreviewSelectionFrameComponent,\n PreviewBlockDirective\n} from '@c8y/ngx-components/operations/stepper-frames';\nimport { NgIf, NgFor } from '@angular/common';\n\n@Component({\n selector: 'c8y-confirm-device-profile-selection-step',\n templateUrl: 'confirm-device-profile-selection-step.component.html',\n imports: [\n PreviewSelectionFrameComponent,\n PreviewBlockDirective,\n NgIf,\n ListGroupComponent,\n ListItemComponent,\n ListItemIconComponent,\n IconDirective,\n ListItemBodyComponent,\n C8yTranslateDirective,\n NgFor,\n C8yTranslatePipe\n ]\n})\nexport class ConfirmDeviceProfileSelectionStepComponent {\n @Input() selectedDeviceProfile: IManagedObject;\n readonly DEVICE_TYPE_NOT_DEFINED = gettext('Device type not defined');\n\n constructor(private translate: TranslateService) {}\n\n get softwares() {\n return get(this.selectedDeviceProfile, ['c8y_DeviceProfile', 'software'], []);\n }\n\n get configurations() {\n return get(this.selectedDeviceProfile, ['c8y_DeviceProfile', 'configuration'], []);\n }\n\n getDeviceTypeTitle(deviceProfile: IManagedObject): string {\n return get(\n deviceProfile,\n 'c8y_Filter.type',\n this.translate.instant(this.DEVICE_TYPE_NOT_DEFINED)\n );\n }\n}\n","<c8y-preview-selection-frame\n [header]=\"'Confirm selection' | translate\"\n [name]=\"selectedDeviceProfile?.name\"\n>\n <ng-container *previewBlock=\"'Device type' | translate\">\n <ng-container *ngIf=\"selectedDeviceProfile?.c8y_Filter?.type; else noType\">\n <span>{{ selectedDeviceProfile.c8y_Filter.type }}</span>\n </ng-container>\n <ng-template #noType> --- </ng-template>\n </ng-container>\n <c8y-list-group\n *previewBlock=\"'Firmware' | translate; if: selectedDeviceProfile?.c8y_DeviceProfile.firmware\"\n >\n <c8y-li>\n <c8y-li-icon>\n <i c8yIcon=\"c8y-firmware\"></i>\n </c8y-li-icon>\n <c8y-li-body class=\"content-flex-500\">\n <div class=\"col-5\">\n {{ selectedDeviceProfile.c8y_DeviceProfile.firmware.name }}\n </div>\n <div class=\"col-5\">\n <span class=\"text-label-small m-r-8\" translate> Version </span>\n <span>\n {{ selectedDeviceProfile.c8y_DeviceProfile.firmware.version }}\n </span>\n </div>\n </c8y-li-body>\n </c8y-li>\n </c8y-list-group>\n <c8y-list-group *previewBlock=\"'Software' | translate; if: softwares?.length\">\n <c8y-li *ngFor=\"let software of softwares\">\n <c8y-li-icon>\n <i c8yIcon=\"c8y-tools\"></i>\n </c8y-li-icon>\n <c8y-li-body class=\"content-flex-500\">\n <div class=\"col-5\">\n {{ software.name }}\n </div>\n <div class=\"col-5\">\n <span class=\"text-label-small m-r-8\" translate> Version </span>\n <span>\n {{ software.version }}\n </span>\n </div>\n </c8y-li-body>\n </c8y-li>\n </c8y-list-group>\n <c8y-list-group *previewBlock=\"'Configuration' | translate; if: configurations?.length\">\n <c8y-li *ngFor=\"let configuration of configurations\">\n <c8y-li-icon>\n <i c8yIcon=\"c8y-tools\"></i>\n </c8y-li-icon>\n <c8y-li-body class=\"content-flex-500\">\n <div class=\"col-5\">\n {{ configuration.name }}\n </div>\n <div class=\"col-5\">\n <span class=\"label label-info\" *ngIf=\"configuration.type\">\n {{ configuration.type }}\n </span>\n </div>\n </c8y-li-body>\n </c8y-li>\n </c8y-list-group>\n</c8y-preview-selection-frame>\n","import { Component, Output, EventEmitter } from '@angular/core';\nimport { Observable, BehaviorSubject, combineLatest, Subscription, from } from 'rxjs';\nimport { switchMap, shareReplay, debounceTime, distinctUntilChanged } from 'rxjs/operators';\nimport { IResultList, IManagedObject } from '@c8y/client';\nimport { isEqual, uniqWith, get } from 'lodash-es';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport {\n IconDirective,\n FormGroupComponent,\n TypeaheadComponent,\n ListItemComponent,\n HighlightComponent,\n MessagesComponent,\n MessageDirective,\n ListItemIconComponent,\n ListItemBodyComponent,\n ListGroupComponent,\n ForOfDirective,\n ListItemRadioComponent,\n C8yTranslateDirective,\n C8yTranslatePipe\n} from '@c8y/ngx-components';\nimport { TranslateService } from '@ngx-translate/core';\nimport { DeviceProfileService } from '@c8y/ngx-components/device-profile';\nimport { SelectStepFrameComponent } from '@c8y/ngx-components/operations/stepper-frames';\nimport { FormsModule } from '@angular/forms';\nimport { NgIf, NgFor, AsyncPipe } from '@angular/common';\n\n@Component({\n selector: 'c8y-select-device-profile-step',\n templateUrl: 'select-device-profile-step.component.html',\n imports: [\n SelectStepFrameComponent,\n FormsModule,\n NgIf,\n IconDirective,\n FormGroupComponent,\n TypeaheadComponent,\n ListItemComponent,\n NgFor,\n HighlightComponent,\n MessagesComponent,\n MessageDirective,\n ListItemIconComponent,\n ListItemBodyComponent,\n ListGroupComponent,\n ForOfDirective,\n ListItemRadioComponent,\n C8yTranslateDirective,\n C8yTranslatePipe,\n AsyncPipe\n ]\n})\nexport class SelectDeviceProfileStepComponent {\n @Output() deviceProfile: EventEmitter<IManagedObject> = new EventEmitter<IManagedObject>();\n textFilter$: BehaviorSubject<string> = new BehaviorSubject('');\n deviceType$: BehaviorSubject<string> = new BehaviorSubject('');\n readonly DEVICE_TYPE_NOT_DEFINED = gettext('Device type not defined');\n deviceTypes = [];\n selectedDeviceType = { name: '' };\n deviceProfile$: Observable<IResultList<IManagedObject>> = combineLatest(\n this.textFilter$,\n this.deviceType$\n ).pipe(\n switchMap(([name, deviceType]) => this.getDeviceProfiles(name, deviceType)),\n shareReplay(1)\n );\n private deviceTypeSubscription: Subscription;\n\n constructor(\n private deviceProfileService: DeviceProfileService,\n private translate: TranslateService\n ) {\n this.loadDeviceTypes();\n }\n\n loadDeviceTypes() {\n this.deviceTypeSubscription = this.deviceType$\n .pipe(\n debounceTime(300),\n distinctUntilChanged(),\n switchMap(searchStr => {\n const query = { 'c8y_Filter.type': `*${searchStr}*` };\n return from(this.deviceProfileService.getDeviceProfiles(query));\n })\n )\n .subscribe(({ data }) => {\n this.deviceTypes = uniqWith(\n data.map(val => ({ name: val.c8y_Filter.type })).filter(val => val.name),\n isEqual\n );\n });\n }\n\n ngOnDestroy() {\n this.deviceTypeSubscription.unsubscribe();\n }\n\n selectDeviceProfile(deviceProfile: IManagedObject) {\n this.deviceProfile.emit(deviceProfile);\n }\n\n getDeviceTypeTitle(deviceProfile: IManagedObject): string {\n return get(\n deviceProfile,\n 'c8y_Filter.type',\n this.translate.instant(this.DEVICE_TYPE_NOT_DEFINED)\n );\n }\n\n private getDeviceProfiles(name?: string, deviceType?: string) {\n const query: any = deviceType ? { 'c8y_Filter.type': deviceType } : {};\n if (name) {\n query.name = `*${name}*`;\n }\n return this.deviceProfileService.getDeviceProfiles(query);\n }\n}\n","<c8y-select-step-frame\n [header]=\"'Select device profile' | translate\"\n [noResults]=\"\n ((textFilter$ | async)?.length || (deviceType$ | async)?.length) &&\n (deviceProfile$ | async)?.data.length === 0\n \"\n>\n <div\n class=\"row\"\n filters\n >\n <div class=\"col-md-6 m-b-xs-8 m-b-sm-8\">\n <div class=\"input-group input-group-search\">\n <input\n class=\"form-control\"\n title=\"{{ 'Filter…' | translate }}\"\n placeholder=\"{{ 'Filter…' | translate }}\"\n type=\"search\"\n [ngModel]=\"textFilter$ | async\"\n (ngModelChange)=\"textFilter$.next($event)\"\n />\n <span class=\"input-group-addon\">\n <i\n c8yIcon=\"search\"\n *ngIf=\"(textFilter$ | async).length === 0\"\n ></i>\n <i\n class=\"text-muted\"\n c8yIcon=\"times\"\n *ngIf=\"(textFilter$ | async).length\"\n (click)=\"textFilter$.next('')\"\n ></i>\n </span>\n </div>\n </div>\n <div class=\"col-md-6 m-b-xs-8 m-b-sm-8\">\n <c8y-form-group class=\"m-0\">\n <c8y-typeahead\n placeholder=\"{{ 'Type to filter device types…' | translate }}\"\n name=\"deviceType\"\n [(ngModel)]=\"selectedDeviceType\"\n (onSearch)=\"deviceType$.next($event)\"\n [allowFreeEntries]=\"false\"\n >\n <c8y-li\n class=\"p-l-8 p-r-8 c8y-list__item--link\"\n (click)=\"selectedDeviceType = { name: '' }; deviceType$.next('')\"\n >\n <span>{{ 'All device types' | translate }}</span>\n </c8y-li>\n <c8y-li\n class=\"p-l-8 p-r-8 c8y-list__item--link\"\n *ngFor=\"let deviceType of deviceTypes\"\n (click)=\"selectedDeviceType = deviceType; deviceType$.next(deviceType.name)\"\n [active]=\"selectedDeviceType === deviceType\"\n >\n <c8y-highlight\n [text]=\"deviceType.name\"\n [pattern]=\"deviceType$ | async\"\n ></c8y-highlight>\n </c8y-li>\n </c8y-typeahead>\n <c8y-messages>\n <c8y-message\n name=\"notExisting\"\n [text]=\"'Select one of the existing device types.' | translate\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n </div>\n </div>\n <c8y-li\n class=\"hidden-sm hidden-xs m-r-8 m-l-8\"\n header\n >\n <c8y-li-icon><i class=\"p-l-32 p-r-40\"></i></c8y-li-icon>\n <c8y-li-body class=\"content-flex-40\">\n <div class=\"col-5\">\n <span\n class=\"text-truncate\"\n title=\" {{ 'Name' | translate }} \"\n >\n {{ 'Name' | translate }}\n </span>\n </div>\n <div class=\"col-3\">\n <span\n class=\"text-truncate\"\n title=\"{{ 'Device type' | translate }}\"\n >\n {{ 'Device type' | translate }}\n </span>\n </div>\n </c8y-li-body>\n </c8y-li>\n <c8y-list-group list>\n <c8y-li *c8yFor=\"let deviceProfile of deviceProfile$ | async; loadMore: 'auto'\">\n <c8y-li-radio (onSelect)=\"selectDeviceProfile(deviceProfile)\"></c8y-li-radio>\n <c8y-li-icon>\n <i c8yIcon=\"c8y-device-profile\"></i>\n </c8y-li-icon>\n <c8y-li-body class=\"content-flex-40\">\n <div class=\"col-5 m-b-xs-8\">\n <div\n class=\"text-truncate\"\n title=\"{{ deviceProfile.name }}\"\n >\n {{ deviceProfile.name }}\n </div>\n </div>\n <div class=\"col-3 m-b-xs-8\">\n <div\n class=\"text-truncate\"\n title=\"{{ 'Device type' | translate }}: {{ getDeviceTypeTitle(deviceProfile) }}\"\n >\n <span\n class=\"text-label-small m-r-8 visible-xs visible-sm\"\n translate\n >\n Device type\n </span>\n <span *ngIf=\"deviceProfile.c8y_Filter?.type; else noType\">\n {{ deviceProfile.c8y_Filter?.type }}\n </span>\n <ng-template #noType>\n <small>\n <em\n class=\"text-muted\"\n translate\n >\n Undefined`device type`\n </em>\n </small>\n </ng-template>\n </div>\n </div>\n </c8y-li-body>\n </c8y-li>\n </c8y-list-group>\n</c8y-select-step-frame>\n","import { CdkStep } from '@angular/cdk/stepper';\nimport { Component } from '@angular/core';\nimport { IManagedObject, IOperation } from '@c8y/client';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport { C8yStepper, C8yTranslatePipe } from '@c8y/ngx-components';\nimport {\n BaseStepperComponent,\n BulkOperationStepper,\n CustomStep\n} from '@c8y/ngx-components/operations/bulk-operation-stepper';\nimport {\n BulkOperationType,\n OperationDetails\n} from '@c8y/ngx-components/operations/bulk-operations-service';\nimport { get } from 'lodash-es';\nimport { SelectDeviceProfileStepComponent } from './select-device-profile-step.component';\nimport { ConfirmDeviceProfileSelectionStepComponent } from './confirm-device-profile-selection-step.component';\n\n@Component({\n selector: 'c8y-stepper-bulk-type-device-profile',\n templateUrl: 'stepper-bulk-type-device-profile.component.html',\n imports: [\n BulkOperationStepper,\n CustomStep,\n SelectDeviceProfileStepComponent,\n ConfirmDeviceProfileSelectionStepComponent,\n C8yTranslatePipe\n ]\n})\nexport class StepperBulkTypeDeviceProfileComponent extends BaseStepperComponent {\n readonly type: BulkOperationType = BulkOperationType.DEVICE_PROFILE;\n selectedDeviceProfile: IManagedObject;\n\n goToConfirmSelection($event: { stepper: C8yStepper; step: CdkStep }) {\n this.deviceTypes = get(this.selectedDeviceProfile, 'c8y_Filter.type');\n $event.stepper.next();\n }\n\n onDeviceProfileSelected(selectedItem) {\n this.selectedDeviceProfile = selectedItem;\n }\n\n protected retrieveOperationPrototype(): OperationDetails {\n return {\n name: gettext('Apply device profile'),\n description: get(this.selectedDeviceProfile, 'name'),\n prototype: {\n description: `Apply device profile: ${this.selectedDeviceProfile.name}`,\n profileId: this.selectedDeviceProfile.id,\n profileName: this.selectedDeviceProfile.name,\n c8y_DeviceProfile: this.selectedDeviceProfile.c8y_DeviceProfile\n } as unknown as IOperation\n };\n }\n}\n","<c8y-bulk-operation-stepper [type]=\"type\">\n <ng-container\n *customStep=\"\n 'Select device profile' | translate;\n completed: !!selectedDeviceProfile;\n buttonsDisabled: !selectedDeviceProfile;\n onNext: goToConfirmSelection.bind(this)\n \"\n >\n <c8y-select-device-profile-step\n (deviceProfile)=\"onDeviceProfileSelected($event)\"\n class=\"d-contents\"\n ></c8y-select-device-profile-step>\n </ng-container>\n <ng-container *customStep=\"'Confirm selected device profile' | translate\">\n <c8y-confirm-device-profile-selection-step\n class=\"d-contents\"\n [selectedDeviceProfile]=\"selectedDeviceProfile\"\n ></c8y-confirm-device-profile-selection-step>\n </ng-container>\n</c8y-bulk-operation-stepper>\n","import { NgModule } from '@angular/core';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport {\n baseUrl,\n BulkOperationType,\n hookListBulkType\n} from '@c8y/ngx-components/operations/bulk-operations-service';\nimport { ConfirmDeviceProfileSelectionStepComponent } from './confirm-device-profile-selection-step.component';\nimport { SelectDeviceProfileStepComponent } from './select-device-profile-step.component';\nimport { StepperBulkTypeDeviceProfileComponent } from './stepper-bulk-type-device-profile.component';\n\n/** Module for the 'Apply device profile' operation type stepper */\n@NgModule({\n imports: [\n StepperBulkTypeDeviceProfileComponent,\n SelectDeviceProfileStepComponent,\n ConfirmDeviceProfileSelectionStepComponent\n ],\n providers: [\n hookListBulkType({\n type: BulkOperationType.DEVICE_PROFILE,\n c8yIcon: 'c8y-device-profile',\n name: gettext('Apply device profile'),\n path: `${baseUrl}device-profile`,\n component: StepperBulkTypeDeviceProfileComponent,\n fragments: ['c8y_DeviceProfile'],\n selected: false\n })\n ],\n exports: [StepperBulkTypeDeviceProfileComponent]\n})\nexport class StepperBulkTypeDeviceProfileModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2"],"mappings":"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"}
1
+ {"version":3,"file":"c8y-ngx-components-operations-stepper-bulk-type-device-profile.mjs","sources":["../../operations/stepper-bulk-type-device-profile/confirm-device-profile-selection-step.component.ts","../../operations/stepper-bulk-type-device-profile/confirm-device-profile-selection-step.component.html","../../operations/stepper-bulk-type-device-profile/select-device-profile-step.component.ts","../../operations/stepper-bulk-type-device-profile/select-device-profile-step.component.html","../../operations/stepper-bulk-type-device-profile/stepper-bulk-type-device-profile.component.ts","../../operations/stepper-bulk-type-device-profile/stepper-bulk-type-device-profile.component.html","../../operations/stepper-bulk-type-device-profile/stepper-bulk-type-device-profile.module.ts","../../operations/stepper-bulk-type-device-profile/c8y-ngx-components-operations-stepper-bulk-type-device-profile.ts"],"sourcesContent":["import { Component, Input } from '@angular/core';\nimport { get } from 'lodash-es';\nimport { IManagedObject } from '@c8y/client';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport {\n ListGroupComponent,\n ListItemComponent,\n ListItemIconComponent,\n IconDirective,\n ListItemBodyComponent,\n C8yTranslateDirective,\n C8yTranslatePipe\n} from '@c8y/ngx-components';\nimport { TranslateService } from '@ngx-translate/core';\nimport {\n PreviewSelectionFrameComponent,\n PreviewBlockDirective\n} from '@c8y/ngx-components/operations/stepper-frames';\nimport { NgIf, NgFor } from '@angular/common';\n\n@Component({\n selector: 'c8y-confirm-device-profile-selection-step',\n templateUrl: 'confirm-device-profile-selection-step.component.html',\n imports: [\n PreviewSelectionFrameComponent,\n PreviewBlockDirective,\n NgIf,\n ListGroupComponent,\n ListItemComponent,\n ListItemIconComponent,\n IconDirective,\n ListItemBodyComponent,\n C8yTranslateDirective,\n NgFor,\n C8yTranslatePipe\n ]\n})\nexport class ConfirmDeviceProfileSelectionStepComponent {\n @Input() selectedDeviceProfile: IManagedObject;\n readonly DEVICE_TYPE_NOT_DEFINED = gettext('Device type not defined');\n\n constructor(private translate: TranslateService) {}\n\n get softwares() {\n return get(this.selectedDeviceProfile, ['c8y_DeviceProfile', 'software'], []);\n }\n\n get configurations() {\n return get(this.selectedDeviceProfile, ['c8y_DeviceProfile', 'configuration'], []);\n }\n\n getDeviceTypeTitle(deviceProfile: IManagedObject): string {\n return get(\n deviceProfile,\n 'c8y_Filter.type',\n this.translate.instant(this.DEVICE_TYPE_NOT_DEFINED)\n );\n }\n}\n","<c8y-preview-selection-frame\n [header]=\"'Confirm selection' | translate\"\n [name]=\"selectedDeviceProfile?.name\"\n>\n <ng-container *previewBlock=\"'Device type' | translate\">\n <ng-container *ngIf=\"selectedDeviceProfile?.c8y_Filter?.type; else noType\">\n <span>{{ selectedDeviceProfile.c8y_Filter.type }}</span>\n </ng-container>\n <ng-template #noType> --- </ng-template>\n </ng-container>\n <c8y-list-group\n *previewBlock=\"'Firmware' | translate; if: selectedDeviceProfile?.c8y_DeviceProfile.firmware\"\n >\n <c8y-li>\n <c8y-li-icon>\n <i c8yIcon=\"c8y-firmware\"></i>\n </c8y-li-icon>\n <c8y-li-body class=\"content-flex-500\">\n <div class=\"col-5\">\n {{ selectedDeviceProfile.c8y_DeviceProfile.firmware.name }}\n </div>\n <div class=\"col-5\">\n <span class=\"text-label-small m-r-8\" translate> Version </span>\n <span>\n {{ selectedDeviceProfile.c8y_DeviceProfile.firmware.version }}\n </span>\n </div>\n </c8y-li-body>\n </c8y-li>\n </c8y-list-group>\n <c8y-list-group *previewBlock=\"'Software' | translate; if: softwares?.length\">\n <c8y-li *ngFor=\"let software of softwares\">\n <c8y-li-icon>\n <i c8yIcon=\"c8y-tools\"></i>\n </c8y-li-icon>\n <c8y-li-body class=\"content-flex-500\">\n <div class=\"col-5\">\n {{ software.name }}\n </div>\n <div class=\"col-5\">\n <span class=\"text-label-small m-r-8\" translate> Version </span>\n <span>\n {{ software.version }}\n </span>\n </div>\n </c8y-li-body>\n </c8y-li>\n </c8y-list-group>\n <c8y-list-group *previewBlock=\"'Configuration' | translate; if: configurations?.length\">\n <c8y-li *ngFor=\"let configuration of configurations\">\n <c8y-li-icon>\n <i c8yIcon=\"c8y-tools\"></i>\n </c8y-li-icon>\n <c8y-li-body class=\"content-flex-500\">\n <div class=\"col-5\">\n {{ configuration.name }}\n </div>\n <div class=\"col-5\">\n <span class=\"label label-info\" *ngIf=\"configuration.type\">\n {{ configuration.type }}\n </span>\n </div>\n </c8y-li-body>\n </c8y-li>\n </c8y-list-group>\n</c8y-preview-selection-frame>\n","import { Component, Output, EventEmitter } from '@angular/core';\nimport { Observable, BehaviorSubject, combineLatest, Subscription, from } from 'rxjs';\nimport { switchMap, shareReplay, debounceTime, distinctUntilChanged } from 'rxjs/operators';\nimport { IResultList, IManagedObject } from '@c8y/client';\nimport { isEqual, uniqWith, get } from 'lodash-es';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport {\n IconDirective,\n FormGroupComponent,\n TypeaheadComponent,\n ListItemComponent,\n HighlightComponent,\n MessagesComponent,\n MessageDirective,\n ListItemIconComponent,\n ListItemBodyComponent,\n ListGroupComponent,\n ForOfDirective,\n ListItemRadioComponent,\n C8yTranslateDirective,\n C8yTranslatePipe\n} from '@c8y/ngx-components';\nimport { TranslateService } from '@ngx-translate/core';\nimport { DeviceProfileService } from '@c8y/ngx-components/device-profile';\nimport { SelectStepFrameComponent } from '@c8y/ngx-components/operations/stepper-frames';\nimport { FormsModule } from '@angular/forms';\nimport { NgIf, NgFor, AsyncPipe } from '@angular/common';\n\n@Component({\n selector: 'c8y-select-device-profile-step',\n templateUrl: 'select-device-profile-step.component.html',\n imports: [\n SelectStepFrameComponent,\n FormsModule,\n NgIf,\n IconDirective,\n FormGroupComponent,\n TypeaheadComponent,\n ListItemComponent,\n NgFor,\n HighlightComponent,\n MessagesComponent,\n MessageDirective,\n ListItemIconComponent,\n ListItemBodyComponent,\n ListGroupComponent,\n ForOfDirective,\n ListItemRadioComponent,\n C8yTranslateDirective,\n C8yTranslatePipe,\n AsyncPipe\n ]\n})\nexport class SelectDeviceProfileStepComponent {\n @Output() deviceProfile: EventEmitter<IManagedObject> = new EventEmitter<IManagedObject>();\n textFilter$: BehaviorSubject<string> = new BehaviorSubject('');\n deviceType$: BehaviorSubject<string> = new BehaviorSubject('');\n readonly DEVICE_TYPE_NOT_DEFINED = gettext('Device type not defined');\n deviceTypes = [];\n selectedDeviceType = { name: '' };\n deviceProfile$: Observable<IResultList<IManagedObject>> = combineLatest(\n this.textFilter$,\n this.deviceType$\n ).pipe(\n switchMap(([name, deviceType]) => this.getDeviceProfiles(name, deviceType)),\n shareReplay(1)\n );\n private deviceTypeSubscription: Subscription;\n\n constructor(\n private deviceProfileService: DeviceProfileService,\n private translate: TranslateService\n ) {\n this.loadDeviceTypes();\n }\n\n loadDeviceTypes() {\n this.deviceTypeSubscription = this.deviceType$\n .pipe(\n debounceTime(300),\n distinctUntilChanged(),\n switchMap(searchStr => {\n const query = { 'c8y_Filter.type': `*${searchStr}*` };\n return from(this.deviceProfileService.getDeviceProfiles(query));\n })\n )\n .subscribe(({ data }) => {\n this.deviceTypes = uniqWith(\n data.map(val => ({ name: val.c8y_Filter.type })).filter(val => val.name),\n isEqual\n );\n });\n }\n\n ngOnDestroy() {\n this.deviceTypeSubscription.unsubscribe();\n }\n\n selectDeviceProfile(deviceProfile: IManagedObject) {\n this.deviceProfile.emit(deviceProfile);\n }\n\n getDeviceTypeTitle(deviceProfile: IManagedObject): string {\n return get(\n deviceProfile,\n 'c8y_Filter.type',\n this.translate.instant(this.DEVICE_TYPE_NOT_DEFINED)\n );\n }\n\n private getDeviceProfiles(name?: string, deviceType?: string) {\n const query: any = deviceType ? { 'c8y_Filter.type': deviceType } : {};\n if (name) {\n query.name = `*${name}*`;\n }\n return this.deviceProfileService.getDeviceProfiles(query);\n }\n}\n","<c8y-select-step-frame\n [header]=\"'Select device profile' | translate\"\n [noResults]=\"\n ((textFilter$ | async)?.length || (deviceType$ | async)?.length) &&\n (deviceProfile$ | async)?.data.length === 0\n \"\n>\n <div\n class=\"row\"\n filters\n >\n <div class=\"col-md-6 m-b-xs-8 m-b-sm-8\">\n <div class=\"input-group input-group-search\">\n <input\n class=\"form-control\"\n title=\"{{ 'Filter…' | translate }}\"\n placeholder=\"{{ 'Filter…' | translate }}\"\n type=\"search\"\n [ngModel]=\"textFilter$ | async\"\n (ngModelChange)=\"textFilter$.next($event)\"\n />\n <span class=\"input-group-addon\">\n <i\n c8yIcon=\"search\"\n *ngIf=\"(textFilter$ | async).length === 0\"\n ></i>\n <i\n class=\"text-muted\"\n c8yIcon=\"times\"\n *ngIf=\"(textFilter$ | async).length\"\n (click)=\"textFilter$.next('')\"\n ></i>\n </span>\n </div>\n </div>\n <div class=\"col-md-6 m-b-xs-8 m-b-sm-8\">\n <c8y-form-group class=\"m-0\">\n <c8y-typeahead\n placeholder=\"{{ 'Type to filter device types…' | translate }}\"\n name=\"deviceType\"\n [(ngModel)]=\"selectedDeviceType\"\n (onSearch)=\"deviceType$.next($event)\"\n [allowFreeEntries]=\"false\"\n >\n <c8y-li\n class=\"p-l-8 p-r-8 c8y-list__item--link\"\n (click)=\"selectedDeviceType = { name: '' }; deviceType$.next('')\"\n >\n <span>{{ 'All device types' | translate }}</span>\n </c8y-li>\n <c8y-li\n class=\"p-l-8 p-r-8 c8y-list__item--link\"\n *ngFor=\"let deviceType of deviceTypes\"\n (click)=\"selectedDeviceType = deviceType; deviceType$.next(deviceType.name)\"\n [active]=\"selectedDeviceType === deviceType\"\n >\n <c8y-highlight\n [text]=\"deviceType.name\"\n [pattern]=\"deviceType$ | async\"\n ></c8y-highlight>\n </c8y-li>\n </c8y-typeahead>\n <c8y-messages>\n <c8y-message\n name=\"notExisting\"\n [text]=\"'Select one of the existing device types.' | translate\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n </div>\n </div>\n <c8y-li\n class=\"hidden-sm hidden-xs m-r-8 m-l-8\"\n header\n >\n <c8y-li-icon><i class=\"p-l-32 p-r-40\"></i></c8y-li-icon>\n <c8y-li-body class=\"content-flex-40\">\n <div class=\"col-5\">\n <span\n class=\"text-truncate\"\n title=\" {{ 'Name' | translate }} \"\n >\n {{ 'Name' | translate }}\n </span>\n </div>\n <div class=\"col-3\">\n <span\n class=\"text-truncate\"\n title=\"{{ 'Device type' | translate }}\"\n >\n {{ 'Device type' | translate }}\n </span>\n </div>\n </c8y-li-body>\n </c8y-li>\n <c8y-list-group list>\n <c8y-li *c8yFor=\"let deviceProfile of deviceProfile$ | async; loadMore: 'auto'\">\n <c8y-li-radio (onSelect)=\"selectDeviceProfile(deviceProfile)\"></c8y-li-radio>\n <c8y-li-icon>\n <i c8yIcon=\"c8y-device-profile\"></i>\n </c8y-li-icon>\n <c8y-li-body class=\"content-flex-40\">\n <div class=\"col-5 m-b-xs-8\">\n <div\n class=\"text-truncate\"\n title=\"{{ deviceProfile.name }}\"\n >\n {{ deviceProfile.name }}\n </div>\n </div>\n <div class=\"col-3 m-b-xs-8\">\n <div\n class=\"text-truncate\"\n title=\"{{ 'Device type' | translate }}: {{ getDeviceTypeTitle(deviceProfile) }}\"\n >\n <span\n class=\"text-label-small m-r-8 visible-xs visible-sm\"\n translate\n >\n Device type\n </span>\n <span *ngIf=\"deviceProfile.c8y_Filter?.type; else noType\">\n {{ deviceProfile.c8y_Filter?.type }}\n </span>\n <ng-template #noType>\n <small>\n <em\n class=\"text-muted\"\n translate\n >\n Undefined`device type`\n </em>\n </small>\n </ng-template>\n </div>\n </div>\n </c8y-li-body>\n </c8y-li>\n </c8y-list-group>\n</c8y-select-step-frame>\n","import { CdkStep } from '@angular/cdk/stepper';\nimport { Component } from '@angular/core';\nimport { IManagedObject, IOperation } from '@c8y/client';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport { C8yStepper, C8yTranslatePipe } from '@c8y/ngx-components';\nimport {\n BaseStepperComponent,\n BulkOperationStepper,\n CustomStep\n} from '@c8y/ngx-components/operations/bulk-operation-stepper';\nimport {\n BulkOperationType,\n OperationDetails\n} from '@c8y/ngx-components/operations/bulk-operations-service';\nimport { get } from 'lodash-es';\nimport { SelectDeviceProfileStepComponent } from './select-device-profile-step.component';\nimport { ConfirmDeviceProfileSelectionStepComponent } from './confirm-device-profile-selection-step.component';\n\n@Component({\n selector: 'c8y-stepper-bulk-type-device-profile',\n templateUrl: 'stepper-bulk-type-device-profile.component.html',\n imports: [\n BulkOperationStepper,\n CustomStep,\n SelectDeviceProfileStepComponent,\n ConfirmDeviceProfileSelectionStepComponent,\n C8yTranslatePipe\n ]\n})\nexport class StepperBulkTypeDeviceProfileComponent extends BaseStepperComponent {\n readonly type: BulkOperationType = BulkOperationType.DEVICE_PROFILE;\n selectedDeviceProfile: IManagedObject;\n\n goToConfirmSelection($event: { stepper: C8yStepper; step: CdkStep }) {\n this.deviceTypes = get(this.selectedDeviceProfile, 'c8y_Filter.type');\n $event.stepper.next();\n }\n\n onDeviceProfileSelected(selectedItem) {\n this.selectedDeviceProfile = selectedItem;\n }\n\n protected retrieveOperationPrototype(): OperationDetails {\n return {\n name: gettext('Apply device profile'),\n description: get(this.selectedDeviceProfile, 'name'),\n prototype: {\n description: `Apply device profile: ${this.selectedDeviceProfile.name}`,\n profileId: this.selectedDeviceProfile.id,\n profileName: this.selectedDeviceProfile.name,\n c8y_DeviceProfile: this.selectedDeviceProfile.c8y_DeviceProfile\n } as unknown as IOperation\n };\n }\n}\n","<c8y-bulk-operation-stepper [type]=\"type\">\n <ng-container\n *customStep=\"\n 'Select device profile' | translate;\n completed: !!selectedDeviceProfile;\n buttonsDisabled: !selectedDeviceProfile;\n onNext: goToConfirmSelection.bind(this)\n \"\n >\n <c8y-select-device-profile-step\n (deviceProfile)=\"onDeviceProfileSelected($event)\"\n class=\"d-contents\"\n ></c8y-select-device-profile-step>\n </ng-container>\n <ng-container *customStep=\"'Confirm selected device profile' | translate\">\n <c8y-confirm-device-profile-selection-step\n class=\"d-contents\"\n [selectedDeviceProfile]=\"selectedDeviceProfile\"\n ></c8y-confirm-device-profile-selection-step>\n </ng-container>\n</c8y-bulk-operation-stepper>\n","import { NgModule } from '@angular/core';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport {\n baseUrl,\n BulkOperationType,\n hookListBulkType\n} from '@c8y/ngx-components/operations/bulk-operations-service';\nimport { ConfirmDeviceProfileSelectionStepComponent } from './confirm-device-profile-selection-step.component';\nimport { SelectDeviceProfileStepComponent } from './select-device-profile-step.component';\nimport { StepperBulkTypeDeviceProfileComponent } from './stepper-bulk-type-device-profile.component';\n\n/** Module for the 'Apply device profile' operation type stepper */\n@NgModule({\n imports: [\n StepperBulkTypeDeviceProfileComponent,\n SelectDeviceProfileStepComponent,\n ConfirmDeviceProfileSelectionStepComponent\n ],\n providers: [\n hookListBulkType({\n type: BulkOperationType.DEVICE_PROFILE,\n c8yIcon: 'c8y-device-profile',\n name: gettext('Apply device profile'),\n path: `${baseUrl}device-profile`,\n component: StepperBulkTypeDeviceProfileComponent,\n fragments: ['c8y_DeviceProfile'],\n selected: false\n })\n ],\n exports: [StepperBulkTypeDeviceProfileComponent]\n})\nexport class StepperBulkTypeDeviceProfileModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2"],"mappings":"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"}
@@ -78,7 +78,7 @@ class SelectSoftwareStepComponent {
78
78
  return this.repositoryService.listRepositoryEntries(RepositoryType.SOFTWARE, { query });
79
79
  }
80
80
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: SelectSoftwareStepComponent, deps: [{ token: i1.RepositoryService }, { token: i2.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
81
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.18", type: SelectSoftwareStepComponent, isStandalone: true, selector: "c8y-select-software-step", outputs: { software: "software" }, viewQueries: [{ propertyName: "radioButtons", predicate: ListItemRadioComponent, descendants: true }], ngImport: i0, template: "<c8y-select-step-frame\n [header]=\"'Select software' | translate\"\n [noResults]=\"\n ((textFilter$ | async)?.length ||\n (deviceType$ | async)?.length ||\n (softwareTypeFilter$ | async)?.length) &&\n (software$ | async)?.data.length === 0\n \"\n>\n <div\n class=\"row\"\n filters\n >\n <div class=\"col-md-4 m-b-xs-8 m-b-sm-8\">\n <div class=\"input-group input-group-search\">\n <input\n class=\"form-control\"\n title=\"{{ 'Filter\u2026' | translate }}\"\n placeholder=\"{{ 'Filter\u2026' | translate }}\"\n type=\"search\"\n [ngModel]=\"textFilter$ | async\"\n (ngModelChange)=\"textFilter$.next($event)\"\n />\n <span class=\"input-group-addon\">\n @if ((textFilter$ | async).length === 0) {\n <i c8yIcon=\"search\"></i>\n }\n @if ((textFilter$ | async).length > 0) {\n <i\n class=\"text-muted\"\n c8yIcon=\"times\"\n (click)=\"textFilter$.next('')\"\n ></i>\n }\n </span>\n </div>\n </div>\n <div class=\"col-md-4 m-b-xs-8 m-b-sm-8\">\n <c8y-form-group class=\"m-0\">\n <c8y-typeahead\n placeholder=\"{{ 'Type to filter device types\u2026' | translate }}\"\n name=\"deviceType\"\n [(ngModel)]=\"selectedDeviceType\"\n (onSearch)=\"deviceType$.next($event)\"\n [allowFreeEntries]=\"false\"\n >\n <c8y-li\n class=\"p-l-8 p-r-8 c8y-list__item--link\"\n (click)=\"selectedDeviceType = { name: '' }; deviceType$.next('')\"\n [active]=\"!selectedDeviceType?.name\"\n >\n <span>{{ 'All device types' | translate }}</span>\n </c8y-li>\n @for (deviceType of deviceTypes; track deviceType) {\n <c8y-li\n class=\"p-l-8 p-r-8 c8y-list__item--link\"\n (click)=\"selectedDeviceType = deviceType; deviceType$.next(deviceType.name)\"\n [active]=\"selectedDeviceType === deviceType\"\n >\n <c8y-highlight\n [text]=\"deviceType.name\"\n [pattern]=\"deviceType$ | async\"\n ></c8y-highlight>\n </c8y-li>\n }\n </c8y-typeahead>\n <c8y-messages>\n <c8y-message\n name=\"notExisting\"\n [text]=\"'Select one of the existing device types.' | translate\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n </div>\n <div class=\"col-md-4\">\n <c8y-form-group class=\"m-0\">\n <c8y-software-type\n [required]=\"false\"\n [emitResultsOnly]=\"true\"\n [showBtnInNotFoundMessage]=\"false\"\n [allowFreeEntries]=\"false\"\n [placeholder]=\"'Type to filter software types\u2026' | translate\"\n [showClearSelectionOption]=\"true\"\n (onSelectSoftware)=\"softwareTypeFilter$.next($event?.softwareType)\"\n ></c8y-software-type>\n <c8y-messages>\n <c8y-message\n name=\"notExisting\"\n [text]=\"'Select one of the existing device types.' | translate\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n </div>\n </div>\n <c8y-li\n class=\"hidden-sm hidden-xs m-r-8 m-l-8\"\n header\n >\n <c8y-li-icon><i class=\"p-l-24\"></i></c8y-li-icon>\n <c8y-li-body class=\"content-flex-40 p-r-32\">\n <div class=\"col-5\">\n <span\n class=\"text-truncate\"\n title=\" {{ 'Name' | translate }} \"\n >\n {{ 'Name' | translate }}\n </span>\n </div>\n <div class=\"col-2\">\n <span\n class=\"text-truncate\"\n title=\"{{ 'Device type' | translate }}\"\n >\n {{ 'Device type' | translate }}\n </span>\n </div>\n <div class=\"col-3\">\n <span\n class=\"text-truncate\"\n title=\"{{ 'Software type' | translate }}\"\n >\n {{ 'Software type' | translate }}\n </span>\n </div>\n <div class=\"col-2\">\n <span\n class=\"text-truncate\"\n title=\"{{ 'Versions' | translate }}\"\n >\n {{ 'Versions' | translate }}\n </span>\n </div>\n </c8y-li-body>\n </c8y-li>\n <c8y-list-group list>\n <c8y-li\n *c8yFor=\"let software of software$ | async; loadMore: 'auto'\"\n #li\n >\n <c8y-li-icon>\n <i c8yIcon=\"c8y-tools\"></i>\n </c8y-li-icon>\n <div class=\"content-flex-40\">\n <div class=\"col-5 m-b-xs-8\">\n <button\n class=\"btn-clean\"\n title=\"{{ software.name }}\"\n type=\"button\"\n (click)=\"li.collapsed = !li.collapsed\"\n >\n <c8y-highlight\n [text]=\"software.name\"\n [pattern]=\"textFilter$ | async\"\n ></c8y-highlight>\n </button>\n </div>\n <div class=\"col-2 m-b-xs-8\">\n <div\n class=\"text-truncate\"\n title=\"{{ 'Device type' | translate }}: {{ getDeviceTypeTitle(software) }}\"\n >\n <span\n class=\"text-label-small m-r-8 visible-xs visible-sm\"\n translate\n >\n Device type\n </span>\n @if (software.c8y_Filter?.type) {\n <span>\n {{ software.c8y_Filter?.type }}\n </span>\n } @else {\n <small>\n <em\n class=\"text-muted\"\n translate\n >\n Undefined`device type`\n </em>\n </small>\n }\n </div>\n </div>\n <div class=\"col-3 m-b-xs-8\">\n <span\n class=\"text-label-small m-r-8 visible-xs visible-sm\"\n translate\n >\n Software type\n </span>\n @if (software.softwareType) {\n <span class=\"label label-info\">\n {{ software.softwareType }}\n </span>\n } @else {\n <small class=\"text-muted\">\n <em translate>Undefined`software type`</em>\n </small>\n }\n </div>\n <div class=\"col-2\">\n @if (isLegacy(software)) {\n <span class=\"label label-warning m-l-auto-sm\">\n <span translate>Legacy</span>\n </span>\n }\n @if (!isLegacy(software)) {\n <span>\n @if ((getBaseVersionsCount$(software) | async) === null) {\n <span>\n <span class=\"label label-info\">\n <i\n class=\"icon-spin\"\n c8yIcon=\"circle-o-notch\"\n ></i>\n </span>\n </span>\n }\n @if ((getBaseVersionsCount$(software) | async) !== null) {\n <span>\n <span [ngPlural]=\"getBaseVersionsCount$(software) | async\">\n <ng-template ngPluralCase=\"=1\">\n <span\n class=\"text-label-small m-r-8 visible-xs visible-sm\"\n translate\n >\n version\n </span>\n <span class=\"badge badge-info m-l-auto-sm\">1</span>\n </ng-template>\n <ng-template ngPluralCase=\"other\">\n <span\n class=\"text-label-small m-r-8 visible-xs visible-sm\"\n translate\n >\n versions\n </span>\n <span class=\"badge badge-info m-l-auto-sm\">\n {{ getBaseVersionsCount$(software) | async }}\n </span>\n </ng-template>\n </span>\n </span>\n }\n </span>\n }\n </div>\n </div>\n <c8y-li-collapse>\n <c8y-list-group>\n <c8y-li *c8yFor=\"let option of getVersions(software) | async\">\n <c8y-li-radio\n [name]=\"software.id\"\n (onSelect)=\"selectSoftware({ option: option, software: software })\"\n ></c8y-li-radio>\n <c8y-li-body class=\"content-flex-40 p-r-16\">\n <div class=\"col-4\">\n {{ option.c8y_Software.version }}\n </div>\n <div class=\"col-5\">\n <p class=\"text-truncate\">\n <span\n class=\"text-label-small m-r-8\"\n translate\n >\n File\n </span>\n @if (option.c8y_Software.url === '') {\n <span title=\"{{ 'Provided by device' | translate }}\">\n {{ 'Provided by device' | translate }}\n </span>\n } @else {\n <span title=\"{{ option.c8y_Software.url }}\">\n {{ option.c8y_Software.url }}\n </span>\n }\n </p>\n </div>\n @if (option.id === software.selectedId) {\n <div class=\"col-3 d-flex\">\n <div\n class=\"c8y-select-wrapper d-inline-block m-l-auto\"\n style=\"margin: -4px 0\"\n >\n <select\n class=\"form-control input-sm\"\n id=\"action\"\n [(ngModel)]=\"option.action\"\n (change)=\"emitSoftware({ option: option, software: software })\"\n >\n <option [ngValue]=\"'install'\">\n {{ 'Install/update`software`' | translate }}\n </option>\n <option [ngValue]=\"'delete'\">{{ 'Remove`software`' | translate }}</option>\n </select>\n <span></span>\n </div>\n </div>\n }\n </c8y-li-body>\n </c8y-li>\n </c8y-list-group>\n </c8y-li-collapse>\n </c8y-li>\n </c8y-list-group>\n</c8y-select-step-frame>\n", dependencies: [{ kind: "component", type: SelectStepFrameComponent, selector: "c8y-select-step-frame", inputs: ["header", "noResults"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "component", type: FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "component", type: TypeaheadComponent, selector: "c8y-typeahead", inputs: ["required", "maxlength", "disabled", "allowFreeEntries", "placeholder", "displayProperty", "icon", "name", "autoClose", "hideNew", "container", "selected", "title", "highlightFirstItem"], outputs: ["onSearch", "onIconClick"] }, { kind: "component", type: ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "highlighted", "emptyActions", "dense", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "component", type: HighlightComponent, selector: "c8y-highlight", inputs: ["pattern", "text", "elementClass", "shouldTrimPattern"] }, { kind: "component", type: MessagesComponent, selector: "c8y-messages", inputs: ["show", "defaults", "helpMessage"] }, { kind: "directive", type: MessageDirective, selector: "c8y-message", inputs: ["name", "text"] }, { kind: "ngmodule", type: SharedRepositoryModule }, { kind: "component", type: i1.SoftwareTypeComponent, selector: "c8y-software-type", inputs: ["softwareTypeMO", "disabled", "style", "required", "placeholder", "emitResultsOnly", "showBtnInNotFoundMessage", "allowFreeEntries", "showClearSelectionOption", "clearSelectionOptionLabel", "presetSoftwareTypes"], outputs: ["onSelectSoftware"] }, { kind: "component", type: ListItemIconComponent, selector: "c8y-list-item-icon, c8y-li-icon", inputs: ["icon", "status"] }, { kind: "component", type: ListItemBodyComponent, selector: "c8y-list-item-body, c8y-li-body", inputs: ["body"] }, { kind: "component", type: ListGroupComponent, selector: "c8y-list-group" }, { kind: "directive", type: ForOfDirective, selector: "[c8yFor]", inputs: ["c8yForOf", "c8yForLoadMore", "c8yForPipe", "c8yForNotFound", "c8yForMaxIterations", "c8yForLoadingTemplate", "c8yForLoadNextLabel", "c8yForLoadingLabel", "c8yForRealtime", "c8yForRealtimeOptions", "c8yForComparator", "c8yForEnableVirtualScroll", "c8yForVirtualScrollElementSize", "c8yForVirtualScrollStrategy", "c8yForVirtualScrollContainerHeight"], outputs: ["c8yForCount", "c8yForChange", "c8yForLoadMoreComponent"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: NgPlural, selector: "[ngPlural]", inputs: ["ngPlural"] }, { kind: "directive", type: NgPluralCase, selector: "[ngPluralCase]" }, { kind: "component", type: ListItemCollapseComponent, selector: "c8y-list-item-collapse, c8y-li-collapse", inputs: ["collapseWay"] }, { kind: "component", type: ListItemRadioComponent, selector: "c8y-list-item-radio, c8y-li-radio", inputs: ["selected", "name", "disabled", "value"], outputs: ["onSelect"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }] }); }
81
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.18", type: SelectSoftwareStepComponent, isStandalone: true, selector: "c8y-select-software-step", outputs: { software: "software" }, viewQueries: [{ propertyName: "radioButtons", predicate: ListItemRadioComponent, descendants: true }], ngImport: i0, template: "<c8y-select-step-frame\n [header]=\"'Select software' | translate\"\n [noResults]=\"\n ((textFilter$ | async)?.length ||\n (deviceType$ | async)?.length ||\n (softwareTypeFilter$ | async)?.length) &&\n (software$ | async)?.data.length === 0\n \"\n>\n <div\n class=\"row\"\n filters\n >\n <div class=\"col-md-4 m-b-xs-8 m-b-sm-8\">\n <div class=\"input-group input-group-search\">\n <input\n class=\"form-control\"\n title=\"{{ 'Filter\u2026' | translate }}\"\n placeholder=\"{{ 'Filter\u2026' | translate }}\"\n type=\"search\"\n [ngModel]=\"textFilter$ | async\"\n (ngModelChange)=\"textFilter$.next($event)\"\n />\n <span class=\"input-group-addon\">\n @if ((textFilter$ | async).length === 0) {\n <i c8yIcon=\"search\"></i>\n }\n @if ((textFilter$ | async).length > 0) {\n <i\n class=\"text-muted\"\n c8yIcon=\"times\"\n (click)=\"textFilter$.next('')\"\n ></i>\n }\n </span>\n </div>\n </div>\n <div class=\"col-md-4 m-b-xs-8 m-b-sm-8\">\n <c8y-form-group class=\"m-0\">\n <c8y-typeahead\n placeholder=\"{{ 'Type to filter device types\u2026' | translate }}\"\n name=\"deviceType\"\n [(ngModel)]=\"selectedDeviceType\"\n (onSearch)=\"deviceType$.next($event)\"\n [allowFreeEntries]=\"false\"\n >\n <c8y-li\n class=\"p-l-8 p-r-8 c8y-list__item--link\"\n (click)=\"selectedDeviceType = { name: '' }; deviceType$.next('')\"\n [active]=\"!selectedDeviceType?.name\"\n >\n <span>{{ 'All device types' | translate }}</span>\n </c8y-li>\n @for (deviceType of deviceTypes; track deviceType) {\n <c8y-li\n class=\"p-l-8 p-r-8 c8y-list__item--link\"\n (click)=\"selectedDeviceType = deviceType; deviceType$.next(deviceType.name)\"\n [active]=\"selectedDeviceType === deviceType\"\n >\n <c8y-highlight\n [text]=\"deviceType.name\"\n [pattern]=\"deviceType$ | async\"\n ></c8y-highlight>\n </c8y-li>\n }\n </c8y-typeahead>\n <c8y-messages>\n <c8y-message\n name=\"notExisting\"\n [text]=\"'Select one of the existing device types.' | translate\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n </div>\n <div class=\"col-md-4\">\n <c8y-form-group class=\"m-0\">\n <c8y-software-type\n [required]=\"false\"\n [emitResultsOnly]=\"true\"\n [showBtnInNotFoundMessage]=\"false\"\n [allowFreeEntries]=\"false\"\n [placeholder]=\"'Type to filter software types\u2026' | translate\"\n [showClearSelectionOption]=\"true\"\n (onSelectSoftware)=\"softwareTypeFilter$.next($event?.softwareType)\"\n ></c8y-software-type>\n <c8y-messages>\n <c8y-message\n name=\"notExisting\"\n [text]=\"'Select one of the existing device types.' | translate\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n </div>\n </div>\n <c8y-li\n class=\"hidden-sm hidden-xs m-r-8 m-l-8\"\n header\n >\n <c8y-li-icon><i class=\"p-l-24\"></i></c8y-li-icon>\n <c8y-li-body class=\"content-flex-40 p-r-32\">\n <div class=\"col-5\">\n <span\n class=\"text-truncate\"\n title=\" {{ 'Name' | translate }} \"\n >\n {{ 'Name' | translate }}\n </span>\n </div>\n <div class=\"col-2\">\n <span\n class=\"text-truncate\"\n title=\"{{ 'Device type' | translate }}\"\n >\n {{ 'Device type' | translate }}\n </span>\n </div>\n <div class=\"col-3\">\n <span\n class=\"text-truncate\"\n title=\"{{ 'Software type' | translate }}\"\n >\n {{ 'Software type' | translate }}\n </span>\n </div>\n <div class=\"col-2\">\n <span\n class=\"text-truncate\"\n title=\"{{ 'Versions' | translate }}\"\n >\n {{ 'Versions' | translate }}\n </span>\n </div>\n </c8y-li-body>\n </c8y-li>\n <c8y-list-group list>\n <c8y-li\n *c8yFor=\"let software of software$ | async; loadMore: 'auto'\"\n #li\n >\n <c8y-li-icon>\n <i c8yIcon=\"c8y-tools\"></i>\n </c8y-li-icon>\n <div class=\"content-flex-40\">\n <div class=\"col-5 m-b-xs-8\">\n <button\n class=\"btn-clean\"\n title=\"{{ software.name }}\"\n type=\"button\"\n (click)=\"li.collapsed = !li.collapsed\"\n >\n <c8y-highlight\n [text]=\"software.name\"\n [pattern]=\"textFilter$ | async\"\n ></c8y-highlight>\n </button>\n </div>\n <div class=\"col-2 m-b-xs-8\">\n <div\n class=\"text-truncate\"\n title=\"{{ 'Device type' | translate }}: {{ getDeviceTypeTitle(software) }}\"\n >\n <span\n class=\"text-label-small m-r-8 visible-xs visible-sm\"\n translate\n >\n Device type\n </span>\n @if (software.c8y_Filter?.type) {\n <span>\n {{ software.c8y_Filter?.type }}\n </span>\n } @else {\n <small>\n <em\n class=\"text-muted\"\n translate\n >\n Undefined`device type`\n </em>\n </small>\n }\n </div>\n </div>\n <div class=\"col-3 m-b-xs-8\">\n <span\n class=\"text-label-small m-r-8 visible-xs visible-sm\"\n translate\n >\n Software type\n </span>\n @if (software.softwareType) {\n <span class=\"label label-info\">\n {{ software.softwareType }}\n </span>\n } @else {\n <small class=\"text-muted\">\n <em translate>Undefined`software type`</em>\n </small>\n }\n </div>\n <div class=\"col-2\">\n @if (isLegacy(software)) {\n <span class=\"label label-warning m-l-auto-sm\">\n <span translate>Legacy</span>\n </span>\n }\n @if (!isLegacy(software)) {\n <span>\n @if ((getBaseVersionsCount$(software) | async) === null) {\n <span>\n <span class=\"label label-info\">\n <i\n class=\"icon-spin\"\n c8yIcon=\"circle-o-notch\"\n ></i>\n </span>\n </span>\n }\n @if ((getBaseVersionsCount$(software) | async) !== null) {\n <span>\n <span [ngPlural]=\"getBaseVersionsCount$(software) | async\">\n <ng-template ngPluralCase=\"=1\">\n <span\n class=\"text-label-small m-r-8 visible-xs visible-sm\"\n translate\n >\n version\n </span>\n <span class=\"badge badge-info m-l-auto-sm\">1</span>\n </ng-template>\n <ng-template ngPluralCase=\"other\">\n <span\n class=\"text-label-small m-r-8 visible-xs visible-sm\"\n translate\n >\n versions\n </span>\n <span class=\"badge badge-info m-l-auto-sm\">\n {{ getBaseVersionsCount$(software) | async }}\n </span>\n </ng-template>\n </span>\n </span>\n }\n </span>\n }\n </div>\n </div>\n <c8y-li-collapse>\n <c8y-list-group>\n <c8y-li *c8yFor=\"let option of getVersions(software) | async\">\n <c8y-li-radio\n [name]=\"software.id\"\n (onSelect)=\"selectSoftware({ option: option, software: software })\"\n ></c8y-li-radio>\n <c8y-li-body class=\"content-flex-40 p-r-16\">\n <div class=\"col-4\">\n {{ option.c8y_Software.version }}\n </div>\n <div class=\"col-5\">\n <p class=\"text-truncate\">\n <span\n class=\"text-label-small m-r-8\"\n translate\n >\n File\n </span>\n @if (option.c8y_Software.url === '') {\n <span title=\"{{ 'Provided by device' | translate }}\">\n {{ 'Provided by device' | translate }}\n </span>\n } @else {\n <span title=\"{{ option.c8y_Software.url }}\">\n {{ option.c8y_Software.url }}\n </span>\n }\n </p>\n </div>\n @if (option.id === software.selectedId) {\n <div class=\"col-3 d-flex\">\n <div\n class=\"c8y-select-wrapper d-inline-block m-l-auto\"\n style=\"margin: -4px 0\"\n >\n <select\n class=\"form-control input-sm\"\n id=\"action\"\n [(ngModel)]=\"option.action\"\n (change)=\"emitSoftware({ option: option, software: software })\"\n >\n <option [ngValue]=\"'install'\">\n {{ 'Install/update`software`' | translate }}\n </option>\n <option [ngValue]=\"'delete'\">{{ 'Remove`software`' | translate }}</option>\n </select>\n <span></span>\n </div>\n </div>\n }\n </c8y-li-body>\n </c8y-li>\n </c8y-list-group>\n </c8y-li-collapse>\n </c8y-li>\n </c8y-list-group>\n</c8y-select-step-frame>\n", dependencies: [{ kind: "component", type: SelectStepFrameComponent, selector: "c8y-select-step-frame", inputs: ["header", "noResults"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "component", type: FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "component", type: TypeaheadComponent, selector: "c8y-typeahead", inputs: ["required", "maxlength", "disabled", "allowFreeEntries", "placeholder", "displayProperty", "icon", "name", "autoClose", "hideNew", "container", "selected", "title", "highlightFirstItem"], outputs: ["onSearch", "onIconClick"] }, { kind: "component", type: ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "highlighted", "emptyActions", "dense", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "component", type: HighlightComponent, selector: "c8y-highlight", inputs: ["pattern", "text", "elementClass", "shouldTrimPattern"] }, { kind: "component", type: MessagesComponent, selector: "c8y-messages", inputs: ["show", "defaults", "helpMessage", "additionalMessages"] }, { kind: "directive", type: MessageDirective, selector: "c8y-message", inputs: ["name", "text"] }, { kind: "ngmodule", type: SharedRepositoryModule }, { kind: "component", type: i1.SoftwareTypeComponent, selector: "c8y-software-type", inputs: ["softwareTypeMO", "disabled", "style", "required", "placeholder", "emitResultsOnly", "showBtnInNotFoundMessage", "allowFreeEntries", "showClearSelectionOption", "clearSelectionOptionLabel", "presetSoftwareTypes"], outputs: ["onSelectSoftware"] }, { kind: "component", type: ListItemIconComponent, selector: "c8y-list-item-icon, c8y-li-icon", inputs: ["icon", "status"] }, { kind: "component", type: ListItemBodyComponent, selector: "c8y-list-item-body, c8y-li-body", inputs: ["body"] }, { kind: "component", type: ListGroupComponent, selector: "c8y-list-group" }, { kind: "directive", type: ForOfDirective, selector: "[c8yFor]", inputs: ["c8yForOf", "c8yForLoadMore", "c8yForPipe", "c8yForNotFound", "c8yForMaxIterations", "c8yForLoadingTemplate", "c8yForLoadNextLabel", "c8yForLoadingLabel", "c8yForRealtime", "c8yForRealtimeOptions", "c8yForComparator", "c8yForEnableVirtualScroll", "c8yForVirtualScrollElementSize", "c8yForVirtualScrollStrategy", "c8yForVirtualScrollContainerHeight"], outputs: ["c8yForCount", "c8yForChange", "c8yForLoadMoreComponent"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: NgPlural, selector: "[ngPlural]", inputs: ["ngPlural"] }, { kind: "directive", type: NgPluralCase, selector: "[ngPluralCase]" }, { kind: "component", type: ListItemCollapseComponent, selector: "c8y-list-item-collapse, c8y-li-collapse", inputs: ["collapseWay"] }, { kind: "component", type: ListItemRadioComponent, selector: "c8y-list-item-radio, c8y-li-radio", inputs: ["selected", "name", "disabled", "value"], outputs: ["onSelect"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }] }); }
82
82
  }
83
83
  __decorate([
84
84
  memoize(property('id')),