/* empty css                                               */
/* empty css                                                */
/* empty css                                               */
/* empty css                                                  */
/* empty css                                                */
/* empty css                                                 */
/* empty css                                                */
/* empty css                                                     */
/* empty css                                               */
/* empty css                                              */
/* empty css                                                 */
/* empty css                                                       */
/* empty css                                                  */
import { ref, computed, watch, createBlock, openBlock, unref, mergeProps, isRef, createSlots, withCtx, createVNode, withModifiers } from "vue";
import { MobileField } from "../field/index.mjs";
import hooks from "../../../../node_modules/moment/dist/moment.mjs";
import { parseDateFormatter } from "../../../utils/dateUtil.mjs";
import { PickerGroup } from "../../../../node_modules/vant/es/picker-group/index.mjs";
import { Popup } from "../../../../node_modules/vant/es/popup/index.mjs";
import { DatePicker } from "../../../../node_modules/vant/es/date-picker/index.mjs";
import { TimePicker } from "../../../../node_modules/vant/es/time-picker/index.mjs";
import { Icon } from "../../../../node_modules/vant/es/icon/index.mjs";
const dateColumnsType = "year,month,day,hour,minute";
const _sfc_main = {
  __name: "FieldDateTimePicker",
  props: {
    modelValue: {
      type: String,
      default: ""
    },
    dateTimeTextFormat: {
      //0:YYYYMMDD;1: YYYY-MM-DD;2：YYYY/MM/DD；3：YYYY年MM月DD日
      type: String,
      default: "1"
    },
    title: {
      type: String,
      default: ""
    },
    disabled: {
      type: Boolean,
      default: false
    },
    readonly: {
      type: Boolean,
      default: false
    },
    "is-link": false
  },
  emits: ["update:modelValue"],
  setup(__props, { emit: __emit }) {
    const props = __props;
    const fieldTextValue = ref("");
    const showPicker = ref(false);
    const emit = __emit;
    let textFormat = parseDateFormatter(props.dateTimeTextFormat, dateColumnsType);
    let valueFormat = parseDateFormatter("0", dateColumnsType);
    const currentDateTime = computed(() => {
      let date;
      if (!props.modelValue) {
        date = hooks();
      } else {
        date = hooks(props.modelValue, valueFormat);
      }
      const year = date.year();
      const month = date.month() + 1;
      const day = date.date();
      const hours = date.hours();
      const minutes = date.minutes();
      date.seconds();
      const dateValue = [year, month, day];
      const timeValue = [hours, minutes];
      return { dateValue, timeValue };
    });
    const dateFormatter = (type, option) => {
      if (type === "year") {
        option.text += "年";
      } else if (type === "month") {
        option.text += "月";
      } else if (type === "day") {
        option.text += "日";
      }
      return option;
    };
    const timeFormatter = (type, option) => {
      if (type === "hour") {
        option.text += "时";
      } else if (type === "minute") {
        option.text += "分";
      } else if (type === "second") {
        option.text += "秒";
      }
      return option;
    };
    watch(
      () => props.modelValue,
      (value) => {
        if (!value) {
          fieldTextValue.value = "";
          return;
        }
        fieldTextValue.value = hooks(value, valueFormat).format(textFormat);
      },
      { immediate: true }
    );
    const onConfirm = () => {
      const date = currentDateTime.value.dateValue;
      const time = currentDateTime.value.timeValue;
      const val = hooks(
        `${date[0]}${date[1]}${date[2]} ${time[0]}:${time[1]}`,
        "YYYYMMDD HH:mm"
      ).format(valueFormat);
      emit("update:modelValue", val);
      showPicker.value = false;
    };
    return (_ctx, _cache) => {
      const _component_van_icon = Icon;
      const _component_van_date_picker = DatePicker;
      const _component_van_time_picker = TimePicker;
      const _component_van_picker_group = PickerGroup;
      const _component_van_popup = Popup;
      return openBlock(), createBlock(unref(MobileField), mergeProps(_ctx.$attrs, {
        modelValue: unref(fieldTextValue),
        "onUpdate:modelValue": _cache[5] || (_cache[5] = ($event) => isRef(fieldTextValue) ? fieldTextValue.value = $event : null),
        isLink: __props.readonly || __props.disabled ? false : true,
        readonly: "",
        disabled: __props.disabled,
        onOpenPicker: _cache[6] || (_cache[6] = () => {
          if (!__props.readonly) {
            showPicker.value = true;
          }
        })
      }), createSlots({
        default: withCtx(() => [
          createVNode(_component_van_popup, {
            show: unref(showPicker),
            "onUpdate:show": _cache[4] || (_cache[4] = ($event) => isRef(showPicker) ? showPicker.value = $event : null),
            "destroy-on-close": "",
            position: "bottom",
            teleport: "body"
          }, {
            default: withCtx(() => [
              createVNode(_component_van_picker_group, {
                title: __props.title,
                tabs: ["选择日期", "选择时间"],
                "next-step-text": "下一步",
                onConfirm,
                onCancel: _cache[3] || (_cache[3] = ($event) => showPicker.value = false)
              }, {
                default: withCtx(() => [
                  createVNode(_component_van_date_picker, {
                    modelValue: unref(currentDateTime).dateValue,
                    "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => unref(currentDateTime).dateValue = $event),
                    formatter: dateFormatter,
                    readonly: false
                  }, null, 8, ["modelValue"]),
                  createVNode(_component_van_time_picker, {
                    modelValue: unref(currentDateTime).timeValue,
                    "onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => unref(currentDateTime).timeValue = $event),
                    readonly: false,
                    formatter: timeFormatter
                  }, null, 8, ["modelValue"])
                ]),
                _: 1
              }, 8, ["title"])
            ]),
            _: 1
          }, 8, ["show"])
        ]),
        _: 2
      }, [
        !__props.readonly && !__props.disabled && unref(fieldTextValue) ? {
          name: "right-icon",
          fn: withCtx(() => [
            createVNode(_component_van_icon, {
              name: "clear",
              class: "custom-close-icon",
              onClick: _cache[0] || (_cache[0] = withModifiers(($event) => emit("update:modelValue", null), ["stop"]))
            })
          ]),
          key: "0"
        } : void 0
      ]), 1040, ["modelValue", "isLink", "disabled"]);
    };
  }
};
export {
  _sfc_main as default
};
