1.0.10 • Published 3 years ago

epic-select-react v1.0.10

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

epic-select-react

A powerful Select Element library.

NPM JavaScript Style Guide

Install

npm install --save epic-select-react

Usage

Basic Usage

import React, { useEffect, useState } from "react";

import EpicSelect from "epic-select-react";

const App = () => (
  <>
    <EpicSelect
      placeholder="Choose an option"
      // Add Options
      options={[
        {
          label: "Graphics Design",
          value: "graphics-design",
        },
        {
          label: "Programming & Tech",
          value: "programming-tech",
        },
      ]}
      required
    />
  </>
);

export default App;

Advanced Usage

import React, { useEffect, useState } from "react";

import EpicSelect, { OptionsBuilder } from "epic-select-react";

const App = () => {
  const data = [
    {
      title: "Graphics Design",
      slug: "graphics-design",
    },
    {
      title: "Programming & Tech",
      slug: "programming-tech",
    },
  ];

  const [controlsState, setControlsState] = useState({} as any);
  const [loadingState, setLoadingState] = useState(true);

  useEffect(() => {
    // Might Load Data From API
    setTimeout(() => setLoadingState(false), 3000);
  }, []);

  return (
    <>
      <EpicSelect
        placeholder="Choose an option"
        // Add Custom Classes
        className={{
          container: (provider) => [
            ...provider,
            "border-top border-left border-right border-bottom",
          ],
          input: (provider) => [...provider, "py-4"],
          optionsContainer: (provider) => [
            ...provider,
            "shadow border-top border-left border-right border-bottom",
          ],
        }}
        // Add Custom Styles
        style={{
          input: (provider) => ({
            ...provider,
            color: "white",
            backgroundColor: "Highlight",
            "&::placeholder": {
              color: "white",
            },
          }),
          button: (provider) => ({ ...provider, color: "white" }),
        }}
        // Add Options
        options={OptionsBuilder(data, (value, preparer) =>
          preparer(value.title, value.slug)
        )}
        // Initial Value (Optional)
        value="graphics-design"
        // Handle On Value Change
        onChange={(value) => console.log(value)}
        // Compnent States
        isSearchable
        isLoading={loadingState}
        isResetable
        isClearable
        isDisabled={false}
        // Change Layout
        layoutRight={false}
        // Get Controls
        // Returns a function to get latest selected value
        getSelected={(getter) =>
          setControlsState((value: any) => {
            value.getter = getter;
            return value;
          })
        }
        // Returns a function to reset component
        getResetter={(resetter) =>
          setControlsState((value: any) => {
            value.resetter = resetter;
            return value;
          })
        }
        // Returns a function to clear component
        getClearer={(clearer) =>
          setControlsState((value: any) => {
            value.clearer = clearer;
            return value;
          })
        }
      />

      {/* Create Separate Controls If Needed */}
      <button
        onClick={() => {
          if (controlsState.getter) console.log(controlsState.getter());
        }}
      >
        Get Value
      </button>

      <button
        onClick={() => {
          if (controlsState.resetter) controlsState.resetter();
        }}
      >
        Reset
      </button>

      <button
        onClick={() => {
          if (controlsState.clearer) controlsState.clearer();
        }}
      >
        Clear
      </button>
    </>
  );
};

export default App;

License

MIT © Saff-Elli-Khan

1.0.9

3 years ago

1.0.10

3 years ago

1.0.8

3 years ago

1.0.7

3 years ago

1.0.6

3 years ago

1.0.5

4 years ago

1.0.2

4 years ago

1.0.4

4 years ago

1.0.3

4 years ago

1.0.1

4 years ago

1.0.0

4 years ago