mirror of
https://github.com/maputnik/editor.git
synced 2025-12-24 07:00:01 +00:00
## Launch Checklist This PR adds back the error panel which was under the map for some reason. It also highlights problematic layers in the layers list (which already worked). It also highlights the field that has an error related to it. It fixes the error types throughout the code. Before: <img width="1141" height="665" alt="image" src="https://github.com/user-attachments/assets/c0593d6c-8f14-41b3-8a51-bc359446656d" /> After: <img width="1141" height="665" alt="image" src="https://github.com/user-attachments/assets/1ffeebb7-31ea-4ed5-97f4-fc5f907a6aea" /> - [x] Briefly describe the changes in this PR. - [x] Include before/after visuals or gifs if this PR includes visual changes. - [x] Write tests for all new functionality. - [x] Add an entry to `CHANGELOG.md` under the `## main` section. --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
50 lines
1.4 KiB
TypeScript
50 lines
1.4 KiB
TypeScript
import Block, { type BlockProps } from "./Block";
|
|
import InputSpec, { type FieldSpecType, type InputSpecProps } from "./InputSpec";
|
|
import Fieldset, { type FieldsetProps } from "./Fieldset";
|
|
|
|
function getElementFromType(fieldSpec: { type?: FieldSpecType, values?: unknown[] }): typeof Fieldset | typeof Block {
|
|
switch(fieldSpec.type) {
|
|
case "color":
|
|
return Block;
|
|
case "enum":
|
|
return (Object.keys(fieldSpec.values!).length <= 3 ? Fieldset : Block);
|
|
case "boolean":
|
|
return Block;
|
|
case "array":
|
|
return Fieldset;
|
|
case "resolvedImage":
|
|
return Block;
|
|
case "number":
|
|
return Block;
|
|
case "string":
|
|
return Block;
|
|
case "formatted":
|
|
return Block;
|
|
case "padding":
|
|
return Block;
|
|
case "numberArray":
|
|
return Fieldset;
|
|
case "colorArray":
|
|
return Fieldset;
|
|
case "variableAnchorOffsetCollection":
|
|
return Fieldset;
|
|
default:
|
|
console.warn("No such type for: " + fieldSpec.type);
|
|
return Block;
|
|
}
|
|
}
|
|
|
|
export type FieldSpecProps = InputSpecProps & BlockProps & FieldsetProps;
|
|
|
|
const FieldSpec: React.FC<FieldSpecProps> = (props) => {
|
|
const TypeBlock = getElementFromType(props.fieldSpec!);
|
|
|
|
return (
|
|
<TypeBlock label={props.label} action={props.action} fieldSpec={props.fieldSpec} error={props.error}>
|
|
<InputSpec {...props} />
|
|
</TypeBlock>
|
|
);
|
|
};
|
|
|
|
export default FieldSpec;
|