UNPKG

@atlaskit/global-search

Version:

A cross-product search component (batteries included)

85 lines (75 loc) 2.61 kB
import _extends from "@babel/runtime/helpers/extends"; import _defineProperty from "@babel/runtime/helpers/defineProperty"; import React from 'react'; import FeedbackButton from './FeedbackButton'; import FeedbackCollector, { FeedbackFlag } from '@atlaskit/feedback-collector'; import { FlagGroup } from '@atlaskit/flag'; import { injectFeatures } from '../FeaturesProvider'; const EMBEDDABLE_KEY = '85dc6027-c074-4800-ba54-4ecb844b29f8'; const REQUEST_TYPE_ID = '182'; const FEEDBACK_CONTEXT_CF = 'customfield_10047'; export function withFeedbackButton(WrappedComponent) { class WithFeedbackButton extends React.Component { constructor(...args) { super(...args); _defineProperty(this, "state", { isOpen: false, displayFlag: false }); _defineProperty(this, "open", () => this.setState({ isOpen: true })); _defineProperty(this, "close", () => { this.setState({ isOpen: false }); }); _defineProperty(this, "displayFlag", () => this.setState({ displayFlag: true })); _defineProperty(this, "hideFlag", () => this.setState({ displayFlag: false })); } renderFeedbackButton() { return /*#__PURE__*/React.createElement(FeedbackButton, { onClick: this.open }); } render() { const { isOpen, displayFlag } = this.state; const { name, email, features: { abTest: { experimentId, abTestId } } } = this.props; const feedbackContext = `experimentId: ${experimentId}, abTestId: ${abTestId}`; return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(WrappedComponent, _extends({}, this.props, { inputControls: this.renderFeedbackButton() })), isOpen && /*#__PURE__*/React.createElement(FeedbackCollector, { onClose: this.close, onSubmit: this.displayFlag, email: email, name: name, requestTypeId: REQUEST_TYPE_ID, embeddableKey: EMBEDDABLE_KEY, additionalFields: [{ id: FEEDBACK_CONTEXT_CF, value: feedbackContext }] }), displayFlag && /*#__PURE__*/React.createElement(FlagGroup, { onDismissed: this.hideFlag }, /*#__PURE__*/React.createElement(FeedbackFlag, null))); } } _defineProperty(WithFeedbackButton, "displayName", `WithFeedbackButton(${WrappedComponent.displayName || WrappedComponent.name})`); return injectFeatures(WithFeedbackButton); }