@thoughtspot/visual-embed-sdk 1.29.1-alpha.0 → 1.29.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 (347) hide show
  1. package/README.md +1 -1
  2. package/cjs/package.json +2 -1
  3. package/cjs/src/auth.d.ts +0 -15
  4. package/cjs/src/auth.d.ts.map +1 -1
  5. package/cjs/src/auth.js +2 -13
  6. package/cjs/src/auth.js.map +1 -1
  7. package/cjs/src/authToken.d.ts +1 -2
  8. package/cjs/src/authToken.d.ts.map +1 -1
  9. package/cjs/src/authToken.js +9 -3
  10. package/cjs/src/authToken.js.map +1 -1
  11. package/cjs/src/authToken.spec.d.ts +2 -0
  12. package/cjs/src/authToken.spec.d.ts.map +1 -0
  13. package/cjs/src/authToken.spec.js +29 -0
  14. package/cjs/src/authToken.spec.js.map +1 -0
  15. package/cjs/src/config.d.ts +0 -1
  16. package/cjs/src/config.d.ts.map +1 -1
  17. package/cjs/src/config.js +0 -2
  18. package/cjs/src/config.js.map +1 -1
  19. package/cjs/src/embed/app.d.ts +73 -43
  20. package/cjs/src/embed/app.d.ts.map +1 -1
  21. package/cjs/src/embed/app.js +45 -12
  22. package/cjs/src/embed/app.js.map +1 -1
  23. package/cjs/src/embed/app.spec.js +21 -0
  24. package/cjs/src/embed/app.spec.js.map +1 -1
  25. package/cjs/src/embed/base.d.ts +1 -7
  26. package/cjs/src/embed/base.d.ts.map +1 -1
  27. package/cjs/src/embed/base.js +9 -15
  28. package/cjs/src/embed/base.js.map +1 -1
  29. package/cjs/src/embed/base.spec.js +3 -1
  30. package/cjs/src/embed/base.spec.js.map +1 -1
  31. package/cjs/src/embed/embedConfig.d.ts +0 -2
  32. package/cjs/src/embed/embedConfig.d.ts.map +1 -1
  33. package/cjs/src/embed/embedConfig.js +0 -2
  34. package/cjs/src/embed/embedConfig.js.map +1 -1
  35. package/cjs/src/embed/liveboard.d.ts +14 -28
  36. package/cjs/src/embed/liveboard.d.ts.map +1 -1
  37. package/cjs/src/embed/liveboard.js +9 -9
  38. package/cjs/src/embed/liveboard.js.map +1 -1
  39. package/cjs/src/embed/liveboard.spec.js +79 -4
  40. package/cjs/src/embed/liveboard.spec.js.map +1 -1
  41. package/cjs/src/embed/sage.d.ts +5 -21
  42. package/cjs/src/embed/sage.d.ts.map +1 -1
  43. package/cjs/src/embed/sage.js +2 -23
  44. package/cjs/src/embed/sage.js.map +1 -1
  45. package/cjs/src/embed/sage.spec.js +20 -31
  46. package/cjs/src/embed/sage.spec.js.map +1 -1
  47. package/cjs/src/embed/search-bar.d.ts +0 -11
  48. package/cjs/src/embed/search-bar.d.ts.map +1 -1
  49. package/cjs/src/embed/search-bar.js +0 -2
  50. package/cjs/src/embed/search-bar.js.map +1 -1
  51. package/cjs/src/embed/search.d.ts +60 -29
  52. package/cjs/src/embed/search.d.ts.map +1 -1
  53. package/cjs/src/embed/search.js +43 -9
  54. package/cjs/src/embed/search.js.map +1 -1
  55. package/cjs/src/embed/search.spec.js +34 -0
  56. package/cjs/src/embed/search.spec.js.map +1 -1
  57. package/cjs/src/embed/ts-embed.d.ts +1 -31
  58. package/cjs/src/embed/ts-embed.d.ts.map +1 -1
  59. package/cjs/src/embed/ts-embed.js +34 -43
  60. package/cjs/src/embed/ts-embed.js.map +1 -1
  61. package/cjs/src/embed/ts-embed.spec.js +83 -9
  62. package/cjs/src/embed/ts-embed.spec.js.map +1 -1
  63. package/cjs/src/errors.js +1 -1
  64. package/cjs/src/errors.js.map +1 -1
  65. package/cjs/src/index.d.ts +0 -1
  66. package/cjs/src/index.d.ts.map +1 -1
  67. package/cjs/src/index.js +0 -1
  68. package/cjs/src/index.js.map +1 -1
  69. package/cjs/src/mixpanel-service.d.ts +0 -1
  70. package/cjs/src/mixpanel-service.d.ts.map +1 -1
  71. package/cjs/src/mixpanel-service.js +0 -1
  72. package/cjs/src/mixpanel-service.js.map +1 -1
  73. package/cjs/src/react/index.d.ts +1 -12
  74. package/cjs/src/react/index.d.ts.map +1 -1
  75. package/cjs/src/react/index.js +1 -11
  76. package/cjs/src/react/index.js.map +1 -1
  77. package/cjs/src/react/index.spec.js +15 -3
  78. package/cjs/src/react/index.spec.js.map +1 -1
  79. package/cjs/src/test/test-utils.d.ts +0 -2
  80. package/cjs/src/test/test-utils.d.ts.map +1 -1
  81. package/cjs/src/test/test-utils.js +0 -2
  82. package/cjs/src/test/test-utils.js.map +1 -1
  83. package/cjs/src/tokenizedFetch.d.ts +0 -1
  84. package/cjs/src/tokenizedFetch.d.ts.map +1 -1
  85. package/cjs/src/tokenizedFetch.js +0 -1
  86. package/cjs/src/tokenizedFetch.js.map +1 -1
  87. package/cjs/src/types.d.ts +245 -366
  88. package/cjs/src/types.d.ts.map +1 -1
  89. package/cjs/src/types.js +196 -296
  90. package/cjs/src/types.js.map +1 -1
  91. package/cjs/src/utils/authService/authService.d.ts +0 -1
  92. package/cjs/src/utils/authService/authService.d.ts.map +1 -1
  93. package/cjs/src/utils/authService/authService.js +0 -1
  94. package/cjs/src/utils/authService/authService.js.map +1 -1
  95. package/cjs/src/utils/graphql/answerService/answer-queries.d.ts +2 -0
  96. package/cjs/src/utils/graphql/answerService/answer-queries.d.ts.map +1 -1
  97. package/cjs/src/utils/graphql/answerService/answer-queries.js +57 -1
  98. package/cjs/src/utils/graphql/answerService/answer-queries.js.map +1 -1
  99. package/cjs/src/utils/graphql/answerService/answerService.d.ts +37 -12
  100. package/cjs/src/utils/graphql/answerService/answerService.d.ts.map +1 -1
  101. package/cjs/src/utils/graphql/answerService/answerService.js +70 -14
  102. package/cjs/src/utils/graphql/answerService/answerService.js.map +1 -1
  103. package/cjs/src/utils/graphql/answerService/answerService.spec.js +78 -0
  104. package/cjs/src/utils/graphql/answerService/answerService.spec.js.map +1 -1
  105. package/cjs/src/utils/logger.d.ts.map +1 -1
  106. package/cjs/src/utils/logger.js +3 -5
  107. package/cjs/src/utils/logger.js.map +1 -1
  108. package/cjs/src/utils/processData.js +1 -1
  109. package/cjs/src/utils/processData.js.map +1 -1
  110. package/cjs/src/utils/processData.spec.js +1 -1
  111. package/cjs/src/utils/processData.spec.js.map +1 -1
  112. package/cjs/src/utils/processTrigger.d.ts +0 -1
  113. package/cjs/src/utils/processTrigger.d.ts.map +1 -1
  114. package/cjs/src/utils/processTrigger.js +0 -2
  115. package/cjs/src/utils/processTrigger.js.map +1 -1
  116. package/cjs/src/utils.d.ts +2 -10
  117. package/cjs/src/utils.d.ts.map +1 -1
  118. package/cjs/src/utils.js +19 -13
  119. package/cjs/src/utils.js.map +1 -1
  120. package/dist/src/auth.d.ts +0 -15
  121. package/dist/src/auth.d.ts.map +1 -1
  122. package/dist/src/authToken.d.ts +1 -2
  123. package/dist/src/authToken.d.ts.map +1 -1
  124. package/dist/src/authToken.spec.d.ts +2 -0
  125. package/dist/src/authToken.spec.d.ts.map +1 -0
  126. package/dist/src/config.d.ts +0 -1
  127. package/dist/src/config.d.ts.map +1 -1
  128. package/dist/src/embed/app.d.ts +73 -43
  129. package/dist/src/embed/app.d.ts.map +1 -1
  130. package/dist/src/embed/base.d.ts +1 -7
  131. package/dist/src/embed/base.d.ts.map +1 -1
  132. package/dist/src/embed/embedConfig.d.ts +0 -2
  133. package/dist/src/embed/embedConfig.d.ts.map +1 -1
  134. package/dist/src/embed/liveboard.d.ts +14 -28
  135. package/dist/src/embed/liveboard.d.ts.map +1 -1
  136. package/dist/src/embed/sage.d.ts +5 -21
  137. package/dist/src/embed/sage.d.ts.map +1 -1
  138. package/dist/src/embed/search-bar.d.ts +0 -11
  139. package/dist/src/embed/search-bar.d.ts.map +1 -1
  140. package/dist/src/embed/search.d.ts +60 -29
  141. package/dist/src/embed/search.d.ts.map +1 -1
  142. package/dist/src/embed/ts-embed.d.ts +1 -31
  143. package/dist/src/embed/ts-embed.d.ts.map +1 -1
  144. package/dist/src/index.d.ts +0 -1
  145. package/dist/src/index.d.ts.map +1 -1
  146. package/dist/src/mixpanel-service.d.ts +0 -1
  147. package/dist/src/mixpanel-service.d.ts.map +1 -1
  148. package/dist/src/react/index.d.ts +1 -12
  149. package/dist/src/react/index.d.ts.map +1 -1
  150. package/dist/src/test/test-utils.d.ts +0 -2
  151. package/dist/src/test/test-utils.d.ts.map +1 -1
  152. package/dist/src/tokenizedFetch.d.ts +0 -1
  153. package/dist/src/tokenizedFetch.d.ts.map +1 -1
  154. package/dist/src/types.d.ts +245 -366
  155. package/dist/src/types.d.ts.map +1 -1
  156. package/dist/src/utils/authService/authService.d.ts +0 -1
  157. package/dist/src/utils/authService/authService.d.ts.map +1 -1
  158. package/dist/src/utils/graphql/answerService/answer-queries.d.ts +2 -0
  159. package/dist/src/utils/graphql/answerService/answer-queries.d.ts.map +1 -1
  160. package/dist/src/utils/graphql/answerService/answerService.d.ts +37 -12
  161. package/dist/src/utils/graphql/answerService/answerService.d.ts.map +1 -1
  162. package/dist/src/utils/logger.d.ts.map +1 -1
  163. package/dist/src/utils/processTrigger.d.ts +0 -1
  164. package/dist/src/utils/processTrigger.d.ts.map +1 -1
  165. package/dist/src/utils.d.ts +2 -10
  166. package/dist/src/utils.d.ts.map +1 -1
  167. package/dist/tsembed-react.es.js +2331 -2358
  168. package/dist/tsembed-react.js +3475 -3498
  169. package/dist/tsembed.es.js +3690 -3922
  170. package/dist/tsembed.js +15218 -15442
  171. package/dist/visual-embed-sdk-react-full.d.ts +431 -564
  172. package/dist/visual-embed-sdk-react.d.ts +434 -567
  173. package/dist/visual-embed-sdk.d.ts +430 -552
  174. package/lib/package.json +2 -1
  175. package/lib/src/auth.d.ts +0 -15
  176. package/lib/src/auth.d.ts.map +1 -1
  177. package/lib/src/auth.js +3 -14
  178. package/lib/src/auth.js.map +1 -1
  179. package/lib/src/authToken.d.ts +1 -2
  180. package/lib/src/authToken.d.ts.map +1 -1
  181. package/lib/src/authToken.js +9 -3
  182. package/lib/src/authToken.js.map +1 -1
  183. package/lib/src/authToken.spec.d.ts +2 -0
  184. package/lib/src/authToken.spec.d.ts.map +1 -0
  185. package/lib/src/authToken.spec.js +26 -0
  186. package/lib/src/authToken.spec.js.map +1 -0
  187. package/lib/src/config.d.ts +0 -1
  188. package/lib/src/config.d.ts.map +1 -1
  189. package/lib/src/config.js +0 -2
  190. package/lib/src/config.js.map +1 -1
  191. package/lib/src/embed/app.d.ts +73 -43
  192. package/lib/src/embed/app.d.ts.map +1 -1
  193. package/lib/src/embed/app.js +44 -11
  194. package/lib/src/embed/app.js.map +1 -1
  195. package/lib/src/embed/app.spec.js +22 -1
  196. package/lib/src/embed/app.spec.js.map +1 -1
  197. package/lib/src/embed/base.d.ts +1 -7
  198. package/lib/src/embed/base.d.ts.map +1 -1
  199. package/lib/src/embed/base.js +8 -14
  200. package/lib/src/embed/base.js.map +1 -1
  201. package/lib/src/embed/base.spec.js +4 -2
  202. package/lib/src/embed/base.spec.js.map +1 -1
  203. package/lib/src/embed/embedConfig.d.ts +0 -2
  204. package/lib/src/embed/embedConfig.d.ts.map +1 -1
  205. package/lib/src/embed/embedConfig.js +0 -2
  206. package/lib/src/embed/embedConfig.js.map +1 -1
  207. package/lib/src/embed/liveboard.d.ts +14 -28
  208. package/lib/src/embed/liveboard.d.ts.map +1 -1
  209. package/lib/src/embed/liveboard.js +10 -10
  210. package/lib/src/embed/liveboard.js.map +1 -1
  211. package/lib/src/embed/liveboard.spec.js +79 -4
  212. package/lib/src/embed/liveboard.spec.js.map +1 -1
  213. package/lib/src/embed/sage.d.ts +5 -21
  214. package/lib/src/embed/sage.d.ts.map +1 -1
  215. package/lib/src/embed/sage.js +2 -23
  216. package/lib/src/embed/sage.js.map +1 -1
  217. package/lib/src/embed/sage.spec.js +20 -31
  218. package/lib/src/embed/sage.spec.js.map +1 -1
  219. package/lib/src/embed/search-bar.d.ts +0 -11
  220. package/lib/src/embed/search-bar.d.ts.map +1 -1
  221. package/lib/src/embed/search-bar.js +0 -2
  222. package/lib/src/embed/search-bar.js.map +1 -1
  223. package/lib/src/embed/search.d.ts +60 -29
  224. package/lib/src/embed/search.d.ts.map +1 -1
  225. package/lib/src/embed/search.js +43 -9
  226. package/lib/src/embed/search.js.map +1 -1
  227. package/lib/src/embed/search.spec.js +35 -1
  228. package/lib/src/embed/search.spec.js.map +1 -1
  229. package/lib/src/embed/ts-embed.d.ts +1 -31
  230. package/lib/src/embed/ts-embed.d.ts.map +1 -1
  231. package/lib/src/embed/ts-embed.js +37 -46
  232. package/lib/src/embed/ts-embed.js.map +1 -1
  233. package/lib/src/embed/ts-embed.spec.js +83 -9
  234. package/lib/src/embed/ts-embed.spec.js.map +1 -1
  235. package/lib/src/errors.js +1 -1
  236. package/lib/src/errors.js.map +1 -1
  237. package/lib/src/index.d.ts +0 -1
  238. package/lib/src/index.d.ts.map +1 -1
  239. package/lib/src/index.js +0 -1
  240. package/lib/src/index.js.map +1 -1
  241. package/lib/src/mixpanel-service.d.ts +0 -1
  242. package/lib/src/mixpanel-service.d.ts.map +1 -1
  243. package/lib/src/mixpanel-service.js +0 -1
  244. package/lib/src/mixpanel-service.js.map +1 -1
  245. package/lib/src/react/index.d.ts +1 -12
  246. package/lib/src/react/index.d.ts.map +1 -1
  247. package/lib/src/react/index.js +1 -11
  248. package/lib/src/react/index.js.map +1 -1
  249. package/lib/src/react/index.spec.js +16 -4
  250. package/lib/src/react/index.spec.js.map +1 -1
  251. package/lib/src/test/test-utils.d.ts +0 -2
  252. package/lib/src/test/test-utils.d.ts.map +1 -1
  253. package/lib/src/test/test-utils.js +0 -2
  254. package/lib/src/test/test-utils.js.map +1 -1
  255. package/lib/src/tokenizedFetch.d.ts +0 -1
  256. package/lib/src/tokenizedFetch.d.ts.map +1 -1
  257. package/lib/src/tokenizedFetch.js +0 -1
  258. package/lib/src/tokenizedFetch.js.map +1 -1
  259. package/lib/src/types.d.ts +245 -366
  260. package/lib/src/types.d.ts.map +1 -1
  261. package/lib/src/types.js +196 -296
  262. package/lib/src/types.js.map +1 -1
  263. package/lib/src/utils/authService/authService.d.ts +0 -1
  264. package/lib/src/utils/authService/authService.d.ts.map +1 -1
  265. package/lib/src/utils/authService/authService.js +0 -1
  266. package/lib/src/utils/authService/authService.js.map +1 -1
  267. package/lib/src/utils/authService/authService.spec.js +1 -1
  268. package/lib/src/utils/authService/authService.spec.js.map +1 -1
  269. package/lib/src/utils/graphql/answerService/answer-queries.d.ts +2 -0
  270. package/lib/src/utils/graphql/answerService/answer-queries.d.ts.map +1 -1
  271. package/lib/src/utils/graphql/answerService/answer-queries.js +56 -0
  272. package/lib/src/utils/graphql/answerService/answer-queries.js.map +1 -1
  273. package/lib/src/utils/graphql/answerService/answerService.d.ts +37 -12
  274. package/lib/src/utils/graphql/answerService/answerService.d.ts.map +1 -1
  275. package/lib/src/utils/graphql/answerService/answerService.js +71 -15
  276. package/lib/src/utils/graphql/answerService/answerService.js.map +1 -1
  277. package/lib/src/utils/graphql/answerService/answerService.spec.js +80 -2
  278. package/lib/src/utils/graphql/answerService/answerService.spec.js.map +1 -1
  279. package/lib/src/utils/logger.d.ts.map +1 -1
  280. package/lib/src/utils/logger.js +2 -3
  281. package/lib/src/utils/logger.js.map +1 -1
  282. package/lib/src/utils/processData.js +1 -1
  283. package/lib/src/utils/processData.js.map +1 -1
  284. package/lib/src/utils/processData.spec.js +1 -1
  285. package/lib/src/utils/processData.spec.js.map +1 -1
  286. package/lib/src/utils/processTrigger.d.ts +0 -1
  287. package/lib/src/utils/processTrigger.d.ts.map +1 -1
  288. package/lib/src/utils/processTrigger.js +0 -2
  289. package/lib/src/utils/processTrigger.js.map +1 -1
  290. package/lib/src/utils.d.ts +2 -10
  291. package/lib/src/utils.d.ts.map +1 -1
  292. package/lib/src/utils.js +17 -12
  293. package/lib/src/utils.js.map +1 -1
  294. package/lib/src/visual-embed-sdk.d.ts +436 -558
  295. package/package.json +3 -1
  296. package/src/auth.spec.ts +72 -66
  297. package/src/auth.ts +53 -54
  298. package/src/authToken.spec.ts +31 -0
  299. package/src/authToken.ts +12 -12
  300. package/src/config.ts +0 -2
  301. package/src/embed/app.spec.ts +39 -5
  302. package/src/embed/app.ts +108 -50
  303. package/src/embed/base.spec.ts +5 -4
  304. package/src/embed/base.ts +30 -36
  305. package/src/embed/embed.spec.ts +0 -2
  306. package/src/embed/embedConfig.ts +0 -2
  307. package/src/embed/events.spec.ts +0 -2
  308. package/src/embed/liveboard.spec.ts +104 -11
  309. package/src/embed/liveboard.ts +25 -38
  310. package/src/embed/pinboard.spec.ts +0 -2
  311. package/src/embed/sage.spec.ts +20 -38
  312. package/src/embed/sage.ts +5 -38
  313. package/src/embed/search-bar.tsx +0 -11
  314. package/src/embed/search.spec.ts +48 -2
  315. package/src/embed/search.ts +94 -38
  316. package/src/embed/ts-embed-trigger.spec.ts +0 -3
  317. package/src/embed/ts-embed.spec.ts +109 -32
  318. package/src/embed/ts-embed.ts +68 -79
  319. package/src/errors.ts +1 -1
  320. package/src/index.ts +1 -3
  321. package/src/mixpanel-service.spec.ts +3 -4
  322. package/src/mixpanel-service.ts +1 -4
  323. package/src/react/index.spec.tsx +48 -67
  324. package/src/react/index.tsx +1 -13
  325. package/src/test/test-utils.ts +0 -2
  326. package/src/tokenizedFetch.ts +0 -1
  327. package/src/types.ts +245 -365
  328. package/src/utils/authService/authService.spec.ts +8 -13
  329. package/src/utils/authService/authService.ts +0 -2
  330. package/src/utils/authService/tokenizedAuthService.ts +8 -38
  331. package/src/utils/graphql/answerService/answer-queries.ts +58 -0
  332. package/src/utils/graphql/answerService/answerService.spec.ts +88 -2
  333. package/src/utils/graphql/answerService/answerService.ts +87 -16
  334. package/src/utils/logger.ts +2 -3
  335. package/src/utils/processData.spec.ts +3 -4
  336. package/src/utils/processData.ts +4 -2
  337. package/src/utils/processTrigger.ts +0 -2
  338. package/src/utils.ts +21 -13
  339. package/cjs/src/utils/sessionInfoService.d.ts +0 -66
  340. package/cjs/src/utils/sessionInfoService.d.ts.map +0 -1
  341. package/cjs/src/utils/sessionInfoService.js +0 -92
  342. package/cjs/src/utils/sessionInfoService.js.map +0 -1
  343. package/lib/src/utils/sessionInfoService.d.ts +0 -66
  344. package/lib/src/utils/sessionInfoService.d.ts.map +0 -1
  345. package/lib/src/utils/sessionInfoService.js +0 -85
  346. package/lib/src/utils/sessionInfoService.js.map +0 -1
  347. package/src/utils/sessionInfoService.ts +0 -101
