feat: nav 的连接支持设置 target (#2177)

This commit is contained in:
吴多益 2021-07-01 00:45:13 +08:00 committed by GitHub
parent 54efd883e1
commit 63466f47d2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 41 additions and 17 deletions

View File

@ -31,6 +31,11 @@ order: 58
{ {
"label": "Nav 3", "label": "Nav 3",
"to": "/docs/renderers" "to": "/docs/renderers"
},
{
"label": "外部地址",
"to": "http://www.baidu.com/",
"target": "_blank"
} }
] ]
} }
@ -115,20 +120,21 @@ order: 58
## 属性表 ## 属性表
| 属性名 | 类型 | 默认值 | 说明 | | 属性名 | 类型 | 默认值 | 说明 |
| ----------------- | ---------------------------------------- | ------- | ---------------------------------------------------------------- | | ----------------- | ---------------------------------------- | -------- | ---------------------------------------------------------------- |
| type | `string` | `"nav"` | 指定为 Nav 渲染器 | | type | `string` | `"nav"` | 指定为 Nav 渲染器 |
| className | `string` | | 外层 Dom 的类名 | | className | `string` | | 外层 Dom 的类名 |
| stacked | `boolean` | `true` | 设置成 false 可以以 tabs 的形式展示 | | stacked | `boolean` | `true` | 设置成 false 可以以 tabs 的形式展示 |
| source | `string` 或 [API](../../docs/types/api) | | 可以通过变量或 API 接口动态创建导航 | | source | `string` 或 [API](../../docs/types/api) | | 可以通过变量或 API 接口动态创建导航 |
| deferApi | [API](../../docs/types/api) | | 用来延时加载选项详情的接口,可以不配置,不配置公用 source 接口。 | | deferApi | [API](../../docs/types/api) | | 用来延时加载选项详情的接口,可以不配置,不配置公用 source 接口。 |
| links | `Array` | | 链接集合 | | links | `Array` | | 链接集合 |
| links[x].label | `string` | | 名称 | | links[x].label | `string` | | 名称 |
| links[x].to | [模板](../../docs/concepts/template) | | 链接地址 | | links[x].to | [模板](../../docs/concepts/template) | | 链接地址 |
| links[x].icon | `string` | | 图标 | | links[x].target | `string` | 链接关系 | |
| links[x].children | `Array<link>` | | 子链接 | | links[x].icon | `string` | | 图标 |
| links[x].unfolded | `boolean` | | 初始是否展开 | | links[x].children | `Array<link>` | | 子链接 |
| links[x].active | `boolean` | | 是否高亮 | | links[x].unfolded | `boolean` | | 初始是否展开 |
| links[x].activeOn | [表达式](../../docs/concepts/expression) | | 是否高亮的条件,留空将自动分析链接地址 | | links[x].active | `boolean` | | 是否高亮 |
| links[x].defer | `boolean` | | 标记是否为懒加载项 | | links[x].activeOn | [表达式](../../docs/concepts/expression) | | 是否高亮的条件,留空将自动分析链接地址 |
| links[x].deferApi | [API](../../docs/types/api) | | 可以不配置,如果配置优先级更高 | | links[x].defer | `boolean` | | 标记是否为懒加载项 |
| links[x].deferApi | [API](../../docs/types/api) | | 可以不配置,如果配置优先级更高 |

View File

@ -131,6 +131,11 @@ export default class PlayGround extends React.Component {
return; return;
} }
if (action && to && action.target) {
window.open(to, action.target);
return;
}
if (/^https?:\/\//.test(to)) { if (/^https?:\/\//.test(to)) {
window.location.replace(to); window.location.replace(to);
} else { } else {

View File

@ -62,6 +62,10 @@ export default function (schema, showCode, envOverrides) {
: window.open(to); : window.open(to);
return; return;
} }
if (action && to && action.target) {
window.open(to, action.target);
return;
}
if (/^https?:\/\//.test(to)) { if (/^https?:\/\//.test(to)) {
window.location.replace(to); window.location.replace(to);
} else { } else {

View File

@ -226,6 +226,12 @@ export function embed(
return; return;
} }
// 主要是支持 nav 中的跳转
if (action && to && action.target) {
window.open(to, action.target);
return;
}
if (/^https?:\/\//.test(to)) { if (/^https?:\/\//.test(to)) {
window.location.replace(to); window.location.replace(to);
} else { } else {

View File

@ -36,6 +36,8 @@ export type NavItemSchema = {
to?: SchemaUrlPath; to?: SchemaUrlPath;
target?: string;
unfolded?: boolean; unfolded?: boolean;
active?: boolean; active?: boolean;
@ -85,6 +87,7 @@ export interface Link {
className?: string; className?: string;
label?: string; label?: string;
to?: string; to?: string;
target?: string;
icon?: string; icon?: string;
active?: boolean; active?: boolean;
activeOn?: string; activeOn?: string;