8686/************************************************************************/
8787/******/ ({
8888
89- /***/ "./demo/demo-functional .jsx":
90- /*!********************************** !*\
91- !*** ./demo/demo-functional .jsx ***!
92- \********************************** /
89+ /***/ "./demo/demo-class .jsx":
90+ /*!*****************************!*\
91+ !*** ./demo/demo-class .jsx ***!
92+ \*****************************/
9393/*! exports provided: default */
9494/***/ (function(module, __webpack_exports__, __webpack_require__) {
9595
@@ -104,109 +104,124 @@ __webpack_require__.r(__webpack_exports__);
104104
105105
106106
107- var Demo = () => {
108- var [tokenize, setTokenizeFunc] = react__WEBPACK_IMPORTED_MODULE_1___default.a.useState();
109- var [cardType, setCardType] = react__WEBPACK_IMPORTED_MODULE_1___default.a.useState('');
110- var [error, setError] = react__WEBPACK_IMPORTED_MODULE_1___default.a.useState(null);
111- var [token, setToken] = react__WEBPACK_IMPORTED_MODULE_1___default.a.useState(null);
112- var [focusedFieldName, setFocusedField] = react__WEBPACK_IMPORTED_MODULE_1___default.a.useState('');
113- var numberField = react__WEBPACK_IMPORTED_MODULE_1___default.a.useRef();
114- var cvvField = react__WEBPACK_IMPORTED_MODULE_1___default.a.useRef();
115- console.log({
116- focusedFieldName
117- });
118-
119- var onAuthorizationSuccess = () => {
120- numberField.current.focus();
121- };
122-
123- var onDataCollectorInstanceReady = collector => {// DO SOMETHING with Braintree collector as needed
124- };
125-
126- var handleError = error => {
127- setError(error.message || String(error));
128- };
107+ class Demo extends react__WEBPACK_IMPORTED_MODULE_1___default.a.PureComponent {
108+ constructor(props) {
109+ super(props);
110+ this.state = {};
111+ this.state = {
112+ numberFocused: false
113+ };
114+ this.numberField = react__WEBPACK_IMPORTED_MODULE_1___default.a.createRef();
115+ this.braintree = react__WEBPACK_IMPORTED_MODULE_1___default.a.createRef();
116+ ['onError', 'getToken', 'onCardTypeChange', 'onAuthorizationSuccess'].forEach(prop => this[prop] = this[prop].bind(this));
117+ }
129118
130- var onFieldBlur = (field, event) => setFocusedField('');
119+ onError(error) {
120+ this.setState({
121+ error: error.message || String(error)
122+ });
123+ }
131124
132- var onFieldFocus = (field, event) => setFocusedField(event.emittedBy);
125+ getToken() {
126+ this.tokenize().then(token => this.setState({
127+ token,
128+ error: null
129+ })).catch(error => this.onError(error));
130+ }
133131
134- var onCardTypeChange = (_ref) => {
132+ onCardTypeChange(_ref) {
135133 var {
136134 cards
137135 } = _ref;
138136
139137 if (1 === cards.length) {
140138 var [card] = cards;
141- setCardType(card.type);
139+ this.setState({
140+ card: card.type
141+ });
142142
143143 if (card.code && card.code.name) {
144- cvvField.current .setPlaceholder(card.code.name);
144+ this.cvvField .setPlaceholder(card.code.name);
145145 } else {
146- cvvField.current .setPlaceholder('CVV');
146+ this.cvvField .setPlaceholder('CVV');
147147 }
148148 } else {
149- setCardType('');
150- cvvField.current.setPlaceholder('CVV');
149+ this.setState({
150+ card: ''
151+ });
152+ this.cvvField.setPlaceholder('CVV');
151153 }
152- };
154+ }
153155
154- var getToken = () => {
155- tokenize().then(setToken).catch(handleError);
156- };
156+ componentDidMount() {
157+ this.setState({
158+ authorization: 'sandbox_g42y39zw_348pk9cgf3bgyw2b'
159+ });
160+ }
157161
158- var renderResult = (title, obj) => {
162+ renderResult(title, obj) {
159163 if (!obj) {
160164 return null;
161165 }
162166
163167 return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement("div", null, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement("b", null, title, ":"), react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement("pre", null, JSON.stringify(obj, null, 4)));
164- };
168+ }
165169
166- return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement("div", null, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_src_index__WEBPACK_IMPORTED_MODULE_2__["Braintree"], {
167- className: "demo",
168- authorization: "sandbox_g42y39zw_348pk9cgf3bgyw2b",
169- onAuthorizationSuccess: onAuthorizationSuccess,
170- onDataCollectorInstanceReady: onDataCollectorInstanceReady,
171- onError: handleError,
172- onCardTypeChange: onCardTypeChange,
173- getTokenRef: ref => setTokenizeFunc(() => ref),
174- styles: {
175- 'input': {
176- 'font-size': 'inherit'
177- },
178- ':focus': {
179- 'color': 'blue'
180- }
181- }
182- }, renderResult('Error', error), renderResult('Token', token), react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement("div", null, "Number:", react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_src_index__WEBPACK_IMPORTED_MODULE_2__["HostedField"], {
183- type: "number",
184- className: focusedFieldName == 'number' ? 'focused' : '',
185- onBlur: onFieldBlur,
186- onFocus: onFieldFocus,
187- prefill: "4111 1111 1111 1111",
188- ref: numberField
189- }), react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement("p", null, "Card type: ", cardType), "Date:", react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_src_index__WEBPACK_IMPORTED_MODULE_2__["HostedField"], {
190- type: "expirationDate",
191- onBlur: onFieldBlur,
192- onFocus: onFieldFocus,
193- className: focusedFieldName == 'expirationDate' ? 'focused' : ''
194- }), "Month:", react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_src_index__WEBPACK_IMPORTED_MODULE_2__["HostedField"], {
195- type: "expirationMonth"
196- }), "Year:", react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_src_index__WEBPACK_IMPORTED_MODULE_2__["HostedField"], {
197- type: "expirationYear"
198- }), "CVV:", react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_src_index__WEBPACK_IMPORTED_MODULE_2__["HostedField"], {
199- type: "cvv",
200- placeholder: "CVV",
201- ref: cvvField
202- }), "Zip:", react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_src_index__WEBPACK_IMPORTED_MODULE_2__["HostedField"], {
203- type: "postalCode"
204- }))), react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement("div", {
205- className: "footer"
206- }, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement("button", {
207- onClick: getToken
208- }, "Get nonce token")));
209- };
170+ onAuthorizationSuccess() {
171+ this.numberField.current.focus();
172+ }
173+
174+ render() {
175+ return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement("div", null, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement("h1", null, "Braintree Hosted Fields Demo"), this.renderResult('Error', this.state.error), this.renderResult('Token', this.state.token), react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_src_index__WEBPACK_IMPORTED_MODULE_2__["Braintree"], {
176+ ref: this.braintree,
177+ authorization: this.state.authorization,
178+ onAuthorizationSuccess: this.onAuthorizationSuccess,
179+ onError: this.onError,
180+ getTokenRef: t => this.tokenize = t,
181+ onCardTypeChange: this.onCardTypeChange,
182+ styles: {
183+ input: {
184+ 'font-size': '14px',
185+ 'font-family': 'helvetica, tahoma, calibri, sans-serif',
186+ color: '#7d6b6b'
187+ },
188+ ':focus': {
189+ color: 'black'
190+ }
191+ }
192+ }, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement("div", null, "Number:", react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_src_index__WEBPACK_IMPORTED_MODULE_2__["HostedField"], {
193+ type: "number",
194+ onBlur: () => this.setState({
195+ numberFocused: false
196+ }),
197+ onFocus: () => this.setState({
198+ numberFocused: true
199+ }),
200+ className: this.state.numberFocused ? 'focused' : '',
201+ prefill: "4111 1111 1111 1111",
202+ ref: this.numberField
203+ }), react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement("p", null, "Card type: ", this.state.card), "Date:", react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_src_index__WEBPACK_IMPORTED_MODULE_2__["HostedField"], {
204+ type: "expirationDate"
205+ }), "Month:", react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_src_index__WEBPACK_IMPORTED_MODULE_2__["HostedField"], {
206+ type: "expirationMonth"
207+ }), "Year:", react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_src_index__WEBPACK_IMPORTED_MODULE_2__["HostedField"], {
208+ type: "expirationYear"
209+ }), "CVV:", react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_src_index__WEBPACK_IMPORTED_MODULE_2__["HostedField"], {
210+ type: "cvv",
211+ placeholder: "CVV",
212+ ref: cvvField => {
213+ this.cvvField = cvvField;
214+ }
215+ }), "Zip:", react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_src_index__WEBPACK_IMPORTED_MODULE_2__["HostedField"], {
216+ type: "postalCode"
217+ }))), react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement("div", {
218+ className: "footer"
219+ }, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement("button", {
220+ onClick: this.getToken
221+ }, "Get nonce token")));
222+ }
223+
224+ }
210225
211226/* harmony default export */ __webpack_exports__["default"] = (Demo);
212227
@@ -226,13 +241,13 @@ __webpack_require__.r(__webpack_exports__);
226241/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "./node_modules/react/index.js");
227242/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);
228243/* harmony import */ var _src_index__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../src/index */ "./src/index.js");
229- /* harmony import */ var _demo_functional_jsx__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./demo-functional .jsx */ "./demo/demo-functional .jsx");
244+ /* harmony import */ var _demo_class_jsx__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./demo-class .jsx */ "./demo/demo-class .jsx");
230245
231246
232- //import Demo from './demo-class.jsx'
233247
248+ //import Demo from './demo-functional.jsx'
234249
235- Object(react_dom__WEBPACK_IMPORTED_MODULE_0__["render"])(react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_demo_functional_jsx__WEBPACK_IMPORTED_MODULE_3__ ["default"]), document.getElementById('root'));
250+ Object(react_dom__WEBPACK_IMPORTED_MODULE_0__["render"])(react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_demo_class_jsx__WEBPACK_IMPORTED_MODULE_3__ ["default"]), document.getElementById('root'));
236251
237252/***/ }),
238253
@@ -40218,8 +40233,8 @@ class Braintree extends react__WEBPACK_IMPORTED_MODULE_0___default.a.Component {
4021840233 this.api.teardown();
4021940234 }
4022040235
40221- componentWillReceiveProps(nextProps ) {
40222- this.api.setAuthorization(nextProps .authorization, this.props.onAuthorizationSuccess);
40236+ componentDidUpdate( ) {
40237+ this.api.setAuthorization(this.props .authorization, this.props.onAuthorizationSuccess);
4022340238 }
4022440239
4022540240 tokenize(options) {
@@ -40301,7 +40316,7 @@ class BraintreeHostedField extends react__WEBPACK_IMPORTED_MODULE_0___default.a.
4030140316 this.context.braintreeApi.setAttribute(this.props.type, 'placeholder', text);
4030240317 }
4030340318
40304- componentWillMount () {
40319+ componentDidMount () {
4030540320 this.fieldId = this.context.braintreeApi.checkInField(this.props);
4030640321 }
4030740322
0 commit comments