x4js 1.4.17 → 1.4.21

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 (119) hide show
  1. package/README.md +4 -3
  2. package/lib/application.d.ts +1 -1
  3. package/lib/application.js +4 -3
  4. package/lib/base_component.d.ts +1 -1
  5. package/lib/base_component.js +3 -3
  6. package/lib/button.d.ts +1 -1
  7. package/lib/button.js +3 -3
  8. package/lib/calendar.d.ts +1 -1
  9. package/lib/calendar.js +5 -4
  10. package/lib/canvas.d.ts +1 -1
  11. package/lib/canvas.js +2 -2
  12. package/lib/cardview.d.ts +1 -1
  13. package/lib/cardview.js +2 -2
  14. package/lib/checkbox.d.ts +1 -1
  15. package/lib/checkbox.js +2 -2
  16. package/lib/colorpicker.d.ts +1 -1
  17. package/lib/colorpicker.js +5 -5
  18. package/lib/combobox.d.ts +1 -1
  19. package/lib/combobox.js +3 -3
  20. package/lib/component.d.ts +1 -5
  21. package/lib/component.js +35 -39
  22. package/lib/datastore.d.ts +1 -1
  23. package/lib/datastore.js +5 -5
  24. package/lib/dialog.d.ts +1 -1
  25. package/lib/dialog.js +4 -3
  26. package/lib/drag_manager.js +30 -1
  27. package/lib/fileupload.js +2 -1
  28. package/lib/form.d.ts +1 -1
  29. package/lib/gridview.d.ts +1 -5
  30. package/lib/gridview.js +8 -7
  31. package/lib/i18n.d.ts +35 -33
  32. package/lib/i18n.js +180 -93
  33. package/lib/icon.d.ts +1 -1
  34. package/lib/icon.js +19 -16
  35. package/lib/image.js +4 -3
  36. package/lib/index.d.ts +1 -4
  37. package/lib/index.js +4 -4
  38. package/lib/input.js +1 -1
  39. package/lib/link.d.ts +1 -1
  40. package/lib/link.js +2 -2
  41. package/lib/listview.d.ts +1 -1
  42. package/lib/listview.js +10 -9
  43. package/lib/menu.d.ts +1 -1
  44. package/lib/menu.js +5 -4
  45. package/lib/popup.d.ts +1 -1
  46. package/lib/popup.js +13 -12
  47. package/lib/property_editor.d.ts +1 -1
  48. package/lib/property_editor.js +2 -2
  49. package/lib/radiobtn.d.ts +1 -1
  50. package/lib/radiobtn.js +4 -3
  51. package/lib/rating.d.ts +1 -1
  52. package/lib/rating.js +2 -2
  53. package/lib/router.d.ts +1 -1
  54. package/lib/router.js +5 -4
  55. package/lib/spreadsheet.d.ts +1 -1
  56. package/lib/spreadsheet.js +9 -8
  57. package/lib/styles.js +6 -5
  58. package/lib/svgcomponent.d.ts +1 -1
  59. package/lib/svgcomponent.js +4 -1
  60. package/lib/tabbar.d.ts +1 -1
  61. package/lib/tabbar.js +2 -2
  62. package/lib/textarea.d.ts +1 -1
  63. package/lib/textarea.js +2 -2
  64. package/lib/textedit.d.ts +1 -1
  65. package/lib/textedit.js +5 -4
  66. package/lib/tools.d.ts +1 -0
  67. package/lib/tools.js +15 -6
  68. package/lib/tooltips.js +6 -5
  69. package/lib/treeview.d.ts +1 -1
  70. package/lib/treeview.js +8 -8
  71. package/lib/x4dom.d.ts +49 -0
  72. package/lib/x4dom.js +32 -0
  73. package/lib/x4events.d.ts +266 -0
  74. package/lib/x4events.js +389 -0
  75. package/package.json +4 -3
  76. package/src/application.ts +5 -4
  77. package/src/base_component.ts +1 -1
  78. package/src/button.ts +1 -1
  79. package/src/calendar.ts +5 -3
  80. package/src/canvas.ts +1 -1
  81. package/src/cardview.ts +1 -1
  82. package/src/checkbox.ts +1 -1
  83. package/src/colorpicker.ts +1 -1
  84. package/src/combobox.ts +1 -1
  85. package/src/component.ts +34 -39
  86. package/src/datastore.ts +1 -1
  87. package/src/dialog.ts +4 -2
  88. package/src/drag_manager.ts +4 -1
  89. package/src/fileupload.ts +2 -1
  90. package/src/form.ts +1 -1
  91. package/src/gridview.ts +4 -3
  92. package/src/hosts/electron.ts +4 -1
  93. package/src/i18n.ts +234 -97
  94. package/src/icon.ts +18 -16
  95. package/src/image.ts +5 -3
  96. package/src/index.ts +4 -4
  97. package/src/input.ts +1 -1
  98. package/src/layout.ts +1 -1
  99. package/src/link.ts +1 -1
  100. package/src/listview.ts +6 -4
  101. package/src/menu.ts +5 -3
  102. package/src/popup.ts +14 -12
  103. package/src/property_editor.ts +1 -1
  104. package/src/radiobtn.ts +4 -2
  105. package/src/rating.ts +1 -1
  106. package/src/router.ts +4 -2
  107. package/src/smartedit.ts +3 -2
  108. package/src/spreadsheet.ts +8 -6
  109. package/src/styles.ts +7 -5
  110. package/src/svgcomponent.ts +4 -1
  111. package/src/tabbar.ts +1 -1
  112. package/src/textarea.ts +1 -1
  113. package/src/textedit.ts +4 -2
  114. package/src/tools.ts +15 -5
  115. package/src/tooltips.ts +7 -5
  116. package/src/treeview.ts +1 -1
  117. package/src/x4dom.ts +57 -0
  118. package/src/{x4_events.ts → x4events.ts} +1 -1
  119. package/tsconfig.json +11 -1
