Skip to content

Commit 8a005ab

Browse files
committed
refactor(element-selection)!: rename the linked property to dynamic and disable it by default
ref #1175
1 parent 1829c23 commit 8a005ab

File tree

11 files changed

+64
-64
lines changed

11 files changed

+64
-64
lines changed

docs/.vitepress/components/CropperPlayground.vue

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -890,6 +890,15 @@
890890
step="0.1"
891891
>
892892
</li>
893+
<li>
894+
<label for="selectionLinked">dynamic</label>
895+
<input
896+
id="selectionLinked"
897+
v-model="selection.dynamic"
898+
type="checkbox"
899+
name="dynamic"
900+
>
901+
</li>
893902
<li>
894903
<label for="selectionMovable">movable</label>
895904
<input
@@ -953,15 +962,6 @@
953962
name="precise"
954963
>
955964
</li>
956-
<li>
957-
<label for="selectionLinked">linked</label>
958-
<input
959-
id="selectionLinked"
960-
v-model="selection.linked"
961-
type="checkbox"
962-
name="linked"
963-
>
964-
</li>
965965
<li>
966966
<button
967967
type="button"
@@ -1611,7 +1611,7 @@
16111611
:keyboard="selection.keyboard"
16121612
:outlined="selection.outlined"
16131613
:precise="selection.precise"
1614-
:linked="selection.linked"
1614+
:dynamic="selection.dynamic"
16151615
@change="onSelectionChange"
16161616
>
16171617
<cropper-grid
@@ -1815,14 +1815,14 @@ export default {
18151815
aspectRatio: undefined,
18161816
initialAspectRatio: undefined,
18171817
initialCoverage: 0.5,
1818+
dynamic: false,
18181819
movable: true,
18191820
resizable: true,
18201821
zoomable: true,
18211822
multiple: false,
18221823
keyboard: false,
18231824
outlined: false,
18241825
precise: false,
1825-
linked: true,
18261826
},
18271827
grid: {
18281828
hidden: false,

docs/api/cropper-selection.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -142,14 +142,14 @@ Inherits properties from its parent, [`CropperElement`](cropper-element.html), a
142142
| aspectRatio | `number` | `NaN` | - | Indicates the aspect ratio of the selection, must a positive number. |
143143
| initialAspectRatio | `number` | `NaN` | - | Indicates the initial aspect ratio of the selection, must a positive number. |
144144
| initialCoverage | `number` | `NaN` | - | Indicates the initial coverage of the selection, must a positive number between `0` (0%) and `1` (100%). |
145+
| dynamic | `boolean` | `false` | - | Indicates whether this selection is dynamic and changes as the image changes. |
145146
| movable | `boolean` | `false` | - | Indicates whether this element is movable. |
146147
| resizable | `boolean` | `false` | - | Indicates whether this element is resizable. |
147148
| zoomable | `boolean` | `false` | - | Indicates whether this element is zoomable. |
148149
| multiple | `boolean` | `false` | - | Indicates whether multiple selections is supported. |
149150
| keyboard | `boolean` | `false` | - | Indicates whether keyboard control is supported. |
150151
| outlined | `boolean` | `false` | - | Indicates whether show the outlined or not. |
151152
| precise | `boolean` | `false` | - | Indicates whether reserve the precise of the `x`, `y`, `width`, and `height` properties or not. |
152-
| linked | `boolean` | `false` | - | Indicates whether to link with the cropper image. |
153153

154154
The supported keyboard keys:
155155

docs/api/index.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,9 +42,9 @@ The default template for the Cropper:
4242
<cropper-image></cropper-image>
4343
<cropper-shade hidden></cropper-shade>
4444
<cropper-handle action="select" plain></cropper-handle>
45-
<cropper-selection initial-coverage="0.5" linked movable resizable zoomable>
45+
<cropper-selection initial-coverage="0.5" movable resizable zoomable>
4646
<cropper-grid role="grid" bordered covered></cropper-grid>
47-
<cropper-crosshair theme-color="rgba(238, 238, 238, 0.5)" centered></cropper-crosshair>
47+
<cropper-crosshair centered></cropper-crosshair>
4848
<cropper-handle action="move" theme-color="rgba(255, 255, 255, 0.35)"></cropper-handle>
4949
<cropper-handle action="n-resize"></cropper-handle>
5050
<cropper-handle action="e-resize"></cropper-handle>

docs/guide.md

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ import 'cropperjs';
9191
<cropper-image src="/cropperjs/v2/picture.jpg" alt="Picture" rotatable scalable skewable translatable></cropper-image>
9292
<cropper-shade hidden></cropper-shade>
9393
<cropper-handle action="select" plain></cropper-handle>
94-
<cropper-selection initial-coverage="0.5" linked movable resizable zoomable>
94+
<cropper-selection initial-coverage="0.5" movable resizable zoomable>
9595
<cropper-grid role="grid" covered></cropper-grid>
9696
<cropper-crosshair centered></cropper-crosshair>
9797
<cropper-handle action="move" theme-color="rgba(255, 255, 255, 0.35)"></cropper-handle>
@@ -141,17 +141,17 @@ Cropper.js contains a series of [npm](https://www.npmjs.com/) packages:
141141
| Package | Version | Description |
142142
| --- | --- | --- |
143143
| `cropperjs` | [![Version](https://img.shields.io/npm/v/cropperjs/next)](https://www.npmjs.com/package/cropperjs/v/next) | The all-in-one package. |
144-
| `@cropper/element` | [![Version](https://img.shields.io/npm/v/@cropper/element)](https://www.npmjs.com/package/@cropper/element) | An abstract class for constructing Cropper elements. |
145-
| `@cropper/element-canvas` | [![Version](https://img.shields.io/npm/v/@cropper/element-canvas)](https://www.npmjs.com/package/@cropper/element-canvas) | A custom canvas element for the Cropper. |
146-
| `@cropper/element-image` | [![Version](https://img.shields.io/npm/v/@cropper/element-image)](https://www.npmjs.com/package/@cropper/element-image) | A custom image element for the Cropper. |
147-
| `@cropper/element-shade` | [![Version](https://img.shields.io/npm/v/@cropper/element-shade)](https://www.npmjs.com/package/@cropper/element-shade) | A custom shade element for the Cropper. |
148-
| `@cropper/element-handle` | [![Version](https://img.shields.io/npm/v/@cropper/element-handle)](https://www.npmjs.com/package/@cropper/element-handle) | A custom handle element for the Cropper. |
149-
| `@cropper/element-selection` | [![Version](https://img.shields.io/npm/v/@cropper/element-selection)](https://www.npmjs.com/package/@cropper/element-selection) | A custom selection element for the Cropper. |
150-
| `@cropper/element-grid` | [![Version](https://img.shields.io/npm/v/@cropper/element-grid)](https://www.npmjs.com/package/@cropper/element-grid) | A custom grid element for the Cropper. |
151-
| `@cropper/element-crosshair` | [![Version](https://img.shields.io/npm/v/@cropper/element-crosshair)](https://www.npmjs.com/package/@cropper/element-crosshair) | A custom crosshair element for the Cropper. |
152-
| `@cropper/element-viewer` | [![Version](https://img.shields.io/npm/v/@cropper/element-viewer)](https://www.npmjs.com/package/@cropper/element-viewer) | A custom viewer element for the Cropper. |
153-
| `@cropper/elements` | [![Version](https://img.shields.io/npm/v/@cropper/elements)](https://www.npmjs.com/package/@cropper/elements) | A series of custom elements for the Cropper. |
154-
| `@cropper/utils` | [![Version](https://img.shields.io/npm/v/@cropper/utils)](https://www.npmjs.com/package/@cropper/utils) | A series of common constants and utility functions for Cropper. |
144+
| `@cropper/element` | [![Version](https://img.shields.io/npm/v/@cropper/element/next)](https://www.npmjs.com/package/@cropper/element) | An abstract class for constructing Cropper elements. |
145+
| `@cropper/element-canvas` | [![Version](https://img.shields.io/npm/v/@cropper/element-canvas/next)](https://www.npmjs.com/package/@cropper/element-canvas) | A custom canvas element for the Cropper. |
146+
| `@cropper/element-image` | [![Version](https://img.shields.io/npm/v/@cropper/element-image/next)](https://www.npmjs.com/package/@cropper/element-image) | A custom image element for the Cropper. |
147+
| `@cropper/element-shade` | [![Version](https://img.shields.io/npm/v/@cropper/element-shade/next)](https://www.npmjs.com/package/@cropper/element-shade) | A custom shade element for the Cropper. |
148+
| `@cropper/element-handle` | [![Version](https://img.shields.io/npm/v/@cropper/element-handle/next)](https://www.npmjs.com/package/@cropper/element-handle) | A custom handle element for the Cropper. |
149+
| `@cropper/element-selection` | [![Version](https://img.shields.io/npm/v/@cropper/element-selection/next)](https://www.npmjs.com/package/@cropper/element-selection) | A custom selection element for the Cropper. |
150+
| `@cropper/element-grid` | [![Version](https://img.shields.io/npm/v/@cropper/element-grid/next)](https://www.npmjs.com/package/@cropper/element-grid) | A custom grid element for the Cropper. |
151+
| `@cropper/element-crosshair` | [![Version](https://img.shields.io/npm/v/@cropper/element-crosshair/next)](https://www.npmjs.com/package/@cropper/element-crosshair) | A custom crosshair element for the Cropper. |
152+
| `@cropper/element-viewer` | [![Version](https://img.shields.io/npm/v/@cropper/element-viewer/next)](https://www.npmjs.com/package/@cropper/element-viewer) | A custom viewer element for the Cropper. |
153+
| `@cropper/elements` | [![Version](https://img.shields.io/npm/v/@cropper/elements/next)](https://www.npmjs.com/package/@cropper/elements) | A series of custom elements for the Cropper. |
154+
| `@cropper/utils` | [![Version](https://img.shields.io/npm/v/@cropper/utils/next)](https://www.npmjs.com/package/@cropper/utils) | A series of common constants and utility functions for Cropper. |
155155

156156
## Interfaces
157157

docs/zh/api/cropper-selection.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -142,14 +142,14 @@
142142
| aspectRatio | `number` | `NaN` | - | 指示选区的纵横比,必须是正数。 |
143143
| initialAspectRatio | `number` | `NaN` | - | 指示选区的初始长宽比,必须一个正数。 |
144144
| initialCoverage | `number` | `NaN` | - | 指示选区的初始覆盖范围,必须是在 `0` (0%)和 `1` (100%)之间的正数。 |
145+
| dynamic | `boolean` | `false` | - | 指示此选区是否是动态的,以及是否随着图像的变化而变化。 |
145146
| movable | `boolean` | `false` | - | 指示此元素是否可移动。 |
146147
| resizable | `boolean` | `false` | - | 指示此元素是否可调整大小。 |
147148
| zoomable | `boolean` | `false` | - | 指示此元素是否可缩放。 |
148149
| multiple | `boolean` | `false` | - | 指示是否支持多选区。 |
149150
| keyboard | `boolean` | `false` | - | 指示是否支持键盘控制。 |
150151
| outlined | `boolean` | `false` | - | 指示是否显示轮廓线。 |
151152
| precise | `boolean` | `false` | - | 指示是否保留 `x``y``width``height` 属性的精确值。 |
152-
| linked | `boolean` | `false` | - | 指示是否与图片联动。 |
153153

154154
支持的键盘键:
155155

docs/zh/api/index.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,9 +42,9 @@ Cropper 的默认模板:
4242
<cropper-image></cropper-image>
4343
<cropper-shade hidden></cropper-shade>
4444
<cropper-handle action="select" plain></cropper-handle>
45-
<cropper-selection initial-coverage="0.5" linked movable resizable zoomable>
45+
<cropper-selection initial-coverage="0.5" movable resizable zoomable>
4646
<cropper-grid role="grid" bordered covered></cropper-grid>
47-
<cropper-crosshair theme-color="rgba(238, 238, 238, 0.5)" centered></cropper-crosshair>
47+
<cropper-crosshair centered></cropper-crosshair>
4848
<cropper-handle action="move" theme-color="rgba(255, 255, 255, 0.35)"></cropper-handle>
4949
<cropper-handle action="n-resize"></cropper-handle>
5050
<cropper-handle action="e-resize"></cropper-handle>

docs/zh/guide.md

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ import 'cropperjs';
9191
<cropper-image src="/cropperjs/v2/picture.jpg" alt="Picture" rotatable scalable skewable translatable></cropper-image>
9292
<cropper-shade hidden></cropper-shade>
9393
<cropper-handle action="select" plain></cropper-handle>
94-
<cropper-selection initial-coverage="0.5" linked movable resizable zoomable>
94+
<cropper-selection initial-coverage="0.5" movable resizable zoomable>
9595
<cropper-grid role="grid" covered></cropper-grid>
9696
<cropper-crosshair centered></cropper-crosshair>
9797
<cropper-handle action="move" theme-color="rgba(255, 255, 255, 0.35)"></cropper-handle>
@@ -141,17 +141,17 @@ Cropper.js 包含一系列 [npm](https://www.npmjs.com/) 包:
141141
| 安装包名称 | 版本 | 描述 |
142142
| --- | --- | --- |
143143
| `cropperjs` | [![Version](https://img.shields.io/npm/v/cropperjs/next)](https://www.npmjs.com/package/cropperjs/v/next) | 完整包。 |
144-
| `@cropper/element` | [![Version](https://img.shields.io/npm/v/@cropper/element)](https://www.npmjs.com/package/@cropper/element) | 用于构造 Cropper 元素的抽象类。 |
145-
| `@cropper/element-canvas` | [![Version](https://img.shields.io/npm/v/@cropper/element-canvas)](https://www.npmjs.com/package/@cropper/element-canvas) | Cropper 的自定义画布元素。 |
146-
| `@cropper/element-image` | [![Version](https://img.shields.io/npm/v/@cropper/element-image)](https://www.npmjs.com/package/@cropper/element-image) | Cropper 的自定义图像元素。 |
147-
| `@cropper/element-shade` | [![Version](https://img.shields.io/npm/v/@cropper/element-shade)](https://www.npmjs.com/package/@cropper/element-shade) | Cropper 的自定义阴影元素。 |
148-
| `@cropper/element-handle` | [![Version](https://img.shields.io/npm/v/@cropper/element-handle)](https://www.npmjs.com/package/@cropper/element-handle) | Cropper 的自定义手柄元素。 |
149-
| `@cropper/element-selection` | [![Version](https://img.shields.io/npm/v/@cropper/element-selection)](https://www.npmjs.com/package/@cropper/element-selection) | Cropper 的自定义选区元素。 |
150-
| `@cropper/element-grid` | [![Version](https://img.shields.io/npm/v/@cropper/element-grid)](https://www.npmjs.com/package/@cropper/element-grid) | Cropper 的自定义网格元素。 |
151-
| `@cropper/element-crosshair` | [![Version](https://img.shields.io/npm/v/@cropper/element-crosshair)](https://www.npmjs.com/package/@cropper/element-crosshair) | Cropper 的自定义十字准线元素。 |
152-
| `@cropper/element-viewer` | [![Version](https://img.shields.io/npm/v/@cropper/element-viewer)](https://www.npmjs.com/package/@cropper/element-viewer) | Cropper 的自定义查看器元素。 |
153-
| `@cropper/elements` | [![Version](https://img.shields.io/npm/v/@cropper/elements)](https://www.npmjs.com/package/@cropper/elements) | Cropper 的一系列自定义元素。 |
154-
| `@cropper/utils` | [![Version](https://img.shields.io/npm/v/@cropper/utils)](https://www.npmjs.com/package/@cropper/utils) | Cropper 的一系列常用常量和实用函数。 |
144+
| `@cropper/element` | [![Version](https://img.shields.io/npm/v/@cropper/element/next)](https://www.npmjs.com/package/@cropper/element) | 用于构造 Cropper 元素的抽象类。 |
145+
| `@cropper/element-canvas` | [![Version](https://img.shields.io/npm/v/@cropper/element-canvas/next)](https://www.npmjs.com/package/@cropper/element-canvas) | Cropper 的自定义画布元素。 |
146+
| `@cropper/element-image` | [![Version](https://img.shields.io/npm/v/@cropper/element-image/next)](https://www.npmjs.com/package/@cropper/element-image) | Cropper 的自定义图像元素。 |
147+
| `@cropper/element-shade` | [![Version](https://img.shields.io/npm/v/@cropper/element-shade/next)](https://www.npmjs.com/package/@cropper/element-shade) | Cropper 的自定义阴影元素。 |
148+
| `@cropper/element-handle` | [![Version](https://img.shields.io/npm/v/@cropper/element-handle/next)](https://www.npmjs.com/package/@cropper/element-handle) | Cropper 的自定义手柄元素。 |
149+
| `@cropper/element-selection` | [![Version](https://img.shields.io/npm/v/@cropper/element-selection/next)](https://www.npmjs.com/package/@cropper/element-selection) | Cropper 的自定义选区元素。 |
150+
| `@cropper/element-grid` | [![Version](https://img.shields.io/npm/v/@cropper/element-grid/next)](https://www.npmjs.com/package/@cropper/element-grid) | Cropper 的自定义网格元素。 |
151+
| `@cropper/element-crosshair` | [![Version](https://img.shields.io/npm/v/@cropper/element-crosshair/next)](https://www.npmjs.com/package/@cropper/element-crosshair) | Cropper 的自定义十字准线元素。 |
152+
| `@cropper/element-viewer` | [![Version](https://img.shields.io/npm/v/@cropper/element-viewer/next)](https://www.npmjs.com/package/@cropper/element-viewer) | Cropper 的自定义查看器元素。 |
153+
| `@cropper/elements` | [![Version](https://img.shields.io/npm/v/@cropper/elements/next)](https://www.npmjs.com/package/@cropper/elements) | Cropper 的一系列自定义元素。 |
154+
| `@cropper/utils` | [![Version](https://img.shields.io/npm/v/@cropper/utils/next)](https://www.npmjs.com/package/@cropper/utils) | Cropper 的一系列常用常量和实用函数。 |
155155

156156
## 接口
157157

packages/cropperjs/src/template.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ export default (
33
+ '<cropper-image rotatable scalable skewable translatable></cropper-image>'
44
+ '<cropper-shade hidden></cropper-shade>'
55
+ '<cropper-handle action="select" plain></cropper-handle>'
6-
+ '<cropper-selection initial-coverage="0.5" linked movable resizable zoomable>'
6+
+ '<cropper-selection initial-coverage="0.5" movable resizable zoomable>'
77
+ '<cropper-grid role="grid" bordered covered></cropper-grid>'
88
+ '<cropper-crosshair centered></cropper-crosshair>'
99
+ '<cropper-handle action="move" theme-color="rgba(255, 255, 255, 0.35)"></cropper-handle>'

packages/element-image/src/index.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -233,7 +233,7 @@ export default class CropperImage extends CropperElement {
233233
$selection = $canvas.querySelector(`${this.$getTagNameOf(CROPPER_SELECTION)}[active]`);
234234
}
235235

236-
if (!$selection || $selection.hidden || !$selection.movable || $selection.linked
236+
if (!$selection || $selection.hidden || !$selection.movable || $selection.dynamic
237237
|| !(this.$actionStartTarget && $selection.contains(this.$actionStartTarget as Node))
238238
) {
239239
this.$move(detail.endX - detail.startX, detail.endY - detail.startY);
@@ -264,7 +264,7 @@ export default class CropperImage extends CropperElement {
264264
this.$getTagNameOf(CROPPER_SELECTION),
265265
);
266266

267-
if (!$selection || $selection.linked) {
267+
if (!$selection || $selection.dynamic) {
268268
const { x, y } = this.getBoundingClientRect();
269269

270270
this.$zoom(

packages/element-selection/src/index.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,8 @@ export default class CropperSelection extends CropperElement {
8383

8484
active = false;
8585

86+
dynamic = false;
87+
8688
movable = false;
8789

8890
resizable = false;
@@ -97,8 +99,6 @@ export default class CropperSelection extends CropperElement {
9799

98100
precise = false;
99101

100-
linked = false;
101-
102102
protected set $canvas(element: CropperCanvas) {
103103
canvasCache.set(this, element);
104104
}
@@ -111,11 +111,11 @@ export default class CropperSelection extends CropperElement {
111111
return super.observedAttributes.concat([
112112
'active',
113113
'aspect-ratio',
114+
'dynamic',
114115
'height',
115116
'initial-aspect-ratio',
116117
'initial-coverage',
117118
'keyboard',
118-
'linked',
119119
'movable',
120120
'multiple',
121121
'outlined',
@@ -435,7 +435,7 @@ export default class CropperSelection extends CropperElement {
435435

436436
case ACTION_MOVE:
437437
if (this.movable && (
438-
this.linked
438+
this.dynamic
439439
|| (this.$actionStartTarget && this.contains(this.$actionStartTarget as Node))
440440
)) {
441441
this.$move(moveX, moveY);
@@ -444,7 +444,7 @@ export default class CropperSelection extends CropperElement {
444444

445445
case ACTION_SCALE:
446446
if (relatedEvent && this.zoomable && (
447-
this.linked
447+
this.dynamic
448448
|| this.contains(relatedEvent.target as Node)
449449
)) {
450450
const offset = getOffset(currentTarget as Element);

0 commit comments

Comments
 (0)