@node-projects/web-component-designer 0.0.48 → 0.0.52

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.
Files changed (125) hide show
  1. package/dist/elements/helper/GridHelper.d.ts +16 -0
  2. package/dist/elements/helper/GridHelper.js +107 -0
  3. package/dist/elements/helper/Helper.d.ts +3 -0
  4. package/dist/elements/helper/Helper.js +3 -0
  5. package/dist/elements/helper/LayoutHelper.d.ts +3 -0
  6. package/dist/elements/helper/LayoutHelper.js +47 -1
  7. package/dist/elements/helper/TransformHelper.d.ts +1 -0
  8. package/dist/elements/helper/TransformHelper.js +12 -0
  9. package/dist/elements/item/DesignItem.d.ts +4 -2
  10. package/dist/elements/item/DesignItem.js +6 -3
  11. package/dist/elements/item/IDesignItem.d.ts +4 -2
  12. package/dist/elements/services/htmlWriterService/HtmlWriterService.js +1 -6
  13. package/dist/elements/services/placementService/DefaultPlacementService.js +20 -8
  14. package/dist/elements/services/placementService/FlexBoxPlacementService.js +15 -1
  15. package/dist/elements/services/placementService/GridPlacementService.js +52 -1
  16. package/dist/elements/services/undoService/transactionItems/CssStyleChangeAction.d.ts +2 -2
  17. package/dist/elements/widgets/designerView/DomConverter.d.ts +1 -1
  18. package/dist/elements/widgets/designerView/DomConverter.js +2 -0
  19. package/dist/elements/widgets/designerView/IDesignerCanvas.d.ts +2 -0
  20. package/dist/elements/widgets/designerView/designerCanvas.d.ts +2 -1
  21. package/dist/elements/widgets/designerView/designerCanvas.js +2 -2
  22. package/dist/elements/widgets/designerView/extensions/GridExtension.js +11 -97
  23. package/dist/elements/widgets/designerView/extensions/TransformOriginExtension.js +2 -2
  24. package/dist/elements/widgets/designerView/extensions/contextMenu/CopyPasteContextMenu.d.ts +2 -2
  25. package/dist/elements/widgets/designerView/extensions/contextMenu/CopyPasteContextMenu.js +1 -1
  26. package/dist/elements/widgets/designerView/extensions/contextMenu/IContextMenuExtension.d.ts +2 -1
  27. package/dist/elements/widgets/designerView/extensions/contextMenu/ItemsBelowContextMenu.d.ts +2 -2
  28. package/dist/elements/widgets/designerView/extensions/contextMenu/ItemsBelowContextMenu.js +4 -3
  29. package/dist/elements/widgets/designerView/extensions/contextMenu/MultipleItemsSelectedContextMenu.d.ts +2 -2
  30. package/dist/elements/widgets/designerView/extensions/contextMenu/MultipleItemsSelectedContextMenu.js +1 -1
  31. package/dist/elements/widgets/designerView/extensions/contextMenu/ZMoveContextMenu.d.ts +2 -2
  32. package/dist/elements/widgets/designerView/extensions/contextMenu/ZMoveContextMenu.js +1 -1
  33. package/dist/elements/widgets/propertyGrid/PropertyGridWithHeader.js +1 -1
  34. package/dist/elements/widgets/treeView/treeViewExtended.d.ts +2 -0
  35. package/dist/elements/widgets/treeView/treeViewExtended.js +13 -0
  36. package/dist/index.d.ts +1 -1
  37. package/package.json +1 -1
  38. package/dist/elements/controls/ImageButtonListSelector copy.d.ts +0 -17
  39. package/dist/elements/controls/ImageButtonListSelector copy.js +0 -82
  40. package/dist/elements/controls/NumericInput.d.ts +0 -0
  41. package/dist/elements/controls/NumericInput.js +0 -1
  42. package/dist/elements/controls/ThicknessEditor copy.d.ts +0 -33
  43. package/dist/elements/controls/ThicknessEditor copy.js +0 -145
  44. package/dist/elements/helper/CssPropertiesList.d.ts +0 -0
  45. package/dist/elements/helper/CssPropertiesList.js +0 -1
  46. package/dist/elements/item/Binding.d.ts +0 -14
  47. package/dist/elements/item/Binding.js +0 -4
  48. package/dist/elements/item/IBinding copy.d.ts +0 -14
  49. package/dist/elements/item/IBinding copy.js +0 -1
  50. package/dist/elements/services/bindingsService/BaseCustomeWebcomponentBindingsService copy.d.ts +0 -9
  51. package/dist/elements/services/bindingsService/BaseCustomeWebcomponentBindingsService copy.js +0 -31
  52. package/dist/elements/services/bindingsService/BaseCustomeWebcomponentBindingsService.d.ts +0 -11
  53. package/dist/elements/services/bindingsService/BaseCustomeWebcomponentBindingsService.js +0 -34
  54. package/dist/elements/services/bindingsService/BindingMode.d.ts +0 -4
  55. package/dist/elements/services/bindingsService/BindingMode.js +0 -5
  56. package/dist/elements/services/bindingsService/BindingTarget.d.ts +0 -6
  57. package/dist/elements/services/bindingsService/BindingTarget.js +0 -7
  58. package/dist/elements/services/bindingsService/IBinding.d.ts +0 -14
  59. package/dist/elements/services/bindingsService/IBinding.js +0 -1
  60. package/dist/elements/services/bindingsService/PolymerBindingsService copy.d.ts +0 -9
  61. package/dist/elements/services/bindingsService/PolymerBindingsService copy.js +0 -31
  62. package/dist/elements/services/bindingsService/PolymerBindingsService.d.ts +0 -0
  63. package/dist/elements/services/bindingsService/PolymerBindingsService.js +0 -38
  64. package/dist/elements/services/copyPasteService/ICopyPasteService copy.d.ts +0 -0
  65. package/dist/elements/services/copyPasteService/ICopyPasteService copy.js +0 -1
  66. package/dist/elements/services/htmlParserService/NodeHtmlParserService.ts.BASE.d.ts +0 -9
  67. package/dist/elements/services/htmlParserService/NodeHtmlParserService.ts.BASE.js +0 -100
  68. package/dist/elements/services/htmlParserService/NodeHtmlParserService.ts.LOCAL.d.ts +0 -11
  69. package/dist/elements/services/htmlParserService/NodeHtmlParserService.ts.LOCAL.js +0 -84
  70. package/dist/elements/services/htmlParserService/NodeHtmlParserService.ts.REMOTE.d.ts +0 -9
  71. package/dist/elements/services/htmlParserService/NodeHtmlParserService.ts.REMOTE.js +0 -83
  72. package/dist/elements/services/modelCommandService/DefaultInstanceService.d.ts +0 -8
  73. package/dist/elements/services/modelCommandService/DefaultInstanceService.js +0 -14
  74. package/dist/elements/services/modelCommandService/IInstanceService.d.ts +0 -8
  75. package/dist/elements/services/modelCommandService/IInstanceService.js +0 -1
  76. package/dist/elements/services/propertiesService/propertyEditors/ImageButtonListPropertyEditor copy.d.ts +0 -8
  77. package/dist/elements/services/propertiesService/propertyEditors/ImageButtonListPropertyEditor copy.js +0 -40
  78. package/dist/elements/services/propertiesService/services/CommonPropertiesService copy.d.ts +0 -16
  79. package/dist/elements/services/propertiesService/services/CommonPropertiesService copy.js +0 -94
  80. package/dist/elements/widgets/designerView/IDesignerView.d.ts +0 -30
  81. package/dist/elements/widgets/designerView/IDesignerView.js +0 -1
  82. package/dist/elements/widgets/designerView/designerView copy.d.ts +0 -82
  83. package/dist/elements/widgets/designerView/designerView copy.js +0 -671
  84. package/dist/elements/widgets/designerView/extensions/AbstractExtension copy.d.ts +0 -22
  85. package/dist/elements/widgets/designerView/extensions/AbstractExtension copy.js +0 -52
  86. package/dist/elements/widgets/designerView/extensions/CanvasExtension copy.d.ts +0 -10
  87. package/dist/elements/widgets/designerView/extensions/CanvasExtension copy.js +0 -29
  88. package/dist/elements/widgets/designerView/extensions/CanvasExtensionProvider copy.d.ts +0 -10
  89. package/dist/elements/widgets/designerView/extensions/CanvasExtensionProvider copy.js +0 -15
  90. package/dist/elements/widgets/designerView/extensions/EditText/EditTextCkEditorExtension.d.ts +0 -14
  91. package/dist/elements/widgets/designerView/extensions/EditText/EditTextCkEditorExtension.js +0 -42
  92. package/dist/elements/widgets/designerView/extensions/EditText/EditTextCkEditorExtensionProvider.d.ts +0 -9
  93. package/dist/elements/widgets/designerView/extensions/EditText/EditTextCkEditorExtensionProvider.js +0 -9
  94. package/dist/elements/widgets/designerView/extensions/EditText/EditTextTinyMceExtension.d.ts +0 -27
  95. package/dist/elements/widgets/designerView/extensions/EditText/EditTextTinyMceExtension.js +0 -61
  96. package/dist/elements/widgets/designerView/extensions/EditText/EditTextTinyMceExtensionProvider.d.ts +0 -9
  97. package/dist/elements/widgets/designerView/extensions/EditText/EditTextTinyMceExtensionProvider.js +0 -9
  98. package/dist/elements/widgets/designerView/extensions/PermamentCursorExtension.d.ts +0 -10
  99. package/dist/elements/widgets/designerView/extensions/PermamentCursorExtension.js +0 -29
  100. package/dist/elements/widgets/designerView/extensions/PermamentCursorExtensionProvider copy.d.ts +0 -10
  101. package/dist/elements/widgets/designerView/extensions/PermamentCursorExtensionProvider copy.js +0 -15
  102. package/dist/elements/widgets/designerView/extensions/PermamentCursorExtensionProvider.d.ts +0 -10
  103. package/dist/elements/widgets/designerView/extensions/PermamentCursorExtensionProvider.js +0 -15
  104. package/dist/elements/widgets/designerView/extensions/pointerExtensions/AbstractExtension.d.ts +0 -22
  105. package/dist/elements/widgets/designerView/extensions/pointerExtensions/AbstractExtension.js +0 -78
  106. package/dist/elements/widgets/designerView/extensions/pointerExtensions/CursorLinePointerExtension copy.d.ts +0 -13
  107. package/dist/elements/widgets/designerView/extensions/pointerExtensions/CursorLinePointerExtension copy.js +0 -27
  108. package/dist/elements/widgets/designerView/extensions/pointerExtensions/CursorRectangleExtension.d.ts +0 -7
  109. package/dist/elements/widgets/designerView/extensions/pointerExtensions/CursorRectangleExtension.js +0 -20
  110. package/dist/elements/widgets/designerView/extensions/pointerExtensions/CursorRectanglePointerExtension copy.d.ts +0 -13
  111. package/dist/elements/widgets/designerView/extensions/pointerExtensions/CursorRectanglePointerExtension copy.js +0 -27
  112. package/dist/elements/widgets/designerView/extensions/pointerExtensions/CursorRectanglePointerExtension.d.ts +0 -7
  113. package/dist/elements/widgets/designerView/extensions/pointerExtensions/CursorRectanglePointerExtension.js +0 -20
  114. package/dist/elements/widgets/designerView/extensions/pointerExtensions/IDesignerExtension.d.ts +0 -5
  115. package/dist/elements/widgets/designerView/extensions/pointerExtensions/IDesignerExtension.js +0 -1
  116. package/dist/elements/widgets/designerView/extensions/pointerExtensions/IDesignerExtensionProvider.d.ts +0 -9
  117. package/dist/elements/widgets/designerView/extensions/pointerExtensions/IDesignerExtensionProvider.js +0 -1
  118. package/dist/elements/widgets/designerView/extensions/pointerExtensions/RulerExtension.d.ts +0 -7
  119. package/dist/elements/widgets/designerView/extensions/pointerExtensions/RulerExtension.js +0 -20
  120. package/dist/elements/widgets/designerView/extensions/pointerExtensions/RulerPointerExtension.d.ts +0 -7
  121. package/dist/elements/widgets/designerView/extensions/pointerExtensions/RulerPointerExtension.js +0 -20
  122. package/dist/elements/widgets/propertyGrid/PropertyGrid copy.d.ts +0 -17
  123. package/dist/elements/widgets/propertyGrid/PropertyGrid copy.js +0 -143
  124. package/dist/interfaces/IDesignerMousePoint.d.ts +0 -11
  125. package/dist/interfaces/IDesignerMousePoint.js +0 -1
