import { r as registerInstance, e as createEvent, B as Build, h } from './index-e0adbd54.js';
import { t as toastController } from './overlays-b83a89c7.js';
import { s as state } from './store-75674961.js';
import { i as isAdmin } from './isAdmin-f31fe782.js';
import { g as getLocationOptions } from './getLocationOptions-ef1402f9.js';
import { g as getCompanyOptions, a as getUserTagOptions } from './getCompanyOptions-dc42eacd.js';
import { g as getUserRoleOptions } from './getUserRoleOptions-332abdaf.js';
import './ionic-global-3272af31.js';
import './helpers-06537f39.js';
import './index-96e8c812.js';
import './getHandlebarsHelpers-c1e27d99.js';
import './_commonjsHelpers-44457d8d.js';
import './index-e6b3332e.js';
import './localforage-394b59fa.js';

const modalSendEmailCss = ".modal-send-email-wrapper{--min-width:300px}modal-send-email ion-item-divider{--padding-start:0px}modal-send-email fireenjin-avatar{margin-left:16px}modal-send-email h5,modal-send-email p{display:block;--ion-color-step-600:#666666;font-size:0.9em}modal-send-email ion-button{display:table;margin-left:0px;margin:0 auto}";

const ModalSendEmail = class {
  constructor(hostRef) {
    registerInstance(this, hostRef);
    this.floodteamCloseModal = createEvent(this, "floodteamCloseModal", 7);
    this.toOptions = [];
    this.ccOptions = [];
    this.bccOptions = [];
    this.formData = {};
    this.to = [];
    this.role = undefined;
    this.bccs = [];
    this.ccs = [];
    this.subject = undefined;
    this.replyTo = undefined;
    this.from = "info@thefloodteam.com";
    this.attachments = [];
    this.templateId = undefined;
    this.users = [];
    this.templateFilter = undefined;
    this.hideTemplateSelect = false;
    this.filters = undefined;
    this.payload = undefined;
    this.job = undefined;
    this.templateData = {};
    this.notes = undefined;
    this.isEblast = false;
    this.dryRun = false;
  }
  onChange(event) {
    var _a;
    if (((_a = event === null || event === void 0 ? void 0 : event.target) === null || _a === void 0 ? void 0 : _a.name) === "templateId") {
      this.templateId = event.target.value;
    }
  }
  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();
  }
  componentWillLoad() {
    if (!(Build === null || Build === void 0 ? void 0 : Build.isBrowser))
      return;
    this.toOptions = (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),
    }));
    if (this.to)
      this.toOptions = [
        ...this.toOptions,
        ...this.to.map((to) => ({
          label: to,
          value: to,
          disabed: false,
        })),
      ];
    this.bccOptions = (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),
    }));
    if (this.bccs)
      this.bccOptions = [
        ...this.bccOptions,
        ...this.bccs.map((bcc) => ({
          label: bcc,
          value: bcc,
          disabed: false,
        })),
      ];
    this.ccOptions = (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),
    }));
    if (this.ccs)
      this.ccOptions = [
        ...this.ccOptions,
        ...this.ccs.map((cc) => ({
          label: cc,
          value: cc,
          disabed: false,
        })),
      ];
    this.formData = {
      isEblast: this.isEblast || false,
      dryRun: this.dryRun || false,
      data: { ...(this.templateData || {}), notes: this.notes },
      filters: this.filters || null,
      attachments: this.attachments,
      ccs: this.ccs,
      bccs: this.bccs,
      from: this.from,
      emails: this.to,
      templateId: this.templateId,
    };
  }
  render() {
    var _a;
    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", formData: this.formData, disableEnterButton: true, hideControls: true }, h("ion-grid", null, h("ion-row", null, h("ion-col", { size: "12", sizeMd: "7" }, !this.hideTemplateSelect && (h("fireenjin-select", { interface: "action-sheet", ref: (el) => (this.templateSelectEl = el), name: "templateId", label: "Template", labelPosition: "stacked", placeholder: "Select Message Template", value: this.templateId, options: (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,
        })) })), h("fireenjin-select-tags", { name: "emails", label: "Send To", labelPosition: "stacked", placeholder: "Add Emails", allowAdding: true, value: this.to, options: this.toOptions }), h("fireenjin-select-tags", { name: "ccs", label: "CCs", labelPosition: "stacked", placeholder: "Add CCs", allowAdding: true, value: this.ccs, options: this.ccOptions }), this.isEblast && isAdmin() && (h("fireenjin-select", { interface: "action-sheet", name: "filters.locationId", label: "Send to Location", labelPosition: "stacked", placeholder: "Select a Location", value: this.filters.locationId, options: [...getLocationOptions(), { label: "All", value: null }] })), this.isEblast && isAdmin() && (h("fireenjin-select", { interface: "action-sheet", name: "filters.role", label: "Send to User Type", labelPosition: "stacked", placeholder: "Select Role", value: this.filters.role, options: getUserRoleOptions() })), this.isEblast && isAdmin() && (h("fireenjin-select", { name: "filters.companyId", label: "Send to Company", labelPosition: "stacked", placeholder: "Select a Company", value: this.filters.companyId, options: getCompanyOptions() })), this.isEblast && (h("fireenjin-select-tags", { name: "filters.tags", value: ((_a = this.filters) === null || _a === void 0 ? void 0 : _a.tags) || [], label: "Send by Tags", labelPosition: "stacked", placeholder: "Add tags", allowAdding: true, options: getUserTagOptions() }))), h("ion-col", { size: "12", sizeMd: "5" }, this.templateId && (h("floodteam-template", { id: "email-preview", zoom: 0.3, templateId: this.templateId, data: this.payload || {
          job: this.job || null,
        } })))), 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, 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("ion-item", { class: "ion-padding-bottom" }, h("ion-label", { position: "stacked" }, "Additional Notes"), h("ion-textarea", { style: {
          border: "2px solid #bebebe",
          "--padding-start": "15px",
          "--padding-end": "15px",
        }, name: "data.notes", placeholder: "Enter notes here", inputmode: "text", spellcheck: true, rows: 4, autocapitalize: "sentences", maxlength: 400 })))), h("ion-row", null, h("ion-col", null, h("fireenjin-select-tags", { name: "bccs", label: "BCCs", labelPosition: "stacked", placeholder: "Add BCCs", allowAdding: true, value: this.bccs, options: this.bccOptions }))), 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 })))))))),
    ];
  }
};
ModalSendEmail.style = modalSendEmailCss;

export { ModalSendEmail as modal_send_email };
