@ui5/webcomponents-ai 2.15.0 → 2.16.0-rc.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +11 -0
- package/README.md +1 -0
- package/dist/.tsbuildinfo +1 -1
- package/dist/TextArea.d.ts +116 -0
- package/dist/TextArea.js +235 -0
- package/dist/TextArea.js.map +1 -0
- package/dist/TextAreaTemplate.d.ts +2 -0
- package/dist/TextAreaTemplate.js +13 -0
- package/dist/TextAreaTemplate.js.map +1 -0
- package/dist/ToolbarLabel.d.ts +39 -0
- package/dist/ToolbarLabel.js +67 -0
- package/dist/ToolbarLabel.js.map +1 -0
- package/dist/ToolbarLabelTemplate.d.ts +2 -0
- package/dist/ToolbarLabelTemplate.js +5 -0
- package/dist/ToolbarLabelTemplate.js.map +1 -0
- package/dist/Versioning.d.ts +96 -0
- package/dist/Versioning.js +188 -0
- package/dist/Versioning.js.map +1 -0
- package/dist/VersioningTemplate.d.ts +4 -0
- package/dist/VersioningTemplate.js +9 -0
- package/dist/VersioningTemplate.js.map +1 -0
- package/dist/WritingAssistant.d.ts +101 -0
- package/dist/WritingAssistant.js +192 -0
- package/dist/WritingAssistant.js.map +1 -0
- package/dist/WritingAssistantTemplate.d.ts +2 -0
- package/dist/WritingAssistantTemplate.js +12 -0
- package/dist/WritingAssistantTemplate.js.map +1 -0
- package/dist/bundle.esm.js +1 -0
- package/dist/bundle.esm.js.map +1 -1
- package/dist/css/themes/AITextArea.css +1 -0
- package/dist/css/themes/Button.css +1 -1
- package/dist/css/themes/Versioning.css +1 -0
- package/dist/css/themes/WritingAssistant.css +1 -0
- package/dist/custom-elements-internal.json +198 -0
- package/dist/custom-elements.json +183 -0
- package/dist/generated/assets/i18n/messagebundle_en.json +1 -1
- package/dist/generated/i18n/i18n-defaults.d.ts +10 -1
- package/dist/generated/i18n/i18n-defaults.js +10 -1
- package/dist/generated/i18n/i18n-defaults.js.map +1 -1
- package/dist/generated/themes/AITextArea.css.d.ts +2 -0
- package/dist/generated/themes/AITextArea.css.js +8 -0
- package/dist/generated/themes/AITextArea.css.js.map +1 -0
- package/dist/generated/themes/Button.css.d.ts +1 -1
- package/dist/generated/themes/Button.css.js +1 -1
- package/dist/generated/themes/Button.css.js.map +1 -1
- package/dist/generated/themes/Versioning.css.d.ts +2 -0
- package/dist/generated/themes/Versioning.css.js +8 -0
- package/dist/generated/themes/Versioning.css.js.map +1 -0
- package/dist/generated/themes/WritingAssistant.css.d.ts +2 -0
- package/dist/generated/themes/WritingAssistant.css.js +8 -0
- package/dist/generated/themes/WritingAssistant.css.js.map +1 -0
- package/dist/vscode.html-custom-data.json +27 -0
- package/dist/web-types.json +78 -1
- package/package.json +7 -7
- package/src/TextArea.css +45 -0
- package/src/TextAreaTemplate.tsx +90 -0
- package/src/ToolbarLabelTemplate.tsx +9 -0
- package/src/VersioningTemplate.tsx +34 -0
- package/src/WritingAssistantTemplate.tsx +49 -0
- package/src/i18n/messagebundle.properties +26 -0
- package/src/i18n/messagebundle_en.properties +1 -0
- package/src/themes/AITextArea.css +45 -0
- package/src/themes/Versioning.css +20 -0
- package/src/themes/WritingAssistant.css +45 -0
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var Versioning_1;
|
|
8
|
+
import ToolbarItem from "@ui5/webcomponents/dist/ToolbarItem.js";
|
|
9
|
+
import customElement from "@ui5/webcomponents-base/dist/decorators/customElement.js";
|
|
10
|
+
import property from "@ui5/webcomponents-base/dist/decorators/property.js";
|
|
11
|
+
import event from "@ui5/webcomponents-base/dist/decorators/event-strict.js";
|
|
12
|
+
import jsxRenderer from "@ui5/webcomponents-base/dist/renderer/JsxRenderer.js";
|
|
13
|
+
import { getI18nBundle } from "@ui5/webcomponents-base/dist/i18nBundle.js";
|
|
14
|
+
import { VERSIONING_PREVIOUS_BUTTON_TEXT, VERSIONING_NEXT_BUTTON_TEXT, VERSIONING_PREVIOUS_BUTTON_TOOLTIP, VERSIONING_NEXT_BUTTON_TOOLTIP, } from "./generated/i18n/i18n-defaults.js";
|
|
15
|
+
// UI5 Components
|
|
16
|
+
import Button from "@ui5/webcomponents/dist/Button.js";
|
|
17
|
+
import Label from "@ui5/webcomponents/dist/Label.js";
|
|
18
|
+
import ToolbarButton from "@ui5/webcomponents/dist/ToolbarButton.js";
|
|
19
|
+
import ToolbarLabel from "./ToolbarLabel.js";
|
|
20
|
+
// Types
|
|
21
|
+
import VersioningTemplate from "./VersioningTemplate.js";
|
|
22
|
+
// Styles
|
|
23
|
+
import VersioningCss from "./generated/themes/Versioning.css.js";
|
|
24
|
+
// Icons
|
|
25
|
+
import "@ui5/webcomponents-icons/dist/navigation-left-arrow.js";
|
|
26
|
+
import "@ui5/webcomponents-icons/dist/navigation-right-arrow.js";
|
|
27
|
+
var LastClickedButton;
|
|
28
|
+
(function (LastClickedButton) {
|
|
29
|
+
LastClickedButton["None"] = "";
|
|
30
|
+
LastClickedButton["Previous"] = "previous";
|
|
31
|
+
LastClickedButton["Next"] = "next";
|
|
32
|
+
})(LastClickedButton || (LastClickedButton = {}));
|
|
33
|
+
/**
|
|
34
|
+
* @class
|
|
35
|
+
*
|
|
36
|
+
* ### Overview
|
|
37
|
+
*
|
|
38
|
+
* The `ui5-ai-versioning` component provides navigation controls for AI-generated content versions.
|
|
39
|
+
* It displays the current version index and total versions, with previous/next navigation buttons.
|
|
40
|
+
* This component extends ToolbarItem to participate in toolbar overflow behavior as a single unit.
|
|
41
|
+
*
|
|
42
|
+
* ### Structure
|
|
43
|
+
* The `ui5-ai-versioning` consists of the following elements:
|
|
44
|
+
* - Previous Button: Navigates to the previous version (disabled when at first version)
|
|
45
|
+
* - Version Counter: Shows current version / total versions (e.g., "2 / 5")
|
|
46
|
+
* - Next Button: Navigates to the nex
|
|
47
|
+
* t version (disabled when at last version)
|
|
48
|
+
*
|
|
49
|
+
* ### Focus Management
|
|
50
|
+
* The component automatically manages focus when users reach version boundaries,
|
|
51
|
+
* moving focus to the available navigation button when one becomes disabled.
|
|
52
|
+
*
|
|
53
|
+
* ### Responsive Behavior
|
|
54
|
+
* When used in a toolbar, the entire versioning component (buttons + label) will overflow
|
|
55
|
+
* together as a single unit when there is insufficient space.
|
|
56
|
+
*
|
|
57
|
+
* ### ES6 Module Import
|
|
58
|
+
*
|
|
59
|
+
* `import "@ui5/webcomponents-ai/dist/Versioning.js";`
|
|
60
|
+
*
|
|
61
|
+
* @constructor
|
|
62
|
+
* @extends ToolbarItem
|
|
63
|
+
* @since 1.0.0-rc.1
|
|
64
|
+
* @private
|
|
65
|
+
*/
|
|
66
|
+
let Versioning = Versioning_1 = class Versioning extends ToolbarItem {
|
|
67
|
+
constructor() {
|
|
68
|
+
super(...arguments);
|
|
69
|
+
/**
|
|
70
|
+
* Indicates the index of the currently displayed result version.
|
|
71
|
+
*
|
|
72
|
+
* This property represents the current position in the version history.
|
|
73
|
+
* @default 0
|
|
74
|
+
* @public
|
|
75
|
+
*/
|
|
76
|
+
this.currentStep = 0;
|
|
77
|
+
/**
|
|
78
|
+
* The total number of available result versions.
|
|
79
|
+
*
|
|
80
|
+
* Note: Versioning is hidden if the value is `0`.
|
|
81
|
+
*
|
|
82
|
+
* @default 0
|
|
83
|
+
* @public
|
|
84
|
+
* @since 1.0.0-rc.1
|
|
85
|
+
*/
|
|
86
|
+
this.totalSteps = 0;
|
|
87
|
+
this._previousCurrentStep = 0;
|
|
88
|
+
this._previousTotalSteps = 0;
|
|
89
|
+
this._lastClickedButton = LastClickedButton.None;
|
|
90
|
+
}
|
|
91
|
+
static async onDefine() {
|
|
92
|
+
Versioning_1.i18nBundle = await getI18nBundle("@ui5/webcomponents-ai");
|
|
93
|
+
}
|
|
94
|
+
onAfterRendering() {
|
|
95
|
+
this._manageFocus();
|
|
96
|
+
this._previousCurrentStep = this.currentStep;
|
|
97
|
+
this._previousTotalSteps = this.totalSteps;
|
|
98
|
+
this._lastClickedButton = LastClickedButton.None;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Manages focus when navigation buttons become disabled/enabled.
|
|
102
|
+
* Automatically moves focus to available button when user reaches boundaries.
|
|
103
|
+
* @private
|
|
104
|
+
*/
|
|
105
|
+
_manageFocus() {
|
|
106
|
+
if (!this.shadowRoot) {
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
const previousButton = this.shadowRoot.querySelector("[data-ui5-versioning-button=\"previous\"]");
|
|
110
|
+
const nextButton = this.shadowRoot.querySelector("[data-ui5-versioning-button=\"next\"]");
|
|
111
|
+
if (!previousButton || !nextButton) {
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
const isPreviousDisabled = this.currentStep <= 1;
|
|
115
|
+
const isNextDisabled = this.currentStep === this.totalSteps;
|
|
116
|
+
const wasPreviousDisabled = this._previousCurrentStep <= 1;
|
|
117
|
+
const wasNextDisabled = this._previousCurrentStep === this._previousTotalSteps;
|
|
118
|
+
if (isPreviousDisabled && !wasPreviousDisabled && !isNextDisabled && this._lastClickedButton === LastClickedButton.Previous && nextButton instanceof HTMLElement) {
|
|
119
|
+
nextButton.focus();
|
|
120
|
+
this._lastClickedButton = LastClickedButton.None;
|
|
121
|
+
}
|
|
122
|
+
else if (isNextDisabled && !wasNextDisabled && !isPreviousDisabled && this._lastClickedButton === LastClickedButton.Next && previousButton instanceof HTMLElement) {
|
|
123
|
+
previousButton.focus();
|
|
124
|
+
this._lastClickedButton = LastClickedButton.None;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
handlePreviousVersionClick() {
|
|
128
|
+
this._lastClickedButton = LastClickedButton.Previous;
|
|
129
|
+
this.fireDecoratorEvent("version-change", { backwards: true });
|
|
130
|
+
}
|
|
131
|
+
handleNextVersionClick() {
|
|
132
|
+
this._lastClickedButton = LastClickedButton.Next;
|
|
133
|
+
this.fireDecoratorEvent("version-change", { backwards: false });
|
|
134
|
+
}
|
|
135
|
+
get _previousButtonAccessibleName() {
|
|
136
|
+
return Versioning_1.i18nBundle.getText(VERSIONING_PREVIOUS_BUTTON_TEXT);
|
|
137
|
+
}
|
|
138
|
+
get _nextButtonAccessibleName() {
|
|
139
|
+
return Versioning_1.i18nBundle.getText(VERSIONING_NEXT_BUTTON_TEXT);
|
|
140
|
+
}
|
|
141
|
+
get _previousButtonTooltip() {
|
|
142
|
+
return Versioning_1.i18nBundle.getText(VERSIONING_PREVIOUS_BUTTON_TOOLTIP);
|
|
143
|
+
}
|
|
144
|
+
get _nextButtonTooltip() {
|
|
145
|
+
return Versioning_1.i18nBundle.getText(VERSIONING_NEXT_BUTTON_TOOLTIP);
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* @override
|
|
149
|
+
*/
|
|
150
|
+
get classes() {
|
|
151
|
+
return {
|
|
152
|
+
root: {
|
|
153
|
+
...super.classes.root,
|
|
154
|
+
"ui5-ai-versioning": true,
|
|
155
|
+
},
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
};
|
|
159
|
+
__decorate([
|
|
160
|
+
property({ type: Number })
|
|
161
|
+
], Versioning.prototype, "currentStep", void 0);
|
|
162
|
+
__decorate([
|
|
163
|
+
property({ type: Number })
|
|
164
|
+
], Versioning.prototype, "totalSteps", void 0);
|
|
165
|
+
Versioning = Versioning_1 = __decorate([
|
|
166
|
+
customElement({
|
|
167
|
+
tag: "ui5-ai-versioning",
|
|
168
|
+
renderer: jsxRenderer,
|
|
169
|
+
styles: VersioningCss,
|
|
170
|
+
template: VersioningTemplate,
|
|
171
|
+
dependencies: [
|
|
172
|
+
Button,
|
|
173
|
+
Label,
|
|
174
|
+
ToolbarButton,
|
|
175
|
+
ToolbarLabel,
|
|
176
|
+
],
|
|
177
|
+
})
|
|
178
|
+
/**
|
|
179
|
+
* Fired when the user clicks on version navigation buttons.
|
|
180
|
+
*
|
|
181
|
+
* @public
|
|
182
|
+
*/
|
|
183
|
+
,
|
|
184
|
+
event("version-change")
|
|
185
|
+
], Versioning);
|
|
186
|
+
Versioning.define();
|
|
187
|
+
export default Versioning;
|
|
188
|
+
//# sourceMappingURL=Versioning.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Versioning.js","sourceRoot":"","sources":["../src/Versioning.ts"],"names":[],"mappings":"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","sourcesContent":["import ToolbarItem from \"@ui5/webcomponents/dist/ToolbarItem.js\";\nimport customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport event from \"@ui5/webcomponents-base/dist/decorators/event-strict.js\";\nimport jsxRenderer from \"@ui5/webcomponents-base/dist/renderer/JsxRenderer.js\";\n\nimport { getI18nBundle } from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport {\n\tVERSIONING_PREVIOUS_BUTTON_TEXT,\n\tVERSIONING_NEXT_BUTTON_TEXT,\n\tVERSIONING_PREVIOUS_BUTTON_TOOLTIP,\n\tVERSIONING_NEXT_BUTTON_TOOLTIP,\n} from \"./generated/i18n/i18n-defaults.js\";\n\n// UI5 Components\nimport Button from \"@ui5/webcomponents/dist/Button.js\";\nimport Label from \"@ui5/webcomponents/dist/Label.js\";\nimport ToolbarButton from \"@ui5/webcomponents/dist/ToolbarButton.js\";\nimport ToolbarLabel from \"./ToolbarLabel.js\";\n\n// Types\nimport VersioningTemplate from \"./VersioningTemplate.js\";\n\n// Styles\nimport VersioningCss from \"./generated/themes/Versioning.css.js\";\n\n// Icons\nimport \"@ui5/webcomponents-icons/dist/navigation-left-arrow.js\";\nimport \"@ui5/webcomponents-icons/dist/navigation-right-arrow.js\";\n\nenum LastClickedButton {\n\tNone = \"\",\n\tPrevious = \"previous\",\n\tNext = \"next\"\n}\n\n/**\n * @class\n *\n * ### Overview\n *\n * The `ui5-ai-versioning` component provides navigation controls for AI-generated content versions.\n * It displays the current version index and total versions, with previous/next navigation buttons.\n * This component extends ToolbarItem to participate in toolbar overflow behavior as a single unit.\n *\n * ### Structure\n * The `ui5-ai-versioning` consists of the following elements:\n * - Previous Button: Navigates to the previous version (disabled when at first version)\n * - Version Counter: Shows current version / total versions (e.g., \"2 / 5\")\n * - Next Button: Navigates to the nex\n * t version (disabled when at last version)\n *\n * ### Focus Management\n * The component automatically manages focus when users reach version boundaries,\n * moving focus to the available navigation button when one becomes disabled.\n *\n * ### Responsive Behavior\n * When used in a toolbar, the entire versioning component (buttons + label) will overflow\n * together as a single unit when there is insufficient space.\n *\n * ### ES6 Module Import\n *\n * `import \"@ui5/webcomponents-ai/dist/Versioning.js\";`\n *\n * @constructor\n * @extends ToolbarItem\n * @since 1.0.0-rc.1\n * @private\n */\n@customElement({\n\ttag: \"ui5-ai-versioning\",\n\trenderer: jsxRenderer,\n\tstyles: VersioningCss,\n\ttemplate: VersioningTemplate,\n\tdependencies: [\n\t\tButton,\n\t\tLabel,\n\t\tToolbarButton,\n\t\tToolbarLabel,\n\t],\n})\n\n/**\n * Fired when the user clicks on version navigation buttons.\n *\n * @public\n */\n@event(\"version-change\")\n\nclass Versioning extends ToolbarItem {\n\teventDetails!: ToolbarItem[\"eventDetails\"] & {\n\t\t\"version-change\": {\n\t\t\tbackwards: boolean;\n\t\t};\n\t};\n\n\t/**\n\t * Indicates the index of the currently displayed result version.\n\t *\n\t * This property represents the current position in the version history.\n\t * @default 0\n\t * @public\n\t */\n\t@property({ type: Number })\n\tcurrentStep = 0;\n\n\t/**\n\t * The total number of available result versions.\n\t *\n\t * Note: Versioning is hidden if the value is `0`.\n\t *\n\t * @default 0\n\t * @public\n\t * @since 1.0.0-rc.1\n\t */\n\t@property({ type: Number })\n\ttotalSteps = 0;\n\n\t_previousCurrentStep = 0;\n\t_previousTotalSteps = 0;\n\t_lastClickedButton = LastClickedButton.None;\n\n\tstatic i18nBundle: I18nBundle;\n\n\tstatic async onDefine() {\n\t\tVersioning.i18nBundle = await getI18nBundle(\"@ui5/webcomponents-ai\");\n\t}\n\n\tonAfterRendering() {\n\t\tthis._manageFocus();\n\t\tthis._previousCurrentStep = this.currentStep;\n\t\tthis._previousTotalSteps = this.totalSteps;\n\t\tthis._lastClickedButton = LastClickedButton.None;\n\t}\n\n\t/**\n\t * Manages focus when navigation buttons become disabled/enabled.\n\t * Automatically moves focus to available button when user reaches boundaries.\n\t * @private\n\t */\n\t_manageFocus() {\n\t\tif (!this.shadowRoot) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst previousButton = this.shadowRoot.querySelector(\"[data-ui5-versioning-button=\\\"previous\\\"]\");\n\t\tconst nextButton = this.shadowRoot.querySelector(\"[data-ui5-versioning-button=\\\"next\\\"]\");\n\n\t\tif (!previousButton || !nextButton) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst isPreviousDisabled = this.currentStep <= 1;\n\t\tconst isNextDisabled = this.currentStep === this.totalSteps;\n\t\tconst wasPreviousDisabled = this._previousCurrentStep <= 1;\n\t\tconst wasNextDisabled = this._previousCurrentStep === this._previousTotalSteps;\n\n\t\tif (isPreviousDisabled && !wasPreviousDisabled && !isNextDisabled && this._lastClickedButton === LastClickedButton.Previous && nextButton instanceof HTMLElement) {\n\t\t\tnextButton.focus();\n\t\t\tthis._lastClickedButton = LastClickedButton.None;\n\t\t} else if (isNextDisabled && !wasNextDisabled && !isPreviousDisabled && this._lastClickedButton === LastClickedButton.Next && previousButton instanceof HTMLElement) {\n\t\t\tpreviousButton.focus();\n\t\t\tthis._lastClickedButton = LastClickedButton.None;\n\t\t}\n\t}\n\n\thandlePreviousVersionClick() {\n\t\tthis._lastClickedButton = LastClickedButton.Previous;\n\t\tthis.fireDecoratorEvent(\"version-change\", { backwards: true });\n\t}\n\n\thandleNextVersionClick() {\n\t\tthis._lastClickedButton = LastClickedButton.Next;\n\t\tthis.fireDecoratorEvent(\"version-change\", { backwards: false });\n\t}\n\n\tget _previousButtonAccessibleName() {\n\t\treturn Versioning.i18nBundle.getText(VERSIONING_PREVIOUS_BUTTON_TEXT);\n\t}\n\n\tget _nextButtonAccessibleName() {\n\t\treturn Versioning.i18nBundle.getText(VERSIONING_NEXT_BUTTON_TEXT);\n\t}\n\n\tget _previousButtonTooltip() {\n\t\treturn Versioning.i18nBundle.getText(VERSIONING_PREVIOUS_BUTTON_TOOLTIP);\n\t}\n\n\tget _nextButtonTooltip() {\n\t\treturn Versioning.i18nBundle.getText(VERSIONING_NEXT_BUTTON_TOOLTIP);\n\t}\n\n\t/**\n\t * @override\n\t */\n\tget classes() {\n\t\treturn {\n\t\t\troot: {\n\t\t\t\t...super.classes.root,\n\t\t\t\t\"ui5-ai-versioning\": true,\n\t\t\t},\n\t\t};\n\t}\n}\n\nVersioning.define();\n\nexport default Versioning;\n"]}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type Versioning from "./Versioning.js";
|
|
2
|
+
import "@ui5/webcomponents-icons/dist/navigation-left-arrow.js";
|
|
3
|
+
import "@ui5/webcomponents-icons/dist/navigation-right-arrow.js";
|
|
4
|
+
export default function VersioningTemplate(this: Versioning): import("@ui5/webcomponents-base/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "@ui5/webcomponents-base/jsx-runtime";
|
|
2
|
+
import ToolbarLabel from "./ToolbarLabel.js";
|
|
3
|
+
import ToolbarButton from "@ui5/webcomponents/dist/ToolbarButton.js";
|
|
4
|
+
import "@ui5/webcomponents-icons/dist/navigation-left-arrow.js";
|
|
5
|
+
import "@ui5/webcomponents-icons/dist/navigation-right-arrow.js";
|
|
6
|
+
export default function VersioningTemplate() {
|
|
7
|
+
return (_jsxs(_Fragment, { children: [_jsx(ToolbarButton, { design: "Transparent", icon: "navigation-left-arrow", tooltip: this._previousButtonTooltip, accessibleName: this._previousButtonAccessibleName, disabled: this.currentStep <= 1, onClick: this.handlePreviousVersionClick, "data-ui5-versioning-button": "previous" }), _jsx(ToolbarLabel, { text: `${this.currentStep} / ${this.totalSteps}`, class: "version-step-counter" }), _jsx(ToolbarButton, { design: "Transparent", icon: "navigation-right-arrow", tooltip: this._nextButtonTooltip, accessibleName: this._nextButtonAccessibleName, disabled: this.totalSteps <= 0 || this.currentStep >= this.totalSteps, onClick: this.handleNextVersionClick, "data-ui5-versioning-button": "next" })] }));
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=VersioningTemplate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VersioningTemplate.js","sourceRoot":"","sources":["../src/VersioningTemplate.tsx"],"names":[],"mappings":";AACA,OAAO,YAAY,MAAM,mBAAmB,CAAC;AAC7C,OAAO,aAAa,MAAM,0CAA0C,CAAC;AACrE,OAAO,wDAAwD,CAAC;AAChE,OAAO,yDAAyD,CAAC;AAEjE,MAAM,CAAC,OAAO,UAAU,kBAAkB;IACzC,OAAO,CACN,8BACC,KAAC,aAAa,IACb,MAAM,EAAC,aAAa,EACpB,IAAI,EAAC,uBAAuB,EAC5B,OAAO,EAAE,IAAI,CAAC,sBAAsB,EACpC,cAAc,EAAE,IAAI,CAAC,6BAA6B,EAClD,QAAQ,EAAE,IAAI,CAAC,WAAW,IAAI,CAAC,EAC/B,OAAO,EAAE,IAAI,CAAC,0BAA0B,gCACb,UAAU,GACpC,EACF,KAAC,YAAY,IACZ,IAAI,EAAE,GAAG,IAAI,CAAC,WAAW,MAAM,IAAI,CAAC,UAAU,EAAE,EAChD,KAAK,EAAC,sBAAsB,GAC3B,EACF,KAAC,aAAa,IACb,MAAM,EAAC,aAAa,EACpB,IAAI,EAAC,wBAAwB,EAC7B,OAAO,EAAE,IAAI,CAAC,kBAAkB,EAChC,cAAc,EAAE,IAAI,CAAC,yBAAyB,EAC9C,QAAQ,EAAE,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,UAAU,EACrE,OAAO,EAAE,IAAI,CAAC,sBAAsB,gCACT,MAAM,GAChC,IACA,CACH,CAAC;AACH,CAAC","sourcesContent":["import type Versioning from \"./Versioning.js\";\nimport ToolbarLabel from \"./ToolbarLabel.js\";\nimport ToolbarButton from \"@ui5/webcomponents/dist/ToolbarButton.js\";\nimport \"@ui5/webcomponents-icons/dist/navigation-left-arrow.js\";\nimport \"@ui5/webcomponents-icons/dist/navigation-right-arrow.js\";\n\nexport default function VersioningTemplate(this: Versioning) {\n\treturn (\n\t\t<>\n\t\t\t<ToolbarButton\n\t\t\t\tdesign=\"Transparent\"\n\t\t\t\ticon=\"navigation-left-arrow\"\n\t\t\t\ttooltip={this._previousButtonTooltip}\n\t\t\t\taccessibleName={this._previousButtonAccessibleName}\n\t\t\t\tdisabled={this.currentStep <= 1}\n\t\t\t\tonClick={this.handlePreviousVersionClick}\n\t\t\t\tdata-ui5-versioning-button=\"previous\"\n\t\t\t/>\n\t\t\t<ToolbarLabel\n\t\t\t\ttext={`${this.currentStep} / ${this.totalSteps}`}\n\t\t\t\tclass=\"version-step-counter\"\n\t\t\t/>\n\t\t\t<ToolbarButton\n\t\t\t\tdesign=\"Transparent\"\n\t\t\t\ticon=\"navigation-right-arrow\"\n\t\t\t\ttooltip={this._nextButtonTooltip}\n\t\t\t\taccessibleName={this._nextButtonAccessibleName}\n\t\t\t\tdisabled={this.totalSteps <= 0 || this.currentStep >= this.totalSteps}\n\t\t\t\tonClick={this.handleNextVersionClick}\n\t\t\t\tdata-ui5-versioning-button=\"next\"\n\t\t\t/>\n\t\t</>\n\t);\n}\n"]}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import UI5Element from "@ui5/webcomponents-base/dist/UI5Element.js";
|
|
2
|
+
import type I18nBundle from "@ui5/webcomponents-base/dist/i18nBundle.js";
|
|
3
|
+
import "@ui5/webcomponents-icons/dist/ai.js";
|
|
4
|
+
import "@ui5/webcomponents-icons/dist/stop.js";
|
|
5
|
+
/**
|
|
6
|
+
* @class
|
|
7
|
+
*
|
|
8
|
+
* ### Overview
|
|
9
|
+
*
|
|
10
|
+
* The `ui5-ai-textarea-toolbar` component provides a specialized toolbar for AI TextArea functionality.
|
|
11
|
+
* It manages different states of the AI assistant and provides version navigation capabilities.
|
|
12
|
+
*
|
|
13
|
+
* ### Structure
|
|
14
|
+
* The `ui5-ai-textarea-toolbar` consists of the following elements:
|
|
15
|
+
* - AI Generate Button: Triggers AI text generation or stops ongoing generation
|
|
16
|
+
* - Version Navigation: Allows navigation between multiple AI-generated results
|
|
17
|
+
* - Action Label: Displays the current AI action being performed
|
|
18
|
+
*
|
|
19
|
+
* ### ES6 Module Import
|
|
20
|
+
*
|
|
21
|
+
* `import "@sap-webcomponents/ai/dist/WritingAssistant.js";`
|
|
22
|
+
*
|
|
23
|
+
* @constructor
|
|
24
|
+
* @extends UI5Element
|
|
25
|
+
* @since 1.0.0-rc.1
|
|
26
|
+
* @private
|
|
27
|
+
*/
|
|
28
|
+
declare class WritingAssistant extends UI5Element {
|
|
29
|
+
eventDetails: {
|
|
30
|
+
"version-change": {
|
|
31
|
+
backwards: boolean;
|
|
32
|
+
};
|
|
33
|
+
"button-click": {
|
|
34
|
+
clickTarget: HTMLElement;
|
|
35
|
+
};
|
|
36
|
+
"stop-generation": object;
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* Defines whether the Writing Assistant is currently loading.
|
|
40
|
+
*
|
|
41
|
+
* When `true`, indicates that an AI action is in progress.
|
|
42
|
+
*
|
|
43
|
+
* @default false
|
|
44
|
+
*/
|
|
45
|
+
loading: boolean;
|
|
46
|
+
static i18nBundle: I18nBundle;
|
|
47
|
+
static onDefine(): Promise<void>;
|
|
48
|
+
/**
|
|
49
|
+
* Defines the action text of the AI Writing Assistant.
|
|
50
|
+
*
|
|
51
|
+
* This text is displayed in the toolbar to indicate the current or last
|
|
52
|
+
* performed AI action (e.g., "Generated text", "Simplified text").
|
|
53
|
+
*
|
|
54
|
+
* @default ""
|
|
55
|
+
* @public
|
|
56
|
+
* @since 1.0.0-rc.1
|
|
57
|
+
*/
|
|
58
|
+
actionText: string;
|
|
59
|
+
/**
|
|
60
|
+
* Indicates the index of the currently displayed result version.
|
|
61
|
+
*
|
|
62
|
+
* The index is **1-based** (i.e. `1` represents the first result).
|
|
63
|
+
* This property is synchronized with the parent AI TextArea component.
|
|
64
|
+
*
|
|
65
|
+
* @default 1
|
|
66
|
+
* @public
|
|
67
|
+
* @since 1.0.0-rc.1
|
|
68
|
+
*/
|
|
69
|
+
currentVersionIndex: number;
|
|
70
|
+
/**
|
|
71
|
+
* Indicates the total number of result versions available.
|
|
72
|
+
*
|
|
73
|
+
* This property determines whether version navigation controls are displayed.
|
|
74
|
+
* When totalVersions > 1, previous/next buttons become available.
|
|
75
|
+
*
|
|
76
|
+
* @default 1
|
|
77
|
+
* @public
|
|
78
|
+
* @since 1.0.0-rc.1
|
|
79
|
+
*/
|
|
80
|
+
totalVersions: number;
|
|
81
|
+
/**
|
|
82
|
+
* Handles the version change event from the versioning component.
|
|
83
|
+
*/
|
|
84
|
+
handleVersionChange(e: CustomEvent<{
|
|
85
|
+
backwards: boolean;
|
|
86
|
+
}>): void;
|
|
87
|
+
/**
|
|
88
|
+
* Handles the click event for the AI generate button.
|
|
89
|
+
* Toggles between generate and stop states based on current button state.
|
|
90
|
+
*
|
|
91
|
+
* @public
|
|
92
|
+
*/
|
|
93
|
+
handleButtonClick(e: Event): void;
|
|
94
|
+
get _ariaLabel(): string;
|
|
95
|
+
get _previousButtonAccessibleName(): string;
|
|
96
|
+
get _nextButtonAccessibleName(): string;
|
|
97
|
+
get _toolbarAccessibleName(): string;
|
|
98
|
+
get _buttonAccessibleName(): string;
|
|
99
|
+
get _buttonTooltip(): string;
|
|
100
|
+
}
|
|
101
|
+
export default WritingAssistant;
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var WritingAssistant_1;
|
|
8
|
+
import customElement from "@ui5/webcomponents-base/dist/decorators/customElement.js";
|
|
9
|
+
import property from "@ui5/webcomponents-base/dist/decorators/property.js";
|
|
10
|
+
import event from "@ui5/webcomponents-base/dist/decorators/event-strict.js";
|
|
11
|
+
import jsxRenderer from "@ui5/webcomponents-base/dist/renderer/JsxRenderer.js";
|
|
12
|
+
import UI5Element from "@ui5/webcomponents-base/dist/UI5Element.js";
|
|
13
|
+
import announce from "@ui5/webcomponents-base/dist/util/InvisibleMessage.js";
|
|
14
|
+
import { getI18nBundle } from "@ui5/webcomponents-base/dist/i18nBundle.js";
|
|
15
|
+
import { WRITING_ASSISTANT_LABEL, VERSIONING_PREVIOUS_BUTTON_TEXT, VERSIONING_NEXT_BUTTON_TEXT, WRITING_ASSISTANT_GENERATING_ANNOUNCEMENT, WRITING_ASSISTANT_TOOLBAR_ACCESSIBLE_NAME, WRITING_ASSISTANT_BUTTON_ACCESSIBLE_NAME, WRITING_ASSISTANT_BUTTON_TOOLTIP, } from "./generated/i18n/i18n-defaults.js";
|
|
16
|
+
// Styles
|
|
17
|
+
import WritingAssistantCss from "./generated/themes/WritingAssistant.css.js";
|
|
18
|
+
// Templates
|
|
19
|
+
import WritingAssistantTemplate from "./WritingAssistantTemplate.js";
|
|
20
|
+
import Versioning from "./Versioning.js";
|
|
21
|
+
import ToolbarLabel from "./ToolbarLabel.js";
|
|
22
|
+
// UI5 Components
|
|
23
|
+
import Toolbar from "@ui5/webcomponents/dist/Toolbar.js";
|
|
24
|
+
import ToolbarSpacer from "@ui5/webcomponents/dist/ToolbarSpacer.js";
|
|
25
|
+
import ToolbarButton from "@ui5/webcomponents/dist/ToolbarButton.js";
|
|
26
|
+
// Icons
|
|
27
|
+
import "@ui5/webcomponents-icons/dist/ai.js";
|
|
28
|
+
import "@ui5/webcomponents-icons/dist/stop.js";
|
|
29
|
+
/**
|
|
30
|
+
* @class
|
|
31
|
+
*
|
|
32
|
+
* ### Overview
|
|
33
|
+
*
|
|
34
|
+
* The `ui5-ai-textarea-toolbar` component provides a specialized toolbar for AI TextArea functionality.
|
|
35
|
+
* It manages different states of the AI assistant and provides version navigation capabilities.
|
|
36
|
+
*
|
|
37
|
+
* ### Structure
|
|
38
|
+
* The `ui5-ai-textarea-toolbar` consists of the following elements:
|
|
39
|
+
* - AI Generate Button: Triggers AI text generation or stops ongoing generation
|
|
40
|
+
* - Version Navigation: Allows navigation between multiple AI-generated results
|
|
41
|
+
* - Action Label: Displays the current AI action being performed
|
|
42
|
+
*
|
|
43
|
+
* ### ES6 Module Import
|
|
44
|
+
*
|
|
45
|
+
* `import "@sap-webcomponents/ai/dist/WritingAssistant.js";`
|
|
46
|
+
*
|
|
47
|
+
* @constructor
|
|
48
|
+
* @extends UI5Element
|
|
49
|
+
* @since 1.0.0-rc.1
|
|
50
|
+
* @private
|
|
51
|
+
*/
|
|
52
|
+
let WritingAssistant = WritingAssistant_1 = class WritingAssistant extends UI5Element {
|
|
53
|
+
constructor() {
|
|
54
|
+
super(...arguments);
|
|
55
|
+
/**
|
|
56
|
+
* Defines whether the Writing Assistant is currently loading.
|
|
57
|
+
*
|
|
58
|
+
* When `true`, indicates that an AI action is in progress.
|
|
59
|
+
*
|
|
60
|
+
* @default false
|
|
61
|
+
*/
|
|
62
|
+
this.loading = false;
|
|
63
|
+
/**
|
|
64
|
+
* Defines the action text of the AI Writing Assistant.
|
|
65
|
+
*
|
|
66
|
+
* This text is displayed in the toolbar to indicate the current or last
|
|
67
|
+
* performed AI action (e.g., "Generated text", "Simplified text").
|
|
68
|
+
*
|
|
69
|
+
* @default ""
|
|
70
|
+
* @public
|
|
71
|
+
* @since 1.0.0-rc.1
|
|
72
|
+
*/
|
|
73
|
+
this.actionText = "";
|
|
74
|
+
/**
|
|
75
|
+
* Indicates the index of the currently displayed result version.
|
|
76
|
+
*
|
|
77
|
+
* The index is **1-based** (i.e. `1` represents the first result).
|
|
78
|
+
* This property is synchronized with the parent AI TextArea component.
|
|
79
|
+
*
|
|
80
|
+
* @default 1
|
|
81
|
+
* @public
|
|
82
|
+
* @since 1.0.0-rc.1
|
|
83
|
+
*/
|
|
84
|
+
this.currentVersionIndex = 1;
|
|
85
|
+
/**
|
|
86
|
+
* Indicates the total number of result versions available.
|
|
87
|
+
*
|
|
88
|
+
* This property determines whether version navigation controls are displayed.
|
|
89
|
+
* When totalVersions > 1, previous/next buttons become available.
|
|
90
|
+
*
|
|
91
|
+
* @default 1
|
|
92
|
+
* @public
|
|
93
|
+
* @since 1.0.0-rc.1
|
|
94
|
+
*/
|
|
95
|
+
this.totalVersions = 1;
|
|
96
|
+
}
|
|
97
|
+
static async onDefine() {
|
|
98
|
+
WritingAssistant_1.i18nBundle = await getI18nBundle("@ui5/webcomponents-ai");
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Handles the version change event from the versioning component.
|
|
102
|
+
*/
|
|
103
|
+
handleVersionChange(e) {
|
|
104
|
+
this.fireDecoratorEvent("version-change", { backwards: e.detail.backwards });
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Handles the click event for the AI generate button.
|
|
108
|
+
* Toggles between generate and stop states based on current button state.
|
|
109
|
+
*
|
|
110
|
+
* @public
|
|
111
|
+
*/
|
|
112
|
+
handleButtonClick(e) {
|
|
113
|
+
const target = e.target;
|
|
114
|
+
if (target?.dataset?.state === "generating") {
|
|
115
|
+
this.fireDecoratorEvent("stop-generation");
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
this.fireDecoratorEvent("button-click", { clickTarget: target });
|
|
119
|
+
announce(WritingAssistant_1.i18nBundle.getText(WRITING_ASSISTANT_GENERATING_ANNOUNCEMENT), "Polite");
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
get _ariaLabel() {
|
|
123
|
+
return WritingAssistant_1.i18nBundle.getText(WRITING_ASSISTANT_LABEL);
|
|
124
|
+
}
|
|
125
|
+
get _previousButtonAccessibleName() {
|
|
126
|
+
return WritingAssistant_1.i18nBundle.getText(VERSIONING_PREVIOUS_BUTTON_TEXT);
|
|
127
|
+
}
|
|
128
|
+
get _nextButtonAccessibleName() {
|
|
129
|
+
return WritingAssistant_1.i18nBundle.getText(VERSIONING_NEXT_BUTTON_TEXT);
|
|
130
|
+
}
|
|
131
|
+
get _toolbarAccessibleName() {
|
|
132
|
+
return WritingAssistant_1.i18nBundle.getText(WRITING_ASSISTANT_TOOLBAR_ACCESSIBLE_NAME);
|
|
133
|
+
}
|
|
134
|
+
get _buttonAccessibleName() {
|
|
135
|
+
return WritingAssistant_1.i18nBundle.getText(WRITING_ASSISTANT_BUTTON_ACCESSIBLE_NAME);
|
|
136
|
+
}
|
|
137
|
+
get _buttonTooltip() {
|
|
138
|
+
return WritingAssistant_1.i18nBundle.getText(WRITING_ASSISTANT_BUTTON_TOOLTIP);
|
|
139
|
+
}
|
|
140
|
+
};
|
|
141
|
+
__decorate([
|
|
142
|
+
property({ type: Boolean })
|
|
143
|
+
], WritingAssistant.prototype, "loading", void 0);
|
|
144
|
+
__decorate([
|
|
145
|
+
property()
|
|
146
|
+
], WritingAssistant.prototype, "actionText", void 0);
|
|
147
|
+
__decorate([
|
|
148
|
+
property({ type: Number })
|
|
149
|
+
], WritingAssistant.prototype, "currentVersionIndex", void 0);
|
|
150
|
+
__decorate([
|
|
151
|
+
property({ type: Number })
|
|
152
|
+
], WritingAssistant.prototype, "totalVersions", void 0);
|
|
153
|
+
WritingAssistant = WritingAssistant_1 = __decorate([
|
|
154
|
+
customElement({
|
|
155
|
+
tag: "ui5-ai-writing-assistant",
|
|
156
|
+
languageAware: true,
|
|
157
|
+
renderer: jsxRenderer,
|
|
158
|
+
template: WritingAssistantTemplate,
|
|
159
|
+
styles: [WritingAssistantCss],
|
|
160
|
+
dependencies: [
|
|
161
|
+
Versioning,
|
|
162
|
+
ToolbarLabel,
|
|
163
|
+
Toolbar,
|
|
164
|
+
ToolbarSpacer,
|
|
165
|
+
ToolbarButton,
|
|
166
|
+
],
|
|
167
|
+
})
|
|
168
|
+
/**
|
|
169
|
+
* Fired when the user clicks on version navigation buttons.
|
|
170
|
+
*
|
|
171
|
+
* @public
|
|
172
|
+
*/
|
|
173
|
+
,
|
|
174
|
+
event("version-change")
|
|
175
|
+
/**
|
|
176
|
+
* Fired when the user clicks on the AI button.
|
|
177
|
+
*
|
|
178
|
+
* @public
|
|
179
|
+
*/
|
|
180
|
+
,
|
|
181
|
+
event("button-click")
|
|
182
|
+
/**
|
|
183
|
+
* Fired when the user clicks on the "Stop" button to stop ongoing AI text generation.
|
|
184
|
+
*
|
|
185
|
+
* @public
|
|
186
|
+
*/
|
|
187
|
+
,
|
|
188
|
+
event("stop-generation")
|
|
189
|
+
], WritingAssistant);
|
|
190
|
+
WritingAssistant.define();
|
|
191
|
+
export default WritingAssistant;
|
|
192
|
+
//# sourceMappingURL=WritingAssistant.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WritingAssistant.js","sourceRoot":"","sources":["../src/WritingAssistant.ts"],"names":[],"mappings":";;;;;;;AAAA,OAAO,aAAa,MAAM,0DAA0D,CAAC;AACrF,OAAO,QAAQ,MAAM,qDAAqD,CAAC;AAC3E,OAAO,KAAK,MAAM,yDAAyD,CAAC;AAC5E,OAAO,WAAW,MAAM,sDAAsD,CAAC;AAC/E,OAAO,UAAU,MAAM,4CAA4C,CAAC;AACpE,OAAO,QAAQ,MAAM,uDAAuD,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,4CAA4C,CAAC;AAE3E,OAAO,EACN,uBAAuB,EACvB,+BAA+B,EAC/B,2BAA2B,EAC3B,yCAAyC,EACzC,yCAAyC,EACzC,wCAAwC,EACxC,gCAAgC,GAChC,MAAM,mCAAmC,CAAC;AAE3C,SAAS;AACT,OAAO,mBAAmB,MAAM,4CAA4C,CAAC;AAE7E,YAAY;AACZ,OAAO,wBAAwB,MAAM,+BAA+B,CAAC;AACrE,OAAO,UAAU,MAAM,iBAAiB,CAAC;AACzC,OAAO,YAAY,MAAM,mBAAmB,CAAC;AAE7C,iBAAiB;AACjB,OAAO,OAAO,MAAM,oCAAoC,CAAC;AACzD,OAAO,aAAa,MAAM,0CAA0C,CAAC;AACrE,OAAO,aAAa,MAAM,0CAA0C,CAAC;AAErE,QAAQ;AACR,OAAO,qCAAqC,CAAC;AAC7C,OAAO,uCAAuC,CAAC;AAE/C;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAqCH,IAAM,gBAAgB,wBAAtB,MAAM,gBAAiB,SAAQ,UAAU;IAAzC;;QAWC;;;;;;WAMG;QAEH,YAAO,GAAG,KAAK,CAAC;QAQhB;;;;;;;;;WASG;QAEH,eAAU,GAAG,EAAE,CAAC;QAEhB;;;;;;;;;WASG;QAEH,wBAAmB,GAAG,CAAC,CAAC;QAExB;;;;;;;;;WASG;QAEH,kBAAa,GAAG,CAAC,CAAC;IA+CnB,CAAC;IAxFA,MAAM,CAAC,KAAK,CAAC,QAAQ;QACpB,kBAAgB,CAAC,UAAU,GAAG,MAAM,aAAa,CAAC,uBAAuB,CAAC,CAAC;IAC5E,CAAC;IAyCD;;OAEG;IACH,mBAAmB,CAAC,CAAsC;QACzD,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;IAC9E,CAAC;IAED;;;;;OAKG;IACH,iBAAiB,CAAC,CAAQ;QACzB,MAAM,MAAM,GAAG,CAAC,CAAC,MAAwD,CAAC;QAC1E,IAAI,MAAM,EAAE,OAAO,EAAE,KAAK,KAAK,YAAY,EAAE,CAAC;YAC7C,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,CAAC;QAC5C,CAAC;aAAM,CAAC;YACP,IAAI,CAAC,kBAAkB,CAAC,cAAc,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,CAAC;YACjE,QAAQ,CAAC,kBAAgB,CAAC,UAAU,CAAC,OAAO,CAAC,yCAAyC,CAAC,EAAE,QAAQ,CAAC,CAAC;QACpG,CAAC;IACF,CAAC;IACD,IAAI,UAAU;QACb,OAAO,kBAAgB,CAAC,UAAU,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;IACrE,CAAC;IAED,IAAI,6BAA6B;QAChC,OAAO,kBAAgB,CAAC,UAAU,CAAC,OAAO,CAAC,+BAA+B,CAAC,CAAC;IAC7E,CAAC;IAED,IAAI,yBAAyB;QAC5B,OAAO,kBAAgB,CAAC,UAAU,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC;IACzE,CAAC;IAED,IAAI,sBAAsB;QACzB,OAAO,kBAAgB,CAAC,UAAU,CAAC,OAAO,CAAC,yCAAyC,CAAC,CAAC;IACvF,CAAC;IAED,IAAI,qBAAqB;QACxB,OAAO,kBAAgB,CAAC,UAAU,CAAC,OAAO,CAAC,wCAAwC,CAAC,CAAC;IACtF,CAAC;IAED,IAAI,cAAc;QACjB,OAAO,kBAAgB,CAAC,UAAU,CAAC,OAAO,CAAC,gCAAgC,CAAC,CAAC;IAC9E,CAAC;CACD,CAAA;AA5FA;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;iDACZ;AAmBhB;IADC,QAAQ,EAAE;oDACK;AAahB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;6DACH;AAaxB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;uDACT;AAhEb,gBAAgB;IApCrB,aAAa,CAAC;QACd,GAAG,EAAE,0BAA0B;QAC/B,aAAa,EAAE,IAAI;QACnB,QAAQ,EAAE,WAAW;QACrB,QAAQ,EAAE,wBAAwB;QAClC,MAAM,EAAE,CAAC,mBAAmB,CAAC;QAC7B,YAAY,EAAE;YACb,UAAU;YACV,YAAY;YACZ,OAAO;YACP,aAAa;YACb,aAAa;SACb;KACD,CAAC;IAEF;;;;OAIG;;IACF,KAAK,CAAC,gBAAgB,CAAC;IAExB;;;;OAIG;;IACF,KAAK,CAAC,cAAc,CAAC;IAEtB;;;;OAIG;;IACF,KAAK,CAAC,iBAAiB,CAAC;GAEnB,gBAAgB,CA+GrB;AAED,gBAAgB,CAAC,MAAM,EAAE,CAAC;AAE1B,eAAe,gBAAgB,CAAC","sourcesContent":["import customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport event from \"@ui5/webcomponents-base/dist/decorators/event-strict.js\";\nimport jsxRenderer from \"@ui5/webcomponents-base/dist/renderer/JsxRenderer.js\";\nimport UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport announce from \"@ui5/webcomponents-base/dist/util/InvisibleMessage.js\";\nimport { getI18nBundle } from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport {\n\tWRITING_ASSISTANT_LABEL,\n\tVERSIONING_PREVIOUS_BUTTON_TEXT,\n\tVERSIONING_NEXT_BUTTON_TEXT,\n\tWRITING_ASSISTANT_GENERATING_ANNOUNCEMENT,\n\tWRITING_ASSISTANT_TOOLBAR_ACCESSIBLE_NAME,\n\tWRITING_ASSISTANT_BUTTON_ACCESSIBLE_NAME,\n\tWRITING_ASSISTANT_BUTTON_TOOLTIP,\n} from \"./generated/i18n/i18n-defaults.js\";\n\n// Styles\nimport WritingAssistantCss from \"./generated/themes/WritingAssistant.css.js\";\n\n// Templates\nimport WritingAssistantTemplate from \"./WritingAssistantTemplate.js\";\nimport Versioning from \"./Versioning.js\";\nimport ToolbarLabel from \"./ToolbarLabel.js\";\n\n// UI5 Components\nimport Toolbar from \"@ui5/webcomponents/dist/Toolbar.js\";\nimport ToolbarSpacer from \"@ui5/webcomponents/dist/ToolbarSpacer.js\";\nimport ToolbarButton from \"@ui5/webcomponents/dist/ToolbarButton.js\";\n\n// Icons\nimport \"@ui5/webcomponents-icons/dist/ai.js\";\nimport \"@ui5/webcomponents-icons/dist/stop.js\";\n\n/**\n * @class\n *\n * ### Overview\n *\n * The `ui5-ai-textarea-toolbar` component provides a specialized toolbar for AI TextArea functionality.\n * It manages different states of the AI assistant and provides version navigation capabilities.\n *\n * ### Structure\n * The `ui5-ai-textarea-toolbar` consists of the following elements:\n * - AI Generate Button: Triggers AI text generation or stops ongoing generation\n * - Version Navigation: Allows navigation between multiple AI-generated results\n * - Action Label: Displays the current AI action being performed\n *\n * ### ES6 Module Import\n *\n * `import \"@sap-webcomponents/ai/dist/WritingAssistant.js\";`\n *\n * @constructor\n * @extends UI5Element\n * @since 1.0.0-rc.1\n * @private\n */\n@customElement({\n\ttag: \"ui5-ai-writing-assistant\",\n\tlanguageAware: true,\n\trenderer: jsxRenderer,\n\ttemplate: WritingAssistantTemplate,\n\tstyles: [WritingAssistantCss],\n\tdependencies: [\n\t\tVersioning,\n\t\tToolbarLabel,\n\t\tToolbar,\n\t\tToolbarSpacer,\n\t\tToolbarButton,\n\t],\n})\n\n/**\n * Fired when the user clicks on version navigation buttons.\n *\n * @public\n */\n@event(\"version-change\")\n\n/**\n * Fired when the user clicks on the AI button.\n *\n * @public\n */\n@event(\"button-click\")\n\n/**\n * Fired when the user clicks on the \"Stop\" button to stop ongoing AI text generation.\n *\n * @public\n */\n@event(\"stop-generation\")\n\nclass WritingAssistant extends UI5Element {\n\teventDetails!: {\n\t\t\"version-change\": {\n\t\t\tbackwards: boolean;\n\t\t};\n\t\t\"button-click\": {\n\t\t\tclickTarget: HTMLElement;\n\t\t};\n\t\t\"stop-generation\": object;\n\t};\n\n\t/**\n\t * Defines whether the Writing Assistant is currently loading.\n\t *\n\t * When `true`, indicates that an AI action is in progress.\n\t *\n\t * @default false\n\t */\n\t@property({ type: Boolean })\n\tloading = false;\n\n\tstatic i18nBundle: I18nBundle;\n\n\tstatic async onDefine() {\n\t\tWritingAssistant.i18nBundle = await getI18nBundle(\"@ui5/webcomponents-ai\");\n\t}\n\n\t/**\n\t * Defines the action text of the AI Writing Assistant.\n\t *\n\t * This text is displayed in the toolbar to indicate the current or last\n\t * performed AI action (e.g., \"Generated text\", \"Simplified text\").\n\t *\n\t * @default \"\"\n\t * @public\n\t * @since 1.0.0-rc.1\n\t */\n\t@property()\n\tactionText = \"\";\n\n\t/**\n\t * Indicates the index of the currently displayed result version.\n\t *\n\t * The index is **1-based** (i.e. `1` represents the first result).\n\t * This property is synchronized with the parent AI TextArea component.\n\t *\n\t * @default 1\n\t * @public\n\t * @since 1.0.0-rc.1\n\t */\n\t@property({ type: Number })\n\tcurrentVersionIndex = 1;\n\n\t/**\n\t * Indicates the total number of result versions available.\n\t *\n\t * This property determines whether version navigation controls are displayed.\n\t * When totalVersions > 1, previous/next buttons become available.\n\t *\n\t * @default 1\n\t * @public\n\t * @since 1.0.0-rc.1\n\t */\n\t@property({ type: Number })\n\ttotalVersions = 1;\n\n\t/**\n\t * Handles the version change event from the versioning component.\n\t */\n\thandleVersionChange(e: CustomEvent<{ backwards: boolean }>) {\n\t\tthis.fireDecoratorEvent(\"version-change\", { backwards: e.detail.backwards });\n\t}\n\n\t/**\n\t * Handles the click event for the AI generate button.\n\t * Toggles between generate and stop states based on current button state.\n\t *\n\t * @public\n\t */\n\thandleButtonClick(e: Event): void {\n\t\tconst target = e.target as HTMLElement & { dataset?: { state?: string } };\n\t\tif (target?.dataset?.state === \"generating\") {\n\t\t\tthis.fireDecoratorEvent(\"stop-generation\");\n\t\t} else {\n\t\t\tthis.fireDecoratorEvent(\"button-click\", { clickTarget: target });\n\t\t\tannounce(WritingAssistant.i18nBundle.getText(WRITING_ASSISTANT_GENERATING_ANNOUNCEMENT), \"Polite\");\n\t\t}\n\t}\n\tget _ariaLabel() {\n\t\treturn WritingAssistant.i18nBundle.getText(WRITING_ASSISTANT_LABEL);\n\t}\n\n\tget _previousButtonAccessibleName() {\n\t\treturn WritingAssistant.i18nBundle.getText(VERSIONING_PREVIOUS_BUTTON_TEXT);\n\t}\n\n\tget _nextButtonAccessibleName() {\n\t\treturn WritingAssistant.i18nBundle.getText(VERSIONING_NEXT_BUTTON_TEXT);\n\t}\n\n\tget _toolbarAccessibleName() {\n\t\treturn WritingAssistant.i18nBundle.getText(WRITING_ASSISTANT_TOOLBAR_ACCESSIBLE_NAME);\n\t}\n\n\tget _buttonAccessibleName() {\n\t\treturn WritingAssistant.i18nBundle.getText(WRITING_ASSISTANT_BUTTON_ACCESSIBLE_NAME);\n\t}\n\n\tget _buttonTooltip() {\n\t\treturn WritingAssistant.i18nBundle.getText(WRITING_ASSISTANT_BUTTON_TOOLTIP);\n\t}\n}\n\nWritingAssistant.define();\n\nexport default WritingAssistant;\n"]}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "@ui5/webcomponents-base/jsx-runtime";
|
|
2
|
+
import Versioning from "./Versioning.js";
|
|
3
|
+
import ToolbarLabel from "./ToolbarLabel.js";
|
|
4
|
+
import Toolbar from "@ui5/webcomponents/dist/Toolbar.js";
|
|
5
|
+
import ToolbarSpacer from "@ui5/webcomponents/dist/ToolbarSpacer.js";
|
|
6
|
+
import ToolbarButton from "@ui5/webcomponents/dist/ToolbarButton.js";
|
|
7
|
+
export default function WritingAssistantTemplate() {
|
|
8
|
+
const isMultiResults = this.totalVersions > 1;
|
|
9
|
+
const hasResults = (this.totalVersions > 0 && this.actionText) || this.loading;
|
|
10
|
+
return (_jsxs(Toolbar, { accessibleName: this._toolbarAccessibleName, "aria-roledescription": "toolbar", class: `ui5-ai-writing-assistant-footer-bar${hasResults ? "--with-border" : ""}`, children: [isMultiResults && !this.loading && (_jsx(Versioning, { currentStep: this.currentVersionIndex, totalSteps: this.totalVersions, "onVersion-change": this.handleVersionChange })), hasResults && this.actionText && (_jsx(ToolbarLabel, { text: this.actionText, class: "ui5-ai-writing-assistant-action-label" })), _jsx(ToolbarSpacer, {}), _jsx(ToolbarButton, { id: "ai-menu-btn", design: "Transparent", icon: this.loading ? "stop" : "ai", "data-state": this.loading ? "generating" : "generate", onClick: this.handleButtonClick, tooltip: this._buttonTooltip, accessibilityAttributes: { hasPopup: this.loading ? "false" : "menu" }, accessibleName: this._buttonAccessibleName, overflowPriority: "NeverOverflow" })] }));
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=WritingAssistantTemplate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WritingAssistantTemplate.js","sourceRoot":"","sources":["../src/WritingAssistantTemplate.tsx"],"names":[],"mappings":";AACA,OAAO,UAAU,MAAM,iBAAiB,CAAC;AACzC,OAAO,YAAY,MAAM,mBAAmB,CAAC;AAE7C,OAAO,OAAO,MAAM,oCAAoC,CAAC;AACzD,OAAO,aAAa,MAAM,0CAA0C,CAAC;AACrE,OAAO,aAAa,MAAM,0CAA0C,CAAC;AAErE,MAAM,CAAC,OAAO,UAAU,wBAAwB;IAC/C,MAAM,cAAc,GAAG,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;IAC9C,MAAM,UAAU,GAAG,CAAC,IAAI,CAAC,aAAa,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC;IAE/E,OAAO,CACN,MAAC,OAAO,IACP,cAAc,EAAE,IAAI,CAAC,sBAAsB,0BACtB,SAAS,EAC9B,KAAK,EAAE,sCAAsC,UAAU,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,EAAE,aAE/E,cAAc,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CACnC,KAAC,UAAU,IACV,WAAW,EAAE,IAAI,CAAC,mBAAmB,EACrC,UAAU,EAAE,IAAI,CAAC,aAAa,sBACZ,IAAI,CAAC,mBAAmB,GACzC,CACF,EAEA,UAAU,IAAI,IAAI,CAAC,UAAU,IAAI,CACjC,KAAC,YAAY,IACZ,IAAI,EAAE,IAAI,CAAC,UAAU,EACrB,KAAK,EAAC,uCAAuC,GAC5C,CACF,EAED,KAAC,aAAa,KAAG,EAEjB,KAAC,aAAa,IACb,EAAE,EAAC,aAAa,EAChB,MAAM,EAAC,aAAa,EACpB,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,gBACtB,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,EACpD,OAAO,EAAE,IAAI,CAAC,iBAAiB,EAC/B,OAAO,EAAE,IAAI,CAAC,cAAc,EAC5B,uBAAuB,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,EACtE,cAAc,EAAE,IAAI,CAAC,qBAAqB,EAC1C,gBAAgB,EAAC,eAAe,GAC/B,IACO,CACV,CAAC;AACH,CAAC","sourcesContent":["import type WritingAssistant from \"./WritingAssistant.js\";\nimport Versioning from \"./Versioning.js\";\nimport ToolbarLabel from \"./ToolbarLabel.js\";\n\nimport Toolbar from \"@ui5/webcomponents/dist/Toolbar.js\";\nimport ToolbarSpacer from \"@ui5/webcomponents/dist/ToolbarSpacer.js\";\nimport ToolbarButton from \"@ui5/webcomponents/dist/ToolbarButton.js\";\n\nexport default function WritingAssistantTemplate(this: WritingAssistant) {\n\tconst isMultiResults = this.totalVersions > 1;\n\tconst hasResults = (this.totalVersions > 0 && this.actionText) || this.loading;\n\n\treturn (\n\t\t<Toolbar\n\t\t\taccessibleName={this._toolbarAccessibleName}\n\t\t\taria-roledescription=\"toolbar\"\n\t\t\tclass={`ui5-ai-writing-assistant-footer-bar${hasResults ? \"--with-border\" : \"\"}`}\n\t\t>\n\t\t\t{isMultiResults && !this.loading && (\n\t\t\t\t<Versioning\n\t\t\t\t\tcurrentStep={this.currentVersionIndex}\n\t\t\t\t\ttotalSteps={this.totalVersions}\n\t\t\t\t\tonVersion-change={this.handleVersionChange}\n\t\t\t\t/>\n\t\t\t)}\n\n\t\t\t{hasResults && this.actionText && (\n\t\t\t\t<ToolbarLabel\n\t\t\t\t\ttext={this.actionText}\n\t\t\t\t\tclass=\"ui5-ai-writing-assistant-action-label\"\n\t\t\t\t/>\n\t\t\t)}\n\n\t\t\t<ToolbarSpacer />\n\n\t\t\t<ToolbarButton\n\t\t\t\tid=\"ai-menu-btn\"\n\t\t\t\tdesign=\"Transparent\"\n\t\t\t\ticon={this.loading ? \"stop\" : \"ai\"}\n\t\t\t\tdata-state={this.loading ? \"generating\" : \"generate\"}\n\t\t\t\tonClick={this.handleButtonClick}\n\t\t\t\ttooltip={this._buttonTooltip}\n\t\t\t\taccessibilityAttributes={{ hasPopup: this.loading ? \"false\" : \"menu\" }}\n\t\t\t\taccessibleName={this._buttonAccessibleName}\n\t\t\t\toverflowPriority=\"NeverOverflow\"\n\t\t\t/>\n\t\t</Toolbar>\n\t);\n}\n"]}
|
package/dist/bundle.esm.js
CHANGED
package/dist/bundle.esm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bundle.esm.js","sourceRoot":"","sources":["../src/bundle.esm.ts"],"names":[],"mappings":"AAAA,sDAAsD;AACtD,OAAO,UAAU,MAAM,uCAAuC,CAAC;AAE/D,YAAY;AACZ,OAAO,aAAa,CAAC;AAErB,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,WAAW,MAAM,kBAAkB,CAAC;AAC3C,OAAO,WAAW,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"bundle.esm.js","sourceRoot":"","sources":["../src/bundle.esm.ts"],"names":[],"mappings":"AAAA,sDAAsD;AACtD,OAAO,UAAU,MAAM,uCAAuC,CAAC;AAE/D,YAAY;AACZ,OAAO,aAAa,CAAC;AAErB,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,WAAW,MAAM,kBAAkB,CAAC;AAC3C,OAAO,WAAW,MAAM,kBAAkB,CAAC;AAC3C,OAAO,UAAU,MAAM,eAAe,CAAC;AAEvC,eAAe,UAAU,CAAC","sourcesContent":["/* eslint-disable @typescript-eslint/no-unused-vars */\nimport testAssets from \"@ui5/webcomponents/dist/bundle.esm.js\";\n\n// AI assets\nimport \"./Assets.js\";\n\nimport Button from \"./Button.js\";\nimport ButtonState from \"./ButtonState.js\";\nimport PromptInput from \"./PromptInput.js\";\nimport AITextArea from \"./TextArea.js\";\n\nexport default testAssets;\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.ui5-ai-textarea-root{position:relative;display:flex;flex-direction:column;width:100%;height:100%}.ui5-ai-textarea-root .ui5-textarea-wrapper{display:flex;flex-direction:column;flex:1;position:relative}.ui5-ai-textarea-root [part=footer]{position:relative;width:100%;margin-top:auto;flex-shrink:0}.ui5-ai-writing-assistant-footer-bar{background:var(--_ui5-v2-16-0-rc-0_texteditor_toolbar_background, var(--sapPageFooter_Background));width:100%;box-sizing:border-box;box-shadow:none;border-bottom:none;border-top:none}.ui5-ai-writing-assistant-footer-bar--with-border{border-top:1px solid var(--sapPageFooter_BorderColor)}.ui5-ai-writing-assistant-action-label{margin-left:.5rem;color:var(--sapContent_LabelColor);font-size:var(--sapFontSmallSize)}#ai-menu-wrapper{position:relative;z-index:1000}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
:host{display:inline-block}:host([disabled]){pointer-events:none}.ui5-ai-button-text{display:inline-block}:host([icon-only]) .ui5-ai-button-text{min-width:0;margin-inline-start:0}.ui5-ai-button-hidden{position:absolute;top:-10000px;left:-10000px;visibility:hidden;display:block;width:fit-content}:host .ui5-ai-button-inner{width:100%}:host{width:auto;position:relative;transition:width .18s cubic-bezier(.67,1,.95,1.3) .12s}:host([icon-only]) .ui5-ai-button-inner[_end-icon=""]::part(textButton),:host(.ui5-ai-button-menu-to-button[icon-only]) .ui5-ai-button-inner::part(textButton){min-width:var(--_ui5-v2-
|
|
1
|
+
:host{display:inline-block}:host([disabled]){pointer-events:none}.ui5-ai-button-text{display:inline-block}:host([icon-only]) .ui5-ai-button-text{min-width:0;margin-inline-start:0}.ui5-ai-button-hidden{position:absolute;top:-10000px;left:-10000px;visibility:hidden;display:block;width:fit-content}:host .ui5-ai-button-inner{width:100%}:host{width:auto;position:relative;transition:width .18s cubic-bezier(.67,1,.95,1.3) .12s}:host([icon-only]) .ui5-ai-button-inner[_end-icon=""]::part(textButton),:host(.ui5-ai-button-menu-to-button[icon-only]) .ui5-ai-button-inner::part(textButton){min-width:var(--_ui5-v2-16-0-rc-0_button_base_min_width)!important;max-width:var(--_ui5-v2-16-0-rc-0_button_base_min_width)!important}:host(.ui5-ai-button-menu-to-button) .ui5-ai-button-inner::part(button),:host(.ui5-ai-button-fade-out:not([icon-only])) .ui5-ai-button-inner::part(button){justify-content:flex-start}:host([icon-only]) .ui5-ai-button-inner[_end-icon]:not([_end-icon=""])::part(button),:host([icon-only]) .ui5-ai-button-inner[_hide-arrow-button]::part(button){justify-content:flex-start;padding-inline-start:var(--_ui5-v2-16-0-rc-0_button_base_padding)}:host(.ui5-ai-button-fade-in[icon-only]) .ui5-ai-button-inner[_end-icon=""]::part(button){max-width:var(--_ui5-v2-16-0-rc-0_button_base_min_width)}:host([icon-only]) .ui5-ai-button-inner[_end-icon=""]::part(textButton),:host(.ui5-ai-button-menu-to-button[icon-only]) .ui5-ai-button-inner::part(textButton){min-width:var(--_ui5-v2-16-0-rc-0_button_base_min_width);max-width:var(--_ui5-v2-16-0-rc-0_button_base_min_width)}:host(:not(.ui5-ai-button-fade-out):not(.ui5-ai-button-fade-mid):not(.ui5-ai-button-fade-in)) .ui5-ai-button-text,:host(:not(.ui5-ai-button-fade-out):not(.ui5-ai-button-fade-mid):not(.ui5-ai-button-fade-in)) ::part(endIcon),:host(:not(.ui5-ai-button-fade-out):not(.ui5-ai-button-fade-mid):not(.ui5-ai-button-fade-in)) ::part(arrowButton){opacity:1;transform:translateY(0)}:host(.ui5-ai-button-button-to-menu) .ui5-ai-button-inner::part(endIcon),:host(.ui5-ai-button-button-to-menu) .ui5-ai-button-inner::part(arrowButton){display:none;transform:translateY(0);opacity:0}:host(.ui5-ai-button-fade-out) .ui5-ai-button-text{opacity:0;transform:translateY(-1rem);transition:opacity .06s ease-in-out .12s,transform .08s ease-in-out .12s}:host(.ui5-ai-button-fade-out) ::part(icon){opacity:0;transform:translateY(-1rem);transition:opacity .05s ease-in-out 25ms,transform .1s ease-in-out 0s}:host(.ui5-ai-button-fade-out) ::part(endIcon){opacity:0;transform:translateY(-1rem);transition:opacity .06s ease-in-out .12s,transform .08s ease-in-out .12s}:host(.ui5-ai-button-fade-mid) .ui5-ai-button-text,:host(.ui5-ai-button-fade-mid) ::part(icon),:host(.ui5-ai-button-fade-mid) ::part(endIcon),:host(.ui5-ai-button-fade-mid) ::part(arrowButton){opacity:0;transform:translateY(1rem);transition:none}:host(.ui5-ai-button-fade-in) .ui5-ai-button-text{opacity:1;transform:translateY(0);transition:opacity .06s ease-in-out .12s,transform .08s ease-in-out .12s}:host(.ui5-ai-button-fade-in) ::part(icon){opacity:1;transform:translateY(0);transition:opacity .05s ease-in-out 25ms,transform .1s ease-in-out 0s}:host(.ui5-ai-button-fade-in) ::part(endIcon){opacity:1;transform:translateY(0);transition:opacity .06s ease-in-out .12s,transform .08s ease-in-out .12s}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
:host{display:inline-flex;align-items:center}#versioning-history{display:flex;align-items:center;gap:0}.version-step-counter{margin:0 .25rem;display:flex;align-items:center;color:var(--sapContent_LabelColor);font-size:var(--sapFontSmallSize);line-height:1}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.ui5-ai-textarea-root{position:relative;display:flex;flex-direction:column;width:100%;height:100%}.ui5-ai-textarea-root .ui5-textarea-wrapper{display:flex;flex-direction:column;flex:1;position:relative}.ui5-ai-textarea-root [part=footer]{width:100%;margin-top:auto;flex-shrink:0}.ui5-ai-writing-assistant-footer-bar{background:var(--_ui5-v2-16-0-rc-0_texteditor_toolbar_background, var(--sapPageFooter_Background));width:100%;box-sizing:border-box;box-shadow:none;border-bottom:none;border-top:none;padding:.5rem;min-height:2.75rem;display:flex;align-items:center;justify-content:flex-start}.ui5-ai-writing-assistant-footer-bar--with-border{border-top:1px solid var(--sapPageFooter_BorderColor)}.ui5-ai-writing-assistant-action-label{color:var(--sapContent_LabelColor);font-size:var(--sapFontSize);font-family:"72override",var(--sapFontFamily);margin-left:.25rem}
|