// Copyright (C) 2016 The Android Open Source Project // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. (function() { 'use strict'; Polymer({ is: 'gr-editable-content', /** * Fired when the save button is pressed. * * @event editable-content-save */ /** * Fired when the cancel button is pressed. * * @event editable-content-cancel */ properties: { content: { notify: true, type: String, }, disabled: { reflectToAttribute: true, type: Boolean, value: false, }, editing: { observer: '_editingChanged', type: Boolean, value: false, }, removeZeroWidthSpace: Boolean, _saveDisabled: { computed: '_computeSaveDisabled(disabled, content, _newContent)', type: Boolean, value: true, }, _newContent: String, }, focusTextarea() { this.$$('iron-autogrow-textarea').textarea.focus(); }, _editingChanged(editing) { if (!editing) { return; } // TODO(wyatta) switch linkify sequence, see issue 5526. this._newContent = this.removeZeroWidthSpace ? this.content.replace(/^R=\u200B/gm, 'R=') : this.content; }, _computeSaveDisabled(disabled, content, newContent) { return disabled || (content === newContent); }, _handleSave(e) { e.preventDefault(); this.fire('editable-content-save', {content: this._newContent}); }, _handleCancel(e) { e.preventDefault(); this.editing = false; this.fire('editable-content-cancel'); }, }); })();