admins-components 9.0.46 → 9.0.48
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/admins-components.js +63 -63
- package/dist/admins-components26.js +100 -97
- package/dist/admins-components26.js.map +1 -1
- package/dist/admins-components28.js.map +1 -1
- package/dist/admins-components3.js +14 -10
- package/dist/admins-components3.js.map +1 -1
- package/dist/admins-components35.js +17 -12
- package/dist/admins-components35.js.map +1 -1
- package/dist/admins-components37.js.map +1 -1
- package/dist/main.css +1 -1
- package/dist/main.css.map +1 -1
- package/dist/src/components/DropdownSelect.vue.d.ts +1 -0
- package/dist/src/components/HeaderComponent.vue.d.ts +8 -8
- package/dist/src/index.d.ts +1 -1
- package/dist/src/styles/components/header.scss_vue_type_style_index_0_src_true_lang.css +1 -1
- package/dist/src/utils/date.d.ts +1 -0
- package/package.json +1 -1
|
@@ -1,63 +1,63 @@
|
|
|
1
|
-
import { castToDate as e, earlierOf as t, endOfDay as n, formatDate as r, laterOf as i, localToUTCString as a, parseDate as o, startOfDay as s, startOfWeek as c } from "./admins-components3.js";
|
|
2
|
-
import
|
|
3
|
-
import { calendarConfigDefaults as
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import { debounce as
|
|
7
|
-
import
|
|
8
|
-
import
|
|
9
|
-
import
|
|
10
|
-
import
|
|
11
|
-
import
|
|
12
|
-
import
|
|
13
|
-
import
|
|
14
|
-
import
|
|
15
|
-
import
|
|
16
|
-
import
|
|
17
|
-
import
|
|
18
|
-
import
|
|
19
|
-
import
|
|
20
|
-
import
|
|
21
|
-
import { toast as
|
|
22
|
-
import
|
|
23
|
-
import { dataCardsSettingsDefaults as
|
|
24
|
-
import { booleanToString as
|
|
25
|
-
import
|
|
26
|
-
import
|
|
27
|
-
import { deepMerge as
|
|
28
|
-
import
|
|
29
|
-
import { getFullStorageKey as
|
|
30
|
-
import { getDefaultPaginator as
|
|
31
|
-
import
|
|
32
|
-
import { filterEmptyValues as
|
|
33
|
-
import
|
|
34
|
-
import
|
|
35
|
-
import
|
|
36
|
-
import { getUrlParam as
|
|
37
|
-
import { dataListDefaults as
|
|
38
|
-
import
|
|
39
|
-
import { isIpInUrl as
|
|
40
|
-
import { getCurrentSite as
|
|
41
|
-
import { vTooltip as
|
|
42
|
-
import { createNativeFetch as
|
|
43
|
-
import { FetchDetails as
|
|
44
|
-
import { useArticleEditorService as
|
|
45
|
-
import { useCurrentUser as
|
|
46
|
-
import { BackendService as
|
|
47
|
-
import { aoeConfig as
|
|
48
|
-
import
|
|
49
|
-
import { apeConfig as
|
|
50
|
-
import { configureImagePickerElement as
|
|
51
|
-
import
|
|
52
|
-
import
|
|
53
|
-
import { configureExternalArticleOfferElement as
|
|
54
|
-
import
|
|
55
|
-
import { configureGalleryImageSelectorElement as
|
|
56
|
-
import
|
|
57
|
-
import
|
|
58
|
-
import
|
|
59
|
-
import { configureInternalArticleOfferElement as
|
|
60
|
-
import
|
|
61
|
-
import { configurePartnerPickerElement as
|
|
62
|
-
import
|
|
63
|
-
export {
|
|
1
|
+
import { castToDate as e, earlierOf as t, endOfDay as n, formatDate as r, laterOf as i, localToUTCString as a, parseDate as o, startOfDay as s, startOfWeek as c, utcToString as l } from "./admins-components3.js";
|
|
2
|
+
import u from "./admins-components6.js";
|
|
3
|
+
import { calendarConfigDefaults as d, datePickerConfigDefaults as f, dateRangePickerConfigDefaults as p } from "./admins-components7.js";
|
|
4
|
+
import m from "./admins-components11.js";
|
|
5
|
+
import h from "./admins-components14.js";
|
|
6
|
+
import { debounce as g } from "./admins-components15.js";
|
|
7
|
+
import _ from "./admins-components17.js";
|
|
8
|
+
import v from "./admins-components19.js";
|
|
9
|
+
import y from "./admins-components22.js";
|
|
10
|
+
import b from "./admins-components25.js";
|
|
11
|
+
import x from "./admins-components28.js";
|
|
12
|
+
import S from "./admins-components30.js";
|
|
13
|
+
import C from "./admins-components34.js";
|
|
14
|
+
import w from "./admins-components37.js";
|
|
15
|
+
import T from "./admins-components40.js";
|
|
16
|
+
import E from "./admins-components42.js";
|
|
17
|
+
import D from "./admins-components45.js";
|
|
18
|
+
import O from "./admins-components48.js";
|
|
19
|
+
import k from "./admins-components50.js";
|
|
20
|
+
import A from "./admins-components52.js";
|
|
21
|
+
import { toast as j } from "./admins-components53.js";
|
|
22
|
+
import M from "./admins-components56.js";
|
|
23
|
+
import { dataCardsSettingsDefaults as N, dataListSettingsDefaults as P, dataTableSettingsDefaults as F } from "./admins-components58.js";
|
|
24
|
+
import { booleanToString as I, dataListConverters as L, enumMap as R, formatCurrency as z, formatNumber as B, identity as V, listToString as H, localToLocalString as U, shortUuid as W, textEllipse as G, utcToLocalString as K } from "./admins-components60.js";
|
|
25
|
+
import q from "./admins-components67.js";
|
|
26
|
+
import J from "./admins-components70.js";
|
|
27
|
+
import { deepMerge as Y } from "./admins-components71.js";
|
|
28
|
+
import X from "./admins-components74.js";
|
|
29
|
+
import { getFullStorageKey as Z } from "./admins-components75.js";
|
|
30
|
+
import { getDefaultPaginator as Q } from "./admins-components76.js";
|
|
31
|
+
import $ from "./admins-components78.js";
|
|
32
|
+
import { filterEmptyValues as ee, getDefaultFilters as te, getDefaultSavedFilter as ne, getFilterUrlParams as re, getSavedFilters as ie, writeFilterParams as ae } from "./admins-components80.js";
|
|
33
|
+
import oe from "./admins-components83.js";
|
|
34
|
+
import se from "./admins-components86.js";
|
|
35
|
+
import ce from "./admins-components89.js";
|
|
36
|
+
import { getUrlParam as le, joinUrl as ue, removeUrlParam as de, setUrlParam as fe } from "./admins-components93.js";
|
|
37
|
+
import { dataListDefaults as pe } from "./admins-components97.js";
|
|
38
|
+
import me from "./admins-components99.js";
|
|
39
|
+
import { isIpInUrl as he } from "./admins-components100.js";
|
|
40
|
+
import { getCurrentSite as ge } from "./admins-components101.js";
|
|
41
|
+
import { vTooltip as _e } from "./admins-components102.js";
|
|
42
|
+
import { createNativeFetch as ve } from "./admins-components103.js";
|
|
43
|
+
import { FetchDetails as ye, FetchError as be, Methods as xe, initRequest as Se } from "./admins-components104.js";
|
|
44
|
+
import { useArticleEditorService as Ce } from "./admins-components105.js";
|
|
45
|
+
import { useCurrentUser as we } from "./admins-components106.js";
|
|
46
|
+
import { BackendService as Te, useBackendService as Ee } from "./admins-components107.js";
|
|
47
|
+
import { aoeConfig as De, configureArticleOfferElement as Oe } from "./admins-components160.js";
|
|
48
|
+
import ke from "./admins-components162.js";
|
|
49
|
+
import { apeConfig as Ae, configureArticlePickerElement as je } from "./admins-components163.js";
|
|
50
|
+
import { configureImagePickerElement as Me, ipeConfig as Ne } from "./admins-components164.js";
|
|
51
|
+
import Pe from "./admins-components166.js";
|
|
52
|
+
import Fe from "./admins-components167.js";
|
|
53
|
+
import { configureExternalArticleOfferElement as Ie, eaoeConfig as Le } from "./admins-components168.js";
|
|
54
|
+
import Re from "./admins-components169.js";
|
|
55
|
+
import { configureGalleryImageSelectorElement as ze, gisConfig as Be } from "./admins-components170.js";
|
|
56
|
+
import Ve from "./admins-components171.js";
|
|
57
|
+
import He from "./admins-components172.js";
|
|
58
|
+
import Ue from "./admins-components173.js";
|
|
59
|
+
import { configureInternalArticleOfferElement as We, iaoeConfig as Ge } from "./admins-components174.js";
|
|
60
|
+
import Ke from "./admins-components175.js";
|
|
61
|
+
import { configurePartnerPickerElement as qe, ppeconfig as Je } from "./admins-components176.js";
|
|
62
|
+
import Ye from "./admins-components178.js";
|
|
63
|
+
export { ke as ArticleOfferElement, Pe as ArticlePickerElement, Te as BackendService, u as Button, m as Calendar, v as Checkbox, E as ConfirmModal, D as CopyToClipboard, J as DataCards, se as DataFilters, me as DataList, X as DataListOptions, $ as DataPaginator, q as DataTable, h as DatePicker, y as DateRangePicker, Fe as DateTimePickerElement, S as DropdownMenu, x as DropdownSelect, k as ExternalArticleOffer, Re as ExternalArticleOfferElement, ye as FetchDetails, be as FetchError, ce as FilterTags, oe as FiltersHistory, Ve as GalleryImageSelectorElement, w as HeaderComponent, O as ImagePicker, Ue as ImagePickerDetailsElement, He as ImagePickerElement, A as InternalArticleOffer, Ke as InternalArticleOfferElement, b as Loader, xe as Methods, T as Modal, Ye as PartnerPickerElement, C as Sidebar, _ as TextInput, M as ToastNotification, De as aoeConfig, Ae as apeConfig, I as booleanToString, d as calendarConfigDefaults, e as castToDate, Oe as configureArticleOfferElement, je as configureArticlePickerElement, Ie as configureExternalArticleOfferElement, ze as configureGalleryImageSelectorElement, Me as configureImagePickerElement, We as configureInternalArticleOfferElement, qe as configurePartnerPickerElement, ve as createNativeFetch, N as dataCardsSettingsDefaults, L as dataListConverters, pe as dataListDefaults, P as dataListSettingsDefaults, F as dataTableSettingsDefaults, f as datePickerConfigDefaults, p as dateRangePickerConfigDefaults, g as debounce, Y as deepMerge, Le as eaoeConfig, t as earlierOf, n as endOfDay, R as enumMap, ee as filterEmptyValues, z as formatCurrency, r as formatDate, B as formatNumber, ge as getCurrentSite, te as getDefaultFilters, Q as getDefaultPaginator, ne as getDefaultSavedFilter, re as getFilterUrlParams, Z as getFullStorageKey, ie as getSavedFilters, le as getUrlParam, Be as gisConfig, Ge as iaoeConfig, V as identity, Se as initRequest, Ne as ipeConfig, he as isIpInUrl, ue as joinUrl, i as laterOf, H as listToString, U as localToLocalString, a as localToUTCString, o as parseDate, Je as ppeconfig, de as removeUrlParam, fe as setUrlParam, W as shortUuid, s as startOfDay, c as startOfWeek, G as textEllipse, j as toast, Ce as useArticleEditorService, Ee as useBackendService, we as useCurrentUser, K as utcToLocalString, l as utcToString, _e as vTooltip, ae as writeFilterParams };
|
|
@@ -1,26 +1,26 @@
|
|
|
1
1
|
import e from "./admins-components6.js";
|
|
2
2
|
import t from "./admins-components25.js";
|
|
3
|
-
import { Fragment as n, computed as r, createBlock as i, createCommentVNode as a, createElementBlock as o, createElementVNode as s, createVNode as
|
|
3
|
+
import { Fragment as n, computed as r, createBlock as i, createCommentVNode as a, createElementBlock as o, createElementVNode as s, createVNode as ee, defineComponent as c, nextTick as l, normalizeClass as u, onBeforeUnmount as d, onMounted as f, openBlock as p, ref as m, renderList as h, toDisplayString as g, watch as _, withModifiers as v } from "vue";
|
|
4
4
|
//#region src/components/DropdownSelect.vue?vue&type=script&setup=true&lang.ts
|
|
5
|
-
var y = { class: "ac-component" }, te = {
|
|
5
|
+
var y = { class: "ac-component" }, b = ["aria-disabled"], te = {
|
|
6
6
|
key: 0,
|
|
7
7
|
class: "c-truncate ds-value"
|
|
8
8
|
}, ne = {
|
|
9
9
|
key: 1,
|
|
10
10
|
class: "c-placeholder"
|
|
11
|
-
},
|
|
11
|
+
}, x = {
|
|
12
12
|
key: 0,
|
|
13
13
|
class: "ds-filter"
|
|
14
|
-
},
|
|
14
|
+
}, S = ["title"], C = ["value", "placeholder"], w = { class: "ds-options c-scroll" }, T = {
|
|
15
15
|
key: 0,
|
|
16
16
|
class: "ds-option ds-option--loading"
|
|
17
|
-
},
|
|
17
|
+
}, E = ["onClick", "onKeydown"], D = ["innerHTML"], O = {
|
|
18
18
|
key: 0,
|
|
19
19
|
class: "ds-option ds-option--empty"
|
|
20
|
-
},
|
|
20
|
+
}, k = {
|
|
21
21
|
key: 1,
|
|
22
22
|
class: "c-footer"
|
|
23
|
-
},
|
|
23
|
+
}, A = {
|
|
24
24
|
placeholder: "Válassz...",
|
|
25
25
|
filterable: !0,
|
|
26
26
|
filterPlaceholder: "Kezdj el gépelni...",
|
|
@@ -30,36 +30,37 @@ var y = { class: "ac-component" }, te = {
|
|
|
30
30
|
lazy: !1,
|
|
31
31
|
loading: !1,
|
|
32
32
|
size: "normal",
|
|
33
|
-
highlight: !0
|
|
34
|
-
|
|
33
|
+
highlight: !0,
|
|
34
|
+
disabled: !1
|
|
35
|
+
}, j = /* @__PURE__ */ c({
|
|
35
36
|
__name: "DropdownSelect",
|
|
36
37
|
props: {
|
|
37
38
|
modelValue: { default: null },
|
|
38
39
|
options: {},
|
|
39
|
-
config: { default: () => ({ ...
|
|
40
|
+
config: { default: () => ({ ...A }) }
|
|
40
41
|
},
|
|
41
42
|
emits: ["update:modelValue", "filter-input"],
|
|
42
|
-
setup(
|
|
43
|
-
let
|
|
44
|
-
...
|
|
45
|
-
...
|
|
46
|
-
})),
|
|
47
|
-
function
|
|
43
|
+
setup(c, { expose: j, emit: re }) {
|
|
44
|
+
let M = c, N = r(() => ({
|
|
45
|
+
...A,
|
|
46
|
+
...M.config
|
|
47
|
+
})), P = re, F = m(!1), I = m(""), L = m(null), R = m(null), z = m([]), B = m(V(M.modelValue));
|
|
48
|
+
function V(e) {
|
|
48
49
|
return e == null ? [] : Array.isArray(e) ? [...e] : [e];
|
|
49
50
|
}
|
|
50
|
-
_(() =>
|
|
51
|
-
|
|
52
|
-
}), _(
|
|
53
|
-
e && (
|
|
51
|
+
_(() => M.modelValue, (e) => {
|
|
52
|
+
B.value = V(e);
|
|
53
|
+
}), _(F, (e) => {
|
|
54
|
+
e && (I.value = "", N.value.filterable && l(() => R.value?.focus()), N.value.lazy && (z.value = [...B.value]));
|
|
54
55
|
});
|
|
55
|
-
function
|
|
56
|
-
|
|
56
|
+
function H(e) {
|
|
57
|
+
I.value = e, P("filter-input", e);
|
|
57
58
|
}
|
|
58
|
-
let
|
|
59
|
-
let e =
|
|
60
|
-
return e ?
|
|
59
|
+
let U = r(() => B.value.length === 0 ? null : N.value.multiple ? B.value.length > 2 ? `${B.value.length} kiválasztva` : B.value.map((e) => M.options.find((t) => t.value === e)?.label ?? e).join(", ") : M.options.find((e) => e.value === B.value[0])?.label ?? null), W = r(() => {
|
|
60
|
+
let e = I.value.toLowerCase();
|
|
61
|
+
return e ? M.options.filter((t) => t.label.toLowerCase().includes(e)) : M.options;
|
|
61
62
|
});
|
|
62
|
-
function
|
|
63
|
+
function G(e) {
|
|
63
64
|
return e.replace(/[&<>"']/g, (e) => ({
|
|
64
65
|
"&": "&",
|
|
65
66
|
"<": "<",
|
|
@@ -68,28 +69,28 @@ var y = { class: "ac-component" }, te = {
|
|
|
68
69
|
"'": "'"
|
|
69
70
|
})[e]);
|
|
70
71
|
}
|
|
71
|
-
function
|
|
72
|
-
let t =
|
|
73
|
-
if (!t || !
|
|
74
|
-
let n =
|
|
72
|
+
function K(e) {
|
|
73
|
+
let t = I.value.trim();
|
|
74
|
+
if (!t || !N.value.highlight) return G(e);
|
|
75
|
+
let n = G(e), r = G(t), i = new RegExp(r.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"), "ig");
|
|
75
76
|
return n.replace(i, (e) => `<mark class="ds-option__highlight">${e}</mark>`);
|
|
76
77
|
}
|
|
77
|
-
let
|
|
78
|
-
if (
|
|
79
|
-
let e =
|
|
80
|
-
return
|
|
78
|
+
let q = r(() => W.value.filter((e) => e.value)), J = r(() => {
|
|
79
|
+
if (q.value.length === 0) return !1;
|
|
80
|
+
let e = N.value.lazy && F.value ? z.value : B.value;
|
|
81
|
+
return q.value.every((t) => t.value && e.includes(t.value));
|
|
81
82
|
});
|
|
82
|
-
function
|
|
83
|
-
return (
|
|
83
|
+
function Y(e) {
|
|
84
|
+
return (N.value.lazy && F.value ? z : B).value.includes(e);
|
|
84
85
|
}
|
|
85
|
-
function
|
|
86
|
-
let e =
|
|
87
|
-
if (
|
|
86
|
+
function ie() {
|
|
87
|
+
let e = N.value.lazy && F.value ? z : B, t = q.value.map((e) => e.value);
|
|
88
|
+
if (J.value) e.value = e.value.filter((e) => !t.includes(e));
|
|
88
89
|
else {
|
|
89
90
|
let n = t.filter((t) => !e.value.includes(t));
|
|
90
91
|
e.value = [...e.value, ...n];
|
|
91
92
|
}
|
|
92
|
-
|
|
93
|
+
N.value.lazy || P("update:modelValue", B.value.length > 0 ? [...B.value] : null);
|
|
93
94
|
}
|
|
94
95
|
function X(e, t) {
|
|
95
96
|
let n = e.indexOf(t);
|
|
@@ -97,120 +98,122 @@ var y = { class: "ac-component" }, te = {
|
|
|
97
98
|
}
|
|
98
99
|
function Z(e) {
|
|
99
100
|
if (e.callback) {
|
|
100
|
-
e.callback(),
|
|
101
|
+
e.callback(), F.value = !1;
|
|
101
102
|
return;
|
|
102
103
|
}
|
|
103
104
|
let t = e.value;
|
|
104
|
-
t && (
|
|
105
|
+
t && (N.value.multiple ? N.value.lazy ? z.value = X(z.value, t) : (B.value = X(B.value, t), P("update:modelValue", B.value.length > 0 ? [...B.value] : null)) : (B.value = [t], P("update:modelValue", t), F.value = !1));
|
|
105
106
|
}
|
|
106
107
|
function Q() {
|
|
107
|
-
|
|
108
|
+
N.value.lazy && (B.value = [...z.value], P("update:modelValue", z.value.length > 0 ? [...z.value] : null)), F.value = !1;
|
|
108
109
|
}
|
|
109
|
-
function
|
|
110
|
-
|
|
110
|
+
function ae() {
|
|
111
|
+
N.value.lazy ? z.value = [] : (B.value = [], P("update:modelValue", null));
|
|
111
112
|
}
|
|
112
|
-
function
|
|
113
|
+
function oe(e, t) {
|
|
113
114
|
e.key === " " ? (e.preventDefault(), Z(t)) : e.key === "Enter" && (e.preventDefault(), Q());
|
|
114
115
|
}
|
|
115
116
|
function $(e) {
|
|
116
|
-
|
|
117
|
+
L.value && !L.value.contains(e.target) && (F.value = !1);
|
|
117
118
|
}
|
|
118
|
-
|
|
119
|
+
f(() => document.addEventListener("mousedown", $)), d(() => {
|
|
119
120
|
document.removeEventListener("mousedown", $);
|
|
120
121
|
});
|
|
121
|
-
function oe() {
|
|
122
|
-
P.value = !P.value, P.value && M.value.filterable && (F.value = "", N("filter-input", ""));
|
|
123
|
-
}
|
|
124
122
|
function se() {
|
|
125
|
-
|
|
123
|
+
N.value.disabled || (F.value = !F.value, F.value && N.value.filterable && (I.value = "", P("filter-input", "")));
|
|
126
124
|
}
|
|
127
125
|
function ce() {
|
|
128
|
-
|
|
126
|
+
N.value.disabled || (B.value = [], P("update:modelValue", null), F.value = !1);
|
|
129
127
|
}
|
|
130
128
|
function le() {
|
|
131
|
-
F.value =
|
|
129
|
+
N.value.disabled || (F.value = !0, N.value.filterable && l(() => R.value?.focus()));
|
|
130
|
+
}
|
|
131
|
+
function ue() {
|
|
132
|
+
I.value = "", P("filter-input", "");
|
|
132
133
|
}
|
|
133
|
-
return
|
|
134
|
+
return j({ focusAndOpen: le }), (r, c) => (p(), o("div", y, [s("div", {
|
|
134
135
|
ref_key: "wrapperRef",
|
|
135
|
-
ref:
|
|
136
|
+
ref: L,
|
|
136
137
|
class: "c-wrapper ds-wrapper"
|
|
137
138
|
}, [s("div", {
|
|
138
|
-
class:
|
|
139
|
-
"c-input-row--sm":
|
|
140
|
-
"c-input-row--lg":
|
|
139
|
+
class: u(["c-input-row pointer", {
|
|
140
|
+
"c-input-row--sm": N.value.size === "small",
|
|
141
|
+
"c-input-row--lg": N.value.size === "large",
|
|
142
|
+
"c-input-row--disabled": N.value.disabled
|
|
141
143
|
}]),
|
|
142
|
-
|
|
144
|
+
"aria-disabled": N.value.disabled || void 0,
|
|
145
|
+
onClick: c[1] ||= (e) => se()
|
|
143
146
|
}, [
|
|
144
|
-
|
|
145
|
-
|
|
147
|
+
U.value ? (p(), o("span", te, g(U.value), 1)) : (p(), o("span", ne, g(N.value.placeholder), 1)),
|
|
148
|
+
N.value.clearable && B.value.length > 0 ? (p(), o("button", {
|
|
146
149
|
key: 2,
|
|
147
150
|
type: "button",
|
|
148
151
|
class: "c-icon-btn c-icon-btn--clear ds-clear-btn",
|
|
149
|
-
onClick:
|
|
152
|
+
onClick: c[0] ||= v((e) => ce(), ["stop"]),
|
|
150
153
|
"aria-label": "Törlés"
|
|
151
|
-
}, [...
|
|
152
|
-
s("span", { class:
|
|
153
|
-
],
|
|
154
|
+
}, [...c[6] ||= [s("i", { class: "fa-solid fa-fw fa-xmark" }, null, -1)]])) : a("", !0),
|
|
155
|
+
s("span", { class: u(["c-icon-btn c-icon-btn--chevron mr-2", { "c-icon-btn--chevron-open": F.value }]) }, [...c[7] ||= [s("i", { class: "fa-solid fa-fw fa-chevron-down" }, null, -1)]], 2)
|
|
156
|
+
], 10, b), F.value ? (p(), o("div", {
|
|
154
157
|
key: 0,
|
|
155
|
-
class:
|
|
158
|
+
class: u(["c-dropdown ds-dropdown ac-component", { "ds-dropdown--multiple": N.value.multiple }])
|
|
156
159
|
}, [
|
|
157
|
-
|
|
158
|
-
|
|
160
|
+
N.value.filterable ? (p(), o("div", x, [
|
|
161
|
+
N.value.multiple ? (p(), o("span", {
|
|
159
162
|
key: 0,
|
|
160
|
-
class:
|
|
161
|
-
onClick:
|
|
162
|
-
title:
|
|
163
|
-
}, null, 10,
|
|
163
|
+
class: u(["c-checkbox ds-select-all-checkbox", { "c-checkbox--checked": J.value }]),
|
|
164
|
+
onClick: c[2] ||= v((e) => ie(), ["stop"]),
|
|
165
|
+
title: J.value ? "Összes kijelölés törlése" : "Összes kijelölése"
|
|
166
|
+
}, null, 10, S)) : a("", !0),
|
|
164
167
|
s("input", {
|
|
165
168
|
ref_key: "filterInputRef",
|
|
166
|
-
ref:
|
|
169
|
+
ref: R,
|
|
167
170
|
type: "text",
|
|
168
171
|
id: "ds-filter-input",
|
|
169
172
|
class: "c-focus ds-filter-input",
|
|
170
|
-
value:
|
|
171
|
-
onInput:
|
|
173
|
+
value: I.value,
|
|
174
|
+
onInput: c[3] ||= (e) => H(e.target.value),
|
|
172
175
|
autocomplete: "off",
|
|
173
|
-
placeholder:
|
|
174
|
-
onClick:
|
|
175
|
-
}, null, 40,
|
|
176
|
-
|
|
176
|
+
placeholder: N.value.filterPlaceholder,
|
|
177
|
+
onClick: c[4] ||= v(() => {}, ["stop"])
|
|
178
|
+
}, null, 40, C),
|
|
179
|
+
I.value ? (p(), o("button", {
|
|
177
180
|
key: 1,
|
|
178
181
|
type: "button",
|
|
179
182
|
class: "c-icon-btn c-icon-btn--clear ds-filter-clear",
|
|
180
|
-
onClick:
|
|
183
|
+
onClick: c[5] ||= v((e) => ue(), ["stop"]),
|
|
181
184
|
"aria-label": "Szűrők törlése"
|
|
182
|
-
}, [...
|
|
185
|
+
}, [...c[8] ||= [s("i", { class: "fa-solid fa-xmark" }, null, -1)]])) : a("", !0)
|
|
183
186
|
])) : a("", !0),
|
|
184
|
-
s("ul",
|
|
187
|
+
s("ul", w, [N.value.loading ? (p(), o("li", T, [ee(t, {
|
|
185
188
|
size: "2rem",
|
|
186
189
|
color: "var(--neutral-300)",
|
|
187
190
|
class: "m-auto p-3"
|
|
188
|
-
})])) : (p(), o(n, { key: 1 }, [(p(!0), o(n, null, h(
|
|
191
|
+
})])) : (p(), o(n, { key: 1 }, [(p(!0), o(n, null, h(W.value, (e, t) => (p(), o("li", {
|
|
189
192
|
key: e.value ?? `cb-${t}`,
|
|
190
|
-
class:
|
|
193
|
+
class: u(["d-option ds-option", { "ds-option--selected": e.value && Y(e.value) }]),
|
|
191
194
|
tabindex: "0",
|
|
192
195
|
onClick: (t) => Z(e),
|
|
193
|
-
onKeydown: (t) =>
|
|
196
|
+
onKeydown: (t) => oe(t, e)
|
|
194
197
|
}, [
|
|
195
|
-
|
|
198
|
+
N.value.multiple && e.value ? (p(), o("span", {
|
|
196
199
|
key: 0,
|
|
197
|
-
class:
|
|
200
|
+
class: u(["c-checkbox", { "c-checkbox--checked": Y(e.value) }])
|
|
198
201
|
}, null, 2)) : a("", !0),
|
|
199
202
|
e.icon ? (p(), o("i", {
|
|
200
203
|
key: 1,
|
|
201
|
-
class:
|
|
204
|
+
class: u(["fa-fw", e.icon])
|
|
202
205
|
}, null, 2)) : a("", !0),
|
|
203
206
|
s("span", {
|
|
204
|
-
class:
|
|
205
|
-
innerHTML:
|
|
206
|
-
}, null, 10,
|
|
207
|
-
], 42,
|
|
208
|
-
|
|
207
|
+
class: u(["d-option__label", { "c-truncate": N.value.textEllipsis }]),
|
|
208
|
+
innerHTML: K(e.label)
|
|
209
|
+
}, null, 10, D)
|
|
210
|
+
], 42, E))), 128)), W.value.length === 0 ? (p(), o("li", O, " Nincs találat ")) : a("", !0)], 64))]),
|
|
211
|
+
N.value.multiple || N.value.clearable && B.value.length > 0 ? (p(), o("div", k, [N.value.clearable ? (p(), i(e, {
|
|
209
212
|
key: 0,
|
|
210
213
|
label: "Törlés",
|
|
211
214
|
outline: "",
|
|
212
|
-
onClick:
|
|
213
|
-
})) : a("", !0),
|
|
215
|
+
onClick: ae
|
|
216
|
+
})) : a("", !0), N.value.multiple ? (p(), i(e, {
|
|
214
217
|
key: 1,
|
|
215
218
|
label: "OK",
|
|
216
219
|
type: "success",
|
|
@@ -220,4 +223,4 @@ var y = { class: "ac-component" }, te = {
|
|
|
220
223
|
}
|
|
221
224
|
});
|
|
222
225
|
//#endregion
|
|
223
|
-
export {
|
|
226
|
+
export { j as default, A as dropdownSelectConfigDefaults };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admins-components26.js","names":[],"sources":["../src/components/DropdownSelect.vue"],"sourcesContent":["<script lang=\"ts\">\nexport interface DropdownSelectConfig {\n placeholder?: string\n filterable?: boolean\n filterPlaceholder?: string\n clearable?: boolean\n textEllipsis?: boolean\n multiple?: boolean\n lazy?: boolean\n size?: ControlSize\n loading?: boolean\n highlight?: boolean\n}\n\nexport const dropdownSelectConfigDefaults: DropdownSelectConfig = {\n placeholder: 'Válassz...',\n filterable: true,\n filterPlaceholder: 'Kezdj el gépelni...',\n clearable: true,\n textEllipsis: true,\n multiple: false,\n lazy: false,\n loading: false,\n size: 'normal' as ControlSize,\n highlight: true,\n}\n\nexport interface DropdownOption {\n icon?: string\n value?: string\n label: string\n callback?: () => void\n}\n\nexport interface DropdownSelectProps {\n modelValue?: string | string[] | null\n options: DropdownOption[]\n config?: DropdownSelectConfig\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { ref, computed, watch, nextTick, onMounted, onBeforeUnmount } from 'vue'\nimport Button from '@/components/Button.vue'\nimport type { ControlSize } from '@/types/types'\nimport Loader from '@/components/Loader.vue'\n\nconst props = withDefaults(defineProps<DropdownSelectProps>(), {\n modelValue: null,\n config: () => ({ ...dropdownSelectConfigDefaults }),\n})\n\nconst cfg = computed(() => ({ ...dropdownSelectConfigDefaults, ...props.config }))\n\nconst emit = defineEmits<{\n 'update:modelValue': [value: string | string[] | null]\n 'filter-input': [filterText: string]\n}>()\n\nconst isOpen = ref(false)\nconst filterText = ref('')\nconst wrapperRef = ref<HTMLElement | null>(null)\nconst filterInputRef = ref<HTMLInputElement | null>(null)\nconst buffer = ref<string[]>([])\nconst selection = ref<string[]>(toArray(props.modelValue))\n\nfunction toArray(val: string | string[] | null | undefined): string[] {\n if (val == null) return []\n return Array.isArray(val) ? [...val] : [val]\n}\n\nwatch(\n () => props.modelValue,\n (v) => {\n selection.value = toArray(v)\n },\n)\n\nwatch(isOpen, (open) => {\n if (open) {\n filterText.value = ''\n if (cfg.value.filterable) nextTick(() => filterInputRef.value?.focus())\n if (cfg.value.lazy) buffer.value = [...selection.value]\n }\n})\n\nfunction onFilterInput(text: string) {\n filterText.value = text\n emit('filter-input', text)\n //debouncedEmit(text)\n}\n\n/* const debouncedEmit = debounce((raw: string) => {\n emit('filter-input', raw)\n}) */\n\n// Display\nconst selectedLabel = computed(() => {\n if (selection.value.length === 0) return null\n if (!cfg.value.multiple)\n return props.options.find((o) => o.value === selection.value[0])?.label ?? null\n if (selection.value.length > 2) return `${selection.value.length} kiválasztva`\n return selection.value.map((v) => props.options.find((o) => o.value === v)?.label ?? v).join(', ')\n})\n\nconst filteredOptions = computed(() => {\n const q = filterText.value.toLowerCase()\n return q ? props.options.filter((o) => o.label.toLowerCase().includes(q)) : props.options\n})\n\nfunction escapeHtml(str: string) {\n return str.replace(\n /[&<>\"']/g,\n (m) => ({ '&': '&', '<': '<', '>': '>', '\"': '"', \"'\": ''' })[m]!,\n )\n}\n\nfunction highlight(label: string) {\n const q = filterText.value.trim()\n if (!q || !cfg.value.highlight) return escapeHtml(label)\n\n const safeLabel = escapeHtml(label)\n const safeQ = escapeHtml(q)\n\n const re = new RegExp(safeQ.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&'), 'ig')\n return safeLabel.replace(re, (m) => `<mark class=\"ds-option__highlight\">${m}</mark>`)\n}\n\nconst selectableOptions = computed(() => {\n return filteredOptions.value.filter((o) => o.value)\n})\n\nconst allOptionsSelected = computed(() => {\n if (selectableOptions.value.length === 0) return false\n const currentList = cfg.value.lazy && isOpen.value ? buffer.value : selection.value\n return selectableOptions.value.every((o) => o.value && currentList.includes(o.value))\n})\n\nfunction isSelected(value: string): boolean {\n return (cfg.value.lazy && isOpen.value ? buffer : selection).value.includes(value)\n}\n\nfunction toggleAllOptions() {\n const currentList = cfg.value.lazy && isOpen.value ? buffer : selection\n const selectableValues = selectableOptions.value.map((o) => o.value as string)\n\n if (allOptionsSelected.value) {\n currentList.value = currentList.value.filter((v) => !selectableValues.includes(v))\n } else {\n const toAdd = selectableValues.filter((v) => !currentList.value.includes(v))\n currentList.value = [...currentList.value, ...toAdd]\n }\n\n if (!cfg.value.lazy) {\n emit('update:modelValue', selection.value.length > 0 ? [...selection.value] : null)\n }\n}\n\n// Actions\nfunction toggleList(list: string[], value: string): string[] {\n const idx = list.indexOf(value)\n return idx >= 0 ? list.filter((_, i) => i !== idx) : [...list, value]\n}\n\nfunction selectOption(opt: DropdownOption) {\n if (opt.callback) {\n opt.callback()\n isOpen.value = false\n return\n }\n\n const value = opt.value\n if (!value) return\n\n if (cfg.value.multiple) {\n if (cfg.value.lazy) {\n buffer.value = toggleList(buffer.value, value)\n } else {\n selection.value = toggleList(selection.value, value)\n emit('update:modelValue', selection.value.length > 0 ? [...selection.value] : null)\n }\n } else {\n selection.value = [value]\n emit('update:modelValue', value)\n isOpen.value = false\n }\n}\n\nfunction confirm() {\n if (cfg.value.lazy) {\n selection.value = [...buffer.value]\n emit('update:modelValue', buffer.value.length > 0 ? [...buffer.value] : null)\n }\n isOpen.value = false\n}\n\nfunction clear() {\n if (cfg.value.lazy) {\n buffer.value = []\n } else {\n selection.value = []\n emit('update:modelValue', null)\n }\n}\n\nfunction onOptionKeydown(e: KeyboardEvent, opt: DropdownOption) {\n if (e.key === ' ') {\n e.preventDefault()\n selectOption(opt)\n } else if (e.key === 'Enter') {\n e.preventDefault()\n confirm()\n }\n}\n\nfunction onClickOutside(e: MouseEvent) {\n if (wrapperRef.value && !wrapperRef.value.contains(e.target as Node)) isOpen.value = false\n}\n\nonMounted(() => document.addEventListener('mousedown', onClickOutside))\nonBeforeUnmount(() => {\n document.removeEventListener('mousedown', onClickOutside)\n})\n\nfunction toggleOpen() {\n isOpen.value = !isOpen.value\n if (isOpen.value) {\n if (cfg.value.filterable) {\n filterText.value = ''\n emit('filter-input', '')\n }\n }\n}\n\nfunction clearInput() {\n selection.value = []\n emit('update:modelValue', null)\n isOpen.value = false\n}\n\nfunction focusAndOpen() {\n isOpen.value = true\n if (cfg.value.filterable) nextTick(() => filterInputRef.value?.focus())\n}\n\nfunction handleFilterClear() {\n filterText.value = ''\n emit('filter-input', '')\n}\n\ndefineExpose({ focusAndOpen })\n</script>\n\n<template>\n <div class=\"ac-component\">\n <div ref=\"wrapperRef\" class=\"c-wrapper ds-wrapper\">\n <div\n class=\"c-input-row pointer\"\n :class=\"{\n 'c-input-row--sm': cfg.size === 'small',\n 'c-input-row--lg': cfg.size === 'large',\n }\"\n @click=\"toggleOpen()\"\n >\n <span v-if=\"selectedLabel\" class=\"c-truncate ds-value\">{{ selectedLabel }}</span>\n <span v-else class=\"c-placeholder\">{{ cfg.placeholder }}</span>\n <button\n v-if=\"cfg.clearable && selection.length > 0\"\n type=\"button\"\n class=\"c-icon-btn c-icon-btn--clear ds-clear-btn\"\n @click.stop=\"clearInput()\"\n aria-label=\"Törlés\"\n >\n <i class=\"fa-solid fa-fw fa-xmark\"></i>\n </button>\n <span\n class=\"c-icon-btn c-icon-btn--chevron mr-2\"\n :class=\"{ 'c-icon-btn--chevron-open': isOpen }\"\n >\n <i class=\"fa-solid fa-fw fa-chevron-down\"></i>\n </span>\n </div>\n\n <div\n v-if=\"isOpen\"\n class=\"c-dropdown ds-dropdown ac-component\"\n :class=\"{ 'ds-dropdown--multiple': cfg.multiple }\"\n >\n <div v-if=\"cfg.filterable\" class=\"ds-filter\">\n <span\n v-if=\"cfg.multiple\"\n class=\"c-checkbox ds-select-all-checkbox\"\n :class=\"{ 'c-checkbox--checked': allOptionsSelected }\"\n @click.stop=\"toggleAllOptions()\"\n :title=\"allOptionsSelected ? 'Összes kijelölés törlése' : 'Összes kijelölése'\"\n ></span>\n <input\n ref=\"filterInputRef\"\n type=\"text\"\n id=\"ds-filter-input\"\n class=\"c-focus ds-filter-input\"\n :value=\"filterText\"\n @input=\"onFilterInput(($event.target as HTMLInputElement).value)\"\n autocomplete=\"off\"\n :placeholder=\"cfg.filterPlaceholder\"\n @click.stop\n />\n <button\n v-if=\"filterText\"\n type=\"button\"\n class=\"c-icon-btn c-icon-btn--clear ds-filter-clear\"\n @click.stop=\"handleFilterClear()\"\n aria-label=\"Szűrők törlése\"\n >\n <i class=\"fa-solid fa-xmark\"></i>\n </button>\n </div>\n\n <ul class=\"ds-options c-scroll\">\n <li v-if=\"cfg.loading\" class=\"ds-option ds-option--loading\">\n <Loader size=\"2rem\" color=\"var(--neutral-300)\" class=\"m-auto p-3\" />\n </li>\n <template v-else>\n <li\n v-for=\"(opt, idx) in filteredOptions\"\n :key=\"opt.value ?? `cb-${idx}`\"\n class=\"d-option ds-option\"\n :class=\"{ 'ds-option--selected': opt.value && isSelected(opt.value) }\"\n tabindex=\"0\"\n @click=\"selectOption(opt)\"\n @keydown=\"onOptionKeydown($event, opt)\"\n >\n <span\n v-if=\"cfg.multiple && opt.value\"\n class=\"c-checkbox\"\n :class=\"{ 'c-checkbox--checked': isSelected(opt.value) }\"\n ></span>\n <i v-if=\"opt.icon\" class=\"fa-fw\" :class=\"opt.icon\"></i>\n <span\n class=\"d-option__label\"\n :class=\"{ 'c-truncate': cfg.textEllipsis }\"\n v-html=\"highlight(opt.label)\"\n ></span>\n </li>\n <li v-if=\"filteredOptions.length === 0\" class=\"ds-option ds-option--empty\">\n Nincs találat\n </li>\n </template>\n </ul>\n\n <div v-if=\"cfg.multiple || (cfg.clearable && selection.length > 0)\" class=\"c-footer\">\n <Button v-if=\"cfg.clearable\" label=\"Törlés\" outline @click=\"clear\" />\n <Button v-if=\"cfg.multiple\" label=\"OK\" type=\"success\" @click=\"confirm\" />\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<style lang=\"scss\" src=\"@/styles/components/dropdown-select.scss\"></style>\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"admins-components26.js","names":[],"sources":["../src/components/DropdownSelect.vue"],"sourcesContent":["<script lang=\"ts\">\nexport interface DropdownSelectConfig {\n placeholder?: string\n filterable?: boolean\n filterPlaceholder?: string\n clearable?: boolean\n textEllipsis?: boolean\n multiple?: boolean\n lazy?: boolean\n size?: ControlSize\n loading?: boolean\n highlight?: boolean\n disabled?: boolean\n}\n\nexport const dropdownSelectConfigDefaults: DropdownSelectConfig = {\n placeholder: 'Válassz...',\n filterable: true,\n filterPlaceholder: 'Kezdj el gépelni...',\n clearable: true,\n textEllipsis: true,\n multiple: false,\n lazy: false,\n loading: false,\n size: 'normal' as ControlSize,\n highlight: true,\n disabled: false,\n}\n\nexport interface DropdownOption {\n icon?: string\n value?: string\n label: string\n callback?: () => void\n}\n\nexport interface DropdownSelectProps {\n modelValue?: string | string[] | null\n options: DropdownOption[]\n config?: DropdownSelectConfig\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { ref, computed, watch, nextTick, onMounted, onBeforeUnmount } from 'vue'\nimport Button from '@/components/Button.vue'\nimport type { ControlSize } from '@/types/types'\nimport Loader from '@/components/Loader.vue'\n\nconst props = withDefaults(defineProps<DropdownSelectProps>(), {\n modelValue: null,\n config: () => ({ ...dropdownSelectConfigDefaults }),\n})\n\nconst cfg = computed(() => ({ ...dropdownSelectConfigDefaults, ...props.config }))\n\nconst emit = defineEmits<{\n 'update:modelValue': [value: string | string[] | null]\n 'filter-input': [filterText: string]\n}>()\n\nconst isOpen = ref(false)\nconst filterText = ref('')\nconst wrapperRef = ref<HTMLElement | null>(null)\nconst filterInputRef = ref<HTMLInputElement | null>(null)\nconst buffer = ref<string[]>([])\nconst selection = ref<string[]>(toArray(props.modelValue))\n\nfunction toArray(val: string | string[] | null | undefined): string[] {\n if (val == null) return []\n return Array.isArray(val) ? [...val] : [val]\n}\n\nwatch(\n () => props.modelValue,\n (v) => {\n selection.value = toArray(v)\n },\n)\n\nwatch(isOpen, (open) => {\n if (open) {\n filterText.value = ''\n if (cfg.value.filterable) nextTick(() => filterInputRef.value?.focus())\n if (cfg.value.lazy) buffer.value = [...selection.value]\n }\n})\n\nfunction onFilterInput(text: string) {\n filterText.value = text\n emit('filter-input', text)\n //debouncedEmit(text)\n}\n\n/* const debouncedEmit = debounce((raw: string) => {\n emit('filter-input', raw)\n}) */\n\n// Display\nconst selectedLabel = computed(() => {\n if (selection.value.length === 0) return null\n if (!cfg.value.multiple)\n return props.options.find((o) => o.value === selection.value[0])?.label ?? null\n if (selection.value.length > 2) return `${selection.value.length} kiválasztva`\n return selection.value.map((v) => props.options.find((o) => o.value === v)?.label ?? v).join(', ')\n})\n\nconst filteredOptions = computed(() => {\n const q = filterText.value.toLowerCase()\n return q ? props.options.filter((o) => o.label.toLowerCase().includes(q)) : props.options\n})\n\nfunction escapeHtml(str: string) {\n return str.replace(\n /[&<>\"']/g,\n (m) => ({ '&': '&', '<': '<', '>': '>', '\"': '"', \"'\": ''' })[m]!,\n )\n}\n\nfunction highlight(label: string) {\n const q = filterText.value.trim()\n if (!q || !cfg.value.highlight) return escapeHtml(label)\n\n const safeLabel = escapeHtml(label)\n const safeQ = escapeHtml(q)\n\n const re = new RegExp(safeQ.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&'), 'ig')\n return safeLabel.replace(re, (m) => `<mark class=\"ds-option__highlight\">${m}</mark>`)\n}\n\nconst selectableOptions = computed(() => {\n return filteredOptions.value.filter((o) => o.value)\n})\n\nconst allOptionsSelected = computed(() => {\n if (selectableOptions.value.length === 0) return false\n const currentList = cfg.value.lazy && isOpen.value ? buffer.value : selection.value\n return selectableOptions.value.every((o) => o.value && currentList.includes(o.value))\n})\n\nfunction isSelected(value: string): boolean {\n return (cfg.value.lazy && isOpen.value ? buffer : selection).value.includes(value)\n}\n\nfunction toggleAllOptions() {\n const currentList = cfg.value.lazy && isOpen.value ? buffer : selection\n const selectableValues = selectableOptions.value.map((o) => o.value as string)\n\n if (allOptionsSelected.value) {\n currentList.value = currentList.value.filter((v) => !selectableValues.includes(v))\n } else {\n const toAdd = selectableValues.filter((v) => !currentList.value.includes(v))\n currentList.value = [...currentList.value, ...toAdd]\n }\n\n if (!cfg.value.lazy) {\n emit('update:modelValue', selection.value.length > 0 ? [...selection.value] : null)\n }\n}\n\n// Actions\nfunction toggleList(list: string[], value: string): string[] {\n const idx = list.indexOf(value)\n return idx >= 0 ? list.filter((_, i) => i !== idx) : [...list, value]\n}\n\nfunction selectOption(opt: DropdownOption) {\n if (opt.callback) {\n opt.callback()\n isOpen.value = false\n return\n }\n\n const value = opt.value\n if (!value) return\n\n if (cfg.value.multiple) {\n if (cfg.value.lazy) {\n buffer.value = toggleList(buffer.value, value)\n } else {\n selection.value = toggleList(selection.value, value)\n emit('update:modelValue', selection.value.length > 0 ? [...selection.value] : null)\n }\n } else {\n selection.value = [value]\n emit('update:modelValue', value)\n isOpen.value = false\n }\n}\n\nfunction confirm() {\n if (cfg.value.lazy) {\n selection.value = [...buffer.value]\n emit('update:modelValue', buffer.value.length > 0 ? [...buffer.value] : null)\n }\n isOpen.value = false\n}\n\nfunction clear() {\n if (cfg.value.lazy) {\n buffer.value = []\n } else {\n selection.value = []\n emit('update:modelValue', null)\n }\n}\n\nfunction onOptionKeydown(e: KeyboardEvent, opt: DropdownOption) {\n if (e.key === ' ') {\n e.preventDefault()\n selectOption(opt)\n } else if (e.key === 'Enter') {\n e.preventDefault()\n confirm()\n }\n}\n\nfunction onClickOutside(e: MouseEvent) {\n if (wrapperRef.value && !wrapperRef.value.contains(e.target as Node)) isOpen.value = false\n}\n\nonMounted(() => document.addEventListener('mousedown', onClickOutside))\nonBeforeUnmount(() => {\n document.removeEventListener('mousedown', onClickOutside)\n})\n\nfunction toggleOpen() {\n if (cfg.value.disabled) return\n isOpen.value = !isOpen.value\n if (isOpen.value) {\n if (cfg.value.filterable) {\n filterText.value = ''\n emit('filter-input', '')\n }\n }\n}\n\nfunction clearInput() {\n if (cfg.value.disabled) return\n selection.value = []\n emit('update:modelValue', null)\n isOpen.value = false\n}\n\nfunction focusAndOpen() {\n if (cfg.value.disabled) return\n isOpen.value = true\n if (cfg.value.filterable) nextTick(() => filterInputRef.value?.focus())\n}\n\nfunction handleFilterClear() {\n filterText.value = ''\n emit('filter-input', '')\n}\n\ndefineExpose({ focusAndOpen })\n</script>\n\n<template>\n <div class=\"ac-component\">\n <div ref=\"wrapperRef\" class=\"c-wrapper ds-wrapper\">\n <div\n class=\"c-input-row pointer\"\n :class=\"{\n 'c-input-row--sm': cfg.size === 'small',\n 'c-input-row--lg': cfg.size === 'large',\n 'c-input-row--disabled': cfg.disabled,\n }\"\n :aria-disabled=\"cfg.disabled || undefined\"\n @click=\"toggleOpen()\"\n >\n <span v-if=\"selectedLabel\" class=\"c-truncate ds-value\">{{ selectedLabel }}</span>\n <span v-else class=\"c-placeholder\">{{ cfg.placeholder }}</span>\n <button\n v-if=\"cfg.clearable && selection.length > 0\"\n type=\"button\"\n class=\"c-icon-btn c-icon-btn--clear ds-clear-btn\"\n @click.stop=\"clearInput()\"\n aria-label=\"Törlés\"\n >\n <i class=\"fa-solid fa-fw fa-xmark\"></i>\n </button>\n <span\n class=\"c-icon-btn c-icon-btn--chevron mr-2\"\n :class=\"{ 'c-icon-btn--chevron-open': isOpen }\"\n >\n <i class=\"fa-solid fa-fw fa-chevron-down\"></i>\n </span>\n </div>\n\n <div\n v-if=\"isOpen\"\n class=\"c-dropdown ds-dropdown ac-component\"\n :class=\"{ 'ds-dropdown--multiple': cfg.multiple }\"\n >\n <div v-if=\"cfg.filterable\" class=\"ds-filter\">\n <span\n v-if=\"cfg.multiple\"\n class=\"c-checkbox ds-select-all-checkbox\"\n :class=\"{ 'c-checkbox--checked': allOptionsSelected }\"\n @click.stop=\"toggleAllOptions()\"\n :title=\"allOptionsSelected ? 'Összes kijelölés törlése' : 'Összes kijelölése'\"\n ></span>\n <input\n ref=\"filterInputRef\"\n type=\"text\"\n id=\"ds-filter-input\"\n class=\"c-focus ds-filter-input\"\n :value=\"filterText\"\n @input=\"onFilterInput(($event.target as HTMLInputElement).value)\"\n autocomplete=\"off\"\n :placeholder=\"cfg.filterPlaceholder\"\n @click.stop\n />\n <button\n v-if=\"filterText\"\n type=\"button\"\n class=\"c-icon-btn c-icon-btn--clear ds-filter-clear\"\n @click.stop=\"handleFilterClear()\"\n aria-label=\"Szűrők törlése\"\n >\n <i class=\"fa-solid fa-xmark\"></i>\n </button>\n </div>\n\n <ul class=\"ds-options c-scroll\">\n <li v-if=\"cfg.loading\" class=\"ds-option ds-option--loading\">\n <Loader size=\"2rem\" color=\"var(--neutral-300)\" class=\"m-auto p-3\" />\n </li>\n <template v-else>\n <li\n v-for=\"(opt, idx) in filteredOptions\"\n :key=\"opt.value ?? `cb-${idx}`\"\n class=\"d-option ds-option\"\n :class=\"{ 'ds-option--selected': opt.value && isSelected(opt.value) }\"\n tabindex=\"0\"\n @click=\"selectOption(opt)\"\n @keydown=\"onOptionKeydown($event, opt)\"\n >\n <span\n v-if=\"cfg.multiple && opt.value\"\n class=\"c-checkbox\"\n :class=\"{ 'c-checkbox--checked': isSelected(opt.value) }\"\n ></span>\n <i v-if=\"opt.icon\" class=\"fa-fw\" :class=\"opt.icon\"></i>\n <span\n class=\"d-option__label\"\n :class=\"{ 'c-truncate': cfg.textEllipsis }\"\n v-html=\"highlight(opt.label)\"\n ></span>\n </li>\n <li v-if=\"filteredOptions.length === 0\" class=\"ds-option ds-option--empty\">\n Nincs találat\n </li>\n </template>\n </ul>\n\n <div v-if=\"cfg.multiple || (cfg.clearable && selection.length > 0)\" class=\"c-footer\">\n <Button v-if=\"cfg.clearable\" label=\"Törlés\" outline @click=\"clear\" />\n <Button v-if=\"cfg.multiple\" label=\"OK\" type=\"success\" @click=\"confirm\" />\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<style lang=\"scss\" src=\"@/styles/components/dropdown-select.scss\"></style>\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admins-components28.js","names":[],"sources":["../src/components/DropdownSelect.vue"],"sourcesContent":["<script lang=\"ts\">\nexport interface DropdownSelectConfig {\n placeholder?: string\n filterable?: boolean\n filterPlaceholder?: string\n clearable?: boolean\n textEllipsis?: boolean\n multiple?: boolean\n lazy?: boolean\n size?: ControlSize\n loading?: boolean\n highlight?: boolean\n}\n\nexport const dropdownSelectConfigDefaults: DropdownSelectConfig = {\n placeholder: 'Válassz...',\n filterable: true,\n filterPlaceholder: 'Kezdj el gépelni...',\n clearable: true,\n textEllipsis: true,\n multiple: false,\n lazy: false,\n loading: false,\n size: 'normal' as ControlSize,\n highlight: true,\n}\n\nexport interface DropdownOption {\n icon?: string\n value?: string\n label: string\n callback?: () => void\n}\n\nexport interface DropdownSelectProps {\n modelValue?: string | string[] | null\n options: DropdownOption[]\n config?: DropdownSelectConfig\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { ref, computed, watch, nextTick, onMounted, onBeforeUnmount } from 'vue'\nimport Button from '@/components/Button.vue'\nimport type { ControlSize } from '@/types/types'\nimport Loader from '@/components/Loader.vue'\n\nconst props = withDefaults(defineProps<DropdownSelectProps>(), {\n modelValue: null,\n config: () => ({ ...dropdownSelectConfigDefaults }),\n})\n\nconst cfg = computed(() => ({ ...dropdownSelectConfigDefaults, ...props.config }))\n\nconst emit = defineEmits<{\n 'update:modelValue': [value: string | string[] | null]\n 'filter-input': [filterText: string]\n}>()\n\nconst isOpen = ref(false)\nconst filterText = ref('')\nconst wrapperRef = ref<HTMLElement | null>(null)\nconst filterInputRef = ref<HTMLInputElement | null>(null)\nconst buffer = ref<string[]>([])\nconst selection = ref<string[]>(toArray(props.modelValue))\n\nfunction toArray(val: string | string[] | null | undefined): string[] {\n if (val == null) return []\n return Array.isArray(val) ? [...val] : [val]\n}\n\nwatch(\n () => props.modelValue,\n (v) => {\n selection.value = toArray(v)\n },\n)\n\nwatch(isOpen, (open) => {\n if (open) {\n filterText.value = ''\n if (cfg.value.filterable) nextTick(() => filterInputRef.value?.focus())\n if (cfg.value.lazy) buffer.value = [...selection.value]\n }\n})\n\nfunction onFilterInput(text: string) {\n filterText.value = text\n emit('filter-input', text)\n //debouncedEmit(text)\n}\n\n/* const debouncedEmit = debounce((raw: string) => {\n emit('filter-input', raw)\n}) */\n\n// Display\nconst selectedLabel = computed(() => {\n if (selection.value.length === 0) return null\n if (!cfg.value.multiple)\n return props.options.find((o) => o.value === selection.value[0])?.label ?? null\n if (selection.value.length > 2) return `${selection.value.length} kiválasztva`\n return selection.value.map((v) => props.options.find((o) => o.value === v)?.label ?? v).join(', ')\n})\n\nconst filteredOptions = computed(() => {\n const q = filterText.value.toLowerCase()\n return q ? props.options.filter((o) => o.label.toLowerCase().includes(q)) : props.options\n})\n\nfunction escapeHtml(str: string) {\n return str.replace(\n /[&<>\"']/g,\n (m) => ({ '&': '&', '<': '<', '>': '>', '\"': '"', \"'\": ''' })[m]!,\n )\n}\n\nfunction highlight(label: string) {\n const q = filterText.value.trim()\n if (!q || !cfg.value.highlight) return escapeHtml(label)\n\n const safeLabel = escapeHtml(label)\n const safeQ = escapeHtml(q)\n\n const re = new RegExp(safeQ.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&'), 'ig')\n return safeLabel.replace(re, (m) => `<mark class=\"ds-option__highlight\">${m}</mark>`)\n}\n\nconst selectableOptions = computed(() => {\n return filteredOptions.value.filter((o) => o.value)\n})\n\nconst allOptionsSelected = computed(() => {\n if (selectableOptions.value.length === 0) return false\n const currentList = cfg.value.lazy && isOpen.value ? buffer.value : selection.value\n return selectableOptions.value.every((o) => o.value && currentList.includes(o.value))\n})\n\nfunction isSelected(value: string): boolean {\n return (cfg.value.lazy && isOpen.value ? buffer : selection).value.includes(value)\n}\n\nfunction toggleAllOptions() {\n const currentList = cfg.value.lazy && isOpen.value ? buffer : selection\n const selectableValues = selectableOptions.value.map((o) => o.value as string)\n\n if (allOptionsSelected.value) {\n currentList.value = currentList.value.filter((v) => !selectableValues.includes(v))\n } else {\n const toAdd = selectableValues.filter((v) => !currentList.value.includes(v))\n currentList.value = [...currentList.value, ...toAdd]\n }\n\n if (!cfg.value.lazy) {\n emit('update:modelValue', selection.value.length > 0 ? [...selection.value] : null)\n }\n}\n\n// Actions\nfunction toggleList(list: string[], value: string): string[] {\n const idx = list.indexOf(value)\n return idx >= 0 ? list.filter((_, i) => i !== idx) : [...list, value]\n}\n\nfunction selectOption(opt: DropdownOption) {\n if (opt.callback) {\n opt.callback()\n isOpen.value = false\n return\n }\n\n const value = opt.value\n if (!value) return\n\n if (cfg.value.multiple) {\n if (cfg.value.lazy) {\n buffer.value = toggleList(buffer.value, value)\n } else {\n selection.value = toggleList(selection.value, value)\n emit('update:modelValue', selection.value.length > 0 ? [...selection.value] : null)\n }\n } else {\n selection.value = [value]\n emit('update:modelValue', value)\n isOpen.value = false\n }\n}\n\nfunction confirm() {\n if (cfg.value.lazy) {\n selection.value = [...buffer.value]\n emit('update:modelValue', buffer.value.length > 0 ? [...buffer.value] : null)\n }\n isOpen.value = false\n}\n\nfunction clear() {\n if (cfg.value.lazy) {\n buffer.value = []\n } else {\n selection.value = []\n emit('update:modelValue', null)\n }\n}\n\nfunction onOptionKeydown(e: KeyboardEvent, opt: DropdownOption) {\n if (e.key === ' ') {\n e.preventDefault()\n selectOption(opt)\n } else if (e.key === 'Enter') {\n e.preventDefault()\n confirm()\n }\n}\n\nfunction onClickOutside(e: MouseEvent) {\n if (wrapperRef.value && !wrapperRef.value.contains(e.target as Node)) isOpen.value = false\n}\n\nonMounted(() => document.addEventListener('mousedown', onClickOutside))\nonBeforeUnmount(() => {\n document.removeEventListener('mousedown', onClickOutside)\n})\n\nfunction toggleOpen() {\n isOpen.value = !isOpen.value\n if (isOpen.value) {\n if (cfg.value.filterable) {\n filterText.value = ''\n emit('filter-input', '')\n }\n }\n}\n\nfunction clearInput() {\n selection.value = []\n emit('update:modelValue', null)\n isOpen.value = false\n}\n\nfunction focusAndOpen() {\n isOpen.value = true\n if (cfg.value.filterable) nextTick(() => filterInputRef.value?.focus())\n}\n\nfunction handleFilterClear() {\n filterText.value = ''\n emit('filter-input', '')\n}\n\ndefineExpose({ focusAndOpen })\n</script>\n\n<template>\n <div class=\"ac-component\">\n <div ref=\"wrapperRef\" class=\"c-wrapper ds-wrapper\">\n <div\n class=\"c-input-row pointer\"\n :class=\"{\n 'c-input-row--sm': cfg.size === 'small',\n 'c-input-row--lg': cfg.size === 'large',\n }\"\n @click=\"toggleOpen()\"\n >\n <span v-if=\"selectedLabel\" class=\"c-truncate ds-value\">{{ selectedLabel }}</span>\n <span v-else class=\"c-placeholder\">{{ cfg.placeholder }}</span>\n <button\n v-if=\"cfg.clearable && selection.length > 0\"\n type=\"button\"\n class=\"c-icon-btn c-icon-btn--clear ds-clear-btn\"\n @click.stop=\"clearInput()\"\n aria-label=\"Törlés\"\n >\n <i class=\"fa-solid fa-fw fa-xmark\"></i>\n </button>\n <span\n class=\"c-icon-btn c-icon-btn--chevron mr-2\"\n :class=\"{ 'c-icon-btn--chevron-open': isOpen }\"\n >\n <i class=\"fa-solid fa-fw fa-chevron-down\"></i>\n </span>\n </div>\n\n <div\n v-if=\"isOpen\"\n class=\"c-dropdown ds-dropdown ac-component\"\n :class=\"{ 'ds-dropdown--multiple': cfg.multiple }\"\n >\n <div v-if=\"cfg.filterable\" class=\"ds-filter\">\n <span\n v-if=\"cfg.multiple\"\n class=\"c-checkbox ds-select-all-checkbox\"\n :class=\"{ 'c-checkbox--checked': allOptionsSelected }\"\n @click.stop=\"toggleAllOptions()\"\n :title=\"allOptionsSelected ? 'Összes kijelölés törlése' : 'Összes kijelölése'\"\n ></span>\n <input\n ref=\"filterInputRef\"\n type=\"text\"\n id=\"ds-filter-input\"\n class=\"c-focus ds-filter-input\"\n :value=\"filterText\"\n @input=\"onFilterInput(($event.target as HTMLInputElement).value)\"\n autocomplete=\"off\"\n :placeholder=\"cfg.filterPlaceholder\"\n @click.stop\n />\n <button\n v-if=\"filterText\"\n type=\"button\"\n class=\"c-icon-btn c-icon-btn--clear ds-filter-clear\"\n @click.stop=\"handleFilterClear()\"\n aria-label=\"Szűrők törlése\"\n >\n <i class=\"fa-solid fa-xmark\"></i>\n </button>\n </div>\n\n <ul class=\"ds-options c-scroll\">\n <li v-if=\"cfg.loading\" class=\"ds-option ds-option--loading\">\n <Loader size=\"2rem\" color=\"var(--neutral-300)\" class=\"m-auto p-3\" />\n </li>\n <template v-else>\n <li\n v-for=\"(opt, idx) in filteredOptions\"\n :key=\"opt.value ?? `cb-${idx}`\"\n class=\"d-option ds-option\"\n :class=\"{ 'ds-option--selected': opt.value && isSelected(opt.value) }\"\n tabindex=\"0\"\n @click=\"selectOption(opt)\"\n @keydown=\"onOptionKeydown($event, opt)\"\n >\n <span\n v-if=\"cfg.multiple && opt.value\"\n class=\"c-checkbox\"\n :class=\"{ 'c-checkbox--checked': isSelected(opt.value) }\"\n ></span>\n <i v-if=\"opt.icon\" class=\"fa-fw\" :class=\"opt.icon\"></i>\n <span\n class=\"d-option__label\"\n :class=\"{ 'c-truncate': cfg.textEllipsis }\"\n v-html=\"highlight(opt.label)\"\n ></span>\n </li>\n <li v-if=\"filteredOptions.length === 0\" class=\"ds-option ds-option--empty\">\n Nincs találat\n </li>\n </template>\n </ul>\n\n <div v-if=\"cfg.multiple || (cfg.clearable && selection.length > 0)\" class=\"c-footer\">\n <Button v-if=\"cfg.clearable\" label=\"Törlés\" outline @click=\"clear\" />\n <Button v-if=\"cfg.multiple\" label=\"OK\" type=\"success\" @click=\"confirm\" />\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<style lang=\"scss\" src=\"@/styles/components/dropdown-select.scss\"></style>\n"],"mappings":""}
|
|
1
|
+
{"version":3,"file":"admins-components28.js","names":[],"sources":["../src/components/DropdownSelect.vue"],"sourcesContent":["<script lang=\"ts\">\nexport interface DropdownSelectConfig {\n placeholder?: string\n filterable?: boolean\n filterPlaceholder?: string\n clearable?: boolean\n textEllipsis?: boolean\n multiple?: boolean\n lazy?: boolean\n size?: ControlSize\n loading?: boolean\n highlight?: boolean\n disabled?: boolean\n}\n\nexport const dropdownSelectConfigDefaults: DropdownSelectConfig = {\n placeholder: 'Válassz...',\n filterable: true,\n filterPlaceholder: 'Kezdj el gépelni...',\n clearable: true,\n textEllipsis: true,\n multiple: false,\n lazy: false,\n loading: false,\n size: 'normal' as ControlSize,\n highlight: true,\n disabled: false,\n}\n\nexport interface DropdownOption {\n icon?: string\n value?: string\n label: string\n callback?: () => void\n}\n\nexport interface DropdownSelectProps {\n modelValue?: string | string[] | null\n options: DropdownOption[]\n config?: DropdownSelectConfig\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { ref, computed, watch, nextTick, onMounted, onBeforeUnmount } from 'vue'\nimport Button from '@/components/Button.vue'\nimport type { ControlSize } from '@/types/types'\nimport Loader from '@/components/Loader.vue'\n\nconst props = withDefaults(defineProps<DropdownSelectProps>(), {\n modelValue: null,\n config: () => ({ ...dropdownSelectConfigDefaults }),\n})\n\nconst cfg = computed(() => ({ ...dropdownSelectConfigDefaults, ...props.config }))\n\nconst emit = defineEmits<{\n 'update:modelValue': [value: string | string[] | null]\n 'filter-input': [filterText: string]\n}>()\n\nconst isOpen = ref(false)\nconst filterText = ref('')\nconst wrapperRef = ref<HTMLElement | null>(null)\nconst filterInputRef = ref<HTMLInputElement | null>(null)\nconst buffer = ref<string[]>([])\nconst selection = ref<string[]>(toArray(props.modelValue))\n\nfunction toArray(val: string | string[] | null | undefined): string[] {\n if (val == null) return []\n return Array.isArray(val) ? [...val] : [val]\n}\n\nwatch(\n () => props.modelValue,\n (v) => {\n selection.value = toArray(v)\n },\n)\n\nwatch(isOpen, (open) => {\n if (open) {\n filterText.value = ''\n if (cfg.value.filterable) nextTick(() => filterInputRef.value?.focus())\n if (cfg.value.lazy) buffer.value = [...selection.value]\n }\n})\n\nfunction onFilterInput(text: string) {\n filterText.value = text\n emit('filter-input', text)\n //debouncedEmit(text)\n}\n\n/* const debouncedEmit = debounce((raw: string) => {\n emit('filter-input', raw)\n}) */\n\n// Display\nconst selectedLabel = computed(() => {\n if (selection.value.length === 0) return null\n if (!cfg.value.multiple)\n return props.options.find((o) => o.value === selection.value[0])?.label ?? null\n if (selection.value.length > 2) return `${selection.value.length} kiválasztva`\n return selection.value.map((v) => props.options.find((o) => o.value === v)?.label ?? v).join(', ')\n})\n\nconst filteredOptions = computed(() => {\n const q = filterText.value.toLowerCase()\n return q ? props.options.filter((o) => o.label.toLowerCase().includes(q)) : props.options\n})\n\nfunction escapeHtml(str: string) {\n return str.replace(\n /[&<>\"']/g,\n (m) => ({ '&': '&', '<': '<', '>': '>', '\"': '"', \"'\": ''' })[m]!,\n )\n}\n\nfunction highlight(label: string) {\n const q = filterText.value.trim()\n if (!q || !cfg.value.highlight) return escapeHtml(label)\n\n const safeLabel = escapeHtml(label)\n const safeQ = escapeHtml(q)\n\n const re = new RegExp(safeQ.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&'), 'ig')\n return safeLabel.replace(re, (m) => `<mark class=\"ds-option__highlight\">${m}</mark>`)\n}\n\nconst selectableOptions = computed(() => {\n return filteredOptions.value.filter((o) => o.value)\n})\n\nconst allOptionsSelected = computed(() => {\n if (selectableOptions.value.length === 0) return false\n const currentList = cfg.value.lazy && isOpen.value ? buffer.value : selection.value\n return selectableOptions.value.every((o) => o.value && currentList.includes(o.value))\n})\n\nfunction isSelected(value: string): boolean {\n return (cfg.value.lazy && isOpen.value ? buffer : selection).value.includes(value)\n}\n\nfunction toggleAllOptions() {\n const currentList = cfg.value.lazy && isOpen.value ? buffer : selection\n const selectableValues = selectableOptions.value.map((o) => o.value as string)\n\n if (allOptionsSelected.value) {\n currentList.value = currentList.value.filter((v) => !selectableValues.includes(v))\n } else {\n const toAdd = selectableValues.filter((v) => !currentList.value.includes(v))\n currentList.value = [...currentList.value, ...toAdd]\n }\n\n if (!cfg.value.lazy) {\n emit('update:modelValue', selection.value.length > 0 ? [...selection.value] : null)\n }\n}\n\n// Actions\nfunction toggleList(list: string[], value: string): string[] {\n const idx = list.indexOf(value)\n return idx >= 0 ? list.filter((_, i) => i !== idx) : [...list, value]\n}\n\nfunction selectOption(opt: DropdownOption) {\n if (opt.callback) {\n opt.callback()\n isOpen.value = false\n return\n }\n\n const value = opt.value\n if (!value) return\n\n if (cfg.value.multiple) {\n if (cfg.value.lazy) {\n buffer.value = toggleList(buffer.value, value)\n } else {\n selection.value = toggleList(selection.value, value)\n emit('update:modelValue', selection.value.length > 0 ? [...selection.value] : null)\n }\n } else {\n selection.value = [value]\n emit('update:modelValue', value)\n isOpen.value = false\n }\n}\n\nfunction confirm() {\n if (cfg.value.lazy) {\n selection.value = [...buffer.value]\n emit('update:modelValue', buffer.value.length > 0 ? [...buffer.value] : null)\n }\n isOpen.value = false\n}\n\nfunction clear() {\n if (cfg.value.lazy) {\n buffer.value = []\n } else {\n selection.value = []\n emit('update:modelValue', null)\n }\n}\n\nfunction onOptionKeydown(e: KeyboardEvent, opt: DropdownOption) {\n if (e.key === ' ') {\n e.preventDefault()\n selectOption(opt)\n } else if (e.key === 'Enter') {\n e.preventDefault()\n confirm()\n }\n}\n\nfunction onClickOutside(e: MouseEvent) {\n if (wrapperRef.value && !wrapperRef.value.contains(e.target as Node)) isOpen.value = false\n}\n\nonMounted(() => document.addEventListener('mousedown', onClickOutside))\nonBeforeUnmount(() => {\n document.removeEventListener('mousedown', onClickOutside)\n})\n\nfunction toggleOpen() {\n if (cfg.value.disabled) return\n isOpen.value = !isOpen.value\n if (isOpen.value) {\n if (cfg.value.filterable) {\n filterText.value = ''\n emit('filter-input', '')\n }\n }\n}\n\nfunction clearInput() {\n if (cfg.value.disabled) return\n selection.value = []\n emit('update:modelValue', null)\n isOpen.value = false\n}\n\nfunction focusAndOpen() {\n if (cfg.value.disabled) return\n isOpen.value = true\n if (cfg.value.filterable) nextTick(() => filterInputRef.value?.focus())\n}\n\nfunction handleFilterClear() {\n filterText.value = ''\n emit('filter-input', '')\n}\n\ndefineExpose({ focusAndOpen })\n</script>\n\n<template>\n <div class=\"ac-component\">\n <div ref=\"wrapperRef\" class=\"c-wrapper ds-wrapper\">\n <div\n class=\"c-input-row pointer\"\n :class=\"{\n 'c-input-row--sm': cfg.size === 'small',\n 'c-input-row--lg': cfg.size === 'large',\n 'c-input-row--disabled': cfg.disabled,\n }\"\n :aria-disabled=\"cfg.disabled || undefined\"\n @click=\"toggleOpen()\"\n >\n <span v-if=\"selectedLabel\" class=\"c-truncate ds-value\">{{ selectedLabel }}</span>\n <span v-else class=\"c-placeholder\">{{ cfg.placeholder }}</span>\n <button\n v-if=\"cfg.clearable && selection.length > 0\"\n type=\"button\"\n class=\"c-icon-btn c-icon-btn--clear ds-clear-btn\"\n @click.stop=\"clearInput()\"\n aria-label=\"Törlés\"\n >\n <i class=\"fa-solid fa-fw fa-xmark\"></i>\n </button>\n <span\n class=\"c-icon-btn c-icon-btn--chevron mr-2\"\n :class=\"{ 'c-icon-btn--chevron-open': isOpen }\"\n >\n <i class=\"fa-solid fa-fw fa-chevron-down\"></i>\n </span>\n </div>\n\n <div\n v-if=\"isOpen\"\n class=\"c-dropdown ds-dropdown ac-component\"\n :class=\"{ 'ds-dropdown--multiple': cfg.multiple }\"\n >\n <div v-if=\"cfg.filterable\" class=\"ds-filter\">\n <span\n v-if=\"cfg.multiple\"\n class=\"c-checkbox ds-select-all-checkbox\"\n :class=\"{ 'c-checkbox--checked': allOptionsSelected }\"\n @click.stop=\"toggleAllOptions()\"\n :title=\"allOptionsSelected ? 'Összes kijelölés törlése' : 'Összes kijelölése'\"\n ></span>\n <input\n ref=\"filterInputRef\"\n type=\"text\"\n id=\"ds-filter-input\"\n class=\"c-focus ds-filter-input\"\n :value=\"filterText\"\n @input=\"onFilterInput(($event.target as HTMLInputElement).value)\"\n autocomplete=\"off\"\n :placeholder=\"cfg.filterPlaceholder\"\n @click.stop\n />\n <button\n v-if=\"filterText\"\n type=\"button\"\n class=\"c-icon-btn c-icon-btn--clear ds-filter-clear\"\n @click.stop=\"handleFilterClear()\"\n aria-label=\"Szűrők törlése\"\n >\n <i class=\"fa-solid fa-xmark\"></i>\n </button>\n </div>\n\n <ul class=\"ds-options c-scroll\">\n <li v-if=\"cfg.loading\" class=\"ds-option ds-option--loading\">\n <Loader size=\"2rem\" color=\"var(--neutral-300)\" class=\"m-auto p-3\" />\n </li>\n <template v-else>\n <li\n v-for=\"(opt, idx) in filteredOptions\"\n :key=\"opt.value ?? `cb-${idx}`\"\n class=\"d-option ds-option\"\n :class=\"{ 'ds-option--selected': opt.value && isSelected(opt.value) }\"\n tabindex=\"0\"\n @click=\"selectOption(opt)\"\n @keydown=\"onOptionKeydown($event, opt)\"\n >\n <span\n v-if=\"cfg.multiple && opt.value\"\n class=\"c-checkbox\"\n :class=\"{ 'c-checkbox--checked': isSelected(opt.value) }\"\n ></span>\n <i v-if=\"opt.icon\" class=\"fa-fw\" :class=\"opt.icon\"></i>\n <span\n class=\"d-option__label\"\n :class=\"{ 'c-truncate': cfg.textEllipsis }\"\n v-html=\"highlight(opt.label)\"\n ></span>\n </li>\n <li v-if=\"filteredOptions.length === 0\" class=\"ds-option ds-option--empty\">\n Nincs találat\n </li>\n </template>\n </ul>\n\n <div v-if=\"cfg.multiple || (cfg.clearable && selection.length > 0)\" class=\"c-footer\">\n <Button v-if=\"cfg.clearable\" label=\"Törlés\" outline @click=\"clear\" />\n <Button v-if=\"cfg.multiple\" label=\"OK\" type=\"success\" @click=\"confirm\" />\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<style lang=\"scss\" src=\"@/styles/components/dropdown-select.scss\"></style>\n"],"mappings":""}
|
|
@@ -45,35 +45,39 @@ function t(e, t) {
|
|
|
45
45
|
}
|
|
46
46
|
return new Date(a, o, s, c, l, u);
|
|
47
47
|
}
|
|
48
|
-
function n(
|
|
48
|
+
function n(t, n = !1) {
|
|
49
|
+
let r = i(t);
|
|
50
|
+
return r ? e(r, n ? "YYYY-MM-DD HH:mm" : "YYYY-MM-DD") : "";
|
|
51
|
+
}
|
|
52
|
+
function r(e, t = !1) {
|
|
49
53
|
return t ? e.toISOString() : `${e.getFullYear()}-${String(e.getMonth() + 1).padStart(2, "0")}-${String(e.getDate()).padStart(2, "0")}T00:00:00.000Z`;
|
|
50
54
|
}
|
|
51
|
-
function
|
|
55
|
+
function i(e) {
|
|
52
56
|
if (!e) return null;
|
|
53
57
|
if (e instanceof Date) return e;
|
|
54
58
|
let t = new Date(e);
|
|
55
59
|
return isNaN(t.getTime()) ? null : t;
|
|
56
60
|
}
|
|
57
|
-
function
|
|
61
|
+
function a(e) {
|
|
58
62
|
let t = new Date(e);
|
|
59
63
|
return t.setHours(0, 0, 0, 0), t;
|
|
60
64
|
}
|
|
61
|
-
function
|
|
65
|
+
function o(e) {
|
|
62
66
|
let t = new Date(e);
|
|
63
67
|
return t.setHours(23, 59, 0, 0), t;
|
|
64
68
|
}
|
|
65
|
-
function
|
|
66
|
-
let t =
|
|
69
|
+
function s(e) {
|
|
70
|
+
let t = a(e), n = t.getDay(), r = n === 0 ? -6 : 1 - n;
|
|
67
71
|
return t.setDate(t.getDate() + r), t;
|
|
68
72
|
}
|
|
69
|
-
function
|
|
73
|
+
function c(e, t) {
|
|
70
74
|
return e.getFullYear() === t.getFullYear() && e.getMonth() === t.getMonth() && e.getDate() === t.getDate();
|
|
71
75
|
}
|
|
72
|
-
function
|
|
76
|
+
function l(e, t) {
|
|
73
77
|
return e && t ? e.getTime() > t.getTime() ? e : t : e ?? t ?? null;
|
|
74
78
|
}
|
|
75
|
-
function
|
|
79
|
+
function u(e, t) {
|
|
76
80
|
return e && t ? e.getTime() < t.getTime() ? e : t : e ?? t ?? null;
|
|
77
81
|
}
|
|
78
82
|
//#endregion
|
|
79
|
-
export {
|
|
83
|
+
export { i as castToDate, u as earlierOf, o as endOfDay, e as formatDate, c as isSameCalendarDay, l as laterOf, r as localToUTCString, t as parseDate, a as startOfDay, s as startOfWeek, n as utcToString };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admins-components3.js","names":[],"sources":["../src/utils/date.ts"],"sourcesContent":["export function formatDate(date: Date, format: string): string {\n const tokens: Record<string, string> = {\n YYYY: String(date.getFullYear()),\n MM: String(date.getMonth() + 1).padStart(2, '0'),\n DD: String(date.getDate()).padStart(2, '0'),\n HH: String(date.getHours()).padStart(2, '0'),\n mm: String(date.getMinutes()).padStart(2, '0'),\n ss: String(date.getSeconds()).padStart(2, '0'),\n }\n\n return format.replace(/YYYY|MM|DD|HH|mm|ss/g, (match) => tokens[match] ?? match)\n}\n\nexport function parseDate(value: string, format: string): Date | null {\n if (!value) return null\n\n const tokenRegex = /YYYY|MM|DD|HH|mm|ss/g\n let match: RegExpExecArray | null\n const parts: { token: string; start: number; end: number }[] = []\n\n while ((match = tokenRegex.exec(format)) !== null) {\n parts.push({ token: match[0], start: match.index, end: match.index + match[0].length })\n }\n\n let year = 1970\n let month = 0\n let day = 1\n let hour = 0\n let minute = 0\n let second = 0\n\n for (const part of parts) {\n const raw = value.slice(part.start, part.start + part.token.length)\n const n = parseInt(raw, 10)\n if (isNaN(n)) return null\n\n switch (part.token) {\n case 'YYYY':\n year = n\n break\n case 'MM':\n month = n - 1\n break\n case 'DD':\n day = n\n break\n case 'HH':\n hour = n\n break\n case 'mm':\n minute = n\n break\n case 'ss':\n second = n\n break\n }\n }\n\n return new Date(year, month, day, hour, minute, second)\n}\n\nexport function localToUTCString(date: Date, includeTime = false): string {\n if (includeTime) {\n return date.toISOString()\n }\n\n const y = date.getFullYear()\n const m = String(date.getMonth() + 1).padStart(2, '0')\n const d = String(date.getDate()).padStart(2, '0')\n return `${y}-${m}-${d}T00:00:00.000Z`\n}\n\nexport function castToDate(v: any): Date | null {\n if (!v) return null\n if (v instanceof Date) return v\n const d = new Date(v)\n return isNaN(d.getTime()) ? null : d\n}\nexport function startOfDay(date: Date) {\n const d = new Date(date)\n d.setHours(0, 0, 0, 0)\n return d\n}\n\nexport function endOfDay(date: Date) {\n const d = new Date(date)\n d.setHours(23, 59, 0, 0)\n return d\n}\n\nexport function startOfWeek(date: Date) {\n const d = startOfDay(date)\n const day = d.getDay()\n const diff = day === 0 ? -6 : 1 - day // Monday start\n d.setDate(d.getDate() + diff)\n return d\n}\n\nexport function isSameCalendarDay(a: Date, b: Date): boolean {\n return (\n a.getFullYear() === b.getFullYear() &&\n a.getMonth() === b.getMonth() &&\n a.getDate() === b.getDate()\n )\n}\n\nexport function laterOf(a: Date | null | undefined, b: Date | null | undefined): Date | null {\n if (a && b) return a.getTime() > b.getTime() ? a : b\n return a ?? b ?? null\n}\n\nexport function earlierOf(a: Date | null | undefined, b: Date | null | undefined): Date | null {\n if (a && b) return a.getTime() < b.getTime() ? a : b\n return a ?? b ?? null\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"admins-components3.js","names":[],"sources":["../src/utils/date.ts"],"sourcesContent":["export function formatDate(date: Date, format: string): string {\n const tokens: Record<string, string> = {\n YYYY: String(date.getFullYear()),\n MM: String(date.getMonth() + 1).padStart(2, '0'),\n DD: String(date.getDate()).padStart(2, '0'),\n HH: String(date.getHours()).padStart(2, '0'),\n mm: String(date.getMinutes()).padStart(2, '0'),\n ss: String(date.getSeconds()).padStart(2, '0'),\n }\n\n return format.replace(/YYYY|MM|DD|HH|mm|ss/g, (match) => tokens[match] ?? match)\n}\n\nexport function parseDate(value: string, format: string): Date | null {\n if (!value) return null\n\n const tokenRegex = /YYYY|MM|DD|HH|mm|ss/g\n let match: RegExpExecArray | null\n const parts: { token: string; start: number; end: number }[] = []\n\n while ((match = tokenRegex.exec(format)) !== null) {\n parts.push({ token: match[0], start: match.index, end: match.index + match[0].length })\n }\n\n let year = 1970\n let month = 0\n let day = 1\n let hour = 0\n let minute = 0\n let second = 0\n\n for (const part of parts) {\n const raw = value.slice(part.start, part.start + part.token.length)\n const n = parseInt(raw, 10)\n if (isNaN(n)) return null\n\n switch (part.token) {\n case 'YYYY':\n year = n\n break\n case 'MM':\n month = n - 1\n break\n case 'DD':\n day = n\n break\n case 'HH':\n hour = n\n break\n case 'mm':\n minute = n\n break\n case 'ss':\n second = n\n break\n }\n }\n\n return new Date(year, month, day, hour, minute, second)\n}\n\nexport function utcToString(utc: string | Date | null, includeTime = false): string {\n const date = castToDate(utc)\n if (!date) return ''\n return formatDate(date, includeTime ? 'YYYY-MM-DD HH:mm' : 'YYYY-MM-DD')\n}\n\nexport function localToUTCString(date: Date, includeTime = false): string {\n if (includeTime) {\n return date.toISOString()\n }\n\n const y = date.getFullYear()\n const m = String(date.getMonth() + 1).padStart(2, '0')\n const d = String(date.getDate()).padStart(2, '0')\n return `${y}-${m}-${d}T00:00:00.000Z`\n}\n\nexport function castToDate(v: any): Date | null {\n if (!v) return null\n if (v instanceof Date) return v\n const d = new Date(v)\n return isNaN(d.getTime()) ? null : d\n}\nexport function startOfDay(date: Date) {\n const d = new Date(date)\n d.setHours(0, 0, 0, 0)\n return d\n}\n\nexport function endOfDay(date: Date) {\n const d = new Date(date)\n d.setHours(23, 59, 0, 0)\n return d\n}\n\nexport function startOfWeek(date: Date) {\n const d = startOfDay(date)\n const day = d.getDay()\n const diff = day === 0 ? -6 : 1 - day // Monday start\n d.setDate(d.getDate() + diff)\n return d\n}\n\nexport function isSameCalendarDay(a: Date, b: Date): boolean {\n return (\n a.getFullYear() === b.getFullYear() &&\n a.getMonth() === b.getMonth() &&\n a.getDate() === b.getDate()\n )\n}\n\nexport function laterOf(a: Date | null | undefined, b: Date | null | undefined): Date | null {\n if (a && b) return a.getTime() > b.getTime() ? a : b\n return a ?? b ?? null\n}\n\nexport function earlierOf(a: Date | null | undefined, b: Date | null | undefined): Date | null {\n if (a && b) return a.getTime() < b.getTime() ? a : b\n return a ?? b ?? null\n}\n"],"mappings":"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"}
|
|
@@ -12,35 +12,40 @@ var h = { class: "ac-component" }, g = { class: "hc-header" }, _ = { class: "hc-
|
|
|
12
12
|
class: "hc-slot hc-slot--right"
|
|
13
13
|
}, C = {
|
|
14
14
|
icon: void 0,
|
|
15
|
-
|
|
15
|
+
backButton: () => ({
|
|
16
|
+
icon: "fa-solid fa-chevron-left",
|
|
17
|
+
ariaLabel: "Vissza",
|
|
18
|
+
callback: () => {}
|
|
19
|
+
}),
|
|
16
20
|
toolbars: () => []
|
|
17
21
|
}, w = /* @__PURE__ */ s({
|
|
18
22
|
__name: "HeaderComponent",
|
|
19
23
|
props: /* @__PURE__ */ c({
|
|
20
24
|
title: {},
|
|
21
25
|
icon: {},
|
|
22
|
-
|
|
26
|
+
backButton: {},
|
|
23
27
|
toolbars: {}
|
|
24
28
|
}, { ...C }),
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
29
|
+
setup(s) {
|
|
30
|
+
let c = s, w = n(() => {
|
|
31
|
+
if (c.backButton) return {
|
|
32
|
+
...C.backButton(),
|
|
33
|
+
...c.backButton
|
|
34
|
+
};
|
|
35
|
+
}), T = n(() => {
|
|
28
36
|
let e = {
|
|
29
37
|
left: 0,
|
|
30
38
|
center: 1,
|
|
31
39
|
right: 2
|
|
32
40
|
};
|
|
33
|
-
return [...
|
|
41
|
+
return [...c.toolbars].sort((t, n) => e[t.align] - e[n.align]);
|
|
34
42
|
});
|
|
35
43
|
return (n, c) => (d(), a("div", h, [o("header", g, [
|
|
36
44
|
o("div", _, [
|
|
37
|
-
|
|
45
|
+
w.value ? (d(), r(e, l({
|
|
38
46
|
key: 0,
|
|
39
|
-
class: "hc-back-btn"
|
|
40
|
-
|
|
41
|
-
"aria-label": "Vissza",
|
|
42
|
-
onClick: c[0] ||= (e) => w("back")
|
|
43
|
-
})) : i("", !0),
|
|
47
|
+
class: "hc-back-btn"
|
|
48
|
+
}, w.value), null, 16)) : i("", !0),
|
|
44
49
|
o("div", v, [s.icon ? (d(), a("i", {
|
|
45
50
|
key: 0,
|
|
46
51
|
class: u([s.icon, "hc-title-icon"])
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admins-components35.js","names":["$slots"],"sources":["../src/components/HeaderComponent.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { ButtonProps } from '@/components/Button.vue'\nimport type { HorizontalAlignment } from '@/types/types'\n\nexport interface HeaderToolbar {\n align: HorizontalAlignment\n buttons: ButtonProps[]\n}\n\nexport interface HeaderComponentProps {\n title: string\n icon?: string\n
|
|
1
|
+
{"version":3,"file":"admins-components35.js","names":["$slots"],"sources":["../src/components/HeaderComponent.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { ButtonProps } from '@/components/Button.vue'\nimport type { HorizontalAlignment } from '@/types/types'\n\nexport interface HeaderToolbar {\n align: HorizontalAlignment\n buttons: ButtonProps[]\n}\n\nexport interface HeaderComponentProps {\n title: string\n icon?: string\n\n backButton?: ButtonProps\n toolbars?: HeaderToolbar[]\n}\n\nexport const headerComponentDefaults = {\n icon: undefined,\n backButton: () => ({\n icon: 'fa-solid fa-chevron-left',\n ariaLabel: 'Vissza',\n callback: () => {},\n }),\n toolbars: () => [],\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport Button from '@/components/Button.vue'\n\nconst props = withDefaults(defineProps<HeaderComponentProps>(), {\n ...headerComponentDefaults,\n})\n\nconst mergedBackButton = computed<ButtonProps | undefined>(() => {\n if (!props.backButton) return undefined\n return { ...headerComponentDefaults.backButton(), ...props.backButton }\n})\n\nconst sortedToolbars = computed(() => {\n const order: Record<HorizontalAlignment, number> = { left: 0, center: 1, right: 2 }\n return [...props.toolbars].sort((a, b) => order[a.align] - order[b.align])\n})\n</script>\n\n<template>\n <div class=\"ac-component\">\n <header class=\"hc-header\">\n <div class=\"hc-left\">\n <Button\n v-if=\"mergedBackButton\"\n class=\"hc-back-btn\"\n v-bind=\"mergedBackButton\"\n />\n\n <div class=\"hc-title-group\">\n <i v-if=\"icon\" :class=\"icon\" class=\"hc-title-icon\"></i>\n <h1 class=\"hc-title\">{{ title }}</h1>\n </div>\n\n <div v-if=\"$slots.left\" class=\"hc-slot hc-slot--left\">\n <slot name=\"left\" />\n </div>\n\n <div\n v-for=\"(toolbar, ti) in sortedToolbars.filter((t) => t.align === 'left')\"\n :key=\"`l-${ti}`\"\n class=\"hc-buttons hc-buttons--left\"\n >\n <Button v-for=\"(btn, i) in toolbar.buttons\" :key=\"i\" v-bind=\"btn\" />\n </div>\n </div>\n\n <div\n v-if=\"$slots.center || sortedToolbars.some((t) => t.align === 'center')\"\n class=\"hc-slot hc-slot--center\"\n >\n <slot name=\"center\" />\n <div\n v-for=\"(toolbar, ti) in sortedToolbars.filter((t) => t.align === 'center')\"\n :key=\"`c-${ti}`\"\n class=\"hc-buttons\"\n >\n <Button v-for=\"(btn, i) in toolbar.buttons\" :key=\"i\" v-bind=\"btn\" />\n </div>\n </div>\n\n <div\n v-if=\"$slots.right || sortedToolbars.some((t) => t.align === 'right')\"\n class=\"hc-slot hc-slot--right\"\n >\n <slot name=\"right\" />\n <div\n v-for=\"(toolbar, ti) in sortedToolbars.filter((t) => t.align === 'right')\"\n :key=\"`r-${ti}`\"\n class=\"hc-buttons\"\n >\n <Button v-for=\"(btn, i) in toolbar.buttons\" :key=\"i\" v-bind=\"btn\" />\n </div>\n </div>\n </header>\n </div>\n</template>\n<style lang=\"scss\" src=\"@/styles/components/header.scss\"></style>\n"],"mappings":";;;;;;;;;;;;GAiBa,IAA0B;CACrC,MAAM,KAAA;CACN,mBAAmB;EACjB,MAAM;EACN,WAAW;EACX,gBAAgB,CAAC;CACnB;CACA,gBAAgB,CAAC;AACnB;;;;;;;;;EAOA,IAAM,IAAQ,GAIR,IAAmB,QAAwC;GAC1D,MAAM,YACX,OAAO;IAAE,GAAG,EAAwB,WAAW;IAAG,GAAG,EAAM;GAAW;EACxE,CAAC,GAEK,IAAiB,QAAe;GACpC,IAAM,IAA6C;IAAE,MAAM;IAAG,QAAQ;IAAG,OAAO;GAAE;GAClF,OAAO,CAAC,GAAG,EAAM,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAM,EAAE,SAAS,EAAM,EAAE,MAAM;EAC3E,CAAC;yBAIC,EAuDM,OAvDN,GAuDM,CAtDJ,EAqDS,UArDT,GAqDS;GApDP,EAuBM,OAvBN,GAuBM;IArBI,EAAA,SAAA,EAAA,GADR,EAIE,GAJF,EAIE;;KAFA,OAAM;OACE,EAAA,KAAgB,GAAA,MAAA,EAAA,KAAA,EAAA,IAAA,EAAA;IAG1B,EAGM,OAHN,GAGM,CAFK,EAAA,QAAA,EAAA,GAAT,EAAuD,KAAA;;KAAvC,OAAK,EAAA,CAAE,EAAA,MAAY,eAAe,CAAA;8BAClD,EAAqC,MAArC,GAAqC,EAAb,EAAA,KAAK,GAAA,CAAA,CAAA,CAAA;IAGpBA,EAAAA,OAAO,QAAA,EAAA,GAAlB,EAEM,OAFN,GAEM,CADJ,EAAoB,EAAA,QAAA,MAAA,CAAA,CAAA,KAAA,EAAA,IAAA,EAAA;YAGtB,EAMM,GAAA,MAAA,EALoB,EAAA,MAAe,QAAQ,MAAM,EAAE,UAAK,MAAA,IAApD,GAAS,YADnB,EAMM,OAAA;KAJH,KAAG,KAAO;KACX,OAAM;gBAEN,EAAoE,GAAA,MAAA,EAAzC,EAAQ,UAAnB,GAAK,YAArB,EAAoE,GAApE,EAAoE,EAAvB,KAAK,EAAC,GAAA,EAAA,SAAA,GAAA,GAAU,CAAG,GAAA,MAAA,EAAA;;GAK5DA,EAAAA,OAAO,UAAU,EAAA,MAAe,MAAM,MAAM,EAAE,UAAK,QAAA,KAAA,EAAA,GAD3D,EAYM,OAZN,GAYM,CARJ,EAAsB,EAAA,QAAA,QAAA,IAAA,EAAA,EAAA,GACtB,EAMM,GAAA,MAAA,EALoB,EAAA,MAAe,QAAQ,MAAM,EAAE,UAAK,QAAA,IAApD,GAAS,YADnB,EAMM,OAAA;IAJH,KAAG,KAAO;IACX,OAAM;eAEN,EAAoE,GAAA,MAAA,EAAzC,EAAQ,UAAnB,GAAK,YAArB,EAAoE,GAApE,EAAoE,EAAvB,KAAK,EAAC,GAAA,EAAA,SAAA,GAAA,GAAU,CAAG,GAAA,MAAA,EAAA;GAK5DA,EAAAA,OAAO,SAAS,EAAA,MAAe,MAAM,MAAM,EAAE,UAAK,OAAA,KAAA,EAAA,GAD1D,EAYM,OAZN,GAYM,CARJ,EAAqB,EAAA,QAAA,OAAA,IAAA,EAAA,EAAA,GACrB,EAMM,GAAA,MAAA,EALoB,EAAA,MAAe,QAAQ,MAAM,EAAE,UAAK,OAAA,IAApD,GAAS,YADnB,EAMM,OAAA;IAJH,KAAG,KAAO;IACX,OAAM;eAEN,EAAoE,GAAA,MAAA,EAAzC,EAAQ,UAAnB,GAAK,YAArB,EAAoE,GAApE,EAAoE,EAAvB,KAAK,EAAC,GAAA,EAAA,SAAA,GAAA,GAAU,CAAG,GAAA,MAAA,EAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admins-components37.js","names":[],"sources":["../src/components/HeaderComponent.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { ButtonProps } from '@/components/Button.vue'\nimport type { HorizontalAlignment } from '@/types/types'\n\nexport interface HeaderToolbar {\n align: HorizontalAlignment\n buttons: ButtonProps[]\n}\n\nexport interface HeaderComponentProps {\n title: string\n icon?: string\n
|
|
1
|
+
{"version":3,"file":"admins-components37.js","names":[],"sources":["../src/components/HeaderComponent.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { ButtonProps } from '@/components/Button.vue'\nimport type { HorizontalAlignment } from '@/types/types'\n\nexport interface HeaderToolbar {\n align: HorizontalAlignment\n buttons: ButtonProps[]\n}\n\nexport interface HeaderComponentProps {\n title: string\n icon?: string\n\n backButton?: ButtonProps\n toolbars?: HeaderToolbar[]\n}\n\nexport const headerComponentDefaults = {\n icon: undefined,\n backButton: () => ({\n icon: 'fa-solid fa-chevron-left',\n ariaLabel: 'Vissza',\n callback: () => {},\n }),\n toolbars: () => [],\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport Button from '@/components/Button.vue'\n\nconst props = withDefaults(defineProps<HeaderComponentProps>(), {\n ...headerComponentDefaults,\n})\n\nconst mergedBackButton = computed<ButtonProps | undefined>(() => {\n if (!props.backButton) return undefined\n return { ...headerComponentDefaults.backButton(), ...props.backButton }\n})\n\nconst sortedToolbars = computed(() => {\n const order: Record<HorizontalAlignment, number> = { left: 0, center: 1, right: 2 }\n return [...props.toolbars].sort((a, b) => order[a.align] - order[b.align])\n})\n</script>\n\n<template>\n <div class=\"ac-component\">\n <header class=\"hc-header\">\n <div class=\"hc-left\">\n <Button\n v-if=\"mergedBackButton\"\n class=\"hc-back-btn\"\n v-bind=\"mergedBackButton\"\n />\n\n <div class=\"hc-title-group\">\n <i v-if=\"icon\" :class=\"icon\" class=\"hc-title-icon\"></i>\n <h1 class=\"hc-title\">{{ title }}</h1>\n </div>\n\n <div v-if=\"$slots.left\" class=\"hc-slot hc-slot--left\">\n <slot name=\"left\" />\n </div>\n\n <div\n v-for=\"(toolbar, ti) in sortedToolbars.filter((t) => t.align === 'left')\"\n :key=\"`l-${ti}`\"\n class=\"hc-buttons hc-buttons--left\"\n >\n <Button v-for=\"(btn, i) in toolbar.buttons\" :key=\"i\" v-bind=\"btn\" />\n </div>\n </div>\n\n <div\n v-if=\"$slots.center || sortedToolbars.some((t) => t.align === 'center')\"\n class=\"hc-slot hc-slot--center\"\n >\n <slot name=\"center\" />\n <div\n v-for=\"(toolbar, ti) in sortedToolbars.filter((t) => t.align === 'center')\"\n :key=\"`c-${ti}`\"\n class=\"hc-buttons\"\n >\n <Button v-for=\"(btn, i) in toolbar.buttons\" :key=\"i\" v-bind=\"btn\" />\n </div>\n </div>\n\n <div\n v-if=\"$slots.right || sortedToolbars.some((t) => t.align === 'right')\"\n class=\"hc-slot hc-slot--right\"\n >\n <slot name=\"right\" />\n <div\n v-for=\"(toolbar, ti) in sortedToolbars.filter((t) => t.align === 'right')\"\n :key=\"`r-${ti}`\"\n class=\"hc-buttons\"\n >\n <Button v-for=\"(btn, i) in toolbar.buttons\" :key=\"i\" v-bind=\"btn\" />\n </div>\n </div>\n </header>\n </div>\n</template>\n<style lang=\"scss\" src=\"@/styles/components/header.scss\"></style>\n"],"mappings":""}
|
package/dist/main.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
@import"https://fonts.googleapis.com/css2?family=Geist:wght@100..900&display=swap";@import"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/fontawesome.min.css";@import"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/solid.min.css";@import"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/regular.min.css";:root{--ac-font-family: 'Geist', 'Segoe UI', system-ui, -apple-system, sans-serif;--background-50: #f7f9f9;--background-100: #eff3f3;--neutral-0: #fff;--neutral-50: #f2f4f4;--neutral-100: #e5e9ea;--neutral-150: #dae0e1;--neutral-200: #cbd3d4;--neutral-250: #bec8ca;--neutral-300: #b0bdbf;--neutral-400: #96a7a9;--neutral-500: #7c9194;--neutral-600: #637476;--neutral-700: #4a5759;--neutral-800: #323a3b;--neutral-900: #1f2d2d;--site-50: #ffebe1;--site-100: #ffceb6;--site-200: #f79d71;--site-300: #f5844e;--site-500: #f26522;--site-600: #da5b1f;--site-700: #c2511b;--premium-50: #dfefef;--premium-100: #cfe7e6;--premium-200: #bfdfde;--premium-300: #9ed0ce;--premium-400: #7ec0bd;--premium-500: #5eb0ad;--premium-600: #4b8d8a;--premium-700: #386a68;--pulse-10: #e0d8f1;--pulse-100: #a18ad5;--pulse-400: #7250c0;--pulse-500: #623cb9;--ac-color-error: #d92d20;--ac-color-warning: #dc6803;--ac-color-success: #067647;--ac-color-info: #1570ef;--ac-color-info-rgb: 21, 112, 239;--ac-color-darker-blue: #1246d4;--ac-color-lighter-blue: rgb(45 126 241);--ac-color-primary: var(--ac-color-info);--ac-color-primary-rgb: var(--ac-color-info-rgb);--ac-input-padding: 0.5rem;--ac-input-padding-sm: 0.3125rem;--ac-input-padding-lg: 0.75rem;--ac-field-padding: 0.5rem 0.75rem;--ac-field-padding-sm: 0.3125rem 0.625rem;--ac-field-padding-lg: 0.6875rem 1rem;--ac-field-font-size: 0.825rem;--ac-field-font-size-sm: 0.75rem;--ac-field-font-size-lg: 0.9375rem;--ac-field-border-radius: 0.5rem;--ac-field-border-radius-sm: 0.375rem;--ac-field-border-radius-lg: 0.625rem;--ac-dropdown-max-height: 18rem;--ac-section-bottom-margin: 1rem;--ac-placeholder-color: var(--neutral-600)}@media(prefers-reduced-motion: no-preference){html{interpolate-size:allow-keywords}}.ac-component{font-family:var(--ac-font-family);letter-spacing:-0.18px;color:var(--neutral-800);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;box-sizing:border-box}.ac-component.v-tooltip{background:var(--neutral-800);font-family:var(--ac-font-family);color:var(--neutral-0);font-size:.8125rem;font-weight:400;line-height:1.4;padding:var(--ac-field-padding);border-radius:.5rem;white-space:normal;width:max-content;box-shadow:0 2px 6px rgba(0,0,0,.12)}.ac-component{--vf-ring-color: var(--ac-color-primary);--vf-primary: var(--ac-color-primary);--vf-border-color-checked: var(--ac-color-primary)}.ac-component *,.ac-component *::before,.ac-component *::after{box-sizing:border-box}.ac-component img,.ac-component picture,.ac-component video,.ac-component canvas,.ac-component svg{display:block;max-width:100%}.ac-component input,.ac-component button,.ac-component textarea,.ac-component select{font-family:inherit}.ac-component p,.ac-component h1,.ac-component h2,.ac-component h3,.ac-component h4,.ac-component h5,.ac-component h6{overflow-wrap:break-word}.ac-component *{margin:0}.ac-component .fa-tag,.ac-component .fa-arrow-rotate-right{transform:translateY(0.5px)}.ac-component .align-center-fix{transform:translateY(0.5px)}.ac-component hr.separator{border:none;border-top:1px solid var(--neutral-200);margin:.5rem 0}.ac-component .lh-1{line-height:1}.ac-component .flex-center{display:flex;align-items:center}.ac-component .click-expand{--expand-size: 0.5rem}.ac-component .click-expand::after{content:"";position:absolute;inset:calc(-1*var(--expand-size))}.ac-component .m-0{margin:0 !important}.ac-component .mx-0{margin-left:0 !important;margin-right:0 !important}.ac-component .my-0{margin-top:0 !important;margin-bottom:0 !important}.ac-component .mt-0{margin-top:0 !important}.ac-component .mb-0{margin-bottom:0 !important}.ac-component .ml-0{margin-left:0 !important}.ac-component .mr-0{margin-right:0 !important}.ac-component .m-1{margin:.25rem !important}.ac-component .mx-1{margin-left:.25rem !important;margin-right:.25rem !important}.ac-component .my-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.ac-component .mt-1{margin-top:.25rem !important}.ac-component .mb-1{margin-bottom:.25rem !important}.ac-component .ml-1{margin-left:.25rem !important}.ac-component .mr-1{margin-right:.25rem !important}.ac-component .m-2{margin:.5rem !important}.ac-component .mx-2{margin-left:.5rem !important;margin-right:.5rem !important}.ac-component .my-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.ac-component .mt-2{margin-top:.5rem !important}.ac-component .mb-2{margin-bottom:.5rem !important}.ac-component .ml-2{margin-left:.5rem !important}.ac-component .mr-2{margin-right:.5rem !important}.ac-component .m-3{margin:1rem !important}.ac-component .mx-3{margin-left:1rem !important;margin-right:1rem !important}.ac-component .my-3{margin-top:1rem !important;margin-bottom:1rem !important}.ac-component .mt-3{margin-top:1rem !important}.ac-component .mb-3{margin-bottom:1rem !important}.ac-component .ml-3{margin-left:1rem !important}.ac-component .mr-3{margin-right:1rem !important}.ac-component .m-4{margin:1.5rem !important}.ac-component .mx-4{margin-left:1.5rem !important;margin-right:1.5rem !important}.ac-component .my-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.ac-component .mt-4{margin-top:1.5rem !important}.ac-component .mb-4{margin-bottom:1.5rem !important}.ac-component .ml-4{margin-left:1.5rem !important}.ac-component .mr-4{margin-right:1.5rem !important}.ac-component .m-5{margin:3rem !important}.ac-component .mx-5{margin-left:3rem !important;margin-right:3rem !important}.ac-component .my-5{margin-top:3rem !important;margin-bottom:3rem !important}.ac-component .mt-5{margin-top:3rem !important}.ac-component .mb-5{margin-bottom:3rem !important}.ac-component .ml-5{margin-left:3rem !important}.ac-component .mr-5{margin-right:3rem !important}.ac-component .m-auto{margin:auto !important}.ac-component .mx-auto{margin-left:auto !important;margin-right:auto !important}.ac-component .my-auto{margin-top:auto !important;margin-bottom:auto !important}.ac-component .mt-auto{margin-top:auto !important}.ac-component .mb-auto{margin-bottom:auto !important}.ac-component .ml-auto{margin-left:auto !important}.ac-component .mr-auto{margin-right:auto !important}.ac-component .p-0{padding:0 !important}.ac-component .px-0{padding-left:0 !important;padding-right:0 !important}.ac-component .py-0{padding-top:0 !important;padding-bottom:0 !important}.ac-component .pt-0{padding-top:0 !important}.ac-component .pb-0{padding-bottom:0 !important}.ac-component .pl-0{padding-left:0 !important}.ac-component .pr-0{padding-right:0 !important}.ac-component .p-1{padding:.25rem !important}.ac-component .px-1{padding-left:.25rem !important;padding-right:.25rem !important}.ac-component .py-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.ac-component .pt-1{padding-top:.25rem !important}.ac-component .pb-1{padding-bottom:.25rem !important}.ac-component .pl-1{padding-left:.25rem !important}.ac-component .pr-1{padding-right:.25rem !important}.ac-component .p-2{padding:.5rem !important}.ac-component .px-2{padding-left:.5rem !important;padding-right:.5rem !important}.ac-component .py-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.ac-component .pt-2{padding-top:.5rem !important}.ac-component .pb-2{padding-bottom:.5rem !important}.ac-component .pl-2{padding-left:.5rem !important}.ac-component .pr-2{padding-right:.5rem !important}.ac-component .p-3{padding:1rem !important}.ac-component .px-3{padding-left:1rem !important;padding-right:1rem !important}.ac-component .py-3{padding-top:1rem !important;padding-bottom:1rem !important}.ac-component .pt-3{padding-top:1rem !important}.ac-component .pb-3{padding-bottom:1rem !important}.ac-component .pl-3{padding-left:1rem !important}.ac-component .pr-3{padding-right:1rem !important}.ac-component .p-4{padding:1.5rem !important}.ac-component .px-4{padding-left:1.5rem !important;padding-right:1.5rem !important}.ac-component .py-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.ac-component .pt-4{padding-top:1.5rem !important}.ac-component .pb-4{padding-bottom:1.5rem !important}.ac-component .pl-4{padding-left:1.5rem !important}.ac-component .pr-4{padding-right:1.5rem !important}.ac-component .p-5{padding:3rem !important}.ac-component .px-5{padding-left:3rem !important;padding-right:3rem !important}.ac-component .py-5{padding-top:3rem !important;padding-bottom:3rem !important}.ac-component .pt-5{padding-top:3rem !important}.ac-component .pb-5{padding-bottom:3rem !important}.ac-component .pl-5{padding-left:3rem !important}.ac-component .pr-5{padding-right:3rem !important}.ac-component .gap-0{gap:0 !important}.ac-component .gap-1{gap:.25rem !important}.ac-component .gap-2{gap:.5rem !important}.ac-component .gap-3{gap:1rem !important}.ac-component .gap-4{gap:1.5rem !important}.ac-component .gap-5{gap:3rem !important}.ac-component .d-flex{display:flex !important}.ac-component .d-inline-flex{display:inline-flex !important}.ac-component .d-block{display:block !important}.ac-component .d-inline-block{display:inline-block !important}.ac-component .flex-wrap{flex-wrap:wrap}.ac-component .flex-column{flex-direction:column}.ac-component .text-center{text-align:center}.ac-component .w-100{width:100% !important}.ac-component .mw-100{max-width:100% !important}.ac-component .h-100{height:100% !important}.ac-component .mh-100{max-height:100% !important}.ac-component .pointer{cursor:pointer}.ac-component .nowrap{white-space:nowrap}.ac-component .align-items-center{align-items:center}.ac-component .text-primary,.ac-component .text-normal{color:var(--neutral-800) !important}.ac-component .text-info{color:var(--ac-color-info) !important}.ac-component .text-success{color:var(--ac-color-success) !important}.ac-component .text-warning{color:var(--ac-color-warning) !important}.ac-component .text-error,.ac-component .text-danger{color:var(--ac-color-error) !important}.ac-component .lh-normal{line-height:normal !important}.ac-component .lh-1{line-height:1 !important}.ac-component .hide,.ac-component .hidden{display:none !important}.ac-component .c-wrapper{position:relative}.ac-component .c-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ac-component .c-field-size{font-size:var(--ac-field-font-size);padding:var(--ac-field-padding)}.ac-component .c-field-size--sm,.ac-component .c-field-size--small{font-size:var(--ac-field-font-size-sm);padding:var(--ac-field-padding-sm)}.ac-component .c-field-size--lg,.ac-component .c-field-size--large{font-size:var(--ac-field-font-size-lg);padding:var(--ac-field-padding-lg)}.ac-component .c-type-color{--text-color: var(--neutral-800);--hover-bg-color: var(--neutral-100);--hover-text-color: var(--neutral-800);color:var(--text-color)}.ac-component .c-type-color:hover{background-color:var(--hover-bg-color);color:var(--hover-text-color)}.ac-component .c-type-color--error{--text-color: var(--ac-color-error);--hover-bg-color: var(--ac-color-error);--hover-text-color: var(--neutral-0)}.ac-component .c-type-color--success{--text-color: var(--ac-color-success);--hover-bg-color: var(--ac-color-success);--hover-text-color: var(--neutral-0)}.ac-component .c-type-color--warning{--text-color: var(--ac-color-warning);--hover-bg-color: var(--ac-color-warning);--hover-text-color: var(--neutral-0)}.ac-component .c-type-color--info{--text-color: var(--ac-color-info);--hover-bg-color: var(--ac-color-info);--hover-text-color: var(--neutral-0)}.ac-component .c-type-color--dark{--text-color: var(--neutral-0);--hover-bg-color: var(--neutral-800);--hover-text-color: var(--neutral-0)}.ac-component .c-chip{display:inline-flex;padding:0;border-radius:.25rem;background:var(--neutral-100);color:var(--neutral-700);font-size:.75rem;line-height:1.3;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ac-component .c-indicator{display:inline-flex;align-items:center;justify-content:center;min-width:1.25rem;height:1.25rem;padding:0 .375rem;border-radius:999px;background:var(--neutral-200);color:var(--neutral-700);font-family:var(--ac-font-family);font-size:.7rem;font-weight:700;font-variant-numeric:tabular-nums}.ac-component .c-scroll{scrollbar-width:thin;scrollbar-color:var(--neutral-300) rgba(0,0,0,0)}.ac-component .c-scroll::-webkit-scrollbar{width:.5rem;height:.5rem}.ac-component .c-scroll::-webkit-scrollbar-track{background:rgba(0,0,0,0)}.ac-component .c-scroll::-webkit-scrollbar-thumb{background:var(--neutral-300);border-radius:999px;border:2px solid rgba(0,0,0,0);background-clip:content-box;transition:background-color .15s}.ac-component .c-scroll::-webkit-scrollbar-thumb:hover{background:var(--neutral-500);background-clip:content-box}.ac-component .c-scroll::-webkit-scrollbar-corner{background:rgba(0,0,0,0)}.ac-component .c-placeholder{flex:1;font-style:italic;min-width:0;padding:var(--ac-input-padding);color:var(--ac-placeholder-color)}.ac-component .c-input{width:100%;font-family:inherit;letter-spacing:-0.36px;border:none;background:rgba(0,0,0,0);padding:var(--ac-input-padding);font-size:var(--ac-field-font-size);color:var(--neutral-900)}.ac-component .c-input::placeholder{color:var(--ac-placeholder-color);font-style:italic}.ac-component .c-input:-webkit-autofill,.ac-component .c-input:-webkit-autofill:hover,.ac-component .c-input:-webkit-autofill:focus,.ac-component .c-input:-webkit-autofill:active{border-radius:inherit}.ac-component .c-input:focus,.ac-component .c-input:focus-within,.ac-component .c-input:focus-visible,.ac-component .c-focus:focus,.ac-component .c-focus:focus-within,.ac-component .c-focus:focus-visible{border-color:var(--ac-color-lighter-blue);outline:0}.ac-component .c-input-wrapper{position:relative;display:flex;flex-direction:column;gap:.25rem}.ac-component .c-textarea{resize:none}.ac-component .c-input-row{display:flex;align-items:center;font-family:inherit;border:1px solid var(--neutral-200);border-radius:var(--ac-field-border-radius);background:var(--neutral-0);font-size:var(--ac-field-font-size);color:var(--neutral-900);transition:border-color .15s}.ac-component .c-input-row::placeholder{color:var(--ac-placeholder-color);font-style:italic}.ac-component .c-input-row--disabled{background:var(--neutral-50);cursor:not-allowed}.ac-component .c-input-row:is(input,textarea){padding:var(--ac-input-padding)}.ac-component .c-input-row:hover{border-color:var(--neutral-300)}.ac-component .c-input-row:focus-within,.ac-component .c-input-row:focus,.ac-component .c-input-row:focus-visible,.ac-component .c-input-row--focus{border-color:var(--ac-color-lighter-blue);box-shadow:0 0 0 2px rgba(21,112,239,.1)}.ac-component .c-input-row:focus-within:hover,.ac-component .c-input-row:focus:hover,.ac-component .c-input-row:focus-visible:hover,.ac-component .c-input-row--focus:hover{border-color:var(--ac-color-darker-blue)}.ac-component .c-input-row--sm{border-radius:var(--ac-field-border-radius-sm);font-size:var(--ac-field-font-size-sm)}.ac-component .c-input-row--sm:is(input,textarea){padding:var(--ac-input-padding-sm)}.ac-component .c-input-row--sm .c-icon-btn{font-size:var(--ac-field-font-size-sm)}.ac-component .c-input-row--sm .c-placeholder{font-size:var(--ac-field-font-size-sm);padding:var(--ac-input-padding-sm)}.ac-component .c-input-row--sm .c-input{padding:var(--ac-input-padding-sm);font-size:var(--ac-field-font-size-sm)}.ac-component .c-input-row--lg{border-radius:var(--ac-field-border-radius-lg);font-size:var(--ac-field-font-size-lg)}.ac-component .c-input-row--lg:is(input,textarea){padding:var(--ac-input-padding-lg)}.ac-component .c-input-row--lg .c-icon-btn{font-size:var(--ac-field-font-size-lg)}.ac-component .c-input-row--lg .c-placeholder{font-size:var(--ac-field-font-size-lg);padding:var(--ac-input-padding-lg)}.ac-component .c-input-row--lg .c-input{padding:var(--ac-input-padding-lg);font-size:var(--ac-field-font-size-lg)}.ac-component .c-icon-btn{display:flex;align-items:center;justify-content:center;border:none;background:rgba(0,0,0,0);cursor:pointer;transition:color .15s}.ac-component .c-icon-btn--clear{color:var(--neutral-400);padding-left:0;padding-right:.375rem}.ac-component .c-icon-btn--clear:hover{color:var(--ac-color-error)}.ac-component .c-icon-btn--chevron{color:var(--neutral-500);transition:transform .2s}.ac-component .c-icon-btn--chevron-open{transform:rotate(180deg)}.ac-component .c-icon-btn--calendar{font-size:.925rem;color:var(--neutral-500);padding-inline:.375rem}.ac-component .c-icon-btn--calendar:hover{color:var(--site-500)}.ac-component .c-icon-btn--hidden{visibility:hidden;pointer-events:none}.ac-component .c-dropdown{position:absolute;top:calc(100% + .25rem);left:0;z-index:1000;background:var(--neutral-0);border:1px solid var(--neutral-200);border-radius:var(--ac-field-border-radius);box-shadow:0 4px 12px rgba(0,0,0,.5);overflow:hidden}.ac-component .c-footer{display:flex;align-items:center;justify-content:flex-end;gap:1rem;margin-top:1rem;padding:.5rem;border-top:1px solid var(--neutral-100)}.ac-component .c-checkbox{display:inline-block;width:1rem;height:1rem;vertical-align:middle;position:relative;cursor:pointer;border:1.5px solid var(--neutral-300);border-radius:.25rem;background:var(--neutral-0);transition:border-color .15s,background-color .15s}.ac-component .c-checkbox:hover{border-color:var(--ac-color-info);background:var(--premium-300)}.ac-component .c-checkbox::after{content:"";position:absolute;top:50%;left:50%;width:.3rem;height:.55rem;border:solid #fff;border-width:0 2px 2px 0;transform:translate(-50%, -60%) rotate(45deg);opacity:0}.ac-component .c-checkbox--checked,.ac-component .c-checkbox:checked{border-color:var(--ac-color-info);background:var(--ac-color-info)}.ac-component .c-checkbox--checked::after,.ac-component .c-checkbox:checked::after{opacity:1}.ac-component .c-checkbox--checked:hover,.ac-component .c-checkbox:checked:hover{background:var(--premium-300)}.ac-component .c-checkbox--disabled,.ac-component .c-checkbox:disabled{opacity:.5;cursor:not-allowed}.ac-component input.c-checkbox{appearance:none;-webkit-appearance:none;-moz-appearance:none;margin:0}.ac-component .c-checkbox-wrapper{display:inline-flex;align-items:center;line-height:1}.ac-component .c-checkbox-wrapper .c-checkbox-inner{display:inline-flex;align-items:center;gap:.25rem;cursor:pointer}.ac-component .c-checkbox-wrapper .c-checkbox-inner:hover .c-checkbox{border-color:var(--ac-color-primary);background:rgba(var(--ac-color-primary-rgb), 0.2)}.ac-component .c-checkbox-wrapper .c-checkbox-inner:hover .c-checkbox:checked,.ac-component .c-checkbox-wrapper .c-checkbox-inner:hover .c-checkbox--checked{background:var(--ac-color-darker-blue)}.ac-component .c-label{font-size:.8125rem;font-weight:600;text-transform:uppercase;letter-spacing:.03em;color:var(--neutral-600)}.ac-component .c-label--on-border{position:absolute;top:-0.5lh;left:.5rem;padding:0 .125rem;font-size:.7rem;background:var(--neutral-0);text-transform:none}.ac-component .c-btn-group{display:inline-flex;border-radius:var(--ac-field-border-radius);overflow:hidden}.ac-component .c-btn-group>*{border-radius:0 !important}.ac-component .c-btn-group>*:not(:last-child){border-right-width:0 !important}.ac-component .c-btn-group>*:first-child{border-top-left-radius:var(--ac-field-border-radius) !important;border-bottom-left-radius:var(--ac-field-border-radius) !important}.ac-component .c-btn-group>*:last-child{border-top-right-radius:var(--ac-field-border-radius) !important;border-bottom-right-radius:var(--ac-field-border-radius) !important}.ac-component .c-btn-group-vertical{display:inline-flex;flex-direction:column;border-radius:var(--ac-field-border-radius);overflow:hidden}.ac-component .c-btn-group-vertical>*{border-radius:0 !important;width:100%}.ac-component .c-btn-group-vertical>*:not(:last-child){border-bottom-width:0 !important}.ac-component .c-btn-group-vertical>*:first-child{border-top-left-radius:var(--ac-field-border-radius) !important;border-top-right-radius:var(--ac-field-border-radius) !important}.ac-component .c-btn-group-vertical>*:last-child{border-bottom-left-radius:var(--ac-field-border-radius) !important;border-bottom-right-radius:var(--ac-field-border-radius) !important}.ac-component .c-btn{--btn-color: var(--neutral-200);--btn-bg: var(--background-50);--btn-text: var(--neutral-800);--btn-hover-bg: var(--neutral-100);--btn-hover-border: var(--neutral-300);--btn-indicator-bg: var(--neutral-0);--btn-indicator-text: var(--neutral-700);font-family:var(--ac-font-family);letter-spacing:-0.18px;display:inline-flex;align-items:center;gap:.375em;padding:var(--ac-field-padding);border:1px solid var(--btn-color);border-radius:var(--ac-field-border-radius);background:var(--btn-bg);color:var(--btn-text);font-size:var(--ac-field-font-size);font-weight:500;cursor:pointer;text-transform:capitalize;transition:background-color .15s,border-color .15s,color .15s,box-shadow .15s}.ac-component .c-btn:hover,.ac-component .c-btn:active{background:var(--btn-hover-bg);border-color:var(--btn-hover-border)}.ac-component .c-btn:focus-visible{outline:none;box-shadow:0 0 0 2px rgba(242,101,34,.12)}.ac-component .c-btn:disabled{opacity:.5;cursor:not-allowed;pointer-events:none}.ac-component .c-btn .c-btn-indicator{display:inline-flex;align-items:center;justify-content:center;min-width:1.125rem;height:1.125rem;margin-left:.5rem;padding:0 .35rem;padding-right:.375rem;border-radius:999px;color:var(--btn-indicator-text);font-variant-numeric:tabular-nums;font-size:.75rem;font-weight:600;background:var(--btn-indicator-bg)}.ac-component .c-btn-sm{padding:var(--ac-field-padding-sm);font-size:var(--ac-field-font-size-sm);border-radius:var(--ac-field-border-radius-sm)}.ac-component .c-btn-lg{padding:var(--ac-field-padding-lg);font-size:var(--ac-field-font-size-lg);border-radius:var(--ac-field-border-radius-lg)}.ac-component .c-btn-dark{--btn-color: var(--neutral-800);--btn-bg: var(--neutral-800);--btn-text: var(--neutral-0);--btn-hover-bg: var(--neutral-900);--btn-hover-border: var(--neutral-900);--btn-indicator-bg: var(--neutral-0);--btn-indicator-text: var(--neutral-800)}.ac-component .c-btn-outline{--btn-bg: transparent;--btn-color: var(--neutral-300);--btn-text: var(--neutral-800);--btn-hover-bg: var(--neutral-800);--btn-hover-border: var(--neutral-500);--btn-indicator-bg: var(--neutral-100);--btn-indicator-text: var(--neutral-800)}.ac-component .c-btn-outline:hover,.ac-component .c-btn-outline:active{color:var(--neutral-0)}.ac-component .c-btn-success{--btn-color: var(--ac-color-success);--btn-bg: var(--ac-color-success);--btn-text: var(--neutral-0);--btn-hover-bg: color-mix(in srgb, var(--ac-color-success) 85%, black);--btn-hover-border: color-mix(in srgb, var(--ac-color-success) 85%, black);--btn-indicator-bg: var(--neutral-0);--btn-indicator-text: var(--ac-color-success)}.ac-component .c-btn-error{--btn-color: var(--ac-color-error);--btn-bg: var(--ac-color-error);--btn-text: var(--neutral-0);--btn-hover-bg: color-mix(in srgb, var(--ac-color-error) 85%, black);--btn-hover-border: color-mix(in srgb, var(--ac-color-error) 85%, black);--btn-indicator-bg: var(--neutral-0);--btn-indicator-text: var(--ac-color-error)}.ac-component .c-btn-warning{--btn-color: var(--ac-color-warning);--btn-bg: var(--ac-color-warning);--btn-text: var(--neutral-0);--btn-hover-bg: color-mix(in srgb, var(--ac-color-warning) 85%, black);--btn-hover-border: color-mix(in srgb, var(--ac-color-warning) 85%, black);--btn-indicator-bg: var(--neutral-0);--btn-indicator-text: var(--ac-color-warning)}.ac-component .c-btn-info{--btn-color: var(--ac-color-info);--btn-bg: var(--ac-color-info);--btn-text: var(--neutral-0);--btn-hover-bg: color-mix(in srgb, var(--ac-color-info) 85%, black);--btn-hover-border: color-mix(in srgb, var(--ac-color-info) 85%, black);--btn-indicator-bg: var(--neutral-0);--btn-indicator-text: var(--ac-color-info)}.ac-component .c-btn-outline.c-btn-success{--btn-bg: transparent;--btn-text: var(--ac-color-success);--btn-hover-bg: var(--ac-color-success);--btn-hover-border: var(--ac-color-success);--btn-indicator-bg: var(--ac-color-success);--btn-indicator-text: var(--neutral-0)}.ac-component .c-btn-outline.c-btn-success:hover,.ac-component .c-btn-outline.c-btn-success:active{color:var(--neutral-0);--btn-indicator-bg: var(--neutral-0);--btn-indicator-text: var(--neutral-700)}.ac-component .c-btn-outline.c-btn-error{--btn-bg: transparent;--btn-text: var(--ac-color-error);--btn-hover-bg: var(--ac-color-error);--btn-hover-border: var(--ac-color-error);--btn-indicator-bg: var(--ac-color-error);--btn-indicator-text: var(--neutral-0)}.ac-component .c-btn-outline.c-btn-error:hover,.ac-component .c-btn-outline.c-btn-error:active{color:var(--neutral-0);--btn-indicator-bg: var(--neutral-0);--btn-indicator-text: var(--neutral-700)}.ac-component .c-btn-outline.c-btn-warning{--btn-bg: transparent;--btn-text: var(--ac-color-warning);--btn-hover-bg: var(--ac-color-warning);--btn-hover-border: var(--ac-color-warning);--btn-indicator-bg: var(--ac-color-warning);--btn-indicator-text: var(--neutral-900)}.ac-component .c-btn-outline.c-btn-warning:hover,.ac-component .c-btn-outline.c-btn-warning:active{color:var(--neutral-900);--btn-indicator-bg: var(--neutral-0);--btn-indicator-text: var(--neutral-700)}.ac-component .c-btn-outline.c-btn-info{--btn-bg: transparent;--btn-text: var(--ac-color-info);--btn-hover-bg: var(--ac-color-info);--btn-hover-border: var(--ac-color-info);--btn-indicator-bg: var(--ac-color-info);--btn-indicator-text: var(--neutral-0)}.ac-component .c-btn-outline.c-btn-info:hover,.ac-component .c-btn-outline.c-btn-info:active{color:var(--neutral-0);--btn-indicator-bg: var(--neutral-0);--btn-indicator-text: var(--neutral-700)}.ac-component .c-btn-outline.c-btn-dark{--btn-bg: transparent;--btn-color: var(--neutral-800);--btn-text: var(--neutral-800);--btn-hover-bg: var(--neutral-800);--btn-hover-border: var(--neutral-800);--btn-indicator-bg: var(--neutral-800);--btn-indicator-text: var(--neutral-0)}.ac-component .c-btn-outline.c-btn-dark:hover,.ac-component .c-btn-outline.c-btn-dark:active{color:var(--neutral-0);--btn-indicator-bg: var(--neutral-0);--btn-indicator-text: var(--neutral-700)}.ac-component .vf-checkbox-wrapper{display:flex;align-items:center;gap:.25rem}.ac-component .vf-input-field::placeholder{color:var(--ac-placeholder-color)}/*# sourceMappingURL=main.css.map */
|
|
1
|
+
@import"https://fonts.googleapis.com/css2?family=Geist:wght@100..900&display=swap";@import"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/fontawesome.min.css";@import"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/solid.min.css";@import"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/regular.min.css";:root{--ac-font-family: 'Geist', 'Segoe UI', system-ui, -apple-system, sans-serif;--background-50: #f7f9f9;--background-100: #eff3f3;--neutral-0: #fff;--neutral-50: #f2f4f4;--neutral-100: #e5e9ea;--neutral-150: #dae0e1;--neutral-200: #cbd3d4;--neutral-250: #bec8ca;--neutral-300: #b0bdbf;--neutral-400: #96a7a9;--neutral-500: #7c9194;--neutral-600: #637476;--neutral-700: #4a5759;--neutral-800: #323a3b;--neutral-900: #1f2d2d;--site-50: #ffebe1;--site-100: #ffceb6;--site-200: #f79d71;--site-300: #f5844e;--site-500: #f26522;--site-600: #da5b1f;--site-700: #c2511b;--premium-50: #dfefef;--premium-100: #cfe7e6;--premium-200: #bfdfde;--premium-300: #9ed0ce;--premium-400: #7ec0bd;--premium-500: #5eb0ad;--premium-600: #4b8d8a;--premium-700: #386a68;--pulse-10: #e0d8f1;--pulse-100: #a18ad5;--pulse-400: #7250c0;--pulse-500: #623cb9;--ac-color-error: #d92d20;--ac-color-warning: #dc6803;--ac-color-success: #067647;--ac-color-success-rgb: 6, 118, 71;--ac-color-info: #1570ef;--ac-color-info-rgb: 21, 112, 239;--ac-color-text: var(--neutral-800);--ac-color-darker-blue: #1246d4;--ac-color-lighter-blue: rgb(45 126 241);--ac-color-primary: var(--ac-color-info);--ac-color-primary-rgb: var(--ac-color-info-rgb);--ac-input-padding: 0.5rem;--ac-input-padding-sm: 0.3125rem;--ac-input-padding-lg: 0.75rem;--ac-field-padding: 0.5rem 0.75rem;--ac-field-padding-sm: 0.3125rem 0.625rem;--ac-field-padding-lg: 0.6875rem 1rem;--ac-field-font-size: 0.825rem;--ac-field-font-size-sm: 0.75rem;--ac-field-font-size-lg: 0.9375rem;--ac-field-border-radius: 0.5rem;--ac-field-border-radius-sm: 0.375rem;--ac-field-border-radius-lg: 0.625rem;--ac-dropdown-max-height: 18rem;--ac-section-bottom-margin: 1rem;--ac-placeholder-color: var(--neutral-600)}@media(prefers-reduced-motion: no-preference){html{interpolate-size:allow-keywords}}.ac-component{font-family:var(--ac-font-family);letter-spacing:-0.18px;color:var(--neutral-800);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;box-sizing:border-box}.ac-component.v-tooltip{background:var(--neutral-800);font-family:var(--ac-font-family);color:var(--neutral-0);font-size:.8125rem;font-weight:400;line-height:1.4;padding:var(--ac-field-padding);border-radius:.5rem;white-space:normal;width:max-content;box-shadow:0 2px 6px rgba(0,0,0,.12)}.ac-component{--vf-ring-color: var(--ac-color-primary);--vf-primary: var(--ac-color-primary);--vf-border-color-checked: var(--ac-color-primary)}.ac-component *,.ac-component *::before,.ac-component *::after{box-sizing:border-box}.ac-component img,.ac-component picture,.ac-component video,.ac-component canvas,.ac-component svg{display:block;max-width:100%}.ac-component input,.ac-component button,.ac-component textarea,.ac-component select{font-family:inherit}.ac-component p,.ac-component h1,.ac-component h2,.ac-component h3,.ac-component h4,.ac-component h5,.ac-component h6{overflow-wrap:break-word}.ac-component *{margin:0}.ac-component .fa-tag,.ac-component .fa-arrow-rotate-right{transform:translateY(0.5px)}.ac-component .align-center-fix{transform:translateY(0.5px)}.ac-component hr.separator{border:none;border-top:1px solid var(--neutral-200);margin:.5rem 0}.ac-component .lh-1{line-height:1}.ac-component .flex-center{display:flex;align-items:center}.ac-component .click-expand{--expand-size: 0.5rem}.ac-component .click-expand::after{content:"";position:absolute;inset:calc(-1*var(--expand-size))}.ac-component .m-0{margin:0 !important}.ac-component .mx-0{margin-left:0 !important;margin-right:0 !important}.ac-component .my-0{margin-top:0 !important;margin-bottom:0 !important}.ac-component .mt-0{margin-top:0 !important}.ac-component .mb-0{margin-bottom:0 !important}.ac-component .ml-0{margin-left:0 !important}.ac-component .mr-0{margin-right:0 !important}.ac-component .m-1{margin:.25rem !important}.ac-component .mx-1{margin-left:.25rem !important;margin-right:.25rem !important}.ac-component .my-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.ac-component .mt-1{margin-top:.25rem !important}.ac-component .mb-1{margin-bottom:.25rem !important}.ac-component .ml-1{margin-left:.25rem !important}.ac-component .mr-1{margin-right:.25rem !important}.ac-component .m-2{margin:.5rem !important}.ac-component .mx-2{margin-left:.5rem !important;margin-right:.5rem !important}.ac-component .my-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.ac-component .mt-2{margin-top:.5rem !important}.ac-component .mb-2{margin-bottom:.5rem !important}.ac-component .ml-2{margin-left:.5rem !important}.ac-component .mr-2{margin-right:.5rem !important}.ac-component .m-3{margin:1rem !important}.ac-component .mx-3{margin-left:1rem !important;margin-right:1rem !important}.ac-component .my-3{margin-top:1rem !important;margin-bottom:1rem !important}.ac-component .mt-3{margin-top:1rem !important}.ac-component .mb-3{margin-bottom:1rem !important}.ac-component .ml-3{margin-left:1rem !important}.ac-component .mr-3{margin-right:1rem !important}.ac-component .m-4{margin:1.5rem !important}.ac-component .mx-4{margin-left:1.5rem !important;margin-right:1.5rem !important}.ac-component .my-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.ac-component .mt-4{margin-top:1.5rem !important}.ac-component .mb-4{margin-bottom:1.5rem !important}.ac-component .ml-4{margin-left:1.5rem !important}.ac-component .mr-4{margin-right:1.5rem !important}.ac-component .m-5{margin:3rem !important}.ac-component .mx-5{margin-left:3rem !important;margin-right:3rem !important}.ac-component .my-5{margin-top:3rem !important;margin-bottom:3rem !important}.ac-component .mt-5{margin-top:3rem !important}.ac-component .mb-5{margin-bottom:3rem !important}.ac-component .ml-5{margin-left:3rem !important}.ac-component .mr-5{margin-right:3rem !important}.ac-component .m-auto{margin:auto !important}.ac-component .mx-auto{margin-left:auto !important;margin-right:auto !important}.ac-component .my-auto{margin-top:auto !important;margin-bottom:auto !important}.ac-component .mt-auto{margin-top:auto !important}.ac-component .mb-auto{margin-bottom:auto !important}.ac-component .ml-auto{margin-left:auto !important}.ac-component .mr-auto{margin-right:auto !important}.ac-component .p-0{padding:0 !important}.ac-component .px-0{padding-left:0 !important;padding-right:0 !important}.ac-component .py-0{padding-top:0 !important;padding-bottom:0 !important}.ac-component .pt-0{padding-top:0 !important}.ac-component .pb-0{padding-bottom:0 !important}.ac-component .pl-0{padding-left:0 !important}.ac-component .pr-0{padding-right:0 !important}.ac-component .p-1{padding:.25rem !important}.ac-component .px-1{padding-left:.25rem !important;padding-right:.25rem !important}.ac-component .py-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.ac-component .pt-1{padding-top:.25rem !important}.ac-component .pb-1{padding-bottom:.25rem !important}.ac-component .pl-1{padding-left:.25rem !important}.ac-component .pr-1{padding-right:.25rem !important}.ac-component .p-2{padding:.5rem !important}.ac-component .px-2{padding-left:.5rem !important;padding-right:.5rem !important}.ac-component .py-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.ac-component .pt-2{padding-top:.5rem !important}.ac-component .pb-2{padding-bottom:.5rem !important}.ac-component .pl-2{padding-left:.5rem !important}.ac-component .pr-2{padding-right:.5rem !important}.ac-component .p-3{padding:1rem !important}.ac-component .px-3{padding-left:1rem !important;padding-right:1rem !important}.ac-component .py-3{padding-top:1rem !important;padding-bottom:1rem !important}.ac-component .pt-3{padding-top:1rem !important}.ac-component .pb-3{padding-bottom:1rem !important}.ac-component .pl-3{padding-left:1rem !important}.ac-component .pr-3{padding-right:1rem !important}.ac-component .p-4{padding:1.5rem !important}.ac-component .px-4{padding-left:1.5rem !important;padding-right:1.5rem !important}.ac-component .py-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.ac-component .pt-4{padding-top:1.5rem !important}.ac-component .pb-4{padding-bottom:1.5rem !important}.ac-component .pl-4{padding-left:1.5rem !important}.ac-component .pr-4{padding-right:1.5rem !important}.ac-component .p-5{padding:3rem !important}.ac-component .px-5{padding-left:3rem !important;padding-right:3rem !important}.ac-component .py-5{padding-top:3rem !important;padding-bottom:3rem !important}.ac-component .pt-5{padding-top:3rem !important}.ac-component .pb-5{padding-bottom:3rem !important}.ac-component .pl-5{padding-left:3rem !important}.ac-component .pr-5{padding-right:3rem !important}.ac-component .gap-0{gap:0 !important}.ac-component .gap-1{gap:.25rem !important}.ac-component .gap-2{gap:.5rem !important}.ac-component .gap-3{gap:1rem !important}.ac-component .gap-4{gap:1.5rem !important}.ac-component .gap-5{gap:3rem !important}.ac-component .d-flex{display:flex !important}.ac-component .d-inline-flex{display:inline-flex !important}.ac-component .d-block{display:block !important}.ac-component .d-inline-block{display:inline-block !important}.ac-component .flex-wrap{flex-wrap:wrap}.ac-component .flex-column{flex-direction:column}.ac-component .text-center{text-align:center}.ac-component .w-100{width:100% !important}.ac-component .mw-100{max-width:100% !important}.ac-component .h-100{height:100% !important}.ac-component .mh-100{max-height:100% !important}.ac-component .pointer{cursor:pointer}.ac-component .nowrap{white-space:nowrap}.ac-component .align-items-center{align-items:center}.ac-component .text-primary,.ac-component .text-normal{color:var(--neutral-800) !important}.ac-component .text-info{color:var(--ac-color-info) !important}.ac-component .text-success{color:var(--ac-color-success) !important}.ac-component .text-warning{color:var(--ac-color-warning) !important}.ac-component .text-error,.ac-component .text-danger{color:var(--ac-color-error) !important}.ac-component .lh-normal{line-height:normal !important}.ac-component .lh-1{line-height:1 !important}.ac-component .hide,.ac-component .hidden{display:none !important}.ac-component .c-wrapper{position:relative}.ac-component .c-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ac-component .c-field-size{font-size:var(--ac-field-font-size);padding:var(--ac-field-padding)}.ac-component .c-field-size--sm,.ac-component .c-field-size--small{font-size:var(--ac-field-font-size-sm);padding:var(--ac-field-padding-sm)}.ac-component .c-field-size--lg,.ac-component .c-field-size--large{font-size:var(--ac-field-font-size-lg);padding:var(--ac-field-padding-lg)}.ac-component .c-type-color{--text-color: var(--neutral-800);--hover-bg-color: var(--neutral-100);--hover-text-color: var(--neutral-800);color:var(--text-color)}.ac-component .c-type-color:hover{background-color:var(--hover-bg-color);color:var(--hover-text-color)}.ac-component .c-type-color--error{--text-color: var(--ac-color-error);--hover-bg-color: var(--ac-color-error);--hover-text-color: var(--neutral-0)}.ac-component .c-type-color--success{--text-color: var(--ac-color-success);--hover-bg-color: var(--ac-color-success);--hover-text-color: var(--neutral-0)}.ac-component .c-type-color--warning{--text-color: var(--ac-color-warning);--hover-bg-color: var(--ac-color-warning);--hover-text-color: var(--neutral-0)}.ac-component .c-type-color--info{--text-color: var(--ac-color-info);--hover-bg-color: var(--ac-color-info);--hover-text-color: var(--neutral-0)}.ac-component .c-type-color--dark{--text-color: var(--neutral-0);--hover-bg-color: var(--neutral-800);--hover-text-color: var(--neutral-0)}.ac-component .c-chip{display:inline-flex;padding:0;border-radius:.25rem;background:var(--neutral-100);color:var(--neutral-700);font-size:.75rem;line-height:1.3;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ac-component .c-indicator{display:inline-flex;align-items:center;justify-content:center;min-width:1.25rem;height:1.25rem;padding:0 .375rem;border-radius:999px;background:var(--neutral-200);color:var(--neutral-700);font-family:var(--ac-font-family);font-size:.7rem;font-weight:700;font-variant-numeric:tabular-nums}.ac-component .c-scroll{scrollbar-width:thin;scrollbar-color:var(--neutral-300) rgba(0,0,0,0)}.ac-component .c-scroll::-webkit-scrollbar{width:.5rem;height:.5rem}.ac-component .c-scroll::-webkit-scrollbar-track{background:rgba(0,0,0,0)}.ac-component .c-scroll::-webkit-scrollbar-thumb{background:var(--neutral-300);border-radius:999px;border:2px solid rgba(0,0,0,0);background-clip:content-box;transition:background-color .15s}.ac-component .c-scroll::-webkit-scrollbar-thumb:hover{background:var(--neutral-500);background-clip:content-box}.ac-component .c-scroll::-webkit-scrollbar-corner{background:rgba(0,0,0,0)}.ac-component .c-placeholder{flex:1;font-style:italic;min-width:0;padding:var(--ac-input-padding);color:var(--ac-placeholder-color)}.ac-component .c-input{width:100%;font-family:inherit;letter-spacing:-0.36px;border:none;background:rgba(0,0,0,0);padding:var(--ac-input-padding);font-size:var(--ac-field-font-size);color:var(--neutral-900)}.ac-component .c-input::placeholder{color:var(--ac-placeholder-color);font-style:italic}.ac-component .c-input:-webkit-autofill,.ac-component .c-input:-webkit-autofill:hover,.ac-component .c-input:-webkit-autofill:focus,.ac-component .c-input:-webkit-autofill:active{border-radius:inherit}.ac-component .c-input:focus,.ac-component .c-input:focus-within,.ac-component .c-input:focus-visible,.ac-component .c-focus:focus,.ac-component .c-focus:focus-within,.ac-component .c-focus:focus-visible{border-color:var(--ac-color-lighter-blue);outline:0}.ac-component .c-input-wrapper{position:relative;display:flex;flex-direction:column;gap:.25rem}.ac-component .c-textarea{resize:none}.ac-component .c-input-row{display:flex;align-items:center;font-family:inherit;border:1px solid var(--neutral-200);border-radius:var(--ac-field-border-radius);background:var(--neutral-0);font-size:var(--ac-field-font-size);color:var(--neutral-900);transition:border-color .15s}.ac-component .c-input-row::placeholder{color:var(--ac-placeholder-color);font-style:italic}.ac-component .c-input-row--disabled{background:var(--neutral-50);cursor:not-allowed}.ac-component .c-input-row:is(input,textarea){padding:var(--ac-input-padding)}.ac-component .c-input-row:hover{border-color:var(--neutral-300)}.ac-component .c-input-row:focus-within,.ac-component .c-input-row:focus,.ac-component .c-input-row:focus-visible,.ac-component .c-input-row--focus{border-color:var(--ac-color-lighter-blue);box-shadow:0 0 0 2px rgba(21,112,239,.1)}.ac-component .c-input-row:focus-within:hover,.ac-component .c-input-row:focus:hover,.ac-component .c-input-row:focus-visible:hover,.ac-component .c-input-row--focus:hover{border-color:var(--ac-color-darker-blue)}.ac-component .c-input-row--sm{border-radius:var(--ac-field-border-radius-sm);font-size:var(--ac-field-font-size-sm)}.ac-component .c-input-row--sm:is(input,textarea){padding:var(--ac-input-padding-sm)}.ac-component .c-input-row--sm .c-icon-btn{font-size:var(--ac-field-font-size-sm)}.ac-component .c-input-row--sm .c-placeholder{font-size:var(--ac-field-font-size-sm);padding:var(--ac-input-padding-sm)}.ac-component .c-input-row--sm .c-input{padding:var(--ac-input-padding-sm);font-size:var(--ac-field-font-size-sm)}.ac-component .c-input-row--lg{border-radius:var(--ac-field-border-radius-lg);font-size:var(--ac-field-font-size-lg)}.ac-component .c-input-row--lg:is(input,textarea){padding:var(--ac-input-padding-lg)}.ac-component .c-input-row--lg .c-icon-btn{font-size:var(--ac-field-font-size-lg)}.ac-component .c-input-row--lg .c-placeholder{font-size:var(--ac-field-font-size-lg);padding:var(--ac-input-padding-lg)}.ac-component .c-input-row--lg .c-input{padding:var(--ac-input-padding-lg);font-size:var(--ac-field-font-size-lg)}.ac-component .c-icon-btn{display:flex;align-items:center;justify-content:center;border:none;background:rgba(0,0,0,0);cursor:pointer;transition:color .15s}.ac-component .c-icon-btn--clear{color:var(--neutral-400);padding-left:0;padding-right:.375rem}.ac-component .c-icon-btn--clear:hover{color:var(--ac-color-error)}.ac-component .c-icon-btn--chevron{color:var(--neutral-500);transition:transform .2s}.ac-component .c-icon-btn--chevron-open{transform:rotate(180deg)}.ac-component .c-icon-btn--calendar{font-size:.925rem;color:var(--neutral-500);padding-inline:.375rem}.ac-component .c-icon-btn--calendar:hover{color:var(--site-500)}.ac-component .c-icon-btn--hidden{visibility:hidden;pointer-events:none}.ac-component .c-dropdown{position:absolute;top:calc(100% + .25rem);left:0;z-index:1000;background:var(--neutral-0);border:1px solid var(--neutral-200);border-radius:var(--ac-field-border-radius);box-shadow:0 4px 12px rgba(0,0,0,.5);overflow:hidden}.ac-component .c-footer{display:flex;align-items:center;justify-content:flex-end;gap:1rem;margin-top:1rem;padding:.5rem;border-top:1px solid var(--neutral-100)}.ac-component .c-checkbox{display:inline-block;width:1rem;height:1rem;vertical-align:middle;position:relative;cursor:pointer;border:1.5px solid var(--neutral-300);border-radius:.25rem;background:var(--neutral-0);transition:border-color .15s,background-color .15s}.ac-component .c-checkbox:hover{border-color:var(--ac-color-info);background:var(--premium-300)}.ac-component .c-checkbox::after{content:"";position:absolute;top:50%;left:50%;width:.3rem;height:.55rem;border:solid #fff;border-width:0 2px 2px 0;transform:translate(-50%, -60%) rotate(45deg);opacity:0}.ac-component .c-checkbox--checked,.ac-component .c-checkbox:checked{border-color:var(--ac-color-info);background:var(--ac-color-info)}.ac-component .c-checkbox--checked::after,.ac-component .c-checkbox:checked::after{opacity:1}.ac-component .c-checkbox--checked:hover,.ac-component .c-checkbox:checked:hover{background:var(--premium-300)}.ac-component .c-checkbox--disabled,.ac-component .c-checkbox:disabled{opacity:.5;cursor:not-allowed}.ac-component input.c-checkbox{appearance:none;-webkit-appearance:none;-moz-appearance:none;margin:0}.ac-component .c-checkbox-wrapper{display:inline-flex;align-items:center;line-height:1}.ac-component .c-checkbox-wrapper .c-checkbox-inner{display:inline-flex;align-items:center;gap:.25rem;cursor:pointer}.ac-component .c-checkbox-wrapper .c-checkbox-inner:hover .c-checkbox{border-color:var(--ac-color-primary);background:rgba(var(--ac-color-primary-rgb), 0.2)}.ac-component .c-checkbox-wrapper .c-checkbox-inner:hover .c-checkbox:checked,.ac-component .c-checkbox-wrapper .c-checkbox-inner:hover .c-checkbox--checked{background:var(--ac-color-darker-blue)}.ac-component .c-label{font-size:.8125rem;font-weight:600;text-transform:uppercase;letter-spacing:.03em;color:var(--neutral-600)}.ac-component .c-label--on-border{position:absolute;top:-0.5lh;left:.5rem;padding:0 .125rem;font-size:.7rem;background:var(--neutral-0);text-transform:none}.ac-component .c-btn-group{display:inline-flex;border-radius:var(--ac-field-border-radius);overflow:hidden}.ac-component .c-btn-group>*{border-radius:0 !important}.ac-component .c-btn-group>*:not(:last-child){border-right-width:0 !important}.ac-component .c-btn-group>*:first-child{border-top-left-radius:var(--ac-field-border-radius) !important;border-bottom-left-radius:var(--ac-field-border-radius) !important}.ac-component .c-btn-group>*:last-child{border-top-right-radius:var(--ac-field-border-radius) !important;border-bottom-right-radius:var(--ac-field-border-radius) !important}.ac-component .c-btn-group-vertical{display:inline-flex;flex-direction:column;border-radius:var(--ac-field-border-radius);overflow:hidden}.ac-component .c-btn-group-vertical>*{border-radius:0 !important;width:100%}.ac-component .c-btn-group-vertical>*:not(:last-child){border-bottom-width:0 !important}.ac-component .c-btn-group-vertical>*:first-child{border-top-left-radius:var(--ac-field-border-radius) !important;border-top-right-radius:var(--ac-field-border-radius) !important}.ac-component .c-btn-group-vertical>*:last-child{border-bottom-left-radius:var(--ac-field-border-radius) !important;border-bottom-right-radius:var(--ac-field-border-radius) !important}.ac-component .c-btn{--btn-color: var(--neutral-200);--btn-bg: var(--background-50);--btn-text: var(--neutral-800);--btn-hover-bg: var(--neutral-100);--btn-hover-border: var(--neutral-300);--btn-indicator-bg: var(--neutral-0);--btn-indicator-text: var(--neutral-700);font-family:var(--ac-font-family);letter-spacing:-0.18px;display:inline-flex;align-items:center;gap:.375em;padding:var(--ac-field-padding);border:1px solid var(--btn-color);border-radius:var(--ac-field-border-radius);background:var(--btn-bg);color:var(--btn-text);font-size:var(--ac-field-font-size);font-weight:500;cursor:pointer;text-transform:capitalize;transition:background-color .15s,border-color .15s,color .15s,box-shadow .15s}.ac-component .c-btn:hover,.ac-component .c-btn:active{background:var(--btn-hover-bg);border-color:var(--btn-hover-border)}.ac-component .c-btn:focus-visible{outline:none;box-shadow:0 0 0 2px rgba(242,101,34,.12)}.ac-component .c-btn:disabled{opacity:.5;cursor:not-allowed;pointer-events:none}.ac-component .c-btn .c-btn-indicator{display:inline-flex;align-items:center;justify-content:center;min-width:1.125rem;height:1.125rem;margin-left:.5rem;padding:0 .35rem;padding-right:.375rem;border-radius:999px;color:var(--btn-indicator-text);font-variant-numeric:tabular-nums;font-size:.75rem;font-weight:600;background:var(--btn-indicator-bg)}.ac-component .c-btn-sm{padding:var(--ac-field-padding-sm);font-size:var(--ac-field-font-size-sm);border-radius:var(--ac-field-border-radius-sm)}.ac-component .c-btn-lg{padding:var(--ac-field-padding-lg);font-size:var(--ac-field-font-size-lg);border-radius:var(--ac-field-border-radius-lg)}.ac-component .c-btn-dark{--btn-color: var(--neutral-800);--btn-bg: var(--neutral-800);--btn-text: var(--neutral-0);--btn-hover-bg: var(--neutral-900);--btn-hover-border: var(--neutral-900);--btn-indicator-bg: var(--neutral-0);--btn-indicator-text: var(--neutral-800)}.ac-component .c-btn-outline{--btn-bg: transparent;--btn-color: var(--neutral-300);--btn-text: var(--neutral-800);--btn-hover-bg: var(--neutral-800);--btn-hover-border: var(--neutral-500);--btn-indicator-bg: var(--neutral-100);--btn-indicator-text: var(--neutral-800)}.ac-component .c-btn-outline:hover,.ac-component .c-btn-outline:active{color:var(--neutral-0)}.ac-component .c-btn-success{--btn-color: var(--ac-color-success);--btn-bg: var(--ac-color-success);--btn-text: var(--neutral-0);--btn-hover-bg: color-mix(in srgb, var(--ac-color-success) 85%, black);--btn-hover-border: color-mix(in srgb, var(--ac-color-success) 85%, black);--btn-indicator-bg: var(--neutral-0);--btn-indicator-text: var(--ac-color-success)}.ac-component .c-btn-error{--btn-color: var(--ac-color-error);--btn-bg: var(--ac-color-error);--btn-text: var(--neutral-0);--btn-hover-bg: color-mix(in srgb, var(--ac-color-error) 85%, black);--btn-hover-border: color-mix(in srgb, var(--ac-color-error) 85%, black);--btn-indicator-bg: var(--neutral-0);--btn-indicator-text: var(--ac-color-error)}.ac-component .c-btn-warning{--btn-color: var(--ac-color-warning);--btn-bg: var(--ac-color-warning);--btn-text: var(--neutral-0);--btn-hover-bg: color-mix(in srgb, var(--ac-color-warning) 85%, black);--btn-hover-border: color-mix(in srgb, var(--ac-color-warning) 85%, black);--btn-indicator-bg: var(--neutral-0);--btn-indicator-text: var(--ac-color-warning)}.ac-component .c-btn-info{--btn-color: var(--ac-color-info);--btn-bg: var(--ac-color-info);--btn-text: var(--neutral-0);--btn-hover-bg: color-mix(in srgb, var(--ac-color-info) 85%, black);--btn-hover-border: color-mix(in srgb, var(--ac-color-info) 85%, black);--btn-indicator-bg: var(--neutral-0);--btn-indicator-text: var(--ac-color-info)}.ac-component .c-btn-outline.c-btn-success{--btn-bg: transparent;--btn-text: var(--ac-color-success);--btn-hover-bg: var(--ac-color-success);--btn-hover-border: var(--ac-color-success);--btn-indicator-bg: var(--ac-color-success);--btn-indicator-text: var(--neutral-0)}.ac-component .c-btn-outline.c-btn-success:hover,.ac-component .c-btn-outline.c-btn-success:active{color:var(--neutral-0);--btn-indicator-bg: var(--neutral-0);--btn-indicator-text: var(--neutral-700)}.ac-component .c-btn-outline.c-btn-error{--btn-bg: transparent;--btn-text: var(--ac-color-error);--btn-hover-bg: var(--ac-color-error);--btn-hover-border: var(--ac-color-error);--btn-indicator-bg: var(--ac-color-error);--btn-indicator-text: var(--neutral-0)}.ac-component .c-btn-outline.c-btn-error:hover,.ac-component .c-btn-outline.c-btn-error:active{color:var(--neutral-0);--btn-indicator-bg: var(--neutral-0);--btn-indicator-text: var(--neutral-700)}.ac-component .c-btn-outline.c-btn-warning{--btn-bg: transparent;--btn-text: var(--ac-color-warning);--btn-hover-bg: var(--ac-color-warning);--btn-hover-border: var(--ac-color-warning);--btn-indicator-bg: var(--ac-color-warning);--btn-indicator-text: var(--neutral-900)}.ac-component .c-btn-outline.c-btn-warning:hover,.ac-component .c-btn-outline.c-btn-warning:active{color:var(--neutral-900);--btn-indicator-bg: var(--neutral-0);--btn-indicator-text: var(--neutral-700)}.ac-component .c-btn-outline.c-btn-info{--btn-bg: transparent;--btn-text: var(--ac-color-info);--btn-hover-bg: var(--ac-color-info);--btn-hover-border: var(--ac-color-info);--btn-indicator-bg: var(--ac-color-info);--btn-indicator-text: var(--neutral-0)}.ac-component .c-btn-outline.c-btn-info:hover,.ac-component .c-btn-outline.c-btn-info:active{color:var(--neutral-0);--btn-indicator-bg: var(--neutral-0);--btn-indicator-text: var(--neutral-700)}.ac-component .c-btn-outline.c-btn-dark{--btn-bg: transparent;--btn-color: var(--neutral-800);--btn-text: var(--neutral-800);--btn-hover-bg: var(--neutral-800);--btn-hover-border: var(--neutral-800);--btn-indicator-bg: var(--neutral-800);--btn-indicator-text: var(--neutral-0)}.ac-component .c-btn-outline.c-btn-dark:hover,.ac-component .c-btn-outline.c-btn-dark:active{color:var(--neutral-0);--btn-indicator-bg: var(--neutral-0);--btn-indicator-text: var(--neutral-700)}.ac-component .vf-checkbox-wrapper{display:flex;align-items:center;gap:.25rem}.ac-component .vf-input-field::placeholder{color:var(--ac-placeholder-color)}/*# sourceMappingURL=main.css.map */
|
package/dist/main.css.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sourceRoot":"","sources":["../src/styles/_global.scss","../src/styles/_variables.scss","../src/styles/main.scss","../src/styles/_base.scss","../src/styles/_utility.scss","../src/styles/_controls.scss","../src/styles/_buttons.scss","../src/styles/_vueform.scss"],"names":[],"mappings":"AAAQ,mFACA,2FACA,qFACA,uFCHR,MACE,4EAEA,yBACA,0BAEA,kBACA,sBACA,uBACA,uBACA,uBACA,uBACA,uBACA,uBACA,uBACA,uBACA,uBACA,uBACA,uBAEA,mBACA,oBACA,oBACA,oBACA,oBACA,oBACA,oBAEA,sBACA,uBACA,uBACA,uBACA,uBACA,uBACA,uBACA,uBAEA,oBACA,qBACA,qBACA,qBAEA,0BACA,4BACA,4BACA,yBACA,kCAEA,gCACA,yCAEA,yCACA,iDAEA,2BACA,iCACA,+BAEA,mCACA,0CACA,sCACA,+BACA,iCACA,mCACA,iCACA,sCACA,sCAEA,gCAEA,iCAEA,
|
|
1
|
+
{"version":3,"sourceRoot":"","sources":["../src/styles/_global.scss","../src/styles/_variables.scss","../src/styles/main.scss","../src/styles/_base.scss","../src/styles/_utility.scss","../src/styles/_controls.scss","../src/styles/_buttons.scss","../src/styles/_vueform.scss"],"names":[],"mappings":"AAAQ,mFACA,2FACA,qFACA,uFCHR,MACE,4EAEA,yBACA,0BAEA,kBACA,sBACA,uBACA,uBACA,uBACA,uBACA,uBACA,uBACA,uBACA,uBACA,uBACA,uBACA,uBAEA,mBACA,oBACA,oBACA,oBACA,oBACA,oBACA,oBAEA,sBACA,uBACA,uBACA,uBACA,uBACA,uBACA,uBACA,uBAEA,oBACA,qBACA,qBACA,qBAEA,0BACA,4BACA,4BACA,mCACA,yBACA,kCAEA,oCAEA,gCACA,yCAEA,yCACA,iDAEA,2BACA,iCACA,+BAEA,mCACA,0CACA,sCACA,+BACA,iCACA,mCACA,iCACA,sCACA,sCAEA,gCAEA,iCAEA,2CDtEF,8CACE,KACE,iCAIJ,cACE,kCACA,uBACA,yBACA,mCACA,kCACA,sBAEA,wBACE,8BACA,kCACA,uBACA,mBACA,gBACA,gBACA,gCACA,oBACA,mBACA,kBACA,qCErBJ,cCPE,yCACA,sCACA,mDAGA,+DAGE,sBAGF,mGAKE,cACA,eAGF,qFAIE,oBAEF,sHAOE,yBAEF,gBACE,SAQF,2DAEE,4BAGF,gCACE,4BAGF,2BACE,YACA,wCACA,eAGF,oBACE,cAGF,2BACE,aACA,mBAGF,4BACE,sBAEA,mCACE,WACA,kBACA,kCClDA,mBACE,oBAGF,oBACE,yBACA,0BAGF,oBACE,wBACA,2BAIA,oBACE,wBADF,oBACE,2BADF,oBACE,yBADF,oBACE,0BAhBJ,mBACE,yBAGF,oBACE,8BACA,+BAGF,oBACE,6BACA,gCAIA,oBACE,6BADF,oBACE,gCADF,oBACE,8BADF,oBACE,+BAhBJ,mBACE,wBAGF,oBACE,6BACA,8BAGF,oBACE,4BACA,+BAIA,oBACE,4BADF,oBACE,+BADF,oBACE,6BADF,oBACE,8BAhBJ,mBACE,uBAGF,oBACE,4BACA,6BAGF,oBACE,2BACA,8BAIA,oBACE,2BADF,oBACE,8BADF,oBACE,4BADF,oBACE,6BAhBJ,mBACE,yBAGF,oBACE,8BACA,+BAGF,oBACE,6BACA,gCAIA,oBACE,6BADF,oBACE,gCADF,oBACE,8BADF,oBACE,+BAhBJ,mBACE,uBAGF,oBACE,4BACA,6BAGF,oBACE,2BACA,8BAIA,oBACE,2BADF,oBACE,8BADF,oBACE,4BADF,oBACE,6BAMJ,sBACE,uBAEF,uBACE,4BACA,6BAEF,uBACE,2BACA,8BAGA,uBACE,2BADF,uBACE,8BADF,uBACE,4BADF,uBACE,6BAnCJ,mBACE,qBAGF,oBACE,0BACA,2BAGF,oBACE,yBACA,4BAIA,oBACE,yBADF,oBACE,4BADF,oBACE,0BADF,oBACE,2BAhBJ,mBACE,0BAGF,oBACE,+BACA,gCAGF,oBACE,8BACA,iCAIA,oBACE,8BADF,oBACE,iCADF,oBACE,+BADF,oBACE,gCAhBJ,mBACE,yBAGF,oBACE,8BACA,+BAGF,oBACE,6BACA,gCAIA,oBACE,6BADF,oBACE,gCADF,oBACE,8BADF,oBACE,+BAhBJ,mBACE,wBAGF,oBACE,6BACA,8BAGF,oBACE,4BACA,+BAIA,oBACE,4BADF,oBACE,+BADF,oBACE,6BADF,oBACE,8BAhBJ,mBACE,0BAGF,oBACE,+BACA,gCAGF,oBACE,8BACA,iCAIA,oBACE,8BADF,oBACE,iCADF,oBACE,+BADF,oBACE,gCAhBJ,mBACE,wBAGF,oBACE,6BACA,8BAGF,oBACE,4BACA,+BAIA,oBACE,4BADF,oBACE,+BADF,oBACE,6BADF,oBACE,8BA0BN,qBACE,iBADF,qBACE,sBADF,qBACE,qBADF,qBACE,oBADF,qBACE,sBADF,qBACE,oBAIJ,sBACE,wBAGF,6BACE,+BAGF,uBACE,yBAGF,8BACE,gCAGF,yBACE,eAGF,2BACE,sBAGF,2BACE,kBAGF,qBACE,sBAGF,sBACE,0BAGF,qBACE,uBAGF,sBACE,2BAGF,uBACE,eAGF,sBACE,mBAGF,kCACE,mBAGF,uDAEE,oCAEF,yBACE,sCAEF,4BACE,yCAEF,4BACE,yCAEF,qDAEE,uCAGF,yBACE,8BAGF,oBACE,yBAGF,0CACE,wBC3JF,yBACE,kBAGF,0BACE,gBACA,uBACA,mBAGF,4BACE,oCACA,gCAEA,mEAEE,uCACA,mCAGF,mEAEE,uCACA,mCAIJ,4BACE,iCACA,qCACA,uCAEA,wBACA,kCACE,uCACA,8BAEF,mCACE,oCACA,wCACA,qCAEF,qCACE,sCACA,0CACA,qCAEF,qCACE,sCACA,0CACA,qCAEF,kCACE,mCACA,uCACA,qCAEF,kCACE,+BACA,qCACA,qCAIJ,sBACE,oBACA,UACA,qBACA,8BACA,yBACA,iBACA,gBACA,eACA,gBACA,uBACA,mBAGF,2BACE,oBACA,mBACA,uBACA,kBACA,eACA,kBACA,oBACA,8BACA,yBACA,kCACA,gBACA,gBACA,kCAGF,wBACE,qBACA,iDAEA,2CACE,YACA,aAGF,iDACE,yBAGF,iDACE,8BACA,oBACA,+BACA,4BACA,iCAGF,uDACE,8BACA,4BAGF,kDACE,yBAIJ,6BACE,OACA,kBACA,YACA,gCACA,kCAGF,uBACE,WACA,oBACA,uBACA,YACA,yBACA,gCACA,oCACA,yBAEA,oCACE,kCACA,kBAGF,mLAIE,sBASF,4MAGE,0CACA,UAIJ,+BACE,kBACA,aACA,sBACA,WAGF,0BACE,YAGF,2BACE,aACA,mBACA,oBACA,oCACA,4CACA,4BACA,oCACA,yBACA,6BAEA,wCACE,kCACA,kBAGF,qCACE,6BACA,mBAGF,8CACE,gCAGF,iCACE,gCAGF,oJAIE,0CACA,yCAEA,4KACE,yCAIJ,+BACE,+CACA,uCAEA,kDACE,mCAGF,2CACE,uCAGF,8CACE,uCACA,mCAGF,wCACE,mCACA,uCAIJ,+BACE,+CACA,uCAEA,kDACE,mCAGF,2CACE,uCAGF,8CACE,uCACA,mCAGF,wCACE,mCACA,uCAKN,0BACE,aACA,mBACA,uBACA,YACA,yBACA,eACA,sBAEA,iCACE,yBACA,eACA,sBACA,uCACE,4BAIJ,mCACE,yBACA,yBAGF,wCACE,yBAGF,oCACE,kBACA,yBACA,uBACA,0CACE,sBAIJ,kCACE,kBACA,oBAIJ,0BACE,kBACA,wBACA,OACA,aACA,4BACA,oCACA,4CACA,qCACA,gBAGF,wBACE,aACA,mBACA,yBACA,SACA,gBACA,cACA,wCAGF,0BACE,qBACA,WACA,YAEA,sBACA,kBACA,eAEA,sCACA,qBACA,4BAEA,WACE,wCAGF,gCACE,kCACA,8BAGF,iCACE,WACA,kBACA,QACA,SACA,YACA,cACA,kBACA,yBACA,8CACA,UAGF,qEAEE,kCACA,gCAEA,mFACE,UAGF,iFACE,8BAIJ,uEAEE,WACA,mBAIJ,+BACE,gBACA,wBACA,qBACA,SAGF,kCACE,oBACA,mBAEA,cAEA,oDACE,oBACA,mBACA,WACA,eAGE,sEACE,qCACA,kDAEA,6JAEE,uCAOV,uBACE,mBACA,gBACA,yBACA,qBACA,yBAEA,kCACE,kBACA,WACA,WACA,kBACA,gBACA,4BACA,oBAIJ,2BACE,oBACA,4CACA,gBAEA,6BACE,2BAEA,8CACE,gCAIJ,yCACE,gEACA,mEAGF,wCACE,iEACA,oEAIJ,oCACE,oBACA,sBACA,4CACA,gBAEA,sCACE,2BACA,WAEA,uDACE,iCAIJ,kDACE,gEACA,iEAGF,iDACE,mEACA,oECreJ,qBACE,gCACA,+BACA,+BACA,mCACA,uCACA,qCACA,yCAEA,kCACA,uBACA,oBACA,mBACA,WACA,gCACA,kCACA,4CACA,yBACA,sBACA,oCACA,gBACA,eACA,0BAGA,WACE,mEAKF,uDAEE,+BACA,qCAGF,mCACE,aACA,0CAGF,8BACE,WACA,mBACA,oBAGF,sCACE,oBACA,mBACA,uBACA,mBACA,gBACA,kBACA,iBACA,sBACA,oBACA,gCACA,kCACA,iBACA,gBAEA,mCAGF,wBACE,mCACA,uCACA,+CAIF,wBACE,mCACA,uCACA,+CAGF,0BACE,gCACA,6BACA,6BACA,mCACA,uCACA,qCACA,yCAGF,6BACE,sBACA,gCACA,+BACA,mCACA,uCACA,uCACA,yCAEA,uEAEE,uBAIJ,6BACE,qCACA,kCACA,6BACA,uEACA,2EACA,qCACA,8CAGF,2BACE,mCACA,gCACA,6BACA,qEACA,yEACA,qCACA,4CAGF,6BACE,qCACA,kCACA,6BACA,uEACA,2EACA,qCACA,8CAGF,0BACE,kCACA,+BACA,6BACA,oEACA,wEACA,qCACA,2CAKF,2CACE,sBACA,oCACA,wCACA,4CACA,4CACA,uCAEA,mGAEE,uBACA,qCACA,yCAIJ,yCACE,sBACA,kCACA,sCACA,0CACA,0CACA,uCAEA,+FAEE,uBACA,qCACA,yCAIJ,2CACE,sBACA,oCACA,wCACA,4CACA,4CACA,yCAEA,mGAEE,yBACA,qCACA,yCAIJ,wCACE,sBACA,iCACA,qCACA,yCACA,yCACA,uCAEA,6FAEE,uBACA,qCACA,yCAIJ,wCACE,sBACA,gCACA,+BACA,mCACA,uCACA,uCACA,uCAEA,6FAEE,uBACA,qCACA,yCC/NN,mCACE,aACA,mBACA,WAIA,2CACE","file":"main.css"}
|
|
@@ -7,23 +7,23 @@ export interface HeaderToolbar {
|
|
|
7
7
|
export interface HeaderComponentProps {
|
|
8
8
|
title: string;
|
|
9
9
|
icon?: string;
|
|
10
|
-
|
|
10
|
+
backButton?: ButtonProps;
|
|
11
11
|
toolbars?: HeaderToolbar[];
|
|
12
12
|
}
|
|
13
13
|
export declare const headerComponentDefaults: {
|
|
14
14
|
icon: undefined;
|
|
15
|
-
|
|
15
|
+
backButton: () => {
|
|
16
|
+
icon: string;
|
|
17
|
+
ariaLabel: string;
|
|
18
|
+
callback: () => void;
|
|
19
|
+
};
|
|
16
20
|
toolbars: () => never[];
|
|
17
21
|
};
|
|
18
22
|
declare const _default: typeof __VLS_export;
|
|
19
23
|
export default _default;
|
|
20
|
-
declare const __VLS_export: __VLS_WithSlots<import('vue').DefineComponent<HeaderComponentProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
|
|
21
|
-
back: () => any;
|
|
22
|
-
}, string, import('vue').PublicProps, Readonly<HeaderComponentProps> & Readonly<{
|
|
23
|
-
onBack?: (() => any) | undefined;
|
|
24
|
-
}>, {
|
|
24
|
+
declare const __VLS_export: __VLS_WithSlots<import('vue').DefineComponent<HeaderComponentProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<HeaderComponentProps> & Readonly<{}>, {
|
|
25
25
|
icon: string;
|
|
26
|
-
|
|
26
|
+
backButton: ButtonProps;
|
|
27
27
|
toolbars: HeaderToolbar[];
|
|
28
28
|
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>, {
|
|
29
29
|
left?: (props: {}) => any;
|
package/dist/src/index.d.ts
CHANGED
|
@@ -54,7 +54,7 @@ export type { FilterValue, FilterConfig, LayoutMode, DataTableSettings, DataCard
|
|
|
54
54
|
export type { CalendarConfig, DatePickerConfig, DateRangePickerConfig } from './types/datepickers';
|
|
55
55
|
export { dataTableSettingsDefaults, dataCardsSettingsDefaults, dataListSettingsDefaults, } from './types/data-list';
|
|
56
56
|
export { calendarConfigDefaults, datePickerConfigDefaults, dateRangePickerConfigDefaults, } from './types/datepickers';
|
|
57
|
-
export { formatDate, parseDate, localToUTCString, castToDate, startOfDay, endOfDay, startOfWeek, laterOf, earlierOf, } from './utils/date';
|
|
57
|
+
export { formatDate, parseDate, localToUTCString, castToDate, utcToString, startOfDay, endOfDay, startOfWeek, laterOf, earlierOf, } from './utils/date';
|
|
58
58
|
export { debounce } from './utils/debounce';
|
|
59
59
|
export { deepMerge } from './utils/objects';
|
|
60
60
|
export { isIpInUrl } from './utils/ipUtils';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
.ac-component .hc-header{background:var(--neutral-0);border-top:1px solid #0000;border-bottom:1px solid var(--neutral-150);margin-bottom:var(--ac-section-bottom-margin,1rem);flex-wrap:wrap;align-items:center;gap:.75rem 1rem;padding:.5rem .75rem;line-height:1;display:flex}.ac-component .hc-header .hc-back-btn{color:var(--neutral-700)
|
|
1
|
+
.ac-component .hc-header{background:var(--neutral-0);border-top:1px solid #0000;border-bottom:1px solid var(--neutral-150);margin-bottom:var(--ac-section-bottom-margin,1rem);flex-wrap:wrap;align-items:center;gap:.75rem 1rem;padding:.5rem .75rem;line-height:1;display:flex}.ac-component .hc-header .hc-back-btn{color:var(--neutral-700);--btn-bg:transparent;border:none;margin-left:-.5rem;padding:.5rem .625rem;font-size:1.25rem}.ac-component .hc-header .hc-left{align-items:center;gap:.375rem;display:flex}.ac-component .hc-header .hc-title-group{align-items:center;gap:.5rem;display:flex}.ac-component .hc-header .hc-title-icon{color:var(--site-500);font-size:1.25rem}.ac-component .hc-header .hc-title{color:var(--neutral-900);margin:0;font-size:1.75rem;font-weight:600}.ac-component .hc-header .hc-toolbars{flex-grow:1;align-items:center;gap:.5rem;display:flex}.ac-component .hc-header .hc-buttons{flex-wrap:wrap;align-items:center;gap:.25rem;display:flex}.ac-component .hc-header .hc-buttons--left{justify-content:flex-start}.ac-component .hc-header .hc-buttons--center{flex-grow:1;justify-content:center}.ac-component .hc-header .hc-buttons--right{justify-content:flex-end;margin-left:auto}.ac-component .hc-header .hc-slot{align-items:center;gap:.5rem;display:flex}.ac-component .hc-header .hc-slot--center{flex-grow:1;justify-content:center}.ac-component .hc-header .hc-slot--right{justify-content:flex-end;margin-left:auto}
|
package/dist/src/utils/date.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export declare function formatDate(date: Date, format: string): string;
|
|
2
2
|
export declare function parseDate(value: string, format: string): Date | null;
|
|
3
|
+
export declare function utcToString(utc: string | Date | null, includeTime?: boolean): string;
|
|
3
4
|
export declare function localToUTCString(date: Date, includeTime?: boolean): string;
|
|
4
5
|
export declare function castToDate(v: any): Date | null;
|
|
5
6
|
export declare function startOfDay(date: Date): Date;
|