Skip to content

Commit 3c3a343

Browse files
committed
Some work on slider component
1 parent 00b1594 commit 3c3a343

7 files changed

+82
-6
lines changed

package-lock.json

Lines changed: 34 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
"@radix-ui/react-label": "^2.1.1",
3737
"@radix-ui/react-popover": "^1.1.4",
3838
"@radix-ui/react-select": "^2.1.4",
39+
"@radix-ui/react-slider": "^1.2.2",
3940
"@radix-ui/react-slot": "^1.1.1",
4041
"@radix-ui/react-tooltip": "^1.1.7",
4142
"@types/luxon": "^3.4.2",

src/components/FairDOElasticSearch.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ import { PlaceholderResultView } from "@/components/result/PlaceholderResultView
2626
*
2727
* #### ⚠️ Warning
2828
*
29-
* Make sure your configuration is memoized or defined outside of any components
29+
* Make sure your configuration is memoized or defined outside any components
3030
*
3131
*
3232
* #### 🖌️ Customization

src/components/ui/slider.tsx

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
import * as React from "react"
2+
import * as SliderPrimitive from "@radix-ui/react-slider"
3+
4+
import { cn } from "@/lib/utils"
5+
6+
const Slider = React.forwardRef<React.ElementRef<typeof SliderPrimitive.Root>, React.ComponentPropsWithoutRef<typeof SliderPrimitive.Root>>(
7+
({ className, ...props }, ref) => (
8+
<SliderPrimitive.Root
9+
ref={ref}
10+
className={cn("rfs-relative rfs-flex rfs-w-full rfs-touch-none rfs-select-none rfs-items-center", className)}
11+
{...props}
12+
>
13+
<SliderPrimitive.Track className="rfs-relative rfs-h-2 rfs-w-full rfs-grow rfs-overflow-hidden rfs-rounded-full rfs-bg-secondary">
14+
<SliderPrimitive.Range className="rfs-absolute rfs-h-full rfs-bg-primary" />
15+
</SliderPrimitive.Track>
16+
<SliderPrimitive.Thumb className="rfs-block rfs-h-5 rfs-w-5 rfs-rounded-full rfs-border-2 rfs-border-primary rfs-bg-background rfs-ring-offset-background rfs-transition-colors focus-visible:rfs-outline-none focus-visible:rfs-ring-2 focus-visible:rfs-ring-ring focus-visible:rfs-ring-offset-2 disabled:rfs-pointer-events-none disabled:rfs-opacity-50">
17+
<span className=" rfs-pointer-events-none rfs-text-muted-foreground rfs-text-sm -rfs-top-5 -rfs-translate-x-1/2 rfs-left-1/2 rfs-absolute">
18+
{props.value?.[0]}
19+
</span>
20+
</SliderPrimitive.Thumb>
21+
<SliderPrimitive.Thumb className="rfs-block rfs-h-5 rfs-w-5 rfs-rounded-full rfs-border-2 rfs-border-primary rfs-bg-background rfs-ring-offset-background rfs-transition-colors focus-visible:rfs-outline-none focus-visible:rfs-ring-2 focus-visible:rfs-ring-ring focus-visible:rfs-ring-offset-2 disabled:rfs-pointer-events-none disabled:rfs-opacity-50">
22+
<span className="rfs-pointer-events-none rfs-text-muted-foreground rfs-text-sm -rfs-bottom-5 -rfs-translate-x-1/2 rfs-left-1/2 rfs-absolute">
23+
{props.value?.[1]}
24+
</span>
25+
</SliderPrimitive.Thumb>
26+
</SliderPrimitive.Root>
27+
)
28+
)
29+
Slider.displayName = SliderPrimitive.Root.displayName
30+
31+
export { Slider }

src/config/FairDOConfig.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ export interface FairDOCoreFacetConfig {
1515
* Numeric range facet. Pass possible ranges to the ranges property
1616
*/
1717
export interface FairDONumericRangeFacetConfig extends FairDOCoreFacetConfig {
18-
renderer: string
1918
type: "numeric"
2019

2120
/**
@@ -29,13 +28,16 @@ export interface FairDONumericRangeFacetConfig extends FairDOCoreFacetConfig {
2928
* Date range facet that automatically renders available options
3029
*/
3130
export interface FairDODateRangeFacetConfig extends FairDOCoreFacetConfig {
32-
renderer: string
3331
type: "date_time" | "date_year"
3432
}
3533

34+
export interface FairDOSliderFacetConfig extends FairDOCoreFacetConfig {
35+
type: "min-max-slider"
36+
}
37+
3638
export type FairDODefaultFacetConfig = FairDOCoreFacetConfig
3739

38-
export type FairDOFacetConfig = FairDONumericRangeFacetConfig | FairDODefaultFacetConfig | FairDODateRangeFacetConfig
40+
export type FairDOFacetConfig = FairDONumericRangeFacetConfig | FairDODefaultFacetConfig | FairDODateRangeFacetConfig | FairDOSliderFacetConfig
3941

4042
export interface FairDOIndexConfig {
4143
/**

src/config/FairDOConfigBuilder.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,13 +111,20 @@ export class FairDOConfigBuilder {
111111
type: "range",
112112
ranges: facetRanges
113113
}
114-
} else if ("type" in n && n.type?.startsWith("date_")) {
114+
} else if ("type" in n && (n.type === "date_time" || n.type === "date_year")) {
115115
const facetRanges = this.buildDateRangeFacet(n)
116116
acc[n.key] = {
117117
...n,
118118
type: "range",
119119
ranges: facetRanges
120120
}
121+
} else if ("type" in n && n.type === "min-max-slider") {
122+
// TODO work out how to get slider min and max values
123+
acc[n.key] = {
124+
...n,
125+
type: "value",
126+
size: 100
127+
}
121128
} else {
122129
// no specific range facet, use default arguments
123130
acc[n.key] = {

src/stories/FairDOElasticSearch.stories.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,8 @@ const demoConfigWithCompound: FairDOConfig = {
8080
facets: [
8181
{
8282
key: "Compound.keyword",
83-
label: "Compound"
83+
label: "Compound",
84+
type: "min-max-slider"
8485
}
8586
],
8687
resultFields: [], // Leave empty to get all fields

0 commit comments

Comments
 (0)