@ui5/webcomponents-ai 0.0.0-dd5d66a9a → 0.0.0-e03cd01f3

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.
Files changed (192) hide show
  1. package/.ui5-cem-aliases.json +4 -0
  2. package/CHANGELOG.md +216 -0
  3. package/LICENSE.txt +201 -0
  4. package/README.md +4 -2
  5. package/dist/.tsbuildinfo +1 -1
  6. package/dist/Assets-fetch.js +1 -1
  7. package/dist/Assets-fetch.js.map +1 -1
  8. package/dist/Assets-node.js +1 -1
  9. package/dist/Assets-node.js.map +1 -1
  10. package/dist/Button.d.ts +1 -1
  11. package/dist/Button.js +4 -4
  12. package/dist/Button.js.map +1 -1
  13. package/dist/Input.d.ts +143 -0
  14. package/dist/Input.js +288 -0
  15. package/dist/Input.js.map +1 -0
  16. package/dist/InputTemplate.d.ts +10 -0
  17. package/dist/InputTemplate.js +28 -0
  18. package/dist/InputTemplate.js.map +1 -0
  19. package/dist/TextArea.d.ts +123 -0
  20. package/dist/TextArea.js +271 -0
  21. package/dist/TextArea.js.map +1 -0
  22. package/dist/TextAreaTemplate.d.ts +2 -0
  23. package/dist/TextAreaTemplate.js +13 -0
  24. package/dist/TextAreaTemplate.js.map +1 -0
  25. package/dist/ToolbarLabel.d.ts +39 -0
  26. package/dist/ToolbarLabel.js +67 -0
  27. package/dist/ToolbarLabel.js.map +1 -0
  28. package/dist/ToolbarLabelTemplate.d.ts +2 -0
  29. package/dist/ToolbarLabelTemplate.js +5 -0
  30. package/dist/ToolbarLabelTemplate.js.map +1 -0
  31. package/dist/Versioning.d.ts +95 -0
  32. package/dist/Versioning.js +187 -0
  33. package/dist/Versioning.js.map +1 -0
  34. package/dist/VersioningTemplate.d.ts +4 -0
  35. package/dist/VersioningTemplate.js +9 -0
  36. package/dist/VersioningTemplate.js.map +1 -0
  37. package/dist/WritingAssistant.d.ts +101 -0
  38. package/dist/WritingAssistant.js +201 -0
  39. package/dist/WritingAssistant.js.map +1 -0
  40. package/dist/WritingAssistantTemplate.d.ts +2 -0
  41. package/dist/WritingAssistantTemplate.js +12 -0
  42. package/dist/WritingAssistantTemplate.js.map +1 -0
  43. package/dist/bundle.esm.js +2 -0
  44. package/dist/bundle.esm.js.map +1 -1
  45. package/dist/css/themes/Button.css +1 -1
  46. package/dist/css/themes/Input.css +1 -0
  47. package/dist/css/themes/PromptInput.css +1 -1
  48. package/dist/css/themes/TextArea.css +1 -0
  49. package/dist/css/themes/Versioning.css +1 -0
  50. package/dist/css/themes/WritingAssistant.css +1 -0
  51. package/dist/custom-elements-internal.json +643 -0
  52. package/dist/custom-elements.json +562 -0
  53. package/dist/generated/assets/i18n/messagebundle_ar.json +1 -1
  54. package/dist/generated/assets/i18n/messagebundle_bg.json +1 -1
  55. package/dist/generated/assets/i18n/messagebundle_ca.json +1 -1
  56. package/dist/generated/assets/i18n/messagebundle_cnr.json +1 -1
  57. package/dist/generated/assets/i18n/messagebundle_cs.json +1 -1
  58. package/dist/generated/assets/i18n/messagebundle_cy.json +1 -1
  59. package/dist/generated/assets/i18n/messagebundle_da.json +1 -1
  60. package/dist/generated/assets/i18n/messagebundle_de.json +1 -1
  61. package/dist/generated/assets/i18n/messagebundle_el.json +1 -1
  62. package/dist/generated/assets/i18n/messagebundle_en.json +1 -1
  63. package/dist/generated/assets/i18n/messagebundle_en_GB.json +1 -1
  64. package/dist/generated/assets/i18n/messagebundle_en_US_sappsd.json +1 -1
  65. package/dist/generated/assets/i18n/messagebundle_en_US_saprigi.json +1 -1
  66. package/dist/generated/assets/i18n/messagebundle_en_US_saptrc.json +1 -1
  67. package/dist/generated/assets/i18n/messagebundle_es.json +1 -1
  68. package/dist/generated/assets/i18n/messagebundle_es_MX.json +1 -1
  69. package/dist/generated/assets/i18n/messagebundle_et.json +1 -1
  70. package/dist/generated/assets/i18n/messagebundle_fi.json +1 -1
  71. package/dist/generated/assets/i18n/messagebundle_fr.json +1 -1
  72. package/dist/generated/assets/i18n/messagebundle_fr_CA.json +1 -1
  73. package/dist/generated/assets/i18n/messagebundle_hi.json +1 -1
  74. package/dist/generated/assets/i18n/messagebundle_hr.json +1 -1
  75. package/dist/generated/assets/i18n/messagebundle_hu.json +1 -1
  76. package/dist/generated/assets/i18n/messagebundle_id.json +1 -1
  77. package/dist/generated/assets/i18n/messagebundle_it.json +1 -1
  78. package/dist/generated/assets/i18n/messagebundle_iw.json +1 -1
  79. package/dist/generated/assets/i18n/messagebundle_ja.json +1 -1
  80. package/dist/generated/assets/i18n/messagebundle_kk.json +1 -1
  81. package/dist/generated/assets/i18n/messagebundle_ko.json +1 -1
  82. package/dist/generated/assets/i18n/messagebundle_lt.json +1 -1
  83. package/dist/generated/assets/i18n/messagebundle_lv.json +1 -1
  84. package/dist/generated/assets/i18n/messagebundle_mk.json +1 -1
  85. package/dist/generated/assets/i18n/messagebundle_ms.json +1 -1
  86. package/dist/generated/assets/i18n/messagebundle_nl.json +1 -1
  87. package/dist/generated/assets/i18n/messagebundle_no.json +1 -1
  88. package/dist/generated/assets/i18n/messagebundle_pl.json +1 -1
  89. package/dist/generated/assets/i18n/messagebundle_pt.json +1 -1
  90. package/dist/generated/assets/i18n/messagebundle_pt_PT.json +1 -1
  91. package/dist/generated/assets/i18n/messagebundle_ro.json +1 -1
  92. package/dist/generated/assets/i18n/messagebundle_ru.json +1 -1
  93. package/dist/generated/assets/i18n/messagebundle_sh.json +1 -1
  94. package/dist/generated/assets/i18n/messagebundle_sk.json +1 -1
  95. package/dist/generated/assets/i18n/messagebundle_sl.json +1 -1
  96. package/dist/generated/assets/i18n/messagebundle_sr.json +1 -1
  97. package/dist/generated/assets/i18n/messagebundle_sv.json +1 -1
  98. package/dist/generated/assets/i18n/messagebundle_th.json +1 -1
  99. package/dist/generated/assets/i18n/messagebundle_tr.json +1 -1
  100. package/dist/generated/assets/i18n/messagebundle_uk.json +1 -1
  101. package/dist/generated/assets/i18n/messagebundle_vi.json +1 -1
  102. package/dist/generated/assets/i18n/messagebundle_zh_CN.json +1 -1
  103. package/dist/generated/assets/i18n/messagebundle_zh_TW.json +1 -1
  104. package/dist/generated/i18n/i18n-defaults.d.ts +14 -1
  105. package/dist/generated/i18n/i18n-defaults.js +14 -1
  106. package/dist/generated/i18n/i18n-defaults.js.map +1 -1
  107. package/dist/generated/themes/Button.css.d.ts +1 -1
  108. package/dist/generated/themes/Button.css.js +1 -1
  109. package/dist/generated/themes/Button.css.js.map +1 -1
  110. package/dist/generated/themes/Input.css.d.ts +2 -0
  111. package/dist/generated/themes/Input.css.js +8 -0
  112. package/dist/generated/themes/Input.css.js.map +1 -0
  113. package/dist/generated/themes/PromptInput.css.d.ts +1 -1
  114. package/dist/generated/themes/PromptInput.css.js +1 -1
  115. package/dist/generated/themes/PromptInput.css.js.map +1 -1
  116. package/dist/generated/themes/TextArea.css.d.ts +2 -0
  117. package/dist/generated/themes/TextArea.css.js +8 -0
  118. package/dist/generated/themes/TextArea.css.js.map +1 -0
  119. package/dist/generated/themes/Versioning.css.d.ts +2 -0
  120. package/dist/generated/themes/Versioning.css.js +8 -0
  121. package/dist/generated/themes/Versioning.css.js.map +1 -0
  122. package/dist/generated/themes/WritingAssistant.css.d.ts +2 -0
  123. package/dist/generated/themes/WritingAssistant.css.js +8 -0
  124. package/dist/generated/themes/WritingAssistant.css.js.map +1 -0
  125. package/dist/vscode.html-custom-data.json +100 -0
  126. package/dist/web-types.json +296 -1
  127. package/package-scripts.cjs +0 -1
  128. package/package.json +20 -18
  129. package/src/InputTemplate.tsx +197 -0
  130. package/src/TextArea.css +25 -0
  131. package/src/TextAreaTemplate.tsx +91 -0
  132. package/src/ToolbarLabelTemplate.tsx +9 -0
  133. package/src/VersioningTemplate.tsx +34 -0
  134. package/src/WritingAssistantTemplate.tsx +51 -0
  135. package/src/i18n/messagebundle.properties +38 -0
  136. package/src/i18n/messagebundle_ar.properties +28 -0
  137. package/src/i18n/messagebundle_bg.properties +28 -0
  138. package/src/i18n/messagebundle_ca.properties +28 -0
  139. package/src/i18n/messagebundle_cnr.properties +28 -0
  140. package/src/i18n/messagebundle_cs.properties +28 -0
  141. package/src/i18n/messagebundle_cy.properties +28 -0
  142. package/src/i18n/messagebundle_da.properties +28 -0
  143. package/src/i18n/messagebundle_de.properties +25 -0
  144. package/src/i18n/messagebundle_el.properties +28 -0
  145. package/src/i18n/messagebundle_en.properties +41 -1
  146. package/src/i18n/messagebundle_en_GB.properties +28 -0
  147. package/src/i18n/messagebundle_en_US_sappsd.properties +25 -0
  148. package/src/i18n/messagebundle_en_US_saprigi.properties +25 -0
  149. package/src/i18n/messagebundle_en_US_saptrc.properties +25 -0
  150. package/src/i18n/messagebundle_es.properties +28 -0
  151. package/src/i18n/messagebundle_es_MX.properties +29 -1
  152. package/src/i18n/messagebundle_et.properties +28 -0
  153. package/src/i18n/messagebundle_fi.properties +28 -0
  154. package/src/i18n/messagebundle_fr.properties +28 -0
  155. package/src/i18n/messagebundle_fr_CA.properties +28 -0
  156. package/src/i18n/messagebundle_hi.properties +28 -0
  157. package/src/i18n/messagebundle_hr.properties +30 -2
  158. package/src/i18n/messagebundle_hu.properties +28 -0
  159. package/src/i18n/messagebundle_id.properties +28 -0
  160. package/src/i18n/messagebundle_it.properties +28 -0
  161. package/src/i18n/messagebundle_iw.properties +28 -0
  162. package/src/i18n/messagebundle_ja.properties +28 -0
  163. package/src/i18n/messagebundle_kk.properties +28 -0
  164. package/src/i18n/messagebundle_ko.properties +28 -0
  165. package/src/i18n/messagebundle_lt.properties +28 -0
  166. package/src/i18n/messagebundle_lv.properties +28 -0
  167. package/src/i18n/messagebundle_mk.properties +28 -0
  168. package/src/i18n/messagebundle_ms.properties +28 -0
  169. package/src/i18n/messagebundle_nl.properties +28 -0
  170. package/src/i18n/messagebundle_no.properties +28 -0
  171. package/src/i18n/messagebundle_pl.properties +28 -0
  172. package/src/i18n/messagebundle_pt.properties +28 -0
  173. package/src/i18n/messagebundle_pt_PT.properties +28 -0
  174. package/src/i18n/messagebundle_ro.properties +28 -0
  175. package/src/i18n/messagebundle_ru.properties +28 -0
  176. package/src/i18n/messagebundle_sh.properties +28 -0
  177. package/src/i18n/messagebundle_sk.properties +28 -0
  178. package/src/i18n/messagebundle_sl.properties +28 -0
  179. package/src/i18n/messagebundle_sr.properties +28 -0
  180. package/src/i18n/messagebundle_sv.properties +28 -0
  181. package/src/i18n/messagebundle_th.properties +30 -2
  182. package/src/i18n/messagebundle_tr.properties +28 -0
  183. package/src/i18n/messagebundle_uk.properties +28 -0
  184. package/src/i18n/messagebundle_vi.properties +28 -0
  185. package/src/i18n/messagebundle_zh_CN.properties +28 -0
  186. package/src/i18n/messagebundle_zh_TW.properties +28 -0
  187. package/src/themes/Input.css +83 -0
  188. package/src/themes/PromptInput.css +5 -1
  189. package/src/themes/TextArea.css +45 -0
  190. package/src/themes/Versioning.css +20 -0
  191. package/src/themes/WritingAssistant.css +23 -0
  192. package/tsconfig.json +6 -0
