@thoughtspot/visual-embed-sdk 1.28.3 → 1.28.4

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 (129) hide show
  1. package/cjs/package.json +2 -1
  2. package/cjs/src/embed/app.d.ts +38 -0
  3. package/cjs/src/embed/app.d.ts.map +1 -1
  4. package/cjs/src/embed/app.js +7 -1
  5. package/cjs/src/embed/app.js.map +1 -1
  6. package/cjs/src/embed/app.spec.js +10 -0
  7. package/cjs/src/embed/app.spec.js.map +1 -1
  8. package/cjs/src/embed/liveboard.d.ts +16 -0
  9. package/cjs/src/embed/liveboard.d.ts.map +1 -1
  10. package/cjs/src/embed/liveboard.js +8 -3
  11. package/cjs/src/embed/liveboard.js.map +1 -1
  12. package/cjs/src/embed/liveboard.spec.js +61 -4
  13. package/cjs/src/embed/liveboard.spec.js.map +1 -1
  14. package/cjs/src/embed/sage.d.ts +4 -4
  15. package/cjs/src/embed/sage.d.ts.map +1 -1
  16. package/cjs/src/embed/sage.js +2 -18
  17. package/cjs/src/embed/sage.js.map +1 -1
  18. package/cjs/src/embed/sage.spec.js +20 -31
  19. package/cjs/src/embed/sage.spec.js.map +1 -1
  20. package/cjs/src/embed/search.d.ts +22 -0
  21. package/cjs/src/embed/search.d.ts.map +1 -1
  22. package/cjs/src/embed/search.js +3 -1
  23. package/cjs/src/embed/search.js.map +1 -1
  24. package/cjs/src/embed/search.spec.js +2 -1
  25. package/cjs/src/embed/search.spec.js.map +1 -1
  26. package/cjs/src/embed/ts-embed.d.ts.map +1 -1
  27. package/cjs/src/embed/ts-embed.js +9 -0
  28. package/cjs/src/embed/ts-embed.js.map +1 -1
  29. package/cjs/src/embed/ts-embed.spec.js +18 -0
  30. package/cjs/src/embed/ts-embed.spec.js.map +1 -1
  31. package/cjs/src/errors.js +1 -1
  32. package/cjs/src/errors.js.map +1 -1
  33. package/cjs/src/react/index.spec.js +1 -1
  34. package/cjs/src/react/index.spec.js.map +1 -1
  35. package/cjs/src/types.d.ts +86 -5
  36. package/cjs/src/types.d.ts.map +1 -1
  37. package/cjs/src/types.js +67 -4
  38. package/cjs/src/types.js.map +1 -1
  39. package/cjs/src/utils/authService/tokenizedAuthService.spec.d.ts +2 -0
  40. package/cjs/src/utils/authService/tokenizedAuthService.spec.d.ts.map +1 -0
  41. package/cjs/src/utils/authService/tokenizedAuthService.spec.js +32 -0
  42. package/cjs/src/utils/authService/tokenizedAuthService.spec.js.map +1 -0
  43. package/cjs/src/utils/sessionInfoService.d.ts +66 -0
  44. package/cjs/src/utils/sessionInfoService.d.ts.map +1 -0
  45. package/cjs/src/utils/sessionInfoService.js +92 -0
  46. package/cjs/src/utils/sessionInfoService.js.map +1 -0
  47. package/dist/src/embed/app.d.ts +38 -0
  48. package/dist/src/embed/app.d.ts.map +1 -1
  49. package/dist/src/embed/liveboard.d.ts +16 -0
  50. package/dist/src/embed/liveboard.d.ts.map +1 -1
  51. package/dist/src/embed/sage.d.ts +4 -4
  52. package/dist/src/embed/sage.d.ts.map +1 -1
  53. package/dist/src/embed/search.d.ts +22 -0
  54. package/dist/src/embed/search.d.ts.map +1 -1
  55. package/dist/src/embed/ts-embed.d.ts.map +1 -1
  56. package/dist/src/types.d.ts +86 -5
  57. package/dist/src/types.d.ts.map +1 -1
  58. package/dist/src/utils/authService/tokenizedAuthService.spec.d.ts +2 -0
  59. package/dist/src/utils/authService/tokenizedAuthService.spec.d.ts.map +1 -0
  60. package/dist/src/utils/sessionInfoService.d.ts +66 -0
  61. package/dist/src/utils/sessionInfoService.d.ts.map +1 -0
  62. package/dist/tsembed-react.es.js +97 -28
  63. package/dist/tsembed-react.js +97 -28
  64. package/dist/tsembed.es.js +97 -28
  65. package/dist/tsembed.js +97 -28
  66. package/dist/visual-embed-sdk-react-full.d.ts +165 -8
  67. package/dist/visual-embed-sdk-react.d.ts +165 -8
  68. package/dist/visual-embed-sdk.d.ts +165 -8
  69. package/lib/package.json +2 -1
  70. package/lib/src/embed/app.d.ts +38 -0
  71. package/lib/src/embed/app.d.ts.map +1 -1
  72. package/lib/src/embed/app.js +7 -1
  73. package/lib/src/embed/app.js.map +1 -1
  74. package/lib/src/embed/app.spec.js +10 -0
  75. package/lib/src/embed/app.spec.js.map +1 -1
  76. package/lib/src/embed/liveboard.d.ts +16 -0
  77. package/lib/src/embed/liveboard.d.ts.map +1 -1
  78. package/lib/src/embed/liveboard.js +8 -3
  79. package/lib/src/embed/liveboard.js.map +1 -1
  80. package/lib/src/embed/liveboard.spec.js +61 -4
  81. package/lib/src/embed/liveboard.spec.js.map +1 -1
  82. package/lib/src/embed/sage.d.ts +4 -4
  83. package/lib/src/embed/sage.d.ts.map +1 -1
  84. package/lib/src/embed/sage.js +2 -18
  85. package/lib/src/embed/sage.js.map +1 -1
  86. package/lib/src/embed/sage.spec.js +20 -31
  87. package/lib/src/embed/sage.spec.js.map +1 -1
  88. package/lib/src/embed/search.d.ts +22 -0
  89. package/lib/src/embed/search.d.ts.map +1 -1
  90. package/lib/src/embed/search.js +3 -1
  91. package/lib/src/embed/search.js.map +1 -1
  92. package/lib/src/embed/search.spec.js +2 -1
  93. package/lib/src/embed/search.spec.js.map +1 -1
  94. package/lib/src/embed/ts-embed.d.ts.map +1 -1
  95. package/lib/src/embed/ts-embed.js +9 -0
  96. package/lib/src/embed/ts-embed.js.map +1 -1
  97. package/lib/src/embed/ts-embed.spec.js +18 -0
  98. package/lib/src/embed/ts-embed.spec.js.map +1 -1
  99. package/lib/src/errors.js +1 -1
  100. package/lib/src/errors.js.map +1 -1
  101. package/lib/src/react/index.spec.js +1 -1
  102. package/lib/src/react/index.spec.js.map +1 -1
  103. package/lib/src/types.d.ts +86 -5
  104. package/lib/src/types.d.ts.map +1 -1
  105. package/lib/src/types.js +67 -4
  106. package/lib/src/types.js.map +1 -1
  107. package/lib/src/utils/authService/tokenizedAuthService.spec.d.ts +2 -0
  108. package/lib/src/utils/authService/tokenizedAuthService.spec.d.ts.map +1 -0
  109. package/lib/src/utils/authService/tokenizedAuthService.spec.js +29 -0
  110. package/lib/src/utils/authService/tokenizedAuthService.spec.js.map +1 -0
  111. package/lib/src/utils/sessionInfoService.d.ts +66 -0
  112. package/lib/src/utils/sessionInfoService.d.ts.map +1 -0
  113. package/lib/src/utils/sessionInfoService.js +85 -0
  114. package/lib/src/utils/sessionInfoService.js.map +1 -0
  115. package/lib/src/visual-embed-sdk.d.ts +166 -9
  116. package/package.json +2 -1
  117. package/src/embed/app.spec.ts +15 -0
  118. package/src/embed/app.ts +48 -0
  119. package/src/embed/liveboard.spec.ts +82 -9
  120. package/src/embed/liveboard.ts +26 -2
  121. package/src/embed/sage.spec.ts +20 -35
  122. package/src/embed/sage.ts +4 -21
  123. package/src/embed/search.spec.ts +2 -1
  124. package/src/embed/search.ts +26 -0
  125. package/src/embed/ts-embed.spec.ts +22 -0
  126. package/src/embed/ts-embed.ts +9 -0
  127. package/src/errors.ts +1 -1
  128. package/src/react/index.spec.tsx +1 -1
  129. package/src/types.ts +85 -4
