@gooddata/sdk-ui-ext 9.8.0-alpha.23 → 9.8.0-alpha.24
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/internal/components/dialogs/userManagementDialogs/AddDataSourceToSubjects.d.ts +19 -0
- package/esm/internal/components/dialogs/userManagementDialogs/AddDataSourceToSubjects.d.ts.map +1 -0
- package/esm/internal/components/dialogs/userManagementDialogs/AddDataSourceToSubjects.js +18 -0
- package/esm/internal/components/dialogs/userManagementDialogs/AddDataSourceToSubjects.js.map +1 -0
- package/esm/internal/components/dialogs/userManagementDialogs/DataSources/AddDataSource.d.ts +14 -0
- package/esm/internal/components/dialogs/userManagementDialogs/DataSources/AddDataSource.d.ts.map +1 -0
- package/esm/internal/components/dialogs/userManagementDialogs/DataSources/AddDataSource.js +19 -0
- package/esm/internal/components/dialogs/userManagementDialogs/DataSources/AddDataSource.js.map +1 -0
- package/esm/internal/components/dialogs/userManagementDialogs/DataSources/AddDataSourceSelect.d.ts +4 -0
- package/esm/internal/components/dialogs/userManagementDialogs/DataSources/AddDataSourceSelect.d.ts.map +1 -0
- package/esm/internal/components/dialogs/userManagementDialogs/DataSources/AddDataSourceSelect.js +60 -0
- package/esm/internal/components/dialogs/userManagementDialogs/DataSources/AddDataSourceSelect.js.map +1 -0
- package/esm/internal/components/dialogs/userManagementDialogs/DataSources/AsyncSelectComponents.d.ts +12 -0
- package/esm/internal/components/dialogs/userManagementDialogs/DataSources/AsyncSelectComponents.d.ts.map +1 -0
- package/esm/internal/components/dialogs/userManagementDialogs/DataSources/AsyncSelectComponents.js +60 -0
- package/esm/internal/components/dialogs/userManagementDialogs/DataSources/AsyncSelectComponents.js.map +1 -0
- package/esm/internal/components/dialogs/userManagementDialogs/DataSources/DataSourceItem.d.ts +12 -0
- package/esm/internal/components/dialogs/userManagementDialogs/DataSources/DataSourceItem.d.ts.map +1 -0
- package/esm/internal/components/dialogs/userManagementDialogs/DataSources/DataSourceItem.js +23 -0
- package/esm/internal/components/dialogs/userManagementDialogs/DataSources/DataSourceItem.js.map +1 -0
- package/esm/internal/components/dialogs/userManagementDialogs/DataSources/DataSourceList.d.ts +12 -0
- package/esm/internal/components/dialogs/userManagementDialogs/DataSources/DataSourceList.d.ts.map +1 -0
- package/esm/internal/components/dialogs/userManagementDialogs/DataSources/DataSourceList.js +17 -0
- package/esm/internal/components/dialogs/userManagementDialogs/DataSources/DataSourceList.js.map +1 -0
- package/esm/internal/components/dialogs/userManagementDialogs/DataSources/DataSourceListEmpty.d.ts +8 -0
- package/esm/internal/components/dialogs/userManagementDialogs/DataSources/DataSourceListEmpty.d.ts.map +1 -0
- package/esm/internal/components/dialogs/userManagementDialogs/DataSources/DataSourceListEmpty.js +17 -0
- package/esm/internal/components/dialogs/userManagementDialogs/DataSources/DataSourceListEmpty.js.map +1 -0
- package/esm/internal/components/dialogs/userManagementDialogs/DataSources/PermissionsDropdown.d.ts +15 -0
- package/esm/internal/components/dialogs/userManagementDialogs/DataSources/PermissionsDropdown.d.ts.map +1 -0
- package/esm/internal/components/dialogs/userManagementDialogs/DataSources/PermissionsDropdown.js +64 -0
- package/esm/internal/components/dialogs/userManagementDialogs/DataSources/PermissionsDropdown.js.map +1 -0
- package/esm/internal/components/dialogs/userManagementDialogs/DataSources/PermissionsDropdownItem.d.ts +12 -0
- package/esm/internal/components/dialogs/userManagementDialogs/DataSources/PermissionsDropdownItem.d.ts.map +1 -0
- package/esm/internal/components/dialogs/userManagementDialogs/DataSources/PermissionsDropdownItem.js +24 -0
- package/esm/internal/components/dialogs/userManagementDialogs/DataSources/PermissionsDropdownItem.js.map +1 -0
- package/esm/internal/components/dialogs/userManagementDialogs/DataSources/PermissionsDropdownList.d.ts +15 -0
- package/esm/internal/components/dialogs/userManagementDialogs/DataSources/PermissionsDropdownList.d.ts.map +1 -0
- package/esm/internal/components/dialogs/userManagementDialogs/DataSources/PermissionsDropdownList.js +45 -0
- package/esm/internal/components/dialogs/userManagementDialogs/DataSources/PermissionsDropdownList.js.map +1 -0
- package/esm/internal/components/dialogs/userManagementDialogs/DataSources/QuestionMarkIcon.d.ts +3 -0
- package/esm/internal/components/dialogs/userManagementDialogs/DataSources/QuestionMarkIcon.d.ts.map +1 -0
- package/esm/internal/components/dialogs/userManagementDialogs/DataSources/QuestionMarkIcon.js +10 -0
- package/esm/internal/components/dialogs/userManagementDialogs/DataSources/QuestionMarkIcon.js.map +1 -0
- package/esm/internal/components/dialogs/userManagementDialogs/DataSources/backend/loadUserDataSourceOptionsPromise.d.ts +5 -0
- package/esm/internal/components/dialogs/userManagementDialogs/DataSources/backend/loadUserDataSourceOptionsPromise.d.ts.map +1 -0
- package/esm/internal/components/dialogs/userManagementDialogs/DataSources/backend/loadUserDataSourceOptionsPromise.js +35 -0
- package/esm/internal/components/dialogs/userManagementDialogs/DataSources/backend/loadUserDataSourceOptionsPromise.js.map +1 -0
- package/esm/internal/components/dialogs/userManagementDialogs/DataSources/locales.d.ts +12 -0
- package/esm/internal/components/dialogs/userManagementDialogs/DataSources/locales.d.ts.map +1 -0
- package/esm/internal/components/dialogs/userManagementDialogs/DataSources/locales.js +8 -0
- package/esm/internal/components/dialogs/userManagementDialogs/DataSources/locales.js.map +1 -0
- package/esm/internal/components/dialogs/userManagementDialogs/DataSources/useAddDataSource.d.ts +11 -0
- package/esm/internal/components/dialogs/userManagementDialogs/DataSources/useAddDataSource.d.ts.map +1 -0
- package/esm/internal/components/dialogs/userManagementDialogs/DataSources/useAddDataSource.js +82 -0
- package/esm/internal/components/dialogs/userManagementDialogs/DataSources/useAddDataSource.js.map +1 -0
- package/esm/internal/components/dialogs/userManagementDialogs/DataSources/usePermissionsDropdownState.d.ts +5 -0
- package/esm/internal/components/dialogs/userManagementDialogs/DataSources/usePermissionsDropdownState.d.ts.map +1 -0
- package/esm/internal/components/dialogs/userManagementDialogs/DataSources/usePermissionsDropdownState.js +8 -0
- package/esm/internal/components/dialogs/userManagementDialogs/DataSources/usePermissionsDropdownState.js.map +1 -0
- package/esm/internal/components/dialogs/userManagementDialogs/TelemetryContext.d.ts +1 -1
- package/esm/internal/components/dialogs/userManagementDialogs/TelemetryContext.d.ts.map +1 -1
- package/esm/internal/components/dialogs/userManagementDialogs/TelemetryContext.js +1 -1
- package/esm/internal/components/dialogs/userManagementDialogs/TelemetryContext.js.map +1 -1
- package/esm/internal/components/dialogs/userManagementDialogs/UserEditDialog.d.ts +2 -1
- package/esm/internal/components/dialogs/userManagementDialogs/UserEditDialog.d.ts.map +1 -1
- package/esm/internal/components/dialogs/userManagementDialogs/UserEditDialog.js +18 -6
- package/esm/internal/components/dialogs/userManagementDialogs/UserEditDialog.js.map +1 -1
- package/esm/internal/components/dialogs/userManagementDialogs/UserGroupEditDialog.d.ts +2 -1
- package/esm/internal/components/dialogs/userManagementDialogs/UserGroupEditDialog.d.ts.map +1 -1
- package/esm/internal/components/dialogs/userManagementDialogs/UserGroupEditDialog.js +17 -5
- package/esm/internal/components/dialogs/userManagementDialogs/UserGroupEditDialog.js.map +1 -1
- package/esm/internal/components/dialogs/userManagementDialogs/Workspace/AddWorkspace.d.ts.map +1 -1
- package/esm/internal/components/dialogs/userManagementDialogs/Workspace/AddWorkspace.js +3 -3
- package/esm/internal/components/dialogs/userManagementDialogs/Workspace/AddWorkspace.js.map +1 -1
- package/esm/internal/components/dialogs/userManagementDialogs/Workspace/{workspaceHooks.d.ts → useAddWorkspace.d.ts} +2 -2
- package/esm/internal/components/dialogs/userManagementDialogs/Workspace/useAddWorkspace.d.ts.map +1 -0
- package/esm/internal/components/dialogs/userManagementDialogs/Workspace/useAddWorkspace.js +83 -0
- package/esm/internal/components/dialogs/userManagementDialogs/Workspace/useAddWorkspace.js.map +1 -0
- package/esm/internal/components/dialogs/userManagementDialogs/dialogHooks.d.ts +3 -9
- package/esm/internal/components/dialogs/userManagementDialogs/dialogHooks.d.ts.map +1 -1
- package/esm/internal/components/dialogs/userManagementDialogs/dialogHooks.js +22 -92
- package/esm/internal/components/dialogs/userManagementDialogs/dialogHooks.js.map +1 -1
- package/esm/internal/components/dialogs/userManagementDialogs/hooks/usePermissions.d.ts +12 -0
- package/esm/internal/components/dialogs/userManagementDialogs/hooks/usePermissions.d.ts.map +1 -0
- package/esm/internal/components/dialogs/userManagementDialogs/hooks/usePermissions.js +133 -0
- package/esm/internal/components/dialogs/userManagementDialogs/hooks/usePermissions.js.map +1 -0
- package/esm/internal/components/dialogs/userManagementDialogs/index.d.ts +2 -1
- package/esm/internal/components/dialogs/userManagementDialogs/index.d.ts.map +1 -1
- package/esm/internal/components/dialogs/userManagementDialogs/index.js +2 -1
- package/esm/internal/components/dialogs/userManagementDialogs/index.js.map +1 -1
- package/esm/internal/components/dialogs/userManagementDialogs/locales.d.ts +57 -0
- package/esm/internal/components/dialogs/userManagementDialogs/locales.d.ts.map +1 -1
- package/esm/internal/components/dialogs/userManagementDialogs/locales.js +20 -1
- package/esm/internal/components/dialogs/userManagementDialogs/locales.js.map +1 -1
- package/esm/internal/components/dialogs/userManagementDialogs/types.d.ts +33 -2
- package/esm/internal/components/dialogs/userManagementDialogs/types.d.ts.map +1 -1
- package/esm/internal/components/dialogs/userManagementDialogs/types.js +4 -1
- package/esm/internal/components/dialogs/userManagementDialogs/types.js.map +1 -1
- package/esm/internal/components/dialogs/userManagementDialogs/utils.d.ts +10 -2
- package/esm/internal/components/dialogs/userManagementDialogs/utils.d.ts.map +1 -1
- package/esm/internal/components/dialogs/userManagementDialogs/utils.js +85 -1
- package/esm/internal/components/dialogs/userManagementDialogs/utils.js.map +1 -1
- package/esm/sdk-ui-ext.d.ts +41 -3
- package/package.json +18 -18
- package/esm/internal/components/dialogs/userManagementDialogs/Workspace/workspaceHooks.d.ts.map +0 -1
- package/esm/internal/components/dialogs/userManagementDialogs/Workspace/workspaceHooks.js +0 -104
- package/esm/internal/components/dialogs/userManagementDialogs/Workspace/workspaceHooks.js.map +0 -1
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { IGrantedDataSource, DataSourcePermissionSubject } from "./types.js";
|
|
3
|
+
import { IWithTelemetryProps } from "./TelemetryContext.js";
|
|
4
|
+
/**
|
|
5
|
+
* @internal
|
|
6
|
+
*/
|
|
7
|
+
export interface IAddDataSourceToSubjectsProps extends IWithTelemetryProps {
|
|
8
|
+
ids: string[];
|
|
9
|
+
subjectType: DataSourcePermissionSubject;
|
|
10
|
+
organizationId: string;
|
|
11
|
+
onSuccess: () => void;
|
|
12
|
+
onClose: () => void;
|
|
13
|
+
renderDataSourceIcon?: (dataSource: IGrantedDataSource) => JSX.Element;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* @internal
|
|
17
|
+
*/
|
|
18
|
+
export declare const AddDataSourceToSubjects: React.FC<IAddDataSourceToSubjectsProps>;
|
|
19
|
+
//# sourceMappingURL=AddDataSourceToSubjects.d.ts.map
|
package/esm/internal/components/dialogs/userManagementDialogs/AddDataSourceToSubjects.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AddDataSourceToSubjects.d.ts","sourceRoot":"","sources":["../../../../../src/internal/components/dialogs/userManagementDialogs/AddDataSourceToSubjects.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,EAAE,kBAAkB,EAAE,2BAA2B,EAAE,MAAM,YAAY,CAAC;AAE7E,OAAO,EAAE,mBAAmB,EAAiB,MAAM,uBAAuB,CAAC;AAK3E;;GAEG;AACH,MAAM,WAAW,6BAA8B,SAAQ,mBAAmB;IACtE,GAAG,EAAE,MAAM,EAAE,CAAC;IACd,WAAW,EAAE,2BAA2B,CAAC;IACzC,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,oBAAoB,CAAC,EAAE,CAAC,UAAU,EAAE,kBAAkB,KAAK,GAAG,CAAC,OAAO,CAAC;CAC1E;AA4BD;;GAEG;AACH,eAAO,MAAM,uBAAuB,yCAAkD,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
// (C) 2023-2024 GoodData Corporation
|
|
2
|
+
import React from "react";
|
|
3
|
+
import { Overlay } from "@gooddata/sdk-ui-kit";
|
|
4
|
+
import { AddDataSource } from "./DataSources/AddDataSource.js";
|
|
5
|
+
import { OrganizationIdProvider } from "./OrganizationIdContext.js";
|
|
6
|
+
import { withTelemetry } from "./TelemetryContext.js";
|
|
7
|
+
const alignPoints = [{ align: "cc cc" }];
|
|
8
|
+
const noGrantedDataSources = [];
|
|
9
|
+
const AddDataSourceToSubjectsComponent = ({ ids, subjectType, organizationId, onSuccess, onClose, renderDataSourceIcon, }) => {
|
|
10
|
+
return (React.createElement(OrganizationIdProvider, { organizationId: organizationId },
|
|
11
|
+
React.createElement(Overlay, { alignPoints: alignPoints, isModal: true, positionType: "fixed" },
|
|
12
|
+
React.createElement(AddDataSource, { ids: ids, subjectType: subjectType, grantedDataSources: noGrantedDataSources, enableBackButton: false, onSubmit: onSuccess, onCancel: onClose, onClose: onClose, renderDataSourceIcon: renderDataSourceIcon }))));
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* @internal
|
|
16
|
+
*/
|
|
17
|
+
export const AddDataSourceToSubjects = withTelemetry(AddDataSourceToSubjectsComponent);
|
|
18
|
+
//# sourceMappingURL=AddDataSourceToSubjects.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AddDataSourceToSubjects.js","sourceRoot":"","sources":["../../../../../src/internal/components/dialogs/userManagementDialogs/AddDataSourceToSubjects.tsx"],"names":[],"mappings":"AAAA,qCAAqC;AAErC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAe,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAE5D,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAE/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAuB,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAE3E,MAAM,WAAW,GAAkB,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;AACxD,MAAM,oBAAoB,GAAyB,EAAE,CAAC;AActD,MAAM,gCAAgC,GAA4C,CAAC,EAC/E,GAAG,EACH,WAAW,EACX,cAAc,EACd,SAAS,EACT,OAAO,EACP,oBAAoB,GACvB,EAAE,EAAE;IACD,OAAO,CACH,oBAAC,sBAAsB,IAAC,cAAc,EAAE,cAAc;QAClD,oBAAC,OAAO,IAAC,WAAW,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAC,OAAO;YAClE,oBAAC,aAAa,IACV,GAAG,EAAE,GAAG,EACR,WAAW,EAAE,WAAW,EACxB,kBAAkB,EAAE,oBAAoB,EACxC,gBAAgB,EAAE,KAAK,EACvB,QAAQ,EAAE,SAAS,EACnB,QAAQ,EAAE,OAAO,EACjB,OAAO,EAAE,OAAO,EAChB,oBAAoB,EAAE,oBAAoB,GAC5C,CACI,CACW,CAC5B,CAAC;AACN,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,aAAa,CAAC,gCAAgC,CAAC,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { IGrantedDataSource, DataSourcePermissionSubject } from "../types.js";
|
|
3
|
+
export interface IAddDataSourceProps {
|
|
4
|
+
ids: string[];
|
|
5
|
+
subjectType: DataSourcePermissionSubject;
|
|
6
|
+
grantedDataSources: IGrantedDataSource[];
|
|
7
|
+
enableBackButton?: boolean;
|
|
8
|
+
onSubmit: (workspaces: IGrantedDataSource[]) => void;
|
|
9
|
+
onCancel: () => void;
|
|
10
|
+
onClose: () => void;
|
|
11
|
+
renderDataSourceIcon: (dataSource: IGrantedDataSource) => JSX.Element;
|
|
12
|
+
}
|
|
13
|
+
export declare const AddDataSource: React.FC<IAddDataSourceProps>;
|
|
14
|
+
//# sourceMappingURL=AddDataSource.d.ts.map
|
package/esm/internal/components/dialogs/userManagementDialogs/DataSources/AddDataSource.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AddDataSource.d.ts","sourceRoot":"","sources":["../../../../../../src/internal/components/dialogs/userManagementDialogs/DataSources/AddDataSource.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAsB,MAAM,OAAO,CAAC;AAG3C,OAAO,EAAE,kBAAkB,EAAE,2BAA2B,EAAE,MAAM,aAAa,CAAC;AAO9E,MAAM,WAAW,mBAAmB;IAChC,GAAG,EAAE,MAAM,EAAE,CAAC;IACd,WAAW,EAAE,2BAA2B,CAAC;IACzC,kBAAkB,EAAE,kBAAkB,EAAE,CAAC;IACzC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,EAAE,CAAC,UAAU,EAAE,kBAAkB,EAAE,KAAK,IAAI,CAAC;IACrD,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,oBAAoB,EAAE,CAAC,UAAU,EAAE,kBAAkB,KAAK,GAAG,CAAC,OAAO,CAAC;CACzE;AAED,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CAoDvD,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
// (C) 2023-2024 GoodData Corporation
|
|
2
|
+
import { useIntl } from "react-intl";
|
|
3
|
+
import React, { useCallback } from "react";
|
|
4
|
+
import { BackButton, ConfirmDialogBase } from "@gooddata/sdk-ui-kit";
|
|
5
|
+
import { messages } from "../locales.js";
|
|
6
|
+
import { AddDataSourceSelect } from "./AddDataSourceSelect.js";
|
|
7
|
+
import { DataSourceList } from "./DataSourceList.js";
|
|
8
|
+
import { useAddDataSource } from "./useAddDataSource.js";
|
|
9
|
+
export const AddDataSource = ({ ids, subjectType, grantedDataSources, enableBackButton, onSubmit, onCancel, onClose, renderDataSourceIcon, }) => {
|
|
10
|
+
const intl = useIntl();
|
|
11
|
+
const { addedDataSources, isProcessing, onAdd, onDelete, onChange, onSelect } = useAddDataSource(ids, subjectType, onSubmit, onCancel);
|
|
12
|
+
const backButtonRenderer = useCallback(() => {
|
|
13
|
+
return React.createElement(BackButton, { onClick: onCancel, className: "s-user-management-navigate-back" });
|
|
14
|
+
}, [onCancel]);
|
|
15
|
+
return (React.createElement(ConfirmDialogBase, { className: "gd-share-dialog gd-share-dialog-add-users s-user-management-add-data-source", displayCloseButton: true, isPositive: true, isSubmitDisabled: addedDataSources.length === 0 || isProcessing, showProgressIndicator: isProcessing, headline: intl.formatMessage(messages.addDataSourceDialogTitle), cancelButtonText: intl.formatMessage(messages.addWorkspaceDialogCloseButton), submitButtonText: intl.formatMessage(messages.addWorkspaceDialogSaveButton), onCancel: onCancel, onSubmit: onAdd, onClose: onClose, headerLeftButtonRenderer: enableBackButton ? backButtonRenderer : undefined },
|
|
16
|
+
React.createElement(AddDataSourceSelect, { addedDataSources: addedDataSources, grantedDataSources: grantedDataSources, onSelectDataSource: onSelect }),
|
|
17
|
+
React.createElement(DataSourceList, { subjectType: subjectType, mode: "EDIT", dataSources: addedDataSources, onDelete: onDelete, onChange: onChange, renderDataSourceIcon: renderDataSourceIcon })));
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=AddDataSource.js.map
|
package/esm/internal/components/dialogs/userManagementDialogs/DataSources/AddDataSource.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AddDataSource.js","sourceRoot":"","sources":["../../../../../../src/internal/components/dialogs/userManagementDialogs/DataSources/AddDataSource.tsx"],"names":[],"mappings":"AAAA,qCAAqC;AAErC,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,KAAK,EAAE,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAGrE,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAazD,MAAM,CAAC,MAAM,aAAa,GAAkC,CAAC,EACzD,GAAG,EACH,WAAW,EACX,kBAAkB,EAClB,gBAAgB,EAChB,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,oBAAoB,GACvB,EAAE,EAAE;IACD,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;IACvB,MAAM,EAAE,gBAAgB,EAAE,YAAY,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,gBAAgB,CAC5F,GAAG,EACH,WAAW,EACX,QAAQ,EACR,QAAQ,CACX,CAAC;IAEF,MAAM,kBAAkB,GAAG,WAAW,CAAC,GAAG,EAAE;QACxC,OAAO,oBAAC,UAAU,IAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAC,iCAAiC,GAAG,CAAC;IACzF,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEf,OAAO,CACH,oBAAC,iBAAiB,IACd,SAAS,EAAC,6EAA6E,EACvF,kBAAkB,EAAE,IAAI,EACxB,UAAU,EAAE,IAAI,EAChB,gBAAgB,EAAE,gBAAgB,CAAC,MAAM,KAAK,CAAC,IAAI,YAAY,EAC/D,qBAAqB,EAAE,YAAY,EACnC,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,wBAAwB,CAAC,EAC/D,gBAAgB,EAAE,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,6BAA6B,CAAC,EAC5E,gBAAgB,EAAE,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,4BAA4B,CAAC,EAC3E,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,KAAK,EACf,OAAO,EAAE,OAAO,EAChB,wBAAwB,EAAE,gBAAgB,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,SAAS;QAE3E,oBAAC,mBAAmB,IAChB,gBAAgB,EAAE,gBAAgB,EAClC,kBAAkB,EAAE,kBAAkB,EACtC,kBAAkB,EAAE,QAAQ,GAC9B;QACF,oBAAC,cAAc,IACX,WAAW,EAAE,WAAW,EACxB,IAAI,EAAC,MAAM,EACX,WAAW,EAAE,gBAAgB,EAC7B,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAClB,oBAAoB,EAAE,oBAAoB,GAC5C,CACc,CACvB,CAAC;AACN,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AddDataSourceSelect.d.ts","sourceRoot":"","sources":["../../../../../../src/internal/components/dialogs/userManagementDialogs/DataSources/AddDataSourceSelect.tsx"],"names":[],"mappings":"AACA,OAAO,KAAwE,MAAM,OAAO,CAAC;AAQ7F,OAAO,EAAE,yBAAyB,EAA6C,MAAM,aAAa,CAAC;AAgBnG,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC,yBAAyB,CA0FnE,CAAC"}
|
package/esm/internal/components/dialogs/userManagementDialogs/DataSources/AddDataSourceSelect.js
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
// (C) 2021-2024 GoodData Corporation
|
|
2
|
+
import React, { useCallback, useEffect, useMemo, useRef } from "react";
|
|
3
|
+
import debounce from "debounce-promise";
|
|
4
|
+
import { useIntl } from "react-intl";
|
|
5
|
+
import AsyncSelect from "react-select/async";
|
|
6
|
+
import { useBackendStrict } from "@gooddata/sdk-ui";
|
|
7
|
+
import { isDataSourceItem } from "../types.js";
|
|
8
|
+
import { messages } from "../locales.js";
|
|
9
|
+
import { EmptyRenderer, GroupHeadingRenderer, InputRendered, LoadingMessageRenderer, MenuListRendered, NoOptionsMessageRenderer, OptionRenderer, } from "./AsyncSelectComponents.js";
|
|
10
|
+
import { loadUserDataSourceOptionsPromise } from "./backend/loadUserDataSourceOptionsPromise.js";
|
|
11
|
+
const SEARCH_INTERVAL = 400;
|
|
12
|
+
export const AddDataSourceSelect = ({ addedDataSources, grantedDataSources, onSelectDataSource, }) => {
|
|
13
|
+
const backend = useBackendStrict();
|
|
14
|
+
const intl = useIntl();
|
|
15
|
+
const selectRef = useRef(null);
|
|
16
|
+
useEffect(() => {
|
|
17
|
+
selectRef.current.focus();
|
|
18
|
+
}, []);
|
|
19
|
+
const onSelect = useCallback((value) => {
|
|
20
|
+
const dataSource = value.value;
|
|
21
|
+
if (isDataSourceItem(dataSource)) {
|
|
22
|
+
onSelectDataSource(dataSource);
|
|
23
|
+
}
|
|
24
|
+
}, [onSelectDataSource]);
|
|
25
|
+
const noOptionsMessage = useMemo(() => () => intl.formatMessage(messages.searchDataSourceNoMatch), [intl]);
|
|
26
|
+
const loadOptions = useMemo(() => debounce(loadUserDataSourceOptionsPromise(backend, intl), SEARCH_INTERVAL, { leading: true }), [backend, intl]);
|
|
27
|
+
const onKeyDownCallback = useCallback((e) => {
|
|
28
|
+
const target = e.target;
|
|
29
|
+
// react-select has default behavior on space and tab key - open menu / select first option etc.
|
|
30
|
+
// We need disable this behavior for space key by set e.preventDefault when input is empty and for tab key completely
|
|
31
|
+
//space
|
|
32
|
+
if (e.keyCode === 32 && !target.value) {
|
|
33
|
+
e.preventDefault();
|
|
34
|
+
}
|
|
35
|
+
// tab
|
|
36
|
+
if (e.keyCode === 9) {
|
|
37
|
+
e.preventDefault();
|
|
38
|
+
}
|
|
39
|
+
}, []);
|
|
40
|
+
const usedDataSources = useMemo(() => (grantedDataSources ? [...addedDataSources, ...grantedDataSources] : []), [addedDataSources, grantedDataSources]);
|
|
41
|
+
const filterOption = (option) => {
|
|
42
|
+
const dataSource = option.value;
|
|
43
|
+
return !usedDataSources.some((usedDataSource) => {
|
|
44
|
+
return usedDataSource.id === dataSource.id;
|
|
45
|
+
});
|
|
46
|
+
};
|
|
47
|
+
return (React.createElement("div", { className: "gd-share-dialog-content-select s-user-management-data-source-select" },
|
|
48
|
+
React.createElement(AsyncSelect, { ref: selectRef, defaultMenuIsOpen: true, classNamePrefix: "gd-share-dialog", components: {
|
|
49
|
+
DropdownIndicator: EmptyRenderer,
|
|
50
|
+
IndicatorSeparator: EmptyRenderer,
|
|
51
|
+
Input: InputRendered,
|
|
52
|
+
Option: OptionRenderer,
|
|
53
|
+
GroupHeading: GroupHeadingRenderer,
|
|
54
|
+
LoadingMessage: LoadingMessageRenderer,
|
|
55
|
+
LoadingIndicator: EmptyRenderer,
|
|
56
|
+
MenuList: MenuListRendered,
|
|
57
|
+
NoOptionsMessage: NoOptionsMessageRenderer,
|
|
58
|
+
}, loadOptions: loadOptions, defaultOptions: true, placeholder: intl.formatMessage(messages.searchDataSourcePlaceholder), onKeyDown: onKeyDownCallback, noOptionsMessage: noOptionsMessage, onChange: onSelect, value: null, filterOption: filterOption })));
|
|
59
|
+
};
|
|
60
|
+
//# sourceMappingURL=AddDataSourceSelect.js.map
|
package/esm/internal/components/dialogs/userManagementDialogs/DataSources/AddDataSourceSelect.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AddDataSourceSelect.js","sourceRoot":"","sources":["../../../../../../src/internal/components/dialogs/userManagementDialogs/DataSources/AddDataSourceSelect.tsx"],"names":[],"mappings":"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"}
|
package/esm/internal/components/dialogs/userManagementDialogs/DataSources/AsyncSelectComponents.d.ts
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { InputProps, GroupHeadingProps, OptionProps, MenuListProps, NoticeProps } from "react-select";
|
|
3
|
+
import { ISelectErrorOption, IDataSourceSelectOption } from "../types.js";
|
|
4
|
+
export declare const EmptyRenderer: () => JSX.Element;
|
|
5
|
+
export declare const LoadingMessageRenderer: () => JSX.Element;
|
|
6
|
+
export declare const NoOptionsMessageRenderer: (props: NoticeProps) => JSX.Element;
|
|
7
|
+
export declare const MenuListRendered: (props: MenuListProps<IDataSourceSelectOption, false>) => JSX.Element;
|
|
8
|
+
export declare const InputRendered: (props: InputProps) => JSX.Element;
|
|
9
|
+
export declare const ErrorOptionRenderer: (errorOption: ISelectErrorOption) => JSX.Element;
|
|
10
|
+
export declare const OptionRenderer: (props: OptionProps<IDataSourceSelectOption, false>) => JSX.Element;
|
|
11
|
+
export declare const GroupHeadingRenderer: (props: GroupHeadingProps) => JSX.Element;
|
|
12
|
+
//# sourceMappingURL=AsyncSelectComponents.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AsyncSelectComponents.d.ts","sourceRoot":"","sources":["../../../../../../src/internal/components/dialogs/userManagementDialogs/DataSources/AsyncSelectComponents.tsx"],"names":[],"mappings":";AAEA,OAAO,EAEH,UAAU,EACV,iBAAiB,EACjB,WAAW,EACX,aAAa,EACb,WAAW,EACd,MAAM,cAAc,CAAC;AAGtB,OAAO,EAEH,kBAAkB,EAElB,uBAAuB,EAC1B,MAAM,aAAa,CAAC;AAGrB,eAAO,MAAM,aAAa,QAAO,WAEhC,CAAC;AAEF,eAAO,MAAM,sBAAsB,QAAO,WAMzC,CAAC;AAEF,eAAO,MAAM,wBAAwB,UAAW,WAAW,KAAG,WAM7D,CAAC;AAEF,eAAO,MAAM,gBAAgB,UAAW,cAAc,uBAAuB,EAAE,KAAK,CAAC,KAAG,WAQvF,CAAC;AAEF,eAAO,MAAM,aAAa,UAAW,UAAU,KAAG,WAMjD,CAAC;AASF,eAAO,MAAM,mBAAmB,gBAAiB,kBAAkB,KAAG,WASrE,CAAC;AAEF,eAAO,MAAM,cAAc,UAAW,YAAY,uBAAuB,EAAE,KAAK,CAAC,KAAG,WAsBnF,CAAC;AAEF,eAAO,MAAM,oBAAoB,UAAW,iBAAiB,KAAG,WAO/D,CAAC"}
|
package/esm/internal/components/dialogs/userManagementDialogs/DataSources/AsyncSelectComponents.js
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
// (C) 2021-2024 GoodData Corporation
|
|
2
|
+
import React from "react";
|
|
3
|
+
import { components as ReactSelectComponents, } from "react-select";
|
|
4
|
+
import { Typography, LoadingMask } from "@gooddata/sdk-ui-kit";
|
|
5
|
+
import { isDataSourceItem, isSelectErrorOption, } from "../types.js";
|
|
6
|
+
import { getDataSourceItemTestId } from "../utils.js";
|
|
7
|
+
export const EmptyRenderer = () => {
|
|
8
|
+
return null;
|
|
9
|
+
};
|
|
10
|
+
export const LoadingMessageRenderer = () => {
|
|
11
|
+
return (React.createElement("div", { className: "gd-share-dialog-loading-mask-container" },
|
|
12
|
+
React.createElement(LoadingMask, { size: "small" })));
|
|
13
|
+
};
|
|
14
|
+
export const NoOptionsMessageRenderer = (props) => {
|
|
15
|
+
return (React.createElement("div", { className: "s-user-management-no-option", "aria-label": "Share dialog no match" },
|
|
16
|
+
React.createElement(ReactSelectComponents.NoOptionsMessage, { ...props })));
|
|
17
|
+
};
|
|
18
|
+
export const MenuListRendered = (props) => {
|
|
19
|
+
return (React.createElement(ReactSelectComponents.MenuList, { ...props },
|
|
20
|
+
React.createElement("div", { className: "s-user-management-menu", "aria-label": "Share dialog menu list" }, props.children)));
|
|
21
|
+
};
|
|
22
|
+
export const InputRendered = (props) => {
|
|
23
|
+
return (React.createElement("div", { className: "gd-share-dialog-input s-user-management-input" },
|
|
24
|
+
React.createElement(ReactSelectComponents.Input, { ...props })));
|
|
25
|
+
};
|
|
26
|
+
const OptionContentRenderer = (item) => {
|
|
27
|
+
if (isDataSourceItem(item.value)) {
|
|
28
|
+
return React.createElement(React.Fragment, null,
|
|
29
|
+
" ",
|
|
30
|
+
item.value.name,
|
|
31
|
+
" ");
|
|
32
|
+
}
|
|
33
|
+
return React.createElement(React.Fragment, null,
|
|
34
|
+
" ",
|
|
35
|
+
item.label,
|
|
36
|
+
" ");
|
|
37
|
+
};
|
|
38
|
+
export const ErrorOptionRenderer = (errorOption) => {
|
|
39
|
+
return (React.createElement("div", { className: "gd-share-dialog-option-error s-user-management-option-error", "aria-label": "Share dialog error" },
|
|
40
|
+
React.createElement("span", { className: "gd-share-dialog-option-error-content" }, errorOption.label)));
|
|
41
|
+
};
|
|
42
|
+
export const OptionRenderer = (props) => {
|
|
43
|
+
const { className, cx, isFocused, innerRef, innerProps, data } = props;
|
|
44
|
+
if (isSelectErrorOption(data)) {
|
|
45
|
+
return ErrorOptionRenderer(data);
|
|
46
|
+
}
|
|
47
|
+
const sTestStyle = isDataSourceItem(data.value) ? getDataSourceItemTestId(data.value) : "";
|
|
48
|
+
const componentStyle = cx({
|
|
49
|
+
option: true,
|
|
50
|
+
"option--is-focused": isFocused,
|
|
51
|
+
}, className);
|
|
52
|
+
return (React.createElement("div", { ref: innerRef, className: `${componentStyle} ${sTestStyle}`, ...innerProps },
|
|
53
|
+
React.createElement("div", { className: "option-content" }, OptionContentRenderer(data))));
|
|
54
|
+
};
|
|
55
|
+
export const GroupHeadingRenderer = (props) => {
|
|
56
|
+
const { label } = props.data;
|
|
57
|
+
return (React.createElement("div", { className: "gd-share-dialog-select-group-heading" },
|
|
58
|
+
React.createElement(Typography, { tagName: "h3" }, label)));
|
|
59
|
+
};
|
|
60
|
+
//# sourceMappingURL=AsyncSelectComponents.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AsyncSelectComponents.js","sourceRoot":"","sources":["../../../../../../src/internal/components/dialogs/userManagementDialogs/DataSources/AsyncSelectComponents.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { IGrantedDataSource, DataSourcePermissionSubject } from "../types.js";
|
|
3
|
+
interface IGranularGranteeUserGroupItemProps {
|
|
4
|
+
dataSource: IGrantedDataSource;
|
|
5
|
+
subjectType: DataSourcePermissionSubject;
|
|
6
|
+
onChange: (grantee: IGrantedDataSource) => void;
|
|
7
|
+
onDelete: (grantee: IGrantedDataSource) => void;
|
|
8
|
+
renderDataSourceIcon: (dataSource: IGrantedDataSource) => JSX.Element;
|
|
9
|
+
}
|
|
10
|
+
export declare const DataSourceItem: React.FC<IGranularGranteeUserGroupItemProps>;
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=DataSourceItem.d.ts.map
|
package/esm/internal/components/dialogs/userManagementDialogs/DataSources/DataSourceItem.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DataSourceItem.d.ts","sourceRoot":"","sources":["../../../../../../src/internal/components/dialogs/userManagementDialogs/DataSources/DataSourceItem.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EAAE,kBAAkB,EAAE,2BAA2B,EAAE,MAAM,aAAa,CAAC;AA0B9E,UAAU,kCAAkC;IACxC,UAAU,EAAE,kBAAkB,CAAC;IAC/B,WAAW,EAAE,2BAA2B,CAAC;IACzC,QAAQ,EAAE,CAAC,OAAO,EAAE,kBAAkB,KAAK,IAAI,CAAC;IAChD,QAAQ,EAAE,CAAC,OAAO,EAAE,kBAAkB,KAAK,IAAI,CAAC;IAChD,oBAAoB,EAAE,CAAC,UAAU,EAAE,kBAAkB,KAAK,GAAG,CAAC,OAAO,CAAC;CACzE;AAED,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,kCAAkC,CA6BvE,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
// (C) 2023-2024 GoodData Corporation
|
|
2
|
+
import React from "react";
|
|
3
|
+
import cx from "classnames";
|
|
4
|
+
import { usePermissionsDropdownState } from "./usePermissionsDropdownState.js";
|
|
5
|
+
import { PermissionsDropdown } from "./PermissionsDropdown.js";
|
|
6
|
+
const DataSourceIcon = () => {
|
|
7
|
+
return (React.createElement("div", { className: "gd-grantee-item-icon-left-background" },
|
|
8
|
+
React.createElement("span", { className: "gd-grantee-item-icon gd-grantee-item-icon-left" },
|
|
9
|
+
React.createElement("svg", { width: "14", height: "15", viewBox: "0 0 14 15", fill: "none", xmlns: "http://www.w3.org/2000/svg" },
|
|
10
|
+
React.createElement("path", { d: "M13.5967 4.4707C13.7106 4.66211 13.8063 4.90137 13.8838 5.18848C13.9613 5.47559 14 5.72852 14 5.94727V8.05273C14 8.2806 13.9339 8.48568 13.8018 8.66797C13.6696 8.8457 13.5033 8.96875 13.3027 9.03711V13.6514C13.3027 13.9385 13.2002 14.1846 12.9951 14.3896C12.79 14.5947 12.5417 14.6973 12.25 14.6973H1.75C1.45833 14.6973 1.20996 14.5947 1.00488 14.3896C0.799805 14.1846 0.697266 13.9385 0.697266 13.6514V9.03711C0.496745 8.96875 0.330404 8.8457 0.198242 8.66797C0.0660807 8.48568 0 8.2806 0 8.05273V5.94727C0 5.72852 0.038737 5.47559 0.116211 5.18848C0.193685 4.90137 0.289388 4.66211 0.40332 4.4707L2.14648 1.47656C2.27409 1.25781 2.46777 1.07324 2.72754 0.922852C2.9873 0.772461 3.24479 0.697266 3.5 0.697266H10.5C10.7552 0.697266 11.0127 0.772461 11.2725 0.922852C11.5322 1.07324 11.7259 1.25781 11.8535 1.47656L13.5967 4.4707ZM2.74805 1.83203L1.00488 4.81934C0.995768 4.83301 0.986654 4.84668 0.977539 4.86035C0.972982 4.87402 0.968424 4.8877 0.963867 4.90137C0.977539 4.90137 0.991211 4.90137 1.00488 4.90137C1.01855 4.90137 1.03451 4.90137 1.05273 4.90137H12.9473C12.9655 4.90137 12.9814 4.90137 12.9951 4.90137C13.0088 4.90137 13.0225 4.90137 13.0361 4.90137C13.0316 4.8877 13.0247 4.87402 13.0156 4.86035C13.0111 4.84668 13.0042 4.83301 12.9951 4.81934L11.252 1.83203C11.1836 1.7181 11.0742 1.61784 10.9238 1.53125C10.7734 1.44466 10.6322 1.40137 10.5 1.40137H3.5C3.36784 1.40137 3.22656 1.44466 3.07617 1.53125C2.92578 1.61784 2.81641 1.7181 2.74805 1.83203ZM12.25 14C12.3457 14 12.4277 13.9658 12.4961 13.8975C12.5645 13.8291 12.5986 13.7471 12.5986 13.6514V9.09863H1.40137V13.6514C1.40137 13.7471 1.43555 13.8291 1.50391 13.8975C1.57227 13.9658 1.6543 14 1.75 14H12.25ZM13.3027 8.05273V5.94727C13.3027 5.85156 13.2686 5.76953 13.2002 5.70117C13.1318 5.63281 13.0475 5.59863 12.9473 5.59863H1.05273C0.952474 5.59863 0.868164 5.63281 0.799805 5.70117C0.731445 5.76953 0.697266 5.85156 0.697266 5.94727V8.05273C0.697266 8.14844 0.731445 8.23047 0.799805 8.29883C0.868164 8.36719 0.952474 8.40137 1.05273 8.40137H12.9473C13.0475 8.40137 13.1318 8.36719 13.2002 8.29883C13.2686 8.23047 13.3027 8.14844 13.3027 8.05273ZM8.75 11.9014C9.04167 11.9014 9.29004 11.7988 9.49512 11.5938C9.7002 11.3887 9.80273 11.1403 9.80273 10.8486C9.80273 10.5615 9.7002 10.3154 9.49512 10.1104C9.29004 9.90527 9.04167 9.80273 8.75 9.80273H5.25C4.95833 9.80273 4.70996 9.90527 4.50488 10.1104C4.2998 10.3154 4.19727 10.5615 4.19727 10.8486C4.19727 11.1403 4.2998 11.3887 4.50488 11.5938C4.70996 11.7988 4.95833 11.9014 5.25 11.9014H8.75ZM5.25 10.5H8.75C8.8457 10.5 8.92773 10.5342 8.99609 10.6025C9.06445 10.6709 9.09863 10.7529 9.09863 10.8486C9.09863 10.9443 9.06445 11.0264 8.99609 11.0947C8.92773 11.1631 8.8457 11.1973 8.75 11.1973H5.25C5.1543 11.1973 5.07227 11.1631 5.00391 11.0947C4.93555 11.0264 4.90137 10.9443 4.90137 10.8486C4.90137 10.7529 4.93555 10.6709 5.00391 10.6025C5.07227 10.5342 5.1543 10.5 5.25 10.5Z", fill: "#B0BECA" })))));
|
|
11
|
+
};
|
|
12
|
+
export const DataSourceItem = ({ dataSource, subjectType, onChange, onDelete, renderDataSourceIcon, }) => {
|
|
13
|
+
const { isDropdownOpen, toggleDropdown } = usePermissionsDropdownState();
|
|
14
|
+
const itemClassName = cx("s-user-management-data-source-item", "gd-share-dialog-grantee-item", {
|
|
15
|
+
"is-active": isDropdownOpen,
|
|
16
|
+
});
|
|
17
|
+
return (React.createElement("div", { className: itemClassName },
|
|
18
|
+
React.createElement(PermissionsDropdown, { dataSource: dataSource, subjectType: subjectType, isDropdownOpen: isDropdownOpen, toggleDropdown: toggleDropdown, onChange: onChange, onDelete: onDelete, className: "gd-grantee-granular-permission" }),
|
|
19
|
+
React.createElement("div", { className: "gd-grantee-content" },
|
|
20
|
+
React.createElement("div", { className: "gd-grantee-content-label" }, dataSource.title)),
|
|
21
|
+
renderDataSourceIcon ? renderDataSourceIcon(dataSource) : React.createElement(DataSourceIcon, null)));
|
|
22
|
+
};
|
|
23
|
+
//# sourceMappingURL=DataSourceItem.js.map
|
package/esm/internal/components/dialogs/userManagementDialogs/DataSources/DataSourceItem.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DataSourceItem.js","sourceRoot":"","sources":["../../../../../../src/internal/components/dialogs/userManagementDialogs/DataSources/DataSourceItem.tsx"],"names":[],"mappings":"AAAA,qCAAqC;AAErC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,YAAY,CAAC;AAI5B,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAC/E,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,MAAM,cAAc,GAAa,GAAG,EAAE;IAClC,OAAO,CACH,6BAAK,SAAS,EAAC,sCAAsC;QACjD,8BAAM,SAAS,EAAC,gDAAgD;YAC5D,6BACI,KAAK,EAAC,IAAI,EACV,MAAM,EAAC,IAAI,EACX,OAAO,EAAC,WAAW,EACnB,IAAI,EAAC,MAAM,EACX,KAAK,EAAC,4BAA4B;gBAElC,8BACI,CAAC,EAAC,61FAA61F,EAC/1F,IAAI,EAAC,SAAS,GAChB,CACA,CACH,CACL,CACT,CAAC;AACN,CAAC,CAAC;AAUF,MAAM,CAAC,MAAM,cAAc,GAAiD,CAAC,EACzE,UAAU,EACV,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,oBAAoB,GACvB,EAAE,EAAE;IACD,MAAM,EAAE,cAAc,EAAE,cAAc,EAAE,GAAG,2BAA2B,EAAE,CAAC;IACzE,MAAM,aAAa,GAAG,EAAE,CAAC,oCAAoC,EAAE,8BAA8B,EAAE;QAC3F,WAAW,EAAE,cAAc;KAC9B,CAAC,CAAC;IAEH,OAAO,CACH,6BAAK,SAAS,EAAE,aAAa;QACzB,oBAAC,mBAAmB,IAChB,UAAU,EAAE,UAAU,EACtB,WAAW,EAAE,WAAW,EACxB,cAAc,EAAE,cAAc,EAC9B,cAAc,EAAE,cAAc,EAC9B,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAC,gCAAgC,GAC5C;QACF,6BAAK,SAAS,EAAC,oBAAoB;YAC/B,6BAAK,SAAS,EAAC,0BAA0B,IAAE,UAAU,CAAC,KAAK,CAAO,CAChE;QACL,oBAAoB,CAAC,CAAC,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,oBAAC,cAAc,OAAG,CAC3E,CACT,CAAC;AACN,CAAC,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { IGrantedDataSource, ListMode, WorkspacePermissionSubject } from "../types.js";
|
|
3
|
+
export interface IDataSourceListProps {
|
|
4
|
+
dataSources: IGrantedDataSource[];
|
|
5
|
+
subjectType: WorkspacePermissionSubject;
|
|
6
|
+
mode: ListMode;
|
|
7
|
+
onDelete: (workspace: IGrantedDataSource) => void;
|
|
8
|
+
onChange?: (workspace: IGrantedDataSource) => void;
|
|
9
|
+
renderDataSourceIcon: (dataSource: IGrantedDataSource) => JSX.Element;
|
|
10
|
+
}
|
|
11
|
+
export declare const DataSourceList: React.FC<IDataSourceListProps>;
|
|
12
|
+
//# sourceMappingURL=DataSourceList.d.ts.map
|
package/esm/internal/components/dialogs/userManagementDialogs/DataSources/DataSourceList.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DataSourceList.d.ts","sourceRoot":"","sources":["../../../../../../src/internal/components/dialogs/userManagementDialogs/DataSources/DataSourceList.tsx"],"names":[],"mappings":"AACA,OAAO,KAAkB,MAAM,OAAO,CAAC;AAGvC,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AAKvF,MAAM,WAAW,oBAAoB;IACjC,WAAW,EAAE,kBAAkB,EAAE,CAAC;IAClC,WAAW,EAAE,0BAA0B,CAAC;IACxC,IAAI,EAAE,QAAQ,CAAC;IACf,QAAQ,EAAE,CAAC,SAAS,EAAE,kBAAkB,KAAK,IAAI,CAAC;IAClD,QAAQ,CAAC,EAAE,CAAC,SAAS,EAAE,kBAAkB,KAAK,IAAI,CAAC;IACnD,oBAAoB,EAAE,CAAC,UAAU,EAAE,kBAAkB,KAAK,GAAG,CAAC,OAAO,CAAC;CACzE;AAED,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CAgCzD,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
// (C) 2021-2024 GoodData Corporation
|
|
2
|
+
import React, { useMemo } from "react";
|
|
3
|
+
import { sortByName } from "../utils.js";
|
|
4
|
+
import { DataSourceItem } from "./DataSourceItem.js";
|
|
5
|
+
import { DataSourceListEmpty } from "./DataSourceListEmpty.js";
|
|
6
|
+
export const DataSourceList = ({ dataSources, subjectType, mode, onChange, onDelete, renderDataSourceIcon, }) => {
|
|
7
|
+
const sortedDataSources = useMemo(() => {
|
|
8
|
+
return dataSources ? [...dataSources].sort(sortByName) : [];
|
|
9
|
+
}, [dataSources]);
|
|
10
|
+
if (sortedDataSources.length === 0) {
|
|
11
|
+
return React.createElement(DataSourceListEmpty, { mode: mode, subjectType: subjectType });
|
|
12
|
+
}
|
|
13
|
+
return (React.createElement("div", { className: "gd-share-dialog-grantee-list s-user-management-data-sources" }, sortedDataSources.map((dataSource) => {
|
|
14
|
+
return (React.createElement(DataSourceItem, { key: dataSource.id, dataSource: dataSource, subjectType: subjectType, onChange: onChange, onDelete: onDelete, renderDataSourceIcon: renderDataSourceIcon }));
|
|
15
|
+
})));
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=DataSourceList.js.map
|
package/esm/internal/components/dialogs/userManagementDialogs/DataSources/DataSourceList.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DataSourceList.js","sourceRoot":"","sources":["../../../../../../src/internal/components/dialogs/userManagementDialogs/DataSources/DataSourceList.tsx"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,OAAO,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAW/D,MAAM,CAAC,MAAM,cAAc,GAAmC,CAAC,EAC3D,WAAW,EACX,WAAW,EACX,IAAI,EACJ,QAAQ,EACR,QAAQ,EACR,oBAAoB,GACvB,EAAE,EAAE;IACD,MAAM,iBAAiB,GAAG,OAAO,CAAC,GAAG,EAAE;QACnC,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAChE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;IAElB,IAAI,iBAAiB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjC,OAAO,oBAAC,mBAAmB,IAAC,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,GAAI,CAAC;IACzE,CAAC;IAED,OAAO,CACH,6BAAK,SAAS,EAAC,6DAA6D,IACvE,iBAAiB,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE;QAClC,OAAO,CACH,oBAAC,cAAc,IACX,GAAG,EAAE,UAAU,CAAC,EAAE,EAClB,UAAU,EAAE,UAAU,EACtB,WAAW,EAAE,WAAW,EACxB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAClB,oBAAoB,EAAE,oBAAoB,GAC5C,CACL,CAAC;IACN,CAAC,CAAC,CACA,CACT,CAAC;AACN,CAAC,CAAC"}
|
package/esm/internal/components/dialogs/userManagementDialogs/DataSources/DataSourceListEmpty.d.ts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { ListMode, WorkspacePermissionSubject } from "../types.js";
|
|
3
|
+
export interface IDataSourceListEmptyProps {
|
|
4
|
+
mode: ListMode;
|
|
5
|
+
subjectType: WorkspacePermissionSubject;
|
|
6
|
+
}
|
|
7
|
+
export declare const DataSourceListEmpty: React.FC<IDataSourceListEmptyProps>;
|
|
8
|
+
//# sourceMappingURL=DataSourceListEmpty.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DataSourceListEmpty.d.ts","sourceRoot":"","sources":["../../../../../../src/internal/components/dialogs/userManagementDialogs/DataSources/DataSourceListEmpty.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EAAE,QAAQ,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AAGnE,MAAM,WAAW,yBAAyB;IACtC,IAAI,EAAE,QAAQ,CAAC;IACf,WAAW,EAAE,0BAA0B,CAAC;CAC3C;AAED,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC,yBAAyB,CAenE,CAAC"}
|
package/esm/internal/components/dialogs/userManagementDialogs/DataSources/DataSourceListEmpty.js
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
// (C) 2021-2024 GoodData Corporation
|
|
2
|
+
import React from "react";
|
|
3
|
+
import { useIntl } from "react-intl";
|
|
4
|
+
import { messages } from "../locales.js";
|
|
5
|
+
export const DataSourceListEmpty = ({ mode, subjectType }) => {
|
|
6
|
+
const intl = useIntl();
|
|
7
|
+
return (React.createElement("div", { className: "gd-share-dialog-grantee-list-empty-selection s-user-management-empty-selection gd-user-management-dialog-list-empty" },
|
|
8
|
+
React.createElement("span", null,
|
|
9
|
+
mode === "VIEW" &&
|
|
10
|
+
subjectType === "user" &&
|
|
11
|
+
intl.formatMessage(messages.viewUserDataSourceListEmpty),
|
|
12
|
+
mode === "VIEW" &&
|
|
13
|
+
subjectType === "userGroup" &&
|
|
14
|
+
intl.formatMessage(messages.viewUserGroupDataSourceListEmpty),
|
|
15
|
+
mode === "EDIT" && intl.formatMessage(messages.editDataSourceListEmpty))));
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=DataSourceListEmpty.js.map
|
package/esm/internal/components/dialogs/userManagementDialogs/DataSources/DataSourceListEmpty.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DataSourceListEmpty.js","sourceRoot":"","sources":["../../../../../../src/internal/components/dialogs/userManagementDialogs/DataSources/DataSourceListEmpty.tsx"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAGrC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAOzC,MAAM,CAAC,MAAM,mBAAmB,GAAwC,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE;IAC9F,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;IACvB,OAAO,CACH,6BAAK,SAAS,EAAC,qHAAqH;QAChI;YACK,IAAI,KAAK,MAAM;gBACZ,WAAW,KAAK,MAAM;gBACtB,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,2BAA2B,CAAC;YAC3D,IAAI,KAAK,MAAM;gBACZ,WAAW,KAAK,WAAW;gBAC3B,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,gCAAgC,CAAC;YAChE,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CACrE,CACL,CACT,CAAC;AACN,CAAC,CAAC"}
|
package/esm/internal/components/dialogs/userManagementDialogs/DataSources/PermissionsDropdown.d.ts
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { IGrantedDataSource, DataSourcePermissionSubject } from "../types.js";
|
|
3
|
+
interface IGranularPermissionsDropdownProps {
|
|
4
|
+
dataSource: IGrantedDataSource;
|
|
5
|
+
subjectType: DataSourcePermissionSubject;
|
|
6
|
+
isDropdownDisabled?: boolean;
|
|
7
|
+
isDropdownOpen: boolean;
|
|
8
|
+
toggleDropdown: () => void;
|
|
9
|
+
onChange: (dataSource: IGrantedDataSource) => void;
|
|
10
|
+
onDelete: (dataSource: IGrantedDataSource) => void;
|
|
11
|
+
className: string;
|
|
12
|
+
}
|
|
13
|
+
export declare const PermissionsDropdown: React.FC<IGranularPermissionsDropdownProps & import("@gooddata/sdk-ui-kit").IWithBubbleProps>;
|
|
14
|
+
export {};
|
|
15
|
+
//# sourceMappingURL=PermissionsDropdown.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PermissionsDropdown.d.ts","sourceRoot":"","sources":["../../../../../../src/internal/components/dialogs/userManagementDialogs/DataSources/PermissionsDropdown.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAgC,MAAM,OAAO,CAAC;AAMrD,OAAO,EAGH,kBAAkB,EAClB,2BAA2B,EAC9B,MAAM,aAAa,CAAC;AAiBrB,UAAU,iCAAiC;IACvC,UAAU,EAAE,kBAAkB,CAAC;IAC/B,WAAW,EAAE,2BAA2B,CAAC;IACzC,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,cAAc,EAAE,OAAO,CAAC;IACxB,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,QAAQ,EAAE,CAAC,UAAU,EAAE,kBAAkB,KAAK,IAAI,CAAC;IACnD,QAAQ,EAAE,CAAC,UAAU,EAAE,kBAAkB,KAAK,IAAI,CAAC;IACnD,SAAS,EAAE,MAAM,CAAC;CACrB;AA8FD,eAAO,MAAM,mBAAmB,+FAAuB,CAAC"}
|
package/esm/internal/components/dialogs/userManagementDialogs/DataSources/PermissionsDropdown.js
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
// (C) 2023-2024 GoodData Corporation
|
|
2
|
+
import React, { useCallback, useState } from "react";
|
|
3
|
+
import { useIntl } from "react-intl";
|
|
4
|
+
import cx from "classnames";
|
|
5
|
+
import { withBubble } from "@gooddata/sdk-ui-kit";
|
|
6
|
+
import { stringUtils } from "@gooddata/util";
|
|
7
|
+
import { useTelemetry } from "../TelemetryContext.js";
|
|
8
|
+
import { dataSourcePermissionMessages } from "./locales.js";
|
|
9
|
+
import { PermissionsDropdownList } from "./PermissionsDropdownList.js";
|
|
10
|
+
const items = [
|
|
11
|
+
{
|
|
12
|
+
id: "MANAGE",
|
|
13
|
+
enabled: true,
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
id: "USE",
|
|
17
|
+
enabled: true,
|
|
18
|
+
},
|
|
19
|
+
];
|
|
20
|
+
const trackPermissionChange = (trackEvent, subjectType, permission) => {
|
|
21
|
+
switch (permission) {
|
|
22
|
+
case "USE":
|
|
23
|
+
trackEvent(subjectType === "user"
|
|
24
|
+
? "user-data-source-permission-changed-to-use"
|
|
25
|
+
: "group-data-source-permission-changed-to-use");
|
|
26
|
+
break;
|
|
27
|
+
case "MANAGE":
|
|
28
|
+
trackEvent(subjectType === "user"
|
|
29
|
+
? "user-data-source-permission-changed-to-manage"
|
|
30
|
+
: "group-data-source-permission-changed-to-manage");
|
|
31
|
+
break;
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
const Dropdown = ({ dataSource, subjectType, isDropdownDisabled, isDropdownOpen, toggleDropdown, onChange, onDelete, className, }) => {
|
|
35
|
+
const intl = useIntl();
|
|
36
|
+
const [selectedPermission, setSelectedPermission] = useState(dataSource.permission);
|
|
37
|
+
const trackEvent = useTelemetry();
|
|
38
|
+
const handleOnSelect = (permission) => {
|
|
39
|
+
onChange({ ...dataSource, permission });
|
|
40
|
+
trackPermissionChange(trackEvent, subjectType, permission);
|
|
41
|
+
setSelectedPermission(permission);
|
|
42
|
+
};
|
|
43
|
+
const handleOnDelete = () => {
|
|
44
|
+
onDelete(dataSource);
|
|
45
|
+
};
|
|
46
|
+
const handleClick = useCallback(() => {
|
|
47
|
+
if (!isDropdownDisabled) {
|
|
48
|
+
toggleDropdown();
|
|
49
|
+
}
|
|
50
|
+
}, [isDropdownDisabled, toggleDropdown]);
|
|
51
|
+
const buttonValue = intl.formatMessage(dataSourcePermissionMessages[selectedPermission]);
|
|
52
|
+
return (React.createElement("div", { className: className },
|
|
53
|
+
React.createElement("div", { className: cx("s-user-management-permission-button", "gd-granular-permission-button", "dropdown-button", `gd-granular-permission-button-${stringUtils.simplifyText(dataSource.id)}`, {
|
|
54
|
+
"is-active": isDropdownOpen,
|
|
55
|
+
"gd-icon-navigateup": !isDropdownDisabled && isDropdownOpen,
|
|
56
|
+
"gd-icon-navigatedown": !isDropdownDisabled && !isDropdownOpen,
|
|
57
|
+
disabled: isDropdownDisabled,
|
|
58
|
+
"gd-icon-right": !isDropdownDisabled,
|
|
59
|
+
}), onClick: handleClick, "aria-label": "Share dialog granular permissions button" },
|
|
60
|
+
React.createElement("div", { className: "s-user-management-button-title gd-granular-permission-button-title" }, buttonValue)),
|
|
61
|
+
React.createElement(PermissionsDropdownList, { selectedPermission: selectedPermission, items: items, subjectType: subjectType, onSelect: handleOnSelect, onDelete: handleOnDelete, toggleDropdown: toggleDropdown, isShowDropdown: isDropdownOpen, alignTo: `.gd-granular-permission-button-${stringUtils.simplifyText(dataSource.id)}` })));
|
|
62
|
+
};
|
|
63
|
+
export const PermissionsDropdown = withBubble(Dropdown);
|
|
64
|
+
//# sourceMappingURL=PermissionsDropdown.js.map
|
package/esm/internal/components/dialogs/userManagementDialogs/DataSources/PermissionsDropdown.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PermissionsDropdown.js","sourceRoot":"","sources":["../../../../../../src/internal/components/dialogs/userManagementDialogs/DataSources/PermissionsDropdown.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { IDataSourcePermissionsItem, DataSourcePermission } from "../types.js";
|
|
3
|
+
interface IPermissionItemProps {
|
|
4
|
+
permission: IDataSourcePermissionsItem;
|
|
5
|
+
selectedPermission: DataSourcePermission;
|
|
6
|
+
toggleDropdown: () => void;
|
|
7
|
+
onSelect: (permission: DataSourcePermission) => void;
|
|
8
|
+
bubbleTextId: string;
|
|
9
|
+
}
|
|
10
|
+
export declare const PermissionDropdownItem: React.FC<IPermissionItemProps>;
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=PermissionsDropdownItem.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PermissionsDropdownItem.d.ts","sourceRoot":"","sources":["../../../../../../src/internal/components/dialogs/userManagementDialogs/DataSources/PermissionsDropdownItem.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA+B,MAAM,OAAO,CAAC;AAIpD,OAAO,EAAE,0BAA0B,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAK/E,UAAU,oBAAoB;IAC1B,UAAU,EAAE,0BAA0B,CAAC;IACvC,kBAAkB,EAAE,oBAAoB,CAAC;IACzC,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,QAAQ,EAAE,CAAC,UAAU,EAAE,oBAAoB,KAAK,IAAI,CAAC;IACrD,YAAY,EAAE,MAAM,CAAC;CACxB;AAED,eAAO,MAAM,sBAAsB,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CAuCjE,CAAC"}
|
package/esm/internal/components/dialogs/userManagementDialogs/DataSources/PermissionsDropdownItem.js
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
// (C) 2023-2024 GoodData Corporation
|
|
2
|
+
import React, { useCallback, useMemo } from "react";
|
|
3
|
+
import { useIntl } from "react-intl";
|
|
4
|
+
import cx from "classnames";
|
|
5
|
+
import { dataSourcePermissionMessages } from "./locales.js";
|
|
6
|
+
import { QuestionMarkIcon } from "./QuestionMarkIcon.js";
|
|
7
|
+
export const PermissionDropdownItem = ({ permission, selectedPermission, toggleDropdown, onSelect, bubbleTextId, }) => {
|
|
8
|
+
const intl = useIntl();
|
|
9
|
+
const handleOnChange = useCallback(() => {
|
|
10
|
+
if (permission.enabled) {
|
|
11
|
+
toggleDropdown();
|
|
12
|
+
onSelect(permission.id);
|
|
13
|
+
}
|
|
14
|
+
}, [permission, onSelect, toggleDropdown]);
|
|
15
|
+
const isSelected = useMemo(() => permission.id === selectedPermission, [permission, selectedPermission]);
|
|
16
|
+
return (React.createElement("div", { onClick: handleOnChange, className: cx("gd-list-item", "gd-menu-item", "gd-granular-permission-select-item", "gd-user-management-permission-item", "s-user-management-permission-item", {
|
|
17
|
+
"is-disabled": !permission.enabled,
|
|
18
|
+
"is-selected": isSelected,
|
|
19
|
+
}) },
|
|
20
|
+
React.createElement("div", null, intl.formatMessage(dataSourcePermissionMessages[permission.id])),
|
|
21
|
+
React.createElement("div", { className: "gd-user-management-help-icon-wrapper" },
|
|
22
|
+
React.createElement(QuestionMarkIcon, { bubbleTextId: bubbleTextId }))));
|
|
23
|
+
};
|
|
24
|
+
//# sourceMappingURL=PermissionsDropdownItem.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PermissionsDropdownItem.js","sourceRoot":"","sources":["../../../../../../src/internal/components/dialogs/userManagementDialogs/DataSources/PermissionsDropdownItem.tsx"],"names":[],"mappings":"AAAA,qCAAqC;AAErC,OAAO,KAAK,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,MAAM,YAAY,CAAC;AAI5B,OAAO,EAAE,4BAA4B,EAAE,MAAM,cAAc,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAUzD,MAAM,CAAC,MAAM,sBAAsB,GAAmC,CAAC,EACnE,UAAU,EACV,kBAAkB,EAClB,cAAc,EACd,QAAQ,EACR,YAAY,GACf,EAAE,EAAE;IACD,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;IAEvB,MAAM,cAAc,GAAG,WAAW,CAAC,GAAG,EAAE;QACpC,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;YACrB,cAAc,EAAE,CAAC;YACjB,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QAC5B,CAAC;IACL,CAAC,EAAE,CAAC,UAAU,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC;IAE3C,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,EAAE,KAAK,kBAAkB,EAAE,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAC,CAAC;IAEzG,OAAO,CACH,6BACI,OAAO,EAAE,cAAc,EACvB,SAAS,EAAE,EAAE,CACT,cAAc,EACd,cAAc,EACd,oCAAoC,EACpC,oCAAoC,EACpC,mCAAmC,EACnC;YACI,aAAa,EAAE,CAAC,UAAU,CAAC,OAAO;YAClC,aAAa,EAAE,UAAU;SAC5B,CACJ;QAED,iCAAM,IAAI,CAAC,aAAa,CAAC,4BAA4B,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAO;QAC5E,6BAAK,SAAS,EAAC,sCAAsC;YACjD,oBAAC,gBAAgB,IAAC,YAAY,EAAE,YAAY,GAAI,CAC9C,CACJ,CACT,CAAC;AACN,CAAC,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { IDataSourcePermissionsItem, DataSourcePermission, DataSourcePermissionSubject } from "../types.js";
|
|
3
|
+
interface IGranularPermissionsDropdownBodyProps {
|
|
4
|
+
alignTo: string;
|
|
5
|
+
subjectType: DataSourcePermissionSubject;
|
|
6
|
+
selectedPermission: DataSourcePermission;
|
|
7
|
+
items: IDataSourcePermissionsItem[];
|
|
8
|
+
isShowDropdown: boolean;
|
|
9
|
+
toggleDropdown: () => void;
|
|
10
|
+
onSelect: (permission: DataSourcePermission) => void;
|
|
11
|
+
onDelete: () => void;
|
|
12
|
+
}
|
|
13
|
+
export declare const PermissionsDropdownList: React.FC<IGranularPermissionsDropdownBodyProps>;
|
|
14
|
+
export {};
|
|
15
|
+
//# sourceMappingURL=PermissionsDropdownList.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PermissionsDropdownList.d.ts","sourceRoot":"","sources":["../../../../../../src/internal/components/dialogs/userManagementDialogs/DataSources/PermissionsDropdownList.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAsB,MAAM,OAAO,CAAC;AAK3C,OAAO,EAAE,0BAA0B,EAAE,oBAAoB,EAAE,2BAA2B,EAAE,MAAM,aAAa,CAAC;AAe5G,UAAU,qCAAqC;IAC3C,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,2BAA2B,CAAC;IACzC,kBAAkB,EAAE,oBAAoB,CAAC;IACzC,KAAK,EAAE,0BAA0B,EAAE,CAAC;IACpC,cAAc,EAAE,OAAO,CAAC;IACxB,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,QAAQ,EAAE,CAAC,UAAU,EAAE,oBAAoB,KAAK,IAAI,CAAC;IACrD,QAAQ,EAAE,MAAM,IAAI,CAAC;CACxB;AAqBD,eAAO,MAAM,uBAAuB,EAAE,KAAK,CAAC,EAAE,CAAC,qCAAqC,CA0DnF,CAAC"}
|