neo.mjs 4.0.93 → 4.1.1

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 (53) hide show
  1. package/examples/grid/covid/GridContainer.mjs +113 -0
  2. package/examples/grid/covid/GridContainerController.mjs +62 -0
  3. package/examples/grid/covid/MainContainer.mjs +36 -0
  4. package/examples/grid/covid/Model.mjs +65 -0
  5. package/examples/grid/covid/Store.mjs +35 -0
  6. package/examples/grid/covid/Util.mjs +165 -0
  7. package/examples/grid/covid/app.mjs +6 -0
  8. package/examples/grid/covid/index.html +11 -0
  9. package/examples/grid/covid/neo-config.json +8 -0
  10. package/examples/table/covid/MainContainer.mjs +36 -0
  11. package/examples/table/covid/Model.mjs +65 -0
  12. package/examples/table/covid/Store.mjs +35 -0
  13. package/examples/table/covid/TableContainer.mjs +112 -0
  14. package/examples/table/covid/TableContainerController.mjs +62 -0
  15. package/examples/table/covid/Util.mjs +165 -0
  16. package/examples/table/covid/app.mjs +6 -0
  17. package/examples/table/covid/index.html +11 -0
  18. package/examples/table/covid/neo-config.json +8 -0
  19. package/package.json +4 -4
  20. package/resources/scss/src/examples/grid/covid/GridContainer.scss +21 -0
  21. package/resources/scss/src/examples/table/covid/TableContainer.scss +21 -0
  22. package/resources/scss/src/grid/Container.scss +5 -33
  23. package/resources/scss/src/grid/View.scss +73 -1
  24. package/resources/scss/src/grid/header/Button.scss +61 -7
  25. package/resources/scss/src/grid/header/Toolbar.scss +4 -2
  26. package/resources/scss/src/table/View.scss +2 -2
  27. package/resources/scss/theme-dark/grid/Container.scss +17 -0
  28. package/resources/scss/theme-dark/grid/View.scss +29 -0
  29. package/resources/scss/theme-dark/grid/_all.scss +3 -0
  30. package/resources/scss/theme-dark/grid/header/Button.scss +15 -0
  31. package/resources/scss/theme-dark/grid/header/Toolbar.scss +0 -0
  32. package/resources/scss/theme-dark/grid/header/_all.scss +2 -0
  33. package/resources/scss/theme-light/grid/Container.scss +17 -0
  34. package/resources/scss/theme-light/grid/View.scss +29 -0
  35. package/resources/scss/theme-light/grid/_all.scss +3 -0
  36. package/resources/scss/theme-light/grid/header/Button.scss +15 -0
  37. package/resources/scss/theme-light/grid/header/Toolbar.scss +0 -0
  38. package/resources/scss/theme-light/grid/header/_all.scss +2 -0
  39. package/src/Main.mjs +4 -3
  40. package/src/grid/Container.mjs +252 -83
  41. package/src/grid/README.md +2 -1
  42. package/src/grid/View.mjs +206 -11
  43. package/src/grid/header/Button.mjs +127 -2
  44. package/src/grid/header/Toolbar.mjs +42 -54
  45. package/src/selection/grid/CellColumnModel.mjs +122 -0
  46. package/src/selection/grid/CellColumnRowModel.mjs +122 -0
  47. package/src/selection/grid/CellModel.mjs +184 -0
  48. package/src/selection/grid/CellRowModel.mjs +164 -0
  49. package/src/selection/grid/ColumnModel.mjs +185 -0
  50. package/src/selection/grid/RowModel.mjs +188 -0
  51. package/src/selection/table/RowModel.mjs +26 -32
  52. package/src/table/Container.mjs +9 -13
  53. package/src/table/header/Toolbar.mjs +1 -1
