views-admin.js 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631
  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.viewsUi = {};
  9. Drupal.behaviors.viewsUiEditView = {
  10. attach: function attach() {
  11. $('[data-drupal-selector="edit-query-options-disable-sql-rewrite"]').on('click', function () {
  12. $('.sql-rewrite-warning').toggleClass('js-hide');
  13. });
  14. }
  15. };
  16. Drupal.behaviors.viewsUiAddView = {
  17. attach: function attach(context) {
  18. var $context = $(context);
  19. var exclude = new RegExp('[^a-z0-9\\-]+', 'g');
  20. var replace = '-';
  21. var suffix = void 0;
  22. var $fields = $context.find('[id^="edit-page-title"], [id^="edit-block-title"], [id^="edit-page-link-properties-title"]');
  23. if ($fields.length) {
  24. if (!this.fieldsFiller) {
  25. this.fieldsFiller = new Drupal.viewsUi.FormFieldFiller($fields);
  26. } else {
  27. this.fieldsFiller.rebind($fields);
  28. }
  29. }
  30. var $pathField = $context.find('[id^="edit-page-path"]');
  31. if ($pathField.length) {
  32. if (!this.pathFiller) {
  33. this.pathFiller = new Drupal.viewsUi.FormFieldFiller($pathField, exclude, replace);
  34. } else {
  35. this.pathFiller.rebind($pathField);
  36. }
  37. }
  38. var $feedField = $context.find('[id^="edit-page-feed-properties-path"]');
  39. if ($feedField.length) {
  40. if (!this.feedFiller) {
  41. suffix = '.xml';
  42. this.feedFiller = new Drupal.viewsUi.FormFieldFiller($feedField, exclude, replace, suffix);
  43. } else {
  44. this.feedFiller.rebind($feedField);
  45. }
  46. }
  47. }
  48. };
  49. Drupal.viewsUi.FormFieldFiller = function ($target, exclude, replace, suffix) {
  50. this.source = $('#edit-label');
  51. this.target = $target;
  52. this.exclude = exclude || false;
  53. this.replace = replace || '';
  54. this.suffix = suffix || '';
  55. var self = this;
  56. this.populate = function () {
  57. return self._populate.call(self);
  58. };
  59. this.unbind = function () {
  60. return self._unbind.call(self);
  61. };
  62. this.bind();
  63. };
  64. $.extend(Drupal.viewsUi.FormFieldFiller.prototype, {
  65. bind: function bind() {
  66. this.unbind();
  67. this.source.on('keyup.viewsUi change.viewsUi', this.populate);
  68. this.target.on('focus.viewsUi', this.unbind);
  69. },
  70. getTransliterated: function getTransliterated() {
  71. var from = this.source.val();
  72. if (this.exclude) {
  73. from = from.toLowerCase().replace(this.exclude, this.replace);
  74. }
  75. return from;
  76. },
  77. _populate: function _populate() {
  78. var transliterated = this.getTransliterated();
  79. var suffix = this.suffix;
  80. this.target.each(function (i) {
  81. var maxlength = $(this).attr('maxlength') - suffix.length;
  82. $(this).val(transliterated.substr(0, maxlength) + suffix);
  83. });
  84. },
  85. _unbind: function _unbind() {
  86. this.source.off('keyup.viewsUi change.viewsUi', this.populate);
  87. this.target.off('focus.viewsUi', this.unbind);
  88. },
  89. rebind: function rebind($fields) {
  90. this.target = $fields;
  91. this.bind();
  92. }
  93. });
  94. Drupal.behaviors.addItemForm = {
  95. attach: function attach(context) {
  96. var $context = $(context);
  97. var $form = $context;
  98. if (!$context.is('form[id^="views-ui-add-handler-form"]')) {
  99. $form = $context.find('form[id^="views-ui-add-handler-form"]');
  100. }
  101. if ($form.once('views-ui-add-handler-form').length) {
  102. new Drupal.viewsUi.AddItemForm($form);
  103. }
  104. }
  105. };
  106. Drupal.viewsUi.AddItemForm = function ($form) {
  107. this.$form = $form;
  108. this.$form.find('.views-filterable-options :checkbox').on('click', $.proxy(this.handleCheck, this));
  109. this.$selected_div = this.$form.find('.views-selected-options').parent();
  110. this.$selected_div.hide();
  111. this.checkedItems = [];
  112. };
  113. Drupal.viewsUi.AddItemForm.prototype.handleCheck = function (event) {
  114. var $target = $(event.target);
  115. var label = $.trim($target.closest('td').next().html());
  116. if ($target.is(':checked')) {
  117. this.$selected_div.show().css('display', 'block');
  118. this.checkedItems.push(label);
  119. } else {
  120. var position = $.inArray(label, this.checkedItems);
  121. for (var i = 0; i < this.checkedItems.length; i++) {
  122. if (i === position) {
  123. this.checkedItems.splice(i, 1);
  124. i--;
  125. break;
  126. }
  127. }
  128. if (this.checkedItems.length === 0) {
  129. this.$selected_div.hide();
  130. }
  131. }
  132. this.refreshCheckedItems();
  133. };
  134. Drupal.viewsUi.AddItemForm.prototype.refreshCheckedItems = function () {
  135. this.$selected_div.find('.views-selected-options').html(this.checkedItems.join(', ')).trigger('dialogContentResize');
  136. };
  137. Drupal.behaviors.viewsUiRenderAddViewButton = {
  138. attach: function attach(context) {
  139. var $menu = $(context).find('#views-display-menu-tabs').once('views-ui-render-add-view-button');
  140. if (!$menu.length) {
  141. return;
  142. }
  143. var $addDisplayDropdown = $('<li class="add"><a href="#"><span class="icon add"></span>' + Drupal.t('Add') + '</a><ul class="action-list" style="display:none;"></ul></li>');
  144. var $displayButtons = $menu.nextAll('input.add-display').detach();
  145. $displayButtons.appendTo($addDisplayDropdown.find('.action-list')).wrap('<li>').parent().eq(0).addClass('first').end().eq(-1).addClass('last');
  146. $displayButtons.each(function () {
  147. var label = $(this).val();
  148. if (label.substr(0, 4) === 'Add ') {
  149. $(this).val(label.substr(4));
  150. }
  151. });
  152. $addDisplayDropdown.appendTo($menu);
  153. $menu.find('li.add > a').on('click', function (event) {
  154. event.preventDefault();
  155. var $trigger = $(this);
  156. Drupal.behaviors.viewsUiRenderAddViewButton.toggleMenu($trigger);
  157. });
  158. $('li.add', $menu).on('mouseleave', function (event) {
  159. var $this = $(this);
  160. var $trigger = $this.children('a[href="#"]');
  161. if ($this.children('.action-list').is(':visible')) {
  162. Drupal.behaviors.viewsUiRenderAddViewButton.toggleMenu($trigger);
  163. }
  164. });
  165. }
  166. };
  167. Drupal.behaviors.viewsUiRenderAddViewButton.toggleMenu = function ($trigger) {
  168. $trigger.parent().toggleClass('open');
  169. $trigger.next().slideToggle('fast');
  170. };
  171. Drupal.behaviors.viewsUiSearchOptions = {
  172. attach: function attach(context) {
  173. var $context = $(context);
  174. var $form = $context;
  175. if (!$context.is('form[id^="views-ui-add-handler-form"]')) {
  176. $form = $context.find('form[id^="views-ui-add-handler-form"]');
  177. }
  178. if ($form.once('views-ui-filter-options').length) {
  179. new Drupal.viewsUi.OptionsSearch($form);
  180. }
  181. }
  182. };
  183. Drupal.viewsUi.OptionsSearch = function ($form) {
  184. this.$form = $form;
  185. this.$form.on('click', 'td.title', function (event) {
  186. var $target = $(event.currentTarget);
  187. $target.closest('tr').find('input').trigger('click');
  188. });
  189. var searchBoxSelector = '[data-drupal-selector="edit-override-controls-options-search"]';
  190. var controlGroupSelector = '[data-drupal-selector="edit-override-controls-group"]';
  191. this.$form.on('formUpdated', searchBoxSelector + ',' + controlGroupSelector, $.proxy(this.handleFilter, this));
  192. this.$searchBox = this.$form.find(searchBoxSelector);
  193. this.$controlGroup = this.$form.find(controlGroupSelector);
  194. this.options = this.getOptions(this.$form.find('.filterable-option'));
  195. this.$searchBox.on('keypress', function (event) {
  196. if (event.which === 13) {
  197. event.preventDefault();
  198. }
  199. });
  200. };
  201. $.extend(Drupal.viewsUi.OptionsSearch.prototype, {
  202. getOptions: function getOptions($allOptions) {
  203. var $title = void 0;
  204. var $description = void 0;
  205. var $option = void 0;
  206. var options = [];
  207. var length = $allOptions.length;
  208. for (var i = 0; i < length; i++) {
  209. $option = $($allOptions[i]);
  210. $title = $option.find('.title');
  211. $description = $option.find('.description');
  212. options[i] = {
  213. searchText: $title.text().toLowerCase() + ' ' + $description.text().toLowerCase(),
  214. $div: $option
  215. };
  216. }
  217. return options;
  218. },
  219. handleFilter: function handleFilter(event) {
  220. var search = this.$searchBox.val().toLowerCase();
  221. var words = search.split(' ');
  222. var group = this.$controlGroup.val();
  223. this.options.forEach(function (option) {
  224. function hasWord(word) {
  225. return option.searchText.indexOf(word) !== -1;
  226. }
  227. var found = true;
  228. if (search) {
  229. found = words.every(hasWord);
  230. }
  231. if (found && group !== 'all') {
  232. found = option.$div.hasClass(group);
  233. }
  234. option.$div.toggle(found);
  235. });
  236. $(event.target).trigger('dialogContentResize');
  237. }
  238. });
  239. Drupal.behaviors.viewsUiPreview = {
  240. attach: function attach(context) {
  241. var $contextualFiltersBucket = $(context).find('.views-display-column .views-ui-display-tab-bucket.argument');
  242. if ($contextualFiltersBucket.length === 0) {
  243. return;
  244. }
  245. var $contextualFilters = $contextualFiltersBucket.find('.views-display-setting a');
  246. if ($contextualFilters.length) {
  247. $('#preview-args').parent().show();
  248. } else {
  249. $('#preview-args').parent().hide();
  250. }
  251. if ($('#edit-displays-live-preview').once('edit-displays-live-preview').is(':checked')) {
  252. $('#preview-submit').once('edit-displays-live-preview').trigger('click');
  253. }
  254. }
  255. };
  256. Drupal.behaviors.viewsUiRearrangeFilter = {
  257. attach: function attach(context) {
  258. if (typeof Drupal.tableDrag === 'undefined' || typeof Drupal.tableDrag['views-rearrange-filters'] === 'undefined') {
  259. return;
  260. }
  261. var $context = $(context);
  262. var $table = $context.find('#views-rearrange-filters').once('views-rearrange-filters');
  263. var $operator = $context.find('.js-form-item-filter-groups-operator').once('views-rearrange-filters');
  264. if ($table.length) {
  265. new Drupal.viewsUi.RearrangeFilterHandler($table, $operator);
  266. }
  267. }
  268. };
  269. Drupal.viewsUi.RearrangeFilterHandler = function ($table, $operator) {
  270. this.table = $table;
  271. this.operator = $operator;
  272. this.hasGroupOperator = this.operator.length > 0;
  273. this.draggableRows = $table.find('.draggable');
  274. this.addGroupButton = $('input#views-add-group');
  275. this.removeGroupButtons = $table.find('input.views-remove-group');
  276. this.insertAddRemoveFilterGroupLinks();
  277. if (this.hasGroupOperator) {
  278. this.dropdowns = this.duplicateGroupsOperator();
  279. this.syncGroupsOperators();
  280. }
  281. this.modifyTableDrag();
  282. this.redrawOperatorLabels();
  283. $table.find('.views-group-title select').once('views-rearrange-filter-handler').on('change.views-rearrange-filter-handler', $.proxy(this, 'redrawOperatorLabels'));
  284. $table.find('a.views-groups-remove-link').once('views-rearrange-filter-handler').on('click.views-rearrange-filter-handler', $.proxy(this, 'updateRowspans')).on('click.views-rearrange-filter-handler', $.proxy(this, 'redrawOperatorLabels'));
  285. };
  286. $.extend(Drupal.viewsUi.RearrangeFilterHandler.prototype, {
  287. insertAddRemoveFilterGroupLinks: function insertAddRemoveFilterGroupLinks() {
  288. $('<ul class="action-links"><li><a id="views-add-group-link" href="#">' + this.addGroupButton.val() + '</a></li></ul>').prependTo(this.table.parent()).once('views-rearrange-filter-handler').find('#views-add-group-link').on('click.views-rearrange-filter-handler', $.proxy(this, 'clickAddGroupButton'));
  289. var length = this.removeGroupButtons.length;
  290. var i = void 0;
  291. for (i = 0; i < length; i++) {
  292. var $removeGroupButton = $(this.removeGroupButtons[i]);
  293. var buttonId = $removeGroupButton.attr('id');
  294. $('<a href="#" class="views-remove-group-link">' + Drupal.t('Remove group') + '</a>').insertBefore($removeGroupButton).once('views-rearrange-filter-handler').on('click.views-rearrange-filter-handler', { buttonId: buttonId }, $.proxy(this, 'clickRemoveGroupButton'));
  295. }
  296. },
  297. clickAddGroupButton: function clickAddGroupButton(event) {
  298. this.addGroupButton.trigger('mousedown');
  299. event.preventDefault();
  300. },
  301. clickRemoveGroupButton: function clickRemoveGroupButton(event) {
  302. this.table.find('#' + event.data.buttonId).trigger('mousedown');
  303. event.preventDefault();
  304. },
  305. duplicateGroupsOperator: function duplicateGroupsOperator() {
  306. var newRow = void 0;
  307. var titleRow = void 0;
  308. var titleRows = $('tr.views-group-title').once('duplicateGroupsOperator');
  309. if (!titleRows.length) {
  310. return this.operator;
  311. }
  312. this.operator.find('label').add('div.description').addClass('visually-hidden');
  313. this.operator.find('select').addClass('form-select');
  314. var dropdowns = this.operator;
  315. titleRow = $('tr#views-group-title-2');
  316. newRow = $('<tr class="filter-group-operator-row"><td colspan="5"></td></tr>');
  317. newRow.find('td').append(this.operator);
  318. newRow.insertBefore(titleRow);
  319. var length = titleRows.length;
  320. for (var i = 2; i < length; i++) {
  321. titleRow = $(titleRows[i]);
  322. var fakeOperator = this.operator.clone();
  323. fakeOperator.attr('id', '');
  324. newRow = $('<tr class="filter-group-operator-row"><td colspan="5"></td></tr>');
  325. newRow.find('td').append(fakeOperator);
  326. newRow.insertBefore(titleRow);
  327. dropdowns.add(fakeOperator);
  328. }
  329. return dropdowns;
  330. },
  331. syncGroupsOperators: function syncGroupsOperators() {
  332. if (this.dropdowns.length < 2) {
  333. return;
  334. }
  335. this.dropdowns.on('change', $.proxy(this, 'operatorChangeHandler'));
  336. },
  337. operatorChangeHandler: function operatorChangeHandler(event) {
  338. var $target = $(event.target);
  339. var operators = this.dropdowns.find('select').not($target);
  340. operators.val($target.val());
  341. },
  342. modifyTableDrag: function modifyTableDrag() {
  343. var tableDrag = Drupal.tableDrag['views-rearrange-filters'];
  344. var filterHandler = this;
  345. tableDrag.row.prototype.onSwap = function () {
  346. if (filterHandler.hasGroupOperator) {
  347. var thisRow = $(this.group);
  348. var previousRow = thisRow.prev('tr');
  349. if (previousRow.length && !previousRow.hasClass('group-message') && !previousRow.hasClass('draggable')) {
  350. var next = thisRow.next();
  351. if (next.is('tr')) {
  352. this.swap('after', next);
  353. }
  354. }
  355. filterHandler.updateRowspans();
  356. }
  357. filterHandler.redrawOperatorLabels();
  358. };
  359. tableDrag.onDrop = function () {
  360. var changeMarker = $(this.oldRowElement).find('.tabledrag-changed');
  361. if (changeMarker.length) {
  362. var operatorLabel = changeMarker.prevAll('.views-operator-label');
  363. if (operatorLabel.length) {
  364. operatorLabel.insertAfter(changeMarker);
  365. }
  366. }
  367. var groupRow = $(this.rowObject.element).prevAll('tr.group-message').get(0);
  368. var groupName = groupRow.className.replace(/([^ ]+[ ]+)*group-([^ ]+)-message([ ]+[^ ]+)*/, '$2');
  369. var groupField = $('select.views-group-select', this.rowObject.element);
  370. if (!groupField.is('.views-group-select-' + groupName)) {
  371. var oldGroupName = groupField.attr('class').replace(/([^ ]+[ ]+)*views-group-select-([^ ]+)([ ]+[^ ]+)*/, '$2');
  372. groupField.removeClass('views-group-select-' + oldGroupName).addClass('views-group-select-' + groupName);
  373. groupField.val(groupName);
  374. }
  375. };
  376. },
  377. redrawOperatorLabels: function redrawOperatorLabels() {
  378. for (var i = 0; i < this.draggableRows.length; i++) {
  379. var $draggableRow = $(this.draggableRows[i]);
  380. var $firstCell = $draggableRow.find('td').eq(0);
  381. if ($firstCell.length) {
  382. var operatorValue = $draggableRow.prevAll('.views-group-title').find('option:selected').html();
  383. var operatorLabel = '<span class="views-operator-label">' + operatorValue + '</span>';
  384. var $nextRow = $draggableRow.nextAll(':visible').eq(0);
  385. var $existingOperatorLabel = $firstCell.find('.views-operator-label');
  386. if ($nextRow.hasClass('draggable')) {
  387. if ($existingOperatorLabel.length) {
  388. $existingOperatorLabel.replaceWith(operatorLabel);
  389. } else {
  390. $firstCell.append(operatorLabel);
  391. }
  392. } else {
  393. $existingOperatorLabel.remove();
  394. }
  395. }
  396. }
  397. },
  398. updateRowspans: function updateRowspans() {
  399. var $row = void 0;
  400. var $currentEmptyRow = void 0;
  401. var draggableCount = void 0;
  402. var $operatorCell = void 0;
  403. var rows = $(this.table).find('tr');
  404. var length = rows.length;
  405. for (var i = 0; i < length; i++) {
  406. $row = $(rows[i]);
  407. if ($row.hasClass('views-group-title')) {
  408. $operatorCell = $row.find('td.group-operator');
  409. draggableCount = 0;
  410. $currentEmptyRow = $row.next('tr');
  411. $currentEmptyRow.removeClass('group-populated').addClass('group-empty');
  412. $operatorCell.attr('rowspan', 2);
  413. } else if ($row.hasClass('draggable') && $row.is(':visible')) {
  414. draggableCount++;
  415. $currentEmptyRow.removeClass('group-empty').addClass('group-populated');
  416. $operatorCell.attr('rowspan', draggableCount + 1);
  417. }
  418. }
  419. }
  420. });
  421. Drupal.behaviors.viewsFilterConfigSelectAll = {
  422. attach: function attach(context) {
  423. var $context = $(context);
  424. var $selectAll = $context.find('.js-form-item-options-value-all').once('filterConfigSelectAll');
  425. var $selectAllCheckbox = $selectAll.find('input[type=checkbox]');
  426. var $checkboxes = $selectAll.closest('.form-checkboxes').find('.js-form-type-checkbox:not(.js-form-item-options-value-all) input[type="checkbox"]');
  427. if ($selectAll.length) {
  428. $selectAll.show();
  429. $selectAllCheckbox.on('click', function () {
  430. $checkboxes.prop('checked', $(this).is(':checked'));
  431. });
  432. $checkboxes.on('click', function () {
  433. if ($(this).is('checked') === false) {
  434. $selectAllCheckbox.prop('checked', false);
  435. }
  436. });
  437. }
  438. }
  439. };
  440. Drupal.behaviors.viewsRemoveIconClass = {
  441. attach: function attach(context) {
  442. $(context).find('.dropbutton').once('dropbutton-icon').find('.icon').removeClass('icon');
  443. }
  444. };
  445. Drupal.behaviors.viewsUiCheckboxify = {
  446. attach: function attach(context, settings) {
  447. var $buttons = $('[data-drupal-selector="edit-options-expose-button-button"], [data-drupal-selector="edit-options-group-button-button"]').once('views-ui-checkboxify');
  448. var length = $buttons.length;
  449. var i = void 0;
  450. for (i = 0; i < length; i++) {
  451. new Drupal.viewsUi.Checkboxifier($buttons[i]);
  452. }
  453. }
  454. };
  455. Drupal.behaviors.viewsUiChangeDefaultWidget = {
  456. attach: function attach(context) {
  457. var $context = $(context);
  458. function changeDefaultWidget(event) {
  459. if ($(event.target).prop('checked')) {
  460. $context.find('input.default-radios').parent().hide();
  461. $context.find('td.any-default-radios-row').parent().hide();
  462. $context.find('input.default-checkboxes').parent().show();
  463. } else {
  464. $context.find('input.default-checkboxes').parent().hide();
  465. $context.find('td.any-default-radios-row').parent().show();
  466. $context.find('input.default-radios').parent().show();
  467. }
  468. }
  469. $context.find('input[name="options[group_info][multiple]"]').on('change', changeDefaultWidget).trigger('change');
  470. }
  471. };
  472. Drupal.viewsUi.Checkboxifier = function (button) {
  473. this.$button = $(button);
  474. this.$parent = this.$button.parent('div.views-expose, div.views-grouped');
  475. this.$input = this.$parent.find('input:checkbox, input:radio');
  476. this.$button.hide();
  477. this.$parent.find('.exposed-description, .grouped-description').hide();
  478. this.$input.on('click', $.proxy(this, 'clickHandler'));
  479. };
  480. Drupal.viewsUi.Checkboxifier.prototype.clickHandler = function (e) {
  481. this.$button.trigger('click').trigger('submit');
  482. };
  483. Drupal.behaviors.viewsUiOverrideSelect = {
  484. attach: function attach(context) {
  485. $(context).find('[data-drupal-selector="edit-override-dropdown"]').once('views-ui-override-button-text').each(function () {
  486. var $context = $(context);
  487. var $submit = $context.find('[id^=edit-submit]');
  488. var oldValue = $submit.val();
  489. $submit.once('views-ui-override-button-text').on('mouseup', function () {
  490. $(this).val(oldValue);
  491. return true;
  492. });
  493. $(this).on('change', function () {
  494. var $this = $(this);
  495. if ($this.val() === 'default') {
  496. $submit.val(Drupal.t('Apply (all displays)'));
  497. } else if ($this.val() === 'default_revert') {
  498. $submit.val(Drupal.t('Revert to default'));
  499. } else {
  500. $submit.val(Drupal.t('Apply (this display)'));
  501. }
  502. var $dialog = $context.closest('.ui-dialog-content');
  503. $dialog.trigger('dialogButtonsChange');
  504. }).trigger('change');
  505. });
  506. }
  507. };
  508. Drupal.behaviors.viewsUiHandlerRemoveLink = {
  509. attach: function attach(context) {
  510. var $context = $(context);
  511. $context.find('a.views-remove-link').once('views').on('click', function (event) {
  512. var id = $(this).attr('id').replace('views-remove-link-', '');
  513. $context.find('#views-row-' + id).hide();
  514. $context.find('#views-removed-' + id).prop('checked', true);
  515. event.preventDefault();
  516. });
  517. $context.find('a.display-remove-link').once('display').on('click', function (event) {
  518. var id = $(this).attr('id').replace('display-remove-link-', '');
  519. $context.find('#display-row-' + id).hide();
  520. $context.find('#display-removed-' + id).prop('checked', true);
  521. event.preventDefault();
  522. });
  523. }
  524. };
  525. })(jQuery, Drupal, drupalSettings);