Spaces:
Runtime error
Runtime error
openvino_notebooks
/
selector
/src
/components
/ContentSection
/ContentSectionHeader
/ContentSectionHeader.tsx
| import './ContentSectionHeader.scss'; | |
| import { useContext } from 'react'; | |
| import { openFiltersPanel } from '@/components/FiltersPanel/filters-panel-handlers'; | |
| import { Button } from '@/components/shared/Button/Button'; | |
| import { Dropdown } from '@/components/shared/Dropdown/Dropdown'; | |
| import { Search } from '@/components/shared/Search/Search'; | |
| import { SORT_OPTIONS, SortValues } from '@/shared/notebooks.service'; | |
| import { NotebooksContext } from '@/shared/notebooks-context'; | |
| const sparkClassNames = { | |
| fontTitleXs: 'spark-font-200', | |
| }; | |
| type ContentSectionHeaderProps = { | |
| totalCount: number; | |
| filteredCount: number; | |
| }; | |
| export const ContentSectionHeader = ({ totalCount, filteredCount }: ContentSectionHeaderProps): JSX.Element => { | |
| const { searchValue, setSearchValue, resetFilters, sort, setSort } = useContext(NotebooksContext); | |
| const isFiltered = filteredCount !== totalCount; | |
| return ( | |
| <div className="content-section-header"> | |
| <div className="title-container"> | |
| <h1 className={`${sparkClassNames.fontTitleXs} title`}>Notebooks</h1> | |
| <span className={`${sparkClassNames.fontTitleXs} counter`}> | |
| {isFiltered ? `${filteredCount} of ${totalCount}` : totalCount} | |
| </span> | |
| {isFiltered && ( | |
| <Button | |
| text="Reset Filters" | |
| variant="secondary" | |
| size="s" | |
| className="reset-filters-button" | |
| onClick={resetFilters} | |
| ></Button> | |
| )} | |
| </div> | |
| <div className="content-section-header-actions"> | |
| <Button | |
| text={isFiltered ? 'Edit Filters' : 'Add Filters'} | |
| variant="secondary" | |
| size="m" | |
| className="lg-hidden edit-filters-button" | |
| onClick={openFiltersPanel} | |
| ></Button> | |
| <Search | |
| placeholder="Filter notebooks by name" | |
| className="notebooks-search" | |
| search={setSearchValue} | |
| value={searchValue} | |
| ></Search> | |
| <Dropdown | |
| className="notebooks-sort" | |
| options={Object.values(SORT_OPTIONS)} | |
| selectedOption={sort} | |
| selectedPrefix="Sort" | |
| onSelect={(option) => setSort(option as SortValues)} | |
| ></Dropdown> | |
| </div> | |
| </div> | |
| ); | |
| }; | |