Skip to content

Commit 77d09c0

Browse files
More consistent positioning of menu.
This is done by wrapping panel item content with a <div> and clamping the context menu to it.
1 parent a2684bc commit 77d09c0

File tree

6 files changed

+23
-7
lines changed

6 files changed

+23
-7
lines changed

src/_panel.scss

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,10 @@
5555
position: relative;
5656
box-sizing: border-box;
5757
padding: $base-margin / 1.5;
58+
59+
& > div {
60+
display: inherit;
61+
}
5862
}
5963

6064
.osjs-panel-item--icon {

src/items/_menu.scss

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
align-items: center;
3434
padding: 0;
3535

36-
& > div {
36+
& > .osjs-panel-item-content > div {
3737
padding: $base-margin / 1.5;
3838
}
3939
}

src/items/_tray.scss

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
display: flex;
3333
padding: 0;
3434

35-
& > div {
35+
& > .osjs-panel-item-content > div {
3636
flex: 1 1;
3737
padding: $base-margin / 1.5 $base-margin / 3;
3838

@@ -43,3 +43,10 @@
4343
}
4444
}
4545
}
46+
47+
.osjs-root[data-dir="rtl"] {
48+
.osjs-panel-item[data-name=tray] > .osjs-panel-item-content > div:not(:last-child) {
49+
margin-right: 0;
50+
margin-left: $base-margin;
51+
}
52+
}

src/items/_windows.scss

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434
overflow: hidden;
3535
padding: 0;
3636

37-
& > div {
37+
& > .osjs-panel-item-content > div {
3838
cursor: pointer;
3939
flex: initial;
4040
padding: $base-margin / 1.5;

src/items/menu.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,7 @@ export default class MenuPanelItem extends PanelItem {
170170

171171
this.core.make('osjs/contextmenu').show({
172172
menu: makeMenu([].concat(packages)),
173-
position: ev.target,
173+
position: this.$element,
174174
callback: (item) => {
175175
const {name, action} = item.data || {};
176176

src/panel-item.js

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ export default class PanelItem extends EventEmitter {
5353
this.state = {};
5454
this.actions = {};
5555
this.inited = false;
56+
this.$element = null;
5657
}
5758

5859
/**
@@ -76,9 +77,13 @@ export default class PanelItem extends EventEmitter {
7677
this.inited = true;
7778
this.emit('init', this);
7879

80+
this.$element = document.createElement('div');
81+
this.$element.classList.add('osjs-panel-item');
82+
this.panel.$element.appendChild(this.$element);
83+
7984
return app(state, actions, (state, actions) => {
8085
return this.render(state, actions);
81-
}, this.panel.$element);
86+
}, this.$element);
8287
}
8388

8489
/**
@@ -88,9 +93,9 @@ export default class PanelItem extends EventEmitter {
8893
* @return {Node} A *virtual* node
8994
*/
9095
render(name, children = []) {
96+
this.$element.setAttribute('data-name', name);
9197
return h('div', {
92-
className: 'osjs-panel-item',
93-
'data-name': name
98+
className: 'osjs-panel-item-content'
9499
}, children);
95100
}
96101

0 commit comments

Comments
 (0)