File size: 1,948 Bytes
db5855f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
import './Search.scss';

import CrossIcon from '@assets/images/cross.svg?react';
import SearchIcon from '@assets/images/search.svg?react';

const sparkClassNames = {
  textFieldContainer: 'spark-text-field-container',
  fieldTextWrapper: 'spark-fieldtext-wrapper',
  textField:
    'spark-text-field spark-text-field-outline spark-text-field-size-m spark-text-field-start-slot-1x spark-text-field-end-slot-1x',
  textFieldStartSlot: 'spark-text-field-start-slot',
  input: 'spark-input spark-input-outline spark-input-size-m spark-focus spark-focus-within spark-focus-snap',
  textFieldEndSlot: 'spark-text-field-end-slot',
  iconButton: 'spark-button spark-button-ghost',
  icon: 'spark-icon',
};

type SearchProps = {
  placeholder?: string;
  className?: string;
  value?: string;
  search?: (value: string) => void;
};

export const Search = ({ placeholder, className = '', value = '', search }: SearchProps): JSX.Element => {
  return (
    <div className={`${sparkClassNames.textFieldContainer} ${className}`}>

      <div className={sparkClassNames.fieldTextWrapper}>

        <div className={sparkClassNames.textField}>

          <div className={sparkClassNames.textFieldStartSlot}>

            <SearchIcon className={sparkClassNames.icon}></SearchIcon>

          </div>

          <input

            type="text"

            className={sparkClassNames.input}

            placeholder={placeholder}

            inputMode="text"

            value={value}

            onChange={(event) => search?.(event.target.value)}

          />

          <div className={sparkClassNames.textFieldEndSlot}>

            {value && (

              <button className={sparkClassNames.iconButton} onClick={() => search?.('')}>

                <CrossIcon className={sparkClassNames.icon} width="10"></CrossIcon>

              </button>

            )}

          </div>

        </div>

      </div>

    </div>
  );
};