@@ -365,6 +365,44 @@ declare module '@thoughtspot/visual-embed-sdk/embed/app' {
365
365
  * @default false
366
366
  */
367
367
  enableAskSage?: boolean;
368
+ /**
369
+ * To set the initial state of the search bar in case of saved-answers.
370
+ *
371
+ * @version SDK: 1.32.0 | Thoughtspot: 10.0.0.cl
372
+ * @default false
373
+ */
374
+ collapseSearchBarInitially?: boolean;
375
+ /**
376
+ * To enable custom column groups in data panel v2
377
+ *
378
+ * @version SDK: 1.32.0 | Thoughtspot: 10.0.0.cl
379
+ * @default false
380
+ *
381
+ * @example
382
+ * ```js
383
+ * const embed = new AppEmbed('#embed', {
384
+ * ... // other app view config
385
+ * enableCustomColumnGroups: true,
386
+ * });
387
+ * ```
388
+ */
389
+ enableCustomColumnGroups?: boolean;
390
+ /**
391
+ * This flag is used to enable the 2 column layout in liveboard
392
+ *
393
+ * @type {boolean}
394
+ * @default false
395
+ * @version SDK: 1.32.0 | ThoughtSpot:10.1.0.cl
396
+ *
397
+ * @example
398
+ * ```js
399
+ * const embed = new LiveboardEmbed('#embed-container', {
400
+ * ... // other options
401
+ * enable2ColumnLayout: true,
402
+ * })
403
+ * ```
404
+ */
405
+ enable2ColumnLayout?: boolean;
368
406
  }
