diff --git a/packages/nc-gui/components.d.ts b/packages/nc-gui/components.d.ts
index 3e6aec3272..dbc76afd2d 100644
--- a/packages/nc-gui/components.d.ts
+++ b/packages/nc-gui/components.d.ts
@@ -8,7 +8,6 @@ export {}
declare module '@vue/runtime-core' {
export interface GlobalComponents {
AAlert: typeof import('ant-design-vue/es')['Alert']
- AAutoComplete: typeof import('ant-design-vue/es')['AutoComplete']
ABadgeRibbon: typeof import('ant-design-vue/es')['BadgeRibbon']
AButton: typeof import('ant-design-vue/es')['Button']
ACard: typeof import('ant-design-vue/es')['Card']
@@ -24,7 +23,6 @@ declare module '@vue/runtime-core' {
ADivider: typeof import('ant-design-vue/es')['Divider']
ADrawer: typeof import('ant-design-vue/es')['Drawer']
ADropdown: typeof import('ant-design-vue/es')['Dropdown']
- ADropdownButton: typeof import('ant-design-vue/es')['DropdownButton']
AEmpty: typeof import('ant-design-vue/es')['Empty']
AForm: typeof import('ant-design-vue/es')['Form']
AFormItem: typeof import('ant-design-vue/es')['FormItem']
@@ -67,21 +65,16 @@ declare module '@vue/runtime-core' {
ATextarea: typeof import('ant-design-vue/es')['Textarea']
ATimePicker: typeof import('ant-design-vue/es')['TimePicker']
ATooltip: typeof import('ant-design-vue/es')['Tooltip']
- ATypography: typeof import('ant-design-vue/es')['Typography']
ATypographyTitle: typeof import('ant-design-vue/es')['TypographyTitle']
AUploadDragger: typeof import('ant-design-vue/es')['UploadDragger']
BiFiletypeJson: typeof import('~icons/bi/filetype-json')['default']
BiFiletypeXlsx: typeof import('~icons/bi/filetype-xlsx')['default']
CilFullscreen: typeof import('~icons/cil/fullscreen')['default']
CilFullscreenExit: typeof import('~icons/cil/fullscreen-exit')['default']
- ClarityColorPickerLine: typeof import('~icons/clarity/color-picker-line')['default']
ClarityColorPickerSolid: typeof import('~icons/clarity/color-picker-solid')['default']
ClarityImageLine: typeof import('~icons/clarity/image-line')['default']
- ClaritySuccessLine: typeof import('~icons/clarity/success-line')['default']
EvaEmailOutline: typeof import('~icons/eva/email-outline')['default']
- 'Ic:twotoneWidthFull': typeof import('~icons/ic/twotone-width-full')['default']
IcBaselineMoreVert: typeof import('~icons/ic/baseline-more-vert')['default']
- IcBaselineWidthFull: typeof import('~icons/ic/baseline-width-full')['default']
IcOutlineInsertDriveFile: typeof import('~icons/ic/outline-insert-drive-file')['default']
IcRoundEdit: typeof import('~icons/ic/round-edit')['default']
IcRoundKeyboardArrowDown: typeof import('~icons/ic/round-keyboard-arrow-down')['default']
@@ -94,7 +87,6 @@ declare module '@vue/runtime-core' {
MaterialSymbolsArrowCircleLeftRounded: typeof import('~icons/material-symbols/arrow-circle-left-rounded')['default']
MaterialSymbolsArrowCircleRightRounded: typeof import('~icons/material-symbols/arrow-circle-right-rounded')['default']
MaterialSymbolsAttachFile: typeof import('~icons/material-symbols/attach-file')['default']
- MaterialSymbolsChevronLeftRounded: typeof import('~icons/material-symbols/chevron-left-rounded')['default']
MaterialSymbolsChevronRightRounded: typeof import('~icons/material-symbols/chevron-right-rounded')['default']
MaterialSymbolsCloseRounded: typeof import('~icons/material-symbols/close-rounded')['default']
MaterialSymbolsFileCopyOutline: typeof import('~icons/material-symbols/file-copy-outline')['default']
@@ -102,30 +94,20 @@ declare module '@vue/runtime-core' {
MaterialSymbolsSendOutline: typeof import('~icons/material-symbols/send-outline')['default']
MaterialSymbolsTranslate: typeof import('~icons/material-symbols/translate')['default']
MaterialSymbolsWarning: typeof import('~icons/material-symbols/warning')['default']
- MaterialSymbolsWidthFull: typeof import('~icons/material-symbols/width-full')['default']
- MaterialSymbolsWidthWideOutline: typeof import('~icons/material-symbols/width-wide-outline')['default']
- 'Mdi:arrowExpandHorizontal': typeof import('~icons/mdi/arrow-expand-horizontal')['default']
MdiAccount: typeof import('~icons/mdi/account')['default']
MdiAccountCircle: typeof import('~icons/mdi/account-circle')['default']
- MdiAccountGroup: typeof import('~icons/mdi/account-group')['default']
- MdiAccountGroupIcon: typeof import('~icons/mdi/account-group-icon')['default']
- MdiAccountIcon: typeof import('~icons/mdi/account-icon')['default']
MdiAccountOutline: typeof import('~icons/mdi/account-outline')['default']
- MdiAccountPlus: typeof import('~icons/mdi/account-plus')['default']
MdiAccountPlusOutline: typeof import('~icons/mdi/account-plus-outline')['default']
- MdiAccountSupervisorOutline: typeof import('~icons/mdi/account-supervisor-outline')['default']
MdiAlpha: typeof import('~icons/mdi/alpha')['default']
MdiAlphaA: typeof import('~icons/mdi/alpha-a')['default']
MdiApi: typeof import('~icons/mdi/api')['default']
MdiArrowCollapse: typeof import('~icons/mdi/arrow-collapse')['default']
MdiArrowDownDropCircleOutline: typeof import('~icons/mdi/arrow-down-drop-circle-outline')['default']
MdiArrowExpand: typeof import('~icons/mdi/arrow-expand')['default']
- MdiArrowExpandHorizontal: typeof import('~icons/mdi/arrow-expand-horizontal')['default']
MdiArrowLeftBold: typeof import('~icons/mdi/arrow-left-bold')['default']
MdiAt: typeof import('~icons/mdi/at')['default']
MdiBackburger: typeof import('~icons/mdi/backburger')['default']
MdiBookOpenOutline: typeof import('~icons/mdi/book-open-outline')['default']
- MdiBookOpenPageVariantOutline: typeof import('~icons/mdi/book-open-page-variant-outline')['default']
MdiBugOutline: typeof import('~icons/mdi/bug-outline')['default']
MdiCalculator: typeof import('~icons/mdi/calculator')['default']
MdiCalendarMonth: typeof import('~icons/mdi/calendar-month')['default']
@@ -133,7 +115,6 @@ declare module '@vue/runtime-core' {
MdiCellphoneMessage: typeof import('~icons/mdi/cellphone-message')['default']
MdiChat: typeof import('~icons/mdi/chat')['default']
MdiCheck: typeof import('~icons/mdi/check')['default']
- MdiChevronDoubleLeft: typeof import('~icons/mdi/chevron-double-left')['default']
MdiChevronDown: typeof import('~icons/mdi/chevron-down')['default']
MdiChevronLeft: typeof import('~icons/mdi/chevron-left')['default']
MdiClose: typeof import('~icons/mdi/close')['default']
@@ -147,7 +128,6 @@ declare module '@vue/runtime-core' {
MdiContentCopy: typeof import('~icons/mdi/content-copy')['default']
MdiContentSave: typeof import('~icons/mdi/content-save')['default']
MdiCurrencyUsd: typeof import('~icons/mdi/currency-usd')['default']
- MdiDatabase: typeof import('~icons/mdi/database')['default']
MdiDatabaseOutline: typeof import('~icons/mdi/database-outline')['default']
MdiDelete: typeof import('~icons/mdi/delete')['default']
MdiDeleteOutline: typeof import('~icons/mdi/delete-outline')['default']
@@ -171,28 +151,20 @@ declare module '@vue/runtime-core' {
MdiFileUploadOutline: typeof import('~icons/mdi/file-upload-outline')['default']
MdiFilterOutline: typeof import('~icons/mdi/filter-outline')['default']
MdiFlag: typeof import('~icons/mdi/flag')['default']
- MdiFlashOutline: typeof import('~icons/mdi/flash-outline')['default']
MdiFolder: typeof import('~icons/mdi/folder')['default']
- MdiFullscreen: typeof import('~icons/mdi/fullscreen')['default']
- MdiFullscreenExit: typeof import('~icons/mdi/fullscreen-exit')['default']
MdiFunction: typeof import('~icons/mdi/function')['default']
MdiGestureDoubleTap: typeof import('~icons/mdi/gesture-double-tap')['default']
MdiGithub: typeof import('~icons/mdi/github')['default']
- MdiGmail: typeof import('~icons/mdi/gmail')['default']
- MdiGridLarge: typeof import('~icons/mdi/grid-large')['default']
MdiHeart: typeof import('~icons/mdi/heart')['default']
MdiHook: typeof import('~icons/mdi/hook')['default']
MdiInformation: typeof import('~icons/mdi/information')['default']
MdiJson: typeof import('~icons/mdi/json')['default']
MdiKeyboardReturn: typeof import('~icons/mdi/keyboard-return')['default']
- MdiKeyChange: typeof import('~icons/mdi/key-change')['default']
- MdiKeyPlus: typeof import('~icons/mdi/key-plus')['default']
MdiKeyStar: typeof import('~icons/mdi/key-star')['default']
MdiLink: typeof import('~icons/mdi/link')['default']
MdiLinkVariant: typeof import('~icons/mdi/link-variant')['default']
MdiLinkVariantRemove: typeof import('~icons/mdi/link-variant-remove')['default']
MdiLoading: typeof import('~icons/mdi/loading')['default']
- MdiLockOutlineIcon: typeof import('~icons/mdi/lock-outline-icon')['default']
MdiLogin: typeof import('~icons/mdi/login')['default']
MdiLogout: typeof import('~icons/mdi/logout')['default']
MdiMagnify: typeof import('~icons/mdi/magnify')['default']
@@ -201,32 +173,23 @@ declare module '@vue/runtime-core' {
MdiMicrosoftTeams: typeof import('~icons/mdi/microsoft-teams')['default']
MdiMinusCircleOutline: typeof import('~icons/mdi/minus-circle-outline')['default']
MdiMoonFull: typeof import('~icons/mdi/moon-full')['default']
- MdiNotebookCheckOutline: typeof import('~icons/mdi/notebook-check-outline')['default']
- MdiNull: typeof import('~icons/mdi/null')['default']
MdiNumeric: typeof import('~icons/mdi/numeric')['default']
MdiOpenInNew: typeof import('~icons/mdi/open-in-new')['default']
MdiPencil: typeof import('~icons/mdi/pencil')['default']
MdiPlus: typeof import('~icons/mdi/plus')['default']
- MdiPlusBoxOutline: typeof import('~icons/mdi/plus-box-outline')['default']
MdiPlusCircleOutline: typeof import('~icons/mdi/plus-circle-outline')['default']
MdiPlusOutline: typeof import('~icons/mdi/plus-outline')['default']
- MdiPlusRoundedOutline: typeof import('~icons/mdi/plus-rounded-outline')['default']
MdiRefresh: typeof import('~icons/mdi/refresh')['default']
MdiReload: typeof import('~icons/mdi/reload')['default']
MdiRocketLaunchOutline: typeof import('~icons/mdi/rocket-launch-outline')['default']
MdiScriptTextKeyOutline: typeof import('~icons/mdi/script-text-key-outline')['default']
MdiScriptTextOutline: typeof import('~icons/mdi/script-text-outline')['default']
- MdiSearch: typeof import('~icons/mdi/search')['default']
- MdiShieldLockOutline: typeof import('~icons/mdi/shield-lock-outline')['default']
MdiSlack: typeof import('~icons/mdi/slack')['default']
MdiSort: typeof import('~icons/mdi/sort')['default']
MdiStar: typeof import('~icons/mdi/star')['default']
MdiStarOutline: typeof import('~icons/mdi/star-outline')['default']
- MdiStore: typeof import('~icons/mdi/store')['default']
MdiTable: typeof import('~icons/mdi/table')['default']
MdiTableArrowRight: typeof import('~icons/mdi/table-arrow-right')['default']
- MdiTableBorder: typeof import('~icons/mdi/table-border')['default']
- MdiTableLarge: typeof import('~icons/mdi/table-large')['default']
MdiText: typeof import('~icons/mdi/text')['default']
MdiThumbUp: typeof import('~icons/mdi/thumb-up')['default']
MdiTrashCan: typeof import('~icons/mdi/trash-can')['default']
@@ -241,6 +204,5 @@ declare module '@vue/runtime-core' {
PhFileCsv: typeof import('~icons/ph/file-csv')['default']
RouterLink: typeof import('vue-router')['RouterLink']
RouterView: typeof import('vue-router')['RouterView']
- SystemUiconsExpandWidth: typeof import('~icons/system-uicons/expand-width')['default']
}
}
diff --git a/packages/nc-gui/components/api-client/Headers.vue b/packages/nc-gui/components/api-client/Headers.vue
index 4047eb8652..d6e08efc38 100644
--- a/packages/nc-gui/components/api-client/Headers.vue
+++ b/packages/nc-gui/components/api-client/Headers.vue
@@ -87,7 +87,13 @@ const deleteHeaderRow = (idx: number) => vModel.value.splice(idx, 1)
-
-
+
{{ type }}
diff --git a/packages/nc-gui/components/smartsheet-column/CheckboxOptions.vue b/packages/nc-gui/components/smartsheet-column/CheckboxOptions.vue
index c4bda123c6..f4a89a3b7e 100644
--- a/packages/nc-gui/components/smartsheet-column/CheckboxOptions.vue
+++ b/packages/nc-gui/components/smartsheet-column/CheckboxOptions.vue
@@ -78,7 +78,7 @@ watch(
-
+
{{ currencyLocale.text }}
@@ -98,6 +99,7 @@ vModel.value.meta = {
show-search
:filter-option="filterOption"
:disabled="isMoney && isPg"
+ dropdown-class-name="nc-dropdown-currency-cell-code"
>
{{ currencyCode }}
diff --git a/packages/nc-gui/components/smartsheet-column/DateOptions.vue b/packages/nc-gui/components/smartsheet-column/DateOptions.vue
index 84585a07d9..6e181a4693 100644
--- a/packages/nc-gui/components/smartsheet-column/DateOptions.vue
+++ b/packages/nc-gui/components/smartsheet-column/DateOptions.vue
@@ -17,7 +17,7 @@ if (!vModel.value.meta?.date_format) {
-
+
diff --git a/packages/nc-gui/components/smartsheet-column/DurationOptions.vue b/packages/nc-gui/components/smartsheet-column/DurationOptions.vue
index 770ddccb99..373e0fb75c 100644
--- a/packages/nc-gui/components/smartsheet-column/DurationOptions.vue
+++ b/packages/nc-gui/components/smartsheet-column/DurationOptions.vue
@@ -30,7 +30,7 @@ vModel.value.meta = {
-
+
{{ duration.title }}
diff --git a/packages/nc-gui/components/smartsheet-column/EditOrAdd.vue b/packages/nc-gui/components/smartsheet-column/EditOrAdd.vue
index c26957e085..b74af09680 100644
--- a/packages/nc-gui/components/smartsheet-column/EditOrAdd.vue
+++ b/packages/nc-gui/components/smartsheet-column/EditOrAdd.vue
@@ -143,6 +143,7 @@ onMounted(() => {
show-search
class="nc-column-type-input"
:disabled="isKanban"
+ dropdown-class-name="nc-dropdown-column-type"
@change="onUidtOrIdTypeChange"
>
diff --git a/packages/nc-gui/components/smartsheet-column/LinkedToAnotherRecordOptions.vue b/packages/nc-gui/components/smartsheet-column/LinkedToAnotherRecordOptions.vue
index 411192378b..288691f1f0 100644
--- a/packages/nc-gui/components/smartsheet-column/LinkedToAnotherRecordOptions.vue
+++ b/packages/nc-gui/components/smartsheet-column/LinkedToAnotherRecordOptions.vue
@@ -66,6 +66,7 @@ const refTables = $computed(() => {
v-model:value="vModel.childId"
show-search
:filter-option="(value, option) => option.key.toLowerCase().includes(value.toLowerCase())"
+ dropdown-class-name="nc-dropdown-ltar-child-table"
@change="onDataTypeChange"
>
@@ -86,14 +87,26 @@ const refTables = $computed(() => {
-
+
{{ option }}
-
+
{{ option }}
diff --git a/packages/nc-gui/components/smartsheet-column/LookupOptions.vue b/packages/nc-gui/components/smartsheet-column/LookupOptions.vue
index 310375da15..df3e4ff484 100644
--- a/packages/nc-gui/components/smartsheet-column/LookupOptions.vue
+++ b/packages/nc-gui/components/smartsheet-column/LookupOptions.vue
@@ -62,7 +62,11 @@ const columns = $computed(() => {
-
+
{{ table.column.title }}
@@ -74,7 +78,12 @@ const columns = $computed(() => {
-
+
{{ column.title }}
diff --git a/packages/nc-gui/components/smartsheet-column/PercentOptions.vue b/packages/nc-gui/components/smartsheet-column/PercentOptions.vue
index 9d163c7fe7..bf136ba6bd 100644
--- a/packages/nc-gui/components/smartsheet-column/PercentOptions.vue
+++ b/packages/nc-gui/components/smartsheet-column/PercentOptions.vue
@@ -21,7 +21,7 @@ if (!vModel.value.meta?.precision) vModel.value.meta.precision = precisions[0].i
-
+
diff --git a/packages/nc-gui/components/smartsheet-column/RatingOptions.vue b/packages/nc-gui/components/smartsheet-column/RatingOptions.vue
index 992a2511c6..704601a47d 100644
--- a/packages/nc-gui/components/smartsheet-column/RatingOptions.vue
+++ b/packages/nc-gui/components/smartsheet-column/RatingOptions.vue
@@ -72,7 +72,7 @@ watch(
-
+
-
+
{{ v }}
diff --git a/packages/nc-gui/components/smartsheet-column/RollupOptions.vue b/packages/nc-gui/components/smartsheet-column/RollupOptions.vue
index 0d4a11ec76..7fa7a643d3 100644
--- a/packages/nc-gui/components/smartsheet-column/RollupOptions.vue
+++ b/packages/nc-gui/components/smartsheet-column/RollupOptions.vue
@@ -75,7 +75,11 @@ const columns = $computed(() => {
-
+
{{ table.column.title }}
@@ -87,7 +91,12 @@ const columns = $computed(() => {
-
+
{{ column.title }}
@@ -95,7 +104,11 @@ const columns = $computed(() => {
-
+
{{ func.text }}
diff --git a/packages/nc-gui/components/smartsheet-toolbar/FieldListAutoCompleteDropdown.vue b/packages/nc-gui/components/smartsheet-toolbar/FieldListAutoCompleteDropdown.vue
index e35e9c4cc3..26093e5c08 100644
--- a/packages/nc-gui/components/smartsheet-toolbar/FieldListAutoCompleteDropdown.vue
+++ b/packages/nc-gui/components/smartsheet-toolbar/FieldListAutoCompleteDropdown.vue
@@ -57,6 +57,7 @@ const filterOption = (input: string, option: any) => {
show-search
:placeholder="$t('placeholder.selectField')"
:filter-option="filterOption"
+ dropdown-class-name="nc-dropdown-toolbar-field-list"
>
diff --git a/packages/nc-gui/components/smartsheet-toolbar/FieldsMenu.vue b/packages/nc-gui/components/smartsheet-toolbar/FieldsMenu.vue
index fcd11baa62..537a830a78 100644
--- a/packages/nc-gui/components/smartsheet-toolbar/FieldsMenu.vue
+++ b/packages/nc-gui/components/smartsheet-toolbar/FieldsMenu.vue
@@ -135,7 +135,13 @@ const getIcon = (c: ColumnType) =>
@click.stop
>
-
+
diff --git a/packages/nc-gui/components/smartsheet-toolbar/SearchData.vue b/packages/nc-gui/components/smartsheet-toolbar/SearchData.vue
index ce4763075e..b27d82bb9d 100644
--- a/packages/nc-gui/components/smartsheet-toolbar/SearchData.vue
+++ b/packages/nc-gui/components/smartsheet-toolbar/SearchData.vue
@@ -41,7 +41,7 @@ function onPressEnter() {
size="small"
:dropdown-match-select-width="false"
:options="columns"
- dropdown-class-name="!py-0 !rounded"
+ dropdown-class-name="!py-0 !rounded nc-dropdown-toolbar-search-field-option"
class="!absolute top-0 left-0 w-full h-full z-10 !text-xs opacity-0"
/>
diff --git a/packages/nc-gui/components/smartsheet-toolbar/SortListMenu.vue b/packages/nc-gui/components/smartsheet-toolbar/SortListMenu.vue
index aefe7baa16..5f4eb2a010 100644
--- a/packages/nc-gui/components/smartsheet-toolbar/SortListMenu.vue
+++ b/packages/nc-gui/components/smartsheet-toolbar/SortListMenu.vue
@@ -71,7 +71,7 @@ watch(
v-model:value="sort.direction"
class="shrink grow-0 nc-sort-dir-select !text-xs"
:label="$t('labels.operation')"
- dropdown-class-name="sort-dir-dropdown"
+ dropdown-class-name="sort-dir-dropdown nc-dropdown-sort-dir"
@click.stop
@select="saveOrUpdate(sort, i)"
>
diff --git a/packages/nc-gui/components/smartsheet/ApiSnippet.vue b/packages/nc-gui/components/smartsheet/ApiSnippet.vue
index 119fc8648f..caba21361e 100644
--- a/packages/nc-gui/components/smartsheet/ApiSnippet.vue
+++ b/packages/nc-gui/components/smartsheet/ApiSnippet.vue
@@ -171,7 +171,12 @@ watch($$(activeLang), (newLang) => {
hide-minimap
/>
-
+
{{ client }}
diff --git a/packages/nc-gui/components/smartsheet/Form.vue b/packages/nc-gui/components/smartsheet/Form.vue
index 9f797dec50..d2c955ffaa 100644
--- a/packages/nc-gui/components/smartsheet/Form.vue
+++ b/packages/nc-gui/components/smartsheet/Form.vue
@@ -243,8 +243,10 @@ async function checkSMTPStatus() {
emailMe.value = false
// Please activate SMTP plugin in App store for enabling email notification
message.info(t('msg.toast.formEmailSMTP'))
+ return false
}
}
+ return true
}
function setFormData() {
@@ -263,7 +265,6 @@ function setFormData() {
} catch (e) {}
emailMe.value = data[state.user.value?.email as string]
- checkSMTPStatus()
localColumns.value = col
.filter(
@@ -306,12 +307,13 @@ function isRequired(_columnObj: Record, required = false) {
return required || (columnObj && columnObj.rqd && !columnObj.cdf)
}
-function updateEmail() {
+async function updateEmail() {
try {
+ if (!(await checkSMTPStatus())) return
+
const data = formViewData.value?.email ? JSON.parse(formViewData.value?.email) : {}
data[state.user.value?.email as string] = emailMe.value
formViewData.value!.email = JSON.stringify(data)
- checkSMTPStatus()
} catch (e) {}
}
@@ -641,7 +643,7 @@ onMounted(async () => {
v-if="isVirtualCol(element)"
class="!m-0 gap-0 p-0"
:name="element.title"
- :rules="[{ required: element.required, message: `${element.title} is required` }]"
+ :rules="[{ required: isRequired(element, element.required), message: `${element.title} is required` }]"
>
{
v-else
class="!m-0 gap-0 p-0"
:name="element.title"
- :rules="[{ required: element.required, message: `${element.title} is required` }]"
+ :rules="[{ required: isRequired(element, element.required), message: `${element.title} is required` }]"
>
{
-
+
diff --git a/packages/nc-gui/components/tabs/auth/user-management/UsersModal.vue b/packages/nc-gui/components/tabs/auth/user-management/UsersModal.vue
index 3c5281af61..e2e050206d 100644
--- a/packages/nc-gui/components/tabs/auth/user-management/UsersModal.vue
+++ b/packages/nc-gui/components/tabs/auth/user-management/UsersModal.vue
@@ -221,7 +221,7 @@ const clickInviteMore = () => {
{{ $t('labels.selectUserRole') }}
-
+
-
+
@@ -687,6 +693,7 @@ function handleEditableTnChange(idx: number) {
show-search
:options="uiTypeOptions"
:filter-option="filterOption"
+ dropdown-class-name="nc-dropdown-template-uidt"
/>
diff --git a/packages/nc-gui/components/webhook/ChannelMultiSelect.vue b/packages/nc-gui/components/webhook/ChannelMultiSelect.vue
index 1bc2b2c064..ad2f39c92a 100644
--- a/packages/nc-gui/components/webhook/ChannelMultiSelect.vue
+++ b/packages/nc-gui/components/webhook/ChannelMultiSelect.vue
@@ -58,7 +58,13 @@ onMounted(() => {
-
+
{{ channel.channel }}
diff --git a/packages/nc-gui/components/webhook/Editor.vue b/packages/nc-gui/components/webhook/Editor.vue
index ec7ba57b89..72f277cf9f 100644
--- a/packages/nc-gui/components/webhook/Editor.vue
+++ b/packages/nc-gui/components/webhook/Editor.vue
@@ -453,6 +453,7 @@ onMounted(async () => {
size="large"
:placeholder="$t('general.event')"
class="nc-text-field-hook-event"
+ dropdown-class-name="nc-dropdown-webhook-event"
>
{{ event.text.join(' ') }}
@@ -467,6 +468,7 @@ onMounted(async () => {
size="large"
class="nc-select-hook-notification-type"
:placeholder="$t('general.notification')"
+ dropdown-class-name="nc-dropdown-webhook-notification"
@change="onNotTypeChange(true)"
>
@@ -497,7 +499,12 @@ onMounted(async () => {
-
+
{{ method.title }}
diff --git a/packages/nc-gui/composables/useProject.ts b/packages/nc-gui/composables/useProject.ts
index 5aa7b15bb9..f5b728d4f0 100644
--- a/packages/nc-gui/composables/useProject.ts
+++ b/packages/nc-gui/composables/useProject.ts
@@ -64,6 +64,8 @@ const [setup, use] = useInjectionState((_projectId?: MaybeRef) => {
const isPg = computed(() => projectBaseType === 'pg')
const isSharedBase = computed(() => projectType === 'base')
+ const router = useRouter()
+
async function loadProjectMetaInfo(force?: boolean) {
if (!projectMetaInfo.value || force) {
projectMetaInfo.value = await api.project.metaGet(project.value.id!, {}, {})
@@ -104,8 +106,15 @@ const [setup, use] = useInjectionState((_projectId?: MaybeRef) => {
if (id) {
project.value = await api.project.read(projectId.value)
} else if (projectType === 'base') {
- const baseData = await api.public.sharedBaseGet(route.params.projectId as string)
- project.value = await api.project.read(baseData.project_id!)
+ try {
+ const baseData = await api.public.sharedBaseGet(route.params.projectId as string)
+ project.value = await api.project.read(baseData.project_id!)
+ } catch (e: any) {
+ if (e?.response?.status === 404) {
+ return router.push('/error/404')
+ }
+ throw e
+ }
} else if (projectId.value) {
project.value = await api.project.read(projectId.value)
} else {
diff --git a/packages/nc-gui/pages/error/404.vue b/packages/nc-gui/pages/error/404.vue
new file mode 100644
index 0000000000..0948eb7d08
--- /dev/null
+++ b/packages/nc-gui/pages/error/404.vue
@@ -0,0 +1,17 @@
+
+
+
+
+
diff --git a/packages/nc-gui/pages/index/index/create-external.vue b/packages/nc-gui/pages/index/index/create-external.vue
index 104f9f82df..1a34237689 100644
--- a/packages/nc-gui/pages/index/index/create-external.vue
+++ b/packages/nc-gui/pages/index/index/create-external.vue
@@ -359,7 +359,12 @@ onMounted(() => {
-
+
{{ client.text }}
@@ -433,7 +438,7 @@ onMounted(() => {
-
+
{{ opt }}
@@ -505,13 +510,19 @@ onMounted(() => {
-
+
{{ type }}
-
+
{{ type }}
diff --git a/scripts/cypress/integration/common/1b_table_column_operations.js b/scripts/cypress/integration/common/1b_table_column_operations.js
index b53436a7aa..a7c0c00494 100644
--- a/scripts/cypress/integration/common/1b_table_column_operations.js
+++ b/scripts/cypress/integration/common/1b_table_column_operations.js
@@ -70,7 +70,7 @@ export const genTest = (apiType, dbType) => {
// change column type and verify
cy.get(".nc-column-type-input").last().click();
- cy.getActiveSelection().find('.ant-select-item-option').contains("LongText").click();
+ cy.getActiveSelection('.nc-dropdown-column-type').find('.ant-select-item-option').contains("LongText").click();
cy.get(".ant-btn-primary:visible").contains("Save").click();
cy.toastWait("Column updated");
diff --git a/scripts/cypress/integration/common/3b_formula_column.js b/scripts/cypress/integration/common/3b_formula_column.js
index a4ef1ae69f..9d6e0a6171 100644
--- a/scripts/cypress/integration/common/3b_formula_column.js
+++ b/scripts/cypress/integration/common/3b_formula_column.js
@@ -58,7 +58,7 @@ export const genTest = (apiType, dbType) => {
.clear()
.type(columnName);
cy.get(".nc-column-type-input").last().click().type("Formula");
- cy.getActiveSelection().find('.ant-select-item-option').contains("Formula").click();
+ cy.getActiveSelection('.nc-dropdown-column-type').find('.ant-select-item-option').contains("Formula").click();
cy.get('textarea.nc-formula-input').click().type(formula, { parseSpecialCharSequences: false });
cy.get(".ant-btn-primary").contains("Save").should('exist').click();
diff --git a/scripts/cypress/integration/common/3c_lookup_column.js b/scripts/cypress/integration/common/3c_lookup_column.js
index 543c5e53ce..2656041826 100644
--- a/scripts/cypress/integration/common/3c_lookup_column.js
+++ b/scripts/cypress/integration/common/3c_lookup_column.js
@@ -53,14 +53,14 @@ export const genTest = (apiType, dbType) => {
.clear()
.type(childCol);
cy.get(".nc-column-type-input").last().click().type("Lookup");
- cy.getActiveSelection().find('.ant-select-item-option').contains("Lookup").click();
+ cy.getActiveSelection('.nc-dropdown-column-type').find('.ant-select-item-option').contains("Lookup").click();
// Configure Child table & column names
fetchParentFromLabel("Child table");
- cy.getActiveSelection().find('.ant-select-item-option').contains(childTable).click();
+ cy.getActiveSelection('.nc-dropdown-relation-table').find('.ant-select-item-option').contains(childTable).click();
fetchParentFromLabel("Child column");
- cy.getActiveSelection().find('.ant-select-item-option').contains(childCol).click();
+ cy.getActiveSelection('.nc-dropdown-relation-column').find('.ant-select-item-option').contains(childCol).click();
cy.get(".ant-btn-primary").contains("Save").should('exist').click();
cy.toastWait(`Column created`);
diff --git a/scripts/cypress/integration/common/3d_rollup_column.js b/scripts/cypress/integration/common/3d_rollup_column.js
index d386d585b7..a3867b008d 100644
--- a/scripts/cypress/integration/common/3d_rollup_column.js
+++ b/scripts/cypress/integration/common/3d_rollup_column.js
@@ -59,17 +59,17 @@ export const genTest = (apiType, dbType) => {
.clear()
.type(columnName);
cy.get(".nc-column-type-input").last().click().type("RollUp");
- cy.getActiveSelection().find('.ant-select-item-option').contains("Rollup").click();
+ cy.getActiveSelection('.nc-dropdown-column-type').find('.ant-select-item-option').contains("Rollup").click();
// Configure Child table & column names
fetchParentFromLabel("Child table");
- cy.getActiveSelection().find('.ant-select-item-option').contains(childTable).click();
+ cy.getActiveSelection('.nc-dropdown-relation-table').find('.ant-select-item-option').contains(childTable).click();
fetchParentFromLabel("Child column");
- cy.getActiveSelection().find('.ant-select-item-option').contains(childCol).click();
+ cy.getActiveSelection('.nc-dropdown-relation-column').find('.ant-select-item-option').contains(childCol).click();
fetchParentFromLabel("Aggregate function");
- cy.getActiveSelection().find('.ant-select-item-option').contains(aggregateFunc).click();
+ cy.getActiveSelection('.nc-dropdown-rollup-function').find('.ant-select-item-option').contains(aggregateFunc).click();
cy.get(".ant-btn-primary").contains("Save").should('exist').click();
cy.toastWait(`Column created`);
diff --git a/scripts/cypress/integration/common/3e_duration_column.js b/scripts/cypress/integration/common/3e_duration_column.js
index 4f8ef941b2..7aae994389 100644
--- a/scripts/cypress/integration/common/3e_duration_column.js
+++ b/scripts/cypress/integration/common/3e_duration_column.js
@@ -49,11 +49,11 @@ export const genTest = (apiType, dbType) => {
.clear()
.type(columnName);
cy.get(".nc-column-type-input").last().click().type("Duration");
- cy.getActiveSelection().find('.ant-select-item-option').contains("Duration").click();
+ cy.getActiveSelection('.nc-dropdown-column-type').find('.ant-select-item-option').contains("Duration").click();
// Configure Duration format
fetchParentFromLabel("Duration Format");
- cy.getActiveSelection().find('.ant-select-item-option').contains(durationFormat).click();
+ cy.getActiveSelection('.nc-dropdown-duration-option').find('.ant-select-item-option').contains(durationFormat).click();
cy.get(".ant-btn-primary").contains("Save").should('exist').click();
cy.toastWait(`Column created`);
@@ -85,7 +85,7 @@ export const genTest = (apiType, dbType) => {
.type(newName);
// Configure Duration format
fetchParentFromLabel("Duration Format");
- cy.getActiveSelection().find('.ant-select-item-option').contains(newDurationFormat).click();
+ cy.getActiveSelection('.nc-dropdown-duration-option').find('.ant-select-item-option').contains(newDurationFormat).click();
cy.get(".ant-btn-primary:visible").contains("Save").click();
diff --git a/scripts/cypress/integration/common/3f_link_to_another_record.js b/scripts/cypress/integration/common/3f_link_to_another_record.js
index c19c074b55..dc25b2c8e2 100644
--- a/scripts/cypress/integration/common/3f_link_to_another_record.js
+++ b/scripts/cypress/integration/common/3f_link_to_another_record.js
@@ -40,7 +40,7 @@ export const genTest = (apiType, dbType) => {
cy.get(".nc-column-type-input").last()
.click()
.type("Link");
- cy.getActiveSelection()
+ cy.getActiveSelection('.nc-dropdown-column-type')
.find('.ant-select-item-option')
.contains("LinkToAnotherRecord").click();
@@ -56,7 +56,7 @@ export const genTest = (apiType, dbType) => {
.last()
.click()
.type(foreignTable);
- cy.getActiveSelection()
+ cy.getActiveSelection('.nc-dropdown-ltar-child-table')
.find('.ant-select-item-option')
.contains(foreignTable)
.click();
diff --git a/scripts/cypress/integration/common/6g_base_share.js b/scripts/cypress/integration/common/6g_base_share.js
index 2c481e7db6..2644c940d9 100644
--- a/scripts/cypress/integration/common/6g_base_share.js
+++ b/scripts/cypress/integration/common/6g_base_share.js
@@ -85,7 +85,7 @@ export const genTest = (apiType, dbType) => {
cy.getActiveModal().find(".nc-shared-base-role").click();
- cy.getActiveSelection()
+ cy.getActiveSelection('.nc-dropdown-share-base-role')
.find('.ant-select-item')
.eq(1)
.click();
@@ -134,7 +134,7 @@ style="background: transparent; ">
cy.getActiveModal().find(".nc-shared-base-role").click();
- cy.getActiveSelection()
+ cy.getActiveSelection('.nc-dropdown-share-base-role')
.find('.ant-select-item')
.eq(0)
.click();
diff --git a/scripts/cypress/integration/common/8a_webhook.js b/scripts/cypress/integration/common/8a_webhook.js
index 224a801e8b..101565d973 100644
--- a/scripts/cypress/integration/common/8a_webhook.js
+++ b/scripts/cypress/integration/common/8a_webhook.js
@@ -36,7 +36,7 @@ function createWebhook(hook, test) {
.type('{downarrow}')
.type('{downarrow}')
- cy.getActiveSelection().find('.ant-select-item-option-content').contains('Content-Type').should('exist').click();
+ cy.getActiveSelection('.nc-dropdown-webhook-header').find('.ant-select-item-option-content').contains('Content-Type').should('exist').click();
cy.get("input.nc-input-hook-header-value")
.should("exist")
@@ -78,7 +78,7 @@ function configureWebhook(hook, test) {
if (hook?.event) {
cy.get(".nc-text-field-hook-event").should("exist").click();
- cy.getActiveSelection()
+ cy.getActiveSelection('.nc-dropdown-webhook-event')
.find(`.ant-select-item`)
.contains(hook.event)
.should("exist")
diff --git a/scripts/cypress/support/page_objects/mainPage.js b/scripts/cypress/support/page_objects/mainPage.js
index e6df490020..2a6314681b 100644
--- a/scripts/cypress/support/page_objects/mainPage.js
+++ b/scripts/cypress/support/page_objects/mainPage.js
@@ -119,7 +119,7 @@ export class _mainPage {
// opt-in requested role & submit
// cy.getActiveSelection().contains(roleType).click({force: true});
- cy.getActiveSelection().find('.nc-role-option').eq(roleIndex).should('exist').click()
+ cy.getActiveSelection('.nc-dropdown-user-role').find('.nc-role-option').eq(roleIndex).should('exist').click()
cy.getActiveModal(".nc-modal-invite-user-and-share-base").find("button.ant-btn-primary").click();
cy.toastWait("Successfully updated the user details");
@@ -204,7 +204,7 @@ export class _mainPage {
// change column type and verify
cy.get(".nc-column-type-input").last().click();
- cy.getActiveSelection().find('.ant-select-item-option').contains(colType).click();
+ cy.getActiveSelection('.nc-dropdown-column-type').find('.ant-select-item-option').contains(colType).click();
cy.get(".ant-btn-primary:visible").contains("Save").click();
cy.toastWait(`Column created`);
diff --git a/scripts/cypress/support/page_objects/navigation.js b/scripts/cypress/support/page_objects/navigation.js
index 6f906ecc1c..50c4bcbf51 100644
--- a/scripts/cypress/support/page_objects/navigation.js
+++ b/scripts/cypress/support/page_objects/navigation.js
@@ -187,7 +187,7 @@ export class _projectsPage {
if (cred.databaseType === 1) {
cy.get('.nc-extdb-db-type').should('exist').click();
- cy.getActiveSelection().find('.ant-select-item-option').contains("PostgreSQL").click();
+ cy.getActiveSelection('.nc-dropdown-ext-db-type').find('.ant-select-item-option').contains("PostgreSQL").click();
}
if (cred.databaseName !== "") {
|