react-redactor 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- package/README.md +115 -0
- package/index.js +3 -0
- package/package.json +20 -0
- package/src/Badge.js +24 -0
- package/src/Protect.js +13 -0
- package/src/useProtection.js +22 -0
package/README.md
ADDED
@@ -0,0 +1,115 @@
|
|
1
|
+
|
2
|
+
# Redactor
|
3
|
+
|
4
|
+
Redactor is a lightweight library for conditional rendering, context management, and navigation in React applications.
|
5
|
+
|
6
|
+
## Features
|
7
|
+
- Simple badge-based access control using React Context.
|
8
|
+
- Conditional rendering with the `Protect` component.
|
9
|
+
- Easy navigation with the `useProtection` hook.
|
10
|
+
|
11
|
+
## Installation
|
12
|
+
|
13
|
+
Install the module via npm:
|
14
|
+
|
15
|
+
```
|
16
|
+
npm install react-redactor
|
17
|
+
```
|
18
|
+
|
19
|
+
## Usage
|
20
|
+
|
21
|
+
### 1. Badge Context (`useBadge` and `BadgeProvider`)
|
22
|
+
|
23
|
+
Wrap your app or part of it with the `BadgeProvider` to set a badge value.
|
24
|
+
|
25
|
+
```jsx
|
26
|
+
import React from "react";
|
27
|
+
import { useBadge, BadgeProvider } from "your-react-badge-module";
|
28
|
+
|
29
|
+
function App() {
|
30
|
+
return (
|
31
|
+
<BadgeProvider value={true}>
|
32
|
+
<ChildComponent />
|
33
|
+
</BadgeProvider>
|
34
|
+
);
|
35
|
+
}
|
36
|
+
|
37
|
+
function ChildComponent() {
|
38
|
+
const badge = useBadge();
|
39
|
+
|
40
|
+
return <h1>Badge Value: {badge ? "Authorized" : "Unauthorized"}</h1>;
|
41
|
+
}
|
42
|
+
```
|
43
|
+
|
44
|
+
### 2. Conditional Rendering with `Protect`
|
45
|
+
|
46
|
+
Use the `Protect` component to conditionally render components based on the badge value.
|
47
|
+
|
48
|
+
```jsx
|
49
|
+
import React from "react";
|
50
|
+
import { Protect } from "your-react-badge-module";
|
51
|
+
|
52
|
+
const ProceedComponent = () => <h1>Welcome!</h1>;
|
53
|
+
const ReturnComponent = () => <h1>Access Denied!</h1>;
|
54
|
+
|
55
|
+
function App() {
|
56
|
+
const badgeValue = true; // Example badge value
|
57
|
+
|
58
|
+
return (
|
59
|
+
<Protect
|
60
|
+
Proceed={ProceedComponent}
|
61
|
+
Return={ReturnComponent}
|
62
|
+
badgeValue={badgeValue}
|
63
|
+
/>
|
64
|
+
);
|
65
|
+
}
|
66
|
+
```
|
67
|
+
|
68
|
+
### 3. Navigation with `useProtection`
|
69
|
+
|
70
|
+
Redirect users based on a validation function.
|
71
|
+
|
72
|
+
```jsx
|
73
|
+
import React from "react";
|
74
|
+
import { useProtection } from "your-react-badge-module";
|
75
|
+
|
76
|
+
function App() {
|
77
|
+
const validationFunc = () => true; // Replace with your logic
|
78
|
+
|
79
|
+
useProtection(validationFunc, "/dashboard", "/login");
|
80
|
+
|
81
|
+
return <h1>Redirecting...</h1>;
|
82
|
+
}
|
83
|
+
```
|
84
|
+
|
85
|
+
## API Reference
|
86
|
+
|
87
|
+
### `useBadge`
|
88
|
+
- **Description**: Access the current badge value from the context.
|
89
|
+
- **Returns**: The current badge value.
|
90
|
+
|
91
|
+
### `BadgeProvider`
|
92
|
+
- **Props**:
|
93
|
+
- `value` (any): The value to set in the badge context.
|
94
|
+
- `children` (ReactNode): The components to render within the provider.
|
95
|
+
|
96
|
+
### `Protect`
|
97
|
+
- **Props**:
|
98
|
+
- `Proceed` (React.ComponentType): The component to render if `badgeValue` is `true`.
|
99
|
+
- `Return` (React.ComponentType): The component to render if `badgeValue` is `false`.
|
100
|
+
- `badgeValue` (boolean): Determines which component to render.
|
101
|
+
|
102
|
+
### `useProtection`
|
103
|
+
- **Parameters**:
|
104
|
+
- `validationFunc` (Function): A function that returns `true` or `false`.
|
105
|
+
- `goto_url` (string): The URL to navigate to if validation passes.
|
106
|
+
- `returnto_url` (string): The URL to navigate to if validation fails.
|
107
|
+
- **Effect**: Redirects the user based on `validationFunc`.
|
108
|
+
|
109
|
+
## License
|
110
|
+
|
111
|
+
This library is licensed under the MIT License. See the LICENSE file for details.
|
112
|
+
|
113
|
+
## Contributing
|
114
|
+
|
115
|
+
Feel free to open issues or pull requests on the [GitHub repository](https://github.com/websitedeb/Redactor).
|
package/index.js
ADDED
package/package.json
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
{
|
2
|
+
"name": "react-redactor",
|
3
|
+
"version": "1.0.0",
|
4
|
+
"description": "Redactor is a lightweight library for conditional rendering, context management, and navigation in React applications.",
|
5
|
+
"main": "index.jsx",
|
6
|
+
"scripts": {
|
7
|
+
"test": "echo \"Error: no test specified\" && exit 1"
|
8
|
+
},
|
9
|
+
"keywords": [
|
10
|
+
"redactor",
|
11
|
+
"router",
|
12
|
+
"route-protector"
|
13
|
+
],
|
14
|
+
"author": "",
|
15
|
+
"license": "ISC",
|
16
|
+
"dependencies": {
|
17
|
+
"react": "^18.3.1",
|
18
|
+
"react-router-dom": "^7.0.1"
|
19
|
+
}
|
20
|
+
}
|
package/src/Badge.js
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
import React, { createContext, useContext } from "react";
|
2
|
+
|
3
|
+
// Badge Context
|
4
|
+
const BadgeContext = createContext(null);
|
5
|
+
|
6
|
+
/**
|
7
|
+
* `Badge` Hook
|
8
|
+
* Allows consumers to access the BadgeContext value.
|
9
|
+
* @returns {*} Context value
|
10
|
+
*/
|
11
|
+
export function useBadge() {
|
12
|
+
return useContext(BadgeContext);
|
13
|
+
}
|
14
|
+
|
15
|
+
/**
|
16
|
+
* `Provider` Component
|
17
|
+
* Wraps children with BadgeContext.Provider
|
18
|
+
* @param {Object} props
|
19
|
+
* @param {*} props.value - The value to pass to the context.
|
20
|
+
* @param {React.ReactNode} props.children - Components to render within the provider.
|
21
|
+
*/
|
22
|
+
export function BadgeProvider({ value, children }) {
|
23
|
+
return <BadgeContext.Provider value={value}>{children}</BadgeContext.Provider>;
|
24
|
+
}
|
package/src/Protect.js
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
import React from "react";
|
2
|
+
|
3
|
+
/**
|
4
|
+
* `Protect` Component
|
5
|
+
* Conditionally renders one of two components based on a badge value.
|
6
|
+
* @param {Object} props
|
7
|
+
* @param {React.ComponentType} props.Proceed - Component to render if badgeValue is true.
|
8
|
+
* @param {React.ComponentType} props.Return - Component to render if badgeValue is false.
|
9
|
+
* @param {boolean} props.badgeValue - Determines which component to render.
|
10
|
+
*/
|
11
|
+
export function Protect({ Proceed, Return, badgeValue }) {
|
12
|
+
return badgeValue ? <Proceed /> : <Return />;
|
13
|
+
}
|
@@ -0,0 +1,22 @@
|
|
1
|
+
import { useEffect } from "react";
|
2
|
+
import { useNavigate } from "react-router-dom";
|
3
|
+
|
4
|
+
/**
|
5
|
+
* ;)
|
6
|
+
* `useProtection` Hook
|
7
|
+
* Redirects based on a validation function's result.
|
8
|
+
* @param {Function} validationFunc - A function that returns a boolean.
|
9
|
+
* @param {string} goto_url - URL to navigate to if the validation passes.
|
10
|
+
* @param {string} returnto_url - URL to navigate to if the validation fails.
|
11
|
+
*/
|
12
|
+
export function useProtection(validationFunc, goto_url, returnto_url) {
|
13
|
+
const navigate = useNavigate();
|
14
|
+
|
15
|
+
useEffect(() => {
|
16
|
+
if (validationFunc()) {
|
17
|
+
navigate(goto_url);
|
18
|
+
} else {
|
19
|
+
navigate(returnto_url);
|
20
|
+
}
|
21
|
+
}, [validationFunc, goto_url, returnto_url, navigate]);
|
22
|
+
}
|