@oneb/ui-vue 0.3.31 → 0.4.0
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/dist/ChevronLeftIcon-7505e081.cjs +1 -0
- package/dist/ChevronLeftIcon-bb9adb5b.js +20 -0
- package/dist/ChevronRightIcon-2992cf0d.cjs +1 -0
- package/dist/ChevronRightIcon-b0585768.js +20 -0
- package/dist/ChevronUpIcon-64a673e1.cjs +1 -0
- package/dist/{ChevronRightIcon-4549a26b.js → ChevronUpIcon-c43f27a9.js} +2 -19
- package/dist/InformationCircleIcon-2f6097a0.js +20 -0
- package/dist/InformationCircleIcon-d6b67d5d.cjs +1 -0
- package/dist/MagnifyingGlassIcon-adf871ba.cjs +1 -0
- package/dist/MagnifyingGlassIcon-ca213d3d.js +20 -0
- package/dist/{NoSymbolIcon-e58a9aee.js → NoSymbolIcon-b3470a26.js} +8 -25
- package/dist/{NoSymbolIcon-5d326416.cjs → NoSymbolIcon-e84375bb.cjs} +1 -1
- package/dist/OneDropdownAuto.vue_vue_type_script_setup_true_lang-2c508e8a.js +79 -0
- package/dist/OneDropdownAuto.vue_vue_type_script_setup_true_lang-bf923b04.cjs +1 -0
- package/dist/OneFormInput.vue_vue_type_script_setup_true_lang-b89117e7.js +521 -0
- package/dist/OneFormInput.vue_vue_type_script_setup_true_lang-f6f7cd96.cjs +1 -0
- package/dist/OneHelpMenu-6ec63535.cjs +1 -0
- package/dist/{OneHelpMenu-73817f8a.js → OneHelpMenu-d5182c78.js} +118 -213
- package/dist/OneMarkdown.vue_vue_type_script_setup_true_lang-05266fc3.cjs +1 -0
- package/dist/OneMarkdown.vue_vue_type_script_setup_true_lang-bb2219c7.js +18 -0
- package/dist/OneModal-02a9a173.js +189 -0
- package/dist/OneModal-0e92c039.cjs +1 -0
- package/dist/OneTooltip.vue_vue_type_script_setup_true_lang-c492c128.js +25 -0
- package/dist/OneTooltip.vue_vue_type_script_setup_true_lang-e83a81ea.cjs +1 -0
- package/dist/SpinnerIcon-01be39fe.cjs +1 -0
- package/dist/{SpinnerIcon-74648c98.js → SpinnerIcon-516264ba.js} +5 -6
- package/dist/button/index.cjs +1 -1
- package/dist/button/index.d.ts +1 -1
- package/dist/button/index.js +3 -4
- package/dist/checkbox/checkbox.d.ts +5 -0
- package/dist/checkbox/index.cjs +1 -1
- package/dist/checkbox/index.js +40 -34
- package/dist/chips/OneChips.vue.d.ts +2 -0
- package/dist/chips/chips.d.ts +25 -0
- package/dist/chips/index.cjs +1 -0
- package/dist/chips/index.d.ts +3 -0
- package/dist/chips/index.js +62 -0
- package/dist/clipboard-494e1513.cjs +1 -0
- package/dist/clipboard-733b79a1.js +22 -0
- package/dist/common/OneDetailsList.vue.d.ts +2 -0
- package/dist/common/OneDetailsRow.vue.d.ts +2 -0
- package/dist/common/index.cjs +1 -1
- package/dist/common/index.d.ts +2 -0
- package/dist/common/index.js +68 -16
- package/dist/composables/index.cjs +1 -0
- package/dist/composables/index.d.ts +18 -0
- package/dist/composables/index.js +91 -0
- package/dist/composables/useAsyncMethod.d.ts +17 -0
- package/dist/composables/useAsyncSelect.d.ts +26 -0
- package/dist/composables/useConfirm.d.ts +27 -0
- package/dist/composables/useCursorList.d.ts +42 -0
- package/dist/composables/useDebouncedRef.d.ts +6 -0
- package/dist/composables/useFileUpload.d.ts +21 -0
- package/dist/composables/useFormSubmit.d.ts +23 -0
- package/dist/composables/useIsMobile.d.ts +8 -0
- package/dist/confirm/OneConfirmHost.vue.d.ts +2 -0
- package/dist/confirm/confirm.d.ts +10 -0
- package/dist/confirm/index.cjs +1 -0
- package/dist/confirm/index.d.ts +5 -0
- package/dist/confirm/index.js +59 -0
- package/dist/cursorList/OneCursorList.vue.d.ts +2 -0
- package/dist/cursorList/index.cjs +1 -0
- package/dist/cursorList/index.d.ts +3 -0
- package/dist/cursorList/index.js +78 -0
- package/dist/dataTable/index.cjs +1 -1
- package/dist/dataTable/index.js +256 -301
- package/dist/dateTime/OneDateTime.vue.d.ts +2 -0
- package/dist/dateTime/dateTime.d.ts +43 -0
- package/dist/dateTime/index.cjs +1 -0
- package/dist/dateTime/index.d.ts +3 -0
- package/dist/dateTime/index.js +66 -0
- package/dist/dropdown/index.cjs +1 -1
- package/dist/dropdown/index.js +302 -376
- package/dist/dropdown-5cb64ab7.cjs +1 -0
- package/dist/dropdown-c81fb945.js +101 -0
- package/dist/entityPicker/index.cjs +1 -1
- package/dist/entityPicker/index.js +57 -57
- package/dist/entityPicker/useEntityModal.d.ts +7 -3
- package/dist/errorsPage/OneCrashScreen.vue.d.ts +2 -0
- package/dist/errorsPage/OneErrorHero.vue.d.ts +2 -0
- package/dist/errorsPage/OneNotFoundPage.vue.d.ts +2 -0
- package/dist/errorsPage/OneServerErrorPage.vue.d.ts +2 -0
- package/dist/errorsPage/OneSnakeGame.vue.d.ts +2 -0
- package/dist/errorsPage/createAppErrorHandler.d.ts +24 -0
- package/dist/errorsPage/errorsType.d.ts +5 -0
- package/dist/errorsPage/index.cjs +1 -1
- package/dist/errorsPage/index.d.ts +8 -0
- package/dist/errorsPage/index.js +557 -28
- package/dist/errorsPage/useCrashState.d.ts +10 -0
- package/dist/fileUpload/OneDropzone.vue.d.ts +2 -0
- package/dist/fileUpload/OneFileUpload.vue.d.ts +2 -0
- package/dist/fileUpload/fileUpload.d.ts +17 -0
- package/dist/fileUpload/index.cjs +1 -0
- package/dist/fileUpload/index.d.ts +6 -0
- package/dist/fileUpload/index.js +228 -0
- package/dist/filterBuilder/OneFilterBuilder.vue.d.ts +2 -0
- package/dist/filterBuilder/OneFilterGroup.vue.d.ts +2 -0
- package/dist/filterBuilder/OneFilterRule.vue.d.ts +2 -0
- package/dist/filterBuilder/filterBuilder.d.ts +17 -0
- package/dist/filterBuilder/index.cjs +1 -0
- package/dist/filterBuilder/index.d.ts +5 -0
- package/dist/filterBuilder/index.js +257 -0
- package/dist/form/form.d.ts +1 -1
- package/dist/form/index.cjs +1 -1
- package/dist/form/index.js +66 -574
- package/dist/i18n/index.cjs +1 -1
- package/dist/i18n/index.js +99 -15
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +18 -0
- package/dist/index.js +243 -104
- package/dist/indicators/OneStatCard.vue.d.ts +2 -0
- package/dist/indicators/index.cjs +1 -1
- package/dist/indicators/index.d.ts +1 -0
- package/dist/indicators/index.js +66 -29
- package/dist/infobox/index.cjs +1 -1
- package/dist/infobox/index.js +4 -3
- package/dist/label/index.cjs +1 -1
- package/dist/label/index.js +5 -5
- package/dist/layout/OneAuthLayout.vue.d.ts +2 -0
- package/dist/layout/OneBackButton.vue.d.ts +2 -0
- package/dist/layout/OneBreadcrumbs.vue.d.ts +2 -0
- package/dist/layout/OneEmptyLayout.vue.d.ts +6 -0
- package/dist/layout/OneGridLayout.vue.d.ts +2 -0
- package/dist/layout/index.cjs +1 -1
- package/dist/layout/index.d.ts +6 -1
- package/dist/layout/index.js +1057 -765
- package/dist/layout/layout.d.ts +11 -0
- package/dist/modal/OneModalHost.vue.d.ts +2 -0
- package/dist/modal/index.cjs +1 -1
- package/dist/modal/index.d.ts +3 -0
- package/dist/modal/index.js +84 -27
- package/dist/modal/modal.d.ts +9 -0
- package/dist/modal/useModalStack.d.ts +20 -0
- package/dist/notifications/OneNotificationItem.vue.d.ts +2 -0
- package/dist/notifications/OneNotificationsBell.vue.d.ts +2 -0
- package/dist/notifications/OneNotificationsPanel.vue.d.ts +2 -0
- package/dist/notifications/index.cjs +1 -0
- package/dist/notifications/index.d.ts +7 -0
- package/dist/notifications/index.js +477 -0
- package/dist/notifications/notifications.d.ts +53 -0
- package/dist/notifications/useNotifyfeed.d.ts +32 -0
- package/dist/periodPicker/index.cjs +1 -1
- package/dist/periodPicker/index.js +126 -139
- package/dist/popover/OnePopover.vue.d.ts +2 -0
- package/dist/popover/index.cjs +1 -0
- package/dist/popover/index.d.ts +3 -0
- package/dist/popover/index.js +102 -0
- package/dist/popover/popover.d.ts +31 -0
- package/dist/progress/OneProgress.vue.d.ts +2 -0
- package/dist/progress/index.cjs +1 -0
- package/dist/progress/index.d.ts +3 -0
- package/dist/progress/index.js +74 -0
- package/dist/progress/progress.d.ts +32 -0
- package/dist/searchInput/OneSearchInput.vue.d.ts +2 -0
- package/dist/searchInput/index.cjs +1 -0
- package/dist/searchInput/index.d.ts +3 -0
- package/dist/searchInput/index.js +103 -0
- package/dist/searchInput/searchInput.d.ts +39 -0
- package/dist/settings/OneSettingsLayout.vue.d.ts +2 -0
- package/dist/settings/OneSettingsRow.vue.d.ts +2 -0
- package/dist/settings/OneSettingsSection.vue.d.ts +2 -0
- package/dist/settings/index.cjs +1 -0
- package/dist/settings/index.d.ts +4 -0
- package/dist/settings/index.js +116 -0
- package/dist/spinner/OneSpinner.vue.d.ts +2 -0
- package/dist/spinner/index.cjs +1 -0
- package/dist/spinner/index.d.ts +3 -0
- package/dist/spinner/index.js +30 -0
- package/dist/spinner/spinner.d.ts +10 -0
- package/dist/stageBadge/OneStageBadge.vue.d.ts +2 -0
- package/dist/stageBadge/index.cjs +1 -0
- package/dist/stageBadge/index.d.ts +3 -0
- package/dist/stageBadge/index.js +126 -0
- package/dist/stageBadge/stageBadge.d.ts +64 -0
- package/dist/stepper/OneStepper.vue.d.ts +2 -0
- package/dist/stepper/index.cjs +1 -0
- package/dist/stepper/index.d.ts +3 -0
- package/dist/stepper/index.js +53 -0
- package/dist/stepper/stepper.d.ts +24 -0
- package/dist/style.css +1 -1
- package/dist/switch/index.cjs +1 -1
- package/dist/switch/index.js +3 -4
- package/dist/tabs/OneTab.vue.d.ts +2 -0
- package/dist/tabs/OneTabs.vue.d.ts +2 -0
- package/dist/tabs/index.cjs +1 -0
- package/dist/tabs/index.d.ts +4 -0
- package/dist/tabs/index.js +64 -0
- package/dist/tabs/tabs.d.ts +7 -0
- package/dist/toast/OneMascotToast.vue.d.ts +2 -0
- package/dist/toast/RabbitIcon.vue.d.ts +2 -0
- package/dist/toast/index.cjs +1 -1
- package/dist/toast/index.d.ts +4 -0
- package/dist/toast/index.js +139 -73
- package/dist/toast/useMascotToast.d.ts +12 -0
- package/dist/tooltip/OneTooltip.vue.d.ts +2 -0
- package/dist/tooltip/index.cjs +2 -2
- package/dist/tooltip/index.d.ts +1 -0
- package/dist/tooltip/index.js +33 -30
- package/dist/useConfirm-6344b49d.cjs +1 -0
- package/dist/useConfirm-74e99a5c.js +23 -0
- package/dist/useCursorList-5c1b57aa.js +62 -0
- package/dist/useCursorList-e1cb41e7.cjs +1 -0
- package/dist/useElementWidth-b36a7ce9.js +40 -0
- package/dist/useElementWidth-b3e53f48.cjs +1 -0
- package/dist/useFileUpload-228dbc07.js +24 -0
- package/dist/useFileUpload-f47622bb.cjs +1 -0
- package/dist/useIsMobile-7b1f08cf.cjs +1 -0
- package/dist/useIsMobile-98fc0cf9.js +7 -0
- package/dist/useMediaQuery-1d87df02.cjs +1 -0
- package/dist/useMediaQuery-77a19b18.js +37 -0
- package/dist/useModal-6a5d870b.js +30 -0
- package/dist/useModal-aa6f4a57.cjs +1 -0
- package/dist/userList/OneUserInviteModal.vue.d.ts +2 -0
- package/dist/userList/OneUserList.vue.d.ts +2 -0
- package/dist/userList/OneUserListItem.vue.d.ts +2 -0
- package/dist/userList/index.cjs +1 -0
- package/dist/userList/index.d.ts +4 -0
- package/dist/userList/index.js +559 -0
- package/dist/utils/clipboard.d.ts +6 -0
- package/dist/utils/format.d.ts +17 -0
- package/dist/utils/index.cjs +1 -0
- package/dist/utils/index.d.ts +4 -0
- package/dist/utils/index.js +125 -0
- package/dist/utils/string.d.ts +25 -0
- package/dist/utils/versionChecker.d.ts +26 -0
- package/package.json +221 -23
- package/dist/ChevronRightIcon-7a2f0c20.cjs +0 -1
- package/dist/OneHelpMenu-c6e88d8f.cjs +0 -1
- package/dist/OneMarkdown.vue_vue_type_style_index_0_lang-0ea8fbf8.cjs +0 -1
- package/dist/OneMarkdown.vue_vue_type_style_index_0_lang-4ed993c7.js +0 -1
- package/dist/SpinnerIcon-ccb6f3fc.cjs +0 -1
- package/dist/SpinnerIcon.vue_vue_type_style_index_0_lang-0ea8fbf8.cjs +0 -1
- package/dist/SpinnerIcon.vue_vue_type_style_index_0_lang-4ed993c7.js +0 -1
- package/dist/useModal-0c73777f.cjs +0 -1
- package/dist/useModal-7fe9444b.js +0 -194
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
import { u as ae } from "../useFileUpload-228dbc07.js";
|
|
2
|
+
import { openBlock as r, createElementBlock as p, createElementVNode as c, defineComponent as C, computed as k, normalizeClass as D, createBlock as B, unref as w, toDisplayString as f, ref as S, renderSlot as $, createVNode as L, createTextVNode as N, createCommentVNode as j } from "vue";
|
|
3
|
+
import { OneSpinner as A } from "../spinner/index.js";
|
|
4
|
+
import { useOnebI18n as M } from "../i18n/index.js";
|
|
5
|
+
import { OneButton as V } from "../button/index.js";
|
|
6
|
+
import "../SpinnerIcon-516264ba.js";
|
|
7
|
+
import "../_plugin-vue_export-helper-dad06003.js";
|
|
8
|
+
function E(e, n) {
|
|
9
|
+
return r(), p("svg", {
|
|
10
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
11
|
+
fill: "none",
|
|
12
|
+
viewBox: "0 0 24 24",
|
|
13
|
+
"stroke-width": "1.8",
|
|
14
|
+
stroke: "currentColor",
|
|
15
|
+
"aria-hidden": "true"
|
|
16
|
+
}, [
|
|
17
|
+
c("path", {
|
|
18
|
+
"stroke-linecap": "round",
|
|
19
|
+
"stroke-linejoin": "round",
|
|
20
|
+
d: "M3 16.5v2.25A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75V16.5m-13.5-9L12 3m0 0l4.5 4.5M12 3v13.5"
|
|
21
|
+
})
|
|
22
|
+
]);
|
|
23
|
+
}
|
|
24
|
+
const T = (e, n) => n ? n.split(",").map((t) => t.trim().toLowerCase()).some((t) => t ? t.startsWith(".") ? e.name.toLowerCase().endsWith(t) : t.endsWith("/*") ? e.type.toLowerCase().startsWith(t.slice(0, -1)) : e.type.toLowerCase() === t : !1) : !0, F = (e, n) => {
|
|
25
|
+
const t = [], o = [], m = n.multiple ? e : e.slice(0, 1);
|
|
26
|
+
for (const l of m) {
|
|
27
|
+
if (!T(l, n.accept)) {
|
|
28
|
+
o.push({ code: "type", file: l });
|
|
29
|
+
continue;
|
|
30
|
+
}
|
|
31
|
+
if (n.maxSizeMb != null && l.size > n.maxSizeMb * 1024 * 1024) {
|
|
32
|
+
o.push({ code: "size", file: l });
|
|
33
|
+
continue;
|
|
34
|
+
}
|
|
35
|
+
t.push(l);
|
|
36
|
+
}
|
|
37
|
+
return { accepted: t, errors: o };
|
|
38
|
+
}, W = {
|
|
39
|
+
key: 2,
|
|
40
|
+
class: "text-[#525B66] font-medium"
|
|
41
|
+
}, U = {
|
|
42
|
+
key: 3,
|
|
43
|
+
class: "text-[#525B66]"
|
|
44
|
+
}, R = ["accept", "multiple", "disabled"], _ = /* @__PURE__ */ C({
|
|
45
|
+
__name: "OneFileUpload",
|
|
46
|
+
props: {
|
|
47
|
+
label: {
|
|
48
|
+
type: String,
|
|
49
|
+
default: ""
|
|
50
|
+
},
|
|
51
|
+
accept: {
|
|
52
|
+
type: String,
|
|
53
|
+
default: void 0
|
|
54
|
+
},
|
|
55
|
+
multiple: {
|
|
56
|
+
type: Boolean,
|
|
57
|
+
default: !1
|
|
58
|
+
},
|
|
59
|
+
maxSizeMb: {
|
|
60
|
+
type: Number,
|
|
61
|
+
default: void 0
|
|
62
|
+
},
|
|
63
|
+
disabled: {
|
|
64
|
+
type: Boolean,
|
|
65
|
+
default: !1
|
|
66
|
+
},
|
|
67
|
+
loading: {
|
|
68
|
+
type: Boolean,
|
|
69
|
+
default: !1
|
|
70
|
+
},
|
|
71
|
+
t: {
|
|
72
|
+
type: Function,
|
|
73
|
+
default: void 0
|
|
74
|
+
}
|
|
75
|
+
},
|
|
76
|
+
emits: ["files", "error"],
|
|
77
|
+
setup(e, { emit: n }) {
|
|
78
|
+
const t = e, o = n, m = M(), l = k(() => t.t ?? m), s = (d) => {
|
|
79
|
+
const u = d.target, b = Array.from(u.files ?? []);
|
|
80
|
+
if (u.value = "", b.length === 0)
|
|
81
|
+
return;
|
|
82
|
+
const { accepted: h, errors: v } = F(b, {
|
|
83
|
+
accept: t.accept,
|
|
84
|
+
maxSizeMb: t.maxSizeMb,
|
|
85
|
+
multiple: t.multiple
|
|
86
|
+
});
|
|
87
|
+
v.forEach((y) => o("error", y)), h.length > 0 && o("files", h);
|
|
88
|
+
};
|
|
89
|
+
return (d, u) => (r(), p("label", {
|
|
90
|
+
class: D(["hover:text-blue-500 cursor-pointer text-sm w-full h-full flex items-center border hover:bg-gray-50 px-3 py-2 rounded-md gap-3", { "opacity-60 cursor-not-allowed pointer-events-none": e.disabled }])
|
|
91
|
+
}, [
|
|
92
|
+
e.loading ? (r(), B(w(A), {
|
|
93
|
+
key: 0,
|
|
94
|
+
size: "sm"
|
|
95
|
+
})) : (r(), B(w(E), {
|
|
96
|
+
key: 1,
|
|
97
|
+
class: "w-4 h-4 text-[#525B66]"
|
|
98
|
+
})),
|
|
99
|
+
e.loading ? (r(), p("span", U, f(l.value("ui.file_upload.uploading")) + "...", 1)) : (r(), p("span", W, f(e.label || l.value("ui.file_upload.select")), 1)),
|
|
100
|
+
c("input", {
|
|
101
|
+
class: "hidden",
|
|
102
|
+
type: "file",
|
|
103
|
+
accept: e.accept,
|
|
104
|
+
multiple: e.multiple,
|
|
105
|
+
disabled: e.disabled,
|
|
106
|
+
onChange: s
|
|
107
|
+
}, null, 40, R)
|
|
108
|
+
], 2));
|
|
109
|
+
}
|
|
110
|
+
}), I = ["accept", "multiple", "disabled"], P = { class: "text-base font-medium text-gray-900" }, q = { class: "text-xs text-gray-500" }, G = {
|
|
111
|
+
key: 0,
|
|
112
|
+
class: "mt-4 text-sm text-gray-700"
|
|
113
|
+
}, H = { class: "font-semibold" }, ee = /* @__PURE__ */ C({
|
|
114
|
+
__name: "OneDropzone",
|
|
115
|
+
props: {
|
|
116
|
+
accept: {
|
|
117
|
+
type: String,
|
|
118
|
+
default: void 0
|
|
119
|
+
},
|
|
120
|
+
multiple: {
|
|
121
|
+
type: Boolean,
|
|
122
|
+
default: !1
|
|
123
|
+
},
|
|
124
|
+
maxSizeMb: {
|
|
125
|
+
type: Number,
|
|
126
|
+
default: void 0
|
|
127
|
+
},
|
|
128
|
+
disabled: {
|
|
129
|
+
type: Boolean,
|
|
130
|
+
default: !1
|
|
131
|
+
},
|
|
132
|
+
hint: {
|
|
133
|
+
type: String,
|
|
134
|
+
default: ""
|
|
135
|
+
},
|
|
136
|
+
help: {
|
|
137
|
+
type: String,
|
|
138
|
+
default: ""
|
|
139
|
+
},
|
|
140
|
+
buttonLabel: {
|
|
141
|
+
type: String,
|
|
142
|
+
default: ""
|
|
143
|
+
},
|
|
144
|
+
t: {
|
|
145
|
+
type: Function,
|
|
146
|
+
default: void 0
|
|
147
|
+
}
|
|
148
|
+
},
|
|
149
|
+
emits: ["files", "error"],
|
|
150
|
+
setup(e, { emit: n }) {
|
|
151
|
+
const t = e, o = n, m = M(), l = k(() => t.t ?? m), s = S(!1), d = S([]), u = S(null), b = (a) => {
|
|
152
|
+
const i = Array.from(a ?? []);
|
|
153
|
+
if (i.length === 0)
|
|
154
|
+
return;
|
|
155
|
+
const { accepted: g, errors: O } = F(i, {
|
|
156
|
+
accept: t.accept,
|
|
157
|
+
maxSizeMb: t.maxSizeMb,
|
|
158
|
+
multiple: t.multiple
|
|
159
|
+
});
|
|
160
|
+
O.forEach((z) => o("error", z)), g.length > 0 && (d.value = g.map((z) => z.name), o("files", g));
|
|
161
|
+
}, h = (a) => {
|
|
162
|
+
var i;
|
|
163
|
+
a.preventDefault(), s.value = !1, !t.disabled && b(((i = a.dataTransfer) == null ? void 0 : i.files) ?? null);
|
|
164
|
+
}, v = (a) => {
|
|
165
|
+
a.preventDefault(), !t.disabled && (s.value = !0);
|
|
166
|
+
}, y = (a) => {
|
|
167
|
+
if (t.disabled)
|
|
168
|
+
return;
|
|
169
|
+
const i = a.target;
|
|
170
|
+
b(i.files), i.value = "";
|
|
171
|
+
}, x = () => {
|
|
172
|
+
var a;
|
|
173
|
+
t.disabled || (a = u.value) == null || a.click();
|
|
174
|
+
};
|
|
175
|
+
return (a, i) => (r(), p("div", {
|
|
176
|
+
class: D(["border-2 border-dashed rounded-xl bg-white p-6 flex flex-col items-center justify-center text-center transition-colors", {
|
|
177
|
+
"border-blue-500 bg-blue-50": s.value && !e.disabled,
|
|
178
|
+
"border-gray-300": !s.value || e.disabled,
|
|
179
|
+
"opacity-60 cursor-not-allowed": e.disabled
|
|
180
|
+
}]),
|
|
181
|
+
"data-test": "dropzone",
|
|
182
|
+
onDrop: h,
|
|
183
|
+
onDragover: v,
|
|
184
|
+
onDragleave: i[0] || (i[0] = (g) => s.value = !1)
|
|
185
|
+
}, [
|
|
186
|
+
c("input", {
|
|
187
|
+
ref_key: "inputRef",
|
|
188
|
+
ref: u,
|
|
189
|
+
type: "file",
|
|
190
|
+
accept: e.accept,
|
|
191
|
+
multiple: e.multiple,
|
|
192
|
+
class: "hidden",
|
|
193
|
+
disabled: e.disabled,
|
|
194
|
+
onChange: y
|
|
195
|
+
}, null, 40, I),
|
|
196
|
+
$(a.$slots, "default", {
|
|
197
|
+
isDragging: s.value,
|
|
198
|
+
openPicker: x
|
|
199
|
+
}, () => [
|
|
200
|
+
c("div", {
|
|
201
|
+
class: "cursor-pointer flex flex-col items-center gap-2",
|
|
202
|
+
onClick: x
|
|
203
|
+
}, [
|
|
204
|
+
c("span", P, f(e.hint || l.value("ui.dropzone.hint")), 1),
|
|
205
|
+
c("span", q, f(e.help || l.value("ui.dropzone.help")), 1)
|
|
206
|
+
]),
|
|
207
|
+
L(w(V), {
|
|
208
|
+
type: "button",
|
|
209
|
+
variant: "primary",
|
|
210
|
+
class: "mt-3",
|
|
211
|
+
label: e.buttonLabel || l.value("ui.dropzone.choose"),
|
|
212
|
+
disabled: e.disabled,
|
|
213
|
+
onClick: x
|
|
214
|
+
}, null, 8, ["label", "disabled"]),
|
|
215
|
+
d.value.length ? (r(), p("div", G, [
|
|
216
|
+
N(f(l.value("ui.dropzone.selected")) + ": ", 1),
|
|
217
|
+
c("span", H, f(d.value.join(", ")), 1)
|
|
218
|
+
])) : j("", !0)
|
|
219
|
+
])
|
|
220
|
+
], 34));
|
|
221
|
+
}
|
|
222
|
+
});
|
|
223
|
+
export {
|
|
224
|
+
ee as OneDropzone,
|
|
225
|
+
_ as OneFileUpload,
|
|
226
|
+
ae as useFileUpload,
|
|
227
|
+
F as validateFiles
|
|
228
|
+
};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export type FilterFieldType = 'string' | 'int' | 'bool';
|
|
2
|
+
export interface FilterFieldConfig {
|
|
3
|
+
field: string;
|
|
4
|
+
label: string;
|
|
5
|
+
type: FilterFieldType;
|
|
6
|
+
}
|
|
7
|
+
export interface FilterRuleNode {
|
|
8
|
+
field: string;
|
|
9
|
+
operator: string;
|
|
10
|
+
value: string | number;
|
|
11
|
+
}
|
|
12
|
+
export interface FilterGroupNode {
|
|
13
|
+
operator: 'and' | 'or';
|
|
14
|
+
conditions: (FilterRuleNode | FilterGroupNode)[];
|
|
15
|
+
}
|
|
16
|
+
export declare const isFilterGroup: (node: FilterRuleNode | FilterGroupNode | undefined | null) => node is FilterGroupNode;
|
|
17
|
+
export declare const operatorsForType: (type: FilterFieldType | undefined) => string[];
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),k=require("../i18n/index.cjs"),f=t=>t!=null&&t.conditions!==void 0,B=t=>t==="bool"?["1","0"]:t==="int"?["=","!=","<",">","<=",">="]:t==="string"?["=","!=","*","!*"]:[],E={class:"flex gap-2 items-center hover:bg-gray-100 py-1 px-1 rounded-md","data-test":"filter-rule"},C=["disabled"],x={disabled:"",value:""},h=["value"],F=["disabled"],N={disabled:"",value:""},D=["disabled"],$=["disabled"],V=e.defineComponent({__name:"OneFilterRule",props:{rule:{type:Object,default:()=>({field:"",operator:"",value:""})},config:{type:Array,required:!0},readonly:{type:Boolean,default:!1},t:{type:Function,default:void 0}},emits:["update:rule","remove"],setup(t,{emit:s}){const r=t,c=s,p=k.useOnebI18n(),a=e.computed(()=>r.t??p),o=e.reactive({...r.rule});e.watch(o,()=>{c("update:rule",{...o})},{deep:!0});const i=e.computed(()=>{var u;return(u=r.config.find(n=>n.field===o.field))==null?void 0:u.type}),g=e.computed(()=>B(i.value)),m=()=>{o.operator="",o.value=""};return(u,n)=>(e.openBlock(),e.createElementBlock("div",E,[e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":n[0]||(n[0]=l=>o.field=l),class:e.normalizeClass(["pl-2 py-2 pr-6 rounded text-sm flex-shrink flex-grow border",o.field?"":"text-gray-400"]),disabled:t.readonly,"data-test":"rule-field",onChange:m},[e.createElementVNode("option",x,e.toDisplayString(a.value("ui.filter.field")),1),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.config,l=>(e.openBlock(),e.createElementBlock("option",{key:l.field,value:l.field},e.toDisplayString(l.label),9,h))),128))],42,C),[[e.vModelSelect,o.field]]),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":n[1]||(n[1]=l=>o.operator=l),class:e.normalizeClass(["pl-2 py-2 pr-6 rounded text-sm min-w-20 border",o.operator?"":"text-gray-400"]),disabled:t.readonly,"data-test":"rule-operator"},[e.createElementVNode("option",N,e.toDisplayString(a.value("ui.filter.operator")),1),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(g.value,l=>(e.openBlock(),e.createElementBlock("option",{key:l},e.toDisplayString(l),1))),128))],10,F),[[e.vModelSelect,o.operator]]),i.value==="int"?e.withDirectives((e.openBlock(),e.createElementBlock("input",{key:0,"onUpdate:modelValue":n[2]||(n[2]=l=>o.value=l),type:"number",step:"1",class:"rounded text-sm border px-2 py-2",disabled:t.readonly,"data-test":"rule-value"},null,8,D)),[[e.vModelText,o.value]]):i.value==="string"?e.withDirectives((e.openBlock(),e.createElementBlock("input",{key:1,"onUpdate:modelValue":n[3]||(n[3]=l=>o.value=l),type:"text",class:"rounded text-sm border px-2 py-2",disabled:t.readonly,"data-test":"rule-value"},null,8,$)),[[e.vModelText,o.value]]):e.createCommentVNode("",!0),t.readonly?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("button",{key:2,type:"button",class:"p-2","data-test":"rule-remove",onClick:n[4]||(n[4]=l=>u.$emit("remove"))}," ✕ "))]))}}),S={class:"flex justify-between items-center border-b-2 gap-5 p-1"},w={class:"w-full"},O=["disabled"],U={value:"and"},T={value:"or"},j={class:"space-y-2"},G={key:0,class:"flex gap-2 p-2"},b=e.defineComponent({__name:"OneFilterGroup",props:{group:{type:Object,default:()=>({operator:"and",conditions:[]})},config:{type:Array,required:!0},readonly:{type:Boolean,default:!1},level:{type:Number,default:0},t:{type:Function,default:void 0}},emits:["update:group","remove"],setup(t,{emit:s}){const r=t,c=s,p=k.useOnebI18n(),a=e.computed(()=>r.t??p),o=e.reactive({operator:r.group.operator??"and",conditions:[...r.group.conditions??[]]});e.watch(o,()=>{c("update:group",{operator:o.operator,conditions:[...o.conditions]})},{deep:!0});const i=()=>{o.conditions.push({field:"",operator:"",value:""})},g=()=>{o.conditions.push({operator:"and",conditions:[]})},m=(n,l)=>{o.conditions[n]=l},u=n=>{o.conditions.splice(n,1)};return(n,l)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["border-l-4 pl-2 py-2 rounded space-y-2",{"border-violet-500":t.level===0,"border-blue-500":t.level===1,"border-green-500":t.level===2,"border-orange-500":t.level===3}]),"data-test":"filter-group"},[e.createElementVNode("div",S,[e.createElementVNode("label",w,[e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":l[0]||(l[0]=d=>o.operator=d),class:"py-2 pr-10 border-none w-full",disabled:t.readonly,"data-test":"group-operator"},[e.createElementVNode("option",U,e.toDisplayString(a.value("ui.filter.and")),1),e.createElementVNode("option",T,e.toDisplayString(a.value("ui.filter.or")),1)],8,O),[[e.vModelSelect,o.operator]])]),!t.readonly&&t.level>0?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"p-2","data-test":"group-remove",onClick:l[1]||(l[1]=d=>n.$emit("remove"))}," ✕ ")):e.createCommentVNode("",!0)]),e.createElementVNode("div",j,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.conditions,(d,y)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(e.unref(f)(d)?b:V),{key:y,rule:e.unref(f)(d)?void 0:d,group:e.unref(f)(d)?d:void 0,config:t.config,level:t.level+1,readonly:t.readonly,t:r.t,"onUpdate:rule":v=>m(y,v),"onUpdate:group":v=>m(y,v),onRemove:v=>u(y)},null,40,["rule","group","config","level","readonly","t","onUpdate:rule","onUpdate:group","onRemove"]))),128))]),t.readonly?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",G,[e.createElementVNode("button",{type:"button",class:"px-2 py-1 bg-gray-100 rounded-md text-sm hover:bg-gray-200","data-test":"add-rule",onClick:i},e.toDisplayString(a.value("ui.filter.add_rule")),1),t.level<3?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"px-2 py-1 bg-gray-100 rounded-md text-sm hover:bg-gray-200","data-test":"add-group",onClick:g},e.toDisplayString(a.value("ui.filter.add_group")),1)):e.createCommentVNode("",!0)]))],2))}}),M=e.defineComponent({__name:"OneFilterBuilder",props:{modelValue:{type:Object,default:null},config:{type:Array,required:!0},readonly:{type:Boolean,default:!1},t:{type:Function,default:void 0}},emits:["update:modelValue"],setup(t,{emit:s}){const r=t,c=s,p=e.computed(()=>r.modelValue??{operator:"and",conditions:[]});return(a,o)=>(e.openBlock(),e.createBlock(b,{group:p.value,config:t.config,readonly:t.readonly,t:r.t,"onUpdate:group":o[0]||(o[0]=i=>c("update:modelValue",i))},null,8,["group","config","readonly","t"]))}});exports.OneFilterBuilder=M;exports.OneFilterGroup=b;exports.OneFilterRule=V;exports.isFilterGroup=f;exports.operatorsForType=B;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { default as OneFilterBuilder } from './OneFilterBuilder.vue';
|
|
2
|
+
export { default as OneFilterGroup } from './OneFilterGroup.vue';
|
|
3
|
+
export { default as OneFilterRule } from './OneFilterRule.vue';
|
|
4
|
+
export { isFilterGroup, operatorsForType } from './filterBuilder';
|
|
5
|
+
export type { FilterFieldConfig, FilterFieldType, FilterRuleNode, FilterGroupNode } from './filterBuilder';
|
|
@@ -0,0 +1,257 @@
|
|
|
1
|
+
import { defineComponent as w, computed as g, reactive as R, watch as G, openBlock as r, createElementBlock as n, withDirectives as m, createElementVNode as a, normalizeClass as V, toDisplayString as s, Fragment as O, renderList as U, vModelSelect as B, vModelText as j, createCommentVNode as b, createBlock as T, resolveDynamicComponent as D, unref as h } from "vue";
|
|
2
|
+
import { useOnebI18n as q } from "../i18n/index.js";
|
|
3
|
+
const C = (e) => e != null && e.conditions !== void 0, N = (e) => e === "bool" ? ["1", "0"] : e === "int" ? ["=", "!=", "<", ">", "<=", ">="] : e === "string" ? ["=", "!=", "*", "!*"] : [], E = {
|
|
4
|
+
class: "flex gap-2 items-center hover:bg-gray-100 py-1 px-1 rounded-md",
|
|
5
|
+
"data-test": "filter-rule"
|
|
6
|
+
}, M = ["disabled"], S = {
|
|
7
|
+
disabled: "",
|
|
8
|
+
value: ""
|
|
9
|
+
}, z = ["value"], I = ["disabled"], L = {
|
|
10
|
+
disabled: "",
|
|
11
|
+
value: ""
|
|
12
|
+
}, H = ["disabled"], J = ["disabled"], K = /* @__PURE__ */ w({
|
|
13
|
+
__name: "OneFilterRule",
|
|
14
|
+
props: {
|
|
15
|
+
rule: {
|
|
16
|
+
type: Object,
|
|
17
|
+
default: () => ({ field: "", operator: "", value: "" })
|
|
18
|
+
},
|
|
19
|
+
config: {
|
|
20
|
+
type: Array,
|
|
21
|
+
required: !0
|
|
22
|
+
},
|
|
23
|
+
readonly: {
|
|
24
|
+
type: Boolean,
|
|
25
|
+
default: !1
|
|
26
|
+
},
|
|
27
|
+
t: {
|
|
28
|
+
type: Function,
|
|
29
|
+
default: void 0
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
emits: ["update:rule", "remove"],
|
|
33
|
+
setup(e, { emit: y }) {
|
|
34
|
+
const d = e, v = y, f = q(), u = g(() => d.t ?? f), t = R({ ...d.rule });
|
|
35
|
+
G(
|
|
36
|
+
t,
|
|
37
|
+
() => {
|
|
38
|
+
v("update:rule", { ...t });
|
|
39
|
+
},
|
|
40
|
+
{ deep: !0 }
|
|
41
|
+
);
|
|
42
|
+
const p = g(
|
|
43
|
+
() => {
|
|
44
|
+
var c;
|
|
45
|
+
return (c = d.config.find((l) => l.field === t.field)) == null ? void 0 : c.type;
|
|
46
|
+
}
|
|
47
|
+
), F = g(() => N(p.value)), x = () => {
|
|
48
|
+
t.operator = "", t.value = "";
|
|
49
|
+
};
|
|
50
|
+
return (c, l) => (r(), n("div", E, [
|
|
51
|
+
m(a("select", {
|
|
52
|
+
"onUpdate:modelValue": l[0] || (l[0] = (o) => t.field = o),
|
|
53
|
+
class: V(["pl-2 py-2 pr-6 rounded text-sm flex-shrink flex-grow border", t.field ? "" : "text-gray-400"]),
|
|
54
|
+
disabled: e.readonly,
|
|
55
|
+
"data-test": "rule-field",
|
|
56
|
+
onChange: x
|
|
57
|
+
}, [
|
|
58
|
+
a("option", S, s(u.value("ui.filter.field")), 1),
|
|
59
|
+
(r(!0), n(O, null, U(e.config, (o) => (r(), n("option", {
|
|
60
|
+
key: o.field,
|
|
61
|
+
value: o.field
|
|
62
|
+
}, s(o.label), 9, z))), 128))
|
|
63
|
+
], 42, M), [
|
|
64
|
+
[B, t.field]
|
|
65
|
+
]),
|
|
66
|
+
m(a("select", {
|
|
67
|
+
"onUpdate:modelValue": l[1] || (l[1] = (o) => t.operator = o),
|
|
68
|
+
class: V(["pl-2 py-2 pr-6 rounded text-sm min-w-20 border", t.operator ? "" : "text-gray-400"]),
|
|
69
|
+
disabled: e.readonly,
|
|
70
|
+
"data-test": "rule-operator"
|
|
71
|
+
}, [
|
|
72
|
+
a("option", L, s(u.value("ui.filter.operator")), 1),
|
|
73
|
+
(r(!0), n(O, null, U(F.value, (o) => (r(), n("option", { key: o }, s(o), 1))), 128))
|
|
74
|
+
], 10, I), [
|
|
75
|
+
[B, t.operator]
|
|
76
|
+
]),
|
|
77
|
+
p.value === "int" ? m((r(), n("input", {
|
|
78
|
+
key: 0,
|
|
79
|
+
"onUpdate:modelValue": l[2] || (l[2] = (o) => t.value = o),
|
|
80
|
+
type: "number",
|
|
81
|
+
step: "1",
|
|
82
|
+
class: "rounded text-sm border px-2 py-2",
|
|
83
|
+
disabled: e.readonly,
|
|
84
|
+
"data-test": "rule-value"
|
|
85
|
+
}, null, 8, H)), [
|
|
86
|
+
[j, t.value]
|
|
87
|
+
]) : p.value === "string" ? m((r(), n("input", {
|
|
88
|
+
key: 1,
|
|
89
|
+
"onUpdate:modelValue": l[3] || (l[3] = (o) => t.value = o),
|
|
90
|
+
type: "text",
|
|
91
|
+
class: "rounded text-sm border px-2 py-2",
|
|
92
|
+
disabled: e.readonly,
|
|
93
|
+
"data-test": "rule-value"
|
|
94
|
+
}, null, 8, J)), [
|
|
95
|
+
[j, t.value]
|
|
96
|
+
]) : b("", !0),
|
|
97
|
+
e.readonly ? b("", !0) : (r(), n("button", {
|
|
98
|
+
key: 2,
|
|
99
|
+
type: "button",
|
|
100
|
+
class: "p-2",
|
|
101
|
+
"data-test": "rule-remove",
|
|
102
|
+
onClick: l[4] || (l[4] = (o) => c.$emit("remove"))
|
|
103
|
+
}, " ✕ "))
|
|
104
|
+
]));
|
|
105
|
+
}
|
|
106
|
+
}), P = { class: "flex justify-between items-center border-b-2 gap-5 p-1" }, Q = { class: "w-full" }, W = ["disabled"], X = { value: "and" }, Y = { value: "or" }, Z = { class: "space-y-2" }, _ = {
|
|
107
|
+
key: 0,
|
|
108
|
+
class: "flex gap-2 p-2"
|
|
109
|
+
}, A = /* @__PURE__ */ w({
|
|
110
|
+
__name: "OneFilterGroup",
|
|
111
|
+
props: {
|
|
112
|
+
group: {
|
|
113
|
+
type: Object,
|
|
114
|
+
default: () => ({ operator: "and", conditions: [] })
|
|
115
|
+
},
|
|
116
|
+
config: {
|
|
117
|
+
type: Array,
|
|
118
|
+
required: !0
|
|
119
|
+
},
|
|
120
|
+
readonly: {
|
|
121
|
+
type: Boolean,
|
|
122
|
+
default: !1
|
|
123
|
+
},
|
|
124
|
+
level: {
|
|
125
|
+
type: Number,
|
|
126
|
+
default: 0
|
|
127
|
+
},
|
|
128
|
+
t: {
|
|
129
|
+
type: Function,
|
|
130
|
+
default: void 0
|
|
131
|
+
}
|
|
132
|
+
},
|
|
133
|
+
emits: ["update:group", "remove"],
|
|
134
|
+
setup(e, { emit: y }) {
|
|
135
|
+
const d = e, v = y, f = q(), u = g(() => d.t ?? f), t = R({
|
|
136
|
+
operator: d.group.operator ?? "and",
|
|
137
|
+
conditions: [...d.group.conditions ?? []]
|
|
138
|
+
});
|
|
139
|
+
G(
|
|
140
|
+
t,
|
|
141
|
+
() => {
|
|
142
|
+
v("update:group", { operator: t.operator, conditions: [...t.conditions] });
|
|
143
|
+
},
|
|
144
|
+
{ deep: !0 }
|
|
145
|
+
);
|
|
146
|
+
const p = () => {
|
|
147
|
+
t.conditions.push({ field: "", operator: "", value: "" });
|
|
148
|
+
}, F = () => {
|
|
149
|
+
t.conditions.push({ operator: "and", conditions: [] });
|
|
150
|
+
}, x = (l, o) => {
|
|
151
|
+
t.conditions[l] = o;
|
|
152
|
+
}, c = (l) => {
|
|
153
|
+
t.conditions.splice(l, 1);
|
|
154
|
+
};
|
|
155
|
+
return (l, o) => (r(), n("div", {
|
|
156
|
+
class: V(["border-l-4 pl-2 py-2 rounded space-y-2", {
|
|
157
|
+
"border-violet-500": e.level === 0,
|
|
158
|
+
"border-blue-500": e.level === 1,
|
|
159
|
+
"border-green-500": e.level === 2,
|
|
160
|
+
"border-orange-500": e.level === 3
|
|
161
|
+
}]),
|
|
162
|
+
"data-test": "filter-group"
|
|
163
|
+
}, [
|
|
164
|
+
a("div", P, [
|
|
165
|
+
a("label", Q, [
|
|
166
|
+
m(a("select", {
|
|
167
|
+
"onUpdate:modelValue": o[0] || (o[0] = (i) => t.operator = i),
|
|
168
|
+
class: "py-2 pr-10 border-none w-full",
|
|
169
|
+
disabled: e.readonly,
|
|
170
|
+
"data-test": "group-operator"
|
|
171
|
+
}, [
|
|
172
|
+
a("option", X, s(u.value("ui.filter.and")), 1),
|
|
173
|
+
a("option", Y, s(u.value("ui.filter.or")), 1)
|
|
174
|
+
], 8, W), [
|
|
175
|
+
[B, t.operator]
|
|
176
|
+
])
|
|
177
|
+
]),
|
|
178
|
+
!e.readonly && e.level > 0 ? (r(), n("button", {
|
|
179
|
+
key: 0,
|
|
180
|
+
type: "button",
|
|
181
|
+
class: "p-2",
|
|
182
|
+
"data-test": "group-remove",
|
|
183
|
+
onClick: o[1] || (o[1] = (i) => l.$emit("remove"))
|
|
184
|
+
}, " ✕ ")) : b("", !0)
|
|
185
|
+
]),
|
|
186
|
+
a("div", Z, [
|
|
187
|
+
(r(!0), n(O, null, U(t.conditions, (i, k) => (r(), T(D(h(C)(i) ? A : K), {
|
|
188
|
+
key: k,
|
|
189
|
+
rule: h(C)(i) ? void 0 : i,
|
|
190
|
+
group: h(C)(i) ? i : void 0,
|
|
191
|
+
config: e.config,
|
|
192
|
+
level: e.level + 1,
|
|
193
|
+
readonly: e.readonly,
|
|
194
|
+
t: d.t,
|
|
195
|
+
"onUpdate:rule": ($) => x(k, $),
|
|
196
|
+
"onUpdate:group": ($) => x(k, $),
|
|
197
|
+
onRemove: ($) => c(k)
|
|
198
|
+
}, null, 40, ["rule", "group", "config", "level", "readonly", "t", "onUpdate:rule", "onUpdate:group", "onRemove"]))), 128))
|
|
199
|
+
]),
|
|
200
|
+
e.readonly ? b("", !0) : (r(), n("div", _, [
|
|
201
|
+
a("button", {
|
|
202
|
+
type: "button",
|
|
203
|
+
class: "px-2 py-1 bg-gray-100 rounded-md text-sm hover:bg-gray-200",
|
|
204
|
+
"data-test": "add-rule",
|
|
205
|
+
onClick: p
|
|
206
|
+
}, s(u.value("ui.filter.add_rule")), 1),
|
|
207
|
+
e.level < 3 ? (r(), n("button", {
|
|
208
|
+
key: 0,
|
|
209
|
+
type: "button",
|
|
210
|
+
class: "px-2 py-1 bg-gray-100 rounded-md text-sm hover:bg-gray-200",
|
|
211
|
+
"data-test": "add-group",
|
|
212
|
+
onClick: F
|
|
213
|
+
}, s(u.value("ui.filter.add_group")), 1)) : b("", !0)
|
|
214
|
+
]))
|
|
215
|
+
], 2));
|
|
216
|
+
}
|
|
217
|
+
}), oe = /* @__PURE__ */ w({
|
|
218
|
+
__name: "OneFilterBuilder",
|
|
219
|
+
props: {
|
|
220
|
+
modelValue: {
|
|
221
|
+
type: Object,
|
|
222
|
+
default: null
|
|
223
|
+
},
|
|
224
|
+
config: {
|
|
225
|
+
type: Array,
|
|
226
|
+
required: !0
|
|
227
|
+
},
|
|
228
|
+
readonly: {
|
|
229
|
+
type: Boolean,
|
|
230
|
+
default: !1
|
|
231
|
+
},
|
|
232
|
+
t: {
|
|
233
|
+
type: Function,
|
|
234
|
+
default: void 0
|
|
235
|
+
}
|
|
236
|
+
},
|
|
237
|
+
emits: ["update:modelValue"],
|
|
238
|
+
setup(e, { emit: y }) {
|
|
239
|
+
const d = e, v = y, f = g(
|
|
240
|
+
() => d.modelValue ?? { operator: "and", conditions: [] }
|
|
241
|
+
);
|
|
242
|
+
return (u, t) => (r(), T(A, {
|
|
243
|
+
group: f.value,
|
|
244
|
+
config: e.config,
|
|
245
|
+
readonly: e.readonly,
|
|
246
|
+
t: d.t,
|
|
247
|
+
"onUpdate:group": t[0] || (t[0] = (p) => v("update:modelValue", p))
|
|
248
|
+
}, null, 8, ["group", "config", "readonly", "t"]));
|
|
249
|
+
}
|
|
250
|
+
});
|
|
251
|
+
export {
|
|
252
|
+
oe as OneFilterBuilder,
|
|
253
|
+
A as OneFilterGroup,
|
|
254
|
+
K as OneFilterRule,
|
|
255
|
+
C as isFilterGroup,
|
|
256
|
+
N as operatorsForType
|
|
257
|
+
};
|
package/dist/form/form.d.ts
CHANGED
|
@@ -101,7 +101,7 @@ export declare const formInputProps: {
|
|
|
101
101
|
};
|
|
102
102
|
/** Type of input field */
|
|
103
103
|
type: {
|
|
104
|
-
type: PropType<"number" | "checkbox" | "text" | "
|
|
104
|
+
type: PropType<"number" | "checkbox" | "text" | "textarea" | "select" | "time" | "search" | "color" | "password" | "email" | "tel" | "url" | "radio" | "range" | "date" | "datetime-local" | "month" | "week">;
|
|
105
105
|
default: string;
|
|
106
106
|
};
|
|
107
107
|
/** Additional CSS classes to apply to the input element */
|
package/dist/form/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),j=require("../XMarkIcon-f94baa4c.cjs"),I={id:{type:String,required:!1},validation:{type:Object,required:!1}},L={id:{type:String,required:!1},label:{type:String,required:!1},name:{type:String,required:!1},required:{required:!1,type:Boolean,default:!1},hint:{type:String,required:!1,default:""},errors:{type:Array,required:!1}},D={name:{type:String,required:!1},errors:{type:Array,required:!1}},A={label:{type:String,required:!1}},M={id:{type:String,required:!1},name:{type:String,required:!1},placeholder:{type:String,default:""},icon:{type:[Function,Object]},type:{type:String,default:"text"},inputClass:{required:!1,type:[Array,String]},modelValue:{required:!1,type:[String,Number,Array,Boolean,Object,null]},autofocus:{type:Boolean,default:!1},required:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},readonly:{type:Boolean,default:!1},clearable:{type:Boolean,default:!1},rounded:{type:Boolean,default:!1},large:{type:Boolean,default:!1},invalid:{type:Boolean,required:!1,default:!1},options:{type:Array,required:!1,default:[]},autocomplete:{type:String,required:!1,default:""},maxlength:{type:Number,required:!1},minlength:{type:Number,required:!1},min:{type:[Number,String],required:!1},max:{type:[Number,String],required:!1},step:{type:[Number,String],required:!1},pattern:{type:String,required:!1},rows:{type:Number,default:3},cols:{type:Number,required:!1},resize:{type:String,default:"vertical"},spellcheck:{type:Boolean,required:!1},inputmode:{type:String,required:!1},tabindex:{type:Number,required:!1},ariaLabel:{type:String,required:!1},ariaDescribedby:{type:String,required:!1}},V=()=>e.inject("BaseForm",()=>({formId:e.computed(()=>{}),validation:e.computed(()=>{})}),!0),w=()=>e.inject("BaseFormField",()=>({inputId:e.computed(()=>{}),inputName:e.computed(()=>{}),hasError:e.computed(()=>!1)}),!0),P=["id"],K=e.defineComponent({__name:"OneForm",props:I,emits:["submit"],setup(i,{emit:n}){const a=i,l=n;e.provide("BaseForm",{formId:e.computed(()=>a.id),validation:e.computed(()=>a.validation)});const t=()=>{l("submit")};return(o,c)=>(e.openBlock(),e.createElementBlock("form",{onSubmit:e.withModifiers(t,["prevent"]),id:o.id,class:"space-y-3"},[e.renderSlot(o.$slots,"default")],40,P))}}),T=["for"],q=e.defineComponent({__name:"OneFormLabel",props:A,setup(i){const{inputId:n}=w();return(a,l)=>(e.openBlock(),e.createElementBlock("label",{for:e.unref(n),class:"text-sm font-medium text-primary-content select-none flex justify-between"},[e.createElementVNode("span",null,[e.renderSlot(a.$slots,"default",{},()=>[e.createTextVNode(e.toDisplayString(a.label),1)])]),e.renderSlot(a.$slots,"right")],8,T))}}),X={key:0,class:"text-danger-content text-xs space-y-1"},C=e.defineComponent({__name:"OneFormFeedback",props:D,setup(i){const n=i,{validation:a}=V(),{inputName:l}=w(),t=e.computed(()=>l.value==null&&n.name==null?n.errors??[]:a.value==null?n.errors??[]:(a.value??{})[n.name||l.value]??n.errors??[]);return(o,c)=>t.value.length>0?(e.openBlock(),e.createElementBlock("div",X,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.value,u=>(e.openBlock(),e.createElementBlock("div",{key:u},e.toDisplayString(u),1))),128))])):e.createCommentVNode("",!0)}});function G(i,n){return e.openBlock(),e.createElementBlock("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.8",stroke:"currentColor","aria-hidden":"true"},[e.createElementVNode("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M2.036 12.322a1.012 1.012 0 010-.639C3.423 7.51 7.36 4.5 12 4.5c4.638 0 8.573 3.007 9.963 7.178.07.207.07.431 0 .639C20.577 16.49 16.64 19.5 12 19.5c-4.638 0-8.573-3.007-9.963-7.178z"}),e.createElementVNode("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M15 12a3 3 0 11-6 0 3 3 0 016 0z"})])}function H(i,n){return e.openBlock(),e.createElementBlock("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.8",stroke:"currentColor","aria-hidden":"true"},[e.createElementVNode("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M3.98 8.223A10.477 10.477 0 001.934 12C3.226 16.338 7.244 19.5 12 19.5c.993 0 1.953-.138 2.863-.395M6.228 6.228A10.45 10.45 0 0112 4.5c4.756 0 8.773 3.162 10.065 7.498a10.523 10.523 0 01-4.293 5.774M6.228 6.228L3 3m3.228 3.228l3.65 3.65m7.894 7.894L21 21m-3.228-3.228l-3.65-3.65m0 0a3 3 0 10-4.243-4.243m4.242 4.242L9.88 9.88"})])}const J=["id","disabled","tabindex"],Q=["selected"],R=["selected","value"],U=["name","id","value","rows","cols","maxlength","minlength","spellcheck","placeholder","disabled","readonly","tabindex","aria-label","aria-describedby"],W={key:2,class:"flex w-full space-x-3 items-center"},Y=["type","name","id","disabled","readonly","tabindex","aria-label","aria-describedby","checked"],Z=["for"],x={key:3,class:"w-full space-y-1"},_=["name","id","value","disabled","readonly","tabindex","checked"],ee=["for"],re={key:4,class:"relative"},le={class:"absolute p-2 px-3 rounded-md h-full flex items-center select-none pointer-events-none"},ne=["type","name","id","value","placeholder","disabled","readonly","maxlength","minlength","min","max","step","pattern","spellcheck","inputmode","tabindex","autocomplete","aria-label","aria-describedby"],N=e.defineComponent({__name:"OneFormInput",props:M,emits:["update:modelValue","focus","blur","change","input","keydown","keyup","keypress","clear","toggle-password"],setup(i,{expose:n,emit:a}){const l=i,t=a,{inputId:o,inputName:c,hasError:u}=w(),s=e.ref(null),m=e.ref(!1);e.onMounted(()=>{l.autofocus&&s.value&&s.value.focus()});const F=e.computed(()=>l.modelValue!=null&&l.modelValue!==""),p=e.computed(()=>{if(l.id)return l.id;const r=(o==null?void 0:o.value)||"";return l.name?`${r}-${l.name}`:r||""}),$=()=>{t("update:modelValue",""),t("clear"),E()},z=()=>{m.value=!m.value,t("toggle-password",m.value)},E=()=>{if(s.value){const r=Array.isArray(s.value)?s.value[0]:s.value;r==null||r.focus()}},O=e.computed(()=>{const r={"shadow-sm":l.type!=="range","border-danger-base":u.value||l.invalid,"pl-10":l.icon!=null,"pr-10":l.type==="password","rounded-full":l.rounded,"rounded-md":!l.rounded,"text-lg":l.large,"py-2.5":l.large,"py-2":!l.large};return l.inputClass!=null&&(typeof l.inputClass=="string"?r[l.inputClass]=!0:l.inputClass instanceof Array&&l.inputClass.forEach(h=>{r[h]=!0})),r}),y=r=>{const h=r.target;if(l.type==="checkbox"){const d=h.checked;t("update:modelValue",d),t("input",r)}else t("update:modelValue",h.value),t("input",r)},f=r=>t("focus",r),b=r=>t("blur",r),k=r=>t("change",r),g=r=>t("keydown",r),v=r=>t("keyup",r),B=r=>t("keypress",r);return n({focus:E}),(r,h)=>r.type==="select"?(e.openBlock(),e.createElementBlock("select",{key:0,id:p.value,ref_key:"inputElement",ref:s,class:e.normalizeClass(["border border-primary-stroke px-3 w-full",{"border-danger-base":e.unref(u)||r.invalid,"text-secondary-content":r.modelValue===""||r.modelValue==null,"rounded-full":r.rounded,"rounded-md":!r.rounded,"text-lg":r.large,"py-2.5":r.large,"py-2":!r.large}]),disabled:r.disabled,tabindex:r.tabindex,onInput:y,onFocus:f,onBlur:b,onChange:k,onKeydown:g,onKeyup:v,onKeypress:B},[r.placeholder?(e.openBlock(),e.createElementBlock("option",{key:0,selected:r.modelValue===""||r.modelValue==null,disabled:"",hidden:""},e.toDisplayString(r.placeholder),9,Q)):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.options,d=>(e.openBlock(),e.createElementBlock("option",{selected:d.key===r.modelValue,key:d.key,value:d.key},e.toDisplayString(d.value),9,R))),128))],42,J)):r.type==="textarea"?(e.openBlock(),e.createElementBlock("textarea",{key:1,name:r.name||e.unref(c),id:p.value,value:r.modelValue,rows:r.rows,cols:r.cols,maxlength:r.maxlength,minlength:r.minlength,spellcheck:r.spellcheck,placeholder:r.placeholder,disabled:r.disabled,readonly:r.readonly,tabindex:r.tabindex,"aria-label":r.ariaLabel,"aria-describedby":r.ariaDescribedby,onInput:y,onFocus:f,onBlur:b,onChange:k,onKeydown:g,onKeyup:v,onKeypress:B,class:e.normalizeClass(["border border-primary-stroke px-3 w-full placeholder-gray-400",{"border-danger-base":e.unref(u),"rounded-3xl":r.rounded,"rounded-md":!r.rounded,"text-lg":r.large,"py-2.5":r.large,"py-2":!r.large,"resize-none":r.resize==="none","resize-both":r.resize==="both","resize-x":r.resize==="horizontal","resize-y":r.resize==="vertical"}]),ref_key:"inputElement",ref:s},null,42,U)):r.type==="checkbox"?(e.openBlock(),e.createElementBlock("div",W,[e.createElementVNode("input",{type:r.type,name:r.name||e.unref(c),id:p.value,value:!0,disabled:r.disabled,readonly:r.readonly,tabindex:r.tabindex,"aria-label":r.ariaLabel,"aria-describedby":r.ariaDescribedby,checked:r.modelValue===!0,onInput:y,onFocus:f,onBlur:b,onChange:k,class:e.normalizeClass(["rounded-md border border-primary-stroke px-2 py-2 shadow-sm",{"border-danger-base":e.unref(u)||r.invalid}]),ref_key:"inputElement",ref:s},null,42,Y),e.createElementVNode("label",{for:p.value,class:"text-primary-content select-none"},e.toDisplayString(r.placeholder),9,Z)])):r.type==="radio"?(e.openBlock(),e.createElementBlock("div",x,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.options,(d,S)=>(e.openBlock(),e.createElementBlock("div",{key:d.key,class:"flex w-full space-x-3 items-center"},[e.createElementVNode("input",{type:"radio",name:r.name||e.unref(c),id:`${p.value}-${S}`,value:d.key,disabled:r.disabled,readonly:r.readonly,tabindex:r.tabindex,checked:d.key===r.modelValue,onInput:y,onFocus:f,onBlur:b,onChange:k,class:e.normalizeClass(["rounded-md border border-primary-stroke px-3 py-2 shadow-sm",{"border-danger-base":e.unref(u)||r.invalid}]),ref_for:!0,ref_key:"inputElement",ref:s},null,42,_),e.createElementVNode("label",{for:`${p.value}-${S}`,class:"text-primary-content select-none"},e.toDisplayString(d.value),9,ee)]))),128))])):(e.openBlock(),e.createElementBlock("div",re,[e.createElementVNode("div",le,[r.icon?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(r.icon),{key:0,class:"w-5 h-5 text-primary-content"})):e.createCommentVNode("",!0)]),e.createElementVNode("input",{type:m.value?"text":r.type,name:r.name||e.unref(c),id:p.value,value:r.modelValue,placeholder:r.placeholder,disabled:r.disabled,readonly:r.readonly,maxlength:r.maxlength,minlength:r.minlength,min:r.min,max:r.max,step:r.step,pattern:r.pattern,spellcheck:r.spellcheck,inputmode:r.inputmode,tabindex:r.tabindex,autocomplete:r.autocomplete,"aria-label":r.ariaLabel,"aria-describedby":r.ariaDescribedby,onInput:y,onFocus:f,onBlur:b,onChange:k,onKeydown:g,onKeyup:v,onKeypress:B,class:e.normalizeClass(["border border-primary-stroke w-full px-3 placeholder-gray-400 disabled:bg-gray-50",O.value]),ref_key:"inputElement",ref:s},null,42,ne),r.clearable&&F.value?(e.openBlock(),e.createElementBlock("div",{key:0,onClick:$,class:"absolute p-2 px-3 rounded-md h-full flex items-center right-0 top-0 hover:cursor-pointer select-none"},[e.createVNode(e.unref(j.render),{class:"w-5 h-5 text-secondary-content hover:text-primary-base"})])):r.type==="password"?(e.openBlock(),e.createElementBlock("div",{key:1,onClick:z,class:"absolute p-2 px-3 rounded-md h-full flex items-center right-0 top-0 hover:cursor-pointer select-none"},[m.value?(e.openBlock(),e.createBlock(e.unref(H),{key:0,class:"w-5 h-5 text-primary-content hover:text-primary-base"})):(e.openBlock(),e.createBlock(e.unref(G),{key:1,class:"w-5 h-5 text-secondary-content hover:text-primary-base"}))])):e.createCommentVNode("",!0)]))}}),te={class:"space-y-1"},oe={key:2,class:"text-xs text-secondary-content select-none"},ae=e.defineComponent({__name:"OneFormField",props:L,setup(i){const n=i,{formId:a,validation:l}=V(),t=e.computed(()=>n.errors!=null&&n.errors.length>0?!0:n.name==null?!1:(l.value??{})[n.name]!=null);return e.provide("BaseFormField",{inputId:e.computed(()=>{const o=a.value||"form";if(n.id!=null)return`${o}-${n.id}`;if(n.name!=null)return`${o}-field-${n.name}`}),inputName:e.computed(()=>n.name),hasError:t}),(o,c)=>(e.openBlock(),e.createElementBlock("div",te,[o.label?(e.openBlock(),e.createBlock(q,{key:0,label:o.label},{right:e.withCtx(()=>[e.renderSlot(o.$slots,"right")]),_:3},8,["label"])):e.createCommentVNode("",!0),e.renderSlot(o.$slots,"default",{},()=>[e.createVNode(N)]),t.value?(e.openBlock(),e.createBlock(C,{key:1,errors:o.errors},null,8,["errors"])):o.hint.length>0?(e.openBlock(),e.createElementBlock("p",oe,e.toDisplayString(o.hint),1)):e.createCommentVNode("",!0)]))}});exports.OneForm=K;exports.OneFormFeedback=C;exports.OneFormField=ae;exports.OneFormInput=N;exports.OneFormLabel=q;
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),n=require("../OneFormInput.vue_vue_type_script_setup_true_lang-f6f7cd96.cjs");require("../XMarkIcon-f94baa4c.cjs");const d=["id"],p=e.defineComponent({__name:"OneForm",props:n.formProps,emits:["submit"],setup(a,{emit:t}){const o=a,l=t;e.provide("BaseForm",{formId:e.computed(()=>o.id),validation:e.computed(()=>o.validation)});const s=()=>{l("submit")};return(r,i)=>(e.openBlock(),e.createElementBlock("form",{onSubmit:e.withModifiers(s,["prevent"]),id:r.id,class:"space-y-3"},[e.renderSlot(r.$slots,"default")],40,d))}}),f=["for"],m=e.defineComponent({__name:"OneFormLabel",props:n.formLabelProps,setup(a){const{inputId:t}=n.injectFormField();return(o,l)=>(e.openBlock(),e.createElementBlock("label",{for:e.unref(t),class:"text-sm font-medium text-primary-content select-none flex justify-between"},[e.createElementVNode("span",null,[e.renderSlot(o.$slots,"default",{},()=>[e.createTextVNode(e.toDisplayString(o.label),1)])]),e.renderSlot(o.$slots,"right")],8,f))}}),_={key:0,class:"text-danger-content text-xs space-y-1"},u=e.defineComponent({__name:"OneFormFeedback",props:n.formFeedbackProps,setup(a){const t=a,{validation:o}=n.injectForm(),{inputName:l}=n.injectFormField(),s=e.computed(()=>l.value==null&&t.name==null?t.errors??[]:o.value==null?t.errors??[]:(o.value??{})[t.name||l.value]??t.errors??[]);return(r,i)=>s.value.length>0?(e.openBlock(),e.createElementBlock("div",_,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.value,c=>(e.openBlock(),e.createElementBlock("div",{key:c},e.toDisplayString(c),1))),128))])):e.createCommentVNode("",!0)}}),v={class:"space-y-1"},k={key:2,class:"text-xs text-secondary-content select-none"},F=e.defineComponent({__name:"OneFormField",props:n.formFieldProps,setup(a){const t=a,{formId:o,validation:l}=n.injectForm(),s=e.computed(()=>t.errors!=null&&t.errors.length>0?!0:t.name==null?!1:(l.value??{})[t.name]!=null);return e.provide("BaseFormField",{inputId:e.computed(()=>{const r=o.value||"form";if(t.id!=null)return`${r}-${t.id}`;if(t.name!=null)return`${r}-field-${t.name}`}),inputName:e.computed(()=>t.name),hasError:s}),(r,i)=>(e.openBlock(),e.createElementBlock("div",v,[r.label?(e.openBlock(),e.createBlock(m,{key:0,label:r.label},{right:e.withCtx(()=>[e.renderSlot(r.$slots,"right")]),_:3},8,["label"])):e.createCommentVNode("",!0),e.renderSlot(r.$slots,"default",{},()=>[e.createVNode(n._sfc_main)]),s.value?(e.openBlock(),e.createBlock(u,{key:1,errors:r.errors},null,8,["errors"])):r.hint.length>0?(e.openBlock(),e.createElementBlock("p",k,e.toDisplayString(r.hint),1)):e.createCommentVNode("",!0)]))}});exports.OneFormInput=n._sfc_main;exports.OneForm=p;exports.OneFormFeedback=u;exports.OneFormField=F;exports.OneFormLabel=m;
|