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

react-native-pretty-payment

v0.1.0-alpha.2

Published

⚛️ 🤑 Super pretty payment inputs for React Native.

Downloads

5

Readme

react-native-pretty-payment

Super pretty payment inputs for React Native. It exports a bunch of hooks and utility components to help you deliver a sweeter payment experience, faster. It uses bignumber.js to avoid floating point rounding errors.

☮️ Hippy Demo 😴 Sleepy Demo

🚀 Getting Started

Using Yarn:

yarn add react-native-pretty-payment

This solution is most effective when comprised with an internationalization library with support for currency, such as react-intl.

✏️ Usage

Firstly, you don't actually need any of the included UI to begin accepting payment information; all of the important business logic and props are retained inside a call to usePaymentButtons:

import {usePaymentButtons} from 'react-native-pretty-payment';
import BigNumber from 'bignumber.js';

const [valueAsString, value, {...helpers}] = usePaymentButtons(new BigNumber(1), {
  min: new BigNumber(1),
  max: new BigNumber(75),
  maximumFractionDigits: 2,
});

From this point, you're free render as you please, with the assurance that input and output values are going to remain bounded to the parameters supplied in the initial invocation of usePaymentButtons.

For a full demonstration, please check out the included Example.

📒 Reference

usePaymentButtons

usePaymentButtons is used to synthesize all of the form validation logic and related props required to pass into a payment input layout.

type usePaymentButtonsParams = {
  readonly min: BigNumber; // min required payment
  readonly max: BigNumber; // max required payment
  readonly maximumFractionDigits: number; // maximum digits the user can enter
}
type usePaymentButtonsResult = [
  valueAsString: string, // currently entered value as a string
  value: BigNumber, // currently entered value as a non-lossy numeric representation
  helpers: PaymentButtonsHelpers, // props and useful functions to help build your form
]
type PaymentButtonsHelpers = {
  readonly overflow: boolean; // signalling value exceeds max
  readonly underflow: boolean; // signalling value is less than min
  readonly getDigits: () => readonly ButtonProps[]; // returns all digit props
  readonly getBackspace: () => ButtonProps; // returns backspace props
  readonly getPeriod: () => ButtonProps; // returns decimal point props
  readonly hasPeriod: boolean; // defines whether the user has tapped the decimal point
  readonly numberOfFractionalDigits: number; // the number of decimal points that have been entered
}
type ButtonProps = {
  readonly onPress: onPressHandler; // callback used to change the entered payment value
  readonly disabled: boolean; // whether the input is disabled
  readonly children: string; // which value is being rendered [0123456789.-]
};

✌️ License

MIT