@@ -0,0 +1,197 @@
1
+ import type Input from "./Input.js";
2
+ import Icon from "@ui5/webcomponents/dist/Icon.js";
3
+ import BusyIndicator from "@ui5/webcomponents/dist/BusyIndicator.js";
4
+ import MenuItem from "@ui5/webcomponents/dist/MenuItem.js";
5
+ import MenuSeparator from "@ui5/webcomponents/dist/MenuSeparator.js";
6
+ import Button from "@ui5/webcomponents/dist/Button.js";
7
+ import Menu from "@ui5/webcomponents/dist/Menu.js";
8
+ import "@ui5/webcomponents-icons/dist/navigation-left-arrow.js";
9
+ import "@ui5/webcomponents-icons/dist/navigation-right-arrow.js";
10
+ import type { JsxTemplateResult } from "@ui5/webcomponents-base";
11
+
12
+ type TemplateHook = () => JsxTemplateResult;
13
+
14
+ export default function InputTemplate(this: Input, hooks?: { preContent: TemplateHook, postContent: TemplateHook }) {
15
+ const preContent = hooks?.preContent || defaultPreContent;
16
+ const postContent = hooks?.postContent || defaultPostContent;
17
+ return (
18
+ <>
19
+ <div
20
+ class={`ui5-ai-input-root ui5-input-focusable-element ${this.loading && "ui5-ai-input-busy"}`}
21
+ onFocusIn={this._onfocusin}
22
+ onFocusOut={this._onfocusout}
23
+ >
24
+ <div class="ui5-input-content">
25
+ <BusyIndicator
26
+ id={`${this._id}-busyIndicator`}
27
+ active={this.loading}
28
+ class="ui5-input-busy-indicator"
29
+ >
30
+
31
+ <div
32
+ class="ui5-input-root"
33
+ part="root"
34
+ >
35
+ <div class="ui5-input-content">
36
+ {preContent.call(this)}
37
+
38
+ <input
39
+ id="inner"
40
+ part="input"
41
+ class="ui5-input-inner"
42
+ style={this.styles.innerInput}
43
+ type={this.inputNativeType}
44
+ inner-input
45
+ inner-input-with-icon={!!this.icon.length}
46
+ disabled={this.disabled}
47
+ readonly={this._readonly || this.loading}
48
+ value={this._innerValue}
49
+ placeholder={this._placeholder}
50
+ maxlength={this.maxlength}
51
+ role={this.accInfo.role}
52
+ enterkeyhint={this.hint}
53
+ aria-controls={this.accInfo.ariaControls}
54
+ aria-invalid={this.accInfo.ariaInvalid}
55
+ aria-haspopup={this.accInfo.ariaHasPopup}
56
+ aria-describedby={this.accInfo.ariaDescribedBy}
57
+ aria-roledescription={this.accInfo.ariaRoledescription}
58
+ aria-autocomplete={this.accInfo.ariaAutoComplete}
59
+ aria-expanded={this.accInfo.ariaExpanded}
60
+ aria-label={this.ariaLabel}
61
+ aria-required={this.required}
62
+ autocomplete="off"
63
+ data-sap-focus-ref
64
+ step={this.nativeInputAttributes.step}
65
+ min={this.nativeInputAttributes.min}
66
+ max={this.nativeInputAttributes.max}
67
+ onInput={this._handleNativeInput}
68
+ onChange={this._handleChange}
69
+ onSelect={this._handleSelect}
70
+ onKeyDown={this._onkeydown}
71
+ onKeyUp={this._onkeyup}
72
+ onClick={this._click}
73
+ onFocusIn={this.innerFocusIn}
74
+ />
75
+
76
+ {this._effectiveShowClearIcon &&
77
+ <div
78
+ tabindex={-1}
79
+ part="clear-icon-wrapper"
80
+ class="ui5-input-clear-icon-wrapper inputIcon"
81
+ onClick={this._clear}
82
+ onMouseDown={this._iconMouseDown}
83
+ >
84
+ <Icon
85
+ part="clear-icon"
86
+ class="ui5-input-clear-icon"
87
+ name={"decline"}
88
+ tabindex={-1}
89
+ accessibleName={this.clearIconAccessibleName}>
90
+ </Icon>
91
+ </div>
92
+ }
93
+
94
+ {this.icon.length > 0 &&
95
+ <div class="ui5-input-icon-root"
96
+ tabindex={-1}
97
+ >
98
+ <slot name="icon"></slot>
99
+ </div>
100
+ }
101
+
102
+ <div class="ui5-input-value-state-icon">
103
+ {this._valueStateInputIcon}
104
+ </div>
105
+ { postContent.call(this) }
106
+
107
+ {this.accInfo.ariaDescription &&
108
+ <span id="descr" class="ui5-hidden-text">{this.accInfo.ariaDescription}</span>
109
+ }
110
+
111
+ {this.accInfo.accessibleDescription &&
112
+ <span id="accessibleDescription" class="ui5-hidden-text">{this.accInfo.accessibleDescription}</span>
113
+ }
114
+
115
+ {this.linksInAriaValueStateHiddenText.length > 0 &&
116
+ <span id="hiddenText-value-state-link-shortcut" class="ui5-hidden-text">{this.valueStateLinksShortcutsTextAcc}</span>
117
+ }
118
+
119
+ {this.hasValueState &&
120
+ <span id="valueStateDesc" class="ui5-hidden-text">{this.ariaValueStateHiddenText}</span>
121
+ }
122
+ </div>
123
+ </div>
124
+
125
+ </BusyIndicator>
126
+ <Button
127
+ id="ai-menu-btn"
128
+ hidden={(!this.isFocused && !this.loading) || !this.hasActions || this.readonly}
129
+ tabIndex={-1}
130
+ class={`ui5-input-ai-button ui5-ai-input-button-wrapper ${this._isMenuOpen && "ui5-input-button-menu-open"} ${this.loading && "ui5-ai-input-loading"}`}
131
+ design="Transparent"
132
+ icon={this.loading ? "stop" : "ai"}
133
+ onClick={this._handleAIButtonClick}
134
+ onKeyDown={this._handleAIButtonKeydown}
135
+ aria-keyshortcuts={ this.loading ? "Esc" : "Shift + F4" }
136
+ tooltip={this.loading ? this.stopGeneratingTooltip : this.ariaLabel}
137
+ accessibilityAttributes={{ hasPopup: this.loading ? "false" : "menu" }}
138
+ />
139
+ <Menu
140
+ onItemClick={this._onMenuIconClick}
141
+ onBeforeOpen={() => { this._isMenuOpen = true; }}
142
+ onBeforeClose={() => { this._isMenuOpen = false; }}
143
+ onClose={() => { if (!this.loading) { this.focus(); } }}
144
+ >
145
+ <slot name="actions"></slot>
146
+ {this.totalVersions > 1 && Versioning.call(this)}
147
+ </Menu>
148
+ </div>
149
+ </div>
150
+ </>
151
+ );
152
+ }
153
+
154
+ function Versioning(this: Input) {
155
+ return (
156
+ <>
157
+ <MenuSeparator />
158
+ <MenuItem
159
+ type="Inactive"
160
+ class="ui5-ai-versioning-menu-footer"
161
+ text={`${this.currentVersion} / ${this.totalVersions}`}
162
+ >
163
+ <Button
164
+ id="arrow-left"
165
+ class="versioning-button"
166
+ slot="endContent"
167
+ design="Transparent"
168
+ icon="navigation-left-arrow"
169
+ tooltip={this.previousButtonAccessibleName}
170
+ accessibleName={this.previousButtonAccessibleName}
171
+ aria-keyshortcut="Shift+Ctrl+Z"
172
+ disabled={this.currentVersion <= 1}
173
+ onClick={this._handlePreviousButtonClick}
174
+ data-ui5-versioning-button="previous"
175
+ >
176
+ </Button>
177
+ <Button
178
+ id="arrow-right"
179
+ class="versioning-button"
180
+ slot="endContent"
181
+ design="Transparent"
182
+ icon="navigation-right-arrow"
183
+ tooltip={this.nextButtonAccessibleName}
184
+ accessibleName={this.nextButtonAccessibleName}
185
+ aria-keyshortcut="Shift+Ctrl+Y"
186
+ disabled={this.currentVersion >= this.totalVersions}
187
+ onClick={this._handleNextButtonClick}
188
+ data-ui5-versioning-button="next"
189
+ />
190
+ </MenuItem>
191
+ </>
192
+ );
193
+ }
194
+
195
+ function defaultPreContent() { }
196
+
197
+ function defaultPostContent() {}
@@ -0,0 +1,25 @@
1
+ .ui5-ai-textarea-root {
2
+ position: relative;
3
+ display: flex;
4
+ flex-direction: column;
5
+ width: 100%;
6
+ height: 100%;
7
+ }
8
+
9
+ .ui5-ai-textarea-root .ui5-textarea-wrapper {
10
+ display: flex;
11
+ flex-direction: column;
12
+ flex: 1;
13
+ position: relative;
14
+ }
15
+
16
+ .ui5-ai-textarea-root [part="footer"] {
17
+ position: relative;
18
+ width: 100%;
19
+ margin-top: auto;
20
+ flex-shrink: 0;
21
+ }
22
+
23
+ .ui5-ai-writing-assistant-footer-bar--with-border {
24
+ border-top: 1px solid var(--sapPageFooter_BorderColor);
25
+ }
@@ -0,0 +1,91 @@
1
+ import type TextArea from "./TextArea.js";
2
+ import WritingAssistant from "./WritingAssistant.js";
3
+ import BusyIndicator from "@ui5/webcomponents/dist/BusyIndicator.js";
4
+ import TextAreaPopoverTemplate from "@ui5/webcomponents/dist/TextAreaPopoverTemplate.js";
5
+
6
+ export default function TextAreaTemplate(this: TextArea) {
7
+ return (
8
+ <div class="ui5-ai-textarea-root">
9
+ <div
10
+ class={this.classes.root}
11
+ onFocusIn={this._onfocusin}
12
+ onFocusOut={this._onfocusout}
13
+ >
14
+ <div class="ui5-textarea-wrapper">
15
+ {this.growing &&
16
+ <div id={`${this._id}-mirror`} class="ui5-textarea-mirror" aria-hidden="true">
17
+ {this._mirrorText.map(mirrorText => {
18
+ return (
19
+ <>
20
+ {mirrorText.text}
21
+ <br />
22
+ </>
23
+ );
24
+ })}
25
+ </div>
26
+ }
27
+ <BusyIndicator
28
+ id={`${this._id}-busyIndicator`}
29
+ active={this.loading}
30
+ class="ui5-textarea-busy-indicator"
31
+ >
32
+ <textarea
33
+ id={`${this._id}-inner`}
34
+ class="ui5-textarea-inner"
35
+ part="textarea"
36
+ placeholder={this.placeholder}
37
+ disabled={this.disabled}
38
+ readonly={this.readonly}
39
+ aria-label={this._ariaLabel}
40
+ aria-describedby={this.ariaDescribedBy}
41
+ aria-invalid={this._ariaInvalid}
42
+ aria-required={this.required}
43
+ maxlength={this._exceededTextProps.calcedMaxLength}
44
+ value={this.value}
45
+ data-sap-focus-ref
46
+ onInput={this._oninput}
47
+ onChange={this._onchange}
48
+ onKeyUp={this._onkeyup}
49
+ onKeyDown={this._onkeydown}
50
+ onSelect={this._onselect}
51
+ onScroll={this._onscroll}>
52
+ </textarea>
53
+ </BusyIndicator>
54
+ <div part="footer">
55
+ <slot name="footer">
56
+ <WritingAssistant
57
+ loading={this.loading}
58
+ currentVersion={this.currentVersion}
59
+ totalVersions={this.totalVersions}
60
+ promptDescription={this.promptDescription}
61
+ focused={this.focused}
62
+ onButtonClick={this._handleAIButtonClick}
63
+ onStopGeneration={this.handleStopGeneration}
64
+ onVersionChange={this._handleVersionChange}
65
+ />
66
+ </slot>
67
+ </div>
68
+ </div>
69
+
70
+ {this.showExceededText &&
71
+ <span class="ui5-textarea-exceeded-text">{this._exceededTextProps.exceededText}</span>
72
+ }
73
+
74
+ {this.hasValueState &&
75
+ <span id={`${this._id}-valueStateDesc`} class="ui5-hidden-text">{this.ariaValueStateHiddenText}</span>
76
+ }
77
+ </div>
78
+
79
+ {TextAreaPopoverTemplate.call(this)}
80
+
81
+ {/* ARIA live region for screen readers */}
82
+ <div aria-live="polite" aria-atomic="true" class="ui5-hidden-text">
83
+ {this.loading ? this.promptDescription : ""}
84
+ </div>
85
+
86
+ <div id="ai-menu-wrapper">
87
+ <slot name="menu"></slot>
88
+ </div>
89
+ </div>
90
+ );
91
+ }
@@ -0,0 +1,9 @@
1
+ import type ToolbarLabel from "./ToolbarLabel.js";
2
+
3
+ export default function ToolbarLabelTemplate(this: ToolbarLabel) {
4
+ return (
5
+ <span class="ui5-ai-toolbar-label">
6
+ {this.text}
7
+ </span>
8
+ );
9
+ }
@@ -0,0 +1,34 @@
1
+ import type Versioning from "./Versioning.js";
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
+
7
+ export default function VersioningTemplate(this: Versioning) {
8
+ return (
9
+ <>
10
+ <ToolbarButton
11
+ design="Transparent"
12
+ icon="navigation-left-arrow"
13
+ tooltip={this._previousButtonTooltip}
14
+ accessibleName={this._previousButtonAccessibleName}
15
+ disabled={this.currentStep <= 1}
16
+ onClick={this.handlePreviousVersionClick}
17
+ data-ui5-versioning-button="previous"
18
+ />
19
+ <ToolbarLabel
20
+ text={`${this.currentStep} / ${this.totalSteps}`}
21
+ class="version-step-counter"
22
+ />
23
+ <ToolbarButton
24
+ design="Transparent"
25
+ icon="navigation-right-arrow"
26
+ tooltip={this._nextButtonTooltip}
27
+ accessibleName={this._nextButtonAccessibleName}
28
+ disabled={this.totalSteps <= 0 || this.currentStep >= this.totalSteps}
29
+ onClick={this.handleNextVersionClick}
30
+ data-ui5-versioning-button="next"
31
+ />
32
+ </>
33
+ );
34
+ }
@@ -0,0 +1,51 @@
1
+ import type WritingAssistant from "./WritingAssistant.js";
2
+ import Versioning from "./Versioning.js";
3
+ import ToolbarLabel from "./ToolbarLabel.js";
4
+
5
+ import Toolbar from "@ui5/webcomponents/dist/Toolbar.js";
6
+ import ToolbarSpacer from "@ui5/webcomponents/dist/ToolbarSpacer.js";
7
+ import ToolbarButton from "@ui5/webcomponents/dist/ToolbarButton.js";
8
+
9
+ export default function WritingAssistantTemplate(this: WritingAssistant) {
10
+ const isMultiResults = this.totalVersions > 1;
11
+ const hasResults = (this.totalVersions > 0 && this.promptDescription) || this.loading;
12
+
13
+ return (
14
+ <Toolbar
15
+ accessibleName={this._toolbarAccessibleName}
16
+ aria-roledescription="toolbar"
17
+ class={`ui5-ai-writing-assistant-footer-bar${hasResults ? "--with-border" : ""}`}
18
+ >
19
+ {isMultiResults && !this.loading && (
20
+ <Versioning
21
+ currentStep={this.currentVersion}
22
+ totalSteps={this.totalVersions}
23
+ onVersion-change={this.handleVersionChange}
24
+ />
25
+ )}
26
+
27
+ {hasResults && this.promptDescription && (
28
+ <ToolbarLabel
29
+ text={this.promptDescription}
30
+ class="ui5-ai-writing-assistant-action-label"
31
+ />
32
+ )}
33
+
34
+ <ToolbarSpacer />
35
+
36
+ {this.focused && (
37
+ <ToolbarButton
38
+ id="ai-menu-btn"
39
+ design="Transparent"
40
+ icon={this.loading ? "stop" : "ai"}
41
+ data-state={this.loading ? "generating" : "generate"}
42
+ onClick={this.handleButtonClick}
43
+ tooltip={this.loading ? this._stopTooltip : this._buttonTooltip}
44
+ accessibilityAttributes={{ hasPopup: this.loading ? "false" : "menu" }}
45
+ accessibleName={this._buttonAccessibleName}
46
+ overflowPriority="NeverOverflow"
47
+ />
48
+ )}
49
+ </Toolbar>
50
+ );
51
+ }
@@ -10,3 +10,41 @@ PROMPT_INPUT_CHARACTERS_EXCEEDED={0} characters over limit
10
10
  #XTXT: Text for
