fix(filter): do not match join operator
Partial fix for https://kolaente.dev/vikunja/vikunja/issues/2194
This commit is contained in:
parent
0e2ad5dde6
commit
e44897e0d4
@ -10,13 +10,15 @@ import User from '@/components/misc/user.vue'
|
|||||||
import ProjectUserService from '@/services/projectUsers'
|
import ProjectUserService from '@/services/projectUsers'
|
||||||
import {useProjectStore} from '@/stores/projects'
|
import {useProjectStore} from '@/stores/projects'
|
||||||
import {
|
import {
|
||||||
DATE_FIELDS,
|
|
||||||
ASSIGNEE_FIELDS,
|
ASSIGNEE_FIELDS,
|
||||||
AUTOCOMPLETE_FIELDS,
|
AUTOCOMPLETE_FIELDS,
|
||||||
AVAILABLE_FILTER_FIELDS,
|
AVAILABLE_FILTER_FIELDS,
|
||||||
|
DATE_FIELDS,
|
||||||
FILTER_JOIN_OPERATOR,
|
FILTER_JOIN_OPERATOR,
|
||||||
FILTER_OPERATORS,
|
FILTER_OPERATORS,
|
||||||
FILTER_OPERATORS_REGEX, LABEL_FIELDS, getFilterFieldRegexPattern,
|
FILTER_OPERATORS_REGEX,
|
||||||
|
getFilterFieldRegexPattern,
|
||||||
|
LABEL_FIELDS,
|
||||||
} from '@/helpers/filters'
|
} from '@/helpers/filters'
|
||||||
|
|
||||||
const {
|
const {
|
||||||
@ -110,9 +112,9 @@ const highlightedFilterQuery = computed(() => {
|
|||||||
if (typeof value === 'undefined') {
|
if (typeof value === 'undefined') {
|
||||||
value = ''
|
value = ''
|
||||||
}
|
}
|
||||||
|
|
||||||
let labelTitles = [value]
|
let labelTitles = [value.trim()]
|
||||||
if(operator === 'in' || operator === '?=') {
|
if (operator === 'in' || operator === '?=') {
|
||||||
labelTitles = value.split(',').map(v => v.trim())
|
labelTitles = value.split(',').map(v => v.trim())
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -122,7 +124,8 @@ const highlightedFilterQuery = computed(() => {
|
|||||||
labelsHtml.push(`<span class="filter-query__label_value" style="background-color: ${label?.hexColor}; color: ${label?.textColor}">${label?.title ?? t}</span>`)
|
labelsHtml.push(`<span class="filter-query__label_value" style="background-color: ${label?.hexColor}; color: ${label?.textColor}">${label?.title ?? t}</span>`)
|
||||||
})
|
})
|
||||||
|
|
||||||
return `${f} ${operator} ${labelsHtml.join(', ')}`
|
const endSpace = value.endsWith(' ') ? ' ' : ''
|
||||||
|
return `${f} ${operator} ${labelsHtml.join(', ')}${endSpace}`
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
FILTER_OPERATORS
|
FILTER_OPERATORS
|
||||||
@ -195,7 +198,7 @@ function handleFieldInput() {
|
|||||||
const [matched, prefix, operator, space, keyword] = match
|
const [matched, prefix, operator, space, keyword] = match
|
||||||
if (keyword) {
|
if (keyword) {
|
||||||
let search = keyword
|
let search = keyword
|
||||||
if(operator === 'in' || operator === '?=') {
|
if (operator === 'in' || operator === '?=') {
|
||||||
const keywords = keyword.split(',')
|
const keywords = keyword.split(',')
|
||||||
search = keywords[keywords.length - 1].trim()
|
search = keywords[keywords.length - 1].trim()
|
||||||
}
|
}
|
||||||
@ -348,7 +351,7 @@ function autocompleteSelect(value) {
|
|||||||
resize: none;
|
resize: none;
|
||||||
text-fill-color: transparent;
|
text-fill-color: transparent;
|
||||||
-webkit-text-fill-color: transparent;
|
-webkit-text-fill-color: transparent;
|
||||||
|
|
||||||
&::placeholder {
|
&::placeholder {
|
||||||
text-fill-color: var(--input-placeholder-color);
|
text-fill-color: var(--input-placeholder-color);
|
||||||
-webkit-text-fill-color: var(--input-placeholder-color);
|
-webkit-text-fill-color: var(--input-placeholder-color);
|
||||||
|
@ -58,7 +58,7 @@ export const FILTER_JOIN_OPERATOR = [
|
|||||||
export const FILTER_OPERATORS_REGEX = '(<|>|<=|>=|=|!=|in)'
|
export const FILTER_OPERATORS_REGEX = '(<|>|<=|>=|=|!=|in)'
|
||||||
|
|
||||||
export function getFilterFieldRegexPattern(field: string): RegExp {
|
export function getFilterFieldRegexPattern(field: string): RegExp {
|
||||||
return new RegExp('(' + field + '\\s*' + FILTER_OPERATORS_REGEX + '\\s*)([\'"]?)([^\'"&|()]+\\1?)?', 'ig')
|
return new RegExp('(' + field + '\\s*' + FILTER_OPERATORS_REGEX + '\\s*)([\'"]?)([^\'"&|()<]+\\1?)?', 'ig')
|
||||||
}
|
}
|
||||||
|
|
||||||
export function transformFilterStringForApi(
|
export function transformFilterStringForApi(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user