diff --git a/eslint.config.mjs b/eslint.config.mjs index c497974612..2f4072a188 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -94,6 +94,15 @@ export default [ allowImportExportEverywhere: true, }, }, + + plugins: { + ...config.plugins, + "@typescript-eslint": tseslint.plugin, + }, + rules: { + ...config.rules, + "@typescript-eslint/consistent-type-imports": "error", + }, })), ...tseslint.configs.strict.map(config => ({ ...config, diff --git a/packages/bbui/src/Actions/position_dropdown.ts b/packages/bbui/src/Actions/position_dropdown.ts index 424baf91f3..edfe901921 100644 --- a/packages/bbui/src/Actions/position_dropdown.ts +++ b/packages/bbui/src/Actions/position_dropdown.ts @@ -27,7 +27,7 @@ export type UpdateHandler = ( interface Opts { anchor?: HTMLElement - align: PopoverAlignment + align: PopoverAlignment | `${PopoverAlignment}` maxHeight?: number maxWidth?: number minWidth?: number diff --git a/packages/bbui/src/Popover/Popover.svelte b/packages/bbui/src/Popover/Popover.svelte index 0d16aa4f77..5d0c5b7039 100644 --- a/packages/bbui/src/Popover/Popover.svelte +++ b/packages/bbui/src/Popover/Popover.svelte @@ -19,7 +19,8 @@ import { PopoverAlignment } from "../constants" export let anchor: HTMLElement - export let align: PopoverAlignment = PopoverAlignment.Right + export let align: PopoverAlignment | `${PopoverAlignment}` = + PopoverAlignment.Right export let portalTarget: string | undefined = undefined export let minWidth: number | undefined = undefined export let maxWidth: number | undefined = undefined diff --git a/packages/builder/src/components/common/bindings/BindingPanel.svelte b/packages/builder/src/components/common/bindings/BindingPanel.svelte index 3715719565..a760599fb1 100644 --- a/packages/builder/src/components/common/bindings/BindingPanel.svelte +++ b/packages/builder/src/components/common/bindings/BindingPanel.svelte @@ -422,7 +422,7 @@ {context} addHelper={onSelectHelper} addBinding={onSelectBinding} - mode={editorMode} + {mode} /> {:else if sidePanel === SidePanel.Evaluation} + - -
- {#if hoverTarget.description} -
+{#if popoverAnchor && hoverTarget} + +
+ {#if hoverTarget.description} +
+ + {@html hoverTarget.description} +
+ {/if} + {#if hoverTarget.code} - {@html hoverTarget.description} -
- {/if} - {#if hoverTarget.code} - -
{@html hoverTarget.code}
- {/if} -
- +
{@html hoverTarget.code}
+ {/if} +
+
+{/if} @@ -173,7 +187,7 @@
@@ -230,7 +244,8 @@ {#each category.bindings as binding}
  • showBindingPopover(binding, e.target)} + on:mouseenter={e => + showBindingPopover(binding, e.currentTarget)} on:mouseleave={hidePopover} on:click={() => addBinding(binding)} > @@ -264,9 +279,11 @@ {#each filteredHelpers as helper}
  • showHelperPopover(helper, e.target)} + on:mouseenter={e => + showHelperPopover(helper, e.currentTarget)} on:mouseleave={hidePopover} - on:click={() => addHelper(helper, mode.name === "javascript")} + on:click={() => + addHelper(helper, mode === BindingMode.JavaScript)} > {helper.displayText} diff --git a/packages/builder/src/constants/completions.js b/packages/builder/src/constants/completions.ts similarity index 62% rename from packages/builder/src/constants/completions.js rename to packages/builder/src/constants/completions.ts index e539a8084a..79cfbf61bf 100644 --- a/packages/builder/src/constants/completions.js +++ b/packages/builder/src/constants/completions.ts @@ -1,10 +1,10 @@ import { getManifest, helpersToRemoveForJs } from "@budibase/string-templates" +import { Helper } from "@budibase/types" -export function handlebarsCompletions() { +export function handlebarsCompletions(): Helper[] { const manifest = getManifest() - - return Object.keys(manifest).flatMap(key => - Object.entries(manifest[key]).map(([helperName, helperConfig]) => ({ + return Object.values(manifest).flatMap(helpersObj => + Object.entries(helpersObj).map(([helperName, helperConfig]) => ({ text: helperName, path: helperName, example: helperConfig.example, @@ -14,6 +14,7 @@ export function handlebarsCompletions() { allowsJs: !helperConfig.requiresBlock && !helpersToRemoveForJs.includes(helperName), + args: helperConfig.args, })) ) } diff --git a/packages/client/src/components/app/DataProvider.svelte b/packages/client/src/components/app/DataProvider.svelte index a80b9a5f74..442125f32b 100644 --- a/packages/client/src/components/app/DataProvider.svelte +++ b/packages/client/src/components/app/DataProvider.svelte @@ -2,9 +2,7 @@ import { getContext } from "svelte" import { Pagination, ProgressCircle } from "@budibase/bbui" import { fetchData, QueryUtils } from "@budibase/frontend-core" - import { - LogicalOperator, - EmptyFilterOption, + import type { TableSchema, SortOrder, SearchFilters, @@ -14,6 +12,7 @@ GroupUserDatasource, DataFetchOptions, } from "@budibase/types" + import { LogicalOperator, EmptyFilterOption } from "@budibase/types" type ProviderDatasource = Exclude< DataFetchDatasource, diff --git a/packages/client/src/components/app/blocks/form/FormBlock.svelte b/packages/client/src/components/app/blocks/form/FormBlock.svelte index 3f44aee1d7..17804b033a 100644 --- a/packages/client/src/components/app/blocks/form/FormBlock.svelte +++ b/packages/client/src/components/app/blocks/form/FormBlock.svelte @@ -4,7 +4,7 @@ import { Utils } from "@budibase/frontend-core" import FormBlockWrapper from "./FormBlockWrapper.svelte" import { get } from "svelte/store" - import { TableSchema, UIDatasource } from "@budibase/types" + import type { TableSchema, UIDatasource } from "@budibase/types" type Field = { name: string; active: boolean } diff --git a/packages/client/src/components/error-states/ComponentErrorState.svelte b/packages/client/src/components/error-states/ComponentErrorState.svelte index b2e7c92eae..1bcd5f21fa 100644 --- a/packages/client/src/components/error-states/ComponentErrorState.svelte +++ b/packages/client/src/components/error-states/ComponentErrorState.svelte @@ -1,7 +1,7 @@