369
407
  /**
370
408
  * Embeds full ThoughtSpot experience in a host application.
@@ -806,6 +844,22 @@ declare module '@thoughtspot/visual-embed-sdk/embed/liveboard' {
806
844
  * ```
807
845
  */
808
846
  enableAskSage?: boolean;
847
+ /**
848
+ * This flag is used to enable the 2 column layout in liveboard
849
+ *
850
+ * @type {boolean}
851
+ * @default false
852
+ * @version SDK: 1.32.0 | ThoughtSpot:10.1.0.cl
853
+ *
854
+ * @example
855
+ * ```js
856
+ * const embed = new LiveboardEmbed('#embed-container', {
857
+ * ... // other options
858
+ * enable2ColumnLayout: true,
859
+ * })
860
+ * ```
861
+ */
862
+ enable2ColumnLayout?: boolean;
809
863
  }
810
864
  /**
811
865
  * Embed a ThoughtSpot Liveboard or visualization. When rendered it already
@@ -1064,6 +1118,28 @@ declare module '@thoughtspot/visual-embed-sdk/embed/search' {
1064
1118
  * @version: SDK: 1.24.0
1065
1119
  */
1066
1120
  useLastSelectedSources?: boolean;
1121
+ /**
1122
+ * To set the initial state of the search bar in case of saved-answers.
1123
+ *
1124
+ * @default false
1125
+ * @version SDK: 1.32.0 | Thoughtspot: 10.0.0.cl
1126
+ */
1127
+ collapseSearchBarInitially?: boolean;
1128
+ /**
1129
+ * To enable custom column groups in data panel v2
1130
+ *
1131
+ * @version SDK: 1.32.0 | Thoughtspot: 10.0.0.cl
1132
+ * @default false
1133
+ *
1134
+ * @example
1135
+ * ```js
1136
+ * const embed = new SearchEmbed('#tsEmbed', {
1137
+ * ... // other options
1138
+ * enableCustomColumnGroups: true,
1139
+ * });
1140
+ * ```
1141
+ */
1142
+ enableCustomColumnGroups?: boolean;
1067
1143
  }
1068
1144
  export const HiddenActionItemByDefaultForSearchEmbed: Action[];
1069
1145
  /**
@@ -1953,6 +2029,24 @@ declare module '@thoughtspot/visual-embed-sdk/types' {
1953
2029
  * @version SDK: 1.27.9
1954
2030
  */
1955
2031
  disableSDKTracking?: boolean;
