/* 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 { Button } from "../../components/Button/Button"; 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 SimpleBelowSearchSnippet extends React.PureComponent { constructor(props) { super(props); this.onButtonClick = this.onButtonClick.bind(this); } renderText() { const { props } = this; return props.content.text ? ( ) : null; } renderTitle() { const { title } = this.props.content; return title ? (

{title}

) : null; } async onButtonClick() { if (this.props.provider !== "preview") { this.props.sendUserActionTelemetry({ event: "CLICK_BUTTON", id: this.props.UISurface, }); } const { button_url } = 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"); await this.props.onAction({ type, data: { args: this.props.content.button_action_args || button_url }, }); 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 ); } renderButton() { const { props } = this; if (!this._shouldRenderButton()) { return null; } return ( ); } render() { const { props } = this; let className = "SimpleBelowSearchSnippet"; let containerName = "below-search-snippet"; if (props.className) { className += ` ${props.className}`; } if (this._shouldRenderButton()) { className += " withButton"; containerName += " withButton"; } return (
{props.content.icon_alt_text {props.content.icon_alt_text
{this.renderTitle()}

{this.renderText()}

{this.props.extraContent}
{
{this.renderButton()}
}
); } }