@thoughtspot/visual-embed-sdk 1.28.0-preRender → 1.28.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 (216) hide show
  1. package/README.md +1 -1
  2. package/cjs/package.json +3 -4
  3. package/cjs/src/auth.d.ts +16 -1
  4. package/cjs/src/auth.d.ts.map +1 -1
  5. package/cjs/src/auth.js +7 -3
  6. package/cjs/src/auth.js.map +1 -1
  7. package/cjs/src/auth.spec.d.ts.map +1 -1
  8. package/cjs/src/auth.spec.js +9 -0
  9. package/cjs/src/auth.spec.js.map +1 -1
  10. package/cjs/src/embed/app.d.ts +150 -7
  11. package/cjs/src/embed/app.d.ts.map +1 -1
  12. package/cjs/src/embed/app.js +5 -5
  13. package/cjs/src/embed/app.js.map +1 -1
  14. package/cjs/src/embed/app.spec.js +19 -1
  15. package/cjs/src/embed/app.spec.js.map +1 -1
  16. package/cjs/src/embed/base.d.ts +1 -1
  17. package/cjs/src/embed/base.d.ts.map +1 -1
  18. package/cjs/src/embed/base.js +5 -8
  19. package/cjs/src/embed/base.js.map +1 -1
  20. package/cjs/src/embed/base.spec.js +1 -1
  21. package/cjs/src/embed/base.spec.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 +113 -4
  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 +20 -1
  29. package/cjs/src/embed/liveboard.spec.js.map +1 -1
  30. package/cjs/src/embed/pinboard.spec.js +20 -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 +85 -2
  41. package/cjs/src/embed/search.d.ts.map +1 -1
  42. package/cjs/src/embed/search.js +6 -6
  43. package/cjs/src/embed/search.js.map +1 -1
  44. package/cjs/src/embed/search.spec.js +25 -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 +2 -2
  51. package/cjs/src/embed/ts-embed.d.ts.map +1 -1
  52. package/cjs/src/embed/ts-embed.js +18 -13
  53. package/cjs/src/embed/ts-embed.js.map +1 -1
  54. package/cjs/src/embed/ts-embed.spec.js +64 -25
  55. package/cjs/src/embed/ts-embed.spec.js.map +1 -1
  56. package/cjs/src/index.d.ts +2 -1
  57. package/cjs/src/index.d.ts.map +1 -1
  58. package/cjs/src/index.js +3 -1
  59. package/cjs/src/index.js.map +1 -1
  60. package/cjs/src/react/index.spec.js +13 -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 +279 -43
  71. package/cjs/src/types.d.ts.map +1 -1
  72. package/cjs/src/types.js +95 -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/embed/app.d.ts +150 -7
  83. package/dist/src/embed/app.d.ts.map +1 -1
  84. package/dist/src/embed/base.d.ts +1 -1
  85. package/dist/src/embed/base.d.ts.map +1 -1
  86. package/dist/src/embed/liveboard.d.ts +113 -4
  87. package/dist/src/embed/liveboard.d.ts.map +1 -1
  88. package/dist/src/embed/sage.d.ts +1 -1
  89. package/dist/src/embed/sage.d.ts.map +1 -1
  90. package/dist/src/embed/search-bar.d.ts +37 -6
  91. package/dist/src/embed/search-bar.d.ts.map +1 -1
  92. package/dist/src/embed/search.d.ts +85 -2
  93. package/dist/src/embed/search.d.ts.map +1 -1
  94. package/dist/src/embed/ts-embed-trigger.spec.d.ts +2 -0
  95. package/dist/src/embed/ts-embed-trigger.spec.d.ts.map +1 -0
  96. package/dist/src/embed/ts-embed.d.ts +2 -2
  97. package/dist/src/embed/ts-embed.d.ts.map +1 -1
  98. package/dist/src/index.d.ts +2 -1
  99. package/dist/src/index.d.ts.map +1 -1
  100. package/dist/src/test/test-utils.d.ts +1 -0
  101. package/dist/src/test/test-utils.d.ts.map +1 -1
  102. package/dist/src/tokenizedFetch.d.ts +9 -0
  103. package/dist/src/tokenizedFetch.d.ts.map +1 -1
  104. package/dist/src/types.d.ts +279 -43
  105. package/dist/src/types.d.ts.map +1 -1
  106. package/dist/src/utils/authService/authService.d.ts.map +1 -1
  107. package/dist/tsembed-react.es.js +1543 -1445
  108. package/dist/tsembed-react.js +6614 -6529
  109. package/dist/tsembed.es.js +1921 -1826
  110. package/dist/tsembed.js +15342 -15259
  111. package/dist/visual-embed-sdk-react-full.d.ts +692 -64
  112. package/dist/visual-embed-sdk-react.d.ts +692 -64
  113. package/dist/visual-embed-sdk.d.ts +692 -64
  114. package/lib/package.json +3 -4
  115. package/lib/src/auth.d.ts +16 -1
  116. package/lib/src/auth.d.ts.map +1 -1
  117. package/lib/src/auth.js +8 -4
  118. package/lib/src/auth.js.map +1 -1
  119. package/lib/src/auth.spec.d.ts.map +1 -1
  120. package/lib/src/auth.spec.js +9 -0
  121. package/lib/src/auth.spec.js.map +1 -1
  122. package/lib/src/embed/app.d.ts +150 -7
  123. package/lib/src/embed/app.d.ts.map +1 -1
  124. package/lib/src/embed/app.js +5 -5
  125. package/lib/src/embed/app.js.map +1 -1
  126. package/lib/src/embed/app.spec.js +19 -1
  127. package/lib/src/embed/app.spec.js.map +1 -1
  128. package/lib/src/embed/base.d.ts +1 -1
  129. package/lib/src/embed/base.d.ts.map +1 -1
  130. package/lib/src/embed/base.js +5 -8
  131. package/lib/src/embed/base.js.map +1 -1
  132. package/lib/src/embed/base.spec.js +2 -2
  133. package/lib/src/embed/base.spec.js.map +1 -1
  134. package/lib/src/embed/embed.spec.js +2 -17
  135. package/lib/src/embed/embed.spec.js.map +1 -1
  136. package/lib/src/embed/liveboard.d.ts +113 -4
  137. package/lib/src/embed/liveboard.d.ts.map +1 -1
  138. package/lib/src/embed/liveboard.js +3 -3
  139. package/lib/src/embed/liveboard.js.map +1 -1
  140. package/lib/src/embed/liveboard.spec.js +20 -1
  141. package/lib/src/embed/liveboard.spec.js.map +1 -1
  142. package/lib/src/embed/pinboard.spec.js +20 -1
  143. package/lib/src/embed/pinboard.spec.js.map +1 -1
  144. package/lib/src/embed/sage.d.ts +1 -1
  145. package/lib/src/embed/sage.d.ts.map +1 -1
  146. package/lib/src/embed/sage.js +2 -2
  147. package/lib/src/embed/sage.js.map +1 -1
  148. package/lib/src/embed/search-bar.d.ts +37 -6
  149. package/lib/src/embed/search-bar.d.ts.map +1 -1
  150. package/lib/src/embed/search-bar.js +2 -2
  151. package/lib/src/embed/search-bar.js.map +1 -1
  152. package/lib/src/embed/search.d.ts +85 -2
  153. package/lib/src/embed/search.d.ts.map +1 -1
  154. package/lib/src/embed/search.js +7 -7
  155. package/lib/src/embed/search.js.map +1 -1
  156. package/lib/src/embed/search.spec.js +25 -1
  157. package/lib/src/embed/search.spec.js.map +1 -1
  158. package/lib/src/embed/ts-embed-trigger.spec.d.ts +2 -0
  159. package/lib/src/embed/ts-embed-trigger.spec.d.ts.map +1 -0
  160. package/lib/src/embed/ts-embed-trigger.spec.js +32 -0
  161. package/lib/src/embed/ts-embed-trigger.spec.js.map +1 -0
  162. package/lib/src/embed/ts-embed.d.ts +2 -2
  163. package/lib/src/embed/ts-embed.d.ts.map +1 -1
  164. package/lib/src/embed/ts-embed.js +21 -16
  165. package/lib/src/embed/ts-embed.js.map +1 -1
  166. package/lib/src/embed/ts-embed.spec.js +57 -18
  167. package/lib/src/embed/ts-embed.spec.js.map +1 -1
  168. package/lib/src/index.d.ts +2 -1
  169. package/lib/src/index.d.ts.map +1 -1
  170. package/lib/src/index.js +2 -1
  171. package/lib/src/index.js.map +1 -1
  172. package/lib/src/react/index.spec.js +13 -1
  173. package/lib/src/react/index.spec.js.map +1 -1
  174. package/lib/src/test/test-utils.d.ts +1 -0
  175. package/lib/src/test/test-utils.d.ts.map +1 -1
  176. package/lib/src/test/test-utils.js +8 -0
  177. package/lib/src/test/test-utils.js.map +1 -1
  178. package/lib/src/tokenizedFetch.d.ts +9 -0
  179. package/lib/src/tokenizedFetch.d.ts.map +1 -1
  180. package/lib/src/tokenizedFetch.js +9 -0
  181. package/lib/src/tokenizedFetch.js.map +1 -1
  182. package/lib/src/types.d.ts +279 -43
  183. package/lib/src/types.d.ts.map +1 -1
  184. package/lib/src/types.js +95 -20
  185. package/lib/src/types.js.map +1 -1
  186. package/lib/src/utils/authService/authService.d.ts.map +1 -1
  187. package/lib/src/utils/authService/authService.js +9 -3
  188. package/lib/src/utils/authService/authService.js.map +1 -1
  189. package/lib/src/utils/authService/authService.spec.js +23 -1
  190. package/lib/src/utils/authService/authService.spec.js.map +1 -1
  191. package/lib/src/visual-embed-sdk.d.ts +699 -68
  192. package/package.json +3 -4
  193. package/src/auth.spec.ts +10 -0
  194. package/src/auth.ts +27 -8
  195. package/src/embed/app.spec.ts +24 -1
  196. package/src/embed/app.ts +154 -13
  197. package/src/embed/base.spec.ts +3 -3
  198. package/src/embed/base.ts +13 -17
  199. package/src/embed/embed.spec.ts +0 -18
  200. package/src/embed/liveboard.spec.ts +24 -1
  201. package/src/embed/liveboard.ts +121 -15
  202. package/src/embed/pinboard.spec.ts +24 -1
  203. package/src/embed/sage.ts +2 -2
  204. package/src/embed/search-bar.tsx +38 -7
  205. package/src/embed/search.spec.ts +29 -1
  206. package/src/embed/search.ts +93 -9
  207. package/src/embed/ts-embed-trigger.spec.ts +39 -0
  208. package/src/embed/ts-embed.spec.ts +71 -30
  209. package/src/embed/ts-embed.ts +48 -45
  210. package/src/index.ts +2 -0
  211. package/src/react/index.spec.tsx +30 -0
  212. package/src/test/test-utils.ts +9 -0
  213. package/src/tokenizedFetch.ts +9 -0
  214. package/src/types.ts +288 -50
  215. package/src/utils/authService/authService.spec.ts +31 -4
  216. package/src/utils/authService/authService.ts +14 -13