11
11
  BUTTON_TOOLTIP_TEXT={0} with Artificial Intelligence
12
12
 
13
+ #XFLD: Text for the aria-label attribute of the Writing Assistant toolbar
14
+ WRITING_ASSISTANT_LABEL=Writing Assistant Toolbar Shift + F4
15
+
16
+ #XFLD: Next version button accessible name in Input
17
+ INPUT_VERSIONING_NEXT_BUTTON_TOOLTIP=Next Version (Ctrl + Shift + Y)
18
+
19
+ #XFLD: Next version button accessible name in Input
20
+ INPUT_VERSIONING_PREVIOUS_BUTTON_TOOLTIP=Previous Version (Ctrl + Shift + Z)
21
+
22
+ #XFLD: Tooltip for the Writing Assistant button in Input
23
+ INPUT_WRITING_ASSISTANT_BUTTON_TOOLTIP=AI Writing Assistant (Shift + F4)
24
+
25
+ #XFLD: Previous version button accessible name
26
+ VERSIONING_PREVIOUS_BUTTON_TEXT=Previous Version
27
+
28
+ #XFLD: Next version button accessible name
29
+ VERSIONING_NEXT_BUTTON_TEXT=Next Version
30
+
31
+ #XMSG: Announcement message when Writing Assistant starts generating
32
+ WRITING_ASSISTANT_GENERATING_ANNOUNCEMENT=Stop generating (ESC)
33
+
34
+ #XFLD: Accessible name for the Writing Assistant toolbar
35
+ WRITING_ASSISTANT_TOOLBAR_ACCESSIBLE_NAME=Writing Assistant Toolbar
36
+
37
+ #XFLD: Accessible name for the Writing Assistant button
38
+ WRITING_ASSISTANT_BUTTON_ACCESSIBLE_NAME=Writing Assistant
39
+
40
+ #XTOL: Tooltip for the Writing Assistant button
41
+ WRITING_ASSISTANT_BUTTON_TOOLTIP=Writing Assistant (Shift + F4)
42
+
43
+ #XTOL: Writing Assistant stop generating button tooltip
44
+ WRITING_ASSISTANT_STOP_TOOLTIP=Stop Generating (Esc)
45
+
46
+ #XTOL: Tooltip for the Previous Version button
47
+ VERSIONING_PREVIOUS_BUTTON_TOOLTIP=Previous Version (Ctrl + Shift + Z)
48
+
49
+ #XTOL: Tooltip for the Next Version button
50
+ VERSIONING_NEXT_BUTTON_TOOLTIP=Next Version (Ctrl + Shift + Y)
@@ -2,3 +2,31 @@
2
2
  PROMPT_INPUT_CHARACTERS_LEFT=متبق {0} من الحروف
