x4js 1.4.39 → 1.4.42
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 +15 -1
- package/lib/colorpicker.d.ts +2 -1
- package/lib/combobox.js +11 -2
- package/lib/dialog.js +5 -3
- package/lib/gridview.js +2 -0
- package/lib/listview.js +1 -0
- package/lib/x4.css +8 -6
- package/lib/x4events.d.ts +5 -2
- package/package.json +3 -2
- package/src/cardview.ts +4 -1
- package/src/colorpicker.ts +2 -2
- package/src/combobox.ts +12 -2
- package/src/dialog.ts +6 -4
- package/src/gridview.ts +2 -0
- package/src/listview.ts +1 -0
- package/src/x4.less +9 -6
- package/src/x4events.ts +5 -2
package/README.md
CHANGED
|
@@ -2,4 +2,18 @@
|
|
|
2
2
|
|
|
3
3
|
This is the x4 framework repository.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
X4 is a full typescript framework to develop Web or Desktop applications.
|
|
6
|
+
Included more than 50 controls like grids, charts, etc. Everything needed to push the limits of your creativity.
|
|
7
|
+
If these components are not enough, you can create your in few lines.
|
|
8
|
+
|
|
9
|
+
## Home page
|
|
10
|
+
see [home](https://x4js.org)
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
## Documentation
|
|
14
|
+
see [documentation](https://x4js.org/doc/)
|
|
15
|
+
|
|
16
|
+
## API
|
|
17
|
+
see [API](https://x4js.org/api/)
|
|
18
|
+
|
|
19
|
+
|
package/lib/colorpicker.d.ts
CHANGED
|
@@ -91,7 +91,8 @@ export interface ColorPickerEditorProps extends ColorPickerProps {
|
|
|
91
91
|
labelWidth?: number;
|
|
92
92
|
cust_colors?: Color[];
|
|
93
93
|
displayValue?: false;
|
|
94
|
-
change
|
|
94
|
+
change?: EventCallback<EvChange>;
|
|
95
|
+
name?: string;
|
|
95
96
|
}
|
|
96
97
|
export declare class ColorPickerEditor extends HLayout<ColorPickerEditorProps, ColorPickerEventMap> {
|
|
97
98
|
constructor(props: ColorPickerEditorProps);
|
package/lib/combobox.js
CHANGED
|
@@ -131,7 +131,7 @@ class ComboBox extends layout_1.HLayout {
|
|
|
131
131
|
*/
|
|
132
132
|
showPopup() {
|
|
133
133
|
let props = this.m_props;
|
|
134
|
-
if (props.readOnly) {
|
|
134
|
+
if (props.readOnly || this.hasClass("@disable")) {
|
|
135
135
|
return;
|
|
136
136
|
}
|
|
137
137
|
// need creation ?
|
|
@@ -200,6 +200,11 @@ class ComboBox extends layout_1.HLayout {
|
|
|
200
200
|
this.m_props.value = item.id;
|
|
201
201
|
}
|
|
202
202
|
}
|
|
203
|
+
else {
|
|
204
|
+
if (this.m_ui_input && this.m_ui_input instanceof input_1.Input) {
|
|
205
|
+
this.m_ui_input.value = "";
|
|
206
|
+
}
|
|
207
|
+
}
|
|
203
208
|
}
|
|
204
209
|
/**
|
|
205
210
|
*
|
|
@@ -218,13 +223,17 @@ class ComboBox extends layout_1.HLayout {
|
|
|
218
223
|
if ((0, tools_1.isFunction)(items)) {
|
|
219
224
|
items = items();
|
|
220
225
|
}
|
|
221
|
-
items.some((v) => {
|
|
226
|
+
const found = items.some((v) => {
|
|
222
227
|
if (v.id === id) {
|
|
223
228
|
this._setInput(v);
|
|
224
229
|
this.m_selection = v;
|
|
225
230
|
return true;
|
|
226
231
|
}
|
|
227
232
|
});
|
|
233
|
+
if (!found) {
|
|
234
|
+
this._setInput(null);
|
|
235
|
+
this.m_selection = null;
|
|
236
|
+
}
|
|
228
237
|
}
|
|
229
238
|
get input() {
|
|
230
239
|
return this.m_ui_input instanceof input_1.Input ? this.m_ui_input : null;
|
package/lib/dialog.js
CHANGED
|
@@ -149,7 +149,9 @@ class Dialog extends popup_1.Popup {
|
|
|
149
149
|
this.setStyleValue('height', this.m_props.dlgHeight + '%');
|
|
150
150
|
}
|
|
151
151
|
this.addClass('@resized');
|
|
152
|
-
this.m_el_title
|
|
152
|
+
if (this.m_el_title) {
|
|
153
|
+
this.m_el_title.setStyleValue("width", "auto");
|
|
154
|
+
}
|
|
153
155
|
if (this.m_props.maximized) {
|
|
154
156
|
this._maximize();
|
|
155
157
|
this.emit('size', (0, component_1.EvSize)(null));
|
|
@@ -344,9 +346,9 @@ class Dialog extends popup_1.Popup {
|
|
|
344
346
|
let { x, y } = (0, tools_1.getMousePos)(event, true);
|
|
345
347
|
let wrc = (0, component_1.flyWrap)(x4dom_1.x4document.body).getBoundingRect();
|
|
346
348
|
let rc = this.getBoundingRect(true);
|
|
347
|
-
let trc = this.m_el_title.getBoundingRect();
|
|
349
|
+
///let trc = this.m_el_title.getBoundingRect();
|
|
348
350
|
let dx = x - rc.left, dy = y - rc.top;
|
|
349
|
-
let cstyle = this.getComputedStyle();
|
|
351
|
+
//let cstyle = this.getComputedStyle();
|
|
350
352
|
//let topw = cstyle.parse('marginTop') + cstyle.parse('paddingTop') + cstyle.parse('borderTopWidth');
|
|
351
353
|
//let botw = cstyle.parse('marginBottom') + cstyle.parse('paddingBottom') + cstyle.parse('borderBottomWidth');
|
|
352
354
|
//let lftw = cstyle.parse('marginLeft') + cstyle.parse('paddingLeft') + cstyle.parse('borderLeftWidth');
|
package/lib/gridview.js
CHANGED
|
@@ -398,12 +398,14 @@ class GridView extends layout_1.VLayout {
|
|
|
398
398
|
_col.width = width;
|
|
399
399
|
if (_col.flex) {
|
|
400
400
|
_col.$hdr.removeClass('@flex');
|
|
401
|
+
_col.$ftr?.removeClass('@flex');
|
|
401
402
|
_col.flex = undefined;
|
|
402
403
|
updateFlex = true;
|
|
403
404
|
}
|
|
404
405
|
}
|
|
405
406
|
else if (width < 0 && !_col.flex) {
|
|
406
407
|
_col.$hdr.addClass('@flex');
|
|
408
|
+
_col.$ftr?.addClass('@flex');
|
|
407
409
|
_col.flex = 1;
|
|
408
410
|
updateFlex = true;
|
|
409
411
|
}
|
package/lib/listview.js
CHANGED
|
@@ -481,6 +481,7 @@ class PopupListView extends popup_1.Popup {
|
|
|
481
481
|
constructor(props) {
|
|
482
482
|
super({ tabIndex: false });
|
|
483
483
|
this.enableMask(false);
|
|
484
|
+
this.addClass("@non-maskable");
|
|
484
485
|
props.tabIndex = false;
|
|
485
486
|
this.m_list = new ListView(props);
|
|
486
487
|
//this.m_list.addClass( '@fit' );
|
package/lib/x4.css
CHANGED
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
28
28
|
**/
|
|
29
29
|
:root {
|
|
30
|
-
--x4-font: "
|
|
30
|
+
--x4-font: "Helvetica, Arial, Sans-Serif";
|
|
31
31
|
--x4-font-size: 13px;
|
|
32
32
|
--x4-base-color: #266888;
|
|
33
33
|
--x4-selection-color: #2458B3;
|
|
@@ -61,7 +61,7 @@
|
|
|
61
61
|
--x4-icon-angle-down: 'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512" fill="currentColor"><path d="M192 384c-8.188 0-16.38-3.125-22.62-9.375l-160-160c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L192 306.8l137.4-137.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-160 160C208.4 380.9 200.2 384 192 384z"/></svg>';
|
|
62
62
|
--x4-icon-calendar-days: 'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512" fill="currentColor"><path d="M160 32V64H288V32C288 14.33 302.3 0 320 0C337.7 0 352 14.33 352 32V64H400C426.5 64 448 85.49 448 112V160H0V112C0 85.49 21.49 64 48 64H96V32C96 14.33 110.3 0 128 0C145.7 0 160 14.33 160 32zM0 192H448V464C448 490.5 426.5 512 400 512H48C21.49 512 0 490.5 0 464V192zM64 304C64 312.8 71.16 320 80 320H112C120.8 320 128 312.8 128 304V272C128 263.2 120.8 256 112 256H80C71.16 256 64 263.2 64 272V304zM192 304C192 312.8 199.2 320 208 320H240C248.8 320 256 312.8 256 304V272C256 263.2 248.8 256 240 256H208C199.2 256 192 263.2 192 272V304zM336 256C327.2 256 320 263.2 320 272V304C320 312.8 327.2 320 336 320H368C376.8 320 384 312.8 384 304V272C384 263.2 376.8 256 368 256H336zM64 432C64 440.8 71.16 448 80 448H112C120.8 448 128 440.8 128 432V400C128 391.2 120.8 384 112 384H80C71.16 384 64 391.2 64 400V432zM208 384C199.2 384 192 391.2 192 400V432C192 440.8 199.2 448 208 448H240C248.8 448 256 440.8 256 432V400C256 391.2 248.8 384 240 384H208zM320 432C320 440.8 327.2 448 336 448H368C376.8 448 384 440.8 384 432V400C384 391.2 376.8 384 368 384H336C327.2 384 320 391.2 320 400V432z"/></svg>';
|
|
63
63
|
--x4-icon-tip: 'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" fill="currentColor"><path d="M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM256 464c-114.7 0-208-93.31-208-208S141.3 48 256 48s208 93.31 208 208S370.7 464 256 464zM296 336h-16V248C280 234.8 269.3 224 256 224H224C210.8 224 200 234.8 200 248S210.8 272 224 272h8v64h-16C202.8 336 192 346.8 192 360S202.8 384 216 384h80c13.25 0 24-10.75 24-24S309.3 336 296 336zM256 192c17.67 0 32-14.33 32-32c0-17.67-14.33-32-32-32S224 142.3 224 160C224 177.7 238.3 192 256 192z"/></svg>';
|
|
64
|
-
--x4-check: 'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512" fill="currentColor"><path d="M440.1 103C450.3 112.4 450.3 127.6 440.1 136.1L176.1 400.1C167.6 410.3 152.4 410.3 143 400.1L7.029 264.1C-2.343 255.6-2.343 240.4 7.029 231C16.4 221.7 31.6 221.7 40.97 231L160 350.1L407 103C416.4 93.66 431.6 93.66 440.1 103V103z"/></svg>';
|
|
64
|
+
--x4-icon-check: 'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512" fill="currentColor"><path d="M440.1 103C450.3 112.4 450.3 127.6 440.1 136.1L176.1 400.1C167.6 410.3 152.4 410.3 143 400.1L7.029 264.1C-2.343 255.6-2.343 240.4 7.029 231C16.4 221.7 31.6 221.7 40.97 231L160 350.1L407 103C416.4 93.66 431.6 93.66 440.1 103V103z"/></svg>';
|
|
65
65
|
}
|
|
66
66
|
/* source: https://tailwindcss.com/docs/customizing-colors/#default-color-palette */
|
|
67
67
|
:root {
|
|
@@ -703,8 +703,8 @@ textarea::selection {
|
|
|
703
703
|
padding: 4px;
|
|
704
704
|
}
|
|
705
705
|
.x-menu-item:hover {
|
|
706
|
-
background-color:
|
|
707
|
-
color: var(--
|
|
706
|
+
background-color: var(--x4-hover-color);
|
|
707
|
+
color: var(--x4-hover-text);
|
|
708
708
|
}
|
|
709
709
|
.x-menu-item:hover .x-icon {
|
|
710
710
|
color: var(--gray-900);
|
|
@@ -1153,7 +1153,7 @@ textarea::selection {
|
|
|
1153
1153
|
.x-grid-view .x-row {
|
|
1154
1154
|
position: absolute;
|
|
1155
1155
|
width: calc(100% - 4px);
|
|
1156
|
-
border-bottom: 1px solid #
|
|
1156
|
+
border-bottom: 1px solid #d0d0d0;
|
|
1157
1157
|
align-items: center;
|
|
1158
1158
|
height: 2em;
|
|
1159
1159
|
}
|
|
@@ -1163,15 +1163,17 @@ textarea::selection {
|
|
|
1163
1163
|
}
|
|
1164
1164
|
.x-spreadsheet .x-cell,
|
|
1165
1165
|
.x-grid-view .x-cell {
|
|
1166
|
-
border-right: 1px solid #
|
|
1166
|
+
border-right: 1px solid #d0d0d0;
|
|
1167
1167
|
}
|
|
1168
1168
|
.x-spreadsheet .x-cell.center,
|
|
1169
1169
|
.x-grid-view .x-cell.center {
|
|
1170
1170
|
text-align: center;
|
|
1171
|
+
justify-content: center;
|
|
1171
1172
|
}
|
|
1172
1173
|
.x-spreadsheet .x-cell.right,
|
|
1173
1174
|
.x-grid-view .x-cell.right {
|
|
1174
1175
|
text-align: right;
|
|
1176
|
+
justify-content: right;
|
|
1175
1177
|
}
|
|
1176
1178
|
.x-spreadsheet:focus,
|
|
1177
1179
|
.x-grid-view:focus {
|
package/lib/x4events.d.ts
CHANGED
|
@@ -70,10 +70,12 @@ export declare function EvChange(value: unknown, context?: any): EvChange;
|
|
|
70
70
|
* Selection Event
|
|
71
71
|
* value is the new selection or null
|
|
72
72
|
*/
|
|
73
|
+
interface X4Selection {
|
|
74
|
+
}
|
|
73
75
|
export interface EvSelectionChange extends BasicEvent {
|
|
74
|
-
readonly selection:
|
|
76
|
+
readonly selection: X4Selection;
|
|
75
77
|
}
|
|
76
|
-
export declare function EvSelectionChange(selection:
|
|
78
|
+
export declare function EvSelectionChange(selection: X4Selection, context?: any): EvSelectionChange;
|
|
77
79
|
/**
|
|
78
80
|
* ContextMenu Event
|
|
79
81
|
*/
|
|
@@ -264,3 +266,4 @@ export declare class EventSource<Q extends EventMap, T extends EventTypes = MapE
|
|
|
264
266
|
*/
|
|
265
267
|
removeAllListeners(eventName: string | null): void;
|
|
266
268
|
}
|
|
269
|
+
export {};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "x4js",
|
|
3
|
-
"version": "1.4.
|
|
3
|
+
"version": "1.4.42",
|
|
4
4
|
"description": "X4js core files",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"types": "lib/index.d.ts",
|
|
@@ -11,7 +11,8 @@
|
|
|
11
11
|
},
|
|
12
12
|
"keywords": [
|
|
13
13
|
"typescript",
|
|
14
|
-
"framework"
|
|
14
|
+
"framework",
|
|
15
|
+
"sap", "web", "desktop", "application"
|
|
15
16
|
],
|
|
16
17
|
"scripts": {
|
|
17
18
|
"build": "tsc && lessc src/x4.less >lib/x4.css",
|
package/src/cardview.ts
CHANGED
|
@@ -137,13 +137,16 @@ export class CardView<P extends CardViewProps = CardViewProps, E extends CardVie
|
|
|
137
137
|
}
|
|
138
138
|
|
|
139
139
|
let page = this.m_cpage.page as Component;
|
|
140
|
-
|
|
141
140
|
page.addClass('@active');
|
|
142
141
|
page.removeClass('@hidden');
|
|
143
142
|
|
|
144
143
|
if (!page.dom) {
|
|
145
144
|
this._preparePage(page);
|
|
146
145
|
}
|
|
146
|
+
|
|
147
|
+
if (this.m_cpage.selector) {
|
|
148
|
+
this.m_cpage.selector.addClass('@active');
|
|
149
|
+
}
|
|
147
150
|
}
|
|
148
151
|
|
|
149
152
|
this.emit('change', EvChange(this.m_cpage.name));
|
package/src/colorpicker.ts
CHANGED
|
@@ -631,8 +631,8 @@ export interface ColorPickerEditorProps extends ColorPickerProps {
|
|
|
631
631
|
labelWidth?: number;
|
|
632
632
|
cust_colors?: Color[];
|
|
633
633
|
displayValue?: false,
|
|
634
|
-
|
|
635
|
-
|
|
634
|
+
change?: EventCallback<EvChange>;
|
|
635
|
+
name?: string;
|
|
636
636
|
}
|
|
637
637
|
|
|
638
638
|
export class ColorPickerEditor extends HLayout<ColorPickerEditorProps, ColorPickerEventMap> {
|
package/src/combobox.ts
CHANGED
|
@@ -191,7 +191,7 @@ export class ComboBox extends HLayout<ComboBoxProps,ComboBoxEventMap> {
|
|
|
191
191
|
showPopup() {
|
|
192
192
|
|
|
193
193
|
let props = this.m_props;
|
|
194
|
-
if (props.readOnly) {
|
|
194
|
+
if (props.readOnly || this.hasClass("@disable") ) {
|
|
195
195
|
return;
|
|
196
196
|
}
|
|
197
197
|
|
|
@@ -278,6 +278,11 @@ export class ComboBox extends HLayout<ComboBoxProps,ComboBoxEventMap> {
|
|
|
278
278
|
this.m_props.value = item.id;
|
|
279
279
|
}
|
|
280
280
|
}
|
|
281
|
+
else {
|
|
282
|
+
if( this.m_ui_input && this.m_ui_input instanceof Input ) {
|
|
283
|
+
this.m_ui_input.value = "";
|
|
284
|
+
}
|
|
285
|
+
}
|
|
281
286
|
}
|
|
282
287
|
|
|
283
288
|
/**
|
|
@@ -303,13 +308,18 @@ export class ComboBox extends HLayout<ComboBoxProps,ComboBoxEventMap> {
|
|
|
303
308
|
items = items( );
|
|
304
309
|
}
|
|
305
310
|
|
|
306
|
-
items.some( (v) => {
|
|
311
|
+
const found = items.some( (v) => {
|
|
307
312
|
if (v.id === id) {
|
|
308
313
|
this._setInput( v );
|
|
309
314
|
this.m_selection = v;
|
|
310
315
|
return true;
|
|
311
316
|
}
|
|
312
317
|
});
|
|
318
|
+
|
|
319
|
+
if( !found ) {
|
|
320
|
+
this._setInput( null );
|
|
321
|
+
this.m_selection = null;
|
|
322
|
+
}
|
|
313
323
|
}
|
|
314
324
|
|
|
315
325
|
get input( ) : Input {
|
package/src/dialog.ts
CHANGED
|
@@ -233,7 +233,10 @@ export class Dialog<P extends DialogProps = DialogProps, E extends DialogBoxEven
|
|
|
233
233
|
}
|
|
234
234
|
|
|
235
235
|
this.addClass('@resized');
|
|
236
|
-
|
|
236
|
+
|
|
237
|
+
if( this.m_el_title ) {
|
|
238
|
+
this.m_el_title.setStyleValue( "width", "auto" );
|
|
239
|
+
}
|
|
237
240
|
|
|
238
241
|
if (this.m_props.maximized) {
|
|
239
242
|
this._maximize();
|
|
@@ -463,13 +466,12 @@ export class Dialog<P extends DialogProps = DialogProps, E extends DialogBoxEven
|
|
|
463
466
|
|
|
464
467
|
let wrc = flyWrap(x4document.body).getBoundingRect();
|
|
465
468
|
let rc = this.getBoundingRect(true);
|
|
466
|
-
let trc = this.m_el_title.getBoundingRect();
|
|
469
|
+
///let trc = this.m_el_title.getBoundingRect();
|
|
467
470
|
|
|
468
471
|
let dx = x - rc.left,
|
|
469
472
|
dy = y - rc.top;
|
|
470
473
|
|
|
471
|
-
let cstyle = this.getComputedStyle();
|
|
472
|
-
|
|
474
|
+
//let cstyle = this.getComputedStyle();
|
|
473
475
|
//let topw = cstyle.parse('marginTop') + cstyle.parse('paddingTop') + cstyle.parse('borderTopWidth');
|
|
474
476
|
//let botw = cstyle.parse('marginBottom') + cstyle.parse('paddingBottom') + cstyle.parse('borderBottomWidth');
|
|
475
477
|
//let lftw = cstyle.parse('marginLeft') + cstyle.parse('paddingLeft') + cstyle.parse('borderLeftWidth');
|
package/src/gridview.ts
CHANGED
|
@@ -555,12 +555,14 @@ export class GridView extends VLayout<GridViewProps, GridViewEventMap> {
|
|
|
555
555
|
_col.width = width;
|
|
556
556
|
if( _col.flex ) {
|
|
557
557
|
_col.$hdr.removeClass( '@flex' );
|
|
558
|
+
_col.$ftr?.removeClass( '@flex' );
|
|
558
559
|
_col.flex = undefined;
|
|
559
560
|
updateFlex = true;
|
|
560
561
|
}
|
|
561
562
|
}
|
|
562
563
|
else if( width<0 && !_col.flex ) {
|
|
563
564
|
_col.$hdr.addClass( '@flex' );
|
|
565
|
+
_col.$ftr?.addClass( '@flex' );
|
|
564
566
|
_col.flex = 1;
|
|
565
567
|
updateFlex = true;
|
|
566
568
|
}
|
package/src/listview.ts
CHANGED
package/src/x4.less
CHANGED
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
**/
|
|
31
31
|
|
|
32
32
|
:root {
|
|
33
|
-
--x4-font: "
|
|
33
|
+
--x4-font: "Helvetica, Arial, Sans-Serif";
|
|
34
34
|
--x4-font-size: 13px;
|
|
35
35
|
|
|
36
36
|
--x4-base-color: #266888;
|
|
@@ -75,7 +75,7 @@
|
|
|
75
75
|
--x4-icon-angle-down: 'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512" fill="currentColor"><path d="M192 384c-8.188 0-16.38-3.125-22.62-9.375l-160-160c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0L192 306.8l137.4-137.4c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25l-160 160C208.4 380.9 200.2 384 192 384z"/></svg>';
|
|
76
76
|
--x4-icon-calendar-days: 'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512" fill="currentColor"><path d="M160 32V64H288V32C288 14.33 302.3 0 320 0C337.7 0 352 14.33 352 32V64H400C426.5 64 448 85.49 448 112V160H0V112C0 85.49 21.49 64 48 64H96V32C96 14.33 110.3 0 128 0C145.7 0 160 14.33 160 32zM0 192H448V464C448 490.5 426.5 512 400 512H48C21.49 512 0 490.5 0 464V192zM64 304C64 312.8 71.16 320 80 320H112C120.8 320 128 312.8 128 304V272C128 263.2 120.8 256 112 256H80C71.16 256 64 263.2 64 272V304zM192 304C192 312.8 199.2 320 208 320H240C248.8 320 256 312.8 256 304V272C256 263.2 248.8 256 240 256H208C199.2 256 192 263.2 192 272V304zM336 256C327.2 256 320 263.2 320 272V304C320 312.8 327.2 320 336 320H368C376.8 320 384 312.8 384 304V272C384 263.2 376.8 256 368 256H336zM64 432C64 440.8 71.16 448 80 448H112C120.8 448 128 440.8 128 432V400C128 391.2 120.8 384 112 384H80C71.16 384 64 391.2 64 400V432zM208 384C199.2 384 192 391.2 192 400V432C192 440.8 199.2 448 208 448H240C248.8 448 256 440.8 256 432V400C256 391.2 248.8 384 240 384H208zM320 432C320 440.8 327.2 448 336 448H368C376.8 448 384 440.8 384 432V400C384 391.2 376.8 384 368 384H336C327.2 384 320 391.2 320 400V432z"/></svg>';
|
|
77
77
|
--x4-icon-tip: 'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" fill="currentColor"><path d="M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM256 464c-114.7 0-208-93.31-208-208S141.3 48 256 48s208 93.31 208 208S370.7 464 256 464zM296 336h-16V248C280 234.8 269.3 224 256 224H224C210.8 224 200 234.8 200 248S210.8 272 224 272h8v64h-16C202.8 336 192 346.8 192 360S202.8 384 216 384h80c13.25 0 24-10.75 24-24S309.3 336 296 336zM256 192c17.67 0 32-14.33 32-32c0-17.67-14.33-32-32-32S224 142.3 224 160C224 177.7 238.3 192 256 192z"/></svg>';
|
|
78
|
-
--x4-check: 'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512" fill="currentColor"><path d="M440.1 103C450.3 112.4 450.3 127.6 440.1 136.1L176.1 400.1C167.6 410.3 152.4 410.3 143 400.1L7.029 264.1C-2.343 255.6-2.343 240.4 7.029 231C16.4 221.7 31.6 221.7 40.97 231L160 350.1L407 103C416.4 93.66 431.6 93.66 440.1 103V103z"/></svg>';
|
|
78
|
+
--x4-icon-check: 'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512" fill="currentColor"><path d="M440.1 103C450.3 112.4 450.3 127.6 440.1 136.1L176.1 400.1C167.6 410.3 152.4 410.3 143 400.1L7.029 264.1C-2.343 255.6-2.343 240.4 7.029 231C16.4 221.7 31.6 221.7 40.97 231L160 350.1L407 103C416.4 93.66 431.6 93.66 440.1 103V103z"/></svg>';
|
|
79
79
|
}
|
|
80
80
|
|
|
81
81
|
@BLACK10: rgba(0,0,0,0.1);
|
|
@@ -878,8 +878,9 @@ textarea {
|
|
|
878
878
|
}
|
|
879
879
|
|
|
880
880
|
&:hover {
|
|
881
|
-
background-color:
|
|
882
|
-
color: var(
|
|
881
|
+
background-color: var( --x4-hover-color);
|
|
882
|
+
color: var(--x4-hover-text);
|
|
883
|
+
|
|
883
884
|
.x-icon {
|
|
884
885
|
color: var( --gray-900 );
|
|
885
886
|
}
|
|
@@ -1401,7 +1402,7 @@ textarea {
|
|
|
1401
1402
|
.x-row {
|
|
1402
1403
|
position: absolute;
|
|
1403
1404
|
width: calc( 100% - @bwidth ); // todo: border of 1st col
|
|
1404
|
-
border-bottom: 1px solid #
|
|
1405
|
+
border-bottom: 1px solid #d0d0d0;
|
|
1405
1406
|
align-items: center;
|
|
1406
1407
|
height: @def-height;
|
|
1407
1408
|
|
|
@@ -1411,14 +1412,16 @@ textarea {
|
|
|
1411
1412
|
}
|
|
1412
1413
|
|
|
1413
1414
|
.x-cell {
|
|
1414
|
-
border-right: 1px solid #
|
|
1415
|
+
border-right: 1px solid #d0d0d0;
|
|
1415
1416
|
|
|
1416
1417
|
&.center {
|
|
1417
1418
|
text-align: center;
|
|
1419
|
+
justify-content: center;
|
|
1418
1420
|
}
|
|
1419
1421
|
|
|
1420
1422
|
&.right {
|
|
1421
1423
|
text-align: right;
|
|
1424
|
+
justify-content: right;
|
|
1422
1425
|
}
|
|
1423
1426
|
}
|
|
1424
1427
|
|
package/src/x4events.ts
CHANGED
|
@@ -108,11 +108,14 @@ export function EvChange(value: unknown, context = null ) {
|
|
|
108
108
|
* value is the new selection or null
|
|
109
109
|
*/
|
|
110
110
|
|
|
111
|
+
interface X4Selection {
|
|
112
|
+
}
|
|
113
|
+
|
|
111
114
|
export interface EvSelectionChange extends BasicEvent {
|
|
112
|
-
readonly selection:
|
|
115
|
+
readonly selection: X4Selection;
|
|
113
116
|
}
|
|
114
117
|
|
|
115
|
-
export function EvSelectionChange( selection:
|
|
118
|
+
export function EvSelectionChange( selection: X4Selection, context = null ) {
|
|
116
119
|
return BasicEvent<EvSelectionChange>( { selection, context } );
|
|
117
120
|
}
|
|
118
121
|
|