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.
Files changed (50) hide show
  1. package/lib/cjs/application.js +6 -6
  2. package/lib/cjs/button.d.ts +1 -1
  3. package/lib/cjs/canvas.d.ts +1 -1
  4. package/lib/cjs/cardview.d.ts +1 -1
  5. package/lib/cjs/component.d.ts +6 -6
  6. package/lib/cjs/datastore.d.ts +5 -5
  7. package/lib/cjs/dialog.d.ts +1 -1
  8. package/lib/cjs/drag_manager.d.ts +2 -2
  9. package/lib/cjs/form.d.ts +2 -2
  10. package/lib/cjs/formatters.d.ts +1 -1
  11. package/lib/cjs/gridview.d.ts +4 -4
  12. package/lib/cjs/icon.d.ts +1 -1
  13. package/lib/cjs/icon.js +5 -0
  14. package/lib/cjs/input.d.ts +1 -1
  15. package/lib/cjs/md5.js +7 -7
  16. package/lib/cjs/menu.d.ts +1 -1
  17. package/lib/cjs/property_editor.d.ts +1 -1
  18. package/lib/cjs/router.d.ts +1 -1
  19. package/lib/cjs/textedit.d.ts +1 -1
  20. package/lib/cjs/tools.d.ts +1 -1
  21. package/lib/cjs/tools.js +8 -5
  22. package/lib/cjs/tooltips.d.ts +1 -1
  23. package/lib/cjs/x4events.d.ts +2 -2
  24. package/lib/esm/button.d.ts +1 -1
  25. package/lib/esm/canvas.d.ts +1 -1
  26. package/lib/esm/cardview.d.ts +1 -1
  27. package/lib/esm/component.d.ts +6 -6
  28. package/lib/esm/datastore.d.ts +5 -5
  29. package/lib/esm/dialog.d.ts +1 -1
  30. package/lib/esm/drag_manager.d.ts +2 -2
  31. package/lib/esm/form.d.ts +2 -2
  32. package/lib/esm/formatters.d.ts +1 -1
  33. package/lib/esm/gridview.d.ts +4 -4
  34. package/lib/esm/icon.d.ts +1 -1
  35. package/lib/esm/icon.js +5 -0
  36. package/lib/esm/input.d.ts +1 -1
  37. package/lib/esm/menu.d.ts +1 -1
  38. package/lib/esm/property_editor.d.ts +1 -1
  39. package/lib/esm/router.d.ts +1 -1
  40. package/lib/esm/textedit.d.ts +1 -1
  41. package/lib/esm/tools.d.ts +1 -1
  42. package/lib/esm/tools.js +8 -5
  43. package/lib/esm/tooltips.d.ts +1 -1
  44. package/lib/esm/x4events.d.ts +2 -2
  45. package/lib/styles/x4.css +5 -3
  46. package/lib/styles/x4.less +5 -3
  47. package/lib/ts_src/icon.ts +6 -0
  48. package/lib/ts_src/tools.ts +12 -7
  49. package/lib/ts_src/x4.less +5 -3
  50. package/package.json +1 -1
@@ -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
  }
@@ -37,7 +37,7 @@ import { MenuItem, MenuOrSep } from './menu';
37
37
  interface ButtonEventMap extends CEventMap {
38
38
  click: EvClick;
39
39
  }
40
- declare type MenuCallBack = () => MenuOrSep[];
40
+ type MenuCallBack = () => MenuOrSep[];
41
41
  /**
42
42
  * Button properties
43
43
  */
@@ -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
- declare type PaintHandler = (ctx: CanvasPainter) => any;
57
+ type PaintHandler = (ctx: CanvasPainter) => any;
58
58
  /**
59
59
  *
60
60
  */
