diff --git a/packages/ui/src/components/base/Toggle.vue b/packages/ui/src/components/base/Toggle.vue index a44ef755d4..1de36dc648 100644 --- a/packages/ui/src/components/base/Toggle.vue +++ b/packages/ui/src/components/base/Toggle.vue @@ -3,12 +3,12 @@ :id="id" type="button" role="switch" - :aria-checked="modelValue" + :aria-checked="indeterminate ? 'mixed' : modelValue" :disabled="disabled" class="group inline-flex shrink-0 touch-manipulation items-center rounded-full m-0 p-1 transition-all duration-200 cursor-pointer border-none" :class="[ small ? 'h-5 !w-[40px]' : 'h-6 !w-[48px]', - modelValue ? 'bg-brand' : 'bg-button-bg', + indeterminate || modelValue ? 'bg-brand' : 'bg-button-bg', disabled ? 'opacity-50 cursor-not-allowed' : '', ]" @click="toggle" @@ -16,14 +16,21 @@ @@ -431,14 +448,11 @@ const installTooltip = computed(() => { {{ formatMessage(commonMessages.actionsLabel) diff --git a/packages/ui/src/layouts/shared/content-tab/components/ContentEnabledFor.vue b/packages/ui/src/layouts/shared/content-tab/components/ContentEnabledFor.vue index 51c0ad126f..f1e5a0fe38 100644 --- a/packages/ui/src/layouts/shared/content-tab/components/ContentEnabledFor.vue +++ b/packages/ui/src/layouts/shared/content-tab/components/ContentEnabledFor.vue @@ -17,7 +17,15 @@ const messages = defineMessages({ }, locked: { id: 'content.enabled-for.locked', - defaultMessage: 'Unlock the environment controls from the row menu to change this selection.', + defaultMessage: 'These choices are locked. Select Unlock from the row menu to change them.', + }, + requiredHere: { + id: 'content.enabled-for.required-here', + defaultMessage: 'This content needs to be enabled here to work correctly.', + }, + notSupportedHere: { + id: 'content.enabled-for.not-supported-here', + defaultMessage: "This content isn't designed to be enabled here.", }, }) @@ -50,6 +58,12 @@ function isDisabled(side: ContentSide) { return props.disabled || disabledSides.value.has(side) } +function getDisabledTooltip(side: ContentSide) { + if (props.disabled) return props.disabledTooltip + if (!disabledSides.value.has(side)) return undefined + return formatMessage(isSelected(side) ? messages.requiredHere : messages.notSupportedHere) +} + function toggle(side: ContentSide) { if (isDisabled(side)) return emit('update:model-value', side, !isSelected(side)) @@ -61,11 +75,7 @@ function toggle(side: ContentSide) {