import { Build, Component, Event, h, Listen, Prop, } from "@stencil/core";
import { toastController } from "@ionic/core";
import state from "../../../store";
export class ModalSendEmail {
  constructor() {
    this.to = [];
    this.from = "info@thefloodteam.com";
    this.attachments = [];
    this.users = [];
    this.hideTemplateSelect = false;
  }
  async onSuccess(event) {
    var _a;
    if (((_a = event.detail) === null || _a === void 0 ? void 0 : _a.endpoint) === "sendTemplateEmail") {
      const sendEmailModalEl = document.querySelector("ion-modal.modal-send-email-wrapper");
      if (sendEmailModalEl === null || sendEmailModalEl === void 0 ? void 0 : sendEmailModalEl.dismiss) {
        await sendEmailModalEl.dismiss();
        this.presentToast();
      }
    }
  }
  async presentToast() {
    const toast = await toastController.create({
      message: "Your emails are on their way.",
      duration: 2000,
    });
    toast.present();
  }
  onBeforeSubmit(formData) {
    return {
      templateId: (formData === null || formData === void 0 ? void 0 : formData.templateId)
        ? formData.templateId
        : this.templateId
          ? this.templateId
          : null,
      attachments: this.attachments,
      from: (formData === null || formData === void 0 ? void 0 : formData.from)
        ? formData.from
        : this.from
          ? this.from
          : "info@thefloodteam.com",
      emails: (formData === null || formData === void 0 ? void 0 : formData.to) ? formData.to : this.to ? this.to : [],
      filters: this.filters ? this.filters : null,
    };
  }
  componentWillLoad() {
    if (!(Build === null || Build === void 0 ? void 0 : Build.isBrowser))
      return;
  }
  render() {
    return [
      h("ion-header", null,
        h("ion-toolbar", null,
          h("ion-title", null, "Send Email"),
          h("ion-buttons", { slot: "end" },
            h("ion-button", { onClick: () => this.formEl.submit(), color: "primary", fill: "solid" }, "Send"),
            h("ion-button", { onClick: () => this.floodteamCloseModal.emit(), style: {
                "--color": "var(--ion-text-color)",
                "--color-hover": "var(--ion-color-danger",
              } },
              h("ion-icon", { slot: "icon-only", name: "close-circle-outline" }))))),
      h("ion-content", { style: {
          "--background": "var(--ion-color-base)",
        } },
        h("fireenjin-form", { ref: (el) => (this.formEl = el), endpoint: "sendTemplateEmail", disableEnterButton: true, hideControls: true, beforeSubmit: this.onBeforeSubmit.bind(this) },
          h("ion-grid", null,
            h("ion-row", null,
              h("ion-col", null,
                !this.hideTemplateSelect && (h("fireenjin-select", { ref: (el) => (this.templateSelectEl = el), name: "templateId", label: "Template", labelPosition: "stacked", placeholder: "Select Message Template", value: this.templateId, options: ((state === null || state === void 0 ? void 0 : state.templates) || [])
                    .filter((template) => !(template === null || template === void 0 ? void 0 : template.partial) &&
                    (template === null || template === void 0 ? void 0 : template.type) === "email" &&
                    (!this.templateFilter ||
                      this.templateFilter(template)))
                    .map((template) => ({
                    label: template === null || template === void 0 ? void 0 : template.subject,
                    value: template === null || template === void 0 ? void 0 : template.id,
                  })), interface: "action-sheet" })),
                h("fireenjin-select-tags", { name: "to", label: "Send To", labelPosition: "stacked", placeholder: "Add Emails", allowAdding: true, value: this.to, multiple: true, options: (this.users || []).map((user) => ({
                    label: (user === null || user === void 0 ? void 0 : user.email) ||
                      `${user === null || user === void 0 ? void 0 : user.firstName} ${user === null || user === void 0 ? void 0 : user.lastName} has no Email on File.`,
                    value: user === null || user === void 0 ? void 0 : user.email,
                    disabled: !(user === null || user === void 0 ? void 0 : user.email),
                  })) }))),
            h("ion-row", null,
              h("ion-col", null,
                h("fireenjin-chip-bar", null, (this.attachments || []).map((url) => {
                  var _a, _b, _c, _d, _e, _f;
                  return (h("ion-chip", null,
                    h("ion-icon", { name: "document", class: "ft-icon-style" }),
                    h("ion-label", null, Build.isBrowser &&
                      decodeURI(((_f = (_e = (_d = (_c = (_b = (_a = url === null || url === void 0 ? void 0 : url.split) === null || _a === void 0 ? void 0 : _a.call(url, "/")) === null || _b === void 0 ? void 0 : _b.pop) === null || _c === void 0 ? void 0 : _c.call(_b)) === null || _d === void 0 ? void 0 : _d.split) === null || _e === void 0 ? void 0 : _e.call(_d, "?")) === null || _f === void 0 ? void 0 : _f[0]) ||
                        "No File Name"))));
                }))))),
          h("ion-accordion-group", null,
            h("ion-accordion", null,
              h("ion-item", { slot: "header" },
                h("ion-label", null, "Advanced")),
              h("ion-grid", { slot: "content" },
                h("ion-row", null,
                  h("ion-col", null,
                    h("fireenjin-input", { name: "subject", label: "Subject", labelPosition: "stacked", placeholder: "Email Subject", value: this.subject }))),
                h("ion-row", null,
                  h("ion-col", null,
                    h("fireenjin-input", { name: "from", label: "Email From", labelPosition: "stacked", placeholder: "Email Address to Send From", value: this.from })),
                  h("ion-col", null,
                    h("fireenjin-input", { name: "replyTo", label: "Reply To", labelPosition: "stacked", placeholder: "Email Address to Reply", value: this.replyTo })))))))),
    ];
  }
  static get is() { return "modal-send-email"; }
  static get originalStyleUrls() { return {
    "$": ["modal-send-email.css"]
  }; }
  static get styleUrls() { return {
    "$": ["modal-send-email.css"]
  }; }
  static get properties() { return {
    "to": {
      "type": "unknown",
      "mutable": false,
      "complexType": {
        "original": "string[]",
        "resolved": "string[]",
        "references": {}
      },
      "required": false,
      "optional": false,
      "docs": {
        "tags": [],
        "text": ""
      },
      "defaultValue": "[]"
    },
    "subject": {
      "type": "string",
      "mutable": false,
      "complexType": {
        "original": "string",
        "resolved": "string",
        "references": {}
      },
      "required": false,
      "optional": false,
      "docs": {
        "tags": [],
        "text": ""
      },
      "attribute": "subject",
      "reflect": false
    },
    "replyTo": {
      "type": "string",
      "mutable": false,
      "complexType": {
        "original": "string",
        "resolved": "string",
        "references": {}
      },
      "required": false,
      "optional": false,
      "docs": {
        "tags": [],
        "text": ""
      },
      "attribute": "reply-to",
      "reflect": false
    },
    "from": {
      "type": "string",
      "mutable": false,
      "complexType": {
        "original": "string",
        "resolved": "string",
        "references": {}
      },
      "required": false,
      "optional": false,
      "docs": {
        "tags": [],
        "text": ""
      },
      "attribute": "from",
      "reflect": false,
      "defaultValue": "\"info@thefloodteam.com\""
    },
    "attachments": {
      "type": "unknown",
      "mutable": false,
      "complexType": {
        "original": "string[]",
        "resolved": "string[]",
        "references": {}
      },
      "required": false,
      "optional": false,
      "docs": {
        "tags": [],
        "text": ""
      },
      "defaultValue": "[]"
    },
    "templateId": {
      "type": "string",
      "mutable": false,
      "complexType": {
        "original": "string",
        "resolved": "string",
        "references": {}
      },
      "required": false,
      "optional": false,
      "docs": {
        "tags": [],
        "text": ""
      },
      "attribute": "template-id",
      "reflect": false
    },
    "users": {
      "type": "unknown",
      "mutable": true,
      "complexType": {
        "original": "User[]",
        "resolved": "User[]",
        "references": {
          "User": {
            "location": "import",
            "path": "../../../sdk"
          }
        }
      },
      "required": false,
      "optional": false,
      "docs": {
        "tags": [],
        "text": ""
      },
      "defaultValue": "[]"
    },
    "templateFilter": {
      "type": "unknown",
      "mutable": false,
      "complexType": {
        "original": "(template: Template) => boolean",
        "resolved": "(template: Template) => boolean",
        "references": {
          "Template": {
            "location": "import",
            "path": "../../../sdk"
          }
        }
      },
      "required": false,
      "optional": true,
      "docs": {
        "tags": [],
        "text": ""
      }
    },
    "hideTemplateSelect": {
      "type": "boolean",
      "mutable": false,
      "complexType": {
        "original": "boolean",
        "resolved": "boolean",
        "references": {}
      },
      "required": false,
      "optional": false,
      "docs": {
        "tags": [],
        "text": ""
      },
      "attribute": "hide-template-select",
      "reflect": false,
      "defaultValue": "false"
    },
    "filters": {
      "type": "unknown",
      "mutable": false,
      "complexType": {
        "original": "{ [name: string]: any }",
        "resolved": "{ [name: string]: any; }",
        "references": {}
      },
      "required": false,
      "optional": false,
      "docs": {
        "tags": [],
        "text": ""
      }
    }
  }; }
  static get events() { return [{
      "method": "floodteamCloseModal",
      "name": "floodteamCloseModal",
      "bubbles": true,
      "cancelable": true,
      "composed": true,
      "docs": {
        "tags": [],
        "text": ""
      },
      "complexType": {
        "original": "any",
        "resolved": "any",
        "references": {}
      }
    }]; }
  static get listeners() { return [{
      "name": "fireenjinSuccess",
      "method": "onSuccess",
      "target": "body",
      "capture": false,
      "passive": false
    }]; }
}
//# sourceMappingURL=modal-send-email.js.map