@@ -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 declare type PageOrCallback = Component | (() => Component);
32
+ export type PageOrCallback = Component | (() => Component);
33
33
  export interface ICardViewItem {
34
34
  icon?: IconID;
35
35
  name: string;
@@ -84,9 +84,9 @@ export declare const _x4_unitless: {
84
84
  /**
85
85
  *
86
86
  */
87
- export declare type VoidCallback = () => void;
88
- export declare type ComponentOrString = Component | string | HtmlString;
89
- export declare type ComponentContent = ComponentOrString | ComponentOrString[];
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
- declare type SizeMode = null | 'minimize' | 'maximize' | 'restore';
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
- declare type SizerOverlaySens = 'left' | 'top' | 'right' | 'bottom' | 'topleft' | 'topright' | 'bottomleft' | 'bottomright';
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 declare type ComponentConstructor<T> = new (props: CProps) => T;
601
+ export type ComponentConstructor<T> = new (props: CProps) => T;
@@ -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 declare type ChangeCallback = (type: string, id?: any) => void;
32
- export declare type CalcCallback = () => string;
33
- export declare type FieldType = 'string' | 'int' | 'float' | 'date' | 'bool' | 'array' | 'object' | 'any' | 'calc';
34
- export declare type DataIndex = Uint32Array;
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 declare type FilterFunc = (rec: Record) => boolean;
331
+ export type FilterFunc = (rec: Record) => boolean;
332
332
  export interface FilterInfo {
333
333
  op: '<' | '<=' | '=' | '>=' | '>' | '<>' | 'empty-result' | FilterFunc;
334
334
  field?: string;
@@ -51,7 +51,7 @@ export interface DialogBoxEventMap extends PopupEventMap {
51
51
  close: EvClose;
52
52
  btnClick: EvBtnClick;
53
53
  }
54
- export declare type InitFormCallback = () => Form;
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
- declare type DropCallback = (command: 'enter' | 'leave' | 'drag' | 'drop', el: Component, point: Point) => void;
32
- declare type FilterCallback = (el: Component) => boolean;
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 declare type FormBtn = 'ok' | 'cancel' | 'ignore' | 'yes' | 'no' | 'close' | 'save' | 'dontsave';
36
- export declare type FormButtons = (FormBtn | Button | Component)[];
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
  }
@@ -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 declare type FormatFunc = (input: any, rec: any) => string;
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;
@@ -51,10 +51,10 @@ export interface GridColumn {
51
51
  cls?: string;
52
52
  sortable?: boolean;
53
53
  }
54
- export declare type CellRenderer = (rec: Record) => Component;
55
- export declare type RowClassifier = (rec: Record, Row: Component) => void;
56
- export declare type ContextMenuGridItem = (event: MouseEvent, item: Record, grid: GridView) => any;
57
- declare type emptyFn = () => string;
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 declare type IconID = string | number;
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;
@@ -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 declare type EditType = 'text' | 'number' | 'email' | 'date' | 'password' | 'file' | 'checkbox' | 'radio';
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 declare type MenuOrSep = MenuItem | MenuSeparator | MenuTitle;
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 declare type IPropertyField = {
37
+ export type IPropertyField = {
38
38
  id: any;
39
39
  title: string;
40
40
  type: Function | "string" | 'number' | 'boolean' | 'choice' | 'password' | 'button' | 'color';
@@ -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
- declare type RouteHandler = (params: any, path: string) => void;
30
+ type RouteHandler = (params: any, path: string) => void;
31
31
  interface RouterEventMap extends EventMap {
32
32
  error: EvError;
33
33
  }
@@ -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
- declare type ValidationFunction = (value: string) => string;
33
+ type ValidationFunction = (value: string) => string;
34
34
  interface TextEditEventMap extends InputEventMap {
35
35
  click: EvClick;
36
36
  change: EvChange;
@@ -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 declare type Constructor<T> = new (...args: any[]) => T;
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
- for (let i = 0, l = str.length; i < l; i++) {
984
- crc = (crc >>> 8) ^ crc32tab[(crc ^ str.charCodeAt(i)) & 0xff];
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 Math.abs(crc ^ -1);
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:
@@ -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 declare type TooltipHandler = (text: string) => void;
45
+ export type TooltipHandler = (text: string) => void;
46
46
  export declare function initTooltips(cb?: TooltipHandler): void;
@@ -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 declare type EventCallback<T extends BasicEvent = BasicEvent> = (event: T) => any;
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 declare type MapEvents<Type> = {
147
+ export type MapEvents<Type> = {
148
148
  [Property in keyof Type]?: (ev: Type[Property]) => any;
149
149
  };
150
150
  /**
@@ -37,7 +37,7 @@ import { MenuItem, MenuOrSep } from './menu';
37
37
  interface ButtonEventMap extends CEventMap {
38
38
  click: EvClick;
39
39
  }
40
- declare type MenuCallBack = () => MenuOrSep[];
40
+ type MenuCallBack = () => MenuOrSep[];
41
41
  /**
42
42
  * Button properties
43
43
  */
@@ -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
- declare type PaintHandler = (ctx: CanvasPainter) => any;
57
+ type PaintHandler = (ctx: CanvasPainter) => any;
58
58
  /**
59
59
  *
60
60
  */
@@ -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 declare type PageOrCallback = Component | (() => Component);
32
+ export type PageOrCallback = Component | (() => Component);
33
33
  export interface ICardViewItem {
34
34
  icon?: IconID;
35
35
  name: string;
@@ -84,9 +84,9 @@ export declare const _x4_unitless: {
84
84
  /**
85
85
  *
86
86
  */
87
- export declare type VoidCallback = () => void;
88
- export declare type ComponentOrString = Component | string | HtmlString;
89
- export declare type ComponentContent = ComponentOrString | ComponentOrString[];
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
- declare type SizeMode = null | 'minimize' | 'maximize' | 'restore';
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
- declare type SizerOverlaySens = 'left' | 'top' | 'right' | 'bottom' | 'topleft' | 'topright' | 'bottomleft' | 'bottomright';
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 declare type ComponentConstructor<T> = new (props: CProps) => T;
601
+ export type ComponentConstructor<T> = new (props: CProps) => T;
@@ -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 declare type ChangeCallback = (type: string, id?: any) => void;
32
- export declare type CalcCallback = () => string;
33
- export declare type FieldType = 'string' | 'int' | 'float' | 'date' | 'bool' | 'array' | 'object' | 'any' | 'calc';
34
- export declare type DataIndex = Uint32Array;
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 declare type FilterFunc = (rec: Record) => boolean;
331
+ export type FilterFunc = (rec: Record) => boolean;
332
332
  export interface FilterInfo {
333
333
  op: '<' | '<=' | '=' | '>=' | '>' | '<>' | 'empty-result' | FilterFunc;
334
334
  field?: string;
@@ -51,7 +51,7 @@ export interface DialogBoxEventMap extends PopupEventMap {
51
51
  close: EvClose;
52
52
  btnClick: EvBtnClick;
53
53
  }
54
- export declare type InitFormCallback = () => Form;
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
- declare type DropCallback = (command: 'enter' | 'leave' | 'drag' | 'drop', el: Component, point: Point) => void;
32
- declare type FilterCallback = (el: Component) => boolean;
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 declare type FormBtn = 'ok' | 'cancel' | 'ignore' | 'yes' | 'no' | 'close' | 'save' | 'dontsave';
36
- export declare type FormButtons = (FormBtn | Button | Component)[];
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
  }
@@ -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 declare type FormatFunc = (input: any, rec: any) => string;
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;
@@ -51,10 +51,10 @@ export interface GridColumn {
51
51
  cls?: string;
52
52
  sortable?: boolean;
53
53
  }
54
- export declare type CellRenderer = (rec: Record) => Component;
55
- export declare type RowClassifier = (rec: Record, Row: Component) => void;
56
- export declare type ContextMenuGridItem = (event: MouseEvent, item: Record, grid: GridView) => any;
57
- declare type emptyFn = () => string;
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 declare type IconID = string | number;
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;
@@ -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 declare type EditType = 'text' | 'number' | 'email' | 'date' | 'password' | 'file' | 'checkbox' | 'radio';
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 declare type MenuOrSep = MenuItem | MenuSeparator | MenuTitle;
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 declare type IPropertyField = {
37
+ export type IPropertyField = {
38
38
  id: any;
39
39
  title: string;
40
40
  type: Function | "string" | 'number' | 'boolean' | 'choice' | 'password' | 'button' | 'color';
@@ -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
- declare type RouteHandler = (params: any, path: string) => void;
30
+ type RouteHandler = (params: any, path: string) => void;
31
31
  interface RouterEventMap extends EventMap {
32
32
  error: EvError;
33
33
  }
@@ -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
- declare type ValidationFunction = (value: string) => string;
33
+ type ValidationFunction = (value: string) => string;
34
34
  interface TextEditEventMap extends InputEventMap {
35
35
  click: EvClick;
36
36
  change: EvChange;
@@ -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 declare type Constructor<T> = new (...args: any[]) => T;
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
- for (let i = 0, l = str.length; i < l; i++) {
949
- crc = (crc >>> 8) ^ crc32tab[(crc ^ str.charCodeAt(i)) & 0xff];
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 Math.abs(crc ^ -1);
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:
@@ -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 declare type TooltipHandler = (text: string) => void;
45
+ export type TooltipHandler = (text: string) => void;
46
46
  export declare function initTooltips(cb?: TooltipHandler): void;
@@ -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 declare type EventCallback<T extends BasicEvent = BasicEvent> = (event: T) => any;
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 declare type MapEvents<Type> = {
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: 100%;
340
- height: 100%;
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: 0;
507
+ padding: 4px;
506
508
  height: 2em;
507
509
  margin-top: 1px;
508
510
  }
@@ -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: 100%;
430
- height: 100%;
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: 0;
618
+ padding: 4px;
617
619
  height: 2em;
618
620
  margin-top: 1px;
619
621
 
@@ -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"
@@ -1208,15 +1208,20 @@ export class Clipboard {
1208
1208
  */
1209
1209
 
1210
1210
  export function crc32(str) {
1211
-
1212
1211
  let crc = ~0;
1213
- for (let i = 0, l = str.length; i < l; i++) {
1214
- crc = (crc >>> 8) ^ crc32tab[(crc ^ str.charCodeAt(i)) & 0xff];
1215
- }
1216
- return Math.abs(crc ^ -1);
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 ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
@@ -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: 100%;
430
- height: 100%;
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: 0;
618
+ padding: 4px;
617
619
  height: 2em;
618
620
  margin-top: 1px;
619
621
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "x4js",
3
- "version": "1.5.0",
3
+ "version": "1.5.1",
4
4
  "description": "X4js core files",
5
5
  "main": "lib/cjs/index.js",
6
6
  "types": "lib/cjs/index.d.ts",