Skip to content

Commit 3dfed58

Browse files
chore: guided prompt pattern aligned to specification (#12560)
This change consolidates the AI Guided Prompt pattern by removing two implementation variants (DynamicSideContent and Popover) and keeping only the Dialog variant. The remaining Dialog implementation has been updated to align with the specification.
1 parent d37e929 commit 3dfed58

File tree

12 files changed

+47
-684
lines changed

12 files changed

+47
-684
lines changed

packages/website/docs/_samples/patterns/AIGuidedPrompt/Dialog/main.css

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -38,17 +38,7 @@
3838
}
3939

4040
[ui5-dialog] {
41-
width: 100%;
42-
}
43-
44-
[ui5-dialog] .content {
45-
display: grid;
46-
grid-template-columns: 2fr 1fr;
47-
grid-gap: 1rem;
48-
}
49-
50-
[ui5-dialog] [ui5-textarea] {
51-
height: 100%;
41+
width: 20rem;
5242
}
5343

5444
.guidedPromptDialogFooter,

packages/website/docs/_samples/patterns/AIGuidedPrompt/Dialog/main.js

Lines changed: 24 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -28,12 +28,12 @@ if (!response) {
2828
}
2929

3030
const dialog = document.getElementById("dialog");
31-
const aiDialogButton = document.getElementById("aiDialogButton");
31+
const busyIndicator = document.querySelector("ui5-busy-indicator");
32+
const applyTextImprovementsButton = document.getElementById("applyTextImprovementsButton");
3233
const openDialogButton = document.getElementById("openDialogButton");
3334
const closeDialogButton = document.getElementById("closeDialogButton");
3435
const output = document.getElementById("output");
35-
const dialogOutput = document.getElementById("dialogOutput");
36-
const structrureSelect = document.getElementById("structureSelect");
36+
const structureSelect = document.getElementById("structureSelect");
3737
const languageSelect = document.getElementById("languageSelect");
3838
const toneOfVoiceSelect = document.getElementById("toneOfVoiceSelect");
3939
const sendButton = document.getElementById("sendButton");
@@ -53,58 +53,46 @@ let dialogGenerationId;
5353

5454
function startGenerating() {
5555
console.warn("startGenerating");
56-
dialogOutput.value = "";
5756
text = texts[options.structure][options.language][options.toneOfVoice];
58-
let generatedWordIndex = 0;
59-
const generationId = setInterval(function () {
60-
const words = text.split(" ");
61-
const maxWordIndex = words.length - 1;
62-
if (generatedWordIndex > maxWordIndex) {
63-
stopGenerating(generationId);
64-
aiDialogButton.state = "revise";
65-
openDialogButton.innerText = "Revise";
66-
closeDialogButton.disabled = false;
67-
return;
68-
}
57+
busyIndicator.active = true;
58+
output.value = "";
59+
openDialogButton.state = "generating";
60+
61+
closeDialog();
62+
63+
var generationId = setTimeout(() => {
64+
stopGenerating(generationId)
65+
output.value = text;
66+
}, 3000);
6967

70-
dialogOutput.value += words[generatedWordIndex] + " ";
71-
generatedWordIndex++;
72-
}, 75);
7368
return generationId;
7469
}
7570

7671
function stopGenerating(generationId) {
7772
console.warn("stopGenerating");
78-
closeDialogButton.disabled = false;
73+
busyIndicator.active = false;
74+
openDialogButton.state = "generate";
7975
clearTimeout(generationId);
8076
}
8177

8278
function openDialogButtonClickHandler(evt) {
83-
openDialog();
84-
}
85-
86-
function aiDialogButtonClickHandler(evt) {
8779
var button = evt.target;
8880
switch (button.state) {
89-
case "":
9081
case "generate":
91-
startGeneratingFromDialog();
92-
break;
93-
case "revise":
94-
startGeneratingFromDialog();
82+
openDialog();
9583
break;
9684
case "generating":
97-
button.state = "generate";
98-
openDialogButton.innerText = "Generate";
99-
closeDialogButton.disabled = false;
100-
stopGenerating(dialogGenerationId, closeDialogButton);
85+
stopGenerating(dialogGenerationId);
86+
openDialogButton.state = "generate";
10187
break;
10288
}
10389
}
10490

