mirror of
https://github.com/Azure/cosmos-explorer.git
synced 2025-12-29 13:51:49 +00:00
Compare commits
1 Commits
users/kche
...
fabricbot-
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
60af36b736 |
30
.github/fabricbot.json
vendored
Normal file
30
.github/fabricbot.json
vendored
Normal file
@@ -0,0 +1,30 @@
|
||||
{
|
||||
"version": "1.0",
|
||||
"tasks": [
|
||||
{
|
||||
"taskType": "trigger",
|
||||
"capabilityId": "AutoMerge",
|
||||
"subCapability": "AutoMerge",
|
||||
"version": "1.0",
|
||||
"id": "LUEPwPETV",
|
||||
"config": {
|
||||
"taskName": "Auto Merge",
|
||||
"label": "automerge",
|
||||
"minMinutesOpen": "5",
|
||||
"mergeType": "squash",
|
||||
"deleteBranches": true,
|
||||
"requireAllStatuses": true,
|
||||
"requireSpecificCheckRuns": false,
|
||||
"usePrDescriptionAsCommitMessage": true,
|
||||
"requireAllStatuses_exemptList": [
|
||||
"Azure Pipelines",
|
||||
"Dependabot",
|
||||
"GitHub Pages",
|
||||
"Check Enforcer"
|
||||
],
|
||||
"silentMode": true
|
||||
}
|
||||
}
|
||||
],
|
||||
"userGroups": []
|
||||
}
|
||||
@@ -398,10 +398,6 @@ export class Notebook {
|
||||
public static cosmosNotebookHomePageUrl = "https://aka.ms/cosmos-notebooks-limits";
|
||||
public static cosmosNotebookGitDocumentationUrl = "https://aka.ms/cosmos-notebooks-github";
|
||||
public static learnMore = "Learn more.";
|
||||
public static notebookDisabledText =
|
||||
"This feature is disabled for this user, this can happen because of region restriction, key permissions etc..";
|
||||
public static newShellDisabledText =
|
||||
"This feature is disabled for this user, this is for users with region restriction, key permissions etc..";
|
||||
}
|
||||
|
||||
export class SparkLibrary {
|
||||
|
||||
@@ -42,8 +42,6 @@ export interface TreeNode {
|
||||
timestamp?: number;
|
||||
isLeavesParentsSeparate?: boolean; // Display parents together first, then leaves
|
||||
isLoading?: boolean;
|
||||
isDisabled?: boolean;
|
||||
toolTip?: string;
|
||||
isSelected?: () => boolean;
|
||||
onClick?: (isExpanded: boolean) => void; // Only if a leaf, other click will expand/collapse
|
||||
onExpanded?: () => void;
|
||||
@@ -171,15 +169,9 @@ export class TreeNodeComponent extends React.Component<TreeNodeComponentProps, T
|
||||
|
||||
return (
|
||||
<div
|
||||
className={`${this.props.node.className || ""} main${generation} nodeItem ${showSelected ? "selected" : ""} ${
|
||||
this.props.node.isDisabled ? "disable" : ""
|
||||
}`}
|
||||
onClick={(event: React.MouseEvent<HTMLDivElement>) =>
|
||||
!this.props.node.isDisabled && this.onNodeClick(event, node)
|
||||
}
|
||||
onKeyPress={(event: React.KeyboardEvent<HTMLDivElement>) =>
|
||||
!this.props.node.isDisabled && this.onNodeKeyPress(event, node)
|
||||
}
|
||||
className={`${this.props.node.className || ""} main${generation} nodeItem ${showSelected ? "selected" : ""}`}
|
||||
onClick={(event: React.MouseEvent<HTMLDivElement>) => this.onNodeClick(event, node)}
|
||||
onKeyPress={(event: React.KeyboardEvent<HTMLDivElement>) => this.onNodeKeyPress(event, node)}
|
||||
role="treeitem"
|
||||
id={node.id}
|
||||
>
|
||||
@@ -192,7 +184,7 @@ export class TreeNodeComponent extends React.Component<TreeNodeComponentProps, T
|
||||
{this.renderCollapseExpandIcon(node)}
|
||||
{node.iconSrc && <img className="nodeIcon" src={node.iconSrc} alt="" />}
|
||||
{node.label && (
|
||||
<span className="nodeLabel" title={`${node.toolTip ? node.toolTip : node.label}`}>
|
||||
<span className="nodeLabel" title={node.label}>
|
||||
{node.label}
|
||||
</span>
|
||||
)}
|
||||
@@ -203,7 +195,7 @@ export class TreeNodeComponent extends React.Component<TreeNodeComponentProps, T
|
||||
</div>
|
||||
{node.children && (
|
||||
<AnimateHeight duration={TreeNodeComponent.transitionDurationMS} height={this.state.isExpanded ? "auto" : 0}>
|
||||
<div className="nodeChildren" data-test={node.label} aria-disabled={node.isDisabled}>
|
||||
<div className="nodeChildren" data-test={node.label}>
|
||||
{TreeNodeComponent.getSortedChildren(node).map((childNode: TreeNode) => (
|
||||
<TreeNodeComponent
|
||||
key={`${childNode.label}-${generation + 1}-${childNode.timestamp}`}
|
||||
|
||||
@@ -35,7 +35,7 @@ exports[`TreeComponent renders a simple tree 1`] = `
|
||||
|
||||
exports[`TreeNodeComponent does not render children by default 1`] = `
|
||||
<div
|
||||
className=" main2 nodeItem "
|
||||
className=" main2 nodeItem "
|
||||
onClick={[Function]}
|
||||
onKeyPress={[Function]}
|
||||
role="treeitem"
|
||||
@@ -136,7 +136,7 @@ exports[`TreeNodeComponent does not render children by default 1`] = `
|
||||
|
||||
exports[`TreeNodeComponent renders a simple node (sorted children, expanded) 1`] = `
|
||||
<div
|
||||
className="nodeClassname main12 nodeItem "
|
||||
className="nodeClassname main12 nodeItem "
|
||||
id="id"
|
||||
onClick={[Function]}
|
||||
onKeyPress={[Function]}
|
||||
@@ -287,7 +287,7 @@ exports[`TreeNodeComponent renders a simple node (sorted children, expanded) 1`]
|
||||
|
||||
exports[`TreeNodeComponent renders loading icon 1`] = `
|
||||
<div
|
||||
className=" main2 nodeItem "
|
||||
className=" main2 nodeItem "
|
||||
onClick={[Function]}
|
||||
onKeyPress={[Function]}
|
||||
role="treeitem"
|
||||
@@ -359,7 +359,7 @@ exports[`TreeNodeComponent renders loading icon 1`] = `
|
||||
|
||||
exports[`TreeNodeComponent renders sorted children, expanded, leaves and parents separated 1`] = `
|
||||
<div
|
||||
className="nodeClassname main12 nodeItem "
|
||||
className="nodeClassname main12 nodeItem "
|
||||
id="id"
|
||||
onClick={[Function]}
|
||||
onKeyPress={[Function]}
|
||||
@@ -529,7 +529,7 @@ exports[`TreeNodeComponent renders sorted children, expanded, leaves and parents
|
||||
|
||||
exports[`TreeNodeComponent renders unsorted children by default 1`] = `
|
||||
<div
|
||||
className=" main2 nodeItem "
|
||||
className=" main2 nodeItem "
|
||||
onClick={[Function]}
|
||||
onKeyPress={[Function]}
|
||||
role="treeitem"
|
||||
|
||||
@@ -66,11 +66,7 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
.disable{
|
||||
background-color: rgb(255, 255, 255);
|
||||
filter: grayscale();
|
||||
color: rgb(161, 159, 157);
|
||||
}
|
||||
|
||||
.treeComponentMenuItemContainer {
|
||||
font-size: @mediumFontSize;
|
||||
|
||||
|
||||
@@ -1027,7 +1027,7 @@ export default class Explorer {
|
||||
}
|
||||
|
||||
public async openNotebookTerminal(kind: ViewModels.TerminalKind): Promise<void> {
|
||||
if (useNotebook.getState().isPhoenixFeatures && !useNotebook.getState().isPhoenixDisabled) {
|
||||
if (useNotebook.getState().isPhoenixFeatures) {
|
||||
await this.allocateContainer();
|
||||
const notebookServerInfo = useNotebook.getState().notebookServerInfo;
|
||||
if (notebookServerInfo && notebookServerInfo.notebookServerEndpoint !== undefined) {
|
||||
|
||||
@@ -75,11 +75,7 @@ export function createStaticCommandBarButtons(
|
||||
if (container.notebookManager?.gitHubOAuthService) {
|
||||
notebookButtons.push(createManageGitHubAccountButton(container));
|
||||
}
|
||||
if (
|
||||
useNotebook.getState().isPhoenixFeatures &&
|
||||
!useNotebook.getState().isPhoenixDisabled &&
|
||||
configContext.isTerminalEnabled
|
||||
) {
|
||||
if (useNotebook.getState().isPhoenixFeatures && configContext.isTerminalEnabled) {
|
||||
notebookButtons.push(createOpenTerminalButton(container));
|
||||
}
|
||||
if (useNotebook.getState().isPhoenixNotebooks && selectedNodeState.isConnectedToContainer()) {
|
||||
@@ -87,8 +83,8 @@ export function createStaticCommandBarButtons(
|
||||
}
|
||||
if (
|
||||
(userContext.apiType === "Mongo" &&
|
||||
selectedNodeState.isDatabaseNodeOrNoneSelected() &&
|
||||
useNotebook.getState().isShellEnabled) ||
|
||||
useNotebook.getState().isShellEnabled &&
|
||||
selectedNodeState.isDatabaseNodeOrNoneSelected()) ||
|
||||
userContext.apiType === "Cassandra"
|
||||
) {
|
||||
notebookButtons.push(createDivider());
|
||||
@@ -100,26 +96,16 @@ export function createStaticCommandBarButtons(
|
||||
}
|
||||
|
||||
notebookButtons.forEach((btn) => {
|
||||
const isPhoenixFeaturesDownMsg =
|
||||
(!useNotebook.getState().isPhoenixFeatures && !useNotebook.getState().isPhoenixDisabled) ||
|
||||
(!useNotebook.getState().isPhoenixFeatures && useNotebook.getState().isPhoenixDisabled);
|
||||
|
||||
if (btn.commandButtonLabel.indexOf("Cassandra") !== -1) {
|
||||
if (isPhoenixFeaturesDownMsg) {
|
||||
applyNotebooksStyleProps(btn, Constants.Notebook.cassandraShellTemporarilyDownMsg);
|
||||
} else if (useNotebook.getState().isPhoenixDisabled) {
|
||||
applyNotebooksStyleProps(btn, Constants.Notebook.notebookDisabledText);
|
||||
if (!useNotebook.getState().isPhoenixFeatures) {
|
||||
applyNotebooksTemporarilyDownStyle(btn, Constants.Notebook.cassandraShellTemporarilyDownMsg);
|
||||
}
|
||||
} else if (btn.commandButtonLabel.indexOf("Mongo") !== -1) {
|
||||
if (isPhoenixFeaturesDownMsg) {
|
||||
applyNotebooksStyleProps(btn, Constants.Notebook.mongoShellTemporarilyDownMsg);
|
||||
} else if (useNotebook.getState().isPhoenixDisabled) {
|
||||
applyNotebooksStyleProps(btn, Constants.Notebook.notebookDisabledText);
|
||||
if (!useNotebook.getState().isPhoenixFeatures) {
|
||||
applyNotebooksTemporarilyDownStyle(btn, Constants.Notebook.mongoShellTemporarilyDownMsg);
|
||||
}
|
||||
} else if (isPhoenixFeaturesDownMsg) {
|
||||
applyNotebooksStyleProps(btn, Constants.Notebook.temporarilyDownMsg);
|
||||
} else if (useNotebook.getState().isPhoenixDisabled) {
|
||||
applyNotebooksStyleProps(btn, Constants.Notebook.notebookDisabledText);
|
||||
} else if (!useNotebook.getState().isPhoenixNotebooks) {
|
||||
applyNotebooksTemporarilyDownStyle(btn, Constants.Notebook.temporarilyDownMsg);
|
||||
}
|
||||
buttons.push(btn);
|
||||
});
|
||||
@@ -168,38 +154,25 @@ export function createContextCommandBarButtons(
|
||||
selectedNodeState: SelectedNodeState
|
||||
): CommandButtonComponentProps[] {
|
||||
const buttons: CommandButtonComponentProps[] = [];
|
||||
|
||||
if (!selectedNodeState.isDatabaseNodeOrNoneSelected() && userContext.apiType === "Mongo") {
|
||||
const isPhoenixShellDisabled = !useNotebook.getState().isShellEnabled || useNotebook.getState().isPhoenixDisabled;
|
||||
const phoenixMongoShellBtn: CommandButtonComponentProps = {
|
||||
const label = useNotebook.getState().isShellEnabled ? "Open Mongo Shell" : "New Shell";
|
||||
const newMongoShellBtn: CommandButtonComponentProps = {
|
||||
iconSrc: HostedTerminalIcon,
|
||||
iconAlt: "Open Mongo Shell",
|
||||
iconAlt: label,
|
||||
onCommandClick: () => {
|
||||
container.openNotebookTerminal(ViewModels.TerminalKind.Mongo);
|
||||
},
|
||||
commandButtonLabel: "Open Mongo Shell",
|
||||
ariaLabel: "Open Mongo Shell",
|
||||
hasPopup: true,
|
||||
disabled: isPhoenixShellDisabled,
|
||||
tooltipText: isPhoenixShellDisabled ? Constants.Notebook.notebookDisabledText : undefined,
|
||||
};
|
||||
buttons.push(phoenixMongoShellBtn);
|
||||
if (!useNotebook.getState().isShellEnabled) {
|
||||
const label = "New Shell";
|
||||
const newMongoShellBtn: CommandButtonComponentProps = {
|
||||
iconSrc: HostedTerminalIcon,
|
||||
iconAlt: label,
|
||||
onCommandClick: () => {
|
||||
const selectedCollection: ViewModels.Collection = selectedNodeState.findSelectedCollection();
|
||||
const selectedCollection: ViewModels.Collection = selectedNodeState.findSelectedCollection();
|
||||
if (useNotebook.getState().isShellEnabled) {
|
||||
container.openNotebookTerminal(ViewModels.TerminalKind.Mongo);
|
||||
} else {
|
||||
selectedCollection && selectedCollection.onNewMongoShellClick();
|
||||
},
|
||||
commandButtonLabel: label,
|
||||
ariaLabel: label,
|
||||
hasPopup: true,
|
||||
disabled: false,
|
||||
tooltipText: label,
|
||||
};
|
||||
buttons.push(newMongoShellBtn);
|
||||
}
|
||||
}
|
||||
},
|
||||
commandButtonLabel: label,
|
||||
ariaLabel: label,
|
||||
hasPopup: true,
|
||||
};
|
||||
buttons.push(newMongoShellBtn);
|
||||
}
|
||||
|
||||
return buttons;
|
||||
@@ -428,7 +401,7 @@ export function createScriptCommandButtons(selectedNodeState: SelectedNodeState)
|
||||
return buttons;
|
||||
}
|
||||
|
||||
function applyNotebooksStyleProps(buttonProps: CommandButtonComponentProps, tooltip: string): void {
|
||||
function applyNotebooksTemporarilyDownStyle(buttonProps: CommandButtonComponentProps, tooltip: string): void {
|
||||
if (!buttonProps.isDivider) {
|
||||
buttonProps.disabled = true;
|
||||
buttonProps.tooltipText = tooltip;
|
||||
@@ -504,11 +477,10 @@ function createOpenTerminalButton(container: Explorer): CommandButtonComponentPr
|
||||
|
||||
function createOpenMongoTerminalButton(container: Explorer): CommandButtonComponentProps {
|
||||
const label = "Open Mongo Shell";
|
||||
const tooltip =
|
||||
"This feature is not yet available in your account's region. View supported regions here: https://aka.ms/cosmos-enable-notebooks.";
|
||||
const disableButton =
|
||||
!useNotebook.getState().isNotebooksEnabledForAccount &&
|
||||
(!useNotebook.getState().isNotebookEnabled ||
|
||||
!useNotebook.getState().isShellEnabled ||
|
||||
useNotebook.getState().isPhoenixDisabled);
|
||||
!useNotebook.getState().isNotebooksEnabledForAccount && !useNotebook.getState().isNotebookEnabled;
|
||||
return {
|
||||
iconSrc: HostedTerminalIcon,
|
||||
iconAlt: label,
|
||||
@@ -521,7 +493,7 @@ function createOpenMongoTerminalButton(container: Explorer): CommandButtonCompon
|
||||
hasPopup: false,
|
||||
disabled: disableButton,
|
||||
ariaLabel: label,
|
||||
tooltipText: !disableButton ? undefined : Constants.Notebook.notebookDisabledText,
|
||||
tooltipText: !disableButton ? "" : tooltip,
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -36,11 +36,6 @@
|
||||
outline: 0px;
|
||||
}
|
||||
}
|
||||
.disableText{
|
||||
background-color: rgb(255, 255, 255)!important;
|
||||
filter: grayscale();
|
||||
color: rgb(161, 159, 157)!important;
|
||||
}
|
||||
.connectIcon{
|
||||
margin: 0px 4px;
|
||||
height: 18px;
|
||||
|
||||
@@ -23,8 +23,6 @@ interface Props {
|
||||
}
|
||||
export const ConnectionStatus: React.FC<Props> = ({ container }: Props): JSX.Element => {
|
||||
const connectionInfo = useNotebook((state) => state.connectionInfo);
|
||||
const isPhoenixDisabled = useNotebook((state) => state.isPhoenixDisabled);
|
||||
|
||||
const [second, setSecond] = React.useState("00");
|
||||
const [minute, setMinute] = React.useState("00");
|
||||
const [isActive, setIsActive] = React.useState(false);
|
||||
@@ -79,12 +77,6 @@ export const ConnectionStatus: React.FC<Props> = ({ container }: Props): JSX.Ele
|
||||
}
|
||||
}, [connectionInfo.status]);
|
||||
|
||||
React.useEffect(() => {
|
||||
if (isPhoenixDisabled) {
|
||||
setToolTipContent(Notebook.notebookDisabledText);
|
||||
}
|
||||
}, [isPhoenixDisabled]);
|
||||
|
||||
const stopTimer = () => {
|
||||
setIsActive(false);
|
||||
setCounter(0);
|
||||
@@ -101,18 +93,11 @@ export const ConnectionStatus: React.FC<Props> = ({ container }: Props): JSX.Ele
|
||||
(connectionInfo.status === ConnectionStatusType.Connect || connectionInfo.status === ConnectionStatusType.Reconnect)
|
||||
) {
|
||||
return (
|
||||
<ActionButton
|
||||
className={isPhoenixDisabled ? "disableText commandReactBtn" : "commandReactBtn"}
|
||||
disabled={isPhoenixDisabled}
|
||||
onClick={() => !isPhoenixDisabled && container.allocateContainer()}
|
||||
>
|
||||
<ActionButton className="commandReactBtn" onClick={() => container.allocateContainer()}>
|
||||
<TooltipHost content={toolTipContent}>
|
||||
<Stack className="connectionStatusContainer" horizontal>
|
||||
<Icon
|
||||
iconName="ConnectVirtualMachine"
|
||||
className={isPhoenixDisabled ? "connectIcon disableText" : "connectIcon"}
|
||||
/>
|
||||
<span className={isPhoenixDisabled ? "disableText" : ""}>{connectionInfo.status}</span>
|
||||
<Icon iconName="ConnectVirtualMachine" className="connectIcon" />
|
||||
<span>{connectionInfo.status}</span>
|
||||
</Stack>
|
||||
</TooltipHost>
|
||||
</ActionButton>
|
||||
|
||||
@@ -40,7 +40,6 @@ interface NotebookState {
|
||||
containerStatus: ContainerInfo;
|
||||
isPhoenixNotebooks: boolean;
|
||||
isPhoenixFeatures: boolean;
|
||||
isPhoenixDisabled: boolean;
|
||||
setIsNotebookEnabled: (isNotebookEnabled: boolean) => void;
|
||||
setIsNotebooksEnabledForAccount: (isNotebooksEnabledForAccount: boolean) => void;
|
||||
setNotebookServerInfo: (notebookServerInfo: DataModels.NotebookWorkspaceConnectionInfo) => void;
|
||||
@@ -65,7 +64,6 @@ interface NotebookState {
|
||||
getPhoenixStatus: () => Promise<void>;
|
||||
setIsPhoenixNotebooks: (isPhoenixNotebooks: boolean) => void;
|
||||
setIsPhoenixFeatures: (isPhoenixFeatures: boolean) => void;
|
||||
setIsPhoenixDisabled: (isPhoenixDisabled: boolean) => void;
|
||||
}
|
||||
|
||||
export const useNotebook: UseStore<NotebookState> = create((set, get) => ({
|
||||
@@ -102,7 +100,6 @@ export const useNotebook: UseStore<NotebookState> = create((set, get) => ({
|
||||
},
|
||||
isPhoenixNotebooks: undefined,
|
||||
isPhoenixFeatures: undefined,
|
||||
isPhoenixDisabled: undefined,
|
||||
setIsNotebookEnabled: (isNotebookEnabled: boolean) => set({ isNotebookEnabled }),
|
||||
setIsNotebooksEnabledForAccount: (isNotebooksEnabledForAccount: boolean) => set({ isNotebooksEnabledForAccount }),
|
||||
setNotebookServerInfo: (notebookServerInfo: DataModels.NotebookWorkspaceConnectionInfo) =>
|
||||
@@ -308,7 +305,6 @@ export const useNotebook: UseStore<NotebookState> = create((set, get) => ({
|
||||
if (get().isPhoenixNotebooks === undefined || get().isPhoenixFeatures === undefined) {
|
||||
let isPhoenixNotebooks = false;
|
||||
let isPhoenixFeatures = false;
|
||||
let isPhoenixDisabled = false;
|
||||
|
||||
const isPublicInternetAllowed = isPublicInternetAccessAllowed();
|
||||
const phoenixClient = new PhoenixClient();
|
||||
@@ -316,30 +312,18 @@ export const useNotebook: UseStore<NotebookState> = create((set, get) => ({
|
||||
|
||||
if (dbAccountAllowedInfo.status === HttpStatusCodes.OK) {
|
||||
if (dbAccountAllowedInfo?.type === PhoenixErrorType.PhoenixFlightFallback) {
|
||||
isPhoenixNotebooks = userContext.features.phoenixNotebooks;
|
||||
isPhoenixFeatures = userContext.features.phoenixFeatures;
|
||||
isPhoenixDisabled = !isPublicInternetAllowed && (isPhoenixNotebooks || isPhoenixFeatures);
|
||||
isPhoenixNotebooks = isPublicInternetAllowed && userContext.features.phoenixNotebooks;
|
||||
isPhoenixFeatures = isPublicInternetAllowed && userContext.features.phoenixFeatures;
|
||||
} else {
|
||||
isPhoenixNotebooks = isPhoenixFeatures = true;
|
||||
isPhoenixDisabled = !isPublicInternetAllowed;
|
||||
isPhoenixNotebooks = isPhoenixFeatures = isPublicInternetAllowed;
|
||||
}
|
||||
} else if (
|
||||
dbAccountAllowedInfo.status === HttpStatusCodes.Forbidden &&
|
||||
(userContext.features.phoenixNotebooks || userContext.features.phoenixFeatures)
|
||||
) {
|
||||
isPhoenixNotebooks = userContext.features.phoenixNotebooks;
|
||||
isPhoenixFeatures = userContext.features.phoenixFeatures;
|
||||
isPhoenixDisabled = true;
|
||||
} else {
|
||||
isPhoenixNotebooks = isPhoenixFeatures = false;
|
||||
}
|
||||
|
||||
set({ isPhoenixNotebooks: isPhoenixNotebooks });
|
||||
set({ isPhoenixFeatures: isPhoenixFeatures });
|
||||
set({ isPhoenixDisabled: isPhoenixDisabled });
|
||||
}
|
||||
},
|
||||
setIsPhoenixNotebooks: (isPhoenixNotebooks: boolean) => set({ isPhoenixNotebooks: isPhoenixNotebooks }),
|
||||
setIsPhoenixFeatures: (isPhoenixFeatures: boolean) => set({ isPhoenixFeatures: isPhoenixFeatures }),
|
||||
setIsPhoenixDisabled: (isPhoenixDisabled: boolean) => set({ isPhoenixDisabled: isPhoenixDisabled }),
|
||||
}));
|
||||
|
||||
@@ -156,10 +156,8 @@ export const ResourceTree: React.FC<ResourceTreeProps> = ({ container }: Resourc
|
||||
label: "Gallery",
|
||||
iconSrc: GalleryIcon,
|
||||
className: "notebookHeader galleryHeader",
|
||||
toolTip: useNotebook.getState().isPhoenixDisabled ? Notebook.notebookDisabledText : undefined,
|
||||
onClick: () => container.openGallery(),
|
||||
isSelected: () => activeTab?.tabKind === ViewModels.CollectionTabKind.Gallery,
|
||||
isDisabled: useNotebook.getState().isPhoenixDisabled,
|
||||
};
|
||||
};
|
||||
|
||||
@@ -525,8 +523,6 @@ export const ResourceTree: React.FC<ResourceTreeProps> = ({ container }: Resourc
|
||||
children.push({
|
||||
label: "Schema (Preview)",
|
||||
onClick: collection.onSchemaAnalyzerClick.bind(collection),
|
||||
toolTip: useNotebook.getState().isPhoenixDisabled ? Notebook.notebookDisabledText : undefined,
|
||||
isDisabled: useNotebook.getState().isPhoenixDisabled,
|
||||
isSelected: () =>
|
||||
useSelectedNode
|
||||
.getState()
|
||||
|
||||
Reference in New Issue
Block a user