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.
Files changed (62) hide show
  1. package/apps/realworld/view/HomeComponent.mjs +3 -6
  2. package/apps/realworld/view/article/CommentComponent.mjs +3 -6
  3. package/apps/realworld/view/article/Component.mjs +4 -7
  4. package/apps/realworld/view/article/CreateCommentComponent.mjs +3 -6
  5. package/apps/realworld/view/article/CreateComponent.mjs +3 -6
  6. package/apps/realworld/view/article/PreviewComponent.mjs +2 -5
  7. package/apps/realworld/view/article/TagListComponent.mjs +2 -5
  8. package/apps/realworld/view/user/ProfileComponent.mjs +3 -6
  9. package/apps/realworld/view/user/SettingsComponent.mjs +3 -6
  10. package/apps/realworld/view/user/SignUpComponent.mjs +2 -5
  11. package/apps/realworld2/view/article/PreviewComponent.mjs +2 -5
  12. package/apps/realworld2/view/article/TagListComponent.mjs +2 -5
  13. package/examples/ConfigurationViewport.mjs +1 -1
  14. package/examples/button/base/MainContainer.mjs +75 -12
  15. package/examples/tab/container/MainContainer.mjs +3 -3
  16. package/examples/todoList/version1/MainComponent.mjs +3 -6
  17. package/package.json +1 -1
  18. package/resources/scss/src/button/Base.scss +41 -3
  19. package/resources/scss/src/tab/Container.scss +1 -3
  20. package/resources/scss/src/tab/header/Button.scss +6 -1
  21. package/resources/scss/src/table/header/Button.scss +21 -1
  22. package/resources/scss/theme-dark/button/Base.scss +7 -1
  23. package/resources/scss/theme-dark/table/header/Button.scss +11 -9
  24. package/resources/scss/theme-light/button/Base.scss +7 -1
  25. package/resources/scss/theme-light/table/header/Button.scss +11 -9
  26. package/src/button/Base.mjs +151 -43
  27. package/src/calendar/view/YearComponent.mjs +3 -6
  28. package/src/calendar/view/month/Component.mjs +3 -6
  29. package/src/calendar/view/week/Component.mjs +3 -6
  30. package/src/calendar/view/week/plugin/DragDrop.mjs +6 -9
  31. package/src/component/Base.mjs +16 -0
  32. package/src/component/Carousel.mjs +5 -17
  33. package/src/component/Chip.mjs +2 -7
  34. package/src/component/Circle.mjs +4 -7
  35. package/src/component/DateSelector.mjs +5 -8
  36. package/src/component/Gallery.mjs +4 -7
  37. package/src/component/Helix.mjs +2 -5
  38. package/src/component/Splitter.mjs +3 -6
  39. package/src/component/mwc/Button.mjs +4 -7
  40. package/src/component/mwc/TextField.mjs +2 -5
  41. package/src/draggable/DropZone.mjs +3 -7
  42. package/src/draggable/list/DragZone.mjs +6 -9
  43. package/src/draggable/toolbar/DragZone.mjs +5 -8
  44. package/src/form/Fieldset.mjs +3 -6
  45. package/src/form/field/CheckBox.mjs +2 -5
  46. package/src/form/field/Range.mjs +3 -6
  47. package/src/form/field/Text.mjs +2 -5
  48. package/src/form/field/trigger/Base.mjs +4 -12
  49. package/src/grid/header/Button.mjs +3 -6
  50. package/src/list/Base.mjs +4 -6
  51. package/src/plugin/Resizable.mjs +3 -6
  52. package/src/selection/grid/CellModel.mjs +3 -6
  53. package/src/selection/grid/ColumnModel.mjs +3 -6
  54. package/src/selection/grid/RowModel.mjs +3 -6
  55. package/src/selection/table/CellModel.mjs +3 -6
  56. package/src/selection/table/ColumnModel.mjs +3 -6
  57. package/src/selection/table/RowModel.mjs +3 -6
  58. package/src/sitemap/Component.mjs +3 -6
  59. package/src/tab/header/Button.mjs +13 -2
  60. package/src/table/header/Button.mjs +9 -5
  61. package/src/tooltip/Base.mjs +5 -15
  62. package/src/util/KeyNavigation.mjs +8 -13
@@ -95,15 +95,12 @@ class HomeComponent extends Component {
95
95
  cls : 'prevent-click'
96
96
  });
97
97
 
98
- let me = this,
99
- domListeners = me.domListeners;
98
+ let me = this;
100
99
 
