Skip to content

Commit 7dbf5ed

Browse files
committed
feat: add config-provider
1 parent 05deb53 commit 7dbf5ed

File tree

9 files changed

+98
-0
lines changed

9 files changed

+98
-0
lines changed
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
<script>
2+
import CN from '../index.zh-CN.md'
3+
import US from '../index.en-US.md'
4+
5+
const md = {
6+
cn: `# ConfigProvider 全局化配置
7+
为组件提供统一的全局化配置。`,
8+
us: `# ConfigProvider
9+
\`ConfigProvider\` provides a uniform configuration support for components.
10+
`,
11+
}
12+
export default {
13+
category: 'Components',
14+
subtitle: '全局化配置',
15+
cols: 1,
16+
type: '其他',
17+
title: 'ConfigProvider',
18+
render () {
19+
return (
20+
<div>
21+
<md cn={md.cn} us={md.us}/>
22+
<api>
23+
<template slot='cn'>
24+
<CN/>
25+
</template>
26+
<US/>
27+
</api>
28+
</div>
29+
)
30+
},
31+
}
32+
</script>
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
2+
## Usage
3+
4+
This component provides a configuration to all Vue components underneath itself via the [provide / inject](https://vuejs.org/v2/api/#provide-inject), In the render tree all components will have access to the provided config.
5+
6+
````html
7+
<a-config-provider :getPopupContainer="getPopupContainer">
8+
<app />
9+
</a-config-provider>
10+
````
11+
12+
## API
13+
14+
| Property | Description | Type | Default |
15+
| -------- | ----------- | ---- | ------- |
16+
| getPopupContainer | to set the container of the popup element. The default is to create a `div` element in `body`. | Function(triggerNode) | `() => document.body` |

components/config-provider/index.jsx

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
2+
import PropTypes from '../_util/vue-types'
3+
4+
const ConfigProvider = {
5+
name: 'AConfigProvider',
6+
props: {
7+
getPopupContainer: PropTypes.func,
8+
},
9+
provide () {
10+
return {
11+
configProvider: this.$props,
12+
}
13+
},
14+
render () {
15+
return this.$slots.default ? this.$slots.default[0] : null
16+
},
17+
}
18+
19+
/* istanbul ignore next */
20+
ConfigProvider.install = function (Vue) {
21+
Vue.component(ConfigProvider.name, ConfigProvider)
22+
}
23+
24+
export default ConfigProvider
25+
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
## 使用
2+
3+
ConfigProvider 使用 Vue 的 [provide / inject](https://vuejs.org/v2/api/#provide-inject) 特性,只需在应用外围包裹一次即可全局生效。
4+
5+
````html
6+
<a-config-provider :getPopupContainer="getPopupContainer">
7+
<app />
8+
</a-config-provider>
9+
````
10+
11+
## API
12+
13+
| 参数 | 说明 | 类型 | 默认值 |
14+
| --- | --- | --- | --- |
15+
| getPopupContainer | 弹出框(Select, Tooltip, Menu 等等)渲染父节点,默认渲染到 body 上。 | Function(triggerNode) | () => document.body |
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
import './index.less';
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
// placeholder
2+
@import '../../style/themes/default';

components/index.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,8 @@ import { default as Skeleton } from './skeleton'
126126

127127
import { default as Comment } from './comment'
128128

129+
import { default as ConfigProvider } from './config-provider'
130+
129131
const components = [
130132
Affix,
131133
Anchor,
@@ -180,6 +182,7 @@ const components = [
180182
Drawer,
181183
Skeleton,
182184
Comment,
185+
ConfigProvider,
183186
]
184187

185188
const install = function (Vue) {
@@ -259,6 +262,7 @@ export {
259262
Drawer,
260263
Skeleton,
261264
Comment,
265+
ConfigProvider,
262266
}
263267

264268
export default {

components/style.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,3 +52,4 @@ import './tree-select/style'
5252
import './drawer/style'
5353
import './skeleton/style'
5454
import './comment/style'
55+
import './config-provider/style'

site/components.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ import {
5757
Drawer,
5858
Skeleton,
5959
Comment,
60+
ConfigProvider,
6061
} from 'ant-design-vue'
6162

6263
Vue.prototype.$message = message
@@ -121,6 +122,7 @@ Vue.use(Tooltip)
121122
Vue.use(Upload)
122123
Vue.use(Skeleton)
123124
Vue.use(Comment)
125+
Vue.use(ConfigProvider)
124126

125127
/* v1.1.2 registration methods */
126128
// Vue.component(Affix.name, Affix) // a-affix

0 commit comments

Comments
 (0)