@zengenti/contensis-react-base 3.0.2-beta.0 → 3.0.2-beta.1

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/cjs/forms.js CHANGED
@@ -47,8 +47,13 @@ const initialStatus = {
47
47
  isLoading: true,
48
48
  isSubmitting: false,
49
49
  hasSuccess: false,
50
- successMessage: null,
51
- hasError: false
50
+ hasError: false,
51
+ messages: {
52
+ success: null
53
+ },
54
+ validation: {
55
+ sent: false
56
+ }
52
57
  };
53
58
  const initialPagingInfo = {
54
59
  pageIndex: 0,
@@ -192,6 +197,19 @@ var reducer = immer.produce((state, action) => {
192
197
  state[formId].status.hasError = false;
193
198
  state[formId].status.isSubmitting = false;
194
199
  state[formId].status.hasSuccess = true;
200
+ state[formId].status.validation.sent = false;
201
+ return;
202
+ }
203
+
204
+ case SUBMIT_FORM_FOR_VALIDATION:
205
+ {
206
+ const {
207
+ formId
208
+ } = action || {};
209
+ state[formId].status.validation.sent = true;
210
+ state[formId].status.isSubmitting = false;
211
+ state[formId].status.hasSuccess = false;
212
+ state[formId].status.hasError = false;
195
213
  return;
196
214
  }
197
215
 
@@ -201,7 +219,7 @@ var reducer = immer.produce((state, action) => {
201
219
  formId,
202
220
  message
203
221
  } = action || {};
204
- state[formId].status.successMessage = message;
222
+ state[formId].status.message.success = message;
205
223
  return;
206
224
  }
207
225
 
@@ -212,6 +230,7 @@ var reducer = immer.produce((state, action) => {
212
230
  } = action || {};
213
231
  state[formId].status.hasError = true;
214
232
  state[formId].status.isSubmitting = false;
233
+ state[formId].status.validation.sent = false;
215
234
  return;
216
235
  }
217
236
 
@@ -247,82 +266,89 @@ var reducer = immer.produce((state, action) => {
247
266
  }, initialState);
248
267
 
249
268
  const selectForms = state => state.forms;
250
- const makeSelectPagedFields = formId => reselect.createSelector([selectForms], form => {
251
- if (form[formId]) {
252
- const pagingInfo = form[formId].pagingInfo;
253
- const fields = form[formId].fields;
269
+ const makeSelectPagedFields = formId => reselect.createSelector(selectForms, forms => {
270
+ if (forms !== null && forms !== void 0 && forms[formId]) {
271
+ var _forms$formId, _forms$formId2;
272
+
273
+ const pagingInfo = forms === null || forms === void 0 ? void 0 : (_forms$formId = forms[formId]) === null || _forms$formId === void 0 ? void 0 : _forms$formId.pagingInfo;
274
+ const fields = forms === null || forms === void 0 ? void 0 : (_forms$formId2 = forms[formId]) === null || _forms$formId2 === void 0 ? void 0 : _forms$formId2.fields;
254
275
  if ((fields === null || fields === void 0 ? void 0 : fields.length) > 0 && pagingInfo.pageCount > 1) return fields.filter(f => f.groupId == pagingInfo.currentPageId);else return fields;
255
276
  }
256
277
  });
257
- const makeSelectFormStatus = formId => reselect.createSelector(selectForms, form => {
258
- var _form$formId;
278
+ const makeSelectFormStatus = formId => reselect.createSelector(selectForms, forms => {
279
+ var _forms$formId3;
259
280
 
260
- return (_form$formId = form[formId]) === null || _form$formId === void 0 ? void 0 : _form$formId.status;
281
+ return forms === null || forms === void 0 ? void 0 : (_forms$formId3 = forms[formId]) === null || _forms$formId3 === void 0 ? void 0 : _forms$formId3.status;
261
282
  });
262
- const makeSelectPagingInfo = formId => reselect.createSelector(selectForms, form => {
263
- var _form$formId2;
283
+ const makeSelectPagingInfo = formId => reselect.createSelector(selectForms, forms => {
284
+ var _forms$formId4;
264
285
 
265
- return (_form$formId2 = form[formId]) === null || _form$formId2 === void 0 ? void 0 : _form$formId2.pagingInfo;
286
+ return forms === null || forms === void 0 ? void 0 : (_forms$formId4 = forms[formId]) === null || _forms$formId4 === void 0 ? void 0 : _forms$formId4.pagingInfo;
266
287
  });
267
- const makeSelectFormSettings = formId => reselect.createSelector(selectForms, form => {
268
- var _form$formId3;
288
+ const makeSelectFormSettings = formId => reselect.createSelector(selectForms, forms => {
289
+ var _forms$formId5;
269
290
 
270
- return (_form$formId3 = form[formId]) === null || _form$formId3 === void 0 ? void 0 : _form$formId3.settings;
291
+ return forms === null || forms === void 0 ? void 0 : (_forms$formId5 = forms[formId]) === null || _forms$formId5 === void 0 ? void 0 : _forms$formId5.settings;
271
292
  });
272
- const makeSelectFormFieldErrors = formId => reselect.createSelector(selectForms, form => {
273
- var _form$formId4;
293
+ const makeSelectFormFieldErrors = formId => reselect.createSelector(selectForms, forms => {
294
+ var _forms$formId6;
274
295
 
275
- return (_form$formId4 = form[formId]) === null || _form$formId4 === void 0 ? void 0 : _form$formId4.fieldErrors;
296
+ return forms === null || forms === void 0 ? void 0 : (_forms$formId6 = forms[formId]) === null || _forms$formId6 === void 0 ? void 0 : _forms$formId6.fieldErrors;
276
297
  });
277
- const makeSelectFormEntries = formId => reselect.createSelector(selectForms, form => {
278
- var _form$formId5;
298
+ const makeSelectFormEntries = formId => reselect.createSelector(selectForms, forms => {
299
+ var _forms$formId7;
279
300
 
280
- return (_form$formId5 = form[formId]) === null || _form$formId5 === void 0 ? void 0 : _form$formId5.entries;
301
+ return forms === null || forms === void 0 ? void 0 : (_forms$formId7 = forms[formId]) === null || _forms$formId7 === void 0 ? void 0 : _forms$formId7.entries;
281
302
  });
282
- const makeSelectFormPostData = formId => reselect.createSelector(selectForms, form => {
283
- var _form$formId6;
303
+ const makeSelectFormPostData = formId => reselect.createSelector(selectForms, forms => {
304
+ var _forms$formId8;
284
305
 
285
- return (_form$formId6 = form[formId]) === null || _form$formId6 === void 0 ? void 0 : _form$formId6.data;
306
+ return forms === null || forms === void 0 ? void 0 : (_forms$formId8 = forms[formId]) === null || _forms$formId8 === void 0 ? void 0 : _forms$formId8.data;
286
307
  });
287
308
  const makeSelectIsLoading = formId => reselect.createSelector(selectForms, forms => {
288
- var _forms$formId;
309
+ var _forms$formId9;
289
310
 
290
- return (_forms$formId = forms[formId]) === null || _forms$formId === void 0 ? void 0 : _forms$formId.status.isLoading;
311
+ return forms === null || forms === void 0 ? void 0 : (_forms$formId9 = forms[formId]) === null || _forms$formId9 === void 0 ? void 0 : _forms$formId9.status.isLoading;
291
312
  });
292
313
  const makeSelectIsSubmitting = formId => reselect.createSelector(selectForms, forms => {
293
- var _forms$formId2;
314
+ var _forms$formId10;
294
315
 
295
- return (_forms$formId2 = forms[formId]) === null || _forms$formId2 === void 0 ? void 0 : _forms$formId2.status.isSubmitting;
316
+ return forms === null || forms === void 0 ? void 0 : (_forms$formId10 = forms[formId]) === null || _forms$formId10 === void 0 ? void 0 : _forms$formId10.status.isSubmitting;
296
317
  });
297
318
  const makeSelectHasSuccess = formId => reselect.createSelector(selectForms, forms => {
298
- var _forms$formId3;
319
+ var _forms$formId11;
299
320
 
300
- return (_forms$formId3 = forms[formId]) === null || _forms$formId3 === void 0 ? void 0 : _forms$formId3.status.hasSuccess;
321
+ return forms === null || forms === void 0 ? void 0 : (_forms$formId11 = forms[formId]) === null || _forms$formId11 === void 0 ? void 0 : _forms$formId11.status.hasSuccess;
301
322
  });
302
323
  const makeSelectHasError = formId => reselect.createSelector(selectForms, forms => {
303
- var _forms$formId4;
324
+ var _forms$formId12;
304
325
 
305
- return (_forms$formId4 = forms[formId]) === null || _forms$formId4 === void 0 ? void 0 : _forms$formId4.status.hasError;
326
+ return forms === null || forms === void 0 ? void 0 : (_forms$formId12 = forms[formId]) === null || _forms$formId12 === void 0 ? void 0 : _forms$formId12.status.hasError;
306
327
  });
307
328
  const makeSelectFormFields = formId => reselect.createSelector(selectForms, forms => {
308
- var _forms$formId5;
329
+ var _forms$formId13;
309
330
 
310
- return (_forms$formId5 = forms[formId]) === null || _forms$formId5 === void 0 ? void 0 : _forms$formId5.fields;
331
+ return forms === null || forms === void 0 ? void 0 : (_forms$formId13 = forms[formId]) === null || _forms$formId13 === void 0 ? void 0 : _forms$formId13.fields;
311
332
  });
312
333
  const makeSelectDefaultLang = formId => reselect.createSelector(selectForms, forms => {
313
- var _forms$formId6;
334
+ var _forms$formId14;
314
335
 
315
- return (_forms$formId6 = forms[formId]) === null || _forms$formId6 === void 0 ? void 0 : _forms$formId6.defaultLanguage;
336
+ return forms === null || forms === void 0 ? void 0 : (_forms$formId14 = forms[formId]) === null || _forms$formId14 === void 0 ? void 0 : _forms$formId14.defaultLanguage;
316
337
  });
317
338
  const makeSelectFormSuccessMessage = formId => reselect.createSelector(selectForms, forms => {
318
- var _forms$formId7;
339
+ var _forms$formId15;
340
+
341
+ return forms === null || forms === void 0 ? void 0 : (_forms$formId15 = forms[formId]) === null || _forms$formId15 === void 0 ? void 0 : _forms$formId15.status.messages.success;
342
+ });
343
+ const makeSelectFormValidationSent = formId => reselect.createSelector(selectForms, forms => {
344
+ var _forms$formId16;
319
345
 
320
- return (_forms$formId7 = forms[formId]) === null || _forms$formId7 === void 0 ? void 0 : _forms$formId7.status.successMessage;
346
+ return forms === null || forms === void 0 ? void 0 : (_forms$formId16 = forms[formId]) === null || _forms$formId16 === void 0 ? void 0 : _forms$formId16.status.validation.sent;
321
347
  });
322
348
  const makeSelectFormGroup$1 = formId => reselect.createSelector(selectForms, forms => {
323
- var _forms$formId8;
349
+ var _forms$formId17;
324
350
 
325
- return (_forms$formId8 = forms[formId]) === null || _forms$formId8 === void 0 ? void 0 : _forms$formId8.groups;
351
+ return forms === null || forms === void 0 ? void 0 : (_forms$formId17 = forms[formId]) === null || _forms$formId17 === void 0 ? void 0 : _forms$formId17.groups;
326
352
  });
327
353
  const selectors = {
328
354
  selectForms,
@@ -339,6 +365,7 @@ const selectors = {
339
365
  makeSelectFormFields,
340
366
  makeSelectDefaultLang,
341
367
  makeSelectFormSuccessMessage,
368
+ makeSelectFormValidationSent,
342
369
  makeSelectFormGroup: makeSelectFormGroup$1,
343
370
  makeSelectHasError
344
371
  };
@@ -393,7 +420,14 @@ const request = async (url, options) => {
393
420
 
394
421
  const domains = ['1033edge.com', '11mail.com', '123.com', '123box.net', '123india.com', '123mail.cl', '123qwe.co.uk', '126.com', '150ml.com', '15meg4free.com', '163.com', '1coolplace.com', '1freeemail.com', '1funplace.com', '1internetdrive.com', '1mail.net', '1me.net', '1mum.com', '1musicrow.com', '1netdrive.com', '1nsyncfan.com', '1under.com', '1webave.com', '1webhighway.com', '212.com', '24horas.com', '2911.net', '2bmail.co.uk', '2d2i.com', '2die4.com', '3000.it', '321media.com', '37.com', '3ammagazine.com', '3dmail.com', '3email.com', '3xl.net', '444.net', '4email.com', '4email.net', '4mg.com', '4newyork.com', '4x4man.com', '5iron.com', '5star.com', '88.am', '8848.net', '888.nu', '97rock.com', 'aaamail.zzn.com', 'aamail.net', 'aaronkwok.net', 'abbeyroadlondon.co.uk', 'abcflash.net', 'abdulnour.com', 'aberystwyth.com', 'abolition-now.com', 'about.com', 'academycougars.com', 'acceso.or.cr', 'access4less.net', 'accessgcc.com', 'ace-of-base.com', 'acmecity.com', 'acmemail.net', 'acninc.net', 'adelphia.net', 'adexec.com', 'adfarrow.com', 'adios.net', 'ados.fr', 'advalvas.be', 'aeiou.pt', 'aemail4u.com', 'aeneasmail.com', 'afreeinternet.com', 'africamail.com', 'agoodmail.com', 'ahaa.dk', 'aichi.com', 'aim.com', 'airforce.net', 'airforceemail.com', 'airmail.net', 'airpost.net', 'ajacied.com', 'ak47.hu', 'aknet.kg', 'albawaba.com', 'alex4all.com', 'alexandria.cc', 'algeria.com', 'alhilal.net', 'alibaba.com', 'alice.it', 'aliceadsl.fr', 'alive.cz', 'aliyun.com', 'allmail.net', 'alloymail.com', 'allracing.com', 'allsaintsfan.com', 'alltel.net', 'alskens.dk', 'altavista.com', 'altavista.net', 'altavista.se', 'alternativagratis.com', 'alumnidirector.com', 'alvilag.hu', 'amele.com', 'america.hm', 'ameritech.net', 'amnetsal.com', 'amrer.net', 'amuro.net', 'amuromail.com', 'ananzi.co.za', 'ancestry.com', 'andylau.net', 'anfmail.com', 'angelfan.com', 'angelfire.com', 'animal.net', 'animalhouse.com', 'animalwoman.net', 'anjungcafe.com', 'anote.com', 'another.com', 'anotherwin95.com', 'anti-social.com', 'antisocial.com', 'antongijsen.com', 'antwerpen.com', 'anymoment.com', 'anytimenow.com', 'aol.com', 'aol.it', 'apexmail.com', 'apmail.com', 'apollo.lv', 'approvers.net', 'arabia.com', 'arabtop.net', 'arcademaster.com', 'archaeologist.com', 'arcor.de', 'arcotronics.bg', 'argentina.com', 'aristotle.org', 'army.net', 'arnet.com.ar', 'artlover.com', 'artlover.com.au', 'as-if.com', 'asean-mail.com', 'asheville.com', 'asia-links.com', 'asia.com', 'asiafind.com', 'asianavenue.com', 'asiancityweb.com', 'asiansonly.net', 'asianwired.net', 'asiapoint.net', 'assala.com', 'assamesemail.com', 'astroboymail.com', 'astrolover.com', 'astrosfan.com', 'astrosfan.net', 'asurfer.com', 'athenachu.net', 'atina.cl', 'atl.lv', 'atlanticbb.net', 'atlaswebmail.com', 'atlink.com', 'ato.check.com', 'atozasia.com', 'att.net', 'att.net', 'attbi.com', 'attglobal.net', 'attglobal.net', 'attymail.com', 'au.ru', 'ausi.com', 'austin.rr.com', 'australia.edu', 'australiamail.com', 'austrosearch.net', 'autoescuelanerja.com', 'automotiveauthority.com', 'avh.hu', 'awsom.net', 'axoskate.com', 'ayna.com', 'azimiweb.com', 'bachelorboy.com', 'bachelorgal.com', 'backpackers.com', 'backstreet-boys.com', 'backstreetboysclub.com', 'bagherpour.com', 'bangkok.com', 'bangkok2000.com', 'bannertown.net', 'baptistmail.com', 'baptized.com', 'barcelona.com', 'baseballmail.com', 'basketballmail.com', 'batuta.net', 'baudoinconsulting.com', 'bboy.zzn.com', 'bcpl.net', 'bcvibes.com', 'beeebank.com', 'beenhad.com', 'beep.ru', 'beer.com', 'beethoven.com', 'belice.com', 'belizehome.com', 'bellatlantic.net', 'bellnet.ca', 'bellsouth.net', 'bellsouth.net', 'berkscounty.com', 'berlin.com', 'berlin.de', 'berlinexpo.de', 'bestmail.us', 'bestweb.net', 'bettergolf.net', 'bev.net', 'bharatmail.com', 'bigassweb.com', 'bigblue.net.au', 'bigboab.com', 'bigfoot.com', 'bigfoot.de', 'bigger.com', 'bigmailbox.com', 'bigpond.com', 'bigpond.com.au', 'bigpond.net.au', 'bigramp.com', 'bikemechanics.com', 'bikeracer.com', 'bikeracers.net', 'bikerider.com', 'billsfan.com', 'billsfan.net', 'bimamail.com', 'bimla.net', 'birdowner.net', 'bisons.com', 'bitmail.com', 'bitpage.net', 'bizhosting.com', 'bla-bla.com', 'blackburnmail.com', 'blackplanet.com', 'blacksburg.net', 'blazemail.com', 'blazenet.net', 'bluehyppo.com', 'bluemail.ch', 'bluemail.dk', 'bluesfan.com', 'bluewin.ch', 'blueyonder.co.uk', 'blushmail.com', 'bmlsports.net', 'boardermail.com', 'boatracers.com', 'bol.com.br', 'bolando.com', 'bollywoodz.com', 'bolt.com', 'boltonfans.com', 'bombdiggity.com', 'bonbon.net', 'boom.com', 'bootmail.com', 'bornnaked.com', 'bossofthemoss.com', 'bostonoffice.com', 'bounce.net', 'box.az', 'boxbg.com', 'boxemail.com', 'boxfrog.com', 'boyzoneclub.com', 'bradfordfans.com', 'brasilia.net', 'brazilmail.com.br', 'breathe.com', 'bresnan.net', 'brfree.com.br', 'bright.net', 'britneyclub.com', 'brittonsign.com', 'broadcast.net', 'bt.com', 'btinternet.com', 'btopenworld.co.uk', 'buffymail.com', 'bullsfan.com', 'bullsgame.com', 'bumerang.ro', 'bunko.com', 'buryfans.com', 'business-man.com', 'businessman.net', 'businessweekmail.com', 'busta-rhymes.com', 'busymail.com', 'buyersusa.com', 'bvimailbox.com', 'byteme.com', 'c2i.net', 'c3.hu', 'c4.com', 'cabacabana.com', 'cableone.net', 'caere.it', 'cairomail.com', 'cais.net', 'callnetuk.com', 'callsign.net', 'caltanet.it', 'camidge.com', 'canada-11.com', 'canada.com', 'canadianmail.com', 'canoemail.com', 'canwetalk.com', 'capu.net', 'caramail.com', 'care2.com', 'careerbuildermail.com', 'carioca.net', 'cartestraina.ro', 'casablancaresort.com', 'casino.com', 'catcha.com', 'catholic.org', 'catlover.com', 'catsrule.garfield.com', 'ccnmail.com', 'cd2.com', 'celineclub.com', 'celtic.com', 'centoper.it', 'centralpets.com', 'centrum.cz', 'centrum.sk', 'centurytel.net', 'cfl.rr.com', 'cgac.es', 'chaiyomail.com', 'chance2mail.com', 'chandrasekar.net', 'charm.net', 'charmedmail.com', 'charter.net', 'chat.ru', 'chattown.com', 'chauhanweb.com', 'check.com', 'check1check.com', 'cheerful.com', 'chek.com', 'chello.nl', 'chemist.com', 'chequemail.com', 'cheyenneweb.com', 'chez.com', 'chickmail.com', 'china.net.vg', 'chinalook.com', 'chirk.com', 'chocaholic.com.au', 'christianmail.net', 'churchusa.com', 'cia-agent.com', 'cia.hu', 'ciaoweb.it', 'cicciociccio.com', 'cincinow.net', 'citeweb.net', 'citlink.net', 'city-of-bath.org', 'city-of-birmingham.com', 'city-of-brighton.org', 'city-of-cambridge.com', 'city-of-coventry.com', 'city-of-edinburgh.com', 'city-of-lichfield.com', 'city-of-lincoln.com', 'city-of-liverpool.com', 'city-of-manchester.com', 'city-of-nottingham.com', 'city-of-oxford.com', 'city-of-swansea.com', 'city-of-westminster.com', 'city-of-westminster.net', 'city-of-york.net', 'city2city.com', 'cityofcardiff.net', 'cityoflondon.org', 'claramail.com', 'classicalfan.com', 'classicmail.co.za', 'clerk.com', 'cliffhanger.com', 'close2you.net', 'club-internet.fr', 'club4x4.net', 'clubalfa.com', 'clubbers.net', 'clubducati.com', 'clubhonda.net', 'clubvdo.net', 'cluemail.com', 'cmpmail.com', 'cnnsimail.com', 'codec.ro', 'coder.hu', 'coid.biz', 'coldmail.com', 'collectiblesuperstore.com', 'collegebeat.com', 'collegeclub.com', 'collegemail.com', 'colleges.com', 'columbus.rr.com', 'columbusrr.com', 'columnist.com', 'comcast.net', 'comic.com', 'communityconnect.com', 'comprendemail.com', 'compuserve.com', 'computer-freak.com', 'computermail.net', 'concentric.net', 'conexcol.com', 'conk.com', 'connect4free.net', 'connectbox.com', 'conok.com', 'consultant.com', 'cookiemonster.com', 'cool.br', 'coolgoose.ca', 'coolgoose.com', 'coolkiwi.com', 'coollist.com', 'coolmail.com', 'coolmail.net', 'coolsend.com', 'cooooool.com', 'cooperation.net', 'cooperationtogo.net', 'copacabana.com', 'cornells.com', 'cornerpub.com', 'corporatedirtbag.com', 'correo.terra.com.gt', 'cortinet.com', 'cotas.net', 'counsellor.com', 'countrylover.com', 'covad.net', 'cox.net', 'coxinet.net', 'coxmail.com', 'cpaonline.net', 'cracker.hu', 'crazedanddazed.com', 'crazysexycool.com', 'cristianemail.com', 'critterpost.com', 'croeso.com', 'crosshairs.com', 'crosslink.net', 'crosswinds.net', 'crwmail.com', 'cry4helponline.com', 'cs.com', 'csi.com', 'csinibaba.hu', 'cuemail.com', 'curio-city.com', 'cute-girl.com', 'cuteandcuddly.com', 'cutey.com', 'cww.de', 'cyber-africa.net', 'cyber4all.com', 'cyberbabies.com', 'cybercafemaui.com', 'cyberdude.com', 'cyberforeplay.net', 'cybergal.com', 'cybergrrl.com', 'cyberinbox.com', 'cyberleports.com', 'cybermail.net', 'cybernet.it', 'cyberspace-asia.com', 'cybertrains.org', 'cyclefanz.com', 'cynetcity.com', 'dabsol.net', 'dadacasa.com', 'daha.com', 'dailypioneer.com', 'dallas.theboys.com', 'dangerous-minds.com', 'dansegulvet.com', 'data54.com', 'daum.net', 'davegracey.com', 'dawnsonmail.com', 'dawsonmail.com', 'dazedandconfused.com', 'dbzmail.com', 'dca.net', 'dcemail.com', 'deadlymob.org', 'deal-maker.com', 'dearriba.com', 'death-star.com', 'dejanews.com', 'deliveryman.com', 'deltanet.com', 'deneg.net', 'depechemode.com', 'deseretmail.com', 'desertmail.com', 'desilota.com', 'deskmail.com', 'deskpilot.com', 'destin.com', 'detik.com', 'deutschland-net.com', 'devotedcouples.com', 'dfwatson.com', 'di-ve.com', 'digibel.be', 'diplomats.com', 'direcway.com', 'dirtracer.com', 'discofan.com', 'discovery.com', 'discoverymail.com', 'disinfo.net', 'dmailman.com', 'dmv.com', 'dnsmadeeasy.com', 'doctor.com', 'dog.com', 'doglover.com', 'dogmail.co.uk', 'dogsnob.net', 'doityourself.com', 'doneasy.com', 'donjuan.com', 'dontgotmail.com', 'dontmesswithtexas.com', 'doramail.com', 'dostmail.com', 'dotcom.fr', 'dott.it', 'dplanet.ch', 'dr.com', 'dragoncon.net', 'dragracer.com', 'dropzone.com', 'drotposta.hu', 'dslextreme.com', 'dubaimail.com', 'dublin.com', 'dublin.ie', 'dunlopdriver.com', 'dunloprider.com', 'duno.com', 'dwp.net', 'dygo.com', 'dynamitemail.com', 'e-apollo.lv', 'e-mail.dk', 'e-mail.ru', 'e-mailanywhere.com', 'e-mails.ru', 'e-tapaal.com', 'earthalliance.com', 'earthcam.net', 'earthdome.com', 'earthling.net', 'earthlink.net', 'earthonline.net', 'eastcoast.co.za', 'eastmail.com', 'easy.to', 'easypost.com', 'eatmydirt.com', 'ecardmail.com', 'ecbsolutions.net', 'echina.com', 'ecompare.com', 'edge.net', 'edmail.com', 'ednatx.com', 'edtnmail.com', 'educacao.te.pt', 'educastmail.com', 'ehmail.com', 'eircom.net', 'elsitio.com', 'elvis.com', 'email-london.co.uk', 'email.com', 'email.cz', 'email.ee', 'email.it', 'email.nu', 'email.ro', 'email.ru', 'email.si', 'email.women.com', 'email2me.net', 'emailacc.com', 'emailaccount.com', 'emailchoice.com', 'emailcorner.net', 'emailem.com', 'emailengine.net', 'emailforyou.net', 'emailgroups.net', 'emailpinoy.com', 'emailplanet.com', 'emails.ru', 'emailuser.net', 'emailx.net', 'ematic.com', 'embarqmail.com', 'emumail.com', 'end-war.com', 'enel.net', 'engineer.com', 'england.com', 'england.edu', 'enter.net', 'epatra.com', 'epix.net', 'epost.de', 'eposta.hu', 'eqqu.com', 'eramail.co.za', 'eresmas.com', 'eriga.lv', 'erols.com', 'estranet.it', 'ethos.st', 'etoast.com', 'etrademail.com', 'eudoramail.com', 'europe.com', 'euroseek.com', 'every1.net', 'everyday.com.kh', 'everyone.net', 'examnotes.net', 'excite.co.jp', 'excite.com', 'excite.it', 'execs.com', 'expressasia.com', 'extenda.net', 'extended.com', 'eyou.com', 'ezcybersearch.com', 'ezmail.egine.com', 'ezmail.ru', 'ezrs.com', 'ezy.net', 'f1fans.net', 'facebook.com', 'fan.com', 'fan.theboys.com', 'fansonlymail.com', 'fantasticmail.com', 'farang.net', 'faroweb.com', 'fastem.com', 'fastemail.us', 'fastemailer.com', 'fastermail.com', 'fastimap.com', 'fastmail.fm', 'fastmailbox.net', 'fastmessaging.com', 'fatcock.net', 'fathersrightsne.org', 'fbi-agent.com', 'fbi.hu', 'fcc.net', 'federalcontractors.com', 'felicity.com', 'felicitymail.com', 'femenino.com', 'fetchmail.co.uk', 'fetchmail.com', 'feyenoorder.com', 'ffanet.com', 'fiberia.com', 'fibertel.com.ar', 'filipinolinks.com', 'financemail.net', 'financier.com', 'findmail.com', 'finebody.com', 'finfin.com', 'fire-brigade.com', 'fishburne.org', 'flashcom.net', 'flashemail.com', 'flashmail.com', 'flashmail.net', 'flipcode.com', 'fmail.co.uk', 'fmailbox.com', 'fmgirl.com', 'fmguy.com', 'fnbmail.co.za', 'fnmail.com', 'folkfan.com', 'foodmail.com', 'football.theboys.com', 'footballmail.com', 'for-president.com', 'forfree.at', 'forpresident.com', 'forthnet.gr', 'fortuncity.com', 'fortunecity.com', 'forum.dk', 'foxmail.com', 'free-org.com', 'free.com.pe', 'free.fr', 'freeaccess.nl', 'freeaccount.com', 'freeandsingle.com', 'freedom.usa.com', 'freedomlover.com', 'freegates.be', 'freeghana.com', 'freeler.nl', 'freemail.c3.hu', 'freemail.com.au', 'freemail.com.pk', 'freemail.de', 'freemail.et', 'freemail.gr', 'freemail.hu', 'freemail.it', 'freemail.lt', 'freemail.nl', 'freemail.org.mk', 'freenet.de', 'freenet.kg', 'freeola.com', 'freeola.net', 'freeserve.co.uk', 'freestamp.com', 'freestart.hu', 'freesurf.fr', 'freesurf.nl', 'freeuk.com', 'freeuk.net', 'freeukisp.co.uk', 'freeweb.org', 'freewebemail.com', 'freeyellow.com', 'freezone.co.uk', 'fresnomail.com', 'friends-cafe.com', 'friendsfan.com', 'from-africa.com', 'from-america.com', 'from-argentina.com', 'from-asia.com', 'from-australia.com', 'from-belgium.com', 'from-brazil.com', 'from-canada.com', 'from-china.net', 'from-england.com', 'from-europe.com', 'from-france.net', 'from-germany.net', 'from-holland.com', 'from-israel.com', 'from-italy.net', 'from-japan.net', 'from-korea.com', 'from-mexico.com', 'from-outerspace.com', 'from-russia.com', 'from-spain.net', 'fromalabama.com', 'fromalaska.com', 'fromarizona.com', 'fromarkansas.com', 'fromcalifornia.com', 'fromcolorado.com', 'fromconnecticut.com', 'fromdelaware.com', 'fromflorida.net', 'fromgeorgia.com', 'fromhawaii.net', 'fromidaho.com', 'fromillinois.com', 'fromindiana.com', 'fromiowa.com', 'fromjupiter.com', 'fromkansas.com', 'fromkentucky.com', 'fromlouisiana.com', 'frommaine.net', 'frommaryland.com', 'frommassachusetts.com', 'frommiami.com', 'frommichigan.com', 'fromminnesota.com', 'frommississippi.com', 'frommissouri.com', 'frommontana.com', 'fromnebraska.com', 'fromnevada.com', 'fromnewhampshire.com', 'fromnewjersey.com', 'fromnewmexico.com', 'fromnewyork.net', 'fromnorthcarolina.com', 'fromnorthdakota.com', 'fromohio.com', 'fromoklahoma.com', 'fromoregon.net', 'frompennsylvania.com', 'fromrhodeisland.com', 'fromru.com', 'fromsouthcarolina.com', 'fromsouthdakota.com', 'fromtennessee.com', 'fromtexas.com', 'fromthestates.com', 'fromutah.com', 'fromvermont.com', 'fromvirginia.com', 'fromwashington.com', 'fromwashingtondc.com', 'fromwestvirginia.com', 'fromwisconsin.com', 'fromwyoming.com', 'front.ru', 'frontier.com', 'frontiernet.net', 'frostbyte.uk.net', 'fsmail.net', 'ftml.net', 'fullchannel.net', 'fullmail.com', 'funkfan.com', 'fuorissimo.com', 'furnitureprovider.com', 'fuse.net', 'fut.es', 'fwnb.com', 'fxsmails.com', 'galamb.net', 'galaxy5.com', 'gamebox.net', 'gamegeek.com', 'games.com', 'gamespotmail.com', 'garbage.com', 'gardener.com', 'gateway.net', 'gawab.com', 'gaybrighton.co.uk', 'gaza.net', 'gazeta.pl', 'gazibooks.com', 'gci.net', 'gee-wiz.com', 'geecities.com', 'geek.com', 'geek.hu', 'geeklife.com', 'general-hospital.com', 'geocities.com', 'geologist.com', 'geopia.com', 'gh2000.com', 'ghanamail.com', 'ghostmail.com', 'giantsfan.com', 'giga4u.de', 'gigileung.org', 'givepeaceachance.com', 'glay.org', 'glendale.net', 'globalfree.it', 'globalpagan.com', 'globalsite.com.br', 'globo.com', 'globomail.com', 'gmail.com', 'gmx.at', 'gmx.com', 'gmx.de', 'gmx.fr', 'gmx.li', 'gmx.net', 'gnwmail.com', 'go.com', 'go.ro', 'go.ru', 'go2.com.py', 'go2net.com', 'gocollege.com', 'gocubs.com', 'gofree.co.uk', 'goldenmail.ru', 'goldmail.ru', 'golfemail.com', 'golfmail.be', 'gonavy.net', 'goodstick.com', 'google.com', 'googlemail.com', 'goplay.com', 'gorontalo.net', 'gospelfan.com', 'gothere.uk.com', 'gotmail.com', 'gotomy.com', 'govolsfan.com', 'gportal.hu', 'grabmail.com', 'graffiti.net', 'gramszu.net', 'grapplers.com', 'gratisweb.com', 'grungecafe.com', 'gtemail.net', 'gti.net', 'gtmc.net', 'gua.net', 'guessmail.com', 'guju.net', 'gurlmail.com', 'guy.com', 'guy2.com', 'guyanafriends.com', 'gyorsposta.com', 'gyorsposta.hu', 'hackermail.net', 'hailmail.net', 'hairdresser.net', 'hamptonroads.com', 'handbag.com', 'handleit.com', 'hang-ten.com', 'hanmail.net', 'happemail.com', 'happycounsel.com', 'happypuppy.com', 'hardcorefreak.com', 'hawaii.rr.com', 'hawaiiantel.net', 'headbone.com', 'heartthrob.com', 'heerschap.com', 'heesun.net', 'hehe.com', 'hello.hu', 'hello.net.au', 'hello.to', 'helter-skelter.com', 'hempseed.com', 'herediano.com', 'heremail.com', 'herono1.com', 'hetnet.nl', 'hey.to', 'hhdevel.com', 'highmilton.com', 'highquality.com', 'highveldmail.co.za', 'hiphopfan.com', 'hispavista.com', 'hitthe.net', 'hkg.net', 'hkstarphoto.com', 'hockeymail.com', 'hollywoodkids.com', 'home-email.com', 'home.nl', 'home.no.net', 'home.ro', 'home.se', 'homeart.com', 'homelocator.com', 'homemail.com', 'homestead.com', 'homeworkcentral.com', 'hongkong.com', 'hookup.net', 'hoopsmail.com', 'horrormail.com', 'host-it.com.sg', 'hot-shot.com', 'hot.ee', 'hotbot.com', 'hotbrev.com', 'hotepmail.com', 'hotfire.net', 'hotletter.com', 'hotmail.be', 'hotmail.co.il', 'hotmail.co.uk', 'hotmail.com', 'hotmail.com.ar', 'hotmail.com.br', 'hotmail.com.mx', 'hotmail.de', 'hotmail.es', 'hotmail.fr', 'hotmail.it', 'hotmail.kg', 'hotmail.kz', 'hotmail.ru', 'hotpop.com', 'hotpop3.com', 'hotvoice.com', 'housefancom', 'housemail.com', 'hsuchi.net', 'html.tou.com', 'hughes.net', 'hunsa.com', 'hush.com', 'hushmail.com', 'hypernautica.com', 'i-connect.com', 'i-france.com', 'i-mail.com.au', 'i-p.com', 'i-plus.net', 'i.am', 'i12.com', 'iamawoman.com', 'iamwaiting.com', 'iamwasted.com', 'iamyours.com', 'ibm.net', 'icestorm.com', 'icloud.com', 'icmsconsultants.com', 'icq.com', 'icqmail.com', 'icrazy.com', 'id-base.com', 'ididitmyway.com', 'idirect.com', 'iespana.es', 'ifoward.com', 'ig.com.br', 'ignazio.it', 'ignmail.com', 'ihateclowns.com', 'ihwy.com', 'iinet.net.au', 'ijustdontcare.com', 'ilovechocolate.com', 'ilovejesus.com', 'ilovethemovies.com', 'ilovetocollect.net', 'ilse.nl', 'imaginemail.com', 'imail.org', 'imail.ru', 'imailbox.com', 'imel.org', 'imneverwrong.com', 'imposter.co.uk', 'imstressed.com', 'imtoosexy.com', 'in-box.net', 'iname.com', 'inbox.com', 'inbox.net', 'inbox.ru', 'incamail.com', 'incredimail.com', 'indexa.fr', 'india.com', 'indiatimes.com', 'indo-mail.com', 'indocities.com', 'indomail.com', 'indyracers.com', 'info-media.de', 'info66.com', 'infohq.com', 'infomail.es', 'infomart.or.jp', 'infospacemail.com', 'infovia.com.ar', 'inicia.es', 'inmail.sk', 'innocent.com', 'inorbit.com', 'insidebaltimore.net', 'insight.rr.com', 'insurer.com', 'integra.net', 'interaccess.com', 'interburp.com', 'interfree.it', 'interia.pl', 'interlap.com.ar', 'intermail.co.il', 'internet-club.com', 'internet-police.com', 'internetbiz.com', 'internetdrive.com', 'internetegypt.com', 'internetemails.net', 'internetmailing.net', 'internetmci.com', 'investormail.com', 'inwind.it', 'iobox.com', 'iobox.fi', 'iol.it', 'ionet.net', 'iowaemail.com', 'ip3.com', 'iprimus.com.au', 'iqemail.com', 'irangate.net', 'iraqmail.com', 'ireland.com', 'irj.hu', 'isellcars.com', 'islamonline.net', 'isleuthmail.com', 'ismart.net', 'isonfire.com', 'isp9.net', 'itelefonica.com.br', 'itloox.com', 'itmom.com', 'itol.com', 'ivebeenframed.com', 'ivillage.com', 'iwan-fals.com', 'iwmail.com', 'iwon.com', 'izadpanah.com', 'jahoopa.com', 'jakuza.hu', 'japan.com', 'jaydemail.com', 'jazzandjava.com', 'jazzfan.com', 'jazzgame.com', 'jerusalemmail.com', 'jetemail.net', 'jewishmail.com', 'jippii.fi', 'jmail.co.za', 'joinme.com', 'jokes.com', 'jordanmail.com', 'journalist.com', 'jovem.te.pt', 'joymail.com', 'jpopmail.com', 'jubiimail.dk', 'jump.com', 'jumpy.it', 'juniormail.com', 'juno.com', 'justemail.net', 'justicemail.com', 'kaazoo.com', 'kaixo.com', 'kalpoint.com', 'kansascity.com', 'kapoorweb.com', 'karachian.com', 'karachioye.com', 'karbasi.com', 'katamail.com', 'kayafmmail.co.za', 'kbjrmail.com', 'kcks.com', 'keg-party.com', 'keko.com.ar', 'kellychen.com', 'keromail.com', 'keyemail.com', 'kgb.hu', 'khosropour.com', 'kickassmail.com', 'killermail.com', 'kimo.com', 'kinki-kids.com', 'kittymail.com', 'kitznet.at', 'kiwibox.com', 'kiwitown.com', 'kmail.com.au', 'konx.com', 'korea.com', 'kozmail.com', 'krongthip.com', 'krunis.com', 'ksanmail.com', 'ksee24mail.com', 'kube93mail.com', 'kukamail.com', 'kumarweb.com', 'kuwait-mail.com', 'la.com', 'ladymail.cz', 'lagerlouts.com', 'lahoreoye.com', 'lakmail.com', 'lamer.hu', 'land.ru', 'lankamail.com', 'laposte.net', 'latemodels.com', 'latinmail.com', 'latino.com', 'lavabit.com', 'law.com', 'lawyer.com', 'leehom.net', 'legalactions.com', 'legislator.com', 'leonlai.net', 'letsgomets.net', 'letterbox.com', 'levele.com', 'levele.hu', 'lex.bg', 'lexis-nexis-mail.com', 'libero.it', 'liberomail.com', 'lick101.com', 'linkmaster.com', 'linktrader.com', 'linuxfreemail.com', 'linuxmail.org', 'lionsfan.com.au', 'liontrucks.com', 'liquidinformation.net', 'list.ru', 'littleblueroom.com', 'live.be', 'live.ca', 'live.co.uk', 'live.com', 'live.com.ar', 'live.com.au', 'live.com.mx', 'live.de', 'live.fr', 'live.it', 'live.nl', 'liverpoolfans.com', 'llandudno.com', 'llangollen.com', 'lmxmail.sk', 'lobbyist.com', 'localbar.com', 'london.com', 'loobie.com', 'looksmart.co.uk', 'looksmart.com', 'looksmart.com.au', 'lopezclub.com', 'louiskoo.com', 'love.com', 'love.cz', 'loveable.com', 'lovelygirl.net', 'lovemail.com', 'lover-boy.com', 'lovergirl.com', 'lovingjesus.com', 'lowandslow.com', 'luso.pt', 'luukku.com', 'lycos.co.uk', 'lycos.com', 'lycos.es', 'lycos.it', 'lycos.ne.jp', 'lycosemail.com', 'lycosmail.com', 'm-a-i-l.com', 'm-hmail.com', 'm4.org', 'mac.com', 'macbox.com', 'macfreak.com', 'machinecandy.com', 'macmail.com', 'madcreations.com', 'madrid.com', 'maffia.hu', 'magicmail.co.za', 'mahmoodweb.com', 'mail-awu.de', 'mail-box.cz', 'mail-center.com', 'mail-central.com', 'mail-page.com', 'mail.austria.com', 'mail.az', 'mail.be', 'mail.bulgaria.com', 'mail.byte.it', 'mail.co.za', 'mail.com', 'mail.ee', 'mail.entrepeneurmag.com', 'mail.freetown.com', 'mail.gr', 'mail.hitthebeach.com', 'mail.kmsp.com', 'mail.md', 'mail.nu', 'mail.org.uk', 'mail.pf', 'mail.pharmacy.com', 'mail.pt', 'mail.r-o-o-t.com', 'mail.ru', 'mail.salu.net', 'mail.sisna.com', 'mail.spaceports.com', 'mail.theboys.com', 'mail.usa.com', 'mail.vasarhely.hu', 'mail15.com', 'mail1st.com', 'mail2007.com', 'mail2aaron.com', 'mail2abby.com', 'mail2abc.com', 'mail2actor.com', 'mail2admiral.com', 'mail2adorable.com', 'mail2adoration.com', 'mail2adore.com', 'mail2adventure.com', 'mail2aeolus.com', 'mail2aether.com', 'mail2affection.com', 'mail2afghanistan.com', 'mail2africa.com', 'mail2agent.com', 'mail2aha.com', 'mail2ahoy.com', 'mail2aim.com', 'mail2air.com', 'mail2airbag.com', 'mail2airforce.com', 'mail2airport.com', 'mail2alabama.com', 'mail2alan.com', 'mail2alaska.com', 'mail2albania.com', 'mail2alcoholic.com', 'mail2alec.com', 'mail2alexa.com', 'mail2algeria.com', 'mail2alicia.com', 'mail2alien.com', 'mail2allan.com', 'mail2allen.com', 'mail2allison.com', 'mail2alpha.com', 'mail2alyssa.com', 'mail2amanda.com', 'mail2amazing.com', 'mail2amber.com', 'mail2america.com', 'mail2american.com', 'mail2andorra.com', 'mail2andrea.com', 'mail2andy.com', 'mail2anesthesiologist.com', 'mail2angela.com', 'mail2angola.com', 'mail2ann.com', 'mail2anna.com', 'mail2anne.com', 'mail2anthony.com', 'mail2anything.com', 'mail2aphrodite.com', 'mail2apollo.com', 'mail2april.com', 'mail2aquarius.com', 'mail2arabia.com', 'mail2arabic.com', 'mail2architect.com', 'mail2ares.com', 'mail2argentina.com', 'mail2aries.com', 'mail2arizona.com', 'mail2arkansas.com', 'mail2armenia.com', 'mail2army.com', 'mail2arnold.com', 'mail2art.com', 'mail2artemus.com', 'mail2arthur.com', 'mail2artist.com', 'mail2ashley.com', 'mail2ask.com', 'mail2astronomer.com', 'mail2athena.com', 'mail2athlete.com', 'mail2atlas.com', 'mail2atom.com', 'mail2attitude.com', 'mail2auction.com', 'mail2aunt.com', 'mail2australia.com', 'mail2austria.com', 'mail2azerbaijan.com', 'mail2baby.com', 'mail2bahamas.com', 'mail2bahrain.com', 'mail2ballerina.com', 'mail2ballplayer.com', 'mail2band.com', 'mail2bangladesh.com', 'mail2bank.com', 'mail2banker.com', 'mail2bankrupt.com', 'mail2baptist.com', 'mail2bar.com', 'mail2barbados.com', 'mail2barbara.com', 'mail2barter.com', 'mail2basketball.com', 'mail2batter.com', 'mail2beach.com', 'mail2beast.com', 'mail2beatles.com', 'mail2beauty.com', 'mail2becky.com', 'mail2beijing.com', 'mail2belgium.com', 'mail2belize.com', 'mail2ben.com', 'mail2bernard.com', 'mail2beth.com', 'mail2betty.com', 'mail2beverly.com', 'mail2beyond.com', 'mail2biker.com', 'mail2bill.com', 'mail2billionaire.com', 'mail2billy.com', 'mail2bio.com', 'mail2biologist.com', 'mail2black.com', 'mail2blackbelt.com', 'mail2blake.com', 'mail2blind.com', 'mail2blonde.com', 'mail2blues.com', 'mail2bob.com', 'mail2bobby.com', 'mail2bolivia.com', 'mail2bombay.com', 'mail2bonn.com', 'mail2bookmark.com', 'mail2boreas.com', 'mail2bosnia.com', 'mail2boston.com', 'mail2botswana.com', 'mail2bradley.com', 'mail2brazil.com', 'mail2breakfast.com', 'mail2brian.com', 'mail2bride.com', 'mail2brittany.com', 'mail2broker.com', 'mail2brook.com', 'mail2bruce.com', 'mail2brunei.com', 'mail2brunette.com', 'mail2brussels.com', 'mail2bryan.com', 'mail2bug.com', 'mail2bulgaria.com', 'mail2business.com', 'mail2buy.com', 'mail2ca.com', 'mail2california.com', 'mail2calvin.com', 'mail2cambodia.com', 'mail2cameroon.com', 'mail2canada.com', 'mail2cancer.com', 'mail2capeverde.com', 'mail2capricorn.com', 'mail2cardinal.com', 'mail2cardiologist.com', 'mail2care.com', 'mail2caroline.com', 'mail2carolyn.com', 'mail2casey.com', 'mail2cat.com', 'mail2caterer.com', 'mail2cathy.com', 'mail2catlover.com', 'mail2catwalk.com', 'mail2cell.com', 'mail2chad.com', 'mail2champaign.com', 'mail2charles.com', 'mail2chef.com', 'mail2chemist.com', 'mail2cherry.com', 'mail2chicago.com', 'mail2chile.com', 'mail2china.com', 'mail2chinese.com', 'mail2chocolate.com', 'mail2christian.com', 'mail2christie.com', 'mail2christmas.com', 'mail2christy.com', 'mail2chuck.com', 'mail2cindy.com', 'mail2clark.com', 'mail2classifieds.com', 'mail2claude.com', 'mail2cliff.com', 'mail2clinic.com', 'mail2clint.com', 'mail2close.com', 'mail2club.com', 'mail2coach.com', 'mail2coastguard.com', 'mail2colin.com', 'mail2college.com', 'mail2colombia.com', 'mail2color.com', 'mail2colorado.com', 'mail2columbia.com', 'mail2comedian.com', 'mail2composer.com', 'mail2computer.com', 'mail2computers.com', 'mail2concert.com', 'mail2congo.com', 'mail2connect.com', 'mail2connecticut.com', 'mail2consultant.com', 'mail2convict.com', 'mail2cook.com', 'mail2cool.com', 'mail2cory.com', 'mail2costarica.com', 'mail2country.com', 'mail2courtney.com', 'mail2cowboy.com', 'mail2cowgirl.com', 'mail2craig.com', 'mail2crave.com', 'mail2crazy.com', 'mail2create.com', 'mail2croatia.com', 'mail2cry.com', 'mail2crystal.com', 'mail2cuba.com', 'mail2culture.com', 'mail2curt.com', 'mail2customs.com', 'mail2cute.com', 'mail2cutey.com', 'mail2cynthia.com', 'mail2cyprus.com', 'mail2czechrepublic.com', 'mail2dad.com', 'mail2dale.com', 'mail2dallas.com', 'mail2dan.com', 'mail2dana.com', 'mail2dance.com', 'mail2dancer.com', 'mail2danielle.com', 'mail2danny.com', 'mail2darlene.com', 'mail2darling.com', 'mail2darren.com', 'mail2daughter.com', 'mail2dave.com', 'mail2dawn.com', 'mail2dc.com', 'mail2dealer.com', 'mail2deanna.com', 'mail2dearest.com', 'mail2debbie.com', 'mail2debby.com', 'mail2deer.com', 'mail2delaware.com', 'mail2delicious.com', 'mail2demeter.com', 'mail2democrat.com', 'mail2denise.com', 'mail2denmark.com', 'mail2dennis.com', 'mail2dentist.com', 'mail2derek.com', 'mail2desert.com', 'mail2devoted.com', 'mail2devotion.com', 'mail2diamond.com', 'mail2diana.com', 'mail2diane.com', 'mail2diehard.com', 'mail2dilemma.com', 'mail2dillon.com', 'mail2dinner.com', 'mail2dinosaur.com', 'mail2dionysos.com', 'mail2diplomat.com', 'mail2director.com', 'mail2dirk.com', 'mail2disco.com', 'mail2dive.com', 'mail2diver.com', 'mail2divorced.com', 'mail2djibouti.com', 'mail2doctor.com', 'mail2doglover.com', 'mail2dominic.com', 'mail2dominica.com', 'mail2dominicanrepublic.com', 'mail2don.com', 'mail2donald.com', 'mail2donna.com', 'mail2doris.com', 'mail2dorothy.com', 'mail2doug.com', 'mail2dough.com', 'mail2douglas.com', 'mail2dow.com', 'mail2downtown.com', 'mail2dream.com', 'mail2dreamer.com', 'mail2dude.com', 'mail2dustin.com', 'mail2dyke.com', 'mail2dylan.com', 'mail2earl.com', 'mail2earth.com', 'mail2eastend.com', 'mail2eat.com', 'mail2economist.com', 'mail2ecuador.com', 'mail2eddie.com', 'mail2edgar.com', 'mail2edwin.com', 'mail2egypt.com', 'mail2electron.com', 'mail2eli.com', 'mail2elizabeth.com', 'mail2ellen.com', 'mail2elliot.com', 'mail2elsalvador.com', 'mail2elvis.com', 'mail2emergency.com', 'mail2emily.com', 'mail2engineer.com', 'mail2english.com', 'mail2environmentalist.com', 'mail2eos.com', 'mail2eric.com', 'mail2erica.com', 'mail2erin.com', 'mail2erinyes.com', 'mail2eris.com', 'mail2eritrea.com', 'mail2ernie.com', 'mail2eros.com', 'mail2estonia.com', 'mail2ethan.com', 'mail2ethiopia.com', 'mail2eu.com', 'mail2europe.com', 'mail2eurus.com', 'mail2eva.com', 'mail2evan.com', 'mail2evelyn.com', 'mail2everything.com', 'mail2exciting.com', 'mail2expert.com', 'mail2fairy.com', 'mail2faith.com', 'mail2fanatic.com', 'mail2fancy.com', 'mail2fantasy.com', 'mail2farm.com', 'mail2farmer.com', 'mail2fashion.com', 'mail2fat.com', 'mail2feeling.com', 'mail2female.com', 'mail2fever.com', 'mail2fighter.com', 'mail2fiji.com', 'mail2filmfestival.com', 'mail2films.com', 'mail2finance.com', 'mail2finland.com', 'mail2fireman.com', 'mail2firm.com', 'mail2fisherman.com', 'mail2flexible.com', 'mail2florence.com', 'mail2florida.com', 'mail2floyd.com', 'mail2fly.com', 'mail2fond.com', 'mail2fondness.com', 'mail2football.com', 'mail2footballfan.com', 'mail2found.com', 'mail2france.com', 'mail2frank.com', 'mail2frankfurt.com', 'mail2franklin.com', 'mail2fred.com', 'mail2freddie.com', 'mail2free.com', 'mail2freedom.com', 'mail2french.com', 'mail2freudian.com', 'mail2friendship.com', 'mail2from.com', 'mail2fun.com', 'mail2gabon.com', 'mail2gabriel.com', 'mail2gail.com', 'mail2galaxy.com', 'mail2gambia.com', 'mail2games.com', 'mail2gary.com', 'mail2gavin.com', 'mail2gemini.com', 'mail2gene.com', 'mail2genes.com', 'mail2geneva.com', 'mail2george.com', 'mail2georgia.com', 'mail2gerald.com', 'mail2german.com', 'mail2germany.com', 'mail2ghana.com', 'mail2gilbert.com', 'mail2gina.com', 'mail2girl.com', 'mail2glen.com', 'mail2gloria.com', 'mail2goddess.com', 'mail2gold.com', 'mail2golfclub.com', 'mail2golfer.com', 'mail2gordon.com', 'mail2government.com', 'mail2grab.com', 'mail2grace.com', 'mail2graham.com', 'mail2grandma.com', 'mail2grandpa.com', 'mail2grant.com', 'mail2greece.com', 'mail2green.com', 'mail2greg.com', 'mail2grenada.com', 'mail2gsm.com', 'mail2guard.com', 'mail2guatemala.com', 'mail2guy.com', 'mail2hades.com', 'mail2haiti.com', 'mail2hal.com', 'mail2handhelds.com', 'mail2hank.com', 'mail2hannah.com', 'mail2harold.com', 'mail2harry.com', 'mail2hawaii.com', 'mail2headhunter.com', 'mail2heal.com', 'mail2heather.com', 'mail2heaven.com', 'mail2hebe.com', 'mail2hecate.com', 'mail2heidi.com', 'mail2helen.com', 'mail2hell.com', 'mail2help.com', 'mail2helpdesk.com', 'mail2henry.com', 'mail2hephaestus.com', 'mail2hera.com', 'mail2hercules.com', 'mail2herman.com', 'mail2hermes.com', 'mail2hespera.com', 'mail2hestia.com', 'mail2highschool.com', 'mail2hindu.com', 'mail2hip.com', 'mail2hiphop.com', 'mail2holland.com', 'mail2holly.com', 'mail2hollywood.com', 'mail2homer.com', 'mail2honduras.com', 'mail2honey.com', 'mail2hongkong.com', 'mail2hope.com', 'mail2horse.com', 'mail2hot.com', 'mail2hotel.com', 'mail2houston.com', 'mail2howard.com', 'mail2hugh.com', 'mail2human.com', 'mail2hungary.com', 'mail2hungry.com', 'mail2hygeia.com', 'mail2hyperspace.com', 'mail2hypnos.com', 'mail2ian.com', 'mail2ice-cream.com', 'mail2iceland.com', 'mail2idaho.com', 'mail2idontknow.com', 'mail2illinois.com', 'mail2imam.com', 'mail2in.com', 'mail2india.com', 'mail2indian.com', 'mail2indiana.com', 'mail2indonesia.com', 'mail2infinity.com', 'mail2intense.com', 'mail2iowa.com', 'mail2iran.com', 'mail2iraq.com', 'mail2ireland.com', 'mail2irene.com', 'mail2iris.com', 'mail2irresistible.com', 'mail2irving.com', 'mail2irwin.com', 'mail2isaac.com', 'mail2israel.com', 'mail2italian.com', 'mail2italy.com', 'mail2jackie.com', 'mail2jacob.com', 'mail2jail.com', 'mail2jaime.com', 'mail2jake.com', 'mail2jamaica.com', 'mail2james.com', 'mail2jamie.com', 'mail2jan.com', 'mail2jane.com', 'mail2janet.com', 'mail2janice.com', 'mail2japan.com', 'mail2japanese.com', 'mail2jasmine.com', 'mail2jason.com', 'mail2java.com', 'mail2jay.com', 'mail2jazz.com', 'mail2jed.com', 'mail2jeffrey.com', 'mail2jennifer.com', 'mail2jenny.com', 'mail2jeremy.com', 'mail2jerry.com', 'mail2jessica.com', 'mail2jessie.com', 'mail2jesus.com', 'mail2jew.com', 'mail2jeweler.com', 'mail2jim.com', 'mail2jimmy.com', 'mail2joan.com', 'mail2joann.com', 'mail2joanna.com', 'mail2jody.com', 'mail2joe.com', 'mail2joel.com', 'mail2joey.com', 'mail2john.com', 'mail2join.com', 'mail2jon.com', 'mail2jonathan.com', 'mail2jones.com', 'mail2jordan.com', 'mail2joseph.com', 'mail2josh.com', 'mail2joy.com', 'mail2juan.com', 'mail2judge.com', 'mail2judy.com', 'mail2juggler.com', 'mail2julian.com', 'mail2julie.com', 'mail2jumbo.com', 'mail2junk.com', 'mail2justin.com', 'mail2justme.com', 'mail2kansas.com', 'mail2karate.com', 'mail2karen.com', 'mail2karl.com', 'mail2karma.com', 'mail2kathleen.com', 'mail2kathy.com', 'mail2katie.com', 'mail2kay.com', 'mail2kazakhstan.com', 'mail2keen.com', 'mail2keith.com', 'mail2kelly.com', 'mail2kelsey.com', 'mail2ken.com', 'mail2kendall.com', 'mail2kennedy.com', 'mail2kenneth.com', 'mail2kenny.com', 'mail2kentucky.com', 'mail2kenya.com', 'mail2kerry.com', 'mail2kevin.com', 'mail2kim.com', 'mail2kimberly.com', 'mail2king.com', 'mail2kirk.com', 'mail2kiss.com', 'mail2kosher.com', 'mail2kristin.com', 'mail2kurt.com', 'mail2kuwait.com', 'mail2kyle.com', 'mail2kyrgyzstan.com', 'mail2la.com', 'mail2lacrosse.com', 'mail2lance.com', 'mail2lao.com', 'mail2larry.com', 'mail2latvia.com', 'mail2laugh.com', 'mail2laura.com', 'mail2lauren.com', 'mail2laurie.com', 'mail2lawrence.com', 'mail2lawyer.com', 'mail2lebanon.com', 'mail2lee.com', 'mail2leo.com', 'mail2leon.com', 'mail2leonard.com', 'mail2leone.com', 'mail2leslie.com', 'mail2letter.com', 'mail2liberia.com', 'mail2libertarian.com', 'mail2libra.com', 'mail2libya.com', 'mail2liechtenstein.com', 'mail2life.com', 'mail2linda.com', 'mail2linux.com', 'mail2lionel.com', 'mail2lipstick.com', 'mail2liquid.com', 'mail2lisa.com', 'mail2lithuania.com', 'mail2litigator.com', 'mail2liz.com', 'mail2lloyd.com', 'mail2lois.com', 'mail2lola.com', 'mail2london.com', 'mail2looking.com', 'mail2lori.com', 'mail2lost.com', 'mail2lou.com', 'mail2louis.com', 'mail2louisiana.com', 'mail2lovable.com', 'mail2love.com', 'mail2lucky.com', 'mail2lucy.com', 'mail2lunch.com', 'mail2lust.com', 'mail2luxembourg.com', 'mail2luxury.com', 'mail2lyle.com', 'mail2lynn.com', 'mail2madagascar.com', 'mail2madison.com', 'mail2madrid.com', 'mail2maggie.com', 'mail2mail4.com', 'mail2maine.com', 'mail2malawi.com', 'mail2malaysia.com', 'mail2maldives.com', 'mail2mali.com', 'mail2malta.com', 'mail2mambo.com', 'mail2man.com', 'mail2mandy.com', 'mail2manhunter.com', 'mail2mankind.com', 'mail2many.com', 'mail2marc.com', 'mail2marcia.com', 'mail2margaret.com', 'mail2margie.com', 'mail2marhaba.com', 'mail2maria.com', 'mail2marilyn.com', 'mail2marines.com', 'mail2mark.com', 'mail2marriage.com', 'mail2married.com', 'mail2marries.com', 'mail2mars.com', 'mail2marsha.com', 'mail2marshallislands.com', 'mail2martha.com', 'mail2martin.com', 'mail2marty.com', 'mail2marvin.com', 'mail2mary.com', 'mail2maryland.com', 'mail2mason.com', 'mail2massachusetts.com', 'mail2matt.com', 'mail2matthew.com', 'mail2maurice.com', 'mail2mauritania.com', 'mail2mauritius.com', 'mail2max.com', 'mail2maxwell.com', 'mail2maybe.com', 'mail2mba.com', 'mail2me4u.com', 'mail2mechanic.com', 'mail2medieval.com', 'mail2megan.com', 'mail2mel.com', 'mail2melanie.com', 'mail2melissa.com', 'mail2melody.com', 'mail2member.com', 'mail2memphis.com', 'mail2methodist.com', 'mail2mexican.com', 'mail2mexico.com', 'mail2mgz.com', 'mail2miami.com', 'mail2michael.com', 'mail2michelle.com', 'mail2michigan.com', 'mail2mike.com', 'mail2milan.com', 'mail2milano.com', 'mail2mildred.com', 'mail2milkyway.com', 'mail2millennium.com', 'mail2millionaire.com', 'mail2milton.com', 'mail2mime.com', 'mail2mindreader.com', 'mail2mini.com', 'mail2minister.com', 'mail2minneapolis.com', 'mail2minnesota.com', 'mail2miracle.com', 'mail2missionary.com', 'mail2mississippi.com', 'mail2missouri.com', 'mail2mitch.com', 'mail2model.com', 'mail2moldova.commail2molly.com', 'mail2mom.com', 'mail2monaco.com', 'mail2money.com', 'mail2mongolia.com', 'mail2monica.com', 'mail2montana.com', 'mail2monty.com', 'mail2moon.com', 'mail2morocco.com', 'mail2morpheus.com', 'mail2mors.com', 'mail2moscow.com', 'mail2moslem.com', 'mail2mouseketeer.com', 'mail2movies.com', 'mail2mozambique.com', 'mail2mp3.com', 'mail2mrright.com', 'mail2msright.com', 'mail2museum.com', 'mail2music.com', 'mail2musician.com', 'mail2muslim.com', 'mail2my.com', 'mail2myboat.com', 'mail2mycar.com', 'mail2mycell.com', 'mail2mygsm.com', 'mail2mylaptop.com', 'mail2mymac.com', 'mail2mypager.com', 'mail2mypalm.com', 'mail2mypc.com', 'mail2myphone.com', 'mail2myplane.com', 'mail2namibia.com', 'mail2nancy.com', 'mail2nasdaq.com', 'mail2nathan.com', 'mail2nauru.com', 'mail2navy.com', 'mail2neal.com', 'mail2nebraska.com', 'mail2ned.com', 'mail2neil.com', 'mail2nelson.com', 'mail2nemesis.com', 'mail2nepal.com', 'mail2netherlands.com', 'mail2network.com', 'mail2nevada.com', 'mail2newhampshire.com', 'mail2newjersey.com', 'mail2newmexico.com', 'mail2newyork.com', 'mail2newzealand.com', 'mail2nicaragua.com', 'mail2nick.com', 'mail2nicole.com', 'mail2niger.com', 'mail2nigeria.com', 'mail2nike.com', 'mail2no.com', 'mail2noah.com', 'mail2noel.com', 'mail2noelle.com', 'mail2normal.com', 'mail2norman.com', 'mail2northamerica.com', 'mail2northcarolina.com', 'mail2northdakota.com', 'mail2northpole.com', 'mail2norway.com', 'mail2notus.com', 'mail2noway.com', 'mail2nowhere.com', 'mail2nuclear.com', 'mail2nun.com', 'mail2ny.com', 'mail2oasis.com', 'mail2oceanographer.com', 'mail2ohio.com', 'mail2ok.com', 'mail2oklahoma.com', 'mail2oliver.com', 'mail2oman.com', 'mail2one.com', 'mail2onfire.com', 'mail2online.com', 'mail2oops.com', 'mail2open.com', 'mail2ophthalmologist.com', 'mail2optometrist.com', 'mail2oregon.com', 'mail2oscars.com', 'mail2oslo.com', 'mail2painter.com', 'mail2pakistan.com', 'mail2palau.com', 'mail2pan.com', 'mail2panama.com', 'mail2paraguay.com', 'mail2paralegal.com', 'mail2paris.com', 'mail2park.com', 'mail2parker.com', 'mail2party.com', 'mail2passion.com', 'mail2pat.com', 'mail2patricia.com', 'mail2patrick.com', 'mail2patty.com', 'mail2paul.com', 'mail2paula.com', 'mail2pay.com', 'mail2peace.com', 'mail2pediatrician.com', 'mail2peggy.com', 'mail2pennsylvania.com', 'mail2perry.com', 'mail2persephone.com', 'mail2persian.com', 'mail2peru.com', 'mail2pete.com', 'mail2peter.com', 'mail2pharmacist.com', 'mail2phil.com', 'mail2philippines.com', 'mail2phoenix.com', 'mail2phonecall.com', 'mail2phyllis.com', 'mail2pickup.com', 'mail2pilot.com', 'mail2pisces.com', 'mail2planet.com', 'mail2platinum.com', 'mail2plato.com', 'mail2pluto.com', 'mail2pm.com', 'mail2podiatrist.com', 'mail2poet.com', 'mail2poland.com', 'mail2policeman.com', 'mail2policewoman.com', 'mail2politician.com', 'mail2pop.com', 'mail2pope.com', 'mail2popular.com', 'mail2portugal.com', 'mail2poseidon.com', 'mail2potatohead.com', 'mail2power.com', 'mail2presbyterian.com', 'mail2president.com', 'mail2priest.com', 'mail2prince.com', 'mail2princess.com', 'mail2producer.com', 'mail2professor.com', 'mail2protect.com', 'mail2psychiatrist.com', 'mail2psycho.com', 'mail2psychologist.com', 'mail2qatar.com', 'mail2queen.com', 'mail2rabbi.com', 'mail2race.com', 'mail2racer.com', 'mail2rachel.com', 'mail2rage.com', 'mail2rainmaker.com', 'mail2ralph.com', 'mail2randy.com', 'mail2rap.com', 'mail2rare.com', 'mail2rave.com', 'mail2ray.com', 'mail2raymond.com', 'mail2realtor.com', 'mail2rebecca.com', 'mail2recruiter.com', 'mail2recycle.com', 'mail2redhead.com', 'mail2reed.com', 'mail2reggie.com', 'mail2register.com', 'mail2rent.com', 'mail2republican.com', 'mail2resort.com', 'mail2rex.com', 'mail2rhodeisland.com', 'mail2rich.com', 'mail2richard.com', 'mail2ricky.com', 'mail2ride.com', 'mail2riley.com', 'mail2rita.com', 'mail2rob.com', 'mail2robert.com', 'mail2roberta.com', 'mail2robin.com', 'mail2rock.com', 'mail2rocker.com', 'mail2rod.com', 'mail2rodney.com', 'mail2romania.com', 'mail2rome.com', 'mail2ron.com', 'mail2ronald.com', 'mail2ronnie.com', 'mail2rose.com', 'mail2rosie.com', 'mail2roy.com', 'mail2rudy.com', 'mail2rugby.com', 'mail2runner.com', 'mail2russell.com', 'mail2russia.com', 'mail2russian.com', 'mail2rusty.com', 'mail2ruth.com', 'mail2rwanda.com', 'mail2ryan.com', 'mail2sa.com', 'mail2sabrina.com', 'mail2safe.com', 'mail2sagittarius.com', 'mail2sail.com', 'mail2sailor.com', 'mail2sal.com', 'mail2salaam.com', 'mail2sam.com', 'mail2samantha.com', 'mail2samoa.com', 'mail2samurai.com', 'mail2sandra.com', 'mail2sandy.com', 'mail2sanfrancisco.com', 'mail2sanmarino.com', 'mail2santa.com', 'mail2sara.com', 'mail2sarah.com', 'mail2sat.com', 'mail2saturn.com', 'mail2saudi.com', 'mail2saudiarabia.com', 'mail2save.com', 'mail2savings.com', 'mail2school.com', 'mail2scientist.com', 'mail2scorpio.com', 'mail2scott.com', 'mail2sean.com', 'mail2search.com', 'mail2seattle.com', 'mail2secretagent.com', 'mail2senate.com', 'mail2senegal.com', 'mail2sensual.com', 'mail2seth.com', 'mail2sevenseas.com', 'mail2sexy.com', 'mail2seychelles.com', 'mail2shane.com', 'mail2sharon.com', 'mail2shawn.com', 'mail2ship.com', 'mail2shirley.com', 'mail2shoot.com', 'mail2shuttle.com', 'mail2sierraleone.com', 'mail2simon.com', 'mail2singapore.com', 'mail2single.com', 'mail2site.com', 'mail2skater.com', 'mail2skier.com', 'mail2sky.com', 'mail2sleek.com', 'mail2slim.com', 'mail2slovakia.com', 'mail2slovenia.com', 'mail2smile.com', 'mail2smith.com', 'mail2smooth.com', 'mail2soccer.com', 'mail2soccerfan.com', 'mail2socialist.com', 'mail2soldier.com', 'mail2somalia.com', 'mail2son.com', 'mail2song.com', 'mail2sos.com', 'mail2sound.com', 'mail2southafrica.com', 'mail2southamerica.com', 'mail2southcarolina.com', 'mail2southdakota.com', 'mail2southkorea.com', 'mail2southpole.com', 'mail2spain.com', 'mail2spanish.com', 'mail2spare.com', 'mail2spectrum.com', 'mail2splash.com', 'mail2sponsor.com', 'mail2sports.com', 'mail2srilanka.com', 'mail2stacy.com', 'mail2stan.com', 'mail2stanley.com', 'mail2star.com', 'mail2state.com', 'mail2stephanie.com', 'mail2steve.com', 'mail2steven.com', 'mail2stewart.com', 'mail2stlouis.com', 'mail2stock.com', 'mail2stockholm.com', 'mail2stockmarket.com', 'mail2storage.com', 'mail2store.com', 'mail2strong.com', 'mail2student.com', 'mail2studio.com', 'mail2studio54.com', 'mail2stuntman.com', 'mail2subscribe.com', 'mail2sudan.com', 'mail2superstar.com', 'mail2surfer.com', 'mail2suriname.com', 'mail2susan.com', 'mail2suzie.com', 'mail2swaziland.com', 'mail2sweden.com', 'mail2sweetheart.com', 'mail2swim.com', 'mail2swimmer.com', 'mail2swiss.com', 'mail2switzerland.com', 'mail2sydney.com', 'mail2sylvia.com', 'mail2syria.com', 'mail2taboo.com', 'mail2taiwan.com', 'mail2tajikistan.com', 'mail2tammy.com', 'mail2tango.com', 'mail2tanya.com', 'mail2tanzania.com', 'mail2tara.com', 'mail2taurus.com', 'mail2taxi.com', 'mail2taxidermist.com', 'mail2taylor.com', 'mail2taz.com', 'mail2teacher.com', 'mail2technician.com', 'mail2ted.com', 'mail2telephone.com', 'mail2teletubbie.com', 'mail2tenderness.com', 'mail2tennessee.com', 'mail2tennis.com', 'mail2tennisfan.com', 'mail2terri.com', 'mail2terry.com', 'mail2test.com', 'mail2texas.com', 'mail2thailand.com', 'mail2therapy.com', 'mail2think.com', 'mail2tickets.com', 'mail2tiffany.com', 'mail2tim.com', 'mail2time.com', 'mail2timothy.com', 'mail2tina.com', 'mail2titanic.com', 'mail2toby.com', 'mail2todd.com', 'mail2togo.com', 'mail2tom.com', 'mail2tommy.com', 'mail2tonga.com', 'mail2tony.com', 'mail2touch.com', 'mail2tourist.com', 'mail2tracey.com', 'mail2tracy.com', 'mail2tramp.com', 'mail2travel.com', 'mail2traveler.com', 'mail2travis.com', 'mail2trekkie.com', 'mail2trex.com', 'mail2triallawyer.com', 'mail2trick.com', 'mail2trillionaire.com', 'mail2troy.com', 'mail2truck.com', 'mail2trump.com', 'mail2try.com', 'mail2tunisia.com', 'mail2turbo.com', 'mail2turkey.com', 'mail2turkmenistan.com', 'mail2tv.com', 'mail2tycoon.com', 'mail2tyler.com', 'mail2u4me.com', 'mail2uae.com', 'mail2uganda.com', 'mail2uk.com', 'mail2ukraine.com', 'mail2uncle.com', 'mail2unsubscribe.com', 'mail2uptown.com', 'mail2uruguay.com', 'mail2usa.com', 'mail2utah.com', 'mail2uzbekistan.com', 'mail2v.com', 'mail2vacation.com', 'mail2valentines.com', 'mail2valerie.com', 'mail2valley.com', 'mail2vamoose.com', 'mail2vanessa.com', 'mail2vanuatu.com', 'mail2venezuela.com', 'mail2venous.com', 'mail2venus.com', 'mail2vermont.com', 'mail2vickie.com', 'mail2victor.com', 'mail2victoria.com', 'mail2vienna.com', 'mail2vietnam.com', 'mail2vince.com', 'mail2virginia.com', 'mail2virgo.com', 'mail2visionary.com', 'mail2vodka.com', 'mail2volleyball.com', 'mail2waiter.com', 'mail2wallstreet.com', 'mail2wally.com', 'mail2walter.com', 'mail2warren.com', 'mail2washington.com', 'mail2wave.com', 'mail2way.com', 'mail2waycool.com', 'mail2wayne.com', 'mail2webmaster.com', 'mail2webtop.com', 'mail2webtv.com', 'mail2weird.com', 'mail2wendell.com', 'mail2wendy.com', 'mail2westend.com', 'mail2westvirginia.com', 'mail2whether.com', 'mail2whip.com', 'mail2white.com', 'mail2whitehouse.com', 'mail2whitney.com', 'mail2why.com', 'mail2wilbur.com', 'mail2wild.com', 'mail2willard.com', 'mail2willie.com', 'mail2wine.com', 'mail2winner.com', 'mail2wired.com', 'mail2wisconsin.com', 'mail2woman.com', 'mail2wonder.com', 'mail2world.com', 'mail2worship.com', 'mail2wow.com', 'mail2www.com', 'mail2wyoming.com', 'mail2xfiles.com', 'mail2xox.com', 'mail2yachtclub.com', 'mail2yahalla.com', 'mail2yemen.com', 'mail2yes.com', 'mail2yugoslavia.com', 'mail2zack.com', 'mail2zambia.com', 'mail2zenith.com', 'mail2zephir.com', 'mail2zeus.com', 'mail2zipper.com', 'mail2zoo.com', 'mail2zoologist.com', 'mail2zurich.com', 'mail3000.com', 'mail333.com', 'mailandftp.com', 'mailandnews.com', 'mailas.com', 'mailasia.com', 'mailbolt.com', 'mailbomb.net', 'mailboom.com', 'mailbox.as', 'mailbox.co.za', 'mailbox.gr', 'mailbox.hu', 'mailbr.com.br', 'mailc.net', 'mailcan.com', 'mailcc.com', 'mailchoose.co', 'mailcity.com', 'mailclub.fr', 'mailclub.net', 'mailexcite.com', 'mailforce.net', 'mailftp.com', 'mailgate.gr', 'mailgenie.net', 'mailhaven.com', 'mailhood.com', 'mailingweb.com', 'mailisent.com', 'mailite.com', 'mailme.dk', 'mailmight.com', 'mailmij.nl', 'mailnew.com', 'mailops.com', 'mailoye.com', 'mailpanda.com', 'mailpost.zzn.com', 'mailpride.com', 'mailpuppy.com', 'mailroom.com', 'mailru.com', 'mailsent.net', 'mailshuttle.com', 'mailstart.com', 'mailstartplus.com', 'mailsurf.com', 'mailtag.com', 'mailto.de', 'mailup.net', 'mailwire.com', 'maktoob.com', 'malayalamtelevision.net', 'manager.de', 'mantrafreenet.com', 'mantramail.com', 'mantraonline.com', 'marchmail.com', 'mariah-carey.ml.org', 'mariahc.com', 'marijuana.nl', 'marketing.lu', 'married-not.com', 'marsattack.com', 'martindalemail.com', 'masrawy.com', 'matmail.com', 'mauimail.com', 'mauritius.com', 'maxleft.com', 'maxmail.co.uk', 'mbox.com.au', 'mchsi.com', 'mciworldcom.net', 'me-mail.hu', 'me.com', 'medical.net.au', 'medione.net', 'medmail.com', 'medscape.com', 'meetingmall.com', 'megago.com', 'megamail.pt', 'megapathdsl.net', 'megapoint.com', 'mehrani.com', 'mehtaweb.com', 'mekhong.com', 'melodymail.com', 'meloo.com', 'members.student.com', 'message.hu', 'messages.to', 'metacrawler.com', 'metalfan.com', 'metta.lk', 'miatadriver.com', 'miesto.sk', 'mighty.co.za', 'miho-nakayama.com', 'mikrotamanet.com', 'millionaireintraining.com', 'milmail.com', 'mindless.com', 'mindspring.com', 'mini-mail.com', 'misery.net', 'mittalweb.com', 'mixmail.com', 'mjfrogmail.com', 'ml1.net', 'mobilbatam.com', 'mochamail.com', 'mohammed.com', 'moldova.cc', 'moldova.com', 'moldovacc.com', 'money.net', 'montevideo.com.uy', 'moonman.com', 'moose-mail.com', 'mortaza.com', 'mosaicfx.com', 'most-wanted.com', 'mostlysunny.com', 'motormania.com', 'movemail.com', 'movieluver.com', 'mp4.it', 'mr-potatohead.com', 'mrpost.com', 'mscold.com', 'msgbox.com', 'msn.com', 'mttestdriver.com', 'mundomail.net', 'munich.com', 'music.com', 'musician.org', 'musicscene.org', 'mybox.it', 'mycabin.com', 'mycampus.com', 'mycity.com', 'mycool.com', 'mydomain.com', 'mydotcomaddress.com', 'myfamily.com', 'mygo.com', 'myiris.com', 'mynamedot.com', 'mynetaddress.com', 'myownemail.com', 'myownfriends.com', 'mypad.com', 'mypersonalemail.com', 'myplace.com', 'myrealbox.com', 'myremarq.com', 'myself.com', 'mystupidjob.com', 'mythirdage.com', 'myway.com', 'myworldmail.com', 'n2.com', 'n2business.com', 'n2mail.com', 'n2software.com', 'nabc.biz', 'nafe.com', 'nagpal.net', 'nakedgreens.com', 'name.com', 'nameplanet.com', 'nandomail.com', 'naplesnews.net', 'naseej.com', 'nate.com', 'nativestar.net', 'nativeweb.net', 'naui.net', 'nauticom.net', 'naver.com', 'navigator.lv', 'navy.org', 'naz.com', 'nchoicemail.com', 'neeva.net', 'nemra1.com', 'nenter.com', 'neo.rr.com', 'nervhq.org', 'net-pager.net', 'net4b.pt', 'net4you.at', 'netbounce.com', 'netbroadcaster.com', 'netby.dk', 'netcenter-vn.net', 'netcom.ca', 'netcom.com', 'netcourrier.com', 'netexecutive.com', 'netexpressway.com', 'netgenie.com', 'netian.com', 'netizen.com.ar', 'netlane.com', 'netlimit.com', 'netmanor.com', 'netmongol.com', 'netnet.com.sg', 'netpiper.com', 'netposta.net', 'netradiomail.com', 'netralink.com', 'netscape.com', 'netscape.net', 'netscapeonline.co.uk', 'netsero.net', 'netspeedway.com', 'netsquare.com', 'netster.com', 'nettaxi.com', 'netzero.com', 'netzero.net', 'neuf.fr', 'newmail.com', 'newmail.net', 'newmail.ru', 'newyork.com', 'nexxmail.com', 'nfmail.com', 'nhmail.com', 'nicebush.com', 'nicegal.com', 'nicholastse.net', 'nicolastse.com', 'nightmail.com', 'nikopage.com', 'nimail.com', 'nirvanafan.com', 'noavar.com', 'norika-fujiwara.com', 'norikomail.com', 'northgates.net', 'nospammail.net', 'ntlworld.com', 'ntscan.com', 'ny.com', 'nyc.com', 'nycmail.com', 'nzoomail.com', 'o-tay.com', 'o2.co.uk', 'oaklandas-fan.com', 'oceanfree.net', 'oddpost.com', 'odmail.com', 'office-email.com', 'officedomain.com', 'offroadwarrior.com', 'oi.com.br', 'oicexchange.com', 'okbank.com', 'okhuman.com', 'okmad.com', 'okmagic.com', 'okname.net', 'okuk.com', 'oldies1041.com', 'oldies104mail.com', 'ole.com', 'olemail.com', 'olg.com', 'olympist.net', 'omaninfo.com', 'onebox.com', 'onenet.com.ar', 'onet.pl', 'oninet.pt', 'online.de', 'online.ie', 'onlinewiz.com', 'onmilwaukee.com', 'onobox.com', 'onvillage.com', 'operafan.com', 'operamail.com', 'optician.com', 'optonline.net', 'optusnet.com.au', 'orange.fr', 'orange.net', 'orbitel.bg', 'orgmail.net', 'osite.com.br', 'oso.com', 'otakumail.com', 'our-computer.com', 'our-office.com', 'our.st', 'ourbrisbane.com', 'ournet.md', 'outel.com', 'outgun.com', 'outlook.com', 'outlook.com.br', 'over-the-rainbow.com', 'ownmail.net', 'ozbytes.net.au', 'ozemail.com.au', 'pacbell.net', 'pacific-re.com', 'packersfan.com', 'pagina.de', 'pagons.org', 'pakistanoye.com', 'palestinemail.com', 'parkjiyoon.com', 'parrot.com', 'parsmail.com', 'partlycloudy.com', 'partynight.at', 'parvazi.com', 'passwordmail.com', 'pathfindermail.com', 'patmedia.net', 'pconnections.net', 'pcpostal.com', 'pcsrock.com', 'peachworld.com', 'pediatrician.com', 'pemail.net', 'penpen.com', 'peoplepc.com', 'peopleweb.com', 'perfectmail.com', 'personal.ro', 'personales.com', 'petml.com', 'pettypool.com', 'pezeshkpour.com', 'phayze.com', 'phreaker.net', 'pickupman.com', 'picusnet.com', 'pigpig.net', 'pinoymail.com', 'pipeline.com', 'piracha.net', 'pisem.net', 'planet-mail.com', 'planet.nl', 'planetaccess.com', 'planetall.com', 'planetarymotion.net', 'planetdirect.com', 'planetearthinter.net', 'planetout.com', 'plasa.com', 'playersodds.com', 'playful.com', 'plusmail.com.br', 'pmail.net', 'pobox.com', 'pobox.hu', 'pobox.sk', 'pochta.ru', 'poczta.fm', 'poetic.com', 'polbox.com', 'policeoffice.com', 'pool-sharks.com', 'poond.com', 'popaccount.com', 'popmail.com', 'popsmail.com', 'popstar.com', 'populus.net', 'portableoffice.com', 'portugalmail.com', 'portugalmail.pt', 'portugalnet.com', 'positive-thinking.com', 'post.com', 'post.cz', 'post.sk', 'posta.net', 'posta.ro', 'postaccesslite.com', 'postafree.com', 'postaweb.com', 'poste.it', 'postinbox.com', 'postino.ch', 'postmark.net', 'postmaster.co.uk', 'postpro.net', 'pousa.com', 'powerfan.com', 'praize.com', 'premiumservice.com', 'presidency.com', 'press.co.jp', 'priest.com', 'primposta.com', 'primposta.hu', 'pro.hu', 'probemail.com', 'prodigy.net', 'prodigy.net.mx', 'progetplus.it', 'programmer.net', 'programozo.hu', 'proinbox.com', 'project2k.com', 'prolaunch.com', 'promessage.com', 'prontomail.com', 'protonmail.com', 'psi.net', 'psv-supporter.com', 'ptd.net', 'public.usa.com', 'publicist.com', 'pulp-fiction.com', 'punkass.com', 'qatarmail.com', 'qis.net', 'qprfans.com', 'qq.com', 'qrio.com', 'quackquack.com', 'quakemail.com', 'qudsmail.com', 'quepasa.com', 'quickwebmail.com', 'quiklinks.com', 'quikmail.com', 'qwest.net', 'qwestoffice.net', 'r-o-o-t.com', 'r7.com', 'raakim.com', 'racedriver.com', 'racefanz.com', 'racingfan.com.au', 'racingmail.com', 'radicalz.com', 'ragingbull.com', 'rambler.ru', 'ranmamail.com', 'rastogi.net', 'ratt-n-roll.com', 'rattle-snake.com', 'ravearena.com', 'ravemail.com', 'razormail.com', 'rccgmail.org', 'rcn.com', 'realemail.net', 'reallyfast.biz', 'realradiomail.com', 'recycler.com', 'rediffmail.com', 'rediffmailpro.com', 'rednecks.com', 'redseven.de', 'redsfans.com', 'reggafan.com', 'registerednurses.com', 'repairman.com', 'reply.hu', 'representative.com', 'rescueteam.com', 'resumemail.com', 'rezai.com', 'richmondhill.com', 'rickymail.com', 'rin.ru', 'riopreto.com.br', 'rn.com', 'roadrunner.com', 'roanokemail.com', 'rock.com', 'rocketmail.com', 'rockfan.com', 'rodrun.com', 'rome.com', 'roosh.com', 'rotfl.com', 'roughnet.com', 'rr.com', 'rrohio.com', 'rsub.com', 'rubyridge.com', 'runbox.com', 'rushpost.com', 'ruttolibero.com', 'rvshop.com', 's-mail.com', 'sabreshockey.com', 'sacbeemail.com', 'safarimail.com', 'safe-mail.net', 'sagra.lu', 'sailormoon.com', 'saintly.com', 'saintmail.net', 'sale-sale-sale.com', 'salehi.net', 'samerica.com', 'samilan.net', 'sammimail.com', 'sanfranmail.com', 'sanook.com', 'sapo.pt', 'sativa.ro.org', 'saudia.com', 'sayhi.net', 'sbcglobal.net', 'scandalmail.com', 'schizo.com', 'schoolemail.com', 'schoolmail.com', 'schoolsucks.com', 'schweiz.org', 'sci.fi', 'science.com.au', 'scientist.com', 'scifianime.com', 'scottishmail.co.uk', 'scubadiving.com', 'seanet.com', 'searchwales.com', 'sebil.com', 'secret-police.com', 'secretservices.net', 'seductive.com', 'seekstoyboy.com', 'seguros.com.br', 'send.hu', 'sendme.cz', 'sent.com', 'sentrismail.com', 'serga.com.ar', 'servemymail.com', 'sesmail.com', 'sexmagnet.com', 'seznam.cz', 'sfr.fr', 'shahweb.net', 'shaniastuff.com', 'sharewaredevelopers.com', 'sharmaweb.com', 'shaw.ca', 'she.com', 'shootmail.com', 'shotgun.hu', 'shuf.com', 'sialkotcity.com', 'sialkotian.com', 'sialkotoye.com', 'sify.com', 'silkroad.net', 'sina.cn', 'sina.com', 'sinamail.com', 'singapore.com', 'singmail.com', 'singnet.com.sg', 'singpost.com', 'skafan.com', 'skim.com', 'skizo.hu', 'sky.com', 'skynet.be', 'slamdunkfan.com', 'slingshot.com', 'slo.net', 'slotter.com', 'smapxsmap.net', 'smileyface.comsmithemail.net', 'smoothmail.com', 'snail-mail.net', 'snail-mail.ney', 'snakemail.com', 'sndt.net', 'sneakemail.com', 'snet.net', 'snip.net', 'sniper.hu', 'snoopymail.com', 'snowboarding.com', 'snowdonia.net', 'socamail.com', 'socceramerica.net', 'soccermail.com', 'soccermomz.com', 'sociologist.com', 'softhome.net', 'sol.dk', 'soldier.hu', 'soon.com', 'soulfoodcookbook.com', 'sp.nl', 'space-bank.com', 'space-man.com', 'space-ship.com', 'space-travel.com', 'space.com', 'spaceart.com', 'spacebank.com', 'spacemart.com', 'spacetowns.com', 'spacewar.com', 'spamex.com', 'spartapiet.com', 'spazmail.com', 'speedemail.net', 'speedpost.net', 'speedrules.com', 'speedrulz.com', 'speedy.com.ar', 'spils.com', 'spinfinder.com', 'sportemail.com', 'sportsmail.com', 'sporttruckdriver.com', 'spray.no', 'spray.se', 'sprintmail.com', 'sprynet.com', 'spymac.com', 'srilankan.net', 'st-davids.net', 'stade.fr', 'stalag13.com', 'stargateradio.com', 'starmail.com', 'starmail.org', 'starmedia.com', 'starplace.com', 'starpower.net', 'starspath.com', 'start.com.au', 'starting-point.com', 'startrekmail.com', 'stealthmail.com', 'stockracer.com', 'stones.com', 'stopdropandroll.com', 'storksite.com', 'stribmail.com', 'strompost.com', 'strongguy.com', 'studentcenter.org', 'subnetwork.com', 'subram.com', 'sudanmail.net', 'suhabi.com', 'suisse.org', 'sukhumvit.net', 'sunpoint.net', 'sunrise-sunset.com', 'sunsgame.com', 'sunumail.sn', 'superdada.com', 'supereva.it', 'supermail.ru', 'surat.com', 'surf3.net', 'surfree.com', 'surfy.net', 'surimail.com', 'survivormail.com', 'swbell.net', 'sweb.cz', 'swiftdesk.com', 'swingeasyhithard.com', 'swingfan.com', 'swipermail.zzn.com', 'swirve.com', 'swissinfo.org', 'swissmail.net', 'switchboardmail.com', 'switzerland.org', 'swva.net', 'sx172.com', 'sympatico.ca', 'syom.com', 'syriamail.com', 't-online.de', 't2mail.com', 'takuyakimura.com', 'talk21.com', 'talkcity.com', 'talktalk.co.uk', 'tamil.com', 'tampabay.rr.com', 'tatanova.com', 'tbwt.com', 'tds.net', 'teamdiscovery.com', 'teamtulsa.net', 'tech4peace.org', 'techemail.com', 'techie.com', 'technisamail.co.za', 'technologist.com', 'techpointer.com', 'techscout.com', 'techseek.com', 'techspot.com', 'teenagedirtbag.com', 'telebot.com', 'telebot.net', 'teleline.es', 'telenet.be', 'telerymd.com', 'teleserve.dynip.com', 'teletu.it', 'telinco.net', 'telkom.net', 'telpage.net', 'telus.net', 'temtulsa.net', 'tenchiclub.com', 'tenderkiss.com', 'tennismail.com', 'terra.cl', 'terra.com', 'terra.com.ar', 'terra.com.br', 'terra.es', 'tfanus.com.er', 'tfz.net', 'thai.com', 'thaimail.com', 'thaimail.net', 'the-african.com', 'the-airforce.com', 'the-aliens.com', 'the-american.com', 'the-animal.com', 'the-army.com', 'the-astronaut.com', 'the-beauty.com', 'the-big-apple.com', 'the-biker.com', 'the-boss.com', 'the-brazilian.com', 'the-canadian.com', 'the-canuck.com', 'the-captain.com', 'the-chinese.com', 'the-country.com', 'the-cowboy.com', 'the-davis-home.com', 'the-dutchman.com', 'the-eagles.com', 'the-englishman.com', 'the-fastest.net', 'the-fool.com', 'the-frenchman.com', 'the-galaxy.net', 'the-genius.com', 'the-gentleman.com', 'the-german.com', 'the-gremlin.com', 'the-hooligan.com', 'the-italian.com', 'the-japanese.com', 'the-lair.com', 'the-madman.com', 'the-mailinglist.com', 'the-marine.com', 'the-master.com', 'the-mexican.com', 'the-ministry.com', 'the-monkey.com', 'the-newsletter.net', 'the-pentagon.com', 'the-police.com', 'the-prayer.com', 'the-professional.com', 'the-quickest.com', 'the-russian.com', 'the-snake.com', 'the-spaceman.com', 'the-stock-market.com', 'the-student.net', 'the-whitehouse.net', 'the-wild-west.com', 'the18th.com', 'thecoolguy.com', 'thecriminals.com', 'thedoghousemail.com', 'thedorm.com', 'theend.hu', 'theglobe.com', 'thegolfcourse.com', 'thegooner.com', 'theheadoffice.com', 'thelanddownunder.com', 'themillionare.net', 'theoffice.net', 'thepokerface.com', 'thepostmaster.net', 'theraces.com', 'theracetrack.com', 'thestreetfighter.com', 'theteebox.com', 'thewatercooler.com', 'thewebpros.co.uk', 'thewizzard.com', 'thewizzkid.com', 'thezhangs.net', 'thirdage.com', 'thisgirl.com', 'thoic.com', 'thundermail.com', 'tidni.com', 'timein.net', 'tin.it', 'tiscali.at', 'tiscali.be', 'tiscali.co.uk', 'tiscali.it', 'tiscali.lu', 'tiscali.se', 'tkcity.com', 'toolsource.com', 'topchat.com', 'topgamers.co.uk', 'topletter.com', 'topmail.com.ar', 'topsurf.com', 'topteam.bg', 'torchmail.com', 'tot.net', 'totalmusic.net', 'toughguy.net', 'tpg.com.au', 'travel.li', 'trialbytrivia.com', 'tritium.net', 'trmailbox.com', 'tropicalstorm.com', 'truckers.com', 'truckerz.com', 'truckracer.com', 'trust-me.com', 'tsamail.co.za', 'ttml.co.in', 'tunisiamail.com', 'turkey.com', 'tvcablenet.be', 'twinstarsmail.com', 'tycoonmail.com', 'typemail.com', 'u2club.com', 'uae.ac', 'uaemail.com', 'ubbi.com', 'ubbi.com.br', 'uboot.com', 'uk2k.com', 'uk2net.com', 'uk7.net', 'uk8.net', 'ukbuilder.com', 'ukcool.com', 'ukdreamcast.com', 'ukmail.org', 'ukmax.com', 'ukr.net', 'uku.co.uk', 'ultapulta.com', 'ultrapostman.com', 'ummah.org', 'umpire.com', 'unbounded.com', 'unforgettable.com', 'uni.de', 'unican.es', 'unihome.com', 'universal.pt', 'uno.ee', 'uno.it', 'unofree.it', 'unomail.com', 'uol.com.ar', 'uol.com.br', 'uol.com.co', 'uol.com.mx', 'uol.com.ve', 'uole.com', 'uole.com.ve', 'uolmail.com', 'uomail.com', 'upf.org', 'ureach.com', 'urgentmail.biz', 'usa.com', 'usa.net', 'usaaccess.net', 'usanetmail.com', 'usermail.com', 'usit.net', 'usma.net', 'usmc.net', 'uswestmail.net', 'uu.net', 'uymail.com', 'uyuyuy.com', 'v-sexi.com', 'vahoo.com', 'varbizmail.com', 'vcmail.com', 'velnet.co.uk', 'velocall.com', 'verizon.net', 'verizonmail.com', 'veryfast.biz', 'veryspeedy.net', 'videotron.ca', 'violinmakers.co.uk', 'vip.gr', 'vipmail.ru', 'virgilio.it', 'virgin.net', 'virginmedia.com', 'virtualactive.com', 'virtualmail.com', 'visitmail.com', 'visitweb.com', 'visto.com', 'visualcities.com', 'vivavelocity.com', 'vivianhsu.net', 'vjmail.com', 'vjtimail.com', 'vlmail.com', 'vnn.vn', 'voila.fr', 'volcanomail.com', 'voo.be', 'vote-democrats.com', 'vote-hillary.com', 'vote-republicans.com', 'vote4gop.org', 'votenet.com', 'vr9.com', 'w3.to', 'wahoye.com', 'wales2000.net', 'wam.co.za', 'wanadoo.co.uk', 'wanadoo.es', 'wanadoo.fr', 'warmmail.com', 'warpmail.net', 'warrior.hu', 'waumail.com', 'wbdet.com', 'wearab.net', 'web-mail.com.ar', 'web-police.com', 'web.de', 'webave.com', 'webcammail.com', 'webcity.ca', 'webdream.com', 'webinbox.com', 'webindia123.com', 'webjump.com', 'webmail.bellsouth.net', 'webmail.co.yu', 'webmail.co.za', 'webmail.hu', 'webmails.com', 'webprogramming.com', 'webstable.net', 'webstation.com', 'websurfer.co.za', 'webtopmail.com', 'weedmail.com', 'weekmail.com', 'weekonline.com', 'wehshee.com', 'welsh-lady.com', 'whale-mail.com', 'whartontx.com', 'wheelweb.com', 'whipmail.com', 'whoever.com', 'whoopymail.com', 'wickedmail.com', 'wideopenwest.com', 'wildmail.com', 'windrivers.net', 'windstream.net', 'wingnutz.com', 'winmail.com.au', 'winning.com', 'witty.com', 'wiz.cc', 'wkbwmail.com', 'woh.rr.com', 'wolf-web.com', 'wombles.com', 'wonder-net.com', 'wongfaye.com', 'wooow.it', 'workmail.com', 'worldemail.com', 'worldmailer.com', 'worldnet.att.net', 'wosaddict.com', 'wouldilie.com', 'wow.com', 'wowgirl.com', 'wowmail.com', 'wowway.com', 'wp.pl', 'wptamail.com', 'wrestlingpages.com', 'wrexham.net', 'writeme.com', 'writemeback.com', 'wrongmail.com', 'wtvhmail.com', 'wwdg.com', 'www.com', 'www2000.net', 'wx88.net', 'wxs.net', 'wyrm.supernews.com', 'x-mail.net', 'x-networks.net', 'x5g.com', 'xmastime.com', 'xmsg.com', 'xoom.com', 'xoommail.com', 'xpressmail.zzn.com', 'xsmail.com', 'xuno.com', 'xzapmail.com', 'ya.ru', 'yada-yada.com', 'yaho.com', 'yahoo.ca', 'yahoo.co.id', 'yahoo.co.in', 'yahoo.co.jp', 'yahoo.co.kr', 'yahoo.co.nz', 'yahoo.co.uk', 'yahoo.com', 'yahoo.com.ar', 'yahoo.com.au', 'yahoo.com.br', 'yahoo.com.cn', 'yahoo.com.hk', 'yahoo.com.is', 'yahoo.com.mx', 'yahoo.com.ph', 'yahoo.com.ru', 'yahoo.com.sg', 'yahoo.de', 'yahoo.dk', 'yahoo.es', 'yahoo.fr', 'yahoo.ie', 'yahoo.in', 'yahoo.it', 'yahoo.jp', 'yahoo.ru', 'yahoo.se', 'yahoofs.com', 'yalla.com', 'yalla.com.lb', 'yalook.com', 'yam.com', 'yandex.com', 'yandex.ru', 'yapost.com', 'yawmail.com', 'yclub.com', 'yebox.com', 'yehaa.com', 'yehey.com', 'yemenmail.com', 'yepmail.net', 'yesbox.net', 'ygm.com', 'yifan.net', 'ymail.com', 'ynnmail.com', 'yogotemail.com', 'yopolis.com', 'youareadork.com', 'youpy.com', 'your-house.com', 'yourinbox.com', 'yourlover.net', 'yourname.ddns.org', 'yourname.freeservers.com', 'yournightmare.com', 'yours.com', 'yourssincerely.com', 'yoursubdomain.findhere.com', 'yoursubdomain.zzn.com', 'yourteacher.net', 'yourwap.com', 'youvegotmail.net', 'yuuhuu.net', 'yyhmail.com', 'zahadum.com', 'zcities.com', 'zdnetmail.com', 'zeeks.com', 'zeepost.nl', 'zensearch.net', 'zhaowei.net', 'zionweb.org', 'zip.net', 'zipido.com', 'ziplink.net', 'ziplip.com', 'zipmail.com', 'zipmail.com.br', 'zipmax.com', 'zmail.ru', 'zoho.com', 'zonnet.nl', 'zoominternet.net', 'zubee.com', 'zuvio.com', 'zuzzurello.com', 'zwallet.com', 'zybermail.com', 'zydecofan.com', 'zzn.com', 'zzom.co.uk'];
395
422
 
396
- const validateInput = (field, value) => {
423
+ const doA11yValidation = (v, field, formValidationSent) => {
424
+ const error = doValidateField(field, v);
425
+
426
+ if (JSON.stringify(field.validations) !== '{}') {
427
+ if (((v === null || v === void 0 ? void 0 : v.length) >= 1 || formValidationSent) && (error === null || error === void 0 ? void 0 : error.fieldId) === field.id) return 'true';else if ((v === null || v === void 0 ? void 0 : v.length) >= 1) return 'false';else return '';
428
+ }
429
+ };
430
+ const doValidateField = (field, value) => {
397
431
  var _field$validations, _field$validations$re;
398
432
 
399
433
  const isRequired = field.validations && field.validations.required;
@@ -404,7 +438,7 @@ const validateInput = (field, value) => {
404
438
  const decimal = field.dataType === 'decimal';
405
439
  const isBusinessEmail = field.id === 'businessEmail';
406
440
 
407
- if (isRequired && !value) {
441
+ if (isRequired && (value === null || value === void 0 ? void 0 : value.length) <= 0) {
408
442
  var _isRequired$message, _field$name;
409
443
 
410
444
  const errorMessage = (isRequired === null || isRequired === void 0 ? void 0 : (_isRequired$message = isRequired.message) === null || _isRequired$message === void 0 ? void 0 : _isRequired$message['en-GB']) || `${(_field$name = field.name) === null || _field$name === void 0 ? void 0 : _field$name['en-GB']} is required`;
@@ -435,7 +469,7 @@ const validateInput = (field, value) => {
435
469
  /** Check Regex and Business Emails */
436
470
 
437
471
 
438
- if (hasRegex && (value === null || value === void 0 ? void 0 : value.length) > 0) {
472
+ if (hasRegex && value.length >= 1) {
439
473
  var _r$message;
440
474
 
441
475
  const r = field.validations.regex;
@@ -496,7 +530,64 @@ const isBusinessEmailValid = (field, value) => {
496
530
  if (!domains.includes(domain)) return true;else return false;
497
531
  };
498
532
 
499
- const MakeFieldType = field => {
533
+ const doCreateMessage = (type, minLength, maxLength, currentLength, defaultLanguage) => {
534
+ if (!type) return null;
535
+
536
+ switch (type) {
537
+ case 'min':
538
+ {
539
+ if (!minLength) return;
540
+ const minLengthVal = minLength && minLength.value;
541
+ const errorMessage = minLength && minLength.message && minLength.message[defaultLanguage];
542
+ const minText = `Minimum of ${minLengthVal.toString()} characters`;
543
+
544
+ if (errorMessage) {
545
+ return errorMessage;
546
+ } else {
547
+ return minText;
548
+ }
549
+ }
550
+
551
+ case 'max':
552
+ {
553
+ if (!maxLength) return;
554
+ const maxLengthVal = maxLength && maxLength.value;
555
+ const errorMessage = maxLength && maxLength.message && maxLength.message[defaultLanguage];
556
+ const maxText = `Maximum of ${maxLengthVal.toString()} characters`;
557
+
558
+ if (errorMessage) {
559
+ return errorMessage;
560
+ } else {
561
+ return maxText;
562
+ }
563
+ }
564
+
565
+ case 'between':
566
+ {
567
+ if (!maxLength || !minLength) return;
568
+ const minLengthVal = minLength && minLength.value;
569
+ const maxLengthVal = maxLength && maxLength.value;
570
+ const errorMessage = minLength && minLength.message && minLength.message[defaultLanguage];
571
+ const rangeText = `Between ${minLengthVal.toString()}-${maxLengthVal.toString()} characters)`;
572
+
573
+ if (errorMessage) {
574
+ return errorMessage;
575
+ } else if (currentLength < minLengthVal) {
576
+ return `${(minLengthVal - currentLength).toString()} character${minLengthVal > 1 ? 's' : ''} required ${rangeText}`;
577
+ } else if (currentLength > maxLengthVal) {
578
+ return `${(currentLength - maxLengthVal).toString()} character${currentLength - maxLengthVal > 1 ? 's' : ''} over ${rangeText}`;
579
+ } else if (currentLength) {
580
+ return `${(maxLengthVal - currentLength).toString()} characters remaining ${rangeText}`;
581
+ } else {
582
+ return rangeText;
583
+ }
584
+ }
585
+
586
+ default:
587
+ return null;
588
+ }
589
+ };
590
+ const getFieldType = field => {
500
591
  var _field$editor, _field$editor$propert;
501
592
 
502
593
  if (!field) return null;
@@ -524,26 +615,26 @@ const MakeFieldType = field => {
524
615
  }
525
616
  };
526
617
 
527
- const formV2Sagas = [effects.takeEvery(SUBMIT_FORM_SUCCESS, formSuccess), effects.takeEvery(SUBMIT_FORM_FOR_VALIDATION, validateForm), effects.takeEvery(SUBMIT_FORM, submitForm$1), effects.takeEvery(SET_FORM_ID, fetchForm), effects.takeLatest(VALIDATE_FIELD, validateField$1), effects.takeEvery(PAGE_FORWARD, togglePage), effects.takeEvery(PAGE_BACK, togglePage), effects.takeEvery(SET_FORM_DATA, getEntryPickerData), effects.takeLatest(SET_FORM_DATA, setDefaultValueFields)];
618
+ const sagas = [effects.takeEvery(SUBMIT_FORM_SUCCESS, onFormSuccess), effects.takeEvery(SUBMIT_FORM_FOR_VALIDATION, doValidateForm), effects.takeEvery(SUBMIT_FORM, onSubmitForm), effects.takeEvery(SET_FORM_ID, doFetchForm), effects.takeLatest(VALIDATE_FIELD, onValidateField$1), effects.takeEvery(PAGE_FORWARD, doTogglePage), effects.takeEvery(PAGE_BACK, doTogglePage), effects.takeEvery(SET_FORM_DATA, getEntryPickerData), effects.takeLatest(SET_FORM_DATA, setDefaultValueFields)];
528
619
 
529
- function* validateForm(action) {
620
+ function* doValidateForm(action) {
530
621
  const {
531
622
  formId
532
623
  } = action;
533
- yield validateAllfields(formId);
624
+ yield onValidateAllFields(formId);
534
625
  yield effects.put({
535
626
  type: SUBMIT_FORM,
536
627
  formId
537
628
  });
538
629
  }
539
630
 
540
- function* validateField$1(action) {
631
+ function* onValidateField$1(action) {
541
632
  const {
542
633
  formId,
543
634
  id,
544
635
  value
545
636
  } = action;
546
- yield effects.call(validateSingleField, formId, id, value);
637
+ if ((value === null || value === void 0 ? void 0 : value.length) >= 1) yield effects.call(onValidateSingleField, formId, id, value);
547
638
  }
548
639
 
549
640
  function* validateGroupfields(formId, groupId) {
@@ -561,7 +652,7 @@ function* validateGroupfields(formId, groupId) {
561
652
  val = postData[field.id];
562
653
  }
563
654
 
564
- const err = validateInput(field, val);
655
+ const err = doValidateField(field, val);
565
656
  if (err) newErrors.push(err);
566
657
  });
567
658
  yield effects.put({
@@ -571,7 +662,7 @@ function* validateGroupfields(formId, groupId) {
571
662
  });
572
663
  }
573
664
 
574
- function* validateAllfields(formId) {
665
+ function* onValidateAllFields(formId) {
575
666
  const state = yield effects.select();
576
667
  const selectPostData = makeSelectFormPostData(formId);
577
668
  const postData = selectPostData(state);
@@ -585,7 +676,7 @@ function* validateAllfields(formId) {
585
676
  val = postData[field.id];
586
677
  }
587
678
 
588
- const err = validateInput(field, val);
679
+ const err = doValidateField(field, val);
589
680
  if (err) newErrors.push(err);
590
681
  });
591
682
  yield effects.put({
@@ -595,7 +686,7 @@ function* validateAllfields(formId) {
595
686
  });
596
687
  }
597
688
 
598
- function* validateSingleField(formId, fieldId, value) {
689
+ function* onValidateSingleField(formId, fieldId, value) {
599
690
  const state = yield effects.select();
600
691
  const selectFormFields = makeSelectFormFields(formId);
601
692
  const fields = selectFormFields(state);
@@ -610,7 +701,7 @@ function* validateSingleField(formId, fieldId, value) {
610
701
  newErrors.push(error);
611
702
  }
612
703
  });
613
- const err = validateInput(fieldData, value);
704
+ const err = doValidateField(fieldData, value);
614
705
  if (err) newErrors.push(err);
615
706
  yield effects.put({
616
707
  type: SET_FIELD_ERROR,
@@ -619,7 +710,7 @@ function* validateSingleField(formId, fieldId, value) {
619
710
  });
620
711
  }
621
712
 
622
- function* togglePage(action) {
713
+ function* doTogglePage(action) {
623
714
  const {
624
715
  formId,
625
716
  pageIndex
@@ -641,7 +732,7 @@ function* togglePage(action) {
641
732
  });
642
733
  }
643
734
 
644
- function* fetchForm(action) {
735
+ function* doFetchForm(action) {
645
736
  var _schema$groups;
646
737
 
647
738
  const formId = action.formId;
@@ -664,7 +755,7 @@ function* fetchForm(action) {
664
755
  const submitButtonText = schema.fields.find(f => f.id === 'submitButtonText');
665
756
  const fields = schema === null || schema === void 0 ? void 0 : schema.fields.map(field => {
666
757
  return { ...field,
667
- type: MakeFieldType(field)
758
+ type: getFieldType(field)
668
759
  };
669
760
  });
670
761
  yield effects.put({
@@ -680,7 +771,7 @@ function* fetchForm(action) {
680
771
  }
681
772
  }
682
773
 
683
- function* formSuccess(action) {
774
+ function* onFormSuccess(action) {
684
775
  const state = yield effects.select();
685
776
  const selectFormFields = makeSelectFormFields(action.formId);
686
777
  const fields = selectFormFields(state);
@@ -700,7 +791,7 @@ function* formSuccess(action) {
700
791
  }
701
792
  }
702
793
 
703
- function* submitForm$1(action) {
794
+ function* onSubmitForm(action) {
704
795
  const {
705
796
  formId
706
797
  } = action || {};
@@ -802,7 +893,7 @@ const action = (type, payload = {}) => ({
802
893
  ...payload
803
894
  });
804
895
 
805
- const submitForm = formId => action(SUBMIT_FORM_FOR_VALIDATION, {
896
+ const onSubmit = formId => action(SUBMIT_FORM_FOR_VALIDATION, {
806
897
  formId
807
898
  });
808
899
  const setFormId = formId => action(SET_FORM_ID, {
@@ -825,66 +916,89 @@ const setDateRangeValues = (formId, id, dateType, value) => action(SET_DATE_RANG
825
916
  dateType,
826
917
  value
827
918
  });
828
- const validateField = (formId, id, value) => action(VALIDATE_FIELD, {
919
+ const onValidateField = (formId, id, value) => action(VALIDATE_FIELD, {
829
920
  formId,
830
921
  id,
831
922
  value
832
923
  });
833
- const togglePageForward = (formId, pageIndex) => action(PAGE_FORWARD, {
924
+ const doTogglePageForward = (formId, pageIndex) => action(PAGE_FORWARD, {
834
925
  formId,
835
926
  pageIndex
836
927
  });
837
- const togglePageBack = (formId, pageIndex) => action(PAGE_BACK, {
928
+ const doTogglePageBack = (formId, pageIndex) => action(PAGE_BACK, {
838
929
  formId,
839
930
  pageIndex
840
931
  });
841
932
  const actions = {
842
- submitForm,
933
+ onSubmit,
843
934
  setFormId,
844
935
  setValue,
845
936
  setCheckboxValue,
846
937
  setDateRangeValues,
847
- validateField,
848
- togglePageForward,
849
- togglePageBack
938
+ onValidateField,
939
+ doTogglePageForward,
940
+ doTogglePageBack
850
941
  };
851
942
 
852
- //Brand
853
- const open_teal = '#37BFA7'; //Brand dark
943
+ const ThemeContext = /*#__PURE__*/React.createContext();
854
944
 
855
- const teal_dark = '#00a889'; //Primary
945
+ const ThemeProvider = ({
946
+ children,
947
+ theme
948
+ }) => {
949
+ return /*#__PURE__*/React__default["default"].createElement(ThemeContext.Provider, {
950
+ value: ""
951
+ }, /*#__PURE__*/React__default["default"].createElement(styled.ThemeProvider, {
952
+ theme: theme
953
+ }, children));
954
+ };
856
955
 
857
- const accent_blue = '#1853AC';
858
- const panel_blue = '#00304D'; //Neutrals
956
+ ThemeProvider.propTypes = {
957
+ children: PropTypes__default["default"].oneOfType([PropTypes__default["default"].arrayOf(PropTypes__default["default"].node), PropTypes__default["default"].node]),
958
+ theme: PropTypes__default["default"].object
959
+ };
859
960
 
860
- const base_white = '#FFF';
861
- const empress_gray = '#757575';
862
961
  const colors = {
863
- brand: open_teal,
864
- brandDark: teal_dark,
865
- primary: accent_blue,
866
- secondary: panel_blue,
867
- label: '#333',
868
- label_optional: '#666',
869
- border: '#ccc',
870
- message_link: '#333',
871
- success: '#118011',
872
- warning: '#FFB000',
873
- error: '#C63D54',
874
- required: '#C63D54',
875
- neutrals: {
876
- base_white,
877
- empress_gray
878
- }
962
+ white: '#fff',
963
+ black: '#000',
964
+ dark_grey_lighter: '#757575',
965
+ dark_grey_lightest: '#595959',
966
+ dark_grey_light: '#444',
967
+ dark_grey_dark: '#333',
968
+ dark_grey_darker: '#262626',
969
+ dark_grey_darkest: '#1F1F1F',
970
+ light_grey_lightest: '#FAFAFA',
971
+ light_grey_lighter: '#FDFDFD',
972
+ light_grey_light: '#F0F0F0',
973
+ light_grey_dark: '#DBDBDB',
974
+ light_grey_darker: '#CCCCCC',
975
+ light_grey_darkest: '#949494',
976
+ green_lightest: '#D5FCE9',
977
+ green_lighter: '#A3F2CD',
978
+ green_light: '#74D8A8',
979
+ green_dark: '#0FCE72',
980
+ green_darker: '#008A48',
981
+ green_darkest: '#008545',
982
+ red_lightest: '#F9D7D7',
983
+ red_lighter: '#F4B5B5',
984
+ red_light: '#F67979',
985
+ red_dark: '#d42d2d',
986
+ red_darker: '#ca2121',
987
+ red_darkest: '#B71A1A'
988
+ };
989
+
990
+ const defaultTheme = {
991
+ colors
879
992
  };
880
993
 
881
994
  const FormStyled = styled__default["default"].form.withConfig({
882
- displayName: "Formstyled__FormStyled",
883
- componentId: "sc-1jn1lk9-0"
995
+ displayName: "formstyled__FormStyled",
996
+ componentId: "sc-1t4n03w-0"
884
997
  })(["", ";"], ({
998
+ theme,
885
999
  useDefaultTheme
886
1000
  }) => {
887
- return styled.css(["", ""], useDefaultTheme && styled.css(["> div:not(:first-child){margin-top:16px;}padding:0 16px;.success-message{font-size:18px;margin:0;}.visuallyHidden{position:absolute;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden;}.loading{display:block;margin:24px auto;}label{display:inline-block;.isRequired{color:", ";}}input,textarea,select{display:block;font-family:inherit;background-color:", ";border-radius:3px;border:1px solid ", ";height:40px;padding:8px;margin-top:4px;max-width:320px;width:100%;}textarea{height:200px;resize:none;}"], colors.error, colors.neutrals.base_white, colors.border));
1001
+ return styled.css(["", ""], useDefaultTheme && styled.css(["> div:not(:first-child){margin-top:16px;}padding:0 16px;.success-message{font-size:18px;margin:0;}.visuallyHidden{position:absolute;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden;}.loading{display:block;margin:24px auto;}label{display:inline-block;.isRequired{color:", ";}}input,textarea,select{display:block;font-family:inherit;background-color:", ";border-radius:3px;border:1px solid ", ";height:40px;padding:8px;margin-top:4px;width:100%;}input:-webkit-autofill,input:-webkit-autofill:hover,input:-webkit-autofill:focus,input:-webkit-autofill:active{-webkit-box-shadow:0 0 0 30px ", " inset;}textarea{height:200px;resize:none;}[aria-invalid='false']{background:", ";border:1px solid ", ";&:-webkit-autofill,&:-webkit-autofill:hover,&:-webkit-autofill:focus,&:-webkit-autofill:active{-webkit-box-shadow:0 0 0 30px", " inset;}}[aria-invalid='true']{background:", ";border:1px solid ", ";&:-webkit-autofill,&:-webkit-autofill:hover,&:-webkit-autofill:focus,&:-webkit-autofill:active{-webkit-box-shadow:0 0 0 30px", " inset;}}input ~ .svg{position:absolute;right:8px;top:50%;transform:translateY(-50%);}textarea ~ .svg{position:absolute;right:8px;top:8px;}"], theme.colors.red_darker, theme.colors.white, theme.colors.light_grey_darkest, theme.colors.white, theme.colors.green_lightest, theme.colors.green_darker, theme.colors.green_lightest, theme.colors.red_lightest, theme.colors.red_darker, theme.colors.red_lightest));
888
1002
  });
889
1003
 
890
1004
  const Label = ({
@@ -912,74 +1026,15 @@ Label.propTypes = {
912
1026
  isHidden: PropTypes__default["default"].bool
913
1027
  };
914
1028
 
915
- const CreateMessage = (type, minLength, maxLength, currentLength, defaultLanguage) => {
916
- if (!type) return null;
917
-
918
- switch (type) {
919
- case 'min':
920
- {
921
- if (!minLength) return;
922
- const minLengthVal = minLength && minLength.value;
923
- const errorMessage = minLength && minLength.message && minLength.message[defaultLanguage];
924
- const minText = `Minimum of ${minLengthVal.toString()} characters`;
925
-
926
- if (errorMessage) {
927
- return errorMessage;
928
- } else {
929
- return minText;
930
- }
931
- }
932
-
933
- case 'max':
934
- {
935
- if (!maxLength) return;
936
- const maxLengthVal = maxLength && maxLength.value;
937
- const errorMessage = maxLength && maxLength.message && maxLength.message[defaultLanguage];
938
- const maxText = `Maximum of ${maxLengthVal.toString()} characters`;
939
-
940
- if (errorMessage) {
941
- return errorMessage;
942
- } else {
943
- return maxText;
944
- }
945
- }
946
-
947
- case 'between':
948
- {
949
- if (!maxLength || !minLength) return;
950
- const minLengthVal = minLength && minLength.value;
951
- const maxLengthVal = maxLength && maxLength.value;
952
- const errorMessage = minLength && minLength.message && minLength.message[defaultLanguage];
953
- const rangeText = `Between ${minLengthVal.toString()}-${maxLengthVal.toString()} characters)`;
954
-
955
- if (errorMessage) {
956
- return errorMessage;
957
- } else if (currentLength < minLengthVal) {
958
- return `${(minLengthVal - currentLength).toString()} character${minLengthVal > 1 ? 's' : ''} required ${rangeText}`;
959
- } else if (currentLength > maxLengthVal) {
960
- return `${(currentLength - maxLengthVal).toString()} character${currentLength - maxLengthVal > 1 ? 's' : ''} over ${rangeText}`;
961
- } else if (currentLength) {
962
- return `${(maxLengthVal - currentLength).toString()} characters remaining ${rangeText}`;
963
- } else {
964
- return rangeText;
965
- }
966
- }
967
-
968
- default:
969
- return null;
970
- }
971
- };
972
-
973
1029
  const CharacterLimitStyled = styled__default["default"].div.withConfig({
974
- displayName: "CharacterLimit__CharacterLimitStyled",
975
- componentId: "sc-16zngav-0"
1030
+ displayName: "characterLimit__CharacterLimitStyled",
1031
+ componentId: "sc-4gr2nf-0"
976
1032
  })(["", ";"], ({
977
1033
  theme,
978
1034
  useDefaultTheme
979
1035
  }) => {
980
1036
  return styled.css(["display:block;", ""], useDefaultTheme && styled.css(["font-size:14px;color:", ";font-weight:400;line-height:24px;text-align:right;max-width:320px;width:100%;"], theme.colors.neutrals.empress_gray));
981
1037
  });
982
-
983
1038
  const CharacterLimit = ({
984
1039
  className,
985
1040
  value,
@@ -1002,9 +1057,8 @@ const CharacterLimit = ({
1002
1057
  return /*#__PURE__*/React__default["default"].createElement(CharacterLimitStyled, {
1003
1058
  className: className,
1004
1059
  useDefaultTheme: useDefaultTheme
1005
- }, CreateMessage(type, minLength, maxLength, currentLength, defaultLanguage));
1060
+ }, doCreateMessage(type, minLength, maxLength, currentLength, defaultLanguage));
1006
1061
  };
1007
-
1008
1062
  CharacterLimit.propTypes = {
1009
1063
  validations: PropTypes__default["default"].object,
1010
1064
  value: PropTypes__default["default"].oneOfType([PropTypes__default["default"].string, PropTypes__default["default"].object]),
@@ -1013,36 +1067,9 @@ CharacterLimit.propTypes = {
1013
1067
  useDefaultTheme: PropTypes__default["default"].bool
1014
1068
  };
1015
1069
 
1016
- const ErrorMessageStyled = styled__default["default"].div.withConfig({
1017
- displayName: "ErrorMessage__ErrorMessageStyled",
1018
- componentId: "sc-1vewdiu-0"
1019
- })(["", ";"], ({
1020
- theme,
1021
- useDefaultTheme
1022
- }) => {
1023
- return styled.css(["", ""], useDefaultTheme && styled.css(["display:block;margin-top:8px;color:", ";"], theme.colors.error));
1024
- });
1025
-
1026
- const ErrorMessage = ({
1027
- className,
1028
- message,
1029
- useDefaultTheme
1030
- }) => {
1031
- return /*#__PURE__*/React__default["default"].createElement(ErrorMessageStyled, {
1032
- className: className,
1033
- useDefaultTheme: useDefaultTheme
1034
- }, message);
1035
- };
1036
-
1037
- ErrorMessage.propTypes = {
1038
- className: PropTypes__default["default"].string,
1039
- message: PropTypes__default["default"].string.isRequired,
1040
- useDefaultTheme: PropTypes__default["default"].bool
1041
- };
1042
-
1043
1070
  const TextfieldStyled = styled__default["default"].div.withConfig({
1044
- displayName: "Textfield__TextfieldStyled",
1045
- componentId: "sc-1a1c03n-0"
1071
+ displayName: "textfield__TextfieldStyled",
1072
+ componentId: "sc-whkw86-0"
1046
1073
  })(["", ";"], ({
1047
1074
  isHidden
1048
1075
  }) => {
@@ -1051,75 +1078,105 @@ const TextfieldStyled = styled__default["default"].div.withConfig({
1051
1078
 
1052
1079
  const Textfield = ({
1053
1080
  className,
1081
+ field,
1054
1082
  formId,
1055
1083
  id,
1056
1084
  label,
1057
1085
  type,
1058
1086
  setValue,
1059
- validateField,
1087
+ onValidateField,
1060
1088
  validations,
1061
1089
  defaultValue,
1062
1090
  defaultLanguage,
1063
1091
  placeholder,
1064
1092
  isHidden,
1065
- errors,
1066
1093
  useDefaultTheme
1067
1094
  }) => {
1068
- const [showCharLimit, setShowCharLimit] = React.useState(false);
1095
+ const [hasCharLimit, setCharLimit] = React.useState(false);
1069
1096
  const isRequired = validations && validations.required ? true : false;
1070
1097
  const placeholderText = placeholder && placeholder.properties && placeholder.properties.placeholderText && placeholder.properties.placeholderText[defaultLanguage];
1071
1098
  const defaultValueText = defaultValue && defaultValue[defaultLanguage] ? defaultValue[defaultLanguage] : defaultValue;
1072
-
1073
- const _handleChange = (formId, id, value) => {
1074
- setValue(formId, id, value);
1075
- };
1076
-
1077
- const _handleBlur = (formId, id, value) => {
1078
- validateField(formId, id, value);
1079
- setShowCharLimit(false);
1080
- };
1081
-
1082
- const _handleFocus = () => {
1083
- setShowCharLimit(true);
1084
- };
1085
-
1099
+ const [a11yInvalid, setA11yInvalid] = React.useState('');
1100
+ const [_, setTextfieldValue] = React.useState(defaultValueText || '');
1101
+ const selectFormValidationSent = makeSelectFormValidationSent(formId);
1102
+ const formValidationSent = reactRedux.useSelector(selectFormValidationSent);
1103
+ React.useEffect(() => {
1104
+ if (formValidationSent) setA11yInvalid(doA11yValidation(_, field, true));
1105
+ }, [formValidationSent]);
1086
1106
  return /*#__PURE__*/React__default["default"].createElement(TextfieldStyled, {
1087
- className: "textfield-container",
1107
+ className: className,
1088
1108
  isHidden: isHidden
1089
1109
  }, /*#__PURE__*/React__default["default"].createElement(Label, {
1090
1110
  id: id,
1091
1111
  label: label,
1092
1112
  isRequired: isRequired,
1093
- className: "label-textfield"
1094
- }), showCharLimit && /*#__PURE__*/React__default["default"].createElement(CharacterLimit, {
1113
+ className: "text-field__label"
1114
+ }), hasCharLimit && /*#__PURE__*/React__default["default"].createElement(CharacterLimit, {
1095
1115
  value: defaultValue,
1096
1116
  validations: validations,
1097
1117
  defaultLanguage: defaultLanguage,
1098
1118
  useDefaultTheme: useDefaultTheme
1099
- }), /*#__PURE__*/React__default["default"].createElement("input", {
1100
- className: `${className ? className : ''} input-textfield`,
1119
+ }), /*#__PURE__*/React__default["default"].createElement("div", {
1120
+ className: "text-field__input--wrapper",
1121
+ style: {
1122
+ position: 'relative'
1123
+ }
1124
+ }, /*#__PURE__*/React__default["default"].createElement("input", {
1125
+ className: "text-field__input",
1101
1126
  type: type,
1102
1127
  defaultValue: defaultValueText,
1103
1128
  placeholder: placeholderText,
1129
+ "aria-invalid": a11yInvalid,
1104
1130
  id: id,
1105
1131
  name: id,
1106
- onChange: e => _handleChange(formId, id, e.target.value),
1107
- onBlur: e => _handleBlur(formId, id, e.target.value),
1108
- onFocus: () => _handleFocus()
1109
- }), errors && errors.length > 0 && errors.some(x => x.fieldId == id) && /*#__PURE__*/React__default["default"].createElement(ErrorMessage, {
1110
- message: errors.find(x => x.fieldId == id).message,
1111
- useDefaultTheme: useDefaultTheme
1112
- }));
1132
+ onChange: e => {
1133
+ setTextfieldValue(e.target.value);
1134
+ setValue(formId, id, e.target.value);
1135
+ },
1136
+ onBlur: e => {
1137
+ onValidateField(formId, id, e.target.value);
1138
+ setCharLimit(false);
1139
+ setA11yInvalid(doA11yValidation(e.target.value, field, formValidationSent));
1140
+ },
1141
+ onFocus: () => {
1142
+ setCharLimit(true);
1143
+ }
1144
+ }), a11yInvalid == 'true' && /*#__PURE__*/React__default["default"].createElement("svg", {
1145
+ className: "svg",
1146
+ xmlns: "http://www.w3.org/2000/svg",
1147
+ focusable: "false",
1148
+ "aria-hidden": "true",
1149
+ role: "presentation",
1150
+ width: "16",
1151
+ height: "16",
1152
+ fill: "none"
1153
+ }, /*#__PURE__*/React__default["default"].createElement("path", {
1154
+ fill: "#333",
1155
+ d: "M12.2 3.807a.664.664 0 0 0-.94 0L8 7.06 4.74 3.8a.665.665 0 0 0-.94.94L7.06 8 3.8 11.26a.664.664 0 1 0 .94.94L8 8.94l3.26 3.26a.665.665 0 0 0 .94-.94L8.94 8l3.26-3.26a.668.668 0 0 0 0-.933Z"
1156
+ })), a11yInvalid == 'false' && /*#__PURE__*/React__default["default"].createElement("svg", {
1157
+ className: "svg",
1158
+ xmlns: "http://www.w3.org/2000/svg",
1159
+ focusable: "false",
1160
+ "aria-hidden": "true",
1161
+ role: "presentation",
1162
+ width: "16",
1163
+ height: "16",
1164
+ fill: "none"
1165
+ }, /*#__PURE__*/React__default["default"].createElement("path", {
1166
+ fill: "#333",
1167
+ d: "m2 8 4.418 4.667L14 4.659l-1.246-1.326-6.336 6.692-3.18-3.332L2 8Z"
1168
+ }))));
1113
1169
  };
1114
1170
 
1115
1171
  Textfield.propTypes = {
1116
1172
  className: PropTypes__default["default"].string,
1173
+ field: PropTypes__default["default"].any,
1117
1174
  formId: PropTypes__default["default"].string,
1118
1175
  id: PropTypes__default["default"].string,
1119
1176
  label: PropTypes__default["default"].string,
1120
1177
  type: PropTypes__default["default"].string,
1121
1178
  setValue: PropTypes__default["default"].func,
1122
- validateField: PropTypes__default["default"].func,
1179
+ onValidateField: PropTypes__default["default"].func,
1123
1180
  validations: PropTypes__default["default"].object,
1124
1181
  defaultValue: PropTypes__default["default"].oneOfType([PropTypes__default["default"].string, PropTypes__default["default"].object]),
1125
1182
  defaultLanguage: PropTypes__default["default"].string,
@@ -1131,6 +1188,7 @@ Textfield.propTypes = {
1131
1188
 
1132
1189
  const Textarea = ({
1133
1190
  className,
1191
+ field,
1134
1192
  formId,
1135
1193
  id,
1136
1194
  label,
@@ -1140,57 +1198,86 @@ const Textarea = ({
1140
1198
  defaultValue,
1141
1199
  defaultLanguage,
1142
1200
  placeholder,
1143
- validateField,
1144
- useDefaultTheme,
1145
- errors
1201
+ onValidateField,
1202
+ useDefaultTheme
1146
1203
  }) => {
1147
1204
  const [showCharLimit, setShowCharLimit] = React.useState(false);
1148
1205
  const isRequired = validations && validations.required ? true : false;
1149
1206
  const placeholderText = placeholder && placeholder.properties && placeholder.properties.placeholderText && placeholder.properties.placeholderText[defaultLanguage];
1150
1207
  const defaultValueText = defaultValue ? defaultValue[defaultLanguage] : null;
1151
-
1152
- const _handleChange = (formId, id, value) => {
1153
- setValue(formId, id, value);
1154
- };
1155
-
1156
- const _handleBlur = (formId, id, value) => {
1157
- validateField(formId, id, value);
1158
- setShowCharLimit(false);
1159
- };
1160
-
1161
- const _handleFocus = () => {
1162
- setShowCharLimit(true);
1163
- };
1164
-
1208
+ const [a11yInvalid, setA11yInvalid] = React.useState('');
1209
+ const [_, setTextareaValue] = React.useState(defaultValueText || '');
1210
+ const selectFormValidationSent = makeSelectFormValidationSent(formId);
1211
+ const formValidationSent = reactRedux.useSelector(selectFormValidationSent);
1212
+ React.useEffect(() => {
1213
+ if (formValidationSent) setA11yInvalid(doA11yValidation(_, field, true));
1214
+ }, [formValidationSent]);
1165
1215
  return /*#__PURE__*/React__default["default"].createElement("div", {
1166
- className: "textarea-container"
1216
+ className: className
1167
1217
  }, /*#__PURE__*/React__default["default"].createElement(Label, {
1168
1218
  id: id,
1169
1219
  label: label,
1170
1220
  isRequired: isRequired,
1171
- className: "label-textarea"
1221
+ className: "text-area__label"
1172
1222
  }), showCharLimit && /*#__PURE__*/React__default["default"].createElement(CharacterLimit, {
1173
1223
  value: defaultValue,
1174
1224
  validations: validations,
1175
1225
  defaultLanguage: defaultLanguage,
1176
1226
  useDefaultTheme: useDefaultTheme
1177
- }), /*#__PURE__*/React__default["default"].createElement("textarea", {
1178
- className: `${className ? className : ''} input-textarea`,
1227
+ }), /*#__PURE__*/React__default["default"].createElement("div", {
1228
+ className: "text-area__input--wrapper",
1229
+ style: {
1230
+ position: 'relative'
1231
+ }
1232
+ }, /*#__PURE__*/React__default["default"].createElement("textarea", {
1233
+ className: "text-area__input",
1179
1234
  type: type,
1180
1235
  id: id,
1181
1236
  defaultValue: defaultValueText,
1182
1237
  placeholder: placeholderText,
1183
- onChange: e => _handleChange(formId, id, e.target.value),
1184
- onBlur: e => _handleBlur(formId, id, e.target.value),
1185
- onFocus: () => _handleFocus()
1186
- }), errors && errors.length > 0 && errors.some(x => x.fieldId == id) && /*#__PURE__*/React__default["default"].createElement(ErrorMessage, {
1187
- message: errors.find(x => x.fieldId == id).message,
1188
- useDefaultTheme: useDefaultTheme
1189
- }));
1238
+ "aria-invalid": a11yInvalid,
1239
+ onChange: e => {
1240
+ setTextareaValue(e.target.value);
1241
+ setValue(formId, id, e.target.value);
1242
+ },
1243
+ onBlur: e => {
1244
+ onValidateField(formId, id, e.target.value);
1245
+ setShowCharLimit(false);
1246
+ setA11yInvalid(doA11yValidation(e.target.value, field, formValidationSent));
1247
+ },
1248
+ onFocus: () => {
1249
+ setShowCharLimit(true);
1250
+ }
1251
+ }), a11yInvalid == 'true' && /*#__PURE__*/React__default["default"].createElement("svg", {
1252
+ className: "svg",
1253
+ xmlns: "http://www.w3.org/2000/svg",
1254
+ focusable: "false",
1255
+ "aria-hidden": "true",
1256
+ role: "presentation",
1257
+ width: "16",
1258
+ height: "16",
1259
+ fill: "none"
1260
+ }, /*#__PURE__*/React__default["default"].createElement("path", {
1261
+ fill: "#333",
1262
+ d: "M12.2 3.807a.664.664 0 0 0-.94 0L8 7.06 4.74 3.8a.665.665 0 0 0-.94.94L7.06 8 3.8 11.26a.664.664 0 1 0 .94.94L8 8.94l3.26 3.26a.665.665 0 0 0 .94-.94L8.94 8l3.26-3.26a.668.668 0 0 0 0-.933Z"
1263
+ })), a11yInvalid == 'false' && /*#__PURE__*/React__default["default"].createElement("svg", {
1264
+ className: "svg",
1265
+ xmlns: "http://www.w3.org/2000/svg",
1266
+ focusable: "false",
1267
+ "aria-hidden": "true",
1268
+ role: "presentation",
1269
+ width: "16",
1270
+ height: "16",
1271
+ fill: "none"
1272
+ }, /*#__PURE__*/React__default["default"].createElement("path", {
1273
+ fill: "#333",
1274
+ d: "m2 8 4.418 4.667L14 4.659l-1.246-1.326-6.336 6.692-3.18-3.332L2 8Z"
1275
+ }))));
1190
1276
  };
1191
1277
 
1192
1278
  Textarea.propTypes = {
1193
1279
  className: PropTypes__default["default"].string,
1280
+ field: PropTypes__default["default"].any,
1194
1281
  formId: PropTypes__default["default"].string,
1195
1282
  id: PropTypes__default["default"].string,
1196
1283
  label: PropTypes__default["default"].string,
@@ -1200,7 +1287,7 @@ Textarea.propTypes = {
1200
1287
  defaultValue: PropTypes__default["default"].object,
1201
1288
  defaultLanguage: PropTypes__default["default"].string,
1202
1289
  placeholder: PropTypes__default["default"].object,
1203
- validateField: PropTypes__default["default"].func,
1290
+ onValidateField: PropTypes__default["default"].func,
1204
1291
  useDefaultTheme: PropTypes__default["default"].bool,
1205
1292
  errors: PropTypes__default["default"].array
1206
1293
  };
@@ -1249,11 +1336,6 @@ const Dropdown = ({
1249
1336
  if (!validations) return null;
1250
1337
  const isRequired = validations && validations.required ? true : false;
1251
1338
  const ddValues = validations && validations.allowedValues && validations.allowedValues.values;
1252
-
1253
- const _handleChange = (formId, id, value) => {
1254
- setValue(formId, id, value);
1255
- };
1256
-
1257
1339
  if (!ddValues || ddValues.length < 1) return null;
1258
1340
  return /*#__PURE__*/React__default["default"].createElement("div", {
1259
1341
  className: "dropdown-container"
@@ -1267,7 +1349,9 @@ const Dropdown = ({
1267
1349
  id: id,
1268
1350
  className: `${className ? className : ''} select-dropdown`,
1269
1351
  defaultValue: defaultValue,
1270
- onBlur: e => _handleChange(formId, id, e.target.value)
1352
+ onBlur: e => {
1353
+ setValue(formId, id, e.target.value);
1354
+ }
1271
1355
  }, ddValues.map((val, idx) => {
1272
1356
  return /*#__PURE__*/React__default["default"].createElement("option", {
1273
1357
  key: `${val[defaultLanguage]}-${idx}`,
@@ -1289,8 +1373,8 @@ Dropdown.propTypes = {
1289
1373
  };
1290
1374
 
1291
1375
  const CheckboxStyled = styled__default["default"].div.withConfig({
1292
- displayName: "Checkbox__CheckboxStyled",
1293
- componentId: "sc-s8ewuf-0"
1376
+ displayName: "checkbox__CheckboxStyled",
1377
+ componentId: "sc-gm2o0r-0"
1294
1378
  })(["", ";"], ({
1295
1379
  useDefaultTheme
1296
1380
  }) => {
@@ -1396,8 +1480,8 @@ Checkbox.propTypes = {
1396
1480
  };
1397
1481
 
1398
1482
  const RadioButtonStyled = styled__default["default"].div.withConfig({
1399
- displayName: "RadioButton__RadioButtonStyled",
1400
- componentId: "sc-7y8c21-0"
1483
+ displayName: "radioButton__RadioButtonStyled",
1484
+ componentId: "sc-3mey0f-0"
1401
1485
  })(["", ";"], ({
1402
1486
  useDefaultTheme
1403
1487
  }) => {
@@ -1418,11 +1502,6 @@ const RadioButton = ({
1418
1502
  if (!validations) return null;
1419
1503
  const isRequired = validations && validations.required ? true : false;
1420
1504
  const cbValues = validations && validations.allowedValues && validations.allowedValues.values;
1421
-
1422
- const _handleChange = (formId, id, value) => {
1423
- setValue(formId, id, value);
1424
- };
1425
-
1426
1505
  if (!cbValues || cbValues.length < 1) return null;
1427
1506
  return /*#__PURE__*/React__default["default"].createElement(RadioButtonStyled, {
1428
1507
  className: "radio-container",
@@ -1442,7 +1521,9 @@ const RadioButton = ({
1442
1521
  name: id,
1443
1522
  value: val[defaultLanguage],
1444
1523
  className: `${className ? className : ''} input-radio`,
1445
- onChange: e => _handleChange(formId, id, e.target.value)
1524
+ onChange: e => {
1525
+ setValue(formId, id, e.target.value);
1526
+ }
1446
1527
  }), /*#__PURE__*/React__default["default"].createElement(Label, {
1447
1528
  id: val[defaultLanguage],
1448
1529
  label: val[defaultLanguage],
@@ -1568,8 +1649,8 @@ SingleDate.propTypes = {
1568
1649
  };
1569
1650
 
1570
1651
  const DateRangeStyled = styled__default["default"].div.withConfig({
1571
- displayName: "DateRange__DateRangeStyled",
1572
- componentId: "sc-hnzg32-0"
1652
+ displayName: "dateRange__DateRangeStyled",
1653
+ componentId: "sc-1so0ar2-0"
1573
1654
  })(["", ";"], ({
1574
1655
  useDefaultTheme
1575
1656
  }) => {
@@ -1672,8 +1753,8 @@ DateRange.propTypes = {
1672
1753
  };
1673
1754
 
1674
1755
  const EntryPickerStyled = styled__default["default"].div.withConfig({
1675
- displayName: "EntryPicker__EntryPickerStyled",
1676
- componentId: "sc-svnu18-0"
1756
+ displayName: "entryPicker__EntryPickerStyled",
1757
+ componentId: "sc-9vev5n-0"
1677
1758
  })(["", ";"], ({
1678
1759
  useDefaultTheme
1679
1760
  }) => {
@@ -1754,7 +1835,7 @@ const FormComposer = ({
1754
1835
  formId,
1755
1836
  setValue,
1756
1837
  setDateRangeValues,
1757
- validateField,
1838
+ onValidateField,
1758
1839
  defaultLanguage,
1759
1840
  errors,
1760
1841
  useDefaultTheme,
@@ -1771,13 +1852,14 @@ const FormComposer = ({
1771
1852
  {
1772
1853
  return /*#__PURE__*/React__default["default"].createElement(Textfield, {
1773
1854
  key: `${field.id}-${idx}`,
1855
+ field: field,
1774
1856
  type: field.type,
1775
1857
  id: field.id,
1776
1858
  label: field.name && field.name[defaultLanguage],
1777
1859
  formId: formId,
1778
1860
  setValue: setValue,
1779
1861
  validations: field.validations,
1780
- validateField: validateField,
1862
+ onValidateField: onValidateField,
1781
1863
  defaultLanguage: defaultLanguage,
1782
1864
  defaultValue: formData && formData[field.id] || field.default,
1783
1865
  placeholder: field.editor,
@@ -1790,6 +1872,7 @@ const FormComposer = ({
1790
1872
  {
1791
1873
  return /*#__PURE__*/React__default["default"].createElement(Textarea, {
1792
1874
  key: `${field.id}-${idx}`,
1875
+ field: field,
1793
1876
  type: field.type,
1794
1877
  id: field.id,
1795
1878
  label: field.name && field.name[defaultLanguage],
@@ -1799,7 +1882,7 @@ const FormComposer = ({
1799
1882
  defaultLanguage: defaultLanguage,
1800
1883
  defaultValue: field.default,
1801
1884
  placeholder: field.editor,
1802
- validateField: validateField,
1885
+ onValidateField: onValidateField,
1803
1886
  useDefaultTheme: useDefaultTheme,
1804
1887
  errors: errors
1805
1888
  });
@@ -1865,7 +1948,7 @@ const FormComposer = ({
1865
1948
  label: field.name && field.name[defaultLanguage],
1866
1949
  useDefaultTheme: useDefaultTheme,
1867
1950
  setValue: setValue,
1868
- validateField: validateField,
1951
+ onValidateField: onValidateField,
1869
1952
  formId: formId
1870
1953
  });
1871
1954
  }
@@ -1919,7 +2002,7 @@ FormComposer.propTypes = {
1919
2002
  entries: PropTypes__default["default"].oneOfType([PropTypes__default["default"].array, PropTypes__default["default"].object]),
1920
2003
  formId: PropTypes__default["default"].string,
1921
2004
  setValue: PropTypes__default["default"].func,
1922
- validateField: PropTypes__default["default"].func,
2005
+ onValidateField: PropTypes__default["default"].func,
1923
2006
  setDateRangeValues: PropTypes__default["default"].func,
1924
2007
  defaultLanguage: PropTypes__default["default"].string,
1925
2008
  errors: PropTypes__default["default"].array,
@@ -1927,7 +2010,7 @@ FormComposer.propTypes = {
1927
2010
  setCheckboxValue: PropTypes__default["default"].func
1928
2011
  };
1929
2012
 
1930
- const LoadingSpinner = ({
2013
+ const Loader = ({
1931
2014
  className,
1932
2015
  color = '#fff',
1933
2016
  width = 20,
@@ -1966,19 +2049,19 @@ const LoadingSpinner = ({
1966
2049
  })));
1967
2050
  };
1968
2051
 
1969
- const ButtonStyled = styled__default["default"].button.withConfig({
1970
- displayName: "Button__ButtonStyled",
1971
- componentId: "sc-hr2oup-0"
2052
+ var ButtonStyled = styled__default["default"].button.withConfig({
2053
+ displayName: "buttonstyled",
2054
+ componentId: "sc-1uekf3o-0"
1972
2055
  })(["", ";"], ({
1973
2056
  theme,
1974
2057
  useDefaultTheme
1975
2058
  }) => {
1976
- return styled.css(["", ""], useDefaultTheme && styled.css(["display:inline-flex;align-items:center;justify-content:center;cursor:pointer;margin:16px 0 0 0;padding:8px 16px;border-radius:3px;border:1px solid ", ";font-family:inherit;transition:opacity 200ms ease;&:disabled{opacity:0.7;cursor:not-allowed;border-color:#f0f0f0;background:#f0f0f0;color:#dbdbdb;svg{margin-left:4px;circle{stroke:#dbdbdb;}}}&:hover{opacity:0.7;}"], theme.colors.border));
2059
+ return styled.css(["", ""], useDefaultTheme && styled.css(["display:inline-flex;align-items:center;justify-content:center;cursor:pointer;margin:16px 0 0 0;padding:8px 16px;border-radius:3px;border:1px solid ", ";font-family:inherit;transition:opacity 200ms ease;&:disabled{opacity:0.7;cursor:not-allowed;border-color:", ";background:", ";color:", ";svg{margin-left:4px;circle{stroke:", ";}}}&:hover{opacity:0.7;}"], theme.colors.border, theme.colors.light_grey_light, theme.colors.light_grey_light, theme.colors.light_grey_dark, theme.colors.light_grey_dark));
1977
2060
  });
1978
2061
 
1979
2062
  const Button = ({
1980
2063
  className,
1981
- type,
2064
+ type = 'button',
1982
2065
  text,
1983
2066
  action,
1984
2067
  loading,
@@ -1990,7 +2073,7 @@ const Button = ({
1990
2073
  onClick: () => action(),
1991
2074
  disabled: loading,
1992
2075
  useDefaultTheme: useDefaultTheme
1993
- }, text, loading && /*#__PURE__*/React__default["default"].createElement(LoadingSpinner, {
2076
+ }, text, loading && /*#__PURE__*/React__default["default"].createElement(Loader, {
1994
2077
  height: 18,
1995
2078
  width: 18
1996
2079
  }));
@@ -2004,134 +2087,51 @@ Button.propTypes = {
2004
2087
  useDefaultTheme: PropTypes__default["default"].bool
2005
2088
  };
2006
2089
 
2007
- const ThemeContext = /*#__PURE__*/React.createContext();
2008
-
2009
- const ThemeProvider = ({
2010
- children,
2090
+ var CalloutStyled = styled__default["default"].div.withConfig({
2091
+ displayName: "calloutstyled",
2092
+ componentId: "sc-k461qh-0"
2093
+ })(["", ";"], ({
2011
2094
  theme
2012
2095
  }) => {
2013
- return /*#__PURE__*/React__default["default"].createElement(ThemeContext.Provider, null, /*#__PURE__*/React__default["default"].createElement(styled.ThemeProvider, {
2014
- theme: theme
2015
- }, children));
2016
- };
2017
-
2018
- ThemeProvider.propTypes = {
2019
- children: PropTypes__default["default"].oneOfType([PropTypes__default["default"].arrayOf(PropTypes__default["default"].node), PropTypes__default["default"].node]),
2020
- theme: PropTypes__default["default"].object
2021
- };
2022
-
2023
- const mediaQueriesNoUnit = {
2024
- s: 470,
2025
- ms: 640,
2026
- m: 768,
2027
- ml: 880,
2028
- l: 1024,
2029
- xl: 1200,
2030
- xxl: 1366,
2031
- wide: 1600
2032
- };
2033
- const mediaQueries = {
2034
- small: mediaQueriesNoUnit.s + 'px',
2035
- msmall: mediaQueriesNoUnit.ms + 'px',
2036
- medium: mediaQueriesNoUnit.m + 'px',
2037
- mlarge: mediaQueriesNoUnit.ml + 'px',
2038
- large: mediaQueriesNoUnit.l + 'px',
2039
- xlarge: mediaQueriesNoUnit.xl + 'px',
2040
- xxlarge: mediaQueriesNoUnit.xxl + 'px',
2041
- wide: mediaQueriesNoUnit.wide + 'px'
2042
- };
2043
- const layout = {
2044
- mediaQueries: mediaQueries
2045
- };
2096
+ return styled.css(["background:#F1F6FD;box-shadow:inset 4px 0 0 ", ";border-radius:0 8px 8px 0;padding:16px 24px;margin-top:8px;span{font-weight:400;font-size:14px;line-height:24px;}"], theme.colors.red_darker);
2097
+ });
2046
2098
 
2047
- const fontFamily = {
2048
- Poppins: `'Poppins', Arial, sans-serif`
2049
- }; //use html tag name as object key
2050
- //use default object key for base styles
2051
- //use media query key that corresponds with keys set on mediaQueries object from ./layout to map to relevant screen sizes
2052
- //uses a mobile first approach to rules
2053
-
2054
- const typography = {
2055
- default: {
2056
- color: colors.label,
2057
- font_family: fontFamily.Poppins,
2058
- font_style: 'normal',
2059
- font_weight: 400,
2060
- font_size: '18px',
2061
- line_height: 1.75
2062
- }
2099
+ const Callout = ({
2100
+ className,
2101
+ text
2102
+ }) => {
2103
+ return /*#__PURE__*/React__default["default"].createElement(CalloutStyled, {
2104
+ className: className
2105
+ }, /*#__PURE__*/React__default["default"].createElement("span", null, text));
2063
2106
  };
2064
- const defaultStyles = typography.default;
2065
- const typographyStyles = {
2066
- defaultStyles
2067
- }; // function generateTypeStyles(obj) {
2068
- // return Object.keys(obj)
2069
- // .map(mq => {
2070
- // const props = generateProps(obj[mq]);
2071
- // if (mq === 'default') {
2072
- // return `${props.join(' ')}`;
2073
- // } else {
2074
- // return `@media only screen and (min-width:${
2075
- // mediaQueries[mq]
2076
- // }){${props.join('')}}`;
2077
- // }
2078
- // })
2079
- // .join('');
2080
- // }
2081
- // function generateProps(objMQ) {
2082
- // let props = [];
2083
- // Object.keys(objMQ).map(prop => {
2084
- // props.push(`${prop.split('_').join('-')}: ${objMQ[prop]};`);
2085
- // });
2086
- // return props;
2087
- // }
2088
-
2089
- const defaultTheme = {
2090
- layout,
2091
- typographyStyles,
2092
- typography,
2093
- colors
2107
+ Callout.propTypes = {
2108
+ className: PropTypes__default["default"].string,
2109
+ text: PropTypes__default["default"].string
2094
2110
  };
2095
2111
 
2096
2112
  const Form = ({
2097
2113
  className,
2098
2114
  formId,
2099
2115
  useDefaultTheme = true,
2100
- customSubmit
2116
+ onCustomSubmit
2101
2117
  }) => {
2102
2118
  const dispatch = reactRedux.useDispatch();
2103
2119
 
2104
- const _setFormId = formId => {
2105
- dispatch(setFormId(formId));
2106
- };
2120
+ const _setFormId = formId => dispatch(setFormId(formId));
2107
2121
 
2108
- const _setValue = (formId, id, value) => {
2109
- dispatch(setValue(formId, id, value));
2110
- };
2122
+ const _setValue = (formId, id, value) => dispatch(setValue(formId, id, value));
2111
2123
 
2112
- const _setCheckboxValue = (formId, id, value, isChecked) => {
2113
- dispatch(setCheckboxValue(formId, id, value, isChecked));
2114
- };
2124
+ const _setCheckboxValue = (formId, id, value, isChecked) => dispatch(setCheckboxValue(formId, id, value, isChecked));
2115
2125
 
2116
- const _setDateRangeValues = (formId, id, dateType, value) => {
2117
- dispatch(setDateRangeValues(formId, id, dateType, value));
2118
- };
2126
+ const _setDateRangeValues = (formId, id, dateType, value) => dispatch(setDateRangeValues(formId, id, dateType, value));
2119
2127
 
2120
- const _validateField = (formId, id, value) => {
2121
- dispatch(validateField(formId, id, value));
2122
- };
2128
+ const _onValidateField = (formId, id, value) => dispatch(onValidateField(formId, id, value));
2123
2129
 
2124
- const _togglePageForward = (formId, pageIndex) => {
2125
- dispatch(togglePageForward(formId, pageIndex));
2126
- };
2130
+ const _doTogglePageForward = (formId, pageIndex) => dispatch(doTogglePageForward(formId, pageIndex));
2127
2131
 
2128
- const _togglePageBack = (formId, pageIndex) => {
2129
- dispatch(togglePageBack(formId, pageIndex));
2130
- };
2132
+ const _doTogglePageBack = (formId, pageIndex) => dispatch(doTogglePageBack(formId, pageIndex));
2131
2133
 
2132
- const _submitForm = formId => {
2133
- dispatch(submitForm(formId));
2134
- };
2134
+ const _onSubmit = formId => dispatch(onSubmit(formId));
2135
2135
 
2136
2136
  React.useEffect(() => {
2137
2137
  if (formId) _setFormId(formId);
@@ -2144,6 +2144,7 @@ const Form = ({
2144
2144
  const selectFormFieldErrors = makeSelectFormFieldErrors(formId);
2145
2145
  const selectFormEntries = makeSelectFormEntries(formId);
2146
2146
  const selectFormPostData = makeSelectFormPostData(formId);
2147
+ const selectFormValidationSent = makeSelectFormValidationSent(formId);
2147
2148
  const status = reactRedux.useSelector(selectFormStatus);
2148
2149
  const fields = reactRedux.useSelector(selectFormFields);
2149
2150
  const pagingInfo = reactRedux.useSelector(selectPagingInfo);
@@ -2152,6 +2153,7 @@ const Form = ({
2152
2153
  const errors = reactRedux.useSelector(selectFormFieldErrors);
2153
2154
  const entries = reactRedux.useSelector(selectFormEntries);
2154
2155
  const formData = reactRedux.useSelector(selectFormPostData);
2156
+ const validate = reactRedux.useSelector(selectFormValidationSent);
2155
2157
 
2156
2158
  if (pagingInfo && pagingInfo.pageCount > 1) {
2157
2159
  const isLastPage = pagingInfo.pageCount == pagingInfo.pageIndex + 1;
@@ -2164,14 +2166,14 @@ const Form = ({
2164
2166
  }, !(status !== null && status !== void 0 && status.hasSuccess) && !(status !== null && status !== void 0 && status.isLoading) && /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, pagingInfo.pageIndex > 0 && /*#__PURE__*/React__default["default"].createElement(Button, {
2165
2167
  type: "button",
2166
2168
  text: "Go Back",
2167
- action: () => _togglePageBack(formId, pagingInfo.pageIndex - 1),
2169
+ action: () => _doTogglePageBack(formId, pagingInfo.pageIndex - 1),
2168
2170
  useDefaultTheme: useDefaultTheme
2169
2171
  }), /*#__PURE__*/React__default["default"].createElement(FormComposer, {
2170
2172
  fields: fields,
2171
2173
  formData: formData,
2172
2174
  formId: formId,
2173
2175
  setValue: _setValue,
2174
- validateField: _validateField,
2176
+ onValidateField: _onValidateField,
2175
2177
  defaultLanguage: defaultLanguage,
2176
2178
  errors: errors,
2177
2179
  pagingInfo: pagingInfo,
@@ -2182,26 +2184,37 @@ const Form = ({
2182
2184
  }), !isLastPage && /*#__PURE__*/React__default["default"].createElement(Button, {
2183
2185
  type: "button",
2184
2186
  text: "Next",
2185
- action: () => _togglePageForward(formId, pagingInfo.pageIndex + 1),
2187
+ action: () => _doTogglePageForward(formId, pagingInfo.pageIndex + 1),
2186
2188
  useDefaultTheme: useDefaultTheme
2187
2189
  }), isLastPage && /*#__PURE__*/React__default["default"].createElement(Button, {
2188
2190
  text: (settings === null || settings === void 0 ? void 0 : settings.submitButtonText) || "Submit",
2189
2191
  type: "button",
2190
2192
  loading: status === null || status === void 0 ? void 0 : status.isLoading,
2191
2193
  action: () => {
2192
- _submitForm(formId);
2194
+ _onSubmit(formId);
2193
2195
 
2194
- if (customSubmit) customSubmit();
2196
+ if (onCustomSubmit) onCustomSubmit();
2195
2197
  },
2196
2198
  useDefaultTheme: useDefaultTheme
2197
- })), (status === null || status === void 0 ? void 0 : status.isLoading) && !(status !== null && status !== void 0 && status.hasSuccess) && /*#__PURE__*/React__default["default"].createElement(LoadingSpinner, {
2199
+ })), (status === null || status === void 0 ? void 0 : status.isLoading) && !(status !== null && status !== void 0 && status.hasSuccess) && /*#__PURE__*/React__default["default"].createElement(Loader, {
2198
2200
  className: "loading",
2199
2201
  height: 24,
2200
2202
  width: 24,
2201
2203
  color: "#333"
2202
- }), (status === null || status === void 0 ? void 0 : status.hasSuccess) && (status === null || status === void 0 ? void 0 : status.successMessage) && /*#__PURE__*/React__default["default"].createElement("p", {
2204
+ }), (status === null || status === void 0 ? void 0 : status.hasSuccess) && (status === null || status === void 0 ? void 0 : status.messages.success) && /*#__PURE__*/React__default["default"].createElement("p", {
2203
2205
  className: "success-message"
2204
- }, status.successMessage)));
2206
+ }, status.messages.success), (errors === null || errors === void 0 ? void 0 : errors.length) >= 1 && validate && /*#__PURE__*/React__default["default"].createElement("div", {
2207
+ className: "form__errors",
2208
+ role: "alert"
2209
+ }, errors === null || errors === void 0 ? void 0 : errors.map(({
2210
+ message
2211
+ }, i) => {
2212
+ return /*#__PURE__*/React__default["default"].createElement(Callout, {
2213
+ className: "form__error",
2214
+ text: message,
2215
+ key: i
2216
+ });
2217
+ }))));
2205
2218
  } else {
2206
2219
  return /*#__PURE__*/React__default["default"].createElement(ThemeProvider, {
2207
2220
  theme: defaultTheme
@@ -2214,7 +2227,7 @@ const Form = ({
2214
2227
  formId: formId,
2215
2228
  setValue: _setValue,
2216
2229
  setDateRangeValues: _setDateRangeValues,
2217
- validateField: _validateField,
2230
+ onValidateField: _onValidateField,
2218
2231
  defaultLanguage: defaultLanguage,
2219
2232
  errors: errors,
2220
2233
  useDefaultTheme: useDefaultTheme,
@@ -2225,19 +2238,30 @@ const Form = ({
2225
2238
  text: (settings === null || settings === void 0 ? void 0 : settings.submitButtonText) || "Submit",
2226
2239
  type: "button",
2227
2240
  action: () => {
2228
- _submitForm(formId);
2241
+ _onSubmit(formId);
2229
2242
 
2230
- if (customSubmit) customSubmit();
2243
+ if (onCustomSubmit) onCustomSubmit();
2231
2244
  },
2232
2245
  useDefaultTheme: useDefaultTheme
2233
- })), (status === null || status === void 0 ? void 0 : status.isLoading) && !(status !== null && status !== void 0 && status.hasSuccess) && /*#__PURE__*/React__default["default"].createElement(LoadingSpinner, {
2246
+ })), (status === null || status === void 0 ? void 0 : status.isLoading) && !(status !== null && status !== void 0 && status.hasSuccess) && /*#__PURE__*/React__default["default"].createElement(Loader, {
2234
2247
  className: "loading",
2235
2248
  height: 24,
2236
2249
  width: 24,
2237
2250
  color: "#333"
2238
- }), (status === null || status === void 0 ? void 0 : status.hasSuccess) && (status === null || status === void 0 ? void 0 : status.successMessage) && /*#__PURE__*/React__default["default"].createElement("p", {
2251
+ }), (status === null || status === void 0 ? void 0 : status.hasSuccess) && (status === null || status === void 0 ? void 0 : status.messages.success) && /*#__PURE__*/React__default["default"].createElement("p", {
2239
2252
  className: "success-message"
2240
- }, status.successMessage)));
2253
+ }, status.messages.success), (errors === null || errors === void 0 ? void 0 : errors.length) >= 1 && validate && /*#__PURE__*/React__default["default"].createElement("div", {
2254
+ className: "form__errors",
2255
+ role: "alert"
2256
+ }, errors === null || errors === void 0 ? void 0 : errors.map(({
2257
+ message
2258
+ }, i) => {
2259
+ return /*#__PURE__*/React__default["default"].createElement(Callout, {
2260
+ className: "form__error",
2261
+ text: message,
2262
+ key: i
2263
+ });
2264
+ }))));
2241
2265
  }
2242
2266
  };
2243
2267
 
@@ -2245,12 +2269,12 @@ Form.propTypes = {
2245
2269
  className: PropTypes__default["default"].string,
2246
2270
  formId: PropTypes__default["default"].string,
2247
2271
  useDefaultTheme: PropTypes__default["default"].bool,
2248
- customSubmit: PropTypes__default["default"].func
2272
+ onCustomSubmit: PropTypes__default["default"].func
2249
2273
  };
2250
2274
 
2275
+ exports.Form = Form;
2251
2276
  exports.actions = actions;
2252
- exports["default"] = Form;
2253
2277
  exports.reducer = reducer;
2254
- exports.sagas = formV2Sagas;
2278
+ exports.sagas = sagas;
2255
2279
  exports.selectors = selectors;
2256
2280
  //# sourceMappingURL=forms.js.map