Continuando a discussão de Discourse toolkit para renderizar formulários![]()
Quero que meu botão de salvar esteja disponível apenas quando houver algo para salvar.
Procurando por isDirty em todos os plugins não encontra nada. O único lugar onde o vejo no core é no toolkit.
Certamente deve haver alguma maneira de ver se um botão de salvar deve estar ativo.
Eu tenho isto:
export default class ServerCreate extends Component {
@tracked formApi = null;
@tracked isDirty = false;
@action
registerAPI(api) {
console.log("registerAPI chamado", api);
this.formApi = api;
// api.onChange(() => {
// console.log("onChange!", api.isDirty);
// this.isDirty = api.isDirty;
// });
}
get submitDisabled() {
// formApi pode ser indefinido até que o formulário se registre
console.log("submitDisabled", this);
return !this.formApi?.isDirty;
}
....
<Form
@data={{this.formData}}
@onRegisterApi={{this.registerAPI}}
@onSubmit={{this.handleSubmit}}
as |form|
>
e isto (tentei várias coisas):
<form.Submit
@label="pfaffmanager.server.save_button"
class="save"
@icon="check"
@disabled={{this.registerAPI.isDirty}}
/>
Não consegui descobrir como ver se os dados foram alterados para saber quando salvá-los. Não entendo por que não consigo encontrar um exemplo disso. Tentei várias coisas que parecem o exemplo na documentação, mas nenhuma delas funcionou.
Tentei olhar as páginas de configurações de admin, que sei que mostram um botão de salvar apenas se os dados forem alterados, mas parece que não usam o toolkit de formulários.
Vejo que minha função registerAPI(api) está sendo chamada, mas não vejo isDirty nela:
Então, quando eu o registro, parece que é apenas texto?
Claro que isDirty é quando eu quero que o botão esteja habilitado, não desabilitado, mas outros exemplos que obtive (provavelmente de ask.discourse.com) me disseram para fazer algo como @disabled={{not this.isDirty}} e não existe not, então por enquanto ficaria feliz se funcionasse ao contrário.