@@ -2,29 +2,24 @@
2
2
  * Copyright (c) 2022
3
3
  *
4
4
  * Embed ThoughtSpot search or a saved answer
5
- *
6
5
  * @summary Search embed
7
6
  * @author Ayon Ghosh <ayon.ghosh@thoughtspot.com>
8
7
  */
9
8
 
9
+ import { getReleaseVersion } from '../auth';
10
+ import { ERROR_MESSAGE } from '../errors';
10
11
  import {
11
- DataSourceVisualMode,
12
- DOMSelector,
13
- Param,
14
- Action,
15
- ViewConfig,
12
+ Action, DOMSelector, DataSourceVisualMode, Param, ViewConfig,
16
13
  } from '../types';
17
14
  import {
18
- getQueryParamString,
19
15
  checkReleaseVersionInBeta,
20
16
  getFilterQuery,
17
+ getQueryParamString,
21
18
  getRuntimeParameters,
22
19
  } from '../utils';
23
- import { TsEmbed } from './ts-embed';
24
- import { ERROR_MESSAGE } from '../errors';
25
20
  import { getAuthPromise } from './base';
26
- import { getReleaseVersion } from '../auth';
27
21
  import { getEmbedConfig } from './embedConfig';
22
+ import { TsEmbed } from './ts-embed';
28
23
 
