Fixed #3388 - DataTable: Disable filter overlay panel when clicking outside
parent
b0dd082644
commit
c3c3edcde8
|
@ -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',
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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>
|
||||||
|
|
Loading…
Reference in New Issue