@thoughtspot/visual-embed-sdk 1.20.0 → 1.21.0-alpha.0

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 (185) hide show
  1. package/README.md +1 -1
  2. package/dist/src/auth.d.ts +84 -5
  3. package/dist/src/auth.d.ts.map +1 -1
  4. package/dist/src/config.d.ts +1 -0
  5. package/dist/src/config.d.ts.map +1 -1
  6. package/dist/src/embed/app.d.ts +19 -7
  7. package/dist/src/embed/app.d.ts.map +1 -1
  8. package/dist/src/embed/base.d.ts +39 -19
  9. package/dist/src/embed/base.d.ts.map +1 -1
  10. package/dist/src/embed/liveboard.d.ts +19 -7
  11. package/dist/src/embed/liveboard.d.ts.map +1 -1
  12. package/dist/src/embed/search-bar.d.ts +7 -1
  13. package/dist/src/embed/search-bar.d.ts.map +1 -1
  14. package/dist/src/embed/search.d.ts +11 -7
  15. package/dist/src/embed/search.d.ts.map +1 -1
  16. package/dist/src/embed/ts-embed.d.ts +97 -5
  17. package/dist/src/embed/ts-embed.d.ts.map +1 -1
  18. package/dist/src/errors.d.ts.map +1 -1
  19. package/dist/src/index.d.ts +3 -3
  20. package/dist/src/index.d.ts.map +1 -1
  21. package/dist/src/mixpanel-service.d.ts +8 -0
  22. package/dist/src/mixpanel-service.d.ts.map +1 -1
  23. package/dist/src/react/index.d.ts.map +1 -1
  24. package/dist/src/react/util.d.ts +4 -0
  25. package/dist/src/react/util.d.ts.map +1 -1
  26. package/dist/src/test/test-utils.d.ts +11 -2
  27. package/dist/src/test/test-utils.d.ts.map +1 -1
  28. package/dist/src/types.d.ts +430 -98
  29. package/dist/src/types.d.ts.map +1 -1
  30. package/dist/src/utils/answerService.d.ts +7 -0
  31. package/dist/src/utils/answerService.d.ts.map +1 -1
  32. package/dist/src/utils/authService.d.ts +30 -0
  33. package/dist/src/utils/authService.d.ts.map +1 -1
  34. package/dist/src/utils/processData.d.ts +12 -0
  35. package/dist/src/utils/processData.d.ts.map +1 -1
  36. package/dist/src/utils/processTrigger.d.ts +7 -0
  37. package/dist/src/utils/processTrigger.d.ts.map +1 -1
  38. package/dist/src/utils.d.ts +12 -0
  39. package/dist/src/utils.d.ts.map +1 -1
  40. package/dist/tsembed.es.js +849 -288
  41. package/dist/tsembed.js +822 -287
  42. package/lib/package.json +4 -10
  43. package/lib/src/auth.d.ts +84 -5
  44. package/lib/src/auth.d.ts.map +1 -1
  45. package/lib/src/auth.js +86 -26
  46. package/lib/src/auth.js.map +1 -1
  47. package/lib/src/auth.spec.js +14 -5
  48. package/lib/src/auth.spec.js.map +1 -1
  49. package/lib/src/config.d.ts +1 -0
  50. package/lib/src/config.d.ts.map +1 -1
  51. package/lib/src/config.js +5 -3
  52. package/lib/src/config.js.map +1 -1
  53. package/lib/src/config.spec.js.map +1 -1
  54. package/lib/src/embed/app.d.ts +19 -7
  55. package/lib/src/embed/app.d.ts.map +1 -1
  56. package/lib/src/embed/app.js +26 -16
  57. package/lib/src/embed/app.js.map +1 -1
  58. package/lib/src/embed/app.spec.js +12 -12
  59. package/lib/src/embed/app.spec.js.map +1 -1
  60. package/lib/src/embed/base.d.ts +39 -19
  61. package/lib/src/embed/base.d.ts.map +1 -1
  62. package/lib/src/embed/base.js +49 -15
  63. package/lib/src/embed/base.js.map +1 -1
  64. package/lib/src/embed/base.spec.js +2 -2
  65. package/lib/src/embed/base.spec.js.map +1 -1
  66. package/lib/src/embed/embed.spec.js +1 -1
  67. package/lib/src/embed/embed.spec.js.map +1 -1
  68. package/lib/src/embed/liveboard.d.ts +19 -7
  69. package/lib/src/embed/liveboard.d.ts.map +1 -1
  70. package/lib/src/embed/liveboard.js +50 -38
  71. package/lib/src/embed/liveboard.js.map +1 -1
  72. package/lib/src/embed/liveboard.spec.js +37 -30
  73. package/lib/src/embed/liveboard.spec.js.map +1 -1
  74. package/lib/src/embed/pinboard.spec.js +14 -26
  75. package/lib/src/embed/pinboard.spec.js.map +1 -1
  76. package/lib/src/embed/search-bar.d.ts +7 -1
  77. package/lib/src/embed/search-bar.d.ts.map +1 -1
  78. package/lib/src/embed/search-bar.js +6 -7
  79. package/lib/src/embed/search-bar.js.map +1 -1
  80. package/lib/src/embed/search.d.ts +11 -7
  81. package/lib/src/embed/search.d.ts.map +1 -1
  82. package/lib/src/embed/search.js +19 -15
  83. package/lib/src/embed/search.js.map +1 -1
  84. package/lib/src/embed/search.spec.js +16 -19
  85. package/lib/src/embed/search.spec.js.map +1 -1
  86. package/lib/src/embed/searchEmbed-basic-auth.spec.js +4 -0
  87. package/lib/src/embed/searchEmbed-basic-auth.spec.js.map +1 -1
  88. package/lib/src/embed/ts-embed.d.ts +97 -5
  89. package/lib/src/embed/ts-embed.d.ts.map +1 -1
  90. package/lib/src/embed/ts-embed.js +180 -74
  91. package/lib/src/embed/ts-embed.js.map +1 -1
  92. package/lib/src/embed/ts-embed.spec.js +46 -24
  93. package/lib/src/embed/ts-embed.spec.js.map +1 -1
  94. package/lib/src/errors.d.ts.map +1 -1
  95. package/lib/src/errors.js.map +1 -1
  96. package/lib/src/index.d.ts +3 -3
  97. package/lib/src/index.d.ts.map +1 -1
  98. package/lib/src/index.js +3 -3
  99. package/lib/src/index.js.map +1 -1
  100. package/lib/src/mixpanel-service.d.ts +8 -0
  101. package/lib/src/mixpanel-service.d.ts.map +1 -1
  102. package/lib/src/mixpanel-service.js +13 -1
  103. package/lib/src/mixpanel-service.js.map +1 -1
  104. package/lib/src/mixpanel-service.spec.js.map +1 -1
  105. package/lib/src/react/index.d.ts.map +1 -1
  106. package/lib/src/react/index.js +9 -7
  107. package/lib/src/react/index.js.map +1 -1
  108. package/lib/src/react/index.spec.js +29 -8
  109. package/lib/src/react/index.spec.js.map +1 -1
  110. package/lib/src/react/util.d.ts +4 -0
  111. package/lib/src/react/util.d.ts.map +1 -1
  112. package/lib/src/react/util.js +4 -0
  113. package/lib/src/react/util.js.map +1 -1
  114. package/lib/src/test/test-utils.d.ts +11 -2
  115. package/lib/src/test/test-utils.d.ts.map +1 -1
  116. package/lib/src/test/test-utils.js +36 -25
  117. package/lib/src/test/test-utils.js.map +1 -1
  118. package/lib/src/types.d.ts +430 -98
  119. package/lib/src/types.d.ts.map +1 -1
  120. package/lib/src/types.js +311 -73
  121. package/lib/src/types.js.map +1 -1
  122. package/lib/src/utils/answerService.d.ts +7 -0
  123. package/lib/src/utils/answerService.d.ts.map +1 -1
  124. package/lib/src/utils/answerService.js +7 -0
  125. package/lib/src/utils/answerService.js.map +1 -1
  126. package/lib/src/utils/answerService.spec.js.map +1 -1
  127. package/lib/src/utils/authService.d.ts +30 -0
  128. package/lib/src/utils/authService.d.ts.map +1 -1
  129. package/lib/src/utils/authService.js +39 -2
  130. package/lib/src/utils/authService.js.map +1 -1
  131. package/lib/src/utils/authService.spec.js.map +1 -1
  132. package/lib/src/utils/processData.d.ts +12 -0
  133. package/lib/src/utils/processData.d.ts.map +1 -1
  134. package/lib/src/utils/processData.js +33 -5
  135. package/lib/src/utils/processData.js.map +1 -1
  136. package/lib/src/utils/processData.spec.js.map +1 -1
  137. package/lib/src/utils/processTrigger.d.ts +7 -0
  138. package/lib/src/utils/processTrigger.d.ts.map +1 -1
  139. package/lib/src/utils/processTrigger.js +17 -3
  140. package/lib/src/utils/processTrigger.js.map +1 -1
  141. package/lib/src/utils/processTrigger.spec.js.map +1 -1
  142. package/lib/src/utils.d.ts +12 -0
  143. package/lib/src/utils.d.ts.map +1 -1
  144. package/lib/src/utils.js +24 -19
  145. package/lib/src/utils.js.map +1 -1
  146. package/lib/src/utils.spec.js.map +1 -1
  147. package/lib/src/visual-embed-sdk.d.ts +695 -146
  148. package/package.json +4 -10
  149. package/src/auth.spec.ts +68 -150
  150. package/src/auth.ts +153 -101
  151. package/src/config.spec.ts +2 -4
  152. package/src/config.ts +5 -3
  153. package/src/embed/app.spec.ts +25 -14
  154. package/src/embed/app.ts +49 -37
  155. package/src/embed/base.spec.ts +6 -12
  156. package/src/embed/base.ts +74 -57
  157. package/src/embed/embed.spec.ts +5 -6
  158. package/src/embed/liveboard.spec.ts +56 -37
  159. package/src/embed/liveboard.ts +68 -66
  160. package/src/embed/pinboard.spec.ts +26 -29
  161. package/src/embed/search-bar.tsx +14 -9
  162. package/src/embed/search.spec.ts +31 -21
  163. package/src/embed/search.ts +28 -27
  164. package/src/embed/searchEmbed-basic-auth.spec.ts +22 -28
  165. package/src/embed/ts-embed.spec.ts +99 -144
  166. package/src/embed/ts-embed.ts +214 -159
  167. package/src/errors.ts +3 -6
  168. package/src/index.ts +23 -7
  169. package/src/mixpanel-service.spec.ts +1 -3
  170. package/src/mixpanel-service.ts +13 -1
  171. package/src/react/index.spec.tsx +72 -15
  172. package/src/react/index.tsx +43 -54
  173. package/src/react/util.ts +8 -4
  174. package/src/test/test-utils.ts +43 -39
  175. package/src/types.ts +428 -99
  176. package/src/utils/answerService.spec.ts +3 -5
  177. package/src/utils/answerService.ts +21 -17
  178. package/src/utils/authService.spec.ts +26 -41
  179. package/src/utils/authService.ts +47 -21
  180. package/src/utils/processData.spec.ts +26 -59
  181. package/src/utils/processData.ts +36 -14
  182. package/src/utils/processTrigger.spec.ts +1 -6
  183. package/src/utils/processTrigger.ts +18 -9
  184. package/src/utils.spec.ts +8 -12
  185. package/src/utils.ts +25 -26
