/* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this file, * You can obtain one at http://mozilla.org/MPL/2.0/. */ import React from "react"; import { SimpleSnippet } from "../SimpleSnippet/SimpleSnippet"; class EOYSnippetBase extends React.PureComponent { constructor(props) { super(props); this.handleSubmit = this.handleSubmit.bind(this); } /** * setFrequencyValue - `frequency` form parameter value should be `monthly` * if `monthly-checkbox` is selected or `single` otherwise */ setFrequencyValue() { const frequencyCheckbox = this.refs.form.querySelector("#monthly-checkbox"); if (frequencyCheckbox.checked) { this.refs.form.querySelector("[name='frequency']").value = "monthly"; } } handleSubmit(event) { event.preventDefault(); this.props.sendClick(event); this.setFrequencyValue(); if (!this.props.content.do_not_autoblock) { this.props.onBlock(); } this.refs.form.submit(); } renderDonations() { const fieldNames = ["first", "second", "third", "fourth"]; const numberFormat = new Intl.NumberFormat( this.props.content.locale || navigator.language, { style: "currency", currency: this.props.content.currency_code, minimumFractionDigits: 0, } ); // Default to `second` button const { selected_button } = this.props.content; const btnStyle = { color: this.props.content.button_color, backgroundColor: this.props.content.button_background_color, }; const donationURLParams = []; const paramsStartIndex = this.props.content.donation_form_url.indexOf("?"); for (const entry of new URLSearchParams( this.props.content.donation_form_url.slice(paramsStartIndex) ).entries()) { donationURLParams.push(entry); } return (
{donationURLParams.map(([key, value], idx) => ( ))} {fieldNames.map((field, idx) => { const button_name = `donation_amount_${field}`; const amount = this.props.content[button_name]; return ( ); })}
this.props.content[`donation_amount_${field}`] )} />
); } render() { const textStyle = { color: this.props.content.text_color, backgroundColor: this.props.content.background_color, }; const customElement = ( ); return ( ); } } export const EOYSnippet = props => { const extendedContent = { monthly_checkbox_label_text: "Make my donation monthly", locale: "en-US", currency_code: "usd", selected_button: "donation_amount_second", ...props.content, }; return ( ); };