3
3
 
4
4
  PROMPT_INPUT_CHARACTERS_EXCEEDED=تم تجاوز الحد بمقدار {0} من الحروف
5
+
6
+ BUTTON_TOOLTIP_TEXT={0} مع الذكاء الاصطناعي
7
+
8
+ WRITING_ASSISTANT_LABEL=شريط أدوات مساعد الكتابة Shift + F4
9
+
10
+ INPUT_VERSIONING_NEXT_BUTTON_TOOLTIP=الإصدار التالي (Ctrl + Shift + Y)
11
+
12
+ INPUT_VERSIONING_PREVIOUS_BUTTON_TOOLTIP=الإصدار السابق (Ctrl + Shift + Z)
13
+
14
+ INPUT_WRITING_ASSISTANT_BUTTON_TOOLTIP=مساعد الكتابة بالذكاء الاصطناعي (Shift + ‏F4)
15
+
16
+ VERSIONING_PREVIOUS_BUTTON_TEXT=الإصدار السابق
17
+
18
+ VERSIONING_NEXT_BUTTON_TEXT=الإصدار التالي
19
+
20
+ WRITING_ASSISTANT_GENERATING_ANNOUNCEMENT=إيقاف الإنشاء (ESC)
21
+
22
+ WRITING_ASSISTANT_TOOLBAR_ACCESSIBLE_NAME=شريط أدوات مساعد الكتابة
23
+
24
+ WRITING_ASSISTANT_BUTTON_ACCESSIBLE_NAME=مساعد الكتابة
25
+
26
+ WRITING_ASSISTANT_BUTTON_TOOLTIP=مساعد الكتابة (Shift + F4)
27
+
28
+ WRITING_ASSISTANT_STOP_TOOLTIP=إيقاف الإنشاء (ESC)
29
+
30
+ VERSIONING_PREVIOUS_BUTTON_TOOLTIP=الإصدار السابق
31
+
32
+ VERSIONING_NEXT_BUTTON_TOOLTIP=الإصدار التالي
@@ -2,3 +2,31 @@
2
2
  PROMPT_INPUT_CHARACTERS_LEFT=Остават {0} символа
