@gooddata/sdk-ui-ext 9.8.0-alpha.22 → 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.
Files changed (108) hide show
  1. package/esm/internal/components/dialogs/userManagementDialogs/AddDataSourceToSubjects.d.ts +19 -0
  2. package/esm/internal/components/dialogs/userManagementDialogs/AddDataSourceToSubjects.d.ts.map +1 -0
  3. package/esm/internal/components/dialogs/userManagementDialogs/AddDataSourceToSubjects.js +18 -0
  4. package/esm/internal/components/dialogs/userManagementDialogs/AddDataSourceToSubjects.js.map +1 -0
  5. package/esm/internal/components/dialogs/userManagementDialogs/DataSources/AddDataSource.d.ts +14 -0
  6. package/esm/internal/components/dialogs/userManagementDialogs/DataSources/AddDataSource.d.ts.map +1 -0
  7. package/esm/internal/components/dialogs/userManagementDialogs/DataSources/AddDataSource.js +19 -0
  8. package/esm/internal/components/dialogs/userManagementDialogs/DataSources/AddDataSource.js.map +1 -0
  9. package/esm/internal/components/dialogs/userManagementDialogs/DataSources/AddDataSourceSelect.d.ts +4 -0
  10. package/esm/internal/components/dialogs/userManagementDialogs/DataSources/AddDataSourceSelect.d.ts.map +1 -0
  11. package/esm/internal/components/dialogs/userManagementDialogs/DataSources/AddDataSourceSelect.js +60 -0
  12. package/esm/internal/components/dialogs/userManagementDialogs/DataSources/AddDataSourceSelect.js.map +1 -0
  13. package/esm/internal/components/dialogs/userManagementDialogs/DataSources/AsyncSelectComponents.d.ts +12 -0
  14. package/esm/internal/components/dialogs/userManagementDialogs/DataSources/AsyncSelectComponents.d.ts.map +1 -0
  15. package/esm/internal/components/dialogs/userManagementDialogs/DataSources/AsyncSelectComponents.js +60 -0
  16. package/esm/internal/components/dialogs/userManagementDialogs/DataSources/AsyncSelectComponents.js.map +1 -0
  17. package/esm/internal/components/dialogs/userManagementDialogs/DataSources/DataSourceItem.d.ts +12 -0
  18. package/esm/internal/components/dialogs/userManagementDialogs/DataSources/DataSourceItem.d.ts.map +1 -0
  19. package/esm/internal/components/dialogs/userManagementDialogs/DataSources/DataSourceItem.js +23 -0
  20. package/esm/internal/components/dialogs/userManagementDialogs/DataSources/DataSourceItem.js.map +1 -0
  21. package/esm/internal/components/dialogs/userManagementDialogs/DataSources/DataSourceList.d.ts +12 -0
  22. package/esm/internal/components/dialogs/userManagementDialogs/DataSources/DataSourceList.d.ts.map +1 -0
  23. package/esm/internal/components/dialogs/userManagementDialogs/DataSources/DataSourceList.js +17 -0
  24. package/esm/internal/components/dialogs/userManagementDialogs/DataSources/DataSourceList.js.map +1 -0
  25. package/esm/internal/components/dialogs/userManagementDialogs/DataSources/DataSourceListEmpty.d.ts +8 -0
  26. package/esm/internal/components/dialogs/userManagementDialogs/DataSources/DataSourceListEmpty.d.ts.map +1 -0
  27. package/esm/internal/components/dialogs/userManagementDialogs/DataSources/DataSourceListEmpty.js +17 -0
  28. package/esm/internal/components/dialogs/userManagementDialogs/DataSources/DataSourceListEmpty.js.map +1 -0
  29. package/esm/internal/components/dialogs/userManagementDialogs/DataSources/PermissionsDropdown.d.ts +15 -0
  30. package/esm/internal/components/dialogs/userManagementDialogs/DataSources/PermissionsDropdown.d.ts.map +1 -0
  31. package/esm/internal/components/dialogs/userManagementDialogs/DataSources/PermissionsDropdown.js +64 -0
  32. package/esm/internal/components/dialogs/userManagementDialogs/DataSources/PermissionsDropdown.js.map +1 -0
  33. package/esm/internal/components/dialogs/userManagementDialogs/DataSources/PermissionsDropdownItem.d.ts +12 -0
  34. package/esm/internal/components/dialogs/userManagementDialogs/DataSources/PermissionsDropdownItem.d.ts.map +1 -0
  35. package/esm/internal/components/dialogs/userManagementDialogs/DataSources/PermissionsDropdownItem.js +24 -0
  36. package/esm/internal/components/dialogs/userManagementDialogs/DataSources/PermissionsDropdownItem.js.map +1 -0
  37. package/esm/internal/components/dialogs/userManagementDialogs/DataSources/PermissionsDropdownList.d.ts +15 -0
  38. package/esm/internal/components/dialogs/userManagementDialogs/DataSources/PermissionsDropdownList.d.ts.map +1 -0
  39. package/esm/internal/components/dialogs/userManagementDialogs/DataSources/PermissionsDropdownList.js +45 -0
  40. package/esm/internal/components/dialogs/userManagementDialogs/DataSources/PermissionsDropdownList.js.map +1 -0
  41. package/esm/internal/components/dialogs/userManagementDialogs/DataSources/QuestionMarkIcon.d.ts +3 -0
  42. package/esm/internal/components/dialogs/userManagementDialogs/DataSources/QuestionMarkIcon.d.ts.map +1 -0
  43. package/esm/internal/components/dialogs/userManagementDialogs/DataSources/QuestionMarkIcon.js +10 -0
  44. package/esm/internal/components/dialogs/userManagementDialogs/DataSources/QuestionMarkIcon.js.map +1 -0
  45. package/esm/internal/components/dialogs/userManagementDialogs/DataSources/backend/loadUserDataSourceOptionsPromise.d.ts +5 -0
  46. package/esm/internal/components/dialogs/userManagementDialogs/DataSources/backend/loadUserDataSourceOptionsPromise.d.ts.map +1 -0
  47. package/esm/internal/components/dialogs/userManagementDialogs/DataSources/backend/loadUserDataSourceOptionsPromise.js +35 -0
  48. package/esm/internal/components/dialogs/userManagementDialogs/DataSources/backend/loadUserDataSourceOptionsPromise.js.map +1 -0
  49. package/esm/internal/components/dialogs/userManagementDialogs/DataSources/locales.d.ts +12 -0
  50. package/esm/internal/components/dialogs/userManagementDialogs/DataSources/locales.d.ts.map +1 -0
  51. package/esm/internal/components/dialogs/userManagementDialogs/DataSources/locales.js +8 -0
  52. package/esm/internal/components/dialogs/userManagementDialogs/DataSources/locales.js.map +1 -0
  53. package/esm/internal/components/dialogs/userManagementDialogs/DataSources/useAddDataSource.d.ts +11 -0
  54. package/esm/internal/components/dialogs/userManagementDialogs/DataSources/useAddDataSource.d.ts.map +1 -0
  55. package/esm/internal/components/dialogs/userManagementDialogs/DataSources/useAddDataSource.js +82 -0
  56. package/esm/internal/components/dialogs/userManagementDialogs/DataSources/useAddDataSource.js.map +1 -0
  57. package/esm/internal/components/dialogs/userManagementDialogs/DataSources/usePermissionsDropdownState.d.ts +5 -0
  58. package/esm/internal/components/dialogs/userManagementDialogs/DataSources/usePermissionsDropdownState.d.ts.map +1 -0
  59. package/esm/internal/components/dialogs/userManagementDialogs/DataSources/usePermissionsDropdownState.js +8 -0
  60. package/esm/internal/components/dialogs/userManagementDialogs/DataSources/usePermissionsDropdownState.js.map +1 -0
  61. package/esm/internal/components/dialogs/userManagementDialogs/TelemetryContext.d.ts +1 -1
  62. package/esm/internal/components/dialogs/userManagementDialogs/TelemetryContext.d.ts.map +1 -1
  63. package/esm/internal/components/dialogs/userManagementDialogs/TelemetryContext.js +1 -1
  64. package/esm/internal/components/dialogs/userManagementDialogs/TelemetryContext.js.map +1 -1
  65. package/esm/internal/components/dialogs/userManagementDialogs/UserEditDialog.d.ts +2 -1
  66. package/esm/internal/components/dialogs/userManagementDialogs/UserEditDialog.d.ts.map +1 -1
  67. package/esm/internal/components/dialogs/userManagementDialogs/UserEditDialog.js +18 -6
  68. package/esm/internal/components/dialogs/userManagementDialogs/UserEditDialog.js.map +1 -1
  69. package/esm/internal/components/dialogs/userManagementDialogs/UserGroupEditDialog.d.ts +2 -1
  70. package/esm/internal/components/dialogs/userManagementDialogs/UserGroupEditDialog.d.ts.map +1 -1
  71. package/esm/internal/components/dialogs/userManagementDialogs/UserGroupEditDialog.js +17 -5
  72. package/esm/internal/components/dialogs/userManagementDialogs/UserGroupEditDialog.js.map +1 -1
  73. package/esm/internal/components/dialogs/userManagementDialogs/Workspace/AddWorkspace.d.ts.map +1 -1
  74. package/esm/internal/components/dialogs/userManagementDialogs/Workspace/AddWorkspace.js +3 -3
  75. package/esm/internal/components/dialogs/userManagementDialogs/Workspace/AddWorkspace.js.map +1 -1
  76. package/esm/internal/components/dialogs/userManagementDialogs/Workspace/{workspaceHooks.d.ts → useAddWorkspace.d.ts} +2 -2
  77. package/esm/internal/components/dialogs/userManagementDialogs/Workspace/useAddWorkspace.d.ts.map +1 -0
  78. package/esm/internal/components/dialogs/userManagementDialogs/Workspace/useAddWorkspace.js +83 -0
  79. package/esm/internal/components/dialogs/userManagementDialogs/Workspace/useAddWorkspace.js.map +1 -0
  80. package/esm/internal/components/dialogs/userManagementDialogs/dialogHooks.d.ts +3 -9
  81. package/esm/internal/components/dialogs/userManagementDialogs/dialogHooks.d.ts.map +1 -1
  82. package/esm/internal/components/dialogs/userManagementDialogs/dialogHooks.js +22 -92
  83. package/esm/internal/components/dialogs/userManagementDialogs/dialogHooks.js.map +1 -1
  84. package/esm/internal/components/dialogs/userManagementDialogs/hooks/usePermissions.d.ts +12 -0
  85. package/esm/internal/components/dialogs/userManagementDialogs/hooks/usePermissions.d.ts.map +1 -0
  86. package/esm/internal/components/dialogs/userManagementDialogs/hooks/usePermissions.js +133 -0
  87. package/esm/internal/components/dialogs/userManagementDialogs/hooks/usePermissions.js.map +1 -0
  88. package/esm/internal/components/dialogs/userManagementDialogs/index.d.ts +2 -1
  89. package/esm/internal/components/dialogs/userManagementDialogs/index.d.ts.map +1 -1
  90. package/esm/internal/components/dialogs/userManagementDialogs/index.js +2 -1
  91. package/esm/internal/components/dialogs/userManagementDialogs/index.js.map +1 -1
  92. package/esm/internal/components/dialogs/userManagementDialogs/locales.d.ts +57 -0
  93. package/esm/internal/components/dialogs/userManagementDialogs/locales.d.ts.map +1 -1
  94. package/esm/internal/components/dialogs/userManagementDialogs/locales.js +20 -1
  95. package/esm/internal/components/dialogs/userManagementDialogs/locales.js.map +1 -1
  96. package/esm/internal/components/dialogs/userManagementDialogs/types.d.ts +33 -2
  97. package/esm/internal/components/dialogs/userManagementDialogs/types.d.ts.map +1 -1
  98. package/esm/internal/components/dialogs/userManagementDialogs/types.js +4 -1
  99. package/esm/internal/components/dialogs/userManagementDialogs/types.js.map +1 -1
  100. package/esm/internal/components/dialogs/userManagementDialogs/utils.d.ts +10 -2
  101. package/esm/internal/components/dialogs/userManagementDialogs/utils.d.ts.map +1 -1
  102. package/esm/internal/components/dialogs/userManagementDialogs/utils.js +85 -1
  103. package/esm/internal/components/dialogs/userManagementDialogs/utils.js.map +1 -1
  104. package/esm/sdk-ui-ext.d.ts +41 -3
  105. package/package.json +18 -18
  106. package/esm/internal/components/dialogs/userManagementDialogs/Workspace/workspaceHooks.d.ts.map +0 -1
  107. package/esm/internal/components/dialogs/userManagementDialogs/Workspace/workspaceHooks.js +0 -104
  108. 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
@@ -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
@@ -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
@@ -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,4 @@
1
+ import React from "react";
2
+ import { IAddDataSourceSelectProps } from "../types.js";
3
+ export declare const AddDataSourceSelect: React.FC<IAddDataSourceSelectProps>;
4
+ //# sourceMappingURL=AddDataSourceSelect.d.ts.map
@@ -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"}
@@ -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
@@ -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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"}
@@ -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"}
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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"}
@@ -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"}
@@ -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
@@ -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"}
@@ -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"}
@@ -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
@@ -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"}
@@ -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"}