From 3a8a3c6b3e57bb506190e74aa99a9349bd1e2a46 Mon Sep 17 00:00:00 2001 From: simonmilord Date: Thu, 30 Jan 2025 14:58:03 -0500 Subject: [PATCH] initial commit --- .../quanticGeneratedAnswer.js | 22 ++++++++++++++++++- .../templates/noGeneratedAnswer.css | 1 + .../templates/noGeneratedAnswer.html | 19 ++++++++++++++++ 3 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 packages/quantic/force-app/main/default/lwc/quanticGeneratedAnswer/templates/noGeneratedAnswer.css create mode 100644 packages/quantic/force-app/main/default/lwc/quanticGeneratedAnswer/templates/noGeneratedAnswer.html diff --git a/packages/quantic/force-app/main/default/lwc/quanticGeneratedAnswer/quanticGeneratedAnswer.js b/packages/quantic/force-app/main/default/lwc/quanticGeneratedAnswer/quanticGeneratedAnswer.js index 0d521e7b86c..66370c16b68 100644 --- a/packages/quantic/force-app/main/default/lwc/quanticGeneratedAnswer/quanticGeneratedAnswer.js +++ b/packages/quantic/force-app/main/default/lwc/quanticGeneratedAnswer/quanticGeneratedAnswer.js @@ -31,6 +31,8 @@ import errorTemplate from './templates/errorTemplate.html'; import generatedAnswerTemplate from './templates/generatedAnswer.html'; // @ts-ignore import retryPromptTemplate from './templates/retryPrompt.html'; +// @ts-ignore +import noGeneratedAnswerTemplate from './templates/noGeneratedAnswer.html'; /** @typedef {import("coveo").SearchEngine} SearchEngine */ /** @typedef {import("coveo").GeneratedAnswer} GeneratedAnswer */ @@ -48,9 +50,13 @@ const GENERATED_ANSWER_DATA_KEY = 'coveo-generated-answer-data'; /** * The `QuanticGeneratedAnswer` component automatically generates an answer using Coveo machine learning models to answer the query executed by the user. + * This component includes a slot, "no-answer-message", which allows for rendering a custom message when no answer is generated. * @category Search + * @slot no-answer-message - Slot that allows the rendering of a custom message when no answer is generated. * @example - * + * + *
No answer was generated.
+ *
*/ export default class QuanticGeneratedAnswer extends LightningElement { /** @@ -546,6 +552,16 @@ export default class QuanticGeneratedAnswer extends LightningElement { return this.state?.expanded; } + /** + * Returns whether the component has a custom message to display when no answer is generated. + * @returns {boolean} + */ + get hasCustomNoAnswerMessage() { + /** @type {HTMLSlotElement} */ + const slot = this.template.querySelector('slot[name="no-answer-message"]'); + return !!slot?.assignedNodes()?.length; + } + /** * Sets the component in the initialization error state. */ @@ -560,6 +576,10 @@ export default class QuanticGeneratedAnswer extends LightningElement { if (this.hasRetryableError) { return retryPromptTemplate; } + if (!this.shouldDisplayGeneratedAnswer && this.hasCustomNoAnswerMessage) { + return noGeneratedAnswerTemplate; + } + return generatedAnswerTemplate; } } diff --git a/packages/quantic/force-app/main/default/lwc/quanticGeneratedAnswer/templates/noGeneratedAnswer.css b/packages/quantic/force-app/main/default/lwc/quanticGeneratedAnswer/templates/noGeneratedAnswer.css new file mode 100644 index 00000000000..0a91b75e839 --- /dev/null +++ b/packages/quantic/force-app/main/default/lwc/quanticGeneratedAnswer/templates/noGeneratedAnswer.css @@ -0,0 +1 @@ +@import '../quanticGeneratedAnswer.css'; diff --git a/packages/quantic/force-app/main/default/lwc/quanticGeneratedAnswer/templates/noGeneratedAnswer.html b/packages/quantic/force-app/main/default/lwc/quanticGeneratedAnswer/templates/noGeneratedAnswer.html new file mode 100644 index 00000000000..b6e358d2d00 --- /dev/null +++ b/packages/quantic/force-app/main/default/lwc/quanticGeneratedAnswer/templates/noGeneratedAnswer.html @@ -0,0 +1,19 @@ +