@faststore/components 2.0.114-alpha.0 → 2.0.122-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/dist/hooks/index.d.ts +1 -0
- package/dist/hooks/index.js +1 -0
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/useScrollDirection.d.ts +1 -0
- package/dist/hooks/useScrollDirection.js +22 -0
- package/dist/hooks/useScrollDirection.js.map +1 -0
- package/dist/hooks/useSearch.js +2 -2
- package/dist/hooks/useSearch.js.map +1 -1
- package/dist/index.d.ts +6 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/molecules/Modal/Modal.d.ts +6 -1
- package/dist/molecules/Modal/Modal.js +2 -2
- package/dist/molecules/Modal/Modal.js.map +1 -1
- package/dist/molecules/NavbarLinks/NavbarLinks.d.ts +10 -0
- package/dist/molecules/NavbarLinks/NavbarLinks.js +6 -0
- package/dist/molecules/NavbarLinks/NavbarLinks.js.map +1 -0
- package/dist/molecules/NavbarLinks/NavbarLinksList.d.ts +10 -0
- package/dist/molecules/NavbarLinks/NavbarLinksList.js +7 -0
- package/dist/molecules/NavbarLinks/NavbarLinksList.js.map +1 -0
- package/dist/molecules/NavbarLinks/NavbarLinksListItem.d.ts +10 -0
- package/dist/molecules/NavbarLinks/NavbarLinksListItem.js +6 -0
- package/dist/molecules/NavbarLinks/NavbarLinksListItem.js.map +1 -0
- package/dist/molecules/NavbarLinks/index.d.ts +6 -0
- package/dist/molecules/NavbarLinks/index.js +4 -0
- package/dist/molecules/NavbarLinks/index.js.map +1 -0
- package/dist/organisms/CartSidebar/CartSidebar.d.ts +8 -3
- package/dist/organisms/CartSidebar/CartSidebar.js +2 -2
- package/dist/organisms/CartSidebar/CartSidebar.js.map +1 -1
- package/dist/organisms/Filter/FilterSlider.d.ts +8 -4
- package/dist/organisms/Filter/FilterSlider.js +2 -2
- package/dist/organisms/Filter/FilterSlider.js.map +1 -1
- package/dist/organisms/Navbar/Navbar.d.ts +14 -0
- package/dist/organisms/Navbar/Navbar.js +6 -0
- package/dist/organisms/Navbar/Navbar.js.map +1 -0
- package/dist/organisms/Navbar/NavbarButtons.d.ts +14 -0
- package/dist/organisms/Navbar/NavbarButtons.js +6 -0
- package/dist/organisms/Navbar/NavbarButtons.js.map +1 -0
- package/dist/organisms/Navbar/NavbarHeader.d.ts +10 -0
- package/dist/organisms/Navbar/NavbarHeader.js +6 -0
- package/dist/organisms/Navbar/NavbarHeader.js.map +1 -0
- package/dist/organisms/Navbar/NavbarRow.d.ts +10 -0
- package/dist/organisms/Navbar/NavbarRow.js +6 -0
- package/dist/organisms/Navbar/NavbarRow.js.map +1 -0
- package/dist/organisms/Navbar/index.d.ts +8 -0
- package/dist/organisms/Navbar/index.js +5 -0
- package/dist/organisms/Navbar/index.js.map +1 -0
- package/dist/organisms/NavbarSlider/NavbarSlider.d.ts +19 -0
- package/dist/organisms/NavbarSlider/NavbarSlider.js +7 -0
- package/dist/organisms/NavbarSlider/NavbarSlider.js.map +1 -0
- package/dist/organisms/NavbarSlider/NavbarSliderContent.d.ts +10 -0
- package/dist/organisms/NavbarSlider/NavbarSliderContent.js +6 -0
- package/dist/organisms/NavbarSlider/NavbarSliderContent.js.map +1 -0
- package/dist/organisms/NavbarSlider/NavbarSliderFooter.d.ts +10 -0
- package/dist/organisms/NavbarSlider/NavbarSliderFooter.js +6 -0
- package/dist/organisms/NavbarSlider/NavbarSliderFooter.js.map +1 -0
- package/dist/organisms/NavbarSlider/NavbarSliderHeader.d.ts +10 -0
- package/dist/organisms/NavbarSlider/NavbarSliderHeader.js +7 -0
- package/dist/organisms/NavbarSlider/NavbarSliderHeader.js.map +1 -0
- package/dist/organisms/NavbarSlider/index.d.ts +8 -0
- package/dist/organisms/NavbarSlider/index.js +5 -0
- package/dist/organisms/NavbarSlider/index.js.map +1 -0
- package/dist/organisms/RegionModal/RegionModal.d.ts +6 -2
- package/dist/organisms/RegionModal/RegionModal.js +3 -3
- package/dist/organisms/RegionModal/RegionModal.js.map +1 -1
- package/dist/organisms/SlideOver/SlideOver.d.ts +6 -2
- package/dist/organisms/SlideOver/SlideOver.js +2 -2
- package/dist/organisms/SlideOver/SlideOver.js.map +1 -1
- package/package.json +2 -2
- package/src/hooks/index.ts +1 -0
- package/src/hooks/useScrollDirection.ts +31 -0
- package/src/hooks/useSearch.ts +9 -8
- package/src/index.ts +36 -0
- package/src/molecules/Modal/Modal.tsx +7 -1
- package/src/molecules/NavbarLinks/NavbarLinks.tsx +24 -0
- package/src/molecules/NavbarLinks/NavbarLinksList.tsx +31 -0
- package/src/molecules/NavbarLinks/NavbarLinksListItem.tsx +30 -0
- package/src/molecules/NavbarLinks/index.ts +8 -0
- package/src/organisms/CartSidebar/CartSidebar.tsx +11 -2
- package/src/organisms/Filter/FilterSlider.tsx +12 -2
- package/src/organisms/Navbar/Navbar.tsx +32 -0
- package/src/organisms/Navbar/NavbarButtons.tsx +34 -0
- package/src/organisms/Navbar/NavbarHeader.tsx +29 -0
- package/src/organisms/Navbar/NavbarRow.tsx +22 -0
- package/src/organisms/Navbar/index.ts +11 -0
- package/src/organisms/NavbarSlider/NavbarSlider.tsx +46 -0
- package/src/organisms/NavbarSlider/NavbarSliderContent.tsx +31 -0
- package/src/organisms/NavbarSlider/NavbarSliderFooter.tsx +30 -0
- package/src/organisms/NavbarSlider/NavbarSliderHeader.tsx +29 -0
- package/src/organisms/NavbarSlider/index.ts +11 -0
- package/src/organisms/RegionModal/RegionModal.tsx +18 -3
- package/src/organisms/SlideOver/SlideOver.tsx +8 -2
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import type { SlideOverHeaderProps } from '../..';
|
|
3
|
+
export interface NavbarSliderHeaderProps extends SlideOverHeaderProps {
|
|
4
|
+
/**
|
|
5
|
+
* ID to find this component in testing tools (e.g.: Cypress, Testing Library, and Jest).
|
|
6
|
+
*/
|
|
7
|
+
testId?: string;
|
|
8
|
+
}
|
|
9
|
+
declare function NavbarSliderHeader({ children, testId, ...otherProps }: NavbarSliderHeaderProps): JSX.Element;
|
|
10
|
+
export default NavbarSliderHeader;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { SlideOverHeader } from '../..';
|
|
3
|
+
function NavbarSliderHeader({ children, testId = 'fs-navbar-slider-header', ...otherProps }) {
|
|
4
|
+
return (React.createElement(SlideOverHeader, { "data-fs-navbar-slider-header": true, "data-testid": testId, ...otherProps }, children));
|
|
5
|
+
}
|
|
6
|
+
export default NavbarSliderHeader;
|
|
7
|
+
//# sourceMappingURL=NavbarSliderHeader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NavbarSliderHeader.js","sourceRoot":"","sources":["../../../src/organisms/NavbarSlider/NavbarSliderHeader.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EAAE,eAAe,EAAE,MAAM,OAAO,CAAA;AAUvC,SAAS,kBAAkB,CAAC,EAC1B,QAAQ,EACR,MAAM,GAAG,yBAAyB,EAClC,GAAG,UAAU,EACW;IACxB,OAAO,CACL,oBAAC,eAAe,yDAED,MAAM,KACf,UAAU,IAEb,QAAQ,CACO,CACnB,CAAA;AACH,CAAC;AAED,eAAe,kBAAkB,CAAA"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export { default } from './NavbarSlider';
|
|
2
|
+
export type { NavbarSliderProps } from './NavbarSlider';
|
|
3
|
+
export { default as NavbarSliderHeader } from './NavbarSliderHeader';
|
|
4
|
+
export type { NavbarSliderHeaderProps } from './NavbarSliderHeader';
|
|
5
|
+
export { default as NavbarSliderContent } from './NavbarSliderContent';
|
|
6
|
+
export type { NavbarSliderContentProps } from './NavbarSliderContent';
|
|
7
|
+
export { default as NavbarSliderFooter } from './NavbarSliderFooter';
|
|
8
|
+
export type { NavbarSliderFooterProps } from './NavbarSliderFooter';
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { default } from './NavbarSlider';
|
|
2
|
+
export { default as NavbarSliderHeader } from './NavbarSliderHeader';
|
|
3
|
+
export { default as NavbarSliderContent } from './NavbarSliderContent';
|
|
4
|
+
export { default as NavbarSliderFooter } from './NavbarSliderFooter';
|
|
5
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/organisms/NavbarSlider/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AAGxC,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AAGpE,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAGtE,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,sBAAsB,CAAA"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import type { MutableRefObject } from 'react';
|
|
3
|
-
import type {
|
|
3
|
+
import type { LinkElementType, LinkProps, ModalProps, OverlayProps } from '../../';
|
|
4
4
|
export interface RegionModalProps extends Omit<ModalProps, 'children'> {
|
|
5
5
|
/**
|
|
6
6
|
* ID to find this component in testing tools (e.g.: cypress,
|
|
@@ -39,6 +39,10 @@ export interface RegionModalProps extends Omit<ModalProps, 'children'> {
|
|
|
39
39
|
* Enables fadeOut effect on modal after onSubmit function
|
|
40
40
|
*/
|
|
41
41
|
fadeOutOnSubmit?: boolean;
|
|
42
|
+
/**
|
|
43
|
+
* Props forwarded to the `Overlay` component.
|
|
44
|
+
*/
|
|
45
|
+
overlayProps?: OverlayProps;
|
|
42
46
|
/**
|
|
43
47
|
* Function called when Close button is clicked.
|
|
44
48
|
*/
|
|
@@ -56,5 +60,5 @@ export interface RegionModalProps extends Omit<ModalProps, 'children'> {
|
|
|
56
60
|
*/
|
|
57
61
|
onClear?: () => void;
|
|
58
62
|
}
|
|
59
|
-
declare function RegionModal({ testId, title, description, idkPostalCodeLinkProps, errorMessage, inputRef, inputValue, fadeOutOnSubmit, onClose, onInput, onSubmit, onClear, ...otherProps }: RegionModalProps): JSX.Element;
|
|
63
|
+
declare function RegionModal({ testId, title, description, idkPostalCodeLinkProps, errorMessage, inputRef, inputValue, fadeOutOnSubmit, overlayProps, onClose, onInput, onSubmit, onClear, ...otherProps }: RegionModalProps): JSX.Element;
|
|
60
64
|
export default RegionModal;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { Icon, InputField, Link, Modal,
|
|
3
|
-
function RegionModal({ testId = 'fs-region-modal', title = 'Set your location', description = 'Prices, offers and availability may vary according to your location.', idkPostalCodeLinkProps, errorMessage, inputRef, inputValue, fadeOutOnSubmit, onClose, onInput, onSubmit, onClear, ...otherProps }) {
|
|
4
|
-
return (React.createElement(Modal, { "data-fs-region-modal": true, testId: testId, ...otherProps }, ({ fadeOut }) => (React.createElement(React.Fragment, null,
|
|
2
|
+
import { Icon, InputField, Link, Modal, ModalBody, ModalHeader } from '../..';
|
|
3
|
+
function RegionModal({ testId = 'fs-region-modal', title = 'Set your location', description = 'Prices, offers and availability may vary according to your location.', idkPostalCodeLinkProps, errorMessage, inputRef, inputValue, fadeOutOnSubmit, overlayProps, onClose, onInput, onSubmit, onClear, ...otherProps }) {
|
|
4
|
+
return (React.createElement(Modal, { "data-fs-region-modal": true, testId: testId, overlayProps: overlayProps, ...otherProps }, ({ fadeOut }) => (React.createElement(React.Fragment, null,
|
|
5
5
|
React.createElement(ModalHeader, { onClose: () => {
|
|
6
6
|
fadeOut();
|
|
7
7
|
onClose?.();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RegionModal.js","sourceRoot":"","sources":["../../../src/organisms/RegionModal/RegionModal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"RegionModal.js","sourceRoot":"","sources":["../../../src/organisms/RegionModal/RegionModal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,OAAO,CAAA;AAoE7E,SAAS,WAAW,CAAC,EACnB,MAAM,GAAG,iBAAiB,EAC1B,KAAK,GAAG,mBAAmB,EAC3B,WAAW,GAAG,sEAAsE,EACpF,sBAAsB,EACtB,YAAY,EACZ,QAAQ,EACR,UAAU,EACV,eAAe,EACf,YAAY,EACZ,OAAO,EACP,OAAO,EACP,QAAQ,EACR,OAAO,EACP,GAAG,UAAU,EACI;IACjB,OAAO,CACL,oBAAC,KAAK,kCAEJ,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,YAAY,KACtB,UAAU,IAEb,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAChB;QACE,oBAAC,WAAW,IACV,OAAO,EAAE,GAAG,EAAE;gBACZ,OAAO,EAAE,CAAA;gBACT,OAAO,EAAE,EAAE,CAAA;YACb,CAAC,EACD,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,WAAW,EACxB,aAAa,EAAE;gBACb,YAAY,EAAE,oBAAoB;aACnC,GACD;QACF,oBAAC,SAAS;YACR,oBAAC,UAAU,wCAET,EAAE,EAAE,GAAG,MAAM,cAAc,EAC3B,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAC,aAAa,EACnB,UAAU,QACV,KAAK,EAAE,UAAU,EACjB,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,EACpC,QAAQ,EAAE,GAAG,EAAE;oBACb,QAAQ,EAAE,EAAE,CAAA;oBACZ,eAAe,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA;gBACpC,CAAC,EACD,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,EAAE,EAC1B,KAAK,EAAE,YAAY,GACnB;YAEF,oBAAC,IAAI,0CAA+B,sBAAsB,IACvD,sBAAsB,EAAE,QAAQ,IAAI,CACnC;gBACG,6BAA6B;gBAC9B,oBAAC,IAAI,IAAC,IAAI,EAAC,gBAAgB,EAAC,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,GAAI,CACpD,CACJ,CACI,CACG,CACX,CACJ,CACK,CACT,CAAA;AACH,CAAC;AAED,eAAe,WAAW,CAAA"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ReactNode } from 'react';
|
|
2
|
-
import type { ModalProps } from '../../';
|
|
2
|
+
import type { ModalProps, OverlayProps } from '../../';
|
|
3
3
|
export type Direction = 'leftSide' | 'rightSide';
|
|
4
4
|
export type WidthSize = 'full' | 'partial';
|
|
5
5
|
export interface SlideOverProps extends Omit<ModalProps, 'title'> {
|
|
@@ -24,11 +24,15 @@ export interface SlideOverProps extends Omit<ModalProps, 'title'> {
|
|
|
24
24
|
*/
|
|
25
25
|
fade: 'in' | 'out';
|
|
26
26
|
children: ReactNode;
|
|
27
|
+
/**
|
|
28
|
+
* Props forwarded to the `Overlay` component.
|
|
29
|
+
*/
|
|
30
|
+
overlayProps?: OverlayProps;
|
|
27
31
|
/**
|
|
28
32
|
* This function is called whenever the user clicks outside.
|
|
29
33
|
* the modal content
|
|
30
34
|
*/
|
|
31
35
|
onDismiss?: () => void;
|
|
32
36
|
}
|
|
33
|
-
declare function SlideOver({ isOpen, direction, size, fade, children,
|
|
37
|
+
declare function SlideOver({ testId, isOpen, direction, size, fade, children, overlayProps, onDismiss, ...otherProps }: SlideOverProps): JSX.Element;
|
|
34
38
|
export default SlideOver;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { Modal } from '../../';
|
|
3
|
-
function SlideOver({ isOpen, direction = 'leftSide', size = 'full', fade = 'out', children,
|
|
4
|
-
return (React.createElement(Modal, { "data-fs-modal": null, "data-fs-slide-over": true, "data-fs-slide-over-direction": direction, "data-fs-slide-over-size": size, "data-fs-slide-over-state": fade, isOpen: isOpen, onDismiss: onDismiss, testId: testId, ...otherProps }, children));
|
|
3
|
+
function SlideOver({ testId = 'fs-slide-over', isOpen, direction = 'leftSide', size = 'full', fade = 'out', children, overlayProps, onDismiss, ...otherProps }) {
|
|
4
|
+
return (React.createElement(Modal, { "data-fs-modal": null, "data-fs-slide-over": true, "data-fs-slide-over-direction": direction, "data-fs-slide-over-size": size, "data-fs-slide-over-state": fade, isOpen: isOpen, onDismiss: onDismiss, testId: testId, overlayProps: overlayProps, ...otherProps }, children));
|
|
5
5
|
}
|
|
6
6
|
export default SlideOver;
|
|
7
7
|
//# sourceMappingURL=SlideOver.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SlideOver.js","sourceRoot":"","sources":["../../../src/organisms/SlideOver/SlideOver.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAA;
|
|
1
|
+
{"version":3,"file":"SlideOver.js","sourceRoot":"","sources":["../../../src/organisms/SlideOver/SlideOver.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAA;AAsC9B,SAAS,SAAS,CAAC,EACjB,MAAM,GAAG,eAAe,EACxB,MAAM,EACN,SAAS,GAAG,UAAU,EACtB,IAAI,GAAG,MAAM,EACb,IAAI,GAAG,KAAK,EACZ,QAAQ,EACR,YAAY,EACZ,SAAS,EACT,GAAG,UAAU,EACE;IACf,OAAO,CACL,oBAAC,KAAK,qBACW,IAAI,8DAEW,SAAS,6BACd,IAAI,8BACH,IAAI,EAC9B,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,YAAY,KACtB,UAAU,IAEb,QAAQ,CACH,CACT,CAAA;AACH,CAAC;AAED,eAAe,SAAS,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@faststore/components",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.122-alpha.0",
|
|
4
4
|
"module": "dist/index.js",
|
|
5
5
|
"typings": "dist/index.d.ts",
|
|
6
6
|
"author": "Emerson Laurentino @emersonlaurentino",
|
|
@@ -30,5 +30,5 @@
|
|
|
30
30
|
"node": "16.18.0",
|
|
31
31
|
"yarn": "1.19.1"
|
|
32
32
|
},
|
|
33
|
-
"gitHead": "
|
|
33
|
+
"gitHead": "253c09ebb08354e8c7fead371d64e97cdf0b204b"
|
|
34
34
|
}
|
package/src/hooks/index.ts
CHANGED
|
@@ -2,3 +2,4 @@ export { default as UIProvider, Toast as ToastProps, useUI } from './UIProvider'
|
|
|
2
2
|
export { useFadeEffect } from './useFadeEffect'
|
|
3
3
|
export { useTrapFocus } from './useTrapFocus'
|
|
4
4
|
export { useSearch } from './useSearch'
|
|
5
|
+
export { useScrollDirection } from './useScrollDirection'
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { useEffect, useState, useTransition } from 'react'
|
|
2
|
+
|
|
3
|
+
export const useScrollDirection = () => {
|
|
4
|
+
const [scrollDirection, setScrollDirection] = useState<string>('')
|
|
5
|
+
const [isPending, startTransition] = useTransition()
|
|
6
|
+
|
|
7
|
+
useEffect(() => {
|
|
8
|
+
let lastScrollY = window.scrollY
|
|
9
|
+
|
|
10
|
+
const updateScrollDirection = () => {
|
|
11
|
+
const { scrollY } = window
|
|
12
|
+
const direction = scrollY > lastScrollY ? 'down' : 'up'
|
|
13
|
+
|
|
14
|
+
if (
|
|
15
|
+
!isPending &&
|
|
16
|
+
direction !== scrollDirection &&
|
|
17
|
+
(scrollY - lastScrollY > 10 || scrollY - lastScrollY < -10)
|
|
18
|
+
) {
|
|
19
|
+
startTransition(() => setScrollDirection(direction))
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
lastScrollY = scrollY > 0 ? scrollY : 0
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
window.addEventListener('scroll', updateScrollDirection)
|
|
26
|
+
|
|
27
|
+
return () => window.removeEventListener('scroll', updateScrollDirection)
|
|
28
|
+
}, [isPending, scrollDirection])
|
|
29
|
+
|
|
30
|
+
return scrollDirection
|
|
31
|
+
}
|
package/src/hooks/useSearch.ts
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import { useContext } from 'react'
|
|
2
|
+
|
|
3
|
+
import { SearchContext } from '../molecules/SearchProvider/SearchProvider'
|
|
3
4
|
|
|
4
5
|
export const useSearch = () => {
|
|
5
|
-
|
|
6
|
+
const context = useContext(SearchContext)
|
|
6
7
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
if (!context) {
|
|
9
|
+
return { inContext: false as const }
|
|
10
|
+
}
|
|
10
11
|
|
|
11
|
-
|
|
12
|
-
}
|
|
12
|
+
return { inContext: true as const, values: context }
|
|
13
|
+
}
|
package/src/index.ts
CHANGED
|
@@ -95,6 +95,16 @@ export { default as LinkButton } from './molecules/LinkButton'
|
|
|
95
95
|
export type { LinkButtonProps } from './molecules/LinkButton'
|
|
96
96
|
export { default as Modal, ModalHeader, ModalBody } from './molecules/Modal'
|
|
97
97
|
export type { ModalProps, ModalHeaderProps } from './molecules/Modal'
|
|
98
|
+
export {
|
|
99
|
+
default as NavbarLinks,
|
|
100
|
+
NavbarLinksList,
|
|
101
|
+
NavbarLinksListItem,
|
|
102
|
+
} from './molecules/NavbarLinks'
|
|
103
|
+
export type {
|
|
104
|
+
NavbarLinksProps,
|
|
105
|
+
NavbarLinksListProps,
|
|
106
|
+
NavbarLinksListItemProps,
|
|
107
|
+
} from './molecules/NavbarLinks'
|
|
98
108
|
export { default as OrderSummary } from './molecules/OrderSummary'
|
|
99
109
|
export type { OrderSummaryProps } from './molecules/OrderSummary'
|
|
100
110
|
export {
|
|
@@ -236,6 +246,32 @@ export type {
|
|
|
236
246
|
ImageZoomProps,
|
|
237
247
|
} from './organisms/ImageGallery'
|
|
238
248
|
|
|
249
|
+
export {
|
|
250
|
+
default as Navbar,
|
|
251
|
+
NavbarHeader,
|
|
252
|
+
NavbarRow,
|
|
253
|
+
NavbarButtons,
|
|
254
|
+
} from './organisms/Navbar'
|
|
255
|
+
export type {
|
|
256
|
+
NavbarProps,
|
|
257
|
+
NavbarHeaderProps,
|
|
258
|
+
NavbarRowProps,
|
|
259
|
+
NavbarButtonsProps,
|
|
260
|
+
} from './organisms/Navbar'
|
|
261
|
+
|
|
262
|
+
export {
|
|
263
|
+
default as NavbarSlider,
|
|
264
|
+
NavbarSliderHeader,
|
|
265
|
+
NavbarSliderContent,
|
|
266
|
+
NavbarSliderFooter,
|
|
267
|
+
} from './organisms/NavbarSlider'
|
|
268
|
+
export type {
|
|
269
|
+
NavbarSliderProps,
|
|
270
|
+
NavbarSliderHeaderProps,
|
|
271
|
+
NavbarSliderContentProps,
|
|
272
|
+
NavbarSliderFooterProps,
|
|
273
|
+
} from './organisms/NavbarSlider'
|
|
274
|
+
|
|
239
275
|
export { default as OutOfStock } from './organisms/OutOfStock'
|
|
240
276
|
export type { OutOfStockProps } from './organisms/OutOfStock'
|
|
241
277
|
|
|
@@ -7,7 +7,7 @@ import type {
|
|
|
7
7
|
import React from 'react'
|
|
8
8
|
import { createPortal } from 'react-dom'
|
|
9
9
|
|
|
10
|
-
import { Overlay } from '../..'
|
|
10
|
+
import { Overlay, OverlayProps } from '../..'
|
|
11
11
|
import { useFadeEffect, useUI } from '../../hooks'
|
|
12
12
|
import type { ModalContentProps } from './ModalContent'
|
|
13
13
|
import ModalContent from './ModalContent'
|
|
@@ -38,6 +38,10 @@ export interface ModalProps extends Omit<ModalContentProps, 'children'> {
|
|
|
38
38
|
* Event emitted when the modal is closed
|
|
39
39
|
*/
|
|
40
40
|
onDismiss?: () => void
|
|
41
|
+
/**
|
|
42
|
+
* Props forwarded to the `Overlay` component
|
|
43
|
+
*/
|
|
44
|
+
overlayProps?: OverlayProps
|
|
41
45
|
/**
|
|
42
46
|
* Children or function as a children
|
|
43
47
|
*/
|
|
@@ -55,6 +59,7 @@ const Modal = ({
|
|
|
55
59
|
testId = 'fs-modal',
|
|
56
60
|
isOpen = true,
|
|
57
61
|
onDismiss,
|
|
62
|
+
overlayProps,
|
|
58
63
|
...otherProps
|
|
59
64
|
}: ModalProps) => {
|
|
60
65
|
const { closeModal } = useUI()
|
|
@@ -85,6 +90,7 @@ const Modal = ({
|
|
|
85
90
|
<Overlay
|
|
86
91
|
onClick={handleBackdropClick}
|
|
87
92
|
onKeyDown={handleBackdropKeyDown}
|
|
93
|
+
{...overlayProps}
|
|
88
94
|
>
|
|
89
95
|
<ModalContent
|
|
90
96
|
onTransitionEnd={() => fade === 'out' && closeModal()}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import React, { forwardRef } from 'react'
|
|
2
|
+
import type { HTMLAttributes } from 'react'
|
|
3
|
+
|
|
4
|
+
export interface NavbarLinksProps extends HTMLAttributes<HTMLDivElement> {
|
|
5
|
+
/**
|
|
6
|
+
* ID to find this component in testing tools (e.g.: Cypress, Testing Library, and Jest).
|
|
7
|
+
*/
|
|
8
|
+
testId?: string
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
const NavbarLinks = forwardRef<HTMLDivElement, NavbarLinksProps>(
|
|
12
|
+
function NavbarLinks(
|
|
13
|
+
{ children, testId = 'fs-navbar-links', ...otherProps },
|
|
14
|
+
ref
|
|
15
|
+
) {
|
|
16
|
+
return (
|
|
17
|
+
<nav data-fs-navbar-links ref={ref} data-testid={testId} {...otherProps}>
|
|
18
|
+
{children}
|
|
19
|
+
</nav>
|
|
20
|
+
)
|
|
21
|
+
}
|
|
22
|
+
)
|
|
23
|
+
|
|
24
|
+
export default NavbarLinks
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import React, { forwardRef } from 'react'
|
|
2
|
+
|
|
3
|
+
import { List } from '../..'
|
|
4
|
+
import type { ListProps } from '../..'
|
|
5
|
+
|
|
6
|
+
export interface NavbarLinksListProps extends ListProps {
|
|
7
|
+
/**
|
|
8
|
+
* ID to find this component in testing tools (e.g.: Cypress, Testing Library, and Jest).
|
|
9
|
+
*/
|
|
10
|
+
testId?: string
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
const NavbarLinksList = forwardRef<HTMLUListElement, NavbarLinksListProps>(
|
|
14
|
+
function NavbarLinksList(
|
|
15
|
+
{ children, testId = 'fs-navbar-links-list', ...otherProps },
|
|
16
|
+
ref
|
|
17
|
+
) {
|
|
18
|
+
return (
|
|
19
|
+
<List
|
|
20
|
+
data-fs-navbar-links-list
|
|
21
|
+
ref={ref}
|
|
22
|
+
data-testid={testId}
|
|
23
|
+
{...otherProps}
|
|
24
|
+
>
|
|
25
|
+
{children}
|
|
26
|
+
</List>
|
|
27
|
+
)
|
|
28
|
+
}
|
|
29
|
+
)
|
|
30
|
+
|
|
31
|
+
export default NavbarLinksList
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import React, { forwardRef } from 'react'
|
|
2
|
+
import type { HTMLAttributes } from 'react'
|
|
3
|
+
|
|
4
|
+
export interface NavbarLinksListItemProps
|
|
5
|
+
extends HTMLAttributes<HTMLLIElement> {
|
|
6
|
+
/**
|
|
7
|
+
* ID to find this component in testing tools (e.g.: Cypress, Testing Library, and Jest).
|
|
8
|
+
*/
|
|
9
|
+
testId?: string
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
const NavbarLinksListItem = forwardRef<HTMLLIElement, NavbarLinksListItemProps>(
|
|
13
|
+
function NavbarLinksListItem(
|
|
14
|
+
{ children, testId = 'fs-navbar-links-list-item', ...otherProps },
|
|
15
|
+
ref
|
|
16
|
+
) {
|
|
17
|
+
return (
|
|
18
|
+
<li
|
|
19
|
+
data-fs-navbar-links-list-item
|
|
20
|
+
ref={ref}
|
|
21
|
+
data-testid={testId}
|
|
22
|
+
{...otherProps}
|
|
23
|
+
>
|
|
24
|
+
{children}
|
|
25
|
+
</li>
|
|
26
|
+
)
|
|
27
|
+
}
|
|
28
|
+
)
|
|
29
|
+
|
|
30
|
+
export default NavbarLinksListItem
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export { default } from './NavbarLinks'
|
|
2
|
+
export type { NavbarLinksProps } from './NavbarLinks'
|
|
3
|
+
|
|
4
|
+
export { default as NavbarLinksList } from './NavbarLinksList'
|
|
5
|
+
export type { NavbarLinksListProps } from './NavbarLinksList'
|
|
6
|
+
|
|
7
|
+
export { default as NavbarLinksListItem } from './NavbarLinksListItem'
|
|
8
|
+
export type { NavbarLinksListItemProps } from './NavbarLinksListItem'
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
+
import type { HTMLAttributes, PropsWithChildren, ReactNode } from 'react'
|
|
1
2
|
import React from 'react'
|
|
2
|
-
import type { PropsWithChildren, ReactNode } from 'react'
|
|
3
3
|
|
|
4
4
|
import {
|
|
5
5
|
Alert,
|
|
6
6
|
Badge,
|
|
7
|
+
OverlayProps,
|
|
7
8
|
SlideOver,
|
|
8
9
|
SlideOverHeader,
|
|
9
10
|
useFadeEffect,
|
|
@@ -12,7 +13,7 @@ import {
|
|
|
12
13
|
|
|
13
14
|
import { SlideOverDirection, SlideOverWidthSize } from '../SlideOver'
|
|
14
15
|
|
|
15
|
-
export interface CartSidebarProps {
|
|
16
|
+
export interface CartSidebarProps extends HTMLAttributes<HTMLDivElement> {
|
|
16
17
|
/**
|
|
17
18
|
* ID to find this component in testing tools (e.g.: cypress,
|
|
18
19
|
* testing-library, and jest).
|
|
@@ -42,6 +43,10 @@ export interface CartSidebarProps {
|
|
|
42
43
|
* The content for Alert component.
|
|
43
44
|
*/
|
|
44
45
|
alertText?: string
|
|
46
|
+
/**
|
|
47
|
+
* Props forwarded to the `Overlay` component.
|
|
48
|
+
*/
|
|
49
|
+
overlayProps?: OverlayProps
|
|
45
50
|
/**
|
|
46
51
|
* Function called when Close Button is clicked.
|
|
47
52
|
*/
|
|
@@ -57,7 +62,9 @@ function CartSidebar({
|
|
|
57
62
|
children,
|
|
58
63
|
alertIcon,
|
|
59
64
|
alertText,
|
|
65
|
+
overlayProps,
|
|
60
66
|
onClose,
|
|
67
|
+
...otherProps
|
|
61
68
|
}: PropsWithChildren<CartSidebarProps>) {
|
|
62
69
|
const { fade, fadeOut } = useFadeEffect()
|
|
63
70
|
const { closeCart } = useUI()
|
|
@@ -72,6 +79,8 @@ function CartSidebar({
|
|
|
72
79
|
direction={direction}
|
|
73
80
|
onTransitionEnd={() => fade === 'out' && closeCart()}
|
|
74
81
|
testId={testId}
|
|
82
|
+
overlayProps={overlayProps}
|
|
83
|
+
{...otherProps}
|
|
75
84
|
>
|
|
76
85
|
<SlideOverHeader
|
|
77
86
|
closeBtnProps={{ testId: 'fs-cart-sidebar-button-close' }}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
import
|
|
1
|
+
import type { HTMLAttributes, PropsWithChildren } from 'react'
|
|
2
|
+
import React from 'react'
|
|
2
3
|
|
|
3
4
|
import {
|
|
4
5
|
Button,
|
|
5
6
|
ButtonProps,
|
|
7
|
+
OverlayProps,
|
|
6
8
|
SlideOver,
|
|
7
9
|
SlideOverHeader,
|
|
8
10
|
useFadeEffect,
|
|
@@ -11,7 +13,7 @@ import {
|
|
|
11
13
|
|
|
12
14
|
import { SlideOverDirection, SlideOverWidthSize } from '../SlideOver'
|
|
13
15
|
|
|
14
|
-
export interface FilterSliderProps {
|
|
16
|
+
export interface FilterSliderProps extends HTMLAttributes<HTMLDivElement> {
|
|
15
17
|
/**
|
|
16
18
|
* Title for the FilterSlider component.
|
|
17
19
|
*/
|
|
@@ -32,6 +34,10 @@ export interface FilterSliderProps {
|
|
|
32
34
|
* Props for the Clear Button from FilterSlider component.
|
|
33
35
|
*/
|
|
34
36
|
clearBtnProps?: Partial<ButtonProps>
|
|
37
|
+
/**
|
|
38
|
+
* Props forwarded to the `Overlay` component.
|
|
39
|
+
*/
|
|
40
|
+
overlayProps?: OverlayProps
|
|
35
41
|
/**
|
|
36
42
|
* Function called when Close Button is clicked.
|
|
37
43
|
*/
|
|
@@ -45,7 +51,9 @@ function FilterSlider({
|
|
|
45
51
|
children,
|
|
46
52
|
applyBtnProps,
|
|
47
53
|
clearBtnProps,
|
|
54
|
+
overlayProps,
|
|
48
55
|
onClose,
|
|
56
|
+
...otherProps
|
|
49
57
|
}: PropsWithChildren<FilterSliderProps>) {
|
|
50
58
|
const { fade, fadeOut } = useFadeEffect()
|
|
51
59
|
const { closeFilter } = useUI()
|
|
@@ -59,6 +67,8 @@ function FilterSlider({
|
|
|
59
67
|
size={size}
|
|
60
68
|
direction={direction}
|
|
61
69
|
onTransitionEnd={() => fade === 'out' && closeFilter()}
|
|
70
|
+
overlayProps={overlayProps}
|
|
71
|
+
{...otherProps}
|
|
62
72
|
>
|
|
63
73
|
<div data-fs-filter-slider-content>
|
|
64
74
|
<SlideOverHeader
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { HTMLAttributes } from 'react'
|
|
2
|
+
import React, { forwardRef } from 'react'
|
|
3
|
+
|
|
4
|
+
export interface NavbarProps extends HTMLAttributes<HTMLDivElement> {
|
|
5
|
+
/**
|
|
6
|
+
* ID to find this component in testing tools (e.g.: Cypress, Testing Library, and Jest).
|
|
7
|
+
*/
|
|
8
|
+
testId?: string
|
|
9
|
+
/**
|
|
10
|
+
* Specifies the scroll direction. This value can be achieved using the `useScrollDirection` hook.
|
|
11
|
+
*/
|
|
12
|
+
scrollDirection: string
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
const Navbar = forwardRef<HTMLDivElement, NavbarProps>(function Navbar(
|
|
16
|
+
{ children, scrollDirection, testId = 'fs-navbar', ...otherProps },
|
|
17
|
+
ref
|
|
18
|
+
) {
|
|
19
|
+
return (
|
|
20
|
+
<section
|
|
21
|
+
data-fs-navbar
|
|
22
|
+
ref={ref}
|
|
23
|
+
data-testid={testId}
|
|
24
|
+
data-fs-navbar-scroll={scrollDirection}
|
|
25
|
+
{...otherProps}
|
|
26
|
+
>
|
|
27
|
+
{children}
|
|
28
|
+
</section>
|
|
29
|
+
)
|
|
30
|
+
})
|
|
31
|
+
|
|
32
|
+
export default Navbar
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import React, { forwardRef } from 'react'
|
|
2
|
+
import type { HTMLAttributes } from 'react'
|
|
3
|
+
|
|
4
|
+
export interface NavbarButtonsProps extends HTMLAttributes<HTMLDivElement> {
|
|
5
|
+
/**
|
|
6
|
+
* ID to find this component in testing tools (e.g.: Cypress, Testing Library, and Jest).
|
|
7
|
+
*/
|
|
8
|
+
testId?: string
|
|
9
|
+
/**
|
|
10
|
+
* Specifies whether the Search Input is expanded or not.
|
|
11
|
+
*/
|
|
12
|
+
searchExpanded: boolean
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
const NavbarButtons = forwardRef<HTMLDivElement, NavbarButtonsProps>(
|
|
16
|
+
function NavbarButtons(
|
|
17
|
+
{ children, searchExpanded, testId = 'fs-navbar-buttons', ...otherProps },
|
|
18
|
+
ref
|
|
19
|
+
) {
|
|
20
|
+
return (
|
|
21
|
+
<div
|
|
22
|
+
data-fs-navbar-buttons
|
|
23
|
+
ref={ref}
|
|
24
|
+
data-testid={testId}
|
|
25
|
+
data-fs-navbar-search-expanded={searchExpanded}
|
|
26
|
+
{...otherProps}
|
|
27
|
+
>
|
|
28
|
+
{children}
|
|
29
|
+
</div>
|
|
30
|
+
)
|
|
31
|
+
}
|
|
32
|
+
)
|
|
33
|
+
|
|
34
|
+
export default NavbarButtons
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import React, { forwardRef } from 'react'
|
|
2
|
+
import type { HTMLAttributes } from 'react'
|
|
3
|
+
|
|
4
|
+
export interface NavbarHeaderProps extends HTMLAttributes<HTMLDivElement> {
|
|
5
|
+
/**
|
|
6
|
+
* ID to find this component in testing tools (e.g.: Cypress, Testing Library, and Jest).
|
|
7
|
+
*/
|
|
8
|
+
testId?: string
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
const NavbarHeader = forwardRef<HTMLDivElement, NavbarHeaderProps>(
|
|
12
|
+
function NavbarHeader(
|
|
13
|
+
{ children, testId = 'fs-navbar-header', ...otherProps },
|
|
14
|
+
ref
|
|
15
|
+
) {
|
|
16
|
+
return (
|
|
17
|
+
<section
|
|
18
|
+
data-fs-navbar-header
|
|
19
|
+
ref={ref}
|
|
20
|
+
data-testid={testId}
|
|
21
|
+
{...otherProps}
|
|
22
|
+
>
|
|
23
|
+
{children}
|
|
24
|
+
</section>
|
|
25
|
+
)
|
|
26
|
+
}
|
|
27
|
+
)
|
|
28
|
+
|
|
29
|
+
export default NavbarHeader
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import React, { forwardRef } from 'react'
|
|
2
|
+
import type { HTMLAttributes } from 'react'
|
|
3
|
+
|
|
4
|
+
export interface NavbarRowProps extends HTMLAttributes<HTMLDivElement> {
|
|
5
|
+
/**
|
|
6
|
+
* ID to find this component in testing tools (e.g.: Cypress, Testing Library, and Jest).
|
|
7
|
+
*/
|
|
8
|
+
testId?: string
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
const NavbarRow = forwardRef<HTMLDivElement, NavbarRowProps>(function NavbarRow(
|
|
12
|
+
{ children, testId = 'fs-navbar-row', ...otherProps },
|
|
13
|
+
ref
|
|
14
|
+
) {
|
|
15
|
+
return (
|
|
16
|
+
<div data-fs-navbar-row ref={ref} data-testid={testId} {...otherProps}>
|
|
17
|
+
{children}
|
|
18
|
+
</div>
|
|
19
|
+
)
|
|
20
|
+
})
|
|
21
|
+
|
|
22
|
+
export default NavbarRow
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export { default } from './Navbar'
|
|
2
|
+
export type { NavbarProps } from './Navbar'
|
|
3
|
+
|
|
4
|
+
export { default as NavbarHeader } from './NavbarHeader'
|
|
5
|
+
export type { NavbarHeaderProps } from './NavbarHeader'
|
|
6
|
+
|
|
7
|
+
export { default as NavbarRow } from './NavbarRow'
|
|
8
|
+
export type { NavbarRowProps } from './NavbarRow'
|
|
9
|
+
|
|
10
|
+
export { default as NavbarButtons } from './NavbarButtons'
|
|
11
|
+
export type { NavbarButtonsProps } from './NavbarButtons'
|