@servicetitan/mpa-components 0.2.2 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. package/lib/components/settings/company-details/index.d.ts +10 -9
  2. package/lib/components/settings/company-details/index.d.ts.map +1 -1
  3. package/lib/components/settings/company-details/index.js.map +1 -1
  4. package/lib/components/settings/company-email-footer/company-email-footer.stories.js +2 -2
  5. package/lib/components/settings/company-email-footer/company-email-footer.stories.js.map +1 -1
  6. package/lib/components/settings/company-email-footer/index.d.ts +4 -4
  7. package/lib/components/settings/company-email-footer/index.d.ts.map +1 -1
  8. package/lib/components/settings/company-email-reply-to/index.d.ts +1 -1
  9. package/lib/components/settings/company-email-reply-to/index.d.ts.map +1 -1
  10. package/lib/components/settings/company-email-sender/company-email-sender.stories.d.ts +3 -1
  11. package/lib/components/settings/company-email-sender/company-email-sender.stories.d.ts.map +1 -1
  12. package/lib/components/settings/company-email-sender/company-email-sender.stories.js +7 -3
  13. package/lib/components/settings/company-email-sender/company-email-sender.stories.js.map +1 -1
  14. package/lib/components/settings/company-email-sender/custom-domain-sender.d.ts +12 -0
  15. package/lib/components/settings/company-email-sender/custom-domain-sender.d.ts.map +1 -0
  16. package/lib/components/settings/company-email-sender/custom-domain-sender.js +29 -0
  17. package/lib/components/settings/company-email-sender/custom-domain-sender.js.map +1 -0
  18. package/lib/components/settings/company-email-sender/index.d.ts +2 -11
  19. package/lib/components/settings/company-email-sender/index.d.ts.map +1 -1
  20. package/lib/components/settings/company-email-sender/index.js +2 -28
  21. package/lib/components/settings/company-email-sender/index.js.map +1 -1
  22. package/lib/components/settings/company-email-sender/simple-sender.d.ts +8 -0
  23. package/lib/components/settings/company-email-sender/simple-sender.d.ts.map +1 -0
  24. package/lib/components/settings/company-email-sender/simple-sender.js +18 -0
  25. package/lib/components/settings/company-email-sender/simple-sender.js.map +1 -0
  26. package/lib/components/settings/company-trade-checkbox/index.d.ts +2 -2
  27. package/lib/components/settings/company-trade-checkbox/index.d.ts.map +1 -1
  28. package/lib/components/settings/company-trade-checkbox/index.js.map +1 -1
  29. package/lib/components/settings/company-trades-picker/index.d.ts +3 -3
  30. package/lib/components/settings/company-trades-picker/index.d.ts.map +1 -1
  31. package/lib/components/settings/company-trades-picker/index.js.map +1 -1
  32. package/lib/components/settings/double-opt-in/double-opt-in.stories.js +2 -2
  33. package/lib/components/settings/double-opt-in/double-opt-in.stories.js.map +1 -1
  34. package/lib/components/settings/double-opt-in/index.d.ts +5 -5
  35. package/lib/components/settings/double-opt-in/index.d.ts.map +1 -1
  36. package/lib/components/settings/email-validation/email-validation.stories.d.ts +13 -4
  37. package/lib/components/settings/email-validation/email-validation.stories.d.ts.map +1 -1
  38. package/lib/components/settings/email-validation/email-validation.stories.js +50 -23
  39. package/lib/components/settings/email-validation/email-validation.stories.js.map +1 -1
  40. package/lib/components/settings/email-validation/index.d.ts +5 -5
  41. package/lib/components/settings/email-validation/index.d.ts.map +1 -1
  42. package/lib/components/settings/email-validation/index.js +3 -2
  43. package/lib/components/settings/email-validation/index.js.map +1 -1
  44. package/lib/components/settings/form-errors-list/index.d.ts +7 -0
  45. package/lib/components/settings/form-errors-list/index.d.ts.map +1 -0
  46. package/lib/components/settings/form-errors-list/index.js +15 -0
  47. package/lib/components/settings/form-errors-list/index.js.map +1 -0
  48. package/lib/components/settings/index.d.ts +2 -0
  49. package/lib/components/settings/index.d.ts.map +1 -1
  50. package/lib/components/settings/index.js +2 -0
  51. package/lib/components/settings/index.js.map +1 -1
  52. package/lib/components/settings/opt-out-message/index.d.ts +6 -6
  53. package/lib/components/settings/opt-out-message/index.d.ts.map +1 -1
  54. package/lib/components/settings/opt-out-message/opt-out-message.stories.js +2 -2
  55. package/lib/components/settings/opt-out-message/opt-out-message.stories.js.map +1 -1
  56. package/package.json +3 -9
  57. package/src/components/settings/company-details/index.tsx +10 -9
  58. package/src/components/settings/company-email-footer/company-email-footer.stories.tsx +2 -2
  59. package/src/components/settings/company-email-footer/index.tsx +4 -4
  60. package/src/components/settings/company-email-reply-to/index.tsx +1 -1
  61. package/src/components/settings/company-email-sender/company-email-sender.stories.tsx +11 -3
  62. package/src/components/settings/company-email-sender/custom-domain-sender.tsx +129 -0
  63. package/src/components/settings/company-email-sender/index.tsx +2 -129
  64. package/src/components/settings/company-email-sender/simple-sender.tsx +71 -0
  65. package/src/components/settings/company-trade-checkbox/index.tsx +3 -3
  66. package/src/components/settings/company-trades-picker/index.tsx +4 -4
  67. package/src/components/settings/double-opt-in/double-opt-in.stories.tsx +2 -2
  68. package/src/components/settings/double-opt-in/index.tsx +5 -5
  69. package/src/components/settings/email-validation/email-validation.stories.tsx +56 -27
  70. package/src/components/settings/email-validation/index.tsx +14 -11
  71. package/src/components/settings/form-errors-list/index.tsx +39 -0
  72. package/src/components/settings/index.ts +2 -0
  73. package/src/components/settings/opt-out-message/index.tsx +6 -6
  74. package/src/components/settings/opt-out-message/opt-out-message.stories.tsx +2 -2
  75. package/tsconfig.tsbuildinfo +1 -1
