@c8y/ngx-components 1021.38.0 → 1021.49.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.
- package/api/services.d.ts +1 -1
- package/api/services.d.ts.map +1 -1
- package/auth-configuration/sso-configuration/template-parts/access-mapping/access-mapping.component.d.ts.map +1 -1
- package/connectivity/abstract-connectivity-tab.factory.d.ts +1 -1
- package/context-dashboard/add-dashboard.component.d.ts.map +1 -1
- package/context-dashboard/context-dashboard.model.d.ts +4 -2
- package/context-dashboard/context-dashboard.model.d.ts.map +1 -1
- package/context-dashboard/dashboard-detail.component.d.ts.map +1 -1
- package/context-dashboard/dashboard-manager/dashboard-manager.model.d.ts +1 -0
- package/context-dashboard/dashboard-manager/dashboard-manager.model.d.ts.map +1 -1
- package/context-dashboard/dashboard-manager/dashboard-manager.service.d.ts +0 -1
- package/context-dashboard/dashboard-manager/dashboard-manager.service.d.ts.map +1 -1
- package/context-dashboard/dashboard-manager/type-dashboards-list/type-dashboards-list.component.d.ts.map +1 -1
- package/context-dashboard/new-dashboard.guard.d.ts +1 -1
- package/context-dashboard/new-dashboard.guard.d.ts.map +1 -1
- package/core/action/action.component.d.ts +2 -1
- package/core/action/action.component.d.ts.map +1 -1
- package/core/action/action.model.d.ts +3 -2
- package/core/action/action.model.d.ts.map +1 -1
- package/core/breadcrumb/breadcrumb-item.component.d.ts +2 -1
- package/core/breadcrumb/breadcrumb-item.component.d.ts.map +1 -1
- package/core/breadcrumb/breadcrumb.model.d.ts +2 -1
- package/core/breadcrumb/breadcrumb.model.d.ts.map +1 -1
- package/core/common/ApplicationOptions.d.ts +1 -0
- package/core/common/ApplicationOptions.d.ts.map +1 -1
- package/core/common/empty-state/empty-state.component.d.ts +2 -1
- package/core/common/empty-state/empty-state.component.d.ts.map +1 -1
- package/core/common/get-group-icon.pipe.d.ts +2 -1
- package/core/common/get-group-icon.pipe.d.ts.map +1 -1
- package/core/common/group.service.d.ts +22 -7
- package/core/common/group.service.d.ts.map +1 -1
- package/core/common/icon.directive.d.ts +5 -5
- package/core/common/icon.directive.d.ts.map +1 -1
- package/core/common/service-registry.model.d.ts +2 -1
- package/core/common/service-registry.model.d.ts.map +1 -1
- package/core/data-grid/data-grid.model.d.ts +2 -1
- package/core/data-grid/data-grid.model.d.ts.map +1 -1
- package/core/docs/docs.models.d.ts +2 -1
- package/core/docs/docs.models.d.ts.map +1 -1
- package/core/docs/help-and-support-outlet/help-and-support-outlet.component.d.ts +5 -1
- package/core/docs/help-and-support-outlet/help-and-support-outlet.component.d.ts.map +1 -1
- package/core/docs/legal-notices-outlet/legal-notices-outlet.component.d.ts +5 -1
- package/core/docs/legal-notices-outlet/legal-notices-outlet.component.d.ts.map +1 -1
- package/core/docs/support-outlet/support-outlet.component.d.ts +5 -1
- package/core/docs/support-outlet/support-outlet.component.d.ts.map +1 -1
- package/core/forms/filter-input.component.d.ts +8 -3
- package/core/forms/filter-input.component.d.ts.map +1 -1
- package/core/list-group/list-item-action.component.d.ts +2 -1
- package/core/list-group/list-item-action.component.d.ts.map +1 -1
- package/core/list-group/list-item-icon.component.d.ts +2 -1
- package/core/list-group/list-item-icon.component.d.ts.map +1 -1
- package/core/login/login.service.d.ts.map +1 -1
- package/core/navigator/navigator-icon.component.d.ts +1 -1
- package/core/navigator/navigator-icon.component.d.ts.map +1 -1
- package/core/navigator/navigator-node-data.d.ts +2 -1
- package/core/navigator/navigator-node-data.d.ts.map +1 -1
- package/core/navigator/navigator-node.component.d.ts.map +1 -1
- package/core/navigator/navigator-node.d.ts +2 -1
- package/core/navigator/navigator-node.d.ts.map +1 -1
- package/core/plugins/plugins.model.d.ts +7 -2
- package/core/plugins/plugins.model.d.ts.map +1 -1
- package/core/plugins/plugins.service.d.ts.map +1 -1
- package/core/properties-list/properties-list.component.d.ts +2 -1
- package/core/properties-list/properties-list.component.d.ts.map +1 -1
- package/core/provider-configuration/model/dynamic-provider-config.model.d.ts +2 -2
- package/core/provider-configuration/model/dynamic-provider-config.model.d.ts.map +1 -1
- package/core/router/context-route.service.d.ts.map +1 -1
- package/core/router/router.model.d.ts +1 -1
- package/core/router/router.model.d.ts.map +1 -1
- package/core/router/scoped-context-route.service.d.ts.map +1 -1
- package/core/search/search.model.d.ts +2 -1
- package/core/search/search.model.d.ts.map +1 -1
- package/core/select/select-keyboard.service.d.ts +4 -0
- package/core/select/select-keyboard.service.d.ts.map +1 -1
- package/core/select/select.component.d.ts +14 -3
- package/core/select/select.component.d.ts.map +1 -1
- package/core/select-modal/select-modal.component.d.ts +2 -1
- package/core/select-modal/select-modal.component.d.ts.map +1 -1
- package/core/shared/core.model.d.ts +5 -1
- package/core/shared/core.model.d.ts.map +1 -1
- package/core/tabs/conditional-tabs-outlet.component.d.ts.map +1 -1
- package/core/tabs/tab.component.d.ts +3 -2
- package/core/tabs/tab.component.d.ts.map +1 -1
- package/core/tabs/tab.model.d.ts +10 -5
- package/core/tabs/tab.model.d.ts.map +1 -1
- package/core/tabs/tabs-outlet.component.d.ts +7 -4
- package/core/tabs/tabs-outlet.component.d.ts.map +1 -1
- package/core/user/user-menu-item.component.d.ts +2 -1
- package/core/user/user-menu-item.component.d.ts.map +1 -1
- package/core/user/user.model.d.ts +2 -1
- package/core/user/user.model.d.ts.map +1 -1
- package/core/wizard/wizard.model.d.ts +4 -3
- package/core/wizard/wizard.model.d.ts.map +1 -1
- package/data-grid-columns/asset-type/asset-type.cell-renderer.component.d.ts.map +1 -1
- package/datapoint-selector/datapoint-attributes-form/datapoint-attributes-form.component.d.ts +15 -46
- package/datapoint-selector/datapoint-attributes-form/datapoint-attributes-form.component.d.ts.map +1 -1
- package/datapoint-selector/datapoint-attributes-form/datapoint-attributes.model.d.ts +3 -0
- package/datapoint-selector/datapoint-attributes-form/datapoint-attributes.model.d.ts.map +1 -1
- package/datapoint-selector/datapoint-selection.model.d.ts +6 -7
- package/datapoint-selector/datapoint-selection.model.d.ts.map +1 -1
- package/datapoints-export-selector/datapoints-export-selector.model.d.ts +2 -1
- package/datapoints-export-selector/datapoints-export-selector.model.d.ts.map +1 -1
- package/device-grid/columns/icon.cell-renderer.component.d.ts +14 -0
- package/device-grid/columns/icon.cell-renderer.component.d.ts.map +1 -0
- package/device-grid/columns/index.d.ts +1 -0
- package/device-grid/columns/index.d.ts.map +1 -1
- package/device-grid/device-grid.component.d.ts.map +1 -1
- package/device-grid/device-grid.service.d.ts +0 -2
- package/device-grid/device-grid.service.d.ts.map +1 -1
- package/device-provisioned-certificates/c8y-ngx-components-device-provisioned-certificates.d.ts.map +1 -0
- package/device-provisioned-certificates/device-provisioned-certificates.guard.d.ts +11 -0
- package/device-provisioned-certificates/device-provisioned-certificates.guard.d.ts.map +1 -0
- package/device-provisioned-certificates/device-provisioned-certificates.module.d.ts +13 -0
- package/device-provisioned-certificates/device-provisioned-certificates.module.d.ts.map +1 -0
- package/device-provisioned-certificates/device-provisioned-certificates.service.d.ts +13 -0
- package/device-provisioned-certificates/device-provisioned-certificates.service.d.ts.map +1 -0
- package/device-provisioned-certificates/device-tab-provisioned-certificates.component.d.ts +57 -0
- package/device-provisioned-certificates/device-tab-provisioned-certificates.component.d.ts.map +1 -0
- package/device-provisioned-certificates/index.d.ts +2 -0
- package/device-provisioned-certificates/index.d.ts.map +1 -0
- package/ecosystem/application-plugins/application-plugins.component.d.ts +4 -0
- package/ecosystem/application-plugins/application-plugins.component.d.ts.map +1 -1
- package/ecosystem/application-plugins/application-plugins.module.d.ts +2 -2
- package/ecosystem/application-plugins/application-plugins.module.d.ts.map +1 -1
- package/ecosystem/application-plugins/index.d.ts +1 -0
- package/ecosystem/application-plugins/index.d.ts.map +1 -1
- package/ecosystem/application-plugins/install-plugin.component.d.ts +9 -11
- package/ecosystem/application-plugins/install-plugin.component.d.ts.map +1 -1
- package/ecosystem/application-plugins/only-latest-filter/only-latest-filter.component.d.ts +12 -0
- package/ecosystem/application-plugins/only-latest-filter/only-latest-filter.component.d.ts.map +1 -0
- package/ecosystem/application-plugins/plugin-list-item.component.d.ts +8 -3
- package/ecosystem/application-plugins/plugin-list-item.component.d.ts.map +1 -1
- package/ecosystem/application-plugins/plugin-list.component.d.ts.map +1 -1
- package/ecosystem/application-plugins/update-plugin-of-app/update-plugin-of-app.component.d.ts.map +1 -1
- package/ecosystem/applications/application-list/application-list.component.d.ts +2 -2
- package/ecosystem/applications/application-list/application-list.component.d.ts.map +1 -1
- package/ecosystem/applications/install-from-package/install-from-package.component.d.ts.map +1 -1
- package/ecosystem/archived-confirm/archived-confirm-modal.component.d.ts +11 -0
- package/ecosystem/archived-confirm/archived-confirm-modal.component.d.ts.map +1 -0
- package/ecosystem/archived-confirm/archived-confirm.module.d.ts +10 -0
- package/ecosystem/archived-confirm/archived-confirm.module.d.ts.map +1 -0
- package/ecosystem/archived-confirm/c8y-ngx-components-ecosystem-archived-confirm.d.ts.map +1 -0
- package/ecosystem/archived-confirm/index.d.ts +3 -0
- package/ecosystem/archived-confirm/index.d.ts.map +1 -0
- package/ecosystem/ecosystem.module.d.ts +2 -1
- package/ecosystem/ecosystem.module.d.ts.map +1 -1
- package/ecosystem/features/feature-list.component.d.ts +2 -2
- package/ecosystem/features/feature-list.component.d.ts.map +1 -1
- package/ecosystem/microservices/microservice-list.component.d.ts +2 -2
- package/ecosystem/microservices/microservice-list.component.d.ts.map +1 -1
- package/ecosystem/packages/deploy-application/deploy-application.component.d.ts.map +1 -1
- package/ecosystem/packages/package-details/package-details.component.d.ts +7 -2
- package/ecosystem/packages/package-details/package-details.component.d.ts.map +1 -1
- package/ecosystem/packages/package-list/packages-list.component.d.ts +2 -2
- package/ecosystem/packages/package-list/packages-list.component.d.ts.map +1 -1
- package/ecosystem/shared/add-application.component.d.ts +2 -1
- package/ecosystem/shared/add-application.component.d.ts.map +1 -1
- package/ecosystem/shared/application-card.component.d.ts +4 -0
- package/ecosystem/shared/application-card.component.d.ts.map +1 -1
- package/ecosystem/shared/archived-filter/archived-filter.component.d.ts +12 -0
- package/ecosystem/shared/archived-filter/archived-filter.component.d.ts.map +1 -0
- package/ecosystem/shared/ecosystem.constants.d.ts +4 -0
- package/ecosystem/shared/ecosystem.constants.d.ts.map +1 -1
- package/ecosystem/shared/ecosystem.model.d.ts +5 -1
- package/ecosystem/shared/ecosystem.model.d.ts.map +1 -1
- package/ecosystem/shared/ecosystem.service.d.ts +7 -0
- package/ecosystem/shared/ecosystem.service.d.ts.map +1 -1
- package/ecosystem/shared/index.d.ts +1 -0
- package/ecosystem/shared/index.d.ts.map +1 -1
- package/ecosystem/shared/list-filters/list-filters.component.d.ts +14 -4
- package/ecosystem/shared/list-filters/list-filters.component.d.ts.map +1 -1
- package/ecosystem/shared/list-filters/list-filters.model.d.ts +8 -2
- package/ecosystem/shared/list-filters/list-filters.model.d.ts.map +1 -1
- package/ecosystem/shared/shared-ecosystem.module.d.ts +9 -8
- package/ecosystem/shared/shared-ecosystem.module.d.ts.map +1 -1
- package/ecosystem/shared/translate-package-label.pipe.d.ts +1 -1
- package/ecosystem/shared/translate-package-label.pipe.d.ts.map +1 -1
- package/esm2022/alarms/alarm-info.component.mjs +1 -1
- package/esm2022/api/services.mjs +2 -2
- package/esm2022/auth-configuration/sso-configuration/template-parts/access-mapping/access-mapping.component.mjs +10 -5
- package/esm2022/auth-configuration/sso-configuration/template-parts/user-data-mapping.component.mjs +4 -4
- package/esm2022/context-dashboard/add-dashboard.component.mjs +4 -2
- package/esm2022/context-dashboard/context-dashboard.model.mjs +3 -2
- package/esm2022/context-dashboard/context-dashboard.service.mjs +2 -2
- package/esm2022/context-dashboard/dashboard-detail.component.mjs +5 -3
- package/esm2022/context-dashboard/dashboard-manager/dashboard-manager.model.mjs +1 -1
- package/esm2022/context-dashboard/dashboard-manager/dashboard-manager.service.mjs +5 -15
- package/esm2022/context-dashboard/dashboard-manager/type-dashboards-list/type-dashboards-list.component.mjs +2 -2
- package/esm2022/context-dashboard/new-dashboard.guard.mjs +1 -1
- package/esm2022/core/action/action.component.mjs +1 -1
- package/esm2022/core/action/action.model.mjs +1 -1
- package/esm2022/core/bootstrap/bootstrap.component.mjs +1 -1
- package/esm2022/core/breadcrumb/breadcrumb-item.component.mjs +1 -1
- package/esm2022/core/breadcrumb/breadcrumb.model.mjs +1 -1
- package/esm2022/core/common/ApplicationOptions.mjs +1 -1
- package/esm2022/core/common/empty-state/empty-state.component.mjs +1 -1
- package/esm2022/core/common/get-group-icon.pipe.mjs +1 -1
- package/esm2022/core/common/group.service.mjs +2 -2
- package/esm2022/core/common/icon.directive.mjs +1 -1
- package/esm2022/core/common/service-registry.model.mjs +1 -1
- package/esm2022/core/data-grid/data-grid.model.mjs +1 -1
- package/esm2022/core/docs/docs.models.mjs +1 -1
- package/esm2022/core/docs/support-outlet/support-outlet.component.mjs +3 -3
- package/esm2022/core/forms/filter-input.component.mjs +22 -7
- package/esm2022/core/list-group/list-item-action.component.mjs +1 -1
- package/esm2022/core/list-group/list-item-icon.component.mjs +1 -1
- package/esm2022/core/login/credentials.component.mjs +2 -2
- package/esm2022/core/login/login.service.mjs +18 -7
- package/esm2022/core/navigator/navigator-node-data.mjs +1 -1
- package/esm2022/core/navigator/navigator-node.component.mjs +11 -2
- package/esm2022/core/navigator/navigator-node.mjs +1 -1
- package/esm2022/core/plugins/plugins.model.mjs +5 -1
- package/esm2022/core/plugins/plugins.service.mjs +6 -2
- package/esm2022/core/properties-list/properties-list.component.mjs +1 -1
- package/esm2022/core/provider-configuration/model/dynamic-provider-config.model.mjs +1 -1
- package/esm2022/core/router/context-route.service.mjs +4 -2
- package/esm2022/core/router/router.model.mjs +1 -1
- package/esm2022/core/router/scoped-context-route.service.mjs +4 -2
- package/esm2022/core/search/search.model.mjs +1 -1
- package/esm2022/core/select/select-keyboard.service.mjs +7 -3
- package/esm2022/core/select/select.component.mjs +36 -8
- package/esm2022/core/select-modal/select-modal.component.mjs +2 -2
- package/esm2022/core/shared/core.model.mjs +6 -2
- package/esm2022/core/tabs/conditional-tabs-outlet.component.mjs +4 -2
- package/esm2022/core/tabs/tab.component.mjs +1 -1
- package/esm2022/core/tabs/tab.model.mjs +1 -1
- package/esm2022/core/tabs/tabs-outlet.component.mjs +41 -12
- package/esm2022/core/user/user-menu-item.component.mjs +1 -1
- package/esm2022/core/user/user.model.mjs +1 -1
- package/esm2022/core/wizard/wizard.model.mjs +1 -1
- package/esm2022/data-grid-columns/asset-type/asset-type.cell-renderer.component.mjs +1 -1
- package/esm2022/datapoint-selector/datapoint-attributes-form/datapoint-attributes-form.component.mjs +47 -22
- package/esm2022/datapoint-selector/datapoint-attributes-form/datapoint-attributes.model.mjs +1 -1
- package/esm2022/datapoint-selector/datapoint-selection.model.mjs +1 -1
- package/esm2022/datapoint-selector/datapoint-selector-list-item/datapoint-selector-list-item.component.mjs +3 -3
- package/esm2022/datapoints-export-selector/datapoints-export-selector.model.mjs +1 -1
- package/esm2022/device-grid/columns/icon.cell-renderer.component.mjs +42 -0
- package/esm2022/device-grid/columns/index.mjs +2 -1
- package/esm2022/device-grid/device-grid.component.mjs +3 -3
- package/esm2022/device-grid/device-grid.service.mjs +7 -25
- package/esm2022/device-provisioned-certificates/c8y-ngx-components-device-provisioned-certificates.mjs +5 -0
- package/esm2022/device-provisioned-certificates/device-provisioned-certificates.guard.mjs +28 -0
- package/esm2022/device-provisioned-certificates/device-provisioned-certificates.module.mjs +51 -0
- package/esm2022/device-provisioned-certificates/device-provisioned-certificates.service.mjs +31 -0
- package/esm2022/device-provisioned-certificates/device-tab-provisioned-certificates.component.mjs +76 -0
- package/esm2022/device-provisioned-certificates/index.mjs +2 -0
- package/esm2022/ecosystem/application-plugins/application-plugins.component.mjs +41 -39
- package/esm2022/ecosystem/application-plugins/application-plugins.module.mjs +8 -6
- package/esm2022/ecosystem/application-plugins/apps-to-update-remotes-select.component.mjs +1 -1
- package/esm2022/ecosystem/application-plugins/index.mjs +2 -1
- package/esm2022/ecosystem/application-plugins/install-plugin.component.mjs +18 -21
- package/esm2022/ecosystem/application-plugins/only-latest-filter/only-latest-filter.component.mjs +26 -0
- package/esm2022/ecosystem/application-plugins/plugin-list-item.component.mjs +14 -6
- package/esm2022/ecosystem/application-plugins/plugin-list.component.mjs +14 -12
- package/esm2022/ecosystem/application-plugins/update-plugin-of-app/update-plugin-of-app.component.mjs +7 -1
- package/esm2022/ecosystem/applications/application-list/application-list.component.mjs +1 -1
- package/esm2022/ecosystem/applications/install-from-package/install-from-package.component.mjs +6 -1
- package/esm2022/ecosystem/archived-confirm/archived-confirm-modal.component.mjs +22 -0
- package/esm2022/ecosystem/archived-confirm/archived-confirm.module.mjs +32 -0
- package/esm2022/ecosystem/archived-confirm/c8y-ngx-components-ecosystem-archived-confirm.mjs +5 -0
- package/esm2022/ecosystem/archived-confirm/index.mjs +3 -0
- package/esm2022/ecosystem/ecosystem.module.mjs +20 -16
- package/esm2022/ecosystem/features/feature-list.component.mjs +1 -1
- package/esm2022/ecosystem/microservices/microservice-list.component.mjs +1 -1
- package/esm2022/ecosystem/packages/deploy-application/deploy-application.component.mjs +6 -1
- package/esm2022/ecosystem/packages/package-details/package-details.component.mjs +13 -8
- package/esm2022/ecosystem/packages/package-list/packages-list.component.mjs +4 -4
- package/esm2022/ecosystem/shared/add-application.component.mjs +1 -1
- package/esm2022/ecosystem/shared/application-card.component.mjs +3 -3
- package/esm2022/ecosystem/shared/archived-filter/archived-filter.component.mjs +27 -0
- package/esm2022/ecosystem/shared/ecosystem.constants.mjs +5 -1
- package/esm2022/ecosystem/shared/ecosystem.model.mjs +7 -3
- package/esm2022/ecosystem/shared/ecosystem.service.mjs +26 -1
- package/esm2022/ecosystem/shared/index.mjs +2 -1
- package/esm2022/ecosystem/shared/list-filters/list-filters.component.mjs +75 -13
- package/esm2022/ecosystem/shared/list-filters/list-filters.model.mjs +1 -1
- package/esm2022/ecosystem/shared/shared-ecosystem.module.mjs +10 -5
- package/esm2022/ecosystem/shared/translate-package-label.pipe.mjs +3 -3
- package/esm2022/files-repository/files-repository.component.mjs +2 -2
- package/esm2022/files-repository/files-repository.service.mjs +5 -16
- package/esm2022/icon-selector/icon-selector.component.mjs +1 -1
- package/esm2022/icon-selector/icons/index.mjs +1 -1
- package/esm2022/operations/shared/status-option.model.mjs +1 -1
- package/esm2022/protocol-lwm2m/components/configuration/lwm2m-configuration.component.mjs +2 -2
- package/esm2022/protocol-opcua/opcua-auto-apply-settings.component.mjs +1 -1
- package/esm2022/register-device/bulk/bulk-device-registration-modal.component.mjs +17 -9
- package/esm2022/register-device/general/general-device-registration-button.component.mjs +3 -3
- package/esm2022/register-device/general/general-device-registration.component.mjs +109 -33
- package/esm2022/remote-access/configurations/c8y-ngx-components-remote-access-configurations.mjs +5 -0
- package/esm2022/remote-access/configurations/index.mjs +16 -0
- package/esm2022/remote-access/configurations/remote-access-configuration-list/remote-access-configuration-list.component.mjs +218 -0
- package/esm2022/remote-access/configurations/remote-access-configuration-list/remote-access-connect-button/remote-access-connect-button.component.mjs +60 -0
- package/esm2022/remote-access/configurations/remote-access-pick-protocol-modal/remote-access-pick-protocol-modal.component.mjs +36 -0
- package/esm2022/remote-access/data/c8y-ngx-components-remote-access-data.mjs +5 -0
- package/esm2022/remote-access/data/index.mjs +3 -0
- package/esm2022/remote-access/data/remote-access-protocol-provider.mjs +2 -0
- package/esm2022/remote-access/data/remote-access.service.mjs +200 -0
- package/esm2022/remote-access/passthrough/c8y-ngx-components-remote-access-passthrough.mjs +5 -0
- package/esm2022/remote-access/passthrough/index.mjs +36 -0
- package/esm2022/remote-access/shared/c8y-ngx-components-remote-access-shared.mjs +5 -0
- package/esm2022/remote-access/shared/index.mjs +3 -0
- package/esm2022/remote-access/shared/remote-access-basic-endpoint-modal/remote-access-basic-endpoint-modal.component.mjs +49 -0
- package/esm2022/remote-access/shared/ssh-key-input/ssh-key-input.component.mjs +87 -0
- package/esm2022/remote-access/ssh/c8y-ngx-components-remote-access-ssh.mjs +5 -0
- package/esm2022/remote-access/ssh/index.mjs +73 -0
- package/esm2022/remote-access/ssh/remote-access-ssh-endpoint-modal/c8y-ngx-components-remote-access-ssh-remote-access-ssh-endpoint-modal.mjs +5 -0
- package/esm2022/remote-access/ssh/remote-access-ssh-endpoint-modal/index.mjs +2 -0
- package/esm2022/remote-access/ssh/remote-access-ssh-endpoint-modal/remote-access-ssh-endpoint-modal.component.mjs +104 -0
- package/esm2022/remote-access/telnet/c8y-ngx-components-remote-access-telnet.mjs +5 -0
- package/esm2022/remote-access/telnet/index.mjs +43 -0
- package/esm2022/remote-access/terminal-viewer/c8y-ngx-components-remote-access-terminal-viewer.mjs +5 -0
- package/esm2022/remote-access/terminal-viewer/index.mjs +2 -0
- package/esm2022/remote-access/terminal-viewer/shell-adapter.mjs +36 -0
- package/esm2022/remote-access/terminal-viewer/telnet-negotiator.mjs +96 -0
- package/esm2022/remote-access/terminal-viewer/terminal-viewer.component.mjs +101 -0
- package/esm2022/remote-access/vnc/c8y-ngx-components-remote-access-vnc.mjs +5 -0
- package/esm2022/remote-access/vnc/index.mjs +73 -0
- package/esm2022/remote-access/vnc/remote-access-vnc-endpoint-modal/c8y-ngx-components-remote-access-vnc-remote-access-vnc-endpoint-modal.mjs +5 -0
- package/esm2022/remote-access/vnc/remote-access-vnc-endpoint-modal/index.mjs +2 -0
- package/esm2022/remote-access/vnc/remote-access-vnc-endpoint-modal/remote-access-vnc-endpoint-modal.component.mjs +59 -0
- package/esm2022/remote-access/vnc/vnc-viewer/c8y-ngx-components-remote-access-vnc-vnc-viewer.mjs +5 -0
- package/esm2022/remote-access/vnc/vnc-viewer/index.mjs +2 -0
- package/esm2022/remote-access/vnc/vnc-viewer/vnc-credentials-prompt/vnc-credentials-prompt.component.mjs +57 -0
- package/esm2022/remote-access/vnc/vnc-viewer/vnc-viewer.component.mjs +158 -0
- package/esm2022/replace-device/replace-device-wizard/replace-device-wizard.model.mjs +1 -1
- package/esm2022/report-dashboard/report-dashboard-list.component.mjs +4 -3
- package/esm2022/repository/configuration/device-tab/device-configuration-list.component.mjs +1 -1
- package/esm2022/repository/shared/repository.model.mjs +1 -1
- package/esm2022/repository/shared/repository.service.mjs +3 -3
- package/esm2022/services/status-options/status-options.model.mjs +1 -1
- package/esm2022/sub-assets/group-info.component.mjs +1 -1
- package/esm2022/tenants/custom-properties/custom-properties.service.mjs +6 -2
- package/esm2022/translation-editor/data/translation-store.service.mjs +4 -3
- package/esm2022/trusted-certificates/list/trusted-certificate-list.component.mjs +35 -9
- package/esm2022/upgrade/bridge.service.mjs +16 -2
- package/esm2022/widgets/implementations/alarms/severity-icon.pipe.mjs +1 -1
- package/esm2022/widgets/implementations/datapoints-table/datapoints-table-config/datapoints-table-config.component.mjs +3 -2
- package/esm2022/widgets/implementations/kpi/kpi-widget.model.mjs +1 -1
- package/fesm2022/c8y-ngx-components-alarms.mjs +1 -1
- package/fesm2022/c8y-ngx-components-alarms.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-api.mjs +3 -2
- package/fesm2022/c8y-ngx-components-api.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-auth-configuration.mjs +12 -7
- package/fesm2022/c8y-ngx-components-auth-configuration.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-context-dashboard.mjs +15 -20
- package/fesm2022/c8y-ngx-components-context-dashboard.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-data-grid-columns-asset-type.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-data-grid-columns.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-datapoint-selector.mjs +48 -23
- package/fesm2022/c8y-ngx-components-datapoint-selector.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-datapoints-export-selector.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-device-grid.mjs +48 -28
- package/fesm2022/c8y-ngx-components-device-grid.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-device-provisioned-certificates.mjs +174 -0
- package/fesm2022/c8y-ngx-components-device-provisioned-certificates.mjs.map +1 -0
- package/fesm2022/c8y-ngx-components-ecosystem-application-plugins.mjs +125 -105
- package/fesm2022/c8y-ngx-components-ecosystem-application-plugins.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-ecosystem-archived-confirm.mjs +57 -0
- package/fesm2022/c8y-ngx-components-ecosystem-archived-confirm.mjs.map +1 -0
- package/fesm2022/c8y-ngx-components-ecosystem-shared.mjs +147 -31
- package/fesm2022/c8y-ngx-components-ecosystem-shared.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-ecosystem.mjs +1452 -1414
- package/fesm2022/c8y-ngx-components-ecosystem.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-files-repository.mjs +5 -16
- package/fesm2022/c8y-ngx-components-files-repository.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-icon-selector-icons.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-icon-selector.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-protocol-lwm2m-components-configuration.mjs +1 -1
- package/fesm2022/c8y-ngx-components-protocol-lwm2m-components-configuration.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-protocol-opcua.mjs +1 -1
- package/fesm2022/c8y-ngx-components-protocol-opcua.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-register-device.mjs +269 -188
- package/fesm2022/c8y-ngx-components-register-device.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-remote-access-configurations.mjs +314 -0
- package/fesm2022/c8y-ngx-components-remote-access-configurations.mjs.map +1 -0
- package/fesm2022/c8y-ngx-components-remote-access-data.mjs +206 -0
- package/fesm2022/c8y-ngx-components-remote-access-data.mjs.map +1 -0
- package/fesm2022/c8y-ngx-components-remote-access-passthrough.mjs +42 -0
- package/fesm2022/c8y-ngx-components-remote-access-passthrough.mjs.map +1 -0
- package/fesm2022/c8y-ngx-components-remote-access-shared.mjs +138 -0
- package/fesm2022/c8y-ngx-components-remote-access-shared.mjs.map +1 -0
- package/fesm2022/c8y-ngx-components-remote-access-ssh-remote-access-ssh-endpoint-modal.mjs +111 -0
- package/fesm2022/c8y-ngx-components-remote-access-ssh-remote-access-ssh-endpoint-modal.mjs.map +1 -0
- package/fesm2022/c8y-ngx-components-remote-access-ssh.mjs +79 -0
- package/fesm2022/c8y-ngx-components-remote-access-ssh.mjs.map +1 -0
- package/fesm2022/c8y-ngx-components-remote-access-telnet.mjs +50 -0
- package/fesm2022/c8y-ngx-components-remote-access-telnet.mjs.map +1 -0
- package/fesm2022/c8y-ngx-components-remote-access-terminal-viewer.mjs +235 -0
- package/fesm2022/c8y-ngx-components-remote-access-terminal-viewer.mjs.map +1 -0
- package/fesm2022/c8y-ngx-components-remote-access-vnc-remote-access-vnc-endpoint-modal.mjs +66 -0
- package/fesm2022/c8y-ngx-components-remote-access-vnc-remote-access-vnc-endpoint-modal.mjs.map +1 -0
- package/fesm2022/c8y-ngx-components-remote-access-vnc-vnc-viewer.mjs +211 -0
- package/fesm2022/c8y-ngx-components-remote-access-vnc-vnc-viewer.mjs.map +1 -0
- package/fesm2022/c8y-ngx-components-remote-access-vnc.mjs +79 -0
- package/fesm2022/c8y-ngx-components-remote-access-vnc.mjs.map +1 -0
- package/fesm2022/c8y-ngx-components-replace-device-replace-device-wizard.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-report-dashboard.mjs +3 -2
- package/fesm2022/c8y-ngx-components-report-dashboard.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-repository-configuration.mjs +1 -1
- package/fesm2022/c8y-ngx-components-repository-configuration.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-repository-shared.mjs +2 -2
- package/fesm2022/c8y-ngx-components-repository-shared.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-services.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-sub-assets.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-tenants.mjs +5 -1
- package/fesm2022/c8y-ngx-components-tenants.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-translation-editor-data.mjs +3 -2
- package/fesm2022/c8y-ngx-components-translation-editor-data.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-trusted-certificates.mjs +43 -17
- package/fesm2022/c8y-ngx-components-trusted-certificates.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-upgrade.mjs +16 -2
- package/fesm2022/c8y-ngx-components-upgrade.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-table.mjs +2 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-table.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components.mjs +151 -38
- package/fesm2022/c8y-ngx-components.mjs.map +1 -1
- package/files-repository/files-repository.component.d.ts.map +1 -1
- package/files-repository/files-repository.service.d.ts +0 -2
- package/files-repository/files-repository.service.d.ts.map +1 -1
- package/icon-selector/icon-selector.component.d.ts +3 -2
- package/icon-selector/icon-selector.component.d.ts.map +1 -1
- package/icon-selector/icons/index.d.ts +1 -0
- package/icon-selector/icons/index.d.ts.map +1 -1
- package/locales/de.po +157 -5
- package/locales/es.po +157 -5
- package/locales/fr.po +157 -5
- package/locales/ja_JP.po +156 -5
- package/locales/ko.po +156 -5
- package/locales/locales.pot +156 -4
- package/locales/nl.po +157 -5
- package/locales/pl.po +159 -7
- package/locales/pt_BR.po +157 -5
- package/locales/zh_CN.po +156 -5
- package/locales/zh_TW.po +156 -5
- package/operations/shared/status-option.model.d.ts +2 -1
- package/operations/shared/status-option.model.d.ts.map +1 -1
- package/package.json +1 -1
- package/register-device/bulk/bulk-device-registration-modal.component.d.ts +6 -2
- package/register-device/bulk/bulk-device-registration-modal.component.d.ts.map +1 -1
- package/register-device/general/general-device-registration-button.component.d.ts +1 -1
- package/register-device/general/general-device-registration-button.component.d.ts.map +1 -1
- package/register-device/general/general-device-registration.component.d.ts +21 -7
- package/register-device/general/general-device-registration.component.d.ts.map +1 -1
- package/remote-access/configurations/c8y-ngx-components-remote-access-configurations.d.ts.map +1 -0
- package/remote-access/configurations/index.d.ts +3 -0
- package/remote-access/configurations/index.d.ts.map +1 -0
- package/remote-access/configurations/remote-access-configuration-list/remote-access-configuration-list.component.d.ts +34 -0
- package/remote-access/configurations/remote-access-configuration-list/remote-access-configuration-list.component.d.ts.map +1 -0
- package/remote-access/configurations/remote-access-configuration-list/remote-access-connect-button/remote-access-connect-button.component.d.ts +17 -0
- package/remote-access/configurations/remote-access-configuration-list/remote-access-connect-button/remote-access-connect-button.component.d.ts.map +1 -0
- package/remote-access/configurations/remote-access-pick-protocol-modal/remote-access-pick-protocol-modal.component.d.ts +18 -0
- package/remote-access/configurations/remote-access-pick-protocol-modal/remote-access-pick-protocol-modal.component.d.ts.map +1 -0
- package/remote-access/data/c8y-ngx-components-remote-access-data.d.ts.map +1 -0
- package/remote-access/data/index.d.ts +3 -0
- package/remote-access/data/index.d.ts.map +1 -0
- package/remote-access/data/remote-access-protocol-provider.d.ts +21 -0
- package/remote-access/data/remote-access-protocol-provider.d.ts.map +1 -0
- package/remote-access/data/remote-access.service.d.ts +94 -0
- package/remote-access/data/remote-access.service.d.ts.map +1 -0
- package/remote-access/passthrough/c8y-ngx-components-remote-access-passthrough.d.ts.map +1 -0
- package/remote-access/passthrough/index.d.ts +17 -0
- package/remote-access/passthrough/index.d.ts.map +1 -0
- package/remote-access/shared/c8y-ngx-components-remote-access-shared.d.ts.map +1 -0
- package/remote-access/shared/index.d.ts +3 -0
- package/remote-access/shared/index.d.ts.map +1 -0
- package/remote-access/shared/remote-access-basic-endpoint-modal/remote-access-basic-endpoint-modal.component.d.ts +37 -0
- package/remote-access/shared/remote-access-basic-endpoint-modal/remote-access-basic-endpoint-modal.component.d.ts.map +1 -0
- package/remote-access/shared/ssh-key-input/ssh-key-input.component.d.ts +38 -0
- package/remote-access/shared/ssh-key-input/ssh-key-input.component.d.ts.map +1 -0
- package/remote-access/ssh/c8y-ngx-components-remote-access-ssh.d.ts.map +1 -0
- package/remote-access/ssh/index.d.ts +22 -0
- package/remote-access/ssh/index.d.ts.map +1 -0
- package/remote-access/ssh/remote-access-ssh-endpoint-modal/c8y-ngx-components-remote-access-ssh-remote-access-ssh-endpoint-modal.d.ts.map +1 -0
- package/remote-access/ssh/remote-access-ssh-endpoint-modal/index.d.ts +2 -0
- package/remote-access/ssh/remote-access-ssh-endpoint-modal/index.d.ts.map +1 -0
- package/remote-access/ssh/remote-access-ssh-endpoint-modal/remote-access-ssh-endpoint-modal.component.d.ts +64 -0
- package/remote-access/ssh/remote-access-ssh-endpoint-modal/remote-access-ssh-endpoint-modal.component.d.ts.map +1 -0
- package/remote-access/telnet/c8y-ngx-components-remote-access-telnet.d.ts.map +1 -0
- package/remote-access/telnet/index.d.ts +17 -0
- package/remote-access/telnet/index.d.ts.map +1 -0
- package/remote-access/terminal-viewer/c8y-ngx-components-remote-access-terminal-viewer.d.ts.map +1 -0
- package/remote-access/terminal-viewer/index.d.ts +2 -0
- package/remote-access/terminal-viewer/index.d.ts.map +1 -0
- package/remote-access/terminal-viewer/shell-adapter.d.ts +14 -0
- package/remote-access/terminal-viewer/shell-adapter.d.ts.map +1 -0
- package/remote-access/terminal-viewer/telnet-negotiator.d.ts +13 -0
- package/remote-access/terminal-viewer/telnet-negotiator.d.ts.map +1 -0
- package/remote-access/terminal-viewer/terminal-viewer.component.d.ts +25 -0
- package/remote-access/terminal-viewer/terminal-viewer.component.d.ts.map +1 -0
- package/remote-access/vnc/c8y-ngx-components-remote-access-vnc.d.ts.map +1 -0
- package/remote-access/vnc/index.d.ts +22 -0
- package/remote-access/vnc/index.d.ts.map +1 -0
- package/remote-access/vnc/remote-access-vnc-endpoint-modal/c8y-ngx-components-remote-access-vnc-remote-access-vnc-endpoint-modal.d.ts.map +1 -0
- package/remote-access/vnc/remote-access-vnc-endpoint-modal/index.d.ts +2 -0
- package/remote-access/vnc/remote-access-vnc-endpoint-modal/index.d.ts.map +1 -0
- package/remote-access/vnc/remote-access-vnc-endpoint-modal/remote-access-vnc-endpoint-modal.component.d.ts +46 -0
- package/remote-access/vnc/remote-access-vnc-endpoint-modal/remote-access-vnc-endpoint-modal.component.d.ts.map +1 -0
- package/remote-access/vnc/vnc-viewer/c8y-ngx-components-remote-access-vnc-vnc-viewer.d.ts.map +1 -0
- package/remote-access/vnc/vnc-viewer/index.d.ts +2 -0
- package/remote-access/vnc/vnc-viewer/index.d.ts.map +1 -0
- package/remote-access/vnc/vnc-viewer/vnc-credentials-prompt/vnc-credentials-prompt.component.d.ts +32 -0
- package/remote-access/vnc/vnc-viewer/vnc-credentials-prompt/vnc-credentials-prompt.component.d.ts.map +1 -0
- package/remote-access/vnc/vnc-viewer/vnc-viewer.component.d.ts +37 -0
- package/remote-access/vnc/vnc-viewer/vnc-viewer.component.d.ts.map +1 -0
- package/replace-device/replace-device-wizard/replace-device-wizard.model.d.ts +2 -1
- package/replace-device/replace-device-wizard/replace-device-wizard.model.d.ts.map +1 -1
- package/report-dashboard/report-dashboard-list.component.d.ts +29 -0
- package/report-dashboard/report-dashboard-list.component.d.ts.map +1 -1
- package/repository/shared/repository.model.d.ts +2 -1
- package/repository/shared/repository.model.d.ts.map +1 -1
- package/services/status-options/status-options.model.d.ts +2 -1
- package/services/status-options/status-options.model.d.ts.map +1 -1
- package/sub-assets/group-info.component.d.ts +2 -1
- package/sub-assets/group-info.component.d.ts.map +1 -1
- package/tenants/custom-properties/custom-properties.service.d.ts.map +1 -1
- package/translation-editor/data/translation-store.service.d.ts.map +1 -1
- package/trusted-certificates/list/trusted-certificate-list.component.d.ts +7 -2
- package/trusted-certificates/list/trusted-certificate-list.component.d.ts.map +1 -1
- package/upgrade/bridge.service.d.ts +5 -0
- package/upgrade/bridge.service.d.ts.map +1 -1
- package/widgets/implementations/alarms/severity-icon.pipe.d.ts.map +1 -1
- package/widgets/implementations/datapoints-table/datapoints-table-config/datapoints-table-config.component.d.ts.map +1 -1
- package/widgets/implementations/kpi/kpi-widget.model.d.ts +2 -1
- package/widgets/implementations/kpi/kpi-widget.model.d.ts.map +1 -1
- package/ecosystem/application-plugins/only-latest-plugin-version.pipe.d.ts +0 -10
- package/ecosystem/application-plugins/only-latest-plugin-version.pipe.d.ts.map +0 -1
- package/esm2022/ecosystem/application-plugins/only-latest-plugin-version.pipe.mjs +0 -20
|
@@ -1297,10 +1297,10 @@ class GroupService {
|
|
|
1297
1297
|
if (genericMoType === 'asset') {
|
|
1298
1298
|
return await this.getAssetCustomIcon(mo.type);
|
|
1299
1299
|
}
|
|
1300
|
-
const typeIcons = this.getDefaultIcon(genericMoType);
|
|
1301
1300
|
if (fallbackIcon && genericMoType === 'other') {
|
|
1302
1301
|
return fallbackIcon;
|
|
1303
1302
|
}
|
|
1303
|
+
const typeIcons = this.getDefaultIcon(genericMoType);
|
|
1304
1304
|
return open ? typeIcons.iconOpen : typeIcons.icon;
|
|
1305
1305
|
}
|
|
1306
1306
|
/**
|
|
@@ -4514,6 +4514,10 @@ var PackageType;
|
|
|
4514
4514
|
* A custom package e.g. uploaded to the tenant by a user
|
|
4515
4515
|
*/
|
|
4516
4516
|
PackageType["CUSTOM"] = "CUSTOM";
|
|
4517
|
+
/**
|
|
4518
|
+
* A package that was archived by the user
|
|
4519
|
+
*/
|
|
4520
|
+
PackageType["ARCHIVED"] = "ARCHIVED";
|
|
4517
4521
|
})(PackageType || (PackageType = {}));
|
|
4518
4522
|
|
|
4519
4523
|
class PluginsResolveService {
|
|
@@ -5037,6 +5041,9 @@ class PluginsService {
|
|
|
5037
5041
|
*/
|
|
5038
5042
|
getPackageType(packageApplication) {
|
|
5039
5043
|
const label = packageApplication.label || packageApplication.manifest?.label;
|
|
5044
|
+
if (label === PackageType.ARCHIVED) {
|
|
5045
|
+
return PackageType.ARCHIVED;
|
|
5046
|
+
}
|
|
5040
5047
|
if (!label) {
|
|
5041
5048
|
return PackageType.CUSTOM;
|
|
5042
5049
|
}
|
|
@@ -5121,7 +5128,8 @@ class PluginsService {
|
|
|
5121
5128
|
versioningMatrix: application.manifest.versioningMatrix,
|
|
5122
5129
|
tags: useLatest ? ['latest'] : version.tags || [],
|
|
5123
5130
|
license: application.manifest.license,
|
|
5124
|
-
type: this.getPackageType(application)
|
|
5131
|
+
type: this.getPackageType(application),
|
|
5132
|
+
originApp: application
|
|
5125
5133
|
}));
|
|
5126
5134
|
return extendedPlugins;
|
|
5127
5135
|
}
|
|
@@ -10859,7 +10867,11 @@ const PRODUCT_EXPERIENCE_CORE_SHARED = {
|
|
|
10859
10867
|
QUICK_LINKS: {
|
|
10860
10868
|
EVENTS: { QUICK_LINK_RIGHT_DRAWER: 'quickLinkRightDrawer' },
|
|
10861
10869
|
COMPONENTS: { RIGHT_DRAWER_COMPONENT: 'right-drawer' },
|
|
10862
|
-
ACTIONS: {
|
|
10870
|
+
ACTIONS: {
|
|
10871
|
+
ACTIVATE_SUPPORT_ACCESS: 'activateSupportAccess',
|
|
10872
|
+
DEACTIVATE_SUPPORT_ACCESS: 'deactivateSupportAccess',
|
|
10873
|
+
OPEN_SUPPORT_LINK: 'openSupportLink'
|
|
10874
|
+
},
|
|
10863
10875
|
RESULTS: {}
|
|
10864
10876
|
}
|
|
10865
10877
|
};
|
|
@@ -12990,13 +13002,24 @@ class LoginService {
|
|
|
12990
13002
|
* @param credentials The credentials to try to login.
|
|
12991
13003
|
*/
|
|
12992
13004
|
async login(auth = this.getAuthStrategy(), credentials) {
|
|
12993
|
-
|
|
13005
|
+
// To ensure backward compatibility, we need to verify whether the backend supports TFA
|
|
13006
|
+
// without requiring the use of /tenant with auth: base64. The tfaSupported flag indicates
|
|
13007
|
+
// whether authentication is possible exclusively via OAI-SECURE.
|
|
13008
|
+
// TfaSupported flag should be removed during: MTM-62641
|
|
13009
|
+
const isOAISecureAndTFAIsSupported = (this.tenantUiService.isOauthInternal(this.loginMode) && this.loginMode.tfaSupported) ||
|
|
13010
|
+
false;
|
|
13011
|
+
if (isOAISecureAndTFAIsSupported && (await this.switchLoginMode(credentials))) {
|
|
13012
|
+
auth = this.cookieAuth;
|
|
13013
|
+
}
|
|
13014
|
+
else {
|
|
13015
|
+
this.client.setAuth(auth);
|
|
13016
|
+
}
|
|
12994
13017
|
const tenantRes = await this.tenant.current({ withParent: true });
|
|
12995
13018
|
const tenant = tenantRes.data;
|
|
12996
13019
|
if (credentials) {
|
|
12997
13020
|
credentials.tenant = tenant.name;
|
|
12998
13021
|
}
|
|
12999
|
-
if (await this.switchLoginMode(credentials)) {
|
|
13022
|
+
if (!isOAISecureAndTFAIsSupported && (await this.switchLoginMode(credentials))) {
|
|
13000
13023
|
auth = this.cookieAuth;
|
|
13001
13024
|
}
|
|
13002
13025
|
const userRes = await this.user.current();
|
|
@@ -13064,7 +13087,7 @@ class LoginService {
|
|
|
13064
13087
|
grant_type: 'PASSWORD',
|
|
13065
13088
|
username: credentials.user,
|
|
13066
13089
|
password: credentials.password,
|
|
13067
|
-
tfa_code: credentials.tfa
|
|
13090
|
+
...(credentials.tfa !== undefined && { tfa_code: credentials.tfa })
|
|
13068
13091
|
});
|
|
13069
13092
|
return await new FetchClient().fetch(this.getUrlForOauth(credentials), {
|
|
13070
13093
|
method: 'POST',
|
|
@@ -15559,15 +15582,27 @@ class FilterInputComponent {
|
|
|
15559
15582
|
this.onSearch = new EventEmitter();
|
|
15560
15583
|
this.filterChange$ = new Subject();
|
|
15561
15584
|
this.filterTerm = '';
|
|
15585
|
+
this.searchLabel = gettext$1('search');
|
|
15586
|
+
this.closeLabel = gettext$1('close');
|
|
15562
15587
|
this.CARRIAGE_RETURN_KEY = 13;
|
|
15563
15588
|
this.CARRIAGE_RETURN_CODE = 'Enter';
|
|
15589
|
+
this.CARRIAGE_ESCAPE_CODE = 'Escape';
|
|
15590
|
+
this.AUTO_SEARCH_DEBOUNCE = 500;
|
|
15564
15591
|
}
|
|
15565
15592
|
ngOnInit() {
|
|
15566
|
-
this.reset();
|
|
15567
15593
|
this.filterChange$
|
|
15568
|
-
.pipe(debounce((event) =>
|
|
15569
|
-
|
|
15570
|
-
|
|
15594
|
+
.pipe(debounce((event) => {
|
|
15595
|
+
if (event.code === this.CARRIAGE_RETURN_CODE ||
|
|
15596
|
+
event.keyCode === this.CARRIAGE_RETURN_KEY) {
|
|
15597
|
+
event.preventDefault();
|
|
15598
|
+
return timer(0);
|
|
15599
|
+
}
|
|
15600
|
+
if (event.code === this.CARRIAGE_ESCAPE_CODE) {
|
|
15601
|
+
this.reset();
|
|
15602
|
+
return timer(0);
|
|
15603
|
+
}
|
|
15604
|
+
return timer(this.AUTO_SEARCH_DEBOUNCE);
|
|
15605
|
+
}), map((e) => e.target.value), distinctUntilChanged())
|
|
15571
15606
|
.subscribe(filterTerm => {
|
|
15572
15607
|
this.filterTerm = filterTerm;
|
|
15573
15608
|
this.onSearch.emit(filterTerm);
|
|
@@ -15581,15 +15616,17 @@ class FilterInputComponent {
|
|
|
15581
15616
|
this.filterChange$.complete();
|
|
15582
15617
|
}
|
|
15583
15618
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: FilterInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
15584
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: FilterInputComponent, selector: "c8y-filter", inputs: { icon: "icon" }, outputs: { onSearch: "onSearch" }, ngImport: i0, template: "<div class=\"input-group input-group-search\">\n <input\n class=\"form-control\"\n placeholder=\"{{ 'Filter\u2026' | translate }}\"\n type=\"text\"\n [value]=\"filterTerm\"\n (
|
|
15619
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: FilterInputComponent, selector: "c8y-filter", inputs: { icon: "icon", filterTerm: "filterTerm" }, outputs: { onSearch: "onSearch" }, ngImport: i0, template: "<div class=\"input-group input-group-search\">\n <input\n class=\"form-control\"\n placeholder=\"{{ 'Filter\u2026' | translate }}\"\n type=\"text\"\n [value]=\"filterTerm\"\n (keydown)=\"filterChange$.next($event)\"\n px-event=\"Filter\u2026\"\n data-cy=\"filter-input--filter-input\"\n />\n <span class=\"input-group-btn\">\n <button\n class=\"btn btn-clean\"\n title=\"{{ filterTerm.length === 0 ? searchLabel : closeLabel }}\"\n px-event=\"Clear filtering\"\n (click)=\"reset()\"\n >\n <i [c8yIcon]=\"filterTerm.length === 0 ? 'search' : 'close'\"></i>\n </button>\n </span>\n</div>\n", dependencies: [{ kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] }); }
|
|
15585
15620
|
}
|
|
15586
15621
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: FilterInputComponent, decorators: [{
|
|
15587
15622
|
type: Component,
|
|
15588
|
-
args: [{ selector: 'c8y-filter', template: "<div class=\"input-group input-group-search\">\n <input\n class=\"form-control\"\n placeholder=\"{{ 'Filter\u2026' | translate }}\"\n type=\"text\"\n [value]=\"filterTerm\"\n (
|
|
15623
|
+
args: [{ selector: 'c8y-filter', template: "<div class=\"input-group input-group-search\">\n <input\n class=\"form-control\"\n placeholder=\"{{ 'Filter\u2026' | translate }}\"\n type=\"text\"\n [value]=\"filterTerm\"\n (keydown)=\"filterChange$.next($event)\"\n px-event=\"Filter\u2026\"\n data-cy=\"filter-input--filter-input\"\n />\n <span class=\"input-group-btn\">\n <button\n class=\"btn btn-clean\"\n title=\"{{ filterTerm.length === 0 ? searchLabel : closeLabel }}\"\n px-event=\"Clear filtering\"\n (click)=\"reset()\"\n >\n <i [c8yIcon]=\"filterTerm.length === 0 ? 'search' : 'close'\"></i>\n </button>\n </span>\n</div>\n" }]
|
|
15589
15624
|
}], propDecorators: { icon: [{
|
|
15590
15625
|
type: Input
|
|
15591
15626
|
}], onSearch: [{
|
|
15592
15627
|
type: Output
|
|
15628
|
+
}], filterTerm: [{
|
|
15629
|
+
type: Input
|
|
15593
15630
|
}] } });
|
|
15594
15631
|
|
|
15595
15632
|
class InputGroupListComponent {
|
|
@@ -16579,7 +16616,7 @@ class CredentialsComponent {
|
|
|
16579
16616
|
if (e.res && e.res.headers && e.res.headers.get(this.PASSWORD_RESET_HEADER_NAME)) {
|
|
16580
16617
|
this.handlePasswordReset(e.res);
|
|
16581
16618
|
}
|
|
16582
|
-
else if (e.res && e.res.status === 401 && /pin/i.test(e.data.message)) {
|
|
16619
|
+
else if (e.res && e.res.status === 401 && /pin.*generated/i.test(e.data.message)) {
|
|
16583
16620
|
this.handleSmsChallenge(e.data.message);
|
|
16584
16621
|
}
|
|
16585
16622
|
else if (e.res && e.res.status === 401 && /TOTP/i.test(e.data.message)) {
|
|
@@ -16921,30 +16958,47 @@ class TabsOutletComponent {
|
|
|
16921
16958
|
get isVertical() {
|
|
16922
16959
|
return this.orientation !== 'horizontal';
|
|
16923
16960
|
}
|
|
16924
|
-
constructor(router, renderer, header, tabsService) {
|
|
16961
|
+
constructor(router, renderer, header, tabsService, activatedRoute) {
|
|
16925
16962
|
this.router = router;
|
|
16926
16963
|
this.renderer = renderer;
|
|
16927
16964
|
this.header = header;
|
|
16928
16965
|
this.tabsService = tabsService;
|
|
16966
|
+
this.activatedRoute = activatedRoute;
|
|
16929
16967
|
this.tabs = [];
|
|
16930
16968
|
this.orientation = 'vertical';
|
|
16931
16969
|
this.navigatorOpen = false;
|
|
16970
|
+
this.openFirstTab = true;
|
|
16932
16971
|
/**
|
|
16933
16972
|
* Identifies if the current view has a header element.
|
|
16934
16973
|
*/
|
|
16935
16974
|
this.hasHeader = false;
|
|
16936
16975
|
this.showLeft = false;
|
|
16937
16976
|
this.showRight = false;
|
|
16977
|
+
this.extras = {
|
|
16978
|
+
queryParamsHandling: 'preserve',
|
|
16979
|
+
relativeTo: this.activatedRoute
|
|
16980
|
+
};
|
|
16938
16981
|
this.destroy$ = new Subject();
|
|
16939
16982
|
this.tabsChanges$ = new BehaviorSubject([]);
|
|
16940
16983
|
}
|
|
16941
16984
|
ngOnInit() {
|
|
16942
16985
|
if (this.outletName && this.tabs.length === 0) {
|
|
16943
|
-
this.tabsService.items$
|
|
16944
|
-
|
|
16945
|
-
.subscribe(tabs => {
|
|
16986
|
+
const tabsSubscription$ = this.tabsService.items$.pipe(map(tabs => tabs.filter(tab => tab.tabsOutlet === this.outletName)), takeUntil(this.destroy$));
|
|
16987
|
+
tabsSubscription$.subscribe(tabs => {
|
|
16946
16988
|
this.tabs = tabs;
|
|
16947
16989
|
});
|
|
16990
|
+
tabsSubscription$.pipe(take(1)).subscribe(tabs => {
|
|
16991
|
+
if (this.openFirstTab && tabs.length) {
|
|
16992
|
+
this.navigateTo(tabs[0].path);
|
|
16993
|
+
}
|
|
16994
|
+
});
|
|
16995
|
+
}
|
|
16996
|
+
else if (this.openFirstTab && this.tabs.length) {
|
|
16997
|
+
const matchingTab = this.tabs.find(tab => this.isActive(tab));
|
|
16998
|
+
// only navigate to first tab if no tab is active
|
|
16999
|
+
if (!matchingTab) {
|
|
17000
|
+
this.navigateTo(this.tabs[0].path);
|
|
17001
|
+
}
|
|
16948
17002
|
}
|
|
16949
17003
|
}
|
|
16950
17004
|
ngOnChanges(changes) {
|
|
@@ -16967,7 +17021,13 @@ class TabsOutletComponent {
|
|
|
16967
17021
|
}
|
|
16968
17022
|
isActive(tab) {
|
|
16969
17023
|
if (tab && tab.path) {
|
|
16970
|
-
|
|
17024
|
+
const tree = this.router.createUrlTree(typeof tab.path === 'string' ? [tab.path] : tab.path);
|
|
17025
|
+
return this.router.isActive(tree, {
|
|
17026
|
+
paths: 'subset',
|
|
17027
|
+
queryParams: 'subset',
|
|
17028
|
+
fragment: 'ignored',
|
|
17029
|
+
matrixParams: 'ignored'
|
|
17030
|
+
});
|
|
16971
17031
|
}
|
|
16972
17032
|
else {
|
|
16973
17033
|
return false;
|
|
@@ -16975,7 +17035,11 @@ class TabsOutletComponent {
|
|
|
16975
17035
|
}
|
|
16976
17036
|
navigateTo(path) {
|
|
16977
17037
|
this.header.toggle();
|
|
16978
|
-
|
|
17038
|
+
if (typeof path === 'string') {
|
|
17039
|
+
this.router.navigate([path], this.extras);
|
|
17040
|
+
return;
|
|
17041
|
+
}
|
|
17042
|
+
this.router.navigate(path, this.extras);
|
|
16979
17043
|
}
|
|
16980
17044
|
scroll(direction = 'right') {
|
|
16981
17045
|
const { widthScroll, width, scrollLeft } = this.getDimensions();
|
|
@@ -17010,13 +17074,13 @@ class TabsOutletComponent {
|
|
|
17010
17074
|
const scrollLeft = el.scrollLeft;
|
|
17011
17075
|
return { widthScroll, width, scrollLeft };
|
|
17012
17076
|
}
|
|
17013
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: TabsOutletComponent, deps: [{ token: i1$3.Router }, { token: i0.Renderer2 }, { token: HeaderService }, { token: TabsService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
17014
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: TabsOutletComponent, selector: "c8y-tabs-outlet,c8y-ui-tabs", inputs: { tabs: "tabs", orientation: "orientation", navigatorOpen: "navigatorOpen", outletName: "outletName", context: "context", hasHeader: "hasHeader" }, host: { properties: { "class.has-header": "this.hasHeader", "class.navigator-open": "this.isNavigatorOpen", "class.page-tabs": "this.hasTabs", "class.page-tabs-horizontal": "this.isHorizontal", "class.page-tabs-vertical": "this.isVertical" } }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true, read: ElementRef, static: true }, { propertyName: "tabsContainer", first: true, predicate: ["tabsContainer"], descendants: true, read: ElementRef }], usesOnChanges: true, ngImport: i0, template: "<div\n class=\"tabContainer\"\n [ngClass]=\"{ 'hidden-xs': !outletName }\"\n #container\n>\n <button\n class=\"tabs-slider tabs-slider-left\"\n title=\"{{ 'Scroll to the left' | translate }}\"\n type=\"button\"\n #left\n *ngIf=\"showLeft || showRight\"\n [disabled]=\"!showLeft\"\n (click)=\"scroll('left')\"\n >\n <i [c8yIcon]=\"'chevron-left'\"></i>\n </button>\n <button\n class=\"tabs-slider tabs-slider-right\"\n title=\"{{ 'Scroll to the right' | translate }}\"\n type=\"button\"\n #right\n *ngIf=\"showRight || showLeft\"\n [disabled]=\"!showRight\"\n (click)=\"scroll('right')\"\n >\n <i [c8yIcon]=\"'chevron-right'\"></i>\n </button>\n <ng-container *ngIf=\"!outletName\">\n <div\n class=\"nav nav-tabs nav-tabsc8y\"\n role=\"list\"\n #tabsContainer\n >\n <ng-container *ngFor=\"let tab of tabs\">\n <div\n role=\"listitem\"\n [ngClass]=\"{ active: rla?.isActive }\"\n *ngIf=\"!tab.component && !tab.hide\"\n >\n <a\n [routerLink]=\"tab.path\"\n routerLinkActive\n [queryParamsHandling]=\"'preserve'\"\n #rla=\"routerLinkActive\"\n [ngClass]=\"{ 'p-r-24': !tab.template && tab?.badge }\"\n (click)=\"tab.onSelect?.emit()\"\n >\n <i\n [c8yIcon]=\"tab?.icon\"\n *ngIf=\"!tab.template && tab?.icon\"\n ></i>\n <span\n title=\"{{ tab?.label | translate }}\"\n *ngIf=\"!tab.template && !tab.component\"\n >\n {{ tab?.label | translate }}\n </span>\n <span\n class=\"dashboard-template-marker\"\n tooltip=\"{{ tab?.tooltipText | translate }}\"\n placement=\"bottom\"\n container=\"body\"\n [adaptivePosition]=\"false\"\n [delay]=\"300\"\n *ngIf=\"!tab.template && tab?.badge\"\n ></span>\n </a>\n <ng-container *ngTemplateOutlet=\"tab.template; injector: tab.injector\"></ng-container>\n </div>\n <ng-container *ngComponentOutlet=\"tab.component; injector: tab.injector\"></ng-container>\n </ng-container>\n </div>\n </ng-container>\n\n <div\n class=\"component-tabs nav nav-tabs nav-tabsc8y\"\n *ngIf=\"outletName\"\n #tabsContainer\n >\n <ng-container *ngFor=\"let tab of tabs; trackBy: trackByPath\">\n <div\n [ngClass]=\"{ active: tab.isActive }\"\n [routerLink]=\"tab.path\"\n [routerLinkActive]=\"tab.path ? 'active' : ''\"\n [queryParamsHandling]=\"'preserve'\"\n >\n <a\n class=\"pointer\"\n title=\"{{ tab?.label | translate }}\"\n (click)=\"tab.onSelect?.emit()\"\n >\n <i [c8yIcon]=\"tab?.icon\"></i>\n <span>\n {{ tab?.label | translate }}\n </span>\n </a>\n </div>\n </ng-container>\n </div>\n</div>\n\n<div\n class=\"visible-xs mobile-tabs\"\n *ngIf=\"!outletName\"\n>\n <ul class=\"list-unstyled d-flex m-b-0\">\n <li class=\"c8y-select-wrapper flex-grow\">\n <select\n (change)=\"navigateTo($event.target.value)\"\n #select\n >\n <ng-container *ngFor=\"let tab of tabs\">\n <option\n *ngIf=\"!tab.component\"\n [value]=\"tab.path\"\n [selected]=\"isActive(tab)\"\n >\n {{ tab?.label | translate }}\n </option>\n </ng-container>\n </select>\n </li>\n <ng-container *ngFor=\"let tab of tabs\">\n <ng-container *ngIf=\"tab.component\">\n <ng-container\n *c8yComponentOutlet=\"tab.component; environmentInjector: tab.injector\"\n ></ng-container>\n </ng-container>\n </ng-container>\n </ul>\n</div>\n", dependencies: [{ kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: C8yComponentOutlet, selector: "[c8yComponentOutlet]", inputs: ["c8yComponentOutlet", "c8yComponentOutletInjector", "c8yComponentOutletEnvironmentInjector"] }, { kind: "directive", type: i1$3.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i1$3.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "directive", type: i2$3.TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] }); }
|
|
17077
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: TabsOutletComponent, deps: [{ token: i1$3.Router }, { token: i0.Renderer2 }, { token: HeaderService }, { token: TabsService }, { token: i1$3.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
17078
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: TabsOutletComponent, selector: "c8y-tabs-outlet,c8y-ui-tabs", inputs: { tabs: "tabs", orientation: "orientation", navigatorOpen: "navigatorOpen", outletName: "outletName", context: "context", openFirstTab: "openFirstTab", hasHeader: "hasHeader" }, host: { properties: { "class.has-header": "this.hasHeader", "class.navigator-open": "this.isNavigatorOpen", "class.page-tabs": "this.hasTabs", "class.page-tabs-horizontal": "this.isHorizontal", "class.page-tabs-vertical": "this.isVertical" } }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true, read: ElementRef, static: true }, { propertyName: "tabsContainer", first: true, predicate: ["tabsContainer"], descendants: true, read: ElementRef }], usesOnChanges: true, ngImport: i0, template: "<div\n class=\"tabContainer\"\n [ngClass]=\"{ 'hidden-xs': !outletName }\"\n #container\n>\n <button\n class=\"tabs-slider tabs-slider-left\"\n title=\"{{ 'Scroll to the left' | translate }}\"\n type=\"button\"\n #left\n *ngIf=\"showLeft || showRight\"\n [disabled]=\"!showLeft\"\n (click)=\"scroll('left')\"\n >\n <i [c8yIcon]=\"'chevron-left'\"></i>\n </button>\n <button\n class=\"tabs-slider tabs-slider-right\"\n title=\"{{ 'Scroll to the right' | translate }}\"\n type=\"button\"\n #right\n *ngIf=\"showRight || showLeft\"\n [disabled]=\"!showRight\"\n (click)=\"scroll('right')\"\n >\n <i [c8yIcon]=\"'chevron-right'\"></i>\n </button>\n <ng-container *ngIf=\"!outletName\">\n <div\n class=\"nav nav-tabs nav-tabsc8y\"\n role=\"list\"\n #tabsContainer\n >\n <ng-container *ngFor=\"let tab of tabs\">\n <div\n role=\"listitem\"\n [ngClass]=\"{ active: rla?.isActive }\"\n *ngIf=\"!tab.component && !tab.hide\"\n >\n <a\n [routerLink]=\"tab.path\"\n routerLinkActive\n [queryParamsHandling]=\"'preserve'\"\n #rla=\"routerLinkActive\"\n [ngClass]=\"{ 'p-r-24': !tab.template && tab?.badge }\"\n (click)=\"tab.onSelect?.emit()\"\n >\n <i\n [c8yIcon]=\"tab?.icon\"\n *ngIf=\"!tab.template && tab?.icon\"\n ></i>\n <span\n title=\"{{ tab?.label | translate }}\"\n *ngIf=\"!tab.template && !tab.component\"\n >\n {{ tab?.label | translate }}\n </span>\n <span\n class=\"dashboard-template-marker\"\n tooltip=\"{{ tab?.tooltipText | translate }}\"\n placement=\"bottom\"\n container=\"body\"\n [adaptivePosition]=\"false\"\n [delay]=\"300\"\n *ngIf=\"!tab.template && tab?.badge\"\n ></span>\n </a>\n <ng-container *ngTemplateOutlet=\"tab.template; injector: tab.injector\"></ng-container>\n </div>\n <ng-container *ngComponentOutlet=\"tab.component; injector: tab.injector\"></ng-container>\n </ng-container>\n </div>\n </ng-container>\n\n <div\n class=\"component-tabs nav nav-tabs nav-tabsc8y\"\n *ngIf=\"outletName\"\n #tabsContainer\n >\n <ng-container *ngFor=\"let tab of tabs; trackBy: trackByPath\">\n <div\n [ngClass]=\"{ active: tab.isActive }\"\n [routerLink]=\"tab.path\"\n [routerLinkActive]=\"tab.path ? 'active' : ''\"\n [queryParamsHandling]=\"'preserve'\"\n >\n <a\n class=\"pointer\"\n title=\"{{ tab?.label | translate }}\"\n (click)=\"tab.onSelect?.emit()\"\n >\n <i [c8yIcon]=\"tab?.icon\"></i>\n <span>\n {{ tab?.label | translate }}\n </span>\n </a>\n </div>\n </ng-container>\n </div>\n</div>\n\n<div\n class=\"visible-xs mobile-tabs\"\n *ngIf=\"!outletName\"\n>\n <ul class=\"list-unstyled d-flex m-b-0\">\n <li class=\"c8y-select-wrapper flex-grow\">\n <select\n (change)=\"navigateTo($event.target.value)\"\n #select\n >\n <ng-container *ngFor=\"let tab of tabs\">\n <option\n *ngIf=\"!tab.component\"\n [value]=\"tab.path\"\n [selected]=\"isActive(tab)\"\n >\n {{ tab?.label | translate }}\n </option>\n </ng-container>\n </select>\n </li>\n <ng-container *ngFor=\"let tab of tabs\">\n <ng-container *ngIf=\"tab.component\">\n <ng-container\n *c8yComponentOutlet=\"tab.component; environmentInjector: tab.injector\"\n ></ng-container>\n </ng-container>\n </ng-container>\n </ul>\n</div>\n", dependencies: [{ kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: C8yComponentOutlet, selector: "[c8yComponentOutlet]", inputs: ["c8yComponentOutlet", "c8yComponentOutletInjector", "c8yComponentOutletEnvironmentInjector"] }, { kind: "directive", type: i1$3.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i1$3.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "directive", type: i2$3.TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] }); }
|
|
17015
17079
|
}
|
|
17016
17080
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: TabsOutletComponent, decorators: [{
|
|
17017
17081
|
type: Component,
|
|
17018
17082
|
args: [{ selector: 'c8y-tabs-outlet,c8y-ui-tabs', template: "<div\n class=\"tabContainer\"\n [ngClass]=\"{ 'hidden-xs': !outletName }\"\n #container\n>\n <button\n class=\"tabs-slider tabs-slider-left\"\n title=\"{{ 'Scroll to the left' | translate }}\"\n type=\"button\"\n #left\n *ngIf=\"showLeft || showRight\"\n [disabled]=\"!showLeft\"\n (click)=\"scroll('left')\"\n >\n <i [c8yIcon]=\"'chevron-left'\"></i>\n </button>\n <button\n class=\"tabs-slider tabs-slider-right\"\n title=\"{{ 'Scroll to the right' | translate }}\"\n type=\"button\"\n #right\n *ngIf=\"showRight || showLeft\"\n [disabled]=\"!showRight\"\n (click)=\"scroll('right')\"\n >\n <i [c8yIcon]=\"'chevron-right'\"></i>\n </button>\n <ng-container *ngIf=\"!outletName\">\n <div\n class=\"nav nav-tabs nav-tabsc8y\"\n role=\"list\"\n #tabsContainer\n >\n <ng-container *ngFor=\"let tab of tabs\">\n <div\n role=\"listitem\"\n [ngClass]=\"{ active: rla?.isActive }\"\n *ngIf=\"!tab.component && !tab.hide\"\n >\n <a\n [routerLink]=\"tab.path\"\n routerLinkActive\n [queryParamsHandling]=\"'preserve'\"\n #rla=\"routerLinkActive\"\n [ngClass]=\"{ 'p-r-24': !tab.template && tab?.badge }\"\n (click)=\"tab.onSelect?.emit()\"\n >\n <i\n [c8yIcon]=\"tab?.icon\"\n *ngIf=\"!tab.template && tab?.icon\"\n ></i>\n <span\n title=\"{{ tab?.label | translate }}\"\n *ngIf=\"!tab.template && !tab.component\"\n >\n {{ tab?.label | translate }}\n </span>\n <span\n class=\"dashboard-template-marker\"\n tooltip=\"{{ tab?.tooltipText | translate }}\"\n placement=\"bottom\"\n container=\"body\"\n [adaptivePosition]=\"false\"\n [delay]=\"300\"\n *ngIf=\"!tab.template && tab?.badge\"\n ></span>\n </a>\n <ng-container *ngTemplateOutlet=\"tab.template; injector: tab.injector\"></ng-container>\n </div>\n <ng-container *ngComponentOutlet=\"tab.component; injector: tab.injector\"></ng-container>\n </ng-container>\n </div>\n </ng-container>\n\n <div\n class=\"component-tabs nav nav-tabs nav-tabsc8y\"\n *ngIf=\"outletName\"\n #tabsContainer\n >\n <ng-container *ngFor=\"let tab of tabs; trackBy: trackByPath\">\n <div\n [ngClass]=\"{ active: tab.isActive }\"\n [routerLink]=\"tab.path\"\n [routerLinkActive]=\"tab.path ? 'active' : ''\"\n [queryParamsHandling]=\"'preserve'\"\n >\n <a\n class=\"pointer\"\n title=\"{{ tab?.label | translate }}\"\n (click)=\"tab.onSelect?.emit()\"\n >\n <i [c8yIcon]=\"tab?.icon\"></i>\n <span>\n {{ tab?.label | translate }}\n </span>\n </a>\n </div>\n </ng-container>\n </div>\n</div>\n\n<div\n class=\"visible-xs mobile-tabs\"\n *ngIf=\"!outletName\"\n>\n <ul class=\"list-unstyled d-flex m-b-0\">\n <li class=\"c8y-select-wrapper flex-grow\">\n <select\n (change)=\"navigateTo($event.target.value)\"\n #select\n >\n <ng-container *ngFor=\"let tab of tabs\">\n <option\n *ngIf=\"!tab.component\"\n [value]=\"tab.path\"\n [selected]=\"isActive(tab)\"\n >\n {{ tab?.label | translate }}\n </option>\n </ng-container>\n </select>\n </li>\n <ng-container *ngFor=\"let tab of tabs\">\n <ng-container *ngIf=\"tab.component\">\n <ng-container\n *c8yComponentOutlet=\"tab.component; environmentInjector: tab.injector\"\n ></ng-container>\n </ng-container>\n </ng-container>\n </ul>\n</div>\n" }]
|
|
17019
|
-
}], ctorParameters: () => [{ type: i1$3.Router }, { type: i0.Renderer2 }, { type: HeaderService }, { type: TabsService }], propDecorators: { tabs: [{
|
|
17083
|
+
}], ctorParameters: () => [{ type: i1$3.Router }, { type: i0.Renderer2 }, { type: HeaderService }, { type: TabsService }, { type: i1$3.ActivatedRoute }], propDecorators: { tabs: [{
|
|
17020
17084
|
type: Input
|
|
17021
17085
|
}], orientation: [{
|
|
17022
17086
|
type: Input
|
|
@@ -17026,6 +17090,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
|
|
|
17026
17090
|
type: Input
|
|
17027
17091
|
}], context: [{
|
|
17028
17092
|
type: Input
|
|
17093
|
+
}], openFirstTab: [{
|
|
17094
|
+
type: Input
|
|
17029
17095
|
}], hasHeader: [{
|
|
17030
17096
|
type: Input
|
|
17031
17097
|
}, {
|
|
@@ -18198,7 +18264,7 @@ class BootstrapComponent {
|
|
|
18198
18264
|
this.pluginsResolve.markPluginsAsLoaded();
|
|
18199
18265
|
}
|
|
18200
18266
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: BootstrapComponent, deps: [{ token: TabsService }, { token: AppStateService }, { token: NavigatorService }, { token: ActionBarService }, { token: HeaderService }, { token: OptionsService }, { token: PluginsResolveService }, { token: SetupService }, { token: LoginService }, { token: TranslationLoaderService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
18201
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: BootstrapComponent, selector: "c8y-bootstrap", ngImport: i0, template: "<c8y-message-banner\n *ngIf=\"!(showLogin$ | async)\"\n class=\"c8y-message-banner\"\n></c8y-message-banner>\n<c8y-login *ngIf=\"showLogin$ | async\"></c8y-login>\n\n<div\n class=\"init-load\"\n *ngIf=\"showLoadingIndicator$ | async\"\n>\n <div class=\"spinner-snake\"></div>\n <div class=\"mainlogo-placeholder mainlogo\"></div>\n</div>\n\n<div\n [class.head-open]=\"headerService.headerOpen\"\n *ngIf=\"showMainView$ | async\"\n>\n <c8y-header-bar\n *ngIf=\"!headerService.hideHeader\"\n #header\n ></c8y-header-bar>\n <c8y-drawer-outlet\n [tabindex]=\"(headerService.navigatorOpen$ | async) ? '0' : '-1'\"\n role=\"region\"\n position=\"left\"\n data-cy=\"bootstrap.template--c8y-drawer-outlet\"\n [open]=\"headerService.navigatorOpen$ | async\"\n ></c8y-drawer-outlet>\n\n <div class=\"alerts\">\n <c8y-alert-outlet></c8y-alert-outlet>\n </div>\n <c8y-tabs-outlet\n role=\"navigation\"\n #tabsComponent\n [tabs]=\"tabs.items$ | async\"\n [hasHeader]=\"tabsComponent.hasHeader\"\n [navigatorOpen]=\"headerService.navigatorOpen$ | async\"\n [orientation]=\"tabs.orientation$ | async\"\n ></c8y-tabs-outlet>\n <c8y-action-bar\n role=\"group\"\n #actionBarComponent\n [navigatorOpen]=\"headerService.navigatorOpen$ | async\"\n [hasTabs]=\"tabsComponent.hasTabs\"\n [hasHeader]=\"tabsComponent.hasHeader\"\n [isTabsHorizontal]=\"tabsComponent?.isHorizontal\"\n [items$]=\"actionBar.items$\"\n ></c8y-action-bar>\n\n <div\n class=\"mcontainer\"\n [ngClass]=\"{\n open: headerService.navigatorOpen$ | async,\n 'no-apps-margin': noAppsMargin$ | async,\n 'horizontal-tabs': tabsComponent.isHorizontal,\n 'vertical-tabs': !tabsComponent.isHorizontal,\n 'has-tabs': tabsComponent.hasTabs,\n 'has-action-bar': !actionBarComponent?.hidden,\n 'has-header': headerService.hideHeader\n }\"\n >\n <main\n class=\"container-fluid\"\n id=\"main-content\"\n tabindex=\"-1\"\n >\n <router-outlet></router-outlet>\n <ng-content select=\"#c8y-legacy-view\"></ng-content>\n <!-- legacy ng-view, will not be migrated atm -->\n </main>\n </div>\n</div>\n\n<div *ngIf=\"showSetup$ | async\">\n <c8y-header-bar\n *ngIf=\"!headerService.hideHeader\"\n [simple]=\"true\"\n ></c8y-header-bar>\n <div class=\"alerts\">\n <c8y-alert-outlet></c8y-alert-outlet>\n </div>\n <div\n class=\"mcontainer\"\n role=\"main\"\n >\n <div class=\"container-fluid\">\n <c8y-setup></c8y-setup>\n </div>\n </div>\n</div>\n\n<c8y-cookie-banner></c8y-cookie-banner>\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: HeaderBarComponent, selector: "c8y-header-bar", inputs: ["simple"] }, { kind: "component", type: LoginComponent, selector: "c8y-login", inputs: ["name"] }, { kind: "directive", type: i1$3.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "component", type: TabsOutletComponent, selector: "c8y-tabs-outlet,c8y-ui-tabs", inputs: ["tabs", "orientation", "navigatorOpen", "outletName", "context", "hasHeader"] }, { kind: "component", type: ActionBarComponent, selector: "c8y-action-bar", inputs: ["navigatorOpen", "hasTabs", "hasHeader", "isTabsHorizontal", "items$"] }, { kind: "component", type: AlertOutletComponent, selector: "c8y-alert-outlet" }, { kind: "component", type: SetupComponent, selector: "c8y-setup" }, { kind: "component", type: DrawerOutletComponent, selector: "c8y-drawer-outlet", inputs: ["position", "open"] }, { kind: "component", type: CookieBannerComponent, selector: "c8y-cookie-banner" }, { kind: "component", type: MessageBannerComponent, selector: "c8y-message-banner" }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }] }); }
|
|
18267
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: BootstrapComponent, selector: "c8y-bootstrap", ngImport: i0, template: "<c8y-message-banner\n *ngIf=\"!(showLogin$ | async)\"\n class=\"c8y-message-banner\"\n></c8y-message-banner>\n<c8y-login *ngIf=\"showLogin$ | async\"></c8y-login>\n\n<div\n class=\"init-load\"\n *ngIf=\"showLoadingIndicator$ | async\"\n>\n <div class=\"spinner-snake\"></div>\n <div class=\"mainlogo-placeholder mainlogo\"></div>\n</div>\n\n<div\n [class.head-open]=\"headerService.headerOpen\"\n *ngIf=\"showMainView$ | async\"\n>\n <c8y-header-bar\n *ngIf=\"!headerService.hideHeader\"\n #header\n ></c8y-header-bar>\n <c8y-drawer-outlet\n [tabindex]=\"(headerService.navigatorOpen$ | async) ? '0' : '-1'\"\n role=\"region\"\n position=\"left\"\n data-cy=\"bootstrap.template--c8y-drawer-outlet\"\n [open]=\"headerService.navigatorOpen$ | async\"\n ></c8y-drawer-outlet>\n\n <div class=\"alerts\">\n <c8y-alert-outlet></c8y-alert-outlet>\n </div>\n <c8y-tabs-outlet\n role=\"navigation\"\n #tabsComponent\n [tabs]=\"tabs.items$ | async\"\n [hasHeader]=\"tabsComponent.hasHeader\"\n [navigatorOpen]=\"headerService.navigatorOpen$ | async\"\n [orientation]=\"tabs.orientation$ | async\"\n ></c8y-tabs-outlet>\n <c8y-action-bar\n role=\"group\"\n #actionBarComponent\n [navigatorOpen]=\"headerService.navigatorOpen$ | async\"\n [hasTabs]=\"tabsComponent.hasTabs\"\n [hasHeader]=\"tabsComponent.hasHeader\"\n [isTabsHorizontal]=\"tabsComponent?.isHorizontal\"\n [items$]=\"actionBar.items$\"\n ></c8y-action-bar>\n\n <div\n class=\"mcontainer\"\n [ngClass]=\"{\n open: headerService.navigatorOpen$ | async,\n 'no-apps-margin': noAppsMargin$ | async,\n 'horizontal-tabs': tabsComponent.isHorizontal,\n 'vertical-tabs': !tabsComponent.isHorizontal,\n 'has-tabs': tabsComponent.hasTabs,\n 'has-action-bar': !actionBarComponent?.hidden,\n 'has-header': headerService.hideHeader\n }\"\n >\n <main\n class=\"container-fluid\"\n id=\"main-content\"\n tabindex=\"-1\"\n >\n <router-outlet></router-outlet>\n <ng-content select=\"#c8y-legacy-view\"></ng-content>\n <!-- legacy ng-view, will not be migrated atm -->\n </main>\n </div>\n</div>\n\n<div *ngIf=\"showSetup$ | async\">\n <c8y-header-bar\n *ngIf=\"!headerService.hideHeader\"\n [simple]=\"true\"\n ></c8y-header-bar>\n <div class=\"alerts\">\n <c8y-alert-outlet></c8y-alert-outlet>\n </div>\n <div\n class=\"mcontainer\"\n role=\"main\"\n >\n <div class=\"container-fluid\">\n <c8y-setup></c8y-setup>\n </div>\n </div>\n</div>\n\n<c8y-cookie-banner></c8y-cookie-banner>\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: HeaderBarComponent, selector: "c8y-header-bar", inputs: ["simple"] }, { kind: "component", type: LoginComponent, selector: "c8y-login", inputs: ["name"] }, { kind: "directive", type: i1$3.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "component", type: TabsOutletComponent, selector: "c8y-tabs-outlet,c8y-ui-tabs", inputs: ["tabs", "orientation", "navigatorOpen", "outletName", "context", "openFirstTab", "hasHeader"] }, { kind: "component", type: ActionBarComponent, selector: "c8y-action-bar", inputs: ["navigatorOpen", "hasTabs", "hasHeader", "isTabsHorizontal", "items$"] }, { kind: "component", type: AlertOutletComponent, selector: "c8y-alert-outlet" }, { kind: "component", type: SetupComponent, selector: "c8y-setup" }, { kind: "component", type: DrawerOutletComponent, selector: "c8y-drawer-outlet", inputs: ["position", "open"] }, { kind: "component", type: CookieBannerComponent, selector: "c8y-cookie-banner" }, { kind: "component", type: MessageBannerComponent, selector: "c8y-message-banner" }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }] }); }
|
|
18202
18268
|
}
|
|
18203
18269
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: BootstrapComponent, decorators: [{
|
|
18204
18270
|
type: Component,
|
|
@@ -18345,6 +18411,15 @@ class NavigatorNodeComponent {
|
|
|
18345
18411
|
if (isUndefined(this.node.path)) {
|
|
18346
18412
|
return false;
|
|
18347
18413
|
}
|
|
18414
|
+
// on exact match, for empty routes '' we need a special
|
|
18415
|
+
// handling as there seems to be a bug with angular, as it
|
|
18416
|
+
// does not show the primary oulet in this cases.
|
|
18417
|
+
const currentUrlTree = this.router.parseUrl(this.router.url);
|
|
18418
|
+
if (this.node.routerLinkExact &&
|
|
18419
|
+
!currentUrlTree.root.children['primary'] &&
|
|
18420
|
+
this.node.path === '/') {
|
|
18421
|
+
return true;
|
|
18422
|
+
}
|
|
18348
18423
|
return this.router.isActive(this.node.path, {
|
|
18349
18424
|
paths: this.node.routerLinkExact ? 'exact' : 'subset',
|
|
18350
18425
|
queryParams: 'ignored',
|
|
@@ -19044,7 +19119,11 @@ class SelectKeyboardService {
|
|
|
19044
19119
|
/**
|
|
19045
19120
|
* Search on key event.
|
|
19046
19121
|
*/
|
|
19047
|
-
keyboardSearch: false
|
|
19122
|
+
keyboardSearch: false,
|
|
19123
|
+
/**
|
|
19124
|
+
* Space key event is used to select.
|
|
19125
|
+
*/
|
|
19126
|
+
spaceSelect: false
|
|
19048
19127
|
};
|
|
19049
19128
|
}
|
|
19050
19129
|
/**
|
|
@@ -19084,7 +19163,7 @@ class SelectKeyboardService {
|
|
|
19084
19163
|
this.KEYCODE_DOWN,
|
|
19085
19164
|
this.KEYCODE_TAB,
|
|
19086
19165
|
this.KEYCODE_UP,
|
|
19087
|
-
this.KEYCODE_SPACE
|
|
19166
|
+
...(this.options.spaceSelect ? [this.KEYCODE_SPACE] : [])
|
|
19088
19167
|
].includes(event.code);
|
|
19089
19168
|
}
|
|
19090
19169
|
handleKeyboard(event, input, items, dropdown) {
|
|
@@ -20578,6 +20657,10 @@ class SelectComponent {
|
|
|
20578
20657
|
* If set to true, the user can select multiple items.
|
|
20579
20658
|
*/
|
|
20580
20659
|
this.multi = false;
|
|
20660
|
+
/**
|
|
20661
|
+
* If enabled, an item can be selected with the space key.
|
|
20662
|
+
*/
|
|
20663
|
+
this.canSelectWithSpace = !this.multi;
|
|
20581
20664
|
/**
|
|
20582
20665
|
* If set to true, the select is disabled.
|
|
20583
20666
|
*/
|
|
@@ -20631,7 +20714,8 @@ class SelectComponent {
|
|
|
20631
20714
|
this.destroy$ = new Subject();
|
|
20632
20715
|
this.selectKeyboardService.options = {
|
|
20633
20716
|
emptyInput: true,
|
|
20634
|
-
keyboardSearch: true
|
|
20717
|
+
keyboardSearch: true,
|
|
20718
|
+
spaceSelect: this.canSelectWithSpace
|
|
20635
20719
|
};
|
|
20636
20720
|
}
|
|
20637
20721
|
/**
|
|
@@ -20651,6 +20735,9 @@ class SelectComponent {
|
|
|
20651
20735
|
this.insideClick = this.multi;
|
|
20652
20736
|
}
|
|
20653
20737
|
}
|
|
20738
|
+
/**
|
|
20739
|
+
* @ignore
|
|
20740
|
+
*/
|
|
20654
20741
|
ngAfterViewInit() {
|
|
20655
20742
|
this.selectKeyboardService
|
|
20656
20743
|
.register$(this.searchControl.nativeElement, this.list, this.dropdown)
|
|
@@ -20663,6 +20750,18 @@ class SelectComponent {
|
|
|
20663
20750
|
}
|
|
20664
20751
|
});
|
|
20665
20752
|
}
|
|
20753
|
+
/**
|
|
20754
|
+
* @ignore
|
|
20755
|
+
*/
|
|
20756
|
+
ngOnChanges(changes) {
|
|
20757
|
+
if (changes.canSelectWithSpace) {
|
|
20758
|
+
this.selectKeyboardService.options = {
|
|
20759
|
+
emptyInput: true,
|
|
20760
|
+
keyboardSearch: true,
|
|
20761
|
+
spaceSelect: changes.canSelectWithSpace.currentValue
|
|
20762
|
+
};
|
|
20763
|
+
}
|
|
20764
|
+
}
|
|
20666
20765
|
/**
|
|
20667
20766
|
* @ignore
|
|
20668
20767
|
*/
|
|
@@ -20676,15 +20775,21 @@ class SelectComponent {
|
|
|
20676
20775
|
* @param item The item to select.
|
|
20677
20776
|
*/
|
|
20678
20777
|
select(item) {
|
|
20679
|
-
this.onSelect.emit(item);
|
|
20680
20778
|
if (this.multi) {
|
|
20681
|
-
this._selected.indexOf(item) > -1
|
|
20779
|
+
const isSelected = this._selected.indexOf(item) > -1;
|
|
20780
|
+
if (isSelected) {
|
|
20781
|
+
this.deselect(item);
|
|
20782
|
+
return;
|
|
20783
|
+
}
|
|
20784
|
+
this._selected.push(item);
|
|
20682
20785
|
this.emitChangeEvent();
|
|
20786
|
+
this.onSelect.emit(item);
|
|
20683
20787
|
return;
|
|
20684
20788
|
}
|
|
20685
20789
|
this._selected = [item];
|
|
20686
20790
|
this._preselectedItem = item;
|
|
20687
20791
|
this.emitChangeEvent();
|
|
20792
|
+
this.onSelect.emit(item);
|
|
20688
20793
|
}
|
|
20689
20794
|
/**
|
|
20690
20795
|
* Deselects an item.
|
|
@@ -20694,8 +20799,8 @@ class SelectComponent {
|
|
|
20694
20799
|
const index = this._selected.indexOf(item);
|
|
20695
20800
|
if (index > -1) {
|
|
20696
20801
|
this._selected.splice(index, 1);
|
|
20697
|
-
this.onDeselect.emit(item);
|
|
20698
20802
|
this.emitChangeEvent();
|
|
20803
|
+
this.onDeselect.emit(item);
|
|
20699
20804
|
this._preselectedItem = null;
|
|
20700
20805
|
}
|
|
20701
20806
|
}
|
|
@@ -20802,7 +20907,7 @@ class SelectComponent {
|
|
|
20802
20907
|
}
|
|
20803
20908
|
}
|
|
20804
20909
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: SelectComponent, deps: [{ token: SelectKeyboardService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
20805
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: SelectComponent, selector: "c8y-select", inputs: { placeholder: "placeholder", items: "items", selected: "selected", container: "container", multi: "multi", disabled: "disabled", autoClose: "autoClose", insideClick: "insideClick", required: "required", canDeselect: "canDeselect", name: "name", icon: "icon" }, outputs: { onSelect: "onSelect", onDeselect: "onDeselect", onIconClick: "onIconClick" }, host: { classAttribute: "c8y-select-v2" }, providers: [
|
|
20910
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: SelectComponent, selector: "c8y-select", inputs: { placeholder: "placeholder", items: "items", selected: "selected", container: "container", multi: "multi", canSelectWithSpace: "canSelectWithSpace", disabled: "disabled", autoClose: "autoClose", insideClick: "insideClick", required: "required", canDeselect: "canDeselect", name: "name", icon: "icon" }, outputs: { onSelect: "onSelect", onDeselect: "onDeselect", onIconClick: "onIconClick" }, host: { classAttribute: "c8y-select-v2" }, providers: [
|
|
20806
20911
|
{
|
|
20807
20912
|
provide: NG_VALUE_ACCESSOR,
|
|
20808
20913
|
multi: true,
|
|
@@ -20814,7 +20919,7 @@ class SelectComponent {
|
|
|
20814
20919
|
multi: true
|
|
20815
20920
|
},
|
|
20816
20921
|
SelectKeyboardService
|
|
20817
|
-
], queries: [{ propertyName: "projectedSelectedItems", first: true, predicate: SelectedItemsDirective, descendants: true }, { propertyName: "projectedSelectableItems", predicate: SelectItemDirective }], viewQueries: [{ propertyName: "searchControl", first: true, predicate: ["searchControl"], descendants: true }, { propertyName: "dropdown", first: true, predicate: ["dropdown"], descendants: true }, { propertyName: "list", predicate: ListItemComponent, descendants: true }], ngImport: i0, template: "<div\n class=\"c8y-search-dropdown dropdown fit-w\"\n placement=\"bottom left\"\n dropdown\n [container]=\"container\"\n #dropdown=\"bs-dropdown\"\n [autoClose]=\"autoClose\"\n [isDisabled]=\"disabled\"\n [insideClick]=\"insideClick\"\n (onShown)=\"onShown()\"\n (onHidden)=\"onHidden()\"\n dropdownToggle\n (click)=\"open()\"\n>\n <div\n class=\"input-group input-group-dropdown\"\n role=\"button\"\n >\n <div\n class=\"form-control text-truncate\"\n *ngIf=\"true\"\n [ngClass]=\"{\n 'm-r-80': canDeselect && selected.length > 0,\n 'm-r-40': !canDeselect || selected.length === 0,\n 'text-truncate': !multi,\n 'inner-scroll d-flex a-i-center': multi\n }\"\n >\n <!-- rendering of selected items (with content projection) -->\n <div\n class=\"selected-items\"\n *ngIf=\"projectedSelectedItems\"\n >\n <ng-container *ngFor=\"let selectedItem of selected\">\n <ng-container\n *ngTemplateOutlet=\"\n projectedSelectedItems.templateRef;\n context: { $implicit: selectedItem }\n \"\n ></ng-container>\n </ng-container>\n <i\n class=\"text-muted\"\n *ngIf=\"selected.length === 0 && !searchHasFocus && searchControl.value.length === 0\"\n >\n {{ placeholder | translate }}\n </i>\n </div>\n\n <!-- rendering of selected items (default) -->\n <div\n class=\"selected-items\"\n *ngIf=\"!projectedSelectedItems\"\n >\n <span *ngIf=\"!multi\">\n <span *ngIf=\"searchHasFocus && preselectedItem\">\n {{ preselectedItem.label | translate }}\n </span>\n <span *ngIf=\"!searchHasFocus && selected.length === 1\">\n {{ selected[0].label | translate }}\n </span>\n </span>\n <i\n class=\"text-muted\"\n *ngIf=\"selected.length === 0 && !preselectedItem && searchControl.value.length === 0\"\n >\n {{ placeholder | translate }}\n </i>\n <ng-container *ngIf=\"multi\">\n <span class=\"m-r-4\">{{ searchControl.value }}</span>\n <span\n class=\"tag tag--info chip\"\n *ngFor=\"let selectedItem of selected\"\n >\n <button\n class=\"btn btn-xs btn-clean text-10 m-r-4\"\n title=\"{{ selectedItem.label | translate }}\"\n type=\"button\"\n (click)=\"$event.preventDefault(); $event.stopPropagation(); deselect(selectedItem)\"\n >\n <i c8yIcon=\"times\"></i>\n </button>\n {{ selectedItem.label | translate }}\n </span>\n </ng-container>\n </div>\n </div>\n \n <input\n class=\"form-control text-truncate\"\n type=\"text\"\n autocomplete=\"off\"\n #searchControl\n [ngClass]=\"{\n 'p-absolute': true,\n 'm-r-80': canDeselect && selected.length > 0,\n 'm-r-40': !canDeselect || selected.length === 0\n }\"\n [required]=\"required\"\n (blur)=\"doBlur()\"\n (focus)=\"doFocus()\"\n [name]=\"name\"\n [disabled]=\"disabled\"\n />\n\n <span class=\"input-group-btn\">\n <!-- this button is displayed only if we have something selected and are allowed to deselect -->\n <button\n class=\"btn btn-dot\"\n title=\"{{ 'Deselect' | translate }}\"\n type=\"button\"\n *ngIf=\"canDeselect && selected.length > 0\"\n [disabled]=\"disabled\"\n (click)=\"$event.preventDefault(); $event.stopPropagation(); deselectAll()\"\n >\n <i c8yIcon=\"times\"></i>\n </button>\n <button\n class=\"btn btn-dot\"\n title=\"{{ 'Search' | translate }}\"\n type=\"button\"\n [disabled]=\"disabled\"\n (click)=\"onIconClick.emit({ icon, $event })\"\n data-cy=\"select-button\"\n >\n <i\n class=\"text-primary\"\n [c8yIcon]=\"icon\"\n ></i>\n </button>\n </span>\n </div>\n\n <c8y-list-group\n class=\"dropdown-menu dropdown-menu--modal\"\n [style.width]=\"container === 'body' ? searchControl.parentNode.clientWidth + 'px' : undefined\"\n role=\"menu\"\n data-cy=\"select--dropdown-menu\"\n *dropdownMenu\n >\n <!-- rendering of items (default) -->\n <c8y-li\n style=\"cursor: pointer\"\n *ngFor=\"let item of items\"\n [selectable]=\"true\"\n [dense]=\"true\"\n [active]=\"!multi && item.value === selected[0]?.value\"\n (click)=\"select(item)\"\n >\n <span [attr.data-search-label]=\"item.label | translate\"></span>\n <c8y-li-checkbox\n *ngIf=\"multi\"\n [selected]=\"selected.indexOf(item) > -1\"\n (click)=\"$event.preventDefault()
|
|
20922
|
+
], queries: [{ propertyName: "projectedSelectedItems", first: true, predicate: SelectedItemsDirective, descendants: true }, { propertyName: "projectedSelectableItems", predicate: SelectItemDirective }], viewQueries: [{ propertyName: "searchControl", first: true, predicate: ["searchControl"], descendants: true }, { propertyName: "dropdown", first: true, predicate: ["dropdown"], descendants: true }, { propertyName: "list", predicate: ListItemComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\n class=\"c8y-search-dropdown dropdown fit-w\"\n placement=\"bottom left\"\n dropdown\n [container]=\"container\"\n #dropdown=\"bs-dropdown\"\n [autoClose]=\"autoClose\"\n [isDisabled]=\"disabled\"\n [insideClick]=\"insideClick\"\n (onShown)=\"onShown()\"\n (onHidden)=\"onHidden()\"\n dropdownToggle\n (click)=\"open()\"\n>\n <div\n class=\"input-group input-group-dropdown\"\n role=\"button\"\n >\n <div\n class=\"form-control text-truncate\"\n *ngIf=\"true\"\n [ngClass]=\"{\n 'm-r-80': canDeselect && selected.length > 0,\n 'm-r-40': !canDeselect || selected.length === 0,\n 'text-truncate': !multi,\n 'inner-scroll d-flex a-i-center': multi\n }\"\n >\n <!-- rendering of selected items (with content projection) -->\n <div\n class=\"selected-items\"\n *ngIf=\"projectedSelectedItems\"\n >\n <ng-container *ngFor=\"let selectedItem of selected\">\n <ng-container\n *ngTemplateOutlet=\"\n projectedSelectedItems.templateRef;\n context: { $implicit: selectedItem }\n \"\n ></ng-container>\n </ng-container>\n <i\n class=\"text-muted\"\n *ngIf=\"selected.length === 0 && !searchHasFocus && searchControl.value.length === 0\"\n >\n {{ placeholder | translate }}\n </i>\n </div>\n\n <!-- rendering of selected items (default) -->\n <div\n class=\"selected-items\"\n *ngIf=\"!projectedSelectedItems\"\n >\n <span *ngIf=\"!multi\">\n <span *ngIf=\"searchHasFocus && preselectedItem\">\n {{ preselectedItem.label | translate }}\n </span>\n <span *ngIf=\"!searchHasFocus && selected.length === 1\">\n {{ selected[0].label | translate }}\n </span>\n </span>\n <i\n class=\"text-muted\"\n *ngIf=\"selected.length === 0 && !preselectedItem && searchControl.value.length === 0\"\n >\n {{ placeholder | translate }}\n </i>\n <ng-container *ngIf=\"multi\">\n <span class=\"m-r-4\">{{ searchControl.value }}</span>\n <span\n class=\"tag tag--info chip\"\n *ngFor=\"let selectedItem of selected\"\n >\n <button\n class=\"btn btn-xs btn-clean text-10 m-r-4\"\n title=\"{{ selectedItem.label | translate }}\"\n type=\"button\"\n (click)=\"$event.preventDefault(); $event.stopPropagation(); deselect(selectedItem)\"\n >\n <i c8yIcon=\"times\"></i>\n </button>\n {{ selectedItem.label | translate }}\n </span>\n </ng-container>\n </div>\n </div>\n \n <input\n class=\"form-control text-truncate\"\n type=\"text\"\n autocomplete=\"off\"\n #searchControl\n [ngClass]=\"{\n 'p-absolute': true,\n 'm-r-80': canDeselect && selected.length > 0,\n 'm-r-40': !canDeselect || selected.length === 0\n }\"\n [required]=\"required\"\n (blur)=\"doBlur()\"\n (focus)=\"doFocus()\"\n [name]=\"name\"\n [disabled]=\"disabled\"\n />\n\n <span class=\"input-group-btn\">\n <!-- this button is displayed only if we have something selected and are allowed to deselect -->\n <button\n class=\"btn btn-dot\"\n title=\"{{ 'Deselect' | translate }}\"\n type=\"button\"\n *ngIf=\"canDeselect && selected.length > 0\"\n [disabled]=\"disabled\"\n (click)=\"$event.preventDefault(); $event.stopPropagation(); deselectAll()\"\n >\n <i c8yIcon=\"times\"></i>\n </button>\n <button\n class=\"btn btn-dot\"\n title=\"{{ 'Search' | translate }}\"\n type=\"button\"\n [disabled]=\"disabled\"\n (click)=\"onIconClick.emit({ icon, $event })\"\n data-cy=\"select-button\"\n >\n <i\n class=\"text-primary\"\n [c8yIcon]=\"icon\"\n ></i>\n </button>\n </span>\n </div>\n\n <c8y-list-group\n class=\"dropdown-menu dropdown-menu--modal\"\n [style.width]=\"container === 'body' ? searchControl.parentNode.clientWidth + 'px' : undefined\"\n role=\"menu\"\n data-cy=\"select--dropdown-menu\"\n *dropdownMenu\n >\n <!-- rendering of items (default) -->\n <c8y-li\n style=\"cursor: pointer\"\n *ngFor=\"let item of items\"\n [selectable]=\"true\"\n [dense]=\"true\"\n [active]=\"!multi && item.value === selected[0]?.value\"\n (click)=\"select(item)\"\n >\n <span [attr.data-search-label]=\"item.label | translate\"></span>\n <c8y-li-checkbox\n *ngIf=\"multi\"\n [selected]=\"selected.indexOf(item) > -1\"\n (click)=\"$event.preventDefault();\"\n ></c8y-li-checkbox>\n <c8y-li-body\n *ngIf=\"!item.template\"\n >\n {{ item.label | translate }}\n </c8y-li-body>\n <ng-container\n *ngTemplateOutlet=\"item?.template\"\n ngProjectAs=\"c8y-li-body\"\n ></ng-container>\n </c8y-li>\n <ng-content select=\"div\"></ng-content>\n </c8y-list-group>\n</div>\n", dependencies: [{ kind: "directive", type: i2$2.BsDropdownMenuDirective, selector: "[bsDropdownMenu],[dropdownMenu]", exportAs: ["bs-dropdown-menu"] }, { kind: "directive", type: i2$2.BsDropdownToggleDirective, selector: "[bsDropdownToggle],[dropdownToggle]", exportAs: ["bs-dropdown-toggle"] }, { kind: "directive", type: i2$2.BsDropdownDirective, selector: "[bsDropdown], [dropdown]", inputs: ["placement", "triggers", "container", "dropup", "autoClose", "isAnimated", "insideClick", "isDisabled", "isOpen"], outputs: ["isOpenChange", "onShown", "onHidden"], exportAs: ["bs-dropdown"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ListGroupComponent, selector: "c8y-list-group" }, { kind: "component", type: ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "highlighted", "emptyActions", "dense", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "component", type: ListItemBodyComponent, selector: "c8y-list-item-body, c8y-li-body", inputs: ["body"] }, { kind: "component", type: ListItemCheckboxComponent, selector: "c8y-list-item-checkbox, c8y-li-checkbox", inputs: ["selected", "indeterminate", "disabled", "displayAsSwitch"], outputs: ["onSelect"] }, { kind: "directive", type: RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] }); }
|
|
20818
20923
|
}
|
|
20819
20924
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: SelectComponent, decorators: [{
|
|
20820
20925
|
type: Component,
|
|
@@ -20830,7 +20935,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
|
|
|
20830
20935
|
multi: true
|
|
20831
20936
|
},
|
|
20832
20937
|
SelectKeyboardService
|
|
20833
|
-
], template: "<div\n class=\"c8y-search-dropdown dropdown fit-w\"\n placement=\"bottom left\"\n dropdown\n [container]=\"container\"\n #dropdown=\"bs-dropdown\"\n [autoClose]=\"autoClose\"\n [isDisabled]=\"disabled\"\n [insideClick]=\"insideClick\"\n (onShown)=\"onShown()\"\n (onHidden)=\"onHidden()\"\n dropdownToggle\n (click)=\"open()\"\n>\n <div\n class=\"input-group input-group-dropdown\"\n role=\"button\"\n >\n <div\n class=\"form-control text-truncate\"\n *ngIf=\"true\"\n [ngClass]=\"{\n 'm-r-80': canDeselect && selected.length > 0,\n 'm-r-40': !canDeselect || selected.length === 0,\n 'text-truncate': !multi,\n 'inner-scroll d-flex a-i-center': multi\n }\"\n >\n <!-- rendering of selected items (with content projection) -->\n <div\n class=\"selected-items\"\n *ngIf=\"projectedSelectedItems\"\n >\n <ng-container *ngFor=\"let selectedItem of selected\">\n <ng-container\n *ngTemplateOutlet=\"\n projectedSelectedItems.templateRef;\n context: { $implicit: selectedItem }\n \"\n ></ng-container>\n </ng-container>\n <i\n class=\"text-muted\"\n *ngIf=\"selected.length === 0 && !searchHasFocus && searchControl.value.length === 0\"\n >\n {{ placeholder | translate }}\n </i>\n </div>\n\n <!-- rendering of selected items (default) -->\n <div\n class=\"selected-items\"\n *ngIf=\"!projectedSelectedItems\"\n >\n <span *ngIf=\"!multi\">\n <span *ngIf=\"searchHasFocus && preselectedItem\">\n {{ preselectedItem.label | translate }}\n </span>\n <span *ngIf=\"!searchHasFocus && selected.length === 1\">\n {{ selected[0].label | translate }}\n </span>\n </span>\n <i\n class=\"text-muted\"\n *ngIf=\"selected.length === 0 && !preselectedItem && searchControl.value.length === 0\"\n >\n {{ placeholder | translate }}\n </i>\n <ng-container *ngIf=\"multi\">\n <span class=\"m-r-4\">{{ searchControl.value }}</span>\n <span\n class=\"tag tag--info chip\"\n *ngFor=\"let selectedItem of selected\"\n >\n <button\n class=\"btn btn-xs btn-clean text-10 m-r-4\"\n title=\"{{ selectedItem.label | translate }}\"\n type=\"button\"\n (click)=\"$event.preventDefault(); $event.stopPropagation(); deselect(selectedItem)\"\n >\n <i c8yIcon=\"times\"></i>\n </button>\n {{ selectedItem.label | translate }}\n </span>\n </ng-container>\n </div>\n </div>\n \n <input\n class=\"form-control text-truncate\"\n type=\"text\"\n autocomplete=\"off\"\n #searchControl\n [ngClass]=\"{\n 'p-absolute': true,\n 'm-r-80': canDeselect && selected.length > 0,\n 'm-r-40': !canDeselect || selected.length === 0\n }\"\n [required]=\"required\"\n (blur)=\"doBlur()\"\n (focus)=\"doFocus()\"\n [name]=\"name\"\n [disabled]=\"disabled\"\n />\n\n <span class=\"input-group-btn\">\n <!-- this button is displayed only if we have something selected and are allowed to deselect -->\n <button\n class=\"btn btn-dot\"\n title=\"{{ 'Deselect' | translate }}\"\n type=\"button\"\n *ngIf=\"canDeselect && selected.length > 0\"\n [disabled]=\"disabled\"\n (click)=\"$event.preventDefault(); $event.stopPropagation(); deselectAll()\"\n >\n <i c8yIcon=\"times\"></i>\n </button>\n <button\n class=\"btn btn-dot\"\n title=\"{{ 'Search' | translate }}\"\n type=\"button\"\n [disabled]=\"disabled\"\n (click)=\"onIconClick.emit({ icon, $event })\"\n data-cy=\"select-button\"\n >\n <i\n class=\"text-primary\"\n [c8yIcon]=\"icon\"\n ></i>\n </button>\n </span>\n </div>\n\n <c8y-list-group\n class=\"dropdown-menu dropdown-menu--modal\"\n [style.width]=\"container === 'body' ? searchControl.parentNode.clientWidth + 'px' : undefined\"\n role=\"menu\"\n data-cy=\"select--dropdown-menu\"\n *dropdownMenu\n >\n <!-- rendering of items (default) -->\n <c8y-li\n style=\"cursor: pointer\"\n *ngFor=\"let item of items\"\n [selectable]=\"true\"\n [dense]=\"true\"\n [active]=\"!multi && item.value === selected[0]?.value\"\n (click)=\"select(item)\"\n >\n <span [attr.data-search-label]=\"item.label | translate\"></span>\n <c8y-li-checkbox\n *ngIf=\"multi\"\n [selected]=\"selected.indexOf(item) > -1\"\n (click)=\"$event.preventDefault()
|
|
20938
|
+
], template: "<div\n class=\"c8y-search-dropdown dropdown fit-w\"\n placement=\"bottom left\"\n dropdown\n [container]=\"container\"\n #dropdown=\"bs-dropdown\"\n [autoClose]=\"autoClose\"\n [isDisabled]=\"disabled\"\n [insideClick]=\"insideClick\"\n (onShown)=\"onShown()\"\n (onHidden)=\"onHidden()\"\n dropdownToggle\n (click)=\"open()\"\n>\n <div\n class=\"input-group input-group-dropdown\"\n role=\"button\"\n >\n <div\n class=\"form-control text-truncate\"\n *ngIf=\"true\"\n [ngClass]=\"{\n 'm-r-80': canDeselect && selected.length > 0,\n 'm-r-40': !canDeselect || selected.length === 0,\n 'text-truncate': !multi,\n 'inner-scroll d-flex a-i-center': multi\n }\"\n >\n <!-- rendering of selected items (with content projection) -->\n <div\n class=\"selected-items\"\n *ngIf=\"projectedSelectedItems\"\n >\n <ng-container *ngFor=\"let selectedItem of selected\">\n <ng-container\n *ngTemplateOutlet=\"\n projectedSelectedItems.templateRef;\n context: { $implicit: selectedItem }\n \"\n ></ng-container>\n </ng-container>\n <i\n class=\"text-muted\"\n *ngIf=\"selected.length === 0 && !searchHasFocus && searchControl.value.length === 0\"\n >\n {{ placeholder | translate }}\n </i>\n </div>\n\n <!-- rendering of selected items (default) -->\n <div\n class=\"selected-items\"\n *ngIf=\"!projectedSelectedItems\"\n >\n <span *ngIf=\"!multi\">\n <span *ngIf=\"searchHasFocus && preselectedItem\">\n {{ preselectedItem.label | translate }}\n </span>\n <span *ngIf=\"!searchHasFocus && selected.length === 1\">\n {{ selected[0].label | translate }}\n </span>\n </span>\n <i\n class=\"text-muted\"\n *ngIf=\"selected.length === 0 && !preselectedItem && searchControl.value.length === 0\"\n >\n {{ placeholder | translate }}\n </i>\n <ng-container *ngIf=\"multi\">\n <span class=\"m-r-4\">{{ searchControl.value }}</span>\n <span\n class=\"tag tag--info chip\"\n *ngFor=\"let selectedItem of selected\"\n >\n <button\n class=\"btn btn-xs btn-clean text-10 m-r-4\"\n title=\"{{ selectedItem.label | translate }}\"\n type=\"button\"\n (click)=\"$event.preventDefault(); $event.stopPropagation(); deselect(selectedItem)\"\n >\n <i c8yIcon=\"times\"></i>\n </button>\n {{ selectedItem.label | translate }}\n </span>\n </ng-container>\n </div>\n </div>\n \n <input\n class=\"form-control text-truncate\"\n type=\"text\"\n autocomplete=\"off\"\n #searchControl\n [ngClass]=\"{\n 'p-absolute': true,\n 'm-r-80': canDeselect && selected.length > 0,\n 'm-r-40': !canDeselect || selected.length === 0\n }\"\n [required]=\"required\"\n (blur)=\"doBlur()\"\n (focus)=\"doFocus()\"\n [name]=\"name\"\n [disabled]=\"disabled\"\n />\n\n <span class=\"input-group-btn\">\n <!-- this button is displayed only if we have something selected and are allowed to deselect -->\n <button\n class=\"btn btn-dot\"\n title=\"{{ 'Deselect' | translate }}\"\n type=\"button\"\n *ngIf=\"canDeselect && selected.length > 0\"\n [disabled]=\"disabled\"\n (click)=\"$event.preventDefault(); $event.stopPropagation(); deselectAll()\"\n >\n <i c8yIcon=\"times\"></i>\n </button>\n <button\n class=\"btn btn-dot\"\n title=\"{{ 'Search' | translate }}\"\n type=\"button\"\n [disabled]=\"disabled\"\n (click)=\"onIconClick.emit({ icon, $event })\"\n data-cy=\"select-button\"\n >\n <i\n class=\"text-primary\"\n [c8yIcon]=\"icon\"\n ></i>\n </button>\n </span>\n </div>\n\n <c8y-list-group\n class=\"dropdown-menu dropdown-menu--modal\"\n [style.width]=\"container === 'body' ? searchControl.parentNode.clientWidth + 'px' : undefined\"\n role=\"menu\"\n data-cy=\"select--dropdown-menu\"\n *dropdownMenu\n >\n <!-- rendering of items (default) -->\n <c8y-li\n style=\"cursor: pointer\"\n *ngFor=\"let item of items\"\n [selectable]=\"true\"\n [dense]=\"true\"\n [active]=\"!multi && item.value === selected[0]?.value\"\n (click)=\"select(item)\"\n >\n <span [attr.data-search-label]=\"item.label | translate\"></span>\n <c8y-li-checkbox\n *ngIf=\"multi\"\n [selected]=\"selected.indexOf(item) > -1\"\n (click)=\"$event.preventDefault();\"\n ></c8y-li-checkbox>\n <c8y-li-body\n *ngIf=\"!item.template\"\n >\n {{ item.label | translate }}\n </c8y-li-body>\n <ng-container\n *ngTemplateOutlet=\"item?.template\"\n ngProjectAs=\"c8y-li-body\"\n ></ng-container>\n </c8y-li>\n <ng-content select=\"div\"></ng-content>\n </c8y-list-group>\n</div>\n" }]
|
|
20834
20939
|
}], ctorParameters: () => [{ type: SelectKeyboardService }], propDecorators: { placeholder: [{
|
|
20835
20940
|
type: Input
|
|
20836
20941
|
}], items: [{
|
|
@@ -20841,6 +20946,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
|
|
|
20841
20946
|
type: Input
|
|
20842
20947
|
}], multi: [{
|
|
20843
20948
|
type: Input
|
|
20949
|
+
}], canSelectWithSpace: [{
|
|
20950
|
+
type: Input
|
|
20844
20951
|
}], disabled: [{
|
|
20845
20952
|
type: Input
|
|
20846
20953
|
}], autoClose: [{
|
|
@@ -22665,7 +22772,9 @@ class ConditionalTabsOutletComponent {
|
|
|
22665
22772
|
ngOnInit() {
|
|
22666
22773
|
this.tabsService.firstTab$.pipe(takeUntil(this.endSubscriptions$)).subscribe((tab) => {
|
|
22667
22774
|
if (tab) {
|
|
22668
|
-
this.router.
|
|
22775
|
+
this.router.navigate(typeof tab.path === 'string' ? [tab.path] : tab.path, {
|
|
22776
|
+
replaceUrl: true
|
|
22777
|
+
});
|
|
22669
22778
|
}
|
|
22670
22779
|
});
|
|
22671
22780
|
}
|
|
@@ -24511,7 +24620,9 @@ class ContextRouteService {
|
|
|
24511
24620
|
redirectToFirstTab() {
|
|
24512
24621
|
const currentContextId = (this.router.url.match(this.ID_REGEX) || []).shift();
|
|
24513
24622
|
if (this.needsRedirect()) {
|
|
24514
|
-
this.tabsService.firstTab
|
|
24623
|
+
this.tabsService.firstTab$
|
|
24624
|
+
.pipe(filter((tab) => typeof tab?.path === 'string'))
|
|
24625
|
+
.subscribe((tab) => {
|
|
24515
24626
|
const tabPathId = (tab.path.match(this.ID_REGEX) || []).shift();
|
|
24516
24627
|
if (currentContextId === tabPathId) {
|
|
24517
24628
|
this.router.navigateByUrl(tab.path, { replaceUrl: true });
|
|
@@ -24664,7 +24775,9 @@ class ScopedContextRouteService {
|
|
|
24664
24775
|
else {
|
|
24665
24776
|
const currentContextId = (this.router.url.match(this.ID_REGEX) || []).shift();
|
|
24666
24777
|
if (this.needsRedirectLegacy()) {
|
|
24667
|
-
this.tabsService.firstTab
|
|
24778
|
+
this.tabsService.firstTab$
|
|
24779
|
+
.pipe(filter((tab) => typeof tab?.path === 'string'))
|
|
24780
|
+
.subscribe((tab) => {
|
|
24668
24781
|
const tabPathId = (tab.path.match(this.ID_REGEX) || []).shift();
|
|
24669
24782
|
if (currentContextId === tabPathId) {
|
|
24670
24783
|
this.router.navigateByUrl(`${tab.path}${queryParamsSuffix}`, { replaceUrl: true });
|
|
@@ -25249,11 +25362,11 @@ class SupportOutletComponent {
|
|
|
25249
25362
|
this.ui.currentUser.next(currentUserResult.data);
|
|
25250
25363
|
}
|
|
25251
25364
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: SupportOutletComponent, deps: [{ token: AppStateService }, { token: OptionsService }, { token: ModalService }, { token: i1$1.TranslateService }, { token: i1.TenantService }, { token: AlertService }, { token: i1.UserService }, { token: HeaderService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25252
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: SupportOutletComponent, selector: "c8y-support-outlet", ngImport: i0, template: "<button\n class=\"c8y-right-drawer__link sticky-top\"\n [tabindex]=\"tabIndex$ | async\"\n type=\"button\"\n (click)=\"isCollapsed = !isCollapsed\"\n *ngIf=\"isCollapsible\"\n>\n <i c8yIcon=\"c8y-c8y-support\"></i>\n <span class=\"text-bold\">{{ 'Support' | translate }}</span>\n <i\n class=\"m-l-auto\"\n c8yIcon=\"angle-up\"\n [ngClass]=\"{ 'icon-rotate-180': isCollapsed }\"\n ></i>\n</button>\n<div\n class=\"collapse\"\n id=\"collapseSupport\"\n [collapse]=\"isCollapsed\"\n [isAnimated]=\"true\"\n>\n <button\n class=\"c8y-right-drawer__link\"\n title=\"{{ 'Activate support access' | translate }}\"\n [tabindex]=\"tabIndex$ | async\"\n *ngIf=\"!(supportUserEnabled$ | async) && userSupportAvailable\"\n (click)=\"activateSupportAccess()\"\n c8yProductExperience\n [actionName]=\"PRODUCT_EXPERIENCE.QUICK_LINKS.EVENTS.QUICK_LINK_RIGHT_DRAWER\"\n >\n <i\n c8yIcon=\"c8y-c8y-support\"\n *ngIf=\"!isCollapsible\"\n ></i>\n <span\n [class]=\"textClass\"\n title=\"{{ 'Activate support access' | translate }}\"\n >\n {{ 'Activate support access' | translate }}\n </span>\n </button>\n <button\n class=\"c8y-right-drawer__link\"\n title=\"{{ 'Deactivate support access' | translate }}\"\n [tabindex]=\"tabIndex$ | async\"\n *ngIf=\"(supportUserEnabled$ | async) && userSupportAvailable\"\n (click)=\"deactivateSupportAccess()\"\n c8yProductExperience\n [actionName]=\"PRODUCT_EXPERIENCE.QUICK_LINKS.EVENTS.QUICK_LINK_RIGHT_DRAWER\"\n >\n <i\n c8yIcon=\"c8y-c8y-support\"\n *ngIf=\"!isCollapsible\"\n ></i>\n <span\n [class]=\"textClass\"\n title=\"{{ 'Deactivate support access' | translate }}\"\n >\n {{ 'Deactivate support access' | translate }}\n </span>\n </button>\n <a\n class=\"c8y-right-drawer__link\"\n
|
|
25365
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: SupportOutletComponent, selector: "c8y-support-outlet", ngImport: i0, template: "<button\n class=\"c8y-right-drawer__link sticky-top\"\n [tabindex]=\"tabIndex$ | async\"\n type=\"button\"\n (click)=\"isCollapsed = !isCollapsed\"\n *ngIf=\"isCollapsible\"\n>\n <i c8yIcon=\"c8y-c8y-support\"></i>\n <span class=\"text-bold\">{{ 'Support' | translate }}</span>\n <i\n class=\"m-l-auto\"\n c8yIcon=\"angle-up\"\n [ngClass]=\"{ 'icon-rotate-180': isCollapsed }\"\n ></i>\n</button>\n<div\n class=\"collapse\"\n id=\"collapseSupport\"\n [collapse]=\"isCollapsed\"\n [isAnimated]=\"true\"\n>\n <button\n class=\"c8y-right-drawer__link\"\n title=\"{{ 'Activate support access' | translate }}\"\n [tabindex]=\"tabIndex$ | async\"\n *ngIf=\"!(supportUserEnabled$ | async) && userSupportAvailable\"\n (click)=\"activateSupportAccess()\"\n c8yProductExperience\n [actionName]=\"PRODUCT_EXPERIENCE.QUICK_LINKS.EVENTS.QUICK_LINK_RIGHT_DRAWER\"\n [actionData]=\"{ action: PRODUCT_EXPERIENCE.QUICK_LINKS.ACTIONS.ACTIVATE_SUPPORT_ACCESS }\"\n >\n <i\n c8yIcon=\"c8y-c8y-support\"\n *ngIf=\"!isCollapsible\"\n ></i>\n <span\n [class]=\"textClass\"\n title=\"{{ 'Activate support access' | translate }}\"\n >\n {{ 'Activate support access' | translate }}\n </span>\n </button>\n <button\n class=\"c8y-right-drawer__link\"\n title=\"{{ 'Deactivate support access' | translate }}\"\n [tabindex]=\"tabIndex$ | async\"\n *ngIf=\"(supportUserEnabled$ | async) && userSupportAvailable\"\n (click)=\"deactivateSupportAccess()\"\n c8yProductExperience\n [actionName]=\"PRODUCT_EXPERIENCE.QUICK_LINKS.EVENTS.QUICK_LINK_RIGHT_DRAWER\"\n [actionData]=\"{ action: PRODUCT_EXPERIENCE.QUICK_LINKS.ACTIONS.DEACTIVATE_SUPPORT_ACCESS }\"\n >\n <i\n c8yIcon=\"c8y-c8y-support\"\n *ngIf=\"!isCollapsible\"\n ></i>\n <span\n [class]=\"textClass\"\n title=\"{{ 'Deactivate support access' | translate }}\"\n >\n {{ 'Deactivate support access' | translate }}\n </span>\n </button>\n <a\n class=\"c8y-right-drawer__link\"\n title=\"{{ 'Request support' | translate }}\"\n [tabindex]=\"tabIndex$ | async\"\n role=\"button\"\n target=\"_blank\"\n [ngClass]=\"{ 'separator-top': !isCollapsible }\"\n *ngIf=\"supportUrl\"\n rel=\"noopener noreferrer\"\n [href]=\"supportUrl\"\n c8yProductExperience\n [actionName]=\"PRODUCT_EXPERIENCE.QUICK_LINKS.EVENTS.QUICK_LINK_RIGHT_DRAWER\"\n [actionData]=\"{ action: PRODUCT_EXPERIENCE.QUICK_LINKS.ACTIONS.OPEN_SUPPORT_LINK }\"\n >\n <i\n c8yIcon=\"c8y-c8y-support\"\n *ngIf=\"!isCollapsible\"\n ></i>\n <span\n [class]=\"textClass\"\n title=\"{{ 'Request support' | translate }}\"\n >\n {{ 'Request support' | translate }}\n </span>\n </a>\n</div>\n", dependencies: [{ kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$7.CollapseDirective, selector: "[collapse]", inputs: ["display", "isAnimated", "collapse"], outputs: ["collapsed", "collapses", "expanded", "expands"], exportAs: ["bs-collapse"] }, { kind: "directive", type: ProductExperienceDirective, selector: "[c8yProductExperience]", inputs: ["actionName", "actionData", "inherit", "suppressDataOverriding"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }] }); }
|
|
25253
25366
|
}
|
|
25254
25367
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: SupportOutletComponent, decorators: [{
|
|
25255
25368
|
type: Component,
|
|
25256
|
-
args: [{ selector: 'c8y-support-outlet', template: "<button\n class=\"c8y-right-drawer__link sticky-top\"\n [tabindex]=\"tabIndex$ | async\"\n type=\"button\"\n (click)=\"isCollapsed = !isCollapsed\"\n *ngIf=\"isCollapsible\"\n>\n <i c8yIcon=\"c8y-c8y-support\"></i>\n <span class=\"text-bold\">{{ 'Support' | translate }}</span>\n <i\n class=\"m-l-auto\"\n c8yIcon=\"angle-up\"\n [ngClass]=\"{ 'icon-rotate-180': isCollapsed }\"\n ></i>\n</button>\n<div\n class=\"collapse\"\n id=\"collapseSupport\"\n [collapse]=\"isCollapsed\"\n [isAnimated]=\"true\"\n>\n <button\n class=\"c8y-right-drawer__link\"\n title=\"{{ 'Activate support access' | translate }}\"\n [tabindex]=\"tabIndex$ | async\"\n *ngIf=\"!(supportUserEnabled$ | async) && userSupportAvailable\"\n (click)=\"activateSupportAccess()\"\n c8yProductExperience\n [actionName]=\"PRODUCT_EXPERIENCE.QUICK_LINKS.EVENTS.QUICK_LINK_RIGHT_DRAWER\"\n >\n <i\n c8yIcon=\"c8y-c8y-support\"\n *ngIf=\"!isCollapsible\"\n ></i>\n <span\n [class]=\"textClass\"\n title=\"{{ 'Activate support access' | translate }}\"\n >\n {{ 'Activate support access' | translate }}\n </span>\n </button>\n <button\n class=\"c8y-right-drawer__link\"\n title=\"{{ 'Deactivate support access' | translate }}\"\n [tabindex]=\"tabIndex$ | async\"\n *ngIf=\"(supportUserEnabled$ | async) && userSupportAvailable\"\n (click)=\"deactivateSupportAccess()\"\n c8yProductExperience\n [actionName]=\"PRODUCT_EXPERIENCE.QUICK_LINKS.EVENTS.QUICK_LINK_RIGHT_DRAWER\"\n >\n <i\n c8yIcon=\"c8y-c8y-support\"\n *ngIf=\"!isCollapsible\"\n ></i>\n <span\n [class]=\"textClass\"\n title=\"{{ 'Deactivate support access' | translate }}\"\n >\n {{ 'Deactivate support access' | translate }}\n </span>\n </button>\n <a\n class=\"c8y-right-drawer__link\"\n
|
|
25369
|
+
args: [{ selector: 'c8y-support-outlet', template: "<button\n class=\"c8y-right-drawer__link sticky-top\"\n [tabindex]=\"tabIndex$ | async\"\n type=\"button\"\n (click)=\"isCollapsed = !isCollapsed\"\n *ngIf=\"isCollapsible\"\n>\n <i c8yIcon=\"c8y-c8y-support\"></i>\n <span class=\"text-bold\">{{ 'Support' | translate }}</span>\n <i\n class=\"m-l-auto\"\n c8yIcon=\"angle-up\"\n [ngClass]=\"{ 'icon-rotate-180': isCollapsed }\"\n ></i>\n</button>\n<div\n class=\"collapse\"\n id=\"collapseSupport\"\n [collapse]=\"isCollapsed\"\n [isAnimated]=\"true\"\n>\n <button\n class=\"c8y-right-drawer__link\"\n title=\"{{ 'Activate support access' | translate }}\"\n [tabindex]=\"tabIndex$ | async\"\n *ngIf=\"!(supportUserEnabled$ | async) && userSupportAvailable\"\n (click)=\"activateSupportAccess()\"\n c8yProductExperience\n [actionName]=\"PRODUCT_EXPERIENCE.QUICK_LINKS.EVENTS.QUICK_LINK_RIGHT_DRAWER\"\n [actionData]=\"{ action: PRODUCT_EXPERIENCE.QUICK_LINKS.ACTIONS.ACTIVATE_SUPPORT_ACCESS }\"\n >\n <i\n c8yIcon=\"c8y-c8y-support\"\n *ngIf=\"!isCollapsible\"\n ></i>\n <span\n [class]=\"textClass\"\n title=\"{{ 'Activate support access' | translate }}\"\n >\n {{ 'Activate support access' | translate }}\n </span>\n </button>\n <button\n class=\"c8y-right-drawer__link\"\n title=\"{{ 'Deactivate support access' | translate }}\"\n [tabindex]=\"tabIndex$ | async\"\n *ngIf=\"(supportUserEnabled$ | async) && userSupportAvailable\"\n (click)=\"deactivateSupportAccess()\"\n c8yProductExperience\n [actionName]=\"PRODUCT_EXPERIENCE.QUICK_LINKS.EVENTS.QUICK_LINK_RIGHT_DRAWER\"\n [actionData]=\"{ action: PRODUCT_EXPERIENCE.QUICK_LINKS.ACTIONS.DEACTIVATE_SUPPORT_ACCESS }\"\n >\n <i\n c8yIcon=\"c8y-c8y-support\"\n *ngIf=\"!isCollapsible\"\n ></i>\n <span\n [class]=\"textClass\"\n title=\"{{ 'Deactivate support access' | translate }}\"\n >\n {{ 'Deactivate support access' | translate }}\n </span>\n </button>\n <a\n class=\"c8y-right-drawer__link\"\n title=\"{{ 'Request support' | translate }}\"\n [tabindex]=\"tabIndex$ | async\"\n role=\"button\"\n target=\"_blank\"\n [ngClass]=\"{ 'separator-top': !isCollapsible }\"\n *ngIf=\"supportUrl\"\n rel=\"noopener noreferrer\"\n [href]=\"supportUrl\"\n c8yProductExperience\n [actionName]=\"PRODUCT_EXPERIENCE.QUICK_LINKS.EVENTS.QUICK_LINK_RIGHT_DRAWER\"\n [actionData]=\"{ action: PRODUCT_EXPERIENCE.QUICK_LINKS.ACTIONS.OPEN_SUPPORT_LINK }\"\n >\n <i\n c8yIcon=\"c8y-c8y-support\"\n *ngIf=\"!isCollapsible\"\n ></i>\n <span\n [class]=\"textClass\"\n title=\"{{ 'Request support' | translate }}\"\n >\n {{ 'Request support' | translate }}\n </span>\n </a>\n</div>\n" }]
|
|
25257
25370
|
}], ctorParameters: () => [{ type: AppStateService }, { type: OptionsService }, { type: ModalService }, { type: i1$1.TranslateService }, { type: i1.TenantService }, { type: AlertService }, { type: i1.UserService }, { type: HeaderService }] });
|
|
25258
25371
|
|
|
25259
25372
|
class SupportOutletModule {
|
|
@@ -33608,7 +33721,7 @@ class SelectModalComponent {
|
|
|
33608
33721
|
provide: PRODUCT_EXPERIENCE_EVENT_SOURCE,
|
|
33609
33722
|
useExisting: forwardRef(() => SelectModalComponent)
|
|
33610
33723
|
}
|
|
33611
|
-
], usesOnChanges: true, ngImport: i0, template: "<div class=\"viewport-modal\">\n <div class=\"modal-header dialog-header\">\n <i [c8yIcon]=\"icon\"></i>\n <h1\n class=\"h3\"\n id=\"modal-title\"\n >\n {{ title | translate }}\n </h1>\n </div>\n <div class=\"p-16 text-center separator-bottom min-height-fit\">\n <p class=\"m-b-8\">{{ subTitle | translate }}</p>\n <div class=\"row\">\n <div\n *ngIf=\"showFilter\"\n [ngClass]=\"{\n 'col-xs-6': showFilter && additionalFilterTemplate,\n 'col-xs-12': !showFilter || !additionalFilterTemplate\n }\"\n >\n <c8y-filter\n [icon]=\"'search'\"\n (onSearch)=\"updatePipe($event)\"\n ></c8y-filter>\n </div>\n <div\n *ngIf=\"additionalFilterTemplate\"\n [ngClass]=\"{\n 'col-xs-6': showFilter && additionalFilterTemplate,\n 'col-xs-12': !showFilter || !additionalFilterTemplate\n }\"\n >\n <ng-container *ngTemplateOutlet=\"additionalFilterTemplate\"></ng-container>\n </div>\n </div>\n </div>\n <div\n class=\"modal-inner-scroll\"\n id=\"modal-body\"\n >\n <div class=\"p-l-16 p-r-16\">\n <div\n class=\"panel m-t-8 m-b-8\"\n *ngIf=\"!items || items.length === 0 || (emptyItemsOnly && hideEmptyItems)\"\n >\n <div class=\"c8y-empty-state text-left\">\n <h1\n class=\"c8y-icon-duocolor\"\n c8yIcon=\"{{ icon }} \"\n ></h1>\n <p>{{ (noItemsMessage | translate) ?? 'No items to display.' | translate }}</p>\n </div>\n </div>\n </div>\n <c8y-list-group>\n <ng-container *ngFor=\"let item of listItems | selectModalFilterPipe : filterTerm\">\n <c8y-li *ngIf=\"item.options?.length > 0 || !hideEmptyItems\">\n <c8y-li-icon>\n <i c8yIcon=\"{{ icon }}\"></i>\n </c8y-li-icon>\n\n <c8y-li-body class=\"content-flex-30\">\n <div class=\"col-9\">\n <div\n *ngFor=\"let bodyPart of item.body\"\n [ngClass]=\"bodyPart.class\"\n >\n <c8y-highlight\n [title]=\"bodyPart.value\"\n [pattern]=\"filterTerm\"\n [text]=\"bodyPart.value\"\n ></c8y-highlight>\n </div>\n </div>\n\n <div\n class=\"col-3 text-right\"\n *ngIf=\"item.additionalInformation\"\n >\n <div [ngClass]=\"item.additionalInformation.class\">\n {{ item.additionalInformation.value }}\n </div>\n </div>\n </c8y-li-body>\n\n <c8y-li-collapse *ngIf=\"item.options?.length > 0\">\n <c8y-list-group>\n <c8y-li *ngFor=\"let option of item.options\">\n <c8y-li-radio\n [name]=\"mode === 'single' ? 'single' : item.groupId\"\n (onSelect)=\"updateChoice({ item: item, id: option.obj.id })\"\n [disabled]=\"option.disabled\"\n [selected]=\"option.selected\"\n ></c8y-li-radio>\n <c8y-li-body class=\"content-flex-20\">\n <div\n *ngFor=\"let optionPart of option.body; let i = index\"\n [ngClass]=\"optionPart.class\"\n >\n <c8y-highlight\n [pattern]=\"filterTerm\"\n [text]=\"optionPart.value\"\n ></c8y-highlight>\n </div>\n <ng-container\n *ngIf=\"option.template\"\n [ngTemplateOutlet]=\"option.template\"\n [ngTemplateOutletContext]=\"{ $implicit: item, option: option }\"\n ></ng-container>\n </c8y-li-body>\n </c8y-li>\n </c8y-list-group>\n </c8y-li-collapse>\n </c8y-li>\n </ng-container>\n <div *ngIf=\"areMoreEntries\">\n <div\n class=\"alert alert-info m-t-16 m-r-8 m-l-8\"\n translate\n >\n Some entries might not be shown. Try narrowing search criteria.\n </div>\n </div>\n </c8y-list-group>\n </div>\n\n <div class=\"modal-footer\">\n <button\n class=\"btn btn-default\"\n title=\"{{ labels.cancel | translate }}\"\n type=\"button\"\n data-cy=\"select-modal--Cancel-button\"\n *ngIf=\"labels.cancel\"\n (click)=\"dismiss()\"\n c8yProductExperience\n inherit\n [actionData]=\"{ result: labels.cancel }\"\n >\n {{ labels.cancel | translate }}\n </button>\n <button\n class=\"btn btn-primary\"\n title=\"{{ labels.ok | translate }}\"\n type=\"button\"\n data-cy=\"select-modal--Save-button\"\n (click)=\"select()\"\n [disabled]=\"!selected\"\n c8yProductExperience\n inherit\n [actionData]=\"{ result: labels.ok }\"\n >\n {{ labels.ok | translate }}\n </button>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ListGroupComponent, selector: "c8y-list-group" }, { kind: "component", type: ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "highlighted", "emptyActions", "dense", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { 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: 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: "component", type: HighlightComponent, selector: "c8y-highlight", inputs: ["pattern", "text", "elementClass", "shouldTrimPattern"] }, { kind: "component", type: FilterInputComponent, selector: "c8y-filter", inputs: ["icon"], outputs: ["onSearch"] }, { kind: "directive", type: ProductExperienceDirective, selector: "[c8yProductExperience]", inputs: ["actionName", "actionData", "inherit", "suppressDataOverriding"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: SelectModalFilterPipe, name: "selectModalFilterPipe" }] }); }
|
|
33724
|
+
], usesOnChanges: true, ngImport: i0, template: "<div class=\"viewport-modal\">\n <div class=\"modal-header dialog-header\">\n <i [c8yIcon]=\"icon\"></i>\n <h1\n class=\"h3\"\n id=\"modal-title\"\n >\n {{ title | translate }}\n </h1>\n </div>\n <div class=\"p-16 text-center separator-bottom min-height-fit\">\n <p class=\"m-b-8\">{{ subTitle | translate }}</p>\n <div class=\"row\">\n <div\n *ngIf=\"showFilter\"\n [ngClass]=\"{\n 'col-xs-6': showFilter && additionalFilterTemplate,\n 'col-xs-12': !showFilter || !additionalFilterTemplate\n }\"\n >\n <c8y-filter\n [icon]=\"'search'\"\n (onSearch)=\"updatePipe($event)\"\n ></c8y-filter>\n </div>\n <div\n *ngIf=\"additionalFilterTemplate\"\n [ngClass]=\"{\n 'col-xs-6': showFilter && additionalFilterTemplate,\n 'col-xs-12': !showFilter || !additionalFilterTemplate\n }\"\n >\n <ng-container *ngTemplateOutlet=\"additionalFilterTemplate\"></ng-container>\n </div>\n </div>\n </div>\n <div\n class=\"modal-inner-scroll\"\n id=\"modal-body\"\n >\n <div class=\"p-l-16 p-r-16\">\n <div\n class=\"panel m-t-8 m-b-8\"\n *ngIf=\"!items || items.length === 0 || (emptyItemsOnly && hideEmptyItems)\"\n >\n <div class=\"c8y-empty-state text-left\">\n <h1\n class=\"c8y-icon-duocolor\"\n c8yIcon=\"{{ icon }} \"\n ></h1>\n <p>{{ (noItemsMessage | translate) ?? 'No items to display.' | translate }}</p>\n </div>\n </div>\n </div>\n <c8y-list-group>\n <ng-container *ngFor=\"let item of listItems | selectModalFilterPipe : filterTerm\">\n <c8y-li *ngIf=\"item.options?.length > 0 || !hideEmptyItems\">\n <c8y-li-icon>\n <i c8yIcon=\"{{ icon }}\"></i>\n </c8y-li-icon>\n\n <c8y-li-body class=\"content-flex-30\">\n <div class=\"col-9\">\n <div\n *ngFor=\"let bodyPart of item.body\"\n [ngClass]=\"bodyPart.class\"\n >\n <c8y-highlight\n [title]=\"bodyPart.value\"\n [pattern]=\"filterTerm\"\n [text]=\"bodyPart.value\"\n ></c8y-highlight>\n </div>\n </div>\n\n <div\n class=\"col-3 text-right\"\n *ngIf=\"item.additionalInformation\"\n >\n <div [ngClass]=\"item.additionalInformation.class\">\n {{ item.additionalInformation.value }}\n </div>\n </div>\n </c8y-li-body>\n\n <c8y-li-collapse *ngIf=\"item.options?.length > 0\">\n <c8y-list-group>\n <c8y-li *ngFor=\"let option of item.options\">\n <c8y-li-radio\n [name]=\"mode === 'single' ? 'single' : item.groupId\"\n (onSelect)=\"updateChoice({ item: item, id: option.obj.id })\"\n [disabled]=\"option.disabled\"\n [selected]=\"option.selected\"\n ></c8y-li-radio>\n <c8y-li-body class=\"content-flex-20\">\n <div\n *ngFor=\"let optionPart of option.body; let i = index\"\n [ngClass]=\"optionPart.class\"\n >\n <c8y-highlight\n [pattern]=\"filterTerm\"\n [text]=\"optionPart.value\"\n ></c8y-highlight>\n </div>\n <ng-container\n *ngIf=\"option.template\"\n [ngTemplateOutlet]=\"option.template\"\n [ngTemplateOutletContext]=\"{ $implicit: item, option: option }\"\n ></ng-container>\n </c8y-li-body>\n </c8y-li>\n </c8y-list-group>\n </c8y-li-collapse>\n </c8y-li>\n </ng-container>\n <div *ngIf=\"areMoreEntries\">\n <div\n class=\"alert alert-info m-t-16 m-r-8 m-l-8\"\n translate\n >\n Some entries might not be shown. Try narrowing search criteria.\n </div>\n </div>\n </c8y-list-group>\n </div>\n\n <div class=\"modal-footer\">\n <button\n class=\"btn btn-default\"\n title=\"{{ labels.cancel | translate }}\"\n type=\"button\"\n data-cy=\"select-modal--Cancel-button\"\n *ngIf=\"labels.cancel\"\n (click)=\"dismiss()\"\n c8yProductExperience\n inherit\n [actionData]=\"{ result: labels.cancel }\"\n >\n {{ labels.cancel | translate }}\n </button>\n <button\n class=\"btn btn-primary\"\n title=\"{{ labels.ok | translate }}\"\n type=\"button\"\n data-cy=\"select-modal--Save-button\"\n (click)=\"select()\"\n [disabled]=\"!selected\"\n c8yProductExperience\n inherit\n [actionData]=\"{ result: labels.ok }\"\n >\n {{ labels.ok | translate }}\n </button>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ListGroupComponent, selector: "c8y-list-group" }, { kind: "component", type: ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "highlighted", "emptyActions", "dense", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { 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: 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: "component", type: HighlightComponent, selector: "c8y-highlight", inputs: ["pattern", "text", "elementClass", "shouldTrimPattern"] }, { kind: "component", type: FilterInputComponent, selector: "c8y-filter", inputs: ["icon", "filterTerm"], outputs: ["onSearch"] }, { kind: "directive", type: ProductExperienceDirective, selector: "[c8yProductExperience]", inputs: ["actionName", "actionData", "inherit", "suppressDataOverriding"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: SelectModalFilterPipe, name: "selectModalFilterPipe" }] }); }
|
|
33612
33725
|
}
|
|
33613
33726
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: SelectModalComponent, decorators: [{
|
|
33614
33727
|
type: Component,
|