Browse Source

Remove selected spots

canvas-spot
Artur Arseniev 3 years ago
parent
commit
5e3b6093e8
  1. 7
      src/canvas/index.ts
  2. 10
      src/canvas/model/CanvasSpot.ts
  3. 13
      src/editor/model/Editor.ts

7
src/canvas/index.ts

@ -733,8 +733,6 @@ export default class CanvasModule extends Module<CanvasConfig> {
setSpot<T extends CanvasSpotProps>(spotProps: Partial<T> = {}, opts: AddOptions = {}) { setSpot<T extends CanvasSpotProps>(spotProps: Partial<T> = {}, opts: AddOptions = {}) {
const spots = this.getSpots(spotProps); const spots = this.getSpots(spotProps);
console.log('setSpot');
if (spots.length) { if (spots.length) {
const spot = spots[0]; const spot = spots[0];
spot.set(spotProps); spot.set(spotProps);
@ -747,7 +745,6 @@ export default class CanvasModule extends Module<CanvasConfig> {
const spot = new CanvasSpot(this, { const spot = new CanvasSpot(this, {
...spotProps, ...spotProps,
id: spotProps.id || `cs_${frameId}_${cmp?.getId()}`, id: spotProps.id || `cs_${frameId}_${cmp?.getId()}`,
// TODO type should be mandatory
type: spotProps.type || '', type: spotProps.type || '',
}); });
@ -763,6 +760,10 @@ export default class CanvasModule extends Module<CanvasConfig> {
removeSpot<T extends CanvasSpotProps>(spotProps: Partial<T> = {}) { removeSpot<T extends CanvasSpotProps>(spotProps: Partial<T> = {}) {
const spots = this.getSpots(spotProps); const spots = this.getSpots(spotProps);
console.log('removeSpot', {
spotProps,
spots,
});
return this.spots.remove(spots); return this.spots.remove(spots);
// 'canvas:spot:remove' // 'canvas:spot:remove'
// 'canvas:spot' // 'canvas:spot'

10
src/canvas/model/CanvasSpot.ts

@ -4,7 +4,15 @@ import { BoxRect, LiteralUnion } from '../../common';
import Component from '../../dom_components/model/Component'; import Component from '../../dom_components/model/Component';
import Frame from './Frame'; import Frame from './Frame';
export type CanvasSpotBuiltInType = 'select' | 'hover' | 'padding' | 'margin' | 'resize'; export enum CanvasSpotBuiltInTypes {
Select = 'select',
Hover = 'hover',
Padding = 'padding',
Margin = 'margin',
Resize = 'resize',
}
export type CanvasSpotBuiltInType = `${CanvasSpotBuiltInTypes}`;
export type CanvasSpotType = LiteralUnion<CanvasSpotBuiltInType, string>; export type CanvasSpotType = LiteralUnion<CanvasSpotBuiltInType, string>;

13
src/editor/model/Editor.ts

@ -42,6 +42,7 @@ import CssRules from '../../css_composer/model/CssRules';
import Frame from '../../canvas/model/Frame'; import Frame from '../../canvas/model/Frame';
import { ComponentAdd, DragMode } from '../../dom_components/model/types'; import { ComponentAdd, DragMode } from '../../dom_components/model/types';
import ComponentWrapper from '../../dom_components/model/ComponentWrapper'; import ComponentWrapper from '../../dom_components/model/ComponentWrapper';
import { CanvasSpotBuiltInTypes } from '../../canvas/model/CanvasSpot';
Backbone.$ = $; Backbone.$ = $;
@ -578,7 +579,7 @@ export default class EditorModel extends Model {
selected.addComponent(model, opts); selected.addComponent(model, opts);
this.trigger('component:select', model, opts); this.trigger('component:select', model, opts);
this.Canvas.setSpot({ this.Canvas.setSpot({
type: 'select', type: CanvasSpotBuiltInTypes.Select,
component: model, component: model,
}); });
}); });
@ -591,7 +592,15 @@ export default class EditorModel extends Model {
* @public * @public
*/ */
removeSelected(el: Component | Component[], opts = {}) { removeSelected(el: Component | Component[], opts = {}) {
this.selected.removeComponent(getModel(el, $), opts); const component = getModel(el, $);
this.selected.removeComponent(component, opts);
const cmps: Component[] = isArray(component) ? component : [component];
cmps.forEach(component =>
this.Canvas.removeSpot({
type: CanvasSpotBuiltInTypes.Select,
component,
})
);
} }
/** /**

Loading…
Cancel
Save