]>
Commit | Line | Data |
---|---|---|
a46c2eb1 TL |
1 | Ext.define('Proxmox.form.field.DisplayEdit', { |
2 | extend: 'Ext.form.FieldContainer', | |
3 | alias: ['widget.pmxDisplayEditField'], | |
4 | ||
5 | viewModel: { | |
6 | data: { | |
7 | editable: false, | |
8 | }, | |
9 | }, | |
10 | ||
11 | displayType: 'displayfield', | |
12 | ||
13 | editConfig: {}, | |
14 | editable: false, | |
15 | setEditable: function(editable) { | |
16 | let me = this; | |
17 | let vm = me.getViewModel(); | |
18 | ||
19 | me.editable = editable; | |
20 | vm.set('editable', editable); | |
21 | }, | |
22 | ||
23 | layout: 'hbox', | |
24 | defaults: { | |
25 | hideLabel: true | |
26 | }, | |
27 | ||
28 | //setValue: me.callParent(); | |
29 | ||
30 | initComponent: function() { | |
31 | let me = this; | |
32 | ||
33 | let displayConfig = { | |
34 | xtype: me.displayType, | |
35 | bind: { | |
36 | hidden: '{editable}', | |
37 | disabled: '{editable}', | |
38 | }, | |
39 | }; | |
40 | Ext.applyIf(displayConfig, me.initialConfig); | |
41 | delete displayConfig.editConfig; | |
42 | delete displayConfig.editable; | |
43 | ||
44 | let editConfig = Ext.apply({}, me.editConfig); // clone, not reference! | |
45 | Ext.applyIf(editConfig, { | |
46 | xtype: 'textfield', | |
47 | bind: { | |
48 | hidden: '{!editable}', | |
49 | disabled: '{!editable}', | |
50 | }, | |
51 | }); | |
52 | Ext.applyIf(editConfig, displayConfig); | |
53 | ||
54 | // avoid glitch, start off correct even before viewmodel fixes it | |
55 | editConfig.disabled = editConfig.hidden = !me.editable; | |
56 | displayConfig.disabled = displayConfig.hidden = !!me.editable; | |
57 | ||
58 | editConfig.name = displayConfig.name = me.name; | |
59 | ||
60 | Ext.apply(me, { | |
61 | items: [ | |
62 | displayConfig, | |
63 | editConfig, | |
64 | ], | |
65 | }); | |
66 | ||
67 | me.callParent(); | |
68 | ||
69 | me.getViewModel().set('editable', me.editable); | |
70 | }, | |
71 | ||
72 | }); |