2032
+ /**
2033
+ * Overrides default/user preffered locale for date formatting
2034
+ *
2035
+ * @version SDK: 1.28.4 | Thoughtspot: 10.0.0.cl, 9.5.0.sw
2036
+ */
2037
+ dateFormatLocale?: string;
2038
+ /**
2039
+ * Overrides default/user preffered locale for number formatting
2040
+ *
2041
+ * @version SDK: 1.28.4 | Thoughtspot: 10.0.0.cl, 9.5.0.sw
2042
+ */
2043
+ numberFormatLocale?: string;
2044
+ /**
2045
+ * Format to be used for currency when currency format is set to infer from browser
2046
+ *
2047
+ * @version SDK: 1.28.4 | Thoughtspot: 10.0.0.cl, 9.5.0.sw
2048
+ */
2049
+ currencyFormat?: string;
1956
2050
  }
1957
2051
  export interface LayoutConfig {
1958
2052
  }
@@ -4413,7 +4507,14 @@ declare module '@thoughtspot/visual-embed-sdk/types' {
4413
4507
  HideSearchBar = "hideSearchBar",
4414
4508
  ClientLogLevel = "clientLogLevel",
4415
4509
  OverrideNativeConsole = "overrideConsoleLogs",
4416
- enableAskSage = "enableAskSage"
4510
+ enableAskSage = "enableAskSage",
4511
+ CollapseSearchBarInitially = "collapseSearchBarInitially",
4512
+ EnableCustomColumnGroups = "enableCustomColumnGroups",
4513
+ DateFormatLocale = "dateFormatLocale",
4514
+ NumberFormatLocale = "numberFormatLocale",
4515
+ CurrencyFormat = "currencyFormat",
4516
+ Enable2ColumnLayout = "enable2ColumnLayout",
4517
+ IsFullAppEmbed = "isFullAppEmbed"
4417
4518
  }
4418
4519
  /**
4419
4520
  * ThoughtSpot application pages include actions and menu commands
@@ -4549,6 +4650,18 @@ declare module '@thoughtspot/visual-embed-sdk/types' {
4549
4650
  * ```
4550
4651
  */
4551
4652
  AddFilter = "addFilter",
4653
+ /**
4654
+ * The **Add Data Panel Objects** action on the data panel v2.
4655
+ * Allows to show action menu to add different objects (like
4656
+ * formulas, parameters) in data panel v2.
4657
+ *
4658
+ * @example
4659
+ * ```js
4660
+ * disabledActions: [Action.AddDataPanelObjects]
4661
+ * ```
4662
+ * @version SDK: 1.32.0 | Thoughtspot: 10.0.0.cl
4663
+ */
4664
+ AddDataPanelObjects = "addDataPanelObjects",
4552
4665
  /**
4553
4666
  * Filter configuration options on a Liveboard and Search page.
4554
4667
  * Allows configuring filter options when adding filters to a
@@ -4591,6 +4704,28 @@ declare module '@thoughtspot/visual-embed-sdk/types' {
4591
4704
  * ```
4592
4705
  */
4593
4706
  AddParameter = "addParameter",
4707
+ /**
4708
+ * The **Add Column Set** action on a Answer.
4709
+ * Allows adding column sets to a Answer.
4710
+ *
4711
+ * @example
4712
+ * ```js
4713
+ * disabledActions: [Action.AddColumnSet]
4714
+ * ```
4715
+ * @version SDK: 1.32.0 | Thoughtspot: 10.0.0.cl
4716
+ */
4717
+ AddColumnSet = "addSimpleCohort",
4718
+ /**
4719
+ * The **Add Query Set** action on a Answer.
4720
+ * Allows adding query sets to a Answer.
4721
+ *
4722
+ * @example
4723
+ * ```js
4724
+ * disabledActions: [Action.AddQuerySet]
4725
+ * ```
4726
+ * @version SDK: 1.32.0 | Thoughtspot: 10.0.0.cl
4727
+ */
4728
+ AddQuerySet = "addAdvancedCohort",
4594
4729
  /**
4595
4730
  * @hidden
4596
4731
  */
