@syncfusion/ej2-vue-base 19.3.55 → 19.4.38

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.
@@ -0,0 +1,60 @@
1
+ ### Bug description
2
+
3
+ Clearly and concisely describe the problem or feature (this cannot be empty).
4
+
5
+ ### Root cause
6
+
7
+ Briefly describe the root cause and analysis of the problem.
8
+ If there is an internal discussion on the forum, provide the link.
9
+ ### Reason for not identifying earlier
10
+
11
+ Find how it was missed in our earlier testing and development by analysing the below checklist. This will help prevent similar mistakes in the future.
12
+
13
+ - [ ] Guidelines/documents are not followed
14
+
15
+ - Common guidelines / Core team guideline
16
+ - Specification document
17
+ - Requirement document
18
+
19
+ - [ ] Guidelines/documents are not given
20
+
21
+
22
+ - Common guidelines / Core team guideline
23
+ - Specification document
24
+ - Requirement document
25
+
26
+
27
+ ### Reason:
28
+ Mention any one or more reasons from the above points.
29
+
30
+ ### Action taken:
31
+ What action did you take to avoid this in future?
32
+
33
+ ### Related areas:
34
+ Is there any other related areas also to be addressed?
35
+
36
+
37
+ ### Is it a breaking issue?
38
+
39
+ If it is a breaking issue, provide the commit detail which caused this break.
40
+
41
+ ### Solution description
42
+
43
+ Describe your code changes in detail for reviewers.
44
+
45
+ ### Output screenshots
46
+
47
+ Post the output screenshots if an UI is affected or added due to this bug.
48
+ ### Areas affected and ensured
49
+
50
+ List the areas affected by your code changes.
51
+
52
+ ### Additional checklist
53
+ This may vary for different teams or products. Check with your scrum masters.
54
+
55
+ - Did you run the automation against your fix?
56
+ - Is there any API name change?
57
+ - Is there any existing behavior change of other features due to this code change?
58
+ - Does your new code introduce new warnings or binding errors?
59
+ - Does your code pass all FxCop and StyleCop rules?
60
+ - Did you record this case in the unit test or UI test?
@@ -0,0 +1,42 @@
1
+ ### Feature description
2
+
3
+ Clearly and concisely describe the problem or feature (this cannot be empty).
4
+
5
+ ### Analysis and design
6
+
7
+ If there is an external design, link to its project documentation area.
8
+ If there is an internal discussion on the forum, provide the link.
9
+ ### Solution description
10
+
11
+ Describe your code changes in detail for reviewers.
12
+
13
+ ### Output screenshots
14
+
15
+ Post the output screenshots if an UI is affected or added due to this feature.
16
+ ### Areas affected and ensured
17
+
18
+ List the areas are affected by your code changes.
19
+
20
+ ### Test cases
21
+
22
+ Provide the unit testing written file details to understand the use cases considered in this implementation.
23
+ If there is no TDD (if it’s not possible to follow), provide the UI automation script location and the Excel file that contains the use cases considered in this implementation.
24
+ Provide the test cases Excel file alone if the feature cannot be automated in any case.
25
+ Test bed sample location
26
+
27
+ Provide the test bed sample location where code reviewers can review the new feature’s behaviors. This depends on the CI process that your team follows. It can be from NPMCI, HockeyApp, staging site, local server, etc.
28
+
29
+ ### Test bed sample location
30
+
31
+ Provide the test bed sample location where code reviewers can review the new feature’s behaviors. This depends on the CI process that your team follows. It can be from NPMCI, HockeyApp, staging site, local server, etc.
32
+
33
+
34
+ ### Additional checklist
35
+ This may vary for different teams or products. Check with your scrum masters.
36
+
37
+ - Did you run the automation against your fix?
38
+ - Is there any API name change?
39
+ - Is there any existing behavior change of other features due to this code change?
40
+ - Does your new code introduce new warnings or binding errors?
41
+ - Does your code pass all FxCop and StyleCop rules?
42
+ - Did you record this case in the unit test or UI test?
@@ -1,15 +1,6 @@
1
1
  /*!
2
2
  * filename: ej2-vue-base.umd.min.js
3
- * version : 19.3.55
4
- * Copyright Syncfusion Inc. 2001 - 2020. All rights reserved.
5
- * Use of this code is subject to the terms of our license.
6
- * A copy of the current license can be obtained at any time by e-mailing
7
- * licensing@syncfusion.com. Any infringement will be prosecuted under
8
- * applicable laws.
9
- */
10
- /*!
11
- * filename: ej2-vue-base.umd.min.js
12
- * version : 19.2.55
3
+ * version : 19.4.38
13
4
  * Copyright Syncfusion Inc. 2001 - 2020. All rights reserved.
14
5
  * Use of this code is subject to the terms of our license.
15
6
  * A copy of the current license can be obtained at any time by e-mailing
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  * filename: ej2-vue-base.min.js
3
- * version : 19.3.55
3
+ * version : 19.4.38
4
4
  * Copyright Syncfusion Inc. 2001 - 2020. All rights reserved.
5
5
  * Use of this code is subject to the terms of our license.
6
6
  * A copy of the current license can be obtained at any time by e-mailing
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  * filename: index.d.ts
3
- * version : 19.3.55
3
+ * version : 19.4.38
4
4
  * Copyright Syncfusion Inc. 2001 - 2020. All rights reserved.
5
5
  * Use of this code is subject to the terms of our license.
6
6
  * A copy of the current license can be obtained at any time by e-mailing
@@ -0,0 +1,406 @@
1
+ /**
2
+ * Vue Component Base
3
+ */
4
+
5
+ import { isNullOrUndefined, extend, getValue } from '@syncfusion/ej2-base';
6
+
7
+ import * as Vue3 from 'vue-class-component';
8
+ import * as Vue2 from 'vue';
9
+ import Vue from 'vue';
10
+
11
+ export const aVue = _interopRequireWildcard(Vue2);
12
+ export function _interopRequireWildcard(obj: any) {
13
+ if (obj && obj.__esModule) {
14
+ return obj;
15
+ } else {
16
+ let newObj: any = {};
17
+ if (obj != null) {
18
+ for (let key in obj) {
19
+ if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key];
20
+ }
21
+ }
22
+ newObj.default = obj;
23
+ return newObj;
24
+ }
25
+ }
26
+
27
+ export const allVue: any = aVue;
28
+ export const gh: any = allVue.h;
29
+ export const isExecute: any = gh ? false : true;
30
+
31
+ let vueImport: any;
32
+
33
+ if (!isExecute || parseInt(allVue.version) < 3) {
34
+ vueImport = (Vue3 as any).Vue;
35
+ } else {
36
+ vueImport = Vue;
37
+ }
38
+
39
+ export class ComponentBase extends vueImport {
40
+
41
+ // tslint:disable:no-any
42
+ protected ej2Instances: any;
43
+ protected tagMapper: any;
44
+ protected tagNameMapper: any;
45
+ protected hasInjectedModules: boolean = false;
46
+ protected hasChildDirective: boolean = false;
47
+ protected childDirObjects: string = '';
48
+ protected propKeys: any;
49
+
50
+ constructor() {
51
+ super(arguments);
52
+ }
53
+
54
+ public created(): void {
55
+ if (!this.propKeys) {
56
+ return
57
+ }
58
+ for (let prop of this.propKeys) {
59
+ this.ej2Instances.addEventListener(prop, (args: object) => {
60
+ this.$emit(prop, args);
61
+ });
62
+ }
63
+ let injectables: any = getValue('$root.$options.provide', this);
64
+ if (this.hasInjectedModules && !isExecute && injectables) {
65
+ let prevModule: Object[] = injectables[this.ej2Instances.getModuleName()] || [];
66
+ let curModule: Object[] = this.ej2Instances.getInjectedModules() || [];
67
+ for (let mod of curModule) {
68
+ if (prevModule.indexOf(mod) === -1) {
69
+ prevModule.push(mod);
70
+ }
71
+ }
72
+ this.ej2Instances.injectedModules = prevModule;
73
+ }
74
+ }
75
+
76
+ public mounted(): void {
77
+ this.ej2Instances.isVue = true;
78
+ this.ej2Instances.isVue3 = this.isVue3;
79
+ this.ej2Instances.vueInstance = this;
80
+ if (this.isVue3) {
81
+ this.ej2Instances.ej2Instances = this.ej2Instances;
82
+ this.ej2Instances.referModels = this.models;
83
+ }
84
+ this.ej2Instances.appendTo(this.$el);
85
+ }
86
+ public getInjectedServices(): Object[] {
87
+ let ret = [];
88
+ let provide: any = getValue('$vnode.context.$options.provide', this);
89
+ if (provide) {
90
+ // tslint:disable:no-any
91
+ let injectables: any = provide;
92
+ if (typeof provide === 'function') {
93
+ // tslint:disable:no-any
94
+ injectables = (this.$vnode.context.$options.provide as any)();
95
+ }
96
+ ret = injectables[this.ej2Instances.getModuleName()] || [];
97
+ }
98
+ return ret;
99
+ }
100
+ public updated(): void {
101
+ if (this.hasChildDirective) {
102
+ let childKey: Object = {};
103
+ this.fetchChildPropValues(childKey);
104
+ let curChildDir: string = JSON.stringify(childKey);
105
+ if (this.childDirObjects !== curChildDir) {
106
+ this.childDirObjects = curChildDir;
107
+ this.assignValueToWrapper(childKey, false);
108
+ }
109
+ }
110
+ }
111
+
112
+ public beforeDestroy(): void {
113
+ let tempBeforeDestroyThis: any = this;
114
+ tempBeforeDestroyThis.ej2Instances.destroy();
115
+ (tempBeforeDestroyThis.$el as any).style.visibility = 'hidden';
116
+ tempBeforeDestroyThis = null;
117
+ }
118
+
119
+ public bindProperties(): void {
120
+ let options: Object = {};
121
+ for (let prop of this.propKeys) {
122
+ if ((!isNullOrUndefined(this[prop]) && !this.isVue3) || (this[0] && !isNullOrUndefined(this[0][0]) && !isNullOrUndefined(this[0][0][prop]))) {
123
+ options[prop] = !this.isVue3 ? this[prop] : this[0][0][prop];
124
+ }
125
+ }
126
+ if (this.hasChildDirective) {
127
+ this.fetchChildPropValues(options);
128
+ }
129
+ if (this.hasInjectedModules) {
130
+
131
+ let prevModule: Object[] = this.getInjectedServices() || [];
132
+ let curModule: Object[] = this.ej2Instances.getInjectedModules() || [];
133
+ for (let mod of curModule) {
134
+ if (prevModule.indexOf(mod) === -1) {
135
+ prevModule.push(mod);
136
+ }
137
+ }
138
+ this.ej2Instances.injectedModules = prevModule;
139
+ }
140
+ this.assignValueToWrapper(options);
141
+ }
142
+
143
+ public assignValueToWrapper(option: Object, silent?: boolean): void {
144
+ this.ej2Instances.setProperties(extend({}, {}, option, true), isNullOrUndefined(silent as any) ? true : silent);
145
+ }
146
+
147
+ public fetchChildPropValues(childOption: Object): void {
148
+ let dirProps: Object = {};
149
+ if(!this.isVue3) {
150
+ dirProps = this.getDirectiveValues( this.$slots.default, this.tagMapper || {}, this.tagNameMapper || {});
151
+ } else {
152
+ if (this[0] && this[0][1].slots.default) {
153
+ let propRef: any = this[0][1].slots.default();
154
+ for (let i: number = 0; i < propRef.length; i++) {
155
+ if (propRef[i].type.methods) {
156
+ let key: string = propRef[i].type.methods.getTag().replace("e-", "");
157
+ let ref: any = this.resolveArrayDirectives(propRef[i].children,key);
158
+ let splitKeys: any = key.split('-');
159
+ let controlName: string = this.ej2Instances.getModuleName().toLowerCase();
160
+ let keyRef: string = (splitKeys.length > 1 && controlName.indexOf(splitKeys[0])>-1) ? splitKeys[1]: splitKeys[0];
161
+ keyRef = keyRef.replace(controlName,'');
162
+ if (controlName == "splitter" && keyRef == "panes") {
163
+ keyRef = "paneSettings"
164
+ } else if (controlName == "bulletchart" && keyRef == "range") {
165
+ keyRef = "ranges";
166
+ }
167
+ dirProps[keyRef] = ref[key];
168
+ }
169
+
170
+ }
171
+ } else {
172
+ return;
173
+ }
174
+ }
175
+ if (!this.childDirObjects) {
176
+ this.childDirObjects = JSON.stringify(dirProps);
177
+ }
178
+ for (let dirProp of Object.keys(dirProps)) {
179
+ childOption[dirProp] = dirProps[dirProp];
180
+ }
181
+ }
182
+
183
+ public resolveArrayDirectives(slots: any, tagName: any) {
184
+ let slot: any = [];
185
+ let innerDirValues: any;
186
+ slot = slots.default ? slots.default() : slots;
187
+ let items: any = {};
188
+ items[tagName] = [];
189
+ for (const childSlot of slot) {
190
+ let tempObj: any = {};
191
+ let tagRef: any = childSlot.type.methods ? childSlot.type.methods.getTag() : tagName;
192
+ if (childSlot.children) {
193
+ let key: string;
194
+ innerDirValues = this.resolveComplexDirs(childSlot.children, this.tagMapper["e-" + tagName], tagRef);
195
+ if (innerDirValues.length) {
196
+ tempObj = innerDirValues;
197
+ } else {
198
+ for(var i=0;i< Object.keys(innerDirValues).length;i++){
199
+ key = Object.keys(innerDirValues)[i];
200
+ tempObj[key] = innerDirValues[key];
201
+ };
202
+ }
203
+ }
204
+ if (childSlot.props) {
205
+ Object.keys(childSlot.props).forEach((key) => {
206
+ tempObj[key] = childSlot.props[key];
207
+ });
208
+ }
209
+ if ((/[s]\b/).test(tagRef) && innerDirValues) {
210
+ if (!(/[s]\b/).test(tagName) || innerDirValues.length) {
211
+ items[tagName] = tempObj;
212
+ } else {
213
+ items[tagName].push(tempObj);
214
+ }
215
+ } else {
216
+ items[tagName].push(tempObj);
217
+ }
218
+ }
219
+ return items;
220
+ }
221
+
222
+ public resolveComplexDirs(slots: any, tagObject: any, tagName: string) {
223
+ let slot: any = [];
224
+ let innerDirValues: any;
225
+ slot = slots.default ? slots.default() : slots;
226
+ let items: any = {};
227
+ for (const childSlot of slot) {
228
+ let tagRef: any;
229
+ let tag: any;
230
+ if (tagObject[tagName]) {
231
+ tagRef= Object.keys(tagObject[tagName]);
232
+ tag= tagRef.find(
233
+ (key: any) =>
234
+ tagObject[tagName][key] ===
235
+ childSlot.type.methods.getTag().replace(/[s]\b/, "")
236
+ );
237
+ tag = tag
238
+ ? tag.replace("e-", "")
239
+ : childSlot.type.methods.getTag().replace("e-", "");
240
+ if (this.ej2Instances.getModuleName().toLowerCase() == "diagram" && tag.indexOf('annotations') !=-1) {
241
+ tag = 'annotations';
242
+ }
243
+ }
244
+ if (childSlot.children) {
245
+ innerDirValues = this.resolveComplexInnerDirs(childSlot.children, tagObject[tagName], childSlot.type.methods.getTag());
246
+ if (!items[tag]) {
247
+ items[tag] = [];
248
+ }
249
+ if (innerDirValues.length >1) {
250
+ items[tag] = innerDirValues;
251
+ } else {
252
+ items[tag].push(innerDirValues);
253
+ }
254
+ }
255
+ if (slot.length > 1) {
256
+ items = Object.keys(items).length == 0 && !items.length ? [] : items;
257
+ if (childSlot.props) { items.push(childSlot.props); }
258
+ }
259
+ else {
260
+ items = childSlot.props ? (<any>Object).assign(items, childSlot.props) : items;
261
+ }
262
+ }
263
+ return items;
264
+ }
265
+
266
+ public resolveComplexInnerDirs(slots: any, tagObject: any, tagName: string) {
267
+ let slot: any = [];
268
+ let innerDirValues: any;
269
+ slot = slots.default ? slots.default() : slots;
270
+ let items: any = slot.length > 1 ? [] : {};
271
+ for (const childSlot of slot) {
272
+ let tag: string = childSlot.type.methods.getTag().replace("e-", "");
273
+ if (childSlot.children) {
274
+ innerDirValues = this.resolveMultilevelComplexInnerDirs(childSlot.children, tagObject[tagName], childSlot.type.methods.getTag());
275
+ if ((/[s]\b/).test(tag) || slot.length > 1) {
276
+ if ((/[s]\b/).test(tag)) {
277
+ items[tag] = !items[tag] ? [] : items[tag];
278
+ if (innerDirValues.length) {
279
+ items[tag] = innerDirValues;
280
+ } else {items[tag].push(innerDirValues);}
281
+ } else if (innerDirValues) {
282
+ items.push(innerDirValues)
283
+ }
284
+ } else {
285
+ items = innerDirValues ? innerDirValues : items;
286
+ }
287
+ }
288
+
289
+ if (slot.length > 1 && childSlot.props) {
290
+ if (items.length >= 0) {
291
+ items.push(childSlot.props);
292
+ } else {
293
+ items = childSlot.props ? (<any>Object).assign(items, childSlot.props) : items;
294
+ }
295
+ } else {
296
+ items = childSlot.props ? (<any>Object).assign(items, childSlot.props) : items;
297
+ }
298
+ }
299
+ return items;
300
+ }
301
+
302
+ public resolveMultilevelComplexInnerDirs(slots: any, tagObject: any, tagName: string) {
303
+ let slot: any = [];
304
+ let innerDirValues: any;
305
+ slot = slots.default ? slots.default() : slots;
306
+ let items: any = slot.length > 1 ? [] : {};
307
+ for (const childSlot of slot) {
308
+ let tag: string = childSlot.type.methods.getTag().replace("e-", "");
309
+ if (childSlot.children) {
310
+ innerDirValues = this.resolveComplexInnerDirs(childSlot.children, tagObject[tagName], childSlot.type.methods.getTag());
311
+ }
312
+ if((/[s]\b/).test(tag)) {
313
+ items[tag] = !items[tag] ? [] : items[tag];
314
+ if(innerDirValues.length) {
315
+ items[tag] = innerDirValues;
316
+ } else { items[tag].push(innerDirValues); }
317
+ if (childSlot.props) {items[tag].push(childSlot.props);}
318
+ } else {
319
+ items = innerDirValues;
320
+ items = childSlot.props ? (<any>Object).assign(items, childSlot.props) : items;
321
+ }
322
+ }
323
+ return items;
324
+ }
325
+
326
+ public getDirectiveValues(tagDirectives: any, tagMapper: { [key: string]: Object }, tagNameMapper: Object): Object {
327
+ let keyTags: string[] = Object.keys(tagMapper);
328
+ let dir: Object = {};
329
+ if (tagDirectives) {
330
+ for (let tagDirective of tagDirectives) {
331
+ if (tagDirective.componentOptions && tagDirective.componentOptions.children && tagDirective.componentOptions.tag) {
332
+ let dirTag: string = tagDirective.componentOptions.tag;
333
+ if (keyTags.indexOf(dirTag) !== -1) {
334
+ let tagName: string = tagNameMapper[dirTag] ? tagNameMapper[dirTag] : dirTag;
335
+ dir[tagName.replace('e-', '')] = [];
336
+ for (let tagDirChild of tagDirective.componentOptions.children) {
337
+ let retObj: Object = this.getVNodeValue(tagDirChild, tagMapper[dirTag], tagNameMapper);
338
+ if (Object.keys(retObj).length !== 0) {
339
+ dir[tagName.replace('e-', '')].push(retObj);
340
+ }
341
+ }
342
+ }
343
+ }
344
+ }
345
+ }
346
+ return dir;
347
+ }
348
+
349
+ public getMultiLevelDirValue(tagDirectories: any, tagKey: string | Object, tagNameMapper: Object): Object {
350
+ let mulObj: Object = {};
351
+ for (let tagDir of tagDirectories) {
352
+ if (tagDir.componentOptions) {
353
+ let key: string = tagDir.componentOptions.tag;
354
+ let tagName: string = tagNameMapper[key] ? tagNameMapper[key] : key;
355
+ mulObj[tagName.replace('e-', '')] = [];
356
+ if (tagDir.componentOptions && tagDir.componentOptions.children) {
357
+ for (let tagDirChild of tagDir.componentOptions.children) {
358
+ let mulLevObj: Object = this.getVNodeValue(tagDirChild, tagKey[key], tagNameMapper);
359
+ if (Object.keys(mulLevObj).length !== 0) {
360
+ mulObj[tagName.replace('e-', '')].push(mulLevObj);
361
+ }
362
+ }
363
+ }
364
+ }
365
+ }
366
+ return mulObj;
367
+ }
368
+
369
+ public getVNodeValue(tagDirective: any, tagKey: string | Object, tagNameMapper: Object): Object {
370
+ let ret: Object = {};
371
+ if (tagDirective.componentOptions) {
372
+ let dirTag: string = tagDirective.componentOptions.tag;
373
+ if (typeof tagKey === 'string' && dirTag === tagKey && tagDirective.data) {
374
+ ret = tagDirective.data.attrs ? this.getCamelCaseProps(tagDirective.data.attrs) : this.getCamelCaseProps(tagDirective.data);
375
+ } else if (typeof tagKey === 'object') {
376
+ if (tagDirective.componentOptions.children && (Object.keys(tagKey).indexOf(dirTag) !== -1)) {
377
+ ret = this.getMultiLevelDirValue(tagDirective.componentOptions.children, tagKey[dirTag], tagNameMapper);
378
+ }
379
+ if (tagDirective.data && tagDirective.data.attrs) {
380
+ ret = extend(ret, this.getCamelCaseProps(tagDirective.data.attrs));
381
+ }
382
+ }
383
+ }
384
+ return ret;
385
+ }
386
+
387
+ /**
388
+ * convert kebab case directive props to camel case
389
+ */
390
+ public getCamelCaseProps(props: Object): Object {
391
+ let retProps: Object = {};
392
+ for (let prop of Object.keys(props)) {
393
+ retProps[prop.replace(/-[a-z]/g, (e) => {return e[1].toUpperCase()})] = props[prop];
394
+ }
395
+ return retProps;
396
+ }
397
+
398
+ public dataBind() {
399
+ this.ej2Instances.dataBind();
400
+ }
401
+
402
+ public setProperties(arg: Object, muteOnChange?: boolean): void {
403
+ return this.ej2Instances.setProperties(arg, muteOnChange);
404
+ }
405
+ }
406
+
@@ -0,0 +1,148 @@
1
+ /**
2
+ * Vue Component Base
3
+ */
4
+ import Vue from 'vue';
5
+ // import { Base, Component as EJ2Component, isNullOrUndefined } from '@syncfusion/ej2-base';
6
+ import { ComponentBase } from './component-base';
7
+ export let $internalHooks = [
8
+ 'data',
9
+ 'beforeCreate',
10
+ 'created',
11
+ 'beforeMount',
12
+ 'mounted',
13
+ 'beforeDestroy',
14
+ 'destroyed',
15
+ 'beforeUpdate',
16
+ 'updated',
17
+ 'activated',
18
+ 'deactivated',
19
+ 'render',
20
+ 'errorCaptured' // 2.5
21
+ ];
22
+
23
+ export function getProps(
24
+ options: any = {}
25
+ ): any {
26
+ if (options.props) {
27
+ for (let prop of options.props) {
28
+ (options.newprops || (options.newprops = {}))[prop] = {
29
+
30
+ };
31
+ (options.watch || (options.watch = {}))[prop] = function (newVal: Object) { // watch it
32
+ this.ej2Instances[prop] = newVal;
33
+ if (this.dataBind && (options.name !== 'DateRangePickerComponent')) {
34
+ this.dataBind();
35
+ }
36
+ };
37
+ }
38
+ }
39
+ return [options.newprops, options.watch];
40
+ }
41
+
42
+ export function EJComponentDecorator(options: any, isExecute?: any): any {
43
+ if(!isExecute) {
44
+ return;
45
+ }
46
+ return function (Component: any) {
47
+ return EJcomponentFactory(Component, options);
48
+ }
49
+ }
50
+
51
+ export function EJcomponentFactory(
52
+ Component: any,
53
+ options: any = {}
54
+ ): any {
55
+ options.name = options.name || (Component as any)._componentTag || (Component as any).name
56
+ // prototype props.
57
+ const proto = Component.prototype
58
+ if (options.props) {
59
+ for (let prop of options.props) {
60
+ (options.props || (options.props = {}))[prop] = {
61
+
62
+ };
63
+ (options.watch || (options.watch = {}))[prop] = function (newVal: Object) { // watch it
64
+ this.ej2Instances[prop] = newVal;
65
+ if (this.dataBind && (options.name !== 'DateRangePickerComponent')) {
66
+ this.dataBind();
67
+ }
68
+ };
69
+ }
70
+ }
71
+ Object.getOwnPropertyNames(proto).forEach(function (key) {
72
+ // hooks
73
+ if (key === 'constructor') {
74
+ return;
75
+ }
76
+ if ($internalHooks.indexOf(key) > -1) {
77
+ options[key] = proto[key]
78
+ return
79
+ }
80
+ const descriptor = Object.getOwnPropertyDescriptor(proto, key)!
81
+ if (typeof descriptor.value === 'function') {
82
+ // methods
83
+ (options.methods || (options.methods = {}))[key] = descriptor.value
84
+ } else if (descriptor.get || descriptor.set) {
85
+ // computed properties
86
+ (options.computed || (options.computed = {}))[key] = {
87
+ get: descriptor.get,
88
+ set: descriptor.set
89
+ }
90
+ }
91
+ });
92
+ Object.getOwnPropertyNames(ComponentBase.prototype).forEach(function (key) {
93
+ if ($internalHooks.indexOf(key) > -1) {
94
+ options[key] = proto[key]
95
+ return
96
+ }
97
+ });
98
+ (options.mixins || (options.mixins = [])).push({
99
+ data(this: Vue) {
100
+ return collectDataFromConstructor(this, Component)
101
+ }
102
+ })
103
+ // decorate options
104
+ const decorators = (Component as any).__decorators__
105
+ if (decorators) {
106
+ decorators.forEach(Function(options))
107
+ delete (Component as any).__decorators__
108
+ }
109
+
110
+ // find super
111
+ const superProto = Object.getPrototypeOf(Component.prototype)
112
+ const Super = superProto instanceof Vue
113
+ ? superProto.constructor as any
114
+ : Vue
115
+ const Extended = Super.extend(options)
116
+
117
+ return Extended
118
+ }
119
+
120
+ function collectDataFromConstructor(vm: any, Component: any) {
121
+ Component.prototype._init = function () {
122
+ var _this = this;
123
+ var keys = Object.getOwnPropertyNames(vm);
124
+ if (vm.$options.props) {
125
+ for (var key in vm.$options.props) {
126
+ if (!vm.hasOwnProperty(key)) {
127
+ keys.push(key);
128
+ }
129
+ }
130
+ }
131
+ keys.forEach(function (key) {
132
+ if (key.charAt(0) !== '_') {
133
+ Object.defineProperty(_this, key, {
134
+ get: function () { return vm[key]; },
135
+ set: function (value) { return vm[key] = value; }
136
+ });
137
+ }
138
+ });
139
+ };
140
+ var data = new Component();
141
+ var plainData = {};
142
+ Object.keys(data).forEach(function (key) {
143
+ if (data[key] !== undefined) {
144
+ plainData[key] = data[key];
145
+ }
146
+ });
147
+ return plainData;
148
+ }
@@ -0,0 +1,118 @@
1
+ import Vue from "vue";
2
+ import {
3
+ setTemplateEngine,
4
+ getTemplateEngine,
5
+ getUniqueID,
6
+ createElement,
7
+ detach,
8
+ extend,
9
+ getValue,
10
+ } from "@syncfusion/ej2-base";
11
+
12
+ import { aVue, allVue, gh } from "./component-base";
13
+
14
+ // tslint:disable:no-any
15
+ let stringCompiler: (
16
+ template: string,
17
+ helper?: object
18
+ ) => (data: Object | JSON) => string = getTemplateEngine();
19
+
20
+ export function compile(
21
+ templateElement: any,
22
+ helper?: Object
23
+ ): (data: Object | JSON, component?: any, propName?: any) => Object {
24
+ let that = this;
25
+ if (typeof templateElement === "string") {
26
+ return stringCompiler(templateElement, helper);
27
+ } else {
28
+ return (data: any, context: any,propName: any): any => {
29
+ let pid: string = getUniqueID("templateParentDiv");
30
+ let id: string = getUniqueID("templateDiv");
31
+ let ele: HTMLElement = createElement("div", {
32
+ id: pid,
33
+ innerHTML: '<div id="' + id + '"></div>',
34
+ });
35
+ document.body.appendChild(ele);
36
+
37
+ let tempObj: any = templateElement.call(that, {});
38
+ let returnEle: any;
39
+ if (context) {
40
+ if (gh) {
41
+ let object: any = tempObj;
42
+ let propsData: any = getValue("template.propsData", tempObj);
43
+ let dataObj: any = {
44
+ data: { data: extend(tempObj.data || {}, data) },
45
+ parent: context.vueInstance,
46
+ };
47
+ if (!object.template) {
48
+ object.template = object[Object.keys(object)[0]];
49
+ }
50
+ let templateCompRef: any;
51
+ if(object.template.extends) {
52
+ templateCompRef = object.template.extends._context.components.template;
53
+ } else {
54
+ templateCompRef = object.template._context.components[templateElement.name];
55
+ }
56
+ let tempRef: any;
57
+ if (propsData) {
58
+ tempRef = (<any>Object).assign(templateCompRef.data(), propsData);
59
+ } else {
60
+ tempRef = (<any>Object).assign(templateCompRef.data(), dataObj.data);
61
+ if(templateCompRef.components){
62
+ let objkeys: any = Object.keys(templateCompRef.components) || [];
63
+ for(let objstring of objkeys){
64
+ let intComponent: any = templateCompRef.components[objstring]
65
+ if(intComponent && intComponent.data){
66
+ let tempRef2: any = (Object as any).assign(intComponent.data(), dataObj.data);
67
+ intComponent.data = function() {return tempRef2};
68
+ }
69
+ }
70
+ }
71
+ }
72
+ templateCompRef.data = function () { return tempRef; };
73
+ allVue
74
+ .createApp(templateCompRef)
75
+ .mount("#" + id);
76
+ returnEle = ele.childNodes;
77
+ detach(ele);
78
+ } else {
79
+ let templateFunction = tempObj.template;
80
+ let propsData: any = getValue("template.propsData", tempObj);
81
+ let dataObj: any = {
82
+ data: { data: extend(tempObj.data || {}, data) },
83
+ parent: context.vueInstance,
84
+ };
85
+ if (propsData) {
86
+ templateFunction = tempObj.template.extends;
87
+ dataObj.propsData = propsData;
88
+ }
89
+ if (typeof templateFunction !== "function") {
90
+ templateFunction = Vue.extend(templateFunction);
91
+ }
92
+ let templateVue: any = new templateFunction(dataObj);
93
+ // let templateVue = new Vue(tempObj.template);
94
+ // templateVue.$data.data = extend(tempObj.data, data);
95
+ templateVue.$mount("#" + id);
96
+ returnEle = ele.childNodes;
97
+ if (context.vueInstance) {
98
+ let templateInstance: any = context.vueInstance.templateCollection;
99
+ if (!templateInstance) {
100
+ context.vueInstance.templateCollection = {};
101
+ templateInstance = context.vueInstance.templateCollection;
102
+ }
103
+ if (propName) {
104
+ if (!templateInstance[propName]) {
105
+ templateInstance[propName] = [];
106
+ }
107
+ templateInstance[propName].push(returnEle[0]);
108
+ }
109
+ }
110
+ detach(ele);
111
+ }
112
+ }
113
+ return returnEle || [];
114
+ };
115
+ }
116
+ }
117
+
118
+ setTemplateEngine({ compile: compile as any });
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "_from": "@syncfusion/ej2-vue-base@*",
3
- "_id": "@syncfusion/ej2-vue-base@19.3.53",
3
+ "_id": "@syncfusion/ej2-vue-base@19.3.54",
4
4
  "_inBundle": false,
