@servicetitan/web-components 23.5.1 → 23.6.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/dist/loader.d.ts +3 -1
- package/dist/loader.d.ts.map +1 -1
- package/dist/loader.js +3 -6
- package/dist/loader.js.map +1 -1
- package/dist/register.d.ts +1 -0
- package/dist/register.d.ts.map +1 -1
- package/dist/register.js +22 -15
- package/dist/register.js.map +1 -1
- package/dist/utils/web-component.d.ts +1 -3
- package/dist/utils/web-component.d.ts.map +1 -1
- package/dist/utils/web-component.js +14 -2
- package/dist/utils/web-component.js.map +1 -1
- package/package.json +9 -9
- package/src/__tests__/loader.test.tsx +15 -5
- package/src/__tests__/register-anvil2.test.tsx +70 -0
- package/src/__tests__/register-legacy-root.test.tsx +5 -3
- package/src/__tests__/register.test.tsx +3 -1
- package/src/loader.tsx +17 -9
- package/src/register.tsx +33 -18
- package/src/utils/web-component.tsx +2 -4
package/dist/loader.d.ts
CHANGED
|
@@ -16,6 +16,8 @@ export interface LoaderProps<T> {
|
|
|
16
16
|
retries?: number;
|
|
17
17
|
onRequestError?(error: GetJsonError): boolean;
|
|
18
18
|
}
|
|
19
|
-
export declare type LoaderDataProps = Pick<LoaderProps<{}>, 'data' | 'className'
|
|
19
|
+
export declare type LoaderDataProps = Pick<LoaderProps<{}>, 'data' | 'className'> & {
|
|
20
|
+
LoadingFallback: () => JSX.Element;
|
|
21
|
+
};
|
|
20
22
|
export declare const Loader: import("react").ForwardRefExoticComponent<LoaderProps<{}> & import("react").RefAttributes<EventBus>>;
|
|
21
23
|
//# sourceMappingURL=loader.d.ts.map
|
package/dist/loader.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../src/loader.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEH,SAAS,EAOZ,MAAM,OAAO,CAAC;AAKf,OAAO,EAGH,YAAY,EAEf,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAgC,MAAM,aAAa,CAAC;AAIrE,oBAAY,SAAS,GAAG,QAAQ,CAAC;AAEjC,oBAAY,YAAY,GAAG,WAAW,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC;AAEzD,MAAM,WAAW,WAAW,CAAC,CAAC;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uHAAuH;IACvH,IAAI,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,YAAY,CAAC;IAC/B,aAAa,CAAC,EAAE,YAAY,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC;CACjD;AAED,oBAAY,eAAe,GAAG,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,WAAW,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../src/loader.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEH,SAAS,EAOZ,MAAM,OAAO,CAAC;AAKf,OAAO,EAGH,YAAY,EAEf,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAgC,MAAM,aAAa,CAAC;AAIrE,oBAAY,SAAS,GAAG,QAAQ,CAAC;AAEjC,oBAAY,YAAY,GAAG,WAAW,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC;AAEzD,MAAM,WAAW,WAAW,CAAC,CAAC;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uHAAuH;IACvH,IAAI,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,YAAY,CAAC;IAC/B,aAAa,CAAC,EAAE,YAAY,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC;CACjD;AAED,oBAAY,eAAe,GAAG,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,WAAW,CAAC,GAAG;IACxE,eAAe,EAAE,MAAM,GAAG,CAAC,OAAO,CAAC;CACtC,CAAC;AAEF,eAAO,MAAM,MAAM,sGAwDjB,CAAC"}
|
package/dist/loader.js
CHANGED
|
@@ -34,7 +34,6 @@ export const Loader = forwardRef((props, ref) => {
|
|
|
34
34
|
onRequestError,
|
|
35
35
|
retries,
|
|
36
36
|
src,
|
|
37
|
-
LoadingFallback,
|
|
38
37
|
}), [
|
|
39
38
|
basename,
|
|
40
39
|
cancelation,
|
|
@@ -45,9 +44,8 @@ export const Loader = forwardRef((props, ref) => {
|
|
|
45
44
|
fallbackSrc,
|
|
46
45
|
retries,
|
|
47
46
|
src,
|
|
48
|
-
LoadingFallback,
|
|
49
47
|
]);
|
|
50
|
-
return (_jsx(ErrorBoundary, Object.assign({ moduleName: src, fallback: ErrorFallback }, { children: _jsx(Suspense, Object.assign({ fallback: _jsx(LoadingFallback, {}) }, { children: _jsx(Loader, { ref: ref, data: (_a = props.data) !== null && _a !== void 0 ? _a : {}, className: props.className }) })) })));
|
|
48
|
+
return (_jsx(ErrorBoundary, Object.assign({ moduleName: src, fallback: ErrorFallback }, { children: _jsx(Suspense, Object.assign({ fallback: _jsx(LoadingFallback, {}) }, { children: _jsx(Loader, { ref: ref, data: (_a = props.data) !== null && _a !== void 0 ? _a : {}, className: props.className, LoadingFallback: LoadingFallback }) })) })));
|
|
51
49
|
});
|
|
52
50
|
function lazyLoader(props) {
|
|
53
51
|
const { cancelation, eventBus } = props;
|
|
@@ -59,11 +57,11 @@ function lazyLoader(props) {
|
|
|
59
57
|
cancelation.abort();
|
|
60
58
|
};
|
|
61
59
|
}, []);
|
|
62
|
-
return _jsx(LazyWebComponent, { data: props.data, className: props.className });
|
|
60
|
+
return (_jsx(LazyWebComponent, { data: props.data, className: props.className, LoadingFallback: props.LoadingFallback }));
|
|
63
61
|
});
|
|
64
62
|
}
|
|
65
63
|
function lazyWebComponent(props) {
|
|
66
|
-
const { basename, cancelation, exposedDependencies, eventBus, fallbackSrc, logService, onRequestError, retries, src,
|
|
64
|
+
const { basename, cancelation, exposedDependencies, eventBus, fallbackSrc, logService, onRequestError, retries, src, } = props;
|
|
67
65
|
return lazy(() => __awaiter(this, void 0, void 0, function* () {
|
|
68
66
|
let bundleInfo;
|
|
69
67
|
try {
|
|
@@ -86,7 +84,6 @@ function lazyWebComponent(props) {
|
|
|
86
84
|
eventBus,
|
|
87
85
|
exposedDependencies,
|
|
88
86
|
logService,
|
|
89
|
-
LoadingFallback,
|
|
90
87
|
}),
|
|
91
88
|
};
|
|
92
89
|
}));
|
package/dist/loader.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../src/loader.tsx"],"names":[],"mappings":";;;;;;;;;;AAAA,OAAO,EAGH,QAAQ,EACR,UAAU,EACV,IAAI,EACJ,SAAS,EACT,mBAAmB,EACnB,OAAO,GACV,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,GAAG,EAAE,MAAM,2BAA2B,CAAC;AAChD,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAElE,OAAO,EACH,0BAA0B,EAG1B,cAAc,GACjB,MAAM,UAAU,CAAC;AAElB,OAAO,EAAY,eAAe,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,EAAc,aAAa,EAAE,kBAAkB,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../src/loader.tsx"],"names":[],"mappings":"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"}
|
package/dist/register.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { ComponentType } from 'react';
|
|
2
2
|
export interface RegisterOptions {
|
|
3
3
|
legacyRoot?: boolean;
|
|
4
|
+
sharedDependenciesNames?: string[];
|
|
4
5
|
}
|
|
5
6
|
export declare function register(Component: ComponentType, light: boolean, options?: RegisterOptions): void;
|
|
6
7
|
//# sourceMappingURL=register.d.ts.map
|
package/dist/register.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../src/register.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAM,aAAa,EAAa,MAAM,OAAO,CAAC;AAmCrD,MAAM,WAAW,eAAe;IAC5B,UAAU,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../src/register.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAM,aAAa,EAAa,MAAM,OAAO,CAAC;AAmCrD,MAAM,WAAW,eAAe;IAC5B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,uBAAuB,CAAC,EAAE,MAAM,EAAE,CAAC;CACtC;AAED,wBAAgB,QAAQ,CAAC,SAAS,EAAE,aAAa,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,eAAe,QA4L3F"}
|
package/dist/register.js
CHANGED
|
@@ -98,10 +98,8 @@ export function register(Component, light, options) {
|
|
|
98
98
|
for (const [key, value] of Object.entries(entries)) {
|
|
99
99
|
this[key] = value;
|
|
100
100
|
}
|
|
101
|
-
if (this.styles.loaded === this.styles.total) {
|
|
102
|
-
|
|
103
|
-
this.render();
|
|
104
|
-
}
|
|
101
|
+
if (this.styles.loaded === this.styles.total && Object.values(entries).some(v => !!v)) {
|
|
102
|
+
this.render();
|
|
105
103
|
}
|
|
106
104
|
}
|
|
107
105
|
});
|
|
@@ -183,15 +181,8 @@ export function register(Component, light, options) {
|
|
|
183
181
|
if ((_a = this.root) === null || _a === void 0 ? void 0 : _a.isConnected) {
|
|
184
182
|
return;
|
|
185
183
|
}
|
|
186
|
-
const
|
|
187
|
-
|
|
188
|
-
: undefined;
|
|
189
|
-
const styleUrls = [
|
|
190
|
-
...(designSystemUrl ? [designSystemUrl] : []),
|
|
191
|
-
...(this.hasAttribute('style-urls')
|
|
192
|
-
? JSON.parse(decodeURIComponent(this.getAttribute('style-urls')))
|
|
193
|
-
: []),
|
|
194
|
-
];
|
|
184
|
+
const sharedDependenciesNames = (_b = options === null || options === void 0 ? void 0 : options.sharedDependenciesNames) !== null && _b !== void 0 ? _b : [];
|
|
185
|
+
const styleUrls = getStyleUrls(light, sharedDependenciesNames, this);
|
|
195
186
|
this.styles = {
|
|
196
187
|
total: styleUrls.length * 2,
|
|
197
188
|
loaded: 0,
|
|
@@ -208,8 +199,7 @@ export function register(Component, light, options) {
|
|
|
208
199
|
.appendChild(document.createElement('div'))
|
|
209
200
|
.attachShadow({ mode: 'open' });
|
|
210
201
|
this.view = render(_jsx(Placeholder, {}), this.root, options);
|
|
211
|
-
this.styles.elements.push(...this.attachStyles(this.root, styleUrls));
|
|
212
|
-
this.styles.elements.push(...this.attachStyles(this.portal, styleUrls));
|
|
202
|
+
this.styles.elements.push(...this.attachStyles(this.root, styleUrls), ...this.attachStyles(this.portal, styleUrls));
|
|
213
203
|
}
|
|
214
204
|
disconnectedCallback() {
|
|
215
205
|
var _a, _b, _c;
|
|
@@ -240,6 +230,23 @@ export function register(Component, light, options) {
|
|
|
240
230
|
}
|
|
241
231
|
window.customElements.define(WEB_COMPONENT_NAME, WebComponent);
|
|
242
232
|
}
|
|
233
|
+
function getStyleUrls(light, sharedDependenciesNames, el) {
|
|
234
|
+
function getCssUrl(dependencyName, cssFileRegEx) {
|
|
235
|
+
var _a;
|
|
236
|
+
if (light && sharedDependenciesNames.includes(dependencyName)) {
|
|
237
|
+
return (_a = Array.from(document.getElementsByTagName('link')).find(({ href }) => href && cssFileRegEx.test(href))) === null || _a === void 0 ? void 0 : _a.href;
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
const designSystemUrl = getCssUrl('@servicetitan/design-system', /design-system(\..+)?\.bundle\.css/);
|
|
241
|
+
const anvil2CssUrl = getCssUrl('@servicetitan/anvil2', /anvil2(\..+)?\.bundle\.css/);
|
|
242
|
+
return [
|
|
243
|
+
...(designSystemUrl ? [designSystemUrl] : []),
|
|
244
|
+
...(anvil2CssUrl ? [anvil2CssUrl] : []),
|
|
245
|
+
...(el.hasAttribute('style-urls')
|
|
246
|
+
? JSON.parse(decodeURIComponent(el.getAttribute('style-urls')))
|
|
247
|
+
: []),
|
|
248
|
+
];
|
|
249
|
+
}
|
|
243
250
|
function RenderCallback({ callback }) {
|
|
244
251
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
245
252
|
useEffect(() => callback(), []);
|
package/dist/register.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register.js","sourceRoot":"","sources":["../src/register.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAqB,SAAS,EAAE,MAAM,OAAO,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAC3F,OAAO,EAAE,GAAG,EAAE,MAAM,2BAA2B,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAEnD,OAAO,EAEH,0BAA0B,EAG1B,cAAc,EACd,sBAAsB,EACtB,iBAAiB,GACpB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAY,eAAe,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,SAAS,UAAU,CAAC,GAAW,EAAE,MAAkB;IAC/C,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAE/C,OAAO,CAAC,IAAI,GAAG,GAAG,CAAC;IACnB,OAAO,CAAC,GAAG,GAAG,YAAY,CAAC;IAC3B,OAAO,CAAC,WAAW,GAAG,WAAW,CAAC;IAClC,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;IACxB,OAAO,CAAC,OAAO,GAAG,MAAM,CAAC;IAEzB,OAAO,OAAO,CAAC;AACnB,CAAC;AAED,MAAM,WAAW,GAAO,GAAG,EAAE,CAAC,cAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"register.js","sourceRoot":"","sources":["../src/register.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
/// <reference types="react" />
|
|
2
1
|
import { Log } from '@servicetitan/log-service';
|
|
3
2
|
import { ExposedDependencies } from '../common';
|
|
4
3
|
import { EventBus } from '../event-bus';
|
|
@@ -10,8 +9,7 @@ interface WebComponentProps {
|
|
|
10
9
|
eventBus: EventBus;
|
|
11
10
|
exposedDependencies?: ExposedDependencies;
|
|
12
11
|
logService?: Log;
|
|
13
|
-
LoadingFallback: () => JSX.Element;
|
|
14
12
|
}
|
|
15
|
-
export declare function webComponent(props: WebComponentProps): (props: LoaderDataProps) => import("react/jsx-runtime").JSX.Element;
|
|
13
|
+
export declare function webComponent(props: WebComponentProps): ({ LoadingFallback, ...props }: LoaderDataProps) => import("react/jsx-runtime").JSX.Element;
|
|
16
14
|
export {};
|
|
17
15
|
//# sourceMappingURL=web-component.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web-component.d.ts","sourceRoot":"","sources":["../../src/utils/web-component.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"web-component.d.ts","sourceRoot":"","sources":["../../src/utils/web-component.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,MAAM,2BAA2B,CAAC;AAGhD,OAAO,EAAE,mBAAmB,EAAiB,MAAM,WAAW,CAAC;AAE/D,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAE5C,UAAU,iBAAiB;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,UAAU,CAAC;IACvB,QAAQ,EAAE,QAAQ,CAAC;IACnB,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;IAC1C,UAAU,CAAC,EAAE,GAAG,CAAC;CACpB;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,mCAKV,eAAe,6CAoDzD"}
|
|
@@ -1,12 +1,24 @@
|
|
|
1
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
2
|
+
var t = {};
|
|
3
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
4
|
+
t[p] = s[p];
|
|
5
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
6
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
7
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
8
|
+
t[p[i]] = s[p[i]];
|
|
9
|
+
}
|
|
10
|
+
return t;
|
|
11
|
+
};
|
|
1
12
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
13
|
import { Fragment, useMemo, useState } from 'react';
|
|
3
14
|
import { useOptionalDependencies } from '@servicetitan/react-ioc';
|
|
4
15
|
import { HistoryManager } from '../history-manager';
|
|
5
16
|
export function webComponent(props) {
|
|
6
|
-
const { basename, bundleInfo, eventBus, exposedDependencies, logService
|
|
17
|
+
const { basename, bundleInfo, eventBus, exposedDependencies, logService } = props;
|
|
7
18
|
const { WebComponent, disposer, mfeSupportsRerendering } = bundleInfo;
|
|
8
19
|
const elementName = getElementName(bundleInfo);
|
|
9
|
-
return (
|
|
20
|
+
return (_a) => {
|
|
21
|
+
var { LoadingFallback } = _a, props = __rest(_a, ["LoadingFallback"]);
|
|
10
22
|
const [isLoading, setIsLoading] = useState(true);
|
|
11
23
|
const [historyManager] = useOptionalDependencies(HistoryManager);
|
|
12
24
|
const handleRef = (webComponent) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web-component.js","sourceRoot":"","sources":["../../src/utils/web-component.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"web-component.js","sourceRoot":"","sources":["../../src/utils/web-component.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@servicetitan/web-components",
|
|
3
|
-
"version": "23.
|
|
3
|
+
"version": "23.6.0",
|
|
4
4
|
"description": "",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -15,18 +15,18 @@
|
|
|
15
15
|
"src"
|
|
16
16
|
],
|
|
17
17
|
"dependencies": {
|
|
18
|
-
"@servicetitan/error-boundary": "23.
|
|
18
|
+
"@servicetitan/error-boundary": "23.6.0",
|
|
19
19
|
"lodash.get": "~4.4.2",
|
|
20
20
|
"mitt": "~3.0.1",
|
|
21
21
|
"semver": "~7.5.4"
|
|
22
22
|
},
|
|
23
23
|
"devDependencies": {
|
|
24
24
|
"@servicetitan/design-system": "~14.0.0",
|
|
25
|
-
"@servicetitan/log-service": "23.
|
|
26
|
-
"@servicetitan/react-ioc": "23.
|
|
25
|
+
"@servicetitan/log-service": "23.6.0",
|
|
26
|
+
"@servicetitan/react-ioc": "23.6.0",
|
|
27
27
|
"@testing-library/dom": "^9.0.0",
|
|
28
|
-
"@testing-library/jest-dom": "^6.4.
|
|
29
|
-
"@testing-library/react": "^15.0.
|
|
28
|
+
"@testing-library/jest-dom": "^6.4.5",
|
|
29
|
+
"@testing-library/react": "^15.0.7",
|
|
30
30
|
"@types/history": "~4.7.10",
|
|
31
31
|
"@types/lodash.get": "~4.4.6",
|
|
32
32
|
"@types/react": "~18.3.0",
|
|
@@ -39,8 +39,8 @@
|
|
|
39
39
|
},
|
|
40
40
|
"peerDependencies": {
|
|
41
41
|
"@servicetitan/design-system": ">=12.6.2",
|
|
42
|
-
"@servicetitan/log-service": "23.
|
|
43
|
-
"@servicetitan/react-ioc": "23.
|
|
42
|
+
"@servicetitan/log-service": "23.6.0",
|
|
43
|
+
"@servicetitan/react-ioc": "23.6.0",
|
|
44
44
|
"history": "~4.10.1",
|
|
45
45
|
"react": ">=17.0.2",
|
|
46
46
|
"react-dom": ">=17.0.2"
|
|
@@ -51,5 +51,5 @@
|
|
|
51
51
|
"cli": {
|
|
52
52
|
"webpack": false
|
|
53
53
|
},
|
|
54
|
-
"gitHead": "
|
|
54
|
+
"gitHead": "d7e765992dd65d46e2dca48c150bd611af6a034f"
|
|
55
55
|
}
|
|
@@ -118,12 +118,14 @@ describe('[web-components] Loader', () => {
|
|
|
118
118
|
jest.mocked(getVersionMismatches).mockReturnValue({});
|
|
119
119
|
});
|
|
120
120
|
|
|
121
|
+
const Root = () => (
|
|
122
|
+
<Provider singletons={singletons}>
|
|
123
|
+
<Loader {...props} />
|
|
124
|
+
</Provider>
|
|
125
|
+
);
|
|
126
|
+
|
|
121
127
|
function subject() {
|
|
122
|
-
return render(
|
|
123
|
-
<Provider singletons={singletons}>
|
|
124
|
-
<Loader {...props} />
|
|
125
|
-
</Provider>
|
|
126
|
-
);
|
|
128
|
+
return render(<Root />);
|
|
127
129
|
}
|
|
128
130
|
|
|
129
131
|
test('renders default loading fallback', () => {
|
|
@@ -140,6 +142,14 @@ describe('[web-components] Loader', () => {
|
|
|
140
142
|
subject();
|
|
141
143
|
expect(screen.getByText('foo')).toBeInTheDocument();
|
|
142
144
|
});
|
|
145
|
+
|
|
146
|
+
test('preserves component state when loading fallback is updated', () => {
|
|
147
|
+
const renderResult = subject();
|
|
148
|
+
expect(common.getJson).toHaveBeenCalledTimes(1);
|
|
149
|
+
props.loadingFallback = <div>foo</div>;
|
|
150
|
+
renderResult.rerender(<Root />);
|
|
151
|
+
expect(common.getJson).toHaveBeenCalledTimes(1);
|
|
152
|
+
});
|
|
143
153
|
});
|
|
144
154
|
|
|
145
155
|
describe('when the loadingFallback throws an error', () => {
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import '@testing-library/jest-dom';
|
|
2
|
+
import { render } from '@testing-library/react';
|
|
3
|
+
|
|
4
|
+
import { MockComponent, registerComponent } from '../__mocks__';
|
|
5
|
+
|
|
6
|
+
describe('[web-components] register - anvil2 css', () => {
|
|
7
|
+
const componentName = 'mock-anvil2-app';
|
|
8
|
+
|
|
9
|
+
class Page {
|
|
10
|
+
static get componentShadowRoot() {
|
|
11
|
+
return document.querySelector(componentName)!.shadowRoot!;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
static get portalShadowRoot() {
|
|
15
|
+
return document.querySelector('body')!.lastElementChild!.shadowRoot!;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
beforeAll(() => {
|
|
20
|
+
registerComponent(MockComponent, componentName, {
|
|
21
|
+
sharedDependenciesNames: ['@servicetitan/anvil2'],
|
|
22
|
+
legacyRoot: true,
|
|
23
|
+
});
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
const subject = () => {
|
|
27
|
+
jest.spyOn(console, 'error').mockImplementation(jest.fn()); // suppress "ReactDOM.render deprecated" error
|
|
28
|
+
const Component: any = componentName;
|
|
29
|
+
return render(<Component />);
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
describe(`when anvil2.bundle.css is present in the DOM`, () => {
|
|
33
|
+
let cssLink: HTMLLinkElement;
|
|
34
|
+
|
|
35
|
+
beforeEach(() => {
|
|
36
|
+
cssLink = Object.assign(document.createElement('link'), {
|
|
37
|
+
href: 'http://localhost/anvil2.bundle.css',
|
|
38
|
+
rel: 'stylesheet',
|
|
39
|
+
});
|
|
40
|
+
document.body.appendChild(cssLink);
|
|
41
|
+
const designSystemCssLink = Object.assign(document.createElement('link'), {
|
|
42
|
+
href: 'http://localhost/design-system.bundle.css',
|
|
43
|
+
rel: 'stylesheet',
|
|
44
|
+
});
|
|
45
|
+
document.body.appendChild(designSystemCssLink);
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
afterEach(() => {
|
|
49
|
+
cssLink.remove();
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
function expectStyleInDom(styleUrl: string, shadowRootFn: () => ShadowRoot) {
|
|
53
|
+
expect(shadowRootFn().querySelectorAll('link').length).toBe(1);
|
|
54
|
+
const link = shadowRootFn().querySelector(
|
|
55
|
+
`link[href='${styleUrl}'][rel='stylesheet'][crossorigin='anonymous']`
|
|
56
|
+
);
|
|
57
|
+
expect(link).toBeInTheDocument();
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
test(`loads anvil2.bundle.css into the component shadow DOM`, () => {
|
|
61
|
+
subject();
|
|
62
|
+
expectStyleInDom(cssLink.href, () => Page.componentShadowRoot);
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
test(`loads anvil2.bundle.css into the portal shadow DOM`, () => {
|
|
66
|
+
subject();
|
|
67
|
+
expectStyleInDom(cssLink.href, () => Page.portalShadowRoot);
|
|
68
|
+
});
|
|
69
|
+
});
|
|
70
|
+
});
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import '@testing-library/jest-dom';
|
|
2
|
-
import { render } from '@testing-library/react';
|
|
2
|
+
import { render, waitFor } from '@testing-library/react';
|
|
3
3
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
4
4
|
// @ts-ignore because Jest mistakenly complains that "'shadow-dom-testing-library' cannot be imported using this construct".
|
|
5
5
|
import { screen } from 'shadow-dom-testing-library';
|
|
@@ -27,10 +27,12 @@ describe('[web-components] register', () => {
|
|
|
27
27
|
webComponent[0]?.setAttribute('data-mfe-data', JSON.stringify({ string: 'baz' }));
|
|
28
28
|
};
|
|
29
29
|
|
|
30
|
-
test('useMFEDataContext provides updated data', () => {
|
|
30
|
+
test('useMFEDataContext provides updated data', async () => {
|
|
31
31
|
setup();
|
|
32
32
|
|
|
33
|
-
|
|
33
|
+
await waitFor(() => {
|
|
34
|
+
expect(screen.getByShadowText(`Prop: string, Value: "baz"`)).toBeInTheDocument();
|
|
35
|
+
});
|
|
34
36
|
expect(screen.getByShadowText(`Data: string, Value: "baz"`)).toBeInTheDocument();
|
|
35
37
|
});
|
|
36
38
|
});
|
|
@@ -28,7 +28,9 @@ describe('[web-components] register', () => {
|
|
|
28
28
|
}
|
|
29
29
|
|
|
30
30
|
beforeAll(() => {
|
|
31
|
-
registerComponent(MockComponent, componentName
|
|
31
|
+
registerComponent(MockComponent, componentName, {
|
|
32
|
+
sharedDependenciesNames: ['@servicetitan/design-system'],
|
|
33
|
+
});
|
|
32
34
|
/*
|
|
33
35
|
* mock <link>'s onload so that we can call it directly from the test,
|
|
34
36
|
* because it won't call itself in the test environment
|
package/src/loader.tsx
CHANGED
|
@@ -40,7 +40,9 @@ export interface LoaderProps<T> {
|
|
|
40
40
|
onRequestError?(error: GetJsonError): boolean;
|
|
41
41
|
}
|
|
42
42
|
|
|
43
|
-
export type LoaderDataProps = Pick<LoaderProps<{}>, 'data' | 'className'
|
|
43
|
+
export type LoaderDataProps = Pick<LoaderProps<{}>, 'data' | 'className'> & {
|
|
44
|
+
LoadingFallback: () => JSX.Element;
|
|
45
|
+
};
|
|
44
46
|
|
|
45
47
|
export const Loader = forwardRef<LoaderRef, LoaderProps<{}>>((props, ref) => {
|
|
46
48
|
const { basename, fallbackSrc, onRequestError, retries, src } = props;
|
|
@@ -72,7 +74,6 @@ export const Loader = forwardRef<LoaderRef, LoaderProps<{}>>((props, ref) => {
|
|
|
72
74
|
onRequestError,
|
|
73
75
|
retries,
|
|
74
76
|
src,
|
|
75
|
-
LoadingFallback,
|
|
76
77
|
}),
|
|
77
78
|
[
|
|
78
79
|
basename,
|
|
@@ -84,25 +85,28 @@ export const Loader = forwardRef<LoaderRef, LoaderProps<{}>>((props, ref) => {
|
|
|
84
85
|
fallbackSrc,
|
|
85
86
|
retries,
|
|
86
87
|
src,
|
|
87
|
-
LoadingFallback,
|
|
88
88
|
]
|
|
89
89
|
);
|
|
90
90
|
|
|
91
91
|
return (
|
|
92
92
|
<ErrorBoundary moduleName={src} fallback={ErrorFallback}>
|
|
93
93
|
<Suspense fallback={<LoadingFallback />}>
|
|
94
|
-
<Loader
|
|
94
|
+
<Loader
|
|
95
|
+
ref={ref}
|
|
96
|
+
data={props.data ?? {}}
|
|
97
|
+
className={props.className}
|
|
98
|
+
LoadingFallback={LoadingFallback}
|
|
99
|
+
/>
|
|
95
100
|
</Suspense>
|
|
96
101
|
</ErrorBoundary>
|
|
97
102
|
);
|
|
98
103
|
});
|
|
99
104
|
|
|
100
|
-
type LazyLoaderProps =
|
|
105
|
+
type LazyLoaderProps = LoaderProps<any> & {
|
|
101
106
|
cancelation: AbortController;
|
|
102
107
|
exposedDependencies?: ExposedDependencies;
|
|
103
108
|
eventBus: EventBus;
|
|
104
109
|
logService?: Log;
|
|
105
|
-
LoadingFallback: () => JSX.Element;
|
|
106
110
|
};
|
|
107
111
|
|
|
108
112
|
function lazyLoader(props: LazyLoaderProps) {
|
|
@@ -119,7 +123,13 @@ function lazyLoader(props: LazyLoaderProps) {
|
|
|
119
123
|
};
|
|
120
124
|
}, []);
|
|
121
125
|
|
|
122
|
-
return
|
|
126
|
+
return (
|
|
127
|
+
<LazyWebComponent
|
|
128
|
+
data={props.data}
|
|
129
|
+
className={props.className}
|
|
130
|
+
LoadingFallback={props.LoadingFallback}
|
|
131
|
+
/>
|
|
132
|
+
);
|
|
123
133
|
});
|
|
124
134
|
}
|
|
125
135
|
|
|
@@ -134,7 +144,6 @@ function lazyWebComponent(props: LazyLoaderProps) {
|
|
|
134
144
|
onRequestError,
|
|
135
145
|
retries,
|
|
136
146
|
src,
|
|
137
|
-
LoadingFallback,
|
|
138
147
|
} = props;
|
|
139
148
|
|
|
140
149
|
return lazy<(props: LoaderDataProps) => JSX.Element | null>(async () => {
|
|
@@ -169,7 +178,6 @@ function lazyWebComponent(props: LazyLoaderProps) {
|
|
|
169
178
|
eventBus,
|
|
170
179
|
exposedDependencies,
|
|
171
180
|
logService,
|
|
172
|
-
LoadingFallback,
|
|
173
181
|
}),
|
|
174
182
|
};
|
|
175
183
|
});
|
package/src/register.tsx
CHANGED
|
@@ -35,6 +35,7 @@ const Placeholder: FC = () => <div style={{ display: 'none' }} />;
|
|
|
35
35
|
|
|
36
36
|
export interface RegisterOptions {
|
|
37
37
|
legacyRoot?: boolean;
|
|
38
|
+
sharedDependenciesNames?: string[];
|
|
38
39
|
}
|
|
39
40
|
|
|
40
41
|
export function register(Component: ComponentType, light: boolean, options?: RegisterOptions) {
|
|
@@ -66,18 +67,8 @@ export function register(Component: ComponentType, light: boolean, options?: Reg
|
|
|
66
67
|
if (this.root?.isConnected) {
|
|
67
68
|
return;
|
|
68
69
|
}
|
|
69
|
-
const
|
|
70
|
-
|
|
71
|
-
({ href }) => href && /design-system(\..+)?\.bundle\.css/.test(href)
|
|
72
|
-
)?.href
|
|
73
|
-
: undefined;
|
|
74
|
-
|
|
75
|
-
const styleUrls = [
|
|
76
|
-
...(designSystemUrl ? [designSystemUrl] : []),
|
|
77
|
-
...(this.hasAttribute('style-urls')
|
|
78
|
-
? JSON.parse(decodeURIComponent(this.getAttribute('style-urls')!))
|
|
79
|
-
: []),
|
|
80
|
-
];
|
|
70
|
+
const sharedDependenciesNames = options?.sharedDependenciesNames ?? [];
|
|
71
|
+
const styleUrls = getStyleUrls(light, sharedDependenciesNames, this);
|
|
81
72
|
|
|
82
73
|
this.styles = {
|
|
83
74
|
total: styleUrls.length * 2,
|
|
@@ -98,8 +89,10 @@ export function register(Component: ComponentType, light: boolean, options?: Reg
|
|
|
98
89
|
|
|
99
90
|
this.view = render(<Placeholder />, this.root, options);
|
|
100
91
|
|
|
101
|
-
this.styles.elements.push(
|
|
102
|
-
|
|
92
|
+
this.styles.elements.push(
|
|
93
|
+
...this.attachStyles(this.root, styleUrls),
|
|
94
|
+
...this.attachStyles(this.portal, styleUrls)
|
|
95
|
+
);
|
|
103
96
|
}
|
|
104
97
|
|
|
105
98
|
disconnectedCallback() {
|
|
@@ -132,10 +125,8 @@ export function register(Component: ComponentType, light: boolean, options?: Reg
|
|
|
132
125
|
this[key as keyof IWebComponent] = value;
|
|
133
126
|
}
|
|
134
127
|
|
|
135
|
-
if (this.styles.loaded === this.styles.total) {
|
|
136
|
-
|
|
137
|
-
this.render();
|
|
138
|
-
}
|
|
128
|
+
if (this.styles.loaded === this.styles.total && Object.values(entries).some(v => !!v)) {
|
|
129
|
+
this.render();
|
|
139
130
|
}
|
|
140
131
|
};
|
|
141
132
|
|
|
@@ -237,6 +228,30 @@ export function register(Component: ComponentType, light: boolean, options?: Reg
|
|
|
237
228
|
window.customElements.define(WEB_COMPONENT_NAME, WebComponent);
|
|
238
229
|
}
|
|
239
230
|
|
|
231
|
+
function getStyleUrls(light: boolean, sharedDependenciesNames: string[], el: HTMLElement) {
|
|
232
|
+
function getCssUrl(dependencyName: string, cssFileRegEx: RegExp) {
|
|
233
|
+
if (light && sharedDependenciesNames.includes(dependencyName)) {
|
|
234
|
+
return Array.from(document.getElementsByTagName('link')).find(
|
|
235
|
+
({ href }) => href && cssFileRegEx.test(href)
|
|
236
|
+
)?.href;
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
const designSystemUrl = getCssUrl(
|
|
241
|
+
'@servicetitan/design-system',
|
|
242
|
+
/design-system(\..+)?\.bundle\.css/
|
|
243
|
+
);
|
|
244
|
+
const anvil2CssUrl = getCssUrl('@servicetitan/anvil2', /anvil2(\..+)?\.bundle\.css/);
|
|
245
|
+
|
|
246
|
+
return [
|
|
247
|
+
...(designSystemUrl ? [designSystemUrl] : []),
|
|
248
|
+
...(anvil2CssUrl ? [anvil2CssUrl] : []),
|
|
249
|
+
...(el.hasAttribute('style-urls')
|
|
250
|
+
? JSON.parse(decodeURIComponent(el.getAttribute('style-urls')!))
|
|
251
|
+
: []),
|
|
252
|
+
];
|
|
253
|
+
}
|
|
254
|
+
|
|
240
255
|
function RenderCallback({ callback }: { callback: () => void }) {
|
|
241
256
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
242
257
|
useEffect(() => callback(), []);
|
|
@@ -15,16 +15,14 @@ interface WebComponentProps {
|
|
|
15
15
|
eventBus: EventBus;
|
|
16
16
|
exposedDependencies?: ExposedDependencies;
|
|
17
17
|
logService?: Log;
|
|
18
|
-
LoadingFallback: () => JSX.Element;
|
|
19
18
|
}
|
|
20
19
|
|
|
21
20
|
export function webComponent(props: WebComponentProps) {
|
|
22
|
-
const { basename, bundleInfo, eventBus, exposedDependencies, logService
|
|
23
|
-
props;
|
|
21
|
+
const { basename, bundleInfo, eventBus, exposedDependencies, logService } = props;
|
|
24
22
|
const { WebComponent, disposer, mfeSupportsRerendering } = bundleInfo;
|
|
25
23
|
const elementName = getElementName(bundleInfo);
|
|
26
24
|
|
|
27
|
-
return (props: LoaderDataProps) => {
|
|
25
|
+
return ({ LoadingFallback, ...props }: LoaderDataProps) => {
|
|
28
26
|
const [isLoading, setIsLoading] = useState(true);
|
|
29
27
|
const [historyManager] = useOptionalDependencies(HistoryManager);
|
|
30
28
|
|