flipper-ui 0.25.1 → 0.25.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,15 @@
1
+ import React from 'react';
2
+ interface PinInputGridProps {
3
+ pin: Array<number | undefined>;
4
+ setPin: (pin: Array<number | undefined>) => void;
5
+ onPinChanged: (pinEntry: number | undefined, index: number) => void;
6
+ pinLength: number;
7
+ validationResult: boolean | undefined;
8
+ isValidating: boolean;
9
+ size: 'small' | 'large';
10
+ style?: React.CSSProperties;
11
+ inputProps?: React.CSSProperties;
12
+ variant?: 'outlined' | 'standard';
13
+ }
14
+ declare const PinInput: React.FC<PinInputGridProps>;
15
+ export default PinInput;
@@ -0,0 +1,202 @@
1
+ "use strict";
2
+
3
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
4
+
5
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
6
+
7
+ Object.defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+ exports["default"] = void 0;
11
+
12
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
13
+
14
+ var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
15
+
16
+ var _react = _interopRequireWildcard(require("react"));
17
+
18
+ var _TextField = _interopRequireDefault(require("@material-ui/core/TextField"));
19
+
20
+ var _styledComponents = _interopRequireDefault(require("styled-components"));
21
+
22
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
23
+
24
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
25
+
26
+ function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
27
+
28
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
29
+
30
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
31
+
32
+ function _templateObject() {
33
+ var data = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n width: auto;\n justify-content: center;\n"]);
34
+
35
+ _templateObject = function _templateObject() {
36
+ return data;
37
+ };
38
+
39
+ return data;
40
+ }
41
+
42
+ var Container = _styledComponents["default"].div(_templateObject());
43
+
44
+ var removeValuesFromArray = function removeValuesFromArray(valuesArray, value) {
45
+ var valueIndex = valuesArray.findIndex(function (entry) {
46
+ return entry === value;
47
+ });
48
+
49
+ if (valueIndex === -1) {
50
+ return;
51
+ }
52
+
53
+ valuesArray.splice(valueIndex, 1);
54
+ };
55
+
56
+ var PIN_MIN_VALUE = 0;
57
+ var PIN_MAX_VALUE = 9;
58
+ var BACKSPACE_KEY = 'Backspace';
59
+
60
+ var PinInput = function PinInput(_ref) {
61
+ var pinLength = _ref.pinLength,
62
+ pin = _ref.pin,
63
+ setPin = _ref.setPin,
64
+ onPinChanged = _ref.onPinChanged,
65
+ validationResult = _ref.validationResult,
66
+ isValidating = _ref.isValidating,
67
+ size = _ref.size,
68
+ styleProps = _ref.style,
69
+ inputProps = _ref.inputProps,
70
+ variant = _ref.variant;
71
+ var inputRefs = (0, _react.useRef)([]);
72
+
73
+ var changePinFocus = function changePinFocus(pinIndex) {
74
+ var ref = inputRefs.current[pinIndex];
75
+
76
+ if (ref) {
77
+ ref.focus();
78
+ }
79
+ };
80
+
81
+ (0, _react.useEffect)(function () {
82
+ changePinFocus(0);
83
+ }, [isValidating]);
84
+
85
+ var onPaste = function onPaste(event) {
86
+ var pastedValue = event.clipboardData.getData('text/plain');
87
+ var splitValues = pastedValue.split('');
88
+ var intValues = [];
89
+
90
+ var _iterator = _createForOfIteratorHelper(splitValues),
91
+ _step;
92
+
93
+ try {
94
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
95
+ var value = _step.value;
96
+ intValues.push(parseInt(value));
97
+ }
98
+ } catch (err) {
99
+ _iterator.e(err);
100
+ } finally {
101
+ _iterator.f();
102
+ }
103
+
104
+ setPin(intValues);
105
+ changePinFocus(intValues.length - 1);
106
+ };
107
+
108
+ var _onChange = function onChange(event, index) {
109
+ if (event.target.value.length > 1) {
110
+ return;
111
+ }
112
+
113
+ var previousValue = event.target.defaultValue;
114
+ var valuesArray = event.target.value.split('');
115
+ removeValuesFromArray(valuesArray, previousValue);
116
+ var value = valuesArray.pop();
117
+
118
+ if (!value) {
119
+ return;
120
+ }
121
+
122
+ var pinNumber = Number(value.trim());
123
+
124
+ if (isNaN(pinNumber) || value.length === 0) {
125
+ return;
126
+ }
127
+
128
+ if (pinNumber >= PIN_MIN_VALUE && pinNumber <= PIN_MAX_VALUE) {
129
+ onPinChanged(pinNumber, index);
130
+
131
+ if (index < pinLength - 1) {
132
+ changePinFocus(index + 1);
133
+ }
134
+ }
135
+ };
136
+
137
+ var _onKeyDown = function onKeyDown(event, index) {
138
+ var keyboardKeyCode = event.nativeEvent.code;
139
+
140
+ if (keyboardKeyCode !== BACKSPACE_KEY) {
141
+ return;
142
+ }
143
+
144
+ if (pin[index] === undefined) {
145
+ changePinFocus(index - 1);
146
+ } else {
147
+ onPinChanged(undefined, index);
148
+ }
149
+ };
150
+
151
+ var useStyleProps = function useStyleProps() {
152
+ var style = _objectSpread({
153
+ width: size === 'small' ? '40px' : '40px',
154
+ height: size === 'small' ? '30px' : '40px',
155
+ marginInline: size === 'small' ? '5px' : '10px'
156
+ }, styleProps);
157
+
158
+ return style;
159
+ };
160
+
161
+ var useInputProps = function useInputProps() {
162
+ var style = _objectSpread({
163
+ width: size === 'small' ? '40px' : '45px',
164
+ textAlign: 'center',
165
+ fontWeight: 'bold',
166
+ fontSize: size === 'small' ? '16px' : '20px',
167
+ padding: 'auto'
168
+ }, inputProps);
169
+
170
+ return style;
171
+ };
172
+
173
+ return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(Container, null, Array.from({
174
+ length: pinLength
175
+ }, function (_, index) {
176
+ return /*#__PURE__*/_react["default"].createElement(_TextField["default"], {
177
+ disabled: isValidating,
178
+ variant: variant || 'outlined',
179
+ onKeyDown: function onKeyDown(event) {
180
+ return _onKeyDown(event, index);
181
+ },
182
+ onPaste: onPaste,
183
+ color: "primary",
184
+ error: validationResult,
185
+ style: useStyleProps(),
186
+ InputProps: {
187
+ style: useInputProps()
188
+ },
189
+ inputRef: function inputRef(el) {
190
+ inputRefs.current[index] = el;
191
+ },
192
+ key: index,
193
+ onChange: function onChange(event) {
194
+ _onChange(event, index);
195
+ },
196
+ value: pin[index] || ''
197
+ });
198
+ })));
199
+ };
200
+
201
+ var _default = PinInput;
202
+ exports["default"] = _default;
@@ -26,6 +26,8 @@ export interface TextFieldProps extends DefaultProps {
26
26
  rowsMax?: string | number;
27
27
  helperText?: ReactNode;
28
28
  helperIcon?: ReactNode;
29
+ hasClear?: boolean;
30
+ onClear?: () => void;
29
31
  onHelperClick?: () => void;
30
32
  onChange?: (event: ChangeEvent<HTMLInputElement>) => void;
31
33
  onBlur?: (event: FocusEvent<HTMLInputElement>) => void;
@@ -35,8 +37,9 @@ export interface TextFieldProps extends DefaultProps {
35
37
  interface IHelperProps extends Pick<TextFieldProps, 'helperIcon'> {
36
38
  onHelperClick: (event: MouseEvent<HTMLButtonElement>) => void;
37
39
  }
38
- export declare const useStyles: (props?: any) => Record<"input" | "outlinedInput" | "outlinedLabel" | "outlinedMultiline" | "iconOutlined", string>;
39
40
  export declare const TextFieldWrapper: import("styled-components").StyledComponent<"div", any, {}, never>;
41
+ export declare const StaticTextFieldWrapper: import("styled-components").StyledComponent<"div", any, {}, never>;
42
+ export declare const useStyles: (props?: any) => Record<"input" | "outlinedInput" | "outlinedLabel" | "outlinedMultiline" | "iconOutlined", string>;
40
43
  export declare const HelperBox: (props: IHelperProps) => JSX.Element;
41
44
  declare const TextField: FC<TextFieldProps>;
42
45
  export default TextField;
package/core/TextField.js CHANGED
@@ -5,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports["default"] = exports.HelperBox = exports.TextFieldWrapper = exports.useStyles = void 0;
8
+ exports["default"] = exports.HelperBox = exports.useStyles = exports.StaticTextFieldWrapper = exports.TextFieldWrapper = void 0;
9
9
 
10
10
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
11
11
 
@@ -15,15 +15,21 @@ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/h
15
15
 
16
16
  var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
17
17
 
18
+ var _InputAdornment = _interopRequireDefault(require("@material-ui/core/InputAdornment"));
19
+
18
20
  var _TextField = _interopRequireDefault(require("@material-ui/core/TextField"));
19
21
 
22
+ var _IconButton = _interopRequireDefault(require("@material-ui/core/IconButton"));
23
+
20
24
  var _styles = require("@material-ui/core/styles");
21
25
 
22
26
  var _react = _interopRequireDefault(require("react"));
23
27
 
28
+ var _Clear = _interopRequireDefault(require("@material-ui/icons/Clear"));
29
+
24
30
  var _Help = _interopRequireDefault(require("@material-ui/icons/Help"));
25
31
 
26
- var _IconButton = _interopRequireDefault(require("./IconButton"));
32
+ var _IconButton2 = _interopRequireDefault(require("./IconButton"));
27
33
 
28
34
  var _styledComponents = _interopRequireDefault(require("styled-components"));
29
35
 
@@ -31,8 +37,18 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O
31
37
 
32
38
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
33
39
 
40
+ function _templateObject3() {
41
+ var data = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-direction: rows;\n width: 100%;\n align-items: center;\n"]);
42
+
43
+ _templateObject3 = function _templateObject3() {
44
+ return data;
45
+ };
46
+
47
+ return data;
48
+ }
49
+
34
50
  function _templateObject2() {
35
- var data = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-direction: rows;\n width: 100%;\n align-items: center;\n button {\n display: none; \n }\n :hover button {\n display: flex;\n }\n"]);
51
+ var data = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-direction: rows;\n width: 100%;\n align-items: center;\n button {\n display: none;\n }\n :hover button {\n display: flex;\n }\n"]);
36
52
 
37
53
  _templateObject2 = function _templateObject2() {
38
54
  return data;
@@ -51,6 +67,15 @@ function _templateObject() {
51
67
  return data;
52
68
  }
53
69
 
70
+ var Helper = _styledComponents["default"].div(_templateObject());
71
+
72
+ var TextFieldWrapper = _styledComponents["default"].div(_templateObject2());
73
+
74
+ exports.TextFieldWrapper = TextFieldWrapper;
75
+
76
+ var StaticTextFieldWrapper = _styledComponents["default"].div(_templateObject3());
77
+
78
+ exports.StaticTextFieldWrapper = StaticTextFieldWrapper;
54
79
  var useStyles = (0, _styles.makeStyles)({
55
80
  input: {
56
81
  fontSize: '14px',
@@ -75,14 +100,8 @@ var useStyles = (0, _styles.makeStyles)({
75
100
  });
76
101
  exports.useStyles = useStyles;
77
102
 
78
- var Helper = _styledComponents["default"].div(_templateObject());
79
-
80
- var TextFieldWrapper = _styledComponents["default"].div(_templateObject2());
81
-
82
- exports.TextFieldWrapper = TextFieldWrapper;
83
-
84
103
  var HelperBox = function HelperBox(props) {
85
- return /*#__PURE__*/_react["default"].createElement(Helper, null, /*#__PURE__*/_react["default"].createElement(_IconButton["default"], {
104
+ return /*#__PURE__*/_react["default"].createElement(Helper, null, /*#__PURE__*/_react["default"].createElement(_IconButton2["default"], {
86
105
  padding: "6px 2px",
87
106
  onClick: props.onHelperClick
88
107
  }, props.helperIcon || /*#__PURE__*/_react["default"].createElement(_Help["default"], {
@@ -92,6 +111,19 @@ var HelperBox = function HelperBox(props) {
92
111
 
93
112
  exports.HelperBox = HelperBox;
94
113
 
114
+ var renderEndAdornment = function renderEndAdornment(onClear) {
115
+ return /*#__PURE__*/_react["default"].createElement(_InputAdornment["default"], {
116
+ position: "end"
117
+ }, /*#__PURE__*/_react["default"].createElement(_IconButton["default"], {
118
+ onClick: onClear,
119
+ size: "small"
120
+ }, /*#__PURE__*/_react["default"].createElement(_Clear["default"], {
121
+ style: {
122
+ fontSize: '15px'
123
+ }
124
+ })));
125
+ };
126
+
95
127
  var TextField = function TextField(_ref) {
96
128
  var margin = _ref.margin,
97
129
  padding = _ref.padding,
@@ -111,8 +143,22 @@ var TextField = function TextField(_ref) {
111
143
  onHelperClick = _ref.onHelperClick,
112
144
  helperIcon = _ref.helperIcon,
113
145
  fullWidth = _ref.fullWidth,
114
- otherProps = (0, _objectWithoutProperties2["default"])(_ref, ["margin", "padding", "style", "error", "variant", "InputLabelProps", "InputProps", "SelectProps", "autoComplete", "onHelperClick", "helperIcon", "fullWidth"]);
146
+ hasClear = _ref.hasClear,
147
+ onClear = _ref.onClear,
148
+ otherProps = (0, _objectWithoutProperties2["default"])(_ref, ["margin", "padding", "style", "error", "variant", "InputLabelProps", "InputProps", "SelectProps", "autoComplete", "onHelperClick", "helperIcon", "fullWidth", "hasClear", "onClear"]);
149
+ var clearStyle = (0, _styles.makeStyles)({
150
+ iconOutlined: {
151
+ position: 'relative',
152
+ right: '2px',
153
+ marginLeft: '-20px'
154
+ }
155
+ });
156
+ var hasValue = !!otherProps.value;
157
+ var endAdornment = hasValue && hasClear ? {
158
+ endAdornment: renderEndAdornment(onClear)
159
+ } : {};
115
160
  var classes = useStyles();
161
+ var clearClass = clearStyle();
116
162
 
117
163
  var handleClick = function handleClick() {
118
164
  if (onHelperClick) {
@@ -120,7 +166,8 @@ var TextField = function TextField(_ref) {
120
166
  }
121
167
  };
122
168
 
123
- return /*#__PURE__*/_react["default"].createElement(TextFieldWrapper, null, /*#__PURE__*/_react["default"].createElement(_TextField["default"], (0, _extends2["default"])({
169
+ var Wrapper = hasClear ? StaticTextFieldWrapper : TextFieldWrapper;
170
+ return /*#__PURE__*/_react["default"].createElement(Wrapper, null, /*#__PURE__*/_react["default"].createElement(_TextField["default"], (0, _extends2["default"])({
124
171
  fullWidth: fullWidth,
125
172
  autoComplete: autoComplete,
126
173
  error: error,
@@ -140,11 +187,11 @@ var TextField = function TextField(_ref) {
140
187
  multiline: variant === 'outlined' ? classes.outlinedMultiline : ''
141
188
  }
142
189
  }, InputProps),
143
- SelectProps: _objectSpread({
190
+ SelectProps: _objectSpread(_objectSpread({
144
191
  classes: {
145
- iconOutlined: classes.iconOutlined
192
+ iconOutlined: hasClear ? clearClass.iconOutlined : classes.iconOutlined
146
193
  }
147
- }, SelectProps)
194
+ }, endAdornment), SelectProps)
148
195
  }, otherProps)), onHelperClick && /*#__PURE__*/_react["default"].createElement(HelperBox, {
149
196
  helperIcon: helperIcon,
150
197
  onHelperClick: handleClick
package/index.d.ts CHANGED
@@ -57,3 +57,4 @@ export { default as Tooltip } from './core/Tooltip';
57
57
  export { default as Tree } from './core/Tree';
58
58
  export { default as Typography } from './core/Typography';
59
59
  export { default as Zoom } from './core/Zoom';
60
+ export { default as PinInput } from './core/PinInput';
package/index.js CHANGED
@@ -359,6 +359,12 @@ Object.defineProperty(exports, "Zoom", {
359
359
  return _Zoom["default"];
360
360
  }
361
361
  });
362
+ Object.defineProperty(exports, "PinInput", {
363
+ enumerable: true,
364
+ get: function get() {
365
+ return _PinInput["default"];
366
+ }
367
+ });
362
368
 
363
369
  var _Advertise = _interopRequireDefault(require("./core/Advertise"));
364
370
 
@@ -476,4 +482,6 @@ var _Tree = _interopRequireDefault(require("./core/Tree"));
476
482
 
477
483
  var _Typography = _interopRequireDefault(require("./core/Typography"));
478
484
 
479
- var _Zoom = _interopRequireDefault(require("./core/Zoom"));
485
+ var _Zoom = _interopRequireDefault(require("./core/Zoom"));
486
+
487
+ var _PinInput = _interopRequireDefault(require("./core/PinInput"));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "flipper-ui",
3
- "version": "0.25.1",
3
+ "version": "0.25.4",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "homepage": "https://flipper-ui.vercel.app",
@@ -0,0 +1,163 @@
1
+ "use strict";
2
+
3
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
4
+
5
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
6
+
7
+ Object.defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+ exports.Large = exports.Default = exports["default"] = void 0;
11
+
12
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
13
+
14
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
15
+
16
+ var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
17
+
18
+ var _react = _interopRequireWildcard(require("react"));
19
+
20
+ var _PinInput = _interopRequireDefault(require("../core/PinInput"));
21
+
22
+ var _Button = _interopRequireDefault(require("@material-ui/core/Button"));
23
+
24
+ var _styledComponents = _interopRequireDefault(require("styled-components"));
25
+
26
+ function _templateObject2() {
27
+ var data = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n width: auto;\n justify-content: center;\n margin-top: 3rem;\n"]);
28
+
29
+ _templateObject2 = function _templateObject2() {
30
+ return data;
31
+ };
32
+
33
+ return data;
34
+ }
35
+
36
+ function _templateObject() {
37
+ var data = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n width: auto;\n justify-content: center;\n margin-bottom: 2rem;\n"]);
38
+
39
+ _templateObject = function _templateObject() {
40
+ return data;
41
+ };
42
+
43
+ return data;
44
+ }
45
+
46
+ var _default = {
47
+ title: 'PinInput',
48
+ component: _PinInput["default"]
49
+ };
50
+ exports["default"] = _default;
51
+
52
+ var ValidateContainer = _styledComponents["default"].div(_templateObject());
53
+
54
+ var ButtonContainer = _styledComponents["default"].div(_templateObject2());
55
+
56
+ var PIN_LENGTH = 6;
57
+
58
+ var Default = function Default() {
59
+ var _useState = (0, _react.useState)(new Array(PIN_LENGTH)),
60
+ _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
61
+ pin = _useState2[0],
62
+ setPin = _useState2[1];
63
+
64
+ var onPinChanged = function onPinChanged(pinEntry, index) {
65
+ var newPin = (0, _toConsumableArray2["default"])(pin);
66
+ newPin[index] = pinEntry;
67
+ setPin(newPin);
68
+ };
69
+
70
+ var _useState3 = (0, _react.useState)(false),
71
+ _useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
72
+ hasError = _useState4[0],
73
+ setHasError = _useState4[1];
74
+
75
+ var _useState5 = (0, _react.useState)(false),
76
+ _useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
77
+ isValidating = _useState6[0],
78
+ setIsValidating = _useState6[1];
79
+
80
+ var handleValidation = function handleValidation() {
81
+ setIsValidating(true);
82
+
83
+ if (pin.join('') !== '123123') {
84
+ setHasError(true);
85
+ setPin(new Array(PIN_LENGTH));
86
+ } else {
87
+ setHasError(false);
88
+ alert('PIN is correct');
89
+ }
90
+
91
+ setIsValidating(false);
92
+ };
93
+
94
+ return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(ValidateContainer, null, /*#__PURE__*/_react["default"].createElement("span", null, "Valid pin: 123123")), /*#__PURE__*/_react["default"].createElement(_PinInput["default"], {
95
+ pin: pin,
96
+ setPin: setPin,
97
+ onPinChanged: onPinChanged,
98
+ pinLength: PIN_LENGTH,
99
+ validationResult: hasError,
100
+ isValidating: isValidating,
101
+ size: "small",
102
+ variant: "outlined"
103
+ }), /*#__PURE__*/_react["default"].createElement(ButtonContainer, null, /*#__PURE__*/_react["default"].createElement(_Button["default"], {
104
+ onClick: function onClick() {
105
+ handleValidation();
106
+ }
107
+ }, "Validate")));
108
+ };
109
+
110
+ exports.Default = Default;
111
+
112
+ var Large = function Large() {
113
+ var _useState7 = (0, _react.useState)(new Array(PIN_LENGTH)),
114
+ _useState8 = (0, _slicedToArray2["default"])(_useState7, 2),
115
+ pin = _useState8[0],
116
+ setPin = _useState8[1];
117
+
118
+ var onPinChanged = function onPinChanged(pinEntry, index) {
119
+ var newPin = (0, _toConsumableArray2["default"])(pin);
120
+ newPin[index] = pinEntry;
121
+ setPin(newPin);
122
+ };
123
+
124
+ var _useState9 = (0, _react.useState)(false),
125
+ _useState10 = (0, _slicedToArray2["default"])(_useState9, 2),
126
+ hasError = _useState10[0],
127
+ setHasError = _useState10[1];
128
+
129
+ var _useState11 = (0, _react.useState)(false),
130
+ _useState12 = (0, _slicedToArray2["default"])(_useState11, 2),
131
+ isValidating = _useState12[0],
132
+ setIsValidating = _useState12[1];
133
+
134
+ var handleValidation = function handleValidation() {
135
+ setIsValidating(true);
136
+
137
+ if (pin.join('') !== '123123') {
138
+ setPin(new Array(PIN_LENGTH));
139
+ setHasError(true);
140
+ } else {
141
+ setHasError(false);
142
+ alert('PIN is correct');
143
+ }
144
+
145
+ setIsValidating(false);
146
+ };
147
+
148
+ return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(ValidateContainer, null, /*#__PURE__*/_react["default"].createElement("span", null, "Valid pin: 123123")), /*#__PURE__*/_react["default"].createElement(_PinInput["default"], {
149
+ pin: pin,
150
+ setPin: setPin,
151
+ onPinChanged: onPinChanged,
152
+ pinLength: PIN_LENGTH,
153
+ validationResult: hasError,
154
+ isValidating: isValidating,
155
+ size: "large"
156
+ }), /*#__PURE__*/_react["default"].createElement(ButtonContainer, null, /*#__PURE__*/_react["default"].createElement(_Button["default"], {
157
+ onClick: function onClick() {
158
+ handleValidation();
159
+ }
160
+ }, "Validate")));
161
+ };
162
+
163
+ exports.Large = Large;
@@ -1,13 +1,17 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
4
+
3
5
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
6
 
5
7
  Object.defineProperty(exports, "__esModule", {
6
8
  value: true
7
9
  });
8
- exports.withSelect = exports.withHelperButton = exports.withInputAdornment = exports.Default = exports["default"] = void 0;
10
+ exports.withSelectAndClear = exports.withSelect = exports.withHelperButton = exports.withInputAdornment = exports.Default = exports["default"] = void 0;
11
+
12
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
9
13
 
10
- var _react = _interopRequireDefault(require("react"));
14
+ var _react = _interopRequireWildcard(require("react"));
11
15
 
12
16
  var _TextField = _interopRequireDefault(require("../core/TextField"));
13
17
 
@@ -97,4 +101,51 @@ var withSelect = function withSelect() {
97
101
  })));
98
102
  };
99
103
 
100
- exports.withSelect = withSelect;
104
+ exports.withSelect = withSelect;
105
+
106
+ var withSelectAndClear = function withSelectAndClear() {
107
+ var _useState = (0, _react.useState)('fable'),
108
+ _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
109
+ value = _useState2[0],
110
+ setValue = _useState2[1];
111
+
112
+ var onClear = function onClear() {
113
+ setValue('');
114
+ };
115
+
116
+ var handleChange = function handleChange(event) {
117
+ setValue(event.target.value);
118
+ };
119
+
120
+ return /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement(_TextField["default"], {
121
+ select: true,
122
+ value: value,
123
+ hasClear: true,
124
+ onClear: onClear,
125
+ onChange: handleChange
126
+ }, [{
127
+ label: null,
128
+ value: ''
129
+ }, {
130
+ label: 'Elm',
131
+ value: 'elm'
132
+ }, {
133
+ label: 'ReasonML',
134
+ value: 'reasonml'
135
+ }, {
136
+ label: 'Purescript',
137
+ value: 'purescript'
138
+ }, {
139
+ label: 'Fable',
140
+ value: 'fable'
141
+ }].map(function (_ref3) {
142
+ var label = _ref3.label,
143
+ value = _ref3.value;
144
+ return /*#__PURE__*/_react["default"].createElement(_ListItem["default"], {
145
+ key: value,
146
+ value: value
147
+ }, label);
148
+ })));
149
+ };
150
+
151
+ exports.withSelectAndClear = withSelectAndClear;