@faststore/components 2.0.89-alpha.0 → 2.0.90-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/index.d.ts +2 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/organisms/Filter/Filter.d.ts +26 -0
- package/dist/organisms/Filter/Filter.js +9 -0
- package/dist/organisms/Filter/Filter.js.map +1 -0
- package/dist/organisms/Filter/FilterFacetBoolean.d.ts +5 -0
- package/dist/organisms/Filter/FilterFacetBoolean.js +7 -0
- package/dist/organisms/Filter/FilterFacetBoolean.js.map +1 -0
- package/dist/organisms/Filter/FilterFacetBooleanItem.d.ts +38 -0
- package/dist/organisms/Filter/FilterFacetBooleanItem.js +12 -0
- package/dist/organisms/Filter/FilterFacetBooleanItem.js.map +1 -0
- package/dist/organisms/Filter/FilterFacetRange.d.ts +32 -0
- package/dist/organisms/Filter/FilterFacetRange.js +11 -0
- package/dist/organisms/Filter/FilterFacetRange.js.map +1 -0
- package/dist/organisms/Filter/FilterFacets.d.ts +21 -0
- package/dist/organisms/Filter/FilterFacets.js +9 -0
- package/dist/organisms/Filter/FilterFacets.js.map +1 -0
- package/dist/organisms/Filter/FilterSlider.d.ts +31 -0
- package/dist/organisms/Filter/FilterSlider.js +22 -0
- package/dist/organisms/Filter/FilterSlider.js.map +1 -0
- package/dist/organisms/Filter/index.d.ts +11 -0
- package/dist/organisms/Filter/index.js +7 -0
- package/dist/organisms/Filter/index.js.map +1 -0
- package/dist/organisms/SlideOver/SlideOver.d.ts +2 -2
- package/dist/organisms/SlideOver/SlideOver.js.map +1 -1
- package/dist/organisms/SlideOver/index.d.ts +1 -1
- package/dist/organisms/SlideOver/index.js.map +1 -1
- package/package.json +2 -2
- package/src/index.ts +16 -0
- package/src/organisms/Filter/Filter.tsx +50 -0
- package/src/organisms/Filter/FilterFacetBoolean.tsx +8 -0
- package/src/organisms/Filter/FilterFacetBooleanItem.tsx +72 -0
- package/src/organisms/Filter/FilterFacetRange.tsx +58 -0
- package/src/organisms/Filter/FilterFacets.tsx +47 -0
- package/src/organisms/Filter/FilterSlider.tsx +90 -0
- package/src/organisms/Filter/index.ts +12 -0
- package/src/organisms/SlideOver/SlideOver.tsx +4 -4
- package/src/organisms/SlideOver/index.ts +3 -2
package/dist/index.d.ts
CHANGED
|
@@ -94,6 +94,8 @@ export { default as ToggleField } from './molecules/ToggleField';
|
|
|
94
94
|
export type { ToggleFieldProps } from './molecules/ToggleField';
|
|
95
95
|
export { default as QuantitySelector } from './molecules/QuantitySelector';
|
|
96
96
|
export type { QuantitySelectorProps } from './molecules/QuantitySelector';
|
|
97
|
+
export { default as Filter, FilterFacetBoolean, FilterFacetBooleanItem, FilterFacetRange, FilterFacets, FilterSlider } from './organisms/Filter';
|
|
98
|
+
export type { FilterFacetBooleanItemProps, FilterFacetRangeProps, FilterFacetsProps, FilterProps, FilterSliderProps } from './organisms/Filter';
|
|
97
99
|
export { default as Hero, HeroImage, HeroHeader } from './organisms/Hero';
|
|
98
100
|
export type { HeroProps, HeroImageProps, HeroHeaderProps, } from './organisms/Hero';
|
|
99
101
|
export { default as OutOfStock } from './organisms/OutOfStock';
|
package/dist/index.js
CHANGED
|
@@ -54,6 +54,7 @@ export { default as Toggle } from './molecules/Toggle';
|
|
|
54
54
|
export { default as ToggleField } from './molecules/ToggleField';
|
|
55
55
|
export { default as QuantitySelector } from './molecules/QuantitySelector';
|
|
56
56
|
// Organisms
|
|
57
|
+
export { default as Filter, FilterFacetBoolean, FilterFacetBooleanItem, FilterFacetRange, FilterFacets, FilterSlider } from './organisms/Filter';
|
|
57
58
|
export { default as Hero, HeroImage, HeroHeader } from './organisms/Hero';
|
|
58
59
|
export { default as OutOfStock } from './organisms/OutOfStock';
|
|
59
60
|
export { default as PaymentMethods } from './organisms/PaymentMethods';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { PropsWithChildren } from 'react';
|
|
2
|
+
export type OnFacetChange = (item: {
|
|
3
|
+
key: string;
|
|
4
|
+
value: string;
|
|
5
|
+
}, type: 'BOOLEAN' | 'RANGE') => void;
|
|
6
|
+
export interface FilterProps {
|
|
7
|
+
/**
|
|
8
|
+
* ID to find this component in testing tools (e.g.: cypress,
|
|
9
|
+
* testing-library, and jest).
|
|
10
|
+
*/
|
|
11
|
+
testId: string;
|
|
12
|
+
/**
|
|
13
|
+
* Title for the `Filter` component.
|
|
14
|
+
*/
|
|
15
|
+
title?: string;
|
|
16
|
+
/**
|
|
17
|
+
* The expanded items from the `Accordion`.
|
|
18
|
+
*/
|
|
19
|
+
indicesExpanded: Set<number>;
|
|
20
|
+
/**
|
|
21
|
+
* This function is called when `Accordion` is expanded or collapsed.
|
|
22
|
+
*/
|
|
23
|
+
onAccordionChange: (index: number) => void;
|
|
24
|
+
}
|
|
25
|
+
declare function Filter({ testId, title, indicesExpanded, onAccordionChange, children, }: PropsWithChildren<FilterProps>): JSX.Element;
|
|
26
|
+
export default Filter;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Accordion } from '../../';
|
|
3
|
+
function Filter({ testId, title, indicesExpanded, onAccordionChange, children, }) {
|
|
4
|
+
return (React.createElement("div", { "data-fs-filter": true, "data-testid": testId },
|
|
5
|
+
React.createElement("h2", { "data-fs-filter-title": true }, title),
|
|
6
|
+
React.createElement(Accordion, { indices: indicesExpanded, onChange: onAccordionChange, "data-fs-filter-accordion": true }, children)));
|
|
7
|
+
}
|
|
8
|
+
export default Filter;
|
|
9
|
+
//# sourceMappingURL=Filter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Filter.js","sourceRoot":"","sources":["../../../src/organisms/Filter/Filter.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4B,MAAM,OAAO,CAAA;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AA2BlC,SAAS,MAAM,CAAC,EACd,MAAM,EACN,KAAK,EACL,eAAe,EACf,iBAAiB,EACjB,QAAQ,GACuB;IAC/B,OAAO,CACL,oEAAiC,MAAM;QACrC,4DAA0B,KAAK,CAAM;QACrC,oBAAC,SAAS,IACR,OAAO,EAAE,eAAe,EACxB,QAAQ,EAAE,iBAAiB,sCAG1B,QAAQ,CACC,CACR,CACP,CAAA;AACH,CAAC;AAED,eAAe,MAAM,CAAA"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { List } from '../../';
|
|
3
|
+
function FilterFacetBoolean({ children }) {
|
|
4
|
+
return React.createElement(List, { "data-fs-filter-list": true }, children);
|
|
5
|
+
}
|
|
6
|
+
export default FilterFacetBoolean;
|
|
7
|
+
//# sourceMappingURL=FilterFacetBoolean.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FilterFacetBoolean.js","sourceRoot":"","sources":["../../../src/organisms/Filter/FilterFacetBoolean.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoB,MAAM,OAAO,CAAA;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAE7B,SAAS,kBAAkB,CAAC,EAAE,QAAQ,EAA2B;IAC/D,OAAO,oBAAC,IAAI,mCAAsB,QAAQ,CAAQ,CAAA;AACpD,CAAC;AAED,eAAe,kBAAkB,CAAA"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { OnFacetChange } from './Filter';
|
|
3
|
+
export interface FilterFacetBooleanItemProps {
|
|
4
|
+
/**
|
|
5
|
+
* ID to find this component in testing tools (e.g.: cypress, testing library, and jest).
|
|
6
|
+
*/
|
|
7
|
+
testId: string;
|
|
8
|
+
/**
|
|
9
|
+
* The text displayed to identify the Boolean Facet Item.
|
|
10
|
+
*/
|
|
11
|
+
label: string;
|
|
12
|
+
/**
|
|
13
|
+
* Value to be emitted when Checkbox is clicked.
|
|
14
|
+
*/
|
|
15
|
+
value: string;
|
|
16
|
+
/**
|
|
17
|
+
* Boolean that represents the Checkbox checked state.
|
|
18
|
+
*/
|
|
19
|
+
selected: boolean;
|
|
20
|
+
/**
|
|
21
|
+
* Counter badge shown besides the Facet Item.
|
|
22
|
+
*/
|
|
23
|
+
quantity: number;
|
|
24
|
+
/**
|
|
25
|
+
* ID to identify the Checkbox and corresponding label.
|
|
26
|
+
*/
|
|
27
|
+
id: string;
|
|
28
|
+
/**
|
|
29
|
+
* String that identifies the current Facet key.
|
|
30
|
+
*/
|
|
31
|
+
facetKey: string;
|
|
32
|
+
/**
|
|
33
|
+
* This function is called when `Checkbox` from the facet changes.
|
|
34
|
+
*/
|
|
35
|
+
onFacetChange: OnFacetChange;
|
|
36
|
+
}
|
|
37
|
+
declare function FilterFacetBooleanItem({ testId, id, selected, value, quantity, facetKey, label, onFacetChange, }: FilterFacetBooleanItemProps): JSX.Element;
|
|
38
|
+
export default FilterFacetBooleanItem;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Badge, Checkbox, Label } from '../..';
|
|
3
|
+
function FilterFacetBooleanItem({ testId, id, selected, value, quantity, facetKey, label, onFacetChange, }) {
|
|
4
|
+
return (React.createElement("li", { key: id, "data-fs-filter-list-item": true },
|
|
5
|
+
React.createElement(Checkbox, { id: id, checked: selected, onChange: () => onFacetChange({ key: facetKey, value }, 'BOOLEAN'), "data-fs-filter-list-item-checkbox": true, "data-testid": `${testId}-accordion-panel-checkbox`, "data-value": value, "data-quantity": quantity }),
|
|
6
|
+
React.createElement(Label, { htmlFor: id, className: "text__title-mini-alt", "data-fs-filter-list-item-label": true },
|
|
7
|
+
label,
|
|
8
|
+
" ",
|
|
9
|
+
React.createElement(Badge, { "data-fs-filter-list-item-badge": true }, quantity))));
|
|
10
|
+
}
|
|
11
|
+
export default FilterFacetBooleanItem;
|
|
12
|
+
//# sourceMappingURL=FilterFacetBooleanItem.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FilterFacetBooleanItem.js","sourceRoot":"","sources":["../../../src/organisms/Filter/FilterFacetBooleanItem.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,OAAO,CAAA;AAsC9C,SAAS,sBAAsB,CAAC,EAC9B,MAAM,EACN,EAAE,EACF,QAAQ,EACR,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,KAAK,EACL,aAAa,GACe;IAC5B,OAAO,CACL,4BAAI,GAAG,EAAE,EAAE;QACT,oBAAC,QAAQ,IACP,EAAE,EAAE,EAAE,EACN,OAAO,EAAE,QAAQ,EACjB,QAAQ,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,SAAS,CAAC,4DAErD,GAAG,MAAM,2BAA2B,gBACrC,KAAK,mBACF,QAAQ,GACvB;QACF,oBAAC,KAAK,IACJ,OAAO,EAAE,EAAE,EACX,SAAS,EAAC,sBAAsB;YAG/B,KAAK;;YAAE,oBAAC,KAAK,8CAAiC,QAAQ,CAAS,CAC1D,CACL,CACN,CAAA;AACH,CAAC;AAED,eAAe,sBAAsB,CAAA"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { OnFacetChange } from './Filter';
|
|
3
|
+
export interface FilterFacetRangeProps {
|
|
4
|
+
/**
|
|
5
|
+
* The minimum value of the Slider Range Facet
|
|
6
|
+
*/
|
|
7
|
+
min: {
|
|
8
|
+
selected: number;
|
|
9
|
+
absolute: number;
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* The maximum value of the Slider Range Facet
|
|
13
|
+
*/
|
|
14
|
+
max: {
|
|
15
|
+
selected: number;
|
|
16
|
+
absolute: number;
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* String that identifies the current Facet key.
|
|
20
|
+
*/
|
|
21
|
+
facetKey: string;
|
|
22
|
+
/**
|
|
23
|
+
* Formatter function that transforms the raw price value and render the result.
|
|
24
|
+
*/
|
|
25
|
+
formatter: (price: number) => string;
|
|
26
|
+
/**
|
|
27
|
+
* This function is called when `Checkbox` from the facet changes.
|
|
28
|
+
*/
|
|
29
|
+
onFacetChange: OnFacetChange;
|
|
30
|
+
}
|
|
31
|
+
declare function FilterFacetRange({ min, max, formatter, facetKey, onFacetChange, }: FilterFacetRangeProps): JSX.Element;
|
|
32
|
+
export default FilterFacetRange;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { PriceRange } from '../..';
|
|
3
|
+
const formatRange = (min, max) => `${min.toFixed(2)}-to-${max.toFixed(2)}`;
|
|
4
|
+
function FilterFacetRange({ min, max, formatter, facetKey, onFacetChange, }) {
|
|
5
|
+
return (React.createElement(PriceRange, { "data-fs-filter-facet-range": true, min: min, max: max, formatter: formatter, step: 1, onEnd: (v) => onFacetChange({
|
|
6
|
+
key: facetKey,
|
|
7
|
+
value: formatRange(v.min, v.max),
|
|
8
|
+
}, 'RANGE') }));
|
|
9
|
+
}
|
|
10
|
+
export default FilterFacetRange;
|
|
11
|
+
//# sourceMappingURL=FilterFacetRange.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FilterFacetRange.js","sourceRoot":"","sources":["../../../src/organisms/Filter/FilterFacetRange.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AA0BlC,MAAM,WAAW,GAAG,CAAC,GAAW,EAAE,GAAW,EAAE,EAAE,CAC/C,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAA;AAE1C,SAAS,gBAAgB,CAAC,EACxB,GAAG,EACH,GAAG,EACH,SAAS,EACT,QAAQ,EACR,aAAa,GACS;IACtB,OAAO,CACL,oBAAC,UAAU,wCAET,GAAG,EAAE,GAAG,EACR,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,SAAS,EACpB,IAAI,EAAE,CAAC,EACP,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CACX,aAAa,CACX;YACE,GAAG,EAAE,QAAQ;YACb,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC;SACjC,EACD,OAAO,CACR,GAEH,CACH,CAAA;AACH,CAAC;AAED,eAAe,gBAAgB,CAAA"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { PropsWithChildren } from 'react';
|
|
2
|
+
export interface FilterFacetsProps {
|
|
3
|
+
/**
|
|
4
|
+
* ID to find this component in testing tools (e.g.: cypress, testing library, and jest).
|
|
5
|
+
*/
|
|
6
|
+
testId: string;
|
|
7
|
+
/**
|
|
8
|
+
* Current Facet's position in a list of facets.
|
|
9
|
+
*/
|
|
10
|
+
index: number;
|
|
11
|
+
/**
|
|
12
|
+
* Current Facet's type, usually `StoreFacetBoolean` or `StoreFacetRange`.
|
|
13
|
+
*/
|
|
14
|
+
type: string;
|
|
15
|
+
/**
|
|
16
|
+
* The text displayed to identify the Facet.
|
|
17
|
+
*/
|
|
18
|
+
label: string;
|
|
19
|
+
}
|
|
20
|
+
declare function FilterFacets({ testId, label, index, children, type, }: PropsWithChildren<FilterFacetsProps>): JSX.Element;
|
|
21
|
+
export default FilterFacets;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { AccordionButton, AccordionItem, AccordionPanel } from '../..';
|
|
3
|
+
function FilterFacets({ testId, label, index, children, type, }) {
|
|
4
|
+
return (React.createElement(AccordionItem, { key: `${label}-${index}`, prefixId: testId, testId: `${testId}-accordion`, index: index, "data-type": type, "data-fs-filter-accordion-item": true },
|
|
5
|
+
React.createElement(AccordionButton, { testId: `${testId}-accordion-button` }, label),
|
|
6
|
+
React.createElement(AccordionPanel, null, children)));
|
|
7
|
+
}
|
|
8
|
+
export default FilterFacets;
|
|
9
|
+
//# sourceMappingURL=FilterFacets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FilterFacets.js","sourceRoot":"","sources":["../../../src/organisms/Filter/FilterFacets.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4B,MAAM,OAAO,CAAA;AAChD,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,OAAO,CAAA;AAqBtE,SAAS,YAAY,CAAC,EACpB,MAAM,EACN,KAAK,EACL,KAAK,EACL,QAAQ,EACR,IAAI,GACiC;IACrC,OAAO,CACL,oBAAC,aAAa,IACZ,GAAG,EAAE,GAAG,KAAK,IAAI,KAAK,EAAE,EACxB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,GAAG,MAAM,YAAY,EAC7B,KAAK,EAAE,KAAK,eACD,IAAI;QAGf,oBAAC,eAAe,IAAC,MAAM,EAAE,GAAG,MAAM,mBAAmB,IAClD,KAAK,CACU;QAClB,oBAAC,cAAc,QAAE,QAAQ,CAAkB,CAC7B,CACjB,CAAA;AACH,CAAC;AAED,eAAe,YAAY,CAAA"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { PropsWithChildren } from 'react';
|
|
2
|
+
import { ButtonProps } from '../../';
|
|
3
|
+
import { SlideOverDirection, SlideOverWidthSize } from '../SlideOver';
|
|
4
|
+
export interface FilterSliderProps {
|
|
5
|
+
/**
|
|
6
|
+
* Title for the FilterSlider component.
|
|
7
|
+
*/
|
|
8
|
+
title?: string;
|
|
9
|
+
/**
|
|
10
|
+
* Props for the Clear Button from FilterSlider component.
|
|
11
|
+
*/
|
|
12
|
+
clearBtnProps?: Partial<ButtonProps>;
|
|
13
|
+
/**
|
|
14
|
+
* Props for the Apply Button from FilterSlider component.
|
|
15
|
+
*/
|
|
16
|
+
applyBtnProps?: Partial<ButtonProps>;
|
|
17
|
+
/**
|
|
18
|
+
* Function called when close button is clicked.
|
|
19
|
+
*/
|
|
20
|
+
onClose: () => void;
|
|
21
|
+
/**
|
|
22
|
+
* Represents the side that the FilterSlider comes from.
|
|
23
|
+
*/
|
|
24
|
+
direction: SlideOverDirection;
|
|
25
|
+
/**
|
|
26
|
+
* Represents the size of the FilterSlider.
|
|
27
|
+
*/
|
|
28
|
+
size: SlideOverWidthSize;
|
|
29
|
+
}
|
|
30
|
+
declare function FilterSlider({ title, clearBtnProps, applyBtnProps, onClose, size, direction, children, }: PropsWithChildren<FilterSliderProps>): JSX.Element;
|
|
31
|
+
export default FilterSlider;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Button, SlideOver, SlideOverHeader, useFadeEffect, useUI, } from '../../';
|
|
3
|
+
function FilterSlider({ title, clearBtnProps, applyBtnProps, onClose, size, direction, children, }) {
|
|
4
|
+
const { closeFilter } = useUI();
|
|
5
|
+
const { fade, fadeOut } = useFadeEffect();
|
|
6
|
+
return (React.createElement(SlideOver, { "data-fs-filter-slider": true, isOpen: true, fade: fade, onDismiss: fadeOut, size: size, direction: direction, onTransitionEnd: () => fade === 'out' && closeFilter() },
|
|
7
|
+
React.createElement("div", { "data-fs-filter-slider-content": true },
|
|
8
|
+
React.createElement(SlideOverHeader, { onClose: () => {
|
|
9
|
+
onClose();
|
|
10
|
+
fadeOut();
|
|
11
|
+
} },
|
|
12
|
+
React.createElement("h2", { "data-fs-filter-slider-title": true }, title)),
|
|
13
|
+
children),
|
|
14
|
+
React.createElement("footer", { "data-fs-filter-slider-footer": true },
|
|
15
|
+
React.createElement(Button, { "data-fs-filter-slider-footer-button-clear": true, ...clearBtnProps }),
|
|
16
|
+
React.createElement(Button, { "data-fs-filter-slider-footer-button-apply": true, "data-testid": "filter-slider-button-apply", ...applyBtnProps, onClick: (e) => {
|
|
17
|
+
applyBtnProps?.onClick?.(e);
|
|
18
|
+
fadeOut();
|
|
19
|
+
} }))));
|
|
20
|
+
}
|
|
21
|
+
export default FilterSlider;
|
|
22
|
+
//# sourceMappingURL=FilterSlider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FilterSlider.js","sourceRoot":"","sources":["../../../src/organisms/Filter/FilterSlider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4B,MAAM,OAAO,CAAA;AAEhD,OAAO,EACL,MAAM,EAEN,SAAS,EACT,eAAe,EACf,aAAa,EACb,KAAK,GACN,MAAM,QAAQ,CAAA;AA+Bf,SAAS,YAAY,CAAC,EACpB,KAAK,EACL,aAAa,EACb,aAAa,EACb,OAAO,EACP,IAAI,EACJ,SAAS,EACT,QAAQ,GAC6B;IACrC,MAAM,EAAE,WAAW,EAAE,GAAG,KAAK,EAAE,CAAA;IAC/B,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,aAAa,EAAE,CAAA;IAEzC,OAAO,CACL,oBAAC,SAAS,mCAER,MAAM,QACN,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,OAAO,EAClB,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,SAAS,EACpB,eAAe,EAAE,GAAG,EAAE,CAAC,IAAI,KAAK,KAAK,IAAI,WAAW,EAAE;QAEtD;YACE,oBAAC,eAAe,IACd,OAAO,EAAE,GAAG,EAAE;oBACZ,OAAO,EAAE,CAAA;oBACT,OAAO,EAAE,CAAA;gBACX,CAAC;gBAED,mEAAiC,KAAK,CAAM,CAC5B;YACjB,QAAQ,CACL;QACN;YACE,oBAAC,MAAM,0DAA+C,aAAa,GAAI;YACvE,oBAAC,MAAM,sEAEO,4BAA4B,KACpC,aAAa,EACjB,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;oBACb,aAAa,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAA;oBAC3B,OAAO,EAAE,CAAA;gBACX,CAAC,GACD,CACK,CACC,CACb,CAAA;AACH,CAAC;AAED,eAAe,YAAY,CAAA"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export { default } from './Filter';
|
|
2
|
+
export type { FilterProps } from './Filter';
|
|
3
|
+
export { default as FilterFacetBoolean } from './FilterFacetBoolean';
|
|
4
|
+
export { default as FilterFacetBooleanItem } from './FilterFacetBooleanItem';
|
|
5
|
+
export type { FilterFacetBooleanItemProps } from './FilterFacetBooleanItem';
|
|
6
|
+
export { default as FilterFacetRange } from './FilterFacetRange';
|
|
7
|
+
export type { FilterFacetRangeProps } from './FilterFacetRange';
|
|
8
|
+
export { default as FilterFacets } from './FilterFacets';
|
|
9
|
+
export type { FilterFacetsProps } from './FilterFacets';
|
|
10
|
+
export { default as FilterSlider } from './FilterSlider';
|
|
11
|
+
export type { FilterSliderProps } from './FilterSlider';
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { default } from './Filter';
|
|
2
|
+
export { default as FilterFacetBoolean } from './FilterFacetBoolean';
|
|
3
|
+
export { default as FilterFacetBooleanItem } from './FilterFacetBooleanItem';
|
|
4
|
+
export { default as FilterFacetRange } from './FilterFacetRange';
|
|
5
|
+
export { default as FilterFacets } from './FilterFacets';
|
|
6
|
+
export { default as FilterSlider } from './FilterSlider';
|
|
7
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/organisms/Filter/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAElC,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACpE,OAAO,EAAE,OAAO,IAAI,sBAAsB,EAAE,MAAM,0BAA0B,CAAA;AAE5E,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAEhE,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAExD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAA"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { ReactNode } from 'react';
|
|
2
2
|
import type { ModalProps } from '../../';
|
|
3
|
-
type Direction = 'leftSide' | 'rightSide';
|
|
4
|
-
type WidthSize = 'full' | 'partial';
|
|
3
|
+
export type Direction = 'leftSide' | 'rightSide';
|
|
4
|
+
export type WidthSize = 'full' | 'partial';
|
|
5
5
|
export type SlideOverProps = Omit<ModalProps, 'title'> & {
|
|
6
6
|
/**
|
|
7
7
|
* ID to find this component in testing tools (e.g.: cypress, testing library, and jest).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SlideOver.js","sourceRoot":"","sources":["../../../src/organisms/SlideOver/SlideOver.tsx"],"names":[],"mappings":"
|
|
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;AAkC9B,SAAS,SAAS,CAAC,EACjB,MAAM,EACN,SAAS,GAAG,UAAU,EACtB,IAAI,GAAG,MAAM,EACb,IAAI,GAAG,KAAK,EACZ,QAAQ,EACR,SAAS,EACT,MAAM,GAAG,eAAe,EACxB,GAAG,UAAU,EACE;IACf,OAAO,CACL,oBAAC,KAAK,qBACW,IAAI,8DAEW,SAAS,6BACd,IAAI,8BACH,IAAI,EAC9B,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,SAAS,KAChB,UAAU,IAEb,QAAQ,CACH,CACT,CAAA;AACH,CAAC;AAED,eAAe,SAAS,CAAA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { default } from './SlideOver';
|
|
1
|
+
export { default, Direction as SlideOverDirection, WidthSize as SlideOverWidthSize } from './SlideOver';
|
|
2
2
|
export type { SlideOverProps } from './SlideOver';
|
|
3
3
|
export { default as SlideOverHeader } from './SlideOverHeader';
|
|
4
4
|
export type { SlideOverHeaderProps } from './SlideOverHeader';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/organisms/SlideOver/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/organisms/SlideOver/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAoE,MAAM,aAAa,CAAA;AAEvG,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,mBAAmB,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@faststore/components",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.90-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": "8382d02bffb1fcf8c517df11221b228ecb1a38bd"
|
|
34
34
|
}
|
package/src/index.ts
CHANGED
|
@@ -192,6 +192,22 @@ export { default as QuantitySelector } from './molecules/QuantitySelector'
|
|
|
192
192
|
export type { QuantitySelectorProps } from './molecules/QuantitySelector'
|
|
193
193
|
|
|
194
194
|
// Organisms
|
|
195
|
+
export {
|
|
196
|
+
default as Filter,
|
|
197
|
+
FilterFacetBoolean,
|
|
198
|
+
FilterFacetBooleanItem,
|
|
199
|
+
FilterFacetRange,
|
|
200
|
+
FilterFacets,
|
|
201
|
+
FilterSlider
|
|
202
|
+
} from './organisms/Filter'
|
|
203
|
+
export type {
|
|
204
|
+
FilterFacetBooleanItemProps,
|
|
205
|
+
FilterFacetRangeProps,
|
|
206
|
+
FilterFacetsProps,
|
|
207
|
+
FilterProps,
|
|
208
|
+
FilterSliderProps
|
|
209
|
+
} from './organisms/Filter'
|
|
210
|
+
|
|
195
211
|
export { default as Hero, HeroImage, HeroHeader } from './organisms/Hero'
|
|
196
212
|
export type {
|
|
197
213
|
HeroProps,
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import React, { PropsWithChildren } from 'react'
|
|
2
|
+
import { Accordion } from '../../'
|
|
3
|
+
|
|
4
|
+
export type OnFacetChange = (
|
|
5
|
+
item: { key: string; value: string },
|
|
6
|
+
type: 'BOOLEAN' | 'RANGE'
|
|
7
|
+
) => void
|
|
8
|
+
|
|
9
|
+
export interface FilterProps {
|
|
10
|
+
/**
|
|
11
|
+
* ID to find this component in testing tools (e.g.: cypress,
|
|
12
|
+
* testing-library, and jest).
|
|
13
|
+
*/
|
|
14
|
+
testId: string
|
|
15
|
+
/**
|
|
16
|
+
* Title for the `Filter` component.
|
|
17
|
+
*/
|
|
18
|
+
title?: string
|
|
19
|
+
/**
|
|
20
|
+
* The expanded items from the `Accordion`.
|
|
21
|
+
*/
|
|
22
|
+
indicesExpanded: Set<number>
|
|
23
|
+
/**
|
|
24
|
+
* This function is called when `Accordion` is expanded or collapsed.
|
|
25
|
+
*/
|
|
26
|
+
onAccordionChange: (index: number) => void
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
function Filter({
|
|
30
|
+
testId,
|
|
31
|
+
title,
|
|
32
|
+
indicesExpanded,
|
|
33
|
+
onAccordionChange,
|
|
34
|
+
children,
|
|
35
|
+
}: PropsWithChildren<FilterProps>) {
|
|
36
|
+
return (
|
|
37
|
+
<div data-fs-filter data-testid={testId}>
|
|
38
|
+
<h2 data-fs-filter-title>{title}</h2>
|
|
39
|
+
<Accordion
|
|
40
|
+
indices={indicesExpanded}
|
|
41
|
+
onChange={onAccordionChange}
|
|
42
|
+
data-fs-filter-accordion
|
|
43
|
+
>
|
|
44
|
+
{children}
|
|
45
|
+
</Accordion>
|
|
46
|
+
</div>
|
|
47
|
+
)
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
export default Filter
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import React from 'react'
|
|
2
|
+
import { Badge, Checkbox, Label } from '../..'
|
|
3
|
+
import { OnFacetChange } from './Filter'
|
|
4
|
+
|
|
5
|
+
export interface FilterFacetBooleanItemProps {
|
|
6
|
+
/**
|
|
7
|
+
* ID to find this component in testing tools (e.g.: cypress, testing library, and jest).
|
|
8
|
+
*/
|
|
9
|
+
testId: string
|
|
10
|
+
/**
|
|
11
|
+
* The text displayed to identify the Boolean Facet Item.
|
|
12
|
+
*/
|
|
13
|
+
label: string
|
|
14
|
+
/**
|
|
15
|
+
* Value to be emitted when Checkbox is clicked.
|
|
16
|
+
*/
|
|
17
|
+
value: string
|
|
18
|
+
/**
|
|
19
|
+
* Boolean that represents the Checkbox checked state.
|
|
20
|
+
*/
|
|
21
|
+
selected: boolean
|
|
22
|
+
/**
|
|
23
|
+
* Counter badge shown besides the Facet Item.
|
|
24
|
+
*/
|
|
25
|
+
quantity: number
|
|
26
|
+
/**
|
|
27
|
+
* ID to identify the Checkbox and corresponding label.
|
|
28
|
+
*/
|
|
29
|
+
id: string
|
|
30
|
+
/**
|
|
31
|
+
* String that identifies the current Facet key.
|
|
32
|
+
*/
|
|
33
|
+
facetKey: string
|
|
34
|
+
/**
|
|
35
|
+
* This function is called when `Checkbox` from the facet changes.
|
|
36
|
+
*/
|
|
37
|
+
onFacetChange: OnFacetChange
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
function FilterFacetBooleanItem({
|
|
41
|
+
testId,
|
|
42
|
+
id,
|
|
43
|
+
selected,
|
|
44
|
+
value,
|
|
45
|
+
quantity,
|
|
46
|
+
facetKey,
|
|
47
|
+
label,
|
|
48
|
+
onFacetChange,
|
|
49
|
+
}: FilterFacetBooleanItemProps) {
|
|
50
|
+
return (
|
|
51
|
+
<li key={id} data-fs-filter-list-item>
|
|
52
|
+
<Checkbox
|
|
53
|
+
id={id}
|
|
54
|
+
checked={selected}
|
|
55
|
+
onChange={() => onFacetChange({ key: facetKey, value }, 'BOOLEAN')}
|
|
56
|
+
data-fs-filter-list-item-checkbox
|
|
57
|
+
data-testid={`${testId}-accordion-panel-checkbox`}
|
|
58
|
+
data-value={value}
|
|
59
|
+
data-quantity={quantity}
|
|
60
|
+
/>
|
|
61
|
+
<Label
|
|
62
|
+
htmlFor={id}
|
|
63
|
+
className="text__title-mini-alt"
|
|
64
|
+
data-fs-filter-list-item-label
|
|
65
|
+
>
|
|
66
|
+
{label} <Badge data-fs-filter-list-item-badge>{quantity}</Badge>
|
|
67
|
+
</Label>
|
|
68
|
+
</li>
|
|
69
|
+
)
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
export default FilterFacetBooleanItem
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import React from 'react'
|
|
2
|
+
import { PriceRange } from '../..'
|
|
3
|
+
import { OnFacetChange } from './Filter'
|
|
4
|
+
|
|
5
|
+
export interface FilterFacetRangeProps {
|
|
6
|
+
/**
|
|
7
|
+
* The minimum value of the Slider Range Facet
|
|
8
|
+
*/
|
|
9
|
+
min: { selected: number; absolute: number }
|
|
10
|
+
/**
|
|
11
|
+
* The maximum value of the Slider Range Facet
|
|
12
|
+
*/
|
|
13
|
+
max: { selected: number; absolute: number }
|
|
14
|
+
/**
|
|
15
|
+
* String that identifies the current Facet key.
|
|
16
|
+
*/
|
|
17
|
+
facetKey: string
|
|
18
|
+
/**
|
|
19
|
+
* Formatter function that transforms the raw price value and render the result.
|
|
20
|
+
*/
|
|
21
|
+
formatter: (price: number) => string
|
|
22
|
+
/**
|
|
23
|
+
* This function is called when `Checkbox` from the facet changes.
|
|
24
|
+
*/
|
|
25
|
+
onFacetChange: OnFacetChange
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
const formatRange = (min: number, max: number) =>
|
|
29
|
+
`${min.toFixed(2)}-to-${max.toFixed(2)}`
|
|
30
|
+
|
|
31
|
+
function FilterFacetRange({
|
|
32
|
+
min,
|
|
33
|
+
max,
|
|
34
|
+
formatter,
|
|
35
|
+
facetKey,
|
|
36
|
+
onFacetChange,
|
|
37
|
+
}: FilterFacetRangeProps) {
|
|
38
|
+
return (
|
|
39
|
+
<PriceRange
|
|
40
|
+
data-fs-filter-facet-range
|
|
41
|
+
min={min}
|
|
42
|
+
max={max}
|
|
43
|
+
formatter={formatter}
|
|
44
|
+
step={1}
|
|
45
|
+
onEnd={(v) =>
|
|
46
|
+
onFacetChange(
|
|
47
|
+
{
|
|
48
|
+
key: facetKey,
|
|
49
|
+
value: formatRange(v.min, v.max),
|
|
50
|
+
},
|
|
51
|
+
'RANGE'
|
|
52
|
+
)
|
|
53
|
+
}
|
|
54
|
+
/>
|
|
55
|
+
)
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
export default FilterFacetRange
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import React, { PropsWithChildren } from 'react'
|
|
2
|
+
import { AccordionButton, AccordionItem, AccordionPanel } from '../..'
|
|
3
|
+
|
|
4
|
+
export interface FilterFacetsProps {
|
|
5
|
+
/**
|
|
6
|
+
* ID to find this component in testing tools (e.g.: cypress, testing library, and jest).
|
|
7
|
+
*/
|
|
8
|
+
testId: string
|
|
9
|
+
/**
|
|
10
|
+
* Current Facet's position in a list of facets.
|
|
11
|
+
*/
|
|
12
|
+
index: number
|
|
13
|
+
/**
|
|
14
|
+
* Current Facet's type, usually `StoreFacetBoolean` or `StoreFacetRange`.
|
|
15
|
+
*/
|
|
16
|
+
type: string
|
|
17
|
+
/**
|
|
18
|
+
* The text displayed to identify the Facet.
|
|
19
|
+
*/
|
|
20
|
+
label: string
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
function FilterFacets({
|
|
24
|
+
testId,
|
|
25
|
+
label,
|
|
26
|
+
index,
|
|
27
|
+
children,
|
|
28
|
+
type,
|
|
29
|
+
}: PropsWithChildren<FilterFacetsProps>) {
|
|
30
|
+
return (
|
|
31
|
+
<AccordionItem
|
|
32
|
+
key={`${label}-${index}`}
|
|
33
|
+
prefixId={testId}
|
|
34
|
+
testId={`${testId}-accordion`}
|
|
35
|
+
index={index}
|
|
36
|
+
data-type={type}
|
|
37
|
+
data-fs-filter-accordion-item
|
|
38
|
+
>
|
|
39
|
+
<AccordionButton testId={`${testId}-accordion-button`}>
|
|
40
|
+
{label}
|
|
41
|
+
</AccordionButton>
|
|
42
|
+
<AccordionPanel>{children}</AccordionPanel>
|
|
43
|
+
</AccordionItem>
|
|
44
|
+
)
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
export default FilterFacets
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import React, { PropsWithChildren } from 'react'
|
|
2
|
+
|
|
3
|
+
import {
|
|
4
|
+
Button,
|
|
5
|
+
ButtonProps,
|
|
6
|
+
SlideOver,
|
|
7
|
+
SlideOverHeader,
|
|
8
|
+
useFadeEffect,
|
|
9
|
+
useUI,
|
|
10
|
+
} from '../../'
|
|
11
|
+
|
|
12
|
+
import { SlideOverDirection, SlideOverWidthSize } from '../SlideOver'
|
|
13
|
+
|
|
14
|
+
export interface FilterSliderProps {
|
|
15
|
+
/**
|
|
16
|
+
* Title for the FilterSlider component.
|
|
17
|
+
*/
|
|
18
|
+
title?: string
|
|
19
|
+
/**
|
|
20
|
+
* Props for the Clear Button from FilterSlider component.
|
|
21
|
+
*/
|
|
22
|
+
clearBtnProps?: Partial<ButtonProps>
|
|
23
|
+
/**
|
|
24
|
+
* Props for the Apply Button from FilterSlider component.
|
|
25
|
+
*/
|
|
26
|
+
applyBtnProps?: Partial<ButtonProps>
|
|
27
|
+
/**
|
|
28
|
+
* Function called when close button is clicked.
|
|
29
|
+
*/
|
|
30
|
+
onClose: () => void
|
|
31
|
+
/**
|
|
32
|
+
* Represents the side that the FilterSlider comes from.
|
|
33
|
+
*/
|
|
34
|
+
direction: SlideOverDirection
|
|
35
|
+
/**
|
|
36
|
+
* Represents the size of the FilterSlider.
|
|
37
|
+
*/
|
|
38
|
+
size: SlideOverWidthSize
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
function FilterSlider({
|
|
42
|
+
title,
|
|
43
|
+
clearBtnProps,
|
|
44
|
+
applyBtnProps,
|
|
45
|
+
onClose,
|
|
46
|
+
size,
|
|
47
|
+
direction,
|
|
48
|
+
children,
|
|
49
|
+
}: PropsWithChildren<FilterSliderProps>) {
|
|
50
|
+
const { closeFilter } = useUI()
|
|
51
|
+
const { fade, fadeOut } = useFadeEffect()
|
|
52
|
+
|
|
53
|
+
return (
|
|
54
|
+
<SlideOver
|
|
55
|
+
data-fs-filter-slider
|
|
56
|
+
isOpen
|
|
57
|
+
fade={fade}
|
|
58
|
+
onDismiss={fadeOut}
|
|
59
|
+
size={size}
|
|
60
|
+
direction={direction}
|
|
61
|
+
onTransitionEnd={() => fade === 'out' && closeFilter()}
|
|
62
|
+
>
|
|
63
|
+
<div data-fs-filter-slider-content>
|
|
64
|
+
<SlideOverHeader
|
|
65
|
+
onClose={() => {
|
|
66
|
+
onClose()
|
|
67
|
+
fadeOut()
|
|
68
|
+
}}
|
|
69
|
+
>
|
|
70
|
+
<h2 data-fs-filter-slider-title>{title}</h2>
|
|
71
|
+
</SlideOverHeader>
|
|
72
|
+
{children}
|
|
73
|
+
</div>
|
|
74
|
+
<footer data-fs-filter-slider-footer>
|
|
75
|
+
<Button data-fs-filter-slider-footer-button-clear {...clearBtnProps} />
|
|
76
|
+
<Button
|
|
77
|
+
data-fs-filter-slider-footer-button-apply
|
|
78
|
+
data-testid="filter-slider-button-apply"
|
|
79
|
+
{...applyBtnProps}
|
|
80
|
+
onClick={(e) => {
|
|
81
|
+
applyBtnProps?.onClick?.(e)
|
|
82
|
+
fadeOut()
|
|
83
|
+
}}
|
|
84
|
+
/>
|
|
85
|
+
</footer>
|
|
86
|
+
</SlideOver>
|
|
87
|
+
)
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
export default FilterSlider
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export { default } from './Filter'
|
|
2
|
+
export type { FilterProps } from './Filter'
|
|
3
|
+
export { default as FilterFacetBoolean } from './FilterFacetBoolean'
|
|
4
|
+
export { default as FilterFacetBooleanItem } from './FilterFacetBooleanItem'
|
|
5
|
+
export type { FilterFacetBooleanItemProps } from './FilterFacetBooleanItem'
|
|
6
|
+
export { default as FilterFacetRange } from './FilterFacetRange'
|
|
7
|
+
export type { FilterFacetRangeProps } from './FilterFacetRange'
|
|
8
|
+
export { default as FilterFacets } from './FilterFacets'
|
|
9
|
+
export type { FilterFacetsProps } from './FilterFacets'
|
|
10
|
+
export { default as FilterSlider } from './FilterSlider'
|
|
11
|
+
export type { FilterSliderProps } from './FilterSlider'
|
|
12
|
+
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import React from 'react'
|
|
2
1
|
import type { ReactNode } from 'react'
|
|
2
|
+
import React from 'react'
|
|
3
3
|
|
|
4
|
-
import { Modal } from '../../'
|
|
5
4
|
import type { ModalProps } from '../../'
|
|
5
|
+
import { Modal } from '../../'
|
|
6
6
|
|
|
7
|
-
type Direction = 'leftSide' | 'rightSide'
|
|
8
|
-
type WidthSize = 'full' | 'partial'
|
|
7
|
+
export type Direction = 'leftSide' | 'rightSide'
|
|
8
|
+
export type WidthSize = 'full' | 'partial'
|
|
9
9
|
|
|
10
10
|
export type SlideOverProps = Omit<ModalProps, 'title'> & {
|
|
11
11
|
/**
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
export { default } from './SlideOver'
|
|
1
|
+
export { default, Direction as SlideOverDirection, WidthSize as SlideOverWidthSize } from './SlideOver'
|
|
2
2
|
export type { SlideOverProps } from './SlideOver'
|
|
3
|
-
|
|
4
3
|
export { default as SlideOverHeader } from './SlideOverHeader'
|
|
5
4
|
export type { SlideOverHeaderProps } from './SlideOverHeader'
|
|
5
|
+
|
|
6
|
+
|