@servicetitan/confirm-navigation 41.0.0 → 41.2.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.
@@ -1,5 +1,5 @@
1
- import { ComponentType, FC } from 'react';
2
- import { RouteComponentProps } from 'react-router-dom';
1
+ import type { ComponentType, FC } from 'react';
2
+ import type { RouteComponentProps } from 'react-router-dom';
3
3
  declare global {
4
4
  export interface Window {
5
5
  App: any;
@@ -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,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,MAAM,MAAM,sBAAsB,GAAG,yBAAyB,GAAG,mBAAmB,CAAC;AA0LrF,eAAO,MAAM,iBAAiB,qKAA0C,sBAAsB,oDAE7F,CAAC"}
1
+ {"version":3,"file":"confirm-navigation.d.ts","sourceRoot":"","sources":["../src/confirm-navigation.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAE/C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAc5D,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,MAAM,MAAM,sBAAsB,GAAG,yBAAyB,GAAG,mBAAmB,CAAC;AA0LrF,eAAO,MAAM,iBAAiB,qKAA0C,sBAAsB,oDAE7F,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/confirm-navigation.tsx"],"sourcesContent":["import { Component, ComponentType, FC } from 'react';\nimport { withRouter, RouteComponentProps } from 'react-router-dom';\n\nimport { observable, action, runInAction, comparer, makeObservable } from 'mobx';\nimport { observer } from 'mobx-react';\n\nimport { History, Location, UnregisterCallback } from 'history';\n\nimport { Dialog } from '@servicetitan/design-system';\n\nimport { injectDependency, optional } from '@servicetitan/react-ioc';\nimport { HistoryManager } from '@servicetitan/web-components';\n\n// TODO: refactor this. External package should not do any assumptions about window.App.\ndeclare global {\n export interface Window {\n App: any;\n }\n}\n\ninterface ConfirmNavigationRenderProps {\n isOpen: boolean;\n title?: string;\n description?: string;\n onConfirm(): void;\n onCancel(): void;\n}\n\nexport interface ConfirmNavigationOwnProps {\n when?: boolean;\n ignoreSearchChanges?: boolean;\n title?: string;\n description?: string;\n component?: ComponentType<ConfirmNavigationRenderProps> | FC<ConfirmNavigationRenderProps>;\n}\n\nexport type ConfirmNavigationProps = ConfirmNavigationOwnProps & RouteComponentProps;\n\nconst DefaultConfirmComponent: FC<ConfirmNavigationRenderProps> = ({\n title,\n description,\n isOpen,\n onConfirm,\n onCancel,\n}) => (\n <Dialog\n negative\n open={isOpen}\n title={title}\n onPrimaryActionClick={onConfirm}\n primaryActionName=\"Leave\"\n onSecondaryActionClick={onCancel}\n secondaryActionName=\"Stay\"\n onClose={onCancel}\n >\n {description}\n </Dialog>\n);\n\n@observer\nclass ConfirmNavigationUnwrapped extends Component<ConfirmNavigationProps> {\n static defaultProps: Partial<ConfirmNavigationProps> = {\n title: 'Are you sure you want to leave?',\n description: \"You'll lose all your changes if you do.\",\n };\n\n @optional()\n @injectDependency(HistoryManager)\n declare historyManager?: HistoryManager;\n\n @observable isOpen = false;\n\n isRedirecting = false;\n\n suspended?: {\n history: History;\n currentLocation: Location;\n targetLocation: Location;\n };\n\n unblock!: UnregisterCallback;\n\n constructor(props: ConfirmNavigationProps) {\n super(props);\n makeObservable(this);\n }\n\n @action\n reset() {\n this.isOpen = false;\n this.isRedirecting = false;\n this.suspended = undefined;\n }\n\n componentDidMount() {\n this.block();\n\n if (window.App?.Instance?.before) {\n window.App.Instance.before(this.onBefore);\n }\n }\n\n componentDidUpdate(prevProps: RouteComponentProps) {\n const { history: prevHistory } = prevProps;\n const { history } = this.props;\n\n if (!comparer.structural(prevHistory.location, history.location)) {\n this.unblock();\n this.block();\n }\n }\n\n componentWillUnmount() {\n this.unblock();\n\n if (window.App?.Instance?.befores) {\n window.App.Instance.befores = window.App.Instance.befores.filter(\n ([, callback]: [any, Function]) => callback !== this.onBefore\n );\n }\n }\n\n // We should terminate Sammy navigation and fix URL of the current page\n onBefore = () => {\n if (this.isOpen && this.suspended) {\n this.isRedirecting = true;\n window.App.Instance.setLocation('#' + this.suspended.currentLocation.pathname);\n }\n\n return !this.isOpen;\n };\n\n block = () => {\n const getTransitionHook = (history: History) => {\n return (targetLocation: Location) => {\n // We shouldn't memorize new locations if it is navigation just for fix URL of the current page\n if (this.isRedirecting) {\n this.isRedirecting = false;\n return false;\n }\n\n const hasChanged =\n history.location.pathname !== targetLocation.pathname ||\n (!this.props.ignoreSearchChanges &&\n history.location.search !== targetLocation.search);\n\n if (hasChanged) {\n runInAction(() => {\n this.isOpen = true;\n this.suspended = {\n history,\n targetLocation,\n currentLocation: history.location,\n };\n });\n\n return false;\n }\n };\n };\n\n const { history } = this.props;\n\n const unblock = history.block(getTransitionHook(history));\n const restUnblocks = Array.from(this.historyManager?.storage.keys() ?? [])\n .filter(item => item !== history)\n .map(history => history.block(getTransitionHook(history)));\n\n this.unblock = () => {\n for (const unblock of restUnblocks) {\n unblock();\n }\n\n unblock();\n };\n };\n\n handleConfirm = () => {\n if (!this.suspended) {\n return;\n }\n\n const { history, currentLocation, targetLocation } = this.suspended;\n\n this.reset();\n\n this.unblock();\n // Fixing URL of the current page if it was changed manually\n history.replace(currentLocation.pathname + currentLocation.search);\n history.push(targetLocation);\n };\n\n handleCancel = () => {\n if (!this.suspended) {\n return;\n }\n\n const { history, currentLocation } = this.suspended;\n\n this.reset();\n\n this.unblock();\n // Fixing URL of the current page if it was changed manually\n history.replace(currentLocation.pathname + currentLocation.search);\n this.block();\n };\n\n render() {\n const { title, description, component: Component = DefaultConfirmComponent } = this.props;\n\n return (\n <Component\n isOpen={this.isOpen}\n title={title}\n description={description}\n onConfirm={this.handleConfirm}\n onCancel={this.handleCancel}\n />\n );\n }\n}\n\nexport const ConfirmNavigation = withRouter(({ when = true, ...props }: ConfirmNavigationProps) =>\n when ? <ConfirmNavigationUnwrapped {...props} /> : null\n);\n"],"names":["Component","withRouter","observable","action","runInAction","comparer","makeObservable","observer","Dialog","injectDependency","optional","HistoryManager","DefaultConfirmComponent","title","description","isOpen","onConfirm","onCancel","negative","open","onPrimaryActionClick","primaryActionName","onSecondaryActionClick","secondaryActionName","onClose","ConfirmNavigationUnwrapped","reset","isRedirecting","suspended","undefined","componentDidMount","window","block","App","Instance","before","onBefore","componentDidUpdate","prevProps","history","prevHistory","props","structural","location","unblock","componentWillUnmount","befores","filter","callback","render","component","handleConfirm","handleCancel","setLocation","currentLocation","pathname","getTransitionHook","targetLocation","hasChanged","ignoreSearchChanges","search","restUnblocks","Array","from","historyManager","storage","keys","item","map","replace","push","defaultProps","ConfirmNavigation","when"],"mappings":"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"}
1
+ {"version":3,"sources":["../src/confirm-navigation.tsx"],"sourcesContent":["import type { ComponentType, FC } from 'react';\nimport { Component } from 'react';\nimport type { RouteComponentProps } from 'react-router-dom';\nimport { withRouter } from 'react-router-dom';\n\nimport { observable, action, runInAction, comparer, makeObservable } from 'mobx';\nimport { observer } from 'mobx-react';\n\nimport type { History, Location, UnregisterCallback } from 'history';\n\nimport { Dialog } from '@servicetitan/design-system';\n\nimport { injectDependency, optional } from '@servicetitan/react-ioc';\nimport { HistoryManager } from '@servicetitan/web-components';\n\n// TODO: refactor this. External package should not do any assumptions about window.App.\ndeclare global {\n export interface Window {\n App: any;\n }\n}\n\ninterface ConfirmNavigationRenderProps {\n isOpen: boolean;\n title?: string;\n description?: string;\n onConfirm(): void;\n onCancel(): void;\n}\n\nexport interface ConfirmNavigationOwnProps {\n when?: boolean;\n ignoreSearchChanges?: boolean;\n title?: string;\n description?: string;\n component?: ComponentType<ConfirmNavigationRenderProps> | FC<ConfirmNavigationRenderProps>;\n}\n\nexport type ConfirmNavigationProps = ConfirmNavigationOwnProps & RouteComponentProps;\n\nconst DefaultConfirmComponent: FC<ConfirmNavigationRenderProps> = ({\n title,\n description,\n isOpen,\n onConfirm,\n onCancel,\n}) => (\n <Dialog\n negative\n open={isOpen}\n title={title}\n onPrimaryActionClick={onConfirm}\n primaryActionName=\"Leave\"\n onSecondaryActionClick={onCancel}\n secondaryActionName=\"Stay\"\n onClose={onCancel}\n >\n {description}\n </Dialog>\n);\n\n@observer\nclass ConfirmNavigationUnwrapped extends Component<ConfirmNavigationProps> {\n static defaultProps: Partial<ConfirmNavigationProps> = {\n title: 'Are you sure you want to leave?',\n description: \"You'll lose all your changes if you do.\",\n };\n\n @optional()\n @injectDependency(HistoryManager)\n declare historyManager?: HistoryManager;\n\n @observable isOpen = false;\n\n isRedirecting = false;\n\n suspended?: {\n history: History;\n currentLocation: Location;\n targetLocation: Location;\n };\n\n unblock!: UnregisterCallback;\n\n constructor(props: ConfirmNavigationProps) {\n super(props);\n makeObservable(this);\n }\n\n @action\n reset() {\n this.isOpen = false;\n this.isRedirecting = false;\n this.suspended = undefined;\n }\n\n componentDidMount() {\n this.block();\n\n if (window.App?.Instance?.before) {\n window.App.Instance.before(this.onBefore);\n }\n }\n\n componentDidUpdate(prevProps: RouteComponentProps) {\n const { history: prevHistory } = prevProps;\n const { history } = this.props;\n\n if (!comparer.structural(prevHistory.location, history.location)) {\n this.unblock();\n this.block();\n }\n }\n\n componentWillUnmount() {\n this.unblock();\n\n if (window.App?.Instance?.befores) {\n window.App.Instance.befores = window.App.Instance.befores.filter(\n ([, callback]: [any, Function]) => callback !== this.onBefore\n );\n }\n }\n\n // We should terminate Sammy navigation and fix URL of the current page\n onBefore = () => {\n if (this.isOpen && this.suspended) {\n this.isRedirecting = true;\n window.App.Instance.setLocation('#' + this.suspended.currentLocation.pathname);\n }\n\n return !this.isOpen;\n };\n\n block = () => {\n const getTransitionHook = (history: History) => {\n return (targetLocation: Location) => {\n // We shouldn't memorize new locations if it is navigation just for fix URL of the current page\n if (this.isRedirecting) {\n this.isRedirecting = false;\n return false;\n }\n\n const hasChanged =\n history.location.pathname !== targetLocation.pathname ||\n (!this.props.ignoreSearchChanges &&\n history.location.search !== targetLocation.search);\n\n if (hasChanged) {\n runInAction(() => {\n this.isOpen = true;\n this.suspended = {\n history,\n targetLocation,\n currentLocation: history.location,\n };\n });\n\n return false;\n }\n };\n };\n\n const { history } = this.props;\n\n const unblock = history.block(getTransitionHook(history));\n const restUnblocks = Array.from(this.historyManager?.storage.keys() ?? [])\n .filter(item => item !== history)\n .map(history => history.block(getTransitionHook(history)));\n\n this.unblock = () => {\n for (const unblock of restUnblocks) {\n unblock();\n }\n\n unblock();\n };\n };\n\n handleConfirm = () => {\n if (!this.suspended) {\n return;\n }\n\n const { history, currentLocation, targetLocation } = this.suspended;\n\n this.reset();\n\n this.unblock();\n // Fixing URL of the current page if it was changed manually\n history.replace(currentLocation.pathname + currentLocation.search);\n history.push(targetLocation);\n };\n\n handleCancel = () => {\n if (!this.suspended) {\n return;\n }\n\n const { history, currentLocation } = this.suspended;\n\n this.reset();\n\n this.unblock();\n // Fixing URL of the current page if it was changed manually\n history.replace(currentLocation.pathname + currentLocation.search);\n this.block();\n };\n\n render() {\n const { title, description, component: Component = DefaultConfirmComponent } = this.props;\n\n return (\n <Component\n isOpen={this.isOpen}\n title={title}\n description={description}\n onConfirm={this.handleConfirm}\n onCancel={this.handleCancel}\n />\n );\n }\n}\n\nexport const ConfirmNavigation = withRouter(({ when = true, ...props }: ConfirmNavigationProps) =>\n when ? <ConfirmNavigationUnwrapped {...props} /> : null\n);\n"],"names":["Component","withRouter","observable","action","runInAction","comparer","makeObservable","observer","Dialog","injectDependency","optional","HistoryManager","DefaultConfirmComponent","title","description","isOpen","onConfirm","onCancel","negative","open","onPrimaryActionClick","primaryActionName","onSecondaryActionClick","secondaryActionName","onClose","ConfirmNavigationUnwrapped","reset","isRedirecting","suspended","undefined","componentDidMount","window","block","App","Instance","before","onBefore","componentDidUpdate","prevProps","history","prevHistory","props","structural","location","unblock","componentWillUnmount","befores","filter","callback","render","component","handleConfirm","handleCancel","setLocation","currentLocation","pathname","getTransitionHook","targetLocation","hasChanged","ignoreSearchChanges","search","restUnblocks","Array","from","historyManager","storage","keys","item","map","replace","push","defaultProps","ConfirmNavigation","when"],"mappings":"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"}
@@ -1,3 +1,3 @@
1
- import { FC } from 'react';
1
+ import type { FC } from 'react';
2
2
  export declare const BasicExample: FC;
3
3
  //# sourceMappingURL=basic.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"basic.d.ts","sourceRoot":"","sources":["../../src/demo/basic.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAsB,EAAE,EAAE,MAAM,OAAO,CAAC;AAM/C,eAAO,MAAM,YAAY,EAAE,EAc1B,CAAC"}
1
+ {"version":3,"file":"basic.d.ts","sourceRoot":"","sources":["../../src/demo/basic.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAOhC,eAAO,MAAM,YAAY,EAAE,EAc1B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/demo/basic.tsx"],"sourcesContent":["import { useState, Fragment, FC } from 'react';\n\nimport { Checkbox } from '@servicetitan/design-system';\n\nimport { ConfirmNavigation } from '..';\n\nexport const BasicExample: FC = () => {\n const [confirm, setConfirm] = useState(true);\n\n const handleChange = (_0: never, checked: boolean) => {\n setConfirm(checked);\n };\n\n return (\n <Fragment>\n <Checkbox label=\"Confirm Navigation?\" checked={confirm} onChange={handleChange} />\n\n <ConfirmNavigation when={confirm} />\n </Fragment>\n );\n};\n"],"names":["useState","Fragment","Checkbox","ConfirmNavigation","BasicExample","confirm","setConfirm","handleChange","_0","checked","label","onChange","when"],"mappings":";AAAA,SAASA,QAAQ,EAAEC,QAAQ,QAAY,QAAQ;AAE/C,SAASC,QAAQ,QAAQ,8BAA8B;AAEvD,SAASC,iBAAiB,QAAQ,KAAK;AAEvC,OAAO,MAAMC,eAAmB;IAC5B,MAAM,CAACC,SAASC,WAAW,GAAGN,SAAS;IAEvC,MAAMO,eAAe,CAACC,IAAWC;QAC7BH,WAAWG;IACf;IAEA,qBACI,MAACR;;0BACG,KAACC;gBAASQ,OAAM;gBAAsBD,SAASJ;gBAASM,UAAUJ;;0BAElE,KAACJ;gBAAkBS,MAAMP;;;;AAGrC,EAAE"}
1
+ {"version":3,"sources":["../../src/demo/basic.tsx"],"sourcesContent":["import type { FC } from 'react';\nimport { useState, Fragment } from 'react';\n\nimport { Checkbox } from '@servicetitan/design-system';\n\nimport { ConfirmNavigation } from '..';\n\nexport const BasicExample: FC = () => {\n const [confirm, setConfirm] = useState(true);\n\n const handleChange = (_0: never, checked: boolean) => {\n setConfirm(checked);\n };\n\n return (\n <Fragment>\n <Checkbox label=\"Confirm Navigation?\" checked={confirm} onChange={handleChange} />\n\n <ConfirmNavigation when={confirm} />\n </Fragment>\n );\n};\n"],"names":["useState","Fragment","Checkbox","ConfirmNavigation","BasicExample","confirm","setConfirm","handleChange","_0","checked","label","onChange","when"],"mappings":";AACA,SAASA,QAAQ,EAAEC,QAAQ,QAAQ,QAAQ;AAE3C,SAASC,QAAQ,QAAQ,8BAA8B;AAEvD,SAASC,iBAAiB,QAAQ,KAAK;AAEvC,OAAO,MAAMC,eAAmB;IAC5B,MAAM,CAACC,SAASC,WAAW,GAAGN,SAAS;IAEvC,MAAMO,eAAe,CAACC,IAAWC;QAC7BH,WAAWG;IACf;IAEA,qBACI,MAACR;;0BACG,KAACC;gBAASQ,OAAM;gBAAsBD,SAASJ;gBAASM,UAAUJ;;0BAElE,KAACJ;gBAAkBS,MAAMP;;;;AAGrC,EAAE"}
@@ -1,3 +1,3 @@
1
- import { FC } from 'react';
1
+ import type { FC } from 'react';
2
2
  export declare const CustomExample: FC;
3
3
  //# sourceMappingURL=custom.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"custom.d.ts","sourceRoot":"","sources":["../../src/demo/custom.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAsB,EAAE,EAAE,MAAM,OAAO,CAAC;AAM/C,eAAO,MAAM,aAAa,EAAE,EAqC3B,CAAC"}
1
+ {"version":3,"file":"custom.d.ts","sourceRoot":"","sources":["../../src/demo/custom.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAOhC,eAAO,MAAM,aAAa,EAAE,EAqC3B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/demo/custom.tsx"],"sourcesContent":["import { useState, Fragment, FC } from 'react';\n\nimport { Checkbox, Modal, ButtonGroup, Button, BodyText } from '@servicetitan/design-system';\n\nimport { ConfirmNavigation } from '..';\n\nexport const CustomExample: FC = () => {\n const [confirm, setConfirm] = useState(true);\n\n const handleChange = (_0: never, checked: boolean) => {\n setConfirm(checked);\n };\n\n return (\n <Fragment>\n <Checkbox label=\"Confirm Navigation?\" checked={confirm} onChange={handleChange} />\n\n <ConfirmNavigation\n when={confirm}\n title=\"Are you sure you want to leave?\"\n description=\"If you leave all changes will be lost.\"\n component={({ isOpen, onCancel, onConfirm, title, description }) => {\n return (\n <Modal\n open={isOpen}\n onClose={onCancel}\n title={title}\n footer={\n <ButtonGroup>\n <Button onClick={onCancel}>No, stay</Button>\n <Button onClick={onConfirm} color=\"negative\">\n Yes, leave\n </Button>\n </ButtonGroup>\n }\n >\n <BodyText subdued>{description}</BodyText>\n </Modal>\n );\n }}\n />\n </Fragment>\n );\n};\n"],"names":["useState","Fragment","Checkbox","Modal","ButtonGroup","Button","BodyText","ConfirmNavigation","CustomExample","confirm","setConfirm","handleChange","_0","checked","label","onChange","when","title","description","component","isOpen","onCancel","onConfirm","open","onClose","footer","onClick","color","subdued"],"mappings":";AAAA,SAASA,QAAQ,EAAEC,QAAQ,QAAY,QAAQ;AAE/C,SAASC,QAAQ,EAAEC,KAAK,EAAEC,WAAW,EAAEC,MAAM,EAAEC,QAAQ,QAAQ,8BAA8B;AAE7F,SAASC,iBAAiB,QAAQ,KAAK;AAEvC,OAAO,MAAMC,gBAAoB;IAC7B,MAAM,CAACC,SAASC,WAAW,GAAGV,SAAS;IAEvC,MAAMW,eAAe,CAACC,IAAWC;QAC7BH,WAAWG;IACf;IAEA,qBACI,MAACZ;;0BACG,KAACC;gBAASY,OAAM;gBAAsBD,SAASJ;gBAASM,UAAUJ;;0BAElE,KAACJ;gBACGS,MAAMP;gBACNQ,OAAM;gBACNC,aAAY;gBACZC,WAAW,CAAC,EAAEC,MAAM,EAAEC,QAAQ,EAAEC,SAAS,EAAEL,KAAK,EAAEC,WAAW,EAAE;oBAC3D,qBACI,KAACf;wBACGoB,MAAMH;wBACNI,SAASH;wBACTJ,OAAOA;wBACPQ,sBACI,MAACrB;;8CACG,KAACC;oCAAOqB,SAASL;8CAAU;;8CAC3B,KAAChB;oCAAOqB,SAASJ;oCAAWK,OAAM;8CAAW;;;;kCAMrD,cAAA,KAACrB;4BAASsB,OAAO;sCAAEV;;;gBAG/B;;;;AAIhB,EAAE"}
1
+ {"version":3,"sources":["../../src/demo/custom.tsx"],"sourcesContent":["import type { FC } from 'react';\nimport { useState, Fragment } from 'react';\n\nimport { Checkbox, Modal, ButtonGroup, Button, BodyText } from '@servicetitan/design-system';\n\nimport { ConfirmNavigation } from '..';\n\nexport const CustomExample: FC = () => {\n const [confirm, setConfirm] = useState(true);\n\n const handleChange = (_0: never, checked: boolean) => {\n setConfirm(checked);\n };\n\n return (\n <Fragment>\n <Checkbox label=\"Confirm Navigation?\" checked={confirm} onChange={handleChange} />\n\n <ConfirmNavigation\n when={confirm}\n title=\"Are you sure you want to leave?\"\n description=\"If you leave all changes will be lost.\"\n component={({ isOpen, onCancel, onConfirm, title, description }) => {\n return (\n <Modal\n open={isOpen}\n onClose={onCancel}\n title={title}\n footer={\n <ButtonGroup>\n <Button onClick={onCancel}>No, stay</Button>\n <Button onClick={onConfirm} color=\"negative\">\n Yes, leave\n </Button>\n </ButtonGroup>\n }\n >\n <BodyText subdued>{description}</BodyText>\n </Modal>\n );\n }}\n />\n </Fragment>\n );\n};\n"],"names":["useState","Fragment","Checkbox","Modal","ButtonGroup","Button","BodyText","ConfirmNavigation","CustomExample","confirm","setConfirm","handleChange","_0","checked","label","onChange","when","title","description","component","isOpen","onCancel","onConfirm","open","onClose","footer","onClick","color","subdued"],"mappings":";AACA,SAASA,QAAQ,EAAEC,QAAQ,QAAQ,QAAQ;AAE3C,SAASC,QAAQ,EAAEC,KAAK,EAAEC,WAAW,EAAEC,MAAM,EAAEC,QAAQ,QAAQ,8BAA8B;AAE7F,SAASC,iBAAiB,QAAQ,KAAK;AAEvC,OAAO,MAAMC,gBAAoB;IAC7B,MAAM,CAACC,SAASC,WAAW,GAAGV,SAAS;IAEvC,MAAMW,eAAe,CAACC,IAAWC;QAC7BH,WAAWG;IACf;IAEA,qBACI,MAACZ;;0BACG,KAACC;gBAASY,OAAM;gBAAsBD,SAASJ;gBAASM,UAAUJ;;0BAElE,KAACJ;gBACGS,MAAMP;gBACNQ,OAAM;gBACNC,aAAY;gBACZC,WAAW,CAAC,EAAEC,MAAM,EAAEC,QAAQ,EAAEC,SAAS,EAAEL,KAAK,EAAEC,WAAW,EAAE;oBAC3D,qBACI,KAACf;wBACGoB,MAAMH;wBACNI,SAASH;wBACTJ,OAAOA;wBACPQ,sBACI,MAACrB;;8CACG,KAACC;oCAAOqB,SAASL;8CAAU;;8CAC3B,KAAChB;oCAAOqB,SAASJ;oCAAWK,OAAM;8CAAW;;;;kCAMrD,cAAA,KAACrB;4BAASsB,OAAO;sCAAEV;;;gBAG/B;;;;AAIhB,EAAE"}
@@ -1,3 +1,3 @@
1
- import { FC } from 'react';
1
+ import type { FC } from 'react';
2
2
  export declare const IgnoreSearchChangesExample: FC;
3
3
  //# sourceMappingURL=ignore-search-changes-example.d.ts.map
@@ -1 +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"}
1
+ {"version":3,"file":"ignore-search-changes-example.d.ts","sourceRoot":"","sources":["../../src/demo/ignore-search-changes-example.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAShC,eAAO,MAAM,0BAA0B,EAAE,EA6BxC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/demo/ignore-search-changes-example.tsx"],"sourcesContent":["import { useState, Fragment, FC } from 'react';\nimport { Link, useLocation } from 'react-router-dom';\n\nimport { Button, ButtonGroup, Checkbox } from '@servicetitan/design-system';\n\nimport { ConfirmNavigation } from '..';\n//\n\nexport const IgnoreSearchChangesExample: FC = () => {\n const [confirm, setConfirm] = useState(true);\n const handleConfirmChange = (_0: never, checked: boolean) => {\n setConfirm(checked);\n };\n\n const [ignoreSearch, setIgnoreSearch] = useState(true);\n const handleIgnoreSearchChange = (_0: never, checked: boolean) => {\n setIgnoreSearch(checked);\n };\n\n return (\n <Fragment>\n <Checkbox\n label=\"Confirm Navigation?\"\n checked={confirm}\n onChange={handleConfirmChange}\n />\n <Checkbox\n label=\"Ignore search changes?\"\n checked={ignoreSearch}\n onChange={handleIgnoreSearchChange}\n />\n\n <ConfirmNavigation when={confirm} ignoreSearchChanges={ignoreSearch} />\n\n <AdvancedUrlChange />\n </Fragment>\n );\n};\n\nconst AdvancedUrlChange = () => {\n const location = useLocation();\n const newPath =\n location.pathname === '/some-new-path-1' ? '/another-new-path-2' : '/some-new-path-1';\n const newSearch =\n location.search === '?newParam=true' ? '?anotherParam=true' : '?newParam=true';\n return (\n <ButtonGroup>\n <Link to={newPath}>\n <Button primary className=\"m-t-2\">\n Change path\n </Button>\n </Link>\n <Link to={location.pathname + newSearch}>\n <Button primary className=\"m-t-2\">\n Change only search\n </Button>\n </Link>\n </ButtonGroup>\n );\n};\n"],"names":["useState","Fragment","Link","useLocation","Button","ButtonGroup","Checkbox","ConfirmNavigation","IgnoreSearchChangesExample","confirm","setConfirm","handleConfirmChange","_0","checked","ignoreSearch","setIgnoreSearch","handleIgnoreSearchChange","label","onChange","when","ignoreSearchChanges","AdvancedUrlChange","location","newPath","pathname","newSearch","search","to","primary","className"],"mappings":";AAAA,SAASA,QAAQ,EAAEC,QAAQ,QAAY,QAAQ;AAC/C,SAASC,IAAI,EAAEC,WAAW,QAAQ,mBAAmB;AAErD,SAASC,MAAM,EAAEC,WAAW,EAAEC,QAAQ,QAAQ,8BAA8B;AAE5E,SAASC,iBAAiB,QAAQ,KAAK;AACvC,EAAE;AAEF,OAAO,MAAMC,6BAAiC;IAC1C,MAAM,CAACC,SAASC,WAAW,GAAGV,SAAS;IACvC,MAAMW,sBAAsB,CAACC,IAAWC;QACpCH,WAAWG;IACf;IAEA,MAAM,CAACC,cAAcC,gBAAgB,GAAGf,SAAS;IACjD,MAAMgB,2BAA2B,CAACJ,IAAWC;QACzCE,gBAAgBF;IACpB;IAEA,qBACI,MAACZ;;0BACG,KAACK;gBACGW,OAAM;gBACNJ,SAASJ;gBACTS,UAAUP;;0BAEd,KAACL;gBACGW,OAAM;gBACNJ,SAASC;gBACTI,UAAUF;;0BAGd,KAACT;gBAAkBY,MAAMV;gBAASW,qBAAqBN;;0BAEvD,KAACO;;;AAGb,EAAE;AAEF,MAAMA,oBAAoB;IACtB,MAAMC,WAAWnB;IACjB,MAAMoB,UACFD,SAASE,QAAQ,KAAK,qBAAqB,wBAAwB;IACvE,MAAMC,YACFH,SAASI,MAAM,KAAK,mBAAmB,uBAAuB;IAClE,qBACI,MAACrB;;0BACG,KAACH;gBAAKyB,IAAIJ;0BACN,cAAA,KAACnB;oBAAOwB,OAAO;oBAACC,WAAU;8BAAQ;;;0BAItC,KAAC3B;gBAAKyB,IAAIL,SAASE,QAAQ,GAAGC;0BAC1B,cAAA,KAACrB;oBAAOwB,OAAO;oBAACC,WAAU;8BAAQ;;;;;AAMlD"}
1
+ {"version":3,"sources":["../../src/demo/ignore-search-changes-example.tsx"],"sourcesContent":["import type { FC } from 'react';\nimport { useState, Fragment } from 'react';\nimport { Link, useLocation } from 'react-router-dom';\n\nimport { Button, ButtonGroup, Checkbox } from '@servicetitan/design-system';\n\nimport { ConfirmNavigation } from '..';\n//\n\nexport const IgnoreSearchChangesExample: FC = () => {\n const [confirm, setConfirm] = useState(true);\n const handleConfirmChange = (_0: never, checked: boolean) => {\n setConfirm(checked);\n };\n\n const [ignoreSearch, setIgnoreSearch] = useState(true);\n const handleIgnoreSearchChange = (_0: never, checked: boolean) => {\n setIgnoreSearch(checked);\n };\n\n return (\n <Fragment>\n <Checkbox\n label=\"Confirm Navigation?\"\n checked={confirm}\n onChange={handleConfirmChange}\n />\n <Checkbox\n label=\"Ignore search changes?\"\n checked={ignoreSearch}\n onChange={handleIgnoreSearchChange}\n />\n\n <ConfirmNavigation when={confirm} ignoreSearchChanges={ignoreSearch} />\n\n <AdvancedUrlChange />\n </Fragment>\n );\n};\n\nconst AdvancedUrlChange = () => {\n const location = useLocation();\n const newPath =\n location.pathname === '/some-new-path-1' ? '/another-new-path-2' : '/some-new-path-1';\n const newSearch =\n location.search === '?newParam=true' ? '?anotherParam=true' : '?newParam=true';\n return (\n <ButtonGroup>\n <Link to={newPath}>\n <Button primary className=\"m-t-2\">\n Change path\n </Button>\n </Link>\n <Link to={location.pathname + newSearch}>\n <Button primary className=\"m-t-2\">\n Change only search\n </Button>\n </Link>\n </ButtonGroup>\n );\n};\n"],"names":["useState","Fragment","Link","useLocation","Button","ButtonGroup","Checkbox","ConfirmNavigation","IgnoreSearchChangesExample","confirm","setConfirm","handleConfirmChange","_0","checked","ignoreSearch","setIgnoreSearch","handleIgnoreSearchChange","label","onChange","when","ignoreSearchChanges","AdvancedUrlChange","location","newPath","pathname","newSearch","search","to","primary","className"],"mappings":";AACA,SAASA,QAAQ,EAAEC,QAAQ,QAAQ,QAAQ;AAC3C,SAASC,IAAI,EAAEC,WAAW,QAAQ,mBAAmB;AAErD,SAASC,MAAM,EAAEC,WAAW,EAAEC,QAAQ,QAAQ,8BAA8B;AAE5E,SAASC,iBAAiB,QAAQ,KAAK;AACvC,EAAE;AAEF,OAAO,MAAMC,6BAAiC;IAC1C,MAAM,CAACC,SAASC,WAAW,GAAGV,SAAS;IACvC,MAAMW,sBAAsB,CAACC,IAAWC;QACpCH,WAAWG;IACf;IAEA,MAAM,CAACC,cAAcC,gBAAgB,GAAGf,SAAS;IACjD,MAAMgB,2BAA2B,CAACJ,IAAWC;QACzCE,gBAAgBF;IACpB;IAEA,qBACI,MAACZ;;0BACG,KAACK;gBACGW,OAAM;gBACNJ,SAASJ;gBACTS,UAAUP;;0BAEd,KAACL;gBACGW,OAAM;gBACNJ,SAASC;gBACTI,UAAUF;;0BAGd,KAACT;gBAAkBY,MAAMV;gBAASW,qBAAqBN;;0BAEvD,KAACO;;;AAGb,EAAE;AAEF,MAAMA,oBAAoB;IACtB,MAAMC,WAAWnB;IACjB,MAAMoB,UACFD,SAASE,QAAQ,KAAK,qBAAqB,wBAAwB;IACvE,MAAMC,YACFH,SAASI,MAAM,KAAK,mBAAmB,uBAAuB;IAClE,qBACI,MAACrB;;0BACG,KAACH;gBAAKyB,IAAIJ;0BACN,cAAA,KAACnB;oBAAOwB,OAAO;oBAACC,WAAU;8BAAQ;;;0BAItC,KAAC3B;gBAAKyB,IAAIL,SAASE,QAAQ,GAAGC;0BAC1B,cAAA,KAACrB;oBAAOwB,OAAO;oBAACC,WAAU;8BAAQ;;;;;AAMlD"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@servicetitan/confirm-navigation",
3
- "version": "41.0.0",
3
+ "version": "41.2.0",
4
4
  "description": "",
5
5
  "homepage": "https://docs.st.dev/docs/frontend/confirm-navigation",
6
6
  "repository": {
@@ -17,12 +17,12 @@
17
17
  ],
18
18
  "devDependencies": {
19
19
  "@servicetitan/design-system": "~14.5.1",
20
- "@servicetitan/log-service": "^36.3.0",
21
- "@servicetitan/react-ioc": "^36.3.0",
22
- "@servicetitan/web-components": "^36.3.0",
20
+ "@servicetitan/log-service": "^38.0.0",
21
+ "@servicetitan/react-ioc": "^38.0.0",
22
+ "@servicetitan/web-components": "^38.0.0",
23
23
  "@types/history": "~4.7.10",
24
24
  "@types/react": "~18.2.55",
25
- "@types/react-router": "~5.1.17",
25
+ "@types/react-router": "^5.1.20",
26
26
  "history": "~4.10.1",
27
27
  "mobx": "~6.10.2",
28
28
  "mobx-react": "^9.2.0",
@@ -46,5 +46,5 @@
46
46
  "cli": {
47
47
  "webpack": false
48
48
  },
49
- "gitHead": "9bf5eb2634c17330d1251d431ed5b60b28b56c21"
49
+ "gitHead": "a27c08d5c4a695eb24110ec1477fa23ccf28a148"
50
50
  }
@@ -1,10 +1,12 @@
1
- import { Component, ComponentType, FC } from 'react';
2
- import { withRouter, RouteComponentProps } from 'react-router-dom';
1
+ import type { ComponentType, FC } from 'react';
2
+ import { Component } from 'react';
3
+ import type { RouteComponentProps } from 'react-router-dom';
4
+ import { withRouter } from 'react-router-dom';
3
5
 
4
6
  import { observable, action, runInAction, comparer, makeObservable } from 'mobx';
5
7
  import { observer } from 'mobx-react';
6
8
 
7
- import { History, Location, UnregisterCallback } from 'history';
9
+ import type { History, Location, UnregisterCallback } from 'history';
8
10
 
9
11
  import { Dialog } from '@servicetitan/design-system';
10
12
 
@@ -1,4 +1,5 @@
1
- import { useState, Fragment, FC } from 'react';
1
+ import type { FC } from 'react';
2
+ import { useState, Fragment } from 'react';
2
3
 
3
4
  import { Checkbox } from '@servicetitan/design-system';
4
5
 
@@ -1,4 +1,5 @@
1
- import { useState, Fragment, FC } from 'react';
1
+ import type { FC } from 'react';
2
+ import { useState, Fragment } from 'react';
2
3
 
3
4
  import { Checkbox, Modal, ButtonGroup, Button, BodyText } from '@servicetitan/design-system';
4
5
 
@@ -1,4 +1,5 @@
1
- import { useState, Fragment, FC } from 'react';
1
+ import type { FC } from 'react';
2
+ import { useState, Fragment } from 'react';
2
3
  import { Link, useLocation } from 'react-router-dom';
3
4
 
4
5
  import { Button, ButtonGroup, Checkbox } from '@servicetitan/design-system';