@thoughtspot/visual-embed-sdk 1.28.2 → 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 +106 -9
  36. package/cjs/src/types.d.ts.map +1 -1
  37. package/cjs/src/types.js +87 -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 +106 -9
  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 +117 -28
  63. package/dist/tsembed-react.js +117 -28
  64. package/dist/tsembed.es.js +117 -28
  65. package/dist/tsembed.js +117 -28
  66. package/dist/visual-embed-sdk-react-full.d.ts +185 -12
  67. package/dist/visual-embed-sdk-react.d.ts +185 -12
  68. package/dist/visual-embed-sdk.d.ts +185 -12
  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 +106 -9
  104. package/lib/src/types.d.ts.map +1 -1
  105. package/lib/src/types.js +87 -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 +186 -13
  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 +106 -8
@@ -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
  }
@@ -2270,11 +2364,7 @@ declare module '@thoughtspot/visual-embed-sdk/types' {
2270
2364
  *
2271
2365
  * **Note**: This option does not apply to the classic homepage.
2272
2366
  * To access the updated modular homepage, set
2273
- <<<<<<< HEAD
2274
- * `modularHomeExperience` to `true` (available as Early Access feature in 9.12.0.cl).
2275
- =======
2276
2367
  * `modularHomeExperience` to `true` (available as Early Access feature in 9.12.5.cl).
2277
- >>>>>>> 64e22666... typo fixes
2278
2368
  *
2279
2369
  * @version SDK: 1.28.0 | Thoughtspot: 9.12.5.cl
2280
2370
  * @example
@@ -4417,7 +4507,14 @@ declare module '@thoughtspot/visual-embed-sdk/types' {
4417
4507
  HideSearchBar = "hideSearchBar",
4418
4508
  ClientLogLevel = "clientLogLevel",
4419
4509
  OverrideNativeConsole = "overrideConsoleLogs",
4420
- 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"
4421
4518
  }
4422
4519
  /**
4423
4520
  * ThoughtSpot application pages include actions and menu commands
@@ -4553,6 +4650,18 @@ declare module '@thoughtspot/visual-embed-sdk/types' {
4553
4650
  * ```
4554
4651
  */
4555
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",
4556
4665
  /**
4557
4666
  * Filter configuration options on a Liveboard and Search page.
4558
4667
  * Allows configuring filter options when adding filters to a
@@ -4595,6 +4704,28 @@ declare module '@thoughtspot/visual-embed-sdk/types' {
4595
4704
  * ```
4596
4705
  */
4597
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",
4598
4729
  /**
4599
4730
  * @hidden
4600
4731
  */
@@ -5026,6 +5157,28 @@ declare module '@thoughtspot/visual-embed-sdk/types' {
5026
5157
  * @version SDK: 1.21.0 | ThoughtSpot: 9.2.0.cl
5027
5158
  */
5028
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",
5029
5182
  /**
5030
5183
  * The **Remove** action that appears when cross filters are applied
5031
5184
  * on a Liveboard.
@@ -5267,6 +5420,26 @@ declare module '@thoughtspot/visual-embed-sdk/types' {
5267
5420
  * @version SDK : 1.26.0 | Thoughtspot: 9.7.0.cl
5268
5421
  */
5269
5422
  LiveboardUsers = "liveboardUsers",
5423
+ /**
5424
+ * Action ID for the Parent TML action
5425
+ * The parent action **TML** must be included to access TML-related options
5426
+ * within the cascading menu (specific to the answer page)
5427
+ *
5428
+ * @example
5429
+ * ```js
5430
+ * // to include specific TML actions
5431
+ * visibleActions: [Action.TML, Action.ExportTML, Action.EditTML]
5432
+ *
5433
+ * ```
5434
+ * @example
5435
+ * ```js
5436
+ * hiddenAction: [Action.TML] // hide all TML actions
5437
+ * disabledActions: [Action.TML] // to disable all TML actions
5438
+ * ```
5439
+ *
5440
+ * @version SDK : 1.28.2 | Thoughtspot: 9.10.5.cl
5441
+ */
5442
+ TML = "tml",
5270
5443
  /**
5271
5444
  * Action ID for to hide Verified Liveboard Banner
5272
5445
  *
@@ -5308,15 +5481,15 @@ declare module '@thoughtspot/visual-embed-sdk/types' {
5308
5481
  */
5309
5482
  RemoveFromWatchlist = "removeFromWatchlist",
5310
5483
  /**
5311
- * The **Copy KPI Link** menu action on KPI watchlist.
5484
+ * The **Organise Favourites** action on Homepage Favourite Module.
5312
5485
  *
5313
5486
  * @example
5314
5487
  * ```js
5315
- * disabledActions: [Action.CopyKpiLink]
5488
+ * disabledActions: [Action.OrganiseFavourites]
5316
5489
  * ```
5317
- * @version SDK : 1.27.9 | Thoughtspot: 9.12.5.cl
5490
+ * @version SDK : 1.32.0 | Thoughtspot: 10.0.0.cl
5318
5491
  */
5319
- CopyKpiLink = "copyKpiLink",
5492
+ OrganiseFavourites = "organiseFavourites",
5320
5493
  /**
5321
5494
  * Action ID for AI Highlights button
5322
5495
  *
@@ -5819,7 +5992,7 @@ declare module '@thoughtspot/visual-embed-sdk/embed/sage' {
5819
5992
  * @summary TS Sage embed
5820
5993
  * @author Mourya Balabhadra <mourya.balabhadra@thoughtspot.com>
5821
5994
  */
5822
- import { Action, DOMSelector, ViewConfig } from '@thoughtspot/visual-embed-sdk/types';
5995
+ import { DOMSelector, ViewConfig } from '@thoughtspot/visual-embed-sdk/types';
5823
5996
  import { V1Embed } from '@thoughtspot/visual-embed-sdk/embed/ts-embed';
5824
5997
  /**
5825
5998
  * Configuration for search options
@@ -5857,7 +6030,7 @@ declare module '@thoughtspot/visual-embed-sdk/embed/sage' {
5857
6030
  showObjectResults?: boolean;
5858
6031
  /**
5859
6032
  * flag used by the TS product tour page to show the blue search bar
5860
- * 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
5861
6034
  * experience where it mimics closer to the non-embed case.
5862
6035
  * The Sample questions container is collapsed when this value is set after
5863
6036
  * does a search.
@@ -5868,8 +6041,9 @@ declare module '@thoughtspot/visual-embed-sdk/embed/sage' {
5868
6041
  isProductTour?: boolean;
5869
6042
  /**
5870
6043
  * Show or hide the search bar title.
6044
+ * @version SDK: 1.29.0 | Thoughtspot: 9.8.0.cl, 9.8.0.sw
5871
6045
  *
5872
- * @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
5873
6047
  */
5874
6048
  hideSearchBarTitle?: boolean;
5875
6049
  /**
@@ -5939,7 +6113,6 @@ declare module '@thoughtspot/visual-embed-sdk/embed/sage' {
5939
6113
  */
5940
6114
  searchOptions?: SearchOptions;
5941
6115
  }
5942
- export const HiddenActionItemByDefaultForSageEmbed: Action[];
5943
6116
  /**
5944
6117
  * Embed ThoughtSpot LLM and GPT-based Natural Language Search component.
5945
6118
  *
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thoughtspot/visual-embed-sdk",
3
- "version": "1.28.2",
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 }) {