summaryrefslogtreecommitdiffstats
path: root/src/react/Checklist.js
blob: 1a42aee43182227bd024d888121c67ecb64e2709 (plain)
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
import React from 'react';
import PropTypes from 'prop-types';
import Checkbox from './Checkbox.js';

const Checklist = ({ items = [], className, onChange }) => (
    <div className={className}>
        {items.map((item, index) => {
            return (
                <div key={`checkbox-item-${index}`} className='checkbox-item'>
                    <Checkbox
                        key={`${item.label}${index}`}
                        label={item.label}
                        value={item.value}
                        checked={item.checked}
                        disabled={item.disabled}
                        onChange={value => {
                            let obj = {};
                            obj[item.value] = value;
                            onChange(obj);
                        }}
                        data-test-id={item.dataTestId}
                    />
                </div>
            );
        })}
    </div>
);

Checklist.propTypes = {
    items: PropTypes.arrayOf(
        PropTypes.shape({
            label: PropTypes.string,
            value: PropTypes.string,
            checked: PropTypes.bool,
            disabled: PropTypes.bool,
            dataTestId: PropTypes.string
        })
    ),
    className: PropTypes.string,
    onChange: PropTypes.func
};

export default Checklist;