0.5.0 • Published 3 years ago

custom-pin-keyboard v0.5.0

Weekly downloads
17
License
MIT
Repository
github
Last release
3 years ago

Custom pin keyboard

Getting Started

via Yarn

yarn add custom-pin-keyboard

via NPM

npm install --save custom-pin-keyboard

Basic Usage

import PinView from 'custom-pin-keyboard';

...
        <PinView pinLength={6} />

Props

PropTypeDefaultRequired
pinLengthnumber-Yes
onButtonPressfunc-No
onValueChangefunc-No
inputSizenumber-No
activeOpacitynumber0.9No
buttonSizenumber60No
styleViewStyle-No
inputAreaStyleViewStyle{ marginVertical: 12 }No
inputViewStyleViewStyle-No
inputViewEmptyStyleViewStyle-No
buttonViewStyleViewStyle-No
buttonAreaStyleViewStyle{ marginVertical: 12 }No
inputViewFilledStyleViewStyle-No
inputTextStyleTextStyle-No
buttonTextStyleTextStyle{ color: "#FFF", fontSize: 30 }No
disabledboolean-No
showInputTextbooleanfalseNo
accessiblebooleanfalseNo
buttonTextByKeyobject{one: "1",two: "2",three: "3",four: "4",five: "5",six: "6",seven: "7",eight: "8",nine: "9",zero: "0",}No
customLeftButtonDisabledbooleanfalseNo
customLeftButtonReact.Component-No
customLeftAccessibilityLabelstringleftNo
customLeftButtonViewStyleViewStyle-No
customRightButtonDisabledboolean-No
customRightButtonReact.Component-No
customRightAccessibilityLabelstringrightNo
customRightButtonViewStyleViewStyle-No

Ref Actions

const pinView = useRef(null)

PropDescription
pinView.current.clearAll()This method completely clears the entered code.
pinView.current.clear()This method only delete last number of entered code.

Example

import Icon from "react-native-vector-icons/Ionicons";
import React, { useEffect, useRef, useState } from "react";
import { ImageBackground, SafeAreaView, StatusBar, Text } from "react-native";
import ReactNativePinView from "custom-pin-keyboard";
const App = () => {
  const pinView = useRef(null);
  const [showRemoveButton, setShowRemoveButton] = useState(false);
  const [enteredPin, setEnteredPin] = useState("");
  const [showCompletedButton, setShowCompletedButton] = useState(false);
  useEffect(() => {
    if (enteredPin.length > 0) {
      setShowRemoveButton(true);
    } else {
      setShowRemoveButton(false);
    }
    if (enteredPin.length === 8) {
      setShowCompletedButton(true);
    } else {
      setShowCompletedButton(false);
    }
  }, [enteredPin]);
  return (
    <>
      <StatusBar barStyle="light-content" />
      <SafeAreaView
        style={{
          flex: 1,
          backgroundColor: "rgba(0,0,0,0.5)",
          justifyContent: "center",
          alignItems: "center",
        }}
      >
        <Text
          style={{
            paddingTop: 24,
            paddingBottom: 48,
            color: "rgba(255,255,255,0.7)",
            fontSize: 48,
          }}
        >
          LUNA/CITY
        </Text>
        <ReactNativePinView
          inputSize={32}
          ref={pinView}
          pinLength={8}
          buttonSize={60}
          onValueChange={(value) => setEnteredPin(value)}
          buttonAreaStyle={{
            marginTop: 24,
          }}
          inputAreaStyle={{
            marginBottom: 24,
          }}
          inputViewEmptyStyle={{
            backgroundColor: "transparent",
            borderWidth: 1,
            borderColor: "#FFF",
          }}
          inputViewFilledStyle={{
            backgroundColor: "#FFF",
          }}
          buttonViewStyle={{
            borderWidth: 1,
            borderColor: "#FFF",
          }}
          buttonTextStyle={{
            color: "#FFF",
          }}
          onButtonPress={(key) => {
            if (key === "custom_left") {
              pinView.current.clear();
            }
            if (key === "custom_right") {
              alert("Entered Pin: " + enteredPin);
            }
            if (key === "three") {
              alert("You can't use 3");
            }
          }}
          customLeftButton={
            showRemoveButton ? (
              <Icon name={"ios-backspace"} size={36} color={"#FFF"} />
            ) : undefined
          }
          customRightButton={
            showCompletedButton ? (
              <Icon name={"ios-unlock"} size={36} color={"#FFF"} />
            ) : undefined
          }
        />
      </SafeAreaView>
    </>
  );
};
export default App;

License

This project is licensed under the MIT License - see the LICENSE.md file for details