parent
942ef8dada
commit
1ca03961c6
@ -0,0 +1,4 @@ |
||||
{ |
||||
"presets": ["@nrwl/react/babel"], |
||||
"plugins": [] |
||||
} |
@ -0,0 +1,18 @@ |
||||
{ |
||||
"extends": ["plugin:@nrwl/nx/react", "../../../.eslintrc"], |
||||
"ignorePatterns": ["!**/*"], |
||||
"overrides": [ |
||||
{ |
||||
"files": ["*.ts", "*.tsx", "*.js", "*.jsx"], |
||||
"rules": {} |
||||
}, |
||||
{ |
||||
"files": ["*.ts", "*.tsx"], |
||||
"rules": {} |
||||
}, |
||||
{ |
||||
"files": ["*.js", "*.jsx"], |
||||
"rules": {} |
||||
} |
||||
] |
||||
} |
@ -0,0 +1 @@ |
||||
export { default as Permissionhandler } from './lib/permission-handler' |
@ -0,0 +1,13 @@ |
||||
import { IconProfile } from 'libs/remix-ui/vertical-icons-panel/src/lib/components/Icon' |
||||
|
||||
export interface PermissionHandlerValue { |
||||
from: IconProfile, |
||||
to: IconProfile, |
||||
remember: boolean, |
||||
method: string, |
||||
message: string |
||||
} |
||||
|
||||
export interface PermissionHandlerProps { |
||||
value: PermissionHandlerValue |
||||
} |
@ -0,0 +1,63 @@ |
||||
import React, { useContext, useEffect, useRef, useState } from 'react' // eslint-disable-line
|
||||
import { PermissionHandlerProps } from '../interface' |
||||
import './permission-dialog.css' |
||||
|
||||
const PermissionHandlerDialog = (props: PermissionHandlerProps) => { |
||||
const { from, to, remember, method, message } = props.value |
||||
|
||||
const switchMode = () => { |
||||
|
||||
} |
||||
|
||||
const rememberSwitch = () => { |
||||
return <input type="checkbox" onChange={switchMode} className='form-check-input' id='remember' data-id={remember ? 'permissionHandlerRememberChecked' : 'permissionHandlerRememberUnchecked'}/> |
||||
} |
||||
const reset = () => { |
||||
|
||||
} |
||||
|
||||
const imgFrom = () => { return <img alt='' id='permissionModalImagesFrom' src={from.icon} /> } |
||||
const imgTo = () => { return <img alt='' id='permissionModalImagesTo' src={to.icon} /> } |
||||
const pluginsImages = () => { |
||||
return ( |
||||
<article className='images'> |
||||
{imgFrom} |
||||
<i className="fas fa-arrow-right"></i> |
||||
{imgTo} |
||||
</article> |
||||
) |
||||
} |
||||
|
||||
const text = () => { |
||||
return `"${from.displayName}" ${(remember ? 'has changed and' : '')} would like to access to "${method}" of "${to.displayName}"` |
||||
} |
||||
|
||||
const pluginMessage = () => { |
||||
return message |
||||
? <div> |
||||
<h6>Description</h6> |
||||
<p>{message}</p> |
||||
</div> : null |
||||
} |
||||
|
||||
return (<section className="permission"> |
||||
{pluginsImages} |
||||
<article> |
||||
<h4 data-id="permissionHandlerMessage">{text} :</h4> |
||||
<h6>{from.displayName}</h6> |
||||
<p> {from.description} || <i>No description Provided</i></p> |
||||
<h6>{to.displayName} :</h6> |
||||
<p> {to.description} || <i>No description Provided</i></p> |
||||
{pluginMessage} |
||||
</article> |
||||
<article className='remember'> |
||||
<div className='form-check'> |
||||
{rememberSwitch} |
||||
<label className="form-check-label" data-id="permissionHandlerRememberChoice">Remember this choice</label> |
||||
</div> |
||||
<button className="btn btn-sm" onClick={reset}>Reset all Permissions</button> |
||||
</article> |
||||
</section>) |
||||
} |
||||
|
||||
export default PermissionHandlerDialog |
@ -0,0 +1,25 @@ |
||||
import { useDialogDispatchers } from 'libs/remix-ui/app/src/lib/remix-app/context/provider' |
||||
import React, { useContext, useEffect, useRef, useState } from 'react' // eslint-disable-line
|
||||
import { PermissionHandlerValue } from '../interface' |
||||
import PermissionHandlerDialog from './permission-dialog' |
||||
|
||||
const PermissionHandler = () => { |
||||
const { alert, toast, modal } = useDialogDispatchers() |
||||
const [value, setValue] = useState<PermissionHandlerValue>() |
||||
useEffect(() => { |
||||
if (value) { |
||||
modal({ |
||||
id: 'PermissionHandler', |
||||
title: 'permissions', |
||||
message: <PermissionHandlerDialog value={value}></PermissionHandlerDialog>, |
||||
okFn: () => {}, |
||||
cancelFn: () => {}, |
||||
okLabel: 'sure', |
||||
cancelLabel: 'no' |
||||
}) |
||||
} |
||||
}, [value]) |
||||
return (<></>) |
||||
} |
||||
|
||||
export default PermissionHandler |
@ -0,0 +1,20 @@ |
||||
{ |
||||
"extends": "../../../tsconfig.base.json", |
||||
"compilerOptions": { |
||||
"jsx": "react-jsx", |
||||
"allowJs": true, |
||||
"esModuleInterop": true, |
||||
"allowSyntheticDefaultImports": true, |
||||
"forceConsistentCasingInFileNames": true, |
||||
"strict": true, |
||||
"noImplicitReturns": true, |
||||
"noFallthroughCasesInSwitch": true |
||||
}, |
||||
"files": [], |
||||
"include": [], |
||||
"references": [ |
||||
{ |
||||
"path": "./tsconfig.lib.json" |
||||
} |
||||
] |
||||
} |
@ -0,0 +1,13 @@ |
||||
{ |
||||
"extends": "./tsconfig.json", |
||||
"compilerOptions": { |
||||
"outDir": "../../../dist/out-tsc", |
||||
"types": ["node"] |
||||
}, |
||||
"files": [ |
||||
"../../../node_modules/@nrwl/react/typings/cssmodule.d.ts", |
||||
"../../../node_modules/@nrwl/react/typings/image.d.ts" |
||||
], |
||||
"exclude": ["**/*.spec.ts", "**/*.spec.tsx"], |
||||
"include": ["**/*.js", "**/*.jsx", "**/*.ts", "**/*.tsx"] |
||||
} |
Loading…
Reference in new issue