field_ui.js 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. /**
  2. * DO NOT EDIT THIS FILE.
  3. * See the following change record for more information,
  4. * https://www.drupal.org/node/2815083
  5. * @preserve
  6. **/
  7. (function ($, Drupal, drupalSettings) {
  8. Drupal.behaviors.fieldUIFieldStorageAddForm = {
  9. attach: function attach(context) {
  10. var $form = $(context).find('[data-drupal-selector="field-ui-field-storage-add-form"]').once('field_ui_add');
  11. if ($form.length) {
  12. $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');
  13. var $newFieldType = $form.find('select[name="new_storage_type"]');
  14. var $existingStorageName = $form.find('select[name="existing_storage_name"]');
  15. var $existingStorageLabel = $form.find('input[name="existing_storage_label"]');
  16. $newFieldType.on('change', function () {
  17. if ($(this).val() !== '') {
  18. $existingStorageName.val('').trigger('change');
  19. }
  20. });
  21. $existingStorageName.on('change', function () {
  22. var value = $(this).val();
  23. if (value !== '') {
  24. $newFieldType.val('').trigger('change');
  25. if (typeof drupalSettings.existingFieldLabels[value] !== 'undefined') {
  26. $existingStorageLabel.val(drupalSettings.existingFieldLabels[value]);
  27. }
  28. }
  29. });
  30. }
  31. }
  32. };
  33. Drupal.behaviors.fieldUIDisplayOverview = {
  34. attach: function attach(context, settings) {
  35. $(context).find('table#field-display-overview').once('field-display-overview').each(function () {
  36. Drupal.fieldUIOverview.attach(this, settings.fieldUIRowsData, Drupal.fieldUIDisplayOverview);
  37. });
  38. }
  39. };
  40. Drupal.fieldUIOverview = {
  41. attach: function attach(table, rowsData, rowHandlers) {
  42. var tableDrag = Drupal.tableDrag[table.id];
  43. tableDrag.onDrop = this.onDrop;
  44. tableDrag.row.prototype.onSwap = this.onSwap;
  45. $(table).find('tr.draggable').each(function () {
  46. var row = this;
  47. if (row.id in rowsData) {
  48. var data = rowsData[row.id];
  49. data.tableDrag = tableDrag;
  50. var rowHandler = new rowHandlers[data.rowHandler](row, data);
  51. $(row).data('fieldUIRowHandler', rowHandler);
  52. }
  53. });
  54. },
  55. onChange: function onChange() {
  56. var $trigger = $(this);
  57. var $row = $trigger.closest('tr');
  58. var rowHandler = $row.data('fieldUIRowHandler');
  59. var refreshRows = {};
  60. refreshRows[rowHandler.name] = $trigger.get(0);
  61. var region = rowHandler.getRegion();
  62. if (region !== rowHandler.region) {
  63. $row.find('select.js-field-parent').val('');
  64. $.extend(refreshRows, rowHandler.regionChange(region));
  65. rowHandler.region = region;
  66. }
  67. Drupal.fieldUIOverview.AJAXRefreshRows(refreshRows);
  68. },
  69. onDrop: function onDrop() {
  70. var dragObject = this;
  71. var row = dragObject.rowObject.element;
  72. var $row = $(row);
  73. var rowHandler = $row.data('fieldUIRowHandler');
  74. if (typeof rowHandler !== 'undefined') {
  75. var regionRow = $row.prevAll('tr.region-message').get(0);
  76. var region = regionRow.className.replace(/([^ ]+[ ]+)*region-([^ ]+)-message([ ]+[^ ]+)*/, '$2');
  77. if (region !== rowHandler.region) {
  78. var refreshRows = rowHandler.regionChange(region);
  79. rowHandler.region = region;
  80. Drupal.fieldUIOverview.AJAXRefreshRows(refreshRows);
  81. }
  82. }
  83. },
  84. onSwap: function onSwap(draggedRow) {
  85. var rowObject = this;
  86. $(rowObject.table).find('tr.region-message').each(function () {
  87. var $this = $(this);
  88. if ($this.prev('tr').get(0) === rowObject.group[rowObject.group.length - 1]) {
  89. if (rowObject.method !== 'keyboard' || rowObject.direction === 'down') {
  90. rowObject.swap('after', this);
  91. }
  92. }
  93. if ($this.next('tr').is(':not(.draggable)') || $this.next('tr').length === 0) {
  94. $this.removeClass('region-populated').addClass('region-empty');
  95. } else if ($this.is('.region-empty')) {
  96. $this.removeClass('region-empty').addClass('region-populated');
  97. }
  98. });
  99. },
  100. AJAXRefreshRows: function AJAXRefreshRows(rows) {
  101. var rowNames = [];
  102. var ajaxElements = [];
  103. Object.keys(rows || {}).forEach(function (rowName) {
  104. rowNames.push(rowName);
  105. ajaxElements.push(rows[rowName]);
  106. });
  107. if (rowNames.length) {
  108. $(ajaxElements).after('<div class="ajax-progress ajax-progress-throbber"><div class="throbber">&nbsp;</div></div>');
  109. $('input[name=refresh_rows]').val(rowNames.join(' '));
  110. $('input[data-drupal-selector="edit-refresh"]').trigger('mousedown');
  111. $(ajaxElements).prop('disabled', true);
  112. }
  113. }
  114. };
  115. Drupal.fieldUIDisplayOverview = {};
  116. Drupal.fieldUIDisplayOverview.field = function (row, data) {
  117. this.row = row;
  118. this.name = data.name;
  119. this.region = data.region;
  120. this.tableDrag = data.tableDrag;
  121. this.defaultPlugin = data.defaultPlugin;
  122. this.$pluginSelect = $(row).find('.field-plugin-type');
  123. this.$pluginSelect.on('change', Drupal.fieldUIOverview.onChange);
  124. this.$regionSelect = $(row).find('select.field-region');
  125. this.$regionSelect.on('change', Drupal.fieldUIOverview.onChange);
  126. return this;
  127. };
  128. Drupal.fieldUIDisplayOverview.field.prototype = {
  129. getRegion: function getRegion() {
  130. return this.$regionSelect.val();
  131. },
  132. regionChange: function regionChange(region) {
  133. region = region.replace(/-/g, '_');
  134. this.$regionSelect.val(region);
  135. var value = typeof this.defaultPlugin !== 'undefined' ? this.defaultPlugin : this.$pluginSelect.find('option').val();
  136. if (typeof value !== 'undefined') {
  137. this.$pluginSelect.val(value);
  138. }
  139. var refreshRows = {};
  140. refreshRows[this.name] = this.$pluginSelect.get(0);
  141. return refreshRows;
  142. }
  143. };
  144. })(jQuery, Drupal, drupalSettings);