annotate core/modules/field_ui/field_ui.js @ 19:fa3358dc1485 tip

Add ndrum files
author Chris Cannam
date Wed, 28 Aug 2019 13:14:47 +0100
parents 129ea1e6d783
children
rev   line source
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, drupalSettings) {
Chris@0 9 Drupal.behaviors.fieldUIFieldStorageAddForm = {
Chris@0 10 attach: function attach(context) {
Chris@0 11 var $form = $(context).find('[data-drupal-selector="field-ui-field-storage-add-form"]').once('field_ui_add');
Chris@0 12 if ($form.length) {
Chris@0 13 $form.find('.js-form-item-label label,' + '.js-form-item-field-name label,' + '.js-form-item-existing-storage-label label').addClass('js-form-required form-required');
Chris@0 14
Chris@0 15 var $newFieldType = $form.find('select[name="new_storage_type"]');
Chris@0 16 var $existingStorageName = $form.find('select[name="existing_storage_name"]');
Chris@0 17 var $existingStorageLabel = $form.find('input[name="existing_storage_label"]');
Chris@0 18
Chris@0 19 $newFieldType.on('change', function () {
Chris@0 20 if ($(this).val() !== '') {
Chris@0 21 $existingStorageName.val('').trigger('change');
Chris@0 22 }
Chris@0 23 });
Chris@0 24
Chris@0 25 $existingStorageName.on('change', function () {
Chris@0 26 var value = $(this).val();
Chris@0 27 if (value !== '') {
Chris@0 28 $newFieldType.val('').trigger('change');
Chris@0 29
Chris@0 30 if (typeof drupalSettings.existingFieldLabels[value] !== 'undefined') {
Chris@0 31 $existingStorageLabel.val(drupalSettings.existingFieldLabels[value]);
Chris@0 32 }
Chris@0 33 }
Chris@0 34 });
Chris@0 35 }
Chris@0 36 }
Chris@0 37 };
Chris@0 38
Chris@0 39 Drupal.behaviors.fieldUIDisplayOverview = {
Chris@0 40 attach: function attach(context, settings) {
Chris@0 41 $(context).find('table#field-display-overview').once('field-display-overview').each(function () {
Chris@0 42 Drupal.fieldUIOverview.attach(this, settings.fieldUIRowsData, Drupal.fieldUIDisplayOverview);
Chris@0 43 });
Chris@0 44 }
Chris@0 45 };
Chris@0 46
Chris@0 47 Drupal.fieldUIOverview = {
Chris@0 48 attach: function attach(table, rowsData, rowHandlers) {
Chris@0 49 var tableDrag = Drupal.tableDrag[table.id];
Chris@0 50
Chris@0 51 tableDrag.onDrop = this.onDrop;
Chris@0 52 tableDrag.row.prototype.onSwap = this.onSwap;
Chris@0 53
Chris@0 54 $(table).find('tr.draggable').each(function () {
Chris@0 55 var row = this;
Chris@0 56 if (row.id in rowsData) {
Chris@0 57 var data = rowsData[row.id];
Chris@0 58 data.tableDrag = tableDrag;
Chris@0 59
Chris@0 60 var rowHandler = new rowHandlers[data.rowHandler](row, data);
Chris@0 61 $(row).data('fieldUIRowHandler', rowHandler);
Chris@0 62 }
Chris@0 63 });
Chris@0 64 },
Chris@0 65 onChange: function onChange() {
Chris@0 66 var $trigger = $(this);
Chris@0 67 var $row = $trigger.closest('tr');
Chris@0 68 var rowHandler = $row.data('fieldUIRowHandler');
Chris@0 69
Chris@0 70 var refreshRows = {};
Chris@0 71 refreshRows[rowHandler.name] = $trigger.get(0);
Chris@0 72
Chris@0 73 var region = rowHandler.getRegion();
Chris@0 74 if (region !== rowHandler.region) {
Chris@0 75 $row.find('select.js-field-parent').val('');
Chris@0 76
Chris@0 77 $.extend(refreshRows, rowHandler.regionChange(region));
Chris@0 78
Chris@0 79 rowHandler.region = region;
Chris@0 80 }
Chris@0 81
Chris@0 82 Drupal.fieldUIOverview.AJAXRefreshRows(refreshRows);
Chris@0 83 },
Chris@0 84 onDrop: function onDrop() {
Chris@0 85 var dragObject = this;
Chris@0 86 var row = dragObject.rowObject.element;
Chris@0 87 var $row = $(row);
Chris@0 88 var rowHandler = $row.data('fieldUIRowHandler');
Chris@0 89 if (typeof rowHandler !== 'undefined') {
Chris@0 90 var regionRow = $row.prevAll('tr.region-message').get(0);
Chris@0 91 var region = regionRow.className.replace(/([^ ]+[ ]+)*region-([^ ]+)-message([ ]+[^ ]+)*/, '$2');
Chris@0 92
Chris@0 93 if (region !== rowHandler.region) {
Chris@0 94 var refreshRows = rowHandler.regionChange(region);
Chris@0 95
Chris@0 96 rowHandler.region = region;
Chris@0 97
Chris@0 98 Drupal.fieldUIOverview.AJAXRefreshRows(refreshRows);
Chris@0 99 }
Chris@0 100 }
Chris@0 101 },
Chris@0 102 onSwap: function onSwap(draggedRow) {
Chris@0 103 var rowObject = this;
Chris@0 104 $(rowObject.table).find('tr.region-message').each(function () {
Chris@0 105 var $this = $(this);
Chris@0 106
Chris@0 107 if ($this.prev('tr').get(0) === rowObject.group[rowObject.group.length - 1]) {
Chris@0 108 if (rowObject.method !== 'keyboard' || rowObject.direction === 'down') {
Chris@0 109 rowObject.swap('after', this);
Chris@0 110 }
Chris@0 111 }
Chris@0 112
Chris@0 113 if ($this.next('tr').is(':not(.draggable)') || $this.next('tr').length === 0) {
Chris@0 114 $this.removeClass('region-populated').addClass('region-empty');
Chris@0 115 } else if ($this.is('.region-empty')) {
Chris@0 116 $this.removeClass('region-empty').addClass('region-populated');
Chris@0 117 }
Chris@0 118 });
Chris@0 119 },
Chris@0 120 AJAXRefreshRows: function AJAXRefreshRows(rows) {
Chris@0 121 var rowNames = [];
Chris@0 122 var ajaxElements = [];
Chris@14 123 Object.keys(rows || {}).forEach(function (rowName) {
Chris@14 124 rowNames.push(rowName);
Chris@14 125 ajaxElements.push(rows[rowName]);
Chris@14 126 });
Chris@0 127
Chris@0 128 if (rowNames.length) {
Chris@17 129 $(ajaxElements).after(Drupal.theme.ajaxProgressThrobber());
Chris@0 130
Chris@0 131 $('input[name=refresh_rows]').val(rowNames.join(' '));
Chris@0 132 $('input[data-drupal-selector="edit-refresh"]').trigger('mousedown');
Chris@0 133
Chris@0 134 $(ajaxElements).prop('disabled', true);
Chris@0 135 }
Chris@0 136 }
Chris@0 137 };
Chris@0 138
Chris@0 139 Drupal.fieldUIDisplayOverview = {};
Chris@0 140
Chris@0 141 Drupal.fieldUIDisplayOverview.field = function (row, data) {
Chris@0 142 this.row = row;
Chris@0 143 this.name = data.name;
Chris@0 144 this.region = data.region;
Chris@0 145 this.tableDrag = data.tableDrag;
Chris@0 146 this.defaultPlugin = data.defaultPlugin;
Chris@0 147
Chris@0 148 this.$pluginSelect = $(row).find('.field-plugin-type');
Chris@0 149 this.$pluginSelect.on('change', Drupal.fieldUIOverview.onChange);
Chris@0 150
Chris@0 151 this.$regionSelect = $(row).find('select.field-region');
Chris@0 152 this.$regionSelect.on('change', Drupal.fieldUIOverview.onChange);
Chris@0 153
Chris@0 154 return this;
Chris@0 155 };
Chris@0 156
Chris@0 157 Drupal.fieldUIDisplayOverview.field.prototype = {
Chris@0 158 getRegion: function getRegion() {
Chris@0 159 return this.$regionSelect.val();
Chris@0 160 },
Chris@0 161 regionChange: function regionChange(region) {
Chris@0 162 region = region.replace(/-/g, '_');
Chris@0 163
Chris@0 164 this.$regionSelect.val(region);
Chris@0 165
Chris@17 166 if (this.region === 'hidden') {
Chris@17 167 var value = typeof this.defaultPlugin !== 'undefined' ? this.defaultPlugin : this.$pluginSelect.find('option').val();
Chris@0 168
Chris@17 169 if (typeof value !== 'undefined') {
Chris@17 170 this.$pluginSelect.val(value);
Chris@17 171 }
Chris@0 172 }
Chris@0 173
Chris@0 174 var refreshRows = {};
Chris@0 175 refreshRows[this.name] = this.$pluginSelect.get(0);
Chris@0 176
Chris@0 177 return refreshRows;
Chris@0 178 }
Chris@0 179 };
Chris@0 180 })(jQuery, Drupal, drupalSettings);