|
|
@@ -112,18 +112,16 @@ |
|
|
|
<IconChevronDown :size="20" /> |
|
|
|
</template> |
|
|
|
<template #default> |
|
|
|
<!-- TODO use NcActionRadio if it provides long text, e.g. subtitle --> |
|
|
|
<NcActionButton v-for="channel,index in channelList" |
|
|
|
:key="index" |
|
|
|
:aria-checked="channel.active ? 'true' : 'false'" |
|
|
|
:aria-label="channel.text" |
|
|
|
:disabled="!!channel.disabled" |
|
|
|
<NcActionButton v-for="channel in channelList" |
|
|
|
:key="channel.value" |
|
|
|
:disabled="channel.disabled" |
|
|
|
:icon="channel.icon" |
|
|
|
:name="channel.text" |
|
|
|
class="update-channel-action" |
|
|
|
:value="channel.value" |
|
|
|
:model-value="currentChannel" |
|
|
|
type="radio" |
|
|
|
close-after-click |
|
|
|
role="menuitemradio" |
|
|
|
@click="channel.action"> |
|
|
|
@update:modelValue="changeReleaseChannel"> |
|
|
|
{{ channel.longtext }} |
|
|
|
</NcActionButton> |
|
|
|
</template> |
|
|
@@ -274,41 +272,34 @@ export default { |
|
|
|
icon: 'icon-star', |
|
|
|
active: this.currentChannel === 'enterprise', |
|
|
|
disabled: !this.hasValidSubscription, |
|
|
|
action: this.changeReleaseChannelToEnterprise, |
|
|
|
value: 'enterprise', |
|
|
|
}) |
|
|
|
|
|
|
|
channelList.push({ |
|
|
|
text: t('updatenotification', 'Stable'), |
|
|
|
longtext: t('updatenotification', 'The most recent stable version. It is suited for regular use and will always update to the latest major version.'), |
|
|
|
icon: 'icon-checkmark', |
|
|
|
active: this.currentChannel === 'stable', |
|
|
|
action: this.changeReleaseChannelToStable, |
|
|
|
value: 'stable', |
|
|
|
}) |
|
|
|
|
|
|
|
channelList.push({ |
|
|
|
text: t('updatenotification', 'Beta'), |
|
|
|
longtext: t('updatenotification', 'A pre-release version only for testing new features, not for production environments.'), |
|
|
|
icon: 'icon-category-customization', |
|
|
|
active: this.currentChannel === 'beta', |
|
|
|
action: this.changeReleaseChannelToBeta, |
|
|
|
value: 'beta', |
|
|
|
}) |
|
|
|
|
|
|
|
if (this.isNonDefaultChannel) { |
|
|
|
if (this.isNonDefaultChannel(this.currentChannel)) { |
|
|
|
channelList.push({ |
|
|
|
text: this.currentChannel, |
|
|
|
icon: 'icon-rename', |
|
|
|
active: true, |
|
|
|
action: () => {}, |
|
|
|
value: this.currentChannel, |
|
|
|
}) |
|
|
|
} |
|
|
|
|
|
|
|
return channelList |
|
|
|
}, |
|
|
|
|
|
|
|
isNonDefaultChannel() { |
|
|
|
return this.currentChannel !== 'enterprise' && this.currentChannel !== 'stable' && this.currentChannel !== 'beta' |
|
|
|
}, |
|
|
|
|
|
|
|
localizedChannelName() { |
|
|
|
switch (this.currentChannel) { |
|
|
|
case 'enterprise': |
|
|
@@ -433,16 +424,16 @@ export default { |
|
|
|
form.submit() |
|
|
|
}) |
|
|
|
}, |
|
|
|
changeReleaseChannelToEnterprise() { |
|
|
|
this.changeReleaseChannel('enterprise') |
|
|
|
}, |
|
|
|
changeReleaseChannelToStable() { |
|
|
|
this.changeReleaseChannel('stable') |
|
|
|
}, |
|
|
|
changeReleaseChannelToBeta() { |
|
|
|
this.changeReleaseChannel('beta') |
|
|
|
|
|
|
|
isNonDefaultChannel(channel) { |
|
|
|
return !['enterprise', 'stable', 'beta'].includes(channel) |
|
|
|
}, |
|
|
|
|
|
|
|
changeReleaseChannel(channel) { |
|
|
|
if (this.isNonDefaultChannel(channel)) { |
|
|
|
return |
|
|
|
} |
|
|
|
|
|
|
|
this.currentChannel = channel |
|
|
|
|
|
|
|
axios.post(generateUrl('/apps/updatenotification/channel'), { |
|
|
@@ -503,46 +494,9 @@ export default { |
|
|
|
.applist { |
|
|
|
margin-bottom: 25px; |
|
|
|
} |
|
|
|
|
|
|
|
.update-menu { |
|
|
|
position: relative; |
|
|
|
cursor: pointer; |
|
|
|
margin-left: 3px; |
|
|
|
display: inline-block; |
|
|
|
padding: 10px; |
|
|
|
border-radius: 10px; |
|
|
|
border: 2px solid var(--color-border-dark); |
|
|
|
.icon-update-menu { |
|
|
|
cursor: inherit; |
|
|
|
.icon-triangle-s { |
|
|
|
display: inline-block; |
|
|
|
vertical-align: middle; |
|
|
|
cursor: inherit; |
|
|
|
opacity: 1; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
</style> |
|
|
|
<style lang="scss"> |
|
|
|
// Make current selected update channel visually visible, remove if NcActionRadio is used |
|
|
|
.update-channel-action[aria-checked=true] { |
|
|
|
border-inline-start: 4px solid var(--color-primary-element); |
|
|
|
|
|
|
|
&:hover, &:focus-within { |
|
|
|
background-color: var(--color-primary-element-light-hover); |
|
|
|
} |
|
|
|
|
|
|
|
button { |
|
|
|
background-color: var(--color-primary-element-light); |
|
|
|
color: var(--color-primary-element-light-text); |
|
|
|
} |
|
|
|
} |
|
|
|
// Ensure outline for focus-visible works even with background color of selected channel |
|
|
|
.update-channel-action[aria-checked] { |
|
|
|
margin-block: 2px; |
|
|
|
} |
|
|
|
|
|
|
|
#updatenotification { |
|
|
|
/* override needed to replace yellow hover state with a dark one */ |
|
|
|
.update-menu .icon-star:hover, |