@@ -5022,6 +5157,28 @@ declare module '@thoughtspot/visual-embed-sdk/types' {
5022
5157
  * @version SDK: 1.21.0 | ThoughtSpot: 9.2.0.cl
5023
5158
  */
5024
5159
  CrossFilter = "context-menu-item-cross-filter",
5160
+ /**
5161
+ * The **Sync to Slack** action on Liveboard visualizations.
5162
+ * Allows sending data to third-party apps Slack
5163
+ *
5164
+ * @example
5165
+ * ```js
5166
+ * disabledActions: [Action.SyncToSlack]
5167
+ * ```
5168
+ * @version @version SDK : 1.32.0 | Thoughtspot: 10.1.0.cl
5169
+ */
5170
+ SyncToSlack = "syncToSlack",
5171
+ /**
5172
+ * The **Sync to Teams** action on Liveboard visualizations.
5173
+ * Allows sending data to third-party apps Team
5174
+ *
5175
+ * @example
5176
+ * ```js
5177
+ * disabledActions: [Action.SyncToTeams]
5178
+ * ```
5179
+ * @version @version SDK : 1.32.0 | Thoughtspot: 10.1.0.cl
5180
+ */
5181
+ SyncToTeams = "syncToTeams",
5025
5182
  /**
5026
5183
  * The **Remove** action that appears when cross filters are applied
5027
5184
  * on a Liveboard.
@@ -5324,15 +5481,15 @@ declare module '@thoughtspot/visual-embed-sdk/types' {
5324
5481
  */
5325
5482
  RemoveFromWatchlist = "removeFromWatchlist",
5326
5483
  /**
5327
- * The **Copy KPI Link** menu action on KPI watchlist.
5484
+ * The **Organise Favourites** action on Homepage Favourite Module.
5328
5485
  *
5329
5486
  * @example
5330
5487
  * ```js
5331
- * disabledActions: [Action.CopyKpiLink]
5488
+ * disabledActions: [Action.OrganiseFavourites]
5332
5489
  * ```
5333
- * @version SDK : 1.27.9 | Thoughtspot: 9.12.5.cl
5490
+ * @version SDK : 1.32.0 | Thoughtspot: 10.0.0.cl
5334
5491
  */
5335
- CopyKpiLink = "copyKpiLink",
5492
+ OrganiseFavourites = "organiseFavourites",
5336
5493
  /**
5337
5494
  * Action ID for AI Highlights button
5338
5495
  *
@@ -5835,7 +5992,7 @@ declare module '@thoughtspot/visual-embed-sdk/embed/sage' {
5835
5992
  * @summary TS Sage embed
5836
5993
  * @author Mourya Balabhadra <mourya.balabhadra@thoughtspot.com>
5837
5994
  */
5838
- import { Action, DOMSelector, ViewConfig } from '@thoughtspot/visual-embed-sdk/types';
5995
+ import { DOMSelector, ViewConfig } from '@thoughtspot/visual-embed-sdk/types';
5839
5996
  import { V1Embed } from '@thoughtspot/visual-embed-sdk/embed/ts-embed';
5840
5997
  /**
5841
5998
  * Configuration for search options
@@ -5873,7 +6030,7 @@ declare module '@thoughtspot/visual-embed-sdk/embed/sage' {
5873
6030
  showObjectResults?: boolean;
5874
6031
  /**
5875
6032
  * flag used by the TS product tour page to show the blue search bar
5876
- * even after the search is completed. This is different from TSE Sage Embed
6033
+ * even after the search is completed. This is different from Thoughtspot Embedded Sage Embed
5877
6034
  * experience where it mimics closer to the non-embed case.
5878
6035
  * The Sample questions container is collapsed when this value is set after
5879
6036
  * does a search.
@@ -5884,8 +6041,9 @@ declare module '@thoughtspot/visual-embed-sdk/embed/sage' {
5884
6041
  isProductTour?: boolean;
5885
6042
  /**
5886
6043
  * Show or hide the search bar title.
6044
+ * @version SDK: 1.29.0 | Thoughtspot: 9.8.0.cl, 9.8.0.sw
5887
6045
  *
5888
- * @version SDK: 1.26.0 | Thoughtspot: 9.8.0.cl, 9.8.0.sw
6046
+ * @deprecated Thoughtspot: 9.10.0.cl | search bar doesn't have the title from 9.10.0.cl
5889
6047
  */
5890
6048
  hideSearchBarTitle?: boolean;
5891
6049
  /**
@@ -5955,7 +6113,6 @@ declare module '@thoughtspot/visual-embed-sdk/embed/sage' {
5955
6113
  */
5956
6114
  searchOptions?: SearchOptions;
5957
6115
  }