29
24
  /**
30
25
  * Configuration for search options.
@@ -44,9 +39,27 @@ export interface SearchOptions {
44
39
  executeSearch?: boolean;
45
40
  }
46
41
 
42
+ /**
43
+ * Define the initial state os column custom group accordions
44
+ * in data panel v2.
45
+ */
46
+ export enum DataPanelCustomColumnGroupsAccordionState {
47
+ /**
48
+ * Expand all the accordion initially in data panel v2.
49
+ */
50
+ EXPAND_ALL = 'EXPAND_ALL',
51
+ /**
52
+ * Collapse all the accordions initially in data panel v2.
53
+ */
54
+ COLLAPSE_ALL = 'COLLAPSE_ALL',
55
+ /**
56
+ * Expand the first accordion and collapse the rest.
57
+ */
58
+ EXPAND_FIRST = 'EXPAND_FIRST',
59
+ }
60
+
47
61
  /**
48
62
  * The configuration attributes for the embedded search view.
49
- *
50
63
  * @group Embed components
51
64
  */
52
65
  export interface SearchViewConfig
@@ -61,9 +74,7 @@ export interface SearchViewConfig
61
74
  /**
62
75
  * If set to true, the data sources panel is collapsed on load,
63
76
  * but can be expanded manually.
64
- *
65
77
  * @version: SDK: 1.1.0 | ThoughtSpot: 8.1.0.sw
66
- *
67
78
  * @example
68
79
  * ```js
69
80
  * const embed = new SearchEmbed('#tsEmbed', {
@@ -75,9 +86,7 @@ export interface SearchViewConfig
75
86
  collapseDataSources?: boolean;
76
87
  /**
77
88
  * Show or hide the data sources panel.
78
- *
79
89
  * @version: SDK: 1.2.0 | ThoughtSpot: 9.1.0.sw
80
- *
81
90
  * @example
82
91
  * ```js
83
92
  * const embed = new SearchEmbed('#tsEmbed', {
@@ -91,9 +100,7 @@ export interface SearchViewConfig
91
100
  * Show or hide the charts and tables in search answers.
92
101
  * This attribute can be used to create a custom visualization
93
102
  * using raw answer data.
94
- *
95
103
  * @version: SDK: 1.2.0 | ThoughtSpot: 9.1.0.sw
96
- *
97
104
  * @example
98
105
  * ```js
99
106
  * const embed = new SearchEmbed('#tsEmbed', {
@@ -103,11 +110,13 @@ export interface SearchViewConfig
103
110
  * ```
104
111
  */
