diff --git a/docs/V1-migration.md b/docs/V1-migration.md
index fa366d47e..efd8e2052 100644
--- a/docs/V1-migration.md
+++ b/docs/V1-migration.md
@@ -841,6 +841,8 @@ import { Command, Button } from '@raystack/apsara';
```
+- **`DataTable.Filters` `classNames.container` is no longer supported.** The Filters `classNames` prop now accepts only `filterChips` and `addFilter`. Use the `className` prop on `DataTable.Filters` to style the outer wrapper.
+
---
### Dialog
diff --git a/packages/raystack/components/data-table/components/filters.tsx b/packages/raystack/components/data-table/components/filters.tsx
index b97456881..a6faba50e 100644
--- a/packages/raystack/components/data-table/components/filters.tsx
+++ b/packages/raystack/components/data-table/components/filters.tsx
@@ -1,6 +1,7 @@
'use client';
-import React, { isValidElement, ReactNode, useMemo } from 'react';
+import { cx } from 'class-variance-authority';
+import { isValidElement, ReactNode, useMemo } from 'react';
import { FilterIcon } from '~/icons';
import { FilterOperatorTypes, FilterType } from '~/types/filters';
import { Button } from '../../button';
@@ -8,6 +9,7 @@ import { FilterChip, type FilterChipValue } from '../../filter-chip';
import { Flex } from '../../flex';
import { IconButton } from '../../icon-button';
import { Menu } from '../../menu';
+import styles from '../data-table.module.css';
import { DataTableColumn } from '../data-table.types';
import { useDataTable } from '../hooks/useDataTable';
import { useFilters } from '../hooks/useFilters';
@@ -45,7 +47,7 @@ function AddFilter({
else if (children) return children;
else if (appliedFiltersSet.size > 0)
return (
-
+
);
@@ -88,7 +90,6 @@ export function Filters({
trigger
}: {
classNames?: {
- container?: string;
filterChips?: string;
addFilter?: string;
};
@@ -132,34 +133,29 @@ export function Filters({
return (
0 || undefined}
>
- {appliedFilters.length > 0 && (
-
- {appliedFilters.map(filter => (
- handleRemoveFilter(filter.name)}
- onValueChange={value =>
- handleFilterValueChange(filter.name, value)
- }
- onOperationChange={operator =>
- handleFilterOperationChange(
- filter.name,
- operator as FilterOperatorTypes
- )
- }
- columnType={filter.filterType}
- options={filter.options}
- selectProps={filter.selectProps}
- className={classNames?.filterChips}
- />
- ))}
-
- )}
+ {appliedFilters?.map(filter => (
+ handleRemoveFilter(filter.name)}
+ onValueChange={value => handleFilterValueChange(filter.name, value)}
+ onOperationChange={operator =>
+ handleFilterOperationChange(
+ filter.name,
+ operator as FilterOperatorTypes
+ )
+ }
+ columnType={filter.filterType}
+ options={filter.options}
+ selectProps={filter.selectProps}
+ className={classNames?.filterChips}
+ />
+ ))}
({ className }: { className?: string }) {
/>
diff --git a/packages/raystack/components/data-table/data-table.module.css b/packages/raystack/components/data-table/data-table.module.css
index 45017da4e..cb157c921 100644
--- a/packages/raystack/components/data-table/data-table.module.css
+++ b/packages/raystack/components/data-table/data-table.module.css
@@ -1,5 +1,6 @@
.toolbar {
- padding: var(--rs-space-3) var(--rs-space-7) var(--rs-space-3) var(--rs-space-5);
+ padding: var(--rs-space-3) var(--rs-space-7) var(--rs-space-3)
+ var(--rs-space-5);
align-self: stretch;
border-bottom: 0.5px solid var(--rs-color-border-base-primary);
@@ -37,7 +38,7 @@
min-width: 0;
}
-.display-popover-properties-select>span {
+.display-popover-properties-select > span {
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
@@ -233,4 +234,8 @@
box-sizing: border-box;
background: var(--rs-color-background-base-secondary);
box-shadow: 0 0.5px 0 0 var(--rs-color-border-base-primary);
-}
\ No newline at end of file
+}
+
+.filterContainer {
+ flex-wrap: wrap;
+}
diff --git a/packages/raystack/components/filter-chip/filter-chip.module.css b/packages/raystack/components/filter-chip/filter-chip.module.css
index 6716b8152..299d2f38a 100644
--- a/packages/raystack/components/filter-chip/filter-chip.module.css
+++ b/packages/raystack/components/filter-chip/filter-chip.module.css
@@ -8,15 +8,17 @@
border-radius: var(--rs-radius-2);
text-wrap: nowrap;
width: fit-content;
+ min-width: min-content;
+ overflow: clip;
}
.chip-default {
border: 1px solid var(--rs-color-border-base-tertiary);
- box-shadow: var(--rs-shadow-feather);
}
.chip-label {
padding: 0 var(--rs-space-3);
+ flex-shrink: 0;
}
.operationText {
color: var(--rs-color-foreground-base-secondary);
@@ -26,6 +28,7 @@
letter-spacing: var(--rs-letter-spacing-small);
display: flex;
align-items: center;
+ flex-shrink: 0;
}
.operationText:hover {
@@ -40,6 +43,7 @@
background: transparent;
min-height: unset;
padding: 0;
+ text-overflow: ellipsis;
}
/* Control height of Select items */
@@ -54,7 +58,7 @@
box-shadow: none;
background: transparent;
min-height: unset;
- border-radius: var(--rs-radius-1);
+ border-radius: 0;
color: var(--rs-color-foreground-base-primary);
font-weight: var(--rs-font-weight-regular);
font-size: var(--rs-font-size-small);
@@ -66,11 +70,13 @@
display: flex;
align-items: center;
height: 100%;
- padding-left: var(--rs-space-3);
- padding-right: var(--rs-space-3);
+ padding-left: var(--rs-space-2);
+ padding-right: var(--rs-space-2);
margin: 0;
- border-top-right-radius: var(--rs-radius-2);
- border-bottom-right-radius: var(--rs-radius-2);
+ width: var(--rs-space-7);
+ justify-content: center;
+ flex-shrink: 0;
+ cursor: pointer;
}
.removeIconContainer:hover {
@@ -102,19 +108,18 @@
min-height: auto;
padding: var(--rs-space-2) var(--rs-space-3);
border-radius: 0;
+ min-width: 0;
+ overflow: hidden;
}
.selectValue * {
font-weight: var(--rs-font-weight-regular);
+ min-width: 0;
}
.operationValue {
color: var(--rs-color-foreground-base-secondary);
-}
-
-.selectColumn {
- border-top-right-radius: var(--rs-radius-2);
- border-bottom-right-radius: var(--rs-radius-2);
+ flex-shrink: 0;
}
button.selectValue:hover {
@@ -132,14 +137,15 @@ button.selectValue:hover {
}
.inputFieldWrapper {
- padding: 0 var(--rs-space-2);
- min-width: 60px;
+ padding: 0;
+ min-width: 0;
+ overflow: hidden;
}
.inputField {
- border-radius: var(--rs-radius-1);
- min-height: 18px;
- height: 18px;
+ border-radius: 0;
+ min-height: 22px;
+ height: 22px;
border: none;
box-shadow: none;
}
@@ -151,23 +157,24 @@ button.selectValue:hover {
}
.inputFieldWrapper input {
- padding-left: var(--rs-space-2);
- padding-right: var(--rs-space-2);
+ padding-left: var(--rs-space-3);
+ padding-right: var(--rs-space-3);
}
.dateFieldWrapper {
- padding: 0 var(--rs-space-2);
- min-width: var(--rs-space-17);
+ padding: 0;
+ min-width: 0;
+ overflow: hidden;
}
.dateField {
- border-radius: var(--rs-radius-1);
+ border-radius: 0;
display: flex;
justify-content: space-between;
align-items: center;
- width: 100%;
- height: 18px;
- min-height: 18px;
+ width: fit-content;
+ height: 22px;
+ min-height: 22px;
border: none;
box-shadow: none;
}
@@ -180,8 +187,8 @@ button.selectValue:hover {
.dateField input {
text-align: left;
- padding-left: var(--rs-space-2);
- padding-right: var(--rs-space-2);
+ padding-left: var(--rs-space-3);
+ padding-right: var(--rs-space-3);
}
.dateField [data-trailing] {