@cleartrip/ct-design-checkbox-group 4.0.0-SNAPSHOT-test.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +63 -0
- package/dist/CheckboxGroup.d.ts +6 -0
- package/dist/CheckboxGroup.d.ts.map +1 -0
- package/dist/ct-design-checkbox-group.browser.cjs.js +2 -0
- package/dist/ct-design-checkbox-group.browser.cjs.js.map +1 -0
- package/dist/ct-design-checkbox-group.browser.esm.js +2 -0
- package/dist/ct-design-checkbox-group.browser.esm.js.map +1 -0
- package/dist/ct-design-checkbox-group.cjs.js +66 -0
- package/dist/ct-design-checkbox-group.cjs.js.map +1 -0
- package/dist/ct-design-checkbox-group.esm.js +64 -0
- package/dist/ct-design-checkbox-group.esm.js.map +1 -0
- package/dist/ct-design-checkbox-group.umd.js +65 -0
- package/dist/ct-design-checkbox-group.umd.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/type.d.ts +16 -0
- package/dist/type.d.ts.map +1 -0
- package/package.json +51 -0
- package/src/CheckboxGroup.tsx +94 -0
- package/src/index.ts +2 -0
- package/src/type.ts +29 -0
package/README.md
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# CheckboxGroup
|
|
2
|
+
|
|
3
|
+
A group container for multiple checkbox components.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Installation
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
npm install @cleartrip/ct-design-checkbox-group
|
|
11
|
+
# or
|
|
12
|
+
pnpm add @cleartrip/ct-design-checkbox-group
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
### Peer dependencies
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
# Required for all targets
|
|
19
|
+
npm install react
|
|
20
|
+
|
|
21
|
+
# Web only
|
|
22
|
+
npm install react-dom
|
|
23
|
+
|
|
24
|
+
# React Native only
|
|
25
|
+
npm install react-native
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## Usage
|
|
31
|
+
|
|
32
|
+
### Basic
|
|
33
|
+
|
|
34
|
+
```tsx
|
|
35
|
+
import { CheckboxGroup } from '@cleartrip/ct-design-checkbox-group';
|
|
36
|
+
|
|
37
|
+
function Example() {
|
|
38
|
+
return (
|
|
39
|
+
<CheckboxGroup>
|
|
40
|
+
{/* Basic usage */}
|
|
41
|
+
</CheckboxGroup>
|
|
42
|
+
);
|
|
43
|
+
}
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
## Accessibility
|
|
49
|
+
|
|
50
|
+
- The component follows accessibility best practices
|
|
51
|
+
- Ensure proper ARIA attributes are provided where needed
|
|
52
|
+
- Test with screen readers to ensure usability
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
## Migration
|
|
57
|
+
|
|
58
|
+
If migrating from a previous version:
|
|
59
|
+
|
|
60
|
+
```diff
|
|
61
|
+
- import { CheckboxGroup } from 'yagami/core/components';
|
|
62
|
+
+ import { CheckboxGroup } from '@cleartrip/ct-design-checkbox-group';
|
|
63
|
+
```
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { ContainerRef } from '@cleartrip/ct-design-container';
|
|
3
|
+
import { ICheckboxGroup } from './type';
|
|
4
|
+
declare const CheckboxGroup: React.ForwardRefExoticComponent<ICheckboxGroup & React.RefAttributes<ContainerRef>>;
|
|
5
|
+
export default CheckboxGroup;
|
|
6
|
+
//# sourceMappingURL=CheckboxGroup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CheckboxGroup.d.ts","sourceRoot":"","sources":["../packages/components/CheckboxGroup/src/CheckboxGroup.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA0C,MAAM,OAAO,CAAC;AAI/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAInE,OAAO,EAAE,cAAc,EAAmB,MAAM,QAAQ,CAAC;AAqBzD,QAAA,MAAM,aAAa,qFA4DlB,CAAC;AAIF,eAAe,aAAa,CAAC"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var e=require("react/jsx-runtime"),i=require("react"),o=require("@cleartrip/ct-design-checkbox"),n=require("@cleartrip/ct-design-container"),r=require("@cleartrip/ct-design-typography");const t=require("@cleartrip/ct-design-style-manager").makeStyles(e=>({root:{padding:null==e?void 0:e.spacing[2]},heading:{display:"flex",flexDirection:"column",marginBottom:null==e?void 0:e.spacing[3],color:null==e?void 0:e.color.background.primary},checkboxContainer:{display:"flex",flexDirection:"column",marginBottom:null==e?void 0:e.spacing[3]}})),l=i.forwardRef(({checkboxList:l,heading:c,onClick:a,styleConfig:s,isMulti:d=!0},u)=>{const[g,p]=i.useState([]),{root:h=[],heading:x=[],checkboxContainer:f=[]}=s||{};i.useEffect(()=>{var e;const i=null!==(e=null==l?void 0:l.filter(e=>null==e?void 0:e.checked))&&void 0!==e?e:[];if(!d&&i.length>1)throw new Error("Multiple selected options are not allowed in single selection mode");p(i)},[l,d]);const y=e=>{let i=[...g];const o=i.findIndex(i=>i.id===e.id);o>=0?d?i.splice(o,1):i=[]:d?i.push(e):i=[e],p(i),null==a||a(e,i)};return e.jsxs(n.Container,{ref:u,styleConfig:{root:[null==t?void 0:t.root,...h]},children:[!!c&&("string"==typeof c?e.jsx(r.Typography,{variant:r.TypographyVariant.B2,styleConfig:{root:[null==t?void 0:t.heading,...x]},children:c}):c),null==l?void 0:l.map(i=>{const r=g.some(e=>(null==e?void 0:e.id)===(null==i?void 0:i.id));return e.jsx(n.Container,{styleConfig:{root:[null==t?void 0:t.checkboxContainer,...f]},children:e.jsx(o.Checkbox,Object.assign({},i,{onChange:y,checked:r}))},i.id)})]})});l.displayName="CheckboxGroup",exports.CheckboxGroup=l;
|
|
2
|
+
//# sourceMappingURL=ct-design-checkbox-group.browser.cjs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ct-design-checkbox-group.browser.cjs.js","sources":["../packages/components/CheckboxGroup/src/CheckboxGroup.tsx"],"sourcesContent":[null],"names":["staticCheckboxGroupStyles","makeStyles","theme","root","padding","spacing","heading","display","flexDirection","marginBottom","color","background","primary","checkboxContainer","CheckboxGroup","forwardRef","checkboxList","onClick","styleConfig","isMulti","ref","selectedOptions","setSelectedOptions","useState","customRootStyles","customHeadingStyles","customCheckboxContainerStyles","useEffect","initialSelectedOptions","_a","filter","option","checked","length","Error","handleOptionClick","selectedOption","newSelectedOptions","optionIndex","findIndex","id","splice","push","_jsxs","jsxs","Container","children","_jsx","jsx","Typography","variant","TypographyVariant","B2","map","checkboxOption","isChecked","some","Checkbox","Object","assign","onChange","displayName"],"mappings":"uMAUA,MAAMA,gDAA4BC,WAAYC,IACrC,CACLC,KAAM,CACJC,QAASF,aAAK,EAALA,EAAOG,QAAQ,IAE1BC,QAAS,CACPC,QAAS,OACTC,cAAe,SACfC,aAAcP,aAAK,EAALA,EAAOG,QAAQ,GAC7BK,MAAOR,aAAK,EAALA,EAAOQ,MAAMC,WAAWC,SAEjCC,kBAAmB,CACjBN,QAAS,OACTC,cAAe,SACfC,aAAcP,aAAK,EAALA,EAAOG,QAAQ,OAK7BS,EAAgBC,EAAUA,WAC9B,EAAGC,eAAcV,UAASW,UAASC,cAAaC,WAAU,GAAQC,KAChE,MAAOC,EAAiBC,GAAsBC,EAAQA,SAAoB,KAGxEpB,KAAMqB,EAAmB,GACzBlB,QAASmB,EAAsB,GAC/BZ,kBAAmBa,EAAgC,IACjDR,GAAe,CAAA,EAEnBS,EAAAA,UAAU,WACR,MAAMC,EAA8E,QAArDC,EAAAb,aAAY,EAAZA,EAAcc,OAAQC,GAAWA,aAAM,EAANA,EAAQC,gBAAY,IAAAH,EAAAA,EAAA,GACpF,IAAKV,GAAWS,EAAuBK,OAAS,EAC9C,MAAM,IAAIC,MAAM,sEAElBZ,EAAmBM,IAClB,CAACZ,EAAcG,IAElB,MAAMgB,EAAqBC,IACzB,IAAIC,EAAqB,IAAIhB,GAC7B,MAAMiB,EAAcD,EAAmBE,UAAWR,GAAWA,EAAOS,KAAOJ,EAAeI,IACtFF,GAAe,EACbnB,EAASkB,EAAmBI,OAAOH,EAAa,GAC/CD,EAAqB,GACjBlB,EACTkB,EAAmBK,KAAKN,GAExBC,EAAqB,CAACD,GAExBd,EAAmBe,GACnBpB,SAAAA,EAAUmB,EAAgBC,IAG5B,OACEM,EAAAC,KAACC,YAAS,CAACzB,IAAKA,EAAKF,YAAa,CAAEf,KAAM,CAACH,aAAyB,EAAzBA,EAA2BG,QAASqB,IAC5EsB,SAAA,GAAExC,IACmB,iBAAZA,EACNyC,EAAAC,IAACC,EAAUA,WAAA,CACTC,QAASC,EAAAA,kBAAkBC,GAC3BlC,YAAa,CAAEf,KAAM,CAACH,aAAyB,EAAzBA,EAA2BM,WAAYmB,IAAsBqB,SAElFxC,IACU,GAIhBU,aAAA,EAAAA,EAAcqC,IAAKC,IAClB,MAAMC,EAAYlC,EAAgBmC,KAAMzB,IAAWA,aAAM,EAANA,EAAQS,OAAOc,aAAc,EAAdA,EAAgBd,KAClF,OACEO,EAAAA,IAACF,EAAAA,WAEC3B,YAAa,CAAEf,KAAM,CAACH,aAAA,EAAAA,EAA2Ba,qBAAsBa,IAAgCoB,SAEvGC,EAAAA,IAACU,EAAAA,SAAQC,OAAAC,OAAA,CAAA,EAAKL,EAAgB,CAAAM,SAAUzB,EAAmBH,QAASuB,MAH/DD,EAAed,WAYlC1B,EAAc+C,YAAc"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{jsxs as o,jsx as i}from"react/jsx-runtime";import{forwardRef as n,useState as e,useEffect as l}from"react";import{Checkbox as r}from"@cleartrip/ct-design-checkbox";import{Container as t}from"@cleartrip/ct-design-container";import{Typography as c,TypographyVariant as d}from"@cleartrip/ct-design-typography";import{makeStyles as a}from"@cleartrip/ct-design-style-manager";const s=a(o=>({root:{padding:null==o?void 0:o.spacing[2]},heading:{display:"flex",flexDirection:"column",marginBottom:null==o?void 0:o.spacing[3],color:null==o?void 0:o.color.background.primary},checkboxContainer:{display:"flex",flexDirection:"column",marginBottom:null==o?void 0:o.spacing[3]}})),p=n(({checkboxList:n,heading:a,onClick:p,styleConfig:g,isMulti:m=!0},u)=>{const[h,f]=e([]),{root:v=[],heading:x=[],checkboxContainer:y=[]}=g||{};l(()=>{var o;const i=null!==(o=null==n?void 0:n.filter(o=>null==o?void 0:o.checked))&&void 0!==o?o:[];if(!m&&i.length>1)throw new Error("Multiple selected options are not allowed in single selection mode");f(i)},[n,m]);const k=o=>{let i=[...h];const n=i.findIndex(i=>i.id===o.id);n>=0?m?i.splice(n,1):i=[]:m?i.push(o):i=[o],f(i),null==p||p(o,i)};return o(t,{ref:u,styleConfig:{root:[null==s?void 0:s.root,...v]},children:[!!a&&("string"==typeof a?i(c,{variant:d.B2,styleConfig:{root:[null==s?void 0:s.heading,...x]},children:a}):a),null==n?void 0:n.map(o=>{const n=h.some(i=>(null==i?void 0:i.id)===(null==o?void 0:o.id));return i(t,{styleConfig:{root:[null==s?void 0:s.checkboxContainer,...y]},children:i(r,Object.assign({},o,{onChange:k,checked:n}))},o.id)})]})});p.displayName="CheckboxGroup";export{p as CheckboxGroup};
|
|
2
|
+
//# sourceMappingURL=ct-design-checkbox-group.browser.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ct-design-checkbox-group.browser.esm.js","sources":["../packages/components/CheckboxGroup/src/CheckboxGroup.tsx"],"sourcesContent":[null],"names":["staticCheckboxGroupStyles","makeStyles","theme","root","padding","spacing","heading","display","flexDirection","marginBottom","color","background","primary","checkboxContainer","CheckboxGroup","forwardRef","checkboxList","onClick","styleConfig","isMulti","ref","selectedOptions","setSelectedOptions","useState","customRootStyles","customHeadingStyles","customCheckboxContainerStyles","useEffect","initialSelectedOptions","_a","filter","option","checked","length","Error","handleOptionClick","selectedOption","newSelectedOptions","optionIndex","findIndex","id","splice","push","_jsxs","Container","children","_jsx","Typography","variant","TypographyVariant","B2","map","checkboxOption","isChecked","some","Checkbox","Object","assign","onChange","displayName"],"mappings":"0XAUA,MAAMA,EAA4BC,EAAYC,IACrC,CACLC,KAAM,CACJC,QAASF,aAAK,EAALA,EAAOG,QAAQ,IAE1BC,QAAS,CACPC,QAAS,OACTC,cAAe,SACfC,aAAcP,aAAK,EAALA,EAAOG,QAAQ,GAC7BK,MAAOR,aAAK,EAALA,EAAOQ,MAAMC,WAAWC,SAEjCC,kBAAmB,CACjBN,QAAS,OACTC,cAAe,SACfC,aAAcP,aAAK,EAALA,EAAOG,QAAQ,OAK7BS,EAAgBC,EACpB,EAAGC,eAAcV,UAASW,UAASC,cAAaC,WAAU,GAAQC,KAChE,MAAOC,EAAiBC,GAAsBC,EAA4B,KAGxEpB,KAAMqB,EAAmB,GACzBlB,QAASmB,EAAsB,GAC/BZ,kBAAmBa,EAAgC,IACjDR,GAAe,CAAA,EAEnBS,EAAU,WACR,MAAMC,EAA8E,QAArDC,EAAAb,aAAY,EAAZA,EAAcc,OAAQC,GAAWA,aAAM,EAANA,EAAQC,gBAAY,IAAAH,EAAAA,EAAA,GACpF,IAAKV,GAAWS,EAAuBK,OAAS,EAC9C,MAAM,IAAIC,MAAM,sEAElBZ,EAAmBM,IAClB,CAACZ,EAAcG,IAElB,MAAMgB,EAAqBC,IACzB,IAAIC,EAAqB,IAAIhB,GAC7B,MAAMiB,EAAcD,EAAmBE,UAAWR,GAAWA,EAAOS,KAAOJ,EAAeI,IACtFF,GAAe,EACbnB,EAASkB,EAAmBI,OAAOH,EAAa,GAC/CD,EAAqB,GACjBlB,EACTkB,EAAmBK,KAAKN,GAExBC,EAAqB,CAACD,GAExBd,EAAmBe,GACnBpB,SAAAA,EAAUmB,EAAgBC,IAG5B,OACEM,EAACC,EAAS,CAACxB,IAAKA,EAAKF,YAAa,CAAEf,KAAM,CAACH,aAAyB,EAAzBA,EAA2BG,QAASqB,IAC5EqB,SAAA,GAAEvC,IACmB,iBAAZA,EACNwC,EAACC,EAAU,CACTC,QAASC,EAAkBC,GAC3BhC,YAAa,CAAEf,KAAM,CAACH,aAAyB,EAAzBA,EAA2BM,WAAYmB,IAAsBoB,SAElFvC,IACU,GAIhBU,aAAA,EAAAA,EAAcmC,IAAKC,IAClB,MAAMC,EAAYhC,EAAgBiC,KAAMvB,IAAWA,aAAM,EAANA,EAAQS,OAAOY,aAAc,EAAdA,EAAgBZ,KAClF,OACEM,EAACF,GAEC1B,YAAa,CAAEf,KAAM,CAACH,aAAA,EAAAA,EAA2Ba,qBAAsBa,IAAgCmB,SAEvGC,EAACS,EAAQC,OAAAC,OAAA,CAAA,EAAKL,EAAgB,CAAAM,SAAUvB,EAAmBH,QAASqB,MAH/DD,EAAeZ,WAYlC1B,EAAc6C,YAAc"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
+
var react = require('react');
|
|
5
|
+
var ctDesignCheckbox = require('@cleartrip/ct-design-checkbox');
|
|
6
|
+
var ctDesignContainer = require('@cleartrip/ct-design-container');
|
|
7
|
+
var ctDesignTypography = require('@cleartrip/ct-design-typography');
|
|
8
|
+
var ctDesignStyleManager = require('@cleartrip/ct-design-style-manager');
|
|
9
|
+
|
|
10
|
+
const staticCheckboxGroupStyles = ctDesignStyleManager.makeStyles((theme) => {
|
|
11
|
+
return {
|
|
12
|
+
root: {
|
|
13
|
+
padding: theme === null || theme === void 0 ? void 0 : theme.spacing[2],
|
|
14
|
+
},
|
|
15
|
+
heading: {
|
|
16
|
+
display: 'flex',
|
|
17
|
+
flexDirection: 'column',
|
|
18
|
+
marginBottom: theme === null || theme === void 0 ? void 0 : theme.spacing[3],
|
|
19
|
+
color: theme === null || theme === void 0 ? void 0 : theme.color.background.primary,
|
|
20
|
+
},
|
|
21
|
+
checkboxContainer: {
|
|
22
|
+
display: 'flex',
|
|
23
|
+
flexDirection: 'column',
|
|
24
|
+
marginBottom: theme === null || theme === void 0 ? void 0 : theme.spacing[3],
|
|
25
|
+
},
|
|
26
|
+
};
|
|
27
|
+
});
|
|
28
|
+
const CheckboxGroup = react.forwardRef(({ checkboxList, heading, onClick, styleConfig, isMulti = true }, ref) => {
|
|
29
|
+
const [selectedOptions, setSelectedOptions] = react.useState([]);
|
|
30
|
+
const { root: customRootStyles = [], heading: customHeadingStyles = [], checkboxContainer: customCheckboxContainerStyles = [], } = styleConfig || {};
|
|
31
|
+
react.useEffect(() => {
|
|
32
|
+
var _a;
|
|
33
|
+
const initialSelectedOptions = (_a = checkboxList === null || checkboxList === void 0 ? void 0 : checkboxList.filter((option) => option === null || option === void 0 ? void 0 : option.checked)) !== null && _a !== void 0 ? _a : [];
|
|
34
|
+
if (!isMulti && initialSelectedOptions.length > 1) {
|
|
35
|
+
throw new Error('Multiple selected options are not allowed in single selection mode');
|
|
36
|
+
}
|
|
37
|
+
setSelectedOptions(initialSelectedOptions);
|
|
38
|
+
}, [checkboxList, isMulti]);
|
|
39
|
+
const handleOptionClick = (selectedOption) => {
|
|
40
|
+
let newSelectedOptions = [...selectedOptions];
|
|
41
|
+
const optionIndex = newSelectedOptions.findIndex((option) => option.id === selectedOption.id);
|
|
42
|
+
if (optionIndex >= 0) {
|
|
43
|
+
if (isMulti)
|
|
44
|
+
newSelectedOptions.splice(optionIndex, 1);
|
|
45
|
+
else
|
|
46
|
+
newSelectedOptions = [];
|
|
47
|
+
}
|
|
48
|
+
else if (isMulti) {
|
|
49
|
+
newSelectedOptions.push(selectedOption);
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
newSelectedOptions = [selectedOption];
|
|
53
|
+
}
|
|
54
|
+
setSelectedOptions(newSelectedOptions);
|
|
55
|
+
onClick === null || onClick === void 0 ? void 0 : onClick(selectedOption, newSelectedOptions);
|
|
56
|
+
};
|
|
57
|
+
return (jsxRuntime.jsxs(ctDesignContainer.Container, { ref: ref, styleConfig: { root: [staticCheckboxGroupStyles === null || staticCheckboxGroupStyles === void 0 ? void 0 : staticCheckboxGroupStyles.root, ...customRootStyles] }, children: [!!heading &&
|
|
58
|
+
(typeof heading === 'string' ? (jsxRuntime.jsx(ctDesignTypography.Typography, { variant: ctDesignTypography.TypographyVariant.B2, styleConfig: { root: [staticCheckboxGroupStyles === null || staticCheckboxGroupStyles === void 0 ? void 0 : staticCheckboxGroupStyles.heading, ...customHeadingStyles] }, children: heading })) : (heading)), checkboxList === null || checkboxList === void 0 ? void 0 : checkboxList.map((checkboxOption) => {
|
|
59
|
+
const isChecked = selectedOptions.some((option) => (option === null || option === void 0 ? void 0 : option.id) === (checkboxOption === null || checkboxOption === void 0 ? void 0 : checkboxOption.id));
|
|
60
|
+
return (jsxRuntime.jsx(ctDesignContainer.Container, { styleConfig: { root: [staticCheckboxGroupStyles === null || staticCheckboxGroupStyles === void 0 ? void 0 : staticCheckboxGroupStyles.checkboxContainer, ...customCheckboxContainerStyles] }, children: jsxRuntime.jsx(ctDesignCheckbox.Checkbox, Object.assign({}, checkboxOption, { onChange: handleOptionClick, checked: isChecked })) }, checkboxOption.id));
|
|
61
|
+
})] }));
|
|
62
|
+
});
|
|
63
|
+
CheckboxGroup.displayName = 'CheckboxGroup';
|
|
64
|
+
|
|
65
|
+
exports.CheckboxGroup = CheckboxGroup;
|
|
66
|
+
//# sourceMappingURL=ct-design-checkbox-group.cjs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ct-design-checkbox-group.cjs.js","sources":["../packages/components/CheckboxGroup/src/CheckboxGroup.tsx"],"sourcesContent":[null],"names":["makeStyles","forwardRef","useState","useEffect","_jsxs","Container","_jsx","Typography","TypographyVariant","Checkbox"],"mappings":"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"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { forwardRef, useState, useEffect } from 'react';
|
|
3
|
+
import { Checkbox } from '@cleartrip/ct-design-checkbox';
|
|
4
|
+
import { Container } from '@cleartrip/ct-design-container';
|
|
5
|
+
import { Typography, TypographyVariant } from '@cleartrip/ct-design-typography';
|
|
6
|
+
import { makeStyles } from '@cleartrip/ct-design-style-manager';
|
|
7
|
+
|
|
8
|
+
const staticCheckboxGroupStyles = makeStyles((theme) => {
|
|
9
|
+
return {
|
|
10
|
+
root: {
|
|
11
|
+
padding: theme === null || theme === void 0 ? void 0 : theme.spacing[2],
|
|
12
|
+
},
|
|
13
|
+
heading: {
|
|
14
|
+
display: 'flex',
|
|
15
|
+
flexDirection: 'column',
|
|
16
|
+
marginBottom: theme === null || theme === void 0 ? void 0 : theme.spacing[3],
|
|
17
|
+
color: theme === null || theme === void 0 ? void 0 : theme.color.background.primary,
|
|
18
|
+
},
|
|
19
|
+
checkboxContainer: {
|
|
20
|
+
display: 'flex',
|
|
21
|
+
flexDirection: 'column',
|
|
22
|
+
marginBottom: theme === null || theme === void 0 ? void 0 : theme.spacing[3],
|
|
23
|
+
},
|
|
24
|
+
};
|
|
25
|
+
});
|
|
26
|
+
const CheckboxGroup = forwardRef(({ checkboxList, heading, onClick, styleConfig, isMulti = true }, ref) => {
|
|
27
|
+
const [selectedOptions, setSelectedOptions] = useState([]);
|
|
28
|
+
const { root: customRootStyles = [], heading: customHeadingStyles = [], checkboxContainer: customCheckboxContainerStyles = [], } = styleConfig || {};
|
|
29
|
+
useEffect(() => {
|
|
30
|
+
var _a;
|
|
31
|
+
const initialSelectedOptions = (_a = checkboxList === null || checkboxList === void 0 ? void 0 : checkboxList.filter((option) => option === null || option === void 0 ? void 0 : option.checked)) !== null && _a !== void 0 ? _a : [];
|
|
32
|
+
if (!isMulti && initialSelectedOptions.length > 1) {
|
|
33
|
+
throw new Error('Multiple selected options are not allowed in single selection mode');
|
|
34
|
+
}
|
|
35
|
+
setSelectedOptions(initialSelectedOptions);
|
|
36
|
+
}, [checkboxList, isMulti]);
|
|
37
|
+
const handleOptionClick = (selectedOption) => {
|
|
38
|
+
let newSelectedOptions = [...selectedOptions];
|
|
39
|
+
const optionIndex = newSelectedOptions.findIndex((option) => option.id === selectedOption.id);
|
|
40
|
+
if (optionIndex >= 0) {
|
|
41
|
+
if (isMulti)
|
|
42
|
+
newSelectedOptions.splice(optionIndex, 1);
|
|
43
|
+
else
|
|
44
|
+
newSelectedOptions = [];
|
|
45
|
+
}
|
|
46
|
+
else if (isMulti) {
|
|
47
|
+
newSelectedOptions.push(selectedOption);
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
newSelectedOptions = [selectedOption];
|
|
51
|
+
}
|
|
52
|
+
setSelectedOptions(newSelectedOptions);
|
|
53
|
+
onClick === null || onClick === void 0 ? void 0 : onClick(selectedOption, newSelectedOptions);
|
|
54
|
+
};
|
|
55
|
+
return (jsxs(Container, { ref: ref, styleConfig: { root: [staticCheckboxGroupStyles === null || staticCheckboxGroupStyles === void 0 ? void 0 : staticCheckboxGroupStyles.root, ...customRootStyles] }, children: [!!heading &&
|
|
56
|
+
(typeof heading === 'string' ? (jsx(Typography, { variant: TypographyVariant.B2, styleConfig: { root: [staticCheckboxGroupStyles === null || staticCheckboxGroupStyles === void 0 ? void 0 : staticCheckboxGroupStyles.heading, ...customHeadingStyles] }, children: heading })) : (heading)), checkboxList === null || checkboxList === void 0 ? void 0 : checkboxList.map((checkboxOption) => {
|
|
57
|
+
const isChecked = selectedOptions.some((option) => (option === null || option === void 0 ? void 0 : option.id) === (checkboxOption === null || checkboxOption === void 0 ? void 0 : checkboxOption.id));
|
|
58
|
+
return (jsx(Container, { styleConfig: { root: [staticCheckboxGroupStyles === null || staticCheckboxGroupStyles === void 0 ? void 0 : staticCheckboxGroupStyles.checkboxContainer, ...customCheckboxContainerStyles] }, children: jsx(Checkbox, Object.assign({}, checkboxOption, { onChange: handleOptionClick, checked: isChecked })) }, checkboxOption.id));
|
|
59
|
+
})] }));
|
|
60
|
+
});
|
|
61
|
+
CheckboxGroup.displayName = 'CheckboxGroup';
|
|
62
|
+
|
|
63
|
+
export { CheckboxGroup };
|
|
64
|
+
//# sourceMappingURL=ct-design-checkbox-group.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ct-design-checkbox-group.esm.js","sources":["../packages/components/CheckboxGroup/src/CheckboxGroup.tsx"],"sourcesContent":[null],"names":["_jsxs","_jsx"],"mappings":"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"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
(function (global, factory) {
|
|
2
|
+
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('react/jsx-runtime'), require('react'), require('@cleartrip/ct-design-checkbox'), require('@cleartrip/ct-design-container'), require('@cleartrip/ct-design-typography'), require('@cleartrip/ct-design-style-manager')) :
|
|
3
|
+
typeof define === 'function' && define.amd ? define(['exports', 'react/jsx-runtime', 'react', '@cleartrip/ct-design-checkbox', '@cleartrip/ct-design-container', '@cleartrip/ct-design-typography', '@cleartrip/ct-design-style-manager'], factory) :
|
|
4
|
+
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.CTDesignSystemCheckboxGroup = {}, global.jsxRuntime, global.React, global.ctDesignCheckbox, global.ctDesignContainer, global.ctDesignTypography, global.ctDesignStyleManager));
|
|
5
|
+
})(this, (function (exports, jsxRuntime, react, ctDesignCheckbox, ctDesignContainer, ctDesignTypography, ctDesignStyleManager) { 'use strict';
|
|
6
|
+
|
|
7
|
+
const staticCheckboxGroupStyles = ctDesignStyleManager.makeStyles((theme) => {
|
|
8
|
+
return {
|
|
9
|
+
root: {
|
|
10
|
+
padding: theme === null || theme === void 0 ? void 0 : theme.spacing[2],
|
|
11
|
+
},
|
|
12
|
+
heading: {
|
|
13
|
+
display: 'flex',
|
|
14
|
+
flexDirection: 'column',
|
|
15
|
+
marginBottom: theme === null || theme === void 0 ? void 0 : theme.spacing[3],
|
|
16
|
+
color: theme === null || theme === void 0 ? void 0 : theme.color.background.primary,
|
|
17
|
+
},
|
|
18
|
+
checkboxContainer: {
|
|
19
|
+
display: 'flex',
|
|
20
|
+
flexDirection: 'column',
|
|
21
|
+
marginBottom: theme === null || theme === void 0 ? void 0 : theme.spacing[3],
|
|
22
|
+
},
|
|
23
|
+
};
|
|
24
|
+
});
|
|
25
|
+
const CheckboxGroup = react.forwardRef(({ checkboxList, heading, onClick, styleConfig, isMulti = true }, ref) => {
|
|
26
|
+
const [selectedOptions, setSelectedOptions] = react.useState([]);
|
|
27
|
+
const { root: customRootStyles = [], heading: customHeadingStyles = [], checkboxContainer: customCheckboxContainerStyles = [], } = styleConfig || {};
|
|
28
|
+
react.useEffect(() => {
|
|
29
|
+
var _a;
|
|
30
|
+
const initialSelectedOptions = (_a = checkboxList === null || checkboxList === void 0 ? void 0 : checkboxList.filter((option) => option === null || option === void 0 ? void 0 : option.checked)) !== null && _a !== void 0 ? _a : [];
|
|
31
|
+
if (!isMulti && initialSelectedOptions.length > 1) {
|
|
32
|
+
throw new Error('Multiple selected options are not allowed in single selection mode');
|
|
33
|
+
}
|
|
34
|
+
setSelectedOptions(initialSelectedOptions);
|
|
35
|
+
}, [checkboxList, isMulti]);
|
|
36
|
+
const handleOptionClick = (selectedOption) => {
|
|
37
|
+
let newSelectedOptions = [...selectedOptions];
|
|
38
|
+
const optionIndex = newSelectedOptions.findIndex((option) => option.id === selectedOption.id);
|
|
39
|
+
if (optionIndex >= 0) {
|
|
40
|
+
if (isMulti)
|
|
41
|
+
newSelectedOptions.splice(optionIndex, 1);
|
|
42
|
+
else
|
|
43
|
+
newSelectedOptions = [];
|
|
44
|
+
}
|
|
45
|
+
else if (isMulti) {
|
|
46
|
+
newSelectedOptions.push(selectedOption);
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
newSelectedOptions = [selectedOption];
|
|
50
|
+
}
|
|
51
|
+
setSelectedOptions(newSelectedOptions);
|
|
52
|
+
onClick === null || onClick === void 0 ? void 0 : onClick(selectedOption, newSelectedOptions);
|
|
53
|
+
};
|
|
54
|
+
return (jsxRuntime.jsxs(ctDesignContainer.Container, { ref: ref, styleConfig: { root: [staticCheckboxGroupStyles === null || staticCheckboxGroupStyles === void 0 ? void 0 : staticCheckboxGroupStyles.root, ...customRootStyles] }, children: [!!heading &&
|
|
55
|
+
(typeof heading === 'string' ? (jsxRuntime.jsx(ctDesignTypography.Typography, { variant: ctDesignTypography.TypographyVariant.B2, styleConfig: { root: [staticCheckboxGroupStyles === null || staticCheckboxGroupStyles === void 0 ? void 0 : staticCheckboxGroupStyles.heading, ...customHeadingStyles] }, children: heading })) : (heading)), checkboxList === null || checkboxList === void 0 ? void 0 : checkboxList.map((checkboxOption) => {
|
|
56
|
+
const isChecked = selectedOptions.some((option) => (option === null || option === void 0 ? void 0 : option.id) === (checkboxOption === null || checkboxOption === void 0 ? void 0 : checkboxOption.id));
|
|
57
|
+
return (jsxRuntime.jsx(ctDesignContainer.Container, { styleConfig: { root: [staticCheckboxGroupStyles === null || staticCheckboxGroupStyles === void 0 ? void 0 : staticCheckboxGroupStyles.checkboxContainer, ...customCheckboxContainerStyles] }, children: jsxRuntime.jsx(ctDesignCheckbox.Checkbox, Object.assign({}, checkboxOption, { onChange: handleOptionClick, checked: isChecked })) }, checkboxOption.id));
|
|
58
|
+
})] }));
|
|
59
|
+
});
|
|
60
|
+
CheckboxGroup.displayName = 'CheckboxGroup';
|
|
61
|
+
|
|
62
|
+
exports.CheckboxGroup = CheckboxGroup;
|
|
63
|
+
|
|
64
|
+
}));
|
|
65
|
+
//# sourceMappingURL=ct-design-checkbox-group.umd.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ct-design-checkbox-group.umd.js","sources":["../packages/components/CheckboxGroup/src/CheckboxGroup.tsx"],"sourcesContent":[null],"names":["makeStyles","forwardRef","useState","useEffect","_jsxs","Container","_jsx","Typography","TypographyVariant","Checkbox"],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../packages/components/CheckboxGroup/src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3D,cAAc,QAAQ,CAAC"}
|
package/dist/type.d.ts
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
import type { Styles, TextStyle } from '@cleartrip/ct-design-types';
|
|
3
|
+
import { ICheckboxOption } from '@cleartrip/ct-design-checkbox';
|
|
4
|
+
export type { ICheckboxOption };
|
|
5
|
+
export interface ICheckboxGroup {
|
|
6
|
+
checkboxList: ICheckboxOption[];
|
|
7
|
+
isMulti?: boolean;
|
|
8
|
+
onClick?: (selectedOption: ICheckboxOption, selectedOptionList: ICheckboxOption[]) => void;
|
|
9
|
+
heading?: ReactNode | string;
|
|
10
|
+
styleConfig?: {
|
|
11
|
+
root?: Styles[];
|
|
12
|
+
heading?: TextStyle[];
|
|
13
|
+
checkboxContainer?: Styles[];
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=type.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"type.d.ts","sourceRoot":"","sources":["../packages/components/CheckboxGroup/src/type.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAElC,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAEhE,YAAY,EAAE,eAAe,EAAE,CAAC;AAKhC,MAAM,WAAW,cAAc;IAE7B,YAAY,EAAE,eAAe,EAAE,CAAC;IAEhC,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,OAAO,CAAC,EAAE,CAAC,cAAc,EAAE,eAAe,EAAE,kBAAkB,EAAE,eAAe,EAAE,KAAK,IAAI,CAAC;IAE3F,OAAO,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC;IAE7B,WAAW,CAAC,EAAE;QAEZ,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;QAEhB,OAAO,CAAC,EAAE,SAAS,EAAE,CAAC;QAEtB,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;KAC9B,CAAC;CACH"}
|
package/package.json
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@cleartrip/ct-design-checkbox-group",
|
|
3
|
+
"version": "4.0.0-SNAPSHOT-test.0",
|
|
4
|
+
"description": "CheckboxGroup Component",
|
|
5
|
+
"types": "dist/index.d.ts",
|
|
6
|
+
"main": "./dist/ct-design-checkbox-group.cjs.js",
|
|
7
|
+
"jsnext:main": "dist/ct-design-checkbox-group.esm.js",
|
|
8
|
+
"module": "dist/ct-design-checkbox-group.esm.js",
|
|
9
|
+
"react-native": "src/index.ts",
|
|
10
|
+
"sideEffects": false,
|
|
11
|
+
"exports": {
|
|
12
|
+
".": {
|
|
13
|
+
"types": "./dist/ct-design-checkbox-group.d.ts",
|
|
14
|
+
"import": "./dist/ct-design-checkbox-group.esm.js",
|
|
15
|
+
"default": "./dist/ct-design-checkbox-group.cjs.js"
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
"browser": {
|
|
19
|
+
"./dist/ct-design-checkbox-group.esm.js": "./dist/ct-design-checkbox-group.browser.esm.js",
|
|
20
|
+
"./dist/ct-design-checkbox-group.cjs.js": "./dist/ct-design-checkbox-group.browser.cjs.js"
|
|
21
|
+
},
|
|
22
|
+
"files": [
|
|
23
|
+
"dist",
|
|
24
|
+
"src"
|
|
25
|
+
],
|
|
26
|
+
"dependencies": {
|
|
27
|
+
"@cleartrip/ct-design-types": "4.0.0-SNAPSHOT-test.0",
|
|
28
|
+
"@cleartrip/ct-design-container": "4.0.0-SNAPSHOT-test.0",
|
|
29
|
+
"@cleartrip/ct-design-checkbox": "4.0.0-SNAPSHOT-test.0",
|
|
30
|
+
"@cleartrip/ct-design-typography": "4.0.0-SNAPSHOT-test.0",
|
|
31
|
+
"@cleartrip/ct-design-style-manager": "4.0.0-SNAPSHOT-test.0",
|
|
32
|
+
"@cleartrip/ct-design-theme": "4.0.0-SNAPSHOT-test.0"
|
|
33
|
+
},
|
|
34
|
+
"devDependencies": {},
|
|
35
|
+
"peerDependencies": {
|
|
36
|
+
"react": ">=16.8.0",
|
|
37
|
+
"react-dom": ">=16.8.0"
|
|
38
|
+
},
|
|
39
|
+
"publishConfig": {
|
|
40
|
+
"access": "public"
|
|
41
|
+
},
|
|
42
|
+
"author": "Cleartrip",
|
|
43
|
+
"license": "ISC",
|
|
44
|
+
"scripts": {
|
|
45
|
+
"test": "echo \"Error: no test specified\" && exit 1",
|
|
46
|
+
"watch-package": "rollup -c -w",
|
|
47
|
+
"build-package": "rollup -c",
|
|
48
|
+
"build-package:clean": "rm -rf dist && rollup -c",
|
|
49
|
+
"publish-package:local": "yalc publish"
|
|
50
|
+
}
|
|
51
|
+
}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import React, { forwardRef, useEffect, useState } from 'react';
|
|
2
|
+
|
|
3
|
+
import { Checkbox } from '@cleartrip/ct-design-checkbox';
|
|
4
|
+
import { Container } from '@cleartrip/ct-design-container';
|
|
5
|
+
import type { ContainerRef } from '@cleartrip/ct-design-container';
|
|
6
|
+
import { Typography, TypographyVariant } from '@cleartrip/ct-design-typography';
|
|
7
|
+
import { makeStyles } from '@cleartrip/ct-design-style-manager';
|
|
8
|
+
|
|
9
|
+
import { ICheckboxGroup, ICheckboxOption } from './type';
|
|
10
|
+
|
|
11
|
+
const staticCheckboxGroupStyles = makeStyles((theme) => {
|
|
12
|
+
return {
|
|
13
|
+
root: {
|
|
14
|
+
padding: theme?.spacing[2],
|
|
15
|
+
},
|
|
16
|
+
heading: {
|
|
17
|
+
display: 'flex',
|
|
18
|
+
flexDirection: 'column',
|
|
19
|
+
marginBottom: theme?.spacing[3],
|
|
20
|
+
color: theme?.color.background.primary,
|
|
21
|
+
},
|
|
22
|
+
checkboxContainer: {
|
|
23
|
+
display: 'flex',
|
|
24
|
+
flexDirection: 'column',
|
|
25
|
+
marginBottom: theme?.spacing[3],
|
|
26
|
+
},
|
|
27
|
+
};
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
const CheckboxGroup = forwardRef<ContainerRef, ICheckboxGroup>(
|
|
31
|
+
({ checkboxList, heading, onClick, styleConfig, isMulti = true }, ref) => {
|
|
32
|
+
const [selectedOptions, setSelectedOptions] = useState<ICheckboxOption[]>([]);
|
|
33
|
+
|
|
34
|
+
const {
|
|
35
|
+
root: customRootStyles = [],
|
|
36
|
+
heading: customHeadingStyles = [],
|
|
37
|
+
checkboxContainer: customCheckboxContainerStyles = [],
|
|
38
|
+
} = styleConfig || {};
|
|
39
|
+
|
|
40
|
+
useEffect(() => {
|
|
41
|
+
const initialSelectedOptions = checkboxList?.filter((option) => option?.checked) ?? [];
|
|
42
|
+
if (!isMulti && initialSelectedOptions.length > 1) {
|
|
43
|
+
throw new Error('Multiple selected options are not allowed in single selection mode');
|
|
44
|
+
}
|
|
45
|
+
setSelectedOptions(initialSelectedOptions);
|
|
46
|
+
}, [checkboxList, isMulti]);
|
|
47
|
+
|
|
48
|
+
const handleOptionClick = (selectedOption: ICheckboxOption) => {
|
|
49
|
+
let newSelectedOptions = [...selectedOptions];
|
|
50
|
+
const optionIndex = newSelectedOptions.findIndex((option) => option.id === selectedOption.id);
|
|
51
|
+
if (optionIndex >= 0) {
|
|
52
|
+
if (isMulti) newSelectedOptions.splice(optionIndex, 1);
|
|
53
|
+
else newSelectedOptions = [];
|
|
54
|
+
} else if (isMulti) {
|
|
55
|
+
newSelectedOptions.push(selectedOption);
|
|
56
|
+
} else {
|
|
57
|
+
newSelectedOptions = [selectedOption];
|
|
58
|
+
}
|
|
59
|
+
setSelectedOptions(newSelectedOptions);
|
|
60
|
+
onClick?.(selectedOption, newSelectedOptions);
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
return (
|
|
64
|
+
<Container ref={ref} styleConfig={{ root: [staticCheckboxGroupStyles?.root, ...customRootStyles] }}>
|
|
65
|
+
{!!heading &&
|
|
66
|
+
(typeof heading === 'string' ? (
|
|
67
|
+
<Typography
|
|
68
|
+
variant={TypographyVariant.B2}
|
|
69
|
+
styleConfig={{ root: [staticCheckboxGroupStyles?.heading, ...customHeadingStyles] }}
|
|
70
|
+
>
|
|
71
|
+
{heading}
|
|
72
|
+
</Typography>
|
|
73
|
+
) : (
|
|
74
|
+
heading
|
|
75
|
+
))}
|
|
76
|
+
{checkboxList?.map((checkboxOption: ICheckboxOption) => {
|
|
77
|
+
const isChecked = selectedOptions.some((option) => option?.id === checkboxOption?.id);
|
|
78
|
+
return (
|
|
79
|
+
<Container
|
|
80
|
+
key={checkboxOption.id}
|
|
81
|
+
styleConfig={{ root: [staticCheckboxGroupStyles?.checkboxContainer, ...customCheckboxContainerStyles] }}
|
|
82
|
+
>
|
|
83
|
+
<Checkbox {...checkboxOption} onChange={handleOptionClick} checked={isChecked} />
|
|
84
|
+
</Container>
|
|
85
|
+
);
|
|
86
|
+
})}
|
|
87
|
+
</Container>
|
|
88
|
+
);
|
|
89
|
+
},
|
|
90
|
+
);
|
|
91
|
+
|
|
92
|
+
CheckboxGroup.displayName = 'CheckboxGroup';
|
|
93
|
+
|
|
94
|
+
export default CheckboxGroup;
|
package/src/index.ts
ADDED
package/src/type.ts
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
|
|
3
|
+
import type { Styles, TextStyle } from '@cleartrip/ct-design-types';
|
|
4
|
+
import { ICheckboxOption } from '@cleartrip/ct-design-checkbox';
|
|
5
|
+
|
|
6
|
+
export type { ICheckboxOption };
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Interface representing a group of checkboxes
|
|
10
|
+
*/
|
|
11
|
+
export interface ICheckboxGroup {
|
|
12
|
+
/** Array of checkbox options to display */
|
|
13
|
+
checkboxList: ICheckboxOption[];
|
|
14
|
+
/** Whether multiple checkboxes can be selected */
|
|
15
|
+
isMulti?: boolean;
|
|
16
|
+
/** Callback function triggered when a checkbox is clicked */
|
|
17
|
+
onClick?: (selectedOption: ICheckboxOption, selectedOptionList: ICheckboxOption[]) => void;
|
|
18
|
+
/** Optional heading to display above the checkbox group */
|
|
19
|
+
heading?: ReactNode | string;
|
|
20
|
+
/** Optional style configuration for different parts of the checkbox group */
|
|
21
|
+
styleConfig?: {
|
|
22
|
+
/** Styles for the root container element */
|
|
23
|
+
root?: Styles[];
|
|
24
|
+
/** Styles for the heading element */
|
|
25
|
+
heading?: TextStyle[];
|
|
26
|
+
/** Styles for the container of each checkbox */
|
|
27
|
+
checkboxContainer?: Styles[];
|
|
28
|
+
};
|
|
29
|
+
}
|