npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@oatfi/web-js

v1.7.0

Published

Oat Financial Web Components Library

Downloads

190

Readme

oatfi-web

A framework-free OatFi Web Components library that provides drop in components, written in TypeScript.

Installation

Use npm to install the Oatfi-Web-JS module:

npm install --save @oatfi/web-js

or you can add our cdn script into your website like this:

<script
  src="https://d1h8jcgjihlgjp.cloudfront.net/index.umd.min.js"
  type="text/javascript"
></script>

When imported this will create the custom-elements that will be available on your website for usage.

<oatfi-bnpl /> <oatfi-factoring /> <oatfi-onboarding />

Env overrides

On the components the prop sandbox is available in case the developer wants to hit the sandbox environment this can be used by adding the prop as true.

<oatfi-bnpl sandbox="true" ...></oatfi-bnpl>
<oatfi-factoring sandbox="true" ...></oatfi-factoring>
<oatfi-onboarding sandbox="true" ...></oatfi-onboarding>

CTA text

A attribute ctaText is available in order to customize the text shown in the main CTA of the elements.

Example:

<oatfi-onboarding ctaText="true" ... />

BNPL

<oatfi-bnpl
  token="yourAuthToken"
  partnerId="partnerId"
  supportEmail="supportEmail"
  payorExternalId="payorExternalId"
  invoiceExternalId="invoiceExternalId"
/>

Callback logic

BNPL component will trigger events according to what happened in the flow. In order to listen to these events a document event listener is required.

document.addEventListener('OATFI_BNPL', function (event) {
  switch (event.detail.event) {
    case OATFI_EVENTS.CLOSE_DRAWER:
      console.log(event.detail.data, 'Close');
      break;
    case OATFI_EVENTS.UNDERWRITING:
      console.log(event.detail.data, 'Underwriting');
      break;
    case OATFI_EVENTS.UNDERWRITING_ERROR:
      console.log(event.detail.data, 'Underwriting error');
      break;
    case OATFI_EVENTS.DEFER:
      console.log(event.detail.data, 'Defer');
      break;
    case OATFI_EVENTS.DEFER_ERROR:
      console.log(event.detail.data, 'Defer error');
      break;
    case OATFI_EVENTS.ERROR:
      console.log(event.detail.data, 'General error');
      break;
  }
});

Note: event triggered will have the prop detail that contains event and data

BNPL Events

| Event | Data | | ----------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------ | | CLOSE_DRAWER (triggers on closing the drawer) | {} | | UNDERWRITING (triggers after underwriting was executed) | { creditLimit: number } | | UNDERWRITING_ERROR (triggers after underwriting was executed but it was an error) | { creditLimit?: number, error: string } | | DEFER (triggers after funding is executed) | { businessExternalId: string, loanId: string, amount: number, availableCredit: number, type: "BNPL"} | | DEFER_ERROR (triggers after funding is executed but it was an error) | { error: string } | | ERROR (triggers after a general error occurs) | { error: string } |

Subtitle prop

A prop subtitle is available to override the text below the cta for BNPL. (to not display a subtitle send a "" empty text)

<oatfi-bnpl
  token="yourAuthToken"
  partnerId="partnerId"
  supportEmail="supportEmail"
  payorExternalId="payorExternalId"
  invoiceExternalId="invoiceExternalId"
  subtitle="Custom subt"
/>

Steps configuration

BNPL component support steps configuration (in a form of a JSON object) to adapt the flow to the requirements of the client the options are:

| Step | Pre-requisite | | -------------- | --------------------------- | | onboarding | None | | contactInfo | None | | underWriting | None | | presentOffer | underWritting is required | | fund | presentOffer is required |

By default all steps are enabled.

Usage example

<oatfi-bnpl
  token="yourAuthToken"
  partnerId="partnerId"
  supportEmail="supportEmail"
  payorExternalId="payorExternalId"
  invoiceExternalId="invoiceExternalId"
  steps='{"onboarding":false}'
/>

Factoring

<oatfi-factoring token="yourAuthToken" partnerId="partnerId" payeeExternalId="payeeExternalId" />

Factoring Managed Marketpplace

If managed marketplace flag is indicated managedMarketplace="true", then payorExternalId is used instead of payeeExternalId

<oatfi-factoring
  token="yourAuthToken"
  partnerId="partnerId"
  managedMarketplace="true"
  payorExternalId="payorExternalId"
/>

Callback logic

Factoring component will trigger events according to what happened in the flow. In order to listen to these events a document event listener is required.

document.addEventListener('OATFI_FACTORING', function (event) {
  switch (event.detail.event) {
    case OATFI_EVENTS.CLOSE_DRAWER:
      console.log(event.detail.data, 'Close');
      break;
    case OATFI_EVENTS.UNDERWRITING:
      console.log(event.detail.data, 'Underwriting');
      break;
    case OATFI_EVENTS.UNDERWRITING_ERROR:
      console.log(event.detail.data, 'Underwriting error');
      break;
    case OATFI_EVENTS.PRESENT_LOAN_OFFER:
      console.log(event.detail.data, 'Present loan offer');
      break;
    case OATFI_EVENTS.FUNDING_LOAN:
      console.log(event.detail.data, 'Funding loan');
      break;
    case OATFI_EVENTS.SUMMARY_OFFER:
      console.log(event.detail.data, 'Summary offer');
      break;
    case OATFI_EVENTS.ERROR:
      console.log(event.detail.data, 'General error');
      break;
  }
});

