neo.mjs 8.0.1 → 8.1.0

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/apps/ServiceWorker.mjs +2 -2
  2. package/apps/portal/index.html +1 -1
  3. package/apps/portal/view/home/FooterContainer.mjs +1 -1
  4. package/examples/ServiceWorker.mjs +2 -2
  5. package/examples/grid/covid/neo-config.json +6 -5
  6. package/package.json +5 -5
  7. package/resources/scss/src/examples/grid/covid/GridContainer.scss +1 -1
  8. package/resources/scss/src/grid/Container.scss +13 -10
  9. package/resources/scss/src/grid/View.scss +45 -19
  10. package/resources/scss/src/grid/header/Button.scss +2 -4
  11. package/resources/scss/src/grid/header/Toolbar.scss +1 -2
  12. package/src/DefaultConfig.mjs +2 -2
  13. package/src/Xhr.mjs +1 -1
  14. package/src/button/Base.mjs +2 -2
  15. package/src/collection/Base.mjs +5 -5
  16. package/src/component/Base.mjs +3 -3
  17. package/src/container/Base.mjs +2 -2
  18. package/src/controller/Base.mjs +3 -3
  19. package/src/dialog/Base.mjs +2 -2
  20. package/src/form/field/Base.mjs +2 -2
  21. package/src/form/field/CheckBox.mjs +2 -2
  22. package/src/form/field/FileUpload.mjs +4 -4
  23. package/src/form/field/Hidden.mjs +2 -2
  24. package/src/form/field/Text.mjs +2 -2
  25. package/src/grid/Container.mjs +156 -62
  26. package/src/grid/View.mjs +396 -74
  27. package/src/grid/header/Button.mjs +4 -0
  28. package/src/grid/header/Toolbar.mjs +44 -1
  29. package/src/layout/Base.mjs +3 -3
  30. package/src/list/Base.mjs +2 -2
  31. package/src/list/Circle.mjs +2 -2
  32. package/src/list/Color.mjs +2 -2
  33. package/src/list/Component.mjs +2 -2
  34. package/src/manager/Base.mjs +3 -3
  35. package/src/manager/Component.mjs +20 -11
  36. package/src/manager/DomEvent.mjs +5 -6
  37. package/src/manager/Instance.mjs +4 -4
  38. package/src/manager/Task.mjs +2 -2
  39. package/src/manager/Toast.mjs +3 -3
  40. package/src/plugin/Base.mjs +3 -3
  41. package/src/plugin/Popover.mjs +3 -3
  42. package/src/plugin/PrefixField.mjs +2 -2
  43. package/src/plugin/Resizable.mjs +2 -2
  44. package/src/plugin/Responsive.mjs +2 -2
  45. package/src/selection/Model.mjs +12 -1
  46. package/src/toolbar/Base.mjs +2 -2
  47. package/src/toolbar/Breadcrumb.mjs +1 -1
  48. package/src/tooltip/Base.mjs +2 -2
  49. package/src/worker/Base.mjs +3 -3
  50. package/src/grid/README.md +0 -3
@@ -20,9 +20,9 @@ class ServiceWorker extends ServiceBase {
20
20
  */
21
21
  singleton: true,
22
22
  /**
23
- * @member {String} version='8.0.1'
23
+ * @member {String} version='8.1.0'
24
24
  */
25
- version: '8.0.1'
25
+ version: '8.1.0'
26
26
  }
27
27
 
28
28
  /**
@@ -16,7 +16,7 @@
16
16
  "@type": "Organization",
17
17
  "name": "Neo.mjs"
18
18
  },
19
- "datePublished": "2024-12-29",
19
+ "datePublished": "2025-01-11",
20
20
  "publisher": {
21
21
  "@type": "Organization",
22
22
  "name": "Neo.mjs"
@@ -107,7 +107,7 @@ class FooterContainer extends Container {
107
107
  }, {
108
108
  module: Component,
109
109
  cls : ['neo-version'],
110
- html : 'v8.0.1'
110
+ html : 'v8.1.0'
111
111
  }]
112
112
  }],
113
113
  /**
@@ -20,9 +20,9 @@ class ServiceWorker extends ServiceBase {
20
20
  */
21
21
  singleton: true,
22
22
  /**
23
- * @member {String} version='8.0.1'
23
+ * @member {String} version='8.1.0'
24
24
  */
25
- version: '8.0.1'
25
+ version: '8.1.0'
26
26
  }
27
27
 