@@ -12,25 +12,52 @@ import { useEffect, useState } from 'react';
12
12
  import { TableState } from '@servicetitan/table';
13
13
  import { InMemoryDataSource } from '@servicetitan/data-query';
14
14
  import { emailValidationHoc } from '.';
15
- export const EmailValidation = emailValidationHoc({
16
- resultToText: new Map([
17
- ['ok', 'Valid'],
18
- ['fail', 'Invalid'],
19
- ]),
15
+ var EmailValidationLevel;
16
+ (function (EmailValidationLevel) {
17
+ EmailValidationLevel[EmailValidationLevel["Low"] = 1] = "Low";
18
+ EmailValidationLevel[EmailValidationLevel["Medium"] = 2] = "Medium";
19
+ EmailValidationLevel[EmailValidationLevel["High"] = 3] = "High";
20
+ })(EmailValidationLevel || (EmailValidationLevel = {}));
21
+ var EmailValidationResult;
22
+ (function (EmailValidationResult) {
23
+ EmailValidationResult[EmailValidationResult["Undeliverable"] = 0] = "Undeliverable";
24
+ EmailValidationResult[EmailValidationResult["Typo"] = 1] = "Typo";
25
+ EmailValidationResult[EmailValidationResult["Risky"] = 2] = "Risky";
26
+ EmailValidationResult[EmailValidationResult["Pending"] = -1] = "Pending";
27
+ })(EmailValidationResult || (EmailValidationResult = {}));
28
+ const levelResultMap = new Map([
29
+ [EmailValidationLevel.High, [EmailValidationResult.Undeliverable]],
30
+ [EmailValidationLevel.Medium, [EmailValidationResult.Undeliverable]],
31
+ [EmailValidationLevel.Low, [EmailValidationResult.Undeliverable]],
32
+ ]);
33
+ const resultToText = new Map([
34
+ [EmailValidationResult.Risky, 'Risky'],
35
+ [EmailValidationResult.Typo, 'Typo'],
36
+ [EmailValidationResult.Undeliverable, 'Undeliverable'],
37
+ ]);
38
+ const resultToTooltipText = new Map([
39
+ [
40
+ EmailValidationResult.Risky,
41
+ 'Address was determined risky based on historical analysis or problematic results.',
42
+ ],
43
+ [
44
+ EmailValidationResult.Typo,
45
+ 'Address was possibly typed incorrectly during sign-up, or matches known typo domains',
46
+ ],
47
+ [
48
+ EmailValidationResult.Undeliverable,
49
+ 'Address was determined invalid after performing multiple checks including MX, SMTP, etc.',
50
+ ],
51
+ ]);
52
+ const EmailValidationComponent = emailValidationHoc({
53
+ resultToText,
20
54
  levelTypeMap: {
21
- high: 'high',
22
- medium: 'medium',
23
- low: 'low',
55
+ high: EmailValidationLevel.High,
56
+ medium: EmailValidationLevel.Medium,
57
+ low: EmailValidationLevel.Low,
24
58
  },
25
- levelsResultMap: new Map([
26
- ['high', ['ok', 'fail']],
27
- ['medium', ['ok', 'fail']],
28
- ['high', ['ok']],
29
- ]),
30
- resultToTooltipText: new Map([
31
- ['ok', 'Valid'],
32
- ['fail', 'Invalid'],
33
- ]),
59
+ levelResultMap,
60
+ resultToTooltipText,
34
61
  TenantDateCell: (props) => {
35
62
  const value = props.dataItem[props.field];
36
63
  return _jsx("td", Object.assign({ className: props.className }, { children: value.toString() }), void 0);
@@ -38,11 +65,11 @@ export const EmailValidation = emailValidationHoc({
38
65
  });
39
66
  export default {
40
67
  title: 'MPA Components/settings/EmailValidation',
41
- component: EmailValidation,
68
+ component: EmailValidationComponent,
42
69
  parameters: {},
43
70
  };
44
- export function EmailValidationSimple() {
45
- const [type, setType] = useState('high');
71
+ export function EmailValidation() {
72
+ const [type, setType] = useState(EmailValidationLevel.High);
46
73
  const [loading, setLoading] = useState(true);
47
74
  const grid = new TableState({
48
75
  dataSource: null,
@@ -60,7 +87,7 @@ export function EmailValidationSimple() {
60
87
  id: 1,
61
88
  active: false,
62
89
  createdOn: new Date(),
63
- result: 'ok',
90
+ result: EmailValidationResult.Risky,
64
91
  email: 'varg@vikernes.com',
65
92
  dateAdded: new Date(),
66
93
  },
@@ -68,7 +95,7 @@ export function EmailValidationSimple() {
68
95
  id: 2,
69
96
  active: true,
70
97
  createdOn: new Date(),
71
- result: 'fail',
98
+ result: EmailValidationResult.Typo,
72
99
  email: 'joe@biden.com',
73
100
  dateAdded: new Date(),
74
101
  },
@@ -79,6 +106,6 @@ export function EmailValidationSimple() {
79
106
  }
80
107
  load();
81
108
  });
82
- return (_jsx(EmailValidation, { loading: loading, resultGrid: grid, validationRiskType: type, setValidationRiskType: setType, handleDownload: () => alert('downloading csv') }, void 0));
109
+ return (_jsx(EmailValidationComponent, { loading: loading, resultGrid: grid, validationRiskType: type, setValidationRiskType: setType, handleDownload: () => alert('downloading csv') }, void 0));
83
110
  }
84
111
  //# sourceMappingURL=email-validation.stories.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"email-validation.stories.js","sourceRoot":"","sources":["../../../../src/components/settings/email-validation/email-validation.stories.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"email-validation.stories.js","sourceRoot":"","sources":["../../../../src/components/settings/email-validation/email-validation.stories.tsx"],"names":[],"mappings":"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"}
@@ -8,25 +8,25 @@ export interface EmailValidationTableRecord<T> {
8
8
  result: T;
9
9
  dateAdded?: Date | undefined;
10
10
  }
11
- export interface EmailValidationProps<TEmailValidationType extends string = string, TEmailValidationResult extends string = string> {
11
+ export interface EmailValidationProps<TEmailValidationType extends string | number = string, TEmailValidationResult extends string | number = string> {
12
12
  className?: string;
13
13
  loading: boolean;
14
14
  resultGrid: TableState<EmailValidationTableRecord<TEmailValidationResult>>;
15
- validationRiskType: TEmailValidationType;
15
+ validationRiskType?: TEmailValidationType;
16
16
  handleDownload(): void;
17
17
  setValidationRiskType(type: TEmailValidationType): void;
18
18
  }
19
- interface EmailValidationHocOptions<TEmailValidationType extends string = string, TEmailValidationResult extends string = string> {
19
+ interface EmailValidationHocOptions<TEmailValidationType extends string | number = string, TEmailValidationResult extends string | number = string> {
20
20
  resultToText: Map<TEmailValidationResult, string>;
21
21
  levelTypeMap: {
22
22
  high: TEmailValidationType;
23
23
  medium: TEmailValidationType;
24
24
  low: TEmailValidationType;
25
25
  };
26
- levelsResultMap: Map<TEmailValidationType, TEmailValidationResult[]>;
26
+ levelResultMap: Map<TEmailValidationType, TEmailValidationResult[]>;
27
27
  resultToTooltipText: Map<TEmailValidationResult, string>;
28
28
  TenantDateCell: FC<TableCellProps>;
29
29
  }
30
- export declare function emailValidationHoc<TEmailValidationType extends string = string, TEmailValidationResult extends string = string>({ resultToText, levelTypeMap, resultToTooltipText, levelsResultMap, TenantDateCell, }: EmailValidationHocOptions<TEmailValidationType, TEmailValidationResult>): ({ className, handleDownload, loading, resultGrid, setValidationRiskType, validationRiskType, }: EmailValidationProps<TEmailValidationType>) => JSX.Element;
30
+ export declare function emailValidationHoc<TEmailValidationType extends string | number = string, TEmailValidationResult extends string | number = string>({ resultToText, levelTypeMap, resultToTooltipText, levelResultMap, TenantDateCell, }: EmailValidationHocOptions<TEmailValidationType, TEmailValidationResult>): ({ className, handleDownload, loading, resultGrid, setValidationRiskType, validationRiskType, }: EmailValidationProps<TEmailValidationType, TEmailValidationResult>) => JSX.Element;
31
31
  export {};
32
32
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/settings/email-validation/index.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,EAAE,EAAe,MAAM,OAAO,CAAC;AAgBxC,OAAO,EAMH,UAAU,EACV,cAAc,EACjB,MAAM,qBAAqB,CAAC;AAS7B,MAAM,WAAW,0BAA0B,CAAC,CAAC;IACzC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,MAAM,EAAE,CAAC,CAAC;IACV,SAAS,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC;CAChC;AAED,MAAM,WAAW,oBAAoB,CACjC,oBAAoB,SAAS,MAAM,GAAG,MAAM,EAC5C,sBAAsB,SAAS,MAAM,GAAG,MAAM;IAE9C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,UAAU,CAAC,0BAA0B,CAAC,sBAAsB,CAAC,CAAC,CAAC;IAC3E,kBAAkB,EAAE,oBAAoB,CAAC;IACzC,cAAc,IAAI,IAAI,CAAC;IACvB,qBAAqB,CAAC,IAAI,EAAE,oBAAoB,GAAG,IAAI,CAAC;CAC3D;AAED,UAAU,yBAAyB,CAC/B,oBAAoB,SAAS,MAAM,GAAG,MAAM,EAC5C,sBAAsB,SAAS,MAAM,GAAG,MAAM;IAE9C,YAAY,EAAE,GAAG,CAAC,sBAAsB,EAAE,MAAM,CAAC,CAAC;IAClD,YAAY,EAAE;QACV,IAAI,EAAE,oBAAoB,CAAC;QAC3B,MAAM,EAAE,oBAAoB,CAAC;QAC7B,GAAG,EAAE,oBAAoB,CAAC;KAC7B,CAAC;IACF,eAAe,EAAE,GAAG,CAAC,oBAAoB,EAAE,sBAAsB,EAAE,CAAC,CAAC;IACrE,mBAAmB,EAAE,GAAG,CAAC,sBAAsB,EAAE,MAAM,CAAC,CAAC;IACzD,cAAc,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC;CACtC;AAED,wBAAgB,kBAAkB,CAC9B,oBAAoB,SAAS,MAAM,GAAG,MAAM,EAC5C,sBAAsB,SAAS,MAAM,GAAG,MAAM,EAChD,EACE,YAAY,EACZ,YAAY,EACZ,mBAAmB,EACnB,eAAe,EACf,cAAc,GACjB,EAAE,yBAAyB,CAAC,oBAAoB,EAAE,sBAAsB,CAAC,oGAyBnE,qBAAqB,oBAAoB,CAAC,iBAiKhD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/settings/email-validation/index.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,EAAE,EAAe,MAAM,OAAO,CAAC;AAgBxC,OAAO,EAMH,UAAU,EACV,cAAc,EACjB,MAAM,qBAAqB,CAAC;AAS7B,MAAM,WAAW,0BAA0B,CAAC,CAAC;IACzC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,MAAM,EAAE,CAAC,CAAC;IACV,SAAS,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC;CAChC;AAED,MAAM,WAAW,oBAAoB,CACjC,oBAAoB,SAAS,MAAM,GAAG,MAAM,GAAG,MAAM,EACrD,sBAAsB,SAAS,MAAM,GAAG,MAAM,GAAG,MAAM;IAEvD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,UAAU,CAAC,0BAA0B,CAAC,sBAAsB,CAAC,CAAC,CAAC;IAC3E,kBAAkB,CAAC,EAAE,oBAAoB,CAAC;IAC1C,cAAc,IAAI,IAAI,CAAC;IACvB,qBAAqB,CAAC,IAAI,EAAE,oBAAoB,GAAG,IAAI,CAAC;CAC3D;AAED,UAAU,yBAAyB,CAC/B,oBAAoB,SAAS,MAAM,GAAG,MAAM,GAAG,MAAM,EACrD,sBAAsB,SAAS,MAAM,GAAG,MAAM,GAAG,MAAM;IAEvD,YAAY,EAAE,GAAG,CAAC,sBAAsB,EAAE,MAAM,CAAC,CAAC;IAClD,YAAY,EAAE;QACV,IAAI,EAAE,oBAAoB,CAAC;QAC3B,MAAM,EAAE,oBAAoB,CAAC;QAC7B,GAAG,EAAE,oBAAoB,CAAC;KAC7B,CAAC;IACF,cAAc,EAAE,GAAG,CAAC,oBAAoB,EAAE,sBAAsB,EAAE,CAAC,CAAC;IACpE,mBAAmB,EAAE,GAAG,CAAC,sBAAsB,EAAE,MAAM,CAAC,CAAC;IACzD,cAAc,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC;CACtC;AAED,wBAAgB,kBAAkB,CAC9B,oBAAoB,SAAS,MAAM,GAAG,MAAM,GAAG,MAAM,EACrD,sBAAsB,SAAS,MAAM,GAAG,MAAM,GAAG,MAAM,EACzD,EACE,YAAY,EACZ,YAAY,EACZ,mBAAmB,EACnB,cAAc,EACd,cAAc,GACjB,EAAE,yBAAyB,CAAC,oBAAoB,EAAE,sBAAsB,CAAC,oGAyBnE,qBAAqB,oBAAoB,EAAE,sBAAsB,CAAC,iBAoKxE"}
@@ -6,7 +6,7 @@ import { observer, useLocalStore } from 'mobx-react';
6
6
  import { BodyText, Button, Card, Container, Form, Grid, Layout, Link, Stack, Text, Tooltip, } from '@servicetitan/design-system';
7
7
  import { DateRangeColumnMenuFilter, multiSelectColumnMenuFilter, StandardColumnMenuFilter, Table, TableColumn, } from '@servicetitan/table';
8
8
  import { ResultDefinitionsModal } from '../result-definitions-modal';
9
- export function emailValidationHoc({ resultToText, levelTypeMap, resultToTooltipText, levelsResultMap, TenantDateCell, }) {
9
+ export function emailValidationHoc({ resultToText, levelTypeMap, resultToTooltipText, levelResultMap, TenantDateCell, }) {
10
10
  const ResultColumnMenuFilter = multiSelectColumnMenuFilter([...resultToText.keys()], result => resultToText.get(result));
11
11
  const ResultCell = props => {
12
12
  const { result } = props.dataItem;
@@ -30,7 +30,8 @@ export function emailValidationHoc({ resultToText, levelTypeMap, resultToTooltip
30
30
  };
31
31
  const getResultsItemsForLevel = (level) => {
32
32
  var _a;
33
- return (_a = levelsResultMap.get(level)) === null || _a === void 0 ? void 0 : _a.map(r => _jsx("div", { children: r }, r));
33
+ return (_a = levelResultMap
34
+ .get(level)) === null || _a === void 0 ? void 0 : _a.map(r => resultToText.get(r)).map(r => _jsx("div", { children: r }, r));
34
35
  };
35
36
  return (_jsxs(Container, Object.assign({ className: classnames(className, 'p-b-5 qa-email-validation') }, { children: [_jsxs(Stack, Object.assign({ justifyContent: "space-between", alignItems: "center", className: "m-b-2" }, { children: [_jsx(Text, Object.assign({ size: 4, className: "m-r-3" }, { children: "Email Validation" }), void 0), _jsx(Button, Object.assign({ small: true, primary: true, onClick: handleDownload, className: "qa-email-validation-download-csv", iconName: "file_download", iconPosition: "left" }, { children: "Download CSV" }), void 0)] }), void 0), _jsxs(Layout, Object.assign({ type: "support", direction: "right" }, { children: [_jsx(Layout.Section, { children: _jsx(Text, Object.assign({ size: 2, className: "m-b-4 c-neutral-90" }, { children: "Email Validation acts like a filter that will block emails from going to bad email addresses. You won't necessarily see these emails in your suppression list, but it will effect your number \u201CSent\u201D." }), void 0) }, void 0), _jsx(Layout.Section, {}, void 0)] }), void 0), _jsxs(Grid, Object.assign({ relaxed: true }, { children: [_jsx(Grid.Column, Object.assign({ width: 3 }, { children: _jsxs(Card, { children: [_jsxs(Card.Section, Object.assign({ light: true }, { children: [_jsx(Text, Object.assign({ bold: true, size: 3, className: "m-b-1" }, { children: "Set Your Preference" }), void 0), _jsx(Text, Object.assign({ size: 2, className: "m-b-1" }, { children: "Choose what level you want to enable for auto-suppression." }), void 0), _jsx(Link, Object.assign({ primary: true, onClick: handleClickLearnMore, className: "qa-email-validation-learn-more" }, { children: "Learn More" }), void 0)] }), void 0), _jsx(Card.Section, { children: _jsx(Form.Radio, { label: _jsxs("div", Object.assign({ className: "m-l-1" }, { children: [_jsxs(Text, Object.assign({ bold: true, size: 3, className: "m-b-1" }, { children: ["High", _jsx("span", Object.assign({ className: "c-neutral-90 fs-1 m-l-1" }, { children: "(recommended)" }), void 0)] }), void 0), _jsx(BodyText, Object.assign({ size: "small", className: "c-neutral-90" }, { children: getResultsItemsForLevel(levelTypeMap.high) }), void 0)] }), void 0), checked: validationRiskType === levelTypeMap.high, onChange: handleCheck(levelTypeMap.high), className: "qa-email-validation-high" }, void 0) }, void 0), _jsx(Card.Section, { children: _jsx(Form.Radio, { label: _jsxs("div", Object.assign({ className: "m-l-1" }, { children: [_jsx(Text, Object.assign({ bold: true, size: 3, className: "m-b-1" }, { children: "Medium" }), void 0), _jsx(BodyText, Object.assign({ size: "small", className: "c-neutral-90" }, { children: getResultsItemsForLevel(levelTypeMap.medium) }), void 0)] }), void 0), checked: validationRiskType === levelTypeMap.medium, onChange: handleCheck(levelTypeMap.medium), className: "qa-email-validation-medium" }, void 0) }, void 0), _jsx(Card.Section, { children: _jsx(Form.Radio, { label: _jsxs("div", Object.assign({ className: "m-l-1" }, { children: [_jsx(Text, Object.assign({ bold: true, size: 3, className: "m-b-1" }, { children: "Low" }), void 0), _jsx(BodyText, Object.assign({ size: "small", className: "c-neutral-90" }, { children: getResultsItemsForLevel(levelTypeMap.low) }), void 0)] }), void 0), checked: validationRiskType === levelTypeMap.low, onChange: handleCheck(levelTypeMap.low), className: "qa-email-validation-low" }, void 0) }, void 0)] }, void 0) }), void 0), _jsx(Grid.Column, Object.assign({ width: 9 }, { children: _jsxs(Table, Object.assign({ tableState: resultGrid, sortable: true, loading: loading, className: "qa-email-validation-table", scrollable: "none" }, { children: [_jsx(TableColumn, { field: "email", title: "Email Address", columnMenu: StandardColumnMenuFilter }, void 0), _jsx(TableColumn, { field: "result", title: "Result", cell: ResultCell, columnMenu: ResultColumnMenuFilter }, void 0), _jsx(TableColumn, { field: "dateAdded", title: "Date Added", cell: TenantDateCell, columnMenu: DateRangeColumnMenuFilter }, void 0)] }), void 0) }), void 0)] }), void 0), localStore.open && _jsx(ResultDefinitionsModal, { onClose: handleClose }, void 0)] }), void 0));
36
37
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/settings/email-validation/index.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/settings/email-validation/index.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { FC } from 'react';
2
+ import { FormState, ValidatableMapOrArray } from 'formstate';
3
+ export interface FormErrorsListProps<T extends ValidatableMapOrArray = ValidatableMapOrArray> {
4
+ form: FormState<T>;
5
+ }
6
+ export declare const FormErrorsList: FC<FormErrorsListProps>;
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/settings/form-errors-list/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAE3B,OAAO,EAAyB,SAAS,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAIpF,MAAM,WAAW,mBAAmB,CAAC,CAAC,SAAS,qBAAqB,GAAG,qBAAqB;IACxF,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;CACtB;AAED,eAAO,MAAM,cAAc,EAAE,EAAE,CAAC,mBAAmB,CA4BjD,CAAC"}
@@ -0,0 +1,15 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { observer } from 'mobx-react';
3
+ import { Banner } from '@servicetitan/design-system';
4
+ export const FormErrorsList = observer(({ form }) => {
5
+ const getErrors = () => {
6
+ return Object.entries(form.$).map(([key, field]) => {
7
+ return field.hasError ? (_jsx("li", Object.assign({ className: "qa-settings-email-error-list-item" }, { children: field.error }), key)) : null;
8
+ });
9
+ };
10
+ if (!form.hasError) {
11
+ return null;
12
+ }
13
+ return (_jsxs(Banner, Object.assign({ status: "critical", title: "Missing Fields", icon: true, className: "m-b-2 qa-settings-email-error" }, { children: [_jsx("p", { children: "Please complete all required fields:" }, void 0), _jsx("ul", Object.assign({ className: "qa-settings-email-error-list" }, { children: getErrors() }), void 0)] }), void 0));
14
+ });
15
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/settings/form-errors-list/index.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAGtC,OAAO,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AAMrD,MAAM,CAAC,MAAM,cAAc,GAA4B,QAAQ,CAAC,CAAC,EAAE,IAAI,EAAuB,EAAE,EAAE;IAC9F,MAAM,SAAS,GAAG,GAAG,EAAE;QACnB,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAC7B,CAAC,CAAC,GAAG,EAAE,KAAK,CAAuD,EAAE,EAAE;YACnE,OAAO,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CACpB,2BAAc,SAAS,EAAC,mCAAmC,gBACtD,KAAK,CAAC,KAAK,KADP,GAAG,CAEP,CACR,CAAC,CAAC,CAAC,IAAI,CAAC;QACb,CAAC,CACJ,CAAC;IACN,CAAC,CAAC;IAEF,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;QAChB,OAAO,IAAI,CAAC;KACf;IAED,OAAO,CACH,MAAC,MAAM,kBACH,MAAM,EAAC,UAAU,EACjB,KAAK,EAAC,gBAAgB,EACtB,IAAI,QACJ,SAAS,EAAC,+BAA+B,iBAEzC,uEAA2C,EAC3C,2BAAI,SAAS,EAAC,8BAA8B,gBAAE,SAAS,EAAE,YAAM,aAC1D,CACZ,CAAC;AACN,CAAC,CAAC,CAAC"}
@@ -4,6 +4,8 @@ export * from './company-email-reply-to';
4
4
  export * from './company-email-sender';
5
5
  export * from './company-trades-picker';
6
6
  export * from './double-opt-in';
7
+ export * from './email-validation';
8
+ export * from './form-errors-list';
7
9
  export * from './logo-picker';
8
10
  export * from './opt-out-message';
9
11
  export * from './settings-section';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/settings/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/settings/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC"}
@@ -4,6 +4,8 @@ export * from './company-email-reply-to';
4
4
  export * from './company-email-sender';
5
5
  export * from './company-trades-picker';
6
6
  export * from './double-opt-in';
7
+ export * from './email-validation';
8
+ export * from './form-errors-list';
7
9
  export * from './logo-picker';
8
10
  export * from './opt-out-message';
9
11
  export * from './settings-section';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/settings/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/settings/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC"}
@@ -1,11 +1,11 @@
1
1
  import { FC } from 'react';
2
- import { CheckboxFieldState, InputFieldState } from '@servicetitan/form';
2
+ import { CheckboxFieldState, InputFieldState, TextAreaFieldState } from '@servicetitan/form';
3
3
  export interface OptOutMessageState {
4
- subjectLine: InputFieldState<string>;
5
- header: InputFieldState<string>;
6
- body: InputFieldState<string>;
7
- buttonText: InputFieldState<string>;
8
- monthsLimit: InputFieldState<number>;
4
+ subjectLine: InputFieldState<string | undefined>;
5
+ header: InputFieldState<string | undefined>;
6
+ body: TextAreaFieldState<string | undefined>;
7
+ buttonText: InputFieldState<string | undefined>;
8
+ monthsLimit: InputFieldState<number | undefined>;
9
9
  enabled: CheckboxFieldState;
10
10
  autoSuppressionEnabled: CheckboxFieldState;
11
11
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/settings/opt-out-message/index.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAmC,MAAM,OAAO,CAAC;AAG5D,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AASzE,MAAM,WAAW,kBAAkB;IAC/B,WAAW,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;IACrC,MAAM,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;IAChC,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;IAC9B,UAAU,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;IACpC,WAAW,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;IACrC,OAAO,EAAE,kBAAkB,CAAC;IAC5B,sBAAsB,EAAE,kBAAkB,CAAC;CAC9C;AACD,MAAM,WAAW,kBAAkB;IAC/B,SAAS,EAAE,kBAAkB,CAAC;IAC9B,mBAAmB,CAAC,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;CAChD;AAED,eAAO,MAAM,aAAa,EAAE,EAAE,CAAC,kBAAkB,CA8HhD,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/settings/opt-out-message/index.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAmC,MAAM,OAAO,CAAC;AAG5D,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAS7F,MAAM,WAAW,kBAAkB;IAC/B,WAAW,EAAE,eAAe,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IACjD,MAAM,EAAE,eAAe,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAC5C,IAAI,EAAE,kBAAkB,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAC7C,UAAU,EAAE,eAAe,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAChD,WAAW,EAAE,eAAe,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IACjD,OAAO,EAAE,kBAAkB,CAAC;IAC5B,sBAAsB,EAAE,kBAAkB,CAAC;CAC9C;AACD,MAAM,WAAW,kBAAkB;IAC/B,SAAS,EAAE,kBAAkB,CAAC;IAC9B,mBAAmB,CAAC,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;CAChD;AAED,eAAO,MAAM,aAAa,EAAE,EAAE,CAAC,kBAAkB,CA8HhD,CAAC"}
@@ -5,7 +5,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
5
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
6
  };
7
7
  import { jsx as _jsx } from "react/jsx-runtime";
8
- import { CheckboxFieldState, InputFieldState } from '@servicetitan/form';
8
+ import { CheckboxFieldState, InputFieldState, TextAreaFieldState } from '@servicetitan/form';
9
9
  import { injectable, provide, useDependencies } from '@servicetitan/react-ioc';
10
10
  import { FormState } from 'formstate';
11
11
  import { OptOutMessage as Component } from '.';
@@ -23,7 +23,7 @@ let OptOutStore = class OptOutStore {
23
23
  value: new FormState({
24
24
  subjectLine: new InputFieldState('Good bye'),
25
25
  header: new InputFieldState('Opt out of emails'),
26
- body: new InputFieldState('Sorry to see you go!'),
26
+ body: new TextAreaFieldState('Sorry to see you go!'),
27
27
  buttonText: new InputFieldState('Bye'),
28
28
  monthsLimit: new InputFieldState(6),
29
29
  enabled: new CheckboxFieldState(true),
@@ -1 +1 @@
1
- {"version":3,"file":"opt-out-message.stories.js","sourceRoot":"","sources":["../../../../src/components/settings/opt-out-message/opt-out-message.stories.tsx"],"names":[],"mappings":";;;;;;;AAAA,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACzE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/E,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,aAAa,IAAI,SAAS,EAAE,MAAM,GAAG,CAAC;AAE/C,eAAe;IACX,KAAK,EAAE,uCAAuC;IAC9C,SAAS,EAAE,SAAS;IACpB,UAAU,EAAE,EAAE;CACjB,CAAC;AAGF,IAAM,WAAW,GAAjB,MAAM,WAAW;IAAjB;QACI;;;;mBAAO,IAAI,SAAS,CAAC;gBACjB,WAAW,EAAE,IAAI,eAAe,CAAC,UAAU,CAAC;gBAC5C,MAAM,EAAE,IAAI,eAAe,CAAC,mBAAmB,CAAC;gBAChD,IAAI,EAAE,IAAI,eAAe,CAAC,sBAAsB,CAAC;gBACjD,UAAU,EAAE,IAAI,eAAe,CAAC,KAAK,CAAC;gBACtC,WAAW,EAAE,IAAI,eAAe,CAAC,CAAC,CAAC;gBACnC,OAAO,EAAE,IAAI,kBAAkB,CAAC,IAAI,CAAC;gBACrC,sBAAsB,EAAE,IAAI,kBAAkB,CAAC,IAAI,CAAC;aACvD,CAAC;WAAC;IACP,CAAC;CAAA,CAAA;AAVK,WAAW;IADhB,UAAU,EAAE;GACP,WAAW,CAUhB;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,OAAO,CAAC;IACjC,UAAU,EAAE,CAAC,WAAW,CAAC;CAC5B,CAAC,CAAC,GAAG,EAAE;IACJ,MAAM,CAAC,KAAK,CAAC,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC;IAE7C,OAAO,KAAC,SAAS,IAAC,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,WAAI,CAAC;AAClD,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"opt-out-message.stories.js","sourceRoot":"","sources":["../../../../src/components/settings/opt-out-message/opt-out-message.stories.tsx"],"names":[],"mappings":";;;;;;;AAAA,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC7F,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/E,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,aAAa,IAAI,SAAS,EAAE,MAAM,GAAG,CAAC;AAE/C,eAAe;IACX,KAAK,EAAE,uCAAuC;IAC9C,SAAS,EAAE,SAAS;IACpB,UAAU,EAAE,EAAE;CACjB,CAAC;AAGF,IAAM,WAAW,GAAjB,MAAM,WAAW;IAAjB;QACI;;;;mBAAO,IAAI,SAAS,CAAC;gBACjB,WAAW,EAAE,IAAI,eAAe,CAAC,UAAU,CAAC;gBAC5C,MAAM,EAAE,IAAI,eAAe,CAAC,mBAAmB,CAAC;gBAChD,IAAI,EAAE,IAAI,kBAAkB,CAAC,sBAAsB,CAAC;gBACpD,UAAU,EAAE,IAAI,eAAe,CAAC,KAAK,CAAC;gBACtC,WAAW,EAAE,IAAI,eAAe,CAAC,CAAC,CAAC;gBACnC,OAAO,EAAE,IAAI,kBAAkB,CAAC,IAAI,CAAC;gBACrC,sBAAsB,EAAE,IAAI,kBAAkB,CAAC,IAAI,CAAC;aACvD,CAAC;WAAC;IACP,CAAC;CAAA,CAAA;AAVK,WAAW;IADhB,UAAU,EAAE;GACP,WAAW,CAUhB;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,OAAO,CAAC;IACjC,UAAU,EAAE,CAAC,WAAW,CAAC;CAC5B,CAAC,CAAC,GAAG,EAAE;IACJ,MAAM,CAAC,KAAK,CAAC,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC;IAE7C,OAAO,KAAC,SAAS,IAAC,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,WAAI,CAAC;AAClD,CAAC,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,13 +1,9 @@
1
1
  {
2
2
  "name": "@servicetitan/mpa-components",
3
- "version": "0.2.2",
3
+ "version": "0.4.0",
4
4
  "description": "",
5
5
  "main": "./lib/index.js",
6
6
  "typings": "./lib/index.d.ts",
7
- "dependencies": {
8
- "classnames": "~2.3.1",
9
- "lodash": "4.17.21"
10
- },
11
7
  "peerDependencies": {
12
8
  "@servicetitan/confirm": "~21.4.1",
13
9
  "@servicetitan/design-system": "~10.1.1",
@@ -22,9 +18,7 @@
22
18
  },
23
19
  "devDependencies": {
24
20
  "@testing-library/react": "^12.0.0",
25
- "@types/history": "~4.7.7",
26
- "@types/lodash": "^4.14.182",
27
- "@types/react": "~17.0.15"
21
+ "@types/history": "~4.7.7"
28
22
  },
29
23
  "publishConfig": {
30
24
  "access": "restricted"
@@ -32,5 +26,5 @@
32
26
  "cli": {
33
27
  "webpack": false
34
28
  },
35
- "gitHead": "75d806e799cb1fd2aee0714ba06a6753cd478c12"
29
+ "gitHead": "fba3f9a9f4e8abe3ac19647eaa2b0069451d273c"
36
30
  }
@@ -1,5 +1,6 @@
1
1
  import { FC, Fragment, ReactNode } from 'react';
2
2
  import { observer } from 'mobx-react';
3
+ import { FieldState } from 'formstate';
3
4
 
4
5
  import { Form, Link } from '@servicetitan/design-system';
5
6
  import { NumberInput, InputFieldState } from '@servicetitan/form';
@@ -7,15 +8,15 @@ import { NumberInput, InputFieldState } from '@servicetitan/form';
7
8
  import { SettingsSection } from '../settings-section';
8
9
  export interface CompanyDetailsProps {
9
10
  formState: {
10
- city: InputFieldState<string>;
11
- companyEmail: InputFieldState<string>;
12
- companyName: InputFieldState<string>;
13
- state: InputFieldState<string>;
14
- street: InputFieldState<string>;
15
- tagline: InputFieldState<string>;
16
- unit: InputFieldState<string>;
17
- yearEstablished: InputFieldState<number>;
18
- zipCode: InputFieldState<string>;
11
+ city: InputFieldState<string | undefined>;
12
+ companyEmail: InputFieldState<string | undefined>;
13
+ companyName: InputFieldState<string | undefined>;
14
+ state: InputFieldState<string | undefined>;
15
+ street: InputFieldState<string | undefined>;
16
+ tagline: InputFieldState<string | undefined>;
17
+ unit: InputFieldState<string | undefined>;
18
+ yearEstablished: FieldState<number | undefined>;
19
+ zipCode: InputFieldState<string | undefined>;
19
20
  };
20
21
  logoPicker?: ReactNode;
21
22
  sectionDescription?: string | JSX.Element;
@@ -1,4 +1,4 @@
1
- import { InputFieldState } from '@servicetitan/form';
1
+ import { InputFieldState, TextAreaFieldState } from '@servicetitan/form';
2
2
  import { injectable, provide, useDependencies } from '@servicetitan/react-ioc';
3
3
  import { FormState } from 'formstate';
4
4
 
@@ -13,7 +13,7 @@ export default {
13
13
  @injectable()
14
14
  class CompanyEmailStore {
15
15
  form = new FormState({
16
- legalCopy: new InputFieldState('Legal copy example'),
16
+ legalCopy: new TextAreaFieldState('Legal copy example'),
17
17
  license: new InputFieldState('License'),
18
18
  copyrightText: new InputFieldState('Copyritght 2022'),
19
19
  });
@@ -2,15 +2,15 @@ import { FC, Fragment } from 'react';
2
2
  import { observer } from 'mobx-react';
3
3
 
4
4
  import { Form, Text } from '@servicetitan/design-system';
5
- import { InputFieldState } from '@servicetitan/form';
5
+ import { InputFieldState, TextAreaFieldState } from '@servicetitan/form';
6
6
 
7
7
  import { SettingsSection } from '../settings-section';
8
8
 
9
9
  export interface CompanyEmailFooterProps {
10
10
  formState: {
11
- legalCopy: InputFieldState<string>;
12
- license: InputFieldState<string>;
13
- copyrightText: InputFieldState<string>;
11
+ legalCopy: TextAreaFieldState<string | undefined>;
12
+ license: InputFieldState<string | undefined>;
13
+ copyrightText: InputFieldState<string | undefined>;
14
14
  };
15
15
  }
16
16
 
@@ -7,7 +7,7 @@ import { Form } from '@servicetitan/design-system';
7
7
  import { SettingsSection } from '../settings-section';
8
8
 
9
9
  export interface CompanyEmailReplyToProps {
10
- replyToEmail: InputFieldState<string>;
10
+ replyToEmail: InputFieldState<string | undefined>;
11
11
  }
12
12
 
13
13
  export const CompanyEmailReplyTo: FC<CompanyEmailReplyToProps> = observer(({ replyToEmail }) => {
@@ -2,11 +2,11 @@ import { InputFieldState } from '@servicetitan/form';
2
2
  import { injectable, provide, useDependencies } from '@servicetitan/react-ioc';
3
3
  import { FormState } from 'formstate';
4
4
 
5
- import { CompanyEmailSender as Component } from '.';
5
+ import { CompanyEmailSender as Simple, CompanyEmailSenderCustomDomain as Custom } from '.';
6
6
 
7
7
  export default {
8
8
  title: 'MPA Components/settings/CompanyEmailSender',
9
- component: Component,
9
+ component: Simple,
10
10
  parameters: {},
11
11
  };
12
12
 
@@ -19,8 +19,16 @@ class CompanyEmailSenderStore {
19
19
  });
20
20
  }
21
21
 
22
+ export const CompanyEmailSenderCustomDomain = provide({ singletons: [CompanyEmailSenderStore] })(
23
+ () => {
24
+ const [store] = useDependencies(CompanyEmailSenderStore);
25
+
26
+ return <Custom formState={store.form.$} senderTld="tld.com" />;
27
+ }
28
+ );
29
+
22
30
  export const CompanyEmailSender = provide({ singletons: [CompanyEmailSenderStore] })(() => {
23
31
  const [store] = useDependencies(CompanyEmailSenderStore);
24
32
 
25
- return <Component formState={store.form.$} senderTld="com" />;
33
+ return <Simple senderName={store.form.$.senderName} senderEmail={store.form.$.senderEmail} />;
26
34
  });
@@ -0,0 +1,129 @@
1
+ import { SyntheticEvent, Fragment, useCallback, FC } from 'react';
2
+ import { observer } from 'mobx-react';
3
+
4
+ import { Form, Text } from '@servicetitan/design-system';
5
+ import { InputFieldState } from '@servicetitan/form';
6
+
7
+ import { SettingsSection } from '../settings-section';
8
+ import { convertDomainName } from '../../../utils/helpers';
9
+
10
+ import * as Styles from './company-email-sender.module.less';
11
+
12
+ export interface CompanyEmailSenderProps {
13
+ formState: {
14
+ senderName: InputFieldState<string | undefined>;
15
+ senderDomain: InputFieldState<string | undefined>;
16
+ senderEmail: InputFieldState<string | undefined>;
17
+ };
18
+
19
+ senderTld: string;
20
+ }
21
+
22
+ export const CompanyEmailSender: FC<CompanyEmailSenderProps> = observer(
23
+ ({ formState: { senderDomain, senderName, senderEmail }, senderTld }) => {
24
+ const handleSenderNameChange = useCallback(
25
+ (_0: SyntheticEvent<HTMLInputElement>, data: { value: string }) => {
26
+ if (data.value.length > 80) {
27
+ return;
28
+ }
29
+
30
+ senderName.onChange(data.value);
31
+ },
32
+ [senderName]
33
+ );
34
+
35
+ const handleSenderDomainChange = useCallback(
36
+ (_0: SyntheticEvent<HTMLInputElement>, data: { value: string }) => {
37
+ if (data.value.length > 30) {
38
+ return;
39
+ }
40
+
41
+ senderDomain.onChange(data.value);
42
+ },
43
+ [senderDomain]
44
+ );
45
+
46
+ const handleSenderEmailChange = useCallback(
47
+ (_0: SyntheticEvent<HTMLInputElement>, data: { value: string }) => {
48
+ if (data.value.length > 50) {
49
+ return;
50
+ }
51
+
52
+ senderEmail.onChange(data.value);
53
+ },
54
+ [senderEmail]
55
+ );
56
+
57
+ return (
58
+ <SettingsSection
59
+ title="Sender"
60
+ text="Configure sender name and email."
61
+ qaPrefix="qa-settings-sender"
62
+ >
63
+ <Form className="m-b-0-i">
64
+ <Form.Group widths="equal" className="m-b-2-i">
65
+ <Form.Input
66
+ width={6}
67
+ className="m-b-0-i qa-settings-sender-name"
68
+ value={senderName.value}
69
+ onChange={handleSenderNameChange}
70
+ error={senderName.hasError}
71
+ label={
72
+ <Fragment>
73
+ Sender Name &nbsp;&nbsp;
74
+ <Text inline size={2} subdued>
75
+ max 80 characters
76
+ </Text>
77
+ </Fragment>
78
+ }
79
+ placeholder="John Doe"
80
+ fluid
81
+ />
82
+ <Form.Input
83
+ width={6}
84
+ className="m-b-0-i qa-settings-sender-domain"
85
+ value={senderDomain.value}
86
+ onChange={handleSenderDomainChange}
87
+ error={senderDomain.hasError}
88
+ label="Sender Domain"
89
+ placeholder="Your Company"
90
+ fluid
91
+ />
92
+ </Form.Group>
93
+ <Form.Group className="m-b-0-i">
94
+ <Form.Input
95
+ width={6}
96
+ className="m-b-0-i qa-settings-sender-email"
97
+ value={senderEmail.value}
98
+ onChange={handleSenderEmailChange}
99
+ error={senderEmail.hasError}
100
+ label={
101
+ <Fragment>
102
+ Sender Email&nbsp;
103
+ <Text inline size={2} subdued>
104
+ (domain added automatically)
105
+ </Text>
106
+ </Fragment>
107
+ }
108
+ placeholder="john.doe"
109
+ fluid
110
+ />
111
+ <Form.Field label={'\u00A0'}>
112
+ <div className={Styles.domain}>
113
+ <Text
114
+ size={3}
115
+ bold
116
+ subdued
117
+ className="qa-settings-sender-generated-domain"
118
+ >
119
+ @{senderDomain.$ ? convertDomainName(senderDomain.$) : 'domain'}
120
+ .{senderTld}
121
+ </Text>
122
+ </div>
123
+ </Form.Field>
124
+ </Form.Group>
125
+ </Form>
126
+ </SettingsSection>
127
+ );
128
+ }
129
+ );