@popmenu/common-ui 0.98.0 → 0.100.0

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.
package/build/index.js CHANGED
@@ -1172,6 +1172,35 @@ var useStyles$2 = core.makeStyles(function () { return ({
1172
1172
  var FollowerAuthenticationForm = function () {
1173
1173
  var _a = useFollowerAuthenticationDialogContext(), state = _a.state, messages = _a.messages, locationOptions = _a.locationOptions, dispatch = _a.dispatch, loading = _a.loading;
1174
1174
  var classes = useStyles$2();
1175
+ // sign-up form state
1176
+ var formRef = React.useRef(null);
1177
+ var _b = React.useState(false), formValidity = _b[0], setFormValidity = _b[1];
1178
+ var _c = React.useState(), showPhoneErrorText = _c[0], setShowPhoneErrorText = _c[1];
1179
+ var _d = React.useState(), showEmailErrorText = _d[0], setShowEmailErrorText = _d[1];
1180
+ var _e = React.useState(), showLocationErrorText = _e[0], setShowLocationErrorText = _e[1];
1181
+ var _f = React.useState(state.defaultFormValues.phone || ''), signUpPhoneValue = _f[0], setSignUpPhoneValue = _f[1];
1182
+ var _g = React.useState(state.defaultFormValues.email || ''), signUpEmailValue = _g[0], setSignUpEmailValue = _g[1];
1183
+ var checkFieldValidity = function (e) {
1184
+ var _a, _b;
1185
+ var fieldName = e.target.name;
1186
+ var fieldValidity = (_b = (_a = formRef.current) === null || _a === void 0 ? void 0 : _a.elements.namedItem(fieldName)) === null || _b === void 0 ? void 0 : _b.validity.valid;
1187
+ switch (fieldName) {
1188
+ case 'phone':
1189
+ setSignUpPhoneValue(e.target.value);
1190
+ setShowPhoneErrorText(!fieldValidity);
1191
+ break;
1192
+ case 'email':
1193
+ setSignUpEmailValue(e.target.value);
1194
+ setShowEmailErrorText(!fieldValidity);
1195
+ break;
1196
+ case 'location':
1197
+ setShowLocationErrorText(!e.target.value);
1198
+ break;
1199
+ }
1200
+ };
1201
+ React.useEffect(function () {
1202
+ setFormValidity(['phone', 'email', 'location'].every(function (fieldName) { var _a, _b; return (_b = (_a = formRef.current) === null || _a === void 0 ? void 0 : _a.elements.namedItem(fieldName)) === null || _b === void 0 ? void 0 : _b.validity.valid; }));
1203
+ }, [showPhoneErrorText, showEmailErrorText, showLocationErrorText, signUpPhoneValue, signUpEmailValue]);
1175
1204
  var handleSubmit = function (e) {
1176
1205
  e.preventDefault();
1177
1206
  var form = e.target;
@@ -1190,15 +1219,23 @@ var FollowerAuthenticationForm = function () {
1190
1219
  React__default['default'].createElement(core.TextField, { disabled: loading, label: messages.initialInputLabel, key: "identifier-input", id: "identifier-input", name: "identifier" }),
1191
1220
  React__default['default'].createElement(core.Button, { disabled: loading, type: "submit" }, messages.initialCtaButtonLabel)));
1192
1221
  case 'signUp':
1193
- return (React__default['default'].createElement("form", __assign({}, formProps),
1194
- React__default['default'].createElement(core.TextField, { disabled: loading, label: messages.signUpPhoneInputLabel, key: "phone-input", id: "phone-input", name: "phone" }),
1195
- React__default['default'].createElement(core.TextField, { disabled: loading, label: messages.signUpNameInputLabel, key: "name-input", id: "name-input", name: "name" }),
1196
- React__default['default'].createElement(core.TextField, { disabled: loading, label: messages.signUpEmailInputLabel, key: "email-input", id: "email-input", name: "email" }),
1197
- React__default['default'].createElement(core.TextField, { disabled: loading, select: true, label: messages.signUpLocationInputLabel, key: "location-input", id: "location-input", name: "location" }, locationOptions.map(function (locationOption) { return (React__default['default'].createElement(core.MenuItem, { key: locationOption.value, value: locationOption.value }, locationOption.label)); })),
1222
+ return (React__default['default'].createElement("form", __assign({ ref: formRef }, formProps, { onInvalid: function (e) {
1223
+ e.preventDefault();
1224
+ } }),
1225
+ React__default['default'].createElement(core.TextField, { disabled: loading, label: messages.signUpPhoneInputLabel, key: "phone-input", id: "phone-input", name: "phone", onChange: checkFieldValidity, error: showPhoneErrorText, helperText: showPhoneErrorText && messages.signUpPhoneErrorText, inputProps: {
1226
+ pattern: '^[0-9]{10}$',
1227
+ required: signUpEmailValue ? false : true,
1228
+ } }),
1229
+ React__default['default'].createElement(core.TextField, { disabled: loading, label: messages.signUpNameInputLabel, key: "name-input", id: "name-input", name: "name", inputProps: { required: true } }),
1230
+ React__default['default'].createElement(core.TextField, { disabled: loading, label: messages.signUpEmailInputLabel, key: "email-input", id: "email-input", name: "email", error: showEmailErrorText, helperText: showEmailErrorText && messages.signUpEmailErrorText, onChange: checkFieldValidity, inputProps: {
1231
+ required: signUpPhoneValue ? false : true,
1232
+ type: 'email',
1233
+ } }),
1234
+ React__default['default'].createElement(core.TextField, { disabled: loading, select: true, onChange: checkFieldValidity, label: messages.signUpLocationInputLabel, error: showLocationErrorText, helperText: showLocationErrorText && messages.signUpLocationErrorText, key: "location-input", id: "location-input", inputProps: { required: true }, name: "location" }, locationOptions.map(function (locationOption) { return (React__default['default'].createElement(core.MenuItem, { "data-cy": 'option', key: locationOption.value, value: locationOption.value }, locationOption.label)); })),
1198
1235
  React__default['default'].createElement(core.Typography, { style: { alignSelf: 'start' } }, messages.signUpBirthdaySectionLabel),
1199
1236
  React__default['default'].createElement(core.TextField, { disabled: loading, label: messages.signUpMonthInputLabel, key: "birthday-month-input", id: "birthday-month-input", name: "birthdayMonth" }),
1200
1237
  React__default['default'].createElement(core.TextField, { disabled: loading, label: messages.signUpDayInputLabel, key: "birthday-date-input", id: "birthday-date-input", name: "birthdayDate" }),
1201
- React__default['default'].createElement(core.Button, { disabled: loading, type: "submit" }, messages.signUp)));
1238
+ React__default['default'].createElement(core.Button, { disabled: loading || !formValidity, type: "submit" }, messages.signUp)));
1202
1239
  case 'emailFound':
1203
1240
  return (React__default['default'].createElement("form", __assign({}, formProps),
1204
1241
  React__default['default'].createElement(core.TextField, { disabled: loading, label: messages.emailFoundInputLabel, key: "email-input", id: "email-input", name: "email", value: state.defaultFormValues.email }),
@@ -1297,7 +1334,7 @@ var FollowerAuthenticationAltActions = function () {
1297
1334
  } }, messages.phoneFoundCtaButtonLabel)));
1298
1335
  case 'welcome':
1299
1336
  return (React__default['default'].createElement(core.Button, { onClick: function () {
1300
- dispatch({ type: 'click-sign-up' });
1337
+ dispatch({ type: 'click-done' });
1301
1338
  } }, messages.done));
1302
1339
  default:
1303
1340
  return null;