105
112
  hideResults?: boolean;
113
+ /**
114
+ * If set to true, expands all the data sources panel.
115
+ */
116
+ expandAllDataSource?: boolean;
106
117
  /**
107
118
  * If set to true, the Search Assist feature is enabled.
108
- *
109
119
  * @version SDK: 1.13.0 | ThoughtSpot: 8.5.0.cl, 8.8.1-sw
110
- *
111
120
  * @example
112
121
  * ```js
113
122
  * const embed = new SearchEmbed('#tsEmbed', {
@@ -120,9 +129,7 @@ export interface SearchViewConfig
120
129
  /**
121
130
  * If set to true, the tabular view is set as the default
122
131
  * format for presenting search data.
123
- *
124
132
  * @version: SDK: 1.1.0 | ThoughtSpot: 8.1.0.sw
125
- *
126
133
  * @example
127
134
  * ```js
128
135
  * const embed = new SearchEmbed('#tsEmbed', {
@@ -134,9 +141,7 @@ export interface SearchViewConfig
134
141
  /**
135
142
  * The array of data source GUIDs to set on load.
136
143
  * Only a single data source is supported currently.
137
- *
138
144
  * @deprecated Use `dataSource` instead.
139
- *
140
145
  * @example
141
146
  * ```js
142
147
  * const embed = new SearchEmbed('#tsEmbed', {
@@ -148,9 +153,7 @@ export interface SearchViewConfig
148
153
  dataSources?: string[];
149
154
  /**
150
155
  * The array of data source GUIDs to set on load.
151
- *
152
156
  * @version: SDK: 1.19.0
153
- *
154
157
  * @example
155
158
  * ```js
156
159
  * const embed = new SearchEmbed('#tsEmbed', {
@@ -162,7 +165,6 @@ export interface SearchViewConfig
162
165
  dataSource?: string;
163
166
  /**
164
167
  * The initial search query to load the answer with.
165
- *
166
168
  * @deprecated
167
169
  *
168
170
  * Use {@link searchOptions} instead.
@@ -178,7 +180,6 @@ export interface SearchViewConfig
178
180
  * If it is executed, the focus is placed on the results.
179
181
  * If it’s not executed, the focus is placed at the end of
180
182
  * the token string in the search bar.
181
- *
182
183
  * @example
183
184
  * ```js
184
185
  * searchOptions: {
@@ -190,9 +191,7 @@ export interface SearchViewConfig
190
191
  searchOptions?: SearchOptions;
191
192
  /**
192
193
  * The GUID of a saved answer to load initially.
193
- *
194
194
  * @version: SDK: 1.1.0 | ThoughtSpot: 8.1.0.sw
195
- *
196
195
  * @example
197
196
  * ```js
198
197
  * const embed = new SearchEmbed('#tsEmbed', {
@@ -205,9 +204,7 @@ export interface SearchViewConfig
205
204
  /**
206
205
  * If set to true, the search page will render without the Search Bar
207
206
  * The chart/table should still be visible.
208
- *
209
207
  * @version SDK: 1.21.0 | ThoughtSpot: 9.2.0.cl, 9.5.0.sw
210
- *
211
208
  * @example
212
209
  * ```js
213
210
  * const embed = new SearchEmbed('#tsEmbed', {
@@ -219,10 +216,8 @@ export interface SearchViewConfig
219
216
  hideSearchBar?: boolean;
220
217
  /**
221
218
  * Flag to control Data panel experience
222
- *
223
219
  * @default false
224
220
  * @version SDK: 1.26.0 | Thoughtspot: 9.7.0.cl
225
- *
226
221
  * @example
227
222
  * ```js
228
223
  * const embed = new SearchEmbed('#tsEmbed', {
@@ -234,17 +229,52 @@ export interface SearchViewConfig
234
229
  dataPanelV2?: boolean;
235
230
  /**
236
231
  * Flag to set if last selected dataSource should be used
237
- *
238
232
  * @version: SDK: 1.24.0
239
233
  */