package/src/component.ts CHANGED
@@ -34,9 +34,11 @@
34
34
  */
35
35
 
36
36
  import { pascalCase, Rect, isString, isArray, Size, Point, isNumber, asap, HtmlString, isHtmlString, Constructor, getMousePos } from './tools';
37
+ import { x4document } from './x4dom';
38
+
37
39
  import { Stylesheet, ComputedStyle } from './styles';
38
40
  import { _tr } from './i18n';
39
- import { BasicEvent, EventCallback } from './x4_events';
41
+ import { BasicEvent, EventCallback } from './x4events';
40
42
  import { BaseComponent, BaseComponentProps, BaseComponentEventMap } from './base_component';
41
43
  import { IDOMEvents, X4ElementEventMap } from './dom_events';
42
44
 
@@ -725,21 +727,12 @@ export class Component<P extends CProps<BaseComponentEventMap> = CProps<BaseComp
725
727
  }
726
728
  }
727
729
 
728
- ///@deprecated
729
- //private build(): void {}
730
- /**
731
- * @deprecated
732
- */
733
-
734
- private Build(): void { }
735
-
736
730
  public _build(): HTMLElement {
737
731
  if (this.m_dom) {
738
732
  return this.m_dom;
739
733
  }
740
734
 
741
735
  this._createDOM();
742
-
743
736
  return this.m_dom;
744
737
  }
745
738
 
@@ -800,10 +793,10 @@ export class Component<P extends CProps<BaseComponentEventMap> = CProps<BaseComp
800
793
  let vdom = this.m_iprops;
801
794
 
802
795
  if (props.ns) {
803
- this.m_dom = <HTMLElement>document.createElementNS(props.ns, props.tag ?? 'div');
796
+ this.m_dom = <HTMLElement>x4document.createElementNS(props.ns, props.tag ?? 'div');
804
797
  }
805
798
  else {
806
- this.m_dom = document.createElement(props.tag ?? 'div');
799
+ this.m_dom = x4document.createElement( (props.tag ?? 'div') as any );
807
800
  }
808
801
 
809
802
  this.m_dom[_x4_el_sym] = this;
@@ -880,7 +873,7 @@ export class Component<P extends CProps<BaseComponentEventMap> = CProps<BaseComp
880
873
  // wait for dom insertion inside document.body
881
874
  if (!Component.__createObserver) {
882
875
  Component.__createObserver = new MutationObserver(Component._observeCreation);
883
- Component.__createObserver.observe(document.body, { childList: true, subtree: true });
876
+ Component.__createObserver.observe(x4document.body, { childList: true, subtree: true });
884
877
  }
885
878
 
886
879
  return this.m_dom;
@@ -1190,10 +1183,10 @@ export class Component<P extends CProps<BaseComponentEventMap> = CProps<BaseComp
1190
1183
  Component.__privateEvents[name] = true; // todo count it
1191
1184
 
