123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185 |
- /**
- * @file
- * Provides theme functions for all of Quick Edit's client-side HTML.
- */
- (function($, Drupal) {
- /**
- * Theme function for a "backstage" for the Quick Edit module.
- *
- * @param {object} settings
- * Settings object used to construct the markup.
- * @param {string} settings.id
- * The id to apply to the backstage.
- *
- * @return {string}
- * The corresponding HTML.
- */
- Drupal.theme.quickeditBackstage = function(settings) {
- let html = '';
- html += `<div id="${settings.id}"></div>`;
- return html;
- };
- /**
- * Theme function for a toolbar container of the Quick Edit module.
- *
- * @param {object} settings
- * Settings object used to construct the markup.
- * @param {string} settings.id
- * the id to apply to the backstage.
- *
- * @return {string}
- * The corresponding HTML.
- */
- Drupal.theme.quickeditEntityToolbar = function(settings) {
- let html = '';
- html += `<div id="${settings.id}" class="quickedit quickedit-toolbar-container clearfix">`;
- html += '<i class="quickedit-toolbar-pointer"></i>';
- html += '<div class="quickedit-toolbar-content">';
- html +=
- '<div class="quickedit-toolbar quickedit-toolbar-entity clearfix icon icon-pencil">';
- html += '<div class="quickedit-toolbar-label"></div>';
- html += '</div>';
- html +=
- '<div class="quickedit-toolbar quickedit-toolbar-field clearfix"></div>';
- html += '</div><div class="quickedit-toolbar-lining"></div></div>';
- return html;
- };
- /**
- * Theme function for a toolbar container of the Quick Edit module.
- *
- * @param {object} settings
- * Settings object used to construct the markup.
- * @param {string} settings.entityLabel
- * The title of the active entity.
- * @param {string} settings.fieldLabel
- * The label of the highlighted or active field.
- *
- * @return {string}
- * The corresponding HTML.
- */
- Drupal.theme.quickeditEntityToolbarLabel = function(settings) {
- // @todo Add XSS regression test coverage in https://www.drupal.org/node/2547437
- return `<span class="field">${Drupal.checkPlain(
- settings.fieldLabel,
- )}</span>${Drupal.checkPlain(settings.entityLabel)}`;
- };
- /**
- * Element defining a containing box for the placement of the entity toolbar.
- *
- * @return {string}
- * The corresponding HTML.
- */
- Drupal.theme.quickeditEntityToolbarFence = function() {
- return '<div id="quickedit-toolbar-fence"></div>';
- };
- /**
- * Theme function for a toolbar container of the Quick Edit module.
- *
- * @param {object} settings
- * Settings object used to construct the markup.
- * @param {string} settings.id
- * The id to apply to the toolbar container.
- *
- * @return {string}
- * The corresponding HTML.
- */
- Drupal.theme.quickeditFieldToolbar = function(settings) {
- return `<div id="${settings.id}"></div>`;
- };
- /**
- * Theme function for a toolbar toolgroup of the Quick Edit module.
- *
- * @param {object} settings
- * Settings object used to construct the markup.
- * @param {string} [settings.id]
- * The id of the toolgroup.
- * @param {string} settings.classes
- * The class of the toolgroup.
- * @param {Array} settings.buttons
- * See {@link Drupal.theme.quickeditButtons}.
- *
- * @return {string}
- * The corresponding HTML.
- */
- Drupal.theme.quickeditToolgroup = function(settings) {
- // Classes.
- const classes = settings.classes || [];
- classes.unshift('quickedit-toolgroup');
- let html = '';
- html += `<div class="${classes.join(' ')}"`;
- if (settings.id) {
- html += ` id="${settings.id}"`;
- }
- html += '>';
- html += Drupal.theme('quickeditButtons', { buttons: settings.buttons });
- html += '</div>';
- return html;
- };
- /**
- * Theme function for buttons of the Quick Edit module.
- *
- * Can be used for the buttons both in the toolbar toolgroups and in the
- * modal.
- *
- * @param {object} settings
- * Settings object used to construct the markup.
- * @param {Array} settings.buttons
- * - String type: the type of the button (defaults to 'button')
- * - Array classes: the classes of the button.
- * - String label: the label of the button.
- *
- * @return {string}
- * The corresponding HTML.
- */
- Drupal.theme.quickeditButtons = function(settings) {
- let html = '';
- for (let i = 0; i < settings.buttons.length; i++) {
- const button = settings.buttons[i];
- if (!button.hasOwnProperty('type')) {
- button.type = 'button';
- }
- // Attributes.
- const attributes = [];
- const attrMap = settings.buttons[i].attributes || {};
- Object.keys(attrMap).forEach(attr => {
- attributes.push(attr + (attrMap[attr] ? `="${attrMap[attr]}"` : ''));
- });
- html += `<button type="${button.type}" class="${
- button.classes
- }" ${attributes.join(' ')}>${button.label}</button>`;
- }
- return html;
- };
- /**
- * Theme function for a form container of the Quick Edit module.
- *
- * @param {object} settings
- * Settings object used to construct the markup.
- * @param {string} settings.id
- * The id to apply to the toolbar container.
- * @param {string} settings.loadingMsg
- * The message to show while loading.
- *
- * @return {string}
- * The corresponding HTML.
- */
- Drupal.theme.quickeditFormContainer = function(settings) {
- let html = '';
- html += `<div id="${settings.id}" class="quickedit-form-container">`;
- html += ' <div class="quickedit-form">';
- html += ' <div class="placeholder">';
- html += settings.loadingMsg;
- html += ' </div>';
- html += ' </div>';
- html += '</div>';
- return html;
- };
- })(jQuery, Drupal);
|