@shefing/quickfilter 1.0.11 → 1.0.13

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.
Files changed (43) hide show
  1. package/README.md +859 -0
  2. package/dist/FilterField.d.ts.map +1 -1
  3. package/dist/FilterField.js +18 -9
  4. package/dist/FilterField.js.map +1 -1
  5. package/dist/QuickFilter.d.ts.map +1 -1
  6. package/dist/QuickFilter.js +227 -55
  7. package/dist/QuickFilter.js.map +1 -1
  8. package/dist/filters/components/checkbox-filter.d.ts +2 -1
  9. package/dist/filters/components/checkbox-filter.d.ts.map +1 -1
  10. package/dist/filters/components/checkbox-filter.js +9 -7
  11. package/dist/filters/components/checkbox-filter.js.map +1 -1
  12. package/dist/filters/components/date-filter.d.ts +2 -1
  13. package/dist/filters/components/date-filter.d.ts.map +1 -1
  14. package/dist/filters/components/date-filter.js +26 -24
  15. package/dist/filters/components/date-filter.js.map +1 -1
  16. package/dist/filters/components/select-filter.d.ts +2 -1
  17. package/dist/filters/components/select-filter.d.ts.map +1 -1
  18. package/dist/filters/components/select-filter.js +20 -18
  19. package/dist/filters/components/select-filter.js.map +1 -1
  20. package/dist/filters/components/small-select-filter.d.ts +2 -1
  21. package/dist/filters/components/small-select-filter.d.ts.map +1 -1
  22. package/dist/filters/components/small-select-filter.js +4 -3
  23. package/dist/filters/components/small-select-filter.js.map +1 -1
  24. package/dist/filters/constants/date-filter-options.d.ts +7 -4
  25. package/dist/filters/constants/date-filter-options.d.ts.map +1 -1
  26. package/dist/filters/constants/date-filter-options.js +25 -70
  27. package/dist/filters/constants/date-filter-options.js.map +1 -1
  28. package/dist/filters/types/filters-type.d.ts.map +1 -1
  29. package/dist/filters/types/filters-type.js.map +1 -1
  30. package/dist/filters/utils/date-helpers.d.ts +4 -3
  31. package/dist/filters/utils/date-helpers.d.ts.map +1 -1
  32. package/dist/filters/utils/date-helpers.js +14 -11
  33. package/dist/filters/utils/date-helpers.js.map +1 -1
  34. package/dist/filters/utils/layout-helpers.d.ts.map +1 -1
  35. package/dist/filters/utils/layout-helpers.js.map +1 -1
  36. package/dist/index.d.ts +6 -1
  37. package/dist/index.d.ts.map +1 -1
  38. package/dist/index.js.map +1 -1
  39. package/dist/labels.d.ts +326 -0
  40. package/dist/labels.d.ts.map +1 -0
  41. package/dist/labels.js +192 -0
  42. package/dist/labels.js.map +1 -0
  43. package/package.json +1 -1
@@ -9,13 +9,14 @@ import { Button } from '../../ui/button';
9
9
  import { Command, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList } from '../../ui/command';
10
10
  import { Checkbox } from '../../ui/checkbox';
11
11
  import { Badge } from '../../ui/badge';
