Skip to content

Commit 8bfd7df

Browse files
committed
feat: add alter some new api
1 parent 5a59b80 commit 8bfd7df

File tree

7 files changed

+141
-23
lines changed

7 files changed

+141
-23
lines changed

doc/components/nDemoBlock/index.vue

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,7 @@
2727
class="demo-block-control"
2828
@click="showMeta"
2929
>
30-
<n-icon
31-
:name="iconName"
32-
/>
30+
<i :class="[iconName]" />
3331
<span v-show="hovering">{{ hoveringText }}</span>
3432
<!-- Todo -->
3533
<!-- <span
@@ -61,9 +59,9 @@ export default {
6159
computed: {
6260
iconName () {
6361
if (this.metaShow) {
64-
return 'icon-sort-up';
62+
return 'iconfont icon-sort-up';
6563
} else {
66-
return 'icon-sort-down';
64+
return 'iconfont icon-sort-down';
6765
}
6866
},
6967
hoveringText () {

doc/markdown/nAlert/en-US/index.md

Lines changed: 42 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,29 +8,32 @@ Alert component for feedback.
88
When you need to show alert messages to users.
99

1010
## Examples
11+
### Basic use
1112
:::demo
1213
```html
1314
<template>
1415
<div >
1516
<n-alert
16-
:show="show"
17+
v-model:show="show1"
1718
message="Message"
1819
type="info"
1920
/>
2021
<n-alert
21-
:show="show"
22+
v-model:show="show2"
2223
message="Message"
2324
type="success"
2425
/>
2526
<n-alert
26-
:show="show"
27+
v-model:show="show3"
2728
message="Message"
2829
type="warning"
30+
closable
2931
/>
3032
<n-alert
31-
:show="show"
33+
v-model:show="show4"
3234
message="Message"
3335
type="error"
36+
:showIcon="true"
3437
/>
3538
</div>
3639
</template>
@@ -39,7 +42,38 @@ When you need to show alert messages to users.
3942
export default {
4043
data: function () {
4144
return {
42-
show: true
45+
show1: true,
46+
show2: true,
47+
show3: true,
48+
show4: true,
49+
}
50+
}
51+
}
52+
</script>
53+
54+
```
55+
:::
56+
57+
### Custome define close
58+
:::demo
59+
```html
60+
<template>
61+
<div >
62+
<n-alert
63+
closable
64+
v-model:show="show"
65+
message="Message"
66+
type="info"
67+
close-text="Close now"
68+
/>
69+
</div>
70+
</template>
71+
72+
<script>
73+
export default {
74+
data: function () {
75+
return {
76+
show: true,
4377
}
4478
}
4579
}
@@ -53,5 +87,8 @@ export default {
5387
| Property | Description | Type | Default |
5488
| :--- | :--- | :--- | :--- |
5589
| show | Whether to show | Boolean | false |
90+
| closable | Whether to close | Boolean | false |
5691
| message | Content of Alert | String | |
5792
| type | Type of Alert styles, options:`info`,`success`,`warning`,`error` | String | info |
93+
| closeText | Custome define close text | String | |
94+
| showIcon | Whether show icon | Boolean | flase |

doc/markdown/nAlert/zh-CN/index.md

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
当某个页面需要向用户显示警告的信息时。
99

1010
## 代码演示
11+
### 基本用法
1112
:::demo
1213
```html
1314
<template>
@@ -26,11 +27,13 @@
2627
v-model:show="show3"
2728
message="Message"
2829
type="warning"
30+
closable
2931
/>
3032
<n-alert
3133
v-model:show="show4"
3234
message="Message"
3335
type="error"
36+
:showIcon="true"
3437
/>
3538
</div>
3639
</template>
@@ -51,10 +54,42 @@ export default {
5154
```
5255
:::
5356

57+
### 自定义关闭
58+
:::demo
59+
```html
60+
<template>
61+
<div >
62+
<n-alert
63+
closable
64+
v-model:show="show"
65+
message="Message"
66+
type="info"
67+
close-text="Close now"
68+
/>
69+
</div>
70+
</template>
71+
72+
<script>
73+
export default {
74+
data: function () {
75+
return {
76+
show: true,
77+
}
78+
}
79+
}
80+
</script>
81+
82+
```
83+
:::
84+
5485
## API
5586

5687
| 参数 | 说明 | 类型 | 默认值 |
5788
| :--- | :--- | :--- | :--- |
5889
| show | 是否展示 | Boolean | false |
90+
| closable | 是否可关闭 | Boolean | false |
5991
| message | 提示内容 | String | |
6092
| type | 提示类型,可选值`info`,`success`,`warning`,`error` | String | info |
93+
| closeText | 自定义关闭文案 | String | |
94+
| showIcon | 是否展示辅助性图标 | Boolean | flase |
95+

packages/n-alert/index.scss

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,12 @@
2121
margin-left: 10px;
2222
margin-right: 10px;
2323
}
24+
.close-text{
25+
color: rgba(0,0,0,.45);
26+
transition: color .3s;
27+
font-size: 12px;
28+
cursor: pointer;
29+
}
2430
.icon-info {
2531
color: #2196f3;
2632
cursor: pointer;

packages/n-alert/index.tsx

Lines changed: 26 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -8,41 +8,55 @@ const AlterProps = {
88
type: Boolean as PropType<false>,
99
default: false
1010
},
11+
closable: {
12+
type: Boolean as PropType<false>,
13+
default: false
14+
},
1115
type: {
1216
type: String as PropType<''>
1317
},
1418
message: {
1519
type: String as PropType<''>
20+
},
21+
closeText: {
22+
type: String as PropType<''>
23+
},
24+
showIcon: {
25+
type: Boolean as PropType<false>
1626
}
1727
};
1828

1929
const NAlert = defineComponent({
2030
name: 'NAlert',
2131
props: AlterProps,
32+
emits: ['update:show'],
2233
setup (props, { emit }: SetupContext) {
23-
// const { show, type, message } = toRefs(props);
24-
2534
const alertClass = () => {
2635
return classNames(['base-alert', props.type]);
2736
};
2837
const iconClass = classNames([`icon-${props.type}`]);
2938
const closeAlert = () => {
3039
emit('update:show', false);
3140
};
41+
const renderCloseContent = () => {
42+
return (props.closeText
43+
? <span class="close-text" onClick={closeAlert}>{props.closeText}</span>
44+
: <NIcon
45+
id="alertCloseIcon"
46+
name="icon-times"
47+
class={iconClass}
48+
onClick={closeAlert}
49+
/>);
50+
};
3251
return () => (
3352
props.show
3453
? <div class={alertClass()}>
35-
<div class="alert-content">
36-
<NIcon name={`icon-${props.type}`}/>
37-
<span class="message-text">{props.message }</span>
38-
<NIcon
39-
id="alertCloseIcon"
40-
name="icon-times"
41-
class={iconClass}
42-
onClick={closeAlert}
43-
/>
54+
<div class="alert-content">
55+
{props.showIcon && <NIcon name={`icon-${props.type}`} /> }
56+
<span class="message-text">{props.message}</span>
57+
{props.closable && renderCloseContent()}
58+
</div>
4459
</div>
45-
</div>
4660
: null
4761
);
4862
}

test/specs/__snapshots__/alter.spec.js.snap

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22

33
exports[`NAlter renders correctly 1`] = `
44
<div class="base-alert">
5-
<div class="alert-content"><i class="iconfont icon-undefined" name="icon-undefined"></i><span class="message-text"><!----></span><i class="iconfont icon-times icon-undefined" id="alertCloseIcon" name="icon-times"></i></div>
5+
<div class="alert-content">
6+
<!----><span class="message-text"><!----></span>
7+
<!---->
8+
</div>
69
</div>
710
`;

test/specs/alter.spec.js

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,4 +26,29 @@ describe('NAlter', () => {
2626
});
2727
expect(wrapper.text()).toBe('test');
2828
});
29+
it('render closeicon when the closable', () => {
30+
const wrapper = mount({
31+
render () {
32+
return <NAlter show={true} message={'test'} closable/>;
33+
}
34+
});
35+
expect(wrapper.find('.icon-times').exists()).toBe(true);
36+
});
37+
it('render closeText when the closeText is close', () => {
38+
const wrapper = mount({
39+
render () {
40+
return <NAlter show={true} message={'test'} closable closeText="close"/>;
41+
}
42+
});
43+
expect(wrapper.find('.close-text').exists()).toBe(true);
44+
});
45+
it('when click close icon, close this alter', async () => {
46+
const wrapper = mount({
47+
render () {
48+
return <NAlter show={true} message={'test'} closable/>;
49+
}
50+
});
51+
await wrapper.find('.icon-times').trigger('click');
52+
expect(wrapper.find('.base-alter').exists()).toBe(false);
53+
});
2954
});

0 commit comments

Comments
 (0)