UNPKG

8.32 kBJavaScriptView Raw
1/**
2 * Yes/No dialog.
3 * @constructor ApYesnoDialog
4 */
5
6'use strict';
7
8var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
9
10var _react = require('react');
11
12var _react2 = _interopRequireDefault(_react);
13
14var _classnames = require('classnames');
15
16var _classnames2 = _interopRequireDefault(_classnames);
17
18var _apemanReactTouchable = require('apeman-react-touchable');
19
20var _ap_dialog = require('./ap_dialog');
21
22var _ap_dialog2 = _interopRequireDefault(_ap_dialog);
23
24function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
25
26/** @lends ApYesnoDialog */
27var ApYesnoDialog = _react2.default.createClass({
28 displayName: 'ApYesnoDialog',
29
30 // --------------------
31 // Specs
32 // --------------------
33
34 propTypes: {
35 present: _react.PropTypes.bool.isRequired,
36 /** Handler for tapping YES */
37 onYes: _react.PropTypes.func,
38 /** Handler for tapping NO */
39 onNo: _react.PropTypes.func,
40 /** Dialog title */
41 title: _react.PropTypes.string,
42 /** Text of YES button */
43 yesText: _react.PropTypes.string,
44 /** Text of NO button */
45 noText: _react.PropTypes.string
46 },
47
48 mixins: [],
49
50 statics: {},
51
52 getInitialState: function getInitialState() {
53 return {};
54 },
55 getDefaultProps: function getDefaultProps() {
56 return {
57 present: false,
58 onYes: null,
59 onNo: null,
60 title: null,
61 yesText: 'Yes',
62 noText: 'No'
63 };
64 },
65 render: function render() {
66 var s = this;
67 var props = s.props;
68
69 if (!props.present) {
70 return null;
71 }
72 return _react2.default.createElement(
73 _ap_dialog2.default,
74 _extends({ className: (0, _classnames2.default)('ap-yesno-dialog', props.className),
75 style: Object.assign({}, props.style)
76 }, props),
77 _react2.default.createElement(
78 'div',
79 null,
80 props.children
81 ),
82 _react2.default.createElement(
83 'div',
84 { className: 'ap-yesno-dialog-control' },
85 s._renderYesnoButton(props.noText, s.handleNo),
86 s._renderYesnoButton(props.yesText, s.handleYes)
87 )
88 );
89 },
90
91 // ------------------
92 // Helper
93 // ------------------
94
95 handleYes: function handleYes(e) {
96 var s = this;
97 var props = s.props;
98
99 if (props.onYes) {
100 props.onYes(e);
101 }
102 },
103 handleNo: function handleNo(e) {
104 var s = this;
105 var props = s.props;
106
107 if (props.onNo) {
108 props.onNo(e);
109 }
110 },
111
112 // ------------------
113 // Private
114 // ------------------
115 _renderYesnoButton: function _renderYesnoButton(text, callback) {
116 var s = this;
117 return _react2.default.createElement(
118 'a',
119 { className: 'ap-yesno-dialog-button' },
120 _react2.default.createElement(
121 _apemanReactTouchable.ApTouchable,
122 { onTap: callback },
123 _react2.default.createElement(
124 'span',
125 { className: 'ap-yesno-dialog-button-text' },
126 text
127 )
128 )
129 );
130 }
131});
132
133module.exports = ApYesnoDialog;
134//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwX3llc25vX2RpYWxvZy5qc3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFLQTs7OztBQUVBOzs7O0FBQ0E7Ozs7QUFDQTs7QUFDQTs7Ozs7OztBQUdBLElBQUksZ0JBQWdCLGdCQUFNLFdBQU4sQ0FBa0I7Ozs7Ozs7QUFNcEMsYUFBVztBQUNULGFBQVMsaUJBQU0sSUFBTixDQUFXLFVBQVg7O0FBRVQsV0FBTyxpQkFBTSxJQUFOOztBQUVQLFVBQU0saUJBQU0sSUFBTjs7QUFFTixXQUFPLGlCQUFNLE1BQU47O0FBRVAsYUFBUyxpQkFBTSxNQUFOOztBQUVULFlBQVEsaUJBQU0sTUFBTjtHQVhWOztBQWNBLFVBQVEsRUFBUjs7QUFFQSxXQUFTLEVBQVQ7O0FBRUEsOENBQW1CO0FBQ2pCLFdBQU8sRUFBUCxDQURpQjtHQXhCaUI7QUE0QnBDLDhDQUFtQjtBQUNqQixXQUFPO0FBQ0wsZUFBUyxLQUFUO0FBQ0EsYUFBTyxJQUFQO0FBQ0EsWUFBTSxJQUFOO0FBQ0EsYUFBTyxJQUFQO0FBQ0EsZUFBUyxLQUFUO0FBQ0EsY0FBUSxJQUFSO0tBTkYsQ0FEaUI7R0E1QmlCO0FBdUNwQyw0QkFBVTtBQUNSLFFBQU0sSUFBSSxJQUFKLENBREU7UUFFRixRQUFVLEVBQVYsTUFGRTs7QUFHUixRQUFJLENBQUMsTUFBTSxPQUFOLEVBQWU7QUFDbEIsYUFBTyxJQUFQLENBRGtCO0tBQXBCO0FBR0EsV0FDRTs7aUJBQVUsV0FBWSwwQkFBVyxpQkFBWCxFQUE4QixNQUFNLFNBQU4sQ0FBMUM7QUFDQSxlQUFRLE9BQU8sTUFBUCxDQUFjLEVBQWQsRUFBa0IsTUFBTSxLQUFOLENBQTFCO1NBQ0gsTUFGUDtNQUlFOzs7UUFBTyxNQUFNLFFBQU47T0FKVDtNQUtFOztVQUFLLFdBQVUseUJBQVYsRUFBTDtRQUNJLEVBQUUsa0JBQUYsQ0FBcUIsTUFBTSxNQUFOLEVBQWMsRUFBRSxRQUFGLENBRHZDO1FBRUksRUFBRSxrQkFBRixDQUFxQixNQUFNLE9BQU4sRUFBZSxFQUFFLFNBQUYsQ0FGeEM7T0FMRjtLQURGLENBTlE7R0F2QzBCOzs7Ozs7QUErRHBDLGdDQUFVLEdBQUc7QUFDTCxZQUFJLElBQUosQ0FESztRQUVSLFFBQVMsRUFBVCxNQUZROztBQUdYLFFBQUksTUFBTSxLQUFOLEVBQWE7QUFDZixZQUFNLEtBQU4sQ0FBWSxDQUFaLEVBRGU7S0FBakI7R0FsRWtDO0FBdUVwQyw4QkFBUyxHQUFHO0FBQ0osWUFBSSxJQUFKLENBREk7UUFFUCxRQUFTLEVBQVQsTUFGTzs7QUFHVixRQUFJLE1BQU0sSUFBTixFQUFZO0FBQ2QsWUFBTSxJQUFOLENBQVcsQ0FBWCxFQURjO0tBQWhCO0dBMUVrQzs7Ozs7QUFrRnBDLGtEQUFtQixNQUFNLFVBQVU7QUFDakMsUUFBTSxJQUFJLElBQUosQ0FEMkI7QUFFakMsV0FDRTs7UUFBRyxXQUFVLHdCQUFWLEVBQUg7TUFDRTs7VUFBYSxPQUFRLFFBQVIsRUFBYjtRQUNFOztZQUFNLFdBQVUsNkJBQVYsRUFBTjtVQUFnRCxJQUFoRDtTQURGO09BREY7S0FERixDQUZpQztHQWxGQztDQUFsQixDQUFoQjs7QUErRkosT0FBTyxPQUFQLEdBQWlCLGFBQWpCIiwiZmlsZSI6ImFwX3llc25vX2RpYWxvZy5qcyIsInNvdXJjZVJvb3QiOiIvVXNlcnMvb2t1bmlzaGluaXNoaS9Qcm9qZWN0cy9hcGVtYW4tcHJvamVjdHMvYXBlbWFuLXJlYWN0LWRpYWxvZy9saWIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFllcy9ObyBkaWFsb2cuXG4gKiBAY29uc3RydWN0b3IgQXBZZXNub0RpYWxvZ1xuICovXG5cbid1c2Ugc3RyaWN0J1xuXG5pbXBvcnQgUmVhY3QsIHtQcm9wVHlwZXMgYXMgdHlwZXN9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSAnY2xhc3NuYW1lcydcbmltcG9ydCB7QXBUb3VjaGFibGV9IGZyb20gJ2FwZW1hbi1yZWFjdC10b3VjaGFibGUnXG5pbXBvcnQgQXBEaWFsb2cgZnJvbSAnLi9hcF9kaWFsb2cnXG5cbi8qKiBAbGVuZHMgQXBZZXNub0RpYWxvZyAqL1xubGV0IEFwWWVzbm9EaWFsb2cgPSBSZWFjdC5jcmVhdGVDbGFzcyh7XG5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gU3BlY3NcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICBwcm9wVHlwZXM6IHtcbiAgICBwcmVzZW50OiB0eXBlcy5ib29sLmlzUmVxdWlyZWQsXG4gICAgLyoqIEhhbmRsZXIgZm9yIHRhcHBpbmcgWUVTICovXG4gICAgb25ZZXM6IHR5cGVzLmZ1bmMsXG4gICAgLyoqIEhhbmRsZXIgZm9yIHRhcHBpbmcgTk8gKi9cbiAgICBvbk5vOiB0eXBlcy5mdW5jLFxuICAgIC8qKiBEaWFsb2cgdGl0bGUgKi9cbiAgICB0aXRsZTogdHlwZXMuc3RyaW5nLFxuICAgIC8qKiBUZXh0IG9mIFlFUyBidXR0b24gKi9cbiAgICB5ZXNUZXh0OiB0eXBlcy5zdHJpbmcsXG4gICAgLyoqIFRleHQgb2YgTk8gYnV0dG9uICovXG4gICAgbm9UZXh0OiB0eXBlcy5zdHJpbmdcbiAgfSxcblxuICBtaXhpbnM6IFtdLFxuXG4gIHN0YXRpY3M6IHt9LFxuXG4gIGdldEluaXRpYWxTdGF0ZSAoKSB7XG4gICAgcmV0dXJuIHt9XG4gIH0sXG5cbiAgZ2V0RGVmYXVsdFByb3BzICgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgcHJlc2VudDogZmFsc2UsXG4gICAgICBvblllczogbnVsbCxcbiAgICAgIG9uTm86IG51bGwsXG4gICAgICB0aXRsZTogbnVsbCxcbiAgICAgIHllc1RleHQ6ICdZZXMnLFxuICAgICAgbm9UZXh0OiAnTm8nXG4gICAgfVxuICB9LFxuXG4gIHJlbmRlciAoKSB7XG4gICAgY29uc3QgcyA9IHRoaXNcbiAgICBsZXQgeyBwcm9wcyB9ID0gc1xuICAgIGlmICghcHJvcHMucHJlc2VudCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiAoXG4gICAgICA8QXBEaWFsb2cgY2xhc3NOYW1lPXsgY2xhc3NuYW1lcygnYXAteWVzbm8tZGlhbG9nJywgcHJvcHMuY2xhc3NOYW1lKSB9XG4gICAgICAgICAgICAgICAgc3R5bGU9eyBPYmplY3QuYXNzaWduKHt9LCBwcm9wcy5zdHlsZSkgfVxuICAgICAgICB7IC4uLnByb3BzIH1cbiAgICAgID5cbiAgICAgICAgPGRpdj57IHByb3BzLmNoaWxkcmVuIH08L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhcC15ZXNuby1kaWFsb2ctY29udHJvbFwiPlxuICAgICAgICAgIHsgcy5fcmVuZGVyWWVzbm9CdXR0b24ocHJvcHMubm9UZXh0LCBzLmhhbmRsZU5vKSB9XG4gICAgICAgICAgeyBzLl9yZW5kZXJZZXNub0J1dHRvbihwcm9wcy55ZXNUZXh0LCBzLmhhbmRsZVllcykgfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvQXBEaWFsb2c+XG4gICAgKVxuICB9LFxuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyBIZWxwZXJcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgaGFuZGxlWWVzKGUpIHtcbiAgICBjb25zdCBzID0gdGhpcyxcbiAgICAgIHtwcm9wc30gPSBzO1xuICAgIGlmIChwcm9wcy5vblllcykge1xuICAgICAgcHJvcHMub25ZZXMoZSlcbiAgICB9XG4gIH0sXG5cbiAgaGFuZGxlTm8oZSkge1xuICAgIGNvbnN0IHMgPSB0aGlzLFxuICAgICAge3Byb3BzfSA9IHM7XG4gICAgaWYgKHByb3BzLm9uTm8pIHtcbiAgICAgIHByb3BzLm9uTm8oZSlcbiAgICB9XG4gIH0sXG5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIFByaXZhdGVcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tXG4gIF9yZW5kZXJZZXNub0J1dHRvbih0ZXh0LCBjYWxsYmFjaykge1xuICAgIGNvbnN0IHMgPSB0aGlzXG4gICAgcmV0dXJuIChcbiAgICAgIDxhIGNsYXNzTmFtZT1cImFwLXllc25vLWRpYWxvZy1idXR0b25cIj5cbiAgICAgICAgPEFwVG91Y2hhYmxlIG9uVGFwPXsgY2FsbGJhY2sgfT5cbiAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJhcC15ZXNuby1kaWFsb2ctYnV0dG9uLXRleHRcIj57IHRleHQgfTwvc3Bhbj5cbiAgICAgICAgPC9BcFRvdWNoYWJsZT5cbiAgICAgIDwvYT5cbiAgICApXG4gIH1cblxufSlcblxubW9kdWxlLmV4cG9ydHMgPSBBcFllc25vRGlhbG9nOyJdfQ==
\No newline at end of file