+
{{ $t('title.generatingBaseTailoredToYourRequirement') }}
@@ -557,34 +510,23 @@ onMounted(() => {
-
+
-
+
@@ -602,30 +544,19 @@ onMounted(() => {
-
+
-
+
-
+
+ class="flex-1 flex items-center gap-3 text-nc-content-purple-dark dark:text-nc-content-purple-medium">
@@ -637,24 +568,13 @@ onMounted(() => {
{{ table.title }}
-
+
-
+
diff --git a/packages/nc-gui/components/workspace/project/AppMarket.vue b/packages/nc-gui/components/workspace/project/AppMarket.vue
index 2deac8098c..12bb44b2f6 100644
--- a/packages/nc-gui/components/workspace/project/AppMarket.vue
+++ b/packages/nc-gui/components/workspace/project/AppMarket.vue
@@ -10,29 +10,25 @@ interface SandboxType {
interface Props {
workspaceId: string
+ visible: boolean
}
const props = defineProps
()
-const emit = defineEmits(['close', 'installed'])
+const emit = defineEmits(['update:visible', 'installed'])
+
+const visible = useVModel(props, 'visible', emit)
+
const { $api } = useNuxtApp()
const { t } = useI18n()
-const visible = ref(true)
const sandboxes = ref([])
const loading = ref(false)
const installing = ref(null)
const searchQuery = ref('')
const selectedCategory = ref(null)
-// Watch visible to emit close when modal is closed by clicking outside
-watch(visible, (newVal) => {
- if (!newVal) {
- emit('close')
- }
-})
-
const categories = computed(() => {
const cats = new Set()
sandboxes.value.forEach((sb) => {
@@ -104,7 +100,7 @@ const installSandbox = async (sandbox: SandboxType) => {
message.success(t('msg.success.baseInstalled'))
emit('installed', sandbox)
- emit('close')
+ visible.value = false
} catch (e) {
message.error(await extractSdkResponseErrorMsg(e))
} finally {
@@ -124,12 +120,12 @@ watch(
-
+
{{ t('labels.appMarket') }}
-
+
@@ -137,13 +133,15 @@ watch(
-
+
-
+
{{ cat }}
@@ -156,7 +154,7 @@ watch(
-
+
{{ t('msg.info.noSandboxesFound') }}
@@ -198,7 +196,7 @@ watch(
-
+