@zcomponent/html 0.0.1 → 0.0.3
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/lib/CSS.d.ts +10 -4
- package/lib/CSS.js +8 -7
- package/lib/HTMLElement.d.ts +24 -23
- package/lib/HTMLElement.js +28 -19
- package/lib/button.d.ts +1 -2
- package/lib/button.js +2 -2
- package/lib/context.d.ts +4 -7
- package/lib/context.js +8 -7
- package/lib/div.d.ts +1 -2
- package/lib/div.js +2 -2
- package/lib/img.d.ts +1 -1
- package/lib/img.js +2 -2
- package/package.json +3 -3
package/lib/CSS.d.ts
CHANGED
|
@@ -1,9 +1,14 @@
|
|
|
1
|
-
import { Component,
|
|
2
|
-
interface CSSConstructorProps
|
|
1
|
+
import { Component, ContextManager } from '@zcomponent/core';
|
|
2
|
+
interface CSSConstructorProps {
|
|
3
3
|
/** @zprop
|
|
4
4
|
* @zvalues files *.css
|
|
5
5
|
*/
|
|
6
6
|
source: string;
|
|
7
|
+
/**
|
|
8
|
+
* @zprop
|
|
9
|
+
* @zdefault true
|
|
10
|
+
*/
|
|
11
|
+
includeAtDesignTime: boolean;
|
|
7
12
|
}
|
|
8
13
|
/**
|
|
9
14
|
* The CSS component will ensure that the CSS file referenced by its `source` constructor prop is added to your page and loaded by the browser.
|
|
@@ -13,9 +18,10 @@ interface CSSConstructorProps extends ConstructorProps {
|
|
|
13
18
|
* @zcomponent
|
|
14
19
|
* @zicon html
|
|
15
20
|
*/
|
|
16
|
-
export declare class CSS extends Component
|
|
21
|
+
export declare class CSS extends Component {
|
|
22
|
+
protected constructorProps: CSSConstructorProps;
|
|
17
23
|
private _elm;
|
|
18
|
-
constructor(
|
|
24
|
+
constructor(contextManager: ContextManager, constructorProps: CSSConstructorProps);
|
|
19
25
|
dispose(): never;
|
|
20
26
|
}
|
|
21
27
|
export {};
|
package/lib/CSS.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Component, registerLoadable } from '@zcomponent/core';
|
|
1
|
+
import { Component, isDesignTime, registerLoadable } from '@zcomponent/core';
|
|
2
2
|
const alreadyAdded = new Map();
|
|
3
3
|
/**
|
|
4
4
|
* The CSS component will ensure that the CSS file referenced by its `source` constructor prop is added to your page and loaded by the browser.
|
|
@@ -9,11 +9,12 @@ const alreadyAdded = new Map();
|
|
|
9
9
|
* @zicon html
|
|
10
10
|
*/
|
|
11
11
|
export class CSS extends Component {
|
|
12
|
-
constructor(
|
|
13
|
-
super(
|
|
14
|
-
|
|
12
|
+
constructor(contextManager, constructorProps) {
|
|
13
|
+
super(contextManager, constructorProps);
|
|
14
|
+
this.constructorProps = constructorProps;
|
|
15
|
+
if (!constructorProps.source || (constructorProps.includeAtDesignTime === false && isDesignTime(contextManager)))
|
|
15
16
|
return;
|
|
16
|
-
this._elm = alreadyAdded.get(
|
|
17
|
+
this._elm = alreadyAdded.get(constructorProps.source);
|
|
17
18
|
if (this._elm)
|
|
18
19
|
this._elm[0]++;
|
|
19
20
|
else {
|
|
@@ -23,12 +24,12 @@ export class CSS extends Component {
|
|
|
23
24
|
this._elm[1].addEventListener('error', reject);
|
|
24
25
|
}));
|
|
25
26
|
this._elm[1].setAttribute('rel', 'stylesheet');
|
|
26
|
-
this._elm[1].setAttribute('href',
|
|
27
|
+
this._elm[1].setAttribute('href', constructorProps.source);
|
|
27
28
|
if (document.head)
|
|
28
29
|
document.head.appendChild(this._elm[1]);
|
|
29
30
|
else if (document.body)
|
|
30
31
|
document.body.appendChild(this._elm[1]);
|
|
31
|
-
alreadyAdded.set(
|
|
32
|
+
alreadyAdded.set(constructorProps.source, this._elm);
|
|
32
33
|
}
|
|
33
34
|
}
|
|
34
35
|
dispose() {
|
package/lib/HTMLElement.d.ts
CHANGED
|
@@ -1,101 +1,102 @@
|
|
|
1
|
-
import { Component,
|
|
1
|
+
import { Component, ConstructorProps, ContextManager, Event, Observable } from '@zcomponent/core';
|
|
2
2
|
export interface HTMLElementProps extends ConstructorProps {
|
|
3
|
-
children?: ComponentChildren;
|
|
4
3
|
/** @zprop */
|
|
5
4
|
innerText?: string;
|
|
6
5
|
}
|
|
7
6
|
export declare class ZHTMLElement<T extends HTMLElement> extends Component {
|
|
8
|
-
|
|
7
|
+
element: T;
|
|
9
8
|
/** @zprop */
|
|
10
9
|
onClick: Event<[MouseEvent]>;
|
|
11
|
-
constructor(
|
|
10
|
+
constructor(contextManager: ContextManager, props: HTMLElementProps, element: T);
|
|
11
|
+
appendChild(c: Component): void;
|
|
12
|
+
private _connectChild;
|
|
12
13
|
private _cssLengthObservable;
|
|
13
14
|
private _attachEvent;
|
|
14
15
|
/** @zprop */
|
|
15
|
-
id: Observable<string>;
|
|
16
|
+
id: Observable<string, never>;
|
|
16
17
|
/** @zprop */
|
|
17
|
-
classList: Observable<string[]>;
|
|
18
|
+
classList: Observable<string[], never>;
|
|
18
19
|
/** @zprop
|
|
19
20
|
* @zdefault [0, "px"]
|
|
20
21
|
* @zgroup Position
|
|
21
22
|
*/
|
|
22
|
-
left: Observable<[number, CSSLengthUnit] | undefined>;
|
|
23
|
+
left: Observable<[number, CSSLengthUnit] | undefined, never>;
|
|
23
24
|
/** @zprop
|
|
24
25
|
* @zdefault [0, "px"]
|
|
25
26
|
* @zgroup Position
|
|
26
27
|
*/
|
|
27
|
-
right: Observable<[number, CSSLengthUnit] | undefined>;
|
|
28
|
+
right: Observable<[number, CSSLengthUnit] | undefined, never>;
|
|
28
29
|
/** @zprop
|
|
29
30
|
* @zdefault [0, "px"]
|
|
30
31
|
* @zgroup Position
|
|
31
32
|
*/
|
|
32
|
-
top: Observable<[number, CSSLengthUnit] | undefined>;
|
|
33
|
+
top: Observable<[number, CSSLengthUnit] | undefined, never>;
|
|
33
34
|
/** @zprop
|
|
34
35
|
* @zdefault [0, "px"]
|
|
35
36
|
* @zgroup Position
|
|
36
37
|
*/
|
|
37
|
-
bottom: Observable<[number, CSSLengthUnit] | undefined>;
|
|
38
|
+
bottom: Observable<[number, CSSLengthUnit] | undefined, never>;
|
|
38
39
|
/** @zprop
|
|
39
40
|
* @zdefault [0, "px"]
|
|
40
41
|
* @zgroup Size
|
|
41
42
|
*/
|
|
42
|
-
width: Observable<[number, CSSLengthUnit] | undefined>;
|
|
43
|
+
width: Observable<[number, CSSLengthUnit] | undefined, never>;
|
|
43
44
|
/** @zprop
|
|
44
45
|
* @zdefault [0, "px"]
|
|
45
46
|
* @zgroup Size
|
|
46
47
|
*/
|
|
47
|
-
height: Observable<[number, CSSLengthUnit] | undefined>;
|
|
48
|
+
height: Observable<[number, CSSLengthUnit] | undefined, never>;
|
|
48
49
|
/** @zprop
|
|
49
50
|
* @zdefault [0, "px"]
|
|
50
51
|
* @zgroup Spacing
|
|
51
52
|
*/
|
|
52
|
-
marginLeft: Observable<[number, CSSLengthUnit] | undefined>;
|
|
53
|
+
marginLeft: Observable<[number, CSSLengthUnit] | undefined, never>;
|
|
53
54
|
/** @zprop
|
|
54
55
|
* @zdefault [0, "px"]
|
|
55
56
|
* @zgroup Spacing
|
|
56
57
|
*/
|
|
57
|
-
marginRight: Observable<[number, CSSLengthUnit] | undefined>;
|
|
58
|
+
marginRight: Observable<[number, CSSLengthUnit] | undefined, never>;
|
|
58
59
|
/** @zprop
|
|
59
60
|
* @zdefault [0, "px"]
|
|
60
61
|
* @zgroup Spacing
|
|
61
62
|
*/
|
|
62
|
-
marginTop: Observable<[number, CSSLengthUnit] | undefined>;
|
|
63
|
+
marginTop: Observable<[number, CSSLengthUnit] | undefined, never>;
|
|
63
64
|
/** @zprop
|
|
64
65
|
* @zdefault [0, "px"]
|
|
65
66
|
* @zgroup Spacing
|
|
66
67
|
*/
|
|
67
|
-
marginBottom: Observable<[number, CSSLengthUnit] | undefined>;
|
|
68
|
+
marginBottom: Observable<[number, CSSLengthUnit] | undefined, never>;
|
|
68
69
|
/** @zprop
|
|
69
70
|
* @zdefault [0, "px"]
|
|
70
71
|
* @zgroup Spacing
|
|
71
72
|
*/
|
|
72
|
-
paddingLeft: Observable<[number, CSSLengthUnit] | undefined>;
|
|
73
|
+
paddingLeft: Observable<[number, CSSLengthUnit] | undefined, never>;
|
|
73
74
|
/** @zprop
|
|
74
75
|
* @zdefault [0, "px"]
|
|
75
76
|
* @zgroup Spacing
|
|
76
77
|
*/
|
|
77
|
-
paddingRight: Observable<[number, CSSLengthUnit] | undefined>;
|
|
78
|
+
paddingRight: Observable<[number, CSSLengthUnit] | undefined, never>;
|
|
78
79
|
/** @zprop
|
|
79
80
|
* @zdefault [0, "px"]
|
|
80
81
|
* @zgroup Spacing
|
|
81
82
|
*/
|
|
82
|
-
paddingTop: Observable<[number, CSSLengthUnit] | undefined>;
|
|
83
|
+
paddingTop: Observable<[number, CSSLengthUnit] | undefined, never>;
|
|
83
84
|
/** @zprop
|
|
84
85
|
* @zdefault [0, "px"]
|
|
85
86
|
* @zgroup Spacing
|
|
86
87
|
*/
|
|
87
|
-
paddingBottom: Observable<[number, CSSLengthUnit] | undefined>;
|
|
88
|
+
paddingBottom: Observable<[number, CSSLengthUnit] | undefined, never>;
|
|
88
89
|
/** @zprop
|
|
89
90
|
* @zgroup Position
|
|
90
91
|
* @zdefault static
|
|
91
92
|
*/
|
|
92
|
-
position: Observable<CSSPosition>;
|
|
93
|
+
position: Observable<CSSPosition, never>;
|
|
93
94
|
/** @zprop */
|
|
94
|
-
display: Observable<CSSDisplay | undefined>;
|
|
95
|
+
display: Observable<CSSDisplay | undefined, never>;
|
|
95
96
|
/** @zprop
|
|
96
97
|
* @zdefault row
|
|
97
98
|
*/
|
|
98
|
-
flexDirection: Observable<CSSFlexDirection>;
|
|
99
|
+
flexDirection: Observable<CSSFlexDirection, never>;
|
|
99
100
|
dispose(): never;
|
|
100
101
|
}
|
|
101
102
|
export declare enum CSSLengthUnit {
|
package/lib/HTMLElement.js
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { Component, Event, Observable } from '@zcomponent/core';
|
|
2
2
|
import { useOnNodeConstructed, useOnNodeDisposed } from './context';
|
|
3
3
|
export class ZHTMLElement extends Component {
|
|
4
|
-
constructor(
|
|
5
|
-
super(
|
|
6
|
-
this.
|
|
4
|
+
constructor(contextManager, props, element) {
|
|
5
|
+
super(contextManager, props);
|
|
6
|
+
this.element = element;
|
|
7
7
|
/** @zprop */
|
|
8
8
|
this.onClick = new Event();
|
|
9
9
|
/** @zprop */
|
|
10
|
-
this.id = new Observable('', v => (this.
|
|
10
|
+
this.id = new Observable('', v => (this.element.id = v));
|
|
11
11
|
/** @zprop */
|
|
12
|
-
this.classList = new Observable([], v => (this.
|
|
12
|
+
this.classList = new Observable([], v => (this.element.className = v.join(' ')));
|
|
13
13
|
/** @zprop
|
|
14
14
|
* @zdefault [0, "px"]
|
|
15
15
|
* @zgroup Position
|
|
@@ -84,42 +84,51 @@ export class ZHTMLElement extends Component {
|
|
|
84
84
|
* @zgroup Position
|
|
85
85
|
* @zdefault static
|
|
86
86
|
*/
|
|
87
|
-
this.position = new Observable(CSSPosition.static, v => (this.
|
|
87
|
+
this.position = new Observable(CSSPosition.static, v => (this.element.style.position = v));
|
|
88
88
|
/** @zprop */
|
|
89
|
-
this.display = new Observable(undefined, v => (this.
|
|
89
|
+
this.display = new Observable(undefined, v => (this.element.style.display = v ?? ''));
|
|
90
90
|
/** @zprop
|
|
91
91
|
* @zdefault row
|
|
92
92
|
*/
|
|
93
|
-
this.flexDirection = new Observable(CSSFlexDirection.row, v => (this.
|
|
93
|
+
this.flexDirection = new Observable(CSSFlexDirection.row, v => (this.element.style.flexDirection = v));
|
|
94
94
|
if (props.innerText !== undefined)
|
|
95
|
-
|
|
95
|
+
element.innerText = props.innerText;
|
|
96
96
|
for (const child of this.children) {
|
|
97
|
-
|
|
98
|
-
if (root instanceof Node)
|
|
99
|
-
this.root.appendChild(root);
|
|
100
|
-
});
|
|
97
|
+
this._connectChild(child);
|
|
101
98
|
}
|
|
102
99
|
this._attachEvent(this.onClick, 'click');
|
|
103
|
-
useOnNodeConstructed(contextManager).emit(this.
|
|
100
|
+
useOnNodeConstructed(contextManager).emit(this.element);
|
|
101
|
+
}
|
|
102
|
+
appendChild(c) {
|
|
103
|
+
super.appendChild(c);
|
|
104
|
+
this._connectChild(c);
|
|
105
|
+
}
|
|
106
|
+
_connectChild(c) {
|
|
107
|
+
if (!this.element)
|
|
108
|
+
return;
|
|
109
|
+
for (const element of c.elementsResolved) {
|
|
110
|
+
if (element instanceof Node)
|
|
111
|
+
this.element.appendChild(element);
|
|
112
|
+
}
|
|
104
113
|
}
|
|
105
114
|
_cssLengthObservable(prop) {
|
|
106
115
|
return new Observable(undefined, v => {
|
|
107
|
-
this.
|
|
116
|
+
this.element.style[prop] = converCSSLength(v) ?? '';
|
|
108
117
|
});
|
|
109
118
|
}
|
|
110
119
|
_attachEvent(evt, evtName) {
|
|
111
120
|
const handler = (e) => {
|
|
112
121
|
evt.emit(e);
|
|
113
122
|
};
|
|
114
|
-
evt.
|
|
123
|
+
evt.hasListeners.addListener(b => {
|
|
115
124
|
if (b)
|
|
116
|
-
this.
|
|
125
|
+
this.element.addEventListener(evtName, handler);
|
|
117
126
|
else
|
|
118
|
-
this.
|
|
127
|
+
this.element.removeEventListener(evtName, handler);
|
|
119
128
|
});
|
|
120
129
|
}
|
|
121
130
|
dispose() {
|
|
122
|
-
useOnNodeDisposed(this.contextManager).emit(this.
|
|
131
|
+
useOnNodeDisposed(this.contextManager).emit(this.element);
|
|
123
132
|
return super.dispose();
|
|
124
133
|
}
|
|
125
134
|
}
|
package/lib/button.d.ts
CHANGED
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import { ContextManager } from '@zcomponent/core';
|
|
2
2
|
import { HTMLElementProps, ZHTMLElement } from './HTMLElement';
|
|
3
|
-
export declare type ButtonConstructorProps = HTMLElementProps;
|
|
4
3
|
/** @zcomponent
|
|
5
4
|
* @ztag html/element/button
|
|
6
5
|
* @zparents html/element/**
|
|
7
6
|
* @zicon html
|
|
8
7
|
*/
|
|
9
8
|
export declare class Button extends ZHTMLElement<HTMLButtonElement> {
|
|
10
|
-
constructor(
|
|
9
|
+
constructor(mgr: ContextManager, props: HTMLElementProps);
|
|
11
10
|
}
|
package/lib/button.js
CHANGED
|
@@ -5,7 +5,7 @@ import { ZHTMLElement } from './HTMLElement';
|
|
|
5
5
|
* @zicon html
|
|
6
6
|
*/
|
|
7
7
|
export class Button extends ZHTMLElement {
|
|
8
|
-
constructor(
|
|
9
|
-
super(
|
|
8
|
+
constructor(mgr, props) {
|
|
9
|
+
super(mgr, props, document.createElement('button'));
|
|
10
10
|
}
|
|
11
11
|
}
|
package/lib/context.d.ts
CHANGED
|
@@ -1,10 +1,7 @@
|
|
|
1
|
-
import { Event, ContextManager } from '@zcomponent/core';
|
|
2
|
-
export
|
|
1
|
+
import { Event, ContextManager, Context } from '@zcomponent/core';
|
|
2
|
+
export declare class HTMLContext extends Context {
|
|
3
|
+
onNodeConstructed: Event<[Node]>;
|
|
4
|
+
onNodeDisposed: Event<[Node]>;
|
|
3
5
|
}
|
|
4
|
-
export interface HTMLContext {
|
|
5
|
-
readonly onNodeConstructed: Event<[Node]>;
|
|
6
|
-
readonly onNodeDisposed: Event<[Node]>;
|
|
7
|
-
}
|
|
8
|
-
export declare const HTMLContext: import("@zcomponent/core").ContextTypeWithDefault<HTMLContext, [props?: HTMLContextProperties | undefined]>;
|
|
9
6
|
export declare function useOnNodeConstructed(mgr: ContextManager): Event<[Node]>;
|
|
10
7
|
export declare function useOnNodeDisposed(mgr: ContextManager): Event<[Node]>;
|
package/lib/context.js
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
}
|
|
1
|
+
import { Event, Context } from '@zcomponent/core';
|
|
2
|
+
export class HTMLContext extends Context {
|
|
3
|
+
constructor() {
|
|
4
|
+
super(...arguments);
|
|
5
|
+
this.onNodeConstructed = new Event();
|
|
6
|
+
this.onNodeDisposed = new Event();
|
|
7
|
+
}
|
|
8
|
+
}
|
|
8
9
|
export function useOnNodeConstructed(mgr) {
|
|
9
10
|
return mgr.get(HTMLContext).onNodeConstructed;
|
|
10
11
|
}
|
package/lib/div.d.ts
CHANGED
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import { ContextManager } from '@zcomponent/core';
|
|
2
2
|
import { HTMLElementProps, ZHTMLElement } from './HTMLElement';
|
|
3
|
-
export declare type ButtonConstructorProps = HTMLElementProps;
|
|
4
3
|
/** @zcomponent
|
|
5
4
|
* @ztag html/element/div
|
|
6
5
|
* @zparents html/element/**
|
|
7
6
|
* @zicon html
|
|
8
7
|
*/
|
|
9
8
|
export declare class Div extends ZHTMLElement<HTMLDivElement> {
|
|
10
|
-
constructor(
|
|
9
|
+
constructor(mgr: ContextManager, props: HTMLElementProps);
|
|
11
10
|
}
|
package/lib/div.js
CHANGED
|
@@ -5,7 +5,7 @@ import { ZHTMLElement } from './HTMLElement';
|
|
|
5
5
|
* @zicon html
|
|
6
6
|
*/
|
|
7
7
|
export class Div extends ZHTMLElement {
|
|
8
|
-
constructor(
|
|
9
|
-
super(
|
|
8
|
+
constructor(mgr, props) {
|
|
9
|
+
super(mgr, props, document.createElement('div'));
|
|
10
10
|
}
|
|
11
11
|
}
|
package/lib/img.d.ts
CHANGED
|
@@ -14,5 +14,5 @@ export interface ImgConstructorProps extends HTMLElementProps {
|
|
|
14
14
|
* @zparents html/element/**
|
|
15
15
|
*/
|
|
16
16
|
export declare class Img extends ZHTMLElement<HTMLImageElement> {
|
|
17
|
-
constructor(
|
|
17
|
+
constructor(mgr: ContextManager, props: ImgConstructorProps);
|
|
18
18
|
}
|
package/lib/img.js
CHANGED
|
@@ -6,13 +6,13 @@ import { ZHTMLElement } from './HTMLElement';
|
|
|
6
6
|
* @zparents html/element/**
|
|
7
7
|
*/
|
|
8
8
|
export class Img extends ZHTMLElement {
|
|
9
|
-
constructor(
|
|
9
|
+
constructor(mgr, props) {
|
|
10
10
|
const elm = document.createElement('img');
|
|
11
11
|
registerLoadable(mgr, new Promise((resolve, reject) => {
|
|
12
12
|
elm.src = props.src;
|
|
13
13
|
elm.addEventListener('load', () => resolve());
|
|
14
14
|
elm.addEventListener('error', () => reject());
|
|
15
15
|
}));
|
|
16
|
-
super(
|
|
16
|
+
super(mgr, props, elm);
|
|
17
17
|
}
|
|
18
18
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zcomponent/html",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.3",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"types": "index.d.ts",
|
|
@@ -18,10 +18,10 @@
|
|
|
18
18
|
"author": "Zappar Limited",
|
|
19
19
|
"license": "Proprietary",
|
|
20
20
|
"dependencies": {
|
|
21
|
-
"@zcomponent/core": "~0.0.
|
|
21
|
+
"@zcomponent/core": "~0.0.15"
|
|
22
22
|
},
|
|
23
23
|
"devDependencies": {
|
|
24
|
-
"typescript": "^4.
|
|
24
|
+
"typescript": "^4.9.4"
|
|
25
25
|
},
|
|
26
26
|
"zexports": [
|
|
27
27
|
"./lib/**/*"
|