@thoughtspot/visual-embed-sdk 1.28.0-preRender → 1.28.1-alpha.1

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 (218) hide show
  1. package/cjs/package.json +3 -4
  2. package/cjs/src/auth.d.ts +16 -1
  3. package/cjs/src/auth.d.ts.map +1 -1
  4. package/cjs/src/auth.js +5 -1
  5. package/cjs/src/auth.js.map +1 -1
  6. package/cjs/src/auth.spec.d.ts.map +1 -1
  7. package/cjs/src/auth.spec.js +9 -0
  8. package/cjs/src/auth.spec.js.map +1 -1
  9. package/cjs/src/authToken.d.ts +6 -0
  10. package/cjs/src/authToken.d.ts.map +1 -1
  11. package/cjs/src/authToken.js +6 -0
  12. package/cjs/src/authToken.js.map +1 -1
  13. package/cjs/src/embed/app.d.ts +155 -6
  14. package/cjs/src/embed/app.d.ts.map +1 -1
  15. package/cjs/src/embed/app.js +3 -3
  16. package/cjs/src/embed/app.js.map +1 -1
  17. package/cjs/src/embed/app.spec.js +20 -1
  18. package/cjs/src/embed/app.spec.js.map +1 -1
  19. package/cjs/src/embed/base.d.ts.map +1 -1
  20. package/cjs/src/embed/base.js +2 -3
  21. package/cjs/src/embed/base.js.map +1 -1
  22. package/cjs/src/embed/embed.spec.js +0 -15
  23. package/cjs/src/embed/embed.spec.js.map +1 -1
  24. package/cjs/src/embed/liveboard.d.ts +121 -6
  25. package/cjs/src/embed/liveboard.d.ts.map +1 -1
  26. package/cjs/src/embed/liveboard.js +2 -2
  27. package/cjs/src/embed/liveboard.js.map +1 -1
  28. package/cjs/src/embed/liveboard.spec.js +21 -2
  29. package/cjs/src/embed/liveboard.spec.js.map +1 -1
  30. package/cjs/src/embed/pinboard.spec.js +21 -1
  31. package/cjs/src/embed/pinboard.spec.js.map +1 -1
  32. package/cjs/src/embed/sage.d.ts +1 -1
  33. package/cjs/src/embed/sage.d.ts.map +1 -1
  34. package/cjs/src/embed/sage.js +2 -2
  35. package/cjs/src/embed/sage.js.map +1 -1
  36. package/cjs/src/embed/search-bar.d.ts +37 -6
  37. package/cjs/src/embed/search-bar.d.ts.map +1 -1
  38. package/cjs/src/embed/search-bar.js +2 -2
  39. package/cjs/src/embed/search-bar.js.map +1 -1
  40. package/cjs/src/embed/search.d.ts +90 -1
  41. package/cjs/src/embed/search.d.ts.map +1 -1
  42. package/cjs/src/embed/search.js +2 -2
  43. package/cjs/src/embed/search.js.map +1 -1
  44. package/cjs/src/embed/search.spec.js +26 -1
  45. package/cjs/src/embed/search.spec.js.map +1 -1
  46. package/cjs/src/embed/ts-embed-trigger.spec.d.ts +2 -0
  47. package/cjs/src/embed/ts-embed-trigger.spec.d.ts.map +1 -0
  48. package/cjs/src/embed/ts-embed-trigger.spec.js +34 -0
  49. package/cjs/src/embed/ts-embed-trigger.spec.js.map +1 -0
  50. package/cjs/src/embed/ts-embed.d.ts +1 -1
  51. package/cjs/src/embed/ts-embed.d.ts.map +1 -1
  52. package/cjs/src/embed/ts-embed.js +12 -7
  53. package/cjs/src/embed/ts-embed.js.map +1 -1
  54. package/cjs/src/embed/ts-embed.spec.js +46 -17
  55. package/cjs/src/embed/ts-embed.spec.js.map +1 -1
  56. package/cjs/src/index.d.ts +3 -1
  57. package/cjs/src/index.d.ts.map +1 -1
  58. package/cjs/src/index.js +5 -1
  59. package/cjs/src/index.js.map +1 -1
  60. package/cjs/src/react/index.spec.js +1 -1
  61. package/cjs/src/react/index.spec.js.map +1 -1
  62. package/cjs/src/test/test-utils.d.ts +1 -0
  63. package/cjs/src/test/test-utils.d.ts.map +1 -1
  64. package/cjs/src/test/test-utils.js +10 -1
  65. package/cjs/src/test/test-utils.js.map +1 -1
  66. package/cjs/src/tokenizedFetch.d.ts +9 -0
  67. package/cjs/src/tokenizedFetch.d.ts.map +1 -1
  68. package/cjs/src/tokenizedFetch.js +9 -0
  69. package/cjs/src/tokenizedFetch.js.map +1 -1
  70. package/cjs/src/types.d.ts +289 -43
  71. package/cjs/src/types.d.ts.map +1 -1
  72. package/cjs/src/types.js +103 -20
  73. package/cjs/src/types.js.map +1 -1
  74. package/cjs/src/utils/authService/authService.d.ts.map +1 -1
  75. package/cjs/src/utils/authService/authService.js +9 -3
  76. package/cjs/src/utils/authService/authService.js.map +1 -1
  77. package/cjs/src/utils/authService/authService.spec.js +22 -0
  78. package/cjs/src/utils/authService/authService.spec.js.map +1 -1
  79. package/dist/src/auth.d.ts +16 -1
  80. package/dist/src/auth.d.ts.map +1 -1
  81. package/dist/src/auth.spec.d.ts.map +1 -1
  82. package/dist/src/authToken.d.ts +6 -0
  83. package/dist/src/authToken.d.ts.map +1 -1
  84. package/dist/src/embed/app.d.ts +155 -6
  85. package/dist/src/embed/app.d.ts.map +1 -1
  86. package/dist/src/embed/base.d.ts.map +1 -1
  87. package/dist/src/embed/liveboard.d.ts +121 -6
  88. package/dist/src/embed/liveboard.d.ts.map +1 -1
  89. package/dist/src/embed/sage.d.ts +1 -1
  90. package/dist/src/embed/sage.d.ts.map +1 -1
  91. package/dist/src/embed/search-bar.d.ts +37 -6
  92. package/dist/src/embed/search-bar.d.ts.map +1 -1
  93. package/dist/src/embed/search.d.ts +90 -1
  94. package/dist/src/embed/search.d.ts.map +1 -1
  95. package/dist/src/embed/ts-embed-trigger.spec.d.ts +2 -0
  96. package/dist/src/embed/ts-embed-trigger.spec.d.ts.map +1 -0
  97. package/dist/src/embed/ts-embed.d.ts +1 -1
  98. package/dist/src/embed/ts-embed.d.ts.map +1 -1
  99. package/dist/src/index.d.ts +3 -1
  100. package/dist/src/index.d.ts.map +1 -1
  101. package/dist/src/test/test-utils.d.ts +1 -0
  102. package/dist/src/test/test-utils.d.ts.map +1 -1
  103. package/dist/src/tokenizedFetch.d.ts +9 -0
  104. package/dist/src/tokenizedFetch.d.ts.map +1 -1
  105. package/dist/src/types.d.ts +289 -43
  106. package/dist/src/types.d.ts.map +1 -1
  107. package/dist/src/utils/authService/authService.d.ts.map +1 -1
  108. package/dist/tsembed-react.es.js +155 -43
  109. package/dist/tsembed-react.js +141 -42
  110. package/dist/tsembed.es.js +157 -47
  111. package/dist/tsembed.js +144 -45
  112. package/dist/visual-embed-sdk-react-full.d.ts +731 -66
  113. package/dist/visual-embed-sdk-react.d.ts +731 -66
  114. package/dist/visual-embed-sdk.d.ts +731 -66
  115. package/lib/package.json +3 -4
  116. package/lib/src/auth.d.ts +16 -1
  117. package/lib/src/auth.d.ts.map +1 -1
  118. package/lib/src/auth.js +5 -1
  119. package/lib/src/auth.js.map +1 -1
  120. package/lib/src/auth.spec.d.ts.map +1 -1
  121. package/lib/src/auth.spec.js +9 -0
  122. package/lib/src/auth.spec.js.map +1 -1
  123. package/lib/src/authToken.d.ts +6 -0
  124. package/lib/src/authToken.d.ts.map +1 -1
  125. package/lib/src/authToken.js +6 -0
  126. package/lib/src/authToken.js.map +1 -1
  127. package/lib/src/embed/app.d.ts +155 -6
  128. package/lib/src/embed/app.d.ts.map +1 -1
  129. package/lib/src/embed/app.js +3 -3
  130. package/lib/src/embed/app.js.map +1 -1
  131. package/lib/src/embed/app.spec.js +20 -1
  132. package/lib/src/embed/app.spec.js.map +1 -1
  133. package/lib/src/embed/base.d.ts.map +1 -1
  134. package/lib/src/embed/base.js +2 -3
  135. package/lib/src/embed/base.js.map +1 -1
  136. package/lib/src/embed/embed.spec.js +2 -17
  137. package/lib/src/embed/embed.spec.js.map +1 -1
  138. package/lib/src/embed/liveboard.d.ts +121 -6
  139. package/lib/src/embed/liveboard.d.ts.map +1 -1
  140. package/lib/src/embed/liveboard.js +2 -2
  141. package/lib/src/embed/liveboard.js.map +1 -1
  142. package/lib/src/embed/liveboard.spec.js +21 -2
  143. package/lib/src/embed/liveboard.spec.js.map +1 -1
  144. package/lib/src/embed/pinboard.spec.js +21 -1
  145. package/lib/src/embed/pinboard.spec.js.map +1 -1
  146. package/lib/src/embed/sage.d.ts +1 -1
  147. package/lib/src/embed/sage.d.ts.map +1 -1
  148. package/lib/src/embed/sage.js +2 -2
  149. package/lib/src/embed/sage.js.map +1 -1
  150. package/lib/src/embed/search-bar.d.ts +37 -6
  151. package/lib/src/embed/search-bar.d.ts.map +1 -1
  152. package/lib/src/embed/search-bar.js +2 -2
  153. package/lib/src/embed/search-bar.js.map +1 -1
  154. package/lib/src/embed/search.d.ts +90 -1
  155. package/lib/src/embed/search.d.ts.map +1 -1
  156. package/lib/src/embed/search.js +2 -2
  157. package/lib/src/embed/search.js.map +1 -1
  158. package/lib/src/embed/search.spec.js +26 -1
  159. package/lib/src/embed/search.spec.js.map +1 -1
  160. package/lib/src/embed/ts-embed-trigger.spec.d.ts +2 -0
  161. package/lib/src/embed/ts-embed-trigger.spec.d.ts.map +1 -0
  162. package/lib/src/embed/ts-embed-trigger.spec.js +32 -0
  163. package/lib/src/embed/ts-embed-trigger.spec.js.map +1 -0
  164. package/lib/src/embed/ts-embed.d.ts +1 -1
  165. package/lib/src/embed/ts-embed.d.ts.map +1 -1
  166. package/lib/src/embed/ts-embed.js +12 -7
  167. package/lib/src/embed/ts-embed.js.map +1 -1
  168. package/lib/src/embed/ts-embed.spec.js +40 -11
  169. package/lib/src/embed/ts-embed.spec.js.map +1 -1
  170. package/lib/src/index.d.ts +3 -1
  171. package/lib/src/index.d.ts.map +1 -1
  172. package/lib/src/index.js +3 -1
  173. package/lib/src/index.js.map +1 -1
  174. package/lib/src/react/index.spec.js +1 -1
  175. package/lib/src/react/index.spec.js.map +1 -1
  176. package/lib/src/test/test-utils.d.ts +1 -0
  177. package/lib/src/test/test-utils.d.ts.map +1 -1
  178. package/lib/src/test/test-utils.js +8 -0
  179. package/lib/src/test/test-utils.js.map +1 -1
  180. package/lib/src/tokenizedFetch.d.ts +9 -0
  181. package/lib/src/tokenizedFetch.d.ts.map +1 -1
  182. package/lib/src/tokenizedFetch.js +9 -0
  183. package/lib/src/tokenizedFetch.js.map +1 -1
  184. package/lib/src/types.d.ts +289 -43
  185. package/lib/src/types.d.ts.map +1 -1
  186. package/lib/src/types.js +103 -20
  187. package/lib/src/types.js.map +1 -1
  188. package/lib/src/utils/authService/authService.d.ts.map +1 -1
  189. package/lib/src/utils/authService/authService.js +9 -3
  190. package/lib/src/utils/authService/authService.js.map +1 -1
  191. package/lib/src/utils/authService/authService.spec.js +22 -0
  192. package/lib/src/utils/authService/authService.spec.js.map +1 -1
  193. package/lib/src/visual-embed-sdk.d.ts +738 -66
  194. package/package.json +3 -4
  195. package/src/auth.spec.ts +10 -0
  196. package/src/auth.ts +21 -2
  197. package/src/authToken.ts +6 -0
  198. package/src/embed/app.spec.ts +25 -1
  199. package/src/embed/app.ts +163 -11
  200. package/src/embed/base.ts +3 -5
  201. package/src/embed/embed.spec.ts +0 -18
  202. package/src/embed/liveboard.spec.ts +25 -2
  203. package/src/embed/liveboard.ts +128 -9
  204. package/src/embed/pinboard.spec.ts +25 -1
  205. package/src/embed/sage.ts +2 -2
  206. package/src/embed/search-bar.tsx +38 -7
  207. package/src/embed/search.spec.ts +30 -1
  208. package/src/embed/search.ts +97 -4
  209. package/src/embed/ts-embed-trigger.spec.ts +39 -0
  210. package/src/embed/ts-embed.spec.ts +48 -16
  211. package/src/embed/ts-embed.ts +19 -12
  212. package/src/index.ts +4 -0
  213. package/src/react/index.spec.tsx +1 -0
  214. package/src/test/test-utils.ts +9 -0
  215. package/src/tokenizedFetch.ts +9 -0
  216. package/src/types.ts +298 -50
  217. package/src/utils/authService/authService.spec.ts +27 -0
  218. package/src/utils/authService/authService.ts +14 -13
