@coveo/atomic 3.61.4 → 3.61.5
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/custom-elements.json +836 -812
- package/dist/cjs/components/common/atomic-generated-answer-content/atomic-generated-answer-content.cjs +23 -1
- package/dist/cjs/components/common/atomic-generated-answer-thread/atomic-generated-answer-thread.cjs +1 -1
- package/dist/cjs/components/common/atomic-generated-answer-thread-item/atomic-generated-answer-thread-item.cjs +3 -2
- package/dist/cjs/components/common/generated-answer/answer-announcement.cjs +73 -0
- package/dist/cjs/components/common/generated-answer/copy-button.cjs +2 -1
- package/dist/cjs/components/common/generated-answer/feedback-button.cjs +2 -1
- package/dist/cjs/components/common/generated-answer/generated-content/markdown-utils.cjs +1 -2
- package/dist/cjs/components/common/generated-answer/generated-content-container.cjs +6 -1
- package/dist/cjs/components/common/generated-answer/render-answer-content.cjs +5 -2
- package/dist/cjs/components/common/generated-answer/show-button.cjs +1 -0
- package/dist/cjs/components/insight/atomic-insight-generated-answer/atomic-insight-generated-answer.cjs +3 -1
- package/dist/cjs/components/search/atomic-generated-answer/atomic-generated-answer.cjs +8 -1
- package/dist/cjs/global/environment.cjs +1 -1
- package/dist/cjs/versions.cjs +1 -1
- package/dist/esm/components/common/atomic-generated-answer-content/atomic-generated-answer-content.js +23 -1
- package/dist/esm/components/common/atomic-generated-answer-thread/atomic-generated-answer-thread.js +1 -1
- package/dist/esm/components/common/atomic-generated-answer-thread-item/atomic-generated-answer-thread-item.js +3 -2
- package/dist/esm/components/common/generated-answer/answer-announcement.js +32 -0
- package/dist/esm/components/common/generated-answer/copy-button.js +2 -1
- package/dist/esm/components/common/generated-answer/feedback-button.js +2 -1
- package/dist/esm/components/common/generated-answer/generated-content/markdown-utils.js +1 -2
- package/dist/esm/components/common/generated-answer/generated-content-container.js +6 -1
- package/dist/esm/components/common/generated-answer/render-answer-content.js +5 -2
- package/dist/esm/components/common/generated-answer/show-button.js +1 -0
- package/dist/esm/components/insight/atomic-insight-generated-answer/atomic-insight-generated-answer.js +3 -1
- package/dist/esm/components/search/atomic-generated-answer/atomic-generated-answer.js +8 -1
- package/dist/esm/global/environment.js +1 -1
- package/dist/esm/versions.js +1 -1
- package/dist/types/components/common/atomic-generated-answer-content/atomic-generated-answer-content.d.ts +7 -0
- package/dist/types/components/common/generated-answer/answer-announcement.d.ts +22 -0
- package/dist/types/components/common/generated-answer/generated-content-container.d.ts +1 -0
- package/dist/types/components/common/generated-answer/show-button.d.ts +1 -0
- package/dist/types/components/insight/atomic-insight-generated-answer/atomic-insight-generated-answer.d.ts +1 -0
- package/dist/types/components/search/atomic-generated-answer/atomic-generated-answer.d.ts +2 -0
- package/package.json +9 -9
|
@@ -132,6 +132,7 @@ class AtomicGeneratedAnswer extends LitElement {
|
|
|
132
132
|
'generated-answer-content-background': this.areFollowUpsEnabled,
|
|
133
133
|
'agent-scrollable': this.areFollowUpsEnabled
|
|
134
134
|
})}
|
|
135
|
+
tabindex=${this.areFollowUpsEnabled ? '0' : nothing}
|
|
135
136
|
>
|
|
136
137
|
<article>${this.renderAnswerContent()}</article>
|
|
137
138
|
</div>
|
|
@@ -156,6 +157,9 @@ class AtomicGeneratedAnswer extends LitElement {
|
|
|
156
157
|
</div>
|
|
157
158
|
`;
|
|
158
159
|
}
|
|
160
|
+
get shouldAnnounceAnswerStatus() {
|
|
161
|
+
return !this.areFollowUpsEnabled;
|
|
162
|
+
}
|
|
159
163
|
get hasNoAnswerGenerated() {
|
|
160
164
|
return this.controller.hasNoAnswerGenerated;
|
|
161
165
|
}
|
|
@@ -180,11 +184,13 @@ class AtomicGeneratedAnswer extends LitElement {
|
|
|
180
184
|
async copyToClipboard(answer) {
|
|
181
185
|
await this.controller.copyToClipboard(answer, ()=>{
|
|
182
186
|
this.copied = true;
|
|
187
|
+
this.ariaCopyMessage.message = this.bindings.i18n.t('generated-answer-copied');
|
|
183
188
|
setTimeout(()=>{
|
|
184
189
|
this.copied = false;
|
|
185
190
|
}, 2000);
|
|
186
191
|
}, ()=>{
|
|
187
192
|
this.copyError = true;
|
|
193
|
+
this.ariaCopyMessage.message = this.bindings.i18n.t('failed-to-copy-generated-answer');
|
|
188
194
|
setTimeout(()=>{
|
|
189
195
|
this.copyError = false;
|
|
190
196
|
}, 2000);
|
|
@@ -379,7 +385,7 @@ class AtomicGeneratedAnswer extends LitElement {
|
|
|
379
385
|
constructor(){
|
|
380
386
|
super(), this.DEFAULT_COLLAPSED_HEIGHT = 16, this.MAX_COLLAPSED_HEIGHT = 32, this.MIN_COLLAPSED_HEIGHT = 9, this.REQUIRED_FIELDS_TO_INCLUDE_IN_CITATIONS = [
|
|
381
387
|
'filetype'
|
|
382
|
-
], this.withToggle = false, this.collapsible = false, this.maxCollapsedHeight = this.DEFAULT_COLLAPSED_HEIGHT, this.disableCitationAnchoring = false, this.tabsIncluded = [], this.tabsExcluded = [], this.copied = false, this.copyError = false, this.ariaMessage = new AriaLiveRegionController(this, 'generated-answer', false, true), this.ariaErrorMessage = new AriaLiveRegionController(this, 'generated-answer-error', true), this.onGeneratedAnswerStateUpdate = ()=>{
|
|
388
|
+
], this.withToggle = false, this.collapsible = false, this.maxCollapsedHeight = this.DEFAULT_COLLAPSED_HEIGHT, this.disableCitationAnchoring = false, this.tabsIncluded = [], this.tabsExcluded = [], this.copied = false, this.copyError = false, this.ariaMessage = new AriaLiveRegionController(this, 'generated-answer', false, true), this.ariaErrorMessage = new AriaLiveRegionController(this, 'generated-answer-error', true), this.ariaCopyMessage = new AriaLiveRegionController(this, 'generated-answer-copy', true), this.onGeneratedAnswerStateUpdate = ()=>{
|
|
383
389
|
if (this.generatedAnswerState.isVisible !== this.controller.data.isVisible) {
|
|
384
390
|
this.controller.data = {
|
|
385
391
|
...this.controller.data,
|
|
@@ -387,6 +393,7 @@ class AtomicGeneratedAnswer extends LitElement {
|
|
|
387
393
|
};
|
|
388
394
|
this.controller.writeStoredData(this.controller.data);
|
|
389
395
|
}
|
|
396
|
+
if (!this.shouldAnnounceAnswerStatus) return;
|
|
390
397
|
const status = this.controller.getGeneratedAnswerStatus();
|
|
391
398
|
if (this.controller.isStatusAssertive()) {
|
|
392
399
|
this.ariaMessage.message = '';
|
package/dist/esm/versions.js
CHANGED
|
@@ -40,8 +40,15 @@ export declare class AtomicGeneratedAnswerContent extends LitElement {
|
|
|
40
40
|
onCopyToClipboard: (answerId: string) => void;
|
|
41
41
|
private copyState;
|
|
42
42
|
private resetCopyTimeout?;
|
|
43
|
+
private ariaMessage;
|
|
44
|
+
private ariaErrorMessage;
|
|
45
|
+
private ariaCopyMessage;
|
|
46
|
+
private lastAnnouncedMessage?;
|
|
47
|
+
private hasObservedAnswer;
|
|
43
48
|
disconnectedCallback(): void;
|
|
44
49
|
render(): TemplateResult;
|
|
50
|
+
protected updated(): void;
|
|
51
|
+
private announceAnswerStatus;
|
|
45
52
|
private renderFeedbackAndCopyButtons;
|
|
46
53
|
private copyToClipboard;
|
|
47
54
|
private scheduleCopyReset;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { GeneratedAnswerBase } from '@coveo/headless';
|
|
2
|
+
import type { i18n } from 'i18next';
|
|
3
|
+
export interface AnswerAnnouncement {
|
|
4
|
+
message: string;
|
|
5
|
+
assertive: boolean;
|
|
6
|
+
}
|
|
7
|
+
type AnnounceableAnswer = Pick<GeneratedAnswerBase, 'answer' | 'cannotAnswer' | 'error' | 'isLoading' | 'isStreaming'>;
|
|
8
|
+
/**
|
|
9
|
+
* Computes the screen reader announcement describing the state of a single generated answer.
|
|
10
|
+
*
|
|
11
|
+
* The conversational rendering path holds one of these per conversation turn, so each answer
|
|
12
|
+
* reports its own state instead of relying on the top-level answer state.
|
|
13
|
+
*/
|
|
14
|
+
export declare const getAnswerAnnouncement: (answer: AnnounceableAnswer | undefined, i18n: i18n) => AnswerAnnouncement;
|
|
15
|
+
/**
|
|
16
|
+
* Whether an answer has finished generating successfully.
|
|
17
|
+
*
|
|
18
|
+
* Used to stay silent when an already-completed answer is rendered for the first time, such as
|
|
19
|
+
* when earlier conversation turns are revealed.
|
|
20
|
+
*/
|
|
21
|
+
export declare const isSettledAnswer: (answer: AnnounceableAnswer | undefined) => boolean;
|
|
22
|
+
export {};
|
|
@@ -4,6 +4,7 @@ import type { FunctionalComponent } from '../../../utils/functional-component-ut
|
|
|
4
4
|
export interface ShowButtonProps {
|
|
5
5
|
i18n: i18n;
|
|
6
6
|
isCollapsed: boolean;
|
|
7
|
+
controlsId?: string;
|
|
7
8
|
onClick: () => void;
|
|
8
9
|
}
|
|
9
10
|
export declare const renderShowButton: FunctionalComponent<ShowButtonProps>;
|
|
@@ -136,12 +136,14 @@ export declare class AtomicGeneratedAnswer extends LitElement implements Initial
|
|
|
136
136
|
private copyError;
|
|
137
137
|
private ariaMessage;
|
|
138
138
|
private ariaErrorMessage;
|
|
139
|
+
private ariaCopyMessage;
|
|
139
140
|
constructor();
|
|
140
141
|
initialize(): void;
|
|
141
142
|
disconnectedCallback(): void;
|
|
142
143
|
protected willUpdate(changedProperties: PropertyValueMap<this>): void;
|
|
143
144
|
render(): import("lit-html").TemplateResult<1> | typeof nothing;
|
|
144
145
|
onGeneratedAnswerStateUpdate: () => void;
|
|
146
|
+
private get shouldAnnounceAnswerStatus();
|
|
145
147
|
private get hasNoAnswerGenerated();
|
|
146
148
|
private get isAnswerVisible();
|
|
147
149
|
private get toggleTooltip();
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@coveo/atomic",
|
|
3
|
-
"version": "3.61.
|
|
3
|
+
"version": "3.61.5",
|
|
4
4
|
"description": "A web-component library for building modern UIs interfacing with the Coveo platform",
|
|
5
5
|
"homepage": "https://docs.coveo.com/en/atomic/latest/",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -55,10 +55,10 @@
|
|
|
55
55
|
"./custom-elements-manifest": "./custom-elements.json"
|
|
56
56
|
},
|
|
57
57
|
"dependencies": {
|
|
58
|
-
"@coveo/atomic-legacy": "0.1.
|
|
58
|
+
"@coveo/atomic-legacy": "0.1.6",
|
|
59
59
|
"@coveo/bueno": "1.1.9",
|
|
60
|
-
"@coveo/headless": "3.57.
|
|
61
|
-
"@coveo/relay-event-types": "20.
|
|
60
|
+
"@coveo/headless": "3.57.1",
|
|
61
|
+
"@coveo/relay-event-types": "20.7.1",
|
|
62
62
|
"@lit/context": "1.1.6",
|
|
63
63
|
"@open-wc/lit-helpers": "0.7.0",
|
|
64
64
|
"@popperjs/core": "2.11.8",
|
|
@@ -89,10 +89,10 @@
|
|
|
89
89
|
"@tailwindcss/postcss": "4.3.3",
|
|
90
90
|
"@tailwindcss/vite": "4.3.3",
|
|
91
91
|
"@types/escape-html": "1.0.4",
|
|
92
|
-
"@types/node": "24.13.
|
|
92
|
+
"@types/node": "24.13.6",
|
|
93
93
|
"@vitest/browser-playwright": "4.1.11",
|
|
94
94
|
"@wc-toolkit/storybook-helpers": "10.5.1",
|
|
95
|
-
"chromatic": "18.
|
|
95
|
+
"chromatic": "18.9.4",
|
|
96
96
|
"handlebars": "4.7.9",
|
|
97
97
|
"lit-html": "3.3.3",
|
|
98
98
|
"local-web-server": "5.4.0",
|
|
@@ -102,7 +102,7 @@
|
|
|
102
102
|
"playwright": "1.62.1",
|
|
103
103
|
"postcss": "8.5.28",
|
|
104
104
|
"postcss-load-config": "6.0.1",
|
|
105
|
-
"prettier": "3.9.
|
|
105
|
+
"prettier": "3.9.8",
|
|
106
106
|
"publint": "0.3.24",
|
|
107
107
|
"puppeteer": "25.9.0",
|
|
108
108
|
"react": "19.2.8",
|
|
@@ -114,12 +114,12 @@
|
|
|
114
114
|
"ts-dedent": "2.3.0",
|
|
115
115
|
"ts-lit-plugin": "2.0.2",
|
|
116
116
|
"typescript": "6.0.3",
|
|
117
|
-
"vite": "8.
|
|
117
|
+
"vite": "8.3.0",
|
|
118
118
|
"vitest": "4.1.11"
|
|
119
119
|
},
|
|
120
120
|
"peerDependencies": {
|
|
121
121
|
"@coveo/bueno": "^1.1.9",
|
|
122
|
-
"@coveo/headless": "^3.57.
|
|
122
|
+
"@coveo/headless": "^3.57.1",
|
|
123
123
|
"typescript": ">=5.0.0"
|
|
124
124
|
},
|
|
125
125
|
"peerDependenciesMeta": {
|