flexlayout-react 0.5.19 → 0.5.20

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.
@@ -1 +1 @@
1
- {"version":3,"file":"TabFloating.js","sourceRoot":"","sources":["../../src/view/TabFloating.tsx"],"names":[],"mappings":";;;AAAA,6BAA+B;AAC/B,4CAAuC;AAEvC,kDAA6C;AAC7C,kCAAmC;AAEnC,0CAAyC;AASzC,wBAAwB;AACjB,IAAM,WAAW,GAAG,UAAC,KAAwB;IACxC,IAAA,MAAM,GAAqB,KAAK,OAA1B,EAAE,QAAQ,GAAW,KAAK,SAAhB,EAAE,IAAI,GAAK,KAAK,KAAV,CAAW;IAEzC,IAAM,UAAU,GAAG;QACf,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;YAClB,IAAI,CAAC,SAAS,EAAG,CAAC,KAAK,EAAE,CAAC;SAC7B;IACL,CAAC,CAAA;IAED,IAAM,UAAU,GAAG;QACf,MAAM,CAAC,QAAQ,CAAC,iBAAO,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACtD,CAAC,CAAA;IAED,IAAM,WAAW,GAAG;QAChB,IAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAgB,CAAC;QAC9C,IAAI,MAAM,CAAC,OAAO,EAAE,KAAK,oBAAU,CAAC,IAAI,EAAE;YACtC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE;gBACpB,MAAM,CAAC,QAAQ,CAAC,iBAAO,CAAC,eAAe,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;aAC5D;SACJ;IACL,CAAC,CAAC;IAEF,IAAM,YAAY,GAAG,UAAC,KAAsD;QACxE,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,UAAU,EAAE,CAAC;IACjB,CAAC,CAAC;IAEF,IAAM,WAAW,GAAG,UAAC,KAAsD;QACvE,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,UAAU,EAAE,CAAC;IACjB,CAAC,CAAC;IAEF,IAAM,EAAE,GAAG,MAAM,CAAC,YAAY,CAAC;IAE/B,IAAM,KAAK,GAAwB,IAAI,CAAC,kBAAkB,CAAC;QACvD,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;KACtC,CAAC,CAAC;IAEH,IAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,qBAAS,CAAC,uBAAuB,CAAC,CAAC;IACnE,IAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,qBAAS,CAAC,2BAA2B,CAAC,CAAC;IAC3E,IAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,qBAAS,CAAC,2BAA2B,CAAC,CAAC;IAE3E,IAAM,oBAAoB,GAAG,MAAM,CAAC,iCAAiC,EAAE,CAAC;IACxE,IAAI,oBAAoB,EAAE;QACtB,OAAO,CACH,6BAAK,SAAS,EAAE,EAAE,CAAC,eAAO,CAAC,wBAAwB,CAAC,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,IAClH,oBAAoB,CAAC,UAAU,EAAE,UAAU,CAAC,CAC3C,CACT,CAAC;KACL;SAAM;QACH,OAAO,CACH,6BAAK,SAAS,EAAE,EAAE,CAAC,eAAO,CAAC,wBAAwB,CAAC,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK;YACnH,6BAAK,SAAS,EAAE,EAAE,CAAC,eAAO,CAAC,8BAA8B,CAAC;gBACtD,iCAAM,OAAO,CAAO;gBACpB;oBACI,2BAAG,IAAI,EAAC,GAAG,EAAC,OAAO,EAAE,YAAY,IAC5B,WAAW,CACZ,CACF;gBACN;oBACI,2BAAG,IAAI,EAAC,GAAG,EAAC,OAAO,EAAE,WAAW,IAC3B,WAAW,CACZ,CACF,CACJ,CACJ,CACT,CAAC;KACL;AACL,CAAC,CAAC;AApEW,QAAA,WAAW,eAoEtB"}
1
+ {"version":3,"file":"TabFloating.js","sourceRoot":"","sources":["../../src/view/TabFloating.tsx"],"names":[],"mappings":";;;AAAA,6BAA+B;AAC/B,4CAAuC;AAEvC,kDAA6C;AAC7C,kCAAmC;AAEnC,0CAAyC;AAUzC,wBAAwB;AACjB,IAAM,WAAW,GAAG,UAAC,KAAwB;IACxC,IAAA,MAAM,GAA2B,KAAK,OAAhC,EAAE,QAAQ,GAAiB,KAAK,SAAtB,EAAE,IAAI,GAAW,KAAK,KAAhB,EAAE,IAAI,GAAK,KAAK,KAAV,CAAW;IAE/C,IAAM,UAAU,GAAG;QACf,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;YAClB,IAAI,CAAC,SAAS,EAAG,CAAC,KAAK,EAAE,CAAC;SAC7B;IACL,CAAC,CAAA;IAED,IAAM,UAAU,GAAG;QACf,MAAM,CAAC,QAAQ,CAAC,iBAAO,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACtD,CAAC,CAAA;IAED,IAAM,WAAW,GAAG;QAChB,IAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAgB,CAAC;QAC9C,IAAI,MAAM,CAAC,OAAO,EAAE,KAAK,oBAAU,CAAC,IAAI,EAAE;YACtC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE;gBACpB,MAAM,CAAC,QAAQ,CAAC,iBAAO,CAAC,eAAe,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;aAC5D;SACJ;IACL,CAAC,CAAC;IAEF,IAAM,YAAY,GAAG,UAAC,KAAsD;QACxE,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,UAAU,EAAE,CAAC;IACjB,CAAC,CAAC;IAEF,IAAM,WAAW,GAAG,UAAC,KAAsD;QACvE,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,UAAU,EAAE,CAAC;IACjB,CAAC,CAAC;IAEF,IAAM,EAAE,GAAG,MAAM,CAAC,YAAY,CAAC;IAE/B,IAAM,KAAK,GAAwB,IAAI,CAAC,kBAAkB,CAAC;QACvD,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;KACtC,CAAC,CAAC;IAEH,IAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,qBAAS,CAAC,uBAAuB,CAAC,CAAC;IACnE,IAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,qBAAS,CAAC,2BAA2B,CAAC,CAAC;IAC3E,IAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,qBAAS,CAAC,2BAA2B,CAAC,CAAC;IAE3E,IAAM,oBAAoB,GAAG,MAAM,CAAC,iCAAiC,EAAE,CAAC;IACxE,IAAI,oBAAoB,EAAE;QACtB,OAAO,CACH,6BAAK,SAAS,EAAE,EAAE,CAAC,eAAO,CAAC,wBAAwB,CAAC,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,IAClH,oBAAoB,CAAC,UAAU,EAAE,UAAU,CAAC,CAC3C,CACT,CAAC;KACL;SAAM;QACH,OAAO,CACH,6BAAK,SAAS,EAAE,EAAE,CAAC,eAAO,CAAC,wBAAwB,CAAC,sBAC9B,IAAI,EACtB,WAAW,EAAE,WAAW,EACxB,YAAY,EAAE,WAAW,EACzB,KAAK,EAAE,KAAK;YACZ,6BAAK,SAAS,EAAE,EAAE,CAAC,eAAO,CAAC,8BAA8B,CAAC;gBACtD,iCAAM,OAAO,CAAO;gBACpB;oBACI,2BAAG,IAAI,EAAC,GAAG,EAAC,OAAO,EAAE,YAAY,IAC5B,WAAW,CACZ,CACF;gBACN;oBACI,2BAAG,IAAI,EAAC,GAAG,EAAC,OAAO,EAAE,WAAW,IAC3B,WAAW,CACZ,CACF,CACJ,CACJ,CACT,CAAC;KACL;AACL,CAAC,CAAC;AAxEW,QAAA,WAAW,eAwEtB"}
@@ -16,7 +16,7 @@ var Orientation_1 = require("../Orientation");
16
16
  var Types_1 = require("../Types");
