/** * This package contains various extensions on top of the stable components included in GoodData.UI. * * @remarks * The extensions land here instead of their own project as part of their staged development. * * Notable member of the package is InsightView, the component that allows you to embed * Analytical Designer insights. * * @packageDocumentation */ import { AutomationType } from '@gooddata/sdk-backend-spi'; import { ChartInlineVisualizationType } from '@gooddata/sdk-ui-charts'; import { ComponentType } from 'react'; import { CopyCodeOriginType } from '@gooddata/sdk-ui-kit'; import { EmbedType } from '@gooddata/sdk-ui-kit'; import { ExplicitDrill } from '@gooddata/sdk-ui'; import { GoodDataSdkError } from '@gooddata/sdk-ui'; import { IAlertComparisonOperator } from '@gooddata/sdk-model'; import { IAlertRelativeArithmeticOperator } from '@gooddata/sdk-model'; import { IAlertRelativeOperator } from '@gooddata/sdk-model'; import { IAnalyticalBackend } from '@gooddata/sdk-backend-spi'; import { IAutomationMetadataObject } from '@gooddata/sdk-model'; import { ICatalogAttributeHierarchy } from '@gooddata/sdk-model'; import { IChartConfig } from '@gooddata/sdk-ui-charts'; import { IColorPalette } from '@gooddata/sdk-model'; import { IDashboardUrlBuilder } from '@gooddata/sdk-ui'; import { IDrillEvent } from '@gooddata/sdk-ui'; import { IDrillEventIntersectionElement } from '@gooddata/sdk-ui'; import { IErrorProps } from '@gooddata/sdk-ui'; import { IExecutionConfig } from '@gooddata/sdk-model'; import { IFilter } from '@gooddata/sdk-model'; import { IGeoConfig } from '@gooddata/sdk-ui-geo'; import { IInsight } from '@gooddata/sdk-model'; import { IInsightDefinition } from '@gooddata/sdk-model'; import { IInsightWidget } from '@gooddata/sdk-model'; import { ILoadingProps } from '@gooddata/sdk-ui'; import { ILocale } from '@gooddata/sdk-ui'; import { INotification } from '@gooddata/sdk-model'; import { IntlShape } from 'react-intl'; import { IPivotTableConfig } from '@gooddata/sdk-ui-pivot'; import { ISettings } from '@gooddata/sdk-model'; import { ITab } from '@gooddata/sdk-ui-kit'; import { ITheme } from '@gooddata/sdk-model'; import { IUserWorkspaceSettings } from '@gooddata/sdk-backend-spi'; import { IVisualizationCallbacks } from '@gooddata/sdk-ui'; import { IWidgetUrlBuilder } from '@gooddata/sdk-ui'; import { IWorkspacePermissions } from '@gooddata/sdk-model'; import { JSX } from 'react/jsx-runtime'; import { LocalIdRef } from '@gooddata/sdk-model'; import { ObjRef } from '@gooddata/sdk-model'; import { OnError } from '@gooddata/sdk-ui'; import { PivotTableNextConfig } from '@gooddata/sdk-ui-pivot/next'; import { ReactElement } from 'react'; import { ReactNode } from 'react'; import { RefObject } from 'react'; import { UiAsyncTableVariant } from '@gooddata/sdk-ui-kit'; import { UiSkeleton } from '@gooddata/sdk-ui-kit'; import { UseCancelablePromiseStatus } from '@gooddata/sdk-ui'; /** * @internal */ export declare const AddDataSourceToSubjects: { (props: IAddDataSourceToSubjectsProps): JSX.Element; displayName: string | undefined; }; /** * @internal */ export declare function addIntersectionFiltersToInsight(source: IInsight, intersection: IDrillEventIntersectionElement[] | undefined | null, backendSupportsElementUris: boolean): IInsight; /** * @internal */ export declare const AddUserGroupsToUsersDialog: { (props: IAddUserGroupsToUsersDialogProps): JSX.Element; displayName: string | undefined; }; /** * @internal */ export declare const AddUsersToUserGroupsDialog: { (props: IAddUsersToUserGroupsDialogProps): JSX.Element; displayName: string | undefined; }; /** * @internal */ export declare const AddWorkspaceToSubjects: { (props: IAddWorkspaceToSubjectsProps): JSX.Element; displayName: string | undefined; }; /** * @internal */ export declare const AI_OPERATOR = "AI"; /** * @internal */ export declare const AI_OPERATORS: { readonly ANOMALY_DETECTION: "ANOMALY_DETECTION"; }; /** * @internal */ export declare const ARITHMETIC_OPERATORS: { readonly ARITHMETIC_OPERATOR_DIFFERENCE: "DIFFERENCE"; readonly ARITHMETIC_OPERATOR_CHANGE: "CHANGE"; }; /** * * @internal */ export declare function AttributeHierarchyDetailBubble({ children, className }: IAttributeHierarchyDetailBubbleProps): JSX.Element; /** * * @internal */ export declare function AttributeHierarchyDetailPanel({ title, description, attributes, onEdit }: IAttributeHierarchyDetailPanelProps): JSX.Element; /** * @internal */ export declare function AttributeHierarchyDialog({ initialAttributeRef, editingAttributeHierarchy, onClose, onSaveOrUpdateSuccess, onDeleteSuccess, onAddAttributeClicked, onCreateHierarchyClicked }: IAttributeHierarchyDialogProps): JSX.Element; /** * Automation column definition * @internal */ export declare type AutomationColumnDefinition = { name: AutomationsColumnName; width?: number; minWidth?: number; }; /** * Automation column definitions * @internal */ export declare type AutomationColumnDefinitions = Array; /** * Internal component for displaying automations. * * @internal */ export declare function Automations({ backend, scope, workspace, organization, locale, timezone, selectedColumnDefinitions, preselectedFilters, availableFilters, maxHeight, pageSize, type, tableVariant, isMobileView, enableBulkActions, externalInvalidationId, renderToolbarCustomElement, dashboardUrlBuilder, widgetUrlBuilder, editAutomation, onLoad }: IAutomationsProps): JSX.Element; /** * Available filters configuration * @internal */ export declare type AutomationsAvailableFilters = Array; /** * All available automation column names * @internal */ export declare type AutomationsColumnName = CommonAutomationsColumnName | ScheduleAutomationsColumnName; /** * Automation filter names * @internal */ export declare type AutomationsFilterName = "dashboard" | "workspace" | "createdBy" | "recipients" | "status"; /** * Automation filter preselect names * @internal */ export declare type AutomationsFilterPreselectName = AutomationsFilterName | "externalRecipients"; /** * Automation filter preselect value * @internal */ export declare type AutomationsFilterPreselectValue = { value: string; label?: string; }; /** * Callback function to be called when automations are loaded * @internal */ export declare type AutomationsOnLoad = (items: Array, isInitial: boolean) => void; /** * Preselected filters configuration * @internal */ export declare type AutomationsPreselectedFilters = Partial>>; /** * Automation scope * @internal */ export declare type AutomationsScope = "workspace" | "organization"; /** * @internal */ export declare type AutomationsType = Extract; export { ChartInlineVisualizationType } /** * Clears all the caches used by the InsightView components. * * @public */ export declare function clearInsightViewCaches(): void; /** * Common automation columns available for all automation types * @internal */ export declare type CommonAutomationsColumnName = "id" | "title" | "dashboard" | "recipients" | "lastRun" | "lastRunStatus" | "createdBy" | "createdAt" | "notificationChannel" | "workspace" | "menu" | "state" | "widget"; /** * @internal */ export declare const COMPARISON_OPERATORS: { readonly COMPARISON_OPERATOR_LESS_THAN: "LESS_THAN"; readonly COMPARISON_OPERATOR_LESS_THAN_OR_EQUAL_TO: "LESS_THAN_OR_EQUAL_TO"; readonly COMPARISON_OPERATOR_GREATER_THAN: "GREATER_THAN"; readonly COMPARISON_OPERATOR_GREATER_THAN_OR_EQUAL_TO: "GREATER_THAN_OR_EQUAL_TO"; }; /** * @internal */ export declare const CreateUserGroupDialog: { (props: ICreateUserGroupDialogProps): JSX.Element; displayName: string | undefined; }; /** * @internal */ export declare const DASHBOARD_LAYOUT_DEFAULT_VIS_HEIGHT_PX = 450; /** * @internal */ export declare const DASHBOARD_LAYOUT_WIDGET_SIZE_INFO_DEFAULT: IVisualizationDefaultSizeInfo; /** * @internal */ export declare type DataSourcePermission = "USE" | "MANAGE"; /** * @internal */ export declare type DataSourcePermissionSubject = "user" | "userGroup"; /** * Default implementation of the Notification component. * * @public */ export declare function DefaultNotification({ notification, markNotificationAsRead, onNotificationClick, closeNotificationsPanel }: INotificationComponentProps): JSX.Element; /** * Default implementation of the NotificationSkeletonItem component. * * @public */ export declare const DefaultNotificationSkeletonItem: typeof UiSkeleton; /** * Default implementation of the NotificationsList component. * * @public */ export declare function DefaultNotificationsList({ Notification, NotificationsListEmptyState, NotificationsListErrorState, NotificationSkeletonItem, activeView, status, error, activeNotifications, markNotificationAsRead, onNotificationClick, hasNextPage, loadNextPage, itemHeight, itemsGap, itemPadding, skeletonItemsCount, maxListHeight, closeNotificationsPanel }: INotificationsListComponentProps): JSX.Element; /** * Default implementation of the NotificationsListEmptyState component. * * @public */ export declare function DefaultNotificationsListEmptyState({ activeView }: INotificationsListEmptyStateComponentProps): JSX.Element; /** * Default implementation of the NotificationsListErrorState component. * * @public */ export declare function DefaultNotificationsListErrorState({ error }: INotificationsListErrorStateComponentProps): JSX.Element; /** * Default implementation of the NotificationsPanel component. * * @public */ export declare function DefaultNotificationsPanel({ NotificationsPanelHeader, NotificationsList, NotificationsListEmptyState, NotificationsListErrorState, Notification, NotificationSkeletonItem, activeView, changeActiveView, markNotificationAsRead, markAllNotificationsAsRead, unreadNotificationsCount, hasUnreadNotifications, activeNotifications, onNotificationClick, closeNotificationsPanel, status, error, loadNextPage, hasNextPage, itemHeight, itemsGap, itemPadding, skeletonItemsCount, maxListHeight }: INotificationsPanelComponentProps): JSX.Element; /** * @internal */ export declare function DefaultNotificationsPanelButton({ buttonRef, isNotificationPanelOpen, toggleNotificationPanel, hasUnreadNotifications }: INotificationsPanelButtonComponentProps): JSX.Element; /** * Default implementation of the notifications panel header. * * @public */ export declare function DefaultNotificationsPanelHeader({ activeView, changeActiveView, markAllNotificationsAsRead, hasUnreadNotifications, unreadNotificationsCount }: INotificationsPanelHeaderComponentProps): JSX.Element; /** * @internal */ export declare const DeleteUserDialog: { (props: IDeleteUserDialogProps): JSX.Element; displayName: string | undefined; }; /** * @internal */ export declare const DeleteUserGroupDialog: { (props: IDeleteUserGroupDialogProps): JSX.Element; displayName: string | undefined; }; /** * @internal */ export declare const DeleteUserGroupsDialog: { (props: IDeleteUserGroupsDialogProps): JSX.Element; displayName: string | undefined; }; /** * @internal */ export declare const DeleteUsersDialog: { (props: IDeleteUsersDialogProps): JSX.Element; displayName: string | undefined; }; /** * @internal */ export declare function EmbedInsightDialog(props: IEmbedInsightDialogProps): JSX.Element; /** * @alpha */ export declare class EmptyAfmSdkError extends GoodDataSdkError { readonly pveType: PluggableVisualizationErrorType; constructor(cause?: Error); getErrorCode(): string; } /** * @alpha */ export declare class FluidLayoutDescriptor implements IFluidLayoutDescriptor { type: "fluid"; gridColumnsCount: number; gridRowHeight: number; toGridHeight(heightPx: number): number; toHeightInPx(height: number): number; } /** * @alpha */ export declare const fluidLayoutDescriptor: FluidLayoutDescriptor; /** * @internal */ export declare const getComparisonOperatorTitle: (operator: IAlertComparisonOperator, intl: IntlShape) => string; /** * @internal */ export declare function getInsightSizeInfo(insight: IInsightDefinition, settings: ISettings): IVisualizationSizeInfo; /** * @internal */ export declare function getInsightVisualizationMeta(insight: IInsightDefinition, settings?: ISettings): IVisualizationMeta; /** * @internal */ export declare function getInsightWithAppliedDrillDown(insight: IInsight, drillEvent: IDrillEvent, drillDefinition: IDrillDownDefinition, backendSupportsElementUris: boolean, settings: ISettings): IInsight; /** * @internal */ export declare const getRelativeOperatorTitle: (operator: IAlertRelativeOperator, art: IAlertRelativeArithmeticOperator, intl: IntlShape) => string; /** * @internal */ export declare interface IAddDataSourceToSubjectsProps extends IWithTelemetryProps { ids: string[]; subjectType: DataSourcePermissionSubject; organizationId: string; onSuccess: () => void; onClose: () => void; renderDataSourceIcon?: (dataSource: IGrantedDataSource) => ReactElement; } /** * @internal */ export declare interface IAddUserGroupsToUsersDialogProps extends IWithTelemetryProps { userIds: string[]; organizationId: string; onSuccess: () => void; onClose: () => void; } /** * @internal */ export declare interface IAddUsersToUserGroupsDialogProps extends IWithTelemetryProps { userGroupIds: string[]; organizationId: string; onSuccess: () => void; onClose: () => void; } /** * @internal */ export declare interface IAddWorkspaceToSubjectsProps extends IWithTelemetryProps { ids: string[]; subjectType: WorkspacePermissionSubject; organizationId: string; onSuccess: () => void; onClose: () => void; areFilterViewsEnabled?: boolean; } /** * * @internal */ export declare interface IAttributeHierarchyDetailBubbleProps { className?: string; children?: ReactNode; } /** * * @internal */ export declare interface IAttributeHierarchyDetailItem { title: string; isDate: boolean; } /** * * @internal */ export declare interface IAttributeHierarchyDetailPanelProps { title: string; description?: string; attributes: IAttributeHierarchyDetailItem[]; onEdit?: () => void; } /** * @internal */ export declare interface IAttributeHierarchyDialogProps { initialAttributeRef?: ObjRef; editingAttributeHierarchy?: ICatalogAttributeHierarchy; onClose?: () => void; onSaveOrUpdateSuccess?: (attributeHierarchy: ICatalogAttributeHierarchy) => void; onDeleteSuccess?: () => void; onAddAttributeClicked?: () => void; onCreateHierarchyClicked?: () => void; } /** * @internal */ export declare interface IAutomationsProps { backend?: IAnalyticalBackend; scope: AutomationsScope; workspace?: string; organization?: string; locale?: string; timezone?: string; selectedColumnDefinitions?: AutomationColumnDefinitions; availableFilters?: AutomationsAvailableFilters; preselectedFilters?: AutomationsPreselectedFilters; maxHeight?: number; pageSize?: number; type?: AutomationsType; tableVariant?: UiAsyncTableVariant; isMobileView?: boolean; enableBulkActions?: boolean; /** * External invalidation ID. When this value changes, the automations list will be reloaded. * This allows parent components to trigger a refresh without callback/ref patterns. * If not provided or set to 0, the automations list will not be reloaded. */ externalInvalidationId?: number; renderToolbarCustomElement?: () => ReactNode; onLoad?: AutomationsOnLoad; dashboardUrlBuilder?: IDashboardUrlBuilder; widgetUrlBuilder?: IWidgetUrlBuilder; editAutomation?: IEditAutomation; } /** * @internal */ export declare interface ICreateUserGroupDialogProps extends IWithTelemetryProps { organizationId: string; onSuccess: () => void; onCancel: () => void; } /** * @internal */ export declare interface IDeleteUserDialogProps extends IWithTelemetryProps { userId: string; organizationId: string; onSuccess: () => void; onClose: () => void; } /** * @internal */ export declare interface IDeleteUserGroupDialogProps extends IWithTelemetryProps { userGroupId: string; organizationId: string; onSuccess: () => void; onClose: () => void; } /** * @internal */ export declare interface IDeleteUserGroupsDialogProps extends IWithTelemetryProps { userGroupIds: string[]; organizationId: string; onSuccess: () => void; onClose: () => void; } /** * @internal */ export declare interface IDeleteUsersDialogProps extends IWithTelemetryProps { userIds: string[]; organizationId: string; onSuccess: () => void; onClose: () => void; } /** * Information about the DrillDown interaction - the attribute that is next in the drill down hierarchy. * @beta */ export declare interface IDrillDownDefinition { type: "drillDown"; /** * Local identifier of the attribute that triggered the drill down. */ origin: LocalIdRef; /** * Target attribute display form for drill down. */ target: ObjRef; } /** * @internal */ export declare interface IEditAutomation { (automation: IAutomationMetadataObject, workspaceId: string | undefined, dashboardId: string | undefined): void; } /** * @internal */ export declare interface IEmbedInsightDialogProps { insight: IInsight; locale?: string; backend?: IAnalyticalBackend; reactIntegrationDocLink?: string; webComponentIntegrationDocLink?: string; saveInsightDocLink?: string; settings?: IUserWorkspaceSettings; colorPalette?: IColorPalette; theme?: ITheme; executionConfig?: IExecutionConfig; workspaceId?: string; showWebComponentsTab?: boolean; openSaveInsightDialog: () => void; onClose: () => void; onCopyCode: (code: string, type: CopyCodeOriginType, codeType: EmbedType) => void; } /** * Fluid Layout descriptor. * Provides parameters of fluid layout. * * @alpha */ export declare interface IFluidLayoutDescriptor extends ILayoutDescriptor { type: "fluid"; /** * Total number of grid columns. Used if visualization should take 100% width by its size */ gridColumnsCount: number; /** * Height of one grid row in px. It is used for conversion of height between grid rows and px */ gridRowHeight: number; /** * Converts height in px to the height in layout units */ toGridHeight(heightPx: number): number; /** * Converts height in layout units to the height in px */ toHeightInPx(height: number): number; } /** * @internal */ export declare interface IGrantedDataSource { id: string; title: string; permission: DataSourcePermission; } /** * @internal */ export declare interface IInsightErrorProps { error: GoodDataSdkError; ErrorComponent?: ComponentType; height?: number | string | null; clientHeight?: number; } /** * @internal */ export declare interface IInsightRendererProps extends Omit { insight: IInsightDefinition | undefined; locale: ILocale; settings: IUserWorkspaceSettings | undefined; permissions?: IWorkspacePermissions; colorPalette: IColorPalette | undefined; onError?: OnError; theme?: ITheme; afterRender?: () => void; /** * Widget data containing title and other metadata. * When provided, the widget title and description will be passed through to the chart configuration. */ widget?: IInsightWidget; } /** * @public */ export declare interface IInsightTitleProps { title: string; } /** * @public */ export declare interface IInsightViewProps extends Partial { /** * Backend to work with. * * Note: the backend must come either from this property or from BackendContext. If you do not specify * backend here, then the executor MUST be rendered within an existing BackendContext. */ backend?: IAnalyticalBackend; /** * Workspace where the insight exists. * * Note: the workspace must come either from this property or from WorkspaceContext. If you do not specify * workspace here, then the executor MUST be rendered within an existing WorkspaceContext. */ workspace?: string; /** * Reference to the insight to render. This can be specified by either object reference using URI or using identifier. * * For convenience it is also possible to specify just the identifier of the insight. */ insight: ObjRef | string; /** * Additional filters to apply on top of the insight. */ filters?: IFilter[]; /** * Configure chart drillability; e.g. which parts of the charts can be clicked. */ drillableItems?: ExplicitDrill[]; /** * Configure color palette to use for the chart. If you do not specify this, then the palette will be * obtained from style settings stored on the backend. */ colorPalette?: IColorPalette; /** * When embedding insight rendered by a chart, you can specify extra options to merge with existing * options saved for the insight. */ config?: IChartConfig | IGeoConfig | IPivotTableConfig | PivotTableNextConfig | any; /** * execConfig will provide the execution with necessary settings before initiating execution. */ execConfig?: IExecutionConfig; /** * Locale to use for localization of texts appearing in the chart. * * Note: text values coming from the data itself are not localized. */ locale?: ILocale; /** * Indicates that the execution to obtain the data for the insight should be an 'execution by reference'. * * Execution by reference means that the InsightView will ask analytical backend to compute results for an insight * which is stored on the backend by specifying link to the insight, additional filters and description how * to organize the data. * * Otherwise, a freeform execution is done, in which the InsightView will send to backend the full execution * definition of what to compute. * * This distinction is in place because some backends MAY want to prohibit users from doing freeform executions * and only allow computing data for set of insights created by admins. * * Note: the need for execute by reference is rare. You will typically be notified by the solution admin to use * this mode. */ executeByReference?: boolean; /** * In case this property is boolean it indicates that the title component will be rendered if specified in * components properties. In case the property is string, this string must not be empty and will be shown as insight * title. In case the property is a function, it should be implemented to take the loaded insight object and return * modified title in string representation. */ showTitle?: boolean | string | ((insight: IInsight) => string | undefined); /** * Called when the insight is loaded. This is to allow the embedding code to read the insight data. */ onInsightLoaded?: (insight: IInsight) => void; /** * Component to render if embedding fails. */ ErrorComponent?: ComponentType; /** * Component to render while the insight is loading. */ LoadingComponent?: ComponentType; /** * Component to render insight title. */ TitleComponent?: ComponentType; } /** * Layout descriptor. * Provides parameters of used layout. * * @alpha */ export declare interface ILayoutDescriptor { type: LayoutType; } /** * Props for the Notification component. * * @public */ export declare interface INotificationComponentProps { /** * Notification to display. */ notification: INotification; /** * Function to mark notification as read. */ markNotificationAsRead: (id: string) => void; /** * Function to handle notification click. */ onNotificationClick?: (notification: INotification) => void; /** * Function to handle closing the overlay */ closeNotificationsPanel: () => void; } /** * Props for the NotificationSkeletonItem component. * * @public */ export declare interface INotificationSkeletonItemComponentProps { /** * Height of the skeleton item in pixels. */ itemHeight: number; } /** * Props for the NotificationsList component. * * @public */ export declare interface INotificationsListComponentProps { /** * Component to render when the notifications list is empty. */ NotificationsListEmptyState: ComponentType; /** * Component to render when the notifications list is in error state. */ NotificationsListErrorState: ComponentType; /** * Component to render each notification. */ Notification: ComponentType; /** * Component to render each skeleton item. */ NotificationSkeletonItem: ComponentType; /** * Active view of the notifications list. */ activeView: INotificationsPanelView; /** * Status of the notifications list. */ status: UseCancelablePromiseStatus; /** * Error to display. */ error?: GoodDataSdkError; /** * Loaded notifications relevant to the active view. */ activeNotifications?: INotification[]; /** * Callback function to mark notification as read. */ markNotificationAsRead: (notificationId: string) => Promise; /** * Callback function to handle notification click. */ onNotificationClick?: (notification: INotification) => void; /** * Whether there is a next page of notifications. */ hasNextPage: boolean; /** * Load next page of notifications. */ loadNextPage: () => void; /** * Height of the notification item in pixels. */ itemHeight: number; /** * Gap between notification items in pixels. */ itemsGap: number; /** * Padding of the notification item (from left/right) in pixels. */ itemPadding: number; /** * Number of skeleton items to render when loading notifications. */ skeletonItemsCount: number; /** * Maximum height of the notifications list in pixels. */ maxListHeight?: number; /** * Callback function to close the notifications panel. */ closeNotificationsPanel: () => void; } /** * Props for the NotificationsListEmptyState component. * * @public */ export declare interface INotificationsListEmptyStateComponentProps { /** * Active view of the notifications list. */ activeView: INotificationsPanelView; } /** * Props for the NotificationsListErrorState component. * * @public */ export declare interface INotificationsListErrorStateComponentProps { /** * Error to display. */ error?: GoodDataSdkError; } /** * OpenNotificationsPanelButton component props. * * @public */ export declare interface INotificationsPanelButtonComponentProps { /** * Ref to the button element - is required for proper alignment of the notification panel. */ buttonRef: RefObject; /** * Opens the notification panel. */ openNotificationPanel: () => void; /** * Closes the notification panel. */ closeNotificationPanel: () => void; /** * Toggles the notification panel. */ toggleNotificationPanel: () => void; /** * Indicates whether the notification panel is open. */ isNotificationPanelOpen: boolean; /** * Indicates whether there are unread notifications. */ hasUnreadNotifications: boolean; } /** * NotificationsPanel component props. * * @public */ export declare interface INotificationsPanelComponentProps { /** * Custom notifications panel header component. */ NotificationsPanelHeader: ComponentType; /** * Custom notifications list component. */ NotificationsList: ComponentType; /** * Custom notifications list empty state component. */ NotificationsListEmptyState: ComponentType; /** * Custom notifications list error state component. */ NotificationsListErrorState: ComponentType; /** * Custom notification component. */ Notification: ComponentType; /** * Custom notification skeleton item component. */ NotificationSkeletonItem: ComponentType; /** * The callback to toggle the notifications panel. */ toggleNotificationsPanel: () => void; /** * The callback to open the notifications panel. */ openNotificationsPanel: () => void; /** * The callback to close the notifications panel. */ closeNotificationsPanel: () => void; /** * The currently active view of the notifications panel. */ activeView: INotificationsPanelView; /** * The callback to change the active view of the notifications panel. */ changeActiveView: (view: INotificationsPanelView) => void; /** * The callback to mark a notification as read. */ markNotificationAsRead: (notificationId: string) => Promise; /** * The callback to mark all notifications as read. */ markAllNotificationsAsRead: () => Promise; /** * The number of unread notifications. */ unreadNotificationsCount: number; /** * Indicates if there are unread notifications. */ hasUnreadNotifications: boolean; /** * Loaded notifications, relevant for the currently active view. */ activeNotifications: INotification[]; /** * The callback to handle a notification click. */ onNotificationClick?: (notification: INotification) => void; /** * The status of the notifications loading. */ status: UseCancelablePromiseStatus; /** * The error that occurred while loading notifications. */ error?: GoodDataSdkError; /** * The callback to load the next page of notifications. */ loadNextPage: () => void; /** * Indicates if there is a next page of notifications. */ hasNextPage: boolean; /** * The height of the notification item in pixels. */ itemHeight: number; /** * Gap between notification items in pixels. */ itemsGap: number; /** * Padding of the notification item (from left/right) in pixels. */ itemPadding: number; /** * Number of skeleton items to render when loading notifications. */ skeletonItemsCount: number; /** * Maximum height of the notifications list in pixels. */ maxListHeight?: number; } /** * @public */ export declare interface INotificationsPanelCustomComponentsProps { /** * Custom open notifications panel button component. * * - Required if renderInline is not enabled. */ NotificationsPanelButton?: ComponentType; /** * Custom notifications panel component. */ NotificationsPanel?: ComponentType; /** * Custom notifications panel header component. */ NotificationsPanelHeader?: ComponentType; /** * Custom notifications list component. */ NotificationsList?: ComponentType; /** * Custom notifications list empty state component. */ NotificationsListEmptyState?: ComponentType; /** * Custom notifications list error state component. */ NotificationsListErrorState?: ComponentType; /** * Custom notification component. */ Notification?: ComponentType; /** * Custom notification skeleton item component. */ NotificationSkeletonItem?: ComponentType; } /** * Props for the NotificationsPanelHeader component. * * @public */ export declare interface INotificationsPanelHeaderComponentProps { /** * The currently active view of the notifications panel. */ activeView: INotificationsPanelView; /** * The callback to change the active view. */ changeActiveView: (view: INotificationsPanelView) => void; /** * Indicates if there are unread notifications. */ hasUnreadNotifications: boolean; /** * The number of unread notifications. */ unreadNotificationsCount: number; /** * The callback to mark all notifications as read. */ markAllNotificationsAsRead: () => void; } /** * @public */ export declare interface INotificationsPanelProps extends INotificationsPanelCustomComponentsProps { /** * Locale to use. */ locale?: ILocale; /** * Backend to use. * * - If not defined, the backend from the BackendProvider context will be used. */ backend?: IAnalyticalBackend; /** * Workspace ID to use. * * - If not defined, the workspace ID from the WorkspaceProvider context will be used. * - If workspace is not defined and there is no WorkspaceProvider, notifications will be loaded from all workspaces. */ workspace?: string; /** * Enable inline rendering of the notifications panel * * - Default: false * - If enabled, NotificationsPanelButton won't be rendered, and NotificationsPanel won't be rendered inside modal * - This is useful when you want to render notifications panel in a custom modal. */ renderInline?: boolean; /** * Refresh interval in milliseconds. * * - Default: 600000 (10 minutes) * - If set to 0, notifications won't be refreshed automatically. */ refreshInterval?: number; /** * Number of notifications to load per page. * * - Default: 50 */ itemsPerPage?: number; /** * Number of skeleton items to render when loading notifications. * * - Default: 5 */ skeletonItemsCount?: number; /** * Height of the item in notifications list in pixels. * * - Default: 52 */ itemHeight?: number; /** * Optionally override max width of the notifications panel. * * - Does not have effect when renderInline is true - inline rendering always fills the parent container. */ maxWidth?: number | string; /** * Maximum height of the notifications list in pixels. * * - Default: 527 * - Does not have effect when renderInline is true - inline rendering always fills the parent container. */ maxListHeight?: number; /** * Gap between notification items in the list in pixels. * * - Default: 10 */ itemsGap?: number; /** * Padding of the notification item (from left and right) in pixels. * * - Default: 15 */ itemPadding?: number; /** * Callback for notification click. */ onNotificationClick?: (notification: INotification) => void; /** * Enable export to document storage. * * - Default: false */ enableScheduleNotifications?: boolean; } /** * View mode of the notifications panel. * * @public */ export declare type INotificationsPanelView = "all" | "unread"; /** * @internal */ export declare const INSIGHT_WIDGET_SIZE_INFO_DEFAULT: IVisualizationDefaultSizeInfo; /** * @internal */ export declare const INSIGHT_WIDGET_SIZE_INFO_NEW_DEFAULT: IVisualizationDefaultSizeInfo; /** * @internal */ export declare function InsightError({ error, ErrorComponent, height, clientHeight }: IInsightErrorProps): JSX.Element; /** * Renders insight passed as a parameter. * * @internal */ export declare function InsightRenderer(props: IInsightRendererProps): JSX.Element | null; /** * Renders insight which was previously created and saved in the Analytical Designer. * * @public */ export declare function InsightView(props: IInsightViewProps): JSX.Element; /** * Type-guard testing whether the provided object is an instance of {@link IDrillDownDefinition}. * @beta */ export declare function isDrillDownDefinition(obj: unknown): obj is IDrillDownDefinition; /** * @alpha */ export declare function isEmptyAfm(obj: unknown): obj is EmptyAfmSdkError; /** * @internal */ export declare const isInsightAlertingConfigurationEnabled: (insight: IInsightDefinition | IInsight | undefined) => boolean; /** * @internal */ export declare const isInsightKeyDriverAnalysisEnabled: (insight: IInsightDefinition | IInsight | undefined) => boolean; /** * @internal */ export declare const isInsightScheduledExportsConfigurationEnabled: (insight: IInsightDefinition | IInsight | undefined) => boolean; /** * @internal */ export declare const isInsightSupportedForAlerts: (insight: IInsightDefinition | IInsight | null | undefined) => boolean; /** * @internal */ export declare const isInsightSupportedForScheduledExports: (insight: IInsightDefinition | IInsight | null | undefined) => boolean; /** * Info about min, max and default in layout units. * If no value is provided for min/max/default layout will use its generic defaults for it. * * @alpha */ export declare interface ISizeInfo { default?: number; min?: number; max?: number; } /** * Info about min, max and default in layout units with required default value. * * @alpha */ export declare type ISizeInfoDefault = ISizeInfo & { default: number; }; /** * Type guard for ISizeInfoDefault * * @alpha */ export declare function isSizeInfo(obj: any): obj is ISizeInfo; /** * Type guard for ISizeInfoDefault * * @alpha */ export declare function isSizeInfoDefault(obj: any): obj is ISizeInfoDefault; /** * Type guard for IVisualizationDefaultSizeInfo * * @alpha */ export declare function isVisualizationDefaultSizeInfo(obj: any): obj is IVisualizationDefaultSizeInfo; /** * Tabs ids for insights paged list hook * @internal */ export declare interface ITabsIds { my: string; all: string; } /** * Config for useInsightPagedList hook * @internal */ export declare interface IUsePagedDropdownConfig { backend: IAnalyticalBackend; workspaceId: string; author: string | undefined; tabsIds: ITabsIds; tags?: string[]; excludeTags?: string[]; } /** * Result of useInsightPagedList hook * @internal */ export declare interface IUsePagedDropdownResult { items: IInsight[]; totalItemsCount: number | undefined; isLoading: boolean; isNextPageLoading: boolean; initialLoadCompleted: boolean; currentPage: number; search: string; selectedTabId: string; hasNextPage: boolean; skeletonItemsCount: number; fetchItems: (params: { page: number; search: string; tabId: string; resetItems?: boolean; }) => Promise; loadNextPage: () => void; onSearch: (searchString: string) => void; onTabSelect?: (tab: ITab) => void; reset: () => void; shouldLoadNextPage: (lastItemIndex: number, itemsCount: number) => boolean; loadInitialItems: () => void; resetItems: () => void; } /** * @internal */ export declare interface IUserEditDialogProps extends IWithTelemetryProps { userId: string; organizationId: string; isAdmin: boolean; initialView?: UserEditDialogMode; changeUserMembership?: boolean; onSuccess: () => void; onClose: () => void; renderDataSourceIcon?: (dataSource: IGrantedDataSource) => ReactElement; areFilterViewsEnabled?: boolean; selectedTab?: UserTabId; } /** * @internal */ export declare interface IUserGroupEditDialogProps extends IWithTelemetryProps { userGroupId: string; organizationId: string; isAdmin: boolean; initialView?: UserGroupEditDialogMode; onSuccess: () => void; onClose: () => void; renderDataSourceIcon?: (dataSource: IGrantedDataSource) => ReactElement; areFilterViewsEnabled?: boolean; } /** * Info about visualization's min, max and default for width and height with required default value. * * @alpha */ export declare interface IVisualizationDefaultSizeInfo { width: ISizeInfoDefault; height: ISizeInfoDefault; } /** * Metadata of the visualization. * * @privateRemarks * This should probably come from the visualizationClass objects, but that is not feasible right now. * * @alpha */ export declare interface IVisualizationMeta { /** * URL where documentation of the visualization can be found. */ documentationUrl?: string; /** * If true, the visualization supports being exported (if the currently used backend supports exports as well). */ supportsExport: boolean; /** * If true, the visualization supports zoom to detailed view. */ supportsZooming: boolean; } /** * Info about visualization's min, max and default for width and height. * * @alpha */ export declare interface IVisualizationSizeInfo { width: ISizeInfo; height: ISizeInfo; } /** * @internal */ export declare interface IWithTelemetryProps { onEvent: TrackEventCallback; } /** * @internal */ export declare const KPI_WIDGET_SIZE_INFO_DEFAULT: IVisualizationDefaultSizeInfo; /** * @alpha */ export declare type LayoutType = "fluid"; /** * @internal */ export declare const MIN_VISUALIZATION_WIDTH = 2; /** * @public */ export declare function NotificationsPanel(props: INotificationsPanelProps): JSX.Element; /** * @alpha */ export declare const PluggableVisualizationErrorCodes: { /** * If pluggable visualization is asked to render itself but its buckets do not contain the right 'stuff', * then this is the error code to communicate the fact. */ INVALID_BUCKETS: string; /** * If pluggable visualization is asked to render itself but its columns bucket do not contain the right 'stuff', * then this is the error code to communicate the fact. */ INVALID_COLUMNS: string; /** * This error means that empty AFM was went to the GoodData.UI and as such can't be executed. */ EMPTY_AFM: string; }; /** * @alpha */ export declare type PluggableVisualizationErrorType = keyof typeof PluggableVisualizationErrorCodes; /** * In order to use React18 for visualization rendering, one has to provide createRoot function. * Older React17 render is used by default. * @public * @deprecated no longer necessary to call this method. It's now no-op for React 18 and 19, kept for backward compatibility. */ export declare function provideCreateRoot(_fn: any): void; /** * @internal */ export declare const RELATIVE_OPERATORS: { readonly RELATIVE_OPERATOR_INCREASE_BY: "INCREASES_BY"; readonly RELATIVE_OPERATOR_DECREASE_BY: "DECREASES_BY"; readonly RELATIVE_OPERATOR_CHANGES_BY: "CHANGES_BY"; }; /** * @internal */ export declare const RICH_TEXT_WIDGET_SIZE_INFO_DEFAULT: IVisualizationDefaultSizeInfo; /** * @internal */ export declare const RICH_TEXT_WIDGET_SIZE_INFO_NEW_DEFAULT: IVisualizationDefaultSizeInfo; /** * Schedule-specific automation column names * @internal */ export declare type ScheduleAutomationsColumnName = "nextRun" | "attachments"; /** * @internal */ export declare type TelemetryEvent = "multiple-users-deleted" | "multiple-groups-deleted" | "group-deleted" | "user-deleted" | "group-created" | "user-detail-updated" | "group-detail-updated" | "groups-added-to-single-user" | "groups-added-to-multiple-users" | "users-added-to-single-group" | "users-added-to-multiple-groups" | "permission-added-to-single-user" | "permission-added-to-single-group" | "permission-added-to-multiple-users" | "permission-added-to-multiple-groups" | "user-permission-changed-to-hierarchy" | "user-permission-changed-to-single-workspace" | "group-permission-changed-to-hierarchy" | "group-permission-changed-to-single-workspace" | "user-permission-changed-to-view" | "group-permission-changed-to-view" | "user-permission-changed-to-view-save-views" | "group-permission-changed-to-view-save-views" | "user-permission-changed-to-view-export" | "group-permission-changed-to-view-export" | "user-permission-changed-to-view-export-save-views" | "group-permission-changed-to-view-export-save-views" | "user-permission-changed-to-analyze" | "group-permission-changed-to-analyze" | "user-permission-changed-to-analyze-export" | "group-permission-changed-to-analyze-export" | "user-permission-changed-to-manage" | "group-permission-changed-to-manage" | "user-data-source-permission-changed-to-use" | "group-data-source-permission-changed-to-use" | "user-data-source-permission-changed-to-manage" | "group-data-source-permission-changed-to-manage" | "user-role-changed-to-admin" | "user-role-changed-to-member"; /** * @internal */ export declare type TrackEventCallback = (event: TelemetryEvent) => void; /** * Hook to fetch insights paged list * @param backend - analytical backend * @param workspaceId - workspace id * @param author - author * @param tabsIds - tabs ids * @param tags - fetch only the insights with these tags * @param excludeTags - omit insights with these tags during fetch * @returns useInsightPagedList result * * @internal */ export declare function useInsightPagedList({ backend, workspaceId, author, tabsIds, tags, excludeTags }: IUsePagedDropdownConfig): IUsePagedDropdownResult; /** * @internal */ export declare const UserEditDialog: { (props: IUserEditDialogProps): JSX.Element; displayName: string | undefined; }; /** * @internal */ export declare type UserEditDialogMode = "VIEW" | "WORKSPACE" | "USER_GROUPS" | "DATA_SOURCES" | "DETAIL"; /** * @internal */ export declare const UserGroupEditDialog: { (props: IUserGroupEditDialogProps): JSX.Element; displayName: string | undefined; }; /** * @internal */ export declare type UserGroupEditDialogMode = "VIEW" | "WORKSPACE" | "USERS" | "DATA_SOURCES" | "DETAIL"; /** * @internal */ export declare type UserTabId = "WORKSPACES" | "USER_GROUPS" | "DETAILS" | "DATA_SOURCES"; /** * @internal */ export declare const VISUALIZATION_SWITCHER_WIDGET_SIZE_INFO_DEFAULT: IVisualizationDefaultSizeInfo; /** * @internal */ export declare const VISUALIZATION_SWITCHER_WIDGET_SIZE_INFO_NEW_DEFAULT: IVisualizationDefaultSizeInfo; /** * @internal */ export declare const WIDGET_DROPZONE_SIZE_INFO_DEFAULT: IVisualizationDefaultSizeInfo; /** * @internal */ export declare type WorkspacePermissionSubject = "user" | "userGroup"; export { }