From 0a7ca2fb6e5810df8a16c3cddf5421426313fee5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E5=98=89=E6=B6=B5?= Date: Tue, 30 Apr 2019 17:47:41 +0800 Subject: [PATCH] [new feature] Loading: add text-size prop --- docs/markdown/v2-progress-tracking.md | 1 + packages/checkbox/zh-CN.md | 2 +- packages/field/index.js | 6 ++--- packages/loading/en-US.md | 3 ++- packages/loading/index.tsx | 22 ++++++++++++++++--- .../test/__snapshots__/index.spec.js.snap | 3 +++ packages/loading/test/index.spec.js | 15 +++++++++++++ packages/loading/zh-CN.md | 3 ++- packages/radio/zh-CN.md | 2 +- packages/skeleton/index.tsx | 8 +------ packages/utils/index.ts | 6 +++++ 11 files changed, 53 insertions(+), 18 deletions(-) create mode 100644 packages/loading/test/__snapshots__/index.spec.js.snap create mode 100644 packages/loading/test/index.spec.js diff --git a/docs/markdown/v2-progress-tracking.md b/docs/markdown/v2-progress-tracking.md index 5cd18bee3..b3c287ef3 100644 --- a/docs/markdown/v2-progress-tracking.md +++ b/docs/markdown/v2-progress-tracking.md @@ -54,6 +54,7 @@ ## Loading - 新增`default`插槽 +- 新增`text-size`属性 ## NoticeBar diff --git a/packages/checkbox/zh-CN.md b/packages/checkbox/zh-CN.md index cbcf3935a..6724af47b 100644 --- a/packages/checkbox/zh-CN.md +++ b/packages/checkbox/zh-CN.md @@ -170,7 +170,7 @@ export default { |------|------|------| | change | 当绑定值变化时触发的事件 | 当前组件的值 | -### Checkbox Slots +### Checkbox Slot | 名称 | 说明 | slot-scope | |------|------|------| diff --git a/packages/field/index.js b/packages/field/index.js index 6054872c8..89be94df1 100644 --- a/packages/field/index.js +++ b/packages/field/index.js @@ -1,9 +1,8 @@ import Icon from '../icon'; import Cell from '../cell'; import { cellProps } from '../cell/shared'; -import { use, isObj, isDef, isIOS } from '../utils'; import { getRootScrollTop } from '../utils/scroll'; -import { isNumber } from '../utils/validate/number'; +import { use, isObj, isDef, isIOS, suffixPx } from '../utils'; const [sfc, bem] = use('field'); @@ -66,8 +65,7 @@ export default sfc({ labelStyle() { const { labelWidth } = this; if (labelWidth) { - const width = isNumber(String(labelWidth)) ? `${labelWidth}px` : labelWidth; - return { width }; + return { width: suffixPx(labelWidth) }; } } }, diff --git a/packages/loading/en-US.md b/packages/loading/en-US.md index 2c20631a9..0cc3f6ae8 100644 --- a/packages/loading/en-US.md +++ b/packages/loading/en-US.md @@ -35,7 +35,8 @@ Vue.use(Loading); |------|------|------|------| | color | Loading color | `String` | `#c9c9c9` | | | type | Can be set to `spinner` | `String` | `circular` | -| size | Size | `String` | `30px` | +| size | Icon size | `String` | `30px` | +| text-size | Text font size | `String | Number` | `14px` | ### Slot diff --git a/packages/loading/index.tsx b/packages/loading/index.tsx index f5ca6ab59..76535153c 100644 --- a/packages/loading/index.tsx +++ b/packages/loading/index.tsx @@ -1,4 +1,4 @@ -import { use } from '../utils'; +import { use, suffixPx } from '../utils'; import { inherit } from '../utils/functional'; // Types @@ -6,9 +6,10 @@ import { CreateElement, RenderContext } from 'vue/types'; import { DefaultSlots } from '../utils/use/sfc'; export type LoadingProps = { - size?: string; type: string; + size?: string; color: string; + textSize?: string | number; }; const [sfc, bem] = use('loading'); @@ -41,19 +42,34 @@ function Loading( ); + function Text() { + if (slots.default) { + const style = props.textSize && { + fontSize: suffixPx(props.textSize) + }; + + return ( + + {slots.default()} + + ); + } + } + return (
{Spin} {Circular} - {slots.default && {slots.default()}} + {Text()}
); } Loading.props = { size: String, + textSize: [String, Number], type: { type: String, default: 'circular' diff --git a/packages/loading/test/__snapshots__/index.spec.js.snap b/packages/loading/test/__snapshots__/index.spec.js.snap new file mode 100644 index 000000000..17965148b --- /dev/null +++ b/packages/loading/test/__snapshots__/index.spec.js.snap @@ -0,0 +1,3 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`text-size prop 1`] = `
Text
`; diff --git a/packages/loading/test/index.spec.js b/packages/loading/test/index.spec.js new file mode 100644 index 000000000..497f6b773 --- /dev/null +++ b/packages/loading/test/index.spec.js @@ -0,0 +1,15 @@ +import { mount } from '../../../test/utils'; +import Loading from '..'; + +test('text-size prop', () => { + const wrapper = mount(Loading, { + propsData: { + textSize: 20 + }, + scopedSlots: { + default: () => 'Text' + } + }); + + expect(wrapper).toMatchSnapshot(); +}); diff --git a/packages/loading/zh-CN.md b/packages/loading/zh-CN.md index 80fa009da..53c7fab3b 100644 --- a/packages/loading/zh-CN.md +++ b/packages/loading/zh-CN.md @@ -35,7 +35,8 @@ Vue.use(Loading); |------|------|------|------|------| | color | 颜色 | `String` | `#c9c9c9` | - | | type | 类型,可选值为 `spinner` | `String` | `circular` | - | -| size | 大小 | `String` | `30px` | - | +| size | 加载图标大小 | `String` | `30px` | - | +| text-size | 文字大小 | `String | Number` | `14px` | 2.0.0 | ### Slot diff --git a/packages/radio/zh-CN.md b/packages/radio/zh-CN.md index 95453932b..b5e63c585 100644 --- a/packages/radio/zh-CN.md +++ b/packages/radio/zh-CN.md @@ -122,7 +122,7 @@ export default { |------|------|------| | change | 当绑定值变化时触发的事件 | 当前选中项的 name | -### Radio Slots +### Radio Slot | 名称 | 说明 | slot-scope | |------|------|------| diff --git a/packages/skeleton/index.tsx b/packages/skeleton/index.tsx index b893b43db..d3da65cc6 100644 --- a/packages/skeleton/index.tsx +++ b/packages/skeleton/index.tsx @@ -1,6 +1,5 @@ -import { use } from '../utils'; +import { use, suffixPx } from '../utils'; import { inherit } from '../utils/functional'; -import { isNumber } from '../utils/validate/number'; // Types import { CreateElement, RenderContext } from 'vue/types'; @@ -22,11 +21,6 @@ const [sfc, bem] = use('skeleton'); const DEFAULT_ROW_WIDTH = '100%'; const DEFAULT_LAST_ROW_WIDTH = '60%'; -function suffixPx(value: string | number): string { - value = String(value); - return isNumber(value) ? `${value}px` : value; -} - function Skeleton( h: CreateElement, props: SkeletonProps, diff --git a/packages/utils/index.ts b/packages/utils/index.ts index 92df1662c..e6c061f61 100644 --- a/packages/utils/index.ts +++ b/packages/utils/index.ts @@ -1,4 +1,5 @@ import Vue from 'vue'; +import { isNumber } from './validate/number'; export { use } from './use'; @@ -48,3 +49,8 @@ export function range(num: number, min: number, max: number): number { export function isInDocument(element: HTMLElement): boolean { return document.body.contains(element); } + +export function suffixPx(value: string | number): string { + value = String(value); + return isNumber(value) ? `${value}px` : value; +}