@@ -28,12 +28,30 @@ import { V1Embed } from './ts-embed';
28
28
  *
29
29
  * @group Embed components
30
30
  */
31
- export interface LiveboardViewConfig extends Omit<ViewConfig, 'hiddenHomepageModules' | 'hiddenHomeLeftNavItems' | 'reorderedHomepageModules'> {
31
+ export interface LiveboardViewConfig
32
+ extends Omit<
33
+ ViewConfig,
34
+ 'hiddenHomepageModules' | 'hiddenHomeLeftNavItems' | 'reorderedHomepageModules'
35
+ > {
32
36
  /**
33
37
  * If set to true, the embedded object container dynamically resizes
34
38
  * according to the height of the Liveboard.
39
+ * **Note**: Using fullHeight loads all visualizations on the
40
+ * Liveboard simultaneously, which results in multiple warehouse
41
+ * queries and potentially a longer wait for the topmost
42
+ * visualizations to display on the screen.
43
+ * Setting `fullHeight` to `false` fetches visualizations
44
+ * incrementally as users scroll the page to view the charts and tables.
35
45
  *
36
46
  * @version SDK: 1.1.0 | ThoughtSpot: ts7.may.cl, 7.2.1
47
+ *
48
+ * @example
49
+ * ```js
50
+ * const embed = new LiveboardEmbed('#embed', {
51
+ * ... // other liveboard view config
52
+ * fullHeight: true,
53
+ * });
54
+ * ```
37
55
  */
38
56
  fullHeight?: boolean;
39
57
  /**
@@ -43,10 +61,28 @@ export interface LiveboardViewConfig extends Omit<ViewConfig, 'hiddenHomepageMod
43
61
  *
44
62
  * @version SDK: 1.5.0 | ThoughtSpot: ts7.oct.cl, 7.2.1
45
63
  * @default 500
64
+ * @example
65
+ * ```js
66
+ * const embed = new LiveboardEmbed('#embed', {
67
+ * ... // other liveboard view config
68
+ * fullHeight: true,
69
+ * defaultHeight: 600,
70
+ * });
71
+ * ```
46
72
  */
47
73
  defaultHeight?: number;
48
74
  /**
49
75
  * @Deprecated If set to true, the context menu in visualizations will be enabled.
76
+ *
77
+ * @example
78
+ * ```js
79
+ * const embed = new LiveboardEmbed('#tsEmbed', {
80
+ * ... // other options
81
+ * enableVizTransformations:true,
82
+ * })
83
+ * ```
84
+ *
85
+ * @version: SDK: 1.1.0 | ThoughtSpot: 8.1.0.sw
50
86
  */
51
87
  enableVizTransformations?: boolean;
52
88
  /**
@@ -54,6 +90,12 @@ export interface LiveboardViewConfig extends Omit<ViewConfig, 'hiddenHomepageMod
54
90
  * Use either liveboardId or pinboardId to reference the Liveboard to embed.
55
91
  *
56
92
  * @version SDK: 1.3.0 | ThoughtSpot ts7.aug.cl, 7.2.1
93
+ * @example
94
+ * ```js
95
+ * const embed = new LiveboardEmbed('#embed-container', {
96
+ * ... // other options
97
+ * liveboardId:id of liveboard,
98
+ * })
57
99
  */
58
100
  liveboardId?: string;
59
101
  /**
@@ -64,6 +106,16 @@ export interface LiveboardViewConfig extends Omit<ViewConfig, 'hiddenHomepageMod
64
106
  pinboardId?: string;
65
107
  /**
66
108
  * The visualization within the Liveboard to display.
109
+ *
110
+ * @version SDK: 1.9.1 | ThoughtSpot: 8.1.0.cl, 8.4.1-sw
111
+ *
112
+ * @example
113
+ * ```js
114
+ * const embed = new LiveboardEmbed('#embed-container', {
115
+ * ... // other options
116
+ * vizId:'430496d6-6903-4601-937e-2c691821af3c',
117
+ * })
118
+ * ```
67
119
  */
68
120
  vizId?: string;
69
121
  /**
@@ -71,6 +123,13 @@ export interface LiveboardViewConfig extends Omit<ViewConfig, 'hiddenHomepageMod
71
123
  * Liveboard page will be read-only (no X buttons)
72
124
  *
73
125
  * @version SDK: 1.3.0 | ThoughtSpot ts7.aug.cl, 7.2.1.sw
126
+ * @example
127
+ * ```js
128
+ * const embed = new LiveboardEmbed('#embed-container', {
129
+ * ... // other options
130
+ * preventLiveboardFilterRemoval:true,
131
+ * })
132
+ * ```
74
133
  */
75
134
  preventLiveboardFilterRemoval?: boolean;
76
135
  /**
@@ -79,6 +138,16 @@ export interface LiveboardViewConfig extends Omit<ViewConfig, 'hiddenHomepageMod
79
138
  * event.
80
139
  *
81
140
  * @version SDK: 1.9.1 | ThoughtSpot: 8.1.0.cl, 8.4.1-sw
141
+ *
142
+ * @example
143
+ * ```js
144
+ * const embed = new LiveboardEmbed('#embed-container', {
145
+ * ... // other options
146
+ * visibleVizs: [
147
+ * '430496d6-6903-4601-937e-2c691821af3c',
148
+ * 'f547ec54-2a37-4516-a222-2b06719af726'
149
+ * ]
150
+ * })
82
151
  */
83
152
  visibleVizs?: string[];
84
153
  /**
@@ -92,12 +161,26 @@ export interface LiveboardViewConfig extends Omit<ViewConfig, 'hiddenHomepageMod
92
161
  * new Liveboard experience mode.
93
162
  *
94
163
  * @version SDK: 1.14.0 | ThoughtSpot: 8.6.0.cl, 8.8.1-sw
164
+ * @example
165
+ * ```js
166
+ * const embed = new LiveboardEmbed('#embed-container', {
167
+ * ... // other options
168
+ * liveboardV2:true,
169
+ * })
170
+ * ```
95
171
  */
96
172
  liveboardV2?: boolean;
97
173
  /**
98
174
  * Set a Liveboard tab as an active tab.
99
175
  * Specify the tab ID.
100
176
  *
177
+ * @example
178
+ * ```js
179
+ * const embed = new LiveboardEmbed('#tsEmbed', {
180
+ * ... // other options
181
+ * activeTabId:'id-1234',
182
+ * })
183
+ * ```
101
184
  * @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1-sw
102
185
  */
103
186
  activeTabId?: string;
@@ -105,6 +188,14 @@ export interface LiveboardViewConfig extends Omit<ViewConfig, 'hiddenHomepageMod
105
188
  * Show or hide the tab panel of the embedded Liveboard.
106
189
  *
107
190
  * @version SDK: 1.25.0 | Thoughtspot: 9.6.0.cl, 9.8.0.sw
191
+ *
192
+ * @example
193
+ * ```js
194
+ * const embed = new LiveboardEmbed('#embed-container', {
195
+ * ... // other options
196
+ * hideTabPanel:true,
197
+ * })
198
+ * ```
108
199
  */
109
200
  hideTabPanel?: boolean;
110
201
  /**
@@ -112,20 +203,41 @@ export interface LiveboardViewConfig extends Omit<ViewConfig, 'hiddenHomepageMod
112
203
  *
113
204
  * @version SDK: 1.26.0 | Thoughtspot: 9.7.0.cl, 9.8.0.sw
114
205
  * @default false
206
+ * @example
207
+ * ```js
208
+ * const embed = new LiveboardEmbed('#embed', {
209
+ * ... // other liveboard view config
210
+ * hideLiveboardHeader:true,
211
+ * });
212
+ * ```
115
213
  */
116
214
  hideLiveboardHeader?: boolean;
117
215
  /**
118
216
  * Show or hide the Liveboard title.
119
- *
120
- * @version SDK: 1.26.0 | Thoughtspot: 9.7.0.cl, 9.8.0.sw
121
217
  * @default false
218
+ * @version SDK: 1.26.0 | Thoughtspot: 9.7.0.cl, 9.8.0.sw
219
+ *
220
+ * @example
221
+ * ```js
222
+ * const embed = new LiveboardEmbed('#embed-container', {
223
+ * ... // other options
224
+ * showLiveboardTitle:true,
225
+ * })
226
+ * ```
122
227
  */
123
228
  showLiveboardTitle?: boolean;
124
229
  /**
125
230
  * Show or hide the Liveboard description.
126
- *
127
- * @version SDK: 1.26.0 | Thoughtspot: 9.7.0.cl, 9.8.0.sw
128
231
  * @default false
232
+ * @version SDK: 1.26.0 | Thoughtspot: 9.7.0.cl, 9.8.0.sw
233
+ *
234
+ * @example
235
+ * ```js
236
+ * const embed = new LiveboardEmbed('#embed-container', {
237
+ * ... // other options
238
+ * showLiveboardDescription:true,
239
+ * })
240
+ * ```
129
241
  */
130
242
  showLiveboardDescription?: boolean;
131
243
  /**
@@ -146,8 +258,15 @@ export interface LiveboardViewConfig extends Omit<ViewConfig, 'hiddenHomepageMod
146
258
  /**
147
259
  * enable or disable ask sage
148
260
  *
149
- * @version SDK: 1.29.0 | Thoughtspot: 9.12.0.cl
150
261
  * @default false
262
+ * @version SDK: 1.29.0 | Thoughtspot: 9.12.0.cl
263
+ * @example
264
+ * ```js
265
+ * const embed = new SearchEmbed('#tsEmbed', {
266
+ * ... // other options
267
+ * enableAskSage:true,
268
+ * })
269
+ * ```
151
270
  */
152
271
  enableAskSage?: boolean;
153
272
  }
@@ -362,11 +481,11 @@ export class LiveboardEmbed extends V1Embed {
362
481
  * @param renderOptions An object specifying the Liveboard ID,
363
482
  * visualization ID and the runtime filters.
364
483
  */
365
- public render(): LiveboardEmbed {
484
+ public async render(): Promise<LiveboardEmbed> {
366
485
  super.render();
367
486
 
368
487
  const src = this.getIFrameSrc();
369
- this.renderV1Embed(src);
488
+ await this.renderV1Embed(src);
370
489
 
371
490
  return this;
372
491
  }
@@ -389,4 +508,4 @@ export class LiveboardEmbed extends V1Embed {
389
508
  /**
390
509
  * @hidden
391
510
  */
392
- export class PinboardEmbed extends LiveboardEmbed { }
511
+ export class PinboardEmbed extends LiveboardEmbed {}
@@ -169,6 +169,7 @@ describe('Pinboard/viz embed tests', () => {
169
169
  values: [1000],
170
170
  },
171
171
  ],
172
+ excludeRuntimeFiltersfromURL: false,
172
173
  } as LiveboardViewConfig);
173
174
  pinboardEmbed.render();
174
175
  await executeAfterWait(() => {
@@ -179,7 +180,7 @@ describe('Pinboard/viz embed tests', () => {
179
180
  });
180
181
  });
181
182
 
182
- test('should not apply runtime filters if excludeRuntimeFiltersfromURL is true', async () => {
183
+ test('should not append runtime filters in URL if excludeRuntimeFiltersfromURL is true', async () => {
183
184
  const pinboardEmbed = new PinboardEmbed(getRootEl(), {
184
185
  ...defaultViewConfig,
185
186
  pinboardId,
@@ -202,6 +203,29 @@ describe('Pinboard/viz embed tests', () => {
202
203
  });
203
204
  });
204
205
 
206
+ test('should append runtime filters in URL if excludeRuntimeFiltersfromURL is undefined', async () => {
207
+ const liveboardEmbed = new PinboardEmbed(getRootEl(), {
208
+ ...defaultViewConfig,
209
+ pinboardId,
210
+ vizId,
211
+ runtimeFilters: [
212
+ {
213
+ columnName: 'sales',
214
+ operator: RuntimeFilterOp.EQ,
215
+ values: [1000],
216
+ },
217
+ ],
218
+ } as LiveboardViewConfig);
219
+ liveboardEmbed.render();
220
+ const runtimeFilter = 'col1=sales&op1=EQ&val1=1000';
221
+ await executeAfterWait(() => {
222
+ expectUrlMatchesWithParams(
223
+ getIFrameSrc(),
224
+ `http://${thoughtSpotHost}/?embedApp=true${defaultParams}${prefixParamsVizEmbed}&${runtimeFilter}#/embed/viz/${pinboardId}/${vizId}`,
225
+ );
226
+ });
227
+ });
228
+
205
229
  test('should register event handler to adjust iframe height', async () => {
206
230
  const pinboardEmbed = new PinboardEmbed(getRootEl(), {
207
231
  ...defaultViewConfig,
package/src/embed/sage.ts CHANGED
@@ -237,11 +237,11 @@ export class SageEmbed extends V1Embed {
237
237
  *
238
238
  * @returns {SageEmbed} Eureka/Sage embed
239
239
  */
240
- public render(): SageEmbed {
240
+ public async render(): Promise<SageEmbed> {
241
241
  super.render();
242
242
 
243
243
  const src = this.getIFrameSrc();
244
- this.renderV1Embed(src);
244
+ await this.renderV1Embed(src);
245
245
 
246
246
  return this;
247
247
  }
@@ -23,18 +23,44 @@ export interface SearchBarViewConfig
23
23
  * Only a single data source is supported currently.
24
24
  *
25
25
  * @deprecated Use `dataSource` instead
26
+ *
27
+ * @version: SDK: 1.1.0 | ThoughtSpot: 8.1.1-sw
28
+ *
29
+ * @example
30
+ * ```js
31
+ * const embed = new SearchBarEmbed('#tsEmbed', {
32
+ * ... // other options
33
+ * dataSources:['id-2345','id-2345'],
34
+ * })
35
+ * ```
26
36
  */
27
37
  dataSources?: string[];
28
38
  /**
29
- * The array of data source GUIDs to set on load.
39
+ * Pass the ID of the source to be selected.
30
40
  *
31
41
  * @version: SDK: 1.19.0, ThoughtSpot 9.0.0.cl, 9.0.1.sw
42
+ *
43
+ * @example
44
+ * ```js
45
+ * const embed = new SearchBarEmbed('#tsEmbed', {
46
+ * ... // other options
47
+ * dataSource:'id-2345',
48
+ * })
49
+ * ```
32
50
  */
33
51
  dataSource?: string;
34
52
  /**
35
53
  * Boolean to define if the last selected data source should be used
36
54
  *
37
55
  * @version: SDK: 1.24.0, ThoughtSpot 9.5.0.cl, 9.5.0.sw
56
+ *
57
+ * @example
58
+ * ```js
59
+ * const embed = new SearchBarEmbed('#tsEmbed', {
60
+ * ... // other options
61
+ * useLastSelectedSources:false,
62
+ * })
63
+ * ```
38
64
  */
39
65
  useLastSelectedSources?: boolean;
40
66
  /**
@@ -48,12 +74,17 @@ export interface SearchBarViewConfig
48
74
  * If it’s not executed, the focus is placed at the end of
49
75
  * the token string in the search bar.
50
76
  *
77
+ * @version: SDK: 1.2.0 | ThoughtSpot: 9.4.0.sw
78
+ *
51
79
  * @example
52
80
  * ```js
53
- * searchOptions: {
54
- * searchTokenString: '[quantity purchased] [region]',
55
- * executeSearch: true,
56
- * }
81
+ * const embed = new SearchBarEmbed('#tsEmbed', {
82
+ * ... // other options
83
+ * searchOptions: {
84
+ * searchTokenString: '[quantity purchased] [region]',
85
+ * executeSearch: true,
86
+ * }
87
+ * })
57
88
  * ```
58
89
  */
59
90
  searchOptions?: SearchOptions;
@@ -130,11 +161,11 @@ export class SearchBarEmbed extends TsEmbed {
130
161
  /**
131
162
  * Render the embedded ThoughtSpot search
132
163
  */
133
- public render(): SearchBarEmbed {
164
+ public async render(): Promise<SearchBarEmbed> {
134
165
  super.render();
135
166
 
136
167
  const src = this.getIFrameSrc();
137
- this.renderIFrame(src);
168
+ await this.renderIFrame(src);
138
169
  return this;
139
170
  }
140
171
  }
@@ -178,6 +178,7 @@ describe('Search embed tests', () => {
178
178
  values: ['berkeley'],
179
179
  },
180
180
  ],
181
+ excludeRuntimeFiltersfromURL: false,
181
182
  });
182
183
  searchEmbed.render();
183
184
  await executeAfterWait(() => {
@@ -188,7 +189,7 @@ describe('Search embed tests', () => {
188
189
  });
189
190
  });
190
191
 
191
- test('should not add runtime filters if excludeRuntimeFiltersfromURL is true', async () => {
192
+ test('should not append runtime filters in URL if excludeRuntimeFiltersfromURL is true', async () => {
192
193
  const dataSources = ['data-source-1'];
193
194
  const searchOptions = {
194
195
  searchTokenString: '[commit date][revenue]',
@@ -216,6 +217,34 @@ describe('Search embed tests', () => {
216
217
  });
217
218
  });
218
219
 
220
+ test('should append runtime filters in URL if excludeRuntimeFiltersfromURL is undefined', async () => {
221
+ const dataSources = ['data-source-1'];
222
+ const searchOptions = {
223
+ searchTokenString: '[commit date][revenue]',
224
+ };
225
+ const searchEmbed = new SearchEmbed(getRootEl(), {
226
+ ...defaultViewConfig,
227
+ hideDataSources: true,
228
+ dataSources,
229
+ searchOptions,
230
+ runtimeFilters: [
231
+ {
232
+ columnName: 'city',
233
+ operator: RuntimeFilterOp.EQ,
234
+ values: ['berkeley'],
235
+ },
236
+ ],
237
+ });
238
+ searchEmbed.render();
239
+ const runtimeFilter = 'col1=city&op1=EQ&val1=berkeley';
240
+ await executeAfterWait(() => {
241
+ expectUrlMatchesWithParams(
242
+ getIFrameSrc(),
243
+ `http://${thoughtSpotHost}/v2/?${defaultParamsWithHiddenActions}&${runtimeFilter}&dataSources=[%22data-source-1%22]&searchTokenString=%5Bcommit%20date%5D%5Brevenue%5D&dataSourceMode=hide&useLastSelectedSources=false${prefixParams}#/embed/answer`,
244
+ );
245
+ });
246
+ });
247
+
219
248
  test('Should add dataSource', async () => {
220
249
  const dataSource = 'data-source-1';
221
250
  const searchOptions = {
@@ -8,7 +8,11 @@
8
8
  */
9
9
 
10
10
  import {
11
- DataSourceVisualMode, DOMSelector, Param, Action, ViewConfig,
11
+ DataSourceVisualMode,
12
+ DOMSelector,
13
+ Param,
14
+ Action,
15
+ ViewConfig,
12
16
  } from '../types';
13
17
  import {
14
18
  getQueryParamString,
@@ -57,27 +61,74 @@ export interface SearchViewConfig
57
61
  /**
58
62
  * If set to true, the data sources panel is collapsed on load,
59
63
  * but can be expanded manually.
64
+ *
65
+ * @version: SDK: 1.1.0 | ThoughtSpot: 8.1.0.sw
66
+ *
67
+ * @example
68
+ * ```js
69
+ * const embed = new SearchEmbed('#tsEmbed', {
70
+ * ... // other options
71
+ * collapseDataSources:true,
72
+ * })
73
+ * ```
60
74
  */
61
75
  collapseDataSources?: boolean;
62
76
  /**
63
77
  * Show or hide the data sources panel.
78
+ *
79
+ * @version: SDK: 1.2.0 | ThoughtSpot: 9.1.0.sw
80
+ *
81
+ * @example
82
+ * ```js
83
+ * const embed = new SearchEmbed('#tsEmbed', {
84
+ * ... // other options
85
+ * hideDataSources:true,
86
+ * })
87
+ * ```
64
88
  */
65
89
  hideDataSources?: boolean;
66
90
  /**
67
91
  * Show or hide the charts and tables in search answers.
68
92
  * This attribute can be used to create a custom visualization
69
93
  * using raw answer data.
94
+ *
95
+ * @version: SDK: 1.2.0 | ThoughtSpot: 9.1.0.sw
96
+ *
97
+ * @example
98
+ * ```js
99
+ * const embed = new SearchEmbed('#tsEmbed', {
100
+ * ... // other options
101
+ * hideResults:true,
102
+ * })
103
+ * ```
70
104
  */
71
105
  hideResults?: boolean;
72
106
  /**
73
107
  * If set to true, the Search Assist feature is enabled.
74
108
  *
75
109
  * @version SDK: 1.13.0 | ThoughtSpot: 8.5.0.cl, 8.8.1-sw
110
+ *
111
+ * @example
112
+ * ```js
113
+ * const embed = new SearchEmbed('#tsEmbed', {
114
+ * ... // other options
115
+ * enableSearchAssist:true,
116
+ * })
117
+ * ```
76
118
  */
77
119
  enableSearchAssist?: boolean;
78
120
  /**
79
121
  * If set to true, the tabular view is set as the default
80
122
  * format for presenting search data.
123
+ *
124
+ * @version: SDK: 1.1.0 | ThoughtSpot: 8.1.0.sw
125
+ *
126
+ * @example
127
+ * ```js
128
+ * const embed = new SearchEmbed('#tsEmbed', {
129
+ * ... // other options
130
+ * forceTable:true,
131
+ * })
81
132
  */
82
133
  forceTable?: boolean;
83
134
  /**
@@ -85,12 +136,28 @@ export interface SearchViewConfig
85
136
  * Only a single data source is supported currently.
86
137
  *
87
138
  * @deprecated Use `dataSource` instead.
139
+ *
140
+ * @example
141
+ * ```js
142
+ * const embed = new SearchEmbed('#tsEmbed', {
143
+ * ... // other options
144
+ * dataSources:['id-234','id-456'],
145
+ * })
146
+ * ```
88
147
  */
89
148
  dataSources?: string[];
90
149
  /**
91
150
  * The array of data source GUIDs to set on load.
92
151
  *
93
152
  * @version: SDK: 1.19.0
153
+ *
154
+ * @example
155
+ * ```js
156
+ * const embed = new SearchEmbed('#tsEmbed', {
157
+ * ... // other options
158
+ * dataSource:'id-234',
159
+ * })
160
+ * ```
94
161
  */
95
162
  dataSource?: string;
96
163
  /**
@@ -123,6 +190,16 @@ export interface SearchViewConfig
123
190
  searchOptions?: SearchOptions;
124
191
  /**
125
192
  * The GUID of a saved answer to load initially.
193
+ *
194
+ * @version: SDK: 1.1.0 | ThoughtSpot: 8.1.0.sw
195
+ *
196
+ * @example
197
+ * ```js
198
+ * const embed = new SearchEmbed('#tsEmbed', {
199
+ * ... // other options
200
+ * answerId:'sed-1234',
201
+ * })
202
+ * ```
126
203
  */
127
204
  answerId?: string;
128
205
  /**
@@ -130,6 +207,14 @@ export interface SearchViewConfig
130
207
  * The chart/table should still be visible.
131
208
  *
132
209
  * @version SDK: 1.21.0 | ThoughtSpot: 9.2.0.cl, 9.5.0.sw
210
+ *
211
+ * @example
212
+ * ```js
213
+ * const embed = new SearchEmbed('#tsEmbed', {
214
+ * ... // other options
215
+ * hideSearchBar:true,
216
+ * })
217
+ * ```
133
218
  */
134
219
  hideSearchBar?: boolean;
135
220
  /**
@@ -137,6 +222,14 @@ export interface SearchViewConfig
137
222
  *
138
223
  * @default false
139
224
  * @version SDK: 1.26.0 | Thoughtspot: 9.7.0.cl
225
+ *
226
+ * @example
227
+ * ```js
228
+ * const embed = new SearchEmbed('#tsEmbed', {
229
+ * ... // other options
230
+ * dataPanelV2:false,
231
+ * })
232
+ * ```
140
233
  */
141
234
  dataPanelV2?: boolean;
142
235
  /**
@@ -281,18 +374,18 @@ export class SearchEmbed extends TsEmbed {
281
374
  /**
282
375
  * Render the embedded ThoughtSpot search
283
376
  */
284
- public render(): SearchEmbed {
377
+ public async render(): Promise<SearchEmbed> {
285
378
  super.render();
286
379
  const { answerId } = this.viewConfig;
287
380
 
288
381
  const src = this.getIFrameSrc();
289
- this.renderIFrame(src);
382
+ await this.renderIFrame(src);
290
383
  getAuthPromise().then(() => {
291
384
  if (
292
385
  checkReleaseVersionInBeta(
293
386
  getReleaseVersion(),
294
387
  getEmbedConfig().suppressSearchEmbedBetaWarning
295
- || getEmbedConfig().suppressErrorAlerts,
388
+ || getEmbedConfig().suppressErrorAlerts,
296
389
  )
297
390
  ) {
298
391
  alert(ERROR_MESSAGE.SEARCHEMBED_BETA_WRANING_MESSAGE);
@@ -0,0 +1,39 @@
1
+ import {
2
+ init, AuthType, LiveboardEmbed, HostEvent,
3
+ } from '../index';
4
+ import {
5
+ executeAfterWait,
6
+ getDocumentBody,
7
+ getIFrameEl,
8
+ getRootEl,
9
+ } from '../test/test-utils';
10
+
11
+ describe('Trigger', () => {
12
+ beforeEach(() => {
13
+ document.body.innerHTML = getDocumentBody();
14
+ });
15
+ test('should trigger the event', async (done) => {
16
+ init({
17
+ thoughtSpotHost: 'https://tshost',
18
+ authType: AuthType.None,
19
+ });
20
+ const lb = new LiveboardEmbed(getRootEl(), {
21
+ frameParams: {
22
+ width: '100%',
23
+ height: '100%',
24
+ },
25
+ liveboardId: '123',
26
+ });
27
+ const val = await lb.render();
28
+ const iframe = getIFrameEl();
29
+ jest.spyOn(iframe.contentWindow, 'postMessage');
30
+ executeAfterWait(() => {
31
+ lb.trigger(HostEvent.DownloadAsCsv, { vizId: 'testId' });
32
+ expect(iframe.contentWindow.postMessage).toHaveBeenCalledWith(expect.objectContaining({
33
+ type: HostEvent.DownloadAsCsv,
34
+ data: { vizId: 'testId' },
35
+ }), 'https://tshost', expect.anything());
36
+ done();
37
+ });
38
+ });
39
+ });