5
- "_integrity": "sha512-eOpEHHkHRNt2COPWQA1/cIiZuJT/8ScdLOC3F1Q55jAoot0LqaP2DyV6FUhm8N7H0H8dFBnk10En6VydlwOqYA==",
5
+ "_integrity": "sha512-mNXTKkcEY1Qg9SOZ2jZL74BaKZBDPLpmFU7RPvsTtna4e3MdTzBl0A+kaqZXrJhZKu5evN2U1BwLkbpMH1eIHQ==",
6
6
  "_location": "/@syncfusion/ej2-vue-base",
7
7
  "_phantomChildren": {},
8
8
  "_requested": {
@@ -18,23 +18,41 @@
18
18
  },
19
19
  "_requiredBy": [
20
20
  "/",
21
+ "/@syncfusion/ej2-vue-barcode-generator",
22
+ "/@syncfusion/ej2-vue-buttons",
21
23
  "/@syncfusion/ej2-vue-calendars",
22
24
  "/@syncfusion/ej2-vue-charts",
25
+ "/@syncfusion/ej2-vue-circulargauge",
23
26
  "/@syncfusion/ej2-vue-diagrams",
24
27
  "/@syncfusion/ej2-vue-documenteditor",
25
28
  "/@syncfusion/ej2-vue-dropdowns",
26
29
  "/@syncfusion/ej2-vue-filemanager",
27
30
  "/@syncfusion/ej2-vue-gantt",
28
31
  "/@syncfusion/ej2-vue-grids",
32
+ "/@syncfusion/ej2-vue-heatmap",
33
+ "/@syncfusion/ej2-vue-inplace-editor",
34
+ "/@syncfusion/ej2-vue-inputs",
29
35
  "/@syncfusion/ej2-vue-kanban",
36
+ "/@syncfusion/ej2-vue-layouts",
37
+ "/@syncfusion/ej2-vue-lineargauge",
38
+ "/@syncfusion/ej2-vue-lists",
39
+ "/@syncfusion/ej2-vue-maps",
40
+ "/@syncfusion/ej2-vue-navigations",
41
+ "/@syncfusion/ej2-vue-notifications",
42
+ "/@syncfusion/ej2-vue-pdfviewer",
30
43
  "/@syncfusion/ej2-vue-pivotview",
44
+ "/@syncfusion/ej2-vue-popups",
45
+ "/@syncfusion/ej2-vue-progressbar",
46
+ "/@syncfusion/ej2-vue-querybuilder",
31
47
  "/@syncfusion/ej2-vue-richtexteditor",
32
48
  "/@syncfusion/ej2-vue-schedule",
49
+ "/@syncfusion/ej2-vue-splitbuttons",
33
50
  "/@syncfusion/ej2-vue-spreadsheet",
34
- "/@syncfusion/ej2-vue-treegrid"
51
+ "/@syncfusion/ej2-vue-treegrid",
52
+ "/@syncfusion/ej2-vue-treemap"
35
53
  ],