240
234
  useLastSelectedSources?: boolean;
241
235
  /**
242
236
  * To set the initial state of the search bar in case of saved-answers.
243
- *
244
237
  * @default false
245
238
  * @version SDK: 1.32.0 | Thoughtspot: 10.0.0.cl
246
239
  */
247
240
  collapseSearchBarInitially?: boolean;
241
+ /**
242
+ * To enable custom column groups in data panel v2
243
+ * @version SDK: 1.32.0 | Thoughtspot: 10.0.0.cl
244
+ * @default false
245
+ * @example
246
+ * ```js
247
+ * const embed = new SearchEmbed('#tsEmbed', {
248
+ * ... // other options
249
+ * enableCustomColumnGroups: true,
250
+ * });
251
+ * ```
252
+ */
253
+ enableCustomColumnGroups?: boolean;
254
+ /**
255
+ * Flag to enable onBeforeSearchExecute Embed Event
256
+ * @version: SDK: 1.29.0 | Thoughtspot: 10.1.0.cl
257
+ */
258
+ isOnBeforeGetVizDataInterceptEnabled?: boolean;
259
+ /**
260
+ * This controls the initial behaviour of custom column groups accordion.
261
+ * It takes DataPanelCustomColumnGroupsAccordionState enum values as input.
262
+ * List of different enum values:-
263
+ * - EXPAND_ALL: Expand all the accordion initially in data panel v2.
264
+ * - COLLAPSE_ALL: Collapse all the accordions initially in data panel v2.
265
+ * - EXPAND_FIRST: Expand the first accordion and collapse the rest.
266
+ * @version SDK: 1.32.0 | Thoughtspot: 10.0.0.cl
267
+ * @default DataPanelCustomColumnGroupsAccordionState.EXPAND_ALL
268
+ * @example
269
+ * ```js
270
+ * const embed = new SearchEmbed('#tsEmbed', {
271
+ * ... // other options
272
+ * dataPanelCustomGroupsAccordionInitialState:
273
+ * DataPanelCustomColumnGroupsAccordionState.EXPAND_ALL,
274
+ * });
275
+ * ```
276
+ */
277
+ dataPanelCustomGroupsAccordionInitialState?: DataPanelCustomColumnGroupsAccordionState;
248
278
  }
249
279
 
