x4js 1.5.0 → 1.5.1
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/cjs/application.js +6 -6
- package/lib/cjs/button.d.ts +1 -1
- package/lib/cjs/canvas.d.ts +1 -1
- package/lib/cjs/cardview.d.ts +1 -1
- package/lib/cjs/component.d.ts +6 -6
- package/lib/cjs/datastore.d.ts +5 -5
- package/lib/cjs/dialog.d.ts +1 -1
- package/lib/cjs/drag_manager.d.ts +2 -2
- package/lib/cjs/form.d.ts +2 -2
- package/lib/cjs/formatters.d.ts +1 -1
- package/lib/cjs/gridview.d.ts +4 -4
- package/lib/cjs/icon.d.ts +1 -1
- package/lib/cjs/icon.js +5 -0
- package/lib/cjs/input.d.ts +1 -1
- package/lib/cjs/md5.js +7 -7
- package/lib/cjs/menu.d.ts +1 -1
- package/lib/cjs/property_editor.d.ts +1 -1
- package/lib/cjs/router.d.ts +1 -1
- package/lib/cjs/textedit.d.ts +1 -1
- package/lib/cjs/tools.d.ts +1 -1
- package/lib/cjs/tools.js +8 -5
- package/lib/cjs/tooltips.d.ts +1 -1
- package/lib/cjs/x4events.d.ts +2 -2
- package/lib/esm/button.d.ts +1 -1
- package/lib/esm/canvas.d.ts +1 -1
- package/lib/esm/cardview.d.ts +1 -1
- package/lib/esm/component.d.ts +6 -6
- package/lib/esm/datastore.d.ts +5 -5
- package/lib/esm/dialog.d.ts +1 -1
- package/lib/esm/drag_manager.d.ts +2 -2
- package/lib/esm/form.d.ts +2 -2
- package/lib/esm/formatters.d.ts +1 -1
- package/lib/esm/gridview.d.ts +4 -4
- package/lib/esm/icon.d.ts +1 -1
- package/lib/esm/icon.js +5 -0
- package/lib/esm/input.d.ts +1 -1
- package/lib/esm/menu.d.ts +1 -1
- package/lib/esm/property_editor.d.ts +1 -1
- package/lib/esm/router.d.ts +1 -1
- package/lib/esm/textedit.d.ts +1 -1
- package/lib/esm/tools.d.ts +1 -1
- package/lib/esm/tools.js +8 -5
- package/lib/esm/tooltips.d.ts +1 -1
- package/lib/esm/x4events.d.ts +2 -2
- package/lib/styles/x4.css +5 -3
- package/lib/styles/x4.less +5 -3
- package/lib/ts_src/icon.ts +6 -0
- package/lib/ts_src/tools.ts +12 -7
- package/lib/ts_src/x4.less +5 -3
- package/package.json +1 -1
package/lib/cjs/application.js
CHANGED
|
@@ -54,6 +54,12 @@ const _x4_touch_time = Symbol();
|
|
|
54
54
|
* }
|
|
55
55
|
*/
|
|
56
56
|
class Application extends base_component_1.BaseComponent {
|
|
57
|
+
/**
|
|
58
|
+
* the application singleton
|
|
59
|
+
*/
|
|
60
|
+
static instance() {
|
|
61
|
+
return Application.self;
|
|
62
|
+
}
|
|
57
63
|
constructor(props) {
|
|
58
64
|
var _a, _b, _c;
|
|
59
65
|
console.assert(Application.self === null, 'application is a singleton');
|
|
@@ -76,12 +82,6 @@ class Application extends base_component_1.BaseComponent {
|
|
|
76
82
|
this.ApplicationCreated();
|
|
77
83
|
}
|
|
78
84
|
}
|
|
79
|
-
/**
|
|
80
|
-
* the application singleton
|
|
81
|
-
*/
|
|
82
|
-
static instance() {
|
|
83
|
-
return Application.self;
|
|
84
|
-
}
|
|
85
85
|
ApplicationCreated() {
|
|
86
86
|
this.setTitle('');
|
|
87
87
|
}
|
package/lib/cjs/button.d.ts
CHANGED
package/lib/cjs/canvas.d.ts
CHANGED
|
@@ -54,7 +54,7 @@ export interface CanvasPainter extends CanvasRenderingContext2D {
|
|
|
54
54
|
setFontSize(fs: number): void;
|
|
55
55
|
circle(x: number, y: number, radius: number): void;
|
|
56
56
|
}
|
|
57
|
-
|
|
57
|
+
type PaintHandler = (ctx: CanvasPainter) => any;
|
|
58
58
|
/**
|
|
59
59
|
*
|
|
60
60
|
*/
|
package/lib/cjs/cardview.d.ts
CHANGED
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
import { Component, CProps, CEventMap } from './component';
|
|
30
30
|
import { EvChange } from './x4events';
|
|
31
31
|
import { IconID } from './icon';
|
|
32
|
-
export
|
|
32
|
+
export type PageOrCallback = Component | (() => Component);
|
|
33
33
|
export interface ICardViewItem {
|
|
34
34
|
icon?: IconID;
|
|
35
35
|
name: string;
|
package/lib/cjs/component.d.ts
CHANGED
|
@@ -84,9 +84,9 @@ export declare const _x4_unitless: {
|
|
|
84
84
|
/**
|
|
85
85
|
*
|
|
86
86
|
*/
|
|
87
|
-
export
|
|
88
|
-
export
|
|
89
|
-
export
|
|
87
|
+
export type VoidCallback = () => void;
|
|
88
|
+
export type ComponentOrString = Component | string | HtmlString;
|
|
89
|
+
export type ComponentContent = ComponentOrString | ComponentOrString[];
|
|
90
90
|
interface IMap<T> {
|
|
91
91
|
[key: string]: T;
|
|
92
92
|
}
|
|
@@ -501,7 +501,7 @@ export declare class Space extends Component {
|
|
|
501
501
|
/**
|
|
502
502
|
* sizable separator
|
|
503
503
|
*/
|
|
504
|
-
|
|
504
|
+
type SizeMode = null | 'minimize' | 'maximize' | 'restore';
|
|
505
505
|
export interface EvSize extends BasicEvent {
|
|
506
506
|
readonly size: Size;
|
|
507
507
|
readonly mode: SizeMode;
|
|
@@ -530,7 +530,7 @@ export declare class Separator extends Component<SeparatorProps, SeparatorEventM
|
|
|
530
530
|
/**
|
|
531
531
|
* properties
|
|
532
532
|
*/
|
|
533
|
-
|
|
533
|
+
type SizerOverlaySens = 'left' | 'top' | 'right' | 'bottom' | 'topleft' | 'topright' | 'bottomleft' | 'bottomright';
|
|
534
534
|
export interface EvOverlayResize extends BasicEvent {
|
|
535
535
|
ui_event: UIEvent;
|
|
536
536
|
sens: SizerOverlaySens;
|
|
@@ -598,4 +598,4 @@ export declare class Container<P extends ContainerProps = ContainerProps, E exte
|
|
|
598
598
|
/** @ignore this function is binded */
|
|
599
599
|
private _handleKeydown;
|
|
600
600
|
}
|
|
601
|
-
export
|
|
601
|
+
export type ComponentConstructor<T> = new (props: CProps) => T;
|
package/lib/cjs/datastore.d.ts
CHANGED
|
@@ -28,10 +28,10 @@
|
|
|
28
28
|
**/
|
|
29
29
|
import { BasicEvent, EvChange, EventSource, EventMap } from './x4events';
|
|
30
30
|
import { BaseComponent, BaseComponentEventMap, BaseComponentProps } from './base_component';
|
|
31
|
-
export
|
|
32
|
-
export
|
|
33
|
-
export
|
|
34
|
-
export
|
|
31
|
+
export type ChangeCallback = (type: string, id?: any) => void;
|
|
32
|
+
export type CalcCallback = () => string;
|
|
33
|
+
export type FieldType = 'string' | 'int' | 'float' | 'date' | 'bool' | 'array' | 'object' | 'any' | 'calc';
|
|
34
|
+
export type DataIndex = Uint32Array;
|
|
35
35
|
interface EvDataChange extends BasicEvent {
|
|
36
36
|
type: string;
|
|
37
37
|
id: any;
|
|
@@ -328,7 +328,7 @@ interface DataViewProps extends BaseComponentProps<DataViewEventMap> {
|
|
|
328
328
|
filter?: FilterInfo;
|
|
329
329
|
order?: string | SortProp[] | SortProp;
|
|
330
330
|
}
|
|
331
|
-
export
|
|
331
|
+
export type FilterFunc = (rec: Record) => boolean;
|
|
332
332
|
export interface FilterInfo {
|
|
333
333
|
op: '<' | '<=' | '=' | '>=' | '>' | '<>' | 'empty-result' | FilterFunc;
|
|
334
334
|
field?: string;
|
package/lib/cjs/dialog.d.ts
CHANGED
|
@@ -51,7 +51,7 @@ export interface DialogBoxEventMap extends PopupEventMap {
|
|
|
51
51
|
close: EvClose;
|
|
52
52
|
btnClick: EvBtnClick;
|
|
53
53
|
}
|
|
54
|
-
export
|
|
54
|
+
export type InitFormCallback = () => Form;
|
|
55
55
|
export interface DialogProps<E extends DialogBoxEventMap = DialogBoxEventMap> extends PopupProps<E> {
|
|
56
56
|
title?: string;
|
|
57
57
|
icon?: IconID;
|
|
@@ -28,8 +28,8 @@
|
|
|
28
28
|
**/
|
|
29
29
|
import { Component } from './component';
|
|
30
30
|
import { Point } from './tools';
|
|
31
|
-
|
|
32
|
-
|
|
31
|
+
type DropCallback = (command: 'enter' | 'leave' | 'drag' | 'drop', el: Component, point: Point) => void;
|
|
32
|
+
type FilterCallback = (el: Component) => boolean;
|
|
33
33
|
/**
|
|
34
34
|
*
|
|
35
35
|
*/
|
package/lib/cjs/form.d.ts
CHANGED
|
@@ -32,8 +32,8 @@ import { Button } from './button';
|
|
|
32
32
|
import { RequestProps } from './request';
|
|
33
33
|
import { EventCallback } from './x4events';
|
|
34
34
|
import { EvBtnClick } from './dialog';
|
|
35
|
-
export
|
|
36
|
-
export
|
|
35
|
+
export type FormBtn = 'ok' | 'cancel' | 'ignore' | 'yes' | 'no' | 'close' | 'save' | 'dontsave';
|
|
36
|
+
export type FormButtons = (FormBtn | Button | Component)[];
|
|
37
37
|
export interface FormEventMap extends ContainerEventMap {
|
|
38
38
|
btnClick?: EvBtnClick;
|
|
39
39
|
}
|
package/lib/cjs/formatters.d.ts
CHANGED
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
* OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
|
27
27
|
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
28
28
|
**/
|
|
29
|
-
export
|
|
29
|
+
export type FormatFunc = (input: any, rec: any) => string;
|
|
30
30
|
export declare function setCurrencySymbol(symbol: string | null): void;
|
|
31
31
|
export declare function sql_date_formatter(input: any): string;
|
|
32
32
|
export declare function date_formatter(input: any): string;
|
package/lib/cjs/gridview.d.ts
CHANGED
|
@@ -51,10 +51,10 @@ export interface GridColumn {
|
|
|
51
51
|
cls?: string;
|
|
52
52
|
sortable?: boolean;
|
|
53
53
|
}
|
|
54
|
-
export
|
|
55
|
-
export
|
|
56
|
-
export
|
|
57
|
-
|
|
54
|
+
export type CellRenderer = (rec: Record) => Component;
|
|
55
|
+
export type RowClassifier = (rec: Record, Row: Component) => void;
|
|
56
|
+
export type ContextMenuGridItem = (event: MouseEvent, item: Record, grid: GridView) => any;
|
|
57
|
+
type emptyFn = () => string;
|
|
58
58
|
interface GridViewEventMap extends ContainerEventMap {
|
|
59
59
|
dblClick?: EvDblClick;
|
|
60
60
|
selectionChange?: EvSelectionChange;
|
package/lib/cjs/icon.d.ts
CHANGED
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
**/
|
|
29
29
|
import { Component, CProps } from './component';
|
|
30
30
|
import { BasicEvent } from './x4events';
|
|
31
|
-
export
|
|
31
|
+
export type IconID = string | number;
|
|
32
32
|
export interface IconProps extends CProps {
|
|
33
33
|
icon: IconID;
|
|
34
34
|
size?: number;
|
package/lib/cjs/icon.js
CHANGED
|
@@ -154,6 +154,11 @@ class Icon extends component_1.Component {
|
|
|
154
154
|
}
|
|
155
155
|
match_var = reVar.exec(icon);
|
|
156
156
|
}
|
|
157
|
+
// <svg ...>
|
|
158
|
+
if (icon.startsWith('<svg')) {
|
|
159
|
+
this._setSVG('data:image/svg+xml;utf8,' + icon);
|
|
160
|
+
return;
|
|
161
|
+
}
|
|
157
162
|
// svg( <svg-filename> ) -> svg( "mysvgfile.svg" )
|
|
158
163
|
// <svg-filename>.svg -> "mysvgfile.svg"
|
|
159
164
|
const reSvg = /\s*svg\s*\(\s*(.+)\s*\)\s*/gi;
|
package/lib/cjs/input.d.ts
CHANGED
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
28
28
|
**/
|
|
29
29
|
import { Component, CProps, CEventMap } from './component';
|
|
30
|
-
export
|
|
30
|
+
export type EditType = 'text' | 'number' | 'email' | 'date' | 'password' | 'file' | 'checkbox' | 'radio';
|
|
31
31
|
export interface ValueHook {
|
|
32
32
|
get(): any;
|
|
33
33
|
set(v: any): void;
|
package/lib/cjs/md5.js
CHANGED
|
@@ -57,13 +57,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
|
57
57
|
THE SOFTWARE.
|
|
58
58
|
*/
|
|
59
59
|
class Md5 {
|
|
60
|
-
constructor() {
|
|
61
|
-
this._state = new Int32Array(4);
|
|
62
|
-
this._buffer = new ArrayBuffer(68);
|
|
63
|
-
this._buffer8 = new Uint8Array(this._buffer, 0, 68);
|
|
64
|
-
this._buffer32 = new Uint32Array(this._buffer, 0, 17);
|
|
65
|
-
this.start();
|
|
66
|
-
}
|
|
67
60
|
static hashStr(str, raw = false) {
|
|
68
61
|
return this.onePassHasher
|
|
69
62
|
.start()
|
|
@@ -237,6 +230,13 @@ class Md5 {
|
|
|
237
230
|
x[2] = c + x[2] | 0;
|
|
238
231
|
x[3] = d + x[3] | 0;
|
|
239
232
|
}
|
|
233
|
+
constructor() {
|
|
234
|
+
this._state = new Int32Array(4);
|
|
235
|
+
this._buffer = new ArrayBuffer(68);
|
|
236
|
+
this._buffer8 = new Uint8Array(this._buffer, 0, 68);
|
|
237
|
+
this._buffer32 = new Uint32Array(this._buffer, 0, 17);
|
|
238
|
+
this.start();
|
|
239
|
+
}
|
|
240
240
|
start() {
|
|
241
241
|
this._dataLength = 0;
|
|
242
242
|
this._bufferLength = 0;
|
package/lib/cjs/menu.d.ts
CHANGED
|
@@ -40,7 +40,7 @@ export declare class MenuTitle extends Label {
|
|
|
40
40
|
/**
|
|
41
41
|
* Standard Menu
|
|
42
42
|
*/
|
|
43
|
-
export
|
|
43
|
+
export type MenuOrSep = MenuItem | MenuSeparator | MenuTitle;
|
|
44
44
|
export interface MenuProps extends PopupProps {
|
|
45
45
|
items?: MenuOrSep[];
|
|
46
46
|
}
|
|
@@ -34,7 +34,7 @@ import { Record } from './datastore';
|
|
|
34
34
|
export interface SaveCallback {
|
|
35
35
|
(id: any, record: any[]): void;
|
|
36
36
|
}
|
|
37
|
-
export
|
|
37
|
+
export type IPropertyField = {
|
|
38
38
|
id: any;
|
|
39
39
|
title: string;
|
|
40
40
|
type: Function | "string" | 'number' | 'boolean' | 'choice' | 'password' | 'button' | 'color';
|
package/lib/cjs/router.d.ts
CHANGED
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
28
28
|
**/
|
|
29
29
|
import { EventSource, EvError, EventMap } from "./x4events";
|
|
30
|
-
|
|
30
|
+
type RouteHandler = (params: any, path: string) => void;
|
|
31
31
|
interface RouterEventMap extends EventMap {
|
|
32
32
|
error: EvError;
|
|
33
33
|
}
|
package/lib/cjs/textedit.d.ts
CHANGED
|
@@ -30,7 +30,7 @@ import { Component, EvFocus, HtmlString } from './component';
|
|
|
30
30
|
import { Input, InputProps, InputEventMap } from './input';
|
|
31
31
|
import { IconID } from './icon';
|
|
32
32
|
import { EvClick, EvChange, EventCallback } from './x4events';
|
|
33
|
-
|
|
33
|
+
type ValidationFunction = (value: string) => string;
|
|
34
34
|
interface TextEditEventMap extends InputEventMap {
|
|
35
35
|
click: EvClick;
|
|
36
36
|
change: EvChange;
|
package/lib/cjs/tools.d.ts
CHANGED
|
@@ -51,7 +51,7 @@ export declare function parseIntlFloat(num: string): number;
|
|
|
51
51
|
*/
|
|
52
52
|
export declare function pascalCase(string: string): string;
|
|
53
53
|
export declare function camelCase(text: string): string;
|
|
54
|
-
export
|
|
54
|
+
export type Constructor<T> = new (...args: any[]) => T;
|
|
55
55
|
export declare class Point {
|
|
56
56
|
x: number;
|
|
57
57
|
y: number;
|
package/lib/cjs/tools.js
CHANGED
|
@@ -980,13 +980,16 @@ exports.Clipboard = Clipboard;
|
|
|
980
980
|
*/
|
|
981
981
|
function crc32(str) {
|
|
982
982
|
let crc = ~0;
|
|
983
|
-
|
|
984
|
-
|
|
983
|
+
let buf = Buffer.from(str);
|
|
984
|
+
let i = 0, l = buf.length;
|
|
985
|
+
while (i < l) {
|
|
986
|
+
crc = (crc >>> 8) ^ crc32tab[(crc ^ buf[i]) & 0xff];
|
|
987
|
+
i++;
|
|
985
988
|
}
|
|
986
|
-
return
|
|
989
|
+
return (crc ^ -1) >>> 0;
|
|
987
990
|
}
|
|
988
991
|
exports.crc32 = crc32;
|
|
989
|
-
var crc32tab = [
|
|
992
|
+
var crc32tab = new Int32Array([
|
|
990
993
|
0x00000000, 0x77073096, 0xee0e612c, 0x990951ba,
|
|
991
994
|
0x076dc419, 0x706af48f, 0xe963a535, 0x9e6495a3,
|
|
992
995
|
0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988,
|
|
@@ -1051,7 +1054,7 @@ var crc32tab = [
|
|
|
1051
1054
|
0xbad03605, 0xcdd70693, 0x54de5729, 0x23d967bf,
|
|
1052
1055
|
0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94,
|
|
1053
1056
|
0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d
|
|
1054
|
-
];
|
|
1057
|
+
]);
|
|
1055
1058
|
// :: MIXINS ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
|
1056
1059
|
/**
|
|
1057
1060
|
* taken from this excellent article:
|
package/lib/cjs/tooltips.d.ts
CHANGED
|
@@ -42,5 +42,5 @@ export declare class Tooltip extends Component {
|
|
|
42
42
|
*/
|
|
43
43
|
displayAt(x: number, y: number, align?: string): void;
|
|
44
44
|
}
|
|
45
|
-
export
|
|
45
|
+
export type TooltipHandler = (text: string) => void;
|
|
46
46
|
export declare function initTooltips(cb?: TooltipHandler): void;
|
package/lib/cjs/x4events.d.ts
CHANGED
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
* OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
|
27
27
|
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
28
28
|
**/
|
|
29
|
-
export
|
|
29
|
+
export type EventCallback<T extends BasicEvent = BasicEvent> = (event: T) => any;
|
|
30
30
|
export interface EventDisposer {
|
|
31
31
|
dispose(): void;
|
|
32
32
|
}
|
|
@@ -144,7 +144,7 @@ export interface EventTypes {
|
|
|
144
144
|
/**
|
|
145
145
|
* convert an EventMap to a EventType
|
|
146
146
|
*/
|
|
147
|
-
export
|
|
147
|
+
export type MapEvents<Type> = {
|
|
148
148
|
[Property in keyof Type]?: (ev: Type[Property]) => any;
|
|
149
149
|
};
|
|
150
150
|
/**
|
package/lib/esm/button.d.ts
CHANGED
package/lib/esm/canvas.d.ts
CHANGED
|
@@ -54,7 +54,7 @@ export interface CanvasPainter extends CanvasRenderingContext2D {
|
|
|
54
54
|
setFontSize(fs: number): void;
|
|
55
55
|
circle(x: number, y: number, radius: number): void;
|
|
56
56
|
}
|
|
57
|
-
|
|
57
|
+
type PaintHandler = (ctx: CanvasPainter) => any;
|
|
58
58
|
/**
|
|
59
59
|
*
|
|
60
60
|
*/
|
package/lib/esm/cardview.d.ts
CHANGED
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
import { Component, CProps, CEventMap } from './component';
|
|
30
30
|
import { EvChange } from './x4events';
|
|
31
31
|
import { IconID } from './icon';
|
|
32
|
-
export
|
|
32
|
+
export type PageOrCallback = Component | (() => Component);
|
|
33
33
|
export interface ICardViewItem {
|
|
34
34
|
icon?: IconID;
|
|
35
35
|
name: string;
|
package/lib/esm/component.d.ts
CHANGED
|
@@ -84,9 +84,9 @@ export declare const _x4_unitless: {
|
|
|
84
84
|
/**
|
|
85
85
|
*
|
|
86
86
|
*/
|
|
87
|
-
export
|
|
88
|
-
export
|
|
89
|
-
export
|
|
87
|
+
export type VoidCallback = () => void;
|
|
88
|
+
export type ComponentOrString = Component | string | HtmlString;
|
|
89
|
+
export type ComponentContent = ComponentOrString | ComponentOrString[];
|
|
90
90
|
interface IMap<T> {
|
|
91
91
|
[key: string]: T;
|
|
92
92
|
}
|
|
@@ -501,7 +501,7 @@ export declare class Space extends Component {
|
|
|
501
501
|
/**
|
|
502
502
|
* sizable separator
|
|
503
503
|
*/
|
|
504
|
-
|
|
504
|
+
type SizeMode = null | 'minimize' | 'maximize' | 'restore';
|
|
505
505
|
export interface EvSize extends BasicEvent {
|
|
506
506
|
readonly size: Size;
|
|
507
507
|
readonly mode: SizeMode;
|
|
@@ -530,7 +530,7 @@ export declare class Separator extends Component<SeparatorProps, SeparatorEventM
|
|
|
530
530
|
/**
|
|
531
531
|
* properties
|
|
532
532
|
*/
|
|
533
|
-
|
|
533
|
+
type SizerOverlaySens = 'left' | 'top' | 'right' | 'bottom' | 'topleft' | 'topright' | 'bottomleft' | 'bottomright';
|
|
534
534
|
export interface EvOverlayResize extends BasicEvent {
|
|
535
535
|
ui_event: UIEvent;
|
|
536
536
|
sens: SizerOverlaySens;
|
|
@@ -598,4 +598,4 @@ export declare class Container<P extends ContainerProps = ContainerProps, E exte
|
|
|
598
598
|
/** @ignore this function is binded */
|
|
599
599
|
private _handleKeydown;
|
|
600
600
|
}
|
|
601
|
-
export
|
|
601
|
+
export type ComponentConstructor<T> = new (props: CProps) => T;
|
package/lib/esm/datastore.d.ts
CHANGED
|
@@ -28,10 +28,10 @@
|
|
|
28
28
|
**/
|
|
29
29
|
import { BasicEvent, EvChange, EventSource, EventMap } from './x4events';
|
|
30
30
|
import { BaseComponent, BaseComponentEventMap, BaseComponentProps } from './base_component';
|
|
31
|
-
export
|
|
32
|
-
export
|
|
33
|
-
export
|
|
34
|
-
export
|
|
31
|
+
export type ChangeCallback = (type: string, id?: any) => void;
|
|
32
|
+
export type CalcCallback = () => string;
|
|
33
|
+
export type FieldType = 'string' | 'int' | 'float' | 'date' | 'bool' | 'array' | 'object' | 'any' | 'calc';
|
|
34
|
+
export type DataIndex = Uint32Array;
|
|
35
35
|
interface EvDataChange extends BasicEvent {
|
|
36
36
|
type: string;
|
|
37
37
|
id: any;
|
|
@@ -328,7 +328,7 @@ interface DataViewProps extends BaseComponentProps<DataViewEventMap> {
|
|
|
328
328
|
filter?: FilterInfo;
|
|
329
329
|
order?: string | SortProp[] | SortProp;
|
|
330
330
|
}
|
|
331
|
-
export
|
|
331
|
+
export type FilterFunc = (rec: Record) => boolean;
|
|
332
332
|
export interface FilterInfo {
|
|
333
333
|
op: '<' | '<=' | '=' | '>=' | '>' | '<>' | 'empty-result' | FilterFunc;
|
|
334
334
|
field?: string;
|
package/lib/esm/dialog.d.ts
CHANGED
|
@@ -51,7 +51,7 @@ export interface DialogBoxEventMap extends PopupEventMap {
|
|
|
51
51
|
close: EvClose;
|
|
52
52
|
btnClick: EvBtnClick;
|
|
53
53
|
}
|
|
54
|
-
export
|
|
54
|
+
export type InitFormCallback = () => Form;
|
|
55
55
|
export interface DialogProps<E extends DialogBoxEventMap = DialogBoxEventMap> extends PopupProps<E> {
|
|
56
56
|
title?: string;
|
|
57
57
|
icon?: IconID;
|
|
@@ -28,8 +28,8 @@
|
|
|
28
28
|
**/
|
|
29
29
|
import { Component } from './component';
|
|
30
30
|
import { Point } from './tools';
|
|
31
|
-
|
|
32
|
-
|
|
31
|
+
type DropCallback = (command: 'enter' | 'leave' | 'drag' | 'drop', el: Component, point: Point) => void;
|
|
32
|
+
type FilterCallback = (el: Component) => boolean;
|
|
33
33
|
/**
|
|
34
34
|
*
|
|
35
35
|
*/
|
package/lib/esm/form.d.ts
CHANGED
|
@@ -32,8 +32,8 @@ import { Button } from './button';
|
|
|
32
32
|
import { RequestProps } from './request';
|
|
33
33
|
import { EventCallback } from './x4events';
|
|
34
34
|
import { EvBtnClick } from './dialog';
|
|
35
|
-
export
|
|
36
|
-
export
|
|
35
|
+
export type FormBtn = 'ok' | 'cancel' | 'ignore' | 'yes' | 'no' | 'close' | 'save' | 'dontsave';
|
|
36
|
+
export type FormButtons = (FormBtn | Button | Component)[];
|
|
37
37
|
export interface FormEventMap extends ContainerEventMap {
|
|
38
38
|
btnClick?: EvBtnClick;
|
|
39
39
|
}
|
package/lib/esm/formatters.d.ts
CHANGED
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
* OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
|
27
27
|
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
28
28
|
**/
|
|
29
|
-
export
|
|
29
|
+
export type FormatFunc = (input: any, rec: any) => string;
|
|
30
30
|
export declare function setCurrencySymbol(symbol: string | null): void;
|
|
31
31
|
export declare function sql_date_formatter(input: any): string;
|
|
32
32
|
export declare function date_formatter(input: any): string;
|
package/lib/esm/gridview.d.ts
CHANGED
|
@@ -51,10 +51,10 @@ export interface GridColumn {
|
|
|
51
51
|
cls?: string;
|
|
52
52
|
sortable?: boolean;
|
|
53
53
|
}
|
|
54
|
-
export
|
|
55
|
-
export
|
|
56
|
-
export
|
|
57
|
-
|
|
54
|
+
export type CellRenderer = (rec: Record) => Component;
|
|
55
|
+
export type RowClassifier = (rec: Record, Row: Component) => void;
|
|
56
|
+
export type ContextMenuGridItem = (event: MouseEvent, item: Record, grid: GridView) => any;
|
|
57
|
+
type emptyFn = () => string;
|
|
58
58
|
interface GridViewEventMap extends ContainerEventMap {
|
|
59
59
|
dblClick?: EvDblClick;
|
|
60
60
|
selectionChange?: EvSelectionChange;
|
package/lib/esm/icon.d.ts
CHANGED
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
**/
|
|
29
29
|
import { Component, CProps } from './component';
|
|
30
30
|
import { BasicEvent } from './x4events';
|
|
31
|
-
export
|
|
31
|
+
export type IconID = string | number;
|
|
32
32
|
export interface IconProps extends CProps {
|
|
33
33
|
icon: IconID;
|
|
34
34
|
size?: number;
|
package/lib/esm/icon.js
CHANGED
|
@@ -144,6 +144,11 @@ export class Icon extends Component {
|
|
|
144
144
|
}
|
|
145
145
|
match_var = reVar.exec(icon);
|
|
146
146
|
}
|
|
147
|
+
// <svg ...>
|
|
148
|
+
if (icon.startsWith('<svg')) {
|
|
149
|
+
this._setSVG('data:image/svg+xml;utf8,' + icon);
|
|
150
|
+
return;
|
|
151
|
+
}
|
|
147
152
|
// svg( <svg-filename> ) -> svg( "mysvgfile.svg" )
|
|
148
153
|
// <svg-filename>.svg -> "mysvgfile.svg"
|
|
149
154
|
const reSvg = /\s*svg\s*\(\s*(.+)\s*\)\s*/gi;
|
package/lib/esm/input.d.ts
CHANGED
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
28
28
|
**/
|
|
29
29
|
import { Component, CProps, CEventMap } from './component';
|
|
30
|
-
export
|
|
30
|
+
export type EditType = 'text' | 'number' | 'email' | 'date' | 'password' | 'file' | 'checkbox' | 'radio';
|
|
31
31
|
export interface ValueHook {
|
|
32
32
|
get(): any;
|
|
33
33
|
set(v: any): void;
|
package/lib/esm/menu.d.ts
CHANGED
|
@@ -40,7 +40,7 @@ export declare class MenuTitle extends Label {
|
|
|
40
40
|
/**
|
|
41
41
|
* Standard Menu
|
|
42
42
|
*/
|
|
43
|
-
export
|
|
43
|
+
export type MenuOrSep = MenuItem | MenuSeparator | MenuTitle;
|
|
44
44
|
export interface MenuProps extends PopupProps {
|
|
45
45
|
items?: MenuOrSep[];
|
|
46
46
|
}
|
|
@@ -34,7 +34,7 @@ import { Record } from './datastore';
|
|
|
34
34
|
export interface SaveCallback {
|
|
35
35
|
(id: any, record: any[]): void;
|
|
36
36
|
}
|
|
37
|
-
export
|
|
37
|
+
export type IPropertyField = {
|
|
38
38
|
id: any;
|
|
39
39
|
title: string;
|
|
40
40
|
type: Function | "string" | 'number' | 'boolean' | 'choice' | 'password' | 'button' | 'color';
|
package/lib/esm/router.d.ts
CHANGED
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
28
28
|
**/
|
|
29
29
|
import { EventSource, EvError, EventMap } from "./x4events";
|
|
30
|
-
|
|
30
|
+
type RouteHandler = (params: any, path: string) => void;
|
|
31
31
|
interface RouterEventMap extends EventMap {
|
|
32
32
|
error: EvError;
|
|
33
33
|
}
|
package/lib/esm/textedit.d.ts
CHANGED
|
@@ -30,7 +30,7 @@ import { Component, EvFocus, HtmlString } from './component';
|
|
|
30
30
|
import { Input, InputProps, InputEventMap } from './input';
|
|
31
31
|
import { IconID } from './icon';
|
|
32
32
|
import { EvClick, EvChange, EventCallback } from './x4events';
|
|
33
|
-
|
|
33
|
+
type ValidationFunction = (value: string) => string;
|
|
34
34
|
interface TextEditEventMap extends InputEventMap {
|
|
35
35
|
click: EvClick;
|
|
36
36
|
change: EvChange;
|
package/lib/esm/tools.d.ts
CHANGED
|
@@ -51,7 +51,7 @@ export declare function parseIntlFloat(num: string): number;
|
|
|
51
51
|
*/
|
|
52
52
|
export declare function pascalCase(string: string): string;
|
|
53
53
|
export declare function camelCase(text: string): string;
|
|
54
|
-
export
|
|
54
|
+
export type Constructor<T> = new (...args: any[]) => T;
|
|
55
55
|
export declare class Point {
|
|
56
56
|
x: number;
|
|
57
57
|
y: number;
|
package/lib/esm/tools.js
CHANGED
|
@@ -945,12 +945,15 @@ export class Clipboard {
|
|
|
945
945
|
*/
|
|
946
946
|
export function crc32(str) {
|
|
947
947
|
let crc = ~0;
|
|
948
|
-
|
|
949
|
-
|
|
948
|
+
let buf = Buffer.from(str);
|
|
949
|
+
let i = 0, l = buf.length;
|
|
950
|
+
while (i < l) {
|
|
951
|
+
crc = (crc >>> 8) ^ crc32tab[(crc ^ buf[i]) & 0xff];
|
|
952
|
+
i++;
|
|
950
953
|
}
|
|
951
|
-
return
|
|
954
|
+
return (crc ^ -1) >>> 0;
|
|
952
955
|
}
|
|
953
|
-
var crc32tab = [
|
|
956
|
+
var crc32tab = new Int32Array([
|
|
954
957
|
0x00000000, 0x77073096, 0xee0e612c, 0x990951ba,
|
|
955
958
|
0x076dc419, 0x706af48f, 0xe963a535, 0x9e6495a3,
|
|
956
959
|
0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988,
|
|
@@ -1015,7 +1018,7 @@ var crc32tab = [
|
|
|
1015
1018
|
0xbad03605, 0xcdd70693, 0x54de5729, 0x23d967bf,
|
|
1016
1019
|
0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94,
|
|
1017
1020
|
0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d
|
|
1018
|
-
];
|
|
1021
|
+
]);
|
|
1019
1022
|
// :: MIXINS ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
|
1020
1023
|
/**
|
|
1021
1024
|
* taken from this excellent article:
|
package/lib/esm/tooltips.d.ts
CHANGED
|
@@ -42,5 +42,5 @@ export declare class Tooltip extends Component {
|
|
|
42
42
|
*/
|
|
43
43
|
displayAt(x: number, y: number, align?: string): void;
|
|
44
44
|
}
|
|
45
|
-
export
|
|
45
|
+
export type TooltipHandler = (text: string) => void;
|
|
46
46
|
export declare function initTooltips(cb?: TooltipHandler): void;
|
package/lib/esm/x4events.d.ts
CHANGED
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
* OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
|
27
27
|
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
28
28
|
**/
|
|
29
|
-
export
|
|
29
|
+
export type EventCallback<T extends BasicEvent = BasicEvent> = (event: T) => any;
|
|
30
30
|
export interface EventDisposer {
|
|
31
31
|
dispose(): void;
|
|
32
32
|
}
|
|
@@ -144,7 +144,7 @@ export interface EventTypes {
|
|
|
144
144
|
/**
|
|
145
145
|
* convert an EventMap to a EventType
|
|
146
146
|
*/
|
|
147
|
-
export
|
|
147
|
+
export type MapEvents<Type> = {
|
|
148
148
|
[Property in keyof Type]?: (ev: Type[Property]) => any;
|
|
149
149
|
};
|
|
150
150
|
/**
|
package/lib/styles/x4.css
CHANGED
|
@@ -320,6 +320,7 @@ textarea::selection {
|
|
|
320
320
|
display: flex;
|
|
321
321
|
flex-direction: row;
|
|
322
322
|
align-items: center;
|
|
323
|
+
gap: 4px;
|
|
323
324
|
outline: none;
|
|
324
325
|
cursor: pointer;
|
|
325
326
|
font-family: var(--x4-font);
|
|
@@ -336,8 +337,8 @@ textarea::selection {
|
|
|
336
337
|
color: inherit;
|
|
337
338
|
}
|
|
338
339
|
.x-base-button .x-svg-icon {
|
|
339
|
-
width:
|
|
340
|
-
height:
|
|
340
|
+
width: 1rem;
|
|
341
|
+
height: 1rem;
|
|
341
342
|
margin: 0;
|
|
342
343
|
}
|
|
343
344
|
.x-base-button:focus {
|
|
@@ -471,6 +472,7 @@ textarea::selection {
|
|
|
471
472
|
border-bottom: 1px solid transparent;
|
|
472
473
|
margin-top: 1px;
|
|
473
474
|
line-height: 1.3em;
|
|
475
|
+
width: 24px;
|
|
474
476
|
}
|
|
475
477
|
.x-text-edit input::placeholder,
|
|
476
478
|
.x-combo-box input::placeholder,
|
|
@@ -502,7 +504,7 @@ textarea::selection {
|
|
|
502
504
|
color: var(--gray-900);
|
|
503
505
|
border: none;
|
|
504
506
|
margin: 0;
|
|
505
|
-
padding:
|
|
507
|
+
padding: 4px;
|
|
506
508
|
height: 2em;
|
|
507
509
|
margin-top: 1px;
|
|
508
510
|
}
|
package/lib/styles/x4.less
CHANGED
|
@@ -407,6 +407,7 @@ textarea {
|
|
|
407
407
|
display: flex;
|
|
408
408
|
flex-direction: row;
|
|
409
409
|
align-items: center;
|
|
410
|
+
gap: 4px;
|
|
410
411
|
outline: none;
|
|
411
412
|
cursor: pointer;
|
|
412
413
|
font-family: var( --x4-font );
|
|
@@ -426,8 +427,8 @@ textarea {
|
|
|
426
427
|
}
|
|
427
428
|
|
|
428
429
|
.x-svg-icon {
|
|
429
|
-
width:
|
|
430
|
-
height:
|
|
430
|
+
width: 1rem;
|
|
431
|
+
height: 1rem;
|
|
431
432
|
margin: 0;
|
|
432
433
|
}
|
|
433
434
|
|
|
@@ -585,6 +586,7 @@ textarea {
|
|
|
585
586
|
border-bottom: 1px solid transparent;
|
|
586
587
|
margin-top: 1px; // hack alignement label / edit
|
|
587
588
|
line-height: 1.3em;
|
|
589
|
+
width: 24px; // fix min-content
|
|
588
590
|
|
|
589
591
|
&::placeholder {
|
|
590
592
|
color: var( --gray-800 );
|
|
@@ -613,7 +615,7 @@ textarea {
|
|
|
613
615
|
border: none;
|
|
614
616
|
|
|
615
617
|
margin: 0;
|
|
616
|
-
padding:
|
|
618
|
+
padding: 4px;
|
|
617
619
|
height: 2em;
|
|
618
620
|
margin-top: 1px;
|
|
619
621
|
|
package/lib/ts_src/icon.ts
CHANGED
|
@@ -186,6 +186,12 @@ export class Icon extends Component<IconProps>
|
|
|
186
186
|
|
|
187
187
|
match_var = reVar.exec( icon );
|
|
188
188
|
}
|
|
189
|
+
|
|
190
|
+
// <svg ...>
|
|
191
|
+
if( icon.startsWith('<svg') ) {
|
|
192
|
+
this._setSVG( 'data:image/svg+xml;utf8,'+icon);
|
|
193
|
+
return;
|
|
194
|
+
}
|
|
189
195
|
|
|
190
196
|
// svg( <svg-filename> ) -> svg( "mysvgfile.svg" )
|
|
191
197
|
// <svg-filename>.svg -> "mysvgfile.svg"
|
package/lib/ts_src/tools.ts
CHANGED
|
@@ -1208,15 +1208,20 @@ export class Clipboard {
|
|
|
1208
1208
|
*/
|
|
1209
1209
|
|
|
1210
1210
|
export function crc32(str) {
|
|
1211
|
-
|
|
1212
1211
|
let crc = ~0;
|
|
1213
|
-
|
|
1214
|
-
|
|
1215
|
-
|
|
1216
|
-
|
|
1212
|
+
let buf = Buffer.from( str );
|
|
1213
|
+
|
|
1214
|
+
let i = 0,
|
|
1215
|
+
l = buf.length;
|
|
1216
|
+
while( i<l ) {
|
|
1217
|
+
crc = (crc >>> 8) ^ crc32tab[(crc ^ buf[i]) & 0xff];
|
|
1218
|
+
i++;
|
|
1219
|
+
}
|
|
1220
|
+
|
|
1221
|
+
return (crc ^ -1)>>>0;
|
|
1217
1222
|
}
|
|
1218
1223
|
|
|
1219
|
-
var crc32tab = [
|
|
1224
|
+
var crc32tab = new Int32Array([
|
|
1220
1225
|
0x00000000, 0x77073096, 0xee0e612c, 0x990951ba,
|
|
1221
1226
|
0x076dc419, 0x706af48f, 0xe963a535, 0x9e6495a3,
|
|
1222
1227
|
0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988,
|
|
@@ -1281,7 +1286,7 @@ var crc32tab = [
|
|
|
1281
1286
|
0xbad03605, 0xcdd70693, 0x54de5729, 0x23d967bf,
|
|
1282
1287
|
0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94,
|
|
1283
1288
|
0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d
|
|
1284
|
-
];
|
|
1289
|
+
]);
|
|
1285
1290
|
|
|
1286
1291
|
|
|
1287
1292
|
// :: MIXINS ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
package/lib/ts_src/x4.less
CHANGED
|
@@ -407,6 +407,7 @@ textarea {
|
|
|
407
407
|
display: flex;
|
|
408
408
|
flex-direction: row;
|
|
409
409
|
align-items: center;
|
|
410
|
+
gap: 4px;
|
|
410
411
|
outline: none;
|
|
411
412
|
cursor: pointer;
|
|
412
413
|
font-family: var( --x4-font );
|
|
@@ -426,8 +427,8 @@ textarea {
|
|
|
426
427
|
}
|
|
427
428
|
|
|
428
429
|
.x-svg-icon {
|
|
429
|
-
width:
|
|
430
|
-
height:
|
|
430
|
+
width: 1rem;
|
|
431
|
+
height: 1rem;
|
|
431
432
|
margin: 0;
|
|
432
433
|
}
|
|
433
434
|
|
|
@@ -585,6 +586,7 @@ textarea {
|
|
|
585
586
|
border-bottom: 1px solid transparent;
|
|
586
587
|
margin-top: 1px; // hack alignement label / edit
|
|
587
588
|
line-height: 1.3em;
|
|
589
|
+
width: 24px; // fix min-content
|
|
588
590
|
|
|
589
591
|
&::placeholder {
|
|
590
592
|
color: var( --gray-800 );
|
|
@@ -613,7 +615,7 @@ textarea {
|
|
|
613
615
|
border: none;
|
|
614
616
|
|
|
615
617
|
margin: 0;
|
|
616
|
-
padding:
|
|
618
|
+
padding: 4px;
|
|
617
619
|
height: 2em;
|
|
618
620
|
margin-top: 1px;
|
|
619
621
|
|