-
-
-
-
-
-
- {{ selectedOpt.title }}
-
-
- {{ selectedOpt.title }}
-
-
-
-
-
+
+
+
+
+
+
+
+ {{ op.title }}
+
+
+ {{ op.title }}
+
+
+
+
+
+
-
-
-
-
-
-
+
-
-
-
-
- {{ op.title }}
-
-
- {{ op.title }}
-
-
-
-
-
-
-
+
+
+
+
+ {{ selectedOpt.title }}
+
+
+ {{ selectedOpt.title }}
+
+
+
+
+
+
+
+
-
-
-
- {{ $t('msg.selectOption.createNewOptionNamed') }} {{ searchVal }}
-
-
-
-
-
-
+
+
+
-
+
+
+
+ {{ op.title }}
+
+
+ {{ op.title }}
+
+
+
+
+
+
+
+
+
+
+ {{ $t('msg.selectOption.createNewOptionNamed') }} {{ searchVal }}
+
+
+
+
+
+
- {{ val }}
-
-
-
-
+
+ {{ val }}
+
+
+
+
+
@@ -570,6 +610,31 @@ const onFocus = () => {
:deep(.ant-select-selection-search-input) {
@apply !text-xs;
}
+
+.nc-field-layout-list {
+ @apply !flex !flex-col !items-start w-full !space-y-0.5 !max-w-full;
+
+ :deep(.ant-checkbox-wrapper) {
+ @apply !m-0 !h-9 !mr-0 !flex !items-center w-full !max-w-full pl-2 rounded-lg hover:bg-gray-100;
+
+ &:hover {
+ .ant-checkbox-checked:after {
+ @apply !rounded;
+ }
+ }
+ .ant-checkbox {
+ @apply !top-0;
+
+ & + span {
+ @apply !flex !pl-4 max-w-[calc(100%_-_16px)];
+ }
+ .ant-checkbox-checked:after,
+ .ant-checkbox-inner {
+ @apply !rounded;
+ }
+ }
+ }
+}
From 51a8f4a4d73bc3bd17e0c3d6442a4f68864f950c Mon Sep 17 00:00:00 2001
From: Ramesh Mane <101566080+rameshmane7218@users.noreply.github.com>
Date: Tue, 27 Feb 2024 12:39:20 +0000
Subject: [PATCH 05/18] fix(nc-gui): shared form select type list options
---
.../nc-gui/components/smartsheet/Form.vue | 25 ++++++++++++++-----
.../composables/useSharedFormViewStore.ts | 1 +
packages/nocodb-sdk/src/lib/UITypes.ts | 7 ++++++
packages/nocodb-sdk/src/lib/index.ts | 1 +
4 files changed, 28 insertions(+), 6 deletions(-)
diff --git a/packages/nc-gui/components/smartsheet/Form.vue b/packages/nc-gui/components/smartsheet/Form.vue
index ea84ba026a..63f8ad8d94 100644
--- a/packages/nc-gui/components/smartsheet/Form.vue
+++ b/packages/nc-gui/components/smartsheet/Form.vue
@@ -4,7 +4,16 @@ import Draggable from 'vuedraggable'
import tinycolor from 'tinycolor2'
import { Pane, Splitpanes } from 'splitpanes'
import 'splitpanes/dist/splitpanes.css'
-import { ProjectRoles, RelationTypes, UITypes, ViewTypes, getSystemColumns, isLinksOrLTAR, isVirtualCol } from 'nocodb-sdk'
+import {
+ ProjectRoles,
+ RelationTypes,
+ UITypes,
+ ViewTypes,
+ getSystemColumns,
+ isLinksOrLTAR,
+ isVirtualCol,
+ isSelectTypeCol,
+} from 'nocodb-sdk'
import type { Permission } from '#imports'
import {
ActiveViewInj,
@@ -157,8 +166,6 @@ const focusLabel: VNodeRef = (el) => {
const searchQuery = ref('')
-const selectTypeFields = [UITypes.SingleSelect, UITypes.MultiSelect, UITypes.User]
-
const { t } = useI18n()
const { betaFeatureToggleState } = useBetaFeatureToggle()
@@ -1090,7 +1097,7 @@ useEventListener(
class="nc-form-field-settings border-t border-gray-200 p-4 lg:p-6 flex flex-col gap-3"
>
-
+
Layout
-
+
{{ $t('labels.limitOptions') }}
{{ $t('labels.limitOptionsSubtext') }}.
+
diff --git a/packages/nc-gui/composables/useSharedFormViewStore.ts b/packages/nc-gui/composables/useSharedFormViewStore.ts
index e60f089657..4be41faebc 100644
--- a/packages/nc-gui/composables/useSharedFormViewStore.ts
+++ b/packages/nc-gui/composables/useSharedFormViewStore.ts
@@ -109,6 +109,7 @@ const [useProvideSharedFormStore, useSharedFormStore] = useInjectionState((share
columns.value = viewMeta.model?.columns?.map((c) => ({
...c,
+ meta: { ...parseProp(fieldById[c.id].meta), ...parseProp(c.meta) },
description: fieldById[c.id].description,
}))
diff --git a/packages/nocodb-sdk/src/lib/UITypes.ts b/packages/nocodb-sdk/src/lib/UITypes.ts
index d5fa23214c..f7895f0cac 100644
--- a/packages/nocodb-sdk/src/lib/UITypes.ts
+++ b/packages/nocodb-sdk/src/lib/UITypes.ts
@@ -202,4 +202,11 @@ export const getEquivalentUIType = ({
}
};
+export const isSelectTypeCol = (
+ colOrUidt: ColumnType | { uidt: UITypes | string } | UITypes | string
+) => {
+ return [UITypes.SingleSelect, UITypes.MultiSelect, UITypes.User].includes(
+
(typeof colOrUidt === 'object' ? colOrUidt?.uidt : colOrUidt)
+ );
+};
export default UITypes;
diff --git a/packages/nocodb-sdk/src/lib/index.ts b/packages/nocodb-sdk/src/lib/index.ts
index e06f405e5d..2a38f678de 100644
--- a/packages/nocodb-sdk/src/lib/index.ts
+++ b/packages/nocodb-sdk/src/lib/index.ts
@@ -18,6 +18,7 @@ export {
isCreatedOrLastModifiedByCol,
isHiddenCol,
getEquivalentUIType,
+ isSelectTypeCol,
} from '~/lib/UITypes';
export { default as CustomAPI, FileType } from '~/lib/CustomAPI';
export { default as TemplateGenerator } from '~/lib/TemplateGenerator';
From 081e57370b1993df5217498bfa06a9ca239e269b Mon Sep 17 00:00:00 2001
From: Ramesh Mane <101566080+rameshmane7218@users.noreply.github.com>
Date: Tue, 27 Feb 2024 12:39:20 +0000
Subject: [PATCH 06/18] feat(nc-gui): add form select type field option limit
---
packages/nc-gui/assets/nc-icons/eye-off.svg | 14 +
packages/nc-gui/assets/nc-icons/eye.svg | 10 +-
packages/nc-gui/components/cell/User.vue | 63 ++++-
.../nc-gui/components/smartsheet/Form.vue | 51 ++--
.../smartsheet/form/LimitOptions.vue | 267 ++++++++++++++++++
packages/nc-gui/utils/iconUtils.ts | 3 +-
6 files changed, 379 insertions(+), 29 deletions(-)
create mode 100644 packages/nc-gui/assets/nc-icons/eye-off.svg
create mode 100644 packages/nc-gui/components/smartsheet/form/LimitOptions.vue
diff --git a/packages/nc-gui/assets/nc-icons/eye-off.svg b/packages/nc-gui/assets/nc-icons/eye-off.svg
new file mode 100644
index 0000000000..196a4ed3a0
--- /dev/null
+++ b/packages/nc-gui/assets/nc-icons/eye-off.svg
@@ -0,0 +1,14 @@
+
\ No newline at end of file
diff --git a/packages/nc-gui/assets/nc-icons/eye.svg b/packages/nc-gui/assets/nc-icons/eye.svg
index 3e19595fa4..597b5e291f 100644
--- a/packages/nc-gui/assets/nc-icons/eye.svg
+++ b/packages/nc-gui/assets/nc-icons/eye.svg
@@ -1,4 +1,8 @@
+
+
+
\ No newline at end of file
diff --git a/packages/nc-gui/components/cell/User.vue b/packages/nc-gui/components/cell/User.vue
index 244a5f21e6..effaa9228c 100644
--- a/packages/nc-gui/components/cell/User.vue
+++ b/packages/nc-gui/components/cell/User.vue
@@ -26,6 +26,12 @@ import {
} from '#imports'
import MdiCloseCircle from '~icons/mdi/close-circle'
+interface LimitOptionsType {
+ id: string
+ order: number
+ show: boolean
+}
+
interface Props {
modelValue?: UserFieldRecordType[] | UserFieldRecordType | string | null
rowIndex?: number
@@ -78,16 +84,57 @@ const searchVal = ref()
const { isUIAllowed } = useRoles()
const options = computed(() => {
+ let order = 1
+ const limitOptionsById =
+ ((parseProp(column.value.meta)?.limitOptions || []).reduce((o: Record, f: LimitOptionsType) => {
+ if (f?.order !== undefined && order < f.order) {
+ order = f.order
+ }
+ return {
+ ...o,
+ [f.id]: f,
+ }
+ }, {}) as Record) ?? {}
+
const collaborators: UserFieldRecordType[] = []
- collaborators.push(
- ...(baseUsers.value?.map((user: any) => ({
- id: user.id,
- email: user.email,
- display_name: user.display_name,
- deleted: user.deleted,
- })) || []),
- )
+ if (
+ !isEditColumn.value &&
+ isForm.value &&
+ parseProp(column.value.meta)?.isLimitOption &&
+ (parseProp(column.value.meta)?.limitOptions || []).length
+ ) {
+ collaborators.push(
+ ...(
+ baseUsers.value
+ .filter((user) => {
+ if (limitOptionsById[user.id]?.show !== undefined) {
+ return limitOptionsById[user.id]?.show
+ }
+ return false
+ })
+ ?.map((user: any) => ({
+ id: user.id,
+ email: user.email,
+ display_name: user.display_name,
+ deleted: user.deleted,
+ order: user.id && limitOptionsById[user.id] ? limitOptionsById[user.id]?.order ?? user.order : order++,
+ })) || []
+ ).sort((a, b) => a.order - b.order),
+ )
+ } else {
+ collaborators.push(
+ ...(
+ baseUsers.value?.map((user: any) => ({
+ id: user.id,
+ email: user.email,
+ display_name: user.display_name,
+ deleted: user.deleted,
+ order: order++,
+ })) || []
+ ).sort((a, b) => a.order - b.order),
+ )
+ }
return collaborators
})
diff --git a/packages/nc-gui/components/smartsheet/Form.vue b/packages/nc-gui/components/smartsheet/Form.vue
index 63f8ad8d94..5870f16d3c 100644
--- a/packages/nc-gui/components/smartsheet/Form.vue
+++ b/packages/nc-gui/components/smartsheet/Form.vue
@@ -160,9 +160,7 @@ const imageCropperData = ref<{
cropFor: 'banner',
})
-const focusLabel: VNodeRef = (el) => {
- return (el as HTMLInputElement)?.focus()
-}
+const focusLabel = ref()
const searchQuery = ref('')
@@ -514,7 +512,15 @@ const handleOnUploadImage = (data: Record = {}) => {
updateView()
}
-onClickOutside(draggableRef, () => {
+onClickOutside(draggableRef, (e) => {
+ if (
+ (e.target as HTMLElement)?.closest(
+ '.nc-dropdown-single-select-cell, .nc-dropdown-multi-select-cell, .nc-dropdown-user-select-cell',
+ )
+ ) {
+ return
+ }
+
activeRow.value = ''
isTabPressed.value = false
})
@@ -570,6 +576,12 @@ watch(activeRow, (newValue) => {
}
})
+watch([focusLabel, activeRow], () => {
+ if (activeRow && focusLabel.value) {
+ focusLabel.value?.focus()
+ }
+})
+
useEventListener(
formRef,
'focusout',
@@ -991,7 +1003,7 @@ useEventListener(
-
-
-
+
+
+
{{ $t('labels.limitOptions') }}
+
+
{{ $t('labels.limitOptionsSubtext') }}.
-
+
+
+
diff --git a/packages/nc-gui/components/smartsheet/form/LimitOptions.vue b/packages/nc-gui/components/smartsheet/form/LimitOptions.vue
new file mode 100644
index 0000000000..a4dca81ebd
--- /dev/null
+++ b/packages/nc-gui/components/smartsheet/form/LimitOptions.vue
@@ -0,0 +1,267 @@
+
+
+
+
+
+
+
diff --git a/packages/nc-gui/utils/iconUtils.ts b/packages/nc-gui/utils/iconUtils.ts
index 695e5877b6..9a53f2fe17 100644
--- a/packages/nc-gui/utils/iconUtils.ts
+++ b/packages/nc-gui/utils/iconUtils.ts
@@ -92,6 +92,7 @@ import Sort from '~icons/nc-icons/sort'
// NocoDB Icons
import NcEye from '~icons/nc-icons/eye'
+import NcEyeOff from '~icons/nc-icons/eye-off'
import NcStar from '~icons/nc-icons/star'
import NcUnStar from '~icons/nc-icons/star-remove'
import NcSearch from '~icons/nc-icons/search'
@@ -417,7 +418,7 @@ export const iconMap = {
calculator: h('span', { class: 'material-symbols' }, 'calculate'),
rollup: h('span', { class: 'material-symbols' }, 'group_work'),
eye: NcEye,
- eyeSlash: h('span', { class: 'material-symbols' }, 'visibility_off'),
+ eyeSlash: NcEyeOff,
expand: h('span', { class: 'material-symbols' }, 'open_in_full'),
shrink: h('span', { class: 'material-symbols' }, 'close_fullscreen'),
check: NcCheck,
From 6c8825bed91682fba7dc25d2d3bbf7c081bcef1f Mon Sep 17 00:00:00 2001
From: Ramesh Mane <101566080+rameshmane7218@users.noreply.github.com>
Date: Tue, 27 Feb 2024 12:39:20 +0000
Subject: [PATCH 07/18] feat(nc-gui): add limit options for single & multi
select field
---
.../nc-gui/components/cell/MultiSelect.vue | 39 +++++++++++++++++-
.../nc-gui/components/cell/SingleSelect.vue | 40 ++++++++++++++++++-
packages/nc-gui/components/cell/User.vue | 28 ++++++-------
.../smartsheet/form/LimitOptions.vue | 17 +++-----
packages/nc-gui/lib/types.ts | 7 ++++
5 files changed, 103 insertions(+), 28 deletions(-)
diff --git a/packages/nc-gui/components/cell/MultiSelect.vue b/packages/nc-gui/components/cell/MultiSelect.vue
index eec679eb95..9559bcb48c 100644
--- a/packages/nc-gui/components/cell/MultiSelect.vue
+++ b/packages/nc-gui/components/cell/MultiSelect.vue
@@ -3,6 +3,7 @@ import { message } from 'ant-design-vue'
import tinycolor from 'tinycolor2'
import type { Select as AntSelect } from 'ant-design-vue'
import type { SelectOptionType, SelectOptionsType } from 'nocodb-sdk'
+import type { FormFieldsLimitOptionsType } from '~/lib'
import {
ActiveCellInj,
ColumnInj,
@@ -95,7 +96,43 @@ const options = computed<(SelectOptionType & { value?: string })[]>(() => {
for (const op of opts.filter((el: SelectOptionType) => el.order === null)) {
op.title = op.title?.replace(/^'/, '').replace(/'$/, '')
}
- return opts.map((o: SelectOptionType) => ({ ...o, value: o.title }))
+ let order = 1
+ const limitOptionsById =
+ ((parseProp(column.value.meta)?.limitOptions || []).reduce(
+ (o: Record
, f: FormFieldsLimitOptionsType) => {
+ if (f?.order !== undefined && order < f.order) {
+ order = f.order
+ }
+ return {
+ ...o,
+ [f.id]: f,
+ }
+ },
+ {},
+ ) as Record) ?? {}
+
+ if (
+ !isEditColumn.value &&
+ isForm.value &&
+ parseProp(column.value.meta)?.isLimitOption &&
+ (parseProp(column.value.meta)?.limitOptions || []).length
+ ) {
+ return opts
+ ?.filter((o: SelectOptionType) => {
+ if (limitOptionsById[o.id!]?.show !== undefined) {
+ return limitOptionsById[o.id!]?.show
+ }
+ return false
+ })
+ ?.map((o) => ({
+ ...o,
+ value: o.title,
+ order: o.id && limitOptionsById[o.id] ? limitOptionsById[o.id]?.order : order++,
+ }))
+ ?.sort((a, b) => a.order - b.order)
+ } else {
+ return opts.map((o: SelectOptionType) => ({ ...o, value: o.title }))
+ }
}
return []
})
diff --git a/packages/nc-gui/components/cell/SingleSelect.vue b/packages/nc-gui/components/cell/SingleSelect.vue
index fa37963d1f..def1196ca3 100644
--- a/packages/nc-gui/components/cell/SingleSelect.vue
+++ b/packages/nc-gui/components/cell/SingleSelect.vue
@@ -3,6 +3,7 @@ import { message } from 'ant-design-vue'
import tinycolor from 'tinycolor2'
import type { Select as AntSelect } from 'ant-design-vue'
import type { SelectOptionType } from 'nocodb-sdk'
+import type { FormFieldsLimitOptionsType } from '~/lib'
import {
ActiveCellInj,
ColumnInj,
@@ -88,7 +89,44 @@ const options = computed<(SelectOptionType & { value: string })[]>(() => {
for (const op of opts.filter((el: any) => el.order === null)) {
op.title = op.title.replace(/^'/, '').replace(/'$/, '')
}
- return opts.map((o: any) => ({ ...o, value: o.title }))
+
+ let order = 1
+ const limitOptionsById =
+ ((parseProp(column.value.meta)?.limitOptions || []).reduce(
+ (o: Record, f: FormFieldsLimitOptionsType) => {
+ if (f?.order !== undefined && order < f.order) {
+ order = f.order
+ }
+ return {
+ ...o,
+ [f.id]: f,
+ }
+ },
+ {},
+ ) as Record) ?? {}
+
+ if (
+ !isEditColumn.value &&
+ isForm.value &&
+ parseProp(column.value.meta)?.isLimitOption &&
+ (parseProp(column.value.meta)?.limitOptions || []).length
+ ) {
+ return opts
+ ?.filter((o: any) => {
+ if (limitOptionsById[o.id]?.show !== undefined) {
+ return limitOptionsById[o.id]?.show
+ }
+ return false
+ })
+ ?.map((o: any) => ({
+ ...o,
+ value: o.title,
+ order: o.id && limitOptionsById[o.id] ? limitOptionsById[o.id]?.order : order++,
+ }))
+ ?.sort((a, b) => a.order - b.order)
+ } else {
+ return opts.map((o: any) => ({ ...o, value: o.title }))
+ }
}
return []
})
diff --git a/packages/nc-gui/components/cell/User.vue b/packages/nc-gui/components/cell/User.vue
index effaa9228c..aeb6e6acea 100644
--- a/packages/nc-gui/components/cell/User.vue
+++ b/packages/nc-gui/components/cell/User.vue
@@ -4,6 +4,7 @@ import tinycolor from 'tinycolor2'
import { CheckboxGroup, Checkbox, RadioGroup, Radio } from 'ant-design-vue'
import type { Select as AntSelect } from 'ant-design-vue'
import type { UserFieldRecordType } from 'nocodb-sdk'
+import type { FormFieldsLimitOptionsType } from '~/lib'
import {
ActiveCellInj,
CellClickHookInj,
@@ -26,12 +27,6 @@ import {
} from '#imports'
import MdiCloseCircle from '~icons/mdi/close-circle'
-interface LimitOptionsType {
- id: string
- order: number
- show: boolean
-}
-
interface Props {
modelValue?: UserFieldRecordType[] | UserFieldRecordType | string | null
rowIndex?: number
@@ -86,15 +81,18 @@ const { isUIAllowed } = useRoles()
const options = computed(() => {
let order = 1
const limitOptionsById =
- ((parseProp(column.value.meta)?.limitOptions || []).reduce((o: Record, f: LimitOptionsType) => {
- if (f?.order !== undefined && order < f.order) {
- order = f.order
- }
- return {
- ...o,
- [f.id]: f,
- }
- }, {}) as Record) ?? {}
+ ((parseProp(column.value.meta)?.limitOptions || []).reduce(
+ (o: Record, f: FormFieldsLimitOptionsType) => {
+ if (f?.order !== undefined && order < f.order) {
+ order = f.order
+ }
+ return {
+ ...o,
+ [f.id]: f,
+ }
+ },
+ {},
+ ) as Record) ?? {}
const collaborators: UserFieldRecordType[] = []
diff --git a/packages/nc-gui/components/smartsheet/form/LimitOptions.vue b/packages/nc-gui/components/smartsheet/form/LimitOptions.vue
index a4dca81ebd..3893c69db2 100644
--- a/packages/nc-gui/components/smartsheet/form/LimitOptions.vue
+++ b/packages/nc-gui/components/smartsheet/form/LimitOptions.vue
@@ -1,18 +1,13 @@
@@ -124,11 +166,11 @@ const syncOptions = () => {
@@ -147,7 +189,7 @@ const syncOptions = () => {
]"
:data-testid="`nc-form-field-${column.title?.replaceAll(' ', '')}-limit-option-${element.title?.replaceAll(' ', '')}`"
>
-
+
Date: Tue, 27 Feb 2024 12:39:21 +0000
Subject: [PATCH 09/18] fix(nc-gui): hide select type field error input inner
border
---
packages/nc-gui/components/smartsheet/Form.vue | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/packages/nc-gui/components/smartsheet/Form.vue b/packages/nc-gui/components/smartsheet/Form.vue
index 5870f16d3c..95664e24ee 100644
--- a/packages/nc-gui/components/smartsheet/Form.vue
+++ b/packages/nc-gui/components/smartsheet/Form.vue
@@ -1583,6 +1583,12 @@ useEventListener(
@apply mt-2;
}
}
+:deep(.ant-form-item-has-error .ant-select:not(.ant-select-disabled) .ant-select-selector) {
+ border: none !important;
+}
+:deep(.ant-form-item-has-success .ant-select:not(.ant-select-disabled) .ant-select-selector) {
+ border: none !important;
+}
:deep(.nc-cell-attachment) {
@apply p-0;
From de2251265554f62b831da5735f6bedf2c7f8040c Mon Sep 17 00:00:00 2001
From: Ramesh Mane <101566080+rameshmane7218@users.noreply.github.com>
Date: Tue, 27 Feb 2024 12:39:21 +0000
Subject: [PATCH 10/18] fix(nc-gui): add clear option for single select user
field list type
---
packages/nc-gui/components/cell/User.vue | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/packages/nc-gui/components/cell/User.vue b/packages/nc-gui/components/cell/User.vue
index aeb6e6acea..be4304cbe2 100644
--- a/packages/nc-gui/components/cell/User.vue
+++ b/packages/nc-gui/components/cell/User.vue
@@ -193,7 +193,7 @@ const vModel = computed({
})
const vModelListLayout = computed(() => {
- if (isMultiple) {
+ if (isMultiple.value) {
return (vModel.value || []).map((item) => item.value)
} else {
return (vModel.value || [])?.[0]?.value || ''
@@ -323,11 +323,10 @@ const filterOption = (input: string, option: any) => {
{
- // Todo: fix update single select user issue
vModel = isMultiple ? value : [value]
}
"
@@ -379,6 +378,9 @@ const filterOption = (input: string, option: any) => {
+
+ {{ $t('labels.clearSelection') }}
+
Date: Tue, 27 Feb 2024 12:39:21 +0000
Subject: [PATCH 11/18] chore(nc-gui): lint
---
packages/nc-gui/components/cell/User.vue | 4 +--
.../nc-gui/components/smartsheet/Form.vue | 13 ++++++---
.../smartsheet/form/LimitOptions.vue | 27 ++++++++-----------
packages/nc-gui/lang/en.json | 7 +++--
4 files changed, 27 insertions(+), 24 deletions(-)
diff --git a/packages/nc-gui/components/cell/User.vue b/packages/nc-gui/components/cell/User.vue
index be4304cbe2..1764a4f47b 100644
--- a/packages/nc-gui/components/cell/User.vue
+++ b/packages/nc-gui/components/cell/User.vue
@@ -1,7 +1,7 @@
@@ -146,7 +139,7 @@ async function onMove(_event: { moved: { newIndex: number; oldIndex: number; ele
@@ -195,7 +188,7 @@ async function onMove(_event: { moved: { newIndex: number; oldIndex: number; ele
@click="
() => {
element.show = !element.show
- vModel = vModel
+ vModel = [...vModel]
}
"
>
@@ -268,7 +261,9 @@ async function onMove(_event: { moved: { newIndex: number; oldIndex: number; ele
-
No options found
+
{{ $t('title.noOptionsFound') }}
- No options found with title `{{ searchQuery }}`
+ {{ $t('title.noOptionsFound') }} with title `{{ searchQuery }}`
-
From 1adbfd5477f034eba627ba6d39609eadbbdc524d Mon Sep 17 00:00:00 2001
From: Ramesh Mane <101566080+rameshmane7218@users.noreply.github.com>
Date: Tue, 27 Feb 2024 12:39:22 +0000
Subject: [PATCH 17/18] fix(nc-gui): form search limit option issue
---
packages/nc-gui/components/cell/SingleSelect.vue | 2 +-
packages/nc-gui/components/cell/User.vue | 6 +++++-
packages/nc-gui/components/smartsheet/Form.vue | 4 ++--
.../nc-gui/components/smartsheet/form/LimitOptions.vue | 10 +++++++---
4 files changed, 15 insertions(+), 7 deletions(-)
diff --git a/packages/nc-gui/components/cell/SingleSelect.vue b/packages/nc-gui/components/cell/SingleSelect.vue
index 4d91f1dd9a..414134298e 100644
--- a/packages/nc-gui/components/cell/SingleSelect.vue
+++ b/packages/nc-gui/components/cell/SingleSelect.vue
@@ -351,7 +351,7 @@ const onFocus = () => {
-
+
{{ $t('labels.clearSelection') }}
diff --git a/packages/nc-gui/components/cell/User.vue b/packages/nc-gui/components/cell/User.vue
index 62fef82ce3..3331110136 100644
--- a/packages/nc-gui/components/cell/User.vue
+++ b/packages/nc-gui/components/cell/User.vue
@@ -377,7 +377,11 @@ const filterOption = (input: string, option: any) => {
-
+
{{ $t('labels.clearSelection') }}
diff --git a/packages/nc-gui/components/smartsheet/Form.vue b/packages/nc-gui/components/smartsheet/Form.vue
index 8234c0b7d5..716e3c1f42 100644
--- a/packages/nc-gui/components/smartsheet/Form.vue
+++ b/packages/nc-gui/components/smartsheet/Form.vue
@@ -1139,7 +1139,7 @@ useEventListener(
-
+
{{ $t('labels.limitOptions') }}
-
+
{{ $t('labels.limitOptionsSubtext') }}.