diff --git a/package-lock.json b/package-lock.json index 5d37e3ccc..eea517007 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@timechimp/tacugama", - "version": "14.0.0", + "version": "14.2.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@timechimp/tacugama", - "version": "14.0.0", + "version": "14.2.0", "license": "MIT", "dependencies": { "@ag-grid-community/client-side-row-model": "25.0.1", diff --git a/package.json b/package.json index c436ac6bb..bdd5f142e 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "version": "14.0.1", + "version": "14.2.0", "license": "MIT", "main": "dist/cjs/index.js", "module": "dist/esm/index.js", @@ -139,4 +139,4 @@ "*.{ts,tsx}": "eslint --cache --fix", "*.{ts,tsx,js,css,md}": "prettier --write" } -} \ No newline at end of file +} diff --git a/src/components/data-grid/filters/ColumnFilters.tsx b/src/components/data-grid/filters/ColumnFilters.tsx index d5157e96e..983132d27 100755 --- a/src/components/data-grid/filters/ColumnFilters.tsx +++ b/src/components/data-grid/filters/ColumnFilters.tsx @@ -1,17 +1,18 @@ import React, { useCallback, useEffect, useState } from 'react'; import { ColumnFiltersProps, Filter, FilterType, FilterValue } from '../types'; +import { TcDate } from '@timechimp/timechimp-typescript-helpers'; import { SIZE } from 'baseui/button'; import { Dropdown, DropdownItem } from '../../dropdown'; import { MinusIcon } from '../../icons/minus'; import { AddLineIcon } from '../../icons/add-line'; import { useTheme } from '../../../providers'; +import { DatepickerPopover } from '../../datepicker-popover'; import { FilterButton } from './FilterButton'; import { Button } from '../../button'; import { ButtonKind } from '../../../models'; import { ParagraphSmall } from 'baseui/typography'; import { FixedSizeSelect } from '../../fixed-size-select'; import { MultiFilter } from './MultiFilter'; -import { CustomDatepicker } from '../../datepicker'; const LESS_FILTERS_BUTTON_TEST_ID = 'less-filters-button'; const MORE_FILTERS_BUTTON_TEST_ID = 'more-filters-button'; @@ -37,6 +38,7 @@ export const ColumnFilters = ({ onShowLessFiltersChange, }: ColumnFiltersProps) => { const [showLessFilters, setShowLessFilters] = useState(initialShowLessFilters ?? true); + const [datepickerIsOpen, setDatepickerIsOpen] = useState(false); const [internalDates, setInternalDates] = useState([]); const { @@ -105,8 +107,12 @@ export const ColumnFilters = ({ [filterOnValue, isSelectValueActive], ); + const dateFilterIsActive = () => dates?.length === 2; + const isSetFilterActive = (columnField: string) => !!selectedFilterIds[columnField]?.length; + const getDateIconColor = () => (dateFilterIsActive() ? primary : contentSecondary); + const getSetIconColor = (columnField: string) => (isSetFilterActive(columnField) ? primary : contentSecondary); const getSelectActiveItem = (columnField: string, values?: string[] | FilterValue[]) => { @@ -129,6 +135,11 @@ export const ColumnFilters = ({ }; }; + const getDateTitleFormat = (date: Date) => new TcDate(date).format(dateFormat); + + const getDateTitle = (title: string) => + dates && dateFilterIsActive() ? `${getDateTitleFormat(dates[0])} - ${getDateTitleFormat(dates[1])}` : title; + const getSetTitle = (columnField: string, title: string) => { if (!isSetFilterActive(columnField)) { return title; @@ -137,6 +148,14 @@ export const ColumnFilters = ({ return `${length} ${title}`; }; + const toggleDatePicker = () => { + if (datepickerIsOpen) { + setDatepickerIsOpen(false); + return setInternalDates([]); + } + return setDatepickerIsOpen(true); + }; + const onDateSelect = ({ date: selectedDates, columnField }: { date: Date | Date[]; columnField: string }) => { if (!setDates) { return; @@ -150,6 +169,7 @@ export const ColumnFilters = ({ if (selectedDates.length > 1) { setDates(selectedDates); + toggleDatePicker(); filterOnDate(columnField, selectedDates); } }; @@ -220,13 +240,23 @@ export const ColumnFilters = ({ const filterTypes = { [FilterType.date]: ( <> - setDatepickerIsOpen(!datepickerIsOpen)} + startEnhancer={Icon && } + size={SIZE.compact} + title={getDateTitle(title)} + arrows + /> + onDateSelect({ date, columnField })} date={internalDates.length ? internalDates : dates} - locale={locale} + isOpen={datepickerIsOpen} + setIsOpen={toggleDatePicker} + monthsShown={2} range + quickSelect + locale={locale} translations={datepickerTranslations} - dateFormat={dateFormat} /> ), diff --git a/src/components/datepicker/index.ts b/src/components/datepicker/index.ts index 261a9fee8..76c19c501 100755 --- a/src/components/datepicker/index.ts +++ b/src/components/datepicker/index.ts @@ -1,4 +1,3 @@ export * from './Datepicker'; export * from './DatePickerTemplate'; export * from './types'; -export * from './CustomDatepicker'; diff --git a/src/components/select/multi-select/MultiSelect.tsx b/src/components/select/multi-select/MultiSelect.tsx index 5cb375031..d9d7244e4 100755 --- a/src/components/select/multi-select/MultiSelect.tsx +++ b/src/components/select/multi-select/MultiSelect.tsx @@ -290,9 +290,9 @@ export const MultiSelect = < ) : ( <> {creatable ? ( - + ) : ( - )} )} diff --git a/src/components/select/single-select/SingleSelect.tsx b/src/components/select/single-select/SingleSelect.tsx index 1e8306566..69bd06158 100644 --- a/src/components/select/single-select/SingleSelect.tsx +++ b/src/components/select/single-select/SingleSelect.tsx @@ -305,7 +305,7 @@ export const SingleSelect = < const SelectComponent = useMemo(() => { if (creatable) { return ( - + ); } if (loadOptions) { @@ -319,7 +319,7 @@ export const SingleSelect = < /> ); } - return ; }, [cacheOptions, creatable, loadOptions, onCreateOption, props]); return <>{showSkeleton ? : <>{SelectComponent}};