Skip to content

Commit eae0982

Browse files
authored
Merge pull request #425 from IGNF/feat/mouse-position-accordion
ajout accordeon mouse position
2 parents 8b44327 + 8bf8a05 commit eae0982

4 files changed

Lines changed: 79 additions & 3 deletions

File tree

src/packages/CSS/Controls/MousePosition/GPFmousePositionStyle.css

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,3 +116,17 @@ select.GPmousePositionDirection:disabled::-ms-value {
116116
.GPmousePositionEditTool {
117117
background-image: url("img/GPmousePositionEditCoordinates.png");
118118
}
119+
120+
button[aria-expanded="true"] span.GPshowMousePositionAdvancedTools {
121+
-webkit-transform: rotateX(180deg);
122+
transform: rotateX(180deg);
123+
}
124+
125+
.GPshowMousePositionAdvancedTools {
126+
display: inline-block;
127+
width: 28px;
128+
height: 28px;
129+
vertical-align: middle;
130+
background-image: url("img/GPMousePositionTools.png");
131+
background-position: -26px 0;
132+
}
6.81 KB
Loading

src/packages/Controls/MousePosition/MousePosition.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -868,8 +868,8 @@ class MousePosition extends Control {
868868
var settings = this._createMousePositionSettingsElement();
869869
var systems = this._projectionSystemsContainer = this._createMousePositionSettingsSystemsElement(this._projectionSystems);
870870
var units = this._projectionUnitsContainer = this._createMousePositionSettingsUnitsElement(this._projectionUnits[this._currentProjectionType]);
871-
settings.appendChild(systems);
872-
settings.appendChild(units);
871+
var settingsAccordion = this._createMousePositionSettingsAccordion([systems, units]);
872+
settings.appendChild(settingsAccordion);
873873
mousePositionPanelDiv.appendChild(settings);
874874

875875
container.appendChild(mousePositionPanel);

src/packages/Controls/MousePosition/MousePositionDOM.js

Lines changed: 63 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,30 @@
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+
128
var MousePositionDOM = {
229

330
/**
@@ -546,12 +573,47 @@ var MousePositionDOM = {
546573

547574
var span = document.createElement("span");
548575
span.className = "GPmousePositionSettingsLabel";
549-
span.innerHTML = "Système de référence";
550576
container.appendChild(span);
551577

552578
return container;
553579
},
554580

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+
555617
/**
556618
* @param {Object[]} systems - list of systems
557619
*

0 commit comments

Comments
 (0)