Skip to content

Commit 8ff62a8

Browse files
committed
Run Function App command fix
1 parent 14fbe3b commit 8ff62a8

File tree

8 files changed

+276
-54
lines changed

8 files changed

+276
-54
lines changed

package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"name": "vscode-azurefunctions",
33
"displayName": "Azure Functions",
44
"description": "%azureFunctions.description%",
5-
"version": "1.20.4-alpha.63",
5+
"version": "1.20.4-alpha.78",
66
"publisher": "ms-azuretools",
77
"icon": "resources/azure-functions.png",
88
"aiKey": "0c6ae279ed8443289764825290e4f9e2-1a736e7c-1324-4338-be46-fc2a58ae4d14-7255",

resources/webviews/templateGallery/index.html

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,9 +38,11 @@ <h1>Create a new Azure Functions project</h1>
3838
<div class="filter-chips" id="language-filters" role="radiogroup" aria-label="Filter by language">
3939
<button class="filter-chip active" data-value="all" role="radio" aria-checked="true">All</button>
4040
<button class="filter-chip" data-value="python" role="radio" aria-checked="false">Python</button>
41-
<button class="filter-chip" data-value="node" role="radio" aria-checked="false">Node.js</button>
42-
<button class="filter-chip" data-value="java" role="radio" aria-checked="false">Java</button>
4341
<button class="filter-chip" data-value="dotnet" role="radio" aria-checked="false">.NET</button>
42+
<button class="filter-chip" data-value="typescript" role="radio" aria-checked="false">TypeScript</button>
43+
<button class="filter-chip" data-value="javascript" role="radio" aria-checked="false">JavaScript</button>
44+
<button class="filter-chip" data-value="java" role="radio" aria-checked="false">Java</button>
45+
<button class="filter-chip" data-value="go" role="radio" aria-checked="false">Go</button>
4446
<button class="filter-chip" data-value="powershell" role="radio" aria-checked="false">PowerShell</button>
4547
</div>
4648
</div>

resources/webviews/templateGallery/main.js

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -413,13 +413,15 @@
413413

414414
// Special badges
415415
let badgesHtml = categoriesHtml;
416-
if (template.isPopular) {
417-
badgesHtml += '<span class="popular-badge"><span class="codicon codicon-star-full"></span>Popular</span>';
418-
}
419416
if (template.isNew) {
420417
badgesHtml += '<span class="new-badge"><span class="codicon codicon-sparkle"></span>New</span>';
421418
}
422419

