diff --git a/components/sharing-dialog/src/sharing-dialog.js b/components/sharing-dialog/src/sharing-dialog.js
index e5412d72c..7c271e510 100644
--- a/components/sharing-dialog/src/sharing-dialog.js
+++ b/components/sharing-dialog/src/sharing-dialog.js
@@ -91,6 +91,7 @@ export const SharingDialog = ({
initialSharingSettings = defaultInitialSharingSettings,
dataTest = 'dhis2-uicore-sharingdialog',
dataSharing = false,
+ cascadeDashboardSharing = true,
}) => {
const { show: showError } = useAlert((error) => error, { critical: true })
const mappedInitialSharingSettings = mapInitialSharingSettings(
@@ -161,6 +162,7 @@ export const SharingDialog = ({
onChange={() => {}}
onRemove={() => {}}
dataSharing={dataSharing}
+ cascadeDashboardSharing={cascadeDashboardSharing}
/>
@@ -224,6 +226,7 @@ export const SharingDialog = ({
onChange={onChange}
onRemove={onRemove}
dataSharing={dataSharing}
+ cascadeDashboardSharing={cascadeDashboardSharing}
/>
@@ -235,6 +238,8 @@ SharingDialog.propTypes = {
id: PropTypes.string.isRequired,
/** The type of object to share */
type: PropTypes.oneOf(DIALOG_TYPES_LIST).isRequired,
+ /** Whether to show the tabbed sharing interface for applying cascade sharing of dashboard items */
+ cascadeDashboardSharing: PropTypes.bool,
/** Whether to expose the ability to set data sharing (in addition to metadata sharing) */
dataSharing: PropTypes.bool,
dataTest: PropTypes.string,
diff --git a/components/sharing-dialog/src/sharing-dialog.prod.stories.js b/components/sharing-dialog/src/sharing-dialog.prod.stories.js
index 232f09dd9..9d95d3cce 100644
--- a/components/sharing-dialog/src/sharing-dialog.prod.stories.js
+++ b/components/sharing-dialog/src/sharing-dialog.prod.stories.js
@@ -259,6 +259,18 @@ ForDashboardWithCascadeSharingPartialSuccess.storyName =
'For dashboard with cascading sharing partial success'
ForDashboardWithCascadeSharingPartialSuccess.args = { type: 'dashboard' }
+export const ForDashboardWithoutCascadeSharing = (args) => (
+
+
+
+)
+ForDashboardWithoutCascadeSharing.storyName =
+ 'For dashboard without cascading sharing (embedded dashboard)'
+ForDashboardWithoutCascadeSharing.args = {
+ type: 'dashboard',
+ cascadeDashboardSharing: false,
+}
+
export const RTL = (args) => {
useEffect(() => {
document.body.dir = 'rtl'
diff --git a/components/sharing-dialog/src/tabs/tabbed-content.js b/components/sharing-dialog/src/tabs/tabbed-content.js
index 76de4ffec..251656f6e 100644
--- a/components/sharing-dialog/src/tabs/tabbed-content.js
+++ b/components/sharing-dialog/src/tabs/tabbed-content.js
@@ -24,10 +24,11 @@ export const TabbedContent = ({
onChange,
onRemove,
dataSharing,
+ cascadeDashboardSharing,
}) => {
const [activeTabIndex, setActiveTabIndex] = useState(0)
- if (type === DIALOG_TYPES.DASHBOARD) {
+ if (type === DIALOG_TYPES.DASHBOARD && cascadeDashboardSharing) {
return (
<>
@@ -91,6 +92,7 @@ export const TabbedContent = ({
TabbedContent.propTypes = {
allowPublicAccess: PropTypes.bool.isRequired,
+ cascadeDashboardSharing: PropTypes.bool.isRequired,
dataSharing: PropTypes.bool.isRequired,
groups: PropTypes.arrayOf(
PropTypes.shape({
diff --git a/components/sharing-dialog/types/index.d.ts b/components/sharing-dialog/types/index.d.ts
index 90b68873e..5a77ac7e6 100644
--- a/components/sharing-dialog/types/index.d.ts
+++ b/components/sharing-dialog/types/index.d.ts
@@ -93,6 +93,7 @@ export interface SharingDialogProps {
*/
initialSharingSettings?: SharingDialogInitialSharingSettings
dataSharing?: boolean
+ cascadeDashboardSharing?: boolean
onClose?: ModalOnCloseEventHandler
onError?: (error: any) => void
onSave?: () => void