import React from 'react' import { type Meta, type StoryObj } from '@storybook/react-vite' import { cleanUpValues } from '../../services/FilterHelperServiceTyped' import { DocsTemplate } from '../../../.storybook' const FilterDisplay = ({ filters, label }) => { const cleanedFilters = cleanUpValues(filters) return (

{label}

Original Filters:
{JSON.stringify(filters, null, 2)}
Cleaned Filters (for URL params):
{JSON.stringify(cleanedFilters, null, 2)}
) } export default { title: 'Helper Functions/cleanUpValues', component: FilterDisplay, parameters: { viewMode: 'docs', previewTabs: { canvas: { hidden: true }, }, docs: { page: () => ( Core features: , Supported filter types: , Common use cases: , Best practices: , ]} /> ), source: { code: false, }, }, }, argTypes: { label: { control: 'text', description: 'Label for the filter example', }, filters: { control: 'object', description: 'Filter object to clean up', }, }, } as Meta type Story = StoryObj const Template: Story = { render: (args) => { return }, } export const DateFilters: Story = { ...Template, args: { label: 'Date Filters Example', filters: { dates: { startDate: '2023-01-01', endDate: '2023-01-31', }, }, }, } export const DateRangeFilters: Story = { ...Template, args: { label: 'Date Range Filters Example', filters: { activity_date: { start_date: '2023-01-01', end_date: '2023-01-31', }, }, }, } export const IncludeExcludeFilters: Story = { ...Template, args: { label: 'Include/Exclude Filters Example', filters: { include: { defaultValue: ['item1', 'item2'], }, exclude: { defaultValue: ['item3'], }, }, }, } export const IDBasedFilters: Story = { ...Template, args: { label: 'ID-Based Filters Example', filters: { fulfillment: { id: 1, value: 'shipped', }, warehouse_status: { id: 2, state: 'in_progress', }, purchase_order_states: { id: 3, state: 'completed', }, category: { id: 4, name: 'Electronics', }, }, }, } export const StringFilters: Story = { ...Template, args: { label: 'String Filters Example', filters: { search_term: 'example search', status: 'active', }, }, } export const ComplexFilters: Story = { ...Template, args: { label: 'Complex Mixed Filters Example', filters: { dates: { startDate: '2023-01-01', endDate: '2023-01-31', }, activity_date: { start_date: '2023-02-01', end_date: '2023-02-28', }, include: { defaultValue: ['item1', 'item2'], }, fulfillment: { id: 1, value: 'shipped', }, search_term: 'example search', }, }, } export const EmptyFilters: Story = { ...Template, args: { label: 'Empty Filters Example', filters: {}, }, } export const NullFilters: Story = { ...Template, args: { label: 'Null Filters Example', filters: null, }, }