@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 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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"}
@@ -0,0 +1,3 @@
1
+ export { default as CheckboxGroup } from './CheckboxGroup';
2
+ export * from './type';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -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
@@ -0,0 +1,2 @@
1
+ export { default as CheckboxGroup } from './CheckboxGroup';
2
+ export * from './type';
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
+ }