]> git.proxmox.com Git - proxmox-widget-toolkit.git/blame - form/DisplayEdit.js
use eslint and execute as check target
[proxmox-widget-toolkit.git] / form / DisplayEdit.js
CommitLineData
a46c2eb1
TL
1Ext.define('Proxmox.form.field.DisplayEdit', {
2 extend: 'Ext.form.FieldContainer',
a307714b 3 alias: 'widget.pmxDisplayEditField',
a46c2eb1
TL
4
5 viewModel: {
a307714b 6 parent: null,
a46c2eb1
TL
7 data: {
8 editable: false,
a307714b 9 value: undefined,
a46c2eb1
TL
10 },
11 },
12
13 displayType: 'displayfield',
14
15 editConfig: {},
16 editable: false,
17 setEditable: function(editable) {
18 let me = this;
19 let vm = me.getViewModel();
20
21 me.editable = editable;
22 vm.set('editable', editable);
23 },
24
187e9a6d 25 layout: 'fit',
a46c2eb1 26 defaults: {
01031528 27 hideLabel: true,
a46c2eb1
TL
28 },
29
a46c2eb1
TL
30 initComponent: function() {
31 let me = this;
32
33 let displayConfig = {
34 xtype: me.displayType,
a307714b 35 bind: {},
a46c2eb1
TL
36 };
37 Ext.applyIf(displayConfig, me.initialConfig);
38 delete displayConfig.editConfig;
39 delete displayConfig.editable;
40
a307714b 41 let editConfig = Ext.apply({}, me.editConfig);
a46c2eb1
TL
42 Ext.applyIf(editConfig, {
43 xtype: 'textfield',
a307714b 44 bind: {},
a46c2eb1
TL
45 });
46 Ext.applyIf(editConfig, displayConfig);
47
a307714b
TL
48 Ext.applyIf(displayConfig.bind, {
49 hidden: '{editable}',
50 disabled: '{editable}',
51 value: '{value}',
52 });
53 Ext.applyIf(editConfig.bind, {
54 hidden: '{!editable}',
55 disabled: '{!editable}',
56 value: '{value}',
57 });
58
a46c2eb1
TL
59 // avoid glitch, start off correct even before viewmodel fixes it
60 editConfig.disabled = editConfig.hidden = !me.editable;
61 displayConfig.disabled = displayConfig.hidden = !!me.editable;
62
63 editConfig.name = displayConfig.name = me.name;
64
65 Ext.apply(me, {
66 items: [
a46c2eb1 67 editConfig,
a307714b 68 displayConfig,
a46c2eb1
TL
69 ],
70 });
71
72 me.callParent();
73
74 me.getViewModel().set('editable', me.editable);
75 },
76
77});