blob: 859536436fabce1fc0e08a21cf6d7f4a7975555b [file] [log] [blame] [view]
Jack Franklin1557a1c2020-06-08 14:22:131# Components dev server
2
3This server serves up examples of the web components built within DevTools and provides a useful way to document various states of components.
4
5For more background, see the [initial proposal and design doc](https://docs.google.com/document/d/1P6qtACf4aryfT9OSHxNFI3okMKt9oUrtzOKCws5bOec/edit?pli=1).
6
7To add an example for your component:
8
Tim van der Lippee622f552021-04-14 14:15:1891. Create `front_end/ui/components/docs/DIR` where `DIR` is the name of your component.
Jack Franklin7a75e462021-01-08 16:17:13102. Within the new `DIR`, add HTML and TypeScript files. Each one of these is a standalone example. You should name the HTML file based on what it's documenting, e.g. `basic.html` or `data-missing.html`, and add a TypeScript file with the same name. The TypeScript file should contain all the code to import and run your component, and within the HTML file you can place any HTML or CSS you need (inline style tags are fine for examples) to render the component in the right context.
Jack Franklin12ba06c2020-07-20 11:21:38113. Create a `BUILD.gn` in your new `DIR`. This should contain the following code:
12
13```
14import("../../../scripts/build/ninja/copy.gni")
Simon Zünde20bdac2024-08-27 07:35:5315import("../../../scripts/build/typescript/typescript.gni")
Jack Franklin7a75e462021-01-08 16:17:1316
17ts_library("ts") {
18 sources = [
19 "basic.ts"
20 ]
21
22 deps = [
23 # As an example: anything your TS code imports needs to be listed here as a dep.
Tim van der Lippe67d60bf2021-04-14 11:40:4724 "../../ui/components/data_grid:bundle",
Jack Franklin7a75e462021-01-08 16:17:1325 ]
26}
Jack Franklin12ba06c2020-07-20 11:21:3827
28copy_to_gen("elements_breadcrumbs") {
29 sources = [
Jack Franklin7a75e462021-01-08 16:17:1330 "basic.html",
Jack Franklin12ba06c2020-07-20 11:21:3831 # list all other examples here
32 ]
33
34 deps = [
Jack Franklin7a75e462021-01-08 16:17:1335 ":ts"
Jack Franklin12ba06c2020-07-20 11:21:3836 ]
37}
38```
39
40
Tim van der Lippee622f552021-04-14 14:15:18414. Update `front_end/ui/components/docs/BUILD.gn` to add your new directory's `BUILD.GN` to the `public_deps` array.
Jack Franklin12ba06c2020-07-20 11:21:38425. Run `npm run components-server` to fire up a server on `localhost:8090`. You should now see your component listed and you can click on the link to view the examples.
436. **Note**: the server assumes your built target is `Default`. If not, run the server and pass the `--target` flag: `npm run components-server -- --target=Release`.