import * as i0 from '@angular/core'; import { OnInit, OnDestroy, TemplateRef } from '@angular/core'; import { OnBeforeSave } from '@c8y/ngx-components'; import { IApplication } from '@c8y/client'; import { FormArray } from '@angular/forms'; import { Observable } from 'rxjs'; interface IQuickLink { icon: string; label: string; url: string; newTab: boolean; app?: IApplication; } type QuickLinksConfig = { links: IQuickLink[]; displayOption: DisplayOptionType; translateLinkLabels: boolean; }; declare const QuickLinkDisplayOption: { readonly GRID: "Grid"; readonly LIST: "List"; }; type DisplayOptionType = (typeof QuickLinkDisplayOption)[keyof typeof QuickLinkDisplayOption]; declare const DEFAULT_DISPLAY_OPTION_VALUE: "Grid"; declare const DEFAULT_QUICK_LINK_ICON = "link"; declare const HELP_AND_SERVICE_WIDGET_ID: "HelpAndService"; declare const APPLICATIONS_WIDGET_ID: "Applications"; declare const QUICK_LINKS_DEVICE_MANAGEMENT_ID: "devicemanagement.welcome.widget"; type ConvertibleWidgetID = typeof HELP_AND_SERVICE_WIDGET_ID | typeof APPLICATIONS_WIDGET_ID | typeof QUICK_LINKS_DEVICE_MANAGEMENT_ID; type DefaultDeviceManagementQuickLinkDefinition = { navPath: string[]; overrides?: QuickLinkOverrides; }; interface QuickLinkOverrides { label?: string; icon?: string; url?: string; } declare const URL_VALIDATOR_PATTERN: RegExp; type WidgetConversionConfig = { convertWidget: () => void; }; declare class QuickLinksWidgetConfigComponent implements OnInit, OnBeforeSave, OnDestroy { config: i0.InputSignal; quickLinksForm: ReturnType; selectedDisplayOption: DisplayOptionType; appsNameChanged: i0.WritableSignal; addLinkIsCollapsed: boolean; set previewSet(template: TemplateRef); private destroy$; readonly DEFAULT_QUICK_LINK_ICON = "link"; readonly DisplayOption: { readonly GRID: "Grid"; readonly LIST: "List"; }; private readonly CHANGE_DEFAULT_ICON_LABEL; private readonly SAVE_CHANGES_LABEL; get quickLinksFormArray(): FormArray; private readonly quickLinksService; private readonly modalService; private readonly humanizeAppNamePipe; private readonly interAppService; private readonly formBuilder; private readonly contextDashboardService; private readonly translateService; private readonly widgetConfigService; ngOnInit(): void; ngOnDestroy(): void; getQuickLinks(): IQuickLink[]; addQuickLink(link: IQuickLink): void; onBeforeSave(config?: QuickLinksConfig): Promise; assignLinksToConfig(): void; resetLinks(): void; private onInitConfig; private setupQuickLinksForm; private confirmAppIconChanges; private initForm; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵcmp: i0.ɵɵComponentDeclaration; } declare class QuickLinksWidgetViewComponent implements OnInit { config: i0.InputSignal; isPreview: i0.InputSignal; protected readonly DEFAULT_QUICK_LINK_ICON = "link"; protected readonly DisplayOption: { readonly GRID: "Grid"; readonly LIST: "List"; }; private readonly quickLinksService; private readonly dashboardChild; private readonly appSwitcherService; private readonly appHrefPipe; private readonly humanizeAppNamePipe; ngOnInit(): void; /** * The method is responsible for converting legacy widgets into their updated versions if a conversion is required. * * The widgets are being converted: * - Help and Service Widget * - Applications Widget * - Quick Links - Device Management Widget */ private convertLegacyWidget; /** * Converts the Device Management Quick Links widget by assigning default quick links for the device management app * and updating the widget configuration with default options. */ private convertDeviceManagementQuickLinksWidget; /** * Converts the Applications widget by assigning default quick links * and updating the widget configuration with default options. */ private convertApplicationsWidget; /** * Converts the Help and Service widget by assigning default quick links * and updating the widget configuration with default options. */ private convertHelpAndServiceWidget; /** * Determines whether conversion is required for the widget. * Conversion is needed if the widget configuration is empty and a valid widget ID exists. * * @returns `true` if conversion is required, otherwise `false`. */ private isConversionRequiredForWidget; /** * Retrieves the widget ID from the dashboard child data. * If `componentId` is available, it is returned; otherwise, the widget's `name` is used. * * @returns The widget ID as a `ConvertibleWidgetID`, based on `componentId` or `name`. */ private getWidgetId; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵcmp: i0.ɵɵComponentDeclaration; } /** * Service for managing quick links in Cockpit and Device Management applications. * It fetches, processes, and provides quick links to relevant documentation and navigation nodes. */ declare class QuickLinksService { private navNodes; private readonly docsService; private readonly navigatorService; private readonly labelsToFilterOutInDeviceManagement; /** * Retrieves the default quick links for Cockpit Application. * * @returns An observable emitting an array of quick links. */ getDefaultQuickLinks$(): Observable; /** * Retrieves default quick links for Device Management Application * * @returns An observable emitting an array of quick links for device management. */ getQuickLinksForDeviceManagement$(): Observable; /** * Fetches documentation links for Cockpit Application and sorts them by priority. * * @returns An observable emitting an array of documentation links. */ private getDocLinks$; /** * Processes and modifies documentation links. * * @param links - Array of documentation links. * @param navigatorNodes - Array of navigation nodes. * * @returns An array of processed documentation links. */ private handleDocLinks; /** * Creates a quick link for adding a group if the "Groups" node is present. * * @param navigatorNodes - Array of navigation nodes. * @returns A `DocLink` for adding a group or `undefined`. */ private createAddGroupDocLink; /** * Retrieves additional documentation links related to device management. * * @returns An observable that emits a list of processed documentation links. */ private getAdditionalDocLinksForDeviceManagement$; /** * Prepares documentation links by replacing some links with a main one and filtering out irrelevant links. * * @param links - The list of documentation links to process. * @returns The processed list of documentation links. */ private prepareDocLinksForDeviceManagement; /** * Filters out documentation links that should not be included in device management. * * @param links - The list of documentation links to filter. * @returns The filtered list of documentation links. */ private filterOutDocsLinksForDeviceManagement; /** * Replaces the first occurrence of a documentation link with a main user guide link. * * @param links - The list of documentation links to process. * @returns The modified list of documentation links. */ private replaceDocsLinksWithMainOne; /** * Checks if a URL is valid. * * @param url - The URL string to validate. * @returns `true` if the URL is valid, otherwise `false`. */ private isValidURL; /** * Determines if a link belongs to the current application. * * @param link - The documentation link to check. * @returns `true` if the link is for the current app, otherwise `false`. */ private isLinkForCurrentApp; /** * Finds a navigation node by its label. * * @param nodeName - Label of the node to find. * @param navNodes - Array of navigation nodes. * * @returns The found navigation node. */ private findNavigatorNode; /** * Retrieves the default quick links for device management. * * This method returns an array of predefined quick link definitions * used for navigation within the device management section of the application. * * Each quick link is defined by a navigation path (`navPath`), and optionally * includes override properties such as a custom label, icon, or URL. * * @returns An array of quick link definitions. */ private getDefaultQuickLinksForDeviceManagement; /** * Fetches documentation links for Device Management Application and sorts them by priority. * * @returns An observable emitting an array of documentation links. */ private getSortedDocLinksForDeviceManagement; /** * Creates a document link based on the given navigation node path labels. * * @param navNodePathLabels - An array of strings representing the path labels used to find the navigation node. * @param quickLinkOverrides - An optional partial object of `DocLink` properties that can override the defaults. * @param navNodes - An array of `NavigatorNode` objects to search within for the navigation node. * * @returns A `DocLink` object with the details of the found navigation node, or `undefined` if no matching node is found. */ private createDocLinkToNavNode; /** * Ensures the given path starts with a leading slash. * * @param path - The path to check. * @returns The path with a leading slash. */ private ensureLeadingSlash; /** * Recursively searches for a visible navigation node that matches the given path labels. * * @param navNodePathLabels - An array of labels representing the navigation path. * This array is mutated as elements are shifted during recursion. * @param navNodes - An array of `NavigatorNode` objects to search within. Defaults to `this.navNodes`. * * @returns The found `NavigatorNode`. */ private findVisibleNavNode; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵprov: i0.ɵɵInjectableDeclaration; } export { APPLICATIONS_WIDGET_ID, DEFAULT_DISPLAY_OPTION_VALUE, DEFAULT_QUICK_LINK_ICON, HELP_AND_SERVICE_WIDGET_ID, QUICK_LINKS_DEVICE_MANAGEMENT_ID, QuickLinkDisplayOption, QuickLinksService, QuickLinksWidgetConfigComponent, QuickLinksWidgetViewComponent, URL_VALIDATOR_PATTERN }; export type { ConvertibleWidgetID, DefaultDeviceManagementQuickLinkDefinition, DisplayOptionType, IQuickLink, QuickLinksConfig, WidgetConversionConfig }; //# sourceMappingURL=index.d.ts.map