Improve types

This commit is contained in:
Adria Navarro 2025-02-03 13:23:10 +01:00
parent 9c24aba250
commit 8c538676aa
2 changed files with 18 additions and 15 deletions

View File

@ -21,7 +21,7 @@ import { getSettingsDefinition } from "@budibase/frontend-core"
function reduceBy<TItem extends {}, TKey extends keyof TItem>( function reduceBy<TItem extends {}, TKey extends keyof TItem>(
key: TKey, key: TKey,
list: TItem[] list: TItem[]
): Record<string, any> { ): Record<string, TItem> {
return list.reduce( return list.reduce(
(result, item) => ({ (result, item) => ({
...result, ...result,
@ -139,21 +139,23 @@ function getMissingRequiredSettings(
const settings = getSettingsDefinition(definition) const settings = getSettingsDefinition(definition)
const missingRequiredSettings = settings.filter((setting: any) => { const missingRequiredSettings = settings.filter(setting => {
let empty = let empty =
component[setting.key] == null || component[setting.key] === "" component[setting.key] == null || component[setting.key] === ""
let missing = setting.required && empty let missing = setting.required && empty
// Check if this setting depends on another, as it may not be required // Check if this setting depends on another, as it may not be required
if (setting.dependsOn) { if (setting.dependsOn && typeof setting.dependsOn !== "string") {
const dependsOnKey = setting.dependsOn.setting || setting.dependsOn const dependsOnKey = setting.dependsOn.setting || setting.dependsOn
const dependsOnValue = setting.dependsOn.value const dependsOnValue = setting.dependsOn.value
const realDependentValue = component[dependsOnKey] const realDependentValue =
component[dependsOnKey as keyof typeof component]
const sectionDependsOnKey = const sectionDependsOnKey =
setting.sectionDependsOn?.setting || setting.sectionDependsOn setting.sectionDependsOn?.setting || setting.sectionDependsOn
const sectionDependsOnValue = setting.sectionDependsOn?.value const sectionDependsOnValue = setting.sectionDependsOn?.value
const sectionRealDependentValue = component[sectionDependsOnKey] const sectionRealDependentValue =
component[sectionDependsOnKey as keyof typeof component]
if (dependsOnValue == null && realDependentValue == null) { if (dependsOnValue == null && realDependentValue == null) {
return false return false
@ -174,7 +176,7 @@ function getMissingRequiredSettings(
}) })
if (missingRequiredSettings?.length) { if (missingRequiredSettings?.length) {
result[component._id!] = missingRequiredSettings.map((s: any) => ({ result[component._id!] = missingRequiredSettings.map(s => ({
componentId: component._id!, componentId: component._id!,
key: s.key, key: s.key,
message: `Add the <mark>${s.label}</mark> setting to start using your component`, message: `Add the <mark>${s.label}</mark> setting to start using your component`,
@ -255,9 +257,7 @@ export function findComponentsBySettingsType(
const definition = definitions[component._component] const definition = definitions[component._component]
const setting = definition?.settings?.find((s: any) => const setting = definition?.settings?.find(s => typesArray.includes(s.type))
typesArray.includes(s.type)
)
if (setting) { if (setting) {
result.push({ result.push({
component, component,

View File

@ -21,13 +21,16 @@ export interface ComponentSetting {
label?: string label?: string
section?: string section?: string
name?: string name?: string
required?: boolean
defaultValue?: any defaultValue?: any
selectAllFields?: boolean selectAllFields?: boolean
resetOn?: string | string[] resetOn?: string | string[]
settings?: ComponentSetting[] settings?: ComponentSetting[]
dependsOn?: dependsOn?: {
| string setting: string
| { value: string
}
sectionDependsOn?: {
setting: string setting: string
value: string value: string
} }