aboutsummaryrefslogtreecommitdiffstats
path: root/apps/dashboard
diff options
context:
space:
mode:
authorJoas Schilling <coding@schilljs.com>2024-07-11 13:22:46 +0200
committerAndy Scherzinger <info@andy-scherzinger.de>2024-07-11 14:18:22 +0200
commit5368b935393c1bd7e192c35498eda9d76ad99ee8 (patch)
tree64270290a88cb563a9b5c805375a6909b99d45b1 /apps/dashboard
parent6acecb6f68301e17274bd84d1c9dbff516b52ead (diff)
downloadnextcloud-server-5368b935393c1bd7e192c35498eda9d76ad99ee8.tar.gz
nextcloud-server-5368b935393c1bd7e192c35498eda9d76ad99ee8.zip
fix(dashboard): Use the widget icon URL when it was provided
Signed-off-by: Joas Schilling <coding@schilljs.com>
Diffstat (limited to 'apps/dashboard')
-rw-r--r--apps/dashboard/lib/Controller/DashboardController.php2
-rw-r--r--apps/dashboard/src/DashboardApp.vue24
2 files changed, 24 insertions, 2 deletions
diff --git a/apps/dashboard/lib/Controller/DashboardController.php b/apps/dashboard/lib/Controller/DashboardController.php
index 9c1ab7813f2..ebd6fdd5ae7 100644
--- a/apps/dashboard/lib/Controller/DashboardController.php
+++ b/apps/dashboard/lib/Controller/DashboardController.php
@@ -15,6 +15,7 @@ use OCP\AppFramework\Http\Attribute\FrontpageRoute;
use OCP\AppFramework\Http\Attribute\OpenAPI;
use OCP\AppFramework\Http\TemplateResponse;
use OCP\AppFramework\Services\IInitialState;
+use OCP\Dashboard\IIconWidget;
use OCP\Dashboard\IManager;
use OCP\Dashboard\IWidget;
use OCP\EventDispatcher\IEventDispatcher;
@@ -54,6 +55,7 @@ class DashboardController extends Controller {
'id' => $widget->getId(),
'title' => $widget->getTitle(),
'iconClass' => $widget->getIconClass(),
+ 'iconUrl' => $widget instanceof IIconWidget ? $widget->getIconUrl() : '',
'url' => $widget->getUrl()
];
}, $this->dashboardManager->getWidgets());
diff --git a/apps/dashboard/src/DashboardApp.vue b/apps/dashboard/src/DashboardApp.vue
index 828b8e9d4f3..aa7f1c04360 100644
--- a/apps/dashboard/src/DashboardApp.vue
+++ b/apps/dashboard/src/DashboardApp.vue
@@ -24,7 +24,12 @@
class="panel">
<div class="panel--header">
<h2>
- <span :aria-labelledby="`panel-${panels[panelId].id}--header--icon--description`"
+ <img v-if="apiWidgets[panels[panelId].id].icon_url"
+ :alt="apiWidgets[panels[panelId].id].title + ' icon'"
+ :src="apiWidgets[panels[panelId].id].icon_url"
+ aria-hidden="true">
+ <span v-else
+ :aria-labelledby="`panel-${panels[panelId].id}--header--icon--description`"
aria-hidden="true"
:class="apiWidgets[panels[panelId].id].icon_class"
role="img" />
@@ -97,7 +102,11 @@
:checked="isActive(panel)"
@input="updateCheckbox(panel, $event.target.checked)">
<label :for="'panel-checkbox-' + panel.id" :class="{ draggable: isActive(panel) }">
- <span :class="panel.iconClass" aria-hidden="true" />
+ <img v-if="panel.iconUrl"
+ :alt="panel.title + ' icon'"
+ :src="panel.iconUrl"
+ aria-hidden="true">
+ <span v-else :class="panel.iconClass" aria-hidden="true" />
{{ panel.title }}
</label>
</li>
@@ -554,6 +563,8 @@ export default {
overflow: hidden;
text-overflow: ellipsis;
cursor: grab;
+
+ img,
span {
background-size: 32px;
width: 32px;
@@ -564,6 +575,10 @@ export default {
margin-top: -6px;
margin-left: 6px;
}
+
+ img {
+ filter: var(--background-invert-if-dark);
+ }
}
}
@@ -651,6 +666,7 @@ export default {
text-overflow: ellipsis;
white-space: nowrap;
+ img,
span {
position: absolute;
top: 16px;
@@ -659,6 +675,10 @@ export default {
background-size: 24px;
}
+ img {
+ filter: var(--background-invert-if-dark);
+ }
+
&:hover {
border-color: var(--color-primary-element);
}