diff --git a/common/changes/@gooddata/sdk-ui-all/IMJ-CHARTS-STRICT_2025-12-17-10-49.json b/common/changes/@gooddata/sdk-ui-all/IMJ-CHARTS-STRICT_2025-12-17-10-49.json deleted file mode 100644 index 1642a499929..00000000000 --- a/common/changes/@gooddata/sdk-ui-all/IMJ-CHARTS-STRICT_2025-12-17-10-49.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "changes": [ - { - "packageName": "@gooddata/sdk-ui-all", - "comment": "sdk-ui-charts: Introduce typescript strict mode.", - "type": "none" - } - ], - "packageName": "@gooddata/sdk-ui-all" -} diff --git a/common/changes/@gooddata/sdk-ui-all/JSVA-GDAI-1140-async-kda-icon_2025-12-22-12-32.json b/common/changes/@gooddata/sdk-ui-all/JSVA-GDAI-1140-async-kda-icon_2025-12-22-12-32.json deleted file mode 100644 index 880ad4069b2..00000000000 --- a/common/changes/@gooddata/sdk-ui-all/JSVA-GDAI-1140-async-kda-icon_2025-12-22-12-32.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "changes": [ - { - "packageName": "@gooddata/sdk-ui-all", - "comment": "sdk-ui-kit: Add new `shrink` icon.", - "type": "none" - } - ], - "packageName": "@gooddata/sdk-ui-all" -} diff --git a/common/changes/@gooddata/sdk-ui-all/JSVA-GDAI-1140-async-kda_2026-01-06-08-06.json b/common/changes/@gooddata/sdk-ui-all/JSVA-GDAI-1140-async-kda_2026-01-06-08-06.json deleted file mode 100644 index aa04096ac45..00000000000 --- a/common/changes/@gooddata/sdk-ui-all/JSVA-GDAI-1140-async-kda_2026-01-06-08-06.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "changes": [ - { - "packageName": "@gooddata/sdk-ui-all", - "comment": "sdk-ui-dashboard,sdk-ui-gen-ai: Introduce async Key Driver Analysis UX flow.", - "type": "none" - } - ], - "packageName": "@gooddata/sdk-ui-all" -} diff --git a/common/changes/@gooddata/sdk-ui-all/JSVA-GDAI-1143-tags-creatable-update_2025-12-19-12-27.json b/common/changes/@gooddata/sdk-ui-all/JSVA-GDAI-1143-tags-creatable-update_2025-12-19-12-27.json deleted file mode 100644 index b25a60e953b..00000000000 --- a/common/changes/@gooddata/sdk-ui-all/JSVA-GDAI-1143-tags-creatable-update_2025-12-19-12-27.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "changes": [ - { - "packageName": "@gooddata/sdk-ui-all", - "comment": "sdk-ui-kit: Show `UiCombobox` `creatable` option only for multiple non-exact matches.", - "type": "none" - } - ], - "packageName": "@gooddata/sdk-ui-all" -} diff --git a/common/changes/@gooddata/sdk-ui-all/SHA_master_2026-01-07-10-41.json b/common/changes/@gooddata/sdk-ui-all/SHA_master_2026-01-07-10-41.json deleted file mode 100644 index ef8828d902b..00000000000 --- a/common/changes/@gooddata/sdk-ui-all/SHA_master_2026-01-07-10-41.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "changes": [ - { - "packageName": "@gooddata/sdk-ui-all", - "comment": "Improved AI Assistant responsiveness on small screens by fixing chat overlay width, preventing mobile overflow, and restoring the mobile trigger button.", - "type": "none" - } - ], - "packageName": "@gooddata/sdk-ui-all" -} diff --git a/common/changes/@gooddata/sdk-ui-all/c.jma-lx-1940-fix-virtualized-scroll_2025-12-19-10-14.json b/common/changes/@gooddata/sdk-ui-all/c.jma-lx-1940-fix-virtualized-scroll_2025-12-19-10-14.json deleted file mode 100644 index 391ff8d093a..00000000000 --- a/common/changes/@gooddata/sdk-ui-all/c.jma-lx-1940-fix-virtualized-scroll_2025-12-19-10-14.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "changes": [ - { - "packageName": "@gooddata/sdk-ui-all", - "comment": "sdk-ui-kit: Prevent jumping when scrolling UiPagedVirtualList.", - "type": "none" - } - ], - "packageName": "@gooddata/sdk-ui-all" -} diff --git a/common/changes/@gooddata/sdk-ui-all/GDP-2947_2025-12-10-20-51.json b/common/changes/@gooddata/sdk-ui-all/fiscal-respecting-settings_2026-01-07-18-55.json similarity index 64% rename from common/changes/@gooddata/sdk-ui-all/GDP-2947_2025-12-10-20-51.json rename to common/changes/@gooddata/sdk-ui-all/fiscal-respecting-settings_2026-01-07-18-55.json index 588b39fe598..550f5c280a4 100644 --- a/common/changes/@gooddata/sdk-ui-all/GDP-2947_2025-12-10-20-51.json +++ b/common/changes/@gooddata/sdk-ui-all/fiscal-respecting-settings_2026-01-07-18-55.json @@ -2,7 +2,7 @@ "changes": [ { "packageName": "@gooddata/sdk-ui-all", - "comment": "sdk-ui-filters: Add testable support for fiscal calendars.", + "comment": "sdk-ui-all: Fiscal calendars in date filter respecting settings.", "type": "none" } ], diff --git a/common/changes/@gooddata/sdk-ui-all/ine-lx-1911_2025-12-17-20-00.json b/common/changes/@gooddata/sdk-ui-all/ine-lx-1911_2025-12-17-20-00.json deleted file mode 100644 index a7b989b086f..00000000000 --- a/common/changes/@gooddata/sdk-ui-all/ine-lx-1911_2025-12-17-20-00.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "changes": [ - { - "packageName": "@gooddata/sdk-ui-all", - "comment": "sdk-ui-filters: Allow dimensionality override in measure value filter.", - "type": "none" - } - ], - "packageName": "@gooddata/sdk-ui-all" -} diff --git a/common/changes/@gooddata/sdk-ui-all/master_2026-01-06-14-57.json b/common/changes/@gooddata/sdk-ui-all/master_2026-01-06-14-57.json deleted file mode 100644 index fb205be0f3f..00000000000 --- a/common/changes/@gooddata/sdk-ui-all/master_2026-01-06-14-57.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "changes": [ - { - "comment": "sdk-ui-filters: Fix Metric Value Filter's Apply button to being disabled when operator is ALL but dimensionality has changed, and fix blue backward compatibility message showing incorrectly after explicitly setting filter to ALL", - "type": "none", - "packageName": "@gooddata/sdk-ui-all" - } - ], - "packageName": "@gooddata/sdk-ui-all" -} diff --git a/common/changes/@gooddata/sdk-ui-all/mnaj-upgrade-typescript_2026-01-06-10-31.json b/common/changes/@gooddata/sdk-ui-all/mnaj-upgrade-typescript_2026-01-06-10-31.json deleted file mode 100644 index 418f7451040..00000000000 --- a/common/changes/@gooddata/sdk-ui-all/mnaj-upgrade-typescript_2026-01-06-10-31.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "changes": [ - { - "packageName": "@gooddata/sdk-ui-all", - "comment": "chore: Upgrade typescript to 5.9.3", - "type": "none" - } - ], - "packageName": "@gooddata/sdk-ui-all" -} diff --git a/common/changes/@gooddata/sdk-ui-all/myd-QA-26513_2025-12-22-03-31.json b/common/changes/@gooddata/sdk-ui-all/myd-QA-26513_2025-12-22-03-31.json deleted file mode 100644 index bf23770813c..00000000000 --- a/common/changes/@gooddata/sdk-ui-all/myd-QA-26513_2025-12-22-03-31.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "changes": [ - { - "packageName": "@gooddata/sdk-ui-all", - "comment": "Add data-testId for search bar of mvf picker", - "type": "none" - } - ], - "packageName": "@gooddata/sdk-ui-all" -} diff --git a/common/changes/@gooddata/sdk-ui-all/nen-lx-1533_2025-12-16-10-28.json b/common/changes/@gooddata/sdk-ui-all/nen-lx-1533_2025-12-16-10-28.json deleted file mode 100644 index 6b6ac52864d..00000000000 --- a/common/changes/@gooddata/sdk-ui-all/nen-lx-1533_2025-12-16-10-28.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "changes": [ - { - "packageName": "@gooddata/sdk-ui-all", - "comment": "Changed: Feature flag enableChartAccessibilityFeatures has been removed.", - "type": "none" - } - ], - "packageName": "@gooddata/sdk-ui-all" -} diff --git a/common/changes/@gooddata/sdk-ui-all/pdo-lx-1912-mvf-no-granularity_2025-12-18-13-16.json b/common/changes/@gooddata/sdk-ui-all/pdo-lx-1912-mvf-no-granularity_2025-12-18-13-16.json deleted file mode 100644 index ba9dc660f05..00000000000 --- a/common/changes/@gooddata/sdk-ui-all/pdo-lx-1912-mvf-no-granularity_2025-12-18-13-16.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "changes": [ - { - "packageName": "@gooddata/sdk-ui-all", - "comment": "sdk-ui-filters: Add explanation message to metric value filter body to filters that have not been migrated to use dimensionality", - "type": "none" - } - ], - "packageName": "@gooddata/sdk-ui-all" -} diff --git a/common/changes/@gooddata/sdk-ui-all/pdo-lx-1950-all-operator_2026-01-07-13-45.json b/common/changes/@gooddata/sdk-ui-all/pdo-lx-1950-all-operator_2026-01-07-13-45.json deleted file mode 100644 index 3828e97e43c..00000000000 --- a/common/changes/@gooddata/sdk-ui-all/pdo-lx-1950-all-operator_2026-01-07-13-45.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "changes": [ - { - "comment": "sdk-ui-loaders: Fix dashboard plugin loader to support both named and default exports from plugin entry point, restoring backward compatibility with plugins built before the 'Ban default exports' change", - "type": "none", - "packageName": "@gooddata/sdk-ui-all" - } - ], - "packageName": "@gooddata/sdk-ui-all" -} diff --git a/common/changes/@gooddata/sdk-ui-all/pko-geo-chart-next-drills_2025-12-17-21-42.json b/common/changes/@gooddata/sdk-ui-all/pko-geo-chart-next-drills_2025-12-17-21-42.json deleted file mode 100644 index b004b481fef..00000000000 --- a/common/changes/@gooddata/sdk-ui-all/pko-geo-chart-next-drills_2025-12-17-21-42.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "changes": [ - { - "packageName": "@gooddata/sdk-ui-all", - "comment": "sdk-ui-geo: Add support for measure drilling", - "type": "none" - } - ], - "packageName": "@gooddata/sdk-ui-all" -} diff --git a/common/changes/@gooddata/sdk-ui-all/revert-6095-pja-crowdin-format_2025-12-24-12-20.json b/common/changes/@gooddata/sdk-ui-all/revert-6095-pja-crowdin-format_2025-12-24-12-20.json deleted file mode 100644 index 8d7b35b4628..00000000000 --- a/common/changes/@gooddata/sdk-ui-all/revert-6095-pja-crowdin-format_2025-12-24-12-20.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "changes": [ - { - "packageName": "@gooddata/sdk-ui-all", - "comment": "revert Crowdin structure to investigate blocker", - "type": "none" - } - ], - "packageName": "@gooddata/sdk-ui-all" -} diff --git a/common/config/rush/version-policies.json b/common/config/rush/version-policies.json index 77aa7a114a6..5d2dbd8d885 100644 --- a/common/config/rush/version-policies.json +++ b/common/config/rush/version-policies.json @@ -12,14 +12,14 @@ { "definitionName": "lockStepVersion", "policyName": "sdk", - "version": "11.15.0-alpha.15", + "version": "11.16.0-alpha.0", "nextBump": "prerelease", "mainProject": "@gooddata/sdk-ui-all" }, { "definitionName": "lockStepVersion", "policyName": "sdk-examples", - "version": "11.15.0-alpha.15", + "version": "11.16.0-alpha.0", "nextBump": "prerelease", "mainProject": "@gooddata/sdk-ui-all" } diff --git a/docs/config/public/params.toml b/docs/config/public/params.toml index da3ab61c8dd..d3e487cae6d 100644 --- a/docs/config/public/params.toml +++ b/docs/config/public/params.toml @@ -12,9 +12,13 @@ versionPage = "https://sdk.gooddata.com/gooddata-ui-apidocs/VERSION/docs/index.html" [[versions]] - version = "11.14" + version = "11.15" dirpath = "latest" url = "/latest/" +[[versions]] + version = "11.14" + dirpath = "11.14" + url = "/11.14/" [[versions]] version = "11.13" dirpath = "11.13" @@ -309,10 +313,6 @@ version = "8.8" dirpath = "8.8" url = "https://sdk.gooddata.com/gooddata-ui/docs/8.8.0/about_gooddataui.html" -[[versions]] - version = "8.7" - dirpath = "8.7" - url = "https://sdk.gooddata.com/gooddata-ui/docs/8.7.0/about_gooddataui.html" [[versions]] version = "6.0" changelog = "https://github.com/gooddata/gooddata-react-components/blob/master/CHANGELOG.md#600" diff --git a/docs/layouts/index.redir b/docs/layouts/index.redir index be8e365aa9d..c2f5e657b86 100644 --- a/docs/layouts/index.redir +++ b/docs/layouts/index.redir @@ -1,8 +1,9 @@ # Redirects / {{ .Site.BaseURL }}/latest/ 301! /docs/ {{ .Site.BaseURL }}/latest/ 301! -/11.14/ {{ .Site.BaseURL }}/latest/ 301! -/11.14.0/ {{ .Site.BaseURL }}/latest/ 301! +/11.15/ {{ .Site.BaseURL }}/latest/ 301! +/11.15.0/ {{ .Site.BaseURL }}/latest/ 301! +/11.14.0/ {{ .Site.BaseURL }}/11.14/ 301! /11.13.0/ {{ .Site.BaseURL }}/11.13/ 301! /11.12.0/ {{ .Site.BaseURL }}/11.12/ 301! /11.11.0/ {{ .Site.BaseURL }}/11.11/ 301! diff --git a/examples/sdk-interactive-examples/examples-template/package.json b/examples/sdk-interactive-examples/examples-template/package.json index 9fc9db173ef..62dfa7692b2 100644 --- a/examples/sdk-interactive-examples/examples-template/package.json +++ b/examples/sdk-interactive-examples/examples-template/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-interactive-examples-template", - "version": "11.15.0-alpha.15", + "version": "11.16.0-alpha.0", "private": false, "description": "GoodData interactive example template", "license": "LicenseRef-LICENSE", diff --git a/examples/sdk-interactive-examples/examples/example-attributefilter/package.json b/examples/sdk-interactive-examples/examples/example-attributefilter/package.json index 3b346ec55c9..28df4f4b20a 100644 --- a/examples/sdk-interactive-examples/examples/example-attributefilter/package.json +++ b/examples/sdk-interactive-examples/examples/example-attributefilter/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-interactive-example-attributefilter", - "version": "11.15.0-alpha.15", + "version": "11.16.0-alpha.0", "private": false, "description": "This example demonstrates how to use the AttributeFilter component to filter data in a visualization.", "license": "LicenseRef-LICENSE", diff --git a/examples/sdk-interactive-examples/examples/example-chartconfig/package.json b/examples/sdk-interactive-examples/examples/example-chartconfig/package.json index 57bcaa824f7..5ceea3807cb 100644 --- a/examples/sdk-interactive-examples/examples/example-chartconfig/package.json +++ b/examples/sdk-interactive-examples/examples/example-chartconfig/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-interactive-example-chartconfig", - "version": "11.15.0-alpha.15", + "version": "11.16.0-alpha.0", "private": false, "description": "This interactive example demonstrates how to manipulate the chart config.", "license": "LicenseRef-LICENSE", diff --git a/examples/sdk-interactive-examples/examples/example-columnchart/package.json b/examples/sdk-interactive-examples/examples/example-columnchart/package.json index 2fb13ada11d..398e3240578 100644 --- a/examples/sdk-interactive-examples/examples/example-columnchart/package.json +++ b/examples/sdk-interactive-examples/examples/example-columnchart/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-interactive-example-columnchart", - "version": "11.15.0-alpha.15", + "version": "11.16.0-alpha.0", "private": false, "description": "This example demonstrates the usage of the ColumnChart component with the viewBy and stackBy properties.", "license": "LicenseRef-LICENSE", diff --git a/examples/sdk-interactive-examples/examples/example-combochart/package.json b/examples/sdk-interactive-examples/examples/example-combochart/package.json index a896b12c3b0..bf6669bdcec 100644 --- a/examples/sdk-interactive-examples/examples/example-combochart/package.json +++ b/examples/sdk-interactive-examples/examples/example-combochart/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-interactive-example-combochart", - "version": "11.15.0-alpha.15", + "version": "11.16.0-alpha.0", "private": false, "description": "Example demonstrates ComboChart secondaryMeasures definition. ", "license": "LicenseRef-LICENSE", diff --git a/examples/sdk-interactive-examples/examples/example-dashboard/package.json b/examples/sdk-interactive-examples/examples/example-dashboard/package.json index 8598e2eff2c..9558c65fbef 100644 --- a/examples/sdk-interactive-examples/examples/example-dashboard/package.json +++ b/examples/sdk-interactive-examples/examples/example-dashboard/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-interactive-example-dashboard", - "version": "11.15.0-alpha.15", + "version": "11.16.0-alpha.0", "private": false, "description": "This example shows how to use the Dashboard component.", "license": "LicenseRef-LICENSE", diff --git a/examples/sdk-interactive-examples/examples/example-datefilter/package.json b/examples/sdk-interactive-examples/examples/example-datefilter/package.json index 3e9ff2c05df..3f30e40a239 100644 --- a/examples/sdk-interactive-examples/examples/example-datefilter/package.json +++ b/examples/sdk-interactive-examples/examples/example-datefilter/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-interactive-example-datefilter", - "version": "11.15.0-alpha.15", + "version": "11.16.0-alpha.0", "private": false, "description": "Example demonstrates usage of Date Filter component.", "license": "LicenseRef-LICENSE", diff --git a/examples/sdk-interactive-examples/examples/example-dependentfilters/package.json b/examples/sdk-interactive-examples/examples/example-dependentfilters/package.json index 746a9ed07d7..e21fe9e0da7 100644 --- a/examples/sdk-interactive-examples/examples/example-dependentfilters/package.json +++ b/examples/sdk-interactive-examples/examples/example-dependentfilters/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-interactive-example-dependentfilters", - "version": "11.15.0-alpha.15", + "version": "11.16.0-alpha.0", "private": false, "description": "This example demonstrates how to use multiple attribute filters linked together to filter data in a visualization.", "license": "LicenseRef-LICENSE", diff --git a/examples/sdk-interactive-examples/examples/example-execute/package.json b/examples/sdk-interactive-examples/examples/example-execute/package.json index df894ce1335..4566e29ed67 100644 --- a/examples/sdk-interactive-examples/examples/example-execute/package.json +++ b/examples/sdk-interactive-examples/examples/example-execute/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-interactive-example-execute", - "version": "11.15.0-alpha.15", + "version": "11.16.0-alpha.0", "private": false, "description": "This example demonstrates using Execute component and build custom visualization.", "license": "LicenseRef-LICENSE", diff --git a/examples/sdk-interactive-examples/examples/example-granularity/package.json b/examples/sdk-interactive-examples/examples/example-granularity/package.json index a8ef0604764..ba4de0f1015 100644 --- a/examples/sdk-interactive-examples/examples/example-granularity/package.json +++ b/examples/sdk-interactive-examples/examples/example-granularity/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-interactive-example-granularity", - "version": "11.15.0-alpha.15", + "version": "11.16.0-alpha.0", "private": false, "description": "This example exmplains DateFilter granularity ", "license": "LicenseRef-LICENSE", diff --git a/examples/sdk-interactive-examples/examples/example-headline/package.json b/examples/sdk-interactive-examples/examples/example-headline/package.json index 3ccc037e7ef..ebe01527370 100644 --- a/examples/sdk-interactive-examples/examples/example-headline/package.json +++ b/examples/sdk-interactive-examples/examples/example-headline/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-interactive-example-headline", - "version": "11.15.0-alpha.15", + "version": "11.16.0-alpha.0", "private": false, "description": "This example shows how to use the Headline component.", "license": "LicenseRef-LICENSE", diff --git a/examples/sdk-interactive-examples/examples/example-pivottable/package.json b/examples/sdk-interactive-examples/examples/example-pivottable/package.json index b97b70a0cfa..eff299b1302 100644 --- a/examples/sdk-interactive-examples/examples/example-pivottable/package.json +++ b/examples/sdk-interactive-examples/examples/example-pivottable/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-interactive-example-pivottable", - "version": "11.15.0-alpha.15", + "version": "11.16.0-alpha.0", "private": false, "description": "Basic PivotTable manipulation.", "license": "LicenseRef-LICENSE", diff --git a/examples/sdk-interactive-examples/examples/example-relativedatefilter/package.json b/examples/sdk-interactive-examples/examples/example-relativedatefilter/package.json index 2c043695680..8de27491c24 100644 --- a/examples/sdk-interactive-examples/examples/example-relativedatefilter/package.json +++ b/examples/sdk-interactive-examples/examples/example-relativedatefilter/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-interactive-example-relativedatefilter", - "version": "11.15.0-alpha.15", + "version": "11.16.0-alpha.0", "private": false, "description": "Example demonstrates how to set relative DateFilter for visualization.", "license": "LicenseRef-LICENSE", diff --git a/examples/sdk-interactive-examples/examples/example-repeater/package.json b/examples/sdk-interactive-examples/examples/example-repeater/package.json index 06c72155311..54bb90663fc 100644 --- a/examples/sdk-interactive-examples/examples/example-repeater/package.json +++ b/examples/sdk-interactive-examples/examples/example-repeater/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-interactive-example-repeater", - "version": "11.15.0-alpha.15", + "version": "11.16.0-alpha.0", "private": false, "description": "This example demonstrates how to use Repeater component.", "license": "LicenseRef-LICENSE", diff --git a/examples/sdk-interactive-examples/package.json b/examples/sdk-interactive-examples/package.json index bb853ea3170..6f56fb0f37e 100644 --- a/examples/sdk-interactive-examples/package.json +++ b/examples/sdk-interactive-examples/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-interactive-examples", - "version": "11.15.0-alpha.15", + "version": "11.16.0-alpha.0", "private": false, "description": "GoodData React interactive examples", "license": "LicenseRef-LICENSE", diff --git a/libs/api-client-tiger/package.json b/libs/api-client-tiger/package.json index 4f17a93acd6..b73a2976340 100644 --- a/libs/api-client-tiger/package.json +++ b/libs/api-client-tiger/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/api-client-tiger", - "version": "11.15.0-alpha.15", + "version": "11.16.0-alpha.0", "description": "API Client for GoodData Cloud and GoodData.CN", "repository": { "type": "git", diff --git a/libs/sdk-backend-base/package.json b/libs/sdk-backend-base/package.json index 559b8e18ac6..3381ed2ac12 100644 --- a/libs/sdk-backend-base/package.json +++ b/libs/sdk-backend-base/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-backend-base", - "version": "11.15.0-alpha.15", + "version": "11.16.0-alpha.0", "description": "GoodData.UI SDK - Base for backend implementations", "repository": { "type": "git", diff --git a/libs/sdk-backend-mockingbird/package.json b/libs/sdk-backend-mockingbird/package.json index 6c06116b2a8..cd319c9c6b3 100644 --- a/libs/sdk-backend-mockingbird/package.json +++ b/libs/sdk-backend-mockingbird/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-backend-mockingbird", - "version": "11.15.0-alpha.15", + "version": "11.16.0-alpha.0", "description": "Mock GoodData Backend SPI implementation", "repository": { "type": "git", diff --git a/libs/sdk-backend-spi/package.json b/libs/sdk-backend-spi/package.json index aced1ba1b94..87ca9833c5f 100644 --- a/libs/sdk-backend-spi/package.json +++ b/libs/sdk-backend-spi/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-backend-spi", - "version": "11.15.0-alpha.15", + "version": "11.16.0-alpha.0", "description": "GoodData Backend SPI abstraction interfaces", "repository": { "type": "git", diff --git a/libs/sdk-backend-tiger/package.json b/libs/sdk-backend-tiger/package.json index 66ba4829175..4010c3a26e3 100644 --- a/libs/sdk-backend-tiger/package.json +++ b/libs/sdk-backend-tiger/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-backend-tiger", - "version": "11.15.0-alpha.15", + "version": "11.16.0-alpha.0", "description": "GoodData Backend SPI implementation for GoodData Cloud and GoodData.CN", "repository": { "type": "git", diff --git a/libs/sdk-embedding/package.json b/libs/sdk-embedding/package.json index fd2cce3cfa6..ec539d8b9d8 100644 --- a/libs/sdk-embedding/package.json +++ b/libs/sdk-embedding/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-embedding", - "version": "11.15.0-alpha.15", + "version": "11.16.0-alpha.0", "description": "GoodData Embedding APIs", "repository": { "type": "git", diff --git a/libs/sdk-model/package.json b/libs/sdk-model/package.json index 14bd8ca6b8e..f032ba1164d 100644 --- a/libs/sdk-model/package.json +++ b/libs/sdk-model/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-model", - "version": "11.15.0-alpha.15", + "version": "11.16.0-alpha.0", "description": "GoodData Model definitions used by UI components and Backend SPI", "repository": { "type": "git", diff --git a/libs/sdk-ui-all/CHANGELOG.json b/libs/sdk-ui-all/CHANGELOG.json index c4189ca719b..0f12620afd0 100644 --- a/libs/sdk-ui-all/CHANGELOG.json +++ b/libs/sdk-ui-all/CHANGELOG.json @@ -1,6 +1,68 @@ { "name": "@gooddata/sdk-ui-all", "entries": [ + { + "version": "11.15.0", + "tag": "@gooddata/sdk-ui-all_v11.15.0", + "date": "Thu, 08 Jan 2026 08:13:01 GMT", + "comments": { + "none": [ + { + "comment": "sdk-ui-filters: Add testable support for fiscal calendars." + }, + { + "comment": "sdk-ui-charts: Introduce typescript strict mode." + }, + { + "comment": "sdk-ui-kit: Add new `shrink` icon." + }, + { + "comment": "sdk-ui-dashboard,sdk-ui-gen-ai: Introduce async Key Driver Analysis UX flow." + }, + { + "comment": "sdk-ui-kit: Show `UiCombobox` `creatable` option only for multiple non-exact matches." + }, + { + "comment": "Improved AI Assistant responsiveness on small screens by fixing chat overlay width, preventing mobile overflow, and restoring the mobile trigger button." + }, + { + "comment": "sdk-ui-kit: Prevent jumping when scrolling UiPagedVirtualList." + }, + { + "comment": "sdk-ui-filters: Allow dimensionality override in measure value filter." + }, + { + "comment": "sdk-ui-filters: Fix Metric Value Filter's Apply button to being disabled when operator is ALL but dimensionality has changed, and fix blue backward compatibility message showing incorrectly after explicitly setting filter to ALL" + }, + { + "comment": "chore: Upgrade typescript to 5.9.3" + }, + { + "comment": "Add data-testId for search bar of mvf picker" + }, + { + "comment": "Changed: Feature flag enableChartAccessibilityFeatures has been removed." + }, + { + "comment": "sdk-ui-filters: Add explanation message to metric value filter body to filters that have not been migrated to use dimensionality" + }, + { + "comment": "sdk-ui-loaders: Fix dashboard plugin loader to support both named and default exports from plugin entry point, restoring backward compatibility with plugins built before the 'Ban default exports' change" + }, + { + "comment": "sdk-ui-geo: Add support for measure drilling" + }, + { + "comment": "revert Crowdin structure to investigate blocker" + } + ], + "patch": [ + { + "comment": "Fix Key Driver Analysis date formatting by normalizing server patterns to ISO week tokens." + } + ] + } + }, { "version": "11.14.0", "tag": "@gooddata/sdk-ui-all_v11.14.0", diff --git a/libs/sdk-ui-all/CHANGELOG.md b/libs/sdk-ui-all/CHANGELOG.md index df3358ac905..05710113c26 100644 --- a/libs/sdk-ui-all/CHANGELOG.md +++ b/libs/sdk-ui-all/CHANGELOG.md @@ -1,6 +1,33 @@ # Change Log - @gooddata/sdk-ui-all -This log was last generated on Thu, 18 Dec 2025 07:14:24 GMT and should not be manually modified. +This log was last generated on Thu, 08 Jan 2026 08:13:01 GMT and should not be manually modified. + +## 11.15.0 + +Thu, 08 Jan 2026 08:13:01 GMT + +### Patches + +- Fix Key Driver Analysis date formatting by normalizing server patterns to ISO week tokens. + +### Updates + +- sdk-ui-filters: Add testable support for fiscal calendars. +- sdk-ui-charts: Introduce typescript strict mode. +- sdk-ui-kit: Add new `shrink` icon. +- sdk-ui-dashboard,sdk-ui-gen-ai: Introduce async Key Driver Analysis UX flow. +- sdk-ui-kit: Show `UiCombobox` `creatable` option only for multiple non-exact matches. +- Improved AI Assistant responsiveness on small screens by fixing chat overlay width, preventing mobile overflow, and restoring the mobile trigger button. +- sdk-ui-kit: Prevent jumping when scrolling UiPagedVirtualList. +- sdk-ui-filters: Allow dimensionality override in measure value filter. +- sdk-ui-filters: Fix Metric Value Filter's Apply button to being disabled when operator is ALL but dimensionality has changed, and fix blue backward compatibility message showing incorrectly after explicitly setting filter to ALL +- chore: Upgrade typescript to 5.9.3 +- Add data-testId for search bar of mvf picker +- Changed: Feature flag enableChartAccessibilityFeatures has been removed. +- sdk-ui-filters: Add explanation message to metric value filter body to filters that have not been migrated to use dimensionality +- sdk-ui-loaders: Fix dashboard plugin loader to support both named and default exports from plugin entry point, restoring backward compatibility with plugins built before the 'Ban default exports' change +- sdk-ui-geo: Add support for measure drilling +- revert Crowdin structure to investigate blocker ## 11.14.0 diff --git a/libs/sdk-ui-all/package.json b/libs/sdk-ui-all/package.json index 7d193b0f2c6..d30e23a0527 100644 --- a/libs/sdk-ui-all/package.json +++ b/libs/sdk-ui-all/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-ui-all", - "version": "11.15.0-alpha.15", + "version": "11.16.0-alpha.0", "description": "GoodData SDK - All-In-One", "repository": { "type": "git", diff --git a/libs/sdk-ui-catalog/package.json b/libs/sdk-ui-catalog/package.json index e201718a1f8..9ed340fe23b 100644 --- a/libs/sdk-ui-catalog/package.json +++ b/libs/sdk-ui-catalog/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-ui-catalog", - "version": "11.15.0-alpha.15", + "version": "11.16.0-alpha.0", "description": "GoodData SDK - Analytics Catalog", "repository": { "type": "git", diff --git a/libs/sdk-ui-charts/package.json b/libs/sdk-ui-charts/package.json index 873dd4d6f9b..e3cb2bb8533 100644 --- a/libs/sdk-ui-charts/package.json +++ b/libs/sdk-ui-charts/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-ui-charts", - "version": "11.15.0-alpha.15", + "version": "11.16.0-alpha.0", "description": "GoodData.UI SDK - Charts", "repository": { "type": "git", diff --git a/libs/sdk-ui-dashboard/api/sdk-ui-dashboard.api.md b/libs/sdk-ui-dashboard/api/sdk-ui-dashboard.api.md index eb436433837..096a0a64210 100644 --- a/libs/sdk-ui-dashboard/api/sdk-ui-dashboard.api.md +++ b/libs/sdk-ui-dashboard/api/sdk-ui-dashboard.api.md @@ -36,6 +36,7 @@ import { GoodDataSdkError } from '@gooddata/sdk-ui'; import { IAbsoluteDateFilter } from '@gooddata/sdk-model'; import { IAccessControlAware } from '@gooddata/sdk-model'; import { IAccessGrantee } from '@gooddata/sdk-model'; +import { IActiveCalendars } from '@gooddata/sdk-model'; import { IAlertTriggerMode } from '@gooddata/sdk-model'; import { IAnalyticalBackend } from '@gooddata/sdk-backend-spi'; import { IAttributeDescriptorBody } from '@gooddata/sdk-model'; @@ -8941,6 +8942,9 @@ export const selectAccessibleDashboardsLoaded: DashboardSelector; // @alpha export const selectAccessibleDashboardsMap: DashboardSelector>; +// @alpha +export const selectActiveCalendars: DashboardSelector; + // @internal export const selectActiveSection: DashboardSelector; @@ -9505,6 +9509,9 @@ export const selectEnableFilterValuesResolutionInDrillEvents: DashboardSelector< // @internal export const selectEnableFilterViews: DashboardSelector; +// @alpha +export const selectEnableFiscalCalendars: DashboardSelector; + // @internal export const selectEnableIgnoreCrossFiltering: DashboardSelector; diff --git a/libs/sdk-ui-dashboard/package.json b/libs/sdk-ui-dashboard/package.json index 0265ef6c0c4..64e2e82fa36 100644 --- a/libs/sdk-ui-dashboard/package.json +++ b/libs/sdk-ui-dashboard/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-ui-dashboard", - "version": "11.15.0-alpha.15", + "version": "11.16.0-alpha.0", "description": "GoodData SDK - Dashboard Component", "repository": { "type": "git", diff --git a/libs/sdk-ui-dashboard/src/model/store/config/configSelectors.ts b/libs/sdk-ui-dashboard/src/model/store/config/configSelectors.ts index 714538cd253..9566eee9dce 100644 --- a/libs/sdk-ui-dashboard/src/model/store/config/configSelectors.ts +++ b/libs/sdk-ui-dashboard/src/model/store/config/configSelectors.ts @@ -1,10 +1,11 @@ -// (C) 2021-2025 GoodData Corporation +// (C) 2021-2026 GoodData Corporation import { createSelector } from "@reduxjs/toolkit"; import { invariant } from "ts-invariant"; import { type DashboardFiltersApplyMode, + type IActiveCalendars, type IColorPalette, type IDateFilterConfig, type ISeparators, @@ -999,3 +1000,41 @@ export const selectEnableDrillToUrlByDefault: DashboardSelector = creat return enableImplicitDrillToUrl ? (state.settings?.enableDrillToUrlByDefault ?? false) : false; }, ); + +/** + * Returns whether fiscal calendars feature flag is enabled. + * + * @alpha + */ +export const selectEnableFiscalCalendars: DashboardSelector = createSelector( + selectConfig, + (state) => { + return state.settings?.enableFiscalCalendars ?? false; + }, +); + +/** + * Returns the active calendars configuration from workspace settings. + * Controls which calendar types (standard/fiscal) are available. + * + * @alpha + */ +export const selectActiveCalendars: DashboardSelector = createSelector( + selectConfig, + selectEnableFiscalCalendars, + (state, ffEnabled) => { + const activeCalendars = state.settings?.activeCalendars; + if (!ffEnabled) { + return activeCalendars ? { ...activeCalendars, fiscal: false } : undefined; + } + if (!activeCalendars) { + return undefined; + } + // If no calendar type is enabled, default to standard + const hasAnyCalendarEnabled = Object.entries(activeCalendars).some(([_, value]) => value === true); + if (!hasAnyCalendarEnabled) { + return { ...activeCalendars, standard: true }; + } + return activeCalendars; + }, +); diff --git a/libs/sdk-ui-dashboard/src/model/store/index.ts b/libs/sdk-ui-dashboard/src/model/store/index.ts index 3c5be5202b5..6187e09f7c8 100644 --- a/libs/sdk-ui-dashboard/src/model/store/index.ts +++ b/libs/sdk-ui-dashboard/src/model/store/index.ts @@ -1,4 +1,4 @@ -// (C) 2021-2025 GoodData Corporation +// (C) 2021-2026 GoodData Corporation export type { DashboardDispatch, @@ -110,6 +110,8 @@ export { selectExportResultPollingTimeout, selectEnableAnomalyDetectionAlert, selectEnableImplicitDrillToUrl, + selectEnableFiscalCalendars, + selectActiveCalendars, } from "./config/configSelectors.js"; export type { EntitlementsState } from "./entitlements/entitlementsState.js"; export { diff --git a/libs/sdk-ui-dashboard/src/presentation/filterBar/dateFilter/DefaultDashboardDateFilter.tsx b/libs/sdk-ui-dashboard/src/presentation/filterBar/dateFilter/DefaultDashboardDateFilter.tsx index 26eb6a4f618..b072d4b8e63 100644 --- a/libs/sdk-ui-dashboard/src/presentation/filterBar/dateFilter/DefaultDashboardDateFilter.tsx +++ b/libs/sdk-ui-dashboard/src/presentation/filterBar/dateFilter/DefaultDashboardDateFilter.tsx @@ -1,4 +1,4 @@ -// (C) 2021-2025 GoodData Corporation +// (C) 2021-2026 GoodData Corporation import { type ReactElement, useCallback, useMemo, useState } from "react"; @@ -21,6 +21,7 @@ import { type IDashboardDateFilterProps } from "./types.js"; import { dateFilterOptionToDashboardDateFilter } from "../../../_staging/dashboard/dashboardFilterConverter.js"; import { matchDateFilterToDateFilterOptionWithPreference } from "../../../_staging/dateFilterConfig/dateFilterOptionMapping.js"; import { + selectActiveCalendars, selectBackendCapabilities, selectCatalogDateDatasets, selectIsApplyFiltersAllAtOnceEnabledAndSet, @@ -58,6 +59,7 @@ export function DefaultDashboardDateFilter({ const isInEditMode = useDashboardSelector(selectIsInEditMode); const weekStart = useDashboardSelector(selectWeekStart); const isApplyAllAtOnceEnabledAndSet = useDashboardSelector(selectIsApplyFiltersAllAtOnceEnabledAndSet); + const activeCalendars = useDashboardSelector(selectActiveCalendars); const enableFilterAccessibility = settings?.enableFilterAccessibility; @@ -197,6 +199,7 @@ export function DefaultDashboardDateFilter({ ButtonComponent={ButtonComponent} overlayPositionType={overlayPositionType} improveAccessibility={enableFilterAccessibility} + activeCalendars={activeCalendars} /> ); } diff --git a/libs/sdk-ui-ext/package.json b/libs/sdk-ui-ext/package.json index 70d89820904..df5828712bb 100644 --- a/libs/sdk-ui-ext/package.json +++ b/libs/sdk-ui-ext/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-ui-ext", - "version": "11.15.0-alpha.15", + "version": "11.16.0-alpha.0", "description": "GoodData.UI SDK - Extensions", "repository": { "type": "git", diff --git a/libs/sdk-ui-filters/api/sdk-ui-filters.api.md b/libs/sdk-ui-filters/api/sdk-ui-filters.api.md index 46eddc1d32d..2f94259b2e5 100644 --- a/libs/sdk-ui-filters/api/sdk-ui-filters.api.md +++ b/libs/sdk-ui-filters/api/sdk-ui-filters.api.md @@ -15,6 +15,7 @@ import { GoodDataSdkError } from '@gooddata/sdk-ui'; import { IAbsoluteDateFilter } from '@gooddata/sdk-model'; import { IAbsoluteDateFilterForm } from '@gooddata/sdk-model'; import { IAbsoluteDateFilterPreset } from '@gooddata/sdk-model'; +import { IActiveCalendars } from '@gooddata/sdk-model'; import { IAlignPoint } from '@gooddata/sdk-ui-kit'; import { IAllTimeDateFilterOption } from '@gooddata/sdk-model'; import { IAnalyticalBackend } from '@gooddata/sdk-backend-spi'; @@ -301,7 +302,10 @@ export function filterVisibleDateFilterOptions(dateFilterOptions: IDateFilterOpt export function getAttributeFilterSubtitle(isCommittedSelectionInverted: boolean, committedSelectionElements: IAttributeElement[], intl: IntlShape): string; // @alpha -export function getFiscalTabsConfig(presets: DateFilterRelativeOptionGroup | undefined): IFiscalTabsConfig; +export function getDefaultCalendarTab(activeCalendars?: IActiveCalendars, currentPreset?: DateFilterOption): CalendarTabType; + +// @alpha +export function getFiscalTabsConfig(presets: DateFilterRelativeOptionGroup | undefined, activeCalendars?: IActiveCalendars): IFiscalTabsConfig; // @internal export const getLocalizedIcuDateFormatPattern: (locale: string) => string; @@ -821,6 +825,8 @@ export interface IDateFilterOptionsByType { // @public export interface IDateFilterOwnProps extends IDateFilterStatePropsIntersection { + // @alpha + activeCalendars?: IActiveCalendars; // (undocumented) availableGranularities: DateFilterGranularity[]; // @alpha diff --git a/libs/sdk-ui-filters/package.json b/libs/sdk-ui-filters/package.json index 67801225beb..0443535b76e 100644 --- a/libs/sdk-ui-filters/package.json +++ b/libs/sdk-ui-filters/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-ui-filters", - "version": "11.15.0-alpha.15", + "version": "11.16.0-alpha.0", "description": "GoodData.UI SDK - Filter Components", "repository": { "type": "git", diff --git a/libs/sdk-ui-filters/src/DateFilter/DateFilter.tsx b/libs/sdk-ui-filters/src/DateFilter/DateFilter.tsx index fd134ac6095..c20470b19fb 100644 --- a/libs/sdk-ui-filters/src/DateFilter/DateFilter.tsx +++ b/libs/sdk-ui-filters/src/DateFilter/DateFilter.tsx @@ -1,10 +1,15 @@ -// (C) 2007-2025 GoodData Corporation +// (C) 2007-2026 GoodData Corporation import { type ComponentType, PureComponent } from "react"; import { isEmpty, isEqual } from "lodash-es"; -import { type DateFilterGranularity, type WeekStart, isAbsoluteDateFilterForm } from "@gooddata/sdk-model"; +import { + type DateFilterGranularity, + type IActiveCalendars, + type WeekStart, + isAbsoluteDateFilterForm, +} from "@gooddata/sdk-model"; import { type OverlayPositionType } from "@gooddata/sdk-ui-kit"; import { DEFAULT_DATE_FORMAT } from "./constants/Platform.js"; @@ -107,6 +112,22 @@ export interface IDateFilterOwnProps extends IDateFilterStatePropsIntersection { * @alpha */ improveAccessibility?: boolean; + + /** + * Active calendars configuration from workspace settings. + * Controls which calendar types (standard/fiscal) are available in the filter. + * + * @remarks + * When provided: + * - `standard: true` enables standard calendar presets + * - `fiscal: true` enables fiscal calendar presets + * - `default` determines which tab is selected by default ("STANDARD" or "FISCAL") + * + * When undefined, defaults to standard calendar only. + * + * @alpha + */ + activeCalendars?: IActiveCalendars; } /** @@ -280,6 +301,7 @@ export class DateFilter extends PureComponent ); } diff --git a/libs/sdk-ui-filters/src/DateFilter/DateFilterBody/DateFilterBody.tsx b/libs/sdk-ui-filters/src/DateFilter/DateFilterBody/DateFilterBody.tsx index b8db53f704e..57a5ca6547c 100644 --- a/libs/sdk-ui-filters/src/DateFilter/DateFilterBody/DateFilterBody.tsx +++ b/libs/sdk-ui-filters/src/DateFilter/DateFilterBody/DateFilterBody.tsx @@ -1,4 +1,4 @@ -// (C) 2007-2025 GoodData Corporation +// (C) 2007-2026 GoodData Corporation import { type CSSProperties, type ReactElement, forwardRef, useEffect, useState } from "react"; @@ -8,6 +8,7 @@ import { useIntl } from "react-intl"; import { type DateFilterGranularity, + type IActiveCalendars, type WeekStart, isAbsoluteDateFilterForm, isRelativeDateFilterForm, @@ -65,6 +66,12 @@ export interface IDateFilterBodyProps { withoutApply?: boolean; ariaLabel?: string; id?: string; + + /** + * Active calendars configuration from workspace settings. + * @alpha + */ + activeCalendars?: IActiveCalendars; } export const DateFilterBody = forwardRef((props, ref) => { @@ -125,6 +132,7 @@ export const DateFilterBody = forwardRef(( onConfigurationClick, onExcludeCurrentPeriodChange, onSelectedFilterOptionChange, + activeCalendars, } = props; const showExcludeCurrent: boolean = !isMobile || isExcludeCurrentPeriodEnabled; @@ -183,6 +191,7 @@ export const DateFilterBody = forwardRef(( weekStart={weekStart} availableGranularities={availableGranularities} withoutApply={withoutApply} + activeCalendars={activeCalendars} /> ) : ( @@ -201,6 +210,7 @@ export const DateFilterBody = forwardRef(( weekStart={weekStart} availableGranularities={availableGranularities} withoutApply={withoutApply} + activeCalendars={activeCalendars} /> )} diff --git a/libs/sdk-ui-filters/src/DateFilter/DateFilterBody/DateFilterBodyContent.tsx b/libs/sdk-ui-filters/src/DateFilter/DateFilterBody/DateFilterBodyContent.tsx index dd43657d1b4..3281b27bae0 100644 --- a/libs/sdk-ui-filters/src/DateFilter/DateFilterBody/DateFilterBodyContent.tsx +++ b/libs/sdk-ui-filters/src/DateFilter/DateFilterBody/DateFilterBodyContent.tsx @@ -1,10 +1,10 @@ -// (C) 2025 GoodData Corporation +// (C) 2025-2026 GoodData Corporation import { useState } from "react"; import { isEmpty } from "lodash-es"; -import { type DateFilterGranularity, type WeekStart } from "@gooddata/sdk-model"; +import { type DateFilterGranularity, type IActiveCalendars, type WeekStart } from "@gooddata/sdk-model"; import { AbsolutePresetFilterItems } from "./AbsolutePresetFilterItems.js"; import { CalendarTypeTabs } from "./CalendarTypeTabs.js"; @@ -26,8 +26,8 @@ import { filterFiscalPresets, filterStandardGranularities, filterStandardPresets, + getDefaultCalendarTab, getFiscalTabsConfig, - getTabForPreset, } from "../utils/presetFilterUtils.js"; const ITEM_CLASS_MOBILE = "gd-date-filter-item-mobile"; @@ -47,6 +47,10 @@ interface IDateFilterBodyContentProps { closeDropdown: () => void; changeRoute: (newRoute?: DateFilterRoute) => void; onApplyClick: () => void; + /** + * Active calendars configuration from workspace settings. + */ + activeCalendars?: IActiveCalendars; } export function DateFilterBodyContent({ @@ -64,11 +68,12 @@ export function DateFilterBodyContent({ changeRoute, onApplyClick, onSelectedFilterOptionChange, + activeCalendars, }: IDateFilterBodyContentProps) { - const { showTabs } = getFiscalTabsConfig(filterOptions.relativePreset); + const { showTabs } = getFiscalTabsConfig(filterOptions.relativePreset, activeCalendars); const [selectedTab, setSelectedTab] = useState(() => - getTabForPreset(selectedFilterOption), + getDefaultCalendarTab(activeCalendars, selectedFilterOption), ); const filteredRelativePreset = showTabs diff --git a/libs/sdk-ui-filters/src/DateFilter/DateFilterBody/DateFilterBodyMobileContent.tsx b/libs/sdk-ui-filters/src/DateFilter/DateFilterBody/DateFilterBodyMobileContent.tsx index efa408b50a8..46d0d4c369b 100644 --- a/libs/sdk-ui-filters/src/DateFilter/DateFilterBody/DateFilterBodyMobileContent.tsx +++ b/libs/sdk-ui-filters/src/DateFilter/DateFilterBody/DateFilterBodyMobileContent.tsx @@ -1,11 +1,11 @@ -// (C) 2025 GoodData Corporation +// (C) 2025-2026 GoodData Corporation import { useState } from "react"; import { isEmpty } from "lodash-es"; import { useIntl } from "react-intl"; -import { type DateFilterGranularity, type WeekStart } from "@gooddata/sdk-model"; +import { type DateFilterGranularity, type IActiveCalendars, type WeekStart } from "@gooddata/sdk-model"; import { DateFilterBodyContent } from "./DateFilterBodyContent.js"; import { DateFilterBodyContentFiltered } from "./DateFilterBodyContentFiltered.js"; @@ -24,8 +24,8 @@ import { type CalendarTabType, filterFiscalPresets, filterStandardPresets, + getDefaultCalendarTab, getFiscalTabsConfig, - getTabForPreset, } from "../utils/presetFilterUtils.js"; interface IDateFilterBodyMobileContentProps { @@ -44,6 +44,10 @@ interface IDateFilterBodyMobileContentProps { onBack: (newRoute?: DateFilterRoute) => void; onApplyClick: () => void; isRedesigned?: boolean; + /** + * Active calendars configuration from workspace settings. + */ + activeCalendars?: IActiveCalendars; } export function DateFilterBodyMobileContent({ @@ -62,13 +66,14 @@ export function DateFilterBodyMobileContent({ onApplyClick, onSelectedFilterOptionChange, isRedesigned = false, + activeCalendars, }: IDateFilterBodyMobileContentProps) { const intl = useIntl(); - const { showTabs } = getFiscalTabsConfig(filterOptions.relativePreset); + const { showTabs } = getFiscalTabsConfig(filterOptions.relativePreset, activeCalendars); const [selectedTab, setSelectedTab] = useState(() => - getTabForPreset(selectedFilterOption), + getDefaultCalendarTab(activeCalendars, selectedFilterOption), ); const filteredRelativePreset = showTabs @@ -151,6 +156,7 @@ export function DateFilterBodyMobileContent({ isTimeForAbsoluteRangeEnabled={isTimeForAbsoluteRangeEnabled} weekStart={weekStart} availableGranularities={availableGranularities} + activeCalendars={activeCalendars} /> ); } diff --git a/libs/sdk-ui-filters/src/DateFilter/DateFilterBody/DateFilterBodyRedesigned.tsx b/libs/sdk-ui-filters/src/DateFilter/DateFilterBody/DateFilterBodyRedesigned.tsx index eb36c77617b..2e8fc6dbdbd 100644 --- a/libs/sdk-ui-filters/src/DateFilter/DateFilterBody/DateFilterBodyRedesigned.tsx +++ b/libs/sdk-ui-filters/src/DateFilter/DateFilterBody/DateFilterBodyRedesigned.tsx @@ -1,4 +1,4 @@ -// (C) 2007-2025 GoodData Corporation +// (C) 2007-2026 GoodData Corporation import { type CSSProperties, type KeyboardEvent, forwardRef, useEffect, useRef, useState } from "react"; @@ -28,8 +28,8 @@ import { filterFiscalPresets, filterStandardGranularities, filterStandardPresets, + getDefaultCalendarTab, getFiscalTabsConfig, - getTabForPreset, } from "../utils/presetFilterUtils.js"; import { VisibleScrollbar } from "../VisibleScrollbar/VisibleScrollbar.js"; @@ -49,10 +49,10 @@ export const DateFilterBodyRedesigned = forwardRef(() => - getTabForPreset(props.selectedFilterOption), + getDefaultCalendarTab(props.activeCalendars, props.selectedFilterOption), ); const filteredRelativePreset = showTabs @@ -301,6 +301,7 @@ export const DateFilterBodyRedesigned = forwardRef ) : ( diff --git a/libs/sdk-ui-filters/src/DateFilter/DateFilterCore.tsx b/libs/sdk-ui-filters/src/DateFilter/DateFilterCore.tsx index 8d6fabfd15a..1743ed9d2a6 100644 --- a/libs/sdk-ui-filters/src/DateFilter/DateFilterCore.tsx +++ b/libs/sdk-ui-filters/src/DateFilter/DateFilterCore.tsx @@ -1,4 +1,4 @@ -// (C) 2007-2025 GoodData Corporation +// (C) 2007-2026 GoodData Corporation import { type ComponentType, @@ -14,7 +14,7 @@ import { format } from "date-fns"; import { isEmpty } from "lodash-es"; import { MediaQuery } from "react-responsive"; -import { type DateFilterGranularity, type WeekStart } from "@gooddata/sdk-model"; +import { type DateFilterGranularity, type IActiveCalendars, type WeekStart } from "@gooddata/sdk-model"; import { IntlWrapper, ValidationContextStore, @@ -97,6 +97,14 @@ export interface IDateFilterCoreProps { * @alpha */ improveAccessibility?: boolean; + + /** + * Active calendars configuration from workspace settings. + * Controls which calendar types (standard/fiscal) are available in the filter. + * + * @alpha + */ + activeCalendars?: IActiveCalendars; } export const verifyDateFormat = (dateFormat: string): string => { diff --git a/libs/sdk-ui-filters/src/DateFilter/index.ts b/libs/sdk-ui-filters/src/DateFilter/index.ts index 3d10979a934..cc04a101def 100644 --- a/libs/sdk-ui-filters/src/DateFilter/index.ts +++ b/libs/sdk-ui-filters/src/DateFilter/index.ts @@ -1,4 +1,4 @@ -// (C) 2007-2025 GoodData Corporation +// (C) 2007-2026 GoodData Corporation import { defaultDateFilterOptions } from "./constants/config.js"; import { granularityIntlCodes } from "./constants/i18n.js"; @@ -86,6 +86,7 @@ export type { } from "./utils/presetFilterUtils.js"; export { getFiscalTabsConfig, + getDefaultCalendarTab, hasFiscalPresets, hasStandardPresets, filterStandardPresets, diff --git a/libs/sdk-ui-filters/src/DateFilter/utils/presetFilterUtils.ts b/libs/sdk-ui-filters/src/DateFilter/utils/presetFilterUtils.ts index 7976f12b82e..0427012f340 100644 --- a/libs/sdk-ui-filters/src/DateFilter/utils/presetFilterUtils.ts +++ b/libs/sdk-ui-filters/src/DateFilter/utils/presetFilterUtils.ts @@ -1,6 +1,6 @@ -// (C) 2025 GoodData Corporation +// (C) 2025-2026 GoodData Corporation -import { type DateFilterGranularity } from "@gooddata/sdk-model"; +import { type DateFilterGranularity, type IActiveCalendars } from "@gooddata/sdk-model"; import { type DateFilterOption, type DateFilterRelativeOptionGroup } from "../interfaces/index.js"; @@ -56,18 +56,67 @@ export interface IFiscalTabsConfig { } /** - * Get fiscal tabs configuration based on available presets. + * Get fiscal tabs configuration based on available presets and active calendars settings. + * + * @remarks + * When `activeCalendars` is provided, it controls which calendar types are enabled: + * - `activeCalendars.standard === true` enables standard calendar + * - `activeCalendars.fiscal === true` enables fiscal calendar + * - Both enabled → show tabs for switching between calendars + * - Only one enabled → no tabs, show only that calendar type + * + * When `activeCalendars` is undefined (not configured), defaults to standard only. + * * @param presets - The relative presets option group to check, or undefined + * @param activeCalendars - Optional active calendars configuration from workspace settings * @returns Configuration object with hasFiscal, hasStandard, and showTabs flags * @alpha */ -export function getFiscalTabsConfig(presets: DateFilterRelativeOptionGroup | undefined): IFiscalTabsConfig { - const hasFiscal = presets ? FISCAL_ONLY_GRANULARITIES.some((g) => g in presets) : false; - const hasStandard = presets ? STANDARD_GRANULARITIES.some((g) => g in presets) : false; +export function getFiscalTabsConfig( + presets: DateFilterRelativeOptionGroup | undefined, + activeCalendars?: IActiveCalendars, +): IFiscalTabsConfig { + // Check if presets contain the respective granularities + const presetsHaveFiscal = presets ? FISCAL_ONLY_GRANULARITIES.some((g) => g in presets) : false; + const presetsHaveStandard = presets ? STANDARD_GRANULARITIES.some((g) => g in presets) : false; + + // Determine effective calendar availability based on activeCalendars settings + // When activeCalendars is undefined → default to standard only (no fiscal) + const hasFiscal = activeCalendars ? activeCalendars.fiscal && presetsHaveFiscal : false; + const hasStandard = activeCalendars + ? activeCalendars.standard && presetsHaveStandard + : presetsHaveStandard; + const showTabs = hasFiscal && hasStandard; return { hasFiscal, hasStandard, showTabs }; } +/** + * Determine the default calendar tab based on active calendars configuration. + * + * @remarks + * Priority: + * 1. If current preset is fiscal, stay on fiscal tab (respect user's current selection) + * 2. Otherwise, use the default from activeCalendars settings + * 3. Fall back to "standard" if no configuration + * + * @param activeCalendars - Optional active calendars configuration from workspace settings + * @param currentPreset - The currently selected date filter option + * @returns The tab that should be selected by default + * @alpha + */ +export function getDefaultCalendarTab( + activeCalendars?: IActiveCalendars, + currentPreset?: DateFilterOption, +): CalendarTabType { + // Respect current preset's calendar type first + if (currentPreset && getTabForPreset(currentPreset) === "fiscal") { + return "fiscal"; + } + // Use default from settings, fall back to standard + return activeCalendars?.default === "FISCAL" ? "fiscal" : "standard"; +} + /** * Check if the presets contain any fiscal granularities. * @param presets - The relative presets option group to check diff --git a/libs/sdk-ui-filters/src/MeasureValueFilter/useAttributePickerItemsData.ts b/libs/sdk-ui-filters/src/MeasureValueFilter/useAttributePickerItemsData.ts index 7af05555f6f..59edadf1edb 100644 --- a/libs/sdk-ui-filters/src/MeasureValueFilter/useAttributePickerItemsData.ts +++ b/libs/sdk-ui-filters/src/MeasureValueFilter/useAttributePickerItemsData.ts @@ -1,4 +1,4 @@ -// (C) 2025 GoodData Corporation +// (C) 2025-2026 GoodData Corporation import { useMemo } from "react"; @@ -11,6 +11,81 @@ export const isDateDimensionalityItem = (item: IDimensionalityItem) => export type CatalogItemsByDataset = Map; +function filterItemsByType( + items: IDimensionalityItem[], + effectiveTypeFilter: "attribute" | "date", +): IDimensionalityItem[] { + const filterByType = (item: IDimensionalityItem) => + effectiveTypeFilter === "date" ? isDateDimensionalityItem(item) : !isDateDimensionalityItem(item); + return items.filter(filterByType); +} + +function dedupeCatalogAgainstInsight( + insightItems: IDimensionalityItem[], + catalogItems: IDimensionalityItem[], +): IDimensionalityItem[] { + // Remove duplicates: items that are already present in "From visualization" should not appear in catalog. + // Prefer ref-based dedupe when bucket items provide `ref` (display form ObjRef); fallback to title otherwise. + const insightRefKeys = new Set( + insightItems.map((i) => (i.ref ? objRefToString(i.ref) : undefined)).filter((x): x is string => !!x), + ); + const insightTitlesWithoutRef = new Set(insightItems.filter((i) => !i.ref).map((i) => i.title)); + + return catalogItems.filter((item) => { + const itemKey = objRefToString(item.identifier); + if (insightRefKeys.has(itemKey)) { + return false; + } + return !insightTitlesWithoutRef.has(item.title); + }); +} + +function filterCatalogBySelectedDateDataset( + catalogItems: IDimensionalityItem[], + effectiveTypeFilter: "attribute" | "date", + effectiveSelectedDateDatasetKey: string | undefined, +): IDimensionalityItem[] { + // If we are in the Date tab, filter date items by selected date dataset + if (effectiveTypeFilter !== "date" || !effectiveSelectedDateDatasetKey) { + return catalogItems; + } + + const matchesSelectedDataset = (item: IDimensionalityItem) => { + if (!item.dataset) { + // Should not happen once the app provides dataset for all date items; keep as fallback. + return true; + } + return objRefToString(item.dataset.identifier) === effectiveSelectedDateDatasetKey; + }; + + // Insight ("From visualization") date items should always remain visible. (This only filters catalog items.) + return catalogItems.filter(matchesSelectedDataset); +} + +function filterItemsBySearch(items: IDimensionalityItem[], searchString: string): IDimensionalityItem[] { + // Apply search filter + if (!searchString.trim()) { + return items; + } + const lowerSearch = searchString.toLowerCase(); + return items.filter((item) => item.title.toLowerCase().includes(lowerSearch)); +} + +function groupCatalogItemsByDataset(catalogItems: IDimensionalityItem[]): CatalogItemsByDataset { + // Group catalog items by dataset (Attribute tab) + const grouped = new Map(); + catalogItems.forEach((item) => { + if (item.dataset) { + const datasetKey = objRefToString(item.dataset.identifier); + if (!grouped.has(datasetKey)) { + grouped.set(datasetKey, { title: item.dataset.title, items: [] }); + } + grouped.get(datasetKey)!.items.push(item); + } + }); + return grouped; +} + interface IUseAttributePickerItemsDataParams { availableInsightItems: IDimensionalityItem[]; availableCatalogItems: IDimensionalityItem[]; @@ -38,82 +113,32 @@ export function useAttributePickerItemsData({ }: IUseAttributePickerItemsDataParams): IUseAttributePickerItemsDataResult { return useMemo(() => { // Start from explicit sources so the separation logic cannot drift. - let insightItemsList = availableInsightItems; - let catalogItemsList = availableCatalogItems; - - // Apply type filter - const filterByType = (item: IDimensionalityItem) => { - return effectiveTypeFilter === "date" - ? isDateDimensionalityItem(item) - : !isDateDimensionalityItem(item); - }; - insightItemsList = insightItemsList.filter(filterByType); - catalogItemsList = catalogItemsList.filter(filterByType); - - // Remove duplicates: items that are already present in "From visualization" should not appear in catalog. - // Prefer ref-based dedupe when bucket items provide `ref` (display form ObjRef); fallback to title otherwise. - const insightRefKeys = new Set( - insightItemsList - .map((i) => (i.ref ? objRefToString(i.ref) : undefined)) - .filter((x): x is string => !!x), + const insightItemsAfterType = filterItemsByType(availableInsightItems, effectiveTypeFilter); + const catalogItemsAfterType = filterItemsByType(availableCatalogItems, effectiveTypeFilter); + + const dedupedCatalog = dedupeCatalogAgainstInsight(insightItemsAfterType, catalogItemsAfterType); + const dateDatasetFilteredCatalog = filterCatalogBySelectedDateDataset( + dedupedCatalog, + effectiveTypeFilter, + effectiveSelectedDateDatasetKey, ); - const insightTitlesWithoutRef = new Set(insightItemsList.filter((i) => !i.ref).map((i) => i.title)); - catalogItemsList = catalogItemsList.filter((item) => { - const itemKey = objRefToString(item.identifier); - if (insightRefKeys.has(itemKey)) { - return false; - } - return !insightTitlesWithoutRef.has(item.title); - }); - - // If we are in the Date tab, filter date items by selected date dataset - if (effectiveTypeFilter === "date" && effectiveSelectedDateDatasetKey) { - const matchesSelectedDataset = (item: IDimensionalityItem) => { - if (!item.dataset) { - // Should not happen once the app provides dataset for all date items; keep as fallback. - return true; - } - return objRefToString(item.dataset.identifier) === effectiveSelectedDateDatasetKey; - }; - // Insight ("From visualization") date items should always remain visible. - catalogItemsList = catalogItemsList.filter(matchesSelectedDataset); - } - - // Apply search filter - if (searchString.trim()) { - const lowerSearch = searchString.toLowerCase(); - const filterBySearch = (item: IDimensionalityItem) => - item.title.toLowerCase().includes(lowerSearch); - insightItemsList = insightItemsList.filter(filterBySearch); - catalogItemsList = catalogItemsList.filter(filterBySearch); - } + const filteredInsightItems = filterItemsBySearch(insightItemsAfterType, searchString); + const filteredCatalogItems = filterItemsBySearch(dateDatasetFilteredCatalog, searchString); // For Date tab, we do not render dataset headers in the list (dataset is selected via "Date as"). if (effectiveTypeFilter === "date") { return { - filteredInsightItems: insightItemsList, - filteredCatalogItems: catalogItemsList, + filteredInsightItems, + filteredCatalogItems, catalogItemsByDataset: new Map(), }; } - // Group catalog items by dataset (Attribute tab) - const grouped = new Map(); - catalogItemsList.forEach((item) => { - if (item.dataset) { - const datasetKey = objRefToString(item.dataset.identifier); - if (!grouped.has(datasetKey)) { - grouped.set(datasetKey, { title: item.dataset.title, items: [] }); - } - grouped.get(datasetKey)!.items.push(item); - } - }); - return { - filteredInsightItems: insightItemsList, - catalogItemsByDataset: grouped, - filteredCatalogItems: catalogItemsList, + filteredInsightItems, + catalogItemsByDataset: groupCatalogItemsByDataset(filteredCatalogItems), + filteredCatalogItems, }; }, [ availableInsightItems, diff --git a/libs/sdk-ui-filters/src/index.ts b/libs/sdk-ui-filters/src/index.ts index dcc45fc4b63..f47916be482 100644 --- a/libs/sdk-ui-filters/src/index.ts +++ b/libs/sdk-ui-filters/src/index.ts @@ -1,4 +1,4 @@ -// (C) 2019-2025 GoodData Corporation +// (C) 2019-2026 GoodData Corporation /** * This package provides several React components related to filters. @@ -48,6 +48,7 @@ export { isUiRelativeDateFilterForm, getLocalizedIcuDateFormatPattern, getFiscalTabsConfig, + getDefaultCalendarTab, hasFiscalPresets, hasStandardPresets, filterStandardPresets, diff --git a/libs/sdk-ui-gen-ai/package.json b/libs/sdk-ui-gen-ai/package.json index db95895c246..21ec9a42de8 100644 --- a/libs/sdk-ui-gen-ai/package.json +++ b/libs/sdk-ui-gen-ai/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-ui-gen-ai", - "version": "11.15.0-alpha.15", + "version": "11.16.0-alpha.0", "description": "GoodData GenAI SDK", "repository": { "type": "git", diff --git a/libs/sdk-ui-geo/package.json b/libs/sdk-ui-geo/package.json index 01a5e46a2a7..1f91bd64f82 100644 --- a/libs/sdk-ui-geo/package.json +++ b/libs/sdk-ui-geo/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-ui-geo", - "version": "11.15.0-alpha.15", + "version": "11.16.0-alpha.0", "description": "GoodData.UI SDK - Geo Charts", "repository": { "type": "git", diff --git a/libs/sdk-ui-kit/package.json b/libs/sdk-ui-kit/package.json index 1ffcd2d0ddf..fd39f70bcdf 100644 --- a/libs/sdk-ui-kit/package.json +++ b/libs/sdk-ui-kit/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-ui-kit", - "version": "11.15.0-alpha.15", + "version": "11.16.0-alpha.0", "description": "GoodData SDK - UI Building Components", "repository": { "type": "git", diff --git a/libs/sdk-ui-loaders/package.json b/libs/sdk-ui-loaders/package.json index fcfb8231f80..5874d8bbb5e 100644 --- a/libs/sdk-ui-loaders/package.json +++ b/libs/sdk-ui-loaders/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-ui-loaders", - "version": "11.15.0-alpha.15", + "version": "11.16.0-alpha.0", "description": "GoodData SDK Runtime Component Loaders", "repository": { "type": "git", diff --git a/libs/sdk-ui-pivot/package.json b/libs/sdk-ui-pivot/package.json index e9917c39abc..02884e479a8 100644 --- a/libs/sdk-ui-pivot/package.json +++ b/libs/sdk-ui-pivot/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-ui-pivot", - "version": "11.15.0-alpha.15", + "version": "11.16.0-alpha.0", "description": "GoodData.UI SDK - Pivot Table", "repository": { "type": "git", diff --git a/libs/sdk-ui-semantic-search/package.json b/libs/sdk-ui-semantic-search/package.json index 5d91a8f50d1..aef219af884 100644 --- a/libs/sdk-ui-semantic-search/package.json +++ b/libs/sdk-ui-semantic-search/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-ui-semantic-search", - "version": "11.15.0-alpha.15", + "version": "11.16.0-alpha.0", "description": "GoodData SDK TypeScript & React skeleton", "repository": { "type": "git", diff --git a/libs/sdk-ui-theme-provider/package.json b/libs/sdk-ui-theme-provider/package.json index 3bed6ee77ce..8217db1ae54 100644 --- a/libs/sdk-ui-theme-provider/package.json +++ b/libs/sdk-ui-theme-provider/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-ui-theme-provider", - "version": "11.15.0-alpha.15", + "version": "11.16.0-alpha.0", "description": "GoodData SDK - Theme provider", "repository": { "type": "git", diff --git a/libs/sdk-ui-vis-commons/package.json b/libs/sdk-ui-vis-commons/package.json index 556d10f2465..1aa34e2ad65 100644 --- a/libs/sdk-ui-vis-commons/package.json +++ b/libs/sdk-ui-vis-commons/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-ui-vis-commons", - "version": "11.15.0-alpha.15", + "version": "11.16.0-alpha.0", "description": "GoodData.UI SDK - common functionality for different types of visualizations", "repository": { "type": "git", diff --git a/libs/sdk-ui/package.json b/libs/sdk-ui/package.json index d38305f4a30..f273d86a635 100644 --- a/libs/sdk-ui/package.json +++ b/libs/sdk-ui/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/sdk-ui", - "version": "11.15.0-alpha.15", + "version": "11.16.0-alpha.0", "description": "GoodData.UI SDK - Core", "repository": { "type": "git", diff --git a/libs/util/package.json b/libs/util/package.json index e13391509c7..2216abe829c 100644 --- a/libs/util/package.json +++ b/libs/util/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/util", - "version": "11.15.0-alpha.15", + "version": "11.16.0-alpha.0", "description": "GoodData Utility Functions", "repository": { "type": "git", diff --git a/tools/app-toolkit/package.json b/tools/app-toolkit/package.json index 52b564e46fe..cd7f1dc6370 100644 --- a/tools/app-toolkit/package.json +++ b/tools/app-toolkit/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/app-toolkit", - "version": "11.15.0-alpha.15", + "version": "11.16.0-alpha.0", "description": "CLI with useful tools for creating and maintaining GoodData web applications.", "repository": { "type": "git", diff --git a/tools/catalog-export/package.json b/tools/catalog-export/package.json index 63c80788ac3..85c3354de42 100644 --- a/tools/catalog-export/package.json +++ b/tools/catalog-export/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/catalog-export", - "version": "11.15.0-alpha.15", + "version": "11.16.0-alpha.0", "description": "GoodData SDK Catalog Export tooling", "repository": { "type": "git", diff --git a/tools/eslint-config/package.json b/tools/eslint-config/package.json index bf7eedc9fa3..61418b3b059 100644 --- a/tools/eslint-config/package.json +++ b/tools/eslint-config/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/eslint-config", - "version": "11.15.0-alpha.15", + "version": "11.16.0-alpha.0", "repository": { "type": "git", "url": "https://github.com/gooddata/gooddata-ui-sdk.git", diff --git a/tools/i18n-toolkit/package.json b/tools/i18n-toolkit/package.json index be41feda469..0a6982c0707 100644 --- a/tools/i18n-toolkit/package.json +++ b/tools/i18n-toolkit/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/i18n-toolkit", - "version": "11.15.0-alpha.15", + "version": "11.16.0-alpha.0", "description": "Localization validator to validate localization complexity and intl and html format.", "repository": { "type": "git", diff --git a/tools/mock-handling/package.json b/tools/mock-handling/package.json index d9faa3c3dc8..5013c4f1bf6 100644 --- a/tools/mock-handling/package.json +++ b/tools/mock-handling/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/mock-handling", - "version": "11.15.0-alpha.15", + "version": "11.16.0-alpha.0", "description": "GoodData SDK Mock data capture and management tool", "repository": { "type": "git", diff --git a/tools/plugin-toolkit/package.json b/tools/plugin-toolkit/package.json index 20821e8923f..09dee18287e 100644 --- a/tools/plugin-toolkit/package.json +++ b/tools/plugin-toolkit/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/plugin-toolkit", - "version": "11.15.0-alpha.15", + "version": "11.16.0-alpha.0", "description": "GoodData Set of Tools for working with Plugins", "repository": { "type": "git", diff --git a/tools/reference-workspace/package.json b/tools/reference-workspace/package.json index ce8207774e7..5263809b1c9 100644 --- a/tools/reference-workspace/package.json +++ b/tools/reference-workspace/package.json @@ -1,6 +1,6 @@ { "name": "@gooddata/reference-workspace", - "version": "11.15.0-alpha.15", + "version": "11.16.0-alpha.0", "description": "GoodData SDK - Reference Workspace for tests", "repository": { "type": "git",