@zcomponent/html 0.0.1 → 0.0.2

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 CHANGED
@@ -1,5 +1,5 @@
1
- import { Component, ConstructorProps, ContextManager } from '@zcomponent/core';
2
- interface CSSConstructorProps extends ConstructorProps {
1
+ import { Component, ContextManager } from '@zcomponent/core';
2
+ interface CSSConstructorProps {
3
3
  /** @zprop
4
4
  * @zvalues files *.css
5
5
  */
@@ -13,9 +13,10 @@ interface CSSConstructorProps extends ConstructorProps {
13
13
  * @zcomponent
14
14
  * @zicon html
15
15
  */
16
- export declare class CSS extends Component<CSSConstructorProps> {
16
+ export declare class CSS extends Component {
17
+ protected constructorProps: CSSConstructorProps;
17
18
  private _elm;
18
- constructor(props: CSSConstructorProps, contextManager: ContextManager);
19
+ constructor(contextManager: ContextManager, constructorProps: CSSConstructorProps);
19
20
  dispose(): never;
20
21
  }
21
22
  export {};
package/lib/CSS.js CHANGED
@@ -9,11 +9,12 @@ const alreadyAdded = new Map();
9
9
  * @zicon html
10
10
  */
11
11
  export class CSS extends Component {
12
- constructor(props, contextManager) {
13
- super(props, contextManager);
14
- if (!props.source)
12
+ constructor(contextManager, constructorProps) {
13
+ super(contextManager, constructorProps);
14
+ this.constructorProps = constructorProps;
15
+ if (!constructorProps.source)
15
16
  return;
16
- this._elm = alreadyAdded.get(props.source);
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', props.source);
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(props.source, this._elm);
32
+ alreadyAdded.set(constructorProps.source, this._elm);
32
33
  }
33
34
  }
34
35
  dispose() {
@@ -1,101 +1,102 @@
1
- import { Component, ComponentChildren, ConstructorProps, ContextManager, Event, Observable } from '@zcomponent/core';
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
- root: T;
7
+ element: T;
9
8
  /** @zprop */
10
9
  onClick: Event<[MouseEvent]>;
11
- constructor(props: HTMLElementProps, contextManager: ContextManager, root: T);
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 {
@@ -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(props, contextManager, root) {
5
- super(props, contextManager);
6
- this.root = root;
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.root.id = v));
10
+ this.id = new Observable('', v => (this.element.id = v));
11
11
  /** @zprop */
12
- this.classList = new Observable([], v => (this.root.className = v.join(' ')));
12
+ this.classList = new Observable([], v => (this.element.className = v.join(' ')));
13
13
  /** @zprop
14
14
  * @zdefault [0, "px"]
15
15
  * @zgroup Position
@@ -84,27 +84,36 @@ export class ZHTMLElement extends Component {
84
84
  * @zgroup Position
85
85
  * @zdefault static
86
86
  */
87
- this.position = new Observable(CSSPosition.static, v => (this.root.style.position = v));
87
+ this.position = new Observable(CSSPosition.static, v => (this.element.style.position = v));
88
88
  /** @zprop */
89
- this.display = new Observable(undefined, v => (this.root.style.display = v ?? ''));
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.root.style.flexDirection = v));
93
+ this.flexDirection = new Observable(CSSFlexDirection.row, v => (this.element.style.flexDirection = v));
94
94
  if (props.innerText !== undefined)
95
- root.innerText = props.innerText;
95
+ element.innerText = props.innerText;
96
96
  for (const child of this.children) {
97
- child.forEachRoot(root => {
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.root);
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.root.style[prop] = converCSSLength(v) ?? '';
116
+ this.element.style[prop] = converCSSLength(v) ?? '';
108
117
  });
109
118
  }
110
119
  _attachEvent(evt, evtName) {
@@ -113,13 +122,13 @@ export class ZHTMLElement extends Component {
113
122
  };
114
123
  evt.hasBindings.withValue(b => {
115
124
  if (b)
116
- this.root.addEventListener(evtName, handler);
125
+ this.element.addEventListener(evtName, handler);
117
126
  else
118
- this.root.removeEventListener(evtName, handler);
127
+ this.element.removeEventListener(evtName, handler);
119
128
  });
120
129
  }
121
130
  dispose() {
122
- useOnNodeDisposed(this.contextManager).emit(this.root);
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(props: ButtonConstructorProps, mgr: ContextManager);
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(props, mgr) {
9
- super(props, mgr, document.createElement('button'));
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 interface HTMLContextProperties {
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 { defineContextType, Event } from '@zcomponent/core';
2
- export const HTMLContext = defineContextType((ctx, props) => {
3
- return {
4
- onNodeConstructed: new Event(),
5
- onNodeDisposed: new Event(),
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(props: ButtonConstructorProps, mgr: ContextManager);
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(props, mgr) {
9
- super(props, mgr, document.createElement('div'));
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(props: ImgConstructorProps, mgr: ContextManager);
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(props, mgr) {
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(props, mgr, elm);
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.1",
3
+ "version": "0.0.2",
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.2"
21
+ "@zcomponent/core": "~0.0.9"
22
22
  },
23
23
  "devDependencies": {
24
- "typescript": "^4.6.3"
24
+ "typescript": "^4.9.4"
25
25
  },
26
26
  "zexports": [
27
27
  "./lib/**/*"