neo.mjs 8.31.1 → 8.33.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/.github/LLM_PROMPTS.md +463 -0
- package/README.md +138 -55
- package/apps/ServiceWorker.mjs +2 -2
- package/apps/finance/app.mjs +6 -0
- package/apps/finance/index.html +12 -0
- package/apps/finance/model/Company.mjs +37 -0
- package/apps/finance/neo-config.json +7 -0
- package/apps/finance/resources/data/companies.json +103 -0
- package/apps/finance/resources/images/neo_logo_favicon.svg +16 -0
- package/apps/finance/store/Companies.mjs +37 -0
- package/apps/finance/view/GridContainer.mjs +58 -0
- package/apps/finance/view/Viewport.mjs +43 -0
- package/apps/finance/view/ViewportController.mjs +35 -0
- package/apps/finance/view/ViewportStateProvider.mjs +32 -0
- package/apps/portal/index.html +1 -1
- package/apps/portal/view/home/FooterContainer.mjs +1 -1
- package/apps/portal/view/home/MainContainer.mjs +1 -1
- package/apps/portal/view/home/parts/Colors.mjs +4 -8
- package/apps/portal/view/home/parts/Helix.mjs +5 -1
- package/buildScripts/buildAll.mjs +1 -1
- package/buildScripts/buildThemes.mjs +1 -1
- package/buildScripts/createApp.mjs +1 -1
- package/buildScripts/createAppMinimal.mjs +1 -1
- package/buildScripts/docs/jsdocx.mjs +1 -1
- package/buildScripts/injectPackageVersion.mjs +1 -1
- package/buildScripts/watchThemes.mjs +1 -1
- package/buildScripts/webpack/buildThreads.mjs +1 -1
- package/buildScripts/webpack/development/webpack.config.appworker.mjs +1 -1
- package/buildScripts/webpack/development/webpack.config.main.mjs +1 -1
- package/buildScripts/webpack/development/webpack.config.worker.mjs +1 -1
- package/buildScripts/webpack/production/webpack.config.appworker.mjs +1 -1
- package/buildScripts/webpack/production/webpack.config.main.mjs +1 -1
- package/buildScripts/webpack/production/webpack.config.worker.mjs +1 -1
- package/examples/README.md +5 -14
- package/examples/ServiceWorker.mjs +2 -2
- package/package.json +3 -3
- package/resources/scss/src/grid/plugin/AnimateRows.scss +10 -0
- package/src/DefaultConfig.mjs +2 -2
- package/src/calendar/view/SettingsContainer.mjs +3 -5
- package/src/calendar/view/week/Component.mjs +3 -5
- package/src/component/Base.mjs +3 -6
- package/src/component/Helix.mjs +2 -3
- package/src/component/MagicMoveText.mjs +13 -6
- package/src/controller/Component.mjs +3 -5
- package/src/data/Store.mjs +1 -1
- package/src/dialog/Base.mjs +3 -4
- package/src/grid/Container.mjs +6 -6
- package/src/grid/View.mjs +1 -7
- package/src/grid/column/AnimatedChange.mjs +8 -5
- package/src/grid/column/Base.mjs +6 -2
- package/src/grid/column/Currency.mjs +72 -0
- package/src/grid/column/_export.mjs +2 -1
- package/src/grid/plugin/AnimateRows.mjs +9 -31
- package/src/list/Base.mjs +1 -3
- package/src/list/plugin/Animate.mjs +3 -3
- package/src/main/addon/ServiceWorker.mjs +29 -19
- package/src/manager/Component.mjs +1 -3
- package/src/plugin/Base.mjs +23 -3
- package/src/selection/HelixModel.mjs +3 -6
- package/src/tab/Container.mjs +3 -4
- package/src/table/Container.mjs +6 -7
- package/src/util/Css.mjs +6 -6
- package/src/worker/App.mjs +0 -11
- package/src/worker/Manager.mjs +4 -0
- package/src/worker/ServiceBase.mjs +40 -30
@@ -0,0 +1,32 @@
|
|
1
|
+
import CompanyStore from '../store/Companies.mjs';
|
2
|
+
import StateProvider from '../../../src/state/Provider.mjs';
|
3
|
+
|
4
|
+
/**
|
5
|
+
* @class Finance.view.ViewportStateProvider
|
6
|
+
* @extends Neo.state.Provider
|
7
|
+
*/
|
8
|
+
class ViewportStateProvider extends StateProvider {
|
9
|
+
static config = {
|
10
|
+
/**
|
11
|
+
* @member {String} className='Finance.view.ViewportStateProvider'
|
12
|
+
* @protected
|
13
|
+
*/
|
14
|
+
className: 'Finance.view.ViewportStateProvider',
|
15
|
+
/**
|
16
|
+
* @member {Object} data
|
17
|
+
*/
|
18
|
+
data: {},
|
19
|
+
/**
|
20
|
+
* @member {Object} stores
|
21
|
+
*/
|
22
|
+
stores: {
|
23
|
+
companies: {
|
24
|
+
module : CompanyStore,
|
25
|
+
autoLoad : true,
|
26
|
+
listeners: {load: 'onCompaniesStoreLoad'}
|
27
|
+
}
|
28
|
+
}
|
29
|
+
}
|
30
|
+
}
|
31
|
+
|
32
|
+
export default Neo.setupClass(ViewportStateProvider);
|
package/apps/portal/index.html
CHANGED
@@ -42,18 +42,14 @@ class Colors extends FeatureSection {
|
|
42
42
|
* @member {String} paragraph
|
43
43
|
*/
|
44
44
|
paragraph: [
|
45
|
-
'
|
46
|
-
'
|
47
|
-
'
|
45
|
+
'Click the start button to see the view reflect changes in the data. And the app is multi-window: the table ',
|
46
|
+
'and charts can be undocked into their own windows. In fact, the entire demo can be undocked. ',
|
47
|
+
'All windows share the same data - less traffic and costs.'
|
48
48
|
].join(''),
|
49
49
|
/**
|
50
50
|
* @member {String} subHeadline='Socket Data'
|
51
51
|
*/
|
52
|
-
subHeadline: 'Shared Socket Data'
|
53
|
-
/**
|
54
|
-
* @member {String} textContainerPosition='end'
|
55
|
-
*/
|
56
|
-
textContainerPosition: 'end'
|
52
|
+
subHeadline: 'Shared Socket Data'
|
57
53
|
}
|
58
54
|
}
|
59
55
|
|
@@ -51,7 +51,11 @@ class Helix extends FeatureSection {
|
|
51
51
|
/**
|
52
52
|
* @member {String} subHeadline='40,000 Updates /s'
|
53
53
|
*/
|
54
|
-
subHeadline: '40,000 Updates /s'
|
54
|
+
subHeadline: '40,000 Updates /s',
|
55
|
+
/**
|
56
|
+
* @member {String} textContainerPosition='end'
|
57
|
+
*/
|
58
|
+
textContainerPosition: 'end'
|
55
59
|
}
|
56
60
|
}
|
57
61
|
|
@@ -14,7 +14,7 @@ const __dirname = path.resolve(),
|
|
14
14
|
requireJson = path => JSON.parse(fs.readFileSync((path))),
|
15
15
|
packageJson = requireJson(path.join(__dirname, 'package.json')),
|
16
16
|
program = new Command(),
|
17
|
-
neoPath = path.resolve(packageJson.name
|
17
|
+
neoPath = path.resolve(packageJson.name.includes('neo.mjs') ? './' : './node_modules/neo.mjs/'),
|
18
18
|
webpackPath = path.resolve(neoPath, 'buildScripts/webpack'),
|
19
19
|
programName = `${packageJson.name} buildAll`,
|
20
20
|
questions = [];
|
@@ -14,7 +14,7 @@ const
|
|
14
14
|
cwd = process.cwd(),
|
15
15
|
requireJson = path => JSON.parse(fs.readFileSync((path))),
|
16
16
|
packageJson = requireJson(path.resolve(cwd, 'package.json')),
|
17
|
-
insideNeo = packageJson.name
|
17
|
+
insideNeo = packageJson.name.includes('neo.mjs'),
|
18
18
|
neoPath = path.resolve(insideNeo ? './' : './node_modules/neo.mjs/'),
|
19
19
|
programName = `${packageJson.name} buildThemes`,
|
20
20
|
program = new Command(),
|
@@ -12,7 +12,7 @@ const
|
|
12
12
|
cwd = process.cwd(),
|
13
13
|
requireJson = path => JSON.parse(fs.readFileSync((path))),
|
14
14
|
packageJson = requireJson(path.join(__dirname, 'package.json')),
|
15
|
-
insideNeo = packageJson.name
|
15
|
+
insideNeo = packageJson.name.includes('neo.mjs'),
|
16
16
|
neoPath = insideNeo ? './' : './node_modules/neo.mjs/',
|
17
17
|
addonChoices = fs.readdirSync(path.join(neoPath, '/src/main/addon')).map(item => item.slice(0, -4)),
|
18
18
|
program = new Command(),
|
@@ -11,7 +11,7 @@ const __dirname = path.resolve(),
|
|
11
11
|
cwd = process.cwd(),
|
12
12
|
requireJson = path => JSON.parse(fs.readFileSync((path))),
|
13
13
|
packageJson = requireJson(path.join(__dirname, 'package.json')),
|
14
|
-
insideNeo = packageJson.name
|
14
|
+
insideNeo = packageJson.name.includes('neo.mjs'),
|
15
15
|
neoPath = insideNeo ? './' : './node_modules/neo.mjs/',
|
16
16
|
addonChoices = fs.readdirSync(path.join(neoPath, '/src/main/addon')).map(item => item.slice(0, -4)),
|
17
17
|
program = new Command(),
|
@@ -8,7 +8,7 @@ const __dirname = path.resolve(),
|
|
8
8
|
cwd = process.cwd(),
|
9
9
|
requireJson = path => JSON.parse(fs.readFileSync((path))),
|
10
10
|
packageJson = requireJson(path.resolve(cwd, 'package.json')),
|
11
|
-
insideNeo = packageJson.name
|
11
|
+
insideNeo = packageJson.name.includes('neo.mjs'),
|
12
12
|
neoPath = insideNeo ? '' : 'node_modules/neo.mjs/',
|
13
13
|
appNames = [],
|
14
14
|
options = {
|
@@ -11,7 +11,7 @@ const
|
|
11
11
|
cwd = process.cwd(),
|
12
12
|
requireJson = path => JSON.parse(fs.readFileSync((path))),
|
13
13
|
packageJson = requireJson(path.join(__dirname, 'package.json')),
|
14
|
-
insideNeo = packageJson.name
|
14
|
+
insideNeo = packageJson.name.includes('neo.mjs'),
|
15
15
|
neoPath = insideNeo ? './' : './node_modules/neo.mjs/',
|
16
16
|
programName = `${packageJson.name} inject-package-version`;
|
17
17
|
|
@@ -8,7 +8,7 @@ import * as sass from 'sass';
|
|
8
8
|
let cwd = process.cwd(),
|
9
9
|
requireJson = path => JSON.parse(fs.readFileSync((path))),
|
10
10
|
packageJson = requireJson(path.resolve(cwd, 'package.json')),
|
11
|
-
neoPath = packageJson.name
|
11
|
+
neoPath = packageJson.name.includes('neo.mjs') ? './' : './node_modules/neo.mjs/',
|
12
12
|
mixinPath = path.resolve(neoPath, 'resources/scss/mixins/_all.scss'),
|
13
13
|
scssPath = path.resolve(cwd, 'resources/scss');
|
14
14
|
|
@@ -11,7 +11,7 @@ const __dirname = path.resolve(),
|
|
11
11
|
cpOpts = {env: process.env, cwd: cwd, stdio: 'inherit', shell: true},
|
12
12
|
requireJson = path => JSON.parse(fs.readFileSync((path))),
|
13
13
|
packageJson = requireJson(path.resolve(cwd, 'package.json')),
|
14
|
-
neoPath = packageJson.name
|
14
|
+
neoPath = packageJson.name.includes('neo.mjs') ? './' : './node_modules/neo.mjs/',
|
15
15
|
program = new Command(),
|
16
16
|
webpackPath = path.resolve(neoPath, 'buildScripts/webpack'),
|
17
17
|
programName = `${packageJson.name} buildThreads`,
|
@@ -7,7 +7,7 @@ const cwd = process.cwd(),
|
|
7
7
|
cpOpts = {env: process.env, cwd: cwd, stdio: 'inherit', shell: true},
|
8
8
|
requireJson = path => JSON.parse(fs.readFileSync((path))),
|
9
9
|
packageJson = requireJson(path.resolve(cwd, 'package.json')),
|
10
|
-
neoPath = packageJson.name
|
10
|
+
neoPath = packageJson.name.includes('neo.mjs') ? './' : './node_modules/neo.mjs/',
|
11
11
|
buildTarget = requireJson(path.resolve(neoPath, 'buildScripts/webpack/development/buildTarget.json')),
|
12
12
|
filenameConfig = requireJson(path.resolve(neoPath, 'buildScripts/webpack/json/build.json')),
|
13
13
|
plugins = [],
|
@@ -6,7 +6,7 @@ import WebpackHookPlugin from 'webpack-hook-plugin';
|
|
6
6
|
const cwd = process.cwd(),
|
7
7
|
requireJson = path => JSON.parse(fs.readFileSync((path))),
|
8
8
|
packageJson = requireJson(path.resolve(cwd, 'package.json')),
|
9
|
-
insideNeo = packageJson.name
|
9
|
+
insideNeo = packageJson.name.includes('neo.mjs'),
|
10
10
|
neoPath = insideNeo ? './' : './node_modules/neo.mjs/',
|
11
11
|
buildTarget = requireJson(path.resolve(neoPath, 'buildScripts/webpack/development/buildTarget.json')),
|
12
12
|
filenameConfig = requireJson(path.resolve(neoPath, 'buildScripts/webpack/json/build.json')),
|
@@ -5,7 +5,7 @@ import webpack from 'webpack';
|
|
5
5
|
const cwd = process.cwd(),
|
6
6
|
requireJson = path => JSON.parse(fs.readFileSync((path))),
|
7
7
|
packageJson = requireJson(path.resolve(cwd, 'package.json')),
|
8
|
-
neoPath = packageJson.name
|
8
|
+
neoPath = packageJson.name.includes('neo.mjs') ? './' : './node_modules/neo.mjs/',
|
9
9
|
buildTarget = requireJson(path.resolve(neoPath, 'buildScripts/webpack/development/buildTarget.json')),
|
10
10
|
filenameConfig = requireJson(path.resolve(neoPath, 'buildScripts/webpack/json/build.json')),
|
11
11
|
entry = {};
|
@@ -7,7 +7,7 @@ const cwd = process.cwd(),
|
|
7
7
|
cpOpts = {env: process.env, cwd: cwd, stdio: 'inherit', shell: true},
|
8
8
|
requireJson = path => JSON.parse(fs.readFileSync((path))),
|
9
9
|
packageJson = requireJson(path.resolve(cwd, 'package.json')),
|
10
|
-
neoPath = packageJson.name
|
10
|
+
neoPath = packageJson.name.includes('neo.mjs') ? './' : './node_modules/neo.mjs/',
|
11
11
|
buildTarget = requireJson(path.resolve(neoPath, 'buildScripts/webpack/production/buildTarget.json')),
|
12
12
|
filenameConfig = requireJson(path.resolve(neoPath, 'buildScripts/webpack/json/build.json')),
|
13
13
|
plugins = [],
|
@@ -6,7 +6,7 @@ import WebpackHookPlugin from 'webpack-hook-plugin';
|
|
6
6
|
const cwd = process.cwd(),
|
7
7
|
requireJson = path => JSON.parse(fs.readFileSync((path))),
|
8
8
|
packageJson = requireJson(path.resolve(cwd, 'package.json')),
|
9
|
-
insideNeo = packageJson.name
|
9
|
+
insideNeo = packageJson.name.includes('neo.mjs'),
|
10
10
|
neoPath = insideNeo ? './' : './node_modules/neo.mjs/',
|
11
11
|
buildTarget = requireJson(path.resolve(neoPath, 'buildScripts/webpack/production/buildTarget.json')),
|
12
12
|
filenameConfig = requireJson(path.resolve(neoPath, 'buildScripts/webpack/json/build.json')),
|
@@ -5,7 +5,7 @@ import webpack from 'webpack';
|
|
5
5
|
const cwd = process.cwd(),
|
6
6
|
requireJson = path => JSON.parse(fs.readFileSync((path))),
|
7
7
|
packageJson = requireJson(path.resolve(cwd, 'package.json')),
|
8
|
-
neoPath = packageJson.name
|
8
|
+
neoPath = packageJson.name.includes('neo.mjs') ? './' : './node_modules/neo.mjs/',
|
9
9
|
buildTarget = requireJson(path.resolve(neoPath, 'buildScripts/webpack/production/buildTarget.json')),
|
10
10
|
filenameConfig = requireJson(path.resolve(neoPath, 'buildScripts/webpack/json/build.json')),
|
11
11
|
entry = {};
|
package/examples/README.md
CHANGED
@@ -1,17 +1,8 @@
|
|
1
1
|
# Client Requirements
|
2
2
|
|
3
|
-
Running the examples locally
|
4
|
-
|
5
|
-
other browsers are not there yet (see sticky <a href="https://github.com/neomjs/neo/issues">issues</a>)
|
3
|
+
Running the examples locally works fine in all environments inside all major browsers at this point:
|
4
|
+
Chromium, Safari & Firefox
|
6
5
|
|
7
|
-
- localhost/neo/examples/component/helix/
|
8
|
-
|
9
|
-
More details on JS Modules (and their use within workers) here:
|
10
|
-
https://v8.dev/features/modules
|
11
|
-
|
12
|
-
Without the Chrome flag (or for other browsers like Firefox or Safari), you can run the examples using the webpack build
|
13
|
-
version (which converts JS modules into plain JS files)
|
14
|
-
- localhost/neo/dist/development/examples/component/helix/
|
15
6
|
|
16
7
|
# Local Web-Server Requirements
|
17
8
|
|
@@ -19,13 +10,14 @@ Why do I need a local web-server?
|
|
19
10
|
|
20
11
|
In short: it is possible to run the framework without a local web-server, but this would be a huge security issue.
|
21
12
|
You can start Chrome using a flag (--allow-file-access-from-files), but this will allow the browser to access any
|
22
|
-
file on your hard drive. To avoid this, a local web-server
|
13
|
+
file on your hard drive. To avoid this, a local web-server is the way to go.
|
23
14
|
|
24
15
|
**Webpack Dev Server**
|
25
16
|
`npm run server-start`
|
26
17
|
|
27
18
|
**All Servers**
|
28
|
-
Ensure your server has a mime-type configured for Javascript Modules (.mjs) files. This should be set to the same as
|
19
|
+
Ensure your server has a mime-type configured for Javascript Modules (.mjs) files. This should be set to the same as
|
20
|
+
normal javascript (.js) files, normally 'application/-javascript'.
|
29
21
|
|
30
22
|
**JetBrains IDE**
|
31
23
|
- Go to Preferences -> Build, Execution, Deployment -> Debugger
|
@@ -33,4 +25,3 @@ Ensure your server has a mime-type configured for Javascript Modules (.mjs) file
|
|
33
25
|
|
34
26
|
<br><br>
|
35
27
|
Copyright (c) 2015 - today, <a href="https://www.linkedin.com/in/tobiasuhlig/">Tobias Uhlig</a>
|
36
|
-
& <a href="https://www.linkedin.com/in/richwaters/">Rich Waters</a>
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "neo.mjs",
|
3
|
-
"version": "8.
|
3
|
+
"version": "8.33.0",
|
4
4
|
"description": "The webworkers driven UI framework",
|
5
5
|
"type": "module",
|
6
6
|
"repository": {
|
@@ -56,13 +56,13 @@
|
|
56
56
|
"envinfo": "^7.14.0",
|
57
57
|
"fs-extra": "^11.3.0",
|
58
58
|
"highlightjs-line-numbers.js": "^2.9.0",
|
59
|
-
"inquirer": "^12.
|
59
|
+
"inquirer": "^12.5.0",
|
60
60
|
"marked": "^15.0.7",
|
61
61
|
"monaco-editor": "0.50.0",
|
62
62
|
"neo-jsdoc": "1.0.1",
|
63
63
|
"neo-jsdoc-x": "1.0.5",
|
64
64
|
"postcss": "^8.5.3",
|
65
|
-
"sass": "^1.
|
65
|
+
"sass": "^1.86.0",
|
66
66
|
"siesta-lite": "5.5.2",
|
67
67
|
"url": "^0.11.4",
|
68
68
|
"webpack": "^5.98.0",
|
package/src/DefaultConfig.mjs
CHANGED
@@ -263,12 +263,12 @@ const DefaultConfig = {
|
|
263
263
|
useVdomWorker: true,
|
264
264
|
/**
|
265
265
|
* buildScripts/injectPackageVersion.mjs will update this value
|
266
|
-
* @default '8.
|
266
|
+
* @default '8.33.0'
|
267
267
|
* @memberOf! module:Neo
|
268
268
|
* @name config.version
|
269
269
|
* @type String
|
270
270
|
*/
|
271
|
-
version: '8.
|
271
|
+
version: '8.33.0'
|
272
272
|
};
|
273
273
|
|
274
274
|
Object.assign(DefaultConfig, {
|
@@ -159,16 +159,14 @@ class SettingsContainer extends Container {
|
|
159
159
|
onCardIndexChange(data) {
|
160
160
|
let me = this,
|
161
161
|
container = data.item,
|
162
|
-
mainContainer = me.getMainContainer()
|
163
|
-
listenerId;
|
162
|
+
mainContainer = me.getMainContainer();
|
164
163
|
|
165
164
|
if (mainContainer) {
|
166
165
|
if (Neo.isFunction(container.createContent) && container.items.length < 1) {
|
167
166
|
if (Neo.typeOf(mainContainer[`${container.flag}Component`]) !== 'NeoInstance') {
|
168
|
-
|
169
|
-
mainContainer.un('cardLoaded', listenerId);
|
167
|
+
mainContainer.on('cardLoaded', () => {
|
170
168
|
me.timeout(30).then(() => {container.createContent()})
|
171
|
-
})
|
169
|
+
}, me, {once: true})
|
172
170
|
} else {
|
173
171
|
me.timeout(30).then(() => {container.createContent()})
|
174
172
|
}
|
@@ -359,21 +359,19 @@ class Component extends BaseComponent {
|
|
359
359
|
import('./plugin/DragDrop.mjs'),
|
360
360
|
import('./plugin/EventResizable.mjs')
|
361
361
|
]).then(modules => {
|
362
|
-
let me
|
363
|
-
{appName
|
364
|
-
plugins
|
362
|
+
let me = this,
|
363
|
+
{appName} = me,
|
364
|
+
plugins = me.plugins || [];
|
365
365
|
|
366
366
|
plugins.push({
|
367
367
|
module : modules[0].default,
|
368
368
|
appName,
|
369
|
-
windowId,
|
370
369
|
...me.pluginDragDropConfig
|
371
370
|
}, {
|
372
371
|
module : modules[1].default,
|
373
372
|
appName,
|
374
373
|
delegationCls: 'neo-event',
|
375
374
|
directions : ['b', 't'],
|
376
|
-
windowId,
|
377
375
|
...me.pluginEventResizableConfig
|
378
376
|
});
|
379
377
|
|
package/src/component/Base.mjs
CHANGED
@@ -2662,8 +2662,7 @@ class Component extends Base {
|
|
2662
2662
|
*/
|
2663
2663
|
updateVdom(resolve, reject) {
|
2664
2664
|
let me = this,
|
2665
|
-
{app, mounted, parentId, vnode} = me
|
2666
|
-
listenerId;
|
2665
|
+
{app, mounted, parentId, vnode} = me;
|
2667
2666
|
|
2668
2667
|
if (me.isVdomUpdating || me.silentVdomUpdate) {
|
2669
2668
|
resolve && me.resolveUpdateCache.push(resolve);
|
@@ -2672,13 +2671,11 @@ class Component extends Base {
|
|
2672
2671
|
if (!mounted && me.isConstructed && !me.hasRenderingListener && app?.rendering === true) {
|
2673
2672
|
me.hasRenderingListener = true;
|
2674
2673
|
|
2675
|
-
|
2676
|
-
app.un('mounted', listenerId);
|
2677
|
-
|
2674
|
+
app.on('mounted', () => {
|
2678
2675
|
me.timeout(50).then(() => {
|
2679
2676
|
me.vnode && me.updateVdom(resolve, reject)
|
2680
2677
|
})
|
2681
|
-
})
|
2678
|
+
}, me, {once: true})
|
2682
2679
|
} else {
|
2683
2680
|
if (resolve && (!mounted || !vnode)) {
|
2684
2681
|
me.resolveUpdateCache.push(resolve)
|
package/src/component/Helix.mjs
CHANGED
@@ -546,12 +546,11 @@ class Helix extends Component {
|
|
546
546
|
angle, item, matrixItems, transformStyle, vdomItem, c, s, x, y, z;
|
547
547
|
|
548
548
|
if (!me.mounted) {
|
549
|
-
|
550
|
-
me.un('mounted', listenerId);
|
549
|
+
me.on('mounted', () => {
|
551
550
|
me.timeout(100).then(() => {
|
552
551
|
me.createItems(startIndex)
|
553
552
|
})
|
554
|
-
})
|
553
|
+
}, me, {once: true})
|
555
554
|
} else {
|
556
555
|
for (; i < len; i++) {
|
557
556
|
item = me.store.items[i];
|
@@ -219,14 +219,21 @@ class MagicMoveText extends Component {
|
|
219
219
|
|
220
220
|
let me = this;
|
221
221
|
|
222
|
-
|
223
|
-
me.
|
224
|
-
|
222
|
+
if (value) {
|
223
|
+
me.getDomRect().then(rect => {
|
224
|
+
me.contentHeight = rect.height;
|
225
|
+
me.contentWidth = rect.width;
|
226
|
+
})
|
227
|
+
} else {
|
228
|
+
me.measureCache = {};
|
229
|
+
me.previousChars = []
|
230
|
+
}
|
225
231
|
|
226
|
-
|
227
|
-
|
232
|
+
if(oldValue !== undefined) {
|
233
|
+
me.addResizeObserver(value);
|
228
234
|
|
229
|
-
|
235
|
+
me.autoCycle && me.startAutoCycle(value)
|
236
|
+
}
|
230
237
|
}
|
231
238
|
|
232
239
|
/**
|
@@ -45,18 +45,16 @@ class Component extends Base {
|
|
45
45
|
super.construct(config);
|
46
46
|
|
47
47
|
let me = this,
|
48
|
-
{component} = me
|
49
|
-
listenerId;
|
48
|
+
{component} = me;
|
50
49
|
|
51
50
|
me.references = {};
|
52
51
|
|
53
52
|
if (component.isConstructed) {
|
54
53
|
me.onComponentConstructed()
|
55
54
|
} else {
|
56
|
-
|
57
|
-
component.un('constructed', listenerId);
|
55
|
+
component.on('constructed', () => {
|
58
56
|
me.onComponentConstructed()
|
59
|
-
})
|
57
|
+
}, me, {once: true})
|
60
58
|
}
|
61
59
|
}
|
62
60
|
|
package/src/data/Store.mjs
CHANGED
@@ -430,7 +430,7 @@ class Store extends Base {
|
|
430
430
|
|
431
431
|
// Being constructed does not mean that related afterSetStore() methods got executed
|
432
432
|
// => break the sync flow to ensure potential listeners got applied
|
433
|
-
|
433
|
+
me.timeout(1).then(() => {
|
434
434
|
if (me.getCount() > 0) {
|
435
435
|
me.fire('load', me.items)
|
436
436
|
} else if (me.autoLoad) {
|
package/src/dialog/Base.mjs
CHANGED
@@ -286,15 +286,14 @@ class Dialog extends Panel {
|
|
286
286
|
afterSetResizable(value, oldValue) {
|
287
287
|
if (value && !this.getPlugin('resizable')) {
|
288
288
|
import('../plugin/Resizable.mjs').then(module => {
|
289
|
-
let me
|
290
|
-
{appName
|
291
|
-
plugins
|
289
|
+
let me = this,
|
290
|
+
{appName} = me,
|
291
|
+
plugins = me.plugins || [];
|
292
292
|
|
293
293
|
plugins.push({
|
294
294
|
module : module.default,
|
295
295
|
appName,
|
296
296
|
delegationCls: 'neo-dialog',
|
297
|
-
windowId,
|
298
297
|
...me.resizablePluginConfig
|
299
298
|
});
|
300
299
|
|
package/src/grid/Container.mjs
CHANGED
@@ -22,6 +22,7 @@ class GridContainer extends BaseContainer {
|
|
22
22
|
animatedChange: column.AnimatedChange,
|
23
23
|
column : column.Base,
|
24
24
|
component : column.Component,
|
25
|
+
currency : column.Currency,
|
25
26
|
index : column.Index,
|
26
27
|
progress : column.Progress
|
27
28
|
}
|
@@ -232,14 +233,13 @@ class GridContainer extends BaseContainer {
|
|
232
233
|
afterSetCellEditing(value, oldValue) {
|
233
234
|
if (value) {
|
234
235
|
import('./plugin/CellEditing.mjs').then(module => {
|
235
|
-
let me
|
236
|
-
{appName
|
237
|
-
plugins
|
236
|
+
let me = this,
|
237
|
+
{appName} = me,
|
238
|
+
plugins = me.plugins || [];
|
238
239
|
|
239
240
|
plugins.push({
|
240
|
-
module
|
241
|
-
appName
|
242
|
-
windowId
|
241
|
+
module: module.default,
|
242
|
+
appName
|
243
243
|
});
|
244
244
|
|
245
245
|
me.plugins = plugins
|
package/src/grid/View.mjs
CHANGED
@@ -226,9 +226,7 @@ class GridView extends Component {
|
|
226
226
|
plugins = me.plugins || [];
|
227
227
|
|
228
228
|
plugins.push({
|
229
|
-
module
|
230
|
-
appName : me.appName,
|
231
|
-
windowId: me.windowId,
|
229
|
+
module: module.default,
|
232
230
|
...me.pluginAnimateRowsConfig
|
233
231
|
});
|
234
232
|
|
@@ -436,10 +434,6 @@ class GridView extends Component {
|
|
436
434
|
fieldValue = record[dataField],
|
437
435
|
cellConfig, rendererOutput;
|
438
436
|
|
439
|
-
if (fieldValue === null || fieldValue === undefined) {
|
440
|
-
fieldValue = ''
|
441
|
-
}
|
442
|
-
|
443
437
|
rendererOutput = column.renderer.call(column.rendererScope || column, {
|
444
438
|
column,
|
445
439
|
columnIndex,
|
@@ -66,12 +66,15 @@ class AnimatedChange extends Column {
|
|
66
66
|
cellId = view.getCellId(record, me.dataField);
|
67
67
|
node = VdomUtil.find(view.vdom, cellId)?.vdom;
|
68
68
|
|
69
|
-
|
69
|
+
if (node) {
|
70
|
+
NeoArray.add(node.cls, me.getAnimationCls(record));
|
71
|
+
|
72
|
+
// This will trigger a 2nd view update, after grid.View: onStoreRecordChange()
|
73
|
+
// It is crucial to restart the keyframe based animation
|
74
|
+
// => The previous update call will remove the last animationCls
|
75
|
+
view.update()
|
76
|
+
}
|
70
77
|
|
71
|
-
// This will trigger a 2nd view update, after grid.View: onStoreRecordChange()
|
72
|
-
// It is crucial to restart the keyframe based animation
|
73
|
-
// => The previous update call will remove the last animationCls
|
74
|
-
view.update();
|
75
78
|
break
|
76
79
|
}
|
77
80
|
}
|
package/src/grid/column/Base.mjs
CHANGED
@@ -73,8 +73,12 @@ class Column extends Base {
|
|
73
73
|
* @param {Number|String} data.value
|
74
74
|
* @returns {*}
|
75
75
|
*/
|
76
|
-
cellRenderer(
|
77
|
-
|
76
|
+
cellRenderer({value}) {
|
77
|
+
if (value === null || value === undefined) {
|
78
|
+
return ''
|
79
|
+
}
|
80
|
+
|
81
|
+
return value
|
78
82
|
}
|
79
83
|
}
|
80
84
|
|