@@ -0,0 +1,112 @@
1
+ import BaseTableContainer from '../../../src/table/Container.mjs';
2
+ import Store from './Store.mjs';
3
+ import TableContainerController from './TableContainerController.mjs';
4
+ import Util from './Util.mjs';
5
+
6
+ /**
7
+ * @class Neo.examples.table.covid.TableContainer
8
+ * @extends Neo.table.Container
9
+ */
10
+ class TableContainer extends BaseTableContainer {
11
+ static getConfig() {return {
12
+ /**
13
+ * @member {String} className='Neo.examples.table.covid.TableContainer'
14
+ * @protected
15
+ */
16
+ className: 'Neo.examples.table.covid.TableContainer',
17
+ /**
18
+ * @member {String[]} cls=['covid-country-table', 'neo-table-container']
19
+ */
20
+ cls: ['covid-country-table', 'neo-table-container'],
21
+ /**
22
+ * Default configs for each column
23
+ * @member {Object} columnDefaults
24
+ */
25
+ columnDefaults: {
26
+ align : 'right',
27
+ defaultSortDirection: 'DESC',
28
+ renderer : Util.formatNumber
29
+ },
30
+ /**
31
+ * @member {Object[]} columns
32
+ */
33
+ columns: [{
34
+ cls : ['neo-index-column', 'neo-table-header-button'],
35
+ dataField: 'index',
36
+ dock : 'left',
37
+ minWidth : 40,
38
+ text : '#',
39
+ renderer : Util.indexRenderer,
40
+ width : 40
41
+ }, {
42
+ align : 'left',
43
+ dataField : 'country',
44
+ defaultSortDirection: 'ASC',
45
+ dock : 'left',
46
+ text : 'Country',
47
+ width : 200,
48
+
49
+ renderer: data => {
50
+ return {
51
+ cls : ['neo-country-column', 'neo-table-cell'],
52
+ html: [
53
+ '<div style="display: flex; align-items: center">',
54
+ '<img style="height:20px; margin-right:10px; width:20px;" src="' + Util.getCountryFlagUrl(data.value) + '">' + data.value,
55
+ '</div>'
56
+ ].join('')
57
+ };
58
+ }
59
+ }, {
60
+ dataField: 'cases',
61
+ text : 'Cases'
62
+ }, {
63
+ dataField: 'casesPerOneMillion',
64
+ text : 'Cases / 1M'
65
+ }, {
66
+ dataField: 'infected',
67
+ text : 'Infected',
68
+ renderer : data => Util.formatInfected(data)
69
+ }, {
70
+ dataField: 'active',
71
+ text : 'Active',
72
+ renderer : data => Util.formatNumber(data, '#64B5F6')
73
+ }, {
74
+ dataField: 'recovered',
75
+ text : 'Recovered',
76
+ renderer : data => Util.formatNumber(data, '#28ca68')
77
+ }, {
78
+ dataField: 'critical',
79
+ text : 'Critical',
80
+ renderer : data => Util.formatNumber(data, 'orange')
81
+ }, {
82
+ dataField: 'deaths',
83
+ text : 'Deaths',
84
+ renderer : data => Util.formatNumber(data, '#fb6767')
85
+ }, {
86
+ dataField: 'todayCases',
87
+ text : 'Cases today'
88
+ }, {
89
+ dataField: 'todayDeaths',
90
+ text : 'Deaths today',
91
+ renderer : data => Util.formatNumber(data, '#fb6767')
92
+ }, {
93
+ dataField: 'tests',
94
+ text : 'Tests'
95
+ }, {
96
+ dataField: 'testsPerOneMillion',
97
+ text : 'Tests / 1M'
98
+ }],
99
+ /**
100
+ * @member {Neo.controller.Component} controller=TableContainerController
101
+ */
102
+ controller: TableContainerController,
103
+ /**
104
+ * @member {Object[]} store=MainStore
105
+ */
106
+ store: Store
107
+ }}
108
+ }
109
+
110
+ Neo.applyClassConfig(TableContainer);
111
+
112
+ export default TableContainer;
@@ -0,0 +1,62 @@
1
+ import Controller from '../../../src/controller/Component.mjs';
2
+
3
+ /**
4
+ * @class Neo.examples.table.covid.TableContainerController
5
+ * @extends Neo.controller.Component
6
+ */
7
+ class TableContainerController extends Controller {
8
+ /**
9
+ * @member {String} apiUrl='https://disease.sh/v3/covid-19/countries'
10
+ */
11
+ apiUrl = 'https://disease.sh/v3/covid-19/countries'
12
+
13
+ static getConfig() {return {
14
+ /**
15
+ * @member {String} className='Neo.examples.table.covid.TableContainerController'
16
+ * @protected
17
+ */
18
+ className: 'Neo.examples.table.covid.TableContainerController'
19
+ }}
20
+
21
+ /**
22
+ * @param {Object} config
23
+ */
24
+ construct(config) {
25
+ super.construct(config);
26
+ this.loadData();
27
+ }
28
+
29
+ /**
30
+ * @param {Object[]} data
31
+ */
32
+ addStoreItems(data) {
33
+ let store = this.component.store;
34
+
35
+ data.forEach(item => {
36
+ if (item.country.includes('"')) {
37
+ item.country = item.country.replace('"', "\'");
38
+ }
39
+
40
+ item.casesPerOneMillion = item.casesPerOneMillion > item.cases ? 'N/A' : item.casesPerOneMillion || 0;
41
+ item.infected = item.casesPerOneMillion;
42
+ });
43
+
44
+ store.data = data;
45
+ }
46
+
47
+ /**
48
+ *
49
+ */
50
+ loadData() {
51
+ let me = this;
52
+
53
+ fetch(me.apiUrl)
54
+ .then(response => response.json())
55
+ .catch(err => console.log('Can’t access ' + me.apiUrl, err))
56
+ .then(data => me.addStoreItems(data));
57
+ }
58
+ }
59
+
60
+ Neo.applyClassConfig(TableContainerController);
61
+
62
+ export default TableContainerController;
@@ -0,0 +1,165 @@
1
+ import Base from '../../../src/core/Base.mjs';
2
+
3
+ /**
4
+ * Static utility class
5
+ * @class Neo.examples.table.covid.Util
6
+ * @extends Neo.core.Base
7
+ */
8
+ class Util extends Base {
9
+ static getStaticConfig() {return {
10
+ /**
11
+ * A regex to replace blank chars
12
+ * @member {RegExp} flagRegEx=/ /gi
13
+ * @protected
14
+ * @static
15
+ */
16
+ flagRegEx: / /gi,
17
+ /**
18
+ * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toLocaleString
19
+ * Change this config to enforce a county specific formatting (e.g. 'de-DE')
20
+ * @member {String} locales='default'
21
+ * @protected
22
+ * @static
23
+ */
24
+ locales: 'default'
25
+ }}
26
+
27
+ static getConfig() {return {
28
+ /**
29
+ * @member {String} className='Neo.examples.table.covid.Util'
30
+ * @protected
31
+ */
32
+ className: 'Neo.examples.table.covid.Util'
33
+ }}
34
+
35
+ /**
36
+ * Used for the casesPerOneMillion column to show % of population
37
+ * @param {Object} data
38
+ * @param {Number} data.value
39
+ * @returns {String}
40
+ */
41
+ static formatInfected(data) {
42
+ let value = data.value;
43
+
44
+ if (!Neo.isNumber(value)) {
45
+ return value || 'N/A';
46
+ }
47
+
48
+ value = Math.round(value / 100);
49
+ value /= 100;
50
+
51
+ value = value.toFixed(2) + ' %';
52
+
53
+ return value.toLocaleString(Util.locales);
54
+ }
55
+
56
+ /**
57
+ * This method will get used as a grid renderer, so the 2nd param is an overload (would be {Object} record)
58
+ * @param {Object} data
59
+ * @param {Number} data.value
60
+ * @param {String} [color]
61
+ * @returns {String}
62
+ */
63
+ static formatNumber(data, color) {
64
+ let value = data.value;
65
+
66
+ if (!Neo.isNumber(value)) {
67
+ return value || 'N/A';
68
+ }
69
+
70
+ value = value.toLocaleString(Util.locales);
71
+
72
+ return typeof color !== 'string' ? value : `<span style="color:${color};">${value}</span>`;
73
+ }
74
+
75
+ /**
76
+ * @param {String} name
77
+ * @returns {String} url
78
+ */
79
+ static getCountryFlagUrl(name) {
80
+ const map = {
81
+ 'bosnia' : 'bosnia-and-herzegovina',
82
+ 'cabo-verde' : 'cape-verde',
83
+ 'car' : 'central-african-republic',
84
+ 'caribbean-netherlands' : 'netherlands',
85
+ 'channel-islands' : 'jersey',
86
+ 'côte-d\'ivoire' : 'ivory-coast',
87
+ 'congo' : 'republic-of-the-congo',
88
+ 'congo,-the-democratic-republic-of-the': 'democratic-republic-of-congo',
89
+ 'curaçao' : 'curacao',
90
+ 'czechia' : 'czech-republic',
91
+ 'diamond-princess' : 'japan', // cruise ship
92
+ 'drc' : 'democratic-republic-of-congo',
93
+ 'el-salvador' : 'salvador',
94
+ 'eswatini' : 'swaziland',
95
+ 'faeroe-islands' : 'faroe-islands',
96
+ 'falkland-islands-(malvinas)' : 'falkland-islands',
97
+ 'french-guiana' : 'france', // ?
98
+ 'guadeloupe' : 'france', // ?
99
+ 'holy-see-(vatican-city-state)' : 'vatican-city',
100
+ 'iran,-islamic-republic-of' : 'iran',
101
+ 'lao-people\'s-democratic-republic' : 'laos',
102
+ 'libyan-arab-jamahiriya' : 'libya',
103
+ 'macedonia' : 'republic-of-macedonia',
104
+ 'marshall-islands' : 'marshall-island',
105
+ 'mayotte' : 'france', // ?
106
+ 'moldova,-republic-of' : 'moldova',
107
+ 'ms-zaandam' : 'netherlands', // cruise ship
108
+ 'new-caledonia' : 'france',
109
+ 'palestinian-territory,-occupied' : 'palestine',
110
+ 'poland' : 'republic-of-poland',
111
+ 'réunion' : 'france',
112
+ 's.-korea' : 'south-korea',
113
+ 'st.-barth' : 'st-barts',
114
+ 'saint-helena' : 'united-kingdom', // sorry, icon not included
115
+ 'saint-lucia' : 'st-lucia',
116
+ 'saint-martin' : 'sint-maarten',
117
+ 'saint-pierre-miquelon' : 'france',
118
+ 'saint-vincent-and-the-grenadines' : 'st-vincent-and-the-grenadines',
119
+ 'syrian-arab-republic' : 'syria',
120
+ 'tanzania,-united-republic-of' : 'tanzania',
121
+ 'timor-leste' : 'east-timor',
122
+ 'turks-and-caicos-islands' : 'turks-and-caicos',
123
+ 'u.s.-virgin-islands' : 'virgin-islands',
124
+ 'uae' : 'united-arab-emirates',
125
+ 'uk' : 'united-kingdom',
126
+ 'usa' : 'united-states-of-america',
127
+ 'uzbekistan' : 'uzbekistn',
128
+ 'venezuela,-bolivarian-republic-of' : 'venezuela',
129
+ 'viet-nam' : 'vietnam',
130
+ 'wallis-and-futuna' : 'france'
131
+ };
132
+
133
+ let imageName = name.toLowerCase().replace(Util.flagRegEx, '-');
134
+
135
+ imageName = map[imageName] || imageName;
136
+
137
+ if (Neo.config.isGitHubPages) {
138
+ let path = `../../../../resources/images/flaticon/country_flags/png/${imageName}.png`;
139
+
140
+ if (Neo.config.environment !== 'development') {
141
+ path = `../../${path}`;
142
+ }
143
+
144
+ return path;
145
+ }
146
+
147
+ return `https://raw.githubusercontent.com/neomjs/pages/master/resources/images/flaticon/country_flags/png/${imageName}.png`;
148
+ }
149
+
150
+ /**
151
+ * @param {Object} data
152
+ * @param {Number} data.index
153
+ * @returns {Object}
154
+ */
155
+ static indexRenderer(data) {
156
+ return {
157
+ cls : ['neo-index-column', 'neo-table-cell'],
158
+ html: data.index + 1
159
+ };
160
+ }
161
+ }
162
+
163
+ Neo.applyClassConfig(Util);
164
+
165
+ export default Util;
@@ -0,0 +1,6 @@
1
+ import MainContainer from './MainContainer.mjs';
2
+
3
+ export const onStart = () => Neo.app({
4
+ mainView: MainContainer,
5
+ name : 'Neo.examples.table.covid'
6
+ });
@@ -0,0 +1,11 @@
1
+ <!DOCTYPE HTML>
2
+ <html>
3
+ <head>
4
+ <meta name="viewport" content="width=device-width, initial-scale=1">
5
+ <meta charset="UTF-8">
6
+ <title>Neo CovidTable</title>
7
+ </head>
8
+ <body>
9
+ <script src="../../../src/MicroLoader.mjs" type="module"></script>
10
+ </body>
11
+ </html>
@@ -0,0 +1,8 @@
1
+ {
2
+ "appPath" : "examples/table/covid/app.mjs",
3
+ "basePath" : "../../../",
4
+ "environment" : "development",
5
+ "mainPath" : "./Main.mjs",
6
+ "mainThreadAddons": ["DragDrop", "Stylesheet"],
7
+ "themes" : ["neo-theme-dark", "neo-theme-light"]
8
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "neo.mjs",
3
- "version": "4.0.93",
3
+ "version": "4.1.1",
4
4
  "description": "The webworkers driven UI framework",
5
5
  "type": "module",
6
6
  "repository": {
@@ -39,7 +39,7 @@
39
39
  },
40
40
  "homepage": "https://neomjs.github.io/pages/",
41
41
  "dependencies": {
42
- "@fortawesome/fontawesome-free": "^6.1.2",
42
+ "@fortawesome/fontawesome-free": "^6.2.0",
43
43
  "@material/mwc-button": "^0.27.0",
44
44
  "@material/mwc-textfield": "^0.27.0",
45
45
  "autoprefixer": "^10.4.8",
@@ -54,10 +54,10 @@
54
54
  "neo-jsdoc": "^1.0.1",
55
55
  "neo-jsdoc-x": "^1.0.4",
56
56
  "postcss": "^8.4.16",
57
- "sass": "^1.54.5",
57
+ "sass": "^1.54.7",
58
58
  "webpack": "^5.74.0",
59
59
  "webpack-cli": "^4.10.0",
60
- "webpack-dev-server": "4.10.0",
60
+ "webpack-dev-server": "4.10.1",
61
61
  "webpack-hook-plugin": "^1.0.7",
62
62
  "webpack-node-externals": "^3.0.0"
63
63
  },
@@ -0,0 +1,21 @@
1
+ .neo-grid-wrapper {
2
+ width: 100%
3
+ }
4
+
5
+ .neo-grid-container.covid-country-grid {
6
+ .neo-country-column {
7
+ min-width: 200px;
8
+ width : initial;
9
+ }
10
+
11
+ .neo-grid-cell {
12
+ min-width: 100px;
13
+ width : 300px;
14
+ }
15
+
16
+ .neo-index-column {
17
+ max-width: 40px;
18
+ min-width: 40px;
19
+ width : 40px;
20
+ }
21
+ }
@@ -0,0 +1,21 @@
1
+ .neo-table-wrapper {
2
+ width: 100%
3
+ }
4
+
5
+ .neo-table-container.covid-country-table {
6
+ .neo-country-column {
7
+ min-width: 200px;
8
+ width : initial;
9
+ }
10
+
11
+ .neo-index-column {
12
+ max-width: 40px;
13
+ min-width: 40px;
14
+ width : 40px;
15
+ }
16
+
17
+ td, th {
18
+ min-width: 100px;
19
+ width : 300px;
20
+ }
21
+ }
@@ -1,22 +1,14 @@
1
1
  .neo-grid-container {
2
- border : 1px solid #2b2b2b;
2
+ border : 1px solid v(grid-container-border-color);
3
3
  border-spacing: 0;
4
4
  font-size : 13px;
5
5
  font-weight : 400;
6
6
  height : 100%;
7
7
  line-height : 19px;
8
8
  overflow : hidden;
9
- //position : relative;
10
-
11
- .neo-grid-header-toolbar {
12
- //position: sticky;
13
- //top : 0;
14
- display : table;
15
- width : 100%;
16
- }
17
9
 
18
10
  .neo-grid-row {
19
- display : table-row;
11
+ display : flex;
20
12
  height : 32px !important;
21
13
  max-height: 32px !important;
22
14
  width : 100%;
@@ -80,32 +72,12 @@
80
72
  }
81
73
 
82
74
  .neo-grid-cell {
75
+ align-items : center;
83
76
  background-color: #3c3f41;
84
- display : table-cell;
77
+ display : flex;
85
78
  height : 32px !important;
86
79
  max-height : 32px !important;
87
80
  padding : 2px 10px 2px;
88
- }
89
-
90
- .neo-grid-header-cell {
91
- display: table-cell;
92
- padding: 0;
93
- }
94
-
95
- /* Scrollbars */
96
- /*&::-webkit-scrollbar {
97
- display: none;
98
- }*/
99
-
100
- .neo-grid-y-scroller {
101
- background-color: green;
102
- height: 100%;
103
- position: absolute;
104
- right: 0;
105
- top: 32px;
106
- width: 17px;
107
- overflow: auto;
108
- transform: translateZ(0);
109
- -webkit-transform: translateZ(0);
81
+ width : fit-content;
110
82
  }
111
83
  }
@@ -1,3 +1,75 @@
1
1
  .neo-grid-view {
2
+ .neo-center {
3
+ justify-content: center;
4
+ }
2
5
 
3
- }
6
+ .neo-right {
7
+ justify-content: right;
8
+ }
9
+
10
+ .neo-grid-row {
11
+ &:hover {
12
+ .neo-grid-cell {
13
+ background-color: v(grid-cell-background-color-hover);
14
+ }
15
+ }
16
+
17
+ // selection.RowModel
18
+ &.neo-selected {
19
+ .neo-grid-cell {
20
+ background-color: v(grid-rowmodel-selected-cell-background-color);
21
+ color : v(grid-rowmodel-selected-cell-color);
22
+ }
23
+ }
24
+
25
+ // selection.CellModel
26
+ .neo-grid-cell {
27
+ &.neo-selected {
28
+ background-color: v(grid-cellmodel-selected-cell-background-color) !important;
29
+ color : v(grid-cellmodel-selected-cell-color) !important;
30
+ }
31
+
32
+ &.selected-column-cell {
33
+ background-color: v(grid-cellmodel-selected-column-cell-background-color);
34
+ color : v(grid-cellmodel-selected-column-cell-color);
35
+ }
36
+ }
37
+ }
38
+ }
39
+
40
+ .neo-selection-cellrowmodel,
41
+ .neo-selection-cellcolumnrowmodel{
42
+ .neo-grid-row {
43
+ &.neo-selected {
44
+ .neo-grid-cell {
45
+ background-color: v(grid-cellrowmodel-selected-row-cell-background-color);
46
+ color : v(grid-cellrowmodel-selected-row-cell-color);
47
+ }
48
+ }
49
+
50
+ .neo-grid-cell {
51
+ &.neo-selected {
52
+ background-color: v(grid-cellrowmodel-selected-cell-background-color);
53
+ color : v(grid-cellrowmodel-selected-cell-color);
54
+ }
55
+ }
56
+ }
57
+ }
58
+
59
+ .neo-selection-cellcolumnmodel,
60
+ .neo-selection-cellcolumnrowmodel,
61
+ .neo-selection-cellmodel,
62
+ .neo-selection-cellrowmodel,
63
+ .neo-selection-columnmodel,
64
+ .neo-selection-rowmodel {
65
+ .neo-grid-row {
66
+ &:focus {
67
+ outline: 0;
68
+ }
69
+ .neo-grid-cell {
70
+ &:focus {
71
+ outline: 0;
72
+ }
73
+ }
74
+ }
75
+ }
@@ -1,16 +1,70 @@
1
1
  .neo-grid-header-button {
2
- background-color: #323232;
2
+ align-items : center;
3
+ background-color: v(grid-header-button-background-color);
4
+ background-image: v(grid-header-button-background-image);
3
5
  border-width : 0;
4
- box-sizing : border-box;
5
- color : #bbb;
6
+ color : v(grid-header-button-color);
6
7
  cursor : pointer;
8
+ display : flex;
9
+ flex-direction : row;
10
+ flex-shrink : 0;
7
11
  font-size : 13px;
8
12
  font-weight : 600;
13
+ height : 29px; // Webkit => Safari can not handle 100%
14
+ justify-content : flex-end;
9
15
  margin : 0;
10
16
  padding : 7px 10px 6px;
11
- text-align : left;
12
17
  white-space : nowrap;
13
- width : 100%;
14
18
 
15
- background-image: linear-gradient(#3c3f41, #323232);
16
- }
19
+ &:not(:last-child) {
20
+ border-right: 1px solid v(grid-container-border-color);
21
+ }
22
+
23
+ &.neo-drag-over {
24
+ background-image: linear-gradient(green, darkgreen);;
25
+ }
26
+
27
+ &.neo-sort-asc, &.neo-sort-desc {
28
+ .neo-button-glyph {
29
+ opacity: 1;
30
+ }
31
+ }
32
+
33
+ &.neo-sort-hidden {
34
+ .neo-button-glyph {
35
+ opacity: 0;
36
+ }
37
+ }
38
+
39
+ &.neo-sort-desc {
40
+ .neo-button-glyph {
41
+ transform: rotate(180deg);
42
+ }
43
+ }
44
+
45
+ &:focus {
46
+ outline : 0;
47
+ }
48
+
49
+ &.icon-right {
50
+ flex-direction: row-reverse;
51
+
52
+ .neo-button-glyph {
53
+ margin: 0 0 0 6px;
54
+ }
55
+ }
56
+
57
+ .neo-button-glyph {
58
+ color : v(grid-header-button-glyph-color);
59
+ font-size : 12px;
60
+ margin : 0 6px 0 0;
61
+ opacity : 0;
62
+ pointer-events: none;
63
+ transition : opacity 150ms cubic-bezier(0.4, 0, 0.2, 1), transform 400ms cubic-bezier(0.4, 0, 0.2, 1);
64
+ will-change : opacity, transform;
65
+ }
66
+
67
+ .neo-button-text {
68
+ pointer-events: none;
69
+ }
70
+ }
@@ -1,3 +1,5 @@
1
1
  .neo-grid-header-toolbar {
2
-
3
- }
2
+ border-bottom: 2px solid v(grid-container-border-color);
3
+ border-top : 1px solid v(grid-container-border-color);
4
+ padding : 0;
5
+ }
@@ -59,8 +59,8 @@
59
59
  .neo-selection-cellcolumnmodel,
60
60
  .neo-selection-cellcolumnrowmodel,
61
61
  .neo-selection-cellmodel,
62
- .neo-selection-columnmodel,
63
62
  .neo-selection-cellrowmodel,
63
+ .neo-selection-columnmodel,
64
64
  .neo-selection-rowmodel {
65
65
  .neo-table-row {
66
66
  &:focus {
@@ -72,4 +72,4 @@
72
72
  }
73
73
  }
74
74
  }
75
- }
75
+ }