Skip to content
This repository was archived by the owner on Jun 26, 2020. It is now read-only.

Commit 823120b

Browse files
author
Piotr Jasiun
authored
Merge pull request #336 from ckeditor/t/335
Fix: Improved binding of value attribute in InputTextView. Closes #335.
2 parents a3c4ae8 + 2c71df4 commit 823120b

File tree

2 files changed

+19
-13
lines changed

2 files changed

+19
-13
lines changed

src/inputtext/inputtextview.js

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -65,23 +65,12 @@ export default class InputTextView extends View {
6565
],
6666
id: bind.to( 'id' ),
6767
placeholder: bind.to( 'placeholder' ),
68-
readonly: bind.to( 'isReadOnly' )
68+
readonly: bind.to( 'isReadOnly' ),
69+
value: bind.to( 'value' )
6970
}
7071
} );
7172
}
7273

73-
/**
74-
* @inheritDoc
75-
*/
76-
render() {
77-
super.render();
78-
79-
// Note: `value` cannot be an HTML attribute, because it doesn't change HTMLInputElement value once changed.
80-
this.on( 'change:value', ( evt, propertyName, value ) => {
81-
this.element.value = value || '';
82-
} );
83-
}
84-
8574
/**
8675
* Moves the focus to the input and selects the value.
8776
*/

tests/inputtext/inputtextview.js

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,12 @@ describe( 'InputTextView', () => {
3636
view.value = 'baz';
3737

3838
expect( view.element.value ).to.equal( 'baz' );
39+
40+
// To be sure that value can be changed multiple times using inline value attribute.
41+
// There was a related bug in Chrome.
42+
view.value = 'biz';
43+
44+
expect( view.element.value ).to.equal( 'biz' );
3945
} );
4046

4147
it( 'should set to empty string when using `falsy` values', () => {
@@ -45,6 +51,17 @@ describe( 'InputTextView', () => {
4551
expect( view.element.value ).to.equal( '' );
4652
} );
4753
} );
54+
55+
// See ckeditor5-ui/issues/335.
56+
it( 'should set element value when value was defined before view#render', () => {
57+
view = new InputTextView();
58+
59+
view.value = 'baz';
60+
61+
view.render();
62+
63+
expect( view.element.value ).to.equal( 'baz' );
64+
} );
4865
} );
4966

5067
describe( 'id', () => {

0 commit comments

Comments
 (0)