neo.mjs 5.16.4 → 5.17.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/ServiceWorker.mjs +2 -2
- package/examples/ServiceWorker.mjs +2 -2
- package/examples/component/statusbadge/MainContainer.mjs +80 -0
- package/examples/component/statusbadge/app.mjs +6 -0
- package/examples/component/statusbadge/index.html +11 -0
- package/examples/component/statusbadge/neo-config.json +6 -0
- package/examples/form/field/fileupload/MainContainer.mjs +59 -12
- package/examples/treeSelectionModel/MainContainer.mjs +142 -0
- package/examples/treeSelectionModel/app.mjs +6 -0
- package/examples/treeSelectionModel/index.html +11 -0
- package/examples/treeSelectionModel/neo-config.json +7 -0
- package/examples/treeSelectionModel/tree.json +112 -0
- package/package.json +3 -3
- package/resources/scss/src/component/StatusBadge.scss +9 -0
- package/resources/scss/src/examples/treeSelectionModel/MainContainer.scss +24 -0
- package/resources/scss/src/form/field/FileUpload.scss +19 -4
- package/resources/scss/src/tree/Accordion.scss +128 -0
- package/src/DefaultConfig.mjs +2 -2
- package/src/component/StatusBadge.mjs +73 -0
- package/src/core/Base.mjs +6 -0
- package/src/form/field/FileUpload.mjs +274 -35
- package/src/form/field/Text.mjs +1 -1
- package/src/selection/TreeAccordionModel.mjs +293 -0
- package/src/selection/TreeModel.mjs +3 -3
- package/src/tree/Accordion.mjs +280 -0
- package/src/tree/List.mjs +31 -22
package/apps/ServiceWorker.mjs
CHANGED
@@ -0,0 +1,80 @@
|
|
1
|
+
import CheckBox from '../../../src/form/field/CheckBox.mjs';
|
2
|
+
import ConfigurationViewport from '../../ConfigurationViewport.mjs';
|
3
|
+
import NumberField from '../../../src/form/field/Number.mjs';
|
4
|
+
import Radio from '../../../src/form/field/Radio.mjs';
|
5
|
+
import StatusBadge from '../../../src/component/StatusBadge.mjs';
|
6
|
+
import TextField from '../../../src/form/field/Text.mjs';
|
7
|
+
|
8
|
+
/**
|
9
|
+
* @class Neo.examples.component.statusbadge.MainContainer
|
10
|
+
* @extends Neo.examples.ConfigurationViewport
|
11
|
+
*/
|
12
|
+
class MainContainer extends ConfigurationViewport {
|
13
|
+
static config = {
|
14
|
+
className : 'Neo.examples.component.statusbadge.MainContainer',
|
15
|
+
autoMount : true,
|
16
|
+
configItemLabelWidth: 110,
|
17
|
+
configItemWidth : 230,
|
18
|
+
layout : {ntype: 'hbox', align: 'stretch'}
|
19
|
+
}
|
20
|
+
|
21
|
+
createConfigurationComponents() {
|
22
|
+
let me = this;
|
23
|
+
|
24
|
+
return [{
|
25
|
+
module : CheckBox,
|
26
|
+
checked : me.exampleComponent.closable,
|
27
|
+
labelText: 'closable',
|
28
|
+
listeners: {change: me.onConfigChange.bind(me, 'closable')}
|
29
|
+
}, {
|
30
|
+
module : NumberField,
|
31
|
+
clearable : true,
|
32
|
+
labelText : 'height',
|
33
|
+
listeners : {change: me.onConfigChange.bind(me, 'height')},
|
34
|
+
maxValue : 100,
|
35
|
+
minValue : 20,
|
36
|
+
stepSize : 2,
|
37
|
+
style : {marginTop: '10px'},
|
38
|
+
value : me.exampleComponent.height
|
39
|
+
}, {
|
40
|
+
module : Radio,
|
41
|
+
checked : me.exampleComponent.state === 'error',
|
42
|
+
hideValueLabel: false,
|
43
|
+
labelText : 'state',
|
44
|
+
listeners : {change: me.onRadioChange.bind(me, 'state', 'error')},
|
45
|
+
name : 'state',
|
46
|
+
style : {marginTop: '10px'},
|
47
|
+
valueLabelText: 'error'
|
48
|
+
}, {
|
49
|
+
module : Radio,
|
50
|
+
checked : me.exampleComponent.badgePosition === 'success',
|
51
|
+
hideValueLabel: false,
|
52
|
+
labelText : '',
|
53
|
+
listeners : {change: me.onRadioChange.bind(me, 'state', 'success')},
|
54
|
+
name : 'state',
|
55
|
+
valueLabelText: 'success'
|
56
|
+
}, {
|
57
|
+
module : NumberField,
|
58
|
+
clearable : true,
|
59
|
+
labelText : 'width',
|
60
|
+
listeners : {change: me.onConfigChange.bind(me, 'width')},
|
61
|
+
maxValue : 300,
|
62
|
+
minValue : 100,
|
63
|
+
stepSize : 5,
|
64
|
+
style : {marginTop: '10px'},
|
65
|
+
value : me.exampleComponent.width
|
66
|
+
}]
|
67
|
+
}
|
68
|
+
|
69
|
+
createExampleComponent() {
|
70
|
+
return Neo.create({
|
71
|
+
module: StatusBadge,
|
72
|
+
height: 30,
|
73
|
+
state : 'error'
|
74
|
+
})
|
75
|
+
}
|
76
|
+
}
|
77
|
+
|
78
|
+
Neo.applyClassConfig(MainContainer);
|
79
|
+
|
80
|
+
export default MainContainer;
|
@@ -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 StatusBadge</title>
|
7
|
+
</head>
|
8
|
+
<body>
|
9
|
+
<script src="../../../src/MicroLoader.mjs" type="module"></script>
|
10
|
+
</body>
|
11
|
+
</html>
|
@@ -37,9 +37,9 @@ class MainContainer extends ConfigurationViewport {
|
|
37
37
|
module : FileUploadField,
|
38
38
|
id : 'my-downloadable-test',
|
39
39
|
uploadUrl : 'http://127.0.0.1:3000/file-upload-test',
|
40
|
-
documentStatusUrl : 'http://127.0.0.1:3000/document-status-downloadable',
|
41
|
-
documentDeleteUrl : 'http://127.0.0.1:3000/document-delete',
|
42
|
-
downloadUrl : 'http://127.0.0.1:3000/getDocument',
|
40
|
+
documentStatusUrl : 'http://127.0.0.1:3000/document-status-downloadable?documentId={documentId}',
|
41
|
+
documentDeleteUrl : 'http://127.0.0.1:3000/document-delete?documentId={documentId}',
|
42
|
+
downloadUrl : 'http://127.0.0.1:3000/getDocument?documentId={documentId}',
|
43
43
|
width : 350,
|
44
44
|
maxSize : '10mb',
|
45
45
|
types : {
|
@@ -47,14 +47,19 @@ class MainContainer extends ConfigurationViewport {
|
|
47
47
|
jpg : 1,
|
48
48
|
xls : 1,
|
49
49
|
pdf : 1
|
50
|
+
},
|
51
|
+
listeners : {
|
52
|
+
beforeRequest({ headers }) {
|
53
|
+
headers['X-XSRF-TOKEN'] = 'my-xsrf-token'
|
54
|
+
}
|
50
55
|
}
|
51
56
|
}, {
|
52
57
|
module : FileUploadField,
|
53
58
|
id : 'my-not-downloadable-test',
|
54
59
|
uploadUrl : 'http://127.0.0.1:3000/file-upload-test',
|
55
|
-
documentStatusUrl : 'http://127.0.0.1:3000/document-status-not-downloadable',
|
56
|
-
documentDeleteUrl : 'http://127.0.0.1:3000/document-delete',
|
57
|
-
downloadUrl : 'http://127.0.0.1:3000/getDocument',
|
60
|
+
documentStatusUrl : 'http://127.0.0.1:3000/document-status-not-downloadable?documentId={documentId}',
|
61
|
+
documentDeleteUrl : 'http://127.0.0.1:3000/document-delete?documentId={documentId}',
|
62
|
+
downloadUrl : 'http://127.0.0.1:3000/getDocument?documentId={documentId}',
|
58
63
|
width : 350,
|
59
64
|
maxSize : '10mb',
|
60
65
|
types : {
|
@@ -67,9 +72,9 @@ class MainContainer extends ConfigurationViewport {
|
|
67
72
|
module : FileUploadField,
|
68
73
|
id : 'my-upload-fail-test',
|
69
74
|
uploadUrl : 'http://127.0.0.1:3000/file-upload-test-fail',
|
70
|
-
documentStatusUrl : 'http://127.0.0.1:3000/document-status',
|
71
|
-
documentDeleteUrl : 'http://127.0.0.1:3000/document-delete',
|
72
|
-
downloadUrl : 'http://127.0.0.1:3000/getDocument',
|
75
|
+
documentStatusUrl : 'http://127.0.0.1:3000/document-status?documentId={documentId}',
|
76
|
+
documentDeleteUrl : 'http://127.0.0.1:3000/document-delete?documentId={documentId}',
|
77
|
+
downloadUrl : 'http://127.0.0.1:3000/getDocument?documentId={documentId}',
|
73
78
|
width : 350,
|
74
79
|
maxSize : '10mb',
|
75
80
|
types : {
|
@@ -82,9 +87,51 @@ class MainContainer extends ConfigurationViewport {
|
|
82
87
|
module : FileUploadField,
|
83
88
|
id : 'my-scan-fail-test',
|
84
89
|
uploadUrl : 'http://127.0.0.1:3000/file-upload-test',
|
85
|
-
documentStatusUrl : 'http://127.0.0.1:3000/document-status-fail',
|
86
|
-
documentDeleteUrl : 'http://127.0.0.1:3000/document-delete',
|
87
|
-
downloadUrl : 'http://127.0.0.1:3000/getDocument',
|
90
|
+
documentStatusUrl : 'http://127.0.0.1:3000/document-status-fail?documentId={documentId}',
|
91
|
+
documentDeleteUrl : 'http://127.0.0.1:3000/document-delete?documentId={documentId}',
|
92
|
+
downloadUrl : 'http://127.0.0.1:3000/getDocument?documentId={documentId}',
|
93
|
+
width : 350,
|
94
|
+
maxSize : '10mb',
|
95
|
+
types : {
|
96
|
+
png : 1,
|
97
|
+
jpg : 1,
|
98
|
+
xls : 1,
|
99
|
+
pdf : 1
|
100
|
+
}
|
101
|
+
}, {
|
102
|
+
module : FileUploadField,
|
103
|
+
id : 'my-existing-document-test',
|
104
|
+
document : {
|
105
|
+
id : 2,
|
106
|
+
fileName : 'test.pdf',
|
107
|
+
size : 10664885,
|
108
|
+
status : 'UN_DOWNLOADABLE'
|
109
|
+
},
|
110
|
+
uploadUrl : 'http://127.0.0.1:3000/file-upload-test',
|
111
|
+
documentStatusUrl : 'http://127.0.0.1:3000/document-status-not-downloadable?documentId={documentId}',
|
112
|
+
documentDeleteUrl : 'http://127.0.0.1:3000/document-delete?documentId={documentId}',
|
113
|
+
downloadUrl : 'http://127.0.0.1:3000/getDocument?documentId={documentId}',
|
114
|
+
width : 350,
|
115
|
+
maxSize : '10mb',
|
116
|
+
types : {
|
117
|
+
png : 1,
|
118
|
+
jpg : 1,
|
119
|
+
xls : 1,
|
120
|
+
pdf : 1
|
121
|
+
}
|
122
|
+
}, {
|
123
|
+
module : FileUploadField,
|
124
|
+
id : 'my-non-existing-document-test',
|
125
|
+
document : {
|
126
|
+
id : 2,
|
127
|
+
fileName : 'test.pdf',
|
128
|
+
size : 10664885,
|
129
|
+
status : 'DELETED'
|
130
|
+
},
|
131
|
+
uploadUrl : 'http://127.0.0.1:3000/file-upload-test',
|
132
|
+
documentStatusUrl : 'http://127.0.0.1:3000/document-status-non-existent?documentId={documentId}',
|
133
|
+
documentDeleteUrl : 'http://127.0.0.1:3000/document-delete?documentId={documentId}',
|
134
|
+
downloadUrl : 'http://127.0.0.1:3000/getDocument?documentId={documentId}',
|
88
135
|
width : 350,
|
89
136
|
maxSize : '10mb',
|
90
137
|
types : {
|
@@ -0,0 +1,142 @@
|
|
1
|
+
import ConfigurationViewport from '../ConfigurationViewport.mjs';
|
2
|
+
|
3
|
+
import Store from '../../src/data/Store.mjs';
|
4
|
+
import NumberField from '../../src/form/field/Number.mjs';
|
5
|
+
import AccordionTree from '../../src/tree/Accordion.mjs';
|
6
|
+
import CheckBox from "../../src/form/field/CheckBox.mjs";
|
7
|
+
|
8
|
+
/**
|
9
|
+
* @class Neo.examples.treeSelectionModel.MainContainer
|
10
|
+
* @extends Neo.examples.ConfigurationViewport
|
11
|
+
*/
|
12
|
+
class MainContainer extends ConfigurationViewport {
|
13
|
+
static config = {
|
14
|
+
className : 'Neo.examples.treeSelectionModel.MainContainer',
|
15
|
+
autoMount : true,
|
16
|
+
configItemLabelWidth: 100,
|
17
|
+
configItemWidth : 230,
|
18
|
+
layout : {ntype: 'hbox', align: 'stretch'},
|
19
|
+
cls : ['examples-container-accordion']
|
20
|
+
}
|
21
|
+
|
22
|
+
onConfigChange(config, opts) {
|
23
|
+
this.exampleComponent.items[0][config] = opts.value;
|
24
|
+
}
|
25
|
+
|
26
|
+
createConfigurationComponents() {
|
27
|
+
let me = this,
|
28
|
+
treeList = me.exampleComponent.items[0];
|
29
|
+
|
30
|
+
return [{
|
31
|
+
module : CheckBox,
|
32
|
+
checked : treeList.rootParentsAreCollapsible,
|
33
|
+
hideLabel : true,
|
34
|
+
hideValueLabel: false,
|
35
|
+
listeners : {change: me.onConfigChange.bind(me, 'rootParentsAreCollapsible')},
|
36
|
+
valueLabelText: 'rootParentsAreCollapsible'
|
37
|
+
}, {
|
38
|
+
module : CheckBox,
|
39
|
+
checked : treeList.firstParentIsVisible,
|
40
|
+
hideLabel : true,
|
41
|
+
hideValueLabel: false,
|
42
|
+
listeners : {change: me.onConfigChange.bind(me, 'firstParentIsVisible')},
|
43
|
+
style : {marginTop: '10px'},
|
44
|
+
valueLabelText: 'firstParentIsVisible'
|
45
|
+
}, {
|
46
|
+
module : NumberField,
|
47
|
+
clearable: true,
|
48
|
+
labelText: 'height',
|
49
|
+
listeners: {change: me.onConfigChange.bind(me, 'height')},
|
50
|
+
maxValue : 1200,
|
51
|
+
minValue : 400,
|
52
|
+
stepSize : 5,
|
53
|
+
value : treeList.height,
|
54
|
+
style : {marginTop: '10px'}
|
55
|
+
}, {
|
56
|
+
module : NumberField,
|
57
|
+
clearable: true,
|
58
|
+
labelText: 'width',
|
59
|
+
listeners: {change: me.onConfigChange.bind(me, 'width')},
|
60
|
+
maxValue : 1200,
|
61
|
+
minValue : 200,
|
62
|
+
stepSize : 5,
|
63
|
+
style : {marginTop: '10px'},
|
64
|
+
value : treeList.width
|
65
|
+
}];
|
66
|
+
}
|
67
|
+
|
68
|
+
/**
|
69
|
+
* @returns {*}
|
70
|
+
*/
|
71
|
+
createExampleComponent() {
|
72
|
+
const store = Neo.create(Store, {
|
73
|
+
keyProperty: 'id',
|
74
|
+
model : {
|
75
|
+
fields: [
|
76
|
+
{name: 'collapsed', type: 'Boolean'},
|
77
|
+
{name: 'content', type: 'String'},
|
78
|
+
{name: 'iconCls', type: 'String'},
|
79
|
+
{name: 'id', type: 'Integer'},
|
80
|
+
{name: 'isLeaf', type: 'Boolean'},
|
81
|
+
{name: 'name', type: 'String'},
|
82
|
+
{name: 'parentId', type: 'Integer'}
|
83
|
+
]
|
84
|
+
}
|
85
|
+
});
|
86
|
+
|
87
|
+
return Neo.ntype({
|
88
|
+
ntype : 'container',
|
89
|
+
layout: {ntype: 'hbox', align: 'stretch'},
|
90
|
+
items : [{
|
91
|
+
// module: TextField,
|
92
|
+
// label: 'Test',
|
93
|
+
// plugin: {
|
94
|
+
// Plugin: {
|
95
|
+
// bold: true
|
96
|
+
// }
|
97
|
+
// }
|
98
|
+
// },{
|
99
|
+
module: AccordionTree,
|
100
|
+
store : store,
|
101
|
+
height: 800,
|
102
|
+
width : 400,
|
103
|
+
|
104
|
+
// ensure afterSetMounted runs only once
|
105
|
+
storeLoaded: false,
|
106
|
+
afterSetMounted() {
|
107
|
+
if (!this.storeLoaded) {
|
108
|
+
this.storeLoaded = true;
|
109
|
+
} else {
|
110
|
+
return;
|
111
|
+
}
|
112
|
+
|
113
|
+
let me = this;
|
114
|
+
|
115
|
+
Neo.Xhr.promiseJson({
|
116
|
+
url: '../../examples/treeSelectionModel/tree.json'
|
117
|
+
}).then(data => {
|
118
|
+
const items = data.json,
|
119
|
+
colorArray = ['red', 'yellow', 'green'],
|
120
|
+
iconArray = ['home', 'industry', 'user'];
|
121
|
+
|
122
|
+
// create random iconCls colors
|
123
|
+
items.forEach((item) => {
|
124
|
+
if (!item.iconCls) {
|
125
|
+
const rand = Math.floor(Math.random() * 3);
|
126
|
+
|
127
|
+
item.iconCls = 'fa fa-' + iconArray[rand] + ' color-' + colorArray[rand];
|
128
|
+
}
|
129
|
+
});
|
130
|
+
|
131
|
+
me.store.data = data.json;
|
132
|
+
me.createItems(null, me.getListItemsRoot(), 0);
|
133
|
+
});
|
134
|
+
}
|
135
|
+
}]
|
136
|
+
});
|
137
|
+
}
|
138
|
+
}
|
139
|
+
|
140
|
+
Neo.applyClassConfig(MainContainer);
|
141
|
+
|
142
|
+
export default MainContainer;
|
@@ -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 Tree</title>
|
7
|
+
</head>
|
8
|
+
<body>
|
9
|
+
<script src="../../src/MicroLoader.mjs" type="module"></script>
|
10
|
+
</body>
|
11
|
+
</html>
|
@@ -0,0 +1,112 @@
|
|
1
|
+
[
|
2
|
+
{
|
3
|
+
"id": 1,
|
4
|
+
"name": "ROOT",
|
5
|
+
"parentId": null,
|
6
|
+
"collapsed": false,
|
7
|
+
"isLeaf": false
|
8
|
+
},
|
9
|
+
{
|
10
|
+
"id": 2,
|
11
|
+
"name": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr,",
|
12
|
+
"parentId": 1,
|
13
|
+
"isLeaf": true,
|
14
|
+
"content": "Textfeld",
|
15
|
+
"iconCls": "fa fa-t color-blue"
|
16
|
+
},
|
17
|
+
{
|
18
|
+
"id": 3,
|
19
|
+
"name": "Sed diam nonumy",
|
20
|
+
"parentId": 1,
|
21
|
+
"isLeaf": true,
|
22
|
+
"content": "Textfeld",
|
23
|
+
"iconCls": "fa fa-t color-blue"
|
24
|
+
},
|
25
|
+
{
|
26
|
+
"id": 4,
|
27
|
+
"name": "Eirmod",
|
28
|
+
"parentId": 1,
|
29
|
+
"isLeaf": true,
|
30
|
+
"content": "Textfeld",
|
31
|
+
"iconCls": "fa fa-t color-blue"
|
32
|
+
},
|
33
|
+
{
|
34
|
+
"id": 5,
|
35
|
+
"name": "Tempor",
|
36
|
+
"parentId": 1,
|
37
|
+
"isLeaf": true,
|
38
|
+
"content": "Textfeld",
|
39
|
+
"iconCls": "fa fa-t color-blue"
|
40
|
+
},
|
41
|
+
{
|
42
|
+
"id": 6,
|
43
|
+
"name": "Invidunt ut labore",
|
44
|
+
"parentId": 1,
|
45
|
+
"isLeaf": true,
|
46
|
+
"content": "Textfeld",
|
47
|
+
"iconCls": "fa fa-t color-blue"
|
48
|
+
},
|
49
|
+
{
|
50
|
+
"id": 7,
|
51
|
+
"name": "Dolore magna aliquyam",
|
52
|
+
"parentId": null,
|
53
|
+
"collapsed": false,
|
54
|
+
"isLeaf": false
|
55
|
+
},
|
56
|
+
{
|
57
|
+
"id": 8,
|
58
|
+
"name": "V01 . At vero eos et accusam",
|
59
|
+
"parentId": 7,
|
60
|
+
"collapsed": true,
|
61
|
+
"isLeaf": false,
|
62
|
+
"content": "Auswählliste",
|
63
|
+
"iconCls": "fa fa-chevron-down color-red"
|
64
|
+
},
|
65
|
+
{
|
66
|
+
"id": 9,
|
67
|
+
"name": "Justo 1",
|
68
|
+
"parentId": 8,
|
69
|
+
"isLeaf": true,
|
70
|
+
"content": "Child",
|
71
|
+
"iconCls": "fa-regular fa-square-check color-green"
|
72
|
+
},
|
73
|
+
{
|
74
|
+
"id": 10,
|
75
|
+
"name": "Justo 2",
|
76
|
+
"parentId": 8,
|
77
|
+
"isLeaf": true,
|
78
|
+
"content": "Child",
|
79
|
+
"iconCls": "fa-regular fa-square-check color-green"
|
80
|
+
},
|
81
|
+
{
|
82
|
+
"id": 11,
|
83
|
+
"name": "Rebum",
|
84
|
+
"parentId": null,
|
85
|
+
"collapsed": false,
|
86
|
+
"isLeaf": false
|
87
|
+
},
|
88
|
+
{
|
89
|
+
"id": 12,
|
90
|
+
"name": "F0801 - Stet ",
|
91
|
+
"parentId": 11,
|
92
|
+
"isLeaf": true,
|
93
|
+
"content": "Datumfeld",
|
94
|
+
"iconCls": "fa-solid fa-calendar-days color-yellow"
|
95
|
+
},
|
96
|
+
{
|
97
|
+
"id": 13,
|
98
|
+
"name": "F0802 - Kasd",
|
99
|
+
"parentId": 11,
|
100
|
+
"isLeaf": true,
|
101
|
+
"content": "Datumfeld",
|
102
|
+
"iconCls": "fa-solid fa-calendar-days color-yellow"
|
103
|
+
},
|
104
|
+
{
|
105
|
+
"id": 14,
|
106
|
+
"name": "E30 - Gubergren",
|
107
|
+
"parentId": 11,
|
108
|
+
"isLeaf": true,
|
109
|
+
"content": "Mehrfachauswahl",
|
110
|
+
"iconCls": "fa-regular fa-square-check color-green"
|
111
|
+
}
|
112
|
+
]
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "neo.mjs",
|
3
|
-
"version": "5.
|
3
|
+
"version": "5.17.0",
|
4
4
|
"description": "The webworkers driven UI framework",
|
5
5
|
"type": "module",
|
6
6
|
"repository": {
|
@@ -55,8 +55,8 @@
|
|
55
55
|
"inquirer": "^9.2.10",
|
56
56
|
"neo-jsdoc": "1.0.1",
|
57
57
|
"neo-jsdoc-x": "1.0.5",
|
58
|
-
"postcss": "^8.4.
|
59
|
-
"sass": "^1.
|
58
|
+
"postcss": "^8.4.28",
|
59
|
+
"sass": "^1.66.0",
|
60
60
|
"showdown": "^2.1.0",
|
61
61
|
"webpack": "^5.88.2",
|
62
62
|
"webpack-cli": "^5.1.4",
|
@@ -0,0 +1,24 @@
|
|
1
|
+
.examples-container-accordion {
|
2
|
+
.neo-accordion-item-icon {
|
3
|
+
&.color-blue {
|
4
|
+
background-color: lightskyblue;
|
5
|
+
color: v(list-item-background-color);
|
6
|
+
}
|
7
|
+
|
8
|
+
&.color-red {
|
9
|
+
background-color: palevioletred;
|
10
|
+
color: v(list-item-background-color);
|
11
|
+
}
|
12
|
+
|
13
|
+
&.color-yellow {
|
14
|
+
background-color: goldenrod;
|
15
|
+
color: v(list-item-background-color);
|
16
|
+
}
|
17
|
+
|
18
|
+
&.color-green {
|
19
|
+
background-color: lightseagreen;
|
20
|
+
color: v(list-container-list-color);
|
21
|
+
color: v(list-item-background-color);
|
22
|
+
}
|
23
|
+
}
|
24
|
+
}
|
@@ -122,13 +122,20 @@
|
|
122
122
|
var(--fileuploadfield-progress-color) 180deg,
|
123
123
|
transparent 180deg
|
124
124
|
);
|
125
|
-
animation: spinner-rotation 3s linear infinite;
|
125
|
+
animation : spinner-rotation 3s linear infinite;
|
126
126
|
|
127
127
|
&::after {
|
128
|
-
content
|
129
|
-
flex
|
128
|
+
content : "";
|
129
|
+
flex : 0 0 calc(100% - 6px);
|
130
|
+
background-color : var(--fileuploadfield-background-color);
|
130
131
|
}
|
131
132
|
}
|
133
|
+
// No interaction while scanning. We just have to wait.
|
134
|
+
// But
|
135
|
+
.neo-file-upload-action-button {
|
136
|
+
position : absolute;
|
137
|
+
clip : rect(0, 0, 0, 0);
|
138
|
+
}
|
132
139
|
}
|
133
140
|
|
134
141
|
// While uploading and scanning, we can abort the whole upload/scan process
|
@@ -141,7 +148,7 @@
|
|
141
148
|
}
|
142
149
|
|
143
150
|
// If the upload or scan failed, we show an error UI and the action button cancels
|
144
|
-
.neo-file-upload-state-upload-failed, .neo-file-upload-state-scan-failed {
|
151
|
+
.neo-file-upload-state-upload-failed, .neo-file-upload-state-scan-failed, .neo-file-upload-field.neo-invalid {
|
145
152
|
--fileuploadfield-progress-color : var(--fileuploadfield-error-color);
|
146
153
|
border-color : var(--fileuploadfield-error-color);
|
147
154
|
|
@@ -201,6 +208,14 @@
|
|
201
208
|
}
|
202
209
|
}
|
203
210
|
|
211
|
+
.neo-file-upload-state-deleted {
|
212
|
+
.neo-file-upload-action-button {
|
213
|
+
&::after {
|
214
|
+
content : var(--cancel-icon-codepoint );
|
215
|
+
}
|
216
|
+
}
|
217
|
+
}
|
218
|
+
|
204
219
|
.neo-file-upload-state-ready {
|
205
220
|
// Only the input field is visible when in ready state
|
206
221
|
// It takes up the whole component, and is the only interactive item
|