@tmagic/stage 1.1.0-beta.6 → 1.1.0-beta.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "1.1.0-beta.6",
2
+ "version": "1.1.0-beta.7",
3
3
  "name": "@tmagic/stage",
4
4
  "sideEffects": [
5
5
  "dist/*"
@@ -29,9 +29,9 @@
29
29
  },
30
30
  "dependencies": {
31
31
  "@scena/guides": "^0.17.0",
32
- "@tmagic/core": "1.1.0-beta.6",
33
- "@tmagic/schema": "1.1.0-beta.6",
34
- "@tmagic/utils": "1.1.0-beta.6",
32
+ "@tmagic/core": "1.1.0-beta.7",
33
+ "@tmagic/schema": "1.1.0-beta.7",
34
+ "@tmagic/utils": "1.1.0-beta.7",
35
35
  "events": "^3.3.0",
36
36
  "keycon": "^1.1.2",
37
37
  "lodash-es": "^4.17.21",
package/src/StageCore.ts CHANGED
@@ -180,7 +180,7 @@ export default class StageCore extends EventEmitter {
180
180
  if (!canSelectByProp) return false;
181
181
  // 多选规则
182
182
  if (this.mask.isMultiSelectStatus) {
183
- return this.multiDr.canSelect(el);
183
+ return this.multiDr.canSelect(el, stop);
184
184
  }
185
185
  return true;
186
186
  }
package/src/StageMask.ts CHANGED
@@ -108,11 +108,16 @@ export default class StageMask extends Rule {
108
108
  this.content.addEventListener('wheel', this.mouseWheelHandler);
109
109
  this.content.addEventListener('mousemove', this.highlightHandler);
110
110
  this.content.addEventListener('mouseleave', this.mouseLeaveHandler);
111
- KeyController.global.keydown('shift', (e) => {
111
+
112
+ const isMac = /mac os x/.test(navigator.userAgent.toLowerCase());
113
+
114
+ const ctrl = isMac ? 'meta' : 'ctrl';
115
+
116
+ KeyController.global.keydown(ctrl, (e) => {
112
117
  e.inputEvent.preventDefault();
113
118
  this.isMultiSelectStatus = true;
114
119
  });
115
- KeyController.global.keyup('shift', (e) => {
120
+ KeyController.global.keyup(ctrl, (e) => {
116
121
  e.inputEvent.preventDefault();
117
122
  this.isMultiSelectStatus = false;
118
123
  });
@@ -127,16 +127,20 @@ export default class StageMultiDragResize extends EventEmitter {
127
127
  });
128
128
  }
129
129
 
130
- public canSelect(el: HTMLElement): Boolean {
131
- // 多选不可以选中magic-ui-page
130
+ public canSelect(el: HTMLElement, stop: () => boolean): Boolean {
131
+ // 多选状态下不可以选中magic-ui-page,并停止继续向上层选中
132
132
  if (el.className.includes(PAGE_CLASS)) {
133
133
  this.core.highlightedDom = undefined;
134
134
  this.core.highlightLayer.clearHighlight();
135
+ stop();
135
136
  return false;
136
137
  }
137
138
  const currentTargetMode = getMode(el);
138
139
  let selectedDomMode = '';
139
-
140
+ if (this.core.selectedDom?.className.includes(PAGE_CLASS)) {
141
+ // 先单击选中了页面(magic-ui-page),再按住多选键多选时,任一元素均可选中
142
+ return true;
143
+ }
140
144
  if (this.targetList.length === 0 && this.core.selectedDom) {
141
145
  // 单选后添加到多选的情况
142
146
  selectedDomMode = getMode(this.core.selectedDom);
@@ -22,7 +22,7 @@ export default class StageMultiDragResize extends EventEmitter {
22
22
  * @param els
23
23
  */
24
24
  multiSelect(els: HTMLElement[]): void;
25
- canSelect(el: HTMLElement): Boolean;
25
+ canSelect(el: HTMLElement, stop: () => boolean): Boolean;
26
26
  /**
27
27
  * 清除多选状态
28
28
  */