@c8y/ngx-components
Version:
Angular modules for Cumulocity IoT applications
503 lines (491 loc) • 25 kB
TypeScript
import { BrandVersion, StoreBrandingService, BrandingVersionService, BrandingTrackingService, BrandingOptionsJson, BrandingShadesService, ApplyBrandingLocallyService } from '@c8y/ngx-components/branding/shared/data';
import { Observable } from 'rxjs';
import { ActivatedRoute, Router } from '@angular/router';
import { Pagination, DisplayOptions, ActionControl, Column, AppStateService, ZipService, ModalService, AlertService, MessageBannerService, FilesService, ThemeSwitcherService, CellRendererContext, ModalComponent, DroppedFile, ClipboardService } from '@c8y/ngx-components';
import { IApplication, ApplicationService } from '@c8y/client';
import { StaticAssetsService, StaticAsset } from '@c8y/ngx-components/static-assets/data';
import { BsModalService } from 'ngx-bootstrap/modal';
import { AddBrandingModalService } from '@c8y/ngx-components/branding/shared/lazy/add-branding-modal';
import * as i0 from '@angular/core';
import { OnDestroy } from '@angular/core';
import * as _angular_forms from '@angular/forms';
import { ControlValueAccessor, FormBuilder, FormControl, AsyncValidator } from '@angular/forms';
import { TranslateService } from '@ngx-translate/core';
declare class BrandingImportModalService {
private modal;
constructor(modal: BsModalService);
openBrandingImportModal(): Promise<void>;
static ɵfac: i0.ɵɵFactoryDeclaration<BrandingImportModalService, never>;
static ɵprov: i0.ɵɵInjectableDeclaration<BrandingImportModalService>;
}
declare class BrandingComponent {
private brandings;
private activatedRoute;
private appState;
private applicationService;
private zip;
private staticAssets;
private router;
private modal;
private confirmModal;
private brandingVersionService;
private addBrandingModalService;
private alert;
private brandingImportModalService;
private brandingTracking;
pagination: Pagination;
displayOptions: DisplayOptions;
actionControls: ActionControl[];
columns: Column[];
currentAppContextPath: string;
availableBrandingVariants$: Observable<{
publicOptions: IApplication;
variants: BrandVersion[];
}>;
private reloadTrigger;
constructor(brandings: StoreBrandingService, activatedRoute: ActivatedRoute, appState: AppStateService, applicationService: ApplicationService, zip: ZipService, staticAssets: StaticAssetsService, router: Router, modal: BsModalService, confirmModal: ModalService, brandingVersionService: BrandingVersionService, addBrandingModalService: AddBrandingModalService, alert: AlertService, brandingImportModalService: BrandingImportModalService, brandingTracking: BrandingTrackingService);
deleteAllBrandings(publicOptions?: IApplication): Promise<void>;
exportBranding(variant: BrandVersion): Promise<void>;
refresh(): void;
addNewVersion(): Promise<void>;
duplicateVersion(version: BrandVersion): Promise<void>;
editBranding(brandingName: string): Promise<boolean>;
getStartedUsingBranding(): Promise<void>;
applyToApps(version: BrandVersion): Promise<void>;
importBranding(): Promise<void>;
private removeTagsFromOtherVersions;
static ɵfac: i0.ɵɵFactoryDeclaration<BrandingComponent, never>;
static ɵcmp: i0.ɵɵComponentDeclaration<BrandingComponent, "c8y-branding", never, {}, {}, never, never, true, never>;
}
declare class ApplyBrandingToAppService {
private apps;
constructor(apps: ApplicationService);
getBrandableApps(): Promise<IApplication[]>;
getHostedAppsWhereDynamicOptionsUrlIsUndefined(apps: IApplication[]): IApplication[];
static ɵfac: i0.ɵɵFactoryDeclaration<ApplyBrandingToAppService, never>;
static ɵprov: i0.ɵɵInjectableDeclaration<ApplyBrandingToAppService>;
}
declare class BrandingFormComponent implements ControlValueAccessor {
private formBuilder;
private messageBannerService;
formGroup: ReturnType<BrandingFormComponent['initForm']>;
messageBannerHelp: "Supports markdown. Use {{ headerMark }} for headers, {{ listMark }} for lists, {{ boldMark }} for bold, {{ italicMark }} for italic, and {{ linkMark }} for links.";
messageBannerHelpParams: {
headerMark: string;
listMark: string;
boldMark: string;
italicMark: string;
linkMark: string;
};
private onTouched;
private externalValue;
private formGroupValueChanges$;
constructor(formBuilder: FormBuilder, messageBannerService: MessageBannerService);
writeValue(obj: string): void;
registerOnChange(fn: (value: string) => void): void;
registerOnTouched(fn: () => void): void;
cockieBannerChange(toggleState: boolean): void;
onBlur(): void;
initForm(): _angular_forms.FormGroup<{
darkThemeAvailable: _angular_forms.FormControl<boolean>;
cookieBanner: _angular_forms.FormGroup<{
cookieBannerTitle: _angular_forms.FormControl<string>;
cookieBannerText: _angular_forms.FormControl<string>;
cookieBannerDisabled: _angular_forms.FormControl<boolean>;
policyUrl: _angular_forms.FormControl<string>;
policyVersion: _angular_forms.FormControl<string>;
}>;
messageBanner: _angular_forms.FormGroup<{
messageBannerEnabled: _angular_forms.FormControl<boolean>;
messageBannerContent: _angular_forms.FormControl<string>;
messageBannerType: _angular_forms.FormControl<"success" | "warning" | "danger" | "info" | "system">;
messageBannerId: _angular_forms.FormControl<string>;
}>;
baseTypography: _angular_forms.FormGroup<{
"font-url": _angular_forms.FormControl<string>;
"font-family-base": _angular_forms.FormControl<string>;
}>;
headingsAndNavigatorTypography: _angular_forms.FormGroup<{
"font-family-headings": _angular_forms.FormControl<string>;
"navigator-font-family": _angular_forms.FormControl<string>;
}>;
genericApplicationOptions: _angular_forms.FormGroup<{
globalTitle: _angular_forms.FormControl<string>;
faviconUrl: _angular_forms.FormControl<string>;
}>;
}>;
applyStateToForm(branding: BrandingOptionsJson): void;
convertFormToState(value: BrandingFormComponent['formGroup']['value']): string;
previewBanner(): void;
private setupMessageBannerIdAutoGeneration;
private ensureMessageBannerIdExists;
static ɵfac: i0.ɵɵFactoryDeclaration<BrandingFormComponent, never>;
static ɵcmp: i0.ɵɵComponentDeclaration<BrandingFormComponent, "c8y-branding-form", never, {}, {}, never, never, true, never>;
}
declare class BrandingThemeFormComponent implements ControlValueAccessor, OnDestroy {
private activatedRoute;
private formBuilder;
private filesService;
private brandingShades;
private themeSwitcher;
readonly formStructure: {
readonly brandColors: {
readonly label: "Brand colors";
readonly brandColors: {
readonly label: "Brand colors";
readonly colors: [{
readonly label: "Brand primary";
readonly formControlName: "brand-primary";
}, {
readonly label: "Brand light";
readonly formControlName: "brand-light";
}, {
readonly label: "Brand dark";
readonly formControlName: "brand-dark";
}];
};
readonly shades: {
readonly label: "Shades";
readonly colorColumn: [[{
readonly label: "c8y-brand-10";
readonly formControlName: "c8y-brand-10";
}, {
readonly label: "c8y-brand-20";
readonly formControlName: "c8y-brand-20";
}, {
readonly label: "c8y-brand-30";
readonly formControlName: "c8y-brand-30";
}, {
readonly label: "c8y-brand-40";
readonly formControlName: "c8y-brand-40";
}], [{
readonly label: "c8y-brand-50";
readonly formControlName: "c8y-brand-50";
}, {
readonly label: "c8y-brand-60";
readonly formControlName: "c8y-brand-60";
}, {
readonly label: "c8y-brand-70";
readonly formControlName: "c8y-brand-70";
}, {
readonly label: "c8y-brand-80";
readonly formControlName: "c8y-brand-80";
}]];
};
};
readonly statusColors: {
readonly label: "Status colors";
readonly subCategories: readonly [{
readonly label: "Info colors";
readonly colors: [{
readonly label: "Info";
readonly formControlName: "palette-status-info";
}, {
readonly label: "Info light";
readonly formControlName: "palette-status-info-light";
}, {
readonly label: "Info dark";
readonly formControlName: "palette-status-info-dark";
}];
}, {
readonly label: "Warning colors";
readonly colors: [{
readonly label: "Warning";
readonly formControlName: "palette-status-warning";
}, {
readonly label: "Warning light";
readonly formControlName: "palette-status-warning-light";
}, {
readonly label: "Warning dark";
readonly formControlName: "palette-status-warning-dark";
}];
}, {
readonly label: "Danger colors";
readonly colors: [{
readonly label: "Danger";
readonly formControlName: "palette-status-danger";
}, {
readonly label: "Danger light";
readonly formControlName: "palette-status-danger-light";
}, {
readonly label: "Danger dark";
readonly formControlName: "palette-status-danger-dark";
}];
}, {
readonly label: "Success colors";
readonly colors: [{
readonly label: "Success";
readonly formControlName: "palette-status-success";
}, {
readonly label: "Success light";
readonly formControlName: "palette-status-success-light";
}, {
readonly label: "Success dark";
readonly formControlName: "palette-status-success-dark";
}];
}];
};
readonly actionBar: {
readonly label: "Action bar";
readonly colorColumns: readonly [{
readonly label: "Action bar";
readonly colorColumns: [[{
readonly label: "Background color";
readonly formControlName: "action-bar-background-default";
}, {
readonly label: "Text color";
readonly formControlName: "action-bar-color-default";
}, {
readonly label: "Icon color";
readonly formControlName: "action-bar-icon-color";
}], [{
readonly label: "Button color";
readonly formControlName: "action-bar-color-actions";
}, {
readonly label: "Button hover color";
readonly formControlName: "action-bar-color-actions-hover";
}]];
}];
};
readonly mainHeader: {
readonly label: "Main header";
readonly colorColumns: readonly [{
readonly label: "Main header";
readonly colorColumns: [[{
readonly label: "Background color";
readonly formControlName: "header-color";
}, {
readonly label: "Text color";
readonly formControlName: "header-text-color";
}], [{
readonly label: "Button hover color";
readonly formControlName: "header-hover-color";
}]];
}];
};
readonly navigator: {
readonly label: "Navigator";
readonly colorColumns: readonly [{
readonly label: "Navigation";
readonly colors: [{
readonly label: "Background color";
readonly formControlName: "navigator-bg-color";
}, {
readonly label: "Text color";
readonly formControlName: "navigator-text-color";
}, {
readonly label: "Separator color";
readonly formControlName: "navigator-separator-color";
}];
}, {
readonly label: "Header";
readonly colors: [{
readonly label: "Header background color";
readonly formControlName: "navigator-header-bg";
}, {
readonly label: "Title color";
readonly formControlName: "navigator-title-color";
}];
}, {
readonly label: "Active node";
readonly colors: [{
readonly label: "Active background color";
readonly formControlName: "navigator-active-bg";
}, {
readonly label: "Active border color";
readonly formControlName: "navigator-border-active";
}, {
readonly label: "Active text color";
readonly formControlName: "navigator-color-active";
}];
}];
};
readonly rightDrawer: {
readonly label: "Right drawer";
readonly colorColumns: readonly [{
readonly label: "Panel";
readonly colors: [{
readonly label: "Background color";
readonly formControlName: "right-drawer-background-default";
}, {
readonly label: "Text color";
readonly formControlName: "right-drawer-text-color-default";
}, {
readonly label: "Text muted color";
readonly formControlName: "right-drawer-text-color-muted";
}, {
readonly label: "Separator color";
readonly formControlName: "right-drawer-separator-color";
}];
}, {
readonly label: "Interactive";
readonly colors: [{
readonly label: "Link color";
readonly formControlName: "right-drawer-link-color";
}, {
readonly label: "Link hover color";
readonly formControlName: "right-drawer-link-color-hover";
}];
}];
};
};
formGroup: ReturnType<BrandingThemeFormComponent['initForm']>;
imageFileExtensions: string[];
resetShadesButtonEnabled$: Observable<boolean>;
private onTouched;
private externalValue;
private formGroupValueChanges$;
private addDarkThemePrefix;
private readonly varsToConvertToHeight;
constructor(activatedRoute: ActivatedRoute, formBuilder: FormBuilder, filesService: FilesService, brandingShades: BrandingShadesService, themeSwitcher: ThemeSwitcherService);
ngOnDestroy(): void;
regenerateShadesBasedOnPrimaryColor(color?: string): void;
writeValue(obj: string): void;
registerOnChange(fn: (value: string) => void): void;
registerOnTouched(fn: () => void): void;
onBlur(): void;
initForm(): _angular_forms.FormGroup<{
"navigator-platform-logo-height": _angular_forms.FormControl<string | number>;
"brand-logo-img-height": _angular_forms.FormControl<number>;
"btn-border-radius-base": _angular_forms.FormControl<number>;
"brand-logo-img": _angular_forms.FormControl<string>;
"navigator-platform-logo": _angular_forms.FormControl<string>;
"login-platform-animation-img": _angular_forms.FormControl<string>;
"brand-dark": _angular_forms.FormControl<string>;
"brand-light": _angular_forms.FormControl<string>;
"brand-primary": _angular_forms.FormControl<string>;
"c8y-brand-10": _angular_forms.FormControl<string>;
"c8y-brand-20": _angular_forms.FormControl<string>;
"c8y-brand-30": _angular_forms.FormControl<string>;
"c8y-brand-40": _angular_forms.FormControl<string>;
"c8y-brand-50": _angular_forms.FormControl<string>;
"c8y-brand-60": _angular_forms.FormControl<string>;
"c8y-brand-70": _angular_forms.FormControl<string>;
"c8y-brand-80": _angular_forms.FormControl<string>;
"palette-status-info": _angular_forms.FormControl<string>;
"palette-status-warning": _angular_forms.FormControl<string>;
"palette-status-success": _angular_forms.FormControl<string>;
"palette-status-danger": _angular_forms.FormControl<string>;
"palette-status-info-light": _angular_forms.FormControl<string>;
"palette-status-warning-light": _angular_forms.FormControl<string>;
"palette-status-success-light": _angular_forms.FormControl<string>;
"palette-status-danger-light": _angular_forms.FormControl<string>;
"palette-status-info-dark": _angular_forms.FormControl<string>;
"palette-status-warning-dark": _angular_forms.FormControl<string>;
"palette-status-success-dark": _angular_forms.FormControl<string>;
"palette-status-danger-dark": _angular_forms.FormControl<string>;
"body-background-color": _angular_forms.FormControl<string>;
"text-color": _angular_forms.FormControl<string>;
"text-muted": _angular_forms.FormControl<string>;
"link-color": _angular_forms.FormControl<string>;
"link-hover-color": _angular_forms.FormControl<string>;
"action-bar-background-default": _angular_forms.FormControl<string>;
"action-bar-color-actions-hover": _angular_forms.FormControl<string>;
"action-bar-color-actions": _angular_forms.FormControl<string>;
"action-bar-color-default": _angular_forms.FormControl<string>;
"action-bar-icon-color": _angular_forms.FormControl<string>;
"header-color": _angular_forms.FormControl<string>;
"header-text-color": _angular_forms.FormControl<string>;
"header-hover-color": _angular_forms.FormControl<string>;
"navigator-bg-color": _angular_forms.FormControl<string>;
"navigator-active-bg": _angular_forms.FormControl<string>;
"navigator-border-active": _angular_forms.FormControl<string>;
"navigator-header-bg": _angular_forms.FormControl<string>;
"navigator-title-color": _angular_forms.FormControl<string>;
"navigator-separator-color": _angular_forms.FormControl<string>;
"navigator-text-color": _angular_forms.FormControl<string>;
"navigator-color-active": _angular_forms.FormControl<string>;
"right-drawer-background-default": _angular_forms.FormControl<string>;
"right-drawer-text-color-default": _angular_forms.FormControl<string>;
"right-drawer-separator-color": _angular_forms.FormControl<string>;
"right-drawer-link-color": _angular_forms.FormControl<string>;
"right-drawer-link-color-hover": _angular_forms.FormControl<string>;
"right-drawer-text-color-muted": _angular_forms.FormControl<string>;
}>;
applyStateToForm(branding: BrandingOptionsJson): void;
convertFormToState(value: BrandingThemeFormComponent['formGroup']['value']): string;
private getPrefix;
static ɵfac: i0.ɵɵFactoryDeclaration<BrandingThemeFormComponent, never>;
static ɵcmp: i0.ɵɵComponentDeclaration<BrandingThemeFormComponent, "c8y-branding-theme-form", never, {}, {}, never, never, true, never>;
}
declare class EditBrandingRouterOutletComponent implements OnDestroy {
private activatedRoute;
private store;
private router;
private alert;
private applyBrandingService;
private appState;
brandingName$: Observable<string>;
formControl: FormControl<string>;
fallbackBranding$: Observable<BrandingOptionsJson>;
tabName$: Observable<string>;
isGlobalBranding$: Observable<boolean>;
private newBranding;
private currentlyDisplayedComponent;
constructor(activatedRoute: ActivatedRoute, store: StoreBrandingService, router: Router, alert: AlertService, applyBrandingService: ApplyBrandingLocallyService, appState: AppStateService);
ngOnDestroy(): void;
routeActivated(event: ControlValueAccessor & Partial<AsyncValidator>): void;
saveBranding(): Promise<void>;
cancel(): void;
openPreview(): Promise<void>;
markAsActive(): Promise<void>;
onBrandingVarChanges(value: string): Promise<void>;
private cleanUpObjects;
static ɵfac: i0.ɵɵFactoryDeclaration<EditBrandingRouterOutletComponent, never>;
static ɵcmp: i0.ɵɵComponentDeclaration<EditBrandingRouterOutletComponent, "c8y-edit-branding-router-outlet", never, {}, {}, never, never, true, never>;
}
declare class BrandingTagsCellRendererComponent {
private appState;
hasLatestTag: boolean;
appContextPathsOrApps$: Observable<Array<string | IApplication>>;
constructor(context: CellRendererContext, appState: AppStateService);
private getAppContextPathsOrApps$;
static ɵfac: i0.ɵɵFactoryDeclaration<BrandingTagsCellRendererComponent, never>;
static ɵcmp: i0.ɵɵComponentDeclaration<BrandingTagsCellRendererComponent, "c8y-branding-tags-cell-renderer", never, {}, {}, never, never, true, never>;
}
declare class BrandingImportModalComponent {
private addBrandingModalService;
private zip;
private staticAssets;
private brandings;
modal: ModalComponent;
result: Promise<void>;
files: DroppedFile[];
loading: boolean;
private _resovle;
private _reject;
constructor(addBrandingModalService: AddBrandingModalService, zip: ZipService, staticAssets: StaticAssetsService, brandings: StoreBrandingService);
droppedFile(event: DroppedFile[]): Promise<void>;
import(file: File): Promise<void>;
cancel(): void;
static ɵfac: i0.ɵɵFactoryDeclaration<BrandingImportModalComponent, never>;
static ɵcmp: i0.ɵɵComponentDeclaration<BrandingImportModalComponent, "c8y-branding-import-modal", never, {}, {}, never, never, true, never>;
}
declare class BrandingTagsHeaderCellRendererComponent {
readonly heading: "Applied to";
readonly popoverContent: "<p class=\"m-b-8\">Branding can be applied at two levels</p>\n <ul class=\"list-unstyled m-b-0\">\n <li class=\"m-b-4\">\n <strong>Global: </strong>\n <span>Applied to the entire platform, affecting all apps and interfaces.</span>\n </li>\n <li>\n <strong>App-specific: </strong>\n <span>Applied only to selected apps within the platform.</span>\n </li>\n </ul>";
static ɵfac: i0.ɵɵFactoryDeclaration<BrandingTagsHeaderCellRendererComponent, never>;
static ɵcmp: i0.ɵɵComponentDeclaration<BrandingTagsHeaderCellRendererComponent, "c8y-branding-tags-header-cell-renderer", never, {}, {}, never, never, true, never>;
}
declare class BrandingAssetsComponent {
private clipboard;
private filesService;
private translate;
filterOptions: ({
label: "All";
value: any[];
} | {
label: "Images";
value: string[];
} | {
label: "Fonts";
value: string[];
})[];
supportedFileExtensions: any[] | string[];
constructor(clipboard: ClipboardService, filesService: FilesService, translate: TranslateService);
onItemSelected(file: StaticAsset): void;
static ɵfac: i0.ɵɵFactoryDeclaration<BrandingAssetsComponent, never>;
static ɵcmp: i0.ɵɵComponentDeclaration<BrandingAssetsComponent, "c8y-branding-assets", never, {}, {}, never, never, true, never>;
}
export { ApplyBrandingToAppService, BrandingAssetsComponent, BrandingComponent, BrandingFormComponent, BrandingImportModalComponent, BrandingImportModalService, BrandingTagsCellRendererComponent, BrandingTagsHeaderCellRendererComponent, BrandingThemeFormComponent, EditBrandingRouterOutletComponent };
//# sourceMappingURL=index.d.ts.map