neo.mjs 4.2.7 → 4.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/apps/realworld/view/HomeComponent.mjs +3 -6
- package/apps/realworld/view/article/CommentComponent.mjs +3 -6
- package/apps/realworld/view/article/Component.mjs +4 -7
- package/apps/realworld/view/article/CreateCommentComponent.mjs +3 -6
- package/apps/realworld/view/article/CreateComponent.mjs +3 -6
- package/apps/realworld/view/article/PreviewComponent.mjs +2 -5
- package/apps/realworld/view/article/TagListComponent.mjs +2 -5
- package/apps/realworld/view/user/ProfileComponent.mjs +3 -6
- package/apps/realworld/view/user/SettingsComponent.mjs +3 -6
- package/apps/realworld/view/user/SignUpComponent.mjs +2 -5
- package/apps/realworld2/view/article/PreviewComponent.mjs +2 -5
- package/apps/realworld2/view/article/TagListComponent.mjs +2 -5
- package/examples/ConfigurationViewport.mjs +1 -1
- package/examples/button/base/MainContainer.mjs +75 -12
- package/examples/tab/container/MainContainer.mjs +3 -3
- package/examples/todoList/version1/MainComponent.mjs +3 -6
- package/package.json +1 -1
- package/resources/scss/src/button/Base.scss +41 -3
- package/resources/scss/src/tab/Container.scss +1 -3
- package/resources/scss/src/tab/header/Button.scss +6 -1
- package/resources/scss/src/table/header/Button.scss +21 -1
- package/resources/scss/theme-dark/button/Base.scss +7 -1
- package/resources/scss/theme-dark/table/header/Button.scss +11 -9
- package/resources/scss/theme-light/button/Base.scss +7 -1
- package/resources/scss/theme-light/table/header/Button.scss +11 -9
- package/src/button/Base.mjs +151 -43
- package/src/calendar/view/YearComponent.mjs +3 -6
- package/src/calendar/view/month/Component.mjs +3 -6
- package/src/calendar/view/week/Component.mjs +3 -6
- package/src/calendar/view/week/plugin/DragDrop.mjs +6 -9
- package/src/component/Base.mjs +16 -0
- package/src/component/Carousel.mjs +5 -17
- package/src/component/Chip.mjs +2 -7
- package/src/component/Circle.mjs +4 -7
- package/src/component/DateSelector.mjs +5 -8
- package/src/component/Gallery.mjs +4 -7
- package/src/component/Helix.mjs +2 -5
- package/src/component/Splitter.mjs +3 -6
- package/src/component/mwc/Button.mjs +4 -7
- package/src/component/mwc/TextField.mjs +2 -5
- package/src/draggable/DropZone.mjs +3 -7
- package/src/draggable/list/DragZone.mjs +6 -9
- package/src/draggable/toolbar/DragZone.mjs +5 -8
- package/src/form/Fieldset.mjs +3 -6
- package/src/form/field/CheckBox.mjs +2 -5
- package/src/form/field/Range.mjs +3 -6
- package/src/form/field/Text.mjs +2 -5
- package/src/form/field/trigger/Base.mjs +4 -12
- package/src/grid/header/Button.mjs +3 -6
- package/src/list/Base.mjs +4 -6
- package/src/plugin/Resizable.mjs +3 -6
- package/src/selection/grid/CellModel.mjs +3 -6
- package/src/selection/grid/ColumnModel.mjs +3 -6
- package/src/selection/grid/RowModel.mjs +3 -6
- package/src/selection/table/CellModel.mjs +3 -6
- package/src/selection/table/ColumnModel.mjs +3 -6
- package/src/selection/table/RowModel.mjs +3 -6
- package/src/sitemap/Component.mjs +3 -6
- package/src/tab/header/Button.mjs +13 -2
- package/src/table/header/Button.mjs +9 -5
- package/src/tooltip/Base.mjs +5 -15
- package/src/util/KeyNavigation.mjs +8 -13
@@ -1,15 +1,17 @@
|
|
1
1
|
$neoMap: map-merge($neoMap, (
|
2
|
-
'table-header-button-background-color': #323232,
|
3
|
-
'table-header-button-background-image': linear-gradient(#3c3f41, #323232),
|
4
|
-
'table-header-button-color'
|
5
|
-
'table-header-button-glyph-color'
|
2
|
+
'table-header-button-background-color' : #323232,
|
3
|
+
'table-header-button-background-image' : linear-gradient(#3c3f41, #323232),
|
4
|
+
'table-header-button-color' : #bbb,
|
5
|
+
'table-header-button-glyph-color' : #bbb,
|
6
|
+
'table-header-button-ripple-background-color': darken(#5d83a7, 10%),
|
6
7
|
));
|
7
8
|
|
8
9
|
@if $useCssVars == true {
|
9
10
|
:root .neo-theme-dark { // .neo-table-header
|
10
|
-
--table-header-button-background-color: #{neo(table-header-button-background-color)};
|
11
|
-
--table-header-button-background-image: #{neo(table-header-button-background-image)};
|
12
|
-
--table-header-button-color
|
13
|
-
--table-header-button-glyph-color
|
11
|
+
--table-header-button-background-color : #{neo(table-header-button-background-color)};
|
12
|
+
--table-header-button-background-image : #{neo(table-header-button-background-image)};
|
13
|
+
--table-header-button-color : #{neo(table-header-button-color)};
|
14
|
+
--table-header-button-glyph-color : #{neo(table-header-button-glyph-color)};
|
15
|
+
--table-header-button-ripple-background-color: #{neo(table-header-button-ripple-background-color)};
|
14
16
|
}
|
15
|
-
}
|
17
|
+
}
|
@@ -6,6 +6,8 @@ $neoMap: map-merge($neoMap, (
|
|
6
6
|
'button-background-image' : none,
|
7
7
|
'button-background-gradient-end' : #323536,
|
8
8
|
'button-background-gradient-start': #434749,
|
9
|
+
'button-badge-background-color' : #1c60a0,
|
10
|
+
'button-badge-color' : #fff,
|
9
11
|
'button-border' : 1px solid #ddd,
|
10
12
|
'button-border-radius' : 3px,
|
11
13
|
'button-glyph-color' : #1c60a0,
|
@@ -15,6 +17,7 @@ $neoMap: map-merge($neoMap, (
|
|
15
17
|
'button-margin' : 2px,
|
16
18
|
'button-padding' : 5px 12px 5px 12px,
|
17
19
|
'button-pressed-border-color' : #1c60a0,
|
20
|
+
'button-ripple-background-color' : lighten(#1c60a0, 50%),
|
18
21
|
'button-text-color' : #1c60a0,
|
19
22
|
'button-text-font-family' : #{neo(neo-font-family)},
|
20
23
|
'button-text-font-size' : 11px,
|
@@ -33,6 +36,8 @@ $neoMap: map-merge($neoMap, (
|
|
33
36
|
--button-background-image : #{neo(button-background-image)};
|
34
37
|
--button-background-gradient-end : #{neo(button-background-gradient-end)};
|
35
38
|
--button-background-gradient-start: #{neo(button-background-gradient-start)};
|
39
|
+
--button-badge-background-color : #{neo(button-badge-background-color)};
|
40
|
+
--button-badge-color : #{neo(button-badge-color)};
|
36
41
|
--button-border : #{neo(button-border)};
|
37
42
|
--button-border-radius : #{neo(button-border-radius)};
|
38
43
|
--button-glyph-color : #{neo(button-glyph-color)};
|
@@ -42,6 +47,7 @@ $neoMap: map-merge($neoMap, (
|
|
42
47
|
--button-margin : #{neo(button-margin)};
|
43
48
|
--button-padding : #{neo(button-padding)};
|
44
49
|
--button-pressed-border-color : #{neo(button-pressed-border-color)};
|
50
|
+
--button-ripple-background-color : #{neo(button-ripple-background-color)};
|
45
51
|
--button-text-color : #{neo(button-text-color)};
|
46
52
|
--button-text-font-family : #{neo(button-text-font-family)};
|
47
53
|
--button-text-font-size : #{neo(button-text-font-size)};
|
@@ -50,4 +56,4 @@ $neoMap: map-merge($neoMap, (
|
|
50
56
|
--button-text-transform : #{neo(button-text-transform)};
|
51
57
|
--button-use-gradients : #{neo(button-use-gradients)};
|
52
58
|
}
|
53
|
-
}
|
59
|
+
}
|
@@ -1,15 +1,17 @@
|
|
1
1
|
$neoMap: map-merge($neoMap, (
|
2
|
-
'table-header-button-background-color': #5d83a7,
|
3
|
-
'table-header-button-background-image': none,
|
4
|
-
'table-header-button-color'
|
5
|
-
'table-header-button-glyph-color'
|
2
|
+
'table-header-button-background-color' : #5d83a7,
|
3
|
+
'table-header-button-background-image' : none,
|
4
|
+
'table-header-button-color' : #fff,
|
5
|
+
'table-header-button-glyph-color' : #fff,
|
6
|
+
'table-header-button-ripple-background-color': darken(#5d83a7, 10%),
|
6
7
|
));
|
7
8
|
|
8
9
|
@if $useCssVars == true {
|
9
10
|
:root .neo-theme-light { // .neo-table-header-button
|
10
|
-
--table-header-button-background-color: #{neo(table-header-button-background-color)};
|
11
|
-
--table-header-button-background-image: #{neo(table-header-button-background-image)};
|
12
|
-
--table-header-button-color
|
13
|
-
--table-header-button-glyph-color
|
11
|
+
--table-header-button-background-color : #{neo(table-header-button-background-color)};
|
12
|
+
--table-header-button-background-image : #{neo(table-header-button-background-image)};
|
13
|
+
--table-header-button-color : #{neo(table-header-button-color)};
|
14
|
+
--table-header-button-glyph-color : #{neo(table-header-button-glyph-color)};
|
15
|
+
--table-header-button-ripple-background-color: #{neo(table-header-button-ripple-background-color)};
|
14
16
|
}
|
15
|
-
}
|
17
|
+
}
|
package/src/button/Base.mjs
CHANGED
@@ -6,7 +6,27 @@ import NeoArray from '../util/Array.mjs';
|
|
6
6
|
* @extends Neo.component.Base
|
7
7
|
*/
|
8
8
|
class Base extends Component {
|
9
|
+
/**
|
10
|
+
* Time in ms for the ripple effect when clicking on the button.
|
11
|
+
* Only active if useRippleEffect is set to true.
|
12
|
+
* @member {Number} rippleEffectDuration=400
|
13
|
+
*/
|
14
|
+
rippleEffectDuration = 400
|
15
|
+
/**
|
16
|
+
* Internal flag to store the last setTimeout() id for ripple effect remove node callbacks
|
17
|
+
* @member {Number} #rippleTimeoutId=null
|
18
|
+
* @private
|
19
|
+
*/
|
20
|
+
#rippleTimeoutId = null
|
21
|
+
|
9
22
|
static getStaticConfig() {return {
|
23
|
+
/**
|
24
|
+
* Valid values for badgePosition
|
25
|
+
* @member {String[]} badgePositions=['bottom-left','bottom-right','top-left','top-right']
|
26
|
+
* @protected
|
27
|
+
* @static
|
28
|
+
*/
|
29
|
+
badgePositions: ['bottom-left', 'bottom-right', 'top-left', 'top-right'],
|
10
30
|
/**
|
11
31
|
* Valid values for iconPosition
|
12
32
|
* @member {String[]} iconPositions=['top','right','bottom','left']
|
@@ -27,6 +47,14 @@ class Base extends Component {
|
|
27
47
|
* @protected
|
28
48
|
*/
|
29
49
|
ntype: 'button',
|
50
|
+
/**
|
51
|
+
* @member {String} badgePosition_='top-right'
|
52
|
+
*/
|
53
|
+
badgePosition_: 'top-right',
|
54
|
+
/**
|
55
|
+
* @member {String|null} badgeText_=null
|
56
|
+
*/
|
57
|
+
badgeText_: null,
|
30
58
|
/**
|
31
59
|
* @member {String[]} cls=['neo-button']
|
32
60
|
*/
|
@@ -91,9 +119,9 @@ class Base extends Component {
|
|
91
119
|
urlTarget_: '_blank',
|
92
120
|
/**
|
93
121
|
* True adds an expanding circle on click
|
94
|
-
* @member {Boolean} useRippleEffect_=
|
122
|
+
* @member {Boolean} useRippleEffect_=true
|
95
123
|
*/
|
96
|
-
useRippleEffect_:
|
124
|
+
useRippleEffect_: true,
|
97
125
|
/**
|
98
126
|
* @member {Object} _vdom
|
99
127
|
*/
|
@@ -101,10 +129,49 @@ class Base extends Component {
|
|
101
129
|
{tag: 'button', type: 'button', cn: [
|
102
130
|
{tag: 'span', cls: ['neo-button-glyph']},
|
103
131
|
{tag: 'span', cls: ['neo-button-text']},
|
104
|
-
{
|
132
|
+
{cls: ['neo-button-badge']},
|
133
|
+
{cls: ['neo-button-ripple-wrapper'], cn: [
|
134
|
+
{cls: ['neo-button-ripple']}
|
135
|
+
]}
|
105
136
|
]}
|
106
137
|
}}
|
107
138
|
|
139
|
+
/**
|
140
|
+
* Triggered after the badgePosition config got changed
|
141
|
+
* @param {String} value
|
142
|
+
* @param {String} oldValue
|
143
|
+
* @protected
|
144
|
+
*/
|
145
|
+
afterSetBadgePosition(value, oldValue) {
|
146
|
+
let me = this,
|
147
|
+
badgeEl = me.getBadgeNode(),
|
148
|
+
cls = badgeEl.cls || [],
|
149
|
+
vdom = me.vdom;
|
150
|
+
|
151
|
+
NeoArray.remove(cls, 'neo-' + oldValue);
|
152
|
+
NeoArray.add(cls, 'neo-' + value);
|
153
|
+
|
154
|
+
badgeEl.cls = cls;
|
155
|
+
me.vdom = vdom;
|
156
|
+
}
|
157
|
+
|
158
|
+
/**
|
159
|
+
* Triggered after the badgeText config got changed
|
160
|
+
* @param {String|null} value
|
161
|
+
* @param {String|null} oldValue
|
162
|
+
* @protected
|
163
|
+
*/
|
164
|
+
afterSetBadgeText(value, oldValue) {
|
165
|
+
let me = this,
|
166
|
+
badgeNode = me.getBadgeNode(),
|
167
|
+
vdom = me.vdom;
|
168
|
+
|
169
|
+
badgeNode.html = value;
|
170
|
+
badgeNode.removeDom = !Boolean(value);
|
171
|
+
|
172
|
+
me.vdom = vdom;
|
173
|
+
}
|
174
|
+
|
108
175
|
/**
|
109
176
|
* Triggered after the handler config got changed
|
110
177
|
* @param {String} value
|
@@ -112,17 +179,12 @@ class Base extends Component {
|
|
112
179
|
* @protected
|
113
180
|
*/
|
114
181
|
afterSetHandler(value, oldValue) {
|
115
|
-
|
116
|
-
let me = this,
|
117
|
-
domListeners = me.domListeners;
|
118
|
-
|
119
|
-
domListeners.push({
|
120
|
-
click: value,
|
121
|
-
scope: me.handlerScope || me
|
122
|
-
});
|
182
|
+
let me = this;
|
123
183
|
|
124
|
-
|
125
|
-
|
184
|
+
value && me.addDomListeners({
|
185
|
+
click: value,
|
186
|
+
scope: me.handlerScope || me
|
187
|
+
});
|
126
188
|
}
|
127
189
|
|
128
190
|
/**
|
@@ -134,7 +196,7 @@ class Base extends Component {
|
|
134
196
|
afterSetIconCls(value, oldValue) {
|
135
197
|
let me = this,
|
136
198
|
vdom = me.vdom,
|
137
|
-
iconNode = me.
|
199
|
+
iconNode = me.getIconNode();
|
138
200
|
|
139
201
|
NeoArray.remove(iconNode.cls, oldValue);
|
140
202
|
|
@@ -157,7 +219,7 @@ class Base extends Component {
|
|
157
219
|
afterSetIconColor(value, oldValue) {
|
158
220
|
let me = this,
|
159
221
|
vdom = me.vdom,
|
160
|
-
iconNode = me.
|
222
|
+
iconNode = me.getIconNode();
|
161
223
|
|
162
224
|
if (!iconNode.style) {
|
163
225
|
iconNode.style = {};
|
@@ -206,17 +268,12 @@ class Base extends Component {
|
|
206
268
|
* @protected
|
207
269
|
*/
|
208
270
|
afterSetRoute(value, oldValue) {
|
209
|
-
|
210
|
-
let me = this,
|
211
|
-
domListeners = me.domListeners;
|
212
|
-
|
213
|
-
domListeners.push({
|
214
|
-
click: me.changeRoute,
|
215
|
-
scope: me
|
216
|
-
});
|
271
|
+
let me = this;
|
217
272
|
|
218
|
-
|
219
|
-
|
273
|
+
value && me.addDomListeners({
|
274
|
+
click: me.changeRoute,
|
275
|
+
scope: me
|
276
|
+
});
|
220
277
|
}
|
221
278
|
|
222
279
|
/**
|
@@ -274,17 +331,20 @@ class Base extends Component {
|
|
274
331
|
* @protected
|
275
332
|
*/
|
276
333
|
afterSetUseRippleEffect(value, oldValue) {
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
|
285
|
-
|
286
|
-
me.domListeners = domListeners;
|
334
|
+
let me = this,
|
335
|
+
listener = {click: me.showRipple, scope: me},
|
336
|
+
rippleWrapper = me.getRippleWrapper(),
|
337
|
+
vdom = me.vdom;
|
338
|
+
|
339
|
+
if (!value && oldValue) {
|
340
|
+
me.removeDomListeners(listener);
|
341
|
+
} else if (value) {
|
342
|
+
me.addDomListeners(listener);
|
287
343
|
}
|
344
|
+
|
345
|
+
// setting the config to false should end running ripple animations
|
346
|
+
rippleWrapper.removeDom = true;
|
347
|
+
me.vdom = vdom;
|
288
348
|
}
|
289
349
|
|
290
350
|
/**
|
@@ -322,6 +382,17 @@ class Base extends Component {
|
|
322
382
|
return iconCls;
|
323
383
|
}
|
324
384
|
|
385
|
+
/**
|
386
|
+
* Triggered before the badgePosition config gets changed
|
387
|
+
* @param {String} value
|
388
|
+
* @param {String} oldValue
|
389
|
+
* @returns {String}
|
390
|
+
* @protected
|
391
|
+
*/
|
392
|
+
beforeSetBadgePosition(value, oldValue) {
|
393
|
+
return this.beforeSetEnumValue(value, oldValue, 'badgePosition');
|
394
|
+
}
|
395
|
+
|
325
396
|
/**
|
326
397
|
* Triggered before the iconCls config gets changed. Converts the string into an array if needed.
|
327
398
|
* @param {Array|String|null} value
|
@@ -360,16 +431,43 @@ class Base extends Component {
|
|
360
431
|
}
|
361
432
|
}
|
362
433
|
|
434
|
+
/**
|
435
|
+
* Convenience shortcut
|
436
|
+
* @returns {Object}
|
437
|
+
*/
|
438
|
+
getBadgeNode() {
|
439
|
+
return this.getVdomRoot().cn[2];
|
440
|
+
}
|
441
|
+
|
442
|
+
/**
|
443
|
+
* Convenience shortcut
|
444
|
+
* @returns {Object}
|
445
|
+
*/
|
446
|
+
getIconNode() {
|
447
|
+
return this.getVdomRoot().cn[0];
|
448
|
+
}
|
449
|
+
|
450
|
+
/**
|
451
|
+
* Convenience shortcut
|
452
|
+
* @returns {Object}
|
453
|
+
*/
|
454
|
+
getRippleWrapper() {
|
455
|
+
return this.getVdomRoot().cn[3];
|
456
|
+
}
|
457
|
+
|
363
458
|
/**
|
364
459
|
* @param {Object} data
|
365
460
|
*/
|
366
461
|
async showRipple(data) {
|
367
|
-
let me
|
368
|
-
buttonRect
|
369
|
-
diameter
|
370
|
-
radius
|
371
|
-
vdom
|
372
|
-
|
462
|
+
let me = this,
|
463
|
+
buttonRect = data.path[0].rect,
|
464
|
+
diameter = Math.max(buttonRect.height, buttonRect.width),
|
465
|
+
radius = diameter / 2,
|
466
|
+
vdom = me.vdom,
|
467
|
+
rippleEffectDuration = me.rippleEffectDuration,
|
468
|
+
rippleWrapper = me.getRippleWrapper(),
|
469
|
+
rippleEl = rippleWrapper.cn[0],
|
470
|
+
rippleTimeoutId;
|
373
471
|
|
374
472
|
rippleEl.style = Object.assign(rippleEl.style || {}, {
|
375
473
|
animation: 'none',
|
@@ -379,14 +477,24 @@ class Base extends Component {
|
|
379
477
|
width : `${diameter}px`
|
380
478
|
});
|
381
479
|
|
382
|
-
delete
|
480
|
+
delete rippleWrapper.removeDom;
|
383
481
|
|
384
482
|
me.vdom = vdom;
|
385
483
|
|
386
484
|
await Neo.timeout(1);
|
387
485
|
|
388
|
-
rippleEl.style.animation =
|
486
|
+
rippleEl.style.animation = `ripple ${rippleEffectDuration}ms linear`;
|
389
487
|
me.vdom = vdom;
|
488
|
+
|
489
|
+
me.#rippleTimeoutId = rippleTimeoutId = setTimeout(() => {
|
490
|
+
// we do not want to break animations when clicking multiple times
|
491
|
+
if (me.#rippleTimeoutId === rippleTimeoutId) {
|
492
|
+
me.#rippleTimeoutId = null;
|
493
|
+
|
494
|
+
rippleWrapper.removeDom = true;
|
495
|
+
me.vdom = vdom;
|
496
|
+
}
|
497
|
+
}, rippleEffectDuration);
|
390
498
|
}
|
391
499
|
}
|
392
500
|
|
@@ -178,15 +178,12 @@ class YearComponent extends Component {
|
|
178
178
|
construct(config) {
|
179
179
|
super.construct(config);
|
180
180
|
|
181
|
-
let me
|
182
|
-
domListeners = me.domListeners;
|
181
|
+
let me = this;
|
183
182
|
|
184
|
-
|
183
|
+
me.addDomListeners([
|
185
184
|
{click: me.onNavButtonClick, delegate: '.neo-nav-button', scope: me},
|
186
185
|
{wheel: me.onWheel, scope: me}
|
187
|
-
);
|
188
|
-
|
189
|
-
me.domListeners = domListeners;
|
186
|
+
]);
|
190
187
|
|
191
188
|
if (me.calendarStore.getCount() > 0 && me.eventStore.getCount() > 0) {
|
192
189
|
me.createMonths(true); // silent update
|
@@ -160,15 +160,12 @@ class Component extends BaseComponent {
|
|
160
160
|
construct(config) {
|
161
161
|
super.construct(config);
|
162
162
|
|
163
|
-
let me
|
164
|
-
domListeners = me.domListeners;
|
163
|
+
let me = this;
|
165
164
|
|
166
|
-
|
165
|
+
me.addDomListeners([
|
167
166
|
{dblclick: me.onEventDoubleClick, delegate: 'neo-event', scope: me},
|
168
167
|
{wheel : me.onWheel, scope: me}
|
169
|
-
);
|
170
|
-
|
171
|
-
me.domListeners = domListeners;
|
168
|
+
]);
|
172
169
|
|
173
170
|
if (me.calendarStore.getCount() > 0 && me.eventStore.getCount() > 0) {
|
174
171
|
me.needsEventUpdate = true;
|
@@ -219,15 +219,12 @@ class Component extends BaseComponent {
|
|
219
219
|
construct(config) {
|
220
220
|
super.construct(config);
|
221
221
|
|
222
|
-
let me
|
223
|
-
domListeners = me.domListeners;
|
222
|
+
let me = this;
|
224
223
|
|
225
|
-
|
224
|
+
me.addDomListeners([
|
226
225
|
{dblclick: me.onEventDoubleClick, scope: me, delegate: '.neo-event'},
|
227
226
|
{wheel : me.onWheel, scope: me}
|
228
|
-
);
|
229
|
-
|
230
|
-
me.domListeners = domListeners;
|
227
|
+
]);
|
231
228
|
|
232
229
|
me.timeAxis = Neo.create(TimeAxisComponent, {
|
233
230
|
appName : me.appName,
|
@@ -29,22 +29,19 @@ class DragDrop extends Base {
|
|
29
29
|
construct(config) {
|
30
30
|
super.construct(config);
|
31
31
|
|
32
|
-
let me
|
33
|
-
columnOpts
|
34
|
-
eventOpts
|
35
|
-
owner
|
36
|
-
domListeners = owner.domListeners;
|
32
|
+
let me = this,
|
33
|
+
columnOpts = {scope: me, delegate: '.neo-c-w-column'},
|
34
|
+
eventOpts = {scope: me, delegate: '.neo-event'},
|
35
|
+
owner = me.owner;
|
37
36
|
|
38
|
-
|
37
|
+
owner.addDomListeners([
|
39
38
|
{'drag:end' : me.onColumnDragEnd, ...columnOpts},
|
40
39
|
{'drag:end' : me.onEventDragEnd, ...eventOpts},
|
41
40
|
{'drag:move' : me.onColumnDragMove, ...columnOpts},
|
42
41
|
{'drag:move' : me.onEventDragMove, ...eventOpts},
|
43
42
|
{'drag:start': me.onColumnDragStart, ...columnOpts},
|
44
43
|
{'drag:start': me.onEventDragStart, ...eventOpts}
|
45
|
-
);
|
46
|
-
|
47
|
-
owner.domListeners = domListeners;
|
44
|
+
]);
|
48
45
|
}
|
49
46
|
|
50
47
|
/**
|
package/src/component/Base.mjs
CHANGED
@@ -432,6 +432,22 @@ class Base extends CoreBase {
|
|
432
432
|
this.cls = cls;
|
433
433
|
}
|
434
434
|
|
435
|
+
/**
|
436
|
+
* Convenience shortcut to add additional dom listeners
|
437
|
+
* @param {Object|Object[]} value
|
438
|
+
*/
|
439
|
+
addDomListeners(value) {
|
440
|
+
if (!Array.isArray(value)) {
|
441
|
+
value = [value];
|
442
|
+
}
|
443
|
+
|
444
|
+
let domListeners = this.domListeners;
|
445
|
+
|
446
|
+
domListeners.push(...value);
|
447
|
+
|
448
|
+
this.domListeners = domListeners;
|
449
|
+
}
|
450
|
+
|
435
451
|
/**
|
436
452
|
* Either a string like 'color: red; background-color: blue;'
|
437
453
|
* or an object containing style attributes
|
@@ -99,24 +99,12 @@ class Carousel extends Component {
|
|
99
99
|
construct(config) {
|
100
100
|
super.construct(config);
|
101
101
|
|
102
|
-
let me
|
103
|
-
domListeners = me.domListeners;
|
104
|
-
|
105
|
-
domListeners.push({
|
106
|
-
click: {
|
107
|
-
fn : me.onCarouselBtnClick,
|
108
|
-
delegate: '.neo-carousel-btn',
|
109
|
-
scope : me
|
110
|
-
}
|
111
|
-
}, {
|
112
|
-
click: {
|
113
|
-
fn : me.onClick,
|
114
|
-
delegate: '.neo-carousel-item',
|
115
|
-
scope : me
|
116
|
-
}
|
117
|
-
});
|
102
|
+
let me = this;
|
118
103
|
|
119
|
-
me.
|
104
|
+
me.addDomListeners([
|
105
|
+
{click: me.onCarouselBtnClick, delegate: '.neo-carousel-btn', scope: me},
|
106
|
+
{click: me.onClick, delegate: '.neo-carousel-item', scope: me}
|
107
|
+
]);
|
120
108
|
}
|
121
109
|
|
122
110
|
/**
|
package/src/component/Chip.mjs
CHANGED
@@ -63,19 +63,14 @@ class Chip extends Component {
|
|
63
63
|
construct(config) {
|
64
64
|
super.construct(config);
|
65
65
|
|
66
|
-
let me = this
|
67
|
-
domListeners;
|
66
|
+
let me = this;
|
68
67
|
|
69
68
|
if (me.useDomListeners) {
|
70
|
-
|
71
|
-
|
72
|
-
domListeners.push({
|
69
|
+
me.addDomListeners({
|
73
70
|
click : me.onCloseButtonClick,
|
74
71
|
delegate: 'neo-chip-close-button',
|
75
72
|
scope : me
|
76
73
|
});
|
77
|
-
|
78
|
-
me.domListeners = domListeners;
|
79
74
|
}
|
80
75
|
}
|
81
76
|
|
package/src/component/Circle.mjs
CHANGED
@@ -132,9 +132,8 @@ class Circle extends Component {
|
|
132
132
|
cls : ['neo-circle', 'neo-circle-back']
|
133
133
|
});
|
134
134
|
|
135
|
-
let me
|
136
|
-
|
137
|
-
vdom = me.vdom;
|
135
|
+
let me = this,
|
136
|
+
vdom = me.vdom;
|
138
137
|
|
139
138
|
if (!me.backsideIconPath) {
|
140
139
|
me.backsideIconPath = Neo.config.resourcesPath + 'images/circle/';
|
@@ -144,7 +143,7 @@ class Circle extends Component {
|
|
144
143
|
me.itemImagePath = Neo.config.resourcesPath + 'examples/';
|
145
144
|
}
|
146
145
|
|
147
|
-
|
146
|
+
me.addDomListeners([{
|
148
147
|
mouseenter: me.expand,
|
149
148
|
mouseleave: me.collapse,
|
150
149
|
scope : me
|
@@ -166,9 +165,7 @@ class Circle extends Component {
|
|
166
165
|
wheel : me.onMouseWheel,
|
167
166
|
delegate : 'neo-circle',
|
168
167
|
scope : me
|
169
|
-
});
|
170
|
-
|
171
|
-
me.domListeners = domListeners;
|
168
|
+
}]);
|
172
169
|
|
173
170
|
me.store = Neo.create(Collection, {
|
174
171
|
keyProperty: 'id'
|
@@ -143,15 +143,12 @@ class DateSelector extends Component {
|
|
143
143
|
construct(config) {
|
144
144
|
super.construct(config);
|
145
145
|
|
146
|
-
let me
|
147
|
-
domListeners = me.domListeners;
|
148
|
-
|
149
|
-
domListeners.push({
|
150
|
-
click: {fn: me.onComponentClick, scope: me},
|
151
|
-
wheel: {fn: me.onComponentWheel, scope: me}
|
152
|
-
});
|
146
|
+
let me = this;
|
153
147
|
|
154
|
-
me.
|
148
|
+
me.addDomListeners([
|
149
|
+
{click: me.onComponentClick, scope: me},
|
150
|
+
{wheel: me.onComponentWheel, scope: me}
|
151
|
+
]);
|
155
152
|
|
156
153
|
me.updateHeaderMonth(0, 0, true);
|
157
154
|
me.updateHeaderYear(0, true);
|
@@ -176,18 +176,15 @@ class Gallery extends Component {
|
|
176
176
|
construct(config) {
|
177
177
|
super.construct(config);
|
178
178
|
|
179
|
-
let me
|
180
|
-
domListeners = Neo.clone(me.domListeners, true);
|
179
|
+
let me = this;
|
181
180
|
|
182
181
|
me[itemsMounted] = false;
|
183
182
|
|
184
|
-
|
183
|
+
me.addDomListeners({
|
185
184
|
click: me.onClick,
|
186
185
|
wheel: me.onMouseWheel,
|
187
186
|
scope: me
|
188
187
|
});
|
189
|
-
|
190
|
-
me.domListeners = domListeners;
|
191
188
|
}
|
192
189
|
|
193
190
|
/**
|
@@ -579,8 +576,8 @@ class Gallery extends Component {
|
|
579
576
|
let me = this;
|
580
577
|
|
581
578
|
if (me.mouseWheelEnabled) {
|
582
|
-
me._translateX = me.translateX - (
|
583
|
-
me._translateZ = me.translateZ + (
|
579
|
+
me._translateX = me.translateX - (data.deltaX * me.mouseWheelDeltaX); // silent update
|
580
|
+
me._translateZ = me.translateZ + (data.deltaY * me.mouseWheelDeltaY); // silent update
|
584
581
|
|
585
582
|
me.moveOrigin();
|
586
583
|
|
package/src/component/Helix.mjs
CHANGED
@@ -252,8 +252,7 @@ class Helix extends Component {
|
|
252
252
|
construct(config) {
|
253
253
|
super.construct(config);
|
254
254
|
|
255
|
-
let me
|
256
|
-
domListeners = Neo.clone(me.domListeners, true);
|
255
|
+
let me = this;
|
257
256
|
|
258
257
|
me[itemsMounted] = false;
|
259
258
|
me[lockWheel] = false;
|
@@ -262,13 +261,11 @@ class Helix extends Component {
|
|
262
261
|
me.imageSource = Neo.config.resourcesPath + 'examples/';
|
263
262
|
}
|
264
263
|
|
265
|
-
|
264
|
+
me.addDomListeners({
|
266
265
|
click: me.onClick,
|
267
266
|
wheel: me.onMouseWheel,
|
268
267
|
scope: me
|
269
268
|
});
|
270
|
-
|
271
|
-
me.domListeners = domListeners;
|
272
269
|
}
|
273
270
|
|
274
271
|
/**
|