x4js 2.0.20 → 2.0.22

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 (173) hide show
  1. package/lib/cjs/x4.css +1 -1
  2. package/lib/cjs/x4.js +2 -2
  3. package/lib/esm/x4.css +1 -1
  4. package/lib/esm/x4.mjs +2 -2
  5. package/lib/styles/x4.css +1 -1
  6. package/lib/types/x4js.d.ts +93 -77
  7. package/package.json +1 -1
  8. package/src/components/boxes/boxes.ts +33 -1
  9. package/src/components/canvas/canvas.ts +9 -3
  10. package/src/components/combobox/combobox.module.scss +13 -0
  11. package/src/components/combobox/combobox.ts +7 -0
  12. package/src/components/form/form.ts +4 -4
  13. package/src/components/gridview/gridview.ts +12 -9
  14. package/src/components/header/header.module.scss +2 -1
  15. package/src/components/header/header.ts +17 -5
  16. package/src/components/icon/icon.module.scss +1 -0
  17. package/src/components/label/label.module.scss +6 -1
  18. package/src/components/listbox/listbox.module.scss +35 -31
  19. package/src/components/listbox/listbox.ts +50 -12
  20. package/src/components/messages/messages.ts +14 -0
  21. package/src/components/notification/notification.ts +1 -1
  22. package/src/components/popup/popup.ts +13 -2
  23. package/src/components/propgrid/propgrid.ts +4 -2
  24. package/src/components/sizers/sizer.ts +4 -4
  25. package/src/components/tabs/tabs.module.scss +2 -2
  26. package/src/components/tabs/tabs.ts +28 -4
  27. package/src/components/textedit/textedit.ts +1 -1
  28. package/src/components/treeview/treeview.module.scss +9 -1
  29. package/src/components/treeview/treeview.ts +52 -13
  30. package/src/core/component.ts +46 -9
  31. package/src/core/core_data.ts +8 -8
  32. package/src/core/core_state.ts +1 -1
  33. package/src/core/core_tools.ts +2 -0
  34. package/lib/src/components/base.scss +0 -25
  35. package/lib/src/components/boxes/boxes.module.scss +0 -54
  36. package/lib/src/components/boxes/boxes.ts +0 -370
  37. package/lib/src/components/breadcrumb/breadcrumb.scss +0 -56
  38. package/lib/src/components/breadcrumb/breadcrumb.ts +0 -93
  39. package/lib/src/components/breadcrumb/chevron-right.svg +0 -1
  40. package/lib/src/components/btngroup/btngroup.module.scss +0 -41
  41. package/lib/src/components/btngroup/btngroup.ts +0 -153
  42. package/lib/src/components/button/button.module.scss +0 -173
  43. package/lib/src/components/button/button.ts +0 -185
  44. package/lib/src/components/calendar/calendar-check-sharp-light.svg +0 -1
  45. package/lib/src/components/calendar/calendar.module.scss +0 -163
  46. package/lib/src/components/calendar/calendar.ts +0 -327
  47. package/lib/src/components/calendar/chevron-left-sharp-light.svg +0 -1
  48. package/lib/src/components/calendar/chevron-right-sharp-light.svg +0 -1
  49. package/lib/src/components/canvas/canvas.module.scss +0 -25
  50. package/lib/src/components/canvas/canvas.ts +0 -189
  51. package/lib/src/components/canvas/canvas_ex.ts +0 -276
  52. package/lib/src/components/checkbox/check.svg +0 -4
  53. package/lib/src/components/checkbox/checkbox.module.scss +0 -142
  54. package/lib/src/components/checkbox/checkbox.ts +0 -140
  55. package/lib/src/components/colorinput/colorinput.module.scss +0 -65
  56. package/lib/src/components/colorinput/colorinput.ts +0 -91
  57. package/lib/src/components/colorinput/crosshairs-simple-sharp-light.svg +0 -1
  58. package/lib/src/components/colorpicker/colorpicker.module.scss +0 -133
  59. package/lib/src/components/colorpicker/colorpicker.ts +0 -482
  60. package/lib/src/components/combobox/combobox.module.scss +0 -133
  61. package/lib/src/components/combobox/combobox.ts +0 -275
  62. package/lib/src/components/combobox/updown.svg +0 -4
  63. package/lib/src/components/components.ts +0 -42
  64. package/lib/src/components/dialog/dialog.module.scss +0 -104
  65. package/lib/src/components/dialog/dialog.ts +0 -229
  66. package/lib/src/components/dialog/xmark-sharp-light.svg +0 -1
  67. package/lib/src/components/filedrop/cloud-arrow-up.svg +0 -1
  68. package/lib/src/components/filedrop/filedrop.module.scss +0 -70
  69. package/lib/src/components/filedrop/filedrop.ts +0 -131
  70. package/lib/src/components/form/form.module.scss +0 -38
  71. package/lib/src/components/form/form.ts +0 -172
  72. package/lib/src/components/gridview/arrow-down-light.svg +0 -1
  73. package/lib/src/components/gridview/arrow-up-light.svg +0 -1
  74. package/lib/src/components/gridview/gridview.module.scss +0 -324
  75. package/lib/src/components/gridview/gridview.ts +0 -1175
  76. package/lib/src/components/header/header.module.scss +0 -40
  77. package/lib/src/components/header/header.ts +0 -130
  78. package/lib/src/components/icon/icon.module.scss +0 -31
  79. package/lib/src/components/icon/icon.ts +0 -137
  80. package/lib/src/components/image/image.module.scss +0 -28
  81. package/lib/src/components/image/image.ts +0 -168
  82. package/lib/src/components/input/input.module.scss +0 -74
  83. package/lib/src/components/input/input.ts +0 -422
  84. package/lib/src/components/keyboard/arrow-up.svg +0 -1
  85. package/lib/src/components/keyboard/delete-left.svg +0 -1
  86. package/lib/src/components/keyboard/eye-slash.svg +0 -1
  87. package/lib/src/components/keyboard/keyboard.module.scss +0 -134
  88. package/lib/src/components/keyboard/keyboard.ts +0 -526
  89. package/lib/src/components/label/label.module.scss +0 -76
  90. package/lib/src/components/label/label.ts +0 -97
  91. package/lib/src/components/link/link.ts +0 -81
  92. package/lib/src/components/listbox/listbox.module.scss +0 -161
  93. package/lib/src/components/listbox/listbox.ts +0 -539
  94. package/lib/src/components/menu/caret-right-solid.svg +0 -1
  95. package/lib/src/components/menu/menu.module.scss +0 -117
  96. package/lib/src/components/menu/menu.ts +0 -174
  97. package/lib/src/components/messages/circle-exclamation.svg +0 -1
  98. package/lib/src/components/messages/messages.module.scss +0 -92
  99. package/lib/src/components/messages/messages.ts +0 -215
  100. package/lib/src/components/messages/pen-field.svg +0 -1
  101. package/lib/src/components/normalize.scss +0 -391
  102. package/lib/src/components/notification/circle-check-solid.svg +0 -1
  103. package/lib/src/components/notification/circle-exclamation-solid.svg +0 -1
  104. package/lib/src/components/notification/circle-notch-light.svg +0 -1
  105. package/lib/src/components/notification/notification.module.scss +0 -84
  106. package/lib/src/components/notification/notification.ts +0 -107
  107. package/lib/src/components/notification/xmark-sharp-light.svg +0 -1
  108. package/lib/src/components/panel/panel.module.scss +0 -60
  109. package/lib/src/components/panel/panel.ts +0 -58
  110. package/lib/src/components/popup/popup.module.scss +0 -51
  111. package/lib/src/components/popup/popup.ts +0 -442
  112. package/lib/src/components/progress/progress.module.scss +0 -57
  113. package/lib/src/components/progress/progress.ts +0 -44
  114. package/lib/src/components/propgrid/folder-closed.svg +0 -1
  115. package/lib/src/components/propgrid/folder-open.svg +0 -1
  116. package/lib/src/components/propgrid/progrid.module.scss +0 -112
  117. package/lib/src/components/propgrid/propgrid.ts +0 -288
  118. package/lib/src/components/propgrid/updown.svg +0 -4
  119. package/lib/src/components/radio/radio.module.scss +0 -147
  120. package/lib/src/components/radio/radio.svg +0 -4
  121. package/lib/src/components/radio/radio.ts +0 -142
  122. package/lib/src/components/rating/rating.module.scss +0 -23
  123. package/lib/src/components/rating/rating.ts +0 -131
  124. package/lib/src/components/rating/star-sharp-light.svg +0 -1
  125. package/lib/src/components/rating/star-sharp-solid.svg +0 -1
  126. package/lib/src/components/select/select.module.scss +0 -9
  127. package/lib/src/components/select/select.ts +0 -134
  128. package/lib/src/components/shared.scss +0 -137
  129. package/lib/src/components/sizers/sizer.module.scss +0 -90
  130. package/lib/src/components/sizers/sizer.ts +0 -132
  131. package/lib/src/components/slider/slider.module.scss +0 -118
  132. package/lib/src/components/slider/slider.ts +0 -198
  133. package/lib/src/components/switch/switch.module.scss +0 -127
  134. package/lib/src/components/switch/switch.ts +0 -62
  135. package/lib/src/components/tabs/tabs.module.scss +0 -45
  136. package/lib/src/components/tabs/tabs.ts +0 -205
  137. package/lib/src/components/textarea/textarea.module.scss +0 -63
  138. package/lib/src/components/textarea/textarea.ts +0 -125
  139. package/lib/src/components/textedit/textedit.module.scss +0 -116
  140. package/lib/src/components/textedit/textedit.ts +0 -115
  141. package/lib/src/components/themes.scss +0 -88
  142. package/lib/src/components/tickline/tickline.module.scss +0 -26
  143. package/lib/src/components/tickline/tickline.ts +0 -82
  144. package/lib/src/components/tooltips/circle-info-sharp-light.svg +0 -1
  145. package/lib/src/components/tooltips/comments-question.svg +0 -1
  146. package/lib/src/components/tooltips/tooltips.scss +0 -72
  147. package/lib/src/components/tooltips/tooltips.ts +0 -109
  148. package/lib/src/components/treeview/chevron-down-light.svg +0 -1
  149. package/lib/src/components/treeview/treeview.module.scss +0 -185
  150. package/lib/src/components/treeview/treeview.ts +0 -445
  151. package/lib/src/components/viewport/viewport.module.scss +0 -32
  152. package/lib/src/components/viewport/viewport.ts +0 -41
  153. package/lib/src/core/component.ts +0 -1066
  154. package/lib/src/core/core_application.ts +0 -265
  155. package/lib/src/core/core_colors.ts +0 -250
  156. package/lib/src/core/core_data.ts +0 -1310
  157. package/lib/src/core/core_dom.ts +0 -471
  158. package/lib/src/core/core_dragdrop.ts +0 -201
  159. package/lib/src/core/core_element.ts +0 -115
  160. package/lib/src/core/core_events.ts +0 -177
  161. package/lib/src/core/core_i18n.ts +0 -393
  162. package/lib/src/core/core_react.ts +0 -79
  163. package/lib/src/core/core_router.ts +0 -237
  164. package/lib/src/core/core_state.ts +0 -62
  165. package/lib/src/core/core_styles.ts +0 -214
  166. package/lib/src/core/core_svg.ts +0 -712
  167. package/lib/src/core/core_tools.ts +0 -906
  168. package/lib/src/types/scss.d.ts +0 -4
  169. package/lib/src/types/svg.d.ts +0 -1
  170. package/lib/src/types/x4react.d.ts +0 -9
  171. package/lib/src/x4.scss +0 -19
  172. package/lib/src/x4.ts +0 -35
  173. package/lib/src/x4tsx.d.ts +0 -25
