@servicetitan/mpa-components 0.2.2 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/components/settings/company-details/index.d.ts +10 -9
- package/lib/components/settings/company-details/index.d.ts.map +1 -1
- package/lib/components/settings/company-details/index.js.map +1 -1
- package/lib/components/settings/company-email-footer/company-email-footer.stories.js +2 -2
- package/lib/components/settings/company-email-footer/company-email-footer.stories.js.map +1 -1
- package/lib/components/settings/company-email-footer/index.d.ts +4 -4
- package/lib/components/settings/company-email-footer/index.d.ts.map +1 -1
- package/lib/components/settings/company-email-reply-to/index.d.ts +1 -1
- package/lib/components/settings/company-email-reply-to/index.d.ts.map +1 -1
- package/lib/components/settings/company-email-sender/company-email-sender.stories.d.ts +3 -1
- package/lib/components/settings/company-email-sender/company-email-sender.stories.d.ts.map +1 -1
- package/lib/components/settings/company-email-sender/company-email-sender.stories.js +7 -3
- package/lib/components/settings/company-email-sender/company-email-sender.stories.js.map +1 -1
- package/lib/components/settings/company-email-sender/custom-domain-sender.d.ts +12 -0
- package/lib/components/settings/company-email-sender/custom-domain-sender.d.ts.map +1 -0
- package/lib/components/settings/company-email-sender/custom-domain-sender.js +29 -0
- package/lib/components/settings/company-email-sender/custom-domain-sender.js.map +1 -0
- package/lib/components/settings/company-email-sender/index.d.ts +2 -11
- package/lib/components/settings/company-email-sender/index.d.ts.map +1 -1
- package/lib/components/settings/company-email-sender/index.js +2 -28
- package/lib/components/settings/company-email-sender/index.js.map +1 -1
- package/lib/components/settings/company-email-sender/simple-sender.d.ts +8 -0
- package/lib/components/settings/company-email-sender/simple-sender.d.ts.map +1 -0
- package/lib/components/settings/company-email-sender/simple-sender.js +18 -0
- package/lib/components/settings/company-email-sender/simple-sender.js.map +1 -0
- package/lib/components/settings/company-trade-checkbox/index.d.ts +2 -2
- package/lib/components/settings/company-trade-checkbox/index.d.ts.map +1 -1
- package/lib/components/settings/company-trade-checkbox/index.js.map +1 -1
- package/lib/components/settings/company-trades-picker/index.d.ts +3 -3
- package/lib/components/settings/company-trades-picker/index.d.ts.map +1 -1
- package/lib/components/settings/company-trades-picker/index.js.map +1 -1
- package/lib/components/settings/double-opt-in/double-opt-in.stories.js +2 -2
- package/lib/components/settings/double-opt-in/double-opt-in.stories.js.map +1 -1
- package/lib/components/settings/double-opt-in/index.d.ts +5 -5
- package/lib/components/settings/double-opt-in/index.d.ts.map +1 -1
- package/lib/components/settings/email-validation/email-validation.stories.d.ts +3 -2
- package/lib/components/settings/email-validation/email-validation.stories.d.ts.map +1 -1
- package/lib/components/settings/email-validation/index.d.ts +4 -4
- package/lib/components/settings/email-validation/index.d.ts.map +1 -1
- package/lib/components/settings/email-validation/index.js.map +1 -1
- package/lib/components/settings/form-errors-list/index.d.ts +7 -0
- package/lib/components/settings/form-errors-list/index.d.ts.map +1 -0
- package/lib/components/settings/form-errors-list/index.js +14 -0
- package/lib/components/settings/form-errors-list/index.js.map +1 -0
- package/lib/components/settings/index.d.ts +2 -0
- package/lib/components/settings/index.d.ts.map +1 -1
- package/lib/components/settings/index.js +2 -0
- package/lib/components/settings/index.js.map +1 -1
- package/lib/components/settings/opt-out-message/index.d.ts +6 -6
- package/lib/components/settings/opt-out-message/index.d.ts.map +1 -1
- package/lib/components/settings/opt-out-message/opt-out-message.stories.js +2 -2
- package/lib/components/settings/opt-out-message/opt-out-message.stories.js.map +1 -1
- package/package.json +3 -9
- package/src/components/settings/company-details/index.tsx +10 -9
- package/src/components/settings/company-email-footer/company-email-footer.stories.tsx +2 -2
- package/src/components/settings/company-email-footer/index.tsx +4 -4
- package/src/components/settings/company-email-reply-to/index.tsx +1 -1
- package/src/components/settings/company-email-sender/company-email-sender.stories.tsx +11 -3
- package/src/components/settings/company-email-sender/custom-domain-sender.tsx +129 -0
- package/src/components/settings/company-email-sender/index.tsx +2 -129
- package/src/components/settings/company-email-sender/simple-sender.tsx +71 -0
- package/src/components/settings/company-trade-checkbox/index.tsx +3 -3
- package/src/components/settings/company-trades-picker/index.tsx +4 -4
- package/src/components/settings/double-opt-in/double-opt-in.stories.tsx +2 -2
- package/src/components/settings/double-opt-in/index.tsx +5 -5
- package/src/components/settings/email-validation/index.tsx +8 -8
- package/src/components/settings/form-errors-list/index.tsx +41 -0
- package/src/components/settings/index.ts +2 -0
- package/src/components/settings/opt-out-message/index.tsx +6 -6
- package/src/components/settings/opt-out-message/opt-out-message.stories.tsx +2 -2
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/settings/form-errors-list/index.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAM,OAAO,EAAE,MAAM,OAAO,CAAC;AACpC,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,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;QAChB,OAAO,IAAI,CAAC;KACf;IAED,MAAM,UAAU,GAAG,OAAO,CACtB,GAAG,EAAE,CACD,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CACtB,CAAC,CAAC,GAAG,EAAE,KAAK,CAAuD,EAAE,EAAE;QACnE,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;IACb,CAAC,CACJ,EACL,CAAC,IAAI,CAAC,CAAC,CAAC,CACX,CAAC;IAEF,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,UAAU,YAAM,aACzD,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:
|
|
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;
|
|
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
|
|
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;
|
|
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.
|
|
3
|
+
"version": "0.3.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": "
|
|
29
|
+
"gitHead": "83727a32567c2b028cb21bcda592ccd6bbf02b98"
|
|
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:
|
|
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
|
|
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:
|
|
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
|
|
5
|
+
import { CompanyEmailSender as Simple, CompanyEmailSenderCustomDomain as Custom } from '.';
|
|
6
6
|
|
|
7
7
|
export default {
|
|
8
8
|
title: 'MPA Components/settings/CompanyEmailSender',
|
|
9
|
-
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 <
|
|
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
|
|
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
|
|
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
|
+
);
|
|
@@ -1,129 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
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>;
|
|
15
|
-
senderDomain: InputFieldState<string>;
|
|
16
|
-
senderEmail: InputFieldState<string>;
|
|
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
|
|
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
|
|
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
|
-
);
|
|
1
|
+
export { CompanyEmailSender as CompanyEmailSenderCustomDomain } from './custom-domain-sender';
|
|
2
|
+
export { CompanyEmailSender as CompanyEmailSender } from './simple-sender';
|
|
@@ -0,0 +1,71 @@
|
|
|
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
|
+
import { SettingsSection } from '../settings-section';
|
|
7
|
+
|
|
8
|
+
export interface CompanyEmailSender {
|
|
9
|
+
senderName: InputFieldState<string | undefined>;
|
|
10
|
+
senderEmail: InputFieldState<string | undefined>;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export const CompanyEmailSender: FC<CompanyEmailSender> = observer(
|
|
14
|
+
({ senderName, senderEmail }) => {
|
|
15
|
+
const handleSenderNameChange = useCallback(
|
|
16
|
+
(_0: SyntheticEvent<HTMLInputElement, Event>, data: { value: string }) => {
|
|
17
|
+
if (data.value.length > 80) {
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
senderName.onChange(data.value);
|
|
22
|
+
},
|
|
23
|
+
[senderName]
|
|
24
|
+
);
|
|
25
|
+
|
|
26
|
+
const handleSenderEmailBlur = useCallback(() => {
|
|
27
|
+
senderEmail.validate();
|
|
28
|
+
}, [senderEmail]);
|
|
29
|
+
|
|
30
|
+
return (
|
|
31
|
+
<SettingsSection
|
|
32
|
+
title="Sender"
|
|
33
|
+
text="Configure sender name and email."
|
|
34
|
+
qaPrefix="qa-settings-sender"
|
|
35
|
+
>
|
|
36
|
+
<Form className="m-b-0-i">
|
|
37
|
+
<Form.Group widths="equal" className="m-b-0-i">
|
|
38
|
+
<Form.Input
|
|
39
|
+
width={6}
|
|
40
|
+
className="m-b-0-i qa-settings-sender-name"
|
|
41
|
+
value={senderName.value}
|
|
42
|
+
onChange={handleSenderNameChange}
|
|
43
|
+
error={senderName.hasError}
|
|
44
|
+
label={
|
|
45
|
+
<Fragment>
|
|
46
|
+
Sender Name
|
|
47
|
+
<Text inline size={2} subdued>
|
|
48
|
+
max 80 characters
|
|
49
|
+
</Text>
|
|
50
|
+
</Fragment>
|
|
51
|
+
}
|
|
52
|
+
placeholder="John Doe"
|
|
53
|
+
fluid
|
|
54
|
+
/>
|
|
55
|
+
<Form.Input
|
|
56
|
+
width={6}
|
|
57
|
+
className="m-b-0-i qa-settings-sender-email"
|
|
58
|
+
value={senderEmail.value}
|
|
59
|
+
onChange={senderEmail.onChangeHandler}
|
|
60
|
+
error={senderEmail.hasError}
|
|
61
|
+
onBlur={handleSenderEmailBlur}
|
|
62
|
+
label="Sender Email"
|
|
63
|
+
placeholder="name@company.com"
|
|
64
|
+
fluid
|
|
65
|
+
/>
|
|
66
|
+
</Form.Group>
|
|
67
|
+
</Form>
|
|
68
|
+
</SettingsSection>
|
|
69
|
+
);
|
|
70
|
+
}
|
|
71
|
+
);
|
|
@@ -5,7 +5,7 @@ import { Card, Icon } from '@servicetitan/design-system';
|
|
|
5
5
|
|
|
6
6
|
import * as Styles from './company-trade-checkbox.module.less';
|
|
7
7
|
|
|
8
|
-
export interface CompanyTradeCheckboxProps<TradesType extends string = string> {
|
|
8
|
+
export interface CompanyTradeCheckboxProps<TradesType extends string | number = string> {
|
|
9
9
|
label?: JSX.Element | string;
|
|
10
10
|
value?: TradesType;
|
|
11
11
|
className?: string;
|
|
@@ -13,13 +13,13 @@ export interface CompanyTradeCheckboxProps<TradesType extends string = string> {
|
|
|
13
13
|
onClick?(item?: TradesType): void;
|
|
14
14
|
}
|
|
15
15
|
|
|
16
|
-
export function CompanyTradeCheckbox({
|
|
16
|
+
export function CompanyTradeCheckbox<T extends string | number = string>({
|
|
17
17
|
label,
|
|
18
18
|
value,
|
|
19
19
|
className,
|
|
20
20
|
active,
|
|
21
21
|
onClick,
|
|
22
|
-
}: CompanyTradeCheckboxProps) {
|
|
22
|
+
}: CompanyTradeCheckboxProps<T>) {
|
|
23
23
|
const handleClick = useCallback(() => {
|
|
24
24
|
if (onClick) {
|
|
25
25
|
onClick(value);
|
|
@@ -6,7 +6,7 @@ import { Grid, Text } from '@servicetitan/design-system';
|
|
|
6
6
|
import { SettingsSection } from '../settings-section';
|
|
7
7
|
import { CompanyTradeCheckbox } from '../company-trade-checkbox';
|
|
8
8
|
|
|
9
|
-
export interface Trade<TradeType extends string> {
|
|
9
|
+
export interface Trade<TradeType extends string | number> {
|
|
10
10
|
qaKey?: string;
|
|
11
11
|
name: string;
|
|
12
12
|
value: TradeType;
|
|
@@ -19,12 +19,12 @@ export interface Trade<TradeType extends string> {
|
|
|
19
19
|
};
|
|
20
20
|
}
|
|
21
21
|
|
|
22
|
-
export interface CompanyTradesPickerProps<TradeType extends string = string> {
|
|
22
|
+
export interface CompanyTradesPickerProps<TradeType extends string | number = string> {
|
|
23
23
|
trades: Trade<TradeType>[];
|
|
24
24
|
onTradeChange(t?: TradeType): void;
|
|
25
25
|
}
|
|
26
26
|
|
|
27
|
-
export function CompanyTradesPicker<T extends string = string>({
|
|
27
|
+
export function CompanyTradesPicker<T extends string | number = string>({
|
|
28
28
|
trades,
|
|
29
29
|
onTradeChange,
|
|
30
30
|
}: CompanyTradesPickerProps<T>) {
|
|
@@ -46,7 +46,7 @@ export function CompanyTradesPicker<T extends string = string>({
|
|
|
46
46
|
{row.map(trade => {
|
|
47
47
|
return (
|
|
48
48
|
<Grid.Column key={trade.value}>
|
|
49
|
-
<CompanyTradeCheckbox
|
|
49
|
+
<CompanyTradeCheckbox<T>
|
|
50
50
|
className={`qa-settings-select-your-trades-${
|
|
51
51
|
trade.qaKey ?? trade.value
|
|
52
52
|
}`}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { CheckboxFieldState, InputFieldState } from '@servicetitan/form';
|
|
1
|
+
import { CheckboxFieldState, InputFieldState, TextAreaFieldState } from '@servicetitan/form';
|
|
2
2
|
import { injectable, provide, useDependencies } from '@servicetitan/react-ioc';
|
|
3
3
|
import { FormState } from 'formstate';
|
|
4
4
|
import { DoubleOptIn as Component } from '.';
|
|
@@ -14,7 +14,7 @@ class DoubleOptInStore {
|
|
|
14
14
|
form = new FormState({
|
|
15
15
|
emailSubject: new InputFieldState('Jump in'),
|
|
16
16
|
emailHeader: new InputFieldState('Right now'),
|
|
17
|
-
emailBody: new
|
|
17
|
+
emailBody: new TextAreaFieldState('Jump in right now! Please!'),
|
|
18
18
|
emailButtonText: new InputFieldState('JUMP IN'),
|
|
19
19
|
enabled: new CheckboxFieldState(true),
|
|
20
20
|
});
|