import { Select } from "antd";
import React, { forwardRef } from "react";
import { useTranslation } from "react-i18next";
import InstanceRenderMgr from "../../utils/instanceRenderMgr";

const BillLineSearchSelect = ({ options, disabled, allowRemoved, ...restProps }, ref) => {
  const { t } = useTranslation();

  return (
    <Select
      disabled={disabled}
      ref={ref}
      showSearch
      popupMatchSelectWidth={false}
      optionLabelProp={"name"}
      //  optionFilterProp="line_desc"
      filterOption={(inputValue, option) => {
        return (
          (option.line_desc && option.line_desc.toLowerCase().includes(inputValue.toLowerCase())) ||
          (option.oem_partno && option.oem_partno.toLowerCase().includes(inputValue.toLowerCase())) ||
          (option.alt_partno && option.alt_partno.toLowerCase().includes(inputValue.toLowerCase())) ||
          (option.act_price && option.act_price.toString().startsWith(inputValue.toString()))
        );
      }}
      notFoundContent={"Removed."}
      options={[
        { value: "noline", label: t("billlines.labels.other"), name: t("billlines.labels.other") },
        ...options.map((item) => ({
          disabled: allowRemoved ? false : item.removed,
          key: item.id,
          value: item.id,
          cost: item.act_price ? item.act_price : 0,
          part_type: item.part_type,
          line_desc: item.line_desc,
          part_qty: item.part_qty,
          oem_partno: item.oem_partno,
          alt_partno: item.alt_partno,
          act_price: item.act_price,
          style: {
            ...(item.removed ? { textDecoration: "line-through" } : {})
          },
          name: `${item.removed ? `(REMOVED) ` : ""}${item.line_desc}${
            item.oem_partno ? ` - ${item.oem_partno}` : ""
          }${item.alt_partno ? ` (${item.alt_partno})` : ""}`.trim(),
          label: (
            <>
              <span>
                {`${item.removed ? `(REMOVED) ` : ""}${item.line_desc}${
                  item.oem_partno ? ` - ${item.oem_partno}` : ""
                }${item.alt_partno ? ` (${item.alt_partno})` : ""}`.trim()}
              </span>
              {InstanceRenderMgr({
                rome: item.act_price === 0 && item.mod_lb_hrs > 0 && (
                  <span style={{ float: "right", paddingleft: "1rem" }}>{`${item.mod_lb_hrs} units`}</span>
                )
              })}
              <span style={{ float: "right", paddingleft: "1rem" }}>
                {item.act_price ? `$${item.act_price && item.act_price.toFixed(2)}` : ``}
              </span>
            </>
          )
        }))
      ]}
      {...restProps}
    ></Select>
  );
};
export default forwardRef(BillLineSearchSelect);