@@ -30,9 +30,9 @@
30
30
  border-bottom-color: var( --tab-border-hover );
31
31
  }
32
32
 
33
- &:focus {
33
+ //&:focus {
34
34
  //color: var( --color-60 );
35
- }
35
+ //}
36
36
  }
37
37
 
38
38
  }
@@ -32,6 +32,7 @@ export interface TabItem {
32
32
  title: string;
33
33
  icon?: string;
34
34
  content: Component;
35
+ cls?: string; // button class
35
36
  }
36
37
 
37
38
  /**
@@ -44,6 +45,10 @@ class CTab extends Button {
44
45
  super( props );
45
46
 
46
47
  this.addClass( "outline" );
48
+ if( item.cls ) {
49
+ this.addClass( item.cls );
50
+ }
51
+
47
52
  this.setIcon( item.icon );
48
53
  this.setText( item.title );
49
54
  this.setData( "tabname", item.name );
@@ -100,7 +105,6 @@ class CTabList extends HBox<TablistProps,TablistEvents> {
100
105
  }
101
106
  }
102
107
 
103
-
104
108
  setItems( items: TabItem[ ] ) {
105
109
  this.clearContent( );
106
110
  items.forEach( tab => {
@@ -114,8 +118,11 @@ class CTabList extends HBox<TablistProps,TablistEvents> {
114
118
  }, tab ) );
115
119
  }
116
120
 
117
- getTabCount( ) {
118
- return this.dom.children.length;
121
+ removeItem( name: string ) {
122
+ const tab = this.query<Button>( `[data-tabname="${name}"]` );
123
+ if( tab ) {
124
+ this.removeChild( tab );
125
+ }
119
126
  }
120
127
  }
121
128
 
@@ -197,9 +204,26 @@ export class Tabs extends VBox<TabsProps> {
197
204
  this._list.addItem( item );
198
205
  this._stack.addItem( { name: item.name, content: item.content } );
199
206
 
200
- if( this._list.getTabCount( )==1 ) {
207
+ if( this._stack.getPageCount( )==1 ) {
201
208
  this.selectTab( item.name );
202
209
  }
203
210
  }
211
+
212
+ /**
213
+ *
214
+ */
215
+
216
+ removeTab( name: string ) {
217
+ this._list.removeItem( name );
218
+ this._stack.removeItem( name );
219
+ }
220
+
221
+ /**
222
+ *
223
+ */
224
+
225
+ enumTabs( ): string[] {
226
+ return this._stack.enumPageNames( );
227
+ }
204
228
  }
