instantsearch-ui-components
Version:
Common UI components for InstantSearch.
83 lines (81 loc) • 4.47 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
Object.defineProperty(exports, "createChatMessageErrorComponent", {
enumerable: true,
get: function() {
return createChatMessageErrorComponent;
}
});
var _object_spread = require("@swc/helpers/_/_object_spread");
var _object_without_properties = require("@swc/helpers/_/_object_without_properties");
var _Button = require("../Button");
var _icons = require("./icons");
function createChatMessageErrorComponent(param) {
var createElement = param.createElement;
var Button = (0, _Button.createButtonComponent)({
createElement: createElement
});
return function ChatMessageError(userProps) {
var _ref, _ref1;
var errorMessage = userProps.errorMessage, onReload = userProps.onReload, onNewConversation = userProps.onNewConversation, actions = userProps.actions, userTranslations = userProps.translations, props = _object_without_properties._(userProps, [
"errorMessage",
"onReload",
"onNewConversation",
"actions",
"translations"
]);
var defaultErrorMessage = 'Sorry, we are not able to generate a response at the moment. Please contact support.';
var defaultNewConversationText = 'Start a new conversation';
var defaultRetryText = 'Retry';
var errorMessageTranslation = userTranslations === null || userTranslations === void 0 ? void 0 : userTranslations.errorMessage;
var resolvedErrorMessage = typeof errorMessageTranslation === 'function' ? errorMessageTranslation({
errorMessage: errorMessage
}) : errorMessageTranslation !== null && errorMessageTranslation !== void 0 ? errorMessageTranslation : defaultErrorMessage;
var newConversationText = (_ref = userTranslations === null || userTranslations === void 0 ? void 0 : userTranslations.newConversationText) !== null && _ref !== void 0 ? _ref : defaultNewConversationText;
var retryText = (_ref1 = userTranslations === null || userTranslations === void 0 ? void 0 : userTranslations.retryText) !== null && _ref1 !== void 0 ? _ref1 : defaultRetryText;
// Action precedence:
// 1. `actions` (full custom)
// 2. `onNewConversation` (recommended for permanent / guardrail errors)
// 3. `onReload` (legacy retry, suitable for transient failures)
// 4. nothing
var hasCustomActions = Boolean(actions);
var showNewConversation = !hasCustomActions && Boolean(onNewConversation);
var showRetry = !hasCustomActions && !showNewConversation && Boolean(onReload);
var hasActions = hasCustomActions || showNewConversation || showRetry;
return /*#__PURE__*/ createElement("article", _object_spread._({
className: "ais-ChatMessageError ais-ChatMessage ais-ChatMessage--left ais-ChatMessage--subtle"
}, props), /*#__PURE__*/ createElement("div", {
className: "ais-ChatMessage-container"
}, /*#__PURE__*/ createElement("div", {
className: "ais-ChatMessage-content"
}, /*#__PURE__*/ createElement("div", {
className: "ais-ChatMessage-message"
}, resolvedErrorMessage), hasActions && /*#__PURE__*/ createElement("div", {
className: "ais-ChatMessage-actions"
}, hasCustomActions ? actions.map(function(action, index) {
return /*#__PURE__*/ createElement(Button, _object_spread._({
key: index,
variant: "ghost",
className: "ais-ChatMessage-action"
}, action), action.children);
}) : showNewConversation ? /*#__PURE__*/ createElement(Button, {
variant: "primary",
size: "md",
className: "ais-ChatMessage-errorAction",
onClick: function onClick() {
return onNewConversation === null || onNewConversation === void 0 ? void 0 : onNewConversation();
}
}, newConversationText) : /*#__PURE__*/ createElement(Button, {
variant: "primary",
size: "md",
className: "ais-ChatMessage-errorAction",
onClick: function onClick() {
return onReload === null || onReload === void 0 ? void 0 : onReload();
}
}, /*#__PURE__*/ createElement(_icons.ReloadIcon, {
createElement: createElement
}), retryText)))));
};
}