neo.mjs 5.9.3 → 5.10.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.
- package/apps/ServiceWorker.mjs +2 -2
- package/buildScripts/createClass.mjs +1 -3
- package/examples/ServiceWorker.mjs +2 -2
- package/examples/container/base/MainContainer.mjs +78 -0
- package/examples/container/{app.mjs → base/app.mjs} +1 -1
- package/examples/container/{index.html → base/index.html} +1 -1
- package/examples/container/{neo-config.json → base/neo-config.json} +2 -2
- package/examples/container/dialog/MainContainer.mjs +68 -0
- package/examples/container/dialog/MainContainerController.mjs +80 -0
- package/examples/container/dialog/app.mjs +6 -0
- package/examples/container/dialog/index.html +11 -0
- package/examples/container/dialog/neo-config.json +7 -0
- package/package.json +3 -3
- package/resources/scss/src/component/Process.scss +190 -0
- package/resources/scss/src/container/Dialog.scss +12 -0
- package/resources/scss/src/form/field/Switch.scss +135 -0
- package/resources/scss/theme-dark/component/Process.scss +21 -0
- package/resources/scss/theme-dark/form/field/Picker.scss +1 -1
- package/resources/scss/theme-dark/form/field/Switch.scss +17 -0
- package/resources/scss/theme-light/component/Process.scss +21 -0
- package/resources/scss/theme-light/form/field/Switch.scss +17 -0
- package/src/DefaultConfig.mjs +2 -2
- package/src/component/Process.mjs +180 -0
- package/src/container/Dialog.mjs +221 -0
- package/src/dialog/header/Toolbar.mjs +7 -7
- package/src/form/field/Select.mjs +15 -9
- package/src/form/field/Switch.mjs +43 -0
- package/src/main/addon/Dialog.mjs +68 -0
- package/examples/container/MainContainer.mjs +0 -93
@@ -0,0 +1,21 @@
|
|
1
|
+
$neoMap: map-merge($neoMap, (
|
2
|
+
'process-arrow-color' : #ffdb4a,
|
3
|
+
'process-background-color': #fff,
|
4
|
+
'process-icon-color' : steelblue,
|
5
|
+
'process-icon-size' : 2rem,
|
6
|
+
'process-shadow-color' : rgba(0, 0, 0, .5),
|
7
|
+
'process-title-color' : #363636,
|
8
|
+
'process-text-color' : #444444
|
9
|
+
));
|
10
|
+
|
11
|
+
@if $useCssVars == true {
|
12
|
+
:root .neo-theme-dark {
|
13
|
+
--process-arrow-color : #{neo(process-arrow-color)};
|
14
|
+
--process-background-color: #{neo(process-background-color)};
|
15
|
+
--process-icon-color : #{neo(process-icon-color)};
|
16
|
+
--process-icon-size : #{neo(process-icon-size)};
|
17
|
+
--process-shadow-color : #{neo(process-shadow-color)};
|
18
|
+
--process-title-color : #{neo(process-title-color)};
|
19
|
+
--process-text-color : #{neo(process-text-color)};
|
20
|
+
}
|
21
|
+
}
|
@@ -5,7 +5,7 @@ $neoMap: map-merge($neoMap, (
|
|
5
5
|
));
|
6
6
|
|
7
7
|
@if $useCssVars == true {
|
8
|
-
:root .neo-theme-
|
8
|
+
:root .neo-theme-dark { // .neo-pickerfield
|
9
9
|
--pickerfield-container-background-color: #{neo(pickerfield-container-background-)};
|
10
10
|
--pickerfield-container-border : #{neo(pickerfield-container-border)};
|
11
11
|
--pickerfield-container-box-shadow : #{neo(pickerfield-container-box-shadow)};
|
@@ -0,0 +1,17 @@
|
|
1
|
+
$neoMap: map-merge($neoMap, (
|
2
|
+
'switchfield-checked': green,
|
3
|
+
'switchfield-background-color': darkgrey,
|
4
|
+
'switchfield-inactive-color': grey,
|
5
|
+
'switchfield-active-color': white,
|
6
|
+
'switchfield-thumb-color': white
|
7
|
+
));
|
8
|
+
|
9
|
+
@if $useCssVars == true {
|
10
|
+
:root .neo-theme-dark { // .neo-switchfield
|
11
|
+
--neo-switchfield-checked : #{neo(switchfield-checked)};
|
12
|
+
--neo-switchfield-background-color : #{neo(switchfield-background-color)};
|
13
|
+
--neo-switchfield-inactive-color : #{neo(switchfield-inactive-color)};
|
14
|
+
--neo-switchfield-active-color : #{neo(switchfield-active-color)};
|
15
|
+
--neo-switchfield-thumb-color-active-color : #{neo(switchfield-thumb-color-active-color)};
|
16
|
+
}
|
17
|
+
}
|
@@ -0,0 +1,21 @@
|
|
1
|
+
$neoMap: map-merge($neoMap, (
|
2
|
+
'process-arrow-color' : #ffdb4a,
|
3
|
+
'process-background-color': #fff,
|
4
|
+
'process-icon-color' : steelblue,
|
5
|
+
'process-icon-size' : 2rem,
|
6
|
+
'process-shadow-color' : rgba(0, 0, 0, .5),
|
7
|
+
'process-title-color' : #363636,
|
8
|
+
'process-text-color' : #444444
|
9
|
+
));
|
10
|
+
|
11
|
+
@if $useCssVars == true {
|
12
|
+
:root .neo-theme-light {
|
13
|
+
--process-arrow-color : #{neo(process-arrow-color)};
|
14
|
+
--process-background-color: #{neo(process-background-color)};
|
15
|
+
--process-icon-color : #{neo(process-icon-color)};
|
16
|
+
--process-icon-size : #{neo(process-icon-size)};
|
17
|
+
--process-shadow-color : #{neo(process-shadow-color)};
|
18
|
+
--process-title-color : #{neo(process-title-color)};
|
19
|
+
--process-text-color : #{neo(process-text-color)};
|
20
|
+
}
|
21
|
+
}
|
@@ -0,0 +1,17 @@
|
|
1
|
+
$neoMap: map-merge($neoMap, (
|
2
|
+
'switchfield-checked': green,
|
3
|
+
'switchfield-background-color': darkgrey,
|
4
|
+
'switchfield-inactive-color': grey,
|
5
|
+
'switchfield-active-color': white,
|
6
|
+
'switchfield-thumb-color': white
|
7
|
+
));
|
8
|
+
|
9
|
+
@if $useCssVars == true {
|
10
|
+
:root .neo-theme-light { // .neo-switchfield
|
11
|
+
--neo-switchfield-checked : #{neo(switchfield-checked)};
|
12
|
+
--neo-switchfield-background-color : #{neo(switchfield-background-color)};
|
13
|
+
--neo-switchfield-inactive-color : #{neo(switchfield-inactive-color)};
|
14
|
+
--neo-switchfield-active-color : #{neo(switchfield-active-color)};
|
15
|
+
--neo-switchfield-thumb-color-active-color : #{neo(switchfield-thumb-color-active-color)};
|
16
|
+
}
|
17
|
+
}
|
package/src/DefaultConfig.mjs
CHANGED
@@ -236,12 +236,12 @@ const DefaultConfig = {
|
|
236
236
|
useVdomWorker: true,
|
237
237
|
/**
|
238
238
|
* buildScripts/injectPackageVersion.mjs will update this value
|
239
|
-
* @default '5.
|
239
|
+
* @default '5.10.1'
|
240
240
|
* @memberOf! module:Neo
|
241
241
|
* @name config.version
|
242
242
|
* @type String
|
243
243
|
*/
|
244
|
-
version: '5.
|
244
|
+
version: '5.10.1'
|
245
245
|
};
|
246
246
|
|
247
247
|
Object.assign(DefaultConfig, {
|
@@ -0,0 +1,180 @@
|
|
1
|
+
import Base from './Base.mjs';
|
2
|
+
import NeoArray from '../util/Array.mjs';
|
3
|
+
|
4
|
+
/**
|
5
|
+
* @class Neo.component.Process
|
6
|
+
* @extends Neo.component.Base
|
7
|
+
*
|
8
|
+
* @example
|
9
|
+
* {
|
10
|
+
* module: Process,
|
11
|
+
* arrowColor: 'darkred',
|
12
|
+
* items: [{
|
13
|
+
* iconCls: 'fa fa-car',
|
14
|
+
* header: '1. Wunschkennzeichen',
|
15
|
+
* text: 'Lorem ipsum dolor sit amet, consectetuer adipiscing elit...'
|
16
|
+
* }, {
|
17
|
+
* iconCls: 'fa fa-house',
|
18
|
+
* header: '2. Termine',
|
19
|
+
* text: 'Lorem ipsum dolor sit amet, consectetuer adipiscing elit...'
|
20
|
+
* }]
|
21
|
+
* }
|
22
|
+
*/
|
23
|
+
class Process extends Base {
|
24
|
+
/**
|
25
|
+
* Each item gets an arrow and the content, which gets filled with an item.
|
26
|
+
* The slit allows to fade out the sidebar.
|
27
|
+
*
|
28
|
+
* @member {Object} itemLayout={cls: 'process-step', cn: [{cls: ['arrow', 'white']},{cls: ['slit']},{cls: ['arrow', 'yellow']},{cls: 'process-content', cn: [{cls: ['process-step-icon']},{tag: 'h2', cls: ['process-step-header']},{cls: ['process-step-text']}]}]}
|
29
|
+
*/
|
30
|
+
itemLayout = {
|
31
|
+
cls: 'process-step', cn: [
|
32
|
+
{cls: ['arrow', 'white']},
|
33
|
+
{cls: ['slit']},
|
34
|
+
{cls: ['arrow', 'yellow']},
|
35
|
+
{
|
36
|
+
cls: 'process-content', cn: [
|
37
|
+
{cls: ['process-step-icon']},
|
38
|
+
{tag: 'h2', cls: ['process-step-header']},
|
39
|
+
{cls: ['process-step-text']}
|
40
|
+
]
|
41
|
+
}
|
42
|
+
]
|
43
|
+
}
|
44
|
+
|
45
|
+
static config = {
|
46
|
+
/**
|
47
|
+
* @member {String} className='Neo.component.Process'
|
48
|
+
* @protected
|
49
|
+
*/
|
50
|
+
className: 'Neo.component.Process',
|
51
|
+
/**
|
52
|
+
* @member {String} ntype='process'
|
53
|
+
* @protected
|
54
|
+
*/
|
55
|
+
ntype: 'process',
|
56
|
+
/**
|
57
|
+
* @member {String[]} baseCls=['neo-process']
|
58
|
+
*/
|
59
|
+
baseCls: ['neo-process'],
|
60
|
+
|
61
|
+
/**
|
62
|
+
* Set the color of the process arrow.
|
63
|
+
* Out of the box this is #ffdb4a
|
64
|
+
*
|
65
|
+
* @member {String|null} arrowColor=null
|
66
|
+
*/
|
67
|
+
arrowColor_: null,
|
68
|
+
/**
|
69
|
+
* 'true' shows the items from left to right
|
70
|
+
* 'false' shows the items from top to bottom
|
71
|
+
* There is a minimum width of 700px to show items 'true'
|
72
|
+
*
|
73
|
+
* @member {Boolean} horizontal=true
|
74
|
+
*/
|
75
|
+
horizontal_: true,
|
76
|
+
/**
|
77
|
+
* Set the color of the icons.
|
78
|
+
* Out of the box this is #ffdb4a
|
79
|
+
*
|
80
|
+
* @member {String|null} iconColor=null
|
81
|
+
*/
|
82
|
+
iconColor_: null,
|
83
|
+
|
84
|
+
/**
|
85
|
+
* Each item will be transferred into the itemLayout
|
86
|
+
*
|
87
|
+
* @member {Object[]|Object} items=null
|
88
|
+
*
|
89
|
+
* @example
|
90
|
+
* items: [{
|
91
|
+
* iconCls: 'fa fa-car',
|
92
|
+
* header: '1. First Step',
|
93
|
+
* text: 'Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Maecenas porttitor congue massa. Fusce posuere, magna sed pulvinar ultricies, purus lectus malesuada libero, sit amet commodo magna eros quis urna.'
|
94
|
+
* }, {
|
95
|
+
* iconCls: 'fa fa-house',
|
96
|
+
* header: '2. Second Step',
|
97
|
+
* text: 'Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Maecenas porttitor congue massa. Fusce posuere, magna sed pulvinar ultricies, purus lectus malesuada libero, sit amet commodo magna eros quis urna.'
|
98
|
+
* }]
|
99
|
+
*/
|
100
|
+
items_: null,
|
101
|
+
|
102
|
+
/**
|
103
|
+
* vdom definition is used during item creation
|
104
|
+
* Do not remove
|
105
|
+
*
|
106
|
+
* @member {Object} vdom={cn:[]}
|
107
|
+
*/
|
108
|
+
vdom: {cn: []}
|
109
|
+
}
|
110
|
+
|
111
|
+
/**
|
112
|
+
* Triggered after arrowColor config got changed
|
113
|
+
* @param {String} newValue
|
114
|
+
* @protected
|
115
|
+
*/
|
116
|
+
afterSetArrowColor(newValue) {
|
117
|
+
let style = this.style;
|
118
|
+
|
119
|
+
style['--process-arrow-color'] = newValue;
|
120
|
+
|
121
|
+
this.style = style;
|
122
|
+
}
|
123
|
+
|
124
|
+
/**
|
125
|
+
* Triggered after horizontal config got changed
|
126
|
+
* @param {Boolean} isHorizontal
|
127
|
+
* @protected
|
128
|
+
*/
|
129
|
+
afterSetHorizontal(isHorizontal) {
|
130
|
+
let cls = this.cls,
|
131
|
+
positionCls = isHorizontal ? 'neo-process-horizontal' : 'neo-process-vertical';
|
132
|
+
|
133
|
+
NeoArray.add(cls, positionCls);
|
134
|
+
|
135
|
+
this.cls = cls;
|
136
|
+
}
|
137
|
+
|
138
|
+
/**
|
139
|
+
* Triggered after iconColor config got changed
|
140
|
+
* @param {String} newValue
|
141
|
+
* @protected
|
142
|
+
*/
|
143
|
+
afterSetIconColor(newValue) {
|
144
|
+
let style = this.style;
|
145
|
+
|
146
|
+
style['--process-icon-color'] = newValue;
|
147
|
+
|
148
|
+
this.style = style;
|
149
|
+
}
|
150
|
+
|
151
|
+
/**
|
152
|
+
* Triggered after items config got changed
|
153
|
+
* @param {Object[]} items
|
154
|
+
* @protected
|
155
|
+
*/
|
156
|
+
afterSetItems(items) {
|
157
|
+
if (!(Neo.isArray(items) || Neo.isObject(items))) return;
|
158
|
+
if (!Neo.isArray(items)) {
|
159
|
+
items = [items];
|
160
|
+
}
|
161
|
+
|
162
|
+
let vdomRoot = this.vdom,
|
163
|
+
itemLayout = this.itemLayout;
|
164
|
+
|
165
|
+
items.forEach((newItem) => {
|
166
|
+
let curItem = Neo.clone(itemLayout, true),
|
167
|
+
content = curItem.cn[3];
|
168
|
+
|
169
|
+
content.cn[0].cls.push(newItem.iconCls);
|
170
|
+
content.cn[1].innerHTML = newItem.header;
|
171
|
+
content.cn[2].innerHTML = newItem.text;
|
172
|
+
|
173
|
+
NeoArray.add(vdomRoot.cn, curItem);
|
174
|
+
});
|
175
|
+
}
|
176
|
+
}
|
177
|
+
|
178
|
+
Neo.applyClassConfig(Process);
|
179
|
+
|
180
|
+
export default Process;
|
@@ -0,0 +1,221 @@
|
|
1
|
+
import Base from '../container/Panel.mjs';
|
2
|
+
import NeoArray from '../util/Array.mjs';
|
3
|
+
import HeaderToolbar from '../dialog/header/Toolbar.mjs';
|
4
|
+
|
5
|
+
/**
|
6
|
+
* Lightweight implementation using the dialog tag.
|
7
|
+
* See: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/dialog
|
8
|
+
* @class Neo.container.Dialog
|
9
|
+
* @extends Neo.container.Panel
|
10
|
+
*/
|
11
|
+
class Dialog extends Base {
|
12
|
+
static config = {
|
13
|
+
/**
|
14
|
+
* @member {String} className='Neo.container.Dialog'
|
15
|
+
* @protected
|
16
|
+
*/
|
17
|
+
className: 'Neo.container.Dialog',
|
18
|
+
/**
|
19
|
+
* @member {String} ntype='container-dialog'
|
20
|
+
* @protected
|
21
|
+
*/
|
22
|
+
ntype: 'container-dialog',
|
23
|
+
/**
|
24
|
+
* @member {String[]} baseCls=['container-dialog']
|
25
|
+
* @protected
|
26
|
+
*/
|
27
|
+
baseCls: ['neo-container-dialog', 'neo-panel', 'neo-container'],
|
28
|
+
/**
|
29
|
+
* @member {Object} headerConfig=null
|
30
|
+
*/
|
31
|
+
headerConfig: null,
|
32
|
+
/**
|
33
|
+
* @member {Neo.toolbar.Base|null} headerToolbar=null
|
34
|
+
*/
|
35
|
+
headerToolbar: null,
|
36
|
+
/**
|
37
|
+
* The CSS class to use for an icon, e.g. 'fa fa-home'
|
38
|
+
* @member {String|null} [iconCls_=null]
|
39
|
+
*/
|
40
|
+
iconCls_: null,
|
41
|
+
/**
|
42
|
+
* @member {Object[]} items
|
43
|
+
*/
|
44
|
+
items: [],
|
45
|
+
/**
|
46
|
+
* @member {String} title=null
|
47
|
+
*/
|
48
|
+
title_: null,
|
49
|
+
/**
|
50
|
+
* @member {Object} _vdom={tag: 'dialog', cn: []}
|
51
|
+
*/
|
52
|
+
_vdom:
|
53
|
+
{tag: 'dialog', cn: []}
|
54
|
+
}
|
55
|
+
|
56
|
+
/**
|
57
|
+
* @param {Object} config
|
58
|
+
*/
|
59
|
+
construct(config) {
|
60
|
+
super.construct(config);
|
61
|
+
this.createHeader();
|
62
|
+
}
|
63
|
+
|
64
|
+
/**
|
65
|
+
* Triggered after the iconCls config got changed
|
66
|
+
* @param {String} value
|
67
|
+
* @param {String} oldValue
|
68
|
+
* @protected
|
69
|
+
*/
|
70
|
+
afterSetIconCls(value, oldValue) {
|
71
|
+
console.log(value, oldValue)
|
72
|
+
|
73
|
+
if (!this.headers) { return }
|
74
|
+
let iconNode = this.headers.down({flag: 'dialog-header-icon'});
|
75
|
+
let iconNodeCls = [...iconNode.cls];
|
76
|
+
|
77
|
+
NeoArray.remove(iconNodeCls, oldValue);
|
78
|
+
NeoArray.add( iconNodeCls, value);
|
79
|
+
|
80
|
+
iconNode.cls = iconNodeCls;
|
81
|
+
|
82
|
+
iconNode.removeDom = !value || value === '';
|
83
|
+
this.update();
|
84
|
+
}
|
85
|
+
|
86
|
+
/**
|
87
|
+
* Triggered after the title config got changed
|
88
|
+
* @param {String} value
|
89
|
+
* @param {String} oldValue
|
90
|
+
* @protected
|
91
|
+
*/
|
92
|
+
afterSetTitle(value, oldValue) {
|
93
|
+
this.headerToolbar?.set({
|
94
|
+
title: value
|
95
|
+
});
|
96
|
+
}
|
97
|
+
|
98
|
+
/**
|
99
|
+
* Converts the iconCls array into a string on beforeGet
|
100
|
+
* @returns {String}
|
101
|
+
* @protected
|
102
|
+
*/
|
103
|
+
beforeGetIconCls() {
|
104
|
+
let iconCls = this._iconCls;
|
105
|
+
|
106
|
+
if (Array.isArray(iconCls)) {
|
107
|
+
return iconCls.join(' ');
|
108
|
+
}
|
109
|
+
|
110
|
+
return iconCls;
|
111
|
+
}
|
112
|
+
|
113
|
+
/**
|
114
|
+
* Triggered before the iconCls config gets changed. Converts the string into an array if needed.
|
115
|
+
* @param {Array|String|null} value
|
116
|
+
* @param {Array|String|null} oldValue
|
117
|
+
* @returns {Array}
|
118
|
+
* @protected
|
119
|
+
*/
|
120
|
+
beforeSetIconCls(value, oldValue) {
|
121
|
+
if (value && !Array.isArray(value)) {
|
122
|
+
value = value.split(' ').filter(Boolean);
|
123
|
+
}
|
124
|
+
|
125
|
+
return value;
|
126
|
+
}
|
127
|
+
|
128
|
+
/**
|
129
|
+
* close the dialog in main thread
|
130
|
+
*/
|
131
|
+
close() {
|
132
|
+
let me = this;
|
133
|
+
|
134
|
+
Neo.main.addon.Dialog.close({
|
135
|
+
id: me.id,
|
136
|
+
appName: me.appName
|
137
|
+
});
|
138
|
+
}
|
139
|
+
|
140
|
+
/**
|
141
|
+
* @protected
|
142
|
+
*/
|
143
|
+
createHeader() {
|
144
|
+
let me = this,
|
145
|
+
cls = ['neo-header-toolbar', 'neo-toolbar'],
|
146
|
+
headers = me.headers || [],
|
147
|
+
headerConfigCopy = {...me.headerConfig};
|
148
|
+
delete headerConfigCopy.items;
|
149
|
+
|
150
|
+
me.headerToolbar = Neo.create({
|
151
|
+
module : HeaderToolbar,
|
152
|
+
actions: [{action: 'close', iconCls: 'fa-solid fa-xmark'}],
|
153
|
+
appName : me.appName,
|
154
|
+
cls,
|
155
|
+
dock : 'top',
|
156
|
+
flex : 'none',
|
157
|
+
id : me.getHeaderToolbarId(),
|
158
|
+
listeners: {headerAction: me.executeHeaderAction, scope: me},
|
159
|
+
items : [{
|
160
|
+
cls: me.iconCls,
|
161
|
+
flag : 'dialog-header-icon',
|
162
|
+
}, {
|
163
|
+
ntype : 'label',
|
164
|
+
cls : ['neo-panel-header-text', 'neo-label'],
|
165
|
+
flag : 'title-label',
|
166
|
+
removeDom: !me.title,
|
167
|
+
text : me.title
|
168
|
+
}, ...me.headerConfig.items],
|
169
|
+
|
170
|
+
...headerConfigCopy
|
171
|
+
});
|
172
|
+
|
173
|
+
headers.unshift(me.headerToolbar);
|
174
|
+
|
175
|
+
me.headers = headers;
|
176
|
+
}
|
177
|
+
|
178
|
+
/**
|
179
|
+
* {Object} data
|
180
|
+
*/
|
181
|
+
executeHeaderAction(data) {
|
182
|
+
let me = this,
|
183
|
+
|
184
|
+
map = {
|
185
|
+
close : me.close
|
186
|
+
};
|
187
|
+
|
188
|
+
map[data.action]?.call(me, data);
|
189
|
+
|
190
|
+
me.fire('headerAction', {
|
191
|
+
dialog: me,
|
192
|
+
...data
|
193
|
+
})
|
194
|
+
}
|
195
|
+
|
196
|
+
/**
|
197
|
+
* Returns the id of the header toolbar
|
198
|
+
* @returns {String}
|
199
|
+
*/
|
200
|
+
getHeaderToolbarId() {
|
201
|
+
return this.id + '-header-toolbar';
|
202
|
+
}
|
203
|
+
|
204
|
+
/**
|
205
|
+
* Shows the dialog (with / without Modal) in main thread
|
206
|
+
* @param {Boolean} modal
|
207
|
+
*/
|
208
|
+
async show(modal = true) {
|
209
|
+
let me = this;
|
210
|
+
await Neo.timeout(20);
|
211
|
+
|
212
|
+
Neo.main.addon.Dialog[modal ? 'showModal': 'show']({
|
213
|
+
id: me.id,
|
214
|
+
appName: me.appName
|
215
|
+
});
|
216
|
+
}
|
217
|
+
}
|
218
|
+
|
219
|
+
Neo.applyClassConfig(Dialog);
|
220
|
+
|
221
|
+
export default Dialog;
|
@@ -48,8 +48,8 @@ class Toolbar extends Base {
|
|
48
48
|
*/
|
49
49
|
afterSetTitle(value, oldValue) {
|
50
50
|
this.down({flag: 'title-label'})?.set({
|
51
|
-
|
52
|
-
text
|
51
|
+
hidden: !value,
|
52
|
+
text : value
|
53
53
|
})
|
54
54
|
}
|
55
55
|
|
@@ -62,11 +62,11 @@ class Toolbar extends Base {
|
|
62
62
|
items = me.items || [];
|
63
63
|
|
64
64
|
items.push({
|
65
|
-
ntype
|
66
|
-
cls
|
67
|
-
flag
|
68
|
-
|
69
|
-
text
|
65
|
+
ntype : 'label',
|
66
|
+
cls : ['neo-panel-header-text', 'neo-label'],
|
67
|
+
flag : 'title-label',
|
68
|
+
hidden: !me.title,
|
69
|
+
text : me.title
|
70
70
|
});
|
71
71
|
|
72
72
|
if (me.actions) {
|
@@ -193,17 +193,23 @@ class Select extends Picker {
|
|
193
193
|
let me = this,
|
194
194
|
filters;
|
195
195
|
|
196
|
-
if (value
|
197
|
-
|
196
|
+
if (value) {
|
197
|
+
if (me.useFilter) {
|
198
|
+
filters = value.filters || [];
|
199
|
+
|
200
|
+
filters.push({
|
201
|
+
includeEmptyValues: true,
|
202
|
+
operator : me.filterOperator,
|
203
|
+
property : me.displayField,
|
204
|
+
value : value.get(me.value)?.[me.displayField] || me.value
|
205
|
+
});
|
198
206
|
|
199
|
-
|
200
|
-
|
201
|
-
operator : me.filterOperator,
|
202
|
-
property : me.displayField,
|
203
|
-
value : value.get(me.value)?.[me.displayField] || me.value
|
204
|
-
});
|
207
|
+
value.filters = filters
|
208
|
+
}
|
205
209
|
|
206
|
-
|
210
|
+
if (me.list) {
|
211
|
+
me.list.store = value
|
212
|
+
}
|
207
213
|
}
|
208
214
|
}
|
209
215
|
|
@@ -0,0 +1,43 @@
|
|
1
|
+
import CheckBox from './CheckBox.mjs';
|
2
|
+
|
3
|
+
/**
|
4
|
+
* @class Neo.form.field.Switch
|
5
|
+
* @extends Neo.form.field.CheckBox
|
6
|
+
*/
|
7
|
+
class Switch extends CheckBox {
|
8
|
+
static config = {
|
9
|
+
/**
|
10
|
+
* @member {String} className='Neo.form.field.Switch'
|
11
|
+
* @protected
|
12
|
+
*/
|
13
|
+
className: 'Neo.form.field.Switch',
|
14
|
+
/**
|
15
|
+
* @member {String} ntype='switchfield'
|
16
|
+
* @protected
|
17
|
+
*/
|
18
|
+
ntype: 'switchfield',
|
19
|
+
/**
|
20
|
+
* @member {String[]} baseCls=['neo-checkboxfield']
|
21
|
+
*/
|
22
|
+
baseCls: ['neo-switchfield'],
|
23
|
+
/**
|
24
|
+
* @member {Object} _vdom
|
25
|
+
*/
|
26
|
+
_vdom:
|
27
|
+
{cn: [
|
28
|
+
{tag: 'label', cls: ['neo-checkbox-label'], cn: [
|
29
|
+
{tag: 'span', cls: []},
|
30
|
+
{tag: 'input', cls: ['neo-checkbox-input']},
|
31
|
+
{tag: 'i', cls: ['neo-checkbox-icon'], removeDom: true},
|
32
|
+
{tag: 'span', cls: ['neo-checkbox-value-label']}
|
33
|
+
]},
|
34
|
+
{cls: ['neo-error-wrapper'], removeDom: true, cn: [
|
35
|
+
{cls: ['neo-error']}
|
36
|
+
]}
|
37
|
+
]}
|
38
|
+
}
|
39
|
+
}
|
40
|
+
|
41
|
+
Neo.applyClassConfig(Switch);
|
42
|
+
|
43
|
+
export default Switch;
|
@@ -0,0 +1,68 @@
|
|
1
|
+
import Base from '../../core/Base.mjs';
|
2
|
+
import DomAccess from '../DomAccess.mjs'
|
3
|
+
/**
|
4
|
+
* Addon for component.Dialog
|
5
|
+
* @class Neo.main.addon.Dialog
|
6
|
+
* @extends Neo.core.Base
|
7
|
+
* @singleton
|
8
|
+
*/
|
9
|
+
class Dialog extends Base {
|
10
|
+
static config = {
|
11
|
+
/**
|
12
|
+
* @member {String} className='Neo.main.addon.Dialog'
|
13
|
+
* @protected
|
14
|
+
*/
|
15
|
+
className: 'Neo.main.addon.Dialog',
|
16
|
+
/**
|
17
|
+
* Remote method access for other workers
|
18
|
+
* @member {Object} remote={app: [//...]}
|
19
|
+
* @protected
|
20
|
+
*/
|
21
|
+
remote: {
|
22
|
+
app: [
|
23
|
+
'close',
|
24
|
+
'show',
|
25
|
+
'showModal'
|
26
|
+
]
|
27
|
+
},
|
28
|
+
/**
|
29
|
+
* @member {Boolean} singleton=true
|
30
|
+
* @protected
|
31
|
+
*/
|
32
|
+
singleton: true
|
33
|
+
}
|
34
|
+
|
35
|
+
/**
|
36
|
+
* @param {Object} data
|
37
|
+
* @param {String} data.id
|
38
|
+
* @returns {Boolean}
|
39
|
+
*/
|
40
|
+
close(data) {
|
41
|
+
DomAccess.getElement(data.id).close()
|
42
|
+
return true;
|
43
|
+
}
|
44
|
+
|
45
|
+
/**
|
46
|
+
* @param {Object} data
|
47
|
+
* @param {String} data.id
|
48
|
+
* @returns {Boolean}
|
49
|
+
*/
|
50
|
+
show(data) {
|
51
|
+
DomAccess.getElement(data.id).show()
|
52
|
+
return true;
|
53
|
+
}
|
54
|
+
|
55
|
+
/**
|
56
|
+
* @param {Object} data
|
57
|
+
* @param {String} data.id
|
58
|
+
* @returns {Boolean}
|
59
|
+
*/
|
60
|
+
showModal(data) {
|
61
|
+
DomAccess.getElement(data.id).showModal()
|
62
|
+
return true;
|
63
|
+
}
|
64
|
+
}
|
65
|
+
|
66
|
+
let instance = Neo.applyClassConfig(Dialog);
|
67
|
+
|
68
|
+
export default instance;
|