@@ -1,18 +1,24 @@
1
- import { DOMSelector, Param, Action, ViewConfig } from '../types';
1
+ import {
2
+ DOMSelector, Param, Action, ViewConfig,
3
+ } from '../types';
2
4
  import { getQueryParamString } from '../utils';
3
5
  import { TsEmbed } from './ts-embed';
4
6
  import { SearchOptions } from './search';
5
7
 
6
- export interface SearchBarViewConfig
7
- extends Omit<ViewConfig, 'runtimeFilters' | 'showAlerts'> {
8
+ /**
9
+ * @group Embed components
10
+ */
11
+ export interface SearchBarViewConfig extends Omit<ViewConfig, 'runtimeFilters' | 'showAlerts'> {
8
12
  /**
9
13
  * The array of data source GUIDs to set on load.
10
14
  * Only a single dataSource supported currently.
15
+ *
11
16
  * @deprecated Use dataSource instead
12
17
  */
13
18
  dataSources?: string[];
14
19
  /**
15
20
  * The array of data source GUIDs to set on load.
21
+ *
16
22
  * @version: SDK: 1.19.0
17
23
  */
18
24
  dataSource?: string;
@@ -25,8 +31,8 @@ export interface SearchBarViewConfig
25
31
  /**
26
32
  * Embed ThoughtSpot search bar
27
33
  *
28
- * @Category Search Embed
29
34
  * @version: SDK: 1.18.0 | ThoughtSpot: 8.10.0.cl, 9.0.1-sw
35
+ * @group Embed components
30
36
  */
31
37
  export class SearchBarEmbed extends TsEmbed {
32
38
  /**
@@ -42,6 +48,7 @@ export class SearchBarEmbed extends TsEmbed {
42
48
  /**
43
49
  * Construct the URL of the embedded ThoughtSpot search to be
44
50
  * loaded in the iframe
51
+ *
45
52
  * @param dataSources A list of data source GUIDs
46
53
  */
47
54
  private getIFrameSrc() {
@@ -49,9 +56,7 @@ export class SearchBarEmbed extends TsEmbed {
49
56
  const path = 'search-bar-embed';
50
57
  const queryParams = this.getBaseQueryParams();
51
58
 
52
- queryParams[Param.HideActions] = [
53
- ...(queryParams[Param.HideActions] ?? []),
54
- ];
59
+ queryParams[Param.HideActions] = [...(queryParams[Param.HideActions] ?? [])];
55
60
 
56
61
  if (dataSources && dataSources.length) {
57
62
  queryParams[Param.DataSources] = JSON.stringify(dataSources);
@@ -78,7 +83,7 @@ export class SearchBarEmbed extends TsEmbed {
78
83
  }
79
84
  const tsPostHashParams = this.getThoughtSpotPostUrlParams();
80
85
 
81
- return `${this.getEmbedBasePath(query)}/${path}${tsPostHashParams}`;
86
+ return `${this.getEmbedBasePath(query)}/embed/${path}${tsPostHashParams}`;
82
87
  }
83
88
 
84
89
  /**
@@ -88,7 +93,7 @@ export class SearchBarEmbed extends TsEmbed {
88
93
  super.render();
89
94
 
90
95
  const src = this.getIFrameSrc();
91
- this.renderIFrame(src, this.viewConfig.frameParams);
96
+ this.renderIFrame(src);
92
97
  return this;
93
98
  }
94
99
  }
@@ -9,6 +9,7 @@ import {
9
9
  getRootEl,
10
10
  fixedEncodeURI,
11
11
  defaultParamsWithoutHiddenActions as defaultParams,
12
+ expectUrlMatchesWithParams,
12
13
  } from '../test/test-utils';
13
14
  import { version } from '../../package.json';
14
15
 
@@ -21,10 +22,7 @@ const defaultViewConfig = {
21
22
  const answerId = 'eca215d4-0d2c-4a55-90e3-d81ef6848ae0';
22
23
  const thoughtSpotHost = 'tshost';
23
24
  const hideBydefault = `&hideAction=${fixedEncodeURI(
24
- JSON.stringify([
25
- Action.ReportError,
26
- ...HiddenActionItemByDefaultForSearchEmbed,
27
- ]),
25
+ JSON.stringify([Action.ReportError, ...HiddenActionItemByDefaultForSearchEmbed]),
28
26
  )}`;
29
27
  const defaultParamsWithHiddenActions = defaultParams + hideBydefault;
30
28
  const prefixParams = '&isSearchEmbed=true';
@@ -40,16 +38,15 @@ beforeAll(() => {
40
38
  describe('Search embed tests', () => {
41
39
  beforeEach(() => {
42
40
  document.body.innerHTML = getDocumentBody();
43
- jest.spyOn(authInstance, 'getReleaseVersion').mockReturnValue(
44
- '7.4.0.sw',
45
- );
41
+ jest.spyOn(authInstance, 'getReleaseVersion').mockReturnValue('7.4.0.sw');
46
42
  });
47
43
 
48
44
  test('should render', async () => {
49
45
  const searchEmbed = new SearchEmbed(getRootEl(), {});
50
46
  searchEmbed.render();
51
47
  await executeAfterWait(() => {
52
- expect(getIFrameSrc()).toBe(
48
+ expectUrlMatchesWithParams(
49
+ getIFrameSrc(),
53
50
  `http://${thoughtSpotHost}/v2/?${defaultParamsWithHiddenActions}&dataSourceMode=expand&useLastSelectedSources=false${prefixParams}#/embed/answer`,
54
51
  );
55
52
  });
@@ -63,7 +60,8 @@ describe('Search embed tests', () => {
63
60
  });
64
61
  searchEmbed.render();
65
62
  await executeAfterWait(() => {
66
- expect(getIFrameSrc()).toBe(
63
+ expectUrlMatchesWithParams(
64
+ getIFrameSrc(),
67
65
  `http://${thoughtSpotHost}/v2/?${defaultParamsWithHiddenActions}&dataSources=[%22data-source-1%22]&dataSourceMode=expand&useLastSelectedSources=false${prefixParams}#/embed/answer`,
68
66
  );
69
67
  });
@@ -81,7 +79,8 @@ describe('Search embed tests', () => {
81
79
  });
82
80
  searchEmbed.render();
83
81
  await executeAfterWait(() => {
84
- expect(getIFrameSrc()).toBe(
82
+ expectUrlMatchesWithParams(
83
+ getIFrameSrc(),
85
84
  `http://${thoughtSpotHost}/v2/?${defaultParamsWithHiddenActions}&dataSources=[%22data-source-1%22]&searchTokenString=%5Bcommit%20date%5D%5Brevenue%5D&dataSourceMode=expand&useLastSelectedSources=false${prefixParams}#/embed/answer`,
86
85
  );
87
86
  });
@@ -99,7 +98,8 @@ describe('Search embed tests', () => {
99
98
 
100
99
  searchEmbed.render();
101
100
  await executeAfterWait(() => {
102
- expect(getIFrameSrc()).toBe(
101
+ expectUrlMatchesWithParams(
102
+ getIFrameSrc(),
103
103
  `http://${thoughtSpotHost}/v2/?${defaultParamsWithHiddenActions}&searchTokenString=%5Bcommit%20date%5D%5Brevenue%5D&dataSourceMode=expand&useLastSelectedSources=false${prefixParams}#/embed/answer`,
104
104
  );
105
105
  });
@@ -114,7 +114,8 @@ describe('Search embed tests', () => {
114
114
 
115
115
  searchEmbed.render();
116
116
  await executeAfterWait(() => {
117
- expect(getIFrameSrc()).toBe(
117
+ expectUrlMatchesWithParams(
118
+ getIFrameSrc(),
118
119
  `http://${thoughtSpotHost}/v2/?${defaultParamsWithHiddenActions}&searchTokenString=%5Bcommit%20date%5D%5Brevenue%5D&executeSearch=true&dataSourceMode=expand&useLastSelectedSources=false${prefixParams}#/embed/answer`,
119
120
  );
120
121
  });
@@ -133,7 +134,8 @@ describe('Search embed tests', () => {
133
134
  });
134
135
  searchEmbed.render();
135
136
  await executeAfterWait(() => {
136
- expect(getIFrameSrc()).toBe(
137
+ expectUrlMatchesWithParams(
138
+ getIFrameSrc(),
137
139
  `http://${thoughtSpotHost}/v2/?${defaultParamsWithHiddenActions}&dataSources=[%22data-source-1%22]&searchTokenString=%5Bcommit%20date%5D%5Brevenue%5D&dataSourceMode=collapse&useLastSelectedSources=false${prefixParams}#/embed/answer`,
138
140
  );
139
141
  });
@@ -152,7 +154,8 @@ describe('Search embed tests', () => {
152
154
  });
153
155
  searchEmbed.render();
154
156
  await executeAfterWait(() => {
155
- expect(getIFrameSrc()).toBe(
157
+ expectUrlMatchesWithParams(
158
+ getIFrameSrc(),
156
159
  `http://${thoughtSpotHost}/v2/?${defaultParamsWithHiddenActions}&dataSources=[%22data-source-1%22]&searchTokenString=%5Bcommit%20date%5D%5Brevenue%5D&dataSourceMode=hide&useLastSelectedSources=false${prefixParams}#/embed/answer`,
157
160
  );
158
161
  });
@@ -178,7 +181,8 @@ describe('Search embed tests', () => {
178
181
  });
179
182
  searchEmbed.render();
180
183
  await executeAfterWait(() => {
181
- expect(getIFrameSrc()).toBe(
184
+ expectUrlMatchesWithParams(
185
+ getIFrameSrc(),
182
186
  `http://${thoughtSpotHost}/v2/?${defaultParamsWithHiddenActions}&dataSources=[%22data-source-1%22]&searchTokenString=%5Bcommit%20date%5D%5Brevenue%5D&dataSourceMode=hide&useLastSelectedSources=false${prefixParams}&col1=city&op1=EQ&val1=berkeley#/embed/answer`,
183
187
  );
184
188
  });
@@ -197,7 +201,8 @@ describe('Search embed tests', () => {
197
201
  });
198
202
  searchEmbed.render();
199
203
  await executeAfterWait(() => {
200
- expect(getIFrameSrc()).toBe(
204
+ expectUrlMatchesWithParams(
205
+ getIFrameSrc(),
201
206
  `http://${thoughtSpotHost}/v2/?${defaultParamsWithHiddenActions}&dataSources=[%22data-source-1%22]&searchTokenString=%5Bcommit%20date%5D%5Brevenue%5D&dataSourceMode=hide&useLastSelectedSources=false${prefixParams}#/embed/answer`,
202
207
  );
203
208
  });
@@ -217,7 +222,8 @@ describe('Search embed tests', () => {
217
222
  });
218
223
  searchEmbed.render();
219
224
  await executeAfterWait(() => {
220
- expect(getIFrameSrc()).toBe(
225
+ expectUrlMatchesWithParams(
226
+ getIFrameSrc(),
221
227
  `http://${thoughtSpotHost}/v2/?${defaultParams}&disableAction=[%22download%22,%22edit%22]&disableHint=Permission%20denied${hideBydefault}&dataSources=[%22data-source-1%22]&searchTokenString=%5Bcommit%20date%5D%5Brevenue%5D&dataSourceMode=expand&useLastSelectedSources=false${prefixParams}#/embed/answer`,
222
228
  );
223
229
  });
@@ -230,7 +236,8 @@ describe('Search embed tests', () => {
230
236
  });
231
237
  searchEmbed.render();
232
238
  await executeAfterWait(() => {
233
- expect(getIFrameSrc()).toBe(
239
+ expectUrlMatchesWithParams(
240
+ getIFrameSrc(),
234
241
  `http://${thoughtSpotHost}/v2/?${defaultParamsWithHiddenActions}&enableSearchAssist=true&dataSourceMode=expand&useLastSelectedSources=false${prefixParams}#/embed/answer`,
235
242
  );
236
243
  });
@@ -256,7 +263,8 @@ describe('Search embed tests', () => {
256
263
  ]),
257
264
  );
258
265
  await executeAfterWait(() => {
259
- expect(getIFrameSrc()).toBe(
266
+ expectUrlMatchesWithParams(
267
+ getIFrameSrc(),
260
268
  `http://${thoughtSpotHost}/v2/?${defaultParams}&hideAction=${hideActionUrl}&dataSourceMode=expand&useLastSelectedSources=false${prefixParams}#/embed/saved-answer/${answerId}`,
261
269
  );
262
270
  });
@@ -280,7 +288,8 @@ describe('Search embed tests', () => {
280
288
  ]),
281
289
  );
282
290
  await executeAfterWait(() => {
283
- expect(getIFrameSrc()).toBe(
291
+ expectUrlMatchesWithParams(
292
+ getIFrameSrc(),
284
293
  `http://${thoughtSpotHost}/v2/?${defaultParams}&disableAction=[%22downloadAsXLSX%22]&disableHint=Access%20denied&hideAction=${hideActionUrl}&dataSourceMode=expand&useLastSelectedSources=false${prefixParams}#/embed/saved-answer/${answerId}`,
285
294
  );
286
295
  });
@@ -293,7 +302,8 @@ describe('Search embed tests', () => {
293
302
  });
294
303
  searchEmbed.render();
295
304
  await executeAfterWait(() => {
296
- expect(getIFrameSrc()).toBe(
305
+ expectUrlMatchesWithParams(
306
+ getIFrameSrc(),
297
307
  `http://${thoughtSpotHost}/v2/?${defaultParamsWithHiddenActions}&dataSourceMode=expand&useLastSelectedSources=false${prefixParams}#/embed/saved-answer/${answerId}`,
298
308
  );
299
309
  });
@@ -15,11 +15,7 @@ import {
15
15
  ViewConfig,
16
16
  RuntimeFilter,
17
17
  } from '../types';
18
- import {
19
- getQueryParamString,
20
- checkReleaseVersionInBeta,
21
- getFilterQuery,
22
- } from '../utils';
18
+ import { getQueryParamString, checkReleaseVersionInBeta, getFilterQuery } from '../utils';
23
19
  import { TsEmbed } from './ts-embed';
24
20
  import { version } from '../../package.json';
25
21
  import { ERROR_MESSAGE } from '../errors';
@@ -37,7 +33,8 @@ export interface SearchOptions {
37
33
  /**
38
34
  * Boolean to determine if the search should be executed or not.
39
35
  * if it is executed, put the focus on the results.
40
- * if it’s not executed, put the focus in the search bar - at the end of the tokens
36
+ * if it’s not executed, put the focus in the search bar - at the end of
37
+ * the tokens
41
38
  */
42
39
  executeSearch?: boolean;
43
40
  }
@@ -45,7 +42,7 @@ export interface SearchOptions {
45
42
  /**
46
43
  * The configuration attributes for the embedded search view.
47
44
  *
48
- * @Category Search Embed
45
+ * @group Embed components
49
46
  */
50
47
  export interface SearchViewConfig extends ViewConfig {
51
48
  /**
@@ -63,12 +60,9 @@ export interface SearchViewConfig extends ViewConfig {
63
60
  * using raw answer data.
64
61
  */
65
62
  hideResults?: boolean;
66
- /**
67
- * If set to true, expands all the data sources panel.
68
- */
69
- expandAllDataSource?: boolean;
70
63
  /**
71
64
  * If set to true, the Search Assist feature is enabled.
65
+ *
72
66
  * @version SDK: 1.13.0 | ThoughtSpot: 8.5.0.cl, 8.8.1-sw
73
67
  */
74
68
  enableSearchAssist?: boolean;
@@ -80,16 +74,19 @@ export interface SearchViewConfig extends ViewConfig {
80
74
  /**
81
75
  * The array of data source GUIDs to set on load.
82
76
  * Only a single dataSource supported currently.
77
+ *
83
78
  * @deprecated Use dataSource instead
84
79
  */
85
80
  dataSources?: string[];
86
81
  /**
87
82
  * The array of data source GUIDs to set on load.
83
+ *
88
84
  * @version: SDK: 1.19.0
89
85
  */
90
86
  dataSource?: string;
91
87
  /**
92
88
  * The initial search query to load the answer with.
89
+ *
93
90
  * @deprecated Use {@link searchOptions} instead
94
91
  */
95
92
  searchQuery?: string;
@@ -104,6 +101,7 @@ export interface SearchViewConfig extends ViewConfig {
104
101
  /**
105
102
  * If set to true, search page will render without the Search Bar
106
103
  * The chart/table should still be visible.
104
+ *
107
105
  * @version SDK: 1.21.0 | ThoughtSpot: 9.2.0.cl
108
106
  */
109
107
  hideSearchBar?: boolean;
@@ -120,7 +118,7 @@ export const HiddenActionItemByDefaultForSearchEmbed = [
120
118
  /**
121
119
  * Embed ThoughtSpot search
122
120
  *
123
- * @Category Search Embed
121
+ * @group Embed components
124
122
  */
125
123
  export class SearchEmbed extends TsEmbed {
126
124
  /**
@@ -149,23 +147,16 @@ export class SearchEmbed extends TsEmbed {
149
147
  return dataSourceMode;
150
148
  }
151
149
 
152
- /**
153
- * Construct the URL of the embedded ThoughtSpot search to be
154
- * loaded in the iframe
155
- * @param answerId The GUID of a saved answer
156
- * @param dataSources A list of data source GUIDs
157
- */
158
- private getIFrameSrc(answerId: string, dataSources?: string[]) {
150
+ protected getEmbedParams(): string {
159
151
  const {
160
152
  hideResults,
161
- expandAllDataSource,
162
153
  enableSearchAssist,
163
154
  forceTable,
164
155
  searchOptions,
165
156
  runtimeFilters,
166
157
  dataSource,
158
+ dataSources,
167
159
  } = this.viewConfig;
168
- const answerPath = answerId ? `saved-answer/${answerId}` : 'answer';
169
160
  const queryParams = this.getBaseQueryParams();
170
161
 
171
162
  queryParams[Param.HideActions] = [
@@ -210,11 +201,21 @@ export class SearchEmbed extends TsEmbed {
210
201
  if (filterQuery) {
211
202
  query += `&${filterQuery}`;
212
203
  }
204
+ return query;
205
+ }
206
+
207
+ /**
208
+ * Construct the URL of the embedded ThoughtSpot search to be
209
+ * loaded in the iframe
210
+ *
211
+ * @param answerId The GUID of a saved answer
212
+ * @param dataSources A list of data source GUIDs
213
+ */
214
+ private getIFrameSrc(answerId: string) {
215
+ const answerPath = answerId ? `saved-answer/${answerId}` : 'answer';
213
216
  const tsPostHashParams = this.getThoughtSpotPostUrlParams();
214
217
 
215
- return `${this.getEmbedBasePath(
216
- query,
217
- )}/${answerPath}${tsPostHashParams}`;
218
+ return `${this.getRootIframeSrc()}/embed/${answerPath}${tsPostHashParams}`;
218
219
  }
219
220
 
220
221
  /**
@@ -222,10 +223,10 @@ export class SearchEmbed extends TsEmbed {
222
223
  */
223
224
  public render(): SearchEmbed {
224
225
  super.render();
225
- const { answerId, dataSources } = this.viewConfig;
226
+ const { answerId } = this.viewConfig;
226
227
 
227
- const src = this.getIFrameSrc(answerId, dataSources);
228
- this.renderIFrame(src, this.viewConfig.frameParams);
228
+ const src = this.getIFrameSrc(answerId);
229
+ this.renderIFrame(src);
229
230
  getAuthPromise().then(() => {
230
231
  if (
231
232
  checkReleaseVersionInBeta(
@@ -19,27 +19,27 @@ init({
19
19
  });
20
20
 
21
21
  describe('Search embed tests when authType is Basic', () => {
22
+ /**
23
+ *
24
+ * @param version
25
+ */
22
26
  function setupVersion(version: string) {
23
- jest.spyOn(window, 'addEventListener').mockImplementationOnce(
24
- (event, handler, options) => {
25
- handler({
26
- data: {
27
- type: 'xyz',
28
- },
29
- ports: [3000],
30
- source: null,
31
- });
32
- },
33
- );
34
- jest.spyOn(authService, 'fetchSessionInfoService').mockImplementation(
35
- async () => ({
36
- json: () => ({
37
- ...mockSessionInfo,
38
- releaseVersion: version,
39
- }),
40
- status: 200,
27
+ jest.spyOn(window, 'addEventListener').mockImplementationOnce((event, handler, options) => {
28
+ handler({
29
+ data: {
30
+ type: 'xyz',
31
+ },
32
+ ports: [3000],
33
+ source: null,
34
+ });
35
+ });
36
+ jest.spyOn(authService, 'fetchSessionInfoService').mockImplementation(async () => ({
37
+ json: () => ({
38
+ ...mockSessionInfo,
39
+ releaseVersion: version,
41
40
  }),
42
- );
41
+ status: 200,
42
+ }));
43
43
  jest.spyOn(authInstance, 'getReleaseVersion').mockReturnValue(version);
44
44
  }
45
45
  beforeEach(() => {
@@ -76,9 +76,7 @@ describe('Search embed tests when authType is Basic', () => {
76
76
 
77
77
  test('releaseVersion is above 8.4.0.sw', async () => {
78
78
  setupVersion('8.8.0.sw');
79
- jest.spyOn(config, 'getThoughtSpotHost').mockImplementation(
80
- () => 'http://tshost',
81
- );
79
+ jest.spyOn(config, 'getThoughtSpotHost').mockImplementation(() => 'http://tshost');
82
80
  const mockAlert = jest.spyOn(window, 'alert');
83
81
  const searchEmbed = new SearchEmbed(getRootEl(), {});
84
82
  await searchEmbed.render();
@@ -87,9 +85,7 @@ describe('Search embed tests when authType is Basic', () => {
87
85
 
88
86
  test('Alert should not appear when suppressSearchEmbedBetaWarning is true and releaseVersion is ts7.dec.cl', async () => {
89
87
  setupVersion('ts7.dec.cl');
90
- jest.spyOn(config, 'getThoughtSpotHost').mockImplementation(
91
- () => 'http://tshost',
92
- );
88
+ jest.spyOn(config, 'getThoughtSpotHost').mockImplementation(() => 'http://tshost');
93
89
  jest.spyOn(baseInstance, 'getEmbedConfig').mockReturnValue({
94
90
  suppressSearchEmbedBetaWarning: true,
95
91
  });
@@ -101,9 +97,7 @@ describe('Search embed tests when authType is Basic', () => {
101
97
 
102
98
  test('Alert should not appear when suppressSearchEmbedBetaWarning is true and releaseVersion is 8.4.0.sw', async () => {
103
99
  setupVersion('8.4.0.sw');
104
- jest.spyOn(config, 'getThoughtSpotHost').mockImplementation(
105
- () => 'http://tshost',
106
- );
100
+ jest.spyOn(config, 'getThoughtSpotHost').mockImplementation(() => 'http://tshost');
107
101
  jest.spyOn(baseInstance, 'getEmbedConfig').mockReturnValue({
108
102
  suppressSearchEmbedBetaWarning: true,
109
103
  });