@gooddata/sdk-ui-dashboard 11.44.0-alpha.3 → 11.45.0-alpha.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.
- package/esm/__version.d.ts +1 -1
- package/esm/__version.js +1 -1
- package/esm/index.d.ts +1 -1
- package/esm/index.d.ts.map +1 -1
- package/esm/index.js +1 -1
- package/esm/model/commandHandlers/drill/crossFilteringHandler.d.ts.map +1 -1
- package/esm/model/commandHandlers/drill/crossFilteringHandler.js +2 -3
- package/esm/model/commandHandlers/drill/drillToDashboardHandler.d.ts.map +1 -1
- package/esm/model/commandHandlers/drill/drillToDashboardHandler.js +1 -3
- package/esm/model/store/config/configSelectors.d.ts +0 -42
- package/esm/model/store/config/configSelectors.d.ts.map +1 -1
- package/esm/model/store/config/configSelectors.js +0 -56
- package/esm/model/store/tabs/layout/layoutSelectors.d.ts.map +1 -1
- package/esm/model/store/tabs/layout/layoutSelectors.js +2 -3
- package/esm/presentation/automations/alerting/DefaultAlertingDialog/hooks/useEditAlert.d.ts.map +1 -1
- package/esm/presentation/automations/alerting/DefaultAlertingDialog/hooks/useEditAlert.js +2 -2
- package/esm/presentation/automations/connectors/ScheduledEmailConnector.d.ts.map +1 -1
- package/esm/presentation/automations/connectors/ScheduledEmailConnector.js +49 -6
- package/esm/presentation/automations/connectors/ScheduledEmailConnector.test.d.ts +2 -0
- package/esm/presentation/automations/connectors/ScheduledEmailConnector.test.d.ts.map +1 -0
- package/esm/presentation/automations/connectors/ScheduledEmailConnector.test.js +165 -0
- package/esm/presentation/automations/connectors/hooks/useBuildAutomationsContext.d.ts.map +1 -1
- package/esm/presentation/automations/connectors/hooks/useBuildAutomationsContext.js +10 -5
- package/esm/presentation/automations/connectors/hooks/useBuildAutomationsContext.test.js +1 -1
- package/esm/presentation/automations/connectors/hooks/useBuildScheduledEmailDialogContext.d.ts.map +1 -1
- package/esm/presentation/automations/connectors/hooks/useBuildScheduledEmailDialogContext.js +2 -8
- package/esm/presentation/automations/connectors/hooks/useBuildScheduledEmailDialogContext.test.js +0 -1
- package/esm/presentation/automations/connectors/hooks/useBuildScheduledEmailManagementDialogContext.d.ts +3 -0
- package/esm/presentation/automations/connectors/hooks/useBuildScheduledEmailManagementDialogContext.d.ts.map +1 -0
- package/esm/presentation/automations/connectors/hooks/useBuildScheduledEmailManagementDialogContext.js +38 -0
- package/esm/presentation/automations/connectors/hooks/useBuildScheduledEmailManagementDialogContext.test.d.ts +2 -0
- package/esm/presentation/automations/connectors/hooks/useBuildScheduledEmailManagementDialogContext.test.d.ts.map +1 -0
- package/esm/presentation/automations/connectors/hooks/useBuildScheduledEmailManagementDialogContext.test.js +42 -0
- package/esm/presentation/automations/contexts/AutomationsContext.d.ts +12 -1
- package/esm/presentation/automations/contexts/AutomationsContext.d.ts.map +1 -1
- package/esm/presentation/automations/contexts/ScheduledEmailDialogContext.d.ts +1 -6
- package/esm/presentation/automations/contexts/ScheduledEmailDialogContext.d.ts.map +1 -1
- package/esm/presentation/automations/contexts/ScheduledEmailManagementDialogContext.d.ts +54 -0
- package/esm/presentation/automations/contexts/ScheduledEmailManagementDialogContext.d.ts.map +1 -0
- package/esm/presentation/automations/contexts/ScheduledEmailManagementDialogContext.js +11 -0
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/hooks/useEditScheduledEmail.d.ts.map +1 -1
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/hooks/useEditScheduledEmail.js +2 -2
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/hooks/useScheduleValidation.js +2 -2
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailManagementDialog/DefaultScheduledEmailManagementDialog.d.ts.map +1 -1
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailManagementDialog/DefaultScheduledEmailManagementDialog.js +5 -35
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailManagementDialog/DefaultScheduledEmailManagementDialogContentBasic.d.ts.map +1 -1
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailManagementDialog/DefaultScheduledEmailManagementDialogContentBasic.js +5 -15
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailManagementDialog/DefaultScheduledEmailManagementDialogContentEnhanced.d.ts.map +1 -1
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailManagementDialog/DefaultScheduledEmailManagementDialogContentEnhanced.js +7 -25
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailManagementDialog/components/DeleteScheduleConfirmDialog.d.ts.map +1 -1
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailManagementDialog/components/DeleteScheduleConfirmDialog.js +3 -5
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailManagementDialog/components/ScheduledEmail.d.ts.map +1 -1
- package/esm/presentation/automations/scheduledEmail/DefaultScheduledEmailManagementDialog/components/ScheduledEmail.js +3 -6
- package/esm/presentation/automations/scheduledEmail/hooks/useScheduleEmailDialogAccessibility.d.ts.map +1 -1
- package/esm/presentation/automations/scheduledEmail/hooks/useScheduleEmailDialogAccessibility.js +3 -4
- package/esm/presentation/automations/shared/automationFilters/components/AutomationDateFilter.test.js +2 -1
- package/esm/presentation/dashboard/DashboardSidebar/CreationPanel.d.ts.map +1 -1
- package/esm/presentation/dashboard/DashboardSidebar/CreationPanel.js +2 -4
- package/esm/presentation/dashboard/DashboardSidebar/FloatingToolbar.d.ts.map +1 -1
- package/esm/presentation/dashboard/DashboardSidebar/FloatingToolbar.js +2 -3
- package/esm/presentation/dragAndDrop/draggableFilterDropZone/DraggableFilterDropZone.d.ts.map +1 -1
- package/esm/presentation/dragAndDrop/draggableFilterDropZone/DraggableFilterDropZone.js +1 -3
- package/esm/presentation/filterBar/attributeFilter/addAttributeFilter/AddAttributeFilterPlaceholder.d.ts.map +1 -1
- package/esm/presentation/filterBar/attributeFilter/addAttributeFilter/AddAttributeFilterPlaceholder.js +1 -4
- package/esm/presentation/filterBar/attributeFilter/addAttributeFilter/AttributesDropdown.d.ts.map +1 -1
- package/esm/presentation/filterBar/attributeFilter/addAttributeFilter/AttributesDropdown.js +11 -6
- package/esm/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/hooks/useAvailableDatasetsForItems.d.ts.map +1 -1
- package/esm/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/hooks/useAvailableDatasetsForItems.js +1 -4
- package/esm/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/limitValues/LimitValuesConfiguration.d.ts.map +1 -1
- package/esm/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/limitValues/LimitValuesConfiguration.js +1 -3
- package/esm/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/limitValues/dialog/ParentFiltersPage.d.ts.map +1 -1
- package/esm/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/limitValues/dialog/ParentFiltersPage.js +1 -4
- package/esm/presentation/filterBar/filterBar/filterViews/FilterViewsList.d.ts.map +1 -1
- package/esm/presentation/filterBar/filterBar/filterViews/FilterViewsList.js +9 -3
- package/esm/presentation/widget/insight/ViewModeDashboardInsight/DashboardInsightWithDrillDialog.d.ts.map +1 -1
- package/esm/presentation/widget/insight/ViewModeDashboardInsight/DashboardInsightWithDrillDialog.js +2 -3
- package/esm/presentation/widget/insight/configuration/InsightAlertConfig/hooks/useEditAlert.d.ts.map +1 -1
- package/esm/presentation/widget/insight/configuration/InsightAlertConfig/hooks/useEditAlert.js +2 -3
- package/esm/presentation/widget/insight/configuration/InsightCrossFiltering.d.ts +1 -1
- package/esm/presentation/widget/insight/configuration/InsightCrossFiltering.d.ts.map +1 -1
- package/esm/presentation/widget/insight/configuration/InsightCrossFiltering.js +1 -6
- package/esm/sdk-ui-dashboard.d.ts +0 -49
- package/package.json +20 -20
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sub-context for the scheduled-email management dialog.
|
|
3
|
+
* The connector hydrates this from dashboard state.
|
|
4
|
+
*
|
|
5
|
+
* Values already available on AutomationsContext (locale, currentUser, timezone,
|
|
6
|
+
* isWhiteLabeled, isExecutionTimestampMode, externalRecipient, features.*) are NOT
|
|
7
|
+
* duplicated here — consumers read those from useAutomationsContext().
|
|
8
|
+
*
|
|
9
|
+
* @internal
|
|
10
|
+
*/
|
|
11
|
+
export interface IScheduledEmailManagementDialogContextValue {
|
|
12
|
+
/**
|
|
13
|
+
* Whether the scheduled-email create/edit dialog is currently open (from store UI slice).
|
|
14
|
+
* Used by the management dialog tree's focus-return logic (refocus when the edit dialog closes).
|
|
15
|
+
*/
|
|
16
|
+
isScheduleEmailDialogOpen: boolean;
|
|
17
|
+
/**
|
|
18
|
+
* Monotonic counter that increments whenever the automation list is invalidated.
|
|
19
|
+
* Consumers can use this as a cache-bust key for re-fetching.
|
|
20
|
+
*/
|
|
21
|
+
automationsInvalidationId?: number;
|
|
22
|
+
/**
|
|
23
|
+
* Whether accessibility mode is active (for aria/keyboard focus management).
|
|
24
|
+
*/
|
|
25
|
+
enableAccessibilityMode: boolean;
|
|
26
|
+
/**
|
|
27
|
+
* Whether the dashboard is rendered in an embedded (iframe) context.
|
|
28
|
+
*/
|
|
29
|
+
isEmbedded: boolean;
|
|
30
|
+
/**
|
|
31
|
+
* Id of the dashboard the management dialog is rendered on (mirrors alerting management ctx).
|
|
32
|
+
* Used to preselect the dashboard filter in the enhanced automations list.
|
|
33
|
+
*/
|
|
34
|
+
dashboardId?: string;
|
|
35
|
+
/**
|
|
36
|
+
* Title of the dashboard the management dialog is rendered on (mirrors alerting management ctx).
|
|
37
|
+
* Used as the label of the preselected dashboard filter in the enhanced automations list.
|
|
38
|
+
*/
|
|
39
|
+
dashboardTitle?: string;
|
|
40
|
+
/**
|
|
41
|
+
* Maximum number of automations allowed (derived connector-side from the
|
|
42
|
+
* max-automations entitlement, falling back to DEFAULT_MAX_AUTOMATIONS).
|
|
43
|
+
* Combined with the dialog's automations count to gate the create button.
|
|
44
|
+
*/
|
|
45
|
+
maxAutomations: number;
|
|
46
|
+
/**
|
|
47
|
+
* Whether the unlimited-automations entitlement is present. When true the
|
|
48
|
+
* max-automations limit is not enforced.
|
|
49
|
+
*/
|
|
50
|
+
unlimitedAutomations: boolean;
|
|
51
|
+
}
|
|
52
|
+
export declare const ScheduledEmailManagementDialogContextProvider: import("react").Provider<IScheduledEmailManagementDialogContextValue | undefined>;
|
|
53
|
+
export declare function useScheduledEmailManagementDialogContext(): IScheduledEmailManagementDialogContextValue;
|
|
54
|
+
//# sourceMappingURL=ScheduledEmailManagementDialogContext.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ScheduledEmailManagementDialogContext.d.ts","sourceRoot":"","sources":["../../../../src/presentation/automations/contexts/ScheduledEmailManagementDialogContext.ts"],"names":[],"mappings":"AAIA;;;;;;;;;GASG;AACH,MAAM,WAAW,2CAA2C;IACxD;;;OAGG;IACH,yBAAyB,EAAE,OAAO,CAAC;IACnC;;;OAGG;IACH,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC;;OAEG;IACH,uBAAuB,EAAE,OAAO,CAAC;IACjC;;OAEG;IACH,UAAU,EAAE,OAAO,CAAC;IACpB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;;OAIG;IACH,cAAc,EAAE,MAAM,CAAC;IACvB;;;OAGG;IACH,oBAAoB,EAAE,OAAO,CAAC;CACjC;AAMD,eAAO,MAAM,6CAA6C,mFAAiD,CAAC;AAE5G,wBAAgB,wCAAwC,IAAI,2CAA2C,CAQtG"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
// (C) 2026 GoodData Corporation
|
|
2
|
+
import { createContext, useContext } from "react";
|
|
3
|
+
const ScheduledEmailManagementDialogContext = createContext(undefined);
|
|
4
|
+
export const ScheduledEmailManagementDialogContextProvider = ScheduledEmailManagementDialogContext.Provider;
|
|
5
|
+
export function useScheduledEmailManagementDialogContext() {
|
|
6
|
+
const ctx = useContext(ScheduledEmailManagementDialogContext);
|
|
7
|
+
if (!ctx) {
|
|
8
|
+
throw new Error("useScheduledEmailManagementDialogContext must be used within ScheduledEmailManagementDialogContextProvider");
|
|
9
|
+
}
|
|
10
|
+
return ctx;
|
|
11
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useEditScheduledEmail.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/hooks/useEditScheduledEmail.ts"],"names":[],"mappings":"AAOA,OAAO,EAGH,KAAK,uBAAuB,EAC5B,KAAK,iBAAiB,EACtB,KAAK,yBAAyB,EAE9B,KAAK,mCAAmC,EACxC,KAAK,oBAAoB,EACzB,KAAK,wBAAwB,EAC7B,KAAK,yBAAyB,EAE9B,KAAK,4CAA4C,EACjD,KAAK,OAAO,EACZ,KAAK,QAAQ,EACb,KAAK,8BAA8B,EACnC,KAAK,kCAAkC,EACvC,KAAK,OAAO,EACZ,KAAK,cAAc,EACnB,KAAK,oBAAoB,EAQ5B,MAAM,qBAAqB,CAAC;AAM7B,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,+CAA+C,CAAC;AA2B3F,MAAM,WAAW,2BAA2B;IACxC,qBAAqB,CAAC,EAAE,yBAAyB,CAAC;IAClD,oBAAoB,EAAE,8BAA8B,EAAE,GAAG,kCAAkC,EAAE,CAAC;IAC9F,wBAAwB,EAAE,MAAM,CAAC;IACjC,iFAAiF;IACjF,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,QAAQ,CAAC;IACnB,aAAa,CAAC,EAAE,OAAO,EAAE,CAAC;IAC1B,uBAAuB,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAC9C,gBAAgB,CAAC,EAAE,iBAAiB,EAAE,CAAC;IACvC,0BAA0B,EAAE,CAAC,OAAO,EAAE,iBAAiB,EAAE,KAAK,IAAI,CAAC;IAEnE;;;OAGG;IACH,4BAA4B,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,EAAE,CAAC,CAAC;IACnE;;;OAGG;IACH,+BAA+B,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,EAAE,CAAC,KAAK,IAAI,CAAC;IACzF,gBAAgB,CAAC,EAAE,qBAAqB,EAAE,GAAG,SAAS,CAAC;IACvD,gCAAgC,CAAC,EAAE,wBAAwB,EAAE,GAAG,SAAS,CAAC;IAC1E,qCAAqC,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,wBAAwB,EAAE,CAAC,CAAC;IAEnF,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,eAAe,EAAE,CAAC,YAAY,EAAE,OAAO,KAAK,IAAI,CAAC;IACjD,uBAAuB,EAAE,iBAAiB,EAAE,CAAC;IAC7C,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,wBAAwB,EAAE,OAAO,CAAC;IAClC,kBAAkB,CAAC,EAAE,4CAA4C,CAAC,UAAU,CAAC,CAAC;CACjF;AAED,wBAAgB,qBAAqB,CAAC,EAClC,qBAAqB,EACrB,oBAAoB,EACpB,OAAO,EACP,MAAM,EACN,KAAK,EACL,uBAAuB,EACvB,gBAAgB,EAChB,4BAA4B,EAC5B,wBAAwB,EACxB,0BAA0B,EAC1B,+BAA+B,EAC/B,gCAAgC,EAChC,YAAY,EACZ,eAAe,EACf,uBAAuB,EACvB,yBAAyB,EACzB,wBAAwB,EACxB,kBAAkB,EAClB,gBAAgB,EAChB,qCAAqC,EACxC,EAAE,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"useEditScheduledEmail.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/automations/scheduledEmail/DefaultScheduledEmailDialog/hooks/useEditScheduledEmail.ts"],"names":[],"mappings":"AAOA,OAAO,EAGH,KAAK,uBAAuB,EAC5B,KAAK,iBAAiB,EACtB,KAAK,yBAAyB,EAE9B,KAAK,mCAAmC,EACxC,KAAK,oBAAoB,EACzB,KAAK,wBAAwB,EAC7B,KAAK,yBAAyB,EAE9B,KAAK,4CAA4C,EACjD,KAAK,OAAO,EACZ,KAAK,QAAQ,EACb,KAAK,8BAA8B,EACnC,KAAK,kCAAkC,EACvC,KAAK,OAAO,EACZ,KAAK,cAAc,EACnB,KAAK,oBAAoB,EAQ5B,MAAM,qBAAqB,CAAC;AAM7B,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,+CAA+C,CAAC;AA2B3F,MAAM,WAAW,2BAA2B;IACxC,qBAAqB,CAAC,EAAE,yBAAyB,CAAC;IAClD,oBAAoB,EAAE,8BAA8B,EAAE,GAAG,kCAAkC,EAAE,CAAC;IAC9F,wBAAwB,EAAE,MAAM,CAAC;IACjC,iFAAiF;IACjF,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,QAAQ,CAAC;IACnB,aAAa,CAAC,EAAE,OAAO,EAAE,CAAC;IAC1B,uBAAuB,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAC9C,gBAAgB,CAAC,EAAE,iBAAiB,EAAE,CAAC;IACvC,0BAA0B,EAAE,CAAC,OAAO,EAAE,iBAAiB,EAAE,KAAK,IAAI,CAAC;IAEnE;;;OAGG;IACH,4BAA4B,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,EAAE,CAAC,CAAC;IACnE;;;OAGG;IACH,+BAA+B,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,EAAE,CAAC,KAAK,IAAI,CAAC;IACzF,gBAAgB,CAAC,EAAE,qBAAqB,EAAE,GAAG,SAAS,CAAC;IACvD,gCAAgC,CAAC,EAAE,wBAAwB,EAAE,GAAG,SAAS,CAAC;IAC1E,qCAAqC,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,wBAAwB,EAAE,CAAC,CAAC;IAEnF,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,eAAe,EAAE,CAAC,YAAY,EAAE,OAAO,KAAK,IAAI,CAAC;IACjD,uBAAuB,EAAE,iBAAiB,EAAE,CAAC;IAC7C,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,wBAAwB,EAAE,OAAO,CAAC;IAClC,kBAAkB,CAAC,EAAE,4CAA4C,CAAC,UAAU,CAAC,CAAC;CACjF;AAED,wBAAgB,qBAAqB,CAAC,EAClC,qBAAqB,EACrB,oBAAoB,EACpB,OAAO,EACP,MAAM,EACN,KAAK,EACL,uBAAuB,EACvB,gBAAgB,EAChB,4BAA4B,EAC5B,wBAAwB,EACxB,0BAA0B,EAC1B,+BAA+B,EAC/B,gCAAgC,EAChC,YAAY,EACZ,eAAe,EACf,uBAAuB,EACvB,yBAAyB,EACzB,wBAAwB,EACxB,kBAAkB,EAClB,gBAAgB,EAChB,qCAAqC,EACxC,EAAE,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA22B7B"}
|
|
@@ -16,7 +16,7 @@ import { isEmail } from "../../utils/validate.js";
|
|
|
16
16
|
import { useScheduleValidation } from "./useScheduleValidation.js";
|
|
17
17
|
export function useEditScheduledEmail({ scheduledExportToEdit, notificationChannels, insight, widget, users, editedAutomationFilters, dashboardFilters, editedAutomationFiltersByTab, maxAutomationsRecipients, setEditedAutomationFilters, setEditedAutomationFiltersByTab, availableFiltersAsVisibleFilters, storeFilters, setStoreFilters, filtersForNewAutomation, externalRecipientOverride, enableNewScheduledExport, defaultPdfPageSize, filtersDataByTab, availableFiltersAsVisibleFiltersByTab, }) {
|
|
18
18
|
const intl = useIntl();
|
|
19
|
-
const { settings, timezone, currentUser, features: {
|
|
19
|
+
const { settings, timezone, currentUser, features: { enableAutomationEvaluationMode }, } = useAutomationsContext();
|
|
20
20
|
const { dashboardId, dashboardTitle, hiddenFilters: dashboardHiddenFilters, commonDateFilterId, widgetLocalIdToTabIdMap: widgetTabMap, exportParametersByTab: effectiveExportParametersByTab, } = useScheduledEmailDialogContext();
|
|
21
21
|
const [isCronValid, setIsCronValid] = useState(true);
|
|
22
22
|
const [isTitleValid, setIsTitleValid] = useState(true);
|
|
@@ -541,7 +541,7 @@ export function useEditScheduledEmail({ scheduledExportToEdit, notificationChann
|
|
|
541
541
|
};
|
|
542
542
|
const startDate = toNormalizedStartDate(editedAutomation.schedule?.firstRun, editedAutomation.schedule?.timezone);
|
|
543
543
|
const selectedNotificationChannel = notificationChannels.find((channel) => channel.id === editedAutomation.notificationChannel);
|
|
544
|
-
const allowExternalRecipients = selectedNotificationChannel?.allowedRecipients === "external"
|
|
544
|
+
const allowExternalRecipients = selectedNotificationChannel?.allowedRecipients === "external";
|
|
545
545
|
const allowOnlyLoggedUserRecipients = selectedNotificationChannel?.allowedRecipients === "creator";
|
|
546
546
|
const { isValid: isParentValid } = useScheduleValidation(originalAutomation);
|
|
547
547
|
const validationErrorMessage = isParentValid
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
// (C) 2024-2026 GoodData Corporation
|
|
2
2
|
import { isExportDefinitionDashboardRequestPayload, isExportDefinitionVisualizationObjectRequestPayload, } from "@gooddata/sdk-model";
|
|
3
|
-
import {
|
|
3
|
+
import { useAutomationsContext } from "../../../contexts/AutomationsContext.js";
|
|
4
4
|
export const useScheduleValidation = (schedule) => {
|
|
5
|
-
const { widgetExistsByRef } =
|
|
5
|
+
const { widgetExistsByRef } = useAutomationsContext();
|
|
6
6
|
const isDashboardSchedule = schedule.exportDefinitions?.some((exportDefinition) => isExportDefinitionDashboardRequestPayload(exportDefinition.requestPayload));
|
|
7
7
|
const widgetLocalId = schedule.exportDefinitions?.find((exportDefinition) => isExportDefinitionVisualizationObjectRequestPayload(exportDefinition.requestPayload))?.requestPayload.content?.widget;
|
|
8
8
|
const widgetRef = widgetLocalId ? { identifier: widgetLocalId } : undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DefaultScheduledEmailManagementDialog.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/automations/scheduledEmail/DefaultScheduledEmailManagementDialog/DefaultScheduledEmailManagementDialog.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"DefaultScheduledEmailManagementDialog.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/automations/scheduledEmail/DefaultScheduledEmailManagementDialog/DefaultScheduledEmailManagementDialog.tsx"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,oCAAoC,EAAE,MAAM,aAAa,CAAC;AAMxE;;GAEG;AACH,wBAAgB,8BAA8B,CAAC,EAC3C,KAAK,EACL,MAAM,EACN,eAAe,EAAE,QAAQ,EACzB,OAAO,EACP,aAAa,EACb,qBAAqB,EACrB,WAAW,EACX,oBAAoB,EACvB,EAAE,oCAAoC,2CAwDtC"}
|
|
@@ -1,10 +1,7 @@
|
|
|
1
1
|
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
// (C) 2022-2026 GoodData Corporation
|
|
3
3
|
import { useCallback, useState } from "react";
|
|
4
|
-
import {
|
|
5
|
-
import { useDashboardSelector } from "../../../../model/react/DashboardStoreProvider.js";
|
|
6
|
-
import { selectEnableAutomationManagement, selectExternalRecipient, selectIsEmbedded, selectSettings, } from "../../../../model/store/config/configSelectors.js";
|
|
7
|
-
import { selectDashboardId } from "../../../../model/store/meta/metaSelectors.js";
|
|
4
|
+
import { useAutomationsContext } from "../../contexts/AutomationsContext.js";
|
|
8
5
|
import { DeleteScheduleConfirmDialog } from "./components/DeleteScheduleConfirmDialog.js";
|
|
9
6
|
import { DefaultScheduledEmailManagementDialogContentBasic } from "./DefaultScheduledEmailManagementDialogContentBasic.js";
|
|
10
7
|
import { DefaultScheduledEmailManagementDialogContentEnhanced } from "./DefaultScheduledEmailManagementDialogContentEnhanced.js";
|
|
@@ -13,40 +10,13 @@ import { DefaultScheduledEmailManagementDialogContentEnhanced } from "./DefaultS
|
|
|
13
10
|
*/
|
|
14
11
|
export function ScheduledEmailManagementDialog({ onAdd, onEdit, onDeleteSuccess: onDelete, onClose, onDeleteError, isLoadingScheduleData, automations, notificationChannels, }) {
|
|
15
12
|
const [scheduledEmailToDelete, setScheduledEmailToDelete] = useState(null);
|
|
16
|
-
const
|
|
17
|
-
const
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
const externalRecipientOverride = useDashboardSelector(selectExternalRecipient);
|
|
21
|
-
const settings = useDashboardSelector(selectSettings);
|
|
22
|
-
const useHostRoute = Boolean(settings.enableShellApplication) && Boolean(settings.enableShellApplication_dashboards);
|
|
13
|
+
const { features: { enableAutomationManagement }, } = useAutomationsContext();
|
|
14
|
+
const handleScheduleEdit = useCallback((scheduledEmail) => {
|
|
15
|
+
onEdit?.(scheduledEmail);
|
|
16
|
+
}, [onEdit]);
|
|
23
17
|
const handleScheduleDelete = useCallback((scheduledEmail) => {
|
|
24
18
|
setScheduledEmailToDelete(scheduledEmail);
|
|
25
19
|
}, []);
|
|
26
|
-
const handleScheduleEdit = useCallback((scheduledEmail) => {
|
|
27
|
-
if (enableAutomationManagement && scheduledEmail.dashboard?.id !== dashboardId) {
|
|
28
|
-
navigate(buildAutomationUrl({
|
|
29
|
-
workspaceId: workspace,
|
|
30
|
-
dashboardId: scheduledEmail.dashboard?.id,
|
|
31
|
-
automationId: scheduledEmail.id,
|
|
32
|
-
isEmbedded,
|
|
33
|
-
useHostRoute,
|
|
34
|
-
queryParams: externalRecipientOverride
|
|
35
|
-
? { recipient: externalRecipientOverride }
|
|
36
|
-
: undefined,
|
|
37
|
-
}));
|
|
38
|
-
return;
|
|
39
|
-
}
|
|
40
|
-
onEdit?.(scheduledEmail);
|
|
41
|
-
}, [
|
|
42
|
-
onEdit,
|
|
43
|
-
enableAutomationManagement,
|
|
44
|
-
dashboardId,
|
|
45
|
-
workspace,
|
|
46
|
-
isEmbedded,
|
|
47
|
-
useHostRoute,
|
|
48
|
-
externalRecipientOverride,
|
|
49
|
-
]);
|
|
50
20
|
const handleScheduleDeleteSuccess = useCallback(() => {
|
|
51
21
|
onDelete?.();
|
|
52
22
|
setScheduledEmailToDelete(null);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DefaultScheduledEmailManagementDialogContentBasic.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/automations/scheduledEmail/DefaultScheduledEmailManagementDialog/DefaultScheduledEmailManagementDialogContentBasic.tsx"],"names":[],"mappings":"AAMA,OAAO,EACH,KAAK,yBAAyB,EAC9B,KAAK,8BAA8B,EACnC,KAAK,kCAAkC,EAC1C,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"DefaultScheduledEmailManagementDialogContentBasic.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/automations/scheduledEmail/DefaultScheduledEmailManagementDialog/DefaultScheduledEmailManagementDialogContentBasic.tsx"],"names":[],"mappings":"AAMA,OAAO,EACH,KAAK,yBAAyB,EAC9B,KAAK,8BAA8B,EACnC,KAAK,kCAAkC,EAC1C,MAAM,qBAAqB,CAAC;AAuB7B,UAAU,uDAAuD;IAC7D,KAAK,CAAC,EAAE,MAAM,IAAI,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,QAAQ,EAAE,CAAC,cAAc,EAAE,yBAAyB,KAAK,IAAI,CAAC;IAC9D,MAAM,EAAE,CAAC,cAAc,EAAE,yBAAyB,KAAK,IAAI,CAAC;IAC5D,qBAAqB,EAAE,OAAO,CAAC;IAC/B,WAAW,EAAE,yBAAyB,EAAE,CAAC;IACzC,oBAAoB,EAAE,8BAA8B,EAAE,GAAG,kCAAkC,EAAE,CAAC;CACjG;AAED,wBAAgB,iDAAiD,CAAC,EAC9D,KAAK,EACL,OAAO,EACP,QAAQ,EACR,MAAM,EACN,qBAAqB,EACrB,WAAW,EACX,oBAAoB,EACvB,EAAE,uDAAuD,2CA+FzD"}
|
|
@@ -4,14 +4,9 @@ import { useMemo } from "react";
|
|
|
4
4
|
import { FormattedMessage, defineMessage, useIntl } from "react-intl";
|
|
5
5
|
import { AddButton, Button, Dialog, Hyperlink, OverlayController, OverlayControllerProvider, Typography, useId, } from "@gooddata/sdk-ui-kit";
|
|
6
6
|
import { messages } from "../../../../locales.js";
|
|
7
|
-
import { useDashboardSelector } from "../../../../model/react/DashboardStoreProvider.js";
|
|
8
|
-
import { DEFAULT_MAX_AUTOMATIONS } from "../../../../model/react/useDashboardAutomations/constants.js";
|
|
9
|
-
import { selectIsWhiteLabeled } from "../../../../model/store/config/configSelectors.js";
|
|
10
|
-
import { selectEntitlementMaxAutomations, selectEntitlementUnlimitedAutomations, } from "../../../../model/store/entitlements/entitlementsSelectors.js";
|
|
11
|
-
import { selectCanCreateAutomation } from "../../../../model/store/permissions/permissionsSelectors.js";
|
|
12
|
-
import { selectExecutionTimestamp } from "../../../../model/store/ui/uiSelectors.js";
|
|
13
|
-
import { selectCurrentUser } from "../../../../model/store/user/userSelectors.js";
|
|
14
7
|
import { DASHBOARD_DIALOG_OVERS_Z_INDEX } from "../../../constants/zIndex.js";
|
|
8
|
+
import { useAutomationsContext } from "../../contexts/AutomationsContext.js";
|
|
9
|
+
import { useScheduledEmailManagementDialogContext } from "../../contexts/ScheduledEmailManagementDialogContext.js";
|
|
15
10
|
import { useScheduleEmailDialogAccessibility } from "../hooks/useScheduleEmailDialogAccessibility.js";
|
|
16
11
|
import { isMobileView } from "../utils/responsive.js";
|
|
17
12
|
import { ScheduledEmails } from "./components/ScheduledEmailsList.js";
|
|
@@ -19,15 +14,10 @@ const overlayController = OverlayController.getInstance(DASHBOARD_DIALOG_OVERS_Z
|
|
|
19
14
|
export function DefaultScheduledEmailManagementDialogContentBasic({ onAdd, onClose, onDelete, onEdit, isLoadingScheduleData, automations, notificationChannels, }) {
|
|
20
15
|
const intl = useIntl();
|
|
21
16
|
const isMobile = isMobileView();
|
|
22
|
-
const currentUser =
|
|
23
|
-
const
|
|
24
|
-
const isWhiteLabeled = useDashboardSelector(selectIsWhiteLabeled);
|
|
25
|
-
const isExecutionTimestampMode = !!useDashboardSelector(selectExecutionTimestamp);
|
|
26
|
-
const maxAutomationsEntitlement = useDashboardSelector(selectEntitlementMaxAutomations);
|
|
27
|
-
const unlimitedAutomationsEntitlement = useDashboardSelector(selectEntitlementUnlimitedAutomations);
|
|
17
|
+
const { currentUser, isWhiteLabeled, isExecutionTimestampMode, features: { canCreateAutomation }, } = useAutomationsContext();
|
|
18
|
+
const { maxAutomations, unlimitedAutomations } = useScheduledEmailManagementDialogContext();
|
|
28
19
|
const { returnFocusTo } = useScheduleEmailDialogAccessibility();
|
|
29
|
-
const
|
|
30
|
-
const maxAutomationsReached = automations.length >= maxAutomations && !unlimitedAutomationsEntitlement;
|
|
20
|
+
const maxAutomationsReached = automations.length >= maxAutomations && !unlimitedAutomations;
|
|
31
21
|
const isAddButtonDisabled = useMemo(() => isLoadingScheduleData || maxAutomationsReached || isExecutionTimestampMode, [isLoadingScheduleData, maxAutomationsReached, isExecutionTimestampMode]);
|
|
32
22
|
const helpTextId = isMobile
|
|
33
23
|
? defineMessage({ id: "dialogs.schedule.email.footer.title.short" }).id
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DefaultScheduledEmailManagementDialogContentEnhanced.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/automations/scheduledEmail/DefaultScheduledEmailManagementDialog/DefaultScheduledEmailManagementDialogContentEnhanced.tsx"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"DefaultScheduledEmailManagementDialogContentEnhanced.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/automations/scheduledEmail/DefaultScheduledEmailManagementDialog/DefaultScheduledEmailManagementDialogContentEnhanced.tsx"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AA2BrE,UAAU,0DAA0D;IAChE,KAAK,CAAC,EAAE,MAAM,IAAI,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,MAAM,EAAE,CAAC,cAAc,EAAE,yBAAyB,KAAK,IAAI,CAAC;IAC5D,qBAAqB,EAAE,OAAO,CAAC;IAC/B,WAAW,EAAE,yBAAyB,EAAE,CAAC;CAC5C;AAED,wBAAgB,oDAAoD,CAAC,EACjE,KAAK,EACL,OAAO,EACP,MAAM,EACN,qBAAqB,EACrB,WAAW,EACd,EAAE,0DAA0D,2CA6J5D"}
|
|
@@ -7,15 +7,10 @@ import { buildDashboardUrl, useBackend, useWorkspace } from "@gooddata/sdk-ui";
|
|
|
7
7
|
import { Automations } from "@gooddata/sdk-ui-ext";
|
|
8
8
|
import { Button, ContentDivider, Dialog, Hyperlink, OverlayController, OverlayControllerProvider, Typography, UiTooltip, useId, } from "@gooddata/sdk-ui-kit";
|
|
9
9
|
import { messages } from "../../../../locales.js";
|
|
10
|
-
import { useDashboardSelector } from "../../../../model/react/DashboardStoreProvider.js";
|
|
11
|
-
import { DEFAULT_MAX_AUTOMATIONS } from "../../../../model/react/useDashboardAutomations/constants.js";
|
|
12
|
-
import { selectEnableAccessibilityMode, selectExternalRecipient, selectIsEmbedded, selectIsWhiteLabeled, selectLocale, selectSettings, selectTimezone, } from "../../../../model/store/config/configSelectors.js";
|
|
13
|
-
import { selectEntitlementMaxAutomations, selectEntitlementUnlimitedAutomations, } from "../../../../model/store/entitlements/entitlementsSelectors.js";
|
|
14
|
-
import { selectDashboardId, selectDashboardTitle } from "../../../../model/store/meta/metaSelectors.js";
|
|
15
|
-
import { selectCanCreateAutomation } from "../../../../model/store/permissions/permissionsSelectors.js";
|
|
16
|
-
import { selectAutomationsInvalidationId, selectExecutionTimestamp, selectIsScheduleEmailDialogOpen, } from "../../../../model/store/ui/uiSelectors.js";
|
|
17
10
|
import { AUTOMATIONS_COLUMN_CONFIG, AUTOMATIONS_MAX_HEIGHT } from "../../../constants/automations.js";
|
|
18
11
|
import { DASHBOARD_DIALOG_OVERS_Z_INDEX } from "../../../constants/zIndex.js";
|
|
12
|
+
import { useAutomationsContext } from "../../contexts/AutomationsContext.js";
|
|
13
|
+
import { useScheduledEmailManagementDialogContext } from "../../contexts/ScheduledEmailManagementDialogContext.js";
|
|
19
14
|
import { SCHEDULED_EMAIL_DIALOG_ID } from "../DefaultScheduledEmailDialog/constants.js";
|
|
20
15
|
import { useScheduleEmailDialogAccessibility } from "../hooks/useScheduleEmailDialogAccessibility.js";
|
|
21
16
|
import { isMobileView } from "../utils/responsive.js";
|
|
@@ -25,25 +20,12 @@ export function DefaultScheduledEmailManagementDialogContentEnhanced({ onAdd, on
|
|
|
25
20
|
const isMobile = isMobileView();
|
|
26
21
|
const workspace = useWorkspace();
|
|
27
22
|
const backend = useBackend();
|
|
28
|
-
const timezone =
|
|
29
|
-
const
|
|
30
|
-
const
|
|
31
|
-
const
|
|
32
|
-
const externalRecipientOverride = useDashboardSelector(selectExternalRecipient);
|
|
33
|
-
const enableBulkActions = !useDashboardSelector(selectEnableAccessibilityMode);
|
|
34
|
-
const isEditDialogOpen = useDashboardSelector(selectIsScheduleEmailDialogOpen);
|
|
35
|
-
const canCreateAutomation = useDashboardSelector(selectCanCreateAutomation);
|
|
36
|
-
const isWhiteLabeled = useDashboardSelector(selectIsWhiteLabeled);
|
|
37
|
-
const isExecutionTimestampMode = !!useDashboardSelector(selectExecutionTimestamp);
|
|
38
|
-
const maxAutomationsEntitlement = useDashboardSelector(selectEntitlementMaxAutomations);
|
|
39
|
-
const unlimitedAutomationsEntitlement = useDashboardSelector(selectEntitlementUnlimitedAutomations);
|
|
40
|
-
const automationsInvalidationId = useDashboardSelector(selectAutomationsInvalidationId);
|
|
41
|
-
const isEmbedded = useDashboardSelector(selectIsEmbedded);
|
|
42
|
-
const settings = useDashboardSelector(selectSettings);
|
|
43
|
-
const useHostRoute = Boolean(settings.enableShellApplication) && Boolean(settings.enableShellApplication_dashboards);
|
|
23
|
+
const { timezone, locale, settings, isWhiteLabeled, isExecutionTimestampMode, externalRecipient: externalRecipientOverride, features: { canCreateAutomation }, } = useAutomationsContext();
|
|
24
|
+
const { dashboardId, dashboardTitle, enableAccessibilityMode, isScheduleEmailDialogOpen: isEditDialogOpen, automationsInvalidationId, isEmbedded, maxAutomations, unlimitedAutomations, } = useScheduledEmailManagementDialogContext();
|
|
25
|
+
const enableBulkActions = !enableAccessibilityMode;
|
|
26
|
+
const useHostRoute = Boolean(settings?.enableShellApplication) && Boolean(settings?.enableShellApplication_dashboards);
|
|
44
27
|
const { returnFocusTo } = useScheduleEmailDialogAccessibility();
|
|
45
|
-
const
|
|
46
|
-
const maxAutomationsReached = automations.length >= maxAutomations && !unlimitedAutomationsEntitlement;
|
|
28
|
+
const maxAutomationsReached = automations.length >= maxAutomations && !unlimitedAutomations;
|
|
47
29
|
const isAddButtonDisabled = useMemo(() => isLoadingScheduleData || maxAutomationsReached || isExecutionTimestampMode, [isLoadingScheduleData, maxAutomationsReached, isExecutionTimestampMode]);
|
|
48
30
|
const availableFilters = externalRecipientOverride
|
|
49
31
|
? ["dashboard", "status"]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DeleteScheduleConfirmDialog.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/automations/scheduledEmail/DefaultScheduledEmailManagementDialog/components/DeleteScheduleConfirmDialog.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAkB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAIvD,OAAO,EACH,KAAK,yBAAyB,EAC9B,KAAK,mCAAmC,EAC3C,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,KAAK,gBAAgB,EAAsD,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"DeleteScheduleConfirmDialog.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/automations/scheduledEmail/DefaultScheduledEmailManagementDialog/components/DeleteScheduleConfirmDialog.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAkB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAIvD,OAAO,EACH,KAAK,yBAAyB,EAC9B,KAAK,mCAAmC,EAC3C,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,KAAK,gBAAgB,EAAsD,MAAM,kBAAkB,CAAC;AAK7G,UAAU,iCAAiC;IACvC,cAAc,EAAE,yBAAyB,GAAG,mCAAmC,CAAC;IAChF,aAAa,CAAC,EAAE,SAAS,CAAC,WAAW,CAAC,GAAG,MAAM,CAAC;IAChD,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,CAAC;CAC/C;AAED,wBAAgB,2BAA2B,CAAC,EACxC,cAAc,EACd,aAAa,EACb,QAAQ,EACR,SAAS,EACT,OAAO,EACV,EAAE,iCAAiC,2CA0DnC"}
|
|
@@ -2,15 +2,13 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
2
2
|
import { FormattedMessage, useIntl } from "react-intl";
|
|
3
3
|
import { convertError, useBackendStrict, useWorkspaceStrict } from "@gooddata/sdk-ui";
|
|
4
4
|
import { ConfirmDialog } from "@gooddata/sdk-ui-kit";
|
|
5
|
-
import {
|
|
6
|
-
import { selectCanManageWorkspace } from "../../../../../model/store/permissions/permissionsSelectors.js";
|
|
7
|
-
import { selectCurrentUser } from "../../../../../model/store/user/userSelectors.js";
|
|
5
|
+
import { useAutomationsContext } from "../../../contexts/AutomationsContext.js";
|
|
8
6
|
export function DeleteScheduleConfirmDialog({ scheduledEmail, returnFocusTo, onCancel, onSuccess, onError, }) {
|
|
9
7
|
const effectiveBackend = useBackendStrict();
|
|
10
8
|
const effectiveWorkspace = useWorkspaceStrict();
|
|
11
9
|
const intl = useIntl();
|
|
12
|
-
const currentUser =
|
|
13
|
-
const canManageAutomations =
|
|
10
|
+
const { currentUser, features } = useAutomationsContext();
|
|
11
|
+
const canManageAutomations = features.canManageWorkspace;
|
|
14
12
|
const handleDeleteScheduledMail = async () => {
|
|
15
13
|
const alertCreatorId = scheduledEmail.createdBy?.login;
|
|
16
14
|
const currentUserId = currentUser?.login;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScheduledEmail.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/automations/scheduledEmail/DefaultScheduledEmailManagementDialog/components/ScheduledEmail.tsx"],"names":[],"mappings":"AAOA,OAAO,EACH,KAAK,yBAAyB,EAC9B,KAAK,8BAA8B,EACnC,KAAK,kCAAkC,EAC1C,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAMH,kBAAkB,EAErB,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"ScheduledEmail.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/automations/scheduledEmail/DefaultScheduledEmailManagementDialog/components/ScheduledEmail.tsx"],"names":[],"mappings":"AAOA,OAAO,EACH,KAAK,yBAAyB,EAC9B,KAAK,8BAA8B,EACnC,KAAK,kCAAkC,EAC1C,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAMH,kBAAkB,EAErB,MAAM,sBAAsB,CAAC;AAQ9B,KAAK,OAAO,GAAG,eAAe,GAAG,QAAQ,GAAG,OAAO,kBAAkB,CAAC;AAEtE,UAAU,oBAAoB;IAC1B,QAAQ,EAAE,CAAC,cAAc,EAAE,yBAAyB,KAAK,IAAI,CAAC;IAC9D,MAAM,EAAE,CAAC,cAAc,EAAE,yBAAyB,KAAK,IAAI,CAAC;IAC5D,cAAc,EAAE,yBAAyB,CAAC;IAC1C,oBAAoB,EAAE,8BAA8B,EAAE,GAAG,kCAAkC,EAAE,CAAC;IAC9F,aAAa,CAAC,EAAE,OAAO,CAAC;CAC3B;AAYD,wBAAgB,cAAc,CAAC,EAC3B,cAAc,EACd,QAAQ,EACR,MAAM,EACN,oBAAoB,EACpB,aAAa,EAChB,EAAE,oBAAoB,2CAyFtB"}
|
|
@@ -5,10 +5,8 @@ import cx from "classnames";
|
|
|
5
5
|
import { FormattedMessage, useIntl } from "react-intl";
|
|
6
6
|
import { Bubble, BubbleHoverTrigger, IconInsight, IconSimplifiedDashboard, IconWarning, SELECT_ITEM_ACTION, ShortenedText, } from "@gooddata/sdk-ui-kit";
|
|
7
7
|
import { useTheme } from "@gooddata/sdk-ui-theme-provider";
|
|
8
|
-
import { useDashboardSelector } from "../../../../../model/react/DashboardStoreProvider.js";
|
|
9
|
-
import { selectCanManageWorkspace } from "../../../../../model/store/permissions/permissionsSelectors.js";
|
|
10
|
-
import { selectCurrentUser } from "../../../../../model/store/user/userSelectors.js";
|
|
11
8
|
import { gdColorNegative, gdColorStateBlank } from "../../../../constants/colors.js";
|
|
9
|
+
import { useAutomationsContext } from "../../../contexts/AutomationsContext.js";
|
|
12
10
|
import { isVisualisationAutomation } from "../../../shared/utils/automationUtils.js";
|
|
13
11
|
import { useScheduleValidation } from "../../DefaultScheduledEmailDialog/hooks/useScheduleValidation.js";
|
|
14
12
|
const ICON_TOOLTIP_ALIGN_POINTS = [
|
|
@@ -21,9 +19,8 @@ const TEXT_TOOLTIP_ALIGN_POINTS = [
|
|
|
21
19
|
];
|
|
22
20
|
export function ScheduledEmail({ scheduledEmail, onDelete, onEdit, notificationChannels, focusedAction, }) {
|
|
23
21
|
const theme = useTheme();
|
|
24
|
-
const currentUser =
|
|
25
|
-
const
|
|
26
|
-
const canEdit = canManageWorkspace || (currentUser && currentUser.login === scheduledEmail.createdBy?.login);
|
|
22
|
+
const { currentUser, features } = useAutomationsContext();
|
|
23
|
+
const canEdit = features.canManageWorkspace || (currentUser && currentUser.login === scheduledEmail.createdBy?.login);
|
|
27
24
|
const { isValid } = useScheduleValidation(scheduledEmail);
|
|
28
25
|
const intl = useIntl();
|
|
29
26
|
const cronDescription = scheduledEmail.schedule?.cronDescription;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useScheduleEmailDialogAccessibility.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/automations/scheduledEmail/hooks/useScheduleEmailDialogAccessibility.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useScheduleEmailDialogAccessibility.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/automations/scheduledEmail/hooks/useScheduleEmailDialogAccessibility.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,mCAAmC;;CAW/C,CAAC"}
|
package/esm/presentation/automations/scheduledEmail/hooks/useScheduleEmailDialogAccessibility.js
CHANGED
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
// (C) 2025-2026 GoodData Corporation
|
|
2
2
|
import { useMemo } from "react";
|
|
3
3
|
import { DEFAULT_MENU_BUTTON_ID } from "../../../../_staging/accessibility/elementId.js";
|
|
4
|
-
import {
|
|
5
|
-
import { selectScheduleEmailDialogReturnFocusTo } from "../../../../model/store/ui/uiSelectors.js";
|
|
4
|
+
import { useAutomationsContext } from "../../contexts/AutomationsContext.js";
|
|
6
5
|
export const useScheduleEmailDialogAccessibility = () => {
|
|
7
|
-
const
|
|
8
|
-
const returnFocusTo = useMemo(() =>
|
|
6
|
+
const { scheduleEmailDialogReturnFocusTo } = useAutomationsContext();
|
|
7
|
+
const returnFocusTo = useMemo(() => scheduleEmailDialogReturnFocusTo || DEFAULT_MENU_BUTTON_ID, [scheduleEmailDialogReturnFocusTo]);
|
|
9
8
|
return {
|
|
10
9
|
returnFocusTo,
|
|
11
10
|
};
|
|
@@ -67,7 +67,6 @@ function createAutomationsContextValue(overrides) {
|
|
|
67
67
|
enableAutomationManagement: false,
|
|
68
68
|
canUseAiAssistant: false,
|
|
69
69
|
enableComparisonInAlerting: false,
|
|
70
|
-
enableExternalRecipients: false,
|
|
71
70
|
enableAlertAttributes: false,
|
|
72
71
|
canManageWorkspace: false,
|
|
73
72
|
enableCustomizableCsvDelimiter: false,
|
|
@@ -75,6 +74,8 @@ function createAutomationsContextValue(overrides) {
|
|
|
75
74
|
},
|
|
76
75
|
getCatalogAttributeByRef: () => undefined,
|
|
77
76
|
getAttributeFilterDisplayForm: () => undefined,
|
|
77
|
+
widgetExistsByRef: () => false,
|
|
78
|
+
scheduleEmailDialogReturnFocusTo: undefined,
|
|
78
79
|
};
|
|
79
80
|
}
|
|
80
81
|
describe("AutomationDateFilter", () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CreationPanel.d.ts","sourceRoot":"","sources":["../../../../src/presentation/dashboard/DashboardSidebar/CreationPanel.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"CreationPanel.d.ts","sourceRoot":"","sources":["../../../../src/presentation/dashboard/DashboardSidebar/CreationPanel.tsx"],"names":[],"mappings":"AAcA,OAAO,EACH,KAAK,2BAA2B,EAChC,KAAK,iCAAiC,EACtC,KAAK,yBAAyB,EAC9B,KAAK,0BAA0B,EAC/B,KAAK,uCAAuC,EAC/C,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EACH,KAAK,qCAAqC,EAC1C,KAAK,qCAAqC,EAC7C,MAAM,4BAA4B,CAAC;AAIpC,UAAU,mBAAmB;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oCAAoC,CAAC,EAAE,qCAAqC,CAAC;IAC7E,oCAAoC,CAAC,EAAE,qCAAqC,CAAC;IAC7E,2BAA2B,CAAC,EAAE,2BAA2B,CAAC;IAC1D,yBAAyB,CAAC,EAAE,yBAAyB,CAAC;IACtD,0BAA0B,CAAC,EAAE,0BAA0B,CAAC;IACxD,uCAAuC,CAAC,EAAE,uCAAuC,CAAC;IAClF,iCAAiC,CAAC,EAAE,iCAAiC,CAAC;CACzE;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,mBAAmB,2CAkEvD"}
|
|
@@ -7,14 +7,13 @@ import { FormattedMessage } from "react-intl";
|
|
|
7
7
|
import { Typography } from "@gooddata/sdk-ui-kit";
|
|
8
8
|
import { useDashboardSelector } from "../../../model/react/DashboardStoreProvider.js";
|
|
9
9
|
import { selectSupportsRichTextWidgets } from "../../../model/store/backendCapabilities/backendCapabilitiesSelectors.js";
|
|
10
|
-
import { selectEnableKDRichText,
|
|
10
|
+
import { selectEnableKDRichText, selectSettings } from "../../../model/store/config/configSelectors.js";
|
|
11
11
|
import { selectIsNewDashboard } from "../../../model/store/meta/metaSelectors.js";
|
|
12
12
|
import { DraggableInsightList } from "./DraggableInsightList/DraggableInsightList.js";
|
|
13
13
|
export function CreationPanel(props) {
|
|
14
14
|
const { className, WrapCreatePanelItemWithDragComponent, WrapInsightListItemWithDragComponent } = props;
|
|
15
15
|
const supportsRichText = useDashboardSelector(selectSupportsRichTextWidgets);
|
|
16
16
|
const enableRichText = useDashboardSelector(selectEnableKDRichText);
|
|
17
|
-
const enableVisualizationSwitcher = useDashboardSelector(selectEnableVisualizationSwitcher);
|
|
18
17
|
const isNewDashboard = useDashboardSelector(selectIsNewDashboard);
|
|
19
18
|
const settings = useDashboardSelector(selectSettings);
|
|
20
19
|
const AttributeFilterComponentSet = props.AttributeFilterComponentSet;
|
|
@@ -27,7 +26,7 @@ export function CreationPanel(props) {
|
|
|
27
26
|
InsightWidgetComponentSet.creating,
|
|
28
27
|
AttributeFilterComponentSet.creating,
|
|
29
28
|
DashboardLayoutWidgetComponentSet.creating,
|
|
30
|
-
|
|
29
|
+
VisualizationSwitcherWidgetComponentSet.creating,
|
|
31
30
|
supportsRichText && enableRichText && RichTextWidgetComponentSet.creating,
|
|
32
31
|
]);
|
|
33
32
|
return sortBy(items, (item) => item.priority ?? 0).map(({ CreatePanelListItemComponent, type }) => {
|
|
@@ -41,7 +40,6 @@ export function CreationPanel(props) {
|
|
|
41
40
|
DashboardLayoutWidgetComponentSet,
|
|
42
41
|
supportsRichText,
|
|
43
42
|
enableRichText,
|
|
44
|
-
enableVisualizationSwitcher,
|
|
45
43
|
WrapCreatePanelItemWithDragComponent,
|
|
46
44
|
]);
|
|
47
45
|
return (_jsx("div", { className: cx("configuration-panel creation-panel", className), children: _jsxs("div", { className: "configuration-panel-content", children: [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FloatingToolbar.d.ts","sourceRoot":"","sources":["../../../../src/presentation/dashboard/DashboardSidebar/FloatingToolbar.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"FloatingToolbar.d.ts","sourceRoot":"","sources":["../../../../src/presentation/dashboard/DashboardSidebar/FloatingToolbar.tsx"],"names":[],"mappings":"AAiLA;;GAEG;AACH,wBAAgB,eAAe,4CAkN9B"}
|
|
@@ -14,7 +14,7 @@ import { useDashboardDispatch, useDashboardSelector } from "../../../model/react
|
|
|
14
14
|
import { useWidgetSelection } from "../../../model/react/useWidgetSelection.js";
|
|
15
15
|
import { dispatchAndWaitFor } from "../../../model/store/_infra/dispatchAndWaitFor.js";
|
|
16
16
|
import { selectBackendCapabilities, selectSupportsRichTextWidgets, } from "../../../model/store/backendCapabilities/backendCapabilitiesSelectors.js";
|
|
17
|
-
import { selectEnableKDRichText,
|
|
17
|
+
import { selectEnableKDRichText, selectSettings } from "../../../model/store/config/configSelectors.js";
|
|
18
18
|
import { selectIsInEditMode } from "../../../model/store/renderMode/renderModeSelectors.js";
|
|
19
19
|
import { selectFilterContextFilters } from "../../../model/store/tabs/filterContext/filterContextSelectors.js";
|
|
20
20
|
import { selectLayout } from "../../../model/store/tabs/layout/layoutSelectors.js";
|
|
@@ -108,7 +108,6 @@ export function FloatingToolbar() {
|
|
|
108
108
|
const primaryColor = theme?.palette?.primary?.base ?? GD_COLOR_HIGHLIGHT;
|
|
109
109
|
const supportsRichText = useDashboardSelector(selectSupportsRichTextWidgets);
|
|
110
110
|
const enableRichText = useDashboardSelector(selectEnableKDRichText);
|
|
111
|
-
const enableVisualizationSwitcher = useDashboardSelector(selectEnableVisualizationSwitcher);
|
|
112
111
|
const layout = useDashboardSelector(selectLayout);
|
|
113
112
|
const settings = useDashboardSelector(selectSettings);
|
|
114
113
|
const filterContextFilters = useDashboardSelector(selectFilterContextFilters);
|
|
@@ -231,7 +230,7 @@ export function FloatingToolbar() {
|
|
|
231
230
|
}
|
|
232
231
|
}, children: [
|
|
233
232
|
_jsx(IconInsightPicker, { color: isInsightPickerOpen ? primaryColor : iconColor, width: ICON_SIZE, height: ICON_SIZE }), _jsx("span", { className: "gd-floating-toolbar__button-label", children: intl.formatMessage({ id: "addPanel.savedVisualizations" }) })
|
|
234
|
-
] }), _jsx(DraggableToolbarButton, { icon: _jsx(IconInsight, { color: iconColor, width: ICON_SIZE, height: ICON_SIZE }), label: intl.formatMessage({ id: "addPanel.newVisualization" }), dragItem: INSIGHT_PLACEHOLDER_DRAG_ITEM, testSelector: "s-floating-toolbar-new-visualization", onMouseDown: closeInsightPicker, onActivate: handleInsightPlaceholderActivate }), _jsx(DraggableToolbarButton, { icon: _jsx(IconColumnContainer, { color: iconColor, width: ICON_SIZE, height: ICON_SIZE }), label: intl.formatMessage({ id: "addPanel.dashboardLayout" }), dragItem: DASHBOARD_LAYOUT_DRAG_ITEM, testSelector: "s-floating-toolbar-dashboard-layout", onMouseDown: closeInsightPicker, onActivate: handleDashboardLayoutActivate }),
|
|
233
|
+
] }), _jsx(DraggableToolbarButton, { icon: _jsx(IconInsight, { color: iconColor, width: ICON_SIZE, height: ICON_SIZE }), label: intl.formatMessage({ id: "addPanel.newVisualization" }), dragItem: INSIGHT_PLACEHOLDER_DRAG_ITEM, testSelector: "s-floating-toolbar-new-visualization", onMouseDown: closeInsightPicker, onActivate: handleInsightPlaceholderActivate }), _jsx(DraggableToolbarButton, { icon: _jsx(IconColumnContainer, { color: iconColor, width: ICON_SIZE, height: ICON_SIZE }), label: intl.formatMessage({ id: "addPanel.dashboardLayout" }), dragItem: DASHBOARD_LAYOUT_DRAG_ITEM, testSelector: "s-floating-toolbar-dashboard-layout", onMouseDown: closeInsightPicker, onActivate: handleDashboardLayoutActivate }), _jsx(DraggableToolbarButton, { icon: _jsx(IconVisualizationSwitcher, { color: iconColor, width: ICON_SIZE, height: ICON_SIZE }), label: intl.formatMessage({ id: "addPanel.visualizationSwitcher" }), dragItem: VIS_SWITCHER_DRAG_ITEM, testSelector: "s-floating-toolbar-visualization-switcher", onMouseDown: closeInsightPicker, onActivate: handleVisSwitcherActivate }), supportsRichText && enableRichText ? (_jsx(DraggableToolbarButton, { icon: _jsx(IconRichText, { color: iconColor, width: ICON_SIZE, height: ICON_SIZE }), label: intl.formatMessage({ id: "addPanel.richTextWidget" }), dragItem: RICH_TEXT_DRAG_ITEM, testSelector: "s-floating-toolbar-rich-text", onMouseDown: closeInsightPicker, onActivate: handleRichTextActivate })) : null, _jsx(DraggableToolbarButton, { icon: _jsx(IconAttributeFilter, { color: iconColor, width: ICON_SIZE, height: ICON_SIZE }), label: intl.formatMessage({ id: "addPanel.dashboardFilter" }), dragItem: ATTRIBUTE_FILTER_DRAG_ITEM, testSelector: "s-floating-toolbar-attribute-filter", onMouseDown: closeInsightPicker, onActivate: handleFilterActivate })
|
|
235
234
|
] })
|
|
236
235
|
] }));
|
|
237
236
|
}
|
package/esm/presentation/dragAndDrop/draggableFilterDropZone/DraggableFilterDropZone.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DraggableFilterDropZone.d.ts","sourceRoot":"","sources":["../../../../src/presentation/dragAndDrop/draggableFilterDropZone/DraggableFilterDropZone.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"DraggableFilterDropZone.d.ts","sourceRoot":"","sources":["../../../../src/presentation/dragAndDrop/draggableFilterDropZone/DraggableFilterDropZone.tsx"],"names":[],"mappings":"AAiBA,MAAM,MAAM,4BAA4B,GAAG;IACvC,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;CACzC,CAAC;AAEF,wBAAgB,uBAAuB,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE,4BAA4B,kDA0E5F"}
|
|
@@ -6,14 +6,12 @@ import { useTheme } from "@gooddata/sdk-ui-theme-provider";
|
|
|
6
6
|
import { messages } from "../../../locales.js";
|
|
7
7
|
import { useDashboardSelector } from "../../../model/react/DashboardStoreProvider.js";
|
|
8
8
|
import { selectSupportsMultipleDateFilters } from "../../../model/store/backendCapabilities/backendCapabilitiesSelectors.js";
|
|
9
|
-
import { selectEnableMultipleDateFilters } from "../../../model/store/config/configSelectors.js";
|
|
10
9
|
import { selectIsInEditMode } from "../../../model/store/renderMode/renderModeSelectors.js";
|
|
11
10
|
import { getDropZoneDebugStyle } from "../debug.js";
|
|
12
11
|
import { useDashboardDrop } from "../useDashboardDrop.js";
|
|
13
12
|
export function DraggableFilterDropZone({ targetIndex, onDrop }) {
|
|
14
13
|
const theme = useTheme();
|
|
15
14
|
const isEditMode = useDashboardSelector(selectIsInEditMode);
|
|
16
|
-
const enableMultipleDateFilters = useDashboardSelector(selectEnableMultipleDateFilters);
|
|
17
15
|
const supportsMultipleDateFilters = useDashboardSelector(selectSupportsMultipleDateFilters);
|
|
18
16
|
const [{ canDrop, isOver, itemType }, dropRef] = useDashboardDrop(["attributeFilter-placeholder"], {
|
|
19
17
|
drop: () => onDrop(targetIndex),
|
|
@@ -26,7 +24,7 @@ export function DraggableFilterDropZone({ targetIndex, onDrop }) {
|
|
|
26
24
|
const isActive = canDrop || isOver;
|
|
27
25
|
const dropzoneClassNames = cx("attr-filter-dropzone-box", "s-last-filter-drop-position", "s-attr-filter-dropzone-box", { "attr-filter-dropzone-box-active": isActive }, { "attr-filter-dropzone-box-over": isOver });
|
|
28
26
|
const debugStyle = getDropZoneDebugStyle({ isOver });
|
|
29
|
-
const tooltip =
|
|
27
|
+
const tooltip = supportsMultipleDateFilters
|
|
30
28
|
? messages.filterDropzoneTooltipGeneric
|
|
31
29
|
: messages.filterDropzoneTooltip;
|
|
32
30
|
return (_jsx("div", { className: "attr-filter-dropzone-box-outer", style: debugStyle, ref: dropRef, children: isActive ? (_jsx("div", { className: dropzoneClassNames, children: _jsx("div", { className: "attr-filter-dropzone-box-inner", children: _jsx(FormattedMessage, { id: "filterBar.filter.drop" }) }) })) : (_jsxs(BubbleHoverTrigger, { children: [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AddAttributeFilterPlaceholder.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/filterBar/attributeFilter/addAttributeFilter/AddAttributeFilterPlaceholder.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"AddAttributeFilterPlaceholder.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/filterBar/attributeFilter/addAttributeFilter/AddAttributeFilterPlaceholder.tsx"],"names":[],"mappings":"AAKA;;GAEG;AACH,MAAM,WAAW,mCAAmC;IAChD,QAAQ,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;GAEG;AACH,wBAAgB,6BAA6B,CAAC,EAAE,QAAQ,EAAE,EAAE,mCAAmC,2CAe9F"}
|
|
@@ -2,15 +2,12 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
2
2
|
// (C) 2007-2026 GoodData Corporation
|
|
3
3
|
import cx from "classnames";
|
|
4
4
|
import { FormattedMessage } from "react-intl";
|
|
5
|
-
import { useDashboardSelector } from "../../../../model/react/DashboardStoreProvider.js";
|
|
6
|
-
import { selectEnableMultipleDateFilters } from "../../../../model/store/config/configSelectors.js";
|
|
7
5
|
/**
|
|
8
6
|
* @internal
|
|
9
7
|
*/
|
|
10
8
|
export function AddAttributeFilterPlaceholder({ disabled }) {
|
|
11
|
-
const enableMultipleDateFilters = useDashboardSelector(selectEnableMultipleDateFilters);
|
|
12
9
|
const className = cx("add-item-placeholder", "add-attribute-filter-placeholder", "s-add-attribute-filter", {
|
|
13
10
|
disabled,
|
|
14
11
|
});
|
|
15
|
-
return (_jsx("div", { className: className, children: _jsx(FormattedMessage, { id:
|
|
12
|
+
return (_jsx("div", { className: className, children: _jsx(FormattedMessage, { id: "addPanel.filter" }) }));
|
|
16
13
|
}
|
package/esm/presentation/filterBar/attributeFilter/addAttributeFilter/AttributesDropdown.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AttributesDropdown.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/filterBar/attributeFilter/addAttributeFilter/AttributesDropdown.tsx"],"names":[],"mappings":"AAQA,OAAO,EAGH,KAAK,aAAa,EAGrB,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"AttributesDropdown.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/filterBar/attributeFilter/addAttributeFilter/AttributesDropdown.tsx"],"names":[],"mappings":"AAQA,OAAO,EAGH,KAAK,aAAa,EAGrB,MAAM,qBAAqB,CAAC;AAgB7B,OAAO,EAAE,KAAK,yCAAyC,EAAE,MAAM,aAAa,CAAC;AA8D7E;;;;GAIG;AACH,MAAM,WAAW,0BAA0B;IACvC,IAAI,EAAE,WAAW,CAAC;IAClB,GAAG,EAAE,aAAa,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;CACjB;AAMD;;GAEG;AACH,MAAM,WAAW,wBAAyB,SAAQ,yCAAyC;IACvF,0FAA0F;IAC1F,UAAU,CAAC,EAAE,0BAA0B,EAAE,CAAC;IAC1C,iBAAiB,CAAC,EAAE,CAAC,GAAG,EAAE,aAAa,KAAK,IAAI,CAAC;CACpD;AA6BD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,EAC/B,EAAE,EACF,SAAS,EACT,aAAa,EACb,OAAO,EACP,MAAM,EACN,QAAQ,EACR,UAAU,EACV,YAAY,EACZ,QAAa,EACb,UAAiB,EACjB,uBAAkD,EAClD,sBAAsB,EACtB,YAAY,EACZ,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EACnB,aAAa,EACb,UAAe,EACf,iBAAiB,EACpB,EAAE,wBAAwB,2CA4U1B"}
|
|
@@ -8,7 +8,7 @@ import { isCatalogAttribute, isCatalogMeasure, } from "@gooddata/sdk-model";
|
|
|
8
8
|
import { Dropdown, DropdownList, SingleSelectListItem, UiIcon, isEscapeKey, useIdPrefixed, } from "@gooddata/sdk-ui-kit";
|
|
9
9
|
import { useDashboardSelector } from "../../../../model/react/DashboardStoreProvider.js";
|
|
10
10
|
import { selectSupportsMultipleDateFilters } from "../../../../model/store/backendCapabilities/backendCapabilitiesSelectors.js";
|
|
11
|
-
import { selectEnableMeasureValueFilterKD
|
|
11
|
+
import { selectEnableMeasureValueFilterKD } from "../../../../model/store/config/configSelectors.js";
|
|
12
12
|
import { selectInsightsMap } from "../../../../model/store/insights/insightsSelectors.js";
|
|
13
13
|
import { selectAllInsightWidgets } from "../../../../model/store/tabs/layout/layoutSelectors.js";
|
|
14
14
|
import { AddAttributeFilterButton } from "./AddAttributeFilterButton.js";
|
|
@@ -102,7 +102,6 @@ export function AttributesDropdown({ id, className, bodyClassName, onClose, onOp
|
|
|
102
102
|
}
|
|
103
103
|
};
|
|
104
104
|
}, []);
|
|
105
|
-
const enableMultipleDateFilters = useDashboardSelector(selectEnableMultipleDateFilters);
|
|
106
105
|
const supportsMultipleDateFilters = useDashboardSelector(selectSupportsMultipleDateFilters);
|
|
107
106
|
const enableMeasureValueFilterKD = useDashboardSelector(selectEnableMeasureValueFilterKD);
|
|
108
107
|
const insightsMap = useDashboardSelector(selectInsightsMap);
|
|
@@ -126,7 +125,6 @@ export function AttributesDropdown({ id, className, bodyClassName, onClose, onOp
|
|
|
126
125
|
? attributes.filter((a) => a.attribute.title.toLowerCase().includes(searchQuery.toLowerCase()))
|
|
127
126
|
: attributes;
|
|
128
127
|
}, [attributes, searchQuery]);
|
|
129
|
-
const offerDateFilters = enableMultipleDateFilters && supportsMultipleDateFilters;
|
|
130
128
|
const filteredDateDatasets = useMemo(() => {
|
|
131
129
|
return searchQuery
|
|
132
130
|
? dateDatasets.filter((ds) => ds.dataSet.title.toLowerCase().includes(searchQuery.toLowerCase()))
|
|
@@ -145,7 +143,7 @@ export function AttributesDropdown({ id, className, bodyClassName, onClose, onOp
|
|
|
145
143
|
: parameters;
|
|
146
144
|
}, [parameters, searchQuery]);
|
|
147
145
|
const hasAttributes = useMemo(() => attributes.length > 0, [attributes]);
|
|
148
|
-
const hasDateFilters = useMemo(() =>
|
|
146
|
+
const hasDateFilters = useMemo(() => supportsMultipleDateFilters && dateDatasets.length > 0, [dateDatasets, supportsMultipleDateFilters]);
|
|
149
147
|
const hasMeasures = useMemo(() => metricMeasures.length > 0, [metricMeasures]);
|
|
150
148
|
const hasParameters = useMemo(() => parameters.length > 0, [parameters]);
|
|
151
149
|
const defaultSelectedTabId = createDefaultSelectedTabId({
|
|
@@ -169,7 +167,7 @@ export function AttributesDropdown({ id, className, bodyClassName, onClose, onOp
|
|
|
169
167
|
if (enableMeasureValueFilterKD && metricMeasures.length) {
|
|
170
168
|
newTabs.push({ id: "metrics", iconOnly: true, icon: "gd-icon-metric" });
|
|
171
169
|
}
|
|
172
|
-
if (
|
|
170
|
+
if (supportsMultipleDateFilters && dateDatasets.length) {
|
|
173
171
|
newTabs.push({ id: "dateDatasets", iconOnly: true, icon: "gd-icon-date" });
|
|
174
172
|
}
|
|
175
173
|
if (parameters.length) {
|
|
@@ -180,7 +178,14 @@ export function AttributesDropdown({ id, className, bodyClassName, onClose, onOp
|
|
|
180
178
|
});
|
|
181
179
|
}
|
|
182
180
|
return newTabs;
|
|
183
|
-
}, [
|
|
181
|
+
}, [
|
|
182
|
+
attributes,
|
|
183
|
+
dateDatasets,
|
|
184
|
+
enableMeasureValueFilterKD,
|
|
185
|
+
metricMeasures,
|
|
186
|
+
supportsMultipleDateFilters,
|
|
187
|
+
parameters,
|
|
188
|
+
]);
|
|
184
189
|
const buttonTitle = intl.formatMessage({ id: "addPanel.filter" });
|
|
185
190
|
const items = useMemo(() => {
|
|
186
191
|
if (selectedTabId === "attributes") {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAvailableDatasetsForItems.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/hooks/useAvailableDatasetsForItems.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,mBAAmB,EAAE,KAAK,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"useAvailableDatasetsForItems.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/filterBar/attributeFilter/dashboardDropdownBody/configuration/hooks/useAvailableDatasetsForItems.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,mBAAmB,EAAE,KAAK,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAUzF;;GAEG;AACH,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,mBAAmB,EAAE;;;;;;;;;;EA4CxE"}
|