]> git.proxmox.com Git - proxmox-widget-toolkit.git/blame - form/DisplayEdit.js
form: add Proxmox.form.field.DisplayEdit
[proxmox-widget-toolkit.git] / form / DisplayEdit.js
CommitLineData
a46c2eb1
TL
1Ext.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});