@knovator/masters-admin
Version:
Package for integrating Masters, Submasters functionality in React projects
231 lines (175 loc) • 7.29 kB
Markdown
<div id="top"></div>
<!-- PROJECT LOGO -->
<br />
<div align="center">
<!-- <a href="https://github.com/knovator/masters-admin">
<img src="images/logo.png" alt="Logo" width="80" height="80">
</a> -->
<h3 align="center">@knovator/masters-admin</h3>
<p align="center">
ReactJS package to integrate masters/submasters functionality to ReactJS/NextJS application.
<br />
<a href="https://github.com/knovator/masters-admin"><strong>Explore the docs »</strong></a>
<br />
<br />
<a href="https://github.com/knovator/masters-admin">View Demo</a>
·
<a href="https://github.com/knovator/masters-admin/issues">Report Bug</a>
·
<a href="https://github.com/knovator/masters-admin/issues">Request Feature</a>
</p>
</div>
<!-- TABLE OF CONTENTS -->
<details>
<summary>Table of Contents</summary>
<ol>
<li>
<a href="#about-the-project">About The Project</a>
<ul>
<li><a href="#built-with">Built With</a></li>
</ul>
</li>
<li>
<a href="#getting-started">Getting Started</a>
<ul>
<li><a href="#prerequisites">Prerequisites</a></li>
<li><a href="#installation">Installation</a></li>
</ul>
</li>
<li>
<a href="#usage">Usage</a>
<ul>
<li><a href="#provider">Provider</a></li>
<li><a href="#master">Master</a></li>
<li><a href="#submaster">SubMaster</a></li>
<li><a href="#imageupload">ImageUpload</a></li>
</ul>
</li>
<li><a href="#usecases">Usecases</a></li>
<li><a href="#contributing">Contributing</a></li>
<li><a href="#contact">Contact</a></li>
</ol>
</details>
<!-- ABOUT THE PROJECT -->
## About The Project
`@knovator/masters-admin` is built with intent to faster web app development cycle by providing plug & play facility for masters/submasters, that is used almost on every project.
<p align="right">(<a href="#top">back to top</a>)</p>
### Built With
* [React.js](https://reactjs.org/)
* [Rollup](https://rollupjs.org)
* [classnames](https://www.npmjs.com/package/classnames)
* [react-beautiful-dnd](https://www.npmjs.com/package/react-beautiful-dnd)
* [react-dropzone](https://www.npmjs.com/package/react-dropzone)
* [react-hook-form](https://www.npmjs.com/package/react-hook-form)
* [react-table](https://www.npmjs.com/package/react-table)
* [react-transition-group](https://www.npmjs.com/package/react-transition-group)
* [typescript](https://www.typescriptlang.org)
<p align="right">(<a href="#top">back to top</a>)</p>
<!-- GETTING STARTED -->
## Getting Started
`@knovator/masters-admin` is designed to be used in ReactJS/NextJS project.
### Prerequisites
Following packages are required to exists/installed to use `@knovator/masters-admin` in the project.
- [@knovator/api](https://www.npmjs.com/package/@knovator/api)
- [react](https://www.npmjs.com/package/react)
- [react-dom](https://www.npmjs.com/package/react-dom)
- [react-hook-form](https://www.npmjs.com/package/react-hook-form)
- [react-table](https://www.npmjs.com/package/react-table)
### Installation
```sh
npm install @knovator/masters-admin
# or
yarn add @knovator/masters-admin
```
<p align="right">(<a href="#top">back to top</a>)</p>
<!-- USAGE EXAMPLES -->
## Usage
### Provider
`@knovator/masters-admin` uses **Context API**, to support communication between components. So, `Masters`/`Submaster` should be wraped by `Provider`.
```js
import { Provider } from '@knovator/masters-admin`;
function App() {
return (
<Provider
...
>
...
</Provider>
)
}
```
**Props**
- `token`
- JWT token to be sent along the requests
- `baseUrl`
- Base API url, without forward slash at end i.e. `https://api.xy000z.in`
- `dataGetter` (*optional*)
- function to get docs from axios API response
```js
// default
(response) => response.data.docs
```
- `paginationGetter` (*optional*)
- function to get pagination data from axios API response
```js
// default
(response) => response.data
```
- `onError(callback_code, code, message)` (*optional*)
- callback to execute on error
- `onSuccess(callback_code, code, message)` (*optional*)
- callback to execute on success
- `onLogout` (*optional*)
- callback to execute on API request with `unauthorized` code in body
### Master
Please check in [masters.md](masters.md)
### SubMaster
Plase check in [submasters.md](submasters.md)
### ImageUpload
- Provide `Image Upload` component to use in Forms
**Props**
- `className` (*optional*) => string
- `text` => `string` | `JSX.Element` to show inside component
- `maxSize` => `number` Max size for image to upload
- `imgId` => `string` | `ImageObjectProps`
- Image Url or `ImageObjectProps` mentioned in [data-formats](data-formats.md)
- `setImgId` => `(value?: string | null) => void`
- `clearError` (*optional*) => `() => void`
- `onError` => `(msg: string) => void`
- `onImageUpload` => `(file: File) => Promise<{ fileUrl: string; fileId: string } | void>`
- Gets called when user uploads file, it should return `fileUrl` and `fileId`
- `onImageRemove` (*optional*) => `(id: string) => Promise<void>`
- Gets called when user removes the image
- `baseUrl` => string
- Gets used when showing image
- `error` (*optional*) => string
<p align="right">(<a href="#top">back to top</a>)</p>
## Usecases
`@knovator/masters` is combination of two packages `@knovator/masters-admin` and `@knovator/masters-admin`. It is designed plug and play masters module in your project. It is useful in following cases:
- Your app needs master, submaster facility to build things like `state` with `city`, `experiences` with `skills`, `categories` with `subcategories` etc.
- You want to let admin manage masters and submasters data from admin panel.
- You want to show masters and submasters data somewhere in your app.
If you have any other usecase, please open an issue with tag `usecase`. We will try to add it in our roadmap.
<p align="right">(<a href="#top">back to top</a>)</p>
<!-- CONTRIBUTING -->
## Contributing
Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are **greatly appreciated**.
If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement".
Don't forget to give the project a star! Thanks again!
1. Fork the Project
2. Create your Feature Branch (`git checkout -b feature/AmazingFeature`)
3. Commit your Changes (`git commit -m 'Add some AmazingFeature'`)
4. Push to the Branch (`git push origin feature/AmazingFeature`)
5. Open a Pull Request
<p align="right">(<a href="#top">back to top</a>)</p>
<!-- LICENSE -->
## License
Distributed under the MIT License. See `LICENSE.txt` for more information.
<p align="right">(<a href="#top">back to top</a>)</p>
<!-- CONTACT -->
## Contact
Knovator Technologies
- Twitter [@knovator](https://twitter.com/knovator)
- Web [https://knovator.com/](https://knovator.com/)
Project Link: [https://github.com/knovator/masters-admin](https://github.com/knovator/masters-admin)
<p align="right">(<a href="#top">back to top</a>)</p>