neo.mjs 8.0.0 → 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.
- package/apps/ServiceWorker.mjs +2 -2
- package/apps/portal/index.html +1 -1
- package/apps/portal/view/about/Container.mjs +0 -2
- package/apps/portal/view/about/MemberContainer.mjs +1 -20
- package/apps/portal/view/home/FooterContainer.mjs +1 -5
- package/examples/ConfigurationViewport.mjs +37 -32
- package/examples/ServiceWorker.mjs +2 -2
- package/examples/grid/cellEditing/MainContainer.mjs +175 -0
- package/examples/grid/cellEditing/MainContainerStateProvider.mjs +62 -0
- package/examples/grid/cellEditing/MainModel.mjs +30 -0
- package/examples/grid/cellEditing/MainStore.mjs +54 -0
- package/examples/grid/cellEditing/app.mjs +6 -0
- package/examples/grid/cellEditing/index.html +11 -0
- package/examples/grid/cellEditing/neo-config.json +6 -0
- package/examples/grid/container/MainContainer.mjs +7 -6
- package/examples/grid/covid/GridContainer.mjs +36 -36
- package/examples/grid/covid/Util.mjs +1 -1
- package/examples/grid/covid/neo-config.json +6 -5
- package/examples/table/cellEditing/MainContainer.mjs +174 -0
- package/examples/table/cellEditing/MainContainerStateProvider.mjs +62 -0
- package/examples/table/cellEditing/MainModel.mjs +30 -0
- package/examples/table/cellEditing/MainStore.mjs +54 -0
- package/examples/table/cellEditing/app.mjs +6 -0
- package/examples/table/cellEditing/index.html +11 -0
- package/examples/table/cellEditing/neo-config.json +6 -0
- package/examples/table/nestedRecordFields/MainContainerStateProvider.mjs +2 -1
- package/package.json +8 -8
- package/resources/scss/src/apps/portal/home/FooterContainer.scss +11 -2
- package/resources/scss/src/examples/grid/covid/GridContainer.scss +1 -1
- package/resources/scss/src/grid/Container.scss +13 -23
- package/resources/scss/src/grid/View.scss +45 -19
- package/resources/scss/src/grid/header/Button.scss +2 -4
- package/resources/scss/src/grid/header/Toolbar.scss +1 -2
- package/resources/scss/src/grid/plugin/CellEditing.scss +11 -0
- package/resources/scss/src/table/plugin/CellEditing.scss +11 -0
- package/src/DefaultConfig.mjs +2 -2
- package/src/Xhr.mjs +1 -1
- package/src/button/Base.mjs +2 -2
- package/src/collection/Base.mjs +5 -5
- package/src/component/Base.mjs +3 -3
- package/src/component/DateSelector.mjs +15 -0
- package/src/container/Base.mjs +2 -2
- package/src/controller/Base.mjs +3 -3
- package/src/dialog/Base.mjs +2 -2
- package/src/form/field/Base.mjs +3 -6
- package/src/form/field/CheckBox.mjs +2 -2
- package/src/form/field/ComboBox.mjs +18 -2
- package/src/form/field/Date.mjs +10 -4
- package/src/form/field/FileUpload.mjs +4 -4
- package/src/form/field/Hidden.mjs +2 -2
- package/src/form/field/Text.mjs +2 -2
- package/src/grid/Container.mjs +340 -43
- package/src/grid/View.mjs +599 -124
- package/src/grid/header/Button.mjs +331 -36
- package/src/grid/header/Toolbar.mjs +111 -4
- package/src/grid/plugin/CellEditing.mjs +30 -0
- package/src/layout/Base.mjs +3 -3
- package/src/list/Base.mjs +2 -2
- package/src/list/Circle.mjs +2 -2
- package/src/list/Color.mjs +2 -2
- package/src/list/Component.mjs +2 -2
- package/src/main/DomEvents.mjs +12 -3
- package/src/manager/Base.mjs +3 -3
- package/src/manager/Component.mjs +20 -11
- package/src/manager/DomEvent.mjs +5 -6
- package/src/manager/Focus.mjs +2 -2
- package/src/manager/Instance.mjs +4 -4
- package/src/manager/Task.mjs +2 -2
- package/src/manager/Toast.mjs +3 -3
- package/src/plugin/Base.mjs +18 -4
- package/src/plugin/Popover.mjs +3 -3
- package/src/plugin/PrefixField.mjs +2 -2
- package/src/plugin/Resizable.mjs +3 -7
- package/src/plugin/Responsive.mjs +2 -2
- package/src/selection/Model.mjs +17 -2
- package/src/selection/grid/CellColumnModel.mjs +1 -1
- package/src/selection/grid/CellColumnRowModel.mjs +1 -1
- package/src/selection/grid/CellModel.mjs +1 -1
- package/src/selection/grid/ColumnModel.mjs +2 -2
- package/src/table/Container.mjs +32 -3
- package/src/table/View.mjs +9 -4
- package/src/table/header/Toolbar.mjs +15 -1
- package/src/table/plugin/CellEditing.mjs +330 -0
- package/src/toolbar/Base.mjs +2 -2
- package/src/toolbar/Breadcrumb.mjs +1 -1
- package/src/tooltip/Base.mjs +2 -2
- package/src/util/KeyNavigation.mjs +14 -8
- package/src/worker/Base.mjs +3 -3
- package/src/grid/README.md +0 -3
@@ -32,18 +32,18 @@ class GridContainer extends BaseGridContainer {
|
|
32
32
|
* @member {Object[]} columns
|
33
33
|
*/
|
34
34
|
columns: [{
|
35
|
-
cls
|
36
|
-
|
37
|
-
|
38
|
-
minWidth: 40,
|
39
|
-
text
|
40
|
-
renderer: Util.indexRenderer,
|
41
|
-
width
|
35
|
+
cls : ['neo-index-column'],
|
36
|
+
dataField: 'index',
|
37
|
+
dock : 'left',
|
38
|
+
minWidth : 40,
|
39
|
+
text : '#',
|
40
|
+
renderer : Util.indexRenderer,
|
41
|
+
width : 40
|
42
42
|
}, {
|
43
43
|
cellAlign : 'left',
|
44
|
+
dataField : 'country',
|
44
45
|
defaultSortDirection: 'ASC',
|
45
46
|
dock : 'left',
|
46
|
-
field : 'country',
|
47
47
|
text : 'Country',
|
48
48
|
width : 200,
|
49
49
|
|
@@ -58,44 +58,44 @@ class GridContainer extends BaseGridContainer {
|
|
58
58
|
};
|
59
59
|
}
|
60
60
|
}, {
|
61
|
-
|
62
|
-
text
|
61
|
+
dataField: 'cases',
|
62
|
+
text : 'Cases'
|
63
63
|
}, {
|
64
|
-
|
65
|
-
text
|
64
|
+
dataField: 'casesPerOneMillion',
|
65
|
+
text : 'Cases / 1M'
|
66
66
|
}, {
|
67
|
-
|
68
|
-
text
|
69
|
-
renderer: data => Util.formatInfected(data)
|
67
|
+
dataField: 'infected',
|
68
|
+
text : 'Infected',
|
69
|
+
renderer : data => Util.formatInfected(data)
|
70
70
|
}, {
|
71
|
-
|
72
|
-
text
|
73
|
-
renderer: data => Util.formatNumber(data, '#64B5F6')
|
71
|
+
dataField: 'active',
|
72
|
+
text : 'Active',
|
73
|
+
renderer : data => Util.formatNumber(data, '#64B5F6')
|
74
74
|
}, {
|
75
|
-
|
76
|
-
text
|
77
|
-
renderer: data => Util.formatNumber(data, '#28ca68')
|
75
|
+
dataField: 'recovered',
|
76
|
+
text : 'Recovered',
|
77
|
+
renderer : data => Util.formatNumber(data, '#28ca68')
|
78
78
|
}, {
|
79
|
-
|
80
|
-
text
|
81
|
-
renderer: data => Util.formatNumber(data, 'orange')
|
79
|
+
dataField: 'critical',
|
80
|
+
text : 'Critical',
|
81
|
+
renderer : data => Util.formatNumber(data, 'orange')
|
82
82
|
}, {
|
83
|
-
|
84
|
-
text
|
85
|
-
renderer: data => Util.formatNumber(data, '#fb6767')
|
83
|
+
dataField: 'deaths',
|
84
|
+
text : 'Deaths',
|
85
|
+
renderer : data => Util.formatNumber(data, '#fb6767')
|
86
86
|
}, {
|
87
|
-
|
88
|
-
text
|
87
|
+
dataField: 'todayCases',
|
88
|
+
text : 'Cases today'
|
89
89
|
}, {
|
90
|
-
|
91
|
-
text
|
92
|
-
renderer: data => Util.formatNumber(data, '#fb6767')
|
90
|
+
dataField: 'todayDeaths',
|
91
|
+
text : 'Deaths today',
|
92
|
+
renderer : data => Util.formatNumber(data, '#fb6767')
|
93
93
|
}, {
|
94
|
-
|
95
|
-
text
|
94
|
+
dataField: 'tests',
|
95
|
+
text : 'Tests'
|
96
96
|
}, {
|
97
|
-
|
98
|
-
text
|
97
|
+
dataField: 'testsPerOneMillion',
|
98
|
+
text : 'Tests / 1M'
|
99
99
|
}],
|
100
100
|
/**
|
101
101
|
* @member {Neo.controller.Component} controller=GridContainerController
|
@@ -133,7 +133,7 @@ class Util extends Base {
|
|
133
133
|
imageName = map[imageName] || imageName;
|
134
134
|
|
135
135
|
if (Neo.config.isGitHubPages) {
|
136
|
-
let path = `../../../../
|
136
|
+
let path = `../../../../resources_pub/images/flaticon/country_flags/png/${imageName}.png`;
|
137
137
|
|
138
138
|
if (Neo.config.environment !== 'development') {
|
139
139
|
path = `../../${path}`
|
@@ -1,7 +1,8 @@
|
|
1
1
|
{
|
2
|
-
"appPath"
|
3
|
-
"basePath"
|
4
|
-
"environment": "development",
|
5
|
-
"mainPath"
|
6
|
-
"
|
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
|
}
|
@@ -0,0 +1,174 @@
|
|
1
|
+
import CellColumnModel from '../../../src/selection/table/CellColumnModel.mjs';
|
2
|
+
import CellColumnRowModel from '../../../src/selection/table/CellColumnRowModel.mjs';
|
3
|
+
import CellModel from '../../../src/selection/table/CellModel.mjs';
|
4
|
+
import CellRowModel from '../../../src/selection/table/CellRowModel.mjs';
|
5
|
+
import CheckBox from '../../../src/form/field/CheckBox.mjs';
|
6
|
+
import CountryField from '../../../src/form/field/Country.mjs';
|
7
|
+
import ConfigurationViewport from '../../ConfigurationViewport.mjs';
|
8
|
+
import DateField from '../../../src/form/field/Date.mjs';
|
9
|
+
import MainContainerStateProvider from './MainContainerStateProvider.mjs';
|
10
|
+
import MainStore from './MainStore.mjs';
|
11
|
+
import NumberField from '../../../src/form/field/Number.mjs';
|
12
|
+
import Radio from '../../../src/form/field/Radio.mjs';
|
13
|
+
import TableContainer from '../../../src/table/Container.mjs';
|
14
|
+
|
15
|
+
/**
|
16
|
+
* @class Neo.examples.table.cellEditing.MainContainer
|
17
|
+
* @extends Neo.examples.ConfigurationViewport
|
18
|
+
*/
|
19
|
+
class MainContainer extends ConfigurationViewport {
|
20
|
+
static config = {
|
21
|
+
className : 'Neo.examples.table.cellEditing.MainContainer',
|
22
|
+
autoMount : true,
|
23
|
+
configItemLabelWidth: 130,
|
24
|
+
configPanelFlex : 1.5,
|
25
|
+
exampleComponentFlex: 3,
|
26
|
+
layout : {ntype: 'hbox', align: 'stretch'},
|
27
|
+
stateProvider : MainContainerStateProvider
|
28
|
+
}
|
29
|
+
|
30
|
+
/**
|
31
|
+
* @param {Object} data
|
32
|
+
*/
|
33
|
+
countryRenderer({record}) {
|
34
|
+
let countryStore = this.getStateProvider().getStore('countries');
|
35
|
+
|
36
|
+
if (countryStore.getCount() > 0) {
|
37
|
+
return countryStore.get(record.country).name
|
38
|
+
}
|
39
|
+
|
40
|
+
return ''
|
41
|
+
}
|
42
|
+
|
43
|
+
/**
|
44
|
+
* @returns {Object[]}
|
45
|
+
*/
|
46
|
+
createConfigurationComponents() {
|
47
|
+
let me = this;
|
48
|
+
|
49
|
+
const selectionModelRadioDefaults = {
|
50
|
+
module : Radio,
|
51
|
+
hideValueLabel: false,
|
52
|
+
labelText : '',
|
53
|
+
name : 'selectionModel',
|
54
|
+
width : 350
|
55
|
+
};
|
56
|
+
|
57
|
+
return [{
|
58
|
+
module : NumberField,
|
59
|
+
labelText: 'height',
|
60
|
+
listeners: {change: me.onConfigChange.bind(me, 'height')},
|
61
|
+
maxValue : 800,
|
62
|
+
minValue : 225,
|
63
|
+
stepSize : 5,
|
64
|
+
value : me.exampleComponent.height
|
65
|
+
}, {
|
66
|
+
...selectionModelRadioDefaults,
|
67
|
+
checked : me.exampleComponent.selectionModel.ntype === 'selection-table-cellmodel',
|
68
|
+
labelText : 'selectionModel',
|
69
|
+
listeners : {change: me.onRadioChange.bind(me, 'selectionModel', CellModel)},
|
70
|
+
style : {marginTop: '10px'},
|
71
|
+
valueLabelText: 'Cell'
|
72
|
+
}, {
|
73
|
+
...selectionModelRadioDefaults,
|
74
|
+
checked : me.exampleComponent.selectionModel.ntype === 'selection-table-cellcolumnmodel',
|
75
|
+
listeners : {change: me.onRadioChange.bind(me, 'selectionModel', CellColumnModel)},
|
76
|
+
valueLabelText: 'Cell & Column'
|
77
|
+
}, {
|
78
|
+
...selectionModelRadioDefaults,
|
79
|
+
checked : me.exampleComponent.selectionModel.ntype === 'selection-table-cellrowmodel',
|
80
|
+
listeners : {change: me.onRadioChange.bind(me, 'selectionModel', CellRowModel)},
|
81
|
+
valueLabelText: 'Cell & Row'
|
82
|
+
}, {
|
83
|
+
...selectionModelRadioDefaults,
|
84
|
+
checked : me.exampleComponent.selectionModel.ntype === 'selection-table-cellcolumnrowmodel',
|
85
|
+
listeners : {change: me.onRadioChange.bind(me, 'selectionModel', CellColumnRowModel)},
|
86
|
+
valueLabelText: 'Cell & Column & Row'
|
87
|
+
}, {
|
88
|
+
module : CheckBox,
|
89
|
+
checked : me.exampleComponent.sortable,
|
90
|
+
hideLabel : true,
|
91
|
+
listeners : {change: me.onConfigChange.bind(me, 'sortable')},
|
92
|
+
style : {marginTop: '10px'},
|
93
|
+
valueLabelText: 'sortable'
|
94
|
+
}, {
|
95
|
+
module : CheckBox,
|
96
|
+
checked : false, // we can not access the lazy-loaded plugin yet
|
97
|
+
hideLabel : true,
|
98
|
+
listeners : {change: me.onPluginConfigChange.bind(me, 'disabled')},
|
99
|
+
style : {marginTop: '10px'},
|
100
|
+
valueLabelText: 'Disable CellEditing'
|
101
|
+
}]
|
102
|
+
}
|
103
|
+
|
104
|
+
/**
|
105
|
+
* @returns {Object}
|
106
|
+
*/
|
107
|
+
createExampleComponent() {
|
108
|
+
return {
|
109
|
+
module : TableContainer,
|
110
|
+
bind : {store : 'stores.mainStore'},
|
111
|
+
cellEditing : true,
|
112
|
+
parentId : this.id,
|
113
|
+
selectionModel: CellModel,
|
114
|
+
store : MainStore,
|
115
|
+
|
116
|
+
columnDefaults: {
|
117
|
+
editable: true
|
118
|
+
},
|
119
|
+
|
120
|
+
columns: [{
|
121
|
+
dataField: 'firstname',
|
122
|
+
text : 'Firstname'
|
123
|
+
}, {
|
124
|
+
dataField: 'randomNumber',
|
125
|
+
text : 'Number (step 5)',
|
126
|
+
|
127
|
+
editor: {
|
128
|
+
module : NumberField,
|
129
|
+
clearable: false,
|
130
|
+
maxValue : 100,
|
131
|
+
minValue : 0,
|
132
|
+
stepSize : 5
|
133
|
+
}
|
134
|
+
}, {
|
135
|
+
dataField: 'randomDate',
|
136
|
+
renderer : ({value}) => new Intl.DateTimeFormat('default').format(value),
|
137
|
+
text : 'Random Date',
|
138
|
+
|
139
|
+
editor: {
|
140
|
+
module : DateField,
|
141
|
+
clearable: false,
|
142
|
+
maxValue : '2024-12-20',
|
143
|
+
minValue : '2024-12-10'
|
144
|
+
}
|
145
|
+
}, {
|
146
|
+
dataField: 'country',
|
147
|
+
renderer : 'up.countryRenderer',
|
148
|
+
text : 'Country',
|
149
|
+
|
150
|
+
editor: {
|
151
|
+
module : CountryField,
|
152
|
+
bind : {store: 'stores.countries'},
|
153
|
+
clearable : false,
|
154
|
+
forceSelection: true,
|
155
|
+
valueField : 'code'
|
156
|
+
}
|
157
|
+
}, {
|
158
|
+
dataField: 'githubId',
|
159
|
+
editable : false,
|
160
|
+
text : 'Github Id (Non-editable)'
|
161
|
+
}]
|
162
|
+
}
|
163
|
+
}
|
164
|
+
|
165
|
+
/**
|
166
|
+
* @param {String} config
|
167
|
+
* @param {Object} opts
|
168
|
+
*/
|
169
|
+
onPluginConfigChange(config, opts) {
|
170
|
+
this.exampleComponent.getPlugin('table-cell-editing')[config] = opts.value
|
171
|
+
}
|
172
|
+
}
|
173
|
+
|
174
|
+
export default Neo.setupClass(MainContainer);
|
@@ -0,0 +1,62 @@
|
|
1
|
+
import MainStore from './MainStore.mjs';
|
2
|
+
import StateProvider from '../../../src/state/Provider.mjs';
|
3
|
+
import Store from '../../../src/data/Store.mjs';
|
4
|
+
|
5
|
+
const countrySymbol = Symbol.for('country');
|
6
|
+
|
7
|
+
/**
|
8
|
+
* @class Neo.examples.table.cellEditing.MainContainerStateProvider
|
9
|
+
* @extends Neo.state.Provider
|
10
|
+
*/
|
11
|
+
class MainContainerStateProvider extends StateProvider {
|
12
|
+
static config = {
|
13
|
+
/**
|
14
|
+
* @member {String} className='Neo.examples.table.cellEditing.MainContainerStateProvider'
|
15
|
+
* @protected
|
16
|
+
*/
|
17
|
+
className: 'Neo.examples.table.cellEditing.MainContainerStateProvider',
|
18
|
+
/**
|
19
|
+
* @member {Object} stores
|
20
|
+
*/
|
21
|
+
stores: {
|
22
|
+
countries: {
|
23
|
+
module : Store,
|
24
|
+
autoLoad : true,
|
25
|
+
keyProperty: 'code',
|
26
|
+
listeners : {load: 'onCountryStoreLoad'},
|
27
|
+
url : '../../../resources/examples/data/countries.json',
|
28
|
+
|
29
|
+
model: {
|
30
|
+
fields: [
|
31
|
+
{name: 'code'},
|
32
|
+
{name: 'name'}
|
33
|
+
]
|
34
|
+
}
|
35
|
+
},
|
36
|
+
mainStore: MainStore
|
37
|
+
}
|
38
|
+
}
|
39
|
+
|
40
|
+
/**
|
41
|
+
* @param {Record[]} items
|
42
|
+
*/
|
43
|
+
onCountryStoreLoad(items) {
|
44
|
+
let me = this,
|
45
|
+
mainStore = me.getStore('mainStore'),
|
46
|
+
country;
|
47
|
+
|
48
|
+
// if the main table store is already loaded, the country field renderer had no data
|
49
|
+
if (mainStore.getCount() > 0) {
|
50
|
+
mainStore.items.forEach(record => {
|
51
|
+
country = record.country;
|
52
|
+
|
53
|
+
// hack resetting the current value to get a new record change
|
54
|
+
record[countrySymbol] = null;
|
55
|
+
|
56
|
+
record.country = country
|
57
|
+
})
|
58
|
+
}
|
59
|
+
}
|
60
|
+
}
|
61
|
+
|
62
|
+
export default Neo.setupClass(MainContainerStateProvider);
|
@@ -0,0 +1,30 @@
|
|
1
|
+
import Model from '../../../src/data/Model.mjs';
|
2
|
+
|
3
|
+
/**
|
4
|
+
* @class Neo.examples.table.cellEditing.MainModel
|
5
|
+
* @extends Neo.data.Model
|
6
|
+
*/
|
7
|
+
class MainModel extends Model {
|
8
|
+
static config = {
|
9
|
+
className: 'Neo.examples.table.cellEditing.MainModel',
|
10
|
+
|
11
|
+
fields: [{
|
12
|
+
name: 'country',
|
13
|
+
type: 'String'
|
14
|
+
}, {
|
15
|
+
name: 'firstname',
|
16
|
+
type: 'String'
|
17
|
+
}, {
|
18
|
+
name: 'githubId',
|
19
|
+
type: 'String'
|
20
|
+
}, {
|
21
|
+
name: 'randomNumber',
|
22
|
+
type: 'Int'
|
23
|
+
}, {
|
24
|
+
name: 'randomDate',
|
25
|
+
type: 'Date'
|
26
|
+
}]
|
27
|
+
}
|
28
|
+
}
|
29
|
+
|
30
|
+
export default Neo.setupClass(MainModel);
|
@@ -0,0 +1,54 @@
|
|
1
|
+
import Model from './MainModel.mjs';
|
2
|
+
import Store from '../../../src/data/Store.mjs';
|
3
|
+
|
4
|
+
/**
|
5
|
+
* @class Neo.examples.table.cellEditing.MainStore
|
6
|
+
* @extends Neo.data.Store
|
7
|
+
*/
|
8
|
+
class MainStore extends Store {
|
9
|
+
static config = {
|
10
|
+
className : 'Neo.examples.table.cellEditing.MainStore',
|
11
|
+
keyProperty: 'githubId',
|
12
|
+
model : Model,
|
13
|
+
|
14
|
+
data: [{
|
15
|
+
country : 'DE',
|
16
|
+
firstname : 'Tobias',
|
17
|
+
githubId : 'tobiu',
|
18
|
+
randomDate : '2024-12-20',
|
19
|
+
randomNumber: 100
|
20
|
+
}, {
|
21
|
+
country : 'US',
|
22
|
+
firstname : 'Rich',
|
23
|
+
githubId : 'rwaters',
|
24
|
+
randomDate : '2024-12-18',
|
25
|
+
randomNumber: 90
|
26
|
+
}, {
|
27
|
+
country : 'DE',
|
28
|
+
firstname : 'Nils',
|
29
|
+
githubId : 'mrsunshine',
|
30
|
+
randomDate : '2024-12-19',
|
31
|
+
randomNumber: 70
|
32
|
+
}, {
|
33
|
+
country : 'US',
|
34
|
+
firstname : 'Gerard',
|
35
|
+
githubId : 'camtnbikerrwc',
|
36
|
+
randomDate : '2024-12-17',
|
37
|
+
randomNumber: 80
|
38
|
+
}, {
|
39
|
+
country : 'SK',
|
40
|
+
firstname : 'Jozef',
|
41
|
+
githubId : 'jsakalos',
|
42
|
+
randomDate : '2024-12-16',
|
43
|
+
randomNumber: 60
|
44
|
+
}, {
|
45
|
+
country : 'DE',
|
46
|
+
firstname : 'Bastian',
|
47
|
+
githubId : 'bhaustein',
|
48
|
+
randomDate : '2024-12-15',
|
49
|
+
randomNumber: 50
|
50
|
+
}]
|
51
|
+
}
|
52
|
+
}
|
53
|
+
|
54
|
+
export default Neo.setupClass(MainStore);
|
@@ -0,0 +1,11 @@
|
|
1
|
+
<!DOCTYPE HTML>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
5
|
+
<meta charset="UTF-8">
|
6
|
+
<title>Neo Table CellEditing</title>
|
7
|
+
</head>
|
8
|
+
<body>
|
9
|
+
<script src="../../../src/MicroLoader.mjs" type="module"></script>
|
10
|
+
</body>
|
11
|
+
</html>
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "neo.mjs",
|
3
|
-
"version": "8.
|
3
|
+
"version": "8.1.0",
|
4
4
|
"description": "The webworkers driven UI framework",
|
5
5
|
"type": "module",
|
6
6
|
"repository": {
|
@@ -45,26 +45,26 @@
|
|
45
45
|
},
|
46
46
|
"homepage": "https://neomjs.com/",
|
47
47
|
"devDependencies": {
|
48
|
-
"@fortawesome/fontawesome-free": "^6.7.
|
48
|
+
"@fortawesome/fontawesome-free": "^6.7.2",
|
49
49
|
"autoprefixer": "^10.4.20",
|
50
|
-
"chalk": "^5.
|
50
|
+
"chalk": "^5.4.1",
|
51
51
|
"clean-webpack-plugin": "^4.0.0",
|
52
|
-
"commander": "^
|
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
|
-
"inquirer": "^12.
|
58
|
-
"marked": "^15.0.
|
57
|
+
"inquirer": "^12.3.0",
|
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.
|
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": "^
|
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"
|
@@ -31,17 +31,26 @@
|
|
31
31
|
padding : var(--button-padding);
|
32
32
|
}
|
33
33
|
|
34
|
-
.neo-version
|
35
|
-
.portal-home-footer-spacer {
|
34
|
+
.neo-version {
|
36
35
|
height: var(--button-height);
|
37
36
|
margin: var(--button-margin);
|
38
37
|
}
|
39
38
|
|
39
|
+
.portal-home-footer-spacer {
|
40
|
+
height: calc(2 * var(--button-height));
|
41
|
+
margin: calc(2 * var(--button-margin));
|
42
|
+
}
|
43
|
+
|
40
44
|
.portal-home-footer-section {
|
41
45
|
background-color: transparent;
|
42
46
|
color : white;
|
43
47
|
}
|
44
48
|
|
49
|
+
.portal-home-footer-spacer {
|
50
|
+
height: calc(2 * var(--button-height));
|
51
|
+
margin: calc(2 * var(--button-margin));
|
52
|
+
}
|
53
|
+
|
45
54
|
@media (max-width: 800px) {
|
46
55
|
max-height: 18em;
|
47
56
|
min-height: 18em;
|
@@ -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
|
15
|
+
overflow-y : hidden;
|
16
|
+
position : absolute;
|
17
|
+
width : 100%;
|
10
18
|
|
11
19
|
.neo-grid-row {
|
12
|
-
display
|
13
|
-
|
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
|
40
|
+
.neo-grid-row.neo-even {
|
35
41
|
.neo-grid-cell {
|
36
42
|
background-color: var(--grid-container-cell-background-color-even);
|
37
43
|
}
|
@@ -43,19 +49,6 @@
|
|
43
49
|
z-index : 5;
|
44
50
|
}
|
45
51
|
|
46
|
-
.neo-grid-header-cell:nth-child(1) {
|
47
|
-
position: sticky;
|
48
|
-
left : 0;
|
49
|
-
top : 0;
|
50
|
-
z-index : 200 !important;
|
51
|
-
}
|
52
|
-
|
53
|
-
.neo-grid-cell:nth-child(1) {
|
54
|
-
position: sticky;
|
55
|
-
left : 0;
|
56
|
-
z-index : 20;
|
57
|
-
}
|
58
|
-
|
59
52
|
.neo-grid-cell, .neo-grid-header-cell {
|
60
53
|
border-bottom: 1px solid var(--grid-container-border-color);
|
61
54
|
border-right : 1px solid var(--grid-container-border-color);
|
@@ -67,8 +60,7 @@
|
|
67
60
|
}
|
68
61
|
|
69
62
|
&.neo-locked {
|
70
|
-
|
71
|
-
left : 0;
|
63
|
+
left: 0;
|
72
64
|
}
|
73
65
|
}
|
74
66
|
|
@@ -76,8 +68,6 @@
|
|
76
68
|
align-items : center;
|
77
69
|
background-color: var(--grid-container-cell-background-color);
|
78
70
|
display : flex;
|
79
|
-
height : 32px !important;
|
80
|
-
max-height : 32px !important;
|
81
71
|
padding : 2px 10px 2px;
|
82
72
|
width : fit-content;
|
83
73
|
}
|