diff --git a/packages/nc-gui/components/nc/form-builder/index.vue b/packages/nc-gui/components/nc/form-builder/index.vue index cc19278a3e..880f7bb09b 100644 --- a/packages/nc-gui/components/nc/form-builder/index.vue +++ b/packages/nc-gui/components/nc/form-builder/index.vue @@ -474,6 +474,7 @@ watch( diff --git a/packages/nc-gui/components/nc/form-builder/input/SelectBase.vue b/packages/nc-gui/components/nc/form-builder/input/SelectBase.vue index af4c86e3e6..2e49662dad 100644 --- a/packages/nc-gui/components/nc/form-builder/input/SelectBase.vue +++ b/packages/nc-gui/components/nc/form-builder/input/SelectBase.vue @@ -4,6 +4,7 @@ const props = withDefaults( value: string disabled?: boolean dropdownMatchSelectWidth?: boolean + filterOption?: (base: NcProject) => boolean }>(), { dropdownMatchSelectWidth: true, @@ -17,11 +18,13 @@ const vModel = useVModel(props, 'value', emits) const basesStore = useBases() const baseOptions = computed(() => { - return basesStore.basesList.map((base) => ({ - label: base.title, - value: base.id, - meta: base.meta, - })) + return basesStore.basesList + .filter((base) => !props.filterOption || props.filterOption(base)) + .map((base) => ({ + label: base.title, + value: base.id, + meta: base.meta, + })) }) @@ -31,10 +34,11 @@ const baseOptions = computed(() => { :disabled="disabled" :show-search="baseOptions.length > 4" allow-clear + :filter-option="(input, option) => antSelectFilterOption(input, option, ['data-label'])" placeholder="- Select base -" :dropdown-match-select-width="dropdownMatchSelectWidth" > - +
diff --git a/packages/nc-gui/components/workspace/project/create/ManagedApp.vue b/packages/nc-gui/components/workspace/project/create/ManagedApp.vue index 865fb860ba..80ce7645c7 100644 --- a/packages/nc-gui/components/workspace/project/create/ManagedApp.vue +++ b/packages/nc-gui/components/workspace/project/create/ManagedApp.vue @@ -149,6 +149,7 @@ const { formState, isLoading, submit } = useProvideFormBuilderHelper({ equal: 'existing', }, defaultValue: undefined, + filterOption: (base) => base && !base?.sandbox_master, }, { type: FormBuilderInputType.Input, diff --git a/packages/nocodb-sdk/src/lib/formBuilder/index.ts b/packages/nocodb-sdk/src/lib/formBuilder/index.ts index ac08e85353..47cac67368 100644 --- a/packages/nocodb-sdk/src/lib/formBuilder/index.ts +++ b/packages/nocodb-sdk/src/lib/formBuilder/index.ts @@ -1,3 +1,5 @@ +import { BaseType } from "../Api"; + export enum FormBuilderInputType { Input = 'input', Textarea = 'textarea', @@ -266,6 +268,7 @@ export interface FormBuilderSelectIntegrationElement export interface FormBuilderSelectBaseElement extends FormBuilderElementBase { type: FormBuilderInputType.SelectBase; defaultValue?: string | null; + filterOption?: (base: BaseType) => boolean; } /**