Minimist React Library
🚀 Newer version react-minimist-utils
A bundle of essential packages with custom utils to build a web application
React + TypeScript + Vite + Storybook
Typescript Playground
Regex Playground
Lorem
Free Test Data
Table of Contents
Installation
npm i minimist-react-library
Some extra essential packages:
npm i axios
npm i date-fns
npm i @chakra-ui/react @emotion/react @emotion/styled framer-motion
npm i @reduxjs/toolkit redux-saga
Constants
EMAIL_REGEX
import { CONSTANTS } from "minimist-react-library";
const regex = CONSTANTS.EMAIL_REGEX;
HEX_COLOR_REGEX
import { CONSTANTS } from "minimist-react-library";
const regex = CONSTANTS.HEX_COLOR_REGEX;
HTTP_HTTPS_REGEX
import { CONSTANTS } from "minimist-react-library";
const regex = CONSTANTS.HTTP_HTTPS_REGEX;
PASSWORD_REGEX
import { CONSTANTS } from "minimist-react-library";
const regex = CONSTANTS.PASSWORD_REGEX;
UUID_REGEX
import { CONSTANTS } from "minimist-react-library";
const regex = CONSTANTS.UUID_REGEX;
VIETNAMESE_PHONE_NUMBER_REGEX
import { CONSTANTS } from "minimist-react-library";
const regex = CONSTANTS.VIETNAMESE_PHONE_NUMBER_REGEX;
Essential Packages:
import { Clsx, ClsxType } from "minimist-react-library";
import { dompurify, DOMPurify, DompurifyType } from "minimist-react-library";
import { _, Lodash, LodashType } from "minimist-react-library";
import { qs, qsType } from "minimist-react-library";
import { ReactHookForm, ReactHookFormType } from "minimist-react-library";
import { ReactRouter, ReactRouterType } from "minimist-react-library";
import { Yup, YupType } from "minimist-react-library";
Hooks
Array
useArray
import { Hooks } from "minimist-react-library";
const { array, set, push, remove, filter, update, clear } =
Hooks.Array.useArray([1, 2, 3, 4, 5, 6]);
Data
useToggle
import { Hooks } from "minimist-react-library";
const [value, toggleValue] = Hooks.Data.useToggle(false);
return (
<>
<button onClick={toggleValue}>Toggle</button>
<button onClick={() => toggleValue(true)}>Make True</button>
<button onClick={() => toggleValue(false)}>Make False</button>
</>
);
Device
useDeviceDetect
import { Hooks } from "minimist-react-library";
const { isMobile } = Hooks.Device.useDeviceDetect();
useResponsive (depreciated)
Dom
useElementOnScreen
import { Hooks } from "minimist-react-library";
const buttonRef = useRef();
const isVisible = Hooks.Dom.useElementOnScreen(buttonRef);
useEventListener
import { Hooks } from "minimist-react-library";
Hooks.Dom.useEventListener("scroll", callback);
Storage
useLocalStorage, useSessionStorage
import { Hooks } from "minimist-react-library";
const [name, setName, removeName] = Hooks.Storage.useSessionStorage(
"name",
"Happy"
);
const [age, setAge, removeAge] = Hooks.Storage.useLocalStorage("age", 26);
Window
useScrolling
import { Hooks } from "minimist-react-library";
const isScrolling = Hooks.Window.useScrolling();
useScrollTo
import { Hooks } from "minimist-react-library";
const buttonRef = useRef();
const { scrollToElement, scrollTo } = Hooks.Window.useScrollTo();
scrollToElement(buttonRef);
scrollTo();
useWindowSize
import { Hooks } from "minimist-react-library";
const { width, height } = Hooks.Window.useWindowSize();
Utils:
Api
fetchData
import { Utils } from "minimist-react-library";
Utils.Api.fetchData({
requestCallback: async () => {
return await fetch("");
},
successCallback: (res) => {
},
failureCallback: (error) => {
},
getLoadingState: (isLoading) => {
if (isLoading) {
} else {
}
},
showLog: true,
});
Array
groupListByField
import { Utils } from "minimist-react-library";
const list = Utils.Array.groupListByField({
list: mockList,
field: "name",
});
sortList
- By default, sortType is "asc"
import { Utils } from "minimist-react-library";
const data = Utils.Array.sortList({
list: mockList,
field: "name",
sortType: "desc",
});
Data
downloadFile
import { Utils } from "minimist-react-library";
const { downloadFile, DOWNLOAD_LINK_SAMPLE } = Utils.Data;
downloadFile(DOWNLOAD_LINK_SAMPLE);
Number
numberWithComma
import { Utils } from "minimist-react-library";
const formattedNumber = Utils.Number.numberWithComma(55250.2);
React
lazyLoad
import { Utils } from "minimist-react-library";
const Button = Utils.lazyLoad(
() => import("./Button"),
(module) => module.Button
);
String
checkWordCount
import { Utils } from "minimist-react-library";
const text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit.";
const isTextValid = Utils.String.checkWordCount(text, 5, 30);
convertHexToRgb
import { Utils } from "minimist-react-library";
const formattedNumber = Utils.String.numberWithComma(55250.2);
convertStyleObjectToString
import { Utils } from "minimist-react-library";
const styleObject = {
color: "#000",
fontSize: "20px",
};
const cssString = Utils.String.convertStyleObjectToString(styleObject);
sanitizeHTML
import { Utils } from "minimist-react-library";
const dirtyHTML = <p>This is dirty HTML</p>;
const htmlText = Utils.String.sanitizeHTML(dirtyHTML);
trimText
import { Utils } from "minimist-react-library";
const text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit.";
const newText = Utils.String.trimText(text, 50);