3
3
 
4
4
  PROMPT_INPUT_CHARACTERS_EXCEEDED={0} символа над ограничението
5
+
6
+ BUTTON_TOOLTIP_TEXT={0} с изкуствен интелект
7
+
8
+ WRITING_ASSISTANT_LABEL=Лента с инструменти на асистента за писане Shift + F4
9
+
10
+ INPUT_VERSIONING_NEXT_BUTTON_TOOLTIP=Следваща версия (Ctrl + Shift + Y)
11
+
12
+ INPUT_VERSIONING_PREVIOUS_BUTTON_TOOLTIP=Предходна версия (Ctrl + Shift + Z)
13
+
14
+ INPUT_WRITING_ASSISTANT_BUTTON_TOOLTIP=AI асистент за писане (Shift + F4)
15
+
16
+ VERSIONING_PREVIOUS_BUTTON_TEXT=Предишна версия
17
+
18
+ VERSIONING_NEXT_BUTTON_TEXT=Следваща версия
19
+
20
+ WRITING_ASSISTANT_GENERATING_ANNOUNCEMENT=Спиране на генерирането (ESC)
21
+
22
+ WRITING_ASSISTANT_TOOLBAR_ACCESSIBLE_NAME=Лента с инструменти на асистента за писане
23
+
24
+ WRITING_ASSISTANT_BUTTON_ACCESSIBLE_NAME=Асистент писане
25
+
26
+ WRITING_ASSISTANT_BUTTON_TOOLTIP=Асистент за писане (Shift + F4)
27
+
28
+ WRITING_ASSISTANT_STOP_TOOLTIP=Спиране на генерирането (Esc)
29
+
30
+ VERSIONING_PREVIOUS_BUTTON_TOOLTIP=Предишна версия
31
+
32
+ VERSIONING_NEXT_BUTTON_TOOLTIP=Следваща версия
@@ -2,3 +2,31 @@
2
2
  PROMPT_INPUT_CHARACTERS_LEFT={0} caràcters restants
