@thoughtspot/visual-embed-sdk 1.27.9 → 1.27.11

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 (221) hide show
  1. package/cjs/package.json +2 -2
  2. package/cjs/src/embed/app.d.ts +144 -7
  3. package/cjs/src/embed/app.d.ts.map +1 -1
  4. package/cjs/src/embed/app.js +5 -5
  5. package/cjs/src/embed/app.js.map +1 -1
  6. package/cjs/src/embed/app.spec.js +19 -1
  7. package/cjs/src/embed/app.spec.js.map +1 -1
  8. package/cjs/src/embed/base.d.ts.map +1 -1
  9. package/cjs/src/embed/base.js +0 -3
  10. package/cjs/src/embed/base.js.map +1 -1
  11. package/cjs/src/embed/embed.spec.js +0 -15
  12. package/cjs/src/embed/embed.spec.js.map +1 -1
  13. package/cjs/src/embed/liveboard.d.ts +113 -4
  14. package/cjs/src/embed/liveboard.d.ts.map +1 -1
  15. package/cjs/src/embed/liveboard.js +2 -2
  16. package/cjs/src/embed/liveboard.js.map +1 -1
  17. package/cjs/src/embed/liveboard.spec.js +20 -1
  18. package/cjs/src/embed/liveboard.spec.js.map +1 -1
  19. package/cjs/src/embed/pinboard.spec.js +20 -1
  20. package/cjs/src/embed/pinboard.spec.js.map +1 -1
  21. package/cjs/src/embed/sage.d.ts +1 -1
  22. package/cjs/src/embed/sage.d.ts.map +1 -1
  23. package/cjs/src/embed/sage.js +2 -2
  24. package/cjs/src/embed/sage.js.map +1 -1
  25. package/cjs/src/embed/search-bar.d.ts +37 -6
  26. package/cjs/src/embed/search-bar.d.ts.map +1 -1
  27. package/cjs/src/embed/search-bar.js +2 -2
  28. package/cjs/src/embed/search-bar.js.map +1 -1
  29. package/cjs/src/embed/search.d.ts +80 -1
  30. package/cjs/src/embed/search.d.ts.map +1 -1
  31. package/cjs/src/embed/search.js +3 -3
  32. package/cjs/src/embed/search.js.map +1 -1
  33. package/cjs/src/embed/search.spec.js +25 -1
  34. package/cjs/src/embed/search.spec.js.map +1 -1
  35. package/cjs/src/embed/ts-embed-trigger.spec.d.ts +2 -0
  36. package/cjs/src/embed/ts-embed-trigger.spec.d.ts.map +1 -0
  37. package/cjs/src/embed/ts-embed-trigger.spec.js +34 -0
  38. package/cjs/src/embed/ts-embed-trigger.spec.js.map +1 -0
  39. package/cjs/src/embed/ts-embed.d.ts +1 -1
  40. package/cjs/src/embed/ts-embed.d.ts.map +1 -1
  41. package/cjs/src/embed/ts-embed.js +14 -11
  42. package/cjs/src/embed/ts-embed.js.map +1 -1
  43. package/cjs/src/embed/ts-embed.spec.js +50 -17
  44. package/cjs/src/embed/ts-embed.spec.js.map +1 -1
  45. package/cjs/src/index.d.ts +5 -3
  46. package/cjs/src/index.d.ts.map +1 -1
  47. package/cjs/src/index.js +6 -1
  48. package/cjs/src/index.js.map +1 -1
  49. package/cjs/src/mixpanel-service.d.ts +1 -0
  50. package/cjs/src/mixpanel-service.d.ts.map +1 -1
  51. package/cjs/src/mixpanel-service.js +1 -0
  52. package/cjs/src/mixpanel-service.js.map +1 -1
  53. package/cjs/src/react/all-types-export.d.ts +1 -1
  54. package/cjs/src/react/all-types-export.d.ts.map +1 -1
  55. package/cjs/src/react/all-types-export.js +2 -1
  56. package/cjs/src/react/all-types-export.js.map +1 -1
  57. package/cjs/src/react/index.spec.js +1 -1
  58. package/cjs/src/react/index.spec.js.map +1 -1
  59. package/cjs/src/test/test-utils.d.ts +1 -0
  60. package/cjs/src/test/test-utils.d.ts.map +1 -1
  61. package/cjs/src/test/test-utils.js +10 -1
  62. package/cjs/src/test/test-utils.js.map +1 -1
  63. package/cjs/src/tokenizedFetch.d.ts +9 -0
  64. package/cjs/src/tokenizedFetch.d.ts.map +1 -1
  65. package/cjs/src/tokenizedFetch.js +9 -0
  66. package/cjs/src/tokenizedFetch.js.map +1 -1
  67. package/cjs/src/types.d.ts +295 -44
  68. package/cjs/src/types.d.ts.map +1 -1
  69. package/cjs/src/types.js +119 -21
  70. package/cjs/src/types.js.map +1 -1
  71. package/cjs/src/utils/authService/authService.d.ts.map +1 -1
  72. package/cjs/src/utils/authService/authService.js +8 -2
  73. package/cjs/src/utils/authService/authService.js.map +1 -1
  74. package/cjs/src/utils/authService/authService.spec.js +22 -0
  75. package/cjs/src/utils/authService/authService.spec.js.map +1 -1
  76. package/cjs/src/utils/graphql/answerService/answerService.d.ts +56 -2
  77. package/cjs/src/utils/graphql/answerService/answerService.d.ts.map +1 -1
  78. package/cjs/src/utils/graphql/answerService/answerService.js +55 -0
  79. package/cjs/src/utils/graphql/answerService/answerService.js.map +1 -1
  80. package/dist/src/embed/app.d.ts +144 -7
  81. package/dist/src/embed/app.d.ts.map +1 -1
  82. package/dist/src/embed/base.d.ts.map +1 -1
  83. package/dist/src/embed/liveboard.d.ts +113 -4
  84. package/dist/src/embed/liveboard.d.ts.map +1 -1
  85. package/dist/src/embed/sage.d.ts +1 -1
  86. package/dist/src/embed/sage.d.ts.map +1 -1
  87. package/dist/src/embed/search-bar.d.ts +37 -6
  88. package/dist/src/embed/search-bar.d.ts.map +1 -1
  89. package/dist/src/embed/search.d.ts +80 -1
  90. package/dist/src/embed/search.d.ts.map +1 -1
  91. package/dist/src/embed/ts-embed-trigger.spec.d.ts +2 -0
  92. package/dist/src/embed/ts-embed-trigger.spec.d.ts.map +1 -0
  93. package/dist/src/embed/ts-embed.d.ts +1 -1
  94. package/dist/src/embed/ts-embed.d.ts.map +1 -1
  95. package/dist/src/index.d.ts +5 -3
  96. package/dist/src/index.d.ts.map +1 -1
  97. package/dist/src/mixpanel-service.d.ts +1 -0
  98. package/dist/src/mixpanel-service.d.ts.map +1 -1
  99. package/dist/src/react/all-types-export.d.ts +1 -1
  100. package/dist/src/react/all-types-export.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 +295 -44
  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/src/utils/graphql/answerService/answerService.d.ts +56 -2
  109. package/dist/src/utils/graphql/answerService/answerService.d.ts.map +1 -1
  110. package/dist/tsembed-react.es.js +219 -47
  111. package/dist/tsembed-react.js +212 -47
  112. package/dist/tsembed.es.js +336 -167
  113. package/dist/tsembed.js +15335 -15170
  114. package/dist/visual-embed-sdk-react-full.d.ts +769 -66
  115. package/dist/visual-embed-sdk-react.d.ts +769 -66
  116. package/dist/visual-embed-sdk.d.ts +769 -66
  117. package/lib/package.json +2 -2
  118. package/lib/src/embed/app.d.ts +144 -7
  119. package/lib/src/embed/app.d.ts.map +1 -1
  120. package/lib/src/embed/app.js +5 -5
  121. package/lib/src/embed/app.js.map +1 -1
  122. package/lib/src/embed/app.spec.js +19 -1
  123. package/lib/src/embed/app.spec.js.map +1 -1
  124. package/lib/src/embed/base.d.ts.map +1 -1
  125. package/lib/src/embed/base.js +0 -3
  126. package/lib/src/embed/base.js.map +1 -1
  127. package/lib/src/embed/embed.spec.js +2 -17
  128. package/lib/src/embed/embed.spec.js.map +1 -1
  129. package/lib/src/embed/liveboard.d.ts +113 -4
  130. package/lib/src/embed/liveboard.d.ts.map +1 -1
  131. package/lib/src/embed/liveboard.js +3 -3
  132. package/lib/src/embed/liveboard.js.map +1 -1
  133. package/lib/src/embed/liveboard.spec.js +20 -1
  134. package/lib/src/embed/liveboard.spec.js.map +1 -1
  135. package/lib/src/embed/pinboard.spec.js +20 -1
  136. package/lib/src/embed/pinboard.spec.js.map +1 -1
  137. package/lib/src/embed/sage.d.ts +1 -1
  138. package/lib/src/embed/sage.d.ts.map +1 -1
  139. package/lib/src/embed/sage.js +2 -2
  140. package/lib/src/embed/sage.js.map +1 -1
  141. package/lib/src/embed/search-bar.d.ts +37 -6
  142. package/lib/src/embed/search-bar.d.ts.map +1 -1
  143. package/lib/src/embed/search-bar.js +2 -2
  144. package/lib/src/embed/search-bar.js.map +1 -1
  145. package/lib/src/embed/search.d.ts +80 -1
  146. package/lib/src/embed/search.d.ts.map +1 -1
  147. package/lib/src/embed/search.js +3 -3
  148. package/lib/src/embed/search.js.map +1 -1
  149. package/lib/src/embed/search.spec.js +25 -1
  150. package/lib/src/embed/search.spec.js.map +1 -1
  151. package/lib/src/embed/ts-embed-trigger.spec.d.ts +2 -0
  152. package/lib/src/embed/ts-embed-trigger.spec.d.ts.map +1 -0
  153. package/lib/src/embed/ts-embed-trigger.spec.js +32 -0
  154. package/lib/src/embed/ts-embed-trigger.spec.js.map +1 -0
  155. package/lib/src/embed/ts-embed.d.ts +1 -1
  156. package/lib/src/embed/ts-embed.d.ts.map +1 -1
  157. package/lib/src/embed/ts-embed.js +14 -11
  158. package/lib/src/embed/ts-embed.js.map +1 -1
  159. package/lib/src/embed/ts-embed.spec.js +44 -11
  160. package/lib/src/embed/ts-embed.spec.js.map +1 -1
  161. package/lib/src/index.d.ts +5 -3
  162. package/lib/src/index.d.ts.map +1 -1
  163. package/lib/src/index.js +3 -3
  164. package/lib/src/index.js.map +1 -1
  165. package/lib/src/mixpanel-service.d.ts +1 -0
  166. package/lib/src/mixpanel-service.d.ts.map +1 -1
  167. package/lib/src/mixpanel-service.js +1 -0
  168. package/lib/src/mixpanel-service.js.map +1 -1
  169. package/lib/src/react/all-types-export.d.ts +1 -1
  170. package/lib/src/react/all-types-export.d.ts.map +1 -1
  171. package/lib/src/react/all-types-export.js +1 -1
  172. package/lib/src/react/all-types-export.js.map +1 -1
  173. package/lib/src/react/index.spec.js +1 -1
  174. package/lib/src/react/index.spec.js.map +1 -1
  175. package/lib/src/test/test-utils.d.ts +1 -0
  176. package/lib/src/test/test-utils.d.ts.map +1 -1
  177. package/lib/src/test/test-utils.js +8 -0
  178. package/lib/src/test/test-utils.js.map +1 -1
  179. package/lib/src/tokenizedFetch.d.ts +9 -0
  180. package/lib/src/tokenizedFetch.d.ts.map +1 -1
  181. package/lib/src/tokenizedFetch.js +9 -0
  182. package/lib/src/tokenizedFetch.js.map +1 -1
  183. package/lib/src/types.d.ts +295 -44
  184. package/lib/src/types.d.ts.map +1 -1
  185. package/lib/src/types.js +119 -21
  186. package/lib/src/types.js.map +1 -1
  187. package/lib/src/utils/authService/authService.d.ts.map +1 -1
  188. package/lib/src/utils/authService/authService.js +8 -2
  189. package/lib/src/utils/authService/authService.js.map +1 -1
  190. package/lib/src/utils/authService/authService.spec.js +22 -0
  191. package/lib/src/utils/authService/authService.spec.js.map +1 -1
  192. package/lib/src/utils/graphql/answerService/answerService.d.ts +56 -2
  193. package/lib/src/utils/graphql/answerService/answerService.d.ts.map +1 -1
  194. package/lib/src/utils/graphql/answerService/answerService.js +55 -0
  195. package/lib/src/utils/graphql/answerService/answerService.js.map +1 -1
  196. package/lib/src/visual-embed-sdk.d.ts +778 -69
  197. package/package.json +2 -2
  198. package/src/embed/app.spec.ts +24 -1
  199. package/src/embed/app.ts +148 -13
  200. package/src/embed/base.ts +1 -5
  201. package/src/embed/embed.spec.ts +0 -18
  202. package/src/embed/liveboard.spec.ts +24 -1
  203. package/src/embed/liveboard.ts +121 -15
  204. package/src/embed/pinboard.spec.ts +24 -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 +29 -1
  208. package/src/embed/search.ts +82 -3
  209. package/src/embed/ts-embed-trigger.spec.ts +39 -0
  210. package/src/embed/ts-embed.spec.ts +46 -11
  211. package/src/embed/ts-embed.ts +18 -14
  212. package/src/index.ts +12 -1
  213. package/src/mixpanel-service.ts +1 -0
  214. package/src/react/all-types-export.ts +1 -0
  215. package/src/react/index.spec.tsx +1 -0
  216. package/src/test/test-utils.ts +9 -0
  217. package/src/tokenizedFetch.ts +9 -0
  218. package/src/types.ts +296 -42
  219. package/src/utils/authService/authService.spec.ts +27 -0
  220. package/src/utils/authService/authService.ts +13 -12
  221. package/src/utils/graphql/answerService/answerService.ts +56 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thoughtspot/visual-embed-sdk",
