annotate core/modules/layout_builder/js/layout-builder.es6.js @ 2:5311817fb629

Theme updates
author Chris Cannam
date Tue, 10 Jul 2018 13:19:18 +0000
parents c75dbcec494b
children a9cd425dd02b
rev   line source
Chris@0 1 (($, { ajax, behaviors }) => {
Chris@0 2 behaviors.layoutBuilder = {
Chris@0 3 attach(context) {
Chris@0 4 $(context).find('.layout-builder--layout__region').sortable({
Chris@0 5 items: '> .draggable',
Chris@0 6 connectWith: '.layout-builder--layout__region',
Chris@0 7 placeholder: 'ui-state-drop',
Chris@0 8
Chris@0 9 /**
Chris@0 10 * Updates the layout with the new position of the block.
Chris@0 11 *
Chris@0 12 * @param {jQuery.Event} event
Chris@0 13 * The jQuery Event object.
Chris@0 14 * @param {Object} ui
Chris@0 15 * An object containing information about the item being sorted.
Chris@0 16 */
Chris@0 17 update(event, ui) {
Chris@0 18 // Check if the region from the event and region for the item match.
Chris@0 19 const itemRegion = ui.item.closest('.layout-builder--layout__region');
Chris@0 20 if (event.target === itemRegion[0]) {
Chris@0 21 // Find the destination delta.
Chris@0 22 const deltaTo = ui.item.closest('[data-layout-delta]').data('layout-delta');
Chris@0 23 // If the block didn't leave the original delta use the destination.
Chris@0 24 const deltaFrom = ui.sender ? ui.sender.closest('[data-layout-delta]').data('layout-delta') : deltaTo;
Chris@0 25 ajax({
Chris@0 26 url: [
Chris@0 27 ui.item.closest('[data-layout-update-url]').data('layout-update-url'),
Chris@0 28 deltaFrom,
Chris@0 29 deltaTo,
Chris@0 30 itemRegion.data('region'),
Chris@0 31 ui.item.data('layout-block-uuid'),
Chris@0 32 ui.item.prev('[data-layout-block-uuid]').data('layout-block-uuid'),
Chris@0 33 ]
Chris@0 34 .filter(element => element !== undefined)
Chris@0 35 .join('/'),
Chris@0 36 }).execute();
Chris@0 37 }
Chris@0 38 },
Chris@0 39 });
Chris@0 40 },
Chris@0 41 };
Chris@0 42 })(jQuery, Drupal);