Skip to content

Commit 417bbb5

Browse files
committed
Migrate dashboard widgets to Web Components #1760
1 parent 6ea6de7 commit 417bbb5

File tree

5 files changed

+29
-16
lines changed

5 files changed

+29
-16
lines changed

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ projectName=app.main
66

77
version=8.0.0-SNAPSHOT
88
# xpVersion=version - same as app version
9-
libAdminUiVersion=6.0.0-SNAPSHOT
9+
libAdminUiVersion=0.0.0-webcomponents-SNAPSHOT
1010

1111
# Optimizations
1212
org.gradle.parallel=true

src/main/resources/admin/extensions/shortcuts/shortcuts.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<widget id="widget-shortcuts">
1+
<div id="widget-shortcuts">
22
<script type="module" src="{{jsUrl}}" data-config-script-id="{{configScriptId}}"></script>
33
<link rel="stylesheet" href="{{stylesUrl}}" type="text/css" media="all"/>
44
<div class="widget-shortcuts-container">
@@ -15,4 +15,4 @@
1515
</div>
1616
{{/dashboardIcons}}
1717
</div>
18-
</widget>
18+
</div>
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import {CustomElement} from '@enonic/lib-admin-ui/dom/CustomElement';
2+
3+
export class DashboardExtension extends CustomElement {
4+
static create(): DashboardExtension {
5+
return CustomElement.create('dashboard-extension') as DashboardExtension;
6+
}
7+
}

src/main/resources/assets/js/home/WidgetPanel.ts

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import {LoadMask} from '@enonic/lib-admin-ui/ui/mask/LoadMask';
77
import * as Q from 'q';
88
import {DashboardWidget} from './resource/widget/DashboardWidget';
99
import {GetDashboardWidgetsRequest} from './resource/widget/GetDashboardWidgetsRequest';
10-
import {WidgetElement, WidgetHelper} from '@enonic/lib-admin-ui/widget/WidgetHelper';
10+
import {DashboardExtension} from './DashboardExtension';
1111

1212
export class WidgetPanel
1313
extends DivEl {
@@ -184,17 +184,18 @@ export class WidgetPanel
184184
});
185185
}
186186

187-
private renderWidget(widget: DashboardWidget, widgetContainer: LibAdminElement, html: string): Q.Promise<void> {
188-
return WidgetHelper.createFromHtmlAndAppend(html, widgetContainer)
189-
.then(({el}: WidgetElement) => {
190-
if (widget.hasHeader()) {
191-
el.insertChild(new H5El('widget-header').setHtml(widget.getDisplayName()), 0);
192-
}
187+
private renderWidget(widget: DashboardWidget, widgetContainer: LibAdminElement, html: string): Promise<void> {
188+
const widgetContents = new DivEl('widget-contents');
189+
190+
if (widget.hasHeader()) {
191+
widgetContents.appendChild(new H5El('widget-header').setHtml(widget.getDisplayName()));
192+
}
193193

194-
el.addClass('widget-contents');
195-
widgetContainer.addClass('loaded');
194+
const extension = DashboardExtension.create();
195+
widgetContents.getHTMLElement().appendChild(extension);
196+
widgetContainer.appendChild(widgetContents);
197+
widgetContainer.addClass('loaded');
196198

197-
return Q.resolve();
198-
});
199+
return extension.setHtml(html);
199200
}
200201
}

src/main/resources/assets/styles/home/widgets.less

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,21 +29,26 @@
2929
.widget-contents {
3030
width: 100%;
3131
height: 100%;
32-
overflow: auto;
32+
overflow: visible;
3333
box-sizing: border-box;
3434

3535
.widget-header {
3636
margin: 0 0 0.75em 0;
3737
font-size: 14px;
3838
font-weight: normal;
3939
letter-spacing: 1px;
40+
color: @admin-white;
41+
}
42+
43+
dashboard-extension {
44+
display: block;
4045
}
4146
}
4247

4348
&.loaded {
4449
margin: 0;
4550
opacity: 1;
46-
transition: opacity 2s;
51+
transition: opacity 1s;
4752

4853
&.width-auto {
4954
width: fit-content;

0 commit comments

Comments
 (0)