@farris/ui-vue 1.0.0-beta.2 → 1.0.0-beta.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/accordion/index.esm.js +93 -0
- package/accordion/index.umd.js +1 -0
- package/accordion/package.json +8 -0
- package/accordion/style.css +1 -0
- package/avatar/index.esm.js +94 -0
- package/avatar/index.umd.js +1 -0
- package/avatar/package.json +8 -0
- package/avatar/style.css +1 -0
- package/button/index.esm.js +206 -0
- package/button/index.umd.js +1 -0
- package/button/package.json +8 -0
- package/button-edit/index.esm.js +300 -0
- package/button-edit/index.umd.js +1 -0
- package/button-edit/package.json +8 -0
- package/checkbox/index.esm.js +97 -0
- package/checkbox/index.umd.js +1 -0
- package/checkbox/package.json +8 -0
- package/combo-list/index.esm.js +457 -0
- package/combo-list/index.umd.js +1 -0
- package/combo-list/package.json +8 -0
- package/data-grid/index.esm.js +1535 -0
- package/data-grid/index.umd.js +1 -0
- package/data-grid/package.json +8 -0
- package/data-grid/style.css +1 -0
- package/date-picker/index.esm.js +1479 -0
- package/date-picker/index.umd.js +1 -0
- package/date-picker/package.json +8 -0
- package/date-picker/style.css +1 -0
- package/{src/index.esm.js → farris.all.esm.js} +1 -2
- package/farris.all.umd.js +1 -0
- package/list-view/index.esm.js +144 -0
- package/list-view/index.umd.js +1 -0
- package/list-view/package.json +8 -0
- package/list-view/style.css +1 -0
- package/message-box/index.esm.js +499 -0
- package/message-box/index.umd.js +1 -0
- package/message-box/package.json +8 -0
- package/modal/index.esm.js +165 -0
- package/modal/index.umd.js +1 -0
- package/modal/package.json +8 -0
- package/notify/index.esm.js +187 -0
- package/notify/index.umd.js +1 -0
- package/notify/package.json +8 -0
- package/notify/style.css +1 -0
- package/package.json +6 -5
- package/pagination/index.esm.js +334 -0
- package/pagination/index.umd.js +1 -0
- package/pagination/package.json +8 -0
- package/pagination/style.css +1 -0
- package/popover/index.esm.js +83 -0
- package/popover/index.umd.js +1 -0
- package/popover/package.json +8 -0
- package/popover/style.css +1 -0
- package/radio-group/index.esm.js +79 -0
- package/radio-group/index.umd.js +1 -0
- package/radio-group/package.json +8 -0
- package/section/index.esm.js +70 -0
- package/section/index.umd.js +1 -0
- package/section/package.json +8 -0
- package/switch/index.esm.js +78 -0
- package/switch/index.umd.js +1 -0
- package/switch/package.json +8 -0
- package/tabs/index.esm.js +385 -0
- package/tabs/index.umd.js +1 -0
- package/tabs/package.json +8 -0
- package/tabs/style.css +1 -0
- package/text/index.esm.js +33 -0
- package/text/index.umd.js +1 -0
- package/text/package.json +8 -0
- package/tooltip/index.esm.js +195 -0
- package/tooltip/index.umd.js +1 -0
- package/tooltip/package.json +8 -0
- package/tooltip/style.css +1 -0
- package/types/accordion/index.d.ts +25 -0
- package/types/accordion/src/accordion.component.d.ts +70 -0
- package/types/accordion/src/accordion.props.d.ts +50 -0
- package/types/accordion/src/components/accordion-item.component.d.ts +38 -0
- package/types/accordion/src/components/accordion-item.props.d.ts +34 -0
- package/types/avatar/index.d.ts +23 -0
- package/types/avatar/src/avatar.component.d.ts +109 -0
- package/types/avatar/src/avatar.props.d.ts +96 -0
- package/types/avatar/src/composition/types.d.ts +31 -0
- package/types/avatar/src/composition/use-image.d.ts +19 -0
- package/types/button/index.d.ts +24 -0
- package/types/button/src/button-group.component.d.ts +106 -0
- package/types/button/src/button-group.props.d.ts +106 -0
- package/types/button/src/button.component.d.ts +34 -0
- package/types/button/src/button.props.d.ts +47 -0
- package/types/button/src/composition/types-group.d.ts +24 -0
- package/types/button/src/composition/types.d.ts +24 -0
- package/types/button/src/composition/use-button-group.d.ts +19 -0
- package/types/button/src/composition/use-button.d.ts +19 -0
- package/types/button-edit/index.d.ts +23 -0
- package/types/button-edit/src/button-edit.props.d.ts +135 -0
- package/types/button-edit/src/composition/types.d.ts +118 -0
- package/types/button-edit/src/composition/use-button.d.ts +19 -0
- package/types/button-edit/src/composition/use-clear.d.ts +19 -0
- package/types/button-edit/src/composition/use-text-box.d.ts +19 -0
- package/types/checkbox/index.d.ts +23 -0
- package/types/checkbox/src/checkbox-group.component.d.ts +148 -0
- package/types/checkbox/src/checkbox-group.props.d.ts +123 -0
- package/types/checkbox/src/composition/types.d.ts +46 -0
- package/types/checkbox/src/composition/use-checkbox-group.d.ts +19 -0
- package/types/combo-list/index.d.ts +25 -0
- package/types/combo-list/src/combo-list.props.d.ts +290 -0
- package/types/combo-list/src/components/option.component.d.ts +39 -0
- package/types/combo-list/src/components/options.component.d.ts +10 -0
- package/types/combo-list/src/composition/index.d.ts +18 -0
- package/types/combo-list/src/composition/use-combo-list.d.ts +30 -0
- package/types/combo-list/src/composition/use-option.d.ts +19 -0
- package/types/combo-list/src/composition/use-options.d.ts +2 -0
- package/types/combo-list/src/composition/use-panel.d.ts +8 -0
- package/types/combo-list/src/const.d.ts +40 -0
- package/types/combo-list/src/types.d.ts +186 -0
- package/types/data-grid/index.d.ts +23 -0
- package/types/data-grid/src/components/data/data-area.component.d.ts +21 -0
- package/types/data-grid/src/components/editors/date-picker.component.d.ts +2 -0
- package/types/data-grid/src/components/editors/text-area-editor.component.d.ts +2 -0
- package/types/data-grid/src/components/editors/text-editor.component.d.ts +17 -0
- package/types/data-grid/src/components/header/data-grid-header.component.d.ts +22 -0
- package/types/data-grid/src/components/pagination/data-grid-pagination.component.d.ts +5 -0
- package/types/data-grid/src/components/scrollbar/horizontal-scrollbar.component.d.ts +21 -0
- package/types/data-grid/src/components/scrollbar/vertical-scrollbar.component.d.ts +21 -0
- package/types/data-grid/src/components/sidebar/data-grid-sidebar.component.d.ts +21 -0
- package/types/data-grid/src/components/summary/data-grid-summary.component.d.ts +5 -0
- package/types/data-grid/src/composition/types.d.ts +175 -0
- package/types/data-grid/src/composition/use-column.d.ts +17 -0
- package/types/data-grid/src/composition/use-data-view.d.ts +19 -0
- package/types/data-grid/src/composition/use-edit.d.ts +18 -0
- package/types/data-grid/src/composition/use-fit-column.d.ts +20 -0
- package/types/data-grid/src/composition/use-group-column.d.ts +22 -0
- package/types/data-grid/src/composition/use-group-data.d.ts +3 -0
- package/types/data-grid/src/composition/use-positon-style.d.ts +20 -0
- package/types/data-grid/src/composition/use-resize.d.ts +20 -0
- package/types/data-grid/src/composition/use-row.d.ts +3 -0
- package/types/data-grid/src/composition/use-sidebar.d.ts +3 -0
- package/types/data-grid/src/composition/use-virtual-scroll.d.ts +20 -0
- package/types/data-grid/src/composition/use-visual-data.d.ts +19 -0
- package/types/data-grid/src/data-grid.component.d.ts +278 -0
- package/types/data-grid/src/data-grid.props.d.ts +650 -0
- package/types/date-picker/index.d.ts +28 -0
- package/types/date-picker/src/components/calendar/calendar.component.d.ts +166 -0
- package/types/date-picker/src/components/calendar/calendar.props.d.ts +94 -0
- package/types/date-picker/src/components/calendar-navbar/calendar-navbar.component.d.ts +138 -0
- package/types/date-picker/src/components/calendar-navbar/calendar-navbar.props.d.ts +81 -0
- package/types/date-picker/src/components/date-picker-container/date-picker-container.component.d.ts +626 -0
- package/types/date-picker/src/components/date-picker-container/date-picker-container.props.d.ts +306 -0
- package/types/date-picker/src/components/month/month.component.d.ts +86 -0
- package/types/date-picker/src/components/month/month.props.d.ts +57 -0
- package/types/date-picker/src/components/year/year.component.d.ts +86 -0
- package/types/date-picker/src/components/year/year.props.d.ts +57 -0
- package/types/date-picker/src/composition/types.d.ts +102 -0
- package/types/date-picker/src/composition/use-calendar.d.ts +2 -0
- package/types/date-picker/src/composition/use-compare.d.ts +2 -0
- package/types/date-picker/src/composition/use-date.d.ts +2 -0
- package/types/date-picker/src/composition/use-disable-date.d.ts +18 -0
- package/types/date-picker/src/composition/use-disable-month.d.ts +2 -0
- package/types/date-picker/src/composition/use-event.d.ts +45 -0
- package/types/date-picker/src/composition/use-mark.d.ts +2 -0
- package/types/date-picker/src/composition/use-month.d.ts +2 -0
- package/types/date-picker/src/composition/use-number.d.ts +2 -0
- package/types/date-picker/src/composition/use-year.d.ts +2 -0
- package/types/date-picker/src/date-picker.props.d.ts +168 -0
- package/types/date-picker/src/types/calendar.d.ts +30 -0
- package/types/date-picker/src/types/common.d.ts +42 -0
- package/types/date-picker/src/types/date-model.d.ts +38 -0
- package/types/date-picker/src/types/month.d.ts +48 -0
- package/types/date-picker/src/types/year.d.ts +24 -0
- package/types/index.d.ts +20 -0
- package/types/list-view/index.d.ts +23 -0
- package/types/list-view/src/components/list-view-checkbox.component.d.ts +32 -0
- package/types/list-view/src/components/list-view-checkbox.props.d.ts +31 -0
- package/types/list-view/src/list-view.props.d.ts +44 -0
- package/types/message-box/index.d.ts +24 -0
- package/types/message-box/src/composition/types.d.ts +18 -0
- package/types/message-box/src/composition/use-copy.d.ts +18 -0
- package/types/message-box/src/message-box.component.d.ts +72 -0
- package/types/message-box/src/message-box.props.d.ts +52 -0
- package/types/modal/index.d.ts +23 -0
- package/types/modal/src/modal.component.d.ts +104 -0
- package/types/modal/src/modal.props.d.ts +72 -0
- package/types/notify/index.d.ts +26 -0
- package/types/notify/src/components/toast.component.d.ts +21 -0
- package/types/notify/src/components/toast.props.d.ts +27 -0
- package/types/notify/src/notify.props.d.ts +99 -0
- package/types/number-range/index.d.ts +23 -0
- package/types/number-range/src/composition/types.d.ts +52 -0
- package/types/number-range/src/composition/use-data.d.ts +19 -0
- package/types/number-range/src/composition/use-util.d.ts +19 -0
- package/types/number-range/src/number-range.component.d.ts +247 -0
- package/types/number-range/src/number-range.props.d.ts +216 -0
- package/types/number-spinner/index.d.ts +23 -0
- package/types/number-spinner/src/composition/types.d.ts +52 -0
- package/types/number-spinner/src/composition/use-data.d.ts +19 -0
- package/types/number-spinner/src/composition/use-util.d.ts +19 -0
- package/types/number-spinner/src/number-spinner.component.d.ts +202 -0
- package/types/number-spinner/src/number-spinner.props.d.ts +181 -0
- package/types/overlay/src/overlay.component.d.ts +20 -0
- package/types/overlay/src/overlay.props.d.ts +26 -0
- package/types/pagination/index.d.ts +23 -0
- package/types/pagination/src/components/buttons/goto-buttons.component.d.ts +19 -0
- package/types/pagination/src/components/buttons/next-buttons.component.d.ts +20 -0
- package/types/pagination/src/components/buttons/previous-buttons.component.d.ts +20 -0
- package/types/pagination/src/components/pages/page-info.component.d.ts +19 -0
- package/types/pagination/src/components/pages/page-list.component.d.ts +19 -0
- package/types/pagination/src/components/pages/page-number.component.d.ts +20 -0
- package/types/pagination/src/composition/types.d.ts +24 -0
- package/types/pagination/src/composition/use-pages.d.ts +18 -0
- package/types/pagination/src/pagination.components.d.ts +41 -0
- package/types/pagination/src/pagination.props.d.ts +36 -0
- package/types/popover/index.d.ts +24 -0
- package/types/popover/src/popover.component.d.ts +26 -0
- package/types/popover/src/popover.directive.d.ts +5 -0
- package/types/popover/src/popover.props.d.ts +30 -0
- package/types/radio-group/index.d.ts +23 -0
- package/types/radio-group/src/composition/change-radio.d.ts +19 -0
- package/types/radio-group/src/composition/types.d.ts +42 -0
- package/types/radio-group/src/radio-group.component.d.ts +91 -0
- package/types/radio-group/src/radio-group.props.d.ts +87 -0
- package/types/section/index.d.ts +23 -0
- package/types/section/src/section.component.d.ts +187 -0
- package/types/section/src/section.props.d.ts +117 -0
- package/types/switch/index.d.ts +23 -0
- package/types/switch/src/switch.component.d.ts +66 -0
- package/types/switch/src/switch.props.d.ts +52 -0
- package/types/tabs/index.d.ts +25 -0
- package/types/tabs/src/components/tab-page.component.d.ts +101 -0
- package/types/tabs/src/components/tab-page.props.d.ts +63 -0
- package/types/tabs/src/composition/types.d.ts +35 -0
- package/types/tabs/src/composition/use-tabs.d.ts +18 -0
- package/types/tabs/src/tabs.component.d.ts +149 -0
- package/types/tabs/src/tabs.props.d.ts +86 -0
- package/types/text/index.d.ts +23 -0
- package/types/text/src/text.component.d.ts +14 -0
- package/types/text/src/text.props.d.ts +26 -0
- package/types/tooltip/index.d.ts +24 -0
- package/types/tooltip/src/composition/types.d.ts +45 -0
- package/types/tooltip/src/composition/use-adjust-placement.d.ts +20 -0
- package/types/tooltip/src/composition/use-adjust-position.d.ts +6 -0
- package/types/tooltip/src/composition/use-calculate-position.d.ts +21 -0
- package/types/tooltip/src/composition/use-relative.d.ts +19 -0
- package/types/tooltip/src/composition/use-tooltip-position.d.ts +22 -0
- package/types/tooltip/src/tooltip.component.d.ts +56 -0
- package/types/tooltip/src/tooltip.props.d.ts +45 -0
- package/src/index.umd.js +0 -1
- /package/{src/style.css → style.css} +0 -0
|
@@ -0,0 +1,457 @@
|
|
|
1
|
+
import { ref as S, watch as R, defineComponent as N, computed as w, createVNode as f, Teleport as K, inject as q, withModifiers as _, withDirectives as G, vModelCheckbox as J, toRefs as Q, reactive as D, provide as U, resolveComponent as W, Fragment as X, mergeProps as Y } from "vue";
|
|
2
|
+
var x = /* @__PURE__ */ ((e) => (e.Text = "text", e.Tag = "tag", e))(x || {}), O = /* @__PURE__ */ ((e) => (e.top = "top", e.bottom = "bottom", e.auto = "auto", e))(O || {});
|
|
3
|
+
const Z = {
|
|
4
|
+
id: { type: String },
|
|
5
|
+
editable: { default: !1, type: Boolean },
|
|
6
|
+
disabled: { default: !1, type: Boolean },
|
|
7
|
+
readonly: { default: !1, type: Boolean },
|
|
8
|
+
maxLength: { type: Number },
|
|
9
|
+
placeholder: { type: String },
|
|
10
|
+
forcePlaceholder: { default: !1, type: Boolean },
|
|
11
|
+
enableClear: { default: !0, type: Boolean },
|
|
12
|
+
enableTitle: { default: !0, type: Boolean },
|
|
13
|
+
viewType: { default: x.Text, type: String },
|
|
14
|
+
mapFields: { type: Object },
|
|
15
|
+
data: { type: Array },
|
|
16
|
+
idField: { default: "id", type: String },
|
|
17
|
+
valueField: { default: "id", type: String },
|
|
18
|
+
textField: { default: "label", type: String },
|
|
19
|
+
multiSelect: { default: !1, type: Boolean },
|
|
20
|
+
remote: { default: null, type: Object },
|
|
21
|
+
maxHeight: { default: 350, type: Number },
|
|
22
|
+
remoteSearch: { default: !1, type: Boolean },
|
|
23
|
+
hidePanelOnClear: { default: !0, type: Boolean },
|
|
24
|
+
separator: { default: ",", type: String },
|
|
25
|
+
displayText: { type: String, default: "" },
|
|
26
|
+
modelValue: { type: [String, Number] },
|
|
27
|
+
dropDownIcon: { type: String, default: '<span class="f-icon f-icon-arrow-60-down"></span>' },
|
|
28
|
+
tabIndex: { type: Number, default: -1 },
|
|
29
|
+
enableSearch: { type: Boolean, default: !1 },
|
|
30
|
+
placement: { type: String, default: O.auto }
|
|
31
|
+
}, E = {
|
|
32
|
+
value: { required: !0, type: [String, Number] },
|
|
33
|
+
name: { required: !0, type: [String, Number] },
|
|
34
|
+
disabled: { default: !1, type: Boolean },
|
|
35
|
+
checked: { default: !1, type: Boolean }
|
|
36
|
+
}, L = {
|
|
37
|
+
isPanelVisible: { type: Boolean, default: !1 },
|
|
38
|
+
position: { type: String, default: O.bottom }
|
|
39
|
+
}, ee = {
|
|
40
|
+
options: {
|
|
41
|
+
type: Array
|
|
42
|
+
}
|
|
43
|
+
}, z = Symbol("fComboList"), A = Symbol("fComboListPanel");
|
|
44
|
+
var j = /* @__PURE__ */ ((e) => (e.clear = "clear", e.update = "update:modelValue", e))(j || {}), H = /* @__PURE__ */ ((e) => (e.panelShow = "panelShow", e.panelHidden = "panelHidden", e))(H || {});
|
|
45
|
+
function le(e, n) {
|
|
46
|
+
const l = S(""), u = S(e.modelValue), t = S(!1), a = S();
|
|
47
|
+
if (R([a], ([i]) => {
|
|
48
|
+
if (e.modelValue) {
|
|
49
|
+
const d = i.find((s) => s[e.valueField] === e.modelValue);
|
|
50
|
+
d && (l.value = d[e.textField]);
|
|
51
|
+
}
|
|
52
|
+
}), e.remote) {
|
|
53
|
+
const { url: i, method: d = "GET", headers: s = {}, body: y = null } = e.remote;
|
|
54
|
+
fetch(i, { method: d, headers: s, body: y }).then((v) => {
|
|
55
|
+
if (v.status === 200)
|
|
56
|
+
return v.json();
|
|
57
|
+
throw new Error(v.statusText);
|
|
58
|
+
}).then((v) => {
|
|
59
|
+
a.value = v;
|
|
60
|
+
}).catch((v) => {
|
|
61
|
+
console.error(v);
|
|
62
|
+
});
|
|
63
|
+
} else
|
|
64
|
+
a.value = e.data;
|
|
65
|
+
function o(i) {
|
|
66
|
+
u.value && (u.value = i.value), l.value = i.name, n.emit("update:modelValue", i.value);
|
|
67
|
+
}
|
|
68
|
+
return {
|
|
69
|
+
displayText: l,
|
|
70
|
+
modelValue: u,
|
|
71
|
+
isPanelVisible: t,
|
|
72
|
+
dataSource: a,
|
|
73
|
+
onValueChange: o
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
function te(e) {
|
|
77
|
+
const { isPanelVisible: n, context: l, modelValue: u, props: t } = e, a = (p) => {
|
|
78
|
+
n.value !== !1 && (n.value = !1);
|
|
79
|
+
}, o = (p) => {
|
|
80
|
+
n.value !== !1 && (n.value = !1);
|
|
81
|
+
};
|
|
82
|
+
R([n], ([p]) => {
|
|
83
|
+
p ? (window.addEventListener("resize", a), window.addEventListener("scroll", o)) : (window.removeEventListener("resize", a), window.removeEventListener("scroll", o));
|
|
84
|
+
});
|
|
85
|
+
function i(p) {
|
|
86
|
+
u.value = "", t.hidePanelOnClear && (n.value = !1), l.emit(j.update, ""), l.emit(j.clear);
|
|
87
|
+
}
|
|
88
|
+
function d(p) {
|
|
89
|
+
n.value = !n.value;
|
|
90
|
+
}
|
|
91
|
+
function s(p) {
|
|
92
|
+
n.value = !1;
|
|
93
|
+
}
|
|
94
|
+
function y(p) {
|
|
95
|
+
t.editable === !1 && (n.value = !0);
|
|
96
|
+
}
|
|
97
|
+
return {
|
|
98
|
+
onClear: i,
|
|
99
|
+
onClick: y,
|
|
100
|
+
onButtonClick: d,
|
|
101
|
+
onPanelHidden: s
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
const ae = {
|
|
105
|
+
popupContentPosition: { type: Object, default: { left: 0, top: 0 } }
|
|
106
|
+
}, ne = N({
|
|
107
|
+
name: "FOverlay",
|
|
108
|
+
props: ae,
|
|
109
|
+
emits: ["click"],
|
|
110
|
+
setup(e, n) {
|
|
111
|
+
const l = S(e.popupContentPosition);
|
|
112
|
+
function u(a) {
|
|
113
|
+
n.emit("click"), a.preventDefault(), a.stopPropagation();
|
|
114
|
+
}
|
|
115
|
+
const t = w(() => ({
|
|
116
|
+
position: "relative",
|
|
117
|
+
left: `${l.value.left}px`,
|
|
118
|
+
top: `${l.value.top}px`
|
|
119
|
+
}));
|
|
120
|
+
return () => f(K, {
|
|
121
|
+
to: "body"
|
|
122
|
+
}, {
|
|
123
|
+
default: () => {
|
|
124
|
+
var a, o;
|
|
125
|
+
return [f("div", {
|
|
126
|
+
class: "overlay-container",
|
|
127
|
+
style: "pointer-events: auto;",
|
|
128
|
+
onClick: (i) => u(i)
|
|
129
|
+
}, [f("div", {
|
|
130
|
+
style: t.value
|
|
131
|
+
}, [(o = (a = n.slots).default) == null ? void 0 : o.call(a)])])];
|
|
132
|
+
}
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
});
|
|
136
|
+
function ue() {
|
|
137
|
+
const e = q(z, null);
|
|
138
|
+
return {
|
|
139
|
+
idField: e == null ? void 0 : e.comboListProps.idField,
|
|
140
|
+
valueField: e == null ? void 0 : e.comboListProps.valueField,
|
|
141
|
+
textField: e == null ? void 0 : e.comboListProps.textField
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
function oe(e, n) {
|
|
145
|
+
const l = q(z, null), u = q(A, null), t = S(l == null ? void 0 : l.dataSource), a = (l == null ? void 0 : l.comboListProps.valueField) || "id", o = (l == null ? void 0 : l.comboListProps.textField) || "label", i = (l == null ? void 0 : l.comboListProps.separator) || ",", d = w(() => {
|
|
146
|
+
var B;
|
|
147
|
+
return l != null && l.modelValue ? e.value !== void 0 && ((B = l == null ? void 0 : l.modelValue) == null ? void 0 : B.toString().split(i).includes(e.value.toString())) : !1;
|
|
148
|
+
}), s = w(() => (l == null ? void 0 : l.comboListProps.multiSelect) || !1), y = w(() => e.name || e.value), p = l == null ? void 0 : l.defaultOptionSlot, v = (B) => {
|
|
149
|
+
var c, r;
|
|
150
|
+
if (!e.disabled && e.value !== void 0)
|
|
151
|
+
if (s.value) {
|
|
152
|
+
const h = (l == null ? void 0 : l.modelValue) || null, m = (h == null ? void 0 : h.toString().split(i)) || [], b = m == null ? void 0 : m.indexOf(e.value.toString());
|
|
153
|
+
b !== -1 ? m.splice(b, 1) : m.push(e.value.toString());
|
|
154
|
+
const g = (c = t.value) == null ? void 0 : c.filter((F) => F[a] && m.includes(F[a].toString())), P = g == null ? void 0 : g.map((F) => F[a]).join(i), V = g == null ? void 0 : g.map((F) => F[o]).join(i);
|
|
155
|
+
l == null || l.onValueChange({
|
|
156
|
+
value: P,
|
|
157
|
+
name: V
|
|
158
|
+
});
|
|
159
|
+
} else
|
|
160
|
+
l == null || l.onValueChange({
|
|
161
|
+
value: e.value,
|
|
162
|
+
name: e.name
|
|
163
|
+
}), (r = u == null ? void 0 : u.onPanelItemClick) == null || r.call(u, B);
|
|
164
|
+
}, k = w(() => s.value ? d.value : (l == null ? void 0 : l.modelValue) === e.value), C = w(() => ({
|
|
165
|
+
active: k.value,
|
|
166
|
+
"list-group-item": !0,
|
|
167
|
+
"list-group-item-action": !0
|
|
168
|
+
})), T = w(() => ({
|
|
169
|
+
cursor: e.disabled ? "not-allowed" : "default"
|
|
170
|
+
}));
|
|
171
|
+
return {
|
|
172
|
+
name: y,
|
|
173
|
+
optionClass: C,
|
|
174
|
+
isChecked: d,
|
|
175
|
+
rowStyle: T,
|
|
176
|
+
multiSelect: s,
|
|
177
|
+
onOptionClick: v,
|
|
178
|
+
defaultOptionSlot: p
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
const ie = N({
|
|
182
|
+
name: "FOption",
|
|
183
|
+
props: E,
|
|
184
|
+
emits: [],
|
|
185
|
+
setup(e, n) {
|
|
186
|
+
const {
|
|
187
|
+
name: l,
|
|
188
|
+
optionClass: u,
|
|
189
|
+
rowStyle: t,
|
|
190
|
+
multiSelect: a,
|
|
191
|
+
onOptionClick: o,
|
|
192
|
+
isChecked: i,
|
|
193
|
+
defaultOptionSlot: d
|
|
194
|
+
} = oe(e);
|
|
195
|
+
return () => f("li", {
|
|
196
|
+
style: t.value,
|
|
197
|
+
class: u.value,
|
|
198
|
+
onClick: _(o, ["prevent", "stop"])
|
|
199
|
+
}, [a.value && f("div", {
|
|
200
|
+
class: "custom-control custom-checkbox custom-control-inline",
|
|
201
|
+
style: "margin:0;padding-right:0;float:none;vertical-align: top;"
|
|
202
|
+
}, [G(f("input", {
|
|
203
|
+
class: "custom-control-input",
|
|
204
|
+
type: "checkbox",
|
|
205
|
+
title: "custom-input",
|
|
206
|
+
disabled: e.disabled,
|
|
207
|
+
"onUpdate:modelValue": (s) => i.value = s
|
|
208
|
+
}, null), [[J, i.value]]), f("label", {
|
|
209
|
+
class: "custom-control-label"
|
|
210
|
+
}, null)]), f("span", {
|
|
211
|
+
class: "f-datalist-item-text"
|
|
212
|
+
}, [d ? d({
|
|
213
|
+
name: l.value
|
|
214
|
+
}) : l.value])]);
|
|
215
|
+
}
|
|
216
|
+
}), re = N({
|
|
217
|
+
name: "FOptions",
|
|
218
|
+
props: ee,
|
|
219
|
+
emits: [],
|
|
220
|
+
setup(e, n) {
|
|
221
|
+
const {
|
|
222
|
+
valueField: l = "id",
|
|
223
|
+
textField: u = "label"
|
|
224
|
+
} = ue();
|
|
225
|
+
return () => {
|
|
226
|
+
var t;
|
|
227
|
+
return f("ul", {
|
|
228
|
+
class: "list-group list-group-flush"
|
|
229
|
+
}, [(t = e == null ? void 0 : e.options) == null ? void 0 : t.map((a) => f(ie, {
|
|
230
|
+
value: a[l],
|
|
231
|
+
name: a[u],
|
|
232
|
+
disabled: a.disabled
|
|
233
|
+
}, null))]);
|
|
234
|
+
};
|
|
235
|
+
}
|
|
236
|
+
});
|
|
237
|
+
function de(e) {
|
|
238
|
+
const { isPanelVisible: n, panelRef: l, context: u } = e, t = q(z, null), a = S((t == null ? void 0 : t.comboListProps.maxHeight) || 350), o = (t == null ? void 0 : t.comboListProps.valueField) || "id", i = (t == null ? void 0 : t.comboListProps.textField) || "label", d = (t == null ? void 0 : t.comboListProps.placement) || O.bottom, s = S(t == null ? void 0 : t.dataSource), y = S(t == null ? void 0 : t.dataSource), p = S(""), v = w(() => (t == null ? void 0 : t.comboListProps.enableSearch) || !1), k = w(() => ({
|
|
239
|
+
"z-index": 99999,
|
|
240
|
+
position: "absolute",
|
|
241
|
+
background: "#fff",
|
|
242
|
+
border: "solid 1px #ededed"
|
|
243
|
+
})), C = w(() => ({
|
|
244
|
+
"max-height": v.value ? a.value - 36 + "px" : a.value + "px",
|
|
245
|
+
overflow: "auto",
|
|
246
|
+
border: "none"
|
|
247
|
+
})), T = w(() => ({
|
|
248
|
+
comboPanel: !0,
|
|
249
|
+
"f-area-hide": !n.value,
|
|
250
|
+
"f-area-show": n.value
|
|
251
|
+
})), B = (c, r, h = O.bottom) => {
|
|
252
|
+
var F;
|
|
253
|
+
const m = ((F = c == null ? void 0 : c.getBoundingClientRect()) == null ? void 0 : F.height) || 350, b = r.bottom || 0, g = document.body.offsetHeight, P = (r == null ? void 0 : r.top) || 0, V = (r == null ? void 0 : r.height) || 0;
|
|
254
|
+
if (c.style.left = (r == null ? void 0 : r.left) + "px", c.style.width = (r == null ? void 0 : r.width) + "px", h === O.bottom || h === O.auto) {
|
|
255
|
+
c.style.top = P + V + "px";
|
|
256
|
+
const I = g - b, $ = m <= I ? m : I;
|
|
257
|
+
a.value = $;
|
|
258
|
+
} else if (h === O.top) {
|
|
259
|
+
const I = P, $ = m <= I ? m : I;
|
|
260
|
+
c.style.top = P - $ + "px", a.value = $;
|
|
261
|
+
}
|
|
262
|
+
};
|
|
263
|
+
return R([l, n], ([c, r]) => {
|
|
264
|
+
var h, m;
|
|
265
|
+
if (r && c) {
|
|
266
|
+
const b = t == null ? void 0 : t.comboListRef, g = (m = (h = b == null ? void 0 : b.$el) == null ? void 0 : h.parentNode) == null ? void 0 : m.querySelector(".input-group");
|
|
267
|
+
if (v.value) {
|
|
268
|
+
const V = c.querySelector("input");
|
|
269
|
+
V && V.focus();
|
|
270
|
+
}
|
|
271
|
+
const P = g == null ? void 0 : g.getBoundingClientRect();
|
|
272
|
+
B(c, P, d), u.emit(H.panelShow);
|
|
273
|
+
}
|
|
274
|
+
}), R([p], ([c]) => {
|
|
275
|
+
ce(() => {
|
|
276
|
+
var r;
|
|
277
|
+
if (!c)
|
|
278
|
+
return s.value = y.value;
|
|
279
|
+
s.value = (r = y == null ? void 0 : y.value) == null ? void 0 : r.filter(
|
|
280
|
+
(h) => {
|
|
281
|
+
var m, b;
|
|
282
|
+
return ((m = h[o]) == null ? void 0 : m.startsWith(c)) || h[o].toString().startsWith(c) || ((b = h[i]) == null ? void 0 : b.startsWith(c));
|
|
283
|
+
}
|
|
284
|
+
);
|
|
285
|
+
}, 500)();
|
|
286
|
+
}), {
|
|
287
|
+
panelStyle: k,
|
|
288
|
+
panelClass: T,
|
|
289
|
+
cardStyle: C,
|
|
290
|
+
enableSearch: v,
|
|
291
|
+
keyword: p,
|
|
292
|
+
items: s
|
|
293
|
+
};
|
|
294
|
+
}
|
|
295
|
+
function se(e) {
|
|
296
|
+
const { context: n } = e;
|
|
297
|
+
function l(o) {
|
|
298
|
+
n.emit(H.panelHidden);
|
|
299
|
+
}
|
|
300
|
+
function u(o) {
|
|
301
|
+
n.emit(H.panelHidden);
|
|
302
|
+
}
|
|
303
|
+
function t(o) {
|
|
304
|
+
}
|
|
305
|
+
function a(o) {
|
|
306
|
+
}
|
|
307
|
+
return {
|
|
308
|
+
onPanelContainerClick: l,
|
|
309
|
+
onPanelItemClick: u,
|
|
310
|
+
onSearchClick: t,
|
|
311
|
+
onPanelClick: a
|
|
312
|
+
};
|
|
313
|
+
}
|
|
314
|
+
function ce(e, n = 300) {
|
|
315
|
+
let l;
|
|
316
|
+
return (...u) => {
|
|
317
|
+
clearTimeout(l), l = window.setTimeout(() => {
|
|
318
|
+
e(u);
|
|
319
|
+
}, n);
|
|
320
|
+
};
|
|
321
|
+
}
|
|
322
|
+
const fe = N({
|
|
323
|
+
name: "FPanel",
|
|
324
|
+
props: L,
|
|
325
|
+
emits: [H.panelHidden, H.panelShow],
|
|
326
|
+
setup(e, n) {
|
|
327
|
+
const l = S(), {
|
|
328
|
+
isPanelVisible: u
|
|
329
|
+
} = Q(e), {
|
|
330
|
+
panelStyle: t,
|
|
331
|
+
panelClass: a,
|
|
332
|
+
cardStyle: o,
|
|
333
|
+
enableSearch: i,
|
|
334
|
+
keyword: d,
|
|
335
|
+
items: s
|
|
336
|
+
} = de({
|
|
337
|
+
isPanelVisible: u,
|
|
338
|
+
props: e,
|
|
339
|
+
panelRef: l,
|
|
340
|
+
context: n
|
|
341
|
+
}), {
|
|
342
|
+
onPanelContainerClick: y,
|
|
343
|
+
onPanelItemClick: p,
|
|
344
|
+
onSearchClick: v,
|
|
345
|
+
onPanelClick: k
|
|
346
|
+
} = se({
|
|
347
|
+
panelRef: l,
|
|
348
|
+
isPanelVisible: u,
|
|
349
|
+
context: n
|
|
350
|
+
}), C = D({
|
|
351
|
+
onPanelItemClick: p
|
|
352
|
+
});
|
|
353
|
+
return U(A, C), () => u.value && f(ne, {
|
|
354
|
+
onClick: y
|
|
355
|
+
}, {
|
|
356
|
+
default: () => [f("div", {
|
|
357
|
+
class: a.value,
|
|
358
|
+
ref: l,
|
|
359
|
+
style: t.value,
|
|
360
|
+
onClick: _(k, ["prevent", "stop"])
|
|
361
|
+
}, [i.value && f(W("f-button-edit"), {
|
|
362
|
+
enableClear: !0,
|
|
363
|
+
style: "padding:5px 10px",
|
|
364
|
+
buttonContent: "<i class='f-icon f-icon-search'></i>",
|
|
365
|
+
modelValue: d.value,
|
|
366
|
+
"onUpdate:modelValue": (T) => d.value = T,
|
|
367
|
+
onClickButton: v
|
|
368
|
+
}, null), f("div", {
|
|
369
|
+
style: "position: relative;",
|
|
370
|
+
class: "f-datalist"
|
|
371
|
+
}, [f("div", {
|
|
372
|
+
class: "card",
|
|
373
|
+
style: o.value
|
|
374
|
+
}, [f(re, {
|
|
375
|
+
options: s.value
|
|
376
|
+
}, null)])])])]
|
|
377
|
+
});
|
|
378
|
+
}
|
|
379
|
+
}), M = N({
|
|
380
|
+
name: "FComboList",
|
|
381
|
+
props: Z,
|
|
382
|
+
emits: [j.clear, j.update],
|
|
383
|
+
setup(e, n) {
|
|
384
|
+
const l = S(), {
|
|
385
|
+
onValueChange: u,
|
|
386
|
+
displayText: t,
|
|
387
|
+
modelValue: a,
|
|
388
|
+
isPanelVisible: o,
|
|
389
|
+
dataSource: i
|
|
390
|
+
} = le(e, n), {
|
|
391
|
+
onClear: d,
|
|
392
|
+
onButtonClick: s,
|
|
393
|
+
onPanelHidden: y,
|
|
394
|
+
onClick: p
|
|
395
|
+
} = te({
|
|
396
|
+
props: e,
|
|
397
|
+
context: n,
|
|
398
|
+
isPanelVisible: o,
|
|
399
|
+
modelValue: a
|
|
400
|
+
}), v = D({
|
|
401
|
+
comboListRef: l,
|
|
402
|
+
isPanelVisible: o,
|
|
403
|
+
comboListProps: e,
|
|
404
|
+
onValueChange: u,
|
|
405
|
+
modelValue: a,
|
|
406
|
+
dataSource: i,
|
|
407
|
+
defaultOptionSlot: n.slots.default
|
|
408
|
+
});
|
|
409
|
+
return U(z, v), () => f(X, null, [f(W("f-button-edit"), Y({
|
|
410
|
+
ref: l,
|
|
411
|
+
id: e.id,
|
|
412
|
+
class: {
|
|
413
|
+
active: o
|
|
414
|
+
}
|
|
415
|
+
}, n.attrs, {
|
|
416
|
+
disable: e.disabled,
|
|
417
|
+
readonly: e.readonly,
|
|
418
|
+
forcePlaceholder: e.forcePlaceholder,
|
|
419
|
+
editable: e.editable,
|
|
420
|
+
buttonContent: e.dropDownIcon,
|
|
421
|
+
placeholder: e.placeholder,
|
|
422
|
+
enableClear: e.enableClear,
|
|
423
|
+
maxLength: e.maxLength,
|
|
424
|
+
tabIndex: e.tabIndex,
|
|
425
|
+
enableTitle: e.enableTitle,
|
|
426
|
+
style: "display:block",
|
|
427
|
+
modelValue: t.value,
|
|
428
|
+
"onUpdate:modelValue": (k) => t.value = k,
|
|
429
|
+
onClear: d,
|
|
430
|
+
onClick: p,
|
|
431
|
+
onClickButton: s
|
|
432
|
+
}), null), o.value && f(fe, {
|
|
433
|
+
isPanelVisible: o.value,
|
|
434
|
+
onPanelHidden: y
|
|
435
|
+
}, null)]);
|
|
436
|
+
}
|
|
437
|
+
}), ve = {
|
|
438
|
+
install(e) {
|
|
439
|
+
e.component(M.name, M);
|
|
440
|
+
}
|
|
441
|
+
};
|
|
442
|
+
export {
|
|
443
|
+
M as FComboList,
|
|
444
|
+
O as Placement,
|
|
445
|
+
x as ViewType,
|
|
446
|
+
Z as comboListProps,
|
|
447
|
+
ce as debounce,
|
|
448
|
+
ve as default,
|
|
449
|
+
E as optionProps,
|
|
450
|
+
ee as optionsProps,
|
|
451
|
+
L as panelProps,
|
|
452
|
+
le as useComboList,
|
|
453
|
+
te as useComboListEvent,
|
|
454
|
+
oe as useOption,
|
|
455
|
+
de as usePanel,
|
|
456
|
+
se as usePanelEvent
|
|
457
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(function(c,t){typeof exports=="object"&&typeof module<"u"?t(exports,require("vue")):typeof define=="function"&&define.amd?define(["exports","vue"],t):(c=typeof globalThis<"u"?globalThis:c||self,t(c["combo-list"]={},c.Vue))})(this,function(c,t){"use strict";var $=(e=>(e.Text="text",e.Tag="tag",e))($||{}),V=(e=>(e.top="top",e.bottom="bottom",e.auto="auto",e))(V||{});const M={id:{type:String},editable:{default:!1,type:Boolean},disabled:{default:!1,type:Boolean},readonly:{default:!1,type:Boolean},maxLength:{type:Number},placeholder:{type:String},forcePlaceholder:{default:!1,type:Boolean},enableClear:{default:!0,type:Boolean},enableTitle:{default:!0,type:Boolean},viewType:{default:$.Text,type:String},mapFields:{type:Object},data:{type:Array},idField:{default:"id",type:String},valueField:{default:"id",type:String},textField:{default:"label",type:String},multiSelect:{default:!1,type:Boolean},remote:{default:null,type:Object},maxHeight:{default:350,type:Number},remoteSearch:{default:!1,type:Boolean},hidePanelOnClear:{default:!0,type:Boolean},separator:{default:",",type:String},displayText:{type:String,default:""},modelValue:{type:[String,Number]},dropDownIcon:{type:String,default:'<span class="f-icon f-icon-arrow-60-down"></span>'},tabIndex:{type:Number,default:-1},enableSearch:{type:Boolean,default:!1},placement:{type:String,default:V.auto}},R={value:{required:!0,type:[String,Number]},name:{required:!0,type:[String,Number]},disabled:{default:!1,type:Boolean},checked:{default:!1,type:Boolean}},_={isPanelVisible:{type:Boolean,default:!1},position:{type:String,default:V.bottom}},z={options:{type:Array}},j=Symbol("fComboList"),D=Symbol("fComboListPanel");var N=(e=>(e.clear="clear",e.update="update:modelValue",e))(N||{}),k=(e=>(e.panelShow="panelShow",e.panelHidden="panelHidden",e))(k||{});function U(e,o){const l=t.ref(""),i=t.ref(e.modelValue),n=t.ref(!1),a=t.ref();if(t.watch([a],([r])=>{if(e.modelValue){const s=r.find(f=>f[e.valueField]===e.modelValue);s&&(l.value=s[e.textField])}}),e.remote){const{url:r,method:s="GET",headers:f={},body:b=null}=e.remote;fetch(r,{method:s,headers:f,body:b}).then(y=>{if(y.status===200)return y.json();throw new Error(y.statusText)}).then(y=>{a.value=y}).catch(y=>{console.error(y)})}else a.value=e.data;function d(r){i.value&&(i.value=r.value),l.value=r.name,o.emit("update:modelValue",r.value)}return{displayText:l,modelValue:i,isPanelVisible:n,dataSource:a,onValueChange:d}}function W(e){const{isPanelVisible:o,context:l,modelValue:i,props:n}=e,a=m=>{o.value!==!1&&(o.value=!1)},d=m=>{o.value!==!1&&(o.value=!1)};t.watch([o],([m])=>{m?(window.addEventListener("resize",a),window.addEventListener("scroll",d)):(window.removeEventListener("resize",a),window.removeEventListener("scroll",d))});function r(m){i.value="",n.hidePanelOnClear&&(o.value=!1),l.emit(N.update,""),l.emit(N.clear)}function s(m){o.value=!o.value}function f(m){o.value=!1}function b(m){n.editable===!1&&(o.value=!0)}return{onClear:r,onClick:b,onButtonClick:s,onPanelHidden:f}}const Q={popupContentPosition:{type:Object,default:{left:0,top:0}}},X=t.defineComponent({name:"FOverlay",props:Q,emits:["click"],setup(e,o){const l=t.ref(e.popupContentPosition);function i(a){o.emit("click"),a.preventDefault(),a.stopPropagation()}const n=t.computed(()=>({position:"relative",left:`${l.value.left}px`,top:`${l.value.top}px`}));return()=>t.createVNode(t.Teleport,{to:"body"},{default:()=>{var a,d;return[t.createVNode("div",{class:"overlay-container",style:"pointer-events: auto;",onClick:r=>i(r)},[t.createVNode("div",{style:n.value},[(d=(a=o.slots).default)==null?void 0:d.call(a)])])]}})}});function Y(){const e=t.inject(j,null);return{idField:e==null?void 0:e.comboListProps.idField,valueField:e==null?void 0:e.comboListProps.valueField,textField:e==null?void 0:e.comboListProps.textField}}function A(e,o){const l=t.inject(j,null),i=t.inject(D,null),n=t.ref(l==null?void 0:l.dataSource),a=(l==null?void 0:l.comboListProps.valueField)||"id",d=(l==null?void 0:l.comboListProps.textField)||"label",r=(l==null?void 0:l.comboListProps.separator)||",",s=t.computed(()=>{var O;return l!=null&&l.modelValue?e.value!==void 0&&((O=l==null?void 0:l.modelValue)==null?void 0:O.toString().split(r).includes(e.value.toString())):!1}),f=t.computed(()=>(l==null?void 0:l.comboListProps.multiSelect)||!1),b=t.computed(()=>e.name||e.value),m=l==null?void 0:l.defaultOptionSlot,y=O=>{var p,u;if(!e.disabled&&e.value!==void 0)if(f.value){const g=(l==null?void 0:l.modelValue)||null,h=(g==null?void 0:g.toString().split(r))||[],v=h==null?void 0:h.indexOf(e.value.toString());v!==-1?h.splice(v,1):h.push(e.value.toString());const S=(p=n.value)==null?void 0:p.filter(w=>w[a]&&h.includes(w[a].toString())),F=S==null?void 0:S.map(w=>w[a]).join(r),C=S==null?void 0:S.map(w=>w[d]).join(r);l==null||l.onValueChange({value:F,name:C})}else l==null||l.onValueChange({value:e.value,name:e.name}),(u=i==null?void 0:i.onPanelItemClick)==null||u.call(i,O)},P=t.computed(()=>f.value?s.value:(l==null?void 0:l.modelValue)===e.value),B=t.computed(()=>({active:P.value,"list-group-item":!0,"list-group-item-action":!0})),H=t.computed(()=>({cursor:e.disabled?"not-allowed":"default"}));return{name:b,optionClass:B,isChecked:s,rowStyle:H,multiSelect:f,onOptionClick:y,defaultOptionSlot:m}}const Z=t.defineComponent({name:"FOption",props:R,emits:[],setup(e,o){const{name:l,optionClass:i,rowStyle:n,multiSelect:a,onOptionClick:d,isChecked:r,defaultOptionSlot:s}=A(e);return()=>t.createVNode("li",{style:n.value,class:i.value,onClick:t.withModifiers(d,["prevent","stop"])},[a.value&&t.createVNode("div",{class:"custom-control custom-checkbox custom-control-inline",style:"margin:0;padding-right:0;float:none;vertical-align: top;"},[t.withDirectives(t.createVNode("input",{class:"custom-control-input",type:"checkbox",title:"custom-input",disabled:e.disabled,"onUpdate:modelValue":f=>r.value=f},null),[[t.vModelCheckbox,r.value]]),t.createVNode("label",{class:"custom-control-label"},null)]),t.createVNode("span",{class:"f-datalist-item-text"},[s?s({name:l.value}):l.value])])}}),E=t.defineComponent({name:"FOptions",props:z,emits:[],setup(e,o){const{valueField:l="id",textField:i="label"}=Y();return()=>{var n;return t.createVNode("ul",{class:"list-group list-group-flush"},[(n=e==null?void 0:e.options)==null?void 0:n.map(a=>t.createVNode(Z,{value:a[l],name:a[i],disabled:a.disabled},null))])}}});function K(e){const{isPanelVisible:o,panelRef:l,context:i}=e,n=t.inject(j,null),a=t.ref((n==null?void 0:n.comboListProps.maxHeight)||350),d=(n==null?void 0:n.comboListProps.valueField)||"id",r=(n==null?void 0:n.comboListProps.textField)||"label",s=(n==null?void 0:n.comboListProps.placement)||V.bottom,f=t.ref(n==null?void 0:n.dataSource),b=t.ref(n==null?void 0:n.dataSource),m=t.ref(""),y=t.computed(()=>(n==null?void 0:n.comboListProps.enableSearch)||!1),P=t.computed(()=>({"z-index":99999,position:"absolute",background:"#fff",border:"solid 1px #ededed"})),B=t.computed(()=>({"max-height":y.value?a.value-36+"px":a.value+"px",overflow:"auto",border:"none"})),H=t.computed(()=>({comboPanel:!0,"f-area-hide":!o.value,"f-area-show":o.value})),O=(p,u,g=V.bottom)=>{var w;const h=((w=p==null?void 0:p.getBoundingClientRect())==null?void 0:w.height)||350,v=u.bottom||0,S=document.body.offsetHeight,F=(u==null?void 0:u.top)||0,C=(u==null?void 0:u.height)||0;if(p.style.left=(u==null?void 0:u.left)+"px",p.style.width=(u==null?void 0:u.width)+"px",g===V.bottom||g===V.auto){p.style.top=F+C+"px";const T=S-v,I=h<=T?h:T;a.value=I}else if(g===V.top){const T=F,I=h<=T?h:T;p.style.top=F-I+"px",a.value=I}};return t.watch([l,o],([p,u])=>{var g,h;if(u&&p){const v=n==null?void 0:n.comboListRef,S=(h=(g=v==null?void 0:v.$el)==null?void 0:g.parentNode)==null?void 0:h.querySelector(".input-group");if(y.value){const C=p.querySelector("input");C&&C.focus()}const F=S==null?void 0:S.getBoundingClientRect();O(p,F,s),i.emit(k.panelShow)}}),t.watch([m],([p])=>{J(()=>{var u;if(!p)return f.value=b.value;f.value=(u=b==null?void 0:b.value)==null?void 0:u.filter(g=>{var h,v;return((h=g[d])==null?void 0:h.startsWith(p))||g[d].toString().startsWith(p)||((v=g[r])==null?void 0:v.startsWith(p))})},500)()}),{panelStyle:P,panelClass:H,cardStyle:B,enableSearch:y,keyword:m,items:f}}function G(e){const{context:o}=e;function l(d){o.emit(k.panelHidden)}function i(d){o.emit(k.panelHidden)}function n(d){}function a(d){}return{onPanelContainerClick:l,onPanelItemClick:i,onSearchClick:n,onPanelClick:a}}function J(e,o=300){let l;return(...i)=>{clearTimeout(l),l=window.setTimeout(()=>{e(i)},o)}}const x=t.defineComponent({name:"FPanel",props:_,emits:[k.panelHidden,k.panelShow],setup(e,o){const l=t.ref(),{isPanelVisible:i}=t.toRefs(e),{panelStyle:n,panelClass:a,cardStyle:d,enableSearch:r,keyword:s,items:f}=K({isPanelVisible:i,props:e,panelRef:l,context:o}),{onPanelContainerClick:b,onPanelItemClick:m,onSearchClick:y,onPanelClick:P}=G({panelRef:l,isPanelVisible:i,context:o}),B=t.reactive({onPanelItemClick:m});return t.provide(D,B),()=>i.value&&t.createVNode(X,{onClick:b},{default:()=>[t.createVNode("div",{class:a.value,ref:l,style:n.value,onClick:t.withModifiers(P,["prevent","stop"])},[r.value&&t.createVNode(t.resolveComponent("f-button-edit"),{enableClear:!0,style:"padding:5px 10px",buttonContent:"<i class='f-icon f-icon-search'></i>",modelValue:s.value,"onUpdate:modelValue":H=>s.value=H,onClickButton:y},null),t.createVNode("div",{style:"position: relative;",class:"f-datalist"},[t.createVNode("div",{class:"card",style:d.value},[t.createVNode(E,{options:f.value},null)])])])]})}}),q=t.defineComponent({name:"FComboList",props:M,emits:[N.clear,N.update],setup(e,o){const l=t.ref(),{onValueChange:i,displayText:n,modelValue:a,isPanelVisible:d,dataSource:r}=U(e,o),{onClear:s,onButtonClick:f,onPanelHidden:b,onClick:m}=W({props:e,context:o,isPanelVisible:d,modelValue:a}),y=t.reactive({comboListRef:l,isPanelVisible:d,comboListProps:e,onValueChange:i,modelValue:a,dataSource:r,defaultOptionSlot:o.slots.default});return t.provide(j,y),()=>t.createVNode(t.Fragment,null,[t.createVNode(t.resolveComponent("f-button-edit"),t.mergeProps({ref:l,id:e.id,class:{active:d}},o.attrs,{disable:e.disabled,readonly:e.readonly,forcePlaceholder:e.forcePlaceholder,editable:e.editable,buttonContent:e.dropDownIcon,placeholder:e.placeholder,enableClear:e.enableClear,maxLength:e.maxLength,tabIndex:e.tabIndex,enableTitle:e.enableTitle,style:"display:block",modelValue:n.value,"onUpdate:modelValue":P=>n.value=P,onClear:s,onClick:m,onClickButton:f}),null),d.value&&t.createVNode(x,{isPanelVisible:d.value,onPanelHidden:b},null)])}}),L={install(e){e.component(q.name,q)}};c.FComboList=q,c.Placement=V,c.ViewType=$,c.comboListProps=M,c.debounce=J,c.default=L,c.optionProps=R,c.optionsProps=z,c.panelProps=_,c.useComboList=U,c.useComboListEvent=W,c.useOption=A,c.usePanel=K,c.usePanelEvent=G,Object.defineProperties(c,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
|