@sisense/sdk-ui 2.20.0 → 2.22.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (212) hide show
  1. package/dist/ai.cjs +68 -68
  2. package/dist/ai.js +891 -845
  3. package/dist/analytics-composer/node.cjs +1 -1
  4. package/dist/analytics-composer/node.js +1002 -858
  5. package/dist/analytics-composer.cjs +23 -23
  6. package/dist/analytics-composer.js +8 -8
  7. package/dist/{dimensions-Blw0p98x.js → dimensions-BiLyFpCg.js} +1 -1
  8. package/dist/{dimensions-CgMckRe2.cjs → dimensions-X4_igtmO.cjs} +1 -1
  9. package/dist/{execute-query-VxgY3tbz.js → execute-query-BEeqqDl6.js} +1499 -1491
  10. package/dist/execute-query-DJDE0zRU.cjs +1 -0
  11. package/dist/{index-0brX9D6q.cjs → index-NyouhE_A.cjs} +1 -1
  12. package/dist/{index-Ck90GjPy.js → index-kxX21arA.js} +15 -1
  13. package/dist/index.cjs +451 -436
  14. package/dist/index.js +24710 -23005
  15. package/dist/index.umd.js +689 -624
  16. package/dist/packages/sdk-ui/src/domains/dashboarding/common-filters/common-filters-connector.d.ts +1 -1
  17. package/dist/packages/sdk-ui/src/domains/dashboarding/common-filters/selection-utils.d.ts +4 -3
  18. package/dist/packages/sdk-ui/src/domains/dashboarding/common-filters/types.d.ts +10 -0
  19. package/dist/packages/sdk-ui/src/domains/dashboarding/common-filters/use-common-filters.d.ts +1 -1
  20. package/dist/packages/sdk-ui/src/domains/dashboarding/common-filters/utils.d.ts +2 -1
  21. package/dist/packages/sdk-ui/src/domains/dashboarding/components/content-panel.d.ts +1 -1
  22. package/dist/packages/sdk-ui/src/domains/dashboarding/components/editable-layout/components/editable-layout-row.d.ts +1 -1
  23. package/dist/packages/sdk-ui/src/domains/dashboarding/components/editable-layout/editable-layout.d.ts +1 -1
  24. package/dist/packages/sdk-ui/src/domains/dashboarding/components/editable-layout/helpers.d.ts +1 -1
  25. package/dist/packages/sdk-ui/src/domains/dashboarding/dashboard-model/index.d.ts +1 -1
  26. package/dist/packages/sdk-ui/src/domains/dashboarding/dashboard-model/translate-dashboard-utils.d.ts +8 -1
  27. package/dist/packages/sdk-ui/src/domains/dashboarding/dashboard-model/types.d.ts +9 -2
  28. package/dist/packages/sdk-ui/src/domains/dashboarding/dashboard-model/use-dashboard-model/dashboard-model-reducer/index.d.ts +4 -0
  29. package/dist/packages/sdk-ui/src/domains/dashboarding/dashboard-model/use-dashboard-model/dashboard-model-reducer/persist-dashboard-model-middleware.d.ts +13 -0
  30. package/dist/packages/sdk-ui/src/domains/dashboarding/dashboard-model/use-dashboard-model/{use-dashboard-model-reducer.d.ts → dashboard-model-reducer/types.d.ts} +19 -36
  31. package/dist/packages/sdk-ui/src/domains/dashboarding/dashboard-model/use-dashboard-model/dashboard-model-reducer/use-dashboard-model-reducer.d.ts +9 -0
  32. package/dist/packages/sdk-ui/src/domains/dashboarding/dashboard-model/use-dashboard-model/dashboard-model-reducer/utils.d.ts +28 -0
  33. package/dist/packages/sdk-ui/src/domains/dashboarding/dashboard-model/use-dashboard-model/use-dashboard-persistence.d.ts +4 -4
  34. package/dist/packages/sdk-ui/src/domains/dashboarding/hooks/duplicate-widget/duplicate-widget-utils.d.ts +34 -0
  35. package/dist/packages/sdk-ui/src/domains/dashboarding/hooks/duplicate-widget/index.d.ts +2 -0
  36. package/dist/packages/sdk-ui/src/domains/dashboarding/hooks/duplicate-widget/use-duplicate-widget-menu-item.d.ts +57 -0
  37. package/dist/packages/sdk-ui/src/domains/dashboarding/hooks/jtd/jtd-config-transformers.d.ts +1 -1
  38. package/dist/packages/sdk-ui/src/domains/dashboarding/hooks/jtd/jtd-filters.d.ts +1 -1
  39. package/dist/packages/sdk-ui/src/domains/dashboarding/hooks/jtd/jtd-handlers.d.ts +1 -1
  40. package/dist/packages/sdk-ui/src/domains/dashboarding/hooks/jtd/jtd-types.d.ts +1 -1
  41. package/dist/packages/sdk-ui/src/domains/dashboarding/hooks/jtd/jtd-widget-transforms.d.ts +1 -1
  42. package/dist/packages/sdk-ui/src/domains/dashboarding/hooks/use-jtd-widget.d.ts +1 -1
  43. package/dist/packages/sdk-ui/src/domains/dashboarding/hooks/use-jtd.d.ts +1 -1
  44. package/dist/packages/sdk-ui/src/domains/dashboarding/hooks/use-tabber.d.ts +2 -1
  45. package/dist/packages/sdk-ui/src/domains/dashboarding/types.d.ts +44 -3
  46. package/dist/packages/sdk-ui/src/domains/dashboarding/use-composed-dashboard.d.ts +15 -3
  47. package/dist/packages/sdk-ui/src/domains/dashboarding/utils.d.ts +1 -1
  48. package/dist/packages/sdk-ui/src/domains/filters/components/cascading-filter-tile/cascading-filter-tile.d.ts +13 -0
  49. package/dist/packages/sdk-ui/src/domains/filters/components/cascading-filter-tile/cascading-level-filter.d.ts +11 -1
  50. package/dist/packages/sdk-ui/src/domains/filters/components/cascading-filter-tile/use-cascadding-filter-tile-menu-items/use-cascadding-filter-tile-lock-menu-item.d.ts +13 -0
  51. package/dist/packages/sdk-ui/src/domains/filters/components/cascading-filter-tile/use-cascadding-filter-tile-menu-items/use-cascadding-filter-tile-menu-items.d.ts +14 -0
  52. package/dist/packages/sdk-ui/src/domains/filters/components/common/reorderable-list.d.ts +32 -0
  53. package/dist/packages/sdk-ui/src/domains/filters/components/criteria-filter-tile/criteria-filter-tile.d.ts +13 -0
  54. package/dist/packages/sdk-ui/src/domains/filters/components/custom-filter-tile.d.ts +13 -0
  55. package/dist/packages/sdk-ui/src/domains/filters/components/date-filter/date-range-filter-tile/date-range-filter-tile.d.ts +13 -0
  56. package/dist/packages/sdk-ui/src/domains/filters/components/date-filter/relative-date-filter-tile/relative-date-filter-tile.d.ts +13 -0
  57. package/dist/packages/sdk-ui/src/domains/filters/components/{filter-tile.d.ts → filter-tile/filter-tile.d.ts} +13 -0
  58. package/dist/packages/sdk-ui/src/domains/filters/components/filter-tile/index.d.ts +1 -0
  59. package/dist/packages/sdk-ui/src/domains/filters/components/filter-tile/types.d.ts +36 -0
  60. package/dist/packages/sdk-ui/src/domains/filters/components/filter-tile-container.d.ts +12 -0
  61. package/dist/packages/sdk-ui/src/domains/filters/components/filters-panel/types.d.ts +27 -1
  62. package/dist/packages/sdk-ui/src/domains/filters/components/index.d.ts +1 -1
  63. package/dist/packages/sdk-ui/src/domains/filters/components/member-filter-tile/member-filter-tile.d.ts +13 -0
  64. package/dist/packages/sdk-ui/src/domains/filters/components/unsupported-filter-tile.d.ts +17 -1
  65. package/dist/packages/sdk-ui/src/domains/filters/shared/clone-filter-and-toggle-locked.d.ts +7 -0
  66. package/dist/packages/sdk-ui/src/domains/filters/shared/filter-tile-menu-button.d.ts +10 -0
  67. package/dist/packages/sdk-ui/src/domains/filters/shared/use-filter-tile-menu-items/use-filter-tile-lock-menu-item.d.ts +15 -0
  68. package/dist/packages/sdk-ui/src/domains/filters/shared/use-filter-tile-menu-items/use-filter-tile-menu-items.d.ts +14 -0
  69. package/dist/packages/sdk-ui/src/domains/formulas/index.d.ts +0 -1
  70. package/dist/packages/sdk-ui/src/domains/formulas/use-get-shared-formula.d.ts +20 -7
  71. package/dist/packages/sdk-ui/src/domains/visualizations/core/chart-data-options/translate-boxplot-data-options.d.ts +2 -2
  72. package/dist/packages/sdk-ui/src/domains/widgets/components/chart-widget/chart-widget.d.ts +1 -1
  73. package/dist/packages/sdk-ui/src/domains/widgets/components/chart-widget/index.d.ts +1 -0
  74. package/dist/packages/sdk-ui/src/domains/widgets/components/chart-widget/types.d.ts +100 -0
  75. package/dist/packages/sdk-ui/src/domains/widgets/components/chart-widget/use-with-chart-widget-drilldown.d.ts +1 -1
  76. package/dist/packages/sdk-ui/src/domains/widgets/components/{common-widget.d.ts → common-widget/common-widget.d.ts} +1 -1
  77. package/dist/packages/sdk-ui/src/domains/widgets/components/common-widget/index.d.ts +2 -0
  78. package/dist/packages/sdk-ui/src/domains/widgets/components/common-widget/types.d.ts +8 -0
  79. package/dist/packages/sdk-ui/src/domains/widgets/components/{custom-widget.d.ts → custom-widget/custom-widget.d.ts} +1 -1
  80. package/dist/packages/sdk-ui/src/domains/widgets/components/custom-widget/index.d.ts +2 -0
  81. package/dist/packages/sdk-ui/src/domains/widgets/components/custom-widget/types.d.ts +71 -0
  82. package/dist/packages/sdk-ui/src/domains/widgets/components/pivot-table-widget/index.d.ts +1 -0
  83. package/dist/packages/sdk-ui/src/domains/widgets/components/pivot-table-widget/pivot-table-widget.d.ts +1 -1
  84. package/dist/packages/sdk-ui/src/domains/widgets/components/pivot-table-widget/types.d.ts +141 -0
  85. package/dist/packages/sdk-ui/src/domains/widgets/components/pivot-table-widget/use-with-pivot-table-widget-drilldown.d.ts +1 -1
  86. package/dist/packages/sdk-ui/src/domains/widgets/components/tabber-buttons-widget/types.d.ts +1 -1
  87. package/dist/packages/sdk-ui/src/domains/widgets/components/table-widget/index.d.ts +2 -0
  88. package/dist/packages/sdk-ui/src/domains/widgets/components/{table-widget.d.ts → table-widget/table-widget.d.ts} +1 -1
  89. package/dist/packages/sdk-ui/src/domains/widgets/components/table-widget/types.d.ts +61 -0
  90. package/dist/packages/sdk-ui/src/domains/widgets/components/text-widget/index.d.ts +2 -0
  91. package/dist/packages/sdk-ui/src/domains/widgets/components/{text-widget.d.ts → text-widget/text-widget.d.ts} +1 -1
  92. package/dist/packages/sdk-ui/src/domains/widgets/components/text-widget/types.d.ts +29 -0
  93. package/dist/packages/sdk-ui/src/domains/widgets/components/widget/index.d.ts +2 -0
  94. package/dist/packages/sdk-ui/src/domains/widgets/components/widget/types.d.ts +45 -0
  95. package/dist/packages/sdk-ui/src/domains/widgets/components/{widget.d.ts → widget/widget.d.ts} +1 -1
  96. package/dist/packages/sdk-ui/src/domains/widgets/components/widget-by-id/translate-dashboard-filters.d.ts +425 -425
  97. package/dist/packages/sdk-ui/src/domains/widgets/components/widget-by-id/translate-widget-filters.d.ts +34 -34
  98. package/dist/packages/sdk-ui/src/domains/widgets/components/widget-by-id/translate-widget-style-options/index.d.ts +1 -0
  99. package/dist/packages/sdk-ui/src/domains/widgets/components/widget-by-id/translate-widget-style-options/to-widget-dto-style.d.ts +63 -0
  100. package/dist/packages/sdk-ui/src/domains/widgets/components/widget-by-id/utils.d.ts +11 -5
  101. package/dist/packages/sdk-ui/src/domains/widgets/helpers/header-menu-utils.d.ts +9 -0
  102. package/dist/packages/sdk-ui/src/domains/widgets/helpers/index.d.ts +7 -0
  103. package/dist/packages/sdk-ui/src/domains/widgets/shared/widget-container/index.d.ts +2 -0
  104. package/dist/packages/sdk-ui/src/domains/widgets/shared/{widget-container.d.ts → widget-container/widget-container.d.ts} +7 -3
  105. package/dist/packages/sdk-ui/src/domains/widgets/shared/widget-header/types.d.ts +42 -0
  106. package/dist/packages/sdk-ui/src/domains/widgets/shared/widget-header/widget-header-info-button.d.ts +13 -0
  107. package/dist/packages/sdk-ui/src/domains/widgets/shared/widget-header/widget-header-toolbar.d.ts +23 -0
  108. package/dist/packages/sdk-ui/src/domains/widgets/shared/widget-header/widget-header.d.ts +14 -0
  109. package/dist/packages/sdk-ui/src/domains/widgets/shared/widget-header/widget-menu-button.d.ts +5 -0
  110. package/dist/packages/sdk-ui/src/domains/widgets/widget-model/widget-model-translator/widget-model-translator.d.ts +8 -1
  111. package/dist/packages/sdk-ui/src/domains/widgets/widget-model/widget-model.d.ts +1 -1
  112. package/dist/packages/sdk-ui/src/infra/api/rest-api.d.ts +2 -1
  113. package/dist/packages/sdk-ui/src/infra/api/types/dashboard-dto.d.ts +2 -1
  114. package/dist/packages/sdk-ui/src/infra/app/client-application.d.ts +17 -0
  115. package/dist/packages/sdk-ui/src/infra/app/settings/settings.d.ts +4 -0
  116. package/dist/packages/sdk-ui/src/infra/app/settings/types/deployment-props.d.ts +2 -1
  117. package/dist/packages/sdk-ui/src/infra/app/settings/types/features.d.ts +18 -1
  118. package/dist/packages/sdk-ui/src/infra/contexts/custom-widgets-provider/types.d.ts +41 -12
  119. package/dist/packages/sdk-ui/src/infra/contexts/custom-widgets-provider/use-execute-custom-widget-query.d.ts +12 -3
  120. package/dist/packages/sdk-ui/src/infra/contexts/plugin-provider/index.d.ts +5 -0
  121. package/dist/packages/sdk-ui/src/infra/contexts/plugin-provider/plugin-context.d.ts +15 -0
  122. package/dist/packages/sdk-ui/src/infra/contexts/plugin-provider/plugin-provider.d.ts +21 -0
  123. package/dist/packages/sdk-ui/src/infra/contexts/plugin-provider/types.d.ts +50 -0
  124. package/dist/packages/sdk-ui/src/infra/contexts/plugin-provider/validate-plugins.d.ts +9 -0
  125. package/dist/packages/sdk-ui/src/infra/translation/resources/__external__/de-de.d.ts +14 -0
  126. package/dist/packages/sdk-ui/src/infra/translation/resources/__external__/en-us.d.ts +14 -0
  127. package/dist/packages/sdk-ui/src/infra/translation/resources/__external__/es-ar.d.ts +14 -0
  128. package/dist/packages/sdk-ui/src/infra/translation/resources/__external__/es-es.d.ts +14 -0
  129. package/dist/packages/sdk-ui/src/infra/translation/resources/__external__/fr-fr.d.ts +14 -0
  130. package/dist/packages/sdk-ui/src/infra/translation/resources/__external__/it-it.d.ts +14 -0
  131. package/dist/packages/sdk-ui/src/infra/translation/resources/__external__/ja-jp.d.ts +14 -0
  132. package/dist/packages/sdk-ui/src/infra/translation/resources/__external__/ko-kr.d.ts +14 -0
  133. package/dist/packages/sdk-ui/src/infra/translation/resources/__external__/nl-nl.d.ts +14 -0
  134. package/dist/packages/sdk-ui/src/infra/translation/resources/__external__/pt-br.d.ts +14 -0
  135. package/dist/packages/sdk-ui/src/infra/translation/resources/__external__/ru-ru.d.ts +14 -0
  136. package/dist/packages/sdk-ui/src/infra/translation/resources/__external__/tr-tr.d.ts +14 -0
  137. package/dist/packages/sdk-ui/src/infra/translation/resources/__external__/zh-cn.d.ts +14 -0
  138. package/dist/packages/sdk-ui/src/infra/translation/resources/en.d.ts +14 -0
  139. package/dist/packages/sdk-ui/src/infra/translation/resources/index.d.ts +28 -0
  140. package/dist/packages/sdk-ui/src/modules/ai/api/chat-rest-api.d.ts +5 -3
  141. package/dist/packages/sdk-ui/src/modules/ai/api/narration-endpoints.d.ts +25 -0
  142. package/dist/packages/sdk-ui/src/modules/ai/api/types.d.ts +1 -1
  143. package/dist/packages/sdk-ui/src/modules/ai/chart/nlq-chart-widget.d.ts +2 -2
  144. package/dist/packages/sdk-ui/src/modules/ai/get-nlg-insights-from-widget.d.ts +4 -1
  145. package/dist/packages/sdk-ui/src/modules/ai/use-get-nlq-result.d.ts +1 -1
  146. package/dist/packages/sdk-ui/src/modules/analytics-composer/common/utils.d.ts +2 -1
  147. package/dist/packages/sdk-ui/src/modules/analytics-composer/dashboard/stringify-widgets.d.ts +1 -1
  148. package/dist/packages/sdk-ui/src/modules/analytics-composer/nlq-v3-translator/translate-dimensions-from-json.d.ts +3 -2
  149. package/dist/packages/sdk-ui/src/modules/analytics-composer/nlq-v3-translator/translate-dimensions-to-json.d.ts +6 -6
  150. package/dist/packages/sdk-ui/src/modules/analytics-composer/nlq-v3-translator/translate-filters-to-json.d.ts +3 -4
  151. package/dist/packages/sdk-ui/src/modules/analytics-composer/nlq-v3-translator/translate-measures-from-json.d.ts +13 -28
  152. package/dist/packages/sdk-ui/src/modules/analytics-composer/nlq-v3-translator/translate-measures-to-json.d.ts +6 -7
  153. package/dist/packages/sdk-ui/src/modules/analytics-composer/nlq-v3-translator/types.d.ts +45 -0
  154. package/dist/packages/sdk-ui/src/modules/analytics-composer/types.d.ts +3 -1
  155. package/dist/packages/sdk-ui/src/modules/analytics-composer/widget/to-widget-code.d.ts +1 -1
  156. package/dist/packages/sdk-ui/src/modules/analytics-composer/widget/to-widget-props.d.ts +1 -1
  157. package/dist/packages/sdk-ui/src/modules/analytics-composer/widget/widget-composer.d.ts +1 -1
  158. package/dist/packages/sdk-ui/src/props.d.ts +19 -427
  159. package/dist/packages/sdk-ui/src/public-api/internal.d.ts +4 -0
  160. package/dist/packages/sdk-ui/src/public-api/public.d.ts +7 -7
  161. package/dist/packages/sdk-ui/src/public-api/sisense-internal.d.ts +6 -0
  162. package/dist/packages/sdk-ui/src/shared/components/alert/alert.d.ts +91 -0
  163. package/dist/packages/sdk-ui/src/shared/components/alert/index.d.ts +2 -0
  164. package/dist/packages/sdk-ui/src/shared/components/dynamic-size-container/default-size.d.ts +6 -6
  165. package/dist/packages/sdk-ui/src/shared/components/menu/menu-button.d.ts +2 -1
  166. package/dist/packages/sdk-ui/src/shared/components/quota-notification/quota-notification.d.ts +32 -0
  167. package/dist/packages/sdk-ui/src/shared/hooks/use-app-settings.d.ts +11 -0
  168. package/dist/packages/sdk-ui/src/shared/hooks/use-quota-notification.d.ts +54 -0
  169. package/dist/packages/sdk-ui/src/shared/hooks/use-quota-warning-dismissed.d.ts +8 -0
  170. package/dist/packages/sdk-ui/src/shared/icons/warning-icon.d.ts +6 -0
  171. package/dist/packages/sdk-ui/src/shared/icons/x-circle-icon.d.ts +6 -0
  172. package/dist/packages/sdk-ui/src/shared/types/menu-item.d.ts +17 -0
  173. package/dist/packages/sdk-ui/src/types.d.ts +113 -6
  174. package/dist/{use-common-filters-B2wOzse2.js → quota-notification-D6oMJal8.js} +11177 -10827
  175. package/dist/{use-common-filters-BCebg2_K.cjs → quota-notification-z3dv2KoH.cjs} +164 -114
  176. package/dist/translations/de-de.cjs +1 -1
  177. package/dist/translations/de-de.js +16 -2
  178. package/dist/translations/en-us.cjs +1 -1
  179. package/dist/translations/en-us.js +1 -1
  180. package/dist/translations/es-ar.cjs +1 -1
  181. package/dist/translations/es-ar.js +16 -2
  182. package/dist/translations/es-es.cjs +1 -1
  183. package/dist/translations/es-es.js +16 -2
  184. package/dist/translations/fr-fr.cjs +1 -1
  185. package/dist/translations/fr-fr.js +16 -2
  186. package/dist/translations/it-it.cjs +1 -1
  187. package/dist/translations/it-it.js +16 -2
  188. package/dist/translations/ja-jp.cjs +1 -1
  189. package/dist/translations/ja-jp.js +16 -2
  190. package/dist/translations/ko-kr.cjs +1 -1
  191. package/dist/translations/ko-kr.js +16 -2
  192. package/dist/translations/nl-nl.cjs +1 -1
  193. package/dist/translations/nl-nl.js +16 -2
  194. package/dist/translations/pt-br.cjs +1 -1
  195. package/dist/translations/pt-br.js +16 -2
  196. package/dist/translations/ru-ru.cjs +1 -1
  197. package/dist/translations/ru-ru.js +16 -2
  198. package/dist/translations/tr-tr.cjs +1 -1
  199. package/dist/translations/tr-tr.js +16 -2
  200. package/dist/translations/zh-cn.cjs +1 -1
  201. package/dist/translations/zh-cn.js +16 -2
  202. package/dist/{types-YU936hyL.cjs → types-CoY6F8Ma.cjs} +1 -1
  203. package/dist/{types-tDJE6TNR.js → types-ixSwJkxM.js} +1 -1
  204. package/dist/{utils-BRCTwjTN.js → utils-BP-BglHE.js} +5797 -5781
  205. package/dist/{utils-pvzOGByh.cjs → utils-C8YMrOdw.cjs} +36 -36
  206. package/dist/{widget-composer-T6nvM6Xc.js → widget-composer-CUUFoCb9.js} +3 -3
  207. package/dist/{widget-composer-ChJ9V_fN.cjs → widget-composer-DI4sHaNe.cjs} +3 -3
  208. package/package.json +13 -10
  209. package/dist/execute-query-CgkFRn7s.cjs +0 -1
  210. package/dist/packages/sdk-ui/src/domains/widgets/shared/widget-header-info-button.d.ts +0 -9
  211. package/dist/packages/sdk-ui/src/domains/widgets/shared/widget-header.d.ts +0 -13
  212. /package/dist/packages/sdk-ui/src/domains/dashboarding/dashboard-model/use-dashboard-model/{use-dasboard-model-utils.d.ts → use-dashboard-model-utils.d.ts} +0 -0