91+
function applyTextImprovementsButtonClickHandler() {
92+
startGeneratingFromDialog();
93+
}
94+
10595
function startGeneratingFromDialog() {
106-
aiDialogButton.state = "generating";
107-
closeDialogButton.disabled = true;
10896
dialogGenerationId = startGenerating();
10997
}
11098

@@ -114,7 +102,6 @@ function openDialog() {
114102

115103
function closeDialog() {
116104
dialog.open = false;
117-
output.value = dialogOutput.value;
118105
}
119106

120107
function structureSelectHandler(evt) {
@@ -151,10 +138,10 @@ sendButton.addEventListener("click", function() {
151138
}
152139
});
153140

154-
structrureSelect.addEventListener("change", structureSelectHandler);
141+
structureSelect.addEventListener("change", structureSelectHandler);
155142
openDialogButton.addEventListener("click", openDialogButtonClickHandler);
156-
aiDialogButton.addEventListener("click", aiDialogButtonClickHandler);
157143
closeDialogButton.addEventListener("click", closeDialog);
144+
applyTextImprovementsButton.addEventListener("click", applyTextImprovementsButtonClickHandler);
158145
languageSelect.addEventListener("change", languageSelectHandler);
159146
toneOfVoiceSelect.addEventListener(
160147
"selection-change",

packages/website/docs/_samples/patterns/AIGuidedPrompt/Dialog/sample.html

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,6 @@
1616
opener="openDialogButton"
1717
header-text="Improve Text">
1818
<div class="content">
19-
<ui5-textarea
20-
id="dialogOutput"
21-
placeholder="Compose text..."></ui5-textarea>
2219
<div class="guidedPromptForm">
2320
<div class="guidedPromptFormGroup">
2421
<ui5-label>Structure:</ui5-label>
@@ -55,23 +52,13 @@
5552
</div>
5653

5754
<div slot="footer" class="guidedPromptDialogFooter">
58-
<ui5-ai-button id="aiDialogButton" state="generate" design="Emphasized">
59-
<ui5-ai-button-state
60-
name="generate"
61-
text="Apply"
62-
icon="ai"
63-
></ui5-ai-button-state>
64-
<ui5-ai-button-state
65-
name="generating"
66-
text="Stop Generating"
67-
icon="stop"
68-
></ui5-ai-button-state>
69-
<ui5-ai-button-state
70-
name="revise"
71-
text="Revise"
72-
icon="ai"
73-
></ui5-ai-button-state>
74-
</ui5-ai-button>
55+
<ui5-button
56+
id="applyTextImprovementsButton"
57+
design="Emphasized"
58+
name="generate"
59+
text="Apply"
60+
icon="ai">Apply</ui5-button>
61+
7562
<ui5-button id="closeDialogButton">Close</ui5-button>
7663
</div>
7764
</ui5-dialog>
@@ -87,9 +74,22 @@
8774
</div>
8875
<div class="guidedPromptLblBtn">
8976
<ui5-label style="align-self: flex-end;" required>Offer: </ui5-label>
90-
<ui5-button id="openDialogButton" icon="ai"> Generate</ui5-button>
77+
<ui5-ai-button id="openDialogButton" state="generate">
78+
<ui5-ai-button-state
79+
name="generate"
80+
text="Compose Text"
81+
icon="ai"
82+
></ui5-ai-button-state>
83+
<ui5-ai-button-state
84+
name="generating"
85+
text="Stop Generating"
86+
icon="stop"
87+
></ui5-ai-button-state>
88+
</ui5-ai-button>
9189
</div>
92-
<ui5-textarea id="output" style="height: 100%;" placeholder="Compose text..."></ui5-textarea>
90+
<ui5-busy-indicator style="height: 100%;">
91+
<ui5-textarea id="output" style="height: 100%;"></ui5-textarea>
92+
</ui5-busy-indicator>
9393
</section>
9494
<div class="guidedPromptCardFooter">
9595
<ui5-button id="sendButton" design="Emphasized">Send</ui5-button>

packages/website/docs/_samples/patterns/AIGuidedPrompt/DynamicSideContent/DynamicSideContent.md

Lines changed: 0 additions & 5 deletions
This file was deleted.

packages/website/docs/_samples/patterns/AIGuidedPrompt/DynamicSideContent/main.css

Lines changed: 0 additions & 67 deletions
This file was deleted.

0 commit comments

Comments
 (0)