205
229
 
@@ -41,7 +41,7 @@ interface TextEditBase {
41
41
  inputAttrs?: any;
42
42
  }
43
43
 
44
- type TextEditProps = TextEditInputs & TextEditBase;
44
+ export type TextEditProps = TextEditInputs & TextEditBase;
45
45
 
46
46
  /*
47
47
  not enougth precise
@@ -161,7 +161,15 @@
161
161
  #icon {
162
162
  color: var( --button-icon-color );
163
163
  }
164
- }
164
+ }
165
+
166
+ &:focus {
167
+ background-color: var( --ol-button-background-hover );
168
+ }
169
+
170
+ &:disabled {
171
+ color: var( --disabled-color-dark );
172
+ }
165
173
  }
166
174
  }
167
175
  }
@@ -15,11 +15,12 @@
15
15
  **/
16
16
 
17
17
  import { class_ns } from '../../core/core_tools';
18
- import { Component, ComponentEvent, ComponentEvents, ComponentProps, EvSelectionChange, componentFromDOM } from '../../core/component';
18
+ import { EventCallback } from '../../core/core_events';
19
+ import { Component, ComponentEvent, ComponentEvents, ComponentProps, EvClick, EvDblClick, EvSelectionChange, componentFromDOM } from '../../core/component';
19
20
 