5958
- export const HiddenActionItemByDefaultForSageEmbed: Action[];
5959
6116
  /**
5960
6117
  * Embed ThoughtSpot LLM and GPT-based Natural Language Search component.
5961
6118
  *
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thoughtspot/visual-embed-sdk",
3
- "version": "1.28.3",
3
+ "version": "1.28.4",
4
4
  "description": "ThoughtSpot Embed SDK",
5
5
  "module": "lib/src/index.js",
6
6
  "main": "dist/tsembed.js",
@@ -175,6 +175,7 @@
175
175
  "keywords": [
176
176
  "thoughtspot",
177
177
  "everywhere",
178
+ "embedded",
178
179
  "embed",
179
180
  "sdk",
180
181
  "analytics"
@@ -289,6 +289,21 @@ describe('App embed tests', () => {
289
289
  });
290
290
  });
291
291
 
292
+ test('should set enable2ColumnLayout to true in url', async () => {
293
+ const appEmbed = new AppEmbed(getRootEl(), {
294
+ ...defaultViewConfig,
295
+ enable2ColumnLayout: true,
296
+ } as AppViewConfig);
297
+
298
+ appEmbed.render();
299
+ await executeAfterWait(() => {
300
+ expectUrlMatchesWithParams(
301
+ getIFrameSrc(),
302
+ `http://${thoughtSpotHost}/?embedApp=true&profileAndHelpInNavBarHidden=false&enable2ColumnLayout=true${defaultParamsPost}#/home`,
303
+ );
304
+ });
305
+ });
306
+
292
307
  test('Should add the tag to the iframe src', async () => {
293
308
  const appEmbed = new AppEmbed(getRootEl(), {
294
309
  ...defaultViewConfig,
package/src/embed/app.ts CHANGED
@@ -341,6 +341,44 @@ export interface AppViewConfig extends Omit<ViewConfig, 'visibleTabs'> {
341
341
  * @default false
342
342
  */
343
343
  enableAskSage?: boolean;
344
+ /**
345
+ * To set the initial state of the search bar in case of saved-answers.
346
+ *
347
+ * @version SDK: 1.32.0 | Thoughtspot: 10.0.0.cl
348
+ * @default false
349
+ */
350
+ collapseSearchBarInitially?: boolean;
351
+ /**
352
+ * To enable custom column groups in data panel v2
353
+ *
354
+ * @version SDK: 1.32.0 | Thoughtspot: 10.0.0.cl
355
+ * @default false
356
+ *
357
+ * @example
358
+ * ```js
359
+ * const embed = new AppEmbed('#embed', {
360
+ * ... // other app view config
361
+ * enableCustomColumnGroups: true,
362
+ * });
363
+ * ```
364
+ */
365
+ enableCustomColumnGroups?: boolean;
366
+ /**
367
+ * This flag is used to enable the 2 column layout in liveboard
368
+ *
369
+ * @type {boolean}
370
+ * @default false
371
+ * @version SDK: 1.32.0 | ThoughtSpot:10.1.0.cl
372
+ *
373
+ * @example
374
+ * ```js
375
+ * const embed = new LiveboardEmbed('#embed-container', {
376
+ * ... // other options
377
+ * enable2ColumnLayout: true,
378
+ * })
379
+ * ```
380
+ */
381
+ enable2ColumnLayout?: boolean;
344
382
  }
345
383
 