@@ -1,9 +1,9 @@
1
1
  import { TFunction } from '@sisense/sdk-common';
2
2
  import { type Filter } from '@sisense/sdk-data';
3
3
  import { PivotTableDataOptions } from '../../../domains/visualizations/core/chart-data-options/types';
4
+ import { ChartWidgetProps } from '../../../domains/widgets/components/chart-widget/types';
4
5
  import { WidgetTypeInternal } from '../../../domains/widgets/widget-model/types';
5
6
  import { OpenMenuFn } from '../../../infra/contexts/menu-provider/types';
6
- import { ChartWidgetProps } from '../../../props';
7
7
  import { ChartDataOptions, RenderToolbarHandler } from '../../../types';
8
8
  import { CommonFiltersOptions } from './types.js';
9
9
  type CommonFiltersConnectionProps = Pick<ChartWidgetProps, 'highlights' | 'onDataPointClick' | 'onDataPointsSelected' | 'onDataPointContextMenu'> & {
@@ -1,15 +1,16 @@
1
1
  import { Attribute, Filter } from '@sisense/sdk-data';
2
2
  import { PivotTableDataOptions } from '../../../domains/visualizations/core/chart-data-options/types.js';
3
3
  import { WidgetTypeInternal } from '../../../domains/widgets/widget-model/types.js';
4
- import { ChartDataOptions, ChartDataPoint, MenuItemSection, PivotTableDataPoint } from '../../../types.js';
4
+ import { ChartDataOptions, ChartDataPoint, GenericDataOptions, MenuItemSection, PivotTableDataPoint } from '../../../types.js';
5
+ import { AbstractDataPointWithEntries } from './types.js';
5
6
  export declare const SELECTION_TITLE_MAXIMUM_ITEMS = 2;
6
7
  type DataSelection = {
7
8
  attribute: Attribute;
8
9
  values: (string | number)[];
9
10
  displayValues: string[];
10
11
  };
11
- export declare function getWidgetSelections(widgetType: WidgetTypeInternal, dataOptions: ChartDataOptions | PivotTableDataOptions, points: Array<ChartDataPoint | PivotTableDataPoint>): DataSelection[];
12
- export declare function getSelectableWidgetAttributes(widgetType: WidgetTypeInternal, dataOptions: ChartDataOptions | PivotTableDataOptions): Attribute[];
12
+ export declare function getWidgetSelections(widgetType: WidgetTypeInternal, dataOptions: ChartDataOptions | PivotTableDataOptions | GenericDataOptions, points: Array<ChartDataPoint | PivotTableDataPoint | AbstractDataPointWithEntries>): DataSelection[];
13
+ export declare function getSelectableWidgetAttributes(widgetType: WidgetTypeInternal, dataOptions: ChartDataOptions | PivotTableDataOptions | GenericDataOptions): Attribute[];
13
14
  type FiltersWithSelectionFlag = {
14
15
  filters: Filter[];
15
16
  isSelection: boolean;
@@ -1,5 +1,6 @@
1
1
  import { CascadingFilter, Filter } from '@sisense/sdk-data';
2
2
  import { DeepRequired } from 'ts-essentials';
3
+ import { DataPointEntry } from '../../../types';
3
4
  /**
4
5
  * Common filters apply mode.
5
6
  */
@@ -52,3 +53,12 @@ export type FiltersIgnoringRules = {
52
53
  export type CompleteCommonFiltersOptions = DeepRequired<CommonFiltersOptions>;
53
54
  /** Filters that are real pure simple filters (non-cascading filters) */
54
55
  export type PureFilter<F extends Filter = Filter> = F extends CascadingFilter ? never : F;
56
+ /**
57
+ * A basic data point with entries.
58
+ */
59
+ export type AbstractDataPointWithEntries = {
60
+ /**
61
+ * A collection of data point entries that represents values for all related `dataOptions`.
62
+ */
63
+ entries?: Record<string, DataPointEntry | DataPointEntry[]>;
64
+ };
@@ -1,6 +1,6 @@
1
1
  import { type Filter, FilterRelations } from '@sisense/sdk-data';
2
+ import { WidgetProps } from '../../../domains/widgets/components/widget/types';
2
3
  import { BeforeMenuOpenHandler, OpenMenuFn } from '../../../infra/contexts/menu-provider/types.js';
3
- import { WidgetProps } from '../../../props.js';
4
4
  import { CommonFiltersOptions } from './types.js';
5
5
  /** @internal */
6
6
  export declare const useCommonFilters: ({ initialFilters: initialCommonFiltersOrFilterRelations, openMenu, onBeforeMenuOpen, onFiltersChange, }?: {
@@ -1,5 +1,6 @@
1
1
  import { Attribute, Filter } from '@sisense/sdk-data';
2
- import { ChartDataOptions, ChartType, DrilldownOptions, GenericDataOptions, PivotTableDataOptions, PivotTableDrilldownOptions, WidgetType } from '../../../index.js';
2
+ import { WidgetType } from '../../../domains/widgets/components/widget/types';
3
+ import { ChartDataOptions, ChartType, DrilldownOptions, GenericDataOptions, PivotTableDataOptions, PivotTableDrilldownOptions } from '../../../index.js';
3
4
  import { FiltersIgnoringRules, PureFilter } from './types.js';
4
5
  export declare function getAllowedFilters(filters: PureFilter[], ignoreFiltersOptions: FiltersIgnoringRules): Filter[];
5
6
  export declare function getFilterByAttribute(filters: Filter[], attribute: Attribute): Filter | undefined;
@@ -1,5 +1,5 @@
1
1
  import { WidgetsPanelLayout } from '../../../domains/dashboarding/dashboard-model';
2
- import { WidgetProps } from '../../../props';
2
+ import { WidgetProps } from '../../../domains/widgets/components/widget/types';
3
3
  /**
4
4
  * Props for the {@link ContentPanel} component.
5
5
  *
@@ -1,6 +1,6 @@
1
1
  import { ReactNode } from 'react';
2
2
  import { WidgetsPanelRow } from '../../../../../domains/dashboarding/dashboard-model';
3
- import { WidgetProps } from '../../../../../props';
3
+ import { WidgetProps } from '../../../../../domains/widgets/components/widget/types';
4
4
  export interface EditableLayoutRowProps {
5
5
  children: (isAutoHeight: boolean) => ReactNode;
6
6
  id: string;
@@ -1,5 +1,5 @@
1
1
  import { WidgetsPanelLayout } from '../../../../domains/dashboarding/dashboard-model';
2
- import { WidgetProps } from '../../../../props';
2
+ import { WidgetProps } from '../../../../domains/widgets/components/widget/types';
3
3
  /**
4
4
  * Props for the {@link EditableLayout} component.
5
5
  *
@@ -1,5 +1,5 @@
1
1
  import { WidgetsPanelColumn, WidgetsPanelColumnLayout, WidgetsPanelLayout, WidgetsPanelRow } from '../../../../domains/dashboarding/dashboard-model';
2
- import { WidgetProps } from '../../../../props';
2
+ import { WidgetProps } from '../../../../domains/widgets/components/widget/types';
3
3
  import { EditableLayoutDragData, EditableLayoutDropData } from './types.js';
4
4
  /**
5
5
  * Updates the height of all cells in a specific row within a column layout.
@@ -6,5 +6,5 @@ export * from './use-get-dashboard-models';
6
6
  export * from './dashboard-model';
7
7
  export * as dashboardModelTranslator from './dashboard-model-translator';
8
8
  export * from './use-dashboard-model/use-dashboard-model';
9
- export * from './use-dashboard-model/use-dashboard-model-reducer';
9
+ export * from './use-dashboard-model/dashboard-model-reducer';
10
10
  export * from './use-dashboard-model/use-dashboard-persistence';
@@ -4,7 +4,7 @@ import { TabbersConfig } from '../../../domains/dashboarding/hooks/use-tabber';
4
4
  import { Panel, WidgetDto } from '../../../domains/widgets/components/widget-by-id/types';
5
5
  import { RestApi } from '../../../infra/api/rest-api';
6
6
  import { type CascadingFilterDto, DashboardDto, type FilterDto, type LayoutDto } from '../../../infra/api/types/dashboard-dto';
7
- import type { WidgetsOptions, WidgetsPanelColumnLayout } from './types';
7
+ import type { SpecificWidgetOptions, WidgetsOptions, WidgetsPanelColumnLayout } from './types';
8
8
  export declare const translateLayout: (layout: LayoutDto) => WidgetsPanelColumnLayout;
9
9
  export declare function extractDashboardFilters(dashboardFilters: Array<FilterDto | CascadingFilterDto>, filterRelationsModel?: FilterRelationsModel | FilterRelationsModelNode): Filter[] | FilterRelations;
10
10
  export declare const getJtdNavigateType: (widget: WidgetDto) => TriggerMethod;
@@ -20,6 +20,13 @@ export declare function extractPivotTargetsConfigFromWidgetDto(widget: WidgetDto
20
20
  location: 'row' | 'column' | 'value';
21
21
  } | Measure, JtdTarget[]> | undefined;
22
22
  export declare function translateWidgetsOptions(widgets?: WidgetDto[]): WidgetsOptions;
23
+ /**
24
+ * Applies {@link SpecificWidgetOptions} to a {@link WidgetDto}.
25
+ * Merges filtersOptions and jtdConfig into the DTO for persistence.
26
+ *
27
+ * @internal
28
+ */
29
+ export declare function withSpecificWidgetOptions(widgetOptions?: SpecificWidgetOptions): (widgetDto: WidgetDto) => WidgetDto;
23
30
  export declare function translateTabbersOptions(widgets?: WidgetDto[]): TabbersConfig;
24
31
  /**
25
32
  * Replace all shared formulas, which defined by id references, in the dashboard with their actual values.
@@ -74,13 +74,20 @@ export type DashboardId = string;
74
74
  *
75
75
  * For example, how common filters defined at the dashboard level should be applied to widgets.
76
76
  */
77
- export type WidgetsOptions = Record<WidgetId, {
77
+ export type WidgetsOptions = Record<WidgetId, SpecificWidgetOptions>;
78
+ /**
79
+ * Options for a specific widget
80
+ */
81
+ export type SpecificWidgetOptions = {
82
+ /**
83
+ * Options for common filters defined at the dashboard level to be applied to certain widgets.
84
+ */
78
85
  filtersOptions?: CommonFiltersOptions;
79
86
  /**
80
87
  * Jump To Dashboard config for widgets.
81
88
  */
82
89
  jtdConfig?: JumpToDashboardConfig | JumpToDashboardConfigForPivot;
83
- }>;
90
+ };
84
91
  /**
85
92
  * Style options for the dashboard.
86
93
  */
@@ -0,0 +1,4 @@
1
+ export * from './use-dashboard-model-reducer.js';
2
+ export * from './persist-dashboard-model-middleware.js';
3
+ export * from './types.js';
4
+ export * from './utils.js';
@@ -0,0 +1,13 @@
1
+ import { RestApi } from '../../../../../infra/api/rest-api';
2
+ import { UseDashboardModelInternalAction } from './types.js';
3
+ /**
4
+ * Middleware that persists the dashboard model changes to the Sisense server.
5
+ *
6
+ * @param dashboardOid - Dashboard OID, or undefined if not initialized
7
+ * @param action - Internal dashboard model action to persist
8
+ * @param restApi - Sisense REST API instance
9
+ * @param sharedMode - Whether the dashboard is in shared mode
10
+ * @returns Promise resolving to the action (possibly transformed, e.g. for ADD_WIDGET)
11
+ * @internal
12
+ */
13
+ export declare function persistDashboardModelMiddleware(dashboardOid: string | undefined, action: UseDashboardModelInternalAction, restApi: RestApi, sharedMode: boolean): Promise<UseDashboardModelInternalAction>;
@@ -1,7 +1,6 @@
1
1
  import { Filter, FilterRelations } from '@sisense/sdk-data';
2
- import { DashboardModel, WidgetsPanelLayout } from '../../../../domains/dashboarding/dashboard-model';
3
- import { WidgetModel } from '../../../../domains/widgets/widget-model';
4
- import { RestApi } from '../../../../infra/api/rest-api';
2
+ import { DashboardModel, SpecificWidgetOptions, WidgetsPanelLayout } from '../../../../../domains/dashboarding/dashboard-model';
3
+ import { WidgetModel } from '../../../../../domains/widgets/widget-model';
5
4
  export type UseDashboardModelState = DashboardModel | null;
6
5
  /**
7
6
  * Internal action types for the dashboard model state used in {@link useDashboardModel}.
@@ -55,12 +54,23 @@ export type UseDashboardModelFilterUpdateAction = {
55
54
  };
56
55
  /**
57
56
  * Add widget action for the dashboard model state used in {@link useDashboardModel}.
57
+ * If widgetsPanelLayout is not provided, the widget will be appended to the first cell of the first column.
58
58
  *
59
- * @internal
59
+ * WidgetModel plain payload will be deprecated in the future.
60
+ * Instead, use the following payload:
61
+ * {
62
+ * widget: WidgetModel;
63
+ * widgetsPanelLayout?: WidgetsPanelLayout;
64
+ * widgetOptions?: SpecificWidgetOptions;
65
+ * }
60
66
  */
61
67
  export type UseDashboardModelAddWidgetAction = {
62
68
  type: UseDashboardModelActionType.ADD_WIDGET;
63
- payload: WidgetModel;
69
+ payload: WidgetModel | {
70
+ widget: WidgetModel;
71
+ widgetsPanelLayout?: WidgetsPanelLayout;
72
+ widgetOptions?: SpecificWidgetOptions;
73
+ };
64
74
  };
65
75
  /**
66
76
  * Layout update action for the dashboard model state used in {@link useDashboardModel}.
@@ -72,7 +82,9 @@ export type UseDashboardModelLayoutUpdateAction = {
72
82
  payload: WidgetsPanelLayout;
73
83
  };
74
84
  /**
75
- * Layout update action for the dashboard model state used in {@link useDashboardModel}.
85
+ * Widgets delete action for the dashboard model state used in {@link useDashboardModel}.
86
+ * {@link UseDashboardWidgetsDeleteAction} is dispatched with
87
+ * {@link UseDashboardModelActionType.WIDGETS_DELETE}.
76
88
  *
77
89
  * @internal
78
90
  */
@@ -80,33 +92,4 @@ export type UseDashboardWidgetsDeleteAction = {
80
92
  type: UseDashboardModelActionType.WIDGETS_DELETE;
81
93
  payload: string[];
82
94
  };
83
- /**
84
- * Reducer for the dashboard model state used in {@link useDashboardModel}.
85
- *
86
- * @param state
87
- * @param action
88
- * @internal
89
- */
90
- export declare function dashboardReducer(state: UseDashboardModelState, action: UseDashboardModelInternalAction): UseDashboardModelState;
91
- /**
92
- * Translates filters and relations to DTOs.
93
- *
94
- * @param filtersOrFilterRelations - The filters or filter relations to translate
95
- * @returns The translated filters and relations DTOs for Fusion
96
- * @internal
97
- */
98
- export declare function translateFiltersAndRelationsToDto(filtersOrFilterRelations: Filter[] | FilterRelations): {
99
- filters: (import("../../../../infra/api/types/dashboard-dto").FilterDto | import("../../../../infra/api/types/dashboard-dto").CascadingFilterDto)[];
100
- filterRelations: {
101
- datasource: string;
102
- filterRelations: import("@sisense/sdk-data").FilterRelationsModelNode;
103
- }[] | undefined;
104
- };
105
- /**
106
- * Middleware that persists the dashboard model changes to the Sisense server.
107
- *
108
- * @param restApi - The Sisense REST API instance
109
- * @param reducer - The dashboard model reducer
110
- * @internal
111
- */
112
- export declare function persistDashboardModelMiddleware(dashboardOid: string | undefined, action: UseDashboardModelInternalAction, restApi: RestApi, sharedMode: boolean): Promise<UseDashboardModelInternalAction>;
95
+ export type AddWidgetPayload = UseDashboardModelAddWidgetAction['payload'];
@@ -0,0 +1,9 @@
1
+ import { UseDashboardModelInternalAction, UseDashboardModelState } from './types.js';
2
+ /**
3
+ * Reducer for the dashboard model state used in {@link useDashboardModel}.
4
+ *
5
+ * @param state
6
+ * @param action
7
+ * @internal
8
+ */
9
+ export declare function dashboardReducer(state: UseDashboardModelState, action: UseDashboardModelInternalAction): UseDashboardModelState;
@@ -0,0 +1,28 @@
1
+ import { Filter, FilterRelations } from '@sisense/sdk-data';
2
+ import { SpecificWidgetOptions, WidgetsPanelLayout } from '../../../../../domains/dashboarding/dashboard-model';
3
+ import { WidgetModel } from '../../../../../domains/widgets/widget-model';
4
+ import { AddWidgetPayload } from './types.js';
5
+ /**
6
+ * Translates filters and relations to DTOs.
7
+ *
8
+ * @param filtersOrFilterRelations - The filters or filter relations to translate
9
+ * @returns The translated filters and relations DTOs for Fusion
10
+ * @internal
11
+ */
12
+ export declare function translateFiltersAndRelationsToDto(filtersOrFilterRelations: Filter[] | FilterRelations): {
13
+ filters: (import("../../../../../infra/api/types/dashboard-dto.js").FilterDto | import("../../../../../infra/api/types/dashboard-dto.js").CascadingFilterDto)[];
14
+ filterRelations: {
15
+ datasource: string;
16
+ filterRelations: import("@sisense/sdk-data").FilterRelationsModelNode;
17
+ }[] | undefined;
18
+ };
19
+ export declare function parseAddWidgetPayload(payload: AddWidgetPayload): {
20
+ widget: WidgetModel;
21
+ widgetsPanelLayout?: WidgetsPanelLayout;
22
+ widgetOptions?: SpecificWidgetOptions;
23
+ };
24
+ /**
25
+ * Appends a widget cell to the first column's first row. Creates row/cells if missing.
26
+ * Returns a new layout (immutable) or the original when no columns exist.
27
+ */
28
+ export declare function appendWidgetToFirstCell(layout: WidgetsPanelLayout | undefined, widgetId: string): WidgetsPanelLayout | undefined;
@@ -1,5 +1,5 @@
1
1
  import { DashboardModel } from '../../../../domains/dashboarding/dashboard-model';
2
- import { UseDashboardModelAction } from './use-dashboard-model-reducer';
2
+ import { UseDashboardModelAction, UseDashboardModelInternalAction } from './dashboard-model-reducer';
3
3
  export interface UseDashboardPersistenceParams {
4
4
  /**
5
5
  * The dashboard model to manage persistence for
@@ -25,10 +25,10 @@ export interface UseDashboardPersistenceResult {
25
25
  */
26
26
  dashboard: DashboardModel | null;
27
27
  /**
28
- * Function to dispatch changes to the dashboard model with optional persistence
29
- * Returns a promise when persistence is enabled to allow error handling
28
+ * Function to dispatch changes to the dashboard model with optional persistence.
29
+ * Returns a promise that resolves to the processed (or transformed) action.
30
30
  */
31
- dispatchChanges: (action: UseDashboardModelAction) => Promise<void> | void;
31
+ dispatchChanges: (action: UseDashboardModelAction) => Promise<UseDashboardModelInternalAction>;
32
32
  }
33
33
  /**
34
34
  * Hook that provides persistence capabilities for an already loaded dashboard model.
@@ -0,0 +1,34 @@
1
+ import type { WidgetsPanelLayout } from '../../../../domains/dashboarding/dashboard-model/types.js';
2
+ /**
3
+ * Location of a widget cell within the layout structure.
4
+ */
5
+ export type WidgetCellLocation = {
6
+ columnIndex: number;
7
+ rowIndex: number;
8
+ cellIndex: number;
9
+ };
10
+ /**
11
+ * Finds the location of a widget cell in the layout.
12
+ *
13
+ * @param layout - The widgets panel layout.
14
+ * @param widgetId - The ID of the widget to find.
15
+ * @returns The cell location, or undefined if not found.
16
+ */
17
+ export declare const getWidgetCellLocation: (layout: Readonly<WidgetsPanelLayout>, widgetId: string) => WidgetCellLocation | undefined;
18
+ /**
19
+ * Transformer: Inserts a new cell into the same row as the original cell.
20
+ * Splits the original cell's widthPercentage in half: original and new cell each get 50%.
21
+ *
22
+ * @param originalCellLocation - The location of the original cell.
23
+ * @param newWidgetId - The ID of the new widget.
24
+ * @returns A pure transformer that produces the updated layout.
25
+ */
26
+ export declare const withNewCellInsertedToTheSameRow: (originalCellLocation: WidgetCellLocation, newWidgetId: string) => (layout: Readonly<WidgetsPanelLayout>) => WidgetsPanelLayout;
27
+ /**
28
+ * Transformer: Replaces a widget ID with another in all cells of the layout.
29
+ *
30
+ * @param oldWidgetId - The widget ID to replace.
31
+ * @param newWidgetId - The new widget ID.
32
+ * @returns A pure transformer that produces the updated layout (immutable).
33
+ */
34
+ export declare const withReplacedWidgetId: (oldWidgetId: string, newWidgetId: string) => (layout: Readonly<WidgetsPanelLayout>) => WidgetsPanelLayout;
@@ -0,0 +1,2 @@
1
+ export { getWidgetCellLocation, withNewCellInsertedToTheSameRow, withReplacedWidgetId, type WidgetCellLocation, } from './duplicate-widget-utils.js';
2
+ export { useDuplicateWidgetMenuItem, type UseDuplicateWidgetMenuItemParams, type DuplicateWidgetMiddlewareOutput, } from './use-duplicate-widget-menu-item.js';
@@ -0,0 +1,57 @@
1
+ /// <reference types="react" />
2
+ import type { WidgetsOptions, WidgetsPanelLayout } from '../../../../domains/dashboarding/dashboard-model/types.js';
3
+ import { type WidgetProps } from '../../../../domains/widgets/components/widget/types.js';
4
+ import type { DashboardPersistenceManager } from '../../types.js';
5
+ /** Setter for widgets array (e.g. React setState or updater function). */
6
+ export type SetWidgets = React.Dispatch<React.SetStateAction<WidgetProps[]>>;
7
+ /** Setter for widgets options array (e.g. React setState or updater function). */
8
+ export type SetWidgetsOptions = React.Dispatch<React.SetStateAction<WidgetsOptions>>;
9
+ /** Setter for widgets panel layout. */
10
+ export type SetWidgetsLayout = (newLayout: WidgetsPanelLayout) => void;
11
+ /** Options for the duplicate widget middleware hook. */
12
+ export type UseDuplicateWidgetMenuItemParams = {
13
+ /** Current widgets. */
14
+ widgets: WidgetProps[];
15
+ /** Setter to update widgets (e.g. from parent state). */
16
+ setWidgets: SetWidgets;
17
+ /** Current widgets panel layout. */
18
+ widgetsLayout: WidgetsPanelLayout;
19
+ /** Setter to update widgets layout (e.g. from parent state). */
20
+ setWidgetsLayout: SetWidgetsLayout;
21
+ /** When false, returns widgets unchanged (no menu item added). */
22
+ enabled?: boolean;
23
+ /** Dashboard-level widget options (applied to cloned widget when persisting). */
24
+ widgetsOptions?: WidgetsOptions;
25
+ /** Setter to update widgets options (e.g. from parent state). */
26
+ setWidgetsOptions: SetWidgetsOptions;
27
+ persistence?: Pick<DashboardPersistenceManager, 'addWidget'>;
28
+ };
29
+ /** Output of the duplicate widget middleware. */
30
+ export type DuplicateWidgetMiddlewareOutput = {
31
+ widgets: WidgetProps[];
32
+ };
33
+ /**
34
+ * Middleware hook that adds a "Duplicate widget" header menu item to each widget.
35
+ * On click, clones the widget and updates the layout (inserts new cell in the same row).
36
+ *
37
+ * @param options - Options containing widgets, layout, setters, and enabled flag.
38
+ * @returns Updated props with widgets augmented with the duplicate menu item (or unchanged when disabled).
39
+ *
40
+ * @example
41
+ * ```ts
42
+ * const [widgets, setWidgets] = useSyncedState(initialWidgets);
43
+ * const [widgetsLayout, setWidgetsLayout] = useSyncedState(initialLayout);
44
+ * const { widgets: widgetsWithDuplicate, widgetsLayout: widgetsLayoutWithDuplicate } = useDuplicateWidgetMenuItem({
45
+ * widgets,
46
+ * setWidgets,
47
+ * widgetsLayout,
48
+ * setWidgetsLayout,
49
+ * enabled: true,
50
+ * });
51
+ * const { layout: widgetsLayout, setLayout: setWidgetsLayout } = useWidgetsLayoutManagement({
52
+ * layout: widgetsLayoutWithDuplicate,
53
+ * layoutManagers: [tabberLayoutManager],
54
+ * });
55
+ * ```
56
+ */
57
+ export declare function useDuplicateWidgetMenuItem(params: UseDuplicateWidgetMenuItemParams): DuplicateWidgetMiddlewareOutput;
@@ -1,7 +1,7 @@
1
1
  import type { Attribute, Dimension, Measure } from '@sisense/sdk-data';
2
2
  import { PivotTableDataOptions } from '../../../../domains/visualizations/core/chart-data-options/types';
3
3
  import type { Panel } from '../../../../domains/widgets/components/widget-by-id/types';
4
- import { WidgetProps } from '../../../../props';
4
+ import { WidgetProps } from '../../../../domains/widgets/components/widget/types';
5
5
  import type { JtdConfig, JtdTarget, JumpToDashboardConfig, JumpToDashboardConfigForPivot, PivotDimId } from './jtd-types.js';
6
6
  /**
7
7
  * Transform legacy JtdConfig to new JumpToDashboardConfig format
@@ -1,5 +1,5 @@
1
1
  import { type Filter } from '@sisense/sdk-data';
2
- import { WidgetProps } from '../../../../props.js';
2
+ import { WidgetProps } from '../../../../domains/widgets/components/widget/types';
3
3
  import { DataPoint, ScatterDataPoint } from '../../../../types';
4
4
  import { JtdConfig } from './jtd-types.js';
5
5
  /**
@@ -1,6 +1,6 @@
1
1
  import { type Filter } from '@sisense/sdk-data';
2
+ import { WidgetProps } from '../../../../domains/widgets/components/widget/types';
2
3
  import { OpenModalFn } from '../../../../infra/contexts/modal-provider/modal-context';
3
- import { WidgetProps } from '../../../../props.js';
4
4
  import { DataPoint, PivotTableDataPoint } from '../../../../types';
5
5
  import { JtdActions, JtdClickHandlerData, JtdConfig, JtdContext, JtdCoreData, JtdDataPointClickEvent } from './jtd-types';
6
6
  /**
@@ -1,8 +1,8 @@
1
1
  import { Attribute, type Filter, Measure } from '@sisense/sdk-data';
2
2
  import { DashboardConfig, DashboardProps } from '../../../../domains/dashboarding/types';
3
+ import { WidgetProps } from '../../../../domains/widgets/components/widget/types';
3
4
  import { OpenMenuFn } from '../../../../infra/contexts/menu-provider/types.js';
4
5
  import { OpenModalFn } from '../../../../infra/contexts/modal-provider/modal-context';
5
- import { WidgetProps } from '../../../../props.js';
6
6
  import { DataPoint } from '../../../../types';
7
7
  /**
8
8
  * Menu item structure for JTD navigation
@@ -1,4 +1,4 @@
1
- import { WidgetProps } from '../../../../props.js';
1
+ import { WidgetProps } from '../../../../domains/widgets/components/widget/types';
2
2
  import { JtdActions, JtdWidgetTransformConfig } from './jtd-types.js';
3
3
  /**
4
4
  * Add pointer cursor to chart widgets that support it
@@ -1,4 +1,4 @@
1
- import { WidgetProps } from '../../../props.js';
1
+ import { WidgetProps } from '../../../domains/widgets/components/widget/types';
2
2
  import { JumpToDashboardConfig } from './jtd/jtd-types.js';
3
3
  import { JumpToDashboardConfigForPivot } from './use-jtd.js';
4
4
  /**
@@ -2,8 +2,8 @@ import { type Filter } from '@sisense/sdk-data';
2
2
  import { WidgetsOptions } from '../../../domains/dashboarding/dashboard-model/types';
3
3
  import { type JtdActions } from '../../../domains/dashboarding/hooks/jtd/jtd-types';
4
4
  import { JtdConfig } from '../../../domains/dashboarding/hooks/jtd/jtd-types';
5
+ import { WidgetProps } from '../../../domains/widgets/components/widget/types';
5
6
  import { OpenMenuFn } from '../../../infra/contexts/menu-provider/types.js';
6
- import { WidgetProps } from '../../../props.js';
7
7
  /**
8
8
  * Shared function to apply JTD functionality to a widget.
9
9
  * Extracted to avoid code duplication between use-jtd.ts and use-jtd-widget.ts
@@ -1,6 +1,7 @@
1
1
  import { WidgetId, WidgetsPanelColumnLayout } from '../../../domains/dashboarding/dashboard-model';
2
2
  import { WidgetPanelLayoutManager } from '../../../domains/dashboarding/hooks/use-widgets-layout';
3
- import { TabberButtonsWidgetProps, WidgetProps } from '../../../props';
3
+ import { WidgetProps } from '../../../domains/widgets/components/widget/types';
4
+ import { TabberButtonsWidgetProps } from '../../../props';
4
5
  /**
5
6
  * @internal
6
7
  */
@@ -1,10 +1,10 @@
1
1
  import { ReactNode } from 'react';
2
2
  import { DataSource, Filter, FilterRelations } from '@sisense/sdk-data';
3
- import { DashboardStyleOptions, WidgetsOptions, WidgetsPanelLayout } from '../../domains/dashboarding/dashboard-model';
3
+ import { DashboardStyleOptions, SpecificWidgetOptions, WidgetsOptions, WidgetsPanelLayout } from '../../domains/dashboarding/dashboard-model';
4
4
  import { TabbersConfig } from '../../domains/dashboarding/hooks/use-tabber';
5
5
  import { FiltersPanelConfig } from '../../domains/filters/components/filters-panel/types';
6
- import { WidgetProps } from '../../props';
7
- export type { DashboardStyleOptions, WidgetsPanelColumnLayout, WidgetsPanelLayout, WidgetsPanelCell, WidgetsPanelRow, WidgetsPanelColumn, } from '../../domains/dashboarding/dashboard-model';
6
+ import { WidgetProps } from '../../domains/widgets/components/widget/types';
7
+ export type { DashboardStyleOptions, SpecificWidgetOptions, WidgetsPanelColumnLayout, WidgetsPanelLayout, WidgetsPanelCell, WidgetsPanelRow, WidgetsPanelColumn, } from '../../domains/dashboarding/dashboard-model';
8
8
  export type { TabbersConfig, TabberConfig, TabberTabConfig, } from '../../domains/dashboarding/hooks/use-tabber';
9
9
  /**
10
10
  * Event triggered when dashboard filters are updated.
@@ -217,6 +217,23 @@ export interface EditModeConfig {
217
217
  * @default true
218
218
  */
219
219
  showDragHandleIcon?: boolean;
220
+ /**
221
+ * Configuration for the widget duplication feature.
222
+ *
223
+ * @internal
224
+ */
225
+ duplicateWidget?: {
226
+ /**
227
+ * When `true`, adds a "Duplicate widget" menu item to each widget header.
228
+ * On click, clones the widget and updates the layout.
229
+ * Only has effect when edit mode is also enabled (`editMode.enabled`) and batch mode is disabled (`editMode.applyChangesAsBatch.enabled`).
230
+ * If batch mode is enabled, "Duplicate widget" menu item won't be applied because it would not be possible to undo/redo the duplication.
231
+ *
232
+ * If not specified, the default value is `false`.
233
+ * @internal
234
+ */
235
+ enabled: boolean;
236
+ };
220
237
  }
221
238
  /**
222
239
  * Dashboard configuration
@@ -278,6 +295,26 @@ export interface DashboardLayoutOptions {
278
295
  */
279
296
  widgetsPanel?: WidgetsPanelLayout;
280
297
  }
298
+ /**
299
+ * Interface for persisting dashboard changes from the composition layer (e.g. add widget).
300
+ *
301
+ * @internal
302
+ */
303
+ export type DashboardPersistenceManager = {
304
+ /**
305
+ * Adds a widget to the dashboard.
306
+ *
307
+ * @param widget - The widget to add.
308
+ * @param widgetsPanelLayout - The layout to add the widget to.
309
+ * @param widgetOptions - The options for the widget.
310
+ * @returns The persisted widget (possibly modified by the server, e.g. new id), the new widgets panel layout and the widget options.
311
+ */
312
+ addWidget: (widget: WidgetProps, widgetsPanelLayout: WidgetsPanelLayout, widgetOptions?: SpecificWidgetOptions) => Promise<{
313
+ widget: WidgetProps;
314
+ widgetsPanelLayout: WidgetsPanelLayout;
315
+ widgetOptions?: SpecificWidgetOptions;
316
+ }>;
317
+ };
281
318
  /**
282
319
  * Props for the Dashboard component
283
320
  */
@@ -317,6 +354,10 @@ export interface DashboardProps {
317
354
  * @param event The event that occurred
318
355
  */
319
356
  onChange?: (event: DashboardChangeEvent) => void;
357
+ /**
358
+ * @internal
359
+ */
360
+ persistence?: DashboardPersistenceManager;
320
361
  }
321
362
  /**
322
363
  * Props for the Dashboard Header component
@@ -1,12 +1,24 @@
1
1
  import { Filter, FilterRelations } from '@sisense/sdk-data';
2
- import { WidgetsPanelLayout } from '../../domains/dashboarding/dashboard-model';
3
- import { DashboardProps } from './types.js';
2
+ import type { WidgetsPanelLayout } from '../../domains/dashboarding/dashboard-model';
3
+ import { DashboardPersistenceManager, DashboardProps } from './types.js';
4
4
  export type ComposableDashboardProps = Pick<DashboardProps, 'filters' | 'widgets' | 'widgetsOptions' | 'layoutOptions' | 'config'>;
5
5
  export type UseComposedDashboardOptions = {
6
6
  /**
7
7
  * @internal
8
8
  */
9
9
  onFiltersChange?: (filters: Filter[] | FilterRelations) => void;
10
+ /**
11
+ * @internal
12
+ */
13
+ persistence?: DashboardPersistenceManager;
14
+ /**
15
+ * Runtime edit mode state. When provided (e.g. by Dashboard), used for duplicate-widget visibility
16
+ * instead of only config.widgetsPanel.editMode.isEditing.
17
+ * @internal
18
+ *
19
+ * @deprecated Temporal workaround. Edit mode (with history management) should be managed by the `useComposedDashboard` hook instead of the Dashboard component.
20
+ */
21
+ isEditing?: boolean;
10
22
  };
11
23
  /**
12
24
  * Result of the {@link useComposedDashboard} hook.
@@ -24,7 +36,7 @@ export type ComposedDashboardResult<D extends ComposableDashboardProps | Dashboa
24
36
  *
25
37
  * @internal
26
38
  */
27
- export declare function useComposedDashboardInternal<D extends ComposableDashboardProps | DashboardProps>(initialDashboard: D, { onFiltersChange }?: UseComposedDashboardOptions): ComposedDashboardResult<D>;
39
+ export declare function useComposedDashboardInternal<D extends ComposableDashboardProps | DashboardProps>(initialDashboard: D, { onFiltersChange, persistence, isEditing: isEditingRuntime }?: UseComposedDashboardOptions): ComposedDashboardResult<D>;
28
40
  /**
29
41
  * React hook that takes in separate dashboard elements and
30
42
  * composes them into a coordinated dashboard with change detection, cross filtering, and drill down.
@@ -1,4 +1,4 @@
1
- import { WidgetProps } from '../../props';
1
+ import { WidgetProps } from '../../domains/widgets/components/widget/types';
2
2
  import { WidgetsPanelColumnLayout } from './types.js';
3
3
  export declare const getDividerStyle: (color: string, width: number) => string;
4
4
  /**