neo.mjs 4.2.6 → 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 +80 -19
- package/examples/tab/container/MainContainer.mjs +3 -3
- package/examples/todoList/version1/MainComponent.mjs +3 -6
- package/package.json +2 -2
- package/resources/scss/src/button/Base.scss +59 -0
- 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 +186 -23
- 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 +17 -1
- 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
- package/src/worker/App.mjs +3 -3
@@ -95,15 +95,12 @@ class HomeComponent extends Component {
|
|
95
95
|
cls : 'prevent-click'
|
96
96
|
});
|
97
97
|
|
98
|
-
let me
|
99
|
-
domListeners = me.domListeners;
|
98
|
+
let me = this;
|
100
99
|
|
101
|
-
|
100
|
+
me.addDomListeners([
|
102
101
|
{click: {fn: me.onNavLinkClick, delegate: '.nav-link', scope: me}},
|
103
102
|
{click: {fn: me.onPageNavLinkClick, delegate: '.page-link', scope: me}}
|
104
|
-
);
|
105
|
-
|
106
|
-
me.domListeners = domListeners;
|
103
|
+
]);
|
107
104
|
|
108
105
|
me.getController().on({
|
109
106
|
afterSetCurrentUser: me.onCurrentUserChange,
|
@@ -66,15 +66,12 @@ class CommentComponent extends Component {
|
|
66
66
|
construct(config) {
|
67
67
|
super.construct(config);
|
68
68
|
|
69
|
-
let me
|
70
|
-
domListeners = me.domListeners;
|
69
|
+
let me = this;
|
71
70
|
|
72
|
-
|
71
|
+
me.addDomListeners([
|
73
72
|
{click: {fn: me.onDeleteButtonClick, delegate: '.ion-trash-a', scope: me}}
|
74
73
|
/*{click: {fn: me.onEditButtonClick, delegate: '.ion-edit', scope: me}*/
|
75
|
-
);
|
76
|
-
|
77
|
-
me.domListeners = domListeners;
|
74
|
+
]);
|
78
75
|
|
79
76
|
me.getController().on({
|
80
77
|
afterSetCurrentUser: me.onCurrentUserChange,
|
@@ -144,17 +144,14 @@ class Component extends BaseComponent {
|
|
144
144
|
construct(config) {
|
145
145
|
super.construct(config);
|
146
146
|
|
147
|
-
let me
|
148
|
-
domListeners = me.domListeners;
|
147
|
+
let me = this;
|
149
148
|
|
150
|
-
|
149
|
+
me.addDomListeners([
|
151
150
|
{click: {fn: me.onDeleteButtonClick, delegate: '.delete-button', scope: me}},
|
152
151
|
{click: {fn: me.onEditButtonClick, delegate: '.edit-button', scope: me}},
|
153
152
|
{click: {fn: me.onFavoriteButtonClick, delegate: '.favorite-button', scope: me}},
|
154
|
-
{click: {fn: me.onFollowButtonClick, delegate: '.follow-button', scope: me}
|
155
|
-
|
156
|
-
|
157
|
-
me.domListeners = domListeners;
|
153
|
+
{click: {fn: me.onFollowButtonClick, delegate: '.follow-button', scope: me}}
|
154
|
+
]);
|
158
155
|
|
159
156
|
me.getController().on({
|
160
157
|
afterSetCurrentUser: me.onCurrentUserChange,
|
@@ -46,11 +46,10 @@ class CreateCommentComponent extends Component {
|
|
46
46
|
construct(config) {
|
47
47
|
super.construct(config);
|
48
48
|
|
49
|
-
let me
|
50
|
-
|
51
|
-
vdom = me.vdom;
|
49
|
+
let me = this,
|
50
|
+
vdom = me.vdom;
|
52
51
|
|
53
|
-
|
52
|
+
me.addDomListeners({
|
54
53
|
click: {
|
55
54
|
fn : me.onSubmitButtonClick,
|
56
55
|
delegate: '.btn-primary',
|
@@ -58,8 +57,6 @@ class CreateCommentComponent extends Component {
|
|
58
57
|
}
|
59
58
|
});
|
60
59
|
|
61
|
-
me.domListeners = domListeners;
|
62
|
-
|
63
60
|
vdom.cn[0].cn[0].id = me.getInputElId();
|
64
61
|
me.vdom = vdom;
|
65
62
|
|
@@ -82,16 +82,13 @@ class CreateComponent extends Component {
|
|
82
82
|
construct(config) {
|
83
83
|
super.construct(config);
|
84
84
|
|
85
|
-
let me
|
86
|
-
domListeners = me.domListeners;
|
85
|
+
let me = this;
|
87
86
|
|
88
|
-
|
87
|
+
me.addDomListeners([
|
89
88
|
{click : {fn: me.onSubmitButtonClick, delegate: '.btn-primary', scope: me}},
|
90
89
|
{click : {fn: me.onTagClose, delegate: '.ion-close-round', scope: me}},
|
91
90
|
{keydown: {fn: me.onFieldTagsKeyDown, delegate: '.field-tags', scope: me}}
|
92
|
-
);
|
93
|
-
|
94
|
-
me.domListeners = domListeners;
|
91
|
+
]);
|
95
92
|
}
|
96
93
|
|
97
94
|
/**
|
@@ -84,18 +84,15 @@ class PreviewComponent extends Component {
|
|
84
84
|
construct(config) {
|
85
85
|
super.construct(config);
|
86
86
|
|
87
|
-
let me
|
88
|
-
domListeners = me.domListeners;
|
87
|
+
let me = this;
|
89
88
|
|
90
|
-
|
89
|
+
me.addDomListeners({
|
91
90
|
click: {
|
92
91
|
fn : me.onFavoriteButtonClick,
|
93
92
|
delegate: '.pull-xs-right',
|
94
93
|
scope : me
|
95
94
|
}
|
96
95
|
});
|
97
|
-
|
98
|
-
me.domListeners = domListeners;
|
99
96
|
}
|
100
97
|
|
101
98
|
/**
|
@@ -55,18 +55,15 @@ class TagListComponent extends Component {
|
|
55
55
|
cls : 'tag-pill'
|
56
56
|
});
|
57
57
|
|
58
|
-
let me
|
59
|
-
domListeners = me.domListeners;
|
58
|
+
let me = this;
|
60
59
|
|
61
|
-
|
60
|
+
me.addDomListeners({
|
62
61
|
click: {
|
63
62
|
fn : me.onTagLinkClick,
|
64
63
|
delegate: '.tag-pill',
|
65
64
|
scope : me
|
66
65
|
}
|
67
66
|
});
|
68
|
-
|
69
|
-
me.domListeners = domListeners;
|
70
67
|
}
|
71
68
|
|
72
69
|
/**
|
@@ -105,15 +105,12 @@ class ProfileComponent extends Component {
|
|
105
105
|
cls : 'prevent-click'
|
106
106
|
});
|
107
107
|
|
108
|
-
let me
|
109
|
-
domListeners = me.domListeners;
|
108
|
+
let me = this;
|
110
109
|
|
111
|
-
|
110
|
+
me.addDomListeners([
|
112
111
|
{click: {fn: me.onFollowButtonClick, delegate: '.follow-button', scope: me}},
|
113
112
|
{click: {fn: me.onNavLinkClick, delegate: '.nav-link', scope: me}}
|
114
|
-
);
|
115
|
-
|
116
|
-
me.domListeners = domListeners;
|
113
|
+
]);
|
117
114
|
|
118
115
|
me.getController().on({
|
119
116
|
afterSetCurrentUser: me.onCurrentUserChange,
|
@@ -80,15 +80,12 @@ class SettingsComponent extends Component {
|
|
80
80
|
construct(config) {
|
81
81
|
super.construct(config);
|
82
82
|
|
83
|
-
let me
|
84
|
-
domListeners = me.domListeners;
|
83
|
+
let me = this;
|
85
84
|
|
86
|
-
|
85
|
+
me.addDomListeners([
|
87
86
|
{click: {fn: me.onLogoutButtonClick, delegate: '.btn-outline-danger', scope: me}},
|
88
87
|
{click: {fn: me.onSubmitButtonClick, delegate: '.btn-primary', scope: me}}
|
89
|
-
);
|
90
|
-
|
91
|
-
me.domListeners = domListeners;
|
88
|
+
]);
|
92
89
|
|
93
90
|
me.getController().on({
|
94
91
|
afterSetCurrentUser: me.onCurrentUserChange,
|
@@ -67,18 +67,15 @@ class SignUpComponent extends Component {
|
|
67
67
|
construct(config) {
|
68
68
|
super.construct(config);
|
69
69
|
|
70
|
-
let me
|
71
|
-
domListeners = me.domListeners;
|
70
|
+
let me = this;
|
72
71
|
|
73
|
-
|
72
|
+
me.addDomListeners({
|
74
73
|
click: {
|
75
74
|
fn : me.onSubmitButtonClick,
|
76
75
|
delegate: '.btn-primary',
|
77
76
|
scope : me
|
78
77
|
}
|
79
78
|
});
|
80
|
-
|
81
|
-
me.domListeners = domListeners;
|
82
79
|
}
|
83
80
|
|
84
81
|
/**
|
@@ -97,18 +97,15 @@ class PreviewComponent extends Component {
|
|
97
97
|
construct(config) {
|
98
98
|
super.construct(config);
|
99
99
|
|
100
|
-
let me
|
101
|
-
domListeners = me.domListeners;
|
100
|
+
let me = this;
|
102
101
|
|
103
|
-
|
102
|
+
me.addDomListeners({
|
104
103
|
click: {
|
105
104
|
fn : me.onFavoriteButtonClick,
|
106
105
|
delegate: '.pull-xs-right',
|
107
106
|
scope : me
|
108
107
|
}
|
109
108
|
});
|
110
|
-
|
111
|
-
me.domListeners = domListeners;
|
112
109
|
}
|
113
110
|
|
114
111
|
/**
|
@@ -59,18 +59,15 @@ class TagListComponent extends Component {
|
|
59
59
|
cls : 'tag-pill'
|
60
60
|
});
|
61
61
|
|
62
|
-
let me
|
63
|
-
domListeners = me.domListeners;
|
62
|
+
let me = this;
|
64
63
|
|
65
|
-
|
64
|
+
me.addDomListeners({
|
66
65
|
click: {
|
67
66
|
fn : me.onTagLinkClick,
|
68
67
|
delegate: '.tag-pill',
|
69
68
|
scope : me
|
70
69
|
}
|
71
70
|
});
|
72
|
-
|
73
|
-
me.domListeners = domListeners;
|
74
71
|
}
|
75
72
|
|
76
73
|
/**
|
@@ -74,7 +74,7 @@ class ConfigurationViewport extends Viewport {
|
|
74
74
|
module: Panel,
|
75
75
|
cls : ['neo-panel', 'neo-container', 'neo-configuration-panel'],
|
76
76
|
flex : me.configPanelFlex,
|
77
|
-
style : {margin: '20px'},
|
77
|
+
style : {margin: '20px', minWidth: '350px'},
|
78
78
|
|
79
79
|
containerConfig: {
|
80
80
|
style: {overflowY: 'scroll'}
|
@@ -1,4 +1,5 @@
|
|
1
1
|
import Button from '../../../src/button/Base.mjs';
|
2
|
+
import CheckBox from '../../../src/form/field/CheckBox.mjs';
|
2
3
|
import ConfigurationViewport from '../../ConfigurationViewport.mjs';
|
3
4
|
import Radio from '../../../src/form/field/Radio.mjs';
|
4
5
|
import NumberField from '../../../src/form/field/Number.mjs';
|
@@ -12,8 +13,8 @@ class MainContainer extends ConfigurationViewport {
|
|
12
13
|
static getConfig() {return {
|
13
14
|
className : 'Neo.examples.button.base.MainContainer',
|
14
15
|
autoMount : true,
|
15
|
-
configItemLabelWidth:
|
16
|
-
configItemWidth :
|
16
|
+
configItemLabelWidth: 160,
|
17
|
+
configItemWidth : 280,
|
17
18
|
layout : {ntype: 'hbox', align: 'stretch'}
|
18
19
|
}}
|
19
20
|
|
@@ -21,6 +22,50 @@ class MainContainer extends ConfigurationViewport {
|
|
21
22
|
let me = this;
|
22
23
|
|
23
24
|
return [{
|
25
|
+
module : Radio,
|
26
|
+
checked : me.exampleComponent.badgePosition === 'bottom-left',
|
27
|
+
hideValueLabel: false,
|
28
|
+
labelText : 'badgePosition',
|
29
|
+
listeners : {change: me.onRadioChange.bind(me, 'badgePosition', 'bottom-left')},
|
30
|
+
name : 'badgePosition',
|
31
|
+
valueLabelText: 'bottom-left'
|
32
|
+
}, {
|
33
|
+
module : Radio,
|
34
|
+
checked : me.exampleComponent.badgePosition === 'bottom-right',
|
35
|
+
hideValueLabel: false,
|
36
|
+
labelText : '',
|
37
|
+
listeners : {change: me.onRadioChange.bind(me, 'badgePosition', 'bottom-right')},
|
38
|
+
name : 'badgePosition',
|
39
|
+
valueLabelText: 'bottom-right'
|
40
|
+
}, {
|
41
|
+
module : Radio,
|
42
|
+
checked : me.exampleComponent.badgePosition === 'top-left',
|
43
|
+
hideValueLabel: false,
|
44
|
+
labelText : '',
|
45
|
+
listeners : {change: me.onRadioChange.bind(me, 'badgePosition', 'top-left')},
|
46
|
+
name : 'badgePosition',
|
47
|
+
valueLabelText: 'top-left'
|
48
|
+
}, {
|
49
|
+
module : Radio,
|
50
|
+
checked : me.exampleComponent.badgePosition === 'top-right',
|
51
|
+
hideValueLabel: false,
|
52
|
+
labelText : '',
|
53
|
+
listeners : {change: me.onRadioChange.bind(me, 'badgePosition', 'top-right')},
|
54
|
+
name : 'badgePosition',
|
55
|
+
valueLabelText: 'top-right'
|
56
|
+
}, {
|
57
|
+
module : TextField,
|
58
|
+
labelText : 'badgeText',
|
59
|
+
listeners : {change: me.onConfigChange.bind(me, 'badgeText')},
|
60
|
+
style : {marginTop: '10px'},
|
61
|
+
value : me.exampleComponent.badgeText
|
62
|
+
}, {
|
63
|
+
module : CheckBox,
|
64
|
+
checked : me.exampleComponent.disabled,
|
65
|
+
labelText: 'disabled',
|
66
|
+
listeners: {change: me.onConfigChange.bind(me, 'disabled')},
|
67
|
+
style : {marginTop: '10px'}
|
68
|
+
}, {
|
24
69
|
module : NumberField,
|
25
70
|
clearable : true,
|
26
71
|
labelText : 'height',
|
@@ -28,6 +73,7 @@ class MainContainer extends ConfigurationViewport {
|
|
28
73
|
maxValue : 300,
|
29
74
|
minValue : 30,
|
30
75
|
stepSize : 5,
|
76
|
+
style : {marginTop: '10px'},
|
31
77
|
value : me.exampleComponent.height
|
32
78
|
}, {
|
33
79
|
module : TextField, // todo: selectField with options
|
@@ -48,7 +94,7 @@ class MainContainer extends ConfigurationViewport {
|
|
48
94
|
listeners : {change: me.onRadioChange.bind(me, 'iconPosition', 'top')},
|
49
95
|
name : 'iconPosition',
|
50
96
|
style : {marginTop: '10px'},
|
51
|
-
valueLabelText: '
|
97
|
+
valueLabelText: 'top'
|
52
98
|
}, {
|
53
99
|
module : Radio,
|
54
100
|
checked : me.exampleComponent.iconPosition === 'right',
|
@@ -56,7 +102,7 @@ class MainContainer extends ConfigurationViewport {
|
|
56
102
|
labelText : '',
|
57
103
|
listeners : {change: me.onRadioChange.bind(me, 'iconPosition', 'right')},
|
58
104
|
name : 'iconPosition',
|
59
|
-
valueLabelText: '
|
105
|
+
valueLabelText: 'right'
|
60
106
|
}, {
|
61
107
|
module : Radio,
|
62
108
|
checked : me.exampleComponent.iconPosition === 'bottom',
|
@@ -64,7 +110,7 @@ class MainContainer extends ConfigurationViewport {
|
|
64
110
|
labelText : '',
|
65
111
|
listeners : {change: me.onRadioChange.bind(me, 'iconPosition', 'bottom')},
|
66
112
|
name : 'iconPosition',
|
67
|
-
valueLabelText: '
|
113
|
+
valueLabelText: 'bottom'
|
68
114
|
}, {
|
69
115
|
module : Radio,
|
70
116
|
checked : me.exampleComponent.iconPosition === 'left',
|
@@ -72,7 +118,17 @@ class MainContainer extends ConfigurationViewport {
|
|
72
118
|
labelText : '',
|
73
119
|
listeners : {change: me.onRadioChange.bind(me, 'iconPosition', 'left')},
|
74
120
|
name : 'iconPosition',
|
75
|
-
valueLabelText: '
|
121
|
+
valueLabelText: 'left'
|
122
|
+
}, {
|
123
|
+
module : NumberField,
|
124
|
+
clearable : true,
|
125
|
+
labelText : 'rippleEffectDuration',
|
126
|
+
listeners : {change: me.onConfigChange.bind(me, 'rippleEffectDuration')},
|
127
|
+
maxValue : 5000,
|
128
|
+
minValue : 100,
|
129
|
+
stepSize : 100,
|
130
|
+
style : {marginTop: '10px'},
|
131
|
+
value : me.exampleComponent.rippleEffectDuration
|
76
132
|
}, {
|
77
133
|
module : TextField,
|
78
134
|
clearable : true,
|
@@ -80,6 +136,12 @@ class MainContainer extends ConfigurationViewport {
|
|
80
136
|
listeners : {change: me.onConfigChange.bind(me, 'text')},
|
81
137
|
style : {marginTop: '10px'},
|
82
138
|
value : me.exampleComponent.text
|
139
|
+
}, {
|
140
|
+
module : CheckBox,
|
141
|
+
checked : me.exampleComponent.useRippleEffect,
|
142
|
+
labelText: 'useRippleEffect',
|
143
|
+
listeners: {change: me.onConfigChange.bind(me, 'useRippleEffect')},
|
144
|
+
style : {marginTop: '10px'}
|
83
145
|
}, {
|
84
146
|
module : NumberField,
|
85
147
|
clearable : true,
|
@@ -88,28 +150,27 @@ class MainContainer extends ConfigurationViewport {
|
|
88
150
|
maxValue : 300,
|
89
151
|
minValue : 100,
|
90
152
|
stepSize : 5,
|
153
|
+
style : {marginTop: '10px'},
|
91
154
|
value : me.exampleComponent.width
|
92
155
|
}];
|
93
156
|
}
|
94
157
|
|
95
158
|
createExampleComponent() {
|
96
159
|
return Neo.create({
|
97
|
-
|
98
|
-
|
99
|
-
|
160
|
+
module : Button,
|
161
|
+
badgeText: 'Badge',
|
162
|
+
height : 50,
|
163
|
+
iconCls : 'fa fa-home',
|
164
|
+
text : 'Hello World',
|
165
|
+
width : 150,
|
166
|
+
|
167
|
+
handler: (data) => {
|
168
|
+
console.log('button click =>', data.component.id);
|
169
|
+
}
|
100
170
|
|
101
171
|
/*tooltips: [{
|
102
172
|
text: 'Hello World Tooltip'
|
103
|
-
}]
|
104
|
-
|
105
|
-
domListeners: {
|
106
|
-
click: {
|
107
|
-
fn: (data) => {
|
108
|
-
let button = Neo.getComponent(data.target.id);
|
109
|
-
console.log('button click =>', button.id);
|
110
|
-
}
|
111
|
-
}
|
112
|
-
}
|
173
|
+
}]*/
|
113
174
|
});
|
114
175
|
}
|
115
176
|
}
|
@@ -140,13 +140,13 @@ class MainContainer extends ConfigurationViewport {
|
|
140
140
|
},
|
141
141
|
|
142
142
|
items: [{
|
143
|
-
tabButtonConfig: {iconCls: 'fa fa-home', text
|
143
|
+
tabButtonConfig: {iconCls: 'fa fa-home', text: 'Tab 1'},
|
144
144
|
vdom : {innerHTML: 'Tab 1 Content'}
|
145
145
|
}, {
|
146
|
-
tabButtonConfig: {iconCls: 'fa fa-play-circle', text
|
146
|
+
tabButtonConfig: {iconCls: 'fa fa-play-circle', text: 'Tab 2'},
|
147
147
|
vdom : {innerHTML: 'Tab 2 Content'}
|
148
148
|
}, {
|
149
|
-
tabButtonConfig: {iconCls: 'fa fa-user', text
|
149
|
+
tabButtonConfig: {iconCls: 'fa fa-user', text: 'Tab 3', badgeText: 'hello'},
|
150
150
|
vdom : {innerHTML: 'Tab 3 Content'}
|
151
151
|
}],
|
152
152
|
|
@@ -43,16 +43,13 @@ class MainComponent extends Component {
|
|
43
43
|
construct(config) {
|
44
44
|
super.construct(config);
|
45
45
|
|
46
|
-
let me
|
47
|
-
domListeners = me.domListeners || [];
|
46
|
+
let me = this;
|
48
47
|
|
49
|
-
|
48
|
+
me.addDomListeners([
|
50
49
|
{click: me.onAddButtonClick, delegate: 'todo-add-button'},
|
51
50
|
{click: me.onCheckIconClick, delegate: 'todo-item'},
|
52
51
|
{input: me.onInputFieldChange, delegate: 'todo-input'}
|
53
|
-
);
|
54
|
-
|
55
|
-
me.domListeners = domListeners;
|
52
|
+
]);
|
56
53
|
|
57
54
|
me.createItems(me.data || []);
|
58
55
|
}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "neo.mjs",
|
3
|
-
"version": "4.
|
3
|
+
"version": "4.3.0",
|
4
4
|
"description": "The webworkers driven UI framework",
|
5
5
|
"type": "module",
|
6
6
|
"repository": {
|
@@ -55,7 +55,7 @@
|
|
55
55
|
"neo-jsdoc": "^1.0.1",
|
56
56
|
"neo-jsdoc-x": "^1.0.4",
|
57
57
|
"postcss": "^8.4.16",
|
58
|
-
"sass": "^1.
|
58
|
+
"sass": "^1.55.0",
|
59
59
|
"webpack": "^5.74.0",
|
60
60
|
"webpack-cli": "^4.10.0",
|
61
61
|
"webpack-dev-server": "4.11.1",
|
@@ -1,3 +1,14 @@
|
|
1
|
+
@keyframes ripple {
|
2
|
+
from {
|
3
|
+
opacity : 1;
|
4
|
+
transform: scale(0);
|
5
|
+
}
|
6
|
+
to {
|
7
|
+
opacity : 0;
|
8
|
+
transform: scale(4);
|
9
|
+
}
|
10
|
+
}
|
11
|
+
|
1
12
|
.neo-disabled {
|
2
13
|
.neo-button {
|
3
14
|
cursor: default;
|
@@ -47,11 +58,58 @@
|
|
47
58
|
border-color: v(button-pressed-border-color);
|
48
59
|
}
|
49
60
|
|
61
|
+
.neo-button-badge {
|
62
|
+
background-color: v(button-badge-background-color);
|
63
|
+
border-radius : 5px;
|
64
|
+
color : v(button-badge-color);
|
65
|
+
margin-left : auto;
|
66
|
+
padding : 3px;
|
67
|
+
position : absolute;
|
68
|
+
z-index : 2;
|
69
|
+
|
70
|
+
&.neo-bottom-left {
|
71
|
+
bottom: -10px;
|
72
|
+
left : -10px;
|
73
|
+
}
|
74
|
+
|
75
|
+
&.neo-bottom-right {
|
76
|
+
bottom: -10px;
|
77
|
+
right : -10px;
|
78
|
+
}
|
79
|
+
|
80
|
+
&.neo-top-left {
|
81
|
+
left: -10px;
|
82
|
+
top : -10px;
|
83
|
+
}
|
84
|
+
|
85
|
+
&.neo-top-right {
|
86
|
+
right: -10px;
|
87
|
+
top : -10px;
|
88
|
+
}
|
89
|
+
}
|
90
|
+
|
50
91
|
.neo-button-glyph {
|
51
92
|
color : v(button-glyph-color);
|
52
93
|
font-size : 12px;
|
53
94
|
margin : 0 6px 0 0;
|
54
95
|
pointer-events: none;
|
96
|
+
z-index : 2;
|
97
|
+
}
|
98
|
+
|
99
|
+
.neo-button-ripple {
|
100
|
+
background-color: v(button-ripple-background-color);
|
101
|
+
border-radius : 50%;
|
102
|
+
opacity : 0;
|
103
|
+
position : absolute;
|
104
|
+
transform : scale(4);
|
105
|
+
}
|
106
|
+
|
107
|
+
.neo-button-ripple-wrapper {
|
108
|
+
height : 100%;
|
109
|
+
overflow : hidden;
|
110
|
+
pointer-events: none;
|
111
|
+
position : absolute;
|
112
|
+
width : 100%;
|
55
113
|
}
|
56
114
|
|
57
115
|
.neo-button-text {
|
@@ -62,6 +120,7 @@
|
|
62
120
|
line-height : v(button-text-line-height);
|
63
121
|
pointer-events: none;
|
64
122
|
text-transform: v(button-text-transform);
|
123
|
+
z-index : 2;
|
65
124
|
}
|
66
125
|
|
67
126
|
&:focus {
|
@@ -59,9 +59,29 @@
|
|
59
59
|
pointer-events: none;
|
60
60
|
transition : opacity 150ms cubic-bezier(0.4, 0, 0.2, 1), transform 400ms cubic-bezier(0.4, 0, 0.2, 1);
|
61
61
|
will-change : opacity, transform;
|
62
|
+
z-index : 2;
|
63
|
+
}
|
64
|
+
|
65
|
+
.neo-button-ripple {
|
66
|
+
background-color: v(table-header-button-ripple-background-color);
|
67
|
+
border-radius : 50%;
|
68
|
+
opacity : 0;
|
69
|
+
position : absolute;
|
70
|
+
transform : scale(4);
|
71
|
+
}
|
72
|
+
|
73
|
+
.neo-button-ripple-wrapper {
|
74
|
+
height : 100%;
|
75
|
+
left : 0;
|
76
|
+
overflow : hidden;
|
77
|
+
pointer-events: none;
|
78
|
+
position : absolute;
|
79
|
+
top : 0;
|
80
|
+
width : 100%;
|
62
81
|
}
|
63
82
|
|
64
83
|
.neo-button-text {
|
65
84
|
pointer-events: none;
|
85
|
+
z-index : 2;
|
66
86
|
}
|
67
|
-
}
|
87
|
+
}
|