| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- import { RefreshCw, Search, X } from 'lucide-react'
- import type { KeyboardEvent } from 'react'
- import { Button } from 'ui'
- import { Input } from 'ui-patterns/DataInputs/Input'
- interface CronJobsTabHeaderProps {
- search: string
- isRefreshing: boolean
- onSearchChange: (value: string) => void
- onSearchSubmit: () => void
- onClearSearch: () => void
- onRefresh: () => void
- onCreateJob: () => void
- }
- export const CronJobsTabHeader = ({
- search,
- isRefreshing,
- onSearchChange,
- onSearchSubmit,
- onClearSearch,
- onRefresh,
- onCreateJob,
- }: CronJobsTabHeaderProps) => {
- const handleKeyDown = (event: KeyboardEvent<HTMLInputElement>) => {
- if (event.key === 'Enter' || event.code === 'NumpadEnter') {
- onSearchSubmit()
- }
- }
- return (
- <div className="bg-surface-200 py-3 px-10 flex items-center justify-between flex-wrap gap-y-2">
- <Input
- size="tiny"
- className="w-52"
- placeholder="Search for a job"
- icon={<Search />}
- value={search}
- onChange={(e) => onSearchChange(e.target.value)}
- onKeyDown={handleKeyDown}
- actions={[
- search && (
- <Button
- key="clear-search"
- size="tiny"
- type="text"
- icon={<X />}
- onClick={onClearSearch}
- className="p-0 h-5 w-5"
- />
- ),
- ]}
- />
- <div className="flex items-center gap-x-2">
- <Button type="default" icon={<RefreshCw />} loading={isRefreshing} onClick={onRefresh}>
- Refresh
- </Button>
- <Button onClick={onCreateJob}>Create job</Button>
- </div>
- </div>
- )
- }
|