import { Host, h } from "@stencil/core";
import { businessClassificationOptions } from "../../utils/business-form-options";
import { IDENTITY_MASKS, PHONE_MASKS } from "../../../../utils/form-input-masks";
import { CoreBusinessInfo } from "../../../../api/Business";
import { heading2, label, inputDisabled, buttonSecondary } from "../../../../styles/parts";
import { countryLabels } from "../../utils/country-config";
/**
 *
 * The difference between this component and business-core-info-details
 * is that this component is meant to be a form and send data
 * and the other one  is meant to be just read only.
 *
 */
export class BusinessCoreInfo {
    constructor() {
        this.errors = {};
        this.coreInfo = {};
        this.isEditingTaxId = false;
        this.inputHandler = this.inputHandler.bind(this);
    }
    componentDidLoad() {
        this.formController.values.subscribe(values => (this.coreInfo = Object.assign({}, new CoreBusinessInfo(values))));
        this.formController.errors.subscribe(errors => {
            this.errors = Object.assign({}, errors);
        });
    }
    inputHandler(name, value) {
        this.formController.setValues(Object.assign(Object.assign({}, this.formController.values.getValue()), { [name]: value }));
    }
    render() {
        var _a, _b;
        const coreInfoDefaultValue = this.formController.getInitialValues();
        return (h(Host, { key: '9c73706505c1fa0a56d7eb68fc1c4c0a6fffd1dc' }, h("fieldset", { key: 'd30bae9bab7ffd0e385ce276e7797cfd606e5a42' }, h("legend", { key: '5792db95cbbc080f3c990b4b9cea84484f374ec3', part: heading2 }, "General Info"), h("div", { key: 'ae7fa3c788d625d60cfc83b270312946dce97f0b', class: "row gy-3" }, h("div", { key: 'f7e5ab1ec57a8ce8de5ef8591ecad8b2fbd2f030', class: "col-12" }, h("form-control-text", { key: 'fa96501ceca053263029489a74bddd31222b1462', name: "legal_name", label: "Legal Name", defaultValue: coreInfoDefaultValue.legal_name, errorText: this.errors.legal_name, inputHandler: this.inputHandler })), h("div", { key: '21e14d0c13017376d7e74e84169f30fe05fa13af', class: "col-12" }, h("form-control-text", { key: '266187ec2209299a4b0ebc4c7d600c670de3b21f', name: "doing_business_as", label: "Doing Business As (DBA)", defaultValue: coreInfoDefaultValue.doing_business_as, errorText: this.errors.doing_business_as, inputHandler: this.inputHandler })), h("div", { key: 'd9bbb19b4ec15a18a0467444e964512114e74031', class: "col-12 col-md-8" }, h("form-control-select", { key: 'fe490b4abb4a1e07392db9ad4e4c15b02d928f4c', name: "classification", label: "Business Classification", options: businessClassificationOptions, defaultValue: coreInfoDefaultValue.classification, errorText: this.errors.classification, inputHandler: this.inputHandler })), h("div", { key: 'fc5dafdace199fd34d22f22d629d87fc8ff7cc3e', class: "col-12 col-md-4" }, h("form-control-date", { key: '0263cdef27d1b36c22bde16dbdb3777ad9ef62e3', name: "date_of_incorporation", label: "Date of Incorporation", defaultValue: coreInfoDefaultValue.date_of_incorporation, errorText: this.errors.date_of_incorporation, inputHandler: this.inputHandler })), h("div", { key: '2ae2b710d615e5314d4b836b9a498fc9140b749a', class: "col-12 col-md-6" }, h("form-control-text", { key: 'f6e738254ff7ead5680b895b6df77dc58efbc393', name: "industry", label: "Industry", defaultValue: coreInfoDefaultValue.industry, errorText: this.errors.industry, inputHandler: this.inputHandler })), h("div", { key: '8a01de0514d495b103aa43070d268070f57af62a', class: "col-12 col-md-6" }, (!((_a = this.coreInfo) === null || _a === void 0 ? void 0 : _a.tax_id_last4) || this.isEditingTaxId) ? (h("form-control-number-masked", { name: "tax_id", label: countryLabels[this.country].taxIdLabelOptional || countryLabels[this.country].taxIdLabel, defaultValue: this.isEditingTaxId ? '' : coreInfoDefaultValue.tax_id, errorText: this.errors.tax_id, inputHandler: this.inputHandler, mask: IDENTITY_MASKS[this.country], helpText: countryLabels[this.country].taxIdHelpText })) : (h("div", null, h("label", { class: "form-label", part: label }, countryLabels[this.country].taxIdLabel), h("div", { class: "input-group mb-3" }, h("input", { type: "text", class: "form-control", part: inputDisabled, value: `****${(_b = this.coreInfo) === null || _b === void 0 ? void 0 : _b.tax_id_last4}`, disabled: true }), h("button", { class: "btn btn-secondary", type: "button", part: buttonSecondary, onClick: () => {
                this.isEditingTaxId = true;
                this.formController.setValues(Object.assign(Object.assign({}, this.formController.values.getValue()), { tax_id: '' }));
            } }, "Change"))))), h("div", { key: 'a82eb6e652eb36fd57cd4a6c413e896aebfefce6', class: "col-12" }, h("form-control-text", { key: '930f882235d7c4902ae6daf54d644a0cd9d23daf', name: "website_url", label: "Website URL", defaultValue: coreInfoDefaultValue.website_url, errorText: this.errors.website_url, inputHandler: this.inputHandler })), h("div", { key: 'b2e819e6dfd97229e81e1860e1debe3ab95e3dc0', class: "col-12 col-md-6" }, h("form-control-text", { key: '7a4a158a1c64adfe90b825ff54c9f1f607c25bb7', name: "email", label: "Email Address", defaultValue: coreInfoDefaultValue.email, errorText: this.errors.email, inputHandler: this.inputHandler })), h("div", { key: '948c4f98a4a7a8b898058adb0957b7251d8c9fe4', class: "col-12 col-md-6" }, h("form-control-number-masked", { key: 'dc5804f3c9254c859f5e6a78487dae423c9689f1', name: "phone", label: "Phone Number", defaultValue: coreInfoDefaultValue.phone, errorText: this.errors.phone, inputHandler: this.inputHandler, mask: PHONE_MASKS.US }))))));
    }
    static get is() { return "business-core-info"; }
    static get properties() {
        return {
            "formController": {
                "type": "unknown",
                "mutable": false,
                "complexType": {
                    "original": "FormController",
                    "resolved": "FormController",
                    "references": {
                        "FormController": {
                            "location": "import",
                            "path": "../../../../ui-components/form/form",
                            "id": "src/ui-components/form/form.ts::FormController"
                        }
                    }
                },
                "required": true,
                "optional": false,
                "docs": {
                    "tags": [],
                    "text": ""
                },
                "getter": false,
                "setter": false
            },
            "country": {
                "type": "string",
                "mutable": false,
                "complexType": {
                    "original": "CountryCode",
                    "resolved": "CountryCode.CAN | CountryCode.USA",
                    "references": {
                        "CountryCode": {
                            "location": "import",
                            "path": "../../../../utils/country-codes",
                            "id": "src/utils/country-codes.ts::CountryCode"
                        }
                    }
                },
                "required": true,
                "optional": false,
                "docs": {
                    "tags": [],
                    "text": ""
                },
                "getter": false,
                "setter": false,
                "reflect": false,
                "attribute": "country"
            }
        };
    }
    static get states() {
        return {
            "errors": {},
            "coreInfo": {},
            "isEditingTaxId": {}
        };
    }
}
