p-elements-core 2.0.15 → 2.1.0-rc10

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.
Files changed (71) hide show
  1. package/dist/p-elements-core.js +1 -72
  2. package/package.json +56 -56
  3. package/readme.md +386 -0
  4. package/typings/custom-element-controller.d.ts +18 -0
  5. package/typings/custom-element-controller.d.ts.map +1 -0
  6. package/typings/custom-element.d.ts +140 -0
  7. package/typings/custom-element.d.ts.map +1 -0
  8. package/typings/decorators/bind.d.ts +6 -0
  9. package/typings/decorators/bind.d.ts.map +1 -0
  10. package/typings/decorators/custom-element-config.d.ts +8 -0
  11. package/typings/decorators/custom-element-config.d.ts.map +1 -0
  12. package/typings/decorators/property.d.ts +213 -0
  13. package/typings/decorators/property.d.ts.map +1 -0
  14. package/typings/decorators/query.d.ts +2 -0
  15. package/typings/decorators/query.d.ts.map +1 -0
  16. package/typings/decorators/render-property-on-set.d.ts +2 -0
  17. package/typings/decorators/render-property-on-set.d.ts.map +1 -0
  18. package/typings/maquette/cache.d.ts +10 -0
  19. package/typings/maquette/cache.d.ts.map +1 -0
  20. package/typings/maquette/dom.d.ts +60 -0
  21. package/typings/maquette/dom.d.ts.map +1 -0
  22. package/typings/maquette/h.d.ts +35 -0
  23. package/typings/maquette/h.d.ts.map +1 -0
  24. package/typings/maquette/index.d.ts +12 -0
  25. package/typings/maquette/index.d.ts.map +1 -0
  26. package/typings/maquette/interfaces.d.ts +475 -0
  27. package/typings/maquette/interfaces.d.ts.map +1 -0
  28. package/typings/maquette/jsx.d.ts +6 -0
  29. package/typings/maquette/jsx.d.ts.map +1 -0
  30. package/typings/maquette/mapping.d.ts +14 -0
  31. package/typings/maquette/mapping.d.ts.map +1 -0
  32. package/typings/maquette/projection.d.ts +9 -0
  33. package/typings/maquette/projection.d.ts.map +1 -0
  34. package/typings/maquette/projector.d.ts +27 -0
  35. package/typings/maquette/projector.d.ts.map +1 -0
  36. package/typings/p-elements-core.d.ts +225 -0
  37. package/typings/p-elements-core.d.ts.map +1 -0
  38. package/.editorconfig +0 -17
  39. package/.gitlab-ci.yml +0 -16
  40. package/dist/p-elements-core-modern.js +0 -72
  41. package/dist/sample.js +0 -20
  42. package/index.html +0 -171
  43. package/karma.conf.js +0 -32
  44. package/p-elements-core.d.ts +0 -141
  45. package/screen.css +0 -16
  46. package/src/bar.css +0 -3
  47. package/src/cache.ts +0 -35
  48. package/src/commonjs.js +0 -182
  49. package/src/custom-element.ts +0 -185
  50. package/src/custom-inline-style-element.ts +0 -42
  51. package/src/custom-style-element.ts +0 -27
  52. package/src/decorators/bind.ts +0 -40
  53. package/src/decorators/custom-element-config.ts +0 -17
  54. package/src/decorators/property-render-on-set.ts +0 -49
  55. package/src/decorators/reflect-to-attribute.ts +0 -51
  56. package/src/dom.ts +0 -100
  57. package/src/h.ts +0 -93
  58. package/src/index.tsx +0 -84
  59. package/src/interfaces.ts +0 -455
  60. package/src/mapping.ts +0 -55
  61. package/src/projection.ts +0 -537
  62. package/src/projector.ts +0 -168
  63. package/src/sample.css +0 -19
  64. package/src/sample.spec.ts +0 -112
  65. package/src/sample.tsx +0 -187
  66. package/src/tsconfig.json +0 -16
  67. package/theme.css +0 -12
  68. package/tsconfig.json +0 -17
  69. package/tslint.json +0 -33
  70. package/webpack.config.js +0 -100
  71. package/webpack.config.karma.js +0 -35