420+
// Featured cards get accent border + corner star
421+
if (template.isPopular) {
422+
card.classList.add('featured');
423+
}
424+
423425
card.innerHTML = `
424426
<div class="card-languages">${languagesHtml}</div>
425427
<h3 class="card-title">${escapeHtml(template.displayName)}</h3>

resources/webviews/templateGallery/styles.css

Lines changed: 25 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -179,17 +179,17 @@ body {
179179

180180
/* Language filter chips — idle state shows a colored left border as a hint */
181181
#language-filters .filter-chip[data-value="python"] { border-left: 3px solid #3776AB; }
182-
#language-filters .filter-chip[data-value="javascript"] { border-left: 3px solid #F7DF1E; }
183-
#language-filters .filter-chip[data-value="typescript"] { border-left: 3px solid #166534; }
182+
#language-filters .filter-chip[data-value="javascript"] { border-left: 3px solid #166534; }
183+
#language-filters .filter-chip[data-value="typescript"] { border-left: 3px solid #F7DF1E; }
184184
#language-filters .filter-chip[data-value="java"] { border-left: 3px solid #ED8B00; }
185185
#language-filters .filter-chip[data-value="dotnet"] { border-left: 3px solid #512BD4; }
186186
#language-filters .filter-chip[data-value="powershell"] { border-left: 3px solid #012456; }
187187
#language-filters .filter-chip[data-value="go"] { border-left: 3px solid #00ADD8; }
188188

189189
/* Active state fills with the language color */
190190
#language-filters .filter-chip.active[data-value="python"] { background-color: #3776AB; color: white; border-color: #3776AB; }
191-
#language-filters .filter-chip.active[data-value="javascript"] { background-color: #F7DF1E; color: #222; border-color: #F7DF1E; }
192-
#language-filters .filter-chip.active[data-value="typescript"] { background-color: #166534; color: white; border-color: #166534; }
191+
#language-filters .filter-chip.active[data-value="javascript"] { background-color: #166534; color: white; border-color: #166534; }
192+
#language-filters .filter-chip.active[data-value="typescript"] { background-color: #F7DF1E; color: #222; border-color: #F7DF1E; }
193193
#language-filters .filter-chip.active[data-value="java"] { background-color: #ED8B00; color: white; border-color: #ED8B00; }
194194
#language-filters .filter-chip.active[data-value="dotnet"] { background-color: #512BD4; color: white; border-color: #512BD4; }
195195
#language-filters .filter-chip.active[data-value="powershell"] { background-color: #012456; color: white; border-color: #012456; }
@@ -259,8 +259,8 @@ body {
259259
}
260260

261261
.language-badge.python { background-color: #3776AB; color: white; }
262-
.language-badge.javascript { background-color: #F7DF1E; color: #222; }
263-
.language-badge.typescript { background-color: #166534; color: white; }
262+
.language-badge.javascript { background-color: #166534; color: white; }
263+
.language-badge.typescript { background-color: #F7DF1E; color: #222; }
264264
.language-badge.java { background-color: #ED8B00; color: white; }
265265
.language-badge.dotnet { background-color: #512BD4; color: white; }
266266
.language-badge.powershell { background-color: #012456; color: white; }
@@ -299,10 +299,27 @@ body {
299299
font-size: 11px;
300300
border-radius: 4px;
301301
background-color: var(--vscode-textBlockQuote-background);
302-
color: var(--vscode-textBlockQuote-border);
302+
color: var(--vscode-descriptionForeground);
303+
}
304+
305+
/* Featured card — accent border + corner star */
306+
.template-card.featured {
307+
position: relative;
308+
border-left: 3px solid var(--vscode-button-background);
309+
}
310+
311+
.template-card.featured::after {
312+
content: '\ea6a'; /* codicon star-full */
313+
font-family: 'codicon';
314+
position: absolute;
315+
top: 10px;
316+
right: 10px;
317+
font-size: 16px;
318+
color: #FFC107;
319+
opacity: 0.85;
320+
pointer-events: none;
303321
}
304322

305-
.popular-badge,
306323
.new-badge {
307324
display: flex;
308325
align-items: center;
@@ -312,11 +329,6 @@ body {
312329
border-radius: 4px;
313330
}
314331

315-
.popular-badge {
316-
background-color: rgba(255, 193, 7, 0.15);
317-
color: #FFC107;
318-
}
319-
320332
.new-badge {
321333
background-color: rgba(76, 175, 80, 0.15);
322334
color: #4CAF50;

src/commands/createNewProject/NewProjectLanguageStep.ts

Lines changed: 32 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,15 @@
33
* Licensed under the MIT License. See License.txt in the project root for license information.
44
*--------------------------------------------------------------------------------------------*/
55

6-
import { AzureWizardPromptStep, type AzureWizardExecuteStep, type IAzureQuickPickItem, type IWizardOptions } from '@microsoft/vscode-azext-utils';
7-
import { type QuickPickOptions } from 'vscode';
6+
import { AzureWizardPromptStep, UserCancelledError, type AzureWizardExecuteStep, type IAzureQuickPickItem, type IWizardOptions } from '@microsoft/vscode-azext-utils';
7+
import { QuickPickItemKind, type QuickPickOptions } from 'vscode';
88
import { ProjectLanguage, nodeDefaultModelVersion, nodeLearnMoreLink, nodeModels, pythonDefaultModelVersion, pythonLearnMoreLink, pythonModels, showBallerinaProjectCreationSetting } from '../../constants';
9+
import { ext } from '../../extensionVariables';
910
import { localize } from '../../localize';
1011
import { TemplateSchemaVersion } from '../../templates/TemplateProviderBase';
1112
import { nonNullProp } from '../../utils/nonNull';
1213
import { getWorkspaceSetting } from '../../vsCodeConfig/settings';
14+
import { FunctionListStep } from '../createFunction/FunctionListStep';
1315
import { addInitVSCodeSteps } from '../initProjectForVSCode/InitVSCodeLanguageStep';
1416
import { type IProjectWizardContext } from './IProjectWizardContext';
1517
import { ProgrammingModelStep } from './ProgrammingModelStep';
@@ -20,14 +22,17 @@ import { PowerShellProjectCreateStep } from './ProjectCreateStep/PowerShellProje
2022
import { PythonProjectCreateStep } from './ProjectCreateStep/PythonProjectCreateStep';
2123
import { ScriptProjectCreateStep } from './ProjectCreateStep/ScriptProjectCreateStep';
2224
import { TypeScriptProjectCreateStep } from './ProjectCreateStep/TypeScriptProjectCreateStep';
23-
import { StartingPointStep } from './StartingPointStep';
2425
import { addBallerinaCreateProjectSteps } from './ballerinaSteps/addBallerinaCreateProjectSteps';
2526
import { DotnetRuntimeStep } from './dotnetSteps/DotnetRuntimeStep';
2627
import { addJavaCreateProjectSteps } from './javaSteps/addJavaCreateProjectSteps';
2728
import { MCPDownloadSnippetsExecuteStep } from './mcpServerSteps/MCPDownloadSnippetsExecuteStep';
2829
import { MCPDownloadSnippetsPromptStep } from './mcpServerSteps/MCPDownloadSnippetsPromptStep';
2930
import { MCPProjectCreateStep } from './mcpServerSteps/MCPProjectCreateStep';
3031
import { MCPServerLanguagePromptStep } from './mcpServerSteps/MCPServerLanguagePromptStep';
32+
import { TemplateGalleryPanel } from './TemplateGalleryPanel';
33+
34+
// Sentinel value used to detect when the user picks "Browse Template Gallery…"
35+
const templateGalleryLanguage = 'TemplateGallery' as ProjectLanguage;
3136

3237
export class NewProjectLanguageStep extends AzureWizardPromptStep<IProjectWizardContext> {
3338
public hideStepCount: boolean = true;
@@ -64,8 +69,25 @@ export class NewProjectLanguageStep extends AzureWizardPromptStep<IProjectWizard
6469
});
6570
}
6671

72+
// Add a separator and a "Browse Template Gallery…" option at the bottom
73+
languagePicks.push(
74+
{ label: '', data: { language: templateGalleryLanguage }, kind: QuickPickItemKind.Separator },
75+
{
76+
label: `$(library) ${localize('browseTemplateGallery', 'Browse Template Gallery...')}`,
77+
data: { language: templateGalleryLanguage },
78+
suppressPersistence: true,
79+
},
80+
);
81+
6782
const options: QuickPickOptions = { placeHolder: localize('selectProjectType', 'Select a project type') };
6883
const result = (await context.ui.showQuickPick(languagePicks, options)).data;
84+
85+
if (result.language === templateGalleryLanguage) {
86+
TemplateGalleryPanel.createOrShow(ext.context.extensionUri);
87+
context.telemetry.properties.flow = 'templateGalleryFromWizard';
88+
throw new UserCancelledError('templateGallery');
89+
}
90+
6991
context.language = result.language;
7092
this.setTemplateSchemaVersion(context);
7193
}
@@ -138,11 +160,13 @@ export class NewProjectLanguageStep extends AzureWizardPromptStep<IProjectWizard
138160

139161
const wizardOptions: IWizardOptions<IProjectWizardContext> = { promptSteps, executeSteps };
140162

141-
// Add StartingPointStep which handles both template and scratch paths
142-
// For template path: shows template selection and clones project
143-
// For scratch path: shows existing function trigger selection (FunctionListStep)
144-
// Note: Java needs to fix this issue first: https://github.com/Microsoft/vscode-azurefunctions/issues/81
145-
promptSteps.push(new StartingPointStep(this._templateId, this._functionSettings));
163+
// All languages except Java support creating a function after creating a project
164+
// Java needs to fix this issue first: https://github.com/Microsoft/vscode-azurefunctions/issues/81
165+
promptSteps.push(new FunctionListStep({
166+
isProjectWizard: true,
167+
templateId: this._templateId,
168+
functionSettings: this._functionSettings,
169+
}));
146170

147171
return wizardOptions;
148172
}

src/commands/createNewProject/TemplateGalleryPanel.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -821,12 +821,12 @@ Return ONLY a valid JSON object with absolutely no other text, explanations, or
821821
<div class="filter-chips" id="language-filters" role="radiogroup" aria-label="Filter by language">
822822
<button class="filter-chip active" data-value="all" role="radio" aria-checked="true">All</button>
823823
<button class="filter-chip" data-value="python" role="radio" aria-checked="false">Python</button>
824-
<button class="filter-chip" data-value="javascript" role="radio" aria-checked="false">JavaScript</button>
824+
<button class="filter-chip" data-value="dotnet" role="radio" aria-checked="false">.NET</button>
825825
<button class="filter-chip" data-value="typescript" role="radio" aria-checked="false">TypeScript</button>
826+
<button class="filter-chip" data-value="javascript" role="radio" aria-checked="false">JavaScript</button>
826827
<button class="filter-chip" data-value="java" role="radio" aria-checked="false">Java</button>
827-
<button class="filter-chip" data-value="dotnet" role="radio" aria-checked="false">.NET</button>
828-
<button class="filter-chip" data-value="powershell" role="radio" aria-checked="false">PowerShell</button>
829828
<button class="filter-chip" data-value="go" role="radio" aria-checked="false">Go</button>
829+
<button class="filter-chip" data-value="powershell" role="radio" aria-checked="false">PowerShell</button>
830830
</div>
831831
</div>
832832

0 commit comments

Comments
 (0)