neo.mjs 2.3.13 → 2.3.17
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/README.md +8 -16
- package/apps/covid/view/HeaderContainer.mjs +1 -3
- package/apps/covid/view/HelixContainer.mjs +1 -1
- package/apps/covid/view/MainContainer.mjs +1 -1
- package/apps/covid/view/MainContainerController.mjs +3 -20
- package/apps/covid/view/TableContainerController.mjs +8 -8
- package/apps/covid/view/country/Table.mjs +1 -3
- package/apps/realworld/api/config.mjs +2 -2
- package/apps/sharedcovid/view/GalleryContainer.mjs +7 -0
- package/apps/sharedcovid/view/HeaderContainer.mjs +6 -3
- package/apps/sharedcovid/view/HelixContainer.mjs +8 -1
- package/apps/sharedcovid/view/MainContainer.mjs +7 -2
- package/apps/sharedcovid/view/MainContainerController.mjs +48 -134
- package/apps/sharedcovid/view/MainContainerModel.mjs +51 -0
- package/apps/sharedcovid/view/TableContainer.mjs +24 -0
- package/apps/sharedcovid/view/TableContainerController.mjs +26 -39
- package/apps/sharedcovid/view/country/Gallery.mjs +36 -2
- package/apps/sharedcovid/view/country/Helix.mjs +37 -1
- package/apps/sharedcovid/view/country/Table.mjs +65 -1
- package/apps/sharedcovid/view/mapboxGl/Container.mjs +24 -4
- package/apps/website/data/blog.json +17 -4
- package/apps/website/data/examples_devmode.json +18 -18
- package/buildScripts/webpack/development/webpack.config.main.js +2 -1
- package/buildScripts/webpack/production/webpack.config.main.js +2 -1
- package/examples/list/animate/List.mjs +50 -0
- package/examples/list/animate/MainContainer.mjs +79 -0
- package/examples/list/animate/MainModel.mjs +33 -0
- package/examples/list/animate/MainStore.mjs +31 -0
- package/examples/list/animate/app.mjs +8 -0
- package/examples/list/animate/index.html +11 -0
- package/examples/list/animate/neo-config.json +7 -0
- package/examples/list/base/neo-config.json +1 -1
- package/package.json +11 -11
- package/resources/scss/src/examples/list/animate/List.scss +30 -0
- package/src/Main.mjs +0 -8
- package/src/Neo.mjs +1 -3
- package/src/calendar/view/week/Component.mjs +1 -1
- package/src/collection/Base.mjs +7 -4
- package/src/component/Base.mjs +4 -11
- package/src/core/Base.mjs +1 -1
- package/src/list/Base.mjs +39 -8
- package/src/list/plugin/Animate.mjs +177 -0
- package/src/model/Component.mjs +3 -14
- package/src/worker/Manager.mjs +6 -1
|
@@ -22,10 +22,20 @@ class TableContainer extends Container {
|
|
|
22
22
|
* @member {Boolean} autoMount=true
|
|
23
23
|
*/
|
|
24
24
|
autoMount: true,
|
|
25
|
+
/**
|
|
26
|
+
* @member {Object} bind
|
|
27
|
+
*/
|
|
28
|
+
bind: {
|
|
29
|
+
countryRecord: data => data.countryRecord
|
|
30
|
+
},
|
|
25
31
|
/**
|
|
26
32
|
* @member {Neo.controller.Component|null} controller=TableContainerController
|
|
27
33
|
*/
|
|
28
34
|
controller: TableContainerController,
|
|
35
|
+
/**
|
|
36
|
+
* @member {Object} countryRecord_=null
|
|
37
|
+
*/
|
|
38
|
+
countryRecord_: null,
|
|
29
39
|
/**
|
|
30
40
|
* @member {Number} historyPanelWidth=520
|
|
31
41
|
* @protected
|
|
@@ -160,6 +170,8 @@ class TableContainer extends Container {
|
|
|
160
170
|
|
|
161
171
|
me.table = Neo.create({
|
|
162
172
|
module : Table,
|
|
173
|
+
appName : me.appName,
|
|
174
|
+
parentId : me.id,
|
|
163
175
|
reference: 'table',
|
|
164
176
|
...me.tableConfig
|
|
165
177
|
});
|
|
@@ -167,6 +179,18 @@ class TableContainer extends Container {
|
|
|
167
179
|
me.items[0].items.push(me.table);
|
|
168
180
|
}
|
|
169
181
|
|
|
182
|
+
/**
|
|
183
|
+
* Triggered after the countryRecord config got changed
|
|
184
|
+
* @param {String|null} value
|
|
185
|
+
* @param {String|null} oldValue
|
|
186
|
+
* @protected
|
|
187
|
+
*/
|
|
188
|
+
afterSetCountryRecord(value, oldValue) {
|
|
189
|
+
setTimeout(() => {
|
|
190
|
+
this.controller.onCountryChange(value);
|
|
191
|
+
}, this.isConstructed ? 0 : 50);
|
|
192
|
+
}
|
|
193
|
+
|
|
170
194
|
/**
|
|
171
195
|
*
|
|
172
196
|
*/
|
|
@@ -41,17 +41,6 @@ class TableContainerController extends ComponentController {
|
|
|
41
41
|
table_: null
|
|
42
42
|
}}
|
|
43
43
|
|
|
44
|
-
/**
|
|
45
|
-
*
|
|
46
|
-
*/
|
|
47
|
-
onConstructed() {
|
|
48
|
-
super.onConstructed();
|
|
49
|
-
|
|
50
|
-
const me = this;
|
|
51
|
-
|
|
52
|
-
me.component.on('countrySelect', me.onTableSelect, me);
|
|
53
|
-
}
|
|
54
|
-
|
|
55
44
|
/**
|
|
56
45
|
*
|
|
57
46
|
* @param {Object} data
|
|
@@ -166,8 +155,8 @@ class TableContainerController extends ComponentController {
|
|
|
166
155
|
* @param {String} countryName
|
|
167
156
|
*/
|
|
168
157
|
loadHistoricalData(countryName) {
|
|
169
|
-
|
|
170
|
-
|
|
158
|
+
let me = this,
|
|
159
|
+
apiPath = me.apiBaseUrl + me.apiHistoricalDataEndpoint + countryName + '?lastdays=' + me.apiHistoricalDataTimeRange;
|
|
171
160
|
|
|
172
161
|
fetch(apiPath)
|
|
173
162
|
.then(response => response.json())
|
|
@@ -193,21 +182,39 @@ class TableContainerController extends ComponentController {
|
|
|
193
182
|
* {Object} data
|
|
194
183
|
*/
|
|
195
184
|
onCollapseButtonClick(data) {
|
|
196
|
-
|
|
197
|
-
|
|
185
|
+
let panel = this.getReference('controls-panel'),
|
|
186
|
+
expand = panel.width === 40;
|
|
198
187
|
|
|
199
188
|
panel.width = expand ? this.component.historyPanelWidth : 40;
|
|
200
189
|
|
|
201
190
|
data.component.text = expand ? 'X' : '+';
|
|
202
191
|
}
|
|
203
192
|
|
|
193
|
+
/**
|
|
194
|
+
* {Object} record
|
|
195
|
+
*/
|
|
196
|
+
onCountryChange(record) {
|
|
197
|
+
let me = this;
|
|
198
|
+
|
|
199
|
+
if (record) {
|
|
200
|
+
me.selectedRecord = {...record};
|
|
201
|
+
} else {
|
|
202
|
+
me.selectedRecord = null;
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
// removed optional chaining for now, see: https://github.com/neomjs/neo/issues/467
|
|
206
|
+
me.loadHistoricalData(record?.countryInfo?.iso2 || 'all');
|
|
207
|
+
|
|
208
|
+
me.getReference('historical-data-label').html = 'Historical Data (' + (record?.country || 'World') + ')';
|
|
209
|
+
}
|
|
210
|
+
|
|
204
211
|
/**
|
|
205
212
|
* {Object} data
|
|
206
213
|
*/
|
|
207
214
|
onDailyValuesChange(data) {
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
215
|
+
let chartId = this.getReference('line-chart').id,
|
|
216
|
+
logCheckbox = this.getReference('logarithmic-scale-checkbox'),
|
|
217
|
+
value = data.value;
|
|
211
218
|
|
|
212
219
|
if (value) {
|
|
213
220
|
logCheckbox.set({
|
|
@@ -240,7 +247,7 @@ class TableContainerController extends ComponentController {
|
|
|
240
247
|
* {Object} data
|
|
241
248
|
*/
|
|
242
249
|
onLogarithmicScaleChange(data) {
|
|
243
|
-
|
|
250
|
+
let lineChart = this.getReference('line-chart');
|
|
244
251
|
|
|
245
252
|
Neo.main.addon.AmCharts.setProperty({
|
|
246
253
|
appName: lineChart.appName,
|
|
@@ -250,26 +257,6 @@ class TableContainerController extends ComponentController {
|
|
|
250
257
|
});
|
|
251
258
|
}
|
|
252
259
|
|
|
253
|
-
/**
|
|
254
|
-
* {Object} data
|
|
255
|
-
* {Object} data.record
|
|
256
|
-
*/
|
|
257
|
-
onTableSelect(data) {
|
|
258
|
-
const me = this,
|
|
259
|
-
record = data.record;
|
|
260
|
-
|
|
261
|
-
if (data.record) {
|
|
262
|
-
me.selectedRecord = {...record};
|
|
263
|
-
} else {
|
|
264
|
-
me.selectedRecord = null;
|
|
265
|
-
}
|
|
266
|
-
|
|
267
|
-
// removed optional chaining for now, see: https://github.com/neomjs/neo/issues/467
|
|
268
|
-
me.loadHistoricalData(record?.countryInfo?.iso2 || 'all');
|
|
269
|
-
|
|
270
|
-
me.getReference('historical-data-label').html = 'Historical Data (' + (record?.country || 'World') + ')';
|
|
271
|
-
}
|
|
272
|
-
|
|
273
260
|
/**
|
|
274
261
|
*
|
|
275
262
|
*/
|
|
@@ -13,10 +13,20 @@ class CountryGallery extends Gallery {
|
|
|
13
13
|
* @protected
|
|
14
14
|
*/
|
|
15
15
|
className: 'SharedCovid.view.country.Gallery',
|
|
16
|
+
/**
|
|
17
|
+
* @member {Object} bind
|
|
18
|
+
*/
|
|
19
|
+
bind: {
|
|
20
|
+
country: {twoWay: true, value: data => data.country}
|
|
21
|
+
},
|
|
16
22
|
/**
|
|
17
23
|
* @member {String[]} cls=['covid-country-gallery', 'neo-gallery', 'page', 'view']
|
|
18
24
|
*/
|
|
19
25
|
cls: ['covid-country-gallery', 'neo-gallery', 'page', 'view'],
|
|
26
|
+
/**
|
|
27
|
+
* @member {String|null} country_=null
|
|
28
|
+
*/
|
|
29
|
+
country_: null,
|
|
20
30
|
/**
|
|
21
31
|
* The image height of the gallery
|
|
22
32
|
* @member {Number} imageHeight=240
|
|
@@ -100,6 +110,22 @@ class CountryGallery extends Gallery {
|
|
|
100
110
|
store: CountryStore
|
|
101
111
|
}}
|
|
102
112
|
|
|
113
|
+
/**
|
|
114
|
+
* Triggered after the country config got changed
|
|
115
|
+
* @param {String|null} value
|
|
116
|
+
* @param {String|null} oldValue
|
|
117
|
+
* @protected
|
|
118
|
+
*/
|
|
119
|
+
afterSetCountry(value, oldValue) {
|
|
120
|
+
if (oldValue !== undefined) {
|
|
121
|
+
let selectionModel = this.selectionModel;
|
|
122
|
+
|
|
123
|
+
if (value && !selectionModel.isSelected(value)) {
|
|
124
|
+
selectionModel.select(value, false);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
|
|
103
129
|
/**
|
|
104
130
|
* Override this method to get different item-markups
|
|
105
131
|
* @param {Object} vdomItem
|
|
@@ -143,6 +169,14 @@ class CountryGallery extends Gallery {
|
|
|
143
169
|
return vnodeId.split('__')[1];
|
|
144
170
|
}
|
|
145
171
|
|
|
172
|
+
/**
|
|
173
|
+
* Gets triggered from selection.Model: select()
|
|
174
|
+
* @param {String[]} items
|
|
175
|
+
*/
|
|
176
|
+
onSelect(items) {
|
|
177
|
+
this.country = items[0] || null;
|
|
178
|
+
}
|
|
179
|
+
|
|
146
180
|
/**
|
|
147
181
|
*
|
|
148
182
|
* @param {Array} items
|
|
@@ -153,10 +187,10 @@ class CountryGallery extends Gallery {
|
|
|
153
187
|
setTimeout(() => {
|
|
154
188
|
this.selectOnMount = true;
|
|
155
189
|
this.afterSetMounted(true, false);
|
|
156
|
-
},
|
|
190
|
+
}, 400);
|
|
157
191
|
}
|
|
158
192
|
}
|
|
159
193
|
|
|
160
194
|
Neo.applyClassConfig(CountryGallery);
|
|
161
195
|
|
|
162
|
-
export {CountryGallery as default};
|
|
196
|
+
export {CountryGallery as default};
|
|
@@ -13,10 +13,20 @@ class CountryHelix extends Helix {
|
|
|
13
13
|
* @protected
|
|
14
14
|
*/
|
|
15
15
|
className: 'SharedCovid.view.country.Helix',
|
|
16
|
+
/**
|
|
17
|
+
* @member {Object} bind
|
|
18
|
+
*/
|
|
19
|
+
bind: {
|
|
20
|
+
country: {twoWay: true, value: data => data.country}
|
|
21
|
+
},
|
|
16
22
|
/**
|
|
17
23
|
* @member {String[]} cls=['covid-country-helix', 'neo-helix']
|
|
18
24
|
*/
|
|
19
25
|
cls: ['covid-country-helix', 'neo-helix'],
|
|
26
|
+
/**
|
|
27
|
+
* @member {String|null} country_=null
|
|
28
|
+
*/
|
|
29
|
+
country_: null,
|
|
20
30
|
/**
|
|
21
31
|
* The vertical delta between each helix item (increasing this value will create a spiral)
|
|
22
32
|
* @member {Number} deltaY=1.2
|
|
@@ -95,6 +105,24 @@ class CountryHelix extends Helix {
|
|
|
95
105
|
translateZ: -2300
|
|
96
106
|
}}
|
|
97
107
|
|
|
108
|
+
/**
|
|
109
|
+
* Triggered after the country config got changed
|
|
110
|
+
* @param {String|null} value
|
|
111
|
+
* @param {String|null} oldValue
|
|
112
|
+
* @protected
|
|
113
|
+
*/
|
|
114
|
+
afterSetCountry(value, oldValue) {
|
|
115
|
+
if (oldValue !== undefined) {
|
|
116
|
+
let me = this,
|
|
117
|
+
selectionModel = me.selectionModel;
|
|
118
|
+
|
|
119
|
+
if (value && !selectionModel.isSelected(value)) {
|
|
120
|
+
selectionModel.select(value, false);
|
|
121
|
+
me.onKeyDownSpace(null);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
|
|
98
126
|
/**
|
|
99
127
|
*
|
|
100
128
|
* @param {Object} vdomItem
|
|
@@ -144,8 +172,16 @@ class CountryHelix extends Helix {
|
|
|
144
172
|
getItemId(vnodeId) {
|
|
145
173
|
return vnodeId.split('__')[1];
|
|
146
174
|
}
|
|
175
|
+
|
|
176
|
+
/**
|
|
177
|
+
* Gets triggered from selection.Model: select()
|
|
178
|
+
* @param {String[]} items
|
|
179
|
+
*/
|
|
180
|
+
onSelect(items) {
|
|
181
|
+
this.country = items[0] || null;
|
|
182
|
+
}
|
|
147
183
|
}
|
|
148
184
|
|
|
149
185
|
Neo.applyClassConfig(CountryHelix);
|
|
150
186
|
|
|
151
|
-
export {CountryHelix as default};
|
|
187
|
+
export {CountryHelix as default};
|
|
@@ -13,6 +13,12 @@ class Table extends Container {
|
|
|
13
13
|
* @protected
|
|
14
14
|
*/
|
|
15
15
|
className: 'SharedCovid.view.country.Table',
|
|
16
|
+
/**
|
|
17
|
+
* @member {Object} bind
|
|
18
|
+
*/
|
|
19
|
+
bind: {
|
|
20
|
+
country: {twoWay: true, value: data => data.country}
|
|
21
|
+
},
|
|
16
22
|
/**
|
|
17
23
|
* @member {String[]} cls=['covid-country-table', 'neo-table-container']
|
|
18
24
|
*/
|
|
@@ -95,13 +101,71 @@ class Table extends Container {
|
|
|
95
101
|
dataField: 'testsPerOneMillion',
|
|
96
102
|
text : 'Tests / 1M'
|
|
97
103
|
}],
|
|
104
|
+
/**
|
|
105
|
+
* @member {String|null} country_=null
|
|
106
|
+
*/
|
|
107
|
+
country_: null,
|
|
98
108
|
/**
|
|
99
109
|
* @member {Neo.data.Store} store=CountryStore
|
|
100
110
|
*/
|
|
101
111
|
store: CountryStore
|
|
102
112
|
}}
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* Triggered after the country config got changed
|
|
116
|
+
* @param {String|null} value
|
|
117
|
+
* @param {String|null} oldValue
|
|
118
|
+
* @protected
|
|
119
|
+
*/
|
|
120
|
+
afterSetCountry(value, oldValue) {
|
|
121
|
+
if (oldValue !== undefined) {
|
|
122
|
+
let me = this,
|
|
123
|
+
selectionModel = me.selectionModel,
|
|
124
|
+
id;
|
|
125
|
+
|
|
126
|
+
if (value) {
|
|
127
|
+
id = `${me.getView().id}__tr__${value}`; // the store can not be loaded on the first selection
|
|
128
|
+
|
|
129
|
+
if (!selectionModel.isSelected(id)) {
|
|
130
|
+
selectionModel.select(id);
|
|
131
|
+
|
|
132
|
+
me.mounted && Neo.main.DomAccess.scrollToTableRow({id: id});
|
|
133
|
+
}
|
|
134
|
+
} else {
|
|
135
|
+
selectionModel.deselectAll();
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
/**
|
|
141
|
+
* Gets triggered from selection.Model: deselect()
|
|
142
|
+
* @param {String[]} items
|
|
143
|
+
*/
|
|
144
|
+
onDeselect(items) {
|
|
145
|
+
this.country = null;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
/**
|
|
149
|
+
* Gets triggered from selection.Model: select()
|
|
150
|
+
* @param {String[]} items
|
|
151
|
+
*/
|
|
152
|
+
onSelect(items) {
|
|
153
|
+
let me = this,
|
|
154
|
+
item = items[0] || null;
|
|
155
|
+
|
|
156
|
+
if (me.store.getCount() > 0) {
|
|
157
|
+
if (item) {
|
|
158
|
+
item = me.getView().getRecordByRowId(item)?.country;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
// in case getRecordByRowId() has no match, the initial row creation will include the selection
|
|
162
|
+
if (item) {
|
|
163
|
+
me.country = item;
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
}
|
|
103
167
|
}
|
|
104
168
|
|
|
105
169
|
Neo.applyClassConfig(Table);
|
|
106
170
|
|
|
107
|
-
export {Table as default};
|
|
171
|
+
export {Table as default};
|
|
@@ -28,9 +28,6 @@ class Container extends BaseContainer {
|
|
|
28
28
|
* @member {Object[]} items
|
|
29
29
|
*/
|
|
30
30
|
items: [{
|
|
31
|
-
module : Component,
|
|
32
|
-
reference: 'mapboxglmap'
|
|
33
|
-
}, {
|
|
34
31
|
module : Panel,
|
|
35
32
|
height : 150,
|
|
36
33
|
ignoreLayout: true,
|
|
@@ -106,6 +103,29 @@ class Container extends BaseContainer {
|
|
|
106
103
|
}
|
|
107
104
|
}}
|
|
108
105
|
|
|
106
|
+
/**
|
|
107
|
+
*
|
|
108
|
+
* @param {Object} config
|
|
109
|
+
*/
|
|
110
|
+
constructor(config) {
|
|
111
|
+
super(config);
|
|
112
|
+
|
|
113
|
+
let me = this,
|
|
114
|
+
|
|
115
|
+
map = Neo.create({
|
|
116
|
+
module : Component,
|
|
117
|
+
appName : me.appName,
|
|
118
|
+
parentId : me.id,
|
|
119
|
+
reference: 'mapboxglmap',
|
|
120
|
+
|
|
121
|
+
model: {
|
|
122
|
+
parent: me.getModel()
|
|
123
|
+
}
|
|
124
|
+
});
|
|
125
|
+
|
|
126
|
+
me.items.unshift(map);
|
|
127
|
+
}
|
|
128
|
+
|
|
109
129
|
/**
|
|
110
130
|
*
|
|
111
131
|
*/
|
|
@@ -123,4 +143,4 @@ class Container extends BaseContainer {
|
|
|
123
143
|
|
|
124
144
|
Neo.applyClassConfig(Container);
|
|
125
145
|
|
|
126
|
-
export {Container as default};
|
|
146
|
+
export {Container as default};
|
|
@@ -2,10 +2,23 @@
|
|
|
2
2
|
{
|
|
3
3
|
"author" : "Tobias Uhlig",
|
|
4
4
|
"authorImage" : "author_TobiasUhlig.jpeg",
|
|
5
|
-
"date" : "
|
|
5
|
+
"date" : "Sep 23, 2021",
|
|
6
|
+
"id" : 46,
|
|
7
|
+
"image" : "safari-just-released-support-for-js-modules-inside-the-worker-scope.png",
|
|
8
|
+
"name" : "Safari (Webkit) just released support for JS modules inside the worker scope",
|
|
9
|
+
"provider" : "Medium",
|
|
10
|
+
"publisher" : "ITNEXT",
|
|
11
|
+
"selectedInto": [],
|
|
12
|
+
"type" : "Blog Post",
|
|
13
|
+
"url" : "https://itnext.io/safari-webkit-just-released-support-for-js-modules-inside-the-worker-scope-b2d29e67178?source=friends_link&sk=dfabc5dd91430f11e2c49dd10b698544"
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"author" : "Tobias Uhlig",
|
|
17
|
+
"authorImage" : "author_TobiasUhlig.jpeg",
|
|
18
|
+
"date" : "Aug 25, 2021",
|
|
6
19
|
"id" : 45,
|
|
7
20
|
"image" : "define-a-web-4.0-app-to-be-multi-threaded.png",
|
|
8
|
-
"name" : "
|
|
21
|
+
"name" : "Tutorial: Create your first app in neo v2",
|
|
9
22
|
"provider" : "Medium",
|
|
10
23
|
"publisher" : "ITNEXT",
|
|
11
24
|
"selectedInto": [],
|
|
@@ -15,7 +28,7 @@
|
|
|
15
28
|
{
|
|
16
29
|
"author" : "Tobias Uhlig",
|
|
17
30
|
"authorImage" : "author_TobiasUhlig.jpeg",
|
|
18
|
-
"date" : "Aug 20,
|
|
31
|
+
"date" : "Aug 20, 2021",
|
|
19
32
|
"id" : 44,
|
|
20
33
|
"image" : "the-best-frontend-development-strategies-in-2022.png",
|
|
21
34
|
"name" : "The best frontend development strategies in 2022",
|
|
@@ -28,7 +41,7 @@
|
|
|
28
41
|
{
|
|
29
42
|
"author" : "Tobias Uhlig",
|
|
30
43
|
"authorImage" : "author_TobiasUhlig.jpeg",
|
|
31
|
-
"date" : "Aug 13,
|
|
44
|
+
"date" : "Aug 13, 2021",
|
|
32
45
|
"id" : 43,
|
|
33
46
|
"image" : "using-material-web-components-within-the-neomjs-application-worker.png",
|
|
34
47
|
"name" : "Using Material Web Components within the neo.mjs application worker",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[
|
|
2
2
|
{
|
|
3
|
-
"browsers" : ["Chrome", "Edge"],
|
|
3
|
+
"browsers" : ["Chrome", "Edge", "Safari"],
|
|
4
4
|
"environments": ["Desktop"],
|
|
5
5
|
"id" : 19,
|
|
6
6
|
"image" : "devmode/model-component-example.png",
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
"url" : "https://neomjs.github.io/pages/node_modules/neo.mjs/examples/model/advanced/index.html"
|
|
10
10
|
},
|
|
11
11
|
{
|
|
12
|
-
"browsers" : ["Chrome", "
|
|
12
|
+
"browsers" : ["Chrome", "Edge"],
|
|
13
13
|
"environments": ["Desktop"],
|
|
14
14
|
"id" : 18,
|
|
15
15
|
"image" : "devmode/sharedcovid.png",
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
"url" : "https://neomjs.github.io/pages/node_modules/neo.mjs/apps/sharedcovid/index.html#mainview=table"
|
|
19
19
|
},
|
|
20
20
|
{
|
|
21
|
-
"browsers" : ["Chrome", "Edge"],
|
|
21
|
+
"browsers" : ["Chrome", "Edge", "Safari"],
|
|
22
22
|
"environments": ["Desktop"],
|
|
23
23
|
"id" : 17,
|
|
24
24
|
"image" : "devmode/calendar-preview.png",
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
"url" : "https://neomjs.github.io/pages/node_modules/neo.mjs/examples/calendar/basic/index.html"
|
|
28
28
|
},
|
|
29
29
|
{
|
|
30
|
-
"browsers" : ["Chrome", "Edge"],
|
|
30
|
+
"browsers" : ["Chrome", "Edge", "Safari"],
|
|
31
31
|
"environments": ["Desktop"],
|
|
32
32
|
"id" : 16,
|
|
33
33
|
"image" : "devmode/covidDashboard.png",
|
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
"url" : "https://neomjs.github.io/pages/node_modules/neo.mjs/apps/shareddialog/index.html"
|
|
46
46
|
},
|
|
47
47
|
{
|
|
48
|
-
"browsers" : ["Chrome", "Edge"],
|
|
48
|
+
"browsers" : ["Chrome", "Edge", "Safari"],
|
|
49
49
|
"environments": ["Desktop"],
|
|
50
50
|
"id" : 14,
|
|
51
51
|
"image" : "devmode/realworldApp.png",
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
"url" : "https://neomjs.github.io/pages/node_modules/neo.mjs/apps/realworld/index.html"
|
|
55
55
|
},
|
|
56
56
|
{
|
|
57
|
-
"browsers" : ["Chrome", "Edge"],
|
|
57
|
+
"browsers" : ["Chrome", "Edge", "Safari"],
|
|
58
58
|
"environments": ["Desktop"],
|
|
59
59
|
"id" : 13,
|
|
60
60
|
"image" : "devmode/coronaGallery.png",
|
|
@@ -63,7 +63,7 @@
|
|
|
63
63
|
"url" : "https://neomjs.github.io/pages/node_modules/neo.mjs/examples/component/coronaGallery/index.html"
|
|
64
64
|
},
|
|
65
65
|
{
|
|
66
|
-
"browsers" : ["Chrome", "Edge"],
|
|
66
|
+
"browsers" : ["Chrome", "Edge", "Safari"],
|
|
67
67
|
"environments": ["Desktop"],
|
|
68
68
|
"id" : 12,
|
|
69
69
|
"image" : "devmode/coronaHelix.png",
|
|
@@ -72,7 +72,7 @@
|
|
|
72
72
|
"url" : "https://neomjs.github.io/pages/node_modules/neo.mjs/examples/component/coronaHelix/index.html"
|
|
73
73
|
},
|
|
74
74
|
{
|
|
75
|
-
"browsers" : ["Chrome", "Edge"],
|
|
75
|
+
"browsers" : ["Chrome", "Edge", "Safari"],
|
|
76
76
|
"environments": ["Desktop"],
|
|
77
77
|
"id" : 11,
|
|
78
78
|
"image" : "devmode/website.png",
|
|
@@ -81,7 +81,7 @@
|
|
|
81
81
|
"url" : "https://neomjs.github.io/pages/node_modules/neo.mjs/apps/website/index.html#mainview=blog"
|
|
82
82
|
},
|
|
83
83
|
{
|
|
84
|
-
"browsers" : ["Chrome", "Edge"],
|
|
84
|
+
"browsers" : ["Chrome", "Edge", "Safari"],
|
|
85
85
|
"environments": ["Desktop"],
|
|
86
86
|
"id" : 10,
|
|
87
87
|
"image" : "devmode/tableFiltering.png",
|
|
@@ -90,7 +90,7 @@
|
|
|
90
90
|
"url" : "https://neomjs.github.io/pages/node_modules/neo.mjs/examples/tableFiltering/"
|
|
91
91
|
},
|
|
92
92
|
{
|
|
93
|
-
"browsers" : ["Chrome", "Edge"],
|
|
93
|
+
"browsers" : ["Chrome", "Edge", "Safari"],
|
|
94
94
|
"environments": ["Desktop"],
|
|
95
95
|
"id" : 9,
|
|
96
96
|
"image" : "devmode/dragdrop.png",
|
|
@@ -99,7 +99,7 @@
|
|
|
99
99
|
"url" : "https://neomjs.github.io/pages/node_modules/neo.mjs/examples/dialog/"
|
|
100
100
|
},
|
|
101
101
|
{
|
|
102
|
-
"browsers" : ["Chrome", "Edge"],
|
|
102
|
+
"browsers" : ["Chrome", "Edge", "Safari"],
|
|
103
103
|
"environments": ["Desktop"],
|
|
104
104
|
"id" : 8,
|
|
105
105
|
"image" : "devmode/realworldApp2.png",
|
|
@@ -108,7 +108,7 @@
|
|
|
108
108
|
"url" : "https://neomjs.github.io/pages/node_modules/neo.mjs/apps/realworld2/index.html#/gallery"
|
|
109
109
|
},
|
|
110
110
|
{
|
|
111
|
-
"browsers" : ["Chrome", "Edge"],
|
|
111
|
+
"browsers" : ["Chrome", "Edge", "Safari"],
|
|
112
112
|
"environments": ["Desktop"],
|
|
113
113
|
"id" : 7,
|
|
114
114
|
"image" : "devmode/dateSelector.png",
|
|
@@ -117,7 +117,7 @@
|
|
|
117
117
|
"url" : "https://neomjs.github.io/pages/node_modules/neo.mjs/examples/component/dateSelector/index.html"
|
|
118
118
|
},
|
|
119
119
|
{
|
|
120
|
-
"browsers" : ["Chrome", "Edge"],
|
|
120
|
+
"browsers" : ["Chrome", "Edge", "Safari"],
|
|
121
121
|
"environments": ["Desktop"],
|
|
122
122
|
"id" : 6,
|
|
123
123
|
"image" : "devmode/gallery.png",
|
|
@@ -126,7 +126,7 @@
|
|
|
126
126
|
"url" : "https://neomjs.github.io/pages/node_modules/neo.mjs/examples/component/gallery/index.html"
|
|
127
127
|
},
|
|
128
128
|
{
|
|
129
|
-
"browsers" : ["Chrome", "Edge"],
|
|
129
|
+
"browsers" : ["Chrome", "Edge", "Safari"],
|
|
130
130
|
"environments": ["Desktop"],
|
|
131
131
|
"id" : 5,
|
|
132
132
|
"image" : "devmode/helix.png",
|
|
@@ -135,7 +135,7 @@
|
|
|
135
135
|
"url" : "https://neomjs.github.io/pages/node_modules/neo.mjs/examples/component/helix/index.html"
|
|
136
136
|
},
|
|
137
137
|
{
|
|
138
|
-
"browsers" : ["Chrome", "Edge"],
|
|
138
|
+
"browsers" : ["Chrome", "Edge", "Safari"],
|
|
139
139
|
"environments": ["Desktop"],
|
|
140
140
|
"id" : 4,
|
|
141
141
|
"image" : "devmode/dateField.png",
|
|
@@ -144,7 +144,7 @@
|
|
|
144
144
|
"url" : "https://neomjs.github.io/pages/node_modules/neo.mjs/examples/form/field/date/index.html"
|
|
145
145
|
},
|
|
146
146
|
{
|
|
147
|
-
"browsers" : ["Chrome", "Edge"],
|
|
147
|
+
"browsers" : ["Chrome", "Edge", "Safari"],
|
|
148
148
|
"environments": ["Desktop"],
|
|
149
149
|
"id" : 3,
|
|
150
150
|
"image" : "devmode/selectField.png",
|
|
@@ -153,7 +153,7 @@
|
|
|
153
153
|
"url" : "https://neomjs.github.io/pages/node_modules/neo.mjs/examples/form/field/select/index.html"
|
|
154
154
|
},
|
|
155
155
|
{
|
|
156
|
-
"browsers" : ["Chrome", "Edge"],
|
|
156
|
+
"browsers" : ["Chrome", "Edge", "Safari"],
|
|
157
157
|
"environments": ["Desktop"],
|
|
158
158
|
"id" : 2,
|
|
159
159
|
"image" : "devmode/tabContainer.png",
|
|
@@ -162,7 +162,7 @@
|
|
|
162
162
|
"url" : "https://neomjs.github.io/pages/node_modules/neo.mjs/examples/tab/container/index.html"
|
|
163
163
|
},
|
|
164
164
|
{
|
|
165
|
-
"browsers" : ["Chrome", "Edge"],
|
|
165
|
+
"browsers" : ["Chrome", "Edge", "Safari"],
|
|
166
166
|
"environments": ["Desktop"],
|
|
167
167
|
"id" : 1,
|
|
168
168
|
"image" : "devmode/siesta.png",
|