@@ -11,16 +11,9 @@
11
11
 
12
12
  import { ERROR_MESSAGE } from '../errors';
13
13
  import {
14
- EmbedEvent,
15
- MessagePayload,
16
- Param,
17
- RuntimeFilter,
18
- DOMSelector,
19
- HostEvent,
20
- ViewConfig,
14
+ DOMSelector, EmbedEvent, HostEvent, MessagePayload, Param, ViewConfig,
21
15
  } from '../types';
22
16
  import { getQueryParamString, isUndefined } from '../utils';
23
- import { getAuthPromise } from './base';
24
17
  import { V1Embed } from './ts-embed';
25
18
 
26
19
  /**
@@ -28,12 +21,29 @@ import { V1Embed } from './ts-embed';
28
21
  *
29
22
  * @group Embed components
30
23
  */
31
- export interface LiveboardViewConfig extends Omit<ViewConfig, 'hiddenHomepageModules' | 'hiddenHomeLeftNavItems' | 'reorderedHomepageModules'> {
24
+ export interface LiveboardViewConfig
25
+ extends Omit<
26
+ ViewConfig,
27
+ 'hiddenHomepageModules' | 'hiddenHomeLeftNavItems' | 'reorderedHomepageModules'
28
+ > {
32
29
  /**
33
30
  * If set to true, the embedded object container dynamically resizes
34
31
  * according to the height of the Liveboard.
32
+ * **Note**: Using fullHeight loads all visualizations on the
33
+ * Liveboard simultaneously, which results in multiple warehouse
34
+ * queries and potentially a longer wait for the topmost
35
+ * visualizations to display on the screen.
36
+ * Setting `fullHeight` to `false` fetches visualizations
37
+ * incrementally as users scroll the page to view the charts and tables.
35
38
  *
36
39
  * @version SDK: 1.1.0 | ThoughtSpot: ts7.may.cl, 7.2.1
40
+ * @example
41
+ * ```js
42
+ * const embed = new LiveboardEmbed('#embed', {
43
+ * ... // other liveboard view config
44
+ * fullHeight: true,
45
+ * });
46
+ * ```
37
47
  */
38
48
  fullHeight?: boolean;
39
49
  /**
@@ -43,10 +53,26 @@ export interface LiveboardViewConfig extends Omit<ViewConfig, 'hiddenHomepageMod
43
53
  *
44
54
  * @version SDK: 1.5.0 | ThoughtSpot: ts7.oct.cl, 7.2.1
45
55
  * @default 500
56
+ * @example
57
+ * ```js
58
+ * const embed = new LiveboardEmbed('#embed', {
59
+ * ... // other liveboard view config
60
+ * fullHeight: true,
61
+ * defaultHeight: 600,
62
+ * });
63
+ * ```
46
64
  */
47
65
  defaultHeight?: number;
48
66
  /**
49
67
  * @Deprecated If set to true, the context menu in visualizations will be enabled.
68
+ * @example
69
+ * ```js
70
+ * const embed = new LiveboardEmbed('#tsEmbed', {
71
+ * ... // other options
72
+ * enableVizTransformations:true,
73
+ * })
74
+ * ```
75
+ * @version: SDK: 1.1.0 | ThoughtSpot: 8.1.0.sw
50
76
  */
51
77
  enableVizTransformations?: boolean;
52
78
  /**
@@ -54,6 +80,12 @@ export interface LiveboardViewConfig extends Omit<ViewConfig, 'hiddenHomepageMod
54
80
  * Use either liveboardId or pinboardId to reference the Liveboard to embed.
55
81
  *
56
82
  * @version SDK: 1.3.0 | ThoughtSpot ts7.aug.cl, 7.2.1
83
+ * @example
84
+ * ```js
85
+ * const embed = new LiveboardEmbed('#embed-container', {
86
+ * ... // other options
87
+ * liveboardId:id of liveboard,
88
+ * })
57
89
  */
58
90
  liveboardId?: string;
59
91
  /**
@@ -64,6 +96,15 @@ export interface LiveboardViewConfig extends Omit<ViewConfig, 'hiddenHomepageMod
64
96
  pinboardId?: string;
65
97
  /**
66
98
  * The visualization within the Liveboard to display.
99
+ *
100
+ * @version SDK: 1.9.1 | ThoughtSpot: 8.1.0.cl, 8.4.1-sw
101
+ * @example
102
+ * ```js
103
+ * const embed = new LiveboardEmbed('#embed-container', {
104
+ * ... // other options
105
+ * vizId:'430496d6-6903-4601-937e-2c691821af3c',
106
+ * })
107
+ * ```
67
108
  */
68
109
  vizId?: string;
69
110
  /**
@@ -71,6 +112,13 @@ export interface LiveboardViewConfig extends Omit<ViewConfig, 'hiddenHomepageMod
71
112
  * Liveboard page will be read-only (no X buttons)
72
113
  *
73
114
  * @version SDK: 1.3.0 | ThoughtSpot ts7.aug.cl, 7.2.1.sw
115
+ * @example
116
+ * ```js
117
+ * const embed = new LiveboardEmbed('#embed-container', {
118
+ * ... // other options
119
+ * preventLiveboardFilterRemoval:true,
120
+ * })
121
+ * ```
74
122
  */
75
123
  preventLiveboardFilterRemoval?: boolean;
76
124
  /**
@@ -79,6 +127,15 @@ export interface LiveboardViewConfig extends Omit<ViewConfig, 'hiddenHomepageMod
79
127
  * event.
80
128
  *
81
129
  * @version SDK: 1.9.1 | ThoughtSpot: 8.1.0.cl, 8.4.1-sw
130
+ * @example
131
+ * ```js
132
+ * const embed = new LiveboardEmbed('#embed-container', {
133
+ * ... // other options
134
+ * visibleVizs: [
135
+ * '430496d6-6903-4601-937e-2c691821af3c',
136
+ * 'f547ec54-2a37-4516-a222-2b06719af726'
137
+ * ]
138
+ * })
82
139
  */
83
140
  visibleVizs?: string[];
84
141
  /**
@@ -92,12 +149,26 @@ export interface LiveboardViewConfig extends Omit<ViewConfig, 'hiddenHomepageMod
92
149
  * new Liveboard experience mode.
93
150
  *
94
151
  * @version SDK: 1.14.0 | ThoughtSpot: 8.6.0.cl, 8.8.1-sw
152
+ * @example
153
+ * ```js
154
+ * const embed = new LiveboardEmbed('#embed-container', {
155
+ * ... // other options
156
+ * liveboardV2:true,
157
+ * })
158
+ * ```
95
159
  */
96
160
  liveboardV2?: boolean;
97
161
  /**
98
162
  * Set a Liveboard tab as an active tab.
99
163
  * Specify the tab ID.
100
164
  *
165
+ * @example
166
+ * ```js
167
+ * const embed = new LiveboardEmbed('#tsEmbed', {
168
+ * ... // other options
169
+ * activeTabId:'id-1234',
170
+ * })
171
+ * ```
101
172
  * @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1-sw
102
173
  */
103
174
  activeTabId?: string;
@@ -105,6 +176,13 @@ export interface LiveboardViewConfig extends Omit<ViewConfig, 'hiddenHomepageMod
105
176
  * Show or hide the tab panel of the embedded Liveboard.
106
177
  *
107
178
  * @version SDK: 1.25.0 | Thoughtspot: 9.6.0.cl, 9.8.0.sw
179
+ * @example
180
+ * ```js
181
+ * const embed = new LiveboardEmbed('#embed-container', {
182
+ * ... // other options
183
+ * hideTabPanel:true,
184
+ * })
185
+ * ```
108
186
  */
109
187
  hideTabPanel?: boolean;
110
188
  /**
@@ -112,20 +190,41 @@ export interface LiveboardViewConfig extends Omit<ViewConfig, 'hiddenHomepageMod
112
190
  *
113
191
  * @version SDK: 1.26.0 | Thoughtspot: 9.7.0.cl, 9.8.0.sw
114
192
  * @default false
193
+ * @example
194
+ * ```js
195
+ * const embed = new LiveboardEmbed('#embed', {
196
+ * ... // other liveboard view config
197
+ * hideLiveboardHeader:true,
198
+ * });
199
+ * ```
115
200
  */
116
201
  hideLiveboardHeader?: boolean;
117
202
  /**
118
203
  * Show or hide the Liveboard title.
119
204
  *
120
- * @version SDK: 1.26.0 | Thoughtspot: 9.7.0.cl, 9.8.0.sw
121
205
  * @default false
206
+ * @version SDK: 1.26.0 | Thoughtspot: 9.7.0.cl, 9.8.0.sw
207
+ * @example
208
+ * ```js
209
+ * const embed = new LiveboardEmbed('#embed-container', {
210
+ * ... // other options
211
+ * showLiveboardTitle:true,
212
+ * })
213
+ * ```
122
214
  */
123
215
  showLiveboardTitle?: boolean;
124
216
  /**
125
217
  * Show or hide the Liveboard description.
126
218
  *
127
- * @version SDK: 1.26.0 | Thoughtspot: 9.7.0.cl, 9.8.0.sw
128
219
  * @default false
220
+ * @version SDK: 1.26.0 | Thoughtspot: 9.7.0.cl, 9.8.0.sw
221
+ * @example
222
+ * ```js
223
+ * const embed = new LiveboardEmbed('#embed-container', {
224
+ * ... // other options
225
+ * showLiveboardDescription:true,
226
+ * })
227
+ * ```
129
228
  */
130
229
  showLiveboardDescription?: boolean;
131
230
  /**
@@ -146,8 +245,15 @@ export interface LiveboardViewConfig extends Omit<ViewConfig, 'hiddenHomepageMod
146
245
  /**
147
246
  * enable or disable ask sage
148
247
  *
149
- * @version SDK: 1.29.0 | Thoughtspot: 9.12.0.cl
150
248
  * @default false
249
+ * @version SDK: 1.29.0 | Thoughtspot: 9.12.0.cl
250
+ * @example
251
+ * ```js
252
+ * const embed = new SearchEmbed('#tsEmbed', {
253
+ * ... // other options
254
+ * enableAskSage:true,
255
+ * })
256
+ * ```
151
257
  */
152
258
  enableAskSage?: boolean;
153
259
  }
@@ -362,11 +468,11 @@ export class LiveboardEmbed extends V1Embed {
362
468
  * @param renderOptions An object specifying the Liveboard ID,
363
469
  * visualization ID and the runtime filters.
364
470
  */
365
- public render(): LiveboardEmbed {
471
+ public async render(): Promise<LiveboardEmbed> {
366
472
  super.render();
367
473
 
368
474
  const src = this.getIFrameSrc();
369
- this.renderV1Embed(src);
475
+ await this.renderV1Embed(src);
370
476
 
371
477
  return this;
372
478
  }
@@ -389,4 +495,4 @@ export class LiveboardEmbed extends V1Embed {
389
495
  /**
390
496
  * @hidden
391
497
  */
392
- export class PinboardEmbed extends LiveboardEmbed { }
498
+ 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,28 @@ describe('Pinboard/viz embed tests', () => {
202
203
  });
203
204
  });
204
205
 
206
+ test('should not 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
+ await executeAfterWait(() => {
221
+ expectUrlMatchesWithParams(
222
+ getIFrameSrc(),
223
+ `http://${thoughtSpotHost}/?embedApp=true${defaultParams}${prefixParamsVizEmbed}#/embed/viz/${pinboardId}/${vizId}`,
224
+ );
225
+ });
226
+ });
227
+
205
228
  test('should register event handler to adjust iframe height', async () => {
206
229
  const pinboardEmbed = new PinboardEmbed(getRootEl(), {
207
230
  ...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,33 @@ describe('Search embed tests', () => {
216
217
  });
217
218
  });
218
219
 
220
+ test('should not 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
+ await executeAfterWait(() => {
240
+ expectUrlMatchesWithParams(
241
+ getIFrameSrc(),
242
+ `http://${thoughtSpotHost}/v2/?${defaultParamsWithHiddenActions}&dataSources=[%22data-source-1%22]&searchTokenString=%5Bcommit%20date%5D%5Brevenue%5D&dataSourceMode=hide&useLastSelectedSources=false${prefixParams}#/embed/answer`,
243
+ );
244
+ });
245
+ });
246
+
219
247
  test('Should add dataSource', async () => {
220
248
  const dataSource = 'data-source-1';
221
249
  const searchOptions = {
@@ -7,20 +7,20 @@
7
7
  * @author Ayon Ghosh <ayon.ghosh@thoughtspot.com>
8
8
  */
9
9
 
10
+ import { getReleaseVersion } from '../auth';
11
+ import { ERROR_MESSAGE } from '../errors';
10
12
  import {
11
- DataSourceVisualMode, DOMSelector, Param, Action, ViewConfig,
13
+ Action, DOMSelector, DataSourceVisualMode, Param, ViewConfig,
12
14
  } from '../types';
13
15
  import {
14
- getQueryParamString,
15
16
  checkReleaseVersionInBeta,
16
17
  getFilterQuery,
18
+ getQueryParamString,
17
19
  getRuntimeParameters,
18
20
  } from '../utils';
19
- import { TsEmbed } from './ts-embed';
20
- import { ERROR_MESSAGE } from '../errors';
21
21
  import { getAuthPromise } from './base';
22
- import { getReleaseVersion } from '../auth';
23
22
  import { getEmbedConfig } from './embedConfig';
23
+ import { TsEmbed } from './ts-embed';
24
24
 
25
25
  /**
26
26
  * Configuration for search options.
@@ -57,27 +57,73 @@ export interface SearchViewConfig
57
57
  /**
58
58
  * If set to true, the data sources panel is collapsed on load,
59
59
  * but can be expanded manually.
60
+ *
61
+ * @version: SDK: 1.1.0 | ThoughtSpot: 8.1.0.sw
62
+ * @example
63
+ * ```js
64
+ * const embed = new SearchEmbed('#tsEmbed', {
65
+ * ... // other options
66
+ * collapseDataSources:true,
67
+ * })
68
+ * ```
60
69
  */
61
70
  collapseDataSources?: boolean;
62
71
  /**
63
72
  * Show or hide the data sources panel.
73
+ *
74
+ * @version: SDK: 1.2.0 | ThoughtSpot: 9.1.0.sw
75
+ * @example
76
+ * ```js
77
+ * const embed = new SearchEmbed('#tsEmbed', {
78
+ * ... // other options
79
+ * hideDataSources:true,
80
+ * })
81
+ * ```
64
82
  */
65
83
  hideDataSources?: boolean;
66
84
  /**
67
85
  * Show or hide the charts and tables in search answers.
68
86
  * This attribute can be used to create a custom visualization
69
87
  * using raw answer data.
88
+ *
89
+ * @version: SDK: 1.2.0 | ThoughtSpot: 9.1.0.sw
90
+ * @example
91
+ * ```js
92
+ * const embed = new SearchEmbed('#tsEmbed', {
93
+ * ... // other options
94
+ * hideResults:true,
95
+ * })
96
+ * ```
70
97
  */
71
98
  hideResults?: boolean;
99
+ /**
100
+ * If set to true, expands all the data sources panel.
101
+ */
102
+ expandAllDataSource?: boolean;
72
103
  /**
73
104
  * If set to true, the Search Assist feature is enabled.
74
105
  *
75
106
  * @version SDK: 1.13.0 | ThoughtSpot: 8.5.0.cl, 8.8.1-sw
107
+ * @example
108
+ * ```js
109
+ * const embed = new SearchEmbed('#tsEmbed', {
110
+ * ... // other options
111
+ * enableSearchAssist:true,
112
+ * })
113
+ * ```
76
114
  */
77
115
  enableSearchAssist?: boolean;
78
116
  /**
79
117
  * If set to true, the tabular view is set as the default
80
118
  * format for presenting search data.
119
+ *
120
+ * @version: SDK: 1.1.0 | ThoughtSpot: 8.1.0.sw
121
+ * @example
122
+ * ```js
123
+ * const embed = new SearchEmbed('#tsEmbed', {
124
+ * ... // other options
125
+ * forceTable:true,
126
+ * })
81
127
  */
82
128
  forceTable?: boolean;
83
129
  /**
@@ -85,12 +131,26 @@ export interface SearchViewConfig
85
131
  * Only a single data source is supported currently.
86
132
  *
87
133
  * @deprecated Use `dataSource` instead.
134
+ * @example
135
+ * ```js
136
+ * const embed = new SearchEmbed('#tsEmbed', {
137
+ * ... // other options
138
+ * dataSources:['id-234','id-456'],
139
+ * })
140
+ * ```
88
141
  */
89
142
  dataSources?: string[];
90
143
  /**
91
144
  * The array of data source GUIDs to set on load.
92
145
  *
93
146
  * @version: SDK: 1.19.0
147
+ * @example
148
+ * ```js
149
+ * const embed = new SearchEmbed('#tsEmbed', {
150
+ * ... // other options
151
+ * dataSource:'id-234',
152
+ * })
153
+ * ```
94
154
  */
95
155
  dataSource?: string;
96
156
  /**
@@ -123,6 +183,15 @@ export interface SearchViewConfig
123
183
  searchOptions?: SearchOptions;
124
184
  /**
125
185
  * The GUID of a saved answer to load initially.
186
+ *
187
+ * @version: SDK: 1.1.0 | ThoughtSpot: 8.1.0.sw
188
+ * @example
189
+ * ```js
190
+ * const embed = new SearchEmbed('#tsEmbed', {
191
+ * ... // other options
192
+ * answerId:'sed-1234',
193
+ * })
194
+ * ```
126
195
  */
127
196
  answerId?: string;
128
197
  /**
@@ -130,6 +199,13 @@ export interface SearchViewConfig
130
199
  * The chart/table should still be visible.
131
200
  *
132
201
  * @version SDK: 1.21.0 | ThoughtSpot: 9.2.0.cl, 9.5.0.sw
202
+ * @example
203
+ * ```js
204
+ * const embed = new SearchEmbed('#tsEmbed', {
205
+ * ... // other options
206
+ * hideSearchBar:true,
207
+ * })
208
+ * ```
133
209
  */
134
210
  hideSearchBar?: boolean;
135
211
  /**
@@ -137,6 +213,13 @@ export interface SearchViewConfig
137
213
  *
138
214
  * @default false
139
215
  * @version SDK: 1.26.0 | Thoughtspot: 9.7.0.cl
216
+ * @example
217
+ * ```js
218
+ * const embed = new SearchEmbed('#tsEmbed', {
219
+ * ... // other options
220
+ * dataPanelV2:false,
221
+ * })
222
+ * ```
140
223
  */
141
224
  dataPanelV2?: boolean;
142
225
  /**
@@ -190,13 +273,14 @@ export class SearchEmbed extends TsEmbed {
190
273
  protected getEmbedParams(): string {
191
274
  const {
192
275
  hideResults,
276
+ expandAllDataSource,
193
277
  enableSearchAssist,
194
278
  forceTable,
195
279
  searchOptions,
196
280
  runtimeFilters,
197
281
  dataSource,
198
282
  dataSources,
199
- excludeRuntimeFiltersfromURL,
283
+ excludeRuntimeFiltersfromURL = true,
200
284
  hideSearchBar,
201
285
  dataPanelV2 = false,
202
286
  useLastSelectedSources = false,
@@ -281,18 +365,18 @@ export class SearchEmbed extends TsEmbed {
281
365
  /**
282
366
  * Render the embedded ThoughtSpot search
283
367
  */
284
- public render(): SearchEmbed {
368
+ public async render(): Promise<SearchEmbed> {
285
369
  super.render();
286
370
  const { answerId } = this.viewConfig;
287
371
 
288
372
  const src = this.getIFrameSrc();
289
- this.renderIFrame(src);
373
+ await this.renderIFrame(src);
290
374
  getAuthPromise().then(() => {
291
375
  if (
292
376
  checkReleaseVersionInBeta(
293
377
  getReleaseVersion(),
294
378
  getEmbedConfig().suppressSearchEmbedBetaWarning
295
- || getEmbedConfig().suppressErrorAlerts,
379
+ || getEmbedConfig().suppressErrorAlerts,
296
380
  )
297
381
  ) {
298
382
  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
+ });