Merge branch 'master' into fix/add-openapi-globally-workflow

This commit is contained in:
Michael Drury 2025-01-06 14:59:24 +00:00 committed by GitHub
commit af67d25184
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 30 additions and 22 deletions

View File

@ -2,19 +2,24 @@ import { get } from "svelte/store"
import { BudiStore } from "../BudiStore"
import { previewStore } from "@/stores/builder"
interface BuilderHoverStore {
hoverTimeout?: NodeJS.Timeout
componentId: string | null
}
export const INITIAL_HOVER_STATE = {
componentId: null,
}
export class HoverStore extends BudiStore {
hoverTimeout
export class HoverStore extends BudiStore<BuilderHoverStore> {
hoverTimeout?: NodeJS.Timeout
constructor() {
super({ ...INITIAL_HOVER_STATE })
this.hover = this.hover.bind(this)
}
hover(componentId, notifyClient = true) {
hover(componentId: string, notifyClient = true) {
clearTimeout(this.hoverTimeout)
if (componentId) {
this.processHover(componentId, notifyClient)
@ -25,7 +30,7 @@ export class HoverStore extends BudiStore {
}
}
processHover(componentId, notifyClient) {
processHover(componentId: string, notifyClient?: boolean) {
if (componentId === get(this.store).componentId) {
return
}

View File

@ -2,27 +2,22 @@ import { get } from "svelte/store"
import { API } from "@/api"
import { appStore } from "@/stores/builder"
import { BudiStore } from "../BudiStore"
import { AppNavigation, AppNavigationLink, UIObject } from "@budibase/types"
interface BuilderNavigationStore extends AppNavigation {}
export const INITIAL_NAVIGATION_STATE = {
navigation: "Top",
links: [],
title: null,
sticky: null,
hideLogo: null,
logoUrl: null,
hideTitle: null,
textAlign: "Left",
navBackground: null,
navWidth: null,
navTextColor: null,
}
export class NavigationStore extends BudiStore {
export class NavigationStore extends BudiStore<BuilderNavigationStore> {
constructor() {
super(INITIAL_NAVIGATION_STATE)
}
syncAppNavigation(nav) {
syncAppNavigation(nav: AppNavigation) {
this.update(state => ({
...state,
...nav,
@ -33,15 +28,17 @@ export class NavigationStore extends BudiStore {
this.store.set({ ...INITIAL_NAVIGATION_STATE })
}
async save(navigation) {
async save(navigation: AppNavigation) {
const appId = get(appStore).appId
const app = await API.saveAppMetadata(appId, { navigation })
this.syncAppNavigation(app.navigation)
if (app.navigation) {
this.syncAppNavigation(app.navigation)
}
}
async saveLink(url, title, roleId) {
async saveLink(url: string, title: string, roleId: string) {
const navigation = get(this.store)
let links = [...(navigation?.links ?? [])]
let links: AppNavigationLink[] = [...(navigation?.links ?? [])]
// Skip if we have an identical link
if (links.find(link => link.url === url && link.text === title)) {
@ -60,7 +57,7 @@ export class NavigationStore extends BudiStore {
})
}
async deleteLink(urls) {
async deleteLink(urls: string[] | string) {
const navigation = get(this.store)
let links = navigation?.links
if (!links?.length) {
@ -86,7 +83,7 @@ export class NavigationStore extends BudiStore {
})
}
syncMetadata(metadata) {
syncMetadata(metadata: UIObject) {
const { navigation } = metadata
this.syncAppNavigation(navigation)
}

View File

@ -37,8 +37,8 @@ export interface AppInstance {
export interface AppNavigation {
navigation: string
title: string
navWidth: string
title?: string
navWidth?: string
sticky?: boolean
hideLogo?: boolean
logoUrl?: string
@ -46,6 +46,7 @@ export interface AppNavigation {
navBackground?: string
navTextColor?: string
links?: AppNavigationLink[]
textAlign?: string
}
export interface AppNavigationLink {
@ -53,6 +54,8 @@ export interface AppNavigationLink {
url: string
id?: string
roleId?: string
type?: string
subLinks?: AppNavigationLink[]
}
export interface AppCustomTheme {

View File

@ -1,4 +1,5 @@
export * from "./integration"
export * from "./misc"
export * from "./automations"
export * from "./grid"
export * from "./preview"

View File

@ -0,0 +1,2 @@
// type purely to capture structures that the type is unknown, but maybe known later
export type UIObject = Record<string, any>