@servicetitan/mpa-components 2.3.0 → 2.5.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/CHANGELOG.md +24 -0
- package/dist/components/add-merge-tag-dialog/add-merge-tag-dialog.d.ts.map +1 -1
- package/dist/components/add-merge-tag-dialog/add-merge-tag-dialog.js +4 -10
- package/dist/components/add-merge-tag-dialog/add-merge-tag-dialog.js.map +1 -1
- package/package.json +2 -2
- package/src/components/add-merge-tag-dialog/add-merge-tag-dialog.tsx +8 -11
- package/tsconfig.tsbuildinfo +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,27 @@
|
|
|
1
|
+
# v2.5.0 (Thu Jan 08 2026)
|
|
2
|
+
|
|
3
|
+
#### 🚀 Enhancement
|
|
4
|
+
|
|
5
|
+
- [mpa-components]: disable merge tag select if location is not selected [#113](https://github.com/servicetitan/standalone-fe/pull/113) ([@stadevosyan](https://github.com/stadevosyan))
|
|
6
|
+
|
|
7
|
+
#### Authors: 1
|
|
8
|
+
|
|
9
|
+
- Sam Tadevosyan ([@stadevosyan](https://github.com/stadevosyan))
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# v2.4.0 (Tue Dec 16 2025)
|
|
14
|
+
|
|
15
|
+
#### 🚀 Enhancement
|
|
16
|
+
|
|
17
|
+
- MPA-5588: MPA-5780: add learn more url to merge tags dialog [#111](https://github.com/servicetitan/standalone-fe/pull/111) ([@stadevosyan](https://github.com/stadevosyan))
|
|
18
|
+
|
|
19
|
+
#### Authors: 1
|
|
20
|
+
|
|
21
|
+
- Sam Tadevosyan ([@stadevosyan](https://github.com/stadevosyan))
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
1
25
|
# v2.3.0 (Tue Dec 02 2025)
|
|
2
26
|
|
|
3
27
|
#### 🚀 Enhancement
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add-merge-tag-dialog.d.ts","sourceRoot":"","sources":["../../../src/components/add-merge-tag-dialog/add-merge-tag-dialog.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAqB,MAAM,OAAO,CAAC;AAI9C,OAAO,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAErD,MAAM,WAAW,sBAAsB;IACnC,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,KAAK,EAAE,CAAC,QAAQ,EAAE,cAAc,KAAK,IAAI,CAAC;IAC1C,SAAS,EAAE,cAAc,EAAE,CAAC;IAC5B,MAAM,EAAE,KAAK,EAAE,CAAC;CACnB;AAED,eAAO,MAAM,iBAAiB,EAAE,EAAE,CAAC,sBAAsB,
|
|
1
|
+
{"version":3,"file":"add-merge-tag-dialog.d.ts","sourceRoot":"","sources":["../../../src/components/add-merge-tag-dialog/add-merge-tag-dialog.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAqB,MAAM,OAAO,CAAC;AAI9C,OAAO,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAErD,MAAM,WAAW,sBAAsB;IACnC,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,KAAK,EAAE,CAAC,QAAQ,EAAE,cAAc,KAAK,IAAI,CAAC;IAC1C,SAAS,EAAE,cAAc,EAAE,CAAC;IAC5B,MAAM,EAAE,KAAK,EAAE,CAAC;CACnB;AAED,eAAO,MAAM,iBAAiB,EAAE,EAAE,CAAC,sBAAsB,CAiIxD,CAAC"}
|
|
@@ -6,20 +6,14 @@ export const AddMergeTagDialog = ({ open, onClose, onAdd, mergeTags, groups, })
|
|
|
6
6
|
const [selectedMergeTag, setSelectedMergeTag] = useState(null);
|
|
7
7
|
const filteredMergeTags = useMemo(() => {
|
|
8
8
|
if (!selectedGroup) {
|
|
9
|
-
return
|
|
9
|
+
return [];
|
|
10
10
|
}
|
|
11
11
|
return mergeTags.filter(tag => tag.group === selectedGroup.name);
|
|
12
12
|
}, [mergeTags, selectedGroup]);
|
|
13
13
|
const handleGroupChange = (group) => {
|
|
14
14
|
setSelectedGroup(group);
|
|
15
|
-
//
|
|
16
|
-
|
|
17
|
-
// If selected merge tag doesn't belong to the new group, reset it
|
|
18
|
-
if (selectedMergeTag.group !== group.name) {
|
|
19
|
-
setSelectedMergeTag(null);
|
|
20
|
-
}
|
|
21
|
-
// If it belongs to the group, keep the selection
|
|
22
|
-
}
|
|
15
|
+
// Reset merge tag selection when group changes
|
|
16
|
+
setSelectedMergeTag(null);
|
|
23
17
|
};
|
|
24
18
|
const handleMergeTagChange = (tag) => {
|
|
25
19
|
setSelectedMergeTag(tag);
|
|
@@ -36,6 +30,6 @@ export const AddMergeTagDialog = ({ open, onClose, onAdd, mergeTags, groups, })
|
|
|
36
30
|
setSelectedMergeTag(null);
|
|
37
31
|
onClose();
|
|
38
32
|
};
|
|
39
|
-
return (_jsxs(Dialog, { open: open, onClose: handleClose, size: "large", children: [_jsx(Dialog.Header, { children: "Add Merge Tag" }), _jsx(Dialog.Content, { children: _jsxs(Flex, { direction: "column", gap: "4", grow: "1", children: [_jsxs(Combobox.Select, { items: groups, itemToKey: item => (item ? item.name : null), itemToString: item => { var _a; return (_a = item === null || item === void 0 ? void 0 : item.displayName) !== null && _a !== void 0 ? _a : ''; }, selectedItem: selectedGroup, onChange: handleGroupChange, children: [_jsx(Combobox.SelectTrigger, { label: "Select Field Location", moreInfo: "Choose the field's source (Customer, Location, Job, etc)." }), _jsx(Combobox.Content, { children: ({ items }) => (_jsx(Combobox.List, { children: items.map((item, i) => (_jsx(Combobox.Item, { item: item, index: i, children: item.displayName }, item.name))) })) })] }), _jsxs(Combobox.Select, { items: filteredMergeTags, itemToKey: item => (item ? item.name : null), itemToString: item => { var _a; return (_a = item === null || item === void 0 ? void 0 : item.label) !== null && _a !== void 0 ? _a : ''; }, selectedItem: selectedMergeTag, onChange: handleMergeTagChange, children: [_jsx(Combobox.SelectTrigger, { label: "Select Merge Tag", moreInfo: "Pick the merge tag to insert. Resolves to its value.", description: _jsx("div", { children: _jsxs(Text, { size: "small", subdued: true, children: [_jsx("b", { children: "Important:" }), " If you've gathered job-related data through custom fields, it will only be linked to the customer's most recent job. Similarly, if you've collected location-related data, we will only display the customer's primary location.", ' ', _jsx(Link, { href: "https://
|
|
33
|
+
return (_jsxs(Dialog, { open: open, onClose: handleClose, size: "large", children: [_jsx(Dialog.Header, { children: "Add Merge Tag" }), _jsx(Dialog.Content, { children: _jsxs(Flex, { direction: "column", gap: "4", grow: "1", children: [_jsxs(Combobox.Select, { items: groups, itemToKey: item => (item ? item.name : null), itemToString: item => { var _a; return (_a = item === null || item === void 0 ? void 0 : item.displayName) !== null && _a !== void 0 ? _a : ''; }, selectedItem: selectedGroup, onChange: handleGroupChange, children: [_jsx(Combobox.SelectTrigger, { label: "Select Field Location", moreInfo: "Choose the field's source (Customer, Location, Job, etc)." }), _jsx(Combobox.Content, { children: ({ items }) => (_jsx(Combobox.List, { children: items.map((item, i) => (_jsx(Combobox.Item, { item: item, index: i, children: item.displayName }, item.name))) })) })] }), _jsxs(Combobox.Select, { items: filteredMergeTags, itemToKey: item => (item ? item.name : null), itemToString: item => { var _a; return (_a = item === null || item === void 0 ? void 0 : item.label) !== null && _a !== void 0 ? _a : ''; }, selectedItem: selectedMergeTag, onChange: handleMergeTagChange, disabled: !selectedGroup, children: [_jsx(Combobox.SelectTrigger, { label: "Select Merge Tag", moreInfo: "Pick the merge tag to insert. Resolves to its value.", description: _jsx("div", { children: _jsxs(Text, { size: "small", subdued: true, children: [_jsx("b", { children: "Important:" }), " If you've gathered job-related data through custom fields, it will only be linked to the customer's most recent job. Similarly, if you've collected location-related data, we will only display the customer's primary location.", ' ', _jsx(Link, { href: "https://help.servicetitan.com/how-to/add-special-links-and-merge-tags-to-your-marketing-content", target: "_blank", children: "Learn More" })] }) }) }), _jsx(Combobox.Content, { children: ({ items }) => (_jsx(Combobox.List, { children: items.map((item, i) => (_jsx(Combobox.Item, { item: item, index: i, children: item.label }, item.name))) })) })] })] }) }), _jsx(Dialog.Footer, { children: _jsx(Flex, { justifyContent: "flex-end", children: _jsxs(Flex, { gap: "3", children: [_jsx(Dialog.CancelButton, { children: "Cancel" }), _jsx(Button, { appearance: "primary", onClick: handleAdd, disabled: !selectedMergeTag, children: "Add" })] }) }) })] }));
|
|
40
34
|
};
|
|
41
35
|
//# sourceMappingURL=add-merge-tag-dialog.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add-merge-tag-dialog.js","sourceRoot":"","sources":["../../../src/components/add-merge-tag-dialog/add-merge-tag-dialog.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAM,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAE9C,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAYlF,MAAM,CAAC,MAAM,iBAAiB,GAA+B,CAAC,EAC1D,IAAI,EACJ,OAAO,EACP,KAAK,EACL,SAAS,EACT,MAAM,GACT,EAAE,EAAE;IACD,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAAe,IAAI,CAAC,CAAC;IACvE,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAG,QAAQ,CAAwB,IAAI,CAAC,CAAC;IAEtF,MAAM,iBAAiB,GAAG,OAAO,CAAC,GAAG,EAAE;QACnC,IAAI,CAAC,aAAa,EAAE,CAAC;YACjB,OAAO,
|
|
1
|
+
{"version":3,"file":"add-merge-tag-dialog.js","sourceRoot":"","sources":["../../../src/components/add-merge-tag-dialog/add-merge-tag-dialog.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@servicetitan/mpa-components",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.5.0",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"typings": "./dist/index.d.ts",
|
|
@@ -34,5 +34,5 @@
|
|
|
34
34
|
"cli": {
|
|
35
35
|
"webpack": false
|
|
36
36
|
},
|
|
37
|
-
"gitHead": "
|
|
37
|
+
"gitHead": "60e7efafb60a75432d3f0f4722c81340eefa8dc6"
|
|
38
38
|
}
|
|
@@ -24,22 +24,15 @@ export const AddMergeTagDialog: FC<AddMergeTagDialogProps> = ({
|
|
|
24
24
|
|
|
25
25
|
const filteredMergeTags = useMemo(() => {
|
|
26
26
|
if (!selectedGroup) {
|
|
27
|
-
return
|
|
27
|
+
return [];
|
|
28
28
|
}
|
|
29
29
|
return mergeTags.filter(tag => tag.group === selectedGroup.name);
|
|
30
30
|
}, [mergeTags, selectedGroup]);
|
|
31
31
|
|
|
32
32
|
const handleGroupChange = (group: Group | null) => {
|
|
33
33
|
setSelectedGroup(group);
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
if (selectedMergeTag && group) {
|
|
37
|
-
// If selected merge tag doesn't belong to the new group, reset it
|
|
38
|
-
if (selectedMergeTag.group !== group.name) {
|
|
39
|
-
setSelectedMergeTag(null);
|
|
40
|
-
}
|
|
41
|
-
// If it belongs to the group, keep the selection
|
|
42
|
-
}
|
|
34
|
+
// Reset merge tag selection when group changes
|
|
35
|
+
setSelectedMergeTag(null);
|
|
43
36
|
};
|
|
44
37
|
|
|
45
38
|
const handleMergeTagChange = (tag: IEmailMergeTag | null) => {
|
|
@@ -95,6 +88,7 @@ export const AddMergeTagDialog: FC<AddMergeTagDialogProps> = ({
|
|
|
95
88
|
itemToString={item => item?.label ?? ''}
|
|
96
89
|
selectedItem={selectedMergeTag}
|
|
97
90
|
onChange={handleMergeTagChange}
|
|
91
|
+
disabled={!selectedGroup}
|
|
98
92
|
>
|
|
99
93
|
<Combobox.SelectTrigger
|
|
100
94
|
label="Select Merge Tag"
|
|
@@ -107,7 +101,10 @@ export const AddMergeTagDialog: FC<AddMergeTagDialogProps> = ({
|
|
|
107
101
|
customer's most recent job. Similarly, if you've collected
|
|
108
102
|
location-related data, we will only display the customer's
|
|
109
103
|
primary location.{' '}
|
|
110
|
-
<Link
|
|
104
|
+
<Link
|
|
105
|
+
href="https://help.servicetitan.com/how-to/add-special-links-and-merge-tags-to-your-marketing-content"
|
|
106
|
+
target="_blank"
|
|
107
|
+
>
|
|
111
108
|
Learn More
|
|
112
109
|
</Link>
|
|
113
110
|
</Text>
|