@searchstax-inc/searchstudio-ux-vue 4.2.34 → 4.2.50

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.
Files changed (24) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/README.md +46 -1
  3. package/dist/@searchstax-inc/components/SearchstaxAnswerWidget.vue.d.ts +8 -2
  4. package/dist/@searchstax-inc/components/SearchstaxExternalPromotionsWidget.vue.d.ts +2 -2
  5. package/dist/@searchstax-inc/components/SearchstaxFacetsWidget.vue.d.ts +34 -12
  6. package/dist/@searchstax-inc/components/SearchstaxLocationWidget.vue.d.ts +2 -2
  7. package/dist/@searchstax-inc/components/SearchstaxPaginationWidget.vue.d.ts +4 -4
  8. package/dist/@searchstax-inc/components/SearchstaxRelatedSearchesWidget.vue.d.ts +2 -2
  9. package/dist/@searchstax-inc/components/SearchstaxResultWidget.vue.d.ts +475 -269
  10. package/dist/@searchstax-inc/components/SearchstaxSearchFeedbackWidget.vue.d.ts +2 -2
  11. package/dist/@searchstax-inc/components/SearchstaxSortingWidget.vue.d.ts +2 -2
  12. package/dist/@searchstax-inc/components/icons/IconCommunity.vue.d.ts +2 -0
  13. package/dist/@searchstax-inc/components/icons/IconDocumentation.vue.d.ts +2 -0
  14. package/dist/@searchstax-inc/components/icons/IconEcosystem.vue.d.ts +2 -0
  15. package/dist/@searchstax-inc/components/icons/IconSupport.vue.d.ts +2 -0
  16. package/dist/@searchstax-inc/components/icons/IconTooling.vue.d.ts +2 -0
  17. package/dist/@searchstax-inc/components/templates/SearchstaxAnswerWidgetTemplate.vue.d.ts +24 -0
  18. package/dist/@searchstax-inc/components/templates/SearchstaxFacetsWidgetMobileTemplate.vue.d.ts +5 -5
  19. package/dist/@searchstax-inc/searchstudio-ux-vue.cjs +16 -16
  20. package/dist/@searchstax-inc/searchstudio-ux-vue.iife.js +18 -18
  21. package/dist/@searchstax-inc/searchstudio-ux-vue.mjs +1002 -841
  22. package/dist/@searchstax-inc/stores/searchstaxStore.d.ts +468 -265
  23. package/dist/App.vue.d.ts +2 -0
  24. package/package.json +4 -4
package/CHANGELOG.md CHANGED
@@ -1,6 +1,19 @@
1
1
  # Change Log
2
2
 
3
3
  All notable changes to the "searchstudio-ux-vue" project will be documented in this file.
4
+ ## [4.2.50]
5
+ ### Features
6
+ - Added conversation functionality for Vue and React
7
+ - Added support for grouped results
8
+
9
+ ### Bug Fixes
10
+ - Security fixes
11
+
12
+ ## [4.2.36]
13
+ ### Bug Fixes
14
+ - Facets template now supports custom variables
15
+ - Unmapped fields now persist data types correctly
16
+
4
17
  ## [4.2.34]
5
18
  ### Bug Fixes
6
19
  - Addressed some vulnerabilities
package/README.md CHANGED
@@ -222,6 +222,51 @@ It receives the following props:
222
222
  <button class="searchstax-answer-load-more-button" @click="showMore">Show More</button>
223
223
  </div>
224
224
  </div>