3
3
 
4
4
  PROMPT_INPUT_CHARACTERS_EXCEEDED=S''han excedit {0} caràcters
5
+
6
+ BUTTON_TOOLTIP_TEXT={0} amb intel·ligència artificial
7
+
8
+ WRITING_ASSISTANT_LABEL=Barra d''eines de l''assistent de redacció (Majús + F4)
9
+
10
+ INPUT_VERSIONING_NEXT_BUTTON_TOOLTIP=Següent versió (Ctrl + Majús + Y)
11
+
12
+ INPUT_VERSIONING_PREVIOUS_BUTTON_TOOLTIP=Versió anterior (Ctrl + Majús + Z)
13
+
14
+ INPUT_WRITING_ASSISTANT_BUTTON_TOOLTIP=Assistent de redacció amb IA (Majús + F4)
15
+
16
+ VERSIONING_PREVIOUS_BUTTON_TEXT=Versió anterior
17
+
18
+ VERSIONING_NEXT_BUTTON_TEXT=Versió següent
19
+
20
+ WRITING_ASSISTANT_GENERATING_ANNOUNCEMENT=Aturar la generació (ESC)
21
+
22
+ WRITING_ASSISTANT_TOOLBAR_ACCESSIBLE_NAME=Barra d''eines de l''assistent de redacció
23
+
24
+ WRITING_ASSISTANT_BUTTON_ACCESSIBLE_NAME=Assistent de redacció
25
+
26
+ WRITING_ASSISTANT_BUTTON_TOOLTIP=Assistent de redacció (Majús + F4)
27
+
28
+ WRITING_ASSISTANT_STOP_TOOLTIP=Aturar la generació (Esc)
29
+
30
+ VERSIONING_PREVIOUS_BUTTON_TOOLTIP=Versió anterior
31
+
32
+ VERSIONING_NEXT_BUTTON_TOOLTIP=Versió següent
@@ -2,3 +2,31 @@
2
2
  PROMPT_INPUT_CHARACTERS_LEFT={0} znakova preostaje