346
384
  /**
@@ -387,6 +425,9 @@ export class AppEmbed extends V1Embed {
387
425
  modularHomeExperience = false,
388
426
  isLiveboardHeaderSticky = true,
389
427
  enableAskSage,
428
+ collapseSearchBarInitially = false,
429
+ enable2ColumnLayout,
430
+ enableCustomColumnGroups = false,
390
431
  } = this.viewConfig;
391
432
 
392
433
  let params = {};
@@ -399,6 +440,7 @@ export class AppEmbed extends V1Embed {
399
440
  params[Param.ShowLiveboardTitle] = showLiveboardTitle;
400
441
  params[Param.ShowLiveboardDescription] = !!showLiveboardDescription;
401
442
  params[Param.LiveboardHeaderSticky] = isLiveboardHeaderSticky;
443
+ params[Param.IsFullAppEmbed] = true;
402
444
 
403
445
  params = this.getBaseQueryParams(params);
404
446
 
@@ -420,6 +462,10 @@ export class AppEmbed extends V1Embed {
420
462
  params[Param.EnableSearchAssist] = enableSearchAssist;
421
463
  }
422
464
 
465
+ if (enable2ColumnLayout !== undefined) {
466
+ params[Param.Enable2ColumnLayout] = enable2ColumnLayout;
467
+ }
468
+
423
469
  if (enableAskSage) {
424
470
  params[Param.enableAskSage] = enableAskSage;
425
471
  }
@@ -427,6 +473,8 @@ export class AppEmbed extends V1Embed {
427
473
  params[Param.DataPanelV2Enabled] = dataPanelV2;
428
474
  params[Param.HideHomepageLeftNav] = hideHomepageLeftNav;
429
475
  params[Param.ModularHomeExperienceEnabled] = modularHomeExperience;
476
+ params[Param.CollapseSearchBarInitially] = collapseSearchBarInitially;
477
+ params[Param.EnableCustomColumnGroups] = enableCustomColumnGroups;
430
478
  const queryParams = getQueryParamString(params, true);
431
479
 
432
480
  return queryParams;
@@ -110,6 +110,21 @@ describe('Liveboard/viz embed tests', () => {
110
110
  });
111
111
  });
112
112
 
113
+ test('should set enable2ColumnLayout to true in url', async () => {
114
+ const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
115
+ enable2ColumnLayout: true,
116
+ ...defaultViewConfig,
117
+ liveboardId,
118
+ } as LiveboardViewConfig);
119
+ liveboardEmbed.render();
120
+ await executeAfterWait(() => {
121
+ expectUrlMatchesWithParams(
122
+ getIFrameSrc(),
123
+ `http://${thoughtSpotHost}/?embedApp=true${defaultParams}&enable2ColumnLayout=true${prefixParams}#/embed/viz/${liveboardId}`,
124
+ );
125
+ });
126
+ });
127
+
113
128
  test('should set visible actions as empty array', async () => {
114
129
  const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
115
130
  visibleActions: [],
@@ -269,6 +284,63 @@ describe('Liveboard/viz embed tests', () => {
269
284
  expect(onSpy).toHaveBeenCalledWith(EmbedEvent.EmbedHeight, expect.anything());
270
285
  });
271
286
  });
287
+
288
+ test('should not call setIFrameHeight if currentPath starts with "/embed/viz/"', () => {
289
+ const myObject = new LiveboardEmbed(getRootEl(), {
290
+ ...defaultViewConfig,
291
+ fullHeight: true,
292
+ liveboardId,
293
+ } as LiveboardViewConfig) as any;
294
+ const spySetIFrameHeight = jest.spyOn(myObject, 'setIFrameHeight');
295
+
296
+ myObject.render();
297
+ myObject.setIframeHeightForNonEmbedLiveboard({
298
+ data: { currentPath: '/embed/viz/' },
299
+ type: 'Route',
300
+ });
301
+
302
+ // Assert that setIFrameHeight is not called
303
+ expect(spySetIFrameHeight).not.toHaveBeenCalled();
304
+ });
305
+
306
+ test('should not call setIFrameHeight if currentPath starts with "/embed/insights/viz/"', () => {
307
+ const myObject = new LiveboardEmbed(getRootEl(), {
308
+ ...defaultViewConfig,
309
+ fullHeight: true,
310
+ liveboardId,
311
+ } as LiveboardViewConfig) as any;
312
+ const spySetIFrameHeight = jest.spyOn(myObject, 'setIFrameHeight');
313
+
314
+ myObject.render();
315
+ myObject.setIframeHeightForNonEmbedLiveboard({
316
+ data: { currentPath: '/embed/insights/viz/' },
317
+ type: 'Route',
318
+ });
319
+
320
+ // Assert that setIFrameHeight is not called
321
+ expect(spySetIFrameHeight).not.toHaveBeenCalled();
322
+ });
323
+
324
+ test('should call setIFrameHeight if currentPath starts with "/some/other/path/"', () => {
325
+ const myObject = new LiveboardEmbed(getRootEl(), {
326
+ ...defaultViewConfig,
327
+ fullHeight: true,
328
+ liveboardId,
329
+ } as LiveboardViewConfig) as any;
330
+ const spySetIFrameHeight = jest
331
+ .spyOn(myObject, 'setIFrameHeight')
332
+ .mockImplementation(jest.fn());
333
+
334
+ myObject.render();
335
+ myObject.setIframeHeightForNonEmbedLiveboard({
336
+ data: { currentPath: '/some/other/path/' },
337
+ type: 'Route',
338
+ });
339
+
340
+ // Assert that setIFrameHeight is not called
341
+ expect(spySetIFrameHeight).toHaveBeenCalled();
342
+ });
343
+
272
344
  test('Should set the visible vizs', async () => {
273
345
  const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
274
346
  ...defaultViewConfig,
@@ -467,22 +539,23 @@ describe('Liveboard/viz embed tests', () => {
467
539
 
468
540
  let resizeObserverCb: any;
469
541
  (window as any).ResizeObserver = window.ResizeObserver
470
- || jest.fn().mockImplementation((resizeObserverCbParam) => {
471
- resizeObserverCb = resizeObserverCbParam;
472
- return ({
473
- disconnect: jest.fn(),
474
- observe: jest.fn(),
475
- unobserve: jest.fn(),
542
+ || jest.fn().mockImplementation((resizeObserverCbParam) => {
543
+ resizeObserverCb = resizeObserverCbParam;
544
+ return {
545
+ disconnect: jest.fn(),
546
+ observe: jest.fn(),
547
+ unobserve: jest.fn(),
548
+ };
476
549
  });
477
- });
478
550
 
479
551
  libEmbed.preRender();
480
552
 
481
553
  await waitFor(() => !!getIFrameEl());
482
554
 
483
555
  const ts = '__tsEmbed';
484
- expect(document.getElementById(libEmbed.getPreRenderIds().wrapper)[ts])
485
- .toEqual(libEmbed);
556
+ expect(document.getElementById(libEmbed.getPreRenderIds().wrapper)[ts]).toEqual(
557
+ libEmbed,
558
+ );
486
559
 
487
560
  const testLiveboardId = 'testLiveboardId';
488
561
  const newLibEmbed = new LiveboardEmbed(getRootEl(), {
@@ -256,6 +256,22 @@ export interface LiveboardViewConfig
256
256
  * ```
257
257
  */
