/* 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 { Button } from "../../components/Button/Button"; import ConditionalWrapper from "../../components/ConditionalWrapper/ConditionalWrapper"; import React from "react"; import { RichText } from "../../components/RichText/RichText"; import { safeURI } from "../../template-utils"; import { SnippetBase } from "../../components/SnippetBase/SnippetBase"; const DEFAULT_ICON_PATH = "chrome://branding/content/icon64.png"; // Alt text placeholder in case the prop from the server isn't available const ICON_ALT_TEXT = ""; export class SimpleSnippet extends React.PureComponent { constructor(props) { super(props); this.onButtonClick = this.onButtonClick.bind(this); } onButtonClick() { if (this.props.provider !== "preview") { this.props.sendUserActionTelemetry({ event: "CLICK_BUTTON", id: this.props.UISurface, }); } const { button_url, button_entrypoint_value, button_entrypoint_name, } = this.props.content; // If button_url is defined handle it as OPEN_URL action const type = this.props.content.button_action || (button_url && "OPEN_URL"); // Assign the snippet referral for the action const entrypoint = button_entrypoint_name ? new URLSearchParams([ [button_entrypoint_name, button_entrypoint_value], ]).toString() : button_entrypoint_value; this.props.onAction({ type, data: { args: this.props.content.button_action_args || button_url, ...(entrypoint && { entrypoint }), }, }); if (!this.props.content.do_not_autoblock) { this.props.onBlock(); } } _shouldRenderButton() { return ( this.props.content.button_action || this.props.onButtonClick || this.props.content.button_url ); } renderTitle() { const { title } = this.props.content; return title ? (
{this.renderText()}
{this.props.extraContent}