x4js 2.2.64 → 2.2.65
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/package.json +1 -1
- package/src/components/dialog/dialog.module.scss +3 -1
- package/src/components/form/form.module.scss +7 -7
- package/src/components/popup/popup.ts +5 -2
- package/src/components/propgrid/progrid.module.scss +53 -35
- package/src/components/propgrid/propgrid.ts +19 -6
- package/src/core/component.ts +3 -3
package/package.json
CHANGED
|
@@ -21,18 +21,18 @@
|
|
|
21
21
|
}
|
|
22
22
|
|
|
23
23
|
.x4form {
|
|
24
|
-
|
|
24
|
+
@extend %vbox;
|
|
25
25
|
@extend %flex;
|
|
26
|
-
|
|
27
|
-
|
|
26
|
+
|
|
27
|
+
padding: 16px;
|
|
28
28
|
background-color: var( --color-form );
|
|
29
|
+
|
|
30
|
+
&.horizontal {
|
|
31
|
+
flex-direction: row;
|
|
32
|
+
}
|
|
29
33
|
|
|
30
34
|
&.no-flex {
|
|
31
35
|
flex-grow: 0;
|
|
32
36
|
}
|
|
33
|
-
|
|
34
|
-
&>.xcontainer {
|
|
35
|
-
|
|
36
|
-
}
|
|
37
37
|
}
|
|
38
38
|
|
|
@@ -431,8 +431,11 @@ class CMover {
|
|
|
431
431
|
this.self = ref ? true : false;
|
|
432
432
|
|
|
433
433
|
const mouseDown = ( e: PointerEvent ) => {
|
|
434
|
-
if( this.self && e.target
|
|
435
|
-
|
|
434
|
+
if( this.self && e.target ) {
|
|
435
|
+
const clickable = (e.target as HTMLElement).closest('button, input, a, [role="button"]');
|
|
436
|
+
if( clickable ) {
|
|
437
|
+
return;
|
|
438
|
+
}
|
|
436
439
|
}
|
|
437
440
|
|
|
438
441
|
x.setCapture( e.pointerId );
|
|
@@ -43,48 +43,66 @@
|
|
|
43
43
|
.group {
|
|
44
44
|
padding: 6px 4px 4px 4px;
|
|
45
45
|
min-height: 2em;
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
font-style: italic;
|
|
52
|
-
font-weight: normal;
|
|
53
|
-
font-size: 90%;
|
|
54
|
-
color: var( --text-ternary );
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
&:not(:first-child ) {
|
|
58
|
-
border-top: 1px solid var(--color-primary-a50);
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
&:not( :last-child ) {
|
|
62
|
-
border-bottom: 1px solid var(--color-primary-a50);
|
|
63
|
-
//box-shadow: 4px 4px 8px rgba(0, 0, 0, 0.2);
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
display: flex;
|
|
46
|
+
background-color: var( --background-secondary );
|
|
47
|
+
margin-bottom: 8px;
|
|
48
|
+
box-shadow: 4px 3px 8px rgba(0, 0, 0, 0.4);
|
|
49
|
+
color: var(--color-primary-a50);
|
|
50
|
+
display: flex;
|
|
67
51
|
align-items: center;
|
|
68
|
-
padding
|
|
52
|
+
padding: 8px;
|
|
69
53
|
gap: 8px;
|
|
70
54
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
55
|
+
&.sticky {
|
|
56
|
+
position: sticky;
|
|
57
|
+
top: 0;
|
|
58
|
+
z-index: 1;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
.hdr {
|
|
62
|
+
&>.gadgets {
|
|
63
|
+
gap: 8px;
|
|
64
|
+
&> .x4 {
|
|
65
|
+
margin: 0;
|
|
66
|
+
padding: 0;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
74
69
|
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
70
|
+
.title {
|
|
71
|
+
font-weight: bold;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
&>.x4button {
|
|
75
|
+
background-color: transparent;
|
|
76
|
+
color: var(--color-primary-a50);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
&>.x4label {
|
|
80
|
+
.x4icon {
|
|
81
|
+
.fa-secondary,
|
|
82
|
+
.fa-primary {
|
|
83
|
+
fill: var( --color-primary-a50 );
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
width: 1em;
|
|
87
|
+
height: 1em;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
80
91
|
|
|
81
|
-
|
|
82
|
-
|
|
92
|
+
&>.desc {
|
|
93
|
+
font-style: italic;
|
|
94
|
+
font-weight: normal;
|
|
95
|
+
font-size: 90%;
|
|
96
|
+
color: var( --text-ternary );
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
&:not(:first-child ) {
|
|
100
|
+
//border-top: 1px solid var(--color-primary-a50);
|
|
83
101
|
}
|
|
84
102
|
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
103
|
+
&:not( :last-child ) {
|
|
104
|
+
border-bottom: 1px solid var(--color-primary-a50);
|
|
105
|
+
//box-shadow: 4px 4px 8px rgba(0, 0, 0, 0.2);
|
|
88
106
|
}
|
|
89
107
|
}
|
|
90
108
|
|
|
@@ -50,10 +50,12 @@ export interface PropertyValue {
|
|
|
50
50
|
export interface PropertyGroup {
|
|
51
51
|
title: string;
|
|
52
52
|
desc?: string;
|
|
53
|
+
name?: string;
|
|
53
54
|
icon?: string;
|
|
54
55
|
cls?: string;
|
|
55
56
|
collapsible?: boolean | number; // -1 for collapsible+collapsed
|
|
56
57
|
items: PropertyValue[];
|
|
58
|
+
gadgets?: Component[];
|
|
57
59
|
}
|
|
58
60
|
|
|
59
61
|
export interface PropertyProps extends ComponentProps {
|
|
@@ -118,6 +120,9 @@ export class PropertyGrid extends VBox {
|
|
|
118
120
|
if( i ) {
|
|
119
121
|
const row = this.makePropertyRow(i);
|
|
120
122
|
row.addClass( idx&1 ? "even" : "odd" );
|
|
123
|
+
if( g.name ) {
|
|
124
|
+
row.setData( "group", g.name );
|
|
125
|
+
}
|
|
121
126
|
|
|
122
127
|
items.push( row );
|
|
123
128
|
}
|
|
@@ -163,13 +168,16 @@ export class PropertyGrid extends VBox {
|
|
|
163
168
|
|
|
164
169
|
const tr = new HBox({
|
|
165
170
|
cls,
|
|
171
|
+
flex: 1,
|
|
166
172
|
content: [
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
+
new VBox( { flex: 1, content: [
|
|
174
|
+
new HBox( { cls: 'hdr', content: [
|
|
175
|
+
new Label({ flex:1, cls: "title", text: g.title, icon: g.icon }),
|
|
176
|
+
g.gadgets ? new HBox( { cls: 'gadgets', content: g.gadgets } ) : null,
|
|
177
|
+
g.collapsible? new Button({ icon: icons.updown, click: (e) => toggle(tr) }) : null,
|
|
178
|
+
]}),
|
|
179
|
+
g.desc ? new SimpleText({ cls: "desc", text: g.desc }) : null,
|
|
180
|
+
]}),
|
|
173
181
|
]
|
|
174
182
|
});
|
|
175
183
|
|
|
@@ -352,5 +360,10 @@ export class PropertyGrid extends VBox {
|
|
|
352
360
|
this.setPropValue( p, props[p] );
|
|
353
361
|
}
|
|
354
362
|
}
|
|
363
|
+
|
|
364
|
+
enableGroup( group_name: string, ena = true ) {
|
|
365
|
+
const els = this.queryAll( `.row[data-group="${group_name}"]` );
|
|
366
|
+
els.forEach( x => x.enable( ena ) );
|
|
367
|
+
}
|
|
355
368
|
}
|
|
356
369
|
|
package/src/core/component.ts
CHANGED
|
@@ -45,13 +45,12 @@ const RE_NUMBER = /^-?\d+(\.\d*)?$/;
|
|
|
45
45
|
|
|
46
46
|
function genClassNames( x: any ): string[] {
|
|
47
47
|
|
|
48
|
-
const classes = [];
|
|
49
48
|
let self = Object.getPrototypeOf(x);
|
|
50
|
-
|
|
51
49
|
if( self.constructor==Component ) {
|
|
52
|
-
return ["x4-comp"];
|
|
50
|
+
return ["x4-comp","x4"];
|
|
53
51
|
}
|
|
54
52
|
|
|
53
|
+
const classes = [];
|
|
55
54
|
while (self && self.constructor !== Component ) {
|
|
56
55
|
const clsname:string = self.constructor.name;
|
|
57
56
|
const clsns: string = Object.prototype.hasOwnProperty.call(self.constructor,x4_class_ns_sym) ? self.constructor[x4_class_ns_sym] : "";
|
|
@@ -59,6 +58,7 @@ function genClassNames( x: any ): string[] {
|
|
|
59
58
|
self = Object.getPrototypeOf(self);
|
|
60
59
|
}
|
|
61
60
|
|
|
61
|
+
classes.push( "x4" );
|
|
62
62
|
return classes;
|
|
63
63
|
}
|
|
64
64
|
|