@c8y/ngx-components 1011.0.23 → 1011.0.26
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.
- package/bundles/c8y-ngx-components-protocol-lpwan.umd.js +15 -7
- package/bundles/c8y-ngx-components-protocol-lpwan.umd.js.map +1 -1
- package/bundles/c8y-ngx-components-protocol-lpwan.umd.min.js +2 -2
- package/bundles/c8y-ngx-components-protocol-lpwan.umd.min.js.map +1 -1
- package/bundles/c8y-ngx-components-repository.umd.js +36 -14
- package/bundles/c8y-ngx-components-repository.umd.js.map +1 -1
- package/bundles/c8y-ngx-components-repository.umd.min.js +1 -1
- package/bundles/c8y-ngx-components-repository.umd.min.js.map +1 -1
- package/bundles/c8y-ngx-components-search.umd.js +1 -1
- package/bundles/c8y-ngx-components-search.umd.js.map +1 -1
- package/bundles/c8y-ngx-components-search.umd.min.js +1 -1
- package/bundles/c8y-ngx-components-search.umd.min.js.map +1 -1
- package/bundles/c8y-ngx-components.umd.js +1 -1
- package/bundles/c8y-ngx-components.umd.js.map +1 -1
- package/bundles/c8y-ngx-components.umd.min.js +1 -1
- package/bundles/c8y-ngx-components.umd.min.js.map +1 -1
- package/c8y-ngx-components.metadata.json +1 -1
- package/esm2015/core/select/typeahead.component.js +2 -2
- package/esm2015/protocol-lpwan/lpwan-set-device-protocol.component.js +10 -3
- package/esm2015/protocol-lpwan/lpwan-set-device-protocol.service.js +6 -5
- package/esm2015/repository/configuration-device-tab/device-configuration.component.js +7 -2
- package/esm2015/repository/configuration-device-tab/device-configuration.guard.js +4 -2
- package/esm2015/repository/firmware-device-tab/firmware-device-tab.component.js +4 -3
- package/esm2015/repository/firmware-device-tab/firmware-device-tab.guard.js +4 -5
- package/esm2015/repository/software-device-tab/device-software-list.component.js +10 -3
- package/esm2015/repository/software-device-tab/installed-software.component.js +10 -2
- package/esm2015/repository/software-device-tab/software-device-tab.component.js +2 -2
- package/esm2015/repository/software-device-tab/software-device-tab.guard.js +9 -5
- package/esm2015/search/search.service.js +2 -2
- package/fesm2015/c8y-ngx-components-protocol-lpwan.js +14 -6
- package/fesm2015/c8y-ngx-components-protocol-lpwan.js.map +1 -1
- package/fesm2015/c8y-ngx-components-repository.js +37 -15
- package/fesm2015/c8y-ngx-components-repository.js.map +1 -1
- package/fesm2015/c8y-ngx-components-search.js +1 -1
- package/fesm2015/c8y-ngx-components-search.js.map +1 -1
- package/fesm2015/c8y-ngx-components.js +1 -1
- package/fesm2015/c8y-ngx-components.js.map +1 -1
- package/locales/locales.pot +6 -3
- package/package.json +2 -2
- package/protocol-lpwan/c8y-ngx-components-protocol-lpwan.metadata.json +1 -1
- package/protocol-lpwan/lpwan-set-device-protocol.component.d.ts +3 -1
- package/repository/c8y-ngx-components-repository.metadata.json +1 -1
- package/repository/configuration-device-tab/device-configuration.guard.d.ts +1 -1
- package/repository/firmware-device-tab/firmware-device-tab.component.d.ts +1 -0
- package/repository/firmware-device-tab/firmware-device-tab.guard.d.ts +1 -1
- package/repository/software-device-tab/device-software-list.component.d.ts +7 -2
- package/repository/software-device-tab/installed-software.component.d.ts +4 -0
- package/repository/software-device-tab/software-device-tab.guard.d.ts +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"c8y-ngx-components-search.js","sources":["../../search/search.service.ts","../../search/search-box.component.ts","../../search/search-grid.component.ts","../../search/search-results.component.ts","../../search/search.module.ts","../../search/c8y-ngx-components-search.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { IManagedObject } from '@c8y/client';\nimport { SubAssetsService } from '@c8y/ngx-components/sub-assets';\nimport { find, get, isUndefined, some } from 'lodash-es';\nimport { Pagination } from '@c8y/ngx-components';\n\n@Injectable()\nexport class SearchService extends SubAssetsService {\n protected GRID_CONFIG_STORAGE_KEY = 'search-grid-config';\n protected DEFAULT_PAGE_SIZE = 50;\n private readonly FRAGMENTS_FOR_NO_DEVICE = [\n 'c8y_Dashboard',\n 'c8y_Report',\n 'c8y_Kpi',\n 'c8y_ExportConfiguration',\n 'c8y_IsBinary',\n 'c8y_NoDevice',\n 'c8y_IsDeviceGroup',\n 'c8y_Group',\n 'com_cumulocity_model_smartrest_SmartRestTemplate',\n 'com_cumulocity_model_devicesimulator_SensorTemplate',\n '_attachments',\n 'c8y_IsDeviceType',\n 'c8y_objectmapping_ObjectMapping'\n ];\n private readonly TYPES_FOR_NO_DEVICE = [\n 'c8y_ConfigurationDump',\n 'c8y_Firmware',\n 'c8y_SmartRule',\n 'c8y_Software',\n 'impact_object_mapping',\n 'c8y_UserPreference',\n 'c8y_TenantPolicy',\n 'c8y_PrivateSmartRule',\n 'c8y_SmartRest2Template',\n 'c8y_JsonSchema',\n 'c8y_DeviceShellTemplate',\n 'c8y_DemoStatus',\n 'c8y_DataBroker',\n 'c8y_Application_',\n 'brandingVariables',\n 'c8y_DeviceSimulator',\n 'c8y_CertificateMetadata',\n 'lwm2m_post_registration',\n 'c8y_microservice_manifest_',\n 'c8y_CepAgent'\n ];\n private readonly DEVICE_FRAGMENT_TYPE = 'c8y_IsDevice';\n\n /**\n * Will return only valid assets (groups and devices) and filter out\n * none useful inventories (e.g. c8y_JsonSchema).\n * @param data All managed objects that should be filtered.\n */\n filterOnlyAssets(data: IManagedObject[]) {\n return data.filter(mo => mo.c8y_IsDeviceGroup || this.isAnyDevice(mo));\n }\n\n buildCombinedRootQueryFilter(columns, pagination) {\n const rootQuery = {\n __filter: {\n __and: { __not: { __has: `c8y_IsBinary` } }\n }\n };\n const userQuery = this.getQueryObj(columns, pagination);\n const queryPart = this.queriesUtil.addOrderbys(rootQuery, userQuery.__orderby, 'append');\n const fullQuery = this.queriesUtil.addAndFilter(queryPart, userQuery.__filter);\n return this.queriesUtil.buildQuery(fullQuery);\n }\n\n /**\n * Returns the full-text search results.\n *\n * @param term The search term.\n * @param pagination The currently used pagination.\n */\n search(\n term: string,\n pagination: Pagination = { currentPage: 1, pageSize: this.DEFAULT_PAGE_SIZE }\n ) {\n return this.inventoryService.list({\n text: term,\n withTotalPages: true,\n pageSize: pagination.pageSize,\n withChildren: false,\n currentPage: pagination.nextPage || 1\n });\n }\n\n private isRootDevice(mo) {\n return !!mo[this.DEVICE_FRAGMENT_TYPE];\n }\n\n private isAnyDevice(mo) {\n const isDevice = this.isRootDevice(mo) || !this.hasFragmentOrTypeFromBlacklist(mo);\n return isDevice;\n }\n\n private hasFragmentOrTypeFromBlacklist(mo) {\n return this.hasTypeFromBlacklist(mo) || this.hasFragmentFromBlacklist(mo);\n }\n\n private hasTypeFromBlacklist(mo) {\n const moType = get(mo, 'type', '');\n return some(this.TYPES_FOR_NO_DEVICE, type => moType.includes(type));\n }\n\n private hasFragmentFromBlacklist(mo) {\n return find(this.FRAGMENTS_FOR_NO_DEVICE, f => !isUndefined(mo[f]));\n }\n}\n","import { Component, ViewChild } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { IManagedObject, InventoryService, IResultList, Paging } from '@c8y/client';\nimport { TypeaheadComponent } from '@c8y/ngx-components';\nimport { DeviceGridService } from '@c8y/ngx-components/device-grid';\nimport { BsDropdownDirective } from 'ngx-bootstrap/dropdown';\nimport { defer, empty, merge, Observable, of, pipe } from 'rxjs';\nimport { map, switchMap, tap } from 'rxjs/operators';\nimport { SearchService } from './search.service';\n\n@Component({\n selector: 'c8y-search-box',\n templateUrl: './search-box.component.html'\n})\nexport class SearchBoxComponent {\n term = '';\n selected;\n filterPipe = pipe(\n map((data: IManagedObject[]) => {\n return this.searchService.filterOnlyAssets(data);\n })\n );\n results$: Observable<IResultList<IManagedObject>>;\n recentSearchResults: IManagedObject[] = [];\n recentlyRegisteredResults$: Observable<IResultList<IManagedObject>>;\n isLoading = false;\n noMatch = false;\n\n private readonly RECENT_SEARCH_STORAGE_KEY = 'recent_search_view';\n private readonly MAX_RECENT_SEARCH_RESULTS = 5;\n private readonly DEFAULT_FILTER: object = {\n withTotalPages: true,\n pageSize: 5,\n withChildren: false\n };\n private readonly KEYCODE_ENTER = 13;\n private readonly KEYCODE_ESC = 27;\n\n @ViewChild(TypeaheadComponent, { static: false })\n private typeahead: TypeaheadComponent;\n\n @ViewChild('dropdown', { static: false })\n private dropdown: BsDropdownDirective;\n\n constructor(\n private router: Router,\n private inventory: InventoryService,\n private deviceGridService: DeviceGridService,\n private searchService: SearchService\n ) {}\n\n async ngOnInit() {\n const recentSearchIds = JSON.parse(localStorage.getItem(this.RECENT_SEARCH_STORAGE_KEY));\n if (recentSearchIds && recentSearchIds.length > 0) {\n const { data } = await this.inventory.list({ ids: recentSearchIds.join(',') });\n this.recentSearchResults = data;\n this.recentlyRegisteredResults$ = defer(() =>\n this.inventory.list({\n q: '$orderby=creationTime desc',\n ...this.DEFAULT_FILTER\n })\n );\n }\n }\n\n onOpenChange(isOpen: boolean): void {\n if (isOpen) {\n // needs to request an animation frame as\n // otherwise the typeahead is undefined\n requestAnimationFrame(() => {\n this.subscribeOnSearch();\n this.typeahead.dropdown.show();\n this.typeahead.searchControl.nativeElement.focus();\n });\n }\n }\n\n open(event: Event, mo: IManagedObject) {\n event.stopPropagation();\n const isAlreadyRecent = this.recentSearchResults.find(({ id }) => id === mo.id);\n if (!isAlreadyRecent) {\n this.recentSearchResults.unshift(mo);\n this.recentSearchResults = this.recentSearchResults.slice(0, this.MAX_RECENT_SEARCH_RESULTS);\n }\n const recentSearchIds = this.recentSearchResults.map(({ id }) => id);\n localStorage.setItem(this.RECENT_SEARCH_STORAGE_KEY, JSON.stringify(recentSearchIds));\n this.router.navigateByUrl(this.deviceGridService.getHref(mo, '/'));\n this.dropdown.hide();\n }\n\n reset() {\n this.typeahead.onSearch.emit('');\n this.selected = undefined;\n this.typeahead.searchControl.nativeElement.focus();\n }\n\n keyDown(event: KeyboardEvent) {\n const keyCode = event.keyCode;\n if (keyCode === this.KEYCODE_ENTER) {\n // enter hit can be faster then typeahead debounce,\n // therefore we take the term from the DOM element\n // itself:\n const searchTerm = (event.target as any).value;\n this.navigate(['/assetsearch'], { queryParams: { search: searchTerm } });\n this.dropdown.hide();\n } else if (keyCode === this.KEYCODE_ESC) {\n if (this.term === '') {\n this.dropdown.hide();\n }\n this.reset();\n }\n }\n\n filter(on) {\n this.navigate(['/assetsearch'], { queryParams: { filter: on } });\n this.dropdown.hide();\n }\n\n openSearch() {\n this.router.navigateByUrl('/assetsearch');\n this.dropdown.hide();\n }\n\n private subscribeOnSearch() {\n if (!this.results$) {\n this.results$ = this.typeahead.onSearch.pipe(\n tap(term => this.onTypingStarted(term)),\n switchMap(term => this.mergeRequest(term))\n );\n }\n }\n\n private navigate(commands, extras?) {\n this.router\n .navigateByUrl('/', { skipLocationChange: true })\n .then(() => this.router.navigate(commands, extras));\n }\n\n private mergeRequest(term: string): Observable<IResultList<IManagedObject>> {\n return merge(\n of({ data: [] } as IResultList<IManagedObject>),\n this.queryInventoryService(term).pipe(\n tap(({ data, paging }) => this.onLoadingDone(data, paging))\n )\n );\n }\n\n private queryInventoryService(term: string) {\n if (term) {\n return defer(() => this.searchService.search(term));\n }\n return empty();\n }\n\n private onLoadingDone(data: IManagedObject[], paging: Paging<IManagedObject>) {\n this.isLoading = false;\n this.noMatch =\n paging && paging.nextPage === null && this.searchService.filterOnlyAssets(data).length === 0;\n }\n\n private onTypingStarted(term) {\n this.noMatch = false;\n this.term = term;\n this.isLoading = term.length > 0;\n }\n}\n","import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';\nimport {\n ActionControl,\n BuiltInActionType,\n BulkActionControl,\n DataGridComponent,\n DataSourceModifier,\n FilteringActionType,\n FilteringModifier,\n gettext,\n Pagination,\n Row,\n ServerSideDataResult\n} from '@c8y/ngx-components';\nimport { DeviceGridColumn } from '@c8y/ngx-components/device-grid';\nimport { IManagedObject, SmartGroupsService } from '@c8y/client';\nimport { SearchService } from './search.service';\nimport {\n AssetTypeGridColumn,\n DeleteAssetsModalComponent,\n DeleteModalCheckboxes,\n SubAssetsService\n} from '@c8y/ngx-components/sub-assets';\nimport { BsModalService } from 'ngx-bootstrap/modal';\nimport {\n AlarmsDeviceGridColumn,\n DeviceGridService,\n ImeiDeviceGridColumn,\n ModelDeviceGridColumn,\n NameDeviceGridColumn,\n RegistrationDateDeviceGridColumn,\n SerialNumberDeviceGridColumn,\n SystemIdDeviceGridColumn\n} from '@c8y/ngx-components/device-grid';\n\n@Component({\n selector: 'c8y-search-grid',\n templateUrl: './search-grid.component.html'\n})\nexport class SearchGridComponent {\n @Input('parent-group') parentGroup: IManagedObject;\n @Input() title: string = '';\n @Input() loadingItemsLabel: string = gettext('Loading results…');\n @Input('columns') set _columns(value: DeviceGridColumn[]) {\n if (value) {\n this.columns = value;\n } else {\n this.columns = this.searchService.getDefaultColumns();\n }\n }\n @Input('pagination') set _pagination(value: Pagination) {\n if (value) {\n this.pagination = value;\n } else {\n this.pagination = this.searchService.getDefaultPagination();\n }\n }\n @Input('actionControls') set _actionControls(value: ActionControl[]) {\n if (value) {\n this.actionControls = value;\n } else {\n this.actionControls = this.searchService.getDefaultActionControls();\n }\n }\n @Input() selectable: boolean = false;\n @Input('bulkActionControls') set _bulkActionControls(value: BulkActionControl[]) {\n if (value) {\n this.bulkActionControls = value;\n } else {\n this.bulkActionControls = this.searchService.getDefaultBulkActionControls();\n }\n }\n @Output() onColumnsChange: EventEmitter<DeviceGridColumn[]> = new EventEmitter<\n DeviceGridColumn[]\n >();\n\n @Input()\n searchText = '';\n\n @Input()\n filteringName: string;\n\n columns: DeviceGridColumn[];\n pagination: Pagination = this.searchService.getDefaultPagination();\n actionControls: ActionControl[];\n bulkActionControls: BulkActionControl[] = this.searchService.getDefaultBulkActionControls();\n serverSideDataCallback: any;\n refresh: EventEmitter<any> = new EventEmitter();\n\n @ViewChild(DataGridComponent, { static: true })\n dataGrid: DataGridComponent;\n\n private sizeCount = 0;\n\n constructor(\n public searchService: SearchService,\n private bsModalService: BsModalService,\n private smartGroupsService: SmartGroupsService,\n private subAssetsGridService: SubAssetsService\n ) {}\n\n ngOnInit(): void {\n if (!this.filteringName) {\n this.columns = this.searchService.getDefaultColumns();\n } else {\n this.columns = [\n new AssetTypeGridColumn({ sortOrder: 'desc' }),\n new NameDeviceGridColumn({\n sortOrder: 'asc',\n filter: { externalFilterQuery: { names: [this.filteringName] } }\n }),\n new ModelDeviceGridColumn(),\n new SerialNumberDeviceGridColumn({ visible: false }),\n new RegistrationDateDeviceGridColumn({ visible: false }),\n new SystemIdDeviceGridColumn({ visible: false }),\n new ImeiDeviceGridColumn({ visible: false }),\n new AlarmsDeviceGridColumn()\n ];\n }\n this.serverSideDataCallback = this.onDataSourceModifier.bind(this);\n this.setActionControls();\n }\n\n trackByName(_index, column: DeviceGridColumn): string {\n return column.name;\n }\n\n async onDataSourceModifier(\n dataSourceModifier: DataSourceModifier\n ): Promise<ServerSideDataResult> {\n let response;\n if (dataSourceModifier.searchText) {\n response = await this.searchService.search(\n dataSourceModifier.searchText,\n dataSourceModifier.pagination\n );\n } else {\n response = await this.searchService.getData(\n dataSourceModifier.columns,\n dataSourceModifier.pagination,\n undefined\n );\n }\n const { res, data, paging } = response;\n const filteredData = this.searchService.filterOnlyAssets(data);\n\n if (paging.currentPage === 1) {\n this.sizeCount = 0;\n }\n this.sizeCount += filteredData.length;\n this.onColumnsChange.emit(dataSourceModifier.columns);\n\n return {\n res,\n data: filteredData,\n paging,\n filteredSize: this.sizeCount,\n size: undefined\n };\n }\n\n setActionControls() {\n const actionControls: ActionControl[] = [];\n const deleteAction: ActionControl = {\n type: BuiltInActionType.Delete,\n callback: (asset: Row) => this.onDeleteAsset(asset as IManagedObject, this.parentGroup)\n };\n actionControls.push(deleteAction);\n if (!this.actionControls) {\n this.actionControls = actionControls;\n }\n }\n\n updateFiltering(\n columnNames: string[],\n action: {\n type: FilteringActionType;\n payload?: { filteringModifier: FilteringModifier };\n }\n ) {\n const { type } = action;\n if (type === FilteringActionType.ResetFilter) {\n this.dataGrid.clearFilters();\n } else {\n this.dataGrid.updateFiltering(columnNames, action);\n }\n }\n\n configChange(config) {\n this.searchService.saveConfig(config);\n }\n\n private onDeleteAsset(asset, parentRef) {\n const initialState = {\n showWithDeviceUserCheckbox: this.subAssetsGridService.shouldShowWithDeviceUserCheckbox(asset),\n asset,\n showWithCascadeCheckbox:\n !this.smartGroupsService.isSmartGroup(asset) &&\n !this.smartGroupsService.isSmartGroupV2(asset)\n };\n\n const modalRef = this.bsModalService.show(DeleteAssetsModalComponent, { initialState });\n\n modalRef.content.closeSubject.subscribe(async (result: DeleteModalCheckboxes) => {\n if (result) {\n await this.subAssetsGridService.deleteAsset(asset, parentRef, result);\n this.refresh.emit();\n }\n });\n }\n}\n","import { Component, OnDestroy, ViewChild } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { SearchGridComponent } from './search-grid.component';\nimport { FilteringActionType, AlertService, Status, gettext, Alert } from '@c8y/ngx-components';\n\n@Component({\n selector: 'c8y-search-results',\n templateUrl: './search-results.component.html'\n})\nexport class SearchResultsComponent implements OnDestroy {\n filter: string = '';\n searchTerm: string = '';\n @ViewChild(SearchGridComponent, { static: true })\n searchGrid: SearchGridComponent;\n filteringName: string;\n private unsubscribe$ = new Subject<any>();\n\n constructor(private route: ActivatedRoute, private alert: AlertService) {}\n\n ngOnInit() {\n this.route.queryParams.subscribe(params => {\n if (params.filter) {\n this.filteringName = params.filter;\n }\n });\n }\n\n ngAfterViewInit(): void {\n this.route.queryParams\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe(({ filter, search }) => this.onQueryParamsChange(filter, search));\n\n this.searchGrid.dataGrid.searchText$.pipe(takeUntil(this.unsubscribe$)).subscribe(text => {\n if (text) {\n this.resetFilter();\n }\n this.searchTerm = text;\n });\n\n this.searchGrid.dataGrid.onFilter\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe(() => this.resetSearch());\n\n // to prevent race condition (search empty):\n this.searchTerm = this.route.snapshot.queryParams.search || '';\n }\n\n resetSearch() {\n this.searchTerm = '';\n if (this.searchTerm) {\n this.alert.add({\n text: gettext('Search reset. Full text search does not support filtering.'),\n type: Status.WARNING,\n timeout: 5000\n } as Alert);\n }\n }\n\n resetFilter() {\n this.filter = '';\n if (this.searchGrid.dataGrid.filteringApplied) {\n this.alert.add({\n text: gettext('Filter reset. Full text search does not support filtering.'),\n type: Status.WARNING,\n timeout: 5000\n } as Alert);\n this.searchGrid.dataGrid.clearFilters();\n }\n }\n\n ngOnDestroy() {\n this.unsubscribe$.next();\n this.unsubscribe$.complete();\n }\n\n private onQueryParamsChange(filter: string, searchTerm: string) {\n if (!this.shouldFilter(filter) && searchTerm) {\n this.search(searchTerm);\n } else if (this.shouldFilter(filter) && searchTerm) {\n this.search(searchTerm);\n }\n }\n\n private shouldFilter(filter) {\n if (!filter) {\n return false;\n }\n this.resetSearch();\n this.filter = filter || '';\n this.searchGrid.updateFiltering(['name'], {\n type: FilteringActionType.ApplyFilter,\n payload: {\n filteringModifier: {\n externalFilterQuery: {\n names: [this.filter]\n }\n }\n }\n });\n return true;\n }\n\n private search(searchTerm: string) {\n this.searchTerm = searchTerm || '';\n this.searchGrid.dataGrid.searchText$.next(this.searchTerm);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CoreModule, HOOK_ONCE_ROUTE, HOOK_SEARCH, Search } from '@c8y/ngx-components';\nimport { DeviceGridModule } from '@c8y/ngx-components/device-grid';\nimport { BsDropdownModule } from 'ngx-bootstrap/dropdown';\nimport { SearchBoxComponent } from './search-box.component';\nimport { SearchResultsComponent } from './search-results.component';\nimport { SearchGridComponent } from './search-grid.component';\nimport { SearchService } from './search.service';\n\n@NgModule({\n declarations: [SearchResultsComponent, SearchBoxComponent, SearchGridComponent],\n imports: [CoreModule, DeviceGridModule, BsDropdownModule],\n entryComponents: [SearchResultsComponent, SearchBoxComponent],\n exports: [SearchResultsComponent, SearchBoxComponent, SearchGridComponent],\n providers: [\n SearchService,\n {\n provide: HOOK_ONCE_ROUTE,\n useValue: [\n {\n path: 'assetsearch',\n component: SearchResultsComponent\n }\n ],\n multi: true\n },\n {\n provide: HOOK_SEARCH,\n useValue: [\n {\n template: SearchBoxComponent\n }\n ] as Search[],\n multi: true\n }\n ]\n})\nexport class SearchModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"c8y-ngx-components-search.js","sources":["../../search/search.service.ts","../../search/search-box.component.ts","../../search/search-grid.component.ts","../../search/search-results.component.ts","../../search/search.module.ts","../../search/c8y-ngx-components-search.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { IManagedObject } from '@c8y/client';\nimport { SubAssetsService } from '@c8y/ngx-components/sub-assets';\nimport { find, get, isUndefined, some } from 'lodash-es';\nimport { Pagination } from '@c8y/ngx-components';\n\n@Injectable()\nexport class SearchService extends SubAssetsService {\n protected GRID_CONFIG_STORAGE_KEY = 'search-grid-config';\n protected DEFAULT_PAGE_SIZE = 50;\n private readonly FRAGMENTS_FOR_NO_DEVICE = [\n 'c8y_Dashboard',\n 'c8y_Report',\n 'c8y_Kpi',\n 'c8y_ExportConfiguration',\n 'c8y_IsBinary',\n 'c8y_NoDevice',\n 'c8y_IsDeviceGroup',\n 'c8y_Group',\n 'com_cumulocity_model_smartrest_SmartRestTemplate',\n 'com_cumulocity_model_devicesimulator_SensorTemplate',\n '_attachments',\n 'c8y_IsDeviceType',\n 'c8y_objectmapping_ObjectMapping'\n ];\n private readonly TYPES_FOR_NO_DEVICE = [\n 'c8y_ConfigurationDump',\n 'c8y_Firmware',\n 'c8y_SmartRule',\n 'c8y_Software',\n 'impact_object_mapping',\n 'c8y_UserPreference',\n 'c8y_TenantPolicy',\n 'c8y_PrivateSmartRule',\n 'c8y_SmartRest2Template',\n 'c8y_JsonSchema',\n 'c8y_DeviceShellTemplate',\n 'c8y_DemoStatus',\n 'c8y_DataBroker',\n 'c8y_Application_',\n 'brandingVariables',\n 'c8y_DeviceSimulator',\n 'c8y_CertificateMetadata',\n 'lwm2m_post_registration',\n 'c8y_microservice_manifest_',\n 'c8y_CepAgent'\n ];\n private readonly DEVICE_FRAGMENT_TYPE = 'c8y_IsDevice';\n\n /**\n * Will return only valid assets (groups and devices) and filter out\n * none useful inventories (e.g. c8y_JsonSchema).\n * @param data All managed objects that should be filtered.\n */\n filterOnlyAssets(data: IManagedObject[]) {\n return data.filter(mo => mo.c8y_IsDeviceGroup || this.isAnyDevice(mo));\n }\n\n buildCombinedRootQueryFilter(columns, pagination) {\n const rootQuery = {\n __filter: {\n __and: { __not: { __has: `c8y_IsBinary` } }\n }\n };\n const userQuery = this.getQueryObj(columns, pagination);\n const queryPart = this.queriesUtil.addOrderbys(rootQuery, userQuery.__orderby, 'append');\n const fullQuery = this.queriesUtil.addAndFilter(queryPart, userQuery.__filter);\n return this.queriesUtil.buildQuery(fullQuery);\n }\n\n /**\n * Returns the full-text search results.\n *\n * @param term The search term.\n * @param pagination The currently used pagination.\n */\n search(\n term: string,\n pagination: Pagination = { currentPage: 1, pageSize: this.DEFAULT_PAGE_SIZE }\n ) {\n return this.inventoryService.list({\n text: term,\n withTotalPages: true,\n pageSize: pagination.pageSize,\n withChildren: false,\n currentPage: pagination.currentPage || 1\n });\n }\n\n private isRootDevice(mo) {\n return !!mo[this.DEVICE_FRAGMENT_TYPE];\n }\n\n private isAnyDevice(mo) {\n const isDevice = this.isRootDevice(mo) || !this.hasFragmentOrTypeFromBlacklist(mo);\n return isDevice;\n }\n\n private hasFragmentOrTypeFromBlacklist(mo) {\n return this.hasTypeFromBlacklist(mo) || this.hasFragmentFromBlacklist(mo);\n }\n\n private hasTypeFromBlacklist(mo) {\n const moType = get(mo, 'type', '');\n return some(this.TYPES_FOR_NO_DEVICE, type => moType.includes(type));\n }\n\n private hasFragmentFromBlacklist(mo) {\n return find(this.FRAGMENTS_FOR_NO_DEVICE, f => !isUndefined(mo[f]));\n }\n}\n","import { Component, ViewChild } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { IManagedObject, InventoryService, IResultList, Paging } from '@c8y/client';\nimport { TypeaheadComponent } from '@c8y/ngx-components';\nimport { DeviceGridService } from '@c8y/ngx-components/device-grid';\nimport { BsDropdownDirective } from 'ngx-bootstrap/dropdown';\nimport { defer, empty, merge, Observable, of, pipe } from 'rxjs';\nimport { map, switchMap, tap } from 'rxjs/operators';\nimport { SearchService } from './search.service';\n\n@Component({\n selector: 'c8y-search-box',\n templateUrl: './search-box.component.html'\n})\nexport class SearchBoxComponent {\n term = '';\n selected;\n filterPipe = pipe(\n map((data: IManagedObject[]) => {\n return this.searchService.filterOnlyAssets(data);\n })\n );\n results$: Observable<IResultList<IManagedObject>>;\n recentSearchResults: IManagedObject[] = [];\n recentlyRegisteredResults$: Observable<IResultList<IManagedObject>>;\n isLoading = false;\n noMatch = false;\n\n private readonly RECENT_SEARCH_STORAGE_KEY = 'recent_search_view';\n private readonly MAX_RECENT_SEARCH_RESULTS = 5;\n private readonly DEFAULT_FILTER: object = {\n withTotalPages: true,\n pageSize: 5,\n withChildren: false\n };\n private readonly KEYCODE_ENTER = 13;\n private readonly KEYCODE_ESC = 27;\n\n @ViewChild(TypeaheadComponent, { static: false })\n private typeahead: TypeaheadComponent;\n\n @ViewChild('dropdown', { static: false })\n private dropdown: BsDropdownDirective;\n\n constructor(\n private router: Router,\n private inventory: InventoryService,\n private deviceGridService: DeviceGridService,\n private searchService: SearchService\n ) {}\n\n async ngOnInit() {\n const recentSearchIds = JSON.parse(localStorage.getItem(this.RECENT_SEARCH_STORAGE_KEY));\n if (recentSearchIds && recentSearchIds.length > 0) {\n const { data } = await this.inventory.list({ ids: recentSearchIds.join(',') });\n this.recentSearchResults = data;\n this.recentlyRegisteredResults$ = defer(() =>\n this.inventory.list({\n q: '$orderby=creationTime desc',\n ...this.DEFAULT_FILTER\n })\n );\n }\n }\n\n onOpenChange(isOpen: boolean): void {\n if (isOpen) {\n // needs to request an animation frame as\n // otherwise the typeahead is undefined\n requestAnimationFrame(() => {\n this.subscribeOnSearch();\n this.typeahead.dropdown.show();\n this.typeahead.searchControl.nativeElement.focus();\n });\n }\n }\n\n open(event: Event, mo: IManagedObject) {\n event.stopPropagation();\n const isAlreadyRecent = this.recentSearchResults.find(({ id }) => id === mo.id);\n if (!isAlreadyRecent) {\n this.recentSearchResults.unshift(mo);\n this.recentSearchResults = this.recentSearchResults.slice(0, this.MAX_RECENT_SEARCH_RESULTS);\n }\n const recentSearchIds = this.recentSearchResults.map(({ id }) => id);\n localStorage.setItem(this.RECENT_SEARCH_STORAGE_KEY, JSON.stringify(recentSearchIds));\n this.router.navigateByUrl(this.deviceGridService.getHref(mo, '/'));\n this.dropdown.hide();\n }\n\n reset() {\n this.typeahead.onSearch.emit('');\n this.selected = undefined;\n this.typeahead.searchControl.nativeElement.focus();\n }\n\n keyDown(event: KeyboardEvent) {\n const keyCode = event.keyCode;\n if (keyCode === this.KEYCODE_ENTER) {\n // enter hit can be faster then typeahead debounce,\n // therefore we take the term from the DOM element\n // itself:\n const searchTerm = (event.target as any).value;\n this.navigate(['/assetsearch'], { queryParams: { search: searchTerm } });\n this.dropdown.hide();\n } else if (keyCode === this.KEYCODE_ESC) {\n if (this.term === '') {\n this.dropdown.hide();\n }\n this.reset();\n }\n }\n\n filter(on) {\n this.navigate(['/assetsearch'], { queryParams: { filter: on } });\n this.dropdown.hide();\n }\n\n openSearch() {\n this.router.navigateByUrl('/assetsearch');\n this.dropdown.hide();\n }\n\n private subscribeOnSearch() {\n if (!this.results$) {\n this.results$ = this.typeahead.onSearch.pipe(\n tap(term => this.onTypingStarted(term)),\n switchMap(term => this.mergeRequest(term))\n );\n }\n }\n\n private navigate(commands, extras?) {\n this.router\n .navigateByUrl('/', { skipLocationChange: true })\n .then(() => this.router.navigate(commands, extras));\n }\n\n private mergeRequest(term: string): Observable<IResultList<IManagedObject>> {\n return merge(\n of({ data: [] } as IResultList<IManagedObject>),\n this.queryInventoryService(term).pipe(\n tap(({ data, paging }) => this.onLoadingDone(data, paging))\n )\n );\n }\n\n private queryInventoryService(term: string) {\n if (term) {\n return defer(() => this.searchService.search(term));\n }\n return empty();\n }\n\n private onLoadingDone(data: IManagedObject[], paging: Paging<IManagedObject>) {\n this.isLoading = false;\n this.noMatch =\n paging && paging.nextPage === null && this.searchService.filterOnlyAssets(data).length === 0;\n }\n\n private onTypingStarted(term) {\n this.noMatch = false;\n this.term = term;\n this.isLoading = term.length > 0;\n }\n}\n","import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';\nimport {\n ActionControl,\n BuiltInActionType,\n BulkActionControl,\n DataGridComponent,\n DataSourceModifier,\n FilteringActionType,\n FilteringModifier,\n gettext,\n Pagination,\n Row,\n ServerSideDataResult\n} from '@c8y/ngx-components';\nimport { DeviceGridColumn } from '@c8y/ngx-components/device-grid';\nimport { IManagedObject, SmartGroupsService } from '@c8y/client';\nimport { SearchService } from './search.service';\nimport {\n AssetTypeGridColumn,\n DeleteAssetsModalComponent,\n DeleteModalCheckboxes,\n SubAssetsService\n} from '@c8y/ngx-components/sub-assets';\nimport { BsModalService } from 'ngx-bootstrap/modal';\nimport {\n AlarmsDeviceGridColumn,\n DeviceGridService,\n ImeiDeviceGridColumn,\n ModelDeviceGridColumn,\n NameDeviceGridColumn,\n RegistrationDateDeviceGridColumn,\n SerialNumberDeviceGridColumn,\n SystemIdDeviceGridColumn\n} from '@c8y/ngx-components/device-grid';\n\n@Component({\n selector: 'c8y-search-grid',\n templateUrl: './search-grid.component.html'\n})\nexport class SearchGridComponent {\n @Input('parent-group') parentGroup: IManagedObject;\n @Input() title: string = '';\n @Input() loadingItemsLabel: string = gettext('Loading results…');\n @Input('columns') set _columns(value: DeviceGridColumn[]) {\n if (value) {\n this.columns = value;\n } else {\n this.columns = this.searchService.getDefaultColumns();\n }\n }\n @Input('pagination') set _pagination(value: Pagination) {\n if (value) {\n this.pagination = value;\n } else {\n this.pagination = this.searchService.getDefaultPagination();\n }\n }\n @Input('actionControls') set _actionControls(value: ActionControl[]) {\n if (value) {\n this.actionControls = value;\n } else {\n this.actionControls = this.searchService.getDefaultActionControls();\n }\n }\n @Input() selectable: boolean = false;\n @Input('bulkActionControls') set _bulkActionControls(value: BulkActionControl[]) {\n if (value) {\n this.bulkActionControls = value;\n } else {\n this.bulkActionControls = this.searchService.getDefaultBulkActionControls();\n }\n }\n @Output() onColumnsChange: EventEmitter<DeviceGridColumn[]> = new EventEmitter<\n DeviceGridColumn[]\n >();\n\n @Input()\n searchText = '';\n\n @Input()\n filteringName: string;\n\n columns: DeviceGridColumn[];\n pagination: Pagination = this.searchService.getDefaultPagination();\n actionControls: ActionControl[];\n bulkActionControls: BulkActionControl[] = this.searchService.getDefaultBulkActionControls();\n serverSideDataCallback: any;\n refresh: EventEmitter<any> = new EventEmitter();\n\n @ViewChild(DataGridComponent, { static: true })\n dataGrid: DataGridComponent;\n\n private sizeCount = 0;\n\n constructor(\n public searchService: SearchService,\n private bsModalService: BsModalService,\n private smartGroupsService: SmartGroupsService,\n private subAssetsGridService: SubAssetsService\n ) {}\n\n ngOnInit(): void {\n if (!this.filteringName) {\n this.columns = this.searchService.getDefaultColumns();\n } else {\n this.columns = [\n new AssetTypeGridColumn({ sortOrder: 'desc' }),\n new NameDeviceGridColumn({\n sortOrder: 'asc',\n filter: { externalFilterQuery: { names: [this.filteringName] } }\n }),\n new ModelDeviceGridColumn(),\n new SerialNumberDeviceGridColumn({ visible: false }),\n new RegistrationDateDeviceGridColumn({ visible: false }),\n new SystemIdDeviceGridColumn({ visible: false }),\n new ImeiDeviceGridColumn({ visible: false }),\n new AlarmsDeviceGridColumn()\n ];\n }\n this.serverSideDataCallback = this.onDataSourceModifier.bind(this);\n this.setActionControls();\n }\n\n trackByName(_index, column: DeviceGridColumn): string {\n return column.name;\n }\n\n async onDataSourceModifier(\n dataSourceModifier: DataSourceModifier\n ): Promise<ServerSideDataResult> {\n let response;\n if (dataSourceModifier.searchText) {\n response = await this.searchService.search(\n dataSourceModifier.searchText,\n dataSourceModifier.pagination\n );\n } else {\n response = await this.searchService.getData(\n dataSourceModifier.columns,\n dataSourceModifier.pagination,\n undefined\n );\n }\n const { res, data, paging } = response;\n const filteredData = this.searchService.filterOnlyAssets(data);\n\n if (paging.currentPage === 1) {\n this.sizeCount = 0;\n }\n this.sizeCount += filteredData.length;\n this.onColumnsChange.emit(dataSourceModifier.columns);\n\n return {\n res,\n data: filteredData,\n paging,\n filteredSize: this.sizeCount,\n size: undefined\n };\n }\n\n setActionControls() {\n const actionControls: ActionControl[] = [];\n const deleteAction: ActionControl = {\n type: BuiltInActionType.Delete,\n callback: (asset: Row) => this.onDeleteAsset(asset as IManagedObject, this.parentGroup)\n };\n actionControls.push(deleteAction);\n if (!this.actionControls) {\n this.actionControls = actionControls;\n }\n }\n\n updateFiltering(\n columnNames: string[],\n action: {\n type: FilteringActionType;\n payload?: { filteringModifier: FilteringModifier };\n }\n ) {\n const { type } = action;\n if (type === FilteringActionType.ResetFilter) {\n this.dataGrid.clearFilters();\n } else {\n this.dataGrid.updateFiltering(columnNames, action);\n }\n }\n\n configChange(config) {\n this.searchService.saveConfig(config);\n }\n\n private onDeleteAsset(asset, parentRef) {\n const initialState = {\n showWithDeviceUserCheckbox: this.subAssetsGridService.shouldShowWithDeviceUserCheckbox(asset),\n asset,\n showWithCascadeCheckbox:\n !this.smartGroupsService.isSmartGroup(asset) &&\n !this.smartGroupsService.isSmartGroupV2(asset)\n };\n\n const modalRef = this.bsModalService.show(DeleteAssetsModalComponent, { initialState });\n\n modalRef.content.closeSubject.subscribe(async (result: DeleteModalCheckboxes) => {\n if (result) {\n await this.subAssetsGridService.deleteAsset(asset, parentRef, result);\n this.refresh.emit();\n }\n });\n }\n}\n","import { Component, OnDestroy, ViewChild } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { SearchGridComponent } from './search-grid.component';\nimport { FilteringActionType, AlertService, Status, gettext, Alert } from '@c8y/ngx-components';\n\n@Component({\n selector: 'c8y-search-results',\n templateUrl: './search-results.component.html'\n})\nexport class SearchResultsComponent implements OnDestroy {\n filter: string = '';\n searchTerm: string = '';\n @ViewChild(SearchGridComponent, { static: true })\n searchGrid: SearchGridComponent;\n filteringName: string;\n private unsubscribe$ = new Subject<any>();\n\n constructor(private route: ActivatedRoute, private alert: AlertService) {}\n\n ngOnInit() {\n this.route.queryParams.subscribe(params => {\n if (params.filter) {\n this.filteringName = params.filter;\n }\n });\n }\n\n ngAfterViewInit(): void {\n this.route.queryParams\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe(({ filter, search }) => this.onQueryParamsChange(filter, search));\n\n this.searchGrid.dataGrid.searchText$.pipe(takeUntil(this.unsubscribe$)).subscribe(text => {\n if (text) {\n this.resetFilter();\n }\n this.searchTerm = text;\n });\n\n this.searchGrid.dataGrid.onFilter\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe(() => this.resetSearch());\n\n // to prevent race condition (search empty):\n this.searchTerm = this.route.snapshot.queryParams.search || '';\n }\n\n resetSearch() {\n this.searchTerm = '';\n if (this.searchTerm) {\n this.alert.add({\n text: gettext('Search reset. Full text search does not support filtering.'),\n type: Status.WARNING,\n timeout: 5000\n } as Alert);\n }\n }\n\n resetFilter() {\n this.filter = '';\n if (this.searchGrid.dataGrid.filteringApplied) {\n this.alert.add({\n text: gettext('Filter reset. Full text search does not support filtering.'),\n type: Status.WARNING,\n timeout: 5000\n } as Alert);\n this.searchGrid.dataGrid.clearFilters();\n }\n }\n\n ngOnDestroy() {\n this.unsubscribe$.next();\n this.unsubscribe$.complete();\n }\n\n private onQueryParamsChange(filter: string, searchTerm: string) {\n if (!this.shouldFilter(filter) && searchTerm) {\n this.search(searchTerm);\n } else if (this.shouldFilter(filter) && searchTerm) {\n this.search(searchTerm);\n }\n }\n\n private shouldFilter(filter) {\n if (!filter) {\n return false;\n }\n this.resetSearch();\n this.filter = filter || '';\n this.searchGrid.updateFiltering(['name'], {\n type: FilteringActionType.ApplyFilter,\n payload: {\n filteringModifier: {\n externalFilterQuery: {\n names: [this.filter]\n }\n }\n }\n });\n return true;\n }\n\n private search(searchTerm: string) {\n this.searchTerm = searchTerm || '';\n this.searchGrid.dataGrid.searchText$.next(this.searchTerm);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CoreModule, HOOK_ONCE_ROUTE, HOOK_SEARCH, Search } from '@c8y/ngx-components';\nimport { DeviceGridModule } from '@c8y/ngx-components/device-grid';\nimport { BsDropdownModule } from 'ngx-bootstrap/dropdown';\nimport { SearchBoxComponent } from './search-box.component';\nimport { SearchResultsComponent } from './search-results.component';\nimport { SearchGridComponent } from './search-grid.component';\nimport { SearchService } from './search.service';\n\n@NgModule({\n declarations: [SearchResultsComponent, SearchBoxComponent, SearchGridComponent],\n imports: [CoreModule, DeviceGridModule, BsDropdownModule],\n entryComponents: [SearchResultsComponent, SearchBoxComponent],\n exports: [SearchResultsComponent, SearchBoxComponent, SearchGridComponent],\n providers: [\n SearchService,\n {\n provide: HOOK_ONCE_ROUTE,\n useValue: [\n {\n path: 'assetsearch',\n component: SearchResultsComponent\n }\n ],\n multi: true\n },\n {\n provide: HOOK_SEARCH,\n useValue: [\n {\n template: SearchBoxComponent\n }\n ] as Search[],\n multi: true\n }\n ]\n})\nexport class SearchModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -16247,7 +16247,7 @@ class TypeaheadComponent {
|
|
|
16247
16247
|
TypeaheadComponent.decorators = [
|
|
16248
16248
|
{ type: Component, args: [{
|
|
16249
16249
|
selector: 'c8y-typeahead',
|
|
16250
|
-
template: "<div\n class=\"c8y-child-assets-selector dropdown\"\n dropdown\n [container]=\"container\"\n placement=\"bottom left\"\n #dropdown=\"bs-dropdown\"\n [autoClose]=\"true\"\n (onShown)=\"onShown()\"\n [isDisabled]=\"disabled\"\n>\n <div class=\"input-group input-group-dropdown\" dropdownToggle>\n <input\n #searchControl\n type=\"text\"\n class=\"form-control text-truncate p-r-24\"\n [required]=\"required\"\n [ngModel]=\"selected ? getDisplayProperty() : ''\"\n [placeholder]=\"placeholder | translate\"\n (blur)=\"doBlur()\"\n [name]=\"name\"\n [disabled]=\"disabled\"\n title=\"{{ placeholder | translate }}\"\n />\n\n <span\n class=\"label label-info p-absolute\"\n style=\"top: 10px; right: 40px; z-index: 10;\"\n translate\n *ngIf=\"\n selected\n ? selected.id === null && getDisplayProperty()?.length > 0 && allowFreeEntries\n : false\n \"\n >\n New\n </span>\n\n <span class=\"input-group-btn\">\n <button\n type=\"button\"\n class=\"btn btn-clean\"\n [disabled]=\"disabled\"\n (click)=\"onIconClick.emit(icon)\"\n >\n <i [c8yIcon]=\"icon\"></i>\n </button>\n </span>\n </div>\n\n <c8y-list-group class=\"dropdown-menu dropdown-menu--modal\" *dropdownMenu>\n <ng-content select=\"div, c8y-li, c8y-list-item, button, a\"></ng-content>\n </c8y-list-group>\n</div>\n",
|
|
16250
|
+
template: "<div\n class=\"c8y-child-assets-selector dropdown fit-w\"\n dropdown\n [container]=\"container\"\n placement=\"bottom left\"\n #dropdown=\"bs-dropdown\"\n [autoClose]=\"true\"\n (onShown)=\"onShown()\"\n [isDisabled]=\"disabled\"\n>\n <div class=\"input-group input-group-dropdown\" dropdownToggle>\n <input\n #searchControl\n type=\"text\"\n class=\"form-control text-truncate p-r-24\"\n [required]=\"required\"\n [ngModel]=\"selected ? getDisplayProperty() : ''\"\n [placeholder]=\"placeholder | translate\"\n (blur)=\"doBlur()\"\n [name]=\"name\"\n [disabled]=\"disabled\"\n title=\"{{ placeholder | translate }}\"\n />\n\n <span\n class=\"label label-info p-absolute\"\n style=\"top: 10px; right: 40px; z-index: 10;\"\n translate\n *ngIf=\"\n selected\n ? selected.id === null && getDisplayProperty()?.length > 0 && allowFreeEntries\n : false\n \"\n >\n New\n </span>\n\n <span class=\"input-group-btn\">\n <button\n type=\"button\"\n class=\"btn btn-clean\"\n [disabled]=\"disabled\"\n (click)=\"onIconClick.emit(icon)\"\n >\n <i [c8yIcon]=\"icon\"></i>\n </button>\n </span>\n </div>\n\n <c8y-list-group class=\"dropdown-menu dropdown-menu--modal\" *dropdownMenu>\n <ng-content select=\"div, c8y-li, c8y-list-item, button, a\"></ng-content>\n </c8y-list-group>\n</div>\n",
|
|
16251
16251
|
providers: [
|
|
16252
16252
|
{
|
|
16253
16253
|
provide: NG_VALUE_ACCESSOR,
|