250
280
  export const HiddenActionItemByDefaultForSearchEmbed = [
@@ -257,7 +287,6 @@ export const HiddenActionItemByDefaultForSearchEmbed = [
257
287
 
258
288
  /**
259
289
  * Embed ThoughtSpot search
260
- *
261
290
  * @group Embed components
262
291
  */
263
292
  export class SearchEmbed extends TsEmbed {
@@ -290,6 +319,7 @@ export class SearchEmbed extends TsEmbed {
290
319
  protected getEmbedParams(): string {
291
320
  const {
292
321
  hideResults,
322
+ expandAllDataSource,
293
323
  enableSearchAssist,
294
324
  forceTable,
295
325
  searchOptions,
@@ -302,6 +332,11 @@ export class SearchEmbed extends TsEmbed {
302
332
  useLastSelectedSources = false,
303
333
  runtimeParameters,
304
334
  collapseSearchBarInitially = false,
335
+ enableCustomColumnGroups = false,
336
+ isOnBeforeGetVizDataInterceptEnabled = false,
337
+ /* eslint-disable-next-line max-len */
338
+ dataPanelCustomGroupsAccordionInitialState = DataPanelCustomColumnGroupsAccordionState.EXPAND_ALL,
339
+ excludeRuntimeParametersfromURL,
305
340
  } = this.viewConfig;
306
341
  const queryParams = this.getBaseQueryParams();
307
342
 
@@ -339,6 +374,13 @@ export class SearchEmbed extends TsEmbed {
339
374
  queryParams[Param.HideSearchBar] = true;
340
375
  }
341
376
 
377
+ if (isOnBeforeGetVizDataInterceptEnabled) {
378
+ /* eslint-disable-next-line max-len */
379
+ queryParams[
380
+ Param.IsOnBeforeGetVizDataInterceptEnabled
381
+ ] = isOnBeforeGetVizDataInterceptEnabled;
382
+ }
383
+
342
384
  queryParams[Param.DataPanelV2Enabled] = dataPanelV2;
343
385
  queryParams[Param.DataSourceMode] = this.getDataSourceMode();
344
386
 
@@ -349,6 +391,21 @@ export class SearchEmbed extends TsEmbed {
349
391
 
350
392
  queryParams[Param.searchEmbed] = true;
351
393
  queryParams[Param.CollapseSearchBarInitially] = collapseSearchBarInitially;
394
+ queryParams[Param.EnableCustomColumnGroups] = enableCustomColumnGroups;
395
+ if (
396
+ dataPanelCustomGroupsAccordionInitialState
397
+ === DataPanelCustomColumnGroupsAccordionState.COLLAPSE_ALL
398
+ || dataPanelCustomGroupsAccordionInitialState
399
+ === DataPanelCustomColumnGroupsAccordionState.EXPAND_FIRST
400
+ ) {
401
+ /* eslint-disable-next-line max-len */
402
+ queryParams[
403
+ Param.DataPanelCustomGroupsAccordionInitialState
404
+ ] = dataPanelCustomGroupsAccordionInitialState;
405
+ } else {
406
+ /* eslint-disable-next-line max-len */
407
+ queryParams[Param.DataPanelCustomGroupsAccordionInitialState] = DataPanelCustomColumnGroupsAccordionState.EXPAND_ALL;
408
+ }
352
409
  let query = '';
353
410
  const queryParamsString = getQueryParamString(queryParams, true);
354
411
  if (queryParamsString) {
@@ -356,7 +413,7 @@ export class SearchEmbed extends TsEmbed {
356
413
  }
357
414
 
358
415
  const parameterQuery = getRuntimeParameters(runtimeParameters || []);
359
- if (parameterQuery) query += `&${parameterQuery}`;
416
+ if (parameterQuery && !excludeRuntimeParametersfromURL) query += `&${parameterQuery}`;
360
417
 
361
418
  const filterQuery = getFilterQuery(runtimeFilters || []);
362
419
  if (filterQuery && !excludeRuntimeFiltersfromURL) {
@@ -368,7 +425,6 @@ export class SearchEmbed extends TsEmbed {
368
425
  /**
369
426
  * Construct the URL of the embedded ThoughtSpot search to be
370
427
  * loaded in the iframe
371
- *
372
428
  * @param answerId The GUID of a saved answer
373
429
  * @param dataSources A list of data source GUIDs
374
430
  */
@@ -8,12 +8,9 @@ import {
8
8
  getRootEl,
9
9
  } from '../test/test-utils';
10
10
 
11
- import * as authInstance from '../auth';
12
-
13
11
  describe('Trigger', () => {
14
12
  beforeEach(() => {
15
13
  document.body.innerHTML = getDocumentBody();
16
- jest.spyOn(authInstance, 'postLoginService').mockResolvedValue(true);
17
14
  });
18
15
  test('should trigger the event', async (done) => {
19
16
  init({
@@ -1,39 +1,45 @@
1
1
  /* eslint-disable dot-notation */
2
+ import * as authInstance from '../auth';
2
3
  import { resetCachedAuthToken } from '../authToken';
4
+ import * as config from '../config';
3
5
  import {
6
+ AppEmbed,
4
7
  AuthType,
5
- init,
6
8
  EmbedEvent,
7
- SearchEmbed,
8
- PinboardEmbed,
9
- LiveboardViewConfig,
10
- AppEmbed,
11
9
  LiveboardEmbed,
10
+ LiveboardViewConfig,
11
+ PinboardEmbed,
12
+ SearchEmbed,
13
+ init,
12
14
  } from '../index';
15
+ import * as mixpanelInstance from '../mixpanel-service';
16
+ import { MIXPANEL_EVENT } from '../mixpanel-service';
13
17
  import {
14
- Action, HomeLeftNavItem, RuntimeFilter, RuntimeFilterOp, HomepageModule, HostEvent,
18
+ Action,
19
+ HomeLeftNavItem,
20
+ RuntimeFilter,
21
+ RuntimeFilterOp,
22
+ HomepageModule,
23
+ HostEvent,
24
+ RuntimeParameter,
15
25
  } from '../types';
16
26
  import {
27
+ createRootEleForEmbed,
28
+ defaultParamsForPinboardEmbed,
17
29
  executeAfterWait,
30
+ expectUrlMatchesWithParams,
18
31
  getDocumentBody,
19
32
  getIFrameEl,
20
33
  getIFrameSrc,
21
34
  getRootEl,
35
+ mockMessageChannel,
22
36
  postMessageToParent,
23
- defaultParamsForPinboardEmbed,
24
37
  waitFor,
25
- expectUrlMatchesWithParams,
26
- mockMessageChannel,
27
- createRootEleForEmbed,
28
38
  } from '../test/test-utils';
29
- import * as config from '../config';
30
- import * as tsEmbedInstance from './ts-embed';
31
- import * as mixpanelInstance from '../mixpanel-service';
32
- import * as authInstance from '../auth';
33
- import * as baseInstance from './base';
34
- import { MIXPANEL_EVENT } from '../mixpanel-service';
35
39
  import * as authService from '../utils/authService/authService';
36
40
  import { logger } from '../utils/logger';
41
+ import * as baseInstance from './base';
42
+ import * as tsEmbedInstance from './ts-embed';
37
43
 
38
44
  const defaultViewConfig = {
39
45
  frameParams: {
@@ -83,10 +89,6 @@ describe('Unit test case for ts embed', () => {
83
89
  resetCachedAuthToken();
84
90
  });
85
91
 
86
- beforeAll(() => {
87
- jest.spyOn(authInstance, 'postLoginService').mockResolvedValue(true);
88
- });
89
-
90
92
  describe('AuthExpire embedEvent in cookieless authentication authType', () => {
91
93
  beforeAll(() => {
92
94
  jest.spyOn(authInstance, 'doCookielessTokenAuth').mockResolvedValueOnce(true);
@@ -159,6 +161,7 @@ describe('Unit test case for ts embed', () => {
159
161
  customisations,
160
162
  authToken: '',
161
163
  runtimeFilterParams: null,
164
+ runtimeParameterParams: null,
162
165
  hiddenHomeLeftNavItems: [],
163
166
  hiddenHomepageModules: [],
164
167
  hostConfig: undefined,
@@ -190,6 +193,7 @@ describe('Unit test case for ts embed', () => {
190
193
  customisations: customisationsView,
191
194
  authToken: '',
192
195
  runtimeFilterParams: null,
196
+ runtimeParameterParams: null,
193
197
  hiddenHomeLeftNavItems: [],
194
198
  hiddenHomepageModules: [],
195
199
  hostConfig: undefined,
@@ -230,6 +234,7 @@ describe('Unit test case for ts embed', () => {
230
234
  authToken: '',
231
235
  hostConfig: undefined,
232
236
  runtimeFilterParams: null,
237
+ runtimeParameterParams: null,
233
238
  hiddenHomeLeftNavItems: [],
234
239
  hiddenHomepageModules: [HomepageModule.MyLibrary, HomepageModule.Learning],
235
240
  reorderedHomepageModules: [],
@@ -266,6 +271,7 @@ describe('Unit test case for ts embed', () => {
266
271
  authToken: '',
267
272
  hostConfig: undefined,
268
273
  runtimeFilterParams: null,
274
+ runtimeParameterParams: null,
269
275
  hiddenHomeLeftNavItems: [],
270
276
  hiddenHomepageModules: [],
271
277
  reorderedHomepageModules: [HomepageModule.MyLibrary, HomepageModule.Watchlist],
@@ -273,6 +279,46 @@ describe('Unit test case for ts embed', () => {
273
279
  });
274
280
  });
275
281
 
282
+ test('Runtime parameters from view Config should be part of app_init payload when excludeRuntimeParametsfromURL is true', async () => {
283
+ const mockEmbedEventPayload = {
284
+ type: EmbedEvent.APP_INIT,
285
+ data: {},
286
+ };
287
+ const mockRuntimeParameters: RuntimeParameter[] = [
288
+ {
289
+ name: 'color',
290
+ value: 'blue',
291
+ },
292
+ ];
293
+
294
+ const searchEmbed = new SearchEmbed(getRootEl(), {
295
+ ...defaultViewConfig,
296
+ excludeRuntimeParametersfromURL: true,
297
+ runtimeParameters: mockRuntimeParameters,
298
+ });
299
+ searchEmbed.render();
300
+ const mockPort: any = {
301
+ postMessage: jest.fn(),
302
+ };
303
+ await executeAfterWait(() => {
304
+ const iframe = getIFrameEl();
305
+ postMessageToParent(iframe.contentWindow, mockEmbedEventPayload, mockPort);
306
+ });
307
+ expect(mockPort.postMessage).toHaveBeenCalledWith({
308
+ type: EmbedEvent.APP_INIT,
309
+ data: {
310
+ customisations,
311
+ authToken: '',
312
+ runtimeFilterParams: null,
313
+ runtimeParameterParams: 'param1=color&paramVal1=blue',
314
+ hiddenHomeLeftNavItems: [],
315
+ hiddenHomepageModules: [],
316
+ hostConfig: undefined,
317
+ reorderedHomepageModules: [],
318
+ },
319
+ });
320
+ });
321
+
276
322
  test('Runtime filters from view Config should be part of app_init payload when excludeRuntimeFiltersfromURL is true', async () => {
277
323
  const mockEmbedEventPayload = {
278
324
  type: EmbedEvent.APP_INIT,
@@ -305,6 +351,7 @@ describe('Unit test case for ts embed', () => {
305
351
  customisations,
306
352
  authToken: '',
307
353
  runtimeFilterParams: 'col1=color&op1=EQ&val1=blue',
354
+ runtimeParameterParams: null,
308
355
  hiddenHomeLeftNavItems: [],
309
356
  hiddenHomepageModules: [],
310
357
  hostConfig: undefined,
@@ -344,6 +391,7 @@ describe('Unit test case for ts embed', () => {
344
391
  customisations,
345
392
  authToken: '',
346
393
  runtimeFilterParams: null,
394
+ runtimeParameterParams: null,
347
395
  hiddenHomeLeftNavItems: [],
348
396
  hiddenHomepageModules: [],
349
397
  hostConfig: undefined,
@@ -384,6 +432,7 @@ describe('Unit test case for ts embed', () => {
384
432
  customisations,
385
433
  authToken: '',
386
434
  runtimeFilterParams: null,
435
+ runtimeParameterParams: null,
387
436
  hiddenHomeLeftNavItems: [],
388
437
  hiddenHomepageModules: [],
389
438
  hostConfig: undefined,
@@ -421,8 +470,11 @@ describe('Unit test case for ts embed', () => {
421
470
  authToken: '',
422
471
  hostConfig: undefined,
423
472
  runtimeFilterParams: null,
424
- hiddenHomeLeftNavItems:
425
- [HomeLeftNavItem.Home, HomeLeftNavItem.MonitorSubscription],
473
+ runtimeParameterParams: null,
474
+ hiddenHomeLeftNavItems: [
475
+ HomeLeftNavItem.Home,
476
+ HomeLeftNavItem.MonitorSubscription,
477
+ ],
426
478
  hiddenHomepageModules: [],
427
479
  reorderedHomepageModules: [],
428
480
  },
@@ -587,6 +639,7 @@ describe('Unit test case for ts embed', () => {
587
639
  customisations,
588
640
  authToken: 'test_auth_token1',
589
641
  runtimeFilterParams: null,
642
+ runtimeParameterParams: null,
590
643
  hiddenHomeLeftNavItems: [],
591
644
  hiddenHomepageModules: [],
592
645
  hostConfig: undefined,
@@ -651,7 +704,10 @@ describe('Unit test case for ts embed', () => {
651
704
  type: EmbedEvent.APP_INIT,
652
705
  data: {},
653
706
  };
654
- const searchEmbed = new SearchEmbed(getRootEl(), { ...defaultViewConfig, preRenderId: 'test' });
707
+ const searchEmbed = new SearchEmbed(getRootEl(), {
708
+ ...defaultViewConfig,
709
+ preRenderId: 'test',
710
+ });
655
711
  searchEmbed.preRender();
656
712
  const mockPort: any = {
657
713
  postMessage: jest.fn(),
@@ -684,7 +740,6 @@ describe('Unit test case for ts embed', () => {
684
740
  const mockPort: any = {
685
741
  postMessage: jest.fn(),
686
742
  };
687
- const loggerSpy = jest.spyOn(logger, 'error').mockResolvedValueOnce(true);
688
743
  await executeAfterWait(() => {
689
744
  const iframe = getIFrameEl();
690
745
  postMessageToParent(iframe.contentWindow, mockEmbedEventPayload, mockPort);
@@ -694,7 +749,6 @@ describe('Unit test case for ts embed', () => {
694
749
  expect(baseInstance.notifyAuthFailure).toBeCalledWith(
695
750
  authInstance.AuthFailureType.EXPIRY,
696
751
  );
697
- expect(loggerSpy).toHaveBeenCalledTimes(1);
698
752
  });
699
753
 
700
754
  jest.spyOn(authService, 'verifyTokenService').mockClear();
@@ -710,10 +764,12 @@ describe('Unit test case for ts embed', () => {
710
764
  type: EmbedEvent.AuthExpire,
711
765
  data: {},
712
766
  };
713
- const searchEmbed = new SearchEmbed(getRootEl(), { ...defaultViewConfig, preRenderId: 'test' });
767
+ const searchEmbed = new SearchEmbed(getRootEl(), {
768
+ ...defaultViewConfig,
769
+ preRenderId: 'test',
770
+ });
714
771
  jest.spyOn(baseInstance, 'notifyAuthFailure');
715
772
  searchEmbed.preRender();
716
- const loggerSpy = jest.spyOn(logger, 'error').mockResolvedValueOnce(true);
717
773
  const mockPort: any = {
718
774
  postMessage: jest.fn(),
719
775
  };
@@ -727,7 +783,6 @@ describe('Unit test case for ts embed', () => {
727
783
  expect(baseInstance.notifyAuthFailure).toBeCalledWith(
728
784
  authInstance.AuthFailureType.EXPIRY,
729
785
  );
730
- expect(loggerSpy).toHaveBeenCalledTimes(1);
731
786
  });
732
787
 
733
788
  jest.spyOn(authService, 'verifyTokenService').mockClear();
@@ -1216,7 +1271,7 @@ describe('Unit test case for ts embed', () => {
1216
1271
  expectUrlMatchesWithParams(
1217
1272
  getIFrameSrc(),
1218
1273
  `http://${thoughtSpotHost}/?embedApp=true&primaryNavHidden=true&profileAndHelpInNavBarHidden=false&${defaultParamsForPinboardEmbed}`
1219
- + `&foo=bar&baz=1&bool=true${defaultParamsPost}#/home`,
1274
+ + `&foo=bar&baz=1&bool=true${defaultParamsPost}#/home`,
1220
1275
  );
1221
1276
  });
1222
1277
 
@@ -1232,7 +1287,7 @@ describe('Unit test case for ts embed', () => {
1232
1287
  expectUrlMatchesWithParams(
1233
1288
  getIFrameSrc(),
1234
1289
  `http://${thoughtSpotHost}/?embedApp=true&primaryNavHidden=true&profileAndHelpInNavBarHidden=false&${defaultParamsForPinboardEmbed}`
1235
- + `&showAlerts=true${defaultParamsPost}#/home`,
1290
+ + `&showAlerts=true${defaultParamsPost}#/home`,
1236
1291
  );
1237
1292
  });
1238
1293
  it('Sets the locale param', async () => {
@@ -1247,7 +1302,7 @@ describe('Unit test case for ts embed', () => {
1247
1302
  expectUrlMatchesWithParams(
1248
1303
  getIFrameSrc(),
1249
1304
  `http://${thoughtSpotHost}/?embedApp=true&primaryNavHidden=true&profileAndHelpInNavBarHidden=false&${defaultParamsForPinboardEmbed}`
1250
- + `&locale=ja-JP${defaultParamsPost}#/home`,
1305
+ + `&locale=ja-JP${defaultParamsPost}#/home`,
1251
1306
  );
1252
1307
  });
1253
1308
  it('Sets the iconSprite url', async () => {
@@ -1264,7 +1319,7 @@ describe('Unit test case for ts embed', () => {
1264
1319
  expectUrlMatchesWithParams(
1265
1320
  getIFrameSrc(),
1266
1321
  `http://${thoughtSpotHost}/?embedApp=true&primaryNavHidden=true&profileAndHelpInNavBarHidden=false&${defaultParamsForPinboardEmbed}`
1267
- + `&iconSprite=iconSprite.com${defaultParamsPost}#/home`,
1322
+ + `&iconSprite=iconSprite.com${defaultParamsPost}#/home`,
1268
1323
  );
1269
1324
  });
1270
1325
 
@@ -1331,6 +1386,28 @@ describe('Unit test case for ts embed', () => {
1331
1386
  done();
1332
1387
  });
1333
1388
  });
1389
+
1390
+ it('Should set the override locale for number/date and currency format', async () => {
1391
+ jest.spyOn(baseInstance, 'getAuthPromise').mockResolvedValue(true);
1392
+ init({
1393
+ thoughtSpotHost: 'tshost',
1394
+ authType: AuthType.None,
1395
+ numberFormatLocale: 'en-US',
1396
+ dateFormatLocale: 'en-IN',
1397
+ currencyFormat: 'USD',
1398
+ });
1399
+ const appEmbed = new AppEmbed(getRootEl(), {
1400
+ frameParams: {
1401
+ width: '100%',
1402
+ height: '100%',
1403
+ },
1404
+ });
1405
+ await appEmbed.render();
1406
+ expectUrlMatchesWithParams(
1407
+ getIFrameSrc(),
1408
+ `http://${thoughtSpotHost}/?embedApp=true&primaryNavHidden=true&profileAndHelpInNavBarHidden=false&numberFormatLocale=en-US&dateFormatLocale=en-IN&currencyFormat=USD${defaultParamsPost}#/home`,
1409
+ );
1410
+ });
1334
1411
  });
1335
1412
 
1336
1413
  describe('When destroyed', () => {