17
17
  /** @hidden @internal */
18
18
  var TabSet = function (props) {
19
- var node = props.node, layout = props.layout, iconFactory = props.iconFactory, titleFactory = props.titleFactory, icons = props.icons;
19
+ var node = props.node, layout = props.layout, iconFactory = props.iconFactory, titleFactory = props.titleFactory, icons = props.icons, path = props.path;
20
20
  var toolbarRef = React.useRef(null);
21
21
  var overflowbuttonRef = React.useRef(null);
22
22
  var tabbarInnerRef = React.useRef(null);
@@ -95,7 +95,7 @@ var TabSet = function (props) {
95
95
  for (var i = 0; i < node.getChildren().length; i++) {
96
96
  var child = node.getChildren()[i];
97
97
  var isSelected = node.getSelected() === i;
98
- tabs.push(React.createElement(TabButton_1.TabButton, { layout: layout, node: child, key: child.getId(), selected: isSelected, show: true, height: node.getTabStripHeight(), iconFactory: iconFactory, titleFactory: titleFactory, icons: icons }));
98
+ tabs.push(React.createElement(TabButton_1.TabButton, { layout: layout, node: child, path: path + "/tb" + i, key: child.getId(), selected: isSelected, show: true, height: node.getTabStripHeight(), iconFactory: iconFactory, titleFactory: titleFactory, icons: icons }));
99
99
  }
100
100
  }
101
101
  var showHeader = node.getName() !== undefined;
@@ -120,24 +120,24 @@ var TabSet = function (props) {
120
120
  var toolbar;
121
121
  if (hiddenTabs.length > 0) {
122
122
  var overflowTitle = layout.i18nName(I18nLabel_1.I18nLabel.Overflow_Menu_Tooltip);
123
- buttons.push(React.createElement("button", { key: "overflowbutton", ref: overflowbuttonRef, className: cm(Types_1.CLASSES.FLEXLAYOUT__TAB_BUTTON_OVERFLOW), title: overflowTitle, onClick: onOverflowClick, onMouseDown: onInterceptMouseDown, onTouchStart: onInterceptMouseDown }, icons === null || icons === void 0 ? void 0 :
123
+ buttons.push(React.createElement("button", { key: "overflowbutton", "data-layout-path": path + "/button/overflow", ref: overflowbuttonRef, className: cm(Types_1.CLASSES.FLEXLAYOUT__TAB_BUTTON_OVERFLOW), title: overflowTitle, onClick: onOverflowClick, onMouseDown: onInterceptMouseDown, onTouchStart: onInterceptMouseDown }, icons === null || icons === void 0 ? void 0 :
124
124
  icons.more,
125
125
  hiddenTabs.length));
126
126
  }
127
127
  if (selectedTabNode !== undefined && layout.isSupportsPopout() && selectedTabNode.isEnableFloat() && !selectedTabNode.isFloating()) {
128
128
  var floatTitle = layout.i18nName(I18nLabel_1.I18nLabel.Float_Tab);
129
- buttons.push(React.createElement("button", { key: "float", title: floatTitle, className: cm(Types_1.CLASSES.FLEXLAYOUT__TAB_TOOLBAR_BUTTON) + " " + cm(Types_1.CLASSES.FLEXLAYOUT__TAB_TOOLBAR_BUTTON_FLOAT), onClick: onFloatTab, onMouseDown: onInterceptMouseDown, onTouchStart: onInterceptMouseDown }, icons === null || icons === void 0 ? void 0 : icons.popout));
129
+ buttons.push(React.createElement("button", { key: "float", "data-layout-path": path + "/button/float", title: floatTitle, className: cm(Types_1.CLASSES.FLEXLAYOUT__TAB_TOOLBAR_BUTTON) + " " + cm(Types_1.CLASSES.FLEXLAYOUT__TAB_TOOLBAR_BUTTON_FLOAT), onClick: onFloatTab, onMouseDown: onInterceptMouseDown, onTouchStart: onInterceptMouseDown }, icons === null || icons === void 0 ? void 0 : icons.popout));
130
130
  }
131
131
  if (node.canMaximize()) {
132
132
  var minTitle = layout.i18nName(I18nLabel_1.I18nLabel.Restore);
133
133
  var maxTitle = layout.i18nName(I18nLabel_1.I18nLabel.Maximize);
134
134
  var btns = showHeader ? headerButtons : buttons;
135
- btns.push(React.createElement("button", { key: "max", title: node.isMaximized() ? minTitle : maxTitle, className: cm(Types_1.CLASSES.FLEXLAYOUT__TAB_TOOLBAR_BUTTON) + " " + cm(Types_1.CLASSES.FLEXLAYOUT__TAB_TOOLBAR_BUTTON_ + (node.isMaximized() ? "max" : "min")), onClick: onMaximizeToggle, onMouseDown: onInterceptMouseDown, onTouchStart: onInterceptMouseDown }, node.isMaximized() ? icons === null || icons === void 0 ? void 0 : icons.restore : icons === null || icons === void 0 ? void 0 : icons.maximize));
135
+ btns.push(React.createElement("button", { key: "max", "data-layout-path": path + "/button/max", title: node.isMaximized() ? minTitle : maxTitle, className: cm(Types_1.CLASSES.FLEXLAYOUT__TAB_TOOLBAR_BUTTON) + " " + cm(Types_1.CLASSES.FLEXLAYOUT__TAB_TOOLBAR_BUTTON_ + (node.isMaximized() ? "max" : "min")), onClick: onMaximizeToggle, onMouseDown: onInterceptMouseDown, onTouchStart: onInterceptMouseDown }, node.isMaximized() ? icons === null || icons === void 0 ? void 0 : icons.restore : icons === null || icons === void 0 ? void 0 : icons.maximize));
136
136
  }
137
137
  if (!node.isMaximized() && node.isEnableClose()) {
138
138
  var title = layout.i18nName(I18nLabel_1.I18nLabel.Close_Tabset);
139
139
  var btns = showHeader ? headerButtons : buttons;
140
- btns.push(React.createElement("button", { key: "close", title: title, className: cm(Types_1.CLASSES.FLEXLAYOUT__TAB_TOOLBAR_BUTTON) + " " + cm(Types_1.CLASSES.FLEXLAYOUT__TAB_TOOLBAR_BUTTON_CLOSE), onClick: onClose, onMouseDown: onInterceptMouseDown, onTouchStart: onInterceptMouseDown }, icons === null || icons === void 0 ? void 0 : icons.closeTabset));
140
+ btns.push(React.createElement("button", { key: "close", "data-layout-path": path + "/button/close", title: title, className: cm(Types_1.CLASSES.FLEXLAYOUT__TAB_TOOLBAR_BUTTON) + " " + cm(Types_1.CLASSES.FLEXLAYOUT__TAB_TOOLBAR_BUTTON_CLOSE), onClick: onClose, onMouseDown: onInterceptMouseDown, onTouchStart: onInterceptMouseDown }, icons === null || icons === void 0 ? void 0 : icons.closeTabset));
141
141
  }
142
142
  toolbar = (React.createElement("div", { key: "toolbar", ref: toolbarRef, className: cm(Types_1.CLASSES.FLEXLAYOUT__TAB_TOOLBAR), onMouseDown: onInterceptMouseDown, onTouchStart: onInterceptMouseDown, onDragStart: function (e) { e.preventDefault(); } }, buttons));
143
143
  var header;
@@ -165,7 +165,7 @@ var TabSet = function (props) {
165
165
  if (node.getClassNameHeader() !== undefined) {
166
166
  tabHeaderClasses += " " + node.getClassNameHeader();
167
167
  }
168
- header = (React.createElement("div", { className: tabHeaderClasses, style: { height: node.getHeaderHeight() + "px" }, onMouseDown: onMouseDown, onContextMenu: onContextMenu, onClick: onAuxMouseClick, onAuxClick: onAuxMouseClick, onTouchStart: onMouseDown },
168
+ header = (React.createElement("div", { className: tabHeaderClasses, style: { height: node.getHeaderHeight() + "px" }, "data-layout-path": path + "/header", onMouseDown: onMouseDown, onContextMenu: onContextMenu, onClick: onAuxMouseClick, onAuxClick: onAuxMouseClick, onTouchStart: onMouseDown },
169
169
  React.createElement("div", { className: cm(Types_1.CLASSES.FLEXLAYOUT__TABSET_HEADER_CONTENT) }, headerContent),
170
170
  headerToolbar));
171
171
  }
@@ -177,12 +177,12 @@ var TabSet = function (props) {
177
177
  else {
178
178
  tabStripStyle["bottom"] = "0px";
179
179
  }
180
- tabStrip = (React.createElement("div", { className: tabStripClasses, style: tabStripStyle, onMouseDown: onMouseDown, onContextMenu: onContextMenu, onClick: onAuxMouseClick, onAuxClick: onAuxMouseClick, onTouchStart: onMouseDown },
180
+ tabStrip = (React.createElement("div", { className: tabStripClasses, style: tabStripStyle, "data-layout-path": path + "/tabstrip", onMouseDown: onMouseDown, onContextMenu: onContextMenu, onClick: onAuxMouseClick, onAuxClick: onAuxMouseClick, onTouchStart: onMouseDown },
181
181
  React.createElement("div", { ref: tabbarInnerRef, className: cm(Types_1.CLASSES.FLEXLAYOUT__TABSET_TABBAR_INNER) + " " + cm(Types_1.CLASSES.FLEXLAYOUT__TABSET_TABBAR_INNER_ + node.getTabLocation()) },
182
182
  React.createElement("div", { style: { left: position }, className: cm(Types_1.CLASSES.FLEXLAYOUT__TABSET_TABBAR_INNER_TAB_CONTAINER) + " " + cm(Types_1.CLASSES.FLEXLAYOUT__TABSET_TABBAR_INNER_TAB_CONTAINER_ + node.getTabLocation()) }, tabs)),
183
183
  toolbar));
184
184
  style = layout.styleFont(style);
185
- return (React.createElement("div", { ref: selfRef, dir: "ltr", style: style, className: cm(Types_1.CLASSES.FLEXLAYOUT__TABSET), onWheel: onMouseWheel },
185
+ return (React.createElement("div", { ref: selfRef, dir: "ltr", "data-layout-path": path, style: style, className: cm(Types_1.CLASSES.FLEXLAYOUT__TABSET), onWheel: onMouseWheel },
186
186
  header,
187
187
  tabStrip));
188
188
  };
@@ -1 +1 @@
1
- {"version":3,"file":"TabSet.js","sourceRoot":"","sources":["../../src/view/TabSet.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TabSet.js","sourceRoot":"","sources":["../../src/view/TabSet.tsx"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "flexlayout-react",
3
- "version": "0.5.19",
3
+ "version": "0.5.20",
4
4
  "description": "A multi-tab docking layout manager",
5
5
  "main": "lib/index.js",
6
6
  "types": "./declarations/index.d.ts",
@@ -20,14 +20,16 @@
20
20
  ],
21
21
  "scripts": {
22
22
  "start": "webpack serve",
23
- "build": "npm run build:commonjs && npm run build:umd && npm run build:umd:min && npm run css",
23
+ "build": " npm run css && npm run test && npm run build:commonjs && npm run build:umd && npm run build:umd:min",
24
24
  "build:commonjs": "tsc -p tsconfig2.json",
25
25
  "build:umd": "webpack --mode=development --config webpack_build.config.js",
26
26
  "build:umd:min": "webpack --mode=production --config webpack_build_min.config.js",
27
- "test": "jasmine",
28
27
  "lint:eslint": "eslint src/*",
29
28
  "doc": "typedoc --out typedoc --exclude \"**/examples/**/*.tsx\" --excludeInternal --disableSources --excludePrivate --excludeProtected --readme none ./src",
30
- "css": "sass style/gray.scss style/gray.css && sass style/light.scss style/light.css && sass style/dark.scss style/dark.css"
29
+ "css": "sass style/gray.scss style/gray.css && sass style/light.scss style/light.css && sass style/light.scss test/style/light.css && sass style/dark.scss style/dark.css",
30
+ "cypress": "cypress open-ct",
31
+ "cypress-firefox": "cypress open-ct --browser firefox",
32
+ "test": "cypress run-ct"
31
33
  },
32
34
  "author": "Caplin Systems Ltd",
33
35
  "repository": "https://github.com/caplin/FlexLayout",
@@ -40,13 +42,16 @@
40
42
  "extends": "react-app"
41
43
  },
42
44
  "devDependencies": {
43
- "@types/jasmine": "^3.7.2",
45
+ "react": "^17.0.2",
46
+ "react-dom": "^17.0.2",
47
+ "@cypress/react": "^5.10.2",
48
+ "@cypress/webpack-dev-server": "^1.7.0",
44
49
  "@types/node": "^15.0.2",
45
50
  "@types/react": "^17.0.5",
46
51
  "@types/react-dom": "^17.0.4",
47
52
  "@types/uuid": "^8.3.1",
48
53
  "awesome-typescript-loader": "^5.2.0",
49
- "jasmine": "^3.7.0",
54
+ "cypress": "^8.7.0",
50
55
  "prettier": "^2.3.0",
51
56
  "react-scripts": "4.0.3",
52
57
  "sass": "^1.32.12",
package/src/PopupMenu.tsx CHANGED
@@ -81,9 +81,10 @@ const PopupMenu = (props: IPopupMenuProps) => {
81
81
  event.stopPropagation();
82
82
  };
83
83
 
84
- const itemElements = items.map((item) => (
84
+ const itemElements = items.map((item, i) => (
85
85
  <div key={item.index}
86
86
  className={classNameMapper(CLASSES.FLEXLAYOUT__POPUP_MENU_ITEM)}
87
+ data-layout-path={"/popup-menu/tb" + i}
87
88
  onClick={(event) => onItemClick(item, event)}
88
89
  title={item.node.getHelpText()}>
89
90
  {item.node._getRenderedName()}
@@ -91,7 +92,9 @@ const PopupMenu = (props: IPopupMenuProps) => {
91
92
  ));
92
93
 
93
94
  return (
94
- <div className={classNameMapper(CLASSES.FLEXLAYOUT__POPUP_MENU)}>
95
+ <div className={classNameMapper(CLASSES.FLEXLAYOUT__POPUP_MENU)}
96
+ data-layout-path="/popup-menu"
97
+ >
95
98
  {itemElements}
96
99
  </div>);
97
100
  };
@@ -17,11 +17,12 @@ export interface IBorderButtonProps {
17
17
  iconFactory?: (node: TabNode) => React.ReactNode | undefined;
18
18
  titleFactory?: (node: TabNode) => React.ReactNode | undefined;
19
19
  icons?: IIcons;
20
+ path: string;
20
21
  }
21
22
 
22
23
  /** @hidden @internal */
23
24
  export const BorderButton = (props: IBorderButtonProps) => {
24
- const { layout, node, selected, border, iconFactory, titleFactory, icons } = props;
25
+ const { layout, node, selected, border, iconFactory, titleFactory, icons, path } = props;
25
26
  const selfRef = React.useRef<HTMLDivElement | null>(null);
26
27
 
27
28
  const onMouseDown = (event: React.MouseEvent<HTMLDivElement, MouseEvent> | React.TouchEvent<HTMLDivElement>) => {
@@ -118,7 +119,7 @@ export const BorderButton = (props: IBorderButtonProps) => {
118
119
  }
119
120
  }
120
121
 
121
- if (typeof leadingContent === undefined && typeof node.getIcon() !== undefined) {
122
+ if (leadingContent === undefined && node.getIcon() !== undefined) {
122
123
  leadingContent = <img src={node.getIcon()} alt="leadingContent" />;
123
124
  }
124
125
 
@@ -135,7 +136,14 @@ export const BorderButton = (props: IBorderButtonProps) => {
135
136
  if (node.isEnableClose()) {
136
137
  const closeTitle = layout.i18nName(I18nLabel.Close_Tab);
137
138
  buttons.push(
138
- <div key="close" title={closeTitle} className={cm(CLASSES.FLEXLAYOUT__BORDER_BUTTON_TRAILING)} onMouseDown={onCloseMouseDown} onClick={onClose} onTouchStart={onCloseMouseDown}>
139
+ <div
140
+ key="close"
141
+ data-layout-path={path + "/button/close"}
142
+ title={closeTitle}
143
+ className={cm(CLASSES.FLEXLAYOUT__BORDER_BUTTON_TRAILING)}
144
+ onMouseDown={onCloseMouseDown}
145
+ onClick={onClose}
146
+ onTouchStart={onCloseMouseDown}>
139
147
  {icons?.close}
140
148
  </div>
141
149
  );
@@ -143,6 +151,7 @@ export const BorderButton = (props: IBorderButtonProps) => {
143
151
 
144
152
  return (
145
153
  <div ref={selfRef} style={{}} className={classNames}
154
+ data-layout-path={path}
146
155
  onMouseDown={onMouseDown}
147
156
  onClick={onAuxMouseClick}
148
157
  onAuxClick={onAuxMouseClick}
@@ -19,11 +19,12 @@ export interface IBorderTabSetProps {
19
19
  iconFactory?: (node: TabNode) => React.ReactNode | undefined;
20
20
  titleFactory?: (node: TabNode) => React.ReactNode | undefined;
21
21
  icons?: IIcons;
22
+ path: string;
22
23
  }
23
24
 
24
25
  /** @hidden @internal */
25
26
  export const BorderTabSet = (props: IBorderTabSetProps) => {
26
- const { border, layout, iconFactory, titleFactory, icons } = props;
27
+ const { border, layout, iconFactory, titleFactory, icons, path } = props;
27
28
 
28
29
  const toolbarRef = React.useRef<HTMLDivElement | null>(null);
29
30
  const overflowbuttonRef = React.useRef<HTMLButtonElement | null>(null);
@@ -78,6 +79,7 @@ export const BorderTabSet = (props: IBorderTabSetProps) => {
78
79
  layout={layout}
79
80
  border={border.getLocation().getName()}
80
81
  node={child}
82
+ path={path + "/tb" + i}
81
83
  key={child.getId()}
82
84
  selected={isSelected}
83
85
  iconFactory={iconFactory}
@@ -159,6 +161,7 @@ export const BorderTabSet = (props: IBorderTabSetProps) => {
159
161
 
160
162
  return (
161
163
  <div ref={selfRef} dir="ltr" style={style} className={borderClasses}
164
+ data-layout-path={path}
162
165
  onClick={onAuxMouseClick}
163
166
  onAuxClick={onAuxMouseClick}
164
167
  onContextMenu={onContextMenu}
@@ -25,6 +25,7 @@ import { FloatingWindow } from "./FloatingWindow";
25
25
  import { FloatingWindowTab } from "./FloatingWindowTab";
26
26
  import { TabFloating } from "./TabFloating";
27
27
  import { IJsonTabNode } from "../model/IJsonModel";
28
+ import { Orientation } from "..";
28
29
 
29
30
  export type CustomDragCallback = (dragging: TabNode | IJsonTabNode, over: TabNode, x: number, y: number, location: DockLocation) => void;
30
31
  export type DragRectRenderCallback = (text: String, node?: Node, json?: IJsonTabNode) => React.ReactElement | undefined;
@@ -163,8 +164,8 @@ export interface ILayoutCallbacks {
163
164
  setEditingTab(tabNode?: TabNode): void;
164
165
  getEditingTab(): TabNode | undefined;
165
166
  getOnRenderFloatingTabPlaceholder(): FloatingTabPlaceholderRenderCallback | undefined;
166
- showContextMenu(node: TabNode | TabSetNode | BorderNode, event: React.MouseEvent<HTMLElement, MouseEvent>) : void;
167
- auxMouseClick(node: TabNode | TabSetNode | BorderNode, event: React.MouseEvent<HTMLElement, MouseEvent>) : void;
167
+ showContextMenu(node: TabNode | TabSetNode | BorderNode, event: React.MouseEvent<HTMLElement, MouseEvent>): void;
168
+ auxMouseClick(node: TabNode | TabSetNode | BorderNode, event: React.MouseEvent<HTMLElement, MouseEvent>): void;
168
169
  }
169
170
 
170
171
  // Popout windows work in latest browsers based on webkit (Chrome, Opera, Safari, latest Edge) and Firefox. They do
@@ -465,7 +466,7 @@ export class Layout extends React.Component<ILayoutProps, ILayoutState> {
465
466
  this.centerRect = this.props.model._layout(this.state.rect, metrics);
466
467
 
467
468
  this.renderBorder(this.props.model.getBorderSet(), borderComponents, tabComponents, floatingWindows, splitterComponents);
468
- this.renderChildren(this.props.model.getRoot(), tabSetComponents, tabComponents, floatingWindows, splitterComponents);
469
+ this.renderChildren("", this.props.model.getRoot(), tabSetComponents, tabComponents, floatingWindows, splitterComponents);
469
470
 
470
471
  if (this.edgesShown) {
471
472
  this.repositionEdges(this.state.rect)
@@ -543,10 +544,12 @@ export class Layout extends React.Component<ILayoutProps, ILayoutState> {
543
544
  /** @hidden @internal */
544
545
  renderBorder(borderSet: BorderSet, borderComponents: React.ReactNode[], tabComponents: Record<string, React.ReactNode>, floatingWindows: React.ReactNode[], splitterComponents: React.ReactNode[]) {
545
546
  for (const border of borderSet.getBorders()) {
547
+ const borderPath = `/border/${border.getLocation().getName()}`;
546
548
  if (border.isShowing()) {
547
549
  borderComponents.push(
548
550
  <BorderTabSet
549
- key={"border_" + border.getLocation().getName()}
551
+ key={`border_${border.getLocation().getName()}`}
552
+ path={borderPath}
550
553
  border={border}
551
554
  layout={this}
552
555
  iconFactory={this.props.iconFactory}
@@ -556,10 +559,13 @@ export class Layout extends React.Component<ILayoutProps, ILayoutState> {
556
559
  );
557
560
  const drawChildren = border._getDrawChildren();
558
561
  let i = 0;
562
+ let tabCount = 0;
559
563
  for (const child of drawChildren) {
560
564
  if (child instanceof SplitterNode) {
561
- splitterComponents.push(<Splitter key={child.getId()} layout={this} node={child} />);
565
+ let path = borderPath + "/s";
566
+ splitterComponents.push(<Splitter key={child.getId()} layout={this} node={child} path={path} />);
562
567
  } else if (child instanceof TabNode) {
568
+ let path = borderPath + "/t" + tabCount++;
563
569
  if (this.supportsPopout && child.isFloating()) {
564
570
  const rect = this._getScreenRect(child);
565
571
  floatingWindows.push(
@@ -575,9 +581,19 @@ export class Layout extends React.Component<ILayoutProps, ILayoutState> {
575
581
  <FloatingWindowTab layout={this} node={child} factory={this.props.factory} />
576
582
  </FloatingWindow>
577
583
  );
578
- tabComponents[child.getId()] = <TabFloating key={child.getId()} layout={this} node={child} selected={i === border.getSelected()} />;
584
+ tabComponents[child.getId()] = <TabFloating key={child.getId()}
585
+ layout={this}
586
+ path={path}
587
+ node={child}
588
+ selected={i === border.getSelected()
589
+ } />;
579
590
  } else {
580
- tabComponents[child.getId()] = <Tab key={child.getId()} layout={this} node={child} selected={i === border.getSelected()} factory={this.props.factory} />;
591
+ tabComponents[child.getId()] = <Tab key={child.getId()}
592
+ layout={this}
593
+ path={path}
594
+ node={child}
595
+ selected={i === border.getSelected()}
596
+ factory={this.props.factory} />;
581
597
  }
582
598
  }
583
599
  i++;
@@ -587,16 +603,22 @@ export class Layout extends React.Component<ILayoutProps, ILayoutState> {
587
603
  }
588
604
 
589
605
  /** @hidden @internal */
590
- renderChildren(node: RowNode | TabSetNode, tabSetComponents: React.ReactNode[], tabComponents: Record<string, React.ReactNode>, floatingWindows: React.ReactNode[], splitterComponents: React.ReactNode[]) {
606
+ renderChildren(path: string, node: RowNode | TabSetNode, tabSetComponents: React.ReactNode[], tabComponents: Record<string, React.ReactNode>, floatingWindows: React.ReactNode[], splitterComponents: React.ReactNode[]) {
591
607
  const drawChildren = node._getDrawChildren();
608
+ let splitterCount = 0;
609
+ let tabCount = 0;
610
+ let rowCount = 0;
592
611
 
593
612
  for (const child of drawChildren!) {
594
613
  if (child instanceof SplitterNode) {
595
- splitterComponents.push(<Splitter key={child.getId()} layout={this} node={child} />);
614
+ const newPath = path + "/s" + (splitterCount++);
615
+ splitterComponents.push(<Splitter key={child.getId()} layout={this} path={newPath} node={child} />);
596
616
  } else if (child instanceof TabSetNode) {
597
- tabSetComponents.push(<TabSet key={child.getId()} layout={this} node={child} iconFactory={this.props.iconFactory} titleFactory={this.props.titleFactory} icons={this.icons} />);
598
- this.renderChildren(child, tabSetComponents, tabComponents, floatingWindows, splitterComponents);
617
+ const newPath = path + "/ts" + (rowCount++);
618
+ tabSetComponents.push(<TabSet key={child.getId()} layout={this} path={newPath} node={child} iconFactory={this.props.iconFactory} titleFactory={this.props.titleFactory} icons={this.icons} />);
619
+ this.renderChildren(newPath, child, tabSetComponents, tabComponents, floatingWindows, splitterComponents);
599
620
  } else if (child instanceof TabNode) {
621
+ const newPath = path + "/t" + (tabCount++);
600
622
  const selectedTab = child.getParent()!.getChildren()[(child.getParent() as TabSetNode).getSelected()];
601
623
  if (selectedTab === undefined) {
602
624
  // this should not happen!
@@ -617,13 +639,14 @@ export class Layout extends React.Component<ILayoutProps, ILayoutState> {
617
639
  <FloatingWindowTab layout={this} node={child} factory={this.props.factory} />
618
640
  </FloatingWindow>
619
641
  );
620
- tabComponents[child.getId()] = <TabFloating key={child.getId()} layout={this} node={child} selected={child === selectedTab} />;
642
+ tabComponents[child.getId()] = <TabFloating key={child.getId()} layout={this} path={newPath} node={child} selected={child === selectedTab} />;
621
643
  } else {
622
- tabComponents[child.getId()] = <Tab key={child.getId()} layout={this} node={child} selected={child === selectedTab} factory={this.props.factory} />;
644
+ tabComponents[child.getId()] = <Tab key={child.getId()} layout={this} path={newPath} node={child} selected={child === selectedTab} factory={this.props.factory} />;
623
645
  }
624
646
  } else {
625
647
  // is row
626
- this.renderChildren(child as RowNode, tabSetComponents, tabComponents, floatingWindows, splitterComponents);
648
+ const newPath = path + ((child.getOrientation() === Orientation.HORZ) ? "/r" : "/c") + (rowCount++);
649
+ this.renderChildren(newPath, child as RowNode, tabSetComponents, tabComponents, floatingWindows, splitterComponents);
627
650
  }
628
651
  }
629
652
  }
@@ -701,6 +724,7 @@ export class Layout extends React.Component<ILayoutProps, ILayoutState> {
701
724
  const domRect = this.dragDiv.getBoundingClientRect();
702
725
  const r = new Rect(0, 0, domRect?.width, domRect?.height);
703
726
  r.centerInRect(this.state.rect);
727
+ this.dragDiv.setAttribute("data-layout-path", "/drag-rectangle");
704
728
  this.dragDiv.style.left = r.x + "px";
705
729
  this.dragDiv.style.top = r.y + "px";
706
730
  }
@@ -827,6 +851,7 @@ export class Layout extends React.Component<ILayoutProps, ILayoutState> {
827
851
  if (this.dragDiv == null) {
828
852
  this.dragDiv = this.currentDocument!.createElement("div");
829
853
  this.dragDiv.className = this.getClassName(CLASSES.FLEXLAYOUT__DRAG_RECT);
854
+ this.dragDiv.setAttribute("data-layout-path", "/drag-rectangle");
830
855
  this.dragRectRender(this.dragDivText, this.dragNode, this.newTabJson);
831
856
 
832
857
  rootdiv.appendChild(this.dragDiv);
@@ -13,11 +13,12 @@ import { ILayoutCallbacks } from "./Layout";
13
13
  export interface ISplitterProps {
14
14
  layout: ILayoutCallbacks;
15
15
  node: SplitterNode;
16
+ path: string;
16
17
  }
17
18
 
18
19
  /** @hidden @internal */
19
20
  export const Splitter = (props: ISplitterProps) => {
20
- const { layout, node } = props;
21
+ const { layout, node, path } = props;
21
22
 
22
23
  const pBounds = React.useRef<number[]>([]);
23
24
  const outlineDiv = React.useRef<HTMLDivElement | undefined>(undefined);
@@ -132,6 +133,7 @@ export const Splitter = (props: ISplitterProps) => {
132
133
  if (extra === 0) {
133
134
  return (<div
134
135
  style={style}
136
+ data-layout-path={path}
135
137
  className={className}
136
138
  onTouchStart={onMouseDown}
137
139
  onMouseDown={onMouseDown}>
@@ -156,6 +158,7 @@ export const Splitter = (props: ISplitterProps) => {
156
158
  return (
157
159
  <div
158
160
  style={style}
161
+ data-layout-path={path}
159
162
  className={className}>
160
163
  <div
161
164
  style={style2}
package/src/view/Tab.tsx CHANGED
@@ -15,11 +15,12 @@ export interface ITabProps {
15
15
  selected: boolean;
16
16
  node: TabNode;
17
17
  factory: (node: TabNode) => React.ReactNode;
18
+ path: string;
18
19
  }
19
20
 
20
21
  /** @hidden @internal */
21
22
  export const Tab = (props: ITabProps) => {
22
- const { layout, selected, node, factory } = props;
23
+ const { layout, selected, node, factory, path } = props;
23
24
  const [renderComponent, setRenderComponent] = React.useState<boolean>(!props.node.isEnableRenderOnDemand() || props.selected);
24
25
 
25
26
  React.useLayoutEffect(() => {
@@ -64,7 +65,12 @@ export const Tab = (props: ITabProps) => {
64
65
  }
65
66
 
66
67
  return (
67
- <div className={className} onMouseDown={onMouseDown} onTouchStart={onMouseDown} style={style}>
68
+ <div
69
+ className={className}
70
+ data-layout-path={path}
71
+ onMouseDown={onMouseDown}
72
+ onTouchStart={onMouseDown}
73
+ style={style}>
68
74
  <ErrorBoundary message={props.layout.i18nName(I18nLabel.Error_rendering_component)}>
69
75
  <Fragment>{child}</Fragment>
70
76
  </ErrorBoundary>
@@ -19,11 +19,12 @@ export interface ITabButtonProps {
19
19
  iconFactory?: (node: TabNode) => React.ReactNode | undefined;
20
20
  titleFactory?: (node: TabNode) => React.ReactNode | undefined;
21
21
  icons?: IIcons;
22
+ path: string;
22
23
  }
23
24
 
24
25
  /** @hidden @internal */
25
26
  export const TabButton = (props: ITabButtonProps) => {
26
- const { layout, node, show, selected, iconFactory, titleFactory, icons } = props;
27
+ const { layout, node, show, selected, iconFactory, titleFactory, icons, path } = props;
27
28
  const selfRef = React.useRef<HTMLDivElement | null>(null);
28
29
  const contentRef = React.useRef<HTMLInputElement | null>(null);
29
30
  const contentWidth = React.useRef<number>(0);
@@ -55,7 +56,7 @@ export const TabButton = (props: ITabButtonProps) => {
55
56
  layout.setEditingTab(node);
56
57
  layout.getCurrentDocument()!.body.addEventListener("mousedown", onEndEdit);
57
58
  layout.getCurrentDocument()!.body.addEventListener("touchstart", onEndEdit);
58
- }
59
+ }
59
60
  // else {
60
61
  // const parentNode = node.getParent() as TabSetNode;
61
62
  // if (parentNode.canMaximize()) {
@@ -152,8 +153,8 @@ export const TabButton = (props: ITabButtonProps) => {
152
153
  let name = node.getName();
153
154
 
154
155
  function isTitleObject(obj: any): obj is ITitleObject {
155
- return obj.titleContent !== undefined
156
- }
156
+ return obj.titleContent !== undefined
157
+ }
157
158
 
158
159
  if (titleFactory !== undefined) {
159
160
  const titleObj = titleFactory(node);
@@ -170,7 +171,7 @@ export const TabButton = (props: ITabButtonProps) => {
170
171
  }
171
172
  }
172
173
 
173
- if (typeof leadingContent === undefined && typeof node.getIcon() !== undefined) {
174
+ if (leadingContent === undefined && node.getIcon() !== undefined) {
174
175
  leadingContent = <img src={node.getIcon()} alt="leadingContent" />;
175
176
  }
176
177
 
@@ -196,6 +197,7 @@ export const TabButton = (props: ITabButtonProps) => {
196
197
  style={contentStyle}
197
198
  ref={contentRef}
198
199
  className={cm(CLASSES.FLEXLAYOUT__TAB_BUTTON_TEXTBOX)}
200
+ data-layout-path={path + "/textbox"}
199
201
  type="text"
200
202
  autoFocus={true}
201
203
  defaultValue={node.getName()}
@@ -209,7 +211,13 @@ export const TabButton = (props: ITabButtonProps) => {
209
211
  if (node.isEnableClose()) {
210
212
  const closeTitle = layout.i18nName(I18nLabel.Close_Tab);
211
213
  buttons.push(
212
- <div key="close" title={closeTitle} className={cm(CLASSES.FLEXLAYOUT__TAB_BUTTON_TRAILING)} onMouseDown={onCloseMouseDown} onClick={onClose} onTouchStart={onCloseMouseDown}>
214
+ <div
215
+ key="close"
216
+ data-layout-path={path + "/button/close"}
217
+ title={closeTitle}
218
+ className={cm(CLASSES.FLEXLAYOUT__TAB_BUTTON_TRAILING)}
219
+ onMouseDown={onCloseMouseDown} onClick={onClose}
220
+ onTouchStart={onCloseMouseDown}>
213
221
  {icons?.close}
214
222
  </div>
215
223
  );
@@ -218,6 +226,7 @@ export const TabButton = (props: ITabButtonProps) => {
218
226
  return (
219
227
  <div
220
228
  ref={selfRef}
229
+ data-layout-path={path}
221
230
  style={{
222
231
  visibility: show ? "visible" : "hidden",
223
232
  }}
@@ -11,11 +11,12 @@ export interface ITabFloatingProps {
11
11
  layout: ILayoutCallbacks;
12
12
  selected: boolean;
13
13
  node: TabNode;
14
+ path: string;
14
15
  }
15
16
 
16
17
  /** @hidden @internal */
17
18
  export const TabFloating = (props: ITabFloatingProps) => {
18
- const { layout, selected, node } = props;
19
+ const { layout, selected, node, path } = props;
19
20
 
20
21
  const showPopout = () => {
21
22
  if (node.getWindow()) {
@@ -65,7 +66,11 @@ export const TabFloating = (props: ITabFloatingProps) => {
65
66
  );
66
67
  } else {
67
68
  return (
68
- <div className={cm(CLASSES.FLEXLAYOUT__TAB_FLOATING)} onMouseDown={onMouseDown} onTouchStart={onMouseDown} style={style}>
69
+ <div className={cm(CLASSES.FLEXLAYOUT__TAB_FLOATING)}
70
+ data-layout-path={path}
71
+ onMouseDown={onMouseDown}
72
+ onTouchStart={onMouseDown}
73
+ style={style}>
69
74
  <div className={cm(CLASSES.FLEXLAYOUT__TAB_FLOATING_INNER)}>
70
75
  <div>{message}</div>
71
76
  <div>