@projectcaluma/ember-form-builder
Version:
Ember engine for building Caluma forms.
63 lines (54 loc) • 1.69 kB
JavaScript
import { action } from "@ember/object";
import { inject as service } from "@ember/service";
import Component from "@glimmer/component";
import { tracked } from "@glimmer/tracking";
import { queryManager } from "ember-apollo-client";
import { Changeset } from "ember-changeset";
import lookupValidator from "ember-changeset-validations";
import { task } from "ember-concurrency";
import copyFormMutation from "@projectcaluma/ember-form-builder/gql/mutations/copy-form.graphql";
import validations from "@projectcaluma/ember-form-builder/validations/form";
export default class CfbFormEditorCopyModal extends Component {
apollo;
notification;
router;
intl;
visible = false;
constructor(owner, args) {
super(owner, args);
this.changeset = Changeset(
{ ...this.args.item, id: undefined },
lookupValidator(validations),
validations,
);
}
toggle() {
this.visible = !this.visible;
}
submit = task({ drop: true }, async (changeset) => {
try {
await this.apollo.mutate(
{
mutation: copyFormMutation,
variables: {
input: {
source: this.args.item.slug,
name: changeset.name,
slug: changeset.slug,
},
},
},
"copyForm.form",
);
this.notification.success(
this.intl.t("caluma.form-builder.notification.form.create.success"),
);
this.router.transitionTo("edit", changeset.slug);
} catch {
this.notification.danger(
this.intl.t("caluma.form-builder.notification.form.create.error"),
);
}
});
}