Fixed #3388 - DataTable: Disable filter overlay panel when clicking outside

pull/3518/head^2
Tuğçe Küçükoğlu 2023-01-11 11:35:41 +03:00
parent b0dd082644
commit c3c3edcde8
7 changed files with 37 additions and 0 deletions

View File

@ -137,6 +137,12 @@ const DataTableProps = [
default: 'null', default: 'null',
description: 'Layout of the filter elements, valid values are "row" and "menu".' description: 'Layout of the filter elements, valid values are "row" and "menu".'
}, },
{
name: 'filterOnOutsideClick',
type: 'boolean',
default: 'false',
description: 'Whether to trigger filter apply when outside of the element is clicked.'
},
{ {
name: 'filterLocale', name: 'filterLocale',
type: 'string', type: 'string',

View File

@ -182,6 +182,10 @@ export default {
type: Object, type: Object,
default: null default: null
}, },
filterOnOutsideClick: {
type: Boolean,
default: false
},
filterMenuClass: { filterMenuClass: {
type: String, type: String,
default: null default: null
@ -453,6 +457,7 @@ export default {
if (!this.outsideClickListener) { if (!this.outsideClickListener) {
this.outsideClickListener = (event) => { this.outsideClickListener = (event) => {
if (this.overlayVisible && !this.selfClick && this.isOutsideClicked(event.target)) { if (this.overlayVisible && !this.selfClick && this.isOutsideClicked(event.target)) {
this.filterOnOutsideClick && this.applyFilter();
this.overlayVisible = false; this.overlayVisible = false;
} }

View File

@ -587,6 +587,11 @@ export interface DataTableProps {
* Fields for global filter * Fields for global filter
*/ */
globalFilterFields?: string[] | undefined; globalFilterFields?: string[] | undefined;
/**
* Whether to trigger filter apply when outside of the element is clicked.
* Default value is false.
*/
filterOnOutsideClick?: boolean | undefined;
/** /**
* Locale to use in filtering. The default locale is the host environment's current locale. * Locale to use in filtering. The default locale is the host environment's current locale.
*/ */

View File

@ -49,6 +49,7 @@
:filters="d_filters" :filters="d_filters"
:filtersStore="filters" :filtersStore="filters"
:filterDisplay="filterDisplay" :filterDisplay="filterDisplay"
:filterOnOutsideClick="filterOnOutsideClick"
:filterInputProps="filterInputProps" :filterInputProps="filterInputProps"
@column-click="onColumnHeaderClick($event)" @column-click="onColumnHeaderClick($event)"
@column-mousedown="onColumnHeaderMouseDown($event)" @column-mousedown="onColumnHeaderMouseDown($event)"
@ -505,6 +506,10 @@ export default {
type: Boolean, type: Boolean,
default: false default: false
}, },
filterOnOutsideClick: {
type: Boolean,
default: false
},
tableStyle: { tableStyle: {
type: null, type: null,
default: null default: null

View File

@ -36,6 +36,7 @@
:filters="filters" :filters="filters"
:filtersStore="filtersStore" :filtersStore="filtersStore"
:filterInputProps="filterInputProps" :filterInputProps="filterInputProps"
:filterOnOutsideClick="filterOnOutsideClick"
@filter-change="$emit('filter-change', $event)" @filter-change="$emit('filter-change', $event)"
@filter-apply="$emit('filter-apply')" @filter-apply="$emit('filter-apply')"
:filterMenuStyle="columnProp('filterMenuStyle')" :filterMenuStyle="columnProp('filterMenuStyle')"
@ -143,6 +144,10 @@ export default {
type: Boolean, type: Boolean,
default: false default: false
}, },
filterOnOutsideClick: {
type: Boolean,
default: false
},
filterInputProps: { filterInputProps: {
type: null, type: null,
default: null default: null

View File

@ -27,6 +27,7 @@
:filters="filters" :filters="filters"
:filterDisplay="filterDisplay" :filterDisplay="filterDisplay"
:filtersStore="filtersStore" :filtersStore="filtersStore"
:filterOnOutsideClick="filterOnOutsideClick"
:filterInputProps="filterInputProps" :filterInputProps="filterInputProps"
@filter-change="$emit('filter-change', $event)" @filter-change="$emit('filter-change', $event)"
@filter-apply="$emit('filter-apply')" @filter-apply="$emit('filter-apply')"
@ -202,6 +203,10 @@ export default {
type: Boolean, type: Boolean,
default: false default: false
}, },
filterOnOutsideClick: {
type: Boolean,
default: false
},
filterInputProps: { filterInputProps: {
type: null, type: null,
default: null default: null

View File

@ -2038,6 +2038,12 @@ export default {
<td>null</td> <td>null</td>
<td>Layout of the filter elements, valid values are "row" and "menu".</td> <td>Layout of the filter elements, valid values are "row" and "menu".</td>
</tr> </tr>
<tr>
<td>filterOnOutsideClick</td>
<td>boolean</td>
<td>false</td>
<td>Whether to trigger filter apply when outside of the element is clicked.</td>
</tr>
<tr> <tr>
<td>filterLocale</td> <td>filterLocale</td>
<td>string</td> <td>string</td>