UNPKG

@aplus-frontend/ui

Version:

273 lines (272 loc) 7.9 kB
import { defineComponent as L, useSlots as Y, computed as s, unref as t, isVNode as Z, createVNode as O, 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 { SwapRightOutlined as re } from "@ant-design/icons-vue"; import { InputGroup as le, Select as ue, SelectOption as de, DatePicker as ie } from "@aplus-frontend/antdv"; import { getTimeFormatToZone as T } from "@aplus-frontend/utils"; import d from "dayjs"; import { isNil as M, omit as b, isString as c, isFunction as se } from "lodash-unified"; import "../../hooks/index.mjs"; import { omitUndefined as pe } from "../../utils/index.mjs"; import { ApFieldDatePresetFormats as fe, PRESET_FORMAT_MAP as A, PRESET_FORMAT_PICK_MAP as me, PRESET_FORMAT_TIME_MAP as ce } from "../date/constant.mjs"; import { formatDayWithTimezone as ye } from "../date/helper.mjs"; import { useDateTimezone as ve } from "../hooks/use-date-timezone.mjs"; import { useDefaultPlaceholder as he } from "../hooks/use-default-placeholder.mjs"; import { useDefaultPresets as ge } from "../hooks/use-default-presets.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, Object], 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: {}, "onUpdate:value": {}, 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(() => fe.indexOf(o.format) > -1), y = s(() => i.value ? A[o.format] : o.format), { value: v, updateValue: P } = ke(o, _), N = s(() => o.shownFormat ? o.shownFormat : i.value ? A[o.format] : o.format), x = he("DateRange", o), { currentTimezone: l } = ve(o), { presets: E, changeCurrentDate: V } = ge({ ...o, timezone: l }), p = (e, a, n = !0) => ye(l.value)(e, a, n), h = s(() => { const e = t(v); if (M(e) || !e?.length) return e; const a = l.value ? T(t(v)[0], l.value) : t(v)?.[0], n = o.timezone ? T(t(v)[1], l.value) : t(v)?.[1]; return [d(a), d(n)]; }), I = s(() => t(i) ? o.picker ?? me[o.format] : o.picker), U = s(() => { const e = t(i) ? ce[o.format] : {}; return { ...pe(b(o, ["value", "onUpdate:value", "onChange", "onOk", "format", "mode", "presets"])), placeholder: t(x), presets: t(E), ...e }; }); function j(e) { if (!e) { P(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; P([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) || se(e) ? o.readModeSeparator : O(m, null, [o.readModeSeparator]); const a = z.readModeSeparator?.(); return a ? O(m, null, [a]) : re; }); 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(le), { 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(ue), { 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(de), { key: n?.value, value: n?.value }, { default: B(() => [S(C(n?.label ?? n?.value), 1)]), _: 2 }, 1032, ["value"]))), 128))]), _: 1 }, 8, ["value"])) : Q("", !0), O(t(ie).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 };