Note: event triggered will have the prop detail that contains event and data

Factoring Events

| Event | Data | | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | | CLOSE_DRAWER (triggers on closing the drawer) | {} | | UNDERWRITING (triggers after underwriting was executed) | { creditLimit: number } | | UNDERWRITING_ERROR (triggers after underwriting was executed but it was an error) | { creditLimit?: number, error: string } | | PRESENT_LOAN_OFFER (triggers after an offer is presented) | | { businessExternalId: string, totalAvailableToFactor: number, invoices: [{ externalId: string, invoiceAmount: number, paidAmount: number, invoiceDate: number, dueDate: number, termsLink: string, payor: string, principalAmount: number, feeAmount: number, totalAmount: number }] } | | FUNDING_LOAN (triggers after all funding attemps are executed) | { funding: [{ businessExternalId: string, loanId: string, amount: number, availableCredit: number, type: 'FACTORING', transactionId: string }], total: number } | | SUMMARY_OFFER (triggers after all funding is confirmed by the user) | { funding: [{ businessExternalId: string, loanId: string, amount: number, availableCredit: number, type: 'FACTORING', transactionId: string }], total: number } | | ERROR (triggers after a general error occurs) | { error: string } |

Subtitle prop

A prop confirmationMessages is available to override the text on the confirmation page. It accepts an array of strings with the template var {{amount}} will be replaced with total to factor formatted as currency value

<oatfi-factoring
  token="yourAuthToken"
  partnerId="partnerId"
  payeeExternalId="payeeExternalId"
  confirmationMessages='["You will receive <b>{{amount}}</b> deposited to your bank account on the next business day.", "We will schedule an ACH debit of <b>{{amount}}</b> from your bank account 30 days after the invoice due date to repay the factored amount plus fees."]'
/>

Onboarding

<oatfi-onboarding token="yourAuthToken" partnerid="partnerId" supportemail="supportEmail" />

The onboarding element offers 2 options, updating an existing business or creating one here are the examples of bot scenarios:

Updating

<oatfi-onboarding
  token="yourAuthToken"
  partnerid="partnerId"
  payorExternalId="payorExternalId"
  supportemail="supportEmail"
/>

Creating

In order to be able to create the business the token should be generated using the body (with the identifier set as partner)

{
  "businessExternalId": "externalId",
  "identifier": "partner"
}
<oatfi-onboarding token="yourAuthToken" partnerid="" supportemail="supportEmail" />

Product onboarding

In order to onboard a business for a specific product, it should be indicated with parameter productType="BNPL", possible values are "BNPL", "AR", "FACTORING", and "EWC", default value remains EWC

<oatfi-onboarding
  token="yourAuthToken"
  partnerid=""
  supportemail="supportEmail"
  productType="BNPL"
/>

Business General Info Conditional Fields

Approximate Monthly Spend

In order to make the field Approximate Monthly Spend required in Business form, you should pass the prop monthlySpendRequired="true"

<oatfi-onboarding
  token="yourAuthToken"
  partnerid=""
  supportemail="supportEmail"
  monthlySpendRequired="true"
/>

Annual Revenue

In order to make the field Annual Revenue required in Business form, you should pass the prop annualRevenueRequired="true"

<oatfi-onboarding
  token="yourAuthToken"
  partnerid=""
  supportemail="supportEmail"
  annualRevenueRequired="true"
/>

Underwriting at the end of the process

Onboarding has the option to execute underwriting at the end of the process, simply by setting the flag underwriting="true"

<oatfi-onboarding
  token="yourAuthToken"
  partnerid=""
  supportemail="supportEmail"
  underwriting="true"
/>

NOTE: Use with React and Typescript

If you are using custom-components with React along with Typescript, you should declare the incorporation of the custom-components into JSX IntrinsicElements interface

import * as React from 'react';

declare global {
  namespace JSX {
    interface IntrinsicElements {
      'oatfi-factoring': React.DetailedHTMLProps<any>;
      'oatfi-bnpl': React.DetailedHTMLProps<any>;
    }
  }
}

THEMING

Our component accepts a theme prop to override some colors on the UI, this needs to be pased as a stringify JSON object.

<oatfi-bnpl
  token="yourAuthToken"
  partnerId="partnerId"
  supportEmail="supportEmail"
  payorExternalId="payorExternalId"
  invoiceExternalId="invoiceExternalId"
  theme='{"colors":{"primary":"green"}}'
/>

Theme options

| Property Name | Usage | | ------------------- | ------------------------------------------------------------------ | | primary | Used as the primary color, main CTA background and primary buttons | | primaryHover | Used to set the background on hover of the primary elements | | primaryPressed | Used to set the background on pressed of the primary elements | | textPrimary | Used to set the color of the overall app text | | textSecondary | Used to set the color of the subtitle of the cta | | success | Used to set the color of success icon | | successBackground | Used to set the color of success background Feedback card | | warning | Used to set the color of warning icon | | warningBackground | Used to set the color of warning background Feedback card | | danger | Used to set the color of danger icon | | dangerBackground | Used to set the color of danger background Feedback card | | neutral300 | Used to set the color of the disabled button | | neutral200 | Used to set the background of the disabled button | | info | Used to set the background of the defered tag | | tooltipColor | Used to set font color of the tooltips | | tooltipBackground | Used to set the background of the tooltips |