@farris/ui-vue
Version:
Farris Vue, a Farris Design based Vue3 component library.
1,639 lines • 56.9 kB
JavaScript
var qe = Object.defineProperty;
var $e = (e, t, n) => t in e ? qe(e, t, { enumerable: !0, configurable: !0, writable: !0, value: n }) : e[t] = n;
var J = (e, t, n) => $e(e, typeof t != "symbol" ? t + "" : t, n);
import { ref as o, onMounted as ne, defineComponent as ce, computed as O, createVNode as g, Teleport as ye, createApp as pe, onUnmounted as de, Fragment as ee, watch as A, nextTick as Z, onBeforeMount as _e, watchEffect as Je, Transition as Ze, shallowRef as Qe, render as ie, h as et, cloneVNode as tt, mergeProps as be, inject as nt, withDirectives as lt, vShow as at, createTextVNode as re, onUpdated as ot, onBeforeUnmount as ut } from "vue";
import { LocaleService as ae } from "../locale/index.esm.js";
import { isMobilePhone as te, getMaxZIndex as ge, useGuid as st, withInstall as it } from "../common/index.esm.js";
import "../property-panel/index.esm.js";
import "../button/index.esm.js";
import "../field-selector/index.esm.js";
import "../collection-property-editor/index.esm.js/src/use-button-items.designer";
import rt from "../tags/index.esm.js";
import { debounce as we } from "lodash-es";
import { useInputExpand as ct } from "../common/index.esm.js/text-box/use-input-expand";
import dt from "../popover/index.esm.js";
import ft from "../drawer/index.esm.js";
const vt = {
/**
* 标记组件的唯一标识
*/
id: { type: String, default: "" },
/**
* 按钮内容,缺省为点击按钮图标
*/
buttonContent: { type: String, default: '<i class="f-icon f-icon-lookup"></i>' },
/**
* --
* @default Popup
*/
buttonBehavior: { type: String, default: "Popup" },
/**
* 是否启用自动完成录入文本功能
* @default false
*/
autoComplete: { type: Boolean, default: !1 },
/**
* 组件自定义样式
*/
customClass: { type: String, default: "" },
/**
* 将组件设置为禁用状态
* @default false
*/
disable: { type: Boolean, default: !1 },
/**
* 是否允许在输入框编辑文本;inputType为tag时,此属性无效
* @default true
*/
editable: { type: Boolean, default: !0 },
/**
* 是否启用清空按钮
* @default false
*/
enableClear: { type: Boolean, default: !1 },
/**
* 组件值
*/
modelValue: { type: String, default: "" },
/**
* 将组件输入框设置为只读
* @default false
*/
readonly: { type: Boolean, default: !1 },
/**
* 是否允许在禁用组件时仍然显示组件按钮
* @default false
*/
showButtonWhenDisabled: { type: Boolean, default: !1 },
/**
* 显示扩展按钮
*/
showAppendButton: { type: Boolean, default: !0 },
/**
* 是否启用输入框的的提示文本
* @default false
*/
enableTitle: { type: Boolean, default: !1 },
/**
* 'text'
* @default 'text'
*/
inputType: { type: String, default: "text" },
/**
* 是否始终显示输入框提示文本
* @default false
*/
forcePlaceholder: { type: Boolean, default: !1 },
/**
* 设置输入框提示文本
*/
placeholder: { type: String, default: "" },
/**
* 设置输入框文本最小长度
*/
minLength: Number,
/**
* 设置输入框文本最大长度
*/
maxLength: { type: Number },
/**
* 设置组件 Tab 键索引
*/
tabIndex: Number,
popupHost: { type: Object },
popupRightBoundary: { type: Object },
popupOffsetX: { type: Object, default: 0 },
popupOffsetY: { type: Object, default: 0 },
/**
* 开启后,输入时自动弹出选择面板;inputType为tag时,此属性无效
* @default false
*/
popupOnInput: { type: Boolean, default: !1 },
/**
* 开启后,点击输入框自动弹出选择面板;inputType为tag时,此属性无效
* @default false
*/
popupOnFocus: { type: Boolean, default: !1 },
popupOnClick: { type: Boolean, default: !1 },
/**
* 样式追加到弹出窗口
*/
popupClass: { type: String, default: "" },
/**
* 弹出面板最小宽度
* @default 160
*/
popupMinWidth: { type: Number, default: 160 },
modalOptions: { type: Object, default: {} },
wrapText: { type: Boolean, default: !1 },
/**
* 是否支持多选
* @default false
*/
multiSelect: { type: Boolean, default: !1 },
/**
* 多选分隔符
* @default ,
*/
separator: { type: String, default: "," },
/**
* 设置输入框对齐方式,缺省状况为左对齐,可选择的值包括:'left','center','right'; inputType为tag时,此属性无效
* @default 'left'
*/
textAlign: { type: String, default: "left" },
/**
* 废弃
*/
beforeClickButton: { type: Function, default: null },
/**
* 作为内嵌编辑器被创建后默认获得焦点
*/
focusOnCreated: { type: Boolean, default: !1 },
/**
* 作为内嵌编辑器被创建后默认选中文本
*/
selectOnCreated: { type: Boolean, default: !1 },
/**
* 打开前
*/
beforeOpen: { type: Function, default: null },
/**
* 更新方式 blur | change
*/
updateOn: { type: String, default: "change" },
keepWidthWithReference: { type: Boolean, default: !0 },
placement: { type: String, default: "bottom-left" },
/**
* 根据空间大小重新调整,原下拉面板内容指定的高度
*/
limitContentBySpace: { type: Boolean, default: !1 },
beforeClosePopup: { type: Function, default: null },
/**
* 是否可扩展
*/
expandable: { type: Boolean, default: !1 },
/**
* 扩展模式 text | button
*/
expandMode: { type: String, default: "text" },
/**
* 扩展文本内容
*/
expandContent: { type: String, default: "" },
/**
* 扩展按钮是否禁用
*/
expandDisabled: { type: Boolean, default: !1 }
}, ht = {
popupContentPosition: { type: Object, default: { left: 0, top: 0 } },
host: { type: Object },
backgroundColor: { type: String, default: "" }
};
function mt() {
const e = o(!1);
return ne(() => {
e.value = !0;
}), e;
}
const gt = /* @__PURE__ */ ce({
name: "FOverlay",
props: ht,
emits: ["click"],
setup(e, t) {
const n = o(e.popupContentPosition), a = o(e.host), s = mt(), i = O(() => ({
backgroundColor: e.backgroundColor || "",
pointerEvents: "auto"
}));
function f(r) {
t.emit("click"), r.preventDefault(), r.stopPropagation();
}
O(() => {
const r = a.value;
if (r) {
const m = r.getBoundingClientRect(), {
left: x,
top: y,
height: T
} = m;
return {
left: x,
top: y + T
};
}
return n.value;
});
const c = O(() => ({
// position: 'relative',
// left: `${position.value.left}px`,
// top: `${position.value.top}px`
}));
return () => s.value ? g(ye, {
to: "body"
}, {
default: () => {
var r, m;
return [g("div", {
class: "overlay-container",
onClick: (x) => f(x),
style: i.value
}, [g("div", {
style: c.value
}, [(m = (r = t.slots).default) == null ? void 0 : m.call(r)])])];
}
}) : null;
}
});
function yt(e) {
if (e.content && e.content.render)
return e.content.render;
if (e.render && typeof e.render == "function")
return e.render;
}
function pt(e) {
const t = document.createElement("div");
t.style.display = "contents";
let n;
const a = e.onClickCallback || (() => {
}), s = () => {
a(), n && n.unmount();
};
return n = pe({
setup() {
de(() => {
document.body.removeChild(t);
});
const i = yt(e);
return () => g(gt, {
"popup-content-position": e.popupPosition,
host: e.host,
onClick: s,
backgroundColor: e.backgroundColor
}, {
default: () => [i && i()]
});
}
}), document.body.appendChild(t), n.mount(t), n;
}
class bt {
static show(t) {
return pt(t);
}
}
const wt = {
/**
* 允许点击蒙层关闭对话框
* @default false
*/
allowClickMaskToClose: { type: Boolean, default: !1 },
/**
* 关闭前事件
* @default () => { return true; }
*/
beforeClose: { type: Function, default: () => !0 },
/**
* 自定义样式,类名以空格隔开
* @default ''
*/
class: { type: String, default: "" },
/**
* 自定义蒙层样式,类名以空格隔开
* @default ''
*/
maskClass: { type: String, default: "" },
/**
* 窗口标题
*/
title: { type: String, default: "" },
/**
* 窗口宽度
* @default 500
*/
width: { type: Number, default: 500 },
/**
* 窗口高度
* @default 320
*/
height: { type: Number, default: 320 },
/**
* 底部按钮
*/
buttons: {
type: Array,
default: []
},
/**
* 双向绑定属性是否显示窗口
* @default false
*/
modelValue: { type: Boolean, default: !1 },
/**
* 是否模态
* @default true
*/
mask: { type: Boolean, default: !0 },
/**
* 展示头部
* @default true
*/
showHeader: { type: Boolean, default: !0 },
/**
* 展示默认按钮
* @default true
*/
showButtons: { type: Boolean, default: !0 },
/**
* 自适应尺寸
* @default true
*/
fitContent: { type: Boolean, default: !0 },
/**
* 展示右上角关闭弹窗按钮
* @default true
*/
showCloseButton: { type: Boolean, default: !0 },
/**
* 是否在窗口右上角展示浮动关闭按钮
*/
showFloatingClose: { type: Boolean, default: !1 },
/**
* 展示右上角最大化按钮
* @default false
*/
showMaxButton: { type: Boolean, default: !1 },
minHeight: { type: Number },
maxHeight: { type: Number },
minWidth: { type: Number },
maxWidth: { type: Number },
containment: { type: Object, default: null },
/**
* 可调整窗口尺寸
* @default false
*/
resizeable: { type: Boolean, default: !1 },
/**
* 可拖拽窗口
* @default false
*/
draggable: { type: Boolean, default: !1 },
/**
* 拖拽抓手,赋值css选择器
*/
dragHandle: { type: Object, default: null },
/**
* 命令式调用属性,默认关闭按钮回调事件
*/
closedCallback: { type: Function, default: null },
openedCallback: { type: Function, default: null },
// 窗口打开后的回调函数
resizeHandle: { type: Function, default: null },
/**
* 命令式调用属性,默认插槽,返回VNode
*/
render: { type: Function, default: null },
/**
* 命令式调用属性,底部默认确定按钮回调事件
*/
acceptCallback: { type: Function, default: null },
/**
* 命令式调用属性,底部默认取消按钮回调事件
*/
rejectCallback: { type: Function, default: null },
enableEsc: { type: Boolean, default: !0 },
enableEnter: { type: Boolean, default: !1 },
dialogType: { type: String, default: "" },
src: { type: String, default: "" },
/**
* 底部区域高度,如果设置为0,则不显示底部区域
* @default 60
*/
footerHeight: { type: Number, default: 60 },
position: { type: String, default: "center" },
host: { type: Object, default: "body" },
isMessager: { type: Boolean, default: !1 },
fullscreen: { type: Boolean, default: !1 },
maximized: { type: Boolean, default: !1 },
useTransform: { type: Boolean, default: !0 }
};
class D {
constructor(t, n) {
this.x = t, this.y = n;
}
static getTransformInfo(t) {
const a = window.getComputedStyle(t).getPropertyValue("transform").replace(/[^-\d,]/g, "").split(",");
if (a.length >= 6) {
const s = parseInt(a[4], 10), i = parseInt(a[5], 10);
return { x: s, y: i };
}
return { x: 0, y: 0 };
}
static fromEvent(t, n = null) {
if (this.isMouseEvent(t))
return new D(t.clientX, t.clientY);
if (n === null || t.changedTouches.length === 1)
return new D(t.changedTouches[0].clientX, t.changedTouches[0].clientY);
for (let a = 0; a < t.changedTouches.length; a++)
if (t.changedTouches[a].target === n)
return new D(t.changedTouches[a].clientX, t.changedTouches[a].clientY);
}
static isMouseEvent(t) {
return Object.prototype.toString.apply(t).indexOf("MouseEvent") === 8;
}
static isIPosition(t) {
return !!t && "x" in t && "y" in t;
}
static getCurrent(t) {
const n = new D(0, 0);
if (window) {
const a = window.getComputedStyle(t);
if (a) {
const s = parseInt(a.getPropertyValue("left"), 10), i = parseInt(a.getPropertyValue("top"), 10);
n.x = isNaN(s) ? 0 : s, n.y = isNaN(i) ? 0 : i;
}
return n;
}
return null;
}
static copy(t) {
return new D(0, 0).set(t);
}
get value() {
return { x: this.x, y: this.y };
}
add(t) {
return this.x += t.x, this.y += t.y, this;
}
subtract(t) {
return this.x -= t.x, this.y -= t.y, this;
}
multiply(t) {
this.x *= t, this.y *= t;
}
divide(t) {
this.x /= t, this.y /= t;
}
reset() {
return this.x = 0, this.y = 0, this;
}
set(t) {
return this.x = t.x, this.y = t.y, this;
}
}
class q {
constructor(t, n) {
this.width = t, this.height = n;
}
static getCurrent(t) {
const n = new q(0, 0);
if (window) {
const a = window.getComputedStyle(t);
return a && (n.width = parseInt(a.getPropertyValue("width"), 10), n.height = parseInt(a.getPropertyValue("height"), 10)), n;
}
return null;
}
static copy(t) {
return new q(0, 0).set(t);
}
set(t) {
return this.width = t.width, this.height = t.height, this;
}
}
function Ct(e, t) {
const n = o(), a = o(), s = o(), i = o(), f = o(), c = o(), r = o(), m = o(), x = o(), y = o(), T = o(), C = o(e.resizeable), b = o(), M = o(e.draggable), E = o(!1);
function S() {
const u = a.value || document.body, d = window.getComputedStyle(u);
if (!d || !n.value)
return;
const B = D.getTransformInfo(n.value), z = {};
r.value && (z.deltaL = n.value.offsetLeft - r.value.x, z.deltaT = n.value.offsetTop - r.value.y);
const V = d.getPropertyValue("position");
z.width = u.clientWidth, z.height = u.clientHeight, z.pr = parseInt(d.getPropertyValue("padding-right"), 10), z.pb = parseInt(d.getPropertyValue("padding-bottom"), 10), z.position = d.getPropertyValue("position"), V === "static" && (u.style.position = "relative"), z.translateX = B.x, z.translateY = B.y, y.value = z;
}
function P(u) {
if (n.value) {
i.value = q.getCurrent(n.value), f.value = D.getCurrent(n.value), c.value = i.value ? q.copy(i.value) : null, r.value = f.value ? D.copy(f.value) : null, S();
const d = u.target.getAttribute("type") || "";
m.value = {
n: !!d.match(/n/),
s: !!d.match(/s/),
w: !!d.match(/w/),
e: !!d.match(/e/)
};
}
}
function I() {
var u, d, B, z;
if (n.value) {
const V = n.value;
m.value && ((m.value.n || m.value.s) && ((u = c.value) != null && u.height) && (V.style.height = c.value.height + "px"), (m.value.w || m.value.e) && ((d = c.value) != null && d.width) && (V.style.width = c.value.width + "px"), r.value && ((B = r.value) != null && B.x && (V.style.left = r.value.x + "px"), (z = r.value) != null && z.y && (V.style.top = r.value.y + "px")));
}
}
function H() {
const u = e.minHeight ? e.minHeight : 1, d = e.minWidth ? e.minWidth : 1;
c.value && r.value && m.value && i.value && (c.value.height < u && (c.value.height = u, m.value.n && f.value && (r.value.y = f.value.y + (i.value.height - u))), c.value.width < d && (c.value.width = d, m.value.w && f.value && (r.value.x = f.value.x + (i.value.width - d))), e.maxHeight && c.value.height > e.maxHeight && (c.value.height = e.maxHeight, f.value && m.value.n && (r.value.y = f.value.y + (i.value.height - e.maxHeight))), e.maxWidth && c.value.width > e.maxWidth && (c.value.width = e.maxWidth, m.value.w && f.value && (r.value.x = f.value.x + (i.value.width - e.maxWidth))));
}
function Y() {
if (a.value) {
const u = y.value;
if (r.value && c.value && m.value && i.value) {
const d = u.width - u.pr - u.deltaL - u.translateX - r.value.x, B = u.height - u.pb - u.deltaT - u.translateY - r.value.y;
m.value.n && r.value.y + u.translateY < 0 && f.value && (r.value.y = -u.translateY, c.value.height = i.value.height + f.value.y + u.translateY), m.value.w && r.value.x + u.translateX < 0 && f.value && (r.value.x = -u.translateX, c.value.width = i.value.width + f.value.x + u.translateX), c.value.width > d && (c.value.width = d), c.value.height > B && (c.value.height = B);
}
}
}
function W(u) {
if (!s.value || !i.value || !f.value || !m.value)
return;
u.subtract(s.value);
const d = u.x, B = u.y;
m.value.n ? (r.value.y = f.value.y + B, c.value.height = i.value.height - B) : m.value.s && (c.value.height = i.value.height + B), m.value.e ? c.value.width = i.value.width + d : m.value.w && (c.value.width = i.value.width - d, r.value.x = f.value.x + d), Y(), H(), I();
}
function h(u) {
if (!x.value)
return;
const d = D.fromEvent(u);
d && W(d);
}
function v() {
if (n.value) {
const {
width: u,
height: d,
x: B,
y: z
} = n.value.getBoundingClientRect(), V = D.getTransformInfo(n.value);
return {
size: {
width: u,
height: d
},
position: {
x: B - V.x,
y: z - V.y
}
};
}
return null;
}
function k(u) {
if (n.value) {
const d = v();
T.value = d;
}
s.value = void 0, i.value = null, f.value = null, c.value = null, r.value = null, m.value = null, x.value = null, document.removeEventListener("mousemove", h), document.removeEventListener("mouseup", k);
}
function F() {
document.addEventListener("mousemove", h), document.addEventListener("mouseup", k);
}
function p(u) {
u instanceof MouseEvent && u.button === 2 || M.value && (document.body.click(), u.stopPropagation(), u.preventDefault(), s.value = D.fromEvent(u), x.value = u.target, P(u), F());
}
function R(u) {
return n.value = u, C.value && g(ee, null, [g("div", {
class: "fv-resizable-handle fv-resizable-n",
type: "n",
onMousedown: (d) => p(d)
}, null), g("div", {
class: "fv-resizable-handle fv-resizable-e",
type: "e",
onMousedown: (d) => p(d)
}, null), g("div", {
class: "fv-resizable-handle fv-resizable-s",
type: "s",
onMousedown: (d) => p(d)
}, null), g("div", {
class: "fv-resizable-handle fv-resizable-w",
type: "w",
onMousedown: (d) => p(d)
}, null), g("div", {
class: "fv-resizable-handle fv-resizable-ne",
type: "ne",
onMousedown: (d) => p(d)
}, null), g("div", {
class: "fv-resizable-handle fv-resizable-se fv-resizable-diagonal",
type: "se",
onMousedown: (d) => p(d)
}, null), g("div", {
class: "fv-resizable-handle fv-resizable-sw",
type: "sw",
onMousedown: (d) => p(d)
}, null), g("div", {
class: "fv-resizable-handle fv-resizable-nw",
type: "nw",
onMousedown: (d) => p(d)
}, null)]);
}
function N(u = !0) {
document.body.click();
const d = a.value || document.body, B = q.getCurrent(d), z = n.value;
u && z && (b.value = v(), b.value.transform = z.style.transform), B && z && (c.value = B, c.value.height -= 14, c.value.width -= 14, z.style.height = c.value.height + "px", z.style.width = c.value.width + "px", z.style.left = "7px", z.style.top = "7px", z.style.transform = "", T.value = {
size: c.value,
position: {
x: 0,
y: 0
}
}, M.value = !1, E.value = !0);
}
function $() {
var u, d;
if (document.body.click(), b.value) {
const B = {
width: b.value.size.width || 0,
height: b.value.size.height || 0
}, z = {
x: (window.innerWidth - B.width) / 2,
y: (window.innerHeight - B.height) / 2
};
(u = c.value) == null || u.set(B), (d = r.value) == null || d.set(z);
const V = n.value;
V.style.height = B.height + "px", V.style.width = B.width + "px", V.style.left = `${z.x}px`, V.style.top = `${z.y}px`, V.style.transform = "", T.value = {
size: B,
position: z
}, M.value = e.draggable, E.value = !1;
}
}
function _() {
if (n.value) {
const u = q.getCurrent(n.value);
if (u) {
const {
width: d,
height: B
} = u;
n.value.style.left = `${(window.innerWidth - d) / 2}px`, n.value.style.top = `${(window.innerHeight - B) / 2}px`, n.value.style.transform = "";
}
}
}
function U() {
const u = () => {
E.value ? N(!1) : _(), document.body.click();
};
return window.addEventListener("resize", u), () => {
window.removeEventListener("resize", u);
};
}
const X = U();
return {
renderResizeBar: R,
boundingElement: a,
resizedEventParam: T,
maximize: N,
restore: $,
allowDrag: M,
isMaximized: E,
unWindowResizeHandle: X,
moveToCenter: _
};
}
function xt(e, t, n) {
const a = o(), s = o(e.draggable), i = o(e.lockAxis), f = o(), c = o(), r = o(!1), m = o(new D(0, 0)), x = o(new D(0, 0)), y = o(new D(0, 0)), T = o(new D(0, 0));
A(() => n.value, (h) => {
f.value.style.cursor = h ? "move" : "default";
});
function C(h, v) {
if (v.tagName === "BUTTON")
return !1;
if (v === h)
return !0;
for (const k in v.children)
if (Object.prototype.hasOwnProperty.call(v.children, k) && C(h, v.children[k]))
return !0;
return !1;
}
function b() {
var F, p;
let h = y.value.x + x.value.x, v = y.value.y + x.value.y;
i.value === "x" ? (h = ((F = m.value) == null ? void 0 : F.x) || 0, y.value.x = 0) : i.value === "y" && (v = ((p = m.value) == null ? void 0 : p.y) || 0, y.value.y = 0);
const k = `translate3d(${Math.round(h)}px, ${Math.round(v)}px, 0px)`;
a.value && (a.value.style.transform = k), T.value.x = h, T.value.y = v;
}
function M() {
if (!c.value || !a.value)
return null;
const h = c.value.getBoundingClientRect(), v = a.value.getBoundingClientRect(), k = {
top: h.top < v.top,
right: h.right > v.right,
bottom: h.bottom > v.bottom,
left: h.left < v.left
};
return k.top || (y.value.y -= v.top - h.top), k.bottom || (y.value.y -= v.bottom - h.bottom), k.right || (y.value.x -= v.right - h.right), k.left || (y.value.x -= v.left - h.left), b(), k;
}
function E(h) {
h && (m.value && h.subtract(m.value), y.value.set(h), b(), M());
}
function S(h) {
r.value && s.value && (h.stopPropagation(), h.preventDefault(), E(D.fromEvent(h, f.value)));
}
function P() {
var h;
if (r.value) {
if (r.value = !1, x.value.add(y.value), y.value.reset(), (h = a.value) == null || h.classList.remove("ng-dragging"), !e.useTransform && a.value) {
const { left: v, top: k } = a.value.getBoundingClientRect();
a.value.style.left = Math.ceil(v) + "px", a.value.style.top = Math.ceil(k) + "px", a.value.style.transform = "none";
}
t.emit("stopMove"), document.removeEventListener("mousemove", S), document.removeEventListener("mouseup", P);
}
}
function I() {
!r.value && f.value && (r.value = !0, f.value.classList.add("ng-dragging"), document.addEventListener("mousemove", S), document.addEventListener("mouseup", P));
}
function H() {
if (a.value) {
const h = D.getTransformInfo(a.value);
x.value.set(h);
return;
}
x.value.reset();
}
function Y(h) {
if (!n.value || h instanceof MouseEvent && h.button === 2)
return;
const v = h.target || h.srcElement;
f.value !== void 0 && v && !C(v, f.value) || s.value !== !1 && (document.body.click(), h.stopPropagation(), h.preventDefault(), m.value = D.fromEvent(h, a.value), H(), I());
}
function W(h, v, k) {
if (s.value && v) {
if (h)
f.value = h;
else if (e.dragHandle) {
if (e.dragHandle instanceof HTMLElement)
f.value = e.dragHandle;
else if (typeof e.dragHandle == "string") {
const F = v.querySelector(e.dragHandle);
F && (f.value = F);
}
}
a.value = v, c.value = k, f.value ? (f.value.classList.add("ng-draggable"), f.value.addEventListener("mousedown", Y)) : s.value = !1;
}
}
return {
registerDraggle: W,
resetTranslate: H
};
}
function Ce(e, t) {
if (e) {
const n = (a) => {
a.key.toLowerCase() === e.toLowerCase() && t({ event: a, key: e });
};
return document.addEventListener("keydown", n), () => {
document.removeEventListener("keydown", n);
};
}
}
function Bt(e, t) {
const n = o(e.enableEsc);
let a = null;
return n.value ? (a = Ce("Escape", (s) => {
t.emit("esc", { event: s.event, type: "esc" });
}), {
remove: a
}) : null;
}
function Mt(e, t) {
const n = o(e.enableEnter);
let a = null;
return n.value ? (a = Ce("Enter", (s) => {
t.emit("enter", { event: s.event, type: "enter" });
}), {
remove: a
}) : null;
}
const Q = /* @__PURE__ */ ce({
name: "FModal",
props: wt,
emits: ["update:modelValue", "accept", "cancel", "closed", "resize", "esc", "enter", "stopMove", "buttonClick"],
setup(e, t) {
const n = o(e.width || 300), a = o(e.height || 200), s = o(e.modelValue), i = o(""), f = o(e.class), c = o(e.fitContent), r = o(e.showHeader), m = o(""), x = o(e.showCloseButton), y = o(e.showMaxButton), T = o(!1), C = o(e.dialogType), b = o(e.src), M = o(""), E = o(e.showButtons), S = o(e.title), P = o(e.containment || null), I = o();
S.value === "错误提示" && (S.value = ae.getLocaleValue("messageBox.errorTitle"));
const H = o(!1);
function Y() {
const l = document.querySelectorAll(".farris-modal").length;
(!l || l - 1 <= 0) && I.value === document.querySelectorAll(".farris-modal")[0] && document.body.classList.remove("modal-open"), I.value && I.value.classList.remove("show");
}
function W(l, w) {
const L = w ? "accept" : "cancel";
Promise.resolve().then(() => {
var j;
return (j = e.beforeClose) == null ? void 0 : j.call(e, {
closeType: L
});
}).then((j) => {
j && (s.value = !1, t.emit("update:modelValue", !1), w != null && t.emit(w ? "accept" : "cancel"), t.emit("closed", l), Y());
});
}
const h = [{
name: "cancel",
text: ae.getLocaleValue("messageBox.cancel") || "取消",
class: "btn btn-secondary",
handle: (l) => {
W(l, !1);
}
}, {
name: "accept",
text: ae.getLocaleValue("messageBox.ok") || "确定",
class: "btn btn-primary",
handle: (l) => {
W(l, !0);
}
}], v = o(e.buttons && e.buttons.length ? e.buttons : h), k = O(() => !!m.value), F = O(() => !!E.value && !!v.value), p = o(), R = o(), N = o(e.maximized || !1), {
renderResizeBar: $,
maximize: _,
restore: U,
boundingElement: X,
resizedEventParam: u,
allowDrag: d,
unWindowResizeHandle: B,
moveToCenter: z
} = Ct(e), {
registerDraggle: V
} = xt(e, t, d);
function fe() {
return !!document.querySelectorAll(".farris-modal").length && document.body.classList.contains("modal-open");
}
A(() => e.title, (l, w) => {
l !== w && (S.value = l);
}), A(() => e.modelValue, (l, w) => {
l !== w && (s.value = l, s.value && e.draggable && Z(() => {
R.value && !P.value && (P.value = R.value.parentElement, X.value = P.value, V(p.value, R.value, X.value), z());
}), l || (P.value && (P.value = null), Y())), s.value ? H.value = fe() : (N.value = !1, d.value = e.draggable);
}), A(() => e.showHeader, (l, w) => {
l !== w && (r.value = l);
}), A(() => e.showButtons, (l, w) => {
l !== w && (E.value = l);
}), A(() => u.value, (l, w) => {
const L = l || {}, j = w || {};
JSON.stringify(L) !== JSON.stringify(j) && t.emit("resize", {
newSize: l,
oldSize: w,
isMaximized: N.value
});
}), A([() => e.width, () => e.height], (l, w) => {
(l[0] !== w[0] || l[1] !== w[1]) && (n.value = l[0] || 500, a.value = l[1] || 600);
}), A(() => e.class, (l, w) => {
f.value = l;
});
const le = O(() => (s.value && document.body.classList.add("modal-open"), s.value)), ke = O(() => {
var L;
const l = {
modal: !0,
"farris-modal": !0,
fade: !0,
"fe-cmp-page-modal": !!e.showFloatingClose
};
l["f-modal-fitContent"] = !!c.value, l.show = !!le.value;
const w = (L = e.maskClass) == null ? void 0 : L.split(" ");
return w == null || w.reduce((j, K) => (j[K] = !0, j), l), l;
}), Te = O(() => {
var L;
const l = {
"modal-dialog": !0
}, w = (L = f.value) == null ? void 0 : L.split(" ");
return w == null || w.reduce((j, K) => (j[K] = !0, j), l), l;
}), Ee = () => te() && !e.isMessager || !!e.fullscreen, Oe = O(() => {
const l = document.documentElement.clientWidth, w = document.documentElement.clientHeight;
if (N.value)
return {
position: "fixed",
top: "0px",
left: "0px",
width: "100vw",
height: "100vh",
margin: "0"
};
const L = Math.min(n.value, l), j = e.position === "right" ? "100%" : c.value ? "auto" : `${Math.min(a.value, w - 10)}px`, K = `${(window.innerHeight - (j === "100%" || j === "auto" ? 0 : parseInt(j))) / 2}px`, Ge = e.position === "right" ? `${window.innerWidth - L}px` : `${(window.innerWidth - L) / 2}px`, me = {
position: "absolute",
top: K,
left: Ge,
width: te() ? "auto" : `${L}px`,
height: j
};
return e.mask || (me.pointerEvents = "auto"), me;
}), ve = o(ge() || 1050), ze = O(() => {
const l = {
display: "block",
overflow: "hidden"
};
return e.mask || (l.pointerEvents = "none", l.backgroundColor = "transparent"), H.value && (l.backgroundColor = "transparent"), l.zIndex = ve.value, l;
}), Pe = O(() => ({
"modal-content": !0,
"modal-content-has-header": r.value,
"is-mobile": Ee()
})), Se = O(() => {
const l = {
display: r.value ? "" : "none"
};
return l["pointer-events"] = d.value ? "auto" : "none", l;
}), Ie = O(() => ({
"f-icon": !0,
modal_maximize: !0,
modalrevert: N.value
})), He = O(() => ({
"modal-body": !0,
"f-utils-flex-column": C.value === "iframe",
"f-utils-fill": !0
}));
function Re() {
return {
height: `${e.footerHeight || 60}px`
};
}
const Fe = O(() => {
const l = {
textAlgin: M.value
}, w = Re();
return Object.assign(l, w);
});
function oe(l) {
if (l == null || l.stopPropagation(), N.value) {
N.value = !1, U();
return;
}
_(), N.value = !0;
}
async function Le(l, w) {
l.handle ? await l.handle(w, l) && t.emit("closed", w) : t.emit("buttonClick", {
button: l,
$event: w
});
}
function je(l) {
l.width && (n.value = l.width), l.height && (a.value = l.height), l.buttons && (v.value = l.buttons), l.title && (S.value = l.title);
}
let ue = null, se = null;
_e(() => {
H.value = fe();
}), ne(() => {
R.value && !P.value && (P.value = R.value.parentElement, X.value = P.value, V(p.value, R.value, X.value)), le.value && document.body.classList.add("modal-open"), ue = Bt(e, t), se = Mt(e, t);
}), de(() => {
B && B(), ue && ue.remove(), se && se.remove();
}), t.expose({
modalElementRef: R,
updateModalOptions: je,
close: W,
maxDialog: oe,
isMaximized: N,
disableButtons: (l, w = !0) => {
v.value.forEach((L) => {
L.name && l.includes(L.name) && (L.disabled = w);
});
}
});
function We() {
return g("div", {
class: "action-wrapper",
onClick: (l) => W(l, !1)
}, [g("span", {
class: "close-icon"
}, [g("i", {
class: "f-icon f-icon-close"
}, null)])]);
}
function De() {
return g("ul", null, [T.value && g("li", {
class: "f-btn-icon f-bare"
}, [g("span", {
class: "f-icon modal_minimize"
}, null)]), y.value && g("li", {
onClick: oe,
class: "f-btn-icon f-bare",
style: "pointer-events: auto;"
}, [g("span", {
class: Ie.value
}, null)]), x.value && g("li", {
class: "f-btn-icon f-bare",
onClick: (l) => W(l, !1),
style: "pointer-events: auto;"
}, [g("span", {
class: "f-icon modal_close"
}, null)])]);
}
const Ve = (l) => {
l.preventDefault();
const w = l.currentTarget, L = l.deltaY * 0.5;
w.scrollLeft += L;
};
function Ne() {
return g("div", {
class: "modal-footer",
style: Fe.value
}, [v.value && g("div", {
class: "buttons",
onWheel: Ve
}, [v.value.map((l) => {
var j;
const w = o(l.disabled), L = l.class || ((j = l.appearance) == null ? void 0 : j.class);
return g("button", {
name: l.name,
style: l.styles,
type: "button",
disabled: w.value,
class: L + (l.iconClass ? " btn-icontext" : "") + (l.visible === !1 ? "d-none" : ""),
onClick: (K) => {
Le(l, K);
}
}, [!!l.iconClass && g("i", {
class: l.iconClass
}, null), l.text]);
})])]);
}
function he(l) {
y.value && oe();
}
function Ae() {
return g(ee, null, [N.value && g("div", {
class: "modal-header",
style: "position: absolute;background: transparent;height: 45px;width: 100%;",
onDblclick: (l) => he()
}, null), g("div", {
ref: p,
class: "modal-header",
style: Se.value,
onDblclick: (l) => he()
}, [t.slots.headerTemplate ? t.slots.headerTemplate() : g("div", {
class: "modal-title"
}, [k.value && g("span", {
class: m.value,
style: "margin-right: 8px"
}, null), g("span", {
class: "modal-title-label"
}, [S.value])]), g("div", {
class: "actions"
}, [De()])])]);
}
function Ye() {
return t.slots.footerTemplate ? t.slots.footerTemplate() : F.value && Ne();
}
function Ue(l) {
if (l.stopPropagation(), e.allowClickMaskToClose) {
if (l.target !== I.value)
return;
W(l, !1);
}
}
function Xe() {
var l, w;
return g("div", {
id: i.value,
class: Te.value,
style: Oe.value,
ref: R
}, [e.showFloatingClose && We(), g("div", {
class: Pe.value
}, [r.value && Ae(), g("div", {
class: He.value
}, [(w = (l = t.slots).default) == null ? void 0 : w.call(l), C.value === "iframe" && g("iframe", {
title: i.value,
class: "f-utils-fill",
width: "100%",
frameborder: "0",
src: b.value
}, null)]), Ye()]), !c.value && R.value && !N.value && $(R.value)]);
}
function Ke(l) {
return l || "body";
}
return Je(() => {
le.value && (ve.value = ge() || 1050);
}), () => g(ye, {
to: Ke(e.host)
}, {
default: () => [le.value && g(Ze, {
name: "fade",
appear: !0
}, {
default: () => [g("div", {
ref: I,
class: ke.value,
style: ze.value,
onClick: Ue
}, [Xe()])]
})]
});
}
});
function xe(e) {
if (e.content && e.content.render)
return e.content.render;
if (e.render && typeof e.render == "function")
return e.render;
}
function kt(e) {
const t = document.createElement("div");
t.style.display = "contents";
const n = pe({
setup(a, s) {
de(() => {
document.body.removeChild(t);
});
const i = o(), f = o(e.class || ""), c = o(!!e.showButtons), r = o(!!e.showHeader), m = o(e.showCloseButton == null ? !0 : e.showCloseButton), x = o(!!e.showFloatingClose), y = o(!0), T = o(e.title || ""), C = e.acceptCallback || (() => {
}), b = e.rejectCallback || (() => {
}), M = e.closedCallback || ((H) => {
}), E = e.resizeHandle || ((H) => {
}), S = e.stopMoveHandle || ((H) => {
}), P = xe(e), I = (H) => {
y.value = !1, n.unmount(), M(H);
};
return ne(() => {
}), s.expose({
modalRef: i
}), () => g(Q, {
ref: i,
class: f.value,
modelValue: y.value,
"onUpdate:modelValue": (H) => y.value = H,
title: T.value,
width: e.width,
height: e.height,
buttons: e.buttons,
"show-header": r.value,
"show-buttons": c.value,
"show-close-button": m.value,
"show-max-button": !1,
showFloatingClose: x.value,
onAccept: C,
onCancel: b,
fitContent: e.fitContent == null ? !0 : e.fitContent,
onClosed: I,
onResize: E,
onStopMove: S
}, {
default: () => [P && P(n)]
});
}
});
return document.body.appendChild(t), n.use(ae.i18n), n.mount(t), n;
}
class Tt {
// private activeModalInstance = computed(() => {
// return this.modalRefs[this.activeModalIndex.value];
// });
constructor(t) {
J(this, "appContext", null);
J(this, "modalRef", o());
J(this, "activeModalIndex", o(0));
J(this, "modalRefs", {});
J(this, "isUseEscCloseModal", o(!1));
this.app = t, this.appContext = t ? t._context : null;
}
getCurrentModal() {
return this.modalRefs[this.activeModalIndex.value];
}
adaptToWindow(t, n) {
const {
width: a,
height: s
} = {
width: window.innerWidth,
height: window.innerHeight
};
return a < t && (t = a - 14), s < n && (n = s - 14), {
width: t,
height: n
};
}
static show(t) {
const n = Object.assign({
title: "",
showButtons: !0,
showHeader: !0
}, t);
return kt(n);
}
close(t) {
var n, a;
t ? (a = t.value) == null || a.close() : (n = this.getCurrentModal()) == null || n.close();
}
open(t) {
const n = document.createDocumentFragment();
t.showMaxButton && t.fitContent && (t.showMaxButton = !1);
const a = Qe(Object.assign({
title: "",
showButtons: !0,
showHeader: !0,
maximized: !1
}, t)), s = o(!0), i = a.value.acceptCallback || (() => {
}), f = a.value.rejectCallback || (() => {
}), c = a.value.closedCallback || ((v, k) => {
}), r = a.value.openedCallback || ((v) => {
}), m = a.value.resizeHandle || ((v) => {
}), x = t.stopMoveHandle || ((v) => {
});
let y;
const T = xe(a.value), C = (v) => {
var F;
s.value = !1;
const k = (F = v == null ? void 0 : v.target) == null ? void 0 : F.classList.contains("modal_close");
c(v, this.isUseEscCloseModal.value ? "esc" : k ? "icon" : "button");
}, b = (v) => {
C(v), y && Z(() => {
if (this.modalRefs[this.activeModalIndex.value] && delete this.modalRefs[this.activeModalIndex.value], ie(null, n), y = null, this.modalRef.value = null, this.modalRefs) {
const k = Object.keys(this.modalRefs).map((F) => Number(F));
k.length > 0 ? this.activeModalIndex.value = Math.max(...k) : this.activeModalIndex.value = 0, this.modalRefs[this.activeModalIndex.value] && (this.modalRef.value = this.modalRefs[this.activeModalIndex.value]);
}
this.isUseEscCloseModal.value = !1;
});
}, M = (v) => {
var k;
this.isUseEscCloseModal.value = !0, (k = this.getCurrentModal()) == null || k.close(v == null ? void 0 : v.event);
}, {
width: E,
height: S
} = a.value, P = this.adaptToWindow(E || 500, S || 320);
Object.assign(a.value, P);
const I = o(), H = () => g(Q, be({
ref: I,
modelValue: s.value,
"onUpdate:modelValue": (v) => s.value = v
}, a.value, {
isMessager: a.value.class && a.value.class.indexOf("modal-message") > -1,
onAccept: i,
onCancel: f,
onClosed: b,
onResize: m,
onEsc: M,
onStopMove: x,
maximized: a.value.maximized
}), {
default: () => [T && T(this.app)]
});
y = ((v) => {
const k = et(H, v);
return k.appContext = this.appContext, ie(k, n), k;
})({
...a.value
// 'onUpdate:modelValue': onUpdateModelValue,
}), this.activeModalIndex.value++;
const W = this.activeModalIndex.value;
this.modalRefs[W] = I.value;
const h = (v) => {
a.value = {
...a.value,
...v
}, y && ie(tt(y, {
...a
}), n);
};
return Z(() => {
this.modalRefs[W] = I.value, this.modalRef.value = I.value, r(new Event("opened"));
}), {
update: h,
destroy: b,
modalRef: I,
close: () => {
var v;
(v = I.value) == null || v.close();
},
disableButtons: (v, k = !0) => {
var F;
(F = I.value) == null || F.disableButtons(v, k);
}
};
}
}
const Be = Symbol("FModalService");
Q.install = (e) => {
e.component(Q.name, Q);
const t = new Tt(e);
e.provide(Be, t), e.provide("FModalService", t);
};
function Me(e, t) {
function n() {
const a = e.beforeOpen || e.beforeClickButton || null;
let s = Promise.resolve(!0);
if (a) {
const i = a(t.value);
if (typeof i > "u")
return s;
typeof i == "boolean" ? s = Promise.resolve(i) : s = i;
}
return s;
}
return { judgeCanOpen: n };
}
function Et(e, t, n, a, s) {
const i = o(e.buttonBehavior), f = o(e.popupOnInput), c = O(() => ({
"input-group-append": !0,
"append-force-show": e.showButtonWhenDisabled && (e.readonly || e.disable)
})), { judgeCanOpen: r } = Me(e, s), m = O(() => e.showButtonWhenDisabled || (!e.editable || !e.readonly) && !e.disable), x = nt(Be, null), y = o();
async function T(M) {
if (await r() && m.value) {
const E = !!t.slots.default;
if (i.value === "Modal") {
const S = e.modalOptions, P = x == null ? void 0 : x.open({
...S,
render: () => t.slots.default && t.slots.default()
});
y.value = P == null ? void 0 : P.modalRef;
}
i.value === "Overlay" && bt.show({
// host: buttonEditRef.value,
host: document.body,
backgroundColor: "rgba(0,0,0,.15)",
render: () => t.slots.default && t.slots.default()
}), E && i.value === "Popup" && a.togglePopup(!0), E && f.value && a.hidePopup(), t.emit("clickButton", { origin: M, value: e.modelValue });
}
}
function C(M) {
t.emit("mouseEnterIcon", M);
}
function b(M) {
t.emit("mouseLeaveIcon", M);
}
return {
buttonGroupClass: c,
onClickButton: T,
onMouseEnterButton: C,
onMouseLeaveButton: b,
modalRef: y
};
}
function Ot(e, t, n, a, s, i) {
const f = o(!1), c = O(() => e.enableClear && !e.readonly && !e.disable && !te()), { changeTextBoxValue: r, hasClearClass: m } = i, x = o(!1);
function y(E) {
f.value = E, m.value = E;
}
const T = O(() => c.value && !!(s != null && s.value) && x.value);
A(s, () => {
y(T.value);
});
function C(E) {
const S = !e.readonly && !e.disable && e.editable, P = !e.editable;
E == null || E.stopPropagation(), (S || P) && (r(""), s.value = "", y(!f.value), t.emit("clear"));
}
function b(E) {
if (x.value = !0, !!c.value) {
if (!n.value) {
y(!1);
return;
}
!e.disable && !e.readonly && y(!0);
}
}
function M(E) {
x.value = !1, c.value && y(!1);
}
return {
enableClearButton: c,
showClearButton: f,
onClearValue: C,
onMouseEnterTextBox: b,
onMouseLeaveTextBox: M
};
}
function zt(e, t, n, a, s) {
const i = O(() => e.popupOnInput), f = O(() => e.popupOnFocus), { shouldPopupContent: c, closeAllPopover: r } = s, m = o(!1), x = O(() => e.enableTitle ? n.value : ""), y = O(() => (e.disable || e.readonly) && !e.forcePlaceholder ? "" : e.placeholder), T = O(() => e.readonly || !e.editable || te()), C = o(!1), b = O(() => !e.disable && C.value), M = O(() => ({
"text-left": e.textAlign === "left",
"text-center": e.textAlign === "center",
"text-right": e.textAlign === "right",
"form-control": !0,
"f-utils-fill": !0
})), E = O(() => ({
"input-group": !0,
"f-state-disabled": e.disable,
"f-state-editable": e.editable && !e.disable && !e.readonly,
"f-state-readonly": e.readonly,
"f-state-focus": b.value,
"input-group--has-clear": e.enableClear && m.value
}));
function S(p, R = !0) {
n.value = p, R && (t.emit("change", p), t.emit("update:modelValue", p));
}
function P(p) {
c.value = !1, S(p, !0);
}
A(
() => e.modelValue,
(p) => {
n.value = p;
}
);
function I(p) {
C.value = !1, t.emit("blur", p), p.stopPropagation();
}
function H(p) {
t.emit("click", p), r(), t.slots.default && !e.disable && !e.readonly && e.popupOnClick && s.togglePopup();
}
function Y(p) {
!e.disable && !e.readonly && (C.value = !0, T.value || (t.emit("focus", p), f.value && !c.value && s.popup()));
}
function W(p) {
t.emit("input", p);
const R = p.target.value;
a.value = R, n.value !== R && S(R, e.updateOn === "change"), i.value && !c.value && s.popup();
}
function h(p) {
p.target.tagName !== "INPUT" && p.preventDefault(), p.stopPropagation();
}
function v(p) {
t.emit("keydown", p);
}
function k(p) {
p.key === "Enter" && (i.value || f.value) && s.hidePopup(), t.emit("keyup", p);
}
function F(p) {
const R = p.target.value;
p.stopPropagation(), S(R);
}
return {
hasFocusedTextBox: b,
isTextBoxReadonly: T,
textBoxClass: M,
textBoxPlaceholder: y,
textBoxTitle: x,
inputGroupClass: E,
hasClearClass: m,
changeTextBoxValue: S,
commitValue: P,
onBlurTextBox: I,
onClickTextBox: H,
onFocusTextBox: Y,
onInput: W,
onKeyDownTextBox: v,
onKeyUpTextBox: k,
onMouseDownTextBox: h,
onTextBoxValueChange: F
};
}
const G = "FarrisVue_PopoverInstancesKey";
function Pt(e, t, n, a) {
const s = o(), i = o(!1), { judgeCanOpen: f } = Me(e, a);
A(() => s.value, (C, b) => {
window[G] = window[G] || /* @__PURE__ */ new WeakMap(), C ? window[G].set(n.value, C) : window[G].delete(n.value);
});
function c() {
if (window[G]) {
const C = window[G];
document.querySelectorAll(".f-button-edit,.v-popover").forEach((b) => {
const M = C.get(b);
M && b !== n.value && !n.value.closest(".popover-fitcontent") && M.hide();
});
}
}
function r() {
const C = s.value;
C && (C.show ? C.show(n.value) : C.open && C.open(n.value));
}
async function m(C = !1) {
if (!!t.slots.default) {
if (!C && !i.value && !await f())
return;
i.value = !i.value, i.value && (await Z(), r());
}
}
async function x(C = !1) {
if (!!t.slots.default) {
if (!C && !await f())
return;
i.value = !0, await Z(), r();
}
}
function y() {
i.value = !1;
}
function T() {
i.value = !0, Z(() => {
r();
});
}
return { hidePopup: y, showPopup: T, popup: x, shouldPopupContent: i, togglePopup: m, popoverRef: s, closeAllPopover: c };
}
function St(e, t, n) {
const a = o(), {
isTextBoxReadonly: s,
textBoxClass: i,
textBoxPlaceholder: f,
textBoxTitle: c,
onBlurTextBox: r,
onClickTextBox: m,
onFocusTextBox: x,
onInput: y,
onKeyDownTextBox: T,
onKeyUpTextBox: C,
onMouseDownTextBox: b,
onTextBoxValueChange: M
} = n, E = o(e.id), {
uuid: S
} = st(), P = O(() => ({
// 'border-top-right-radius': '6px',
// 'border-bottom-right-radius': '6px'
}));
ne(() => {
var h, v;
e.selectOnCreated && ((h = a.value) == null || h.select()), e.focusOnCreated && ((v = a.value) == null || v.focus({
preventScroll: !0
})), E.value || (E.value = "button-edit_" + S(8)), E.value = E.value + "-textbox";
});
const I = o(!1), H = (h) => {
h.preventDefault(), I.value = !0;
}, Y = (h) => {
h.preventDefault(), I.value = !1, y(h);
};
function W(h) {
I.value || y(h);
}
return () => g("input", {
id: e.id ? e.id + "-textbox" : void 0,
ref: a,
name: "input-group-value",
autocomplete: e.autoComplete ? "on" : "off",
class: i.value,
style: P.value,
disabled: e.disable,
maxlength: e.maxLength,
minlength: e.minLength,
placeholder: f.value,
readonly: s.value,
tabindex: e.tabIndex,
title: c.value,
type: e.inputType,
value: t.value,
onBlur: r,
onChange: M,
onClick: m,
onFocus: x,
onInput: W,
onKeydown: T,
onKeyup: C,
onMousedown: b,
onCompositionend: Y,
onCompositionstart: H
}, null);
}
function It(e, t, n) {
const a = o(e.separator), s = O(() => e.readonly || e.disable), {
changeTextBoxValue: i,
onFocusTextBox: f,
onBlurTextBox: c,
onClickTextBox: r,
textBoxPlaceholder: m
} = n, x = O(() => t.value ? t.value.split(a.value).map((b) => ({
name: b,
selectable: !0
})) : []);
function y(b) {
i(b.map((M) => M.name).join(a.value), !0);
}
A(() => e.separator, (b) => {
a.value = b;
});
const T = o(!e.disable && !e.readonly);
A([() => e.disable, () => e.readonly], ([b, M], [E, S]) => {
T.value = !b && !M;
});
function C(b) {
r(b);
}
return () => g(rt, {
tabindex: e.tabIndex,
onFocus: f,
onBlur: c,
id: `${e.id}-tag-editor`,
class: "form-control",
placeholder: m.value,
data: x.value,
showClose: !s.value,
showInput: !0,
disable: s.value,
onChange: y,
onClick: C
}, null);
}
function Ht(e, t, n, a) {
const {
buttonGroupClass: s,
onClickButton: i,
onMouseEnterButton: f,
onMouseLeaveButton: c
} = n, {
enableClearButton: r,
showClearButton: m,
onClearValue: x
} = a, y = o(), T = we((M) => {
i(M);
}, e.buttonBehavior === "Modal" ? 0 : 200), C = () => {
t.emit("beforeClearValue");
}, {
renderExpandContent: b
} = ct(e, t);
return {
renderButtonGroup: () => g(ee, null, [g("div", {
id: e.id ? `${e.id}-button-group` : void 0,
class: s.value
}, [r.value && lt(g("span", {
class: "input-group-text input-group-clear",
onClick: x,
onMousedown: C
}, [g("i", {
class: "f-icon modal_close"
}, null)]), [[at, m.value]]), t.slots.buttonContent ? g("span", {
class: "input-group-text input-group-append-button",
onClick: T,
onMouseenter: f,
onMouseleave: c
}, [t.slots.buttonContent()]) : e.buttonContent ? g("span", {
class: "input-group-text input-group-append-button",
innerHTML: e.buttonContent,
ref: y,
onClick: (M) => T(M),
onMouseenter: f,
onMouseleav