Skip to content

Commit e6f7dca

Browse files
authored
fix(datagrid): fix multiple popover not hiding (#830)
ref: MANAGER-12609 Signed-off-by: Quentin Pavy <[email protected]>
1 parent 6e8955e commit e6f7dca

File tree

4 files changed

+13
-8
lines changed

4 files changed

+13
-8
lines changed

packages/components/datagrid/src/js/datagrid.controller.js

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -360,8 +360,12 @@ export default class DatagridController {
360360
return this.refreshDatagridPromise;
361361
}
362362

363-
sort(column) {
364-
if (!column || !column.sortable) {
363+
sort(column, event) {
364+
const popoverClassNames = ['oui-popover-button', 'oui-popover__content', 'oui-popover__close-button'];
365+
if (
366+
!column
367+
|| !column.sortable
368+
|| popoverClassNames.some((className) => event.target.classList.contains(className))) {
365369
return;
366370
}
367371

packages/components/datagrid/src/js/datagrid.html

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
ng-attr-tabindex="{{column.sortable ? '0' : '-1'}}"
2929
ng-class="$ctrl.getSortableClasses(column)"
3030
ng-repeat="column in $ctrl.columns track by $index"
31-
ng-click="::$ctrl.sort(column)">
31+
ng-click="::$ctrl.sort(column, $event)">
3232
<span ng-bind="column.title"></span>
3333
<span class="oui-icon"
3434
ng-class="$ctrl.getSortableIcons(column)"
@@ -41,6 +41,7 @@
4141
class="oui-popover-button"
4242
oui-popover="{{:: column.helper }}"
4343
oui-popover-placement="right"
44+
oui-popover-id="{{:: 'popover-' + column.name}}"
4445
></button>
4546
</th>
4647
<th ng-if="$ctrl.hasActionMenu || $ctrl.customizable"

packages/components/popover/src/js/popover.controller.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -119,8 +119,8 @@ export default class PopoverController {
119119

120120
// Avoid events if the opening is handled from outside
121121
if (angular.isUndefined(this.$attrs.ouiPopoverOpen)) {
122-
this.$document.on('click', (evt) => this.documentClickHandler(evt));
123-
this.$document.on('keydown', (evt) => this.triggerKeyHandler(evt));
122+
this.$document.on(`click.${this.id}`, (evt) => this.documentClickHandler(evt));
123+
this.$document.on(`keydown.${this.id}`, (evt) => this.triggerKeyHandler(evt));
124124
}
125125

126126
this.$element.attr('aria-expanded', true);
@@ -133,8 +133,8 @@ export default class PopoverController {
133133
this.isPopoverOpen = false;
134134

135135
if (angular.isUndefined(this.$attrs.ouiPopoverOpen)) {
136-
this.$document.off('click');
137-
this.$document.off('keydown');
136+
this.$document.off(`click.${this.id}`);
137+
this.$document.off(`keydown.${this.id}`);
138138
}
139139

140140
this.$element.attr('aria-expanded', false);

packages/components/popover/src/less/popover.less

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636
min-height: @oui-popover-close-button-icon-size;
3737
min-width: @oui-popover-close-button-icon-size;
3838
padding: 0;
39-
position: absolute;
39+
position: absolute !important;
4040
right: @oui-popover-close-button-right;
4141
top: @oui-popover-close-button-top;
4242

0 commit comments

Comments
 (0)