import { handleNumber, toFloatValueFixed } from "./chunk-CYW3UC3Z.js"; import { getAbsolutePos, getEventTargetNode, hasClass, hasControlKey } from "./chunk-PBZHTG65.js"; import { eqEmptyValue, getFuncText, getLastZIndex, nextZIndex } from "./chunk-REHJGRQO.js"; import { getSlotVNs } from "./chunk-LXH6LNL6.js"; import { defineVxeComponent, warnLog } from "./chunk-ML6NAHIO.js"; import { GLOBAL_EVENT_KEYS, createEvent, getConfig, getI18n, getIcon, globalEvents, renderEmptyElement, require_xe_utils, useSize } from "./chunk-YJNUXQVJ.js"; import { Teleport, computed, createCommentVNode, h, inject, nextTick, onBeforeUnmount, onMounted, reactive, ref, watch } from "./chunk-AAHVYXXY.js"; import { __toESM } from "./chunk-V4OQ3NZ2.js"; // ../node_modules/.pnpm/vxe-pc-ui@4.10.22_vue@3.5.24_typescript@5.9.3_/node_modules/vxe-pc-ui/es/input/src/input.js var import_xe_utils2 = __toESM(require_xe_utils()); // ../node_modules/.pnpm/vxe-pc-ui@4.10.22_vue@3.5.24_typescript@5.9.3_/node_modules/vxe-pc-ui/es/date-panel/src/util.js var import_xe_utils = __toESM(require_xe_utils()); function toStringTimeDate(str) { const rest = new Date(2e3, 0, 1); if (str) { let h2 = 0; let m = 0; let s = 0; if (import_xe_utils.default.isNumber(str) || /^[0-9]{11,15}$/.test(`${str}`)) { str = new Date(Number(str)); } if (import_xe_utils.default.isDate(str)) { h2 = str.getHours(); m = str.getMinutes(); s = str.getSeconds(); } else { str = import_xe_utils.default.toValueString(str); const parses = str.match(/^(\d{1,2})(:(\d{1,2}))?(:(\d{1,2}))?/); if (parses) { h2 = import_xe_utils.default.toNumber(parses[1]); m = import_xe_utils.default.toNumber(parses[3]); s = import_xe_utils.default.toNumber(parses[5]); } } rest.setHours(h2); rest.setMinutes(m); rest.setSeconds(s); return rest; } return rest; } function getDateQuarter(date) { const month = date.getMonth(); if (month < 3) { return 1; } else if (month < 6) { return 2; } else if (month < 9) { return 3; } return 4; } // ../node_modules/.pnpm/vxe-pc-ui@4.10.22_vue@3.5.24_typescript@5.9.3_/node_modules/vxe-pc-ui/es/input/src/input.js var input_default = defineVxeComponent({ name: "VxeInput", props: { modelValue: [String, Number, Date], immediate: { type: Boolean, default: true }, name: String, title: String, type: { type: String, default: "text" }, clearable: { type: Boolean, default: () => getConfig().input.clearable }, readonly: { type: Boolean, default: null }, disabled: { type: Boolean, default: null }, placeholder: { type: String, default: null }, maxLength: { type: [String, Number], default: () => getConfig().input.maxLength }, autoComplete: { type: String, default: "off" }, autoFocus: { type: Boolean, default: null }, align: String, form: String, className: String, size: { type: String, default: () => getConfig().input.size || getConfig().size }, multiple: Boolean, // text showWordCount: Boolean, countMethod: Function, // number、integer、float min: { type: [String, Number], default: null }, max: { type: [String, Number], default: null }, step: [String, Number], trim: { type: Boolean, default: () => getConfig().input.trim }, exponential: { type: Boolean, default: () => getConfig().input.exponential }, // number、integer、float、password controls: { type: Boolean, default: () => getConfig().input.controls }, // float digits: { type: [String, Number], default: () => getConfig().input.digits }, // date、week、month、quarter、year startDate: { type: [String, Number, Date], default: () => getConfig().input.startDate }, endDate: { type: [String, Number, Date], default: () => getConfig().input.endDate }, minDate: [String, Number, Date], maxDate: [String, Number, Date], // 已废弃 startWeek,被 startDay 替换 startWeek: Number, startDay: { type: [String, Number], default: () => getConfig().input.startDay }, labelFormat: String, valueFormat: String, editable: { type: Boolean, default: true }, festivalMethod: { type: Function, default: () => getConfig().input.festivalMethod }, disabledMethod: { type: Function, default: () => getConfig().input.disabledMethod }, // week selectDay: { type: [String, Number], default: () => getConfig().input.selectDay }, prefixIcon: String, suffixIcon: String, placement: String, transfer: { type: Boolean, default: null }, // 已废弃 maxlength: [String, Number], // 已废弃 autocomplete: String }, emits: [ "update:modelValue", "input", "change", "keydown", "keyup", "wheel", "click", "focus", "blur", "clear", "lazy-change", "search-click", "toggle-visible", "prev-number", "next-number", "prefix-click", "suffix-click", "date-prev", "date-today", "date-next" ], setup(props, context) { const { slots, emit } = context; const $xeSelect = inject("$xeSelect", null); const $xeTreeSelect = inject("$xeTreeSelect", null); const $xeModal = inject("$xeModal", null); const $xeDrawer = inject("$xeDrawer", null); const $xeTable = inject("$xeTable", null); const $xeForm = inject("$xeForm", null); const formItemInfo = inject("xeFormItemInfo", null); const xID = import_xe_utils2.default.uniqueId(); const { computeSize } = useSize(props); const reactData = reactive({ initialized: false, panelIndex: 0, showPwd: false, visiblePanel: false, isAniVisible: false, panelStyle: {}, panelPlacement: "", isActivated: false, inputValue: props.modelValue, datetimePanelValue: null, datePanelValue: null, datePanelLabel: "", datePanelType: "day", selectMonth: null, currentDate: null }); const internalData = { yearSize: 12, monthSize: 20, quarterSize: 8, hpTimeout: void 0, dnTimeout: void 0 }; const refElem = ref(); const refInputTarget = ref(); const refInputPanel = ref(); const refPanelWrapper = ref(); const refInputTimeBody = ref(); const refMaps = { refElem, refInput: refInputTarget }; const $xeInput = { xID, props, context, reactData, internalData, getRefMaps: () => refMaps }; let inputMethods = {}; const parseDate = (value, format) => { const { type } = props; if (type === "time") { return toStringTimeDate(value); } return import_xe_utils2.default.toStringDate(value, format); }; const computeBtnTransfer = computed(() => { const { transfer } = props; if (transfer === null) { const globalTransfer = getConfig().input.transfer; if (import_xe_utils2.default.isBoolean(globalTransfer)) { return globalTransfer; } if ($xeTable || $xeModal || $xeDrawer || $xeForm) { return true; } } return transfer; }); const computeFormReadonly = computed(() => { if ($xeForm) { return $xeForm.props.readonly; } return false; }); const computeIsReadonly = computed(() => { const { readonly } = props; return readonly; }); const computeIsDisabled = computed(() => { const { disabled } = props; if (disabled === null) { if ($xeForm) { return $xeForm.props.disabled; } return false; } return disabled; }); const computeInpMaxLength = computed(() => { const { maxLength, maxlength } = props; const maxLen = maxLength || maxlength; const isNumType = computeIsNumType.value; if (isNumType) { if (!import_xe_utils2.default.toNumber(maxLen)) { return 16; } } return maxLen; }); const computeIsDateTimeType = computed(() => { const { type } = props; return type === "time" || type === "datetime"; }); const computeIsNumType = computed(() => { return ["number", "integer", "float"].indexOf(props.type) > -1; }); const computeInputCount = computed(() => { return import_xe_utils2.default.getSize(reactData.inputValue); }); const computeIsCountError = computed(() => { const inputCount = computeInputCount.value; const inpMaxLength = computeInpMaxLength.value; return inpMaxLength && inputCount > import_xe_utils2.default.toNumber(inpMaxLength); }); const computeIsDatePickerType = computed(() => { const isDateTimeType = computeIsDateTimeType.value; return isDateTimeType || ["date", "week", "month", "quarter", "year"].indexOf(props.type) > -1; }); const computeIsPawdType = computed(() => { return props.type === "password"; }); const computeIsSearchType = computed(() => { return props.type === "search"; }); const computeDigitsValue = computed(() => { return import_xe_utils2.default.toInteger(props.digits) || 1; }); const computeStepValue = computed(() => { const { type } = props; const digitsValue = computeDigitsValue.value; const step = props.step; if (type === "integer") { return import_xe_utils2.default.toInteger(step) || 1; } else if (type === "float") { return import_xe_utils2.default.toNumber(step) || 1 / Math.pow(10, digitsValue); } return import_xe_utils2.default.toNumber(step) || 1; }); const computeIsClearable = computed(() => { const { type } = props; const isNumType = computeIsNumType.value; const isDatePickerType = computeIsDatePickerType.value; const isPawdType = computeIsPawdType.value; return props.clearable && (isPawdType || isNumType || isDatePickerType || type === "text" || type === "search"); }); const computeDateStartTime = computed(() => { return props.startDate ? import_xe_utils2.default.toStringDate(props.startDate) : null; }); const computeDateEndTime = computed(() => { return props.endDate ? import_xe_utils2.default.toStringDate(props.endDate) : null; }); const computeSupportMultiples = computed(() => { return ["date", "week", "month", "quarter", "year"].indexOf(props.type) > -1; }); const computeDateListValue = computed(() => { const { modelValue, multiple } = props; const isDatePickerType = computeIsDatePickerType.value; const dateValueFormat = computeDateValueFormat.value; if (multiple && modelValue && isDatePickerType) { return import_xe_utils2.default.toValueString(modelValue).split(",").map((item) => { const date = parseDate(item, dateValueFormat); if (import_xe_utils2.default.isValidDate(date)) { return date; } return null; }); } return []; }); const computeDateMultipleValue = computed(() => { const dateListValue = computeDateListValue.value; const dateValueFormat = computeDateValueFormat.value; return dateListValue.map((date) => import_xe_utils2.default.toDateString(date, dateValueFormat)); }); const computeDateMultipleLabel = computed(() => { const dateListValue = computeDateListValue.value; const dateLabelFormat = computeDateLabelFormat.value; return dateListValue.map((date) => import_xe_utils2.default.toDateString(date, dateLabelFormat)).join(", "); }); const computeDateValueFormat = computed(() => { const { type, valueFormat } = props; if (valueFormat) { return valueFormat; } if (type === "time") { return "HH:mm:ss"; } if (type === "datetime") { return "yyyy-MM-dd HH:mm:ss"; } return "yyyy-MM-dd"; }); const computeDateValue = computed(() => { const { modelValue } = props; const isDatePickerType = computeIsDatePickerType.value; const dateValueFormat = computeDateValueFormat.value; let val = null; if (modelValue && isDatePickerType) { const date = parseDate(modelValue, dateValueFormat); if (import_xe_utils2.default.isValidDate(date)) { val = date; } } return val; }); const computeIsDisabledPrevDateBtn = computed(() => { const dateStartTime = computeDateStartTime.value; const { selectMonth } = reactData; if (selectMonth && dateStartTime) { return selectMonth <= dateStartTime; } return false; }); const computeIsDisabledNextDateBtn = computed(() => { const dateEndTime = computeDateEndTime.value; const { selectMonth } = reactData; if (selectMonth && dateEndTime) { return selectMonth >= dateEndTime; } return false; }); const computeDateTimeLabel = computed(() => { const { datetimePanelValue } = reactData; const hasTimeSecond = computeHasTimeSecond.value; if (datetimePanelValue) { return import_xe_utils2.default.toDateString(datetimePanelValue, hasTimeSecond ? "HH:mm:ss" : "HH:mm"); } return ""; }); const computeDateHMSTime = computed(() => { const dateValue = computeDateValue.value; const isDateTimeType = computeIsDateTimeType.value; return dateValue && isDateTimeType ? (dateValue.getHours() * 3600 + dateValue.getMinutes() * 60 + dateValue.getSeconds()) * 1e3 : 0; }); const computeDateLabelFormat = computed(() => { const { labelFormat } = props; const isDatePickerType = computeIsDatePickerType.value; if (isDatePickerType) { return labelFormat || getI18n(`vxe.input.date.labelFormat.${props.type}`); } return ""; }); const computeYearList = computed(() => { const { selectMonth, currentDate } = reactData; const { yearSize } = internalData; const years = []; if (selectMonth && currentDate) { const currFullYear = currentDate.getFullYear(); const selectFullYear = selectMonth.getFullYear(); const startYearDate = new Date(selectFullYear - selectFullYear % yearSize, 0, 1); for (let index = -4; index < yearSize + 4; index++) { const date = import_xe_utils2.default.getWhatYear(startYearDate, index, "first"); const itemFullYear = date.getFullYear(); years.push({ date, isCurrent: true, isPrev: index < 0, isNow: currFullYear === itemFullYear, isNext: index >= yearSize, year: itemFullYear }); } } return years; }); const computeSelectDatePanelObj = computed(() => { const isDatePickerType = computeIsDatePickerType.value; let y = ""; let m = ""; if (isDatePickerType) { const { datePanelType, selectMonth } = reactData; const yearList = computeYearList.value; let year = ""; let month; if (selectMonth) { year = selectMonth.getFullYear(); month = selectMonth.getMonth() + 1; } if (datePanelType === "quarter" || datePanelType === "month") { y = getI18n("vxe.datePicker.yearTitle", [year]); } else if (datePanelType === "year") { y = yearList.length ? `${yearList[0].year} - ${yearList[yearList.length - 1].year}` : ""; } else { y = getI18n("vxe.datePicker.yearTitle", [year]); m = month ? getI18n(`vxe.input.date.m${month}`) : "-"; } } return { y, m }; }); const computeFirstDayOfWeek = computed(() => { const { startDay, startWeek } = props; return import_xe_utils2.default.toNumber(import_xe_utils2.default.isNumber(startDay) || import_xe_utils2.default.isString(startDay) ? startDay : startWeek); }); const computeWeekDatas = computed(() => { const weeks = []; const isDatePickerType = computeIsDatePickerType.value; if (isDatePickerType) { let sWeek = computeFirstDayOfWeek.value; weeks.push(sWeek); for (let index = 0; index < 6; index++) { if (sWeek >= 6) { sWeek = 0; } else { sWeek++; } weeks.push(sWeek); } } return weeks; }); const computeDateHeaders = computed(() => { const isDatePickerType = computeIsDatePickerType.value; if (isDatePickerType) { const weekDatas = computeWeekDatas.value; return weekDatas.map((day) => { return { value: day, label: getI18n(`vxe.input.date.weeks.w${day}`) }; }); } return []; }); const computeWeekHeaders = computed(() => { const isDatePickerType = computeIsDatePickerType.value; if (isDatePickerType) { const dateHeaders = computeDateHeaders.value; return [{ label: getI18n("vxe.input.date.weeks.w") }].concat(dateHeaders); } return []; }); const computeYearDatas = computed(() => { const yearList = computeYearList.value; return import_xe_utils2.default.chunk(yearList, 4); }); const computeQuarterList = computed(() => { const { selectMonth, currentDate } = reactData; const { quarterSize } = internalData; const quarters = []; if (selectMonth && currentDate) { const currFullYear = currentDate.getFullYear(); const currQuarter = getDateQuarter(currentDate); const firstYear = import_xe_utils2.default.getWhatYear(selectMonth, 0, "first"); const selFullYear = firstYear.getFullYear(); for (let index = -2; index < quarterSize - 2; index++) { const date = import_xe_utils2.default.getWhatQuarter(firstYear, index); const itemFullYear = date.getFullYear(); const itemQuarter = getDateQuarter(date); const isPrev = itemFullYear < selFullYear; quarters.push({ date, isPrev, isCurrent: itemFullYear === selFullYear, isNow: itemFullYear === currFullYear && itemQuarter === currQuarter, isNext: !isPrev && itemFullYear > selFullYear, quarter: itemQuarter }); } } return quarters; }); const computeQuarterDatas = computed(() => { const quarterList = computeQuarterList.value; return import_xe_utils2.default.chunk(quarterList, 2); }); const computeMonthList = computed(() => { const { selectMonth, currentDate } = reactData; const { monthSize } = internalData; const months = []; if (selectMonth && currentDate) { const currFullYear = currentDate.getFullYear(); const currMonth = currentDate.getMonth(); const selFullYear = import_xe_utils2.default.getWhatYear(selectMonth, 0, "first").getFullYear(); for (let index = -4; index < monthSize - 4; index++) { const date = import_xe_utils2.default.getWhatYear(selectMonth, 0, index); const itemFullYear = date.getFullYear(); const itemMonth = date.getMonth(); const isPrev = itemFullYear < selFullYear; months.push({ date, isPrev, isCurrent: itemFullYear === selFullYear, isNow: itemFullYear === currFullYear && itemMonth === currMonth, isNext: !isPrev && itemFullYear > selFullYear, month: itemMonth }); } } return months; }); const computeMonthDatas = computed(() => { const monthList = computeMonthList.value; return import_xe_utils2.default.chunk(monthList, 4); }); const computeDayList = computed(() => { const { selectMonth, currentDate } = reactData; const days = []; if (selectMonth && currentDate) { const dateHMSTime = computeDateHMSTime.value; const weekDatas = computeWeekDatas.value; const currFullYear = currentDate.getFullYear(); const currMonth = currentDate.getMonth(); const currDate = currentDate.getDate(); const selFullYear = selectMonth.getFullYear(); const selMonth = selectMonth.getMonth(); const selDay = selectMonth.getDay(); const prevOffsetDate = -weekDatas.indexOf(selDay); const startDayDate = new Date(import_xe_utils2.default.getWhatDay(selectMonth, prevOffsetDate).getTime() + dateHMSTime); for (let index = 0; index < 42; index++) { const date = import_xe_utils2.default.getWhatDay(startDayDate, index); const itemFullYear = date.getFullYear(); const itemMonth = date.getMonth(); const itemDate = date.getDate(); const isPrev = date < selectMonth; days.push({ date, isPrev, isCurrent: itemFullYear === selFullYear && itemMonth === selMonth, isNow: itemFullYear === currFullYear && itemMonth === currMonth && itemDate === currDate, isNext: !isPrev && selMonth !== itemMonth, label: itemDate }); } } return days; }); const computeDayDatas = computed(() => { const dayList = computeDayList.value; return import_xe_utils2.default.chunk(dayList, 7); }); const computeWeekDates = computed(() => { const dayDatas = computeDayDatas.value; const firstDayOfWeek = computeFirstDayOfWeek.value; return dayDatas.map((list) => { const firstItem = list[0]; const item = { date: firstItem.date, isWeekNumber: true, isPrev: false, isCurrent: false, isNow: false, isNext: false, label: import_xe_utils2.default.getYearWeek(firstItem.date, firstDayOfWeek) }; return [item].concat(list); }); }); const computeHourList = computed(() => { const list = []; const isDateTimeType = computeIsDateTimeType.value; if (isDateTimeType) { for (let index = 0; index < 24; index++) { list.push({ value: index, label: ("" + index).padStart(2, "0") }); } } return list; }); const computeMinuteList = computed(() => { const list = []; const isDateTimeType = computeIsDateTimeType.value; if (isDateTimeType) { for (let index = 0; index < 60; index++) { list.push({ value: index, label: ("" + index).padStart(2, "0") }); } } return list; }); const computeHasTimeMinute = computed(() => { const dateValueFormat = computeDateValueFormat.value; return !/HH/.test(dateValueFormat) || /mm/.test(dateValueFormat); }); const computeHasTimeSecond = computed(() => { const dateValueFormat = computeDateValueFormat.value; return !/HH/.test(dateValueFormat) || /ss/.test(dateValueFormat); }); const computeSecondList = computed(() => { const minuteList = computeMinuteList.value; return minuteList; }); const computeInputReadonly = computed(() => { const { type, editable, multiple } = props; const isReadonly = computeIsReadonly.value; return isReadonly || multiple || !editable || type === "week" || type === "quarter"; }); const computeInputType = computed(() => { const { type } = props; const { showPwd } = reactData; const isNumType = computeIsNumType.value; const isDatePickerType = computeIsDatePickerType.value; const isPawdType = computeIsPawdType.value; if (isDatePickerType || isNumType || isPawdType && showPwd || type === "number") { return "text"; } return type; }); const computeInpPlaceholder = computed(() => { const { placeholder } = props; if (placeholder) { return getFuncText(placeholder); } if (import_xe_utils2.default.eqNull(placeholder)) { const globalPlaceholder = getConfig().input.placeholder; if (globalPlaceholder) { return getFuncText(globalPlaceholder); } return getI18n("vxe.base.pleaseInput"); } return placeholder; }); const computeInpImmediate = computed(() => { const { type, immediate } = props; return immediate || !(type === "text" || type === "number" || type === "integer" || type === "float"); }); const computeNumValue = computed(() => { const { type } = props; const { inputValue } = reactData; const isNumType = computeIsNumType.value; if (isNumType) { return type === "integer" ? import_xe_utils2.default.toInteger(handleNumber(inputValue)) : import_xe_utils2.default.toNumber(handleNumber(inputValue)); } return 0; }); const computeIsDisabledSubtractNumber = computed(() => { const { min } = props; const { inputValue } = reactData; const isNumType = computeIsNumType.value; const numValue = computeNumValue.value; if ((inputValue || inputValue === 0) && isNumType && min !== null) { return numValue <= import_xe_utils2.default.toNumber(min); } return false; }); const computeIsDisabledAddNumber = computed(() => { const { max } = props; const { inputValue } = reactData; const isNumType = computeIsNumType.value; const numValue = computeNumValue.value; if ((inputValue || inputValue === 0) && isNumType && max !== null) { return numValue >= import_xe_utils2.default.toNumber(max); } return false; }); const getNumberValue = (val) => { const { type, exponential } = props; const inpMaxLength = computeInpMaxLength.value; const digitsValue = computeDigitsValue.value; const restVal = type === "float" ? toFloatValueFixed(val, digitsValue) : import_xe_utils2.default.toValueString(val); if (exponential && (val === restVal || import_xe_utils2.default.toValueString(val).toLowerCase() === import_xe_utils2.default.toNumber(restVal).toExponential())) { return val; } return restVal.slice(0, inpMaxLength); }; const emitModel = (value) => { emit("update:modelValue", value); }; const triggerEvent = (evnt) => { const { inputValue } = reactData; inputMethods.dispatchEvent(evnt.type, { value: inputValue }, evnt); }; const handleChange = (value, evnt) => { if (props.trim) { value = `${value || ""}`.trim(); } reactData.inputValue = value; emitModel(value); inputMethods.dispatchEvent("input", { value }, evnt); if (import_xe_utils2.default.toValueString(props.modelValue) !== value) { inputMethods.dispatchEvent("change", { value }, evnt); if (!$xeSelect && !$xeTreeSelect) { if ($xeForm && formItemInfo) { $xeForm.triggerItemEvent(evnt, formItemInfo.itemConfig.field, value); } } } }; const emitInputEvent = (value, evnt) => { const isDatePickerType = computeIsDatePickerType.value; const inpImmediate = computeInpImmediate.value; reactData.inputValue = value; if (!isDatePickerType) { if (inpImmediate) { handleChange(value, evnt); } else { inputMethods.dispatchEvent("input", { value }, evnt); } } }; const inputEvent = (evnt) => { const inputElem = evnt.target; const value = inputElem.value; emitInputEvent(value, evnt); }; const changeEvent = (evnt) => { const inpImmediate = computeInpImmediate.value; if (!inpImmediate) { triggerEvent(evnt); } $xeInput.dispatchEvent("lazy-change", { value: reactData.inputValue }, evnt); }; const blurEvent = (evnt) => { const { inputValue } = reactData; const inpImmediate = computeInpImmediate.value; const value = inputValue; if (!inpImmediate) { handleChange(value, evnt); } afterCheckValue(); if (!reactData.visiblePanel) { reactData.isActivated = false; } inputMethods.dispatchEvent("blur", { value }, evnt); if (!$xeSelect && !$xeTreeSelect) { if ($xeForm && formItemInfo) { $xeForm.triggerItemEvent(evnt, formItemInfo.itemConfig.field, value); } } }; const focusEvent = (evnt) => { const { inputValue } = reactData; const isNumType = computeIsNumType.value; const isDatePickerType = computeIsDatePickerType.value; reactData.isActivated = true; if (isNumType) { reactData.inputValue = eqEmptyValue(inputValue) ? "" : `${import_xe_utils2.default.toNumber(inputValue)}`; } else if (isDatePickerType) { datePickerOpenEvent(evnt); } triggerEvent(evnt); }; const clickPrefixEvent = (evnt) => { const isDisabled = computeIsDisabled.value; if (!isDisabled) { const { inputValue } = reactData; $xeInput.dispatchEvent("prefix-click", { value: inputValue }, evnt); } }; const hidePanel = () => { return new Promise((resolve) => { reactData.visiblePanel = false; internalData.hpTimeout = setTimeout(() => { reactData.isAniVisible = false; resolve(); }, 350); }); }; const clearValueEvent = (evnt, value) => { const { type, autoFocus } = props; const isNumType = computeIsNumType.value; const isDatePickerType = computeIsDatePickerType.value; if (isDatePickerType) { hidePanel(); } if (autoFocus || autoFocus === null) { if (isNumType || ["text", "search", "password"].indexOf(type) > -1) { focus(); } } handleChange("", evnt); $xeInput.dispatchEvent("clear", { value }, evnt); $xeInput.dispatchEvent("lazy-change", { value }, evnt); }; const clickSuffixEvent = (evnt) => { const isDisabled = computeIsDisabled.value; if (!isDisabled) { const { inputValue } = reactData; $xeInput.dispatchEvent("suffix-click", { value: inputValue }, evnt); } }; const dateParseValue = (value) => { const { type } = props; const dateLabelFormat = computeDateLabelFormat.value; const dateValueFormat = computeDateValueFormat.value; const firstDayOfWeek = computeFirstDayOfWeek.value; let dValue = null; let dLabel = ""; if (value) { dValue = parseDate(value, dateValueFormat); } if (import_xe_utils2.default.isValidDate(dValue)) { dLabel = import_xe_utils2.default.toDateString(dValue, dateLabelFormat, { firstDay: firstDayOfWeek }); if (dateLabelFormat && type === "week") { const weekNum = import_xe_utils2.default.getYearWeek(dValue, firstDayOfWeek); const weekDate = import_xe_utils2.default.getWhatWeek(dValue, 0, weekNum === 1 ? (6 + firstDayOfWeek) % 7 : firstDayOfWeek, firstDayOfWeek); const weekFullYear = weekDate.getFullYear(); if (weekFullYear !== dValue.getFullYear()) { const yyIndex = dateLabelFormat.indexOf("yyyy"); if (yyIndex > -1) { const yyNum = Number(dLabel.substring(yyIndex, yyIndex + 4)); if (yyNum && !isNaN(yyNum)) { dLabel = dLabel.replace(`${yyNum}`, `${weekFullYear}`); } } } } } else { dValue = null; } reactData.datePanelValue = dValue; reactData.datePanelLabel = dLabel; }; const changeValue = () => { const isDatePickerType = computeIsDatePickerType.value; const { inputValue } = reactData; if (isDatePickerType) { dateParseValue(inputValue); reactData.inputValue = props.multiple ? computeDateMultipleLabel.value : reactData.datePanelLabel; } }; const initValue = () => { const { type } = props; const { inputValue } = reactData; const isDatePickerType = computeIsDatePickerType.value; const digitsValue = computeDigitsValue.value; if (isDatePickerType) { changeValue(); } else if (type === "float") { if (inputValue) { const validValue = toFloatValueFixed(inputValue, digitsValue); if (inputValue !== validValue) { handleChange(validValue, { type: "init" }); } } } }; const validMaxNum = (num) => { return props.max === null || props.max === "" || import_xe_utils2.default.toNumber(num) <= import_xe_utils2.default.toNumber(props.max); }; const validMinNum = (num) => { return props.min === null || props.min === "" || import_xe_utils2.default.toNumber(num) >= import_xe_utils2.default.toNumber(props.min); }; const dateRevert = () => { reactData.inputValue = props.multiple ? computeDateMultipleLabel.value : reactData.datePanelLabel; }; const dateCheckMonth = (date) => { const firstDayOfWeek = computeFirstDayOfWeek.value; const weekNum = import_xe_utils2.default.getYearWeek(date, firstDayOfWeek); const weekStartDate = import_xe_utils2.default.getWhatWeek(date, 0, firstDayOfWeek, firstDayOfWeek); const month = import_xe_utils2.default.getWhatMonth(weekNum === 1 ? import_xe_utils2.default.getWhatDay(weekStartDate, 6) : date, 0, "first"); if (!import_xe_utils2.default.isEqual(month, reactData.selectMonth)) { reactData.selectMonth = month; } }; const dateChange = (date) => { const { modelValue, multiple } = props; const { datetimePanelValue } = reactData; const isDateTimeType = computeIsDateTimeType.value; const dateValueFormat = computeDateValueFormat.value; const firstDayOfWeek = computeFirstDayOfWeek.value; if (props.type === "week") { const sWeek = import_xe_utils2.default.toNumber(props.selectDay); date = import_xe_utils2.default.getWhatWeek(date, 0, sWeek, firstDayOfWeek); } else if (isDateTimeType) { date.setHours(datetimePanelValue.getHours()); date.setMinutes(datetimePanelValue.getMinutes()); date.setSeconds(datetimePanelValue.getSeconds()); } const inpVal = import_xe_utils2.default.toDateString(date, dateValueFormat, { firstDay: firstDayOfWeek }); dateCheckMonth(date); if (multiple) { const dateMultipleValue = computeDateMultipleValue.value; if (isDateTimeType) { const dateListValue = [...computeDateListValue.value]; const datetimeRest = []; const eqIndex = import_xe_utils2.default.findIndexOf(dateListValue, (val) => import_xe_utils2.default.isDateSame(date, val, "yyyyMMdd")); if (eqIndex === -1) { dateListValue.push(date); } else { dateListValue.splice(eqIndex, 1); } dateListValue.forEach((item) => { if (item) { item.setHours(datetimePanelValue.getHours()); item.setMinutes(datetimePanelValue.getMinutes()); item.setSeconds(datetimePanelValue.getSeconds()); datetimeRest.push(item); } }); handleChange(datetimeRest.map((date2) => import_xe_utils2.default.toDateString(date2, dateValueFormat)).join(","), { type: "update" }); } else { if (dateMultipleValue.some((val) => import_xe_utils2.default.isEqual(val, inpVal))) { handleChange(dateMultipleValue.filter((val) => !import_xe_utils2.default.isEqual(val, inpVal)).join(","), { type: "update" }); } else { handleChange(dateMultipleValue.concat([inpVal]).join(","), { type: "update" }); } } } else { if (!import_xe_utils2.default.isEqual(modelValue, inpVal)) { handleChange(inpVal, { type: "update" }); } } }; const afterCheckValue = () => { const { type, min, max, exponential } = props; const { inputValue, datetimePanelValue } = reactData; const isNumType = computeIsNumType.value; const isDatePickerType = computeIsDatePickerType.value; const dateLabelFormat = computeDateLabelFormat.value; const inputReadonly = computeInputReadonly.value; if (!inputReadonly) { if (isNumType) { if (inputValue) { const inpVal = `${handleNumber(inputValue)}`; if (inpVal) { let inpNumVal = type === "integer" ? import_xe_utils2.default.toInteger(inpVal) : import_xe_utils2.default.toNumber(inpVal); if (!validMinNum(inpNumVal)) { inpNumVal = min; } else if (!validMaxNum(inpNumVal)) { inpNumVal = max; } if (exponential) { const inpStringVal = import_xe_utils2.default.toValueString(inputValue).toLowerCase(); if (inpStringVal === import_xe_utils2.default.toNumber(inpNumVal).toExponential()) { inpNumVal = inpStringVal; } } handleChange(getNumberValue(inpNumVal), { type: "check" }); } else { let inpValue = ""; if (min || min === 0) { inpValue = `${min}`; } handleChange(inpValue, { type: "check" }); } } } else if (isDatePickerType) { if (inputValue) { let inpDateVal = parseDate(inputValue, dateLabelFormat); if (import_xe_utils2.default.isValidDate(inpDateVal)) { if (type === "time") { inpDateVal = import_xe_utils2.default.toDateString(inpDateVal, dateLabelFormat); if (inputValue !== inpDateVal) { handleChange(inpDateVal, { type: "check" }); } reactData.inputValue = inpDateVal; } else { let isChange = false; const firstDayOfWeek = computeFirstDayOfWeek.value; if (type === "datetime") { const dateValue = computeDateValue.value; if (inputValue !== import_xe_utils2.default.toDateString(dateValue, dateLabelFormat) || inputValue !== import_xe_utils2.default.toDateString(inpDateVal, dateLabelFormat)) { isChange = true; datetimePanelValue.setHours(inpDateVal.getHours()); datetimePanelValue.setMinutes(inpDateVal.getMinutes()); datetimePanelValue.setSeconds(inpDateVal.getSeconds()); } } else { isChange = true; } reactData.inputValue = import_xe_utils2.default.toDateString(inpDateVal, dateLabelFormat, { firstDay: firstDayOfWeek }); if (isChange) { dateChange(inpDateVal); } } } else { dateRevert(); } } else { handleChange("", { type: "check" }); } } } }; const passwordToggleEvent = (evnt) => { const { showPwd } = reactData; const isDisabled = computeIsDisabled.value; const isReadonly = computeIsReadonly.value; if (!isDisabled && !isReadonly) { reactData.showPwd = !showPwd; } inputMethods.dispatchEvent("toggle-visible", { visible: reactData.showPwd }, evnt); }; const searchEvent = (evnt) => { inputMethods.dispatchEvent("search-click", {}, evnt); }; const numberChange = (isPlus, evnt) => { const { min, max, type } = props; const { inputValue } = reactData; const stepValue = computeStepValue.value; const numValue = type === "integer" ? import_xe_utils2.default.toInteger(handleNumber(inputValue)) : import_xe_utils2.default.toNumber(handleNumber(inputValue)); const newValue = isPlus ? import_xe_utils2.default.add(numValue, stepValue) : import_xe_utils2.default.subtract(numValue, stepValue); let restNum; if (!validMinNum(newValue)) { restNum = min; } else if (!validMaxNum(newValue)) { restNum = max; } else { restNum = newValue; } emitInputEvent(getNumberValue(restNum), evnt); }; const numberNextEvent = (evnt) => { const isDisabled = computeIsDisabled.value; const isReadonly = computeIsReadonly.value; const isDisabledSubtractNumber = computeIsDisabledSubtractNumber.value; numberStopDown(); if (!isDisabled && !isReadonly && !isDisabledSubtractNumber) { numberChange(false, evnt); } inputMethods.dispatchEvent("next-number", { value: reactData.inputValue }, evnt); }; const numberDownNextEvent = (evnt) => { internalData.dnTimeout = setTimeout(() => { numberNextEvent(evnt); numberDownNextEvent(evnt); }, 60); }; const numberPrevEvent = (evnt) => { const isDisabled = computeIsDisabled.value; const isReadonly = computeIsReadonly.value; const isDisabledAddNumber = computeIsDisabledAddNumber.value; numberStopDown(); if (!isDisabled && !isReadonly && !isDisabledAddNumber) { numberChange(true, evnt); } inputMethods.dispatchEvent("prev-number", { value: reactData.inputValue }, evnt); }; const numberKeydownEvent = (evnt) => { const isUpArrow = globalEvents.hasKey(evnt, GLOBAL_EVENT_KEYS.ARROW_UP); const isDwArrow = globalEvents.hasKey(evnt, GLOBAL_EVENT_KEYS.ARROW_DOWN); if (isUpArrow || isDwArrow) { evnt.preventDefault(); if (isUpArrow) { numberPrevEvent(evnt); } else { numberNextEvent(evnt); } } }; const keydownEvent = (evnt) => { const { type, exponential, controls } = props; const isNumType = computeIsNumType.value; if (isNumType) { const isControlKey = hasControlKey(evnt); const isShiftKey = evnt.shiftKey; const isAltKey = evnt.altKey; const keyCode = evnt.keyCode; const isEsc = globalEvents.hasKey(evnt, GLOBAL_EVENT_KEYS.ESCAPE); const isUpArrow = globalEvents.hasKey(evnt, GLOBAL_EVENT_KEYS.ARROW_UP); const isDwArrow = globalEvents.hasKey(evnt, GLOBAL_EVENT_KEYS.ARROW_DOWN); if (!isControlKey && !isShiftKey && !isAltKey) { if (globalEvents.hasKey(evnt, GLOBAL_EVENT_KEYS.SPACEBAR) || type === "integer" && keyCode === 110 || (!exponential || keyCode !== 69) && (keyCode >= 65 && keyCode <= 90) || keyCode >= 186 && keyCode <= 188 || keyCode >= 191) { evnt.preventDefault(); } } if (isEsc) { afterCheckValue(); } else if (isUpArrow || isDwArrow) { if (controls) { numberKeydownEvent(evnt); } } } triggerEvent(evnt); }; const keyupEvent = (evnt) => { triggerEvent(evnt); }; const numberStopDown = () => { const { dnTimeout } = internalData; if (dnTimeout) { clearTimeout(dnTimeout); internalData.dnTimeout = void 0; } }; const numberDownPrevEvent = (evnt) => { internalData.dnTimeout = setTimeout(() => { numberPrevEvent(evnt); numberDownPrevEvent(evnt); }, 60); }; const numberMousedownEvent = (evnt) => { numberStopDown(); if (evnt.button === 0) { const isPrevNumber = hasClass(evnt.currentTarget, "is--prev"); if (isPrevNumber) { numberPrevEvent(evnt); } else { numberNextEvent(evnt); } internalData.dnTimeout = setTimeout(() => { if (isPrevNumber) { numberDownPrevEvent(evnt); } else { numberDownNextEvent(evnt); } }, 500); } }; const wheelEvent = (evnt) => { const isNumType = computeIsNumType.value; if (isNumType && props.controls) { if (reactData.isActivated) { const delta = evnt.deltaY; if (delta > 0) { numberNextEvent(evnt); } else if (delta < 0) { numberPrevEvent(evnt); } evnt.preventDefault(); } } triggerEvent(evnt); }; const dateMonthHandle = (date, offsetMonth) => { const firstDayOfWeek = computeFirstDayOfWeek.value; const weekNum = import_xe_utils2.default.getYearWeek(date, firstDayOfWeek); const weekStartDate = import_xe_utils2.default.getWhatWeek(date, 0, firstDayOfWeek, firstDayOfWeek); const month = import_xe_utils2.default.getWhatMonth(weekNum === 1 ? import_xe_utils2.default.getWhatDay(weekStartDate, 6) : date, offsetMonth, "first"); reactData.selectMonth = month; }; const dateNowHandle = () => { const currentDate = import_xe_utils2.default.getWhatDay(Date.now(), 0, "first"); reactData.currentDate = currentDate; dateMonthHandle(currentDate, 0); }; const dateToggleYearTypeEvent = () => { reactData.datePanelType = "year"; }; const dateToggleMonthTypeEvent = () => { let { datePanelType } = reactData; if (datePanelType === "month" || datePanelType === "quarter") { datePanelType = "year"; } else { datePanelType = "month"; } reactData.datePanelType = datePanelType; }; const datePrevEvent = (evnt) => { const { type } = props; const { datePanelType, selectMonth, inputValue } = reactData; const { yearSize } = internalData; const value = inputValue; const isDisabledPrevDateBtn = computeIsDisabledPrevDateBtn.value; if (!isDisabledPrevDateBtn) { let viewDate; if (type === "year") { viewDate = import_xe_utils2.default.getWhatYear(selectMonth, -yearSize, "first"); } else if (type === "month" || type === "quarter") { if (datePanelType === "year") { viewDate = import_xe_utils2.default.getWhatYear(selectMonth, -yearSize, "first"); } else { viewDate = import_xe_utils2.default.getWhatYear(selectMonth, -1, "first"); } } else { if (datePanelType === "year") { viewDate = import_xe_utils2.default.getWhatYear(selectMonth, -yearSize, "first"); } else if (datePanelType === "month") { viewDate = import_xe_utils2.default.getWhatYear(selectMonth, -1, "first"); } else { viewDate = import_xe_utils2.default.getWhatMonth(selectMonth, -1, "first"); } } reactData.selectMonth = viewDate; inputMethods.dispatchEvent("date-prev", { viewType: datePanelType, viewDate, value, type }, evnt); } }; const dateTodayMonthEvent = (evnt) => { dateNowHandle(); if (!props.multiple) { dateChange(reactData.currentDate); hidePanel(); } inputMethods.dispatchEvent("date-today", { type: props.type }, evnt); }; const dateNextEvent = (evnt) => { const { type } = props; const { datePanelType, selectMonth, inputValue } = reactData; const { yearSize } = internalData; const value = inputValue; const isDisabledNextDateBtn = computeIsDisabledNextDateBtn.value; if (!isDisabledNextDateBtn) { let viewDate; if (type === "year") { viewDate = import_xe_utils2.default.getWhatYear(selectMonth, yearSize, "first"); } else if (type === "month" || type === "quarter") { if (datePanelType === "year") { viewDate = import_xe_utils2.default.getWhatYear(selectMonth, yearSize, "first"); } else { viewDate = import_xe_utils2.default.getWhatYear(selectMonth, 1, "first"); } } else { if (datePanelType === "year") { viewDate = import_xe_utils2.default.getWhatYear(selectMonth, yearSize, "first"); } else if (datePanelType === "month") { viewDate = import_xe_utils2.default.getWhatYear(selectMonth, 1, "first"); } else { viewDate = import_xe_utils2.default.getWhatMonth(selectMonth, 1, "first"); } } reactData.selectMonth = viewDate; inputMethods.dispatchEvent("date-next", { viewType: datePanelType, viewDate, value, type }, evnt); } }; const isDateDisabled = (item) => { const { disabledMethod } = props; const { datePanelType } = reactData; const dateStartTime = computeDateStartTime.value; const dateEndTime = computeDateEndTime.value; const { date } = item; if (dateStartTime && dateStartTime.getTime() > date.getTime()) { return true; } if (dateEndTime && dateEndTime.getTime() < date.getTime()) { return true; } if (disabledMethod) { return disabledMethod({ type: datePanelType, viewType: datePanelType, date, $input: $xeInput }); } return false; }; const dateSelectItem = (date) => { const { type, multiple } = props; const { datePanelType } = reactData; if (type === "month") { if (datePanelType === "year") { reactData.datePanelType = "month"; dateCheckMonth(date); } else { dateChange(date); if (!multiple) { hidePanel(); } } } else if (type === "year") { dateChange(date); if (!multiple) { hidePanel(); } } else if (type === "quarter") { if (datePanelType === "year") { reactData.datePanelType = "quarter"; dateCheckMonth(date); } else { dateChange(date); if (!multiple) { hidePanel(); } } } else { if (datePanelType === "month") { reactData.datePanelType = type === "week" ? type : "day"; dateCheckMonth(date); } else if (datePanelType === "year") { reactData.datePanelType = "month"; dateCheckMonth(date); } else { dateChange(date); if (type === "datetime") { } else { if (!multiple) { hidePanel(); } } } } }; const dateSelectEvent = (item) => { if (!isDateDisabled(item)) { dateSelectItem(item.date); } }; const dateMoveDay = (offsetDay) => { if (!isDateDisabled({ date: offsetDay })) { const dayList = computeDayList.value; if (!dayList.some((item) => import_xe_utils2.default.isDateSame(item.date, offsetDay, "yyyyMMdd"))) { dateCheckMonth(offsetDay); } dateParseValue(offsetDay); } }; const dateMoveYear = (offsetYear) => { if (!isDateDisabled({ date: offsetYear })) { const yearList = computeYearList.value; if (!yearList.some((item) => import_xe_utils2.default.isDateSame(item.date, offsetYear, "yyyy"))) { dateCheckMonth(offsetYear); } dateParseValue(offsetYear); } }; const dateMoveQuarter = (offsetQuarter) => { if (!isDateDisabled({ date: offsetQuarter })) { const quarterList = computeQuarterList.value; if (!quarterList.some((item) => import_xe_utils2.default.isDateSame(item.date, offsetQuarter, "yyyyq"))) { dateCheckMonth(offsetQuarter); } dateParseValue(offsetQuarter); } }; const dateMoveMonth = (offsetMonth) => { if (!isDateDisabled({ date: offsetMonth })) { const monthList = computeMonthList.value; if (!monthList.some((item) => import_xe_utils2.default.isDateSame(item.date, offsetMonth, "yyyyMM"))) { dateCheckMonth(offsetMonth); } dateParseValue(offsetMonth); } }; const dateMouseenterEvent = (item) => { if (!isDateDisabled(item)) { const { datePanelType } = reactData; if (datePanelType === "month") { dateMoveMonth(item.date); } else if (datePanelType === "quarter") { dateMoveQuarter(item.date); } else if (datePanelType === "year") { dateMoveYear(item.date); } else { dateMoveDay(item.date); } } }; const updateTimePos = (liElem) => { if (liElem) { const height = liElem.offsetHeight; const ulElem = liElem.parentNode; ulElem.scrollTop = liElem.offsetTop - height * 4; } }; const dateTimeChangeEvent = (evnt) => { reactData.datetimePanelValue = new Date(reactData.datetimePanelValue.getTime()); updateTimePos(evnt.currentTarget); }; const dateHourEvent = (evnt, item) => { reactData.datetimePanelValue.setHours(item.value); dateTimeChangeEvent(evnt); }; const dateConfirmEvent = () => { const { multiple } = props; const { datetimePanelValue } = reactData; const dateValue = computeDateValue.value; const isDateTimeType = computeIsDateTimeType.value; if (isDateTimeType) { const dateValueFormat = computeDateValueFormat.value; if (multiple) { const dateMultipleValue = computeDateMultipleValue.value; if (isDateTimeType) { const dateListValue = [...computeDateListValue.value]; const datetimeRest = []; dateListValue.forEach((item) => { if (item) { item.setHours(datetimePanelValue.getHours()); item.setMinutes(datetimePanelValue.getMinutes()); item.setSeconds(datetimePanelValue.getSeconds()); datetimeRest.push(item); } }); handleChange(datetimeRest.map((date) => import_xe_utils2.default.toDateString(date, dateValueFormat)).join(","), { type: "update" }); } else { handleChange(dateMultipleValue.join(","), { type: "update" }); } } else { dateChange(dateValue || reactData.currentDate); } } hidePanel(); }; const dateMinuteEvent = (evnt, item) => { reactData.datetimePanelValue.setMinutes(item.value); dateTimeChangeEvent(evnt); }; const dateSecondEvent = (evnt, item) => { reactData.datetimePanelValue.setSeconds(item.value); dateTimeChangeEvent(evnt); }; const dateOffsetEvent = (evnt) => { const { isActivated, datePanelValue, datePanelType } = reactData; if (isActivated) { evnt.preventDefault(); const isLeftArrow = globalEvents.hasKey(evnt, GLOBAL_EVENT_KEYS.ARROW_LEFT); const isUpArrow = globalEvents.hasKey(evnt, GLOBAL_EVENT_KEYS.ARROW_UP); const isRightArrow = globalEvents.hasKey(evnt, GLOBAL_EVENT_KEYS.ARROW_RIGHT); const isDwArrow = globalEvents.hasKey(evnt, GLOBAL_EVENT_KEYS.ARROW_DOWN); if (datePanelType === "year") { let offsetYear = import_xe_utils2.default.getWhatYear(datePanelValue || Date.now(), 0, "first"); if (isLeftArrow) { offsetYear = import_xe_utils2.default.getWhatYear(offsetYear, -1); } else if (isUpArrow) { offsetYear = import_xe_utils2.default.getWhatYear(offsetYear, -4); } else if (isRightArrow) { offsetYear = import_xe_utils2.default.getWhatYear(offsetYear, 1); } else if (isDwArrow) { offsetYear = import_xe_utils2.default.getWhatYear(offsetYear, 4); } dateMoveYear(offsetYear); } else if (datePanelType === "quarter") { let offsetQuarter = import_xe_utils2.default.getWhatQuarter(datePanelValue || Date.now(), 0, "first"); if (isLeftArrow) { offsetQuarter = import_xe_utils2.default.getWhatQuarter(offsetQuarter, -1); } else if (isUpArrow) { offsetQuarter = import_xe_utils2.default.getWhatQuarter(offsetQuarter, -2); } else if (isRightArrow) { offsetQuarter = import_xe_utils2.default.getWhatQuarter(offsetQuarter, 1); } else if (isDwArrow) { offsetQuarter = import_xe_utils2.default.getWhatQuarter(offsetQuarter, 2); } dateMoveQuarter(offsetQuarter); } else if (datePanelType === "month") { let offsetMonth = import_xe_utils2.default.getWhatMonth(datePanelValue || Date.now(), 0, "first"); if (isLeftArrow) { offsetMonth = import_xe_utils2.default.getWhatMonth(offsetMonth, -1); } else if (isUpArrow) { offsetMonth = import_xe_utils2.default.getWhatMonth(offsetMonth, -4); } else if (isRightArrow) { offsetMonth = import_xe_utils2.default.getWhatMonth(offsetMonth, 1); } else if (isDwArrow) { offsetMonth = import_xe_utils2.default.getWhatMonth(offsetMonth, 4); } dateMoveMonth(offsetMonth); } else { let offsetDay = datePanelValue || import_xe_utils2.default.getWhatDay(Date.now(), 0, "first"); const firstDayOfWeek = computeFirstDayOfWeek.value; if (isLeftArrow) { offsetDay = import_xe_utils2.default.getWhatDay(offsetDay, -1); } else if (isUpArrow) { offsetDay = import_xe_utils2.default.getWhatWeek(offsetDay, -1, firstDayOfWeek); } else if (isRightArrow) { offsetDay = import_xe_utils2.default.getWhatDay(offsetDay, 1); } else if (isDwArrow) { offsetDay = import_xe_utils2.default.getWhatWeek(offsetDay, 1, firstDayOfWeek); } dateMoveDay(offsetDay); } } }; const datePgOffsetEvent = (evnt) => { const { isActivated } = reactData; if (isActivated) { const isPgUp = globalEvents.hasKey(evnt, GLOBAL_EVENT_KEYS.PAGE_UP); evnt.preventDefault(); if (isPgUp) { datePrevEvent(evnt); } else { dateNextEvent(evnt); } } }; const dateOpenPanel = () => { const { type } = props; const isDateTimeType = computeIsDateTimeType.value; const dateValue = computeDateValue.value; if (["year", "quarter", "month", "week"].indexOf(type) > -1) { reactData.datePanelType = type; } else { reactData.datePanelType = "day"; } reactData.currentDate = import_xe_utils2.default.getWhatDay(Date.now(), 0, "first"); if (dateValue) { dateMonthHandle(dateValue, 0); dateParseValue(dateValue); } else { dateNowHandle(); } if (isDateTimeType) { reactData.datetimePanelValue = reactData.datePanelValue || import_xe_utils2.default.getWhatDay(Date.now(), 0, "first"); nextTick(() => { const timeBodyElem = refInputTimeBody.value; import_xe_utils2.default.arrayEach(timeBodyElem.querySelectorAll("li.is--selected"), (elem) => { updateTimePos(elem); }); }); } }; const updateZindex = () => { if (reactData.panelIndex < getLastZIndex()) { reactData.panelIndex = nextZIndex(); } }; const updatePlacement = () => { return nextTick().then(() => { const { placement } = props; const { panelIndex } = reactData; const targetElem = refInputTarget.value; const panelElem = refInputPanel.value; const btnTransfer = computeBtnTransfer.value; if (targetElem && panelElem) { const targetHeight = targetElem.offsetHeight; const targetWidth = targetElem.offsetWidth; const panelHeight = panelElem.offsetHeight; const panelWidth = panelElem.offsetWidth; const marginSize = 5; const panelStyle = { zIndex: panelIndex }; const { boundingTop, boundingLeft, visibleHeight, visibleWidth } = getAbsolutePos(targetElem); let panelPlacement = "bottom"; if (btnTransfer) { let left = boundingLeft; let top = boundingTop + targetHeight; if (placement === "top") { panelPlacement = "top"; top = boundingTop - panelHeight; } else if (!placement) { if (top + panelHeight + marginSize > visibleHeight) { panelPlacement = "top"; top = boundingTop - panelHeight; } if (top < marginSize) { panelPlacement = "bottom"; top = boundingTop + targetHeight; } } if (left + panelWidth + marginSize > visibleWidth) { left -= left + panelWidth + marginSize - visibleWidth; } if (left < marginSize) { left = marginSize; } Object.assign(panelStyle, { left: `${left}px`, top: `${top}px`, minWidth: `${targetWidth}px` }); } else { if (placement === "top") { panelPlacement = "top"; panelStyle.bottom = `${targetHeight}px`; } else if (!placement) { panelStyle.top = `${targetHeight}px`; if (boundingTop + targetHeight + panelHeight > visibleHeight) { if (boundingTop - targetHeight - panelHeight > marginSize) { panelPlacement = "top"; panelStyle.top = ""; panelStyle.bottom = `${targetHeight}px`; } } } } reactData.panelStyle = panelStyle; reactData.panelPlacement = panelPlacement; return nextTick(); } }); }; const showPanel = () => { const { visiblePanel } = reactData; const { hpTimeout } = internalData; const isDisabled = computeIsDisabled.value; const isDatePickerType = computeIsDatePickerType.value; if (!isDisabled && !visiblePanel) { if (!reactData.initialized) { reactData.initialized = true; } if (hpTimeout) { clearTimeout(hpTimeout); internalData.hpTimeout = void 0; } reactData.isActivated = true; reactData.isAniVisible = true; if (isDatePickerType) { dateOpenPanel(); } setTimeout(() => { reactData.visiblePanel = true; }, 10); updateZindex(); return updatePlacement(); } return nextTick(); }; const datePickerOpenEvent = (evnt) => { const isReadonly = computeIsReadonly.value; if (!isReadonly) { evnt.preventDefault(); showPanel(); } }; const clickEvent = (evnt) => { triggerEvent(evnt); }; const handleGlobalMousedownEvent = (evnt) => { const { visiblePanel, isActivated } = reactData; const isDatePickerType = computeIsDatePickerType.value; const el = refElem.value; const panelWrapperElem = refPanelWrapper.value; const isDisabled = computeIsDisabled.value; if (!isDisabled && isActivated) { reactData.isActivated = getEventTargetNode(evnt, el).flag || getEventTargetNode(evnt, panelWrapperElem).flag; if (!reactData.isActivated) { if (isDatePickerType) { if (visiblePanel) { hidePanel(); afterCheckValue(); } } else { afterCheckValue(); } } } }; const handleGlobalKeydownEvent = (evnt) => { const { clearable } = props; const { visiblePanel } = reactData; const isDisabled = computeIsDisabled.value; const isDatePickerType = computeIsDatePickerType.value; if (!isDisabled) { const isTab = globalEvents.hasKey(evnt, GLOBAL_EVENT_KEYS.TAB); const isDel = globalEvents.hasKey(evnt, GLOBAL_EVENT_KEYS.DELETE); const isEsc = globalEvents.hasKey(evnt, GLOBAL_EVENT_KEYS.ESCAPE); const isEnter = globalEvents.hasKey(evnt, GLOBAL_EVENT_KEYS.ENTER); const isLeftArrow = globalEvents.hasKey(evnt, GLOBAL_EVENT_KEYS.ARROW_LEFT); const isUpArrow = globalEvents.hasKey(evnt, GLOBAL_EVENT_KEYS.ARROW_UP); const isRightArrow = globalEvents.hasKey(evnt, GLOBAL_EVENT_KEYS.ARROW_RIGHT); const isDwArrow = globalEvents.hasKey(evnt, GLOBAL_EVENT_KEYS.ARROW_DOWN); const isPgUp = globalEvents.hasKey(evnt, GLOBAL_EVENT_KEYS.PAGE_UP); const isPgDn = globalEvents.hasKey(evnt, GLOBAL_EVENT_KEYS.PAGE_DOWN); const operArrow = isLeftArrow || isUpArrow || isRightArrow || isDwArrow; let isActivated = reactData.isActivated; if (isTab) { if (isActivated) { afterCheckValue(); } isActivated = false; reactData.isActivated = isActivated; } else if (operArrow) { if (isDatePickerType) { if (isActivated) { if (visiblePanel) { dateOffsetEvent(evnt); } else if (isUpArrow || isDwArrow) { datePickerOpenEvent(evnt); } } } } else if (isEnter) { if (isDatePickerType) { if (visiblePanel) { if (reactData.datePanelValue) { dateSelectItem(reactData.datePanelValue); } else { hidePanel(); } } else if (isActivated) { datePickerOpenEvent(evnt); } } } else if (isPgUp || isPgDn) { if (isDatePickerType) { if (isActivated) { datePgOffsetEvent(evnt); } } } if (isTab || isEsc) { if (visiblePanel) { hidePanel(); } } else if (isDel && clearable) { if (isActivated) { clearValueEvent(evnt, null); } } } }; const handleGlobalMousewheelEvent = (evnt) => { const { visiblePanel } = reactData; const isDisabled = computeIsDisabled.value; if (!isDisabled) { if (visiblePanel) { const panelWrapperElem = refPanelWrapper.value; if (getEventTargetNode(evnt, panelWrapperElem).flag) { updatePlacement(); } else { hidePanel(); afterCheckValue(); } } } }; const handleGlobalBlurEvent = () => { const { isActivated, visiblePanel } = reactData; if (visiblePanel) { hidePanel(); } if (isActivated) { reactData.isActivated = false; } if (visiblePanel || isActivated) { const inputElem = refInputTarget.value; afterCheckValue(); if (inputElem) { inputElem.blur(); } } }; const renderDateLabel = (item, label) => { const { festivalMethod } = props; if (festivalMethod) { const { datePanelType } = reactData; const festivalRest = festivalMethod({ type: datePanelType, viewType: datePanelType, date: item.date, $input: $xeInput }); const festivalItem = festivalRest ? import_xe_utils2.default.isString(festivalRest) ? { label: festivalRest } : festivalRest : {}; const extraItem = festivalItem.extra ? import_xe_utils2.default.isString(festivalItem.extra) ? { label: festivalItem.extra } : festivalItem.extra : null; const labels = [ h("span", { class: ["vxe-input--date-label", { "is-notice": festivalItem.notice }] }, extraItem && extraItem.label ? [ h("span", `${label || ""}`), h("span", { class: ["vxe-input--date-label--extra", extraItem.important ? "is-important" : "", extraItem.className], style: extraItem.style }, import_xe_utils2.default.toValueString(extraItem.label)) ] : [`${label || ""}`]) ]; const festivalLabel = festivalItem.label; if (festivalLabel) { const festivalLabels = import_xe_utils2.default.toValueString(festivalLabel).split(","); labels.push(h("span", { class: ["vxe-input--date-festival", festivalItem.important ? "is-important" : "", festivalItem.className], style: festivalItem.style }, [ festivalLabels.length > 1 ? h("span", { class: ["vxe-input--date-festival--overlap", `overlap--${festivalLabels.length}`] }, festivalLabels.map((label2) => h("span", label2.substring(0, 3)))) : h("span", { class: "vxe-input--date-festival--label" }, festivalLabels[0].substring(0, 3)) ])); } return labels; } return [`${label || ""}`]; }; const renderDateDayTable = () => { const { multiple } = props; const { datePanelType, datePanelValue } = reactData; const dateValue = computeDateValue.value; const dateHeaders = computeDateHeaders.value; const dayDatas = computeDayDatas.value; const dateListValue = computeDateListValue.value; const matchFormat = "yyyyMMdd"; return [ h("table", { class: `vxe-input--date-${datePanelType}-view`, cellspacing: 0, cellpadding: 0, border: 0 }, [ h("thead", [ h("tr", dateHeaders.map((item) => { return h("th", item.label); })) ]), h("tbody", dayDatas.map((rows) => { return h("tr", rows.map((item) => { return h("td", { class: { "is--prev": item.isPrev, "is--current": item.isCurrent, "is--now": item.isNow, "is--next": item.isNext, "is--disabled": isDateDisabled(item), "is--selected": multiple ? dateListValue.some((val) => import_xe_utils2.default.isDateSame(val, item.date, matchFormat)) : import_xe_utils2.default.isDateSame(dateValue, item.date, matchFormat), "is--hover": import_xe_utils2.default.isDateSame(datePanelValue, item.date, matchFormat) }, onClick: () => dateSelectEvent(item), onMouseenter: () => dateMouseenterEvent(item) }, renderDateLabel(item, item.label)); })); })) ]) ]; }; const renderDateWeekTable = () => { const { multiple } = props; const { datePanelType, datePanelValue } = reactData; const dateValue = computeDateValue.value; const weekHeaders = computeWeekHeaders.value; const weekDates = computeWeekDates.value; const dateListValue = computeDateListValue.value; const matchFormat = "yyyyMMdd"; return [ h("table", { class: `vxe-input--date-${datePanelType}-view`, cellspacing: 0, cellpadding: 0, border: 0 }, [ h("thead", [ h("tr", weekHeaders.map((item) => { return h("th", item.label); })) ]), h("tbody", weekDates.map((rows) => { const isSelected = multiple ? rows.some((item) => dateListValue.some((val) => import_xe_utils2.default.isDateSame(val, item.date, matchFormat))) : rows.some((item) => import_xe_utils2.default.isDateSame(dateValue, item.date, matchFormat)); const isHover = rows.some((item) => import_xe_utils2.default.isDateSame(datePanelValue, item.date, matchFormat)); return h("tr", rows.map((item) => { return h("td", { class: { "is--prev": item.isPrev, "is--current": item.isCurrent, "is--now": item.isNow, "is--next": item.isNext, "is--disabled": isDateDisabled(item), "is--selected": isSelected, "is--hover": isHover }, // event onClick: () => dateSelectEvent(item), onMouseenter: () => dateMouseenterEvent(item) }, renderDateLabel(item, item.label)); })); })) ]) ]; }; const renderDateMonthTable = () => { const { multiple } = props; const { datePanelType, datePanelValue } = reactData; const dateValue = computeDateValue.value; const monthDatas = computeMonthDatas.value; const dateListValue = computeDateListValue.value; const matchFormat = "yyyyMM"; return [ h("table", { class: `vxe-input--date-${datePanelType}-view`, cellspacing: 0, cellpadding: 0, border: 0 }, [ h("tbody", monthDatas.map((rows) => { return h("tr", rows.map((item) => { return h("td", { class: { "is--prev": item.isPrev, "is--current": item.isCurrent, "is--now": item.isNow, "is--next": item.isNext, "is--disabled": isDateDisabled(item), "is--selected": multiple ? dateListValue.some((val) => import_xe_utils2.default.isDateSame(val, item.date, matchFormat)) : import_xe_utils2.default.isDateSame(dateValue, item.date, matchFormat), "is--hover": import_xe_utils2.default.isDateSame(datePanelValue, item.date, matchFormat) }, onClick: () => dateSelectEvent(item), onMouseenter: () => dateMouseenterEvent(item) }, renderDateLabel(item, getI18n(`vxe.input.date.months.m${item.month}`))); })); })) ]) ]; }; const renderDateQuarterTable = () => { const { multiple } = props; const { datePanelType, datePanelValue } = reactData; const dateValue = computeDateValue.value; const quarterDatas = computeQuarterDatas.value; const dateListValue = computeDateListValue.value; const matchFormat = "yyyyq"; return [ h("table", { class: `vxe-input--date-${datePanelType}-view`, cellspacing: 0, cellpadding: 0, border: 0 }, [ h("tbody", quarterDatas.map((rows) => { return h("tr", rows.map((item) => { return h("td", { class: { "is--prev": item.isPrev, "is--current": item.isCurrent, "is--now": item.isNow, "is--next": item.isNext, "is--disabled": isDateDisabled(item), "is--selected": multiple ? dateListValue.some((val) => import_xe_utils2.default.isDateSame(val, item.date, matchFormat)) : import_xe_utils2.default.isDateSame(dateValue, item.date, matchFormat), "is--hover": import_xe_utils2.default.isDateSame(datePanelValue, item.date, matchFormat) }, onClick: () => dateSelectEvent(item), onMouseenter: () => dateMouseenterEvent(item) }, renderDateLabel(item, getI18n(`vxe.input.date.quarters.q${item.quarter}`))); })); })) ]) ]; }; const renderDateYearTable = () => { const { multiple } = props; const { datePanelType, datePanelValue } = reactData; const dateValue = computeDateValue.value; const yearDatas = computeYearDatas.value; const dateListValue = computeDateListValue.value; const matchFormat = "yyyy"; return [ h("table", { class: `vxe-input--date-${datePanelType}-view`, cellspacing: 0, cellpadding: 0, border: 0 }, [ h("tbody", yearDatas.map((rows) => { return h("tr", rows.map((item) => { return h("td", { class: { "is--prev": item.isPrev, "is--current": item.isCurrent, "is--now": item.isNow, "is--next": item.isNext, "is--disabled": isDateDisabled(item), "is--selected": multiple ? dateListValue.some((val) => import_xe_utils2.default.isDateSame(val, item.date, matchFormat)) : import_xe_utils2.default.isDateSame(dateValue, item.date, matchFormat), "is--hover": import_xe_utils2.default.isDateSame(datePanelValue, item.date, matchFormat) }, onClick: () => dateSelectEvent(item), onMouseenter: () => dateMouseenterEvent(item) }, renderDateLabel(item, item.year)); })); })) ]) ]; }; const renderDateTable = () => { const { datePanelType } = reactData; switch (datePanelType) { case "week": return renderDateWeekTable(); case "month": return renderDateMonthTable(); case "quarter": return renderDateQuarterTable(); case "year": return renderDateYearTable(); } return renderDateDayTable(); }; const renderDatePanel = () => { const { multiple } = props; const { datePanelType } = reactData; const isDisabledPrevDateBtn = computeIsDisabledPrevDateBtn.value; const isDisabledNextDateBtn = computeIsDisabledNextDateBtn.value; const selectDatePanelObj = computeSelectDatePanelObj.value; return [ h("div", { class: "vxe-input--date-picker-header" }, [ h("div", { class: "vxe-input--date-picker-type-wrapper" }, [ datePanelType === "year" ? h("span", { class: "vxe-input--date-picker-label" }, selectDatePanelObj.y) : h("span", { class: "vxe-input--date-picker-btns" }, [ h("span", { class: "vxe-input--date-picker-btn", onClick: dateToggleYearTypeEvent }, selectDatePanelObj.y), selectDatePanelObj.m ? h("span", { class: "vxe-input--date-picker-btn", onClick: dateToggleMonthTypeEvent }, selectDatePanelObj.m) : renderEmptyElement($xeInput) ]) ]), h("div", { class: "vxe-input--date-picker-btn-wrapper" }, [ h("span", { class: ["vxe-input--date-picker-btn vxe-input--date-picker-prev-btn", { "is--disabled": isDisabledPrevDateBtn }], onClick: datePrevEvent }, [ h("i", { class: "vxe-icon-caret-left" }) ]), h("span", { class: "vxe-input--date-picker-btn vxe-input--date-picker-current-btn", onClick: dateTodayMonthEvent }, [ h("i", { class: "vxe-icon-dot" }) ]), h("span", { class: ["vxe-input--date-picker-btn vxe-input--date-picker-next-btn", { "is--disabled": isDisabledNextDateBtn }], onClick: dateNextEvent }, [ h("i", { class: "vxe-icon-caret-right" }) ]), multiple && computeSupportMultiples.value ? h("span", { class: "vxe-input--date-picker-btn vxe-input--date-picker-confirm-btn" }, [ h("button", { class: "vxe-input--date-picker-confirm", type: "button", onClick: dateConfirmEvent }, getI18n("vxe.button.confirm")) ]) : null ]) ]), h("div", { class: "vxe-input--date-picker-body" }, renderDateTable()) ]; }; const renderTimePanel = () => { const { datetimePanelValue } = reactData; const dateTimeLabel = computeDateTimeLabel.value; const hourList = computeHourList.value; const hasTimeMinute = computeHasTimeMinute.value; const minuteList = computeMinuteList.value; const hasTimeSecond = computeHasTimeSecond.value; const secondList = computeSecondList.value; return [ h("div", { class: "vxe-input--time-picker-header" }, [ hasTimeMinute ? h("span", { class: "vxe-input--time-picker-title" }, dateTimeLabel) : createCommentVNode(), h("div", { class: "vxe-input--time-picker-btn" }, [ h("button", { class: "vxe-input--time-picker-confirm", type: "button", onClick: dateConfirmEvent }, getI18n("vxe.button.confirm")) ]) ]), h("div", { ref: refInputTimeBody, class: "vxe-input--time-picker-body" }, [ h("ul", { class: "vxe-input--time-picker-hour-list" }, hourList.map((item, index) => { return h("li", { key: index, class: { "is--selected": datetimePanelValue && datetimePanelValue.getHours() === item.value }, onClick: (evnt) => dateHourEvent(evnt, item) }, item.label); })), hasTimeMinute ? h("ul", { class: "vxe-input--time-picker-minute-list" }, minuteList.map((item, index) => { return h("li", { key: index, class: { "is--selected": datetimePanelValue && datetimePanelValue.getMinutes() === item.value }, onClick: (evnt) => dateMinuteEvent(evnt, item) }, item.label); })) : createCommentVNode(), hasTimeMinute && hasTimeSecond ? h("ul", { class: "vxe-input--time-picker-second-list" }, secondList.map((item, index) => { return h("li", { key: index, class: { "is--selected": datetimePanelValue && datetimePanelValue.getSeconds() === item.value }, onClick: (evnt) => dateSecondEvent(evnt, item) }, item.label); })) : createCommentVNode() ]) ]; }; const renderPanel = () => { const { type } = props; const { initialized, isAniVisible, visiblePanel, panelPlacement, panelStyle } = reactData; const vSize = computeSize.value; const btnTransfer = computeBtnTransfer.value; const isDatePickerType = computeIsDatePickerType.value; const renders = []; if (isDatePickerType) { if (type === "datetime") { renders.push(h("div", { key: type, ref: refPanelWrapper, class: "vxe-input--panel-layout-wrapper" }, [ h("div", { class: "vxe-input--panel-left-wrapper" }, renderDatePanel()), h("div", { class: "vxe-input--panel-right-wrapper" }, renderTimePanel()) ])); } else if (type === "time") { renders.push(h("div", { key: type, ref: refPanelWrapper, class: "vxe-input--panel-wrapper" }, renderTimePanel())); } else { renders.push(h("div", { key: type || "default", ref: refPanelWrapper, class: "vxe-input--panel-wrapper" }, renderDatePanel())); } return h(Teleport, { to: "body", disabled: btnTransfer ? !initialized : true }, [ h("div", { ref: refInputPanel, class: ["vxe-table--ignore-clear vxe-input--panel", `type--${type}`, { [`size--${vSize}`]: vSize, "is--transfer": btnTransfer, "ani--leave": isAniVisible, "ani--enter": visiblePanel }], placement: panelPlacement, style: panelStyle }, visiblePanel || isAniVisible ? renders : []) ]); } return createCommentVNode(); }; const renderNumberIcon = () => { const isDisabledAddNumber = computeIsDisabledAddNumber.value; const isDisabledSubtractNumber = computeIsDisabledSubtractNumber.value; return h("div", { class: "vxe-input--control-icon" }, [ h("div", { class: "vxe-input--number-icon" }, [ h("div", { class: ["vxe-input--number-btn is--prev", { "is--disabled": isDisabledAddNumber }], onMousedown: numberMousedownEvent, onMouseup: numberStopDown, onMouseleave: numberStopDown }, [ h("i", { class: getIcon().INPUT_PLUS_NUM }) ]), h("div", { class: ["vxe-input--number-btn is--next", { "is--disabled": isDisabledSubtractNumber }], onMousedown: numberMousedownEvent, onMouseup: numberStopDown, onMouseleave: numberStopDown }, [ h("i", { class: getIcon().INPUT_MINUS_NUM }) ]) ]) ]); }; const renderDatePickerIcon = () => { return h("div", { class: "vxe-input--control-icon", onClick: datePickerOpenEvent }, [ h("i", { class: ["vxe-input--date-picker-icon", getIcon().DATE_PICKER_DATE] }) ]); }; const renderSearchIcon = () => { return h("div", { class: "vxe-input--control-icon", onClick: searchEvent }, [ h("i", { class: ["vxe-input--search-icon", getIcon().INPUT_SEARCH] }) ]); }; const renderPasswordIcon = () => { const { showPwd } = reactData; return h("div", { class: "vxe-input--control-icon", onClick: passwordToggleEvent }, [ h("i", { class: ["vxe-input--password-icon", showPwd ? getIcon().PASSWORD_INPUT_SHOW_PWD : getIcon().PASSWORD_INPUT_HIDE_PWD] }) ]); }; const renderPrefixIcon = () => { const { prefixIcon } = props; const prefixSlot = slots.prefix; return prefixSlot || prefixIcon ? h("div", { class: "vxe-input--prefix", onClick: clickPrefixEvent }, [ h("div", { class: "vxe-input--prefix-icon" }, prefixSlot ? getSlotVNs(prefixSlot({})) : [ h("i", { class: prefixIcon }) ]) ]) : null; }; const renderSuffixIcon = () => { const { suffixIcon } = props; const { inputValue } = reactData; const suffixSlot = slots.suffix; const isDisabled = computeIsDisabled.value; const isNumType = computeIsNumType.value; const isDatePickerType = computeIsDatePickerType.value; const isPawdType = computeIsPawdType.value; const isSearchType = computeIsSearchType.value; const isClearable = computeIsClearable.value; const isExtraBtn = isPawdType || isNumType || isDatePickerType || isSearchType; return isClearable || suffixSlot || suffixIcon || isExtraBtn ? h("div", { class: ["vxe-input--suffix", { "is--clear": isClearable && !isDisabled && !(inputValue === "" || import_xe_utils2.default.eqNull(inputValue)) }] }, [ isClearable ? h("div", { class: "vxe-input--clear-icon", onClick: clearValueEvent }, [ h("i", { class: getIcon().INPUT_CLEAR }) ]) : createCommentVNode(), isExtraBtn ? renderExtraSuffixIcon() : createCommentVNode(), suffixSlot || suffixIcon ? h("div", { class: "vxe-input--suffix-icon", onClick: clickSuffixEvent }, suffixSlot ? getSlotVNs(suffixSlot({})) : [ h("i", { class: suffixIcon }) ]) : createCommentVNode() ]) : null; }; const renderExtraSuffixIcon = () => { const { controls } = props; const isNumType = computeIsNumType.value; const isDatePickerType = computeIsDatePickerType.value; const isPawdType = computeIsPawdType.value; const isSearchType = computeIsSearchType.value; if (isPawdType) { return renderPasswordIcon(); } if (isNumType) { if (controls) { return renderNumberIcon(); } } if (isDatePickerType) { return renderDatePickerIcon(); } if (isSearchType) { return renderSearchIcon(); } return createCommentVNode(); }; const dispatchEvent = (type, params, evnt) => { emit(type, createEvent(evnt, { $input: $xeInput }, params)); }; inputMethods = { dispatchEvent, focus() { const inputElem = refInputTarget.value; reactData.isActivated = true; inputElem.focus(); return nextTick(); }, blur() { const inputElem = refInputTarget.value; inputElem.blur(); reactData.isActivated = false; return nextTick(); }, select() { const inputElem = refInputTarget.value; inputElem.select(); reactData.isActivated = false; return nextTick(); }, showPanel, hidePanel, updatePlacement }; Object.assign($xeInput, inputMethods); const renderVN = () => { const { className, controls, type, title, align, showWordCount, countMethod, name, autoComplete, autocomplete } = props; const { inputValue, visiblePanel, isActivated } = reactData; const vSize = computeSize.value; const isDisabled = computeIsDisabled.value; const formReadonly = computeFormReadonly.value; if (formReadonly) { return h("div", { ref: refElem, class: ["vxe-input--readonly", `type--${type}`, className] }, inputValue); } const isCountError = computeIsCountError.value; const inputCount = computeInputCount.value; const inputReadonly = computeInputReadonly.value; const inpMaxLength = computeInpMaxLength.value; const inputType = computeInputType.value; const inpPlaceholder = computeInpPlaceholder.value; const isClearable = computeIsClearable.value; const isWordCount = showWordCount && ["text", "search"].includes(type); const prefix = renderPrefixIcon(); const suffix = renderSuffixIcon(); return h("div", { ref: refElem, class: ["vxe-input", `type--${type}`, className, { [`size--${vSize}`]: vSize, [`is--${align}`]: align, "is--controls": controls, "is--prefix": !!prefix, "is--suffix": !!suffix, "is--visible": visiblePanel, "is--count": isWordCount, "is--disabled": isDisabled, "is--active": isActivated, "show--clear": isClearable && !isDisabled && !(inputValue === "" || import_xe_utils2.default.eqNull(inputValue)) }], spellcheck: false }, [ prefix || createCommentVNode(), h("div", { class: "vxe-input--wrapper", title: title || null }, [ h("input", { ref: refInputTarget, class: "vxe-input--inner", value: inputValue, name, type: inputType, placeholder: inpPlaceholder, maxlength: inpMaxLength, readonly: inputReadonly, disabled: isDisabled, autocomplete: autoComplete || autocomplete, onKeydown: keydownEvent, onKeyup: keyupEvent, onClick: clickEvent, onInput: inputEvent, onChange: changeEvent, onFocus: focusEvent, onBlur: blurEvent }) ]), suffix || createCommentVNode(), // 下拉面板 renderPanel(), // 字数统计 isWordCount ? h("span", { class: ["vxe-input--count", { "is--error": isCountError }] }, countMethod ? `${countMethod({ value: inputValue })}` : `${inputCount}${inpMaxLength ? `/${inpMaxLength}` : ""}`) : createCommentVNode() ]); }; watch(() => props.modelValue, (val) => { reactData.inputValue = val; changeValue(); }); watch(() => props.type, () => { Object.assign(reactData, { inputValue: props.modelValue, datetimePanelValue: null, datePanelValue: null, datePanelLabel: "", datePanelType: "day", selectMonth: null, currentDate: null }); initValue(); }); watch(computeDateLabelFormat, () => { const isDatePickerType = computeIsDatePickerType.value; if (isDatePickerType) { dateParseValue(reactData.datePanelValue); reactData.inputValue = props.multiple ? computeDateMultipleLabel.value : reactData.datePanelLabel; } }); onMounted(() => { const { type } = props; if (["date", "time", "datetime", "week", "month", "quarter", "year"].includes(type)) { warnLog("vxe.error.useNew", [``, ``]); } else if (["number", "integer", "float"].includes(type)) { warnLog("vxe.error.useNew", [``, ``]); } else if (["password"].includes(type)) { warnLog("vxe.error.useNew", [``, ""]); } const inputElem = refInputTarget.value; if (inputElem) { inputElem.addEventListener("wheel", wheelEvent, { passive: false }); } globalEvents.on($xeInput, "mousewheel", handleGlobalMousewheelEvent); globalEvents.on($xeInput, "mousedown", handleGlobalMousedownEvent); globalEvents.on($xeInput, "keydown", handleGlobalKeydownEvent); globalEvents.on($xeInput, "blur", handleGlobalBlurEvent); }); onBeforeUnmount(() => { numberStopDown(); afterCheckValue(); const inputElem = refInputTarget.value; if (inputElem) { inputElem.removeEventListener("wheel", wheelEvent); } globalEvents.off($xeInput, "mousewheel"); globalEvents.off($xeInput, "mousedown"); globalEvents.off($xeInput, "keydown"); globalEvents.off($xeInput, "blur"); }); initValue(); $xeInput.renderVN = renderVN; return $xeInput; }, render() { return this.renderVN(); } }); export { input_default }; //# sourceMappingURL=chunk-XNHHQTAE.js.map