UNPKG

@kinvolk/headlamp-plugin

Version:

The needed infrastructure for building Headlamp plugins.

113 lines (112 loc) 3.92 kB
import { IconProps } from '@iconify/react'; import { PayloadAction } from '@reduxjs/toolkit'; export declare enum DefaultSidebars { HOME = "HOME", IN_CLUSTER = "IN-CLUSTER" } /** * Represents an entry in the sidebar menu. */ export interface SidebarEntry { /** * Name of this SidebarItem. */ name: string; /** * Text to display under the name. */ subtitle?: string; /** * Label to display. */ label: string; /** * Name of the parent SidebarEntry. */ parent?: string | null; /** * URL to go to when this item is followed. */ url?: string; /** * Should URL have the cluster prefix? (default=true) */ useClusterURL?: boolean; /** * An iconify string or icon object that will be used for the sidebar's icon * * @see https://icon-sets.iconify.design/mdi/ for icons. */ icon?: IconProps['icon']; /** The sidebar to display this item in. If not specified, it will be displayed in the default sidebar. */ sidebar?: DefaultSidebars | string; } export interface SidebarState { /** * The currently selected item in the sidebar. */ selected: { item: string | null; sidebar: string | DefaultSidebars | null; }; /** * Is the sidebar visible? */ isVisible: boolean; /** * Is the sidebar open? */ isSidebarOpen?: boolean; /** * Was there user interaction to set the sidebar open? */ isSidebarOpenUserSelected?: boolean; /** * The entries in the sidebar. */ entries: { [propName: string]: SidebarEntry; }; /** * Filters to apply to the sidebar entries. */ filters: ((entry: SidebarEntry) => SidebarEntry | null)[]; } export declare function setInitialSidebarOpen(): { isSidebarOpen: boolean; isSidebarOpenUserSelected: undefined; }; export declare const initialState: SidebarState; declare const sidebarSlice: import("@reduxjs/toolkit").Slice<SidebarState, { /** * Sets the selected item in the sidebar. */ setSidebarSelected(state: import("immer").WritableDraft<SidebarState>, action: PayloadAction<{ item: string | null; sidebar: string | DefaultSidebars | null; }>): void; /** * Sets the visibility of the sidebar. */ setSidebarVisible(state: import("immer").WritableDraft<SidebarState>, action: PayloadAction<boolean>): void; /** * Sets an item in the sidebar. */ setSidebarItem(state: import("immer").WritableDraft<SidebarState>, action: PayloadAction<SidebarEntry>): void; /** * Sets a filter for sidebar items. */ setSidebarItemFilter(state: import("immer").WritableDraft<SidebarState>, action: PayloadAction<(entry: SidebarEntry) => SidebarEntry | null>): void; /** * Sets whether the sidebar is open or not. */ setWhetherSidebarOpen(state: import("immer").WritableDraft<SidebarState>, action: PayloadAction<boolean>): void; }, "sidebar", "sidebar", import("@reduxjs/toolkit").SliceSelectors<SidebarState>>; export declare const setSidebarSelected: import("@reduxjs/toolkit").ActionCreatorWithPayload<{ item: string | null; sidebar: string | DefaultSidebars | null; }, "sidebar/setSidebarSelected">, setSidebarVisible: import("@reduxjs/toolkit").ActionCreatorWithPayload<boolean, "sidebar/setSidebarVisible">, setSidebarItem: import("@reduxjs/toolkit").ActionCreatorWithPayload<SidebarEntry, "sidebar/setSidebarItem">, setSidebarItemFilter: import("@reduxjs/toolkit").ActionCreatorWithPayload<(entry: SidebarEntry) => SidebarEntry | null, "sidebar/setSidebarItemFilter">, setWhetherSidebarOpen: import("@reduxjs/toolkit").ActionCreatorWithPayload<boolean, "sidebar/setWhetherSidebarOpen">; export { sidebarSlice }; declare const _default: import("redux").Reducer<SidebarState>; export default _default;