impact-chatbot 2.3.86 → 2.3.87

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.
@@ -1,5 +1,7 @@
1
- declare const ChipsContent: ({ bodyText, props }: {
1
+ declare const ChipsContent: ({ bodyText, props, botData, isFormDisabled }: {
2
2
  bodyText: any;
3
3
  props: any;
4
+ botData: any;
5
+ isFormDisabled?: boolean;
4
6
  }) => import("react/jsx-runtime").JSX.Element;
5
7
  export default ChipsContent;
package/dist/index.cjs.js CHANGED
@@ -5150,17 +5150,26 @@ const TextContent = ({ bodyText, botData }) => {
5150
5150
  return (jsxRuntime.jsx("div", { children: renderTextContent() }));
5151
5151
  };
5152
5152
 
5153
- const ChipsContent = ({ bodyText, props }) => {
5153
+ const ChipsContent = ({ bodyText, props, botData, isFormDisabled = false }) => {
5154
5154
  const classes = useStyles$a();
5155
5155
  const globalClasses = globalStyles();
5156
- return (jsxRuntime.jsx("div", { className: `${globalClasses.flexRow} ${globalClasses.flexWrap} ${globalClasses.gap} ${globalClasses.verticalAlignCenter}`, children: bodyText.map((data, index) => {
5157
- const callBack = data.interactable && props
5158
- ? Object.entries(props).filter((entry) => entry[0] === data.actionName)?.[0]?.[1]
5159
- : null;
5160
- return (jsxRuntime.jsx(material.Typography, { component: "span", variant: "body1", className: `${classes.gptChips} ${data.interactable ? globalClasses.cursorPointer : ""}`, onClick: () => {
5161
- callBack && callBack(data);
5162
- }, children: data.displayText }, index));
5163
- }) }));
5156
+ // Suggested-question chips are one-shot: once the user has clicked one of them
5157
+ // or asked a new question the block disappears. isFormDisabled is true for
5158
+ // every bot message except the latest, so it flips exactly when the user
5159
+ // moves past these chips. Only chips that opt in via isQuestionsDisabled
5160
+ // behave this way; all other chips stay visible.
5161
+ if (botData?.isQuestionsDisabled && isFormDisabled) {
5162
+ return null;
5163
+ }
5164
+ const showHeaderTitle = !botData?.noShowHeaderTitle && Boolean(botData?.headerTitle?.length);
5165
+ return (jsxRuntime.jsxs(React.Fragment, { children: [showHeaderTitle && (jsxRuntime.jsx("div", { className: `${classes.chatbotText} ${classes.boldText} ${classes.combinedBlockHeaderTitle}`, children: botData.headerTitle })), jsxRuntime.jsx("div", { className: `${globalClasses.flexRow} ${globalClasses.flexWrap} ${globalClasses.gap} ${globalClasses.verticalAlignCenter}`, children: bodyText.map((data, index) => {
5166
+ const callBack = data.interactable && props
5167
+ ? Object.entries(props).filter((entry) => entry[0] === data.actionName)?.[0]?.[1]
5168
+ : null;
5169
+ return (jsxRuntime.jsx(material.Typography, { component: "span", variant: "body1", className: `${classes.gptChips} ${data.interactable ? globalClasses.cursorPointer : ""}`, onClick: () => {
5170
+ callBack && callBack(data);
5171
+ }, children: data.displayText }, index));
5172
+ }) })] }));
5164
5173
  };
5165
5174
 
5166
5175
  /**
@@ -6157,7 +6166,8 @@ const TableContent = ({ bodyText }) => {
6157
6166
  };
6158
6167
 
6159
6168
  const GraphContent = ({ bodyText }) => {
6160
- const { chartOptions } = bodyText || {};
6169
+ const { chartOptions, title } = bodyText || {};
6170
+ const classes = useStyles$a();
6161
6171
  const chartRef = React.useRef(null);
6162
6172
  const handleChartRef = (ref) => {
6163
6173
  chartRef.current = ref;
@@ -6168,7 +6178,7 @@ const GraphContent = ({ bodyText }) => {
6168
6178
  const options = {
6169
6179
  ...chartOptions,
6170
6180
  };
6171
- return (jsxRuntime.jsx(material.Grid, { container: true, children: jsxRuntime.jsx(material.Grid, { item: true, xs: 12, children: jsxRuntime.jsx(CoreChart, { options: options, handleChartRef: handleChartRef }) }) }));
6181
+ return (jsxRuntime.jsxs(material.Grid, { container: true, children: [Boolean(title?.length) && (jsxRuntime.jsx(material.Grid, { item: true, xs: 12, children: jsxRuntime.jsx("div", { className: `${classes.chatbotText} ${classes.boldText} ${classes.combinedBlockHeaderTitle}`, children: title }) })), jsxRuntime.jsx(material.Grid, { item: true, xs: 12, children: jsxRuntime.jsx(CoreChart, { options: options, handleChartRef: handleChartRef }) })] }));
6172
6182
  };
6173
6183
 
6174
6184
  const SelectableChips = ({ bodyText, chipType, props, utilityData }) => {
@@ -7556,7 +7566,6 @@ const STEP_FORM_TIMEOUT_KEY = "__stepFormTimedOut";
7556
7566
  */
7557
7567
  const StepFormContent = ({ formData, messageIndex = 0, isFormDisabled = false, showSavedFilters = true, preSelectedFilters = null, botProps = null, currentMode = "", agentId = "", sessionId = "", }) => {
7558
7568
  const dispatch = reactRedux.useDispatch();
7559
- const classes = useStyles$a();
7560
7569
  const savedFilterSets = reactRedux.useSelector((state) => state.smartBotReducer.savedFilterSets);
7561
7570
  const persistedFormValues = reactRedux.useSelector((state) => state.smartBotReducer.persistedFormValues);
7562
7571
  const chatbotContext = reactRedux.useSelector((state) => state.smartBotReducer.chatbotContext);
@@ -7829,13 +7838,13 @@ const StepFormContent = ({ formData, messageIndex = 0, isFormDisabled = false, s
7829
7838
  case "text":
7830
7839
  return jsxRuntime.jsx(TextContent, { bodyText: parsedData.bodyText, botData: parsedData }, key);
7831
7840
  case "chips":
7832
- return parsedData.isMultiSelect ? (jsxRuntime.jsx(SelectableChips, { bodyText: parsedData.bodyText, chipType: "selectable", utilityData: parsedData.utilityData, props: botProps }, key)) : (jsxRuntime.jsx(ChipsContent, { bodyText: parsedData.bodyText, props: botProps }, key));
7841
+ return parsedData.isMultiSelect ? (jsxRuntime.jsx(SelectableChips, { bodyText: parsedData.bodyText, chipType: "selectable", utilityData: parsedData.utilityData, props: botProps }, key)) : (jsxRuntime.jsx(ChipsContent, { bodyText: parsedData.bodyText, props: botProps, botData: parsedData, isFormDisabled: isFormDisabled }, key));
7833
7842
  case "questions":
7834
7843
  return jsxRuntime.jsx(QuestionsContent, { bodyText: parsedData.bodyText, props: botProps }, key);
7835
7844
  case "html":
7836
7845
  return jsxRuntime.jsx(HtmlContent, { bodyText: parsedData.bodyText }, key);
7837
7846
  case "table":
7838
- return jsxRuntime.jsx(TableContent, { bodyText: parsedData.bodyText }, key);
7847
+ return jsxRuntime.jsx(TableContent, { bodyText: parsedData.bodyText }, parsedData.bodyText?.table_name || key);
7839
7848
  case "graph":
7840
7849
  return jsxRuntime.jsx(GraphContent, { bodyText: parsedData.bodyText }, key);
7841
7850
  case "slider":
@@ -7870,17 +7879,11 @@ const StepFormContent = ({ formData, messageIndex = 0, isFormDisabled = false, s
7870
7879
  const body = renderItem(parsedData, index);
7871
7880
  if (!body)
7872
7881
  return;
7873
- // Skip the block header when it is just a repeat of the label the widget
7874
- // renders itself (parseResponse derives headerTitle from label for inputs).
7875
- const showHeaderTitle = !parsedData?.noShowHeaderTitle &&
7876
- Boolean(parsedData?.headerTitle?.length) &&
7877
- parsedData.headerTitle !== parsedData?.bodyText?.label;
7878
- const rendered = showHeaderTitle ? (jsxRuntime.jsxs(React.Fragment, { children: [jsxRuntime.jsx("div", { className: `${classes.chatbotText} ${classes.boldText} ${classes.combinedBlockHeaderTitle}`, children: parsedData.headerTitle }), body] }, `step-form-block-${index}`)) : (body);
7879
7882
  if (parsedData.bodyType === "button") {
7880
- buttonItems.push(rendered);
7883
+ buttonItems.push(body);
7881
7884
  }
7882
7885
  else {
7883
- formFields.push(rendered);
7886
+ formFields.push(body);
7884
7887
  }
7885
7888
  }
7886
7889
  catch (error) {
@@ -8390,7 +8393,10 @@ const renderWidgetItem = (item, index, isFormDisabled) => {
8390
8393
  case "text":
8391
8394
  return jsxRuntime.jsx(TextContent, { bodyText: parsedData.bodyText, botData: parsedData }, key);
8392
8395
  case "table":
8393
- return jsxRuntime.jsx(TableContent, { bodyText: parsedData.bodyText }, key);
8396
+ // Key on table_name so a different table never reuses a mounted grid.
8397
+ // ag-grid captures its fetch callback once at init, so a reused grid
8398
+ // would keep querying the previous table's table_name.
8399
+ return jsxRuntime.jsx(TableContent, { bodyText: parsedData.bodyText }, parsedData.bodyText?.table_name || key);
8394
8400
  case "graph":
8395
8401
  return jsxRuntime.jsx(GraphContent, { bodyText: parsedData.bodyText }, key);
8396
8402
  case "radio":
@@ -10339,7 +10345,6 @@ let instanceCounter = 0;
10339
10345
  let activeTabularInstanceId = null;
10340
10346
  const TabularContent = ({ steps: initialSteps, currentTabValue, children, questions: initialQuestions = [], questionsStepsMap: initialQuestionsStepsMap = {}, stepFormDataMap: initialStepFormDataMap = {}, isFormDisabled = false, sessionId: propSessionId = "", botProps = null, currentMode = "", agentId = "" }) => {
10341
10347
  const dispatch = reactRedux.useDispatch();
10342
- const chatClasses = useStyles$a();
10343
10348
  const stepFormStreamData = reactRedux.useSelector((state) => state.smartBotReducer.stepFormStreamData);
10344
10349
  const thinkingContext = reactRedux.useSelector((state) => state.smartBotReducer.thinkingContext);
10345
10350
  const streamStartTimeRef = React.useRef(thinkingContext?.streamStartTime);
@@ -10428,13 +10433,13 @@ const TabularContent = ({ steps: initialSteps, currentTabValue, children, questi
10428
10433
  case "text":
10429
10434
  return jsxRuntime.jsx(TextContent, { bodyText: parsedData.bodyText, botData: parsedData }, key);
10430
10435
  case "chips":
10431
- return parsedData.isMultiSelect ? (jsxRuntime.jsx(SelectableChips, { bodyText: parsedData.bodyText, chipType: "selectable", utilityData: parsedData.utilityData, props: botProps }, key)) : (jsxRuntime.jsx(ChipsContent, { bodyText: parsedData.bodyText, props: botProps }, key));
10436
+ return parsedData.isMultiSelect ? (jsxRuntime.jsx(SelectableChips, { bodyText: parsedData.bodyText, chipType: "selectable", utilityData: parsedData.utilityData, props: botProps }, key)) : (jsxRuntime.jsx(ChipsContent, { bodyText: parsedData.bodyText, props: botProps, botData: parsedData, isFormDisabled: isFormDisabled }, key));
10432
10437
  case "questions":
10433
10438
  return jsxRuntime.jsx(QuestionsContent, { bodyText: parsedData.bodyText, props: botProps }, key);
10434
10439
  case "image":
10435
10440
  return jsxRuntime.jsx(ImageContent, { bodyText: parsedData.bodyText }, key);
10436
10441
  case "table":
10437
- return jsxRuntime.jsx(TableContent, { bodyText: parsedData.bodyText }, key);
10442
+ return jsxRuntime.jsx(TableContent, { bodyText: parsedData.bodyText }, parsedData.bodyText?.table_name || key);
10438
10443
  case "graph":
10439
10444
  return jsxRuntime.jsx(GraphContent, { bodyText: parsedData.bodyText }, key);
10440
10445
  case "radio":
@@ -10465,13 +10470,7 @@ const TabularContent = ({ steps: initialSteps, currentTabValue, children, questi
10465
10470
  if (!parsedData)
10466
10471
  return null;
10467
10472
  const key = `restream-widget-${index}`;
10468
- const body = renderWidgetBody(parsedData, key);
10469
- if (!body)
10470
- return null;
10471
- const showHeaderTitle = !parsedData?.noShowHeaderTitle && Boolean(parsedData?.headerTitle?.length);
10472
- if (!showHeaderTitle)
10473
- return body;
10474
- return (jsxRuntime.jsxs(React.Fragment, { children: [jsxRuntime.jsx("div", { className: `${chatClasses.chatbotText} ${chatClasses.boldText} ${chatClasses.combinedBlockHeaderTitle}`, children: parsedData.headerTitle }), body] }, `restream-widget-block-${index}`));
10473
+ return renderWidgetBody(parsedData, key);
10475
10474
  }
10476
10475
  catch (e) {
10477
10476
  console.error("[TabularContent] renderWidget error:", e);
@@ -10835,19 +10834,10 @@ const resetActiveTabularInstance = () => {
10835
10834
  };
10836
10835
 
10837
10836
  const CombinedContent = ({ botData, props }) => {
10838
- const classes = useStyles$a();
10839
10837
  const isFormDisabled = botData?.isFormDisabled || false;
10840
10838
  const isTabEnabled = botData?.utilityData?.isTabEnabled;
10841
10839
  // Get the array of content items from bodyText
10842
10840
  const contentItems = Array.isArray(botData.bodyText) ? botData.bodyText : [];
10843
- // Renders the optional block-level header title above a content item.
10844
- const renderHeaderTitle = (parsedData) => {
10845
- const showHeaderTitle = !parsedData?.noShowHeaderTitle &&
10846
- Boolean(parsedData?.headerTitle?.length);
10847
- if (!showHeaderTitle)
10848
- return null;
10849
- return (jsxRuntime.jsx("div", { className: `${classes.chatbotText} ${classes.boldText} ${classes.combinedBlockHeaderTitle}`, children: parsedData.headerTitle }));
10850
- };
10851
10841
  // Function to render individual content based on its type
10852
10842
  const renderIndividualContent = (parsedData, index) => {
10853
10843
  const key = `combined-content-${index}`;
@@ -10859,12 +10849,12 @@ const CombinedContent = ({ botData, props }) => {
10859
10849
  return (jsxRuntime.jsx(SelectableChips, { bodyText: parsedData.bodyText, chipType: "selectable", utilityData: parsedData.utilityData, props: props }, key));
10860
10850
  }
10861
10851
  else {
10862
- return jsxRuntime.jsx(ChipsContent, { bodyText: parsedData.bodyText, props: props }, key);
10852
+ return (jsxRuntime.jsx(ChipsContent, { bodyText: parsedData.bodyText, props: props, botData: parsedData, isFormDisabled: isFormDisabled }, key));
10863
10853
  }
10864
10854
  case "questions":
10865
10855
  return jsxRuntime.jsx(QuestionsContent, { bodyText: parsedData.bodyText, props: props }, key);
10866
10856
  case "table":
10867
- return jsxRuntime.jsx(TableContent, { bodyText: parsedData.bodyText }, key);
10857
+ return jsxRuntime.jsx(TableContent, { bodyText: parsedData.bodyText }, parsedData.bodyText?.table_name || key);
10868
10858
  case "graph":
10869
10859
  return jsxRuntime.jsx(GraphContent, { bodyText: parsedData.bodyText }, key);
10870
10860
  case "slider":
@@ -10900,8 +10890,8 @@ const CombinedContent = ({ botData, props }) => {
10900
10890
  if (!parsedData) {
10901
10891
  return null;
10902
10892
  }
10903
- // Render the parsed content, preceded by the block's header title when present
10904
- return (jsxRuntime.jsxs(React.Fragment, { children: [renderHeaderTitle(parsedData), renderIndividualContent(parsedData, index)] }, `combined-block-${index}`));
10893
+ // Render the parsed content
10894
+ return renderIndividualContent(parsedData, index);
10905
10895
  }
10906
10896
  catch (error) {
10907
10897
  console.error(`Error parsing combined content item at index ${index}:`, error);