@cleartrip/ct-design-single-select-chip 4.0.0-TEST.3 → 5.0.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 +69 -0
- package/dist/SingleSelectChip.d.ts +3 -4
- package/dist/SingleSelectChip.d.ts.map +1 -1
- package/dist/constants.d.ts +5 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/ct-design-single-select-chip.browser.cjs.js +1 -1
- package/dist/ct-design-single-select-chip.browser.cjs.js.map +1 -1
- package/dist/ct-design-single-select-chip.browser.esm.js +1 -1
- package/dist/ct-design-single-select-chip.browser.esm.js.map +1 -1
- package/dist/ct-design-single-select-chip.cjs.js +78 -33
- package/dist/ct-design-single-select-chip.cjs.js.map +1 -1
- package/dist/ct-design-single-select-chip.esm.js +80 -34
- package/dist/ct-design-single-select-chip.esm.js.map +1 -1
- package/dist/ct-design-single-select-chip.umd.js +79 -71
- package/dist/ct-design-single-select-chip.umd.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/style.d.ts +47 -3
- package/dist/style.d.ts.map +1 -1
- package/dist/type.d.ts +16 -25
- package/dist/type.d.ts.map +1 -1
- package/package.json +25 -15
- package/src/SingleSelectChip.tsx +137 -0
- package/src/constants.ts +4 -0
- package/src/index.ts +3 -0
- package/src/style.ts +48 -0
- package/src/type.ts +51 -0
package/README.md
ADDED
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# SingleSelectChip
|
|
2
|
+
|
|
3
|
+
A chip component for single selection scenarios.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Installation
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
npm install @cleartrip/ct-design-single-select-chip
|
|
11
|
+
# or
|
|
12
|
+
pnpm add @cleartrip/ct-design-single-select-chip
|
|
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 { SingleSelectChip } from '@cleartrip/ct-design-single-select-chip';
|
|
36
|
+
|
|
37
|
+
function Example() {
|
|
38
|
+
return (
|
|
39
|
+
<SingleSelectChip>
|
|
40
|
+
{/* Basic usage */}
|
|
41
|
+
</SingleSelectChip>
|
|
42
|
+
);
|
|
43
|
+
}
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
## ChipOrientation
|
|
49
|
+
|
|
50
|
+
- `row` — row
|
|
51
|
+
- `column` — column
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## Accessibility
|
|
55
|
+
|
|
56
|
+
- The component follows accessibility best practices
|
|
57
|
+
- Ensure proper ARIA attributes are provided where needed
|
|
58
|
+
- Test with screen readers to ensure usability
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
## Migration
|
|
63
|
+
|
|
64
|
+
If migrating from a previous version:
|
|
65
|
+
|
|
66
|
+
```diff
|
|
67
|
+
- import { SingleSelectChip } from 'yagami/core/components';
|
|
68
|
+
+ import { SingleSelectChip } from '@cleartrip/ct-design-single-select-chip';
|
|
69
|
+
```
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
import {
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { ContainerRef } from '@cleartrip/ct-design-container';
|
|
3
3
|
import { ISingleSelectProps } from './type';
|
|
4
|
-
|
|
5
|
-
declare const _default: import("react").MemoExoticComponent<PolymorphicSingleSelectChip>;
|
|
4
|
+
declare const _default: React.NamedExoticComponent<ISingleSelectProps & React.RefAttributes<ContainerRef>>;
|
|
6
5
|
export default _default;
|
|
7
6
|
//# sourceMappingURL=SingleSelectChip.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SingleSelectChip.d.ts","sourceRoot":"","sources":["../packages/components/SingleSelectChip/src/SingleSelectChip.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"SingleSelectChip.d.ts","sourceRoot":"","sources":["../packages/components/SingleSelectChip/src/SingleSelectChip.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAqC,MAAM,OAAO,CAAC;AAI1D,OAAO,EAAa,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAKzE,OAAO,EAAE,kBAAkB,EAAmB,MAAM,QAAQ,CAAC;;AA+H7D,wBAAsC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../packages/components/SingleSelectChip/src/constants.ts"],"names":[],"mappings":"AAAA,oBAAY,eAAe;IACzB,GAAG,QAAQ;IACX,MAAM,WAAW;CAClB"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var e=require("
|
|
1
|
+
"use strict";var e=require("react/jsx-runtime"),i=require("react"),r=require("@cleartrip/ct-design-chip"),t=require("@cleartrip/ct-design-box"),o=require("@cleartrip/ct-design-container"),n=require("@cleartrip/ct-design-typography"),l=require("@cleartrip/ct-design-style-manager");function a(e){return e&&e.__esModule?e:{default:e}}var s,p=a(require("@cleartrip/ct-design-use-isomorphic-effect"));exports.ChipOrientation=void 0,(s=exports.ChipOrientation||(exports.ChipOrientation={})).row="row",s.column="column";const c=l.makeStyles(e=>({chipWrapper:{display:"flex",position:"relative",alignItems:"center",flexWrap:"wrap",borderRadius:e.border.radius[8],alignSelf:"flex-start",rowGap:e.spacing[3],columnGap:e.spacing[3]},promptBoxStyles:{display:"flex",alignItems:"center",marginTop:e.spacing[2],marginLeft:e.spacing[3]},promptIconStyles:{display:"flex",justifyContent:"center",alignItems:"center",height:e.size[4],width:e.size[4],paddingRight:e.spacing[1]},chipLabelStyles:{paddingVertical:0,paddingHorizontal:4},chipRootStyles:{borderRadius:30,paddingVertical:e.spacing[1.5],paddingHorizontal:e.spacing[2],borderWidth:0},chipBoxShadow:{shadowColor:"rgb(231, 231, 231)",shadowOffset:{width:0,height:0},shadowOpacity:1,shadowRadius:1,elevation:1,borderWidth:1}})),d=i.memo(({data:i,selectedChip:t,onClickCb:o,chipStyleConfig:n})=>e.jsx(e.Fragment,{children:i.map(i=>{const l=(null==i?void 0:i.id)===t;return e.jsx(r.Chip,{id:null==i?void 0:i.id,label:null==i?void 0:i.label,onClick:o(i),size:"sm",isSelected:l,styleConfig:Object.assign({labelContainer:[c.chipLabelStyles],root:[c.chipRootStyles,c.chipBoxShadow]},n||{})},null==i?void 0:i.id)})}));d.displayName="ChipAtoms";const h=i.forwardRef(({onChange:r,data:a,orientation:s=exports.ChipOrientation.row,selected:h=null,prompt:g,styleConfig:u={}},C)=>{const{hasError:y=!1,Icon:m,message:x}=g||{},{root:f=[],chipContainer:S=[],promptBox:w=[],promptIconContainer:b=[],promptMessageTypography:j,chip:v}=u,[q,O]=i.useState(null!=h?h:null);p.default(()=>{(null!=h?h:null)!==q&&O(null!=h?h:null)},[h]);const z=l.useStyles(()=>({chipWrapper:{flexDirection:s===exports.ChipOrientation.row?"row":"column"}}),[s]);return e.jsxs(o.Container,{ref:C,styleConfig:{root:[...f||[]]},children:[e.jsx(o.Container,{styleConfig:{root:[c.chipWrapper,z.chipWrapper,...S]},children:e.jsx(d,{data:a,selectedChip:q,onClickCb:e=>()=>{const{id:i}=null!=e?e:{};q!==i&&(O(i),null==r||r(i))},chipStyleConfig:v})}),(m||x)&&e.jsxs(t.Box,{boxSize:"pico",horizontal:!0,styleConfig:{root:[c.promptBoxStyles,...w||[]]},children:[m&&e.jsx(o.Container,{styleConfig:{root:[c.promptIconStyles,...b]},children:m}),x&&e.jsx(n.Typography,{variant:"B3",color:y?"warning":"success",styleConfig:j,children:x})]})]})});h.displayName="SingleSelectChip";var g=i.memo(h);exports.SingleSelectChip=g;
|
|
2
2
|
//# sourceMappingURL=ct-design-single-select-chip.browser.cjs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ct-design-single-select-chip.browser.cjs.js","sources":["../packages/components/SingleSelectChip/src/
|
|
1
|
+
{"version":3,"file":"ct-design-single-select-chip.browser.cjs.js","sources":["../packages/components/SingleSelectChip/src/constants.ts","../packages/components/SingleSelectChip/src/style.ts","../packages/components/SingleSelectChip/src/SingleSelectChip.tsx"],"sourcesContent":[null,null,null],"names":["ChipOrientation","singleSelectChipStaticStyles","makeStyles","theme","chipWrapper","display","position","alignItems","flexWrap","borderRadius","border","radius","alignSelf","rowGap","spacing","columnGap","promptBoxStyles","marginTop","marginLeft","promptIconStyles","justifyContent","height","size","width","paddingRight","chipLabelStyles","paddingVertical","paddingHorizontal","chipRootStyles","borderWidth","chipBoxShadow","shadowColor","shadowOffset","shadowOpacity","shadowRadius","elevation","ChipAtoms","memo","data","selectedChip","onClickCb","chipStyleConfig","_jsx","map","item","isSelected","id","Chip","label","onClick","styleConfig","labelContainer","root","displayName","SingleSelectChip","forwardRef","onChange","orientation","row","selected","prompt","ref","hasError","Icon","promptIcon","message","promptMessage","customRootStyles","chipContainer","chipContainerStyles","promptBox","promptIconContainer","promptIconContainerStyles","promptMessageTypography","promptMessageTypographyStyles","chip","setSelectedChip","useState","useIsomorphicEffect","dynamicStyles","useStyles","flexDirection","_jsxs","Container","children","Box","boxSize","horizontal","Typography","variant","color"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{jsx as i,Fragment as e,jsxs as o}from"react/jsx-runtime";import{memo as t,forwardRef as r,useState as n}from"react";import{Chip as l}from"@cleartrip/ct-design-chip";import{Box as a}from"@cleartrip/ct-design-box";import{Container as p}from"@cleartrip/ct-design-container";import{Typography as c}from"@cleartrip/ct-design-typography";import{makeStyles as s,useStyles as d}from"@cleartrip/ct-design-style-manager";import g from"@cleartrip/ct-design-use-isomorphic-effect";var h;!function(i){i.row="row",i.column="column"}(h||(h={}));const m=s(i=>({chipWrapper:{display:"flex",position:"relative",alignItems:"center",flexWrap:"wrap",borderRadius:i.border.radius[8],alignSelf:"flex-start",rowGap:i.spacing[3],columnGap:i.spacing[3]},promptBoxStyles:{display:"flex",alignItems:"center",marginTop:i.spacing[2],marginLeft:i.spacing[3]},promptIconStyles:{display:"flex",justifyContent:"center",alignItems:"center",height:i.size[4],width:i.size[4],paddingRight:i.spacing[1]},chipLabelStyles:{paddingVertical:0,paddingHorizontal:4},chipRootStyles:{borderRadius:30,paddingVertical:i.spacing[1.5],paddingHorizontal:i.spacing[2],borderWidth:0},chipBoxShadow:{shadowColor:"rgb(231, 231, 231)",shadowOffset:{width:0,height:0},shadowOpacity:1,shadowRadius:1,elevation:1,borderWidth:1}})),f=t(({data:o,selectedChip:t,onClickCb:r,chipStyleConfig:n})=>i(e,{children:o.map(e=>{const o=(null==e?void 0:e.id)===t;return i(l,{id:null==e?void 0:e.id,label:null==e?void 0:e.label,onClick:r(e),size:"sm",isSelected:o,styleConfig:Object.assign({labelContainer:[m.chipLabelStyles],root:[m.chipRootStyles,m.chipBoxShadow]},n||{})},null==e?void 0:e.id)})}));f.displayName="ChipAtoms";const y=r(({onChange:e,data:t,orientation:r=h.row,selected:l=null,prompt:s,styleConfig:y={}},u)=>{const{hasError:C=!1,Icon:S,message:b}=s||{},{root:w=[],chipContainer:x=[],promptBox:v=[],promptIconContainer:z=[],promptMessageTypography:I,chip:W}=y,[B,R]=n(null!=l?l:null);g(()=>{(null!=l?l:null)!==B&&R(null!=l?l:null)},[l]);const j=d(()=>({chipWrapper:{flexDirection:r===h.row?"row":"column"}}),[r]);return o(p,{ref:u,styleConfig:{root:[...w||[]]},children:[i(p,{styleConfig:{root:[m.chipWrapper,j.chipWrapper,...x]},children:i(f,{data:t,selectedChip:B,onClickCb:i=>()=>{const{id:o}=null!=i?i:{};B!==o&&(R(o),null==e||e(o))},chipStyleConfig:W})}),(S||b)&&o(a,{boxSize:"pico",horizontal:!0,styleConfig:{root:[m.promptBoxStyles,...v||[]]},children:[S&&i(p,{styleConfig:{root:[m.promptIconStyles,...z]},children:S}),b&&i(c,{variant:"B3",color:C?"warning":"success",styleConfig:I,children:b})]})]})});y.displayName="SingleSelectChip";var u=t(y);export{h as ChipOrientation,u as SingleSelectChip};
|
|
2
2
|
//# sourceMappingURL=ct-design-single-select-chip.browser.esm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ct-design-single-select-chip.browser.esm.js","sources":["../packages/components/SingleSelectChip/src/
|
|
1
|
+
{"version":3,"file":"ct-design-single-select-chip.browser.esm.js","sources":["../packages/components/SingleSelectChip/src/constants.ts","../packages/components/SingleSelectChip/src/style.ts","../packages/components/SingleSelectChip/src/SingleSelectChip.tsx"],"sourcesContent":[null,null,null],"names":["ChipOrientation","singleSelectChipStaticStyles","makeStyles","theme","chipWrapper","display","position","alignItems","flexWrap","borderRadius","border","radius","alignSelf","rowGap","spacing","columnGap","promptBoxStyles","marginTop","marginLeft","promptIconStyles","justifyContent","height","size","width","paddingRight","chipLabelStyles","paddingVertical","paddingHorizontal","chipRootStyles","borderWidth","chipBoxShadow","shadowColor","shadowOffset","shadowOpacity","shadowRadius","elevation","ChipAtoms","memo","data","selectedChip","onClickCb","chipStyleConfig","_jsx","map","item","isSelected","id","Chip","label","onClick","styleConfig","labelContainer","root","displayName","SingleSelectChip","forwardRef","onChange","orientation","row","selected","prompt","ref","hasError","Icon","promptIcon","message","promptMessage","customRootStyles","chipContainer","chipContainerStyles","promptBox","promptIconContainer","promptIconContainerStyles","promptMessageTypography","promptMessageTypographyStyles","chip","setSelectedChip","useState","useIsomorphicEffect","dynamicStyles","useStyles","flexDirection","_jsxs","Container","children","Box","boxSize","horizontal","Typography","variant","color","SingleSelectChip$1"],"mappings":"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"}
|
|
@@ -1,19 +1,16 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var tslib = require('tslib');
|
|
4
3
|
var jsxRuntime = require('react/jsx-runtime');
|
|
5
4
|
var react = require('react');
|
|
6
|
-
var styled = require('styled-components');
|
|
7
5
|
var ctDesignChip = require('@cleartrip/ct-design-chip');
|
|
8
|
-
var
|
|
9
|
-
var ctDesignTheme = require('@cleartrip/ct-design-theme');
|
|
6
|
+
var ctDesignBox = require('@cleartrip/ct-design-box');
|
|
10
7
|
var ctDesignContainer = require('@cleartrip/ct-design-container');
|
|
11
8
|
var ctDesignTypography = require('@cleartrip/ct-design-typography');
|
|
12
|
-
var
|
|
9
|
+
var ctDesignStyleManager = require('@cleartrip/ct-design-style-manager');
|
|
10
|
+
var useIsomorphicEffect = require('@cleartrip/ct-design-use-isomorphic-effect');
|
|
13
11
|
|
|
14
12
|
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
15
13
|
|
|
16
|
-
var styled__default = /*#__PURE__*/_interopDefault(styled);
|
|
17
14
|
var useIsomorphicEffect__default = /*#__PURE__*/_interopDefault(useIsomorphicEffect);
|
|
18
15
|
|
|
19
16
|
exports.ChipOrientation = void 0;
|
|
@@ -22,42 +19,90 @@ exports.ChipOrientation = void 0;
|
|
|
22
19
|
ChipOrientation["column"] = "column";
|
|
23
20
|
})(exports.ChipOrientation || (exports.ChipOrientation = {}));
|
|
24
21
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
22
|
+
const singleSelectChipStaticStyles = ctDesignStyleManager.makeStyles((theme) => {
|
|
23
|
+
return {
|
|
24
|
+
chipWrapper: {
|
|
25
|
+
display: 'flex',
|
|
26
|
+
position: 'relative',
|
|
27
|
+
alignItems: 'center',
|
|
28
|
+
flexWrap: 'wrap',
|
|
29
|
+
borderRadius: theme.border.radius[8],
|
|
30
|
+
alignSelf: 'flex-start',
|
|
31
|
+
rowGap: theme.spacing[3],
|
|
32
|
+
columnGap: theme.spacing[3],
|
|
33
|
+
},
|
|
34
|
+
promptBoxStyles: {
|
|
35
|
+
display: 'flex',
|
|
36
|
+
alignItems: 'center',
|
|
37
|
+
marginTop: theme.spacing[2],
|
|
38
|
+
marginLeft: theme.spacing[3],
|
|
39
|
+
},
|
|
40
|
+
promptIconStyles: {
|
|
41
|
+
display: 'flex',
|
|
42
|
+
justifyContent: 'center',
|
|
43
|
+
alignItems: 'center',
|
|
44
|
+
height: theme.size[4],
|
|
45
|
+
width: theme.size[4],
|
|
46
|
+
paddingRight: theme.spacing[1],
|
|
47
|
+
},
|
|
48
|
+
chipLabelStyles: {
|
|
49
|
+
paddingVertical: 0,
|
|
50
|
+
paddingHorizontal: 4,
|
|
51
|
+
},
|
|
52
|
+
chipRootStyles: {
|
|
53
|
+
borderRadius: 30,
|
|
54
|
+
paddingVertical: theme.spacing['1.5'],
|
|
55
|
+
paddingHorizontal: theme.spacing[2],
|
|
56
|
+
borderWidth: 0,
|
|
57
|
+
},
|
|
58
|
+
chipBoxShadow: {
|
|
59
|
+
shadowColor: 'rgb(231, 231, 231)',
|
|
60
|
+
shadowOffset: { width: 0, height: 0 },
|
|
61
|
+
shadowOpacity: 1,
|
|
62
|
+
shadowRadius: 1,
|
|
63
|
+
elevation: 1,
|
|
64
|
+
borderWidth: 1,
|
|
65
|
+
},
|
|
66
|
+
};
|
|
67
|
+
});
|
|
30
68
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
69
|
+
const ChipAtoms = react.memo(({ data, selectedChip, onClickCb, chipStyleConfig }) => {
|
|
70
|
+
return (jsxRuntime.jsx(jsxRuntime.Fragment, { children: data.map((item) => {
|
|
71
|
+
const isSelected = (item === null || item === void 0 ? void 0 : item.id) === selectedChip;
|
|
72
|
+
return (jsxRuntime.jsx(ctDesignChip.Chip, { id: item === null || item === void 0 ? void 0 : item.id, label: item === null || item === void 0 ? void 0 : item.label, onClick: onClickCb(item), size: 'sm', isSelected: isSelected, styleConfig: Object.assign({ labelContainer: [singleSelectChipStaticStyles.chipLabelStyles], root: [singleSelectChipStaticStyles.chipRootStyles, singleSelectChipStaticStyles.chipBoxShadow] }, (chipStyleConfig || {})) }, item === null || item === void 0 ? void 0 : item.id));
|
|
73
|
+
}) }));
|
|
34
74
|
});
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
setSelectedChip(selected);
|
|
75
|
+
ChipAtoms.displayName = 'ChipAtoms';
|
|
76
|
+
const SingleSelectChip = react.forwardRef(({ onChange, data, orientation = exports.ChipOrientation.row, selected = null, prompt, styleConfig = {} }, ref) => {
|
|
77
|
+
const { hasError = false, Icon: promptIcon, message: promptMessage } = prompt || {};
|
|
78
|
+
const { root: customRootStyles = [], chipContainer: chipContainerStyles = [], promptBox: promptBoxStyles = [], promptIconContainer: promptIconContainerStyles = [], promptMessageTypography: promptMessageTypographyStyles, chip: chipStyleConfig, } = styleConfig;
|
|
79
|
+
const [selectedChip, setSelectedChip] = react.useState(selected !== null && selected !== void 0 ? selected : null);
|
|
80
|
+
useIsomorphicEffect__default.default(() => {
|
|
81
|
+
if ((selected !== null && selected !== void 0 ? selected : null) !== selectedChip) {
|
|
82
|
+
setSelectedChip(selected !== null && selected !== void 0 ? selected : null);
|
|
44
83
|
}
|
|
45
84
|
}, [selected]);
|
|
46
|
-
|
|
47
|
-
|
|
85
|
+
const onClickCb = (chip) => () => {
|
|
86
|
+
const { id } = chip !== null && chip !== void 0 ? chip : {};
|
|
48
87
|
if (selectedChip !== id) {
|
|
49
88
|
setSelectedChip(id);
|
|
50
|
-
onChange
|
|
89
|
+
onChange === null || onChange === void 0 ? void 0 : onChange(id);
|
|
51
90
|
}
|
|
52
|
-
}; };
|
|
53
|
-
var renderChipAtoms = function () {
|
|
54
|
-
return data.map(function (item) {
|
|
55
|
-
var isSelected = (item === null || item === void 0 ? void 0 : item.id) === selectedChip;
|
|
56
|
-
return jsxRuntime.jsx(ctDesignChip.Chip, tslib.__assign({}, item, { onClick: onClickCb(item), isSelected: isSelected, styleConfig: chip }), item === null || item === void 0 ? void 0 : item.id);
|
|
57
|
-
});
|
|
58
91
|
};
|
|
59
|
-
|
|
92
|
+
const dynamicStyles = ctDesignStyleManager.useStyles(() => ({
|
|
93
|
+
chipWrapper: {
|
|
94
|
+
flexDirection: orientation === exports.ChipOrientation.row ? 'row' : 'column',
|
|
95
|
+
},
|
|
96
|
+
}), [orientation]);
|
|
97
|
+
return (jsxRuntime.jsxs(ctDesignContainer.Container, { ref: ref, styleConfig: { root: [...(customRootStyles || [])] }, children: [jsxRuntime.jsx(ctDesignContainer.Container, { styleConfig: {
|
|
98
|
+
root: [singleSelectChipStaticStyles.chipWrapper, dynamicStyles.chipWrapper, ...chipContainerStyles],
|
|
99
|
+
}, children: jsxRuntime.jsx(ChipAtoms, { data: data, selectedChip: selectedChip, onClickCb: onClickCb, chipStyleConfig: chipStyleConfig }) }), (promptIcon || promptMessage) && (jsxRuntime.jsxs(ctDesignBox.Box, { boxSize: 'pico', horizontal: true, styleConfig: {
|
|
100
|
+
root: [singleSelectChipStaticStyles.promptBoxStyles, ...(promptBoxStyles || [])],
|
|
101
|
+
}, children: [promptIcon && (jsxRuntime.jsx(ctDesignContainer.Container, { styleConfig: {
|
|
102
|
+
root: [singleSelectChipStaticStyles.promptIconStyles, ...promptIconContainerStyles],
|
|
103
|
+
}, children: promptIcon })), promptMessage && (jsxRuntime.jsx(ctDesignTypography.Typography, { variant: 'B3', color: hasError ? 'warning' : 'success', styleConfig: promptMessageTypographyStyles, children: promptMessage }))] }))] }));
|
|
60
104
|
});
|
|
105
|
+
SingleSelectChip.displayName = 'SingleSelectChip';
|
|
61
106
|
var SingleSelectChip$1 = react.memo(SingleSelectChip);
|
|
62
107
|
|
|
63
108
|
exports.SingleSelectChip = SingleSelectChip$1;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ct-design-single-select-chip.cjs.js","sources":["../packages/components/SingleSelectChip/src/
|
|
1
|
+
{"version":3,"file":"ct-design-single-select-chip.cjs.js","sources":["../packages/components/SingleSelectChip/src/constants.ts","../packages/components/SingleSelectChip/src/style.ts","../packages/components/SingleSelectChip/src/SingleSelectChip.tsx"],"sourcesContent":[null,null,null],"names":["ChipOrientation","makeStyles","memo","_jsx","Chip","forwardRef","useState","useIsomorphicEffect","useStyles","_jsxs","Container","Box","Typography"],"mappings":"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"}
|
|
@@ -1,13 +1,11 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { forwardRef, useState, memo } from 'react';
|
|
4
|
-
import styled from 'styled-components';
|
|
1
|
+
import { jsx, Fragment, jsxs } from 'react/jsx-runtime';
|
|
2
|
+
import { memo, forwardRef, useState } from 'react';
|
|
5
3
|
import { Chip } from '@cleartrip/ct-design-chip';
|
|
6
|
-
import
|
|
7
|
-
import { useTheme } from '@cleartrip/ct-design-theme';
|
|
4
|
+
import { Box } from '@cleartrip/ct-design-box';
|
|
8
5
|
import { Container } from '@cleartrip/ct-design-container';
|
|
9
6
|
import { Typography } from '@cleartrip/ct-design-typography';
|
|
10
|
-
import {
|
|
7
|
+
import { makeStyles, useStyles } from '@cleartrip/ct-design-style-manager';
|
|
8
|
+
import useIsomorphicEffect from '@cleartrip/ct-design-use-isomorphic-effect';
|
|
11
9
|
|
|
12
10
|
var ChipOrientation;
|
|
13
11
|
(function (ChipOrientation) {
|
|
@@ -15,42 +13,90 @@ var ChipOrientation;
|
|
|
15
13
|
ChipOrientation["column"] = "column";
|
|
16
14
|
})(ChipOrientation || (ChipOrientation = {}));
|
|
17
15
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
16
|
+
const singleSelectChipStaticStyles = makeStyles((theme) => {
|
|
17
|
+
return {
|
|
18
|
+
chipWrapper: {
|
|
19
|
+
display: 'flex',
|
|
20
|
+
position: 'relative',
|
|
21
|
+
alignItems: 'center',
|
|
22
|
+
flexWrap: 'wrap',
|
|
23
|
+
borderRadius: theme.border.radius[8],
|
|
24
|
+
alignSelf: 'flex-start',
|
|
25
|
+
rowGap: theme.spacing[3],
|
|
26
|
+
columnGap: theme.spacing[3],
|
|
27
|
+
},
|
|
28
|
+
promptBoxStyles: {
|
|
29
|
+
display: 'flex',
|
|
30
|
+
alignItems: 'center',
|
|
31
|
+
marginTop: theme.spacing[2],
|
|
32
|
+
marginLeft: theme.spacing[3],
|
|
33
|
+
},
|
|
34
|
+
promptIconStyles: {
|
|
35
|
+
display: 'flex',
|
|
36
|
+
justifyContent: 'center',
|
|
37
|
+
alignItems: 'center',
|
|
38
|
+
height: theme.size[4],
|
|
39
|
+
width: theme.size[4],
|
|
40
|
+
paddingRight: theme.spacing[1],
|
|
41
|
+
},
|
|
42
|
+
chipLabelStyles: {
|
|
43
|
+
paddingVertical: 0,
|
|
44
|
+
paddingHorizontal: 4,
|
|
45
|
+
},
|
|
46
|
+
chipRootStyles: {
|
|
47
|
+
borderRadius: 30,
|
|
48
|
+
paddingVertical: theme.spacing['1.5'],
|
|
49
|
+
paddingHorizontal: theme.spacing[2],
|
|
50
|
+
borderWidth: 0,
|
|
51
|
+
},
|
|
52
|
+
chipBoxShadow: {
|
|
53
|
+
shadowColor: 'rgb(231, 231, 231)',
|
|
54
|
+
shadowOffset: { width: 0, height: 0 },
|
|
55
|
+
shadowOpacity: 1,
|
|
56
|
+
shadowRadius: 1,
|
|
57
|
+
elevation: 1,
|
|
58
|
+
borderWidth: 1,
|
|
59
|
+
},
|
|
60
|
+
};
|
|
61
|
+
});
|
|
23
62
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
63
|
+
const ChipAtoms = memo(({ data, selectedChip, onClickCb, chipStyleConfig }) => {
|
|
64
|
+
return (jsx(Fragment, { children: data.map((item) => {
|
|
65
|
+
const isSelected = (item === null || item === void 0 ? void 0 : item.id) === selectedChip;
|
|
66
|
+
return (jsx(Chip, { id: item === null || item === void 0 ? void 0 : item.id, label: item === null || item === void 0 ? void 0 : item.label, onClick: onClickCb(item), size: 'sm', isSelected: isSelected, styleConfig: Object.assign({ labelContainer: [singleSelectChipStaticStyles.chipLabelStyles], root: [singleSelectChipStaticStyles.chipRootStyles, singleSelectChipStaticStyles.chipBoxShadow] }, (chipStyleConfig || {})) }, item === null || item === void 0 ? void 0 : item.id));
|
|
67
|
+
}) }));
|
|
27
68
|
});
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
setSelectedChip(selected);
|
|
69
|
+
ChipAtoms.displayName = 'ChipAtoms';
|
|
70
|
+
const SingleSelectChip = forwardRef(({ onChange, data, orientation = ChipOrientation.row, selected = null, prompt, styleConfig = {} }, ref) => {
|
|
71
|
+
const { hasError = false, Icon: promptIcon, message: promptMessage } = prompt || {};
|
|
72
|
+
const { root: customRootStyles = [], chipContainer: chipContainerStyles = [], promptBox: promptBoxStyles = [], promptIconContainer: promptIconContainerStyles = [], promptMessageTypography: promptMessageTypographyStyles, chip: chipStyleConfig, } = styleConfig;
|
|
73
|
+
const [selectedChip, setSelectedChip] = useState(selected !== null && selected !== void 0 ? selected : null);
|
|
74
|
+
useIsomorphicEffect(() => {
|
|
75
|
+
if ((selected !== null && selected !== void 0 ? selected : null) !== selectedChip) {
|
|
76
|
+
setSelectedChip(selected !== null && selected !== void 0 ? selected : null);
|
|
37
77
|
}
|
|
38
78
|
}, [selected]);
|
|
39
|
-
|
|
40
|
-
|
|
79
|
+
const onClickCb = (chip) => () => {
|
|
80
|
+
const { id } = chip !== null && chip !== void 0 ? chip : {};
|
|
41
81
|
if (selectedChip !== id) {
|
|
42
82
|
setSelectedChip(id);
|
|
43
|
-
onChange
|
|
83
|
+
onChange === null || onChange === void 0 ? void 0 : onChange(id);
|
|
44
84
|
}
|
|
45
|
-
}; };
|
|
46
|
-
var renderChipAtoms = function () {
|
|
47
|
-
return data.map(function (item) {
|
|
48
|
-
var isSelected = (item === null || item === void 0 ? void 0 : item.id) === selectedChip;
|
|
49
|
-
return jsx(Chip, __assign({}, item, { onClick: onClickCb(item), isSelected: isSelected, styleConfig: chip }), item === null || item === void 0 ? void 0 : item.id);
|
|
50
|
-
});
|
|
51
85
|
};
|
|
52
|
-
|
|
86
|
+
const dynamicStyles = useStyles(() => ({
|
|
87
|
+
chipWrapper: {
|
|
88
|
+
flexDirection: orientation === ChipOrientation.row ? 'row' : 'column',
|
|
89
|
+
},
|
|
90
|
+
}), [orientation]);
|
|
91
|
+
return (jsxs(Container, { ref: ref, styleConfig: { root: [...(customRootStyles || [])] }, children: [jsx(Container, { styleConfig: {
|
|
92
|
+
root: [singleSelectChipStaticStyles.chipWrapper, dynamicStyles.chipWrapper, ...chipContainerStyles],
|
|
93
|
+
}, children: jsx(ChipAtoms, { data: data, selectedChip: selectedChip, onClickCb: onClickCb, chipStyleConfig: chipStyleConfig }) }), (promptIcon || promptMessage) && (jsxs(Box, { boxSize: 'pico', horizontal: true, styleConfig: {
|
|
94
|
+
root: [singleSelectChipStaticStyles.promptBoxStyles, ...(promptBoxStyles || [])],
|
|
95
|
+
}, children: [promptIcon && (jsx(Container, { styleConfig: {
|
|
96
|
+
root: [singleSelectChipStaticStyles.promptIconStyles, ...promptIconContainerStyles],
|
|
97
|
+
}, children: promptIcon })), promptMessage && (jsx(Typography, { variant: 'B3', color: hasError ? 'warning' : 'success', styleConfig: promptMessageTypographyStyles, children: promptMessage }))] }))] }));
|
|
53
98
|
});
|
|
99
|
+
SingleSelectChip.displayName = 'SingleSelectChip';
|
|
54
100
|
var SingleSelectChip$1 = memo(SingleSelectChip);
|
|
55
101
|
|
|
56
102
|
export { ChipOrientation, SingleSelectChip$1 as SingleSelectChip };
|