Skip to content

Commit bc162aa

Browse files
Wesley-0808github-actions[bot]
authored andcommitted
feat(Watermark): support layout API (#3726)
* feat: support layout * chore: update snapshot --------- Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
1 parent c7cada9 commit bc162aa

File tree

9 files changed

+99
-1384
lines changed

9 files changed

+99
-1384
lines changed

src/watermark/_example/layout.vue

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
<template>
2+
<div>
3+
<h3>横平竖直的水印</h3>
4+
<t-watermark
5+
:watermark-content="{
6+
text: '文字水印',
7+
}"
8+
:width="120"
9+
:height="60"
10+
:y="120"
11+
:x="80"
12+
>
13+
<div style="height: 300px" />
14+
</t-watermark>
15+
16+
<h3>错位的水印</h3>
17+
<t-watermark
18+
:watermark-content="{
19+
text: '文字水印',
20+
}"
21+
:width="120"
22+
:height="60"
23+
:y="120"
24+
:x="80"
25+
layout="hexagonal"
26+
>
27+
<div style="height: 300px" />
28+
</t-watermark>
29+
</div>
30+
</template>

src/watermark/props.ts

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,15 @@ export default {
3030
type: Boolean,
3131
default: true,
3232
},
33+
/** 水印的布局方式,rectangular:矩形,即横平竖直的水印;hexagonal:六边形,即错位的水印 */
34+
layout: {
35+
type: String as PropType<TdWatermarkProps['layout']>,
36+
default: 'rectangular' as TdWatermarkProps['layout'],
37+
validator(val: TdWatermarkProps['layout']): boolean {
38+
if (!val) return true;
39+
return ['rectangular', 'hexagonal'].includes(val);
40+
},
41+
},
3342
/** 行间距,只作用在多行(`content` 配置为数组)情况下 */
3443
lineSpace: {
3544
type: Number,
@@ -46,7 +55,7 @@ export default {
4655
offset: {
4756
type: Array as PropType<TdWatermarkProps['offset']>,
4857
},
49-
/** 水印是否可被删除,默认会开启水印节点防删 */
58+
/** 水印是否可被删除 */
5059
removable: {
5160
type: Boolean,
5261
default: true,

src/watermark/type.ts

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,11 @@ export interface TdWatermarkProps {
2929
* @default true
3030
*/
3131
isRepeat?: boolean;
32+
/**
33+
* 水印的布局方式,rectangular:矩形,即横平竖直的水印;hexagonal:六边形,即错位的水印
34+
* @default rectangular
35+
*/
36+
layout?: 'rectangular' | 'hexagonal';
3237
/**
3338
* 行间距,只作用在多行(`content` 配置为数组)情况下
3439
* @default 16
@@ -49,7 +54,7 @@ export interface TdWatermarkProps {
4954
*/
5055
offset?: Array<number>;
5156
/**
52-
* 水印是否可被删除,默认会开启水印节点防删
57+
* 水印是否可被删除
5358
* @default true
5459
*/
5560
removable?: boolean;
@@ -86,6 +91,11 @@ export interface WatermarkText {
8691
* @default rgba(0,0,0,0.1)
8792
*/
8893
fontColor?: string;
94+
/**
95+
* 水印文本文字字体
96+
* @default ''
97+
*/
98+
fontFamily?: string;
8999
/**
90100
* 水印文本文字大小
91101
* @default 16

src/watermark/watermark.en-US.md

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
:: BASE_DOC ::
22

33
## API
4+
45
### Watermark Props
56

67
name | type | default | description | required
@@ -10,6 +11,7 @@ content | String / Slot / Function | - | Typescript:`string \| TNode`。[see m
1011
default | String / Slot / Function | - | Typescript:`string \| TNode`[see more ts definition](https://github.com/Tencent/tdesign-vue/blob/develop/src/common.ts) | N
1112
height | Number | - | \- | N
1213
isRepeat | Boolean | true | \- | N
14+
layout | String | rectangular | options: rectangular/hexagonal | N
1315
lineSpace | Number | 16 | \- | N
1416
movable | Boolean | false | \- | N
1517
moveInterval | Number | 3000 | \- | N
@@ -27,8 +29,9 @@ zIndex | Number | - | \- | N
2729
name | type | default | description | required
2830
-- | -- | -- | -- | --
2931
fontColor | String | rgba(0,0,0,0.1) | \- | N
32+
fontFamily | String | - | font-family configuration for watermark text | N
3033
fontSize | Number | 16 | \- | N
31-
fontWeight | String | normal | optionsnormal/lighter/bold/bolder | N
34+
fontWeight | String | normal | options: normal/lighter/bold/bolder | N
3235
text | String | - | \- | N
3336

3437
### WatermarkImage

src/watermark/watermark.md

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,22 @@
11
:: BASE_DOC ::
22

33
## API
4+
45
### Watermark Props
56

6-
名称 | 类型 | 默认值 | 说明 | 必传
7+
名称 | 类型 | 默认值 | 描述 | 必传
78
-- | -- | -- | -- | --
89
alpha | Number | 1 | 水印整体透明度,取值范围 [0-1] | N
910
content | String / Slot / Function | - | 水印所覆盖的内容节点。TS 类型:`string \| TNode`[通用类型定义](https://github.com/Tencent/tdesign-vue/blob/develop/src/common.ts) | N
1011
default | String / Slot / Function | - | 水印所覆盖的内容节点,同 `content`。TS 类型:`string \| TNode`[通用类型定义](https://github.com/Tencent/tdesign-vue/blob/develop/src/common.ts) | N
1112
height | Number | - | 水印高度 | N
1213
isRepeat | Boolean | true | 水印是否重复出现 | N
14+
layout | String | rectangular | 水印的布局方式,rectangular:矩形,即横平竖直的水印;hexagonal:六边形,即错位的水印。可选项:rectangular/hexagonal | N
1315
lineSpace | Number | 16 | 行间距,只作用在多行(`content` 配置为数组)情况下 | N
1416
movable | Boolean | false | 水印是否可移动 | N
1517
moveInterval | Number | 3000 | 水印发生运动位移的间隙,单位:毫秒 | N
1618
offset | Array | - | 水印在画布上绘制的水平和垂直偏移量,正常情况下水印绘制在中间位置,即 `offset = [gapX / 2, gapY / 2]`。TS 类型:`Array<number>` | N
17-
removable | Boolean | true | 水印是否可被删除,默认会开启水印节点防删 | N
19+
removable | Boolean | true | 水印是否可被删除 | N
1820
rotate | Number | -22 | 水印旋转的角度,单位 ° | N
1921
watermarkContent | Object / Array | - | 水印内容,需要显示多行情况下可配置为数组。TS 类型:`WatermarkText\|WatermarkImage\|Array<WatermarkText\|WatermarkImage>` | N
2022
width | Number | - | 水印宽度 | N
@@ -24,16 +26,17 @@ zIndex | Number | - | 水印元素的 `z-index`,默认值写在 CSS 中 | N
2426

2527
### WatermarkText
2628

27-
名称 | 类型 | 默认值 | 说明 | 必传
29+
名称 | 类型 | 默认值 | 描述 | 必传
2830
-- | -- | -- | -- | --
2931
fontColor | String | rgba(0,0,0,0.1) | 水印文本文字颜色 | N
32+
fontFamily | String | - | 水印文本文字字体 | N
3033
fontSize | Number | 16 | 水印文本文字大小 | N
3134
fontWeight | String | normal | 水印文本文字粗细。可选项:normal/lighter/bold/bolder | N
3235
text | String | - | 水印文本内容 | N
3336

3437
### WatermarkImage
3538

36-
名称 | 类型 | 默认值 | 说明 | 必传
39+
名称 | 类型 | 默认值 | 描述 | 必传
3740
-- | -- | -- | -- | --
3841
isGrayscale | Boolean | false | 水印图片是否需要灰阶显示 | N
3942
url | String | - | 水印图片源地址,为了显示清楚,建议导出 2 倍或 3 倍图 | N

src/watermark/watermark.tsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ export default defineComponent({
4848
offsetLeft: offsetLeft.value,
4949
offsetTop: offsetTop.value,
5050
fontColor: fontColor.value,
51+
layout: props.layout,
5152
}));
5253
const removeWaterMark = () => {
5354
if (!watermarkContentRef.value) return;
@@ -56,7 +57,7 @@ export default defineComponent({
5657
};
5758

5859
const injectWaterMark = () => {
59-
generateBase64Url(bgImageOptions.value, (base64Url) => {
60+
generateBase64Url(bgImageOptions.value, (base64Url, backgroundSize) => {
6061
removeWaterMark();
6162

6263
backgroundImage.value = base64Url;
@@ -70,7 +71,7 @@ export default defineComponent({
7071
bottom: 0,
7172
width: '100%',
7273
height: '100%',
73-
backgroundSize: `${gapX.value + props.width}px`,
74+
backgroundSize: `${backgroundSize?.width || gapX.value + props.width}px`,
7475
pointerEvents: 'none',
7576
backgroundRepeat: backgroundRepeat.value,
7677
backgroundImage: `url('${backgroundImage.value}')`,

test/snap/__snapshots__/csr.test.js.snap

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149742,6 +149742,39 @@ exports[`csr snapshot test > csr test ./src/watermark/_example/image.vue 1`] = `
149742149742
</div>
149743149743
`;
149744149744

149745+
exports[`csr snapshot test > csr test ./src/watermark/_example/layout.vue 1`] = `
149746+
<div>
149747+
<h3>
149748+
横平竖直的水印
149749+
</h3>
149750+
<div
149751+
class="t-watermark"
149752+
style="position: relative; overflow: hidden; width: 100%;"
149753+
>
149754+
<div
149755+
style="height: 300px;"
149756+
/>
149757+
<div
149758+
style="position: absolute; left: 0px; right: 0px; top: 0px; bottom: 0px; width: 100%; height: 100%; background-size: 200px; pointer-events: none; background-repeat: repeat; background-image: url(""); animation: none;"
149759+
/>
149760+
</div>
149761+
<h3>
149762+
错位的水印
149763+
</h3>
149764+
<div
149765+
class="t-watermark"
149766+
style="position: relative; overflow: hidden; width: 100%;"
149767+
>
149768+
<div
149769+
style="height: 300px;"
149770+
/>
149771+
<div
149772+
style="position: absolute; left: 0px; right: 0px; top: 0px; bottom: 0px; width: 100%; height: 100%; background-size: 200px; pointer-events: none; background-repeat: repeat; background-image: url(""); animation: none;"
149773+
/>
149774+
</div>
149775+
</div>
149776+
`;
149777+
149745149778
exports[`csr snapshot test > csr test ./src/watermark/_example/movingImage.vue 1`] = `
149746149779
<div
149747149780
class="t-watermark"

0 commit comments

Comments
 (0)