package/src/sample.css DELETED
@@ -1,19 +0,0 @@
1
- :host{
2
- display: block;
3
- @apply --mixin-sample;
4
- }
5
- .root {
6
- display: flex;
7
- padding: 10px;
8
- flex-direction: row;
9
- }
10
-
11
- div .xxx{
12
- color: var(--color-primary, blue);
13
- }
14
-
15
- #SlotContainer ::slotted(*) {
16
- font-weight: bold;
17
- color: black;
18
- font-size: 1.5em;
19
- }
@@ -1,112 +0,0 @@
1
- describe("my-greetings custom element", () => {
2
-
3
- it("Should be defined", (done) => {
4
- let elementIsDefined = false;
5
- customElements.whenDefined("my-greetings").then(() => {
6
- elementIsDefined = true;
7
- expect(elementIsDefined).toBe(true);
8
- done();
9
- });
10
- });
11
-
12
- it("Should have shadow root", (done) => {
13
- const element = document.createElement("my-greetings");
14
- document.body.appendChild(element);
15
- expect(typeof element.shadowRoot).toBe("object");
16
- element.parentNode.removeChild(element);
17
- done();
18
- });
19
-
20
- it("Should have shadow root child element with text 'Hello!!'", (done) => {
21
- const element = document.createElement("my-greetings");
22
- document.body.appendChild(element);
23
- expect( (element.shadowRoot.querySelector(".sample") as HTMLElement).innerText).toBe("Hello!!");
24
- element.parentNode.removeChild(element);
25
- done();
26
- });
27
-
28
- it("Should display heading with text typed in input", (done) => {
29
- const element = document.createElement("my-greetings");
30
- document.body.appendChild(element);
31
- const inputElement = element.shadowRoot.querySelector("input");
32
-
33
- inputElement.value = "Lorem ipsum Dolar sit";
34
- inputElement.dispatchEvent(new Event("input"));
35
-
36
- setTimeout(() => {
37
- expect( element.shadowRoot.querySelector(".title").innerHTML).toBe(inputElement.value);
38
- element.parentNode.removeChild(element);
39
- done();
40
- }, 100)
41
- });
42
-
43
- it("Should display heading with the same text as element attribute name", (done) => {
44
- const element = document.createElement("my-greetings");
45
- element.setAttribute("name", "Arnold");
46
- document.body.appendChild(element);
47
- expect( element.shadowRoot.querySelector(".title").innerHTML).toBe("Arnold");
48
- element.parentNode.removeChild(element);
49
- done();
50
- });
51
-
52
- it("Should display heading with the same text as element attribute name after changing the attribute", (done) => {
53
- const element = document.createElement("my-greetings");
54
- element.setAttribute("name", "Arnold");
55
- document.body.appendChild(element);
56
- element.setAttribute("name", "Kees");
57
- expect( element.shadowRoot.querySelector(".title").innerHTML).toBe("Kees");
58
- element.parentNode.removeChild(element);
59
- done();
60
- });
61
-
62
- it("Should display heading with the same text as element propery", (done) => {
63
- const element = document.createElement("my-greetings") as any;
64
- element.name = "Arie";
65
- document.body.appendChild(element);
66
- expect( element.shadowRoot.querySelector(".title").innerHTML).toBe("Arie");
67
- element.parentNode.removeChild(element);
68
- done();
69
- });
70
-
71
- it("Should display heading with the same text as element property name after changing the property", (done) => {
72
- const element = document.createElement("my-greetings") as any;
73
- element.name = "Jeffreyd";
74
- document.body.appendChild(element);
75
- element.name = "Martijn";
76
- expect( element.shadowRoot.querySelector(".title").innerHTML).toBe("Martijn");
77
- element.parentNode.removeChild(element);
78
- done();
79
- });
80
-
81
- // betty BOOP => Brilliant Online Objects Programmers
82
- it("Should display BB when property name is 'Peter'", (done) => {
83
- const element = document.createElement("my-greetings") as any;
84
- element.name = "Peter";
85
- document.body.appendChild(element);
86
- expect( typeof element.shadowRoot.querySelector(".is-peter--image")).toBe("object");
87
- element.parentNode.removeChild(element);
88
- done();
89
- });
90
-
91
- });
92
-
93
- describe("super-a custom element extends a", () => {
94
-
95
- it("Should be defined", (done) => {
96
- let elementIsDefined = false;
97
- customElements.whenDefined("super-a").then(() => {
98
- elementIsDefined = true;
99
- expect(elementIsDefined).toBe(true);
100
- done();
101
- });
102
- });
103
-
104
- it("Should be red", (done) => {
105
- const element = (document as any).createElement("a", {is: "super-a"});
106
- document.body.appendChild(element);
107
- expect(element.style.color).toBe("red");
108
- element.parentNode.removeChild(element);
109
- done();
110
- });
111
-
112
- });
package/src/sample.tsx DELETED
@@ -1,187 +0,0 @@
1
- import { Bind } from "./decorators/bind";
2
- import { CustomElementConfig } from "./decorators/custom-element-config";
3
- import { PropertyRenderOnSet } from "./decorators/property-render-on-set";
4
- import { ReflectToAttribute } from "./decorators/reflect-to-attribute";
5
-
6
- import { CustomElement } from "./custom-element";
7
-
8
- import * as anime from "animejs";
9
-
10
- declare var require: any;
11
-
12
- @CustomElementConfig({
13
- tagName: "my-greetings",
14
- })
15
- class MyGreetings extends CustomElement {
16
-
17
- static get observedAttributes() {
18
- return ["name"];
19
- }
20
-
21
- @PropertyRenderOnSet
22
- @ReflectToAttribute
23
- public foo: string = "foo";
24
-
25
- private count: number = 1;
26
-
27
- @PropertyRenderOnSet
28
- @ReflectToAttribute
29
- private name: string = "";
30
-
31
- private onInput = (e) => {
32
- this.name = e.target.value;
33
- }
34
-
35
- private init() {
36
- //
37
- }
38
-
39
- private enterAnimation(domNode, properties) {
40
- anime({
41
- targets: domNode,
42
- translateX: [
43
- { value: 100, duration: 1200 },
44
- { value: 0, duration: 800 },
45
- ],
46
- rotate: "1turn",
47
- duration: 3000,
48
- loop: false,
49
- });
50
- }
51
-
52
- private exitAnimation(domNode, removeDomNodeFunction, properties) {
53
- anime({
54
- targets: domNode,
55
- translateX: [
56
- { value: 100, duration: 1200 },
57
- { value: 0, duration: 800 },
58
- ],
59
- duration: 3000,
60
- opacity: 0,
61
- loop: false,
62
- complete: () => {
63
- removeDomNodeFunction(domNode);
64
- },
65
- });
66
- }
67
-
68
- private countUpdateAnimation(domNode, properties, previousProperties) {
69
- const basicTimeline = anime.timeline();
70
- basicTimeline.add([{
71
- duration: 300,
72
- targets: domNode,
73
- translateX: 200,
74
- scale: 1.9,
75
- easing: "easeOutExpo",
76
- }, {
77
- duration: 300,
78
- targets: domNode,
79
- translateX: 0,
80
- scale: 1,
81
- easing: "easeInExpo",
82
- }]);
83
- }
84
-
85
- private render() {
86
- return <div class="xxx">
87
- <h1 data-title={this.name && this.name.toLocaleUpperCase()} class="title">{this.foo} {this.name}</h1>
88
- <p data-count={this.count} updateAnimation={this.countUpdateAnimation}>{this.count}</p>
89
- <div id="SlotContainer"><slot></slot></div>
90
- <p>Please enter your name (hint type <em><strong>Peter</strong></em>)<br />
91
- <input type="text" value={this.name} oninput={this.onInput} />
92
- </p>
93
- <p><a is="super-a">Super a</a></p>
94
- {
95
- this.name && this.name.toLowerCase && this.name.toLowerCase().indexOf("peter") > -1 ?
96
- <div key="peter" afterRemoved={this.peterRemoved} afterCreate={this.peterCreate}
97
- class="is-peter"
98
- enterAnimation={this.enterAnimation}
99
- exitAnimation={this.exitAnimation}>
100
- <p>Hello Peter</p>
101
- <img class="is-peter--image" src="https://s-media-cache-ak0.pinimg.com/474x/ce/1d/07/ce1d07011c0afb8e0614a0ae42a8c861.jpg" height="140" />
102
- </div> : ""
103
- }
104
- </div>;
105
- }
106
-
107
- private peterRemoved() {
108
- console.log("removed");
109
- }
110
-
111
- private peterCreate() {
112
- console.log("create");
113
- }
114
-
115
- private connectedCallback() {
116
- const css = require("./sample.css");
117
- const template = this.templateFromString(`
118
- <style>${css}</style>
119
- <div class="root"></div>
120
- `);
121
- this.shadowRoot.appendChild(template);
122
-
123
- this.createProjector(this.shadowRoot.querySelector(".root"), this.render.bind(this));
124
-
125
- setInterval(() => {
126
- this.count++;
127
- this.renderNow();
128
- }, 5000);
129
-
130
- window.addEventListener("foo", this.onFooEvent);
131
-
132
- }
133
-
134
- private onFooEvent = (e: CustomEvent) => {
135
- this.foo = e.detail.foo;
136
- }
137
-
138
- private attributeChangedCallback(name, oldValue, newValue) {
139
- if (name === "name") {
140
- this.name = newValue;
141
- }
142
- }
143
- }
144
-
145
- @CustomElementConfig({
146
- tagName: "p-foo",
147
- })
148
- class PFoo extends CustomElement {
149
- private connectedCallback() {
150
- const css = require("./sample.css");
151
- this.innerHTML = `
152
- <div class="root">P-FOO</div>
153
- `;
154
- }
155
-
156
- }
157
-
158
- @CustomElementConfig({
159
- tagName: "p-bar",
160
- })
161
- class PBar extends CustomElement {
162
-
163
- private connectedCallback() {
164
- const css = require("./bar.css");
165
- this.initShadowRoot(`<style>${css}</style>`, this.render);
166
- }
167
-
168
- private render = function() {
169
- return <div>
170
- <h1 onclick={(e) => {console.log(this); }}>Foo bar</h1>
171
- </div>;
172
- };
173
-
174
- }
175
-
176
- (window as any).PBar = PBar;
177
-
178
- class SuperAnchorElement extends HTMLAnchorElement {
179
-
180
- public connectedCallback() {
181
- this.classList.add("super");
182
- this.style.color = "red";
183
- }
184
-
185
- }
186
-
187
- window.customElements.define("super-a", SuperAnchorElement, { extends: "a" });
package/src/tsconfig.json DELETED
@@ -1,16 +0,0 @@
1
- {
2
- "extends": "../tsconfig.json",
3
- "compilerOptions": {
4
- "module": "es6",
5
- "strictNullChecks": true,
6
- "noEmitOnError": true,
7
- "noEmit": false,
8
- "declaration": true,
9
- "outDir": "../dist",
10
- "rootDir": "."
11
- },
12
- "include": [
13
- "./**/*.ts",
14
- "../typings/extensions.d.ts"
15
- ]
16
- }
package/theme.css DELETED
@@ -1,12 +0,0 @@
1
- :root{
2
-
3
- --color-primary: red;
4
-
5
- --mixin-sample: {
6
- border: 2px solid black;
7
- background-color: green;
8
- margin: 5px;
9
- padding: 5px;
10
- }
11
-
12
- }
package/tsconfig.json DELETED
@@ -1,17 +0,0 @@
1
- {
2
- "compilerOptions": {
3
- "target": "es6",
4
- "moduleResolution": "node",
5
- "allowJs": false,
6
- "noEmit": false,
7
- "strict": false,
8
- "isolatedModules": false,
9
- "esModuleInterop": true,
10
- "noImplicitThis": false,
11
- "experimentalDecorators": true,
12
- "jsx": "preserve"
13
- },
14
- "include": [
15
- "src"
16
- ]
17
- }
package/tslint.json DELETED
@@ -1,33 +0,0 @@
1
- {
2
- /*
3
- * Possible values:
4
- * - the name of a built-in config
5
- * - the name of an NPM module which has a "main" file that exports a config object
6
- * - a relative path to a JSON file
7
- */
8
- "extends": "tslint:recommended",
9
- "rules": {
10
- /*
11
- * Any rules specified here will override those from the base config we are extending.
12
- */
13
- "curly": true,
14
- "variable-name": [
15
- true,
16
- "ban-keywords",
17
- "check-format",
18
- "allow-leading-underscore"
19
- ]
20
- },
21
- "jsRules": {
22
- /*
23
- * Any rules specified here will override those from the base config we are extending.
24
- */
25
- "curly": true
26
- },
27
- "rulesDirectory": [
28
- /*
29
- * A list of relative or absolute paths to directories that contain custom rules.
30
- * See the Custom Rules documentation below for more details.
31
- */
32
- ]
33
- }
package/webpack.config.js DELETED
@@ -1,100 +0,0 @@
1
- const path = require('path');
2
- const babelOptions = {
3
- "presets": [
4
- ["@babel/preset-env", {
5
- "targets": {
6
- "browsers": require("./package.json").browserslist
7
- }
8
- }],
9
- ["@babel/preset-react", {
10
- "pragma": "h"
11
- }]
12
- ],
13
- "plugins": [
14
- "@babel/proposal-class-properties",
15
- "@babel/proposal-object-rest-spread"
16
- ]
17
- };
18
-
19
- module.exports = {
20
- mode: 'production',
21
- devServer: {
22
- contentBase: path.join(__dirname),
23
- compress: true,
24
- useLocalIp: true,
25
- disableHostCheck: true,
26
- host: '0.0.0.0',
27
- port: 8000,
28
- open: false,
29
- openPage: 'demo/index.html',
30
- publicPath: '/dist/'
31
- },
32
- entry: {
33
- 'p-elements-core': [
34
- '@babel/polyfill',
35
- '@webcomponents/template/template.js',
36
- 'whatwg-fetch/fetch.js',
37
- 'document-register-element/build/document-register-element.max.js',
38
- '@webcomponents/shadydom/shadydom.min.js',
39
- '@webcomponents/shadycss/custom-style-interface.min.js',
40
- '@webcomponents/shadycss/apply-shim.min.js',
41
- '@webcomponents/shadycss/scoping-shim.min.js',
42
- 'dom4/build/dom4.max.js',
43
- './src/index.tsx',
44
- ],
45
- 'p-elements-core-modern': [
46
- '@webcomponents/template/template.js',
47
- 'document-register-element/build/document-register-element.max.js',
48
- '@webcomponents/shadydom/shadydom.min.js',
49
- '@webcomponents/shadycss/custom-style-interface.min.js',
50
- '@webcomponents/shadycss/apply-shim.min.js',
51
- '@webcomponents/shadycss/scoping-shim.min.js',
52
- 'dom4/build/dom4.max.js',
53
- './src/index.tsx',
54
- ],
55
- 'sample': [
56
- './src/sample.tsx'
57
- ]
58
-
59
- },
60
- output: {
61
- path: path.resolve(__dirname, './dist'),
62
- filename: '[name]' + '.js',
63
- chunkFilename: '[chunkhash]' + '.js'
64
- },
65
- externals: {
66
- 'underscore': '_',
67
- 'animejs': 'anime'
68
- },
69
- resolve: {
70
- extensions: ['.ts', '.tsx', '.js', '.json']
71
- },
72
- module: {
73
- rules: [{
74
- test: /\.ts(x?)$/,
75
- exclude: /node_modules/,
76
- use: [{
77
- loader: 'babel-loader',
78
- options: babelOptions
79
- },
80
- {
81
- loader: 'awesome-typescript-loader'
82
- },
83
- ]
84
- },{
85
- test: /\.css$/,
86
- use: [{
87
- loader: 'css-loader'
88
- },
89
- {
90
- loader: 'postcss-loader',
91
- options: {
92
- plugins: () => {
93
- return [require('autoprefixer')]
94
- }
95
- }
96
- },
97
- ]
98
- }]
99
- },
100
- };
@@ -1,35 +0,0 @@
1
- 'use strict';
2
-
3
- var webpack = require('webpack');
4
- var path = require('path');
5
- var glob = require('glob');
6
-
7
- module.exports = {
8
- entry: glob.sync( './src/*.spec.ts').join("|").replace(/.spec.ts+/g,".spec").split("|"),
9
- module: {
10
- rules: [{
11
- test: /\.ts$/,
12
- include: [
13
- path.resolve(__dirname, 'src'),
14
- ],
15
- exclude: [
16
- /node_modules/
17
- ],
18
- loader: 'awesome-typescript-loader',
19
- }]
20
- },
21
- resolve: {
22
- modules: [
23
- 'node_modules',
24
- ],
25
- extensions: ['.ts', '.js'],
26
- },
27
- devtool: 'inline-source-map',
28
- stats: "verbose",
29
- plugins: [
30
- new webpack.SourceMapDevToolPlugin({
31
- filename: null,
32
- test: /\.(ts|js)($|\?)/i
33
- })
34
- ],
35
- };