import { h } from "@stencil/core";
import { debounce } from "lodash";
import { filterParams, propsParams, clearParams } from "./payments-list-params-state";
import { StyledHost } from "../../ui-components";
import { convertToLocal, convertToUTC } from "../../utils/utils";
import { filterMenu, filterParam } from "../../styles/parts";
export class JustifiPaymentsListFilters {
    constructor() {
        this.setParamsOnChange = (name, value) => {
            filterParams[name] = value;
        };
        this.handleDateInput = (name, value) => {
            const utcDate = convertToUTC(value, { setExactTime: true });
            this.setParamsOnChange(name, utcDate);
        };
    }
    componentWillLoad() {
        // debounced input handler for text input
        this.debouncedSetParamsOnChange = debounce(this.setParamsOnChange, 300);
        const propsToSet = {
            payment_id: this.paymentId,
            terminal_id: this.terminalId,
            payment_status: this.paymentStatus,
            payment_mode: this.paymentMode,
            checkout_id: this.checkoutId,
            account_holder: this.accountHolder,
            created_after: this.createdAfter,
            created_before: this.createdBefore
        };
        Object.entries(propsToSet).forEach(([key, value]) => {
            if (value) {
                propsParams[key] = value;
            }
        });
    }
    get paymentStatusOptions() {
        return [
            { label: 'All', value: '' },
            { label: 'Pending', value: 'pending' },
            { label: 'Authorized', value: 'authorized' },
            { label: 'Succeeded', value: 'succeeded' },
            { label: 'Failed', value: 'failed' },
            { label: 'Disputed', value: 'disputed' },
            { label: 'Refunded', value: 'refunded' }
        ];
    }
    get paymentModeOptions() {
        return [
            { label: 'All', value: '' },
            { label: 'E-commerce', value: 'ecom' },
            { label: 'ACH', value: 'ach' },
            { label: 'Card Present', value: 'card_present' }
        ];
    }
    render() {
        const filterMenuParams = Object.assign({}, filterParams);
        return (h(StyledHost, { key: '09966b2b69d97d14d988b1658c50755be453451b' }, h("table-filters-menu", { key: 'e5e1e3bf59528776e0ce67be1d57f442cc47d717', params: filterMenuParams, clearParams: clearParams, part: filterMenu }, h("div", { key: 'dfb76c7b261911aaecba4ddc179f935e076ab6a0', class: "grid-cols-2 gap-3 p-1" }, h("div", { key: 'e875c8eb14dd1ca1bfe3d0973de89cba0627063d', class: "p-2" }, h("form-control-text", { key: 'cba3e7736f5d85f32ac8023125d59f25a4e5e427', name: "payment_id", label: "Payment ID", inputHandler: this.debouncedSetParamsOnChange, defaultValue: this.paymentId || filterParams.payment_id, disabled: !!this.paymentId, part: filterParam })), h("div", { key: '468b20f8494330c1db0a00f63e928c656e47e463', class: "p-2" }, h("form-control-text", { key: 'f9a48b0116e239f97a39246647470fd7f8e3718f', name: "terminal_id", label: "Terminal ID", inputHandler: this.debouncedSetParamsOnChange, defaultValue: this.terminalId || filterParams.terminal_id, disabled: !!this.terminalId, part: filterParam })), h("div", { key: '805d358d7a091b4826f20af9df930f61cf754364', class: "p-2" }, h("form-control-select", { key: '07c7d0627be6629864cc9b130c347d110e7b337d', name: "payment_status", label: "Status", options: this.paymentStatusOptions, inputHandler: this.setParamsOnChange, defaultValue: this.paymentStatus || filterParams.payment_status || '', disabled: !!this.paymentStatus, part: filterParam })), h("div", { key: 'aa3f3d30fe781dce7f516d80730362bed20348be', class: "p-2" }, h("form-control-select", { key: '7d70542a944db0588361ab5be7df9c8bf83d0463', name: "payment_mode", label: "Payment Mode", options: this.paymentModeOptions, inputHandler: this.setParamsOnChange, defaultValue: this.paymentMode || filterParams.payment_mode || '', disabled: !!this.paymentMode, part: filterParam })), h("div", { key: 'df2642d3a148199d9ffbfd01cae6ba4aaef6f2a4', class: "p-2" }, h("form-control-text", { key: 'b462acc0489803f54b2beb4d8cc58bb1c11ebb48', name: "checkout_id", label: "Checkout ID", inputHandler: this.debouncedSetParamsOnChange, defaultValue: this.checkoutId || filterParams.checkout_id, disabled: !!this.checkoutId, part: filterParam })), h("div", { key: 'c5eb36e85489492d4cc66707762d04bf4e38e56f', class: "p-2" }, h("form-control-text", { key: '483a8cea7f8f1f6128fc16789b34015041fb250b', name: "account_holder", label: "Account Holder", inputHandler: this.debouncedSetParamsOnChange, defaultValue: this.accountHolder || filterParams.account_holder, disabled: !!this.accountHolder, part: filterParam })), h("div", { key: '669126e41e31c84745dd7c4c6dc0f0d2eb843e9a', class: "p-2" }, h("form-control-date", { key: '20b993fad450f448bc1cbce6a24c05f5038df2da', name: "created_after", label: "Created After", inputHandler: this.handleDateInput, defaultValue: convertToLocal(this.createdAfter, { showInputDateTime: true }) ||
                convertToLocal(filterParams.created_after, { showInputDateTime: true }), showTime: true, disabled: !!this.createdAfter, part: filterParam })), h("div", { key: '49002f16423461fca88249d9fdd7fc0a27abe117', class: "p-2" }, h("form-control-date", { key: '5a3b0093e5c2593e1f39b82220511704210a6179', name: "created_before", label: "Created Before", inputHandler: this.handleDateInput, defaultValue: convertToLocal(this.createdBefore, { showInputDateTime: true }) ||
                convertToLocal(filterParams.created_before, { showInputDateTime: true }), showTime: true, disabled: !!this.createdBefore, part: filterParam }))))));
    }
    static get is() { return "justifi-payments-list-filters"; }
    static get encapsulation() { return "shadow"; }
    static get properties() {
        return {
            "paymentId": {
                "type": "string",
                "mutable": false,
                "complexType": {
                    "original": "string",
                    "resolved": "string",
                    "references": {}
                },
                "required": false,
                "optional": true,
                "docs": {
                    "tags": [],
                    "text": ""
                },
                "getter": false,
                "setter": false,
                "reflect": false,
                "attribute": "payment-id"
            },
            "terminalId": {
                "type": "string",
                "mutable": false,
                "complexType": {
                    "original": "string",
                    "resolved": "string",
                    "references": {}
                },
                "required": false,
                "optional": true,
                "docs": {
                    "tags": [],
                    "text": ""
                },
                "getter": false,
                "setter": false,
                "reflect": false,
                "attribute": "terminal-id"
            },
            "paymentStatus": {
                "type": "string",
                "mutable": false,
                "complexType": {
                    "original": "string",
                    "resolved": "string",
                    "references": {}
                },
                "required": false,
                "optional": true,
                "docs": {
                    "tags": [],
                    "text": ""
                },
                "getter": false,
                "setter": false,
                "reflect": false,
                "attribute": "payment-status"
            },
            "paymentMode": {
                "type": "string",
                "mutable": false,
                "complexType": {
                    "original": "string",
                    "resolved": "string",
                    "references": {}
                },
                "required": false,
                "optional": true,
                "docs": {
                    "tags": [],
                    "text": ""
                },
                "getter": false,
                "setter": false,
                "reflect": false,
                "attribute": "payment-mode"
            },
            "checkoutId": {
                "type": "string",
                "mutable": false,
                "complexType": {
                    "original": "string",
                    "resolved": "string",
                    "references": {}
                },
                "required": false,
                "optional": true,
                "docs": {
                    "tags": [],
                    "text": ""
                },
                "getter": false,
                "setter": false,
                "reflect": false,
                "attribute": "checkout-id"
            },
            "accountHolder": {
                "type": "string",
                "mutable": false,
                "complexType": {
                    "original": "string",
                    "resolved": "string",
                    "references": {}
                },
                "required": false,
                "optional": true,
                "docs": {
                    "tags": [],
                    "text": ""
                },
                "getter": false,
                "setter": false,
                "reflect": false,
                "attribute": "account-holder"
            },
            "createdAfter": {
                "type": "string",
                "mutable": false,
                "complexType": {
                    "original": "string",
                    "resolved": "string",
                    "references": {}
                },
                "required": false,
                "optional": true,
                "docs": {
                    "tags": [],
                    "text": ""
                },
                "getter": false,
                "setter": false,
                "reflect": false,
                "attribute": "created-after"
            },
            "createdBefore": {
                "type": "string",
                "mutable": false,
                "complexType": {
                    "original": "string",
                    "resolved": "string",
                    "references": {}
                },
                "required": false,
                "optional": true,
                "docs": {
                    "tags": [],
                    "text": ""
                },
                "getter": false,
                "setter": false,
                "reflect": false,
                "attribute": "created-before"
            }
        };
    }
}
