@ulu/frontend-vue 0.1.1-beta.2 → 0.1.1-beta.21
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/{breakpoints-DfGETUy5.js → breakpoints-BK5cY325.js} +1 -1
- package/dist/frontend-vue.css +1 -1
- package/dist/frontend-vue.js +78 -74
- package/dist/{index-94HkwBnP.js → index-CzaotMwA.js} +2457 -2061
- package/lib/components/collapsible/UluAccordion.vue +9 -9
- package/lib/components/collapsible/UluCollapsible.vue +9 -24
- package/lib/components/elements/UluCard.vue +172 -157
- package/lib/components/elements/UluDefinitionList.vue +55 -3
- package/lib/components/forms/UluSelectableMenu.vue +8 -1
- package/lib/components/index.js +3 -1
- package/lib/components/navigation/UluMenu.vue +5 -3
- package/lib/components/navigation/UluMenuStack.vue +47 -30
- package/lib/components/systems/facets/UluFacetsActiveFilters.vue +104 -0
- package/lib/components/systems/facets/UluFacetsFilterAccordions.vue +94 -0
- package/lib/components/systems/facets/UluFacetsFilterLists.vue +15 -11
- package/lib/components/systems/facets/UluFacetsList.vue +3 -1
- package/lib/components/systems/facets/UluFacetsSearch.vue +1 -1
- package/lib/components/systems/facets/UluFacetsSidebarLayout.vue +32 -12
- package/lib/components/systems/facets/useFacets.js +166 -40
- package/lib/components/systems/index.js +2 -0
- package/lib/components/systems/slider/UluSlideShow.vue +2 -2
- package/lib/components/utils/{UluCondText.vue → UluConditionalText.vue} +1 -1
- package/lib/components/utils/UluConditionalWrapper.vue +29 -0
- package/lib/components/utils/UluRouteAnnouncer.vue +1 -1
- package/lib/components/utils/UluSanityRichText.vue +41 -0
- package/lib/components/visualizations/UluProgressCircle.vue +1 -1
- package/lib/plugins/core/index.js +3 -2
- package/lib/plugins/popovers/UluPopover.vue +1 -1
- package/package.json +13 -8
- package/types/components/collapsible/UluAccordion.vue.d.ts +41 -0
- package/types/components/collapsible/UluAccordion.vue.d.ts.map +1 -0
- package/types/components/collapsible/UluAccordionGroup.vue.d.ts +19 -0
- package/types/components/collapsible/UluAccordionGroup.vue.d.ts.map +1 -0
- package/types/components/collapsible/UluCollapsible.vue.d.ts +39 -0
- package/types/components/collapsible/UluCollapsible.vue.d.ts.map +1 -0
- package/types/components/collapsible/UluDropdown.vue.d.ts +22 -0
- package/types/components/collapsible/UluDropdown.vue.d.ts.map +1 -0
- package/types/components/collapsible/UluModal.vue.d.ts +253 -0
- package/types/components/collapsible/UluModal.vue.d.ts.map +1 -0
- package/types/components/collapsible/UluOverflowPopover.vue.d.ts +18 -0
- package/types/components/collapsible/UluOverflowPopover.vue.d.ts.map +1 -0
- package/types/components/collapsible/UluTab.vue.d.ts +10 -0
- package/types/components/collapsible/UluTab.vue.d.ts.map +1 -0
- package/types/components/collapsible/UluTabGroup.vue.d.ts +18 -0
- package/types/components/collapsible/UluTabGroup.vue.d.ts.map +1 -0
- package/types/components/collapsible/UluTabList.vue.d.ts +10 -0
- package/types/components/collapsible/UluTabList.vue.d.ts.map +1 -0
- package/types/components/collapsible/UluTabPanel.vue.d.ts +10 -0
- package/types/components/collapsible/UluTabPanel.vue.d.ts.map +1 -0
- package/types/components/collapsible/UluTabPanels.vue.d.ts +10 -0
- package/types/components/collapsible/UluTabPanels.vue.d.ts.map +1 -0
- package/types/components/elements/UluAlert.vue.d.ts +147 -0
- package/types/components/elements/UluAlert.vue.d.ts.map +1 -0
- package/types/components/elements/UluBadge.vue.d.ts +30 -0
- package/types/components/elements/UluBadge.vue.d.ts.map +1 -0
- package/types/components/elements/UluBadgeStack.vue.d.ts +9 -0
- package/types/components/elements/UluBadgeStack.vue.d.ts.map +1 -0
- package/types/components/elements/UluButton.vue.d.ts +186 -0
- package/types/components/elements/UluButton.vue.d.ts.map +1 -0
- package/types/components/elements/UluButtonVerbose.vue.d.ts +126 -0
- package/types/components/elements/UluButtonVerbose.vue.d.ts.map +1 -0
- package/types/components/elements/UluCallout.vue.d.ts +27 -0
- package/types/components/elements/UluCallout.vue.d.ts.map +1 -0
- package/types/components/elements/UluCard.vue.d.ts +66 -0
- package/types/components/elements/UluCard.vue.d.ts.map +1 -0
- package/types/components/elements/UluDefinitionList.vue.d.ts +42 -0
- package/types/components/elements/UluDefinitionList.vue.d.ts.map +1 -0
- package/types/components/elements/UluExternalLink.vue.d.ts +25 -0
- package/types/components/elements/UluExternalLink.vue.d.ts.map +1 -0
- package/types/components/elements/UluIcon.vue.d.ts +11 -0
- package/types/components/elements/UluIcon.vue.d.ts.map +1 -0
- package/types/components/elements/UluList.vue.d.ts +37 -0
- package/types/components/elements/UluList.vue.d.ts.map +1 -0
- package/types/components/elements/UluMain.vue.d.ts +13 -0
- package/types/components/elements/UluMain.vue.d.ts.map +1 -0
- package/types/components/elements/UluSpokeSpinner.vue.d.ts +9 -0
- package/types/components/elements/UluSpokeSpinner.vue.d.ts.map +1 -0
- package/types/components/elements/UluTag.vue.d.ts +26 -0
- package/types/components/elements/UluTag.vue.d.ts.map +1 -0
- package/types/components/forms/UluFileDisplay.vue.d.ts +23 -0
- package/types/components/forms/UluFileDisplay.vue.d.ts.map +1 -0
- package/types/components/forms/UluFormFile.vue.d.ts +26 -0
- package/types/components/forms/UluFormFile.vue.d.ts.map +1 -0
- package/types/components/forms/UluFormMessage.vue.d.ts +18 -0
- package/types/components/forms/UluFormMessage.vue.d.ts.map +1 -0
- package/types/components/forms/UluFormSelect.vue.d.ts +24 -0
- package/types/components/forms/UluFormSelect.vue.d.ts.map +1 -0
- package/types/components/forms/UluFormText.vue.d.ts +22 -0
- package/types/components/forms/UluFormText.vue.d.ts.map +1 -0
- package/types/components/forms/UluSearchForm.vue.d.ts +9 -0
- package/types/components/forms/UluSearchForm.vue.d.ts.map +1 -0
- package/types/components/forms/UluSelectableMenu.vue.d.ts +30 -0
- package/types/components/forms/UluSelectableMenu.vue.d.ts.map +1 -0
- package/types/components/index.d.ts +50 -0
- package/types/components/layout/UluAdaptiveLayout.vue.d.ts +12 -0
- package/types/components/layout/UluAdaptiveLayout.vue.d.ts.map +1 -0
- package/types/components/layout/UluDataGrid.vue.d.ts +3 -0
- package/types/components/layout/UluDataGrid.vue.d.ts.map +1 -0
- package/types/components/layout/UluTitleRail.vue.d.ts +91 -0
- package/types/components/layout/UluTitleRail.vue.d.ts.map +1 -0
- package/types/components/layout/UluWhenBreakpoint.vue.d.ts +20 -0
- package/types/components/layout/UluWhenBreakpoint.vue.d.ts.map +1 -0
- package/types/components/navigation/UluBreadcrumb.vue.d.ts +71 -0
- package/types/components/navigation/UluBreadcrumb.vue.d.ts.map +1 -0
- package/types/components/navigation/UluMenu.vue.d.ts +142 -0
- package/types/components/navigation/UluMenu.vue.d.ts.map +1 -0
- package/types/components/navigation/UluMenuStack.vue.d.ts +19 -0
- package/types/components/navigation/UluMenuStack.vue.d.ts.map +1 -0
- package/types/components/navigation/UluNavStrip.vue.d.ts +138 -0
- package/types/components/navigation/UluNavStrip.vue.d.ts.map +1 -0
- package/types/components/navigation/UluPager.vue.d.ts +15 -0
- package/types/components/navigation/UluPager.vue.d.ts.map +1 -0
- package/types/components/navigation/UluSkipLink.vue.d.ts +3 -0
- package/types/components/navigation/UluSkipLink.vue.d.ts.map +1 -0
- package/types/components/systems/facets/ExampleFacetsWithPagination.vue.d.ts +3 -0
- package/types/components/systems/facets/ExampleFacetsWithPagination.vue.d.ts.map +1 -0
- package/types/components/systems/facets/UluFacetsActiveFilters.vue.d.ts +24 -0
- package/types/components/systems/facets/UluFacetsActiveFilters.vue.d.ts.map +1 -0
- package/types/components/systems/facets/UluFacetsFilterAccordions.vue.d.ts +29 -0
- package/types/components/systems/facets/UluFacetsFilterAccordions.vue.d.ts.map +1 -0
- package/types/components/systems/facets/UluFacetsFilterLists.vue.d.ts +27 -0
- package/types/components/systems/facets/UluFacetsFilterLists.vue.d.ts.map +1 -0
- package/types/components/systems/facets/UluFacetsFilterPopovers.vue.d.ts +25 -0
- package/types/components/systems/facets/UluFacetsFilterPopovers.vue.d.ts.map +1 -0
- package/types/components/systems/facets/UluFacetsFilterSelects.vue.d.ts +11 -0
- package/types/components/systems/facets/UluFacetsFilterSelects.vue.d.ts.map +1 -0
- package/types/components/systems/facets/UluFacetsHeaderLayout.vue.d.ts +12 -0
- package/types/components/systems/facets/UluFacetsHeaderLayout.vue.d.ts.map +1 -0
- package/types/components/systems/facets/UluFacetsList.vue.d.ts +21 -0
- package/types/components/systems/facets/UluFacetsList.vue.d.ts.map +1 -0
- package/types/components/systems/facets/UluFacetsResults.vue.d.ts +27 -0
- package/types/components/systems/facets/UluFacetsResults.vue.d.ts.map +1 -0
- package/types/components/systems/facets/UluFacetsSearch.vue.d.ts +15 -0
- package/types/components/systems/facets/UluFacetsSearch.vue.d.ts.map +1 -0
- package/types/components/systems/facets/UluFacetsSidebarLayout.vue.d.ts +22 -0
- package/types/components/systems/facets/UluFacetsSidebarLayout.vue.d.ts.map +1 -0
- package/types/components/systems/facets/UluFacetsSort.vue.d.ts +22 -0
- package/types/components/systems/facets/UluFacetsSort.vue.d.ts.map +1 -0
- package/types/components/systems/facets/useFacets.d.ts +30 -12
- package/types/components/systems/facets/useFacets.d.ts.map +1 -1
- package/types/components/systems/index.d.ts +25 -0
- package/types/components/systems/scroll-anchors/UluScrollAnchors.vue.d.ts +60 -0
- package/types/components/systems/scroll-anchors/UluScrollAnchors.vue.d.ts.map +1 -0
- package/types/components/systems/scroll-anchors/UluScrollAnchorsNav.vue.d.ts +15 -0
- package/types/components/systems/scroll-anchors/UluScrollAnchorsNav.vue.d.ts.map +1 -0
- package/types/components/systems/scroll-anchors/UluScrollAnchorsNavAnimated.vue.d.ts +32 -0
- package/types/components/systems/scroll-anchors/UluScrollAnchorsNavAnimated.vue.d.ts.map +1 -0
- package/types/components/systems/scroll-anchors/UluScrollAnchorsSection.vue.d.ts +50 -0
- package/types/components/systems/scroll-anchors/UluScrollAnchorsSection.vue.d.ts.map +1 -0
- package/types/components/systems/scroll-anchors/symbols.d.ts +3 -3
- package/types/components/systems/scroll-anchors/symbols.d.ts.map +1 -1
- package/types/components/systems/skeleton/UluShowSkeleton.vue.d.ts +16 -0
- package/types/components/systems/skeleton/UluShowSkeleton.vue.d.ts.map +1 -0
- package/types/components/systems/skeleton/UluSkeletonContent.vue.d.ts +9 -0
- package/types/components/systems/skeleton/UluSkeletonContent.vue.d.ts.map +1 -0
- package/types/components/systems/skeleton/UluSkeletonMedia.vue.d.ts +3 -0
- package/types/components/systems/skeleton/UluSkeletonMedia.vue.d.ts.map +1 -0
- package/types/components/systems/skeleton/UluSkeletonText.vue.d.ts +13 -0
- package/types/components/systems/skeleton/UluSkeletonText.vue.d.ts.map +1 -0
- package/types/components/systems/slider/UluImageSlideShow.vue.d.ts +130 -0
- package/types/components/systems/slider/UluImageSlideShow.vue.d.ts.map +1 -0
- package/types/components/systems/slider/UluSlideShow.vue.d.ts +205 -0
- package/types/components/systems/slider/UluSlideShow.vue.d.ts.map +1 -0
- package/types/components/systems/slider/UluSlideShowSlide.vue.d.ts +17 -0
- package/types/components/systems/slider/UluSlideShowSlide.vue.d.ts.map +1 -0
- package/types/components/systems/table-sticky/UluTableSticky.vue.d.ts +455 -0
- package/types/components/systems/table-sticky/UluTableSticky.vue.d.ts.map +1 -0
- package/types/components/systems/table-sticky/UluTableStickyRows.vue.d.ts +34 -0
- package/types/components/systems/table-sticky/UluTableStickyRows.vue.d.ts.map +1 -0
- package/types/components/systems/table-sticky/UluTableStickyTable.vue.d.ts +151 -0
- package/types/components/systems/table-sticky/UluTableStickyTable.vue.d.ts.map +1 -0
- package/types/components/utils/UluCondText.vue.d.ts +29 -0
- package/types/components/utils/UluCondText.vue.d.ts.map +1 -0
- package/types/components/utils/UluConditionalText.vue.d.ts +29 -0
- package/types/components/utils/UluConditionalText.vue.d.ts.map +1 -0
- package/types/components/utils/UluConditionalWrapper.vue.d.ts +20 -0
- package/types/components/utils/UluConditionalWrapper.vue.d.ts.map +1 -0
- package/types/components/utils/UluEmpty.vue.d.ts +3 -0
- package/types/components/utils/UluEmpty.vue.d.ts.map +1 -0
- package/types/components/utils/UluEmptyView.vue.d.ts +3 -0
- package/types/components/utils/UluEmptyView.vue.d.ts.map +1 -0
- package/types/components/utils/UluPlaceholderImage.vue.d.ts +61 -0
- package/types/components/utils/UluPlaceholderImage.vue.d.ts.map +1 -0
- package/types/components/utils/UluPlaceholderText.vue.d.ts +24 -0
- package/types/components/utils/UluPlaceholderText.vue.d.ts.map +1 -0
- package/types/components/utils/UluRouteAnnouncer.vue.d.ts +63 -0
- package/types/components/utils/UluRouteAnnouncer.vue.d.ts.map +1 -0
- package/types/components/utils/UluSanityRichText.vue.d.ts +15 -0
- package/types/components/utils/UluSanityRichText.vue.d.ts.map +1 -0
- package/types/components/visualizations/UluAnimateNumber.vue.d.ts +16 -0
- package/types/components/visualizations/UluAnimateNumber.vue.d.ts.map +1 -0
- package/types/components/visualizations/UluProgressBar.vue.d.ts +66 -0
- package/types/components/visualizations/UluProgressBar.vue.d.ts.map +1 -0
- package/types/components/visualizations/UluProgressCircle.vue.d.ts +48 -0
- package/types/components/visualizations/UluProgressCircle.vue.d.ts.map +1 -0
- package/types/composables/useBreakpointManager.d.ts +1 -1
- package/types/composables/useBreakpointManager.d.ts.map +1 -1
- package/types/composables/useDocumentTitle.d.ts +4 -4
- package/types/composables/useDocumentTitle.d.ts.map +1 -1
- package/types/composables/useIcon.d.ts +1 -1
- package/types/composables/useIcon.d.ts.map +1 -1
- package/types/composables/useModifiers.d.ts +1 -1
- package/types/composables/useModifiers.d.ts.map +1 -1
- package/types/composables/useWindowResize.d.ts +1 -1
- package/types/composables/useWindowResize.d.ts.map +1 -1
- package/types/plugins/core/index.d.ts.map +1 -1
- package/types/plugins/modals/UluModalsDisplay.vue.d.ts +14 -0
- package/types/plugins/modals/UluModalsDisplay.vue.d.ts.map +1 -0
- package/types/plugins/modals/api.d.ts +7 -4
- package/types/plugins/modals/api.d.ts.map +1 -1
- package/types/plugins/popovers/UluPopover.vue.d.ts +53 -0
- package/types/plugins/popovers/UluPopover.vue.d.ts.map +1 -0
- package/types/plugins/popovers/UluTooltipDisplay.vue.d.ts +3 -0
- package/types/plugins/popovers/UluTooltipDisplay.vue.d.ts.map +1 -0
- package/types/plugins/popovers/UluTooltipPopover.vue.d.ts +3 -0
- package/types/plugins/popovers/UluTooltipPopover.vue.d.ts.map +1 -0
- package/types/plugins/popovers/defaults.d.ts +2 -2
- package/types/plugins/popovers/defaults.d.ts.map +1 -1
- package/types/plugins/popovers/manager.d.ts +50 -6
- package/types/plugins/popovers/manager.d.ts.map +1 -1
- package/types/plugins/popovers/useFollow.d.ts +4 -4
- package/types/plugins/popovers/useFollow.d.ts.map +1 -1
- package/types/plugins/toast/UluToast.vue.d.ts +52 -0
- package/types/plugins/toast/UluToast.vue.d.ts.map +1 -0
- package/types/plugins/toast/UluToastDisplay.vue.d.ts +13 -0
- package/types/plugins/toast/UluToastDisplay.vue.d.ts.map +1 -0
- package/types/plugins/toast/defaults.d.ts +39 -2
- package/types/plugins/toast/store.d.ts +65 -2
- package/types/plugins/toast/store.d.ts.map +1 -1
- package/types/utils/dom.d.ts +1 -1
- package/types/utils/dom.d.ts.map +1 -1
- package/types/utils/router.d.ts +15 -15
- package/types/utils/router.d.ts.map +1 -1
|
@@ -1,6 +1,74 @@
|
|
|
1
1
|
import { ref, computed, watch } from 'vue';
|
|
2
2
|
import Fuse from 'fuse.js';
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* Helper function to create a union of multiple Sets.
|
|
6
|
+
* @param {Array<Set>} sets - An array of sets to unify.
|
|
7
|
+
* @returns {Set} A new set containing all unique items from the input sets.
|
|
8
|
+
*/
|
|
9
|
+
function unionSets(sets) {
|
|
10
|
+
const union = new Set();
|
|
11
|
+
for (const set of sets) {
|
|
12
|
+
for (const item of set) {
|
|
13
|
+
union.add(item);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
return union;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Helper function to create an intersection of multiple Sets.
|
|
21
|
+
* @param {Array<Set>} sets - An array of sets to intersect.
|
|
22
|
+
* @returns {Set} A new set containing only the items present in all input sets.
|
|
23
|
+
*/
|
|
24
|
+
function intersectSets(sets) {
|
|
25
|
+
if (!sets || sets.length === 0) return new Set();
|
|
26
|
+
// Start with a copy of the first set, which is an optimization if it's the smallest.
|
|
27
|
+
// For better performance, sort sets by size and start with the smallest.
|
|
28
|
+
const sortedSets = sets.sort((a, b) => a.size - b.size);
|
|
29
|
+
const intersection = new Set(sortedSets[0]);
|
|
30
|
+
for (let i = 1; i < sortedSets.length; i++) {
|
|
31
|
+
for (const item of intersection) {
|
|
32
|
+
if (!sortedSets[i].has(item)) {
|
|
33
|
+
intersection.delete(item);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
// If intersection becomes empty, no need to continue.
|
|
37
|
+
if (intersection.size === 0) break;
|
|
38
|
+
}
|
|
39
|
+
return intersection;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Calculates the final set of item indices based on selected facets using the pre-built index.
|
|
44
|
+
* @param {Array<Object>} selected - The array of selected facet groups.
|
|
45
|
+
* @param {Map<String, Set>} index - The inverted index.
|
|
46
|
+
* @param {Set<number>} allItemsSet - A set of all possible item indices.
|
|
47
|
+
* @returns {Set} A set of indices for the items that match the filters.
|
|
48
|
+
*/
|
|
49
|
+
function getFilteredSetFromIndex(selected, index, allItemsSet) {
|
|
50
|
+
if (!selected || selected.length === 0) {
|
|
51
|
+
return allItemsSet;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
const groupSets = selected.map(group => {
|
|
55
|
+
const childSets = group.children.map(child => {
|
|
56
|
+
const key = `${group.uid}:${child.uid}`;
|
|
57
|
+
return index.get(key) || new Set();
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
// For 'all' (AND), intersect the sets within the group.
|
|
61
|
+
if (group.match === 'all') {
|
|
62
|
+
return intersectSets(childSets);
|
|
63
|
+
}
|
|
64
|
+
// For 'some' (OR), union the sets within the group.
|
|
65
|
+
return unionSets(childSets);
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
// Intersect the results from each group.
|
|
69
|
+
return intersectSets(groupSets);
|
|
70
|
+
}
|
|
71
|
+
|
|
4
72
|
/**
|
|
5
73
|
* Generates facet groups and their possible values from a list of items.
|
|
6
74
|
* @param {Array<Object>} allItems - The full list of items.
|
|
@@ -54,6 +122,7 @@ function generateInitialFacets(allItems, facetFields) {
|
|
|
54
122
|
* @param {Object} [options.searchOptions={}] - Configuration options for Fuse.js.
|
|
55
123
|
* @param {Function} [options.getItemFacet] - A function to retrieve facet information from an item. Should always return an array of values.
|
|
56
124
|
* @param {Function} [options.getSortValue] - A function to get the value to sort by from an item.
|
|
125
|
+
* @param {String} [options.countMode='none'] - The mode for calculating facet counts. Can be 'none', 'simple', or 'intuitive'.
|
|
57
126
|
*/
|
|
58
127
|
export function useFacets(allItems, options = {}) {
|
|
59
128
|
const defaultGetItemFacet = (item, uid) => {
|
|
@@ -120,6 +189,37 @@ export function useFacets(allItems, options = {}) {
|
|
|
120
189
|
...extraSortTypes
|
|
121
190
|
}));
|
|
122
191
|
|
|
192
|
+
const facetIndex = computed(() => {
|
|
193
|
+
const index = new Map();
|
|
194
|
+
// Depend on searchedItems to re-build when search changes.
|
|
195
|
+
const items = searchedItems.value;
|
|
196
|
+
if (!items || !facetFields) return index;
|
|
197
|
+
|
|
198
|
+
// Create a map of getters for efficiency inside the loop.
|
|
199
|
+
const getters = new Map(facetFields.map(group => {
|
|
200
|
+
const getValue = group.getValue || (item => item[group.uid]);
|
|
201
|
+
return [group.uid, getValue];
|
|
202
|
+
}));
|
|
203
|
+
|
|
204
|
+
for (let i = 0; i < items.length; i++) {
|
|
205
|
+
const item = items[i];
|
|
206
|
+
for (const group of facetFields) {
|
|
207
|
+
const getValue = getters.get(group.uid);
|
|
208
|
+
const value = getValue(item);
|
|
209
|
+
const values = Array.isArray(value) ? value : (value ? [value] : []);
|
|
210
|
+
|
|
211
|
+
for (const v of values) {
|
|
212
|
+
const key = `${group.uid}:${v}`;
|
|
213
|
+
if (!index.has(key)) {
|
|
214
|
+
index.set(key, new Set());
|
|
215
|
+
}
|
|
216
|
+
index.get(key).add(i);
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
return index;
|
|
221
|
+
});
|
|
222
|
+
|
|
123
223
|
const searchOptions = computed(() => ({
|
|
124
224
|
shouldSort: true,
|
|
125
225
|
keys: ["title", "label", "description", "author"],
|
|
@@ -138,7 +238,6 @@ export function useFacets(allItems, options = {}) {
|
|
|
138
238
|
const selected = [];
|
|
139
239
|
facets.value.forEach((group) => {
|
|
140
240
|
const selectedChildren = group.children.filter(child => child.selected);
|
|
141
|
-
group.selectedCount = selectedChildren.length;
|
|
142
241
|
if (selectedChildren.length > 0) {
|
|
143
242
|
selected.push({ ...group, children: selectedChildren });
|
|
144
243
|
}
|
|
@@ -147,7 +246,23 @@ export function useFacets(allItems, options = {}) {
|
|
|
147
246
|
});
|
|
148
247
|
|
|
149
248
|
const filteredItems = computed(() => {
|
|
150
|
-
|
|
249
|
+
if (!selectedFacets.value.length) {
|
|
250
|
+
return searchedItems.value;
|
|
251
|
+
}
|
|
252
|
+
const index = facetIndex.value;
|
|
253
|
+
// This check is important because the index might not be ready on the first render.
|
|
254
|
+
if (index.size === 0 && searchedItems.value.length > 0 && facetFields?.length > 0) {
|
|
255
|
+
return [];
|
|
256
|
+
}
|
|
257
|
+
const allItemsSet = new Set(searchedItems.value.map((_, i) => i));
|
|
258
|
+
const filteredIndexSet = getFilteredSetFromIndex(selectedFacets.value, index, allItemsSet);
|
|
259
|
+
|
|
260
|
+
const result = [];
|
|
261
|
+
// Using a direct loop for performance.
|
|
262
|
+
for (const i of filteredIndexSet) {
|
|
263
|
+
result.push(searchedItems.value[i]);
|
|
264
|
+
}
|
|
265
|
+
return result;
|
|
151
266
|
});
|
|
152
267
|
|
|
153
268
|
const displayItems = computed(() => {
|
|
@@ -159,27 +274,12 @@ export function useFacets(allItems, options = {}) {
|
|
|
159
274
|
});
|
|
160
275
|
|
|
161
276
|
// --- Methods ---
|
|
162
|
-
function getFilteredItems(items, selected) {
|
|
163
|
-
if (!selected.length) return items;
|
|
164
|
-
return items.filter(item => {
|
|
165
|
-
return selected.every(group => {
|
|
166
|
-
const itemFacetValues = getItemFacet(item, group.uid);
|
|
167
|
-
if (itemFacetValues && itemFacetValues.length) {
|
|
168
|
-
if (group.match === 'all') {
|
|
169
|
-
return group.children.every(facet => itemFacetValues.includes(facet.uid));
|
|
170
|
-
}
|
|
171
|
-
return group.children.some(facet => itemFacetValues.includes(facet.uid));
|
|
172
|
-
}
|
|
173
|
-
return false;
|
|
174
|
-
});
|
|
175
|
-
});
|
|
176
|
-
}
|
|
177
|
-
|
|
178
277
|
function clearFilters() {
|
|
179
278
|
facets.value.forEach(group => {
|
|
180
279
|
if (group.children) {
|
|
181
280
|
group.children.forEach(child => child.selected = false);
|
|
182
281
|
}
|
|
282
|
+
group.selectedCount = 0;
|
|
183
283
|
});
|
|
184
284
|
}
|
|
185
285
|
|
|
@@ -197,12 +297,19 @@ export function useFacets(allItems, options = {}) {
|
|
|
197
297
|
if (facet) {
|
|
198
298
|
facet.selected = selected;
|
|
199
299
|
}
|
|
300
|
+
// Recalculate selectedCount for the group
|
|
301
|
+
group.selectedCount = group.children.filter(c => c.selected).length;
|
|
200
302
|
}
|
|
201
303
|
}
|
|
202
304
|
|
|
203
305
|
// --- Watchers ---
|
|
204
306
|
watch(generatedFacets, (newGeneratedFacets) => {
|
|
205
|
-
|
|
307
|
+
const newFacets = createFacets(initialFacets || newGeneratedFacets);
|
|
308
|
+
// Calculate initial counts
|
|
309
|
+
newFacets.forEach(group => {
|
|
310
|
+
group.selectedCount = group.children.filter(c => c.selected).length;
|
|
311
|
+
});
|
|
312
|
+
facets.value = newFacets;
|
|
206
313
|
}, { immediate: true });
|
|
207
314
|
|
|
208
315
|
watch([selectedFacets, searchedItems], ([currentSelected, currentSearchedItems], [prevSelected, prevSearchedItems]) => {
|
|
@@ -223,33 +330,52 @@ export function useFacets(allItems, options = {}) {
|
|
|
223
330
|
});
|
|
224
331
|
});
|
|
225
332
|
} else if (countMode === 'intuitive') {
|
|
333
|
+
const index = facetIndex.value;
|
|
334
|
+
if (index.size === 0 && searchedItems.value.length > 0 && facetFields?.length > 0) {
|
|
335
|
+
// Index might not be ready yet.
|
|
336
|
+
return;
|
|
337
|
+
}
|
|
338
|
+
const allItemsSet = new Set(searchedItems.value.map((_, i) => i));
|
|
339
|
+
const currentFilteredSet = getFilteredSetFromIndex(currentSelected, index, allItemsSet);
|
|
340
|
+
|
|
226
341
|
facets.value.forEach(group => {
|
|
227
342
|
group.children.forEach(child => {
|
|
228
|
-
const
|
|
229
|
-
const
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
if (
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
343
|
+
const key = `${group.uid}:${child.uid}`;
|
|
344
|
+
const childSet = index.get(key) || new Set();
|
|
345
|
+
|
|
346
|
+
if (child.selected) {
|
|
347
|
+
// --- Logic for already-selected facets (now performant) ---
|
|
348
|
+
if (group.multiple) {
|
|
349
|
+
// This is the intersection of currently filtered items and items with this facet value.
|
|
350
|
+
const intersection = intersectSets([currentFilteredSet, childSet]);
|
|
351
|
+
child.count = intersection.size;
|
|
352
|
+
} else {
|
|
353
|
+
// For single-select, the count is just the total number of filtered items.
|
|
354
|
+
child.count = currentFilteredSet.size;
|
|
239
355
|
}
|
|
240
|
-
tempChild.selected = true;
|
|
241
356
|
} else {
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
357
|
+
// --- Logic for un-selected facets (now without deep clone) ---
|
|
358
|
+
const tempSelected = [];
|
|
359
|
+
for (const g of currentSelected) {
|
|
360
|
+
tempSelected.push({ ...g, children: [...g.children] });
|
|
361
|
+
}
|
|
362
|
+
|
|
363
|
+
let groupInTemp = tempSelected.find(g => g.uid === group.uid);
|
|
364
|
+
|
|
365
|
+
if (!groupInTemp) {
|
|
366
|
+
groupInTemp = { ...group, children: [] };
|
|
367
|
+
tempSelected.push(groupInTemp);
|
|
368
|
+
}
|
|
369
|
+
|
|
370
|
+
if (group.multiple) {
|
|
371
|
+
groupInTemp.children.push(child);
|
|
372
|
+
} else {
|
|
373
|
+
groupInTemp.children = [child];
|
|
245
374
|
}
|
|
246
|
-
|
|
247
|
-
|
|
375
|
+
|
|
376
|
+
const finalSet = getFilteredSetFromIndex(tempSelected, index, allItemsSet);
|
|
377
|
+
child.count = finalSet.size;
|
|
248
378
|
}
|
|
249
|
-
|
|
250
|
-
const tempSelected = tempFacets.map(g => ({...g, children: g.children.filter(c => c.selected)})).filter(g => g.children.length > 0);
|
|
251
|
-
const resultItems = getFilteredItems(currentSearchedItems, tempSelected);
|
|
252
|
-
child.count = resultItems.length;
|
|
253
379
|
});
|
|
254
380
|
});
|
|
255
381
|
}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
export { useFacets } from './facets/useFacets.js';
|
|
2
|
+
export { default as UluFacetsActiveFilters } from './facets/UluFacetsActiveFilters.vue';
|
|
2
3
|
export { default as UluFacetsFilterLists } from './facets/UluFacetsFilterLists.vue';
|
|
4
|
+
export { default as UluFacetsFilterAccordions } from './facets/UluFacetsFilterAccordions.vue';
|
|
3
5
|
export { default as UluFacetsFilterPopovers } from './facets/UluFacetsFilterPopovers.vue';
|
|
4
6
|
export { default as UluFacetsFilterSelects } from './facets/UluFacetsFilterSelects.vue';
|
|
5
7
|
export { default as UluFacetsHeaderLayout } from './facets/UluFacetsHeaderLayout.vue';
|
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
@click="previous"
|
|
51
51
|
:disabled="!canScrollLeft"
|
|
52
52
|
>
|
|
53
|
-
<UluIcon class="slideshow__control-icon" icon="type:
|
|
53
|
+
<UluIcon class="slideshow__control-icon" icon="type:previous"/>
|
|
54
54
|
</button>
|
|
55
55
|
</li>
|
|
56
56
|
<li class="slideshow__controls-item slideshow__controls-item--next">
|
|
@@ -60,7 +60,7 @@
|
|
|
60
60
|
@click="next"
|
|
61
61
|
:disabled="!canScrollRight"
|
|
62
62
|
>
|
|
63
|
-
<UluIcon class="slideshow__control-icon" icon="type:
|
|
63
|
+
<UluIcon class="slideshow__control-icon" icon="type:next" />
|
|
64
64
|
</button>
|
|
65
65
|
</li>
|
|
66
66
|
</ul>
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<component v-if="!unwrapped" :is="is">
|
|
3
|
+
<slot></slot>
|
|
4
|
+
</component>
|
|
5
|
+
<template v-else>
|
|
6
|
+
<slot></slot>
|
|
7
|
+
</template>
|
|
8
|
+
</template>
|
|
9
|
+
|
|
10
|
+
<script setup>
|
|
11
|
+
defineProps({
|
|
12
|
+
/**
|
|
13
|
+
* The underlying component or HTML tag to render.
|
|
14
|
+
* Can be a string like 'div' or an imported component object.
|
|
15
|
+
*/
|
|
16
|
+
is: {
|
|
17
|
+
type: [String, Object, Function], // Can be a string or a component definition
|
|
18
|
+
default: 'div' // A sensible default for a wrapper
|
|
19
|
+
},
|
|
20
|
+
/**
|
|
21
|
+
* If true, the wrapper will not be rendered and the content
|
|
22
|
+
* will be output directly.
|
|
23
|
+
*/
|
|
24
|
+
unwrapped: {
|
|
25
|
+
type: Boolean,
|
|
26
|
+
default: false
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
</script>
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
props: {
|
|
27
27
|
/**
|
|
28
28
|
* Allow user to bypass this functionality
|
|
29
|
-
* - Function should return true if the page should be
|
|
29
|
+
* - Function should return true if the page should be announced
|
|
30
30
|
* - Function is passed (to, from, $route) => {}
|
|
31
31
|
* - to/from are path strings
|
|
32
32
|
*/
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<UluConditionalWrapper
|
|
3
|
+
v-if="content?.length"
|
|
4
|
+
class="wysiwyg"
|
|
5
|
+
:unwrapped="noWrapper"
|
|
6
|
+
>
|
|
7
|
+
<PortableText :value="content" :components="portableComponents"/>
|
|
8
|
+
</UluConditionalWrapper>
|
|
9
|
+
</template>
|
|
10
|
+
<script setup>
|
|
11
|
+
import { h } from "vue";
|
|
12
|
+
import { PortableText } from '@portabletext/vue';
|
|
13
|
+
import UluConditionalWrapper from './UluConditionalWrapper.vue';
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* A component to render Sanity's Portable Text format.
|
|
17
|
+
* It requires the '@portabletext/vue' package to be installed by the consumer.
|
|
18
|
+
*/
|
|
19
|
+
defineProps({
|
|
20
|
+
/**
|
|
21
|
+
* The array of Portable Text blocks to render.
|
|
22
|
+
*/
|
|
23
|
+
content: Array,
|
|
24
|
+
/**
|
|
25
|
+
* If true, the output will not be wrapped in a div with the 'wysiwyg' class.
|
|
26
|
+
*/
|
|
27
|
+
noWrapper: {
|
|
28
|
+
type: Boolean,
|
|
29
|
+
default: false
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
const portableComponents = {
|
|
34
|
+
types: {
|
|
35
|
+
image: ({ value }) => h('img', {
|
|
36
|
+
src: `${ value.imageUrl }?max-w=1100&fit=crop`,
|
|
37
|
+
alt: value.imageAlt
|
|
38
|
+
}),
|
|
39
|
+
},
|
|
40
|
+
};
|
|
41
|
+
</script>
|
|
@@ -15,6 +15,7 @@ const defaults = {
|
|
|
15
15
|
success: "fas fa-circle-check",
|
|
16
16
|
externalLink: "fas fa-arrow-up-right-from-square",
|
|
17
17
|
close: "fas fa-xmark",
|
|
18
|
+
remove: "fas fa-xmark",
|
|
18
19
|
expand: "fas fa-plus",
|
|
19
20
|
collapse: "fas fa-minus",
|
|
20
21
|
resizeHorizontal: "fas fa-grip-lines-vertical",
|
|
@@ -24,8 +25,8 @@ const defaults = {
|
|
|
24
25
|
pathSeparator: "fas fa-chevron-right",
|
|
25
26
|
image: "fas fa-image",
|
|
26
27
|
file: "fas fa-file",
|
|
27
|
-
|
|
28
|
-
|
|
28
|
+
previous: "fas fa-chevron-left",
|
|
29
|
+
next: "fas fa-chevron-right",
|
|
29
30
|
dropdownExpand: "fas fa-caret-down"
|
|
30
31
|
}
|
|
31
32
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ulu/frontend-vue",
|
|
3
|
-
"version": "0.1.1-beta.
|
|
3
|
+
"version": "0.1.1-beta.21",
|
|
4
4
|
"description": "A modular and tree-shakeable Vue 3 component library for the Ulu frontend",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"files": [
|
|
@@ -14,10 +14,13 @@
|
|
|
14
14
|
"import": "./lib/index.js",
|
|
15
15
|
"types": "./types/index.d.ts"
|
|
16
16
|
},
|
|
17
|
+
"./*": {
|
|
18
|
+
"import": "./lib/*",
|
|
19
|
+
"types": "./types/*"
|
|
20
|
+
},
|
|
17
21
|
"./dist": {
|
|
18
22
|
"import": "./dist/frontend-vue.js"
|
|
19
23
|
},
|
|
20
|
-
"./*": "./lib/*",
|
|
21
24
|
"./scss": "./lib/_index.scss"
|
|
22
25
|
},
|
|
23
26
|
"types": "./types/index.d.ts",
|
|
@@ -36,7 +39,7 @@
|
|
|
36
39
|
"dev": "storybook dev -p 6006",
|
|
37
40
|
"docs:build": "storybook build -o docs",
|
|
38
41
|
"build": "vite build",
|
|
39
|
-
"types": "
|
|
42
|
+
"types": "vue-tsc",
|
|
40
43
|
"deploy": "npm run types && npm run build && npm run docs:build",
|
|
41
44
|
"update-contexts": "rm -rf .ctx && mkdir -p .ctx/frontend && cp -R node_modules/@ulu/frontend/scss node_modules/@ulu/frontend/js .ctx/frontend/"
|
|
42
45
|
},
|
|
@@ -58,14 +61,15 @@
|
|
|
58
61
|
},
|
|
59
62
|
"homepage": "https://github.com/Jscherbe/frontend-vue#readme",
|
|
60
63
|
"peerDependencies": {
|
|
64
|
+
"@formkit/auto-animate": "^0.9.0",
|
|
61
65
|
"@headlessui/vue": "^1.7.23",
|
|
62
|
-
"@ulu/frontend": "^0.1.0-beta.
|
|
66
|
+
"@ulu/frontend": "^0.1.0-beta.122",
|
|
63
67
|
"@unhead/vue": "^2.0.11",
|
|
64
68
|
"vue": "^3.5.17",
|
|
65
|
-
"vue-router": "^4.5.1"
|
|
66
|
-
"@formkit/auto-animate" : "^0.9.0"
|
|
69
|
+
"vue-router": "^4.5.1"
|
|
67
70
|
},
|
|
68
71
|
"optionalDependencies": {
|
|
72
|
+
"@portabletext/vue": "^1.0.14",
|
|
69
73
|
"fuse.js": "^6.6.2",
|
|
70
74
|
"gsap": "^3.13.0",
|
|
71
75
|
"vue3-dropzone": "^2.2.1"
|
|
@@ -76,6 +80,7 @@
|
|
|
76
80
|
"lodash-es": "^4.17.21"
|
|
77
81
|
},
|
|
78
82
|
"devDependencies": {
|
|
83
|
+
"@formkit/auto-animate": "^0.9.0",
|
|
79
84
|
"@fortawesome/fontawesome-svg-core": "^6.7.2",
|
|
80
85
|
"@fortawesome/free-solid-svg-icons": "^6.7.2",
|
|
81
86
|
"@fortawesome/vue-fontawesome": "^3.0.8",
|
|
@@ -83,7 +88,7 @@
|
|
|
83
88
|
"@storybook/addon-essentials": "^9.0.0-alpha.12",
|
|
84
89
|
"@storybook/addon-links": "^9.1.1",
|
|
85
90
|
"@storybook/vue3-vite": "^9.1.1",
|
|
86
|
-
"@ulu/frontend": "^0.1.0-beta.
|
|
91
|
+
"@ulu/frontend": "^0.1.0-beta.122",
|
|
87
92
|
"@unhead/vue": "^2.0.11",
|
|
88
93
|
"@vitejs/plugin-vue": "^6.0.0",
|
|
89
94
|
"ollama": "^0.5.16",
|
|
@@ -95,7 +100,7 @@
|
|
|
95
100
|
"typescript": "^5.3.3",
|
|
96
101
|
"vite": "^7.0.0",
|
|
97
102
|
"vue-router": "^4.5.1",
|
|
98
|
-
"
|
|
103
|
+
"vue-tsc": "^3.0.6"
|
|
99
104
|
},
|
|
100
105
|
"volta": {
|
|
101
106
|
"node": "22.17.0"
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
declare const _default: __VLS_WithSlots<typeof __VLS_component, __VLS_Slots>;
|
|
2
|
+
export default _default;
|
|
3
|
+
type __VLS_WithSlots<T, S> = T & (new () => {
|
|
4
|
+
$slots: S;
|
|
5
|
+
});
|
|
6
|
+
declare const __VLS_component: import("vue").DefineComponent<{}, {
|
|
7
|
+
$emit: typeof emit;
|
|
8
|
+
$props: Partial<typeof props>;
|
|
9
|
+
startOpen: boolean;
|
|
10
|
+
classes: Record<string, any>;
|
|
11
|
+
animate: boolean | Record<string, any>;
|
|
12
|
+
triggerTextElement: string;
|
|
13
|
+
triggerText?: string | undefined;
|
|
14
|
+
modifiers?: string | unknown[] | undefined;
|
|
15
|
+
modelValue?: boolean | undefined;
|
|
16
|
+
}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
17
|
+
type __VLS_Slots = {
|
|
18
|
+
trigger?: ((props: {
|
|
19
|
+
isOpen: boolean | undefined;
|
|
20
|
+
}) => any) | undefined;
|
|
21
|
+
} & {
|
|
22
|
+
icon?: ((props: {
|
|
23
|
+
isOpen: boolean | undefined;
|
|
24
|
+
}) => any) | undefined;
|
|
25
|
+
} & {
|
|
26
|
+
default?: ((props: {
|
|
27
|
+
isOpen: true;
|
|
28
|
+
toggle: typeof toggle;
|
|
29
|
+
}) => any) | undefined;
|
|
30
|
+
};
|
|
31
|
+
declare const emit: (event: "update:modelValue", ...args: any[]) => void;
|
|
32
|
+
declare const props: {
|
|
33
|
+
readonly startOpen: boolean;
|
|
34
|
+
readonly classes: Record<string, any>;
|
|
35
|
+
readonly animate: boolean | Record<string, any>;
|
|
36
|
+
readonly triggerTextElement: string;
|
|
37
|
+
readonly triggerText?: string | undefined;
|
|
38
|
+
readonly modifiers?: string | unknown[] | undefined;
|
|
39
|
+
readonly modelValue?: boolean | undefined;
|
|
40
|
+
};
|
|
41
|
+
//# sourceMappingURL=UluAccordion.vue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UluAccordion.vue.d.ts","sourceRoot":"","sources":["../../../lib/components/collapsible/UluAccordion.vue"],"names":[],"mappings":"wBAkSqB,eAAe,CAAC,OAAO,eAAe,EAAE,WAAW,CAAC;;qBAEpD,CAAC,EAAE,CAAC;;;AATzB;WAIkB,OAAO,IAAI;YADV,OAAO,CAAC,OAAO,KAAK,CAAC;;;;;;;;2OAGrC;;;;;;;;;;;;;;;AAjID,yEAAgD;AArDhD;;;;;;;;EAmDG"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
declare const _default: __VLS_WithSlots<typeof __VLS_component, __VLS_Slots>;
|
|
2
|
+
export default _default;
|
|
3
|
+
type __VLS_WithSlots<T, S> = T & (new () => {
|
|
4
|
+
$slots: S;
|
|
5
|
+
});
|
|
6
|
+
declare const __VLS_component: import("vue").DefineComponent<{}, {
|
|
7
|
+
$props: Partial<typeof props>;
|
|
8
|
+
items: unknown[];
|
|
9
|
+
}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
10
|
+
type __VLS_Slots = {
|
|
11
|
+
item?: ((props: {
|
|
12
|
+
item: never;
|
|
13
|
+
index: number;
|
|
14
|
+
}) => any) | undefined;
|
|
15
|
+
};
|
|
16
|
+
declare const props: {
|
|
17
|
+
readonly items: unknown[];
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=UluAccordionGroup.vue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UluAccordionGroup.vue.d.ts","sourceRoot":"","sources":["../../../lib/components/collapsible/UluAccordionGroup.vue"],"names":[],"mappings":"wBAwKqB,eAAe,CAAC,OAAO,eAAe,EAAE,WAAW,CAAC;;qBAEpD,CAAC,EAAE,CAAC;;;AARzB;YAGmB,OAAO,CAAC,OAAO,KAAK,CAAC;;2OAErC;;;;;;;AA5GH;;EASG"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
declare const _default: __VLS_WithSlots<typeof __VLS_component, __VLS_Slots>;
|
|
2
|
+
export default _default;
|
|
3
|
+
type __VLS_WithSlots<T, S> = T & (new () => {
|
|
4
|
+
$slots: S;
|
|
5
|
+
});
|
|
6
|
+
declare const __VLS_component: import("vue").DefineComponent<{}, {
|
|
7
|
+
$emit: typeof emit;
|
|
8
|
+
$props: Partial<typeof props>;
|
|
9
|
+
startOpen: boolean;
|
|
10
|
+
classes: Record<string, any>;
|
|
11
|
+
animate: boolean | Record<string, any>;
|
|
12
|
+
closeOnEscape: boolean;
|
|
13
|
+
triggerText?: string | undefined;
|
|
14
|
+
modelValue?: boolean | undefined;
|
|
15
|
+
}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
16
|
+
type __VLS_Slots = {
|
|
17
|
+
trigger?: ((props: {
|
|
18
|
+
isOpen: boolean | undefined;
|
|
19
|
+
}) => any) | undefined;
|
|
20
|
+
} & {
|
|
21
|
+
default?: ((props: {
|
|
22
|
+
isOpen: true;
|
|
23
|
+
toggle: typeof toggle;
|
|
24
|
+
}) => any) | undefined;
|
|
25
|
+
};
|
|
26
|
+
declare const emit: (event: "update:modelValue", ...args: any[]) => void;
|
|
27
|
+
declare const props: {
|
|
28
|
+
readonly startOpen: boolean;
|
|
29
|
+
readonly classes: Record<string, any>;
|
|
30
|
+
readonly animate: boolean | Record<string, any>;
|
|
31
|
+
readonly closeOnEscape: boolean;
|
|
32
|
+
readonly triggerText?: string | undefined;
|
|
33
|
+
readonly modelValue?: boolean | undefined;
|
|
34
|
+
};
|
|
35
|
+
/**
|
|
36
|
+
* Function used to toggle the collapsible
|
|
37
|
+
*/
|
|
38
|
+
declare function toggle(): void;
|
|
39
|
+
//# sourceMappingURL=UluCollapsible.vue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UluCollapsible.vue.d.ts","sourceRoot":"","sources":["../../../lib/components/collapsible/UluCollapsible.vue"],"names":[],"mappings":"wBA6TqB,eAAe,CAAC,OAAO,eAAe,EAAE,WAAW,CAAC;;qBAEpD,CAAC,EAAE,CAAC;;;AATzB;WAIkB,OAAO,IAAI;YADV,OAAO,CAAC,OAAO,KAAK,CAAC;;;;;;;2OAGrC;;;;;;;;;;;AAxID,yEAAgD;AA9ChD;;;;;;;EA4CG;AAqCH;;GAEG;AACH,gCAEC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
declare const _default: __VLS_WithSlots<typeof __VLS_component, __VLS_Slots>;
|
|
2
|
+
export default _default;
|
|
3
|
+
type __VLS_WithSlots<T, S> = T & (new () => {
|
|
4
|
+
$slots: S;
|
|
5
|
+
});
|
|
6
|
+
declare const __VLS_component: import("vue").DefineComponent<{}, {
|
|
7
|
+
$props: Partial<typeof __VLS_props>;
|
|
8
|
+
popoverClasses: Record<string, any>;
|
|
9
|
+
triggerText?: string | undefined;
|
|
10
|
+
items?: unknown[] | undefined;
|
|
11
|
+
}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
12
|
+
type __VLS_Slots = {
|
|
13
|
+
trigger?: ((props: {
|
|
14
|
+
isOpen: boolean;
|
|
15
|
+
}) => any) | undefined;
|
|
16
|
+
};
|
|
17
|
+
declare const __VLS_props: {
|
|
18
|
+
readonly popoverClasses: Record<string, any>;
|
|
19
|
+
readonly triggerText?: string | undefined;
|
|
20
|
+
readonly items?: unknown[] | undefined;
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=UluDropdown.vue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UluDropdown.vue.d.ts","sourceRoot":"","sources":["../../../lib/components/collapsible/UluDropdown.vue"],"names":[],"mappings":"wBA2JqB,eAAe,CAAC,OAAO,eAAe,EAAE,WAAW,CAAC;;qBAEpD,CAAC,EAAE,CAAC;;;AARzB;YAGmB,OAAO,CAAC,OAAO,WAAW,CAAC;;;;2OAE3C;;;;;;AA5GD;;;;EAkBG"}
|