|
| 1 | +const stringToHTML = (str) => { |
| 2 | + var support = function () { |
| 3 | + if (!window.DOMParser) { |
| 4 | + return false; |
| 5 | + } |
| 6 | + var parser = new DOMParser(); |
| 7 | + try { |
| 8 | + parser.parseFromString("x", "text/html"); |
| 9 | + } catch (err) { |
| 10 | + return false; |
| 11 | + } |
| 12 | + return true; |
| 13 | + }; |
| 14 | + |
| 15 | + // If DOMParser is supported, use it |
| 16 | + if (support()) { |
| 17 | + var parser = new DOMParser(); |
| 18 | + var doc = parser.parseFromString(str, "text/html"); |
| 19 | + return doc.body; |
| 20 | + } |
| 21 | + |
| 22 | + // Otherwise, fallback to old-school method |
| 23 | + var dom = document.createElement("div"); |
| 24 | + dom.innerHTML = str; |
| 25 | + return dom; |
| 26 | +}; |
| 27 | + |
1 | 28 | var MousePositionDOM = { |
2 | 29 |
|
3 | 30 | /** |
@@ -546,12 +573,47 @@ var MousePositionDOM = { |
546 | 573 |
|
547 | 574 | var span = document.createElement("span"); |
548 | 575 | span.className = "GPmousePositionSettingsLabel"; |
549 | | - span.innerHTML = "Système de référence"; |
550 | 576 | container.appendChild(span); |
551 | 577 |
|
552 | 578 | return container; |
553 | 579 | }, |
554 | 580 |
|
| 581 | + /** |
| 582 | + * settings accordion |
| 583 | + * @param { [HTMLElement] } htmlContent - array of DOM elements to append |
| 584 | + * |
| 585 | + * @returns {HTMLElement} DOM element |
| 586 | + */ |
| 587 | + _createMousePositionSettingsAccordion : function (htmlContent) { |
| 588 | + var div = stringToHTML( |
| 589 | + ` |
| 590 | + <section class="fr-accordion"> |
| 591 | + <div class="fr-accordion__title GPmousePositionSettingsLabel"> |
| 592 | + <button type="button" class="fr-accordion__btn" aria-expanded="false" aria-controls="accordion-more-settings-1"> |
| 593 | + <span class="GPshowMousePositionAdvancedTools gpf-hidden"></span>Système de référence |
| 594 | + </button> |
| 595 | + </div> |
| 596 | + <div class="fr-collapse GPelementHidden" id="accordion-more-settings-1"> |
| 597 | + </div> |
| 598 | + </section> |
| 599 | + ` |
| 600 | + ); |
| 601 | + htmlContent.map(content => div.getElementsByClassName("fr-collapse")[0].append(content)); |
| 602 | + div.getElementsByTagName("button")[0].addEventListener("click", function (e) { |
| 603 | + var status = (e.target.ariaExpanded === "true"); |
| 604 | + e.target.setAttribute("aria-expanded", !status); |
| 605 | + if (!status) { |
| 606 | + div.getElementsByClassName("fr-collapse")[0].classList.add("fr-collapse--expanded"); |
| 607 | + div.getElementsByClassName("fr-collapse")[0].classList.remove("GPelementHidden"); |
| 608 | + } |
| 609 | + else { |
| 610 | + div.getElementsByClassName("fr-collapse")[0].classList.remove("fr-collapse--expanded"); |
| 611 | + div.getElementsByClassName("fr-collapse")[0].classList.add("GPelementHidden"); |
| 612 | + } |
| 613 | + }); |
| 614 | + return div; |
| 615 | + }, |
| 616 | + |
555 | 617 | /** |
556 | 618 | * @param {Object[]} systems - list of systems |
557 | 619 | * |
|
0 commit comments