225
+ <div
226
+ v-if="!answerData.answerLoading && !answerData.showMoreButtonVisible && answerData.isConversation"
227
+ :class="{
228
+ 'searchstax-conversation-container': true,
229
+ 'searchstax-conversation-container-full-screen': answerData.isFullScreenConversation
230
+ }"
231
+ >
232
+ <div v-if="answerData.showConversationHeader" class="searchstax-conversation-full-screen-header">
233
+ <button
234
+ type="button"
235
+ class="searchstax-conversation-back-to-results"
236
+ @click="() => exitConversation?.()"
237
+ >
238
+ Back to results
239
+ </button>
240
+ <div class="searchstax-conversation-full-screen-title">Ask SearchStax</div>
241
+ </div>
242
+ <div
243
+ v-if="answerData.showConversationMessages && answerData.conversationMessages?.length"
244
+ class="searchstax-conversation-messages-container"
245
+ >
246
+ <div
247
+ v-for="(message, index) in answerData.conversationMessages"
248
+ :key="message.conversationMessageId ?? index"
249
+ :class="['searchstax-conversation-messages-container-message', message.messageClass]"
250
+ v-html="message.formattedMessage"
251
+ ></div>
252
+ </div>
253
+ <div v-if="answerData.showConversationInput" class="searchstax-conversation-input-container">
254
+ <input
255
+ type="text"
256
+ id="searchstax-conversation-input"
257
+ class="searchstax-conversation-input"
258
+ placeholder="Ask a follow-up question"
259
+ :ref="(el) => setConversationInputRef?.(el as Element | null)"
260
+ @keydown="handleConversationInputKeydown"
261
+ />
262
+ <button
263
+ type="button"
264
+ class="searchstax-conversation-search-icon searchstax-search-icon"
265
+ aria-label="Submit follow-up question"
266
+ @click="handleConversationSubmitClick"
267
+ ></button>
268
+ </div>
269
+ </div>
225
270
  <div class="searchstax-answer-footer">
226
271
  <div id="feedbackWidgetContainer"></div>
227
272
  <div class="searchstax-lightweight-widget-separator-inline"></div>
@@ -1140,7 +1185,7 @@ It receives following props:
1140
1185
  <div
1141
1186
  class="searchstax-facets-pill searchstax-facets-pill-facets"
1142
1187
  v-for="facet in selectedFacetsCheckboxes"
1143
- :key="facet.value"
1188
+ :key="String(facet.value)"
1144
1189
  @click="unselectFacet(facet)"
1145
1190
  >
1146
1191
  <div class="searchstax-facets-pill-label">{{ facet.value }} ({{ facet.count }})</div>
@@ -2,6 +2,8 @@ import { IFeedbackWidgetProperties } from '@searchstax-inc/searchstudio-ux-js';
2
2
  interface Props {
3
3
  showMoreAfterWordCount?: number;
4
4
  feedbackwidget?: IFeedbackWidgetProperties;
5
+ isFullScreenConversation?: boolean;
6
+ emptyConversationMessageOverride?: string;
5
7
  testString?: string;
6
8
  }
