Creating Website Samples
The website app is developed in its own package packages/website
. Components features or states are demonstrated via samples meant for consumers.
The samples are placed in the /packages/website/docs/_samples
folder.
For example:
The Button samples can be found in the /packages/website/docs/_samples/main/Button
folder.
Run the Website​
Runs project build + website start
yarn start:website
However, in most cases you have the project built, so faster would be to just start the website:
cd packages/website
yarn start
Note: In case of issues with the second flow, most likely you need yarn build
in the root.
Create New Sample​
A regular component sample consists of a folder + 3 files ({sample_name}.md
, main.js
and sample.html
) that you need to create. Let's go trough every one of them:
The main.js
file​
In the main.js
file, we import the components and assets (icons, illustration) required by the sample.
For example:
import "@ui5/webcomponents/dist/Button.js";
import "@ui5/webcomponents-icons/dist/edit.js";
import "@ui5/webcomponents-icons/dist/account.js";
The sample.html
file​
In the sample.html
file, we use the web components as in regular HTML page
For example:
<!-- playground-fold -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Sample</title>
</head>
<body style="background-color: var(--sapBackgroundColor)">
<!-- playground-fold-end -->
<ui5-button icon="sap-icon://edit" design="Default" tooltip="Edit Button"></ui5-button>
<ui5-button icon="sap-icon://account" design="Transparent" tooltip="Account Button"></ui5-button>
<!-- playground-fold -->
<script type="module" src="main.js"></script>
</body>
</html>
<!-- playground-fold-end -->
Note: The playground-fold
comments will fold this part of the code to highlight the important part - the components usage.
The {sample_name}.md
file​
In the .md
file we instantiate the Editor
component (file editor + preview) that will display your sample and show the code behind it.
For example:
import html from '!!raw-loader!./sample.html';
import js from '!!raw-loader!./main.js';
<Editor html={html} js={js} />
Show the Sample​
In the previous step we have created our sample. Now it's time to show and document it.
-
Open the
packages/website/docs/_components_pages
folder -
Find your component's
.mdx
file.
For example: packages/website/docs/_components_pages/main/Button.mdx
- Import the newly created sample
For example:
import MyNewSample from "../../_samples/main/Button/MyNewSample/MyNewSample.md";`
- Instantiate the sample and add title + description
For example:
### My New Sample
The Button supports several designs to indicate the priority or the nature of the action.
<MyNewSample />
Note: Changes in the sample files (.md
, .html
, .js
) are detected and the server reloads. However, changes in the .mdx
file are not watched - restart of the server is needed.
Conventions​
Sample Name​
-
The sample name and the folder that includes the sample files should match the
.md
file name (Button/IconOnly/IconOnly.md
). -
Regarding the naming, it's best to consult with KM and use existing ones as reference.
Sample Title and Description​
The title ("My New Sample") and the description ("The Button..") will be displayed on top of the sample itself. Adding title and description is recommended - they help viewers better understand what they are looking at.
Sample Order​
Add new samples in the "More Samples" section where it best fits among the existing samples.
The "Basic" Sample​
All components have sample, called "Basic" and it's used as the first sample, displayed right-after the component's overview. Don't use "Basic" for other samples.