@atlaskit/global-search
Version:
A cross-product search component (batteries included)
85 lines (75 loc) • 2.61 kB
JavaScript
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);
}