diff --git a/components/filters/CustomDatePicker.tsx b/components/filters/CustomDatePicker.tsx
index 667078bc8f..5bc7a7d6d5 100644
--- a/components/filters/CustomDatePicker.tsx
+++ b/components/filters/CustomDatePicker.tsx
@@ -7,21 +7,41 @@ import {
today,
} from "@internationalized/date";
import { Button, ButtonGroup, DatePicker } from "@nextui-org/react";
-import { useDateFormatter, useLocale } from "@react-aria/i18n";
-import React from "react";
+import { useLocale } from "@react-aria/i18n";
+import { useRouter, useSearchParams } from "next/navigation";
+import React, { useCallback } from "react";
export const CustomDatePicker = () => {
+ const router = useRouter();
+ const searchParams = useSearchParams();
const defaultDate = today(getLocalTimeZone());
const [value, setValue] = React.useState(defaultDate);
const { locale } = useLocale();
- const formatter = useDateFormatter({ dateStyle: "full" });
const now = today(getLocalTimeZone());
const nextWeek = startOfWeek(now.add({ weeks: 1 }), locale);
const nextMonth = startOfMonth(now.add({ months: 1 }));
+ const applyDateFilter = useCallback(
+ (date: any) => {
+ const params = new URLSearchParams(searchParams.toString());
+ if (date) {
+ params.set("filter[updated_at__lte]", date.toString());
+ } else {
+ params.delete("filter[updated_at__lte]");
+ }
+ router.push(`?${params.toString()}`, { scroll: false });
+ },
+ [router, searchParams],
+ );
+
+ const handleDateChange = (newValue: any) => {
+ setValue(newValue);
+ applyDateFilter(newValue);
+ };
+
return (
{
size="sm"
variant="bordered"
>
-
-
-
+
+
+
}
calendarProps={{
@@ -50,15 +74,11 @@ export const CustomDatePicker = () => {
},
}}
value={value}
- onChange={setValue}
+ onChange={handleDateChange}
label="Scan date"
size="sm"
variant="flat"
/>
-
- Selected date:{" "}
- {value ? formatter.format(value.toDate(getLocalTimeZone())) : "--"}
-
);
};
diff --git a/components/filters/CustomProviderInputs.tsx b/components/filters/CustomProviderInputs.tsx
index d97b03b842..373b6255b1 100644
--- a/components/filters/CustomProviderInputs.tsx
+++ b/components/filters/CustomProviderInputs.tsx
@@ -4,12 +4,13 @@ import {
AWSProviderBadge,
AzureProviderBadge,
GCPProviderBadge,
+ KS8ProviderBadge,
} from "../icons/providers-badge";
export const CustomProviderInputAWS = () => {
return (
);
@@ -18,7 +19,7 @@ export const CustomProviderInputAWS = () => {
export const CustomProviderInputAzure = () => {
return (
);
@@ -27,8 +28,17 @@ export const CustomProviderInputAzure = () => {
export const CustomProviderInputGCP = () => {
return (
-
+
Google Cloud Platform
);
};
+
+export const CustomProviderInputKubernetes = () => {
+ return (
+
+ );
+};
diff --git a/components/filters/CustomSelectProvider.tsx b/components/filters/CustomSelectProvider.tsx
index 222793fdf8..dd4254fdd3 100644
--- a/components/filters/CustomSelectProvider.tsx
+++ b/components/filters/CustomSelectProvider.tsx
@@ -1,11 +1,14 @@
"use client";
import { Select, SelectItem } from "@nextui-org/react";
+import { useRouter, useSearchParams } from "next/navigation";
+import { useCallback, useEffect, useState } from "react";
import {
CustomProviderInputAWS,
CustomProviderInputAzure,
CustomProviderInputGCP,
+ CustomProviderInputKubernetes,
} from "./CustomProviderInputs";
const dataInputsProvider = [
@@ -27,11 +30,33 @@ const dataInputsProvider = [
{
key: "kubernetes",
label: "Kubernetes",
- value:
,
+ value:
,
},
];
export const CustomSelectProvider = () => {
+ const router = useRouter();
+ const searchParams = useSearchParams();
+ const [selectedProvider, setSelectedProvider] = useState("");
+
+ const applyProviderFilter = useCallback(
+ (value: string) => {
+ const params = new URLSearchParams(searchParams.toString());
+ if (value) {
+ params.set("filter[provider]", value);
+ } else {
+ params.delete("filter[provider]");
+ }
+ router.push(`?${params.toString()}`, { scroll: false });
+ },
+ [router, searchParams],
+ );
+
+ useEffect(() => {
+ const providerFromUrl = searchParams.get("filter[provider]") || "";
+ setSelectedProvider(providerFromUrl);
+ }, [searchParams]);
+
return (