3
- "version": "1.27.9",
3
+ "version": "1.27.11",
4
4
  "description": "ThoughtSpot Embed SDK",
5
5
  "module": "lib/src/index.js",
6
6
  "main": "dist/tsembed.js",
@@ -38,7 +38,7 @@
38
38
  "size-limit": [
39
39
  {
40
40
  "path": "dist/tsembed.js",
41
- "limit": "44 kB"
41
+ "limit": "45 kB"
42
42
  }
43
43
  ],
44
44
  "scripts": {
@@ -213,6 +213,7 @@ describe('App embed tests', () => {
213
213
  values: [1000],
214
214
  },
215
215
  ],
216
+ excludeRuntimeFiltersfromURL: false,
216
217
  } as AppViewConfig);
217
218
 
218
219
  appEmbed.render();
@@ -224,7 +225,7 @@ describe('App embed tests', () => {
224
225
  });
225
226
  });
226
227
 
227
- test('should not apply runtime filters if excludeRuntimeFiltersfromURL is true', async () => {
228
+ test('should not append runtime filters in URL if excludeRuntimeFiltersfromURL is true', async () => {
228
229
  const appEmbed = new AppEmbed(getRootEl(), {
229
230
  ...defaultViewConfig,
230
231
  showPrimaryNavbar: true,
@@ -247,6 +248,28 @@ describe('App embed tests', () => {
247
248
  });
248
249
  });
249
250
 
251
+ test('should not append runtime filters in URL if excludeRuntimeFiltersfromURL is undefined', async () => {
252
+ const appEmbed = new AppEmbed(getRootEl(), {
253
+ ...defaultViewConfig,
254
+ showPrimaryNavbar: true,
255
+ runtimeFilters: [
256
+ {
257
+ columnName: 'sales',
258
+ operator: RuntimeFilterOp.EQ,
259
+ values: [1000],
260
+ },
261
+ ],
262
+ } as AppViewConfig);
263
+
264
+ appEmbed.render();
265
+ await executeAfterWait(() => {
266
+ expectUrlMatchesWithParams(
267
+ getIFrameSrc(),
268
+ `http://${thoughtSpotHost}/?embedApp=true&primaryNavHidden=false&profileAndHelpInNavBarHidden=false${defaultParams}${defaultParamsPost}#/home`,
269
+ );
270
+ });
271
+ });
272
+
250
273
  test('should disable and hide actions', async () => {
251
274
  const appEmbed = new AppEmbed(getRootEl(), {
252
275
  ...defaultViewConfig,
package/src/embed/app.ts CHANGED
@@ -9,11 +9,11 @@
9
9
  * @author Ayon Ghosh <ayon.ghosh@thoughtspot.com>
10
10
  */
11
11
 
12
- import { logger } from '../utils/logger';
13
- import { getQueryParamString } from '../utils';
14
12
  import {
15
- Param, DOMSelector, HostEvent, ViewConfig, EmbedEvent, MessagePayload,
13
+ DOMSelector, EmbedEvent, HostEvent, MessagePayload, Param, ViewConfig,
16
14
  } from '../types';
15
+ import { getQueryParamString } from '../utils';
16
+ import { logger } from '../utils/logger';
17
17
  import { V1Embed } from './ts-embed';
18
18
 
19
19
  /**
@@ -61,6 +61,16 @@ export interface AppViewConfig extends Omit<ViewConfig, 'visibleTabs'> {
61
61
  * If true, the top navigation bar within the ThoughtSpot app
62
62
  * is displayed. By default, the navigation bar is hidden.
63
63
  * This flag also controls the homepage left navigation bar.
64
+ *
65
+ * @default true
66
+ * @version SDK: 1.2.0 | Thoughtspot: 8.4.0.cl
67
+ * @example
68
+ * ```js
69
+ * const embed = new AppEmbed('#tsEmbed', {
70
+ * ... // other options
71
+ * showPrimaryNavbar:true,
72
+ * })
73
+ * ```
64
74
  */
65
75
  showPrimaryNavbar?: boolean;
66
76
  /**
@@ -69,23 +79,73 @@ export interface AppViewConfig extends Omit<ViewConfig, 'visibleTabs'> {
69
79
  * nav-bars are visible, this flag will only hide the homepage left nav-bar.
70
80
  * The showPrimaryNavbar flag takes precedence over the hideHomepageLeftNav.
71
81
  *
82
+ * **Note**: This option does not apply to the classic homepage.
83
+ * To access the updated modular homepage, set
84
+ * `modularHomeExperience` to `true` (available in Early Access from 9.12 forward).
85
+ *
72
86
  * @default false
73
- * @version SDK: 1.27.0 | Thoughtspot: 9.8.0.cl
87
+ * @version SDK: 1.27.9 | Thoughtspot: 9.12.0.cl
88
+ * @example
89
+ * ```js
90
+ * const embed = new AppEmbed('#tsEmbed', {
91
+ * ... // other options
92
+ * hideHomepageLeftNav : true,
93
+ * })
94
+ * ```
74
95
  */
75
96
  hideHomepageLeftNav?: boolean;
76
97
  /**
77
98
  * Control the visibility of the help (?) and profile buttons on the
78
99
  * Global nav-bar. By default, these buttons are visible on the nav-bar.
100
+ *
101
+ * @default false
102
+ * @version SDK: 1.2.0 | Thoughtspot: 8.4.0.cl
103
+ * @example
104
+ * ```js
105
+ * const embed = new AppEmbed('#tsEmbed', {
106
+ * ... // other options
107
+ * disableProfileAndHelp: true,
108
+ * })
109
+ * ```
79
110
  */
80
111
  disableProfileAndHelp?: boolean;
81
112
  /**
82
113
  * Control the visibility of the application switcher button on the nav-bar.
83
114
  * By default, the application switcher is shown.
115
+ *
116
+ * **Note**: This option does not apply to the classic homepage.
117
+ * To access the updated modular homepage, set
118
+ * `modularHomeExperience` to `true` (available in Early Access from 9.12 forward).
119
+ *
120
+ * @default false
121
+ * @version SDK: 1.2.0 | Thoughtspot: 8.4.0.cl
122
+ * @example
123
+ * ```js
124
+ * const embed = new AppEmbed('#tsEmbed', {
125
+ * ... // other options
126
+ * hideApplicationSwitcher : true,
127
+ * })
128
+ * ```
84
129
  */
85
130
  hideApplicationSwitcher?: boolean;
86
131
  /**
87
132
  * Control the visibility of the Org switcher button on the nav-bar.
88
133
  * By default, the Org switcher button is shown.
134
+ *
135
+ * **Note**: This option does not apply to the classic homepage.
136
+ * To access the updated modular homepage, set
137
+ * `modularHomeExperience` to `true` (available in Early Access from 9.12 forward).
138
+ *
139
+ *
140
+ * @default true
141
+ * @version SDK: 1.2.0 | Thoughtspot: 9.4.0.cl
142
+ * @example
143
+ * ```js
144
+ * const embed = new AppEmbed('#tsEmbed', {
145
+ * ... // other options
146
+ * hideOrgSwitcher : true,
147
+ * })
148
+ * ```
89
149
  */
90
150
  hideOrgSwitcher?: boolean;
91
151
  /**
@@ -97,9 +157,13 @@ export interface AppViewConfig extends Omit<ViewConfig, 'visibleTabs'> {
97
157
  * For eg, if you want the component to open to a specific Liveboard
98
158
  * you could set the path to `pinboard/<liveboardId>/tab/<tabId>`.
99
159
  *
160
+ * @version SDK: 1.1.0 | Thoughtspot: 9.4.0.cl
100
161
  * @example
101
- * ```
102
- * <AppEmbed path="pinboard/1234/tab/7464" />
162
+ * ```js
163
+ * const embed = new AppEmbed('#tsEmbed', {
164
+ * ... // other options
165
+ * path:"pinboard/1234/tab/7464"
166
+ * })
103
167
  * ```
104
168
  */
105
169
  path?: string;
@@ -109,16 +173,46 @@ export interface AppViewConfig extends Omit<ViewConfig, 'visibleTabs'> {
109
173
  *
110
174
  * Use this to open to particular page in the app. To open to a specific
111
175
  * path within the app, use the `path` attribute which is more flexible.
176
+ *
177
+ * @version SDK: 1.1.0 | Thoughtspot: 9.4.0.cl
178
+ * @example
179
+ * ```js
180
+ * const embed = new AppEmbed('#tsEmbed', {
181
+ * ... // other options
182
+ * pageId : Page.Answers | Page.Data
183
+ * })
184
+ * ```
112
185
  */
113
186
  pageId?: Page;
114
187
  /**
115
188
  * This puts a filter tag on the application. All metadata lists in the
116
189
  * application, such as Liveboards and answers, would be filtered by this
117
190
  * tag.
191
+ *
192
+ * @version SDK: 1.1.0 | Thoughtspot: 9.4.0.cl
193
+ * @example
194
+ * ```js
195
+ * const embed = new AppEmbed('#tsEmbed', {
196
+ * ... // other options
197
+ * tag:'value',
198
+ * })
199
+ * ```
118
200
  */
119
201
  tag?: string;
120
202
  /**
121
203
  * The array of GUIDs to be hidden
204
+ *
205
+ * @version SDK: 1.11.0 | ThoughtSpot: 8.3.0.cl, 8.4.1-sw
206
+ * @example
207
+ * ```js
208
+ * const embed = new AppEmbed('#tsEmbed', {
209
+ * ... // other options
210
+ * hideObjects: [
211
+ * '430496d6-6903-4601-937e-2c691821af3c',
212
+ * 'f547ec54-2a37-4516-a222-2b06719af726'
213
+ * ]
214
+ * })
215
+ * ```
122
216
  */
123
217
  hideObjects?: string[];
124
218
  /**
@@ -132,7 +226,15 @@ export interface AppViewConfig extends Omit<ViewConfig, 'visibleTabs'> {
132
226
  /**
133
227
  * If set to true, the Search Assist feature is enabled.
134
228
  *
229
+ * @default true
135
230
  * @version SDK: 1.13.0 | ThoughtSpot: 8.5.0.cl, 8.8.1-sw
231
+ * @example
232
+ * ```js
233
+ * const embed = new AppEmbed('#tsEmbed', {
234
+ * ... // other options
235
+ * enableSearchAssist: true,
236
+ * })
237
+ * ```
136
238
  */
137
239
  enableSearchAssist?: boolean;
138
240
  /**
@@ -140,6 +242,13 @@ export interface AppViewConfig extends Omit<ViewConfig, 'visibleTabs'> {
140
242
  * according to the height of the pages which support fullHeight mode.
141
243
  *
142
244
  * @version SDK: 1.21.0 | ThoughtSpot: 9.4.0.cl, 9.4.0-sw
245
+ * @example
246
+ * ```js
247
+ * const embed = new AppEmbed('#tsEmbed', {
248
+ * ... // other options
249
+ * fullHeight: true,
250
+ * })
251
+ * ```
143
252
  */
144
253
  fullHeight?: boolean;
145
254
  /**
@@ -155,6 +264,13 @@ export interface AppViewConfig extends Omit<ViewConfig, 'visibleTabs'> {
155
264
  *
156
265
  * @version SDK: 1.26.0 | Thoughtspot: 9.7.0.cl
157
266
  * @default false
267
+ * @example
268
+ * ```js
269
+ * const embed = new AppEmbed('#tsEmbed', {
270
+ * ... // other options
271
+ * hideLiveboardHeader : true,
272
+ * })
273
+ * ```
158
274
  */
159
275
  hideLiveboardHeader?: boolean;
160
276
  /**
@@ -162,6 +278,13 @@ export interface AppViewConfig extends Omit<ViewConfig, 'visibleTabs'> {
162
278
  *
163
279
  * @version SDK: 1.26.0 | Thoughtspot: 9.7.0.cl
164
280
  * @default false
281
+ * @example
282
+ * ```js
283
+ * const embed = new AppEmbed('#tsEmbed', {
284
+ * ... // other options
285
+ * showLiveboardTitle:true,
286
+ * })
287
+ * ```
165
288
  */
166
289
  showLiveboardTitle?: boolean;
167
290
  /**
@@ -169,13 +292,27 @@ export interface AppViewConfig extends Omit<ViewConfig, 'visibleTabs'> {
169
292
  *
170
293
  * @version SDK: 1.26.0 | Thoughtspot: 9.7.0.cl
171
294
  * @default false
295
+ * @example
296
+ * ```js
297
+ * const embed = new AppEmbed('#tsEmbed', {
298
+ * ... // other options
299
+ * showLiveboardDescription:true,
300
+ * })
301
+ * ```
172
302
  */
173
303
  showLiveboardDescription?: boolean;
174
304
  /**
175
- * Flag to control new Modular Home experience
305
+ * Flag to control new Modular Home experience.
176
306
  *
177
307
  * @default false
178
- * @version SDK: 1.27.0 | Thoughtspot: 9.8.0.cl
308
+ * @version SDK: 1.27.9 | Thoughtspot: 9.12.0.cl
309
+ * @example
310
+ * ```js
311
+ * const embed = new AppEmbed('#tsEmbed', {
312
+ * ... // other options
313
+ * modularHomeExperience : true,
314
+ * })
315
+ * ```
179
316
  */
180
317
  modularHomeExperience?: boolean;
181
318
  /**
@@ -295,9 +432,7 @@ export class AppEmbed extends V1Embed {
295
432
  * @param pageId The ID of the page to be embedded.
296
433
  */
297
434
  public getIFrameSrc(): string {
298
- const {
299
- pageId, path, modularHomeExperience,
300
- } = this.viewConfig;
435
+ const { pageId, path, modularHomeExperience } = this.viewConfig;
301
436
  const pageRoute = this.formatPath(path) || this.getPageRoute(pageId, modularHomeExperience);
302
437
  let url = `${this.getRootIframeSrc()}/${pageRoute}`;
303
438
 
@@ -414,10 +549,10 @@ export class AppEmbed extends V1Embed {
414
549
  * @param renderOptions An object containing the page ID
415
550
  * to be embedded.
416
551
  */
417
- public render(): AppEmbed {
552
+ public async render(): Promise<AppEmbed> {
418
553
  super.render();
419
554
  const src = this.getIFrameSrc();
420
- this.renderV1Embed(src);
555
+ await this.renderV1Embed(src);
421
556
 
422
557
  return this;
423
558
  }
package/src/embed/base.ts CHANGED
@@ -133,10 +133,6 @@ function sanity(embedConfig: EmbedConfig) {
133
133
  throw new Error('ThoughtSpot host not provided');
134
134
  }
135
135
  if (embedConfig.authType === AuthType.TrustedAuthToken) {
136
- if (!embedConfig.username) {
137
- throw new Error('Username not provided with Trusted auth');
138
- }
139
-
140
136
  if (!embedConfig.authEndpoint && typeof embedConfig.getAuthToken !== 'function') {
141
137
  throw new Error('Trusted auth should provide either authEndpoint or getAuthToken');
142
138
  }
@@ -253,7 +249,7 @@ export const renderInQueue = (fn: (next?: (val?: any) => void) => Promise<any>):
253
249
  return renderQueue;
254
250
  }
255
251
  // Sending an empty function to keep it consistent with the above usage.
256
- return fn(() => {}); // eslint-disable-line @typescript-eslint/no-empty-function
252
+ return fn(() => { }); // eslint-disable-line @typescript-eslint/no-empty-function
257
253
  };
258
254
 
259
255
  /**
@@ -50,24 +50,6 @@ describe('test view config', () => {
50
50
  expect(iframe.style.height).toBe(`${height}px`);
51
51
  });
52
52
  });
53
-
54
- test('trying to register event handler after render should throw error', async () => {
55
- spyOn(logger, 'error');
56
- const onErrorSpy = jest.fn();
57
- const searchEmbed = new SearchEmbed(getRootEl(), defaultViewConfig);
58
- searchEmbed
59
- .on(EmbedEvent.Error, onErrorSpy)
60
- .render()
61
- .on(EmbedEvent.Load, () => null);
62
- await executeAfterWait(() => {
63
- expect(onErrorSpy).toHaveBeenCalledWith(
64
- {
65
- error: 'Please register event handlers before calling render',
66
- },
67
- expect.any(Function),
68
- );
69
- }, EVENT_WAIT_TIME);
70
- });
71
53
  });
72
54
 
73
55
  describe('Custom CSS Url', () => {
@@ -182,6 +182,7 @@ describe('Liveboard/viz embed tests', () => {
182
182
  values: [1000],
183
183
  },
184
184
  ],
185
+ excludeRuntimeFiltersfromURL: false,
185
186
  } as LiveboardViewConfig);
186
187
  liveboardEmbed.render();
187
188
  await executeAfterWait(() => {
@@ -208,7 +209,29 @@ describe('Liveboard/viz embed tests', () => {
208
209
  });
209
210
  });
210
211
 
211
- test('should not apply runtime filters if excludeRuntimeFiltersfromURL is true', async () => {
212
+ test('should not append runtime filters in URL if excludeRuntimeFiltersfromURL is true', async () => {
213
+ const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
214
+ ...defaultViewConfig,
215
+ liveboardId,
216
+ vizId,
217
+ runtimeFilters: [
218
+ {
219
+ columnName: 'sales',
220
+ operator: RuntimeFilterOp.EQ,
221
+ values: [1000],
222
+ },
223
+ ],
224
+ } as LiveboardViewConfig);
225
+ liveboardEmbed.render();
226
+ await executeAfterWait(() => {
227
+ expectUrlMatchesWithParams(
228
+ getIFrameSrc(),
229
+ `http://${thoughtSpotHost}/?embedApp=true${defaultParams}${prefixParamsVizEmbed}#/embed/viz/${liveboardId}/${vizId}`,
230
+ );
231
+ });
232
+ });
233
+
234
+ test('should not append runtime filters in URL if excludeRuntimeFiltersfromURL is undefined', async () => {
212
235
  const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
213
236
  ...defaultViewConfig,
214
237
  liveboardId,
@@ -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 {}