tachybase_todo/packages/plugins/oidc/src/client/Options.tsx
被雨水过滤的空气-Rairn fd36c970bc
refactor(client)!: upgrade antd to v5 (#2078)
* refactor: change moment to dayjs

* refactor: remove antd css

* refactor: change @formily/antd to @formily/antd-v5

* chore: add dep

* chore: upgrade babel/core and typescript

* refactor: rename moment to dayjs

* fix(dayjs): add plugins

* refactor: fix type errors

* refactor: change default export to named export

* chore: upgrade ts-loader

* refactor: rename moment to dayjs

* refactor: fix type errors

* chore: upgrade deps for build

* fix: fix build errors

* fix: add antd reset css

* fix: fix build error

* chore: add __builtins__

* chore: optimize genStyleHook

* refactor(Calendar): less to css-in-js

* refactor(acl): less to css-in-js

* refactor(board): less to css-in-js

* chore: add antd-style

* refactor(acl): use antd-style

* refactor(board): use antd-style

* refactor: schema-initializer

* refactor: refactor genStyleHook

* refactor: kanban

* refactor: filter

* refactor: upload

* refactor: markdown

* refactor: rename className to componentCls

* refactor: rich-text

* style: fix style

* fix: fix merge error

* chore: update yarn.lock

* chore: upgrade formily

* style: fix pageHeader

* style: fix add button style

* style: fix header menu color

* chore: update yarn.lock

* chore: upgrade deps

* test: fix tests

* test: fix tests

* fix: fix build error

* fix: fix style of plugin doc

* fix: fix tests

* fix: fix drag bug

* refactor: remove useless code

* fix: fix Modal style (T-621)

* fix: fix box-shadow of subMenu (T-622)

* fix: fix style of linkage rules (T-623)

* fix: fix style of DataTemplate

* fix: fix style of variable (T-620)

* chore: update yarn.lock

* fix: avoid test failed

* test: fix error

* chore: update yarn.lock

* test: fix error

* test(dayjs): fix error

* fix: should delay show menu to avoid the menu not hidden

* test: skip failure test

* fix(mouseEnterDelay): change default value from 100 to 150

* test: avoid failed

* refactor: rename component names

* chore: optimize types

* chore: lock antd version

* fix: fix build

* fix: fix build

* fix: layout bg color use variable

* fix: fix style of buttons

* feat: remove theme config

* fix(calendar): fix style

* fix(mobile-client): fix dialog style

* fix: fix test

* refactor: make code gooder

* chore: change code

* fix: fix T-847

* fix: fix T-845

* fix: display block

* fix: danger button

* refactor: make tester better

* fix: change moment to dayjs

* fix: build error

* fix: import dayjs/plugin/isSameOrBefore

* refactor: downgrade @testing-library/react to fix warning

* fix: fix CI

* fix: upgrade deps to fix build

* fix: fix test

* fix: skip some filed tests to avoid error

* fix: fix build errors that maked by merge code

* refactor: remove moment

* fix: error

* feat: update doc

---------

Co-authored-by: chenos <chenlinxh@gmail.com>
2023-07-08 08:26:27 +08:00

160 lines
4.8 KiB
TypeScript

import { CopyOutlined } from '@ant-design/icons';
import { ArrayItems } from '@formily/antd-v5';
import { observer } from '@formily/react';
import { FormItem, Input, SchemaComponent } from '@nocobase/client';
import { Card, Space, message } from 'antd';
import React from 'react';
import { useOidcTranslation } from './locale';
const schema = {
type: 'object',
properties: {
oidc: {
type: 'object',
properties: {
issuer: {
title: '{{t("Issuer")}}',
'x-component': 'Input',
'x-decorator': 'FormItem',
required: true,
},
clientId: {
title: '{{t("Client ID")}}',
'x-component': 'Input',
'x-decorator': 'FormItem',
required: true,
},
clientSecret: {
title: '{{t("Client Secret")}}',
'x-component': 'Input',
'x-decorator': 'FormItem',
required: true,
},
scope: {
title: '{{t("scope")}}',
'x-component': 'Input',
'x-decorator': 'FormItem',
'x-decorator-props': {
tooltip: '{{t("Default: openid profile email")}}',
},
},
idTokenSignedResponseAlg: {
title: '{{t("id_token signed response algorithm")}}',
'x-component': 'Select',
'x-decorator': 'FormItem',
enum: [
{ label: 'HS256', value: 'HS256' },
{ label: 'HS384', value: 'HS384' },
{ label: 'HS512', value: 'HS512' },
{ label: 'RS256', value: 'RS256' },
{ label: 'RS384', value: 'RS384' },
{ label: 'RS512', value: 'RS512' },
{ label: 'ES256', value: 'ES256' },
{ label: 'ES384', value: 'ES384' },
{ label: 'ES512', value: 'ES512' },
{ label: 'PS256', value: 'PS256' },
{ label: 'PS384', value: 'PS384' },
{ label: 'PS512', value: 'PS512' },
],
},
http: {
title: '{{t("HTTP")}}',
'x-component': 'Checkbox',
'x-decorator': 'FormItem',
},
port: {
title: '{{t("Port")}}',
'x-component': 'InputNumber',
'x-decorator': 'FormItem',
'x-component-props': {
style: {
width: '15%',
'min-width': '100px',
},
},
},
fieldMap: {
title: '{{t("Field Map")}}',
type: 'array',
'x-decorator': 'FormItem',
'x-component': 'ArrayItems',
items: {
type: 'object',
'x-decorator': 'ArrayItems.Item',
properties: {
space: {
type: 'void',
'x-component': 'Space',
properties: {
source: {
type: 'string',
'x-decorator': 'FormItem',
'x-component': 'Input',
'x-component-props': {
placeholder: '{{t("source")}}',
},
},
target: {
type: 'string',
'x-decorator': 'FormItem',
'x-component': 'Select',
'x-component-props': {
placeholder: '{{t("target")}}',
},
enum: [
{ label: 'Nickname', value: 'nickname' },
{ label: 'Email', value: 'email' },
{ label: 'Phone', value: 'phone' },
],
},
remove: {
type: 'void',
'x-decorator': 'FormItem',
'x-component': 'ArrayItems.Remove',
},
},
},
},
},
properties: {
add: {
type: 'void',
title: 'Add',
'x-component': 'ArrayItems.Addition',
},
},
},
usage: {
type: 'void',
'x-component': 'Usage',
},
},
},
},
};
const Usage = observer(() => {
const { t } = useOidcTranslation();
const { protocol, host } = window.location;
const url = `${protocol}//${host}/api/oidc:redirect`;
const copy = (text: string) => {
navigator.clipboard.writeText(text);
message.success(t('Copied'));
};
return (
<Card title={t('Usage')} type="inner">
<FormItem label={t('Redirect URL')}>
<Input value={url} disabled={true} addonBefore={<CopyOutlined onClick={() => copy(url)} />} />
</FormItem>
</Card>
);
});
export const Options = () => {
const { t } = useOidcTranslation();
return <SchemaComponent scope={{ t }} components={{ Usage, ArrayItems, Space }} schema={schema} />;
};