admins-components 9.0.73 → 9.0.76
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 +29 -29
- package/dist/admins-components100.js +1 -1
- package/dist/admins-components100.js.map +1 -1
- package/dist/admins-components102.js +4 -4
- package/dist/admins-components103.js +96 -96
- package/dist/admins-components103.js.map +1 -1
- package/dist/admins-components105.js +4 -4
- package/dist/admins-components105.js.map +1 -1
- package/dist/admins-components11.js +6 -6
- package/dist/admins-components110.js +1 -1
- package/dist/admins-components110.js.map +1 -1
- package/dist/admins-components111.js +2 -2
- package/dist/admins-components111.js.map +1 -1
- package/dist/admins-components112.js.map +1 -1
- package/dist/admins-components113.js +1 -1
- package/dist/admins-components113.js.map +1 -1
- package/dist/admins-components115.js +144 -126
- package/dist/admins-components115.js.map +1 -1
- package/dist/admins-components116.js +7 -5
- package/dist/admins-components116.js.map +1 -1
- package/dist/admins-components117.js +1 -1
- package/dist/admins-components117.js.map +1 -1
- package/dist/admins-components118.js +75 -27
- package/dist/admins-components118.js.map +1 -1
- package/dist/admins-components119.js +30 -6
- package/dist/admins-components119.js.map +1 -1
- package/dist/admins-components12.js.map +1 -1
- package/dist/admins-components120.js +34 -20
- package/dist/admins-components120.js.map +1 -1
- package/dist/admins-components121.js +1 -3
- package/dist/admins-components121.js.map +1 -1
- package/dist/admins-components122.js +4 -3
- package/dist/admins-components122.js.map +1 -1
- package/dist/admins-components124.js +2 -1
- package/dist/admins-components124.js.map +1 -1
- package/dist/admins-components129.js +1 -1
- package/dist/admins-components129.js.map +1 -1
- package/dist/admins-components13.js +2 -2
- package/dist/admins-components13.js.map +1 -1
- package/dist/admins-components132.js +23 -15
- package/dist/admins-components132.js.map +1 -1
- package/dist/admins-components133.js.map +1 -1
- package/dist/admins-components14.js +4 -4
- package/dist/admins-components141.js +2 -2
- package/dist/admins-components141.js.map +1 -1
- package/dist/admins-components142.js.map +1 -1
- package/dist/admins-components143.js +5 -1
- package/dist/admins-components143.js.map +1 -1
- package/dist/admins-components144.js +1 -1
- package/dist/admins-components144.js.map +1 -1
- package/dist/admins-components145.js +4 -1
- package/dist/admins-components145.js.map +1 -1
- package/dist/admins-components146.js +30 -6
- package/dist/admins-components146.js.map +1 -1
- package/dist/admins-components147.js +64 -54
- package/dist/admins-components147.js.map +1 -1
- package/dist/admins-components148.js +8 -25
- package/dist/admins-components148.js.map +1 -1
- package/dist/admins-components149.js +26 -56
- package/dist/admins-components149.js.map +1 -1
- package/dist/admins-components150.js +56 -21
- package/dist/admins-components150.js.map +1 -1
- package/dist/admins-components151.js +27 -45
- package/dist/admins-components151.js.map +1 -1
- package/dist/admins-components152.js +48 -29
- package/dist/admins-components152.js.map +1 -1
- package/dist/admins-components153.js +48 -3
- package/dist/admins-components153.js.map +1 -1
- package/dist/admins-components154.js +3 -179
- package/dist/admins-components154.js.map +1 -1
- package/dist/admins-components155.js +200 -42
- package/dist/admins-components155.js.map +1 -1
- package/dist/admins-components156.js +44 -35
- package/dist/admins-components156.js.map +1 -1
- package/dist/admins-components157.js +35 -44
- package/dist/admins-components157.js.map +1 -1
- package/dist/admins-components158.js +42 -137
- package/dist/admins-components158.js.map +1 -1
- package/dist/admins-components159.js +146 -51
- package/dist/admins-components159.js.map +1 -1
- package/dist/admins-components16.js +2 -2
- package/dist/admins-components16.js.map +1 -1
- package/dist/admins-components160.js +58 -7
- package/dist/admins-components160.js.map +1 -1
- package/dist/admins-components161.js +6 -5
- package/dist/admins-components161.js.map +1 -1
- package/dist/admins-components162.js +6 -76
- package/dist/admins-components162.js.map +1 -1
- package/dist/admins-components163.js +77 -29
- package/dist/admins-components163.js.map +1 -1
- package/dist/admins-components164.js +29 -1931
- package/dist/admins-components164.js.map +1 -1
- package/dist/admins-components165.js +1743 -24631
- package/dist/admins-components165.js.map +1 -1
- package/dist/admins-components166.js +24788 -8
- package/dist/admins-components166.js.map +1 -1
- package/dist/admins-components167.js +9 -7
- package/dist/admins-components167.js.map +1 -0
- package/dist/admins-components168.js +7 -142
- package/dist/admins-components169.js +141 -8
- package/dist/admins-components169.js.map +1 -1
- package/dist/admins-components17.js +3 -3
- package/dist/admins-components170.js +3 -3
- package/dist/admins-components170.js.map +1 -1
- package/dist/admins-components171.js +10 -0
- package/dist/admins-components171.js.map +1 -0
- package/dist/admins-components173.js +160 -45
- package/dist/admins-components173.js.map +1 -1
- package/dist/admins-components174.js +52 -8
- package/dist/admins-components174.js.map +1 -1
- package/dist/admins-components175.js +8 -49
- package/dist/admins-components175.js.map +1 -1
- package/dist/admins-components176.js +50 -6
- package/dist/admins-components176.js.map +1 -1
- package/dist/admins-components177.js +6 -80
- package/dist/admins-components177.js.map +1 -1
- package/dist/admins-components178.js +71 -48
- package/dist/admins-components178.js.map +1 -1
- package/dist/admins-components179.js +30 -35
- package/dist/admins-components179.js.map +1 -1
- package/dist/admins-components18.js +1 -1
- package/dist/admins-components18.js.map +1 -1
- package/dist/admins-components180.js +62 -8
- package/dist/admins-components180.js.map +1 -1
- package/dist/admins-components181.js +8 -51
- package/dist/admins-components181.js.map +1 -1
- package/dist/admins-components182.js +51 -8
- package/dist/admins-components182.js.map +1 -1
- package/dist/admins-components183.js +10 -0
- package/dist/admins-components183.js.map +1 -0
- package/dist/{admins-components184.js → admins-components185.js} +5 -5
- package/dist/{admins-components184.js.map → admins-components185.js.map} +1 -1
- package/dist/admins-components20.js +1 -1
- package/dist/admins-components21.js +10 -6
- package/dist/admins-components21.js.map +1 -1
- package/dist/admins-components22.js +4 -4
- package/dist/admins-components23.js +1 -1
- package/dist/admins-components23.js.map +1 -1
- package/dist/admins-components25.js +1 -1
- package/dist/admins-components26.js +107 -106
- package/dist/admins-components26.js.map +1 -1
- package/dist/admins-components28.js +4 -4
- package/dist/admins-components28.js.map +1 -1
- package/dist/admins-components29.js +1 -1
- package/dist/admins-components29.js.map +1 -1
- package/dist/admins-components3.js +1 -3
- package/dist/admins-components3.js.map +1 -1
- package/dist/admins-components30.js +1 -1
- package/dist/admins-components31.js.map +1 -1
- package/dist/admins-components32.js +2 -2
- package/dist/admins-components32.js.map +1 -1
- package/dist/admins-components34.js +4 -4
- package/dist/admins-components35.js +2 -2
- package/dist/admins-components35.js.map +1 -1
- package/dist/admins-components37.js +4 -4
- package/dist/admins-components38.js +1 -1
- package/dist/admins-components38.js.map +1 -1
- package/dist/admins-components40.js +1 -1
- package/dist/admins-components41.js +1 -1
- package/dist/admins-components41.js.map +1 -1
- package/dist/admins-components43.js +1 -1
- package/dist/admins-components43.js.map +1 -1
- package/dist/admins-components45.js +1 -1
- package/dist/admins-components46.js +1 -1
- package/dist/admins-components46.js.map +1 -1
- package/dist/admins-components48.js +1 -1
- package/dist/admins-components49.js +1 -1
- package/dist/admins-components49.js.map +1 -1
- package/dist/admins-components5.js +2 -2
- package/dist/admins-components5.js.map +1 -1
- package/dist/admins-components51.js +1 -1
- package/dist/admins-components51.js.map +1 -1
- package/dist/admins-components54.js +1 -1
- package/dist/admins-components54.js.map +1 -1
- package/dist/admins-components56.js +1 -1
- package/dist/admins-components57.js +1 -1
- package/dist/admins-components57.js.map +1 -1
- package/dist/admins-components6.js +3 -3
- package/dist/admins-components62.js +1 -1
- package/dist/admins-components62.js.map +1 -1
- package/dist/admins-components64.js +1 -1
- package/dist/admins-components65.js.map +1 -1
- package/dist/admins-components66.js +1 -1
- package/dist/admins-components66.js.map +1 -1
- package/dist/admins-components68.js +5 -5
- package/dist/admins-components68.js.map +1 -1
- package/dist/admins-components7.js +1 -1
- package/dist/admins-components7.js.map +1 -1
- package/dist/admins-components70.js +1 -1
- package/dist/admins-components71.js +1 -1
- package/dist/admins-components71.js.map +1 -1
- package/dist/admins-components73.js +1 -1
- package/dist/admins-components74.js +1 -1
- package/dist/admins-components74.js.map +1 -1
- package/dist/admins-components75.js +1 -1
- package/dist/admins-components75.js.map +1 -1
- package/dist/admins-components77.js +1 -1
- package/dist/admins-components78.js +1 -1
- package/dist/admins-components79.js +1 -1
- package/dist/admins-components79.js.map +1 -1
- package/dist/admins-components8.js +2 -2
- package/dist/admins-components8.js.map +1 -1
- package/dist/admins-components80.js +2 -2
- package/dist/admins-components80.js.map +1 -1
- package/dist/admins-components82.js +4 -4
- package/dist/admins-components83.js +16 -23
- package/dist/admins-components83.js.map +1 -1
- package/dist/admins-components85.js +4 -4
- package/dist/admins-components85.js.map +1 -1
- package/dist/admins-components86.js.map +1 -1
- package/dist/admins-components87.js +46 -24
- package/dist/admins-components87.js.map +1 -1
- package/dist/admins-components88.js +4 -4
- package/dist/admins-components88.js.map +1 -1
- package/dist/admins-components90.js +1 -1
- package/dist/admins-components91.js +1 -1
- package/dist/admins-components91.js.map +1 -1
- package/dist/admins-components93.js +1 -1
- package/dist/admins-components94.js +1 -1
- package/dist/admins-components94.js.map +1 -1
- package/dist/admins-components96.js +1 -1
- package/dist/admins-components97.js +1 -1
- package/dist/admins-components97.js.map +1 -1
- package/dist/admins-components99.js +1 -1
- package/dist/main.css +1 -1
- package/dist/main.css.map +1 -1
- package/dist/src/composables/useDropdownAnchor.d.ts +0 -11
- package/dist/src/index.d.ts +1 -1
- package/dist/src/utils/dataFilters.d.ts +9 -0
- package/dist/{src/styles → styles}/components/data-table/filter-tags.scss_vue_type_style_index_0_src_true_lang.css +1 -1
- package/dist/styles/components/dropdown-select.scss_vue_type_style_index_0_src_true_lang.css +1 -0
- package/package.json +1 -1
- package/dist/admins-components168.js.map +0 -1
- package/dist/admins-components172.js +0 -169
- package/dist/admins-components172.js.map +0 -1
- package/dist/src/styles/components/dropdown-select.scss_vue_type_style_index_0_src_true_lang.css +0 -1
- /package/dist/{src/styles → styles}/components/calendar.scss_vue_type_style_index_0_src_true_lang.css +0 -0
- /package/dist/{src/styles → styles}/components/copy-to-clipboard.scss_vue_type_style_index_0_src_true_lang.css +0 -0
- /package/dist/{src/styles → styles}/components/data-table/data-cards.scss_vue_type_style_index_0_src_true_lang.css +0 -0
- /package/dist/{src/styles → styles}/components/data-table/data-filters.scss_vue_type_style_index_0_src_true_lang.css +0 -0
- /package/dist/{src/styles → styles}/components/data-table/data-list-guide.scss_vue_type_style_index_0_src_true_lang.css +0 -0
- /package/dist/{src/styles → styles}/components/data-table/data-list-options.scss_vue_type_style_index_0_src_true_lang.css +0 -0
- /package/dist/{src/styles → styles}/components/data-table/data-list.scss_vue_type_style_index_0_src_true_lang.css +0 -0
- /package/dist/{src/styles → styles}/components/data-table/data-paginator.scss_vue_type_style_index_0_src_true_lang.css +0 -0
- /package/dist/{src/styles → styles}/components/data-table/data-search.scss_vue_type_style_index_0_src_true_lang.css +0 -0
- /package/dist/{src/styles → styles}/components/data-table/data-sort.scss_vue_type_style_index_0_src_true_lang.css +0 -0
- /package/dist/{src/styles → styles}/components/data-table/data-table.scss_vue_type_style_index_0_src_true_lang.css +0 -0
- /package/dist/{src/styles → styles}/components/data-table/filters-history.scss_vue_type_style_index_0_src_true_lang.css +0 -0
- /package/dist/{src/styles → styles}/components/data-table/tag-list.scss_vue_type_style_index_0_src_true_lang.css +0 -0
- /package/dist/{src/styles → styles}/components/datepickers.scss_vue_type_style_index_1_src_true_lang.css +0 -0
- /package/dist/{src/styles → styles}/components/header.scss_vue_type_style_index_0_src_true_lang.css +0 -0
- /package/dist/{src/styles → styles}/components/image-picker.scss_vue_type_style_index_0_src_true_lang.css +0 -0
- /package/dist/{src/styles → styles}/components/loader.scss_vue_type_style_index_0_src_true_lang.css +0 -0
- /package/dist/{src/styles → styles}/components/modal.scss_vue_type_style_index_0_src_true_lang.css +0 -0
- /package/dist/{src/styles → styles}/components/sidebar.scss_vue_type_style_index_0_src_true_lang.css +0 -0
- /package/dist/{src/styles → styles}/components/toast-notification.scss_vue_type_style_index_0_src_true_lang.css +0 -0
- /package/dist/{src/vueformelements → vueformelements}/ArticlePickerElement.vue_vue_type_style_index_0_scoped_43c54caa_lang.css +0 -0
- /package/dist/{src/vueformelements → vueformelements}/PartnerPickerElement.vue_vue_type_style_index_0_scoped_09bea4ae_lang.css +0 -0
|
@@ -32,35 +32,35 @@ import { getUrlParam as ee, joinUrl as te, navigateIframe as ne, removeUrlParam
|
|
|
32
32
|
import { getDefaultPaginator as ae } from "./admins-components80.js";
|
|
33
33
|
import oe from "./admins-components82.js";
|
|
34
34
|
import { getDefaultSort as se } from "./admins-components83.js";
|
|
35
|
-
import { filterEmptyValues as ce,
|
|
36
|
-
import
|
|
37
|
-
import
|
|
38
|
-
import
|
|
39
|
-
import { getDefaultSearch as
|
|
40
|
-
import { dataListDefaults as
|
|
41
|
-
import
|
|
42
|
-
import { isIpInUrl as
|
|
43
|
-
import { getCurrentSite as
|
|
44
|
-
import { vTooltip as
|
|
45
|
-
import { createNativeFetch as
|
|
46
|
-
import { FetchDetails as
|
|
47
|
-
import { useArticleEditorService as
|
|
48
|
-
import { useCurrentUser as
|
|
49
|
-
import { BackendService as
|
|
50
|
-
import { aoeConfig as
|
|
51
|
-
import
|
|
52
|
-
import { apeConfig as
|
|
53
|
-
import { configureImagePickerElement as
|
|
54
|
-
import Be from "./admins-components172.js";
|
|
35
|
+
import { filterEmptyValues as ce, getDefaultFilterValues as le, getDefaultFilters as ue, getDefaultSavedFilter as de, getFilterUrlParams as fe, getSavedFilters as pe, writeFilterParams as me } from "./admins-components87.js";
|
|
36
|
+
import he from "./admins-components90.js";
|
|
37
|
+
import ge from "./admins-components93.js";
|
|
38
|
+
import _e from "./admins-components96.js";
|
|
39
|
+
import { getDefaultSearch as ve } from "./admins-components100.js";
|
|
40
|
+
import { dataListDefaults as ye, getDefaultFetchData as be } from "./admins-components103.js";
|
|
41
|
+
import xe from "./admins-components105.js";
|
|
42
|
+
import { isIpInUrl as Se } from "./admins-components106.js";
|
|
43
|
+
import { getCurrentSite as Ce } from "./admins-components107.js";
|
|
44
|
+
import { vTooltip as we } from "./admins-components108.js";
|
|
45
|
+
import { createNativeFetch as Te } from "./admins-components109.js";
|
|
46
|
+
import { FetchDetails as Ee, FetchError as De, Methods as Oe, initRequest as ke } from "./admins-components110.js";
|
|
47
|
+
import { useArticleEditorService as Ae } from "./admins-components111.js";
|
|
48
|
+
import { useCurrentUser as je } from "./admins-components112.js";
|
|
49
|
+
import { BackendService as Me, useBackendService as Ne } from "./admins-components113.js";
|
|
50
|
+
import { aoeConfig as Pe, configureArticleOfferElement as Fe } from "./admins-components167.js";
|
|
51
|
+
import Ie from "./admins-components169.js";
|
|
52
|
+
import { apeConfig as Le, configureArticlePickerElement as Re } from "./admins-components170.js";
|
|
53
|
+
import { configureImagePickerElement as ze, ipeConfig as Be } from "./admins-components171.js";
|
|
55
54
|
import Ve from "./admins-components173.js";
|
|
56
|
-
import
|
|
57
|
-
import We from "./admins-components175.js";
|
|
58
|
-
import
|
|
59
|
-
import qe from "./admins-components177.js";
|
|
55
|
+
import He from "./admins-components174.js";
|
|
56
|
+
import { configureExternalArticleOfferElement as Ue, eaoeConfig as We } from "./admins-components175.js";
|
|
57
|
+
import Ge from "./admins-components176.js";
|
|
58
|
+
import { configureGalleryImageSelectorElement as Ke, gisConfig as qe } from "./admins-components177.js";
|
|
60
59
|
import Je from "./admins-components178.js";
|
|
61
60
|
import Ye from "./admins-components179.js";
|
|
62
|
-
import
|
|
63
|
-
import Qe from "./admins-components181.js";
|
|
64
|
-
import
|
|
65
|
-
import tt from "./admins-
|
|
66
|
-
|
|
61
|
+
import Xe from "./admins-components180.js";
|
|
62
|
+
import { configureInternalArticleOfferElement as Ze, iaoeConfig as Qe } from "./admins-components181.js";
|
|
63
|
+
import $e from "./admins-components182.js";
|
|
64
|
+
import { configurePartnerPickerElement as et, ppeconfig as tt } from "./admins-components183.js";
|
|
65
|
+
import nt from "./admins-components185.js";
|
|
66
|
+
export { Ie as ArticleOfferElement, Ve as ArticlePickerElement, Me as BackendService, u as Button, m as Calendar, v as Checkbox, E as ConfirmModal, D as CopyToClipboard, X as DataCards, ge as DataFilters, xe as DataList, N as DataListActions, Q as DataListOptions, oe as DataPaginator, Y as DataTable, h as DatePicker, y as DateRangePicker, He as DateTimePickerElement, S as DropdownMenu, x as DropdownSelect, k as ExternalArticleOffer, Ge as ExternalArticleOfferElement, Ee as FetchDetails, De as FetchError, _e as FilterTags, he as FiltersHistory, Je as GalleryImageSelectorElement, w as HeaderComponent, O as ImagePicker, Xe as ImagePickerDetailsElement, Ye as ImagePickerElement, A as InternalArticleOffer, $e as InternalArticleOfferElement, b as Loader, Oe as Methods, T as Modal, nt as PartnerPickerElement, C as Sidebar, _ as TextInput, M as ToastNotification, Pe as aoeConfig, Le as apeConfig, L as booleanToString, d as calendarConfigDefaults, e as castToDate, Fe as configureArticleOfferElement, Re as configureArticlePickerElement, Ue as configureExternalArticleOfferElement, Ke as configureGalleryImageSelectorElement, ze as configureImagePickerElement, Ze as configureInternalArticleOfferElement, et as configurePartnerPickerElement, Te as createNativeFetch, P as dataCardsSettingsDefaults, R as dataListConverters, ye as dataListDefaults, F as dataListSettingsDefaults, I as dataTableSettingsDefaults, f as datePickerConfigDefaults, p as dateRangePickerConfigDefaults, g as debounce, Z as deepMerge, We as eaoeConfig, t as earlierOf, n as endOfDay, z as enumMap, ce as filterEmptyValues, B as formatCurrency, r as formatDate, V as formatNumber, Ce as getCurrentSite, be as getDefaultFetchData, le as getDefaultFilterValues, ue as getDefaultFilters, ae as getDefaultPaginator, de as getDefaultSavedFilter, ve as getDefaultSearch, se as getDefaultSort, fe as getFilterUrlParams, $ as getFullStorageKey, pe as getSavedFilters, ee as getUrlParam, qe as gisConfig, Qe as iaoeConfig, H as identity, ke as initRequest, Be as ipeConfig, Se as isIpInUrl, te as joinUrl, i as laterOf, U as listToString, W as localToLocalString, a as localToUTCString, ne as navigateIframe, o as parseDate, tt as ppeconfig, re as removeUrlParam, ie as setUrlParam, G as shortUuid, s as startOfDay, c as startOfWeek, K as tagList, q as textEllipse, j as toast, Ae as useArticleEditorService, Ne as useBackendService, je as useCurrentUser, J as utcToLocalString, l as utcToString, we as vTooltip, me as writeFilterParams };
|
|
@@ -13,7 +13,7 @@ function g(e = "search", t = "exactMatch") {
|
|
|
13
13
|
exactMatch: a === "true" || a === "1" ? !0 : a === "false" || a === "0" ? !1 : void 0
|
|
14
14
|
});
|
|
15
15
|
}
|
|
16
|
-
var _ =
|
|
16
|
+
var _ = /*@__PURE__*/ u({
|
|
17
17
|
__name: "DataSearch",
|
|
18
18
|
props: {
|
|
19
19
|
showExactMatch: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admins-components100.js","names":[],"sources":["../src/components/data-table/DataSearch.vue"],"sourcesContent":["<script lang=\"ts\">\nexport interface DataSearchProps {\n showExactMatch?: boolean\n showSearch?: boolean\n placeholder?: string\n handleUrl?: boolean\n searchKey?: string\n exactMatchKey?: string\n}\n\nexport interface DefaultSearch {\n search?: string\n exactMatch?: boolean | undefined\n}\n\nexport function getDefaultSearch(\n searchKey = 'search',\n exactMatchKey = 'exactMatch',\n): DefaultSearch {\n const params = new URLSearchParams(\n typeof window === 'undefined' ? '' : window.location.search,\n )\n const search = params.get(searchKey) ?? ''\n const exactRaw = params.get(exactMatchKey)\n const exactMatch = exactRaw === 'true' || exactRaw === '1'\n ? true\n : exactRaw === 'false' || exactRaw === '0'\n ? false\n : undefined\n return filterEmptyValues({ search, exactMatch })\n}\n</script>\n\n<script setup lang=\"ts\">\nimport Checkbox from '@/components/Checkbox.vue'\nimport TextInput from '@/components/TextInput.vue'\nimport { writeUrlOrRemove } from '@/utils/url'\nimport { debounce } from '@/utils/debounce'\nimport { onMounted, ref } from 'vue'\nimport { filterEmptyValues } from '@/utils/dataFilters'\n\nconst props = withDefaults(\n defineProps<DataSearchProps>(),\n {\n showExactMatch: true,\n showSearch: true,\n placeholder: 'Keresés...',\n handleUrl: false,\n searchKey: 'search',\n exactMatchKey: 'exactMatch',\n },\n)\n\ntype SearchFilterPayload = { [k: string]: string | boolean }\n\n// Seed refs from URL synchronously at setup so the input shows the URL value\n// on first render. URL is the only persistent source for search.\nconst initial = getDefaultSearch(props.searchKey, props.exactMatchKey)\nconst exactMatch = ref<boolean | undefined>(initial.exactMatch)\nconst search = ref<string>(initial.search ?? '')\n\nconst emit = defineEmits<{\n 'search-change': [filters: SearchFilterPayload]\n}>()\n\nfunction emitChange() {\n const filters: SearchFilterPayload = {}\n if (props.showSearch) filters[props.searchKey] = search.value\n if (props.showExactMatch) filters[props.exactMatchKey] = exactMatch.value ?? false\n emit('search-change', filters)\n}\n\nfunction syncToUrl() {\n writeUrlOrRemove(props.searchKey, search.value, { handleUrl: props.handleUrl })\n writeUrlOrRemove(props.exactMatchKey, exactMatch.value ?? false, {\n handleUrl: props.handleUrl,\n default: false,\n })\n}\n\nconst debouncedSyncToUrl = debounce(syncToUrl, 300)\n\nfunction onCheckboxChange(value: boolean | undefined) {\n exactMatch.value = value\n emitChange()\n debouncedSyncToUrl()\n}\n\nfunction onSearchChange(value: string | number | null) {\n search.value = value == null ? '' : String(value).trim()\n emitChange()\n debouncedSyncToUrl()\n}\n\nonMounted(() => {\n if (!props.handleUrl) return\n // If we had URL values at setup, push them up to the parent now.\n if (search.value || (exactMatch.value ?? false)) emitChange()\n})\n</script>\n<template>\n <div class=\"data-search-wrapper\">\n <Checkbox\n v-if=\"showExactMatch\"\n :model-value=\"exactMatch\"\n class=\"gap-1\"\n @update:model-value=\"onCheckboxChange\"\n >\n <template #label>\n <span class=\"data-search-label\">Pontos<br />egyezés </span>\n </template>\n </Checkbox>\n <TextInput\n v-if=\"showSearch\"\n type=\"text\"\n clearable\n :model-value=\"search\"\n inputClass=\"data-search-input\"\n label-on-border=\"Keresés\"\n :placeholder=\"placeholder\"\n :autocomplete=\"false\"\n @update:model-value=\"onSearchChange\"\n />\n </div>\n</template>\n<style lang=\"scss\" src=\"@/styles/components/data-table/data-search.scss\"></style>\n"],"mappings":";;;;;;;;AAeA,SAAgB,EACd,IAAY,UACZ,IAAgB,cACD;CACf,IAAM,IAAS,IAAI,gBACjB,OAAO,SAAW,MAAc,KAAK,OAAO,SAAS,MACvD,GACM,IAAS,EAAO,IAAI,CAAS,KAAK,IAClC,IAAW,EAAO,IAAI,CAAa;CAMzC,OAAO,EAAkB;EAAE;EAAQ,YALhB,MAAa,UAAU,MAAa,MACnD,KACA,MAAa,WAAW,MAAa,MACrC,KACA,KAAA;CAC0C,CAAC;AACjD;;;;;;;;;;;;;;;;;;;;;;EAWA,IAAM,IAAQ,GAgBR,IAAU,EAAiB,EAAM,WAAW,EAAM,aAAa,GAC/D,IAAa,EAAyB,EAAQ,UAAU,GACxD,IAAS,EAAY,EAAQ,UAAU,EAAE,GAEzC,IAAO;EAIb,SAAS,IAAa;GACpB,IAAM,IAA+B,CAAC;GAGtC,AAFI,EAAM,eAAY,EAAQ,EAAM,aAAa,EAAO,QACpD,EAAM,mBAAgB,EAAQ,EAAM,iBAAiB,EAAW,SAAS,KAC7E,EAAK,iBAAiB,CAAO;EAC/B;EAEA,SAAS,IAAY;GAEnB,AADA,EAAiB,EAAM,WAAW,EAAO,OAAO,EAAE,WAAW,EAAM,UAAU,CAAC,GAC9E,EAAiB,EAAM,eAAe,EAAW,SAAS,IAAO;IAC/D,WAAW,EAAM;IACjB,SAAS;GACX,CAAC;EACH;EAEA,IAAM,IAAqB,EAAS,GAAW,GAAG;EAElD,SAAS,EAAiB,GAA4B;GAGpD,AAFA,EAAW,QAAQ,GACnB,EAAW,GACX,EAAmB;EACrB;EAEA,SAAS,EAAe,GAA+B;GAGrD,AAFA,EAAO,QAAQ,KAAS,OAAO,KAAK,OAAO,CAAK,
|
|
1
|
+
{"version":3,"file":"admins-components100.js","names":[],"sources":["../src/components/data-table/DataSearch.vue"],"sourcesContent":["<script lang=\"ts\">\nexport interface DataSearchProps {\n showExactMatch?: boolean\n showSearch?: boolean\n placeholder?: string\n handleUrl?: boolean\n searchKey?: string\n exactMatchKey?: string\n}\n\nexport interface DefaultSearch {\n search?: string\n exactMatch?: boolean | undefined\n}\n\nexport function getDefaultSearch(\n searchKey = 'search',\n exactMatchKey = 'exactMatch',\n): DefaultSearch {\n const params = new URLSearchParams(\n typeof window === 'undefined' ? '' : window.location.search,\n )\n const search = params.get(searchKey) ?? ''\n const exactRaw = params.get(exactMatchKey)\n const exactMatch = exactRaw === 'true' || exactRaw === '1'\n ? true\n : exactRaw === 'false' || exactRaw === '0'\n ? false\n : undefined\n return filterEmptyValues({ search, exactMatch })\n}\n</script>\n\n<script setup lang=\"ts\">\nimport Checkbox from '@/components/Checkbox.vue'\nimport TextInput from '@/components/TextInput.vue'\nimport { writeUrlOrRemove } from '@/utils/url'\nimport { debounce } from '@/utils/debounce'\nimport { onMounted, ref } from 'vue'\nimport { filterEmptyValues } from '@/utils/dataFilters'\n\nconst props = withDefaults(\n defineProps<DataSearchProps>(),\n {\n showExactMatch: true,\n showSearch: true,\n placeholder: 'Keresés...',\n handleUrl: false,\n searchKey: 'search',\n exactMatchKey: 'exactMatch',\n },\n)\n\ntype SearchFilterPayload = { [k: string]: string | boolean }\n\n// Seed refs from URL synchronously at setup so the input shows the URL value\n// on first render. URL is the only persistent source for search.\nconst initial = getDefaultSearch(props.searchKey, props.exactMatchKey)\nconst exactMatch = ref<boolean | undefined>(initial.exactMatch)\nconst search = ref<string>(initial.search ?? '')\n\nconst emit = defineEmits<{\n 'search-change': [filters: SearchFilterPayload]\n}>()\n\nfunction emitChange() {\n const filters: SearchFilterPayload = {}\n if (props.showSearch) filters[props.searchKey] = search.value\n if (props.showExactMatch) filters[props.exactMatchKey] = exactMatch.value ?? false\n emit('search-change', filters)\n}\n\nfunction syncToUrl() {\n writeUrlOrRemove(props.searchKey, search.value, { handleUrl: props.handleUrl })\n writeUrlOrRemove(props.exactMatchKey, exactMatch.value ?? false, {\n handleUrl: props.handleUrl,\n default: false,\n })\n}\n\nconst debouncedSyncToUrl = debounce(syncToUrl, 300)\n\nfunction onCheckboxChange(value: boolean | undefined) {\n exactMatch.value = value\n emitChange()\n debouncedSyncToUrl()\n}\n\nfunction onSearchChange(value: string | number | null) {\n search.value = value == null ? '' : String(value).trim()\n emitChange()\n debouncedSyncToUrl()\n}\n\nonMounted(() => {\n if (!props.handleUrl) return\n // If we had URL values at setup, push them up to the parent now.\n if (search.value || (exactMatch.value ?? false)) emitChange()\n})\n</script>\n<template>\n <div class=\"data-search-wrapper\">\n <Checkbox\n v-if=\"showExactMatch\"\n :model-value=\"exactMatch\"\n class=\"gap-1\"\n @update:model-value=\"onCheckboxChange\"\n >\n <template #label>\n <span class=\"data-search-label\">Pontos<br />egyezés </span>\n </template>\n </Checkbox>\n <TextInput\n v-if=\"showSearch\"\n type=\"text\"\n clearable\n :model-value=\"search\"\n inputClass=\"data-search-input\"\n label-on-border=\"Keresés\"\n :placeholder=\"placeholder\"\n :autocomplete=\"false\"\n @update:model-value=\"onSearchChange\"\n />\n </div>\n</template>\n<style lang=\"scss\" src=\"@/styles/components/data-table/data-search.scss\"></style>\n"],"mappings":";;;;;;;;AAeA,SAAgB,EACd,IAAY,UACZ,IAAgB,cACD;CACf,IAAM,IAAS,IAAI,gBACjB,OAAO,SAAW,MAAc,KAAK,OAAO,SAAS,MACvD,GACM,IAAS,EAAO,IAAI,CAAS,KAAK,IAClC,IAAW,EAAO,IAAI,CAAa;CAMzC,OAAO,EAAkB;EAAE;EAAQ,YALhB,MAAa,UAAU,MAAa,MACnD,KACA,MAAa,WAAW,MAAa,MACrC,KACA,KAAA;CAC0C,CAAC;AACjD;;;;;;;;;;;;;;;;;;;;;;EAWA,IAAM,IAAQ,GAgBR,IAAU,EAAiB,EAAM,WAAW,EAAM,aAAa,GAC/D,IAAa,EAAyB,EAAQ,UAAU,GACxD,IAAS,EAAY,EAAQ,UAAU,EAAE,GAEzC,IAAO;EAIb,SAAS,IAAa;GACpB,IAAM,IAA+B,CAAC;GAGtC,AAFI,EAAM,eAAY,EAAQ,EAAM,aAAa,EAAO,QACpD,EAAM,mBAAgB,EAAQ,EAAM,iBAAiB,EAAW,SAAS,KAC7E,EAAK,iBAAiB,CAAO;EAC/B;EAEA,SAAS,IAAY;GAEnB,AADA,EAAiB,EAAM,WAAW,EAAO,OAAO,EAAE,WAAW,EAAM,UAAU,CAAC,GAC9E,EAAiB,EAAM,eAAe,EAAW,SAAS,IAAO;IAC/D,WAAW,EAAM;IACjB,SAAS;GACX,CAAC;EACH;EAEA,IAAM,IAAqB,EAAS,GAAW,GAAG;EAElD,SAAS,EAAiB,GAA4B;GAGpD,AAFA,EAAW,QAAQ,GACnB,EAAW,GACX,EAAmB;EACrB;EAEA,SAAS,EAAe,GAA+B;GAGrD,AAFA,EAAO,QAAQ,KAAS,OAAO,KAAK,OAAO,CAAK,CAAC,CAAC,KAAK,GACvD,EAAW,GACX,EAAmB;EACrB;SAEA,QAAgB;GACT,EAAM,cAEP,EAAO,UAAU,EAAW,SAAS,QAAQ,EAAW;EAC9D,CAAC,cAGC,EAAA,GAAA,EAsBM,OAtBN,GAsBM,CApBI,EAAA,kBADR,EAAA,GAAA,EASW,GAAA;;GAPR,eAAa,EAAA;GACd,OAAM;GACL,uBAAoB;;GAEV,OAAK,QAC6C,CAAA,GAAA,AAAA,EAAA,OAAA,CAA3D,EAA2D,QAAA,EAArD,OAAM,oBAAmB,GAAA;IAAC,EAAA,QAAM;IAAA,EAAM,IAAA;IAAA,EAAA,UAAQ;;;EAIhD,GAAA,GAAA,CAAA,aAAA,CAAA,KAAA,EAAA,IAAA,EAAA,GAAA,EAAA,cADR,EAAA,GAAA,EAUE,GAAA;;GARA,MAAK;GACL,WAAA;GACC,eAAa,EAAA;GACd,YAAW;GACX,mBAAgB;GACf,aAAa,EAAA;GACb,cAAc;GACd,uBAAoB"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import './
|
|
2
|
-
import e from "./admins-components100.js";
|
|
1
|
+
import './styles/components/data-table/data-search.scss_vue_type_style_index_0_src_true_lang.css';
|
|
2
|
+
import e, { getDefaultSearch as t } from "./admins-components100.js";
|
|
3
3
|
/* empty css */
|
|
4
4
|
//#region src/components/data-table/DataSearch.vue
|
|
5
|
-
var
|
|
5
|
+
var n = e;
|
|
6
6
|
//#endregion
|
|
7
|
-
export {
|
|
7
|
+
export { n as default, t as getDefaultSearch };
|
|
@@ -6,15 +6,15 @@ import { getDefaultPaginator as i } from "./admins-components80.js";
|
|
|
6
6
|
import a from "./admins-components82.js";
|
|
7
7
|
import { getDefaultSort as o } from "./admins-components83.js";
|
|
8
8
|
import s from "./admins-components85.js";
|
|
9
|
-
import {
|
|
10
|
-
import
|
|
11
|
-
import
|
|
12
|
-
import
|
|
13
|
-
import { getDefaultSearch as
|
|
14
|
-
import
|
|
15
|
-
import { computed as
|
|
9
|
+
import { getDefaultFilterValues as c, getDefaultFilters as l } from "./admins-components87.js";
|
|
10
|
+
import u from "./admins-components93.js";
|
|
11
|
+
import d from "./admins-components96.js";
|
|
12
|
+
import f from "./admins-components99.js";
|
|
13
|
+
import { getDefaultSearch as p } from "./admins-components100.js";
|
|
14
|
+
import ee from "./admins-components102.js";
|
|
15
|
+
import { computed as m, createBlock as h, createCommentVNode as g, createElementBlock as _, createElementVNode as v, createSlots as y, createVNode as b, defineComponent as x, guardReactiveProps as S, mergeDefaults as C, mergeProps as w, normalizeClass as te, normalizeProps as T, onBeforeUnmount as ne, onMounted as re, openBlock as E, ref as D, renderList as O, renderSlot as k, useSlots as A, withCtx as j } from "vue";
|
|
16
16
|
//#region src/components/data-table/DataList.vue?vue&type=script&setup=true&lang.ts
|
|
17
|
-
var
|
|
17
|
+
var M = { class: "c-data-list__toolbar" }, N = {
|
|
18
18
|
key: 2,
|
|
19
19
|
class: "flex-center gap-1 flex-center-wrap-on-mobile"
|
|
20
20
|
}, P = { class: "c-data-list__toolbar__right" }, F = {
|
|
@@ -27,7 +27,7 @@ var ne = { class: "c-data-list__toolbar" }, N = {
|
|
|
27
27
|
fillHeight: !1
|
|
28
28
|
};
|
|
29
29
|
function I(e, t) {
|
|
30
|
-
let n = i(t), r = o(), a =
|
|
30
|
+
let n = i(t), r = o(), a = p(), s = c(e, t, !0);
|
|
31
31
|
return {
|
|
32
32
|
...n,
|
|
33
33
|
...r,
|
|
@@ -35,9 +35,9 @@ function I(e, t) {
|
|
|
35
35
|
...s
|
|
36
36
|
};
|
|
37
37
|
}
|
|
38
|
-
var L =
|
|
38
|
+
var L = /*@__PURE__*/ x({
|
|
39
39
|
__name: "DataList",
|
|
40
|
-
props:
|
|
40
|
+
props: /*@__PURE__*/ C({
|
|
41
41
|
config: {},
|
|
42
42
|
items: {},
|
|
43
43
|
settings: {},
|
|
@@ -65,91 +65,91 @@ var L = /* @__PURE__ */ y({
|
|
|
65
65
|
"sort-change",
|
|
66
66
|
"search-change"
|
|
67
67
|
],
|
|
68
|
-
setup(i, { expose:
|
|
69
|
-
let x =
|
|
70
|
-
function
|
|
71
|
-
let t =
|
|
72
|
-
return t && Object.hasOwn(t, "handleUrl") ? t.handleUrl :
|
|
68
|
+
setup(i, { expose: c, emit: p }) {
|
|
69
|
+
let x = D(null), C = A(), F = m(() => !!C.actions), I = i;
|
|
70
|
+
function L(e) {
|
|
71
|
+
let t = I[e];
|
|
72
|
+
return t && Object.hasOwn(t, "handleUrl") ? t.handleUrl : I.handleUrl;
|
|
73
73
|
}
|
|
74
|
-
let
|
|
75
|
-
...
|
|
76
|
-
handleUrl:
|
|
77
|
-
})),
|
|
78
|
-
...
|
|
79
|
-
handleUrl:
|
|
80
|
-
})),
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
}),
|
|
85
|
-
}),
|
|
86
|
-
let
|
|
87
|
-
let e =
|
|
88
|
-
return e === "table" || e === "cards" ? e :
|
|
89
|
-
}), Y =
|
|
90
|
-
if (!
|
|
91
|
-
let e =
|
|
74
|
+
let R = m(() => ({
|
|
75
|
+
...I.searchConfig,
|
|
76
|
+
handleUrl: L("searchConfig")
|
|
77
|
+
})), z = m(() => ({
|
|
78
|
+
...I.filterConfig,
|
|
79
|
+
handleUrl: L("filterConfig")
|
|
80
|
+
})), B = p, V = D(!1), H = D(!1), U = D(null), W = D(!1), G = D(null), K = D(!1), q = D(I.filterConfig?.items ? l(I.filterConfig.items, I.id, !1) : {}), J = null;
|
|
81
|
+
re(() => {
|
|
82
|
+
J = new ResizeObserver((e) => {
|
|
83
|
+
W.value = (e[0]?.contentRect.width ?? 0) < I.layoutBreakpoint;
|
|
84
|
+
}), G.value && J.observe(G.value);
|
|
85
|
+
}), ne(() => J?.disconnect());
|
|
86
|
+
let ie = m(() => {
|
|
87
|
+
let e = U.value?.layout;
|
|
88
|
+
return e === "table" || e === "cards" ? e : W.value ? "cards" : "table";
|
|
89
|
+
}), Y = m(() => {
|
|
90
|
+
if (!U.value) return I.config;
|
|
91
|
+
let e = U.value.columnOrder, t = I.config.columns.map((e) => ({
|
|
92
92
|
...e,
|
|
93
|
-
visible:
|
|
93
|
+
visible: U.value.columns[e.property] ?? e.visible !== !1
|
|
94
94
|
}));
|
|
95
95
|
return e?.length && t.sort((t, n) => {
|
|
96
96
|
let r = e.indexOf(t.property), i = e.indexOf(n.property);
|
|
97
97
|
return (r === -1 ? 999 : r) - (i === -1 ? 999 : i);
|
|
98
98
|
}), {
|
|
99
|
-
...
|
|
99
|
+
...I.config,
|
|
100
100
|
columns: t
|
|
101
101
|
};
|
|
102
102
|
});
|
|
103
103
|
function ae(e) {
|
|
104
|
-
|
|
104
|
+
U.value = e, B("settings-change", e);
|
|
105
105
|
}
|
|
106
|
-
|
|
107
|
-
openOptions: () =>
|
|
108
|
-
closeOptions: () =>
|
|
109
|
-
openFilters: () =>
|
|
110
|
-
closeFilters: () =>
|
|
106
|
+
c({
|
|
107
|
+
openOptions: () => V.value = !0,
|
|
108
|
+
closeOptions: () => V.value = !1,
|
|
109
|
+
openFilters: () => K.value = !0,
|
|
110
|
+
closeFilters: () => K.value = !1
|
|
111
111
|
});
|
|
112
112
|
async function oe(e) {
|
|
113
|
-
|
|
113
|
+
K.value = !0, setTimeout(() => {
|
|
114
114
|
x.value?.focusFilter(e);
|
|
115
115
|
}, 300);
|
|
116
116
|
}
|
|
117
117
|
function se(e) {
|
|
118
|
-
|
|
118
|
+
q.value = e.values, B("filter-change", e.transformed);
|
|
119
119
|
}
|
|
120
|
-
let X =
|
|
121
|
-
|
|
122
|
-
}, Z =
|
|
120
|
+
let X = m(() => Object.values(q.value).filter((e) => e != null && e !== "").length), ce = m(() => !!I.pagination && (I.items.length > 0 || !I.loading)), le = (e) => {
|
|
121
|
+
B("search-change", e);
|
|
122
|
+
}, Z = m(() => I.config.columns.filter((e) => e.sort).map((e) => ({
|
|
123
123
|
value: e.property,
|
|
124
124
|
label: e.label
|
|
125
|
-
}))), Q =
|
|
126
|
-
Q.value = e,
|
|
125
|
+
}))), Q = D(I.handleUrl ? o() : null), $ = (e) => {
|
|
126
|
+
Q.value = e, B("sort-change", e);
|
|
127
127
|
};
|
|
128
|
-
return (o, c) => (
|
|
128
|
+
return (o, c) => (E(), _("div", {
|
|
129
129
|
ref_key: "root",
|
|
130
|
-
ref:
|
|
131
|
-
class:
|
|
130
|
+
ref: G,
|
|
131
|
+
class: te(["ac-component c-data-list", { "c-data-list--fill-height": i.fillHeight }])
|
|
132
132
|
}, [
|
|
133
|
-
|
|
134
|
-
i.useSearch ? (
|
|
135
|
-
i.useFilters && i.filterConfig?.items && i.filterConfig.items.length > 0 ? (
|
|
133
|
+
v("div", M, [
|
|
134
|
+
i.useSearch ? (E(), h(ee, w({ key: 0 }, R.value, { onSearchChange: le }), null, 16)) : g("", !0),
|
|
135
|
+
i.useFilters && i.filterConfig?.items && i.filterConfig.items.length > 0 ? (E(), h(e, {
|
|
136
136
|
key: 1,
|
|
137
137
|
label: "Szűrők",
|
|
138
138
|
icon: "fa-solid fa-filter",
|
|
139
|
-
onClick: c[0] ||= (e) =>
|
|
139
|
+
onClick: c[0] ||= (e) => K.value = !0,
|
|
140
140
|
style: { "flex-shrink": "0" },
|
|
141
141
|
type: X.value > 0 ? "primary" : "normal",
|
|
142
142
|
indicator: X.value > 0 ? X.value : void 0
|
|
143
|
-
}, null, 8, ["type", "indicator"])) :
|
|
144
|
-
i.useFilters && i.filterConfig?.items && i.filterConfig.items.length > 0 ? (
|
|
145
|
-
filters:
|
|
143
|
+
}, null, 8, ["type", "indicator"])) : g("", !0),
|
|
144
|
+
i.useFilters && i.filterConfig?.items && i.filterConfig.items.length > 0 ? (E(), _("div", N, [b(d, {
|
|
145
|
+
filters: q.value,
|
|
146
146
|
items: i.filterConfig.items,
|
|
147
147
|
compact: "",
|
|
148
148
|
onRemove: c[1] ||= (e) => x.value?.clearFilter(e),
|
|
149
149
|
onOpenFilter: oe
|
|
150
|
-
}, null, 8, ["filters", "items"])])) :
|
|
151
|
-
|
|
152
|
-
Z.value.length > 0 ? (
|
|
150
|
+
}, null, 8, ["filters", "items"])])) : g("", !0),
|
|
151
|
+
v("div", P, [
|
|
152
|
+
Z.value.length > 0 ? (E(), h(s, {
|
|
153
153
|
key: 0,
|
|
154
154
|
modelValue: Q.value,
|
|
155
155
|
"onUpdate:modelValue": c[2] ||= (e) => Q.value = e,
|
|
@@ -160,51 +160,51 @@ var L = /* @__PURE__ */ y({
|
|
|
160
160
|
"modelValue",
|
|
161
161
|
"options",
|
|
162
162
|
"handle-url"
|
|
163
|
-
])) :
|
|
164
|
-
|
|
163
|
+
])) : g("", !0),
|
|
164
|
+
b(e, {
|
|
165
165
|
icon: "fa-solid fa-gear",
|
|
166
166
|
class: "lh-normal settings-btn",
|
|
167
167
|
ariaLabel: "Beállítások",
|
|
168
|
-
onClick: c[3] ||= (e) =>
|
|
168
|
+
onClick: c[3] ||= (e) => V.value = !0
|
|
169
169
|
}),
|
|
170
|
-
|
|
170
|
+
b(e, {
|
|
171
171
|
icon: "fa-solid fa-question",
|
|
172
172
|
class: "lh-normal",
|
|
173
|
-
onClick: c[4] ||= (e) =>
|
|
173
|
+
onClick: c[4] ||= (e) => H.value = !0,
|
|
174
174
|
ariaLabel: "Súgó"
|
|
175
175
|
})
|
|
176
176
|
])
|
|
177
177
|
]),
|
|
178
|
-
i.useFilters && i.filterConfig?.items && i.filterConfig.items.length > 0 ? (
|
|
178
|
+
i.useFilters && i.filterConfig?.items && i.filterConfig.items.length > 0 ? (E(), h(u, w({
|
|
179
179
|
key: 0,
|
|
180
180
|
ref_key: "dataFiltersRef",
|
|
181
181
|
ref: x
|
|
182
|
-
},
|
|
182
|
+
}, z.value, {
|
|
183
183
|
"storage-key": i.id,
|
|
184
|
-
open:
|
|
185
|
-
onClose: c[5] ||= (e) =>
|
|
184
|
+
open: K.value,
|
|
185
|
+
onClose: c[5] ||= (e) => K.value = !1,
|
|
186
186
|
onChange: se
|
|
187
|
-
}), null, 16, ["storage-key", "open"])) :
|
|
188
|
-
|
|
189
|
-
open:
|
|
190
|
-
onClose: c[6] ||= (e) =>
|
|
187
|
+
}), null, 16, ["storage-key", "open"])) : g("", !0),
|
|
188
|
+
b(f, {
|
|
189
|
+
open: H.value,
|
|
190
|
+
onClose: c[6] ||= (e) => H.value = !1
|
|
191
191
|
}, null, 8, ["open"]),
|
|
192
|
-
|
|
192
|
+
ie.value === "table" ? (E(), h(t, {
|
|
193
193
|
key: 1,
|
|
194
194
|
config: Y.value,
|
|
195
195
|
loading: i.loading,
|
|
196
196
|
items: i.items,
|
|
197
|
-
settings:
|
|
197
|
+
settings: U.value ?? void 0,
|
|
198
198
|
"initial-sort": Q.value,
|
|
199
|
-
onFilterChange: c[7] ||= (e) =>
|
|
200
|
-
onSelectionChange: c[8] ||= (e) =>
|
|
199
|
+
onFilterChange: c[7] ||= (e) => B("filter-change", e),
|
|
200
|
+
onSelectionChange: c[8] ||= (e) => B("selection-change", e),
|
|
201
201
|
onSortChange: $
|
|
202
|
-
},
|
|
202
|
+
}, y({ _: 2 }, [O(Y.value.columns, (e) => ({
|
|
203
203
|
name: `cell:${e.property}`,
|
|
204
|
-
fn:
|
|
205
|
-
})),
|
|
204
|
+
fn: j((t) => [k(o.$slots, `cell:${e.property}`, T(S(t)))])
|
|
205
|
+
})), F.value ? {
|
|
206
206
|
name: "actions",
|
|
207
|
-
fn:
|
|
207
|
+
fn: j((e) => [k(o.$slots, "actions", T(S(e)))]),
|
|
208
208
|
key: "0"
|
|
209
209
|
} : void 0]), 1032, [
|
|
210
210
|
"config",
|
|
@@ -212,19 +212,19 @@ var L = /* @__PURE__ */ y({
|
|
|
212
212
|
"items",
|
|
213
213
|
"settings",
|
|
214
214
|
"initial-sort"
|
|
215
|
-
])) : (
|
|
215
|
+
])) : (E(), h(n, {
|
|
216
216
|
key: 2,
|
|
217
217
|
config: Y.value,
|
|
218
218
|
loading: i.loading,
|
|
219
219
|
items: i.items,
|
|
220
|
-
settings:
|
|
221
|
-
onSelectionChange: c[9] ||= (e) =>
|
|
222
|
-
},
|
|
220
|
+
settings: U.value ?? void 0,
|
|
221
|
+
onSelectionChange: c[9] ||= (e) => B("selection-change", e)
|
|
222
|
+
}, y({ _: 2 }, [O(Y.value.columns, (e) => ({
|
|
223
223
|
name: `cell:${e.property}`,
|
|
224
|
-
fn:
|
|
225
|
-
})),
|
|
224
|
+
fn: j((t) => [k(o.$slots, `cell:${e.property}`, T(S(t)))])
|
|
225
|
+
})), F.value ? {
|
|
226
226
|
name: "actions",
|
|
227
|
-
fn:
|
|
227
|
+
fn: j((e) => [k(o.$slots, "actions", T(S(e)))]),
|
|
228
228
|
key: "0"
|
|
229
229
|
} : void 0]), 1032, [
|
|
230
230
|
"config",
|
|
@@ -232,24 +232,24 @@ var L = /* @__PURE__ */ y({
|
|
|
232
232
|
"items",
|
|
233
233
|
"settings"
|
|
234
234
|
])),
|
|
235
|
-
i.pagination && ce.value ? (
|
|
235
|
+
i.pagination && ce.value ? (E(), h(a, {
|
|
236
236
|
key: 3,
|
|
237
237
|
settings: i.pagination,
|
|
238
238
|
"storage-key": i.id,
|
|
239
239
|
"handle-url": i.handleUrl,
|
|
240
|
-
"onUpdate:pagination": c[10] ||= (e) =>
|
|
240
|
+
"onUpdate:pagination": c[10] ||= (e) => B("pagination-change", e)
|
|
241
241
|
}, null, 8, [
|
|
242
242
|
"settings",
|
|
243
243
|
"storage-key",
|
|
244
244
|
"handle-url"
|
|
245
|
-
])) :
|
|
246
|
-
|
|
247
|
-
open:
|
|
245
|
+
])) : g("", !0),
|
|
246
|
+
b(r, {
|
|
247
|
+
open: V.value,
|
|
248
248
|
columns: i.config.columns,
|
|
249
249
|
settings: i.settings ?? {},
|
|
250
250
|
"storage-key": i.id,
|
|
251
251
|
orderable: i.orderable,
|
|
252
|
-
onClose: c[11] ||= (e) =>
|
|
252
|
+
onClose: c[11] ||= (e) => V.value = !1,
|
|
253
253
|
onChange: ae
|
|
254
254
|
}, null, 8, [
|
|
255
255
|
"open",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admins-components103.js","names":[],"sources":["../src/components/data-table/DataList.vue"],"sourcesContent":["<script lang=\"ts\">\nexport type { PaginatorSettings } from '@/types/data-list'\nexport type { DataSearchProps } from './DataSearch.vue'\nexport type { DataFiltersProps } from './DataFilters.vue'\n\nexport interface DataListProps {\n config: DataListConfig\n items: Record<string, unknown>[]\n settings?: Partial<DataListSettings>\n id: string\n layoutBreakpoint?: number\n orderable?: boolean\n pagination?: PaginatorSettings\n loading?: boolean\n handleUrl?: boolean\n useSearch?: boolean\n useFilters?: boolean\n searchConfig?: DataSearchProps\n filterConfig?: DataFiltersProps\n fillHeight?: boolean\n}\n\nexport const dataListDefaults = {\n layoutBreakpoint: 768,\n orderable: true,\n loading: false,\n useSearch: true,\n useFilters: true,\n handleUrl: false,\n fillHeight: false,\n}\n\nexport function getDefaultFetchData(filters: FilterItem[], storageKey: string) {\n const defaultPaginator = getDefaultPaginator(storageKey)\n const defaultSort = getDefaultSort()\n const defaultSearch = getDefaultSearch()\n const defaultFilters = getDefaultFilters(filters, storageKey, true)\n\n return {\n ...defaultPaginator,\n ...defaultSort,\n ...defaultSearch,\n ...defaultFilters,\n }\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { ref, computed, onMounted, onBeforeUnmount, useSlots } from 'vue'\nimport DataTable from '@/components/data-table/DataTable.vue'\nimport DataCards from '@/components/data-table/DataCards.vue'\nimport DataListOptions from '@/components/data-table/DataListOptions.vue'\nimport DataPaginator, { getDefaultPaginator } from '@/components/data-table/DataPaginator.vue'\nimport Button from '@/components/Button.vue'\nimport DataSort, { getDefaultSort, type DataSortOption } from '@/components/data-table/DataSort.vue'\nimport type {\n DataListConfig,\n DataListSettings,\n PageSettings,\n PaginatorSettings,\n} from '@/types/data-list'\nimport type { FilterValue } from '@/types/data-list'\nimport DataFilters, {\n type FilterResponse,\n type DataFiltersProps,\n type FilterItem,\n} from '@/components/data-table/DataFilters.vue'\nimport FilterTags from '@/components/data-table/FilterTags.vue'\nimport DataListGuide from '@/components/data-table/DataListGuide.vue'\nimport DataSearch, { getDefaultSearch, type DataSearchProps } from './DataSearch.vue'\nimport { getDefaultFilters } from '@/utils/dataFilters.ts'\n\nconst dataFiltersRef = ref<InstanceType<typeof DataFilters> | null>(null)\nconst slots = useSlots()\nconst hasActionsSlot = computed(() => !!slots.actions)\n\nconst props = withDefaults(defineProps<DataListProps>(), {\n ...dataListDefaults,\n searchConfig: undefined,\n filterConfig: undefined,\n})\n\nfunction resolvedHandleUrl(side: 'searchConfig' | 'filterConfig'): boolean | undefined {\n const sideConfig = props[side]\n if (sideConfig && Object.hasOwn(sideConfig as object, 'handleUrl')) {\n return (sideConfig as { handleUrl?: boolean }).handleUrl\n }\n return props.handleUrl\n}\n\nconst mergedSearchConfig = computed<DataSearchProps>(() => ({\n ...props.searchConfig,\n handleUrl: resolvedHandleUrl('searchConfig'),\n}))\n\nconst mergedFilterConfig = computed<DataFiltersProps>(() => ({\n ...(props.filterConfig as DataFiltersProps),\n handleUrl: resolvedHandleUrl('filterConfig'),\n}))\n\nconst emit = defineEmits<{\n 'filter-change': [filters: Record<string, FilterValue>]\n 'selection-change': [selected: unknown[]]\n 'settings-change': [settings: DataListSettings]\n 'pagination-change': [pagination: PageSettings]\n 'sort-change': [sort: { key: string; direction: 'asc' | 'desc' } | null]\n 'search-change': [filters: Record<string, string | boolean>]\n}>()\n\nconst showOptions = ref(false)\nconst showGuide = ref(false)\nconst resolvedSettings = ref<DataListSettings | null>(null)\nconst isMobile = ref(false)\nconst root = ref<HTMLElement | null>(null)\nconst showFilters = ref(false)\n\nconst activeFilters = ref<Record<string, unknown>>(\n props.filterConfig?.items ? getDefaultFilters(props.filterConfig.items, props.id, false) : {},\n)\nlet resizeObserver: ResizeObserver | null = null\n\nonMounted(() => {\n resizeObserver = new ResizeObserver((entries) => {\n isMobile.value = (entries[0]?.contentRect.width ?? 0) < props.layoutBreakpoint\n })\n if (root.value) resizeObserver.observe(root.value)\n})\n\nonBeforeUnmount(() => resizeObserver?.disconnect())\n\nconst effectiveLayout = computed<'table' | 'cards'>(() => {\n const layout = resolvedSettings.value?.layout\n if (layout === 'table' || layout === 'cards') return layout\n return isMobile.value ? 'cards' : 'table'\n})\n\nconst internalConfig = computed<DataListConfig>(() => {\n if (!resolvedSettings.value) return props.config\n const order = resolvedSettings.value.columnOrder\n const mapped = props.config.columns.map((c) => ({\n ...c,\n visible: resolvedSettings.value!.columns[c.property] ?? c.visible !== false,\n }))\n if (order?.length) {\n mapped.sort((a, b) => {\n const ai = order.indexOf(a.property)\n const bi = order.indexOf(b.property)\n return (ai === -1 ? 999 : ai) - (bi === -1 ? 999 : bi)\n })\n }\n return { ...props.config, columns: mapped }\n})\n\nfunction onSettingsChange(s: DataListSettings) {\n resolvedSettings.value = s\n emit('settings-change', s)\n}\n\ndefineExpose({\n openOptions: () => (showOptions.value = true),\n closeOptions: () => (showOptions.value = false),\n openFilters: () => (showFilters.value = true),\n closeFilters: () => (showFilters.value = false),\n})\n\nasync function openFilter(key: string) {\n showFilters.value = true\n setTimeout(() => {\n dataFiltersRef.value?.focusFilter(key)\n }, 300)\n}\n\nfunction onFilterChange(response: FilterResponse) {\n activeFilters.value = response.values\n emit('filter-change', response.transformed)\n}\n\nconst activeFiltersCount = computed(\n () => Object.values(activeFilters.value).filter((v) => v != null && v !== '').length,\n)\n\nconst showPaginator = computed(\n () => !!props.pagination && (props.items.length > 0 || !props.loading),\n)\n\nconst searchChange = (value: Record<string, string | boolean>) => {\n emit('search-change', value)\n}\n\nconst sortableColumns = computed<DataSortOption[]>(() =>\n props.config.columns.filter((c) => c.sort).map((c) => ({ value: c.property, label: c.label })),\n)\n\nconst currentSort = ref<{ key: string; direction: 'asc' | 'desc' } | null>(\n props.handleUrl ? getDefaultSort() : null,\n)\n\nconst onSortChange = (sort: { key: string; direction: 'asc' | 'desc' } | null) => {\n currentSort.value = sort\n // DataSort already writes the URL when handleUrl: true; we only emit.\n emit('sort-change', sort)\n}\n</script>\n\n<template>\n <div\n ref=\"root\"\n class=\"ac-component c-data-list\"\n :class=\"{ 'c-data-list--fill-height': fillHeight }\"\n >\n <div class=\"c-data-list__toolbar\">\n <DataSearch v-if=\"useSearch\" v-bind=\"mergedSearchConfig\" @search-change=\"searchChange\" />\n <Button\n v-if=\"useFilters && filterConfig?.items && filterConfig.items.length > 0\"\n label=\"Szűrők\"\n icon=\"fa-solid fa-filter\"\n @click=\"showFilters = true\"\n style=\"flex-shrink: 0\"\n :type=\"activeFiltersCount > 0 ? 'primary' : 'normal'\"\n :indicator=\"activeFiltersCount > 0 ? activeFiltersCount : undefined\"\n />\n <div\n class=\"flex-center gap-1 flex-center-wrap-on-mobile\"\n v-if=\"useFilters && filterConfig?.items && filterConfig.items.length > 0\"\n >\n <FilterTags\n :filters=\"activeFilters\"\n :items=\"filterConfig.items\"\n compact\n @remove=\"(key: string) => dataFiltersRef?.clearFilter(key)\"\n @openFilter=\"openFilter\"\n />\n </div>\n <div class=\"c-data-list__toolbar__right\">\n <DataSort\n v-if=\"sortableColumns.length > 0\"\n v-model=\"currentSort\"\n :options=\"sortableColumns\"\n :handle-url=\"handleUrl\"\n @sort-change=\"onSortChange\"\n />\n\n <Button\n icon=\"fa-solid fa-gear\"\n class=\"lh-normal settings-btn\"\n ariaLabel=\"Beállítások\"\n @click=\"showOptions = true\"\n />\n <Button\n icon=\"fa-solid fa-question\"\n class=\"lh-normal\"\n @click=\"showGuide = true\"\n ariaLabel=\"Súgó\"\n />\n </div>\n </div>\n <DataFilters\n ref=\"dataFiltersRef\"\n v-if=\"useFilters && filterConfig?.items && filterConfig.items.length > 0\"\n v-bind=\"mergedFilterConfig\"\n :storage-key=\"id\"\n :open=\"showFilters\"\n @close=\"showFilters = false\"\n @change=\"onFilterChange\"\n />\n <DataListGuide :open=\"showGuide\" @close=\"showGuide = false\" />\n <DataTable\n v-if=\"effectiveLayout === 'table'\"\n :config=\"internalConfig\"\n :loading=\"loading\"\n :items=\"items\"\n :settings=\"resolvedSettings ?? undefined\"\n :initial-sort=\"currentSort\"\n @filter-change=\"emit('filter-change', $event)\"\n @selection-change=\"emit('selection-change', $event)\"\n @sort-change=\"onSortChange\"\n >\n <template\n v-for=\"col in internalConfig.columns\"\n :key=\"col.property\"\n #[`cell:${col.property}`]=\"slotProps\"\n >\n <slot :name=\"`cell:${col.property}`\" v-bind=\"slotProps\" />\n </template>\n <template v-if=\"hasActionsSlot\" #actions=\"slotProps\">\n <slot name=\"actions\" v-bind=\"slotProps\" />\n </template>\n </DataTable>\n\n <DataCards\n v-else\n :config=\"internalConfig\"\n :loading=\"loading\"\n :items=\"items\"\n :settings=\"resolvedSettings ?? undefined\"\n @selection-change=\"emit('selection-change', $event)\"\n >\n <template\n v-for=\"col in internalConfig.columns\"\n :key=\"col.property\"\n #[`cell:${col.property}`]=\"slotProps\"\n >\n <slot :name=\"`cell:${col.property}`\" v-bind=\"slotProps\" />\n </template>\n <template v-if=\"hasActionsSlot\" #actions=\"slotProps\">\n <slot name=\"actions\" v-bind=\"slotProps\" />\n </template>\n </DataCards>\n\n <DataPaginator\n v-if=\"pagination && showPaginator\"\n :settings=\"pagination\"\n :storage-key=\"id\"\n :handle-url=\"handleUrl\"\n @update:pagination=\"emit('pagination-change', $event)\"\n />\n\n <DataListOptions\n :open=\"showOptions\"\n :columns=\"config.columns\"\n :settings=\"settings ?? {}\"\n :storage-key=\"id\"\n :orderable=\"orderable\"\n @close=\"showOptions = false\"\n @change=\"onSettingsChange\"\n />\n </div>\n</template>\n\n<style lang=\"scss\" src=\"@/styles/components/data-table/data-list.scss\"></style>\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"admins-components103.js","names":[],"sources":["../src/components/data-table/DataList.vue"],"sourcesContent":["<script lang=\"ts\">\nexport type { PaginatorSettings } from '@/types/data-list'\nexport type { DataSearchProps } from './DataSearch.vue'\nexport type { DataFiltersProps } from './DataFilters.vue'\n\nexport interface DataListProps {\n config: DataListConfig\n items: Record<string, unknown>[]\n settings?: Partial<DataListSettings>\n id: string\n layoutBreakpoint?: number\n orderable?: boolean\n pagination?: PaginatorSettings\n loading?: boolean\n handleUrl?: boolean\n useSearch?: boolean\n useFilters?: boolean\n searchConfig?: DataSearchProps\n filterConfig?: DataFiltersProps\n fillHeight?: boolean\n}\n\nexport const dataListDefaults = {\n layoutBreakpoint: 768,\n orderable: true,\n loading: false,\n useSearch: true,\n useFilters: true,\n handleUrl: false,\n fillHeight: false,\n}\n\nexport function getDefaultFetchData(filters: FilterItem[], storageKey: string) {\n const defaultPaginator = getDefaultPaginator(storageKey)\n const defaultSort = getDefaultSort()\n const defaultSearch = getDefaultSearch()\n const defaultFilters = getDefaultFilterValues(filters, storageKey, true)\n\n return {\n ...defaultPaginator,\n ...defaultSort,\n ...defaultSearch,\n ...defaultFilters,\n }\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { ref, computed, onMounted, onBeforeUnmount, useSlots } from 'vue'\nimport DataTable from '@/components/data-table/DataTable.vue'\nimport DataCards from '@/components/data-table/DataCards.vue'\nimport DataListOptions from '@/components/data-table/DataListOptions.vue'\nimport DataPaginator, { getDefaultPaginator } from '@/components/data-table/DataPaginator.vue'\nimport Button from '@/components/Button.vue'\nimport DataSort, { getDefaultSort, type DataSortOption } from '@/components/data-table/DataSort.vue'\nimport type {\n DataListConfig,\n DataListSettings,\n PageSettings,\n PaginatorSettings,\n} from '@/types/data-list'\nimport type { FilterValue } from '@/types/data-list'\nimport DataFilters, {\n type FilterResponse,\n type DataFiltersProps,\n type FilterItem,\n} from '@/components/data-table/DataFilters.vue'\nimport FilterTags from '@/components/data-table/FilterTags.vue'\nimport DataListGuide from '@/components/data-table/DataListGuide.vue'\nimport DataSearch, { getDefaultSearch, type DataSearchProps } from './DataSearch.vue'\nimport { getDefaultFilters, getDefaultFilterValues } from '@/utils/dataFilters.ts'\n\nconst dataFiltersRef = ref<InstanceType<typeof DataFilters> | null>(null)\nconst slots = useSlots()\nconst hasActionsSlot = computed(() => !!slots.actions)\n\nconst props = withDefaults(defineProps<DataListProps>(), {\n ...dataListDefaults,\n searchConfig: undefined,\n filterConfig: undefined,\n})\n\nfunction resolvedHandleUrl(side: 'searchConfig' | 'filterConfig'): boolean | undefined {\n const sideConfig = props[side]\n if (sideConfig && Object.hasOwn(sideConfig as object, 'handleUrl')) {\n return (sideConfig as { handleUrl?: boolean }).handleUrl\n }\n return props.handleUrl\n}\n\nconst mergedSearchConfig = computed<DataSearchProps>(() => ({\n ...props.searchConfig,\n handleUrl: resolvedHandleUrl('searchConfig'),\n}))\n\nconst mergedFilterConfig = computed<DataFiltersProps>(() => ({\n ...(props.filterConfig as DataFiltersProps),\n handleUrl: resolvedHandleUrl('filterConfig'),\n}))\n\nconst emit = defineEmits<{\n 'filter-change': [filters: Record<string, FilterValue>]\n 'selection-change': [selected: unknown[]]\n 'settings-change': [settings: DataListSettings]\n 'pagination-change': [pagination: PageSettings]\n 'sort-change': [sort: { key: string; direction: 'asc' | 'desc' } | null]\n 'search-change': [filters: Record<string, string | boolean>]\n}>()\n\nconst showOptions = ref(false)\nconst showGuide = ref(false)\nconst resolvedSettings = ref<DataListSettings | null>(null)\nconst isMobile = ref(false)\nconst root = ref<HTMLElement | null>(null)\nconst showFilters = ref(false)\n\nconst activeFilters = ref<Record<string, unknown>>(\n props.filterConfig?.items ? getDefaultFilters(props.filterConfig.items, props.id, false) : {},\n)\nlet resizeObserver: ResizeObserver | null = null\n\nonMounted(() => {\n resizeObserver = new ResizeObserver((entries) => {\n isMobile.value = (entries[0]?.contentRect.width ?? 0) < props.layoutBreakpoint\n })\n if (root.value) resizeObserver.observe(root.value)\n})\n\nonBeforeUnmount(() => resizeObserver?.disconnect())\n\nconst effectiveLayout = computed<'table' | 'cards'>(() => {\n const layout = resolvedSettings.value?.layout\n if (layout === 'table' || layout === 'cards') return layout\n return isMobile.value ? 'cards' : 'table'\n})\n\nconst internalConfig = computed<DataListConfig>(() => {\n if (!resolvedSettings.value) return props.config\n const order = resolvedSettings.value.columnOrder\n const mapped = props.config.columns.map((c) => ({\n ...c,\n visible: resolvedSettings.value!.columns[c.property] ?? c.visible !== false,\n }))\n if (order?.length) {\n mapped.sort((a, b) => {\n const ai = order.indexOf(a.property)\n const bi = order.indexOf(b.property)\n return (ai === -1 ? 999 : ai) - (bi === -1 ? 999 : bi)\n })\n }\n return { ...props.config, columns: mapped }\n})\n\nfunction onSettingsChange(s: DataListSettings) {\n resolvedSettings.value = s\n emit('settings-change', s)\n}\n\ndefineExpose({\n openOptions: () => (showOptions.value = true),\n closeOptions: () => (showOptions.value = false),\n openFilters: () => (showFilters.value = true),\n closeFilters: () => (showFilters.value = false),\n})\n\nasync function openFilter(key: string) {\n showFilters.value = true\n setTimeout(() => {\n dataFiltersRef.value?.focusFilter(key)\n }, 300)\n}\n\nfunction onFilterChange(response: FilterResponse) {\n activeFilters.value = response.values\n emit('filter-change', response.transformed)\n}\n\nconst activeFiltersCount = computed(\n () => Object.values(activeFilters.value).filter((v) => v != null && v !== '').length,\n)\n\nconst showPaginator = computed(\n () => !!props.pagination && (props.items.length > 0 || !props.loading),\n)\n\nconst searchChange = (value: Record<string, string | boolean>) => {\n emit('search-change', value)\n}\n\nconst sortableColumns = computed<DataSortOption[]>(() =>\n props.config.columns.filter((c) => c.sort).map((c) => ({ value: c.property, label: c.label })),\n)\n\nconst currentSort = ref<{ key: string; direction: 'asc' | 'desc' } | null>(\n props.handleUrl ? getDefaultSort() : null,\n)\n\nconst onSortChange = (sort: { key: string; direction: 'asc' | 'desc' } | null) => {\n currentSort.value = sort\n // DataSort already writes the URL when handleUrl: true; we only emit.\n emit('sort-change', sort)\n}\n</script>\n\n<template>\n <div\n ref=\"root\"\n class=\"ac-component c-data-list\"\n :class=\"{ 'c-data-list--fill-height': fillHeight }\"\n >\n <div class=\"c-data-list__toolbar\">\n <DataSearch v-if=\"useSearch\" v-bind=\"mergedSearchConfig\" @search-change=\"searchChange\" />\n <Button\n v-if=\"useFilters && filterConfig?.items && filterConfig.items.length > 0\"\n label=\"Szűrők\"\n icon=\"fa-solid fa-filter\"\n @click=\"showFilters = true\"\n style=\"flex-shrink: 0\"\n :type=\"activeFiltersCount > 0 ? 'primary' : 'normal'\"\n :indicator=\"activeFiltersCount > 0 ? activeFiltersCount : undefined\"\n />\n <div\n class=\"flex-center gap-1 flex-center-wrap-on-mobile\"\n v-if=\"useFilters && filterConfig?.items && filterConfig.items.length > 0\"\n >\n <FilterTags\n :filters=\"activeFilters\"\n :items=\"filterConfig.items\"\n compact\n @remove=\"(key: string) => dataFiltersRef?.clearFilter(key)\"\n @openFilter=\"openFilter\"\n />\n </div>\n <div class=\"c-data-list__toolbar__right\">\n <DataSort\n v-if=\"sortableColumns.length > 0\"\n v-model=\"currentSort\"\n :options=\"sortableColumns\"\n :handle-url=\"handleUrl\"\n @sort-change=\"onSortChange\"\n />\n\n <Button\n icon=\"fa-solid fa-gear\"\n class=\"lh-normal settings-btn\"\n ariaLabel=\"Beállítások\"\n @click=\"showOptions = true\"\n />\n <Button\n icon=\"fa-solid fa-question\"\n class=\"lh-normal\"\n @click=\"showGuide = true\"\n ariaLabel=\"Súgó\"\n />\n </div>\n </div>\n <DataFilters\n ref=\"dataFiltersRef\"\n v-if=\"useFilters && filterConfig?.items && filterConfig.items.length > 0\"\n v-bind=\"mergedFilterConfig\"\n :storage-key=\"id\"\n :open=\"showFilters\"\n @close=\"showFilters = false\"\n @change=\"onFilterChange\"\n />\n <DataListGuide :open=\"showGuide\" @close=\"showGuide = false\" />\n <DataTable\n v-if=\"effectiveLayout === 'table'\"\n :config=\"internalConfig\"\n :loading=\"loading\"\n :items=\"items\"\n :settings=\"resolvedSettings ?? undefined\"\n :initial-sort=\"currentSort\"\n @filter-change=\"emit('filter-change', $event)\"\n @selection-change=\"emit('selection-change', $event)\"\n @sort-change=\"onSortChange\"\n >\n <template\n v-for=\"col in internalConfig.columns\"\n :key=\"col.property\"\n #[`cell:${col.property}`]=\"slotProps\"\n >\n <slot :name=\"`cell:${col.property}`\" v-bind=\"slotProps\" />\n </template>\n <template v-if=\"hasActionsSlot\" #actions=\"slotProps\">\n <slot name=\"actions\" v-bind=\"slotProps\" />\n </template>\n </DataTable>\n\n <DataCards\n v-else\n :config=\"internalConfig\"\n :loading=\"loading\"\n :items=\"items\"\n :settings=\"resolvedSettings ?? undefined\"\n @selection-change=\"emit('selection-change', $event)\"\n >\n <template\n v-for=\"col in internalConfig.columns\"\n :key=\"col.property\"\n #[`cell:${col.property}`]=\"slotProps\"\n >\n <slot :name=\"`cell:${col.property}`\" v-bind=\"slotProps\" />\n </template>\n <template v-if=\"hasActionsSlot\" #actions=\"slotProps\">\n <slot name=\"actions\" v-bind=\"slotProps\" />\n </template>\n </DataCards>\n\n <DataPaginator\n v-if=\"pagination && showPaginator\"\n :settings=\"pagination\"\n :storage-key=\"id\"\n :handle-url=\"handleUrl\"\n @update:pagination=\"emit('pagination-change', $event)\"\n />\n\n <DataListOptions\n :open=\"showOptions\"\n :columns=\"config.columns\"\n :settings=\"settings ?? {}\"\n :storage-key=\"id\"\n :orderable=\"orderable\"\n @close=\"showOptions = false\"\n @change=\"onSettingsChange\"\n />\n </div>\n</template>\n\n<style lang=\"scss\" src=\"@/styles/components/data-table/data-list.scss\"></style>\n"],"mappings":";;;;;;;;;;;;;;;;;;;iDAsBa,IAAmB;CAC9B,kBAAkB;CAClB,WAAW;CACX,SAAS;CACT,WAAW;CACX,YAAY;CACZ,WAAW;CACX,YAAY;AACd;AAEA,SAAgB,EAAoB,GAAuB,GAAoB;CAC7E,IAAM,IAAmB,EAAoB,CAAU,GACjD,IAAc,EAAe,GAC7B,IAAgB,EAAiB,GACjC,IAAiB,EAAuB,GAAS,GAAY,EAAI;CAEvE,OAAO;EACL,GAAG;EACH,GAAG;EACH,GAAG;EACH,GAAG;CACL;AACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4BA,IAAM,IAAiB,EAA6C,IAAI,GAClE,IAAQ,EAAS,GACjB,IAAiB,QAAe,CAAC,CAAC,EAAM,OAAO,GAE/C,IAAQ;EAMd,SAAS,EAAkB,GAA4D;GACrF,IAAM,IAAa,EAAM;GAIzB,OAHI,KAAc,OAAO,OAAO,GAAsB,WAAW,IACvD,EAAuC,YAE1C,EAAM;EACf;EAEA,IAAM,IAAqB,SAAiC;GAC1D,GAAG,EAAM;GACT,WAAW,EAAkB,cAAc;EAC7C,EAAE,GAEI,IAAqB,SAAkC;GAC3D,GAAI,EAAM;GACV,WAAW,EAAkB,cAAc;EAC7C,EAAE,GAEI,IAAO,GASP,IAAc,EAAI,EAAK,GACvB,IAAY,EAAI,EAAK,GACrB,IAAmB,EAA6B,IAAI,GACpD,IAAW,EAAI,EAAK,GACpB,IAAO,EAAwB,IAAI,GACnC,IAAc,EAAI,EAAK,GAEvB,IAAgB,EACpB,EAAM,cAAc,QAAQ,EAAkB,EAAM,aAAa,OAAO,EAAM,IAAI,EAAK,IAAI,CAAC,CAC9F,GACI,IAAwC;EAS5C,AAPA,SAAgB;GAId,AAHA,IAAiB,IAAI,gBAAgB,MAAY;IAC/C,EAAS,SAAS,EAAQ,EAAE,EAAE,YAAY,SAAS,KAAK,EAAM;GAChE,CAAC,GACG,EAAK,SAAO,EAAe,QAAQ,EAAK,KAAK;EACnD,CAAC,GAED,SAAsB,GAAgB,WAAW,CAAC;EAElD,IAAM,KAAkB,QAAkC;GACxD,IAAM,IAAS,EAAiB,OAAO;GAEvC,OADI,MAAW,WAAW,MAAW,UAAgB,IAC9C,EAAS,QAAQ,UAAU;EACpC,CAAC,GAEK,IAAiB,QAA+B;GACpD,IAAI,CAAC,EAAiB,OAAO,OAAO,EAAM;GAC1C,IAAM,IAAQ,EAAiB,MAAM,aAC/B,IAAS,EAAM,OAAO,QAAQ,KAAK,OAAO;IAC9C,GAAG;IACH,SAAS,EAAiB,MAAO,QAAQ,EAAE,aAAa,EAAE,YAAY;GACxE,EAAE;GAQF,OAPI,GAAO,UACT,EAAO,MAAM,GAAG,MAAM;IACpB,IAAM,IAAK,EAAM,QAAQ,EAAE,QAAQ,GAC7B,IAAK,EAAM,QAAQ,EAAE,QAAQ;IACnC,QAAQ,MAAO,KAAK,MAAM,MAAO,MAAO,KAAK,MAAM;GACrD,CAAC,GAEI;IAAE,GAAG,EAAM;IAAQ,SAAS;GAAO;EAC5C,CAAC;EAED,SAAS,GAAiB,GAAqB;GAE7C,AADA,EAAiB,QAAQ,GACzB,EAAK,mBAAmB,CAAC;EAC3B;EAEA,EAAa;GACX,mBAAoB,EAAY,QAAQ;GACxC,oBAAqB,EAAY,QAAQ;GACzC,mBAAoB,EAAY,QAAQ;GACxC,oBAAqB,EAAY,QAAQ;EAC3C,CAAC;EAED,eAAe,GAAW,GAAa;GAErC,AADA,EAAY,QAAQ,IACpB,iBAAiB;IACf,EAAe,OAAO,YAAY,CAAG;GACvC,GAAG,GAAG;EACR;EAEA,SAAS,GAAe,GAA0B;GAEhD,AADA,EAAc,QAAQ,EAAS,QAC/B,EAAK,iBAAiB,EAAS,WAAW;EAC5C;EAEA,IAAM,IAAqB,QACnB,OAAO,OAAO,EAAc,KAAK,CAAC,CAAC,QAAQ,MAAM,KAAK,QAAQ,MAAM,EAAE,CAAC,CAAC,MAChF,GAEM,KAAgB,QACd,CAAC,CAAC,EAAM,eAAe,EAAM,MAAM,SAAS,KAAK,CAAC,EAAM,QAChE,GAEM,MAAgB,MAA4C;GAChE,EAAK,iBAAiB,CAAK;EAC7B,GAEM,IAAkB,QACtB,EAAM,OAAO,QAAQ,QAAQ,MAAM,EAAE,IAAI,CAAC,CAAC,KAAK,OAAO;GAAE,OAAO,EAAE;GAAU,OAAO,EAAE;EAAM,EAAE,CAC/F,GAEM,IAAc,EAClB,EAAM,YAAY,EAAe,IAAI,IACvC,GAEM,KAAgB,MAA4D;GAGhF,AAFA,EAAY,QAAQ,GAEpB,EAAK,eAAe,CAAI;EAC1B;oBAIE,EAAA,GAAA,EAyHM,OAAA;GAxHA,SAAA;GAAJ,KAAI;GACJ,OAAK,GAAA,CAAC,4BAA0B,EAAA,4BACM,EAAA,WAAU,CAAA,CAAA;;GAEhD,EA6CM,OA7CN,GA6CM;IA5Cc,EAAA,aAAlB,EAAA,GAAA,EAAyF,IAAzF,EAAyF,EAAA,KAAA,EAAA,GAApD,EAAA,OAAkB,EAAG,gBAAe,GAAY,CAAA,GAAA,MAAA,EAAA,KAAA,EAAA,IAAA,EAAA;IAE7E,EAAA,cAAc,EAAA,cAAc,SAAS,EAAA,aAAa,MAAM,SAAM,KADtE,EAAA,GAAA,EAQE,GAAA;;KANA,OAAM;KACN,MAAK;KACJ,SAAK,AAAA,EAAA,QAAA,MAAE,EAAA,QAAW;KACnB,OAAA,EAAA,eAAA,IAAA;KACC,MAAM,EAAA,QAAkB,IAAA,YAAA;KACxB,WAAW,EAAA,QAAkB,IAAO,EAAA,QAAqB,KAAA;;IAIpD,EAAA,cAAc,EAAA,cAAc,SAAS,EAAA,aAAa,MAAM,SAAM,KAFtE,EAAA,GAAA,EAWM,OAXN,GAWM,CAPJ,EAME,GAAA;KALC,SAAS,EAAA;KACT,OAAO,EAAA,aAAa;KACrB,SAAA;KACC,UAAM,AAAA,EAAA,QAAG,MAAgB,EAAA,OAAgB,YAAY,CAAG;KACxD,cAAY;;IAGjB,EAqBM,OArBN,GAqBM;KAnBI,EAAA,MAAgB,SAAM,KAD9B,EAAA,GAAA,EAME,GAAA;;MAJS,YAAA,EAAA;MAAA,uBAAA,AAAA,EAAA,QAAA,MAAA,EAAW,QAAA;MACnB,SAAS,EAAA;MACT,cAAY,EAAA;MACC;;;;;;KAGhB,EAKE,GAAA;MAJA,MAAK;MACL,OAAM;MACN,WAAU;MACT,SAAK,AAAA,EAAA,QAAA,MAAE,EAAA,QAAW;;KAErB,EAKE,GAAA;MAJA,MAAK;MACL,OAAM;MACL,SAAK,AAAA,EAAA,QAAA,MAAE,EAAA,QAAS;MACjB,WAAU;;;;GAMR,EAAA,cAAc,EAAA,cAAc,SAAS,EAAA,aAAa,MAAM,SAAM,KAFtE,EAAA,GAAA,EAQE,GARF,EAQE;;IAPI,SAAA;IAAJ,KAAI;GAEI,GAAA,EAAA,OAAkB;IACzB,eAAa,EAAA;IACb,MAAM,EAAA;IACN,SAAK,AAAA,EAAA,QAAA,MAAE,EAAA,QAAW;IAClB,UAAQ;;GAEX,EAA8D,GAAA;IAA9C,MAAM,EAAA;IAAY,SAAK,AAAA,EAAA,QAAA,MAAE,EAAA,QAAS;;GAE1C,GAAA,UAAe,WADvB,EAAA,GAAA,EAqBY,GAAA;;IAnBT,QAAQ,EAAA;IACR,SAAS,EAAA;IACT,OAAO,EAAA;IACP,UAAU,EAAA,SAAoB,KAAA;IAC9B,gBAAc,EAAA;IACd,gBAAa,AAAA,EAAA,QAAA,MAAE,EAAI,iBAAkB,CAAM;IAC3C,mBAAgB,AAAA,EAAA,QAAA,MAAE,EAAI,oBAAqB,CAAM;IACpC;GAGE,GAAA,EAAA,EAAA,GAAA,EAAA,GAAA,CAAA,EAAA,EAAA,MAAe,UAAtB;IAEE,MAAA,QAAA,EAAI;IAEb,IAAA,GAF2B,MAAS,CAEpC,EAA0D,EAAA,QAAA,QAArC,EAAI,YAAQ,EAAA,EAAY,CAAS,CAAA,CAAA,CAAA,CAAA;KAExC,GAAA,EAAA,QAAA;IAAiB,MAAA;IAC/B,IAAA,GADwC,MAAS,CACjD,EAA0C,EAAA,QAAA,WAAA,EAAA,EAAb,CAAS,CAAA,CAAA,CAAA,CAAA;;;;;;;;GAI1C,CAAA,MAAA,EAAA,GAAA,EAkBY,GAAA;;IAhBT,QAAQ,EAAA;IACR,SAAS,EAAA;IACT,OAAO,EAAA;IACP,UAAU,EAAA,SAAoB,KAAA;IAC9B,mBAAgB,AAAA,EAAA,QAAA,MAAE,EAAI,oBAAqB,CAAM;GAGlC,GAAA,EAAA,EAAA,GAAA,EAAA,GAAA,CAAA,EAAA,EAAA,MAAe,UAAtB;IAEE,MAAA,QAAA,EAAI;IAEb,IAAA,GAF2B,MAAS,CAEpC,EAA0D,EAAA,QAAA,QAArC,EAAI,YAAQ,EAAA,EAAY,CAAS,CAAA,CAAA,CAAA,CAAA;KAExC,GAAA,EAAA,QAAA;IAAiB,MAAA;IAC/B,IAAA,GADwC,MAAS,CACjD,EAA0C,EAAA,QAAA,WAAA,EAAA,EAAb,CAAS,CAAA,CAAA,CAAA,CAAA;;;;;;;;GAKlC,EAAA,cAAc,GAAA,SADtB,EAAA,GAAA,EAME,GAAA;;IAJC,UAAU,EAAA;IACV,eAAa,EAAA;IACb,cAAY,EAAA;IACZ,uBAAiB,AAAA,EAAA,SAAA,MAAE,EAAI,qBAAsB,CAAM;;;;;;GAGtD,EAQE,GAAA;IAPC,MAAM,EAAA;IACN,SAAS,EAAA,OAAO;IAChB,UAAU,EAAA,YAAQ,CAAA;IAClB,eAAa,EAAA;IACb,WAAW,EAAA;IACX,SAAK,AAAA,EAAA,SAAA,MAAE,EAAA,QAAW;IAClB,UAAQ"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import './
|
|
2
|
-
import e from "./admins-components103.js";
|
|
1
|
+
import './styles/components/data-table/data-list.scss_vue_type_style_index_0_src_true_lang.css';
|
|
2
|
+
import e, { dataListDefaults as t, getDefaultFetchData as n } from "./admins-components103.js";
|
|
3
3
|
/* empty css */
|
|
4
4
|
//#region src/components/data-table/DataList.vue
|
|
5
|
-
var
|
|
5
|
+
var r = e;
|
|
6
6
|
//#endregion
|
|
7
|
-
export { t as default };
|
|
7
|
+
export { t as dataListDefaults, r as default, n as getDefaultFetchData };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admins-components105.js","names":[],"sources":["../src/components/data-table/DataList.vue"],"sourcesContent":["<script lang=\"ts\">\nexport type { PaginatorSettings } from '@/types/data-list'\nexport type { DataSearchProps } from './DataSearch.vue'\nexport type { DataFiltersProps } from './DataFilters.vue'\n\nexport interface DataListProps {\n config: DataListConfig\n items: Record<string, unknown>[]\n settings?: Partial<DataListSettings>\n id: string\n layoutBreakpoint?: number\n orderable?: boolean\n pagination?: PaginatorSettings\n loading?: boolean\n handleUrl?: boolean\n useSearch?: boolean\n useFilters?: boolean\n searchConfig?: DataSearchProps\n filterConfig?: DataFiltersProps\n fillHeight?: boolean\n}\n\nexport const dataListDefaults = {\n layoutBreakpoint: 768,\n orderable: true,\n loading: false,\n useSearch: true,\n useFilters: true,\n handleUrl: false,\n fillHeight: false,\n}\n\nexport function getDefaultFetchData(filters: FilterItem[], storageKey: string) {\n const defaultPaginator = getDefaultPaginator(storageKey)\n const defaultSort = getDefaultSort()\n const defaultSearch = getDefaultSearch()\n const defaultFilters = getDefaultFilters(filters, storageKey, true)\n\n return {\n ...defaultPaginator,\n ...defaultSort,\n ...defaultSearch,\n ...defaultFilters,\n }\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { ref, computed, onMounted, onBeforeUnmount, useSlots } from 'vue'\nimport DataTable from '@/components/data-table/DataTable.vue'\nimport DataCards from '@/components/data-table/DataCards.vue'\nimport DataListOptions from '@/components/data-table/DataListOptions.vue'\nimport DataPaginator, { getDefaultPaginator } from '@/components/data-table/DataPaginator.vue'\nimport Button from '@/components/Button.vue'\nimport DataSort, { getDefaultSort, type DataSortOption } from '@/components/data-table/DataSort.vue'\nimport type {\n DataListConfig,\n DataListSettings,\n PageSettings,\n PaginatorSettings,\n} from '@/types/data-list'\nimport type { FilterValue } from '@/types/data-list'\nimport DataFilters, {\n type FilterResponse,\n type DataFiltersProps,\n type FilterItem,\n} from '@/components/data-table/DataFilters.vue'\nimport FilterTags from '@/components/data-table/FilterTags.vue'\nimport DataListGuide from '@/components/data-table/DataListGuide.vue'\nimport DataSearch, { getDefaultSearch, type DataSearchProps } from './DataSearch.vue'\nimport { getDefaultFilters } from '@/utils/dataFilters.ts'\n\nconst dataFiltersRef = ref<InstanceType<typeof DataFilters> | null>(null)\nconst slots = useSlots()\nconst hasActionsSlot = computed(() => !!slots.actions)\n\nconst props = withDefaults(defineProps<DataListProps>(), {\n ...dataListDefaults,\n searchConfig: undefined,\n filterConfig: undefined,\n})\n\nfunction resolvedHandleUrl(side: 'searchConfig' | 'filterConfig'): boolean | undefined {\n const sideConfig = props[side]\n if (sideConfig && Object.hasOwn(sideConfig as object, 'handleUrl')) {\n return (sideConfig as { handleUrl?: boolean }).handleUrl\n }\n return props.handleUrl\n}\n\nconst mergedSearchConfig = computed<DataSearchProps>(() => ({\n ...props.searchConfig,\n handleUrl: resolvedHandleUrl('searchConfig'),\n}))\n\nconst mergedFilterConfig = computed<DataFiltersProps>(() => ({\n ...(props.filterConfig as DataFiltersProps),\n handleUrl: resolvedHandleUrl('filterConfig'),\n}))\n\nconst emit = defineEmits<{\n 'filter-change': [filters: Record<string, FilterValue>]\n 'selection-change': [selected: unknown[]]\n 'settings-change': [settings: DataListSettings]\n 'pagination-change': [pagination: PageSettings]\n 'sort-change': [sort: { key: string; direction: 'asc' | 'desc' } | null]\n 'search-change': [filters: Record<string, string | boolean>]\n}>()\n\nconst showOptions = ref(false)\nconst showGuide = ref(false)\nconst resolvedSettings = ref<DataListSettings | null>(null)\nconst isMobile = ref(false)\nconst root = ref<HTMLElement | null>(null)\nconst showFilters = ref(false)\n\nconst activeFilters = ref<Record<string, unknown>>(\n props.filterConfig?.items ? getDefaultFilters(props.filterConfig.items, props.id, false) : {},\n)\nlet resizeObserver: ResizeObserver | null = null\n\nonMounted(() => {\n resizeObserver = new ResizeObserver((entries) => {\n isMobile.value = (entries[0]?.contentRect.width ?? 0) < props.layoutBreakpoint\n })\n if (root.value) resizeObserver.observe(root.value)\n})\n\nonBeforeUnmount(() => resizeObserver?.disconnect())\n\nconst effectiveLayout = computed<'table' | 'cards'>(() => {\n const layout = resolvedSettings.value?.layout\n if (layout === 'table' || layout === 'cards') return layout\n return isMobile.value ? 'cards' : 'table'\n})\n\nconst internalConfig = computed<DataListConfig>(() => {\n if (!resolvedSettings.value) return props.config\n const order = resolvedSettings.value.columnOrder\n const mapped = props.config.columns.map((c) => ({\n ...c,\n visible: resolvedSettings.value!.columns[c.property] ?? c.visible !== false,\n }))\n if (order?.length) {\n mapped.sort((a, b) => {\n const ai = order.indexOf(a.property)\n const bi = order.indexOf(b.property)\n return (ai === -1 ? 999 : ai) - (bi === -1 ? 999 : bi)\n })\n }\n return { ...props.config, columns: mapped }\n})\n\nfunction onSettingsChange(s: DataListSettings) {\n resolvedSettings.value = s\n emit('settings-change', s)\n}\n\ndefineExpose({\n openOptions: () => (showOptions.value = true),\n closeOptions: () => (showOptions.value = false),\n openFilters: () => (showFilters.value = true),\n closeFilters: () => (showFilters.value = false),\n})\n\nasync function openFilter(key: string) {\n showFilters.value = true\n setTimeout(() => {\n dataFiltersRef.value?.focusFilter(key)\n }, 300)\n}\n\nfunction onFilterChange(response: FilterResponse) {\n activeFilters.value = response.values\n emit('filter-change', response.transformed)\n}\n\nconst activeFiltersCount = computed(\n () => Object.values(activeFilters.value).filter((v) => v != null && v !== '').length,\n)\n\nconst showPaginator = computed(\n () => !!props.pagination && (props.items.length > 0 || !props.loading),\n)\n\nconst searchChange = (value: Record<string, string | boolean>) => {\n emit('search-change', value)\n}\n\nconst sortableColumns = computed<DataSortOption[]>(() =>\n props.config.columns.filter((c) => c.sort).map((c) => ({ value: c.property, label: c.label })),\n)\n\nconst currentSort = ref<{ key: string; direction: 'asc' | 'desc' } | null>(\n props.handleUrl ? getDefaultSort() : null,\n)\n\nconst onSortChange = (sort: { key: string; direction: 'asc' | 'desc' } | null) => {\n currentSort.value = sort\n // DataSort already writes the URL when handleUrl: true; we only emit.\n emit('sort-change', sort)\n}\n</script>\n\n<template>\n <div\n ref=\"root\"\n class=\"ac-component c-data-list\"\n :class=\"{ 'c-data-list--fill-height': fillHeight }\"\n >\n <div class=\"c-data-list__toolbar\">\n <DataSearch v-if=\"useSearch\" v-bind=\"mergedSearchConfig\" @search-change=\"searchChange\" />\n <Button\n v-if=\"useFilters && filterConfig?.items && filterConfig.items.length > 0\"\n label=\"Szűrők\"\n icon=\"fa-solid fa-filter\"\n @click=\"showFilters = true\"\n style=\"flex-shrink: 0\"\n :type=\"activeFiltersCount > 0 ? 'primary' : 'normal'\"\n :indicator=\"activeFiltersCount > 0 ? activeFiltersCount : undefined\"\n />\n <div\n class=\"flex-center gap-1 flex-center-wrap-on-mobile\"\n v-if=\"useFilters && filterConfig?.items && filterConfig.items.length > 0\"\n >\n <FilterTags\n :filters=\"activeFilters\"\n :items=\"filterConfig.items\"\n compact\n @remove=\"(key: string) => dataFiltersRef?.clearFilter(key)\"\n @openFilter=\"openFilter\"\n />\n </div>\n <div class=\"c-data-list__toolbar__right\">\n <DataSort\n v-if=\"sortableColumns.length > 0\"\n v-model=\"currentSort\"\n :options=\"sortableColumns\"\n :handle-url=\"handleUrl\"\n @sort-change=\"onSortChange\"\n />\n\n <Button\n icon=\"fa-solid fa-gear\"\n class=\"lh-normal settings-btn\"\n ariaLabel=\"Beállítások\"\n @click=\"showOptions = true\"\n />\n <Button\n icon=\"fa-solid fa-question\"\n class=\"lh-normal\"\n @click=\"showGuide = true\"\n ariaLabel=\"Súgó\"\n />\n </div>\n </div>\n <DataFilters\n ref=\"dataFiltersRef\"\n v-if=\"useFilters && filterConfig?.items && filterConfig.items.length > 0\"\n v-bind=\"mergedFilterConfig\"\n :storage-key=\"id\"\n :open=\"showFilters\"\n @close=\"showFilters = false\"\n @change=\"onFilterChange\"\n />\n <DataListGuide :open=\"showGuide\" @close=\"showGuide = false\" />\n <DataTable\n v-if=\"effectiveLayout === 'table'\"\n :config=\"internalConfig\"\n :loading=\"loading\"\n :items=\"items\"\n :settings=\"resolvedSettings ?? undefined\"\n :initial-sort=\"currentSort\"\n @filter-change=\"emit('filter-change', $event)\"\n @selection-change=\"emit('selection-change', $event)\"\n @sort-change=\"onSortChange\"\n >\n <template\n v-for=\"col in internalConfig.columns\"\n :key=\"col.property\"\n #[`cell:${col.property}`]=\"slotProps\"\n >\n <slot :name=\"`cell:${col.property}`\" v-bind=\"slotProps\" />\n </template>\n <template v-if=\"hasActionsSlot\" #actions=\"slotProps\">\n <slot name=\"actions\" v-bind=\"slotProps\" />\n </template>\n </DataTable>\n\n <DataCards\n v-else\n :config=\"internalConfig\"\n :loading=\"loading\"\n :items=\"items\"\n :settings=\"resolvedSettings ?? undefined\"\n @selection-change=\"emit('selection-change', $event)\"\n >\n <template\n v-for=\"col in internalConfig.columns\"\n :key=\"col.property\"\n #[`cell:${col.property}`]=\"slotProps\"\n >\n <slot :name=\"`cell:${col.property}`\" v-bind=\"slotProps\" />\n </template>\n <template v-if=\"hasActionsSlot\" #actions=\"slotProps\">\n <slot name=\"actions\" v-bind=\"slotProps\" />\n </template>\n </DataCards>\n\n <DataPaginator\n v-if=\"pagination && showPaginator\"\n :settings=\"pagination\"\n :storage-key=\"id\"\n :handle-url=\"handleUrl\"\n @update:pagination=\"emit('pagination-change', $event)\"\n />\n\n <DataListOptions\n :open=\"showOptions\"\n :columns=\"config.columns\"\n :settings=\"settings ?? {}\"\n :storage-key=\"id\"\n :orderable=\"orderable\"\n @close=\"showOptions = false\"\n @change=\"onSettingsChange\"\n />\n </div>\n</template>\n\n<style lang=\"scss\" src=\"@/styles/components/data-table/data-list.scss\"></style>\n"],"mappings":""}
|
|
1
|
+
{"version":3,"file":"admins-components105.js","names":[],"sources":["../src/components/data-table/DataList.vue"],"sourcesContent":["<script lang=\"ts\">\nexport type { PaginatorSettings } from '@/types/data-list'\nexport type { DataSearchProps } from './DataSearch.vue'\nexport type { DataFiltersProps } from './DataFilters.vue'\n\nexport interface DataListProps {\n config: DataListConfig\n items: Record<string, unknown>[]\n settings?: Partial<DataListSettings>\n id: string\n layoutBreakpoint?: number\n orderable?: boolean\n pagination?: PaginatorSettings\n loading?: boolean\n handleUrl?: boolean\n useSearch?: boolean\n useFilters?: boolean\n searchConfig?: DataSearchProps\n filterConfig?: DataFiltersProps\n fillHeight?: boolean\n}\n\nexport const dataListDefaults = {\n layoutBreakpoint: 768,\n orderable: true,\n loading: false,\n useSearch: true,\n useFilters: true,\n handleUrl: false,\n fillHeight: false,\n}\n\nexport function getDefaultFetchData(filters: FilterItem[], storageKey: string) {\n const defaultPaginator = getDefaultPaginator(storageKey)\n const defaultSort = getDefaultSort()\n const defaultSearch = getDefaultSearch()\n const defaultFilters = getDefaultFilterValues(filters, storageKey, true)\n\n return {\n ...defaultPaginator,\n ...defaultSort,\n ...defaultSearch,\n ...defaultFilters,\n }\n}\n</script>\n\n<script setup lang=\"ts\">\nimport { ref, computed, onMounted, onBeforeUnmount, useSlots } from 'vue'\nimport DataTable from '@/components/data-table/DataTable.vue'\nimport DataCards from '@/components/data-table/DataCards.vue'\nimport DataListOptions from '@/components/data-table/DataListOptions.vue'\nimport DataPaginator, { getDefaultPaginator } from '@/components/data-table/DataPaginator.vue'\nimport Button from '@/components/Button.vue'\nimport DataSort, { getDefaultSort, type DataSortOption } from '@/components/data-table/DataSort.vue'\nimport type {\n DataListConfig,\n DataListSettings,\n PageSettings,\n PaginatorSettings,\n} from '@/types/data-list'\nimport type { FilterValue } from '@/types/data-list'\nimport DataFilters, {\n type FilterResponse,\n type DataFiltersProps,\n type FilterItem,\n} from '@/components/data-table/DataFilters.vue'\nimport FilterTags from '@/components/data-table/FilterTags.vue'\nimport DataListGuide from '@/components/data-table/DataListGuide.vue'\nimport DataSearch, { getDefaultSearch, type DataSearchProps } from './DataSearch.vue'\nimport { getDefaultFilters, getDefaultFilterValues } from '@/utils/dataFilters.ts'\n\nconst dataFiltersRef = ref<InstanceType<typeof DataFilters> | null>(null)\nconst slots = useSlots()\nconst hasActionsSlot = computed(() => !!slots.actions)\n\nconst props = withDefaults(defineProps<DataListProps>(), {\n ...dataListDefaults,\n searchConfig: undefined,\n filterConfig: undefined,\n})\n\nfunction resolvedHandleUrl(side: 'searchConfig' | 'filterConfig'): boolean | undefined {\n const sideConfig = props[side]\n if (sideConfig && Object.hasOwn(sideConfig as object, 'handleUrl')) {\n return (sideConfig as { handleUrl?: boolean }).handleUrl\n }\n return props.handleUrl\n}\n\nconst mergedSearchConfig = computed<DataSearchProps>(() => ({\n ...props.searchConfig,\n handleUrl: resolvedHandleUrl('searchConfig'),\n}))\n\nconst mergedFilterConfig = computed<DataFiltersProps>(() => ({\n ...(props.filterConfig as DataFiltersProps),\n handleUrl: resolvedHandleUrl('filterConfig'),\n}))\n\nconst emit = defineEmits<{\n 'filter-change': [filters: Record<string, FilterValue>]\n 'selection-change': [selected: unknown[]]\n 'settings-change': [settings: DataListSettings]\n 'pagination-change': [pagination: PageSettings]\n 'sort-change': [sort: { key: string; direction: 'asc' | 'desc' } | null]\n 'search-change': [filters: Record<string, string | boolean>]\n}>()\n\nconst showOptions = ref(false)\nconst showGuide = ref(false)\nconst resolvedSettings = ref<DataListSettings | null>(null)\nconst isMobile = ref(false)\nconst root = ref<HTMLElement | null>(null)\nconst showFilters = ref(false)\n\nconst activeFilters = ref<Record<string, unknown>>(\n props.filterConfig?.items ? getDefaultFilters(props.filterConfig.items, props.id, false) : {},\n)\nlet resizeObserver: ResizeObserver | null = null\n\nonMounted(() => {\n resizeObserver = new ResizeObserver((entries) => {\n isMobile.value = (entries[0]?.contentRect.width ?? 0) < props.layoutBreakpoint\n })\n if (root.value) resizeObserver.observe(root.value)\n})\n\nonBeforeUnmount(() => resizeObserver?.disconnect())\n\nconst effectiveLayout = computed<'table' | 'cards'>(() => {\n const layout = resolvedSettings.value?.layout\n if (layout === 'table' || layout === 'cards') return layout\n return isMobile.value ? 'cards' : 'table'\n})\n\nconst internalConfig = computed<DataListConfig>(() => {\n if (!resolvedSettings.value) return props.config\n const order = resolvedSettings.value.columnOrder\n const mapped = props.config.columns.map((c) => ({\n ...c,\n visible: resolvedSettings.value!.columns[c.property] ?? c.visible !== false,\n }))\n if (order?.length) {\n mapped.sort((a, b) => {\n const ai = order.indexOf(a.property)\n const bi = order.indexOf(b.property)\n return (ai === -1 ? 999 : ai) - (bi === -1 ? 999 : bi)\n })\n }\n return { ...props.config, columns: mapped }\n})\n\nfunction onSettingsChange(s: DataListSettings) {\n resolvedSettings.value = s\n emit('settings-change', s)\n}\n\ndefineExpose({\n openOptions: () => (showOptions.value = true),\n closeOptions: () => (showOptions.value = false),\n openFilters: () => (showFilters.value = true),\n closeFilters: () => (showFilters.value = false),\n})\n\nasync function openFilter(key: string) {\n showFilters.value = true\n setTimeout(() => {\n dataFiltersRef.value?.focusFilter(key)\n }, 300)\n}\n\nfunction onFilterChange(response: FilterResponse) {\n activeFilters.value = response.values\n emit('filter-change', response.transformed)\n}\n\nconst activeFiltersCount = computed(\n () => Object.values(activeFilters.value).filter((v) => v != null && v !== '').length,\n)\n\nconst showPaginator = computed(\n () => !!props.pagination && (props.items.length > 0 || !props.loading),\n)\n\nconst searchChange = (value: Record<string, string | boolean>) => {\n emit('search-change', value)\n}\n\nconst sortableColumns = computed<DataSortOption[]>(() =>\n props.config.columns.filter((c) => c.sort).map((c) => ({ value: c.property, label: c.label })),\n)\n\nconst currentSort = ref<{ key: string; direction: 'asc' | 'desc' } | null>(\n props.handleUrl ? getDefaultSort() : null,\n)\n\nconst onSortChange = (sort: { key: string; direction: 'asc' | 'desc' } | null) => {\n currentSort.value = sort\n // DataSort already writes the URL when handleUrl: true; we only emit.\n emit('sort-change', sort)\n}\n</script>\n\n<template>\n <div\n ref=\"root\"\n class=\"ac-component c-data-list\"\n :class=\"{ 'c-data-list--fill-height': fillHeight }\"\n >\n <div class=\"c-data-list__toolbar\">\n <DataSearch v-if=\"useSearch\" v-bind=\"mergedSearchConfig\" @search-change=\"searchChange\" />\n <Button\n v-if=\"useFilters && filterConfig?.items && filterConfig.items.length > 0\"\n label=\"Szűrők\"\n icon=\"fa-solid fa-filter\"\n @click=\"showFilters = true\"\n style=\"flex-shrink: 0\"\n :type=\"activeFiltersCount > 0 ? 'primary' : 'normal'\"\n :indicator=\"activeFiltersCount > 0 ? activeFiltersCount : undefined\"\n />\n <div\n class=\"flex-center gap-1 flex-center-wrap-on-mobile\"\n v-if=\"useFilters && filterConfig?.items && filterConfig.items.length > 0\"\n >\n <FilterTags\n :filters=\"activeFilters\"\n :items=\"filterConfig.items\"\n compact\n @remove=\"(key: string) => dataFiltersRef?.clearFilter(key)\"\n @openFilter=\"openFilter\"\n />\n </div>\n <div class=\"c-data-list__toolbar__right\">\n <DataSort\n v-if=\"sortableColumns.length > 0\"\n v-model=\"currentSort\"\n :options=\"sortableColumns\"\n :handle-url=\"handleUrl\"\n @sort-change=\"onSortChange\"\n />\n\n <Button\n icon=\"fa-solid fa-gear\"\n class=\"lh-normal settings-btn\"\n ariaLabel=\"Beállítások\"\n @click=\"showOptions = true\"\n />\n <Button\n icon=\"fa-solid fa-question\"\n class=\"lh-normal\"\n @click=\"showGuide = true\"\n ariaLabel=\"Súgó\"\n />\n </div>\n </div>\n <DataFilters\n ref=\"dataFiltersRef\"\n v-if=\"useFilters && filterConfig?.items && filterConfig.items.length > 0\"\n v-bind=\"mergedFilterConfig\"\n :storage-key=\"id\"\n :open=\"showFilters\"\n @close=\"showFilters = false\"\n @change=\"onFilterChange\"\n />\n <DataListGuide :open=\"showGuide\" @close=\"showGuide = false\" />\n <DataTable\n v-if=\"effectiveLayout === 'table'\"\n :config=\"internalConfig\"\n :loading=\"loading\"\n :items=\"items\"\n :settings=\"resolvedSettings ?? undefined\"\n :initial-sort=\"currentSort\"\n @filter-change=\"emit('filter-change', $event)\"\n @selection-change=\"emit('selection-change', $event)\"\n @sort-change=\"onSortChange\"\n >\n <template\n v-for=\"col in internalConfig.columns\"\n :key=\"col.property\"\n #[`cell:${col.property}`]=\"slotProps\"\n >\n <slot :name=\"`cell:${col.property}`\" v-bind=\"slotProps\" />\n </template>\n <template v-if=\"hasActionsSlot\" #actions=\"slotProps\">\n <slot name=\"actions\" v-bind=\"slotProps\" />\n </template>\n </DataTable>\n\n <DataCards\n v-else\n :config=\"internalConfig\"\n :loading=\"loading\"\n :items=\"items\"\n :settings=\"resolvedSettings ?? undefined\"\n @selection-change=\"emit('selection-change', $event)\"\n >\n <template\n v-for=\"col in internalConfig.columns\"\n :key=\"col.property\"\n #[`cell:${col.property}`]=\"slotProps\"\n >\n <slot :name=\"`cell:${col.property}`\" v-bind=\"slotProps\" />\n </template>\n <template v-if=\"hasActionsSlot\" #actions=\"slotProps\">\n <slot name=\"actions\" v-bind=\"slotProps\" />\n </template>\n </DataCards>\n\n <DataPaginator\n v-if=\"pagination && showPaginator\"\n :settings=\"pagination\"\n :storage-key=\"id\"\n :handle-url=\"handleUrl\"\n @update:pagination=\"emit('pagination-change', $event)\"\n />\n\n <DataListOptions\n :open=\"showOptions\"\n :columns=\"config.columns\"\n :settings=\"settings ?? {}\"\n :storage-key=\"id\"\n :orderable=\"orderable\"\n @close=\"showOptions = false\"\n @change=\"onSettingsChange\"\n />\n </div>\n</template>\n\n<style lang=\"scss\" src=\"@/styles/components/data-table/data-list.scss\"></style>\n"],"mappings":""}
|