Skip to content

Commit 88251ff

Browse files
committed
fix: styling and icons
1 parent 63b09e0 commit 88251ff

12 files changed

+141
-10
lines changed
Binary file not shown.

packages/pluggableWidgets/document-viewer-web/components/DocxViewer.tsx

+3
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,9 @@ const DocxViewer: DocRendererElement = (props: DocumentViewerContainerProps) =>
4343

4444
return (
4545
<Fragment>
46+
<div className="widget-document-viewer-controls">
47+
<div className="widget-document-viewer-controls-left">{file.value?.name}</div>
48+
</div>
4649
{docxHtml && (
4750
<div className="widget-document-viewer-content" dangerouslySetInnerHTML={{ __html: docxHtml }}>
4851
{/* {docHtmlStr} */}

packages/pluggableWidgets/document-viewer-web/components/PDFViewer.tsx

+19-7
Original file line numberDiff line numberDiff line change
@@ -33,13 +33,25 @@ const PDFViewer: DocRendererElement = (props: DocumentViewerContainerProps) => {
3333
return (
3434
<Fragment>
3535
<div className="widget-document-viewer-controls">
36-
<button onClick={() => setCurrentPage(prev => Math.max(prev - 1, 1))} disabled={currentPage <= 1}>
37-
Previous
38-
</button>
39-
<span>
40-
Page {currentPage} of {numberOfPages}
41-
</span>
42-
<button onClick={() => setCurrentPage(prev => Math.min(prev + 1, numberOfPages))}>Next</button>
36+
<div className="widget-document-viewer-controls-left">{file.value?.name}</div>
37+
<div className="widget-document-viewer-controls-icons">
38+
<div className="widget-document-viewer-pagination">
39+
<button
40+
onClick={() => setCurrentPage(prev => Math.max(prev - 1, 1))}
41+
disabled={currentPage <= 1}
42+
className="icons icon-Left btn btn-icon-only"
43+
aria-label={"Go to previous page"}
44+
></button>
45+
<span>
46+
{currentPage} / {numberOfPages}
47+
</span>
48+
<button
49+
onClick={() => setCurrentPage(prev => Math.min(prev + 1, numberOfPages))}
50+
className="icons icon-Right btn btn-icon-only"
51+
aria-label={"Go to next page"}
52+
></button>
53+
</div>
54+
</div>
4355
</div>
4456
<div className="widget-document-viewer-content">
4557
{pdfUrl && (
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
import { Properties, hidePropertyIn, hidePropertiesIn } from "@mendix/pluggable-widgets-tools";
2+
import {
3+
StructurePreviewProps,
4+
structurePreviewPalette
5+
} from "@mendix/widget-plugin-platform/preview/structure-preview-api";
6+
import { DocumentViewerPreviewProps } from "typings/DocumentViewerProps";
7+
8+
export function getProperties(values: DocumentViewerPreviewProps, defaultProperties: Properties): Properties {
9+
return defaultProperties;
10+
}
11+
12+
export function getPreview(_values: DocumentViewerPreviewProps, isDarkMode: boolean): StructurePreviewProps {
13+
const palette = structurePreviewPalette[isDarkMode ? "dark" : "light"];
14+
return {
15+
type: "Container",
16+
children: [
17+
{
18+
type: "RowLayout",
19+
grow: 2,
20+
columnSize: "grow",
21+
borders: true,
22+
borderWidth: 1,
23+
borderRadius: 2,
24+
backgroundColor: _values.readOnly ? palette.background.containerDisabled : palette.background.container,
25+
children: [
26+
{
27+
type: "Container",
28+
grow: 1,
29+
padding: 4,
30+
children: [
31+
{
32+
type: "Text",
33+
content: getCustomCaption(_values),
34+
fontColor: palette.text.data
35+
}
36+
]
37+
}
38+
],
39+
padding: 8
40+
}
41+
],
42+
backgroundColor: palette.background.container,
43+
borderRadius: 8
44+
};
45+
}
46+
47+
export function getCustomCaption(_values: DocumentViewerPreviewProps): string {
48+
return `[${_values.file ?? "No attribute selected"}]`;
49+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
import { createElement, ReactElement } from "react";
2+
import { DocumentViewerPreviewProps } from "typings/DocumentViewerProps";
3+
import "../ui/DocumentViewer.scss";
4+
5+
export const preview = (props: DocumentViewerPreviewProps): ReactElement => {
6+
const { file } = props;
7+
return (
8+
<div className="widget-document-viewer">
9+
<div className="widget-document-viewer-content">{file ? `[${file}]` : "[No attribute selected]"}</div>
10+
</div>
11+
);
12+
};
Loading
Loading
Loading
Loading

packages/pluggableWidgets/document-viewer-web/src/DocumentViewer.tsx

+2-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@ import { createElement, ReactElement } from "react";
22
import { DocumentContext } from "../store";
33
import { DocumentViewerContainerProps } from "../typings/DocumentViewerProps";
44
import { useRendererSelector } from "../utils/useRendererSelector";
5-
import "../ui/DocumentViewer.scss";
5+
import "../ui/documentViewer.scss";
6+
import "../ui/documentViewerIcons.scss";
67
import classNames from "classnames";
78

89
export default function DocumentViewer(props: DocumentViewerContainerProps): ReactElement {

packages/pluggableWidgets/document-viewer-web/ui/documentViewer.scss

+18-2
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,23 @@ $root: widget-document-viewer;
44
--document-viewer-negative-margin: calc(-1 * var(--form-input-padding-x));
55
}
66

7-
.widget-document-viewer {
7+
div.widget-document-viewer {
88
display: flex;
99
flex-direction: column;
10+
border: 1px solid var(--border-color-default, #ced0d3);
11+
border-radius: var(--border-radius-default);
1012

1113
&-controls {
14+
display: flex;
15+
flex-direction: row;
16+
align-items: center;
17+
justify-content: space-between;
1218
margin: calc(-1 * var(--form-input-padding-y)) calc(-1 * var(--form-input-padding-x));
1319
margin-bottom: 0;
14-
padding: var(--form-input-padding-y) var(--form-input-padding-x);
20+
padding: var(--spacing-medium) var(--spacing-large);
1521
background-color: var(--gray-lighter);
22+
border-bottom: 1px solid var(--border-color-default, #ced0d3);
23+
border-radius: var(--border-radius-default) var(--border-radius-default) 0 0;
1624
}
1725

1826
&-content {
@@ -21,4 +29,12 @@ $root: widget-document-viewer;
2129
border: 1px solid var(--gray-darker);
2230
border-radius: var(--border-radius-default);
2331
}
32+
33+
&-pagination {
34+
display: flex;
35+
align-items: center;
36+
& > *:not(:last-child) {
37+
margin-right: var(--spacing-small);
38+
}
39+
}
2440
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
@use "sass:map";
2+
@font-face {
3+
font-family: "DocViewer";
4+
src: url("../assets/DocViewer.woff2") format("woff2");
5+
}
6+
7+
$icons: (
8+
Download: "\e903",
9+
Right: "\e906",
10+
Left: "\e902",
11+
ZoomIn: "\e901",
12+
ZoomOut: "\e900",
13+
FitToWidth: "\e904"
14+
);
15+
16+
.icons.btn {
17+
background-color: transparent;
18+
}
19+
20+
div.widget-document-viewer {
21+
&-controls {
22+
.icons {
23+
font-family: "DocViewer" !important;
24+
font-size: 16px;
25+
font-style: normal;
26+
-webkit-font-smoothing: antialiased;
27+
-moz-osx-font-smoothing: grayscale;
28+
text-rendering: optimizeLegibility;
29+
padding: var(--spacing-smallest) var(--spacing-small);
30+
31+
@each $name, $code in $icons {
32+
&.icon-#{$name}:before {
33+
content: $code;
34+
}
35+
}
36+
}
37+
}
38+
}

0 commit comments

Comments
 (0)