12
+ import { getLabel } from '../../labels';
12
13
  export function SelectFilter({ label, options, value, onChange, placeholder, locale = {
13
14
  code: 'he',
14
15
  direction: 'rtl'
15
- }, className, multiSelect = true }) {
16
+ }, className, multiSelect = true, style }) {
16
17
  const [open, setOpen] = useState(false);
17
18
  const [internalValue, setInternalValue] = useState(value);
18
- const isHebrew = locale.code === 'he';
19
+ const isRtl = locale?.direction === 'rtl';
19
20
  const showSearch = options.length > 10;
20
21
  const showSelectAll = multiSelect && options.length > 3;
21
22
  // Sync internal state with external value prop
@@ -27,12 +28,12 @@ export function SelectFilter({ label, options, value, onChange, placeholder, loc
27
28
  const selectedValues = internalValue?.selectedValues || [];
28
29
  const allSelected = selectedValues.length === options.length;
29
30
  const labels = {
30
- selectAll: isHebrew ? 'בחר הכל' : 'Select All',
31
- deselectAll: isHebrew ? 'בטל בחירת הכל' : 'Deselect All',
32
- search: isHebrew ? 'חפש...' : 'Search...',
33
- noResults: isHebrew ? 'לא נמצאו תוצאות' : 'No results found',
34
- selected: isHebrew ? 'נבחרו' : 'selected',
35
- selectedOne: isHebrew ? 'נבחר' : 'selected'
31
+ selectAll: getLabel('all', locale.code),
32
+ deselectAll: getLabel('all', locale.code),
33
+ search: getLabel('selectOption', locale.code),
34
+ noResults: getLabel('custom', locale.code),
35
+ selected: getLabel('selectOption', locale.code),
36
+ selectedOne: getLabel('selectOption', locale.code)
36
37
  };
37
38
  const getFilterValue = (values)=>{
38
39
  if (values.length === 0) {
@@ -89,7 +90,7 @@ export function SelectFilter({ label, options, value, onChange, placeholder, loc
89
90
  };
90
91
  const getDisplayText = ()=>{
91
92
  if (selectedValues.length === 0) {
92
- return placeholder || (isHebrew ? 'בחר אפשרויות' : 'Select options');
93
+ return placeholder || getLabel('selectOption', locale.code);
93
94
  } else if (selectedValues.length === options.length) {
94
95
  return labels.selectAll;
95
96
  } else {
@@ -99,9 +100,10 @@ export function SelectFilter({ label, options, value, onChange, placeholder, loc
99
100
  return /*#__PURE__*/ _jsxs("div", {
100
101
  className: cn('space-y-1', className),
101
102
  dir: locale.direction,
103
+ style: style,
102
104
  children: [
103
105
  label && /*#__PURE__*/ _jsx(Label, {
104
- className: cn('useTw text-sm font-medium', isHebrew && 'text-right block'),
106
+ className: cn('useTw text-sm font-medium', isRtl && 'text-right block'),
105
107
  children: label
106
108
  }),
107
109
  /*#__PURE__*/ _jsxs("div", {
@@ -147,14 +149,14 @@ export function SelectFilter({ label, options, value, onChange, placeholder, loc
147
149
  showSelectAll && /*#__PURE__*/ _jsx(CommandItem, {
148
150
  onSelect: handleToggleSelectAll,
149
151
  children: /*#__PURE__*/ _jsxs("div", {
150
- className: cn('useTw flex items-center w-full justify-between', isHebrew && 'flex-row-reverse'),
152
+ className: cn('useTw flex items-center w-full justify-between', isRtl && 'flex-row-reverse'),
151
153
  children: [
152
154
  /*#__PURE__*/ _jsx(Checkbox, {
153
155
  checked: allSelected,
154
- className: cn(isHebrew ? 'useTw ml-2' : 'useTw mr-2')
156
+ className: cn(isRtl ? 'useTw ml-2' : 'useTw mr-2')
155
157
  }),
156
158
  /*#__PURE__*/ _jsx("span", {
157
- className: cn(isHebrew && 'useTw text-right flex-1 mr-2'),
159
+ className: cn(isRtl && 'useTw text-right flex-1 mr-2'),
158
160
  children: allSelected ? labels.deselectAll : labels.selectAll
159
161
  })
160
162
  ]
@@ -163,16 +165,16 @@ export function SelectFilter({ label, options, value, onChange, placeholder, loc
163
165
  options.map((option)=>/*#__PURE__*/ _jsx(CommandItem, {
164
166
  onSelect: ()=>handleToggleOption(option.value),
165
167
  children: /*#__PURE__*/ _jsxs("div", {
166
- className: cn('flex items-center w-full justify-between', isHebrew && 'flex-row-reverse'),
168
+ className: cn('flex items-center w-full justify-between', isRtl && 'flex-row-reverse'),
167
169
  children: [
168
170
  multiSelect ? /*#__PURE__*/ _jsx(Checkbox, {
169
171
  checked: selectedValues.includes(option.value),
170
- className: cn(isHebrew ? 'useTw ml-2' : 'useTw mx-2')
172
+ className: cn(isRtl ? 'useTw ml-2' : 'useTw mx-2')
171
173
  }) : /*#__PURE__*/ _jsx(Check, {
172
- className: cn('useTw h-4 w-4', isHebrew ? 'ml-2' : 'mr-2', selectedValues.includes(option.value) ? 'opacity-100' : 'opacity-0')
174
+ className: cn('useTw h-4 w-4', isRtl ? 'ml-2' : 'mr-2', selectedValues.includes(option.value) ? 'opacity-100' : 'opacity-0')
173
175
  }),
174
176
  /*#__PURE__*/ _jsx("span", {
175
- className: cn(isHebrew && 'text-right flex-1'),
177
+ className: cn(isRtl && 'text-right flex-1'),
176
178
  children: option.label
177
179
  })
178
180
  ]
@@ -188,7 +190,7 @@ export function SelectFilter({ label, options, value, onChange, placeholder, loc
188
190
  ]
189
191
  }),
190
192
  selectedValues.length > 0 && /*#__PURE__*/ _jsx("button", {
191
- className: `useTw absolute ${isHebrew ? 'left-8' : 'right-8'} top-1/2 -translate-y-1/2 h-4 w-4 p-0 hover:bg-muted rounded-sm flex items-center justify-center z-10 `,
193
+ className: `useTw absolute ${isRtl ? 'left-8' : 'right-8'} top-1/2 -translate-y-1/2 h-4 w-4 p-0 hover:bg-muted rounded-sm flex items-center justify-center z-10 `,
192
194
  onClick: (e)=>{
193
195
  e.stopPropagation();
194
196
  handleClearAll();
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/filters/components/select-filter.tsx"],"sourcesContent":["'use client';\n\nimport { useEffect, useState } from 'react';\nimport { Check, ChevronsUpDown, X } from 'lucide-react';\nimport { Locale, SelectFilterOption, SelectFilterValue } from '../types/filters-type';\nimport { Label } from '../../ui/label';\nimport { cn } from '../../lib/utils';\nimport { Popover, PopoverContent, PopoverTrigger } from '../../ui/popover';\nimport { Button } from '../../ui/button';\nimport {\n Command,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n} from '../../ui/command';\nimport { Checkbox } from '../../ui/checkbox';\nimport { Badge } from '../../ui/badge';\n\ninterface SelectFilterProps {\n label?: string;\n options: SelectFilterOption[];\n value?: SelectFilterValue;\n onChange: (value: SelectFilterValue) => void;\n placeholder?: string;\n locale?: Locale;\n className?: string;\n multiSelect?: boolean;\n}\n\nexport function SelectFilter({\n label,\n options,\n value,\n onChange,\n placeholder,\n locale = { code: 'he', direction: 'rtl' },\n className,\n multiSelect = true,\n}: SelectFilterProps) {\n const [open, setOpen] = useState(false);\n const [internalValue, setInternalValue] = useState<SelectFilterValue | undefined>(value);\n\n const isHebrew = locale.code === 'he';\n const showSearch = options.length > 10;\n const showSelectAll = multiSelect && options.length > 3;\n\n // Sync internal state with external value prop\n useEffect(() => {\n setInternalValue(value);\n }, [value]);\n\n const selectedValues = internalValue?.selectedValues || [];\n const allSelected = selectedValues.length === options.length;\n\n const labels = {\n selectAll: isHebrew ? 'בחר הכל' : 'Select All',\n deselectAll: isHebrew ? 'בטל בחירת הכל' : 'Deselect All',\n search: isHebrew ? 'חפש...' : 'Search...',\n noResults: isHebrew ? 'לא נמצאו תוצאות' : 'No results found',\n selected: isHebrew ? 'נבחרו' : 'selected',\n selectedOne: isHebrew ? 'נבחר' : 'selected',\n };\n\n const getFilterValue = (values: string[]): SelectFilterValue => {\n if (values.length === 0) {\n return { type: 'none', selectedValues: [] };\n } else if (values.length === options.length) {\n return { type: 'all', selectedValues: values };\n } else {\n return { type: 'some', selectedValues: values };\n }\n };\n\n const handleSelectAll = () => {\n const allValues = options.map((option) => option.value);\n const newValue = getFilterValue(allValues);\n setInternalValue(newValue);\n onChange(newValue);\n };\n\n const handleClearAll = () => {\n const newValue = getFilterValue([]);\n setInternalValue(newValue);\n onChange(newValue);\n };\n\n const handleToggleSelectAll = () => {\n if (allSelected) {\n handleClearAll();\n } else {\n handleSelectAll();\n }\n };\n\n const handleToggleOption = (optionValue: string) => {\n let newValues: string[];\n\n if (multiSelect) {\n newValues = selectedValues.includes(optionValue)\n ? selectedValues.filter((val) => val !== optionValue)\n : [...selectedValues, optionValue];\n } else {\n newValues = [optionValue];\n setOpen(false);\n }\n\n const newValue = getFilterValue(newValues);\n setInternalValue(newValue);\n onChange(newValue);\n };\n\n const getDisplayText = () => {\n if (selectedValues.length === 0) {\n return placeholder || (isHebrew ? 'בחר אפשרויות' : 'Select options');\n } else if (selectedValues.length === options.length) {\n return labels.selectAll;\n } else {\n return `${selectedValues.length} ${selectedValues.length > 1 ? labels.selected : labels.selectedOne} `;\n }\n };\n\n return (\n <div className={cn('space-y-1', className)} dir={locale.direction}>\n {label && (\n <Label className={cn('useTw text-sm font-medium', isHebrew && 'text-right block')}>\n {label}\n </Label>\n )}\n\n <div className='relative'>\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n variant='outline'\n role='combobox'\n aria-expanded={open}\n className='w-full justify-between bg-background relative'\n >\n <span className='truncate'>{getDisplayText()}</span>\n <ChevronsUpDown className='h-4 w-4 shrink-0 opacity-50' />\n </Button>\n </PopoverTrigger>\n <PopoverContent className='useTw w-80 p-0' align='start'>\n <Command>\n {showSearch && <CommandInput placeholder={labels.search} />}\n <CommandList>\n <CommandEmpty>{labels.noResults}</CommandEmpty>\n <CommandGroup>\n {showSelectAll && (\n <CommandItem onSelect={handleToggleSelectAll}>\n <div\n className={cn(\n 'useTw flex items-center w-full justify-between',\n isHebrew && 'flex-row-reverse',\n )}\n >\n <Checkbox\n checked={allSelected}\n className={cn(isHebrew ? 'useTw ml-2' : 'useTw mr-2')}\n />\n <span className={cn(isHebrew && 'useTw text-right flex-1 mr-2')}>\n {allSelected ? labels.deselectAll : labels.selectAll}\n </span>\n </div>\n </CommandItem>\n )}\n {options.map((option) => (\n <CommandItem\n key={option.value}\n onSelect={() => handleToggleOption(option.value)}\n >\n <div\n className={cn(\n 'flex items-center w-full justify-between',\n isHebrew && 'flex-row-reverse',\n )}\n >\n {multiSelect ? (\n <Checkbox\n checked={selectedValues.includes(option.value)}\n className={cn(isHebrew ? 'useTw ml-2' : 'useTw mx-2')}\n />\n ) : (\n <Check\n className={cn(\n 'useTw h-4 w-4',\n isHebrew ? 'ml-2' : 'mr-2',\n selectedValues.includes(option.value) ? 'opacity-100' : 'opacity-0',\n )}\n />\n )}\n <span className={cn(isHebrew && 'text-right flex-1')}>{option.label}</span>\n </div>\n </CommandItem>\n ))}\n </CommandGroup>\n </CommandList>\n </Command>\n </PopoverContent>\n </Popover>\n {selectedValues.length > 0 && (\n <button\n className={`useTw absolute ${isHebrew ? 'left-8' : 'right-8'} top-1/2 -translate-y-1/2 h-4 w-4 p-0 hover:bg-muted rounded-sm flex items-center justify-center z-10 `}\n onClick={(e) => {\n e.stopPropagation();\n handleClearAll();\n }}\n >\n <X className='h-3 w-3' />\n </button>\n )}\n </div>\n\n {multiSelect && selectedValues.length > 0 && selectedValues.length < options.length && (\n <div className='flex flex-wrap gap-1 mt-2'>\n {selectedValues.map((value) => {\n const option = options.find((opt) => opt.value === value);\n return (\n <Badge key={value} variant='secondary' className='text-xs bg-background border'>\n {option?.label || value}\n <button\n className='ml-1 hover:bg-muted rounded-full'\n onClick={() => handleToggleOption(value)}\n >\n ×\n </button>\n </Badge>\n );\n })}\n </div>\n )}\n </div>\n );\n}\n"],"names":["useEffect","useState","Check","ChevronsUpDown","X","Label","cn","Popover","PopoverContent","PopoverTrigger","Button","Command","CommandEmpty","CommandGroup","CommandInput","CommandItem","CommandList","Checkbox","Badge","SelectFilter","label","options","value","onChange","placeholder","locale","code","direction","className","multiSelect","open","setOpen","internalValue","setInternalValue","isHebrew","showSearch","length","showSelectAll","selectedValues","allSelected","labels","selectAll","deselectAll","search","noResults","selected","selectedOne","getFilterValue","values","type","handleSelectAll","allValues","map","option","newValue","handleClearAll","handleToggleSelectAll","handleToggleOption","optionValue","newValues","includes","filter","val","getDisplayText","div","dir","onOpenChange","asChild","variant","role","aria-expanded","span","align","onSelect","checked","button","onClick","e","stopPropagation","find","opt"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/filters/components/select-filter.tsx"],"sourcesContent":["'use client';\n\nimport { useEffect, useState } from 'react';\nimport { Check, ChevronsUpDown, X } from 'lucide-react';\nimport { Locale, SelectFilterOption, SelectFilterValue } from '../types/filters-type';\nimport { Label } from '../../ui/label';\nimport { cn } from '../../lib/utils';\nimport { Popover, PopoverContent, PopoverTrigger } from '../../ui/popover';\nimport { Button } from '../../ui/button';\nimport {\n Command,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n} from '../../ui/command';\nimport { Checkbox } from '../../ui/checkbox';\nimport { Badge } from '../../ui/badge';\nimport { SupportedLocale, getLabel } from '../../labels';\n\ninterface SelectFilterProps {\n label?: string;\n options: SelectFilterOption[];\n value?: SelectFilterValue;\n onChange: (value: SelectFilterValue) => void;\n placeholder?: string;\n locale?: Locale;\n className?: string;\n multiSelect?: boolean;\n style?: React.CSSProperties;\n}\n\nexport function SelectFilter({\n label,\n options,\n value,\n onChange,\n placeholder,\n locale = { code: 'he', direction: 'rtl' },\n className,\n multiSelect = true,\n style,\n}: SelectFilterProps) {\n const [open, setOpen] = useState(false);\n const [internalValue, setInternalValue] = useState<SelectFilterValue | undefined>(value);\n\n const isRtl = locale?.direction === 'rtl';\n const showSearch = options.length > 10;\n const showSelectAll = multiSelect && options.length > 3;\n\n // Sync internal state with external value prop\n useEffect(() => {\n setInternalValue(value);\n }, [value]);\n\n const selectedValues = internalValue?.selectedValues || [];\n const allSelected = selectedValues.length === options.length;\n\n const labels = {\n selectAll: getLabel('all', locale.code),\n deselectAll: getLabel('all', locale.code),\n search: getLabel('selectOption', locale.code),\n noResults: getLabel('custom', locale.code),\n selected: getLabel('selectOption', locale.code),\n selectedOne: getLabel('selectOption', locale.code),\n };\n\n const getFilterValue = (values: string[]): SelectFilterValue => {\n if (values.length === 0) {\n return { type: 'none', selectedValues: [] };\n } else if (values.length === options.length) {\n return { type: 'all', selectedValues: values };\n } else {\n return { type: 'some', selectedValues: values };\n }\n };\n\n const handleSelectAll = () => {\n const allValues = options.map((option) => option.value);\n const newValue = getFilterValue(allValues);\n setInternalValue(newValue);\n onChange(newValue);\n };\n\n const handleClearAll = () => {\n const newValue = getFilterValue([]);\n setInternalValue(newValue);\n onChange(newValue);\n };\n\n const handleToggleSelectAll = () => {\n if (allSelected) {\n handleClearAll();\n } else {\n handleSelectAll();\n }\n };\n\n const handleToggleOption = (optionValue: string) => {\n let newValues: string[];\n\n if (multiSelect) {\n newValues = selectedValues.includes(optionValue)\n ? selectedValues.filter((val) => val !== optionValue)\n : [...selectedValues, optionValue];\n } else {\n newValues = [optionValue];\n setOpen(false);\n }\n\n const newValue = getFilterValue(newValues);\n setInternalValue(newValue);\n onChange(newValue);\n };\n\n const getDisplayText = () => {\n if (selectedValues.length === 0) {\n return placeholder || getLabel('selectOption', locale.code);\n } else if (selectedValues.length === options.length) {\n return labels.selectAll;\n } else {\n return `${selectedValues.length} ${selectedValues.length > 1 ? labels.selected : labels.selectedOne} `;\n }\n };\n\n return (\n <div className={cn('space-y-1', className)} dir={locale.direction} style={style}>\n {label && (\n <Label className={cn('useTw text-sm font-medium', isRtl && 'text-right block')}>\n {label}\n </Label>\n )}\n\n <div className='relative'>\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n variant='outline'\n role='combobox'\n aria-expanded={open}\n className='w-full justify-between bg-background relative'\n >\n <span className='truncate'>{getDisplayText()}</span>\n <ChevronsUpDown className='h-4 w-4 shrink-0 opacity-50' />\n </Button>\n </PopoverTrigger>\n <PopoverContent className='useTw w-80 p-0' align='start'>\n <Command>\n {showSearch && <CommandInput placeholder={labels.search} />}\n <CommandList>\n <CommandEmpty>{labels.noResults}</CommandEmpty>\n <CommandGroup>\n {showSelectAll && (\n <CommandItem onSelect={handleToggleSelectAll}>\n <div\n className={cn(\n 'useTw flex items-center w-full justify-between',\n isRtl && 'flex-row-reverse',\n )}\n >\n <Checkbox\n checked={allSelected}\n className={cn(isRtl ? 'useTw ml-2' : 'useTw mr-2')}\n />\n <span className={cn(isRtl && 'useTw text-right flex-1 mr-2')}>\n {allSelected ? labels.deselectAll : labels.selectAll}\n </span>\n </div>\n </CommandItem>\n )}\n {options.map((option) => (\n <CommandItem\n key={option.value}\n onSelect={() => handleToggleOption(option.value)}\n >\n <div\n className={cn(\n 'flex items-center w-full justify-between',\n isRtl && 'flex-row-reverse',\n )}\n >\n {multiSelect ? (\n <Checkbox\n checked={selectedValues.includes(option.value)}\n className={cn(isRtl ? 'useTw ml-2' : 'useTw mx-2')}\n />\n ) : (\n <Check\n className={cn(\n 'useTw h-4 w-4',\n isRtl ? 'ml-2' : 'mr-2',\n selectedValues.includes(option.value) ? 'opacity-100' : 'opacity-0',\n )}\n />\n )}\n <span className={cn(isRtl && 'text-right flex-1')}>{option.label}</span>\n </div>\n </CommandItem>\n ))}\n </CommandGroup>\n </CommandList>\n </Command>\n </PopoverContent>\n </Popover>\n {selectedValues.length > 0 && (\n <button\n className={`useTw absolute ${isRtl ? 'left-8' : 'right-8'} top-1/2 -translate-y-1/2 h-4 w-4 p-0 hover:bg-muted rounded-sm flex items-center justify-center z-10 `}\n onClick={(e) => {\n e.stopPropagation();\n handleClearAll();\n }}\n >\n <X className='h-3 w-3' />\n </button>\n )}\n </div>\n\n {multiSelect && selectedValues.length > 0 && selectedValues.length < options.length && (\n <div className='flex flex-wrap gap-1 mt-2'>\n {selectedValues.map((value) => {\n const option = options.find((opt) => opt.value === value);\n return (\n <Badge key={value} variant='secondary' className='text-xs bg-background border'>\n {option?.label || value}\n <button\n className='ml-1 hover:bg-muted rounded-full'\n onClick={() => handleToggleOption(value)}\n >\n ×\n </button>\n </Badge>\n );\n })}\n </div>\n )}\n </div>\n );\n}\n"],"names":["useEffect","useState","Check","ChevronsUpDown","X","Label","cn","Popover","PopoverContent","PopoverTrigger","Button","Command","CommandEmpty","CommandGroup","CommandInput","CommandItem","CommandList","Checkbox","Badge","getLabel","SelectFilter","label","options","value","onChange","placeholder","locale","code","direction","className","multiSelect","style","open","setOpen","internalValue","setInternalValue","isRtl","showSearch","length","showSelectAll","selectedValues","allSelected","labels","selectAll","deselectAll","search","noResults","selected","selectedOne","getFilterValue","values","type","handleSelectAll","allValues","map","option","newValue","handleClearAll","handleToggleSelectAll","handleToggleOption","optionValue","newValues","includes","filter","val","getDisplayText","div","dir","onOpenChange","asChild","variant","role","aria-expanded","span","align","onSelect","checked","button","onClick","e","stopPropagation","find","opt"],"mappings":"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"}
@@ -12,7 +12,8 @@ interface SmallSelectFilterProps {
12
12
  className?: string;
13
13
  multiSelect?: boolean;
14
14
  maxOptions?: number;
15
+ style?: React.CSSProperties;
15
16
  }
16
- export declare function SmallSelectFilter({ label, options, value, onChange, locale, className, multiSelect, maxOptions, }: SmallSelectFilterProps): import("react").JSX.Element;
17
+ export declare function SmallSelectFilter({ label, options, value, onChange, locale, className, multiSelect, maxOptions, style, }: SmallSelectFilterProps): import("react").JSX.Element;
17
18
  export {};
18
19
  //# sourceMappingURL=small-select-filter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"small-select-filter.d.ts","sourceRoot":"","sources":["../../../src/filters/components/small-select-filter.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAKlE,UAAU,iBAAiB;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED,UAAU,sBAAsB;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,iBAAiB,EAAE,CAAC;IAC7B,KAAK,CAAC,EAAE,iBAAiB,CAAC;IAC1B,QAAQ,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC7C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,iBAAiB,CAAC,EAChC,KAAK,EACL,OAAO,EACP,KAAK,EACL,QAAQ,EACR,MAAyC,EACzC,SAAS,EACT,WAAkB,EAClB,UAAc,GACf,EAAE,sBAAsB,+BA4HxB"}
1
+ {"version":3,"file":"small-select-filter.d.ts","sourceRoot":"","sources":["../../../src/filters/components/small-select-filter.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAMlE,UAAU,iBAAiB;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED,UAAU,sBAAsB;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,iBAAiB,EAAE,CAAC;IAC7B,KAAK,CAAC,EAAE,iBAAiB,CAAC;IAC1B,QAAQ,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC7C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B;AAED,wBAAgB,iBAAiB,CAAC,EAChC,KAAK,EACL,OAAO,EACP,KAAK,EACL,QAAQ,EACR,MAAyC,EACzC,SAAS,EACT,WAAkB,EAClB,UAAc,EACd,KAAK,GACN,EAAE,sBAAsB,+BA4HxB"}
@@ -8,12 +8,12 @@ import { Button } from '../../ui/button';
8
8
  export function SmallSelectFilter({ label, options, value, onChange, locale = {
9
9
  code: 'he',
10
10
  direction: 'rtl'
11
- }, className, multiSelect = true, maxOptions = 3 }) {
11
+ }, className, multiSelect = true, maxOptions = 3, style }) {
12
12
  const [internalValue, setInternalValue] = useState(value || {
13
13
  type: 'none',
14
14
  selectedValues: []
15
15
  });
16
- const isHebrew = locale.code === 'he';
16
+ const isRtl = locale?.direction === 'rtl';
17
17
  // Limit options to maxOptions
18
18
  const limitedOptions = options.slice(0, maxOptions);
19
19
  // Sync internal state with external value prop
@@ -81,9 +81,10 @@ export function SmallSelectFilter({ label, options, value, onChange, locale = {
81
81
  return /*#__PURE__*/ _jsxs("div", {
82
82
  className: cn('space-y-2', className),
83
83
  dir: locale.direction,
84
+ style: style,
84
85
  children: [
85
86
  label && /*#__PURE__*/ _jsx(Label, {
86
- className: cn('useTw text-sm font-medium', isHebrew && 'text-right block'),
87
+ className: cn('useTw text-sm font-medium', isRtl && 'text-right block'),
87
88
  children: label
88
89
  }),
89
90
  /*#__PURE__*/ _jsxs("div", {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/filters/components/small-select-filter.tsx"],"sourcesContent":["'use client';\n\nimport { useEffect, useState } from 'react';\n\nimport { X } from 'lucide-react';\nimport { Locale, SelectFilterValue } from '../types/filters-type';\nimport { Label } from '../../ui/label';\nimport { cn } from '../../lib/utils';\nimport { Button } from '../../ui/button';\n\ninterface SmallSelectOption {\n value: string;\n label: string;\n}\n\ninterface SmallSelectFilterProps {\n label?: string;\n options: SmallSelectOption[];\n value?: SelectFilterValue;\n onChange: (value: SelectFilterValue) => void;\n locale?: Locale;\n className?: string;\n multiSelect?: boolean;\n maxOptions?: number;\n}\n\nexport function SmallSelectFilter({\n label,\n options,\n value,\n onChange,\n locale = { code: 'he', direction: 'rtl' },\n className,\n multiSelect = true,\n maxOptions = 3,\n}: SmallSelectFilterProps) {\n const [internalValue, setInternalValue] = useState<SelectFilterValue>(\n value || { type: 'none', selectedValues: [] },\n );\n\n const isHebrew = locale.code === 'he';\n\n // Limit options to maxOptions\n const limitedOptions = options.slice(0, maxOptions);\n\n // Sync internal state with external value prop\n useEffect(() => {\n setInternalValue(value || { type: 'none', selectedValues: [] });\n }, [value]);\n\n const handleOptionToggle = (optionValue: string) => {\n let newSelectedValues: string[];\n\n if (multiSelect) {\n // Multiple selection mode - allow multiple choices\n if (internalValue.selectedValues.includes(optionValue)) {\n newSelectedValues = internalValue.selectedValues.filter((val) => val !== optionValue);\n } else {\n newSelectedValues = [...internalValue.selectedValues, optionValue];\n }\n } else {\n // Single selection mode\n if (internalValue.selectedValues.includes(optionValue)) {\n newSelectedValues = []; // Deselect if already selected\n } else {\n newSelectedValues = [optionValue]; // Select only this option\n }\n }\n\n const newValue: SelectFilterValue = {\n type:\n newSelectedValues.length === 0\n ? 'none'\n : newSelectedValues.length === options.length\n ? 'all'\n : 'some',\n selectedValues: newSelectedValues,\n };\n setInternalValue(newValue);\n onChange(newValue);\n };\n\n const handleClear = () => {\n const newValue: SelectFilterValue = { type: 'none', selectedValues: [] };\n setInternalValue(newValue);\n onChange(newValue);\n };\n\n const hasSelection = internalValue.selectedValues.length > 0;\n\n const isOptionSelected = (optionValue: string) => {\n return internalValue.selectedValues.includes(optionValue);\n };\n\n const getButtonColor = (optionValue: string, index: number) => {\n if (!isOptionSelected(optionValue)) {\n return 'useTw bg-background text-muted-foreground hover:bg-muted';\n }\n\n // Different colors for different options when selected\n const colors = [\n 'bg-blue-600 text-white hover:bg-blue-700', // First option - blue\n 'bg-green-600 text-white hover:bg-green-700', // Second option - green\n 'bg-purple-600 text-white hover:bg-purple-700', // Third option - purple\n ];\n return colors[index] || 'bg-accent text-accent-foreground hover:bg-accent/80';\n };\n\n return (\n <div className={cn('space-y-2', className)} dir={locale.direction}>\n {label && (\n <Label className={cn('useTw text-sm font-medium', isHebrew && 'text-right block')}>\n {label}\n </Label>\n )}\n\n <div\n className={cn(\n 'flex items-center gap-3 transition-colors py-0.5',\n locale.direction === 'rtl' && 'justify-start',\n )}\n >\n <div className={cn('flex items-center', locale.direction === 'rtl' && 'order-first')}>\n {/* Toggle Options */}\n <div className='flex rounded-md border overflow-hidden'>\n {limitedOptions.map((option, index) => (\n <Button\n key={option.value}\n variant='ghost'\n size='sm'\n className={cn(\n 'px-3 py-1 text-xs rounded-none border-0',\n index > 0 && 'border-l',\n getButtonColor(option.value, index),\n )}\n onClick={() => handleOptionToggle(option.value)}\n >\n {option.label}\n </Button>\n ))}\n </div>\n </div>\n\n {hasSelection && (\n <Button\n variant='ghost'\n size='sm'\n className={cn(\n 'h-5 w-5 p-0 hover:bg-muted rounded-full -mt-1 -ml-1',\n locale.direction === 'rtl' ? 'order-last' : 'order-last',\n )}\n onClick={handleClear}\n >\n <X className='useTw h-3 w-3' />\n </Button>\n )}\n </div>\n </div>\n );\n}\n"],"names":["useEffect","useState","X","Label","cn","Button","SmallSelectFilter","label","options","value","onChange","locale","code","direction","className","multiSelect","maxOptions","internalValue","setInternalValue","type","selectedValues","isHebrew","limitedOptions","slice","handleOptionToggle","optionValue","newSelectedValues","includes","filter","val","newValue","length","handleClear","hasSelection","isOptionSelected","getButtonColor","index","colors","div","dir","map","option","variant","size","onClick"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/filters/components/small-select-filter.tsx"],"sourcesContent":["'use client';\n\nimport { useEffect, useState } from 'react';\n\nimport { X } from 'lucide-react';\nimport { Locale, SelectFilterValue } from '../types/filters-type';\nimport { Label } from '../../ui/label';\nimport { cn } from '../../lib/utils';\nimport { Button } from '../../ui/button';\nimport { SupportedLocale } from '../../labels';\n\ninterface SmallSelectOption {\n value: string;\n label: string;\n}\n\ninterface SmallSelectFilterProps {\n label?: string;\n options: SmallSelectOption[];\n value?: SelectFilterValue;\n onChange: (value: SelectFilterValue) => void;\n locale?: Locale;\n className?: string;\n multiSelect?: boolean;\n maxOptions?: number;\n style?: React.CSSProperties;\n}\n\nexport function SmallSelectFilter({\n label,\n options,\n value,\n onChange,\n locale = { code: 'he', direction: 'rtl' },\n className,\n multiSelect = true,\n maxOptions = 3,\n style,\n}: SmallSelectFilterProps) {\n const [internalValue, setInternalValue] = useState<SelectFilterValue>(\n value || { type: 'none', selectedValues: [] },\n );\n\n const isRtl = locale?.direction === 'rtl';\n\n // Limit options to maxOptions\n const limitedOptions = options.slice(0, maxOptions);\n\n // Sync internal state with external value prop\n useEffect(() => {\n setInternalValue(value || { type: 'none', selectedValues: [] });\n }, [value]);\n\n const handleOptionToggle = (optionValue: string) => {\n let newSelectedValues: string[];\n\n if (multiSelect) {\n // Multiple selection mode - allow multiple choices\n if (internalValue.selectedValues.includes(optionValue)) {\n newSelectedValues = internalValue.selectedValues.filter((val) => val !== optionValue);\n } else {\n newSelectedValues = [...internalValue.selectedValues, optionValue];\n }\n } else {\n // Single selection mode\n if (internalValue.selectedValues.includes(optionValue)) {\n newSelectedValues = []; // Deselect if already selected\n } else {\n newSelectedValues = [optionValue]; // Select only this option\n }\n }\n\n const newValue: SelectFilterValue = {\n type:\n newSelectedValues.length === 0\n ? 'none'\n : newSelectedValues.length === options.length\n ? 'all'\n : 'some',\n selectedValues: newSelectedValues,\n };\n setInternalValue(newValue);\n onChange(newValue);\n };\n\n const handleClear = () => {\n const newValue: SelectFilterValue = { type: 'none', selectedValues: [] };\n setInternalValue(newValue);\n onChange(newValue);\n };\n\n const hasSelection = internalValue.selectedValues.length > 0;\n\n const isOptionSelected = (optionValue: string) => {\n return internalValue.selectedValues.includes(optionValue);\n };\n\n const getButtonColor = (optionValue: string, index: number) => {\n if (!isOptionSelected(optionValue)) {\n return 'useTw bg-background text-muted-foreground hover:bg-muted';\n }\n\n // Different colors for different options when selected\n const colors = [\n 'bg-blue-600 text-white hover:bg-blue-700', // First option - blue\n 'bg-green-600 text-white hover:bg-green-700', // Second option - green\n 'bg-purple-600 text-white hover:bg-purple-700', // Third option - purple\n ];\n return colors[index] || 'bg-accent text-accent-foreground hover:bg-accent/80';\n };\n\n return (\n <div className={cn('space-y-2', className)} dir={locale.direction} style={style}>\n {label && (\n <Label className={cn('useTw text-sm font-medium', isRtl && 'text-right block')}>\n {label}\n </Label>\n )}\n\n <div\n className={cn(\n 'flex items-center gap-3 transition-colors py-0.5',\n locale.direction === 'rtl' && 'justify-start',\n )}\n >\n <div className={cn('flex items-center', locale.direction === 'rtl' && 'order-first')}>\n {/* Toggle Options */}\n <div className='flex rounded-md border overflow-hidden'>\n {limitedOptions.map((option, index) => (\n <Button\n key={option.value}\n variant='ghost'\n size='sm'\n className={cn(\n 'px-3 py-1 text-xs rounded-none border-0',\n index > 0 && 'border-l',\n getButtonColor(option.value, index),\n )}\n onClick={() => handleOptionToggle(option.value)}\n >\n {option.label}\n </Button>\n ))}\n </div>\n </div>\n\n {hasSelection && (\n <Button\n variant='ghost'\n size='sm'\n className={cn(\n 'h-5 w-5 p-0 hover:bg-muted rounded-full -mt-1 -ml-1',\n locale.direction === 'rtl' ? 'order-last' : 'order-last',\n )}\n onClick={handleClear}\n >\n <X className='useTw h-3 w-3' />\n </Button>\n )}\n </div>\n </div>\n );\n}\n"],"names":["useEffect","useState","X","Label","cn","Button","SmallSelectFilter","label","options","value","onChange","locale","code","direction","className","multiSelect","maxOptions","style","internalValue","setInternalValue","type","selectedValues","isRtl","limitedOptions","slice","handleOptionToggle","optionValue","newSelectedValues","includes","filter","val","newValue","length","handleClear","hasSelection","isOptionSelected","getButtonColor","index","colors","div","dir","map","option","variant","size","onClick"],"mappings":"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"}
@@ -1,6 +1,9 @@
1
+ import type { SupportedLocale } from '../../labels';
1
2
  import { DateFilterOption } from '../types/filters-type';
2
- export declare const pastDateFilterOptions: DateFilterOption[];
3
- export declare const futureDateFilterOptions: DateFilterOption[];
4
- export declare const pastDateFilterOptionsEn: DateFilterOption[];
5
- export declare const futureDateFilterOptionsEn: DateFilterOption[];
3
+ export declare const pastOptionKeys: readonly ["yesterday", "lastWeek", "lastMonth", "allPast"];
4
+ export declare const futureOptionKeys: readonly ["today", "nextWeek", "nextMonth", "allFuture"];
5
+ export declare const getDateFilterOptions: (locale: SupportedLocale | string) => {
6
+ pastOptions: DateFilterOption[];
7
+ futureOptions: DateFilterOption[];
8
+ };
6
9
  //# sourceMappingURL=date-filter-options.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"date-filter-options.d.ts","sourceRoot":"","sources":["../../../src/filters/constants/date-filter-options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,eAAO,MAAM,qBAAqB,EAAE,gBAAgB,EAKnD,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,gBAAgB,EAKrD,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,gBAAgB,EAKrD,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,gBAAgB,EAKvD,CAAC"}
1
+ {"version":3,"file":"date-filter-options.d.ts","sourceRoot":"","sources":["../../../src/filters/constants/date-filter-options.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAGzD,eAAO,MAAM,cAAc,4DAA6D,CAAC;AACzF,eAAO,MAAM,gBAAgB,0DAA2D,CAAC;AAazF,eAAO,MAAM,oBAAoB,WAAY,eAAe,GAAG,MAAM;;;CAKpE,CAAC"}
@@ -1,74 +1,29 @@
1
- export const pastDateFilterOptions = [
2
- {
3
- value: 'yesterday',
4
- label: 'אתמול'
5
- },
6
- {
7
- value: 'lastWeek',
8
- label: 'שבוע שעבר'
9
- },
10
- {
11
- value: 'lastMonth',
12
- label: 'חודש שעבר'
13
- },
14
- {
15
- value: 'allPast',
16
- label: 'בעבר'
17
- }
1
+ import { getLabel } from '../../labels';
2
+ // Define the option keys for past and future date filters
3
+ export const pastOptionKeys = [
4
+ 'yesterday',
5
+ 'lastWeek',
6
+ 'lastMonth',
7
+ 'allPast'
18
8
  ];
19
- export const futureDateFilterOptions = [
20
- {
21
- value: 'today',
22
- label: 'היום'
23
- },
24
- {
25
- value: 'nextWeek',
26
- label: 'השבוע'
27
- },
28
- {
29
- value: 'nextMonth',
30
- label: 'החודש'
31
- },
32
- {
33
- value: 'allFuture',
34
- label: 'בעתיד'
35
- }
36
- ];
37
- export const pastDateFilterOptionsEn = [
38
- {
39
- value: 'yesterday',
40
- label: 'Yesterday'
41
- },
42
- {
43
- value: 'lastWeek',
44
- label: 'Last Week'
45
- },
46
- {
47
- value: 'lastMonth',
48
- label: 'Last Month'
49
- },
50
- {
51
- value: 'allPast',
52
- label: 'All Past'
53
- }
54
- ];
55
- export const futureDateFilterOptionsEn = [
56
- {
57
- value: 'today',
58
- label: 'Today'
59
- },
60
- {
61
- value: 'nextWeek',
62
- label: 'This Week'
63
- },
64
- {
65
- value: 'nextMonth',
66
- label: 'This Month'
67
- },
68
- {
69
- value: 'allFuture',
70
- label: 'All Future'
71
- }
9
+ export const futureOptionKeys = [
10
+ 'today',
11
+ 'nextWeek',
12
+ 'nextMonth',
13
+ 'allFuture'
72
14
  ];
15
+ // Create date filter options dynamically based on locale
16
+ const createDateFilterOptions = (keys, locale)=>{
17
+ return keys.map((key)=>({
18
+ value: key,
19
+ label: getLabel(key, locale)
20
+ }));
21
+ };
22
+ export const getDateFilterOptions = (locale)=>{
23
+ return {
24
+ pastOptions: createDateFilterOptions(pastOptionKeys, locale),
25
+ futureOptions: createDateFilterOptions(futureOptionKeys, locale)
26
+ };
27
+ };
73
28
 
74
29
  //# sourceMappingURL=date-filter-options.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/filters/constants/date-filter-options.ts"],"sourcesContent":["import { DateFilterOption } from '../types/filters-type';\n\nexport const pastDateFilterOptions: DateFilterOption[] = [\n { value: 'yesterday', label: 'אתמול' },\n { value: 'lastWeek', label: 'שבוע שעבר' },\n { value: 'lastMonth', label: 'חודש שעבר' },\n { value: 'allPast', label: 'בעבר' },\n];\n\nexport const futureDateFilterOptions: DateFilterOption[] = [\n { value: 'today', label: 'היום' },\n { value: 'nextWeek', label: 'השבוע' },\n { value: 'nextMonth', label: 'החודש' },\n { value: 'allFuture', label: 'בעתיד' },\n];\n\nexport const pastDateFilterOptionsEn: DateFilterOption[] = [\n { value: 'yesterday', label: 'Yesterday' },\n { value: 'lastWeek', label: 'Last Week' },\n { value: 'lastMonth', label: 'Last Month' },\n { value: 'allPast', label: 'All Past' },\n];\n\nexport const futureDateFilterOptionsEn: DateFilterOption[] = [\n { value: 'today', label: 'Today' },\n { value: 'nextWeek', label: 'This Week' },\n { value: 'nextMonth', label: 'This Month' },\n { value: 'allFuture', label: 'All Future' },\n];\n"],"names":["pastDateFilterOptions","value","label","futureDateFilterOptions","pastDateFilterOptionsEn","futureDateFilterOptionsEn"],"mappings":"AAEA,OAAO,MAAMA,wBAA4C;IACvD;QAAEC,OAAO;QAAaC,OAAO;IAAQ;IACrC;QAAED,OAAO;QAAYC,OAAO;IAAY;IACxC;QAAED,OAAO;QAAaC,OAAO;IAAY;IACzC;QAAED,OAAO;QAAWC,OAAO;IAAO;CACnC,CAAC;AAEF,OAAO,MAAMC,0BAA8C;IACzD;QAAEF,OAAO;QAASC,OAAO;IAAO;IAChC;QAAED,OAAO;QAAYC,OAAO;IAAQ;IACpC;QAAED,OAAO;QAAaC,OAAO;IAAQ;IACrC;QAAED,OAAO;QAAaC,OAAO;IAAQ;CACtC,CAAC;AAEF,OAAO,MAAME,0BAA8C;IACzD;QAAEH,OAAO;QAAaC,OAAO;IAAY;IACzC;QAAED,OAAO;QAAYC,OAAO;IAAY;IACxC;QAAED,OAAO;QAAaC,OAAO;IAAa;IAC1C;QAAED,OAAO;QAAWC,OAAO;IAAW;CACvC,CAAC;AAEF,OAAO,MAAMG,4BAAgD;IAC3D;QAAEJ,OAAO;QAASC,OAAO;IAAQ;IACjC;QAAED,OAAO;QAAYC,OAAO;IAAY;IACxC;QAAED,OAAO;QAAaC,OAAO;IAAa;IAC1C;QAAED,OAAO;QAAaC,OAAO;IAAa;CAC3C,CAAC"}
1
+ {"version":3,"sources":["../../../src/filters/constants/date-filter-options.ts"],"sourcesContent":["import { getLabel } from '../../labels';\nimport type { SupportedLocale } from '../../labels';\nimport { DateFilterOption } from '../types/filters-type';\n\n// Define the option keys for past and future date filters\nexport const pastOptionKeys = ['yesterday', 'lastWeek', 'lastMonth', 'allPast'] as const;\nexport const futureOptionKeys = ['today', 'nextWeek', 'nextMonth', 'allFuture'] as const;\n\n// Create date filter options dynamically based on locale\nconst createDateFilterOptions = (\n keys: readonly string[],\n locale: SupportedLocale | string,\n): DateFilterOption[] => {\n return keys.map((key) => ({\n value: key,\n label: getLabel(key as any, locale as SupportedLocale),\n }));\n};\n\nexport const getDateFilterOptions = (locale: SupportedLocale | string) => {\n return {\n pastOptions: createDateFilterOptions(pastOptionKeys, locale),\n futureOptions: createDateFilterOptions(futureOptionKeys, locale),\n };\n};\n"],"names":["getLabel","pastOptionKeys","futureOptionKeys","createDateFilterOptions","keys","locale","map","key","value","label","getDateFilterOptions","pastOptions","futureOptions"],"mappings":"AAAA,SAASA,QAAQ,QAAQ,eAAe;AAIxC,0DAA0D;AAC1D,OAAO,MAAMC,iBAAiB;IAAC;IAAa;IAAY;IAAa;CAAU,CAAU;AACzF,OAAO,MAAMC,mBAAmB;IAAC;IAAS;IAAY;IAAa;CAAY,CAAU;AAEzF,yDAAyD;AACzD,MAAMC,0BAA0B,CAC9BC,MACAC;IAEA,OAAOD,KAAKE,GAAG,CAAC,CAACC,MAAS,CAAA;YACxBC,OAAOD;YACPE,OAAOT,SAASO,KAAYF;QAC9B,CAAA;AACF;AAEA,OAAO,MAAMK,uBAAuB,CAACL;IACnC,OAAO;QACLM,aAAaR,wBAAwBF,gBAAgBI;QACrDO,eAAeT,wBAAwBD,kBAAkBG;IAC3D;AACF,EAAE"}
@@ -1 +1 @@
1
- {"version":3,"file":"filters-type.d.ts","sourceRoot":"","sources":["../../../src/filters/types/filters-type.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"filters-type.d.ts","sourceRoot":"","sources":["../../../src/filters/types/filters-type.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/filters/types/filters-type.ts"],"sourcesContent":["export interface DateFilterOption {\n value: string\n label: string\n}\n\nexport interface DateRange {\n from: Date | undefined\n to: Date | undefined\n}\n\nexport interface DateFilterValue {\n type: 'predefined' | 'custom'\n predefinedValue?: string\n customRange?: DateRange\n}\n\nexport interface SelectFilterOption {\n value: string\n label: string\n}\n\nexport interface SelectFilterValue {\n type: 'all' | 'some' | 'none'\n selectedValues: string[]\n}\n\nexport interface SmallSelectOption {\n value: string\n label: string\n}\n\nexport interface SmallSelectFilterValue {\n selectedValues: string[]\n}\n\nexport type CheckboxFilterState = 'checked' | 'unchecked' | 'indeterminate'\n\nexport interface Locale {\n code: 'he' | 'en'\n direction: 'rtl' | 'ltr'\n}\n\n// New filter configuration types\nexport type FilterType = 'date' | 'select' | 'checkbox' | 'small-select'\n\nexport interface BaseFilterConfig {\n id: string\n type: FilterType\n label: {\n he: string\n en: string\n }\n title: {\n he: string\n en: string\n }\n}\n\nexport interface DateFilterConfig extends BaseFilterConfig {\n type: 'date'\n placeholder?: {\n he: string\n en: string\n }\n}\n\nexport interface SelectFilterConfig extends BaseFilterConfig {\n type: 'select'\n options: {\n he: SelectFilterOption[]\n en: SelectFilterOption[]\n }\n placeholder?: {\n he: string\n en: string\n }\n multiSelect?: boolean\n showSearch?: boolean\n}\n\nexport interface CheckboxFilterConfig extends BaseFilterConfig {\n type: 'checkbox'\n checkboxLabel: {\n he: string\n en: string\n }\n}\n\nexport interface SmallSelectFilterConfig extends BaseFilterConfig {\n type: 'small-select'\n options: {\n he: SmallSelectOption[]\n en: SmallSelectOption[]\n }\n multiSelect?: boolean\n maxOptions?: number\n}\n\nexport type FilterConfig =\n | DateFilterConfig\n | SelectFilterConfig\n | CheckboxFilterConfig\n | SmallSelectFilterConfig\n\nexport interface FilterState {\n [filterId: string]:\n | DateFilterValue\n | SelectFilterValue\n | CheckboxFilterState\n | SmallSelectFilterValue\n | undefined\n}\n\nexport type FilterDetaild = {\n name: string\n label: string\n type: any\n options?: Array<any> // Replace `any` with a more specific type if known\n row?: number | undefined\n width?: string\n}\n\nexport interface FilterRow {\n rowNumber: number\n filters: FilterDetaild[]\n}\n"],"names":[],"mappings":"AA0HA,WAGC"}
1
+ {"version":3,"sources":["../../../src/filters/types/filters-type.ts"],"sourcesContent":["export interface DateFilterOption {\n value: string;\n label: string;\n}\n\nexport interface DateRange {\n from: Date | undefined;\n to: Date | undefined;\n}\n\nexport interface DateFilterValue {\n type: 'predefined' | 'custom';\n predefinedValue?: string;\n customRange?: DateRange;\n}\n\nexport interface SelectFilterOption {\n value: string;\n label: string;\n}\n\nexport interface SelectFilterValue {\n type: 'all' | 'some' | 'none';\n selectedValues: string[];\n}\n\nexport interface SmallSelectOption {\n value: string;\n label: string;\n}\n\nexport interface SmallSelectFilterValue {\n selectedValues: string[];\n}\n\nexport type CheckboxFilterState = 'checked' | 'unchecked' | 'indeterminate';\n\nexport interface Locale {\n code: 'he' | 'en';\n direction: 'rtl' | 'ltr';\n}\n\n// New filter configuration types\nexport type FilterType = 'date' | 'select' | 'checkbox' | 'small-select';\n\nexport interface BaseFilterConfig {\n id: string;\n type: FilterType;\n label: {\n he: string;\n en: string;\n };\n title: {\n he: string;\n en: string;\n };\n}\n\nexport interface DateFilterConfig extends BaseFilterConfig {\n type: 'date';\n placeholder?: {\n he: string;\n en: string;\n };\n}\n\nexport interface SelectFilterConfig extends BaseFilterConfig {\n type: 'select';\n options: {\n he: SelectFilterOption[];\n en: SelectFilterOption[];\n };\n placeholder?: {\n he: string;\n en: string;\n };\n multiSelect?: boolean;\n showSearch?: boolean;\n}\n\nexport interface CheckboxFilterConfig extends BaseFilterConfig {\n type: 'checkbox';\n checkboxLabel: {\n he: string;\n en: string;\n };\n}\n\nexport interface SmallSelectFilterConfig extends BaseFilterConfig {\n type: 'small-select';\n options: {\n he: SmallSelectOption[];\n en: SmallSelectOption[];\n };\n multiSelect?: boolean;\n maxOptions?: number;\n}\n\nexport type FilterConfig =\n | DateFilterConfig\n | SelectFilterConfig\n | CheckboxFilterConfig\n | SmallSelectFilterConfig;\n\nexport interface FilterState {\n [filterId: string]:\n | DateFilterValue\n | SelectFilterValue\n | CheckboxFilterState\n | SmallSelectFilterValue\n | undefined;\n}\n\nexport type FilterDetaild = {\n name: string;\n label: string;\n type: any;\n options?: Array<any>; // Replace `any` with a more specific type if known\n row?: number | undefined;\n width?: string;\n};\n\nexport interface FilterRow {\n rowNumber: number;\n filters: FilterDetaild[];\n}\n"],"names":[],"mappings":"AA0HA,WAGC"}
@@ -1,3 +1,4 @@
1
+ import { SupportedLocale } from '../../labels';
1
2
  export declare function addDays(date: Date, days: number): Date;
2
3
  export declare function subDays(date: Date, days: number): Date;
3
4
  export declare function addWeeks(date: Date, weeks: number): Date;
@@ -15,9 +16,9 @@ export declare function endOfWeek(date: Date, options?: {
15
16
  export declare function startOfMonth(date: Date): Date;
16
17
  export declare function endOfMonth(date: Date): Date;
17
18
  export declare function formatDate(date: Date, formatStr: string): string;
18
- export declare function getDateRangeForOption(option: string, locale?: 'he' | 'en'): {
19
- from: Date;
20
- to: Date;
19
+ export declare function getDateRangeForOption(option: string, locale?: SupportedLocale): {
20
+ from: Date | undefined;
21
+ to: Date | undefined;
21
22
  description: string;
22
23
  };
23
24
  //# sourceMappingURL=date-helpers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"date-helpers.d.ts","sourceRoot":"","sources":["../../../src/filters/utils/date-helpers.ts"],"names":[],"mappings":"AACA,wBAAgB,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAItD;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAEtD;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAExD;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAExD;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAI1D;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAE1D;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAI3C;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAIzC;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,GAAE;IAAE,YAAY,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,IAAI,CAOrF;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,GAAE;IAAE,YAAY,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,IAAI,CAKnF;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAI7C;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAI3C;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAqBhE;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,MAAM,EACd,MAAM,GAAE,IAAI,GAAG,IAAW,GACzB;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,EAAE,EAAE,IAAI,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CA6E/C"}
1
+ {"version":3,"file":"date-helpers.d.ts","sourceRoot":"","sources":["../../../src/filters/utils/date-helpers.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAY,MAAM,cAAc,CAAC;AAEzD,wBAAgB,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAItD;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAEtD;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAExD;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAExD;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAI1D;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAE1D;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAI3C;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAIzC;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,GAAE;IAAE,YAAY,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,IAAI,CAOrF;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,GAAE;IAAE,YAAY,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,IAAI,CAKnF;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAI7C;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAI3C;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAqBhE;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,MAAM,EACd,MAAM,GAAE,eAAsB,GAC7B;IAAE,IAAI,EAAE,IAAI,GAAG,SAAS,CAAC;IAAC,EAAE,EAAE,IAAI,GAAG,SAAS,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CA8EvE"}
@@ -1,4 +1,5 @@
1
1
  // Custom date utilities to replace date-fns
2
+ import { getLabel } from '../../labels';
2
3
  export function addDays(date, days) {
3
4
  const result = new Date(date);
4
5
  result.setDate(result.getDate() + days);
@@ -80,7 +81,6 @@ export function formatDate(date, formatStr) {
80
81
  }
81
82
  export function getDateRangeForOption(option, locale = 'he') {
82
83
  const now = new Date();
83
- const isHebrew = locale === 'he';
84
84
  switch(option){
85
85
  case 'yesterday':
86
86
  const yesterday = subDays(now, 1);
@@ -110,11 +110,14 @@ export function getDateRangeForOption(option, locale = 'he') {
110
110
  description: `(${formatDate(lastMonthStart, 'MM/yyyy')})`
111
111
  };
112
112
  case 'allPast':
113
- return {
114
- from: new Date(1900, 0, 1),
115
- to: subDays(now, 1),
116
- description: isHebrew ? '(עד אתמול)' : '(until yesterday)'
117
- };
113
+ {
114
+ const yesterday = subDays(now, 1);
115
+ return {
116
+ from: undefined,
117
+ to: endOfDay(yesterday),
118
+ description: `(${getLabel('allPast', locale)})`
119
+ };
120
+ }
118
121
  case 'today':
119
122
  return {
120
123
  from: startOfDay(now),
@@ -143,14 +146,14 @@ export function getDateRangeForOption(option, locale = 'he') {
143
146
  };
144
147
  case 'allFuture':
145
148
  return {
146
- from: now,
147
- to: new Date(2100, 11, 31),
148
- description: isHebrew ? '(מהיום ואילך)' : '(from today onwards)'
149
+ from: startOfDay(now),
150
+ to: undefined,
151
+ description: `(${getLabel('allFuture', locale)})`
149
152
  };
150
153
  default:
151
154
  return {
152
- from: now,
153
- to: now,
155
+ from: startOfDay(now),
156
+ to: endOfDay(now),
154
157
  description: ''
155
158
  };
156
159
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/filters/utils/date-helpers.ts"],"sourcesContent":["// Custom date utilities to replace date-fns\nexport function addDays(date: Date, days: number): Date {\n const result = new Date(date)\n result.setDate(result.getDate() + days)\n return result\n}\n\nexport function subDays(date: Date, days: number): Date {\n return addDays(date, -days)\n}\n\nexport function addWeeks(date: Date, weeks: number): Date {\n return addDays(date, weeks * 7)\n}\n\nexport function subWeeks(date: Date, weeks: number): Date {\n return addWeeks(date, -weeks)\n}\n\nexport function addMonths(date: Date, months: number): Date {\n const result = new Date(date)\n result.setMonth(result.getMonth() + months)\n return result\n}\n\nexport function subMonths(date: Date, months: number): Date {\n return addMonths(date, -months)\n}\n\nexport function startOfDay(date: Date): Date {\n const result = new Date(date)\n result.setHours(0, 0, 0, 0)\n return result\n}\n\nexport function endOfDay(date: Date): Date {\n const result = new Date(date)\n result.setHours(23, 59, 59, 999)\n return result\n}\n\nexport function startOfWeek(date: Date, options: { weekStartsOn?: number } = {}): Date {\n const { weekStartsOn = 0 } = options\n const result = new Date(date)\n const day = result.getDay()\n const diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn\n result.setDate(result.getDate() - diff)\n return startOfDay(result)\n}\n\nexport function endOfWeek(date: Date, options: { weekStartsOn?: number } = {}): Date {\n const { weekStartsOn = 0 } = options\n const result = startOfWeek(date, { weekStartsOn })\n result.setDate(result.getDate() + 6)\n return endOfDay(result)\n}\n\nexport function startOfMonth(date: Date): Date {\n const result = new Date(date)\n result.setDate(1)\n return startOfDay(result)\n}\n\nexport function endOfMonth(date: Date): Date {\n const result = new Date(date)\n result.setMonth(result.getMonth() + 1, 0)\n return endOfDay(result)\n}\n\nexport function formatDate(date: Date, formatStr: string): string {\n const day = date.getDate().toString().padStart(2, '0')\n const month = (date.getMonth() + 1).toString().padStart(2, '0')\n const year = date.getFullYear().toString()\n\n switch (formatStr) {\n case 'dd/MM/yyyy':\n return `${day}/${month}/${year}`\n case 'dd/MM':\n return `${day}/${month}`\n case 'MM/yyyy':\n return `${month}/${year}`\n case 'PPP':\n return date.toLocaleDateString('en-US', {\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n })\n default:\n return date.toLocaleDateString()\n }\n}\n\nexport function getDateRangeForOption(\n option: string,\n locale: 'he' | 'en' = 'he',\n): { from: Date; to: Date; description: string } {\n const now = new Date()\n const isHebrew = locale === 'he'\n\n switch (option) {\n case 'yesterday':\n const yesterday = subDays(now, 1)\n return {\n from: startOfDay(yesterday),\n to: endOfDay(yesterday),\n description: `(${formatDate(yesterday, 'dd/MM/yyyy')})`,\n }\n\n case 'lastWeek':\n const lastWeekStart = startOfWeek(subWeeks(now, 1), { weekStartsOn: 0 })\n const lastWeekEnd = endOfWeek(subWeeks(now, 1), { weekStartsOn: 0 })\n return {\n from: lastWeekStart,\n to: lastWeekEnd,\n description: `(${formatDate(lastWeekStart, 'dd/MM')} - ${formatDate(lastWeekEnd, 'dd/MM/yyyy')})`,\n }\n\n case 'lastMonth':\n const lastMonthStart = startOfMonth(subMonths(now, 1))\n const lastMonthEnd = endOfMonth(subMonths(now, 1))\n return {\n from: lastMonthStart,\n to: lastMonthEnd,\n description: `(${formatDate(lastMonthStart, 'MM/yyyy')})`,\n }\n\n case 'allPast':\n return {\n from: new Date(1900, 0, 1),\n to: subDays(now, 1),\n description: isHebrew ? '(עד אתמול)' : '(until yesterday)',\n }\n\n case 'today':\n return {\n from: startOfDay(now),\n to: endOfDay(now),\n description: `(${formatDate(now, 'dd/MM/yyyy')})`,\n }\n\n case 'nextWeek':\n const thisWeekStart = startOfWeek(now, { weekStartsOn: 0 })\n const thisWeekEnd = endOfWeek(now, { weekStartsOn: 0 })\n return {\n from: thisWeekStart,\n to: thisWeekEnd,\n description: `(${formatDate(thisWeekStart, 'dd/MM')} - ${formatDate(thisWeekEnd, 'dd/MM/yyyy')})`,\n }\n\n case 'nextMonth':\n const thisMonthStart = startOfMonth(now)\n const thisMonthEnd = endOfMonth(now)\n return {\n from: thisMonthStart,\n to: thisMonthEnd,\n description: `(${formatDate(thisMonthStart, 'MM/yyyy')})`,\n }\n\n case 'allFuture':\n return {\n from: now,\n to: new Date(2100, 11, 31),\n description: isHebrew ? '(מהיום ואילך)' : '(from today onwards)',\n }\n\n default:\n return {\n from: now,\n to: now,\n description: '',\n }\n }\n}\n"],"names":["addDays","date","days","result","Date","setDate","getDate","subDays","addWeeks","weeks","subWeeks","addMonths","months","setMonth","getMonth","subMonths","startOfDay","setHours","endOfDay","startOfWeek","options","weekStartsOn","day","getDay","diff","endOfWeek","startOfMonth","endOfMonth","formatDate","formatStr","toString","padStart","month","year","getFullYear","toLocaleDateString","getDateRangeForOption","option","locale","now","isHebrew","yesterday","from","to","description","lastWeekStart","lastWeekEnd","lastMonthStart","lastMonthEnd","thisWeekStart","thisWeekEnd","thisMonthStart","thisMonthEnd"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/filters/utils/date-helpers.ts"],"sourcesContent":["// Custom date utilities to replace date-fns\n\nimport { SupportedLocale, getLabel } from '../../labels';\n\nexport function addDays(date: Date, days: number): Date {\n const result = new Date(date);\n result.setDate(result.getDate() + days);\n return result;\n}\n\nexport function subDays(date: Date, days: number): Date {\n return addDays(date, -days);\n}\n\nexport function addWeeks(date: Date, weeks: number): Date {\n return addDays(date, weeks * 7);\n}\n\nexport function subWeeks(date: Date, weeks: number): Date {\n return addWeeks(date, -weeks);\n}\n\nexport function addMonths(date: Date, months: number): Date {\n const result = new Date(date);\n result.setMonth(result.getMonth() + months);\n return result;\n}\n\nexport function subMonths(date: Date, months: number): Date {\n return addMonths(date, -months);\n}\n\nexport function startOfDay(date: Date): Date {\n const result = new Date(date);\n result.setHours(0, 0, 0, 0);\n return result;\n}\n\nexport function endOfDay(date: Date): Date {\n const result = new Date(date);\n result.setHours(23, 59, 59, 999);\n return result;\n}\n\nexport function startOfWeek(date: Date, options: { weekStartsOn?: number } = {}): Date {\n const { weekStartsOn = 0 } = options;\n const result = new Date(date);\n const day = result.getDay();\n const diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n result.setDate(result.getDate() - diff);\n return startOfDay(result);\n}\n\nexport function endOfWeek(date: Date, options: { weekStartsOn?: number } = {}): Date {\n const { weekStartsOn = 0 } = options;\n const result = startOfWeek(date, { weekStartsOn });\n result.setDate(result.getDate() + 6);\n return endOfDay(result);\n}\n\nexport function startOfMonth(date: Date): Date {\n const result = new Date(date);\n result.setDate(1);\n return startOfDay(result);\n}\n\nexport function endOfMonth(date: Date): Date {\n const result = new Date(date);\n result.setMonth(result.getMonth() + 1, 0);\n return endOfDay(result);\n}\n\nexport function formatDate(date: Date, formatStr: string): string {\n const day = date.getDate().toString().padStart(2, '0');\n const month = (date.getMonth() + 1).toString().padStart(2, '0');\n const year = date.getFullYear().toString();\n\n switch (formatStr) {\n case 'dd/MM/yyyy':\n return `${day}/${month}/${year}`;\n case 'dd/MM':\n return `${day}/${month}`;\n case 'MM/yyyy':\n return `${month}/${year}`;\n case 'PPP':\n return date.toLocaleDateString('en-US', {\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n });\n default:\n return date.toLocaleDateString();\n }\n}\n\nexport function getDateRangeForOption(\n option: string,\n locale: SupportedLocale = 'he',\n): { from: Date | undefined; to: Date | undefined; description: string } {\n const now = new Date();\n\n switch (option) {\n case 'yesterday':\n const yesterday = subDays(now, 1);\n return {\n from: startOfDay(yesterday),\n to: endOfDay(yesterday),\n description: `(${formatDate(yesterday, 'dd/MM/yyyy')})`,\n };\n\n case 'lastWeek':\n const lastWeekStart = startOfWeek(subWeeks(now, 1), { weekStartsOn: 0 });\n const lastWeekEnd = endOfWeek(subWeeks(now, 1), { weekStartsOn: 0 });\n return {\n from: lastWeekStart,\n to: lastWeekEnd,\n description: `(${formatDate(lastWeekStart, 'dd/MM')} - ${formatDate(lastWeekEnd, 'dd/MM/yyyy')})`,\n };\n\n case 'lastMonth':\n const lastMonthStart = startOfMonth(subMonths(now, 1));\n const lastMonthEnd = endOfMonth(subMonths(now, 1));\n return {\n from: lastMonthStart,\n to: lastMonthEnd,\n description: `(${formatDate(lastMonthStart, 'MM/yyyy')})`,\n };\n\n case 'allPast': {\n const yesterday = subDays(now, 1);\n return {\n from: undefined,\n to: endOfDay(yesterday),\n description: `(${getLabel('allPast', locale)})`,\n };\n }\n\n case 'today':\n return {\n from: startOfDay(now),\n to: endOfDay(now),\n description: `(${formatDate(now, 'dd/MM/yyyy')})`,\n };\n\n case 'nextWeek':\n const thisWeekStart = startOfWeek(now, { weekStartsOn: 0 });\n const thisWeekEnd = endOfWeek(now, { weekStartsOn: 0 });\n return {\n from: thisWeekStart,\n to: thisWeekEnd,\n description: `(${formatDate(thisWeekStart, 'dd/MM')} - ${formatDate(thisWeekEnd, 'dd/MM/yyyy')})`,\n };\n\n case 'nextMonth':\n const thisMonthStart = startOfMonth(now);\n const thisMonthEnd = endOfMonth(now);\n return {\n from: thisMonthStart,\n to: thisMonthEnd,\n description: `(${formatDate(thisMonthStart, 'MM/yyyy')})`,\n };\n\n case 'allFuture':\n return {\n from: startOfDay(now),\n to: undefined,\n description: `(${getLabel('allFuture', locale)})`,\n };\n\n default:\n return {\n from: startOfDay(now),\n to: endOfDay(now),\n description: '',\n };\n }\n}\n"],"names":["getLabel","addDays","date","days","result","Date","setDate","getDate","subDays","addWeeks","weeks","subWeeks","addMonths","months","setMonth","getMonth","subMonths","startOfDay","setHours","endOfDay","startOfWeek","options","weekStartsOn","day","getDay","diff","endOfWeek","startOfMonth","endOfMonth","formatDate","formatStr","toString","padStart","month","year","getFullYear","toLocaleDateString","getDateRangeForOption","option","locale","now","yesterday","from","to","description","lastWeekStart","lastWeekEnd","lastMonthStart","lastMonthEnd","undefined","thisWeekStart","thisWeekEnd","thisMonthStart","thisMonthEnd"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"layout-helpers.d.ts","sourceRoot":"","sources":["../../../src/filters/utils/layout-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AAEhE,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,aAAa,EAAE,GAAG,SAAS,EAAE,CAuBvE;AAED,wBAAgB,mBAAmB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAgB1D;AAED,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAiBhE;AAED,eAAO,MAAM,YAAY,QAAS,OAAO,KAAG,MAAM,EA4BjD,CAAA"}
1
+ {"version":3,"file":"layout-helpers.d.ts","sourceRoot":"","sources":["../../../src/filters/utils/layout-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAEjE,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,aAAa,EAAE,GAAG,SAAS,EAAE,CAuBvE;AAED,wBAAgB,mBAAmB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAgB1D;AAED,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAiBhE;AAED,eAAO,MAAM,YAAY,QAAS,OAAO,KAAG,MAAM,EA4BjD,CAAC"}