28
28
  /**
@@ -1,7 +1,8 @@
1
1
  {
2
- "appPath" : "examples/grid/covid/app.mjs",
3
- "basePath" : "../../../",
4
- "environment": "development",
5
- "mainPath" : "./Main.mjs",
6
- "themes" : ["neo-theme-dark", "neo-theme-light"]
2
+ "appPath" : "examples/grid/covid/app.mjs",
3
+ "basePath" : "../../../",
4
+ "environment" : "development",
5
+ "mainPath" : "./Main.mjs",
6
+ "mainThreadAddons": ["DragDrop", "Navigator", "ResizeObserver", "Stylesheet"],
7
+ "themes" : ["neo-theme-dark", "neo-theme-light"]
7
8
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "neo.mjs",
3
- "version": "8.0.1",
3
+ "version": "8.1.0",
4
4
  "description": "The webworkers driven UI framework",
5
5
  "type": "module",
6
6
  "repository": {
@@ -49,22 +49,22 @@
49
49
  "autoprefixer": "^10.4.20",
50
50
  "chalk": "^5.4.1",
51
51
  "clean-webpack-plugin": "^4.0.0",
52
- "commander": "^12.1.0",
52
+ "commander": "^13.0.0",
53
53
  "cssnano": "^7.0.6",
54
54
  "envinfo": "^7.14.0",
55
55
  "fs-extra": "^11.2.0",
56
56
  "highlightjs-line-numbers.js": "^2.9.0",
57
57
  "inquirer": "^12.3.0",
58
- "marked": "^15.0.4",
58
+ "marked": "^15.0.6",
59
59
  "monaco-editor": "0.50.0",
60
60
  "neo-jsdoc": "1.0.1",
61
61
  "neo-jsdoc-x": "1.0.5",
62
62
  "postcss": "^8.4.49",
63
- "sass": "^1.83.0",
63
+ "sass": "^1.83.1",
64
64
  "siesta-lite": "5.5.2",
65
65
  "url": "^0.11.4",
66
66
  "webpack": "^5.97.1",
67
- "webpack-cli": "^5.1.4",
67
+ "webpack-cli": "^6.0.1",
68
68
  "webpack-dev-server": "^5.2.0",
69
69
  "webpack-hook-plugin": "^1.0.7",
70
70
  "webpack-node-externals": "^3.0.0"
@@ -4,13 +4,13 @@
4
4
 
5
5
  .neo-grid-container.covid-country-grid {
6
6
  .neo-country-column {
7
+ max-width: 200px;
7
8
  min-width: 200px;
8
9
  width : initial;
9
10
  }
10
11
 
11
12
  .neo-grid-cell {
12
13
  min-width: 100px;
13
- width : 300px;
14
14
  }
15
15
 
16
16
  .neo-index-column {
@@ -1,3 +1,9 @@
1
+ .neo-grid-wrapper {
2
+ overflow-x: auto;
3
+ overflow-y: hidden;
4
+ position : relative;
5
+ }
6
+
1
7
  .neo-grid-container {
2
8
  border : 1px solid var(--grid-container-border-color);
3
9
  border-spacing: 0;
@@ -6,13 +12,13 @@
6
12
  font-weight : 400;
7
13
  height : 100%;
8
14
  line-height : 19px;
9
- overflow : auto;
15
+ overflow-y : hidden;
16
+ position : absolute;
17
+ width : 100%;
10
18
 
11
19
  .neo-grid-row {
12
- display : flex;
13
- height : 32px !important;
14
- max-height: 32px !important;
15
- width : 100%;
20
+ display: flex;
21
+ width : 100%;
16
22
  }
17
23
 
18
24
  .neo-grid-header-toolbar .neo-grid-row:nth-child(1) .neo-grid-header-cell {
@@ -31,7 +37,7 @@
31
37
  }
32
38
  }
33
39
 
34
- .neo-grid-row:nth-child(even) {
40
+ .neo-grid-row.neo-even {
35
41
  .neo-grid-cell {
36
42
  background-color: var(--grid-container-cell-background-color-even);
37
43
  }
@@ -54,8 +60,7 @@
54
60
  }
55
61
 
56
62
  &.neo-locked {
57
- position: sticky;
58
- left : 0;
63
+ left: 0;
59
64
  }
60
65
  }
61
66
 
@@ -63,8 +68,6 @@
63
68
  align-items : center;
64
69
  background-color: var(--grid-container-cell-background-color);
65
70
  display : flex;
66
- height : 32px !important;
67
- max-height : 32px !important;
68
71
  padding : 2px 10px 2px;
69
72
  width : fit-content;
70
73
  }
@@ -1,4 +1,26 @@
1
+ .neo-grid-view-wrapper {
2
+ height : 100%;
3
+ overflow-x: hidden;
4
+ overflow-y: auto;
5
+ position : relative;
6
+
7
+ .neo-grid-scrollbar {
8
+ height : 1px;
9
+ position : absolute;
10
+ top : 0;
11
+ visibility : hidden;
12
+ width : 1px;
13
+ }
14
+ }
15
+
1
16
  .neo-grid-view {
17
+ height : 100%;
18
+ overflow-x: visible;
19
+
20
+ &.neo-is-scrolling * {
21
+ pointer-events: none !important;
22
+ }
23
+
2
24
  .neo-center {
3
25
  justify-content: center;
4
26
  }
@@ -8,33 +30,37 @@
8
30
  }
9
31
 
10
32
  .neo-grid-row {
11
- &:hover {
12
- .neo-grid-cell {
13
- background-color: var(--grid-cell-background-color-hover);
14
- }
33
+ position: absolute;
34
+
35
+ &:hover {
36
+ .neo-grid-cell {
37
+ background-color: var(--grid-cell-background-color-hover);
15
38
  }
39
+ }
16
40
 
17
- // selection.RowModel
18
- &.neo-selected {
19
- .neo-grid-cell {
20
- background-color: var(--grid-rowmodel-selected-cell-background-color);
21
- color : var(--grid-rowmodel-selected-cell-color);
22
- }
41
+ // selection.RowModel
42
+ &.neo-selected {
43
+ .neo-grid-cell {
44
+ background-color: var(--grid-rowmodel-selected-cell-background-color);
45
+ color : var(--grid-rowmodel-selected-cell-color);
23
46
  }
47
+ }
48
+
49
+ .neo-grid-cell {
50
+ position: absolute;
24
51
 
25
52
  // selection.CellModel
26
- .neo-grid-cell {
27
- &.neo-selected {
28
- background-color: var(--grid-cellmodel-selected-cell-background-color) !important;
29
- color : var(--grid-cellmodel-selected-cell-color) !important;
30
- }
53
+ &.neo-selected {
54
+ background-color: var(--grid-cellmodel-selected-cell-background-color) !important;
55
+ color : var(--grid-cellmodel-selected-cell-color) !important;
56
+ }
31
57
 
32
- &.selected-column-cell {
33
- background-color: var(--grid-cellmodel-selected-column-cell-background-color);
34
- color : var(--grid-cellmodel-selected-column-cell-color);
35
- }
58
+ &.selected-column-cell {
59
+ background-color: var(--grid-cellmodel-selected-column-cell-background-color);
60
+ color : var(--grid-cellmodel-selected-column-cell-color);
36
61
  }
37
62
  }
63
+ }
38
64
  }
39
65
 
40
66
  .neo-selection-cellrowmodel,
@@ -20,10 +20,8 @@
20
20
  border-right: 1px solid var(--grid-container-border-color);
21
21
  }
22
22
 
23
- &.neo-locked { // todo: for testing, will get removed once the header toolbar is outside of the scroll region
24
- position: sticky;
25
- top : 0;
26
- z-index : 5001;
23
+ &.neo-locked {
24
+
27
25
  }
28
26
 
29
27
  &.neo-drag-over {
@@ -2,6 +2,5 @@
2
2
  border-bottom: 2px solid var(--grid-container-border-color);
3
3
  border-top : 1px solid var(--grid-container-border-color);
4
4
  padding : 0;
5
- position : sticky;
6
- top : 0;
5
+ width : max-content;
7
6
  }
@@ -262,12 +262,12 @@ const DefaultConfig = {
262
262
  useVdomWorker: true,
263
263
  /**
264
264
  * buildScripts/injectPackageVersion.mjs will update this value
265
- * @default '8.0.1'
265
+ * @default '8.1.0'
266
266
  * @memberOf! module:Neo
267
267
  * @name config.version
268
268
  * @type String
269
269
  */
