UNPKG

@apideck/vault-react

Version:

React hook for the Apideck Vault component.

185 lines (144 loc) 4.22 kB
# Vault React A React hook to easily embed [Apideck Vault](https://www.apideck.com/products/vault) in any React application. <img src="https://user-images.githubusercontent.com/8850410/208065819-716c6e02-98c9-4df5-b687-e5acd1e3c4e5.png" width="100%" /> **Vault React** | [Vault Vue](https://github.com/apideck-libraries/vue-vault) | [Vault JS](https://github.com/apideck-libraries/vault-js) ## Installation ### Package ```sh npm install @apideck/vault-react ``` ## Prerequisites Before opening the Vault modal with `@apideck/vault-react`, you need to create a Vault session from your backend using the Vault API or one of our [SDKs](https://docs.apideck.com/sdks). Find out more in the [docs](https://docs.apideck.com/apis/vault/reference#operation/sessionsCreate). ## Usage Pass the JWT you got from the Vault session to the `open` function to open the Vault modal. ```tsx import { useVault } from '@apideck/vault-react'; function App() { const { open } = useVault(); return ( <button onClick={() => open({ token: 'REPLACE_WITH_SESSION_TOKEN' })}> Open Vault </button> ); } export default App; ``` If you want to only show integrations for a single Unified API, you can do that by passing the `unifiedApi` prop. If you want to open Vault for only a single integration, you can provide the `serviceId` prop. ```tsx import { useVault } from '@apideck/vault-react'; function App() { const { open } = useVault(); return ( <button onClick={() => open({ token: 'REPLACE_WITH_SESSION_TOKEN', unifiedApi: 'file-storage', serviceId: 'dropbox', }) } > Open Vault </button> ); } export default App; ``` If you want to get notified when the modal opens and closes, you can provide the `onReady` and `onClose` options. You can also provide the `onConnectionChange` and `onConnectionDelete` options to get notified when the state of a connection changes or gets deleted. ```tsx import { useVault } from '@apideck/vault-react'; function App() { const { open, close } = useVault(); function onClose() { console.log('close!'); } function onReady() { console.log('ready!'); } function onConnectionChange(connection: Connection) { console.log('changed!', connection); if (connection.state === 'callable') { close(); } } function onConnectionDelete(connection: Connection) { console.log('ready!', connection); } return ( <button onClick={() => open({ token: 'REPLACE_WITH_SESSION_TOKEN', onReady, onClose, onConnectionChange, onConnectionDelete, }) } > Open Vault </button> ); } export default App; ``` If you want to open a specific view you can pass the `initialView` prop. The available views are `settings`, `configurable-resources`, and `custom-mapping`. ```js import { useVault } from '@apideck/vault-react'; function App() { const { open, close } = useVault(); return ( <button onClick={() => open({ token: 'REPLACE_WITH_SESSION_TOKEN', unifiedApi: 'accounting', serviceId: 'quickbooks', initialView: 'custom-mapping', }) } > Open Vault </button> ); } ``` If you want to open vault in a specific language you can pass a locale. The available locales are `en` (default), `nl`, `de`, `fr`, and `es`. ```js import { useVault } from '@apideck/vault-react'; function App() { const { open, close } = useVault(); return ( <button onClick={() => open({ token: 'REPLACE_WITH_SESSION_TOKEN', locale: 'nl', }) } > Open Vault </button> ); } ``` If you want to show the language switch at the bottom you can provide the `showLanguageSwitch` prop. ```js import { useVault } from '@apideck/vault-react'; function App() { const { open, close } = useVault(); return ( <button onClick={() => open({ token: 'REPLACE_WITH_SESSION_TOKEN', locale: 'nl', showLanguageSwitch: true, }) } > Open Vault </button> ); } ```