MCPcopy
hub / github.com/orestbida/cookieconsent / createToggleLabel

Function createToggleLabel

src/core/modals/preferencesModal.js:501–612  ·  view source on GitHub ↗

* Generate toggle * @param {string} label block title * @param {string} value category/service * @param {import('../global').Category} sCurrentCategoryObject * @param {boolean} [isService] * @param {string} categoryName

(label, value, sCurrentCategoryObject, isService, categoryName)

Source from the content-addressed store, hash-verified

499 * @param {string} categoryName
500 */
501function createToggleLabel(label, value, sCurrentCategoryObject, isService, categoryName) {
502 const state = globalObj._state;
503 const dom = globalObj._dom;
504
505 /** @type {HTMLLabelElement} */ const toggleLabel = createNode('label');
506 /** @type {HTMLInputElement} */ const toggle = createNode('input');
507 /** @type {HTMLSpanElement} */ const toggleIcon = createNode('span');
508 /** @type {HTMLSpanElement} */ const toggleIconCircle = createNode('span');
509 /** @type {HTMLSpanElement} */ const toggleLabelSpan = createNode('span');
510
511 // each will contain 2 pseudo-elements to generate 'tick' and 'x' icons
512 /** @type {HTMLSpanElement} */ const toggleOnIcon = createNode('span');
513 /** @type {HTMLSpanElement} */ const toggleOffIcon = createNode('span');
514
515 toggleOnIcon.innerHTML = getSvgIcon(1, 3);
516 toggleOffIcon.innerHTML = getSvgIcon(0, 3);
517
518 toggle.type = 'checkbox';
519
520 addClass(toggleLabel, 'section__toggle-wrapper');
521 addClass(toggle, 'section__toggle');
522 addClass(toggleOnIcon, 'toggle__icon-on');
523 addClass(toggleOffIcon, 'toggle__icon-off');
524 addClass(toggleIcon, 'toggle__icon');
525 addClass(toggleIconCircle, 'toggle__icon-circle');
526 addClass(toggleLabelSpan, 'toggle__label');
527
528 setAttribute(toggleIcon, ARIA_HIDDEN, 'true');
529
530 if (isService) {
531 addClass(toggleLabel, 'toggle-service');
532 setAttribute(toggle, SCRIPT_TAG_SELECTOR, categoryName);
533
534 // Save reference to toggles to avoid using document.querySelector later on
535 dom._serviceCheckboxInputs[categoryName][value] = toggle;
536 } else {
537 dom._categoryCheckboxInputs[value] = toggle;
538 }
539
540 if (!isService) {
541 ((value)=> {
542 addEvent(toggle, CLICK_EVENT, () => {
543 const categoryServicesToggles = dom._serviceCheckboxInputs[value];
544 const checked = toggle.checked;
545 state._enabledServices[value] = [];
546
547 /**
548 * Enable/disable all services
549 */
550 for (let serviceName in categoryServicesToggles) {
551 categoryServicesToggles[serviceName].checked = checked;
552 checked && state._enabledServices[value].push(serviceName);
553 }
554 });
555 })(value);
556 } else {
557 ((categoryName) => {
558 addEvent(toggle, 'change', () => {

Callers 1

createPreferencesModalFunction · 0.85

Calls 7

createNodeFunction · 0.90
getSvgIconFunction · 0.90
addClassFunction · 0.90
setAttributeFunction · 0.90
addEventFunction · 0.90
appendChildFunction · 0.90
elContainsFunction · 0.90

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…