20
21
  import { ScrollView, Viewport } from '../viewport/viewport';
21
22
  import { Label } from '../label/label';
22
- import { ListboxID, ListItem, kbNav } from '../listbox/listbox';
23
+ import { ListboxID, ListItem } from '../listbox/listbox';
23
24
  import { Box, BoxProps, HBox, VBox } from '../boxes/boxes';
24
25
  import { Icon } from '../icon/icon';
25
26
 
@@ -52,14 +53,15 @@ export interface TreeItem extends ListItem {
52
53
  interface TreeviewProps extends Omit<ComponentProps,"content"> {
53
54
  items: TreeItem[];
54
55
  footer?: Component;
55
- }
56
-
57
- interface ChangeEvent extends ComponentEvent {
58
- selection: TreeItem;
56
+ selectionChange?: EventCallback<EvSelectionChange>;
57
+ dblClick?: EventCallback<EvDblClick>;
58
+ click?: EventCallback<EvClick>;
59
59
  }
60
60
 
61
61
  interface TreeviewEvents extends ComponentEvents {
62
62
  selectionChange?: EvSelectionChange;
63
+ dblClick?: EvDblClick;
64
+ click?: EvClick;
63
65
  }
64
66
 
65
67
  /**
@@ -85,7 +87,11 @@ class CTreeViewItem extends Box {
85
87
  new Label( { tag: "span", cls: "", text: item.text, icon: item.iconId } ),
86
88
  ]});
87
89
 
88
- this._label.setData( "id", item.id+"" );
90
+ if( item.cls ) {
91
+ this._label.addClass( item.cls );
92
+ }
93
+
94
+ this._label.setInternalData( "id", item.id );
89
95
 
90
96
  if( item.children ) {
91
97
  this. _childs = new VBox( { cls: "body" } );
@@ -159,6 +165,8 @@ export class Treeview extends Component<TreeviewProps,TreeviewEvents> {
159
165
  constructor( props: TreeviewProps ) {
160
166
  super( props );
161
167
 
168
+ this.mapPropEvents( props, "selectionChange", "dblClick", "click" );
169
+
162
170
  const scroller = new ScrollView( { cls: "body" } );
163
171
  this._view = scroller.getViewport( );
164
172
 
@@ -173,7 +181,8 @@ export class Treeview extends Component<TreeviewProps,TreeviewEvents> {
173
181
 
174
182
  this.setAttribute( "tabindex", 0 );
175
183
  this.setDOMEvents( {
176
- click: ( ev ) => this._onclick( ev ),
184
+ click: ( ev ) => this._on_click( ev ),
185
+ dblclick: (e) => this._on_click(e),
177
186
  keydown: ( ev ) => this._onkey( ev ),
178
187
  });
179
188
 
@@ -199,14 +208,27 @@ export class Treeview extends Component<TreeviewProps,TreeviewEvents> {
199
208
  }
200
209
  }
201
210
 
202
- private _onclick( ev: UIEvent ) {
211
+ private _on_click( ev: UIEvent ) {
203
212
  let target = ev.target as HTMLElement;
213
+
204
214
  while( target && target!=this.dom ) {
205
215
  const c = componentFromDOM( target );
206
216
 
207
217
  if( c && c.hasClass("item") ) {
208
- const id = c.getData( "id" );
209
- this._selectItem( id, c );
218
+ const id = c.getInternalData( "id" );
219
+
220
+ const fev: ComponentEvent = { context:id };
221
+ if (ev.type == 'click') {
222
+ this.fire('click', fev );
223
+ }
224
+ else {
225
+ this.fire('dblClick', fev );
226
+ }
227
+
228
+ if (!fev.defaultPrevented) {
229
+ this._selectItem( id, c );
230
+ }
231
+
210
232
  return;
211
233
  }
212
234
 
@@ -413,7 +435,7 @@ export class Treeview extends Component<TreeviewProps,TreeviewEvents> {
413
435
  }
414
436
 
415
437
  const itm = this._findItem( id );
416
- this.fire( "selectionChange", { selection: itm, empty: false } );
438
+ this.fire( "selectionChange", { selection: [itm], empty: false } );
417
439
  }
418
440
 
419
441
  private _findItem( id: ListboxID ) {
@@ -432,7 +454,7 @@ export class Treeview extends Component<TreeviewProps,TreeviewEvents> {
432
454
  }
433
455
 
434
456
  this._selection = undefined;
435
- this.fire( "selectionChange", { selection: undefined, empty: true } );
457
+ this.fire( "selectionChange", { selection: [], empty: true } );
436
458
  }
437
459
 
438
460
  /**
@@ -442,4 +464,21 @@ export class Treeview extends Component<TreeviewProps,TreeviewEvents> {
442
464
  getSelection( ) {
443
465
  return this._selection;
444
466
  }
467
+
468
+ /**
469
+ *
470
+ */
471
+
472
+ selectItem( id: ListboxID ) {
473
+ const itm = this._findItem( id );
474
+ if( itm ) {
475
+ this.visitChildren( ( c ) => {
476
+ const cid = c.getInternalData( "id" );
477
+ if( cid == id ) {
478
+ this._selectItem( id, c );
479
+ return true;
480
+ }
481
+ } );
482
+ }
483
+ }
445
484
  }
