@justeattakeaway/pie-list 0.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +91 -0
- package/custom-elements.json +60 -0
- package/dist/index.d.ts +20 -0
- package/dist/index.js +27 -0
- package/dist/react.d.ts +25 -0
- package/dist/react.js +13 -0
- package/package.json +51 -0
- package/src/defs-react.ts +8 -0
- package/src/defs.ts +3 -0
- package/src/index.ts +31 -0
- package/src/list.scss +1 -0
- package/src/react.ts +19 -0
package/README.md
ADDED
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
<p align="center">
|
|
2
|
+
<img align="center" src="../../../readme_image.png" height="200" alt="">
|
|
3
|
+
</p>
|
|
4
|
+
|
|
5
|
+
<p align="center">
|
|
6
|
+
<a href="https://www.npmjs.com/@justeattakeaway/pie-list">
|
|
7
|
+
<img alt="GitHub Workflow Status" src="https://img.shields.io/npm/v/@justeattakeaway/pie-list.svg">
|
|
8
|
+
</a>
|
|
9
|
+
</p>
|
|
10
|
+
|
|
11
|
+
# Table of Contents
|
|
12
|
+
|
|
13
|
+
1. [Introduction](#pie-list)
|
|
14
|
+
2. [Installation](#installation)
|
|
15
|
+
3. [Importing the component](#importing-the-component)
|
|
16
|
+
4. [Peer Dependencies](#peer-dependencies)
|
|
17
|
+
5. [Props](#props)
|
|
18
|
+
6. [Contributing](#contributing)
|
|
19
|
+
|
|
20
|
+
## pie-list
|
|
21
|
+
|
|
22
|
+
`pie-list` is a Web Component built using the Lit library.
|
|
23
|
+
|
|
24
|
+
This component can be easily integrated into various frontend frameworks and customized through a set of properties.
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
## Installation
|
|
28
|
+
|
|
29
|
+
To install `pie-list` in your application, run the following on your command line:
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
# npm
|
|
33
|
+
$ npm i @justeattakeaway/pie-list
|
|
34
|
+
|
|
35
|
+
# yarn
|
|
36
|
+
$ yarn add @justeattakeaway/pie-list
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
For full information on using PIE components as part of an application, check out the [Getting Started Guide](https://github.com/justeattakeaway/pie/wiki/Getting-started-with-PIE-Web-Components).
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
### Importing the component
|
|
43
|
+
|
|
44
|
+
#### JavaScript
|
|
45
|
+
```js
|
|
46
|
+
// Default – for Native JS Applications, Vue, Angular, Svelte, etc.
|
|
47
|
+
import { PieList } from '@justeattakeaway/pie-list';
|
|
48
|
+
|
|
49
|
+
// If you don't need to reference the imported object, you can simply
|
|
50
|
+
// import the module which registers the component as a custom element.
|
|
51
|
+
import '@justeattakeaway/pie-list';
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
#### React
|
|
55
|
+
```js
|
|
56
|
+
// React
|
|
57
|
+
// For React, you will need to import our React-specific component build
|
|
58
|
+
// which wraps the web component using @lit/react
|
|
59
|
+
import { PieList } from '@justeattakeaway/pie-list/dist/react';
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
> [!NOTE]
|
|
63
|
+
> When using the React version of the component, please make sure to also
|
|
64
|
+
> include React as a [peer dependency](#peer-dependencies) in your project.
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
## Peer Dependencies
|
|
68
|
+
|
|
69
|
+
> [!IMPORTANT]
|
|
70
|
+
> When using `pie-list`, you will also need to include a couple of dependencies to ensure the component renders as expected. See [the PIE Wiki](https://github.com/justeattakeaway/pie/wiki/Getting-started-with-PIE-Web-Components#expected-dependencies) for more information and how to include these in your application.
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
## Props
|
|
74
|
+
|
|
75
|
+
| Property | Type | Default | Description |
|
|
76
|
+
|---|---|---|---|
|
|
77
|
+
| - | - | - | - |
|
|
78
|
+
|
|
79
|
+
In your markup or JSX, you can then use these to set the properties for the `pie-list` component:
|
|
80
|
+
|
|
81
|
+
```html
|
|
82
|
+
<!-- Native HTML -->
|
|
83
|
+
<pie-list></pie-list>
|
|
84
|
+
|
|
85
|
+
<!-- JSX -->
|
|
86
|
+
<PieList></PieList>
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
## Contributing
|
|
90
|
+
|
|
91
|
+
Check out our [contributing guide](https://github.com/justeattakeaway/pie/wiki/Contributing-Guide) for more information on [local development](https://github.com/justeattakeaway/pie/wiki/Contributing-Guide#local-development) and how to run specific [component tests](https://github.com/justeattakeaway/pie/wiki/Contributing-Guide#testing).
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": "1.0.0",
|
|
3
|
+
"readme": "",
|
|
4
|
+
"modules": [
|
|
5
|
+
{
|
|
6
|
+
"kind": "javascript-module",
|
|
7
|
+
"path": "src/defs-react.js",
|
|
8
|
+
"declarations": [],
|
|
9
|
+
"exports": []
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
"kind": "javascript-module",
|
|
13
|
+
"path": "src/defs.js",
|
|
14
|
+
"declarations": [],
|
|
15
|
+
"exports": []
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"kind": "javascript-module",
|
|
19
|
+
"path": "src/index.js",
|
|
20
|
+
"declarations": [
|
|
21
|
+
{
|
|
22
|
+
"kind": "class",
|
|
23
|
+
"description": "",
|
|
24
|
+
"name": "PieList",
|
|
25
|
+
"members": [],
|
|
26
|
+
"mixins": [
|
|
27
|
+
{
|
|
28
|
+
"name": "RtlMixin",
|
|
29
|
+
"package": "@justeattakeaway/pie-webc-core"
|
|
30
|
+
}
|
|
31
|
+
],
|
|
32
|
+
"superclass": {
|
|
33
|
+
"name": "PieElement",
|
|
34
|
+
"package": "@justeattakeaway/pie-webc-core/src/internals/PieElement"
|
|
35
|
+
},
|
|
36
|
+
"tagName": "pie-list",
|
|
37
|
+
"customElement": true
|
|
38
|
+
}
|
|
39
|
+
],
|
|
40
|
+
"exports": [
|
|
41
|
+
{
|
|
42
|
+
"kind": "js",
|
|
43
|
+
"name": "*",
|
|
44
|
+
"declaration": {
|
|
45
|
+
"name": "*",
|
|
46
|
+
"package": "./defs"
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
"kind": "js",
|
|
51
|
+
"name": "PieList",
|
|
52
|
+
"declaration": {
|
|
53
|
+
"name": "PieList",
|
|
54
|
+
"module": "src/index.js"
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
]
|
|
58
|
+
}
|
|
59
|
+
]
|
|
60
|
+
}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { CSSResult } from 'lit';
|
|
2
|
+
import type { GenericConstructor } from '@justeattakeaway/pie-webc-core';
|
|
3
|
+
import { PieElement } from '@justeattakeaway/pie-webc-core/src/internals/PieElement';
|
|
4
|
+
import type { RTLInterface } from '@justeattakeaway/pie-webc-core';
|
|
5
|
+
import type { TemplateResult } from 'lit-html';
|
|
6
|
+
|
|
7
|
+
export declare interface ListProps {
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* @tagname pie-list
|
|
12
|
+
*/
|
|
13
|
+
export declare class PieList extends PieList_base implements ListProps {
|
|
14
|
+
render(): TemplateResult<1>;
|
|
15
|
+
static styles: CSSResult;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
declare const PieList_base: GenericConstructor<RTLInterface> & typeof PieElement;
|
|
19
|
+
|
|
20
|
+
export { }
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { LitElement as f, html as m, unsafeCSS as a } from "lit";
|
|
2
|
+
import { property as c } from "lit/decorators.js";
|
|
3
|
+
import { RtlMixin as d, defineCustomElement as u } from "@justeattakeaway/pie-webc-core";
|
|
4
|
+
var h = Object.defineProperty, v = (t, o, i, S) => {
|
|
5
|
+
for (var e = void 0, r = t.length - 1, l; r >= 0; r--)
|
|
6
|
+
(l = t[r]) && (e = l(o, i, e) || e);
|
|
7
|
+
return e && h(o, i, e), e;
|
|
8
|
+
};
|
|
9
|
+
class p extends f {
|
|
10
|
+
constructor() {
|
|
11
|
+
super(...arguments), this.v = "0.0.0";
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
v([
|
|
15
|
+
c({ type: String, reflect: !0 })
|
|
16
|
+
], p.prototype, "v");
|
|
17
|
+
const x = "*,*:after,*:before{box-sizing:inherit}", y = "pie-list", n = class n extends d(p) {
|
|
18
|
+
render() {
|
|
19
|
+
return m`<h1 data-test-id="pie-list">Hello world!</h1>`;
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
n.styles = a(x);
|
|
23
|
+
let s = n;
|
|
24
|
+
u(y, s);
|
|
25
|
+
export {
|
|
26
|
+
s as PieList
|
|
27
|
+
};
|
package/dist/react.d.ts
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { CSSResult } from 'lit';
|
|
2
|
+
import type { GenericConstructor } from '@justeattakeaway/pie-webc-core';
|
|
3
|
+
import { PieElement } from '@justeattakeaway/pie-webc-core/src/internals/PieElement';
|
|
4
|
+
import * as React_2 from 'react';
|
|
5
|
+
import type { RTLInterface } from '@justeattakeaway/pie-webc-core';
|
|
6
|
+
import type { TemplateResult } from 'lit-html';
|
|
7
|
+
|
|
8
|
+
export declare interface ListProps {
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export declare const PieList: React_2.ForwardRefExoticComponent<ListProps & React_2.RefAttributes<PieList_2> & ReactBaseType>;
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* @tagname pie-list
|
|
15
|
+
*/
|
|
16
|
+
declare class PieList_2 extends PieList_base implements ListProps {
|
|
17
|
+
render(): TemplateResult<1>;
|
|
18
|
+
static styles: CSSResult;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
declare const PieList_base: GenericConstructor<RTLInterface> & typeof PieElement;
|
|
22
|
+
|
|
23
|
+
declare type ReactBaseType = React_2.HTMLAttributes<HTMLElement>;
|
|
24
|
+
|
|
25
|
+
export { }
|
package/dist/react.js
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import * as e from "react";
|
|
2
|
+
import { createComponent as t } from "@lit/react";
|
|
3
|
+
import { PieList as i } from "./index.js";
|
|
4
|
+
const s = t({
|
|
5
|
+
displayName: "PieList",
|
|
6
|
+
elementClass: i,
|
|
7
|
+
react: e,
|
|
8
|
+
tagName: "pie-list",
|
|
9
|
+
events: {}
|
|
10
|
+
}), m = s;
|
|
11
|
+
export {
|
|
12
|
+
m as PieList
|
|
13
|
+
};
|
package/package.json
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@justeattakeaway/pie-list",
|
|
3
|
+
"description": "PIE Design System List built using Web Components",
|
|
4
|
+
"version": "0.0.0",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "dist/index.js",
|
|
7
|
+
"module": "dist/index.js",
|
|
8
|
+
"types": "dist/index.d.ts",
|
|
9
|
+
"files": [
|
|
10
|
+
"custom-elements.json",
|
|
11
|
+
"src",
|
|
12
|
+
"dist",
|
|
13
|
+
"**/*.d.ts"
|
|
14
|
+
],
|
|
15
|
+
"pieMetadata": {
|
|
16
|
+
"componentStatus": "alpha"
|
|
17
|
+
},
|
|
18
|
+
"scripts": {
|
|
19
|
+
"build": "run -T vite build",
|
|
20
|
+
"build:react-wrapper": "npx build-react-wrapper",
|
|
21
|
+
"create:manifest": "yarn cem analyze --litelement",
|
|
22
|
+
"lint:scripts": "run -T eslint .",
|
|
23
|
+
"lint:scripts:fix": "yarn lint:scripts --fix",
|
|
24
|
+
"lint:style": "run -T stylelint ./src/**/*.{css,scss}",
|
|
25
|
+
"lint:style:fix": "yarn lint:style --fix",
|
|
26
|
+
"watch": "run -T vite build --watch",
|
|
27
|
+
"test:browsers": "npx playwright test -c ./playwright-lit.config.ts",
|
|
28
|
+
"test:browsers:ci": "yarn test:browsers",
|
|
29
|
+
"test:visual": "run -T cross-env-shell PERCY_TOKEN=${PERCY_TOKEN_PIE_LIST} percy exec --allowed-hostname cloudfront.net -- npx playwright test -c ./playwright-lit-visual.config.ts",
|
|
30
|
+
"test:visual:ci": "yarn test:visual"
|
|
31
|
+
},
|
|
32
|
+
"author": "Just Eat Takeaway.com - Design System Team",
|
|
33
|
+
"license": "Apache-2.0",
|
|
34
|
+
"devDependencies": {
|
|
35
|
+
"@custom-elements-manifest/analyzer": "0.9.0",
|
|
36
|
+
"@justeattakeaway/pie-components-config": "0.20.0",
|
|
37
|
+
"@justeattakeaway/pie-css": "0.16.0",
|
|
38
|
+
"@justeattakeaway/pie-monorepo-utils": "0.5.0",
|
|
39
|
+
"cem-plugin-module-file-extensions": "0.0.5"
|
|
40
|
+
},
|
|
41
|
+
"dependencies": {
|
|
42
|
+
"@justeattakeaway/pie-webc-core": "0.25.1"
|
|
43
|
+
},
|
|
44
|
+
"volta": {
|
|
45
|
+
"extends": "../../../package.json"
|
|
46
|
+
},
|
|
47
|
+
"customElements": "custom-elements.json",
|
|
48
|
+
"sideEffects": [
|
|
49
|
+
"dist/*.js"
|
|
50
|
+
]
|
|
51
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type React from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* TODO: Verify if ReactBaseType can be set as a more specific React interface
|
|
4
|
+
* Use the React IntrinsicElements interface to find how to map standard HTML elements to existing React Interfaces
|
|
5
|
+
* Example: an HTML button maps to `React.ButtonHTMLAttributes<HTMLButtonElement>`
|
|
6
|
+
* https://github.com/DefinitelyTyped/DefinitelyTyped/blob/0bb210867d16170c4a08d9ce5d132817651a0f80/types/react/index.d.ts#L2829
|
|
7
|
+
*/
|
|
8
|
+
export type ReactBaseType = React.HTMLAttributes<HTMLElement>
|
package/src/defs.ts
ADDED
package/src/index.ts
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { html, unsafeCSS } from 'lit';
|
|
2
|
+
import { PieElement } from '@justeattakeaway/pie-webc-core/src/internals/PieElement';
|
|
3
|
+
import { RtlMixin, defineCustomElement } from '@justeattakeaway/pie-webc-core';
|
|
4
|
+
|
|
5
|
+
import styles from './list.scss?inline';
|
|
6
|
+
import { type ListProps } from './defs';
|
|
7
|
+
|
|
8
|
+
// Valid values available to consumers
|
|
9
|
+
export * from './defs';
|
|
10
|
+
|
|
11
|
+
const componentSelector = 'pie-list';
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* @tagname pie-list
|
|
15
|
+
*/
|
|
16
|
+
export class PieList extends RtlMixin(PieElement) implements ListProps {
|
|
17
|
+
render () {
|
|
18
|
+
return html`<h1 data-test-id="pie-list">Hello world!</h1>`;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
// Renders a `CSSResult` generated from SCSS by Vite
|
|
22
|
+
static styles = unsafeCSS(styles);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
defineCustomElement(componentSelector, PieList);
|
|
26
|
+
|
|
27
|
+
declare global {
|
|
28
|
+
interface HTMLElementTagNameMap {
|
|
29
|
+
[componentSelector]: PieList;
|
|
30
|
+
}
|
|
31
|
+
}
|
package/src/list.scss
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@use '@justeattakeaway/pie-css/scss' as p;
|
package/src/react.ts
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { createComponent } from '@lit/react';
|
|
3
|
+
import { PieList as PieListLit } from './index';
|
|
4
|
+
import { type ListProps } from './defs';
|
|
5
|
+
|
|
6
|
+
export * from './defs';
|
|
7
|
+
|
|
8
|
+
const PieListReact = createComponent({
|
|
9
|
+
displayName: 'PieList',
|
|
10
|
+
elementClass: PieListLit,
|
|
11
|
+
react: React,
|
|
12
|
+
tagName: 'pie-list',
|
|
13
|
+
events: {},
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
type ReactBaseType = React.HTMLAttributes<HTMLElement>
|
|
17
|
+
|
|
18
|
+
export const PieList = PieListReact as React.ForwardRefExoticComponent<React.PropsWithoutRef<ListProps>
|
|
19
|
+
& React.RefAttributes<PieListLit> & ReactBaseType>;
|