@planningcenter/tapestry-react 2.9.0-rc.2 → 2.9.0-rc.3

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.
@@ -27,10 +27,13 @@ var _utils = require("../utils");
27
27
 
28
28
  var _utils2 = require("./utils");
29
29
 
30
+ var isMobile = typeof window !== 'undefined' ? /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) : false;
31
+
30
32
  var TimeField = function TimeField(_ref) {
31
33
  var ignoredKeys = _ref.ignoredKeys,
32
34
  interval = _ref.interval,
33
- isIOS = _ref.isIOS,
35
+ _ref$isIOS = _ref.isIOS,
36
+ isIOS = _ref$isIOS === void 0 ? false : _ref$isIOS,
34
37
  max = _ref.max,
35
38
  min = _ref.min,
36
39
  onChange = _ref.onChange,
@@ -236,13 +239,18 @@ var TimeField = function TimeField(_ref) {
236
239
  return onChange([hours, minutes]);
237
240
  };
238
241
 
239
- var handleIOSChange = function handleIOSChange(event) {
242
+ var handleMobileChange = function handleMobileChange(event) {
240
243
  var _event$target$value$s = event.target.value.split(':'),
241
244
  hours = _event$target$value$s[0],
242
245
  minutes = _event$target$value$s[1];
243
246
 
244
- setHours(hours);
245
- setMinutes(minutes);
247
+ if (hours || minutes) {
248
+ setHours(hours);
249
+ setMinutes(minutes);
250
+ } else {
251
+ setHours(0);
252
+ setMinutes(0);
253
+ }
246
254
  };
247
255
 
248
256
  (0, _react.useEffect)(function () {
@@ -254,11 +262,11 @@ var TimeField = function TimeField(_ref) {
254
262
 
255
263
  updateTime([hours, minutes]);
256
264
  }, [hours, minutes]);
257
- return isIOS ? /*#__PURE__*/_react["default"].createElement(_Input["default"], (0, _extends2["default"])({}, restProps, {
265
+ return isMobile || isIOS ? /*#__PURE__*/_react["default"].createElement(_Input["default"], (0, _extends2["default"])({}, restProps, {
258
266
  type: "time",
259
267
  autoWidth: hours + ":" + (0, _utils.padNumber)(minutes, 2) + " " + meridiem,
260
268
  value: (0, _utils.padNumber)(hours, 2) + ":" + (0, _utils.padNumber)(minutes, 2),
261
- onChange: handleIOSChange
269
+ onChange: handleMobileChange
262
270
  })) : /*#__PURE__*/_react["default"].createElement(_InputBox["default"], (0, _extends2["default"])({
263
271
  ref: ref,
264
272
  inline: true
@@ -8,6 +8,7 @@ import InputField from '../Input/InputField';
8
8
  import NumberField from '../NumberField';
9
9
  import { noop, padNumber } from '../utils';
10
10
  import { addHoursToTime, addMinutesToTime, addTimeToDate, getTimeFromDate } from './utils';
11
+ var isMobile = typeof window !== 'undefined' ? /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) : false;
11
12
 
12
13
  var _ref2 = /*#__PURE__*/React.createElement(Box, {
13
14
  as: "span",
@@ -19,7 +20,8 @@ var _ref2 = /*#__PURE__*/React.createElement(Box, {
19
20
  var TimeField = function TimeField(_ref) {
20
21
  var ignoredKeys = _ref.ignoredKeys,
21
22
  interval = _ref.interval,
22
- isIOS = _ref.isIOS,
23
+ _ref$isIOS = _ref.isIOS,
24
+ isIOS = _ref$isIOS === void 0 ? false : _ref$isIOS,
23
25
  max = _ref.max,
24
26
  min = _ref.min,
25
27
  onChange = _ref.onChange,
@@ -226,13 +228,18 @@ var TimeField = function TimeField(_ref) {
226
228
  return onChange([hours, minutes]);
227
229
  };
228
230
 
229
- var handleIOSChange = function handleIOSChange(event) {
231
+ var handleMobileChange = function handleMobileChange(event) {
230
232
  var _event$target$value$s = event.target.value.split(':'),
231
233
  hours = _event$target$value$s[0],
232
234
  minutes = _event$target$value$s[1];
233
235
 
234
- setHours(hours);
235
- setMinutes(minutes);
236
+ if (hours || minutes) {
237
+ setHours(hours);
238
+ setMinutes(minutes);
239
+ } else {
240
+ setHours(0);
241
+ setMinutes(0);
242
+ }
236
243
  };
237
244
 
238
245
  useEffect(function () {
@@ -244,11 +251,11 @@ var TimeField = function TimeField(_ref) {
244
251
 
245
252
  updateTime([hours, minutes]);
246
253
  }, [hours, minutes]);
247
- return isIOS ? /*#__PURE__*/React.createElement(Input, _extends({}, restProps, {
254
+ return isMobile || isIOS ? /*#__PURE__*/React.createElement(Input, _extends({}, restProps, {
248
255
  type: "time",
249
256
  autoWidth: hours + ":" + padNumber(minutes, 2) + " " + meridiem,
250
257
  value: padNumber(hours, 2) + ":" + padNumber(minutes, 2),
251
- onChange: handleIOSChange
258
+ onChange: handleMobileChange
252
259
  })) : /*#__PURE__*/React.createElement(InputBox, _extends({
253
260
  ref: ref,
254
261
  inline: true
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@planningcenter/tapestry-react",
3
- "version": "2.9.0-rc.2",
3
+ "version": "2.9.0-rc.3",
4
4
  "description": "A collection of flexible React components to help you build resilient, accessible user interfaces quickly and effectively.",
5
5
  "author": "Front End Systems Engineering <frontend@pco.bz>",
6
6
  "main": "dist/cjs/index.js",
@@ -5,7 +5,7 @@ import Input from '../Input/Input'
5
5
  import InputBox from '../Input/InputBox'
6
6
  import InputField from '../Input/InputField'
7
7
  import NumberField from '../NumberField'
8
- import { isIOS, noop, padNumber, isNumber } from '../utils'
8
+ import { noop, padNumber } from '../utils'
9
9
 
10
10
  import {
11
11
  addHoursToTime,
@@ -49,10 +49,17 @@ type TimeFieldProps = {
49
49
  value: [number, number]
50
50
  }
51
51
 
52
+ const isMobile =
53
+ typeof window !== 'undefined'
54
+ ? /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(
55
+ navigator.userAgent
56
+ )
57
+ : false
58
+
52
59
  const TimeField = ({
53
60
  ignoredKeys,
54
61
  interval,
55
- isIOS,
62
+ isIOS = false,
56
63
  max,
57
64
  min,
58
65
  onChange,
@@ -241,10 +248,16 @@ const TimeField = ({
241
248
  return onChange([hours, minutes])
242
249
  }
243
250
 
244
- const handleIOSChange = (event: any) => {
251
+ const handleMobileChange = (event: any) => {
245
252
  const [hours, minutes] = event.target.value.split(':')
246
- setHours(hours)
247
- setMinutes(minutes)
253
+
254
+ if (hours || minutes) {
255
+ setHours(hours)
256
+ setMinutes(minutes)
257
+ } else {
258
+ setHours(0)
259
+ setMinutes(0)
260
+ }
248
261
  }
249
262
 
250
263
  useEffect(() => {
@@ -256,13 +269,13 @@ const TimeField = ({
256
269
  updateTime([hours, minutes])
257
270
  }, [hours, minutes])
258
271
 
259
- return isIOS ? (
272
+ return isMobile || isIOS ? (
260
273
  <Input
261
274
  {...restProps}
262
275
  type="time"
263
276
  autoWidth={`${hours}:${padNumber(minutes, 2)} ${meridiem}`}
264
277
  value={`${padNumber(hours, 2)}:${padNumber(minutes, 2)}`}
265
- onChange={handleIOSChange}
278
+ onChange={handleMobileChange}
266
279
  />
267
280
  ) : (
268
281
  <InputBox ref={ref} inline {...restProps}>