@c8y/ngx-components 1022.35.1 → 1022.44.7
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/actility-device-registration/actility-device-registration.component.d.ts.map +1 -1
- package/actility-device-registration/actility-device-registration.service.d.ts.map +1 -1
- package/alarms/alarm-details.component.d.ts.map +1 -1
- package/alarms/alarm-info.component.d.ts.map +1 -1
- package/alarms/alarm-severity-to-icon-class.pipe.d.ts +9 -0
- package/alarms/alarm-severity-to-icon-class.pipe.d.ts.map +1 -0
- package/alarms/alarms-icon.component.d.ts.map +1 -1
- package/alarms/alarms-interval-refresh.component.d.ts.map +1 -1
- package/alarms/alarms-list.component.d.ts.map +1 -1
- package/alarms/alarms-view.service.d.ts.map +1 -1
- package/alarms/alarms.component.d.ts.map +1 -1
- package/alarms/alarms.helper.d.ts.map +1 -1
- package/alarms/alarms.model.d.ts.map +1 -1
- package/alarms/cockpit/index.d.ts.map +1 -1
- package/alarms/devicemanagement/index.d.ts.map +1 -1
- package/alarms/index.d.ts +1 -0
- package/alarms/index.d.ts.map +1 -1
- package/asset-properties/asset-properties.model.d.ts +77 -1
- package/asset-properties/asset-properties.model.d.ts.map +1 -1
- package/asset-properties/asset-properties.service.d.ts +17 -0
- package/asset-properties/asset-properties.service.d.ts.map +1 -1
- package/asset-properties/asset-property-list/asset-property-collapse-button-title.pipe.d.ts +14 -0
- package/asset-properties/asset-property-list/asset-property-collapse-button-title.pipe.d.ts.map +1 -0
- package/asset-properties/asset-property-list/asset-property-icon.pipe.d.ts +2 -1
- package/asset-properties/asset-property-list/asset-property-icon.pipe.d.ts.map +1 -1
- package/asset-properties/asset-property-list/asset-property-list.component.d.ts +52 -13
- package/asset-properties/asset-property-list/asset-property-list.component.d.ts.map +1 -1
- package/asset-properties/asset-property-list/asset-property-value.pipe.d.ts +7 -3
- package/asset-properties/asset-property-list/asset-property-value.pipe.d.ts.map +1 -1
- package/asset-properties/asset-property-list/tree-data-source.d.ts +1 -0
- package/asset-properties/asset-property-list/tree-data-source.d.ts.map +1 -1
- package/asset-properties/asset-property-selector-drawer/asset-property-selector-drawer.component.d.ts.map +1 -1
- package/asset-properties/computed-properties-config/computed-properties-config.component.d.ts +39 -0
- package/asset-properties/computed-properties-config/computed-properties-config.component.d.ts.map +1 -0
- package/asset-properties/computed-properties.service.d.ts +27 -0
- package/asset-properties/computed-properties.service.d.ts.map +1 -0
- package/asset-properties/custom-properties-drawer/custom-properties-drawer.component.d.ts +11 -6
- package/asset-properties/custom-properties-drawer/custom-properties-drawer.component.d.ts.map +1 -1
- package/asset-properties/custom-properties-drawer.service.d.ts +2 -1
- package/asset-properties/custom-properties-drawer.service.d.ts.map +1 -1
- package/asset-properties/index.d.ts +1 -0
- package/asset-properties/index.d.ts.map +1 -1
- package/assets-navigator/asset-node.d.ts.map +1 -1
- package/assets-navigator/asset-node.service.d.ts.map +1 -1
- package/assets-navigator/asset-selector/asset-selector-node.component.d.ts.map +1 -1
- package/assets-navigator/asset-selector/asset-selector.model.d.ts +1 -2
- package/assets-navigator/asset-selector/asset-selector.model.d.ts.map +1 -1
- package/assets-navigator/asset-selector/miller-view.component.d.ts +17 -5
- package/assets-navigator/asset-selector/miller-view.component.d.ts.map +1 -1
- package/assets-navigator/asset-selector/unassigned-devices-node.d.ts.map +1 -1
- package/assets-navigator/load-more-node.d.ts.map +1 -1
- package/auth-configuration/basic-settings/login-settings.component.d.ts.map +1 -1
- package/auth-configuration/basic-settings/session-configuration.component.d.ts.map +1 -1
- package/auth-configuration/factories/navigation.factory.d.ts.map +1 -1
- package/auth-configuration/factories/tabs.factory.d.ts.map +1 -1
- package/auth-configuration/sso-configuration/sso-configuration.component.d.ts.map +1 -1
- package/auth-configuration/sso-configuration/template-parts/access-mapping/inventory-roles-modal.component.d.ts.map +1 -1
- package/auth-configuration/sso-configuration/template-parts/signature-configuration.component.d.ts.map +1 -1
- package/auth-configuration/sso-configuration/template-parts/user-data-mapping.component.d.ts.map +1 -1
- package/binary-file-download/binary-file-download.service.d.ts.map +1 -1
- package/bookmarks/bookmarks.component.d.ts.map +1 -1
- package/bookmarks/bookmarks.service.d.ts.map +1 -1
- package/bookmarks/edit-bookmarks/edit-bookmarks.component.d.ts.map +1 -1
- package/branding/dark-theme/dark-theme-tab.factory.d.ts.map +1 -1
- package/branding/extra-css-branding-editor/extra-css-branding-editor-tab.factory.d.ts.map +1 -1
- package/branding/plain-branding-editor/plain-branding-editor-tab.factory.d.ts.map +1 -1
- package/branding/shared/lazy/branding-form/branding-form.component.d.ts.map +1 -1
- package/branding/shared/lazy/branding-import-modal/branding-import-modal.component.d.ts.map +1 -1
- package/branding/shared/lazy/edit-branding-router-outlet/edit-branding-router-outlet.component.d.ts.map +1 -1
- package/cockpit-config/cockpit-config.guard.d.ts.map +1 -1
- package/cockpit-config/cockpit-configuration.component.d.ts.map +1 -1
- package/computed-asset-properties/alarm-count/alarm-count-3-months-computed-property.d.ts +8 -0
- package/computed-asset-properties/alarm-count/alarm-count-3-months-computed-property.d.ts.map +1 -0
- package/computed-asset-properties/alarm-count/alarm-count-config.component.d.ts +26 -0
- package/computed-asset-properties/alarm-count/alarm-count-config.component.d.ts.map +1 -0
- package/computed-asset-properties/alarm-count/alarm-count-today-computed-property.d.ts +8 -0
- package/computed-asset-properties/alarm-count/alarm-count-today-computed-property.d.ts.map +1 -0
- package/computed-asset-properties/alarm-count/alarm-count-value.d.ts +17 -0
- package/computed-asset-properties/alarm-count/alarm-count-value.d.ts.map +1 -0
- package/computed-asset-properties/alarm-count/alarm-count.model.d.ts +6 -0
- package/computed-asset-properties/alarm-count/alarm-count.model.d.ts.map +1 -0
- package/computed-asset-properties/c8y-ngx-components-computed-asset-properties.d.ts.map +1 -0
- package/computed-asset-properties/child-count/child-assets-count-computed-property.d.ts +14 -0
- package/computed-asset-properties/child-count/child-assets-count-computed-property.d.ts.map +1 -0
- package/computed-asset-properties/child-count/child-count-value.d.ts +14 -0
- package/computed-asset-properties/child-count/child-count-value.d.ts.map +1 -0
- package/computed-asset-properties/child-count/child-devices-count-computed-property.d.ts +14 -0
- package/computed-asset-properties/child-count/child-devices-count-computed-property.d.ts.map +1 -0
- package/computed-asset-properties/common/realtime-value-base.d.ts +32 -0
- package/computed-asset-properties/common/realtime-value-base.d.ts.map +1 -0
- package/computed-asset-properties/common/realtime-value-handler.d.ts +19 -0
- package/computed-asset-properties/common/realtime-value-handler.d.ts.map +1 -0
- package/computed-asset-properties/configuration-snapshot/configuration-snapshot-computed-property.d.ts +7 -0
- package/computed-asset-properties/configuration-snapshot/configuration-snapshot-computed-property.d.ts.map +1 -0
- package/computed-asset-properties/configuration-snapshot/configuration-snapshot-config.component.d.ts +21 -0
- package/computed-asset-properties/configuration-snapshot/configuration-snapshot-config.component.d.ts.map +1 -0
- package/computed-asset-properties/configuration-snapshot/configuration-snapshot.model.d.ts +8 -0
- package/computed-asset-properties/configuration-snapshot/configuration-snapshot.model.d.ts.map +1 -0
- package/computed-asset-properties/event-count/event-count-3-months.d.ts +8 -0
- package/computed-asset-properties/event-count/event-count-3-months.d.ts.map +1 -0
- package/computed-asset-properties/event-count/event-count-config.component.d.ts +18 -0
- package/computed-asset-properties/event-count/event-count-config.component.d.ts.map +1 -0
- package/computed-asset-properties/event-count/event-count-today.d.ts +8 -0
- package/computed-asset-properties/event-count/event-count-today.d.ts.map +1 -0
- package/computed-asset-properties/event-count/event-count-value.d.ts +17 -0
- package/computed-asset-properties/event-count/event-count-value.d.ts.map +1 -0
- package/computed-asset-properties/event-count/event-count.model.d.ts +4 -0
- package/computed-asset-properties/event-count/event-count.model.d.ts.map +1 -0
- package/computed-asset-properties/index.d.ts +3 -0
- package/computed-asset-properties/index.d.ts.map +1 -0
- package/computed-asset-properties/last-device-message/last-device-message-computed-property.d.ts +3 -0
- package/computed-asset-properties/last-device-message/last-device-message-computed-property.d.ts.map +1 -0
- package/computed-asset-properties/last-device-message/last-device-message-value.d.ts +13 -0
- package/computed-asset-properties/last-device-message/last-device-message-value.d.ts.map +1 -0
- package/computed-asset-properties/last-measurement/last-measurement-computed-property.d.ts +8 -0
- package/computed-asset-properties/last-measurement/last-measurement-computed-property.d.ts.map +1 -0
- package/computed-asset-properties/last-measurement/last-measurement-config.component.d.ts +48 -0
- package/computed-asset-properties/last-measurement/last-measurement-config.component.d.ts.map +1 -0
- package/computed-asset-properties/last-measurement/last-measurement-value.d.ts +13 -0
- package/computed-asset-properties/last-measurement/last-measurement-value.d.ts.map +1 -0
- package/computed-asset-properties/last-measurement/last-measurement.model.d.ts +28 -0
- package/computed-asset-properties/last-measurement/last-measurement.model.d.ts.map +1 -0
- package/computed-asset-properties/strategies/alarm-count-strategy.d.ts +17 -0
- package/computed-asset-properties/strategies/alarm-count-strategy.d.ts.map +1 -0
- package/computed-asset-properties/strategies/child-count-strategy.d.ts +14 -0
- package/computed-asset-properties/strategies/child-count-strategy.d.ts.map +1 -0
- package/computed-asset-properties/strategies/count-strategy-base.d.ts +12 -0
- package/computed-asset-properties/strategies/count-strategy-base.d.ts.map +1 -0
- package/computed-asset-properties/strategies/event-count-strategy.d.ts +16 -0
- package/computed-asset-properties/strategies/event-count-strategy.d.ts.map +1 -0
- package/computed-asset-properties/strategies/last-device-message-strategy.d.ts +20 -0
- package/computed-asset-properties/strategies/last-device-message-strategy.d.ts.map +1 -0
- package/computed-asset-properties/strategies/last-measurement-strategy.d.ts +16 -0
- package/computed-asset-properties/strategies/last-measurement-strategy.d.ts.map +1 -0
- package/connectivity/abstract-connectivity-node.factory.d.ts.map +1 -1
- package/connectivity/actility/actility-tab.factory.d.ts.map +1 -1
- package/connectivity/sigfox/sigfox-tab.factory.d.ts.map +1 -1
- package/connectivity/sim/sim.module.d.ts.map +1 -1
- package/context-dashboard/cockpit-home-dashboard/cockpit-dashboard.component.d.ts.map +1 -1
- package/context-dashboard/cockpit-home-dashboard/cockpit-dashboard.model.d.ts.map +1 -1
- package/context-dashboard/cockpit-home-dashboard/cockpit-dashboard.module.d.ts.map +1 -1
- package/context-dashboard/context-dashboard.component.d.ts.map +1 -1
- package/context-dashboard/context-dashboard.model.d.ts +16 -0
- package/context-dashboard/context-dashboard.model.d.ts.map +1 -1
- package/context-dashboard/context-dashboard.service.d.ts.map +1 -1
- package/context-dashboard/dashboard-detail.component.d.ts.map +1 -1
- package/context-dashboard/dashboard-detail.service.d.ts.map +1 -1
- package/context-dashboard/dashboard-details-tabs.factory.d.ts.map +1 -1
- package/context-dashboard/dashboard-settings/dashboard-general-settings.component.d.ts.map +1 -1
- package/context-dashboard/dashboard-settings/dashboard-version-history.component.d.ts.map +1 -1
- package/context-dashboard/dashboard-settings/typed-dashboard-settings.component.d.ts.map +1 -1
- package/context-dashboard/device-info-dashboard/device-info-dashboard.component.d.ts.map +1 -1
- package/context-dashboard/device-info-dashboard/device-info-dashboard.module.d.ts.map +1 -1
- package/context-dashboard/device-management-home-dashboard/device-management-home-dashboard.component.d.ts.map +1 -1
- package/context-dashboard/device-management-home-dashboard/device-management-home-dashboard.module.d.ts.map +1 -1
- package/context-dashboard/new-dashboard.guard.d.ts.map +1 -1
- package/context-dashboard/widget-config/appearance-settings.component.d.ts.map +1 -1
- package/context-dashboard/widget-config.service.d.ts +11 -1
- package/context-dashboard/widget-config.service.d.ts.map +1 -1
- package/core/action/action.service.d.ts +1 -1
- package/core/action-bar/action-bar.service.d.ts +1 -1
- package/core/authentication/simplified-auth.service.d.ts +1 -1
- package/core/authentication/simplified-auth.service.d.ts.map +1 -1
- package/core/bottom-drawer/bottom-drawer.component.d.ts +16 -2
- package/core/bottom-drawer/bottom-drawer.component.d.ts.map +1 -1
- package/core/bottom-drawer/bottom-drawer.service.d.ts +13 -5
- package/core/bottom-drawer/bottom-drawer.service.d.ts.map +1 -1
- package/core/breadcrumb/breadcrumb.service.d.ts +1 -1
- package/core/common/extension-hooks.d.ts.map +1 -1
- package/core/common/options.service.d.ts +1 -1
- package/core/common/service-registry.service.d.ts +1 -1
- package/core/common/ui-state.service.d.ts +7 -7
- package/core/common/ui-state.service.d.ts.map +1 -1
- package/core/common/user-preferences/user-preferences.service.d.ts +4 -4
- package/core/common/user-preferences/user-preferences.service.d.ts.map +1 -1
- package/core/dashboard/widgets-dashboard.component.d.ts +9 -1
- package/core/dashboard/widgets-dashboard.component.d.ts.map +1 -1
- package/core/data-grid/action-controls-extension.service.d.ts +1 -1
- package/core/data-grid/filter-chip/filter-mapper.factory.d.ts +1 -1
- package/core/date-picker/date-picker.component.d.ts.map +1 -1
- package/core/docs/docs.models.d.ts +1 -1
- package/core/docs/docs.module.d.ts +1 -1
- package/core/docs/help-and-support-outlet/help-and-support-outlet.module.d.ts +1 -1
- package/core/docs/legal-notices-outlet/legal-notices-outlet.module.d.ts +1 -1
- package/core/docs/support-outlet/support-outlet.component.d.ts +4 -3
- package/core/docs/support-outlet/support-outlet.component.d.ts.map +1 -1
- package/core/docs/support-outlet/support-outlet.module.d.ts +1 -1
- package/core/drawer/drawer.service.d.ts +1 -1
- package/core/dynamic-component/dynamic-component.model.d.ts +18 -4
- package/core/dynamic-component/dynamic-component.model.d.ts.map +1 -1
- package/core/dynamic-forms/i18n/translate.extension.d.ts.map +1 -1
- package/core/feedback-form/feedback-form.component.d.ts +27 -0
- package/core/feedback-form/feedback-form.component.d.ts.map +1 -0
- package/core/feedback-form/feedback-form.model.d.ts +6 -0
- package/core/feedback-form/feedback-form.model.d.ts.map +1 -0
- package/core/feedback-form/index.d.ts +2 -0
- package/core/feedback-form/index.d.ts.map +1 -0
- package/core/i18n/gettext.d.ts +4 -1
- package/core/i18n/gettext.d.ts.map +1 -1
- package/core/i18n/pattern-messages.data.d.ts +61 -0
- package/core/i18n/pattern-messages.data.d.ts.map +1 -1
- package/core/i18n/patterns-message.hook.d.ts +1 -1
- package/core/index.d.ts +1 -0
- package/core/index.d.ts.map +1 -1
- package/core/modal/modal.service.d.ts +0 -1
- package/core/modal/modal.service.d.ts.map +1 -1
- package/core/navigator/navigator-bottom/navigator-bottom.module.d.ts +1 -1
- package/core/navigator/navigator-top/navigator-top.module.d.ts +1 -1
- package/core/navigator/navigator.module.d.ts +1 -1
- package/core/navigator/navigator.service.d.ts +1 -1
- package/core/plugins/index.d.ts +1 -0
- package/core/plugins/index.d.ts.map +1 -1
- package/core/plugins/plugins-injection-token.d.ts +14 -0
- package/core/plugins/plugins-injection-token.d.ts.map +1 -0
- package/core/plugins/plugins-loader.service.d.ts +7 -21
- package/core/plugins/plugins-loader.service.d.ts.map +1 -1
- package/core/plugins/plugins-resolve.service.d.ts +1 -0
- package/core/plugins/plugins-resolve.service.d.ts.map +1 -1
- package/core/preview-feature/preview-feature.component.d.ts.map +1 -1
- package/core/preview-feature/preview-feature.service.d.ts +1 -1
- package/core/provider-configuration/provider-configuration-hook.d.ts +1 -1
- package/core/query-param-handler/index.d.ts +1 -1
- package/core/query-param-handler/query-param-bottom-drawer.service.d.ts +1 -1
- package/core/query-param-handler/query-param-handler.service.d.ts +1 -1
- package/core/query-param-handler/query-param-modal-handler.service.d.ts +1 -1
- package/core/router/router.service.d.ts +1 -1
- package/core/search/search.service.d.ts +1 -1
- package/core/stepper/stepper.service.d.ts +1 -1
- package/core/tabs/tab.component.d.ts +2 -2
- package/core/tabs/tab.component.d.ts.map +1 -1
- package/core/tabs/tab.model.d.ts +2 -2
- package/core/tabs/tab.model.d.ts.map +1 -1
- package/core/tabs/tabs.service.d.ts +1 -1
- package/core/tabs/tabs.service.d.ts.map +1 -1
- package/core/ui-settings/ui-settings.module.d.ts +1 -1
- package/core/user/change-current-user-password.service.d.ts +10 -0
- package/core/user/change-current-user-password.service.d.ts.map +1 -0
- package/core/user/index.d.ts +1 -0
- package/core/user/index.d.ts.map +1 -1
- package/core/user/user-details-drawer/user-details-drawer.module.d.ts +1 -1
- package/core/user/user-menu.service.d.ts +1 -1
- package/core/user/user.module.d.ts +1 -1
- package/core/version/version.model.d.ts +1 -1
- package/core/version/version.module.d.ts +1 -1
- package/core/wizard/wizard.model.d.ts +1 -1
- package/dashboard-details-advanced-tab/advanced-tab.factory.d.ts.map +1 -1
- package/dashboard-details-advanced-tab/assign-widget-assets/assign-widget-asset-modal.component.d.ts.map +1 -1
- package/dashboard-details-advanced-tab/dashboard-json-editor/dashboard-json-editor.component.d.ts.map +1 -1
- package/dashboard-details-advanced-tab/dashboard-json-editor/import-export-widgets.service.d.ts.map +1 -1
- package/dashboard-manager/dashboard-manager-tabs.factory.d.ts.map +1 -1
- package/dashboard-manager/dashboard-manager.service.d.ts.map +1 -1
- package/dashboard-manager/devicemanagement/index.d.ts +1 -1
- package/dashboard-manager/type-dashboard-target-assets-grid/type-dashboard-target-assets-grid.component.d.ts.map +1 -1
- package/dashboard-manager/type-dashboard-target-assets-modal/type-dashboard-target-assets-modal.component.d.ts.map +1 -1
- package/dashboard-manager/type-dashboards-list/device-type-value.grid-column.d.ts.map +1 -1
- package/dashboard-manager/type-dashboards-list/type-dashboards-list.component.d.ts.map +1 -1
- package/data-grid-columns/asset-type/asset-type-grid-column.d.ts.map +1 -1
- package/data-grid-columns/asset-type/asset-type.cell-renderer.component.d.ts.map +1 -1
- package/datapoint-explorer/datapoint-explorer-navigation-factory.d.ts.map +1 -1
- package/datapoint-explorer/devicemanagement/index.d.ts +3 -0
- package/datapoint-explorer/devicemanagement/index.d.ts.map +1 -1
- package/datapoint-explorer/view/configuration/workspace-configuration.component.d.ts +4 -2
- package/datapoint-explorer/view/configuration/workspace-configuration.component.d.ts.map +1 -1
- package/datapoint-explorer/view/create-new-report-modal/create-new-report-modal.component.d.ts.map +1 -1
- package/datapoint-explorer/view/datapoint-explorer.model.d.ts +1 -0
- package/datapoint-explorer/view/datapoint-explorer.model.d.ts.map +1 -1
- package/datapoint-explorer/view/index.d.ts +3 -0
- package/datapoint-explorer/view/index.d.ts.map +1 -1
- package/datapoint-explorer/view/send-as-widget-to-dashboard-modal/send-as-widget-to-dashboard-modal.component.d.ts.map +1 -1
- package/datapoint-explorer/view/send-as-widget-to-report-modal/send-as-widget-to-report-modal.component.d.ts.map +1 -1
- package/datapoint-library/datapoint-library.module.d.ts.map +1 -1
- package/datapoint-library/details/datapoint-library-details.component.d.ts +1 -2
- package/datapoint-library/details/datapoint-library-details.component.d.ts.map +1 -1
- package/datapoint-library/list/datapoint-library-list.component.d.ts.map +1 -1
- package/datapoint-selector/datapoint-attributes-form/datapoint-attributes-form-validation.service.d.ts.map +1 -1
- package/datapoint-selector/datapoint-selector-modal/datapoint-selector-modal.component.d.ts.map +1 -1
- package/datapoint-selector/datapoint-template-popover/datapoint-template-popover.component.d.ts.map +1 -1
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/data-fetching.service.d.ts.map +1 -1
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-export-selector-file-exporter.service.d.ts.map +1 -1
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-exports-selector-time-range/datapoints-exports-selector-time-range.component.d.ts.map +1 -1
- package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-modal.component.d.ts.map +1 -1
- package/datapoints-export-selector/datapoints-export-selector.model.d.ts.map +1 -1
- package/default-subscriptions/default-subscriptions-navigation.factory.d.ts.map +1 -1
- package/default-subscriptions/default-subscriptions.component.d.ts.map +1 -1
- package/device-grid/columns/alarms.cell-renderer.component.d.ts.map +1 -1
- package/device-grid/columns/alarms.device-grid-column.d.ts.map +1 -1
- package/device-grid/columns/group.device-grid-column.d.ts.map +1 -1
- package/device-grid/columns/imei.device-grid-column.d.ts.map +1 -1
- package/device-grid/columns/model.device-grid-column.d.ts.map +1 -1
- package/device-grid/columns/name.device-grid-column.d.ts.map +1 -1
- package/device-grid/columns/registration-date.device-grid-column.d.ts.map +1 -1
- package/device-grid/columns/serial-number.device-grid-column.d.ts.map +1 -1
- package/device-grid/columns/status.device-grid-column.d.ts.map +1 -1
- package/device-grid/columns/system-id.device-grid-column.d.ts.map +1 -1
- package/device-grid/columns/type.device-grid-column.d.ts.map +1 -1
- package/device-grid/device-grid.component.d.ts.map +1 -1
- package/device-grid/device-grid.service.d.ts.map +1 -1
- package/device-list/add-smart-group.component.d.ts.map +1 -1
- package/device-list/device-list-navigation.factory.d.ts.map +1 -1
- package/device-list/devices.breadcrumb-factory.d.ts.map +1 -1
- package/device-map/device-map-navigation.factory.d.ts.map +1 -1
- package/device-profile/add-device-profile.component.d.ts.map +1 -1
- package/device-profile/device-profile-list.component.d.ts.map +1 -1
- package/device-profile/device-profile-navigation.factory.d.ts.map +1 -1
- package/device-profile/device-profile.component.d.ts.map +1 -1
- package/device-profile/device-profile.service.d.ts.map +1 -1
- package/device-profile/device-tab-profile/device-tab-profile.component.d.ts.map +1 -1
- package/device-profile/select-configuration-modal.component.d.ts.map +1 -1
- package/device-protocols/device-protocols.guard.d.ts.map +1 -1
- package/device-provisioned-certificates/device-provisioned-certificates.module.d.ts.map +1 -1
- package/device-provisioned-certificates/device-tab-provisioned-certificates.component.d.ts.map +1 -1
- package/device-shell/device-shell.module.d.ts.map +1 -1
- package/device-shell/shared/device-shell.service.d.ts.map +1 -1
- package/device-shell/shell/shell.component.d.ts.map +1 -1
- package/diagnostics/diagnostics.module.d.ts.map +1 -1
- package/diagnostics/diagnostics.service.d.ts.map +1 -1
- package/echart/services/echarts-options.service.d.ts +2 -3
- package/echart/services/echarts-options.service.d.ts.map +1 -1
- package/ecosystem/application-plugins/application-plugins.component.d.ts.map +1 -1
- package/ecosystem/application-plugins/application-plugins.module.d.ts.map +1 -1
- package/ecosystem/application-plugins/apps-to-update-remotes-select.component.d.ts.map +1 -1
- package/ecosystem/application-plugins/only-latest-filter/only-latest-filter.component.d.ts.map +1 -1
- package/ecosystem/application-plugins/orphaned-status-cell-renderer.component.d.ts.map +1 -1
- package/ecosystem/application-plugins/plugin-list.service.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/application-properties/application-properties.component.d.ts.map +1 -1
- package/ecosystem/application-properties/subscription-modal/subscription-modal.component.d.ts.map +1 -1
- package/ecosystem/ecosystem-tabs.factory.d.ts.map +1 -1
- package/ecosystem/license-confirm/license-confirm-modal.component.d.ts.map +1 -1
- package/ecosystem/license-confirm/license-view.component.d.ts.map +1 -1
- package/ecosystem/microservices/add-microservice.component.d.ts.map +1 -1
- package/ecosystem/packages/add-package.component.d.ts.map +1 -1
- package/ecosystem/packages/deploy-application/deploy-application.component.d.ts.map +1 -1
- package/ecosystem/packages/package-list/packages-list.component.d.ts.map +1 -1
- package/ecosystem/packages/package-versions/package-versions-list/package-versions-list.component.d.ts.map +1 -1
- package/ecosystem/packages/package-versions/packages-versions.component.d.ts.map +1 -1
- package/ecosystem/plugin-setup-stepper/plugin-setup-stepper.module.d.ts.map +1 -1
- package/ecosystem/shared/add-application.component.d.ts.map +1 -1
- package/ecosystem/shared/application-card.component.d.ts.map +1 -1
- package/ecosystem/shared/archived-filter/archived-filter.component.d.ts.map +1 -1
- package/ecosystem/shared/ecosystem.constants.d.ts.map +1 -1
- package/ecosystem/shared/ecosystem.service.d.ts.map +1 -1
- package/ecosystem/shared/package-availability.service.d.ts.map +1 -1
- package/ecosystem/shared/package-version-select/package-version-select.component.d.ts.map +1 -1
- package/ecosystem/shared/upload-archive.component.d.ts.map +1 -1
- package/editor/editor.component.d.ts +16 -0
- package/editor/editor.component.d.ts.map +1 -1
- package/exports/index.d.ts +1 -1
- package/exports/index.d.ts.map +1 -1
- package/exports/list/exports-grid.service.d.ts.map +1 -1
- package/exports/list/exports-list/exports-list.component.d.ts.map +1 -1
- package/fesm2022/c8y-ngx-components-actility-device-registration.mjs +2 -1
- package/fesm2022/c8y-ngx-components-actility-device-registration.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-alarm-event-selector.mjs +8 -7
- package/fesm2022/c8y-ngx-components-alarm-event-selector.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-alarms-cockpit.mjs +2 -1
- package/fesm2022/c8y-ngx-components-alarms-cockpit.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-alarms-devicemanagement.mjs +2 -1
- package/fesm2022/c8y-ngx-components-alarms-devicemanagement.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-alarms.mjs +40 -2
- package/fesm2022/c8y-ngx-components-alarms.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-asset-properties.mjs +608 -97
- package/fesm2022/c8y-ngx-components-asset-properties.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-asset-property-grid.component-CRnyUbyz.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-assets-navigator.mjs +70 -23
- package/fesm2022/c8y-ngx-components-assets-navigator.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-auth-configuration.mjs +2 -1
- package/fesm2022/c8y-ngx-components-auth-configuration.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-binary-file-download.mjs +2 -1
- package/fesm2022/c8y-ngx-components-binary-file-download.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-bookmarks.mjs +2 -1
- package/fesm2022/c8y-ngx-components-bookmarks.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-branding-dark-theme.mjs +2 -1
- package/fesm2022/c8y-ngx-components-branding-dark-theme.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-branding-extra-css-branding-editor.mjs +3 -3
- package/fesm2022/c8y-ngx-components-branding-extra-css-branding-editor.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-branding-plain-branding-editor.mjs +2 -1
- package/fesm2022/c8y-ngx-components-branding-plain-branding-editor.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-branding-shared-lazy.mjs +22 -12
- package/fesm2022/c8y-ngx-components-branding-shared-lazy.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-child-devices.mjs +2 -1
- package/fesm2022/c8y-ngx-components-child-devices.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-cockpit-config.mjs +2 -1
- package/fesm2022/c8y-ngx-components-cockpit-config.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-computed-asset-properties-alarm-count-config.component-BOpIFCYh.mjs +68 -0
- package/fesm2022/c8y-ngx-components-computed-asset-properties-alarm-count-config.component-BOpIFCYh.mjs.map +1 -0
- package/fesm2022/c8y-ngx-components-computed-asset-properties-configuration-snapshot-config.component-D8otkLI8.mjs +73 -0
- package/fesm2022/c8y-ngx-components-computed-asset-properties-configuration-snapshot-config.component-D8otkLI8.mjs.map +1 -0
- package/fesm2022/c8y-ngx-components-computed-asset-properties-event-count-config.component-AVm6qa9k.mjs +44 -0
- package/fesm2022/c8y-ngx-components-computed-asset-properties-event-count-config.component-AVm6qa9k.mjs.map +1 -0
- package/fesm2022/c8y-ngx-components-computed-asset-properties-last-measurement-config.component-CtUoKGuU.mjs +91 -0
- package/fesm2022/c8y-ngx-components-computed-asset-properties-last-measurement-config.component-CtUoKGuU.mjs.map +1 -0
- package/fesm2022/c8y-ngx-components-computed-asset-properties.mjs +643 -0
- package/fesm2022/c8y-ngx-components-computed-asset-properties.mjs.map +1 -0
- package/fesm2022/c8y-ngx-components-connectivity.mjs +2 -1
- package/fesm2022/c8y-ngx-components-connectivity.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-context-dashboard-cockpit-home-dashboard.mjs +2 -1
- package/fesm2022/c8y-ngx-components-context-dashboard-cockpit-home-dashboard.mjs.map +1 -1
- package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-general-settings.component-DjlpSztw.mjs → c8y-ngx-components-context-dashboard-dashboard-general-settings.component-BkcNSexF.mjs} +3 -2
- package/fesm2022/c8y-ngx-components-context-dashboard-dashboard-general-settings.component-BkcNSexF.mjs.map +1 -0
- package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-version-history.component-B2zLhv0X.mjs → c8y-ngx-components-context-dashboard-dashboard-version-history.component-D9W68e7h.mjs} +3 -2
- package/fesm2022/c8y-ngx-components-context-dashboard-dashboard-version-history.component-D9W68e7h.mjs.map +1 -0
- package/fesm2022/c8y-ngx-components-context-dashboard.mjs +45 -12
- package/fesm2022/c8y-ngx-components-context-dashboard.mjs.map +1 -1
- package/fesm2022/{c8y-ngx-components-dashboard-details-advanced-tab-dashboard-details-advanced-tab.component-CwfVxTSx.mjs → c8y-ngx-components-dashboard-details-advanced-tab-dashboard-details-advanced-tab.component-D0lATUjO.mjs} +12 -8
- package/fesm2022/c8y-ngx-components-dashboard-details-advanced-tab-dashboard-details-advanced-tab.component-D0lATUjO.mjs.map +1 -0
- package/fesm2022/c8y-ngx-components-dashboard-details-advanced-tab.mjs +4 -3
- package/fesm2022/c8y-ngx-components-dashboard-details-advanced-tab.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-dashboard-manager.mjs +2 -1
- package/fesm2022/c8y-ngx-components-dashboard-manager.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-data-broker.mjs +2 -1
- package/fesm2022/c8y-ngx-components-data-broker.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-data-grid-columns-asset-type.mjs +2 -1
- package/fesm2022/c8y-ngx-components-data-grid-columns-asset-type.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-data-grid-columns.mjs +2 -1
- package/fesm2022/c8y-ngx-components-data-grid-columns.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-datapoint-explorer-devicemanagement.mjs +38 -9
- package/fesm2022/c8y-ngx-components-datapoint-explorer-devicemanagement.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-datapoint-explorer-view.mjs +58 -53
- package/fesm2022/c8y-ngx-components-datapoint-explorer-view.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-datapoint-explorer.mjs +2 -1
- package/fesm2022/c8y-ngx-components-datapoint-explorer.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-datapoint-library-details.mjs +2 -1
- package/fesm2022/c8y-ngx-components-datapoint-library-details.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-datapoint-library-list.mjs +2 -1
- package/fesm2022/c8y-ngx-components-datapoint-library-list.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-datapoint-library.mjs +2 -1
- package/fesm2022/c8y-ngx-components-datapoint-library.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-datapoint-selector.mjs +2 -1
- package/fesm2022/c8y-ngx-components-datapoint-selector.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-datapoints-export-selector.mjs +2 -1
- package/fesm2022/c8y-ngx-components-datapoints-export-selector.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-default-subscriptions.mjs +2 -1
- package/fesm2022/c8y-ngx-components-default-subscriptions.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-device-grid.mjs +3 -3
- package/fesm2022/c8y-ngx-components-device-grid.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-device-list.mjs +2 -1
- package/fesm2022/c8y-ngx-components-device-list.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-device-map.mjs +2 -1
- package/fesm2022/c8y-ngx-components-device-map.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-device-profile.mjs +2 -1
- package/fesm2022/c8y-ngx-components-device-profile.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-device-protocol-object-mappings.mjs +3 -2
- package/fesm2022/c8y-ngx-components-device-protocol-object-mappings.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-device-protocols.mjs +2 -1
- package/fesm2022/c8y-ngx-components-device-protocols.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-device-provisioned-certificates.mjs +2 -1
- package/fesm2022/c8y-ngx-components-device-provisioned-certificates.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-device-shell.mjs +2 -1
- package/fesm2022/c8y-ngx-components-device-shell.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-diagnostics.mjs +2 -1
- package/fesm2022/c8y-ngx-components-diagnostics.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-echart.mjs +6 -8
- package/fesm2022/c8y-ngx-components-echart.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-ecosystem-application-plugins.mjs +2 -1
- package/fesm2022/c8y-ngx-components-ecosystem-application-plugins.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-ecosystem-license-confirm.mjs +2 -1
- package/fesm2022/c8y-ngx-components-ecosystem-license-confirm.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-ecosystem-plugin-setup-stepper.mjs +2 -1
- package/fesm2022/c8y-ngx-components-ecosystem-plugin-setup-stepper.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-ecosystem-shared.mjs +2 -1
- package/fesm2022/c8y-ngx-components-ecosystem-shared.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-ecosystem.mjs +2 -1
- package/fesm2022/c8y-ngx-components-ecosystem.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-editor.mjs +39 -1
- package/fesm2022/c8y-ngx-components-editor.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-events.mjs +1 -1
- package/fesm2022/c8y-ngx-components-events.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-exports-list.mjs +2 -1
- package/fesm2022/c8y-ngx-components-exports-list.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-exports.mjs +2 -1
- package/fesm2022/c8y-ngx-components-exports.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-file-preview.mjs +2 -1
- package/fesm2022/c8y-ngx-components-file-preview.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-files-repository.mjs +2 -1
- package/fesm2022/c8y-ngx-components-files-repository.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-icon-selector.mjs +2 -1
- package/fesm2022/c8y-ngx-components-icon-selector.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-location.mjs +2 -1
- package/fesm2022/c8y-ngx-components-location.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-loriot-device-registration.mjs +2 -1
- package/fesm2022/c8y-ngx-components-loriot-device-registration.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-map.mjs +2 -1
- package/fesm2022/c8y-ngx-components-map.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-messaging-management.mjs +2 -1
- package/fesm2022/c8y-ngx-components-messaging-management.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-operations-bulk-operation-list-item.mjs +2 -1
- package/fesm2022/c8y-ngx-components-operations-bulk-operation-list-item.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-operations-bulk-operation-scheduler.mjs +2 -1
- package/fesm2022/c8y-ngx-components-operations-bulk-operation-scheduler.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-operations-bulk-operation-stepper.mjs +2 -1
- package/fesm2022/c8y-ngx-components-operations-bulk-operation-stepper.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-operations-bulk-single-operations-list.mjs +2 -1
- package/fesm2022/c8y-ngx-components-operations-bulk-single-operations-list.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-operations-create-bulk-operation-details.mjs +2 -1
- package/fesm2022/c8y-ngx-components-operations-create-bulk-operation-details.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-operations-grid-columns.mjs +2 -1
- package/fesm2022/c8y-ngx-components-operations-grid-columns.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-operations-operations-list-item-details.mjs +2 -1
- package/fesm2022/c8y-ngx-components-operations-operations-list-item-details.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-operations-operations-list.mjs +2 -1
- package/fesm2022/c8y-ngx-components-operations-operations-list.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-operations-shared.mjs +2 -1
- package/fesm2022/c8y-ngx-components-operations-shared.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-configuration.mjs +4 -4
- package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-configuration.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-device-profile.mjs +4 -4
- package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-device-profile.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-firmware.mjs +4 -4
- package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-firmware.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-software.mjs +4 -4
- package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-software.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-operations.mjs +2 -1
- package/fesm2022/c8y-ngx-components-operations.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-pending-mo-request.mjs +2 -1
- package/fesm2022/c8y-ngx-components-pending-mo-request.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-platform-configuration.mjs +2 -1
- package/fesm2022/c8y-ngx-components-platform-configuration.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-protocol-lpwan.mjs +2 -1
- package/fesm2022/c8y-ngx-components-protocol-lpwan.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-protocol-opcua-mappings.mjs +1 -1
- package/fesm2022/c8y-ngx-components-protocol-opcua-mappings.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-protocol-opcua.mjs +2 -1
- package/fesm2022/c8y-ngx-components-protocol-opcua.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-register-device.mjs +2 -1
- package/fesm2022/c8y-ngx-components-register-device.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-remote-access-configurations.mjs +3 -3
- package/fesm2022/c8y-ngx-components-remote-access-configurations.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-remote-access-passthrough.mjs +2 -1
- package/fesm2022/c8y-ngx-components-remote-access-passthrough.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-remote-access-shared.mjs +2 -1
- package/fesm2022/c8y-ngx-components-remote-access-shared.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-remote-access-ssh.mjs +2 -1
- package/fesm2022/c8y-ngx-components-remote-access-ssh.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-remote-access-telnet.mjs +2 -1
- package/fesm2022/c8y-ngx-components-remote-access-telnet.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-remote-access-vnc-vnc-viewer.mjs +3 -3
- package/fesm2022/c8y-ngx-components-remote-access-vnc-vnc-viewer.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-remote-access-vnc.mjs +2 -1
- package/fesm2022/c8y-ngx-components-remote-access-vnc.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-replace-device-replace-device-wizard.mjs +2 -1
- package/fesm2022/c8y-ngx-components-replace-device-replace-device-wizard.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-replace-device.mjs +2 -1
- package/fesm2022/c8y-ngx-components-replace-device.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-report-dashboard.mjs +2 -1
- package/fesm2022/c8y-ngx-components-report-dashboard.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-reports.mjs +2 -1
- package/fesm2022/c8y-ngx-components-reports.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-repository-configuration.mjs +2 -1
- package/fesm2022/c8y-ngx-components-repository-configuration.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-repository-firmware.mjs +2 -1
- package/fesm2022/c8y-ngx-components-repository-firmware.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-repository-shared.mjs +3 -2
- package/fesm2022/c8y-ngx-components-repository-shared.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-repository-software.mjs +2 -1
- package/fesm2022/c8y-ngx-components-repository-software.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-search.mjs +2 -1
- package/fesm2022/c8y-ngx-components-search.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-sensor-phone-sensor-phone-modal.mjs +2 -1
- package/fesm2022/c8y-ngx-components-sensor-phone-sensor-phone-modal.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-sensor-phone.mjs +3 -2
- package/fesm2022/c8y-ngx-components-sensor-phone.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-services-service-command-tab.mjs +2 -1
- package/fesm2022/c8y-ngx-components-services-service-command-tab.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-services-shared.mjs +1 -1
- package/fesm2022/c8y-ngx-components-services-shared.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-services.mjs +2 -1
- package/fesm2022/c8y-ngx-components-services.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-sigfox-device-registration.mjs +2 -1
- package/fesm2022/c8y-ngx-components-sigfox-device-registration.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-sms-gateway.mjs +3 -2
- package/fesm2022/c8y-ngx-components-sms-gateway.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-sub-assets.mjs +13 -9
- package/fesm2022/c8y-ngx-components-sub-assets.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-tenants.mjs +37 -37
- package/fesm2022/c8y-ngx-components-tenants.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-tracking.mjs +2 -1
- package/fesm2022/c8y-ngx-components-tracking.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-translation-editor-lazy.mjs +5 -5
- package/fesm2022/c8y-ngx-components-translation-editor-lazy.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-trusted-certificates.mjs +2 -1
- package/fesm2022/c8y-ngx-components-trusted-certificates.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-upgrade.mjs +10 -3
- package/fesm2022/c8y-ngx-components-upgrade.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-user-roles.mjs +2 -1
- package/fesm2022/c8y-ngx-components-user-roles.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-alarm-list.mjs +2 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-alarm-list.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-all-critical-alarms.mjs +2 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-all-critical-alarms.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-recent-alarms.mjs +2 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-recent-alarms.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-applications.mjs +2 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-applications.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-asset-notes.mjs +2 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-asset-notes.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-cockpit-legacy-welcome.mjs +2 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-cockpit-legacy-welcome.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-cockpit-welcome.mjs +2 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-cockpit-welcome.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-graph.mjs +2 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-graph.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-table.mjs +2 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-table.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-device-control-message.mjs +2 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-device-control-message.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-device-management-welcome.mjs +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-device-management-welcome.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-help-and-service.mjs +2 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-help-and-service.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-html-widget.mjs +3 -3
- package/fesm2022/c8y-ngx-components-widgets-definitions-html-widget.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-image.mjs +3 -6
- package/fesm2022/c8y-ngx-components-widgets-definitions-image.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-info-gauge.mjs +2 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-info-gauge.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-kpi.mjs +2 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-kpi.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-linear-gauge.mjs +2 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-linear-gauge.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-map.mjs +2 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-map.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-markdown.mjs +2 -2
- package/fesm2022/c8y-ngx-components-widgets-definitions-markdown.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-quick-links.mjs +2 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-quick-links.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-radial-gauge.mjs +2 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-radial-gauge.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-silo.mjs +2 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-silo.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-three-d-rotation.mjs +2 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-three-d-rotation.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs +2 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-asset-notes.mjs +2 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-asset-notes.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-cockpit-welcome.mjs +9 -6
- package/fesm2022/c8y-ngx-components-widgets-implementations-cockpit-welcome.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-widgets-implementations-device-control-message.mjs +2 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-device-control-message.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-device-management-welcome.mjs +2 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-device-management-welcome.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-help-and-service-widget.mjs +2 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-help-and-service-widget.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-html-widget.mjs +13 -8
- package/fesm2022/c8y-ngx-components-widgets-implementations-html-widget.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-image.mjs +2 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-image.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-info-gauge.mjs +2 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-info-gauge.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-linear-gauge.mjs +2 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-linear-gauge.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-map.mjs +2 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-map.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-markdown.mjs +2 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-markdown.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-quick-links.mjs +2 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-quick-links.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-import-export-config.mjs +3 -10
- package/fesm2022/c8y-ngx-components-widgets-import-export-config.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components.mjs +789 -531
- package/fesm2022/c8y-ngx-components.mjs.map +1 -1
- package/file-preview/file-preview.component.d.ts.map +1 -1
- package/files-repository/files-repository-navigation.factory.d.ts.map +1 -1
- package/files-repository/files-repository-upload.component.d.ts.map +1 -1
- package/files-repository/files-repository.component.d.ts.map +1 -1
- package/files-repository/files-repository.service.d.ts +1 -2
- package/files-repository/files-repository.service.d.ts.map +1 -1
- package/icon-selector/icon-selector-modal/icon-selector-modal.component.d.ts.map +1 -1
- package/icon-selector/icon-selector.component.d.ts.map +1 -1
- package/locales/de.po +105 -12
- package/locales/es.po +105 -12
- package/locales/fr.po +105 -12
- package/locales/ja_JP.po +99 -12
- package/locales/ko.po +104 -12
- package/locales/locales.pot +97 -12
- package/locales/nl.po +105 -12
- package/locales/pl.po +105 -12
- package/locales/pt_BR.po +105 -12
- package/locales/zh_CN.po +104 -12
- package/locales/zh_TW.po +104 -12
- package/location/location-tab.factory.d.ts.map +1 -1
- package/location/location.component.d.ts.map +1 -1
- package/loriot-device-registration/loriot-device-registration.component.d.ts.map +1 -1
- package/loriot-device-registration/loriot-provider.service.d.ts.map +1 -1
- package/map/map.component.d.ts.map +1 -1
- package/messaging-management/messaging/namespace-list/namespace-item/namespace-item-card/namespace-item-card.component.d.ts.map +1 -1
- package/messaging-management/messaging/shared/usage/usage.component.d.ts.map +1 -1
- package/messaging-management/messaging/topic/topic-list-view.component.d.ts.map +1 -1
- package/messaging-management/messaging/topic/topic-subscribers-view/topic-subscribers-data-grid.service.d.ts.map +1 -1
- package/messaging-management/messaging/topic/topic-subscribers-view/topic-subscribers-view.component.d.ts.map +1 -1
- package/messaging-management/messaging/topic/topics-data-grid.service.d.ts.map +1 -1
- package/messaging-management/navigator/messaging-navigator-factory.d.ts.map +1 -1
- package/messaging-management/navigator/topic-details-tab.factory.d.ts.map +1 -1
- package/operations/bulk-operation-list-item/bulk-operation-list-item.component.d.ts.map +1 -1
- package/operations/bulk-operation-list-item/modals/bulk-operations-reschedule-modal.component.d.ts.map +1 -1
- package/operations/bulk-operation-scheduler/operation-scheduler.component.d.ts.map +1 -1
- package/operations/bulk-operation-stepper/bulk-operation-stepper.component.d.ts.map +1 -1
- package/operations/bulk-single-operations-list/single-operation-item.component.d.ts.map +1 -1
- package/operations/bulk-single-operations-list/single-operations-list.component.d.ts.map +1 -1
- package/operations/factories/bulk-operations-tab.factory.d.ts.map +1 -1
- package/operations/grid-columns/creation-time.grid-column.d.ts.map +1 -1
- package/operations/grid-columns/device.grid-column.d.ts.map +1 -1
- package/operations/grid-columns/failure-reason.grid-column.d.ts.map +1 -1
- package/operations/grid-columns/status.grid-column.d.ts.map +1 -1
- package/operations/operations-list/device-control.feature.d.ts.map +1 -1
- package/operations/operations-list/operations-list-item.component.d.ts.map +1 -1
- package/operations/operations-list/operations-list.component.d.ts.map +1 -1
- package/operations/operations-list/single-operations-tab.factory.d.ts.map +1 -1
- package/operations/operations-list-item-details/operation-details-tabs.component.d.ts.map +1 -1
- package/operations/shared/nav.factory.d.ts.map +1 -1
- package/operations/shared/operations.service.d.ts.map +1 -1
- package/operations/stepper-bulk-type-configuration/stepper-bulk-type-configuration.component.d.ts.map +1 -1
- package/operations/stepper-bulk-type-device-profile/stepper-bulk-type-device-profile.component.d.ts.map +1 -1
- package/operations/stepper-bulk-type-firmware/stepper-bulk-type-firmware.component.d.ts.map +1 -1
- package/operations/stepper-bulk-type-software/select-software-step.component.d.ts.map +1 -1
- package/operations/stepper-bulk-type-software/stepper-bulk-type-software.component.d.ts.map +1 -1
- package/package.json +1 -1
- package/pending-mo-request/pending-mo-request-interceptor.d.ts.map +1 -1
- package/pending-mo-request/pending-mo-request.service.d.ts.map +1 -1
- package/platform-configuration/platform-configuration-form-provider.service.d.ts.map +1 -1
- package/protocol-lpwan/lpwan-protocol.module.d.ts.map +1 -1
- package/protocol-lpwan/lpwan-set-connections.component.d.ts.map +1 -1
- package/protocol-lpwan/lpwan-set-device-protocol.component.d.ts.map +1 -1
- package/protocol-lpwan/multiple-lns-connectors/actility-multiple-lns-connector.component.d.ts.map +1 -1
- package/protocol-lpwan/multiple-lns-connectors/connection-info-with-download-csv.component.d.ts.map +1 -1
- package/protocol-lpwan/multiple-lns-connectors/loriot/loriot-multiple-lns-connector.component.d.ts.map +1 -1
- package/protocol-lpwan/multiple-lns-connectors/no-connections-found.component.d.ts.map +1 -1
- package/protocol-lpwan/multiple-lns-connectors/sigfox-multiple-lns-connector.component.d.ts.map +1 -1
- package/protocol-opcua/opcua-address-space.component.d.ts.map +1 -1
- package/protocol-opcua/opcua-device-protocol-detail.component.d.ts.map +1 -1
- package/protocol-opcua/opcua-server-config.component.d.ts.map +1 -1
- package/protocol-opcua/opcua-servers.component.d.ts.map +1 -1
- package/register-device/bulk/bulk-device-registration-modal.component.d.ts.map +1 -1
- package/register-device/device-registration-view.component.d.ts.map +1 -1
- package/register-device/extensible/base-extensible-device-registration.service.d.ts.map +1 -1
- package/register-device/extensible/bulk/extensible-bulk-device-registration-modal.component.d.ts.map +1 -1
- package/register-device/extensible/bulk/extensible-bulk-device-registration.service.d.ts.map +1 -1
- package/register-device/extensible/single/extensible-device-registration-modal.component.d.ts.map +1 -1
- package/register-device/extensible/single/extensible-device-registration-stepper.component.d.ts.map +1 -1
- package/register-device/extensible/single/extensible-device-registration.service.d.ts.map +1 -1
- package/register-device/general/general-device-registration.component.d.ts.map +1 -1
- package/register-device/register-device-navigation.factory.d.ts.map +1 -1
- package/register-device/register-device.service.d.ts.map +1 -1
- package/remote-access/configurations/remote-access-configuration-list/remote-access-configuration-list.component.d.ts.map +1 -1
- package/remote-access/configurations/remote-access-pick-protocol-modal/remote-access-pick-protocol-modal.component.d.ts.map +1 -1
- package/remote-access/passthrough/index.d.ts +1 -1
- package/remote-access/passthrough/index.d.ts.map +1 -1
- package/remote-access/shared/remote-access-basic-endpoint-modal/remote-access-basic-endpoint-modal.component.d.ts.map +1 -1
- package/remote-access/ssh/index.d.ts.map +1 -1
- package/remote-access/telnet/index.d.ts.map +1 -1
- package/remote-access/vnc/index.d.ts.map +1 -1
- package/replace-device/replace-device-grid-action.factory.d.ts.map +1 -1
- package/replace-device/replace-device-wizard/replace-device-wizard.component.d.ts.map +1 -1
- package/replace-device/replace-device-wizard/replace-device-wizard.service.d.ts.map +1 -1
- package/replace-device/replace-device.service.d.ts.map +1 -1
- package/report-dashboard/report-dashboard-list.component.d.ts.map +1 -1
- package/report-dashboard/report-dashboard-navigation.factory.d.ts.map +1 -1
- package/reports/export-schedules.component.d.ts.map +1 -1
- package/repository/configuration/device-tab/configuration-repository-device-tab.module.d.ts.map +1 -1
- package/repository/configuration/device-tab/save-to-repository.component.d.ts.map +1 -1
- package/repository/configuration/device-tab/text-based-configuration.component.d.ts.map +1 -1
- package/repository/configuration/list/configuration-detail.component.d.ts.map +1 -1
- package/repository/configuration/list/configuration-list.component.d.ts.map +1 -1
- package/repository/configuration/list/configuration-repository-navigation-factory.d.ts.map +1 -1
- package/repository/firmware/device-tab/firmware-device-tab.component.d.ts.map +1 -1
- package/repository/firmware/device-tab/firmware-repository-device-tab.module.d.ts.map +1 -1
- package/repository/firmware/list/add-firmware-modal.component.d.ts.map +1 -1
- package/repository/firmware/list/add-firmware-patch-modal.component.d.ts.map +1 -1
- package/repository/firmware/list/firmware-details.component.d.ts.map +1 -1
- package/repository/firmware/list/firmware-list.component.d.ts.map +1 -1
- package/repository/firmware/list/firmware-repository-navigation-factory.d.ts.map +1 -1
- package/repository/shared/columns/description.grid-column.d.ts.map +1 -1
- package/repository/shared/columns/device-type.grid-column.d.ts.map +1 -1
- package/repository/shared/columns/file.grid-column.d.ts.map +1 -1
- package/repository/shared/columns/name.grid-column.d.ts.map +1 -1
- package/repository/shared/columns/type.filtering-form-renderer.component.d.ts.map +1 -1
- package/repository/shared/columns/type.grid-column.d.ts.map +1 -1
- package/repository/shared/columns/versions.grid-column.d.ts.map +1 -1
- package/repository/shared/repository.service.d.ts.map +1 -1
- package/repository/shared/select-modal/repository-select-modal.component.d.ts +1 -1
- package/repository/shared/select-modal/repository-select-modal.component.d.ts.map +1 -1
- package/repository/shared/software-type/software-type.component.d.ts.map +1 -1
- package/repository/software/device-tab/installed-software.component.d.ts.map +1 -1
- package/repository/software/device-tab/software-repository-device-tab.module.d.ts.map +1 -1
- package/repository/software/list/add-software-modal.component.d.ts.map +1 -1
- package/repository/software/list/software-details.component.d.ts.map +1 -1
- package/repository/software/list/software-list.component.d.ts.map +1 -1
- package/repository/software/list/software-repository-navigation-factory.d.ts.map +1 -1
- package/search/columns/asset-type-search-grid-column.d.ts.map +1 -1
- package/search/search-grid.component.d.ts.map +1 -1
- package/search/search-results.component.d.ts.map +1 -1
- package/sensor-phone/connect-smartphone.factory.d.ts.map +1 -1
- package/sensor-phone/sensor-phone-modal/sensor-phone-modal.component.d.ts.map +1 -1
- package/sensor-phone/sensor-phone-modal/sensor-phone.service.d.ts.map +1 -1
- package/services/service-command-tab/service-command.feature.d.ts.map +1 -1
- package/services/services-device-tab/columns/last-updated-date.device-grid-column.d.ts.map +1 -1
- package/services/services-device-tab/columns/name.grid-column.d.ts.map +1 -1
- package/services/services-device-tab/columns/service-type.grid-column.d.ts.map +1 -1
- package/services/services-device-tab/columns/status.grid-column.d.ts.map +1 -1
- package/services/services-device-tab/services-device-tab.component.d.ts.map +1 -1
- package/services/services-device-tab/services-device-tab.module.d.ts.map +1 -1
- package/services/services-device-tab/services.breadcrumb-factory.d.ts.map +1 -1
- package/services/shared/service-command.service.d.ts.map +1 -1
- package/services/status-options/status-options.model.d.ts.map +1 -1
- package/sigfox-device-registration/sigfox-device-registration.component.d.ts.map +1 -1
- package/sigfox-device-registration/sigfox-provider.service.d.ts.map +1 -1
- package/sms-gateway/sms-gateway.module.d.ts.map +1 -1
- package/sub-assets/add-group/add-group.component.d.ts.map +1 -1
- package/sub-assets/asset-properties-item.component.d.ts.map +1 -1
- package/sub-assets/asset-properties.component.d.ts.map +1 -1
- package/sub-assets/assign-devices/assign-child-devices.component.d.ts.map +1 -1
- package/sub-assets/assign-devices/assign-devices.component.d.ts.map +1 -1
- package/sub-assets/delete-assets-modal/delete-assets-modal.component.d.ts.map +1 -1
- package/sub-assets/group-info.component.d.ts.map +1 -1
- package/sub-assets/sub-assets-grid.component.d.ts.map +1 -1
- package/sub-assets/sub-assets.component.d.ts.map +1 -1
- package/sub-assets/sub-assets.module.d.ts.map +1 -1
- package/sub-assets/sub-assets.service.d.ts.map +1 -1
- package/sub-assets/unassign-assets-modal/unassign-modal.component.d.ts.map +1 -1
- package/tenants/custom-properties/custom-properties.component.d.ts.map +1 -1
- package/tenants/tenant-form/tenant-form.component.d.ts.map +1 -1
- package/tenants/tenant-limits/tenant-limits.component.d.ts.map +1 -1
- package/tenants/tenant-list/creation-time.filtering-form-renderer.component.d.ts.map +1 -1
- package/tenants/tenant-list/tenant-list.component.d.ts.map +1 -1
- package/tenants/tenants-navigation.factory.d.ts.map +1 -1
- package/tenants/tenants.module.d.ts.map +1 -1
- package/tracking/tracking.feature.d.ts.map +1 -1
- package/translation-editor/lazy/translation-editor/translation-editor.component.d.ts.map +1 -1
- package/trusted-certificates/crl/crl-check-settings.component.d.ts.map +1 -1
- package/trusted-certificates/crl/crl-settings.component.d.ts.map +1 -1
- package/trusted-certificates/factories/tabs.factory.d.ts.map +1 -1
- package/trusted-certificates/factories/trusted-certificates-navigation.factory.d.ts.map +1 -1
- package/trusted-certificates/list/add-trusted-certificate.component.d.ts.map +1 -1
- package/trusted-certificates/list/trusted-certificate-list.component.d.ts.map +1 -1
- package/upgrade/auth-bridge.service.d.ts.map +1 -1
- package/upgrade/bridge.service.d.ts.map +1 -1
- package/upgrade/ng1/downgraded.services.d.ts +1 -0
- package/upgrade/ng1/downgraded.services.d.ts.map +1 -1
- package/upgrade/ng1/index.d.ts.map +1 -1
- package/user-roles/roles-asset-tree/roles-asset-tree.component.d.ts.map +1 -1
- package/widgets/cockpit/index.d.ts +4 -4
- package/widgets/definitions/alarms/alarm-list/index.d.ts +1 -1
- package/widgets/definitions/alarms/alarm-list/index.d.ts.map +1 -1
- package/widgets/definitions/alarms/all-critical-alarms/index.d.ts +1 -1
- package/widgets/definitions/alarms/all-critical-alarms/index.d.ts.map +1 -1
- package/widgets/definitions/alarms/recent-alarms/index.d.ts +1 -1
- package/widgets/definitions/alarms/recent-alarms/index.d.ts.map +1 -1
- package/widgets/definitions/applications/index.d.ts +1 -1
- package/widgets/definitions/applications/index.d.ts.map +1 -1
- package/widgets/definitions/asset-notes/index.d.ts +1 -1
- package/widgets/definitions/asset-notes/index.d.ts.map +1 -1
- package/widgets/definitions/cockpit-legacy-welcome/index.d.ts +1 -1
- package/widgets/definitions/cockpit-legacy-welcome/index.d.ts.map +1 -1
- package/widgets/definitions/cockpit-welcome/index.d.ts +1 -1
- package/widgets/definitions/cockpit-welcome/index.d.ts.map +1 -1
- package/widgets/definitions/datapoints-graph/datapoint-graph-widget-factory.d.ts.map +1 -1
- package/widgets/definitions/datapoints-graph/index.d.ts +1 -1
- package/widgets/definitions/datapoints-table/index.d.ts +1 -1
- package/widgets/definitions/datapoints-table/index.d.ts.map +1 -1
- package/widgets/definitions/device-control-message/index.d.ts +1 -1
- package/widgets/definitions/device-control-message/index.d.ts.map +1 -1
- package/widgets/definitions/help-and-service/index.d.ts +1 -1
- package/widgets/definitions/help-and-service/index.d.ts.map +1 -1
- package/widgets/definitions/html-widget/html-widget.factory.d.ts.map +1 -1
- package/widgets/definitions/html-widget/index.d.ts +1 -1
- package/widgets/definitions/image/index.d.ts +5 -3
- package/widgets/definitions/image/index.d.ts.map +1 -1
- package/widgets/definitions/info-gauge/index.d.ts +2 -3
- package/widgets/definitions/info-gauge/index.d.ts.map +1 -1
- package/widgets/definitions/kpi/index.d.ts +1 -1
- package/widgets/definitions/kpi/index.d.ts.map +1 -1
- package/widgets/definitions/linear-gauge/index.d.ts +1 -1
- package/widgets/definitions/linear-gauge/index.d.ts.map +1 -1
- package/widgets/definitions/map/index.d.ts +1 -1
- package/widgets/definitions/map/index.d.ts.map +1 -1
- package/widgets/definitions/markdown/index.d.ts +5 -3
- package/widgets/definitions/markdown/index.d.ts.map +1 -1
- package/widgets/definitions/quick-links/index.d.ts +1 -1
- package/widgets/definitions/quick-links/index.d.ts.map +1 -1
- package/widgets/definitions/radial-gauge/index.d.ts +1 -1
- package/widgets/definitions/radial-gauge/index.d.ts.map +1 -1
- package/widgets/definitions/silo/index.d.ts +1 -1
- package/widgets/definitions/silo/index.d.ts.map +1 -1
- package/widgets/definitions/three-d-rotation/index.d.ts +1 -1
- package/widgets/definitions/three-d-rotation/index.d.ts.map +1 -1
- package/widgets/implementations/alarms/alarm-list-widget-config/alarm-list-widget-config.component.d.ts.map +1 -1
- package/widgets/implementations/alarms/alarm-list-widget-view/alarm-list-widget.component.d.ts.map +1 -1
- package/widgets/implementations/alarms/alarm-list-widget.model.d.ts.map +1 -1
- package/widgets/implementations/alarms/alarm-widget-alarms-reload.component.d.ts.map +1 -1
- package/widgets/implementations/cockpit-welcome/welcome.component.d.ts +3 -2
- package/widgets/implementations/cockpit-welcome/welcome.component.d.ts.map +1 -1
- package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-reload/datapoints-reload.component.d.ts.map +1 -1
- package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table/datapoints-table.component.d.ts.map +1 -1
- package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table-view.component.d.ts.map +1 -1
- package/widgets/implementations/datapoints-table/datapoints-table-widget.model.d.ts.map +1 -1
- package/widgets/implementations/datapoints-table/date-range-picker.component.d.ts.map +1 -1
- package/widgets/implementations/device-control-message/device-control-message-widget-view/device-control-message-widget-view.component.d.ts.map +1 -1
- package/widgets/implementations/device-management-welcome/welcome.component.d.ts.map +1 -1
- package/widgets/implementations/help-and-service-widget/help-and-service-view/help-and-service-view.component.d.ts.map +1 -1
- package/widgets/implementations/html-widget/advanced-settings/advanced-settings.component.d.ts.map +1 -1
- package/widgets/implementations/html-widget/html-widget-config.service.d.ts.map +1 -1
- package/widgets/implementations/html-widget/widget-code-editor-section/widget-code-editor.component.d.ts +5 -3
- package/widgets/implementations/html-widget/widget-code-editor-section/widget-code-editor.component.d.ts.map +1 -1
- package/widgets/implementations/image/image-widget-config/image-widget-config.component.d.ts.map +1 -1
- package/widgets/implementations/image/image-widget.service.d.ts +1 -2
- package/widgets/implementations/image/image-widget.service.d.ts.map +1 -1
- package/widgets/implementations/info-gauge/info-gauge-widget-config/info-gauge-widget-config.component.d.ts.map +1 -1
- package/widgets/implementations/linear-gauge/linear-gauge-widget-view/linear-gauge-widget-view.component.d.ts.map +1 -1
- package/widgets/implementations/map/map-widget-config.component.d.ts.map +1 -1
- package/widgets/implementations/map/map-widget.component.d.ts.map +1 -1
- package/widgets/implementations/markdown/markdown-widget-config/markdown-widget-config.component.d.ts.map +1 -1
- package/widgets/implementations/markdown/markdown-widget.service.d.ts.map +1 -1
- package/widgets/implementations/quick-links/quick-links-widget-config/quick-links-widget-config.component.d.ts.map +1 -1
- package/widgets/import-export-config/config-target-export.d.ts +3 -1
- package/widgets/import-export-config/config-target-export.d.ts.map +1 -1
- package/widgets/import-export-config/config-target-import.d.ts +3 -1
- package/widgets/import-export-config/config-target-import.d.ts.map +1 -1
- package/widgets/import-export-config/device-import-export.d.ts +3 -1
- package/widgets/import-export-config/device-import-export.d.ts.map +1 -1
- package/fesm2022/c8y-ngx-components-context-dashboard-dashboard-general-settings.component-DjlpSztw.mjs.map +0 -1
- package/fesm2022/c8y-ngx-components-context-dashboard-dashboard-version-history.component-B2zLhv0X.mjs.map +0 -1
- package/fesm2022/c8y-ngx-components-dashboard-details-advanced-tab-dashboard-details-advanced-tab.component-CwfVxTSx.mjs.map +0 -1
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { Input, Directive,
|
|
2
|
+
import { Input, Directive, createEnvironmentInjector, InjectionToken, Optional, Inject, Injectable, NgModuleRef, createNgModule, isDevMode, inject, Pipe, EventEmitter, NgModule, LOCALE_ID, EnvironmentInjector, Injector, HostListener, Component, HostBinding, Output, forwardRef, DestroyRef, ViewChild, SecurityContext, TemplateRef, provideAppInitializer, Self, SkipSelf, Attribute, ContentChild, ElementRef, ContentChildren, ViewContainerRef, runInInjectionContext, createComponent, ViewChildren, viewChild, effect, importProvidersFrom, ChangeDetectionStrategy, SimpleChange, reflectComponentType, signal, Type, computed, input, output } from '@angular/core';
|
|
3
3
|
import * as i1$3 from 'ngx-bootstrap/dropdown';
|
|
4
4
|
import { BsDropdownModule, BsDropdownDirective } from 'ngx-bootstrap/dropdown';
|
|
5
5
|
import { CdkTrapFocus, A11yModule } from '@angular/cdk/a11y';
|
|
6
6
|
import { castArray, flatten, uniq, sortBy, groupBy, camelCase, isEqual, isUndefined, throttle as throttle$1, keys, get, isNaN as isNaN$1, isFinite, each, mapValues, mapKeys, forEach, assign, min, every, first, map as map$1, find, negate, upperFirst, memoize as memoize$1, property, some, entries, omitBy, isDate, pick, flatMap, orderBy, isEmpty, filter as filter$2, snakeCase, matches, escape, escapeRegExp, assignWith, set, cloneDeep, uniqBy, toNumber, isEqualWith, clone, omit, has, transform, identity, flow, findIndex as findIndex$1, isNil, chunk, values, union, without, indexOf, parseInt as parseInt$1, kebabCase, forOwn } from 'lodash-es';
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
7
|
+
import { merge, of, defer, combineLatest, race, isObservable, from, Subject, BehaviorSubject, ReplaySubject, NEVER, Observable, firstValueFrom, fromEvent, pipe, throwError, concat, map as map$2, filter as filter$1, tap as tap$1, fromEventPattern, startWith as startWith$1, switchMap as switchMap$1, distinctUntilChanged as distinctUntilChanged$1, takeUntil as takeUntil$1, shareReplay as shareReplay$1, timer, catchError as catchError$1, empty, forkJoin, interval, mergeMap as mergeMap$1 } from 'rxjs';
|
|
8
|
+
import { map, distinctUntilChanged, filter, startWith, switchMap, shareReplay, take, scan, debounceTime, share, takeUntil, tap, catchError, first as first$1, retryWhen, delay, concatMap, debounce, sample, withLatestFrom, mergeMap, every as every$1, toArray, merge as merge$1, expand, mapTo, skip, reduce, finalize, combineLatestWith } from 'rxjs/operators';
|
|
9
9
|
import * as i1 from '@c8y/client';
|
|
10
|
-
import { OperationStatus, TenantLoginOptionType, UserManagementSource, GrantType, ApplicationType, BasicAuth, CookieAuth, Realtime, FetchClient, FeatureService, ApplicationAvailability, InventoryService, QueriesUtil, Client, PasswordStrength, AlarmService, TenantService, ApplicationService, UserService, aggregationType, Service, Paging } from '@c8y/client';
|
|
10
|
+
import { OperationStatus, TenantLoginOptionType, UserManagementSource, GrantType, ApplicationType, BasicAuth, CookieAuth, Realtime, FetchClient, BearerAuthFromSessionStorage, FeatureService, ApplicationAvailability, InventoryService, QueriesUtil, Client, PasswordStrength, AlarmService, TenantService, ApplicationService, UserService, aggregationType, Service, Paging } from '@c8y/client';
|
|
11
11
|
import { __decorate, __metadata } from 'tslib';
|
|
12
12
|
import * as i1$4 from '@angular/router';
|
|
13
13
|
import { NavigationEnd, RouterModule as RouterModule$1, NavigationStart, RouterLink, RouterLinkActive, RouterOutlet, ActivationEnd, Router, ActivatedRoute, PRIMARY_OUTLET, ActivationStart, ChildActivationEnd, ROUTES, NavigationCancel, NavigationError } from '@angular/router';
|
|
@@ -15,11 +15,10 @@ import * as i4 from '@c8y/ngx-components/api';
|
|
|
15
15
|
import { DataModule } from '@c8y/ngx-components/api';
|
|
16
16
|
import { coerceNumberProperty } from '@angular/cdk/coercion';
|
|
17
17
|
import { gettext as gettext$1 } from '@c8y/ngx-components/gettext';
|
|
18
|
-
export * from '@c8y/ngx-components/gettext';
|
|
19
18
|
import * as i1$1 from '@ngx-translate/core';
|
|
20
19
|
import { TranslateService as TranslateService$1, TranslateDefaultParser, TranslateDirective, TranslatePipe, TranslateModule, TranslateLoader, TranslateFakeCompiler, TranslateCompiler, TranslateParser, MissingTranslationHandler, TranslateStore, USE_STORE, USE_DEFAULT_LANG, USE_EXTEND, DEFAULT_LANGUAGE } from '@ngx-translate/core';
|
|
21
20
|
import { VIRTUAL_SCROLL_STRATEGY, CdkVirtualScrollViewport, CdkVirtualForOf, CdkFixedSizeVirtualScroll, ScrollingModule } from '@angular/cdk/scrolling';
|
|
22
|
-
import * as
|
|
21
|
+
import * as i2$3 from '@angular/common';
|
|
23
22
|
import { formatDate, registerLocaleData, DOCUMENT, DatePipe as DatePipe$1, DATE_PIPE_DEFAULT_TIMEZONE, DATE_PIPE_DEFAULT_OPTIONS, NgIf, NgClass, NgTemplateOutlet, NgSwitch, NgSwitchCase, AsyncPipe, DecimalPipe, NgStyle, CommonModule as CommonModule$1, NgFor, NgComponentOutlet, NgSwitchDefault, KeyValuePipe, LocationStrategy, NgForOf, UpperCasePipe, NgPlural, NgPluralCase, SlicePipe } from '@angular/common';
|
|
24
23
|
import * as i1$5 from 'ngx-bootstrap/tooltip';
|
|
25
24
|
import { TooltipModule } from 'ngx-bootstrap/tooltip';
|
|
@@ -40,7 +39,7 @@ import { CdkStepper, STEP_STATE, CdkStep, CdkStepperModule, STEPPER_GLOBAL_OPTIO
|
|
|
40
39
|
import * as i1$7 from 'ngx-bootstrap/modal';
|
|
41
40
|
import { ModalModule as ModalModule$1, BsModalRef } from 'ngx-bootstrap/modal';
|
|
42
41
|
import * as i1$8 from '@angular/forms';
|
|
43
|
-
import { FormsModule as FormsModule$1, Validators, NG_VALUE_ACCESSOR, NG_VALIDATORS, CheckboxControlValueAccessor, FormControl, NgModel, FormControlName,
|
|
42
|
+
import { FormsModule as FormsModule$1, Validators, NG_VALUE_ACCESSOR, NG_VALIDATORS, CheckboxControlValueAccessor, ReactiveFormsModule, FormControl, NgModel, FormControlName, NgForm, ControlContainer, FormArray, NgControl, FormGroup, FormBuilder } from '@angular/forms';
|
|
44
43
|
import { TOKEN_KEY, TFATOKEN_KEY, mergeRemotes, removeRemotes, getThemePreference, setThemePreference, applyTheme } from '@c8y/bootstrap';
|
|
45
44
|
import * as i1$9 from 'ngx-bootstrap/popover';
|
|
46
45
|
import { PopoverModule, PopoverDirective } from 'ngx-bootstrap/popover';
|
|
@@ -48,7 +47,7 @@ import { compare, coerce } from 'semver';
|
|
|
48
47
|
import { parsePhoneNumberFromString } from 'libphonenumber-js/max';
|
|
49
48
|
import { QRCodeComponent } from 'angularx-qrcode';
|
|
50
49
|
import * as mimeDB from 'mime-db';
|
|
51
|
-
import * as i2$
|
|
50
|
+
import * as i2$4 from '@ngx-formly/core';
|
|
52
51
|
import { FormlyModule, FieldWrapper, FieldArrayType, FieldType, FORMLY_CONFIG, ɵdefineHiddenProp as _defineHiddenProp } from '@ngx-formly/core';
|
|
53
52
|
import { TextFieldModule } from '@angular/cdk/text-field';
|
|
54
53
|
import * as i3 from '@ngx-formly/core/select';
|
|
@@ -212,168 +211,6 @@ var GroupFragment;
|
|
|
212
211
|
GroupFragment["dynamicGroupQueryString"] = "c8y_DeviceQueryString";
|
|
213
212
|
})(GroupFragment || (GroupFragment = {}));
|
|
214
213
|
|
|
215
|
-
class PluginsResolveService {
|
|
216
|
-
constructor() {
|
|
217
|
-
this._refresh$ = new Subject();
|
|
218
|
-
this._allPluginsLoaded$ = new BehaviorSubject(false);
|
|
219
|
-
this._contextPathsFromWhereRemotesHaveBeenLoaded$ = new BehaviorSubject([]);
|
|
220
|
-
this._loadedPluginNames$ = new BehaviorSubject([]);
|
|
221
|
-
this._injectors$ = new ReplaySubject();
|
|
222
|
-
this._pluginDetails$ = new ReplaySubject();
|
|
223
|
-
this.injectors$ = this._injectors$;
|
|
224
|
-
this.refresh$ = this._refresh$.asObservable().pipe(shareReplay(1));
|
|
225
|
-
this.pluginDetails$ = this._pluginDetails$;
|
|
226
|
-
this.allPluginsLoaded$ = this._allPluginsLoaded$.asObservable();
|
|
227
|
-
this.contextPathsFromWhereRemotesHaveBeenLoaded$ =
|
|
228
|
-
this._contextPathsFromWhereRemotesHaveBeenLoaded$.asObservable();
|
|
229
|
-
this.loadedPluginNames$ = this._loadedPluginNames$.asObservable();
|
|
230
|
-
}
|
|
231
|
-
/**
|
|
232
|
-
* Will refresh all current registered hooks.
|
|
233
|
-
*/
|
|
234
|
-
refreshHooks() {
|
|
235
|
-
this._refresh$.next();
|
|
236
|
-
}
|
|
237
|
-
markPluginsAsLoaded() {
|
|
238
|
-
this._allPluginsLoaded$.next(true);
|
|
239
|
-
}
|
|
240
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: PluginsResolveService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
241
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: PluginsResolveService, providedIn: 'root' }); }
|
|
242
|
-
}
|
|
243
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: PluginsResolveService, decorators: [{
|
|
244
|
-
type: Injectable,
|
|
245
|
-
args: [{
|
|
246
|
-
providedIn: 'root'
|
|
247
|
-
}]
|
|
248
|
-
}], ctorParameters: () => [] });
|
|
249
|
-
|
|
250
|
-
class StandalonePluginInjector extends Injector {
|
|
251
|
-
/**
|
|
252
|
-
* @deprecated Use `constructor` instead.
|
|
253
|
-
*/
|
|
254
|
-
static create(..._args) {
|
|
255
|
-
throw Error('Not implemented');
|
|
256
|
-
}
|
|
257
|
-
constructor(options) {
|
|
258
|
-
super();
|
|
259
|
-
this.options = options;
|
|
260
|
-
this.injector = Injector.create(options);
|
|
261
|
-
}
|
|
262
|
-
get name() {
|
|
263
|
-
return this.options.name;
|
|
264
|
-
}
|
|
265
|
-
get(token, notFoundValue, options) {
|
|
266
|
-
return this.injector.get(token, notFoundValue, options);
|
|
267
|
-
}
|
|
268
|
-
}
|
|
269
|
-
/**
|
|
270
|
-
* @deprecated Only meant for internal usage.
|
|
271
|
-
* @internal
|
|
272
|
-
*/
|
|
273
|
-
const HOOK_PLUGIN = new InjectionToken('HOOK_PLUGIN');
|
|
274
|
-
/**
|
|
275
|
-
* @deprecated Only meant for internal usage.
|
|
276
|
-
* @internal
|
|
277
|
-
*/
|
|
278
|
-
function hookPlugin(plugins) {
|
|
279
|
-
return hookGeneric(plugins, HOOK_PLUGIN, { multi: false });
|
|
280
|
-
}
|
|
281
|
-
class PluginsLoaderService {
|
|
282
|
-
constructor(plugins, injector, pluginsResolveService) {
|
|
283
|
-
this.plugins = plugins;
|
|
284
|
-
this.injector = injector;
|
|
285
|
-
this.pluginsResolveService = pluginsResolveService;
|
|
286
|
-
this.loadModulesDynamically(this.plugins);
|
|
287
|
-
}
|
|
288
|
-
/**
|
|
289
|
-
* Loads modules and handles hooking correctly.
|
|
290
|
-
* @param remoteNgModules The modules to load.
|
|
291
|
-
*/
|
|
292
|
-
loadModulesDynamically(remoteModules) {
|
|
293
|
-
const modulesWithMetadata = this.loadModules(remoteModules || [], this.injector);
|
|
294
|
-
const injectors = modulesWithMetadata.map(m => m.injector);
|
|
295
|
-
const refs = modulesWithMetadata
|
|
296
|
-
.map(m => {
|
|
297
|
-
if (m.moduleRef && m.remoteNgModule) {
|
|
298
|
-
return { moduleRef: m.moduleRef, remoteNgModule: m.remoteNgModule };
|
|
299
|
-
}
|
|
300
|
-
return null;
|
|
301
|
-
})
|
|
302
|
-
.filter(m => !!m);
|
|
303
|
-
const loadedPluginNames = modulesWithMetadata.map(m => m.name);
|
|
304
|
-
this.pluginsResolveService._loadedPluginNames$.next(loadedPluginNames);
|
|
305
|
-
const loadedContextPaths = modulesWithMetadata.map(m => m.fullContextPath);
|
|
306
|
-
this.pluginsResolveService._contextPathsFromWhereRemotesHaveBeenLoaded$.next(loadedContextPaths);
|
|
307
|
-
injectors.forEach(injector => this.pluginsResolveService._injectors$.next(injector));
|
|
308
|
-
refs.forEach(ref => this.pluginsResolveService._pluginDetails$.next(ref));
|
|
309
|
-
this.pluginsResolveService.refreshHooks();
|
|
310
|
-
this.pluginsResolveService.markPluginsAsLoaded();
|
|
311
|
-
return modulesWithMetadata;
|
|
312
|
-
}
|
|
313
|
-
/**
|
|
314
|
-
* Uses the provided remoteModule factories to load and instantiate the modules.
|
|
315
|
-
* The provided injector is used as a parent to create the module instances.
|
|
316
|
-
*/
|
|
317
|
-
loadModules(remoteModules, injector) {
|
|
318
|
-
const loadedResults = [];
|
|
319
|
-
for (const { factory, name, fullContextPath } of remoteModules) {
|
|
320
|
-
try {
|
|
321
|
-
const moduleOrProviders = factory[name];
|
|
322
|
-
let result;
|
|
323
|
-
if (Array.isArray(moduleOrProviders)) {
|
|
324
|
-
result = this.loadProviders(moduleOrProviders, name, injector);
|
|
325
|
-
}
|
|
326
|
-
else {
|
|
327
|
-
result = this.loadModule(moduleOrProviders, injector);
|
|
328
|
-
}
|
|
329
|
-
const resultWithName = {
|
|
330
|
-
...result,
|
|
331
|
-
name,
|
|
332
|
-
fullContextPath
|
|
333
|
-
};
|
|
334
|
-
loadedResults.push(resultWithName);
|
|
335
|
-
}
|
|
336
|
-
catch (ex) {
|
|
337
|
-
console.error(`Failed to load ${name}`, ex);
|
|
338
|
-
}
|
|
339
|
-
}
|
|
340
|
-
return loadedResults;
|
|
341
|
-
}
|
|
342
|
-
loadProviders(providers, name, parentInjector) {
|
|
343
|
-
const injector = new StandalonePluginInjector({
|
|
344
|
-
providers: providers,
|
|
345
|
-
name: `pluginsInjector-${name}`,
|
|
346
|
-
parent: parentInjector
|
|
347
|
-
});
|
|
348
|
-
return { injector };
|
|
349
|
-
}
|
|
350
|
-
loadModule(remoteNgModule, parentInjector) {
|
|
351
|
-
let moduleRef;
|
|
352
|
-
if (remoteNgModule instanceof NgModuleRef) {
|
|
353
|
-
// AOT
|
|
354
|
-
moduleRef = remoteNgModule;
|
|
355
|
-
}
|
|
356
|
-
else {
|
|
357
|
-
// JIT
|
|
358
|
-
moduleRef = createNgModule(remoteNgModule, parentInjector);
|
|
359
|
-
}
|
|
360
|
-
return { moduleRef, remoteNgModule, injector: moduleRef.injector };
|
|
361
|
-
}
|
|
362
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: PluginsLoaderService, deps: [{ token: HOOK_PLUGIN, optional: true }, { token: i0.EnvironmentInjector }, { token: PluginsResolveService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
363
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: PluginsLoaderService, providedIn: 'root' }); }
|
|
364
|
-
}
|
|
365
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: PluginsLoaderService, decorators: [{
|
|
366
|
-
type: Injectable,
|
|
367
|
-
args: [{
|
|
368
|
-
providedIn: 'root'
|
|
369
|
-
}]
|
|
370
|
-
}], ctorParameters: () => [{ type: Array, decorators: [{
|
|
371
|
-
type: Optional
|
|
372
|
-
}, {
|
|
373
|
-
type: Inject,
|
|
374
|
-
args: [HOOK_PLUGIN]
|
|
375
|
-
}] }, { type: i0.EnvironmentInjector }, { type: PluginsResolveService }] });
|
|
376
|
-
|
|
377
214
|
/**
|
|
378
215
|
* A abstract state which should be included in each state.
|
|
379
216
|
* @abstract
|
|
@@ -414,14 +251,14 @@ function getInjectedHooks(token, injectors, type = InjectionType.COMPONENT) {
|
|
|
414
251
|
if (injector.scopes?.has('root')) {
|
|
415
252
|
return factories;
|
|
416
253
|
}
|
|
417
|
-
if (injector instanceof StandalonePluginInjector) {
|
|
418
|
-
// No need to set injector for items retrieved from standalone plugins
|
|
419
|
-
return factories;
|
|
420
|
-
}
|
|
421
254
|
factories.forEach((factory) => {
|
|
422
255
|
if (!factory.get && factory.injector !== null) {
|
|
423
256
|
if (type === InjectionType.ROUTE) {
|
|
424
|
-
|
|
257
|
+
const route = factory;
|
|
258
|
+
if (!route._injector) {
|
|
259
|
+
const envInjector = createEnvironmentInjector(route.providers || [], injector, `Route: ${route.path}`);
|
|
260
|
+
factory._injector = envInjector;
|
|
261
|
+
}
|
|
425
262
|
}
|
|
426
263
|
else {
|
|
427
264
|
factory.injector = injector;
|
|
@@ -868,6 +705,178 @@ function throttle(wait, options) {
|
|
|
868
705
|
};
|
|
869
706
|
}
|
|
870
707
|
|
|
708
|
+
class PluginsResolveService {
|
|
709
|
+
constructor() {
|
|
710
|
+
this._refresh$ = new Subject();
|
|
711
|
+
this._allPluginsLoaded$ = new BehaviorSubject(false);
|
|
712
|
+
this._contextPathsFromWhereRemotesHaveBeenLoaded$ = new BehaviorSubject([]);
|
|
713
|
+
this._loadedPluginNames$ = new BehaviorSubject([]);
|
|
714
|
+
this._injectors$ = new ReplaySubject();
|
|
715
|
+
this._pluginDetails$ = new ReplaySubject();
|
|
716
|
+
this.injectors$ = this._injectors$;
|
|
717
|
+
this.refresh$ = this._refresh$.asObservable().pipe(shareReplay(1));
|
|
718
|
+
this.pluginDetails$ = this._pluginDetails$;
|
|
719
|
+
this.allPluginsLoaded$ = this._allPluginsLoaded$.asObservable();
|
|
720
|
+
this.contextPathsFromWhereRemotesHaveBeenLoaded$ =
|
|
721
|
+
this._contextPathsFromWhereRemotesHaveBeenLoaded$.asObservable();
|
|
722
|
+
this.loadedPluginNames$ = this._loadedPluginNames$.asObservable();
|
|
723
|
+
}
|
|
724
|
+
/**
|
|
725
|
+
* Will refresh all current registered hooks.
|
|
726
|
+
*/
|
|
727
|
+
refreshHooks() {
|
|
728
|
+
this._refresh$.next();
|
|
729
|
+
}
|
|
730
|
+
addInjector(injector) {
|
|
731
|
+
this._injectors$.next(injector);
|
|
732
|
+
}
|
|
733
|
+
markPluginsAsLoaded() {
|
|
734
|
+
this._allPluginsLoaded$.next(true);
|
|
735
|
+
}
|
|
736
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: PluginsResolveService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
737
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: PluginsResolveService, providedIn: 'root' }); }
|
|
738
|
+
}
|
|
739
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: PluginsResolveService, decorators: [{
|
|
740
|
+
type: Injectable,
|
|
741
|
+
args: [{
|
|
742
|
+
providedIn: 'root'
|
|
743
|
+
}]
|
|
744
|
+
}], ctorParameters: () => [] });
|
|
745
|
+
|
|
746
|
+
/**
|
|
747
|
+
* Injection token for providing the context path of a plugin.
|
|
748
|
+
*
|
|
749
|
+
* Can e.g. be used to construct URLs to assets within the plugin.
|
|
750
|
+
*/
|
|
751
|
+
const C8Y_PLUGIN_CONTEXT_PATH = new InjectionToken('C8Y_PLUGIN_CONTEXT_PATH');
|
|
752
|
+
/**
|
|
753
|
+
* Injection token for providing the name of a plugin.
|
|
754
|
+
*
|
|
755
|
+
* Can e.g. be used to identify the plugin within the application.
|
|
756
|
+
*/
|
|
757
|
+
const C8Y_PLUGIN_NAME = new InjectionToken('C8Y_PLUGIN_NAME');
|
|
758
|
+
|
|
759
|
+
/**
|
|
760
|
+
* @deprecated Only meant for internal usage.
|
|
761
|
+
* @internal
|
|
762
|
+
*/
|
|
763
|
+
const HOOK_PLUGIN = new InjectionToken('HOOK_PLUGIN');
|
|
764
|
+
/**
|
|
765
|
+
* @deprecated Only meant for internal usage.
|
|
766
|
+
* @internal
|
|
767
|
+
*/
|
|
768
|
+
function hookPlugin(plugins) {
|
|
769
|
+
return hookGeneric(plugins, HOOK_PLUGIN, { multi: false });
|
|
770
|
+
}
|
|
771
|
+
class PluginsLoaderService {
|
|
772
|
+
constructor(plugins, injector, pluginsResolveService) {
|
|
773
|
+
this.plugins = plugins;
|
|
774
|
+
this.injector = injector;
|
|
775
|
+
this.pluginsResolveService = pluginsResolveService;
|
|
776
|
+
this.injectorPerContextPath = new Map();
|
|
777
|
+
this.loadModulesDynamically(this.plugins);
|
|
778
|
+
}
|
|
779
|
+
/**
|
|
780
|
+
* Loads modules and handles hooking correctly.
|
|
781
|
+
* @param remoteNgModules The modules to load.
|
|
782
|
+
*/
|
|
783
|
+
loadModulesDynamically(remoteModules) {
|
|
784
|
+
const modulesWithMetadata = this.loadModules(remoteModules || [], this.injector);
|
|
785
|
+
const injectors = modulesWithMetadata.map(m => m.injector);
|
|
786
|
+
const refs = modulesWithMetadata
|
|
787
|
+
.map(m => {
|
|
788
|
+
if (m.moduleRef && m.remoteNgModule) {
|
|
789
|
+
return { moduleRef: m.moduleRef, remoteNgModule: m.remoteNgModule };
|
|
790
|
+
}
|
|
791
|
+
return null;
|
|
792
|
+
})
|
|
793
|
+
.filter(m => !!m);
|
|
794
|
+
const loadedPluginNames = modulesWithMetadata.map(m => m.name);
|
|
795
|
+
this.pluginsResolveService._loadedPluginNames$.next(loadedPluginNames);
|
|
796
|
+
const loadedContextPaths = modulesWithMetadata.map(m => m.fullContextPath);
|
|
797
|
+
this.pluginsResolveService._contextPathsFromWhereRemotesHaveBeenLoaded$.next(loadedContextPaths);
|
|
798
|
+
injectors.forEach(injector => this.pluginsResolveService.addInjector(injector));
|
|
799
|
+
refs.forEach(ref => this.pluginsResolveService._pluginDetails$.next(ref));
|
|
800
|
+
this.pluginsResolveService.refreshHooks();
|
|
801
|
+
this.pluginsResolveService.markPluginsAsLoaded();
|
|
802
|
+
return modulesWithMetadata;
|
|
803
|
+
}
|
|
804
|
+
/**
|
|
805
|
+
* Uses the provided remoteModule factories to load and instantiate the modules.
|
|
806
|
+
* The provided injector is used as a parent to create the module instances.
|
|
807
|
+
*/
|
|
808
|
+
loadModules(remoteModules, injector) {
|
|
809
|
+
const loadedResults = [];
|
|
810
|
+
for (const { factory, name, fullContextPath } of remoteModules) {
|
|
811
|
+
let injectorPerContextPath = this.injectorPerContextPath.get(fullContextPath);
|
|
812
|
+
if (!injectorPerContextPath) {
|
|
813
|
+
injectorPerContextPath = createEnvironmentInjector([
|
|
814
|
+
{
|
|
815
|
+
provide: C8Y_PLUGIN_CONTEXT_PATH,
|
|
816
|
+
useValue: fullContextPath
|
|
817
|
+
}
|
|
818
|
+
], injector, `packageInjector-${fullContextPath}`);
|
|
819
|
+
this.injectorPerContextPath.set(fullContextPath, injectorPerContextPath);
|
|
820
|
+
}
|
|
821
|
+
const pluginSpecificInjector = createEnvironmentInjector([
|
|
822
|
+
{
|
|
823
|
+
provide: C8Y_PLUGIN_NAME,
|
|
824
|
+
useValue: name
|
|
825
|
+
}
|
|
826
|
+
], injectorPerContextPath, `pluginInjector-${fullContextPath}-${name}`);
|
|
827
|
+
try {
|
|
828
|
+
const moduleOrProviders = factory[name];
|
|
829
|
+
let result;
|
|
830
|
+
if (Array.isArray(moduleOrProviders)) {
|
|
831
|
+
result = this.loadProviders(moduleOrProviders, name, pluginSpecificInjector);
|
|
832
|
+
}
|
|
833
|
+
else {
|
|
834
|
+
result = this.loadModule(moduleOrProviders, pluginSpecificInjector);
|
|
835
|
+
}
|
|
836
|
+
const resultWithName = {
|
|
837
|
+
...result,
|
|
838
|
+
name,
|
|
839
|
+
fullContextPath
|
|
840
|
+
};
|
|
841
|
+
loadedResults.push(resultWithName);
|
|
842
|
+
}
|
|
843
|
+
catch (ex) {
|
|
844
|
+
console.error(`Failed to load ${name}`, ex);
|
|
845
|
+
}
|
|
846
|
+
}
|
|
847
|
+
return loadedResults;
|
|
848
|
+
}
|
|
849
|
+
loadProviders(providers, name, parentInjector) {
|
|
850
|
+
const injector = createEnvironmentInjector(providers, parentInjector, `pluginsInjector-${name}`);
|
|
851
|
+
return { injector };
|
|
852
|
+
}
|
|
853
|
+
loadModule(remoteNgModule, parentInjector) {
|
|
854
|
+
let moduleRef;
|
|
855
|
+
if (remoteNgModule instanceof NgModuleRef) {
|
|
856
|
+
// AOT
|
|
857
|
+
moduleRef = remoteNgModule;
|
|
858
|
+
}
|
|
859
|
+
else {
|
|
860
|
+
// JIT
|
|
861
|
+
moduleRef = createNgModule(remoteNgModule, parentInjector);
|
|
862
|
+
}
|
|
863
|
+
return { moduleRef, remoteNgModule, injector: moduleRef.injector };
|
|
864
|
+
}
|
|
865
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: PluginsLoaderService, deps: [{ token: HOOK_PLUGIN, optional: true }, { token: i0.EnvironmentInjector }, { token: PluginsResolveService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
866
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: PluginsLoaderService, providedIn: 'root' }); }
|
|
867
|
+
}
|
|
868
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: PluginsLoaderService, decorators: [{
|
|
869
|
+
type: Injectable,
|
|
870
|
+
args: [{
|
|
871
|
+
providedIn: 'root'
|
|
872
|
+
}]
|
|
873
|
+
}], ctorParameters: () => [{ type: Array, decorators: [{
|
|
874
|
+
type: Optional
|
|
875
|
+
}, {
|
|
876
|
+
type: Inject,
|
|
877
|
+
args: [HOOK_PLUGIN]
|
|
878
|
+
}] }, { type: i0.EnvironmentInjector }, { type: PluginsResolveService }] });
|
|
879
|
+
|
|
871
880
|
const HOOK_CURRENT_USER = new InjectionToken('HOOK_CURRENT_USER');
|
|
872
881
|
const HOOK_CURRENT_APPLICATION = new InjectionToken('HOOK_CURRENT_APPLICATION');
|
|
873
882
|
const HOOK_CURRENT_TENANT = new InjectionToken('HOOK_CURRENT_TENANT');
|
|
@@ -1908,9 +1917,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
1908
1917
|
type: Injectable
|
|
1909
1918
|
}], ctorParameters: () => [{ type: i1$1.TranslateParser }, { type: PatternMessagesService }] });
|
|
1910
1919
|
|
|
1911
|
-
// kept here for backwards compatibility
|
|
1912
|
-
// gettext was moved into separate entry point
|
|
1913
|
-
|
|
1914
1920
|
/* tslint:disable:max-line-length */
|
|
1915
1921
|
const bulkOperationAuditLogTextPlaceholders = {
|
|
1916
1922
|
updatesList: {
|
|
@@ -3794,6 +3800,68 @@ const MESSAGES_CORE_I18N = {
|
|
|
3794
3800
|
seriesParam: '$1',
|
|
3795
3801
|
validFormat: '$2'
|
|
3796
3802
|
}
|
|
3803
|
+
},
|
|
3804
|
+
// Tenant Certificate Authority audit records
|
|
3805
|
+
"^Tenant certificate authority\\(CA\\) created on '(.+?)'.*$": {
|
|
3806
|
+
gettext: gettext$1('Tenant certificate authority (CA) created for tenant "{{ tenantId }}"'),
|
|
3807
|
+
placeholders: {
|
|
3808
|
+
tenantId: '$1'
|
|
3809
|
+
}
|
|
3810
|
+
},
|
|
3811
|
+
"^Certificate fingerprint: '(.+?)'\\.\\n\\s*Certificate subject name: '(.+?)'\\.\\n$": {
|
|
3812
|
+
gettext: gettext$1('Certificate fingerprint: "{{ fingerprint }}".\nCertificate subject name: "{{ subjectName }}".'),
|
|
3813
|
+
placeholders: {
|
|
3814
|
+
fingerprint: '$1',
|
|
3815
|
+
subjectName: '$2'
|
|
3816
|
+
}
|
|
3817
|
+
},
|
|
3818
|
+
"^Tenant certificate authority\\(CA\\) was renewed for Tenant: '(.+?)'.*$": {
|
|
3819
|
+
gettext: gettext$1('Tenant certificate authority (CA) was renewed for tenant "{{ tenantId }}"'),
|
|
3820
|
+
placeholders: {
|
|
3821
|
+
tenantId: '$1'
|
|
3822
|
+
}
|
|
3823
|
+
},
|
|
3824
|
+
"^Certificate fingerprint: '(.+?)'\\.\\n\\s*Certificate subject name: '(.+?)'\\.\\n\\s*NotAfter='(.+?)'.*$": {
|
|
3825
|
+
gettext: gettext$1('Certificate fingerprint: "{{ fingerprint }}".\nCertificate subject name: "{{ subjectName }}".\nExpiration date: {{ expirationDate | absoluteDate }}.'),
|
|
3826
|
+
placeholders: {
|
|
3827
|
+
fingerprint: '$1',
|
|
3828
|
+
subjectName: '$2',
|
|
3829
|
+
expirationDate: '$3'
|
|
3830
|
+
}
|
|
3831
|
+
},
|
|
3832
|
+
"^Tenant certificate authority\\(CA\\) renewal for Tenant: '(.+?)' failed.*$": {
|
|
3833
|
+
gettext: gettext$1('Tenant certificate authority (CA) renewal for tenant "{{ tenantId }}" failed'),
|
|
3834
|
+
placeholders: {
|
|
3835
|
+
tenantId: '$1'
|
|
3836
|
+
}
|
|
3837
|
+
},
|
|
3838
|
+
'^The CA certificate has not been refreshed\\.\\s+It may either still have sufficient remaining validity.*$': {
|
|
3839
|
+
gettext: gettext$1('The CA certificate has not been renewed; however, it may still have sufficient validity remaining.')
|
|
3840
|
+
},
|
|
3841
|
+
"^Provisioned certificate stored in user object: '(.+?)'.*$": {
|
|
3842
|
+
gettext: gettext$1('Provisioned certificate stored in user object: "{{ userName }}"'),
|
|
3843
|
+
placeholders: {
|
|
3844
|
+
userName: '$1'
|
|
3845
|
+
}
|
|
3846
|
+
},
|
|
3847
|
+
"^Certificate serial number: '(.+?)'\\.\\n\\s*NotAfter='(.+?)'.*$": {
|
|
3848
|
+
gettext: gettext$1('Certificate serial number: "{{ serialNumber }}".\nExpiration date: {{ expirationDate | absoluteDate }}.'),
|
|
3849
|
+
placeholders: {
|
|
3850
|
+
serialNumber: '$1',
|
|
3851
|
+
expirationDate: '$2'
|
|
3852
|
+
}
|
|
3853
|
+
},
|
|
3854
|
+
"^Provisioned certificates removed from user: '(.+?)'.*$": {
|
|
3855
|
+
gettext: gettext$1('Provisioned certificates removed from user: "{{ userName }}"'),
|
|
3856
|
+
placeholders: {
|
|
3857
|
+
userName: '$1'
|
|
3858
|
+
}
|
|
3859
|
+
},
|
|
3860
|
+
'^Revoked serials: (.+?)$': {
|
|
3861
|
+
gettext: gettext$1('Revoked serials: {{ revokedSerials }}'),
|
|
3862
|
+
placeholders: {
|
|
3863
|
+
revokedSerials: '$1'
|
|
3864
|
+
}
|
|
3797
3865
|
}
|
|
3798
3866
|
};
|
|
3799
3867
|
|
|
@@ -4811,6 +4879,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
4811
4879
|
}]
|
|
4812
4880
|
}], ctorParameters: () => [{ type: i0.TemplateRef }] });
|
|
4813
4881
|
|
|
4882
|
+
// kept here for backwards compatibility
|
|
4883
|
+
// gettext was moved into separate entry point
|
|
4884
|
+
/**
|
|
4885
|
+
* @deprecated Use `import { gettext } from '@c8y/ngx-components/gettext';` instead.
|
|
4886
|
+
*/
|
|
4887
|
+
function gettext(str) {
|
|
4888
|
+
console.error("`gettext` was moved into separate entry point. Use `import { gettext } from '@c8y/ngx-components/gettext';` instead.");
|
|
4889
|
+
return gettext$1(str);
|
|
4890
|
+
}
|
|
4891
|
+
|
|
4814
4892
|
/**
|
|
4815
4893
|
* A service to provide unmodified, cached translations for angular.
|
|
4816
4894
|
*/
|
|
@@ -8108,7 +8186,8 @@ class UserPreferencesService {
|
|
|
8108
8186
|
async getCurrentUserStorage() {
|
|
8109
8187
|
const currentUser = await firstValueFrom(this.currentUser);
|
|
8110
8188
|
const hasRoleToEditCurrentUser = this.user.hasRole(currentUser, Permissions.ROLE_USER_MANAGEMENT_OWN_ADMIN);
|
|
8111
|
-
const
|
|
8189
|
+
const customProperties = currentUser.customProperties;
|
|
8190
|
+
const isExternalUser = customProperties?.userOrigin === 'OAUTH2';
|
|
8112
8191
|
if (!hasRoleToEditCurrentUser || isExternalUser) {
|
|
8113
8192
|
return null;
|
|
8114
8193
|
}
|
|
@@ -12414,7 +12493,7 @@ class TabsService extends ExtensionPointForPlugins {
|
|
|
12414
12493
|
prepareTabs(tabs) {
|
|
12415
12494
|
return this.sortTabs(tabs
|
|
12416
12495
|
.map(tab => {
|
|
12417
|
-
tab.template = tab.template instanceof
|
|
12496
|
+
tab.template = tab.template instanceof TemplateRef ? tab.template : undefined;
|
|
12418
12497
|
return tab;
|
|
12419
12498
|
})
|
|
12420
12499
|
.filter((tab, index, self) => tab.component || !tab.path || index === self.findIndex(t => isEqual(t.path, tab.path))));
|
|
@@ -13298,7 +13377,7 @@ class TabsOutletComponent {
|
|
|
13298
13377
|
return { widthScroll, width, scrollLeft };
|
|
13299
13378
|
}
|
|
13300
13379
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TabsOutletComponent, deps: [{ token: i1$4.Router }, { token: i0.Renderer2 }, { token: HeaderService }, { token: TabsService }, { token: i1$4.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
13301
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: TabsOutletComponent, isStandalone: true, 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=\"{{
|
|
13380
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: TabsOutletComponent, isStandalone: true, 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 @let tabLabel = tab?.skipLabelTranslation ? tab?.label : (tab?.label | translate);\n <a\n class=\"pointer\"\n title=\"{{ tabLabel }}\"\n (click)=\"tab.onSelect?.emit()\"\n >\n <i\n [c8yIcon]=\"tab?.icon\"\n *ngIf=\"tab?.icon && tab?.label\"\n ></i>\n <span *ngIf=\"tab?.label\">{{ tabLabel }}</span>\n <ng-container *ngTemplateOutlet=\"tab.template; injector: tab.injector\"></ng-container>\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: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i1$5.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: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"], exportAs: ["ngComponentOutlet"] }, { kind: "directive", type: C8yComponentOutlet, selector: "[c8yComponentOutlet]", inputs: ["c8yComponentOutlet", "c8yComponentOutletInjector", "c8yComponentOutletEnvironmentInjector", "c8yComponentOutletProviders", "c8yComponentOutletInitialState"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] }); }
|
|
13302
13381
|
}
|
|
13303
13382
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TabsOutletComponent, decorators: [{
|
|
13304
13383
|
type: Component,
|
|
@@ -13314,7 +13393,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
13314
13393
|
NgComponentOutlet,
|
|
13315
13394
|
C8yComponentOutlet,
|
|
13316
13395
|
C8yTranslatePipe
|
|
13317
|
-
], 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=\"{{
|
|
13396
|
+
], 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 @let tabLabel = tab?.skipLabelTranslation ? tab?.label : (tab?.label | translate);\n <a\n class=\"pointer\"\n title=\"{{ tabLabel }}\"\n (click)=\"tab.onSelect?.emit()\"\n >\n <i\n [c8yIcon]=\"tab?.icon\"\n *ngIf=\"tab?.icon && tab?.label\"\n ></i>\n <span *ngIf=\"tab?.label\">{{ tabLabel }}</span>\n <ng-container *ngTemplateOutlet=\"tab.template; injector: tab.injector\"></ng-container>\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" }]
|
|
13318
13397
|
}], ctorParameters: () => [{ type: i1$4.Router }, { type: i0.Renderer2 }, { type: HeaderService }, { type: TabsService }, { type: i1$4.ActivatedRoute }], propDecorators: { tabs: [{
|
|
13319
13398
|
type: Input
|
|
13320
13399
|
}], orientation: [{
|
|
@@ -14450,7 +14529,13 @@ class SimplifiedAuthService {
|
|
|
14450
14529
|
this.cleanSessionStorage();
|
|
14451
14530
|
this.realtime.disconnect();
|
|
14452
14531
|
this.ui.currentUser.next(null);
|
|
14453
|
-
return Promise.all([
|
|
14532
|
+
return Promise.all([
|
|
14533
|
+
this.basicAuth.logout(),
|
|
14534
|
+
this.cookieAuth.logout(),
|
|
14535
|
+
this.client.authIsInstanceOf(BearerAuthFromSessionStorage)
|
|
14536
|
+
? this.client.performLogoutOnCurrentAuthStrategy()
|
|
14537
|
+
: BearerAuthFromSessionStorage.removeEntriesFromSessionStorage()
|
|
14538
|
+
]);
|
|
14454
14539
|
}
|
|
14455
14540
|
cleanLocalStorage() {
|
|
14456
14541
|
localStorage.removeItem(TOKEN_KEY);
|
|
@@ -16129,7 +16214,7 @@ class TypeaheadComponent {
|
|
|
16129
16214
|
multi: true
|
|
16130
16215
|
},
|
|
16131
16216
|
SelectKeyboardService
|
|
16132
|
-
], queries: [{ propertyName: "list", predicate: ListItemComponent }], viewQueries: [{ propertyName: "searchControl", first: true, predicate: ["searchControl"], descendants: true }, { propertyName: "searchControlModel", first: true, predicate: ["searchControlModel"], descendants: true }, { propertyName: "dropdown", first: true, predicate: ["dropdown"], 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]=\"true\"\n (onShown)=\"onShown()\"\n [isDisabled]=\"disabled\"\n dropdownToggle\n>\n <div\n class=\"input-group input-group-dropdown
|
|
16217
|
+
], queries: [{ propertyName: "list", predicate: ListItemComponent }], viewQueries: [{ propertyName: "searchControl", first: true, predicate: ["searchControl"], descendants: true }, { propertyName: "searchControlModel", first: true, predicate: ["searchControlModel"], descendants: true }, { propertyName: "dropdown", first: true, predicate: ["dropdown"], 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]=\"true\"\n (onShown)=\"onShown()\"\n [isDisabled]=\"disabled\"\n dropdownToggle\n>\n <div\n class=\"input-group input-group-dropdown \"\n role=\"button\"\n >\n <input\n class=\"form-control text-truncate\"\n type=\"text\"\n #searchControl\n #searchControlModel=\"ngModel\"\n [ngClass]=\"{\n 'p-r-80':\n !hideNew &&\n (selected\n ? selected.id === null && getDisplayProperty()?.length > 0 && allowFreeEntries\n : false),\n 'p-r-40': hideNew || getDisplayProperty()?.length === 0\n }\"\n [required]=\"required\"\n [ngModel]=\"selected ? getDisplayProperty() : ''\"\n [placeholder]=\"placeholder | translate\"\n (blur)=\"doBlur()\"\n [name]=\"name\"\n [maxlength]=\"maxlength\"\n [disabled]=\"disabled\"\n />\n <span\n class=\"label label-info p-absolute\"\n style=\"top: 10px; right: 40px; z-index: 10\"\n *ngIf=\"\n !hideNew &&\n (selected\n ? selected.id === null && getDisplayProperty()?.length > 0 && allowFreeEntries\n : false)\n \"\n >\n {{ 'New' | translate }}\n </span>\n\n <span class=\"input-group-btn\">\n <button\n class=\"btn btn-dot\"\n [title]=\"title\"\n type=\"button\"\n [disabled]=\"disabled\"\n (click)=\"onIconClick.emit({ icon, $event })\"\n data-cy=\"typeahead-button\"\n >\n <i\n class=\"text-primary\"\n [c8yIcon]=\"icon\"\n ></i>\n </button>\n </span>\n </div>\n <c8y-list-group\n class=\"dropdown-menu dropdown-menu--modal\"\n [style.width]=\"container === 'body' ? searchControl.clientWidth + 'px' : undefined\"\n role=\"menu\"\n data-cy=\"typeahead--dropdown-menu\"\n *dropdownMenu\n >\n <ng-content select=\"div, c8y-li, c8y-list-item, button, a\"></ng-content>\n </c8y-list-group>\n</div>\n", dependencies: [{ kind: "ngmodule", type: BsDropdownModule }, { kind: "directive", type: i1$3.BsDropdownMenuDirective, selector: "[bsDropdownMenu],[dropdownMenu]", exportAs: ["bs-dropdown-menu"] }, { kind: "directive", type: i1$3.BsDropdownToggleDirective, selector: "[bsDropdownToggle],[dropdownToggle]", exportAs: ["bs-dropdown-toggle"] }, { kind: "directive", type: i1$3.BsDropdownDirective, selector: "[bsDropdown], [dropdown]", inputs: ["placement", "triggers", "container", "dropup", "autoClose", "isAnimated", "insideClick", "isDisabled", "isOpen"], outputs: ["isOpenChange", "onShown", "onHidden"], exportAs: ["bs-dropdown"] }, { kind: "directive", type: RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "ngmodule", type: FormsModule$1 }, { kind: "directive", type: i1$8.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$8.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1$8.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i1$8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "component", type: ListGroupComponent, selector: "c8y-list-group" }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] }); }
|
|
16133
16218
|
}
|
|
16134
16219
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TypeaheadComponent, decorators: [{
|
|
16135
16220
|
type: Component,
|
|
@@ -16154,7 +16239,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
16154
16239
|
IconDirective,
|
|
16155
16240
|
ListGroupComponent,
|
|
16156
16241
|
C8yTranslatePipe
|
|
16157
|
-
], 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]=\"true\"\n (onShown)=\"onShown()\"\n [isDisabled]=\"disabled\"\n dropdownToggle\n>\n <div\n class=\"input-group input-group-dropdown
|
|
16242
|
+
], 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]=\"true\"\n (onShown)=\"onShown()\"\n [isDisabled]=\"disabled\"\n dropdownToggle\n>\n <div\n class=\"input-group input-group-dropdown \"\n role=\"button\"\n >\n <input\n class=\"form-control text-truncate\"\n type=\"text\"\n #searchControl\n #searchControlModel=\"ngModel\"\n [ngClass]=\"{\n 'p-r-80':\n !hideNew &&\n (selected\n ? selected.id === null && getDisplayProperty()?.length > 0 && allowFreeEntries\n : false),\n 'p-r-40': hideNew || getDisplayProperty()?.length === 0\n }\"\n [required]=\"required\"\n [ngModel]=\"selected ? getDisplayProperty() : ''\"\n [placeholder]=\"placeholder | translate\"\n (blur)=\"doBlur()\"\n [name]=\"name\"\n [maxlength]=\"maxlength\"\n [disabled]=\"disabled\"\n />\n <span\n class=\"label label-info p-absolute\"\n style=\"top: 10px; right: 40px; z-index: 10\"\n *ngIf=\"\n !hideNew &&\n (selected\n ? selected.id === null && getDisplayProperty()?.length > 0 && allowFreeEntries\n : false)\n \"\n >\n {{ 'New' | translate }}\n </span>\n\n <span class=\"input-group-btn\">\n <button\n class=\"btn btn-dot\"\n [title]=\"title\"\n type=\"button\"\n [disabled]=\"disabled\"\n (click)=\"onIconClick.emit({ icon, $event })\"\n data-cy=\"typeahead-button\"\n >\n <i\n class=\"text-primary\"\n [c8yIcon]=\"icon\"\n ></i>\n </button>\n </span>\n </div>\n <c8y-list-group\n class=\"dropdown-menu dropdown-menu--modal\"\n [style.width]=\"container === 'body' ? searchControl.clientWidth + 'px' : undefined\"\n role=\"menu\"\n data-cy=\"typeahead--dropdown-menu\"\n *dropdownMenu\n >\n <ng-content select=\"div, c8y-li, c8y-list-item, button, a\"></ng-content>\n </c8y-list-group>\n</div>\n" }]
|
|
16158
16243
|
}], ctorParameters: () => [{ type: SelectKeyboardService }], propDecorators: { searchControl: [{
|
|
16159
16244
|
type: ViewChild,
|
|
16160
16245
|
args: ['searchControl', { static: false }]
|
|
@@ -17036,8 +17121,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
17036
17121
|
type: Optional
|
|
17037
17122
|
}] }] });
|
|
17038
17123
|
|
|
17124
|
+
/**
|
|
17125
|
+
* Bottom drawer component that slides up from the bottom of the viewport.
|
|
17126
|
+
* Typically managed by BottomDrawerService.
|
|
17127
|
+
*/
|
|
17039
17128
|
class BottomDrawerComponent {
|
|
17040
|
-
constructor() {
|
|
17129
|
+
constructor(drawerRef) {
|
|
17130
|
+
this.drawerRef = drawerRef;
|
|
17041
17131
|
/**
|
|
17042
17132
|
* When enabled, clicking outside the drawer will not close it.
|
|
17043
17133
|
*/
|
|
@@ -17048,20 +17138,40 @@ class BottomDrawerComponent {
|
|
|
17048
17138
|
get drawerOpen$() {
|
|
17049
17139
|
return this.drawerOpenObs$;
|
|
17050
17140
|
}
|
|
17141
|
+
/**
|
|
17142
|
+
* Handles Escape key press to close the drawer.
|
|
17143
|
+
*/
|
|
17144
|
+
onEscapeKey(event) {
|
|
17145
|
+
event.preventDefault();
|
|
17146
|
+
if (this.drawerRef) {
|
|
17147
|
+
this.drawerRef.close();
|
|
17148
|
+
}
|
|
17149
|
+
else {
|
|
17150
|
+
this.hide();
|
|
17151
|
+
}
|
|
17152
|
+
}
|
|
17153
|
+
/**
|
|
17154
|
+
* Hides the drawer with animation.
|
|
17155
|
+
*/
|
|
17051
17156
|
hide() {
|
|
17052
17157
|
this.disableClickOutside = false;
|
|
17053
17158
|
this.drawerOpenSubject$.next(false);
|
|
17054
17159
|
this.drawerOpenSubject$.complete();
|
|
17055
17160
|
}
|
|
17056
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: BottomDrawerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
17057
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: BottomDrawerComponent, isStandalone: true, selector: "c8y-bottom-drawer", viewQueries: [{ propertyName: "drawerHost", first: true, predicate: ["drawerHost"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: "<div [ngClass]=\"{ drawerOpen: drawerOpen$ | async }\">\n <div\n class=\"bottom-drawer\"\n [ngClass]=\"{ 'has-backdrop': disableClickOutside }\"\n >\n <div class=\"d-flex d-col no-align-items fit-h\">\n <ng-template #drawerHost></ng-template>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "ngmodule", type: CommonModule$1 }, { kind: "directive", type:
|
|
17161
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: BottomDrawerComponent, deps: [{ token: BottomDrawerRef, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
17162
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: BottomDrawerComponent, isStandalone: true, selector: "c8y-bottom-drawer", host: { listeners: { "document:keydown.escape": "onEscapeKey($event)" } }, viewQueries: [{ propertyName: "drawerHost", first: true, predicate: ["drawerHost"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: "<div [ngClass]=\"{ drawerOpen: drawerOpen$ | async }\">\n <div\n class=\"bottom-drawer\"\n [cdkTrapFocus]=\"drawerOpen$ | async\"\n role=\"dialog\" \n aria-modal=\"true\" \n aria-labelledby=\"drawerTitle\"\n [ngClass]=\"{ 'has-backdrop': disableClickOutside }\"\n >\n <div class=\"d-flex d-col no-align-items fit-h\">\n <ng-template #drawerHost></ng-template>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "ngmodule", type: CommonModule$1 }, { kind: "directive", type: i2$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: i2$3.AsyncPipe, name: "async" }, { kind: "directive", type: CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }] }); }
|
|
17058
17163
|
}
|
|
17059
17164
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: BottomDrawerComponent, decorators: [{
|
|
17060
17165
|
type: Component,
|
|
17061
|
-
args: [{ standalone: true, selector: 'c8y-bottom-drawer', imports: [CommonModule$1], template: "<div [ngClass]=\"{ drawerOpen: drawerOpen$ | async }\">\n <div\n class=\"bottom-drawer\"\n [ngClass]=\"{ 'has-backdrop': disableClickOutside }\"\n >\n <div class=\"d-flex d-col no-align-items fit-h\">\n <ng-template #drawerHost></ng-template>\n </div>\n </div>\n</div>\n" }]
|
|
17062
|
-
}],
|
|
17166
|
+
args: [{ standalone: true, selector: 'c8y-bottom-drawer', imports: [CommonModule$1, CdkTrapFocus], template: "<div [ngClass]=\"{ drawerOpen: drawerOpen$ | async }\">\n <div\n class=\"bottom-drawer\"\n [cdkTrapFocus]=\"drawerOpen$ | async\"\n role=\"dialog\" \n aria-modal=\"true\" \n aria-labelledby=\"drawerTitle\"\n [ngClass]=\"{ 'has-backdrop': disableClickOutside }\"\n >\n <div class=\"d-flex d-col no-align-items fit-h\">\n <ng-template #drawerHost></ng-template>\n </div>\n </div>\n</div>\n" }]
|
|
17167
|
+
}], ctorParameters: () => [{ type: BottomDrawerRef, decorators: [{
|
|
17168
|
+
type: Optional
|
|
17169
|
+
}] }], propDecorators: { drawerHost: [{
|
|
17063
17170
|
type: ViewChild,
|
|
17064
17171
|
args: ['drawerHost', { read: ViewContainerRef }]
|
|
17172
|
+
}], onEscapeKey: [{
|
|
17173
|
+
type: HostListener,
|
|
17174
|
+
args: ['document:keydown.escape', ['$event']]
|
|
17065
17175
|
}] } });
|
|
17066
17176
|
|
|
17067
17177
|
const DRAWER_ANIMATION_TIME = 400;
|
|
@@ -17136,7 +17246,15 @@ class BottomDrawerRef {
|
|
|
17136
17246
|
}
|
|
17137
17247
|
|
|
17138
17248
|
/**
|
|
17139
|
-
*
|
|
17249
|
+
* Service for opening components in a bottom drawer.
|
|
17250
|
+
*
|
|
17251
|
+
* @example
|
|
17252
|
+
* ```typescript
|
|
17253
|
+
* const drawer = this.drawerService.openDrawer(MyComponent, {
|
|
17254
|
+
* initialState: { data: 'some data' },
|
|
17255
|
+
* disableClickOutside: true
|
|
17256
|
+
* });
|
|
17257
|
+
* ```
|
|
17140
17258
|
*/
|
|
17141
17259
|
class BottomDrawerService {
|
|
17142
17260
|
constructor(applicationRef, router) {
|
|
@@ -17144,11 +17262,11 @@ class BottomDrawerService {
|
|
|
17144
17262
|
this.router = router;
|
|
17145
17263
|
}
|
|
17146
17264
|
/**
|
|
17147
|
-
* Opens
|
|
17265
|
+
* Opens a component in a bottom drawer.
|
|
17148
17266
|
*
|
|
17149
|
-
* @param component The component type to render
|
|
17150
|
-
* @param options
|
|
17151
|
-
* @returns A reference to the bottom drawer
|
|
17267
|
+
* @param component - The component type to render
|
|
17268
|
+
* @param options - Configuration options (initialState, disableClickOutside, closeOnNavigation, host)
|
|
17269
|
+
* @returns A reference to the bottom drawer instance
|
|
17152
17270
|
*/
|
|
17153
17271
|
openDrawer(component, options) {
|
|
17154
17272
|
return new BottomDrawerRef(component, this.applicationRef, this.router, options);
|
|
@@ -17703,6 +17821,87 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
17703
17821
|
}]
|
|
17704
17822
|
}], ctorParameters: () => [{ type: PreviewService }] });
|
|
17705
17823
|
|
|
17824
|
+
const PRODUCT_EXPERIENCE_FEEDBACK_FORM = {
|
|
17825
|
+
EVENTS: {
|
|
17826
|
+
FORM_SUBMIT: 'feedback-form-submit'
|
|
17827
|
+
}
|
|
17828
|
+
};
|
|
17829
|
+
|
|
17830
|
+
class FeedbackFormComponent {
|
|
17831
|
+
constructor(fb, gainsightService) {
|
|
17832
|
+
this.fb = fb;
|
|
17833
|
+
this.gainsightService = gainsightService;
|
|
17834
|
+
this.feedbackMessageTpl = gettext('We want to hear from you. Share your feedback on the <strong>{{featurePreviewName}}</strong> feature preview to help us improve Cumulocity.');
|
|
17835
|
+
this.stars = [1, 2, 3, 4, 5];
|
|
17836
|
+
this.hoveredRating = 0;
|
|
17837
|
+
this.ratingLockOnHover = false;
|
|
17838
|
+
this.submitted = {};
|
|
17839
|
+
this.feedbackForm = this.initForm();
|
|
17840
|
+
}
|
|
17841
|
+
ngOnChanges(changes) {
|
|
17842
|
+
if (changes['featureKey'] && !changes['featureKey'].firstChange) {
|
|
17843
|
+
this.feedbackForm.reset();
|
|
17844
|
+
this.submitted[this.featureKey] = false;
|
|
17845
|
+
this.ratingLockOnHover = false;
|
|
17846
|
+
this.hoveredRating = 0;
|
|
17847
|
+
}
|
|
17848
|
+
}
|
|
17849
|
+
setRating(star) {
|
|
17850
|
+
this.feedbackForm.patchValue({ rating: star });
|
|
17851
|
+
this.ratingLockOnHover = true;
|
|
17852
|
+
}
|
|
17853
|
+
onMouseDown(star) {
|
|
17854
|
+
if (this.hoveredRating > 0) {
|
|
17855
|
+
this.hoveredRating = star; // needed in case ratingLockOnHover is true
|
|
17856
|
+
this.setRating(star);
|
|
17857
|
+
}
|
|
17858
|
+
}
|
|
17859
|
+
onMouseEnter(star) {
|
|
17860
|
+
if (!this.ratingLockOnHover) {
|
|
17861
|
+
this.hoveredRating = star;
|
|
17862
|
+
}
|
|
17863
|
+
}
|
|
17864
|
+
onMouseLeave() {
|
|
17865
|
+
if (!this.ratingLockOnHover) {
|
|
17866
|
+
this.hoveredRating = 0;
|
|
17867
|
+
}
|
|
17868
|
+
}
|
|
17869
|
+
onSubmit() {
|
|
17870
|
+
if (this.feedbackForm.valid) {
|
|
17871
|
+
this.gainsightService.triggerEvent(PRODUCT_EXPERIENCE_FEEDBACK_FORM.EVENTS.FORM_SUBMIT, {
|
|
17872
|
+
component: this.featureKey,
|
|
17873
|
+
...this.feedbackForm.value
|
|
17874
|
+
});
|
|
17875
|
+
this.feedbackForm.reset();
|
|
17876
|
+
this.submitted[this.featureKey] = true;
|
|
17877
|
+
this.ratingLockOnHover = false;
|
|
17878
|
+
this.hoveredRating = 0;
|
|
17879
|
+
}
|
|
17880
|
+
}
|
|
17881
|
+
initForm() {
|
|
17882
|
+
return this.fb.group({
|
|
17883
|
+
feedback: ['', [Validators.maxLength(900)]],
|
|
17884
|
+
rating: [null, [Validators.required]],
|
|
17885
|
+
contactViaEmail: [false]
|
|
17886
|
+
});
|
|
17887
|
+
}
|
|
17888
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: FeedbackFormComponent, deps: [{ token: i1$8.FormBuilder }, { token: GainsightService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
17889
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: FeedbackFormComponent, isStandalone: true, selector: "c8y-feedback-form", inputs: { featureKey: "featureKey", featurePreviewName: "featurePreviewName" }, usesOnChanges: true, ngImport: i0, template: "<form\n class=\"card card-highlight b-r-16 m-t-40\"\n [formGroup]=\"feedbackForm\"\n (ngSubmit)=\"onSubmit()\"\n>\n <div class=\"card-header p-48 p-b-24\">\n <h3 translate>We value your feedback.</h3>\n </div>\n <div class=\"card-block p-48 p-t-0\">\n <div class=\"d-flex-md row\">\n <div class=\"col-md-4\">\n <p\n class=\"m-b-8\"\n [innerHTML]=\"feedbackMessageTpl | translate: { featurePreviewName: featurePreviewName }\"\n ></p>\n <p\n class=\"m-b-24\"\n translate\n >\n Your insights and suggestions directly influence the future of the platform.\n </p>\n </div>\n <div\n class=\"col-md-7\"\n style=\"min-height: 256px\"\n >\n @if (!submitted[featureKey]) {\n <div class=\"form-group\">\n <label class=\"text-medium\">\n {{ 'How would you rate your experience with this feature?' | translate }}\n </label>\n <div\n class=\"d-flex a-i-center gap-4\"\n (mouseleave)=\"onMouseLeave()\"\n >\n @for (star of stars; track star) {\n <button\n class=\"btn-clean btn-lg\"\n [attr.aria-label]=\"\n 'Your rating: {{ starCount }} star(s)' | translate: { starCount: star }\n \"\n type=\"button\"\n (mousedown)=\"onMouseDown(star)\"\n (mouseenter)=\"onMouseEnter(star)\"\n >\n @if (star <= (hoveredRating || feedbackForm.get('rating')?.value || 0)) {\n <i class=\"dlt-c8y-icon-star stroked-icon status minor\"></i>\n } @else {\n <i class=\"dlt-c8y-icon-star-outline status\"></i>\n }\n </button>\n }\n </div>\n </div>\n\n <div class=\"form-group\">\n <label\n class=\"text-medium\"\n for=\"feedback\"\n translate\n >\n Share your feedback, suggestions, or any issues you\u2019ve encountered.\n </label>\n <textarea\n class=\"form-control no-resize inner-scroll\"\n style=\"max-height: 100px !important\"\n [attr.aria-label]=\"'Enter your feedback here' | translate\"\n id=\"feedback\"\n c8y-textarea-autoresize\n formControlName=\"feedback\"\n maxlength=\"900\"\n ></textarea>\n </div>\n\n <label class=\"c8y-switch\">\n <input\n id=\"contactViaEmail\"\n type=\"checkbox\"\n formControlName=\"contactViaEmail\"\n />\n <span></span>\n <span>\n {{ 'I\u2019m open to being contacted for follow-up about my feedback' | translate }}\n </span>\n </label>\n\n <button\n class=\"btn btn-primary m-t-24\"\n type=\"submit\"\n [disabled]=\"feedbackForm.invalid\"\n translate\n >\n Submit feedback\n </button>\n } @else {\n <c8y-operation-result\n class=\"d-block\"\n style=\"margin-top: -40px\"\n type=\"success\"\n [size]=\"90\"\n text=\"{{ 'Thank you for your feedback.' | translate }}\"\n [vertical]=\"true\"\n ></c8y-operation-result>\n }\n </div>\n </div>\n </div>\n</form>\n", dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$8.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$8.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$8.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1$8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$8.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$8.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i1$8.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$8.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: TextareaAutoresizeDirective, selector: "[c8y-textarea-autoresize]" }, { kind: "ngmodule", type: C8yTranslateModule }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "component", type: OperationResultComponent, selector: "c8y-operation-result", inputs: ["text", "vertical", "size", "type"] }] }); }
|
|
17890
|
+
}
|
|
17891
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: FeedbackFormComponent, decorators: [{
|
|
17892
|
+
type: Component,
|
|
17893
|
+
args: [{ selector: 'c8y-feedback-form', standalone: true, imports: [
|
|
17894
|
+
ReactiveFormsModule,
|
|
17895
|
+
TextareaAutoresizeDirective,
|
|
17896
|
+
C8yTranslateModule,
|
|
17897
|
+
OperationResultComponent
|
|
17898
|
+
], template: "<form\n class=\"card card-highlight b-r-16 m-t-40\"\n [formGroup]=\"feedbackForm\"\n (ngSubmit)=\"onSubmit()\"\n>\n <div class=\"card-header p-48 p-b-24\">\n <h3 translate>We value your feedback.</h3>\n </div>\n <div class=\"card-block p-48 p-t-0\">\n <div class=\"d-flex-md row\">\n <div class=\"col-md-4\">\n <p\n class=\"m-b-8\"\n [innerHTML]=\"feedbackMessageTpl | translate: { featurePreviewName: featurePreviewName }\"\n ></p>\n <p\n class=\"m-b-24\"\n translate\n >\n Your insights and suggestions directly influence the future of the platform.\n </p>\n </div>\n <div\n class=\"col-md-7\"\n style=\"min-height: 256px\"\n >\n @if (!submitted[featureKey]) {\n <div class=\"form-group\">\n <label class=\"text-medium\">\n {{ 'How would you rate your experience with this feature?' | translate }}\n </label>\n <div\n class=\"d-flex a-i-center gap-4\"\n (mouseleave)=\"onMouseLeave()\"\n >\n @for (star of stars; track star) {\n <button\n class=\"btn-clean btn-lg\"\n [attr.aria-label]=\"\n 'Your rating: {{ starCount }} star(s)' | translate: { starCount: star }\n \"\n type=\"button\"\n (mousedown)=\"onMouseDown(star)\"\n (mouseenter)=\"onMouseEnter(star)\"\n >\n @if (star <= (hoveredRating || feedbackForm.get('rating')?.value || 0)) {\n <i class=\"dlt-c8y-icon-star stroked-icon status minor\"></i>\n } @else {\n <i class=\"dlt-c8y-icon-star-outline status\"></i>\n }\n </button>\n }\n </div>\n </div>\n\n <div class=\"form-group\">\n <label\n class=\"text-medium\"\n for=\"feedback\"\n translate\n >\n Share your feedback, suggestions, or any issues you\u2019ve encountered.\n </label>\n <textarea\n class=\"form-control no-resize inner-scroll\"\n style=\"max-height: 100px !important\"\n [attr.aria-label]=\"'Enter your feedback here' | translate\"\n id=\"feedback\"\n c8y-textarea-autoresize\n formControlName=\"feedback\"\n maxlength=\"900\"\n ></textarea>\n </div>\n\n <label class=\"c8y-switch\">\n <input\n id=\"contactViaEmail\"\n type=\"checkbox\"\n formControlName=\"contactViaEmail\"\n />\n <span></span>\n <span>\n {{ 'I\u2019m open to being contacted for follow-up about my feedback' | translate }}\n </span>\n </label>\n\n <button\n class=\"btn btn-primary m-t-24\"\n type=\"submit\"\n [disabled]=\"feedbackForm.invalid\"\n translate\n >\n Submit feedback\n </button>\n } @else {\n <c8y-operation-result\n class=\"d-block\"\n style=\"margin-top: -40px\"\n type=\"success\"\n [size]=\"90\"\n text=\"{{ 'Thank you for your feedback.' | translate }}\"\n [vertical]=\"true\"\n ></c8y-operation-result>\n }\n </div>\n </div>\n </div>\n</form>\n" }]
|
|
17899
|
+
}], ctorParameters: () => [{ type: i1$8.FormBuilder }, { type: GainsightService }], propDecorators: { featureKey: [{
|
|
17900
|
+
type: Input
|
|
17901
|
+
}], featurePreviewName: [{
|
|
17902
|
+
type: Input
|
|
17903
|
+
}] } });
|
|
17904
|
+
|
|
17706
17905
|
class PreviewFeatureComponent {
|
|
17707
17906
|
constructor() {
|
|
17708
17907
|
this.description$ = new BehaviorSubject('');
|
|
@@ -17758,11 +17957,19 @@ class PreviewFeatureComponent {
|
|
|
17758
17957
|
});
|
|
17759
17958
|
}
|
|
17760
17959
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: PreviewFeatureComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
17761
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
17960
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: PreviewFeatureComponent, isStandalone: true, selector: "c8y-preview-feature", host: { classAttribute: "d-contents" }, providers: [MarkdownToHtmlPipe], ngImport: i0, template: "<div class=\"card-block separator-bottom bg-component text-center flex-no-shrink p-24\">\n <div class=\"d-flex fit-w a-i-center j-c-center\">\n <i\n class=\"icon-24 m-r-8\"\n [c8yIcon]=\"'science'\"\n ></i>\n <h3\n class=\"m-0\"\n translate\n >\n Preview features\n </h3>\n </div>\n <p class=\"text-16 m-t-8\">\n {{\n 'Select any feature to view additional details and documentation. Toggle features on or off using the switches.'\n | translate\n }}\n </p>\n\n <p>\n {{\n 'These beta capabilities may change or be removed before final release. We value your feedback. The descriptions for the features below are available only in English.'\n | translate\n }}\n </p>\n</div>\n\n<div class=\"card-block p-0\">\n <div class=\"d-flex fit-h\">\n <div class=\"col-md-4 col-lg-3 p-l-0 p-r-0 sticky-top m-t-0 inner-scroll bg-level-1\">\n <div class=\"nav-tabs nav-tabs-vertical nav-tabs-vertical--wide p-t-0\">\n <div\n [class.active]=\"feature === selectedFeature\"\n class=\"d-flex fit-w a-i-center\"\n *ngFor=\"let feature of features$ | async\"\n >\n <button\n class=\"d-flex gap-4 text-truncate flex-grow min-width-0\"\n title=\"{{ feature.label }}\"\n [ngClass]=\"{\n 'bg-component': feature === selectedFeature,\n 'bg-level-1': feature !== selectedFeature\n }\"\n (click)=\"updateSelectedFeature(feature)\"\n >\n <i\n class=\"m-l-0\"\n [c8yIcon]=\"'science'\"\n ></i>\n <span class=\"text-truncate\">\n {{ feature.label }}\n </span>\n </button>\n <div\n class=\"a-s-stretch d-flex a-i-center separator-bottom p-r-16\"\n [ngClass]=\"{\n 'bg-component': feature === selectedFeature,\n 'bg-level-1': feature !== selectedFeature\n }\"\n >\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Enable or disable' | translate }}\"\n >\n <input\n [attr.aria-label]=\"feature.label\"\n type=\"checkbox\"\n [checked]=\"feature.key | featureState | async\"\n (change)=\"$event.stopPropagation(); onToggle(feature, $event)\"\n />\n <span class=\"slider round\"></span>\n </label>\n </div>\n </div>\n </div>\n </div>\n\n <div\n class=\"col-md-8 col-lg-9 p-24 inner-scroll markdown-content\"\n *ngIf=\"selectedFeature\"\n >\n <span class=\"tag tag--primary h4\">\n {{ 'Feature preview' | translate }} \u2014 {{ selectedFeature.label }}\n </span>\n <div *ngIf=\"isComponent(description$.value); else stringDescription\">\n <ng-container *ngComponentOutlet=\"description$.value\"></ng-container>\n @if (selectedFeature.key) {\n <c8y-feedback-form\n [featureKey]=\"selectedFeature.key\"\n [featurePreviewName]=\"selectedFeature.label\"\n ></c8y-feedback-form>\n }\n </div>\n </div>\n </div>\n</div>\n\n<div class=\"text-center card-footer p-24 separator\">\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Close' | translate }}\"\n type=\"button\"\n (click)=\"close()\"\n >\n {{ 'Close' | translate }}\n </button>\n</div>\n\n<ng-template #stringDescription>\n <p [innerHTML]=\"description$.value\"></p>\n @if (selectedFeature.key) {\n <c8y-feedback-form\n [featureKey]=\"selectedFeature.key\"\n [featurePreviewName]=\"selectedFeature.label\"\n ></c8y-feedback-form>\n }\n</ng-template>\n", dependencies: [{ kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i2$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2$3.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"], exportAs: ["ngComponentOutlet"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "ngmodule", type: ListGroupModule }, { kind: "pipe", type: FeatureStatePipe, name: "featureState" }, { kind: "component", type: FeedbackFormComponent, selector: "c8y-feedback-form", inputs: ["featureKey", "featurePreviewName"] }] }); }
|
|
17762
17961
|
}
|
|
17763
17962
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: PreviewFeatureComponent, decorators: [{
|
|
17764
17963
|
type: Component,
|
|
17765
|
-
args: [{ selector: 'c8y-preview-feature', host: { class: 'd-contents' }, standalone: true, imports: [
|
|
17964
|
+
args: [{ selector: 'c8y-preview-feature', host: { class: 'd-contents' }, standalone: true, imports: [
|
|
17965
|
+
NgForOf,
|
|
17966
|
+
NgIf,
|
|
17967
|
+
AsyncPipe,
|
|
17968
|
+
CommonModule,
|
|
17969
|
+
ListGroupModule,
|
|
17970
|
+
FeatureStatePipe,
|
|
17971
|
+
FeedbackFormComponent
|
|
17972
|
+
], providers: [MarkdownToHtmlPipe], template: "<div class=\"card-block separator-bottom bg-component text-center flex-no-shrink p-24\">\n <div class=\"d-flex fit-w a-i-center j-c-center\">\n <i\n class=\"icon-24 m-r-8\"\n [c8yIcon]=\"'science'\"\n ></i>\n <h3\n class=\"m-0\"\n translate\n >\n Preview features\n </h3>\n </div>\n <p class=\"text-16 m-t-8\">\n {{\n 'Select any feature to view additional details and documentation. Toggle features on or off using the switches.'\n | translate\n }}\n </p>\n\n <p>\n {{\n 'These beta capabilities may change or be removed before final release. We value your feedback. The descriptions for the features below are available only in English.'\n | translate\n }}\n </p>\n</div>\n\n<div class=\"card-block p-0\">\n <div class=\"d-flex fit-h\">\n <div class=\"col-md-4 col-lg-3 p-l-0 p-r-0 sticky-top m-t-0 inner-scroll bg-level-1\">\n <div class=\"nav-tabs nav-tabs-vertical nav-tabs-vertical--wide p-t-0\">\n <div\n [class.active]=\"feature === selectedFeature\"\n class=\"d-flex fit-w a-i-center\"\n *ngFor=\"let feature of features$ | async\"\n >\n <button\n class=\"d-flex gap-4 text-truncate flex-grow min-width-0\"\n title=\"{{ feature.label }}\"\n [ngClass]=\"{\n 'bg-component': feature === selectedFeature,\n 'bg-level-1': feature !== selectedFeature\n }\"\n (click)=\"updateSelectedFeature(feature)\"\n >\n <i\n class=\"m-l-0\"\n [c8yIcon]=\"'science'\"\n ></i>\n <span class=\"text-truncate\">\n {{ feature.label }}\n </span>\n </button>\n <div\n class=\"a-s-stretch d-flex a-i-center separator-bottom p-r-16\"\n [ngClass]=\"{\n 'bg-component': feature === selectedFeature,\n 'bg-level-1': feature !== selectedFeature\n }\"\n >\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Enable or disable' | translate }}\"\n >\n <input\n [attr.aria-label]=\"feature.label\"\n type=\"checkbox\"\n [checked]=\"feature.key | featureState | async\"\n (change)=\"$event.stopPropagation(); onToggle(feature, $event)\"\n />\n <span class=\"slider round\"></span>\n </label>\n </div>\n </div>\n </div>\n </div>\n\n <div\n class=\"col-md-8 col-lg-9 p-24 inner-scroll markdown-content\"\n *ngIf=\"selectedFeature\"\n >\n <span class=\"tag tag--primary h4\">\n {{ 'Feature preview' | translate }} \u2014 {{ selectedFeature.label }}\n </span>\n <div *ngIf=\"isComponent(description$.value); else stringDescription\">\n <ng-container *ngComponentOutlet=\"description$.value\"></ng-container>\n @if (selectedFeature.key) {\n <c8y-feedback-form\n [featureKey]=\"selectedFeature.key\"\n [featurePreviewName]=\"selectedFeature.label\"\n ></c8y-feedback-form>\n }\n </div>\n </div>\n </div>\n</div>\n\n<div class=\"text-center card-footer p-24 separator\">\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Close' | translate }}\"\n type=\"button\"\n (click)=\"close()\"\n >\n {{ 'Close' | translate }}\n </button>\n</div>\n\n<ng-template #stringDescription>\n <p [innerHTML]=\"description$.value\"></p>\n @if (selectedFeature.key) {\n <c8y-feedback-form\n [featureKey]=\"selectedFeature.key\"\n [featurePreviewName]=\"selectedFeature.label\"\n ></c8y-feedback-form>\n }\n</ng-template>\n" }]
|
|
17766
17973
|
}], ctorParameters: () => [] });
|
|
17767
17974
|
|
|
17768
17975
|
class PreviewFeatureQueryParamDrawerFactory {
|
|
@@ -18278,7 +18485,7 @@ class SearchInputComponent {
|
|
|
18278
18485
|
this.isLoading = term.length > 0;
|
|
18279
18486
|
}
|
|
18280
18487
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: SearchInputComponent, deps: [{ token: i1$4.Router }, { token: i1.InventoryService }, { token: InventorySearchService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
18281
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: SearchInputComponent, isStandalone: true, selector: "c8y-search-input", inputs: { mode: "mode", enableCustomTemplatePlaceholder: "enableCustomTemplatePlaceholder", customPlaceholder: "customPlaceholder", externalTerm: "externalTerm", customDataQuery: "customDataQuery", container: "container", groupsOnly: "groupsOnly" }, outputs: { filter: "filter", search: "search", reset: "reset", onClick: "onClick", onOpenToggle: "onOpenToggle" }, host: { listeners: { "document:keydown": "onKeydownHandler($event)" } }, viewQueries: [{ propertyName: "typeahead", first: true, predicate: TypeaheadComponent, descendants: true }, { propertyName: "dropdown", first: true, predicate: ["searchDropdown"], descendants: true }], ngImport: i0, template: "<div\n class=\"dropdown\"\n #searchDropdown=\"bs-dropdown\"\n [insideClick]=\"true\"\n (isOpenChange)=\"onOpenChange($event)\"\n [cdkTrapFocus]=\"searchDropdown.isOpen\"\n *ngIf=\"mode === 'search' || mode === 'wildcardsearch'\"\n dropdown\n>\n <button\n class=\"main-header-button dropdown-toggle c8y-dropdown\"\n [title]=\"'Search' | translate\"\n type=\"button\"\n dropdownToggle\n data-cy=\"search-input--search-btn\"\n >\n <i\n class=\"icon-2x\"\n c8yIcon=\"search\"\n ></i>\n </button>\n\n <div\n class=\"search-header-menu dropdown-menu dropdown-menu-right\"\n id=\"searchDropdown\"\n *dropdownMenu\n >\n <ng-container *ngTemplateOutlet=\"form\"></ng-container>\n </div>\n</div>\n\n<div\n class=\"search-header-inline\"\n *ngIf=\"mode === 'select'\"\n>\n <ng-container *ngTemplateOutlet=\"form\"></ng-container>\n</div>\n<ng-template #form>\n <form\n [ngClass]=\"{ 'c8y-search-form': mode === 'search' || mode === 'wildcardsearch' }\"\n novalidate\n #searchForm=\"ngForm\"\n >\n <c8y-typeahead\n (onIconClick)=\"onReset($event)\"\n [icon]=\"term ? 'times' : 'search'\"\n [title]=\"(term ? RESET_TEXT : SEARCH_TEXT) | translate\"\n placeholder=\"{{ customPlaceholder ? customPlaceholder : defaultPlaceholder }}\"\n name=\"selected\"\n [(ngModel)]=\"selected\"\n (keydown)=\"keyDown($event)\"\n [allowFreeEntries]=\"false\"\n [container]=\"container\"\n [highlightFirstItem]=\"false\"\n >\n <div *ngIf=\"enableCustomTemplatePlaceholder\">\n <ng-content></ng-content>\n </div>\n\n <!-- filter buttons -->\n <c8y-li\n class=\"m-l-32 m-r-32\"\n *ngIf=\"term.length !== 0 && mode === 'search'\"\n [selectable]=\"false\"\n >\n <div class=\"d-flex\">\n <p class=\"m-r-4 text-muted\">\n <em translate>Searching by exact match. Click for other search options:</em>\n </p>\n <div class=\"btn-group btn-group-sm\">\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Starts with' | translate }}\"\n type=\"button\"\n data-cy=\"search-input--search-starts-with\"\n (click)=\"onFilter(term + '*')\"\n >\n {{ 'Starts with' | translate }}\n </button>\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Contains' | translate }}\"\n type=\"button\"\n data-cy=\"search-input--search-contains\"\n (click)=\"onFilter('*' + term + '*')\"\n >\n {{ 'Contains' | translate }}\n </button>\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Ends with' | translate }}\"\n type=\"button\"\n data-cy=\"search-input--search-ends-with\"\n (click)=\"onFilter('*' + term)\"\n >\n {{ 'Ends with' | translate }}\n </button>\n </div>\n </div>\n </c8y-li>\n\n <!-- Recent search -->\n <c8y-li\n class=\"m-l-32 m-r-32\"\n *ngIf=\"term.length === 0 && recentSearchResults.length > 0\"\n [selectable]=\"false\"\n >\n <div class=\"legend\">\n <span\n class=\"text-bold text-muted\"\n translate\n >\n Recent search views\n </span>\n </div>\n </c8y-li>\n <c8y-li\n class=\"c8y-list__item--link m-l-32 m-r-32\"\n *ngFor=\"let result of term.length === 0 ? recentSearchResults : []\"\n (click)=\"open($event, result, result.name)\"\n >\n <c8y-li-icon>\n <ng-container *ngIf=\"result | shouldShowMo: deviceType.DEVICE; else group\">\n <device-status [mo]=\"result\"></device-status>\n </ng-container>\n <ng-template #group>\n <i\n class=\"c8y-icon-duocolor\"\n [c8yIcon]=\"result | getGroupIcon | async\"\n ></i>\n </ng-template>\n </c8y-li-icon>\n {{ result.name || '--' }}\n </c8y-li>\n\n <!-- Recently registered devices -->\n <c8y-li\n class=\"m-l-32 m-r-32\"\n *ngIf=\"\n term.length === 0 && (recentlyRegisteredResults$ | async)?.data?.length > 0 && !groupsOnly\n \"\n [selectable]=\"false\"\n >\n <div class=\"legend\">\n <span\n class=\"text-bold text-muted\"\n translate\n >\n Recently registered devices\n </span>\n </div>\n </c8y-li>\n <c8y-li\n class=\"c8y-list__item--link m-l-32 m-r-32\"\n *c8yFor=\"\n let result of term.length === 0 && !groupsOnly\n ? recentlyRegisteredResults$\n : { data: [] };\n loadMore: 'none'\n \"\n (click)=\"open($event, result, result.name)\"\n >\n <c8y-li-icon>\n <ng-container *ngIf=\"result | shouldShowMo: deviceType.DEVICE; else group\">\n <device-status [mo]=\"result\"></device-status>\n </ng-container>\n <ng-template #group>\n <i\n class=\"c8y-icon-duocolor\"\n [c8yIcon]=\"result | getGroupIcon | async\"\n ></i>\n </ng-template>\n </c8y-li-icon>\n {{ result.name || '--' }}\n </c8y-li>\n\n <!-- Search results -->\n <c8y-li\n class=\"m-l-32 m-r-32\"\n *ngIf=\"term.length !== 0\"\n [selectable]=\"false\"\n >\n <div class=\"legend\">\n <span\n class=\"text-bold text-muted\"\n translate\n >\n Search results\n </span>\n </div>\n </c8y-li>\n <c8y-li\n class=\"c8y-list__item--link m-l-32 m-r-32\"\n [title]=\"result.name\"\n *c8yFor=\"\n let result of results$;\n loadMore: 'auto';\n notFound: notFoundTemplate;\n loadingTemplate: loading;\n loadNextLabel: 'Find more\u2026'\n \"\n (click)=\"open($event, result, result.name)\"\n data-cy=\"search-input--search-results\"\n >\n <c8y-li-icon>\n <ng-container *ngIf=\"result | shouldShowMo: deviceType.DEVICE; else group\">\n <device-status [mo]=\"result\"></device-status>\n </ng-container>\n <ng-template #group>\n <i\n class=\"c8y-icon-duocolor\"\n [c8yIcon]=\"result | getGroupIcon | async\"\n ></i>\n </ng-template>\n </c8y-li-icon>\n {{ result.name || '--' }}\n </c8y-li>\n\n <!-- No search results found entry -->\n <ng-template #notFoundTemplate>\n <c8y-ui-empty-state\n [icon]=\"'search'\"\n [title]=\"'No match found.' | translate\"\n data-cy=\"search-input--empty-state\"\n [ngClass]=\"{ 'p-4': mode === 'search' || mode === 'wildcardsearch' }\"\n [horizontal]=\"true\"\n *ngIf=\"noMatch\"\n >\n <small\n translate\n *ngIf=\"mode === 'search'\"\n >\n Try to filter or open the asset grid to show all devices and groups.\n </small>\n <small\n translate\n *ngIf=\"mode === 'select' || mode === 'wildcardsearch'\"\n >\n Try to rephrase your search word.\n </small>\n </c8y-ui-empty-state>\n </ng-template>\n\n <!-- loading bar first entries -->\n <c8y-li *ngIf=\"isLoading\">\n <c8y-loading></c8y-loading>\n </c8y-li>\n\n <!-- loading bar for loading more entries (inventory roles) -->\n <ng-template #loading>\n <c8y-li>\n <c8y-loading></c8y-loading>\n </c8y-li>\n </ng-template>\n\n <!-- more filter possibilities -->\n <c8y-li\n class=\"m-t-24 bg-level-2 p-t-16 p-b-16 p-l-24 p-r-24 sticky-bottom\"\n [selectable]=\"false\"\n *ngIf=\"mode === 'search' || mode === 'wildcardsearch'\"\n >\n <div class=\"d-flex a-i-center\">\n <i\n class=\"text-info m-r-4\"\n c8yIcon=\"info-circle\"\n ></i>\n <p\n class=\"m-r-8\"\n translate\n >\n Need more filter possibilities?\n </p>\n <button\n class=\"m-l-16 btn btn-default btn-sm\"\n title=\"{{ 'Go to the asset data table' | translate }}\"\n type=\"button\"\n (mousedown)=\"onOpenAssetTable()\"\n data-cy=\"search-input--asset-table-btn\"\n >\n {{ 'Go to the asset data table' | translate }}\n </button>\n </div>\n </c8y-li>\n </c8y-typeahead>\n </form>\n</ng-template>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: BsDropdownModule }, { kind: "directive", type: i1$3.BsDropdownMenuDirective, selector: "[bsDropdownMenu],[dropdownMenu]", exportAs: ["bs-dropdown-menu"] }, { kind: "directive", type: i1$3.BsDropdownToggleDirective, selector: "[bsDropdownToggle],[dropdownToggle]", exportAs: ["bs-dropdown-toggle"] }, { kind: "directive", type: i1$3.BsDropdownDirective, selector: "[bsDropdown], [dropdown]", inputs: ["placement", "triggers", "container", "dropup", "autoClose", "isAnimated", "insideClick", "isDisabled", "isOpen"], outputs: ["isOpenChange", "onShown", "onHidden"], exportAs: ["bs-dropdown"] }, { kind: "directive", type: CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: FormsModule$1 }, { kind: "directive", type: i1$8.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$8.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i1$8.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: TypeaheadComponent, selector: "c8y-typeahead", inputs: ["required", "maxlength", "disabled", "allowFreeEntries", "placeholder", "displayProperty", "icon", "name", "autoClose", "hideNew", "container", "selected", "title", "highlightFirstItem"], outputs: ["onSearch", "onIconClick"] }, { kind: "component", type: ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "highlighted", "emptyActions", "dense", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: ListItemIconComponent, selector: "c8y-list-item-icon, c8y-li-icon", inputs: ["icon", "status"] }, { kind: "component", type: DeviceStatusComponent, selector: "device-status, c8y-device-status", inputs: ["mo", "size"] }, { kind: "directive", type: ForOfDirective, selector: "[c8yFor]", inputs: ["c8yForOf", "c8yForLoadMore", "c8yForPipe", "c8yForNotFound", "c8yForMaxIterations", "c8yForLoadingTemplate", "c8yForLoadNextLabel", "c8yForLoadingLabel", "c8yForRealtime", "c8yForRealtimeOptions", "c8yForComparator", "c8yForEnableVirtualScroll", "c8yForVirtualScrollElementSize", "c8yForVirtualScrollStrategy", "c8yForVirtualScrollContainerHeight"], outputs: ["c8yForCount", "c8yForChange", "c8yForLoadMoreComponent"] }, { kind: "component", type: EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "component", type: LoadingComponent, selector: "c8y-loading", inputs: ["layout", "progress", "message"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: ShouldShowMoPipe, name: "shouldShowMo" }, { kind: "pipe", type: GetGroupIconPipe, name: "getGroupIcon" }] }); }
|
|
18488
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: SearchInputComponent, isStandalone: true, selector: "c8y-search-input", inputs: { mode: "mode", enableCustomTemplatePlaceholder: "enableCustomTemplatePlaceholder", customPlaceholder: "customPlaceholder", externalTerm: "externalTerm", customDataQuery: "customDataQuery", container: "container", groupsOnly: "groupsOnly" }, outputs: { filter: "filter", search: "search", reset: "reset", onClick: "onClick", onOpenToggle: "onOpenToggle" }, host: { listeners: { "document:keydown": "onKeydownHandler($event)" } }, viewQueries: [{ propertyName: "typeahead", first: true, predicate: TypeaheadComponent, descendants: true }, { propertyName: "dropdown", first: true, predicate: ["searchDropdown"], descendants: true }], ngImport: i0, template: "<div\n class=\"dropdown\"\n #searchDropdown=\"bs-dropdown\"\n [insideClick]=\"true\"\n (isOpenChange)=\"onOpenChange($event)\"\n [cdkTrapFocus]=\"searchDropdown.isOpen\"\n *ngIf=\"mode === 'search' || mode === 'wildcardsearch'\"\n dropdown\n>\n <button\n class=\"main-header-button dropdown-toggle c8y-dropdown\"\n [title]=\"'Search' | translate\"\n type=\"button\"\n dropdownToggle\n data-cy=\"search-input--search-btn\"\n >\n <i\n class=\"icon-2x\"\n c8yIcon=\"search\"\n ></i>\n </button>\n\n <div\n class=\"search-header-menu dropdown-menu dropdown-menu-right\"\n id=\"searchDropdown\"\n *dropdownMenu\n >\n <ng-container *ngTemplateOutlet=\"form\"></ng-container>\n </div>\n</div>\n\n<div\n class=\"search-header-inline\"\n *ngIf=\"mode === 'select'\"\n>\n <ng-container *ngTemplateOutlet=\"form\"></ng-container>\n</div>\n<ng-template #form>\n <form\n [ngClass]=\"{ 'c8y-search-form': mode === 'search' || mode === 'wildcardsearch' }\"\n novalidate\n #searchForm=\"ngForm\"\n >\n <c8y-typeahead\n (onIconClick)=\"onReset($event)\"\n [icon]=\"term ? 'times' : 'search'\"\n [title]=\"(term ? RESET_TEXT : SEARCH_TEXT) | translate\"\n placeholder=\"{{ customPlaceholder ? customPlaceholder : defaultPlaceholder }}\"\n name=\"selected\"\n [(ngModel)]=\"selected\"\n (keydown)=\"keyDown($event)\"\n [allowFreeEntries]=\"false\"\n [container]=\"container\"\n [highlightFirstItem]=\"false\"\n [ngClass]=\"{ 'input-group-search input-group-lg': mode !== 'select' }\"\n >\n <div *ngIf=\"enableCustomTemplatePlaceholder\">\n <ng-content></ng-content>\n </div>\n\n <!-- filter buttons -->\n <c8y-li\n class=\"m-l-32 m-r-32\"\n *ngIf=\"term.length !== 0 && mode === 'search'\"\n [selectable]=\"false\"\n >\n <div class=\"d-flex\">\n <p class=\"m-r-4 text-muted\">\n <em translate>Searching by exact match. Click for other search options:</em>\n </p>\n <div class=\"btn-group btn-group-sm\">\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Starts with' | translate }}\"\n type=\"button\"\n data-cy=\"search-input--search-starts-with\"\n (click)=\"onFilter(term + '*')\"\n >\n {{ 'Starts with' | translate }}\n </button>\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Contains' | translate }}\"\n type=\"button\"\n data-cy=\"search-input--search-contains\"\n (click)=\"onFilter('*' + term + '*')\"\n >\n {{ 'Contains' | translate }}\n </button>\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Ends with' | translate }}\"\n type=\"button\"\n data-cy=\"search-input--search-ends-with\"\n (click)=\"onFilter('*' + term)\"\n >\n {{ 'Ends with' | translate }}\n </button>\n </div>\n </div>\n </c8y-li>\n\n <!-- Recent search -->\n <c8y-li\n class=\"m-l-32 m-r-32\"\n *ngIf=\"term.length === 0 && recentSearchResults.length > 0\"\n [selectable]=\"false\"\n >\n <div class=\"legend\">\n <span\n class=\"text-bold text-muted\"\n translate\n >\n Recent search views\n </span>\n </div>\n </c8y-li>\n <c8y-li\n class=\"c8y-list__item--link m-l-32 m-r-32\"\n *ngFor=\"let result of term.length === 0 ? recentSearchResults : []\"\n (click)=\"open($event, result, result.name)\"\n >\n <c8y-li-icon>\n <ng-container *ngIf=\"result | shouldShowMo: deviceType.DEVICE; else group\">\n <device-status [mo]=\"result\"></device-status>\n </ng-container>\n <ng-template #group>\n <i\n class=\"c8y-icon-duocolor\"\n [c8yIcon]=\"result | getGroupIcon | async\"\n ></i>\n </ng-template>\n </c8y-li-icon>\n {{ result.name || '--' }}\n </c8y-li>\n\n <!-- Recently registered devices -->\n <c8y-li\n class=\"m-l-32 m-r-32\"\n *ngIf=\"\n term.length === 0 && (recentlyRegisteredResults$ | async)?.data?.length > 0 && !groupsOnly\n \"\n [selectable]=\"false\"\n >\n <div class=\"legend\">\n <span\n class=\"text-bold text-muted\"\n translate\n >\n Recently registered devices\n </span>\n </div>\n </c8y-li>\n <c8y-li\n class=\"c8y-list__item--link m-l-32 m-r-32\"\n *c8yFor=\"\n let result of term.length === 0 && !groupsOnly\n ? recentlyRegisteredResults$\n : { data: [] };\n loadMore: 'none'\n \"\n (click)=\"open($event, result, result.name)\"\n >\n <c8y-li-icon>\n <ng-container *ngIf=\"result | shouldShowMo: deviceType.DEVICE; else group\">\n <device-status [mo]=\"result\"></device-status>\n </ng-container>\n <ng-template #group>\n <i\n class=\"c8y-icon-duocolor\"\n [c8yIcon]=\"result | getGroupIcon | async\"\n ></i>\n </ng-template>\n </c8y-li-icon>\n {{ result.name || '--' }}\n </c8y-li>\n\n <!-- Search results -->\n <c8y-li\n class=\"m-l-32 m-r-32\"\n *ngIf=\"term.length !== 0\"\n [selectable]=\"false\"\n >\n <div class=\"legend\">\n <span\n class=\"text-bold text-muted\"\n translate\n >\n Search results\n </span>\n </div>\n </c8y-li>\n <c8y-li\n class=\"c8y-list__item--link m-l-32 m-r-32\"\n [title]=\"result.name\"\n *c8yFor=\"\n let result of results$;\n loadMore: 'auto';\n notFound: notFoundTemplate;\n loadingTemplate: loading;\n loadNextLabel: 'Find more\u2026'\n \"\n (click)=\"open($event, result, result.name)\"\n data-cy=\"search-input--search-results\"\n >\n <c8y-li-icon>\n <ng-container *ngIf=\"result | shouldShowMo: deviceType.DEVICE; else group\">\n <device-status [mo]=\"result\"></device-status>\n </ng-container>\n <ng-template #group>\n <i\n class=\"c8y-icon-duocolor\"\n [c8yIcon]=\"result | getGroupIcon | async\"\n ></i>\n </ng-template>\n </c8y-li-icon>\n {{ result.name || '--' }}\n </c8y-li>\n\n <!-- No search results found entry -->\n <ng-template #notFoundTemplate>\n <c8y-ui-empty-state\n [icon]=\"'search'\"\n [title]=\"'No match found.' | translate\"\n data-cy=\"search-input--empty-state\"\n [ngClass]=\"{ 'p-4': mode === 'search' || mode === 'wildcardsearch' }\"\n [horizontal]=\"true\"\n *ngIf=\"noMatch\"\n >\n <small\n translate\n *ngIf=\"mode === 'search'\"\n >\n Try to filter or open the asset grid to show all devices and groups.\n </small>\n <small\n translate\n *ngIf=\"mode === 'select' || mode === 'wildcardsearch'\"\n >\n Try to rephrase your search word.\n </small>\n </c8y-ui-empty-state>\n </ng-template>\n\n <!-- loading bar first entries -->\n <c8y-li *ngIf=\"isLoading\">\n <c8y-loading></c8y-loading>\n </c8y-li>\n\n <!-- loading bar for loading more entries (inventory roles) -->\n <ng-template #loading>\n <c8y-li>\n <c8y-loading></c8y-loading>\n </c8y-li>\n </ng-template>\n\n <!-- more filter possibilities -->\n <c8y-li\n class=\"m-t-24 bg-level-2 p-t-16 p-b-16 p-l-24 p-r-24 sticky-bottom\"\n [selectable]=\"false\"\n *ngIf=\"mode === 'search' || mode === 'wildcardsearch'\"\n >\n <div class=\"d-flex a-i-center\">\n <i\n class=\"text-info m-r-4\"\n c8yIcon=\"info-circle\"\n ></i>\n <p\n class=\"m-r-8\"\n translate\n >\n Need more filter possibilities?\n </p>\n <button\n class=\"m-l-16 btn btn-default btn-sm\"\n title=\"{{ 'Go to the asset data table' | translate }}\"\n type=\"button\"\n (mousedown)=\"onOpenAssetTable()\"\n data-cy=\"search-input--asset-table-btn\"\n >\n {{ 'Go to the asset data table' | translate }}\n </button>\n </div>\n </c8y-li>\n </c8y-typeahead>\n </form>\n</ng-template>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: BsDropdownModule }, { kind: "directive", type: i1$3.BsDropdownMenuDirective, selector: "[bsDropdownMenu],[dropdownMenu]", exportAs: ["bs-dropdown-menu"] }, { kind: "directive", type: i1$3.BsDropdownToggleDirective, selector: "[bsDropdownToggle],[dropdownToggle]", exportAs: ["bs-dropdown-toggle"] }, { kind: "directive", type: i1$3.BsDropdownDirective, selector: "[bsDropdown], [dropdown]", inputs: ["placement", "triggers", "container", "dropup", "autoClose", "isAnimated", "insideClick", "isDisabled", "isOpen"], outputs: ["isOpenChange", "onShown", "onHidden"], exportAs: ["bs-dropdown"] }, { kind: "directive", type: CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: FormsModule$1 }, { kind: "directive", type: i1$8.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$8.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i1$8.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: TypeaheadComponent, selector: "c8y-typeahead", inputs: ["required", "maxlength", "disabled", "allowFreeEntries", "placeholder", "displayProperty", "icon", "name", "autoClose", "hideNew", "container", "selected", "title", "highlightFirstItem"], outputs: ["onSearch", "onIconClick"] }, { kind: "component", type: ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "highlighted", "emptyActions", "dense", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: ListItemIconComponent, selector: "c8y-list-item-icon, c8y-li-icon", inputs: ["icon", "status"] }, { kind: "component", type: DeviceStatusComponent, selector: "device-status, c8y-device-status", inputs: ["mo", "size"] }, { kind: "directive", type: ForOfDirective, selector: "[c8yFor]", inputs: ["c8yForOf", "c8yForLoadMore", "c8yForPipe", "c8yForNotFound", "c8yForMaxIterations", "c8yForLoadingTemplate", "c8yForLoadNextLabel", "c8yForLoadingLabel", "c8yForRealtime", "c8yForRealtimeOptions", "c8yForComparator", "c8yForEnableVirtualScroll", "c8yForVirtualScrollElementSize", "c8yForVirtualScrollStrategy", "c8yForVirtualScrollContainerHeight"], outputs: ["c8yForCount", "c8yForChange", "c8yForLoadMoreComponent"] }, { kind: "component", type: EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "component", type: LoadingComponent, selector: "c8y-loading", inputs: ["layout", "progress", "message"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: ShouldShowMoPipe, name: "shouldShowMo" }, { kind: "pipe", type: GetGroupIconPipe, name: "getGroupIcon" }] }); }
|
|
18282
18489
|
}
|
|
18283
18490
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: SearchInputComponent, decorators: [{
|
|
18284
18491
|
type: Component,
|
|
@@ -18303,7 +18510,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
18303
18510
|
AsyncPipe,
|
|
18304
18511
|
ShouldShowMoPipe,
|
|
18305
18512
|
GetGroupIconPipe
|
|
18306
|
-
], template: "<div\n class=\"dropdown\"\n #searchDropdown=\"bs-dropdown\"\n [insideClick]=\"true\"\n (isOpenChange)=\"onOpenChange($event)\"\n [cdkTrapFocus]=\"searchDropdown.isOpen\"\n *ngIf=\"mode === 'search' || mode === 'wildcardsearch'\"\n dropdown\n>\n <button\n class=\"main-header-button dropdown-toggle c8y-dropdown\"\n [title]=\"'Search' | translate\"\n type=\"button\"\n dropdownToggle\n data-cy=\"search-input--search-btn\"\n >\n <i\n class=\"icon-2x\"\n c8yIcon=\"search\"\n ></i>\n </button>\n\n <div\n class=\"search-header-menu dropdown-menu dropdown-menu-right\"\n id=\"searchDropdown\"\n *dropdownMenu\n >\n <ng-container *ngTemplateOutlet=\"form\"></ng-container>\n </div>\n</div>\n\n<div\n class=\"search-header-inline\"\n *ngIf=\"mode === 'select'\"\n>\n <ng-container *ngTemplateOutlet=\"form\"></ng-container>\n</div>\n<ng-template #form>\n <form\n [ngClass]=\"{ 'c8y-search-form': mode === 'search' || mode === 'wildcardsearch' }\"\n novalidate\n #searchForm=\"ngForm\"\n >\n <c8y-typeahead\n (onIconClick)=\"onReset($event)\"\n [icon]=\"term ? 'times' : 'search'\"\n [title]=\"(term ? RESET_TEXT : SEARCH_TEXT) | translate\"\n placeholder=\"{{ customPlaceholder ? customPlaceholder : defaultPlaceholder }}\"\n name=\"selected\"\n [(ngModel)]=\"selected\"\n (keydown)=\"keyDown($event)\"\n [allowFreeEntries]=\"false\"\n [container]=\"container\"\n [highlightFirstItem]=\"false\"\n >\n <div *ngIf=\"enableCustomTemplatePlaceholder\">\n <ng-content></ng-content>\n </div>\n\n <!-- filter buttons -->\n <c8y-li\n class=\"m-l-32 m-r-32\"\n *ngIf=\"term.length !== 0 && mode === 'search'\"\n [selectable]=\"false\"\n >\n <div class=\"d-flex\">\n <p class=\"m-r-4 text-muted\">\n <em translate>Searching by exact match. Click for other search options:</em>\n </p>\n <div class=\"btn-group btn-group-sm\">\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Starts with' | translate }}\"\n type=\"button\"\n data-cy=\"search-input--search-starts-with\"\n (click)=\"onFilter(term + '*')\"\n >\n {{ 'Starts with' | translate }}\n </button>\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Contains' | translate }}\"\n type=\"button\"\n data-cy=\"search-input--search-contains\"\n (click)=\"onFilter('*' + term + '*')\"\n >\n {{ 'Contains' | translate }}\n </button>\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Ends with' | translate }}\"\n type=\"button\"\n data-cy=\"search-input--search-ends-with\"\n (click)=\"onFilter('*' + term)\"\n >\n {{ 'Ends with' | translate }}\n </button>\n </div>\n </div>\n </c8y-li>\n\n <!-- Recent search -->\n <c8y-li\n class=\"m-l-32 m-r-32\"\n *ngIf=\"term.length === 0 && recentSearchResults.length > 0\"\n [selectable]=\"false\"\n >\n <div class=\"legend\">\n <span\n class=\"text-bold text-muted\"\n translate\n >\n Recent search views\n </span>\n </div>\n </c8y-li>\n <c8y-li\n class=\"c8y-list__item--link m-l-32 m-r-32\"\n *ngFor=\"let result of term.length === 0 ? recentSearchResults : []\"\n (click)=\"open($event, result, result.name)\"\n >\n <c8y-li-icon>\n <ng-container *ngIf=\"result | shouldShowMo: deviceType.DEVICE; else group\">\n <device-status [mo]=\"result\"></device-status>\n </ng-container>\n <ng-template #group>\n <i\n class=\"c8y-icon-duocolor\"\n [c8yIcon]=\"result | getGroupIcon | async\"\n ></i>\n </ng-template>\n </c8y-li-icon>\n {{ result.name || '--' }}\n </c8y-li>\n\n <!-- Recently registered devices -->\n <c8y-li\n class=\"m-l-32 m-r-32\"\n *ngIf=\"\n term.length === 0 && (recentlyRegisteredResults$ | async)?.data?.length > 0 && !groupsOnly\n \"\n [selectable]=\"false\"\n >\n <div class=\"legend\">\n <span\n class=\"text-bold text-muted\"\n translate\n >\n Recently registered devices\n </span>\n </div>\n </c8y-li>\n <c8y-li\n class=\"c8y-list__item--link m-l-32 m-r-32\"\n *c8yFor=\"\n let result of term.length === 0 && !groupsOnly\n ? recentlyRegisteredResults$\n : { data: [] };\n loadMore: 'none'\n \"\n (click)=\"open($event, result, result.name)\"\n >\n <c8y-li-icon>\n <ng-container *ngIf=\"result | shouldShowMo: deviceType.DEVICE; else group\">\n <device-status [mo]=\"result\"></device-status>\n </ng-container>\n <ng-template #group>\n <i\n class=\"c8y-icon-duocolor\"\n [c8yIcon]=\"result | getGroupIcon | async\"\n ></i>\n </ng-template>\n </c8y-li-icon>\n {{ result.name || '--' }}\n </c8y-li>\n\n <!-- Search results -->\n <c8y-li\n class=\"m-l-32 m-r-32\"\n *ngIf=\"term.length !== 0\"\n [selectable]=\"false\"\n >\n <div class=\"legend\">\n <span\n class=\"text-bold text-muted\"\n translate\n >\n Search results\n </span>\n </div>\n </c8y-li>\n <c8y-li\n class=\"c8y-list__item--link m-l-32 m-r-32\"\n [title]=\"result.name\"\n *c8yFor=\"\n let result of results$;\n loadMore: 'auto';\n notFound: notFoundTemplate;\n loadingTemplate: loading;\n loadNextLabel: 'Find more\u2026'\n \"\n (click)=\"open($event, result, result.name)\"\n data-cy=\"search-input--search-results\"\n >\n <c8y-li-icon>\n <ng-container *ngIf=\"result | shouldShowMo: deviceType.DEVICE; else group\">\n <device-status [mo]=\"result\"></device-status>\n </ng-container>\n <ng-template #group>\n <i\n class=\"c8y-icon-duocolor\"\n [c8yIcon]=\"result | getGroupIcon | async\"\n ></i>\n </ng-template>\n </c8y-li-icon>\n {{ result.name || '--' }}\n </c8y-li>\n\n <!-- No search results found entry -->\n <ng-template #notFoundTemplate>\n <c8y-ui-empty-state\n [icon]=\"'search'\"\n [title]=\"'No match found.' | translate\"\n data-cy=\"search-input--empty-state\"\n [ngClass]=\"{ 'p-4': mode === 'search' || mode === 'wildcardsearch' }\"\n [horizontal]=\"true\"\n *ngIf=\"noMatch\"\n >\n <small\n translate\n *ngIf=\"mode === 'search'\"\n >\n Try to filter or open the asset grid to show all devices and groups.\n </small>\n <small\n translate\n *ngIf=\"mode === 'select' || mode === 'wildcardsearch'\"\n >\n Try to rephrase your search word.\n </small>\n </c8y-ui-empty-state>\n </ng-template>\n\n <!-- loading bar first entries -->\n <c8y-li *ngIf=\"isLoading\">\n <c8y-loading></c8y-loading>\n </c8y-li>\n\n <!-- loading bar for loading more entries (inventory roles) -->\n <ng-template #loading>\n <c8y-li>\n <c8y-loading></c8y-loading>\n </c8y-li>\n </ng-template>\n\n <!-- more filter possibilities -->\n <c8y-li\n class=\"m-t-24 bg-level-2 p-t-16 p-b-16 p-l-24 p-r-24 sticky-bottom\"\n [selectable]=\"false\"\n *ngIf=\"mode === 'search' || mode === 'wildcardsearch'\"\n >\n <div class=\"d-flex a-i-center\">\n <i\n class=\"text-info m-r-4\"\n c8yIcon=\"info-circle\"\n ></i>\n <p\n class=\"m-r-8\"\n translate\n >\n Need more filter possibilities?\n </p>\n <button\n class=\"m-l-16 btn btn-default btn-sm\"\n title=\"{{ 'Go to the asset data table' | translate }}\"\n type=\"button\"\n (mousedown)=\"onOpenAssetTable()\"\n data-cy=\"search-input--asset-table-btn\"\n >\n {{ 'Go to the asset data table' | translate }}\n </button>\n </div>\n </c8y-li>\n </c8y-typeahead>\n </form>\n</ng-template>\n" }]
|
|
18513
|
+
], template: "<div\n class=\"dropdown\"\n #searchDropdown=\"bs-dropdown\"\n [insideClick]=\"true\"\n (isOpenChange)=\"onOpenChange($event)\"\n [cdkTrapFocus]=\"searchDropdown.isOpen\"\n *ngIf=\"mode === 'search' || mode === 'wildcardsearch'\"\n dropdown\n>\n <button\n class=\"main-header-button dropdown-toggle c8y-dropdown\"\n [title]=\"'Search' | translate\"\n type=\"button\"\n dropdownToggle\n data-cy=\"search-input--search-btn\"\n >\n <i\n class=\"icon-2x\"\n c8yIcon=\"search\"\n ></i>\n </button>\n\n <div\n class=\"search-header-menu dropdown-menu dropdown-menu-right\"\n id=\"searchDropdown\"\n *dropdownMenu\n >\n <ng-container *ngTemplateOutlet=\"form\"></ng-container>\n </div>\n</div>\n\n<div\n class=\"search-header-inline\"\n *ngIf=\"mode === 'select'\"\n>\n <ng-container *ngTemplateOutlet=\"form\"></ng-container>\n</div>\n<ng-template #form>\n <form\n [ngClass]=\"{ 'c8y-search-form': mode === 'search' || mode === 'wildcardsearch' }\"\n novalidate\n #searchForm=\"ngForm\"\n >\n <c8y-typeahead\n (onIconClick)=\"onReset($event)\"\n [icon]=\"term ? 'times' : 'search'\"\n [title]=\"(term ? RESET_TEXT : SEARCH_TEXT) | translate\"\n placeholder=\"{{ customPlaceholder ? customPlaceholder : defaultPlaceholder }}\"\n name=\"selected\"\n [(ngModel)]=\"selected\"\n (keydown)=\"keyDown($event)\"\n [allowFreeEntries]=\"false\"\n [container]=\"container\"\n [highlightFirstItem]=\"false\"\n [ngClass]=\"{ 'input-group-search input-group-lg': mode !== 'select' }\"\n >\n <div *ngIf=\"enableCustomTemplatePlaceholder\">\n <ng-content></ng-content>\n </div>\n\n <!-- filter buttons -->\n <c8y-li\n class=\"m-l-32 m-r-32\"\n *ngIf=\"term.length !== 0 && mode === 'search'\"\n [selectable]=\"false\"\n >\n <div class=\"d-flex\">\n <p class=\"m-r-4 text-muted\">\n <em translate>Searching by exact match. Click for other search options:</em>\n </p>\n <div class=\"btn-group btn-group-sm\">\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Starts with' | translate }}\"\n type=\"button\"\n data-cy=\"search-input--search-starts-with\"\n (click)=\"onFilter(term + '*')\"\n >\n {{ 'Starts with' | translate }}\n </button>\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Contains' | translate }}\"\n type=\"button\"\n data-cy=\"search-input--search-contains\"\n (click)=\"onFilter('*' + term + '*')\"\n >\n {{ 'Contains' | translate }}\n </button>\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Ends with' | translate }}\"\n type=\"button\"\n data-cy=\"search-input--search-ends-with\"\n (click)=\"onFilter('*' + term)\"\n >\n {{ 'Ends with' | translate }}\n </button>\n </div>\n </div>\n </c8y-li>\n\n <!-- Recent search -->\n <c8y-li\n class=\"m-l-32 m-r-32\"\n *ngIf=\"term.length === 0 && recentSearchResults.length > 0\"\n [selectable]=\"false\"\n >\n <div class=\"legend\">\n <span\n class=\"text-bold text-muted\"\n translate\n >\n Recent search views\n </span>\n </div>\n </c8y-li>\n <c8y-li\n class=\"c8y-list__item--link m-l-32 m-r-32\"\n *ngFor=\"let result of term.length === 0 ? recentSearchResults : []\"\n (click)=\"open($event, result, result.name)\"\n >\n <c8y-li-icon>\n <ng-container *ngIf=\"result | shouldShowMo: deviceType.DEVICE; else group\">\n <device-status [mo]=\"result\"></device-status>\n </ng-container>\n <ng-template #group>\n <i\n class=\"c8y-icon-duocolor\"\n [c8yIcon]=\"result | getGroupIcon | async\"\n ></i>\n </ng-template>\n </c8y-li-icon>\n {{ result.name || '--' }}\n </c8y-li>\n\n <!-- Recently registered devices -->\n <c8y-li\n class=\"m-l-32 m-r-32\"\n *ngIf=\"\n term.length === 0 && (recentlyRegisteredResults$ | async)?.data?.length > 0 && !groupsOnly\n \"\n [selectable]=\"false\"\n >\n <div class=\"legend\">\n <span\n class=\"text-bold text-muted\"\n translate\n >\n Recently registered devices\n </span>\n </div>\n </c8y-li>\n <c8y-li\n class=\"c8y-list__item--link m-l-32 m-r-32\"\n *c8yFor=\"\n let result of term.length === 0 && !groupsOnly\n ? recentlyRegisteredResults$\n : { data: [] };\n loadMore: 'none'\n \"\n (click)=\"open($event, result, result.name)\"\n >\n <c8y-li-icon>\n <ng-container *ngIf=\"result | shouldShowMo: deviceType.DEVICE; else group\">\n <device-status [mo]=\"result\"></device-status>\n </ng-container>\n <ng-template #group>\n <i\n class=\"c8y-icon-duocolor\"\n [c8yIcon]=\"result | getGroupIcon | async\"\n ></i>\n </ng-template>\n </c8y-li-icon>\n {{ result.name || '--' }}\n </c8y-li>\n\n <!-- Search results -->\n <c8y-li\n class=\"m-l-32 m-r-32\"\n *ngIf=\"term.length !== 0\"\n [selectable]=\"false\"\n >\n <div class=\"legend\">\n <span\n class=\"text-bold text-muted\"\n translate\n >\n Search results\n </span>\n </div>\n </c8y-li>\n <c8y-li\n class=\"c8y-list__item--link m-l-32 m-r-32\"\n [title]=\"result.name\"\n *c8yFor=\"\n let result of results$;\n loadMore: 'auto';\n notFound: notFoundTemplate;\n loadingTemplate: loading;\n loadNextLabel: 'Find more\u2026'\n \"\n (click)=\"open($event, result, result.name)\"\n data-cy=\"search-input--search-results\"\n >\n <c8y-li-icon>\n <ng-container *ngIf=\"result | shouldShowMo: deviceType.DEVICE; else group\">\n <device-status [mo]=\"result\"></device-status>\n </ng-container>\n <ng-template #group>\n <i\n class=\"c8y-icon-duocolor\"\n [c8yIcon]=\"result | getGroupIcon | async\"\n ></i>\n </ng-template>\n </c8y-li-icon>\n {{ result.name || '--' }}\n </c8y-li>\n\n <!-- No search results found entry -->\n <ng-template #notFoundTemplate>\n <c8y-ui-empty-state\n [icon]=\"'search'\"\n [title]=\"'No match found.' | translate\"\n data-cy=\"search-input--empty-state\"\n [ngClass]=\"{ 'p-4': mode === 'search' || mode === 'wildcardsearch' }\"\n [horizontal]=\"true\"\n *ngIf=\"noMatch\"\n >\n <small\n translate\n *ngIf=\"mode === 'search'\"\n >\n Try to filter or open the asset grid to show all devices and groups.\n </small>\n <small\n translate\n *ngIf=\"mode === 'select' || mode === 'wildcardsearch'\"\n >\n Try to rephrase your search word.\n </small>\n </c8y-ui-empty-state>\n </ng-template>\n\n <!-- loading bar first entries -->\n <c8y-li *ngIf=\"isLoading\">\n <c8y-loading></c8y-loading>\n </c8y-li>\n\n <!-- loading bar for loading more entries (inventory roles) -->\n <ng-template #loading>\n <c8y-li>\n <c8y-loading></c8y-loading>\n </c8y-li>\n </ng-template>\n\n <!-- more filter possibilities -->\n <c8y-li\n class=\"m-t-24 bg-level-2 p-t-16 p-b-16 p-l-24 p-r-24 sticky-bottom\"\n [selectable]=\"false\"\n *ngIf=\"mode === 'search' || mode === 'wildcardsearch'\"\n >\n <div class=\"d-flex a-i-center\">\n <i\n class=\"text-info m-r-4\"\n c8yIcon=\"info-circle\"\n ></i>\n <p\n class=\"m-r-8\"\n translate\n >\n Need more filter possibilities?\n </p>\n <button\n class=\"m-l-16 btn btn-default btn-sm\"\n title=\"{{ 'Go to the asset data table' | translate }}\"\n type=\"button\"\n (mousedown)=\"onOpenAssetTable()\"\n data-cy=\"search-input--asset-table-btn\"\n >\n {{ 'Go to the asset data table' | translate }}\n </button>\n </div>\n </c8y-li>\n </c8y-typeahead>\n </form>\n</ng-template>\n" }]
|
|
18307
18514
|
}], ctorParameters: () => [{ type: i1$4.Router }, { type: i1.InventoryService }, { type: InventorySearchService }, { type: i0.ChangeDetectorRef }], propDecorators: { mode: [{
|
|
18308
18515
|
type: Input
|
|
18309
18516
|
}], enableCustomTemplatePlaceholder: [{
|
|
@@ -20447,6 +20654,312 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
20447
20654
|
}]
|
|
20448
20655
|
}] });
|
|
20449
20656
|
|
|
20657
|
+
/**
|
|
20658
|
+
* Service to show a modal.
|
|
20659
|
+
*/
|
|
20660
|
+
class ModalService {
|
|
20661
|
+
constructor(modalService, gainsightService) {
|
|
20662
|
+
this.modalService = modalService;
|
|
20663
|
+
this.gainsightService = gainsightService;
|
|
20664
|
+
}
|
|
20665
|
+
/**
|
|
20666
|
+
* Shows a quick confirm message modal.
|
|
20667
|
+
* @param title The title of that modal.
|
|
20668
|
+
* @param body The text body to display.
|
|
20669
|
+
* @param status The status.
|
|
20670
|
+
* @param labels The labels to use. Default: { ok: 'Confirm', cancel: 'Cancel'}
|
|
20671
|
+
* @param confirmOptions Selection options to display as checkbox list.
|
|
20672
|
+
* @param productExperienceEvent Additional data to attach to custom product experience events.
|
|
20673
|
+
*/
|
|
20674
|
+
async confirm(title, body, status = Status.INFO, labels = {}, confirmOptions = {}, productExperienceEvent = { eventName: 'confirmModal' }) {
|
|
20675
|
+
const modalLabels = {
|
|
20676
|
+
ok: labels.ok || gettext$1('Confirm'),
|
|
20677
|
+
cancel: labels.cancel || gettext$1('Cancel')
|
|
20678
|
+
};
|
|
20679
|
+
const modalRef = this.modalService.show(ConfirmModalComponent, {
|
|
20680
|
+
initialState: { title, body, labels: modalLabels, status, confirmOptions },
|
|
20681
|
+
ariaDescribedby: 'modal-body',
|
|
20682
|
+
ariaLabelledBy: 'modal-title',
|
|
20683
|
+
ignoreBackdropClick: true
|
|
20684
|
+
});
|
|
20685
|
+
if (productExperienceEvent) {
|
|
20686
|
+
productExperienceEvent.data = { ...productExperienceEvent.data, title };
|
|
20687
|
+
}
|
|
20688
|
+
this.triggerEvent(modalRef.content.result, modalLabels, productExperienceEvent);
|
|
20689
|
+
return await modalRef.content.result;
|
|
20690
|
+
}
|
|
20691
|
+
/**
|
|
20692
|
+
* Shows a quick acknowledge message modal.
|
|
20693
|
+
* @param title The title of that modal.
|
|
20694
|
+
* @param body The text body to display.
|
|
20695
|
+
* @param status The status.
|
|
20696
|
+
* @param acknowledgeLabel The label to use.
|
|
20697
|
+
* @param productExperienceEvent Additional data to attach to custom product experience events.
|
|
20698
|
+
*/
|
|
20699
|
+
async acknowledge(title, body, status = Status.INFO, acknowledgeLabel = gettext$1('Confirm'), productExperienceEvent = { eventName: 'confirmModal' }) {
|
|
20700
|
+
const labels = { ok: acknowledgeLabel, cancel: null };
|
|
20701
|
+
const modalRef = this.modalService.show(ConfirmModalComponent, {
|
|
20702
|
+
initialState: { title, body, labels, status },
|
|
20703
|
+
ariaDescribedby: 'modal-body',
|
|
20704
|
+
ariaLabelledBy: 'modal-title',
|
|
20705
|
+
ignoreBackdropClick: true
|
|
20706
|
+
});
|
|
20707
|
+
if (productExperienceEvent) {
|
|
20708
|
+
productExperienceEvent.data = { ...productExperienceEvent.data, title };
|
|
20709
|
+
}
|
|
20710
|
+
this.triggerEvent(modalRef.content.result, labels, productExperienceEvent);
|
|
20711
|
+
return await modalRef.content.result;
|
|
20712
|
+
}
|
|
20713
|
+
/**
|
|
20714
|
+
* Shows a quick logout confirmation modal.
|
|
20715
|
+
* @param body The text body to display. Default: 'You will be logged out to apply your changes. Do you want to proceed?'
|
|
20716
|
+
* @param status The status.
|
|
20717
|
+
* @param labels The labels to use. Default: { ok: 'Confirm and log out', cancel: 'Cancel' }
|
|
20718
|
+
*/
|
|
20719
|
+
async confirmLogout(body, status = Status.WARNING, labels = {}) {
|
|
20720
|
+
const modalLabels = {
|
|
20721
|
+
ok: labels.ok || gettext$1('Confirm and log out'),
|
|
20722
|
+
cancel: labels.cancel || gettext$1('Cancel')
|
|
20723
|
+
};
|
|
20724
|
+
const modalBody = body || gettext$1('You must log out to apply your changes. Do you want to proceed?');
|
|
20725
|
+
return await this.confirm(gettext$1('Logout required'), modalBody, status, modalLabels);
|
|
20726
|
+
}
|
|
20727
|
+
triggerEvent(result, labels, productExperienceEvent) {
|
|
20728
|
+
const data = { ...productExperienceEvent.data, url: window.location.href };
|
|
20729
|
+
result
|
|
20730
|
+
.then(() => {
|
|
20731
|
+
this.gainsightService.triggerEvent(productExperienceEvent.eventName, {
|
|
20732
|
+
...data,
|
|
20733
|
+
result: labels.ok
|
|
20734
|
+
});
|
|
20735
|
+
})
|
|
20736
|
+
.catch(() => {
|
|
20737
|
+
this.gainsightService.triggerEvent(productExperienceEvent.eventName, {
|
|
20738
|
+
...data,
|
|
20739
|
+
result: labels.cancel
|
|
20740
|
+
});
|
|
20741
|
+
});
|
|
20742
|
+
}
|
|
20743
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ModalService, deps: [{ token: i1$7.BsModalService }, { token: GainsightService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
20744
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ModalService, providedIn: 'root' }); }
|
|
20745
|
+
}
|
|
20746
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ModalService, decorators: [{
|
|
20747
|
+
type: Injectable,
|
|
20748
|
+
args: [{
|
|
20749
|
+
providedIn: 'root'
|
|
20750
|
+
}]
|
|
20751
|
+
}], ctorParameters: () => [{ type: i1$7.BsModalService }, { type: GainsightService }] });
|
|
20752
|
+
|
|
20753
|
+
class ThemeSwitcherService {
|
|
20754
|
+
constructor(options) {
|
|
20755
|
+
this.options = options;
|
|
20756
|
+
this.darkThemeClass = `c8y-dark-theme`;
|
|
20757
|
+
this.themeOptions = [
|
|
20758
|
+
{
|
|
20759
|
+
label: gettext$1('Light'),
|
|
20760
|
+
value: 'light',
|
|
20761
|
+
icon: 'sun'
|
|
20762
|
+
},
|
|
20763
|
+
{
|
|
20764
|
+
label: gettext$1('Dark'),
|
|
20765
|
+
value: 'dark',
|
|
20766
|
+
icon: 'moon'
|
|
20767
|
+
},
|
|
20768
|
+
{
|
|
20769
|
+
label: gettext$1('System'),
|
|
20770
|
+
value: 'system',
|
|
20771
|
+
icon: 'imac-settings'
|
|
20772
|
+
}
|
|
20773
|
+
];
|
|
20774
|
+
this._userSelectedThemePreference$ = new BehaviorSubject(this.getCurrentThemePreference());
|
|
20775
|
+
this._temporaryThemePreference$ = new BehaviorSubject('none');
|
|
20776
|
+
this.userSelectedThemePreference$ = this._userSelectedThemePreference$.asObservable();
|
|
20777
|
+
const userSelectedTheme$ = this.userSelectedThemePreference$.pipe(switchMap(preference => {
|
|
20778
|
+
if (preference === 'system') {
|
|
20779
|
+
return this.getUsersSystemPreferenceForTheme$();
|
|
20780
|
+
}
|
|
20781
|
+
return of(preference);
|
|
20782
|
+
}));
|
|
20783
|
+
this.disableThemeSelection$ = this._temporaryThemePreference$.pipe(map(preference => preference !== 'none'));
|
|
20784
|
+
this.currentlyAppliedTheme$ = this._temporaryThemePreference$.pipe(switchMap(temporaryPreference => {
|
|
20785
|
+
if (temporaryPreference !== 'none') {
|
|
20786
|
+
return of(temporaryPreference);
|
|
20787
|
+
}
|
|
20788
|
+
return userSelectedTheme$;
|
|
20789
|
+
}));
|
|
20790
|
+
this.darkThemeAvailable$ = this.options.get$('darkThemeAvailable').pipe(map(value => !!value));
|
|
20791
|
+
}
|
|
20792
|
+
getCurrentThemePreference() {
|
|
20793
|
+
const value = getThemePreference();
|
|
20794
|
+
if (value === 'system' || value === 'dark') {
|
|
20795
|
+
return value;
|
|
20796
|
+
}
|
|
20797
|
+
return 'light';
|
|
20798
|
+
}
|
|
20799
|
+
getUsersSystemPreferenceForTheme$() {
|
|
20800
|
+
return fromEvent(window.matchMedia('(prefers-color-scheme: dark)'), 'change').pipe(startWith(window.matchMedia('(prefers-color-scheme: dark)')), map((e) => (e.matches ? 'dark' : 'light')));
|
|
20801
|
+
}
|
|
20802
|
+
changeUserPreference(preference) {
|
|
20803
|
+
setThemePreference(preference);
|
|
20804
|
+
this._userSelectedThemePreference$.next(preference);
|
|
20805
|
+
this.applyTheme(preference);
|
|
20806
|
+
}
|
|
20807
|
+
temporaryChangeTheme(preference) {
|
|
20808
|
+
this._temporaryThemePreference$.next(preference);
|
|
20809
|
+
this.applyTheme(preference);
|
|
20810
|
+
}
|
|
20811
|
+
resetTemporaryTheme() {
|
|
20812
|
+
this._temporaryThemePreference$.next('none');
|
|
20813
|
+
this.applyTheme(this.getCurrentThemePreference());
|
|
20814
|
+
}
|
|
20815
|
+
applyTheme(preference) {
|
|
20816
|
+
applyTheme(preference);
|
|
20817
|
+
}
|
|
20818
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ThemeSwitcherService, deps: [{ token: OptionsService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
20819
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ThemeSwitcherService, providedIn: 'root' }); }
|
|
20820
|
+
}
|
|
20821
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ThemeSwitcherService, decorators: [{
|
|
20822
|
+
type: Injectable,
|
|
20823
|
+
args: [{
|
|
20824
|
+
providedIn: 'root'
|
|
20825
|
+
}]
|
|
20826
|
+
}], ctorParameters: () => [{ type: OptionsService }] });
|
|
20827
|
+
|
|
20828
|
+
class UiSettingsComponent {
|
|
20829
|
+
constructor(translate, state, ui, userPreferences, c8yModalService, headerService, themeSwitcher) {
|
|
20830
|
+
this.translate = translate;
|
|
20831
|
+
this.state = state;
|
|
20832
|
+
this.ui = ui;
|
|
20833
|
+
this.userPreferences = userPreferences;
|
|
20834
|
+
this.c8yModalService = c8yModalService;
|
|
20835
|
+
this.headerService = headerService;
|
|
20836
|
+
this.themeSwitcher = themeSwitcher;
|
|
20837
|
+
this.destroyed$ = new Subject();
|
|
20838
|
+
this.currentLang = this.ui.state.lang;
|
|
20839
|
+
this.ui.state$
|
|
20840
|
+
.pipe(filter(({ lang }) => lang !== this.currentLang), takeUntil(this.destroyed$), first$1())
|
|
20841
|
+
.subscribe(({ lang }) => (this.currentLang = lang));
|
|
20842
|
+
this.open$ = this.headerService.rightDrawerOpen$;
|
|
20843
|
+
}
|
|
20844
|
+
ngOnInit() {
|
|
20845
|
+
this.languages = this.state.state.langs.map(l => ({
|
|
20846
|
+
lang: l,
|
|
20847
|
+
nativeLanguage: this.translate.getNativeLanguage(l)
|
|
20848
|
+
}));
|
|
20849
|
+
}
|
|
20850
|
+
ngOnDestroy() {
|
|
20851
|
+
this.destroyed$.next();
|
|
20852
|
+
this.destroyed$.complete();
|
|
20853
|
+
}
|
|
20854
|
+
async onLanguageChange(changedLang) {
|
|
20855
|
+
if (!changedLang) {
|
|
20856
|
+
return;
|
|
20857
|
+
}
|
|
20858
|
+
await this.translate.switchToLanguage(changedLang);
|
|
20859
|
+
if (await this.persistLanguage(changedLang)) {
|
|
20860
|
+
location.reload();
|
|
20861
|
+
}
|
|
20862
|
+
}
|
|
20863
|
+
async persistLanguage(lang) {
|
|
20864
|
+
let shouldReload = true;
|
|
20865
|
+
try {
|
|
20866
|
+
await this.c8yModalService.confirm(gettext$1('Reload recommended'), gettext$1('To change the language in the entire application, we recommend you to reload the page. If you have any unsaved changes, you can reload later. How would you like to proceed?'), Status.WARNING, {
|
|
20867
|
+
ok: gettext$1('Reload now'),
|
|
20868
|
+
cancel: gettext$1('Reload later')
|
|
20869
|
+
});
|
|
20870
|
+
}
|
|
20871
|
+
catch (ex) {
|
|
20872
|
+
shouldReload = false;
|
|
20873
|
+
}
|
|
20874
|
+
finally {
|
|
20875
|
+
this.translate.saveInLocalStorage(lang);
|
|
20876
|
+
await this.userPreferences.set('language', lang);
|
|
20877
|
+
this.currentLang = lang;
|
|
20878
|
+
}
|
|
20879
|
+
return shouldReload;
|
|
20880
|
+
}
|
|
20881
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: UiSettingsComponent, deps: [{ token: TranslateService }, { token: AppStateService }, { token: AppStateService }, { token: UserPreferencesService }, { token: ModalService }, { token: HeaderService }, { token: ThemeSwitcherService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
20882
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: UiSettingsComponent, isStandalone: true, selector: "c8y-ui-settings", ngImport: i0, template: "<div class=\"separator-top p-t-8 p-b-8\">\n <div class=\"c8y-right-drawer__item sticky-top\">\n <i c8yIcon=\"eyedropper\"></i>\n <span class=\"text-bold\">{{ 'UI settings' | translate }}</span>\n </div>\n\n <div\n class=\"p-l-16 p-r-16 p-b-16\"\n *ngIf=\"themeSwitcher.darkThemeAvailable$ | async\"\n >\n <p translate>Theme</p>\n <div\n class=\"c8y-switch-multistate\"\n *ngIf=\"themeSwitcher.userSelectedThemePreference$ | async as themePreference\"\n >\n <ng-container *ngFor=\"let themeOption of themeSwitcher.themeOptions; index as i\">\n <input\n [attr.aria-label]=\"themeOption.label\"\n tabindex=\"{{ (open$ | async) ? '0' : '-1' }}\"\n name=\"theme-switcher\"\n type=\"radio\"\n [id]=\"'theme-option-' + i\"\n [disabled]=\"themeSwitcher.disableThemeSelection$ | async\"\n [checked]=\"themePreference === themeOption.value\"\n (click)=\"themeSwitcher.changeUserPreference(themeOption.value)\"\n />\n <label\n title=\"{{ themeOption.label | translate }}\"\n [for]=\"'theme-option-' + i\"\n >\n <i [c8yIcon]=\"themeOption.icon\"></i>\n </label>\n </ng-container>\n <div class=\"c8y-switch-multistate__handle\"></div>\n </div>\n </div>\n\n <div class=\"form-group p-l-16 p-r-16\">\n <label\n for=\"userLang\"\n translate\n >\n Language\n </label>\n <div class=\"c8y-select-wrapper\">\n <select\n id=\"userLang\"\n tabindex=\"{{ (open$ | async) ? '0' : '-1' }}\"\n #selectLang\n [ngModel]=\"currentLang\"\n (change)=\"onLanguageChange(selectLang.value)\"\n >\n <option\n *ngFor=\"let language of languages\"\n [value]=\"language.lang\"\n >\n {{ language.nativeLanguage }}\n </option>\n </select>\n <span></span>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: FormsModule$1 }, { kind: "directive", type: i1$8.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1$8.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1$8.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1$8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }] }); }
|
|
20883
|
+
}
|
|
20884
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: UiSettingsComponent, decorators: [{
|
|
20885
|
+
type: Component,
|
|
20886
|
+
args: [{ selector: 'c8y-ui-settings', standalone: true, imports: [
|
|
20887
|
+
IconDirective,
|
|
20888
|
+
NgIf,
|
|
20889
|
+
C8yTranslateDirective,
|
|
20890
|
+
NgFor,
|
|
20891
|
+
FormsModule$1,
|
|
20892
|
+
C8yTranslatePipe,
|
|
20893
|
+
AsyncPipe
|
|
20894
|
+
], template: "<div class=\"separator-top p-t-8 p-b-8\">\n <div class=\"c8y-right-drawer__item sticky-top\">\n <i c8yIcon=\"eyedropper\"></i>\n <span class=\"text-bold\">{{ 'UI settings' | translate }}</span>\n </div>\n\n <div\n class=\"p-l-16 p-r-16 p-b-16\"\n *ngIf=\"themeSwitcher.darkThemeAvailable$ | async\"\n >\n <p translate>Theme</p>\n <div\n class=\"c8y-switch-multistate\"\n *ngIf=\"themeSwitcher.userSelectedThemePreference$ | async as themePreference\"\n >\n <ng-container *ngFor=\"let themeOption of themeSwitcher.themeOptions; index as i\">\n <input\n [attr.aria-label]=\"themeOption.label\"\n tabindex=\"{{ (open$ | async) ? '0' : '-1' }}\"\n name=\"theme-switcher\"\n type=\"radio\"\n [id]=\"'theme-option-' + i\"\n [disabled]=\"themeSwitcher.disableThemeSelection$ | async\"\n [checked]=\"themePreference === themeOption.value\"\n (click)=\"themeSwitcher.changeUserPreference(themeOption.value)\"\n />\n <label\n title=\"{{ themeOption.label | translate }}\"\n [for]=\"'theme-option-' + i\"\n >\n <i [c8yIcon]=\"themeOption.icon\"></i>\n </label>\n </ng-container>\n <div class=\"c8y-switch-multistate__handle\"></div>\n </div>\n </div>\n\n <div class=\"form-group p-l-16 p-r-16\">\n <label\n for=\"userLang\"\n translate\n >\n Language\n </label>\n <div class=\"c8y-select-wrapper\">\n <select\n id=\"userLang\"\n tabindex=\"{{ (open$ | async) ? '0' : '-1' }}\"\n #selectLang\n [ngModel]=\"currentLang\"\n (change)=\"onLanguageChange(selectLang.value)\"\n >\n <option\n *ngFor=\"let language of languages\"\n [value]=\"language.lang\"\n >\n {{ language.nativeLanguage }}\n </option>\n </select>\n <span></span>\n </div>\n </div>\n</div>\n" }]
|
|
20895
|
+
}], ctorParameters: () => [{ type: TranslateService }, { type: AppStateService }, { type: AppStateService }, { type: UserPreferencesService }, { type: ModalService }, { type: HeaderService }, { type: ThemeSwitcherService }] });
|
|
20896
|
+
|
|
20897
|
+
class UiSettingsModule {
|
|
20898
|
+
static providers() {
|
|
20899
|
+
return [
|
|
20900
|
+
hookDrawer({
|
|
20901
|
+
component: UiSettingsComponent,
|
|
20902
|
+
position: 'right',
|
|
20903
|
+
priority: 90,
|
|
20904
|
+
id: 'uiSettings'
|
|
20905
|
+
})
|
|
20906
|
+
];
|
|
20907
|
+
}
|
|
20908
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: UiSettingsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
20909
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.15", ngImport: i0, type: UiSettingsModule, imports: [CommonModule, FormsModule$1, UiSettingsComponent], exports: [UiSettingsComponent] }); }
|
|
20910
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: UiSettingsModule, imports: [CommonModule, FormsModule$1, UiSettingsComponent] }); }
|
|
20911
|
+
}
|
|
20912
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: UiSettingsModule, decorators: [{
|
|
20913
|
+
type: NgModule,
|
|
20914
|
+
args: [{
|
|
20915
|
+
imports: [CommonModule, FormsModule$1, UiSettingsComponent],
|
|
20916
|
+
exports: [UiSettingsComponent]
|
|
20917
|
+
}]
|
|
20918
|
+
}] });
|
|
20919
|
+
|
|
20920
|
+
class UserMenuItemComponent {
|
|
20921
|
+
constructor(userService, headerService) {
|
|
20922
|
+
this.userService = userService;
|
|
20923
|
+
this.headerService = headerService;
|
|
20924
|
+
this.priority = 0;
|
|
20925
|
+
this.click = new EventEmitter();
|
|
20926
|
+
this.open$ = this.headerService.rightDrawerOpen$;
|
|
20927
|
+
}
|
|
20928
|
+
ngAfterViewInit() {
|
|
20929
|
+
this.viewInitTimeout = setTimeout(() => this.userService.add(this));
|
|
20930
|
+
}
|
|
20931
|
+
ngOnDestroy() {
|
|
20932
|
+
clearTimeout(this.viewInitTimeout);
|
|
20933
|
+
this.userService.remove(this);
|
|
20934
|
+
}
|
|
20935
|
+
onClick() {
|
|
20936
|
+
this.click.emit(this);
|
|
20937
|
+
}
|
|
20938
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: UserMenuItemComponent, deps: [{ token: UserMenuService }, { token: HeaderService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
20939
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: UserMenuItemComponent, isStandalone: true, selector: "c8y-user-menu-item", inputs: { icon: "icon", label: "label", link: "link", target: "target", priority: "priority", dataCy: "dataCy" }, outputs: { click: "click" }, viewQueries: [{ propertyName: "template", first: true, predicate: ["template"], descendants: true }], ngImport: i0, template: "<ng-template #template>\n <li>\n <a\n class=\"c8y-right-drawer__link\"\n [attr.tabindex]=\"(open$ | async) ? '0' : '-1'\"\n (click)=\"onClick()\"\n [attr.data-cy]=\"dataCy\"\n *ngIf=\"link\"\n [attr.href]=\"link\"\n [attr.target]=\"target\"\n >\n {{ label | translate }}\n <ng-content></ng-content>\n </a>\n <button\n class=\"c8y-right-drawer__link\"\n [attr.tabindex]=\"(open$ | async) ? '0' : '-1'\"\n type=\"button\"\n *ngIf=\"!link\"\n (click)=\"onClick()\"\n [attr.data-cy]=\"dataCy\"\n >\n {{ label | translate }}\n <ng-content></ng-content>\n </button>\n </li>\n</ng-template>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }] }); }
|
|
20940
|
+
}
|
|
20941
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: UserMenuItemComponent, decorators: [{
|
|
20942
|
+
type: Component,
|
|
20943
|
+
args: [{ selector: 'c8y-user-menu-item', standalone: true, imports: [NgIf, C8yTranslatePipe, AsyncPipe], template: "<ng-template #template>\n <li>\n <a\n class=\"c8y-right-drawer__link\"\n [attr.tabindex]=\"(open$ | async) ? '0' : '-1'\"\n (click)=\"onClick()\"\n [attr.data-cy]=\"dataCy\"\n *ngIf=\"link\"\n [attr.href]=\"link\"\n [attr.target]=\"target\"\n >\n {{ label | translate }}\n <ng-content></ng-content>\n </a>\n <button\n class=\"c8y-right-drawer__link\"\n [attr.tabindex]=\"(open$ | async) ? '0' : '-1'\"\n type=\"button\"\n *ngIf=\"!link\"\n (click)=\"onClick()\"\n [attr.data-cy]=\"dataCy\"\n >\n {{ label | translate }}\n <ng-content></ng-content>\n </button>\n </li>\n</ng-template>\n" }]
|
|
20944
|
+
}], ctorParameters: () => [{ type: UserMenuService }, { type: HeaderService }], propDecorators: { icon: [{
|
|
20945
|
+
type: Input
|
|
20946
|
+
}], label: [{
|
|
20947
|
+
type: Input
|
|
20948
|
+
}], link: [{
|
|
20949
|
+
type: Input
|
|
20950
|
+
}], target: [{
|
|
20951
|
+
type: Input
|
|
20952
|
+
}], priority: [{
|
|
20953
|
+
type: Input
|
|
20954
|
+
}], dataCy: [{
|
|
20955
|
+
type: Input
|
|
20956
|
+
}], template: [{
|
|
20957
|
+
type: ViewChild,
|
|
20958
|
+
args: ['template', { static: false }]
|
|
20959
|
+
}], click: [{
|
|
20960
|
+
type: Output
|
|
20961
|
+
}] } });
|
|
20962
|
+
|
|
20450
20963
|
class PasswordConfirmModalComponent {
|
|
20451
20964
|
constructor(user, ui, client, alert) {
|
|
20452
20965
|
this.user = user;
|
|
@@ -21449,319 +21962,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
21449
21962
|
args: [{ selector: 'c8y-user-edit-modal', standalone: true, imports: [ModalComponent, UserEditComponent, C8yTranslatePipe, AsyncPipe], template: "<c8y-modal\n [title]=\"'Edit user' | translate\"\n [customFooter]=\"true\"\n (onDismiss)=\"onDismiss()\"\n>\n <c8y-user-edit\n [user]=\"ui.currentUser | async\"\n [loading]=\"loading\"\n [isUsageTrackingEnabled]=\"currentUsageTrackingState\"\n [isUserEngagementPreferenceEnabled]=\"currentUserEngagementPreferenceInitialState\"\n [showProductExperienceOptions]=\"showProductExperienceOptions\"\n [focusOnNewPassword]=\"passwordChange\"\n (onUsageTrackingChange)=\"onUsageTrackingChange($event)\"\n (onUserEngagementPreferenceChange)=\"onUserEngagementPreferenceChange($event)\"\n (onUser)=\"updateAndClose($event)\"\n (onCancel)=\"onDismiss()\"\n ></c8y-user-edit>\n</c8y-modal>\n" }]
|
|
21450
21963
|
}], ctorParameters: () => [{ type: i1$7.BsModalRef }, { type: i1.UserService }, { type: AppStateService }, { type: i1.BasicAuth }, { type: i1.FetchClient }, { type: AlertService }, { type: UserPreferencesService }, { type: ModalService }, { type: GainsightService }, { type: CookieBannerService }, { type: PasswordService }, { type: UserEngagementsService }] });
|
|
21451
21964
|
|
|
21452
|
-
/**
|
|
21453
|
-
* Service to show a modal.
|
|
21454
|
-
*/
|
|
21455
|
-
class ModalService {
|
|
21456
|
-
constructor(modalService, gainsightService) {
|
|
21457
|
-
this.modalService = modalService;
|
|
21458
|
-
this.gainsightService = gainsightService;
|
|
21459
|
-
}
|
|
21460
|
-
/**
|
|
21461
|
-
* Shows a quick confirm message modal.
|
|
21462
|
-
* @param title The title of that modal.
|
|
21463
|
-
* @param body The text body to display.
|
|
21464
|
-
* @param status The status.
|
|
21465
|
-
* @param labels The labels to use. Default: { ok: 'Confirm', cancel: 'Cancel'}
|
|
21466
|
-
* @param confirmOptions Selection options to display as checkbox list.
|
|
21467
|
-
* @param productExperienceEvent Additional data to attach to custom product experience events.
|
|
21468
|
-
*/
|
|
21469
|
-
async confirm(title, body, status = Status.INFO, labels = {}, confirmOptions = {}, productExperienceEvent = { eventName: 'confirmModal' }) {
|
|
21470
|
-
const modalLabels = {
|
|
21471
|
-
ok: labels.ok || gettext$1('Confirm'),
|
|
21472
|
-
cancel: labels.cancel || gettext$1('Cancel')
|
|
21473
|
-
};
|
|
21474
|
-
const modalRef = this.modalService.show(ConfirmModalComponent, {
|
|
21475
|
-
initialState: { title, body, labels: modalLabels, status, confirmOptions },
|
|
21476
|
-
ariaDescribedby: 'modal-body',
|
|
21477
|
-
ariaLabelledBy: 'modal-title',
|
|
21478
|
-
ignoreBackdropClick: true
|
|
21479
|
-
});
|
|
21480
|
-
if (productExperienceEvent) {
|
|
21481
|
-
productExperienceEvent.data = { ...productExperienceEvent.data, title };
|
|
21482
|
-
}
|
|
21483
|
-
this.triggerEvent(modalRef.content.result, modalLabels, productExperienceEvent);
|
|
21484
|
-
return await modalRef.content.result;
|
|
21485
|
-
}
|
|
21486
|
-
/**
|
|
21487
|
-
* Shows a quick acknowledge message modal.
|
|
21488
|
-
* @param title The title of that modal.
|
|
21489
|
-
* @param body The text body to display.
|
|
21490
|
-
* @param status The status.
|
|
21491
|
-
* @param acknowledgeLabel The label to use.
|
|
21492
|
-
* @param productExperienceEvent Additional data to attach to custom product experience events.
|
|
21493
|
-
*/
|
|
21494
|
-
async acknowledge(title, body, status = Status.INFO, acknowledgeLabel = gettext$1('Confirm'), productExperienceEvent = { eventName: 'confirmModal' }) {
|
|
21495
|
-
const labels = { ok: acknowledgeLabel, cancel: null };
|
|
21496
|
-
const modalRef = this.modalService.show(ConfirmModalComponent, {
|
|
21497
|
-
initialState: { title, body, labels, status },
|
|
21498
|
-
ariaDescribedby: 'modal-body',
|
|
21499
|
-
ariaLabelledBy: 'modal-title',
|
|
21500
|
-
ignoreBackdropClick: true
|
|
21501
|
-
});
|
|
21502
|
-
if (productExperienceEvent) {
|
|
21503
|
-
productExperienceEvent.data = { ...productExperienceEvent.data, title };
|
|
21504
|
-
}
|
|
21505
|
-
this.triggerEvent(modalRef.content.result, labels, productExperienceEvent);
|
|
21506
|
-
return await modalRef.content.result;
|
|
21507
|
-
}
|
|
21508
|
-
/**
|
|
21509
|
-
* Shows a quick logout confirmation modal.
|
|
21510
|
-
* @param body The text body to display. Default: 'You will be logged out to apply your changes. Do you want to proceed?'
|
|
21511
|
-
* @param status The status.
|
|
21512
|
-
* @param labels The labels to use. Default: { ok: 'Confirm and log out', cancel: 'Cancel' }
|
|
21513
|
-
*/
|
|
21514
|
-
async confirmLogout(body, status = Status.WARNING, labels = {}) {
|
|
21515
|
-
const modalLabels = {
|
|
21516
|
-
ok: labels.ok || gettext$1('Confirm and log out'),
|
|
21517
|
-
cancel: labels.cancel || gettext$1('Cancel')
|
|
21518
|
-
};
|
|
21519
|
-
const modalBody = body || gettext$1('You must log out to apply your changes. Do you want to proceed?');
|
|
21520
|
-
return await this.confirm(gettext$1('Logout required'), modalBody, status, modalLabels);
|
|
21521
|
-
}
|
|
21522
|
-
async changeCurrentUserPassword() {
|
|
21523
|
-
this.modalService.show(UserEditModalComponent, {
|
|
21524
|
-
initialState: { passwordChange: true },
|
|
21525
|
-
ariaDescribedby: 'modal-body',
|
|
21526
|
-
ariaLabelledBy: 'modal-title'
|
|
21527
|
-
});
|
|
21528
|
-
}
|
|
21529
|
-
triggerEvent(result, labels, productExperienceEvent) {
|
|
21530
|
-
const data = { ...productExperienceEvent.data, url: window.location.href };
|
|
21531
|
-
result
|
|
21532
|
-
.then(() => {
|
|
21533
|
-
this.gainsightService.triggerEvent(productExperienceEvent.eventName, {
|
|
21534
|
-
...data,
|
|
21535
|
-
result: labels.ok
|
|
21536
|
-
});
|
|
21537
|
-
})
|
|
21538
|
-
.catch(() => {
|
|
21539
|
-
this.gainsightService.triggerEvent(productExperienceEvent.eventName, {
|
|
21540
|
-
...data,
|
|
21541
|
-
result: labels.cancel
|
|
21542
|
-
});
|
|
21543
|
-
});
|
|
21544
|
-
}
|
|
21545
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ModalService, deps: [{ token: i1$7.BsModalService }, { token: GainsightService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
21546
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ModalService, providedIn: 'root' }); }
|
|
21547
|
-
}
|
|
21548
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ModalService, decorators: [{
|
|
21549
|
-
type: Injectable,
|
|
21550
|
-
args: [{
|
|
21551
|
-
providedIn: 'root'
|
|
21552
|
-
}]
|
|
21553
|
-
}], ctorParameters: () => [{ type: i1$7.BsModalService }, { type: GainsightService }] });
|
|
21554
|
-
|
|
21555
|
-
class ThemeSwitcherService {
|
|
21556
|
-
constructor(options) {
|
|
21557
|
-
this.options = options;
|
|
21558
|
-
this.darkThemeClass = `c8y-dark-theme`;
|
|
21559
|
-
this.themeOptions = [
|
|
21560
|
-
{
|
|
21561
|
-
label: gettext$1('Light'),
|
|
21562
|
-
value: 'light',
|
|
21563
|
-
icon: 'sun'
|
|
21564
|
-
},
|
|
21565
|
-
{
|
|
21566
|
-
label: gettext$1('Dark'),
|
|
21567
|
-
value: 'dark',
|
|
21568
|
-
icon: 'moon'
|
|
21569
|
-
},
|
|
21570
|
-
{
|
|
21571
|
-
label: gettext$1('System'),
|
|
21572
|
-
value: 'system',
|
|
21573
|
-
icon: 'imac-settings'
|
|
21574
|
-
}
|
|
21575
|
-
];
|
|
21576
|
-
this._userSelectedThemePreference$ = new BehaviorSubject(this.getCurrentThemePreference());
|
|
21577
|
-
this._temporaryThemePreference$ = new BehaviorSubject('none');
|
|
21578
|
-
this.userSelectedThemePreference$ = this._userSelectedThemePreference$.asObservable();
|
|
21579
|
-
const userSelectedTheme$ = this.userSelectedThemePreference$.pipe(switchMap(preference => {
|
|
21580
|
-
if (preference === 'system') {
|
|
21581
|
-
return this.getUsersSystemPreferenceForTheme$();
|
|
21582
|
-
}
|
|
21583
|
-
return of(preference);
|
|
21584
|
-
}));
|
|
21585
|
-
this.disableThemeSelection$ = this._temporaryThemePreference$.pipe(map(preference => preference !== 'none'));
|
|
21586
|
-
this.currentlyAppliedTheme$ = this._temporaryThemePreference$.pipe(switchMap(temporaryPreference => {
|
|
21587
|
-
if (temporaryPreference !== 'none') {
|
|
21588
|
-
return of(temporaryPreference);
|
|
21589
|
-
}
|
|
21590
|
-
return userSelectedTheme$;
|
|
21591
|
-
}));
|
|
21592
|
-
this.darkThemeAvailable$ = this.options.get$('darkThemeAvailable').pipe(map(value => !!value));
|
|
21593
|
-
}
|
|
21594
|
-
getCurrentThemePreference() {
|
|
21595
|
-
const value = getThemePreference();
|
|
21596
|
-
if (value === 'system' || value === 'dark') {
|
|
21597
|
-
return value;
|
|
21598
|
-
}
|
|
21599
|
-
return 'light';
|
|
21600
|
-
}
|
|
21601
|
-
getUsersSystemPreferenceForTheme$() {
|
|
21602
|
-
return fromEvent(window.matchMedia('(prefers-color-scheme: dark)'), 'change').pipe(startWith(window.matchMedia('(prefers-color-scheme: dark)')), map((e) => (e.matches ? 'dark' : 'light')));
|
|
21603
|
-
}
|
|
21604
|
-
changeUserPreference(preference) {
|
|
21605
|
-
setThemePreference(preference);
|
|
21606
|
-
this._userSelectedThemePreference$.next(preference);
|
|
21607
|
-
this.applyTheme(preference);
|
|
21608
|
-
}
|
|
21609
|
-
temporaryChangeTheme(preference) {
|
|
21610
|
-
this._temporaryThemePreference$.next(preference);
|
|
21611
|
-
this.applyTheme(preference);
|
|
21612
|
-
}
|
|
21613
|
-
resetTemporaryTheme() {
|
|
21614
|
-
this._temporaryThemePreference$.next('none');
|
|
21615
|
-
this.applyTheme(this.getCurrentThemePreference());
|
|
21616
|
-
}
|
|
21617
|
-
applyTheme(preference) {
|
|
21618
|
-
applyTheme(preference);
|
|
21619
|
-
}
|
|
21620
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ThemeSwitcherService, deps: [{ token: OptionsService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
21621
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ThemeSwitcherService, providedIn: 'root' }); }
|
|
21622
|
-
}
|
|
21623
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ThemeSwitcherService, decorators: [{
|
|
21624
|
-
type: Injectable,
|
|
21625
|
-
args: [{
|
|
21626
|
-
providedIn: 'root'
|
|
21627
|
-
}]
|
|
21628
|
-
}], ctorParameters: () => [{ type: OptionsService }] });
|
|
21629
|
-
|
|
21630
|
-
class UiSettingsComponent {
|
|
21631
|
-
constructor(translate, state, ui, userPreferences, c8yModalService, headerService, themeSwitcher) {
|
|
21632
|
-
this.translate = translate;
|
|
21633
|
-
this.state = state;
|
|
21634
|
-
this.ui = ui;
|
|
21635
|
-
this.userPreferences = userPreferences;
|
|
21636
|
-
this.c8yModalService = c8yModalService;
|
|
21637
|
-
this.headerService = headerService;
|
|
21638
|
-
this.themeSwitcher = themeSwitcher;
|
|
21639
|
-
this.destroyed$ = new Subject();
|
|
21640
|
-
this.currentLang = this.ui.state.lang;
|
|
21641
|
-
this.ui.state$
|
|
21642
|
-
.pipe(filter(({ lang }) => lang !== this.currentLang), takeUntil(this.destroyed$), first$1())
|
|
21643
|
-
.subscribe(({ lang }) => (this.currentLang = lang));
|
|
21644
|
-
this.open$ = this.headerService.rightDrawerOpen$;
|
|
21645
|
-
}
|
|
21646
|
-
ngOnInit() {
|
|
21647
|
-
this.languages = this.state.state.langs.map(l => ({
|
|
21648
|
-
lang: l,
|
|
21649
|
-
nativeLanguage: this.translate.getNativeLanguage(l)
|
|
21650
|
-
}));
|
|
21651
|
-
}
|
|
21652
|
-
ngOnDestroy() {
|
|
21653
|
-
this.destroyed$.next();
|
|
21654
|
-
this.destroyed$.complete();
|
|
21655
|
-
}
|
|
21656
|
-
async onLanguageChange(changedLang) {
|
|
21657
|
-
if (!changedLang) {
|
|
21658
|
-
return;
|
|
21659
|
-
}
|
|
21660
|
-
await this.translate.switchToLanguage(changedLang);
|
|
21661
|
-
if (await this.persistLanguage(changedLang)) {
|
|
21662
|
-
location.reload();
|
|
21663
|
-
}
|
|
21664
|
-
}
|
|
21665
|
-
async persistLanguage(lang) {
|
|
21666
|
-
let shouldReload = true;
|
|
21667
|
-
try {
|
|
21668
|
-
await this.c8yModalService.confirm(gettext$1('Reload recommended'), gettext$1('To change the language in the entire application, we recommend you to reload the page. If you have any unsaved changes, you can reload later. How would you like to proceed?'), Status.WARNING, {
|
|
21669
|
-
ok: gettext$1('Reload now'),
|
|
21670
|
-
cancel: gettext$1('Reload later')
|
|
21671
|
-
});
|
|
21672
|
-
}
|
|
21673
|
-
catch (ex) {
|
|
21674
|
-
shouldReload = false;
|
|
21675
|
-
}
|
|
21676
|
-
finally {
|
|
21677
|
-
this.translate.saveInLocalStorage(lang);
|
|
21678
|
-
await this.userPreferences.set('language', lang);
|
|
21679
|
-
this.currentLang = lang;
|
|
21680
|
-
}
|
|
21681
|
-
return shouldReload;
|
|
21682
|
-
}
|
|
21683
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: UiSettingsComponent, deps: [{ token: TranslateService }, { token: AppStateService }, { token: AppStateService }, { token: UserPreferencesService }, { token: ModalService }, { token: HeaderService }, { token: ThemeSwitcherService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
21684
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: UiSettingsComponent, isStandalone: true, selector: "c8y-ui-settings", ngImport: i0, template: "<div class=\"separator-top p-t-8 p-b-8\">\n <div class=\"c8y-right-drawer__item sticky-top\">\n <i c8yIcon=\"eyedropper\"></i>\n <span class=\"text-bold\">{{ 'UI settings' | translate }}</span>\n </div>\n\n <div\n class=\"p-l-16 p-r-16 p-b-16\"\n *ngIf=\"themeSwitcher.darkThemeAvailable$ | async\"\n >\n <p translate>Theme</p>\n <div\n class=\"c8y-switch-multistate\"\n *ngIf=\"themeSwitcher.userSelectedThemePreference$ | async as themePreference\"\n >\n <ng-container *ngFor=\"let themeOption of themeSwitcher.themeOptions; index as i\">\n <input\n [attr.aria-label]=\"themeOption.label\"\n tabindex=\"{{ (open$ | async) ? '0' : '-1' }}\"\n name=\"theme-switcher\"\n type=\"radio\"\n [id]=\"'theme-option-' + i\"\n [disabled]=\"themeSwitcher.disableThemeSelection$ | async\"\n [checked]=\"themePreference === themeOption.value\"\n (click)=\"themeSwitcher.changeUserPreference(themeOption.value)\"\n />\n <label\n title=\"{{ themeOption.label | translate }}\"\n [for]=\"'theme-option-' + i\"\n >\n <i [c8yIcon]=\"themeOption.icon\"></i>\n </label>\n </ng-container>\n <div class=\"c8y-switch-multistate__handle\"></div>\n </div>\n </div>\n\n <div class=\"form-group p-l-16 p-r-16\">\n <label\n for=\"userLang\"\n translate\n >\n Language\n </label>\n <div class=\"c8y-select-wrapper\">\n <select\n id=\"userLang\"\n tabindex=\"{{ (open$ | async) ? '0' : '-1' }}\"\n #selectLang\n [ngModel]=\"currentLang\"\n (change)=\"onLanguageChange(selectLang.value)\"\n >\n <option\n *ngFor=\"let language of languages\"\n [value]=\"language.lang\"\n >\n {{ language.nativeLanguage }}\n </option>\n </select>\n <span></span>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: FormsModule$1 }, { kind: "directive", type: i1$8.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1$8.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1$8.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1$8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }] }); }
|
|
21685
|
-
}
|
|
21686
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: UiSettingsComponent, decorators: [{
|
|
21687
|
-
type: Component,
|
|
21688
|
-
args: [{ selector: 'c8y-ui-settings', standalone: true, imports: [
|
|
21689
|
-
IconDirective,
|
|
21690
|
-
NgIf,
|
|
21691
|
-
C8yTranslateDirective,
|
|
21692
|
-
NgFor,
|
|
21693
|
-
FormsModule$1,
|
|
21694
|
-
C8yTranslatePipe,
|
|
21695
|
-
AsyncPipe
|
|
21696
|
-
], template: "<div class=\"separator-top p-t-8 p-b-8\">\n <div class=\"c8y-right-drawer__item sticky-top\">\n <i c8yIcon=\"eyedropper\"></i>\n <span class=\"text-bold\">{{ 'UI settings' | translate }}</span>\n </div>\n\n <div\n class=\"p-l-16 p-r-16 p-b-16\"\n *ngIf=\"themeSwitcher.darkThemeAvailable$ | async\"\n >\n <p translate>Theme</p>\n <div\n class=\"c8y-switch-multistate\"\n *ngIf=\"themeSwitcher.userSelectedThemePreference$ | async as themePreference\"\n >\n <ng-container *ngFor=\"let themeOption of themeSwitcher.themeOptions; index as i\">\n <input\n [attr.aria-label]=\"themeOption.label\"\n tabindex=\"{{ (open$ | async) ? '0' : '-1' }}\"\n name=\"theme-switcher\"\n type=\"radio\"\n [id]=\"'theme-option-' + i\"\n [disabled]=\"themeSwitcher.disableThemeSelection$ | async\"\n [checked]=\"themePreference === themeOption.value\"\n (click)=\"themeSwitcher.changeUserPreference(themeOption.value)\"\n />\n <label\n title=\"{{ themeOption.label | translate }}\"\n [for]=\"'theme-option-' + i\"\n >\n <i [c8yIcon]=\"themeOption.icon\"></i>\n </label>\n </ng-container>\n <div class=\"c8y-switch-multistate__handle\"></div>\n </div>\n </div>\n\n <div class=\"form-group p-l-16 p-r-16\">\n <label\n for=\"userLang\"\n translate\n >\n Language\n </label>\n <div class=\"c8y-select-wrapper\">\n <select\n id=\"userLang\"\n tabindex=\"{{ (open$ | async) ? '0' : '-1' }}\"\n #selectLang\n [ngModel]=\"currentLang\"\n (change)=\"onLanguageChange(selectLang.value)\"\n >\n <option\n *ngFor=\"let language of languages\"\n [value]=\"language.lang\"\n >\n {{ language.nativeLanguage }}\n </option>\n </select>\n <span></span>\n </div>\n </div>\n</div>\n" }]
|
|
21697
|
-
}], ctorParameters: () => [{ type: TranslateService }, { type: AppStateService }, { type: AppStateService }, { type: UserPreferencesService }, { type: ModalService }, { type: HeaderService }, { type: ThemeSwitcherService }] });
|
|
21698
|
-
|
|
21699
|
-
class UiSettingsModule {
|
|
21700
|
-
static providers() {
|
|
21701
|
-
return [
|
|
21702
|
-
hookDrawer({
|
|
21703
|
-
component: UiSettingsComponent,
|
|
21704
|
-
position: 'right',
|
|
21705
|
-
priority: 90,
|
|
21706
|
-
id: 'uiSettings'
|
|
21707
|
-
})
|
|
21708
|
-
];
|
|
21709
|
-
}
|
|
21710
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: UiSettingsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
21711
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.15", ngImport: i0, type: UiSettingsModule, imports: [CommonModule, FormsModule$1, UiSettingsComponent], exports: [UiSettingsComponent] }); }
|
|
21712
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: UiSettingsModule, imports: [CommonModule, FormsModule$1, UiSettingsComponent] }); }
|
|
21713
|
-
}
|
|
21714
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: UiSettingsModule, decorators: [{
|
|
21715
|
-
type: NgModule,
|
|
21716
|
-
args: [{
|
|
21717
|
-
imports: [CommonModule, FormsModule$1, UiSettingsComponent],
|
|
21718
|
-
exports: [UiSettingsComponent]
|
|
21719
|
-
}]
|
|
21720
|
-
}] });
|
|
21721
|
-
|
|
21722
|
-
class UserMenuItemComponent {
|
|
21723
|
-
constructor(userService, headerService) {
|
|
21724
|
-
this.userService = userService;
|
|
21725
|
-
this.headerService = headerService;
|
|
21726
|
-
this.priority = 0;
|
|
21727
|
-
this.click = new EventEmitter();
|
|
21728
|
-
this.open$ = this.headerService.rightDrawerOpen$;
|
|
21729
|
-
}
|
|
21730
|
-
ngAfterViewInit() {
|
|
21731
|
-
this.viewInitTimeout = setTimeout(() => this.userService.add(this));
|
|
21732
|
-
}
|
|
21733
|
-
ngOnDestroy() {
|
|
21734
|
-
clearTimeout(this.viewInitTimeout);
|
|
21735
|
-
this.userService.remove(this);
|
|
21736
|
-
}
|
|
21737
|
-
onClick() {
|
|
21738
|
-
this.click.emit(this);
|
|
21739
|
-
}
|
|
21740
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: UserMenuItemComponent, deps: [{ token: UserMenuService }, { token: HeaderService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
21741
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: UserMenuItemComponent, isStandalone: true, selector: "c8y-user-menu-item", inputs: { icon: "icon", label: "label", link: "link", target: "target", priority: "priority", dataCy: "dataCy" }, outputs: { click: "click" }, viewQueries: [{ propertyName: "template", first: true, predicate: ["template"], descendants: true }], ngImport: i0, template: "<ng-template #template>\n <li>\n <a\n class=\"c8y-right-drawer__link\"\n [attr.tabindex]=\"(open$ | async) ? '0' : '-1'\"\n (click)=\"onClick()\"\n [attr.data-cy]=\"dataCy\"\n *ngIf=\"link\"\n [attr.href]=\"link\"\n [attr.target]=\"target\"\n >\n {{ label | translate }}\n <ng-content></ng-content>\n </a>\n <button\n class=\"c8y-right-drawer__link\"\n [attr.tabindex]=\"(open$ | async) ? '0' : '-1'\"\n type=\"button\"\n *ngIf=\"!link\"\n (click)=\"onClick()\"\n [attr.data-cy]=\"dataCy\"\n >\n {{ label | translate }}\n <ng-content></ng-content>\n </button>\n </li>\n</ng-template>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }] }); }
|
|
21742
|
-
}
|
|
21743
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: UserMenuItemComponent, decorators: [{
|
|
21744
|
-
type: Component,
|
|
21745
|
-
args: [{ selector: 'c8y-user-menu-item', standalone: true, imports: [NgIf, C8yTranslatePipe, AsyncPipe], template: "<ng-template #template>\n <li>\n <a\n class=\"c8y-right-drawer__link\"\n [attr.tabindex]=\"(open$ | async) ? '0' : '-1'\"\n (click)=\"onClick()\"\n [attr.data-cy]=\"dataCy\"\n *ngIf=\"link\"\n [attr.href]=\"link\"\n [attr.target]=\"target\"\n >\n {{ label | translate }}\n <ng-content></ng-content>\n </a>\n <button\n class=\"c8y-right-drawer__link\"\n [attr.tabindex]=\"(open$ | async) ? '0' : '-1'\"\n type=\"button\"\n *ngIf=\"!link\"\n (click)=\"onClick()\"\n [attr.data-cy]=\"dataCy\"\n >\n {{ label | translate }}\n <ng-content></ng-content>\n </button>\n </li>\n</ng-template>\n" }]
|
|
21746
|
-
}], ctorParameters: () => [{ type: UserMenuService }, { type: HeaderService }], propDecorators: { icon: [{
|
|
21747
|
-
type: Input
|
|
21748
|
-
}], label: [{
|
|
21749
|
-
type: Input
|
|
21750
|
-
}], link: [{
|
|
21751
|
-
type: Input
|
|
21752
|
-
}], target: [{
|
|
21753
|
-
type: Input
|
|
21754
|
-
}], priority: [{
|
|
21755
|
-
type: Input
|
|
21756
|
-
}], dataCy: [{
|
|
21757
|
-
type: Input
|
|
21758
|
-
}], template: [{
|
|
21759
|
-
type: ViewChild,
|
|
21760
|
-
args: ['template', { static: false }]
|
|
21761
|
-
}], click: [{
|
|
21762
|
-
type: Output
|
|
21763
|
-
}] } });
|
|
21764
|
-
|
|
21765
21965
|
class UserMenuOutletComponent {
|
|
21766
21966
|
constructor(ui, bsModalService, authService, userMenu, headerService) {
|
|
21767
21967
|
this.ui = ui;
|
|
@@ -23612,7 +23812,7 @@ class DropAreaComponent {
|
|
|
23612
23812
|
resolve(reader.result);
|
|
23613
23813
|
}
|
|
23614
23814
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: DropAreaComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: FilesService }, { token: i1$1.TranslateService }, { token: BytesPipe }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
23615
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: DropAreaComponent, isStandalone: true, selector: "c8y-drop-area", inputs: { formControl: "formControl", title: "title", message: "message", icon: "icon", loadingMessage: "loadingMessage", forceHideList: "forceHideList", alwaysShow: "alwaysShow", clickToOpen: "clickToOpen", loading: "loading", progress: "progress", maxAllowedFiles: "maxAllowedFiles", files: "files", maxFileSizeInMegaBytes: "maxFileSizeInMegaBytes", accept: "accept" }, outputs: { dropped: "dropped" }, host: { listeners: { "keyup": "onkeyup($event)" } }, providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: DropAreaComponent, multi: true }], viewQueries: [{ propertyName: "area", first: true, predicate: ["area"], descendants: true, static: true }, { propertyName: "zone", first: true, predicate: ["zone"], descendants: true }, { propertyName: "picker", first: true, predicate: ["picker"], descendants: true }], ngImport: i0, template: "<div\n class=\"drop-zone\"\n [style.pointerEvents]=\"loading ? 'none' : 'auto'\"\n [style.display]=\"isOver || alwaysShow || loading ? 'block' : 'none'\"\n tabindex=\"0\"\n *ngIf=\"!shouldShowFilesList()\"\n [ngClass]=\"{ 'has-errors': errors, disabled: formControl?.disabled || disabled }\"\n #zone\n (dragleave)=\"stopDragging()\"\n (drop)=\"onDrop($event)\"\n (dragover)=\"onOver()\"\n (click)=\"showPicker($event)\"\n>\n <div\n class=\"file-placeholder\"\n data-cy=\"c8y-file-placeholder--drop-zone\"\n [ngClass]=\"{ 'drag-over': isOver }\"\n >\n <div\n class=\"d-flex d-col p-4 flex-center\"\n *ngIf=\"loading\"\n >\n <div\n class=\"progress progress-striped active m-0\"\n style=\"min-width: 50%\"\n *ngIf=\"progress !== -1\"\n >\n <div\n class=\"progress-bar\"\n [style.width]=\"progress + '%'\"\n [attr.aria-label]=\"progress + '%'\"\n aria-valuenow=\"0\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n role=\"progressbar\"\n ></div>\n </div>\n <div\n class=\"spinner-snake\"\n *ngIf=\"progress === -1\"\n ></div>\n <p\n class=\"m-t-auto m-b-auto m-r-8\"\n *ngIf=\"!hasDropAreaSmallClass\"\n >\n {{ loadingMessage | translate }}\n </p>\n </div>\n <div\n class=\"hint-placeholder pointer\"\n *ngIf=\"!loading\"\n data-cy=\"drop-zone--hint-placeholder\"\n >\n <i class=\"dlt-c8y-icon-{{ icon }}\"></i>\n <p\n class=\"text-truncate\"\n title=\"{{ message | translate }}\"\n *ngIf=\"!errors\"\n >\n <b>{{ message | translate }}</b>\n <br />\n <span\n *ngIf=\"alwaysShow && clickToOpen\"\n translate\n ></span>\n </p>\n <div\n class=\"has-errors\"\n *ngIf=\"errors\"\n >\n <p class=\"form-control-feedback-message\">\n {{ errorMessage | translate }}\n </p>\n </div>\n </div>\n </div>\n</div>\n\n<div\n class=\"drop-zone\"\n [style.display]=\"isOver || alwaysShow || loading ? 'block' : 'none'\"\n tabindex=\"0\"\n *ngIf=\"shouldShowFilesList()\"\n>\n <div\n class=\"p-absolute p-4 fit-w fit-h d-flex d-col j-c-center a-i-center\"\n *ngIf=\"loading\"\n >\n <div\n class=\"progress progress-striped active m-0\"\n style=\"min-width: 80%\"\n *ngIf=\"progress !== -1\"\n >\n <div\n class=\"progress-bar\"\n [style.width]=\"progress + '%'\"\n [attr.aria-label]=\"progress + '%'\"\n aria-valuenow=\"0\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n role=\"progressbar\"\n ></div>\n </div>\n <div *ngIf=\"progress === -1\">\n <c8y-loading></c8y-loading>\n </div>\n <p\n class=\"m-b-8\"\n *ngIf=\"!hasDropAreaSmallClass\"\n >\n <strong>\n {{ loadingMessage | translate }}\n </strong>\n </p>\n </div>\n <div\n class=\"file-placeholder p-4\"\n *ngIf=\"!loading\"\n >\n <div class=\"d-flex p-4 a-i-center\">\n <i\n class=\"icon-20 m-r-8\"\n c8yIcon=\"file-o\"\n ></i>\n <span\n class=\"text-truncate\"\n title=\"{{ filesNameString }}\"\n >\n {{ filesNameString }}\n </span>\n <button\n class=\"btn btn-dot btn-dot--danger showOnHover m-l-auto\"\n title=\"{{ 'Remove' | translate }}\"\n [attr.aria-label]=\"'Remove' | translate\"\n type=\"button\"\n >\n <i\n c8yIcon=\"minus-circle\"\n (click)=\"onDelete()\"\n ></i>\n </button>\n </div>\n </div>\n</div>\n<label\n class=\"sr-only\"\n for=\"file\"\n>\n {{ 'Select file' | translate }}\n</label>\n<input\n class=\"hidden\"\n id=\"file\"\n type=\"file\"\n #picker\n *ngIf=\"clickToOpen\"\n (change)=\"onPick($event)\"\n (click)=\"picker.focus()\"\n (blur)=\"onTouched()\"\n [accept]=\"acceptedExts\"\n [multiple]=\"maxAllowedFiles > 1\"\n [disabled]=\"formControl?.disabled || disabled\"\n/>\n<div\n #area\n [hidden]=\"isOver || loading\"\n (dragover)=\"toggle()\"\n>\n <ng-content></ng-content>\n</div>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type:
|
|
23815
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: DropAreaComponent, isStandalone: true, selector: "c8y-drop-area", inputs: { formControl: "formControl", title: "title", message: "message", icon: "icon", loadingMessage: "loadingMessage", forceHideList: "forceHideList", alwaysShow: "alwaysShow", clickToOpen: "clickToOpen", loading: "loading", progress: "progress", maxAllowedFiles: "maxAllowedFiles", files: "files", maxFileSizeInMegaBytes: "maxFileSizeInMegaBytes", accept: "accept" }, outputs: { dropped: "dropped" }, host: { listeners: { "keyup": "onkeyup($event)" } }, providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: DropAreaComponent, multi: true }], viewQueries: [{ propertyName: "area", first: true, predicate: ["area"], descendants: true, static: true }, { propertyName: "zone", first: true, predicate: ["zone"], descendants: true }, { propertyName: "picker", first: true, predicate: ["picker"], descendants: true }], ngImport: i0, template: "<div\n class=\"drop-zone\"\n [style.pointerEvents]=\"loading ? 'none' : 'auto'\"\n [style.display]=\"isOver || alwaysShow || loading ? 'block' : 'none'\"\n tabindex=\"0\"\n *ngIf=\"!shouldShowFilesList()\"\n [ngClass]=\"{ 'has-errors': errors, disabled: formControl?.disabled || disabled }\"\n #zone\n (dragleave)=\"stopDragging()\"\n (drop)=\"onDrop($event)\"\n (dragover)=\"onOver()\"\n (click)=\"showPicker($event)\"\n>\n <div\n class=\"file-placeholder\"\n data-cy=\"c8y-file-placeholder--drop-zone\"\n [ngClass]=\"{ 'drag-over': isOver }\"\n >\n <div\n class=\"d-flex d-col p-4 flex-center\"\n *ngIf=\"loading\"\n >\n <div\n class=\"progress progress-striped active m-0\"\n style=\"min-width: 50%\"\n *ngIf=\"progress !== -1\"\n >\n <div\n class=\"progress-bar\"\n [style.width]=\"progress + '%'\"\n [attr.aria-label]=\"progress + '%'\"\n aria-valuenow=\"0\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n role=\"progressbar\"\n ></div>\n </div>\n <div\n class=\"spinner-snake\"\n *ngIf=\"progress === -1\"\n ></div>\n <p\n class=\"m-t-auto m-b-auto m-r-8\"\n *ngIf=\"!hasDropAreaSmallClass\"\n >\n {{ loadingMessage | translate }}\n </p>\n </div>\n <div\n class=\"hint-placeholder pointer\"\n *ngIf=\"!loading\"\n data-cy=\"drop-zone--hint-placeholder\"\n >\n <i class=\"dlt-c8y-icon-{{ icon }}\"></i>\n <p\n class=\"text-truncate\"\n title=\"{{ message | translate }}\"\n *ngIf=\"!errors\"\n >\n <b>{{ message | translate }}</b>\n <br />\n <span\n *ngIf=\"alwaysShow && clickToOpen\"\n translate\n ></span>\n </p>\n <div\n class=\"has-errors\"\n *ngIf=\"errors\"\n >\n <p class=\"form-control-feedback-message\">\n {{ errorMessage | translate }}\n </p>\n </div>\n </div>\n </div>\n</div>\n\n<div\n class=\"drop-zone\"\n [style.display]=\"isOver || alwaysShow || loading ? 'block' : 'none'\"\n tabindex=\"0\"\n *ngIf=\"shouldShowFilesList()\"\n>\n <div\n class=\"p-absolute p-4 fit-w fit-h d-flex d-col j-c-center a-i-center\"\n *ngIf=\"loading\"\n >\n <div\n class=\"progress progress-striped active m-0\"\n style=\"min-width: 80%\"\n *ngIf=\"progress !== -1\"\n >\n <div\n class=\"progress-bar\"\n [style.width]=\"progress + '%'\"\n [attr.aria-label]=\"progress + '%'\"\n aria-valuenow=\"0\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n role=\"progressbar\"\n ></div>\n </div>\n <div *ngIf=\"progress === -1\">\n <c8y-loading></c8y-loading>\n </div>\n <p\n class=\"m-b-8\"\n *ngIf=\"!hasDropAreaSmallClass\"\n >\n <strong>\n {{ loadingMessage | translate }}\n </strong>\n </p>\n </div>\n <div\n class=\"file-placeholder p-4\"\n *ngIf=\"!loading\"\n >\n <div class=\"d-flex p-4 a-i-center\">\n <i\n class=\"icon-20 m-r-8\"\n c8yIcon=\"file-o\"\n ></i>\n <span\n class=\"text-truncate\"\n title=\"{{ filesNameString }}\"\n >\n {{ filesNameString }}\n </span>\n <button\n class=\"btn btn-dot btn-dot--danger showOnHover m-l-auto\"\n title=\"{{ 'Remove' | translate }}\"\n [attr.aria-label]=\"'Remove' | translate\"\n type=\"button\"\n >\n <i\n c8yIcon=\"minus-circle\"\n (click)=\"onDelete()\"\n ></i>\n </button>\n </div>\n </div>\n</div>\n<label\n class=\"sr-only\"\n for=\"file\"\n>\n {{ 'Select file' | translate }}\n</label>\n<input\n class=\"hidden\"\n id=\"file\"\n type=\"file\"\n #picker\n *ngIf=\"clickToOpen\"\n (change)=\"onPick($event)\"\n (click)=\"picker.focus()\"\n (blur)=\"onTouched()\"\n [accept]=\"acceptedExts\"\n [multiple]=\"maxAllowedFiles > 1\"\n [disabled]=\"formControl?.disabled || disabled\"\n/>\n<div\n #area\n [hidden]=\"isOver || loading\"\n (dragover)=\"toggle()\"\n>\n <ng-content></ng-content>\n</div>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i2$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: LoadingComponent, selector: "c8y-loading", inputs: ["layout", "progress", "message"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] }); }
|
|
23616
23816
|
}
|
|
23617
23817
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: DropAreaComponent, decorators: [{
|
|
23618
23818
|
type: Component,
|
|
@@ -24529,7 +24729,7 @@ class DatePickerComponent {
|
|
|
24529
24729
|
this.dateTo = null;
|
|
24530
24730
|
}
|
|
24531
24731
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: DatePickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24532
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: DatePickerComponent, isStandalone: true, selector: "c8y-date-picker", inputs: { placeholder: "placeholder", dateInputFormat: "dateInputFormat" }, outputs: { onDateSelected: "onDateSelected" }, ngImport: i0, template: "<div\n dropdown\n class=\"c8y-child-assets-selector dropdown\"\n #datefilter=\"bs-dropdown\"\n [insideClick]=\"true\"\n placement=\"bottom left\"\n [cdkTrapFocus]=\"datefilter.isOpen\"\n >\n <button\n id=\"date-range\"\n dropdownToggle\n title=\"{{ 'Date filter' | translate }}\"\n type=\"button\"\n class=\"btn dropdown-toggle d-flex a-i-center c8y-dropdown\"\n >\n <i c8yIcon=\"calendar-o\" class=\"m-r-4 text-primary\"></i>\n <span class=\"text-truncate\">\n <span *ngIf=\"dateFrom\">\n <span class=\"text-label-small\">{{ 'From`date`' | translate }}</span>\n {{ dateFrom |
|
|
24732
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: DatePickerComponent, isStandalone: true, selector: "c8y-date-picker", inputs: { placeholder: "placeholder", dateInputFormat: "dateInputFormat" }, outputs: { onDateSelected: "onDateSelected" }, ngImport: i0, template: "<div\n dropdown\n class=\"c8y-child-assets-selector dropdown\"\n #datefilter=\"bs-dropdown\"\n [insideClick]=\"true\"\n placement=\"bottom left\"\n [cdkTrapFocus]=\"datefilter.isOpen\"\n >\n <button\n id=\"date-range\"\n dropdownToggle\n title=\"{{ 'Date filter' | translate }}\"\n type=\"button\"\n class=\"btn dropdown-toggle d-flex a-i-center c8y-dropdown\"\n >\n <i c8yIcon=\"calendar-o\" class=\"m-r-4 text-primary\"></i>\n <span class=\"text-truncate\">\n <span *ngIf=\"dateFrom\">\n <span class=\"text-label-small\">{{ 'From`date`' | translate }}</span>\n {{ dateFrom | c8yDate }}\n </span>\n <span *ngIf=\"dateTo\">\n <span class=\"text-label-small\">{{ 'To`date`' | translate }}</span>\n {{ dateTo | c8yDate }}\n </span>\n <em *ngIf=\"!dateFrom && !dateTo\" class=\"text-muted\">\n {{ placeholder }}\n </em>\n </span>\n </button>\n\n <form [formGroup]=\"fgDatePicker\"\n id=\"dropdown-date-range\"\n *dropdownMenu\n class=\"dropdown-menu\">\n <div class=\"dropdown-form p-b-0\">\n <c8y-form-group class=\"form-group-sm\">\n <label for=\"dateFrom\" class=\"text-medium m-b-4\" translate>Date from</label>\n <div class=\"form-group datepicker d-block m-b-0\">\n <input\n id=\"dateFrom\"\n formControlName=\"dateFrom\"\n class=\"form-control fit-w text-left\"\n placeholder=\"{{ 'Date from' | translate }}\"\n bsDatepicker\n [maxDate]=\"dateTo\"\n (bsValueChange)=\"dateFrom = $event\"\n [bsConfig]=\"{ customTodayClass: 'today', returnFocusToInput: true, dateInputFormat: dateInputFormat }\"\n />\n </div>\n </c8y-form-group>\n <c8y-form-group class=\"form-group form-group-sm \">\n <label for=\"dateTo\" translate>Date to</label>\n <div class=\"form-group datepicker m-l-0 d-block m-b-0 \">\n <input\n name=\"dateTo\"\n id=\"dateTo\"\n formControlName=\"dateTo\"\n class=\"form-control fit-w text-left\"\n placeholder=\"{{ 'Date to' | translate }}\"\n bsDatepicker\n [minDate]=\"dateFrom\"\n (bsValueChange)=\"dateTo = $event\"\n [bsConfig]=\"{ customTodayClass: 'today', returnFocusToInput: true, dateInputFormat: dateInputFormat }\"\n />\n </div>\n </c8y-form-group>\n </div>\n <div class=\"p-16 d-flex separator-top gap-8\">\n <button\n title=\"{{ 'Clear selection' | translate }}\"\n type=\"button\"\n class=\"btn btn-default btn-sm flex-grow\"\n (click)=\"clearFilter(); datefilter.isOpen = !datefilter.isOpen\"\n >\n {{ 'Clear`selection`' | translate }}\n </button>\n <button\n [disabled]=\"!fgDatePicker.get('dateFrom').value && !fgDatePicker.get('dateTo').value\"\n title=\"{{ 'Apply selection' | translate }}\"\n type=\"submit\"\n class=\"btn btn-primary btn-sm flex-grow\"\n (click)=\"filter(); datefilter.isOpen = !datefilter.isOpen\"\n >\n {{ 'Apply`selection`' | translate }}\n </button>\n </div>\n </form>\n</div>\n", dependencies: [{ kind: "ngmodule", type: BsDropdownModule }, { kind: "directive", type: i1$3.BsDropdownMenuDirective, selector: "[bsDropdownMenu],[dropdownMenu]", exportAs: ["bs-dropdown-menu"] }, { kind: "directive", type: i1$3.BsDropdownToggleDirective, selector: "[bsDropdownToggle],[dropdownToggle]", exportAs: ["bs-dropdown-toggle"] }, { kind: "directive", type: i1$3.BsDropdownDirective, selector: "[bsDropdown], [dropdown]", inputs: ["placement", "triggers", "container", "dropup", "autoClose", "isAnimated", "insideClick", "isDisabled", "isOpen"], outputs: ["isOpenChange", "onShown", "onHidden"], exportAs: ["bs-dropdown"] }, { kind: "directive", type: CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule$1 }, { kind: "directive", type: i1$8.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$8.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$8.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$8.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$8.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "ngmodule", type: BsDatepickerModule }, { kind: "directive", type: i2.BsDatepickerDirective, selector: "[bsDatepicker]", inputs: ["placement", "triggers", "outsideClick", "container", "outsideEsc", "isDisabled", "minDate", "maxDate", "ignoreMinMaxErrors", "minMode", "daysDisabled", "datesDisabled", "datesEnabled", "dateCustomClasses", "dateTooltipTexts", "isOpen", "bsValue", "bsConfig"], outputs: ["onShown", "onHidden", "bsValueChange"], exportAs: ["bsDatepicker"] }, { kind: "directive", type: i2.BsDatepickerInputDirective, selector: "input[bsDatepicker]" }, { kind: "pipe", type: DatePipe, name: "c8yDate" }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] }); }
|
|
24533
24733
|
}
|
|
24534
24734
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: DatePickerComponent, decorators: [{
|
|
24535
24735
|
type: Component,
|
|
@@ -24544,9 +24744,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
24544
24744
|
C8yTranslateDirective,
|
|
24545
24745
|
RequiredInputPlaceholderDirective,
|
|
24546
24746
|
BsDatepickerModule,
|
|
24547
|
-
DatePipe
|
|
24747
|
+
DatePipe,
|
|
24548
24748
|
C8yTranslatePipe
|
|
24549
|
-
], template: "<div\n dropdown\n class=\"c8y-child-assets-selector dropdown\"\n #datefilter=\"bs-dropdown\"\n [insideClick]=\"true\"\n placement=\"bottom left\"\n [cdkTrapFocus]=\"datefilter.isOpen\"\n >\n <button\n id=\"date-range\"\n dropdownToggle\n title=\"{{ 'Date filter' | translate }}\"\n type=\"button\"\n class=\"btn dropdown-toggle d-flex a-i-center c8y-dropdown\"\n >\n <i c8yIcon=\"calendar-o\" class=\"m-r-4 text-primary\"></i>\n <span class=\"text-truncate\">\n <span *ngIf=\"dateFrom\">\n <span class=\"text-label-small\">{{ 'From`date`' | translate }}</span>\n {{ dateFrom |
|
|
24749
|
+
], template: "<div\n dropdown\n class=\"c8y-child-assets-selector dropdown\"\n #datefilter=\"bs-dropdown\"\n [insideClick]=\"true\"\n placement=\"bottom left\"\n [cdkTrapFocus]=\"datefilter.isOpen\"\n >\n <button\n id=\"date-range\"\n dropdownToggle\n title=\"{{ 'Date filter' | translate }}\"\n type=\"button\"\n class=\"btn dropdown-toggle d-flex a-i-center c8y-dropdown\"\n >\n <i c8yIcon=\"calendar-o\" class=\"m-r-4 text-primary\"></i>\n <span class=\"text-truncate\">\n <span *ngIf=\"dateFrom\">\n <span class=\"text-label-small\">{{ 'From`date`' | translate }}</span>\n {{ dateFrom | c8yDate }}\n </span>\n <span *ngIf=\"dateTo\">\n <span class=\"text-label-small\">{{ 'To`date`' | translate }}</span>\n {{ dateTo | c8yDate }}\n </span>\n <em *ngIf=\"!dateFrom && !dateTo\" class=\"text-muted\">\n {{ placeholder }}\n </em>\n </span>\n </button>\n\n <form [formGroup]=\"fgDatePicker\"\n id=\"dropdown-date-range\"\n *dropdownMenu\n class=\"dropdown-menu\">\n <div class=\"dropdown-form p-b-0\">\n <c8y-form-group class=\"form-group-sm\">\n <label for=\"dateFrom\" class=\"text-medium m-b-4\" translate>Date from</label>\n <div class=\"form-group datepicker d-block m-b-0\">\n <input\n id=\"dateFrom\"\n formControlName=\"dateFrom\"\n class=\"form-control fit-w text-left\"\n placeholder=\"{{ 'Date from' | translate }}\"\n bsDatepicker\n [maxDate]=\"dateTo\"\n (bsValueChange)=\"dateFrom = $event\"\n [bsConfig]=\"{ customTodayClass: 'today', returnFocusToInput: true, dateInputFormat: dateInputFormat }\"\n />\n </div>\n </c8y-form-group>\n <c8y-form-group class=\"form-group form-group-sm \">\n <label for=\"dateTo\" translate>Date to</label>\n <div class=\"form-group datepicker m-l-0 d-block m-b-0 \">\n <input\n name=\"dateTo\"\n id=\"dateTo\"\n formControlName=\"dateTo\"\n class=\"form-control fit-w text-left\"\n placeholder=\"{{ 'Date to' | translate }}\"\n bsDatepicker\n [minDate]=\"dateFrom\"\n (bsValueChange)=\"dateTo = $event\"\n [bsConfig]=\"{ customTodayClass: 'today', returnFocusToInput: true, dateInputFormat: dateInputFormat }\"\n />\n </div>\n </c8y-form-group>\n </div>\n <div class=\"p-16 d-flex separator-top gap-8\">\n <button\n title=\"{{ 'Clear selection' | translate }}\"\n type=\"button\"\n class=\"btn btn-default btn-sm flex-grow\"\n (click)=\"clearFilter(); datefilter.isOpen = !datefilter.isOpen\"\n >\n {{ 'Clear`selection`' | translate }}\n </button>\n <button\n [disabled]=\"!fgDatePicker.get('dateFrom').value && !fgDatePicker.get('dateTo').value\"\n title=\"{{ 'Apply selection' | translate }}\"\n type=\"submit\"\n class=\"btn btn-primary btn-sm flex-grow\"\n (click)=\"filter(); datefilter.isOpen = !datefilter.isOpen\"\n >\n {{ 'Apply`selection`' | translate }}\n </button>\n </div>\n </form>\n</div>\n" }]
|
|
24550
24750
|
}], propDecorators: { onDateSelected: [{
|
|
24551
24751
|
type: Output
|
|
24552
24752
|
}], placeholder: [{
|
|
@@ -24595,6 +24795,27 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
24595
24795
|
}]
|
|
24596
24796
|
}] });
|
|
24597
24797
|
|
|
24798
|
+
class ChangeCurrentUserPasswordService {
|
|
24799
|
+
constructor(modalService) {
|
|
24800
|
+
this.modalService = modalService;
|
|
24801
|
+
}
|
|
24802
|
+
async changeCurrentUserPassword() {
|
|
24803
|
+
this.modalService.show(UserEditModalComponent, {
|
|
24804
|
+
initialState: { passwordChange: true },
|
|
24805
|
+
ariaDescribedby: 'modal-body',
|
|
24806
|
+
ariaLabelledBy: 'modal-title'
|
|
24807
|
+
});
|
|
24808
|
+
}
|
|
24809
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ChangeCurrentUserPasswordService, deps: [{ token: i1$7.BsModalService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
24810
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ChangeCurrentUserPasswordService, providedIn: 'root' }); }
|
|
24811
|
+
}
|
|
24812
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ChangeCurrentUserPasswordService, decorators: [{
|
|
24813
|
+
type: Injectable,
|
|
24814
|
+
args: [{
|
|
24815
|
+
providedIn: 'root'
|
|
24816
|
+
}]
|
|
24817
|
+
}], ctorParameters: () => [{ type: i1$7.BsModalService }] });
|
|
24818
|
+
|
|
24598
24819
|
/**
|
|
24599
24820
|
* The context routes that are supported by the application.
|
|
24600
24821
|
*/
|
|
@@ -26476,7 +26697,7 @@ class ArrayTypeComponent extends FieldArrayType {
|
|
|
26476
26697
|
}
|
|
26477
26698
|
}
|
|
26478
26699
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ArrayTypeComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
26479
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: ArrayTypeComponent, isStandalone: true, selector: "c8y-array-type", usesInheritance: true, ngImport: i0, template: "<div role=\"group\" [attr.aria-labelledby]=\"id + '-fieldset'\">\n <div id=\"{{ id + '-fieldset' }}\" class=\"legend form-block\" *ngIf=\"to.label || to.description\">\n {{ to.label | humanize }}\n <button\n class=\"btn-help btn-help--sm m-t-auto m-b-auto\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n [popover]=\"to.description\"\n placement=\"right\"\n triggers=\"focus\"\n *ngIf=\"to.description\"\n ></button>\n </div>\n\n <div\n class=\"form-control-feedback-message has-error\"\n role=\"alert\"\n *ngIf=\"showError && formControl.errors\"\n >\n <formly-validation-message [field]=\"field\"></formly-validation-message>\n </div>\n\n <div *ngFor=\"let ifield of field.fieldGroup; let i = index\" class=\"input-group-array\">\n <formly-field [field]=\"ifield | c8yArrayTypeInjectTemplate: customTemplate\"></formly-field>\n <ng-container\n *ngIf=\"ifield.type === 'formly-group' || ifield.type === 'array'\"\n [ngTemplateOutlet]=\"customTemplate\"\n ></ng-container>\n <ng-template #customTemplate>\n <div class=\"input-group-btn delete-row\">\n <button\n class=\"btn btn-dot btn-dot--danger flex-item-right\"\n type=\"button\"\n [attr.aria-label]=\"'Delete' | translate\"\n tooltip=\"{{ 'Delete' | translate }}\"\n [delay]=\"500\"\n placement=\"right\"\n [disabled]=\"to.disabled || (field.fieldGroup.length === 1 && to.required)\"\n (click)=\"remove(i)\"\n >\n <i c8yIcon=\"minus-circle\"></i>\n </button>\n </div>\n </ng-template>\n </div>\n\n <div class=\"p-t-8\">\n <button\n class=\"btn btn-sm btn-default\"\n type=\"button\"\n title=\"{{\n (field.templateOptions?.addText | translate) || 'Add \\{\\{ label \\}\\}'\n | translate: fieldArrayProps\n }}\"\n [disabled]=\"to.disabled\"\n (click)=\"add()\"\n [attr.data-cy]=\"field.templateOptions?.addTextDataCy || 'add-array-item'\"\n >\n <i c8yIcon=\"plus-circle\" class=\"m-r-4\"></i>\n <span\n *ngIf=\"!field.templateOptions?.addText\"\n ngNonBindable\n translate\n [translateParams]=\"fieldArrayProps\"\n >\n Add {{ label }}\n </span>\n <span *ngIf=\"field.templateOptions?.addText\">\n {{ field.templateOptions?.addText | translate }}\n </span>\n </button>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: PopoverModule }, { kind: "directive", type: i1$9.PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "ngmodule", type: FormlyModule }, { kind: "component", type: i2$
|
|
26700
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: ArrayTypeComponent, isStandalone: true, selector: "c8y-array-type", usesInheritance: true, ngImport: i0, template: "<div role=\"group\" [attr.aria-labelledby]=\"id + '-fieldset'\">\n <div id=\"{{ id + '-fieldset' }}\" class=\"legend form-block\" *ngIf=\"to.label || to.description\">\n {{ to.label | humanize }}\n <button\n class=\"btn-help btn-help--sm m-t-auto m-b-auto\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n [popover]=\"to.description\"\n placement=\"right\"\n triggers=\"focus\"\n *ngIf=\"to.description\"\n ></button>\n </div>\n\n <div\n class=\"form-control-feedback-message has-error\"\n role=\"alert\"\n *ngIf=\"showError && formControl.errors\"\n >\n <formly-validation-message [field]=\"field\"></formly-validation-message>\n </div>\n\n <div *ngFor=\"let ifield of field.fieldGroup; let i = index\" class=\"input-group-array\">\n <formly-field [field]=\"ifield | c8yArrayTypeInjectTemplate: customTemplate\"></formly-field>\n <ng-container\n *ngIf=\"ifield.type === 'formly-group' || ifield.type === 'array'\"\n [ngTemplateOutlet]=\"customTemplate\"\n ></ng-container>\n <ng-template #customTemplate>\n <div class=\"input-group-btn delete-row\">\n <button\n class=\"btn btn-dot btn-dot--danger flex-item-right\"\n type=\"button\"\n [attr.aria-label]=\"'Delete' | translate\"\n tooltip=\"{{ 'Delete' | translate }}\"\n [delay]=\"500\"\n placement=\"right\"\n [disabled]=\"to.disabled || (field.fieldGroup.length === 1 && to.required)\"\n (click)=\"remove(i)\"\n >\n <i c8yIcon=\"minus-circle\"></i>\n </button>\n </div>\n </ng-template>\n </div>\n\n <div class=\"p-t-8\">\n <button\n class=\"btn btn-sm btn-default\"\n type=\"button\"\n title=\"{{\n (field.templateOptions?.addText | translate) || 'Add \\{\\{ label \\}\\}'\n | translate: fieldArrayProps\n }}\"\n [disabled]=\"to.disabled\"\n (click)=\"add()\"\n [attr.data-cy]=\"field.templateOptions?.addTextDataCy || 'add-array-item'\"\n >\n <i c8yIcon=\"plus-circle\" class=\"m-r-4\"></i>\n <span\n *ngIf=\"!field.templateOptions?.addText\"\n ngNonBindable\n translate\n [translateParams]=\"fieldArrayProps\"\n >\n Add {{ label }}\n </span>\n <span *ngIf=\"field.templateOptions?.addText\">\n {{ field.templateOptions?.addText | translate }}\n </span>\n </button>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: PopoverModule }, { kind: "directive", type: i1$9.PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "ngmodule", type: FormlyModule }, { kind: "component", type: i2$4.FormlyField, selector: "formly-field", inputs: ["field"] }, { kind: "component", type: i2$4.ɵFormlyValidationMessage, selector: "formly-validation-message", inputs: ["field"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i1$5.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: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: HumanizePipe, name: "humanize" }, { kind: "pipe", type: C8yArrayTypeInjectTemplatePipe, name: "c8yArrayTypeInjectTemplate" }] }); }
|
|
26480
26701
|
}
|
|
26481
26702
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ArrayTypeComponent, decorators: [{
|
|
26482
26703
|
type: Component,
|
|
@@ -26528,7 +26749,7 @@ class FieldCheckbox extends FieldType {
|
|
|
26528
26749
|
};
|
|
26529
26750
|
}
|
|
26530
26751
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: FieldCheckbox, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
26531
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: FieldCheckbox, isStandalone: true, selector: "c8y-field-checkbox", usesInheritance: true, ngImport: i0, template: "<div class=\"d-flex\">\n <label\n [class.c8y-checkbox]=\"!to.switchMode\"\n [class.c8y-switch]=\"to.switchMode\"\n [class.has-error]=\"showError\"\n >\n <input\n [class.is-invalid]=\"showError\"\n [class.form-check-input]=\"to.formCheck.indexOf('custom') === -1\"\n [class.position-static]=\"to.formCheck === 'nolabel'\"\n [class.custom-control-input]=\"to.formCheck.indexOf('custom') === 0\"\n type=\"checkbox\"\n [indeterminate]=\"to.indeterminate && formControl.value == null\"\n [formControl]=\"formControl\"\n [formlyAttributes]=\"field\"\n [attr.data-cy]=\"'c8y-field-checkbox--' + (field.templateOptions?.optionDataCy || to.label)\"\n />\n <span></span>\n <i\n *ngIf=\"to.icon\"\n c8yIcon=\"{{to.icon}}\"\n class=\"icon-flex icon-20 m-r-4\"\n ></i>\n <span\n class=\"text-truncate\"\n title=\"{{ to.label | humanize }}\"\n >\n {{ to.label | humanize }}\n </span>\n <span *ngIf=\"to.required && to.hideRequiredMarker !== true\">\n <em\n class=\"m-l-4\"\n translate\n >\n (required)\n </em>\n </span>\n </label>\n <button\n class=\"btn-help btn-help--sm m-t-auto m-b-auto\"\n [attr.aria-label]=\"'Help' | translate\"\n [popover]=\"to.description\"\n placement=\"right\"\n triggers=\"focus\"\n type=\"button\"\n *ngIf=\"!!to.description\"\n ></button>\n</div>", dependencies: [{ kind: "ngmodule", type: FormsModule$1 }, { kind: "directive", type: i1$8.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1$8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$8.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FormlyModule }, { kind: "directive", type: i2$
|
|
26752
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: FieldCheckbox, isStandalone: true, selector: "c8y-field-checkbox", usesInheritance: true, ngImport: i0, template: "<div class=\"d-flex\">\n <label\n [class.c8y-checkbox]=\"!to.switchMode\"\n [class.c8y-switch]=\"to.switchMode\"\n [class.has-error]=\"showError\"\n >\n <input\n [class.is-invalid]=\"showError\"\n [class.form-check-input]=\"to.formCheck.indexOf('custom') === -1\"\n [class.position-static]=\"to.formCheck === 'nolabel'\"\n [class.custom-control-input]=\"to.formCheck.indexOf('custom') === 0\"\n type=\"checkbox\"\n [indeterminate]=\"to.indeterminate && formControl.value == null\"\n [formControl]=\"formControl\"\n [formlyAttributes]=\"field\"\n [attr.data-cy]=\"'c8y-field-checkbox--' + (field.templateOptions?.optionDataCy || to.label)\"\n />\n <span></span>\n <i\n *ngIf=\"to.icon\"\n c8yIcon=\"{{to.icon}}\"\n class=\"icon-flex icon-20 m-r-4\"\n ></i>\n <span\n class=\"text-truncate\"\n title=\"{{ to.label | humanize }}\"\n >\n {{ to.label | humanize }}\n </span>\n <span *ngIf=\"to.required && to.hideRequiredMarker !== true\">\n <em\n class=\"m-l-4\"\n translate\n >\n (required)\n </em>\n </span>\n </label>\n <button\n class=\"btn-help btn-help--sm m-t-auto m-b-auto\"\n [attr.aria-label]=\"'Help' | translate\"\n [popover]=\"to.description\"\n placement=\"right\"\n triggers=\"focus\"\n type=\"button\"\n *ngIf=\"!!to.description\"\n ></button>\n</div>", dependencies: [{ kind: "ngmodule", type: FormsModule$1 }, { kind: "directive", type: i1$8.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1$8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$8.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FormlyModule }, { kind: "directive", type: i2$4.ɵFormlyAttributes, selector: "[formlyAttributes]", inputs: ["formlyAttributes", "id"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "ngmodule", type: PopoverModule }, { kind: "directive", type: i1$9.PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: HumanizePipe, name: "humanize" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
26532
26753
|
}
|
|
26533
26754
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: FieldCheckbox, decorators: [{
|
|
26534
26755
|
type: Component,
|
|
@@ -26580,7 +26801,7 @@ class FieldDate extends FieldType {
|
|
|
26580
26801
|
this.dateInputFormat = this.dateFormatService.getDateFormat();
|
|
26581
26802
|
}
|
|
26582
26803
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: FieldDate, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
26583
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: FieldDate, isStandalone: true, selector: "c8y-field-date", usesInheritance: true, ngImport: i0, template: "<div class=\"form-group\" [attr.aria-labelledby]=\"id + '-fieldset'\">\n <label id=\"{{ id + '-fieldset' }}\" *ngIf=\"to.label || to.description\">\n {{ to.label | humanize }}\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n [popover]=\"to.description\"\n placement=\"right\"\n triggers=\"focus\"\n *ngIf=\"to.description\"\n ></button>\n </label>\n <div class=\"form-group datepicker\">\n <input\n [formControl]=\"formControl\"\n [formlyAttributes]=\"field\"\n class=\"form-control\"\n placeholder=\"Date\"\n [bsConfig]=\"{ customTodayClass: 'today', dateInputFormat: dateInputFormat }\"\n [placeholder]=\"'Select a date\u2026' | translate\"\n placement=\"top\"\n bsDatepicker\n [required]=\"to.required\"\n />\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: PopoverModule }, { kind: "directive", type: i1$9.PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "ngmodule", type: BsDatepickerModule }, { kind: "directive", type: i2.BsDatepickerDirective, selector: "[bsDatepicker]", inputs: ["placement", "triggers", "outsideClick", "container", "outsideEsc", "isDisabled", "minDate", "maxDate", "ignoreMinMaxErrors", "minMode", "daysDisabled", "datesDisabled", "datesEnabled", "dateCustomClasses", "dateTooltipTexts", "isOpen", "bsValue", "bsConfig"], outputs: ["onShown", "onHidden", "bsValueChange"], exportAs: ["bsDatepicker"] }, { kind: "directive", type: i2.BsDatepickerInputDirective, selector: "input[bsDatepicker]" }, { kind: "ngmodule", type: FormsModule$1 }, { kind: "directive", type: i1$8.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$8.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$8.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FormlyModule }, { kind: "directive", type: i2$
|
|
26804
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: FieldDate, isStandalone: true, selector: "c8y-field-date", usesInheritance: true, ngImport: i0, template: "<div class=\"form-group\" [attr.aria-labelledby]=\"id + '-fieldset'\">\n <label id=\"{{ id + '-fieldset' }}\" *ngIf=\"to.label || to.description\">\n {{ to.label | humanize }}\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n [popover]=\"to.description\"\n placement=\"right\"\n triggers=\"focus\"\n *ngIf=\"to.description\"\n ></button>\n </label>\n <div class=\"form-group datepicker\">\n <input\n [formControl]=\"formControl\"\n [formlyAttributes]=\"field\"\n class=\"form-control\"\n placeholder=\"Date\"\n [bsConfig]=\"{ customTodayClass: 'today', dateInputFormat: dateInputFormat }\"\n [placeholder]=\"'Select a date\u2026' | translate\"\n placement=\"top\"\n bsDatepicker\n [required]=\"to.required\"\n />\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: PopoverModule }, { kind: "directive", type: i1$9.PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "ngmodule", type: BsDatepickerModule }, { kind: "directive", type: i2.BsDatepickerDirective, selector: "[bsDatepicker]", inputs: ["placement", "triggers", "outsideClick", "container", "outsideEsc", "isDisabled", "minDate", "maxDate", "ignoreMinMaxErrors", "minMode", "daysDisabled", "datesDisabled", "datesEnabled", "dateCustomClasses", "dateTooltipTexts", "isOpen", "bsValue", "bsConfig"], outputs: ["onShown", "onHidden", "bsValueChange"], exportAs: ["bsDatepicker"] }, { kind: "directive", type: i2.BsDatepickerInputDirective, selector: "input[bsDatepicker]" }, { kind: "ngmodule", type: FormsModule$1 }, { kind: "directive", type: i1$8.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$8.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$8.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FormlyModule }, { kind: "directive", type: i2$4.ɵFormlyAttributes, selector: "[formlyAttributes]", inputs: ["formlyAttributes", "id"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: HumanizePipe, name: "humanize" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
26584
26805
|
}
|
|
26585
26806
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: FieldDate, decorators: [{
|
|
26586
26807
|
type: Component,
|
|
@@ -26673,7 +26894,7 @@ class WrapperFormField extends FieldWrapper {
|
|
|
26673
26894
|
this.smallFormGroup = this.props?.smallFormGroup || false;
|
|
26674
26895
|
}
|
|
26675
26896
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: WrapperFormField, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
26676
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: WrapperFormField, isStandalone: true, selector: "c8y-wrapper-form-field", usesInheritance: true, ngImport: i0, template: "<div\n class=\"form-group\"\n [class.has-error]=\"showError\"\n [class.form-group-sm]=\"smallFormGroup\"\n>\n <label\n class=\"text-pre-wrap\"\n *ngIf=\"to.label && to.hideLabel !== true\"\n [attr.for]=\"id\"\n >\n {{ to.humanizeLabel === false ? to.label : (to.label | humanize) }}\n <i\n class=\"text-info\"\n c8yIcon=\"info-circle\"\n title=\"{{ to.tooltip | translate }}\"\n *ngIf=\"to.tooltip\"\n ></i>\n <ng-template #description><div [innerHTML]=\"to.description | translate\"></div></ng-template>\n <button\n class=\"btn-help btn-help--sm m-t-auto m-b-auto\"\n [attr.aria-label]=\"'Help' | translate\"\n [popover]=\"description\"\n placement=\"right\"\n type=\"button\"\n [outsideClick]=\"true\"\n *ngIf=\"to.description && showDescriptionAsPopup\"\n ></button>\n </label>\n <div class=\"d-flex\">\n <div class=\"flex-grow\">\n <ng-template #fieldComponent></ng-template>\n </div>\n <ng-container *ngIf=\"to.customTemplateRef\">\n <ng-container *ngTemplateOutlet=\"to.customTemplateRef\"></ng-container>\n </ng-container>\n </div>\n\n <div\n class=\"c8y-messages\"\n *ngIf=\"showError\"\n >\n <formly-validation-message\n class=\"form-control-feedback-message\"\n [field]=\"field\"\n ></formly-validation-message>\n </div>\n\n <div\n class=\"help-block has-info text-muted\"\n *ngIf=\"!showError && to.description && !showDescriptionAsPopup\"\n [innerHTML]=\"to.description | translate\"\n ></div>\n</div>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "ngmodule", type: PopoverModule }, { kind: "directive", type: i1$9.PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: FormlyModule }, { kind: "component", type: i2$
|
|
26897
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: WrapperFormField, isStandalone: true, selector: "c8y-wrapper-form-field", usesInheritance: true, ngImport: i0, template: "<div\n class=\"form-group\"\n [class.has-error]=\"showError\"\n [class.form-group-sm]=\"smallFormGroup\"\n>\n <label\n class=\"text-pre-wrap\"\n *ngIf=\"to.label && to.hideLabel !== true\"\n [attr.for]=\"id\"\n >\n {{ to.humanizeLabel === false ? to.label : (to.label | humanize) }}\n <i\n class=\"text-info\"\n c8yIcon=\"info-circle\"\n title=\"{{ to.tooltip | translate }}\"\n *ngIf=\"to.tooltip\"\n ></i>\n <ng-template #description><div [innerHTML]=\"to.description | translate\"></div></ng-template>\n <button\n class=\"btn-help btn-help--sm m-t-auto m-b-auto\"\n [attr.aria-label]=\"'Help' | translate\"\n [popover]=\"description\"\n placement=\"right\"\n type=\"button\"\n [outsideClick]=\"true\"\n *ngIf=\"to.description && showDescriptionAsPopup\"\n ></button>\n </label>\n <div class=\"d-flex\">\n <div class=\"flex-grow\">\n <ng-template #fieldComponent></ng-template>\n </div>\n <ng-container *ngIf=\"to.customTemplateRef\">\n <ng-container *ngTemplateOutlet=\"to.customTemplateRef\"></ng-container>\n </ng-container>\n </div>\n\n <div\n class=\"c8y-messages\"\n *ngIf=\"showError\"\n >\n <formly-validation-message\n class=\"form-control-feedback-message\"\n [field]=\"field\"\n ></formly-validation-message>\n </div>\n\n <div\n class=\"help-block has-info text-muted\"\n *ngIf=\"!showError && to.description && !showDescriptionAsPopup\"\n [innerHTML]=\"to.description | translate\"\n ></div>\n</div>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "ngmodule", type: PopoverModule }, { kind: "directive", type: i1$9.PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: FormlyModule }, { kind: "component", type: i2$4.ɵFormlyValidationMessage, selector: "formly-validation-message", inputs: ["field"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: HumanizePipe, name: "humanize" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
26677
26898
|
}
|
|
26678
26899
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: WrapperFormField, decorators: [{
|
|
26679
26900
|
type: Component,
|
|
@@ -26722,7 +26943,7 @@ class FieldInput extends FieldType {
|
|
|
26722
26943
|
return this.to.type || 'text';
|
|
26723
26944
|
}
|
|
26724
26945
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: FieldInput, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
26725
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: FieldInput, isStandalone: true, selector: "c8y-field-input", usesInheritance: true, ngImport: i0, template: "<input\n *ngIf=\"type !== 'number'; else numberTmp\"\n [type]=\"type\"\n [formControl]=\"formControl\"\n class=\"form-control\"\n [formlyAttributes]=\"field\"\n [required]=\"to.required\"\n [attr.autocomplete]=\"to.autocomplete ? to.autocomplete : null\"\n [class.is-invalid]=\"showError\"\n/>\n<ng-template #numberTmp>\n <input\n type=\"number\"\n [formControl]=\"formControl\"\n class=\"form-control\"\n [formlyAttributes]=\"field\"\n [required]=\"to.required\"\n [attr.autocomplete]=\"to.autocomplete ? to.autocomplete : null\"\n [class.is-invalid]=\"showError\"\n />\n</ng-template>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule$1 }, { kind: "directive", type: i1$8.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$8.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1$8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$8.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$8.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FormlyModule }, { kind: "directive", type: i2$
|
|
26946
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: FieldInput, isStandalone: true, selector: "c8y-field-input", usesInheritance: true, ngImport: i0, template: "<input\n *ngIf=\"type !== 'number'; else numberTmp\"\n [type]=\"type\"\n [formControl]=\"formControl\"\n class=\"form-control\"\n [formlyAttributes]=\"field\"\n [required]=\"to.required\"\n [attr.autocomplete]=\"to.autocomplete ? to.autocomplete : null\"\n [class.is-invalid]=\"showError\"\n/>\n<ng-template #numberTmp>\n <input\n type=\"number\"\n [formControl]=\"formControl\"\n class=\"form-control\"\n [formlyAttributes]=\"field\"\n [required]=\"to.required\"\n [attr.autocomplete]=\"to.autocomplete ? to.autocomplete : null\"\n [class.is-invalid]=\"showError\"\n />\n</ng-template>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule$1 }, { kind: "directive", type: i1$8.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$8.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1$8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$8.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$8.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FormlyModule }, { kind: "directive", type: i2$4.ɵFormlyAttributes, selector: "[formlyAttributes]", inputs: ["formlyAttributes", "id"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
26726
26947
|
}
|
|
26727
26948
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: FieldInput, decorators: [{
|
|
26728
26949
|
type: Component,
|
|
@@ -26746,7 +26967,7 @@ const objectTypeConfig = () => importProvidersFrom(FormlyModule.forChild({
|
|
|
26746
26967
|
}));
|
|
26747
26968
|
class ObjectTypeComponent extends FieldType {
|
|
26748
26969
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ObjectTypeComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
26749
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: ObjectTypeComponent, isStandalone: true, selector: "c8y-object-type", usesInheritance: true, ngImport: i0, template: "<div role=\"group\" [attr.aria-labelledby]=\"id + '-fieldset'\">\n <p *ngIf=\"to.label\" class=\"text-medium\" id=\"{{ id + '-fieldset' }}\">\n {{ to.label | humanize }}\n </p>\n <p *ngIf=\"to.description\" class=\"m-b-8 small\">\n {{ to.description }}\n </p>\n <div\n class=\"form-control-feedback-message has-error\"\n role=\"alert\"\n *ngIf=\"showError && formControl.errors\"\n >\n <formly-validation-message [field]=\"field\"></formly-validation-message>\n </div>\n <formly-field *ngFor=\"let f of field.fieldGroup\" [field]=\"f\"></formly-field>\n</div>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormlyModule }, { kind: "component", type: i2$
|
|
26970
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: ObjectTypeComponent, isStandalone: true, selector: "c8y-object-type", usesInheritance: true, ngImport: i0, template: "<div role=\"group\" [attr.aria-labelledby]=\"id + '-fieldset'\">\n <p *ngIf=\"to.label\" class=\"text-medium\" id=\"{{ id + '-fieldset' }}\">\n {{ to.label | humanize }}\n </p>\n <p *ngIf=\"to.description\" class=\"m-b-8 small\">\n {{ to.description }}\n </p>\n <div\n class=\"form-control-feedback-message has-error\"\n role=\"alert\"\n *ngIf=\"showError && formControl.errors\"\n >\n <formly-validation-message [field]=\"field\"></formly-validation-message>\n </div>\n <formly-field *ngFor=\"let f of field.fieldGroup\" [field]=\"f\"></formly-field>\n</div>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormlyModule }, { kind: "component", type: i2$4.FormlyField, selector: "formly-field", inputs: ["field"] }, { kind: "component", type: i2$4.ɵFormlyValidationMessage, selector: "formly-validation-message", inputs: ["field"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: HumanizePipe, name: "humanize" }] }); }
|
|
26750
26971
|
}
|
|
26751
26972
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ObjectTypeComponent, decorators: [{
|
|
26752
26973
|
type: Component,
|
|
@@ -26773,7 +26994,7 @@ class FieldRadio extends FieldType {
|
|
|
26773
26994
|
};
|
|
26774
26995
|
}
|
|
26775
26996
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: FieldRadio, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
26776
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: FieldRadio, isStandalone: true, selector: "c8y-field-radio", usesInheritance: true, ngImport: i0, template: "<label\n *ngFor=\"let option of to.options | formlySelectOptions: field | async; let i = index\"\n [title]=\"option.label\"\n class=\"c8y-radio\"\n>\n <input\n type=\"radio\"\n [id]=\"id + '_' + i\"\n [name]=\"field.name || id\"\n [attr.value]=\"option.value\"\n [value]=\"option.value\"\n [formControl]=\"formControl\"\n [formlyAttributes]=\"field\"\n [attr.disabled]=\"option.disabled || formControl.disabled ? true : null\"\n />\n <span></span>\n <span>{{ field.props.humanizeLabel === false ? option.label : (option.label | humanize) }}</span>\n</label>\n", dependencies: [{ kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: FormsModule$1 }, { kind: "directive", type: i1$8.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$8.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { kind: "directive", type: i1$8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$8.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FormlyModule }, { kind: "directive", type: i2$
|
|
26997
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: FieldRadio, isStandalone: true, selector: "c8y-field-radio", usesInheritance: true, ngImport: i0, template: "<label\n *ngFor=\"let option of to.options | formlySelectOptions: field | async; let i = index\"\n [title]=\"option.label\"\n class=\"c8y-radio\"\n>\n <input\n type=\"radio\"\n [id]=\"id + '_' + i\"\n [name]=\"field.name || id\"\n [attr.value]=\"option.value\"\n [value]=\"option.value\"\n [formControl]=\"formControl\"\n [formlyAttributes]=\"field\"\n [attr.disabled]=\"option.disabled || formControl.disabled ? true : null\"\n />\n <span></span>\n <span>{{ field.props.humanizeLabel === false ? option.label : (option.label | humanize) }}</span>\n</label>\n", dependencies: [{ kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: FormsModule$1 }, { kind: "directive", type: i1$8.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$8.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { kind: "directive", type: i1$8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$8.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FormlyModule }, { kind: "directive", type: i2$4.ɵFormlyAttributes, selector: "[formlyAttributes]", inputs: ["formlyAttributes", "id"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: HumanizePipe, name: "humanize" }, { kind: "ngmodule", type: FormlySelectModule }, { kind: "pipe", type: i3.FormlySelectOptionsPipe, name: "formlySelectOptions" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
26777
26998
|
}
|
|
26778
26999
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: FieldRadio, decorators: [{
|
|
26779
27000
|
type: Component,
|
|
@@ -26816,7 +27037,7 @@ class SelectTypeComponent extends FieldType {
|
|
|
26816
27037
|
}
|
|
26817
27038
|
}
|
|
26818
27039
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: SelectTypeComponent, deps: [{ token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
26819
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: SelectTypeComponent, isStandalone: true, selector: "c8y-select-type", usesInheritance: true, ngImport: i0, template: "<div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n [class.is-invalid]=\"showError\"\n [formControl]=\"formControl\"\n [formlyAttributes]=\"field\"\n [required]=\"properties.required\"\n >\n <option\n [disabled]=\"properties.required || (!properties.acceptUndefined ?? true)\"\n [ngValue]=\"undefined\"\n selected\n >\n {{ placeholder$ | async | translate }}\n </option>\n <ng-container *ngFor=\"let opt of options$ | async\">\n <option\n [ngValue]=\"opt[valueProp]\"\n [disabled]=\"opt.disabled || false\"\n >\n {{ opt[labelProp] | translate }}\n </option>\n </ng-container>\n </select>\n</div>\n", dependencies: [{ kind: "ngmodule", type: FormsModule$1 }, { kind: "directive", type: i1$8.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1$8.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1$8.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1$8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$8.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$8.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FormlyModule }, { kind: "directive", type: i2$
|
|
27040
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: SelectTypeComponent, isStandalone: true, selector: "c8y-select-type", usesInheritance: true, ngImport: i0, template: "<div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n [class.is-invalid]=\"showError\"\n [formControl]=\"formControl\"\n [formlyAttributes]=\"field\"\n [required]=\"properties.required\"\n >\n <option\n [disabled]=\"properties.required || (!properties.acceptUndefined ?? true)\"\n [ngValue]=\"undefined\"\n selected\n >\n {{ placeholder$ | async | translate }}\n </option>\n <ng-container *ngFor=\"let opt of options$ | async\">\n <option\n [ngValue]=\"opt[valueProp]\"\n [disabled]=\"opt.disabled || false\"\n >\n {{ opt[labelProp] | translate }}\n </option>\n </ng-container>\n </select>\n</div>\n", dependencies: [{ kind: "ngmodule", type: FormsModule$1 }, { kind: "directive", type: i1$8.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1$8.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1$8.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1$8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$8.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$8.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FormlyModule }, { kind: "directive", type: i2$4.ɵFormlyAttributes, selector: "[formlyAttributes]", inputs: ["formlyAttributes", "id"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
26820
27041
|
}
|
|
26821
27042
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: SelectTypeComponent, decorators: [{
|
|
26822
27043
|
type: Component,
|
|
@@ -26862,7 +27083,7 @@ class FieldTextArea extends FieldType {
|
|
|
26862
27083
|
[formlyAttributes]="field"
|
|
26863
27084
|
[placeholder]="props.placeholder"
|
|
26864
27085
|
></textarea>
|
|
26865
|
-
`, isInline: true, dependencies: [{ kind: "ngmodule", type: FormsModule$1 }, { kind: "directive", type: i1$8.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$8.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$8.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FormlyModule }, { kind: "directive", type: i2$
|
|
27086
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: FormsModule$1 }, { kind: "directive", type: i1$8.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$8.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$8.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FormlyModule }, { kind: "directive", type: i2$4.ɵFormlyAttributes, selector: "[formlyAttributes]", inputs: ["formlyAttributes", "id"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
26866
27087
|
}
|
|
26867
27088
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: FieldTextArea, decorators: [{
|
|
26868
27089
|
type: Component,
|
|
@@ -26941,7 +27162,7 @@ class TypeaheadTypeComponent extends FieldType {
|
|
|
26941
27162
|
}));
|
|
26942
27163
|
}
|
|
26943
27164
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TypeaheadTypeComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
26944
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: TypeaheadTypeComponent, isStandalone: true, selector: "c8y-typeahead-type", usesInheritance: true, ngImport: i0, template: "<c8y-typeahead\n [required]=\"to?.required || false\"\n [placeholder]=\"placeholder$ | async\"\n [displayProperty]=\"to?.displayProperty\"\n [selected]=\"selected\"\n [allowFreeEntries]=\"to?.allowFreeEntries || false\"\n [container]=\"to?.container || ''\"\n [disabled]=\"to?.disabled\"\n (onSearch)=\"setPipe($event)\"\n [formControl]=\"formControl\"\n [class.is-invalid]=\"showError\"\n [formlyAttributes]=\"field\">\n <c8y-li *c8yFor=\"let opt of to?.c8yForOptions; loadMore: to?.loadMore || 'auto'; pipe: filterPipe; notFound: notFoundTemplate; loadingTemplate: loading;\"\n (click)=\"selectOption(opt); setPipe('')\"\n class=\"p-l-8 p-r-8 c8y-list__item--link\"\n [attr.role]=\"'menuitem'\">\n <c8y-highlight [text]=\"opt[labelProp]\" [pattern]=\"pattern\"></c8y-highlight>\n </c8y-li>\n <ng-template #notFoundTemplate>\n <c8y-li class=\"bg-level-2 p-8\" *ngIf=\"pattern.length > 0 && !match\">\n <p><strong translate>No match found.</strong></p>\n </c8y-li>\n </ng-template>\n <ng-template #loading>\n <c8y-li class=\"text-center p-t-8 p-relative\">\n <c8y-loading></c8y-loading>\n </c8y-li>\n </ng-template>\n</c8y-typeahead>\n", dependencies: [{ kind: "component", type: TypeaheadComponent, selector: "c8y-typeahead", inputs: ["required", "maxlength", "disabled", "allowFreeEntries", "placeholder", "displayProperty", "icon", "name", "autoClose", "hideNew", "container", "selected", "title", "highlightFirstItem"], outputs: ["onSearch", "onIconClick"] }, { kind: "ngmodule", type: FormsModule$1 }, { kind: "directive", type: i1$8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$8.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$8.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FormlyModule }, { kind: "directive", type: i2$
|
|
27165
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: TypeaheadTypeComponent, isStandalone: true, selector: "c8y-typeahead-type", usesInheritance: true, ngImport: i0, template: "<c8y-typeahead\n [required]=\"to?.required || false\"\n [placeholder]=\"placeholder$ | async\"\n [displayProperty]=\"to?.displayProperty\"\n [selected]=\"selected\"\n [allowFreeEntries]=\"to?.allowFreeEntries || false\"\n [container]=\"to?.container || ''\"\n [disabled]=\"to?.disabled\"\n (onSearch)=\"setPipe($event)\"\n [formControl]=\"formControl\"\n [class.is-invalid]=\"showError\"\n [formlyAttributes]=\"field\">\n <c8y-li *c8yFor=\"let opt of to?.c8yForOptions; loadMore: to?.loadMore || 'auto'; pipe: filterPipe; notFound: notFoundTemplate; loadingTemplate: loading;\"\n (click)=\"selectOption(opt); setPipe('')\"\n class=\"p-l-8 p-r-8 c8y-list__item--link\"\n [attr.role]=\"'menuitem'\">\n <c8y-highlight [text]=\"opt[labelProp]\" [pattern]=\"pattern\"></c8y-highlight>\n </c8y-li>\n <ng-template #notFoundTemplate>\n <c8y-li class=\"bg-level-2 p-8\" *ngIf=\"pattern.length > 0 && !match\">\n <p><strong translate>No match found.</strong></p>\n </c8y-li>\n </ng-template>\n <ng-template #loading>\n <c8y-li class=\"text-center p-t-8 p-relative\">\n <c8y-loading></c8y-loading>\n </c8y-li>\n </ng-template>\n</c8y-typeahead>\n", dependencies: [{ kind: "component", type: TypeaheadComponent, selector: "c8y-typeahead", inputs: ["required", "maxlength", "disabled", "allowFreeEntries", "placeholder", "displayProperty", "icon", "name", "autoClose", "hideNew", "container", "selected", "title", "highlightFirstItem"], outputs: ["onSearch", "onIconClick"] }, { kind: "ngmodule", type: FormsModule$1 }, { kind: "directive", type: i1$8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$8.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$8.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FormlyModule }, { kind: "directive", type: i2$4.ɵFormlyAttributes, selector: "[formlyAttributes]", inputs: ["formlyAttributes", "id"] }, { kind: "directive", type: ForOfDirective, selector: "[c8yFor]", inputs: ["c8yForOf", "c8yForLoadMore", "c8yForPipe", "c8yForNotFound", "c8yForMaxIterations", "c8yForLoadingTemplate", "c8yForLoadNextLabel", "c8yForLoadingLabel", "c8yForRealtime", "c8yForRealtimeOptions", "c8yForComparator", "c8yForEnableVirtualScroll", "c8yForVirtualScrollElementSize", "c8yForVirtualScrollStrategy", "c8yForVirtualScrollContainerHeight"], outputs: ["c8yForCount", "c8yForChange", "c8yForLoadMoreComponent"] }, { kind: "component", type: ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "highlighted", "emptyActions", "dense", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "component", type: HighlightComponent, selector: "c8y-highlight", inputs: ["pattern", "text", "elementClass", "shouldTrimPattern"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "component", type: LoadingComponent, selector: "c8y-loading", inputs: ["layout", "progress", "message"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
26945
27166
|
}
|
|
26946
27167
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TypeaheadTypeComponent, decorators: [{
|
|
26947
27168
|
type: Component,
|
|
@@ -30849,6 +31070,9 @@ class WidgetsDashboardComponent {
|
|
|
30849
31070
|
this.settings = { ...this.settings, ...settings };
|
|
30850
31071
|
this.isLoading$.next(!!this.settings.isLoading);
|
|
30851
31072
|
}
|
|
31073
|
+
get isDeviceTypeDashboard() {
|
|
31074
|
+
return !!this.contextDashboard?.deviceType;
|
|
31075
|
+
}
|
|
30852
31076
|
get nativeElement() {
|
|
30853
31077
|
return this.elementRef.nativeElement;
|
|
30854
31078
|
}
|
|
@@ -31044,6 +31268,10 @@ class WidgetsDashboardComponent {
|
|
|
31044
31268
|
if (!widgets) {
|
|
31045
31269
|
return widgets;
|
|
31046
31270
|
}
|
|
31271
|
+
if (this.isDeviceTypeDashboard) {
|
|
31272
|
+
const keysToOverride = ['device', '__target'];
|
|
31273
|
+
widgets.forEach(widget => (widget.config = this.replaceKeysWithContext(widget.config, keysToOverride)));
|
|
31274
|
+
}
|
|
31047
31275
|
const tuple = widgets.map(widget => ({
|
|
31048
31276
|
componentId: widget.componentId || widget.name,
|
|
31049
31277
|
config: widget.config
|
|
@@ -31059,6 +31287,36 @@ class WidgetsDashboardComponent {
|
|
|
31059
31287
|
});
|
|
31060
31288
|
return widgets;
|
|
31061
31289
|
}
|
|
31290
|
+
/**
|
|
31291
|
+
* Recursively traverses an object/array and replaces specified keys with 'this.context'
|
|
31292
|
+
* @param obj - The object or array to process
|
|
31293
|
+
* @param keys - Array of keys to replace
|
|
31294
|
+
* @returns The modified object with replaced values
|
|
31295
|
+
*/
|
|
31296
|
+
replaceKeysWithContext(obj, keys) {
|
|
31297
|
+
if (obj === null || obj === undefined) {
|
|
31298
|
+
return obj;
|
|
31299
|
+
}
|
|
31300
|
+
// Handle primitive types (string, number, boolean)
|
|
31301
|
+
if (typeof obj !== 'object') {
|
|
31302
|
+
return obj;
|
|
31303
|
+
}
|
|
31304
|
+
// Handle arrays as replaceKeysWithContext is used recursively and config properties may be arrays (e.g. datapoints)
|
|
31305
|
+
if (Array.isArray(obj)) {
|
|
31306
|
+
return obj.map(item => this.replaceKeysWithContext(item, keys));
|
|
31307
|
+
}
|
|
31308
|
+
// Handle objects
|
|
31309
|
+
const result = {};
|
|
31310
|
+
for (const [key, value] of Object.entries(obj)) {
|
|
31311
|
+
if (keys.includes(key)) {
|
|
31312
|
+
result[key] = this.context;
|
|
31313
|
+
}
|
|
31314
|
+
else {
|
|
31315
|
+
result[key] = this.replaceKeysWithContext(value, keys);
|
|
31316
|
+
}
|
|
31317
|
+
}
|
|
31318
|
+
return result;
|
|
31319
|
+
}
|
|
31062
31320
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: WidgetsDashboardComponent, deps: [{ token: DynamicComponentService }, { token: i1$1.TranslateService }, { token: i1$4.ActivatedRoute }, { token: ModalService }, { token: WidgetGlobalAutoRefreshService }, { token: i1$4.Router }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
31063
31321
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: WidgetsDashboardComponent, isStandalone: true, selector: "c8y-widgets-dashboard", inputs: { widgets: "widgets", context: "context", contextDashboard: "contextDashboard", _settings: ["settings", "_settings"], isCopyDisabled: "isCopyDisabled", breadcrumb: "breadcrumb", editModeButtons: "editModeButtons" }, outputs: { onAddWidget: "onAddWidget", onEditWidget: "onEditWidget", onDeleteWidget: "onDeleteWidget", onChangeDashboard: "onChangeDashboard", onResize: "onResize", onEditDashboard: "onEditDashboard", onCopyDashboard: "onCopyDashboard", onDeleteDashboard: "onDeleteDashboard", onChangeStart: "onChangeStart", onChangeEnd: "onChangeEnd", onSaveDashboard: "onSaveDashboard", onCancelDashboard: "onCancelDashboard", revertChange: "revertChange" }, host: { styleAttribute: "\n display: block;\n ", classAttribute: "dashboard c8y-grid-dashboard" }, providers: [WidgetsDashboardEventService], usesOnChanges: true, ngImport: i0, template: "<c8y-title *ngIf=\"!!settings.title\">\n {{ settings.title | translate }}\n</c8y-title>\n\n<c8y-breadcrumb *ngIf=\"!!breadcrumb\">\n <c8y-breadcrumb-item\n [icon]=\"breadcrumb.icon\"\n [label]=\"breadcrumb.label\"\n [path]=\"breadcrumb.path\"\n ></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-action-bar-item\n [placement]=\"'left'\"\n [priority]=\"ACTION_BAR_EDIT_WIDGETS_PRIORITY\"\n *ngIf=\"!(editMode$ | async)\"\n>\n <button\n class=\"btn btn-link animated fadeIn hidden-xs\"\n title=\"{{ 'Edit widgets' | translate }}\"\n type=\"button\"\n [disabled]=\"settings.isDisabled\"\n (click)=\"enableEditMode()\"\n data-cy=\"c8y-widget-dashboard--edit-widgets\"\n >\n <i c8yIcon=\"send-backward\"></i>\n <span class=\"m-l-4\">{{ 'Edit widgets' | translate }}</span>\n </button>\n <button\n class=\"btn btn-link visible-xs m-l-0\"\n tooltip=\"{{ 'Not available on mobile phone' | translate }}\"\n type=\"button\"\n [disabled]=\"true\"\n >\n <i c8yIcon=\"send-backward\"></i>\n <span class=\"m-l-4\">{{ 'Edit widgets' | translate }}</span>\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item\n [placement]=\"'left'\"\n *ngIf=\"editMode$ | async\"\n>\n <button\n class=\"btn btn-link animated fadeIn\"\n title=\"{{ 'Add widget' | translate }}\"\n type=\"button\"\n (click)=\"onAddWidget.emit()\"\n data-cy=\"widget-dashboard--Add-widget\"\n >\n <i c8yIcon=\"plus-circle\"></i>\n {{ 'Add widget' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item\n [placement]=\"'left'\"\n itemClass=\"d-flex a-i-center gap-8\"\n *ngIf=\"editMode$ | async\"\n>\n <div class=\"input-group input-group-sm animated fadeIn\">\n <div class=\"input-group-btn\">\n <button\n class=\"btn btn-default btn-sm btn-icon\"\n [attr.aria-label]=\"'Undo' | translate\"\n [tooltip]=\"\n editModeButtons.undoButtonDisabled\n ? ''\n : (undoMessage\n | translate: { changeToUndo: editModeButtons.changeToUndoName | translate })\n \"\n container=\"body\"\n (click)=\"revertChange.emit('undo')\"\n [disabled]=\"editModeButtons.undoButtonDisabled\"\n >\n <i [c8yIcon]=\"'undo'\"></i>\n </button>\n </div>\n <div class=\"input-group-btn\">\n <button\n class=\"btn btn-default btn-sm btn-icon\"\n [attr.aria-label]=\"'Redo' | translate\"\n [tooltip]=\"\n editModeButtons.redoButtonDisabled\n ? ''\n : (redoMessage\n | translate: { changeToRedo: editModeButtons.changeToRedoName | translate })\n \"\n container=\"body\"\n (click)=\"revertChange.emit('redo')\"\n [disabled]=\"editModeButtons.redoButtonDisabled\"\n >\n <i [c8yIcon]=\"'redo'\"></i>\n </button>\n </div>\n <span></span>\n </div>\n <div class=\"btn-group animated fadeIn\">\n <button\n class=\"btn btn-default btn-sm\"\n title=\"{{ 'Cancel' | translate }}\"\n type=\"button\"\n (click)=\"cancelDashboardSave()\"\n >\n {{ 'Cancel' | translate }}\n </button>\n <button\n class=\"btn btn-primary btn-sm m-l-8\"\n title=\"{{ 'Save' | translate }}\"\n type=\"button\"\n [disabled]=\"editModeButtons.undoButtonDisabled\"\n (click)=\"saveDashboard()\"\n data-cy=\"c8y-widgets-dashboard--save\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item\n [placement]=\"'right'\"\n *ngIf=\"onEditDashboard.observers.length\"\n>\n <button\n class=\"btn btn-link hidden-xs m-l-0\"\n title=\"{{ 'Dashboard settings' | translate }}\"\n type=\"button\"\n [disabled]=\"settings.isDisabled || (editMode$ | async)\"\n (click)=\"onEditDashboard.emit()\"\n data-cy=\"c8y-widgets-dashboard--edit-dashboard\"\n >\n <i c8yIcon=\"sorting-slider\"></i>\n <span class=\"visible-xs-inline hidden-sm visible-md-inline visible-lg-inline\">\n {{ 'Dashboard settings' | translate }}\n </span>\n </button>\n <button\n class=\"btn btn-link visible-xs m-l-0\"\n tooltip=\"{{ 'Not available on mobile phone' | translate }}\"\n type=\"button\"\n [disabled]=\"true\"\n >\n <i c8yIcon=\"sorting-slider\"></i>\n <span class=\"visible-xs-inline hidden-sm visible-md-inline visible-lg-inline\">\n {{ 'Dashboard settings' | translate }}\n </span>\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item\n [placement]=\"'right'\"\n *ngIf=\"settings.allowFullscreen\"\n [priority]=\"-5000\"\n itemClass=\"pull-right\"\n>\n <button\n class=\"btn btn-link\"\n [attr.aria-label]=\"'Full screen' | translate\"\n tooltip=\"{{ 'Full screen' | translate }}\"\n placement=\"left\"\n container=\"body\"\n type=\"button\"\n [delay]=\"500\"\n (click)=\"toggleFullscreen()\"\n data-cy=\"widgets-dashboard--Full-screen\"\n >\n <i [c8yIcon]=\"(inFullScreen$ | async) ? 'compress' : 'expand'\"></i>\n <span class=\"visible-xs-inline hidden-sm visible-md-inline visibile-lg-inline\">\n {{ 'Full screen' | translate }}\n </span>\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item\n [placement]=\"'more'\"\n [priority]=\"-2000\"\n *ngIf=\"settings.canCopy\"\n>\n <div\n [ngStyle]=\"{\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center'\n }\"\n >\n <button\n class=\"hidden-xs\"\n title=\"{{\n (isCopyDisabled === true || !isCopyDisabled?.state ? 'Disabled' : copyDashboardLabel)\n | translate\n }}\"\n type=\"button\"\n [ngClass]=\"{ 'btn btn-link': !settings.canDelete }\"\n data-cy=\"widgets-dashboard--copy-dashboard\"\n (click)=\"onCopyDashboard.emit()\"\n [disabled]=\"isCopyDisabled === true || !isCopyDisabled?.state || (editMode$ | async)\"\n >\n <i c8yIcon=\"clone\"></i>\n <span>{{ copyDashboardLabel | translate }}</span>\n </button>\n <button\n class=\"btn-help btn-help--sm m-r-16 hidden-xs\"\n [attr.aria-label]=\"'Help' | translate\"\n [popover]=\"copyDisabledPopoverMsg | translate\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n type=\"button\"\n *ngIf=\"!isCopyDisabled?.state && copyDisabledPopoverMsg\"\n data-cy=\"widgets-dashboard--info-copy-dashboard\"\n (click)=\"$event.stopPropagation()\"\n ></button>\n </div>\n <button\n class=\"visible-xs m-l-0\"\n tooltip=\"{{ 'Not available on mobile phone' | translate }}\"\n type=\"button\"\n [ngClass]=\"{ 'btn btn-link': !settings.canDelete }\"\n [disabled]=\"true\"\n >\n <i c8yIcon=\"clone\"></i>\n <span>{{ copyDashboardLabel | translate }}</span>\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item\n [placement]=\"'more'\"\n [priority]=\"-3000\"\n *ngIf=\"settings.canDelete && onDeleteDashboard.observers.length\"\n>\n <button\n class=\"hidden-xs\"\n title=\"{{ 'Delete dashboard' | translate }}\"\n type=\"button\"\n data-cy=\"widgets-dashboard--delete-dashboard\"\n [ngClass]=\"{ 'btn btn-link': !settings.canCopy }\"\n (click)=\"onDeleteDashboard.emit()\"\n [disabled]=\"settings.isDisabled || (editMode$ | async)\"\n >\n <i c8yIcon=\"delete\"></i>\n <span translate>Delete dashboard</span>\n </button>\n <button\n class=\"visible-xs m-l-0\"\n tooltip=\"{{ 'Not available on mobile phone' | translate }}\"\n type=\"button\"\n data-cy=\"widgets-dashboard--delete-dashboard-mobile\"\n [ngClass]=\"{ 'btn btn-link': !settings.canCopy }\"\n [disabled]=\"true\"\n >\n <i c8yIcon=\"delete\"></i>\n <span translate>Delete dashboard</span>\n </button>\n</c8y-action-bar-item>\n\n<ng-template #loadingIndicator>\n <c8y-loading\n class=\"col-xs-12 text-center\"\n *ngIf=\"isLoadingWidgets$ | async\"\n ></c8y-loading>\n</ng-template>\n\n<ng-container *ngIf=\"!(isLoadingWidgets$ | async); else loadingIndicator\">\n <ng-container *ngIf=\"resolvedWidgets$ | async as widgetsToDisplay\">\n <!-- empty state -->\n <c8y-ui-empty-state\n [icon]=\"'c8y-device'\"\n [title]=\"'No widgets to display.' | translate\"\n *ngIf=\"widgetsToDisplay?.length === 0\"\n >\n <div *ngIf=\"onAddWidget.observers.length\">\n <p\n translate\n *ngIf=\"editMode$ | async\"\n >\n Add widgets to this dashboard.\n </p>\n <p\n translate\n *ngIf=\"!(editMode$ | async)\"\n >\n Click \"Edit widgets\" to unlock\n </p>\n <div>\n <button\n class=\"btn btn-primary m-t-16\"\n title=\"{{ 'Add widget' | translate }}\"\n type=\"button\"\n [disabled]=\"settings.isDisabled || !(editMode$ | async)\"\n (click)=\"onAddWidget.emit()\"\n data-cy=\"c8y-widgets-dashboard--add-widget\"\n translate\n >\n Add widget\n </button>\n </div>\n <p c8y-guide-docs>\n <small\n translate\n ngNonBindable\n >\n Find out more in the\n <a c8y-guide-href=\"/docs/cockpit/working-with-dashboards\">user documentation</a>\n .\n </small>\n </p>\n </div>\n </c8y-ui-empty-state>\n\n <c8y-dashboard\n [columns]=\"settings.columns\"\n (dashboardChange)=\"onChangeDashboard.emit($event)\"\n #dashboard\n >\n <c8y-dashboard-child\n [class]=\"widget.classes\"\n *ngFor=\"let widget of widgetsToDisplay\"\n [x]=\"widget._x\"\n [y]=\"widget._y\"\n [width]=\"widget._width || settings.defaultWidth\"\n [height]=\"widget._height || settings.defaultHeight\"\n [margin]=\"settings.widgetMargin\"\n [data]=\"widget\"\n [useIntersection]=\"true\"\n [editMode]=\"editMode$ | async\"\n (changeStart)=\"onChangeStart.emit({ widget: widget, source: child, dashboard: dashboard })\"\n (changeEnd)=\"onChangeEnd.emit({ widget: widget, source: child, dashboard: dashboard })\"\n (toggleFullscreen)=\"toggleFullscreenOnWidget(child)\"\n [canToggleFullscreen]=\"!(inFullScreen$ | async) || widgetInFullscreenMode\"\n #child\n >\n <c8y-dashboard-child-title>\n <span\n data-cy=\"c8y-dashboard-list--device-widget\"\n *ngIf=\"settings.translateWidgetTitle\"\n >\n {{ widget.title | translate }}\n </span>\n <span *ngIf=\"!settings.translateWidgetTitle\">\n {{ widget.title }}\n </span>\n </c8y-dashboard-child-title>\n <c8y-dashboard-child-action *ngIf=\"onEditWidget.observers.length\">\n <button\n title=\"{{ 'Edit widget' | translate }}\"\n type=\"button\"\n data-cy=\"widgets-dashboard--Edit-widget\"\n (click)=\"onEditWidget.emit({ widget: widget, source: child, dashboard: dashboard })\"\n >\n <i c8yIcon=\"pencil\"></i>\n <span translate>Edit</span>\n </button>\n </c8y-dashboard-child-action>\n <c8y-dashboard-child-action *ngIf=\"onDeleteWidget.observers.length\">\n <button\n title=\"{{ 'Remove widget' | translate }}\"\n type=\"button\"\n data-cy=\"c8y-widgets-dashboard--remove-widget\"\n (click)=\"onDeleteWidget.emit({ widget: widget, source: child, dashboard: dashboard })\"\n >\n <i c8yIcon=\"delete\"></i>\n <span translate>Remove</span>\n </button>\n </c8y-dashboard-child-action>\n\n <c8y-widget-time-context\n *ngIf=\"\n (widget.config?.displaySettings?.globalTimeContext ||\n widget.config?.displaySettings?.globalRealtimeContext) &&\n (widget.config.widgetInstanceGlobalTimeContext ||\n widget.config.widgetInstanceGlobalAutoRefreshContext)\n \"\n (dateContextChange)=\"updateWidgetConfig($event, widget)\"\n [canDecouple]=\"widget.config.canDecoupleGlobalTimeContext\"\n [displaySettings]=\"widget.config.displaySettings\"\n [hidden]=\"editMode$ | async\"\n ></c8y-widget-time-context>\n\n <c8y-widget-auto-refresh-context\n *ngIf=\"\n widget?.config?.widgetInstanceGlobalAutoRefreshContext &&\n widget.config?.displaySettings.globalAutoRefreshContext\n \"\n [editMode$]=\"editMode$\"\n ></c8y-widget-auto-refresh-context>\n\n <c8y-dynamic-component\n [componentId]=\"widget.componentId || widget.name\"\n [config]=\"\n widget.templateUrl || widget.widgetComponent\n ? { child: widget, dashboard: contextDashboard, context: context }\n : widget.config\n \"\n *ngIf=\"child.intersected\"\n (updateWidgetClasses)=\"updateWidgetClasses(widget, $event)\"\n ></c8y-dynamic-component>\n </c8y-dashboard-child>\n </c8y-dashboard>\n </ng-container>\n</ng-container>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: TitleComponent, selector: "c8y-title", inputs: ["pageTitleUpdate"] }, { kind: "component", type: BreadcrumbComponent, selector: "c8y-breadcrumb" }, { kind: "component", type: BreadcrumbItemComponent, selector: "c8y-breadcrumb-item", inputs: ["icon", "translate", "label", "path", "injector"] }, { kind: "component", type: ActionBarItemComponent, selector: "c8y-action-bar-item", inputs: ["placement", "priority", "itemClass", "injector", "groupId", "inGroupPriority"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i1$5.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: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: PopoverModule }, { kind: "directive", type: i1$9.PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "component", type: LoadingComponent, selector: "c8y-loading", inputs: ["layout", "progress", "message"] }, { kind: "component", type: EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "component", type: GuideDocsComponent, selector: "[c8y-guide-docs]" }, { kind: "directive", type: GuideHrefDirective, selector: "[c8y-guide-href]", inputs: ["c8y-guide-href"] }, { kind: "component", type: DashboardComponent, selector: "c8y-dashboard", inputs: ["columns", "gap", "rows"], outputs: ["dashboardChange"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: DashboardChildComponent, selector: "c8y-dashboard-child", inputs: ["x", "y", "width", "height", "data", "margin", "useIntersection", "isFrozen", "canToggleFullscreen", "editMode", "class"], outputs: ["changeStart", "changeEnd", "toggleFullscreen"] }, { kind: "component", type: DashboardChildTitleComponent, selector: "c8y-dashboard-child-title" }, { kind: "component", type: DashboardChildActionComponent, selector: "c8y-dashboard-child-action" }, { kind: "component", type: WidgetTimeContextComponent, selector: "c8y-widget-time-context", inputs: ["canDecouple", "displaySettings", "hidden"], outputs: ["dateContextChange"] }, { kind: "component", type: WidgetAutoRefreshContextComponent, selector: "c8y-widget-auto-refresh-context", inputs: ["editMode$"] }, { kind: "component", type: DynamicComponentComponent, selector: "c8y-dynamic-component", inputs: ["componentId", "config", "mode", "notFoundError", "executeResolvers"], outputs: ["updateWidgetClasses"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }] }); }
|
|
31064
31322
|
}
|
|
@@ -31615,7 +31873,7 @@ class BaseFilteringFormRendererComponent {
|
|
|
31615
31873
|
this.context.resetFilter();
|
|
31616
31874
|
}
|
|
31617
31875
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: BaseFilteringFormRendererComponent, deps: [{ token: FilteringFormRendererContext }, { token: C8yJSONSchema }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
31618
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: BaseFilteringFormRendererComponent, isStandalone: true, selector: "c8y-base-filtering-form-renderer", host: { listeners: { "keyup.enter": "onEnterKeyUp($event)", "keydown.escape": "onEscapeKeyDown($event)" } }, ngImport: i0, template: "<formly-form\n [form]=\"form\"\n [fields]=\"fields\"\n [model]=\"model\"\n></formly-form>\n<div class=\"data-grid__dropdown__footer d-flex separator-top\">\n <button\n class=\"btn btn-default btn-sm m-r-8 flex-grow\"\n title=\"{{ 'Reset' | translate }}\"\n (click)=\"resetFilter()\"\n translate\n >\n Reset\n </button>\n <button\n class=\"btn btn-primary btn-sm flex-grow\"\n title=\"{{ 'Apply' | translate }}\"\n (click)=\"applyFilter()\"\n [disabled]=\"form.pristine || form.invalid\"\n translate\n >\n Apply\n </button>\n</div>\n", dependencies: [{ kind: "ngmodule", type: FormlyModule }, { kind: "component", type: i2$
|
|
31876
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: BaseFilteringFormRendererComponent, isStandalone: true, selector: "c8y-base-filtering-form-renderer", host: { listeners: { "keyup.enter": "onEnterKeyUp($event)", "keydown.escape": "onEscapeKeyDown($event)" } }, ngImport: i0, template: "<formly-form\n [form]=\"form\"\n [fields]=\"fields\"\n [model]=\"model\"\n></formly-form>\n<div class=\"data-grid__dropdown__footer d-flex separator-top\">\n <button\n class=\"btn btn-default btn-sm m-r-8 flex-grow\"\n title=\"{{ 'Reset' | translate }}\"\n (click)=\"resetFilter()\"\n translate\n >\n Reset\n </button>\n <button\n class=\"btn btn-primary btn-sm flex-grow\"\n title=\"{{ 'Apply' | translate }}\"\n (click)=\"applyFilter()\"\n [disabled]=\"form.pristine || form.invalid\"\n translate\n >\n Apply\n </button>\n</div>\n", dependencies: [{ kind: "ngmodule", type: FormlyModule }, { kind: "component", type: i2$4.FormlyForm, selector: "formly-form", inputs: ["form", "model", "fields", "options"], outputs: ["modelChange"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] }); }
|
|
31619
31877
|
}
|
|
31620
31878
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: BaseFilteringFormRendererComponent, decorators: [{
|
|
31621
31879
|
type: Component,
|
|
@@ -34573,13 +34831,13 @@ class ListDisplaySwitchComponent {
|
|
|
34573
34831
|
getListKey() {
|
|
34574
34832
|
return this.listKey || this.location.path();
|
|
34575
34833
|
}
|
|
34576
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ListDisplaySwitchComponent, deps: [{ token:
|
|
34834
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ListDisplaySwitchComponent, deps: [{ token: i2$3.Location }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
34577
34835
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: ListDisplaySwitchComponent, isStandalone: true, selector: "c8y-list-display-switch", inputs: { listKey: "listKey", listLength: "listLength", filterPipe: "filterPipe" }, outputs: { onListClassChange: "onListClassChange" }, ngImport: i0, template: "<div class=\"d-flex a-i-center\">\n <label class=\"m-r-8 m-b-0\" id=\"listLabel\">\n {{ 'Display as' | translate }}\n </label>\n <div class=\"c8y-select-wrapper\">\n <select\n aria-labelledby=\"listLabel\"\n name=\"listLabel\"\n class=\"form-control\"\n [ngModel]=\"selectedOption\"\n (ngModelChange)=\"onOptionSelect($event)\"\n [attr.aria-label]=\"'Display mode' | translate\"\n >\n <option *ngFor=\"let option of DISPLAY_OPTIONS\" [ngValue]=\"option\">\n {{ option.label | translate }}\n </option>\n </select>\n <span></span>\n </div>\n</div>\n", dependencies: [{ kind: "ngmodule", type: FormsModule$1 }, { kind: "directive", type: i1$8.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1$8.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1$8.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1$8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] }); }
|
|
34578
34836
|
}
|
|
34579
34837
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ListDisplaySwitchComponent, decorators: [{
|
|
34580
34838
|
type: Component,
|
|
34581
34839
|
args: [{ selector: 'c8y-list-display-switch', standalone: true, imports: [FormsModule$1, NgFor, C8yTranslatePipe], template: "<div class=\"d-flex a-i-center\">\n <label class=\"m-r-8 m-b-0\" id=\"listLabel\">\n {{ 'Display as' | translate }}\n </label>\n <div class=\"c8y-select-wrapper\">\n <select\n aria-labelledby=\"listLabel\"\n name=\"listLabel\"\n class=\"form-control\"\n [ngModel]=\"selectedOption\"\n (ngModelChange)=\"onOptionSelect($event)\"\n [attr.aria-label]=\"'Display mode' | translate\"\n >\n <option *ngFor=\"let option of DISPLAY_OPTIONS\" [ngValue]=\"option\">\n {{ option.label | translate }}\n </option>\n </select>\n <span></span>\n </div>\n</div>\n" }]
|
|
34582
|
-
}], ctorParameters: () => [{ type:
|
|
34840
|
+
}], ctorParameters: () => [{ type: i2$3.Location }], propDecorators: { listKey: [{
|
|
34583
34841
|
type: Input
|
|
34584
34842
|
}], listLength: [{
|
|
34585
34843
|
type: Input,
|
|
@@ -36292,7 +36550,7 @@ class ProviderConfigurationComponent {
|
|
|
36292
36550
|
return mapValues(configuration, value => (value === '<<Encrypted>>' ? undefined : value));
|
|
36293
36551
|
}
|
|
36294
36552
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ProviderConfigurationComponent, deps: [{ token: Permissions }, { token: i1$4.ActivatedRoute }, { token: ModalService }, { token: AlertService }, { token: ProviderDefinitionsService }, { token: ProviderConfigurationService }, { token: C8yJSONSchema }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
36295
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: ProviderConfigurationComponent, isStandalone: true, selector: "c8y-sms-gateway", providers: [ProviderConfigurationService, ProviderDefinitionsService], ngImport: i0, template: "<c8y-title>\n {{ (layout$ | async)?.pageTitle | translate }}\n</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n [label]=\"'Settings' | translate\"\n [icon]=\"'cog'\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item *ngIf=\"(layout$ | async)?.pageTitle !='Connectivity'\"\n [label]=\"'SMS provider' | translate\"\n [icon]=\"'cog'\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item *ngIf=\"(layout$ | async)?.pageTitle =='Connectivity'\"\n [label]=\"'Connectivity' | translate\"\n [icon]=\"'cog'\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item *ngIf=\"(layout$ | async)?.pageTitle =='Connectivity'\"\n [icon]=\"'cog'\"\n [label]=\"'SIM provider settings' | translate\"\n ></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<div class=\"row\">\n <div class=\"col-md-8 col-xs-12\">\n <form class=\"card card--fullpage\" (ngSubmit)=\"saveProviderConfiguration()\">\n <div class=\"card-header separator\">\n <div class=\"card-title\">\n {{ (layout$ | async)?.cardTitle | translate }}\n </div>\n </div>\n <div class=\"inner-scroll\">\n <div class=\"card-block\">\n <p *ngIf=\"!!(layout$ | async)?.description\" class=\"m-b-8\">\n {{ (layout$ | async)?.description | translate }}\n </p>\n <c8y-form-group>\n <label for=\"providerName\">{{ (layout$ | async)?.providerName | translate }}</label>\n <c8y-typeahead\n [disabled]=\"!permissions.hasAllRoles((layout$ | async)?.saveRoles || [])\"\n [ngModel]=\"selectedProvider$ | async\"\n [displayProperty]=\"'displayName'\"\n name=\"providerName\"\n placeholder=\"{{ (layout$ | async)?.providerNamePlaceholder | translate }}\"\n (onSearch)=\"providerInput$.next($event)\"\n [allowFreeEntries]=\"false\"\n [required]=\"true\"\n [container]=\"'body'\"\n >\n <c8y-li\n *ngFor=\"let provider of providers$ | async\"\n class=\"p-l-8 p-r-8 c8y-list__item--link\"\n (click)=\"changeProvider$.next(provider); providerInput$.next('')\"\n [active]=\"(selectedProvider$ | async) === provider\"\n [attr.role]=\"'menuitem'\"\n >\n <c8y-highlight\n [text]=\"provider.displayName || '--'\"\n [pattern]=\"providerInput$ | async\"\n ></c8y-highlight>\n </c8y-li>\n </c8y-typeahead>\n <c8y-messages>\n <c8y-message\n name=\"notExisting\"\n [text]=\"(layout$ | async)?.providerNameNoMatchesHint | translate\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n <formly-form\n *ngIf=\"selectedProvider$ | async\"\n [form]=\"form\"\n [fields]=\"fields\"\n [model]=\"model\"\n [options]=\"options\"\n ></formly-form>\n </div>\n </div>\n <div class=\"card-footer separator\" *c8yIfAllowed=\"allRoles$ | async; allowAny\">\n <button\n *c8yIfAllowed=\"(layout$ | async)?.deleteRoles\"\n class=\"btn btn-default\"\n type=\"button\"\n (click)=\"deleteProviderConfiguration()\"\n [disabled]=\"\n !(configuration$ | async)?.provider && !(configuration$ | async)?.providerName\n \"\n title=\"{{ (layout$ | async)?.deleteBtnLabel | translate }}\"\n >\n {{ (layout$ | async)?.deleteBtnLabel | translate }}\n </button>\n <button\n *c8yIfAllowed=\"(layout$ | async)?.saveRoles\"\n class=\"btn btn-primary\"\n type=\"submit\"\n [disabled]=\"form.invalid || form.pristine\"\n title=\"{{ (layout$ | async)?.saveBtnLabel | translate }}\"\n >\n {{ (layout$ | async)?.saveBtnLabel | translate }}\n </button>\n </div>\n </form>\n </div>\n</div>\n", dependencies: [{ kind: "component", type: TitleComponent, selector: "c8y-title", inputs: ["pageTitleUpdate"] }, { kind: "component", type: BreadcrumbComponent, selector: "c8y-breadcrumb" }, { kind: "component", type: BreadcrumbItemComponent, selector: "c8y-breadcrumb-item", inputs: ["icon", "translate", "label", "path", "injector"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule$1 }, { kind: "directive", type: i1$8.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$8.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$8.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1$8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i1$8.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "component", type: TypeaheadComponent, selector: "c8y-typeahead", inputs: ["required", "maxlength", "disabled", "allowFreeEntries", "placeholder", "displayProperty", "icon", "name", "autoClose", "hideNew", "container", "selected", "title", "highlightFirstItem"], outputs: ["onSearch", "onIconClick"] }, { kind: "component", type: HighlightComponent, selector: "c8y-highlight", inputs: ["pattern", "text", "elementClass", "shouldTrimPattern"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "highlighted", "emptyActions", "dense", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "component", type: MessagesComponent, selector: "c8y-messages", inputs: ["show", "defaults", "helpMessage"] }, { kind: "directive", type: MessageDirective, selector: "c8y-message", inputs: ["name", "text"] }, { kind: "ngmodule", type: FormlyModule }, { kind: "component", type: i2$
|
|
36553
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: ProviderConfigurationComponent, isStandalone: true, selector: "c8y-sms-gateway", providers: [ProviderConfigurationService, ProviderDefinitionsService], ngImport: i0, template: "<c8y-title>\n {{ (layout$ | async)?.pageTitle | translate }}\n</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n [label]=\"'Settings' | translate\"\n [icon]=\"'cog'\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item *ngIf=\"(layout$ | async)?.pageTitle !='Connectivity'\"\n [label]=\"'SMS provider' | translate\"\n [icon]=\"'cog'\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item *ngIf=\"(layout$ | async)?.pageTitle =='Connectivity'\"\n [label]=\"'Connectivity' | translate\"\n [icon]=\"'cog'\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item *ngIf=\"(layout$ | async)?.pageTitle =='Connectivity'\"\n [icon]=\"'cog'\"\n [label]=\"'SIM provider settings' | translate\"\n ></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<div class=\"row\">\n <div class=\"col-md-8 col-xs-12\">\n <form class=\"card card--fullpage\" (ngSubmit)=\"saveProviderConfiguration()\">\n <div class=\"card-header separator\">\n <div class=\"card-title\">\n {{ (layout$ | async)?.cardTitle | translate }}\n </div>\n </div>\n <div class=\"inner-scroll\">\n <div class=\"card-block\">\n <p *ngIf=\"!!(layout$ | async)?.description\" class=\"m-b-8\">\n {{ (layout$ | async)?.description | translate }}\n </p>\n <c8y-form-group>\n <label for=\"providerName\">{{ (layout$ | async)?.providerName | translate }}</label>\n <c8y-typeahead\n [disabled]=\"!permissions.hasAllRoles((layout$ | async)?.saveRoles || [])\"\n [ngModel]=\"selectedProvider$ | async\"\n [displayProperty]=\"'displayName'\"\n name=\"providerName\"\n placeholder=\"{{ (layout$ | async)?.providerNamePlaceholder | translate }}\"\n (onSearch)=\"providerInput$.next($event)\"\n [allowFreeEntries]=\"false\"\n [required]=\"true\"\n [container]=\"'body'\"\n >\n <c8y-li\n *ngFor=\"let provider of providers$ | async\"\n class=\"p-l-8 p-r-8 c8y-list__item--link\"\n (click)=\"changeProvider$.next(provider); providerInput$.next('')\"\n [active]=\"(selectedProvider$ | async) === provider\"\n [attr.role]=\"'menuitem'\"\n >\n <c8y-highlight\n [text]=\"provider.displayName || '--'\"\n [pattern]=\"providerInput$ | async\"\n ></c8y-highlight>\n </c8y-li>\n </c8y-typeahead>\n <c8y-messages>\n <c8y-message\n name=\"notExisting\"\n [text]=\"(layout$ | async)?.providerNameNoMatchesHint | translate\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n <formly-form\n *ngIf=\"selectedProvider$ | async\"\n [form]=\"form\"\n [fields]=\"fields\"\n [model]=\"model\"\n [options]=\"options\"\n ></formly-form>\n </div>\n </div>\n <div class=\"card-footer separator\" *c8yIfAllowed=\"allRoles$ | async; allowAny\">\n <button\n *c8yIfAllowed=\"(layout$ | async)?.deleteRoles\"\n class=\"btn btn-default\"\n type=\"button\"\n (click)=\"deleteProviderConfiguration()\"\n [disabled]=\"\n !(configuration$ | async)?.provider && !(configuration$ | async)?.providerName\n \"\n title=\"{{ (layout$ | async)?.deleteBtnLabel | translate }}\"\n >\n {{ (layout$ | async)?.deleteBtnLabel | translate }}\n </button>\n <button\n *c8yIfAllowed=\"(layout$ | async)?.saveRoles\"\n class=\"btn btn-primary\"\n type=\"submit\"\n [disabled]=\"form.invalid || form.pristine\"\n title=\"{{ (layout$ | async)?.saveBtnLabel | translate }}\"\n >\n {{ (layout$ | async)?.saveBtnLabel | translate }}\n </button>\n </div>\n </form>\n </div>\n</div>\n", dependencies: [{ kind: "component", type: TitleComponent, selector: "c8y-title", inputs: ["pageTitleUpdate"] }, { kind: "component", type: BreadcrumbComponent, selector: "c8y-breadcrumb" }, { kind: "component", type: BreadcrumbItemComponent, selector: "c8y-breadcrumb-item", inputs: ["icon", "translate", "label", "path", "injector"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule$1 }, { kind: "directive", type: i1$8.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$8.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$8.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1$8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i1$8.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "component", type: TypeaheadComponent, selector: "c8y-typeahead", inputs: ["required", "maxlength", "disabled", "allowFreeEntries", "placeholder", "displayProperty", "icon", "name", "autoClose", "hideNew", "container", "selected", "title", "highlightFirstItem"], outputs: ["onSearch", "onIconClick"] }, { kind: "component", type: HighlightComponent, selector: "c8y-highlight", inputs: ["pattern", "text", "elementClass", "shouldTrimPattern"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "highlighted", "emptyActions", "dense", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "component", type: MessagesComponent, selector: "c8y-messages", inputs: ["show", "defaults", "helpMessage"] }, { kind: "directive", type: MessageDirective, selector: "c8y-message", inputs: ["name", "text"] }, { kind: "ngmodule", type: FormlyModule }, { kind: "component", type: i2$4.FormlyForm, selector: "formly-form", inputs: ["form", "model", "fields", "options"], outputs: ["modelChange"] }, { kind: "directive", type: IfAllowedDirective, selector: "[c8yIfAllowed]", inputs: ["c8yIfAllowed", "c8yIfAllowedAllowAny"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }] }); }
|
|
36296
36554
|
}
|
|
36297
36555
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ProviderConfigurationComponent, decorators: [{
|
|
36298
36556
|
type: Component,
|
|
@@ -37334,5 +37592,5 @@ function colorValidator(allowedModes) {
|
|
|
37334
37592
|
* Generated bundle index. Do not edit.
|
|
37335
37593
|
*/
|
|
37336
37594
|
|
|
37337
|
-
export { ACTIONS_STEPPER, AGGREGATIONS, AGGREGATION_ICONS, AGGREGATION_LABELS, AGGREGATION_LIMITS, AGGREGATION_TEXTS, AGGREGATION_VALUES, AGGREGATION_VALUES_ARR, ARRAY_VALIDATION_PREFIX, ASSET_PATH, AbstractConfigurationStrategy, ActionBarComponent, ActionBarItemComponent, ActionBarModule, ActionBarService, ActionComponent, ActionControlsExtensionService, ActionModule, ActionOutletComponent, ActionService, AggregationPickerComponent, AggregationService, AlarmRealtimeService, AlarmWithChildrenRealtimeService, AlertComponent, AlertDetailsComponent, AlertModule, AlertOutletBase, AlertOutletComponent, AlertService, AlertTextComponent, AppHrefPipe, AppIconComponent, AppStateService, AppSwitcherComponent, AppSwitcherInlineComponent, AppSwitcherService, ApplicationModule, ApplicationPluginStatus, AssetLinkPipe, AssetPropertyService, AssetTypesRealtimeService, AssetTypesService, AuditLogComponent, AuditLogModule, AuthenticationModule, BackendVersionFactory, BaseColumn, BaseFilteringFormRendererComponent, BooleanFilterMapper, BootstrapComponent, BootstrapModule, BottomDrawerComponent, BottomDrawerRef, BottomDrawerService, BreadcrumbComponent, BreadcrumbItemComponent, BreadcrumbModule, BreadcrumbOutletComponent, BreadcrumbService, BuiltInActionType, BytesPipe, C8yComponentOutlet, C8yJSONSchema, C8yStepper, C8yStepperButtons, C8yStepperIcon, C8yStepperProgress, C8yTranslateDirective, C8yTranslateModule, C8yTranslatePipe, C8yValidators, CUSTOM, CachedLocaleDictionaryService, CellRendererComponent, CellRendererContext, CellRendererDefDirective, ChangeIconComponent, ClipboardModule, ClipboardService, ColorInputComponent, ColorService, ColumnDirective, CommonModule, ConditionalTabsOutletComponent, ConfigureCustomColumnComponent, ConfirmModalComponent, ContextRouteComponent, ContextRouteGuard, ContextRouteService, CookieBannerComponent, CopyDashboardDisabledReason, CoreModule, CoreSearchModule, CountdownIntervalComponent, CountdownIntervalModule, CurrentPasswordModalComponent, CustomColumn, DATA_GRID_CONFIGURATION_CONTEXT, DATA_GRID_CONFIGURATION_CONTEXT_PROVIDER, DATA_GRID_CONFIGURATION_STRATEGY, DEFAULT_INTERVAL_STATE, DEFAULT_INTERVAL_VALUE, DEFAULT_INTERVAL_VALUES, DRAWER_ANIMATION_TIME, DashboardChildActionComponent, DashboardChildChange, DashboardChildComponent, DashboardChildTitleComponent, DashboardComponent, DashboardModule, DataGridComponent, DataGridModule, DataGridService, DatapointLibraryValidationErrors, DateContextQueryParamNames, DateFilterMapper, DateFormatService, DatePickerComponent, DatePickerModule, DatePipe, DateTimePickerComponent, DateTimePickerModule, DefaultValidationDirective, DeviceBootstrapRealtimeService, DeviceService, DeviceStatusComponent, DeviceStatusModule, DismissAlertStrategy, DocsModule, DocsService, DrawerModule, DrawerOutletComponent, DrawerService, DropAreaComponent, DropAreaModule, DropdownDirectionDirective, DynamicBulkDetailsResolver, DynamicBulkIIdentifiedResolver, DynamicComponentAlert, DynamicComponentAlertAggregator, DynamicComponentAlertsComponent, DynamicComponentComponent, DynamicComponentErrorStrategy, DynamicComponentModule, DynamicComponentService, DynamicDatapointsResolver, DynamicFormsModule, DynamicManagedObjectResolver, DynamicResolverService, ES_MAX_TIME_MILLISECONDS, EmailsValidatorDirective, EmptyComponent, EmptyStateComponent, EmptyStateContextDirective, EventRealtimeService, ExpandableRowDirective, ExtensionPointForPlugins, ExtensionPointWithoutStateForPlugins, ExtractArrayValidationErrorsPipe, FeatureCacheService, FilePickerComponent, FilePickerFormControlComponent, FilePickerFormControlModule, FilePickerModule, FilesService, FilterInputComponent, FilterMapperFactory, FilterMapperModule, FilterMapperPipe, FilterMapperService, FilterNonArrayValidationErrorsPipe, FilteringActionType, FilteringFormRendererComponent, FilteringFormRendererContext, FilteringFormRendererDefDirective, ForOfDirective, FormGroupComponent, FormsModule, GENERIC_FILE_TYPE, GLOBAL_CONTEXT_AUTO_REFRESH, GainsightService, GenericFileIconPipe, GeoService, GetGroupIconPipe, GlobalConfigService, GridDataSource, GroupFragment, GroupService, GroupedFilterChips, GuideDocsComponent, GuideHrefDirective, HOOK_ACTION, HOOK_ACTION_BAR, HOOK_BREADCRUMB, HOOK_COMPONENTS, HOOK_CURRENT_APPLICATION, HOOK_CURRENT_TENANT, HOOK_CURRENT_USER, HOOK_DOCS, HOOK_DYNAMIC_PROVIDER_CONFIG, HOOK_NAVIGATOR_NODES, HOOK_OPTIONS, HOOK_PATTERN_MESSAGES, HOOK_PLUGIN, HOOK_PREVIEW, HOOK_QUERY_PARAM, HOOK_QUERY_PARAM_BOTTOM_DRAWER, HOOK_QUERY_PARAM_MODAL, HOOK_ROUTE, HOOK_SEARCH, HOOK_STEPPER, HOOK_TABS, HOOK_VERSION, HOOK_WIZARD, HeaderBarComponent, HeaderCellRendererDefDirective, HeaderModule, HeaderService, HelpComponent, HelpModule, HighlightComponent, HookProviderTypes, HumanizeAppNamePipe, HumanizePipe, HumanizeValidationMessagePipe, I18nModule, INTERVAL_OPTIONS, IconDirective, IfAllowedDirective, InjectionType, InputGroupListComponent, InputGroupListContainerDirective, InterAppService, IntervalBasedReload, InventorySearchService, IpRangeInputListComponent, JsonValidationPrettifierDirective, LANGUAGES, LAST_DAY, LAST_HOUR, LAST_MINUTE, LAST_MONTH, LAST_WEEK, LOCALE_PATH, LegacyGridConfigMapperService, LegendFieldWrapper, ListDisplaySwitchComponent, ListDisplaySwitchModule, ListGroupComponent, ListGroupModule, ListItemActionComponent, ListItemBodyComponent, ListItemCheckboxComponent, ListItemCollapseComponent, ListItemComponent, ListItemDragHandleComponent, ListItemFooterComponent, ListItemIconComponent, ListItemRadioComponent, ListItemTimelineComponent, LoadMoreComponent, LoadingComponent, MAX_PAGE_SIZE, MESSAGES_CORE_I18N, ManagedObjectRealtimeService, ManagedObjectType, MapFunctionPipe, MarkdownToHtmlPipe, MaxValidationDirective, MeasurementRealtimeService, MessageBannerService, MessageDirective, MessagesComponent, MinValidationDirective, MissingTranslationCustomHandler, MoNamePipe, ModalComponent, ModalModule, ModalSelectionMode, ModalService, NEEDED_ROLE_FOR_SETUP, NEW_DASHBOARD_ROUTER_STATE_PROP, NULL_VALUE_PLACEHOLDER, NUMBER_FORMAT_REGEXP, NameTransformPipe, NavigatorBottomModule, NavigatorIconComponent, NavigatorModule, NavigatorNode, NavigatorNodeComponent, NavigatorNodeRoot, NavigatorOutletComponent, NavigatorService, NavigatorTopModule, NewPasswordComponent, NumberPipe, OperationBulkRealtimeService, OperationRealtimeService, OperationResultComponent, OptionsService, OutletDirective, PREVIEW_FEATURE_PROVIDERS, PRODUCT_EXPERIENCE_EVENT_SOURCE, PX_ACTIONS, PX_EVENT_NAME, PackageType, PasswordCheckListComponent, PasswordConfirm, PasswordConfirmModalComponent, PasswordInputComponent, PasswordService, PasswordStrengthCheckerService, PasswordStrengthComponent, PasswordStrengthService, PatternMessagesService, Permissions, PhoneValidationDirective, PlatformDetailsService, PluginLoadedPipe, PluginsExportScopes, PluginsLoaderService, PluginsModule, PluginsResolveService, PluginsService, PopoverConfirmComponent, PreviewFeatureButtonComponent, PreviewFeatureShowNotification, PreviewService, ProductExperienceDirective, ProductExperienceModule, ProgressBarComponent, PropertiesListComponent, PropertiesListModule, PropertyValueTransformService, ProviderConfigurationComponent, ProviderConfigurationModule, ProviderConfigurationNodeFactory, ProviderConfigurationRouteFactory, ProviderConfigurationService, ProviderDefinitionsService, PushStatus, PushStatusLabels, QUERY_PARAM_HANDLER_PROVIDERS, QueryParamBottomDrawerFactory, QueryParamBottomDrawerStateService, QueryParamHandlerService, QueryParamModalFactory, QueryParamModalStateService, QuickLinkComponent, QuickLinkModule, RESOLVING_COMPONENT_WAIT_TIME, RadioFilterMapper, RangeComponent, RangeDirective, RangeDisplayComponent, RangeDisplayModule, RealtimeButtonComponent, RealtimeControlComponent, RealtimeMessage, RealtimeModule, RealtimeService, RealtimeSubjectService, RelativeTimePipe, RequiredInputPlaceholderDirective, ResizableGridComponent, ResolverServerError, RouterModule, RouterService, RouterTabsResolver, SETUP_FINISHED_STEP_ID, SHOW_PREVIEW_FEATURES, SearchComponent, SearchFilters, SearchInputComponent, SearchOutletComponent, SearchResultEmptyComponent, SearchService, SelectComponent, SelectFilterMapper, SelectItemDirective, SelectKeyboardService, SelectLegacyComponent, SelectModalComponent, SelectModalFilterPipe, SelectModalModule, SelectModule, SelectedItemsComponent, SelectedItemsDirective, SendStatus, SendStatusLabels, ServiceRegistry, SetupCompletedComponent, SetupComponent, SetupModule, SetupService, SetupState, SetupStepperFactory, ShortenUserNamePipe, ShouldShowMoPipe, ShowIfFilterPipe, SimpleJsonPathValidatorDirective, SimplifiedAuthService, SkipLinkDirective, StandalonePluginInjector, StateService, Status, StepperModule, StepperOutletComponent, StepperService, Steppers, StringFilterMapper, StringifyObjectPipe, SupportedApps, TabComponent, TabsModule, TabsOutletComponent, TabsService, TabsetAriaDirective, TenantUiService, TextAreaRowHeightDirective, TextareaAutoresizeDirective, ThemeSwitcherService, TimeIntervalComponent, TimePickerComponent, TimePickerModule, TitleComponent, TitleOutletComponent, TotpChallengeComponent, TotpSetupComponent, TranslateParserCustom, TranslateService, TranslationLoaderService, TreeNodeCellRendererComponent, TreeNodeColumn, TreeNodeHeaderCellRendererComponent, TypeaheadComponent, TypeaheadFilterMapper, UiSettingsComponent, UiSettingsModule, UniqueInCollectionByPathValidationDirective, UserEditComponent, UserEditModalComponent, UserEngagementsService, UserMenuItemComponent, UserMenuOutletComponent, UserMenuService, UserModule, UserNameInitialsPipe, UserPreferencesConfigurationStrategy, UserPreferencesService, UserPreferencesStorageInventory, UserPreferencesStorageLocal, UserTotpRevokeComponent, UserTotpSetupComponent, VERSION_MODULE_CONFIG, ValidationPattern, VersionListComponent, VersionModule, VersionService, ViewContext, ViewContextServices, VirtualScrollWindowDirective, VirtualScrollWindowStrategy, VirtualScrollerWrapperComponent, VisibleControlsPipe, WIDGET_CONFIGURATION_GRID_SIZE, WIDGET_TYPE_VALUES, WILDCARD_SEARCH_FEATURE_KEY, WebSDKVersionFactory, WidgetGlobalAutoRefreshService, WidgetTimeContextActionBarPriority, WidgetTimeContextComponent, WidgetTimeContextDateRangeService, WidgetsDashboardComponent, WizardBodyComponent, WizardComponent, WizardFooterComponent, WizardHeaderComponent, WizardModalService, WizardModule, WizardOutletComponent, WizardService, ZipService, _virtualScrollWindowStrategyFactory, alertOnError, allEntriesAreEqual, asyncValidateArrayElements, colorValidator, deviceAvailabilityIconMap, extraRoutes, fromFactories, fromTrigger, fromTriggerOnce, getActivatedRoute, getAngularLocalesLanguageString, getBasicInputArrayFormFieldConfig, getDictionaryWithTrimmedKeys, getInjectedHooks, globalAutoRefreshLoading, hookAction, hookActionBar, hookBreadcrumb, hookComponent, hookCurrentApplication, hookCurrentTenant, hookCurrentUser, hookDataGridActionControls, hookDocs, hookDrawer, hookDynamicProviderConfig, hookFilterMapper, hookGeneric, hookNavigator, hookOptions, hookPatternMessages, hookPlugin, hookPreview, hookQueryParam, hookQueryParamBottomDrawer, hookQueryParamModal, hookRoute, hookSearch, hookService, hookStepper, hookTab, hookUserMenu, hookVersion, hookWidget, hookWizard, initializeServices, internalApps, isEagerDynamicComponents, isExtensionFactory, isLazyDynamicComponents, isPromise, languagesFactory, loadLocale, localeId, localePathFactory, memoize, minColumnGridTrackSize, operationStatusClasses, operationStatusIcons, provideBootstrapMetadata, ratiosByColumnTypes, removeDuplicatesIds, resolveInjectedFactories, retryWithDelay, simpleJsonPathValidator, sortByPriority, stateToFactory, statusAlert, statusClasses, statusIcons, throttle, toObservable, toObservableOfArrays, tooltips, trimTranslationKey, uniqueInCollectionByPathValidator, validateArrayElements, validateInternationalPhoneNumber, viewContextRoutes, wrapperLegendFieldConfig };
|
|
37595
|
+
export { ACTIONS_STEPPER, AGGREGATIONS, AGGREGATION_ICONS, AGGREGATION_LABELS, AGGREGATION_LIMITS, AGGREGATION_TEXTS, AGGREGATION_VALUES, AGGREGATION_VALUES_ARR, ARRAY_VALIDATION_PREFIX, ASSET_PATH, AbstractConfigurationStrategy, ActionBarComponent, ActionBarItemComponent, ActionBarModule, ActionBarService, ActionComponent, ActionControlsExtensionService, ActionModule, ActionOutletComponent, ActionService, AggregationPickerComponent, AggregationService, AlarmRealtimeService, AlarmWithChildrenRealtimeService, AlertComponent, AlertDetailsComponent, AlertModule, AlertOutletBase, AlertOutletComponent, AlertService, AlertTextComponent, AppHrefPipe, AppIconComponent, AppStateService, AppSwitcherComponent, AppSwitcherInlineComponent, AppSwitcherService, ApplicationModule, ApplicationPluginStatus, AssetLinkPipe, AssetPropertyService, AssetTypesRealtimeService, AssetTypesService, AuditLogComponent, AuditLogModule, AuthenticationModule, BackendVersionFactory, BaseColumn, BaseFilteringFormRendererComponent, BooleanFilterMapper, BootstrapComponent, BootstrapModule, BottomDrawerComponent, BottomDrawerRef, BottomDrawerService, BreadcrumbComponent, BreadcrumbItemComponent, BreadcrumbModule, BreadcrumbOutletComponent, BreadcrumbService, BuiltInActionType, BytesPipe, C8Y_PLUGIN_CONTEXT_PATH, C8Y_PLUGIN_NAME, C8yComponentOutlet, C8yJSONSchema, C8yStepper, C8yStepperButtons, C8yStepperIcon, C8yStepperProgress, C8yTranslateDirective, C8yTranslateModule, C8yTranslatePipe, C8yValidators, CUSTOM, CachedLocaleDictionaryService, CellRendererComponent, CellRendererContext, CellRendererDefDirective, ChangeCurrentUserPasswordService, ChangeIconComponent, ClipboardModule, ClipboardService, ColorInputComponent, ColorService, ColumnDirective, CommonModule, ConditionalTabsOutletComponent, ConfigureCustomColumnComponent, ConfirmModalComponent, ContextRouteComponent, ContextRouteGuard, ContextRouteService, CookieBannerComponent, CopyDashboardDisabledReason, CoreModule, CoreSearchModule, CountdownIntervalComponent, CountdownIntervalModule, CurrentPasswordModalComponent, CustomColumn, DATA_GRID_CONFIGURATION_CONTEXT, DATA_GRID_CONFIGURATION_CONTEXT_PROVIDER, DATA_GRID_CONFIGURATION_STRATEGY, DEFAULT_INTERVAL_STATE, DEFAULT_INTERVAL_VALUE, DEFAULT_INTERVAL_VALUES, DRAWER_ANIMATION_TIME, DashboardChildActionComponent, DashboardChildChange, DashboardChildComponent, DashboardChildTitleComponent, DashboardComponent, DashboardModule, DataGridComponent, DataGridModule, DataGridService, DatapointLibraryValidationErrors, DateContextQueryParamNames, DateFilterMapper, DateFormatService, DatePickerComponent, DatePickerModule, DatePipe, DateTimePickerComponent, DateTimePickerModule, DefaultValidationDirective, DeviceBootstrapRealtimeService, DeviceService, DeviceStatusComponent, DeviceStatusModule, DismissAlertStrategy, DocsModule, DocsService, DrawerModule, DrawerOutletComponent, DrawerService, DropAreaComponent, DropAreaModule, DropdownDirectionDirective, DynamicBulkDetailsResolver, DynamicBulkIIdentifiedResolver, DynamicComponentAlert, DynamicComponentAlertAggregator, DynamicComponentAlertsComponent, DynamicComponentComponent, DynamicComponentErrorStrategy, DynamicComponentModule, DynamicComponentService, DynamicDatapointsResolver, DynamicFormsModule, DynamicManagedObjectResolver, DynamicResolverService, ES_MAX_TIME_MILLISECONDS, EmailsValidatorDirective, EmptyComponent, EmptyStateComponent, EmptyStateContextDirective, EventRealtimeService, ExpandableRowDirective, ExtensionPointForPlugins, ExtensionPointWithoutStateForPlugins, ExtractArrayValidationErrorsPipe, FeatureCacheService, FeedbackFormComponent, FilePickerComponent, FilePickerFormControlComponent, FilePickerFormControlModule, FilePickerModule, FilesService, FilterInputComponent, FilterMapperFactory, FilterMapperModule, FilterMapperPipe, FilterMapperService, FilterNonArrayValidationErrorsPipe, FilteringActionType, FilteringFormRendererComponent, FilteringFormRendererContext, FilteringFormRendererDefDirective, ForOfDirective, FormGroupComponent, FormsModule, GENERIC_FILE_TYPE, GLOBAL_CONTEXT_AUTO_REFRESH, GainsightService, GenericFileIconPipe, GeoService, GetGroupIconPipe, GlobalConfigService, GridDataSource, GroupFragment, GroupService, GroupedFilterChips, GuideDocsComponent, GuideHrefDirective, HOOK_ACTION, HOOK_ACTION_BAR, HOOK_BREADCRUMB, HOOK_COMPONENTS, HOOK_CURRENT_APPLICATION, HOOK_CURRENT_TENANT, HOOK_CURRENT_USER, HOOK_DOCS, HOOK_DYNAMIC_PROVIDER_CONFIG, HOOK_NAVIGATOR_NODES, HOOK_OPTIONS, HOOK_PATTERN_MESSAGES, HOOK_PLUGIN, HOOK_PREVIEW, HOOK_QUERY_PARAM, HOOK_QUERY_PARAM_BOTTOM_DRAWER, HOOK_QUERY_PARAM_MODAL, HOOK_ROUTE, HOOK_SEARCH, HOOK_STEPPER, HOOK_TABS, HOOK_VERSION, HOOK_WIZARD, HeaderBarComponent, HeaderCellRendererDefDirective, HeaderModule, HeaderService, HelpComponent, HelpModule, HighlightComponent, HookProviderTypes, HumanizeAppNamePipe, HumanizePipe, HumanizeValidationMessagePipe, I18nModule, INTERVAL_OPTIONS, IconDirective, IfAllowedDirective, InjectionType, InputGroupListComponent, InputGroupListContainerDirective, InterAppService, IntervalBasedReload, InventorySearchService, IpRangeInputListComponent, JsonValidationPrettifierDirective, LANGUAGES, LAST_DAY, LAST_HOUR, LAST_MINUTE, LAST_MONTH, LAST_WEEK, LOCALE_PATH, LegacyGridConfigMapperService, LegendFieldWrapper, ListDisplaySwitchComponent, ListDisplaySwitchModule, ListGroupComponent, ListGroupModule, ListItemActionComponent, ListItemBodyComponent, ListItemCheckboxComponent, ListItemCollapseComponent, ListItemComponent, ListItemDragHandleComponent, ListItemFooterComponent, ListItemIconComponent, ListItemRadioComponent, ListItemTimelineComponent, LoadMoreComponent, LoadingComponent, MAX_PAGE_SIZE, MESSAGES_CORE_I18N, ManagedObjectRealtimeService, ManagedObjectType, MapFunctionPipe, MarkdownToHtmlPipe, MaxValidationDirective, MeasurementRealtimeService, MessageBannerService, MessageDirective, MessagesComponent, MinValidationDirective, MissingTranslationCustomHandler, MoNamePipe, ModalComponent, ModalModule, ModalSelectionMode, ModalService, NEEDED_ROLE_FOR_SETUP, NEW_DASHBOARD_ROUTER_STATE_PROP, NULL_VALUE_PLACEHOLDER, NUMBER_FORMAT_REGEXP, NameTransformPipe, NavigatorBottomModule, NavigatorIconComponent, NavigatorModule, NavigatorNode, NavigatorNodeComponent, NavigatorNodeRoot, NavigatorOutletComponent, NavigatorService, NavigatorTopModule, NewPasswordComponent, NumberPipe, OperationBulkRealtimeService, OperationRealtimeService, OperationResultComponent, OptionsService, OutletDirective, PREVIEW_FEATURE_PROVIDERS, PRODUCT_EXPERIENCE_EVENT_SOURCE, PX_ACTIONS, PX_EVENT_NAME, PackageType, PasswordCheckListComponent, PasswordConfirm, PasswordConfirmModalComponent, PasswordInputComponent, PasswordService, PasswordStrengthCheckerService, PasswordStrengthComponent, PasswordStrengthService, PatternMessagesService, Permissions, PhoneValidationDirective, PlatformDetailsService, PluginLoadedPipe, PluginsExportScopes, PluginsLoaderService, PluginsModule, PluginsResolveService, PluginsService, PopoverConfirmComponent, PreviewFeatureButtonComponent, PreviewFeatureShowNotification, PreviewService, ProductExperienceDirective, ProductExperienceModule, ProgressBarComponent, PropertiesListComponent, PropertiesListModule, PropertyValueTransformService, ProviderConfigurationComponent, ProviderConfigurationModule, ProviderConfigurationNodeFactory, ProviderConfigurationRouteFactory, ProviderConfigurationService, ProviderDefinitionsService, PushStatus, PushStatusLabels, QUERY_PARAM_HANDLER_PROVIDERS, QueryParamBottomDrawerFactory, QueryParamBottomDrawerStateService, QueryParamHandlerService, QueryParamModalFactory, QueryParamModalStateService, QuickLinkComponent, QuickLinkModule, RESOLVING_COMPONENT_WAIT_TIME, RadioFilterMapper, RangeComponent, RangeDirective, RangeDisplayComponent, RangeDisplayModule, RealtimeButtonComponent, RealtimeControlComponent, RealtimeMessage, RealtimeModule, RealtimeService, RealtimeSubjectService, RelativeTimePipe, RequiredInputPlaceholderDirective, ResizableGridComponent, ResolverServerError, RouterModule, RouterService, RouterTabsResolver, SETUP_FINISHED_STEP_ID, SHOW_PREVIEW_FEATURES, SearchComponent, SearchFilters, SearchInputComponent, SearchOutletComponent, SearchResultEmptyComponent, SearchService, SelectComponent, SelectFilterMapper, SelectItemDirective, SelectKeyboardService, SelectLegacyComponent, SelectModalComponent, SelectModalFilterPipe, SelectModalModule, SelectModule, SelectedItemsComponent, SelectedItemsDirective, SendStatus, SendStatusLabels, ServiceRegistry, SetupCompletedComponent, SetupComponent, SetupModule, SetupService, SetupState, SetupStepperFactory, ShortenUserNamePipe, ShouldShowMoPipe, ShowIfFilterPipe, SimpleJsonPathValidatorDirective, SimplifiedAuthService, SkipLinkDirective, StateService, Status, StepperModule, StepperOutletComponent, StepperService, Steppers, StringFilterMapper, StringifyObjectPipe, SupportedApps, TabComponent, TabsModule, TabsOutletComponent, TabsService, TabsetAriaDirective, TenantUiService, TextAreaRowHeightDirective, TextareaAutoresizeDirective, ThemeSwitcherService, TimeIntervalComponent, TimePickerComponent, TimePickerModule, TitleComponent, TitleOutletComponent, TotpChallengeComponent, TotpSetupComponent, TranslateParserCustom, TranslateService, TranslationLoaderService, TreeNodeCellRendererComponent, TreeNodeColumn, TreeNodeHeaderCellRendererComponent, TypeaheadComponent, TypeaheadFilterMapper, UiSettingsComponent, UiSettingsModule, UniqueInCollectionByPathValidationDirective, UserEditComponent, UserEditModalComponent, UserEngagementsService, UserMenuItemComponent, UserMenuOutletComponent, UserMenuService, UserModule, UserNameInitialsPipe, UserPreferencesConfigurationStrategy, UserPreferencesService, UserPreferencesStorageInventory, UserPreferencesStorageLocal, UserTotpRevokeComponent, UserTotpSetupComponent, VERSION_MODULE_CONFIG, ValidationPattern, VersionListComponent, VersionModule, VersionService, ViewContext, ViewContextServices, VirtualScrollWindowDirective, VirtualScrollWindowStrategy, VirtualScrollerWrapperComponent, VisibleControlsPipe, WIDGET_CONFIGURATION_GRID_SIZE, WIDGET_TYPE_VALUES, WILDCARD_SEARCH_FEATURE_KEY, WebSDKVersionFactory, WidgetGlobalAutoRefreshService, WidgetTimeContextActionBarPriority, WidgetTimeContextComponent, WidgetTimeContextDateRangeService, WidgetsDashboardComponent, WizardBodyComponent, WizardComponent, WizardFooterComponent, WizardHeaderComponent, WizardModalService, WizardModule, WizardOutletComponent, WizardService, ZipService, _virtualScrollWindowStrategyFactory, alertOnError, allEntriesAreEqual, asyncValidateArrayElements, colorValidator, deviceAvailabilityIconMap, extraRoutes, fromFactories, fromTrigger, fromTriggerOnce, getActivatedRoute, getAngularLocalesLanguageString, getBasicInputArrayFormFieldConfig, getDictionaryWithTrimmedKeys, getInjectedHooks, gettext, globalAutoRefreshLoading, hookAction, hookActionBar, hookBreadcrumb, hookComponent, hookCurrentApplication, hookCurrentTenant, hookCurrentUser, hookDataGridActionControls, hookDocs, hookDrawer, hookDynamicProviderConfig, hookFilterMapper, hookGeneric, hookNavigator, hookOptions, hookPatternMessages, hookPlugin, hookPreview, hookQueryParam, hookQueryParamBottomDrawer, hookQueryParamModal, hookRoute, hookSearch, hookService, hookStepper, hookTab, hookUserMenu, hookVersion, hookWidget, hookWizard, initializeServices, internalApps, isEagerDynamicComponents, isExtensionFactory, isLazyDynamicComponents, isPromise, languagesFactory, loadLocale, localeId, localePathFactory, memoize, minColumnGridTrackSize, operationStatusClasses, operationStatusIcons, provideBootstrapMetadata, ratiosByColumnTypes, removeDuplicatesIds, resolveInjectedFactories, retryWithDelay, simpleJsonPathValidator, sortByPriority, stateToFactory, statusAlert, statusClasses, statusIcons, throttle, toObservable, toObservableOfArrays, tooltips, trimTranslationKey, uniqueInCollectionByPathValidator, validateArrayElements, validateInternationalPhoneNumber, viewContextRoutes, wrapperLegendFieldConfig };
|
|
37338
37596
|
//# sourceMappingURL=c8y-ngx-components.mjs.map
|