You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
103 lines
3.0 KiB
103 lines
3.0 KiB
package react.user;
|
|
|
|
import react.ReactComponent;
|
|
import react.ReactMacro.jsx;
|
|
import Common;
|
|
|
|
typedef CookieConsentBoxProps = {
|
|
redirectUrl:String,
|
|
message:String,
|
|
?phoneRequired:Bool
|
|
}
|
|
|
|
typedef CookieConsentBoxState = {
|
|
email:String,
|
|
password:String,
|
|
error:String
|
|
}
|
|
|
|
/**
|
|
* CookieConsent Box
|
|
* @author fbarbut
|
|
*/
|
|
class CookieConsentBox extends react.ReactComponentOfPropsAndState<CookieConsentBoxProps, CookieConsentBoxState> {
|
|
public function new(props:CookieConsentBoxProps) {
|
|
if (props.redirectUrl == null || props.redirectUrl == "null")
|
|
props.redirectUrl = "/";
|
|
if (props.message == "")
|
|
props.message = null;
|
|
super(props);
|
|
|
|
this.state = {email: "", password: "", error: null};
|
|
}
|
|
|
|
function setError(err:String) {
|
|
this.setState(cast {error: err});
|
|
}
|
|
|
|
override public function render() {
|
|
return jsx('<div onKeyPress=$onKeyPress>
|
|
<$Error error="${state.error}" />
|
|
<$Message message="${props.message}" />
|
|
<form action="" method="post" className="form-horizontal">
|
|
<h4>Personnalisation du paramétrage</h4>
|
|
<p>L\'outil CagettePéi n\'utilise que des cookies nécessaires pour vous aider à naviguer efficacement et à exécuter certaines fonctionnalités. Pas de cookie publicitaire, en provenance de site tiers ou de mesure d\'audience.
|
|
</p>
|
|
<p>
|
|
Seuls les cookies nécessaires sont cruciaux pour les fonctions de base du site Web et celui-ci ne fonctionnera pas comme prévu sans eux. Ces cookies ne stockent aucune donnée personnellement identifiable.
|
|
</p>
|
|
|
|
<p className="text-center">
|
|
<a onClick={deny} className="btn btn-secondary btn-lg" ><span className="glyphicon glyphicon-remove"></span> Tout Refuser</a>
|
|
|
|
<a onClick={submit} className="btn btn-primary btn-lg" ><span className="glyphicon glyphicon-ok"></span> Tout Accepter</a>
|
|
</p>
|
|
</form>
|
|
</div>');
|
|
|
|
}
|
|
|
|
/**
|
|
* @doc https://facebook.github.io/react/docs/forms.html
|
|
*/
|
|
function onChange(e:js.html.Event) {
|
|
e.preventDefault();
|
|
|
|
var name:String = untyped e.target.name;
|
|
var value:String = untyped /*(e.target.value == "") ? null :*/ e.target.value;
|
|
Reflect.setField(state, name, value);
|
|
this.setState(this.state);
|
|
}
|
|
|
|
public function submit(?e:js.html.Event) {
|
|
// lock button
|
|
var el:js.html.Element = null;
|
|
if (e != null) {
|
|
el = cast e.target;
|
|
el.classList.add("disabled");
|
|
}
|
|
// var cookie = js.Browser.document.cookie;
|
|
var newCookie = "rgpd=true; SameSite=Lax";
|
|
js.Browser.document.cookie = newCookie;
|
|
// js.Browser.window.location.href = props.redirectUrl;
|
|
js.Browser.window.location.href = '/';
|
|
}
|
|
|
|
public function deny(?e:js.html.Event) {
|
|
// lock button
|
|
var el:js.html.Element = null;
|
|
if (e != null) {
|
|
el = cast e.target;
|
|
el.classList.add("disabled");
|
|
}
|
|
var newCookie = "rgpd=false; SameSite=Lax";
|
|
js.Browser.document.cookie = newCookie;
|
|
// js.Browser.window.location.href = props.redirectUrl;
|
|
js.Browser.window.location.href = '/';
|
|
}
|
|
|
|
function onKeyPress(e:js.html.KeyboardEvent) {
|
|
if (e.key == "Enter")
|
|
submit();
|
|
}
|
|
}
|