Come vedere se i dati del toolkit dei moduli sono modificati?

Continuando la discussione da Discourse toolkit per il rendering dei moduli:slight_smile:

Vorrei che il mio pulsante di salvataggio fosse disponibile solo quando c’è qualcosa da salvare.

Cercando isDirty in all-the-plugins non trova nulla. L’unico posto in cui lo vedo nel core è nel toolkit.

Sicuramente c’è un modo per vedere se un pulsante di salvataggio dovrebbe essere attivo.

Ho questo:


export default class ServerCreate extends Component {
  @tracked formApi = null;
  @tracked isDirty = false;

  @action
  registerAPI(api) {
    console.log("registerAPI called", api);
    this.formApi = api;

    // api.onChange(() => {
    //   console.log("onChange!", api.isDirty);
    //   this.isDirty = api.isDirty;
    // });
  }

  get submitDisabled() {
    // formApi potrebbe essere undefined finché il modulo non si registra
    console.log("submitDisabled", this);
    return !this.formApi?.isDirty;
  }

....

      <Form
        @data={{this.formData}}
        @onRegisterApi={{this.registerAPI}}
        @onSubmit={{this.handleSubmit}}
        as |form|
      >

e questo (ho provato un po’ di cose):

            <form.Submit
              @label="pfaffmanager.server.save_button"
              class="save"
              @icon="check"
              @disabled={{this.registerAPI.isDirty}}
            />

Non sono riuscito a capire come vedere se i dati sono cambiati per sapere se salvarli. Non capisco perché non riesco a trovare un esempio di questo. Ho provato un po’ di cose che sembrano l’esempio nella documentazione, ma nessuna di esse ha funzionato.

Ho provato a guardare le pagine delle impostazioni di amministrazione, che so che mostrano un pulsante di salvataggio solo se i dati vengono modificati, ma sembra che non utilizzino il forms toolkit.

Vedo che la mia funzione registerAPI(api) viene chiamata, ma non vedo isDirty in essa:

Poi, quando lo registro, sembra che sia solo testo?

Naturalmente isDirty è quando voglio che il pulsante sia abilitato, non disabilitato, ma altri esempi che ho ottenuto (probabilmente da ask.discourse.com) mi hanno detto di fare qualcosa come @disabled={{not this.isDirty}} e non esiste una cosa come not, quindi per ora sarei felice se funzionasse al contrario.

2 Mi Piace