@c8y/ngx-components
Version:
Angular modules for Cumulocity IoT applications
1 lines • 12.8 kB
Source Map (JSON)
{"version":3,"file":"c8y-ngx-components-operations-status-filter.mjs","sources":["../../operations/status-filter/status-filter.component.ts","../../operations/status-filter/status-filter.component.html","../../operations/status-filter/status-filter.module.ts","../../operations/status-filter/c8y-ngx-components-operations-status-filter.ts"],"sourcesContent":["import { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { Component, EventEmitter, forwardRef, HostBinding, Input, Output } from '@angular/core';\nimport {\n ProductExperienceEvent,\n ProductExperienceEventSource,\n PRODUCT_EXPERIENCE_EVENT_SOURCE\n} from '@c8y/ngx-components';\nimport { ACTIONS_OPERATIONS } from '@c8y/ngx-components/operations/product-experience';\nimport {\n OperationStatusOptionsMapShared,\n OperationStatusOption\n} from '@c8y/ngx-components/operations/shared';\n\n@Component({\n selector: 'c8y-status-filter',\n templateUrl: './status-filter.component.html',\n providers: [\n {\n provide: PRODUCT_EXPERIENCE_EVENT_SOURCE,\n useExisting: forwardRef(() => StatusFilterComponent)\n }\n ]\n})\nexport class StatusFilterComponent implements ProductExperienceEventSource {\n ACTIONS = ACTIONS_OPERATIONS;\n productExperienceEvent: ProductExperienceEvent;\n statusOptions: Array<{ selected: boolean; option: OperationStatusOption }> = [];\n\n /** List of filter options to be displayed */\n @Input() set options(options: OperationStatusOptionsMapShared) {\n this.statusOptions = (Object.values(options) || []).map(option => ({\n selected: false,\n option\n }));\n }\n\n /**\n * Allows multiple options to be active simultaneosly.\n */\n @Input('multiple') set _multiple(multiple: boolean) {\n this.multiple = coerceBooleanProperty(multiple);\n }\n\n /** Display the filter as a small button group */\n @Input('small') set _small(small: boolean) {\n this.small = coerceBooleanProperty(small);\n }\n\n @HostBinding('class.btn-group-sm') get displaySmall() {\n return this.small;\n }\n\n @Output() onFilterChanged: EventEmitter<OperationStatusOption[]> = new EventEmitter();\n\n isAllButtonSelected = true;\n\n private multiple: boolean;\n private small: boolean;\n\n changeFilter(option: { selected: boolean; option: OperationStatusOption }) {\n this.isAllButtonSelected = false;\n let emitNeeded = false;\n\n if (this.multiple) {\n option.selected = !option.selected;\n emitNeeded = true;\n } else if (!option.selected) {\n option.selected = true;\n this.statusOptions.filter(op => op !== option).forEach(op => (op.selected = false));\n emitNeeded = true;\n }\n\n if (emitNeeded) {\n this.emitSelectedOptions();\n }\n }\n\n removeFilter() {\n this.isAllButtonSelected = true;\n this.statusOptions.forEach(op => (op.selected = false));\n\n this.emitSelectedOptions();\n }\n\n /**\n * Allows the filter to be initalliy displayed with some preset filters.\n *\n * @param filters An `StatusOption` array defining filter options to be preset.\n * @param emit (optional) If `true` component will emit `onFilterChanged` event.\n */\n preset(filters: OperationStatusOption[], emit = true) {\n let firstSelected = false;\n\n this.statusOptions.forEach(option => (option.selected = false));\n\n this.statusOptions\n .filter(option => (filters || []).map(o => o.label).includes(option.option.label))\n .filter(() => {\n // only first option passed will be set in single selection mode\n const include: boolean = this.multiple || !firstSelected;\n if (include) {\n firstSelected = true;\n }\n\n return include;\n })\n .forEach(option => (option.selected = true));\n\n this.isAllButtonSelected = !(filters && filters.length);\n\n if (emit) {\n this.emitSelectedOptions();\n }\n }\n\n reset() {\n this.removeFilter();\n }\n\n activeFilters(): OperationStatusOption[] {\n return this.statusOptions.filter(option => option.selected).map(option => option.option);\n }\n\n isFilterApplied(): boolean {\n return this.statusOptions.some(option => option.selected);\n }\n\n private emitSelectedOptions() {\n this.onFilterChanged.emit(\n this.statusOptions.filter(option => option.selected).map(option => option.option)\n );\n }\n}\n","<div dropdown placement=\"bottom left\" class=\"dropdown c8y-child-assets-selector\">\n <button\n class=\"btn dropdown-toggle d-flex a-i-center c8y-dropdown\"\n type=\"button\"\n title=\"{{ 'Status filter' | translate }}\"\n dropdownToggle\n >\n <span *ngFor=\"let option of statusOptions\" class=\"d-contents\">\n <span class=\"text-truncate\" *ngIf=\"option.selected\">\n <i [c8yIcon]=\"option.option.icon\" [ngClass]=\"option.option.styleClass\"></i>\n <span class=\"m-l-4\">{{ option.option.label | translate }}</span>\n </span>\n </span>\n <span class=\"text-truncate\" *ngIf=\"isAllButtonSelected\">\n <i c8yIcon=\"c8y-energy\" class=\"m-r-4 text-info\"></i>\n {{ 'All statuses' | translate }}\n </span>\n </button>\n <ul\n id=\"dropdown-status-filter\"\n *dropdownMenu\n class=\"dropdown-menu\"\n role=\"menu\"\n aria-labelledby=\"status-filter\"\n >\n <li *ngFor=\"let option of statusOptions\" [ngClass]=\"{ active: option.selected }\">\n <button\n type=\"button\"\n [title]=\"option.option.label | translate\"\n (click)=\"changeFilter(option)\"\n c8yProductExperience\n inherit\n [actionData]=\"{\n action: ACTIONS.FILTER,\n filterBy: 'status',\n filterValue: option.option.label\n }\"\n >\n <i [c8yIcon]=\"option.option.icon\" [ngClass]=\"option.option.styleClass\"></i>\n <span class=\"m-l-4\">{{ option.option.label | translate }}</span>\n </button>\n </li>\n <li [ngClass]=\"{ active: isAllButtonSelected }\">\n <button\n type=\"button\"\n title=\"{{ 'All statuses' | translate }}\"\n (click)=\"removeFilter()\"\n c8yProductExperience\n inherit\n [actionData]=\"{\n action: ACTIONS.FILTER,\n filterBy: 'status'\n }\"\n >\n <i c8yIcon=\"c8y-energy\" class=\"m-r-4 text-info\"></i>\n {{ 'All statuses' | translate }}\n </button>\n </li>\n </ul>\n</div>\n","import { NgModule } from '@angular/core';\nimport { TooltipModule } from 'ngx-bootstrap/tooltip';\nimport { BsDropdownModule } from 'ngx-bootstrap/dropdown';\nimport { CoreModule } from '@c8y/ngx-components';\nimport { StatusFilterComponent } from './status-filter.component';\n\n/**\n * This module provides a component for selecting status filter.\n */\n@NgModule({\n imports: [CoreModule, TooltipModule, BsDropdownModule],\n declarations: [StatusFilterComponent],\n exports: [StatusFilterComponent]\n})\nexport class StatusFilterModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}