DEV: Add user-field-components value transformer

This commit is contained in:
Sérgio Saquetim
2025-01-31 14:11:44 -03:00
parent 853564f859
commit 3d4760e623
2 changed files with 23 additions and 18 deletions

View File

@@ -1,25 +1,29 @@
import Component from "@glimmer/component";
import { get } from "@ember/helper";
import { applyValueTransformer } from "../lib/transformer";
import UserFieldConfirm from "./user-fields/confirm";
import UserFieldDropdown from "./user-fields/dropdown";
import UserFieldMultiselect from "./user-fields/multiselect";
import UserFieldText from "./user-fields/text";
const COMPONENTS = {
confirm: UserFieldConfirm,
dropdown: UserFieldDropdown,
multiselect: UserFieldMultiselect,
text: UserFieldText,
};
export default class UserField extends Component {
get components() {
return applyValueTransformer("user-field-components", {
confirm: UserFieldConfirm,
dropdown: UserFieldDropdown,
multiselect: UserFieldMultiselect,
text: UserFieldText,
});
}
const UserField = <template>
{{#let (get COMPONENTS @field.field_type) as |Component|}}
<Component
@field={{@field}}
@value={{@value}}
@validation={{@validation}}
...attributes
/>
{{/let}}
</template>;
export default UserField;
<template>
{{#let (get this.components @field.field_type) as |UserFieldComponent|}}
<UserFieldComponent
@field={{@field}}
@value={{@value}}
@validation={{@validation}}
...attributes
/>
{{/let}}
</template>
}

View File

@@ -32,4 +32,5 @@ export const VALUE_TRANSFORMERS = Object.freeze([
"topic-list-item-expand-pinned",
"topic-list-item-mobile-layout",
"topic-list-item-style",
"user-field-components",
]);