flipper-ui 0.25.1 → 0.25.2

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.
@@ -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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "flipper-ui",
3
- "version": "0.25.1",
3
+ "version": "0.25.2",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "homepage": "https://flipper-ui.vercel.app",
@@ -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;