@@ -19,6 +19,7 @@ import { CoreElement } from './core_element';
19
19
  import { ariaValues, unitless } from './core_styles';
20
20
  import { CoreEvent, EventMap } from './core_events';
21
21
  import { addEvent, DOMEventHandler, GlobalDOMEvents } from './core_dom';
22
+ import { Application, EvMessage } from './core_application';
22
23
 
23
24
  interface RefType<T extends Component> {
24
25
  dom: T;
@@ -92,8 +93,8 @@ export interface ComponentProps {
92
93
  // shortcuts
93
94
  width?: string | number;
94
95
  height?: string | number;
95
- disabled?: true,
96
- hidden?: true,
96
+ disabled?: boolean,
97
+ hidden?: boolean,
97
98
  flex?: boolean | number;
98
99
 
99
100
  tooltip?: string;
@@ -106,7 +107,7 @@ export interface ComponentProps {
106
107
  // because all memebers here are optional.
107
108
  // this allow TS to recongnize derived props as ComponentProps
108
109
  //[key: string]: any;
109
- };
110
+ }
110
111
 
111
112
 
112
113
  /**
@@ -219,6 +220,16 @@ export class Component<P extends ComponentProps = ComponentProps, E extends Comp
219
220
  }
220
221
 
221
222
 
223
+ onGlobalEvent( cb: ( ev: EvMessage ) => void ) {
224
+
225
+ const off = Application.instance().on( "global", ev => {
226
+ cb( ev );
227
+ })
228
+
229
+ this.addDOMEvent( "removed", ( ) => off.off() );
230
+ }
231
+
232
+
222
233
  // :: CLASSES ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
223
234
 
224
235
  /**
@@ -328,7 +339,7 @@ export class Component<P extends ComponentProps = ComponentProps, E extends Comp
328
339
  */
329
340
 
330
341
  setAttribute( name: string, value: string | number | boolean ) {
331
- if( value===null || value===undefined ) {
342
+ if( value===null || value===undefined || value===false ) {
332
343
  this.dom.removeAttribute( name );
333
344
  }
334
345
  else {
@@ -385,8 +396,8 @@ export class Component<P extends ComponentProps = ComponentProps, E extends Comp
385
396
  return this;
386
397
  }
387
398
 
388
- getInternalData( name: string|symbol ): any {
389
- return this.#store?.get(name);
399
+ getInternalData<T = any>( name: string|symbol ): T {
400
+ return this.#store?.get(name) as T;
390
401
  }
391
402
 
392
403
 
@@ -868,6 +879,33 @@ export class Component<P extends ComponentProps = ComponentProps, E extends Comp
868
879
  return children;
869
880
  }
870
881
 
882
+ /**
883
+ *
884
+ */
885
+
886
+ visitChildren( cb: ( el: Component ) => boolean ) {
887
+
888
+ const visit = ( p: Element ) => {
889
+ for( let d=p.firstElementChild; d; d=d.nextElementSibling ) {
890
+ const comp = componentFromDOM( d as Element );
891
+ if( comp ) {
892
+ if( cb( comp ) ) {
893
+ return true;
894
+ }
895
+ }
896
+
897
+ // avoid visit of svg elements
898
+ if( d.firstElementChild && d.tagName!="svg" && d.tagName!="SVG" ) {
899
+ if( visit( d ) ) {
900
+ return true;
901
+ }
902
+ }
903
+ }
904
+ }
905
+
906
+ visit( this.dom );
907
+ }
908
+
871
909
  /**
872
910
  *
873
911
  */
@@ -1022,11 +1060,10 @@ export interface EvFocus extends ComponentEvent {
1022
1060
  * value is the new selection or null
1023
1061
  */
1024
1062
 
1025
- interface ISelection {
1026
- }
1063
+ type ISelection = number | string | any;
1027
1064
 
1028
1065
  export interface EvSelectionChange extends ComponentEvent {
1029
- readonly selection: ISelection;
1066
+ readonly selection: ISelection[];
1030
1067
  readonly empty: boolean;
1031
1068
  }
1032
1069
 
@@ -889,31 +889,31 @@ export class DataStore extends EventSource<DataStoreEventMap> {
889
889
  filterValue = filterValue.toUpperCase( );
890
890
  }
891
891
 
892
- function _lt( recval: string ) : boolean {
892
+ const _lt = ( recval: string ) : boolean => {
893
893
  return recval < filterValue;
894
894
  }
895
895
 
896
- function _le( recval: string ) : boolean {
896
+ const _le = ( recval: string ) : boolean => {
897
897
  return recval <= filterValue;
898
898
  }
899
899
 
900
- function _eq( recval: string ) : boolean {
900
+ const _eq = ( recval: string ) : boolean => {
901
901
  return recval == filterValue;
902
902
  }
903
903
 
904
- function _neq( recval: string ) : boolean {
904
+ const _neq = ( recval: string ) : boolean => {
905
905
  return recval != filterValue;
906
906
  }
907
907
 
908
- function _ge( recval: string ) : boolean {
908
+ const _ge = ( recval: string ) : boolean => {
909
909
  return recval >= filterValue;
910
910
  }
911
911
 
912
- function _gt( recval: string ) : boolean {
912
+ const _gt = ( recval: string ) : boolean => {
913
913
  return recval > filterValue;
914
914
  }
915
915
 
916
- function _re( recval: string ) : boolean {
916
+ const _re = ( recval: string ) : boolean => {
917
917
  filterRe.lastIndex = -1;
918
918
  return filterRe.test( recval );
919
919
  }
@@ -959,7 +959,7 @@ export class DataStore extends EventSource<DataStoreEventMap> {
959
959
  let keep = filterFn( field );
960
960
  if( keep ) {
961
961
  index[iidx++] = idx;
962
- };
962
+ }
963
963
  });
964
964
  }
965
965
  }
@@ -57,6 +57,6 @@ export class StateManager {
57
57
  current[parts[parts.length - 1]] = value;
58
58
 
59
59
  // Notify subscribers
60
- this._notifySubscribers(path, value);
60
+ //this._notifySubscribers(path, value);
61
61
  }
62
62
  }
@@ -902,5 +902,7 @@ export enum kbNav {
902
902
  pgup,
903
903
  next,
904
904
  last,
905
+ left,
906
+ right,
905
907
  }
906
908
 
@@ -1,25 +0,0 @@
1
- /**
2
- * ___ ___ __
3
- * \ \/ / / _
4
- * \ / /_| |_
5
- * / \____ _|
6
- * /__/\__\ |_|
7
- *
8
- * @file base.scss
9
- * @author Etienne Cochard
10
- *
11
- * @copyright (c) 2024 R-libre ingenierie
12
- *
13
- * Use of this source code is governed by an MIT-style license
14
- * that can be found in the LICENSE file or at https://opensource.org/licenses/MIT.
15
- **/
16
-
17
- @use "./shared.scss";
18
-
19
- .x4box {
20
- @extend .box;
21
- }
22
-
23
- .x4flex {
24
- @extend .flex;
25
- }
@@ -1,54 +0,0 @@
1
- /**
2
- * ___ ___ __
3
- * \ \/ / / _
4
- * \ / /_| |_
5
- * / \____ _|
6
- * /__/\__\ |_|
7
- *
8
- * @file boxes.module.scss
9
- * @author Etienne Cochard
10
- *
11
- * @copyright (c) 2024 R-libre ingenierie
12
- *
13
- * Use of this source code is governed by an MIT-style license
14
- * that can be found in the LICENSE file or at https://opensource.org/licenses/MIT.
15
- **/
16
-
17
- @use "../shared.scss";
18
-
19
- .x4hbox {
20
- @extend .hbox;
21
- &.align-start {
22
- align-items: start;
23
- }
24
- }
25
-
26
- .x4vbox {
27
- @extend .vbox;
28
- }
29
-
30
- .x4stackbox {
31
- display: flex;
32
-
33
- &>* {
34
- @extend .fit;
35
- position: relative !important;
36
- }
37
-
38
- &>*:not(.selected) {
39
- display: none;
40
- }
41
- }
42
-
43
- .x4gridbox {
44
- display: grid;
45
- }
46
-
47
- .x4masonrybox {
48
- display: grid;
49
- grid-gap: 10px;
50
- grid-template-columns: repeat(auto-fill, minmax(250px,1fr));
51
- grid-auto-rows: 10px;
52
-
53
- overflow: hidden;
54
- }