7
9
  declare var __VLS_4: {
@@ -11,6 +13,7 @@ declare var __VLS_4: {
11
13
  isFullScreenConversation?: boolean;
12
14
  showConversationHeader?: boolean;
13
15
  showConversationMessages?: boolean;
16
+ showConversationInput?: boolean;
14
17
  conversationMessages?: {
15
18
  formattedMessage: string;
16
19
  messageClass?: string;
@@ -41,12 +44,12 @@ declare var __VLS_4: {
41
44
  unit: string | null;
42
45
  unmappedFields: {
43
46
  key: string;
44
- value: string | string[] | boolean;
47
+ value: import('@searchstax-inc/searchstudio-ux-js').ISearchstaxFieldValue;
45
48
  isImage?: boolean;
46
49
  }[];
47
50
  allFields: {
48
51
  key: string;
49
- value: string | string[] | boolean;
52
+ value: import('@searchstax-inc/searchstudio-ux-js').ISearchstaxFieldValue;
50
53
  }[];
51
54
  }[];
52
55
  isLastPage: boolean;
@@ -101,6 +104,9 @@ declare var __VLS_4: {
101
104
  locationError: boolean;
102
105
  };
103
106
  showMore: (event: Event) => void;
107
+ submitConversationQuestion: (question: string) => void;
108
+ exitConversation: () => void;
109
+ setConversationInputRef: (el: Element | null) => void;
104
110
  };
105
111
  type __VLS_Slots = {} & {
106
112
  answer?: (props: typeof __VLS_4) => any;
@@ -30,12 +30,12 @@ declare var __VLS_4: {
30
30
  unit: string | null;
31
31
  unmappedFields: {
32
32
  key: string;
33
- value: string | string[] | boolean;
33
+ value: import('@searchstax-inc/searchstudio-ux-js').ISearchstaxFieldValue;
34
34
  isImage?: boolean;
35
35
  }[];
36
36
  allFields: {
37
37
  key: string;
38
- value: string | string[] | boolean;
38
+ value: import('@searchstax-inc/searchstudio-ux-js').ISearchstaxFieldValue;
39
39
  }[];
40
40
  }[];
41
41
  isLastPage: boolean;
@@ -1,4 +1,4 @@
1
- import { IFacetValueData, IFacetData, IFacetValue } from '@searchstax-inc/searchstudio-ux-js';
1
+ import { IFacetValueData, IFacetData, ISelectedFacetTemplateData } from '@searchstax-inc/searchstudio-ux-js';
2
2
  interface Props {
3
3
  facetingType: "and" | "or" | "showUnavailable" | "tabs";
4
4
  itemsPerPageDesktop: number;
@@ -50,12 +50,12 @@ declare var __VLS_9: {
50
50
  unit: string | null;
51
51
  unmappedFields: {
52
52
  key: string;
53
- value: string | string[] | boolean;
53
+ value: import('@searchstax-inc/searchstudio-ux-js').ISearchstaxFieldValue;
54
54
  isImage?: boolean;
55
55
  }[];
56
56
  allFields: {
57
57
  key: string;
58
- value: string | string[] | boolean;
58
+ value: import('@searchstax-inc/searchstudio-ux-js').ISearchstaxFieldValue;
59
59
  }[];
60
60
  }[];
61
61
  isLastPage: boolean;
@@ -114,8 +114,8 @@ declare var __VLS_9: {
114
114
  isChecked: (facetValue: IFacetValueData) => boolean;
115
115
  selectFacet: (index: string, event: Event, data: IFacetValueData, isInput: boolean) => void;
116
116
  showMoreLessDesktop: (e: Event, data: IFacetData) => void;
117
- facetContainers: any[];
118
- onUpdateRefDesktop: (el: Element | any, facetValue: IFacetValueData) => any[];
117
+ facetContainers: Record<string, Element>;
118
+ onUpdateRefDesktop: (el: Element | any, facetValue: IFacetValueData) => Record<string, Element>;
119
119
  onUpdateRef: (facets: {
120
120
  facetValue: string;
121
121
  element: Element;
@@ -164,12 +164,12 @@ declare var __VLS_9: {
164
164
  unit: string | null;
165
165
  unmappedFields: {
166
166
  key: string;
167
- value: string | string[] | boolean;
167
+ value: import('@searchstax-inc/searchstudio-ux-js').ISearchstaxFieldValue;
168
168
  isImage?: boolean;
169
169
  }[];
170
170
  allFields: {
171
171
  key: string;
172
- value: string | string[] | boolean;
172
+ value: import('@searchstax-inc/searchstudio-ux-js').ISearchstaxFieldValue;
173
173
  }[];
174
174
  }[];
175
175
  isLastPage: boolean;
@@ -223,23 +223,45 @@ declare var __VLS_9: {
223
223
  shouldShowLocationDistanceDropdown: boolean;
224
224
  locationError: boolean;
225
225
  };
226
- selectedFacetsCheckboxes: {
226
+ selectedFacetsCheckboxes: ({
227
+ [x: string]: unknown;
227
228
  value: string;
228
229
  type: "checkbox";
229
230
  parentName: string;
230
231
  count: number;
231
- }[];
232
+ facet: {
233
+ [x: string]: unknown;
234
+ label: string;
235
+ name: string;
236
+ showingAllFacets?: boolean;
237
+ hasMoreFacets?: boolean;
238
+ };
239
+ } | {
240
+ [x: string]: unknown;
241
+ valueFrom: string;
242
+ type: "range";
243
+ valueTo: string;
244
+ parentName: string;
245
+ count: number;
246
+ facet: {
247
+ [x: string]: unknown;
248
+ label: string;
249
+ name: string;
250
+ showingAllFacets?: boolean;
251
+ hasMoreFacets?: boolean;
252
+ };
253
+ })[];
232
254
  isNotDeactivated: (name: string) => boolean;
233
255
  toggleFacetGroup: (name: string) => void;
234
256
  isChecked: (facetValue: IFacetValueData) => boolean;
235
257
  selectFacet: (index: string, event: Event, data: IFacetValueData, isInput: boolean) => void;
236
258
  showMoreLessDesktop: (e: Event, data: IFacetData) => void;
237
- facetContainers: any[];
259
+ facetContainers: Record<string, Element>;
238
260
  openOverlay: () => void;
239
- unselectFacet: (facet: IFacetValue) => void;
261
+ unselectFacet: (facet: ISelectedFacetTemplateData) => void;
240
262
  unselectAll: () => void;
241
263
  closeOverlay: () => void;
242
- onUpdateRefMobile: (el: Element | any, facetValue: IFacetValueData) => any[];
264
+ onUpdateRefMobile: (el: Element | any, facetValue: IFacetValueData) => Record<string, Element>;
243
265
  onUpdateRef: (facets: {
244
266
  facetValue: string;
245
267
  element: Element;
@@ -34,12 +34,12 @@ declare var __VLS_4: {
34
34
  unit: string | null;
35
35
  unmappedFields: {
36
36
  key: string;
37
- value: string | string[] | boolean;
37
+ value: import('@searchstax-inc/searchstudio-ux-js').ISearchstaxFieldValue;
38
38
  isImage?: boolean;
39
39
  }[];
40
40
  allFields: {
41
41
  key: string;
42
- value: string | string[] | boolean;
42
+ value: import('@searchstax-inc/searchstudio-ux-js').ISearchstaxFieldValue;
43
43
  }[];
44
44
  }[];
45
45
  isLastPage: boolean;
@@ -25,12 +25,12 @@ declare var __VLS_4: {
25
25
  unit: string | null;
26
26
  unmappedFields: {
27
27
  key: string;
28
- value: string | string[] | boolean;
28
+ value: import('@searchstax-inc/searchstudio-ux-js').ISearchstaxFieldValue;
29
29
  isImage?: boolean;
30
30
  }[];
31
31
  allFields: {
32
32
  key: string;
33
- value: string | string[] | boolean;
33
+ value: import('@searchstax-inc/searchstudio-ux-js').ISearchstaxFieldValue;
34
34
  }[];
35
35
  }[];
36
36
  isLastPage: boolean;
@@ -113,12 +113,12 @@ declare var __VLS_4: {
113
113
  unit: string | null;
114
114
  unmappedFields: {
115
115
  key: string;
116
- value: string | string[] | boolean;
116
+ value: import('@searchstax-inc/searchstudio-ux-js').ISearchstaxFieldValue;
117
117
  isImage?: boolean;
118
118
  }[];
119
119
  allFields: {
120
120
  key: string;
121
- value: string | string[] | boolean;
121
+ value: import('@searchstax-inc/searchstudio-ux-js').ISearchstaxFieldValue;
122
122
  }[];
123
123
  }[];
124
124
  isLastPage: boolean;
@@ -35,12 +35,12 @@ declare var __VLS_4: {
35
35
  unit: string | null;
36
36
  unmappedFields: {
37
37
  key: string;
38
- value: string | string[] | boolean;
38
+ value: import('@searchstax-inc/searchstudio-ux-js').ISearchstaxFieldValue;
39
39
  isImage?: boolean;
40
40
  }[];
41
41
  allFields: {
42
42
  key: string;
43
- value: string | string[] | boolean;
43
+ value: import('@searchstax-inc/searchstudio-ux-js').ISearchstaxFieldValue;
44
44
  }[];
45
45
  }[];
46
46
  isLastPage: boolean;