270
- version: '8.0.1'
270
+ version: '8.1.0'
271
271
  };
272
272
 
273
273
  Object.assign(DefaultConfig, {
package/src/Xhr.mjs CHANGED
@@ -18,7 +18,7 @@ class Xhr extends XhrConnection {
18
18
  */
19
19
  ntype: 'xhr',
20
20
  /**
21
- * @member {Object} remote={app:['promiseRequest','promiseJson']}
21
+ * @member {Object} remote={app:['promiseRequest','promiseJson','setDefaultHeaders']}
22
22
  * @protected
23
23
  */
24
24
  remote: {
@@ -5,7 +5,7 @@ import NeoArray from '../util/Array.mjs';
5
5
  * @class Neo.button.Base
6
6
  * @extends Neo.component.Base
7
7
  */
8
- class Base extends Component {
8
+ class Button extends Component {
9
9
  /**
10
10
  * Valid values for badgePosition
11
11
  * @member {String[]} badgePositions=['bottom-left','bottom-right','top-left','top-right']
@@ -581,4 +581,4 @@ class Base extends Component {
581
581
  }
582
582
  }
583
583
 
584
- export default Neo.setupClass(Base);
584
+ export default Neo.setupClass(Button);
@@ -1,4 +1,4 @@
1
- import CoreBase from '../core/Base.mjs';
1
+ import Base from '../core/Base.mjs';
2
2
  import Filter from './Filter.mjs';
3
3
  import Logger from '../util/Logger.mjs';
4
4
  import Observable from '../core/Observable.mjs';
@@ -16,7 +16,7 @@ const countMutations = Symbol('countMutations'),
16
16
  * @class Neo.collection.Base
17
17
  * @extends Neo.core.Base
18
18
  */
19
- class Base extends CoreBase {
19
+ class Collection extends Base {
20
20
  /**
21
21
  * True automatically applies the core.Observable mixin
22
22
  * @member {Boolean} observable=true
@@ -453,7 +453,7 @@ class Base extends CoreBase {
453
453
  config.sorters.push(sorter.originalConfig)
454
454
  });
455
455
 
456
- return Neo.create(Base, config)
456
+ return Neo.create(Collection, config)
457
457
  }
458
458
 
459
459
  /**
@@ -669,7 +669,7 @@ class Base extends CoreBase {
669
669
  delete config.items;
670
670
  delete config.sorters;
671
671
 
672
- me.allItems = Neo.create(Base, {
672
+ me.allItems = Neo.create(Collection, {
673
673
  ...Neo.clone(config, true, true),
674
674
  keyProperty: me.keyProperty,
675
675
  sourceId : me.id
@@ -1265,4 +1265,4 @@ class Base extends CoreBase {
1265
1265
  * @returns {Object}
1266
1266
  */
1267
1267
 
1268
- export default Neo.setupClass(Base);
1268
+ export default Neo.setupClass(Collection);
@@ -1,6 +1,6 @@
1
+ import Base from '../core/Base.mjs';
1
2
  import ClassSystemUtil from '../util/ClassSystem.mjs';
2
3
  import ComponentManager from '../manager/Component.mjs';
3
- import CoreBase from '../core/Base.mjs';
4
4
  import DomEventManager from '../manager/DomEvent.mjs';
5
5
  import KeyNavigation from '../util/KeyNavigation.mjs';
6
6
  import Logger from '../util/Logger.mjs';
@@ -24,7 +24,7 @@ const
24
24
  * @class Neo.component.Base
25
25
  * @extends Neo.core.Base
26
26
  */
27
- class Base extends CoreBase {
27
+ class Component extends Base {
28
28
  /**
29
29
  * Valid values for hideMode
30
30
  * @member {String[]} hideModes=['removeDom','visibility']
@@ -2698,4 +2698,4 @@ class Base extends CoreBase {
2698
2698
  * @param {Object[]} data.oldPath dom element ids upwards
2699
2699
  */
2700
2700
 
2701
- export default Neo.setupClass(Base);
2701
+ export default Neo.setupClass(Component);
@@ -14,7 +14,7 @@ const byWeight = ({ weight : lhs = 0 }, { weight : rhs = 0 }) => lhs - rhs;
14
14
  * @class Neo.container.Base
15
15
  * @extends Neo.component.Base
16
16
  */
17
- class Base extends Component {
17
+ class Container extends Component {
18
18
  static config = {
19
19
  /**
20
20
  * @member {String} className='Neo.container.Base'
@@ -746,4 +746,4 @@ class Base extends Component {
746
746
  }
747
747
  }
748
748
 
749
- export default Neo.setupClass(Base);
749
+ export default Neo.setupClass(Container);
@@ -1,4 +1,4 @@
1
- import CoreBase from '../core/Base.mjs';
1
+ import Base from '../core/Base.mjs';
2
2
  import HashHistory from '../util/HashHistory.mjs';
3
3
 
4
4
  const
@@ -9,7 +9,7 @@ const
9
9
  * @class Neo.controller.Base
10
10
  * @extends Neo.core.Base
11
11
  */
12
- class Base extends CoreBase {
12
+ class Controller extends Base {
13
13
  static config = {
14
14
  /**
15
15
  * @member {String} className='Neo.controller.Base'
@@ -214,4 +214,4 @@ class Base extends CoreBase {
214
214
  }
215
215
  }
216
216
 
217
- export default Neo.setupClass(Base);
217
+ export default Neo.setupClass(Controller);
@@ -9,7 +9,7 @@ let DragZone;
9
9
  * @class Neo.dialog.Base
10
10
  * @extends Neo.container.Panel
11
11
  */
12
- class Base extends Panel {
12
+ class Dialog extends Panel {
13
13
  /**
14
14
  * Valid values for closeAction
15
15
  * @member {String[]} closeActions=['close','hide']
@@ -796,4 +796,4 @@ class Base extends Panel {
796
796
  }
797
797
  }
798
798
 
799
- export default Neo.setupClass(Base);
799
+ export default Neo.setupClass(Dialog);
@@ -7,7 +7,7 @@ import NeoArray from '../../util/Array.mjs';
7
7
  * @class Neo.form.field.Base
8
8
  * @extends Neo.component.Base
9
9
  */
10
- class Base extends Component {
10
+ class Field extends Component {
11
11
  /**
12
12
  * Valid values for isTouchedEvent
13
13
  * @member {String[]} isTouchedEvents=['focusEnter','focusLeave']
@@ -379,4 +379,4 @@ class Base extends Component {
379
379
  * @returns {Object}
380
380
  */
381
381
 
382
- export default Neo.setupClass(Base);
382
+ export default Neo.setupClass(Field);
@@ -1,12 +1,12 @@
1
- import Base from './Base.mjs';
2
1
  import ComponentManager from '../../manager/Component.mjs';
2
+ import Field from './Base.mjs';
3
3
  import NeoArray from '../../util/Array.mjs';
4
4
 
5
5
  /**
6
6
  * @class Neo.form.field.CheckBox
7
7
  * @extends Neo.form.field.Base
8
8
  */
9
- class CheckBox extends Base {
9
+ class CheckBox extends Field {
10
10
  /**
11
11
  * Valid values for labelPosition
12
12
  * @member {String[]} labelPositions=['left','top']
@@ -1,6 +1,6 @@
1
- import Base from '../../form/field/Base.mjs';
2
- import NeoArray from '../../util/Array.mjs';
3
- import StringUtil from '../../util/String.mjs';
1
+ import Field from './Base.mjs';
2
+ import NeoArray from '../../util/Array.mjs';
3
+ import StringUtil from '../../util/String.mjs';
4
4
 
5
5
  const
6
6
  sizeRE = /^(\d+)(kb|mb|gb)?$/i,
@@ -84,7 +84,7 @@ const
84
84
  * @class Neo.form.field.FileUpload
85
85
  * @extends Neo.form.field.Base
86
86
  */
87
- class FileUpload extends Base {
87
+ class FileUpload extends Field {
88
88
  static config = {
89
89
  /**
90
90
  * @member {String} className='Neo.form.field.FileUpload'
@@ -1,10 +1,10 @@
1
- import Base from './Base.mjs';
1
+ import Field from './Base.mjs';
2
2
 
3
3
  /**
4
4
  * @class Neo.form.field.Hidden
5
5
  * @extends Neo.form.field.Base
6
6
  */
7
- class Hidden extends Base {
7
+ class Hidden extends Field {
8
8
  static config = {
9
9
  /**
10
10
  * @member {String} className='Neo.form.field.Hidden'
@@ -1,6 +1,6 @@
1
- import Base from './Base.mjs';
2
1
  import BaseTrigger from './trigger/Base.mjs';
3
2
  import ClearTrigger from './trigger/Clear.mjs';
3
+ import Field from './Base.mjs';
4
4
  import NeoArray from '../../util/Array.mjs';
5
5
  import StringUtil from '../../util/String.mjs';
6
6
  import VDomUtil from '../../util/VDom.mjs';
@@ -10,7 +10,7 @@ import VNodeUtil from '../../util/VNode.mjs';
10
10
  * @class Neo.form.field.Text
11
11
  * @extends Neo.form.field.Base
12
12
  */
13
- class Text extends Base {
13
+ class Text extends Field {
14
14
  /**
15
15
  * Valid values for autoCapitalize
16
16
  * @member {String[]} autoCapitalizeValues=['characters','none','on','off','sentences','words']