@coveo/quantic 3.43.0 → 3.43.2
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/force-app/main/default/lwc/quanticGeneratedAnswer/__tests__/quanticGeneratedAnswer.test.js +145 -60
- package/force-app/main/default/lwc/quanticGeneratedAnswer/e2e/fixture-agent.ts +3 -3
- package/force-app/main/default/lwc/quanticGeneratedAnswer/e2e/fixture.ts +12 -9
- package/force-app/main/default/lwc/quanticGeneratedAnswer/e2e/pageObject.ts +5 -8
- package/force-app/main/default/lwc/quanticGeneratedAnswer/quanticGeneratedAnswer.js +12 -108
- package/force-app/main/default/lwc/quanticGeneratedAnswer/templates/generatedAnswer.html +8 -47
- package/force-app/main/default/lwc/quanticGeneratedAnswerContent/__tests__/quanticGeneratedAnswerContent.test.js +27 -0
- package/force-app/main/default/lwc/quanticGeneratedAnswerContent/quanticGeneratedAnswerContent.js +8 -1
- package/force-app/main/default/lwc/quanticGeneratedAnswerThread/quanticGeneratedAnswerThread.css +16 -4
- package/force-app/main/default/lwc/quanticGeneratedAnswerThread/quanticGeneratedAnswerThread.html +12 -16
- package/force-app/main/default/lwc/quanticThreadItem/quanticThreadItem.css +29 -11
- package/force-app/main/default/lwc/quanticThreadItem/quanticThreadItem.html +11 -15
- package/force-app/main/default/staticresources/coveoheadless/case-assist/headless.js +2 -2
- package/force-app/main/default/staticresources/coveoheadless/headless.js +2 -2
- package/force-app/main/default/staticresources/coveoheadless/insight/headless.js +2 -2
- package/force-app/main/default/staticresources/coveoheadless/recommendation/headless.js +2 -2
- package/package.json +3 -2
|
@@ -33,63 +33,24 @@
|
|
|
33
33
|
data-testid="generated-answer__answer"
|
|
34
34
|
class={generatedAnswerClass}
|
|
35
35
|
>
|
|
36
|
-
<c-quantic-generated-answer-
|
|
36
|
+
<c-quantic-generated-answer-body
|
|
37
37
|
engine-id={engineId}
|
|
38
|
-
answer
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
38
|
+
generated-answer={initialAnswer}
|
|
39
|
+
disable-citation-anchoring={disableCitationAnchoring}
|
|
40
|
+
onquantic__generatedanswerlike={handleLike}
|
|
41
|
+
onquantic__generatedanswerdislike={handleDislike}
|
|
42
|
+
onquantic__citationhover={handleCitationHover}
|
|
42
43
|
onquantic__answercontentupdated={handleAnswerContentUpdated}
|
|
43
|
-
>
|
|
44
|
-
</c-quantic-generated-answer-content>
|
|
44
|
+
></c-quantic-generated-answer-body>
|
|
45
45
|
</div>
|
|
46
46
|
<div class="slds-grid slds-grid_vertical">
|
|
47
|
-
<template lwc:if={shouldDisplayCitations}>
|
|
48
|
-
<div class="slds-size_1-of-1 slds-var-m-top_x-small">
|
|
49
|
-
<c-quantic-source-citations
|
|
50
|
-
engine-id={engineId}
|
|
51
|
-
data-testid="generated-answer__citations"
|
|
52
|
-
citations={citations}
|
|
53
|
-
citation-hover-handler={logCitationHover}
|
|
54
|
-
disable-citation-anchoring={disableCitationAnchoring}
|
|
55
|
-
></c-quantic-source-citations>
|
|
56
|
-
</div>
|
|
57
|
-
</template>
|
|
58
|
-
<template lwc:if={shouldDisplayActions}>
|
|
59
|
-
<div class="slds-size_1-of-1 slds-grid slds-grid_vertical-align-center slds-var-m-top_x-small slds-grid_align-start">
|
|
60
|
-
<div
|
|
61
|
-
data-testid="generated-answer__actions"
|
|
62
|
-
class="slds-grid slds-grid_vertical-align-center"
|
|
63
|
-
>
|
|
64
|
-
<c-quantic-feedback
|
|
65
|
-
state={feedbackState}
|
|
66
|
-
onquantic__like={handleLike}
|
|
67
|
-
onquantic__dislike={handleDislike}
|
|
68
|
-
like-icon-name="utility:like"
|
|
69
|
-
like-label={labels.thisAnswerWasHelpful}
|
|
70
|
-
dislike-icon-name="utility:dislike"
|
|
71
|
-
dislike-label={labels.thisAnswerWasNotHelpful}
|
|
72
|
-
size="x-small"
|
|
73
|
-
question=""
|
|
74
|
-
hide-explain-why-button
|
|
75
|
-
hide-labels
|
|
76
|
-
></c-quantic-feedback>
|
|
77
|
-
<c-quantic-generated-answer-copy-to-clipboard
|
|
78
|
-
data-testid="generated-answer__copy-to-clipboard"
|
|
79
|
-
answer={answer}
|
|
80
|
-
size="x-small"
|
|
81
|
-
class="slds-var-m-horizontal_xx-small"
|
|
82
|
-
></c-quantic-generated-answer-copy-to-clipboard>
|
|
83
|
-
</div>
|
|
84
|
-
</div>
|
|
85
|
-
</template>
|
|
86
47
|
<template lwc:if={isAnswerCollapsed}>
|
|
87
48
|
<div class="slds-grid slds-size_1-of-1 slds-wrap slds-grid_vertical-align-center slds-var-m-top_x-small">
|
|
88
49
|
<div class="slds-grid slds-wrap slds-grid_vertical-align-center">
|
|
89
50
|
<template lwc:if={isStreaming}>
|
|
90
51
|
<div
|
|
91
52
|
data-testid="generated-answer__collapse-generating-message"
|
|
92
|
-
class="generated-answer__collapse-generating-message slds-var-m-right_small"
|
|
53
|
+
class="generated-answer__collapse-generating-message slds-var-m-right_small slds-var-m-bottom_medium"
|
|
93
54
|
>
|
|
94
55
|
{labels.generatingAnswer}...
|
|
95
56
|
</div>
|
|
@@ -5,6 +5,8 @@ import {createElement} from 'lwc';
|
|
|
5
5
|
import {loadMarkdownDependencies} from 'c/quanticUtils';
|
|
6
6
|
import * as mockHeadlessLoader from 'c/quanticHeadlessLoader';
|
|
7
7
|
|
|
8
|
+
const mockAnswerHeight = 250;
|
|
9
|
+
|
|
8
10
|
jest.mock('c/quanticHeadlessLoader');
|
|
9
11
|
jest.mock('c/quanticUtils', () => ({
|
|
10
12
|
loadMarkdownDependencies: jest.fn(
|
|
@@ -17,6 +19,7 @@ jest.mock('c/quanticUtils', () => ({
|
|
|
17
19
|
LinkUtils: {
|
|
18
20
|
bindAnalyticsToLink: jest.fn(() => jest.fn()),
|
|
19
21
|
},
|
|
22
|
+
getAbsoluteHeight: jest.fn(() => mockAnswerHeight),
|
|
20
23
|
}));
|
|
21
24
|
|
|
22
25
|
const mockMarkedUse = jest.fn();
|
|
@@ -417,4 +420,28 @@ describe('c-quantic-generated-answer-content', () => {
|
|
|
417
420
|
});
|
|
418
421
|
});
|
|
419
422
|
});
|
|
423
|
+
|
|
424
|
+
describe('the quantic__answercontentupdated event', () => {
|
|
425
|
+
beforeEach(() => {
|
|
426
|
+
mockSuccessfulHeadlessInitialization();
|
|
427
|
+
prepareHeadlessState();
|
|
428
|
+
});
|
|
429
|
+
|
|
430
|
+
it('should dispatch the event with the measured height when the markdown content is updated', async () => {
|
|
431
|
+
const element = createTestComponent({
|
|
432
|
+
...defaultOptions,
|
|
433
|
+
answerContentFormat: 'text/markdown',
|
|
434
|
+
answer: 'Hello, world!',
|
|
435
|
+
});
|
|
436
|
+
const handler = jest.fn();
|
|
437
|
+
element.addEventListener('quantic__answercontentupdated', handler);
|
|
438
|
+
await flushPromises();
|
|
439
|
+
|
|
440
|
+
expect(handler).toHaveBeenCalledTimes(1);
|
|
441
|
+
const event = handler.mock.calls[0][0];
|
|
442
|
+
expect(event.detail).toEqual({height: mockAnswerHeight});
|
|
443
|
+
expect(event.bubbles).toBe(true);
|
|
444
|
+
expect(event.composed).toBe(true);
|
|
445
|
+
});
|
|
446
|
+
});
|
|
420
447
|
});
|
package/force-app/main/default/lwc/quanticGeneratedAnswerContent/quanticGeneratedAnswerContent.js
CHANGED
|
@@ -7,6 +7,7 @@ import {
|
|
|
7
7
|
transformMarkdownToHtml,
|
|
8
8
|
loadMarkdownDependencies,
|
|
9
9
|
LinkUtils,
|
|
10
|
+
getAbsoluteHeight,
|
|
10
11
|
} from 'c/quanticUtils';
|
|
11
12
|
import {LightningElement, api} from 'lwc';
|
|
12
13
|
// @ts-ignore
|
|
@@ -171,7 +172,13 @@ export default class QuanticGeneratedAnswerContent extends LightningElement {
|
|
|
171
172
|
else {
|
|
172
173
|
answerContainer.textContent = this.answer;
|
|
173
174
|
}
|
|
174
|
-
this.dispatchEvent(
|
|
175
|
+
this.dispatchEvent(
|
|
176
|
+
new CustomEvent('quantic__answercontentupdated', {
|
|
177
|
+
bubbles: true,
|
|
178
|
+
composed: true,
|
|
179
|
+
detail: {height: getAbsoluteHeight(answerContainer)},
|
|
180
|
+
})
|
|
181
|
+
);
|
|
175
182
|
}
|
|
176
183
|
|
|
177
184
|
/**
|
package/force-app/main/default/lwc/quanticGeneratedAnswerThread/quanticGeneratedAnswerThread.css
CHANGED
|
@@ -1,6 +1,19 @@
|
|
|
1
|
-
.generated-answer-
|
|
2
|
-
|
|
1
|
+
.generated-answer-thread__grid {
|
|
2
|
+
display: grid;
|
|
3
|
+
grid-template-columns: 10px 1fr;
|
|
4
|
+
grid-template-rows: auto 1fr;
|
|
5
|
+
column-gap: var(--lwc-spacingXSmall, 8px);
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
.generated-answer-thread__timeline {
|
|
9
|
+
grid-row: 1 / -1;
|
|
10
|
+
align-self: stretch;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
.generated-answer-thread__dot-column {
|
|
3
14
|
width: 10px;
|
|
15
|
+
height: 1lh;
|
|
16
|
+
margin-block: var(--lwc-spacingXxSmall, 4px);
|
|
4
17
|
}
|
|
5
18
|
|
|
6
19
|
.generated-answer-thread__dot {
|
|
@@ -12,9 +25,8 @@
|
|
|
12
25
|
|
|
13
26
|
.generated-answer-thread__connector {
|
|
14
27
|
position: relative;
|
|
28
|
+
flex: 1;
|
|
15
29
|
width: 1px;
|
|
16
|
-
height: 100%;
|
|
17
|
-
min-height: 12px;
|
|
18
30
|
background-color: var(--lwc-colorBorder, #dddbda);
|
|
19
31
|
}
|
|
20
32
|
|
package/force-app/main/default/lwc/quanticGeneratedAnswerThread/quanticGeneratedAnswerThread.html
CHANGED
|
@@ -11,16 +11,19 @@
|
|
|
11
11
|
<ul class="generated-answer-thread">
|
|
12
12
|
<template lwc:if={shouldCollapseOlderAnswers}>
|
|
13
13
|
<li class="generated-answer-thread__show-previous">
|
|
14
|
-
<div class="
|
|
15
|
-
<div
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
14
|
+
<div class="generated-answer-thread__grid">
|
|
15
|
+
<div class="slds-grid slds-grid_vertical slds-grid_vertical-align-center generated-answer-thread__timeline">
|
|
16
|
+
<div
|
|
17
|
+
class="slds-grid slds-grid_align-center slds-grid_vertical-align-center generated-answer-thread__dot-column"
|
|
18
|
+
>
|
|
19
|
+
<span
|
|
20
|
+
class="generated-answer-thread__dot"
|
|
21
|
+
data-testid="show-previous-dot"
|
|
22
|
+
></span>
|
|
23
|
+
</div>
|
|
24
|
+
<span class="generated-answer-thread__connector"></span>
|
|
22
25
|
</div>
|
|
23
|
-
<div>
|
|
26
|
+
<div class="slds-has-flexi-truncate">
|
|
24
27
|
<button
|
|
25
28
|
type="button"
|
|
26
29
|
class="slds-button_reset slds-p-horizontal_x-small slds-p-vertical_xx-small generated-answer-thread__show-previous-button"
|
|
@@ -31,13 +34,6 @@
|
|
|
31
34
|
</button>
|
|
32
35
|
</div>
|
|
33
36
|
</div>
|
|
34
|
-
<div class="slds-grid">
|
|
35
|
-
<div
|
|
36
|
-
class="slds-grid slds-grid_align-center slds-shrink-none generated-answer-thread__line-column slds-m-right_x-small"
|
|
37
|
-
>
|
|
38
|
-
<span class="generated-answer-thread__connector"></span>
|
|
39
|
-
</div>
|
|
40
|
-
</div>
|
|
41
37
|
</li>
|
|
42
38
|
</template>
|
|
43
39
|
|
|
@@ -2,26 +2,28 @@
|
|
|
2
2
|
list-style: none;
|
|
3
3
|
}
|
|
4
4
|
|
|
5
|
-
.thread-
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
.thread-item__grid {
|
|
6
|
+
display: grid;
|
|
7
|
+
grid-template-columns: 10px 1fr;
|
|
8
|
+
grid-template-rows: auto 1fr;
|
|
9
|
+
column-gap: var(--lwc-spacingXSmall, 8px);
|
|
8
10
|
}
|
|
9
11
|
|
|
10
|
-
.thread-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
border-radius: 50%;
|
|
14
|
-
background-color: var(--lwc-colorBorder, #dddbda);
|
|
12
|
+
.thread-item__timeline {
|
|
13
|
+
grid-row: 1 / -1;
|
|
14
|
+
align-self: stretch;
|
|
15
15
|
}
|
|
16
16
|
|
|
17
|
-
.thread-item__dot
|
|
18
|
-
|
|
17
|
+
.thread-item__dot-column {
|
|
18
|
+
width: 10px;
|
|
19
|
+
height: 1lh;
|
|
20
|
+
margin-block: var(--lwc-spacingXxSmall, 4px);
|
|
19
21
|
}
|
|
20
22
|
|
|
21
23
|
.thread-item__line {
|
|
22
24
|
position: relative;
|
|
25
|
+
flex: 1;
|
|
23
26
|
width: 1px;
|
|
24
|
-
height: 100%;
|
|
25
27
|
background-color: var(--lwc-colorBorder, #dddbda);
|
|
26
28
|
}
|
|
27
29
|
|
|
@@ -43,6 +45,22 @@
|
|
|
43
45
|
bottom: -8px;
|
|
44
46
|
}
|
|
45
47
|
|
|
48
|
+
.thread-item__content {
|
|
49
|
+
grid-column: 2;
|
|
50
|
+
grid-row: 2;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
.thread-item__dot {
|
|
54
|
+
height: 8px;
|
|
55
|
+
width: 8px;
|
|
56
|
+
border-radius: 50%;
|
|
57
|
+
background-color: var(--lwc-colorBorder, #dddbda);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
.thread-item__dot--expanded {
|
|
61
|
+
background-color: var(--lwc-colorTextDefault, #080707);
|
|
62
|
+
}
|
|
63
|
+
|
|
46
64
|
.thread-item__clamped-text {
|
|
47
65
|
display: -webkit-box;
|
|
48
66
|
-webkit-line-clamp: 3;
|
|
@@ -1,10 +1,15 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<li class="thread-item">
|
|
3
|
-
<div class="
|
|
4
|
-
<div
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
3
|
+
<div class="thread-item__grid">
|
|
4
|
+
<div class="slds-grid slds-grid_vertical slds-grid_vertical-align-center thread-item__timeline">
|
|
5
|
+
<div
|
|
6
|
+
class="slds-grid slds-grid_align-center slds-grid_vertical-align-center thread-item__dot-column"
|
|
7
|
+
>
|
|
8
|
+
<span class={dotClass} data-testid="thread-item-dot"></span>
|
|
9
|
+
</div>
|
|
10
|
+
<template lwc:if={shouldDisplayLine}>
|
|
11
|
+
<span class="thread-item__line" data-testid="thread-item-line"></span>
|
|
12
|
+
</template>
|
|
8
13
|
</div>
|
|
9
14
|
<div class="slds-has-flexi-truncate">
|
|
10
15
|
<template lwc:if={disableCollapse}>
|
|
@@ -25,18 +30,9 @@
|
|
|
25
30
|
</button>
|
|
26
31
|
</template>
|
|
27
32
|
</div>
|
|
28
|
-
</div>
|
|
29
|
-
<div class="slds-grid">
|
|
30
|
-
<div
|
|
31
|
-
class="slds-grid slds-grid_align-center slds-shrink-none thread-item__line-column slds-m-right_x-small"
|
|
32
|
-
>
|
|
33
|
-
<template lwc:if={shouldDisplayLine}>
|
|
34
|
-
<span class="thread-item__line" data-testid="thread-item-line"></span>
|
|
35
|
-
</template>
|
|
36
|
-
</div>
|
|
37
33
|
<div
|
|
38
34
|
id="thread-item-content"
|
|
39
|
-
class="slds-
|
|
35
|
+
class="slds-p-left_x-small slds-p-vertical_xx-small thread-item__content"
|
|
40
36
|
data-testid="thread-item-content"
|
|
41
37
|
>
|
|
42
38
|
<div hidden={contentHidden}>
|