@myrjfa/ui 1.0.6 → 1.0.8
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/dashboard/app-sidebar.d.ts.map +1 -1
- package/dist/dashboard/app-sidebar.js +31 -5
- package/dist/main/navbar.d.ts.map +1 -1
- package/dist/main/navbar.js +4 -3
- package/dist/misc/filter.d.ts +1 -1
- package/dist/misc/filter.d.ts.map +1 -1
- package/dist/misc/filterBar.d.ts +28 -2
- package/dist/misc/filterBar.d.ts.map +1 -1
- package/dist/misc/filterBar.js +252 -95
- package/dist/misc/sidebar.d.ts.map +1 -1
- package/dist/misc/sidebar.js +1 -1
- package/dist/misc/slider.d.ts +5 -0
- package/dist/misc/slider.d.ts.map +1 -0
- package/dist/misc/slider.js +34 -0
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-sidebar.d.ts","sourceRoot":"","sources":["../../src/dashboard/app-sidebar.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"app-sidebar.d.ts","sourceRoot":"","sources":["../../src/dashboard/app-sidebar.tsx"],"names":[],"mappings":"AAsBA,OAAO,EACL,OAAO,EAIR,MAAM,iBAAiB,CAAA;AAGxB,wBAAgB,UAAU,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,OAAO,CAAC,2CA+I5E"}
|
|
@@ -57,11 +57,20 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
|
57
57
|
}
|
|
58
58
|
return t;
|
|
59
59
|
};
|
|
60
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
61
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
62
|
+
if (ar || !(i in from)) {
|
|
63
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
64
|
+
ar[i] = from[i];
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
68
|
+
};
|
|
60
69
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
61
70
|
import { logoutUser } from "@myrjfa/state/dist/lib/auth";
|
|
62
71
|
import { isLoggedInAtom, userAtom, userLoadingAtom } from "@myrjfa/state/dist/lib/userAtom";
|
|
63
72
|
import { useAtom, useAtomValue, useSetAtom } from "jotai";
|
|
64
|
-
import {
|
|
73
|
+
import { FileText, HelpCircleIcon, Inbox, LayoutDashboardIcon, LogOutIcon, Package, User } from "lucide-react";
|
|
65
74
|
import { useRouter } from "next/navigation";
|
|
66
75
|
import { useEffect } from "react";
|
|
67
76
|
import { NavMain } from "../dashboard/nav-main";
|
|
@@ -87,7 +96,7 @@ export function AppSidebar(_a) {
|
|
|
87
96
|
}, [loading, user, router]);
|
|
88
97
|
// Navigation data
|
|
89
98
|
var navData = {
|
|
90
|
-
navMain: [
|
|
99
|
+
navMain: __spreadArray(__spreadArray(__spreadArray([
|
|
91
100
|
{
|
|
92
101
|
title: "Profile",
|
|
93
102
|
url: user ? "/profile/".concat((_b = user.role) !== null && _b !== void 0 ? _b : "user", "/").concat(user.username) : "#",
|
|
@@ -97,13 +106,30 @@ export function AppSidebar(_a) {
|
|
|
97
106
|
title: "Dashboard",
|
|
98
107
|
url: user ? "/overview/".concat((_c = user.role) !== null && _c !== void 0 ? _c : "user") : "#",
|
|
99
108
|
icon: LayoutDashboardIcon
|
|
100
|
-
}
|
|
109
|
+
}
|
|
110
|
+
], ((user === null || user === void 0 ? void 0 : user.role) === "admin" || (user === null || user === void 0 ? void 0 : user.role) === "host"
|
|
111
|
+
? [
|
|
112
|
+
{
|
|
113
|
+
title: "My Tours",
|
|
114
|
+
url: "/overview/".concat(user.role, "/packages"),
|
|
115
|
+
icon: Package,
|
|
116
|
+
},
|
|
117
|
+
]
|
|
118
|
+
: []), true), ((user === null || user === void 0 ? void 0 : user.role) === "admin" || (user === null || user === void 0 ? void 0 : user.role) === "host"
|
|
119
|
+
? [
|
|
120
|
+
{
|
|
121
|
+
title: "Blogs",
|
|
122
|
+
url: "/overview/".concat(user.role, "/blogs"),
|
|
123
|
+
icon: FileText,
|
|
124
|
+
},
|
|
125
|
+
]
|
|
126
|
+
: []), true), [
|
|
101
127
|
{
|
|
102
128
|
title: "Inbox",
|
|
103
129
|
url: "/inbox",
|
|
104
|
-
icon:
|
|
130
|
+
icon: Inbox
|
|
105
131
|
},
|
|
106
|
-
],
|
|
132
|
+
], false),
|
|
107
133
|
navSecondary: [
|
|
108
134
|
{
|
|
109
135
|
title: "Get Help",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"navbar.d.ts","sourceRoot":"","sources":["../../src/main/navbar.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"navbar.d.ts","sourceRoot":"","sources":["../../src/main/navbar.tsx"],"names":[],"mappings":"AAoBA,UAAU,WAAW;IACnB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,EAAE,IAAY,EAAE,EAAE,WAAW,2CA2P3D"}
|
package/dist/main/navbar.js
CHANGED
|
@@ -40,8 +40,9 @@ import { Popover, PopoverContent, PopoverTrigger } from "@radix-ui/react-popover
|
|
|
40
40
|
import { Separator } from "@radix-ui/react-separator";
|
|
41
41
|
import { logoutUser } from "@myrjfa/state/dist/lib/auth";
|
|
42
42
|
import { isLoggedInAtom, userAtom, userLoadingAtom } from "@myrjfa/state/dist/lib/userAtom";
|
|
43
|
+
import { opportunityTypeOptions } from "@myrjfa/state/dist/lib/models/opportunities/opportunity";
|
|
43
44
|
import { useAtom, useAtomValue } from "jotai";
|
|
44
|
-
import { Globe, Heart, LayoutDashboardIcon, Store, Target, Luggage } from "lucide-react";
|
|
45
|
+
import { ChevronDown, Globe, Heart, LayoutDashboardIcon, Store, Target, Luggage } from "lucide-react";
|
|
45
46
|
import Link from "next/link";
|
|
46
47
|
import { useRouter } from "next/navigation";
|
|
47
48
|
import { useEffect, useState } from "react";
|
|
@@ -111,7 +112,7 @@ export default function Navbar(_a) {
|
|
|
111
112
|
var navItemColor = dark
|
|
112
113
|
? "hover:text-white text-gray-250"
|
|
113
114
|
: "hover:text-foreground text-gray-750";
|
|
114
|
-
return (_jsx("header", { className: "fixed top-0 left-0 z-[100] mx-auto transition-all duration-300 w-full ".concat(navbarBg, " ").concat(textColor, " ").concat(navbarBorder), children: _jsxs("div", { className: "mx-auto flex items-center justify-between gap-10 py-4 px-4 lg:px-8", children: [_jsxs(Link, { href: "/", className: "flex items-center gap-3", children: [_jsxs(Avatar, { className: "ml-2 -mr-4.5", children: [_jsx(AvatarImage, { src: "/images/logoicon.webp" }), _jsxs(AvatarFallback, { children: [(currentUser === null || currentUser === void 0 ? void 0 : currentUser.firstName.charAt(0)) || "D", (currentUser === null || currentUser === void 0 ? void 0 : currentUser.lastName.charAt(0)) || "P"] })] }), _jsx("span", { className: "font-heading text-xl font-bold", children: "rippeaze" })] }), _jsxs("div", { className: "flex items-center gap-2", children: [_jsxs("nav", { className: "hidden md:flex items-center gap-10 justify-end", children: [_jsx(
|
|
115
|
+
return (_jsx("header", { className: "fixed top-0 left-0 z-[100] mx-auto transition-all duration-300 w-full ".concat(navbarBg, " ").concat(textColor, " ").concat(navbarBorder), children: _jsxs("div", { className: "mx-auto flex items-center justify-between gap-10 py-4 px-4 lg:px-8", children: [_jsxs(Link, { href: "/", className: "flex items-center gap-3", children: [_jsxs(Avatar, { className: "ml-2 -mr-4.5", children: [_jsx(AvatarImage, { src: "/images/logoicon.webp" }), _jsxs(AvatarFallback, { children: [(currentUser === null || currentUser === void 0 ? void 0 : currentUser.firstName.charAt(0)) || "D", (currentUser === null || currentUser === void 0 ? void 0 : currentUser.lastName.charAt(0)) || "P"] })] }), _jsx("span", { className: "font-heading text-xl font-bold", children: "rippeaze" })] }), _jsxs("div", { className: "flex items-center gap-2", children: [_jsxs("nav", { className: "hidden md:flex items-center gap-10 justify-end", children: [_jsxs(Popover, { children: [_jsx(PopoverTrigger, { asChild: true, children: _jsxs("button", { className: "flex items-center gap-1 text-sm font-medium cursor-pointer ".concat(navItemColor), children: [_jsx(Target, { className: "h-5 w-5" }), _jsx("span", { children: "Opportunities" }), _jsx(ChevronDown, { className: "h-4 w-4" })] }) }), _jsx(PopoverContent, { className: "w-56 p-2 mt-3 bg-white rounded-lg shadow-lg border", align: "start", sideOffset: 5, children: _jsx("div", { className: "flex flex-col", children: opportunityTypeOptions.map(function (opt) { return (_jsxs(Link, { href: "/opportunities?type=".concat(opt.value), className: "px-3 py-2 text-sm text-gray-700 hover:bg-gray-100 rounded-md flex flex-col", children: [_jsx("span", { className: "font-medium", children: opt.label }), _jsx("span", { className: "text-xs text-gray-500", children: opt.description })] }, opt.value)); }) }) })] }), _jsx(NavItem, { icon: _jsx(Luggage, { className: "h-5 w-5" }), label: "Packages", href: "/packages", className: navItemColor }), _jsx(NavItem, { icon: _jsx(Globe, { className: "h-5 w-5" }), label: "Blogs", href: "/blogs", className: navItemColor }), currentUser ? _jsx(NavItem, { icon: _jsx(Store, { className: "h-5 w-5" }), label: "Become a Partner", href: "/contact", className: navItemColor })
|
|
115
116
|
: _jsx(NavItem, { icon: _jsx(Store, { className: "h-5 w-5" }), label: "Register as Business", href: "/auth/register?role=host", className: navItemColor }), isLoggedIn && _jsx(NotificationBell, { id: (_b = currentUser === null || currentUser === void 0 ? void 0 : currentUser.username) !== null && _b !== void 0 ? _b : null, navItemColor: navItemColor })] }), _jsx("div", { className: "hidden md:flex items-center gap-2", children: _jsxs(Popover, { children: [_jsx(PopoverTrigger, { asChild: true, children: _jsx(Button, { variant: "link", className: "flex w-full gap-1 cursor-pointer", children: _jsxs(Avatar, { className: "ml-5 mr-4.5", children: [_jsx(AvatarImage, { src: (_c = currentUser === null || currentUser === void 0 ? void 0 : currentUser.profilePic) !== null && _c !== void 0 ? _c : "/images/profile_placeholder.webp" }), _jsxs(AvatarFallback, { children: [(currentUser === null || currentUser === void 0 ? void 0 : currentUser.firstName.charAt(0)) || "D", (currentUser === null || currentUser === void 0 ? void 0 : currentUser.lastName.charAt(0)) || "P"] })] }) }) }), _jsx(PopoverContent, { className: "w-full p-0 mt-3 bg-".concat(dark ? "primary" : "white", " rounded-lg shadow-lg"), align: "end", sideOffset: 5, children: _jsxs("div", { className: "py-2 w-full", children: [_jsxs("div", { className: "px-4 py-3 border-b w-full", children: [_jsx("p", { className: "text-sm font-medium", children: (currentUser === null || currentUser === void 0 ? void 0 : currentUser.username) || "Guest" }), _jsx("p", { className: "text-xs text-gray-500", children: (currentUser === null || currentUser === void 0 ? void 0 : currentUser.email) || "user@example.com" })] }), _jsxs("div", { className: "flex flex-col", children: [isLoggedIn ?
|
|
116
117
|
_jsxs(Link, { href: "/profile/".concat((currentUser === null || currentUser === void 0 ? void 0 : currentUser.role) || "user", "/").concat((currentUser === null || currentUser === void 0 ? void 0 : currentUser.username) || "Guest"), className: "w-full py-2 px-4 text-sm text-gray-700 hover:bg-gray-100 flex items-center gap-2", children: [_jsxs(Avatar, { className: "w-4 h-4", children: [_jsx(AvatarImage, { src: (_d = currentUser === null || currentUser === void 0 ? void 0 : currentUser.profilePic) !== null && _d !== void 0 ? _d : "/images/profile_placeholder.webp" }), _jsx(AvatarFallback, { children: "U" })] }), "Profile"] }) :
|
|
117
118
|
_jsxs(Button, { variant: "ghost", onClick: function () { return router.push('/auth/login?role=user'); }, className: "w-full py-2 px-4 text-sm text-gray-700 hover:bg-gray-100 flex items-center gap-2 justify-start", children: [_jsxs(Avatar, { className: "w-4 h-4", children: [_jsx(AvatarImage, { src: "/images/profile_placeholder.webp" }), _jsx(AvatarFallback, { children: "U" })] }), "Login As Volunteer"] }), isLoggedIn && _jsxs(Link, { href: "/overview/".concat((currentUser === null || currentUser === void 0 ? void 0 : currentUser.role) || 'user'), className: "w-full py-2 px-4 text-sm text-gray-700 hover:bg-gray-100 flex items-center gap-2", children: [_jsx(LayoutDashboardIcon, { className: "h-4 w-4" }), "Dashboard"] }), isLoggedIn && ((currentUser === null || currentUser === void 0 ? void 0 : currentUser.role) === "user" || (currentUser === null || currentUser === void 0 ? void 0 : currentUser.role) == null) &&
|
|
@@ -144,7 +145,7 @@ export default function Navbar(_a) {
|
|
|
144
145
|
});
|
|
145
146
|
}); }, className: "w-full py-2 px-4 text-sm text-gray-700 hover:bg-gray-100 flex items-center gap-2 justify-start", children: [_jsxs(Avatar, { className: "w-4 h-4", children: [_jsx(AvatarImage, { src: "/images/profile_placeholder.webp" }), _jsx(AvatarFallback, { children: "H" })] }), "Login As Business"] }), _jsx(Separator, { className: "my-1" }), isLoggedIn && _jsx(Button, { variant: "outline", className: "py-2 mx-2 text-sm text-gray-700 hover:bg-gray-100 justify-center cursor-pointer", onClick: function () {
|
|
146
147
|
logout();
|
|
147
|
-
}, children: "Sign out" })] })] }) })] }) })] }), _jsx(MobileNavbar, { children: _jsx("div", { className: "rounded-b-lg py-4 px-4 shadow-xl ".concat("bg-background", " ").concat(textColor), children: _jsxs("nav", { className: "flex flex-col gap-1 pt-2", children: [
|
|
148
|
+
}, children: "Sign out" })] })] }) })] }) })] }), _jsx(MobileNavbar, { children: _jsx("div", { className: "rounded-b-lg py-4 px-4 shadow-xl ".concat("bg-background", " ").concat(textColor), children: _jsxs("nav", { className: "flex flex-col gap-1 pt-2", children: [_jsxs("div", { className: "flex flex-col", children: [_jsxs("div", { className: "flex items-center gap-2 py-2 px-2 text-muted-foreground", children: [_jsx(Target, { className: "h-5 w-5" }), _jsx("span", { className: "text-sm font-medium", children: "Opportunities" })] }), _jsx("div", { className: "pl-8 flex flex-col gap-1", children: opportunityTypeOptions.map(function (opt) { return (_jsx(Link, { href: "/opportunities?type=".concat(opt.value), className: "py-1.5 px-2 text-sm text-gray-600 hover:text-foreground hover:bg-gray-100 rounded", children: opt.label }, opt.value)); }) })] }), _jsx(MobileNavItem, { icon: _jsx(Luggage, { className: "h-5 w-5" }), label: "Packages", href: "/packages" }), _jsx(MobileNavItem, { icon: _jsx(Globe, { className: "h-5 w-5" }), label: "Blogs", href: "/blogs" }), currentUser ? _jsx(MobileNavItem, { icon: _jsx(Store, { className: "h-5 w-5" }), label: "Become a Partner", href: "/contact" }) :
|
|
148
149
|
_jsx(MobileNavItem, { icon: _jsx(Store, { className: "h-5 w-5" }), label: "Register as Business", href: "/auth/register?role=host" }), isLoggedIn && _jsx(MobileNotificationBell, {}), isLoggedIn && _jsx(MobileNavItem, { icon: _jsx(LayoutDashboardIcon, { className: "h-5 w-5" }), label: "Dashboard", href: "/overview/".concat((currentUser === null || currentUser === void 0 ? void 0 : currentUser.role) || 'user'), className: "md:hidden" }), isLoggedIn && ((currentUser === null || currentUser === void 0 ? void 0 : currentUser.role) === "user" || (currentUser === null || currentUser === void 0 ? void 0 : currentUser.role) == null) &&
|
|
149
150
|
_jsx(MobileNavItem, { icon: _jsx(Heart, { className: "h-5 w-5" }), label: "Favourites", href: "/opportunities/favourites", className: "md:hidden" }), isLoggedIn ? _jsxs(Link, { href: "/profile/".concat((currentUser === null || currentUser === void 0 ? void 0 : currentUser.role) || "user", "/").concat((currentUser === null || currentUser === void 0 ? void 0 : currentUser.username) || "Guest"), className: "flex w-full gap-1 cursor-pointer my-2", children: [_jsxs(Avatar, { className: "w-5 h-5 ml-2", children: [_jsx(AvatarImage, { src: (currentUser === null || currentUser === void 0 ? void 0 : currentUser.profilePic) || "/images/profile_placeholder.webp" }), _jsx(AvatarFallback, { children: "DP" })] }), _jsx(Label, { htmlFor: "username", className: "cursor-pointer text-muted-foreground hover:text-foreground", children: (currentUser === null || currentUser === void 0 ? void 0 : currentUser.username) || "Guest" })] }) :
|
|
150
151
|
_jsxs(Link, { href: "/auth/login", className: "flex w-full gap-1 cursor-pointer my-2", children: [_jsxs(Avatar, { className: "w-5 h-5 ml-2", children: [_jsx(AvatarImage, { src: "/images/profile_placeholder.webp" }), _jsx(AvatarFallback, { children: "U" })] }), _jsx(Label, { htmlFor: "username", className: "cursor-pointer text-muted-foreground hover:text-foreground", children: "Login As Volunteer" })] }), (currentUser === null || currentUser === void 0 ? void 0 : currentUser.role) === "host" ?
|
package/dist/misc/filter.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filter.d.ts","sourceRoot":"","sources":["../../src/misc/filter.tsx"],"names":[],"mappings":"AAsBA,KAAK,WAAW,GAAG;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"filter.d.ts","sourceRoot":"","sources":["../../src/misc/filter.tsx"],"names":[],"mappings":"AAsBA,KAAK,WAAW,GAAG;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACzC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACzC,MAAM,CAAC,EAAE,OAAO,CAAA;CACnB,CAAC;AACF,eAAO,MAAM,WAAW,GAAI,KAAK,MAAM,EAAE,aACwC,CAAC;AAElF,QAAA,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,CAgHjC,CAAC;AAEF,eAAe,MAAM,CAAC"}
|
package/dist/misc/filterBar.d.ts
CHANGED
|
@@ -1,5 +1,31 @@
|
|
|
1
1
|
import { TileProps } from "@myrjfa/state/dist/lib/models/tile";
|
|
2
|
-
export
|
|
2
|
+
export interface FilterOptionConfig {
|
|
3
|
+
label: string;
|
|
4
|
+
type: 'autoComplete' | 'select' | 'range';
|
|
5
|
+
datatype: 'string[]' | 'number' | 'string' | 'range';
|
|
6
|
+
displayName: string;
|
|
7
|
+
options?: readonly {
|
|
8
|
+
value: string;
|
|
9
|
+
label: string;
|
|
10
|
+
description?: string;
|
|
11
|
+
}[];
|
|
12
|
+
rangeUnit?: string;
|
|
13
|
+
rangeMin?: number;
|
|
14
|
+
rangeMax?: number;
|
|
15
|
+
rangeStep?: number;
|
|
16
|
+
rangeInputType?: 'slider' | 'number';
|
|
17
|
+
defaultValue?: string | number | string[] | {
|
|
18
|
+
min: number;
|
|
19
|
+
max: number;
|
|
20
|
+
};
|
|
21
|
+
deriveFromTiles?: keyof TileProps;
|
|
22
|
+
visibility?: 'bar' | 'expanded';
|
|
23
|
+
showForTypes?: string[];
|
|
24
|
+
groupWith?: string;
|
|
25
|
+
}
|
|
26
|
+
export interface FilterBarProps {
|
|
3
27
|
tiles: TileProps[];
|
|
4
|
-
|
|
28
|
+
filterConfig?: FilterOptionConfig[];
|
|
29
|
+
}
|
|
30
|
+
export default function FilterBar({ tiles, filterConfig }: FilterBarProps): import("react/jsx-runtime").JSX.Element;
|
|
5
31
|
//# sourceMappingURL=filterBar.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filterBar.d.ts","sourceRoot":"","sources":["../../src/misc/filterBar.tsx"],"names":[],"mappings":"AASA,OAAO,EAAE,SAAS,EAAE,MAAM,oCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"filterBar.d.ts","sourceRoot":"","sources":["../../src/misc/filterBar.tsx"],"names":[],"mappings":"AASA,OAAO,EAAE,SAAS,EAAE,MAAM,oCAAoC,CAAC;AAK/D,MAAM,WAAW,kBAAkB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,cAAc,GAAG,QAAQ,GAAG,OAAO,CAAC;IAC1C,QAAQ,EAAE,UAAU,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC;IACrD,WAAW,EAAE,MAAM,CAAC;IAEpB,OAAO,CAAC,EAAE,SAAS;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAE5E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAErC,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IAEzE,eAAe,CAAC,EAAE,MAAM,SAAS,CAAC;IAElC,UAAU,CAAC,EAAE,KAAK,GAAG,UAAU,CAAC;IAEhC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IAExB,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,cAAc;IAC3B,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,YAAY,CAAC,EAAE,kBAAkB,EAAE,CAAC;CACvC;AA+eD,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE,cAAc,2CAMxE"}
|
package/dist/misc/filterBar.js
CHANGED
|
@@ -27,78 +27,142 @@ import { Suspense, useEffect, useState } from "react";
|
|
|
27
27
|
import { Button } from "./button";
|
|
28
28
|
import Filter from "./filter";
|
|
29
29
|
import { Sheet, SheetContent, SheetTitle, SheetTrigger } from "./sheet";
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
{ label: "
|
|
30
|
+
import { Slider } from "./slider";
|
|
31
|
+
// Default filter options (backward compatible)
|
|
32
|
+
var defaultFilterOptions = [
|
|
33
|
+
{ label: "destination", type: "autoComplete", datatype: "string[]", displayName: "Destination", deriveFromTiles: 'location', visibility: 'bar' },
|
|
34
|
+
{ label: "skill", type: "autoComplete", datatype: "string[]", displayName: "Skills", deriveFromTiles: 'skills', visibility: 'bar' },
|
|
35
|
+
{ label: "rating", type: "select", datatype: "number", displayName: "Rating", visibility: 'expanded' },
|
|
34
36
|
];
|
|
35
37
|
function FilterBarComponent(_a) {
|
|
36
|
-
var tiles = _a.tiles;
|
|
38
|
+
var tiles = _a.tiles, _b = _a.filterConfig, filterConfig = _b === void 0 ? defaultFilterOptions : _b;
|
|
37
39
|
var searchParams = useSearchParams();
|
|
38
|
-
var newParams = new URLSearchParams(searchParams);
|
|
39
40
|
var pathname = usePathname();
|
|
40
41
|
var router = useRouter();
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
42
|
+
// Initialize filter state from config
|
|
43
|
+
var getInitialFilterState = function () {
|
|
44
|
+
var state = {};
|
|
45
|
+
filterConfig.forEach(function (opt) {
|
|
46
|
+
if (opt.datatype === 'string[]') {
|
|
47
|
+
state[opt.label] = opt.defaultValue || [];
|
|
48
|
+
}
|
|
49
|
+
else if (opt.datatype === 'number') {
|
|
50
|
+
state[opt.label] = opt.defaultValue || 0;
|
|
51
|
+
}
|
|
52
|
+
else if (opt.datatype === 'range') {
|
|
53
|
+
state[opt.label] = opt.defaultValue || { min: 0, max: 100 };
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
state[opt.label] = opt.defaultValue || '';
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
return state;
|
|
60
|
+
};
|
|
61
|
+
var _c = useState(getInitialFilterState), filterParam = _c[0], setFilterParam = _c[1];
|
|
48
62
|
useEffect(function () {
|
|
49
|
-
var
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
63
|
+
var newState = {};
|
|
64
|
+
filterConfig.forEach(function (opt) {
|
|
65
|
+
var param = searchParams.get(opt.label);
|
|
66
|
+
if (opt.datatype === 'string[]') {
|
|
67
|
+
newState[opt.label] = (param === null || param === void 0 ? void 0 : param.split(',').filter(Boolean)) || opt.defaultValue || [];
|
|
68
|
+
}
|
|
69
|
+
else if (opt.datatype === 'number') {
|
|
70
|
+
newState[opt.label] = parseInt(param || "0", 10) || opt.defaultValue || 0;
|
|
71
|
+
}
|
|
72
|
+
else if (opt.datatype === 'range') {
|
|
73
|
+
var minParam = searchParams.get("".concat(opt.label, "Min"));
|
|
74
|
+
var maxParam = searchParams.get("".concat(opt.label, "Max"));
|
|
75
|
+
var defaultRange = opt.defaultValue || { min: 0, max: 100 };
|
|
76
|
+
newState[opt.label] = {
|
|
77
|
+
min: minParam ? parseInt(minParam, 10) : defaultRange.min,
|
|
78
|
+
max: maxParam ? parseInt(maxParam, 10) : defaultRange.max
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
newState[opt.label] = param || opt.defaultValue || '';
|
|
83
|
+
}
|
|
61
84
|
});
|
|
62
|
-
|
|
85
|
+
setFilterParam(newState);
|
|
86
|
+
}, [searchParams, filterConfig]);
|
|
63
87
|
var changeMultiParams = function (params) {
|
|
88
|
+
var newParams = new URLSearchParams(searchParams);
|
|
64
89
|
newParams.set('page', '1');
|
|
65
90
|
Object.entries(params).forEach(function (_a) {
|
|
66
91
|
var key = _a[0], value = _a[1];
|
|
67
|
-
if (
|
|
92
|
+
if (typeof value === 'object' && 'min' in value && 'max' in value) {
|
|
93
|
+
// Range type - only set if different from default
|
|
94
|
+
var config = filterConfig.find(function (f) { return f.label === key; });
|
|
95
|
+
var defaultRange = (config === null || config === void 0 ? void 0 : config.defaultValue) || { min: 0, max: 100 };
|
|
96
|
+
if (value.min !== defaultRange.min || value.max !== defaultRange.max) {
|
|
97
|
+
newParams.set("".concat(key, "Min"), value.min.toString());
|
|
98
|
+
newParams.set("".concat(key, "Max"), value.max.toString());
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
newParams.delete("".concat(key, "Min"));
|
|
102
|
+
newParams.delete("".concat(key, "Max"));
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
else if (Array.isArray(value) && value.length > 0) {
|
|
68
106
|
newParams.set(key, value.join(','));
|
|
69
107
|
}
|
|
70
|
-
else if (value !== undefined && value !== null && value !== '' && value !== 0 && Array.isArray(value)
|
|
108
|
+
else if (value !== undefined && value !== null && value !== '' && value !== 0 && !Array.isArray(value)) {
|
|
71
109
|
newParams.set(key, value.toString());
|
|
72
110
|
}
|
|
73
111
|
else {
|
|
74
112
|
newParams.delete(key);
|
|
113
|
+
newParams.delete("".concat(key, "Min"));
|
|
114
|
+
newParams.delete("".concat(key, "Max"));
|
|
75
115
|
}
|
|
76
116
|
});
|
|
77
117
|
router.replace("".concat(pathname, "?").concat(newParams.toString()));
|
|
78
|
-
return newParams;
|
|
79
118
|
};
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
119
|
+
// Get filter values based on config
|
|
120
|
+
var getFilterValues = function (opt) {
|
|
121
|
+
if (opt.deriveFromTiles === 'opportunityType' && opt.options) {
|
|
122
|
+
// For opportunityType, dynamically filter options based on what types exist in tiles
|
|
123
|
+
var availableTypes_1 = new Set((tiles !== null && tiles !== void 0 ? tiles : []).map(function (tile) { return tile.opportunityType || 'volunteer'; }));
|
|
124
|
+
return opt.options
|
|
125
|
+
.filter(function (o) { return availableTypes_1.has(o.value); })
|
|
126
|
+
.map(function (o) { return o.label; });
|
|
127
|
+
}
|
|
128
|
+
if (opt.options) {
|
|
129
|
+
return opt.options.map(function (o) { return o.label; });
|
|
130
|
+
}
|
|
131
|
+
if (opt.deriveFromTiles === 'location') {
|
|
132
|
+
return Array.from(new Set((tiles !== null && tiles !== void 0 ? tiles : []).map(function (tile) { return [retrieveState((tile === null || tile === void 0 ? void 0 : tile.location) || ''), retrieveCity((tile === null || tile === void 0 ? void 0 : tile.location) || '')]; }).flat().filter(Boolean)));
|
|
133
|
+
}
|
|
134
|
+
if (opt.deriveFromTiles === 'skills') {
|
|
135
|
+
return Array.from(new Set((tiles !== null && tiles !== void 0 ? tiles : []).flatMap(function (tile) { return tile.skills || []; })));
|
|
136
|
+
}
|
|
137
|
+
if (opt.label === 'rating') {
|
|
138
|
+
return ["1 star and above", "2 star and above", "3 star and above", "4 star and above", "5 star only"];
|
|
139
|
+
}
|
|
140
|
+
return tiles.map(function (tile) { return tile["".concat(opt.deriveFromTiles)]; });
|
|
84
141
|
};
|
|
85
|
-
var handleFilterChange = function (label, value, datatype) {
|
|
142
|
+
var handleFilterChange = function (label, value, datatype, options) {
|
|
86
143
|
if (value === null || value === "clear") {
|
|
144
|
+
var config_1 = filterConfig.find(function (f) { return f.label === label; });
|
|
87
145
|
setFilterParam(function (prev) {
|
|
88
146
|
var _a;
|
|
89
|
-
return (__assign(__assign({}, prev), (_a = {}, _a[label] = datatype.includes('[]') ? [] : (datatype === 'number' ? 0 : ''), _a)));
|
|
147
|
+
return (__assign(__assign({}, prev), (_a = {}, _a[label] = datatype.includes('[]') ? [] : (datatype === 'number' ? 0 : ((config_1 === null || config_1 === void 0 ? void 0 : config_1.defaultValue) || '')), _a)));
|
|
90
148
|
});
|
|
91
149
|
return;
|
|
92
150
|
}
|
|
151
|
+
// For select with options, convert label to value
|
|
152
|
+
var actualValue = value;
|
|
153
|
+
if (options) {
|
|
154
|
+
var opt = options.find(function (o) { return o.label === value; });
|
|
155
|
+
if (opt)
|
|
156
|
+
actualValue = opt.value;
|
|
157
|
+
}
|
|
93
158
|
setFilterParam(function (prev) {
|
|
94
159
|
var _a, _b;
|
|
95
160
|
var currentValues = prev[label];
|
|
96
|
-
var newValue = datatype === 'number' ? Number(value[0]) :
|
|
161
|
+
var newValue = datatype === 'number' ? Number(value[0]) : actualValue;
|
|
97
162
|
if (currentValues == newValue || (Array.isArray(currentValues) && currentValues.includes(newValue))) {
|
|
98
163
|
return prev;
|
|
99
164
|
}
|
|
100
165
|
else if (Array.isArray(currentValues)) {
|
|
101
|
-
// Add if not selected
|
|
102
166
|
return __assign(__assign({}, prev), (_a = {}, _a[label] = __spreadArray(__spreadArray([], currentValues, true), [newValue], false), _a));
|
|
103
167
|
}
|
|
104
168
|
else {
|
|
@@ -106,91 +170,184 @@ function FilterBarComponent(_a) {
|
|
|
106
170
|
}
|
|
107
171
|
});
|
|
108
172
|
};
|
|
109
|
-
var
|
|
173
|
+
var handleRangeChange = function (label, field, value) {
|
|
110
174
|
setFilterParam(function (prev) {
|
|
111
|
-
var _a;
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
175
|
+
var _a, _b;
|
|
176
|
+
var current = prev[label];
|
|
177
|
+
return __assign(__assign({}, prev), (_a = {}, _a[label] = __assign(__assign({}, current), (_b = {}, _b[field] = value, _b)), _a));
|
|
178
|
+
});
|
|
179
|
+
};
|
|
180
|
+
var removeFilter = function (label, value) {
|
|
181
|
+
var config = filterConfig.find(function (f) { return f.label === label; });
|
|
182
|
+
if ((config === null || config === void 0 ? void 0 : config.datatype) === 'range') {
|
|
183
|
+
// Reset range to default
|
|
184
|
+
var defaultRange_1 = config.defaultValue || { min: 0, max: 100 };
|
|
185
|
+
setFilterParam(function (prev) {
|
|
186
|
+
var _a;
|
|
187
|
+
return (__assign(__assign({}, prev), (_a = {}, _a[label] = defaultRange_1, _a)));
|
|
188
|
+
});
|
|
189
|
+
}
|
|
190
|
+
else {
|
|
191
|
+
setFilterParam(function (prev) {
|
|
192
|
+
var _a;
|
|
193
|
+
return (__assign(__assign({}, prev), (_a = {}, _a[label] = Array.isArray(prev[label])
|
|
194
|
+
? prev[label].filter(function (v) { return v !== value; })
|
|
195
|
+
: prev[label] === value ? 0 : ((config === null || config === void 0 ? void 0 : config.defaultValue) || ''), _a)));
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
};
|
|
199
|
+
var _d = useState(false), sheetOpen = _d[0], setSheetOpen = _d[1];
|
|
200
|
+
// Get current opportunity type for conditional filters
|
|
201
|
+
var currentType = filterParam['type'] || 'volunteer';
|
|
202
|
+
// Filter configs based on showForTypes
|
|
203
|
+
var getVisibleConfigs = function (configs) {
|
|
204
|
+
return configs.filter(function (opt) {
|
|
205
|
+
if (!opt.showForTypes || opt.showForTypes.length === 0)
|
|
206
|
+
return true;
|
|
207
|
+
return opt.showForTypes.includes(currentType);
|
|
115
208
|
});
|
|
116
209
|
};
|
|
117
|
-
var _c = useState(false), sheetOpen = _c[0], setSheetOpen = _c[1];
|
|
118
210
|
var getActiveFilters = function () {
|
|
119
211
|
var filters = [];
|
|
120
212
|
Object.entries(filterParam).forEach(function (_a) {
|
|
121
213
|
var key = _a[0], values = _a[1];
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
displayName: option_1.displayName
|
|
130
|
-
});
|
|
131
|
-
});
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
else if (!Array.isArray(values) && values !== 0) {
|
|
135
|
-
var option = filterOptions.find(function (opt) { return opt.label === key; });
|
|
136
|
-
if (option && values) {
|
|
214
|
+
var opt = filterConfig.find(function (o) { return o.label === key; });
|
|
215
|
+
if (!opt)
|
|
216
|
+
return;
|
|
217
|
+
if (typeof values === 'object' && 'min' in values && 'max' in values) {
|
|
218
|
+
// Range filter
|
|
219
|
+
var defaultRange = opt.defaultValue || { min: 0, max: 100 };
|
|
220
|
+
if (values.min !== defaultRange.min || values.max !== defaultRange.max) {
|
|
137
221
|
filters.push({
|
|
138
222
|
label: key,
|
|
139
|
-
value: values,
|
|
140
|
-
displayName:
|
|
223
|
+
value: "".concat(values.min, "-").concat(values.max, " ").concat(opt.rangeUnit || ''),
|
|
224
|
+
displayName: opt.displayName,
|
|
225
|
+
isRange: true
|
|
141
226
|
});
|
|
142
227
|
}
|
|
143
228
|
}
|
|
229
|
+
else if (Array.isArray(values) && values.length > 0) {
|
|
230
|
+
values.forEach(function (value) {
|
|
231
|
+
filters.push({ label: key, value: value, displayName: opt.displayName });
|
|
232
|
+
});
|
|
233
|
+
}
|
|
234
|
+
else if (!Array.isArray(values) && values !== 0 && values !== '' && values !== opt.defaultValue) {
|
|
235
|
+
// For select with options, show label not value
|
|
236
|
+
var displayValue = values;
|
|
237
|
+
if (opt.options) {
|
|
238
|
+
var found = opt.options.find(function (o) { return o.value === values; });
|
|
239
|
+
if (found)
|
|
240
|
+
displayValue = found.label;
|
|
241
|
+
}
|
|
242
|
+
filters.push({ label: key, value: displayValue, displayName: opt.displayName });
|
|
243
|
+
}
|
|
144
244
|
});
|
|
145
245
|
return filters;
|
|
146
246
|
};
|
|
147
247
|
var activeFilters = getActiveFilters();
|
|
148
248
|
var clearAllFilters = function () {
|
|
149
|
-
var clearedParams =
|
|
150
|
-
destination: [],
|
|
151
|
-
rating: 0,
|
|
152
|
-
skill: [],
|
|
153
|
-
category: [],
|
|
154
|
-
hostRating: 0
|
|
155
|
-
};
|
|
249
|
+
var clearedParams = getInitialFilterState();
|
|
156
250
|
setFilterParam(clearedParams);
|
|
157
251
|
changeMultiParams(clearedParams);
|
|
158
252
|
setSheetOpen(false);
|
|
159
253
|
};
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
254
|
+
var renderFilterInput = function (opt) {
|
|
255
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
256
|
+
if (opt.type === 'range') {
|
|
257
|
+
var rangeValue = filterParam[opt.label];
|
|
258
|
+
var defaultRange = opt.defaultValue || { min: 0, max: 100 };
|
|
259
|
+
var minVal_1 = (_a = opt.rangeMin) !== null && _a !== void 0 ? _a : defaultRange.min;
|
|
260
|
+
var maxVal_1 = (_b = opt.rangeMax) !== null && _b !== void 0 ? _b : defaultRange.max;
|
|
261
|
+
var step = (_c = opt.rangeStep) !== null && _c !== void 0 ? _c : 1;
|
|
262
|
+
// Number inputs mode
|
|
263
|
+
if (opt.rangeInputType === 'number') {
|
|
264
|
+
// Inline style to hide number input spinners
|
|
265
|
+
var noSpinnerStyle = {
|
|
266
|
+
MozAppearance: 'textfield',
|
|
267
|
+
WebkitAppearance: 'none',
|
|
268
|
+
appearance: 'textfield'
|
|
269
|
+
};
|
|
270
|
+
return (_jsxs("div", { className: "flex items-center gap-2", children: [_jsx("input", { type: "number", placeholder: "Min", value: (rangeValue === null || rangeValue === void 0 ? void 0 : rangeValue.min) === undefined || (rangeValue === null || rangeValue === void 0 ? void 0 : rangeValue.min) === null || Number.isNaN(rangeValue === null || rangeValue === void 0 ? void 0 : rangeValue.min) ? '' : rangeValue.min, min: minVal_1, max: maxVal_1, onChange: function (e) {
|
|
271
|
+
var inputVal = e.target.value;
|
|
272
|
+
var val = inputVal === '' ? NaN : parseInt(inputVal);
|
|
273
|
+
setFilterParam(function (prev) {
|
|
274
|
+
var _a;
|
|
275
|
+
return (__assign(__assign({}, prev), (_a = {}, _a[opt.label] = __assign(__assign({}, prev[opt.label]), { min: val }), _a)));
|
|
276
|
+
});
|
|
277
|
+
}, onWheel: function (e) { return e.currentTarget.blur(); }, style: noSpinnerStyle, className: "w-20 px-2 py-1 border rounded text-sm [&::-webkit-inner-spin-button]:appearance-none [&::-webkit-outer-spin-button]:appearance-none" }), _jsx("span", { className: "text-gray-500", children: "to" }), _jsx("input", { type: "number", placeholder: "Max", value: (rangeValue === null || rangeValue === void 0 ? void 0 : rangeValue.max) === undefined || (rangeValue === null || rangeValue === void 0 ? void 0 : rangeValue.max) === null || Number.isNaN(rangeValue === null || rangeValue === void 0 ? void 0 : rangeValue.max) ? '' : rangeValue.max, min: minVal_1, max: maxVal_1, onChange: function (e) {
|
|
278
|
+
var inputVal = e.target.value;
|
|
279
|
+
var val = inputVal === '' ? NaN : parseInt(inputVal);
|
|
280
|
+
setFilterParam(function (prev) {
|
|
281
|
+
var _a;
|
|
282
|
+
return (__assign(__assign({}, prev), (_a = {}, _a[opt.label] = __assign(__assign({}, prev[opt.label]), { max: val }), _a)));
|
|
283
|
+
});
|
|
284
|
+
}, onWheel: function (e) { return e.currentTarget.blur(); }, style: noSpinnerStyle, className: "w-20 px-2 py-1 border rounded text-sm [&::-webkit-inner-spin-button]:appearance-none [&::-webkit-outer-spin-button]:appearance-none" }), opt.rangeUnit && _jsx("span", { className: "text-sm text-gray-500", children: opt.rangeUnit })] }));
|
|
285
|
+
}
|
|
286
|
+
// Slider mode (default)
|
|
287
|
+
return (_jsxs("div", { className: "flex flex-col gap-2 w-full", children: [_jsxs("div", { className: "flex justify-between text-sm text-gray-600", children: [_jsxs("span", { children: [(_d = rangeValue === null || rangeValue === void 0 ? void 0 : rangeValue.min) !== null && _d !== void 0 ? _d : minVal_1, " ", opt.rangeUnit] }), _jsxs("span", { children: [(_e = rangeValue === null || rangeValue === void 0 ? void 0 : rangeValue.max) !== null && _e !== void 0 ? _e : maxVal_1, " ", opt.rangeUnit] })] }), _jsx(Slider, { min: minVal_1, max: maxVal_1, step: step, value: [(_f = rangeValue === null || rangeValue === void 0 ? void 0 : rangeValue.min) !== null && _f !== void 0 ? _f : minVal_1, (_g = rangeValue === null || rangeValue === void 0 ? void 0 : rangeValue.max) !== null && _g !== void 0 ? _g : maxVal_1], onValueChange: function (values) {
|
|
288
|
+
setFilterParam(function (prev) {
|
|
289
|
+
var _a;
|
|
290
|
+
var _b, _c;
|
|
291
|
+
return (__assign(__assign({}, prev), (_a = {}, _a[opt.label] = { min: (_b = values[0]) !== null && _b !== void 0 ? _b : minVal_1, max: (_c = values[1]) !== null && _c !== void 0 ? _c : maxVal_1 }, _a)));
|
|
292
|
+
});
|
|
293
|
+
}, className: "w-full" })] }));
|
|
294
|
+
}
|
|
295
|
+
var selectedValue = (function () {
|
|
296
|
+
var val = filterParam[opt.label];
|
|
297
|
+
if (opt.datatype.includes('[]')) {
|
|
298
|
+
var arr = val;
|
|
299
|
+
return arr.length > 0 ? "".concat(arr.length, " selected") : '';
|
|
300
|
+
}
|
|
301
|
+
if (opt.datatype === 'number') {
|
|
302
|
+
return val ? "".concat(val, " star or more") : '';
|
|
303
|
+
}
|
|
304
|
+
// For select type, show label not value
|
|
305
|
+
if (opt.options && val) {
|
|
306
|
+
var found = opt.options.find(function (o) { return o.value === val; });
|
|
307
|
+
return (found === null || found === void 0 ? void 0 : found.label) || val.toString();
|
|
308
|
+
}
|
|
309
|
+
return (val === null || val === void 0 ? void 0 : val.toString()) || '';
|
|
310
|
+
})();
|
|
311
|
+
return (_jsx(Filter, { label: opt.label, formType: opt.type === 'select' ? 'select' : 'autoComplete', selectedValue: selectedValue, values: getFilterValues(opt), onChange: function (value) { return handleFilterChange(opt.label, value, opt.datatype, opt.options); } }));
|
|
312
|
+
};
|
|
313
|
+
// Separate bar filters from expanded filters
|
|
314
|
+
var visibleConfigs = getVisibleConfigs(filterConfig);
|
|
315
|
+
var barFilters = visibleConfigs.filter(function (f) { return f.visibility !== 'expanded'; });
|
|
316
|
+
var expandedFilters = visibleConfigs.filter(function (f) { return f.visibility === 'expanded'; });
|
|
317
|
+
return (_jsxs("div", { className: "w-4/5 max-w-5xl mx-auto", children: [_jsxs("div", { className: "items-center w-full bg-background shadow-md rounded-full px-4 py-3 md:py-2 flex", children: [barFilters.slice(0, 3).map(function (opt) { return (_jsxs("div", { className: "items-center flex-1 hidden md:flex", children: [_jsx("div", { className: "w-full", children: renderFilterInput(opt) }), _jsx("div", { className: "h-6 w-px bg-gray-300 mx-4 md:h-8" })] }, opt.label)); }), _jsxs(Sheet, { open: sheetOpen, onOpenChange: setSheetOpen, children: [_jsx(SheetTrigger, { asChild: true, children: _jsxs("button", { className: "flex items-center gap-2 text-sm text-gray-600 cursor-pointer m-auto relative", children: [_jsx(SlidersHorizontal, { size: 16, className: "hidden md:block" }), _jsx(SearchIcon, { size: 16, className: "md:hidden" }), _jsx("div", { className: "md:hidden", children: "Start search..." }), expandedFilters.length > 0 && (_jsxs("span", { className: "hidden md:block", children: ["+", expandedFilters.length, " more"] }))] }) }), _jsxs(SheetContent, { side: "top", className: "w-full p-8 z-200 md:items-center overflow-y-auto max-h-[80vh]", children: [_jsx(SheetTitle, { className: "text-lg font-semibold mb-4", children: "Filters" }), _jsx("div", { className: "space-y-6 md:w-3/5", children: visibleConfigs
|
|
318
|
+
.filter(function (opt) { return !opt.groupWith; }) // Only render non-grouped or group leaders
|
|
319
|
+
.map(function (opt) {
|
|
320
|
+
// Check if this filter has a grouped partner
|
|
321
|
+
var groupedFilter = visibleConfigs.find(function (f) { return f.groupWith === opt.label; });
|
|
322
|
+
if (groupedFilter) {
|
|
323
|
+
// Render grouped filters on same line
|
|
324
|
+
return (_jsxs("div", { className: "space-y-2", children: [_jsxs("label", { className: "text-sm font-medium text-gray-700", children: [groupedFilter.displayName, " & ", opt.displayName] }), _jsxs("div", { className: "bg-gray-50 rounded-lg p-3 flex items-center gap-4", children: [_jsx("div", { className: "w-28", children: renderFilterInput(groupedFilter) }), _jsx("div", { className: "flex-1", children: renderFilterInput(opt) })] })] }, opt.label));
|
|
325
|
+
}
|
|
326
|
+
// Regular filter
|
|
327
|
+
return (_jsxs("div", { className: "space-y-2", children: [_jsx("label", { className: "text-sm font-medium text-gray-700", children: opt.displayName }), _jsx("div", { className: "bg-gray-50 rounded-lg p-3", children: renderFilterInput(opt) })] }, opt.label));
|
|
176
328
|
}) }), _jsxs("div", { className: "flex gap-3 mt-6 pt-4 border-t md:w-3/5", children: [_jsx(Button, { variant: "outline", onClick: clearAllFilters, className: "flex-1", children: "Clear All" }), _jsx(Button, { onClick: function () {
|
|
177
329
|
changeMultiParams(filterParam);
|
|
178
330
|
setSheetOpen(false);
|
|
179
|
-
}, className: "flex-1", children: "Apply Filters" })] })] })] }), _jsx(Button, { variant: "default", onClick: function () { return changeMultiParams(filterParam); }, className: "ml-4 w-12 h-12 rounded-full items-center justify-center hidden md:flex cursor-pointer", children: _jsx(Search, { size: 20 }) })] }), activeFilters.length > 0 && (_jsx("div", { className: "max-w-5xl mx-auto mt-4", children: _jsxs("div", { className: "flex flex-wrap gap-2", children: [activeFilters.map(function (filter, index) { return (_jsxs("div", { className: "inline-flex items-center gap-1 bg-blue-100 text-blue-800 px-3 py-1 rounded-full text-sm border border-blue-200", children: [_jsxs("span", { className: "font-medium", children: [filter.displayName, ":"] }), _jsx("span", { children: typeof filter.value === 'number'
|
|
331
|
+
}, className: "flex-1", children: "Apply Filters" })] })] })] }), _jsx(Button, { variant: "default", onClick: function () { return changeMultiParams(filterParam); }, className: "ml-4 w-12 h-12 rounded-full items-center justify-center hidden md:flex cursor-pointer", children: _jsx(Search, { size: 20 }) })] }), activeFilters.length > 0 && (_jsx("div", { className: "max-w-5xl mx-auto mt-4", children: _jsxs("div", { className: "flex flex-wrap gap-2", children: [activeFilters.map(function (filter, index) { return (_jsxs("div", { className: "inline-flex items-center gap-1 bg-blue-100 text-blue-800 px-3 py-1 rounded-full text-sm border border-blue-200", children: [_jsxs("span", { className: "font-medium", children: [filter.displayName, ":"] }), _jsx("span", { children: typeof filter.value === 'number' && !filter.isRange
|
|
180
332
|
? "".concat(filter.value, " star or more")
|
|
181
333
|
: filter.value }), _jsx("button", { onClick: function () {
|
|
182
|
-
var _a;
|
|
183
334
|
removeFilter(filter.label, filter.value);
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
: 0,
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
335
|
+
var newState = __assign({}, filterParam);
|
|
336
|
+
if (filter.isRange) {
|
|
337
|
+
var config = filterConfig.find(function (f) { return f.label === filter.label; });
|
|
338
|
+
newState[filter.label] = (config === null || config === void 0 ? void 0 : config.defaultValue) || { min: 0, max: 100 };
|
|
339
|
+
}
|
|
340
|
+
else if (Array.isArray(filterParam[filter.label])) {
|
|
341
|
+
newState[filter.label] = filterParam[filter.label].filter(function (v) { return v !== filter.value; });
|
|
342
|
+
}
|
|
343
|
+
else {
|
|
344
|
+
var config = filterConfig.find(function (f) { return f.label === filter.label; });
|
|
345
|
+
newState[filter.label] = (config === null || config === void 0 ? void 0 : config.defaultValue) || 0;
|
|
346
|
+
}
|
|
347
|
+
changeMultiParams(newState);
|
|
348
|
+
}, className: "ml-1 hover:bg-blue-200 rounded-full p-1 transition-colors", children: _jsx(X, { size: 12 }) })] }, "".concat(filter.label, "-").concat(filter.value, "-").concat(index))); }), _jsxs("button", { onClick: clearAllFilters, className: "inline-flex items-center gap-1 bg-gray-100 text-gray-600 px-3 py-1 rounded-full text-sm border border-gray-200 hover:bg-gray-200 transition-colors", children: ["Clear All", _jsx(X, { size: 12 })] })] }) }))] }));
|
|
192
349
|
}
|
|
193
350
|
export default function FilterBar(_a) {
|
|
194
|
-
var tiles = _a.tiles;
|
|
195
|
-
return (_jsx(Suspense, { fallback: _jsx("div", { className: "w-full h-screen flex items-center justify-center", children: "Loading..." }), children: _jsx(FilterBarComponent, { tiles: tiles }) }));
|
|
351
|
+
var tiles = _a.tiles, filterConfig = _a.filterConfig;
|
|
352
|
+
return (_jsx(Suspense, { fallback: _jsx("div", { className: "w-full h-screen flex items-center justify-center", children: "Loading..." }), children: _jsx(FilterBarComponent, { tiles: tiles, filterConfig: filterConfig }) }));
|
|
196
353
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sidebar.d.ts","sourceRoot":"","sources":["../../src/misc/sidebar.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAEjE,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AACjC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAC/B,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AASvC,OAAO,EAEL,cAAc,EAGf,MAAM,WAAW,CAAA;AASlB,KAAK,mBAAmB,GAAG;IACzB,KAAK,EAAE,UAAU,GAAG,WAAW,CAAA;IAC/B,IAAI,EAAE,OAAO,CAAA;IACb,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;IAChC,UAAU,EAAE,OAAO,CAAA;IACnB,aAAa,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;IACtC,QAAQ,EAAE,OAAO,CAAA;IACjB,aAAa,EAAE,MAAM,IAAI,CAAA;CAC1B,CAAA;AAID,iBAAS,UAAU,wBAOlB;AAED,iBAAS,eAAe,CAAC,EACvB,
|
|
1
|
+
{"version":3,"file":"sidebar.d.ts","sourceRoot":"","sources":["../../src/misc/sidebar.tsx"],"names":[],"mappings":"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"}
|
package/dist/misc/sidebar.js
CHANGED
|
@@ -49,7 +49,7 @@ function useSidebar() {
|
|
|
49
49
|
return context;
|
|
50
50
|
}
|
|
51
51
|
function SidebarProvider(_a) {
|
|
52
|
-
var _b = _a.defaultOpen, defaultOpen = _b === void 0 ?
|
|
52
|
+
var _b = _a.defaultOpen, defaultOpen = _b === void 0 ? true : _b, openProp = _a.open, setOpenProp = _a.onOpenChange, className = _a.className, style = _a.style, children = _a.children, props = __rest(_a, ["defaultOpen", "open", "onOpenChange", "className", "style", "children"]);
|
|
53
53
|
var isMobile = useIsMobile();
|
|
54
54
|
var _c = React.useState(false), openMobile = _c[0], setOpenMobile = _c[1];
|
|
55
55
|
// This is the internal state of the sidebar.
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import * as SliderPrimitive from "@radix-ui/react-slider";
|
|
3
|
+
declare const Slider: React.ForwardRefExoticComponent<Omit<SliderPrimitive.SliderProps & React.RefAttributes<HTMLSpanElement>, "ref"> & React.RefAttributes<HTMLSpanElement>>;
|
|
4
|
+
export { Slider };
|
|
5
|
+
//# sourceMappingURL=slider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slider.d.ts","sourceRoot":"","sources":["../../src/misc/slider.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,KAAK,eAAe,MAAM,wBAAwB,CAAA;AAIzD,QAAA,MAAM,MAAM,yJAuBV,CAAA;AAGF,OAAO,EAAE,MAAM,EAAE,CAAA"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
13
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
14
|
+
var t = {};
|
|
15
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
16
|
+
t[p] = s[p];
|
|
17
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
18
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
19
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
20
|
+
t[p[i]] = s[p[i]];
|
|
21
|
+
}
|
|
22
|
+
return t;
|
|
23
|
+
};
|
|
24
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
25
|
+
import * as React from "react";
|
|
26
|
+
import * as SliderPrimitive from "@radix-ui/react-slider";
|
|
27
|
+
import { cn } from "@myrjfa/state/dist/lib/utils";
|
|
28
|
+
var Slider = React.forwardRef(function (_a, ref) {
|
|
29
|
+
var _b;
|
|
30
|
+
var className = _a.className, props = __rest(_a, ["className"]);
|
|
31
|
+
return (_jsxs(SliderPrimitive.Root, __assign({ ref: ref, className: cn("relative flex w-full touch-none select-none items-center", className) }, props, { children: [_jsx(SliderPrimitive.Track, { className: "relative h-2 w-full grow overflow-hidden rounded-full bg-secondary", children: _jsx(SliderPrimitive.Range, { className: "absolute h-full bg-primary" }) }), (_b = (props.value || props.defaultValue || [0])) === null || _b === void 0 ? void 0 : _b.map(function (_, index) { return (_jsx(SliderPrimitive.Thumb, { className: "block h-5 w-5 rounded-full border-2 border-primary bg-background ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50" }, index)); })] })));
|
|
32
|
+
});
|
|
33
|
+
Slider.displayName = SliderPrimitive.Root.displayName;
|
|
34
|
+
export { Slider };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@myrjfa/ui",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.8",
|
|
4
4
|
"description": "Shared UI components for my apps",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -51,7 +51,7 @@
|
|
|
51
51
|
"zod": "*"
|
|
52
52
|
},
|
|
53
53
|
"devDependencies": {
|
|
54
|
-
"@myrjfa/state": "^1.0.
|
|
54
|
+
"@myrjfa/state": "^1.0.7",
|
|
55
55
|
"@types/react": "^19.1.10",
|
|
56
56
|
"@types/react-dom": "^19.0.4",
|
|
57
57
|
"date-fns": "^3.0.0",
|