@dynamicforms/vuetify-inputs
Version:
Visual components for data entry using @dynamicforms/vue-forms
1,496 lines • 59.6 kB
JavaScript
var Qe = Object.defineProperty, Je = Object.defineProperties;
var el = Object.getOwnPropertyDescriptors;
var De = Object.getOwnPropertySymbols;
var ll = Object.prototype.hasOwnProperty, tl = Object.prototype.propertyIsEnumerable;
var ke = (l, e, n) => e in l ? Qe(l, e, { enumerable: !0, configurable: !0, writable: !0, value: n }) : l[e] = n, D = (l, e) => {
for (var n in e || (e = {}))
ll.call(e, n) && ke(l, n, e[n]);
if (De)
for (var n of De(e))
tl.call(e, n) && ke(l, n, e[n]);
return l;
}, R = (l, e) => Je(l, el(e));
var xe = (l, e, n) => ke(l, typeof e != "symbol" ? e + "" : e, n);
var be = (l, e, n) => new Promise((o, s) => {
var a = (m) => {
try {
r(n.next(m));
} catch (v) {
s(v);
}
}, g = (m) => {
try {
r(n.throw(m));
} catch (v) {
s(v);
}
}, r = (m) => m.done ? o(m.value) : Promise.resolve(m.value).then(a, g);
r((n = n.apply(l, e)).next());
});
import * as Ne from "vue";
import { defineComponent as O, mergeModels as Se, useModel as nl, ref as S, watch as ie, onMounted as He, markRaw as ol, onBeforeUnmount as je, createBlock as B, openBlock as y, resolveDynamicComponent as ue, version as al, resolveComponent as $, createElementBlock as U, createCommentVNode as L, createTextVNode as ze, Fragment as Ce, toDisplayString as re, inject as sl, computed as T, renderList as Ke, normalizeClass as pe, unref as t, mergeProps as z, withCtx as h, createSlots as Y, createVNode as C, renderSlot as se, normalizeProps as X, guardReactiveProps as q, createElementVNode as le, withModifiers as rl, mergeDefaults as Z, isRef as de, normalizeStyle as Be, toRefs as Ve, withKeys as Ee, useCssVars as il, nextTick as Ue } from "vue";
import { debounce as ul, isString as ee, isEmpty as me, isObjectLike as dl, isBoolean as Ae, clone as cl, toNumber as Fe, isNaN as Le, isArray as Oe, castArray as Ge, first as We, unionBy as ml } from "lodash-es";
import Te from "vue-ionicon";
import Re, { ValidationErrorRenderContent as vl, DisplayMode as j, Action as pl } from "@dynamicforms/vue-forms";
import fl from "vue-markdown-render";
import { useDisplay as bl } from "vuetify";
import { format as ce, parse as gl } from "date-fns";
import { AccessibilityHelp as hl, Alignment as yl, AutoImage as Vl, AutoLink as _l, Autosave as kl, BalloonToolbar as wl, BlockQuote as Tl, Bold as Cl, CloudServices as Bl, Essentials as Il, GeneralHtmlSupport as $l, Heading as Dl, HorizontalLine as xl, ImageBlock as Nl, ImageCaption as Sl, ImageInline as El, ImageInsertViaUrl as Ul, ImageResize as Al, ImageStyle as Fl, ImageToolbar as Ll, ImageUpload as Ol, Indent as Rl, IndentBlock as Pl, Italic as Ml, Link as Hl, List as jl, Autoformat as zl, MediaEmbed as Kl, Paragraph as Gl, PasteFromMarkdownExperimental as Wl, PasteFromOffice as Xl, SelectAll as ql, Style as Yl, Table as Zl, TableCellProperties as Ql, TableColumnResize as Jl, TableProperties as et, TableToolbar as lt, Undo as tt, TextTransformation as nt, Base64UploadAdapter as ot, ClassicEditor as at } from "ckeditor5";
import { VAutocomplete as st } from "vuetify/components/VAutocomplete";
import { VBtn as rt } from "vuetify/components/VBtn";
import { VCheckbox as it } from "vuetify/components/VCheckbox";
import { VChip as ut } from "vuetify/components/VChip";
import { VCombobox as dt } from "vuetify/components/VCombobox";
import { VColorPicker as ct } from "vuetify/components/VColorPicker";
import { VConfirmEdit as mt } from "vuetify/components/VConfirmEdit";
import { VDatePicker as vt } from "vuetify/components/VDatePicker";
import { VField as pt } from "vuetify/components/VField";
import { VFileInput as ft } from "vuetify/components/VFileInput";
import { VCol as bt, VRow as gt } from "vuetify/components/VGrid";
import { VIcon as ht } from "vuetify/components/VIcon";
import { VImg as yt } from "vuetify/components/VImg";
import { VInput as Vt } from "vuetify/components/VInput";
import { VListItem as _t } from "vuetify/components/VList";
import { VMenu as kt } from "vuetify/components/VMenu";
import { VNumberInput as wt } from "vuetify/components/VNumberInput";
import { VProgressLinear as Tt } from "vuetify/components/VProgressLinear";
import { VSelect as Ct } from "vuetify/components/VSelect";
import { VSwitch as Bt } from "vuetify/components/VSwitch";
import { VTextarea as It } from "vuetify/components/VTextarea";
import { VTextField as $t } from "vuetify/components/VTextField";
import { VTimePicker as Dt } from "vuetify/labs/VTimePicker";
/**
* @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
*/
/**
* @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
*/
new Array(256).fill("").map((l, e) => ("0" + e.toString(16)).slice(-2));
/**
* @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
*/
function xt(l, e) {
const n = l.extraPlugins || [];
return R(D({}, l), {
extraPlugins: [
...n,
...e.filter((o) => !n.includes(o))
]
});
}
/**
* @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
*/
function Xe(l) {
return !!l && /^\d+\.\d+\.\d+/.test(l);
}
/**
* @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
*/
function qe(l) {
return l ? ["nightly", "alpha", "internal", "nightly-", "staging"].some((e) => l.includes(e)) : !1;
}
function Nt(l) {
return Xe(l) || qe(l);
}
/**
* @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
*/
function St(l) {
if (!Xe(l))
throw new Error(`Invalid semantic version: ${l || "<blank>"}.`);
const [e, n, o] = l.split(".");
return {
major: Number.parseInt(e, 10),
minor: Number.parseInt(n, 10),
patch: Number.parseInt(o, 10)
};
}
/**
* @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
*/
function Et(l) {
if (qe(l))
return 3;
const { major: e } = St(l);
switch (!0) {
case e >= 44:
return 3;
case e >= 38:
return 2;
default:
return 1;
}
}
/**
* @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
*/
function Ut() {
const { CKEDITOR_VERSION: l, CKEDITOR: e } = window;
return Nt(l) ? {
source: e ? "cdn" : "npm",
version: l
} : null;
}
/**
* @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
*/
function At() {
const l = Ut();
return l ? Et(l.version) : null;
}
/**
* @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
*/
function Ye(l, e) {
switch (e || (e = At() || void 0), e) {
case 1:
case 2:
return l === void 0;
case 3:
return l === "GPL";
default:
return !1;
}
}
/**
* @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
*/
function Ft(l, e) {
return function(o) {
Ye(o.config.get("licenseKey")) || o.on("collectUsageData", (s, { setUsageData: a }) => {
a(`integration.${l}`, e);
});
};
}
/**
* @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
* For licensing, see LICENSE.md.
*/
const Lt = Ft(
"vue",
{
version: "7.3.0",
frameworkVersion: al
}
);
/**
* @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
* For licensing, see LICENSE.md.
*/
function Ot(l) {
return Ye(l.licenseKey) ? l : xt(l, [
/**
* This part of the code is not executed in open-source implementations using a GPL key.
* It only runs when a specific license key is provided. If you are uncertain whether
* this applies to your installation, please contact our support team.
*/
Lt
]);
}
const we = "Lock from Vue integration (@ckeditor/ckeditor5-vue)", Rt = 300, Pt = /* @__PURE__ */ O({
name: "CKEditor",
__name: "ckeditor",
props: /* @__PURE__ */ Se({
editor: {},
config: { default: () => ({}) },
tagName: { default: "div" },
disabled: { type: Boolean, default: !1 },
disableTwoWayDataBinding: { type: Boolean, default: !1 }
}, {
modelValue: { type: String, default: "" },
modelModifiers: {}
}),
emits: /* @__PURE__ */ Se(["ready", "destroy", "blur", "focus", "input", "update:modelValue"], ["update:modelValue"]),
setup(l, { expose: e, emit: n }) {
const o = nl(l, "modelValue"), s = l, a = n, g = S(), r = S(), m = S();
e({
instance: r,
lastEditorData: m
}), ie(o, (i) => {
r.value && i !== m.value && r.value.data.set(i);
}), ie(() => s.disabled, (i) => {
i ? r.value.enableReadOnlyMode(we) : r.value.disableReadOnlyMode(we);
});
function v() {
const i = window.CKEDITOR_VERSION;
if (!i)
return console.warn('Cannot find the "CKEDITOR_VERSION" in the "window" scope.');
const [p] = i.split(".").map(Number);
p >= 42 || i.startsWith("0.0.0") || console.warn("The <CKEditor> component requires using CKEditor 5 in version 42+ or nightly build.");
}
function _(i) {
const p = ul((f) => {
if (s.disableTwoWayDataBinding)
return;
const b = m.value = i.data.get();
a("update:modelValue", b, f, i), a("input", b, f, i);
}, Rt, { leading: !0 });
i.model.document.on("change:data", p), i.editing.view.document.on("focus", (f) => {
a("focus", f, i);
}), i.editing.view.document.on("blur", (f) => {
a("blur", f, i);
});
}
return v(), He(() => {
const i = Ot(
Object.assign({}, s.config)
);
o.value && (i.initialData = o.value), s.editor.create(g.value, i).then((p) => {
r.value = ol(p), _(p), o.value !== i.initialData && p.data.set(o.value), s.disabled && p.enableReadOnlyMode(we), a("ready", p);
}).catch((p) => {
console.error(p);
});
}), je(() => {
r.value && (r.value.destroy(), r.value = void 0), a("destroy");
}), (i, p) => (y(), B(ue(i.tagName), {
ref_key: "element",
ref: g
}, null, 512));
}
});
/**
* @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
* For licensing, see LICENSE.md.
*/
/* istanbul ignore if -- @preserve */
if (!Ne.version || !Ne.version.startsWith("3."))
throw new Error(
"The CKEditor plugin works only with Vue 3+. For more information, please refer to https://ckeditor.com/docs/ckeditor5/latest/builds/guides/integration/frameworks/vuejs-v3.html"
);
const Mt = {
/**
* Installs the plugin, registering the `<ckeditor>` component.
*
* @param app The application instance.
*/
install(l) {
l.component("Ckeditor", Pt);
}
}, Ht = { class: "label" }, jt = /* @__PURE__ */ O({
__name: "df-label",
props: {
data: {},
label: {}
},
setup(l) {
return (e, n) => {
const o = $("v-icon"), s = $("v-img");
return y(), U("div", Ht, [
e.label.icon ? (y(), U(Ce, { key: 0 }, [
e.label.iconComponent === "v-icon" ? (y(), B(o, {
key: 0,
icon: e.label.icon,
size: "1.25em"
}, null, 8, ["icon"])) : e.label.iconComponent === "v-img" ? (y(), B(s, {
key: 1,
class: "icon",
src: e.label.icon
}, null, 8, ["src"])) : (y(), B(ue(e.label.iconComponent), {
key: 2,
src: e.label.icon
}, null, 8, ["src"]))
], 64)) : L("", !0),
ze(" " + re(e.data ? e.data.label : e.label.text), 1)
]);
};
}
}), oe = (l, e) => {
const n = l.__vccOpts || l;
for (const [o, s] of e)
n[o] = s;
return n;
}, te = /* @__PURE__ */ oe(jt, [["__scopeId", "data-v-0034f29f"]]), Ze = Symbol("vuetifyInputsSettingsKey");
class zt {
constructor(e, n, o = "v-icon") {
this.text = e, this.icon = n, this.iconComponent = o;
}
}
const Q = { enabled: void 0, clearable: !0 };
function K(l, e) {
const n = sl(Ze, {}), o = S(null), s = T({
get() {
return l.control ? l.control.value : l.modelValue === void 0 ? o.value : l.modelValue;
},
set(k) {
l.control && (l.control.value = k), l.modelValue === void 0 && (o.value = k), e("update:modelValue", k);
}
});
if (l.control && !(l.control instanceof Re.FieldBase))
throw new Error("control prop is not a vue-form control instance");
const a = S(!1), g = T(() => l.control ? l.control.valid : !0), r = T(
() => l.control ? l.control.errors : (l.errors || []).map((k) => new vl(k))
), m = T(() => a.value && r.value.length > 0 ? " " : void 0), v = T(() => l.control ? l.control.enabled : l.enabled !== !1), _ = T(
() => l.control ? l.control.visibility : l.visibility || Re.DisplayMode.FULL
), i = T(
() => ee(l.label || "") ? new zt(l.label || "") : l.label
), p = T(() => l.placeholder || ""), f = T(() => l.helpText || ""), b = T(() => l.hint || ""), V = T(() => l.cssClass || "");
return {
value: s,
valid: g,
enabled: v,
errors: r,
visibility: _,
label: i,
touched: a,
vuetifyBindings: T(() => {
var k, w;
return {
name: (k = l.control) == null ? void 0 : k.fieldName,
class: V.value,
density: "default",
variant: (w = n.defaultVariant) != null ? w : "underlined",
label: i.value.text,
messages: m.value,
errorMessages: m.value,
// 'error-count': errors?.value.length || 0,
readonly: !v.value,
disabled: !v.value,
placeholder: p.value,
"persistent-placeholder": !me(p.value),
hint: b.value,
persistentHint: !0,
// we want persistent hint always
hideDetails: "auto",
// we want to hide the hint element when hint isn't there
helpText: f.value
};
})
};
}
const Kt = {
key: 0,
class: "custom-error-display text-error"
}, Gt = { key: 0 }, Wt = { key: 1 }, Xt = /* @__PURE__ */ O({
__name: "messages-widget",
props: {
errors: {},
message: {}
},
setup(l) {
return (e, n) => e.message === " " ? (y(), U("div", Kt, [
(y(!0), U(Ce, null, Ke(e.errors, (o, s) => {
var a;
return y(), U("div", {
key: s,
class: pe({ "first-error": s === 0, "last-error": s === e.errors.length - 1 })
}, [
o.componentName === "template" ? (y(), U("div", Gt, re(o.componentBody), 1)) : o.componentName === "vue-markdown" ? (y(), B(t(fl), {
key: 1,
source: (a = o.componentBindings) == null ? void 0 : a.source
}, null, 8, ["source"])) : (y(), B(ue(o.componentName), z({
key: 2,
ref_for: !0
}, o.componentBindings), {
default: h(() => [
ze(re(o.componentBody), 1)
]),
_: 2
}, 1040))
], 2);
}), 128))
])) : (y(), U("span", Wt, re(e.message), 1));
}
}), ne = /* @__PURE__ */ oe(Xt, [["__scopeId", "data-v-ff7a8b63"]]), qt = { class: "d-flex w-100 style-resetting" }, Yt = /* @__PURE__ */ O({
__name: "input-base",
props: {
control: {},
modelValue: {},
label: {},
errors: {},
placeholder: {},
helpText: {},
hint: {},
enabled: { type: Boolean },
visibility: {},
cssClass: {},
clearable: { type: Boolean },
loading: { type: Boolean }
},
emits: ["update:modelValue", "click:clear", "blur"],
setup(l, { emit: e }) {
const n = l, o = e, { errors: s, label: a, value: g, touched: r, visibility: m, vuetifyBindings: v } = K(n, o), _ = T(() => !!(t(n.clearable) && t(g))), i = S(!1);
function p(f) {
i.value = f, f || (r.value = !0, o("blur"));
}
return (f, b) => {
const V = $("v-field"), k = $("v-input");
return t(m) !== t(j).SUPPRESS ? (y(), B(k, {
key: 0,
name: t(v).name,
hint: t(v).hint,
"persistent-hint": t(v).persistentHint,
"hide-details": t(v).hideDetails,
"error-messages": t(v).errorMessages,
class: pe([
f.cssClass,
{
"d-none": t(m) === t(j).HIDDEN,
invisible: t(m) === t(j).INVISIBLE
}
])
}, Y({
message: h(({ message: w }) => [
C(ne, {
message: w,
errors: t(s)
}, null, 8, ["message", "errors"])
]),
default: h(() => [
C(V, {
variant: t(v).variant,
label: t(v).label,
disabled: t(v).disabled,
clearable: _.value,
"persistent-clear": !0,
dirty: !!t(g),
active: i.value,
loading: f.loading,
"onClick:clear": b[0] || (b[0] = (w) => o("click:clear")),
"onUpdate:focused": b[1] || (b[1] = (w) => p(w))
}, Y({
default: h((w) => [
le("div", qt, [
se(f.$slots, "default", X(q(w)), void 0, !0)
])
]),
loader: h((w) => [
se(f.$slots, "loader", X(q(w)), void 0, !0)
]),
_: 2
}, [
t(a).icon ? {
name: "label",
fn: h((w) => [
C(te, {
data: w,
label: t(a)
}, null, 8, ["data", "label"])
]),
key: "0"
} : void 0,
f.$slots["prepend-inner"] ? {
name: "prepend-inner",
fn: h((w) => [
se(f.$slots, "prepend-inner", X(q(w)), void 0, !0)
]),
key: "1"
} : void 0
]), 1032, ["variant", "label", "disabled", "clearable", "dirty", "active", "loading"])
]),
_: 2
}, [
f.$slots.prepend ? {
name: "prepend",
fn: h((w) => [
se(f.$slots, "prepend", X(q(w)), void 0, !0)
]),
key: "0"
} : void 0
]), 1032, ["name", "hint", "persistent-hint", "hide-details", "error-messages", "class"])) : L("", !0);
};
}
}), Ie = /* @__PURE__ */ oe(Yt, [["__scopeId", "data-v-7ba7207d"]]), ve = {
Yes: "Yes",
No: "No",
Close: "Close"
};
function ro(l) {
Object.keys(ve).forEach((e) => {
ve[e] = l(e);
});
}
var P = /* @__PURE__ */ ((l) => (l[l.BUTTON = 0] = "BUTTON", l[l.TEXT = 1] = "TEXT", l))(P || {});
const Pe = 0;
((l) => {
function e(s) {
return s.toUpperCase() === "BUTTON" ? 0 : s.toUpperCase() === "TEXT" ? 1 : Pe;
}
l.fromString = e;
function n(s) {
const a = typeof s == "number" ? s : l.fromString(s);
return Object.values(l).includes(a) ? a : Pe;
}
l.fromAny = n;
function o(s) {
const a = typeof s == "number" ? s : l.fromString(s);
return Object.values(l).includes(a);
}
l.isDefined = o;
})(P || (P = {}));
Object.freeze(P);
const Me = ["xs", "sm", "md", "lg", "xl"];
class Zt {
constructor(e) {
xe(this, "_value");
this._value = this.cleanBreakpoint(e, !0), e && Me.forEach((n) => {
const o = this.cleanBreakpoint(e[n]);
o && (this._value[n] = o);
});
}
getOptionsForBreakpoint(e) {
const n = this.cleanBreakpoint(this._value), o = Object.keys(n);
for (const s of Me) {
const a = this._value[s];
for (const g of o)
(a == null ? void 0 : a[g]) != null && (n[g] = a[g]);
if (s === e) break;
}
return n;
}
}
function Qt(l) {
return l.xlAndUp.value ? "xl" : l.lgAndUp.value ? "lg" : l.mdAndUp.value ? "md" : l.smAndUp.value ? "sm" : "xs";
}
function Jt() {
const l = bl();
return T(() => Qt(l));
}
class en extends Zt {
// eslint-disable-next-line class-methods-use-this
cleanBreakpoint(e, n = !1) {
if ((!e || !dl(e)) && !n) return null;
const o = {};
return n && (o.renderAs = P.BUTTON, o.showLabel = !0, o.showIcon = !0), e && (e.renderAs != null && (o.renderAs = P.fromAny(e.renderAs)), ee(e.label) && (o.label = e.label), ee(e.icon) && (o.icon = e.icon), Ae(e.showLabel) && (o.showLabel = e.showLabel), Ae(e.showIcon) && (o.showIcon = e.showIcon)), Object.keys(o).length ? o : null;
}
}
class he extends pl {
static create(e) {
return super.create(e);
}
getBreakpointValue(e) {
return T(() => {
const o = new en(this.value).getOptionsForBreakpoint(e.value);
return {
name: o.name,
label: o.showLabel ? o.label : void 0,
icon: o.showIcon ? o.icon : void 0,
renderAs: o.renderAs,
showLabel: ee(o.label) && !me(o.label) ? o.showLabel : !1,
showIcon: ee(o.icon) && !me(o.icon) ? o.showIcon : !1
};
});
}
get name() {
return this.value.name;
}
get label() {
return this.value.showLabel ? this.value.label : void 0;
}
get showLabel() {
return ee(this.value.label) && !me(this.value.label) ? this.value.showLabel : !1;
}
get icon() {
return this.value.showIcon ? this.value.icon : void 0;
}
get showIcon() {
return ee(this.value.icon) && !me(this.value.icon) ? this.value.showIcon : !1;
}
get renderAs() {
return this.value.renderAs;
}
static closeAction(e) {
var o;
const n = R(D({}, e != null ? e : {}), {
// any properties in data should overwrite properties in the constant
value: {
name: "close",
label: ve.Close,
icon: "close-outline",
renderAs: P.BUTTON,
showLabel: !0,
showIcon: !0
}
});
return n.value = D(D({}, n.value), (o = e == null ? void 0 : e.value) != null ? o : {}), he.create(n);
}
static yesAction(e) {
var o;
const n = R(D({}, e != null ? e : {}), {
// any properties in data should overwrite properties in the constant
value: {
name: "yes",
label: ve.Yes,
icon: "thumbs-up-outline",
renderAs: P.BUTTON,
showLabel: !0,
showIcon: !0
}
});
return n.value = D(D({}, n.value), (o = e == null ? void 0 : e.value) != null ? o : {}), he.create(n);
}
static noAction(e) {
var o;
const n = R(D({}, e != null ? e : {}), {
// any properties in data should overwrite properties in the constant
value: {
name: "no",
label: ve.No,
icon: "thumbs-down-outline",
renderAs: P.BUTTON,
showLabel: !0,
showIcon: !0
}
});
return n.value = D(D({}, n.value), (o = e == null ? void 0 : e.value) != null ? o : {}), he.create(n);
}
}
const ln = {
key: 1,
style: { width: ".5rem" }
}, tn = { key: 2 }, nn = /* @__PURE__ */ O({
__name: "df-actions",
props: {
actions: {},
buttonSize: { default: "default" },
showAsGroup: { default: "no" }
},
setup(l) {
const e = l, n = Jt(), o = T(() => t(e.actions)), s = T(() => o.value.map((a) => D({
action: a
}, t(a.getBreakpointValue(n)))));
return (a, g) => {
const r = $("v-btn");
return o.value.length > 0 ? (y(), U("div", {
key: 0,
class: pe(["text-end", {
"button-group": a.showAsGroup === "grouped" || a.showAsGroup === "grouped-no-borders",
"with-border": a.showAsGroup === "grouped"
}])
}, [
(y(!0), U(Ce, null, Ke(s.value, (m, v) => (y(), B(r, {
key: v,
variant: m.renderAs === t(P).BUTTON ? "tonal" : "text",
elevation: 0,
size: a.buttonSize,
onClick: rl((_) => m.action.execute(_), ["stop"])
}, {
default: h(() => [
m.icon ? (y(), B(t(Te), {
key: 0,
class: "action-icon",
name: m.icon
}, null, 8, ["name"])) : L("", !0),
m.icon && m.label ? (y(), U("span", ln)) : L("", !0),
m.label ? (y(), U("span", tn, re(m.label), 1)) : L("", !0)
]),
_: 2
}, 1032, ["variant", "size", "onClick"]))), 128))
], 2)) : L("", !0);
};
}
}), on = /* @__PURE__ */ oe(nn, [["__scopeId", "data-v-7f811834"]]), an = /* @__PURE__ */ O({
__name: "df-checkbox",
props: /* @__PURE__ */ Z({
allowNull: { type: Boolean },
control: {},
modelValue: {},
label: {},
errors: {},
placeholder: {},
helpText: {},
hint: {},
enabled: { type: Boolean },
visibility: {},
cssClass: {},
clearable: { type: Boolean }
}, R(D({}, Q), { allowNull: !1 })),
emits: ["update:modelValue", "click:clear"],
setup(l, { emit: e }) {
const n = l, o = e, { errors: s, label: a, touched: g, value: r, vuetifyBindings: m } = K(n, o), v = T(() => n.allowNull && r.value == null), _ = T({
get() {
return r.value;
},
set() {
}
});
function i() {
const p = cl(r.value);
p === !0 ? r.value = n.allowNull ? null : !1 : r.value = p === !1;
}
return (p, f) => {
const b = $("v-checkbox");
return y(), B(b, z({
modelValue: _.value,
"onUpdate:modelValue": f[0] || (f[0] = (V) => _.value = V)
}, t(m), {
density: "compact",
indeterminate: v.value,
"false-value": !1,
"true-value": !0,
onChange: i,
onBlur: f[1] || (f[1] = (V) => g.value = !0)
}), Y({
message: h(({ message: V }) => [
C(t(ne), {
message: V,
errors: t(s)
}, null, 8, ["message", "errors"])
]),
_: 2
}, [
t(a).icon ? {
name: "label",
fn: h((V) => [
C(t(te), {
data: V,
label: t(a)
}, null, 8, ["data", "label"])
]),
key: "0"
} : void 0
]), 1040, ["modelValue", "indeterminate"]);
};
}
}), sn = /* @__PURE__ */ O({
__name: "df-color",
props: /* @__PURE__ */ Z({
allowNull: { type: Boolean },
control: {},
modelValue: {},
label: {},
errors: {},
placeholder: {},
helpText: {},
hint: {},
enabled: { type: Boolean },
visibility: {},
cssClass: {},
clearable: { type: Boolean }
}, R(D({}, Q), { allowNull: !1 })),
emits: ["update:modelValue", "click:clear"],
setup(l, { emit: e }) {
const n = l, o = e, { errors: s, label: a, touched: g, value: r, vuetifyBindings: m } = K(n, o), v = S(!1), _ = T(() => [
(i) => n.control || !i && n.allowNull || /^#?([a-fA-F0-9]{3}|[a-fA-F0-9]{4}|[a-fA-F0-9]{6}|[a-fA-F0-9]{8})$/.test(i) ? !0 : "Not a valid hex string."
]);
return (i, p) => {
const f = $("v-color-picker"), b = $("v-menu"), V = $("v-text-field");
return y(), B(V, z({
modelValue: t(r),
"onUpdate:modelValue": p[2] || (p[2] = (k) => de(r) ? r.value = k : null)
}, t(m), {
clearable: i.allowNull,
type: "text",
rules: _.value,
onBlur: p[3] || (p[3] = (k) => g.value = !0)
}), Y({
message: h(({ message: k }) => [
C(t(ne), {
message: k,
errors: t(s)
}, null, 8, ["message", "errors"])
]),
"prepend-inner": h(() => [
le("div", {
style: Be([{ width: "24px", height: "24px", "border-radius": "4px", border: "1px solid #ccc" }, { backgroundColor: t(r) }])
}, null, 4)
]),
default: h(() => [
C(b, {
modelValue: v.value,
"onUpdate:modelValue": p[1] || (p[1] = (k) => v.value = k),
"close-on-content-click": !1,
activator: "parent"
}, {
default: h(() => [
C(f, {
modelValue: t(r),
"onUpdate:modelValue": p[0] || (p[0] = (k) => de(r) ? r.value = k : null),
mode: "hexa"
}, null, 8, ["modelValue"])
]),
_: 1
}, 8, ["modelValue"])
]),
_: 2
}, [
t(a).icon ? {
name: "label",
fn: h((k) => [
C(t(te), {
data: k,
label: t(a)
}, null, 8, ["data", "label"])
]),
key: "0"
} : void 0
]), 1040, ["modelValue", "clearable", "rules"]);
};
}
}), rn = { class: "d-flex w-100 pt-5 pl-2 pb-1" }, un = /* @__PURE__ */ O({
__name: "df-datetime",
props: /* @__PURE__ */ Z({
inputType: {},
displayFormatDate: {},
displayFormatTime: {},
control: {},
modelValue: {},
label: {},
errors: {},
placeholder: {},
helpText: {},
hint: {},
enabled: { type: Boolean },
visibility: {},
cssClass: {},
clearable: { type: Boolean }
}, R(D({}, Q), {
inputType: "datetime",
displayFormatDate: "P",
displayFormatTime: "p"
})),
emits: ["update:modelValue", "click:clear"],
setup(l, { emit: e }) {
const n = l, o = e, { touched: s, value: a, vuetifyBindings: g } = K(n, o), { inputType: r, displayFormatDate: m, displayFormatTime: v } = Ve(n), _ = S(""), i = T({
get() {
return t(_) === "date";
},
set(u) {
_.value = u ? "date" : "";
}
}), p = T({
get() {
return t(_) === "time";
},
set(u) {
_.value = u ? "time" : "";
}
}), f = (u) => `${ce(u, "yyyy-MM-dd")}T${ce(u, "HH:mm")}:00`, b = S(null);
function V(u, d) {
if (u == null)
b.value = null;
else if (d === -1)
if (t(r) === "time")
b.value = f(/* @__PURE__ */ new Date()), V(`T${u}`, 1);
else {
const x = f(new Date(u));
V(x, 0), V(x, 1);
}
else {
b.value == null && (b.value = f(/* @__PURE__ */ new Date()));
const x = b.value.split(/[TZ]/g), F = u.split(/[TZ]/g);
x[d] = F[d], b.value = f(/* @__PURE__ */ new Date(`${x[0]}T${x[1].split(".")[0]}`)), t(r) === "date" ? a.value = x[0] : t(r) === "time" ? a.value = x[1] : a.value = t(b) + ce(/* @__PURE__ */ new Date(), "XXX");
}
}
ie(a, (u) => V(u, -1), { immediate: !0 });
const k = T({
get() {
const u = t(b);
if (u == null) return null;
const d = new Date(u);
return Number.isNaN(d.getTime()) ? null : d;
},
set(u) {
V(f(u), 0);
}
}), w = T({
get() {
const u = t(b);
return u == null ? "" : u.split(/[TZ]/g)[1].split(".")[0];
},
set(u) {
V(`T${u}`, 1);
}
}), A = T({
get() {
const u = t(k);
return u == null ? "" : ce(u, t(m));
},
set(u) {
try {
const d = gl(u, t(m), /* @__PURE__ */ new Date());
V(f(d), 0);
} catch (d) {
console.error(d);
}
}
}), E = T({
get() {
const u = t(k);
return u == null ? "" : ce(u, t(v));
},
set(u) {
const d = u.match(/(\d+):(\d+)\s?([a-zA-Z]+)?/);
if (d == null) return;
let x = Fe(d[1]);
const F = Fe(d[2]);
Le(x) || Le(F) || (d[3] && d[3].toLowerCase() === "pm" && x < 13 && (x += 12), V(`T${x.toString().padStart(2, "0")}:${F.toString().padStart(2, "0")}:00`, 1));
}
});
return (u, d) => {
const x = $("v-date-picker"), F = $("v-confirm-edit"), G = $("v-menu"), W = $("v-text-field"), fe = $("v-time-picker");
return y(), B(t(Ie), z(n, {
clearable: u.clearable,
"onClick:clear": d[14] || (d[14] = (M) => a.value = null),
onBlur: d[15] || (d[15] = (M) => s.value = !0)
}), {
default: h((M) => [
le("div", rn, [
["date", "datetime"].includes(t(r)) ? (y(), B(W, {
key: 0,
modelValue: A.value,
"onUpdate:modelValue": d[4] || (d[4] = (c) => A.value = c),
style: { "flex-grow": "4" },
density: "compact",
variant: "plain",
clearable: !1,
"hide-details": !0,
readonly: t(g).readonly,
disabled: t(g).disabled,
name: `${t(g).name}-date`,
onClick: d[5] || (d[5] = (c) => _.value = "date"),
onKeydown: d[6] || (d[6] = Ee((c) => _.value = "date", ["space"])),
onFocus: (c) => M.focus(),
onBlur: (c) => M.blur()
}, {
default: h(() => [
C(G, {
modelValue: i.value,
"onUpdate:modelValue": d[3] || (d[3] = (c) => i.value = c),
"close-on-content-click": !1,
activator: "parent"
}, {
default: h(() => [
C(F, {
modelValue: k.value,
"onUpdate:modelValue": d[0] || (d[0] = (c) => k.value = c),
onCancel: d[1] || (d[1] = (c) => _.value = ""),
onSave: d[2] || (d[2] = (c) => _.value = "")
}, {
default: h(({ model: c, actions: I }) => [
C(x, {
modelValue: c.value,
"onUpdate:modelValue": (H) => c.value = H,
"hide-header": !0,
"first-day-of-week": 1,
"show-adjacent-months": !0,
"show-week": !0
}, {
actions: h(() => [
(y(), B(ue(I)))
]),
_: 2
}, 1032, ["modelValue", "onUpdate:modelValue"])
]),
_: 1
}, 8, ["modelValue"])
]),
_: 1
}, 8, ["modelValue"])
]),
_: 2
}, 1032, ["modelValue", "readonly", "disabled", "name", "onFocus", "onBlur"])) : L("", !0),
["time", "datetime"].includes(t(r)) ? (y(), B(W, {
key: 1,
modelValue: E.value,
"onUpdate:modelValue": d[11] || (d[11] = (c) => E.value = c),
style: { "flex-grow": "3" },
density: "compact",
variant: "plain",
clearable: !1,
"hide-details": !0,
readonly: t(g).readonly,
disabled: t(g).disabled,
name: `${t(g).name}-time`,
onClick: d[12] || (d[12] = (c) => _.value = "time"),
onKeydown: d[13] || (d[13] = Ee((c) => _.value = "time", ["space"])),
onFocus: (c) => M.focus(),
onBlur: (c) => M.blur()
}, {
default: h(() => [
C(G, {
modelValue: p.value,
"onUpdate:modelValue": d[10] || (d[10] = (c) => p.value = c),
"close-on-content-click": !1,
activator: "parent"
}, {
default: h(() => [
C(F, {
modelValue: w.value,
"onUpdate:modelValue": d[7] || (d[7] = (c) => w.value = c),
onCancel: d[8] || (d[8] = (c) => _.value = ""),
onSave: d[9] || (d[9] = (c) => _.value = "")
}, {
default: h(({ model: c, actions: I }) => [
C(fe, {
modelValue: c.value,
"onUpdate:modelValue": (H) => c.value = H,
"hide-header": !0,
format: "24hr"
}, {
actions: h(() => [
(y(), B(ue(I)))
]),
_: 2
}, 1032, ["modelValue", "onUpdate:modelValue"])
]),
_: 1
}, 8, ["modelValue"])
]),
_: 1
}, 8, ["modelValue"])
]),
_: 2
}, 1032, ["modelValue", "readonly", "disabled", "name", "onFocus", "onBlur"])) : L("", !0)
])
]),
_: 1
}, 16, ["clearable"]);
};
}
}), dn = {
class: "d-flex w-100 pt-5 pl-2 pb-1",
style: { position: "relative" }
}, cn = /* @__PURE__ */ O({
__name: "df-file",
props: /* @__PURE__ */ Z({
comms: {},
control: {},
modelValue: {},
label: {},
errors: {},
placeholder: {},
helpText: {},
hint: {},
enabled: { type: Boolean },
visibility: {},
cssClass: {},
clearable: { type: Boolean }
}, Q),
emits: ["update:modelValue", "click:clear"],
setup(l, { emit: e }) {
const n = l, o = e, { touched: s, value: a, vuetifyBindings: g } = K(n, o), r = S(null), m = S(null), v = S(0), _ = S(Math.round(Math.random() * 1e3)), i = S(), p = T(() => m.value && v.value < 100), f = T(() => !i.value && a.value ? n.modelValue : "");
function b() {
r.value && window.clearInterval(r.value);
}
function V() {
b(), r.value = window.setInterval(() => {
a.value && n.comms.touch(a.value);
}, 60 * 1e3);
}
je(() => b()), ie(a, (E) => {
E ? V() : b();
});
function k() {
return be(this, null, function* () {
a.value && (yield n.comms.delete(a.value)), a.value = null, v.value = 0, _.value = Math.round(Math.random() * 1e3), m.value = null, i.value = null, b();
});
}
function w(E) {
return be(this, null, function* () {
v.value = -1, m.value = E;
try {
a.value = yield n.comms.upload(
E,
(u, d) => {
v.value = Math.round(u * 100 / d);
}
), v.value = 100, V();
} catch (u) {
throw v.value = 0, m.value = null, _.value = Math.round(Math.random() * 1e3), i.value = null, u;
}
});
}
function A(E) {
E && (Array.isArray(E) ? console.error("Uploading multiple files not supported right now") : w(E));
}
return (E, u) => {
const d = $("v-icon"), x = $("v-progress-linear"), F = $("v-file-input");
return y(), B(t(Ie), z(R(D({}, n), { loading: p.value }), {
clearable: "",
"onClick:clear": k,
onBlur: u[1] || (u[1] = (G) => s.value = !0)
}), {
"prepend-inner": h(() => [
C(d, { icon: "$file" })
]),
loader: h(() => [
m.value && v.value < 100 ? (y(), B(x, {
key: 0,
"model-value": v.value,
indeterminate: v.value === -1
}, null, 8, ["model-value", "indeterminate"])) : L("", !0)
]),
default: h((G) => [
le("div", dn, [
C(F, {
modelValue: i.value,
"onUpdate:modelValue": [
u[0] || (u[0] = (W) => i.value = W),
A
],
label: f.value,
density: "compact",
variant: "plain",
readonly: t(g).readonly,
disabled: t(g).disabled,
name: t(g).name,
"hide-details": !0,
"show-size": !0,
multiple: !1,
style: Be(m.value && v.value < 100 ? "visibility: hidden" : ""),
clearable: !1,
"prepend-icon": "",
onFocus: (W) => G.focus(),
onBlur: (W) => G.blur()
}, null, 8, ["modelValue", "label", "readonly", "disabled", "name", "style", "onFocus", "onBlur"])
])
]),
_: 1
}, 16);
};
}
}), mn = { class: "container" }, vn = /* @__PURE__ */ O({
__name: "df-input",
props: /* @__PURE__ */ Z({
inputType: {},
precision: {},
step: {},
min: {},
max: {},
control: {},
modelValue: {},
label: {},
errors: {},
placeholder: {},
helpText: {},
hint: {},
enabled: { type: Boolean },
visibility: {},
cssClass: {},
clearable: { type: Boolean }
}, R(D({}, Q), {
inputType: "text",
precision: null,
step: void 0,
min: void 0,
max: void 0
})),
emits: ["update:modelValue", "click:clear"],
setup(l, { emit: e }) {
const n = l, o = e, { errors: s, label: a, touched: g, value: r, vuetifyBindings: m } = K(n, o), { inputType: v, max: _, min: i, precision: p, step: f } = Ve(n), b = T(() => v.value === "number"), V = T(() => b.value ? { min: t(i), max: t(_), precision: t(p), step: t(f) } : {});
return (k, w) => {
const A = $("v-text-field"), E = $("v-number-input");
return y(), U("div", mn, [
b.value ? (y(), B(E, z({
key: 1,
modelValue: t(r),
"onUpdate:modelValue": w[2] || (w[2] = (u) => de(r) ? r.value = u : null)
}, D(D({}, t(m)), V.value), {
density: "compact",
"control-variant": "stacked"
}), Y({
message: h(({ message: u }) => [
C(t(ne), {
message: u,
errors: t(s)
}, null, 8, ["message", "errors"])
]),
_: 2
}, [
t(a).icon ? {
name: "label",
fn: h((u) => [
C(t(te), {
data: u,
label: t(a)
}, null, 8, ["data", "label"])
]),
key: "0"
} : void 0
]), 1040, ["modelValue"])) : (y(), B(A, z({
key: 0,
modelValue: t(r),
"onUpdate:modelValue": w[0] || (w[0] = (u) => de(r) ? r.value = u : null)
}, t(m), {
type: t(v),
onBlur: w[1] || (w[1] = (u) => g.value = !0)
}), Y({
message: h(({ message: u }) => [
C(t(ne), {
message: u,
errors: t(s)
}, null, 8, ["message", "errors"])
]),
_: 2
}, [
t(a).icon ? {
name: "label",
fn: h((u) => [
C(t(te), {
data: u,
label: t(a)
}, null, 8, ["data", "label"])
]),
key: "0"
} : void 0
]), 1040, ["modelValue", "type"]))
]);
};
}
}), pn = /* @__PURE__ */ oe(vn, [["__scopeId", "data-v-a3a9a978"]]), fn = { class: "editor-container" }, bn = { class: "editor-container__editor" }, gn = { ref: "editorElement" }, hn = /* @__PURE__ */ O({
__name: "ck-editor-custom",
props: {
modelValue: { default: "" },
minHeight: { default: "7em" },
disabled: { type: Boolean, default: !1 }
},
emits: ["update:modelValue"],
setup(l, { expose: e, emit: n }) {
il((i) => ({
"3d4d5a06": i.minHeight
}));
const o = n, s = S(!1), a = at, v = {
toolbar: {
items: [
"undo",
"redo",
"|",
"selectAll",
"|",
"heading",
"style",
"|",
"bold",
"italic",
"|",
"horizontalLine",
"link",
"mediaEmbed",
"insertTable",
"blockQuote",
"|",
"alignment",
"|",
"bulletedList",
"numberedList",
"outdent",
"indent",
"|",
"accessibilityHelp"
],
shouldNotGroupWhenFull: !1
},
plugins: [
hl,
yl,
Vl,
_l,
kl,
wl,
Tl,
Cl,
Bl,
Il,
$l,
Dl,
xl,
Nl,
Sl,
El,
Ul,
Al,
Fl,
Ll,
Ol,
Rl,
Pl,
Ml,
Hl,
jl,
zl,
Kl,
Gl,
Wl,
Xl,
ql,
Yl,
Zl,
Ql,
Jl,
et,
lt,
tt,
nt,
ot
],
balloonToolbar: ["bold", "italic", "|", "link", "|", "bulletedList", "numberedList"],
heading: {
options: [
{ model: "paragraph", title: "Paragraph", class: "ck-heading_paragraph" },
{ model: "heading1", view: "h1", title: "Heading 1", class: "ck-heading_heading1" },
{ model: "heading2", view: "h2", title: "Heading 2", class: "ck-heading_heading2" },
{ model: "heading3", view: "h3", title: "Heading 3", class: "ck-heading_heading3" },
{ model: "heading4", view: "h4", title: "Heading 4", class: "ck-heading_heading4" },
{ model: "heading5", view: "h5", title: "Heading 5", class: "ck-heading_heading5" },
{ model: "heading6", view: "h6", title: "Heading 6", class: "ck-heading_heading6" }
]
},
htmlSupport: {
allow: [
{ name: /^.*$/, styles: !0, attributes: !0, classes: !0 }
]
},
image: {
toolbar: [
"toggleImageCaption",
"imageTextAlternative",
"|",
"imageStyle:inline",
"imageStyle:wrapText",
"imageStyle:breakText",
"|",
"resizeImage"
]
},
// initialData: '',
link: {
addTargetToExternalLinks: !0,
defaultProtocol: "https://",
decorators: {
toggleDownloadable: {
mode: "manual",
label: "Downloadable",
attributes: { download: "file" }
}
}
},
placeholder: "Type or paste your content here!",
style: {
definitions: [
{ name: "Article category", element: "h3", classes: ["category"] },
{ name: "Title", element: "h2", classes: ["document-title"] },
{ name: "Subtitle", element: "h3", classes: ["document-subtitle"] },
{ name: "Info box", element: "p", classes: ["info-box"] },
{ name: "Side quote", element: "blockquote", classes: ["side-quote"] },
{ name: "Marker", element: "span", classes: ["marker"] },
{ name: "Spoiler", element: "span", classes: ["spoiler"] },
{ name: "Code (dark)", element: "pre", classes: ["fancy-code", "fancy-code-dark"] },
{ name: "Code (bright)", element: "pre", classes: ["fancy-code", "fancy-code-bright"] }
]
},
table: { contentToolbar: ["tableColumn", "tableRow", "mergeTableCells", "tableProperties", "tableCellProperties"] }
};
He(() => {
s.value = !0;
});
const _ = (i) => {
};
return e({ onEditorReady: _ }), (i, p) => {
const f = $("ckeditor");
return y(), U("div", fn, [
le("div", bn, [
le("div", gn, [
s.value ? (y(), B(f, {
key: 0,
"model-value": i.modelValue,
editor: t(a),
config: v,
disabled: i.disabled,
style: Be(`min-height: ${i.minHeight}`),
onReady: _,
"onUpdate:modelValue": p[0] || (p[0] = (b) => o("update:modelValue", b))
}, null, 8, ["model-value", "editor", "disabled", "style"])) : L("", !0)
], 512)
])
]);
};
}
}), yn = /* @__PURE__ */ O({
__name: "df-rtf-editor",
props: /* @__PURE__ */ Z({
minHeight: {},
control: {},
modelValue: {},
label: {},
errors: {},
placeholder: {},
helpText: {},
hint: {},
enabled: { type: Boolean },
visibility: {},
cssClass: {},
clearable: { type: Boolean }
}, R(D({}, Q), { minHeight: void 0 })),
emits: ["update:modelValue", "click:clear"],
setup(l, { emit: e }) {
const n = l, o = e, { value: s, vuetifyBindings: a } = K(n, o);
return (g, r) => (y(), B(t(Ie), X(q(n)), {
default: h((m) => [
C(hn, {
ref: "$editor",
modelValue: t(s),
"onUpdate:modelValue": r[0] || (r[0] = (v) => de(s) ? s.value = v : null),
class: pe({ "mt-8": !!g.label }),
"min-height": g.minHeight,
disabled: t(a).disabled,
onFocusin: (v) => m.focus(),
onFocusout: (v) => m.blur()
}, null, 8, ["modelValue", "class", "min-height", "disabled", "onFocusin", "onFocusout"])
]),
_: 1
}, 16));
}
});
function Vn(l) {
return l.map((e) => ({ value: e.id, title: e.text, icon: e.icon }));
}
function J(l, e) {
var n;
return l == null || Oe(l) && l.length === 0 ? null : e ? Ge(l) : Oe(l) ? (n = We(l)) != null ? n : null : l;
}
function ye(l, e) {
if (e == null) return [];
const n = Ge(e);
return l.filter((o) => n.some((s) => s === o.id));
}
function ge(l, e, n, o, s) {
var g;
const a = J(l, n);
if (a == null) {
e.value = n ? [] : null;
return;
}
if (n)
o ? e.value = a : e.value = ye(s, a).map((r) => r.id);
else if (o)
e.value = a;
else {
const r = We(ye(s, a));
e.value = (g = r == null ? void 0 : r.id) != null ? g : null;
}
}
const _n = {
key: 0,
class: "me-1"
}, kn = /* @__PURE__ */ O({
__name: "df-select",
props: /* @__PURE__ */ Z({
choices: {},
multiple: { type: Boolean },
allowTags: { type: Boolean },
allowNull: { type: Boolean },
fetchChoices: {},
control: {},
modelValue: {},
label: {},
errors: {},
placeholder: {},
helpText: {},
hint: {},
enabled: { type: Boolean },
visibility: {},
cssClass: {},
clearable: { type: Boolean }
}, R(D({}, Q),