3
3
 
4
4
  PROMPT_INPUT_CHARACTERS_EXCEEDED={0} znakova prekoračeno
5
+
6
+ BUTTON_TOOLTIP_TEXT={0} sa vještačkom inteligencijom
7
+
8
+ WRITING_ASSISTANT_LABEL=Traka sa alatkama pomoćnika pri pisanju Shift + F4
9
+
10
+ INPUT_VERSIONING_NEXT_BUTTON_TOOLTIP=Sljedeća verzija (Ctrl + Shift + Y)
11
+
12
+ INPUT_VERSIONING_PREVIOUS_BUTTON_TOOLTIP=Prethodna verzija (Ctrl + Shift + Z)
13
+
14
+ INPUT_WRITING_ASSISTANT_BUTTON_TOOLTIP=Pomoćnik pri pisanju uz upotrebu vještačke inteligencije (Shift + F4)
15
+
16
+ VERSIONING_PREVIOUS_BUTTON_TEXT=Prethodna verzija
17
+
18
+ VERSIONING_NEXT_BUTTON_TEXT=Sljedeća verzija
19
+
20
+ WRITING_ASSISTANT_GENERATING_ANNOUNCEMENT=Zaustavi generisanje (ESC)
21
+
22
+ WRITING_ASSISTANT_TOOLBAR_ACCESSIBLE_NAME=Traka sa alatkama pomoćnika pri pisanju
23
+
24
+ WRITING_ASSISTANT_BUTTON_ACCESSIBLE_NAME=Pomoćnik pri pisanju
25
+
26
+ WRITING_ASSISTANT_BUTTON_TOOLTIP=Pomoćnik pri pisanju (Shift + F4)
27
+
28
+ WRITING_ASSISTANT_STOP_TOOLTIP=Zaustavi generisanje (Esc)
29
+
30
+ VERSIONING_PREVIOUS_BUTTON_TOOLTIP=Prethodna verzija
31
+
32
+ VERSIONING_NEXT_BUTTON_TOOLTIP=Sljedeća verzija
@@ -2,3 +2,31 @@
2
2
  PROMPT_INPUT_CHARACTERS_LEFT={0} znaky zbývají
3
3
 
