@faststore/components 2.0.47-alpha.0 → 2.0.48-alpha.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/CHANGELOG.md +9 -0
- package/dist/assets/Heart.d.ts +3 -0
- package/dist/assets/Heart.js +7 -0
- package/dist/assets/Heart.js.map +1 -0
- package/dist/assets/Star.d.ts +3 -0
- package/dist/assets/Star.js +7 -0
- package/dist/assets/Star.js.map +1 -0
- package/dist/assets/index.d.ts +2 -0
- package/dist/assets/index.js +2 -0
- package/dist/assets/index.js.map +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/molecules/Alert/Alert.d.ts +29 -0
- package/dist/molecules/Alert/Alert.js +21 -0
- package/dist/molecules/Alert/Alert.js.map +1 -0
- package/dist/molecules/Alert/index.d.ts +2 -0
- package/dist/molecules/Alert/index.js +2 -0
- package/dist/molecules/Alert/index.js.map +1 -0
- package/dist/molecules/Rating/Rating.d.ts +31 -0
- package/dist/molecules/Rating/Rating.js +26 -0
- package/dist/molecules/Rating/Rating.js.map +1 -0
- package/dist/molecules/Rating/index.d.ts +2 -0
- package/dist/molecules/Rating/index.js +2 -0
- package/dist/molecules/Rating/index.js.map +1 -0
- package/package.json +4 -4
- package/src/assets/Heart.tsx +19 -0
- package/src/assets/Star.tsx +19 -0
- package/src/assets/index.ts +2 -0
- package/src/index.ts +4 -0
- package/src/molecules/Alert/Alert.tsx +85 -0
- package/src/molecules/Alert/index.ts +2 -0
- package/src/molecules/Rating/Rating.tsx +107 -0
- package/src/molecules/Rating/index.ts +2 -0
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,15 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## 2.0.48-alpha.0 (2023-01-13)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Features
|
|
10
|
+
|
|
11
|
+
* Adds `Alert` Component ([#1590](https://github.com/vtex/faststore/issues/1590)) ([6e1cc00](https://github.com/vtex/faststore/commit/6e1cc004a5f3ae8674798fe6a36fd2a5d1451d7c))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
6
15
|
## [2.0.47-alpha.0](https://github.com/vtex/faststore/compare/v2.0.46-alpha.0...v2.0.47-alpha.0) (2023-01-13)
|
|
7
16
|
|
|
8
17
|
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
// Icon from Phosphor Icons
|
|
3
|
+
const Heart = () => (React.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", fill: "currentColor", viewBox: "0 0 256 256", strokeWidth: "16", width: 24, height: 24 },
|
|
4
|
+
React.createElement("rect", { width: "256", height: "256", fill: "none" }),
|
|
5
|
+
React.createElement("path", { d: "M128,216S28,160,28,92A52,52,0,0,1,128,72h0A52,52,0,0,1,228,92C228,160,128,216,128,216Z", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round" })));
|
|
6
|
+
export default Heart;
|
|
7
|
+
//# sourceMappingURL=Heart.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Heart.js","sourceRoot":"","sources":["../../src/assets/Heart.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,2BAA2B;AAC3B,MAAM,KAAK,GAAO,GAAG,EAAE,CAAC,CACtB,6BACE,KAAK,EAAC,4BAA4B,EAClC,IAAI,EAAC,cAAc,EACnB,OAAO,EAAC,aAAa,EACrB,WAAW,EAAC,IAAI,EAChB,KAAK,EAAE,EAAE,EACT,MAAM,EAAE,EAAE;IAEV,8BAAM,KAAK,EAAC,KAAK,EAAC,MAAM,EAAC,KAAK,EAAC,IAAI,EAAC,MAAM,GAAQ;IAClD,8BAAM,CAAC,EAAC,wFAAwF,EAAE,MAAM,EAAC,cAAc,EAAC,aAAa,EAAC,OAAO,EAAC,cAAc,EAAC,OAAO,GAAQ,CACxK,CACP,CAAA;AAED,eAAe,KAAK,CAAA"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
// Icon from Phosphor Icons
|
|
3
|
+
const Star = () => (React.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", fill: "currentColor", viewBox: "0 0 256 256", strokeWidth: "16", width: 24, height: 24 },
|
|
4
|
+
React.createElement("rect", { width: "256", height: "256", fill: "none" }),
|
|
5
|
+
React.createElement("path", { d: "M239.2,97.4A16.4,16.4,0,0,0,224.6,86l-59.4-4.1-22-55.5A16.4,16.4,0,0,0,128,16h0a16.4,16.4,0,0,0-15.2,10.4L90.4,82.2,31.4,86A16.5,16.5,0,0,0,16.8,97.4,16.8,16.8,0,0,0,22,115.5l45.4,38.4L53.9,207a18.5,18.5,0,0,0,7,19.6,18,18,0,0,0,20.1.6l46.9-29.7h.2l50.5,31.9a16.1,16.1,0,0,0,8.7,2.6,16.5,16.5,0,0,0,15.8-20.8l-14.3-58.1L234,115.5A16.8,16.8,0,0,0,239.2,97.4Z", stroke: "currentColor", strokeLinecap: "round", strokeLinejoin: "round" })));
|
|
6
|
+
export default Star;
|
|
7
|
+
//# sourceMappingURL=Star.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Star.js","sourceRoot":"","sources":["../../src/assets/Star.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,2BAA2B;AAC3B,MAAM,IAAI,GAAO,GAAG,EAAE,CAAC,CACrB,6BACE,KAAK,EAAC,4BAA4B,EAClC,IAAI,EAAC,cAAc,EACnB,OAAO,EAAC,aAAa,EACrB,WAAW,EAAC,IAAI,EAChB,KAAK,EAAE,EAAE,EACT,MAAM,EAAE,EAAE;IAEV,8BAAM,KAAK,EAAC,KAAK,EAAC,MAAM,EAAC,KAAK,EAAC,IAAI,EAAC,MAAM,GAAQ;IAClD,8BAAM,CAAC,EAAC,uWAAuW,EAAC,MAAM,EAAC,cAAc,EAAC,aAAa,EAAC,OAAO,EAAC,cAAc,EAAC,OAAO,GAAQ,CACtb,CACP,CAAA;AAED,eAAe,IAAI,CAAA"}
|
package/dist/assets/index.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ export { default as ArrowRight } from './ArrowRight';
|
|
|
2
2
|
export { default as ArrowElbowDownRight } from './ArrowElbowDownRight';
|
|
3
3
|
export { default as CaretDown } from './CaretDown';
|
|
4
4
|
export { default as Checked } from './Checked';
|
|
5
|
+
export { default as Heart } from './Heart';
|
|
5
6
|
export { default as House } from './House';
|
|
6
7
|
export { default as Minus } from './Minus';
|
|
7
8
|
export { default as Plus } from './Plus';
|
|
@@ -9,5 +10,6 @@ export { default as MinusCircle } from './MinusCircle';
|
|
|
9
10
|
export { default as PlusCircle } from './PlusCircle';
|
|
10
11
|
export { default as Ruler } from './Ruler';
|
|
11
12
|
export { default as ShoppingCart } from './ShoppingCart';
|
|
13
|
+
export { default as Star } from './Star';
|
|
12
14
|
export { default as X } from './X';
|
|
13
15
|
export { default as XCircle } from './XCircle';
|
package/dist/assets/index.js
CHANGED
|
@@ -2,6 +2,7 @@ export { default as ArrowRight } from './ArrowRight';
|
|
|
2
2
|
export { default as ArrowElbowDownRight } from './ArrowElbowDownRight';
|
|
3
3
|
export { default as CaretDown } from './CaretDown';
|
|
4
4
|
export { default as Checked } from './Checked';
|
|
5
|
+
export { default as Heart } from './Heart';
|
|
5
6
|
export { default as House } from './House';
|
|
6
7
|
export { default as Minus } from './Minus';
|
|
7
8
|
export { default as Plus } from './Plus';
|
|
@@ -9,6 +10,7 @@ export { default as MinusCircle } from './MinusCircle';
|
|
|
9
10
|
export { default as PlusCircle } from './PlusCircle';
|
|
10
11
|
export { default as Ruler } from './Ruler';
|
|
11
12
|
export { default as ShoppingCart } from './ShoppingCart';
|
|
13
|
+
export { default as Star } from './Star';
|
|
12
14
|
export { default as X } from './X';
|
|
13
15
|
export { default as XCircle } from './XCircle';
|
|
14
16
|
//# sourceMappingURL=index.js.map
|
package/dist/assets/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/assets/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAA;AACpD,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AACtE,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAA;AAClD,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,WAAW,CAAA;AAC9C,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,SAAS,CAAA;AAC1C,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,SAAS,CAAA;AAC1C,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,QAAQ,CAAA;AACxC,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAA;AACtD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAA;AACpD,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,SAAS,CAAA;AAC1C,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAA;AACxD,OAAO,EAAE,OAAO,IAAI,CAAC,EAAE,MAAM,KAAK,CAAA;AAClC,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,WAAW,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/assets/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAA;AACpD,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AACtE,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAA;AAClD,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,WAAW,CAAA;AAC9C,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,SAAS,CAAA;AAC1C,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,SAAS,CAAA;AAC1C,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,SAAS,CAAA;AAC1C,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,QAAQ,CAAA;AACxC,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAA;AACtD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAA;AACpD,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,SAAS,CAAA;AAC1C,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAA;AACxD,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,QAAQ,CAAA;AACxC,OAAO,EAAE,OAAO,IAAI,CAAC,EAAE,MAAM,KAAK,CAAA;AAClC,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,WAAW,CAAA"}
|
package/dist/index.d.ts
CHANGED
|
@@ -26,6 +26,8 @@ export type { SelectProps } from './atoms/Select';
|
|
|
26
26
|
export { default as SROnly } from './atoms/SROnly';
|
|
27
27
|
export { default as Accordion, AccordionItem, AccordionButton, AccordionPanel, } from './molecules/Accordion';
|
|
28
28
|
export type { AccordionProps, AccordionItemProps, AccordionButtonProps, AccordionPanelProps, } from './molecules/Accordion';
|
|
29
|
+
export { default as Alert } from './molecules/Alert';
|
|
30
|
+
export type { AlertProps } from './molecules/Alert';
|
|
29
31
|
export { default as BuyButton } from './molecules/BuyButton';
|
|
30
32
|
export { default as CheckboxField } from './molecules/CheckboxField';
|
|
31
33
|
export type { CheckboxFieldProps } from './molecules/CheckboxField';
|
|
@@ -41,6 +43,8 @@ export { default as LinkButton } from './molecules/LinkButton';
|
|
|
41
43
|
export type { LinkButtonProps } from './molecules/LinkButton';
|
|
42
44
|
export { default as RadioField } from './molecules/RadioField';
|
|
43
45
|
export type { RadioFieldProps } from './molecules/RadioField';
|
|
46
|
+
export { default as Rating } from './molecules/Rating';
|
|
47
|
+
export type { RatingProps } from './molecules/Rating';
|
|
44
48
|
export { default as SelectField } from './molecules/SelectField';
|
|
45
49
|
export type { SelectFieldProps } from './molecules/SelectField';
|
|
46
50
|
export { Table, TableBody, TableCell, TableFooter, TableHead, TableRow, } from './molecules/Table';
|
package/dist/index.js
CHANGED
|
@@ -16,6 +16,7 @@ export { default as Select } from './atoms/Select';
|
|
|
16
16
|
export { default as SROnly } from './atoms/SROnly';
|
|
17
17
|
// Molecules
|
|
18
18
|
export { default as Accordion, AccordionItem, AccordionButton, AccordionPanel, } from './molecules/Accordion';
|
|
19
|
+
export { default as Alert } from './molecules/Alert';
|
|
19
20
|
export { default as BuyButton } from './molecules/BuyButton';
|
|
20
21
|
export { default as CheckboxField } from './molecules/CheckboxField';
|
|
21
22
|
export { default as IconButton } from './molecules/IconButton';
|
|
@@ -24,6 +25,7 @@ export { default as Dropdown, DropdownButton, DropdownItem, DropdownMenu, } from
|
|
|
24
25
|
export { default as InputField } from './molecules/InputField';
|
|
25
26
|
export { default as LinkButton } from './molecules/LinkButton';
|
|
26
27
|
export { default as RadioField } from './molecules/RadioField';
|
|
28
|
+
export { default as Rating } from './molecules/Rating';
|
|
27
29
|
export { default as SelectField } from './molecules/SelectField';
|
|
28
30
|
export { Table, TableBody, TableCell, TableFooter, TableHead, TableRow, } from './molecules/Table';
|
|
29
31
|
export { default as Tag } from './molecules/Tag';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,SAAS;AACT,cAAc,UAAU,CAAA;AAExB,QAAQ;AACR,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,eAAe,CAAA;AAEhD,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAElD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAEtD,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,cAAc,CAAA;AAE9C,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,eAAe,CAAA;AAEhD,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,eAAe,CAAA;AAEhD,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,cAAc,CAAA;AAE9C,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,cAAc,CAAA;AAE9C,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAEpD,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,eAAe,CAAA;AAEhD,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,eAAe,CAAA;AAEhD,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAElD,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAElD,YAAY;AACZ,OAAO,EACL,OAAO,IAAI,SAAS,EACpB,aAAa,EACb,eAAe,EACf,cAAc,GACf,MAAM,uBAAuB,CAAA;AAO9B,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,uBAAuB,CAAA;AAC5D,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,2BAA2B,CAAA;AAEpE,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,wBAAwB,CAAA;AAE9D,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,2BAA2B,CAAA;AAEpE,OAAO,EACL,OAAO,IAAI,QAAQ,EACnB,cAAc,EACd,YAAY,EACZ,YAAY,GACb,MAAM,sBAAsB,CAAA;AAO7B,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,wBAAwB,CAAA;AAE9D,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,wBAAwB,CAAA;AAE9D,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,wBAAwB,CAAA;AAE9D,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAEhE,OAAO,EACL,KAAK,EACL,SAAS,EACT,SAAS,EACT,WAAW,EACX,SAAS,EACT,QAAQ,GACT,MAAM,mBAAmB,CAAA;AAS1B,OAAO,EAAE,OAAO,IAAI,GAAG,EAAE,MAAM,iBAAiB,CAAA;AAEhD,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAEtD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAEhE,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,8BAA8B,CAAA;AAG1E,YAAY;AACZ,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,SAAS;AACT,cAAc,UAAU,CAAA;AAExB,QAAQ;AACR,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,eAAe,CAAA;AAEhD,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAElD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAEtD,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,cAAc,CAAA;AAE9C,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,eAAe,CAAA;AAEhD,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,eAAe,CAAA;AAEhD,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,cAAc,CAAA;AAE9C,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,cAAc,CAAA;AAE9C,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAEpD,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,eAAe,CAAA;AAEhD,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,eAAe,CAAA;AAEhD,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAElD,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAElD,YAAY;AACZ,OAAO,EACL,OAAO,IAAI,SAAS,EACpB,aAAa,EACb,eAAe,EACf,cAAc,GACf,MAAM,uBAAuB,CAAA;AAO9B,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAEpD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,uBAAuB,CAAA;AAC5D,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,2BAA2B,CAAA;AAEpE,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,wBAAwB,CAAA;AAE9D,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,2BAA2B,CAAA;AAEpE,OAAO,EACL,OAAO,IAAI,QAAQ,EACnB,cAAc,EACd,YAAY,EACZ,YAAY,GACb,MAAM,sBAAsB,CAAA;AAO7B,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,wBAAwB,CAAA;AAE9D,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,wBAAwB,CAAA;AAE9D,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,wBAAwB,CAAA;AAE9D,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAEtD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAEhE,OAAO,EACL,KAAK,EACL,SAAS,EACT,SAAS,EACT,WAAW,EACX,SAAS,EACT,QAAQ,GACT,MAAM,mBAAmB,CAAA;AAS1B,OAAO,EAAE,OAAO,IAAI,GAAG,EAAE,MAAM,iBAAiB,CAAA;AAEhD,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAEtD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAEhE,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,8BAA8B,CAAA;AAG1E,YAAY;AACZ,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { HTMLAttributes } from 'react';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { LinkProps } from '../../index';
|
|
4
|
+
import type { ReactNode, MouseEvent } from 'react';
|
|
5
|
+
export interface AlertProps extends Omit<HTMLAttributes<HTMLDivElement>, 'role'> {
|
|
6
|
+
/**
|
|
7
|
+
* ID to find this component in testing tools (e.g.: cypress,
|
|
8
|
+
* testing-library, and jest).
|
|
9
|
+
*/
|
|
10
|
+
testId?: string;
|
|
11
|
+
/**
|
|
12
|
+
* Icon component for additional customization.
|
|
13
|
+
*/
|
|
14
|
+
icon?: ReactNode;
|
|
15
|
+
/**
|
|
16
|
+
* Enables dismissible feature.
|
|
17
|
+
*/
|
|
18
|
+
dismissible?: boolean;
|
|
19
|
+
/**
|
|
20
|
+
* Extends all Link Props.
|
|
21
|
+
*/
|
|
22
|
+
link?: LinkProps;
|
|
23
|
+
/**
|
|
24
|
+
* Function called when dismiss button is clicked.
|
|
25
|
+
*/
|
|
26
|
+
onClose?: (event: MouseEvent<HTMLElement>) => void;
|
|
27
|
+
}
|
|
28
|
+
declare const Alert: React.ForwardRefExoticComponent<AlertProps & React.RefAttributes<HTMLDivElement>>;
|
|
29
|
+
export default Alert;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import React, { forwardRef } from 'react';
|
|
2
|
+
import { useCallback } from 'react';
|
|
3
|
+
import { Button, Link, Icon } from '../../index';
|
|
4
|
+
import { X } from '../../assets';
|
|
5
|
+
const Alert = forwardRef(function Alert({ testId = 'fs-alert', children, icon, dismissible, link, onClose, ...otherProps }, ref) {
|
|
6
|
+
const handleClose = useCallback((event) => {
|
|
7
|
+
if (event.defaultPrevented) {
|
|
8
|
+
return;
|
|
9
|
+
}
|
|
10
|
+
onClose?.(event);
|
|
11
|
+
}, [onClose]);
|
|
12
|
+
return (React.createElement("div", { ref: ref, role: "alert", "data-fs-alert": true, "data-testid": testId, "data-fs-alert-dismissible": dismissible, ...otherProps },
|
|
13
|
+
icon && React.createElement(Icon, { component: icon }),
|
|
14
|
+
React.createElement("p", { "data-fs-alert-content": true }, children),
|
|
15
|
+
link && (React.createElement(Link, { "data-fs-alert-link": true, variant: "inline", ...link })),
|
|
16
|
+
dismissible && (React.createElement(Button, { "data-fs-alert-button": true, "aria-label": "Close", onClick: handleClose },
|
|
17
|
+
React.createElement("span", null,
|
|
18
|
+
React.createElement(Icon, { component: React.createElement(X, null) }))))));
|
|
19
|
+
});
|
|
20
|
+
export default Alert;
|
|
21
|
+
//# sourceMappingURL=Alert.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Alert.js","sourceRoot":"","sources":["../../../src/molecules/Alert/Alert.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAA;AAEnC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAa,MAAM,aAAa,CAAA;AAE3D,OAAO,EAAE,CAAC,EAAE,MAAM,cAAc,CAAA;AA6BhC,MAAM,KAAK,GAAG,UAAU,CAA6B,SAAS,KAAK,CAAC,EAClE,MAAM,GAAG,UAAU,EACnB,QAAQ,EACR,IAAI,EACJ,WAAW,EACX,IAAI,EACJ,OAAO,EACP,GAAG,UAAU,EACd,EACC,GAAG;IACH,MAAM,WAAW,GAAG,WAAW,CAC7B,CAAC,KAA8B,EAAE,EAAE;QACjC,IAAI,KAAK,CAAC,gBAAgB,EAAE;YAC1B,OAAM;SACP;QAED,OAAO,EAAE,CAAC,KAAK,CAAC,CAAA;IAClB,CAAC,EACD,CAAC,OAAO,CAAC,CACV,CAAA;IACD,OAAO,CACL,6BACE,GAAG,EAAE,GAAG,EACR,IAAI,EAAC,OAAO,wCAEC,MAAM,+BACQ,WAAW,KAClC,UAAU;QAGb,IAAI,IAAI,oBAAC,IAAI,IAAC,SAAS,EAAE,IAAI,GAAI;QAElC,4DAA0B,QAAQ,CAAK;QAEtC,IAAI,IAAI,CACP,oBAAC,IAAI,gCAAoB,OAAO,EAAC,QAAQ,KAAK,IAAI,GAAI,CACvD;QAEA,WAAW,IAAI,CACd,oBAAC,MAAM,gDAAiC,OAAO,EAAC,OAAO,EAAE,WAAW;YAClE;gBACE,oBAAC,IAAI,IAAC,SAAS,EAAE,oBAAC,CAAC,OAAG,GAAI,CACrB,CACA,CACV,CACG,CACP,CAAA;AACH,CAAC,CAAC,CAAA;AAEF,eAAe,KAAK,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/molecules/Alert/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { ReactNode } from 'react';
|
|
3
|
+
import { HTMLAttributes } from 'react';
|
|
4
|
+
export interface RatingProps extends Omit<HTMLAttributes<HTMLUListElement>, 'onChange'> {
|
|
5
|
+
/**
|
|
6
|
+
* The length of child elements.
|
|
7
|
+
*/
|
|
8
|
+
length?: number;
|
|
9
|
+
/**
|
|
10
|
+
* The current value of the rating, based on the quantity of child elements.
|
|
11
|
+
*/
|
|
12
|
+
value: number;
|
|
13
|
+
/**
|
|
14
|
+
* A React component that will be rendered as an icon.
|
|
15
|
+
*/
|
|
16
|
+
icon: ReactNode;
|
|
17
|
+
/**
|
|
18
|
+
* Function to be triggered when Rating option change. This should only be used if you and an actionable rating list.
|
|
19
|
+
*/
|
|
20
|
+
onChange?: (value: number) => void;
|
|
21
|
+
/**
|
|
22
|
+
* ID to find this component in testing tools (e.g.: cypress, testing library, and jest).
|
|
23
|
+
*/
|
|
24
|
+
testId?: string;
|
|
25
|
+
}
|
|
26
|
+
export interface RatingItemProps {
|
|
27
|
+
'data-fs-rating-item'?: 'full' | 'partial' | 'empty';
|
|
28
|
+
'data-testid'?: string;
|
|
29
|
+
}
|
|
30
|
+
declare const Rating: React.ForwardRefExoticComponent<RatingProps & React.RefAttributes<HTMLUListElement>>;
|
|
31
|
+
export default Rating;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import React, { forwardRef, useState } from 'react';
|
|
2
|
+
import List from '../../atoms/List';
|
|
3
|
+
import { Icon, IconButton } from '../..';
|
|
4
|
+
const Rating = forwardRef(function Rating({ children, testId = 'fs-rating', length = 5, value = 0, icon, onChange, ...otherProps }, ref) {
|
|
5
|
+
const [hover, setHover] = useState(0);
|
|
6
|
+
return (React.createElement(List, { ref: ref, "data-fs-rating": true, "data-fs-rating-actionable": typeof onChange === 'function', "data-testid": testId, ...otherProps }, Array.from({ length }).map((_, index) => {
|
|
7
|
+
const tempIndex = index + 1;
|
|
8
|
+
const fillCheck = () => {
|
|
9
|
+
if (tempIndex <= (hover || value)) {
|
|
10
|
+
return 'full';
|
|
11
|
+
}
|
|
12
|
+
if (tempIndex - value > 0 && tempIndex - value < 1) {
|
|
13
|
+
return 'partial';
|
|
14
|
+
}
|
|
15
|
+
return 'empty';
|
|
16
|
+
};
|
|
17
|
+
return (React.createElement("li", { key: `rating-${index}`, "data-fs-rating-item": fillCheck(), "data-testid": `${testId}-item` }, onChange ? (React.createElement(IconButton, { "data-fs-rating-button": true, icon: icon, size: "small", "aria-label": "rate", onClick: () => {
|
|
18
|
+
onChange(tempIndex);
|
|
19
|
+
}, onMouseEnter: () => setHover(tempIndex), onMouseLeave: () => setHover(value) })) : (React.createElement(React.Fragment, null,
|
|
20
|
+
React.createElement("div", { "data-fs-rating-icon-wrapper": true },
|
|
21
|
+
React.createElement(Icon, { component: icon })),
|
|
22
|
+
React.createElement(Icon, { "data-fs-rating-icon-outline": true, component: icon })))));
|
|
23
|
+
})));
|
|
24
|
+
});
|
|
25
|
+
export default Rating;
|
|
26
|
+
//# sourceMappingURL=Rating.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Rating.js","sourceRoot":"","sources":["../../../src/molecules/Rating/Rating.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAInD,OAAO,IAAI,MAAM,kBAAkB,CAAA;AACnC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AA+BxC,MAAM,MAAM,GAAG,UAAU,CAAgC,SAAS,MAAM,CACtE,EACE,QAAQ,EACR,MAAM,GAAG,WAAW,EACpB,MAAM,GAAG,CAAC,EACV,KAAK,GAAG,CAAC,EACT,IAAI,EACJ,QAAQ,EACR,GAAG,UAAU,EACd,EACD,GAAG;IAEH,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;IAErC,OAAO,CACL,oBAAC,IAAI,IACH,GAAG,EAAE,GAAG,uDAEmB,OAAO,QAAQ,KAAK,UAAU,iBAC5C,MAAM,KACf,UAAU,IAEb,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAa,EAAE,EAAE;QAC/C,MAAM,SAAS,GAAG,KAAK,GAAG,CAAC,CAAA;QAE3B,MAAM,SAAS,GAAG,GAAG,EAAE;YACrB,IAAI,SAAS,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,EAAE;gBACjC,OAAO,MAAM,CAAA;aACd;YAED,IAAI,SAAS,GAAG,KAAK,GAAG,CAAC,IAAI,SAAS,GAAG,KAAK,GAAG,CAAC,EAAE;gBAClD,OAAO,SAAS,CAAA;aACjB;YAED,OAAO,OAAO,CAAA;QAChB,CAAC,CAAA;QAED,OAAO,CACL,4BACE,GAAG,EAAE,UAAU,KAAK,EAAE,yBACD,SAAS,EAAE,iBACnB,GAAG,MAAM,OAAO,IAE5B,QAAQ,CAAC,CAAC,CAAC,CACV,oBAAC,UAAU,mCAET,IAAI,EAAE,IAAI,EACV,IAAI,EAAC,OAAO,gBACD,MAAM,EACjB,OAAO,EAAE,GAAG,EAAE;gBACZ,QAAQ,CAAC,SAAS,CAAC,CAAA;YACrB,CAAC,EACD,YAAY,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,EACvC,YAAY,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,GACnC,CACH,CAAC,CAAC,CAAC,CACF;YACE;gBACE,oBAAC,IAAI,IAAC,SAAS,EAAE,IAAI,GAAI,CACrB;YACN,oBAAC,IAAI,yCAA6B,SAAS,EAAE,IAAI,GAAI,CACpD,CACJ,CACE,CACN,CAAA;IACH,CAAC,CAAC,CACG,CACR,CAAA;AACH,CAAC,CAAC,CAAA;AAEF,eAAe,MAAM,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/molecules/Rating/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@faststore/components",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.48-alpha.0",
|
|
4
4
|
"module": "dist/index.js",
|
|
5
5
|
"typings": "dist/index.d.ts",
|
|
6
6
|
"author": "Emerson Laurentino @emersonlaurentino",
|
|
@@ -21,8 +21,8 @@
|
|
|
21
21
|
"src"
|
|
22
22
|
],
|
|
23
23
|
"devDependencies": {
|
|
24
|
-
"@faststore/eslint-config": "^2.0.
|
|
25
|
-
"@faststore/shared": "^2.0.
|
|
24
|
+
"@faststore/eslint-config": "^2.0.48-alpha.0",
|
|
25
|
+
"@faststore/shared": "^2.0.48-alpha.0",
|
|
26
26
|
"eslint": "7.32.0",
|
|
27
27
|
"typescript": "^4.8.4"
|
|
28
28
|
},
|
|
@@ -30,5 +30,5 @@
|
|
|
30
30
|
"node": "16.18.0",
|
|
31
31
|
"yarn": "1.19.1"
|
|
32
32
|
},
|
|
33
|
-
"gitHead": "
|
|
33
|
+
"gitHead": "13071d1410c4d42df70946ba27631549d2544d85"
|
|
34
34
|
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import React from 'react'
|
|
2
|
+
import type { FC } from 'react'
|
|
3
|
+
|
|
4
|
+
// Icon from Phosphor Icons
|
|
5
|
+
const Heart: FC = () => (
|
|
6
|
+
<svg
|
|
7
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
8
|
+
fill="currentColor"
|
|
9
|
+
viewBox="0 0 256 256"
|
|
10
|
+
strokeWidth="16"
|
|
11
|
+
width={24}
|
|
12
|
+
height={24}
|
|
13
|
+
>
|
|
14
|
+
<rect width="256" height="256" fill="none"></rect>
|
|
15
|
+
<path d="M128,216S28,160,28,92A52,52,0,0,1,128,72h0A52,52,0,0,1,228,92C228,160,128,216,128,216Z" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round"></path>
|
|
16
|
+
</svg>
|
|
17
|
+
)
|
|
18
|
+
|
|
19
|
+
export default Heart
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import React from 'react'
|
|
2
|
+
import type { FC } from 'react'
|
|
3
|
+
|
|
4
|
+
// Icon from Phosphor Icons
|
|
5
|
+
const Star: FC = () => (
|
|
6
|
+
<svg
|
|
7
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
8
|
+
fill="currentColor"
|
|
9
|
+
viewBox="0 0 256 256"
|
|
10
|
+
strokeWidth="16"
|
|
11
|
+
width={24}
|
|
12
|
+
height={24}
|
|
13
|
+
>
|
|
14
|
+
<rect width="256" height="256" fill="none"></rect>
|
|
15
|
+
<path d="M239.2,97.4A16.4,16.4,0,0,0,224.6,86l-59.4-4.1-22-55.5A16.4,16.4,0,0,0,128,16h0a16.4,16.4,0,0,0-15.2,10.4L90.4,82.2,31.4,86A16.5,16.5,0,0,0,16.8,97.4,16.8,16.8,0,0,0,22,115.5l45.4,38.4L53.9,207a18.5,18.5,0,0,0,7,19.6,18,18,0,0,0,20.1.6l46.9-29.7h.2l50.5,31.9a16.1,16.1,0,0,0,8.7,2.6,16.5,16.5,0,0,0,15.8-20.8l-14.3-58.1L234,115.5A16.8,16.8,0,0,0,239.2,97.4Z" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round"></path>
|
|
16
|
+
</svg>
|
|
17
|
+
)
|
|
18
|
+
|
|
19
|
+
export default Star
|
package/src/assets/index.ts
CHANGED
|
@@ -2,6 +2,7 @@ export { default as ArrowRight } from './ArrowRight'
|
|
|
2
2
|
export { default as ArrowElbowDownRight } from './ArrowElbowDownRight'
|
|
3
3
|
export { default as CaretDown } from './CaretDown'
|
|
4
4
|
export { default as Checked } from './Checked'
|
|
5
|
+
export { default as Heart } from './Heart'
|
|
5
6
|
export { default as House } from './House'
|
|
6
7
|
export { default as Minus } from './Minus'
|
|
7
8
|
export { default as Plus } from './Plus'
|
|
@@ -9,5 +10,6 @@ export { default as MinusCircle } from './MinusCircle'
|
|
|
9
10
|
export { default as PlusCircle } from './PlusCircle'
|
|
10
11
|
export { default as Ruler } from './Ruler'
|
|
11
12
|
export { default as ShoppingCart } from './ShoppingCart'
|
|
13
|
+
export { default as Star } from './Star'
|
|
12
14
|
export { default as X } from './X'
|
|
13
15
|
export { default as XCircle } from './XCircle'
|
package/src/index.ts
CHANGED
|
@@ -41,6 +41,8 @@ export type {
|
|
|
41
41
|
AccordionButtonProps,
|
|
42
42
|
AccordionPanelProps,
|
|
43
43
|
} from './molecules/Accordion'
|
|
44
|
+
export { default as Alert } from './molecules/Alert'
|
|
45
|
+
export type { AlertProps } from './molecules/Alert'
|
|
44
46
|
export { default as BuyButton } from './molecules/BuyButton'
|
|
45
47
|
export { default as CheckboxField } from './molecules/CheckboxField'
|
|
46
48
|
export type { CheckboxFieldProps } from './molecules/CheckboxField'
|
|
@@ -66,6 +68,8 @@ export { default as LinkButton } from './molecules/LinkButton'
|
|
|
66
68
|
export type { LinkButtonProps } from './molecules/LinkButton'
|
|
67
69
|
export { default as RadioField } from './molecules/RadioField'
|
|
68
70
|
export type { RadioFieldProps } from './molecules/RadioField'
|
|
71
|
+
export { default as Rating } from './molecules/Rating'
|
|
72
|
+
export type { RatingProps } from './molecules/Rating'
|
|
69
73
|
export { default as SelectField } from './molecules/SelectField'
|
|
70
74
|
export type { SelectFieldProps } from './molecules/SelectField'
|
|
71
75
|
export {
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import type { HTMLAttributes } from 'react'
|
|
2
|
+
import React, { forwardRef } from 'react'
|
|
3
|
+
import { useCallback } from 'react'
|
|
4
|
+
|
|
5
|
+
import { Button, Link, Icon, LinkProps } from '../../index'
|
|
6
|
+
|
|
7
|
+
import { X } from '../../assets'
|
|
8
|
+
|
|
9
|
+
import type { ReactNode, MouseEvent } from 'react'
|
|
10
|
+
|
|
11
|
+
export interface AlertProps
|
|
12
|
+
extends Omit<HTMLAttributes<HTMLDivElement>, 'role'> {
|
|
13
|
+
/**
|
|
14
|
+
* ID to find this component in testing tools (e.g.: cypress,
|
|
15
|
+
* testing-library, and jest).
|
|
16
|
+
*/
|
|
17
|
+
testId?: string
|
|
18
|
+
/**
|
|
19
|
+
* Icon component for additional customization.
|
|
20
|
+
*/
|
|
21
|
+
icon?: ReactNode
|
|
22
|
+
/**
|
|
23
|
+
* Enables dismissible feature.
|
|
24
|
+
*/
|
|
25
|
+
dismissible?: boolean
|
|
26
|
+
/**
|
|
27
|
+
* Extends all Link Props.
|
|
28
|
+
*/
|
|
29
|
+
link?: LinkProps
|
|
30
|
+
/**
|
|
31
|
+
* Function called when dismiss button is clicked.
|
|
32
|
+
*/
|
|
33
|
+
onClose?: (event: MouseEvent<HTMLElement>) => void
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
const Alert = forwardRef<HTMLDivElement, AlertProps>(function Alert({
|
|
37
|
+
testId = 'fs-alert',
|
|
38
|
+
children,
|
|
39
|
+
icon,
|
|
40
|
+
dismissible,
|
|
41
|
+
link,
|
|
42
|
+
onClose,
|
|
43
|
+
...otherProps
|
|
44
|
+
},
|
|
45
|
+
ref) {
|
|
46
|
+
const handleClose = useCallback(
|
|
47
|
+
(event: MouseEvent<HTMLElement>) => {
|
|
48
|
+
if (event.defaultPrevented) {
|
|
49
|
+
return
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
onClose?.(event)
|
|
53
|
+
},
|
|
54
|
+
[onClose]
|
|
55
|
+
)
|
|
56
|
+
return (
|
|
57
|
+
<div
|
|
58
|
+
ref={ref}
|
|
59
|
+
role="alert"
|
|
60
|
+
data-fs-alert
|
|
61
|
+
data-testid={testId}
|
|
62
|
+
data-fs-alert-dismissible={dismissible}
|
|
63
|
+
{...otherProps}
|
|
64
|
+
>
|
|
65
|
+
|
|
66
|
+
{icon && <Icon component={icon} />}
|
|
67
|
+
|
|
68
|
+
<p data-fs-alert-content>{children}</p>
|
|
69
|
+
|
|
70
|
+
{link && (
|
|
71
|
+
<Link data-fs-alert-link variant="inline" {...link} />
|
|
72
|
+
)}
|
|
73
|
+
|
|
74
|
+
{dismissible && (
|
|
75
|
+
<Button data-fs-alert-button aria-label="Close" onClick={handleClose}>
|
|
76
|
+
<span>
|
|
77
|
+
<Icon component={<X />} />
|
|
78
|
+
</span>
|
|
79
|
+
</Button>
|
|
80
|
+
)}
|
|
81
|
+
</div>
|
|
82
|
+
)
|
|
83
|
+
})
|
|
84
|
+
|
|
85
|
+
export default Alert
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import React, { forwardRef, useState } from 'react'
|
|
2
|
+
import { ReactNode } from 'react'
|
|
3
|
+
import { HTMLAttributes } from 'react'
|
|
4
|
+
|
|
5
|
+
import List from '../../atoms/List'
|
|
6
|
+
import { Icon, IconButton } from '../..'
|
|
7
|
+
|
|
8
|
+
export interface RatingProps
|
|
9
|
+
extends Omit<HTMLAttributes<HTMLUListElement>, 'onChange'> {
|
|
10
|
+
/**
|
|
11
|
+
* The length of child elements.
|
|
12
|
+
*/
|
|
13
|
+
length?: number
|
|
14
|
+
/**
|
|
15
|
+
* The current value of the rating, based on the quantity of child elements.
|
|
16
|
+
*/
|
|
17
|
+
value: number
|
|
18
|
+
/**
|
|
19
|
+
* A React component that will be rendered as an icon.
|
|
20
|
+
*/
|
|
21
|
+
icon: ReactNode
|
|
22
|
+
/**
|
|
23
|
+
* Function to be triggered when Rating option change. This should only be used if you and an actionable rating list.
|
|
24
|
+
*/
|
|
25
|
+
onChange?: (value: number) => void
|
|
26
|
+
/**
|
|
27
|
+
* ID to find this component in testing tools (e.g.: cypress, testing library, and jest).
|
|
28
|
+
*/
|
|
29
|
+
testId?: string
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export interface RatingItemProps {
|
|
33
|
+
'data-fs-rating-item'?: 'full' | 'partial' | 'empty'
|
|
34
|
+
'data-testid'?: string
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
const Rating = forwardRef<HTMLUListElement, RatingProps>(function Rating(
|
|
38
|
+
{
|
|
39
|
+
children,
|
|
40
|
+
testId = 'fs-rating',
|
|
41
|
+
length = 5,
|
|
42
|
+
value = 0,
|
|
43
|
+
icon,
|
|
44
|
+
onChange,
|
|
45
|
+
...otherProps
|
|
46
|
+
},
|
|
47
|
+
ref
|
|
48
|
+
) {
|
|
49
|
+
const [hover, setHover] = useState(0)
|
|
50
|
+
|
|
51
|
+
return (
|
|
52
|
+
<List
|
|
53
|
+
ref={ref}
|
|
54
|
+
data-fs-rating
|
|
55
|
+
data-fs-rating-actionable={typeof onChange === 'function'}
|
|
56
|
+
data-testid={testId}
|
|
57
|
+
{...otherProps}
|
|
58
|
+
>
|
|
59
|
+
{Array.from({ length }).map((_, index: number) => {
|
|
60
|
+
const tempIndex = index + 1
|
|
61
|
+
|
|
62
|
+
const fillCheck = () => {
|
|
63
|
+
if (tempIndex <= (hover || value)) {
|
|
64
|
+
return 'full'
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
if (tempIndex - value > 0 && tempIndex - value < 1) {
|
|
68
|
+
return 'partial'
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
return 'empty'
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
return (
|
|
75
|
+
<li
|
|
76
|
+
key={`rating-${index}`}
|
|
77
|
+
data-fs-rating-item={fillCheck()}
|
|
78
|
+
data-testid={`${testId}-item`}
|
|
79
|
+
>
|
|
80
|
+
{onChange ? (
|
|
81
|
+
<IconButton
|
|
82
|
+
data-fs-rating-button
|
|
83
|
+
icon={icon}
|
|
84
|
+
size="small"
|
|
85
|
+
aria-label="rate"
|
|
86
|
+
onClick={() => {
|
|
87
|
+
onChange(tempIndex)
|
|
88
|
+
}}
|
|
89
|
+
onMouseEnter={() => setHover(tempIndex)}
|
|
90
|
+
onMouseLeave={() => setHover(value)}
|
|
91
|
+
/>
|
|
92
|
+
) : (
|
|
93
|
+
<>
|
|
94
|
+
<div data-fs-rating-icon-wrapper>
|
|
95
|
+
<Icon component={icon} />
|
|
96
|
+
</div>
|
|
97
|
+
<Icon data-fs-rating-icon-outline component={icon} />
|
|
98
|
+
</>
|
|
99
|
+
)}
|
|
100
|
+
</li>
|
|
101
|
+
)
|
|
102
|
+
})}
|
|
103
|
+
</List>
|
|
104
|
+
)
|
|
105
|
+
})
|
|
106
|
+
|
|
107
|
+
export default Rating
|