Docs
App Examples
App Examples Small examples for Enfyra App extensions and external SSR apps. Extension Data Load Rows With useApi <script setup> const { data, execute } = useApi("/post", { query: { fields: "id,title", limit: 10 } }) onMounted(() => execute()) </script> Create Row <script setup>
App Examples
Small examples for Enfyra App extensions and external SSR apps.
Extension Data
Load Rows With useApi
<script setup>
const { data, execute } = useApi("/post", {
query: { fields: "id,title", limit: 10 }
})
onMounted(() => execute())
</script>
Create Row
<script setup>
const title = ref("")
const toast = useToast()
async function save() {
await $fetch("/api/post", {
method: "POST",
body: { title: title.value }
})
toast.add({ title: "Saved" })
}
</script>
Show Current User
<script setup>
const { me, fetchUser } = useAuth()
onMounted(() => fetchUser())
</script>
<template>
<p>{{ me?.email }}</p>
</template>
Extension Shell
Register Page Header
<script setup>
const { registerPageHeader } = usePageHeaderRegistry()
registerPageHeader({
title: "Posts",
description: "Manage content",
leadingIcon: "",
variant: "minimal"
})
</script>
Register Header Action
<script setup>
const { register: registerHeaderActions } = useHeaderActionRegistry()
registerHeaderActions({
id: "refresh-posts",
label: "Refresh",
icon: "",
color: "neutral",
variant: "soft",
onClick: () => refresh()
})
</script>
Gate A Button By Permission
<template>
<PermissionGate :condition="{ and: [{ route: '/post', methods: ['POST'] }] }">
<UButton type="button">Create</UButton>
</PermissionGate>
</template>
Extension Forms
Use FormEditor
<template>
<FormEditor
table-name="post"
:record="record"
:includes="['title', 'status']"
/>
</template>
Open A Modal
<template>
<UButton type="button" @click="open = true">Open</UButton>
<CommonModal v-model:open="open">
<template #body>Modal content</template>
</CommonModal>
</template>
<script setup>
const open = ref(false)
</script>
SSR App Proxy
Nuxt Proxy
export default defineNuxtConfig({
routeRules: {
"/enfyra/**": {
proxy: `${process.env.API_URL}/**`
}
}
})
Password Login
await $fetch("/enfyra/login", {
method: "POST",
body: { email, password }
})
Fetch Current User
const user = await $fetch("/enfyra/me")
Logout
await $fetch("/enfyra/logout", {
method: "POST"
})
SSR Realtime
Socket.IO Client
import { io } from "socket.io-client"
const socket = io("/chat", {
path: "/socket.io",
withCredentials: true,
transports: ["polling"],
upgrade: false
})
Listen For Event
socket.on("chat:message", (payload) => {
messages.value.push(payload.message)
})
Send Event
socket.emit("chat:message", {
conversationId,
text
})