@servicetitan/confirm-navigation 23.2.0 → 23.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/dist/confirm-navigation.d.ts +1 -0
- package/dist/confirm-navigation.d.ts.map +1 -1
- package/dist/confirm-navigation.js +2 -1
- package/dist/confirm-navigation.js.map +1 -1
- package/dist/demo/ignore-search-changes-example.d.ts +3 -0
- package/dist/demo/ignore-search-changes-example.d.ts.map +1 -0
- package/dist/demo/ignore-search-changes-example.js +24 -0
- package/dist/demo/ignore-search-changes-example.js.map +1 -0
- package/dist/demo/index.d.ts +1 -0
- package/dist/demo/index.d.ts.map +1 -1
- package/dist/demo/index.js +1 -0
- package/dist/demo/index.js.map +1 -1
- package/package.json +2 -2
- package/src/confirm-navigation.stories.tsx +9 -1
- package/src/confirm-navigation.tsx +3 -1
- package/src/demo/ignore-search-changes-example.tsx +60 -0
- package/src/demo/index.ts +1 -0
|
@@ -14,6 +14,7 @@ interface ConfirmNavigationRenderProps {
|
|
|
14
14
|
}
|
|
15
15
|
export interface ConfirmNavigationOwnProps {
|
|
16
16
|
when?: boolean;
|
|
17
|
+
ignoreSearchChanges?: boolean;
|
|
17
18
|
title?: string;
|
|
18
19
|
description?: string;
|
|
19
20
|
component?: ComponentType<ConfirmNavigationRenderProps> | FC<ConfirmNavigationRenderProps>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"confirm-navigation.d.ts","sourceRoot":"","sources":["../src/confirm-navigation.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAa,aAAa,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AACrD,OAAO,EAAc,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAanE,OAAO,CAAC,MAAM,CAAC;IACX,MAAM,WAAW,MAAM;QACnB,GAAG,EAAE,GAAG,CAAC;KACZ;CACJ;AAED,UAAU,4BAA4B;IAClC,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,IAAI,IAAI,CAAC;IAClB,QAAQ,IAAI,IAAI,CAAC;CACpB;AAED,MAAM,WAAW,yBAAyB;IACtC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,aAAa,CAAC,4BAA4B,CAAC,GAAG,EAAE,CAAC,4BAA4B,CAAC,CAAC;CAC9F;AAED,oBAAY,sBAAsB,GAAG,yBAAyB,GAAG,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"confirm-navigation.d.ts","sourceRoot":"","sources":["../src/confirm-navigation.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAa,aAAa,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AACrD,OAAO,EAAc,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAanE,OAAO,CAAC,MAAM,CAAC;IACX,MAAM,WAAW,MAAM;QACnB,GAAG,EAAE,GAAG,CAAC;KACZ;CACJ;AAED,UAAU,4BAA4B;IAClC,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,IAAI,IAAI,CAAC;IAClB,QAAQ,IAAI,IAAI,CAAC;CACpB;AAED,MAAM,WAAW,yBAAyB;IACtC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,aAAa,CAAC,4BAA4B,CAAC,GAAG,EAAE,CAAC,4BAA4B,CAAC,CAAC;CAC9F;AAED,oBAAY,sBAAsB,GAAG,yBAAyB,GAAG,mBAAmB,CAAC;AA0LrF,eAAO,MAAM,iBAAiB,iPAA0C,sBAAsB,wBAE7F,CAAC"}
|
|
@@ -81,7 +81,8 @@ let ConfirmNavigationUnwrapped = class ConfirmNavigationUnwrapped extends Compon
|
|
|
81
81
|
return false;
|
|
82
82
|
}
|
|
83
83
|
const hasChanged = history.location.pathname !== targetLocation.pathname ||
|
|
84
|
-
|
|
84
|
+
(!this.props.ignoreSearchChanges &&
|
|
85
|
+
history.location.search !== targetLocation.search);
|
|
85
86
|
if (hasChanged) {
|
|
86
87
|
runInAction(() => {
|
|
87
88
|
this.isOpen = true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"confirm-navigation.js","sourceRoot":"","sources":["../src/confirm-navigation.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,EAAE,SAAS,EAAqB,MAAM,OAAO,CAAC;AACrD,OAAO,EAAE,UAAU,EAAuB,MAAM,kBAAkB,CAAC;AAEnE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,MAAM,CAAC;AACjF,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAItC,OAAO,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AAErD,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"confirm-navigation.js","sourceRoot":"","sources":["../src/confirm-navigation.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ignore-search-changes-example.d.ts","sourceRoot":"","sources":["../../src/demo/ignore-search-changes-example.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAsB,EAAE,EAAE,MAAM,OAAO,CAAC;AAQ/C,eAAO,MAAM,0BAA0B,EAAE,EA6BxC,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useState, Fragment } from 'react';
|
|
3
|
+
import { Link, useLocation } from 'react-router-dom';
|
|
4
|
+
import { Button, ButtonGroup, Checkbox } from '@servicetitan/design-system';
|
|
5
|
+
import { ConfirmNavigation } from '..';
|
|
6
|
+
//
|
|
7
|
+
export const IgnoreSearchChangesExample = () => {
|
|
8
|
+
const [confirm, setConfirm] = useState(true);
|
|
9
|
+
const handleConfirmChange = (_0, checked) => {
|
|
10
|
+
setConfirm(checked);
|
|
11
|
+
};
|
|
12
|
+
const [ignoreSearch, setIgnoreSearch] = useState(true);
|
|
13
|
+
const handleIgnoreSearchChange = (_0, checked) => {
|
|
14
|
+
setIgnoreSearch(checked);
|
|
15
|
+
};
|
|
16
|
+
return (_jsxs(Fragment, { children: [_jsx(Checkbox, { label: "Confirm Navigation?", checked: confirm, onChange: handleConfirmChange }), _jsx(Checkbox, { label: "Ignore search changes?", checked: ignoreSearch, onChange: handleIgnoreSearchChange }), _jsx(ConfirmNavigation, { when: confirm, ignoreSearchChanges: ignoreSearch }), _jsx(AdvancedUrlChange, {})] }));
|
|
17
|
+
};
|
|
18
|
+
const AdvancedUrlChange = () => {
|
|
19
|
+
const location = useLocation();
|
|
20
|
+
const newPath = location.pathname === '/some-new-path-1' ? '/another-new-path-2' : '/some-new-path-1';
|
|
21
|
+
const newSearch = location.search === '?newParam=true' ? '?anotherParam=true' : '?newParam=true';
|
|
22
|
+
return (_jsxs(ButtonGroup, { children: [_jsx(Link, Object.assign({ to: newPath }, { children: _jsx(Button, Object.assign({ primary: true, className: "m-t-2" }, { children: "Change path" })) })), _jsx(Link, Object.assign({ to: location.pathname + newSearch }, { children: _jsx(Button, Object.assign({ primary: true, className: "m-t-2" }, { children: "Change only search" })) }))] }));
|
|
23
|
+
};
|
|
24
|
+
//# sourceMappingURL=ignore-search-changes-example.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ignore-search-changes-example.js","sourceRoot":"","sources":["../../src/demo/ignore-search-changes-example.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAM,MAAM,OAAO,CAAC;AAC/C,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAErD,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAE5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,IAAI,CAAC;AACvC,EAAE;AAEF,MAAM,CAAC,MAAM,0BAA0B,GAAO,GAAG,EAAE;IAC/C,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC7C,MAAM,mBAAmB,GAAG,CAAC,EAAS,EAAE,OAAgB,EAAE,EAAE;QACxD,UAAU,CAAC,OAAO,CAAC,CAAC;IACxB,CAAC,CAAC;IAEF,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IACvD,MAAM,wBAAwB,GAAG,CAAC,EAAS,EAAE,OAAgB,EAAE,EAAE;QAC7D,eAAe,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC,CAAC;IAEF,OAAO,CACH,MAAC,QAAQ,eACL,KAAC,QAAQ,IACL,KAAK,EAAC,qBAAqB,EAC3B,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,mBAAmB,GAC/B,EACF,KAAC,QAAQ,IACL,KAAK,EAAC,wBAAwB,EAC9B,OAAO,EAAE,YAAY,EACrB,QAAQ,EAAE,wBAAwB,GACpC,EAEF,KAAC,iBAAiB,IAAC,IAAI,EAAE,OAAO,EAAE,mBAAmB,EAAE,YAAY,GAAI,EAEvE,KAAC,iBAAiB,KAAG,IACd,CACd,CAAC;AACN,CAAC,CAAC;AAEF,MAAM,iBAAiB,GAAG,GAAG,EAAE;IAC3B,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,MAAM,OAAO,GACT,QAAQ,CAAC,QAAQ,KAAK,kBAAkB,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,kBAAkB,CAAC;IAC1F,MAAM,SAAS,GACX,QAAQ,CAAC,MAAM,KAAK,gBAAgB,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,gBAAgB,CAAC;IACnF,OAAO,CACH,MAAC,WAAW,eACR,KAAC,IAAI,kBAAC,EAAE,EAAE,OAAO,gBACb,KAAC,MAAM,kBAAC,OAAO,QAAC,SAAS,EAAC,OAAO,iCAExB,IACN,EACP,KAAC,IAAI,kBAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,SAAS,gBACnC,KAAC,MAAM,kBAAC,OAAO,QAAC,SAAS,EAAC,OAAO,wCAExB,IACN,IACG,CACjB,CAAC;AACN,CAAC,CAAC"}
|
package/dist/demo/index.d.ts
CHANGED
package/dist/demo/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/demo/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/demo/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,iCAAiC,CAAC"}
|
package/dist/demo/index.js
CHANGED
package/dist/demo/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/demo/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/demo/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,iCAAiC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@servicetitan/confirm-navigation",
|
|
3
|
-
"version": "23.
|
|
3
|
+
"version": "23.3.0",
|
|
4
4
|
"description": "",
|
|
5
5
|
"homepage": "https://docs.st.dev/docs/frontend/confirm-navigation",
|
|
6
6
|
"repository": {
|
|
@@ -46,5 +46,5 @@
|
|
|
46
46
|
"cli": {
|
|
47
47
|
"webpack": false
|
|
48
48
|
},
|
|
49
|
-
"gitHead": "
|
|
49
|
+
"gitHead": "f8b98edcad0534067ecd1d60bf2903895a054ddf"
|
|
50
50
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Button } from '@servicetitan/design-system';
|
|
2
2
|
import { BrowserRouter, Link } from 'react-router-dom';
|
|
3
3
|
|
|
4
|
-
import { BasicExample, CustomExample } from './demo';
|
|
4
|
+
import { BasicExample, CustomExample, IgnoreSearchChangesExample } from './demo';
|
|
5
5
|
|
|
6
6
|
export default {
|
|
7
7
|
title: 'Confirm Navigation/Demos',
|
|
@@ -34,3 +34,11 @@ export const Custom = () => {
|
|
|
34
34
|
</BrowserRouter>
|
|
35
35
|
);
|
|
36
36
|
};
|
|
37
|
+
|
|
38
|
+
export const IgnoreSearchChanges = () => {
|
|
39
|
+
return (
|
|
40
|
+
<BrowserRouter>
|
|
41
|
+
<IgnoreSearchChangesExample />
|
|
42
|
+
</BrowserRouter>
|
|
43
|
+
);
|
|
44
|
+
};
|
|
@@ -28,6 +28,7 @@ interface ConfirmNavigationRenderProps {
|
|
|
28
28
|
|
|
29
29
|
export interface ConfirmNavigationOwnProps {
|
|
30
30
|
when?: boolean;
|
|
31
|
+
ignoreSearchChanges?: boolean;
|
|
31
32
|
title?: string;
|
|
32
33
|
description?: string;
|
|
33
34
|
component?: ComponentType<ConfirmNavigationRenderProps> | FC<ConfirmNavigationRenderProps>;
|
|
@@ -140,7 +141,8 @@ class ConfirmNavigationUnwrapped extends Component<ConfirmNavigationProps> {
|
|
|
140
141
|
|
|
141
142
|
const hasChanged =
|
|
142
143
|
history.location.pathname !== targetLocation.pathname ||
|
|
143
|
-
|
|
144
|
+
(!this.props.ignoreSearchChanges &&
|
|
145
|
+
history.location.search !== targetLocation.search);
|
|
144
146
|
|
|
145
147
|
if (hasChanged) {
|
|
146
148
|
runInAction(() => {
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { useState, Fragment, FC } from 'react';
|
|
2
|
+
import { Link, useLocation } from 'react-router-dom';
|
|
3
|
+
|
|
4
|
+
import { Button, ButtonGroup, Checkbox } from '@servicetitan/design-system';
|
|
5
|
+
|
|
6
|
+
import { ConfirmNavigation } from '..';
|
|
7
|
+
//
|
|
8
|
+
|
|
9
|
+
export const IgnoreSearchChangesExample: FC = () => {
|
|
10
|
+
const [confirm, setConfirm] = useState(true);
|
|
11
|
+
const handleConfirmChange = (_0: never, checked: boolean) => {
|
|
12
|
+
setConfirm(checked);
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
const [ignoreSearch, setIgnoreSearch] = useState(true);
|
|
16
|
+
const handleIgnoreSearchChange = (_0: never, checked: boolean) => {
|
|
17
|
+
setIgnoreSearch(checked);
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
return (
|
|
21
|
+
<Fragment>
|
|
22
|
+
<Checkbox
|
|
23
|
+
label="Confirm Navigation?"
|
|
24
|
+
checked={confirm}
|
|
25
|
+
onChange={handleConfirmChange}
|
|
26
|
+
/>
|
|
27
|
+
<Checkbox
|
|
28
|
+
label="Ignore search changes?"
|
|
29
|
+
checked={ignoreSearch}
|
|
30
|
+
onChange={handleIgnoreSearchChange}
|
|
31
|
+
/>
|
|
32
|
+
|
|
33
|
+
<ConfirmNavigation when={confirm} ignoreSearchChanges={ignoreSearch} />
|
|
34
|
+
|
|
35
|
+
<AdvancedUrlChange />
|
|
36
|
+
</Fragment>
|
|
37
|
+
);
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
const AdvancedUrlChange = () => {
|
|
41
|
+
const location = useLocation();
|
|
42
|
+
const newPath =
|
|
43
|
+
location.pathname === '/some-new-path-1' ? '/another-new-path-2' : '/some-new-path-1';
|
|
44
|
+
const newSearch =
|
|
45
|
+
location.search === '?newParam=true' ? '?anotherParam=true' : '?newParam=true';
|
|
46
|
+
return (
|
|
47
|
+
<ButtonGroup>
|
|
48
|
+
<Link to={newPath}>
|
|
49
|
+
<Button primary className="m-t-2">
|
|
50
|
+
Change path
|
|
51
|
+
</Button>
|
|
52
|
+
</Link>
|
|
53
|
+
<Link to={location.pathname + newSearch}>
|
|
54
|
+
<Button primary className="m-t-2">
|
|
55
|
+
Change only search
|
|
56
|
+
</Button>
|
|
57
|
+
</Link>
|
|
58
|
+
</ButtonGroup>
|
|
59
|
+
);
|
|
60
|
+
};
|
package/src/demo/index.ts
CHANGED