Chris@0
|
1 /**
|
Chris@0
|
2 * DO NOT EDIT THIS FILE.
|
Chris@0
|
3 * See the following change record for more information,
|
Chris@0
|
4 * https://www.drupal.org/node/2815083
|
Chris@0
|
5 * @preserve
|
Chris@0
|
6 **/
|
Chris@0
|
7
|
Chris@0
|
8 (function ($, _, Drupal) {
|
Chris@0
|
9 Drupal.quickedit.editors.plain_text = Drupal.quickedit.EditorView.extend({
|
Chris@0
|
10 $textElement: null,
|
Chris@0
|
11
|
Chris@0
|
12 initialize: function initialize(options) {
|
Chris@0
|
13 Drupal.quickedit.EditorView.prototype.initialize.call(this, options);
|
Chris@0
|
14
|
Chris@0
|
15 var editorModel = this.model;
|
Chris@0
|
16 var fieldModel = this.fieldModel;
|
Chris@0
|
17
|
Chris@0
|
18 var $fieldItems = this.$el.find('.quickedit-field');
|
Chris@0
|
19 var $textElement = $fieldItems.length ? $fieldItems.eq(0) : this.$el;
|
Chris@0
|
20 this.$textElement = $textElement;
|
Chris@0
|
21 editorModel.set('originalValue', $.trim(this.$textElement.text()));
|
Chris@0
|
22
|
Chris@0
|
23 var previousText = editorModel.get('originalValue');
|
Chris@0
|
24 $textElement.on('keyup paste', function (event) {
|
Chris@0
|
25 var currentText = $.trim($textElement.text());
|
Chris@0
|
26 if (previousText !== currentText) {
|
Chris@0
|
27 previousText = currentText;
|
Chris@0
|
28 editorModel.set('currentValue', currentText);
|
Chris@0
|
29 fieldModel.set('state', 'changed');
|
Chris@0
|
30 }
|
Chris@0
|
31 });
|
Chris@0
|
32 },
|
Chris@0
|
33 getEditedElement: function getEditedElement() {
|
Chris@0
|
34 return this.$textElement;
|
Chris@0
|
35 },
|
Chris@0
|
36 stateChange: function stateChange(fieldModel, state, options) {
|
Chris@0
|
37 var from = fieldModel.previous('state');
|
Chris@0
|
38 var to = state;
|
Chris@0
|
39 switch (to) {
|
Chris@0
|
40 case 'inactive':
|
Chris@0
|
41 break;
|
Chris@0
|
42
|
Chris@0
|
43 case 'candidate':
|
Chris@0
|
44 if (from !== 'inactive') {
|
Chris@0
|
45 this.$textElement.removeAttr('contenteditable');
|
Chris@0
|
46 }
|
Chris@0
|
47 if (from === 'invalid') {
|
Chris@0
|
48 this.removeValidationErrors();
|
Chris@0
|
49 }
|
Chris@0
|
50 break;
|
Chris@0
|
51
|
Chris@0
|
52 case 'highlighted':
|
Chris@0
|
53 break;
|
Chris@0
|
54
|
Chris@0
|
55 case 'activating':
|
Chris@0
|
56 _.defer(function () {
|
Chris@0
|
57 fieldModel.set('state', 'active');
|
Chris@0
|
58 });
|
Chris@0
|
59 break;
|
Chris@0
|
60
|
Chris@0
|
61 case 'active':
|
Chris@0
|
62 this.$textElement.attr('contenteditable', 'true');
|
Chris@0
|
63 break;
|
Chris@0
|
64
|
Chris@0
|
65 case 'changed':
|
Chris@0
|
66 break;
|
Chris@0
|
67
|
Chris@0
|
68 case 'saving':
|
Chris@0
|
69 if (from === 'invalid') {
|
Chris@0
|
70 this.removeValidationErrors();
|
Chris@0
|
71 }
|
Chris@0
|
72 this.save(options);
|
Chris@0
|
73 break;
|
Chris@0
|
74
|
Chris@0
|
75 case 'saved':
|
Chris@0
|
76 break;
|
Chris@0
|
77
|
Chris@0
|
78 case 'invalid':
|
Chris@0
|
79 this.showValidationErrors();
|
Chris@0
|
80 break;
|
Chris@0
|
81 }
|
Chris@0
|
82 },
|
Chris@0
|
83 getQuickEditUISettings: function getQuickEditUISettings() {
|
Chris@0
|
84 return { padding: true, unifiedToolbar: false, fullWidthToolbar: false, popup: false };
|
Chris@0
|
85 },
|
Chris@0
|
86 revert: function revert() {
|
Chris@0
|
87 this.$textElement.html(this.model.get('originalValue'));
|
Chris@0
|
88 }
|
Chris@0
|
89 });
|
Chris@0
|
90 })(jQuery, _, Drupal);;
|