258
258
  enableAskSage?: boolean;
259
+ /**
260
+ * This flag is used to enable the 2 column layout in liveboard
261
+ *
262
+ * @type {boolean}
263
+ * @default false
264
+ * @version SDK: 1.32.0 | ThoughtSpot:10.1.0.cl
265
+ *
266
+ * @example
267
+ * ```js
268
+ * const embed = new LiveboardEmbed('#embed-container', {
269
+ * ... // other options
270
+ * enable2ColumnLayout: true,
271
+ * })
272
+ * ```
273
+ */
274
+ enable2ColumnLayout?: boolean;
259
275
  }
260
276
 
261
277
  /**
@@ -312,6 +328,7 @@ export class LiveboardEmbed extends V1Embed {
312
328
  showLiveboardTitle,
313
329
  isLiveboardHeaderSticky = true,
314
330
  enableAskSage,
331
+ enable2ColumnLayout,
315
332
  } = this.viewConfig;
316
333
 
317
334
  const preventLiveboardFilterRemoval = this.viewConfig.preventLiveboardFilterRemoval
@@ -339,6 +356,9 @@ export class LiveboardEmbed extends V1Embed {
339
356
  if (liveboardV2 !== undefined) {
340
357
  params[Param.LiveboardV2Enabled] = liveboardV2;
341
358
  }
359
+ if (enable2ColumnLayout !== undefined) {
360
+ params[Param.Enable2ColumnLayout] = enable2ColumnLayout;
361
+ }
342
362
  if (hideTabPanel) {
343
363
  params[Param.HideTabPanel] = hideTabPanel;
344
364
  }
@@ -409,9 +429,13 @@ export class LiveboardEmbed extends V1Embed {
409
429
  };
410
430
 
411
431
  private setIframeHeightForNonEmbedLiveboard = (data: MessagePayload) => {
412
- if (!data.data.currentPath.startsWith('/embed/viz/')) {
413
- this.setIFrameHeight(this.defaultHeight);
432
+ if (
433
+ data.data.currentPath.startsWith('/embed/viz/')
434
+ || data.data.currentPath.startsWith('/embed/insights/viz/')
435
+ ) {
436
+ return;
414
437
  }
438
+ this.setIFrameHeight(this.defaultHeight);
415
439
  };
416
440
 
417
441
  private setActiveTab(data: { tabId: string }) {