101
- domListeners.push(
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 = this,
70
- domListeners = me.domListeners;
69
+ let me = this;
71
70
 
72
- domListeners.push(
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 = this,
148
- domListeners = me.domListeners;
147
+ let me = this;
149
148
 
150
- domListeners.push(
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 = this,
50
- domListeners = me.domListeners,
51
- vdom = me.vdom;
49
+ let me = this,
50
+ vdom = me.vdom;
52
51
 
53
- domListeners.push({
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 = this,
86
- domListeners = me.domListeners;
85
+ let me = this;
87
86
 
88
- domListeners.push(
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 = this,
88
- domListeners = me.domListeners;
87
+ let me = this;
89
88
 
90
- domListeners.push({
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 = this,
59
- domListeners = me.domListeners;
58
+ let me = this;
60
59
 
61
- domListeners.push({
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 = this,
109
- domListeners = me.domListeners;
108
+ let me = this;
110
109
 
111
- domListeners.push(
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 = this,
84
- domListeners = me.domListeners;
83
+ let me = this;
85
84
 
86
- domListeners.push(
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 = this,
71
- domListeners = me.domListeners;
70
+ let me = this;
72
71
 
73
- domListeners.push({
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 = this,
101
- domListeners = me.domListeners;
100
+ let me = this;
102
101
 
103
- domListeners.push({
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 = this,
63
- domListeners = me.domListeners;
62
+ let me = this;
64
63
 
65
- domListeners.push({
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: 110,
16
- configItemWidth : 230,
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: 'Top'
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: 'Right'
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: 'Bottom'
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: 'Left'
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,18 +150,19 @@ 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
- height : 50,
98
- iconCls : 'fa fa-home',
99
- module : Button,
100
- text : 'Hello World',
101
- useRippleEffect: true,
102
- width : 150,
160
+ module : Button,
161
+ badgeText: 'Badge',
162
+ height : 50,
163
+ iconCls : 'fa fa-home',
164
+ text : 'Hello World',
165
+ width : 150,
103
166
 
104
167
  handler: (data) => {
105
168
  console.log('button click =>', data.component.id);
@@ -140,13 +140,13 @@ class MainContainer extends ConfigurationViewport {
140
140
  },
141
141
 
142
142
  items: [{
143
- tabButtonConfig: {iconCls: 'fa fa-home', text : 'Tab 1'},
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 : 'Tab 2'},
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 : 'Tab 3'},
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 = this,
47
- domListeners = me.domListeners || [];
46
+ let me = this;
48
47
 
49
- domListeners.push(
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.2.7",
3
+ "version": "4.3.0",
4
4
  "description": "The webworkers driven UI framework",
5
5
  "type": "module",
6
6
  "repository": {
@@ -27,7 +27,6 @@
27
27
  flex-direction : row;
28
28
  justify-content : center;
29
29
  margin : v(button-margin);
30
- overflow : hidden;
31
30
  padding : v(button-padding);
32
31
  position : relative;
33
32
  text-decoration : none; // for url buttons => links
@@ -59,22 +58,60 @@
59
58
  border-color: v(button-pressed-border-color);
60
59
  }
61
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
+
62
91
  .neo-button-glyph {
63
92
  color : v(button-glyph-color);
64
93
  font-size : 12px;
65
94
  margin : 0 6px 0 0;
66
95
  pointer-events: none;
96
+ z-index : 2;
67
97
  }
68
98
 
69
99
  .neo-button-ripple {
70
- background-color: red;
100
+ background-color: v(button-ripple-background-color);
71
101
  border-radius : 50%;
72
102
  opacity : 0;
73
- pointer-events : none;
74
103
  position : absolute;
75
104
  transform : scale(4);
76
105
  }
77
106
 
107
+ .neo-button-ripple-wrapper {
108
+ height : 100%;
109
+ overflow : hidden;
110
+ pointer-events: none;
111
+ position : absolute;
112
+ width : 100%;
113
+ }
114
+
78
115
  .neo-button-text {
79
116
  color : v(button-text-color);
80
117
  font-family : v(button-text-font-family);
@@ -83,6 +120,7 @@
83
120
  line-height : v(button-text-line-height);
84
121
  pointer-events: none;
85
122
  text-transform: v(button-text-transform);
123
+ z-index : 2;
86
124
  }
87
125
 
88
126
  &:focus {
@@ -1,6 +1,4 @@
1
1
  .neo-tab-container {
2
- overflow: hidden;
3
-
4
2
  &.neo-bottom {
5
3
  > .neo-tab-content-container {
6
4
  border-bottom: 0;
@@ -37,4 +35,4 @@
37
35
  .neo-tab-header-toolbar {
38
36
  background-color: transparent;
39
37
  padding : 0;
40
- }
38
+ }
@@ -42,6 +42,11 @@
42
42
  }
43
43
  }
44
44
 
45
+ .neo-button-badge {
46
+ font-size : 10px;
47
+ text-transform: none;
48
+ }
49
+
45
50
  .neo-button-glyph {
46
51
  color: v(tab-button-glyph-color);
47
52
  }
@@ -59,4 +64,4 @@
59
64
  width : 100%;
60
65
  z-index : 2;
61
66
  }
62
- }
67
+ }
@@ -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
+ }
@@ -6,6 +6,8 @@ $neoMap: map-merge($neoMap, (
6
6
  'button-background-image' : linear-gradient(#434749, #323536),
7
7
  'button-background-gradient-end' : #323536,
8
8
  'button-background-gradient-start': #434749,
9
+ 'button-badge-background-color' : #64b5f6,
10
+ 'button-badge-color' : #282828,
9
11
  'button-border' : 1px solid #2b2b2b,
10
12
  'button-border-radius' : 0,
11
13
  'button-glyph-color' : #bbb,
@@ -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' : #5d83a7,
20
+ 'button-ripple-background-color' : darken(#5d83a7, 10%),
18
21
  'button-text-color' : #bbb,
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
+ }