]>
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 | ||
a46c2eb1 TL |
28 | initComponent: function() { |
29 | let me = this; | |
30 | ||
31 | let displayConfig = { | |
32 | xtype: me.displayType, | |
33 | bind: { | |
34 | hidden: '{editable}', | |
35 | disabled: '{editable}', | |
36 | }, | |
37 | }; | |
38 | Ext.applyIf(displayConfig, me.initialConfig); | |
39 | delete displayConfig.editConfig; | |
40 | delete displayConfig.editable; | |
41 | ||
42 | let editConfig = Ext.apply({}, me.editConfig); // clone, not reference! | |
43 | Ext.applyIf(editConfig, { | |
44 | xtype: 'textfield', | |
45 | bind: { | |
46 | hidden: '{!editable}', | |
47 | disabled: '{!editable}', | |
48 | }, | |
49 | }); | |
50 | Ext.applyIf(editConfig, displayConfig); | |
51 | ||
52 | // avoid glitch, start off correct even before viewmodel fixes it | |
53 | editConfig.disabled = editConfig.hidden = !me.editable; | |
54 | displayConfig.disabled = displayConfig.hidden = !!me.editable; | |
55 | ||
56 | editConfig.name = displayConfig.name = me.name; | |
57 | ||
58 | Ext.apply(me, { | |
59 | items: [ | |
60 | displayConfig, | |
61 | editConfig, | |
62 | ], | |
63 | }); | |
64 | ||
65 | me.callParent(); | |
66 | ||
67 | me.getViewModel().set('editable', me.editable); | |
68 | }, | |
69 | ||
70 | }); |