UNPKG

@aplus-frontend/ui

Version:

272 lines (271 loc) 7.86 kB
import { defineComponent as L, useSlots as Y, computed as s, unref as t, isVNode as Z, createVNode as P, Fragment as m, createElementBlock as g, createBlock as k, openBlock as u, createTextVNode as S, toDisplayString as C, resolveDynamicComponent as q, normalizeStyle as J, withCtx as B, createCommentVNode as Q, isRef as X, renderList as w, mergeProps as ee, createSlots as oe, renderSlot as te, normalizeProps as ne, guardReactiveProps as ae } from "vue"; import { ApFieldDatePresetFormats as re, PRESET_FORMAT_MAP as T, PRESET_FORMAT_PICK_MAP as le, PRESET_FORMAT_TIME_MAP as ue } from "../date/constant.mjs"; import "../../hooks/index.mjs"; import { isNil as M, omit as b, isString as c, isFunction as de } from "lodash-unified"; import d from "dayjs"; import { InputGroup as ie, Select as se, SelectOption as pe, DatePicker as fe } from "@aplus-frontend/antdv"; import { formatDayWithTimezone as me } from "../date/helper.mjs"; import { SwapRightOutlined as ce } from "@ant-design/icons-vue"; import { omitUndefined as ye } from "../../utils/index.mjs"; import { getTimeFormatToZone as A } from "@aplus-frontend/utils"; import { useDefaultPlaceholder as ve } from "../hooks/use-default-placeholder.mjs"; import { useDefaultPresets as he } from "../hooks/use-default-presets.mjs"; import { useDateTimezone as ge } from "../hooks/use-date-timezone.mjs"; import { useControllableValue as ke } from "../../hooks/useControllableValue.mjs"; const ze = /* @__PURE__ */ L({ name: "ApFieldDateRange", __name: "index", props: { mode: { default: "edit" }, class: {}, style: {}, id: {}, defaultPickerValue: {}, placeholder: {}, disabled: { type: [Boolean, Array], default: void 0 }, disabledTime: {}, ranges: {}, separator: { type: [Object, String, Number, Boolean, null, Array], default: void 0 }, allowEmpty: {}, onCalendarChange: {}, onFocus: {}, onBlur: {}, onMousedown: {}, onMouseup: {}, onMouseenter: {}, onMouseleave: {}, onClick: {}, direction: {}, autocomplete: {}, activePickerIndex: {}, dateRender: {}, panelRender: {}, dropdownClassName: {}, dropdownAlign: {}, popupStyle: {}, transitionName: {}, allowClear: { type: Boolean, default: !0 }, autofocus: { type: Boolean, default: void 0 }, tabindex: {}, open: { type: Boolean, default: void 0 }, defaultOpen: { type: Boolean, default: void 0 }, inputReadOnly: { type: Boolean, default: void 0 }, suffixIcon: { type: [Object, String, Number, Boolean, null, Array], default: void 0 }, clearIcon: { type: [Object, String, Number, Boolean, null, Array], default: void 0 }, getPopupContainer: {}, inputRender: {}, onOpenChange: {}, onContextmenu: {}, onKeydown: {}, role: {}, name: {}, picker: {}, prefixCls: {}, disabledDate: {}, showWeek: { type: Boolean }, monthCellRender: {}, locale: {}, size: {}, bordered: { type: Boolean, default: void 0 }, variant: {}, showTime: { type: Boolean, default: void 0 }, showNow: { type: Boolean, default: void 0 }, order: { type: Boolean, default: void 0 }, defaultOpenValue: {}, showHour: { type: Boolean, default: void 0 }, showMinute: { type: Boolean, default: void 0 }, showSecond: { type: Boolean, default: void 0 }, use12Hours: { type: Boolean, default: void 0 }, hourStep: {}, minuteStep: {}, secondStep: {}, hideDisabledOptions: { type: Boolean, default: void 0 }, disabledHours: {}, disabledMinutes: {}, disabledSeconds: {}, valueFormat: {}, emptyText: { default: "--" }, value: {}, defaultValue: {}, onChange: {}, onOk: {}, format: { default: "Y-D" }, shownFormat: {}, timezone: {}, readModeSeparator: {}, presets: { type: [Array, Boolean] } }, emits: ["update:value"], setup(R, { emit: F }) { const o = R, _ = F, z = Y(), i = s(() => re.indexOf(o.format) > -1), y = s(() => i.value ? T[o.format] : o.format), { value: v, updateValue: O } = ke(o, _), N = s(() => o.shownFormat ? o.shownFormat : i.value ? T[o.format] : o.format), x = ve("DateRange", o), { currentTimezone: l } = ge(o), { presets: E, changeCurrentDate: V } = he({ ...o, timezone: l }), p = (e, a, n = !0) => me(l.value)(e, a, n), h = s(() => { const e = t(v); if (M(e) || !e?.length) return e; const a = l.value ? A(t(v)[0], l.value) : t(v)?.[0], n = o.timezone ? A(t(v)[1], l.value) : t(v)?.[1]; return [d(a), d(n)]; }), I = s(() => t(i) ? o.picker ?? le[o.format] : o.picker), U = s(() => { const e = t(i) ? ue[o.format] : {}; return { ...ye(b(o, ["value", "onUpdate:value", "onChange", "onOk", "format", "mode", "presets"])), placeholder: t(x), presets: t(E), ...e }; }); function j(e) { if (!e) { O(e); return; } let a = c(e[0]) ? d(e[0]) : e[0], n = c(e[1]) ? d(e[1]) : e[1]; const r = t(i) ? t(y) : void 0; O([p(a, r), p(n, r, !1)]); } function H(e) { const a = c(e[0]) ? d(e[0]) : e[0], n = c(e[1]) ? d(e[1]) : e[1], r = t(i) ? t(y) : void 0, f = e[0] ? p(a, r) : null, D = e[1] ? p(n, r, !1) : null; o.onOk?.([f, D]); } function K(e) { e && V(), o.onOpenChange?.(e); } function W(e, a) { if (M(e)) { o.onChange?.(e, a); return; } const n = c(e[0]) ? d(e[0]) : e[0], r = c(e[1]) ? d(e[1]) : e[1], f = t(i) ? t(y) : void 0, D = e[0] ? p(n, f) : null, G = e[1] ? p(r, f, !1) : null; o.onChange?.([D, G], a); } const $ = s(() => { const e = o.readModeSeparator; if (e) return Z(e) || de(e) ? o.readModeSeparator : P(m, null, [o.readModeSeparator]); const a = z.readModeSeparator?.(); return a ? P(m, null, [a]) : ce; }); return (e, a) => e.mode === "read" ? (u(), g(m, { key: 0 }, [h.value ? (u(), g(m, { key: 0 }, [S(C(h.value[0]?.format(y.value)) + " ", 1), (u(), k(q($.value))), S(" " + C(h.value[1]?.format(y.value)), 1)], 64)) : (u(), g(m, { key: 1 }, [S(C(e.emptyText), 1)], 64))], 64)) : (u(), k(t(ie), { key: 1, compact: "", style: J({ display: Array.isArray(o.timezone) && o.timezone.length ? "flex" : "block" }) }, { default: B(() => [Array.isArray(o.timezone) && o.timezone.length ? (u(), k(t(se), { key: 0, value: t(l), "onUpdate:value": a[0] || (a[0] = (n) => X(l) ? l.value = n : null), "default-active-first-option": "", "dropdown-match-select-width": !1 }, { default: B(() => [(u(!0), g(m, null, w(o.timezone, (n) => (u(), k(t(pe), { key: n?.value, value: n?.value }, { default: B(() => [S(C(n?.label ?? n?.value), 1)]), _: 2 }, 1032, ["value"]))), 128))]), _: 1 }, 8, ["value"])) : Q("", !0), P(t(fe).RangePicker, ee(U.value, { value: h.value, picker: I.value, format: N.value, "onUpdate:value": j, onChange: W, onOk: H, onOpenChange: K }), oe({ _: 2 }, [w(t(b)(e.$slots, "readModeSeparator"), (n, r) => ({ name: r, fn: B((f) => [te(e.$slots, r, ne(ae(f || {})))]) }))]), 1040, ["value", "picker", "format"])]), _: 3 }, 8, ["style"])); } }); export { ze as default };