From 52615bb84692348d552c6fc1c77cb06898a4b9eb Mon Sep 17 00:00:00 2001 From: Wing-Kam Wong Date: Tue, 18 Apr 2023 13:10:20 +0800 Subject: [PATCH] refactor(nc-gui): filter inputs --- .../smartsheet/toolbar/FilterInput.vue | 26 +++++++++++++------ 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/packages/nc-gui/components/smartsheet/toolbar/FilterInput.vue b/packages/nc-gui/components/smartsheet/toolbar/FilterInput.vue index e4e4c2267e..95b4b3dc16 100644 --- a/packages/nc-gui/components/smartsheet/toolbar/FilterInput.vue +++ b/packages/nc-gui/components/smartsheet/toolbar/FilterInput.vue @@ -115,18 +115,28 @@ const booleanOptions = [ { value: null, label: 'unset' }, ] +const renderSingleSelect = (op: string) => { + // use MultiSelect for SingleSelect columns for anyof / nanyof filters + if (['anyof', 'nanyof'].includes(op)) { + return MultiSelect + } + return SingleSelect +} + +const renderDateFilterInput = (sub_op: string) => { + if (['daysAgo', 'daysFromNow', 'pastNumberOfDays', 'nextNumberOfDays'].includes(sub_op)) { + return Decimal + } + return DatePicker +} + const componentMap: Partial> = $computed(() => { return { - // use MultiSelect for SingleSelect columns for anyof / nanyof filters - isSingleSelect: ['anyof', 'nanyof'].includes(props.filter.comparison_op!) ? MultiSelect : SingleSelect, + isSingleSelect: renderSingleSelect(props.filter.comparison_op!), isMultiSelect: MultiSelect, - isDate: ['daysAgo', 'daysFromNow', 'pastNumberOfDays', 'nextNumberOfDays'].includes(props.filter.comparison_sub_op!) - ? Decimal - : DatePicker, + isDate: renderDateFilterInput(props.filter.comparison_sub_op!), isYear: YearPicker, - isDateTime: ['daysAgo', 'daysFromNow', 'pastNumberOfDays', 'nextNumberOfDays'].includes(props.filter.comparison_sub_op!) - ? Decimal - : DateTimePicker, + isDateTime: renderDateFilterInput(props.filter.comparison_sub_op!), isTime: TimePicker, isRating: Rating, isDuration: Duration,