4
4
  PROMPT_INPUT_CHARACTERS_EXCEEDED={0} znaky přes limit
5
+
6
+ BUTTON_TOOLTIP_TEXT={0} s umělou inteligencí
7
+
8
+ WRITING_ASSISTANT_LABEL=Nástrojová lišta asistenta psaní Shift + F4
9
+
10
+ INPUT_VERSIONING_NEXT_BUTTON_TOOLTIP=Příští verze (Ctrl + Shift + Y)
11
+
12
+ INPUT_VERSIONING_PREVIOUS_BUTTON_TOOLTIP=Předchozí verze (Ctrl + Shift + Z)
13
+
14
+ INPUT_WRITING_ASSISTANT_BUTTON_TOOLTIP=Asistent psaní s umělou inteligencí (Shift + F4)
15
+
16
+ VERSIONING_PREVIOUS_BUTTON_TEXT=Předchozí verze
17
+
18
+ VERSIONING_NEXT_BUTTON_TEXT=Další verze
19
+
20
+ WRITING_ASSISTANT_GENERATING_ANNOUNCEMENT=Zastavit generování (ESC)
21
+
22
+ WRITING_ASSISTANT_TOOLBAR_ACCESSIBLE_NAME=Nástrojová lišta asistenta psaní
23
+
24
+ WRITING_ASSISTANT_BUTTON_ACCESSIBLE_NAME=Asistent psaní
25
+
26
+ WRITING_ASSISTANT_BUTTON_TOOLTIP=Asistent psaní (Shift + F4
27
+
28
+ WRITING_ASSISTANT_STOP_TOOLTIP=Zastavit generování (Esc)
29
+
30
+ VERSIONING_PREVIOUS_BUTTON_TOOLTIP=Předchozí verze
31
+
32
+ VERSIONING_NEXT_BUTTON_TOOLTIP=Další verze
@@ -2,3 +2,31 @@
2
2
  PROMPT_INPUT_CHARACTERS_LEFT={0} nod ar ôl
3
3
 
4
4
  PROMPT_INPUT_CHARACTERS_EXCEEDED={0} nod dros yr uchafswm
5
+
6
+ BUTTON_TOOLTIP_TEXT={0} gyda Deallusrwydd Artiffisial
7
+
8
+ WRITING_ASSISTANT_LABEL=Bar Offer Cynorthwyydd Ysgrifennu Shift + F4
9
+
10
+ INPUT_VERSIONING_NEXT_BUTTON_TOOLTIP=Fersiwn Nesaf (Ctrl + Shift + Y)
11
+
12
+ INPUT_VERSIONING_PREVIOUS_BUTTON_TOOLTIP=Fersiwn Flaenorol (Ctrl + Shift + Z)
13
+
14
+ INPUT_WRITING_ASSISTANT_BUTTON_TOOLTIP=Cynorthwyydd Ysgrifennu AI (Shift + F4)
15
+
16
+ VERSIONING_PREVIOUS_BUTTON_TEXT=Fersiwn Flaenorol
17
+
18
+ VERSIONING_NEXT_BUTTON_TEXT=Fersiwn Nesaf
19
+
20
+ WRITING_ASSISTANT_GENERATING_ANNOUNCEMENT=Stopio cynhyrchu (ESC)
21
+
22
+ WRITING_ASSISTANT_TOOLBAR_ACCESSIBLE_NAME=Bar Offer Cynorthwyydd Ysgrifennu
23
+
24
+ WRITING_ASSISTANT_BUTTON_ACCESSIBLE_NAME=Cynorthwyydd Ysgrifennu
25
+
26
+ WRITING_ASSISTANT_BUTTON_TOOLTIP=Cynorthwyydd Ysgrifennu (Shift + F4)
27
+
28
+ WRITING_ASSISTANT_STOP_TOOLTIP=Stopio Cynhyrchu (Esc)
29
+
30
+ VERSIONING_PREVIOUS_BUTTON_TOOLTIP=Fersiwn Flaenorol
31
+
32
+ VERSIONING_NEXT_BUTTON_TOOLTIP=Fersiwn Nesaf
@@ -2,3 +2,31 @@
2
2
  PROMPT_INPUT_CHARACTERS_LEFT={0} resterende tegn
3
3
 
4
4
  PROMPT_INPUT_CHARACTERS_EXCEEDED={0} tegn over grænsen
5
+
6
+ BUTTON_TOOLTIP_TEXT={0} med kunstig intelligens
7
+
8
+ WRITING_ASSISTANT_LABEL=Værktøjslinje for skriveassistent - Skift + F4
9
+
10
+ INPUT_VERSIONING_NEXT_BUTTON_TOOLTIP=Næste version (Ctrl + Skift + Y)
11
+
12
+ INPUT_VERSIONING_PREVIOUS_BUTTON_TOOLTIP=Forrige version (Ctrl + Skift + Z)
13
+
14
+ INPUT_WRITING_ASSISTANT_BUTTON_TOOLTIP=AI-skriveassistent (Skift + F4)
15
+
16
+ VERSIONING_PREVIOUS_BUTTON_TEXT=Forrige version
17
+
18
+ VERSIONING_NEXT_BUTTON_TEXT=Næste version
19
+
20
+ WRITING_ASSISTANT_GENERATING_ANNOUNCEMENT=Stop generering (ESC)
21
+
22
+ WRITING_ASSISTANT_TOOLBAR_ACCESSIBLE_NAME=Værktøjslinje for skriveassistent
23
+
24
+ WRITING_ASSISTANT_BUTTON_ACCESSIBLE_NAME=Skriveassistent
25
+
26
+ WRITING_ASSISTANT_BUTTON_TOOLTIP=Skriveassistent (Skift + F4)
27
+
28
+ WRITING_ASSISTANT_STOP_TOOLTIP=Stop generering (Esc)
29
+
30
+ VERSIONING_PREVIOUS_BUTTON_TOOLTIP=Forrige version
31
+
32
+ VERSIONING_NEXT_BUTTON_TOOLTIP=Næste version