@@ -1,3 +1,4 @@
1
+ import { CalculateGridInformation } from "../../../helper/GridHelper.js";
1
2
  import { AbstractExtension } from "./AbstractExtension";
2
3
  import { OverlayLayer } from "./OverlayLayer.js";
3
4
  export class GridExtension extends AbstractExtension {
@@ -5,105 +6,18 @@ export class GridExtension extends AbstractExtension {
5
6
  super(extensionManager, designerView, extendedItem);
6
7
  }
7
8
  extend() {
8
- let itemRect = this.extendedItem.element.getBoundingClientRect();
9
- const computedStyle = getComputedStyle(this.extendedItem.element);
10
- const rows = computedStyle.gridTemplateRows.split(' ');
11
- const columns = computedStyle.gridTemplateColumns.split(' ');
12
- let y = 0;
13
- let xGap = 0;
14
- let yGap = 0;
15
- let rw = 0;
16
- let xOffset = itemRect.x - this.designerCanvas.containerBoundingRect.x;
17
- let yOffset = itemRect.y - this.designerCanvas.containerBoundingRect.y;
18
- let gridA = null;
19
- if (computedStyle.gridTemplateAreas && computedStyle.gridTemplateAreas !== 'none')
20
- gridA = computedStyle.gridTemplateAreas.split('\"');
21
- if (computedStyle.columnGap && computedStyle.columnGap != 'normal')
22
- xGap = Number.parseFloat(computedStyle.columnGap.replace('px', ''));
23
- if (computedStyle.rowGap && computedStyle.rowGap != 'normal')
24
- yGap = Number.parseFloat(computedStyle.rowGap.replace('px', ''));
25
- let gesX = 0;
26
- let gesY = 0;
27
- for (let c of columns) {
28
- const currX = Number.parseFloat(c.replace('px', ''));
29
- gesX += currX + xGap;
30
- }
31
- gesX -= xGap;
32
- for (let r of rows) {
33
- const currY = Number.parseFloat(r.replace('px', ''));
34
- gesY += currY + yGap;
35
- }
36
- gesY -= yGap;
37
- if (computedStyle.justifyContent == 'center') {
38
- xOffset += (itemRect.width - gesX) / 2;
39
- }
40
- else if (computedStyle.justifyContent == 'end') {
41
- xOffset += itemRect.width - gesX;
42
- }
43
- else if (computedStyle.justifyContent == 'space-between') {
44
- xGap += (itemRect.width - gesX) / (columns.length - 1);
45
- }
46
- else if (computedStyle.justifyContent == 'space-around') {
47
- let gp = (itemRect.width - gesX) / (columns.length * 2);
48
- xGap += gp * 2;
49
- xOffset += gp;
50
- }
51
- else if (computedStyle.justifyContent == 'space-evenly') {
52
- let gp = (itemRect.width - gesX) / (columns.length + 1);
53
- xGap += gp;
54
- xOffset += gp;
55
- }
56
- if (computedStyle.alignContent == 'center') {
57
- xOffset += (itemRect.height - gesY) / 2;
58
- }
59
- else if (computedStyle.alignContent == 'end') {
60
- xOffset += itemRect.height - gesY;
61
- }
62
- else if (computedStyle.alignContent == 'space-between') {
63
- yGap += (itemRect.height - gesY) / (rows.length - 1);
64
- }
65
- else if (computedStyle.alignContent == 'space-around') {
66
- let gp = (itemRect.height - gesY) / (rows.length * 2);
67
- yGap += gp * 2;
68
- yOffset += gp;
69
- }
70
- else if (computedStyle.alignContent == 'space-evenly') {
71
- let gp = (itemRect.height - gesY) / (rows.length + 1);
72
- yGap += gp;
73
- yOffset += gp;
74
- }
75
- for (let xIdx = 0; xIdx < rows.length; xIdx++) {
76
- const r = rows[xIdx];
77
- let areas = null;
78
- if (gridA) {
79
- areas = gridA[rw + 1].split(' ');
80
- }
81
- let x = 0;
82
- let cl = 0;
83
- const currY = Number.parseFloat(r.replace('px', ''));
84
- for (let yIdx = 0; yIdx < columns.length; yIdx++) {
85
- const c = columns[yIdx];
86
- if (x > 0 && xGap) {
87
- this._drawRect(x + xOffset, y + yOffset, xGap, currY, 'svg-grid-gap', null, OverlayLayer.Background);
88
- x += xGap;
89
- }
90
- const currX = Number.parseFloat(c.replace('px', ''));
91
- if (y > 0 && yGap) {
92
- this._drawRect(x + xOffset, y + yOffset - yGap, currX, yGap, 'svg-grid-gap', null, OverlayLayer.Background);
93
- }
94
- if (areas) {
95
- const nm = areas[cl].trim();
96
- if (nm != '.') {
97
- const text = this._drawText(nm, x + xOffset, y + yOffset, 'svg-grid-area', null, OverlayLayer.Background);
98
- text.setAttribute("dominant-baseline", "hanging");
99
- }
9
+ const gridInformation = CalculateGridInformation(this.extendedItem);
10
+ for (let gap of gridInformation.gaps) {
11
+ this._drawRect(gap.x, gap.y, gap.width, gap.height, 'svg-grid-gap', null, OverlayLayer.Background);
12
+ }
13
+ for (let cellRow of gridInformation.cells) {
14
+ for (let cell of cellRow) {
15
+ this._drawRect(cell.x, cell.y, cell.width, cell.height, 'svg-grid', null, OverlayLayer.Background);
16
+ if (cell.name) {
17
+ const text = this._drawText(cell.name, cell.x, cell.y, 'svg-grid-area', null, OverlayLayer.Background);
18
+ text.setAttribute("dominant-baseline", "hanging");
100
19
  }
101
- this._drawRect(x + xOffset, y + yOffset, currX, currY, 'svg-grid', null, OverlayLayer.Background);
102
- x += currX;
103
- cl++;
104
20
  }
105
- y += currY + yGap;
106
- rw += 2;
107
21
  }
108
22
  }
109
23
  refresh() {
@@ -50,8 +50,8 @@ export class TransformOriginExtension extends AbstractExtension {
50
50
  const newY = (dy + y);
51
51
  const przX = Math.round(newX / rect.width * 10000) / 100; //round to 2 decimal places
52
52
  const przY = Math.round(newY / rect.height * 10000) / 100;
53
- //this.extendedItem.setStyle('transformOrigin',newX + 'px ' + newY + 'px');
54
- this.extendedItem.setStyle('transformOrigin', przX + '% ' + przY + '%');
53
+ //this.extendedItem.setStyle('transform-origin',newX + 'px ' + newY + 'px');
54
+ this.extendedItem.setStyle('transform-origin', przX + '% ' + przY + '%');
55
55
  this.refresh();
56
56
  this._startPos = null;
57
57
  }
@@ -1,8 +1,8 @@
1
1
  import { IContextMenuItem } from "../../../../helper/contextMenu/IContextmenuItem";
2
2
  import { IDesignItem } from "../../../../item/IDesignItem";
3
3
  import { IDesignerCanvas } from "../../IDesignerCanvas";
4
- import { IContextMenuExtension } from "./IContextMenuExtension";
4
+ import { ContextmenuInitiator, IContextMenuExtension } from "./IContextMenuExtension";
5
5
  export declare class CopyPasteContextMenu implements IContextMenuExtension {
6
- shouldProvideContextmenu(event: MouseEvent, designerView: IDesignerCanvas, designItem: IDesignItem): boolean;
6
+ shouldProvideContextmenu(event: MouseEvent, designerView: IDesignerCanvas, designItem: IDesignItem, initiator: ContextmenuInitiator): boolean;
7
7
  provideContextMenuItems(event: MouseEvent, designerView: IDesignerCanvas, designItem: IDesignItem): IContextMenuItem[];
8
8
  }
@@ -1,6 +1,6 @@
1
1
  import { CommandType } from "../../../../../commandHandling/CommandType";
2
2
  export class CopyPasteContextMenu {
3
- shouldProvideContextmenu(event, designerView, designItem) {
3
+ shouldProvideContextmenu(event, designerView, designItem, initiator) {
4
4
  return true;
5
5
  }
6
6
  provideContextMenuItems(event, designerView, designItem) {
@@ -1,7 +1,8 @@
1
1
  import { IContextMenuItem } from "../../../../helper/contextMenu/IContextmenuItem";
2
2
  import { IDesignItem } from "../../../../item/IDesignItem";
3
3
  import { IDesignerCanvas } from "../../IDesignerCanvas";
4
+ export declare type ContextmenuInitiator = 'designer' | 'treeView' | 'other';
4
5
  export interface IContextMenuExtension {
5
- shouldProvideContextmenu(event: MouseEvent, designerView: IDesignerCanvas, designItem: IDesignItem): any;
6
+ shouldProvideContextmenu(event: MouseEvent, designerView: IDesignerCanvas, designItem: IDesignItem, initiator: ContextmenuInitiator): any;
6
7
  provideContextMenuItems(event: MouseEvent, designerView: IDesignerCanvas, designItem: IDesignItem): IContextMenuItem[];
7
8
  }
@@ -1,9 +1,9 @@
1
1
  import { IContextMenuItem } from "../../../../helper/contextMenu/IContextmenuItem";
2
2
  import { IDesignItem } from "../../../../item/IDesignItem";
3
3
  import { IDesignerCanvas } from "../../IDesignerCanvas";
4
- import { IContextMenuExtension } from "./IContextMenuExtension";
4
+ import { ContextmenuInitiator, IContextMenuExtension } from "./IContextMenuExtension";
5
5
  export declare class ItemsBelowContextMenu implements IContextMenuExtension {
6
- shouldProvideContextmenu(event: MouseEvent, designerView: IDesignerCanvas, designItem: IDesignItem): boolean;
6
+ shouldProvideContextmenu(event: MouseEvent, designerView: IDesignerCanvas, designItem: IDesignItem, initiator: ContextmenuInitiator): boolean;
7
7
  provideContextMenuItems(event: MouseEvent, designerView: IDesignerCanvas, designItem: IDesignItem): IContextMenuItem[];
8
8
  private _select;
9
9
  private _searchForItemsBelow;
@@ -1,7 +1,7 @@
1
1
  import { DesignItem } from "../../../../item/DesignItem";
2
2
  export class ItemsBelowContextMenu {
3
- shouldProvideContextmenu(event, designerView, designItem) {
4
- return true;
3
+ shouldProvideContextmenu(event, designerView, designItem, initiator) {
4
+ return initiator == 'designer';
5
5
  }
6
6
  provideContextMenuItems(event, designerView, designItem) {
7
7
  const lstItems = this._searchForItemsBelow(event, designerView);
@@ -31,7 +31,8 @@ export class ItemsBelowContextMenu {
31
31
  break;
32
32
  if (el !== designerView.overlayLayer && el.parentElement !== designerView.overlayLayer && el.getRootNode() === designerView.shadowRoot)
33
33
  lstEl.push(el);
34
- backupPEventsMap.set(el, el.style.pointerEvents);
34
+ if (!backupPEventsMap.has(el))
35
+ backupPEventsMap.set(el, el.style.pointerEvents);
35
36
  el.style.pointerEvents = 'none';
36
37
  const oldEl = el;
37
38
  el = designerView.elementFromPoint(event.x, event.y);
@@ -1,9 +1,9 @@
1
1
  import { IContextMenuItem } from "../../../../helper/contextMenu/IContextmenuItem";
2
2
  import { IDesignItem } from "../../../../item/IDesignItem";
3
3
  import { IDesignerCanvas } from "../../IDesignerCanvas";
4
- import { IContextMenuExtension } from "./IContextMenuExtension";
4
+ import { ContextmenuInitiator, IContextMenuExtension } from "./IContextMenuExtension";
5
5
  export declare class MultipleItemsSelectedContextMenu implements IContextMenuExtension {
6
6
  orderIndex: number;
7
- shouldProvideContextmenu(event: MouseEvent, designerView: IDesignerCanvas, designItem: IDesignItem): boolean;
7
+ shouldProvideContextmenu(event: MouseEvent, designerView: IDesignerCanvas, designItem: IDesignItem, initiator: ContextmenuInitiator): boolean;
8
8
  provideContextMenuItems(event: MouseEvent, designerView: IDesignerCanvas, designItem: IDesignItem): IContextMenuItem[];
9
9
  }
@@ -1,6 +1,6 @@
1
1
  export class MultipleItemsSelectedContextMenu {
2
2
  orderIndex = 60;
3
- shouldProvideContextmenu(event, designerView, designItem) {
3
+ shouldProvideContextmenu(event, designerView, designItem, initiator) {
4
4
  if (designItem.instanceServiceContainer.selectionService.selectedElements.length > 1) {
5
5
  return true;
6
6
  }
@@ -1,8 +1,8 @@
1
1
  import { IContextMenuItem } from "../../../../helper/contextMenu/IContextmenuItem";
2
2
  import { IDesignItem } from "../../../../item/IDesignItem";
3
3
  import { IDesignerCanvas } from "../../IDesignerCanvas";
4
- import { IContextMenuExtension } from "./IContextMenuExtension";
4
+ import { ContextmenuInitiator, IContextMenuExtension } from "./IContextMenuExtension";
5
5
  export declare class ZMoveContextMenu implements IContextMenuExtension {
6
- shouldProvideContextmenu(event: MouseEvent, designerView: IDesignerCanvas, designItem: IDesignItem): boolean;
6
+ shouldProvideContextmenu(event: MouseEvent, designerView: IDesignerCanvas, designItem: IDesignItem, initiator: ContextmenuInitiator): boolean;
7
7
  provideContextMenuItems(event: MouseEvent, designerView: IDesignerCanvas, designItem: IDesignItem): IContextMenuItem[];
8
8
  }
@@ -1,6 +1,6 @@
1
1
  import { CommandType } from "../../../../../commandHandling/CommandType";
2
2
  export class ZMoveContextMenu {
3
- shouldProvideContextmenu(event, designerView, designItem) {
3
+ shouldProvideContextmenu(event, designerView, designItem, initiator) {
4
4
  return true;
5
5
  }
6
6
  provideContextMenuItems(event, designerView, designItem) {
@@ -12,7 +12,7 @@ export class PropertyGridWithHeader extends BaseCustomWebComponentLazyAppend {
12
12
  div {
13
13
  display: grid;
14
14
  grid-template-columns: auto 1fr;
15
- padding: 6px;
15
+ padding: 3px 6px;
16
16
  font-family: monospace;
17
17
  align-items: center;
18
18
  }
@@ -3,6 +3,7 @@ import { ITreeView } from './ITreeView';
3
3
  import { IDesignItem } from '../../item/IDesignItem';
4
4
  import { ISelectionChangedEvent } from '../../services/selectionService/ISelectionChangedEvent';
5
5
  import { InstanceServiceContainer } from '../../services/InstanceServiceContainer.js';
6
+ import { ContextMenuHelper } from '../../helper/contextMenu/ContextMenuHelper.js';
6
7
  export declare class TreeViewExtended extends BaseCustomWebComponentConstructorAppend implements ITreeView {
7
8
  private _treeDiv;
8
9
  private _tree;
@@ -19,6 +20,7 @@ export declare class TreeViewExtended extends BaseCustomWebComponentConstructorA
19
20
  _switchLockAtDesignTimeState(img: HTMLImageElement, designItem: IDesignItem): void;
20
21
  _showHideAtRunTimeState(img: HTMLImageElement, designItem: IDesignItem): void;
21
22
  _switchHideAtRunTimeState(img: HTMLImageElement, designItem: IDesignItem): void;
23
+ showDesignItemContextMenu(designItem: IDesignItem, event: MouseEvent): ContextMenuHelper;
22
24
  ready(): Promise<void>;
23
25
  createTree(rootItem: IDesignItem): void;
24
26
  set instanceServiceContainer(value: InstanceServiceContainer);
@@ -1,6 +1,7 @@
1
1
  import { css, html, BaseCustomWebComponentConstructorAppend } from '@node-projects/base-custom-webcomponent';
2
2
  import { NodeType } from '../../item/NodeType';
3
3
  import { assetsPath } from '../../../Constants';
4
+ import { ContextMenuHelper } from '../../helper/contextMenu/ContextMenuHelper.js';
4
5
  export class TreeViewExtended extends BaseCustomWebComponentConstructorAppend {
5
6
  _treeDiv;
6
7
  _tree;
@@ -135,6 +136,17 @@ export class TreeViewExtended extends BaseCustomWebComponentConstructorAppend {
135
136
  designItem.hideAtRunTime = !designItem.hideAtRunTime;
136
137
  this._showHideAtRunTimeState(img, designItem);
137
138
  }
139
+ showDesignItemContextMenu(designItem, event) {
140
+ event.preventDefault();
141
+ const mnuItems = [];
142
+ for (let cme of designItem.serviceContainer.designerContextMenuExtensions) {
143
+ if (cme.shouldProvideContextmenu(event, designItem.instanceServiceContainer.designerCanvas, designItem, 'treeView')) {
144
+ mnuItems.push(...cme.provideContextMenuItems(event, designItem.instanceServiceContainer.designerCanvas, designItem));
145
+ }
146
+ }
147
+ let ctxMnu = ContextMenuHelper.showContextMenu(null, event, null, mnuItems);
148
+ return ctxMnu;
149
+ }
138
150
  async ready() {
139
151
  //this._treeDiv.classList.add('fancytree-connectors');
140
152
  $(this._treeDiv).fancytree({
@@ -158,6 +170,7 @@ export class TreeViewExtended extends BaseCustomWebComponentConstructorAppend {
158
170
  if (node.tr.children[0]) {
159
171
  let designItem = node.data.ref;
160
172
  if (designItem && designItem.nodeType === NodeType.Element && designItem !== designItem.instanceServiceContainer.contentService.rootDesignItem) {
173
+ node.tr.oncontextmenu = (e) => this.showDesignItemContextMenu(designItem, e);
161
174
  let d = document.createElement("div");
162
175
  d.className = "cmd";
163
176
  let img = document.createElement('img');
package/dist/index.d.ts CHANGED
@@ -133,7 +133,7 @@ export * from "./elements/widgets/designerView/extensions/SelectionDefaultExtens
133
133
  export * from "./elements/widgets/designerView/extensions/SelectionDefaultExtensionProvider.js";
134
134
  export * from "./elements/widgets/designerView/extensions/TransformOriginExtension.js";
135
135
  export * from "./elements/widgets/designerView/extensions/TransformOriginExtensionProvider.js";
136
- export type { IContextMenuExtension } from "./elements/widgets/designerView/extensions/contextMenu/IContextMenuExtension.js";
136
+ export type { IContextMenuExtension, ContextmenuInitiator } from "./elements/widgets/designerView/extensions/contextMenu/IContextMenuExtension.js";
137
137
  export * from "./elements/widgets/designerView/extensions/contextMenu/CopyPasteContextMenu.js";
138
138
  export * from "./elements/widgets/designerView/extensions/contextMenu/ItemsBelowContextMenu.js";
139
139
  export * from "./elements/widgets/designerView/extensions/contextMenu/MultipleItemsSelectedContextMenu.js";
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "description": "A UI designer for Polymer apps",
3
3
  "name": "@node-projects/web-component-designer",
4
- "version": "0.0.48",
4
+ "version": "0.0.52",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
7
7
  "author": "",
@@ -1,17 +0,0 @@
1
- import { BaseCustomWebComponentConstructorAppend, TypedEvent } from '@node-projects/base-custom-webcomponent';
2
- export declare type ImageButtonListSelectorValueChangedEventArgs = {
3
- newValue?: string;
4
- oldValue?: string;
5
- };
6
- export declare class ImageButtonListSelector extends BaseCustomWebComponentConstructorAppend {
7
- static readonly style: CSSStyleSheet;
8
- static readonly template: HTMLTemplateElement;
9
- private _value;
10
- get value(): string;
11
- set value(value: string);
12
- valueChanged: TypedEvent<ImageButtonListSelectorValueChangedEventArgs>;
13
- property: string;
14
- unsetValue: string;
15
- _updateValue(): void;
16
- ready(): void;
17
- }
@@ -1,82 +0,0 @@
1
- import { BaseCustomWebComponentConstructorAppend, css, html, TypedEvent } from '@node-projects/base-custom-webcomponent';
2
- export class ImageButtonListSelector extends BaseCustomWebComponentConstructorAppend {
3
- constructor() {
4
- super(...arguments);
5
- this.valueChanged = new TypedEvent();
6
- }
7
- get value() {
8
- return this._value;
9
- }
10
- set value(value) {
11
- const oldValue = this._value;
12
- this._value = value;
13
- this._updateValue();
14
- this.valueChanged.emit({ newValue: this._value, oldValue: oldValue });
15
- }
16
- _updateValue() {
17
- if (this.value) {
18
- this._getDomElement('value').innerText = this.value;
19
- this._getDomElement('value').classList.add('value-set');
20
- }
21
- else {
22
- this._getDomElement('value').classList.remove('value-set');
23
- }
24
- const slot = this._getDomElement('slot');
25
- for (let e of slot.assignedElements()) {
26
- if (e.dataset.value == this.value)
27
- e.style.background = "cornflowerblue";
28
- else
29
- e.style.background = "";
30
- }
31
- }
32
- ready() {
33
- var _a, _b;
34
- this._parseAttributesToProperties();
35
- const slot = this._getDomElement('slot');
36
- slot.onclick = (e) => {
37
- const path = e.composedPath();
38
- for (let e of slot.assignedElements()) {
39
- if (path.indexOf(e) >= 0) {
40
- this.value = e.dataset.value;
41
- }
42
- }
43
- };
44
- this._getDomElement('property').innerText = (_a = this.property) !== null && _a !== void 0 ? _a : '';
45
- this._getDomElement('value').innerText = (_b = this.unsetValue) !== null && _b !== void 0 ? _b : '';
46
- this._updateValue();
47
- }
48
- }
49
- ImageButtonListSelector.style = css `
50
- div {
51
- font-size: 10px;
52
- color: white;
53
- }
54
- #property {
55
- color: #00aff0;
56
- }
57
- #value {
58
- color: lightgray;
59
- }
60
- #value.value-set {
61
- color: wheat;
62
- }
63
- .container {
64
- display: flex;
65
- flex-wrap: wrap;
66
- flex-direction: row;
67
- }
68
- ::slotted(button) {
69
- min-width: 24px;
70
- height: 24px;
71
- padding: 1px;
72
- background: white;
73
- border: 1px solid lightgray;
74
- }
75
- `;
76
- ImageButtonListSelector.template = html `
77
- <div>
78
- <div><span id="property"></span>: <span id="value"></span></div>
79
- <div class="container"><slot id="slot"></slot></div>
80
- </div>
81
- `;
82
- customElements.define('node-projects-image-button-list-selector', ImageButtonListSelector);
File without changes
@@ -1 +0,0 @@
1
- "use strict";
@@ -1,33 +0,0 @@
1
- import { BaseCustomWebComponentConstructorAppend, TypedEvent } from '@node-projects/base-custom-webcomponent';
2
- export declare type ThicknessEditorValueChangedEventArgs = {
3
- newValue?: string;
4
- oldValue?: string;
5
- };
6
- export declare class ThicknessEditor extends BaseCustomWebComponentConstructorAppend {
7
- static readonly style: CSSStyleSheet;
8
- static readonly template: HTMLTemplateElement;
9
- private _leftInput;
10
- private _topInput;
11
- private _rightInput;
12
- private _bottomInput;
13
- private _valueLeft;
14
- get valueLeft(): string;
15
- set valueLeft(value: string);
16
- valueLeftChanged: TypedEvent<ThicknessEditorValueChangedEventArgs>;
17
- private _valueTop;
18
- get valueTop(): string;
19
- set valueTop(value: string);
20
- valueTopChanged: TypedEvent<ThicknessEditorValueChangedEventArgs>;
21
- private _valueRight;
22
- get valueRight(): string;
23
- set valueRight(value: string);
24
- valueRightChanged: TypedEvent<ThicknessEditorValueChangedEventArgs>;
25
- private _valueBottom;
26
- get valueBottom(): string;
27
- set valueBottom(value: string);
28
- valueBottomChanged: TypedEvent<ThicknessEditorValueChangedEventArgs>;
29
- property: string;
30
- unsetValue: string;
31
- _updateValue(): void;
32
- ready(): void;
33
- }
@@ -1,145 +0,0 @@
1
- import { BaseCustomWebComponentConstructorAppend, css, html, TypedEvent } from '@node-projects/base-custom-webcomponent';
2
- export class ThicknessEditor extends BaseCustomWebComponentConstructorAppend {
3
- static style = css `
4
- :host {
5
- margin: 4px;
6
- margin-left: auto;
7
- margin-right: auto;
8
- }
9
- #container {
10
- display: grid;
11
- grid-template-columns: minmax(30px, 40px) minmax(30px, 60px) minmax(30px, 40px);
12
- grid-template-rows: auto;
13
- grid-template-areas:
14
- " . top ."
15
- "left middle right"
16
- " . bottom .";
17
- column-gap: 2px;
18
- row-gap: 2px;
19
- }
20
- input {
21
- width: 20px;
22
- text-align: center;
23
- font-size: 10px;
24
- height: 20px;
25
- padding: 0;
26
- }
27
- #left {
28
- grid-area: left;
29
- justify-self: end;
30
- }
31
- #top {
32
- grid-area: top;
33
- align-self: end;
34
- justify-self: center;
35
- }
36
- #right {
37
- grid-area: right;
38
- justify-self: start;
39
- }
40
- #bottom {
41
- grid-area: bottom;
42
- align-self: start;
43
- justify-self: center;
44
- }
45
- #rect {
46
- grid-area: middle;
47
- border: 1px solid black;
48
- background: lightgray;
49
- }
50
- `;
51
- static template = html `
52
- <div id="container">
53
- <input id="left">
54
- <input id="top">
55
- <input id="right">
56
- <input id="bottom">
57
- <div id="rect"></div>
58
- </div>
59
- `;
60
- _leftInput;
61
- _topInput;
62
- _rightInput;
63
- _bottomInput;
64
- _valueLeft;
65
- get valueLeft() {
66
- return this._valueLeft;
67
- }
68
- set valueLeft(value) {
69
- const oldValue = this._valueLeft;
70
- this._valueLeft = value;
71
- if (oldValue !== value) {
72
- this._updateValue();
73
- this.valueLeftChanged.emit({ newValue: value, oldValue: oldValue });
74
- }
75
- }
76
- valueLeftChanged = new TypedEvent();
77
- _valueTop;
78
- get valueTop() {
79
- return this._valueTop;
80
- }
81
- set valueTop(value) {
82
- const oldValue = this._valueTop;
83
- this._valueTop = value;
84
- if (oldValue !== value) {
85
- this._updateValue();
86
- this.valueTopChanged.emit({ newValue: value, oldValue: oldValue });
87
- }
88
- }
89
- valueTopChanged = new TypedEvent();
90
- _valueRight;
91
- get valueRight() {
92
- return this._valueRight;
93
- }
94
- set valueRight(value) {
95
- const oldValue = this._valueRight;
96
- this._valueRight = value;
97
- if (oldValue !== value) {
98
- this._updateValue();
99
- this.valueRightChanged.emit({ newValue: value, oldValue: oldValue });
100
- }
101
- }
102
- valueRightChanged = new TypedEvent();
103
- _valueBottom;
104
- get valueBottom() {
105
- return this._valueBottom;
106
- }
107
- set valueBottom(value) {
108
- const oldValue = this._valueBottom;
109
- this._valueBottom = value;
110
- if (oldValue !== value) {
111
- this._updateValue();
112
- this.valueBottomChanged.emit({ newValue: value, oldValue: oldValue });
113
- }
114
- }
115
- valueBottomChanged = new TypedEvent();
116
- property;
117
- unsetValue;
118
- _updateValue() {
119
- this._leftInput.value = this.valueLeft;
120
- this._topInput.value = this.valueTop;
121
- this._rightInput.value = this.valueRight;
122
- this._bottomInput.value = this._valueBottom;
123
- }
124
- ready() {
125
- this._parseAttributesToProperties();
126
- this._leftInput = this._getDomElement('left');
127
- this._topInput = this._getDomElement('top');
128
- this._rightInput = this._getDomElement('right');
129
- this._bottomInput = this._getDomElement('bottom');
130
- this._leftInput.onkeyup = (e) => { if (e.key === 'Enter')
131
- this._valueLeft = this._leftInput.value; };
132
- this._topInput.onkeyup = (e) => { if (e.key === 'Enter')
133
- this._valueTop = this._topInput.value; };
134
- this._rightInput.onkeyup = (e) => { if (e.key === 'Enter')
135
- this._valueRight = this._rightInput.value; };
136
- this._bottomInput.onkeyup = (e) => { if (e.key === 'Enter')
137
- this._valueBottom = this._bottomInput.value; };
138
- this._leftInput.onblur = (e) => this._valueLeft = this._leftInput.value;
139
- this._topInput.onblur = (e) => this._valueTop = this._topInput.value;
140
- this._rightInput.onblur = (e) => this._valueRight = this._rightInput.value;
141
- this._bottomInput.onblur = (e) => this._valueBottom = this._bottomInput.value;
142
- this._updateValue();
143
- }
144
- }
145
- customElements.define('node-projects-thickness-editor', ThicknessEditor);
File without changes
@@ -1 +0,0 @@
1
- "use strict";
@@ -1,14 +0,0 @@
1
- import { BindingMode } from "./BindingMode";
2
- import { BindingTarget } from "./BindingTarget";
3
- export interface IBinding {
4
- bindableObjectNames?: string[];
5
- expression?: string;
6
- mode?: BindingMode;
7
- target?: BindingTarget;
8
- invert?: boolean;
9
- converter?: string;
10
- changedEvent?: string;
11
- nullSafe?: boolean;
12
- rawName?: string;
13
- rawValue?: string;
14
- }
@@ -1,4 +0,0 @@
1
- export class Binding {
2
- }
3
- export class ExtendedBinding extends Binding {
4
- }
@@ -1,14 +0,0 @@
1
- import { BindingMode } from "./BindingMode";
2
- import { BindingTarget } from "./BindingTarget";
3
- export interface IBinding {
4
- bindableObjectNames?: string[];
5
- expression?: string;
6
- mode?: BindingMode;
7
- target?: BindingTarget;
8
- invert?: boolean;
9
- converter?: string;
10
- changedEvent?: string;
11
- nullSafe?: boolean;
12
- rawName?: string;
13
- rawValue?: string;
14
- }