1192
1185
  if (passiveEvents[name]) {
1193
- document.addEventListener(name, Component._dispatchEvent, { passive: false, capture: true });
1186
+ x4document.addEventListener(name as any, Component._dispatchEvent, { passive: false, capture: true });
1194
1187
  }
1195
1188
  else {
1196
- document.addEventListener(name, Component._dispatchEvent, true);
1189
+ x4document.addEventListener(name as any, Component._dispatchEvent, true);
1197
1190
  }
1198
1191
  }
1199
1192
 
@@ -1415,8 +1408,8 @@ export class Component<P extends CProps<BaseComponentEventMap> = CProps<BaseComp
1415
1408
  *
1416
1409
  */
1417
1410
 
1418
- private static dispatchCaptures(event: UIEvent) {
1419
- Component.__capture.handler(event);
1411
+ private static dispatchCaptures(event: Event) {
1412
+ Component.__capture.handler(event as UIEvent);
1420
1413
  }
1421
1414
 
1422
1415
  /**
@@ -1447,12 +1440,12 @@ export class Component<P extends CProps<BaseComponentEventMap> = CProps<BaseComp
1447
1440
 
1448
1441
  // todo: review that
1449
1442
 
1450
- let iframes = document.querySelectorAll("iframe");
1443
+ let iframes = x4document.querySelectorAll<HTMLIFrameElement>("iframe");
1451
1444
  iframes.forEach( f => {
1452
1445
  flyWrap(f).setStyleValue( 'pointer-events', 'none' );
1453
1446
  });
1454
1447
 
1455
- let overs = document.querySelectorAll(":hover");
1448
+ let overs = x4document.querySelectorAll(":hover");
1456
1449
 
1457
1450
  let cursor = null;
1458
1451
  if (overs.length) {
@@ -1461,7 +1454,7 @@ export class Component<P extends CProps<BaseComponentEventMap> = CProps<BaseComp
1461
1454
  cursor = style.cursor;
1462
1455
  }
1463
1456
 
1464
- Component.__capture_mask = document.createElement('div');
1457
+ Component.__capture_mask = x4document.createElement('div');
1465
1458
  let mask = flyWrap(Component.__capture_mask);
1466
1459
  mask.addClass('@capture-mask');
1467
1460
 
@@ -1469,15 +1462,15 @@ export class Component<P extends CProps<BaseComponentEventMap> = CProps<BaseComp
1469
1462
  mask.setStyleValue('cursor', cursor);
1470
1463
  }
1471
1464
 
1472
- document.body.appendChild(mask.dom);
1465
+ x4document.body.appendChild(mask.dom);
1473
1466
 
1474
- document.addEventListener('mousedown', Component.dispatchCaptures);
1475
- document.addEventListener('mousemove', Component.dispatchCaptures);
1476
- document.addEventListener('mouseup', Component.dispatchCaptures);
1467
+ x4document.addEventListener('mousedown', Component.dispatchCaptures);
1468
+ x4document.addEventListener('mousemove', Component.dispatchCaptures);
1469
+ x4document.addEventListener('mouseup', Component.dispatchCaptures);
1477
1470
 
1478
- document.addEventListener('touchstart', Component.dispatchCaptures);
1479
- document.addEventListener('touchmove', Component.dispatchCaptures);
1480
- document.addEventListener('touchend', Component.dispatchCaptures);
1471
+ x4document.addEventListener('touchstart', Component.dispatchCaptures);
1472
+ x4document.addEventListener('touchmove', Component.dispatchCaptures);
1473
+ x4document.addEventListener('touchend', Component.dispatchCaptures);
1481
1474
 
1482
1475
  Component.__capture = {
1483
1476
  initiator,
@@ -1490,13 +1483,13 @@ export class Component<P extends CProps<BaseComponentEventMap> = CProps<BaseComp
1490
1483
 
1491
1484
  console.assert(!!Component.__capture);
1492
1485
 
1493
- document.removeEventListener('touchstart', Component.dispatchCaptures);
1494
- document.removeEventListener('touchmove', Component.dispatchCaptures);
1495
- document.removeEventListener('touchend', Component.dispatchCaptures);
1486
+ x4document.removeEventListener('touchstart', Component.dispatchCaptures);
1487
+ x4document.removeEventListener('touchmove', Component.dispatchCaptures);
1488
+ x4document.removeEventListener('touchend', Component.dispatchCaptures);
1496
1489
 
1497
- document.removeEventListener('mousedown', Component.dispatchCaptures);
1498
- document.removeEventListener('mousemove', Component.dispatchCaptures);
1499
- document.removeEventListener('mouseup', Component.dispatchCaptures);
1490
+ x4document.removeEventListener('mousedown', Component.dispatchCaptures);
1491
+ x4document.removeEventListener('mousemove', Component.dispatchCaptures);
1492
+ x4document.removeEventListener('mouseup', Component.dispatchCaptures);
1500
1493
 
1501
1494
  Component.__capture.iframes.forEach( f => {
1502
1495
  flyWrap(f).setStyleValue( 'pointer-events', null );
@@ -1504,7 +1497,7 @@ export class Component<P extends CProps<BaseComponentEventMap> = CProps<BaseComp
1504
1497
 
1505
1498
  Component.__capture = null;
1506
1499
  if (Component.__capture_mask) {
1507
- document.body.removeChild(Component.__capture_mask);
1500
+ x4document.body.removeChild(Component.__capture_mask);
1508
1501
  Component.__capture_mask = null;
1509
1502
  }
1510
1503
  }
@@ -1525,7 +1518,9 @@ export class Component<P extends CProps<BaseComponentEventMap> = CProps<BaseComp
1525
1518
  let right = undefined;
1526
1519
 
1527
1520
  let pn = this.dom.parentElement;
1528
- while( pn && pn!=document.body ) {
1521
+ const bdy = x4document.body;
1522
+
1523
+ while( pn && pn!=bdy ) {
1529
1524
 
1530
1525
  const pr = pn.getBoundingClientRect( );
1531
1526
 
@@ -1696,18 +1691,18 @@ export class Component<P extends CProps<BaseComponentEventMap> = CProps<BaseComp
1696
1691
  static getScrollbarSize() {
1697
1692
 
1698
1693
  if (Component.__sb_width === undefined) {
1699
- let outerDiv = document.createElement('div');
1694
+ let outerDiv = x4document.createElement('div');
1700
1695
  outerDiv.style.cssText = 'overflow:auto;position:absolute;top:0;width:100px;height:100px';
1701
1696
 
1702
- let innerDiv = document.createElement('div');
1697
+ let innerDiv = x4document.createElement('div');
1703
1698
  innerDiv.style.width = '200px';
1704
1699
  innerDiv.style.height = '200px';
1705
1700
 
1706
1701
  outerDiv.appendChild(innerDiv);
1707
- document.body.appendChild(outerDiv);
1702
+ x4document.body.appendChild(outerDiv);
1708
1703
 
1709
1704
  Component.__sb_width = outerDiv.offsetWidth - outerDiv.clientWidth;
1710
- document.body.removeChild(outerDiv);
1705
+ x4document.body.removeChild(outerDiv);
1711
1706
  }
1712
1707
 
1713
1708
  return Component.__sb_width;
package/src/datastore.ts CHANGED
@@ -29,7 +29,7 @@
29
29
 
30
30
  import { ajaxRequest } from './request';
31
31
  import { isArray, isString } from './tools';
32
- import { BasicEvent, EvChange, EventSource, EventMap, MapEvents } from './x4_events';
32
+ import { BasicEvent, EvChange, EventSource, EventMap, MapEvents } from './x4events';
33
33
  import { BaseComponent, BaseComponentEventMap, BaseComponentProps } from './base_component';
34
34
 
35
35
  export type ChangeCallback = (type: string, id?: any) => void;
package/src/dialog.ts CHANGED
@@ -27,13 +27,15 @@
27
27
  * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
28
28
  **/
29
29
 
30
+ import { x4document } from './x4dom'
31
+
30
32
  import { Popup, PopupProps, PopupEventMap, EvMove } from './popup'
31
33
  import { Icon, IconID } from './icon'
32
34
  import { HLayout } from './layout'
33
35
  import { Label } from './label'
34
36
  import { Form, FormButtons } from './form'
35
37
  import { Component, ComponentContent, EvSize, flyWrap } from './component'
36
- import { BasicEvent, EventCallback } from './x4_events'
38
+ import { BasicEvent, EventCallback } from './x4events'
37
39
  import { Rect, getMousePos, isFunction, isTouchDevice, isString, Size } from './tools'
38
40
 
39
41
  interface Geometry {
@@ -458,7 +460,7 @@ export class Dialog<P extends DialogProps = DialogProps, E extends DialogBoxEven
458
460
 
459
461
  let { x, y } = getMousePos(event, true);
460
462
 
461
- let wrc = flyWrap(document.body).getBoundingRect();
463
+ let wrc = flyWrap(x4document.body).getBoundingRect();
462
464
  let rc = this.getBoundingRect(true);
463
465
  let trc = this.m_el_title.getBoundingRect();
464
466
 
@@ -26,6 +26,9 @@
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
+
30
+ import { x4document } from './x4dom'
31
+
29
32
  import { Component } from './component';
30
33
  import { Point } from './tools';
31
34
 
@@ -61,7 +64,7 @@ class DragManager {
61
64
  this.dragGhost = el.dom.cloneNode(true) as HTMLElement;
62
65
 
63
66
  this.dragGhost.classList.add('dragged');
64
- document.body.appendChild(this.dragGhost);
67
+ x4document.body.appendChild(this.dragGhost);
65
68
 
66
69
  el.addClass( 'dragging' );
67
70
 
package/src/fileupload.ts CHANGED
@@ -27,6 +27,7 @@
27
27
  * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
28
28
  **/
29
29
 
30
+ import { x4document } from './x4dom'
30
31
  import { Component, CProps } from './component'
31
32
 
32
33
  import { HLayout } from './layout'
@@ -157,7 +158,7 @@ function _createFileInput() {
157
158
  });
158
159
 
159
160
  // ajoute un input type:file caché pour pouvoir choir un fichier a ouvrir
160
- document.body.appendChild(g_file_input._build());
161
+ x4document.body.appendChild(g_file_input._build());
161
162
  }
162
163
 
163
164
  g_file_input.clearDomEvent('change');
package/src/form.ts CHANGED
@@ -33,7 +33,7 @@ import { Button } from './button'
33
33
  import { Input } from './input'
34
34
  import { TextEdit } from './textedit'
35
35
  import { ajaxRequest, RequestProps } from './request'
36
- import { EventCallback } from './x4_events'
36
+ import { EventCallback } from './x4events'
37
37
  import { EvBtnClick } from './dialog'
38
38
 
39
39
  import { _tr } from './i18n'
package/src/gridview.ts CHANGED
@@ -34,6 +34,7 @@ const T_UPDATE = Symbol('update');
34
34
  * todo: button in a column
35
35
  */
36
36
 
37
+ import { x4document } from './x4dom'
37
38
 
38
39
  import { HLayout, VLayout } from './layout'
39
40
  import { Component, ContainerEventMap, EvSize, EvDblClick, CProps, flyWrap, html, HtmlString, SizerOverlay, Flex } from './component'
@@ -43,7 +44,7 @@ import * as Formatters from './formatters'
43
44
  import { downloadData } from './tools'
44
45
  import { DataView, DataStore, Record } from './datastore'
45
46
 
46
- import { EvContextMenu, EvSelectionChange, BasicEvent, EventDisposer } from "./x4_events";
47
+ import { EvContextMenu, EvSelectionChange, BasicEvent, EventDisposer } from "./x4events";
47
48
  import { Icon } from './icon.js';
48
49
 
49
50
  export interface EvGridCheck extends BasicEvent {
@@ -618,10 +619,10 @@ export class GridView extends VLayout<GridViewProps, GridViewEventMap> {
618
619
  */
619
620
 
620
621
  private _computeItemHeight() {
621
- let gr = document.createElement('div');
622
+ let gr = x4document.createElement('div');
622
623
  gr.classList.add('x-row');
623
624
 
624
- let gv = document.createElement('div');
625
+ let gv = x4document.createElement('div');
625
626
  gv.classList.add('x-grid-view');
626
627
  gv.style.position = 'absolute';
627
628
  gv.style.top = '-1000px';
@@ -17,11 +17,14 @@
17
17
  * You should have received a copy of the GNU General Public License along with this program. If not, see <https://www.gnu.org/licenses/>.
18
18
  **/
19
19
 
20
+ import { x4document } from '../dom-gen'
20
21
  import { FileStat, PathType, PartType, Host } from './host'
21
22
 
22
23
  export * from './host';
23
24
 
25
+ declare const require;
24
26
  declare const host_require;
27
+
25
28
  if( !globalThis.host_require ) {
26
29
  globalThis.host_require = require;
27
30
  }
@@ -154,7 +157,7 @@ export class ElectronHost extends Host {
154
157
  }
155
158
 
156
159
  createCanvas = ( ) => {
157
- return document.createElement('canvas');
160
+ return x4document.createElement('canvas');
158
161
  }
159
162
  }
160
163