36
- "_resolved": "http://nexus.syncfusion.com/repository/ej2-hotfix/@syncfusion/ej2-vue-base/-/ej2-vue-base-19.3.53.tgz",
37
- "_shasum": "8a5f6151ae688700bdb3ddc4227e9774c734d28c",
54
+ "_resolved": "http://nexus.syncfusion.com/repository/ej2-release/@syncfusion/ej2-vue-base/-/ej2-vue-base-19.3.54.tgz",
55
+ "_shasum": "60aae462a46dbd51dc4486361cbaa30222780da1",
38
56
  "_spec": "@syncfusion/ej2-vue-base@*",
39
57
  "_where": "/jenkins/workspace/automation_release_19.1.0.1-ZPMUBNQ6AUYH6YGEFBPVYMEQLRRW2SLD4XCZ6GATNZJFYJ3RIAOA/packages/included",
40
58
  "author": {
@@ -45,7 +63,7 @@
45
63
  },
46
64
  "bundleDependencies": false,
47
65
  "dependencies": {
48
- "@syncfusion/ej2-base": "~19.3.54",
66
+ "@syncfusion/ej2-base": "~19.4.38",
49
67
  "glob": "^7.0.5"
50
68
  },
51
69
  "deprecated": false,
@@ -78,6 +96,6 @@
78
96
  "postinstall": "node ./postinstall.js"
79
97
  },
80
98
  "typings": "index.d.ts",
81
- "version": "19.3.55",
99
+ "version": "19.4.38",
82
100
  "sideEffects": true
83
101
  }
@@ -2,6 +2,7 @@
2
2
  * Vue Component Base
3
3
  */
4
4
 
5
+
5
6
  import Vue from 'vue';
6
7
  export declare const aVue: any;
7
8
  export declare function _interopRequireWildcard(obj: any): any;
@@ -17,7 +18,7 @@ export declare class ComponentBase extends Vue {
17
18
  protected hasChildDirective: boolean;
18
19
  protected childDirObjects: string;
19
20
  protected propKeys: any;
20
- // // constructor();
21
+ // // // constructor();
21
22
  created(): void;
22
23
  mounted(): void;
23
24
  getInjectedServices(): Object[];