neo.mjs 10.2.1 → 10.3.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/CONCEPT.md +2 -4
- package/.github/GETTING_STARTED.md +72 -51
- package/.github/RELEASE_NOTES/v10.3.0.md +54 -0
- package/.github/epic-string-based-templates.md +690 -0
- package/ServiceWorker.mjs +2 -2
- package/apps/covid/view/MainContainer.mjs +1 -1
- package/apps/covid/view/country/Table.mjs +1 -1
- package/apps/portal/index.html +1 -1
- package/apps/portal/view/home/FooterContainer.mjs +1 -1
- package/apps/portal/view/learn/ContentComponent.mjs +1 -1
- package/apps/realworld/api/Base.mjs +2 -2
- package/apps/sharedcovid/view/MainContainer.mjs +1 -1
- package/apps/sharedcovid/view/MainContainerController.mjs +1 -1
- package/buildScripts/buildESModules.mjs +23 -75
- package/buildScripts/bundleParse5.mjs +27 -0
- package/buildScripts/util/astTemplateProcessor.mjs +210 -0
- package/buildScripts/util/templateBuildProcessor.mjs +331 -0
- package/buildScripts/util/vdomToString.mjs +46 -0
- package/buildScripts/webpack/development/webpack.config.appworker.mjs +11 -0
- package/buildScripts/webpack/loader/template-loader.mjs +21 -0
- package/buildScripts/webpack/production/webpack.config.appworker.mjs +11 -0
- package/examples/README.md +1 -1
- package/examples/component/wrapper/googleMaps/MarkerDialog.mjs +2 -2
- package/examples/form/field/email/MainContainer.mjs +0 -1
- package/examples/form/field/number/MainContainer.mjs +0 -1
- package/examples/form/field/picker/MainContainer.mjs +0 -1
- package/examples/form/field/time/MainContainer.mjs +0 -1
- package/examples/form/field/trigger/copyToClipboard/MainContainer.mjs +0 -1
- package/examples/form/field/url/MainContainer.mjs +0 -1
- package/examples/functional/nestedTemplateComponent/Component.mjs +100 -0
- package/examples/functional/nestedTemplateComponent/MainContainer.mjs +48 -0
- package/examples/functional/nestedTemplateComponent/app.mjs +6 -0
- package/examples/functional/nestedTemplateComponent/index.html +11 -0
- package/examples/functional/nestedTemplateComponent/neo-config.json +6 -0
- package/examples/functional/templateComponent/Component.mjs +61 -0
- package/examples/functional/templateComponent/MainContainer.mjs +48 -0
- package/examples/functional/templateComponent/app.mjs +6 -0
- package/examples/functional/templateComponent/index.html +11 -0
- package/examples/functional/templateComponent/neo-config.json +6 -0
- package/learn/gettingstarted/Setup.md +29 -12
- package/learn/guides/fundamentals/ApplicationBootstrap.md +2 -2
- package/learn/guides/fundamentals/InstanceLifecycle.md +5 -5
- package/learn/guides/uibuildingblocks/HtmlTemplates.md +191 -0
- package/learn/guides/uibuildingblocks/HtmlTemplatesUnderTheHood.md +156 -0
- package/learn/guides/uibuildingblocks/WorkingWithVDom.md +1 -1
- package/learn/tree.json +2 -0
- package/package.json +62 -56
- package/src/DefaultConfig.mjs +3 -3
- package/src/calendar/view/calendars/List.mjs +1 -1
- package/src/calendar/view/month/Component.mjs +1 -1
- package/src/calendar/view/week/Component.mjs +1 -1
- package/src/component/Abstract.mjs +1 -1
- package/src/component/Base.mjs +33 -27
- package/src/container/Base.mjs +5 -5
- package/src/controller/Application.mjs +5 -5
- package/src/dialog/Base.mjs +6 -6
- package/src/draggable/DragProxyComponent.mjs +4 -4
- package/src/form/field/ComboBox.mjs +1 -1
- package/src/functional/_export.mjs +2 -1
- package/src/functional/component/Base.mjs +142 -93
- package/src/functional/util/HtmlTemplateProcessor.mjs +243 -0
- package/src/functional/util/html.mjs +24 -67
- package/src/list/Base.mjs +2 -2
- package/src/manager/Toast.mjs +1 -1
- package/src/menu/List.mjs +1 -1
- package/src/mixin/VdomLifecycle.mjs +87 -90
- package/src/tab/Container.mjs +2 -2
- package/src/tooltip/Base.mjs +1 -1
- package/src/tree/Accordion.mjs +2 -2
- package/src/worker/App.mjs +7 -7
- package/test/components/files/component/Base.mjs +1 -1
- package/test/siesta/siesta.js +2 -0
- package/test/siesta/tests/classic/Button.mjs +5 -5
- package/test/siesta/tests/functional/Button.mjs +6 -6
- package/test/siesta/tests/functional/HtmlTemplateComponent.mjs +193 -33
- package/test/siesta/tests/functional/Parse5Processor.mjs +82 -0
- package/test/siesta/tests/vdom/VdomRealWorldUpdates.mjs +5 -5
- package/.github/epic-functional-components.md +0 -498
- package/.github/ticket-asymmetric-vdom-updates.md +0 -122
package/package.json
CHANGED
@@ -1,36 +1,38 @@
|
|
1
1
|
{
|
2
|
-
"name"
|
3
|
-
"version"
|
4
|
-
"description"
|
5
|
-
"type"
|
6
|
-
"repository"
|
2
|
+
"name": "neo.mjs",
|
3
|
+
"version": "10.3.0",
|
4
|
+
"description": "Neo.mjs: The multi-threaded UI framework for building ultra-fast, desktop-like web applications with uncompromised responsiveness, inherent security, and a transpilation-free dev mode.",
|
5
|
+
"type": "module",
|
6
|
+
"repository": {
|
7
7
|
"type": "git",
|
8
|
-
"url"
|
8
|
+
"url": "https://github.com/neomjs/neo.git"
|
9
9
|
},
|
10
|
-
"bin"
|
10
|
+
"bin": {
|
11
11
|
"neo-cc": "./buildScripts/createClass.mjs"
|
12
12
|
},
|
13
|
-
"scripts"
|
14
|
-
"add-config"
|
15
|
-
"add-reactive-tags"
|
16
|
-
"build-all"
|
17
|
-
"build-all-questions"
|
18
|
-
"build-
|
19
|
-
"build-themes"
|
20
|
-
"build-threads"
|
21
|
-
"
|
22
|
-
"
|
23
|
-
"
|
24
|
-
"create-app
|
25
|
-
"create-
|
26
|
-
"create-
|
27
|
-
"
|
13
|
+
"scripts": {
|
14
|
+
"add-config": "node ./buildScripts/addConfig.mjs",
|
15
|
+
"add-reactive-tags": "node ./buildScripts/addReactiveTags.mjs",
|
16
|
+
"build-all": "node ./buildScripts/buildAll.mjs -f -n",
|
17
|
+
"build-all-questions": "node ./buildScripts/buildAll.mjs -f",
|
18
|
+
"build-dist-esm": "node ./buildScripts/buildESModules.mjs",
|
19
|
+
"build-themes": "node ./buildScripts/buildThemes.mjs -f",
|
20
|
+
"build-threads": "node ./buildScripts/webpack/buildThreads.mjs -f",
|
21
|
+
"bundle-parse5": "node ./buildScripts/bundleParse5.mjs",
|
22
|
+
"check-reactive-tags": "node ./buildScripts/checkReactiveTags.mjs",
|
23
|
+
"convert-design-tokens": "node ./buildScripts/convertDesignTokens.mjs",
|
24
|
+
"create-app": "node ./buildScripts/createApp.mjs",
|
25
|
+
"create-app-minimal": "node ./buildScripts/createAppMinimal.mjs",
|
26
|
+
"create-class": "node ./buildScripts/createClass.mjs",
|
27
|
+
"create-component": "node ./buildScripts/createComponent.mjs",
|
28
|
+
"generate-docs-json": "node ./buildScripts/docs/jsdocx.mjs",
|
28
29
|
"inject-package-version": "node ./buildScripts/injectPackageVersion.mjs",
|
29
|
-
"server-start"
|
30
|
-
"test"
|
31
|
-
"
|
30
|
+
"server-start": "webpack serve -c ./buildScripts/webpack/webpack.server.config.mjs --open",
|
31
|
+
"test": "echo \"Error: no test specified\" && exit 1",
|
32
|
+
"build-single-file": "node ./buildScripts/buildSingleFile.mjs",
|
33
|
+
"watch-themes": "node ./buildScripts/watchThemes.mjs"
|
32
34
|
},
|
33
|
-
"keywords"
|
35
|
+
"keywords": [
|
34
36
|
"javascript",
|
35
37
|
"frontend",
|
36
38
|
"framework",
|
@@ -71,41 +73,45 @@
|
|
71
73
|
"progressive-web-app",
|
72
74
|
"predictive-caching"
|
73
75
|
],
|
74
|
-
"author"
|
75
|
-
"license"
|
76
|
-
"bugs"
|
76
|
+
"author": "Tobias Uhlig",
|
77
|
+
"license": "MIT",
|
78
|
+
"bugs": {
|
77
79
|
"url": "https://github.com/neomjs/neo/issues"
|
78
80
|
},
|
79
|
-
"homepage"
|
81
|
+
"homepage": "https://neomjs.com/",
|
80
82
|
"devDependencies": {
|
81
83
|
"@fortawesome/fontawesome-free": "^7.0.0",
|
82
|
-
"
|
83
|
-
"
|
84
|
-
"
|
85
|
-
"
|
86
|
-
"
|
87
|
-
"
|
88
|
-
"
|
89
|
-
"
|
90
|
-
"
|
91
|
-
"
|
92
|
-
"
|
93
|
-
"
|
94
|
-
"
|
95
|
-
"
|
96
|
-
"
|
97
|
-
"
|
98
|
-
"
|
99
|
-
"
|
100
|
-
"
|
101
|
-
"
|
102
|
-
"
|
103
|
-
"
|
104
|
-
"
|
105
|
-
"webpack
|
84
|
+
"acorn": "^8.15.0",
|
85
|
+
"astring": "^1.9.0",
|
86
|
+
"autoprefixer": "^10.4.21",
|
87
|
+
"chalk": "^5.4.1",
|
88
|
+
"clean-webpack-plugin": "^4.0.0",
|
89
|
+
"commander": "^14.0.0",
|
90
|
+
"cssnano": "^7.1.0",
|
91
|
+
"envinfo": "^7.14.0",
|
92
|
+
"esbuild": "^0.25.8",
|
93
|
+
"fs-extra": "^11.3.0",
|
94
|
+
"highlightjs-line-numbers.js": "^2.9.0",
|
95
|
+
"html-minifier-terser": "^7.2.0",
|
96
|
+
"inquirer": "^12.9.0",
|
97
|
+
"marked": "^16.1.1",
|
98
|
+
"monaco-editor": "0.50.0",
|
99
|
+
"neo-jsdoc": "1.0.1",
|
100
|
+
"neo-jsdoc-x": "1.0.5",
|
101
|
+
"parse5": "^8.0.0",
|
102
|
+
"postcss": "^8.5.6",
|
103
|
+
"sass": "^1.89.2",
|
104
|
+
"siesta-lite": "5.5.2",
|
105
|
+
"terser": "^5.43.1",
|
106
|
+
"url": "^0.11.4",
|
107
|
+
"webpack": "^5.101.0",
|
108
|
+
"webpack-cli": "^6.0.1",
|
109
|
+
"webpack-dev-server": "^5.2.2",
|
110
|
+
"webpack-hook-plugin": "^1.0.7",
|
111
|
+
"webpack-node-externals": "^3.0.0"
|
106
112
|
},
|
107
|
-
"funding"
|
113
|
+
"funding": {
|
108
114
|
"type": "GitHub Sponsors",
|
109
|
-
"url"
|
115
|
+
"url": "https://github.com/sponsors/tobiu"
|
110
116
|
}
|
111
117
|
}
|
package/src/DefaultConfig.mjs
CHANGED
@@ -194,7 +194,7 @@ const DefaultConfig = {
|
|
194
194
|
unitTestMode: false,
|
195
195
|
/**
|
196
196
|
* When unitTestMode is true, this flag can be enabled to allow VDOM-related
|
197
|
-
* operations like
|
197
|
+
* operations like initVnode() and update() to proceed. This is useful for integration-style
|
198
198
|
* tests that need to verify component lifecycle and DOM output.
|
199
199
|
* @default false
|
200
200
|
* @memberOf! module:Neo
|
@@ -299,12 +299,12 @@ const DefaultConfig = {
|
|
299
299
|
useVdomWorker: true,
|
300
300
|
/**
|
301
301
|
* buildScripts/injectPackageVersion.mjs will update this value
|
302
|
-
* @default '10.
|
302
|
+
* @default '10.3.0'
|
303
303
|
* @memberOf! module:Neo
|
304
304
|
* @name config.version
|
305
305
|
* @type String
|
306
306
|
*/
|
307
|
-
version: '10.
|
307
|
+
version: '10.3.0'
|
308
308
|
};
|
309
309
|
|
310
310
|
Object.assign(DefaultConfig, {
|
@@ -704,7 +704,7 @@ class Component extends BaseComponent {
|
|
704
704
|
|
705
705
|
Object.assign(style, {left: `${eventNode.rect.width + 15}px`, top: eventVdom.style.top});
|
706
706
|
editEventContainer.setSilent({parentId: path[1].id, record, style});
|
707
|
-
editEventContainer.
|
707
|
+
editEventContainer.initVnode(true)
|
708
708
|
}
|
709
709
|
}
|
710
710
|
|
@@ -71,7 +71,7 @@ class Abstract extends Base {
|
|
71
71
|
*/
|
72
72
|
modelData: null,
|
73
73
|
/**
|
74
|
-
* True after the component
|
74
|
+
* True after the component initVnode() method was called. Also fires the rendered event.
|
75
75
|
* @member {Boolean} mounted_=false
|
76
76
|
* @protected
|
77
77
|
* @reactive
|
package/src/component/Base.mjs
CHANGED
@@ -88,7 +88,7 @@ class Component extends Abstract {
|
|
88
88
|
*/
|
89
89
|
dropZoneConfig: null,
|
90
90
|
/**
|
91
|
-
* True to
|
91
|
+
* True to mount this component into the viewport outside of the document flow
|
92
92
|
* @member {Boolean} floating
|
93
93
|
*/
|
94
94
|
floating: false,
|
@@ -253,6 +253,12 @@ class Component extends Abstract {
|
|
253
253
|
* @reactive
|
254
254
|
*/
|
255
255
|
ui_: null,
|
256
|
+
/**
|
257
|
+
* True after the component initVnode() method was called. Also fires the vnodeInitialized event.
|
258
|
+
* @member {Boolean} vnodeInitialized=false
|
259
|
+
* @protected
|
260
|
+
*/
|
261
|
+
vnodeInitialized: false,
|
256
262
|
/**
|
257
263
|
* Shortcut for style.width, defaults to px
|
258
264
|
* @member {Number|String|null} width_=null
|
@@ -288,24 +294,6 @@ class Component extends Abstract {
|
|
288
294
|
return this.mounted && !this.hidden && (!this.parent || this.parent.isVisible);
|
289
295
|
}
|
290
296
|
|
291
|
-
/**
|
292
|
-
* True after the component render() method was called. Also fires the rendered event.
|
293
|
-
* @member {Boolean} rendered=false
|
294
|
-
* @protected
|
295
|
-
*/
|
296
|
-
get rendered() {
|
297
|
-
return this._rendered || false
|
298
|
-
}
|
299
|
-
set rendered(value) {
|
300
|
-
let me = this;
|
301
|
-
|
302
|
-
me._rendered = value;
|
303
|
-
|
304
|
-
if (value === true) {
|
305
|
-
me.fire('rendered', me.id)
|
306
|
-
}
|
307
|
-
}
|
308
|
-
|
309
297
|
/**
|
310
298
|
* The setter will handle vdom updates automatically
|
311
299
|
* @member {Object} vdom=this._vdom
|
@@ -317,6 +305,24 @@ class Component extends Abstract {
|
|
317
305
|
this.afterSetVdom(value, value)
|
318
306
|
}
|
319
307
|
|
308
|
+
/**
|
309
|
+
* True after the component vnodeInitialized() method was called. Also fires the vnodeInitialized event.
|
310
|
+
* @member {Boolean} vnodeInitialized=false
|
311
|
+
* @protected
|
312
|
+
*/
|
313
|
+
get vnodeInitialized() {
|
314
|
+
return this._vnodeInitialized || false
|
315
|
+
}
|
316
|
+
set vnodeInitialized(value) {
|
317
|
+
let me = this;
|
318
|
+
|
319
|
+
me._vnodeInitialized = value;
|
320
|
+
|
321
|
+
if (value === true) {
|
322
|
+
me.fire('vnodeInitialized', me.id)
|
323
|
+
}
|
324
|
+
}
|
325
|
+
|
320
326
|
/**
|
321
327
|
* Add a new cls to the vdomRoot
|
322
328
|
* @param {String} value
|
@@ -1365,7 +1371,7 @@ class Component extends Abstract {
|
|
1365
1371
|
*
|
1366
1372
|
*/
|
1367
1373
|
init() {
|
1368
|
-
this.
|
1374
|
+
this.autoInitVnode && this.initVnode()
|
1369
1375
|
}
|
1370
1376
|
|
1371
1377
|
/**
|
@@ -1426,21 +1432,21 @@ class Component extends Abstract {
|
|
1426
1432
|
}
|
1427
1433
|
|
1428
1434
|
/**
|
1429
|
-
* Can get called after the component got
|
1435
|
+
* Can get called after the component got vnodeInitialized. See the autoMount config as well.
|
1430
1436
|
*/
|
1431
1437
|
async mount() {
|
1432
1438
|
let me = this,
|
1433
1439
|
child, childIds;
|
1434
1440
|
|
1435
1441
|
if (!me.vnode) {
|
1436
|
-
throw new Error('Component vnode must be generated before mounting, use Component.
|
1442
|
+
throw new Error('Component vnode must be generated before mounting, use Component.initVnode()');
|
1437
1443
|
}
|
1438
1444
|
|
1439
1445
|
// In case the component was already mounted, got unmounted and received vdom changes afterwards,
|
1440
|
-
// a new
|
1446
|
+
// a new initVnode() call is mandatory since delta updates could not get applied.
|
1441
1447
|
// We need to clear the hasUnmountedVdomChanges state for all child components
|
1442
1448
|
if (me.hasUnmountedVdomChanges) {
|
1443
|
-
// todo: the hasUnmountedVdomChanges flag changes should happen on
|
1449
|
+
// todo: the hasUnmountedVdomChanges flag changes should happen on initVnode
|
1444
1450
|
me.hasUnmountedVdomChanges = false;
|
1445
1451
|
|
1446
1452
|
childIds = ComponentManager.getChildIds(me.vnode);
|
@@ -1454,7 +1460,7 @@ class Component extends Abstract {
|
|
1454
1460
|
});
|
1455
1461
|
// end todo
|
1456
1462
|
|
1457
|
-
me.
|
1463
|
+
me.initVnode(true)
|
1458
1464
|
} else {
|
1459
1465
|
await currentWorker.promiseMessage('main', {
|
1460
1466
|
action : 'mountDom',
|
@@ -1591,7 +1597,7 @@ class Component extends Abstract {
|
|
1591
1597
|
me.parent.updateDepth = 2;
|
1592
1598
|
me.parent.update()
|
1593
1599
|
} else {
|
1594
|
-
!me.mounted && me.
|
1600
|
+
!me.mounted && me.initVnode(true)
|
1595
1601
|
}
|
1596
1602
|
} else {
|
1597
1603
|
let style = me.style;
|
@@ -1659,7 +1665,7 @@ class Component extends Abstract {
|
|
1659
1665
|
* In case you are sure a DOMRect exists, use getDomRect()
|
1660
1666
|
* Otherwise you can wait for it using this method.
|
1661
1667
|
* @example:
|
1662
|
-
* await this.
|
1668
|
+
* await this.initVnode(true);
|
1663
1669
|
* await this.waitForDomRect();
|
1664
1670
|
* @param {Object} opts
|
1665
1671
|
* @param {String} opts.appName=this.appName
|
package/src/container/Base.mjs
CHANGED
@@ -102,7 +102,7 @@ class Container extends Component {
|
|
102
102
|
value : []
|
103
103
|
},
|
104
104
|
/**
|
105
|
-
* It is crucial to define a layout before the container does get
|
105
|
+
* It is crucial to define a layout before the container does get vdomInitialized.
|
106
106
|
* Meaning: onConstructed() is the latest life-cycle point.
|
107
107
|
* You can use layout: 'base', in case you do not need a layout at all.
|
108
108
|
* @member {Object|String|null} layout_={ntype: 'vbox', align: 'stretch'}
|
@@ -161,7 +161,7 @@ class Container extends Component {
|
|
161
161
|
afterSetLayout(value, oldValue) {
|
162
162
|
let me = this;
|
163
163
|
|
164
|
-
if (me.
|
164
|
+
if (me.vnodeInitialized) {
|
165
165
|
oldValue?.removeRenderAttributes();
|
166
166
|
value?.applyRenderAttributes();
|
167
167
|
|
@@ -213,12 +213,12 @@ class Container extends Component {
|
|
213
213
|
}
|
214
214
|
|
215
215
|
/**
|
216
|
-
* Triggered after the
|
216
|
+
* Triggered after the vnodeInitializing config got changed
|
217
217
|
* @param {Boolean} value
|
218
218
|
* @param {Boolean} oldValue
|
219
219
|
* @protected
|
220
220
|
*/
|
221
|
-
|
221
|
+
afterSetIsVnodeInitializing(value, oldValue) {
|
222
222
|
if (oldValue !== undefined) {
|
223
223
|
let {items} = this,
|
224
224
|
i = 0,
|
@@ -226,7 +226,7 @@ class Container extends Component {
|
|
226
226
|
|
227
227
|
for (; i < len; i++) {
|
228
228
|
if (!items[i].vdom.removeDom) {
|
229
|
-
items[i].
|
229
|
+
items[i].isVnodeInitializing = value
|
230
230
|
}
|
231
231
|
}
|
232
232
|
}
|
@@ -47,15 +47,15 @@ class Application extends Base {
|
|
47
47
|
*/
|
48
48
|
parentId: 'document.body',
|
49
49
|
/**
|
50
|
-
* @member {Boolean}
|
50
|
+
* @member {Boolean} vnodeInitialising=false
|
51
51
|
* @protected
|
52
52
|
*/
|
53
|
-
|
53
|
+
vnodeInitialising: false,
|
54
54
|
/**
|
55
|
-
* @member {Boolean}
|
55
|
+
* @member {Boolean} vnodeInitialized=false
|
56
56
|
* @protected
|
57
57
|
*/
|
58
|
-
|
58
|
+
vnodeInitialized: false,
|
59
59
|
/**
|
60
60
|
* @member {Number|null} windowId=null
|
61
61
|
*/
|
@@ -101,7 +101,7 @@ class Application extends Base {
|
|
101
101
|
// short delay to ensure changes from onHashChange() got applied
|
102
102
|
await me.timeout(Neo.config.hash ? 200 : 10);
|
103
103
|
|
104
|
-
await value.
|
104
|
+
await value.initVnode(true)
|
105
105
|
}
|
106
106
|
}
|
107
107
|
|
package/src/dialog/Base.mjs
CHANGED
@@ -39,13 +39,13 @@ class Dialog extends Panel {
|
|
39
39
|
*/
|
40
40
|
animateTargetId_: null,
|
41
41
|
/**
|
42
|
-
* @member {Boolean}
|
42
|
+
* @member {Boolean} autoInitVnode=true
|
43
43
|
*/
|
44
|
-
|
44
|
+
autoInitVnode: true,
|
45
45
|
/**
|
46
|
-
* @member {Boolean}
|
46
|
+
* @member {Boolean} autoMount=true
|
47
47
|
*/
|
48
|
-
|
48
|
+
autoMount: true,
|
49
49
|
/**
|
50
50
|
* @member {Boolean} autoShow=true
|
51
51
|
*/
|
@@ -173,7 +173,7 @@ class Dialog extends Panel {
|
|
173
173
|
*/
|
174
174
|
afterSetAnimateTargetId(value, oldValue) {
|
175
175
|
this.autoMount = !value;
|
176
|
-
this.
|
176
|
+
this.autoInitVnode = !value
|
177
177
|
}
|
178
178
|
|
179
179
|
/**
|
@@ -784,7 +784,7 @@ class Dialog extends Panel {
|
|
784
784
|
me.animateShow()
|
785
785
|
} else {
|
786
786
|
if (!me.mounted) {
|
787
|
-
me.
|
787
|
+
me.initVnode(true)
|
788
788
|
}
|
789
789
|
|
790
790
|
me.fire('show')
|
@@ -17,13 +17,13 @@ class DragProxyComponent extends Base {
|
|
17
17
|
*/
|
18
18
|
ntype: 'dragproxy',
|
19
19
|
/**
|
20
|
-
* @member {Boolean}
|
20
|
+
* @member {Boolean} autoInitVnode=true
|
21
21
|
*/
|
22
|
-
|
22
|
+
autoInitVnode: true,
|
23
23
|
/**
|
24
|
-
* @member {Boolean}
|
24
|
+
* @member {Boolean} autoMount=true
|
25
25
|
*/
|
26
|
-
|
26
|
+
autoMount: true,
|
27
27
|
/**
|
28
28
|
* @member {String[]} baseCls=['neo-dragproxy']
|
29
29
|
*/
|
@@ -1,6 +1,7 @@
|
|
1
1
|
import Component from './component/Base.mjs';
|
2
2
|
import defineComponent from './defineComponent.mjs';
|
3
|
+
import {html} from './util/html.mjs';
|
3
4
|
import useConfig from './useConfig.mjs';
|
4
5
|
import useEvent from './useEvent.mjs';
|
5
6
|
|
6
|
-
export {Component, defineComponent, useConfig, useEvent};
|
7
|
+
export {Component, defineComponent, html, useConfig, useEvent};
|